diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..c1464a2 --- /dev/null +++ b/.env.example @@ -0,0 +1,25 @@ +# Since the ".env" file is gitignored, you can use the ".env.example" file to +# build a new ".env" file when you clone the repo. Keep this file up-to-date +# when you add new variables to `.env`. + +# This file will be committed to version control, so make sure not to have any +# secrets in it. If you are cloning this repo, create a copy of this file named +# ".env" and populate it with your secrets. + +# When adding additional environment variables, the schema in "/src/env.mjs" +# should be updated accordingly. + +# Prisma +# https://www.prisma.io/docs/reference/database-reference/connection-urls#env +DATABASE_URL="file:./db.sqlite" + +# Next Auth +# You can generate a new secret on the command line with: +# openssl rand -base64 32 +# https://next-auth.js.org/configuration/options#secret +# NEXTAUTH_SECRET="" +NEXTAUTH_URL="http://localhost:3000" + +# Next Auth Discord Provider +DISCORD_CLIENT_ID="" +DISCORD_CLIENT_SECRET="" diff --git a/.eslintrc.cjs b/.eslintrc.cjs new file mode 100644 index 0000000..e6f154c --- /dev/null +++ b/.eslintrc.cjs @@ -0,0 +1,45 @@ +// eslint-disable-next-line @typescript-eslint/no-var-requires +const path = require("path"); + +/** @type {import("eslint").Linter.Config} */ +const config = { + overrides: [ + { + extends: [ + "plugin:@typescript-eslint/recommended-requiring-type-checking", + ], + files: ["*.ts", "*.tsx"], + parserOptions: { + project: path.join(__dirname, "tsconfig.json"), + }, + }, + ], + parser: "@typescript-eslint/parser", + parserOptions: { + project: path.join(__dirname, "tsconfig.json"), + }, + plugins: ["@typescript-eslint"], + extends: ["next/core-web-vitals", "plugin:@typescript-eslint/recommended"], + rules: { + "@typescript-eslint/consistent-type-imports": [ + "warn", + { + prefer: "type-imports", + fixStyle: "inline-type-imports", + }, + ], + "@typescript-eslint/no-unused-vars": ["warn", { argsIgnorePattern: "^_" }], + // "@typescript-eslint/no-unsafe-return": "off", + "@typescript-eslint/no-empty-function": "off", + "@typescript-eslint/no-empty-interface": "off", + + "@typescript-eslint/no-misused-promises": [ + "error", + { + checksVoidReturn: false, + }, + ], + }, +}; + +module.exports = config; diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..cdf0c3c --- /dev/null +++ b/.gitignore @@ -0,0 +1,44 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# database +/prisma/db.sqlite +/prisma/db.sqlite-journal + +# next.js +/.next/ +/out/ +next-env.d.ts + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.pnpm-debug.log* + +# local env files +# do not commit any .env files to git, except for the .env.example file. https://create.t3.gg/en/usage/env-variables#using-environment-variables +.env +.env*.local + +# vercel +.vercel + +# typescript +*.tsbuildinfo + +test_insert_db.md \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..fba19ed --- /dev/null +++ b/README.md @@ -0,0 +1,28 @@ +# Create T3 App + +This is a [T3 Stack](https://create.t3.gg/) project bootstrapped with `create-t3-app`. + +## What's next? How do I make an app with this? + +We try to keep this project as simple as possible, so you can start with just the scaffolding we set up for you, and add additional things later when they become necessary. + +If you are not familiar with the different technologies used in this project, please refer to the respective docs. If you still are in the wind, please join our [Discord](https://t3.gg/discord) and ask for help. + +- [Next.js](https://nextjs.org) +- [NextAuth.js](https://next-auth.js.org) +- [Prisma](https://prisma.io) +- [Tailwind CSS](https://tailwindcss.com) +- [tRPC](https://trpc.io) + +## Learn More + +To learn more about the [T3 Stack](https://create.t3.gg/), take a look at the following resources: + +- [Documentation](https://create.t3.gg/) +- [Learn the T3 Stack](https://create.t3.gg/en/faq#what-learning-resources-are-currently-available) — Check out these awesome tutorials + +You can check out the [create-t3-app GitHub repository](https://github.com/t3-oss/create-t3-app) — your feedback and contributions are welcome! + +## How do I deploy this? + +Follow our deployment guides for [Vercel](https://create.t3.gg/en/deployment/vercel), [Netlify](https://create.t3.gg/en/deployment/netlify) and [Docker](https://create.t3.gg/en/deployment/docker) for more information. diff --git a/contracts/README.md b/contracts/README.md new file mode 100644 index 0000000..5d8fca8 --- /dev/null +++ b/contracts/README.md @@ -0,0 +1,45 @@ +# setup + +yarn add --dev hardhat +npx hardhat +---copy this to new repo's README.md +---copy contents of `hardhat.config.ts` if needed +touch .env +---copy contents of .env +---copy over utils folder (especially common.ts & diamond.js - if required) +add `"resolveJsonModule": true` in tsconfig.json +yarn add --dev dotenv @openzeppelin/contracts @superfluid-finance/ethereum-contracts + +[deprecated?] yarn add --dev hardhat-deploy +[deprecated?] yarn add --dev @nomiclabs/hardhat-ethers@npm:hardhat-deploy-ethers ethers [this command is to override hardhat-ethers to use hardhat-deploy-ethers - check package.json] + +### Diamond Contract Pattern + +1. Diamond-3: https://github.com/mudgen/diamond-3-hardhat +2. Diamond Storage (data storage ONLY lives in Diamond Proxy Contract): + ref | https://eip2535diamonds.substack.com/p/how-storage-works-in-eip2535-diamonds + ref | https://eip2535diamonds.substack.com/p/keep-your-data-right-in-eip2535-diamonds?utm_source=substack&utm_campaign=post_embed&utm_medium=web + ref | https://dev.to/mudgen/how-diamond-storage-works-90e + +3. best practice: DON'T store any user data in Diamond !!!! eg data that cannot be overriden or may require complex migrations +4. best practice: use new storage position with new struct when defining new data storage variables in Diamond !!! eg define it in new Lib + +# Workflow + +- npx hardhat test | test all with forked testnet +- npx hardhat test "./path/to/specific/test_Script" | test specific +- see scripts folder and fn/command used for deployment + +# Sample Hardhat Project + +This project demonstrates a basic Hardhat use case. It comes with a sample contract, a test for that contract, and a script that deploys that contract. + +Try running some of the following tasks: + +```shell +npx hardhat help +npx hardhat test +REPORT_GAS=true npx hardhat test +npx hardhat node +npx hardhat run scripts/deploy.ts +``` diff --git a/contracts/TODOS.md b/contracts/TODOS.md new file mode 100644 index 0000000..b875725 --- /dev/null +++ b/contracts/TODOS.md @@ -0,0 +1,7 @@ +0. clear todos in /contracts +1. TEST "// set for control record" new code +2. implement a user facing "getNewNonce" for `Flow` & `Control` (after funding) +3. implement get "unsettledNonce" state on client facing side (after funding) - add to test +4. special fee data also need a range? +5. helper contracts that have single view function for each main session/flow function that returns boolean on weather can access or not (use this to "enable" frontend wagmi call to reduce number of calls to node provider) +6. TEST if have active flow, can open session as well? (& vice versa) diff --git a/contracts/addresses/localhost_1684729340523.txt b/contracts/addresses/localhost_1684729340523.txt new file mode 100644 index 0000000..d0731c4 --- /dev/null +++ b/contracts/addresses/localhost_1684729340523.txt @@ -0,0 +1,9 @@ +0x25F13b9FC4EFdfDb4898D38A76586B4B9985E61E - Loupe +0x940690d6CB7132AaF70E9BCE4FCD3185D0f1E34B - Cut +0x337d220F68E8e0F36B99f586eD5fe41bcfE0B034 - AccessControl +0xB7CAD5c3eA806cD7E97CfF2CCe4b30300281d0BB - Utility +0xf3f6a91585E6b06ec04874f61DC0E56Aa90415c9 - Automate +0x644B112F9A60151F6f69A1c600ff1a7BCA6762b5 - Control +0x4E0900fC106b6bAc2f579670b5363071577e81d4 - Session +0xe7f356231FBc439A8ebC6c6501b4908D0B9F237E - Flow +0xb853b380fe0552568bf7771Bf596e2535b5FE69A - Diamond diff --git a/contracts/addresses/localhost_1684745751023.txt b/contracts/addresses/localhost_1684745751023.txt new file mode 100644 index 0000000..7933fa6 --- /dev/null +++ b/contracts/addresses/localhost_1684745751023.txt @@ -0,0 +1,9 @@ +0x4E0900fC106b6bAc2f579670b5363071577e81d4 - Loupe +0xe7f356231FBc439A8ebC6c6501b4908D0B9F237E - Cut +0xb853b380fe0552568bf7771Bf596e2535b5FE69A - AccessControl +0x81AA3fCFB61B42389cDDC147A4f02d3fdc400e59 - Utility +0xbdEaCD59e7d0eC9DC8f2f8af1685e6Bdf7b56CC3 - Automate +0x53Dc11d7A244902B17Cbb59D581E935a892b5D3c - Control +0x35B5d6aCCd67cab4DA0ed81B0f54e6d8da819822 - Session +0x922746Df016da220d17f0159254A343885e6dd67 - Flow +0x9DBE69414336ED1b08c5E5b932460369bD8a9b3D - Diamond diff --git a/contracts/addresses/localhost_1684747264754.txt b/contracts/addresses/localhost_1684747264754.txt new file mode 100644 index 0000000..7933fa6 --- /dev/null +++ b/contracts/addresses/localhost_1684747264754.txt @@ -0,0 +1,9 @@ +0x4E0900fC106b6bAc2f579670b5363071577e81d4 - Loupe +0xe7f356231FBc439A8ebC6c6501b4908D0B9F237E - Cut +0xb853b380fe0552568bf7771Bf596e2535b5FE69A - AccessControl +0x81AA3fCFB61B42389cDDC147A4f02d3fdc400e59 - Utility +0xbdEaCD59e7d0eC9DC8f2f8af1685e6Bdf7b56CC3 - Automate +0x53Dc11d7A244902B17Cbb59D581E935a892b5D3c - Control +0x35B5d6aCCd67cab4DA0ed81B0f54e6d8da819822 - Session +0x922746Df016da220d17f0159254A343885e6dd67 - Flow +0x9DBE69414336ED1b08c5E5b932460369bD8a9b3D - Diamond diff --git a/contracts/addresses/localhost_1684747496579.txt b/contracts/addresses/localhost_1684747496579.txt new file mode 100644 index 0000000..7933fa6 --- /dev/null +++ b/contracts/addresses/localhost_1684747496579.txt @@ -0,0 +1,9 @@ +0x4E0900fC106b6bAc2f579670b5363071577e81d4 - Loupe +0xe7f356231FBc439A8ebC6c6501b4908D0B9F237E - Cut +0xb853b380fe0552568bf7771Bf596e2535b5FE69A - AccessControl +0x81AA3fCFB61B42389cDDC147A4f02d3fdc400e59 - Utility +0xbdEaCD59e7d0eC9DC8f2f8af1685e6Bdf7b56CC3 - Automate +0x53Dc11d7A244902B17Cbb59D581E935a892b5D3c - Control +0x35B5d6aCCd67cab4DA0ed81B0f54e6d8da819822 - Session +0x922746Df016da220d17f0159254A343885e6dd67 - Flow +0x9DBE69414336ED1b08c5E5b932460369bD8a9b3D - Diamond diff --git a/contracts/addresses/mumbai_1684729360523.txt b/contracts/addresses/mumbai_1684729360523.txt new file mode 100644 index 0000000..4320d17 --- /dev/null +++ b/contracts/addresses/mumbai_1684729360523.txt @@ -0,0 +1,9 @@ +0x1c791F97eFFaF93B04f3FE458e2d56e905A39367 - Loupe +0xFDd6BEf6f35E7d7142E937D787D0a99726B37A63 - Cut +0xa7C722D75Eca0e8dDC1A39Da6667bd9699BbBD19 - AccessControl +0x28030dC5e1e23a388862ef966b3258aD73e487aC - Utility +0xeF49D3280F183fbE57390179bdaAcfea5CA60079 - Automate +0xb2871b9065826eDb54b68C43D8bBeCc46b4211eF - Control +0x69071e0A224B1D2a8f8C9366c97851eB7055fC42 - Session +0xc0695B706629E4cC077f5d68497eeeC937Bf7e26 - Flow +0xB5FBeF5f93144d1Fb8d32479dEB6018822043367 - Diamond diff --git a/contracts/artifacts/@openzeppelin/contracts/interfaces/IERC1271.sol/IERC1271.dbg.json b/contracts/artifacts/@openzeppelin/contracts/interfaces/IERC1271.sol/IERC1271.dbg.json new file mode 100644 index 0000000..34fe4dc --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/interfaces/IERC1271.sol/IERC1271.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/ba9437438ec2715393320ce18780bccb.json" +} diff --git a/contracts/artifacts/@openzeppelin/contracts/interfaces/IERC1271.sol/IERC1271.json b/contracts/artifacts/@openzeppelin/contracts/interfaces/IERC1271.sol/IERC1271.json new file mode 100644 index 0000000..e8fc09c --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/interfaces/IERC1271.sol/IERC1271.json @@ -0,0 +1,35 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IERC1271", + "sourceName": "@openzeppelin/contracts/interfaces/IERC1271.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "bytes32", + "name": "hash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "name": "isValidSignature", + "outputs": [ + { + "internalType": "bytes4", + "name": "magicValue", + "type": "bytes4" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@openzeppelin/contracts/security/ReentrancyGuard.sol/ReentrancyGuard.dbg.json b/contracts/artifacts/@openzeppelin/contracts/security/ReentrancyGuard.sol/ReentrancyGuard.dbg.json new file mode 100644 index 0000000..34fe4dc --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/security/ReentrancyGuard.sol/ReentrancyGuard.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/ba9437438ec2715393320ce18780bccb.json" +} diff --git a/contracts/artifacts/@openzeppelin/contracts/security/ReentrancyGuard.sol/ReentrancyGuard.json b/contracts/artifacts/@openzeppelin/contracts/security/ReentrancyGuard.sol/ReentrancyGuard.json new file mode 100644 index 0000000..f2c493b --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/security/ReentrancyGuard.sol/ReentrancyGuard.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ReentrancyGuard", + "sourceName": "@openzeppelin/contracts/security/ReentrancyGuard.sol", + "abi": [], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json b/contracts/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json new file mode 100644 index 0000000..b3d9782 --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/ba9437438ec2715393320ce18780bccb.json" +} diff --git a/contracts/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.json b/contracts/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.json new file mode 100644 index 0000000..76b073c --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.json @@ -0,0 +1,194 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IERC20", + "sourceName": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit.dbg.json b/contracts/artifacts/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit.dbg.json new file mode 100644 index 0000000..7acb1bc --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../../build-info/ba9437438ec2715393320ce18780bccb.json" +} diff --git a/contracts/artifacts/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit.json b/contracts/artifacts/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit.json new file mode 100644 index 0000000..483a3e1 --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit.json @@ -0,0 +1,86 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IERC20Permit", + "sourceName": "@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol", + "abi": [ + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "nonces", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "permit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol/SafeERC20.dbg.json b/contracts/artifacts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol/SafeERC20.dbg.json new file mode 100644 index 0000000..7acb1bc --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol/SafeERC20.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../../build-info/ba9437438ec2715393320ce18780bccb.json" +} diff --git a/contracts/artifacts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol/SafeERC20.json b/contracts/artifacts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol/SafeERC20.json new file mode 100644 index 0000000..369f10d --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol/SafeERC20.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "SafeERC20", + "sourceName": "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol", + "abi": [], + "bytecode": "0x60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bbcb1fd435e5744a5b541c709a8f7209eca403ec3ecfbdbe7bdc2822cdbb6f3d64736f6c63430008120033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bbcb1fd435e5744a5b541c709a8f7209eca403ec3ecfbdbe7bdc2822cdbb6f3d64736f6c63430008120033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@openzeppelin/contracts/token/ERC777/IERC777.sol/IERC777.dbg.json b/contracts/artifacts/@openzeppelin/contracts/token/ERC777/IERC777.sol/IERC777.dbg.json new file mode 100644 index 0000000..b3d9782 --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/token/ERC777/IERC777.sol/IERC777.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/ba9437438ec2715393320ce18780bccb.json" +} diff --git a/contracts/artifacts/@openzeppelin/contracts/token/ERC777/IERC777.sol/IERC777.json b/contracts/artifacts/@openzeppelin/contracts/token/ERC777/IERC777.sol/IERC777.json new file mode 100644 index 0000000..72690bc --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/token/ERC777/IERC777.sol/IERC777.json @@ -0,0 +1,402 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IERC777", + "sourceName": "@openzeppelin/contracts/token/ERC777/IERC777.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "tokenHolder", + "type": "address" + } + ], + "name": "AuthorizedOperator", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "operatorData", + "type": "bytes" + } + ], + "name": "Burned", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "operatorData", + "type": "bytes" + } + ], + "name": "Minted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "tokenHolder", + "type": "address" + } + ], + "name": "RevokedOperator", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "operatorData", + "type": "bytes" + } + ], + "name": "Sent", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "authorizeOperator", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "defaultOperators", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "granularity", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenHolder", + "type": "address" + } + ], + "name": "isOperatorFor", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "operatorData", + "type": "bytes" + } + ], + "name": "operatorBurn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "operatorData", + "type": "bytes" + } + ], + "name": "operatorSend", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "revokeOperator", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "send", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json b/contracts/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json new file mode 100644 index 0000000..34fe4dc --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/ba9437438ec2715393320ce18780bccb.json" +} diff --git a/contracts/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.json b/contracts/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.json new file mode 100644 index 0000000..6b562aa --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Address", + "sourceName": "@openzeppelin/contracts/utils/Address.sol", + "abi": [], + "bytecode": "0x60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122056388b4bd61a0a82b1b5642110ef2e3e47829ce58d55205c0109152159a2901a64736f6c63430008120033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122056388b4bd61a0a82b1b5642110ef2e3e47829ce58d55205c0109152159a2901a64736f6c63430008120033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.dbg.json b/contracts/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.dbg.json new file mode 100644 index 0000000..34fe4dc --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/ba9437438ec2715393320ce18780bccb.json" +} diff --git a/contracts/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.json b/contracts/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.json new file mode 100644 index 0000000..87d07a4 --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Strings", + "sourceName": "@openzeppelin/contracts/utils/Strings.sol", + "abi": [], + "bytecode": "0x60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202be3788305d51dccf412882e015ded65d6890e38d360ee4450d98f27031c296564736f6c63430008120033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202be3788305d51dccf412882e015ded65d6890e38d360ee4450d98f27031c296564736f6c63430008120033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.dbg.json b/contracts/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.dbg.json new file mode 100644 index 0000000..b3d9782 --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/ba9437438ec2715393320ce18780bccb.json" +} diff --git a/contracts/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.json b/contracts/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.json new file mode 100644 index 0000000..6175082 --- /dev/null +++ b/contracts/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Math", + "sourceName": "@openzeppelin/contracts/utils/math/Math.sol", + "abi": [], + "bytecode": "0x60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208f63ffdaae21fc026dee9daad1bffb318e7c5b3a3259e486c6500b228f15508f64736f6c63430008120033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208f63ffdaae21fc026dee9daad1bffb318e7c5b3a3259e486c6500b228f15508f64736f6c63430008120033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol/SuperTokenV1Library.dbg.json b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol/SuperTokenV1Library.dbg.json new file mode 100644 index 0000000..b3d9782 --- /dev/null +++ b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol/SuperTokenV1Library.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/ba9437438ec2715393320ce18780bccb.json" +} diff --git a/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol/SuperTokenV1Library.json b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol/SuperTokenV1Library.json new file mode 100644 index 0000000..dad56ae --- /dev/null +++ b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol/SuperTokenV1Library.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "SuperTokenV1Library", + "sourceName": "@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol", + "abi": [], + "bytecode": "0x60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122073d7e2aef7282b8d27140e83b7b62ce0d0675f2534eaabcab57e5e2e48e18f2364736f6c63430008120033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122073d7e2aef7282b8d27140e83b7b62ce0d0675f2534eaabcab57e5e2e48e18f2364736f6c63430008120033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol/IConstantFlowAgreementV1.dbg.json b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol/IConstantFlowAgreementV1.dbg.json new file mode 100644 index 0000000..7acb1bc --- /dev/null +++ b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol/IConstantFlowAgreementV1.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../../build-info/ba9437438ec2715393320ce18780bccb.json" +} diff --git a/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol/IConstantFlowAgreementV1.json b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol/IConstantFlowAgreementV1.json new file mode 100644 index 0000000..4e82762 --- /dev/null +++ b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol/IConstantFlowAgreementV1.json @@ -0,0 +1,967 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IConstantFlowAgreementV1", + "sourceName": "@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol", + "abi": [ + { + "inputs": [], + "name": "CFA_ACL_FLOW_RATE_ALLOWANCE_EXCEEDED", + "type": "error" + }, + { + "inputs": [], + "name": "CFA_ACL_NO_NEGATIVE_ALLOWANCE", + "type": "error" + }, + { + "inputs": [], + "name": "CFA_ACL_NO_SENDER_CREATE", + "type": "error" + }, + { + "inputs": [], + "name": "CFA_ACL_NO_SENDER_FLOW_OPERATOR", + "type": "error" + }, + { + "inputs": [], + "name": "CFA_ACL_NO_SENDER_UPDATE", + "type": "error" + }, + { + "inputs": [], + "name": "CFA_ACL_OPERATOR_NO_CREATE_PERMISSIONS", + "type": "error" + }, + { + "inputs": [], + "name": "CFA_ACL_OPERATOR_NO_DELETE_PERMISSIONS", + "type": "error" + }, + { + "inputs": [], + "name": "CFA_ACL_OPERATOR_NO_UPDATE_PERMISSIONS", + "type": "error" + }, + { + "inputs": [], + "name": "CFA_ACL_UNCLEAN_PERMISSIONS", + "type": "error" + }, + { + "inputs": [], + "name": "CFA_DEPOSIT_TOO_BIG", + "type": "error" + }, + { + "inputs": [], + "name": "CFA_FLOW_ALREADY_EXISTS", + "type": "error" + }, + { + "inputs": [], + "name": "CFA_FLOW_DOES_NOT_EXIST", + "type": "error" + }, + { + "inputs": [], + "name": "CFA_FLOW_RATE_TOO_BIG", + "type": "error" + }, + { + "inputs": [], + "name": "CFA_HOOK_OUT_OF_GAS", + "type": "error" + }, + { + "inputs": [], + "name": "CFA_INSUFFICIENT_BALANCE", + "type": "error" + }, + { + "inputs": [], + "name": "CFA_INVALID_FLOW_RATE", + "type": "error" + }, + { + "inputs": [], + "name": "CFA_NON_CRITICAL_SENDER", + "type": "error" + }, + { + "inputs": [], + "name": "CFA_NO_SELF_FLOW", + "type": "error" + }, + { + "inputs": [], + "name": "CFA_ZERO_ADDRESS_RECEIVER", + "type": "error" + }, + { + "inputs": [], + "name": "CFA_ZERO_ADDRESS_SENDER", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "contract ISuperfluidToken", + "name": "token", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "flowOperator", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint8", + "name": "permissions", + "type": "uint8" + }, + { + "indexed": false, + "internalType": "int96", + "name": "flowRateAllowance", + "type": "int96" + } + ], + "name": "FlowOperatorUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "contract ISuperfluidToken", + "name": "token", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "indexed": false, + "internalType": "int96", + "name": "flowRate", + "type": "int96" + }, + { + "indexed": false, + "internalType": "int256", + "name": "totalSenderFlowRate", + "type": "int256" + }, + { + "indexed": false, + "internalType": "int256", + "name": "totalReceiverFlowRate", + "type": "int256" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "userData", + "type": "bytes" + } + ], + "name": "FlowUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "flowOperator", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "deposit", + "type": "uint256" + } + ], + "name": "FlowUpdatedExtension", + "type": "event" + }, + { + "inputs": [], + "name": "agreementType", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperfluidToken", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "flowOperator", + "type": "address" + }, + { + "internalType": "bytes", + "name": "ctx", + "type": "bytes" + } + ], + "name": "authorizeFlowOperatorWithFullControl", + "outputs": [ + { + "internalType": "bytes", + "name": "newCtx", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperfluidToken", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "internalType": "int96", + "name": "flowRate", + "type": "int96" + }, + { + "internalType": "bytes", + "name": "ctx", + "type": "bytes" + } + ], + "name": "createFlow", + "outputs": [ + { + "internalType": "bytes", + "name": "newCtx", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperfluidToken", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "internalType": "int96", + "name": "flowRate", + "type": "int96" + }, + { + "internalType": "bytes", + "name": "ctx", + "type": "bytes" + } + ], + "name": "createFlowByOperator", + "outputs": [ + { + "internalType": "bytes", + "name": "newCtx", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperfluidToken", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "flowOperator", + "type": "address" + }, + { + "internalType": "int96", + "name": "subtractedFlowRateAllowance", + "type": "int96" + }, + { + "internalType": "bytes", + "name": "ctx", + "type": "bytes" + } + ], + "name": "decreaseFlowRateAllowance", + "outputs": [ + { + "internalType": "bytes", + "name": "newCtx", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperfluidToken", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "internalType": "bytes", + "name": "ctx", + "type": "bytes" + } + ], + "name": "deleteFlow", + "outputs": [ + { + "internalType": "bytes", + "name": "newCtx", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperfluidToken", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "internalType": "bytes", + "name": "ctx", + "type": "bytes" + } + ], + "name": "deleteFlowByOperator", + "outputs": [ + { + "internalType": "bytes", + "name": "newCtx", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperfluidToken", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "getAccountFlowInfo", + "outputs": [ + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "internalType": "int96", + "name": "flowRate", + "type": "int96" + }, + { + "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": "int96", + "name": "flowRate", + "type": "int96" + } + ], + "name": "getDepositRequiredForFlowRate", + "outputs": [ + { + "internalType": "uint256", + "name": "deposit", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperfluidToken", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "getFlow", + "outputs": [ + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "internalType": "int96", + "name": "flowRate", + "type": "int96" + }, + { + "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": "bytes32", + "name": "agreementId", + "type": "bytes32" + } + ], + "name": "getFlowByID", + "outputs": [ + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "internalType": "int96", + "name": "flowRate", + "type": "int96" + }, + { + "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": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "flowOperator", + "type": "address" + } + ], + "name": "getFlowOperatorData", + "outputs": [ + { + "internalType": "bytes32", + "name": "flowOperatorId", + "type": "bytes32" + }, + { + "internalType": "uint8", + "name": "permissions", + "type": "uint8" + }, + { + "internalType": "int96", + "name": "flowRateAllowance", + "type": "int96" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperfluidToken", + "name": "token", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "flowOperatorId", + "type": "bytes32" + } + ], + "name": "getFlowOperatorDataByID", + "outputs": [ + { + "internalType": "uint8", + "name": "permissions", + "type": "uint8" + }, + { + "internalType": "int96", + "name": "flowRateAllowance", + "type": "int96" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperfluidToken", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deposit", + "type": "uint256" + } + ], + "name": "getMaximumFlowRateFromDeposit", + "outputs": [ + { + "internalType": "int96", + "name": "flowRate", + "type": "int96" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperfluidToken", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "getNetFlow", + "outputs": [ + { + "internalType": "int96", + "name": "flowRate", + "type": "int96" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperfluidToken", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "flowOperator", + "type": "address" + }, + { + "internalType": "int96", + "name": "addedFlowRateAllowance", + "type": "int96" + }, + { + "internalType": "bytes", + "name": "ctx", + "type": "bytes" + } + ], + "name": "increaseFlowRateAllowance", + "outputs": [ + { + "internalType": "bytes", + "name": "newCtx", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperfluidToken", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "name": "isPatricianPeriod", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperfluidToken", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "isPatricianPeriodNow", + "outputs": [ + { + "internalType": "bool", + "name": "isCurrentlyPatricianPeriod", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperfluidToken", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "time", + "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": "flowOperator", + "type": "address" + }, + { + "internalType": "bytes", + "name": "ctx", + "type": "bytes" + } + ], + "name": "revokeFlowOperatorWithFullControl", + "outputs": [ + { + "internalType": "bytes", + "name": "newCtx", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperfluidToken", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "internalType": "int96", + "name": "flowRate", + "type": "int96" + }, + { + "internalType": "bytes", + "name": "ctx", + "type": "bytes" + } + ], + "name": "updateFlow", + "outputs": [ + { + "internalType": "bytes", + "name": "newCtx", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperfluidToken", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "internalType": "int96", + "name": "flowRate", + "type": "int96" + }, + { + "internalType": "bytes", + "name": "ctx", + "type": "bytes" + } + ], + "name": "updateFlowByOperator", + "outputs": [ + { + "internalType": "bytes", + "name": "newCtx", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperfluidToken", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "flowOperator", + "type": "address" + }, + { + "internalType": "uint8", + "name": "permissions", + "type": "uint8" + }, + { + "internalType": "int96", + "name": "flowRateAllowance", + "type": "int96" + }, + { + "internalType": "bytes", + "name": "ctx", + "type": "bytes" + } + ], + "name": "updateFlowOperatorPermissions", + "outputs": [ + { + "internalType": "bytes", + "name": "newCtx", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IInstantDistributionAgreementV1.sol/IInstantDistributionAgreementV1.dbg.json b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IInstantDistributionAgreementV1.sol/IInstantDistributionAgreementV1.dbg.json new file mode 100644 index 0000000..7acb1bc --- /dev/null +++ b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IInstantDistributionAgreementV1.sol/IInstantDistributionAgreementV1.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../../build-info/ba9437438ec2715393320ce18780bccb.json" +} diff --git a/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IInstantDistributionAgreementV1.sol/IInstantDistributionAgreementV1.json b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IInstantDistributionAgreementV1.sol/IInstantDistributionAgreementV1.json new file mode 100644 index 0000000..9e6c369 --- /dev/null +++ b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IInstantDistributionAgreementV1.sol/IInstantDistributionAgreementV1.json @@ -0,0 +1,994 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IInstantDistributionAgreementV1", + "sourceName": "@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IInstantDistributionAgreementV1.sol", + "abi": [ + { + "inputs": [], + "name": "IDA_INDEX_ALREADY_EXISTS", + "type": "error" + }, + { + "inputs": [], + "name": "IDA_INDEX_DOES_NOT_EXIST", + "type": "error" + }, + { + "inputs": [], + "name": "IDA_INDEX_SHOULD_GROW", + "type": "error" + }, + { + "inputs": [], + "name": "IDA_INSUFFICIENT_BALANCE", + "type": "error" + }, + { + "inputs": [], + "name": "IDA_OPERATION_NOT_ALLOWED", + "type": "error" + }, + { + "inputs": [], + "name": "IDA_SUBSCRIPTION_ALREADY_APPROVED", + "type": "error" + }, + { + "inputs": [], + "name": "IDA_SUBSCRIPTION_DOES_NOT_EXIST", + "type": "error" + }, + { + "inputs": [], + "name": "IDA_SUBSCRIPTION_IS_NOT_APPROVED", + "type": "error" + }, + { + "inputs": [], + "name": "IDA_ZERO_ADDRESS_SUBSCRIBER", + "type": "error" + }, + { + "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": "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": [ + { + "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": [ + { + "internalType": "contract ISuperfluidToken", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "time", + "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": "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" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol/BatchOperation.dbg.json b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol/BatchOperation.dbg.json new file mode 100644 index 0000000..7acb1bc --- /dev/null +++ b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol/BatchOperation.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../../build-info/ba9437438ec2715393320ce18780bccb.json" +} diff --git a/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol/BatchOperation.json b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol/BatchOperation.json new file mode 100644 index 0000000..2bdd40c --- /dev/null +++ b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol/BatchOperation.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "BatchOperation", + "sourceName": "@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol", + "abi": [], + "bytecode": "0x60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220da5dd631c35b8847b86cab213313b194f2dd118eb04af90b21bb711f915f469664736f6c63430008120033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220da5dd631c35b8847b86cab213313b194f2dd118eb04af90b21bb711f915f469664736f6c63430008120033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol/ContextDefinitions.dbg.json b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol/ContextDefinitions.dbg.json new file mode 100644 index 0000000..7acb1bc --- /dev/null +++ b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol/ContextDefinitions.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../../build-info/ba9437438ec2715393320ce18780bccb.json" +} diff --git a/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol/ContextDefinitions.json b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol/ContextDefinitions.json new file mode 100644 index 0000000..6705578 --- /dev/null +++ b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol/ContextDefinitions.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ContextDefinitions", + "sourceName": "@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol", + "abi": [], + "bytecode": "0x60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f6ee11acd8841f1e4cf8ab047c4dd32929a35fd9506eae81223b6bf42284265464736f6c63430008120033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f6ee11acd8841f1e4cf8ab047c4dd32929a35fd9506eae81223b6bf42284265464736f6c63430008120033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol/FlowOperatorDefinitions.dbg.json b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol/FlowOperatorDefinitions.dbg.json new file mode 100644 index 0000000..7acb1bc --- /dev/null +++ b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol/FlowOperatorDefinitions.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../../build-info/ba9437438ec2715393320ce18780bccb.json" +} diff --git a/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol/FlowOperatorDefinitions.json b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol/FlowOperatorDefinitions.json new file mode 100644 index 0000000..5f807cb --- /dev/null +++ b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol/FlowOperatorDefinitions.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "FlowOperatorDefinitions", + "sourceName": "@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol", + "abi": [], + "bytecode": "0x60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f4996d1d63aa3ee379ec5128889b3674ee0678764a9bda09f457d432155d961164736f6c63430008120033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f4996d1d63aa3ee379ec5128889b3674ee0678764a9bda09f457d432155d961164736f6c63430008120033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol/SuperAppDefinitions.dbg.json b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol/SuperAppDefinitions.dbg.json new file mode 100644 index 0000000..7acb1bc --- /dev/null +++ b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol/SuperAppDefinitions.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../../build-info/ba9437438ec2715393320ce18780bccb.json" +} diff --git a/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol/SuperAppDefinitions.json b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol/SuperAppDefinitions.json new file mode 100644 index 0000000..f4f8926 --- /dev/null +++ b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol/SuperAppDefinitions.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "SuperAppDefinitions", + "sourceName": "@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol", + "abi": [], + "bytecode": "0x60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207d609f4baa33a55d18a8788405fffaeb6b88aaccb0749e127c74ff80c2f3948164736f6c63430008120033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207d609f4baa33a55d18a8788405fffaeb6b88aaccb0749e127c74ff80c2f3948164736f6c63430008120033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol/SuperfluidGovernanceConfigs.dbg.json b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol/SuperfluidGovernanceConfigs.dbg.json new file mode 100644 index 0000000..7acb1bc --- /dev/null +++ b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol/SuperfluidGovernanceConfigs.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../../build-info/ba9437438ec2715393320ce18780bccb.json" +} diff --git a/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol/SuperfluidGovernanceConfigs.json b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol/SuperfluidGovernanceConfigs.json new file mode 100644 index 0000000..0324a9c --- /dev/null +++ b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol/SuperfluidGovernanceConfigs.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "SuperfluidGovernanceConfigs", + "sourceName": "@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol", + "abi": [], + "bytecode": "0x60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ca46d43e9b19dd1e2c46d531f4015b90dd1db589ba0f2db0dd1e89a9d497470064736f6c63430008120033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ca46d43e9b19dd1e2c46d531f4015b90dd1db589ba0f2db0dd1e89a9d497470064736f6c63430008120033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol/ISuperAgreement.dbg.json b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol/ISuperAgreement.dbg.json new file mode 100644 index 0000000..7acb1bc --- /dev/null +++ b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol/ISuperAgreement.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../../build-info/ba9437438ec2715393320ce18780bccb.json" +} diff --git a/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol/ISuperAgreement.json b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol/ISuperAgreement.json new file mode 100644 index 0000000..dc44cef --- /dev/null +++ b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol/ISuperAgreement.json @@ -0,0 +1,63 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ISuperAgreement", + "sourceName": "@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol", + "abi": [ + { + "inputs": [], + "name": "agreementType", + "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": "time", + "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" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperApp.sol/ISuperApp.dbg.json b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperApp.sol/ISuperApp.dbg.json new file mode 100644 index 0000000..7acb1bc --- /dev/null +++ b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperApp.sol/ISuperApp.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../../build-info/ba9437438ec2715393320ce18780bccb.json" +} diff --git a/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperApp.sol/ISuperApp.json b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperApp.sol/ISuperApp.json new file mode 100644 index 0000000..e5db5a9 --- /dev/null +++ b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperApp.sol/ISuperApp.json @@ -0,0 +1,260 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ISuperApp", + "sourceName": "@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperApp.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "contract ISuperToken", + "name": "superToken", + "type": "address" + }, + { + "internalType": "address", + "name": "agreementClass", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "agreementId", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "agreementData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "cbdata", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "ctx", + "type": "bytes" + } + ], + "name": "afterAgreementCreated", + "outputs": [ + { + "internalType": "bytes", + "name": "newCtx", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperToken", + "name": "superToken", + "type": "address" + }, + { + "internalType": "address", + "name": "agreementClass", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "agreementId", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "agreementData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "cbdata", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "ctx", + "type": "bytes" + } + ], + "name": "afterAgreementTerminated", + "outputs": [ + { + "internalType": "bytes", + "name": "newCtx", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperToken", + "name": "superToken", + "type": "address" + }, + { + "internalType": "address", + "name": "agreementClass", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "agreementId", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "agreementData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "cbdata", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "ctx", + "type": "bytes" + } + ], + "name": "afterAgreementUpdated", + "outputs": [ + { + "internalType": "bytes", + "name": "newCtx", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperToken", + "name": "superToken", + "type": "address" + }, + { + "internalType": "address", + "name": "agreementClass", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "agreementId", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "agreementData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "ctx", + "type": "bytes" + } + ], + "name": "beforeAgreementCreated", + "outputs": [ + { + "internalType": "bytes", + "name": "cbdata", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperToken", + "name": "superToken", + "type": "address" + }, + { + "internalType": "address", + "name": "agreementClass", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "agreementId", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "agreementData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "ctx", + "type": "bytes" + } + ], + "name": "beforeAgreementTerminated", + "outputs": [ + { + "internalType": "bytes", + "name": "cbdata", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperToken", + "name": "superToken", + "type": "address" + }, + { + "internalType": "address", + "name": "agreementClass", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "agreementId", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "agreementData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "ctx", + "type": "bytes" + } + ], + "name": "beforeAgreementUpdated", + "outputs": [ + { + "internalType": "bytes", + "name": "cbdata", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.sol/ISuperToken.dbg.json b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.sol/ISuperToken.dbg.json new file mode 100644 index 0000000..7acb1bc --- /dev/null +++ b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.sol/ISuperToken.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../../build-info/ba9437438ec2715393320ce18780bccb.json" +} diff --git a/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.sol/ISuperToken.json b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.sol/ISuperToken.json new file mode 100644 index 0000000..6bd47b6 --- /dev/null +++ b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.sol/ISuperToken.json @@ -0,0 +1,1762 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ISuperToken", + "sourceName": "@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.sol", + "abi": [ + { + "inputs": [], + "name": "SF_TOKEN_AGREEMENT_ALREADY_EXISTS", + "type": "error" + }, + { + "inputs": [], + "name": "SF_TOKEN_AGREEMENT_DOES_NOT_EXIST", + "type": "error" + }, + { + "inputs": [], + "name": "SF_TOKEN_BURN_INSUFFICIENT_BALANCE", + "type": "error" + }, + { + "inputs": [], + "name": "SF_TOKEN_MOVE_INSUFFICIENT_BALANCE", + "type": "error" + }, + { + "inputs": [], + "name": "SF_TOKEN_ONLY_HOST", + "type": "error" + }, + { + "inputs": [], + "name": "SF_TOKEN_ONLY_LISTED_AGREEMENT", + "type": "error" + }, + { + "inputs": [], + "name": "SUPER_TOKEN_APPROVE_FROM_ZERO_ADDRESS", + "type": "error" + }, + { + "inputs": [], + "name": "SUPER_TOKEN_APPROVE_TO_ZERO_ADDRESS", + "type": "error" + }, + { + "inputs": [], + "name": "SUPER_TOKEN_BURN_FROM_ZERO_ADDRESS", + "type": "error" + }, + { + "inputs": [], + "name": "SUPER_TOKEN_CALLER_IS_NOT_OPERATOR_FOR_HOLDER", + "type": "error" + }, + { + "inputs": [], + "name": "SUPER_TOKEN_INFLATIONARY_DEFLATIONARY_NOT_SUPPORTED", + "type": "error" + }, + { + "inputs": [], + "name": "SUPER_TOKEN_MINT_TO_ZERO_ADDRESS", + "type": "error" + }, + { + "inputs": [], + "name": "SUPER_TOKEN_NOT_ERC777_TOKENS_RECIPIENT", + "type": "error" + }, + { + "inputs": [], + "name": "SUPER_TOKEN_NO_UNDERLYING_TOKEN", + "type": "error" + }, + { + "inputs": [], + "name": "SUPER_TOKEN_ONLY_HOST", + "type": "error" + }, + { + "inputs": [], + "name": "SUPER_TOKEN_ONLY_SELF", + "type": "error" + }, + { + "inputs": [], + "name": "SUPER_TOKEN_TRANSFER_FROM_ZERO_ADDRESS", + "type": "error" + }, + { + "inputs": [], + "name": "SUPER_TOKEN_TRANSFER_TO_ZERO_ADDRESS", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "agreementClass", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32[]", + "name": "data", + "type": "bytes32[]" + } + ], + "name": "AgreementCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "agreementClass", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "penaltyAccount", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "rewardAccount", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "rewardAmount", + "type": "uint256" + } + ], + "name": "AgreementLiquidated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "liquidatorAccount", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "agreementClass", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "penaltyAccount", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "bondAccount", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "rewardAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "bailoutAmount", + "type": "uint256" + } + ], + "name": "AgreementLiquidatedBy", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "agreementClass", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "liquidatorAccount", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "targetAccount", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "rewardAmountReceiver", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "rewardAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "int256", + "name": "targetAccountBalanceDelta", + "type": "int256" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "liquidationTypeData", + "type": "bytes" + } + ], + "name": "AgreementLiquidatedV2", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "agreementClass", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "slotId", + "type": "uint256" + } + ], + "name": "AgreementStateUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "agreementClass", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + } + ], + "name": "AgreementTerminated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "agreementClass", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32[]", + "name": "data", + "type": "bytes32[]" + } + ], + "name": "AgreementUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "tokenHolder", + "type": "address" + } + ], + "name": "AuthorizedOperator", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "bailoutAccount", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "bailoutAmount", + "type": "uint256" + } + ], + "name": "Bailout", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "operatorData", + "type": "bytes" + } + ], + "name": "Burned", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "operatorData", + "type": "bytes" + } + ], + "name": "Minted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "tokenHolder", + "type": "address" + } + ], + "name": "RevokedOperator", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "operatorData", + "type": "bytes" + } + ], + "name": "Sent", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokenDowngraded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "TokenUpgraded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "authorizeOperator", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + }, + { + "internalType": "bytes32[]", + "name": "data", + "type": "bytes32[]" + } + ], + "name": "createAgreement", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "defaultOperators", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "downgrade", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "downgradeTo", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "getAccountActiveAgreements", + "outputs": [ + { + "internalType": "contract ISuperAgreement[]", + "name": "activeAgreements", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "agreementClass", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "dataLength", + "type": "uint256" + } + ], + "name": "getAgreementData", + "outputs": [ + { + "internalType": "bytes32[]", + "name": "data", + "type": "bytes32[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "agreementClass", + "type": "address" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "slotId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "dataLength", + "type": "uint256" + } + ], + "name": "getAgreementStateSlot", + "outputs": [ + { + "internalType": "bytes32[]", + "name": "slotData", + "type": "bytes32[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getHost", + "outputs": [ + { + "internalType": "address", + "name": "host", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getUnderlyingToken", + "outputs": [ + { + "internalType": "address", + "name": "tokenAddr", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "granularity", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "underlyingToken", + "type": "address" + }, + { + "internalType": "uint8", + "name": "underlyingDecimals", + "type": "uint8" + }, + { + "internalType": "string", + "name": "n", + "type": "string" + }, + { + "internalType": "string", + "name": "s", + "type": "string" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "name": "isAccountCritical", + "outputs": [ + { + "internalType": "bool", + "name": "isCritical", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "isAccountCriticalNow", + "outputs": [ + { + "internalType": "bool", + "name": "isCritical", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "name": "isAccountSolvent", + "outputs": [ + { + "internalType": "bool", + "name": "isSolvent", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "isAccountSolventNow", + "outputs": [ + { + "internalType": "bool", + "name": "isSolvent", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenHolder", + "type": "address" + } + ], + "name": "isOperatorFor", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "liquidationTypeData", + "type": "bytes" + }, + { + "internalType": "address", + "name": "liquidatorAccount", + "type": "address" + }, + { + "internalType": "bool", + "name": "useDefaultRewardAccount", + "type": "bool" + }, + { + "internalType": "address", + "name": "targetAccount", + "type": "address" + }, + { + "internalType": "uint256", + "name": "rewardAmount", + "type": "uint256" + }, + { + "internalType": "int256", + "name": "targetAccountBalanceDelta", + "type": "int256" + } + ], + "name": "makeLiquidationPayoutsV2", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "operationApprove", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "operationDecreaseAllowance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "operationDowngrade", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "operationIncreaseAllowance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "operationSend", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "operationTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "operationUpgrade", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "operatorData", + "type": "bytes" + } + ], + "name": "operatorBurn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "operatorData", + "type": "bytes" + } + ], + "name": "operatorSend", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "name": "realtimeBalanceOf", + "outputs": [ + { + "internalType": "int256", + "name": "availableBalance", + "type": "int256" + }, + { + "internalType": "uint256", + "name": "deposit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "owedDeposit", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "realtimeBalanceOfNow", + "outputs": [ + { + "internalType": "int256", + "name": "availableBalance", + "type": "int256" + }, + { + "internalType": "uint256", + "name": "deposit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "owedDeposit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "revokeOperator", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "selfApproveFor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "userData", + "type": "bytes" + } + ], + "name": "selfBurn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "userData", + "type": "bytes" + } + ], + "name": "selfMint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "selfTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "send", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "int256", + "name": "delta", + "type": "int256" + } + ], + "name": "settleBalance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "dataLength", + "type": "uint256" + } + ], + "name": "terminateAgreement", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + } + ], + "name": "transferAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + }, + { + "internalType": "bytes32[]", + "name": "data", + "type": "bytes32[]" + } + ], + "name": "updateAgreementData", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "slotId", + "type": "uint256" + }, + { + "internalType": "bytes32[]", + "name": "slotData", + "type": "bytes32[]" + } + ], + "name": "updateAgreementStateSlot", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "upgrade", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "upgradeTo", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperTokenFactory.sol/ISuperTokenFactory.dbg.json b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperTokenFactory.sol/ISuperTokenFactory.dbg.json new file mode 100644 index 0000000..7acb1bc --- /dev/null +++ b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperTokenFactory.sol/ISuperTokenFactory.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../../build-info/ba9437438ec2715393320ce18780bccb.json" +} diff --git a/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperTokenFactory.sol/ISuperTokenFactory.json b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperTokenFactory.sol/ISuperTokenFactory.json new file mode 100644 index 0000000..006fb35 --- /dev/null +++ b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperTokenFactory.sol/ISuperTokenFactory.json @@ -0,0 +1,261 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ISuperTokenFactory", + "sourceName": "@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperTokenFactory.sol", + "abi": [ + { + "inputs": [], + "name": "SUPER_TOKEN_FACTORY_ALREADY_EXISTS", + "type": "error" + }, + { + "inputs": [], + "name": "SUPER_TOKEN_FACTORY_DOES_NOT_EXIST", + "type": "error" + }, + { + "inputs": [], + "name": "SUPER_TOKEN_FACTORY_NON_UPGRADEABLE_IS_DEPRECATED", + "type": "error" + }, + { + "inputs": [], + "name": "SUPER_TOKEN_FACTORY_ONLY_HOST", + "type": "error" + }, + { + "inputs": [], + "name": "SUPER_TOKEN_FACTORY_UNINITIALIZED", + "type": "error" + }, + { + "inputs": [], + "name": "SUPER_TOKEN_FACTORY_ZERO_ADDRESS", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "contract ISuperToken", + "name": "token", + "type": "address" + } + ], + "name": "CustomSuperTokenCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "contract ISuperToken", + "name": "token", + "type": "address" + } + ], + "name": "SuperTokenCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "contract ISuperToken", + "name": "tokenLogic", + "type": "address" + } + ], + "name": "SuperTokenLogicCreated", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_underlyingToken", + "type": "address" + } + ], + "name": "computeCanonicalERC20WrapperAddress", + "outputs": [ + { + "internalType": "address", + "name": "superTokenAddress", + "type": "address" + }, + { + "internalType": "bool", + "name": "isDeployed", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ERC20WithTokenInfo", + "name": "_underlyingToken", + "type": "address" + } + ], + "name": "createCanonicalERC20Wrapper", + "outputs": [ + { + "internalType": "contract ISuperToken", + "name": "", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ERC20WithTokenInfo", + "name": "underlyingToken", + "type": "address" + }, + { + "internalType": "enum ISuperTokenFactory.Upgradability", + "name": "upgradability", + "type": "uint8" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + } + ], + "name": "createERC20Wrapper", + "outputs": [ + { + "internalType": "contract ISuperToken", + "name": "superToken", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "underlyingToken", + "type": "address" + }, + { + "internalType": "uint8", + "name": "underlyingDecimals", + "type": "uint8" + }, + { + "internalType": "enum ISuperTokenFactory.Upgradability", + "name": "upgradability", + "type": "uint8" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol", + "type": "string" + } + ], + "name": "createERC20Wrapper", + "outputs": [ + { + "internalType": "contract ISuperToken", + "name": "superToken", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_underlyingTokenAddress", + "type": "address" + } + ], + "name": "getCanonicalERC20Wrapper", + "outputs": [ + { + "internalType": "address", + "name": "superTokenAddress", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getHost", + "outputs": [ + { + "internalType": "address", + "name": "host", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getSuperTokenLogic", + "outputs": [ + { + "internalType": "contract ISuperToken", + "name": "superToken", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "customSuperTokenProxy", + "type": "address" + } + ], + "name": "initializeCustomSuperToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol/ISuperfluid.dbg.json b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol/ISuperfluid.dbg.json new file mode 100644 index 0000000..7acb1bc --- /dev/null +++ b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol/ISuperfluid.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../../build-info/ba9437438ec2715393320ce18780bccb.json" +} diff --git a/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol/ISuperfluid.json b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol/ISuperfluid.json new file mode 100644 index 0000000..1380194 --- /dev/null +++ b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol/ISuperfluid.json @@ -0,0 +1,1131 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ISuperfluid", + "sourceName": "@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "_code", + "type": "uint256" + } + ], + "name": "APP_RULE", + "type": "error" + }, + { + "inputs": [], + "name": "HOST_AGREEMENT_ALREADY_REGISTERED", + "type": "error" + }, + { + "inputs": [], + "name": "HOST_AGREEMENT_CALLBACK_IS_NOT_ACTION", + "type": "error" + }, + { + "inputs": [], + "name": "HOST_AGREEMENT_IS_NOT_REGISTERED", + "type": "error" + }, + { + "inputs": [], + "name": "HOST_CALL_AGREEMENT_WITH_CTX_FROM_WRONG_ADDRESS", + "type": "error" + }, + { + "inputs": [], + "name": "HOST_CALL_APP_ACTION_WITH_CTX_FROM_WRONG_ADDRESS", + "type": "error" + }, + { + "inputs": [], + "name": "HOST_CANNOT_DOWNGRADE_TO_NON_UPGRADEABLE", + "type": "error" + }, + { + "inputs": [], + "name": "HOST_INVALID_CONFIG_WORD", + "type": "error" + }, + { + "inputs": [], + "name": "HOST_INVALID_OR_EXPIRED_SUPER_APP_REGISTRATION_KEY", + "type": "error" + }, + { + "inputs": [], + "name": "HOST_MAX_256_AGREEMENTS", + "type": "error" + }, + { + "inputs": [], + "name": "HOST_MUST_BE_CONTRACT", + "type": "error" + }, + { + "inputs": [], + "name": "HOST_NON_UPGRADEABLE", + "type": "error" + }, + { + "inputs": [], + "name": "HOST_NON_ZERO_LENGTH_PLACEHOLDER_CTX", + "type": "error" + }, + { + "inputs": [], + "name": "HOST_NOT_A_SUPER_APP", + "type": "error" + }, + { + "inputs": [], + "name": "HOST_NO_APP_REGISTRATION_PERMISSIONS", + "type": "error" + }, + { + "inputs": [], + "name": "HOST_ONLY_GOVERNANCE", + "type": "error" + }, + { + "inputs": [], + "name": "HOST_ONLY_LISTED_AGREEMENT", + "type": "error" + }, + { + "inputs": [], + "name": "HOST_RECEIVER_IS_NOT_SUPER_APP", + "type": "error" + }, + { + "inputs": [], + "name": "HOST_SENDER_IS_NOT_SUPER_APP", + "type": "error" + }, + { + "inputs": [], + "name": "HOST_SOURCE_APP_NEEDS_HIGHER_APP_LEVEL", + "type": "error" + }, + { + "inputs": [], + "name": "HOST_SUPER_APP_ALREADY_REGISTERED", + "type": "error" + }, + { + "inputs": [], + "name": "HOST_SUPER_APP_IS_JAILED", + "type": "error" + }, + { + "inputs": [], + "name": "HOST_UNAUTHORIZED_SUPER_APP_FACTORY", + "type": "error" + }, + { + "inputs": [], + "name": "HOST_UNKNOWN_BATCH_CALL_OPERATION_TYPE", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "agreementType", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "address", + "name": "code", + "type": "address" + } + ], + "name": "AgreementClassRegistered", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "agreementType", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "address", + "name": "code", + "type": "address" + } + ], + "name": "AgreementClassUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "contract ISuperApp", + "name": "app", + "type": "address" + } + ], + "name": "AppRegistered", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "contract ISuperfluidGovernance", + "name": "oldGov", + "type": "address" + }, + { + "indexed": false, + "internalType": "contract ISuperfluidGovernance", + "name": "newGov", + "type": "address" + } + ], + "name": "GovernanceReplaced", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "contract ISuperApp", + "name": "app", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "reason", + "type": "uint256" + } + ], + "name": "Jail", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "contract ISuperTokenFactory", + "name": "newFactory", + "type": "address" + } + ], + "name": "SuperTokenFactoryUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "contract ISuperToken", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "code", + "type": "address" + } + ], + "name": "SuperTokenLogicUpdated", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "bitmap", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "agreementType", + "type": "bytes32" + } + ], + "name": "addToAgreementClassesBitmap", + "outputs": [ + { + "internalType": "uint256", + "name": "newBitmap", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperApp", + "name": "targetApp", + "type": "address" + } + ], + "name": "allowCompositeApp", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "ctx", + "type": "bytes" + }, + { + "internalType": "int256", + "name": "appCreditUsedDelta", + "type": "int256" + } + ], + "name": "appCallbackPop", + "outputs": [ + { + "internalType": "bytes", + "name": "newCtx", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "ctx", + "type": "bytes" + }, + { + "internalType": "contract ISuperApp", + "name": "app", + "type": "address" + }, + { + "internalType": "uint256", + "name": "appCreditGranted", + "type": "uint256" + }, + { + "internalType": "int256", + "name": "appCreditUsed", + "type": "int256" + }, + { + "internalType": "contract ISuperfluidToken", + "name": "appCreditToken", + "type": "address" + } + ], + "name": "appCallbackPush", + "outputs": [ + { + "internalType": "bytes", + "name": "newCtx", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint32", + "name": "operationType", + "type": "uint32" + }, + { + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "internalType": "struct ISuperfluid.Operation[]", + "name": "operations", + "type": "tuple[]" + } + ], + "name": "batchCall", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperAgreement", + "name": "agreementClass", + "type": "address" + }, + { + "internalType": "bytes", + "name": "callData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "userData", + "type": "bytes" + } + ], + "name": "callAgreement", + "outputs": [ + { + "internalType": "bytes", + "name": "returnedData", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperAgreement", + "name": "agreementClass", + "type": "address" + }, + { + "internalType": "bytes", + "name": "callData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "userData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "ctx", + "type": "bytes" + } + ], + "name": "callAgreementWithContext", + "outputs": [ + { + "internalType": "bytes", + "name": "newCtx", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "returnedData", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperApp", + "name": "app", + "type": "address" + }, + { + "internalType": "bytes", + "name": "callData", + "type": "bytes" + } + ], + "name": "callAppAction", + "outputs": [ + { + "internalType": "bytes", + "name": "returnedData", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperApp", + "name": "app", + "type": "address" + }, + { + "internalType": "bytes", + "name": "callData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "ctx", + "type": "bytes" + } + ], + "name": "callAppActionWithContext", + "outputs": [ + { + "internalType": "bytes", + "name": "newCtx", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperApp", + "name": "app", + "type": "address" + }, + { + "internalType": "bytes", + "name": "callData", + "type": "bytes" + }, + { + "internalType": "bool", + "name": "isTermination", + "type": "bool" + }, + { + "internalType": "bytes", + "name": "ctx", + "type": "bytes" + } + ], + "name": "callAppAfterCallback", + "outputs": [ + { + "internalType": "bytes", + "name": "newCtx", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperApp", + "name": "app", + "type": "address" + }, + { + "internalType": "bytes", + "name": "callData", + "type": "bytes" + }, + { + "internalType": "bool", + "name": "isTermination", + "type": "bool" + }, + { + "internalType": "bytes", + "name": "ctx", + "type": "bytes" + } + ], + "name": "callAppBeforeCallback", + "outputs": [ + { + "internalType": "bytes", + "name": "cbdata", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "ctx", + "type": "bytes" + }, + { + "internalType": "int256", + "name": "appCreditUsedMore", + "type": "int256" + } + ], + "name": "ctxUseCredit", + "outputs": [ + { + "internalType": "bytes", + "name": "newCtx", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "ctx", + "type": "bytes" + } + ], + "name": "decodeCtx", + "outputs": [ + { + "components": [ + { + "internalType": "uint8", + "name": "appCallbackLevel", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "callType", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "internalType": "address", + "name": "msgSender", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "agreementSelector", + "type": "bytes4" + }, + { + "internalType": "bytes", + "name": "userData", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "appCreditGranted", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "appCreditWantedDeprecated", + "type": "uint256" + }, + { + "internalType": "int256", + "name": "appCreditUsed", + "type": "int256" + }, + { + "internalType": "address", + "name": "appAddress", + "type": "address" + }, + { + "internalType": "contract ISuperfluidToken", + "name": "appCreditToken", + "type": "address" + } + ], + "internalType": "struct ISuperfluid.Context", + "name": "context", + "type": "tuple" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint32", + "name": "operationType", + "type": "uint32" + }, + { + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "internalType": "struct ISuperfluid.Operation[]", + "name": "operations", + "type": "tuple[]" + } + ], + "name": "forwardBatchCall", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "agreementType", + "type": "bytes32" + } + ], + "name": "getAgreementClass", + "outputs": [ + { + "internalType": "contract ISuperAgreement", + "name": "agreementClass", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperApp", + "name": "app", + "type": "address" + } + ], + "name": "getAppCallbackLevel", + "outputs": [ + { + "internalType": "uint8", + "name": "appCallbackLevel", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperApp", + "name": "app", + "type": "address" + } + ], + "name": "getAppManifest", + "outputs": [ + { + "internalType": "bool", + "name": "isSuperApp", + "type": "bool" + }, + { + "internalType": "bool", + "name": "isJailed", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "noopMask", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getGovernance", + "outputs": [ + { + "internalType": "contract ISuperfluidGovernance", + "name": "governance", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getNow", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getSuperTokenFactory", + "outputs": [ + { + "internalType": "contract ISuperTokenFactory", + "name": "factory", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getSuperTokenFactoryLogic", + "outputs": [ + { + "internalType": "address", + "name": "logic", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperAgreement", + "name": "agreementClass", + "type": "address" + } + ], + "name": "isAgreementClassListed", + "outputs": [ + { + "internalType": "bool", + "name": "yes", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "agreementType", + "type": "bytes32" + } + ], + "name": "isAgreementTypeListed", + "outputs": [ + { + "internalType": "bool", + "name": "yes", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperApp", + "name": "app", + "type": "address" + } + ], + "name": "isApp", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperApp", + "name": "app", + "type": "address" + } + ], + "name": "isAppJailed", + "outputs": [ + { + "internalType": "bool", + "name": "isJail", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperApp", + "name": "app", + "type": "address" + }, + { + "internalType": "contract ISuperApp", + "name": "targetApp", + "type": "address" + } + ], + "name": "isCompositeAppAllowed", + "outputs": [ + { + "internalType": "bool", + "name": "isAppAllowed", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "ctx", + "type": "bytes" + } + ], + "name": "isCtxValid", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "ctx", + "type": "bytes" + }, + { + "internalType": "contract ISuperApp", + "name": "app", + "type": "address" + }, + { + "internalType": "uint256", + "name": "reason", + "type": "uint256" + } + ], + "name": "jailApp", + "outputs": [ + { + "internalType": "bytes", + "name": "newCtx", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "bitmap", + "type": "uint256" + } + ], + "name": "mapAgreementClasses", + "outputs": [ + { + "internalType": "contract ISuperAgreement[]", + "name": "agreementClasses", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperAgreement", + "name": "agreementClassLogic", + "type": "address" + } + ], + "name": "registerAgreementClass", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "configWord", + "type": "uint256" + } + ], + "name": "registerApp", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperApp", + "name": "app", + "type": "address" + }, + { + "internalType": "uint256", + "name": "configWord", + "type": "uint256" + } + ], + "name": "registerAppByFactory", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "configWord", + "type": "uint256" + }, + { + "internalType": "string", + "name": "registrationKey", + "type": "string" + } + ], + "name": "registerAppWithKey", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "bitmap", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "agreementType", + "type": "bytes32" + } + ], + "name": "removeFromAgreementClassesBitmap", + "outputs": [ + { + "internalType": "uint256", + "name": "newBitmap", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperfluidGovernance", + "name": "newGov", + "type": "address" + } + ], + "name": "replaceGovernance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperAgreement", + "name": "agreementClassLogic", + "type": "address" + } + ], + "name": "updateAgreementClass", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperTokenFactory", + "name": "newFactory", + "type": "address" + } + ], + "name": "updateSuperTokenFactory", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperToken", + "name": "token", + "type": "address" + } + ], + "name": "updateSuperTokenLogic", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance.sol/ISuperfluidGovernance.dbg.json b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance.sol/ISuperfluidGovernance.dbg.json new file mode 100644 index 0000000..7acb1bc --- /dev/null +++ b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance.sol/ISuperfluidGovernance.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../../build-info/ba9437438ec2715393320ce18780bccb.json" +} diff --git a/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance.sol/ISuperfluidGovernance.json b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance.sol/ISuperfluidGovernance.json new file mode 100644 index 0000000..911d217 --- /dev/null +++ b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance.sol/ISuperfluidGovernance.json @@ -0,0 +1,245 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ISuperfluidGovernance", + "sourceName": "@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance.sol", + "abi": [ + { + "inputs": [], + "name": "SF_GOV_ARRAYS_NOT_SAME_LENGTH", + "type": "error" + }, + { + "inputs": [], + "name": "SF_GOV_INVALID_LIQUIDATION_OR_PATRICIAN_PERIOD", + "type": "error" + }, + { + "inputs": [], + "name": "SF_GOV_MUST_BE_CONTRACT", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "contract ISuperfluid", + "name": "host", + "type": "address" + }, + { + "internalType": "contract ISuperToken[]", + "name": "tokens", + "type": "address[]" + } + ], + "name": "batchUpdateSuperTokenLogic", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperfluid", + "name": "host", + "type": "address" + }, + { + "internalType": "contract ISuperfluidToken", + "name": "superToken", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "key", + "type": "bytes32" + } + ], + "name": "clearConfig", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperfluid", + "name": "host", + "type": "address" + }, + { + "internalType": "contract ISuperfluidToken", + "name": "superToken", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "key", + "type": "bytes32" + } + ], + "name": "getConfigAsAddress", + "outputs": [ + { + "internalType": "address", + "name": "value", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperfluid", + "name": "host", + "type": "address" + }, + { + "internalType": "contract ISuperfluidToken", + "name": "superToken", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "key", + "type": "bytes32" + } + ], + "name": "getConfigAsUint256", + "outputs": [ + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperfluid", + "name": "host", + "type": "address" + }, + { + "internalType": "address", + "name": "agreementClass", + "type": "address" + } + ], + "name": "registerAgreementClass", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperfluid", + "name": "host", + "type": "address" + }, + { + "internalType": "address", + "name": "newGov", + "type": "address" + } + ], + "name": "replaceGovernance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperfluid", + "name": "host", + "type": "address" + }, + { + "internalType": "contract ISuperfluidToken", + "name": "superToken", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "key", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "value", + "type": "address" + } + ], + "name": "setConfig", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperfluid", + "name": "host", + "type": "address" + }, + { + "internalType": "contract ISuperfluidToken", + "name": "superToken", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "key", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "setConfig", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperfluid", + "name": "host", + "type": "address" + }, + { + "internalType": "address", + "name": "hostNewLogic", + "type": "address" + }, + { + "internalType": "address[]", + "name": "agreementClassNewLogics", + "type": "address[]" + }, + { + "internalType": "address", + "name": "superTokenFactoryNewLogic", + "type": "address" + } + ], + "name": "updateContracts", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol/ISuperfluidToken.dbg.json b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol/ISuperfluidToken.dbg.json new file mode 100644 index 0000000..7acb1bc --- /dev/null +++ b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol/ISuperfluidToken.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../../build-info/ba9437438ec2715393320ce18780bccb.json" +} diff --git a/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol/ISuperfluidToken.json b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol/ISuperfluidToken.json new file mode 100644 index 0000000..83549a6 --- /dev/null +++ b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol/ISuperfluidToken.json @@ -0,0 +1,682 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ISuperfluidToken", + "sourceName": "@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol", + "abi": [ + { + "inputs": [], + "name": "SF_TOKEN_AGREEMENT_ALREADY_EXISTS", + "type": "error" + }, + { + "inputs": [], + "name": "SF_TOKEN_AGREEMENT_DOES_NOT_EXIST", + "type": "error" + }, + { + "inputs": [], + "name": "SF_TOKEN_BURN_INSUFFICIENT_BALANCE", + "type": "error" + }, + { + "inputs": [], + "name": "SF_TOKEN_MOVE_INSUFFICIENT_BALANCE", + "type": "error" + }, + { + "inputs": [], + "name": "SF_TOKEN_ONLY_HOST", + "type": "error" + }, + { + "inputs": [], + "name": "SF_TOKEN_ONLY_LISTED_AGREEMENT", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "agreementClass", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32[]", + "name": "data", + "type": "bytes32[]" + } + ], + "name": "AgreementCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "agreementClass", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "penaltyAccount", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "rewardAccount", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "rewardAmount", + "type": "uint256" + } + ], + "name": "AgreementLiquidated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "liquidatorAccount", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "agreementClass", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "penaltyAccount", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "bondAccount", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "rewardAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "bailoutAmount", + "type": "uint256" + } + ], + "name": "AgreementLiquidatedBy", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "agreementClass", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "liquidatorAccount", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "targetAccount", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "rewardAmountReceiver", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "rewardAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "int256", + "name": "targetAccountBalanceDelta", + "type": "int256" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "liquidationTypeData", + "type": "bytes" + } + ], + "name": "AgreementLiquidatedV2", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "agreementClass", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "slotId", + "type": "uint256" + } + ], + "name": "AgreementStateUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "agreementClass", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + } + ], + "name": "AgreementTerminated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "agreementClass", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32[]", + "name": "data", + "type": "bytes32[]" + } + ], + "name": "AgreementUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "bailoutAccount", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "bailoutAmount", + "type": "uint256" + } + ], + "name": "Bailout", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + }, + { + "internalType": "bytes32[]", + "name": "data", + "type": "bytes32[]" + } + ], + "name": "createAgreement", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "getAccountActiveAgreements", + "outputs": [ + { + "internalType": "contract ISuperAgreement[]", + "name": "activeAgreements", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "agreementClass", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "dataLength", + "type": "uint256" + } + ], + "name": "getAgreementData", + "outputs": [ + { + "internalType": "bytes32[]", + "name": "data", + "type": "bytes32[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "agreementClass", + "type": "address" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "slotId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "dataLength", + "type": "uint256" + } + ], + "name": "getAgreementStateSlot", + "outputs": [ + { + "internalType": "bytes32[]", + "name": "slotData", + "type": "bytes32[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getHost", + "outputs": [ + { + "internalType": "address", + "name": "host", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "name": "isAccountCritical", + "outputs": [ + { + "internalType": "bool", + "name": "isCritical", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "isAccountCriticalNow", + "outputs": [ + { + "internalType": "bool", + "name": "isCritical", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "name": "isAccountSolvent", + "outputs": [ + { + "internalType": "bool", + "name": "isSolvent", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "isAccountSolventNow", + "outputs": [ + { + "internalType": "bool", + "name": "isSolvent", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "liquidationTypeData", + "type": "bytes" + }, + { + "internalType": "address", + "name": "liquidatorAccount", + "type": "address" + }, + { + "internalType": "bool", + "name": "useDefaultRewardAccount", + "type": "bool" + }, + { + "internalType": "address", + "name": "targetAccount", + "type": "address" + }, + { + "internalType": "uint256", + "name": "rewardAmount", + "type": "uint256" + }, + { + "internalType": "int256", + "name": "targetAccountBalanceDelta", + "type": "int256" + } + ], + "name": "makeLiquidationPayoutsV2", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "name": "realtimeBalanceOf", + "outputs": [ + { + "internalType": "int256", + "name": "availableBalance", + "type": "int256" + }, + { + "internalType": "uint256", + "name": "deposit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "owedDeposit", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "realtimeBalanceOfNow", + "outputs": [ + { + "internalType": "int256", + "name": "availableBalance", + "type": "int256" + }, + { + "internalType": "uint256", + "name": "deposit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "owedDeposit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "int256", + "name": "delta", + "type": "int256" + } + ], + "name": "settleBalance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "dataLength", + "type": "uint256" + } + ], + "name": "terminateAgreement", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + }, + { + "internalType": "bytes32[]", + "name": "data", + "type": "bytes32[]" + } + ], + "name": "updateAgreementData", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "slotId", + "type": "uint256" + }, + { + "internalType": "bytes32[]", + "name": "slotData", + "type": "bytes32[]" + } + ], + "name": "updateAgreementStateSlot", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo.sol/ERC20WithTokenInfo.dbg.json b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo.sol/ERC20WithTokenInfo.dbg.json new file mode 100644 index 0000000..7acb1bc --- /dev/null +++ b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo.sol/ERC20WithTokenInfo.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../../build-info/ba9437438ec2715393320ce18780bccb.json" +} diff --git a/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo.sol/ERC20WithTokenInfo.json b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo.sol/ERC20WithTokenInfo.json new file mode 100644 index 0000000..0cf84a8 --- /dev/null +++ b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo.sol/ERC20WithTokenInfo.json @@ -0,0 +1,233 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ERC20WithTokenInfo", + "sourceName": "@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.sol/TokenInfo.dbg.json b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.sol/TokenInfo.dbg.json new file mode 100644 index 0000000..7acb1bc --- /dev/null +++ b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.sol/TokenInfo.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../../build-info/ba9437438ec2715393320ce18780bccb.json" +} diff --git a/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.sol/TokenInfo.json b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.sol/TokenInfo.json new file mode 100644 index 0000000..f21b75a --- /dev/null +++ b/contracts/artifacts/@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.sol/TokenInfo.json @@ -0,0 +1,50 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "TokenInfo", + "sourceName": "@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.sol", + "abi": [ + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/build-info/a8f3edb970f736d3ccaffec4bae5df69.json b/contracts/artifacts/build-info/a8f3edb970f736d3ccaffec4bae5df69.json new file mode 100644 index 0000000..e7c3a22 --- /dev/null +++ b/contracts/artifacts/build-info/a8f3edb970f736d3ccaffec4bae5df69.json @@ -0,0 +1 @@ +{"id":"a8f3edb970f736d3ccaffec4bae5df69","_format":"hh-sol-build-info-1","solcVersion":"0.8.18","solcLongVersion":"0.8.18+commit.87f61d96","input":{"language":"Solidity","sources":{"@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/draft-IERC20Permit.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\n * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\n *\n * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\n * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't\n * need to send a transaction, and thus is not required to hold Ether at all.\n */\ninterface IERC20Permit {\n /**\n * @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,\n * given ``owner``'s signed approval.\n *\n * IMPORTANT: The same issues {IERC20-approve} has related to transaction\n * ordering also apply here.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n * - `deadline` must be a timestamp in the future.\n * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\n * over the EIP712-formatted function arguments.\n * - the signature must use ``owner``'s current nonce (see {nonces}).\n *\n * For more information on the signature format, see the\n * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\n * section].\n */\n function permit(\n address owner,\n address spender,\n uint256 value,\n uint256 deadline,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) external;\n\n /**\n * @dev Returns the current nonce for `owner`. This value must be\n * included whenever a signature is generated for {permit}.\n *\n * Every successful call to {permit} increases ``owner``'s nonce by one. This\n * prevents a signature from being used multiple times.\n */\n function nonces(address owner) external view returns (uint256);\n\n /**\n * @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\n */\n // solhint-disable-next-line func-name-mixedcase\n function DOMAIN_SEPARATOR() external view returns (bytes32);\n}\n"},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20 {\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n\n /**\n * @dev Returns the amount of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the amount of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves `amount` tokens from the caller's account to `to`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address to, uint256 amount) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 amount) external returns (bool);\n\n /**\n * @dev Moves `amount` tokens from `from` to `to` using the\n * allowance mechanism. `amount` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(\n address from,\n address to,\n uint256 amount\n ) external returns (bool);\n}\n"},"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC20/utils/SafeERC20.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../IERC20.sol\";\nimport \"../extensions/draft-IERC20Permit.sol\";\nimport \"../../../utils/Address.sol\";\n\n/**\n * @title SafeERC20\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\n * contract returns false). Tokens that return no value (and instead revert or\n * throw on failure) are also supported, non-reverting calls are assumed to be\n * successful.\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\n */\nlibrary SafeERC20 {\n using Address for address;\n\n function safeTransfer(\n IERC20 token,\n address to,\n uint256 value\n ) internal {\n _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));\n }\n\n function safeTransferFrom(\n IERC20 token,\n address from,\n address to,\n uint256 value\n ) internal {\n _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\n }\n\n /**\n * @dev Deprecated. This function has issues similar to the ones found in\n * {IERC20-approve}, and its usage is discouraged.\n *\n * Whenever possible, use {safeIncreaseAllowance} and\n * {safeDecreaseAllowance} instead.\n */\n function safeApprove(\n IERC20 token,\n address spender,\n uint256 value\n ) internal {\n // safeApprove should only be called when setting an initial allowance,\n // or when resetting it to zero. To increase and decrease it, use\n // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'\n require(\n (value == 0) || (token.allowance(address(this), spender) == 0),\n \"SafeERC20: approve from non-zero to non-zero allowance\"\n );\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));\n }\n\n function safeIncreaseAllowance(\n IERC20 token,\n address spender,\n uint256 value\n ) internal {\n uint256 newAllowance = token.allowance(address(this), spender) + value;\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\n }\n\n function safeDecreaseAllowance(\n IERC20 token,\n address spender,\n uint256 value\n ) internal {\n unchecked {\n uint256 oldAllowance = token.allowance(address(this), spender);\n require(oldAllowance >= value, \"SafeERC20: decreased allowance below zero\");\n uint256 newAllowance = oldAllowance - value;\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\n }\n }\n\n function safePermit(\n IERC20Permit token,\n address owner,\n address spender,\n uint256 value,\n uint256 deadline,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) internal {\n uint256 nonceBefore = token.nonces(owner);\n token.permit(owner, spender, value, deadline, v, r, s);\n uint256 nonceAfter = token.nonces(owner);\n require(nonceAfter == nonceBefore + 1, \"SafeERC20: permit did not succeed\");\n }\n\n /**\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n * on the return value: the return value is optional (but if data is returned, it must not be false).\n * @param token The token targeted by the call.\n * @param data The call data (encoded using abi.encode or one of its variants).\n */\n function _callOptionalReturn(IERC20 token, bytes memory data) private {\n // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\n // we're implementing it ourselves. We use {Address-functionCall} to perform this call, which verifies that\n // the target address contains contract code and also asserts for success in the low-level call.\n\n bytes memory returndata = address(token).functionCall(data, \"SafeERC20: low-level call failed\");\n if (returndata.length > 0) {\n // Return data is optional\n require(abi.decode(returndata, (bool)), \"SafeERC20: ERC20 operation did not succeed\");\n }\n }\n}\n"},"@openzeppelin/contracts/token/ERC777/IERC777.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC777/IERC777.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC777Token standard as defined in the EIP.\n *\n * This contract uses the\n * https://eips.ethereum.org/EIPS/eip-1820[ERC1820 registry standard] to let\n * token holders and recipients react to token movements by using setting implementers\n * for the associated interfaces in said registry. See {IERC1820Registry} and\n * {ERC1820Implementer}.\n */\ninterface IERC777 {\n /**\n * @dev Emitted when `amount` tokens are created by `operator` and assigned to `to`.\n *\n * Note that some additional user `data` and `operatorData` can be logged in the event.\n */\n event Minted(address indexed operator, address indexed to, uint256 amount, bytes data, bytes operatorData);\n\n /**\n * @dev Emitted when `operator` destroys `amount` tokens from `account`.\n *\n * Note that some additional user `data` and `operatorData` can be logged in the event.\n */\n event Burned(address indexed operator, address indexed from, uint256 amount, bytes data, bytes operatorData);\n\n /**\n * @dev Emitted when `operator` is made operator for `tokenHolder`.\n */\n event AuthorizedOperator(address indexed operator, address indexed tokenHolder);\n\n /**\n * @dev Emitted when `operator` is revoked its operator status for `tokenHolder`.\n */\n event RevokedOperator(address indexed operator, address indexed tokenHolder);\n\n /**\n * @dev Returns the name of the token.\n */\n function name() external view returns (string memory);\n\n /**\n * @dev Returns the symbol of the token, usually a shorter version of the\n * name.\n */\n function symbol() external view returns (string memory);\n\n /**\n * @dev Returns the smallest part of the token that is not divisible. This\n * means all token operations (creation, movement and destruction) must have\n * amounts that are a multiple of this number.\n *\n * For most token contracts, this value will equal 1.\n */\n function granularity() external view returns (uint256);\n\n /**\n * @dev Returns the amount of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the amount of tokens owned by an account (`owner`).\n */\n function balanceOf(address owner) external view returns (uint256);\n\n /**\n * @dev Moves `amount` tokens from the caller's account to `recipient`.\n *\n * If send or receive hooks are registered for the caller and `recipient`,\n * the corresponding functions will be called with `data` and empty\n * `operatorData`. See {IERC777Sender} and {IERC777Recipient}.\n *\n * Emits a {Sent} event.\n *\n * Requirements\n *\n * - the caller must have at least `amount` tokens.\n * - `recipient` cannot be the zero address.\n * - if `recipient` is a contract, it must implement the {IERC777Recipient}\n * interface.\n */\n function send(\n address recipient,\n uint256 amount,\n bytes calldata data\n ) external;\n\n /**\n * @dev Destroys `amount` tokens from the caller's account, reducing the\n * total supply.\n *\n * If a send hook is registered for the caller, the corresponding function\n * will be called with `data` and empty `operatorData`. See {IERC777Sender}.\n *\n * Emits a {Burned} event.\n *\n * Requirements\n *\n * - the caller must have at least `amount` tokens.\n */\n function burn(uint256 amount, bytes calldata data) external;\n\n /**\n * @dev Returns true if an account is an operator of `tokenHolder`.\n * Operators can send and burn tokens on behalf of their owners. All\n * accounts are their own operator.\n *\n * See {operatorSend} and {operatorBurn}.\n */\n function isOperatorFor(address operator, address tokenHolder) external view returns (bool);\n\n /**\n * @dev Make an account an operator of the caller.\n *\n * See {isOperatorFor}.\n *\n * Emits an {AuthorizedOperator} event.\n *\n * Requirements\n *\n * - `operator` cannot be calling address.\n */\n function authorizeOperator(address operator) external;\n\n /**\n * @dev Revoke an account's operator status for the caller.\n *\n * See {isOperatorFor} and {defaultOperators}.\n *\n * Emits a {RevokedOperator} event.\n *\n * Requirements\n *\n * - `operator` cannot be calling address.\n */\n function revokeOperator(address operator) external;\n\n /**\n * @dev Returns the list of default operators. These accounts are operators\n * for all token holders, even if {authorizeOperator} was never called on\n * them.\n *\n * This list is immutable, but individual holders may revoke these via\n * {revokeOperator}, in which case {isOperatorFor} will return false.\n */\n function defaultOperators() external view returns (address[] memory);\n\n /**\n * @dev Moves `amount` tokens from `sender` to `recipient`. The caller must\n * be an operator of `sender`.\n *\n * If send or receive hooks are registered for `sender` and `recipient`,\n * the corresponding functions will be called with `data` and\n * `operatorData`. See {IERC777Sender} and {IERC777Recipient}.\n *\n * Emits a {Sent} event.\n *\n * Requirements\n *\n * - `sender` cannot be the zero address.\n * - `sender` must have at least `amount` tokens.\n * - the caller must be an operator for `sender`.\n * - `recipient` cannot be the zero address.\n * - if `recipient` is a contract, it must implement the {IERC777Recipient}\n * interface.\n */\n function operatorSend(\n address sender,\n address recipient,\n uint256 amount,\n bytes calldata data,\n bytes calldata operatorData\n ) external;\n\n /**\n * @dev Destroys `amount` tokens from `account`, reducing the total supply.\n * The caller must be an operator of `account`.\n *\n * If a send hook is registered for `account`, the corresponding function\n * will be called with `data` and `operatorData`. See {IERC777Sender}.\n *\n * Emits a {Burned} event.\n *\n * Requirements\n *\n * - `account` cannot be the zero address.\n * - `account` must have at least `amount` tokens.\n * - the caller must be an operator for `account`.\n */\n function operatorBurn(\n address account,\n uint256 amount,\n bytes calldata data,\n bytes calldata operatorData\n ) external;\n\n event Sent(\n address indexed operator,\n address indexed from,\n address indexed to,\n uint256 amount,\n bytes data,\n bytes operatorData\n );\n}\n"},"@openzeppelin/contracts/utils/Address.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/Address.sol)\n\npragma solidity ^0.8.1;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n /**\n * @dev Returns true if `account` is a contract.\n *\n * [IMPORTANT]\n * ====\n * It is unsafe to assume that an address for which this function returns\n * false is an externally-owned account (EOA) and not a contract.\n *\n * Among others, `isContract` will return false for the following\n * types of addresses:\n *\n * - an externally-owned account\n * - a contract in construction\n * - an address where a contract will be created\n * - an address where a contract lived, but was destroyed\n * ====\n *\n * [IMPORTANT]\n * ====\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\n *\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n * constructor.\n * ====\n */\n function isContract(address account) internal view returns (bool) {\n // This method relies on extcodesize/address.code.length, which returns 0\n // for contracts in construction, since the code is only stored at the end\n // of the constructor execution.\n\n return account.code.length > 0;\n }\n\n /**\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n * `recipient`, forwarding all available gas and reverting on errors.\n *\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\n * imposed by `transfer`, making them unable to receive funds via\n * `transfer`. {sendValue} removes this limitation.\n *\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n *\n * IMPORTANT: because control is transferred to `recipient`, care must be\n * taken to not create reentrancy vulnerabilities. Consider using\n * {ReentrancyGuard} or the\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */\n function sendValue(address payable recipient, uint256 amount) internal {\n require(address(this).balance >= amount, \"Address: insufficient balance\");\n\n (bool success, ) = recipient.call{value: amount}(\"\");\n require(success, \"Address: unable to send value, recipient may have reverted\");\n }\n\n /**\n * @dev Performs a Solidity function call using a low level `call`. A\n * plain `call` is an unsafe replacement for a function call: use this\n * function instead.\n *\n * If `target` reverts with a revert reason, it is bubbled up by this\n * function (like regular Solidity function calls).\n *\n * Returns the raw returned data. To convert to the expected return value,\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n *\n * Requirements:\n *\n * - `target` must be a contract.\n * - calling `target` with `data` must not revert.\n *\n * _Available since v3.1._\n */\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, \"Address: low-level call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n * `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but also transferring `value` wei to `target`.\n *\n * Requirements:\n *\n * - the calling contract must have an ETH balance of at least `value`.\n * - the called Solidity function must be `payable`.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(\n address target,\n bytes memory data,\n uint256 value\n ) internal returns (bytes memory) {\n return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n * with `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(\n address target,\n bytes memory data,\n uint256 value,\n string memory errorMessage\n ) internal returns (bytes memory) {\n require(address(this).balance >= value, \"Address: insufficient balance for call\");\n (bool success, bytes memory returndata) = target.call{value: value}(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n return functionStaticCall(target, data, \"Address: low-level static call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal view returns (bytes memory) {\n (bool success, bytes memory returndata) = target.staticcall(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionDelegateCall(target, data, \"Address: low-level delegate call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n (bool success, bytes memory returndata) = target.delegatecall(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\n *\n * _Available since v4.8._\n */\n function verifyCallResultFromTarget(\n address target,\n bool success,\n bytes memory returndata,\n string memory errorMessage\n ) internal view returns (bytes memory) {\n if (success) {\n if (returndata.length == 0) {\n // only check isContract if the call was successful and the return data is empty\n // otherwise we already know that it was a contract\n require(isContract(target), \"Address: call to non-contract\");\n }\n return returndata;\n } else {\n _revert(returndata, errorMessage);\n }\n }\n\n /**\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\n * revert reason or using the provided one.\n *\n * _Available since v4.3._\n */\n function verifyCallResult(\n bool success,\n bytes memory returndata,\n string memory errorMessage\n ) internal pure returns (bytes memory) {\n if (success) {\n return returndata;\n } else {\n _revert(returndata, errorMessage);\n }\n }\n\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n /// @solidity memory-safe-assembly\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert(errorMessage);\n }\n }\n}\n"},"@openzeppelin/contracts/utils/math/Math.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/Math.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Standard math utilities missing in the Solidity language.\n */\nlibrary Math {\n enum Rounding {\n Down, // Toward negative infinity\n Up, // Toward infinity\n Zero // Toward zero\n }\n\n /**\n * @dev Returns the largest of two numbers.\n */\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\n return a > b ? a : b;\n }\n\n /**\n * @dev Returns the smallest of two numbers.\n */\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\n return a < b ? a : b;\n }\n\n /**\n * @dev Returns the average of two numbers. The result is rounded towards\n * zero.\n */\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\n // (a + b) / 2 can overflow.\n return (a & b) + (a ^ b) / 2;\n }\n\n /**\n * @dev Returns the ceiling of the division of two numbers.\n *\n * This differs from standard division with `/` in that it rounds up instead\n * of rounding down.\n */\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\n // (a + b - 1) / b can overflow on addition, so we distribute.\n return a == 0 ? 0 : (a - 1) / b + 1;\n }\n\n /**\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\n * with further edits by Uniswap Labs also under MIT license.\n */\n function mulDiv(\n uint256 x,\n uint256 y,\n uint256 denominator\n ) internal pure returns (uint256 result) {\n unchecked {\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\n // variables such that product = prod1 * 2^256 + prod0.\n uint256 prod0; // Least significant 256 bits of the product\n uint256 prod1; // Most significant 256 bits of the product\n assembly {\n let mm := mulmod(x, y, not(0))\n prod0 := mul(x, y)\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\n }\n\n // Handle non-overflow cases, 256 by 256 division.\n if (prod1 == 0) {\n return prod0 / denominator;\n }\n\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\n require(denominator > prod1);\n\n ///////////////////////////////////////////////\n // 512 by 256 division.\n ///////////////////////////////////////////////\n\n // Make division exact by subtracting the remainder from [prod1 prod0].\n uint256 remainder;\n assembly {\n // Compute remainder using mulmod.\n remainder := mulmod(x, y, denominator)\n\n // Subtract 256 bit number from 512 bit number.\n prod1 := sub(prod1, gt(remainder, prod0))\n prod0 := sub(prod0, remainder)\n }\n\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\n // See https://cs.stackexchange.com/q/138556/92363.\n\n // Does not overflow because the denominator cannot be zero at this stage in the function.\n uint256 twos = denominator & (~denominator + 1);\n assembly {\n // Divide denominator by twos.\n denominator := div(denominator, twos)\n\n // Divide [prod1 prod0] by twos.\n prod0 := div(prod0, twos)\n\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\n twos := add(div(sub(0, twos), twos), 1)\n }\n\n // Shift in bits from prod1 into prod0.\n prod0 |= prod1 * twos;\n\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\n // four bits. That is, denominator * inv = 1 mod 2^4.\n uint256 inverse = (3 * denominator) ^ 2;\n\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\n // in modular arithmetic, doubling the correct bits in each step.\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\n\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\n // is no longer required.\n result = prod0 * inverse;\n return result;\n }\n }\n\n /**\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\n */\n function mulDiv(\n uint256 x,\n uint256 y,\n uint256 denominator,\n Rounding rounding\n ) internal pure returns (uint256) {\n uint256 result = mulDiv(x, y, denominator);\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\n result += 1;\n }\n return result;\n }\n\n /**\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\n *\n * Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11).\n */\n function sqrt(uint256 a) internal pure returns (uint256) {\n if (a == 0) {\n return 0;\n }\n\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\n //\n // We know that the \"msb\" (most significant bit) of our target number `a` is a power of 2 such that we have\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\n //\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\n // → `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\n // → `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\n //\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\n uint256 result = 1 << (log2(a) >> 1);\n\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\n // into the expected uint128 result.\n unchecked {\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n return min(result, a / result);\n }\n }\n\n /**\n * @notice Calculates sqrt(a), following the selected rounding direction.\n */\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = sqrt(a);\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 2, rounded down, of a positive value.\n * Returns 0 if given 0.\n */\n function log2(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >> 128 > 0) {\n value >>= 128;\n result += 128;\n }\n if (value >> 64 > 0) {\n value >>= 64;\n result += 64;\n }\n if (value >> 32 > 0) {\n value >>= 32;\n result += 32;\n }\n if (value >> 16 > 0) {\n value >>= 16;\n result += 16;\n }\n if (value >> 8 > 0) {\n value >>= 8;\n result += 8;\n }\n if (value >> 4 > 0) {\n value >>= 4;\n result += 4;\n }\n if (value >> 2 > 0) {\n value >>= 2;\n result += 2;\n }\n if (value >> 1 > 0) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log2(value);\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 10, rounded down, of a positive value.\n * Returns 0 if given 0.\n */\n function log10(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >= 10**64) {\n value /= 10**64;\n result += 64;\n }\n if (value >= 10**32) {\n value /= 10**32;\n result += 32;\n }\n if (value >= 10**16) {\n value /= 10**16;\n result += 16;\n }\n if (value >= 10**8) {\n value /= 10**8;\n result += 8;\n }\n if (value >= 10**4) {\n value /= 10**4;\n result += 4;\n }\n if (value >= 10**2) {\n value /= 10**2;\n result += 2;\n }\n if (value >= 10**1) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log10(value);\n return result + (rounding == Rounding.Up && 10**result < value ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 256, rounded down, of a positive value.\n * Returns 0 if given 0.\n *\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\n */\n function log256(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >> 128 > 0) {\n value >>= 128;\n result += 16;\n }\n if (value >> 64 > 0) {\n value >>= 64;\n result += 8;\n }\n if (value >> 32 > 0) {\n value >>= 32;\n result += 4;\n }\n if (value >> 16 > 0) {\n value >>= 16;\n result += 2;\n }\n if (value >> 8 > 0) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log256(value);\n return result + (rounding == Rounding.Up && 1 << (result * 8) < value ? 1 : 0);\n }\n }\n}\n"},"@openzeppelin/contracts/utils/Strings.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/Strings.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./math/Math.sol\";\n\n/**\n * @dev String operations.\n */\nlibrary Strings {\n bytes16 private constant _SYMBOLS = \"0123456789abcdef\";\n uint8 private constant _ADDRESS_LENGTH = 20;\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\n */\n function toString(uint256 value) internal pure returns (string memory) {\n unchecked {\n uint256 length = Math.log10(value) + 1;\n string memory buffer = new string(length);\n uint256 ptr;\n /// @solidity memory-safe-assembly\n assembly {\n ptr := add(buffer, add(32, length))\n }\n while (true) {\n ptr--;\n /// @solidity memory-safe-assembly\n assembly {\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\n }\n value /= 10;\n if (value == 0) break;\n }\n return buffer;\n }\n }\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\n */\n function toHexString(uint256 value) internal pure returns (string memory) {\n unchecked {\n return toHexString(value, Math.log256(value) + 1);\n }\n }\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\n */\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\n bytes memory buffer = new bytes(2 * length + 2);\n buffer[0] = \"0\";\n buffer[1] = \"x\";\n for (uint256 i = 2 * length + 1; i > 1; --i) {\n buffer[i] = _SYMBOLS[value & 0xf];\n value >>= 4;\n }\n require(value == 0, \"Strings: hex length insufficient\");\n return string(buffer);\n }\n\n /**\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\n */\n function toHexString(address addr) internal pure returns (string memory) {\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\n }\n}\n"},"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol":{"content":"// SPDX-License-Identifier: AGPLv3\npragma solidity >= 0.8.0;\n\nimport {\n ISuperfluid,\n ISuperToken\n} from \"../interfaces/superfluid/ISuperfluid.sol\";\n\nimport {\n IConstantFlowAgreementV1\n} from \"../interfaces/agreements/IConstantFlowAgreementV1.sol\";\n\nimport {\n IInstantDistributionAgreementV1\n} from \"../interfaces/agreements/IInstantDistributionAgreementV1.sol\";\n\n/**\n * @title Library for Token Centric Interface\n * @author Superfluid\n * @dev Set `using for ISuperToken` in including file, and call any of these functions on an instance\n * of ISuperToken\n */\nlibrary SuperTokenV1Library {\n\n /** CFA BASE CRUD ************************************* */\n\n /**\n * @dev Create flow without userData\n * @param token The token used in flow\n * @param receiver The receiver of the flow\n * @param flowRate The desired flowRate\n */\n function createFlow(ISuperToken token, address receiver, int96 flowRate)\n internal returns (bool)\n {\n (ISuperfluid host, IConstantFlowAgreementV1 cfa) = _getAndCacheHostAndCFA(token);\n host.callAgreement(\n cfa,\n abi.encodeCall(\n cfa.createFlow,\n (token, receiver, flowRate, new bytes(0))\n ),\n new bytes(0) // userData\n );\n return true;\n }\n\n /**\n * @dev Create flow with userData\n * @param token The token used in flow\n * @param receiver The receiver of the flow\n * @param flowRate The desired flowRate\n * @param userData The userdata passed along with call\n */\n function createFlow(ISuperToken token, address receiver, int96 flowRate, bytes memory userData)\n internal returns (bool)\n {\n (ISuperfluid host, IConstantFlowAgreementV1 cfa) = _getAndCacheHostAndCFA(token);\n host.callAgreement(\n cfa,\n abi.encodeCall(\n cfa.createFlow,\n (token, receiver, flowRate, new bytes(0))\n ),\n userData // userData\n );\n return true;\n }\n\n\n /**\n * @dev Update flow without userData\n * @param token The token used in flow\n * @param receiver The receiver of the flow\n * @param flowRate The desired flowRate\n */\n function updateFlow(ISuperToken token, address receiver, int96 flowRate)\n internal returns (bool)\n {\n (ISuperfluid host, IConstantFlowAgreementV1 cfa) = _getAndCacheHostAndCFA(token);\n host.callAgreement(\n cfa,\n abi.encodeCall(\n cfa.updateFlow,\n (token, receiver, flowRate, new bytes(0))\n ),\n new bytes(0) // userData\n );\n return true;\n }\n\n\n /**\n * @dev Update flow with userData\n * @param token The token used in flow\n * @param receiver The receiver of the flow\n * @param flowRate The desired flowRate\n * @param userData The userdata passed along with call\n */\n function updateFlow(ISuperToken token, address receiver, int96 flowRate, bytes memory userData)\n internal returns (bool)\n {\n (ISuperfluid host, IConstantFlowAgreementV1 cfa) = _getAndCacheHostAndCFA(token);\n host.callAgreement(\n cfa,\n abi.encodeCall(\n cfa.updateFlow,\n (token, receiver, flowRate, new bytes(0))\n ),\n userData\n );\n return true;\n }\n\n /**\n * @dev Delete flow without userData\n * @param token The token used in flow\n * @param sender The sender of the flow\n * @param receiver The receiver of the flow\n */\n function deleteFlow(ISuperToken token, address sender, address receiver)\n internal returns (bool)\n {\n (ISuperfluid host, IConstantFlowAgreementV1 cfa) = _getAndCacheHostAndCFA(token);\n host.callAgreement(\n cfa,\n abi.encodeCall(\n cfa.deleteFlow,\n (token, sender, receiver, new bytes(0))\n ),\n new bytes(0) // userData\n );\n return true;\n }\n\n /**\n * @dev Delete flow with userData\n * @param token The token used in flow\n * @param sender The sender of the flow\n * @param receiver The receiver of the flow\n * @param userData The userdata passed along with call\n */\n function deleteFlow(ISuperToken token, address sender, address receiver, bytes memory userData)\n internal returns (bool)\n {\n (ISuperfluid host, IConstantFlowAgreementV1 cfa) = _getAndCacheHostAndCFA(token);\n host.callAgreement(\n cfa,\n abi.encodeCall(\n cfa.deleteFlow,\n (token, sender, receiver, new bytes(0))\n ),\n userData\n );\n return true;\n }\n\n /** CFA ACL ************************************* */\n\n /**\n * @dev Update permissions for flow operator\n * @param token The token used in flow\n * @param flowOperator The address given flow permissions\n * @param allowCreate creation permissions\n * @param allowCreate update permissions\n * @param allowCreate deletion permissions\n * @param flowRateAllowance The allowance provided to flowOperator\n */\n function setFlowPermissions(\n ISuperToken token,\n address flowOperator,\n bool allowCreate,\n bool allowUpdate,\n bool allowDelete,\n int96 flowRateAllowance\n ) internal returns (bool) {\n (ISuperfluid host, IConstantFlowAgreementV1 cfa) = _getAndCacheHostAndCFA(token);\n uint8 permissionsBitmask = (allowCreate ? 1 : 0)\n | (allowUpdate ? 1 : 0) << 1\n | (allowDelete ? 1 : 0) << 2;\n host.callAgreement(\n cfa,\n abi.encodeCall(\n cfa.updateFlowOperatorPermissions,\n (token, flowOperator, permissionsBitmask, flowRateAllowance, new bytes(0))\n ),\n new bytes(0)\n );\n return true;\n }\n\n /**\n * @dev Update permissions for flow operator - give operator max permissions\n * @param token The token used in flow\n * @param flowOperator The address given flow permissions\n */\n function setMaxFlowPermissions(\n ISuperToken token,\n address flowOperator\n ) internal returns (bool) {\n (ISuperfluid host, IConstantFlowAgreementV1 cfa) = _getAndCacheHostAndCFA(token);\n host.callAgreement(\n cfa,\n abi.encodeCall(\n cfa.authorizeFlowOperatorWithFullControl,\n (token, flowOperator, new bytes(0))\n ),\n new bytes(0)\n );\n return true;\n }\n\n /**\n * @dev Update permissions for flow operator - revoke all permission\n * @param token The token used in flow\n * @param flowOperator The address given flow permissions\n */\n function revokeFlowPermissions(\n ISuperToken token,\n address flowOperator\n ) internal returns (bool) {\n (ISuperfluid host, IConstantFlowAgreementV1 cfa) = _getAndCacheHostAndCFA(token);\n host.callAgreement(\n cfa,\n abi.encodeCall(\n cfa.revokeFlowOperatorWithFullControl,\n (token, flowOperator, new bytes(0))\n ),\n new bytes(0)\n );\n return true;\n }\n\n /**\n * @dev Update permissions for flow operator in callback\n * @notice allowing userData to be a parameter here triggered stack to deep error\n * @param token The token used in flow\n * @param flowOperator The address given flow permissions\n * @param allowCreate creation permissions\n * @param allowCreate update permissions\n * @param allowCreate deletion permissions\n * @param flowRateAllowance The allowance provided to flowOperator\n * @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n */\n function setFlowPermissionsWithCtx(\n ISuperToken token,\n address flowOperator,\n bool allowCreate,\n bool allowUpdate,\n bool allowDelete,\n int96 flowRateAllowance,\n bytes memory ctx\n ) internal returns (bytes memory newCtx) {\n (ISuperfluid host, IConstantFlowAgreementV1 cfa) = _getAndCacheHostAndCFA(token);\n uint8 permissionsBitmask = (allowCreate ? 1 : 0)\n | (allowUpdate ? 1 : 0) << 1\n | (allowDelete ? 1 : 0) << 2;\n (newCtx, ) = host.callAgreementWithContext(\n cfa,\n abi.encodeCall(\n cfa.updateFlowOperatorPermissions,\n (\n token,\n flowOperator,\n permissionsBitmask,\n flowRateAllowance,\n new bytes(0)\n )\n ),\n \"0x\",\n ctx\n );\n }\n\n /**\n * @dev Update permissions for flow operator - give operator max permissions\n * @param token The token used in flow\n * @param flowOperator The address given flow permissions\n * @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n */\n function setMaxFlowPermissionsWithCtx(\n ISuperToken token,\n address flowOperator,\n bytes memory ctx\n ) internal returns (bytes memory newCtx) {\n (ISuperfluid host, IConstantFlowAgreementV1 cfa) = _getAndCacheHostAndCFA(token);\n (newCtx, ) = host.callAgreementWithContext(\n cfa,\n abi.encodeCall(\n cfa.authorizeFlowOperatorWithFullControl,\n (\n token,\n flowOperator,\n new bytes(0)\n )\n ),\n \"0x\",\n ctx\n );\n }\n\n /**\n * @dev Update permissions for flow operator - revoke all permission\n * @param token The token used in flow\n * @param flowOperator The address given flow permissions\n * @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n */\n function revokeFlowPermissionsWithCtx(\n ISuperToken token,\n address flowOperator,\n bytes memory ctx\n ) internal returns (bytes memory newCtx) {\n (ISuperfluid host, IConstantFlowAgreementV1 cfa) = _getAndCacheHostAndCFA(token);\n (newCtx, ) = host.callAgreementWithContext(\n cfa,\n abi.encodeCall(\n cfa.revokeFlowOperatorWithFullControl,\n (token, flowOperator, new bytes(0))\n ),\n \"0x\",\n ctx\n );\n }\n\n\n /**\n * @dev Creates flow as an operator without userData\n * @param token The token to flow\n * @param sender The sender of the flow\n * @param receiver The receiver of the flow\n * @param flowRate The desired flowRate\n */\n function createFlowFrom(\n ISuperToken token,\n address sender,\n address receiver,\n int96 flowRate\n ) internal returns (bool) {\n (ISuperfluid host, IConstantFlowAgreementV1 cfa) = _getAndCacheHostAndCFA(token);\n host.callAgreement(\n cfa,\n abi.encodeCall(\n cfa.createFlowByOperator,\n (token, sender, receiver, flowRate, new bytes(0))\n ),\n new bytes(0)\n );\n return true;\n }\n\n /**\n * @dev Creates flow as an operator with userData\n * @param token The token to flow\n * @param sender The sender of the flow\n * @param receiver The receiver of the flow\n * @param flowRate The desired flowRate\n * @param userData The user provided data\n */\n function createFlowFrom(\n ISuperToken token,\n address sender,\n address receiver,\n int96 flowRate,\n bytes memory userData\n ) internal returns (bool) {\n (ISuperfluid host, IConstantFlowAgreementV1 cfa) = _getAndCacheHostAndCFA(token);\n host.callAgreement(\n cfa,\n abi.encodeCall(\n cfa.createFlowByOperator,\n (token, sender, receiver, flowRate, new bytes(0))\n ),\n userData\n );\n return true;\n }\n\n\n /**\n * @dev Updates flow as an operator without userData\n * @param token The token to flow\n * @param sender The sender of the flow\n * @param receiver The receiver of the flow\n * @param flowRate The desired flowRate\n */\n function updateFlowFrom(\n ISuperToken token,\n address sender,\n address receiver,\n int96 flowRate\n ) internal returns (bool) {\n (ISuperfluid host, IConstantFlowAgreementV1 cfa) = _getAndCacheHostAndCFA(token);\n host.callAgreement(\n cfa,\n abi.encodeCall(\n cfa.updateFlowByOperator,\n (token, sender, receiver, flowRate, new bytes(0))\n ),\n new bytes(0)\n );\n return true;\n }\n\n /**\n * @dev Updates flow as an operator with userData\n * @param token The token to flow\n * @param sender The sender of the flow\n * @param receiver The receiver of the flow\n * @param flowRate The desired flowRate\n * @param userData The user provided data\n */\n function updateFlowFrom(\n ISuperToken token,\n address sender,\n address receiver,\n int96 flowRate,\n bytes memory userData\n ) internal returns (bool) {\n (ISuperfluid host, IConstantFlowAgreementV1 cfa) = _getAndCacheHostAndCFA(token);\n host.callAgreement(\n cfa,\n abi.encodeCall(\n cfa.updateFlowByOperator,\n (token, sender, receiver, flowRate, new bytes(0))\n ),\n userData\n );\n return true;\n }\n\n /**\n * @dev Deletes flow as an operator without userData\n * @param token The token to flow\n * @param sender The sender of the flow\n * @param receiver The receiver of the flow\n */\n function deleteFlowFrom(\n ISuperToken token,\n address sender,\n address receiver\n ) internal returns (bool) {\n (ISuperfluid host, IConstantFlowAgreementV1 cfa) = _getAndCacheHostAndCFA(token);\n host.callAgreement(\n cfa,\n abi.encodeCall(\n cfa.deleteFlowByOperator,\n (token, sender, receiver, new bytes(0))\n ),\n new bytes(0)\n );\n return true;\n }\n\n /**\n * @dev Deletes flow as an operator with userData\n * @param token The token to flow\n * @param sender The sender of the flow\n * @param receiver The receiver of the flow\n * @param userData The user provided data\n */\n function deleteFlowFrom(\n ISuperToken token,\n address sender,\n address receiver,\n bytes memory userData\n ) internal returns (bool) {\n (ISuperfluid host, IConstantFlowAgreementV1 cfa) = _getAndCacheHostAndCFA(token);\n host.callAgreement(\n cfa,\n abi.encodeCall(\n cfa.deleteFlowByOperator,\n (token, sender, receiver, new bytes(0))\n ),\n userData\n );\n return true;\n }\n\n\n /** CFA With CTX FUNCTIONS ************************************* */\n\n /**\n * @dev Create flow with context and userData\n * @param token The token to flow\n * @param receiver The receiver of the flow\n * @param flowRate The desired flowRate\n * @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n */\n function createFlowWithCtx(\n ISuperToken token,\n address receiver,\n int96 flowRate,\n bytes memory ctx\n ) internal returns (bytes memory newCtx) {\n (ISuperfluid host, IConstantFlowAgreementV1 cfa) = _getAndCacheHostAndCFA(token);\n (newCtx, ) = host.callAgreementWithContext(\n cfa,\n abi.encodeCall(\n cfa.createFlow,\n (\n token,\n receiver,\n flowRate,\n new bytes(0) // placeholder\n )\n ),\n \"0x\",\n ctx\n );\n }\n\n /**\n * @dev Create flow by operator with context\n * @param token The token to flow\n * @param sender The sender of the flow\n * @param receiver The receiver of the flow\n * @param flowRate The desired flowRate\n * @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n */\n function createFlowFromWithCtx(\n ISuperToken token,\n address sender,\n address receiver,\n int96 flowRate,\n bytes memory ctx\n ) internal returns (bytes memory newCtx) {\n (ISuperfluid host, IConstantFlowAgreementV1 cfa) = _getAndCacheHostAndCFA(token);\n (newCtx, ) = host.callAgreementWithContext(\n cfa,\n abi.encodeCall(\n cfa.createFlowByOperator,\n (\n token,\n sender,\n receiver,\n flowRate,\n new bytes(0) // placeholder\n )\n ),\n \"0x\",\n ctx\n );\n }\n\n /**\n * @dev Update flow with context\n * @param token The token to flow\n * @param receiver The receiver of the flow\n * @param flowRate The desired flowRate\n * @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n */\n function updateFlowWithCtx(\n ISuperToken token,\n address receiver,\n int96 flowRate,\n bytes memory ctx\n ) internal returns (bytes memory newCtx) {\n (ISuperfluid host, IConstantFlowAgreementV1 cfa) = _getAndCacheHostAndCFA(token);\n (newCtx, ) = host.callAgreementWithContext(\n cfa,\n abi.encodeCall(\n cfa.updateFlow,\n (\n token,\n receiver,\n flowRate,\n new bytes(0) // placeholder\n )\n ),\n \"0x\",\n ctx\n );\n }\n\n /**\n * @dev Update flow by operator with context\n * @param token The token to flow\n * @param sender The receiver of the flow\n * @param receiver The receiver of the flow\n * @param flowRate The desired flowRate\n * @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n */\n function updateFlowFromWithCtx(\n ISuperToken token,\n address sender,\n address receiver,\n int96 flowRate,\n bytes memory ctx\n ) internal returns (bytes memory newCtx) {\n (ISuperfluid host, IConstantFlowAgreementV1 cfa) = _getAndCacheHostAndCFA(token);\n (newCtx, ) = host.callAgreementWithContext(\n cfa,\n abi.encodeCall(\n cfa.updateFlowByOperator,\n (\n token,\n sender,\n receiver,\n flowRate,\n new bytes(0) // placeholder\n )\n ),\n \"0x\",\n ctx\n );\n }\n\n /**\n * @dev Delete flow with context\n * @param token The token to flow\n * @param sender The sender of the flow\n * @param receiver The receiver of the flow\n * @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n */\n function deleteFlowWithCtx(\n ISuperToken token,\n address sender,\n address receiver,\n bytes memory ctx\n ) internal returns (bytes memory newCtx) {\n (ISuperfluid host, IConstantFlowAgreementV1 cfa) = _getAndCacheHostAndCFA(token);\n (newCtx, ) = host.callAgreementWithContext(\n cfa,\n abi.encodeCall(\n cfa.deleteFlow,\n (\n token,\n sender,\n receiver,\n new bytes(0) // placeholder\n )\n ),\n \"0x\",\n ctx\n );\n }\n\n /**\n * @dev Delete flow by operator with context\n * @param token The token to flow\n * @param sender The sender of the flow\n * @param receiver The receiver of the flow\n * @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n */\n function deleteFlowFromWithCtx(\n ISuperToken token,\n address sender,\n address receiver,\n bytes memory ctx\n ) internal returns (bytes memory newCtx) {\n (ISuperfluid host, IConstantFlowAgreementV1 cfa) = _getAndCacheHostAndCFA(token);\n (newCtx, ) = host.callAgreementWithContext(\n cfa,\n abi.encodeCall(\n cfa.deleteFlowByOperator,\n (\n token,\n sender,\n receiver,\n new bytes(0) // placeholder\n )\n ),\n \"0x\",\n ctx\n );\n }\n\n /** CFA VIEW FUNCTIONS ************************************* */\n\n /**\n * @dev get flow rate between two accounts for given token\n * @param token The token used in flow\n * @param sender The sender of the flow\n * @param receiver The receiver of the flow\n * @return flowRate The flow rate\n */\n function getFlowRate(ISuperToken token, address sender, address receiver)\n internal view returns(int96 flowRate)\n {\n (, IConstantFlowAgreementV1 cfa) = _getHostAndCFA(token);\n (, flowRate, , ) = cfa.getFlow(token, sender, receiver);\n }\n\n /**\n * @dev get flow info between two accounts for given token\n * @param token The token used in flow\n * @param sender The sender of the flow\n * @param receiver The receiver of the flow\n * @return lastUpdated Timestamp of flow creation or last flowrate change\n * @return flowRate The flow rate\n * @return deposit The amount of deposit the flow\n * @return owedDeposit The amount of owed deposit of the flow\n */\n function getFlowInfo(ISuperToken token, address sender, address receiver)\n internal view\n returns(uint256 lastUpdated, int96 flowRate, uint256 deposit, uint256 owedDeposit)\n {\n (, IConstantFlowAgreementV1 cfa) = _getHostAndCFA(token);\n (lastUpdated, flowRate, deposit, owedDeposit) = cfa.getFlow(token, sender, receiver);\n }\n\n /**\n * @dev get net flow rate for given account for given token\n * @param token Super token address\n * @param account Account to query\n * @return flowRate The net flow rate of the account\n */\n function getNetFlowRate(ISuperToken token, address account)\n internal view returns (int96 flowRate)\n {\n (, IConstantFlowAgreementV1 cfa) = _getHostAndCFA(token);\n return cfa.getNetFlow(token, account);\n }\n\n /**\n * @dev get the aggregated flow info of the account\n * @param token Super token address\n * @param account Account to query\n * @return lastUpdated Timestamp of the last change of the net flow\n * @return flowRate The net flow rate of token for account\n * @return deposit The sum of all deposits for account's flows\n * @return owedDeposit The sum of all owed deposits for account's flows\n */\n function getNetFlowInfo(ISuperToken token, address account)\n internal view\n returns (uint256 lastUpdated, int96 flowRate, uint256 deposit, uint256 owedDeposit)\n {\n (, IConstantFlowAgreementV1 cfa) = _getHostAndCFA(token);\n return cfa.getAccountFlowInfo(token, account);\n }\n\n /**\n * @dev calculate buffer for a flow rate\n * @param token The token used in flow\n * @param flowRate The flowrate to calculate the needed buffer for\n * @return bufferAmount The buffer amount based on flowRate, liquidationPeriod and minimum deposit\n */\n function getBufferAmountByFlowRate(ISuperToken token, int96 flowRate) internal view\n returns (uint256 bufferAmount)\n {\n (, IConstantFlowAgreementV1 cfa) = _getHostAndCFA(token);\n return cfa.getDepositRequiredForFlowRate(token, flowRate);\n }\n\n /**\n * @dev get existing flow permissions\n * @param token The token used in flow\n * @param sender sender of a flow\n * @param flowOperator the address we are checking permissions of for sender & token\n * @return allowCreate is true if the flowOperator can create flows\n * @return allowUpdate is true if the flowOperator can update flows\n * @return allowDelete is true if the flowOperator can delete flows\n * @return flowRateAllowance The flow rate allowance the flowOperator is granted (only goes down)\n */\n function getFlowPermissions(ISuperToken token, address sender, address flowOperator)\n internal view\n returns (bool allowCreate, bool allowUpdate, bool allowDelete, int96 flowRateAllowance)\n {\n (, IConstantFlowAgreementV1 cfa) = _getHostAndCFA(token);\n uint8 permissionsBitmask;\n (, permissionsBitmask, flowRateAllowance) = cfa.getFlowOperatorData(token, sender, flowOperator);\n allowCreate = permissionsBitmask & 1 == 1 ? true : false;\n allowUpdate = permissionsBitmask >> 1 & 1 == 1 ? true : false;\n allowDelete = permissionsBitmask >> 2 & 1 == 1 ? true : false;\n }\n\n\n /** IDA VIEW FUNCTIONS ************************************* */\n\n\n /**\n * @dev Gets an index by its ID and publisher.\n * @param token Super token used with the index.\n * @param publisher Publisher of the index.\n * @param indexId ID of the index.\n * @return exist True if the index exists.\n * @return indexValue Total value of the index.\n * @return totalUnitsApproved Units of the index approved by subscribers.\n * @return totalUnitsPending Units of teh index not yet approved by subscribers.\n */\n function getIndex(ISuperToken token, address publisher, uint32 indexId)\n internal view\n returns (bool exist, uint128 indexValue, uint128 totalUnitsApproved, uint128 totalUnitsPending)\n {\n (, IInstantDistributionAgreementV1 ida) = _getHostAndIDA(token);\n return ida.getIndex(token, publisher, indexId);\n }\n\n /**\n * @dev Calculates the distribution amount based on the amount of tokens desired to distribute.\n * @param token Super token used with the index.\n * @param publisher Publisher of the index.\n * @param indexId ID of the index.\n * @param amount Amount of tokens desired to distribute.\n * @return actualAmount Amount to be distributed with correct rounding.\n * @return newIndexValue The index value after the distribution would be called.\n */\n function calculateDistribution(ISuperToken token, address publisher, uint32 indexId, uint256 amount)\n internal view\n returns (uint256 actualAmount, uint128 newIndexValue)\n {\n (, IInstantDistributionAgreementV1 ida) = _getHostAndIDA(token);\n return ida.calculateDistribution(token, publisher, indexId, amount);\n }\n\n /**\n * @dev List all subscriptions of an address\n * @param token Super token used in the indexes listed.\n * @param subscriber Subscriber address.\n * @return publishers Publishers of the indices.\n * @return indexIds IDs of the indices.\n * @return unitsList Units owned of the indices.\n */\n function listSubscriptions(\n ISuperToken token,\n address subscriber\n )\n internal view\n returns (\n address[] memory publishers,\n uint32[] memory indexIds,\n uint128[] memory unitsList\n )\n {\n (, IInstantDistributionAgreementV1 ida) = _getHostAndIDA(token);\n return ida.listSubscriptions(token, subscriber);\n }\n\n /**\n * @dev Gets subscription by publisher, index id, and subscriber.\n * @param token Super token used with the index.\n * @param publisher Publisher of the index.\n * @param indexId ID of the index.\n * @param subscriber Subscriber to the index.\n * @return exist True if the subscription exists.\n * @return approved True if the subscription has been approved by the subscriber.\n * @return units Units held by the subscriber\n * @return pendingDistribution If not approved, the amount to be claimed on approval.\n */\n function getSubscription(ISuperToken token, address publisher, uint32 indexId, address subscriber)\n internal view\n returns (bool exist, bool approved, uint128 units, uint256 pendingDistribution)\n {\n (, IInstantDistributionAgreementV1 ida) = _getHostAndIDA(token);\n return ida.getSubscription(token, publisher, indexId, subscriber);\n }\n\n /*\n * @dev Gets subscription by the agreement ID.\n * @param token Super Token used with the index.\n * @param agreementId Agreement ID, unique to the subscriber and index ID.\n * @return publisher Publisher of the index.\n * @return indexId ID of the index.\n * @return approved True if the subscription has been approved by the subscriber.\n * @return units Units held by the subscriber\n * @return pendingDistribution If not approved, the amount to be claimed on approval.\n */\n function getSubscriptionByID(ISuperToken token, bytes32 agreementId)\n internal view\n returns (\n address publisher,\n uint32 indexId,\n bool approved,\n uint128 units,\n uint256 pendingDistribution\n )\n {\n (, IInstantDistributionAgreementV1 ida) = _getHostAndIDA(token);\n return ida.getSubscriptionByID(token, agreementId);\n }\n\n\n /** IDA BASE FUNCTIONS ************************************* */\n\n\n /**\n * @dev Creates a new index.\n * @param token Super Token used with the index.\n * @param indexId ID of the index.\n */\n function createIndex(\n ISuperToken token,\n uint32 indexId\n ) internal returns (bool) {\n (ISuperfluid host, IInstantDistributionAgreementV1 ida) = _getAndCacheHostAndIDA(token);\n host.callAgreement(\n ida,\n abi.encodeCall(\n ida.createIndex,\n (\n token,\n indexId,\n new bytes(0) // ctx placeholder\n )\n ),\n \"0x\"\n );\n return true;\n }\n\n /**\n * @dev Creates a new index with userData.\n * @param token Super Token used with the index.\n * @param indexId ID of the index.\n * @param userData Arbitrary user data field.\n */\n function createIndex(\n ISuperToken token,\n uint32 indexId,\n bytes memory userData\n ) internal returns (bool) {\n (ISuperfluid host, IInstantDistributionAgreementV1 ida) = _getAndCacheHostAndIDA(token);\n host.callAgreement(\n ida,\n abi.encodeCall(\n ida.createIndex,\n (\n token,\n indexId,\n new bytes(0) // ctx placeholder\n )\n ),\n userData\n );\n return true;\n }\n\n /**\n * @dev Updates an index value. This distributes an amount of tokens equal to\n * `indexValue - lastIndexValue`. See `distribute` for another way to distribute.\n * @param token Super Token used with the index.\n * @param indexId ID of the index.\n * @param indexValue New TOTAL index value, this will equal the total amount distributed.\n */\n function updateIndexValue(\n ISuperToken token,\n uint32 indexId,\n uint128 indexValue\n ) internal returns (bool) {\n (ISuperfluid host, IInstantDistributionAgreementV1 ida) = _getAndCacheHostAndIDA(token);\n host.callAgreement(\n ida,\n abi.encodeCall(\n ida.updateIndex,\n (\n token,\n indexId,\n indexValue,\n new bytes(0) // ctx placeholder\n )\n ),\n \"0x\"\n );\n return true;\n }\n\n /**\n * @dev Updates an index value with userData. This distributes an amount of tokens equal to\n * `indexValue - lastIndexValue`. See `distribute` for another way to distribute.\n * @param token Super Token used with the index.\n * @param indexId ID of the index.\n * @param indexValue New TOTAL index value, this will equal the total amount distributed.\n * @param userData Arbitrary user data field.\n */\n function updateIndexValue(\n ISuperToken token,\n uint32 indexId,\n uint128 indexValue,\n bytes memory userData\n ) internal returns (bool) {\n (ISuperfluid host, IInstantDistributionAgreementV1 ida) = _getAndCacheHostAndIDA(token);\n host.callAgreement(\n ida,\n abi.encodeCall(\n ida.updateIndex,\n (\n token,\n indexId,\n indexValue,\n new bytes(0) // ctx placeholder\n )\n ),\n userData\n );\n return true;\n }\n\n /**\n * @dev Distributes tokens in a more developer friendly way than `updateIndex`. Instead of\n * passing the new total index value, this function will increase the index value by `amount`.\n * @param token Super Token used with the index.\n * @param indexId ID of the index.\n * @param amount Amount by which the index value should increase.\n */\n function distribute(\n ISuperToken token,\n uint32 indexId,\n uint256 amount\n ) internal returns (bool) {\n (ISuperfluid host, IInstantDistributionAgreementV1 ida) = _getAndCacheHostAndIDA(token);\n host.callAgreement(\n ida,\n abi.encodeCall(\n ida.distribute,\n (\n token,\n indexId,\n amount,\n new bytes(0) // ctx placeholder\n )\n ),\n \"0x\"\n );\n return true;\n }\n\n /**\n * @dev Distributes tokens in a more developer friendly way than `updateIndex` (w user data). Instead of\n * passing the new total index value, this function will increase the index value by `amount`.\n * This takes arbitrary user data.\n * @param token Super Token used with the index.\n * @param indexId ID of the index.\n * @param amount Amount by which the index value should increase.\n * @param userData Arbitrary user data field.\n */\n function distribute(\n ISuperToken token,\n uint32 indexId,\n uint256 amount,\n bytes memory userData\n ) internal returns (bool) {\n (ISuperfluid host, IInstantDistributionAgreementV1 ida) = _getAndCacheHostAndIDA(token);\n host.callAgreement(\n ida,\n abi.encodeCall(\n ida.distribute,\n (\n token,\n indexId,\n amount,\n new bytes(0) // ctx placeholder\n )\n ),\n userData\n );\n return true;\n }\n\n /**\n * @dev Approves a subscription to an index. The subscriber's real time balance will not update\n * until the subscription is approved, but once approved, the balance will be updated with\n * prior distributions.\n * @param token Super Token used with the index.\n * @param publisher Publisher of the index.\n * @param indexId ID of the index.\n */\n function approveSubscription(\n ISuperToken token,\n address publisher,\n uint32 indexId\n ) internal returns (bool) {\n (ISuperfluid host, IInstantDistributionAgreementV1 ida) = _getAndCacheHostAndIDA(token);\n host.callAgreement(\n ida,\n abi.encodeCall(\n ida.approveSubscription,\n (\n token,\n publisher,\n indexId,\n new bytes(0) // ctx placeholder\n )\n ),\n \"0x\"\n );\n return true;\n }\n\n /**\n * @dev Approves a subscription to an index with user data. The subscriber's real time balance will not update\n * until the subscription is approved, but once approved, the balance will be updated with\n * prior distributions.\n * @param token Super Token used with the index.\n * @param publisher Publisher of the index.\n * @param indexId ID of the index.\n * @param userData Arbitrary user data field.\n */\n function approveSubscription(\n ISuperToken token,\n address publisher,\n uint32 indexId,\n bytes memory userData\n ) internal returns (bool) {\n (ISuperfluid host, IInstantDistributionAgreementV1 ida) = _getAndCacheHostAndIDA(token);\n host.callAgreement(\n ida,\n abi.encodeCall(\n ida.approveSubscription,\n (\n token,\n publisher,\n indexId,\n new bytes(0) // ctx placeholder\n )\n ),\n userData\n );\n return true;\n }\n\n /**\n * @dev Revokes a previously approved subscription.\n * @param token Super Token used with the index.\n * @param publisher Publisher of the index.\n * @param indexId ID of the index.\n */\n function revokeSubscription(\n ISuperToken token,\n address publisher,\n uint32 indexId\n ) internal returns (bool) {\n (ISuperfluid host, IInstantDistributionAgreementV1 ida) = _getAndCacheHostAndIDA(token);\n host.callAgreement(\n ida,\n abi.encodeCall(\n ida.revokeSubscription,\n (\n token,\n publisher,\n indexId,\n new bytes(0) // ctx placeholder\n )\n ),\n \"0x\"\n );\n return true;\n }\n\n /**\n * @dev Revokes a previously approved subscription. This takes arbitrary user data.\n * @param token Super Token used with the index.\n * @param publisher Publisher of the index.\n * @param indexId ID of the index.\n * @param userData Arbitrary user data field.\n */\n function revokeSubscription(\n ISuperToken token,\n address publisher,\n uint32 indexId,\n bytes memory userData\n ) internal returns (bool) {\n (ISuperfluid host, IInstantDistributionAgreementV1 ida) = _getAndCacheHostAndIDA(token);\n host.callAgreement(\n ida,\n abi.encodeCall(\n ida.revokeSubscription,\n (\n token,\n publisher,\n indexId,\n new bytes(0) // ctx placeholder\n )\n ),\n userData\n );\n return true;\n }\n\n /**\n * @dev Updates the units of a subscription. This changes the number of shares the subscriber holds\n * @param token Super Token used with the index.\n * @param indexId ID of the index.\n * @param subscriber Subscriber address whose units are to be updated.\n * @param units New number of units the subscriber holds.\n */\n function updateSubscriptionUnits(\n ISuperToken token,\n uint32 indexId,\n address subscriber,\n uint128 units\n ) internal returns (bool) {\n (ISuperfluid host, IInstantDistributionAgreementV1 ida) = _getAndCacheHostAndIDA(token);\n host.callAgreement(\n ida,\n abi.encodeCall(\n ida.updateSubscription,\n (\n token,\n indexId,\n subscriber,\n units,\n new bytes(0) // ctx placeholder\n )\n ),\n \"0x\"\n );\n return true;\n }\n\n /**\n * @dev Updates the units of a subscription. This changes the number of shares the subscriber\n * holds. This takes arbitrary user data.\n * @param token Super Token used with the index.\n * @param indexId ID of the index.\n * @param subscriber Subscriber address whose units are to be updated.\n * @param units New number of units the subscriber holds.\n * @param userData Arbitrary user data field.\n */\n function updateSubscriptionUnits(\n ISuperToken token,\n uint32 indexId,\n address subscriber,\n uint128 units,\n bytes memory userData\n ) internal returns (bool) {\n (ISuperfluid host, IInstantDistributionAgreementV1 ida) = _getAndCacheHostAndIDA(token);\n host.callAgreement(\n ida,\n abi.encodeCall(\n ida.updateSubscription,\n (\n token,\n indexId,\n subscriber,\n units,\n new bytes(0) // ctx placeholder\n )\n ),\n userData\n );\n return true;\n }\n\n /**\n * @dev Deletes a subscription, setting a subcriber's units to zero\n * @param token Super Token used with the index.\n * @param publisher Publisher of the index.\n * @param indexId ID of the index.\n * @param subscriber Subscriber address whose units are to be deleted.\n */\n function deleteSubscription(\n ISuperToken token,\n address publisher,\n uint32 indexId,\n address subscriber\n ) internal returns (bool) {\n (ISuperfluid host, IInstantDistributionAgreementV1 ida) = _getAndCacheHostAndIDA(token);\n host.callAgreement(\n ida,\n abi.encodeCall(\n ida.deleteSubscription,\n (\n token,\n publisher,\n indexId,\n subscriber,\n new bytes(0) // ctx placeholder\n )\n ),\n \"0x\"\n );\n return true;\n }\n\n /**\n * @dev Deletes a subscription, setting a subcriber's units to zero. This takes arbitrary userdata.\n * @param token Super Token used with the index.\n * @param publisher Publisher of the index.\n * @param indexId ID of the index.\n * @param subscriber Subscriber address whose units are to be deleted.\n * @param userData Arbitrary user data field.\n */\n function deleteSubscription(\n ISuperToken token,\n address publisher,\n uint32 indexId,\n address subscriber,\n bytes memory userData\n ) internal returns (bool) {\n (ISuperfluid host, IInstantDistributionAgreementV1 ida) = _getAndCacheHostAndIDA(token);\n host.callAgreement(\n ida,\n abi.encodeCall(\n ida.deleteSubscription,\n (\n token,\n publisher,\n indexId,\n subscriber,\n new bytes(0) // ctx placeholder\n )\n ),\n userData\n );\n return true;\n }\n\n /**\n * @dev Claims pending distribution. Subscription should not be approved\n * @param token Super Token used with the index.\n * @param publisher Publisher of the index.\n * @param indexId ID of the index.\n * @param subscriber Subscriber address that receives the claim.\n */\n function claim(\n ISuperToken token,\n address publisher,\n uint32 indexId,\n address subscriber\n ) internal returns (bool) {\n (ISuperfluid host, IInstantDistributionAgreementV1 ida) = _getAndCacheHostAndIDA(token);\n host.callAgreement(\n ida,\n abi.encodeCall(\n ida.claim,\n (\n token,\n publisher,\n indexId,\n subscriber,\n new bytes(0) // ctx placeholder\n )\n ),\n \"0x\"\n );\n return true;\n }\n\n /**\n * @dev Claims pending distribution. Subscription should not be approved. This takes arbitrary user data.\n * @param token Super Token used with the index.\n * @param publisher Publisher of the index.\n * @param indexId ID of the index.\n * @param subscriber Subscriber address that receives the claim.\n * @param userData Arbitrary user data field.\n */\n function claim(\n ISuperToken token,\n address publisher,\n uint32 indexId,\n address subscriber,\n bytes memory userData\n ) internal returns (bool) {\n (ISuperfluid host, IInstantDistributionAgreementV1 ida) = _getAndCacheHostAndIDA(token);\n host.callAgreement(\n ida,\n abi.encodeCall(\n ida.claim,\n (\n token,\n publisher,\n indexId,\n subscriber,\n new bytes(0) // ctx placeholder\n )\n ),\n userData\n );\n return true;\n }\n\n /** IDA WITH CTX FUNCTIONS ************************************* */\n\n /**\n * @dev Creates a new index with ctx.\n * Meant for usage in super app callbacks\n * @param token Super Token used with the index.\n * @param indexId ID of the index.\n * @param ctx from super app callback\n */\n function createIndexWithCtx(\n ISuperToken token,\n uint32 indexId,\n bytes memory ctx\n ) internal returns (bytes memory newCtx) {\n (ISuperfluid host, IInstantDistributionAgreementV1 ida) = _getAndCacheHostAndIDA(token);\n (newCtx, ) = host.callAgreementWithContext(\n ida,\n abi.encodeCall(\n ida.createIndex,\n (\n token,\n indexId,\n new bytes(0) // ctx placeholder\n )\n ),\n \"0x\",\n ctx\n );\n }\n\n /**\n * @dev Updates an index value with ctx. This distributes an amount of tokens equal to\n * `indexValue - lastIndexValue`. See `distribute` for another way to distribute.\n * Meant for usage in super app callbakcs\n * @param token Super Token used with the index.\n * @param indexId ID of the index.\n * @param indexValue New TOTAL index value, this will equal the total amount distributed.\n * @param ctx from super app callback\n */\n function updateIndexValueWithCtx(\n ISuperToken token,\n uint32 indexId,\n uint128 indexValue,\n bytes memory ctx\n ) internal returns (bytes memory newCtx) {\n (ISuperfluid host, IInstantDistributionAgreementV1 ida) = _getAndCacheHostAndIDA(token);\n (newCtx, ) = host.callAgreementWithContext(\n ida,\n abi.encodeCall(\n ida.updateIndex,\n (\n token,\n indexId,\n indexValue,\n new bytes(0) // ctx placeholder\n )\n ),\n \"0x\",\n ctx\n );\n }\n\n /**\n * @dev Distributes tokens in a more developer friendly way than `updateIndex`.Instead of\n * passing the new total index value, this function will increase the index value by `amount`.\n * @param token Super Token used with the index.\n * @param indexId ID of the index.\n * @param amount Amount by which the index value should increase.\n * @param ctx from super app callback\n */\n function distributeWithCtx(\n ISuperToken token,\n uint32 indexId,\n uint256 amount,\n bytes memory ctx\n ) internal returns (bytes memory newCtx) {\n (ISuperfluid host, IInstantDistributionAgreementV1 ida) = _getAndCacheHostAndIDA(token);\n (newCtx, ) = host.callAgreementWithContext(\n ida,\n abi.encodeCall(\n ida.distribute,\n (\n token,\n indexId,\n amount,\n new bytes(0) // ctx placeholder\n )\n ),\n \"0x\",\n ctx\n );\n }\n\n /**\n * @dev Approves a subscription to an index. The subscriber's real time balance will not update\n * until the subscription is approved, but once approved, the balance will be updated with\n * prior distributions.\n * @param token Super Token used with the index.\n * @param publisher Publisher of the index.\n * @param indexId ID of the index.\n * @param ctx from super app callback\n */\n function approveSubscriptionWithCtx(\n ISuperToken token,\n address publisher,\n uint32 indexId,\n bytes memory ctx\n ) internal returns (bytes memory newCtx) {\n (ISuperfluid host, IInstantDistributionAgreementV1 ida) = _getAndCacheHostAndIDA(token);\n (newCtx, ) = host.callAgreementWithContext(\n ida,\n abi.encodeCall(\n ida.approveSubscription,\n (\n token,\n publisher,\n indexId,\n new bytes(0) // ctx placeholder\n )\n ),\n \"0x\",\n ctx\n );\n }\n\n /**\n * @dev Revokes a previously approved subscription. Meant for usage in super apps\n * @param token Super Token used with the index.\n * @param publisher Publisher of the index.\n * @param indexId ID of the index.\n * @param ctx from super app callback\n */\n function revokeSubscriptionWithCtx(\n ISuperToken token,\n address publisher,\n uint32 indexId,\n bytes memory ctx\n ) internal returns (bytes memory newCtx) {\n (ISuperfluid host, IInstantDistributionAgreementV1 ida) = _getAndCacheHostAndIDA(token);\n (newCtx, ) = host.callAgreementWithContext(\n ida,\n abi.encodeCall(\n ida.revokeSubscription,\n (\n token,\n publisher,\n indexId,\n new bytes(0) // ctx placeholder\n )\n ),\n \"0x\",\n ctx\n );\n }\n\n /**\n * @dev Updates the units of a subscription. This changes the number of shares the subscriber\n * holds. Meant for usage in super apps\n * @param token Super Token used with the index.\n * @param indexId ID of the index.\n * @param subscriber Subscriber address whose units are to be updated.\n * @param units New number of units the subscriber holds.\n * @param ctx from super app callback\n */\n function updateSubscriptionUnitsWithCtx(\n ISuperToken token,\n uint32 indexId,\n address subscriber,\n uint128 units,\n bytes memory ctx\n ) internal returns (bytes memory newCtx) {\n (ISuperfluid host, IInstantDistributionAgreementV1 ida) = _getAndCacheHostAndIDA(token);\n (newCtx, ) = host.callAgreementWithContext(\n ida,\n abi.encodeCall(\n ida.updateSubscription,\n (\n token,\n indexId,\n subscriber,\n units,\n new bytes(0) // ctx placeholder\n )\n ),\n \"0x\",\n ctx\n );\n }\n\n /**\n * @dev Deletes a subscription, setting a subcriber's units to zero.\n * Meant for usage in super apps\n * @param token Super Token used with the index.\n * @param publisher Publisher of the index.\n * @param indexId ID of the index.\n * @param subscriber Subscriber address whose units are to be deleted.\n * @param ctx from super app callback\n */\n function deleteSubscriptionWithCtx(\n ISuperToken token,\n address publisher,\n uint32 indexId,\n address subscriber,\n bytes memory ctx\n ) internal returns (bytes memory newCtx) {\n (ISuperfluid host, IInstantDistributionAgreementV1 ida) = _getAndCacheHostAndIDA(token);\n (newCtx, ) = host.callAgreementWithContext(\n ida,\n abi.encodeCall(\n ida.deleteSubscription,\n (\n token,\n publisher,\n indexId,\n subscriber,\n new bytes(0) // ctx placeholder\n )\n ),\n \"0x\",\n ctx\n );\n }\n\n /**\n * @dev Claims pending distribution. Subscription should not be approved.\n * Meant for usage in super app callbacks\n * @param token Super Token used with the index.\n * @param publisher Publisher of the index.\n * @param indexId ID of the index.\n * @param subscriber Subscriber address that receives the claim.\n * @param ctx from super app callback\n */\n function claimWithCtx(\n ISuperToken token,\n address publisher,\n uint32 indexId,\n address subscriber,\n bytes memory ctx\n ) internal returns (bytes memory newCtx) {\n (ISuperfluid host, IInstantDistributionAgreementV1 ida) = _getAndCacheHostAndIDA(token);\n (newCtx, ) = host.callAgreementWithContext(\n ida,\n abi.encodeCall(\n ida.claim,\n (\n token,\n publisher,\n indexId,\n subscriber,\n new bytes(0) // ctx placeholder\n )\n ),\n \"0x\",\n ctx\n );\n }\n\n // ************** private helpers **************\n\n // keccak256(\"org.superfluid-finance.apps.SuperTokenLibrary.v1.host\")\n bytes32 private constant _HOST_SLOT = 0x65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea837;\n // keccak256(\"org.superfluid-finance.apps.SuperTokenLibrary.v1.cfa\")\n bytes32 private constant _CFA_SLOT = 0xb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a;\n // keccak256(\"org.superfluid-finance.apps.SuperTokenLibrary.v1.ida\");\n bytes32 private constant _IDA_SLOT = 0xa832ee1924ea960211af2df07d65d166232018f613ac6708043cd8f8773eddeb;\n\n // gets the host and cfa addrs for the token and caches it in storage for gas efficiency\n // to be used in state changing methods\n function _getAndCacheHostAndCFA(ISuperToken token) private\n returns(ISuperfluid host, IConstantFlowAgreementV1 cfa)\n {\n // check if already in contract storage...\n assembly { // solium-disable-line\n host := sload(_HOST_SLOT)\n cfa := sload(_CFA_SLOT)\n }\n if (address(cfa) == address(0)) {\n // framework contract addrs not yet cached, retrieving now...\n if (address(host) == address(0)) {\n host = ISuperfluid(token.getHost());\n }\n cfa = IConstantFlowAgreementV1(address(ISuperfluid(host).getAgreementClass(\n //keccak256(\"org.superfluid-finance.agreements.ConstantFlowAgreement.v1\")\n 0xa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd3)));\n // now that we got them and are in a transaction context, persist in storage\n assembly {\n // solium-disable-line\n sstore(_HOST_SLOT, host)\n sstore(_CFA_SLOT, cfa)\n }\n }\n assert(address(host) != address(0));\n assert(address(cfa) != address(0));\n }\n\n // gets the host and ida addrs for the token and caches it in storage for gas efficiency\n // to be used in state changing methods\n function _getAndCacheHostAndIDA(ISuperToken token) private\n returns(ISuperfluid host, IInstantDistributionAgreementV1 ida)\n {\n // check if already in contract storage...\n assembly { // solium-disable-line\n host := sload(_HOST_SLOT)\n ida := sload(_IDA_SLOT)\n }\n if (address(ida) == address(0)) {\n // framework contract addrs not yet cached, retrieving now...\n if (address(host) == address(0)) {\n host = ISuperfluid(token.getHost());\n }\n ida = IInstantDistributionAgreementV1(address(ISuperfluid(host).getAgreementClass(\n keccak256(\"org.superfluid-finance.agreements.InstantDistributionAgreement.v1\"))));\n // now that we got them and are in a transaction context, persist in storage\n assembly {\n // solium-disable-line\n sstore(_HOST_SLOT, host)\n sstore(_IDA_SLOT, ida)\n }\n }\n assert(address(host) != address(0));\n assert(address(ida) != address(0));\n }\n\n // gets the host and cfa addrs for the token\n // to be used in non-state changing methods (view functions)\n function _getHostAndCFA(ISuperToken token) private view\n returns(ISuperfluid host, IConstantFlowAgreementV1 cfa)\n {\n // check if already in contract storage...\n assembly { // solium-disable-line\n host := sload(_HOST_SLOT)\n cfa := sload(_CFA_SLOT)\n }\n if (address(cfa) == address(0)) {\n // framework contract addrs not yet cached in storage, retrieving now...\n if (address(host) == address(0)) {\n host = ISuperfluid(token.getHost());\n }\n cfa = IConstantFlowAgreementV1(address(ISuperfluid(host).getAgreementClass(\n //keccak256(\"org.superfluid-finance.agreements.ConstantFlowAgreement.v1\")\n 0xa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd3)));\n }\n assert(address(host) != address(0));\n assert(address(cfa) != address(0));\n }\n\n // gets the host and ida addrs for the token\n // to be used in non-state changing methods (view functions)\n function _getHostAndIDA(ISuperToken token) private view\n returns(ISuperfluid host, IInstantDistributionAgreementV1 ida)\n {\n // check if already in contract storage...\n assembly { // solium-disable-line\n host := sload(_HOST_SLOT)\n ida := sload(_IDA_SLOT)\n }\n if (address(ida) == address(0)) {\n // framework contract addrs not yet cached in storage, retrieving now...\n if (address(host) == address(0)) {\n host = ISuperfluid(token.getHost());\n }\n ida = IInstantDistributionAgreementV1(address(ISuperfluid(host).getAgreementClass(\n //keccak256(\"org.superfluid-finance.agreements.InstantDistributionAgreement.v1\")\n 0x15609310ae3c30189a1218b7adabaf36c267255e70cf91b6cba384367d9eda32)));\n }\n assert(address(host) != address(0));\n assert(address(ida) != address(0));\n }\n}\n"},"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol":{"content":"// SPDX-License-Identifier: AGPLv3\npragma solidity >= 0.8.4;\n\nimport { ISuperAgreement } from \"../superfluid/ISuperAgreement.sol\";\nimport { ISuperfluidToken } from \"../superfluid/ISuperfluidToken.sol\";\n\n/**\n * @title Constant Flow Agreement interface\n * @author Superfluid\n */\nabstract contract IConstantFlowAgreementV1 is ISuperAgreement {\n\n /**************************************************************************\n * Errors\n *************************************************************************/\n error CFA_ACL_NO_SENDER_CREATE(); // 0x4b993136\n error CFA_ACL_NO_SENDER_UPDATE(); // 0xedfa0d3b\n error CFA_ACL_OPERATOR_NO_CREATE_PERMISSIONS(); // 0xa3eab6ac\n error CFA_ACL_OPERATOR_NO_UPDATE_PERMISSIONS(); // 0xac434b5f\n error CFA_ACL_OPERATOR_NO_DELETE_PERMISSIONS(); // 0xe30f1bff\n error CFA_ACL_FLOW_RATE_ALLOWANCE_EXCEEDED(); // 0xa0645c1f\n error CFA_ACL_UNCLEAN_PERMISSIONS(); // 0x7939d66c\n error CFA_ACL_NO_SENDER_FLOW_OPERATOR(); // 0xb0ed394d\n error CFA_ACL_NO_NEGATIVE_ALLOWANCE(); // 0x86e0377d\n error CFA_FLOW_ALREADY_EXISTS(); // 0x801b6863\n error CFA_FLOW_DOES_NOT_EXIST(); // 0x5a32bf24\n error CFA_INSUFFICIENT_BALANCE(); // 0xea76c9b3\n error CFA_ZERO_ADDRESS_SENDER(); // 0x1ce9b067\n error CFA_ZERO_ADDRESS_RECEIVER(); // 0x78e02b2a\n error CFA_HOOK_OUT_OF_GAS(); // 0x9f76430b\n error CFA_DEPOSIT_TOO_BIG(); // 0x752c2b9c\n error CFA_FLOW_RATE_TOO_BIG(); // 0x0c9c55c1\n error CFA_NON_CRITICAL_SENDER(); // 0xce11b5d1\n error CFA_INVALID_FLOW_RATE(); // 0x91acad16\n error CFA_NO_SELF_FLOW(); // 0xa47338ef\n\n /// @dev ISuperAgreement.agreementType implementation\n function agreementType() external override pure returns (bytes32) {\n return keccak256(\"org.superfluid-finance.agreements.ConstantFlowAgreement.v1\");\n }\n\n /**\n * @notice Get the maximum flow rate allowed with the deposit\n * @dev The deposit is clipped and rounded down\n * @param deposit Deposit amount used for creating the flow\n * @return flowRate The maximum flow rate\n */\n function getMaximumFlowRateFromDeposit(\n ISuperfluidToken token,\n uint256 deposit)\n external view virtual\n returns (int96 flowRate);\n\n /**\n * @notice Get the deposit required for creating the flow\n * @dev Calculates the deposit based on the liquidationPeriod and flowRate\n * @param flowRate Flow rate to be tested\n * @return deposit The deposit amount based on flowRate and liquidationPeriod\n * @custom:note \n * - if calculated deposit (flowRate * liquidationPeriod) is less\n * than the minimum deposit, we use the minimum deposit otherwise\n * we use the calculated deposit\n */\n function getDepositRequiredForFlowRate(\n ISuperfluidToken token,\n int96 flowRate)\n external view virtual\n returns (uint256 deposit);\n\n /**\n * @dev Returns whether it is the patrician period based on host.getNow()\n * @param account The account we are interested in\n * @return isCurrentlyPatricianPeriod Whether it is currently the patrician period dictated by governance\n * @return timestamp The value of host.getNow()\n */\n function isPatricianPeriodNow(\n ISuperfluidToken token,\n address account)\n external view virtual\n returns (bool isCurrentlyPatricianPeriod, uint256 timestamp);\n\n /**\n * @dev Returns whether it is the patrician period based on timestamp\n * @param account The account we are interested in\n * @param timestamp The timestamp we are interested in observing the result of isPatricianPeriod\n * @return bool Whether it is currently the patrician period dictated by governance\n */\n function isPatricianPeriod(\n ISuperfluidToken token,\n address account,\n uint256 timestamp\n )\n public view virtual\n returns (bool);\n\n /**\n * @dev msgSender from `ctx` updates permissions for the `flowOperator` with `flowRateAllowance`\n * @param token Super token address\n * @param flowOperator The permission grantee address\n * @param permissions A bitmask representation of the granted permissions\n * @param flowRateAllowance The flow rate allowance the `flowOperator` is granted (only goes down)\n * @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n */\n function updateFlowOperatorPermissions(\n ISuperfluidToken token,\n address flowOperator,\n uint8 permissions,\n int96 flowRateAllowance,\n bytes calldata ctx\n ) \n external virtual\n returns(bytes memory newCtx);\n\n /**\n * @notice msgSender from `ctx` increases flow rate allowance for the `flowOperator` by `addedFlowRateAllowance`\n * @dev if `addedFlowRateAllowance` is negative, we revert with CFA_ACL_NO_NEGATIVE_ALLOWANCE\n * @param token Super token address\n * @param flowOperator The permission grantee address\n * @param addedFlowRateAllowance The flow rate allowance delta\n * @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n * @return newCtx The new context bytes\n */\n function increaseFlowRateAllowance(\n ISuperfluidToken token,\n address flowOperator,\n int96 addedFlowRateAllowance,\n bytes calldata ctx\n ) external virtual returns(bytes memory newCtx);\n\n /**\n * @dev msgSender from `ctx` decreases flow rate allowance for the `flowOperator` by `subtractedFlowRateAllowance`\n * @dev if `subtractedFlowRateAllowance` is negative, we revert with CFA_ACL_NO_NEGATIVE_ALLOWANCE\n * @param token Super token address\n * @param flowOperator The permission grantee address\n * @param subtractedFlowRateAllowance The flow rate allowance delta\n * @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n * @return newCtx The new context bytes\n */\n function decreaseFlowRateAllowance(\n ISuperfluidToken token,\n address flowOperator,\n int96 subtractedFlowRateAllowance,\n bytes calldata ctx\n ) external virtual returns(bytes memory newCtx);\n\n /**\n * @dev msgSender from `ctx` grants `flowOperator` all permissions with flowRateAllowance as type(int96).max\n * @param token Super token address\n * @param flowOperator The permission grantee address\n * @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n */\n function authorizeFlowOperatorWithFullControl(\n ISuperfluidToken token,\n address flowOperator,\n bytes calldata ctx\n )\n external virtual\n returns(bytes memory newCtx);\n\n /**\n * @notice msgSender from `ctx` revokes `flowOperator` create/update/delete permissions\n * @dev `permissions` and `flowRateAllowance` will both be set to 0\n * @param token Super token address\n * @param flowOperator The permission grantee address\n * @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n */\n function revokeFlowOperatorWithFullControl(\n ISuperfluidToken token,\n address flowOperator,\n bytes calldata ctx\n )\n external virtual\n returns(bytes memory newCtx);\n\n /**\n * @notice Get the permissions of a flow operator between `sender` and `flowOperator` for `token`\n * @param token Super token address\n * @param sender The permission granter address\n * @param flowOperator The permission grantee address\n * @return flowOperatorId The keccak256 hash of encoded string \"flowOperator\", sender and flowOperator\n * @return permissions A bitmask representation of the granted permissions\n * @return flowRateAllowance The flow rate allowance the `flowOperator` is granted (only goes down)\n */\n function getFlowOperatorData(\n ISuperfluidToken token,\n address sender,\n address flowOperator\n )\n public view virtual\n returns (\n bytes32 flowOperatorId,\n uint8 permissions,\n int96 flowRateAllowance\n );\n\n /**\n * @notice Get flow operator using flowOperatorId\n * @param token Super token address\n * @param flowOperatorId The keccak256 hash of encoded string \"flowOperator\", sender and flowOperator\n * @return permissions A bitmask representation of the granted permissions\n * @return flowRateAllowance The flow rate allowance the `flowOperator` is granted (only goes down)\n */\n function getFlowOperatorDataByID(\n ISuperfluidToken token,\n bytes32 flowOperatorId\n )\n external view virtual\n returns (\n uint8 permissions,\n int96 flowRateAllowance\n );\n\n /**\n * @notice Create a flow betwen ctx.msgSender and receiver\n * @dev flowId (agreementId) is the keccak256 hash of encoded sender and receiver\n * @param token Super token address\n * @param receiver Flow receiver address\n * @param flowRate New flow rate in amount per second\n * @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n *\n * @custom:callbacks \n * - AgreementCreated\n * - agreementId - can be used in getFlowByID\n * - agreementData - abi.encode(address flowSender, address flowReceiver)\n *\n * @custom:note \n * - A deposit is taken as safety margin for the solvency agents\n * - A extra gas fee may be taken to pay for solvency agent liquidations\n */\n function createFlow(\n ISuperfluidToken token,\n address receiver,\n int96 flowRate,\n bytes calldata ctx\n )\n external virtual\n returns(bytes memory newCtx);\n\n /**\n * @notice Create a flow between sender and receiver\n * @dev A flow created by an approved flow operator (see above for details on callbacks)\n * @param token Super token address\n * @param sender Flow sender address (has granted permissions)\n * @param receiver Flow receiver address\n * @param flowRate New flow rate in amount per second\n * @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n */\n function createFlowByOperator(\n ISuperfluidToken token,\n address sender,\n address receiver,\n int96 flowRate,\n bytes calldata ctx\n )\n external virtual\n returns(bytes memory newCtx);\n\n /**\n * @notice Update the flow rate between ctx.msgSender and receiver\n * @dev flowId (agreementId) is the keccak256 hash of encoded sender and receiver\n * @param token Super token address\n * @param receiver Flow receiver address\n * @param flowRate New flow rate in amount per second\n * @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n *\n * @custom:callbacks \n * - AgreementUpdated\n * - agreementId - can be used in getFlowByID\n * - agreementData - abi.encode(address flowSender, address flowReceiver)\n *\n * @custom:note \n * - Only the flow sender may update the flow rate\n * - Even if the flow rate is zero, the flow is not deleted\n * from the system\n * - Deposit amount will be adjusted accordingly\n * - No new gas fee is charged\n */\n function updateFlow(\n ISuperfluidToken token,\n address receiver,\n int96 flowRate,\n bytes calldata ctx\n )\n external virtual\n returns(bytes memory newCtx);\n\n /**\n * @notice Update a flow between sender and receiver\n * @dev A flow updated by an approved flow operator (see above for details on callbacks)\n * @param token Super token address\n * @param sender Flow sender address (has granted permissions)\n * @param receiver Flow receiver address\n * @param flowRate New flow rate in amount per second\n * @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n */\n function updateFlowByOperator(\n ISuperfluidToken token,\n address sender,\n address receiver,\n int96 flowRate,\n bytes calldata ctx\n )\n external virtual\n returns(bytes memory newCtx);\n\n /**\n * @dev Get the flow data between `sender` and `receiver` of `token`\n * @param token Super token address\n * @param sender Flow receiver\n * @param receiver Flow sender\n * @return timestamp Timestamp of when the flow is updated\n * @return flowRate The flow rate\n * @return deposit The amount of deposit the flow\n * @return owedDeposit The amount of owed deposit of the flow\n */\n function getFlow(\n ISuperfluidToken token,\n address sender,\n address receiver\n )\n external view virtual\n returns (\n uint256 timestamp,\n int96 flowRate,\n uint256 deposit,\n uint256 owedDeposit\n );\n\n /**\n * @notice Get flow data using agreementId\n * @dev flowId (agreementId) is the keccak256 hash of encoded sender and receiver\n * @param token Super token address\n * @param agreementId The agreement ID\n * @return timestamp Timestamp of when the flow is updated\n * @return flowRate The flow rate\n * @return deposit The deposit amount of the flow\n * @return owedDeposit The owed deposit amount of the flow\n */\n function getFlowByID(\n ISuperfluidToken token,\n bytes32 agreementId\n )\n external view virtual\n returns (\n uint256 timestamp,\n int96 flowRate,\n uint256 deposit,\n uint256 owedDeposit\n );\n\n /**\n * @dev Get the aggregated flow info of the account\n * @param token Super token address\n * @param account Account for the query\n * @return timestamp Timestamp of when a flow was last updated for account\n * @return flowRate The net flow rate of token for account\n * @return deposit The sum of all deposits for account's flows\n * @return owedDeposit The sum of all owed deposits for account's flows\n */\n function getAccountFlowInfo(\n ISuperfluidToken token,\n address account\n )\n external view virtual\n returns (\n uint256 timestamp,\n int96 flowRate,\n uint256 deposit,\n uint256 owedDeposit);\n\n /**\n * @dev Get the net flow rate of the account\n * @param token Super token address\n * @param account Account for the query\n * @return flowRate Net flow rate\n */\n function getNetFlow(\n ISuperfluidToken token,\n address account\n )\n external view virtual\n returns (int96 flowRate);\n\n /**\n * @notice Delete the flow between sender and receiver\n * @dev flowId (agreementId) is the keccak256 hash of encoded sender and receiver\n * @param token Super token address\n * @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n * @param receiver Flow receiver address\n *\n * @custom:callbacks \n * - AgreementTerminated\n * - agreementId - can be used in getFlowByID\n * - agreementData - abi.encode(address flowSender, address flowReceiver)\n *\n * @custom:note \n * - Both flow sender and receiver may delete the flow\n * - If Sender account is insolvent or in critical state, a solvency agent may\n * also terminate the agreement\n * - Gas fee may be returned to the sender\n */\n function deleteFlow(\n ISuperfluidToken token,\n address sender,\n address receiver,\n bytes calldata ctx\n )\n external virtual\n returns(bytes memory newCtx);\n\n /**\n * @notice Delete the flow between sender and receiver\n * @dev A flow deleted by an approved flow operator (see above for details on callbacks)\n * @param token Super token address\n * @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n * @param receiver Flow receiver address\n */\n function deleteFlowByOperator(\n ISuperfluidToken token,\n address sender,\n address receiver,\n bytes calldata ctx\n )\n external virtual\n returns(bytes memory newCtx);\n \n /**\n * @dev Flow operator updated event\n * @param token Super token address\n * @param sender Flow sender address\n * @param flowOperator Flow operator address\n * @param permissions Octo bitmask representation of permissions\n * @param flowRateAllowance The flow rate allowance the `flowOperator` is granted (only goes down)\n */\n event FlowOperatorUpdated(\n ISuperfluidToken indexed token,\n address indexed sender,\n address indexed flowOperator,\n uint8 permissions,\n int96 flowRateAllowance\n );\n\n /**\n * @dev Flow updated event\n * @param token Super token address\n * @param sender Flow sender address\n * @param receiver Flow recipient address\n * @param flowRate Flow rate in amount per second for this flow\n * @param totalSenderFlowRate Total flow rate in amount per second for the sender\n * @param totalReceiverFlowRate Total flow rate in amount per second for the receiver\n * @param userData The user provided data\n *\n */\n event FlowUpdated(\n ISuperfluidToken indexed token,\n address indexed sender,\n address indexed receiver,\n int96 flowRate,\n int256 totalSenderFlowRate,\n int256 totalReceiverFlowRate,\n bytes userData\n );\n\n /**\n * @dev Flow updated extension event\n * @param flowOperator Flow operator address - the Context.msgSender\n * @param deposit The deposit amount for the stream\n */\n event FlowUpdatedExtension(\n address indexed flowOperator,\n uint256 deposit\n );\n}\n"},"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IInstantDistributionAgreementV1.sol":{"content":"// SPDX-License-Identifier: AGPLv3\npragma solidity >= 0.8.4;\n\nimport { ISuperAgreement } from \"../superfluid/ISuperAgreement.sol\";\nimport { ISuperfluidToken } from \"../superfluid/ISuperfluidToken.sol\";\n\n\n/**\n * @title Instant Distribution Agreement interface\n * @author Superfluid\n *\n * @notice \n * - A publisher can create as many as indices as possibly identifiable with `indexId`.\n * - `indexId` is deliberately limited to 32 bits, to avoid the chance for sha-3 collision.\n * Despite knowing sha-3 collision is only theoretical.\n * - A publisher can create a subscription to an index for any subscriber.\n * - A subscription consists of:\n * - The index it subscribes to.\n * - Number of units subscribed.\n * - An index consists of:\n * - Current value as `uint128 indexValue`.\n * - Total units of the approved subscriptions as `uint128 totalUnitsApproved`.\n * - Total units of the non approved subscription as `uint128 totalUnitsPending`.\n * - A publisher can update an index with a new value that doesn't decrease.\n * - A publisher can update a subscription with any number of units.\n * - A publisher or a subscriber can delete a subscription and reset its units to zero.\n * - A subscriber must approve the index in order to receive distributions from the publisher\n * each time the index is updated.\n * - The amount distributed is $$\\Delta{index} * units$$\n * - Distributions to a non approved subscription stays in the publisher's deposit until:\n * - the subscriber approves the subscription (side effect),\n * - the publisher updates the subscription (side effect),\n * - the subscriber deletes the subscription even if it is never approved (side effect),\n * - or the subscriber can explicitly claim them.\n */\nabstract contract IInstantDistributionAgreementV1 is ISuperAgreement {\n\n /**************************************************************************\n * Errors\n *************************************************************************/\n error IDA_INDEX_SHOULD_GROW(); // 0xcfdca725\n error IDA_OPERATION_NOT_ALLOWED(); // 0x92da6d17\n error IDA_INDEX_ALREADY_EXISTS(); // 0x5c02a517\n error IDA_INDEX_DOES_NOT_EXIST(); // 0xedeaa63b\n error IDA_SUBSCRIPTION_DOES_NOT_EXIST(); // 0xb6c8c980\n error IDA_SUBSCRIPTION_ALREADY_APPROVED(); // 0x3eb2f849\n error IDA_SUBSCRIPTION_IS_NOT_APPROVED(); // 0x37412573\n error IDA_INSUFFICIENT_BALANCE(); // 0x16e759bb\n error IDA_ZERO_ADDRESS_SUBSCRIBER(); // 0xc90a4674\n\n /// @dev ISuperAgreement.agreementType implementation\n function agreementType() external override pure returns (bytes32) {\n return keccak256(\"org.superfluid-finance.agreements.InstantDistributionAgreement.v1\");\n }\n\n /**************************************************************************\n * Index operations\n *************************************************************************/\n\n /**\n * @dev Create a new index for the publisher\n * @param token Super token address\n * @param indexId Id of the index\n * @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n *\n * @custom:callbacks \n * None\n */\n function createIndex(\n ISuperfluidToken token,\n uint32 indexId,\n bytes calldata ctx)\n external\n virtual\n returns(bytes memory newCtx);\n /**\n * @dev Index created event\n * @param token Super token address\n * @param publisher Index creator and publisher\n * @param indexId The specified indexId of the newly created index\n * @param userData The user provided data\n */\n event IndexCreated(\n ISuperfluidToken indexed token,\n address indexed publisher,\n uint32 indexed indexId,\n bytes userData);\n\n /**\n * @dev Query the data of a index\n * @param token Super token address\n * @param publisher The publisher of the index\n * @param indexId Id of the index\n * @return exist Does the index exist\n * @return indexValue Value of the current index\n * @return totalUnitsApproved Total units approved for the index\n * @return totalUnitsPending Total units pending approval for the index\n */\n function getIndex(\n ISuperfluidToken token,\n address publisher,\n uint32 indexId)\n external\n view\n virtual\n returns(\n bool exist,\n uint128 indexValue,\n uint128 totalUnitsApproved,\n uint128 totalUnitsPending);\n\n /**\n * @dev Calculate actual distribution amount\n * @param token Super token address\n * @param publisher The publisher of the index\n * @param indexId Id of the index\n * @param amount The amount of tokens desired to be distributed\n * @return actualAmount The amount to be distributed after ensuring no rounding errors\n * @return newIndexValue The index value given the desired amount of tokens to be distributed\n */\n function calculateDistribution(\n ISuperfluidToken token,\n address publisher,\n uint32 indexId,\n uint256 amount)\n external view\n virtual\n returns(\n uint256 actualAmount,\n uint128 newIndexValue);\n\n /**\n * @dev Update index value of an index\n * @param token Super token address\n * @param indexId Id of the index\n * @param indexValue Value of the index\n * @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n *\n * @custom:callbacks \n * None\n */\n function updateIndex(\n ISuperfluidToken token,\n uint32 indexId,\n uint128 indexValue,\n bytes calldata ctx)\n external\n virtual\n returns(bytes memory newCtx);\n /**\n * @dev Index updated event\n * @param token Super token address\n * @param publisher Index updater and publisher\n * @param indexId The specified indexId of the updated index\n * @param oldIndexValue The previous index value\n * @param newIndexValue The updated index value\n * @param totalUnitsPending The total units pending when the indexValue was updated\n * @param totalUnitsApproved The total units approved when the indexValue was updated\n * @param userData The user provided data\n */\n event IndexUpdated(\n ISuperfluidToken indexed token,\n address indexed publisher,\n uint32 indexed indexId,\n uint128 oldIndexValue,\n uint128 newIndexValue,\n uint128 totalUnitsPending,\n uint128 totalUnitsApproved,\n bytes userData);\n\n /**\n * @dev Distribute tokens through the index\n * @param token Super token address\n * @param indexId Id of the index\n * @param amount The amount of tokens desired to be distributed\n * @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n *\n * @custom:note \n * - This is a convenient version of updateIndex. It adds to the index\n * a delta that equals to `amount / totalUnits`\n * - The actual amount distributed could be obtained via\n * `calculateDistribution`. This is due to precision error with index\n * value and units data range\n *\n * @custom:callbacks \n * None\n */\n function distribute(\n ISuperfluidToken token,\n uint32 indexId,\n uint256 amount,\n bytes calldata ctx)\n external\n virtual\n returns(bytes memory newCtx);\n\n\n /**************************************************************************\n * Subscription operations\n *************************************************************************/\n\n /**\n * @dev Approve the subscription of an index\n * @param token Super token address\n * @param publisher The publisher of the index\n * @param indexId Id of the index\n * @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n *\n * @custom:callbacks \n * - if subscription exist\n * - AgreementCreated callback to the publisher:\n * - agreementId is for the subscription\n * - if subscription does not exist\n * - AgreementUpdated callback to the publisher:\n * - agreementId is for the subscription\n */\n function approveSubscription(\n ISuperfluidToken token,\n address publisher,\n uint32 indexId,\n bytes calldata ctx)\n external\n virtual\n returns(bytes memory newCtx);\n /**\n * @dev Index subscribed event\n * @param token Super token address\n * @param publisher Index publisher\n * @param indexId The specified indexId\n * @param subscriber The approved subscriber\n * @param userData The user provided data\n */\n event IndexSubscribed(\n ISuperfluidToken indexed token,\n address indexed publisher,\n uint32 indexed indexId,\n address subscriber,\n bytes userData);\n\n /**\n * @dev Subscription approved event\n * @param token Super token address\n * @param subscriber The approved subscriber\n * @param publisher Index publisher\n * @param indexId The specified indexId\n * @param userData The user provided data\n */\n event SubscriptionApproved(\n ISuperfluidToken indexed token,\n address indexed subscriber,\n address publisher,\n uint32 indexId,\n bytes userData);\n\n /**\n * @notice Revoke the subscription of an index\n * @dev \"Unapproves\" the subscription and moves approved units to pending\n * @param token Super token address\n * @param publisher The publisher of the index\n * @param indexId Id of the index\n * @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n *\n * @custom:callbacks \n * - AgreementUpdated callback to the publisher:\n * - agreementId is for the subscription\n */\n function revokeSubscription(\n ISuperfluidToken token,\n address publisher,\n uint32 indexId,\n bytes calldata ctx)\n external\n virtual\n returns(bytes memory newCtx);\n /**\n * @dev Index unsubscribed event\n * @param token Super token address\n * @param publisher Index publisher\n * @param indexId The specified indexId\n * @param subscriber The unsubscribed subscriber\n * @param userData The user provided data\n */\n event IndexUnsubscribed(\n ISuperfluidToken indexed token,\n address indexed publisher,\n uint32 indexed indexId,\n address subscriber,\n bytes userData);\n \n /**\n * @dev Subscription approved event\n * @param token Super token address\n * @param subscriber The approved subscriber\n * @param publisher Index publisher\n * @param indexId The specified indexId\n * @param userData The user provided data\n */\n event SubscriptionRevoked(\n ISuperfluidToken indexed token,\n address indexed subscriber,\n address publisher,\n uint32 indexId,\n bytes userData);\n\n /**\n * @dev Update the nuber of units of a subscription\n * @param token Super token address\n * @param indexId Id of the index\n * @param subscriber The subscriber of the index\n * @param units Number of units of the subscription\n * @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n *\n * @custom:callbacks \n * - if subscription exist\n * - AgreementCreated callback to the subscriber:\n * - agreementId is for the subscription\n * - if subscription does not exist\n * - AgreementUpdated callback to the subscriber:\n * - agreementId is for the subscription\n */\n function updateSubscription(\n ISuperfluidToken token,\n uint32 indexId,\n address subscriber,\n uint128 units,\n bytes calldata ctx)\n external\n virtual\n returns(bytes memory newCtx);\n\n /**\n * @dev Index units updated event\n * @param token Super token address\n * @param publisher Index publisher\n * @param indexId The specified indexId\n * @param subscriber The subscriber units updated\n * @param units The new units amount\n * @param userData The user provided data\n */\n event IndexUnitsUpdated(\n ISuperfluidToken indexed token,\n address indexed publisher,\n uint32 indexed indexId,\n address subscriber,\n uint128 units,\n bytes userData);\n \n /**\n * @dev Subscription units updated event\n * @param token Super token address\n * @param subscriber The subscriber units updated\n * @param indexId The specified indexId\n * @param publisher Index publisher\n * @param units The new units amount\n * @param userData The user provided data\n */\n event SubscriptionUnitsUpdated(\n ISuperfluidToken indexed token,\n address indexed subscriber,\n address publisher,\n uint32 indexId,\n uint128 units,\n bytes userData);\n\n /**\n * @dev Get data of a subscription\n * @param token Super token address\n * @param publisher The publisher of the index\n * @param indexId Id of the index\n * @param subscriber The subscriber of the index\n * @return exist Does the subscription exist?\n * @return approved Is the subscription approved?\n * @return units Units of the suscription\n * @return pendingDistribution Pending amount of tokens to be distributed for unapproved subscription\n */\n function getSubscription(\n ISuperfluidToken token,\n address publisher,\n uint32 indexId,\n address subscriber)\n external\n view\n virtual\n returns(\n bool exist,\n bool approved,\n uint128 units,\n uint256 pendingDistribution\n );\n\n /**\n * @notice Get data of a subscription by agreement ID\n * @dev indexId (agreementId) is the keccak256 hash of encodePacked(\"publisher\", publisher, indexId)\n * @param token Super token address\n * @param agreementId The agreement ID\n * @return publisher The publisher of the index\n * @return indexId Id of the index\n * @return approved Is the subscription approved?\n * @return units Units of the suscription\n * @return pendingDistribution Pending amount of tokens to be distributed for unapproved subscription\n */\n function getSubscriptionByID(\n ISuperfluidToken token,\n bytes32 agreementId)\n external\n view\n virtual\n returns(\n address publisher,\n uint32 indexId,\n bool approved,\n uint128 units,\n uint256 pendingDistribution\n );\n\n /**\n * @dev List subscriptions of an user\n * @param token Super token address\n * @param subscriber The subscriber's address\n * @return publishers Publishers of the subcriptions\n * @return indexIds Indexes of the subscriptions\n * @return unitsList Units of the subscriptions\n */\n function listSubscriptions(\n ISuperfluidToken token,\n address subscriber)\n external\n view\n virtual\n returns(\n address[] memory publishers,\n uint32[] memory indexIds,\n uint128[] memory unitsList);\n\n /**\n * @dev Delete the subscription of an user\n * @param token Super token address\n * @param publisher The publisher of the index\n * @param indexId Id of the index\n * @param subscriber The subscriber's address\n * @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n *\n * @custom:callbacks \n * - if the subscriber called it\n * - AgreementTerminated callback to the publsiher:\n * - agreementId is for the subscription\n * - if the publisher called it\n * - AgreementTerminated callback to the subscriber:\n * - agreementId is for the subscription\n */\n function deleteSubscription(\n ISuperfluidToken token,\n address publisher,\n uint32 indexId,\n address subscriber,\n bytes calldata ctx)\n external\n virtual\n returns(bytes memory newCtx);\n\n /**\n * @dev Claim pending distributions\n * @param token Super token address\n * @param publisher The publisher of the index\n * @param indexId Id of the index\n * @param subscriber The subscriber's address\n * @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n *\n * @custom:note The subscription should not be approved yet\n *\n * @custom:callbacks \n * - AgreementUpdated callback to the publisher:\n * - agreementId is for the subscription\n */\n function claim(\n ISuperfluidToken token,\n address publisher,\n uint32 indexId,\n address subscriber,\n bytes calldata ctx)\n external\n virtual\n returns(bytes memory newCtx);\n \n /**\n * @dev Index distribution claimed event\n * @param token Super token address\n * @param publisher Index publisher\n * @param indexId The specified indexId\n * @param subscriber The subscriber units updated\n * @param amount The pending amount claimed\n */\n event IndexDistributionClaimed(\n ISuperfluidToken indexed token,\n address indexed publisher,\n uint32 indexed indexId,\n address subscriber,\n uint256 amount);\n \n /**\n * @dev Subscription distribution claimed event\n * @param token Super token address\n * @param subscriber The subscriber units updated\n * @param publisher Index publisher\n * @param indexId The specified indexId\n * @param amount The pending amount claimed\n */\n event SubscriptionDistributionClaimed(\n ISuperfluidToken indexed token,\n address indexed subscriber,\n address publisher,\n uint32 indexId,\n uint256 amount);\n\n}\n"},"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol":{"content":"// SPDX-License-Identifier: AGPLv3\npragma solidity >= 0.8.4;\n\n/**\n * @title Super app definitions library\n * @author Superfluid\n */\nlibrary SuperAppDefinitions {\n\n /**************************************************************************\n / App manifest config word\n /**************************************************************************/\n\n /*\n * App level is a way to allow the app to whitelist what other app it can\n * interact with (aka. composite app feature).\n *\n * For more details, refer to the technical paper of superfluid protocol.\n */\n uint256 constant internal APP_LEVEL_MASK = 0xFF;\n\n // The app is at the final level, hence it doesn't want to interact with any other app\n uint256 constant internal APP_LEVEL_FINAL = 1 << 0;\n\n // The app is at the second level, it may interact with other final level apps if whitelisted\n uint256 constant internal APP_LEVEL_SECOND = 1 << 1;\n\n function getAppCallbackLevel(uint256 configWord) internal pure returns (uint8) {\n return uint8(configWord & APP_LEVEL_MASK);\n }\n\n uint256 constant internal APP_JAIL_BIT = 1 << 15;\n function isAppJailed(uint256 configWord) internal pure returns (bool) {\n return (configWord & SuperAppDefinitions.APP_JAIL_BIT) > 0;\n }\n\n /**************************************************************************\n / Callback implementation bit masks\n /**************************************************************************/\n uint256 constant internal AGREEMENT_CALLBACK_NOOP_BITMASKS = 0xFF << 32;\n uint256 constant internal BEFORE_AGREEMENT_CREATED_NOOP = 1 << (32 + 0);\n uint256 constant internal AFTER_AGREEMENT_CREATED_NOOP = 1 << (32 + 1);\n uint256 constant internal BEFORE_AGREEMENT_UPDATED_NOOP = 1 << (32 + 2);\n uint256 constant internal AFTER_AGREEMENT_UPDATED_NOOP = 1 << (32 + 3);\n uint256 constant internal BEFORE_AGREEMENT_TERMINATED_NOOP = 1 << (32 + 4);\n uint256 constant internal AFTER_AGREEMENT_TERMINATED_NOOP = 1 << (32 + 5);\n\n /**************************************************************************\n / App Jail Reasons\n /**************************************************************************/\n\n uint256 constant internal APP_RULE_REGISTRATION_ONLY_IN_CONSTRUCTOR = 1;\n uint256 constant internal APP_RULE_NO_REGISTRATION_FOR_EOA = 2;\n uint256 constant internal APP_RULE_NO_REVERT_ON_TERMINATION_CALLBACK = 10;\n uint256 constant internal APP_RULE_NO_CRITICAL_SENDER_ACCOUNT = 11;\n uint256 constant internal APP_RULE_NO_CRITICAL_RECEIVER_ACCOUNT = 12;\n uint256 constant internal APP_RULE_CTX_IS_READONLY = 20;\n uint256 constant internal APP_RULE_CTX_IS_NOT_CLEAN = 21;\n uint256 constant internal APP_RULE_CTX_IS_MALFORMATED = 22;\n uint256 constant internal APP_RULE_COMPOSITE_APP_IS_NOT_WHITELISTED = 30;\n uint256 constant internal APP_RULE_COMPOSITE_APP_IS_JAILED = 31;\n uint256 constant internal APP_RULE_MAX_APP_LEVEL_REACHED = 40;\n\n // Validate configWord cleaness for future compatibility, or else may introduce undefined future behavior\n function isConfigWordClean(uint256 configWord) internal pure returns (bool) {\n return (configWord & ~(APP_LEVEL_MASK | APP_JAIL_BIT | AGREEMENT_CALLBACK_NOOP_BITMASKS)) == uint256(0);\n }\n}\n\n/**\n * @title Context definitions library\n * @author Superfluid\n */\nlibrary ContextDefinitions {\n\n /**************************************************************************\n / Call info\n /**************************************************************************/\n\n // app level\n uint256 constant internal CALL_INFO_APP_LEVEL_MASK = 0xFF;\n\n // call type\n uint256 constant internal CALL_INFO_CALL_TYPE_SHIFT = 32;\n uint256 constant internal CALL_INFO_CALL_TYPE_MASK = 0xF << CALL_INFO_CALL_TYPE_SHIFT;\n uint8 constant internal CALL_INFO_CALL_TYPE_AGREEMENT = 1;\n uint8 constant internal CALL_INFO_CALL_TYPE_APP_ACTION = 2;\n uint8 constant internal CALL_INFO_CALL_TYPE_APP_CALLBACK = 3;\n\n function decodeCallInfo(uint256 callInfo)\n internal pure\n returns (uint8 appCallbackLevel, uint8 callType)\n {\n appCallbackLevel = uint8(callInfo & CALL_INFO_APP_LEVEL_MASK);\n callType = uint8((callInfo & CALL_INFO_CALL_TYPE_MASK) >> CALL_INFO_CALL_TYPE_SHIFT);\n }\n\n function encodeCallInfo(uint8 appCallbackLevel, uint8 callType)\n internal pure\n returns (uint256 callInfo)\n {\n return uint256(appCallbackLevel) | (uint256(callType) << CALL_INFO_CALL_TYPE_SHIFT);\n }\n\n}\n\n/**\n * @title Flow Operator definitions library\n * @author Superfluid\n */\n library FlowOperatorDefinitions {\n uint8 constant internal AUTHORIZE_FLOW_OPERATOR_CREATE = uint8(1) << 0;\n uint8 constant internal AUTHORIZE_FLOW_OPERATOR_UPDATE = uint8(1) << 1;\n uint8 constant internal AUTHORIZE_FLOW_OPERATOR_DELETE = uint8(1) << 2;\n uint8 constant internal AUTHORIZE_FULL_CONTROL =\n AUTHORIZE_FLOW_OPERATOR_CREATE | AUTHORIZE_FLOW_OPERATOR_UPDATE | AUTHORIZE_FLOW_OPERATOR_DELETE;\n uint8 constant internal REVOKE_FLOW_OPERATOR_CREATE = ~(uint8(1) << 0);\n uint8 constant internal REVOKE_FLOW_OPERATOR_UPDATE = ~(uint8(1) << 1);\n uint8 constant internal REVOKE_FLOW_OPERATOR_DELETE = ~(uint8(1) << 2);\n\n function isPermissionsClean(uint8 permissions) internal pure returns (bool) {\n return (\n permissions & ~(AUTHORIZE_FLOW_OPERATOR_CREATE\n | AUTHORIZE_FLOW_OPERATOR_UPDATE\n | AUTHORIZE_FLOW_OPERATOR_DELETE)\n ) == uint8(0);\n }\n }\n\n/**\n * @title Batch operation library\n * @author Superfluid\n */\nlibrary BatchOperation {\n /**\n * @dev ERC20.approve batch operation type\n *\n * Call spec:\n * ISuperToken(target).operationApprove(\n * abi.decode(data, (address spender, uint256 amount))\n * )\n */\n uint32 constant internal OPERATION_TYPE_ERC20_APPROVE = 1;\n /**\n * @dev ERC20.transferFrom batch operation type\n *\n * Call spec:\n * ISuperToken(target).operationTransferFrom(\n * abi.decode(data, (address sender, address recipient, uint256 amount)\n * )\n */\n uint32 constant internal OPERATION_TYPE_ERC20_TRANSFER_FROM = 2;\n /**\n * @dev ERC777.send batch operation type\n *\n * Call spec:\n * ISuperToken(target).operationSend(\n * abi.decode(data, (address recipient, uint256 amount, bytes userData)\n * )\n */\n uint32 constant internal OPERATION_TYPE_ERC777_SEND = 3;\n /**\n * @dev ERC20.increaseAllowance batch operation type\n *\n * Call spec:\n * ISuperToken(target).operationIncreaseAllowance(\n * abi.decode(data, (address account, address spender, uint256 addedValue))\n * )\n */\n uint32 constant internal OPERATION_TYPE_ERC20_INCREASE_ALLOWANCE = 4;\n /**\n * @dev ERC20.decreaseAllowance batch operation type\n *\n * Call spec:\n * ISuperToken(target).operationDecreaseAllowance(\n * abi.decode(data, (address account, address spender, uint256 subtractedValue))\n * )\n */\n uint32 constant internal OPERATION_TYPE_ERC20_DECREASE_ALLOWANCE = 5;\n /**\n * @dev SuperToken.upgrade batch operation type\n *\n * Call spec:\n * ISuperToken(target).operationUpgrade(\n * abi.decode(data, (uint256 amount)\n * )\n */\n uint32 constant internal OPERATION_TYPE_SUPERTOKEN_UPGRADE = 1 + 100;\n /**\n * @dev SuperToken.downgrade batch operation type\n *\n * Call spec:\n * ISuperToken(target).operationDowngrade(\n * abi.decode(data, (uint256 amount)\n * )\n */\n uint32 constant internal OPERATION_TYPE_SUPERTOKEN_DOWNGRADE = 2 + 100;\n /**\n * @dev Superfluid.callAgreement batch operation type\n *\n * Call spec:\n * callAgreement(\n * ISuperAgreement(target)),\n * abi.decode(data, (bytes callData, bytes userData)\n * )\n */\n uint32 constant internal OPERATION_TYPE_SUPERFLUID_CALL_AGREEMENT = 1 + 200;\n /**\n * @dev Superfluid.callAppAction batch operation type\n *\n * Call spec:\n * callAppAction(\n * ISuperApp(target)),\n * data\n * )\n */\n uint32 constant internal OPERATION_TYPE_SUPERFLUID_CALL_APP_ACTION = 2 + 200;\n}\n\n/**\n * @title Superfluid governance configs library\n * @author Superfluid\n */\nlibrary SuperfluidGovernanceConfigs {\n\n bytes32 constant internal SUPERFLUID_REWARD_ADDRESS_CONFIG_KEY =\n keccak256(\"org.superfluid-finance.superfluid.rewardAddress\");\n bytes32 constant internal CFAV1_PPP_CONFIG_KEY =\n keccak256(\"org.superfluid-finance.agreements.ConstantFlowAgreement.v1.PPPConfiguration\");\n bytes32 constant internal SUPERTOKEN_MINIMUM_DEPOSIT_KEY =\n keccak256(\"org.superfluid-finance.superfluid.superTokenMinimumDeposit\");\n\n function getTrustedForwarderConfigKey(address forwarder) internal pure returns (bytes32) {\n return keccak256(abi.encode(\n \"org.superfluid-finance.superfluid.trustedForwarder\",\n forwarder));\n }\n\n function getAppRegistrationConfigKey(address deployer, string memory registrationKey) internal pure returns (bytes32) {\n return keccak256(abi.encode(\n \"org.superfluid-finance.superfluid.appWhiteListing.registrationKey\",\n deployer,\n registrationKey));\n }\n\n function getAppFactoryConfigKey(address factory) internal pure returns (bytes32) {\n return keccak256(abi.encode(\n \"org.superfluid-finance.superfluid.appWhiteListing.factory\",\n factory));\n }\n\n function decodePPPConfig(uint256 pppConfig) internal pure returns (uint256 liquidationPeriod, uint256 patricianPeriod) {\n liquidationPeriod = (pppConfig >> 32) & type(uint32).max;\n patricianPeriod = pppConfig & type(uint32).max;\n }\n}\n"},"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol":{"content":"// SPDX-License-Identifier: AGPLv3\npragma solidity >= 0.8.4;\n\nimport { ISuperfluidToken } from \"./ISuperfluidToken.sol\";\n\n/**\n * @title Super agreement interface\n * @author Superfluid\n */\ninterface ISuperAgreement {\n\n /**\n * @dev Get the type of the agreement class\n */\n function agreementType() external view returns (bytes32);\n\n /**\n * @dev Calculate the real-time balance for the account of this agreement class\n * @param account Account the state belongs to\n * @param time Time used for the calculation\n * @return dynamicBalance Dynamic balance portion of real-time balance of this agreement\n * @return deposit Account deposit amount of this agreement\n * @return owedDeposit Account owed deposit amount of this agreement\n */\n function realtimeBalanceOf(\n ISuperfluidToken token,\n address account,\n uint256 time\n )\n external\n view\n returns (\n int256 dynamicBalance,\n uint256 deposit,\n uint256 owedDeposit\n );\n\n}\n"},"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperApp.sol":{"content":"// SPDX-License-Identifier: AGPLv3\npragma solidity >= 0.8.4;\n\nimport { ISuperToken } from \"./ISuperToken.sol\";\n\n/**\n * @title SuperApp interface\n * @author Superfluid\n * @dev Be aware of the app being jailed, when the word permitted is used.\n */\ninterface ISuperApp {\n\n /**\n * @dev Callback before a new agreement is created.\n * @param superToken The super token used for the agreement.\n * @param agreementClass The agreement class address.\n * @param agreementId The agreementId\n * @param agreementData The agreement data (non-compressed)\n * @param ctx The context data.\n * @return cbdata A free format in memory data the app can use to pass\n * arbitary information to the after-hook callback.\n *\n * @custom:note \n * - It will be invoked with `staticcall`, no state changes are permitted.\n * - Only revert with a \"reason\" is permitted.\n */\n function beforeAgreementCreated(\n ISuperToken superToken,\n address agreementClass,\n bytes32 agreementId,\n bytes calldata agreementData,\n bytes calldata ctx\n )\n external\n view\n returns (bytes memory cbdata);\n\n /**\n * @dev Callback after a new agreement is created.\n * @param superToken The super token used for the agreement.\n * @param agreementClass The agreement class address.\n * @param agreementId The agreementId\n * @param agreementData The agreement data (non-compressed)\n * @param cbdata The data returned from the before-hook callback.\n * @param ctx The context data.\n * @return newCtx The current context of the transaction.\n *\n * @custom:note \n * - State changes is permitted.\n * - Only revert with a \"reason\" is permitted.\n */\n function afterAgreementCreated(\n ISuperToken superToken,\n address agreementClass,\n bytes32 agreementId,\n bytes calldata agreementData,\n bytes calldata cbdata,\n bytes calldata ctx\n )\n external\n returns (bytes memory newCtx);\n\n /**\n * @dev Callback before a new agreement is updated.\n * @param superToken The super token used for the agreement.\n * @param agreementClass The agreement class address.\n * @param agreementId The agreementId\n * @param agreementData The agreement data (non-compressed)\n * @param ctx The context data.\n * @return cbdata A free format in memory data the app can use to pass\n * arbitary information to the after-hook callback.\n *\n * @custom:note \n * - It will be invoked with `staticcall`, no state changes are permitted.\n * - Only revert with a \"reason\" is permitted.\n */\n function beforeAgreementUpdated(\n ISuperToken superToken,\n address agreementClass,\n bytes32 agreementId,\n bytes calldata agreementData,\n bytes calldata ctx\n )\n external\n view\n returns (bytes memory cbdata);\n\n\n /**\n * @dev Callback after a new agreement is updated.\n * @param superToken The super token used for the agreement.\n * @param agreementClass The agreement class address.\n * @param agreementId The agreementId\n * @param agreementData The agreement data (non-compressed)\n * @param cbdata The data returned from the before-hook callback.\n * @param ctx The context data.\n * @return newCtx The current context of the transaction.\n *\n * @custom:note \n * - State changes is permitted.\n * - Only revert with a \"reason\" is permitted.\n */\n function afterAgreementUpdated(\n ISuperToken superToken,\n address agreementClass,\n bytes32 agreementId,\n bytes calldata agreementData,\n bytes calldata cbdata,\n bytes calldata ctx\n )\n external\n returns (bytes memory newCtx);\n\n /**\n * @dev Callback before a new agreement is terminated.\n * @param superToken The super token used for the agreement.\n * @param agreementClass The agreement class address.\n * @param agreementId The agreementId\n * @param agreementData The agreement data (non-compressed)\n * @param ctx The context data.\n * @return cbdata A free format in memory data the app can use to pass arbitary information to the after-hook callback.\n *\n * @custom:note \n * - It will be invoked with `staticcall`, no state changes are permitted.\n * - Revert is not permitted.\n */\n function beforeAgreementTerminated(\n ISuperToken superToken,\n address agreementClass,\n bytes32 agreementId,\n bytes calldata agreementData,\n bytes calldata ctx\n )\n external\n view\n returns (bytes memory cbdata);\n\n /**\n * @dev Callback after a new agreement is terminated.\n * @param superToken The super token used for the agreement.\n * @param agreementClass The agreement class address.\n * @param agreementId The agreementId\n * @param agreementData The agreement data (non-compressed)\n * @param cbdata The data returned from the before-hook callback.\n * @param ctx The context data.\n * @return newCtx The current context of the transaction.\n *\n * @custom:note \n * - State changes is permitted.\n * - Revert is not permitted.\n */\n function afterAgreementTerminated(\n ISuperToken superToken,\n address agreementClass,\n bytes32 agreementId,\n bytes calldata agreementData,\n bytes calldata cbdata,\n bytes calldata ctx\n )\n external\n returns (bytes memory newCtx);\n}\n"},"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol":{"content":"// SPDX-License-Identifier: AGPLv3\npragma solidity >= 0.8.4;\n\nimport { ISuperfluidGovernance } from \"./ISuperfluidGovernance.sol\";\nimport { ISuperfluidToken } from \"./ISuperfluidToken.sol\";\nimport { ISuperToken } from \"./ISuperToken.sol\";\nimport { ISuperTokenFactory } from \"./ISuperTokenFactory.sol\";\nimport { ISuperAgreement } from \"./ISuperAgreement.sol\";\nimport { ISuperApp } from \"./ISuperApp.sol\";\nimport {\n BatchOperation,\n ContextDefinitions,\n FlowOperatorDefinitions,\n SuperAppDefinitions,\n SuperfluidGovernanceConfigs\n} from \"./Definitions.sol\";\nimport { TokenInfo } from \"../tokens/TokenInfo.sol\";\nimport { IERC20 } from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport { IERC777 } from \"@openzeppelin/contracts/token/ERC777/IERC777.sol\";\n\n/**\n * @title Host interface\n * @author Superfluid\n * @notice This is the central contract of the system where super agreement, super app\n * and super token features are connected.\n *\n * The Superfluid host contract is also the entry point for the protocol users,\n * where batch call and meta transaction are provided for UX improvements.\n *\n */\ninterface ISuperfluid {\n\n /**************************************************************************\n * Errors\n *************************************************************************/\n // Superfluid Custom Errors\n error HOST_AGREEMENT_CALLBACK_IS_NOT_ACTION(); // 0xef4295f6\n error HOST_CANNOT_DOWNGRADE_TO_NON_UPGRADEABLE(); // 0x474e7641\n error HOST_CALL_AGREEMENT_WITH_CTX_FROM_WRONG_ADDRESS(); // 0x0cd0ebc2\n error HOST_CALL_APP_ACTION_WITH_CTX_FROM_WRONG_ADDRESS(); // 0x473f7bd4\n error HOST_INVALID_CONFIG_WORD(); // 0xf4c802a4\n error HOST_MAX_256_AGREEMENTS(); // 0x7c281a78\n error HOST_NON_UPGRADEABLE(); // 0x14f72c9f\n error HOST_NON_ZERO_LENGTH_PLACEHOLDER_CTX(); // 0x67e9985b\n error HOST_ONLY_GOVERNANCE(); // 0xc5d22a4e\n error HOST_UNKNOWN_BATCH_CALL_OPERATION_TYPE(); // 0xb4770115\n error HOST_AGREEMENT_ALREADY_REGISTERED(); // 0xdc9ddba8\n error HOST_AGREEMENT_IS_NOT_REGISTERED(); // 0x1c9e9bea\n error HOST_MUST_BE_CONTRACT(); // 0xd4f6b30c\n error HOST_ONLY_LISTED_AGREEMENT(); // 0x619c5359\n\n // App Related Custom Errors\n // uses SuperAppDefinitions' App Jail Reasons as _code\n error APP_RULE(uint256 _code); // 0xa85ba64f\n\n error HOST_INVALID_OR_EXPIRED_SUPER_APP_REGISTRATION_KEY(); // 0x19ab84d1\n error HOST_NOT_A_SUPER_APP(); // 0x163cbe43\n error HOST_NO_APP_REGISTRATION_PERMISSIONS(); // 0x5b93ebf0\n error HOST_RECEIVER_IS_NOT_SUPER_APP(); // 0x96aa315e\n error HOST_SENDER_IS_NOT_SUPER_APP(); // 0xbacfdc40\n error HOST_SOURCE_APP_NEEDS_HIGHER_APP_LEVEL(); // 0x44725270\n error HOST_SUPER_APP_IS_JAILED(); // 0x02384b64\n error HOST_SUPER_APP_ALREADY_REGISTERED(); // 0x01b0a935\n error HOST_UNAUTHORIZED_SUPER_APP_FACTORY(); // 0x289533c5\n\n /**************************************************************************\n * Time\n *\n * > The Oracle: You have the sight now, Neo. You are looking at the world without time.\n * > Neo: Then why can't I see what happens to her?\n * > The Oracle: We can never see past the choices we don't understand.\n * > - The Oracle and Neo conversing about the future of Trinity and the effects of Neo's choices\n *************************************************************************/\n\n function getNow() external view returns (uint256);\n\n /**************************************************************************\n * Governance\n *************************************************************************/\n\n /**\n * @dev Get the current governance address of the Superfluid host\n */\n function getGovernance() external view returns(ISuperfluidGovernance governance);\n\n /**\n * @dev Replace the current governance with a new one\n */\n function replaceGovernance(ISuperfluidGovernance newGov) external;\n /**\n * @dev Governance replaced event\n * @param oldGov Address of the old governance contract\n * @param newGov Address of the new governance contract\n */\n event GovernanceReplaced(ISuperfluidGovernance oldGov, ISuperfluidGovernance newGov);\n\n /**************************************************************************\n * Agreement Whitelisting\n *************************************************************************/\n\n /**\n * @dev Register a new agreement class to the system\n * @param agreementClassLogic Initial agreement class code\n *\n * @custom:modifiers \n * - onlyGovernance\n */\n function registerAgreementClass(ISuperAgreement agreementClassLogic) external;\n /**\n * @notice Agreement class registered event\n * @dev agreementType is the keccak256 hash of: \"org.superfluid-finance.agreements..\"\n * @param agreementType The agreement type registered\n * @param code Address of the new agreement\n */\n event AgreementClassRegistered(bytes32 agreementType, address code);\n\n /**\n * @dev Update code of an agreement class\n * @param agreementClassLogic New code for the agreement class\n *\n * @custom:modifiers \n * - onlyGovernance\n */\n function updateAgreementClass(ISuperAgreement agreementClassLogic) external;\n /**\n * @notice Agreement class updated event\n * @dev agreementType is the keccak256 hash of: \"org.superfluid-finance.agreements..\"\n * @param agreementType The agreement type updated\n * @param code Address of the new agreement\n */\n event AgreementClassUpdated(bytes32 agreementType, address code);\n\n /**\n * @notice Check if the agreement type is whitelisted\n * @dev agreementType is the keccak256 hash of: \"org.superfluid-finance.agreements..\"\n */\n function isAgreementTypeListed(bytes32 agreementType) external view returns(bool yes);\n\n /**\n * @dev Check if the agreement class is whitelisted\n */\n function isAgreementClassListed(ISuperAgreement agreementClass) external view returns(bool yes);\n\n /**\n * @notice Get agreement class\n * @dev agreementType is the keccak256 hash of: \"org.superfluid-finance.agreements..\"\n */\n function getAgreementClass(bytes32 agreementType) external view returns(ISuperAgreement agreementClass);\n\n /**\n * @dev Map list of the agreement classes using a bitmap\n * @param bitmap Agreement class bitmap\n */\n function mapAgreementClasses(uint256 bitmap)\n external view\n returns (ISuperAgreement[] memory agreementClasses);\n\n /**\n * @notice Create a new bitmask by adding a agreement class to it\n * @dev agreementType is the keccak256 hash of: \"org.superfluid-finance.agreements..\"\n * @param bitmap Agreement class bitmap\n */\n function addToAgreementClassesBitmap(uint256 bitmap, bytes32 agreementType)\n external view\n returns (uint256 newBitmap);\n\n /**\n * @notice Create a new bitmask by removing a agreement class from it\n * @dev agreementType is the keccak256 hash of: \"org.superfluid-finance.agreements..\"\n * @param bitmap Agreement class bitmap\n */\n function removeFromAgreementClassesBitmap(uint256 bitmap, bytes32 agreementType)\n external view\n returns (uint256 newBitmap);\n\n /**************************************************************************\n * Super Token Factory\n **************************************************************************/\n\n /**\n * @dev Get the super token factory\n * @return factory The factory\n */\n function getSuperTokenFactory() external view returns (ISuperTokenFactory factory);\n\n /**\n * @dev Get the super token factory logic (applicable to upgradable deployment)\n * @return logic The factory logic\n */\n function getSuperTokenFactoryLogic() external view returns (address logic);\n\n /**\n * @dev Update super token factory\n * @param newFactory New factory logic\n */\n function updateSuperTokenFactory(ISuperTokenFactory newFactory) external;\n /**\n * @dev SuperToken factory updated event\n * @param newFactory Address of the new factory\n */\n event SuperTokenFactoryUpdated(ISuperTokenFactory newFactory);\n\n /**\n * @notice Update the super token logic to the latest\n * @dev Refer to ISuperTokenFactory.Upgradability for expected behaviours\n */\n function updateSuperTokenLogic(ISuperToken token) external;\n /**\n * @dev SuperToken logic updated event\n * @param code Address of the new SuperToken logic\n */\n event SuperTokenLogicUpdated(ISuperToken indexed token, address code);\n\n /**************************************************************************\n * App Registry\n *************************************************************************/\n\n /**\n * @dev Message sender (must be a contract) declares itself as a super app.\n * @custom:deprecated you should use `registerAppWithKey` or `registerAppByFactory` instead,\n * because app registration is currently governance permissioned on mainnets.\n * @param configWord The super app manifest configuration, flags are defined in\n * `SuperAppDefinitions`\n */\n function registerApp(uint256 configWord) external;\n /**\n * @dev App registered event\n * @param app Address of jailed app\n */\n event AppRegistered(ISuperApp indexed app);\n\n /**\n * @dev Message sender declares itself as a super app.\n * @param configWord The super app manifest configuration, flags are defined in `SuperAppDefinitions`\n * @param registrationKey The registration key issued by the governance, needed to register on a mainnet.\n * @notice See https://github.com/superfluid-finance/protocol-monorepo/wiki/Super-App-White-listing-Guide\n * On testnets or in dev environment, a placeholder (e.g. empty string) can be used.\n * While the message sender must be the super app itself, the transaction sender (tx.origin)\n * must be the deployer account the registration key was issued for.\n */\n function registerAppWithKey(uint256 configWord, string calldata registrationKey) external;\n\n /**\n * @dev Message sender (must be a contract) declares app as a super app\n * @param configWord The super app manifest configuration, flags are defined in `SuperAppDefinitions`\n * @notice On mainnet deployments, only factory contracts pre-authorized by governance can use this.\n * See https://github.com/superfluid-finance/protocol-monorepo/wiki/Super-App-White-listing-Guide\n */\n function registerAppByFactory(ISuperApp app, uint256 configWord) external;\n\n /**\n * @dev Query if the app is registered\n * @param app Super app address\n */\n function isApp(ISuperApp app) external view returns(bool);\n\n /**\n * @dev Query app callbacklevel\n * @param app Super app address\n */\n function getAppCallbackLevel(ISuperApp app) external view returns(uint8 appCallbackLevel);\n\n /**\n * @dev Get the manifest of the super app\n * @param app Super app address\n */\n function getAppManifest(\n ISuperApp app\n )\n external view\n returns (\n bool isSuperApp,\n bool isJailed,\n uint256 noopMask\n );\n\n /**\n * @dev Query if the app has been jailed\n * @param app Super app address\n */\n function isAppJailed(ISuperApp app) external view returns (bool isJail);\n\n /**\n * @dev Whitelist the target app for app composition for the source app (msg.sender)\n * @param targetApp The target super app address\n */\n function allowCompositeApp(ISuperApp targetApp) external;\n\n /**\n * @dev Query if source app is allowed to call the target app as downstream app\n * @param app Super app address\n * @param targetApp The target super app address\n */\n function isCompositeAppAllowed(\n ISuperApp app,\n ISuperApp targetApp\n )\n external view\n returns (bool isAppAllowed);\n\n /**************************************************************************\n * Agreement Framework\n *\n * Agreements use these function to trigger super app callbacks, updates\n * app credit and charge gas fees.\n *\n * These functions can only be called by registered agreements.\n *************************************************************************/\n\n /**\n * @dev (For agreements) StaticCall the app before callback\n * @param app The super app.\n * @param callData The call data sending to the super app.\n * @param isTermination Is it a termination callback?\n * @param ctx Current ctx, it will be validated.\n * @return cbdata Data returned from the callback.\n */\n function callAppBeforeCallback(\n ISuperApp app,\n bytes calldata callData,\n bool isTermination,\n bytes calldata ctx\n )\n external\n // onlyAgreement\n // assertValidCtx(ctx)\n returns(bytes memory cbdata);\n\n /**\n * @dev (For agreements) Call the app after callback\n * @param app The super app.\n * @param callData The call data sending to the super app.\n * @param isTermination Is it a termination callback?\n * @param ctx Current ctx, it will be validated.\n * @return newCtx The current context of the transaction.\n */\n function callAppAfterCallback(\n ISuperApp app,\n bytes calldata callData,\n bool isTermination,\n bytes calldata ctx\n )\n external\n // onlyAgreement\n // assertValidCtx(ctx)\n returns(bytes memory newCtx);\n\n /**\n * @dev (For agreements) Create a new callback stack\n * @param ctx The current ctx, it will be validated.\n * @param app The super app.\n * @param appCreditGranted App credit granted so far.\n * @param appCreditUsed App credit used so far.\n * @return newCtx The current context of the transaction.\n */\n function appCallbackPush(\n bytes calldata ctx,\n ISuperApp app,\n uint256 appCreditGranted,\n int256 appCreditUsed,\n ISuperfluidToken appCreditToken\n )\n external\n // onlyAgreement\n // assertValidCtx(ctx)\n returns (bytes memory newCtx);\n\n /**\n * @dev (For agreements) Pop from the current app callback stack\n * @param ctx The ctx that was pushed before the callback stack.\n * @param appCreditUsedDelta App credit used by the app.\n * @return newCtx The current context of the transaction.\n *\n * @custom:security\n * - Here we cannot do assertValidCtx(ctx), since we do not really save the stack in memory.\n * - Hence there is still implicit trust that the agreement handles the callback push/pop pair correctly.\n */\n function appCallbackPop(\n bytes calldata ctx,\n int256 appCreditUsedDelta\n )\n external\n // onlyAgreement\n returns (bytes memory newCtx);\n\n /**\n * @dev (For agreements) Use app credit.\n * @param ctx The current ctx, it will be validated.\n * @param appCreditUsedMore See app credit for more details.\n * @return newCtx The current context of the transaction.\n */\n function ctxUseCredit(\n bytes calldata ctx,\n int256 appCreditUsedMore\n )\n external\n // onlyAgreement\n // assertValidCtx(ctx)\n returns (bytes memory newCtx);\n\n /**\n * @dev (For agreements) Jail the app.\n * @param app The super app.\n * @param reason Jail reason code.\n * @return newCtx The current context of the transaction.\n */\n function jailApp(\n bytes calldata ctx,\n ISuperApp app,\n uint256 reason\n )\n external\n // onlyAgreement\n // assertValidCtx(ctx)\n returns (bytes memory newCtx);\n\n /**\n * @dev Jail event for the app\n * @param app Address of jailed app\n * @param reason Reason the app is jailed (see Definitions.sol for the full list)\n */\n event Jail(ISuperApp indexed app, uint256 reason);\n\n /**************************************************************************\n * Contextless Call Proxies\n *\n * NOTE: For EOAs or non-app contracts, they are the entry points for interacting\n * with agreements or apps.\n *\n * NOTE: The contextual call data should be generated using\n * abi.encodeWithSelector. The context parameter should be set to \"0x\",\n * an empty bytes array as a placeholder to be replaced by the host\n * contract.\n *************************************************************************/\n\n /**\n * @dev Call agreement function\n * @param agreementClass The agreement address you are calling\n * @param callData The contextual call data with placeholder ctx\n * @param userData Extra user data being sent to the super app callbacks\n */\n function callAgreement(\n ISuperAgreement agreementClass,\n bytes calldata callData,\n bytes calldata userData\n )\n external\n //cleanCtx\n //isAgreement(agreementClass)\n returns(bytes memory returnedData);\n\n /**\n * @notice Call app action\n * @dev Main use case is calling app action in a batch call via the host\n * @param callData The contextual call data\n *\n * @custom:note See \"Contextless Call Proxies\" above for more about contextual call data.\n */\n function callAppAction(\n ISuperApp app,\n bytes calldata callData\n )\n external\n //cleanCtx\n //isAppActive(app)\n //isValidAppAction(callData)\n returns(bytes memory returnedData);\n\n /**************************************************************************\n * Contextual Call Proxies and Context Utilities\n *\n * For apps, they must use context they receive to interact with\n * agreements or apps.\n *\n * The context changes must be saved and returned by the apps in their\n * callbacks always, any modification to the context will be detected and\n * the violating app will be jailed.\n *************************************************************************/\n\n /**\n * @dev Context Struct\n *\n * @custom:note on backward compatibility:\n * - Non-dynamic fields are padded to 32bytes and packed\n * - Dynamic fields are referenced through a 32bytes offset to their \"parents\" field (or root)\n * - The order of the fields hence should not be rearranged in order to be backward compatible:\n * - non-dynamic fields will be parsed at the same memory location,\n * - and dynamic fields will simply have a greater offset than it was.\n * - We cannot change the structure of the Context struct because of ABI compatibility requirements\n */\n struct Context {\n //\n // Call context\n //\n // app callback level\n uint8 appCallbackLevel;\n // type of call\n uint8 callType;\n // the system timestamp\n uint256 timestamp;\n // The intended message sender for the call\n address msgSender;\n\n //\n // Callback context\n //\n // For callbacks it is used to know which agreement function selector is called\n bytes4 agreementSelector;\n // User provided data for app callbacks\n bytes userData;\n\n //\n // App context\n //\n // app credit granted\n uint256 appCreditGranted;\n // app credit wanted by the app callback\n uint256 appCreditWantedDeprecated;\n // app credit used, allowing negative values over a callback session\n // the appCreditUsed value over a callback sessions is calculated with:\n // existing flow data owed deposit + sum of the callback agreements\n // deposit deltas \n // the final value used to modify the state is determined by the\n // _adjustNewAppCreditUsed function (in AgreementLibrary.sol) which takes \n // the appCreditUsed value reached in the callback session and the app\n // credit granted\n int256 appCreditUsed;\n // app address\n address appAddress;\n // app credit in super token\n ISuperfluidToken appCreditToken;\n }\n\n function callAgreementWithContext(\n ISuperAgreement agreementClass,\n bytes calldata callData,\n bytes calldata userData,\n bytes calldata ctx\n )\n external\n // requireValidCtx(ctx)\n // onlyAgreement(agreementClass)\n returns (bytes memory newCtx, bytes memory returnedData);\n\n function callAppActionWithContext(\n ISuperApp app,\n bytes calldata callData,\n bytes calldata ctx\n )\n external\n // requireValidCtx(ctx)\n // isAppActive(app)\n returns (bytes memory newCtx);\n\n function decodeCtx(bytes memory ctx)\n external pure\n returns (Context memory context);\n\n function isCtxValid(bytes calldata ctx) external view returns (bool);\n\n /**************************************************************************\n * Batch call\n **************************************************************************/\n /**\n * @dev Batch operation data\n */\n struct Operation {\n // Operation type. Defined in BatchOperation (Definitions.sol)\n uint32 operationType;\n // Operation target\n address target;\n // Data specific to the operation\n bytes data;\n }\n\n /**\n * @dev Batch call function\n * @param operations Array of batch operations\n */\n function batchCall(Operation[] calldata operations) external;\n\n /**\n * @dev Batch call function for trusted forwarders (EIP-2771)\n * @param operations Array of batch operations\n */\n function forwardBatchCall(Operation[] calldata operations) external;\n\n /**************************************************************************\n * Function modifiers for access control and parameter validations\n *\n * While they cannot be explicitly stated in function definitions, they are\n * listed in function definition comments instead for clarity.\n *\n * TODO: turning these off because solidity-coverage doesn't like it\n *************************************************************************/\n\n /* /// @dev The current superfluid context is clean.\n modifier cleanCtx() virtual;\n\n /// @dev Require the ctx being valid.\n modifier requireValidCtx(bytes memory ctx) virtual;\n\n /// @dev Assert the ctx being valid.\n modifier assertValidCtx(bytes memory ctx) virtual;\n\n /// @dev The agreement is a listed agreement.\n modifier isAgreement(ISuperAgreement agreementClass) virtual;\n\n // onlyGovernance\n\n /// @dev The msg.sender must be a listed agreement.\n modifier onlyAgreement() virtual;\n\n /// @dev The app is registered and not jailed.\n modifier isAppActive(ISuperApp app) virtual; */\n}\n"},"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance.sol":{"content":"// SPDX-License-Identifier: AGPLv3\npragma solidity >= 0.8.4;\n\nimport { ISuperAgreement } from \"./ISuperAgreement.sol\";\nimport { ISuperToken } from \"./ISuperToken.sol\";\nimport { ISuperfluidToken } from \"./ISuperfluidToken.sol\";\nimport { ISuperfluid } from \"./ISuperfluid.sol\";\n\n\n/**\n * @title Superfluid governance interface\n * @author Superfluid\n */\ninterface ISuperfluidGovernance {\n \n /**************************************************************************\n * Errors\n *************************************************************************/\n error SF_GOV_ARRAYS_NOT_SAME_LENGTH(); // 0x27743aa6\n error SF_GOV_INVALID_LIQUIDATION_OR_PATRICIAN_PERIOD(); // 0xe171980a\n error SF_GOV_MUST_BE_CONTRACT(); // 0x80dddd73\n\n /**\n * @dev Replace the current governance with a new governance\n */\n function replaceGovernance(\n ISuperfluid host,\n address newGov) external;\n\n /**\n * @dev Register a new agreement class\n */\n function registerAgreementClass(\n ISuperfluid host,\n address agreementClass) external;\n\n /**\n * @dev Update logics of the contracts\n *\n * @custom:note \n * - Because they might have inter-dependencies, it is good to have one single function to update them all\n */\n function updateContracts(\n ISuperfluid host,\n address hostNewLogic,\n address[] calldata agreementClassNewLogics,\n address superTokenFactoryNewLogic\n ) external;\n\n /**\n * @dev Update supertoken logic contract to the latest that is managed by the super token factory\n */\n function batchUpdateSuperTokenLogic(\n ISuperfluid host,\n ISuperToken[] calldata tokens) external;\n \n /**\n * @dev Set configuration as address value\n */\n function setConfig(\n ISuperfluid host,\n ISuperfluidToken superToken,\n bytes32 key,\n address value\n ) external;\n \n /**\n * @dev Set configuration as uint256 value\n */\n function setConfig(\n ISuperfluid host,\n ISuperfluidToken superToken,\n bytes32 key,\n uint256 value\n ) external;\n\n /**\n * @dev Clear configuration\n */\n function clearConfig(\n ISuperfluid host,\n ISuperfluidToken superToken,\n bytes32 key\n ) external;\n\n /**\n * @dev Get configuration as address value\n */\n function getConfigAsAddress(\n ISuperfluid host,\n ISuperfluidToken superToken,\n bytes32 key) external view returns (address value);\n\n /**\n * @dev Get configuration as uint256 value\n */\n function getConfigAsUint256(\n ISuperfluid host,\n ISuperfluidToken superToken,\n bytes32 key) external view returns (uint256 value);\n\n}\n"},"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol":{"content":"// SPDX-License-Identifier: AGPLv3\npragma solidity >= 0.8.4;\n\nimport { ISuperAgreement } from \"./ISuperAgreement.sol\";\n\n/**\n * @title Superfluid token interface\n * @author Superfluid\n */\ninterface ISuperfluidToken {\n\n /**************************************************************************\n * Errors\n *************************************************************************/\n error SF_TOKEN_AGREEMENT_ALREADY_EXISTS(); // 0xf05521f6\n error SF_TOKEN_AGREEMENT_DOES_NOT_EXIST(); // 0xdae18809\n error SF_TOKEN_BURN_INSUFFICIENT_BALANCE(); // 0x10ecdf44\n error SF_TOKEN_MOVE_INSUFFICIENT_BALANCE(); // 0x2f4cb941\n error SF_TOKEN_ONLY_LISTED_AGREEMENT(); // 0xc9ff6644\n error SF_TOKEN_ONLY_HOST(); // 0xc51efddd\n\n /**************************************************************************\n * Basic information\n *************************************************************************/\n\n /**\n * @dev Get superfluid host contract address\n */\n function getHost() external view returns(address host);\n\n /**\n * @dev Encoded liquidation type data mainly used for handling stack to deep errors\n *\n * @custom:note \n * - version: 1\n * - liquidationType key:\n * - 0 = reward account receives reward (PIC period)\n * - 1 = liquidator account receives reward (Pleb period)\n * - 2 = liquidator account receives reward (Pirate period/bailout)\n */\n struct LiquidationTypeData {\n uint256 version;\n uint8 liquidationType;\n }\n\n /**************************************************************************\n * Real-time balance functions\n *************************************************************************/\n\n /**\n * @dev Calculate the real balance of a user, taking in consideration all agreements of the account\n * @param account for the query\n * @param timestamp Time of balance\n * @return availableBalance Real-time balance\n * @return deposit Account deposit\n * @return owedDeposit Account owed Deposit\n */\n function realtimeBalanceOf(\n address account,\n uint256 timestamp\n )\n external view\n returns (\n int256 availableBalance,\n uint256 deposit,\n uint256 owedDeposit);\n\n /**\n * @notice Calculate the realtime balance given the current host.getNow() value\n * @dev realtimeBalanceOf with timestamp equals to block timestamp\n * @param account for the query\n * @return availableBalance Real-time balance\n * @return deposit Account deposit\n * @return owedDeposit Account owed Deposit\n */\n function realtimeBalanceOfNow(\n address account\n )\n external view\n returns (\n int256 availableBalance,\n uint256 deposit,\n uint256 owedDeposit,\n uint256 timestamp);\n\n /**\n * @notice Check if account is critical\n * @dev A critical account is when availableBalance < 0\n * @param account The account to check\n * @param timestamp The time we'd like to check if the account is critical (should use future)\n * @return isCritical Whether the account is critical\n */\n function isAccountCritical(\n address account,\n uint256 timestamp\n )\n external view\n returns(bool isCritical);\n\n /**\n * @notice Check if account is critical now (current host.getNow())\n * @dev A critical account is when availableBalance < 0\n * @param account The account to check\n * @return isCritical Whether the account is critical\n */\n function isAccountCriticalNow(\n address account\n )\n external view\n returns(bool isCritical);\n\n /**\n * @notice Check if account is solvent\n * @dev An account is insolvent when the sum of deposits for a token can't cover the negative availableBalance\n * @param account The account to check\n * @param timestamp The time we'd like to check if the account is solvent (should use future)\n * @return isSolvent True if the account is solvent, false otherwise\n */\n function isAccountSolvent(\n address account,\n uint256 timestamp\n )\n external view\n returns(bool isSolvent);\n\n /**\n * @notice Check if account is solvent now\n * @dev An account is insolvent when the sum of deposits for a token can't cover the negative availableBalance\n * @param account The account to check\n * @return isSolvent True if the account is solvent, false otherwise\n */\n function isAccountSolventNow(\n address account\n )\n external view\n returns(bool isSolvent);\n\n /**\n * @notice Get a list of agreements that is active for the account\n * @dev An active agreement is one that has state for the account\n * @param account Account to query\n * @return activeAgreements List of accounts that have non-zero states for the account\n */\n function getAccountActiveAgreements(address account)\n external view\n returns(ISuperAgreement[] memory activeAgreements);\n\n\n /**************************************************************************\n * Super Agreement hosting functions\n *************************************************************************/\n\n /**\n * @dev Create a new agreement\n * @param id Agreement ID\n * @param data Agreement data\n */\n function createAgreement(\n bytes32 id,\n bytes32[] calldata data\n )\n external;\n /**\n * @dev Agreement created event\n * @param agreementClass Contract address of the agreement\n * @param id Agreement ID\n * @param data Agreement data\n */\n event AgreementCreated(\n address indexed agreementClass,\n bytes32 id,\n bytes32[] data\n );\n\n /**\n * @dev Get data of the agreement\n * @param agreementClass Contract address of the agreement\n * @param id Agreement ID\n * @return data Data of the agreement\n */\n function getAgreementData(\n address agreementClass,\n bytes32 id,\n uint dataLength\n )\n external view\n returns(bytes32[] memory data);\n\n /**\n * @dev Create a new agreement\n * @param id Agreement ID\n * @param data Agreement data\n */\n function updateAgreementData(\n bytes32 id,\n bytes32[] calldata data\n )\n external;\n /**\n * @dev Agreement updated event\n * @param agreementClass Contract address of the agreement\n * @param id Agreement ID\n * @param data Agreement data\n */\n event AgreementUpdated(\n address indexed agreementClass,\n bytes32 id,\n bytes32[] data\n );\n\n /**\n * @dev Close the agreement\n * @param id Agreement ID\n */\n function terminateAgreement(\n bytes32 id,\n uint dataLength\n )\n external;\n /**\n * @dev Agreement terminated event\n * @param agreementClass Contract address of the agreement\n * @param id Agreement ID\n */\n event AgreementTerminated(\n address indexed agreementClass,\n bytes32 id\n );\n\n /**\n * @dev Update agreement state slot\n * @param account Account to be updated\n *\n * @custom:note \n * - To clear the storage out, provide zero-ed array of intended length\n */\n function updateAgreementStateSlot(\n address account,\n uint256 slotId,\n bytes32[] calldata slotData\n )\n external;\n /**\n * @dev Agreement account state updated event\n * @param agreementClass Contract address of the agreement\n * @param account Account updated\n * @param slotId slot id of the agreement state\n */\n event AgreementStateUpdated(\n address indexed agreementClass,\n address indexed account,\n uint256 slotId\n );\n\n /**\n * @dev Get data of the slot of the state of an agreement\n * @param agreementClass Contract address of the agreement\n * @param account Account to query\n * @param slotId slot id of the state\n * @param dataLength length of the state data\n */\n function getAgreementStateSlot(\n address agreementClass,\n address account,\n uint256 slotId,\n uint dataLength\n )\n external view\n returns (bytes32[] memory slotData);\n\n /**\n * @notice Settle balance from an account by the agreement\n * @dev The agreement needs to make sure that the balance delta is balanced afterwards\n * @param account Account to query.\n * @param delta Amount of balance delta to be settled\n *\n * @custom:modifiers \n * - onlyAgreement\n */\n function settleBalance(\n address account,\n int256 delta\n )\n external;\n\n /**\n * @dev Make liquidation payouts (v2)\n * @param id Agreement ID\n * @param liquidationTypeData Data regarding the version of the liquidation schema and the type\n * @param liquidatorAccount Address of the executor of the liquidation\n * @param useDefaultRewardAccount Whether or not the default reward account receives the rewardAmount\n * @param targetAccount Account to be liquidated\n * @param rewardAmount The amount the rewarded account will receive\n * @param targetAccountBalanceDelta The delta amount the target account balance should change by\n *\n * @custom:note \n * - If a bailout is required (bailoutAmount > 0)\n * - the actual reward (single deposit) goes to the executor,\n * - while the reward account becomes the bailout account\n * - total bailout include: bailout amount + reward amount\n * - the targetAccount will be bailed out\n * - If a bailout is not required\n * - the targetAccount will pay the rewardAmount\n * - the liquidator (reward account in PIC period) will receive the rewardAmount\n *\n * @custom:modifiers \n * - onlyAgreement\n */\n function makeLiquidationPayoutsV2\n (\n bytes32 id,\n bytes memory liquidationTypeData,\n address liquidatorAccount,\n bool useDefaultRewardAccount,\n address targetAccount,\n uint256 rewardAmount,\n int256 targetAccountBalanceDelta\n ) external;\n /**\n * @dev Agreement liquidation event v2 (including agent account)\n * @param agreementClass Contract address of the agreement\n * @param id Agreement ID\n * @param liquidatorAccount Address of the executor of the liquidation\n * @param targetAccount Account of the stream sender\n * @param rewardAmountReceiver Account that collects the reward or bails out insolvent accounts\n * @param rewardAmount The amount the reward recipient account balance should change by\n * @param targetAccountBalanceDelta The amount the sender account balance should change by\n * @param liquidationTypeData The encoded liquidation type data including the version (how to decode)\n *\n * @custom:note \n * Reward account rule:\n * - if the agreement is liquidated during the PIC period\n * - the rewardAmountReceiver will get the rewardAmount (remaining deposit), regardless of the liquidatorAccount\n * - the targetAccount will pay for the rewardAmount\n * - if the agreement is liquidated after the PIC period AND the targetAccount is solvent\n * - the rewardAmountReceiver will get the rewardAmount (remaining deposit)\n * - the targetAccount will pay for the rewardAmount\n * - if the targetAccount is insolvent\n * - the liquidatorAccount will get the rewardAmount (single deposit)\n * - the default reward account (governance) will pay for both the rewardAmount and bailoutAmount\n * - the targetAccount will receive the bailoutAmount\n */\n event AgreementLiquidatedV2(\n address indexed agreementClass,\n bytes32 id,\n address indexed liquidatorAccount,\n address indexed targetAccount,\n address rewardAmountReceiver,\n uint256 rewardAmount,\n int256 targetAccountBalanceDelta,\n bytes liquidationTypeData\n );\n\n /**************************************************************************\n * Function modifiers for access control and parameter validations\n *\n * While they cannot be explicitly stated in function definitions, they are\n * listed in function definition comments instead for clarity.\n *\n * NOTE: solidity-coverage not supporting it\n *************************************************************************/\n\n /// @dev The msg.sender must be host contract\n //modifier onlyHost() virtual;\n\n /// @dev The msg.sender must be a listed agreement.\n //modifier onlyAgreement() virtual;\n\n /**************************************************************************\n * DEPRECATED\n *************************************************************************/\n\n /**\n * @dev Agreement liquidation event (DEPRECATED BY AgreementLiquidatedBy)\n * @param agreementClass Contract address of the agreement\n * @param id Agreement ID\n * @param penaltyAccount Account of the agreement to be penalized\n * @param rewardAccount Account that collect the reward\n * @param rewardAmount Amount of liquidation reward\n *\n * @custom:deprecated Use AgreementLiquidatedV2 instead\n */\n event AgreementLiquidated(\n address indexed agreementClass,\n bytes32 id,\n address indexed penaltyAccount,\n address indexed rewardAccount,\n uint256 rewardAmount\n );\n\n /**\n * @dev System bailout occurred (DEPRECATED BY AgreementLiquidatedBy)\n * @param bailoutAccount Account that bailout the penalty account\n * @param bailoutAmount Amount of account bailout\n *\n * @custom:deprecated Use AgreementLiquidatedV2 instead\n */\n event Bailout(\n address indexed bailoutAccount,\n uint256 bailoutAmount\n );\n\n /**\n * @dev Agreement liquidation event (DEPRECATED BY AgreementLiquidatedV2)\n * @param liquidatorAccount Account of the agent that performed the liquidation.\n * @param agreementClass Contract address of the agreement\n * @param id Agreement ID\n * @param penaltyAccount Account of the agreement to be penalized\n * @param bondAccount Account that collect the reward or bailout accounts\n * @param rewardAmount Amount of liquidation reward\n * @param bailoutAmount Amount of liquidation bailouot\n *\n * @custom:deprecated Use AgreementLiquidatedV2 instead\n *\n * @custom:note \n * Reward account rule:\n * - if bailout is equal to 0, then\n * - the bondAccount will get the rewardAmount,\n * - the penaltyAccount will pay for the rewardAmount.\n * - if bailout is larger than 0, then\n * - the liquidatorAccount will get the rewardAmouont,\n * - the bondAccount will pay for both the rewardAmount and bailoutAmount,\n * - the penaltyAccount will pay for the rewardAmount while get the bailoutAmount.\n */\n event AgreementLiquidatedBy(\n address liquidatorAccount,\n address indexed agreementClass,\n bytes32 id,\n address indexed penaltyAccount,\n address indexed bondAccount,\n uint256 rewardAmount,\n uint256 bailoutAmount\n );\n}\n"},"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.sol":{"content":"// SPDX-License-Identifier: AGPLv3\npragma solidity >= 0.8.4;\n\nimport { ISuperfluid } from \"./ISuperfluid.sol\";\nimport { ISuperfluidToken } from \"./ISuperfluidToken.sol\";\nimport { TokenInfo } from \"../tokens/TokenInfo.sol\";\nimport { IERC777 } from \"@openzeppelin/contracts/token/ERC777/IERC777.sol\";\nimport { IERC20 } from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\n/**\n * @title Super token (Superfluid Token + ERC20 + ERC777) interface\n * @author Superfluid\n */\ninterface ISuperToken is ISuperfluidToken, TokenInfo, IERC20, IERC777 {\n\n /**************************************************************************\n * Errors\n *************************************************************************/\n error SUPER_TOKEN_CALLER_IS_NOT_OPERATOR_FOR_HOLDER(); // 0xf7f02227\n error SUPER_TOKEN_NOT_ERC777_TOKENS_RECIPIENT(); // 0xfe737d05\n error SUPER_TOKEN_INFLATIONARY_DEFLATIONARY_NOT_SUPPORTED(); // 0xe3e13698\n error SUPER_TOKEN_NO_UNDERLYING_TOKEN(); // 0xf79cf656\n error SUPER_TOKEN_ONLY_SELF(); // 0x7ffa6648\n error SUPER_TOKEN_ONLY_HOST(); // 0x98f73704\n error SUPER_TOKEN_APPROVE_FROM_ZERO_ADDRESS(); // 0x81638627\n error SUPER_TOKEN_APPROVE_TO_ZERO_ADDRESS(); // 0xdf070274\n error SUPER_TOKEN_BURN_FROM_ZERO_ADDRESS(); // 0xba2ab184\n error SUPER_TOKEN_MINT_TO_ZERO_ADDRESS(); // 0x0d243157\n error SUPER_TOKEN_TRANSFER_FROM_ZERO_ADDRESS(); // 0xeecd6c9b\n error SUPER_TOKEN_TRANSFER_TO_ZERO_ADDRESS(); // 0xe219bd39\n\n /**\n * @dev Initialize the contract\n */\n function initialize(\n IERC20 underlyingToken,\n uint8 underlyingDecimals,\n string calldata n,\n string calldata s\n ) external;\n\n /**************************************************************************\n * TokenInfo & ERC777\n *************************************************************************/\n\n /**\n * @dev Returns the name of the token.\n */\n function name() external view override(IERC777, TokenInfo) returns (string memory);\n\n /**\n * @dev Returns the symbol of the token, usually a shorter version of the\n * name.\n */\n function symbol() external view override(IERC777, TokenInfo) returns (string memory);\n\n /**\n * @dev Returns the number of decimals used to get its user representation.\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\n * be displayed to a user as `5,05` (`505 / 10 ** 2`).\n *\n * Tokens usually opt for a value of 18, imitating the relationship between\n * Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is\n * called.\n *\n * @custom:note SuperToken always uses 18 decimals.\n *\n * This information is only used for _display_ purposes: it in\n * no way affects any of the arithmetic of the contract, including\n * {IERC20-balanceOf} and {IERC20-transfer}.\n */\n function decimals() external view override(TokenInfo) returns (uint8);\n\n /**************************************************************************\n * ERC20 & ERC777\n *************************************************************************/\n\n /**\n * @dev See {IERC20-totalSupply}.\n */\n function totalSupply() external view override(IERC777, IERC20) returns (uint256);\n\n /**\n * @dev Returns the amount of tokens owned by an account (`owner`).\n */\n function balanceOf(address account) external view override(IERC777, IERC20) returns(uint256 balance);\n\n /**************************************************************************\n * ERC20\n *************************************************************************/\n\n /**\n * @dev Moves `amount` tokens from the caller's account to `recipient`.\n *\n * @return Returns Success a boolean value indicating whether the operation succeeded.\n *\n * @custom:emits a {Transfer} event.\n */\n function transfer(address recipient, uint256 amount) external override(IERC20) returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * @notice This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external override(IERC20) view returns (uint256);\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n *\n * @return Returns Success a boolean value indicating whether the operation succeeded.\n *\n * @custom:note Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * @custom:emits an {Approval} event.\n */\n function approve(address spender, uint256 amount) external override(IERC20) returns (bool);\n\n /**\n * @dev Moves `amount` tokens from `sender` to `recipient` using the\n * allowance mechanism. `amount` is then deducted from the caller's\n * allowance.\n *\n * @return Returns Success a boolean value indicating whether the operation succeeded.\n *\n * @custom:emits a {Transfer} event.\n */\n function transferFrom(address sender, address recipient, uint256 amount) external override(IERC20) returns (bool);\n\n /**\n * @dev Atomically increases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * @custom:emits an {Approval} event indicating the updated allowance.\n *\n * @custom:requirements \n * - `spender` cannot be the zero address.\n */\n function increaseAllowance(address spender, uint256 addedValue) external returns (bool);\n\n /**\n * @dev Atomically decreases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * @custom:emits an {Approval} event indicating the updated allowance.\n *\n * @custom:requirements \n * - `spender` cannot be the zero address.\n * - `spender` must have allowance for the caller of at least\n * `subtractedValue`.\n */\n function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool);\n\n /**************************************************************************\n * ERC777\n *************************************************************************/\n\n /**\n * @dev Returns the smallest part of the token that is not divisible. This\n * means all token operations (creation, movement and destruction) must have\n * amounts that are a multiple of this number.\n *\n * @custom:note For super token contracts, this value is always 1\n */\n function granularity() external view override(IERC777) returns (uint256);\n\n /**\n * @dev Moves `amount` tokens from the caller's account to `recipient`.\n *\n * @dev If send or receive hooks are registered for the caller and `recipient`,\n * the corresponding functions will be called with `data` and empty\n * `operatorData`. See {IERC777Sender} and {IERC777Recipient}.\n *\n * @custom:emits a {Sent} event.\n *\n * @custom:requirements \n * - the caller must have at least `amount` tokens.\n * - `recipient` cannot be the zero address.\n * - if `recipient` is a contract, it must implement the {IERC777Recipient}\n * interface.\n */\n function send(address recipient, uint256 amount, bytes calldata data) external override(IERC777);\n\n /**\n * @dev Destroys `amount` tokens from the caller's account, reducing the\n * total supply and transfers the underlying token to the caller's account.\n *\n * If a send hook is registered for the caller, the corresponding function\n * will be called with `data` and empty `operatorData`. See {IERC777Sender}.\n *\n * @custom:emits a {Burned} event.\n *\n * @custom:requirements \n * - the caller must have at least `amount` tokens.\n */\n function burn(uint256 amount, bytes calldata data) external override(IERC777);\n\n /**\n * @dev Returns true if an account is an operator of `tokenHolder`.\n * Operators can send and burn tokens on behalf of their owners. All\n * accounts are their own operator.\n *\n * See {operatorSend} and {operatorBurn}.\n */\n function isOperatorFor(address operator, address tokenHolder) external override(IERC777) view returns (bool);\n\n /**\n * @dev Make an account an operator of the caller.\n *\n * See {isOperatorFor}.\n *\n * @custom:emits an {AuthorizedOperator} event.\n *\n * @custom:requirements \n * - `operator` cannot be calling address.\n */\n function authorizeOperator(address operator) external override(IERC777);\n\n /**\n * @dev Revoke an account's operator status for the caller.\n *\n * See {isOperatorFor} and {defaultOperators}.\n *\n * @custom:emits a {RevokedOperator} event.\n *\n * @custom:requirements \n * - `operator` cannot be calling address.\n */\n function revokeOperator(address operator) external override(IERC777);\n\n /**\n * @dev Returns the list of default operators. These accounts are operators\n * for all token holders, even if {authorizeOperator} was never called on\n * them.\n *\n * This list is immutable, but individual holders may revoke these via\n * {revokeOperator}, in which case {isOperatorFor} will return false.\n */\n function defaultOperators() external override(IERC777) view returns (address[] memory);\n\n /**\n * @dev Moves `amount` tokens from `sender` to `recipient`. The caller must\n * be an operator of `sender`.\n *\n * If send or receive hooks are registered for `sender` and `recipient`,\n * the corresponding functions will be called with `data` and\n * `operatorData`. See {IERC777Sender} and {IERC777Recipient}.\n *\n * @custom:emits a {Sent} event.\n *\n * @custom:requirements \n * - `sender` cannot be the zero address.\n * - `sender` must have at least `amount` tokens.\n * - the caller must be an operator for `sender`.\n * - `recipient` cannot be the zero address.\n * - if `recipient` is a contract, it must implement the {IERC777Recipient}\n * interface.\n */\n function operatorSend(\n address sender,\n address recipient,\n uint256 amount,\n bytes calldata data,\n bytes calldata operatorData\n ) external override(IERC777);\n\n /**\n * @dev Destroys `amount` tokens from `account`, reducing the total supply.\n * The caller must be an operator of `account`.\n *\n * If a send hook is registered for `account`, the corresponding function\n * will be called with `data` and `operatorData`. See {IERC777Sender}.\n *\n * @custom:emits a {Burned} event.\n *\n * @custom:requirements \n * - `account` cannot be the zero address.\n * - `account` must have at least `amount` tokens.\n * - the caller must be an operator for `account`.\n */\n function operatorBurn(\n address account,\n uint256 amount,\n bytes calldata data,\n bytes calldata operatorData\n ) external override(IERC777);\n\n /**************************************************************************\n * SuperToken custom token functions\n *************************************************************************/\n\n /**\n * @dev Mint new tokens for the account\n *\n * @custom:modifiers \n * - onlySelf\n */\n function selfMint(\n address account,\n uint256 amount,\n bytes memory userData\n ) external;\n\n /**\n * @dev Burn existing tokens for the account\n *\n * @custom:modifiers \n * - onlySelf\n */\n function selfBurn(\n address account,\n uint256 amount,\n bytes memory userData\n ) external;\n\n /**\n * @dev Transfer `amount` tokens from the `sender` to `recipient`.\n * If `spender` isn't the same as `sender`, checks if `spender` has allowance to\n * spend tokens of `sender`.\n *\n * @custom:modifiers \n * - onlySelf\n */\n function selfTransferFrom(\n address sender,\n address spender,\n address recipient,\n uint256 amount\n ) external;\n\n /**\n * @dev Give `spender`, `amount` allowance to spend the tokens of\n * `account`.\n *\n * @custom:modifiers \n * - onlySelf\n */\n function selfApproveFor(\n address account,\n address spender,\n uint256 amount\n ) external;\n\n /**************************************************************************\n * SuperToken extra functions\n *************************************************************************/\n\n /**\n * @dev Transfer all available balance from `msg.sender` to `recipient`\n */\n function transferAll(address recipient) external;\n\n /**************************************************************************\n * ERC20 wrapping\n *************************************************************************/\n\n /**\n * @dev Return the underlying token contract\n * @return tokenAddr Underlying token address\n */\n function getUnderlyingToken() external view returns(address tokenAddr);\n\n /**\n * @dev Upgrade ERC20 to SuperToken.\n * @param amount Number of tokens to be upgraded (in 18 decimals)\n *\n * @custom:note It will use `transferFrom` to get tokens. Before calling this\n * function you should `approve` this contract\n */\n function upgrade(uint256 amount) external;\n\n /**\n * @dev Upgrade ERC20 to SuperToken and transfer immediately\n * @param to The account to receive upgraded tokens\n * @param amount Number of tokens to be upgraded (in 18 decimals)\n * @param data User data for the TokensRecipient callback\n *\n * @custom:note It will use `transferFrom` to get tokens. Before calling this\n * function you should `approve` this contract\n * \n * @custom:warning\n * - there is potential of reentrancy IF the \"to\" account is a registered ERC777 recipient.\n * @custom:requirements \n * - if `data` is NOT empty AND `to` is a contract, it MUST be a registered ERC777 recipient otherwise it reverts.\n */\n function upgradeTo(address to, uint256 amount, bytes calldata data) external;\n\n /**\n * @dev Token upgrade event\n * @param account Account where tokens are upgraded to\n * @param amount Amount of tokens upgraded (in 18 decimals)\n */\n event TokenUpgraded(\n address indexed account,\n uint256 amount\n );\n\n /**\n * @dev Downgrade SuperToken to ERC20.\n * @dev It will call transfer to send tokens\n * @param amount Number of tokens to be downgraded\n */\n function downgrade(uint256 amount) external;\n\n /**\n * @dev Downgrade SuperToken to ERC20 and transfer immediately\n * @param to The account to receive downgraded tokens\n * @param amount Number of tokens to be downgraded (in 18 decimals)\n */\n function downgradeTo(address to, uint256 amount) external;\n\n /**\n * @dev Token downgrade event\n * @param account Account whose tokens are downgraded\n * @param amount Amount of tokens downgraded\n */\n event TokenDowngraded(\n address indexed account,\n uint256 amount\n );\n\n /**************************************************************************\n * Batch Operations\n *************************************************************************/\n\n /**\n * @dev Perform ERC20 approve by host contract.\n * @param account The account owner to be approved.\n * @param spender The spender of account owner's funds.\n * @param amount Number of tokens to be approved.\n *\n * @custom:modifiers \n * - onlyHost\n */\n function operationApprove(\n address account,\n address spender,\n uint256 amount\n ) external;\n\n function operationIncreaseAllowance(\n address account,\n address spender,\n uint256 addedValue\n ) external;\n\n function operationDecreaseAllowance(\n address account,\n address spender,\n uint256 subtractedValue\n ) external;\n\n /**\n * @dev Perform ERC20 transferFrom by host contract.\n * @param account The account to spend sender's funds.\n * @param spender The account where the funds is sent from.\n * @param recipient The recipient of the funds.\n * @param amount Number of tokens to be transferred.\n *\n * @custom:modifiers \n * - onlyHost\n */\n function operationTransferFrom(\n address account,\n address spender,\n address recipient,\n uint256 amount\n ) external;\n\n /**\n * @dev Perform ERC777 send by host contract.\n * @param spender The account where the funds is sent from.\n * @param recipient The recipient of the funds.\n * @param amount Number of tokens to be transferred.\n * @param data Arbitrary user inputted data\n *\n * @custom:modifiers \n * - onlyHost\n */\n function operationSend(\n address spender,\n address recipient,\n uint256 amount,\n bytes memory data\n ) external;\n\n /**\n * @dev Upgrade ERC20 to SuperToken by host contract.\n * @param account The account to be changed.\n * @param amount Number of tokens to be upgraded (in 18 decimals)\n *\n * @custom:modifiers \n * - onlyHost\n */\n function operationUpgrade(address account, uint256 amount) external;\n\n /**\n * @dev Downgrade ERC20 to SuperToken by host contract.\n * @param account The account to be changed.\n * @param amount Number of tokens to be downgraded (in 18 decimals)\n *\n * @custom:modifiers \n * - onlyHost\n */\n function operationDowngrade(address account, uint256 amount) external;\n\n\n /**************************************************************************\n * Function modifiers for access control and parameter validations\n *\n * While they cannot be explicitly stated in function definitions, they are\n * listed in function definition comments instead for clarity.\n *\n * NOTE: solidity-coverage not supporting it\n *************************************************************************/\n\n /// @dev The msg.sender must be the contract itself\n //modifier onlySelf() virtual\n\n}\n"},"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperTokenFactory.sol":{"content":"// SPDX-License-Identifier: AGPLv3\npragma solidity >= 0.8.4;\n\nimport { ISuperToken } from \"./ISuperToken.sol\";\n\nimport {\n IERC20,\n ERC20WithTokenInfo\n} from \"../tokens/ERC20WithTokenInfo.sol\";\n\n/**\n * @title Super token factory interface\n * @author Superfluid\n */\ninterface ISuperTokenFactory {\n\n /**************************************************************************\n * Errors\n *************************************************************************/\n error SUPER_TOKEN_FACTORY_ALREADY_EXISTS(); // 0x91d67972\n error SUPER_TOKEN_FACTORY_DOES_NOT_EXIST(); // 0x872cac48\n error SUPER_TOKEN_FACTORY_UNINITIALIZED(); // 0x1b39b9b4\n error SUPER_TOKEN_FACTORY_ONLY_HOST(); // 0x478b8e83\n error SUPER_TOKEN_FACTORY_NON_UPGRADEABLE_IS_DEPRECATED(); // 0x478b8e83\n error SUPER_TOKEN_FACTORY_ZERO_ADDRESS(); // 0x305c9e82\n\n /**\n * @dev Get superfluid host contract address\n */\n function getHost() external view returns(address host);\n\n /// @dev Initialize the contract\n function initialize() external;\n\n /**\n * @dev Get the current super token logic used by the factory\n */\n function getSuperTokenLogic() external view returns (ISuperToken superToken);\n\n /**\n * @dev Upgradability modes\n */\n enum Upgradability {\n /// Non upgradable super token, `host.updateSuperTokenLogic` will revert\n NON_UPGRADABLE,\n /// Upgradable through `host.updateSuperTokenLogic` operation\n SEMI_UPGRADABLE,\n /// Always using the latest super token logic\n FULL_UPGRADABLE\n }\n\n /**\n * @notice Create new super token wrapper for the underlying ERC20 token\n * @param underlyingToken Underlying ERC20 token\n * @param underlyingDecimals Underlying token decimals\n * @param upgradability Upgradability mode\n * @param name Super token name\n * @param symbol Super token symbol\n * @return superToken The deployed and initialized wrapper super token\n */\n function createERC20Wrapper(\n IERC20 underlyingToken,\n uint8 underlyingDecimals,\n Upgradability upgradability,\n string calldata name,\n string calldata symbol\n )\n external\n returns (ISuperToken superToken);\n\n /**\n * @notice Create new super token wrapper for the underlying ERC20 token with extra token info\n * @param underlyingToken Underlying ERC20 token\n * @param upgradability Upgradability mode\n * @param name Super token name\n * @param symbol Super token symbol\n * @return superToken The deployed and initialized wrapper super token\n * NOTE:\n * - It assumes token provide the .decimals() function\n */\n function createERC20Wrapper(\n ERC20WithTokenInfo underlyingToken,\n Upgradability upgradability,\n string calldata name,\n string calldata symbol\n )\n external\n returns (ISuperToken superToken);\n\n /**\n * @notice Creates a wrapper super token AND sets it in the canonical list OR reverts if it already exists\n * @dev salt for create2 is the keccak256 hash of abi.encode(address(_underlyingToken))\n * @param _underlyingToken Underlying ERC20 token\n * @return ISuperToken the created supertoken\n */\n function createCanonicalERC20Wrapper(ERC20WithTokenInfo _underlyingToken)\n external\n returns (ISuperToken);\n\n /**\n * @notice Computes/Retrieves wrapper super token address given the underlying token address\n * @dev We return from our canonical list if it already exists, otherwise we compute it\n * @dev note that this function only computes addresses for SEMI_UPGRADABLE SuperTokens\n * @param _underlyingToken Underlying ERC20 token address\n * @return superTokenAddress Super token address\n * @return isDeployed whether the super token is deployed AND set in the canonical mapping\n */\n function computeCanonicalERC20WrapperAddress(address _underlyingToken)\n external\n view\n returns (address superTokenAddress, bool isDeployed);\n\n /**\n * @notice Gets the canonical ERC20 wrapper super token address given the underlying token address\n * @dev We return the address if it exists and the zero address otherwise\n * @param _underlyingTokenAddress Underlying ERC20 token address\n * @return superTokenAddress Super token address\n */\n function getCanonicalERC20Wrapper(address _underlyingTokenAddress)\n external\n view\n returns (address superTokenAddress);\n\n /**\n * @dev Creates a new custom super token\n * @param customSuperTokenProxy address of the custom supertoken proxy\n */\n function initializeCustomSuperToken(\n address customSuperTokenProxy\n )\n external;\n\n /**\n * @dev Super token logic created event\n * @param tokenLogic Token logic address\n */\n event SuperTokenLogicCreated(ISuperToken indexed tokenLogic);\n\n /**\n * @dev Super token created event\n * @param token Newly created super token address\n */\n event SuperTokenCreated(ISuperToken indexed token);\n\n /**\n * @dev Custom super token created event\n * @param token Newly created custom super token address\n */\n event CustomSuperTokenCreated(ISuperToken indexed token);\n\n}\n"},"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo.sol":{"content":"// SPDX-License-Identifier: AGPLv3\npragma solidity >= 0.8.4;\n\nimport { IERC20 } from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport { TokenInfo } from \"./TokenInfo.sol\";\n\n/**\n * @title ERC20 token with token info interface\n * @author Superfluid\n * @dev Using abstract contract instead of interfaces because old solidity\n * does not support interface inheriting other interfaces\n * solhint-disable-next-line no-empty-blocks\n *\n */\n// solhint-disable-next-line no-empty-blocks\nabstract contract ERC20WithTokenInfo is IERC20, TokenInfo {}\n"},"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.sol":{"content":"// SPDX-License-Identifier: AGPLv3\npragma solidity >= 0.8.4;\n\n/**\n * @title ERC20 token info interface\n * @author Superfluid\n * @dev ERC20 standard interface does not specify these functions, but\n * often the token implementations have them.\n */\ninterface TokenInfo {\n /**\n * @dev Returns the name of the token.\n */\n function name() external view returns (string memory);\n\n /**\n * @dev Returns the symbol of the token, usually a shorter version of the\n * name.\n */\n function symbol() external view returns (string memory);\n\n /**\n * @dev Returns the number of decimals used to get its user representation.\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\n * be displayed to a user as `5,05` (`505 / 10 ** 2`).\n *\n * Tokens usually opt for a value of 18, imitating the relationship between\n * Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is\n * called.\n *\n * NOTE: This information is only used for _display_ purposes: it in\n * no way affects any of the arithmetic of the contract, including\n * {IERC20-balanceOf} and {IERC20-transfer}.\n */\n function decimals() external view returns (uint8);\n}\n"},"contracts/archives/OldFlow.sol":{"content":"// SPDX-License-Identifier: BUSL-1.1\npragma solidity ^0.8.9;\n\nimport {ISuperToken} from \"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol\";\nimport {SuperTokenV1Library} from \"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol\";\n\nimport {LibAutomate} from \"../libraries/core/LibAutomate.sol\";\nimport {LibControl, ArrayLengthNotMatch} from \"../libraries/core/LibControl.sol\";\nimport {LibSession, SessionNotStarted} from \"../libraries/core/LibSession.sol\";\nimport {OldLibFlow} from \"./OldLibFlow.sol\";\n\nimport \"../services/gelato/Types.sol\";\n\nerror TooEarly();\nerror UserFlowNotStopped();\n\ncontract OldFlow {\n // using SuperTokenV1Library for ISuperToken;\n // /**\n // * important:\n // * with this `openFlow` implementation, it is possible to\n // * open multiple flows with same session (cost to much to implement checks)\n // * this does not cause an\n // */\n // /**\n // * // TODO: need to check if you have sufficient deposits left or not\n // * SOL1: have user manually off flow\n // * SOL2: force settle blaance before open next flow (also force settle before withdraw)\n // */\n // function openFlow(\n // address _receiver,\n // address _superToken,\n // uint256 _lifespan\n // ) external {\n // LibFlow._setRemainingBalance(msg.sender, _superToken); // TODO: test\n // LibAutomate._requireSufficientAppGelatoBalance();\n // LibControl._requireSuperTokenSupported(_superToken);\n // LibSession.StorageSession storage sSession = LibSession\n // ._storageSession();\n // uint256 activeSessionNonce = LibSession._getCurrentNonce(\n // _receiver,\n // _superToken\n // );\n // if (\n // sSession\n // .sessionRecord[_receiver][_superToken][activeSessionNonce]\n // .timestampStart == 0\n // ) revert SessionNotStarted();\n // LibFlow.StorageFlow storage sFlow = LibFlow._storageFlow();\n // int96 flowRate = sSession\n // .sessionRecord[_receiver][_superToken][activeSessionNonce]\n // .effectiveFlowRate;\n // LibControl._requireSufficientAppSTBalance(_superToken, flowRate);\n // uint256 scheduledLifespan = LibFlow._getScheduledLifespan(\n // msg.sender,\n // _superToken,\n // _lifespan,\n // flowRate\n // ); // indirectly checks if sufficient deposit or not\n // // 1. set flow info\n // uint256 newFlowNonce = LibFlow._getNewNonce(msg.sender, _superToken);\n // LibFlow._requireSingleFlow(_superToken); // as we cannot detect when user is trying to open multiple active flows to same session, we just restrict flow opening to 1 active globally at a time\n // sFlow\n // .flowRecord[msg.sender][_superToken][newFlowNonce].receiver = _receiver;\n // sFlow\n // .flowRecord[msg.sender][_superToken][newFlowNonce]\n // .sessionNonce = activeSessionNonce;\n // LibControl.StorageControl storage sControl = LibControl\n // ._storageControl();\n // uint256 newControlNonce = sControl.controlNonce[_superToken];\n // sControl\n // .controlRecord[_superToken][newControlNonce].receiver = _receiver;\n // sControl\n // .controlRecord[_superToken][newControlNonce]\n // .sessionNonce = activeSessionNonce;\n // sControl\n // .controlRecord[_superToken][newControlNonce].timestampIncrease = block\n // .timestamp;\n // sFlow\n // .flowRecord[msg.sender][_superToken][newFlowNonce]\n // .controlNonce = newControlNonce;\n // // 2. start flow immediately\n // LibFlow._increaseFlow(\n // _superToken,\n // msg.sender,\n // _receiver,\n // newFlowNonce,\n // flowRate\n // );\n // // // 3. schedule stop flow\n // ModuleData memory moduleDataFlowStop = ModuleData({\n // modules: new Module[](2),\n // args: new bytes[](1)\n // });\n // moduleDataFlowStop.modules[0] = Module.TIME;\n // moduleDataFlowStop.modules[1] = Module.SINGLE_EXEC;\n // moduleDataFlowStop.args[0] = LibAutomate._timeModuleArg(\n // block.timestamp + scheduledLifespan,\n // scheduledLifespan\n // );\n // bytes memory execDataFlowStop = abi.encodeWithSelector(\n // this.decreaseFlow.selector,\n // _superToken,\n // msg.sender,\n // _receiver,\n // newFlowNonce,\n // flowRate\n // );\n // sFlow\n // .flowRecord[msg.sender][_superToken][newFlowNonce].taskId = LibAutomate\n // ._storageAutomate()\n // .gelatoAutobot\n // .createTask(\n // address(this),\n // execDataFlowStop,\n // moduleDataFlowStop,\n // address(0)\n // );\n // // 4. finishing\n // sFlow.flowNonce[msg.sender][_superToken] += 1;\n // sControl.controlNonce[_superToken] += 1;\n // }\n // function decreaseFlow(\n // address _superToken,\n // address _sender,\n // address _receiver,\n // uint256 _nonce,\n // int96 _flowRate\n // ) external {\n // LibAutomate._requireOnlyAutobot();\n // LibFlow._decreaseFlow(\n // _superToken,\n // _sender,\n // _receiver,\n // _nonce,\n // _flowRate\n // );\n // } // for autobot use // TODO: test frontend no one can call it !!\n // function closeFlow(address _superToken, uint256 _nonce) external {\n // LibFlow.StorageFlow storage sFlow = LibFlow._storageFlow();\n // uint256 minimumEndTimestamp = sFlow\n // .flowRecord[msg.sender][_superToken][_nonce].timestampIncrease +\n // LibControl._storageControl().minimumLifespan;\n // if (block.timestamp < minimumEndTimestamp) revert TooEarly();\n // // no need check supertoken valid or not in case it suddenly goes unsupported\n // // delete task\n // LibAutomate._storageAutomate().gelatoAutobot.cancelTask(\n // sFlow.flowRecord[msg.sender][_superToken][_nonce].taskId\n // );\n // // delete flow\n // address receiver = sFlow\n // .flowRecord[msg.sender][_superToken][_nonce].receiver;\n // uint256 sessionNonce = sFlow\n // .flowRecord[msg.sender][_superToken][_nonce].sessionNonce;\n // LibFlow._decreaseFlow(\n // _superToken,\n // msg.sender,\n // receiver,\n // _nonce,\n // LibSession\n // ._storageSession()\n // .sessionRecord[receiver][_superToken][sessionNonce]\n // .effectiveFlowRate\n // );\n // }\n // function depositSuperToken(address _superToken, uint256 _amount) external {\n // LibControl._requireSuperTokenSupported(_superToken);\n // LibFlow._depositSuperToken(_superToken, _amount);\n // }\n // function withdrawSuperToken(address _superToken, uint256 _amount) external {\n // /**\n // * don't need to check if supertoken suppported or not\n // * as there may be a chance that a supported supertoken\n // * gets removed but there is still user funds in the app\n // *\n // * in that case, just let user withdraw as will fail anyway if 0 amount\n // */\n // LibFlow.StorageFlow storage sFlow = LibFlow._storageFlow();\n // uint256 latestFlowNonce = LibFlow._getCurrentNonce(\n // msg.sender,\n // _superToken\n // );\n // uint256 timestampIncrease = sFlow\n // .flowRecord[msg.sender][_superToken][latestFlowNonce].timestampIncrease;\n // uint256 timestampDecrease = sFlow\n // .flowRecord[msg.sender][_superToken][latestFlowNonce].timestampDecrease;\n // (, , uint256 timestampStart, uint256 timestampStop) = LibSession\n // ._getSessionDataFromFlow(msg.sender, _superToken, latestFlowNonce);\n // if (\n // timestampStart != 0 && // to account for new addresses that has not started any flow yet\n // timestampIncrease >= timestampStart &&\n // timestampStop == 0 &&\n // timestampDecrease == 0\n // ) revert UserFlowNotStopped(); // TODO: standardize with \"LibFlow._hasActiveFlow\"\n // LibFlow._withdrawSuperToken(_superToken, _amount);\n // } // TODO: test\n // function withdrawSuperTokens(\n // address[] memory _superTokens,\n // uint256[] memory _amounts\n // ) external {\n // if (_superTokens.length != _amounts.length)\n // revert ArrayLengthNotMatch();\n // LibFlow.StorageFlow storage sFlow = LibFlow._storageFlow();\n // for (uint256 i = 0; i < _superTokens.length; i++) {\n // /**\n // * don't need to check if supertoken suppported or not\n // * as there may be a chance that a supported supertoken\n // * gets removed but there is still user funds in the app\n // *\n // * in that case, just let user withdraw as will fail anyway if 0 amount\n // */\n // uint256 latestFlowNonce = LibFlow._getCurrentNonce(\n // msg.sender,\n // _superTokens[i]\n // );\n // uint256 timestampIncrease = sFlow\n // .flowRecord[msg.sender][_superTokens[i]][latestFlowNonce]\n // .timestampIncrease;\n // uint256 timestampDecrease = sFlow\n // .flowRecord[msg.sender][_superTokens[i]][latestFlowNonce]\n // .timestampDecrease;\n // (, , uint256 timestampStart, uint256 timestampStop) = LibSession\n // ._getSessionDataFromFlow(\n // msg.sender,\n // _superTokens[i],\n // latestFlowNonce\n // );\n // if (\n // timestampStart != 0 && // to account for new addresses that has not started any flow yet\n // timestampIncrease >= timestampStart &&\n // timestampStop == 0 &&\n // timestampDecrease == 0\n // ) revert UserFlowNotStopped();\n // LibFlow._withdrawSuperToken(_superTokens[i], _amounts[i]);\n // }\n // }\n // function getAmountFlowed(\n // address _user,\n // address _superToken\n // ) external view returns (uint256) {\n // return LibFlow._getAmountFlowed(_user, _superToken);\n // }\n // // function getEffectiveBalanceRead(\n // // address _user,\n // // address _superToken\n // // ) external view returns (uint256) {\n // // return LibFlow._getEffectiveBalanceRead(_user, _superToken);\n // // } // TODO: this does not account for if broadcaster is still live or not !!\n // function getValidSafeLifespan(\n // address _user,\n // address _superToken,\n // int96 _flowRate\n // ) external view returns (uint256) {\n // return LibFlow._getValidSafeLifespan(_user, _superToken, _flowRate);\n // } // TODO: not so useful... remove.. ?\n // /**\n // * use `isViewSessionAllowed` to easily determine if viewer can \"join room\" or not\n // * !! NOT used to determine if can `openFlow` or not...\n // */\n // function isViewSessionAllowed(\n // address _viewer,\n // address _broadcaster\n // ) external view returns (bool) {\n // return LibFlow._isViewSessionAllowed(_viewer, _broadcaster);\n // }\n // function hasActiveFlow(\n // address _user,\n // address _superToken\n // ) external view returns (bool) {\n // return LibFlow._hasActiveFlow(_user, _superToken);\n // } // TODO: test\n // function getNewFlowNonce(\n // address _user,\n // address _superToken\n // ) external view returns (uint256) {\n // return LibFlow._getNewNonce(_user, _superToken);\n // } // TODO: test\n // function getFlowData(\n // address _user,\n // address _superToken,\n // uint256 _nonce\n // ) external view returns (address, uint256, uint256, uint256, bytes32) {\n // return LibFlow._getFlowData(_user, _superToken, _nonce);\n // }\n // function getDepositUser(\n // address _user,\n // address _superToken\n // ) external view returns (uint256) {\n // return LibFlow._getDepositUser(_user, _superToken);\n // }\n // function getDepositTotal(\n // address _superToken\n // ) external view returns (uint256) {\n // return LibFlow._getDepositTotal(_superToken);\n // }\n}\n\n// TODO: test - % take mechanism (just reduce flowrate based on % and leave cash in app contract?)\n// TODO: give broadcaster to optionally set an automated end date (do after get funding) - one reason to do this is viewer cannot withdraw if bc still live !!\n// TODO: emit events throughout (especially session & flow creation) so can track user stats eg: avg duration of flow, avg flow rate, sess vs flow count etc..\n// TODO: how to penalize broadcaster if dont end flow\n// // TODO: require checks for all fns\n"},"contracts/archives/OldLibFlow.sol":{"content":"//SPDX-License-Identifier: BUSL-1.1\npragma solidity ^0.8.9;\n\nimport {ISuperToken} from \"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol\";\nimport {SuperTokenV1Library} from \"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol\";\n\nimport {LibControl, ContractError} from \"../libraries/core/LibControl.sol\";\nimport {LibSession} from \"../libraries/core/LibSession.sol\";\n\nerror InsufficientFunds();\nerror InsufficientLifespan1();\nerror InsufficientLifespan2();\nerror InsufficientLifespan3();\nerror OnlySingleFlowAllowed();\nerror InvalidBalance1();\nerror InvalidBalance2();\n\nlibrary OldLibFlow {\n using SuperTokenV1Library for ISuperToken;\n\n bytes32 constant STORAGE_POSITION_FLOW = keccak256(\"ds.flow\");\n\n struct FlowRecord {\n uint256 controlNonce; // TODO: add to flow test\n address receiver;\n uint256 sessionNonce;\n uint256 timestampIncrease; // timestamp at which viewer opened a flow with bc\n uint256 timestampDecrease; // timestamp at which viewer closed a flow with bc // may be 0\n bytes32 taskId; // decrease flow of viewer to broadcaster\n // bool isBalanceSettled;\n }\n\n struct StorageFlow {\n // mapping(address => mapping(address => uint256)) unsettledFlowNonce; // viewer --> superToken --> nonce (counter) from this nonce count onwards is still unsettled\n mapping(address => mapping(address => uint256)) flowNonce; // viewer --> superToken --> nonce (counter)\n mapping(address => mapping(address => mapping(uint256 => FlowRecord))) flowRecord; // viewer --> superToken --> nonce --> flow record\n //\n mapping(address => mapping(address => uint256)) deposits; // viewer --> superToken --> amount deposit\n mapping(address => uint256) totalDeposits; // superToken --> total amount\n }\n\n function _storageFlow() internal pure returns (StorageFlow storage s) {\n bytes32 position = STORAGE_POSITION_FLOW;\n assembly {\n s.slot := position\n }\n }\n\n ///// ------- functions ------ /////\n\n ///// -------- mains --------- /////\n\n function _depositSuperToken(address _superToken, uint256 _amount) internal {\n ISuperToken(_superToken).transferFrom(\n msg.sender,\n address(this),\n _amount\n );\n\n _storageFlow().deposits[msg.sender][_superToken] += _amount;\n _storageFlow().totalDeposits[_superToken] += _amount;\n }\n\n function _withdrawSuperToken(\n address _superToken,\n uint256 _amount\n ) internal {\n // uint256 amountRemaining = _getEffectiveBalance(msg.sender, _superToken);\n _setRemainingBalance(msg.sender, _superToken); // TODO: test\n\n uint256 amountRemaining = _storageFlow().deposits[msg.sender][\n _superToken\n ];\n\n if (amountRemaining < _amount) revert InsufficientFunds();\n\n _storageFlow().deposits[msg.sender][_superToken] -= _amount;\n _storageFlow().totalDeposits[_superToken] -= _amount;\n\n ISuperToken(_superToken).transferFrom(\n address(this),\n msg.sender,\n _amount\n );\n }\n\n ///// ------- requires ------- /////\n\n function _requireSingleFlow(address _superToken) internal view {\n if (_hasActiveFlow(msg.sender, _superToken))\n revert OnlySingleFlowAllowed();\n }\n\n ///// ------- setters -------- /////\n\n function _setRemainingBalance(address _user, address _superToken) internal {\n uint256 amountFlowed = _getAmountFlowed(_user, _superToken);\n\n _storageFlow().deposits[_user][_superToken] -= amountFlowed;\n _storageFlow().totalDeposits[_superToken] -= amountFlowed;\n\n if (_storageFlow().deposits[_user][_superToken] < 0)\n revert InvalidBalance1(); // should never be run!\n if (_storageFlow().totalDeposits[_superToken] < 0)\n revert InvalidBalance2(); // should never be run!\n }\n\n ///// ------- getters -------- /////\n\n function _getNewNonce(\n address _user,\n address _superToken\n ) internal view returns (uint256) {\n return _storageFlow().flowNonce[_user][_superToken];\n }\n\n function _getCurrentNonce(\n address _user,\n address _superToken\n ) internal view returns (uint256) {\n uint256 nonce = _storageFlow().flowNonce[_user][_superToken];\n return nonce == 0 ? 0 : nonce - 1;\n }\n\n function _getValidSafeLifespan(\n address _user,\n address _superToken,\n int96 _flowRate\n ) internal view returns (uint256) {\n uint256 unsafeLifespan = _storageFlow().deposits[_user][_superToken] /\n uint256(uint96(_flowRate));\n\n LibControl.StorageControl storage sControl = LibControl\n ._storageControl();\n\n if (unsafeLifespan < sControl.minimumEndDuration)\n revert InsufficientLifespan1();\n\n uint256 safeLifespan = unsafeLifespan - sControl.minimumEndDuration;\n\n if (safeLifespan < sControl.minimumLifespan)\n revert InsufficientLifespan2();\n\n return safeLifespan;\n }\n\n /**\n * flowRate --> 1 sec\n * maximumFlowAmount --> maximumFlowAmount/flowRate [in sec]\n */\n function _getScheduledLifespan(\n address _user,\n address _superToken,\n uint256 _lifespan,\n int96 _flowRate\n ) internal view returns (uint256) {\n uint256 safeLifespan = _getValidSafeLifespan(\n _user,\n _superToken,\n _flowRate\n );\n\n LibControl.StorageControl storage sControl = LibControl\n ._storageControl();\n if (_lifespan < sControl.minimumEndDuration + sControl.minimumLifespan)\n revert InsufficientLifespan3();\n\n return _lifespan >= safeLifespan ? safeLifespan : _lifespan;\n }\n\n function _getAmountFlowed(\n address _user,\n address _superToken\n ) internal view returns (uint256) {\n uint256 amountFlowed;\n uint256 currentNonce = _getCurrentNonce(_user, _superToken);\n (\n address receiver,\n uint256 sessionNonce,\n uint256 timestampIncrease,\n uint256 timestampDecrease,\n\n ) = _getFlowData(_user, _superToken, currentNonce);\n (, uint96 flowRate, , uint256 timestampStop) = LibSession\n ._getSessionData(receiver, _superToken, sessionNonce);\n\n if (timestampDecrease != 0) {\n amountFlowed =\n uint256(flowRate) *\n (timestampDecrease - timestampIncrease);\n } else if (timestampStop != 0) {\n amountFlowed =\n uint256(flowRate) *\n (timestampStop - timestampIncrease);\n } else {\n amountFlowed = 0;\n }\n\n return amountFlowed;\n }\n\n // // NOTE: when edit this, edit `_getEffectiveBalanceRead` accordingly as well\n // function _getEffectiveBalance(\n // address _user,\n // address _superToken\n // ) internal returns (uint256) {\n // StorageFlow storage sFlow = _storageFlow();\n // uint256 unsettledFlowNonce = sFlow.unsettledFlowNonce[_user][\n // _superToken\n // ];\n // uint256 remainingNonces = _getNewNonce(_user, _superToken) -\n // unsettledFlowNonce; // as long as unsettledFlowNonce's state is only altered within `_getEffectiveBalance`, remainingNonces will not be negative value\n\n // uint256 amountFlow;\n // for (uint256 i = 0; i < remainingNonces; i++) {\n // // uint256 ii = unsettledFlowNonce + i;\n // // uint256 timestampIncrease = sFlow\n // // .flowRecord[_user][_superToken][ii].timestampIncrease;\n // // uint256 timestampDecrease = sFlow\n // // .flowRecord[_user][_superToken][ii].timestampDecrease;\n\n // // (, uint96 flowRate, , uint256 timestampStop) = LibSession\n // // ._getSessionDataFromFlow(_superToken, ii);\n\n // // if (timestampDecrease != 0) {\n // // amountFlow +=\n // // uint256(flowRate) *\n // // (timestampDecrease - timestampIncrease);\n // // } else if (timestampStop != 0) {\n // // amountFlow +=\n // // uint256(flowRate) *\n // // (timestampStop - timestampIncrease);\n // // } else {\n // // revert ContractError(); // for some reason ran this code when both timestampDecrease && timestampStop == 0\n // // }\n // amountFlow += _calculateAmountFlow(\n // _user,\n // _superToken,\n // unsettledFlowNonce + i\n // );\n\n // // if (_isSettle) sFlow.unsettledFlowNonce[_user][_superToken] += 1;\n // sFlow.unsettledFlowNonce[_user][_superToken] += 1;\n // }\n\n // return sFlow.deposits[_user][_superToken] - amountFlow;\n // }\n\n // function _getEffectiveBalanceRead(\n // address _user,\n // address _superToken\n // ) internal view returns (uint256) {\n // StorageFlow storage sFlow = _storageFlow();\n // uint256 unsettledFlowNonce = sFlow.unsettledFlowNonce[_user][\n // _superToken\n // ];\n // uint256 remainingNonces = _getNewNonce(_user, _superToken) -\n // unsettledFlowNonce; // as long as unsettledFlowNonce's state is only altered within `_getEffectiveBalance`, remainingNonces will not be negative value\n\n // uint256 amountFlow;\n // for (uint256 i = 0; i < remainingNonces; i++) {\n // amountFlow += _calculateAmountFlow(\n // _user,\n // _superToken,\n // unsettledFlowNonce + i\n // );\n // }\n\n // return sFlow.deposits[_user][_superToken] - amountFlow;\n // }\n\n // function _calculateAmountFlow(\n // address _user,\n // address _superToken,\n // uint256 _nonce\n // ) internal view returns (uint256) {\n // StorageFlow storage sFlow = _storageFlow();\n // uint256 timestampIncrease = sFlow\n // .flowRecord[_user][_superToken][_nonce].timestampIncrease;\n // uint256 timestampDecrease = sFlow\n // .flowRecord[_user][_superToken][_nonce].timestampDecrease;\n\n // (, uint96 flowRate, , uint256 timestampStop) = LibSession\n // ._getSessionDataFromFlow(_user, _superToken, _nonce);\n\n // if (timestampDecrease != 0) {\n // return uint256(flowRate) * (timestampDecrease - timestampIncrease);\n // } else if (timestampStop != 0) {\n // return uint256(flowRate) * (timestampStop - timestampIncrease);\n // } else {\n // revert ContractError(); // for some reason ran this code when both timestampDecrease && timestampStop == 0\n // }\n // }\n\n function _isViewSessionAllowed(\n address _viewer,\n address _broadcaster\n ) internal view returns (bool) {\n // LibSession.StorageSession storage sSession = LibSession\n // ._storageSession();\n\n // uint256 currentTimestamp = sSession\n // .sessionCurrent[_broadcaster]\n // .timestamp;\n // address[] memory superTokens = sSession\n // .sessionCurrent[_broadcaster]\n // .superTokens;\n\n (uint256 currentTimestamp, address[] memory superTokens) = LibSession\n ._getCurrentSessionData(_broadcaster);\n\n if (currentTimestamp == 0 || superTokens.length <= 0) return false;\n\n for (uint256 i = 0; i < superTokens.length; i++) {\n uint256 activeSessionNonce = LibSession._getCurrentNonce(\n _broadcaster,\n superTokens[i]\n );\n\n (, , uint256 timestampStart, uint256 timestampStop) = LibSession\n ._getSessionData(\n _broadcaster,\n superTokens[i],\n activeSessionNonce\n );\n\n if (timestampStart != currentTimestamp) return false;\n\n if (timestampStop != 0) return false;\n\n uint256 currentFlowNonce = _getCurrentNonce(\n _viewer,\n superTokens[i]\n );\n\n (\n address receiver,\n uint256 sessionNonce,\n uint256 timestampIncrease,\n uint256 timestampDecrease,\n\n ) = _getFlowData(_viewer, superTokens[i], currentFlowNonce);\n\n if (receiver != _broadcaster) return false;\n\n if (sessionNonce != activeSessionNonce) return false;\n\n if (timestampIncrease < currentTimestamp) return false;\n\n if (timestampDecrease != 0) return false;\n }\n\n return true;\n }\n\n function _hasActiveFlow(\n address _user,\n address _superToken\n ) internal view returns (bool) {\n uint256 newFlowNonce = _getNewNonce(_user, _superToken);\n if (newFlowNonce > 0) {\n (, , , uint256 timestampStop) = LibSession._getSessionDataFromFlow(\n _user,\n _superToken,\n newFlowNonce - 1\n );\n\n return\n _storageFlow()\n .flowRecord[_user][_superToken][newFlowNonce - 1]\n .timestampDecrease ==\n 0 &&\n timestampStop == 0;\n }\n return false;\n }\n\n function _getFlowData(\n address _user,\n address _superToken,\n uint256 _nonce\n ) internal view returns (address, uint256, uint256, uint256, bytes32) {\n address receiver = _storageFlow()\n .flowRecord[_user][_superToken][_nonce].receiver;\n uint256 sessionNonce = _storageFlow()\n .flowRecord[_user][_superToken][_nonce].sessionNonce;\n uint256 timestampIncrease = _storageFlow()\n .flowRecord[_user][_superToken][_nonce].timestampIncrease;\n uint256 timestampDecrease = _storageFlow()\n .flowRecord[_user][_superToken][_nonce].timestampDecrease;\n bytes32 taskId = _storageFlow()\n .flowRecord[_user][_superToken][_nonce].taskId;\n\n return (\n receiver,\n sessionNonce,\n timestampIncrease,\n timestampDecrease,\n taskId\n );\n }\n\n function _getDepositUser(\n address _user,\n address _superToken\n ) internal view returns (uint256) {\n return _storageFlow().deposits[_user][_superToken];\n }\n\n function _getDepositTotal(\n address _superToken\n ) internal view returns (uint256) {\n return _storageFlow().totalDeposits[_superToken];\n }\n\n ///// -------- utils --------- /////\n\n function _increaseFlow(\n address _superToken,\n address _sender,\n address _receiver,\n uint256 _nonce,\n int96 _flowRate\n ) internal {\n ISuperToken iSuperToken = ISuperToken(_superToken);\n int96 flowRate = iSuperToken.getFlowRate(address(this), _receiver);\n\n if (flowRate <= 0) {\n iSuperToken.createFlow(_receiver, _flowRate);\n } else {\n iSuperToken.updateFlow(_receiver, flowRate + _flowRate);\n }\n\n _storageFlow()\n .flowRecord[_sender][_superToken][_nonce].timestampIncrease = block\n .timestamp;\n }\n\n function _decreaseFlow(\n address _superToken,\n address _sender,\n address _receiver,\n uint256 _nonce,\n int96 _flowRate\n ) internal {\n ISuperToken iSuperToken = ISuperToken(_superToken);\n int96 flowRate = iSuperToken.getFlowRate(address(this), _receiver);\n\n if (flowRate - _flowRate <= 0) {\n iSuperToken.deleteFlow(address(this), _receiver);\n } else {\n iSuperToken.updateFlow(_receiver, flowRate - _flowRate);\n }\n\n _storageFlow()\n .flowRecord[_sender][_superToken][_nonce].timestampDecrease = block\n .timestamp;\n\n uint256 controlNonce = _storageFlow()\n .flowRecord[_sender][_superToken][_nonce].controlNonce;\n LibControl\n ._storageControl()\n .controlRecord[_superToken][controlNonce].timestampDecrease = block\n .timestamp;\n }\n}\n\n// TODO: a way to compute effective viewer balance without needing to withdraw (after funding)\n// TODO: (after funding) emit event in the \"withdraw fn\" of \"ControlRecord\"\n"},"contracts/facets/core/Control.sol":{"content":"// SPDX-License-Identifier: BUSL-1.1\npragma solidity ^0.8.9;\n\nimport {LibAccessControl} from \"../../libraries/utils/LibAccessControl.sol\";\nimport {LibControl, ArrayLengthNotMatch, InvalidFlowRateBounds} from \"../../libraries/core/LibControl.sol\";\nimport {IControl} from \"../../interfaces/core/IControl.sol\";\n\nimport {IterableMappingBPS} from \"../../libraries/utils/IterableMappingBPS.sol\";\n\ncontract Control is IControl {\n function depositAsset(address _superToken, uint256 _amount) external {\n LibControl._requireSuperTokenSupported(_superToken);\n LibControl._depositAsset(_superToken, _amount);\n }\n\n function withdrawAsset(address _superToken, uint256 _amount) external {\n /**\n * don't need to check if supertoken suppported or not\n * as there may be a chance that a supported supertoken\n * gets removed but there is still user funds in the app\n *\n * in that case, just let user withdraw as will fail anyway if 0 amount\n */\n LibControl._withdrawAsset(_superToken, _amount);\n }\n\n function withdrawFeeBalance(address _superToken, uint256 _amount) external {\n LibAccessControl._requireOnlyRole(LibAccessControl.TREASURER_ROLE);\n LibControl._withdrawFeeBalance(_superToken, _amount);\n }\n\n /**\n * do external analysis on up to what count flow ended\n * to determine what `count` should be\n */\n function realizeFeeBalance(uint256 count, address _superToken) external {\n LibControl._realizeFeeBalance(count, _superToken);\n } // TODO: safe to allow anyone to call it?\n\n function setMinimumEndDuration(uint256 _duration) external {\n LibAccessControl._requireOnlyRole(LibAccessControl.STRATEGIST_ROLE);\n LibControl._requireNonZeroValue(_duration);\n LibControl._setMinimumEndDuration(_duration);\n }\n\n function setMinimumLifespan(uint256 _duration) external {\n LibAccessControl._requireOnlyRole(LibAccessControl.STRATEGIST_ROLE);\n LibControl._requireNonZeroValue(_duration);\n LibControl._setMinimumLifespan(_duration);\n }\n\n function setSTBufferAmount(uint256 _duration) external {\n LibAccessControl._requireOnlyRole(LibAccessControl.STRATEGIST_ROLE);\n LibControl._requireNonZeroValue(_duration);\n LibControl._setSTBufferAmount(_duration);\n }\n\n function addSuperToken(address _superToken) external {\n LibAccessControl._requireOnlyRole(LibAccessControl.STRATEGIST_ROLE);\n LibControl._addSuperToken(_superToken);\n }\n\n function removeSuperToken(address _superToken) external {\n LibAccessControl._requireOnlyRole(LibAccessControl.STRATEGIST_ROLE);\n LibControl._removeSuperToken(_superToken);\n }\n\n function toggleBPS() external {\n LibAccessControl._requireOnlyRole(LibAccessControl.STRATEGIST_ROLE);\n LibControl._toggleBPS();\n }\n\n function clearBPS() external {\n LibAccessControl._requireOnlyRole(LibAccessControl.STRATEGIST_ROLE);\n LibControl._clearBPS();\n }\n\n /**\n * - flowRate must be asc value\n * - flowRateUpperBound value of i must be equal flowRateLowerBound value of i+1\n *\n * eg:\n *\n * array | tag | bound | bps\n * index | | lower | upper |\n * ----------------------------------\n * 0 | 1 | 0.001 | 0.002 | 4000 (40%)\n * 1 | 2 | 0.002 | 0.003 | 2000 (20%)\n * 2 | 3 | 0.003 | 0.005 | 500 (5%)\n *\n * how to call (eg):\n * first call has tags related to 720p\n * second call has tags related to 1080p\n *\n */\n function setBPS(\n uint16[] memory _bpss,\n uint96[] memory _flowRateLowerBounds,\n uint96[] memory _flowRateUpperBounds,\n uint256[] memory _tags\n ) external {\n LibAccessControl._requireOnlyRole(LibAccessControl.STRATEGIST_ROLE);\n if (\n _bpss.length != _flowRateLowerBounds.length ||\n _bpss.length != _flowRateUpperBounds.length ||\n _bpss.length != _tags.length\n ) revert ArrayLengthNotMatch();\n\n for (uint256 i = 0; i < _bpss.length; i++) {\n if (i < _bpss.length - 1) {\n if (_flowRateUpperBounds[i] != _flowRateLowerBounds[i + 1])\n revert InvalidFlowRateBounds();\n }\n\n LibControl._setBPS(\n _bpss[i],\n _flowRateLowerBounds[i],\n _flowRateUpperBounds[i],\n _tags[i]\n );\n }\n }\n\n function setSBPS(uint16 _bps, address _user) external {\n LibAccessControl._requireOnlyRole(LibAccessControl.STRATEGIST_ROLE);\n LibControl._setSBPS(_bps, _user);\n }\n\n function getFeeBalance(\n address _superToken\n ) external view returns (uint256) {\n return LibControl._getFeeBalance(_superToken);\n }\n\n function getControlData(\n address _superToken,\n uint256 _nonce\n ) external view returns (address, uint256, uint256, uint256) {\n return LibControl._getControlData(_superToken, _nonce);\n }\n\n function getNewControlNonce(\n address _superToken\n ) external view returns (uint256) {\n return LibControl._getNewNonce(_superToken);\n }\n\n function getMinimumEndDuration() external view returns (uint256) {\n return LibControl._getMinimumEndDuration();\n }\n\n function getMinimumLifespan() external view returns (uint256) {\n return LibControl._getMinimumLifespan();\n }\n\n function getSTBufferDurationInSecond() external view returns (uint256) {\n return LibControl._getSTBufferDurationInSecond();\n }\n\n function isSuperTokensSupported(\n address _superToken\n ) external view returns (bool) {\n return LibControl._isSuperTokensSupported(_superToken);\n }\n\n function isBPSEnabled() external view returns (bool) {\n return LibControl._isBPSEnabled();\n }\n\n function getBPSSize() external view returns (uint256) {\n return LibControl._getBPSSize();\n }\n\n function getBPSData(\n uint256 _tag\n ) external view returns (uint16, uint96, uint96) {\n return LibControl._getBPSData(_tag);\n }\n\n function getSBPS(address _user) external view returns (uint16) {\n return LibControl._getSBPS(_user);\n }\n\n function getNewBufferedAppBalance(\n address _superToken,\n int96 _newFlowRate\n ) external view returns (uint256) {\n return LibControl._getNewBufferedAppBalance(_superToken, _newFlowRate);\n } // helper\n\n function isNewFlowRateAllowed(\n address _superToken,\n int96 _newFlowRate\n ) external view returns (bool) {\n return LibControl._isNewFlowRateAllowed(_superToken, _newFlowRate);\n } // helper\n\n function getAssetUser(\n address _user,\n address _superToken\n ) external view returns (uint256) {\n return LibControl._getAssetUser(_user, _superToken);\n }\n\n function getAssetTotal(\n address _superToken\n ) external view returns (uint256) {\n return LibControl._getAssetTotal(_superToken);\n }\n}\n"},"contracts/facets/core/Flow.sol":{"content":"// SPDX-License-Identifier: BUSL-1.1\npragma solidity ^0.8.9;\n\nimport {ISuperToken} from \"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol\";\nimport {SuperTokenV1Library} from \"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol\";\n\nimport {LibAutomate} from \"../../libraries/core/LibAutomate.sol\";\nimport {LibControl, ArrayLengthNotMatch} from \"../../libraries/core/LibControl.sol\";\nimport {LibSession, SessionNotStarted} from \"../../libraries/core/LibSession.sol\";\nimport {LibFlow} from \"../../libraries/core/LibFlow.sol\";\nimport {IFlow} from \"../../interfaces/core/IFlow.sol\";\n\nimport \"../../services/gelato/Types.sol\";\n\nerror TooEarly();\n\ncontract Flow is IFlow {\n using SuperTokenV1Library for ISuperToken;\n\n /**\n * important:\n * with this `openFlow` implementation, it is possible to\n * open multiple flows with same session (cost to much to implement checks)\n * this does not cause an\n */\n /**\n * // TODO: need to check if you have sufficient deposits left or not\n * SOL1: have user manually off flow\n * SOL2: force settle blaance before open next flow (also force settle before withdraw)\n */\n function openFlow(\n address _receiver,\n address _superToken,\n uint256 _lifespan\n ) external {\n LibFlow._requireNoActiveFlow(_superToken); // as we cannot detect when user is trying to open multiple active flows to same session, we just restrict flow opening to 1 active globally at a time\n LibFlow._setRemainingBalance(msg.sender, _superToken); // TODO: test\n\n LibAutomate._requireSufficientAppGelatoBalance();\n LibControl._requireSuperTokenSupported(_superToken);\n LibSession.StorageSession storage sSession = LibSession\n ._storageSession();\n uint256 activeSessionNonce = LibSession._getCurrentNonce(\n _receiver,\n _superToken\n );\n\n if (\n sSession\n .sessionRecord[_receiver][_superToken][activeSessionNonce]\n .timestampStart == 0\n ) revert SessionNotStarted();\n\n LibFlow.StorageFlow storage sFlow = LibFlow._storageFlow();\n int96 flowRate = sSession\n .sessionRecord[_receiver][_superToken][activeSessionNonce]\n .effectiveFlowRate;\n LibControl._requireSufficientAppSTBalance(_superToken, flowRate);\n uint256 scheduledLifespan = LibFlow._getScheduledLifespan(\n msg.sender,\n _superToken,\n _lifespan,\n flowRate\n ); // indirectly checks if sufficient deposit or not\n\n // 1. set flow info\n uint256 newFlowNonce = LibFlow._getNewNonce(msg.sender, _superToken);\n\n sFlow\n .flowRecord[msg.sender][_superToken][newFlowNonce].receiver = _receiver;\n sFlow\n .flowRecord[msg.sender][_superToken][newFlowNonce]\n .sessionNonce = activeSessionNonce;\n\n LibControl.StorageControl storage sControl = LibControl\n ._storageControl();\n uint256 newControlNonce = sControl.controlNonce[_superToken];\n sControl\n .controlRecord[_superToken][newControlNonce].receiver = _receiver;\n sControl\n .controlRecord[_superToken][newControlNonce]\n .sessionNonce = activeSessionNonce;\n sControl\n .controlRecord[_superToken][newControlNonce].timestampIncrease = block\n .timestamp;\n sFlow\n .flowRecord[msg.sender][_superToken][newFlowNonce]\n .controlNonce = newControlNonce;\n\n // 2. start flow immediately\n LibFlow._increaseFlow(\n _superToken,\n msg.sender,\n _receiver,\n newFlowNonce,\n flowRate\n );\n\n // // 3. schedule stop flow\n ModuleData memory moduleDataFlowStop = ModuleData({\n modules: new Module[](2),\n args: new bytes[](1)\n });\n\n moduleDataFlowStop.modules[0] = Module.TIME;\n moduleDataFlowStop.modules[1] = Module.SINGLE_EXEC;\n\n moduleDataFlowStop.args[0] = LibAutomate._timeModuleArg(\n block.timestamp + scheduledLifespan,\n scheduledLifespan\n );\n\n bytes memory execDataFlowStop = abi.encodeWithSelector(\n this.decreaseFlow.selector,\n _superToken,\n msg.sender,\n _receiver,\n newFlowNonce,\n flowRate\n );\n\n sFlow\n .flowRecord[msg.sender][_superToken][newFlowNonce].taskId = LibAutomate\n ._storageAutomate()\n .gelatoAutobot\n .createTask(\n address(this),\n execDataFlowStop,\n moduleDataFlowStop,\n address(0)\n );\n\n // 4. finishing\n sFlow.flowNonce[msg.sender][_superToken] += 1;\n sControl.controlNonce[_superToken] += 1;\n }\n\n function decreaseFlow(\n address _superToken,\n address _sender,\n address _receiver,\n uint256 _nonce,\n int96 _flowRate\n ) external {\n LibAutomate._requireOnlyAutobot();\n\n LibFlow._decreaseFlow(\n _superToken,\n _sender,\n _receiver,\n _nonce,\n _flowRate\n );\n } // for autobot use // TODO: test frontend no one can call it !!\n\n function closeFlow(address _superToken, uint256 _nonce) external {\n LibFlow.StorageFlow storage sFlow = LibFlow._storageFlow();\n\n uint256 minimumEndTimestamp = sFlow\n .flowRecord[msg.sender][_superToken][_nonce].timestampIncrease +\n LibControl._storageControl().minimumLifespan;\n\n if (block.timestamp < minimumEndTimestamp) revert TooEarly();\n // no need check supertoken valid or not in case it suddenly goes unsupported\n\n // delete task\n LibAutomate._storageAutomate().gelatoAutobot.cancelTask(\n sFlow.flowRecord[msg.sender][_superToken][_nonce].taskId\n );\n\n // delete flow\n address receiver = sFlow\n .flowRecord[msg.sender][_superToken][_nonce].receiver;\n uint256 sessionNonce = sFlow\n .flowRecord[msg.sender][_superToken][_nonce].sessionNonce;\n\n LibFlow._decreaseFlow(\n _superToken,\n msg.sender,\n receiver,\n _nonce,\n LibSession\n ._storageSession()\n .sessionRecord[receiver][_superToken][sessionNonce]\n .effectiveFlowRate\n );\n }\n\n function depositSuperToken(address _superToken, uint256 _amount) external {\n LibControl._requireSuperTokenSupported(_superToken);\n LibFlow._depositSuperToken(_superToken, _amount);\n }\n\n function withdrawSuperToken(address _superToken, uint256 _amount) external {\n /**\n * don't need to check if supertoken suppported or not\n * as there may be a chance that a supported supertoken\n * gets removed but there is still user funds in the app\n *\n * in that case, just let user withdraw as will fail anyway if 0 amount\n */\n LibFlow._requireNoActiveFlow(_superToken);\n\n LibFlow._withdrawSuperToken(_superToken, _amount);\n } // TODO: test\n\n function getAmountFlowed(\n address _user,\n address _superToken\n ) external view returns (uint256) {\n return LibFlow._getAmountFlowed(_user, _superToken);\n }\n\n function getValidSafeLifespan(\n address _user,\n address _superToken,\n int96 _flowRate\n ) external view returns (uint256) {\n return LibFlow._getValidSafeLifespan(_user, _superToken, _flowRate);\n } // TODO: not so useful... remove.. ?\n\n /**\n * use `isViewSessionAllowed` to easily determine if viewer can \"join room\" or not\n * !! NOT used to determine if can `openFlow` or not...\n */\n function isViewSessionAllowed(\n address _viewer,\n address _broadcaster\n ) external view returns (bool) {\n return LibFlow._isViewSessionAllowed(_viewer, _broadcaster);\n }\n\n function hasActiveFlow(\n address _user,\n address _superToken\n ) external view returns (bool) {\n return LibFlow._hasActiveFlow(_user, _superToken);\n } // TODO: test\n\n function getNewFlowNonce(\n address _user,\n address _superToken\n ) external view returns (uint256) {\n return LibFlow._getNewNonce(_user, _superToken);\n } // TODO: test\n\n function getFlowData(\n address _user,\n address _superToken,\n uint256 _nonce\n )\n external\n view\n returns (address, uint256, uint256, uint256, bytes32, bool)\n {\n return LibFlow._getFlowData(_user, _superToken, _nonce);\n }\n\n function getDepositUser(\n address _user,\n address _superToken\n ) external view returns (uint256) {\n return LibFlow._getDepositUser(_user, _superToken);\n }\n\n function getDepositTotal(\n address _superToken\n ) external view returns (uint256) {\n return LibFlow._getDepositTotal(_superToken);\n }\n}\n\n// TODO: test - % take mechanism (just reduce flowrate based on % and leave cash in app contract?)\n// TODO: give broadcaster to optionally set an automated end date (do after get funding) - one reason to do this is viewer cannot withdraw if bc still live !!\n// TODO: emit events throughout (especially session & flow creation) so can track user stats eg: avg duration of flow, avg flow rate, sess vs flow count etc..\n// TODO: how to penalize broadcaster if dont end flow\n// // TODO: require checks for all fns\n"},"contracts/facets/core/Session.sol":{"content":"// SPDX-License-Identifier: BUSL-1.1\npragma solidity ^0.8.9;\n\nimport {LibControl, ArrayLengthNotMatch} from \"../../libraries/core/LibControl.sol\";\nimport {LibSession} from \"../../libraries/core/LibSession.sol\";\nimport {ISession} from \"../../interfaces/core/ISession.sol\";\n\ncontract Session is ISession {\n function startSession(\n address _superToken,\n uint96 _flowRate,\n uint256 _tag\n ) external {\n LibControl._requireSuperTokenSupported(_superToken);\n LibSession._startSession(_superToken, _flowRate, _tag);\n\n LibSession.StorageSession storage sSession = LibSession\n ._storageSession();\n\n sSession.sessionCurrent[msg.sender].timestamp = block.timestamp;\n sSession.sessionCurrent[msg.sender].superTokens.push(_superToken);\n } // TODO: test // if want to do open 1 livestream and supp multiple token, can do externally \"batch tx\" (TODO: test this, otherwise cr8 new fn using loops)\n\n function stopSession(address _superToken) external {\n // LibControl._requireSuperTokenSupported(_superTokens[i]);\n /**\n * don't need to check if supertoken suppported or not\n * as there may be a chance that a supported supertoken\n * gets removed but there is still session active with the\n * supertoken\n *\n * in that case, just let user withdraw as will fail anyway if 0 amount\n */\n\n LibSession._stopSession(_superToken);\n delete LibSession._storageSession().sessionCurrent[msg.sender];\n } // TODO: test\n\n function startSessions(\n address[] memory _superTokens,\n uint96[] memory _flowRates,\n uint256[] memory _tags\n ) external {\n if (\n _superTokens.length != _flowRates.length ||\n _superTokens.length != _tags.length\n ) revert ArrayLengthNotMatch();\n\n for (uint256 i = 0; i < _superTokens.length; i++) {\n LibControl._requireSuperTokenSupported(_superTokens[i]);\n LibSession._startSession(_superTokens[i], _flowRates[i], _tags[i]);\n }\n\n LibSession.StorageSession storage sSession = LibSession\n ._storageSession();\n\n sSession.sessionCurrent[msg.sender].timestamp = block.timestamp;\n sSession.sessionCurrent[msg.sender].superTokens = _superTokens;\n }\n\n function stopSessions(address[] memory _superTokens) external {\n for (uint256 i = 0; i < _superTokens.length; i++) {\n // LibControl._requireSuperTokenSupported(_superTokens[i]);\n /**\n * don't need to check if supertoken suppported or not\n * as there may be a chance that a supported supertoken\n * gets removed but there is still session active with the\n * supertoken\n *\n * in that case, just let user withdraw as will fail anyway if 0 amount\n */\n\n LibSession._stopSession(_superTokens[i]);\n }\n\n delete LibSession._storageSession().sessionCurrent[msg.sender];\n }\n\n function getNewSessionNonce(\n address _user,\n address _superToken\n ) external view returns (uint256) {\n return LibSession._getNewNonce(_user, _superToken);\n }\n\n function getSessionData(\n address _user,\n address _superToken,\n uint256 _nonce\n ) external view returns (int96, uint96, uint256, uint256) {\n return LibSession._getSessionData(_user, _superToken, _nonce);\n }\n\n function getCurrentSessionData(\n address _user\n ) external view returns (uint256, address[] memory) {\n return LibSession._getCurrentSessionData(_user);\n }\n}\n"},"contracts/interfaces/core/IAutomate.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\ninterface IAutomate {\n function setGelatoContracts(address _ops) external;\n\n function getGelatoAddresses()\n external\n view\n returns (address, address, address, address, address);\n\n function withdrawGelatoFunds(uint256 _amount) external;\n\n function depositGelatoFunds() external payable;\n\n function setMinimumAppGelatoBalance(uint256 _value) external;\n\n function getMinimumAppGelatoBalance() external view returns (uint256);\n}\n"},"contracts/interfaces/core/IControl.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\ninterface IControl {\n function depositAsset(address _superToken, uint256 _amount) external;\n\n function withdrawAsset(address _superToken, uint256 _amount) external;\n\n function withdrawFeeBalance(address _superToken, uint256 _amount) external;\n\n function realizeFeeBalance(uint256 count, address _superToken) external;\n\n function setMinimumEndDuration(uint256 _duration) external;\n\n function setMinimumLifespan(uint256 _duration) external;\n\n function setSTBufferAmount(uint256 _duration) external;\n\n function addSuperToken(address _superToken) external;\n\n function removeSuperToken(address _superToken) external;\n\n function toggleBPS() external;\n\n function clearBPS() external;\n\n function setBPS(\n uint16[] memory _bpss,\n uint96[] memory _flowRateLowerBounds,\n uint96[] memory _flowRateUpperBounds,\n uint256[] memory _tags\n ) external;\n\n function setSBPS(uint16 _bps, address _user) external;\n\n function getFeeBalance(address _superToken) external view returns (uint256);\n\n function getControlData(\n address _superToken,\n uint256 _nonce\n ) external view returns (address, uint256, uint256, uint256);\n\n function getNewControlNonce(\n address _superToken\n ) external view returns (uint256);\n\n function getMinimumEndDuration() external view returns (uint256);\n\n function getMinimumLifespan() external view returns (uint256);\n\n function getSTBufferDurationInSecond() external view returns (uint256);\n\n function isSuperTokensSupported(\n address _superToken\n ) external view returns (bool);\n\n function isBPSEnabled() external view returns (bool);\n\n function getBPSSize() external view returns (uint256);\n\n function getBPSData(\n uint256 _tag\n ) external view returns (uint16, uint96, uint96);\n\n function getSBPS(address _user) external view returns (uint16);\n\n function getNewBufferedAppBalance(\n address _superToken,\n int96 _newFlowRate\n ) external view returns (uint256);\n\n function isNewFlowRateAllowed(\n address _superToken,\n int96 _newFlowRate\n ) external view returns (bool);\n\n function getAssetUser(\n address _user,\n address _superToken\n ) external view returns (uint256);\n\n function getAssetTotal(address _superToken) external view returns (uint256);\n}\n"},"contracts/interfaces/core/IFlow.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\n// import {ISuperToken} from \"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol\";\n\ninterface IFlow {\n function openFlow(\n address _receiver,\n address _superToken,\n uint256 _lifespan\n ) external;\n\n function decreaseFlow(\n address _superToken,\n address _sender,\n address _receiver,\n uint256 _nonce,\n int96 _flowRate\n ) external;\n\n function closeFlow(address _superToken, uint256 _nonce) external;\n\n function depositSuperToken(address _superToken, uint256 _amount) external;\n\n function withdrawSuperToken(address _superToken, uint256 _amount) external;\n\n function getAmountFlowed(\n address _user,\n address _superToken\n ) external view returns (uint256);\n\n function getValidSafeLifespan(\n address _user,\n address _superToken,\n int96 _flowRate\n ) external view returns (uint256);\n\n function isViewSessionAllowed(\n address _viewer,\n address _broadcaster\n ) external view returns (bool);\n\n function hasActiveFlow(\n address _user,\n address _superToken\n ) external view returns (bool);\n\n function getNewFlowNonce(\n address _user,\n address _superToken\n ) external view returns (uint256);\n\n function getFlowData(\n address _user,\n address _superToken,\n uint256 _nonce\n ) external view returns (address, uint256, uint256, uint256, bytes32, bool);\n\n function getDepositUser(\n address _user,\n address _superToken\n ) external view returns (uint256);\n\n function getDepositTotal(\n address _superToken\n ) external view returns (uint256);\n}\n"},"contracts/interfaces/core/ISession.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\ninterface ISession {\n function startSession(\n address _superToken,\n uint96 _flowRate,\n uint256 _tag\n ) external;\n\n function stopSession(address _superToken) external;\n\n function startSessions(\n address[] memory _superTokens,\n uint96[] memory _flowRates,\n uint256[] memory _tags\n ) external;\n\n function stopSessions(address[] memory _superTokens) external;\n\n function getNewSessionNonce(\n address _user,\n address _superToken\n ) external view returns (uint256);\n\n function getSessionData(\n address _user,\n address _superToken,\n uint256 _nonce\n ) external view returns (int96, uint96, uint256, uint256);\n\n function getCurrentSessionData(\n address _user\n ) external view returns (uint256, address[] memory);\n}\n"},"contracts/interfaces/utils/IAccessControl.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\ninterface IAccessControl {\n function getDefaultAdminRole() external pure returns (bytes32);\n\n function getRole(string memory _role) external pure returns (bytes32);\n\n function hasRole(\n bytes32 _role,\n address _account\n ) external view returns (bool);\n\n function getRoleAdmin(bytes32 _role) external view returns (bytes32);\n\n function grantRole(bytes32 _role, address _account) external;\n\n function revokeRole(bytes32 _role, address _account) external;\n\n function renounceRole(bytes32 _role) external;\n}\n"},"contracts/interfaces/utils/ICut.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\ninterface ICut {\n enum FacetCutAction {\n Add,\n Replace,\n Remove\n }\n // Add=0, Replace=1, Remove=2\n\n struct FacetCut {\n address facetAddress;\n FacetCutAction action;\n bytes4[] functionSelectors;\n }\n\n /// @notice Add/replace/remove any number of functions and optionally execute\n /// a function with delegatecall\n /// @param _diamondCut Contains the facet addresses and function selectors\n /// @param _init The address of the contract or facet to execute _calldata\n /// @param _calldata A function call, including function selector and arguments\n /// _calldata is executed with delegatecall on _init\n function diamondCut(\n FacetCut[] calldata _diamondCut,\n address _init,\n bytes calldata _calldata\n ) external;\n\n event DiamondCut(FacetCut[] _diamondCut, address _init, bytes _calldata);\n}\n"},"contracts/interfaces/utils/IERC165.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\ninterface IERC165 {\n /// @notice Query if a contract implements an interface\n /// @param interfaceId The interface identifier, as specified in ERC-165\n /// @dev Interface identification is specified in ERC-165. This function\n /// uses less than 30,000 gas.\n /// @return `true` if the contract implements `interfaceID` and\n /// `interfaceID` is not 0xffffffff, `false` otherwise\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\n}\n"},"contracts/interfaces/utils/ILoupe.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\n// A loupe is a small magnifying glass used to look at diamonds.\n// These functions look at diamonds\ninterface ILoupe {\n /// These functions are expected to be called frequently\n /// by tools.\n\n struct Facet {\n address facetAddress;\n bytes4[] functionSelectors;\n }\n\n /// @notice Gets all facet addresses and their four byte function selectors.\n /// @return facets_ Facet\n function facets() external view returns (Facet[] memory facets_);\n\n /// @notice Gets all the function selectors supported by a specific facet.\n /// @param _facet The facet address.\n /// @return facetFunctionSelectors_\n function facetFunctionSelectors(\n address _facet\n ) external view returns (bytes4[] memory facetFunctionSelectors_);\n\n /// @notice Get all the facet addresses used by a diamond.\n /// @return facetAddresses_\n function facetAddresses()\n external\n view\n returns (address[] memory facetAddresses_);\n\n /// @notice Gets the facet that supports the given selector.\n /// @dev If facet is not found return address(0).\n /// @param _functionSelector The function selector.\n /// @return facetAddress_ The facet address.\n function facetAddress(\n bytes4 _functionSelector\n ) external view returns (address facetAddress_);\n}\n"},"contracts/interfaces/utils/IUtility.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\ninterface IUtility {\n function getNativeBalance() external view returns (uint256);\n\n function withdrawNativeBalance(uint256 _amount) external;\n}\n"},"contracts/libraries/core/LibAutomate.sol":{"content":"//SPDX-License-Identifier: BUSL-1.1\npragma solidity ^0.8.9;\n\nimport \"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\";\nimport \"../../services/gelato/Types.sol\";\n\n// gelato based\n\nerror InsufficientAppGelatoBalance();\nerror CallerNotAutobot();\n\nlibrary LibAutomate {\n using SafeERC20 for IERC20;\n\n bytes32 constant STORAGE_POSITION_AUTOMATE = keccak256(\"ds.automate\");\n address internal constant AUTOBOT_PROXY_FACTORY =\n 0xC815dB16D4be6ddf2685C201937905aBf338F5D7;\n address internal constant GELATO_FEE =\n 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE;\n\n struct StorageAutomate {\n IAutomate gelatoAutobot;\n ITaskTreasuryUpgradable gelatoTreasury;\n address gelatoNetwork;\n uint256 minimumAppGelatoBalance;\n }\n\n function _storageAutomate()\n internal\n pure\n returns (StorageAutomate storage s)\n {\n bytes32 position = STORAGE_POSITION_AUTOMATE;\n assembly {\n s.slot := position\n }\n }\n\n ///// ------- functions ------ /////\n\n ///// -------- mains --------- /////\n\n function _withdrawGelatoFunds(uint256 _amount) internal {\n _storageAutomate().gelatoTreasury.withdrawFunds(\n payable(msg.sender),\n GELATO_FEE,\n _amount\n );\n } // withdrawer address restriction set in facet\n\n function _depositGelatoFunds(uint256 _amount) internal {\n _storageAutomate().gelatoTreasury.depositFunds{value: _amount}(\n address(this), // address(this) = address of diamond\n GELATO_FEE,\n _amount\n );\n }\n\n function _getModuleData(\n uint256 _durationStart,\n uint256 _durationInterval\n ) internal view returns (ModuleData memory) {\n ModuleData memory moduleData = ModuleData({\n modules: new Module[](2),\n args: new bytes[](1)\n });\n\n moduleData.modules[0] = Module.TIME;\n moduleData.modules[1] = Module.SINGLE_EXEC;\n\n moduleData.args[0] = _timeModuleArg(\n block.timestamp + _durationStart,\n _durationInterval\n );\n\n return moduleData;\n }\n\n function _transfer(uint256 _fee, address _feeToken) internal {\n if (_feeToken == GELATO_FEE) {\n (bool success, ) = _storageAutomate().gelatoNetwork.call{\n value: _fee\n }(\"\");\n require(success, \"LibAutomate: _transfer failed\");\n } else {\n SafeERC20.safeTransfer(\n IERC20(_feeToken),\n _storageAutomate().gelatoNetwork,\n _fee\n );\n }\n }\n\n function _getFeeDetails()\n internal\n view\n returns (uint256 fee, address feeToken)\n {\n (fee, feeToken) = _storageAutomate().gelatoAutobot.getFeeDetails();\n }\n\n ///// ------- requires ------- /////\n\n function _requireOnlyAutobot() internal view {\n if (msg.sender != address(_storageAutomate().gelatoAutobot))\n revert CallerNotAutobot();\n }\n\n function _requireSufficientAppGelatoBalance() internal view {\n if (\n _getAppGelatoBalance() <= _storageAutomate().minimumAppGelatoBalance\n ) revert InsufficientAppGelatoBalance();\n }\n\n ///// ------- setters -------- /////\n\n function _setGelatoContracts(address _autobot) internal {\n _storageAutomate().gelatoAutobot = IAutomate(_autobot);\n _storageAutomate().gelatoNetwork = IAutomate(_autobot).gelato();\n _storageAutomate().gelatoTreasury = _storageAutomate()\n .gelatoAutobot\n .taskTreasury();\n }\n\n function _setMinimumAppGelatoBalance(uint256 _value) internal {\n _storageAutomate().minimumAppGelatoBalance = _value;\n }\n\n ///// ------- getters -------- /////\n\n function _getGelatoAddresses()\n internal\n view\n returns (address, address, address, address, address)\n {\n return (\n address(_storageAutomate().gelatoAutobot),\n address(_storageAutomate().gelatoTreasury),\n _storageAutomate().gelatoNetwork,\n AUTOBOT_PROXY_FACTORY,\n GELATO_FEE\n );\n }\n\n function _getMinimumAppGelatoBalance() internal view returns (uint256) {\n return _storageAutomate().minimumAppGelatoBalance;\n }\n\n function _getAppGelatoBalance() internal view returns (uint256) {\n return\n _storageAutomate().gelatoTreasury.userTokenBalance(\n address(this),\n GELATO_FEE\n );\n }\n\n ///// -------- utils --------- /////\n\n function _resolverModuleArg(\n address _resolverAddress,\n bytes memory _resolverData\n ) internal pure returns (bytes memory) {\n return abi.encode(_resolverAddress, _resolverData);\n }\n\n function _timeModuleArg(\n uint256 _startTime,\n uint256 _interval\n ) internal pure returns (bytes memory) {\n return abi.encode(uint128(_startTime), uint128(_interval));\n }\n\n function _proxyModuleArg() internal pure returns (bytes memory) {\n return bytes(\"\");\n }\n\n function _singleExecModuleArg() internal pure returns (bytes memory) {\n return bytes(\"\");\n }\n}\n"},"contracts/libraries/core/LibControl.sol":{"content":"//SPDX-License-Identifier: BUSL-1.1\npragma solidity ^0.8.9;\n\nimport {ISuperToken} from \"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol\";\nimport {SuperTokenV1Library} from \"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol\";\nimport {IterableMappingBPS, BasisPointsRange} from \"../utils/IterableMappingBPS.sol\";\n\nimport {LibSession} from \"./LibSession.sol\";\n\nerror ZeroValue();\nerror ArrayLengthNotMatch();\nerror InvalidSuperToken();\nerror InsufficientAppSTBalance();\nerror InsufficientAssets();\nerror InsufficientFeeBalance();\nerror InvalidFlowRateBounds();\nerror InvalidBasisPoints();\nerror InvalidFlowRate();\nerror ContractError();\n\nlibrary LibControl {\n using SuperTokenV1Library for ISuperToken;\n using IterableMappingBPS for IterableMappingBPS.Map;\n\n bytes32 constant STORAGE_POSITION_CONTROL = keccak256(\"ds.control\");\n uint8 internal constant bpsMin = 100;\n uint16 internal constant bpsMax = 10000;\n\n struct ControlRecord {\n address receiver;\n uint256 sessionNonce;\n uint256 timestampIncrease;\n uint256 timestampDecrease;\n }\n\n struct StorageControl {\n IterableMappingBPS.Map bps; // howtouse: input tag (uint256), check if input flowRate is within range of bounds, if not revert\n mapping(address => uint16) sbps; // special\n bool isBPSEnabled;\n uint256 minimumEndDuration; // seconds\n uint256 minimumLifespan; // seconds\n uint256 stBufferDurationInSecond;\n mapping(address => bool) superTokens;\n //\n mapping(address => uint256) unsettledControlNonce;\n mapping(address => uint256) controlNonce; // superToken --> nonce\n mapping(address => mapping(uint256 => ControlRecord)) controlRecord; // superToken --> nonce --> control record\n mapping(address => uint256) feeBalance; // superToken --> amount fee balance\n //\n mapping(address => mapping(address => uint256)) assets; // investor --> superToken --> amount deposit\n mapping(address => uint256) totalAssets; // superToken --> total amount\n }\n\n function _storageControl()\n internal\n pure\n returns (StorageControl storage s)\n {\n bytes32 position = STORAGE_POSITION_CONTROL;\n assembly {\n s.slot := position\n }\n }\n\n ///// ------- functions ------ /////\n\n ///// -------- mains --------- /////\n\n function _depositAsset(address _superToken, uint256 _amount) internal {\n ISuperToken(_superToken).transferFrom(\n msg.sender,\n address(this),\n _amount\n );\n\n _storageControl().assets[msg.sender][_superToken] += _amount;\n _storageControl().totalAssets[_superToken] += _amount;\n }\n\n function _withdrawAsset(address _superToken, uint256 _amount) internal {\n if (_storageControl().assets[msg.sender][_superToken] < _amount)\n revert InsufficientAssets();\n\n _storageControl().assets[msg.sender][_superToken] -= _amount;\n _storageControl().totalAssets[_superToken] -= _amount;\n\n ISuperToken(_superToken).transfer(msg.sender, _amount);\n }\n\n function _withdrawFeeBalance(\n address _superToken,\n uint256 _amount\n ) internal {\n if (_storageControl().feeBalance[_superToken] < _amount)\n revert InsufficientFeeBalance();\n\n _storageControl().feeBalance[_superToken] -= _amount;\n\n ISuperToken(_superToken).transferFrom(\n address(this),\n msg.sender,\n _amount\n );\n }\n\n function _realizeFeeBalance(uint256 count, address _superToken) internal {\n _storageControl().feeBalance[_superToken] += _getAppFeeBalance(\n count,\n _superToken,\n true\n );\n }\n\n function _getAppFeeBalance(\n uint256 count,\n address _superToken,\n bool _isSettle\n ) internal returns (uint256) {\n StorageControl storage sControl = _storageControl();\n uint256 unsettledControlNonce = sControl.unsettledControlNonce[\n _superToken\n ];\n // uint256 remainingNonces = _getNewNonce(_superToken) -\n // unsettledControlNonce;\n\n uint256 amountFee;\n for (uint256 i = 0; i < count; i++) {\n // uint256 ii = unsettledControlNonce + i;\n // uint256 timestampIncrease = sControl\n // .controlRecord[_superToken][ii].timestampIncrease;\n // uint256 timestampDecrease = sControl\n // .controlRecord[_superToken][ii].timestampDecrease;\n\n // (\n // int96 effectiveFlowRate,\n // uint96 flowRate,\n // ,\n // uint256 timestampStop\n // ) = LibSession._getSessionDataFromControl(_superToken, ii);\n\n // uint256 feeFlowRate = flowRate - uint96(effectiveFlowRate);\n\n // if (timestampDecrease != 0) {\n // amountFee +=\n // feeFlowRate *\n // (timestampDecrease - timestampIncrease);\n // } else if (timestampStop != 0) {\n // amountFee += feeFlowRate * (timestampStop - timestampIncrease);\n // } else {\n // revert ContractError(); // for some reason ran this code when both timestampDecrease && timestampStop == 0\n // }\n\n amountFee += _calculateAmountFee(\n _superToken,\n unsettledControlNonce + i\n );\n\n if (_isSettle) sControl.unsettledControlNonce[_superToken] += 1;\n }\n\n return amountFee;\n } // TODO: as we cannot control when flow starts, do a \"nonce until\" input to set up to which record we want to calculate for\n\n // TODO: if session doesn't end, we stuck cannot withdraw as withdraw fee amount depends on both flow and sess and iterates linearly, more reason to implement sesion auto end\n\n function _calculateAmountFee(\n address _superToken,\n uint256 _nonce\n ) internal view returns (uint256) {\n StorageControl storage sControl = _storageControl();\n uint256 timestampIncrease = sControl\n .controlRecord[_superToken][_nonce].timestampIncrease;\n uint256 timestampDecrease = sControl\n .controlRecord[_superToken][_nonce].timestampDecrease;\n\n (\n int96 effectiveFlowRate,\n uint96 flowRate,\n ,\n uint256 timestampStop\n ) = LibSession._getSessionDataFromControl(_superToken, _nonce);\n\n uint256 feeFlowRate = flowRate - uint96(effectiveFlowRate);\n\n if (timestampDecrease != 0) {\n return feeFlowRate * (timestampDecrease - timestampIncrease);\n } else if (timestampStop != 0) {\n return feeFlowRate * (timestampStop - timestampIncrease);\n } else {\n revert ContractError(); // for some reason ran this code when both timestampDecrease && timestampStop == 0\n }\n }\n\n ///// ------- requires ------- /////\n\n function _requireNonZeroValue(uint256 _value) internal pure {\n if (_value <= 0) revert ZeroValue();\n }\n\n function _requireSuperTokenSupported(address _superToken) internal view {\n if (!_isSuperTokensSupported(_superToken)) revert InvalidSuperToken();\n }\n\n /**\n * guard against how long before app runs out of funds and loses its deposit\n *\n * * `STBufferDurationInSecond` is a critical parameter and should be set as large as possible\n */\n function _requireSufficientAppSTBalance(\n address _superToken,\n int96 _newFlowRate\n ) internal view {\n if (!_isNewFlowRateAllowed(_superToken, _newFlowRate))\n revert InsufficientAppSTBalance();\n }\n\n function _requireValidBasisPoints(uint16 _bps) internal pure {\n if (_bps < bpsMin || _bps > bpsMax) revert InvalidBasisPoints();\n }\n\n ///// ------- setters -------- /////\n\n function _getNewNonce(address _superToken) internal view returns (uint256) {\n return _storageControl().controlNonce[_superToken];\n }\n\n function _setMinimumEndDuration(uint256 _duration) internal {\n _storageControl().minimumEndDuration = _duration;\n }\n\n function _setMinimumLifespan(uint256 _duration) internal {\n _storageControl().minimumLifespan = _duration;\n }\n\n function _setSTBufferAmount(uint256 _duration) internal {\n _storageControl().stBufferDurationInSecond = _duration;\n }\n\n function _addSuperToken(address _superToken) internal {\n _storageControl().superTokens[_superToken] = true;\n }\n\n function _removeSuperToken(address _superToken) internal {\n delete _storageControl().superTokens[_superToken];\n }\n\n function _toggleBPS() internal {\n _storageControl().isBPSEnabled = !_storageControl().isBPSEnabled;\n }\n\n function _clearBPS() internal {\n uint256 sizeBeforeClear = _getBPSSize();\n for (uint256 i = 0; i < sizeBeforeClear; i++) {\n uint256 tag = _storageControl().bps.getKeyAtIndex(\n _getBPSSize() - 1\n );\n _storageControl().bps.remove(tag);\n }\n }\n\n function _setBPS(\n uint16 _bps,\n uint96 _flowRateLowerBound,\n uint96 _flowRateUpperBound,\n uint256 _tag\n ) internal {\n _requireValidBasisPoints(_bps);\n if (_flowRateUpperBound < _flowRateLowerBound)\n revert InvalidFlowRateBounds();\n _storageControl().bps.set(\n _tag,\n _bps,\n _flowRateLowerBound,\n _flowRateUpperBound\n );\n }\n\n function _setSBPS(uint16 _bps, address _user) internal {\n _requireValidBasisPoints(_bps);\n _storageControl().sbps[_user] = _bps;\n } // to clear, just call and set _bps to 0 value\n\n ///// ------- getters -------- /////\n\n function _getFeeBalance(\n address _superToken\n ) internal view returns (uint256) {\n return _storageControl().feeBalance[_superToken];\n }\n\n function _getControlData(\n address _superToken,\n uint256 _nonce\n ) internal view returns (address, uint256, uint256, uint256) {\n address receiver = _storageControl()\n .controlRecord[_superToken][_nonce].receiver;\n uint256 sessionNonce = _storageControl()\n .controlRecord[_superToken][_nonce].sessionNonce;\n uint256 timestampIncrease = _storageControl()\n .controlRecord[_superToken][_nonce].timestampIncrease;\n uint256 timestampDecrease = _storageControl()\n .controlRecord[_superToken][_nonce].timestampDecrease;\n\n return (receiver, sessionNonce, timestampIncrease, timestampDecrease);\n }\n\n function _getMinimumEndDuration() internal view returns (uint256) {\n return _storageControl().minimumEndDuration;\n }\n\n function _getMinimumLifespan() internal view returns (uint256) {\n return _storageControl().minimumLifespan;\n }\n\n function _getSTBufferDurationInSecond() internal view returns (uint256) {\n return _storageControl().stBufferDurationInSecond;\n }\n\n function _isSuperTokensSupported(\n address _superToken\n ) internal view returns (bool) {\n return _storageControl().superTokens[_superToken];\n }\n\n function _isBPSEnabled() internal view returns (bool) {\n return _storageControl().isBPSEnabled;\n }\n\n function _getBPSSize() internal view returns (uint256) {\n return _storageControl().bps.size();\n }\n\n function _getValidBPS(\n uint96 _flowRate,\n uint256 _tag\n ) internal view returns (uint16) {\n (\n uint16 bps,\n uint96 flowRateLowerBound,\n uint96 flowRateUpperBound\n ) = _getBPSData(_tag);\n\n if (_flowRate < flowRateLowerBound || _flowRate >= flowRateUpperBound)\n revert InvalidFlowRate();\n\n return bps;\n }\n\n function _getBPSData(\n uint256 _tag\n ) internal view returns (uint16, uint96, uint96) {\n BasisPointsRange memory data = _storageControl().bps.get(_tag);\n return (data.bps, data.flowRateLowerBound, data.flowRateUpperBound);\n }\n\n function _getSBPS(address _user) internal view returns (uint16) {\n return _storageControl().sbps[_user];\n }\n\n function _getNewBufferedAppBalance(\n address _superToken,\n int96 _newFlowRate\n ) internal view returns (uint256) {\n ISuperToken iSuperToken = ISuperToken(_superToken);\n uint256 newBufferAmount = iSuperToken.getBufferAmountByFlowRate(\n _newFlowRate\n );\n int96 contractNetFlowRate = iSuperToken.getNetFlowRate(address(this));\n\n return\n newBufferAmount +\n (uint256(uint96(contractNetFlowRate + _newFlowRate)) *\n _storageControl().stBufferDurationInSecond);\n }\n\n function _isNewFlowRateAllowed(\n address _superToken,\n int96 _newFlowRate\n ) internal view returns (bool) {\n uint256 contractBalance = ISuperToken(_superToken).balanceOf(\n address(this)\n );\n\n return\n contractBalance >\n _getNewBufferedAppBalance(_superToken, _newFlowRate);\n }\n\n function _getAssetUser(\n address _user,\n address _superToken\n ) internal view returns (uint256) {\n return _storageControl().assets[_user][_superToken];\n }\n\n function _getAssetTotal(\n address _superToken\n ) internal view returns (uint256) {\n return _storageControl().totalAssets[_superToken];\n }\n\n ///// -------- utils --------- /////\n}\n\n// TODO: a way to differentiate \"earned\" holdings from all holdings\n"},"contracts/libraries/core/LibFlow.sol":{"content":"//SPDX-License-Identifier: BUSL-1.1\npragma solidity ^0.8.9;\n\nimport {ISuperToken} from \"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol\";\nimport {SuperTokenV1Library} from \"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol\";\n\nimport {LibControl, ContractError} from \"./LibControl.sol\";\nimport {LibSession} from \"./LibSession.sol\";\n\n// import \"hardhat/console.sol\";\n\nerror InsufficientFunds();\nerror InsufficientLifespan1();\nerror InsufficientLifespan2();\nerror InsufficientLifespan3();\nerror HasActiveFlow();\nerror InvalidBalance1();\nerror InvalidBalance2();\n\nlibrary LibFlow {\n using SuperTokenV1Library for ISuperToken;\n\n bytes32 constant STORAGE_POSITION_FLOW = keccak256(\"ds.flow\");\n\n struct FlowRecord {\n uint256 controlNonce; // TODO: add to flow test\n address receiver;\n uint256 sessionNonce;\n uint256 timestampIncrease; // timestamp at which viewer opened a flow with bc\n uint256 timestampDecrease; // timestamp at which viewer closed a flow with bc // may be 0\n bytes32 taskId; // decrease flow of viewer to broadcaster\n bool isBalanceSettled;\n }\n\n struct StorageFlow {\n // mapping(address => mapping(address => uint256)) unsettledFlowNonce; // viewer --> superToken --> nonce (counter) from this nonce count onwards is still unsettled\n mapping(address => mapping(address => uint256)) flowNonce; // viewer --> superToken --> nonce (counter)\n mapping(address => mapping(address => mapping(uint256 => FlowRecord))) flowRecord; // viewer --> superToken --> nonce --> flow record\n //\n mapping(address => mapping(address => uint256)) deposits; // viewer --> superToken --> amount deposit\n mapping(address => uint256) totalDeposits; // superToken --> total amount\n }\n\n function _storageFlow() internal pure returns (StorageFlow storage s) {\n bytes32 position = STORAGE_POSITION_FLOW;\n assembly {\n s.slot := position\n }\n }\n\n ///// ------- functions ------ /////\n\n ///// -------- mains --------- /////\n\n function _depositSuperToken(address _superToken, uint256 _amount) internal {\n ISuperToken(_superToken).transferFrom(\n msg.sender,\n address(this),\n _amount\n );\n\n _storageFlow().deposits[msg.sender][_superToken] += _amount;\n _storageFlow().totalDeposits[_superToken] += _amount;\n }\n\n function _withdrawSuperToken(\n address _superToken,\n uint256 _amount\n ) internal {\n // uint256 amountRemaining = _getEffectiveBalance(msg.sender, _superToken);\n _setRemainingBalance(msg.sender, _superToken); // TODO: test\n\n uint256 amountRemaining = _storageFlow().deposits[msg.sender][\n _superToken\n ];\n\n if (amountRemaining < _amount) revert InsufficientFunds();\n\n _storageFlow().deposits[msg.sender][_superToken] -= _amount;\n _storageFlow().totalDeposits[_superToken] -= _amount;\n\n ISuperToken(_superToken).transferFrom(\n address(this),\n msg.sender,\n _amount\n );\n }\n\n ///// ------- requires ------- /////\n\n function _requireNoActiveFlow(address _superToken) internal view {\n if (_hasActiveFlow(msg.sender, _superToken)) revert HasActiveFlow();\n }\n\n ///// ------- setters -------- /////\n\n function _setRemainingBalance(address _user, address _superToken) internal {\n uint256 amountFlowed = _getAmountFlowed(_user, _superToken);\n\n _storageFlow().deposits[_user][_superToken] -= amountFlowed;\n _storageFlow().totalDeposits[_superToken] -= amountFlowed;\n\n if (_storageFlow().deposits[_user][_superToken] < 0)\n revert InvalidBalance1(); // should never be run!\n if (_storageFlow().totalDeposits[_superToken] < 0)\n revert InvalidBalance2(); // should never be run!\n\n uint256 newFlowNonce = _getNewNonce(_user, _superToken);\n if (newFlowNonce > 0)\n _storageFlow()\n .flowRecord[_user][_superToken][newFlowNonce - 1]\n .isBalanceSettled = true; // TODO: change other parts to depend on this instead of check timestamp.. etc\n // this is like, not only your previous session must be non-active, but it must have settled the balance!\n } // TODO: test\n\n ///// ------- getters -------- /////\n\n function _getValidSafeLifespan(\n address _user,\n address _superToken,\n int96 _flowRate\n ) internal view returns (uint256) {\n uint256 unsafeLifespan = _storageFlow().deposits[_user][_superToken] /\n uint256(uint96(_flowRate));\n\n LibControl.StorageControl storage sControl = LibControl\n ._storageControl();\n\n if (unsafeLifespan < sControl.minimumEndDuration)\n revert InsufficientLifespan1();\n\n uint256 safeLifespan = unsafeLifespan - sControl.minimumEndDuration;\n\n if (safeLifespan < sControl.minimumLifespan)\n revert InsufficientLifespan2();\n\n return safeLifespan;\n }\n\n /**\n * flowRate --> 1 sec\n * maximumFlowAmount --> maximumFlowAmount/flowRate [in sec]\n */\n function _getScheduledLifespan(\n address _user,\n address _superToken,\n uint256 _lifespan,\n int96 _flowRate\n ) internal view returns (uint256) {\n uint256 safeLifespan = _getValidSafeLifespan(\n _user,\n _superToken,\n _flowRate\n );\n\n LibControl.StorageControl storage sControl = LibControl\n ._storageControl();\n if (_lifespan < sControl.minimumEndDuration + sControl.minimumLifespan)\n revert InsufficientLifespan3();\n\n return _lifespan >= safeLifespan ? safeLifespan : _lifespan;\n }\n\n function _getAmountFlowed(\n address _user,\n address _superToken\n ) internal view returns (uint256) {\n uint256 amountFlowed;\n uint256 currentNonce = _getCurrentNonce(_user, _superToken);\n (\n address receiver,\n uint256 sessionNonce,\n uint256 timestampIncrease,\n uint256 timestampDecrease,\n ,\n bool isBalanceSettled\n ) = _getFlowData(_user, _superToken, currentNonce);\n (, uint96 flowRate, , uint256 timestampStop) = LibSession\n ._getSessionData(receiver, _superToken, sessionNonce);\n\n if (isBalanceSettled) {\n amountFlowed = 0;\n } else {\n if (timestampDecrease != 0) {\n amountFlowed =\n uint256(flowRate) *\n (timestampDecrease - timestampIncrease);\n } else if (timestampStop != 0) {\n amountFlowed =\n uint256(flowRate) *\n (timestampStop - timestampIncrease);\n } else {\n amountFlowed = 0;\n }\n }\n\n return amountFlowed;\n }\n\n function _hasActiveFlow(\n address _user,\n address _superToken\n ) internal view returns (bool) {\n uint256 newFlowNonce = _getNewNonce(_user, _superToken);\n if (newFlowNonce > 0) {\n (, , , uint256 timestampStop) = LibSession._getSessionDataFromFlow(\n _user,\n _superToken,\n newFlowNonce - 1\n );\n\n return\n _storageFlow()\n .flowRecord[_user][_superToken][newFlowNonce - 1]\n .timestampDecrease ==\n 0 &&\n timestampStop == 0;\n }\n return false;\n }\n\n function _isViewSessionAllowed(\n address _viewer,\n address _broadcaster\n ) internal view returns (bool) {\n (uint256 currentTimestamp, address[] memory superTokens) = LibSession\n ._getCurrentSessionData(_broadcaster);\n\n if (currentTimestamp == 0 || superTokens.length <= 0) return false;\n\n for (uint256 i = 0; i < superTokens.length; i++) {\n uint256 activeSessionNonce = LibSession._getCurrentNonce(\n _broadcaster,\n superTokens[i]\n );\n\n (, , uint256 timestampStart, uint256 timestampStop) = LibSession\n ._getSessionData(\n _broadcaster,\n superTokens[i],\n activeSessionNonce\n );\n\n if (timestampStart != currentTimestamp) return false;\n\n if (timestampStop != 0) return false;\n\n uint256 currentFlowNonce = _getCurrentNonce(\n _viewer,\n superTokens[i]\n );\n\n (\n address receiver,\n uint256 sessionNonce,\n uint256 timestampIncrease,\n uint256 timestampDecrease,\n ,\n\n ) = _getFlowData(_viewer, superTokens[i], currentFlowNonce);\n\n if (receiver != _broadcaster) return false;\n\n if (sessionNonce != activeSessionNonce) return false;\n\n if (timestampIncrease < currentTimestamp) return false;\n\n if (timestampDecrease != 0) return false;\n }\n\n return true;\n }\n\n function _getNewNonce(\n address _user,\n address _superToken\n ) internal view returns (uint256) {\n return _storageFlow().flowNonce[_user][_superToken];\n }\n\n function _getCurrentNonce(\n address _user,\n address _superToken\n ) internal view returns (uint256) {\n uint256 nonce = _storageFlow().flowNonce[_user][_superToken];\n return nonce == 0 ? 0 : nonce - 1;\n }\n\n function _getFlowData(\n address _user,\n address _superToken,\n uint256 _nonce\n )\n internal\n view\n returns (address, uint256, uint256, uint256, bytes32, bool)\n {\n return (\n _storageFlow().flowRecord[_user][_superToken][_nonce].receiver,\n _storageFlow().flowRecord[_user][_superToken][_nonce].sessionNonce,\n _storageFlow()\n .flowRecord[_user][_superToken][_nonce].timestampIncrease,\n _storageFlow()\n .flowRecord[_user][_superToken][_nonce].timestampDecrease,\n _storageFlow().flowRecord[_user][_superToken][_nonce].taskId,\n _storageFlow()\n .flowRecord[_user][_superToken][_nonce].isBalanceSettled\n );\n }\n\n function _getDepositUser(\n address _user,\n address _superToken\n ) internal view returns (uint256) {\n return _storageFlow().deposits[_user][_superToken];\n }\n\n function _getDepositTotal(\n address _superToken\n ) internal view returns (uint256) {\n return _storageFlow().totalDeposits[_superToken];\n }\n\n ///// -------- utils --------- /////\n\n function _increaseFlow(\n address _superToken,\n address _sender,\n address _receiver,\n uint256 _nonce,\n int96 _flowRate\n ) internal {\n ISuperToken iSuperToken = ISuperToken(_superToken);\n int96 flowRate = iSuperToken.getFlowRate(address(this), _receiver);\n\n if (flowRate <= 0) {\n iSuperToken.createFlow(_receiver, _flowRate);\n } else {\n iSuperToken.updateFlow(_receiver, flowRate + _flowRate);\n }\n\n _storageFlow()\n .flowRecord[_sender][_superToken][_nonce].timestampIncrease = block\n .timestamp;\n }\n\n function _decreaseFlow(\n address _superToken,\n address _sender,\n address _receiver,\n uint256 _nonce,\n int96 _flowRate\n ) internal {\n ISuperToken iSuperToken = ISuperToken(_superToken);\n int96 flowRate = iSuperToken.getFlowRate(address(this), _receiver);\n\n if (flowRate - _flowRate <= 0) {\n iSuperToken.deleteFlow(address(this), _receiver);\n } else {\n iSuperToken.updateFlow(_receiver, flowRate - _flowRate);\n }\n\n _storageFlow()\n .flowRecord[_sender][_superToken][_nonce].timestampDecrease = block\n .timestamp;\n\n uint256 controlNonce = _storageFlow()\n .flowRecord[_sender][_superToken][_nonce].controlNonce;\n LibControl\n ._storageControl()\n .controlRecord[_superToken][controlNonce].timestampDecrease = block\n .timestamp;\n }\n}\n\n// TODO: a way to compute effective viewer balance without needing to withdraw (after funding)\n// TODO: (after funding) emit event in the \"withdraw fn\" of \"ControlRecord\"\n"},"contracts/libraries/core/LibSession.sol":{"content":"//SPDX-License-Identifier: BUSL-1.1\npragma solidity ^0.8.9;\n\nimport {ISuperToken} from \"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol\";\nimport {SuperTokenV1Library} from \"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol\";\n\nimport {LibControl, InvalidFlowRate} from \"./LibControl.sol\";\nimport {LibFlow} from \"./LibFlow.sol\";\n\nerror PreviousSessionStillLive();\nerror SessionNotStarted();\nerror SessionAlreadyEnded();\n\nlibrary LibSession {\n using SuperTokenV1Library for ISuperToken;\n\n bytes32 constant STORAGE_POSITION_SESSION = keccak256(\"ds.session\");\n\n struct SessionCurrent {\n uint256 timestamp;\n address[] superTokens;\n }\n\n struct SessionRecord {\n int96 effectiveFlowRate;\n uint96 flowRate;\n uint256 timestampStart;\n uint256 timestampStop;\n }\n\n struct StorageSession {\n mapping(address => mapping(address => uint256)) sessionNonce; // broadcaster --> superToken --> nonce (counter)\n mapping(address => mapping(address => mapping(uint256 => SessionRecord))) sessionRecord; // broadcaster --> superToken --> nonce --> session history\n mapping(address => SessionCurrent) sessionCurrent; // broadcaster --> current live session\n }\n\n function _storageSession()\n internal\n pure\n returns (StorageSession storage s)\n {\n bytes32 position = STORAGE_POSITION_SESSION;\n assembly {\n s.slot := position\n }\n }\n\n ///// ------- functions ------ /////\n\n ///// -------- mains --------- /////\n\n /**\n * startSession helps with\n * 1. ensures only one supertoken session per broadcaster is open\n * (may have multiple sessionRecord but at different supertokens).\n * 2. to verify if different supertoken session belongs to the same \"livestream\",\n * for every supertoken latest nonce, `timestampStart` must equal `currentTimestamp`,\n * and currentTimestamp != 0. Do check externally (frontend/backend)\n */\n function _startSession(\n address _superToken,\n uint96 _flowRate,\n uint256 _tag\n ) internal {\n StorageSession storage sSession = _storageSession();\n uint256 newNonce = _getNewNonce(msg.sender, _superToken);\n\n if (\n newNonce > 0 &&\n sSession\n .sessionRecord[msg.sender][_superToken][newNonce - 1]\n .timestampStop ==\n 0\n ) revert PreviousSessionStillLive();\n\n LibFlow._requireNoActiveFlow(_superToken);\n\n int96 effectiveFlowRate = _getEffectiveFlowRate(\n msg.sender,\n _flowRate,\n _tag\n ); // TODO: test\n\n // start session\n sSession\n .sessionRecord[msg.sender][_superToken][newNonce]\n .effectiveFlowRate = effectiveFlowRate;\n sSession\n .sessionRecord[msg.sender][_superToken][newNonce].flowRate = _flowRate;\n sSession\n .sessionRecord[msg.sender][_superToken][newNonce].timestampStart = block\n .timestamp;\n\n // finish\n _storageSession().sessionNonce[msg.sender][_superToken] += 1;\n } // TODO: add require app gelato bal, after adding auto end sess functionality\n\n // TODO: revert if have active outflow\n\n function _stopSession(address _superToken) internal {\n uint256 activeNonce = _getCurrentNonce(msg.sender, _superToken);\n if (\n _storageSession()\n .sessionRecord[msg.sender][_superToken][activeNonce]\n .timestampStart == 0\n ) revert SessionNotStarted();\n if (\n _storageSession()\n .sessionRecord[msg.sender][_superToken][activeNonce]\n .timestampStop != 0\n ) revert SessionAlreadyEnded();\n\n ISuperToken iSuperToken = ISuperToken(_superToken);\n int96 flowRate = iSuperToken.getFlowRate(address(this), msg.sender);\n if (flowRate != 0) iSuperToken.deleteFlow(address(this), msg.sender);\n\n // update\n _storageSession()\n .sessionRecord[msg.sender][_superToken][activeNonce]\n .timestampStop = block.timestamp;\n } // all the active taskId will just fail to execute\n\n ///// ------- requires ------- /////\n\n ///// ------- setters -------- /////\n\n ///// ------- getters -------- /////\n\n function _getEffectiveFlowRate(\n address _user,\n uint96 _flowRate,\n uint256 _tag\n ) internal view returns (int96) {\n uint16 bps;\n uint16 sbps = LibControl._storageControl().sbps[_user];\n if (sbps > 0) {\n bps = sbps;\n } else {\n if (LibControl._isBPSEnabled())\n bps = LibControl._getValidBPS(_flowRate, _tag);\n }\n\n if (bps == 0) {\n return int96(_flowRate);\n } else {\n if ((_flowRate * bps) < LibControl.bpsMax) revert InvalidFlowRate();\n return int96((_flowRate * bps) / LibControl.bpsMax);\n }\n } // TODO: test\n\n function _getNewNonce(\n address _user,\n address _superToken\n ) internal view returns (uint256) {\n return _storageSession().sessionNonce[_user][_superToken];\n }\n\n function _getCurrentNonce(\n address _user,\n address _superToken\n ) internal view returns (uint256) {\n uint256 nonce = _storageSession().sessionNonce[_user][_superToken];\n return nonce == 0 ? 0 : nonce - 1;\n }\n\n function _getCurrentSessionData(\n address _user\n ) internal view returns (uint256, address[] memory) {\n return (\n _storageSession().sessionCurrent[_user].timestamp,\n _storageSession().sessionCurrent[_user].superTokens\n );\n }\n\n function _getSessionData(\n address _user,\n address _superToken,\n uint256 _nonce\n ) internal view returns (int96, uint96, uint256, uint256) {\n return (\n _storageSession()\n .sessionRecord[_user][_superToken][_nonce].effectiveFlowRate,\n _storageSession()\n .sessionRecord[_user][_superToken][_nonce].flowRate,\n _storageSession()\n .sessionRecord[_user][_superToken][_nonce].timestampStart,\n _storageSession()\n .sessionRecord[_user][_superToken][_nonce].timestampStop\n );\n }\n\n function _getSessionDataFromFlow(\n address _user,\n address _superToken,\n uint256 _nonce\n ) internal view returns (int96, uint96, uint256, uint256) {\n LibFlow.StorageFlow storage sFlow = LibFlow._storageFlow();\n\n address receiver = sFlow\n .flowRecord[_user][_superToken][_nonce].receiver;\n uint256 sessionNonce = sFlow\n .flowRecord[_user][_superToken][_nonce].sessionNonce;\n\n return _getSessionData(receiver, _superToken, sessionNonce);\n }\n\n function _getSessionDataFromControl(\n address _superToken,\n uint256 _nonce\n ) internal view returns (int96, uint96, uint256, uint256) {\n LibControl.StorageControl storage sControl = LibControl\n ._storageControl();\n\n address receiver = sControl.controlRecord[_superToken][_nonce].receiver;\n uint256 sessionNonce = sControl\n .controlRecord[_superToken][_nonce].sessionNonce;\n\n return _getSessionData(receiver, _superToken, sessionNonce);\n }\n\n ///// -------- utils --------- /////\n}\n"},"contracts/libraries/utils/IterableMappingBPS.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.17;\n\nstruct BasisPointsRange {\n uint16 bps; // basis points // perc fee 1% = 100bps\n uint96 flowRateLowerBound;\n uint96 flowRateUpperBound;\n}\n\nlibrary IterableMappingBPS {\n // Iterable mapping from uint256 (tag) to BasisPointsRange;\n struct Map {\n uint256[] keys;\n mapping(uint256 => BasisPointsRange) values;\n mapping(uint256 => uint256) indexOf;\n mapping(uint256 => bool) inserted;\n }\n\n function get(\n Map storage map,\n uint256 key\n ) internal view returns (BasisPointsRange memory) {\n return map.values[key];\n }\n\n function getKeyAtIndex(\n Map storage map,\n uint256 index\n ) internal view returns (uint256) {\n return map.keys[index];\n }\n\n function size(Map storage map) internal view returns (uint256) {\n return map.keys.length;\n }\n\n function set(\n Map storage map,\n uint256 key,\n uint16 _bps,\n uint96 _flowRateLowerBound,\n uint96 _flowRateUpperBound\n ) internal {\n if (map.inserted[key]) {\n map.values[key].bps = _bps;\n map.values[key].flowRateLowerBound = _flowRateLowerBound;\n map.values[key].flowRateUpperBound = _flowRateUpperBound;\n } else {\n map.inserted[key] = true;\n\n map.values[key].bps = _bps;\n map.values[key].flowRateLowerBound = _flowRateLowerBound;\n map.values[key].flowRateUpperBound = _flowRateUpperBound;\n\n map.indexOf[key] = map.keys.length;\n map.keys.push(key);\n }\n }\n\n function remove(Map storage map, uint256 key) internal {\n if (!map.inserted[key]) {\n return;\n }\n\n delete map.inserted[key];\n delete map.values[key];\n\n uint index = map.indexOf[key];\n uint lastIndex = map.keys.length - 1;\n uint256 lastKey = map.keys[lastIndex];\n\n map.indexOf[lastKey] = index;\n delete map.indexOf[key];\n\n map.keys[index] = lastKey;\n map.keys.pop();\n }\n}\n"},"contracts/libraries/utils/LibAccessControl.sol":{"content":"//SPDX-License-Identifier: BUSL-1.1\npragma solidity ^0.8.9;\n\nimport \"@openzeppelin/contracts/utils/Strings.sol\";\n\nlibrary LibAccessControl {\n bytes32 constant STORAGE_POSITION_ACCESSCONTROL =\n keccak256(\"ds.accesscontrol\");\n\n bytes32 constant DEFAULT_ADMIN_ROLE = 0x00;\n bytes32 constant MAINTAINER_ROLE = keccak256(abi.encode(\"MAINTAINER_ROLE\"));\n bytes32 constant TREASURER_ROLE = keccak256(abi.encode(\"TREASURER_ROLE\"));\n bytes32 constant STRATEGIST_ROLE = keccak256(abi.encode(\"STRATEGIST_ROLE\"));\n bytes32 constant DEVELOPER_ROLE = keccak256(abi.encode(\"DEVELOPER_ROLE\"));\n\n struct RoleData {\n mapping(address => bool) members;\n bytes32 adminRole;\n }\n\n struct StorageAccessControl {\n mapping(bytes32 => RoleData) roles;\n }\n\n function _storageAccessControl()\n internal\n pure\n returns (StorageAccessControl storage s)\n {\n bytes32 position = STORAGE_POSITION_ACCESSCONTROL;\n assembly {\n s.slot := position\n }\n }\n\n function _requireOnlyRole(bytes32 _role) internal view {\n _checkRole(_role);\n }\n\n function _hasRole(\n bytes32 _role,\n address _account\n ) internal view returns (bool) {\n return _storageAccessControl().roles[_role].members[_account];\n }\n\n function _checkRole(bytes32 _role) internal view {\n _checkRole(_role, msg.sender);\n }\n\n function _checkRole(bytes32 _role, address _account) internal view {\n if (!_hasRole(_role, _account)) {\n revert(\n string(\n abi.encodePacked(\n \"AccessControl: account \",\n Strings.toHexString(uint160(_account), 20),\n \" is missing role \",\n Strings.toHexString(uint256(_role), 32)\n )\n )\n );\n }\n }\n\n function _getRoleAdmin(bytes32 _role) internal view returns (bytes32) {\n return _storageAccessControl().roles[_role].adminRole;\n }\n\n event RoleAdminChanged(\n bytes32 indexed role,\n bytes32 indexed previousAdminRole,\n bytes32 indexed newAdminRole\n );\n\n function _setRoleAdmin(bytes32 _role, bytes32 _adminRole) internal {\n bytes32 previousAdminRole = _getRoleAdmin(_role);\n _storageAccessControl().roles[_role].adminRole = _adminRole;\n emit RoleAdminChanged(_role, previousAdminRole, _adminRole);\n }\n\n event RoleGranted(\n bytes32 indexed role,\n address indexed account,\n address indexed sender\n );\n\n function _grantRole(bytes32 _role, address _account) internal {\n if (!_hasRole(_role, _account)) {\n _storageAccessControl().roles[_role].members[_account] = true;\n emit RoleGranted(_role, _account, msg.sender);\n }\n }\n\n event RoleRevoked(\n bytes32 indexed role,\n address indexed account,\n address indexed sender\n );\n\n function _revokeRole(bytes32 _role, address _account) internal {\n if (_hasRole(_role, _account)) {\n _storageAccessControl().roles[_role].members[_account] = false;\n emit RoleRevoked(_role, _account, msg.sender);\n }\n }\n\n function _setupRole(bytes32 _role, address _account) internal {\n _grantRole(_role, _account);\n }\n}\n"},"contracts/libraries/utils/LibDiamond.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\nimport {ICut} from \"../../interfaces/utils/ICut.sol\";\n\n// Remember to add the loupe functions from DiamondLoupeFacet to the diamond.\n// The loupe functions are required by the EIP2535 Diamonds standard\n\nerror InitializationFunctionReverted(\n address _initializationContractAddress,\n bytes _calldata\n);\n\nlibrary LibDiamond {\n bytes32 constant STORAGE_POSITION_DIAMOND =\n keccak256(\"diamond.standard.diamond.storage\");\n\n struct FacetAddressAndPosition {\n address facetAddress;\n uint96 functionSelectorPosition; // position in facetFunctionSelectors.functionSelectors array\n }\n\n struct FacetFunctionSelectors {\n bytes4[] functionSelectors;\n uint256 facetAddressPosition; // position of facetAddress in facetAddresses array\n }\n\n struct StorageDiamond {\n // maps function selector to the facet address and\n // the position of the selector in the facetFunctionSelectors.selectors array\n mapping(bytes4 => FacetAddressAndPosition) selectorToFacetAndPosition;\n // maps facet addresses to function selectors\n mapping(address => FacetFunctionSelectors) facetFunctionSelectors;\n // facet addresses\n address[] facetAddresses;\n // Used to query if a contract implements an interface.\n // Used to implement ERC-165.\n mapping(bytes4 => bool) supportedInterfaces;\n }\n\n function _storageDiamond()\n internal\n pure\n returns (StorageDiamond storage s)\n {\n bytes32 position = STORAGE_POSITION_DIAMOND;\n assembly {\n s.slot := position\n }\n }\n\n event DiamondCut(\n ICut.FacetCut[] _diamondCut,\n address _init,\n bytes _calldata\n );\n\n // Internal function version of diamondCut\n function _cut(\n ICut.FacetCut[] memory _diamondCut,\n address _init,\n bytes memory _calldata\n ) internal {\n for (\n uint256 facetIndex;\n facetIndex < _diamondCut.length;\n facetIndex++\n ) {\n ICut.FacetCutAction action = _diamondCut[facetIndex].action;\n if (action == ICut.FacetCutAction.Add) {\n _addFunctions(\n _diamondCut[facetIndex].facetAddress,\n _diamondCut[facetIndex].functionSelectors\n );\n } else if (action == ICut.FacetCutAction.Replace) {\n _replaceFunctions(\n _diamondCut[facetIndex].facetAddress,\n _diamondCut[facetIndex].functionSelectors\n );\n } else if (action == ICut.FacetCutAction.Remove) {\n _removeFunctions(\n _diamondCut[facetIndex].facetAddress,\n _diamondCut[facetIndex].functionSelectors\n );\n } else {\n revert(\"LibDiamondCut: Incorrect FacetCutAction\");\n }\n }\n emit DiamondCut(_diamondCut, _init, _calldata);\n _initializeDiamondCut(_init, _calldata);\n }\n\n function _addFunctions(\n address _facetAddress,\n bytes4[] memory _functionSelectors\n ) internal {\n require(\n _functionSelectors.length > 0,\n \"LibDiamondCut: No selectors in facet to cut\"\n );\n StorageDiamond storage s = _storageDiamond();\n require(\n _facetAddress != address(0),\n \"LibDiamondCut: Add facet can't be address(0)\"\n );\n uint96 selectorPosition = uint96(\n s.facetFunctionSelectors[_facetAddress].functionSelectors.length\n );\n // add new facet address if it does not exist\n if (selectorPosition == 0) {\n _addFacet(s, _facetAddress);\n }\n for (\n uint256 selectorIndex;\n selectorIndex < _functionSelectors.length;\n selectorIndex++\n ) {\n bytes4 selector = _functionSelectors[selectorIndex];\n address oldFacetAddress = s\n .selectorToFacetAndPosition[selector]\n .facetAddress;\n require(\n oldFacetAddress == address(0),\n \"LibDiamondCut: Can't add function that already exists\"\n );\n _addFunction(s, selector, selectorPosition, _facetAddress);\n selectorPosition++;\n }\n }\n\n function _replaceFunctions(\n address _facetAddress,\n bytes4[] memory _functionSelectors\n ) internal {\n require(\n _functionSelectors.length > 0,\n \"LibDiamondCut: No selectors in facet to cut\"\n );\n StorageDiamond storage s = _storageDiamond();\n require(\n _facetAddress != address(0),\n \"LibDiamondCut: Add facet can't be address(0)\"\n );\n uint96 selectorPosition = uint96(\n s.facetFunctionSelectors[_facetAddress].functionSelectors.length\n );\n // add new facet address if it does not exist\n if (selectorPosition == 0) {\n _addFacet(s, _facetAddress);\n }\n for (\n uint256 selectorIndex;\n selectorIndex < _functionSelectors.length;\n selectorIndex++\n ) {\n bytes4 selector = _functionSelectors[selectorIndex];\n address oldFacetAddress = s\n .selectorToFacetAndPosition[selector]\n .facetAddress;\n require(\n oldFacetAddress != _facetAddress,\n \"LibDiamondCut: Can't replace function with same function\"\n );\n _removeFunction(s, oldFacetAddress, selector);\n _addFunction(s, selector, selectorPosition, _facetAddress);\n selectorPosition++;\n }\n }\n\n function _removeFunctions(\n address _facetAddress,\n bytes4[] memory _functionSelectors\n ) internal {\n require(\n _functionSelectors.length > 0,\n \"LibDiamondCut: No selectors in facet to cut\"\n );\n StorageDiamond storage s = _storageDiamond();\n // if function does not exist then do nothing and return\n require(\n _facetAddress == address(0),\n \"LibDiamondCut: Remove facet address must be address(0)\"\n );\n for (\n uint256 selectorIndex;\n selectorIndex < _functionSelectors.length;\n selectorIndex++\n ) {\n bytes4 selector = _functionSelectors[selectorIndex];\n address oldFacetAddress = s\n .selectorToFacetAndPosition[selector]\n .facetAddress;\n _removeFunction(s, oldFacetAddress, selector);\n }\n }\n\n function _addFacet(\n StorageDiamond storage s,\n address _facetAddress\n ) internal {\n _requireHasContractCode(\n _facetAddress,\n \"LibDiamondCut: New facet has no code\"\n );\n s.facetFunctionSelectors[_facetAddress].facetAddressPosition = s\n .facetAddresses\n .length;\n s.facetAddresses.push(_facetAddress);\n }\n\n function _addFunction(\n StorageDiamond storage s,\n bytes4 _selector,\n uint96 _selectorPosition,\n address _facetAddress\n ) internal {\n s\n .selectorToFacetAndPosition[_selector]\n .functionSelectorPosition = _selectorPosition;\n s.facetFunctionSelectors[_facetAddress].functionSelectors.push(\n _selector\n );\n s.selectorToFacetAndPosition[_selector].facetAddress = _facetAddress;\n }\n\n function _removeFunction(\n StorageDiamond storage s,\n address _facetAddress,\n bytes4 _selector\n ) internal {\n require(\n _facetAddress != address(0),\n \"LibDiamondCut: Can't remove function that doesn't exist\"\n );\n // an immutable function is a function defined directly in a diamond\n require(\n _facetAddress != address(this),\n \"LibDiamondCut: Can't remove immutable function\"\n );\n // replace selector with last selector, then delete last selector\n uint256 selectorPosition = s\n .selectorToFacetAndPosition[_selector]\n .functionSelectorPosition;\n uint256 lastSelectorPosition = s\n .facetFunctionSelectors[_facetAddress]\n .functionSelectors\n .length - 1;\n // if not the same then replace _selector with lastSelector\n if (selectorPosition != lastSelectorPosition) {\n bytes4 lastSelector = s\n .facetFunctionSelectors[_facetAddress]\n .functionSelectors[lastSelectorPosition];\n s.facetFunctionSelectors[_facetAddress].functionSelectors[\n selectorPosition\n ] = lastSelector;\n s\n .selectorToFacetAndPosition[lastSelector]\n .functionSelectorPosition = uint96(selectorPosition);\n }\n // delete the last selector\n s.facetFunctionSelectors[_facetAddress].functionSelectors.pop();\n delete s.selectorToFacetAndPosition[_selector];\n\n // if no more selectors for facet address then delete the facet address\n if (lastSelectorPosition == 0) {\n // replace facet address with last facet address and delete last facet address\n uint256 lastFacetAddressPosition = s.facetAddresses.length - 1;\n uint256 facetAddressPosition = s\n .facetFunctionSelectors[_facetAddress]\n .facetAddressPosition;\n if (facetAddressPosition != lastFacetAddressPosition) {\n address lastFacetAddress = s.facetAddresses[\n lastFacetAddressPosition\n ];\n s.facetAddresses[facetAddressPosition] = lastFacetAddress;\n s\n .facetFunctionSelectors[lastFacetAddress]\n .facetAddressPosition = facetAddressPosition;\n }\n s.facetAddresses.pop();\n delete s.facetFunctionSelectors[_facetAddress].facetAddressPosition;\n }\n }\n\n function _initializeDiamondCut(\n address _init,\n bytes memory _calldata\n ) internal {\n if (_init == address(0)) {\n return;\n }\n _requireHasContractCode(\n _init,\n \"LibDiamondCut: _init address has no code\"\n );\n (bool success, bytes memory error) = _init.delegatecall(_calldata);\n if (!success) {\n if (error.length > 0) {\n // bubble up error\n /// @solidity memory-safe-assembly\n assembly {\n let returndata_size := mload(error)\n revert(add(32, error), returndata_size)\n }\n } else {\n revert InitializationFunctionReverted(_init, _calldata);\n }\n }\n }\n\n function _requireHasContractCode(\n address _contract,\n string memory _errorMessage\n ) internal view {\n uint256 contractSize;\n assembly {\n contractSize := extcodesize(_contract)\n }\n require(contractSize > 0, _errorMessage);\n }\n}\n"},"contracts/services/gelato/Types.sol":{"content":"// ref: https://github.com/gelatodigital/ops/blob/master/contracts/integrations/Types.sol\n\n// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.12;\n\nenum Module {\n RESOLVER,\n TIME,\n PROXY,\n SINGLE_EXEC\n}\n\nstruct ModuleData {\n Module[] modules;\n bytes[] args;\n}\n\ninterface IAutomate {\n function createTask(\n address execAddress,\n bytes calldata execDataOrSelector,\n ModuleData calldata moduleData,\n address feeToken\n ) external returns (bytes32 taskId);\n\n function cancelTask(bytes32 taskId) external;\n\n function getFeeDetails() external view returns (uint256, address);\n\n function gelato() external view returns (address payable);\n\n function taskTreasury() external view returns (ITaskTreasuryUpgradable);\n}\n\ninterface ITaskTreasuryUpgradable {\n function depositFunds(\n address receiver,\n address token,\n uint256 amount\n ) external payable;\n\n function withdrawFunds(\n address payable receiver,\n address token,\n uint256 amount\n ) external;\n\n function userTokenBalance(address _user, address _token)\n external\n view\n returns (uint256); // this is addition\n}\n\ninterface IOpsProxyFactory {\n function getProxyOf(address account) external view returns (address, bool);\n}\n"},"contracts/upgrades/DiamondInit.sol":{"content":"// SPDX-License-Identifier: BUSL-1.1\npragma solidity ^0.8.9;\n\nimport {ISuperToken} from \"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol\";\n\nimport {LibDiamond} from \"../libraries/utils/LibDiamond.sol\";\nimport {LibAutomate} from \"../libraries/core/LibAutomate.sol\";\nimport {LibControl} from \"../libraries/core/LibControl.sol\";\nimport {IERC165} from \"../interfaces/utils/IERC165.sol\";\nimport {ICut} from \"../interfaces/utils/ICut.sol\";\nimport {ILoupe} from \"../interfaces/utils/ILoupe.sol\";\nimport {IAccessControl} from \"../interfaces/utils/IAccessControl.sol\";\nimport {IUtility} from \"../interfaces/utils/IUtility.sol\";\nimport {IAutomate} from \"../interfaces/core/IAutomate.sol\";\nimport {IControl} from \"../interfaces/core/IControl.sol\";\nimport {ISession} from \"../interfaces/core/ISession.sol\";\nimport {IFlow} from \"../interfaces/core/IFlow.sol\";\n\ncontract DiamondInit {\n function init(\n address _autobot,\n uint256 _minimumAppGelatoBalance,\n uint256 _minimumEndDuration, // seconds\n uint256 _minimumLifespan, // seconds\n uint256 _stBufferDurationInSecond,\n address[] memory _superTokens\n ) external {\n LibDiamond.StorageDiamond storage s = LibDiamond._storageDiamond();\n s.supportedInterfaces[type(IERC165).interfaceId] = true;\n s.supportedInterfaces[type(ICut).interfaceId] = true;\n s.supportedInterfaces[type(ILoupe).interfaceId] = true;\n s.supportedInterfaces[type(IAccessControl).interfaceId] = true;\n s.supportedInterfaces[type(IUtility).interfaceId] = true;\n s.supportedInterfaces[type(IAutomate).interfaceId] = true;\n s.supportedInterfaces[type(IControl).interfaceId] = true;\n s.supportedInterfaces[type(ISession).interfaceId] = true;\n s.supportedInterfaces[type(IFlow).interfaceId] = true;\n\n LibAutomate._setGelatoContracts(_autobot);\n LibAutomate._setMinimumAppGelatoBalance(_minimumAppGelatoBalance);\n LibControl._setMinimumEndDuration(_minimumEndDuration);\n LibControl._setMinimumLifespan(_minimumLifespan);\n LibControl._setSTBufferAmount(_stBufferDurationInSecond);\n for (uint256 i = 0; i < _superTokens.length; i++) {\n LibControl._addSuperToken(_superTokens[i]);\n }\n }\n}\n"}},"settings":{"optimizer":{"enabled":false,"runs":200},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"],"":["ast"]}}}},"output":{"sources":{"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","exportedSymbols":{"IERC20":[77]},"id":78,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"106:23:0"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20","contractDependencies":[],"contractKind":"interface","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"131:70:0","text":" @dev Interface of the ERC20 standard as defined in the EIP."},"fullyImplemented":false,"id":77,"linearizedBaseContracts":[77],"name":"IERC20","nameLocation":"212:6:0","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"225:158:0","text":" @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":11,"name":"Transfer","nameLocation":"394:8:0","nodeType":"EventDefinition","parameters":{"id":10,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"419:4:0","nodeType":"VariableDeclaration","scope":11,"src":"403:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4,"name":"address","nodeType":"ElementaryTypeName","src":"403:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"441:2:0","nodeType":"VariableDeclaration","scope":11,"src":"425:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6,"name":"address","nodeType":"ElementaryTypeName","src":"425:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"453:5:0","nodeType":"VariableDeclaration","scope":11,"src":"445:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8,"name":"uint256","nodeType":"ElementaryTypeName","src":"445:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"402:57:0"},"src":"388:72:0"},{"anonymous":false,"documentation":{"id":12,"nodeType":"StructuredDocumentation","src":"466:148:0","text":" @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":20,"name":"Approval","nameLocation":"625:8:0","nodeType":"EventDefinition","parameters":{"id":19,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"650:5:0","nodeType":"VariableDeclaration","scope":20,"src":"634:21:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13,"name":"address","nodeType":"ElementaryTypeName","src":"634:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16,"indexed":true,"mutability":"mutable","name":"spender","nameLocation":"673:7:0","nodeType":"VariableDeclaration","scope":20,"src":"657:23:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15,"name":"address","nodeType":"ElementaryTypeName","src":"657:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"690:5:0","nodeType":"VariableDeclaration","scope":20,"src":"682:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17,"name":"uint256","nodeType":"ElementaryTypeName","src":"682:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"633:63:0"},"src":"619:78:0"},{"documentation":{"id":21,"nodeType":"StructuredDocumentation","src":"703:66:0","text":" @dev Returns the amount of tokens in existence."},"functionSelector":"18160ddd","id":26,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"783:11:0","nodeType":"FunctionDefinition","parameters":{"id":22,"nodeType":"ParameterList","parameters":[],"src":"794:2:0"},"returnParameters":{"id":25,"nodeType":"ParameterList","parameters":[{"constant":false,"id":24,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":26,"src":"820:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23,"name":"uint256","nodeType":"ElementaryTypeName","src":"820:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"819:9:0"},"scope":77,"src":"774:55:0","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":27,"nodeType":"StructuredDocumentation","src":"835:72:0","text":" @dev Returns the amount of tokens owned by `account`."},"functionSelector":"70a08231","id":34,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"921:9:0","nodeType":"FunctionDefinition","parameters":{"id":30,"nodeType":"ParameterList","parameters":[{"constant":false,"id":29,"mutability":"mutable","name":"account","nameLocation":"939:7:0","nodeType":"VariableDeclaration","scope":34,"src":"931:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":28,"name":"address","nodeType":"ElementaryTypeName","src":"931:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"930:17:0"},"returnParameters":{"id":33,"nodeType":"ParameterList","parameters":[{"constant":false,"id":32,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":34,"src":"971:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":31,"name":"uint256","nodeType":"ElementaryTypeName","src":"971:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"970:9:0"},"scope":77,"src":"912:68:0","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":35,"nodeType":"StructuredDocumentation","src":"986:202:0","text":" @dev Moves `amount` tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"a9059cbb","id":44,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"1202:8:0","nodeType":"FunctionDefinition","parameters":{"id":40,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37,"mutability":"mutable","name":"to","nameLocation":"1219:2:0","nodeType":"VariableDeclaration","scope":44,"src":"1211:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":36,"name":"address","nodeType":"ElementaryTypeName","src":"1211:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":39,"mutability":"mutable","name":"amount","nameLocation":"1231:6:0","nodeType":"VariableDeclaration","scope":44,"src":"1223:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":38,"name":"uint256","nodeType":"ElementaryTypeName","src":"1223:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1210:28:0"},"returnParameters":{"id":43,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":44,"src":"1257:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":41,"name":"bool","nodeType":"ElementaryTypeName","src":"1257:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1256:6:0"},"scope":77,"src":"1193:70:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":45,"nodeType":"StructuredDocumentation","src":"1269:264:0","text":" @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."},"functionSelector":"dd62ed3e","id":54,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"1547:9:0","nodeType":"FunctionDefinition","parameters":{"id":50,"nodeType":"ParameterList","parameters":[{"constant":false,"id":47,"mutability":"mutable","name":"owner","nameLocation":"1565:5:0","nodeType":"VariableDeclaration","scope":54,"src":"1557:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":46,"name":"address","nodeType":"ElementaryTypeName","src":"1557:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":49,"mutability":"mutable","name":"spender","nameLocation":"1580:7:0","nodeType":"VariableDeclaration","scope":54,"src":"1572:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":48,"name":"address","nodeType":"ElementaryTypeName","src":"1572:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1556:32:0"},"returnParameters":{"id":53,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54,"src":"1612:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51,"name":"uint256","nodeType":"ElementaryTypeName","src":"1612:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1611:9:0"},"scope":77,"src":"1538:83:0","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":55,"nodeType":"StructuredDocumentation","src":"1627:642:0","text":" @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."},"functionSelector":"095ea7b3","id":64,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"2283:7:0","nodeType":"FunctionDefinition","parameters":{"id":60,"nodeType":"ParameterList","parameters":[{"constant":false,"id":57,"mutability":"mutable","name":"spender","nameLocation":"2299:7:0","nodeType":"VariableDeclaration","scope":64,"src":"2291:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":56,"name":"address","nodeType":"ElementaryTypeName","src":"2291:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":59,"mutability":"mutable","name":"amount","nameLocation":"2316:6:0","nodeType":"VariableDeclaration","scope":64,"src":"2308:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":58,"name":"uint256","nodeType":"ElementaryTypeName","src":"2308:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2290:33:0"},"returnParameters":{"id":63,"nodeType":"ParameterList","parameters":[{"constant":false,"id":62,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":64,"src":"2342:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":61,"name":"bool","nodeType":"ElementaryTypeName","src":"2342:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2341:6:0"},"scope":77,"src":"2274:74:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":65,"nodeType":"StructuredDocumentation","src":"2354:287:0","text":" @dev Moves `amount` tokens from `from` to `to` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","id":76,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"2655:12:0","nodeType":"FunctionDefinition","parameters":{"id":72,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67,"mutability":"mutable","name":"from","nameLocation":"2685:4:0","nodeType":"VariableDeclaration","scope":76,"src":"2677:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":66,"name":"address","nodeType":"ElementaryTypeName","src":"2677:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":69,"mutability":"mutable","name":"to","nameLocation":"2707:2:0","nodeType":"VariableDeclaration","scope":76,"src":"2699:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":68,"name":"address","nodeType":"ElementaryTypeName","src":"2699:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":71,"mutability":"mutable","name":"amount","nameLocation":"2727:6:0","nodeType":"VariableDeclaration","scope":76,"src":"2719:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":70,"name":"uint256","nodeType":"ElementaryTypeName","src":"2719:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2667:72:0"},"returnParameters":{"id":75,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":76,"src":"2758:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":73,"name":"bool","nodeType":"ElementaryTypeName","src":"2758:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2757:6:0"},"scope":77,"src":"2646:118:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":78,"src":"202:2564:0","usedErrors":[]}],"src":"106:2661:0"},"id":0},"@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol","exportedSymbols":{"IERC20Permit":[113]},"id":114,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":79,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"114:23:1"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20Permit","contractDependencies":[],"contractKind":"interface","documentation":{"id":80,"nodeType":"StructuredDocumentation","src":"139:480:1","text":" @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\n https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\n Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\n presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't\n need to send a transaction, and thus is not required to hold Ether at all."},"fullyImplemented":false,"id":113,"linearizedBaseContracts":[113],"name":"IERC20Permit","nameLocation":"630:12:1","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":81,"nodeType":"StructuredDocumentation","src":"649:792:1","text":" @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,\n given ``owner``'s signed approval.\n IMPORTANT: The same issues {IERC20-approve} has related to transaction\n ordering also apply here.\n Emits an {Approval} event.\n Requirements:\n - `spender` cannot be the zero address.\n - `deadline` must be a timestamp in the future.\n - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\n over the EIP712-formatted function arguments.\n - the signature must use ``owner``'s current nonce (see {nonces}).\n For more information on the signature format, see the\n https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\n section]."},"functionSelector":"d505accf","id":98,"implemented":false,"kind":"function","modifiers":[],"name":"permit","nameLocation":"1455:6:1","nodeType":"FunctionDefinition","parameters":{"id":96,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83,"mutability":"mutable","name":"owner","nameLocation":"1479:5:1","nodeType":"VariableDeclaration","scope":98,"src":"1471:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":82,"name":"address","nodeType":"ElementaryTypeName","src":"1471:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":85,"mutability":"mutable","name":"spender","nameLocation":"1502:7:1","nodeType":"VariableDeclaration","scope":98,"src":"1494:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":84,"name":"address","nodeType":"ElementaryTypeName","src":"1494:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":87,"mutability":"mutable","name":"value","nameLocation":"1527:5:1","nodeType":"VariableDeclaration","scope":98,"src":"1519:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":86,"name":"uint256","nodeType":"ElementaryTypeName","src":"1519:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":89,"mutability":"mutable","name":"deadline","nameLocation":"1550:8:1","nodeType":"VariableDeclaration","scope":98,"src":"1542:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":88,"name":"uint256","nodeType":"ElementaryTypeName","src":"1542:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":91,"mutability":"mutable","name":"v","nameLocation":"1574:1:1","nodeType":"VariableDeclaration","scope":98,"src":"1568:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":90,"name":"uint8","nodeType":"ElementaryTypeName","src":"1568:5:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":93,"mutability":"mutable","name":"r","nameLocation":"1593:1:1","nodeType":"VariableDeclaration","scope":98,"src":"1585:9:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":92,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1585:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":95,"mutability":"mutable","name":"s","nameLocation":"1612:1:1","nodeType":"VariableDeclaration","scope":98,"src":"1604:9:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":94,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1604:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1461:158:1"},"returnParameters":{"id":97,"nodeType":"ParameterList","parameters":[],"src":"1628:0:1"},"scope":113,"src":"1446:183:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":99,"nodeType":"StructuredDocumentation","src":"1635:294:1","text":" @dev Returns the current nonce for `owner`. This value must be\n included whenever a signature is generated for {permit}.\n Every successful call to {permit} increases ``owner``'s nonce by one. This\n prevents a signature from being used multiple times."},"functionSelector":"7ecebe00","id":106,"implemented":false,"kind":"function","modifiers":[],"name":"nonces","nameLocation":"1943:6:1","nodeType":"FunctionDefinition","parameters":{"id":102,"nodeType":"ParameterList","parameters":[{"constant":false,"id":101,"mutability":"mutable","name":"owner","nameLocation":"1958:5:1","nodeType":"VariableDeclaration","scope":106,"src":"1950:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":100,"name":"address","nodeType":"ElementaryTypeName","src":"1950:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1949:15:1"},"returnParameters":{"id":105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":104,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":106,"src":"1988:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":103,"name":"uint256","nodeType":"ElementaryTypeName","src":"1988:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1987:9:1"},"scope":113,"src":"1934:63:1","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":107,"nodeType":"StructuredDocumentation","src":"2003:128:1","text":" @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}."},"functionSelector":"3644e515","id":112,"implemented":false,"kind":"function","modifiers":[],"name":"DOMAIN_SEPARATOR","nameLocation":"2198:16:1","nodeType":"FunctionDefinition","parameters":{"id":108,"nodeType":"ParameterList","parameters":[],"src":"2214:2:1"},"returnParameters":{"id":111,"nodeType":"ParameterList","parameters":[{"constant":false,"id":110,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":112,"src":"2240:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":109,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2240:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2239:9:1"},"scope":113,"src":"2189:60:1","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":114,"src":"620:1631:1","usedErrors":[]}],"src":"114:2138:1"},"id":1},"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","exportedSymbols":{"Address":[887],"IERC20":[77],"IERC20Permit":[113],"SafeERC20":[394]},"id":395,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":115,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"115:23:2"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"../IERC20.sol","id":116,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":395,"sourceUnit":78,"src":"140:23:2","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol","file":"../extensions/draft-IERC20Permit.sol","id":117,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":395,"sourceUnit":114,"src":"164:46:2","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"../../../utils/Address.sol","id":118,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":395,"sourceUnit":888,"src":"211:36:2","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"SafeERC20","contractDependencies":[],"contractKind":"library","documentation":{"id":119,"nodeType":"StructuredDocumentation","src":"249:457:2","text":" @title SafeERC20\n @dev Wrappers around ERC20 operations that throw on failure (when the token\n contract returns false). Tokens that return no value (and instead revert or\n throw on failure) are also supported, non-reverting calls are assumed to be\n successful.\n To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n which allows you to call the safe operations as `token.safeTransfer(...)`, etc."},"fullyImplemented":true,"id":394,"linearizedBaseContracts":[394],"name":"SafeERC20","nameLocation":"715:9:2","nodeType":"ContractDefinition","nodes":[{"global":false,"id":122,"libraryName":{"id":120,"name":"Address","nameLocations":["737:7:2"],"nodeType":"IdentifierPath","referencedDeclaration":887,"src":"737:7:2"},"nodeType":"UsingForDirective","src":"731:26:2","typeName":{"id":121,"name":"address","nodeType":"ElementaryTypeName","src":"749:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"body":{"id":144,"nodeType":"Block","src":"865:103:2","statements":[{"expression":{"arguments":[{"id":133,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":125,"src":"895:5:2","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$77","typeString":"contract IERC20"}},{"arguments":[{"expression":{"expression":{"id":136,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":125,"src":"925:5:2","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$77","typeString":"contract IERC20"}},"id":137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"931:8:2","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":44,"src":"925:14:2","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"940:8:2","memberName":"selector","nodeType":"MemberAccess","src":"925:23:2","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":139,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":127,"src":"950:2:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":140,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":129,"src":"954:5:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":134,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"902:3:2","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":135,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"906:18:2","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"902:22:2","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":141,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"902:58:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$77","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":132,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":393,"src":"875:19:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$77_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20,bytes memory)"}},"id":142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"875:86:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":143,"nodeType":"ExpressionStatement","src":"875:86:2"}]},"id":145,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransfer","nameLocation":"772:12:2","nodeType":"FunctionDefinition","parameters":{"id":130,"nodeType":"ParameterList","parameters":[{"constant":false,"id":125,"mutability":"mutable","name":"token","nameLocation":"801:5:2","nodeType":"VariableDeclaration","scope":145,"src":"794:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$77","typeString":"contract IERC20"},"typeName":{"id":124,"nodeType":"UserDefinedTypeName","pathNode":{"id":123,"name":"IERC20","nameLocations":["794:6:2"],"nodeType":"IdentifierPath","referencedDeclaration":77,"src":"794:6:2"},"referencedDeclaration":77,"src":"794:6:2","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$77","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":127,"mutability":"mutable","name":"to","nameLocation":"824:2:2","nodeType":"VariableDeclaration","scope":145,"src":"816:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":126,"name":"address","nodeType":"ElementaryTypeName","src":"816:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":129,"mutability":"mutable","name":"value","nameLocation":"844:5:2","nodeType":"VariableDeclaration","scope":145,"src":"836:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":128,"name":"uint256","nodeType":"ElementaryTypeName","src":"836:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"784:71:2"},"returnParameters":{"id":131,"nodeType":"ParameterList","parameters":[],"src":"865:0:2"},"scope":394,"src":"763:205:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":170,"nodeType":"Block","src":"1102:113:2","statements":[{"expression":{"arguments":[{"id":158,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":148,"src":"1132:5:2","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$77","typeString":"contract IERC20"}},{"arguments":[{"expression":{"expression":{"id":161,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":148,"src":"1162:5:2","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$77","typeString":"contract IERC20"}},"id":162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1168:12:2","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":76,"src":"1162:18:2","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":163,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1181:8:2","memberName":"selector","nodeType":"MemberAccess","src":"1162:27:2","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":164,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":150,"src":"1191:4:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":165,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":152,"src":"1197:2:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":166,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":154,"src":"1201:5:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":159,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1139:3:2","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":160,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1143:18:2","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"1139:22:2","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":167,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1139:68:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$77","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":157,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":393,"src":"1112:19:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$77_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20,bytes memory)"}},"id":168,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1112:96:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":169,"nodeType":"ExpressionStatement","src":"1112:96:2"}]},"id":171,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"983:16:2","nodeType":"FunctionDefinition","parameters":{"id":155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":148,"mutability":"mutable","name":"token","nameLocation":"1016:5:2","nodeType":"VariableDeclaration","scope":171,"src":"1009:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$77","typeString":"contract IERC20"},"typeName":{"id":147,"nodeType":"UserDefinedTypeName","pathNode":{"id":146,"name":"IERC20","nameLocations":["1009:6:2"],"nodeType":"IdentifierPath","referencedDeclaration":77,"src":"1009:6:2"},"referencedDeclaration":77,"src":"1009:6:2","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$77","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":150,"mutability":"mutable","name":"from","nameLocation":"1039:4:2","nodeType":"VariableDeclaration","scope":171,"src":"1031:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":149,"name":"address","nodeType":"ElementaryTypeName","src":"1031:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":152,"mutability":"mutable","name":"to","nameLocation":"1061:2:2","nodeType":"VariableDeclaration","scope":171,"src":"1053:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":151,"name":"address","nodeType":"ElementaryTypeName","src":"1053:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":154,"mutability":"mutable","name":"value","nameLocation":"1081:5:2","nodeType":"VariableDeclaration","scope":171,"src":"1073:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":153,"name":"uint256","nodeType":"ElementaryTypeName","src":"1073:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"999:93:2"},"returnParameters":{"id":156,"nodeType":"ParameterList","parameters":[],"src":"1102:0:2"},"scope":394,"src":"974:241:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":214,"nodeType":"Block","src":"1581:497:2","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":183,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"1830:5:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":184,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1839:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1830:10:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":186,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1829:12:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":196,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":191,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1870:4:2","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$394","typeString":"library SafeERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$394","typeString":"library SafeERC20"}],"id":190,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1862:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":189,"name":"address","nodeType":"ElementaryTypeName","src":"1862:7:2","typeDescriptions":{}}},"id":192,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1862:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":193,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"1877:7:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":187,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":175,"src":"1846:5:2","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$77","typeString":"contract IERC20"}},"id":188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1852:9:2","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":54,"src":"1846:15:2","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":194,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1846:39:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":195,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1889:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1846:44:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":197,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1845:46:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1829:62:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365","id":199,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1905:56:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25","typeString":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\""},"value":"SafeERC20: approve from non-zero to non-zero allowance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25","typeString":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\""}],"id":182,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1808:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":200,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1808:163:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":201,"nodeType":"ExpressionStatement","src":"1808:163:2"},{"expression":{"arguments":[{"id":203,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":175,"src":"2001:5:2","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$77","typeString":"contract IERC20"}},{"arguments":[{"expression":{"expression":{"id":206,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":175,"src":"2031:5:2","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$77","typeString":"contract IERC20"}},"id":207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2037:7:2","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":64,"src":"2031:13:2","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":208,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2045:8:2","memberName":"selector","nodeType":"MemberAccess","src":"2031:22:2","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":209,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":177,"src":"2055:7:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":210,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"2064:5:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":204,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2008:3:2","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":205,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2012:18:2","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"2008:22:2","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":211,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2008:62:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$77","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":202,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":393,"src":"1981:19:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$77_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20,bytes memory)"}},"id":212,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1981:90:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":213,"nodeType":"ExpressionStatement","src":"1981:90:2"}]},"documentation":{"id":172,"nodeType":"StructuredDocumentation","src":"1221:249:2","text":" @dev Deprecated. This function has issues similar to the ones found in\n {IERC20-approve}, and its usage is discouraged.\n Whenever possible, use {safeIncreaseAllowance} and\n {safeDecreaseAllowance} instead."},"id":215,"implemented":true,"kind":"function","modifiers":[],"name":"safeApprove","nameLocation":"1484:11:2","nodeType":"FunctionDefinition","parameters":{"id":180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":175,"mutability":"mutable","name":"token","nameLocation":"1512:5:2","nodeType":"VariableDeclaration","scope":215,"src":"1505:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$77","typeString":"contract IERC20"},"typeName":{"id":174,"nodeType":"UserDefinedTypeName","pathNode":{"id":173,"name":"IERC20","nameLocations":["1505:6:2"],"nodeType":"IdentifierPath","referencedDeclaration":77,"src":"1505:6:2"},"referencedDeclaration":77,"src":"1505:6:2","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$77","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":177,"mutability":"mutable","name":"spender","nameLocation":"1535:7:2","nodeType":"VariableDeclaration","scope":215,"src":"1527:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":176,"name":"address","nodeType":"ElementaryTypeName","src":"1527:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":179,"mutability":"mutable","name":"value","nameLocation":"1560:5:2","nodeType":"VariableDeclaration","scope":215,"src":"1552:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":178,"name":"uint256","nodeType":"ElementaryTypeName","src":"1552:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1495:76:2"},"returnParameters":{"id":181,"nodeType":"ParameterList","parameters":[],"src":"1581:0:2"},"scope":394,"src":"1475:603:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":250,"nodeType":"Block","src":"2200:194:2","statements":[{"assignments":[226],"declarations":[{"constant":false,"id":226,"mutability":"mutable","name":"newAllowance","nameLocation":"2218:12:2","nodeType":"VariableDeclaration","scope":250,"src":"2210:20:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":225,"name":"uint256","nodeType":"ElementaryTypeName","src":"2210:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":237,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":231,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2257:4:2","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$394","typeString":"library SafeERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$394","typeString":"library SafeERC20"}],"id":230,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2249:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":229,"name":"address","nodeType":"ElementaryTypeName","src":"2249:7:2","typeDescriptions":{}}},"id":232,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2249:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":233,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":220,"src":"2264:7:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":227,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":218,"src":"2233:5:2","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$77","typeString":"contract IERC20"}},"id":228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2239:9:2","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":54,"src":"2233:15:2","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":234,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2233:39:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":235,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":222,"src":"2275:5:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2233:47:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2210:70:2"},{"expression":{"arguments":[{"id":239,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":218,"src":"2310:5:2","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$77","typeString":"contract IERC20"}},{"arguments":[{"expression":{"expression":{"id":242,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":218,"src":"2340:5:2","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$77","typeString":"contract IERC20"}},"id":243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2346:7:2","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":64,"src":"2340:13:2","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2354:8:2","memberName":"selector","nodeType":"MemberAccess","src":"2340:22:2","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":245,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":220,"src":"2364:7:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":246,"name":"newAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":226,"src":"2373:12:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":240,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2317:3:2","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":241,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2321:18:2","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"2317:22:2","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":247,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2317:69:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$77","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":238,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":393,"src":"2290:19:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$77_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20,bytes memory)"}},"id":248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2290:97:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":249,"nodeType":"ExpressionStatement","src":"2290:97:2"}]},"id":251,"implemented":true,"kind":"function","modifiers":[],"name":"safeIncreaseAllowance","nameLocation":"2093:21:2","nodeType":"FunctionDefinition","parameters":{"id":223,"nodeType":"ParameterList","parameters":[{"constant":false,"id":218,"mutability":"mutable","name":"token","nameLocation":"2131:5:2","nodeType":"VariableDeclaration","scope":251,"src":"2124:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$77","typeString":"contract IERC20"},"typeName":{"id":217,"nodeType":"UserDefinedTypeName","pathNode":{"id":216,"name":"IERC20","nameLocations":["2124:6:2"],"nodeType":"IdentifierPath","referencedDeclaration":77,"src":"2124:6:2"},"referencedDeclaration":77,"src":"2124:6:2","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$77","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":220,"mutability":"mutable","name":"spender","nameLocation":"2154:7:2","nodeType":"VariableDeclaration","scope":251,"src":"2146:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":219,"name":"address","nodeType":"ElementaryTypeName","src":"2146:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":222,"mutability":"mutable","name":"value","nameLocation":"2179:5:2","nodeType":"VariableDeclaration","scope":251,"src":"2171:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":221,"name":"uint256","nodeType":"ElementaryTypeName","src":"2171:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2114:76:2"},"returnParameters":{"id":224,"nodeType":"ParameterList","parameters":[],"src":"2200:0:2"},"scope":394,"src":"2084:310:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":298,"nodeType":"Block","src":"2516:370:2","statements":[{"id":297,"nodeType":"UncheckedBlock","src":"2526:354:2","statements":[{"assignments":[262],"declarations":[{"constant":false,"id":262,"mutability":"mutable","name":"oldAllowance","nameLocation":"2558:12:2","nodeType":"VariableDeclaration","scope":297,"src":"2550:20:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":261,"name":"uint256","nodeType":"ElementaryTypeName","src":"2550:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":271,"initialValue":{"arguments":[{"arguments":[{"id":267,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2597:4:2","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$394","typeString":"library SafeERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$394","typeString":"library SafeERC20"}],"id":266,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2589:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":265,"name":"address","nodeType":"ElementaryTypeName","src":"2589:7:2","typeDescriptions":{}}},"id":268,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2589:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":269,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":256,"src":"2604:7:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":263,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":254,"src":"2573:5:2","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$77","typeString":"contract IERC20"}},"id":264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2579:9:2","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":54,"src":"2573:15:2","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":270,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2573:39:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2550:62:2"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":273,"name":"oldAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":262,"src":"2634:12:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":274,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":258,"src":"2650:5:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2634:21:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5361666545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f","id":276,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2657:43:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_2c3af60974a758b7e72e108c9bf0943ecc9e4f2e8af4695da5f52fbf57a63d3a","typeString":"literal_string \"SafeERC20: decreased allowance below zero\""},"value":"SafeERC20: decreased allowance below zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2c3af60974a758b7e72e108c9bf0943ecc9e4f2e8af4695da5f52fbf57a63d3a","typeString":"literal_string \"SafeERC20: decreased allowance below zero\""}],"id":272,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2626:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":277,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2626:75:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":278,"nodeType":"ExpressionStatement","src":"2626:75:2"},{"assignments":[280],"declarations":[{"constant":false,"id":280,"mutability":"mutable","name":"newAllowance","nameLocation":"2723:12:2","nodeType":"VariableDeclaration","scope":297,"src":"2715:20:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":279,"name":"uint256","nodeType":"ElementaryTypeName","src":"2715:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":284,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":281,"name":"oldAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":262,"src":"2738:12:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":282,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":258,"src":"2753:5:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2738:20:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2715:43:2"},{"expression":{"arguments":[{"id":286,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":254,"src":"2792:5:2","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$77","typeString":"contract IERC20"}},{"arguments":[{"expression":{"expression":{"id":289,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":254,"src":"2822:5:2","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$77","typeString":"contract IERC20"}},"id":290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2828:7:2","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":64,"src":"2822:13:2","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2836:8:2","memberName":"selector","nodeType":"MemberAccess","src":"2822:22:2","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":292,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":256,"src":"2846:7:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":293,"name":"newAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":280,"src":"2855:12:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":287,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2799:3:2","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":288,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2803:18:2","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"2799:22:2","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2799:69:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$77","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":285,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":393,"src":"2772:19:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$77_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20,bytes memory)"}},"id":295,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2772:97:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":296,"nodeType":"ExpressionStatement","src":"2772:97:2"}]}]},"id":299,"implemented":true,"kind":"function","modifiers":[],"name":"safeDecreaseAllowance","nameLocation":"2409:21:2","nodeType":"FunctionDefinition","parameters":{"id":259,"nodeType":"ParameterList","parameters":[{"constant":false,"id":254,"mutability":"mutable","name":"token","nameLocation":"2447:5:2","nodeType":"VariableDeclaration","scope":299,"src":"2440:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$77","typeString":"contract IERC20"},"typeName":{"id":253,"nodeType":"UserDefinedTypeName","pathNode":{"id":252,"name":"IERC20","nameLocations":["2440:6:2"],"nodeType":"IdentifierPath","referencedDeclaration":77,"src":"2440:6:2"},"referencedDeclaration":77,"src":"2440:6:2","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$77","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":256,"mutability":"mutable","name":"spender","nameLocation":"2470:7:2","nodeType":"VariableDeclaration","scope":299,"src":"2462:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":255,"name":"address","nodeType":"ElementaryTypeName","src":"2462:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":258,"mutability":"mutable","name":"value","nameLocation":"2495:5:2","nodeType":"VariableDeclaration","scope":299,"src":"2487:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":257,"name":"uint256","nodeType":"ElementaryTypeName","src":"2487:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2430:76:2"},"returnParameters":{"id":260,"nodeType":"ParameterList","parameters":[],"src":"2516:0:2"},"scope":394,"src":"2400:486:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":354,"nodeType":"Block","src":"3107:257:2","statements":[{"assignments":[320],"declarations":[{"constant":false,"id":320,"mutability":"mutable","name":"nonceBefore","nameLocation":"3125:11:2","nodeType":"VariableDeclaration","scope":354,"src":"3117:19:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":319,"name":"uint256","nodeType":"ElementaryTypeName","src":"3117:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":325,"initialValue":{"arguments":[{"id":323,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":304,"src":"3152:5:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":321,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":302,"src":"3139:5:2","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Permit_$113","typeString":"contract IERC20Permit"}},"id":322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3145:6:2","memberName":"nonces","nodeType":"MemberAccess","referencedDeclaration":106,"src":"3139:12:2","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":324,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3139:19:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3117:41:2"},{"expression":{"arguments":[{"id":329,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":304,"src":"3181:5:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":330,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":306,"src":"3188:7:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":331,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":308,"src":"3197:5:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":332,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":310,"src":"3204:8:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":333,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":312,"src":"3214:1:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":334,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":314,"src":"3217:1:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":335,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":316,"src":"3220:1:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":326,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":302,"src":"3168:5:2","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Permit_$113","typeString":"contract IERC20Permit"}},"id":328,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3174:6:2","memberName":"permit","nodeType":"MemberAccess","referencedDeclaration":98,"src":"3168:12:2","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (address,address,uint256,uint256,uint8,bytes32,bytes32) external"}},"id":336,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3168:54:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":337,"nodeType":"ExpressionStatement","src":"3168:54:2"},{"assignments":[339],"declarations":[{"constant":false,"id":339,"mutability":"mutable","name":"nonceAfter","nameLocation":"3240:10:2","nodeType":"VariableDeclaration","scope":354,"src":"3232:18:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":338,"name":"uint256","nodeType":"ElementaryTypeName","src":"3232:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":344,"initialValue":{"arguments":[{"id":342,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":304,"src":"3266:5:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":340,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":302,"src":"3253:5:2","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Permit_$113","typeString":"contract IERC20Permit"}},"id":341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3259:6:2","memberName":"nonces","nodeType":"MemberAccess","referencedDeclaration":106,"src":"3253:12:2","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":343,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3253:19:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3232:40:2"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":350,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":346,"name":"nonceAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":339,"src":"3290:10:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":347,"name":"nonceBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":320,"src":"3304:11:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3318:1:2","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3304:15:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3290:29:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5361666545524332303a207065726d697420646964206e6f742073756363656564","id":351,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3321:35:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_cde8e927812a7a656f8f04e89ac4f4113d47940dd2125d11fcb8e0bd36bfc59d","typeString":"literal_string \"SafeERC20: permit did not succeed\""},"value":"SafeERC20: permit did not succeed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cde8e927812a7a656f8f04e89ac4f4113d47940dd2125d11fcb8e0bd36bfc59d","typeString":"literal_string \"SafeERC20: permit did not succeed\""}],"id":345,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3282:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":352,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3282:75:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":353,"nodeType":"ExpressionStatement","src":"3282:75:2"}]},"id":355,"implemented":true,"kind":"function","modifiers":[],"name":"safePermit","nameLocation":"2901:10:2","nodeType":"FunctionDefinition","parameters":{"id":317,"nodeType":"ParameterList","parameters":[{"constant":false,"id":302,"mutability":"mutable","name":"token","nameLocation":"2934:5:2","nodeType":"VariableDeclaration","scope":355,"src":"2921:18:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Permit_$113","typeString":"contract IERC20Permit"},"typeName":{"id":301,"nodeType":"UserDefinedTypeName","pathNode":{"id":300,"name":"IERC20Permit","nameLocations":["2921:12:2"],"nodeType":"IdentifierPath","referencedDeclaration":113,"src":"2921:12:2"},"referencedDeclaration":113,"src":"2921:12:2","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Permit_$113","typeString":"contract IERC20Permit"}},"visibility":"internal"},{"constant":false,"id":304,"mutability":"mutable","name":"owner","nameLocation":"2957:5:2","nodeType":"VariableDeclaration","scope":355,"src":"2949:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":303,"name":"address","nodeType":"ElementaryTypeName","src":"2949:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":306,"mutability":"mutable","name":"spender","nameLocation":"2980:7:2","nodeType":"VariableDeclaration","scope":355,"src":"2972:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":305,"name":"address","nodeType":"ElementaryTypeName","src":"2972:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":308,"mutability":"mutable","name":"value","nameLocation":"3005:5:2","nodeType":"VariableDeclaration","scope":355,"src":"2997:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":307,"name":"uint256","nodeType":"ElementaryTypeName","src":"2997:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":310,"mutability":"mutable","name":"deadline","nameLocation":"3028:8:2","nodeType":"VariableDeclaration","scope":355,"src":"3020:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":309,"name":"uint256","nodeType":"ElementaryTypeName","src":"3020:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":312,"mutability":"mutable","name":"v","nameLocation":"3052:1:2","nodeType":"VariableDeclaration","scope":355,"src":"3046:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":311,"name":"uint8","nodeType":"ElementaryTypeName","src":"3046:5:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":314,"mutability":"mutable","name":"r","nameLocation":"3071:1:2","nodeType":"VariableDeclaration","scope":355,"src":"3063:9:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":313,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3063:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":316,"mutability":"mutable","name":"s","nameLocation":"3090:1:2","nodeType":"VariableDeclaration","scope":355,"src":"3082:9:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":315,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3082:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2911:186:2"},"returnParameters":{"id":318,"nodeType":"ParameterList","parameters":[],"src":"3107:0:2"},"scope":394,"src":"2892:472:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":392,"nodeType":"Block","src":"3817:636:2","statements":[{"assignments":[365],"declarations":[{"constant":false,"id":365,"mutability":"mutable","name":"returndata","nameLocation":"4179:10:2","nodeType":"VariableDeclaration","scope":392,"src":"4166:23:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":364,"name":"bytes","nodeType":"ElementaryTypeName","src":"4166:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":374,"initialValue":{"arguments":[{"id":371,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":361,"src":"4220:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564","id":372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4226:34:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b","typeString":"literal_string \"SafeERC20: low-level call failed\""},"value":"SafeERC20: low-level call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b","typeString":"literal_string \"SafeERC20: low-level call failed\""}],"expression":{"arguments":[{"id":368,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":359,"src":"4200:5:2","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$77","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$77","typeString":"contract IERC20"}],"id":367,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4192:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":366,"name":"address","nodeType":"ElementaryTypeName","src":"4192:7:2","typeDescriptions":{}}},"id":369,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4192:14:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4207:12:2","memberName":"functionCall","nodeType":"MemberAccess","referencedDeclaration":647,"src":"4192:27:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$attached_to$_t_address_$","typeString":"function (address,bytes memory,string memory) returns (bytes memory)"}},"id":373,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4192:69:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"4166:95:2"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":378,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":375,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":365,"src":"4275:10:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4286:6:2","memberName":"length","nodeType":"MemberAccess","src":"4275:17:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":377,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4295:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4275:21:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":391,"nodeType":"IfStatement","src":"4271:176:2","trueBody":{"id":390,"nodeType":"Block","src":"4298:149:2","statements":[{"expression":{"arguments":[{"arguments":[{"id":382,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":365,"src":"4370:10:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":384,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4383:4:2","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"},"typeName":{"id":383,"name":"bool","nodeType":"ElementaryTypeName","src":"4383:4:2","typeDescriptions":{}}}],"id":385,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"4382:6:2","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}],"expression":{"id":380,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4359:3:2","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":381,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4363:6:2","memberName":"decode","nodeType":"MemberAccess","src":"4359:10:2","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":386,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4359:30:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564","id":387,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4391:44:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd","typeString":"literal_string \"SafeERC20: ERC20 operation did not succeed\""},"value":"SafeERC20: ERC20 operation did not succeed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd","typeString":"literal_string \"SafeERC20: ERC20 operation did not succeed\""}],"id":379,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4351:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4351:85:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":389,"nodeType":"ExpressionStatement","src":"4351:85:2"}]}}]},"documentation":{"id":356,"nodeType":"StructuredDocumentation","src":"3370:372:2","text":" @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n on the return value: the return value is optional (but if data is returned, it must not be false).\n @param token The token targeted by the call.\n @param data The call data (encoded using abi.encode or one of its variants)."},"id":393,"implemented":true,"kind":"function","modifiers":[],"name":"_callOptionalReturn","nameLocation":"3756:19:2","nodeType":"FunctionDefinition","parameters":{"id":362,"nodeType":"ParameterList","parameters":[{"constant":false,"id":359,"mutability":"mutable","name":"token","nameLocation":"3783:5:2","nodeType":"VariableDeclaration","scope":393,"src":"3776:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$77","typeString":"contract IERC20"},"typeName":{"id":358,"nodeType":"UserDefinedTypeName","pathNode":{"id":357,"name":"IERC20","nameLocations":["3776:6:2"],"nodeType":"IdentifierPath","referencedDeclaration":77,"src":"3776:6:2"},"referencedDeclaration":77,"src":"3776:6:2","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$77","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":361,"mutability":"mutable","name":"data","nameLocation":"3803:4:2","nodeType":"VariableDeclaration","scope":393,"src":"3790:17:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":360,"name":"bytes","nodeType":"ElementaryTypeName","src":"3790:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3775:33:2"},"returnParameters":{"id":363,"nodeType":"ParameterList","parameters":[],"src":"3817:0:2"},"scope":394,"src":"3747:706:2","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":395,"src":"707:3748:2","usedErrors":[]}],"src":"115:4341:2"},"id":2},"@openzeppelin/contracts/token/ERC777/IERC777.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC777/IERC777.sol","exportedSymbols":{"IERC777":[557]},"id":558,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":396,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"108:23:3"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC777","contractDependencies":[],"contractKind":"interface","documentation":{"id":397,"nodeType":"StructuredDocumentation","src":"133:372:3","text":" @dev Interface of the ERC777Token standard as defined in the EIP.\n This contract uses the\n https://eips.ethereum.org/EIPS/eip-1820[ERC1820 registry standard] to let\n token holders and recipients react to token movements by using setting implementers\n for the associated interfaces in said registry. See {IERC1820Registry} and\n {ERC1820Implementer}."},"fullyImplemented":false,"id":557,"linearizedBaseContracts":[557],"name":"IERC777","nameLocation":"516:7:3","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":398,"nodeType":"StructuredDocumentation","src":"530:199:3","text":" @dev Emitted when `amount` tokens are created by `operator` and assigned to `to`.\n Note that some additional user `data` and `operatorData` can be logged in the event."},"eventSelector":"2fe5be0146f74c5bce36c0b80911af6c7d86ff27e89d5cfa61fc681327954e5d","id":410,"name":"Minted","nameLocation":"740:6:3","nodeType":"EventDefinition","parameters":{"id":409,"nodeType":"ParameterList","parameters":[{"constant":false,"id":400,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"763:8:3","nodeType":"VariableDeclaration","scope":410,"src":"747:24:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":399,"name":"address","nodeType":"ElementaryTypeName","src":"747:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":402,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"789:2:3","nodeType":"VariableDeclaration","scope":410,"src":"773:18:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":401,"name":"address","nodeType":"ElementaryTypeName","src":"773:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":404,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"801:6:3","nodeType":"VariableDeclaration","scope":410,"src":"793:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":403,"name":"uint256","nodeType":"ElementaryTypeName","src":"793:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":406,"indexed":false,"mutability":"mutable","name":"data","nameLocation":"815:4:3","nodeType":"VariableDeclaration","scope":410,"src":"809:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":405,"name":"bytes","nodeType":"ElementaryTypeName","src":"809:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":408,"indexed":false,"mutability":"mutable","name":"operatorData","nameLocation":"827:12:3","nodeType":"VariableDeclaration","scope":410,"src":"821:18:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":407,"name":"bytes","nodeType":"ElementaryTypeName","src":"821:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"746:94:3"},"src":"734:107:3"},{"anonymous":false,"documentation":{"id":411,"nodeType":"StructuredDocumentation","src":"847:187:3","text":" @dev Emitted when `operator` destroys `amount` tokens from `account`.\n Note that some additional user `data` and `operatorData` can be logged in the event."},"eventSelector":"a78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a4098","id":423,"name":"Burned","nameLocation":"1045:6:3","nodeType":"EventDefinition","parameters":{"id":422,"nodeType":"ParameterList","parameters":[{"constant":false,"id":413,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"1068:8:3","nodeType":"VariableDeclaration","scope":423,"src":"1052:24:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":412,"name":"address","nodeType":"ElementaryTypeName","src":"1052:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":415,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"1094:4:3","nodeType":"VariableDeclaration","scope":423,"src":"1078:20:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":414,"name":"address","nodeType":"ElementaryTypeName","src":"1078:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":417,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"1108:6:3","nodeType":"VariableDeclaration","scope":423,"src":"1100:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":416,"name":"uint256","nodeType":"ElementaryTypeName","src":"1100:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":419,"indexed":false,"mutability":"mutable","name":"data","nameLocation":"1122:4:3","nodeType":"VariableDeclaration","scope":423,"src":"1116:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":418,"name":"bytes","nodeType":"ElementaryTypeName","src":"1116:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":421,"indexed":false,"mutability":"mutable","name":"operatorData","nameLocation":"1134:12:3","nodeType":"VariableDeclaration","scope":423,"src":"1128:18:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":420,"name":"bytes","nodeType":"ElementaryTypeName","src":"1128:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1051:96:3"},"src":"1039:109:3"},{"anonymous":false,"documentation":{"id":424,"nodeType":"StructuredDocumentation","src":"1154:83:3","text":" @dev Emitted when `operator` is made operator for `tokenHolder`."},"eventSelector":"f4caeb2d6ca8932a215a353d0703c326ec2d81fc68170f320eb2ab49e9df61f9","id":430,"name":"AuthorizedOperator","nameLocation":"1248:18:3","nodeType":"EventDefinition","parameters":{"id":429,"nodeType":"ParameterList","parameters":[{"constant":false,"id":426,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"1283:8:3","nodeType":"VariableDeclaration","scope":430,"src":"1267:24:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":425,"name":"address","nodeType":"ElementaryTypeName","src":"1267:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":428,"indexed":true,"mutability":"mutable","name":"tokenHolder","nameLocation":"1309:11:3","nodeType":"VariableDeclaration","scope":430,"src":"1293:27:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":427,"name":"address","nodeType":"ElementaryTypeName","src":"1293:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1266:55:3"},"src":"1242:80:3"},{"anonymous":false,"documentation":{"id":431,"nodeType":"StructuredDocumentation","src":"1328:97:3","text":" @dev Emitted when `operator` is revoked its operator status for `tokenHolder`."},"eventSelector":"50546e66e5f44d728365dc3908c63bc5cfeeab470722c1677e3073a6ac294aa1","id":437,"name":"RevokedOperator","nameLocation":"1436:15:3","nodeType":"EventDefinition","parameters":{"id":436,"nodeType":"ParameterList","parameters":[{"constant":false,"id":433,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"1468:8:3","nodeType":"VariableDeclaration","scope":437,"src":"1452:24:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":432,"name":"address","nodeType":"ElementaryTypeName","src":"1452:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":435,"indexed":true,"mutability":"mutable","name":"tokenHolder","nameLocation":"1494:11:3","nodeType":"VariableDeclaration","scope":437,"src":"1478:27:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":434,"name":"address","nodeType":"ElementaryTypeName","src":"1478:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1451:55:3"},"src":"1430:77:3"},{"documentation":{"id":438,"nodeType":"StructuredDocumentation","src":"1513:54:3","text":" @dev Returns the name of the token."},"functionSelector":"06fdde03","id":443,"implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"1581:4:3","nodeType":"FunctionDefinition","parameters":{"id":439,"nodeType":"ParameterList","parameters":[],"src":"1585:2:3"},"returnParameters":{"id":442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":441,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":443,"src":"1611:13:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":440,"name":"string","nodeType":"ElementaryTypeName","src":"1611:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1610:15:3"},"scope":557,"src":"1572:54:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":444,"nodeType":"StructuredDocumentation","src":"1632:102:3","text":" @dev Returns the symbol of the token, usually a shorter version of the\n name."},"functionSelector":"95d89b41","id":449,"implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"1748:6:3","nodeType":"FunctionDefinition","parameters":{"id":445,"nodeType":"ParameterList","parameters":[],"src":"1754:2:3"},"returnParameters":{"id":448,"nodeType":"ParameterList","parameters":[{"constant":false,"id":447,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":449,"src":"1780:13:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":446,"name":"string","nodeType":"ElementaryTypeName","src":"1780:6:3","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1779:15:3"},"scope":557,"src":"1739:56:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":450,"nodeType":"StructuredDocumentation","src":"1801:287:3","text":" @dev Returns the smallest part of the token that is not divisible. This\n means all token operations (creation, movement and destruction) must have\n amounts that are a multiple of this number.\n For most token contracts, this value will equal 1."},"functionSelector":"556f0dc7","id":455,"implemented":false,"kind":"function","modifiers":[],"name":"granularity","nameLocation":"2102:11:3","nodeType":"FunctionDefinition","parameters":{"id":451,"nodeType":"ParameterList","parameters":[],"src":"2113:2:3"},"returnParameters":{"id":454,"nodeType":"ParameterList","parameters":[{"constant":false,"id":453,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":455,"src":"2139:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":452,"name":"uint256","nodeType":"ElementaryTypeName","src":"2139:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2138:9:3"},"scope":557,"src":"2093:55:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":456,"nodeType":"StructuredDocumentation","src":"2154:66:3","text":" @dev Returns the amount of tokens in existence."},"functionSelector":"18160ddd","id":461,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"2234:11:3","nodeType":"FunctionDefinition","parameters":{"id":457,"nodeType":"ParameterList","parameters":[],"src":"2245:2:3"},"returnParameters":{"id":460,"nodeType":"ParameterList","parameters":[{"constant":false,"id":459,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":461,"src":"2271:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":458,"name":"uint256","nodeType":"ElementaryTypeName","src":"2271:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2270:9:3"},"scope":557,"src":"2225:55:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":462,"nodeType":"StructuredDocumentation","src":"2286:83:3","text":" @dev Returns the amount of tokens owned by an account (`owner`)."},"functionSelector":"70a08231","id":469,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"2383:9:3","nodeType":"FunctionDefinition","parameters":{"id":465,"nodeType":"ParameterList","parameters":[{"constant":false,"id":464,"mutability":"mutable","name":"owner","nameLocation":"2401:5:3","nodeType":"VariableDeclaration","scope":469,"src":"2393:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":463,"name":"address","nodeType":"ElementaryTypeName","src":"2393:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2392:15:3"},"returnParameters":{"id":468,"nodeType":"ParameterList","parameters":[{"constant":false,"id":467,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":469,"src":"2431:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":466,"name":"uint256","nodeType":"ElementaryTypeName","src":"2431:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2430:9:3"},"scope":557,"src":"2374:66:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":470,"nodeType":"StructuredDocumentation","src":"2446:585:3","text":" @dev Moves `amount` tokens from the caller's account to `recipient`.\n If send or receive hooks are registered for the caller and `recipient`,\n the corresponding functions will be called with `data` and empty\n `operatorData`. See {IERC777Sender} and {IERC777Recipient}.\n Emits a {Sent} event.\n Requirements\n - the caller must have at least `amount` tokens.\n - `recipient` cannot be the zero address.\n - if `recipient` is a contract, it must implement the {IERC777Recipient}\n interface."},"functionSelector":"9bd9bbc6","id":479,"implemented":false,"kind":"function","modifiers":[],"name":"send","nameLocation":"3045:4:3","nodeType":"FunctionDefinition","parameters":{"id":477,"nodeType":"ParameterList","parameters":[{"constant":false,"id":472,"mutability":"mutable","name":"recipient","nameLocation":"3067:9:3","nodeType":"VariableDeclaration","scope":479,"src":"3059:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":471,"name":"address","nodeType":"ElementaryTypeName","src":"3059:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":474,"mutability":"mutable","name":"amount","nameLocation":"3094:6:3","nodeType":"VariableDeclaration","scope":479,"src":"3086:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":473,"name":"uint256","nodeType":"ElementaryTypeName","src":"3086:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":476,"mutability":"mutable","name":"data","nameLocation":"3125:4:3","nodeType":"VariableDeclaration","scope":479,"src":"3110:19:3","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":475,"name":"bytes","nodeType":"ElementaryTypeName","src":"3110:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3049:86:3"},"returnParameters":{"id":478,"nodeType":"ParameterList","parameters":[],"src":"3144:0:3"},"scope":557,"src":"3036:109:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":480,"nodeType":"StructuredDocumentation","src":"3151:404:3","text":" @dev Destroys `amount` tokens from the caller's account, reducing the\n total supply.\n If a send hook is registered for the caller, the corresponding function\n will be called with `data` and empty `operatorData`. See {IERC777Sender}.\n Emits a {Burned} event.\n Requirements\n - the caller must have at least `amount` tokens."},"functionSelector":"fe9d9303","id":487,"implemented":false,"kind":"function","modifiers":[],"name":"burn","nameLocation":"3569:4:3","nodeType":"FunctionDefinition","parameters":{"id":485,"nodeType":"ParameterList","parameters":[{"constant":false,"id":482,"mutability":"mutable","name":"amount","nameLocation":"3582:6:3","nodeType":"VariableDeclaration","scope":487,"src":"3574:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":481,"name":"uint256","nodeType":"ElementaryTypeName","src":"3574:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":484,"mutability":"mutable","name":"data","nameLocation":"3605:4:3","nodeType":"VariableDeclaration","scope":487,"src":"3590:19:3","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":483,"name":"bytes","nodeType":"ElementaryTypeName","src":"3590:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3573:37:3"},"returnParameters":{"id":486,"nodeType":"ParameterList","parameters":[],"src":"3619:0:3"},"scope":557,"src":"3560:60:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":488,"nodeType":"StructuredDocumentation","src":"3626:249:3","text":" @dev Returns true if an account is an operator of `tokenHolder`.\n Operators can send and burn tokens on behalf of their owners. All\n accounts are their own operator.\n See {operatorSend} and {operatorBurn}."},"functionSelector":"d95b6371","id":497,"implemented":false,"kind":"function","modifiers":[],"name":"isOperatorFor","nameLocation":"3889:13:3","nodeType":"FunctionDefinition","parameters":{"id":493,"nodeType":"ParameterList","parameters":[{"constant":false,"id":490,"mutability":"mutable","name":"operator","nameLocation":"3911:8:3","nodeType":"VariableDeclaration","scope":497,"src":"3903:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":489,"name":"address","nodeType":"ElementaryTypeName","src":"3903:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":492,"mutability":"mutable","name":"tokenHolder","nameLocation":"3929:11:3","nodeType":"VariableDeclaration","scope":497,"src":"3921:19:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":491,"name":"address","nodeType":"ElementaryTypeName","src":"3921:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3902:39:3"},"returnParameters":{"id":496,"nodeType":"ParameterList","parameters":[{"constant":false,"id":495,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":497,"src":"3965:4:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":494,"name":"bool","nodeType":"ElementaryTypeName","src":"3965:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3964:6:3"},"scope":557,"src":"3880:91:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":498,"nodeType":"StructuredDocumentation","src":"3977:233:3","text":" @dev Make an account an operator of the caller.\n See {isOperatorFor}.\n Emits an {AuthorizedOperator} event.\n Requirements\n - `operator` cannot be calling address."},"functionSelector":"959b8c3f","id":503,"implemented":false,"kind":"function","modifiers":[],"name":"authorizeOperator","nameLocation":"4224:17:3","nodeType":"FunctionDefinition","parameters":{"id":501,"nodeType":"ParameterList","parameters":[{"constant":false,"id":500,"mutability":"mutable","name":"operator","nameLocation":"4250:8:3","nodeType":"VariableDeclaration","scope":503,"src":"4242:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":499,"name":"address","nodeType":"ElementaryTypeName","src":"4242:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4241:18:3"},"returnParameters":{"id":502,"nodeType":"ParameterList","parameters":[],"src":"4268:0:3"},"scope":557,"src":"4215:54:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":504,"nodeType":"StructuredDocumentation","src":"4275:261:3","text":" @dev Revoke an account's operator status for the caller.\n See {isOperatorFor} and {defaultOperators}.\n Emits a {RevokedOperator} event.\n Requirements\n - `operator` cannot be calling address."},"functionSelector":"fad8b32a","id":509,"implemented":false,"kind":"function","modifiers":[],"name":"revokeOperator","nameLocation":"4550:14:3","nodeType":"FunctionDefinition","parameters":{"id":507,"nodeType":"ParameterList","parameters":[{"constant":false,"id":506,"mutability":"mutable","name":"operator","nameLocation":"4573:8:3","nodeType":"VariableDeclaration","scope":509,"src":"4565:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":505,"name":"address","nodeType":"ElementaryTypeName","src":"4565:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4564:18:3"},"returnParameters":{"id":508,"nodeType":"ParameterList","parameters":[],"src":"4591:0:3"},"scope":557,"src":"4541:51:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":510,"nodeType":"StructuredDocumentation","src":"4598:338:3","text":" @dev Returns the list of default operators. These accounts are operators\n for all token holders, even if {authorizeOperator} was never called on\n them.\n This list is immutable, but individual holders may revoke these via\n {revokeOperator}, in which case {isOperatorFor} will return false."},"functionSelector":"06e48538","id":516,"implemented":false,"kind":"function","modifiers":[],"name":"defaultOperators","nameLocation":"4950:16:3","nodeType":"FunctionDefinition","parameters":{"id":511,"nodeType":"ParameterList","parameters":[],"src":"4966:2:3"},"returnParameters":{"id":515,"nodeType":"ParameterList","parameters":[{"constant":false,"id":514,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":516,"src":"4992:16:3","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":512,"name":"address","nodeType":"ElementaryTypeName","src":"4992:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":513,"nodeType":"ArrayTypeName","src":"4992:9:3","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"4991:18:3"},"scope":557,"src":"4941:69:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":517,"nodeType":"StructuredDocumentation","src":"5016:714:3","text":" @dev Moves `amount` tokens from `sender` to `recipient`. The caller must\n be an operator of `sender`.\n If send or receive hooks are registered for `sender` and `recipient`,\n the corresponding functions will be called with `data` and\n `operatorData`. See {IERC777Sender} and {IERC777Recipient}.\n Emits a {Sent} event.\n Requirements\n - `sender` cannot be the zero address.\n - `sender` must have at least `amount` tokens.\n - the caller must be an operator for `sender`.\n - `recipient` cannot be the zero address.\n - if `recipient` is a contract, it must implement the {IERC777Recipient}\n interface."},"functionSelector":"62ad1b83","id":530,"implemented":false,"kind":"function","modifiers":[],"name":"operatorSend","nameLocation":"5744:12:3","nodeType":"FunctionDefinition","parameters":{"id":528,"nodeType":"ParameterList","parameters":[{"constant":false,"id":519,"mutability":"mutable","name":"sender","nameLocation":"5774:6:3","nodeType":"VariableDeclaration","scope":530,"src":"5766:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":518,"name":"address","nodeType":"ElementaryTypeName","src":"5766:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":521,"mutability":"mutable","name":"recipient","nameLocation":"5798:9:3","nodeType":"VariableDeclaration","scope":530,"src":"5790:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":520,"name":"address","nodeType":"ElementaryTypeName","src":"5790:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":523,"mutability":"mutable","name":"amount","nameLocation":"5825:6:3","nodeType":"VariableDeclaration","scope":530,"src":"5817:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":522,"name":"uint256","nodeType":"ElementaryTypeName","src":"5817:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":525,"mutability":"mutable","name":"data","nameLocation":"5856:4:3","nodeType":"VariableDeclaration","scope":530,"src":"5841:19:3","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":524,"name":"bytes","nodeType":"ElementaryTypeName","src":"5841:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":527,"mutability":"mutable","name":"operatorData","nameLocation":"5885:12:3","nodeType":"VariableDeclaration","scope":530,"src":"5870:27:3","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":526,"name":"bytes","nodeType":"ElementaryTypeName","src":"5870:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5756:147:3"},"returnParameters":{"id":529,"nodeType":"ParameterList","parameters":[],"src":"5912:0:3"},"scope":557,"src":"5735:178:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":531,"nodeType":"StructuredDocumentation","src":"5919:532:3","text":" @dev Destroys `amount` tokens from `account`, reducing the total supply.\n The caller must be an operator of `account`.\n If a send hook is registered for `account`, the corresponding function\n will be called with `data` and `operatorData`. See {IERC777Sender}.\n Emits a {Burned} event.\n Requirements\n - `account` cannot be the zero address.\n - `account` must have at least `amount` tokens.\n - the caller must be an operator for `account`."},"functionSelector":"fc673c4f","id":542,"implemented":false,"kind":"function","modifiers":[],"name":"operatorBurn","nameLocation":"6465:12:3","nodeType":"FunctionDefinition","parameters":{"id":540,"nodeType":"ParameterList","parameters":[{"constant":false,"id":533,"mutability":"mutable","name":"account","nameLocation":"6495:7:3","nodeType":"VariableDeclaration","scope":542,"src":"6487:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":532,"name":"address","nodeType":"ElementaryTypeName","src":"6487:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":535,"mutability":"mutable","name":"amount","nameLocation":"6520:6:3","nodeType":"VariableDeclaration","scope":542,"src":"6512:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":534,"name":"uint256","nodeType":"ElementaryTypeName","src":"6512:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":537,"mutability":"mutable","name":"data","nameLocation":"6551:4:3","nodeType":"VariableDeclaration","scope":542,"src":"6536:19:3","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":536,"name":"bytes","nodeType":"ElementaryTypeName","src":"6536:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":539,"mutability":"mutable","name":"operatorData","nameLocation":"6580:12:3","nodeType":"VariableDeclaration","scope":542,"src":"6565:27:3","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":538,"name":"bytes","nodeType":"ElementaryTypeName","src":"6565:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6477:121:3"},"returnParameters":{"id":541,"nodeType":"ParameterList","parameters":[],"src":"6607:0:3"},"scope":557,"src":"6456:152:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"eventSelector":"06b541ddaa720db2b10a4d0cdac39b8d360425fc073085fac19bc82614677987","id":556,"name":"Sent","nameLocation":"6620:4:3","nodeType":"EventDefinition","parameters":{"id":555,"nodeType":"ParameterList","parameters":[{"constant":false,"id":544,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"6650:8:3","nodeType":"VariableDeclaration","scope":556,"src":"6634:24:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":543,"name":"address","nodeType":"ElementaryTypeName","src":"6634:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":546,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"6684:4:3","nodeType":"VariableDeclaration","scope":556,"src":"6668:20:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":545,"name":"address","nodeType":"ElementaryTypeName","src":"6668:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":548,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"6714:2:3","nodeType":"VariableDeclaration","scope":556,"src":"6698:18:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":547,"name":"address","nodeType":"ElementaryTypeName","src":"6698:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":550,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"6734:6:3","nodeType":"VariableDeclaration","scope":556,"src":"6726:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":549,"name":"uint256","nodeType":"ElementaryTypeName","src":"6726:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":552,"indexed":false,"mutability":"mutable","name":"data","nameLocation":"6756:4:3","nodeType":"VariableDeclaration","scope":556,"src":"6750:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":551,"name":"bytes","nodeType":"ElementaryTypeName","src":"6750:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":554,"indexed":false,"mutability":"mutable","name":"operatorData","nameLocation":"6776:12:3","nodeType":"VariableDeclaration","scope":556,"src":"6770:18:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":553,"name":"bytes","nodeType":"ElementaryTypeName","src":"6770:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6624:170:3"},"src":"6614:181:3"}],"scope":558,"src":"506:6291:3","usedErrors":[]}],"src":"108:6690:3"},"id":3},"@openzeppelin/contracts/utils/Address.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","exportedSymbols":{"Address":[887]},"id":888,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":559,"literals":["solidity","^","0.8",".1"],"nodeType":"PragmaDirective","src":"101:23:4"},{"abstract":false,"baseContracts":[],"canonicalName":"Address","contractDependencies":[],"contractKind":"library","documentation":{"id":560,"nodeType":"StructuredDocumentation","src":"126:67:4","text":" @dev Collection of functions related to the address type"},"fullyImplemented":true,"id":887,"linearizedBaseContracts":[887],"name":"Address","nameLocation":"202:7:4","nodeType":"ContractDefinition","nodes":[{"body":{"id":574,"nodeType":"Block","src":"1241:254:4","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":568,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":563,"src":"1465:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1473:4:4","memberName":"code","nodeType":"MemberAccess","src":"1465:12:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1478:6:4","memberName":"length","nodeType":"MemberAccess","src":"1465:19:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":571,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1487:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1465:23:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":567,"id":573,"nodeType":"Return","src":"1458:30:4"}]},"documentation":{"id":561,"nodeType":"StructuredDocumentation","src":"216:954:4","text":" @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n ====\n [IMPORTANT]\n ====\n You shouldn't rely on `isContract` to protect against flash loan attacks!\n Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n constructor.\n ===="},"id":575,"implemented":true,"kind":"function","modifiers":[],"name":"isContract","nameLocation":"1184:10:4","nodeType":"FunctionDefinition","parameters":{"id":564,"nodeType":"ParameterList","parameters":[{"constant":false,"id":563,"mutability":"mutable","name":"account","nameLocation":"1203:7:4","nodeType":"VariableDeclaration","scope":575,"src":"1195:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":562,"name":"address","nodeType":"ElementaryTypeName","src":"1195:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1194:17:4"},"returnParameters":{"id":567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":566,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":575,"src":"1235:4:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":565,"name":"bool","nodeType":"ElementaryTypeName","src":"1235:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1234:6:4"},"scope":887,"src":"1175:320:4","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":608,"nodeType":"Block","src":"2483:241:4","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":586,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2509:4:4","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$887","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$887","typeString":"library Address"}],"id":585,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2501:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":584,"name":"address","nodeType":"ElementaryTypeName","src":"2501:7:4","typeDescriptions":{}}},"id":587,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2501:13:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2515:7:4","memberName":"balance","nodeType":"MemberAccess","src":"2501:21:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":589,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":580,"src":"2526:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2501:31:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e6365","id":591,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2534:31:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""},"value":"Address: insufficient balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""}],"id":583,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2493:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":592,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2493:73:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":593,"nodeType":"ExpressionStatement","src":"2493:73:4"},{"assignments":[595,null],"declarations":[{"constant":false,"id":595,"mutability":"mutable","name":"success","nameLocation":"2583:7:4","nodeType":"VariableDeclaration","scope":608,"src":"2578:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":594,"name":"bool","nodeType":"ElementaryTypeName","src":"2578:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":602,"initialValue":{"arguments":[{"hexValue":"","id":600,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2626:2:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":596,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":578,"src":"2596:9:4","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2606:4:4","memberName":"call","nodeType":"MemberAccess","src":"2596:14:4","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":598,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":580,"src":"2618:6:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2596:29:4","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":601,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2596:33:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2577:52:4"},{"expression":{"arguments":[{"id":604,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":595,"src":"2647:7:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564","id":605,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2656:60:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""},"value":"Address: unable to send value, recipient may have reverted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""}],"id":603,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2639:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":606,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2639:78:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":607,"nodeType":"ExpressionStatement","src":"2639:78:4"}]},"documentation":{"id":576,"nodeType":"StructuredDocumentation","src":"1501:906:4","text":" @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."},"id":609,"implemented":true,"kind":"function","modifiers":[],"name":"sendValue","nameLocation":"2421:9:4","nodeType":"FunctionDefinition","parameters":{"id":581,"nodeType":"ParameterList","parameters":[{"constant":false,"id":578,"mutability":"mutable","name":"recipient","nameLocation":"2447:9:4","nodeType":"VariableDeclaration","scope":609,"src":"2431:25:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":577,"name":"address","nodeType":"ElementaryTypeName","src":"2431:15:4","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":580,"mutability":"mutable","name":"amount","nameLocation":"2466:6:4","nodeType":"VariableDeclaration","scope":609,"src":"2458:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":579,"name":"uint256","nodeType":"ElementaryTypeName","src":"2458:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2430:43:4"},"returnParameters":{"id":582,"nodeType":"ParameterList","parameters":[],"src":"2483:0:4"},"scope":887,"src":"2412:312:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":626,"nodeType":"Block","src":"3555:96:4","statements":[{"expression":{"arguments":[{"id":620,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":612,"src":"3594:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":621,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":614,"src":"3602:4:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":622,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3608:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564","id":623,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3611:32:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""},"value":"Address: low-level call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""}],"id":619,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[667,711],"referencedDeclaration":711,"src":"3572:21:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":624,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3572:72:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":618,"id":625,"nodeType":"Return","src":"3565:79:4"}]},"documentation":{"id":610,"nodeType":"StructuredDocumentation","src":"2730:731:4","text":" @dev Performs a Solidity function call using a low level `call`. A\n plain `call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason, it is bubbled up by this\n function (like regular Solidity function calls).\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert.\n _Available since v3.1._"},"id":627,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"3475:12:4","nodeType":"FunctionDefinition","parameters":{"id":615,"nodeType":"ParameterList","parameters":[{"constant":false,"id":612,"mutability":"mutable","name":"target","nameLocation":"3496:6:4","nodeType":"VariableDeclaration","scope":627,"src":"3488:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":611,"name":"address","nodeType":"ElementaryTypeName","src":"3488:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":614,"mutability":"mutable","name":"data","nameLocation":"3517:4:4","nodeType":"VariableDeclaration","scope":627,"src":"3504:17:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":613,"name":"bytes","nodeType":"ElementaryTypeName","src":"3504:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3487:35:4"},"returnParameters":{"id":618,"nodeType":"ParameterList","parameters":[{"constant":false,"id":617,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":627,"src":"3541:12:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":616,"name":"bytes","nodeType":"ElementaryTypeName","src":"3541:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3540:14:4"},"scope":887,"src":"3466:185:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":646,"nodeType":"Block","src":"4020:76:4","statements":[{"expression":{"arguments":[{"id":640,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"4059:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":641,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"4067:4:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":642,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4073:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":643,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"4076:12:4","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":639,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[667,711],"referencedDeclaration":711,"src":"4037:21:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":644,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4037:52:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":638,"id":645,"nodeType":"Return","src":"4030:59:4"}]},"documentation":{"id":628,"nodeType":"StructuredDocumentation","src":"3657:211:4","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":647,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"3882:12:4","nodeType":"FunctionDefinition","parameters":{"id":635,"nodeType":"ParameterList","parameters":[{"constant":false,"id":630,"mutability":"mutable","name":"target","nameLocation":"3912:6:4","nodeType":"VariableDeclaration","scope":647,"src":"3904:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":629,"name":"address","nodeType":"ElementaryTypeName","src":"3904:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":632,"mutability":"mutable","name":"data","nameLocation":"3941:4:4","nodeType":"VariableDeclaration","scope":647,"src":"3928:17:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":631,"name":"bytes","nodeType":"ElementaryTypeName","src":"3928:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":634,"mutability":"mutable","name":"errorMessage","nameLocation":"3969:12:4","nodeType":"VariableDeclaration","scope":647,"src":"3955:26:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":633,"name":"string","nodeType":"ElementaryTypeName","src":"3955:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3894:93:4"},"returnParameters":{"id":638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":637,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":647,"src":"4006:12:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":636,"name":"bytes","nodeType":"ElementaryTypeName","src":"4006:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4005:14:4"},"scope":887,"src":"3873:223:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":666,"nodeType":"Block","src":"4601:111:4","statements":[{"expression":{"arguments":[{"id":660,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":650,"src":"4640:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":661,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":652,"src":"4648:4:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":662,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":654,"src":"4654:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564","id":663,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4661:43:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""},"value":"Address: low-level call with value failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""}],"id":659,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[667,711],"referencedDeclaration":711,"src":"4618:21:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":664,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4618:87:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":658,"id":665,"nodeType":"Return","src":"4611:94:4"}]},"documentation":{"id":648,"nodeType":"StructuredDocumentation","src":"4102:351:4","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`.\n _Available since v3.1._"},"id":667,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"4467:21:4","nodeType":"FunctionDefinition","parameters":{"id":655,"nodeType":"ParameterList","parameters":[{"constant":false,"id":650,"mutability":"mutable","name":"target","nameLocation":"4506:6:4","nodeType":"VariableDeclaration","scope":667,"src":"4498:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":649,"name":"address","nodeType":"ElementaryTypeName","src":"4498:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":652,"mutability":"mutable","name":"data","nameLocation":"4535:4:4","nodeType":"VariableDeclaration","scope":667,"src":"4522:17:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":651,"name":"bytes","nodeType":"ElementaryTypeName","src":"4522:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":654,"mutability":"mutable","name":"value","nameLocation":"4557:5:4","nodeType":"VariableDeclaration","scope":667,"src":"4549:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":653,"name":"uint256","nodeType":"ElementaryTypeName","src":"4549:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4488:80:4"},"returnParameters":{"id":658,"nodeType":"ParameterList","parameters":[{"constant":false,"id":657,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":667,"src":"4587:12:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":656,"name":"bytes","nodeType":"ElementaryTypeName","src":"4587:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4586:14:4"},"scope":887,"src":"4458:254:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":710,"nodeType":"Block","src":"5139:267:4","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":684,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5165:4:4","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$887","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$887","typeString":"library Address"}],"id":683,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5157:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":682,"name":"address","nodeType":"ElementaryTypeName","src":"5157:7:4","typeDescriptions":{}}},"id":685,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5157:13:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5171:7:4","memberName":"balance","nodeType":"MemberAccess","src":"5157:21:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":687,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":674,"src":"5182:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5157:30:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c","id":689,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5189:40:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""},"value":"Address: insufficient balance for call"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""}],"id":681,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5149:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5149:81:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":691,"nodeType":"ExpressionStatement","src":"5149:81:4"},{"assignments":[693,695],"declarations":[{"constant":false,"id":693,"mutability":"mutable","name":"success","nameLocation":"5246:7:4","nodeType":"VariableDeclaration","scope":710,"src":"5241:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":692,"name":"bool","nodeType":"ElementaryTypeName","src":"5241:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":695,"mutability":"mutable","name":"returndata","nameLocation":"5268:10:4","nodeType":"VariableDeclaration","scope":710,"src":"5255:23:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":694,"name":"bytes","nodeType":"ElementaryTypeName","src":"5255:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":702,"initialValue":{"arguments":[{"id":700,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":672,"src":"5308:4:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":696,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":670,"src":"5282:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":697,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5289:4:4","memberName":"call","nodeType":"MemberAccess","src":"5282:11:4","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":698,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":674,"src":"5301:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"5282:25:4","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":701,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5282:31:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"5240:73:4"},{"expression":{"arguments":[{"id":704,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":670,"src":"5357:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":705,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":693,"src":"5365:7:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":706,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":695,"src":"5374:10:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":707,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":676,"src":"5386:12:4","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":703,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":842,"src":"5330:26:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":708,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5330:69:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":680,"id":709,"nodeType":"Return","src":"5323:76:4"}]},"documentation":{"id":668,"nodeType":"StructuredDocumentation","src":"4718:237:4","text":" @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n with `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":711,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"4969:21:4","nodeType":"FunctionDefinition","parameters":{"id":677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":670,"mutability":"mutable","name":"target","nameLocation":"5008:6:4","nodeType":"VariableDeclaration","scope":711,"src":"5000:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":669,"name":"address","nodeType":"ElementaryTypeName","src":"5000:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":672,"mutability":"mutable","name":"data","nameLocation":"5037:4:4","nodeType":"VariableDeclaration","scope":711,"src":"5024:17:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":671,"name":"bytes","nodeType":"ElementaryTypeName","src":"5024:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":674,"mutability":"mutable","name":"value","nameLocation":"5059:5:4","nodeType":"VariableDeclaration","scope":711,"src":"5051:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":673,"name":"uint256","nodeType":"ElementaryTypeName","src":"5051:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":676,"mutability":"mutable","name":"errorMessage","nameLocation":"5088:12:4","nodeType":"VariableDeclaration","scope":711,"src":"5074:26:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":675,"name":"string","nodeType":"ElementaryTypeName","src":"5074:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4990:116:4"},"returnParameters":{"id":680,"nodeType":"ParameterList","parameters":[{"constant":false,"id":679,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":711,"src":"5125:12:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":678,"name":"bytes","nodeType":"ElementaryTypeName","src":"5125:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5124:14:4"},"scope":887,"src":"4960:446:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":727,"nodeType":"Block","src":"5683:97:4","statements":[{"expression":{"arguments":[{"id":722,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":714,"src":"5719:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":723,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":716,"src":"5727:4:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564","id":724,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5733:39:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""},"value":"Address: low-level static call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""}],"id":721,"name":"functionStaticCall","nodeType":"Identifier","overloadedDeclarations":[728,757],"referencedDeclaration":757,"src":"5700:18:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) view returns (bytes memory)"}},"id":725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5700:73:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":720,"id":726,"nodeType":"Return","src":"5693:80:4"}]},"documentation":{"id":712,"nodeType":"StructuredDocumentation","src":"5412:166:4","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":728,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"5592:18:4","nodeType":"FunctionDefinition","parameters":{"id":717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":714,"mutability":"mutable","name":"target","nameLocation":"5619:6:4","nodeType":"VariableDeclaration","scope":728,"src":"5611:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":713,"name":"address","nodeType":"ElementaryTypeName","src":"5611:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":716,"mutability":"mutable","name":"data","nameLocation":"5640:4:4","nodeType":"VariableDeclaration","scope":728,"src":"5627:17:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":715,"name":"bytes","nodeType":"ElementaryTypeName","src":"5627:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5610:35:4"},"returnParameters":{"id":720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":719,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":728,"src":"5669:12:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":718,"name":"bytes","nodeType":"ElementaryTypeName","src":"5669:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5668:14:4"},"scope":887,"src":"5583:197:4","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":756,"nodeType":"Block","src":"6122:168:4","statements":[{"assignments":[741,743],"declarations":[{"constant":false,"id":741,"mutability":"mutable","name":"success","nameLocation":"6138:7:4","nodeType":"VariableDeclaration","scope":756,"src":"6133:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":740,"name":"bool","nodeType":"ElementaryTypeName","src":"6133:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":743,"mutability":"mutable","name":"returndata","nameLocation":"6160:10:4","nodeType":"VariableDeclaration","scope":756,"src":"6147:23:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":742,"name":"bytes","nodeType":"ElementaryTypeName","src":"6147:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":748,"initialValue":{"arguments":[{"id":746,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":733,"src":"6192:4:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":744,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":731,"src":"6174:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6181:10:4","memberName":"staticcall","nodeType":"MemberAccess","src":"6174:17:4","typeDescriptions":{"typeIdentifier":"t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) view returns (bool,bytes memory)"}},"id":747,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6174:23:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"6132:65:4"},{"expression":{"arguments":[{"id":750,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":731,"src":"6241:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":751,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":741,"src":"6249:7:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":752,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":743,"src":"6258:10:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":753,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":735,"src":"6270:12:4","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":749,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":842,"src":"6214:26:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":754,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6214:69:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":739,"id":755,"nodeType":"Return","src":"6207:76:4"}]},"documentation":{"id":729,"nodeType":"StructuredDocumentation","src":"5786:173:4","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":757,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"5973:18:4","nodeType":"FunctionDefinition","parameters":{"id":736,"nodeType":"ParameterList","parameters":[{"constant":false,"id":731,"mutability":"mutable","name":"target","nameLocation":"6009:6:4","nodeType":"VariableDeclaration","scope":757,"src":"6001:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":730,"name":"address","nodeType":"ElementaryTypeName","src":"6001:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":733,"mutability":"mutable","name":"data","nameLocation":"6038:4:4","nodeType":"VariableDeclaration","scope":757,"src":"6025:17:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":732,"name":"bytes","nodeType":"ElementaryTypeName","src":"6025:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":735,"mutability":"mutable","name":"errorMessage","nameLocation":"6066:12:4","nodeType":"VariableDeclaration","scope":757,"src":"6052:26:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":734,"name":"string","nodeType":"ElementaryTypeName","src":"6052:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5991:93:4"},"returnParameters":{"id":739,"nodeType":"ParameterList","parameters":[{"constant":false,"id":738,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":757,"src":"6108:12:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":737,"name":"bytes","nodeType":"ElementaryTypeName","src":"6108:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6107:14:4"},"scope":887,"src":"5964:326:4","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":773,"nodeType":"Block","src":"6566:101:4","statements":[{"expression":{"arguments":[{"id":768,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":760,"src":"6604:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":769,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":762,"src":"6612:4:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564","id":770,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6618:41:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""},"value":"Address: low-level delegate call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""}],"id":767,"name":"functionDelegateCall","nodeType":"Identifier","overloadedDeclarations":[774,803],"referencedDeclaration":803,"src":"6583:20:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) returns (bytes memory)"}},"id":771,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6583:77:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":766,"id":772,"nodeType":"Return","src":"6576:84:4"}]},"documentation":{"id":758,"nodeType":"StructuredDocumentation","src":"6296:168:4","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":774,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"6478:20:4","nodeType":"FunctionDefinition","parameters":{"id":763,"nodeType":"ParameterList","parameters":[{"constant":false,"id":760,"mutability":"mutable","name":"target","nameLocation":"6507:6:4","nodeType":"VariableDeclaration","scope":774,"src":"6499:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":759,"name":"address","nodeType":"ElementaryTypeName","src":"6499:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":762,"mutability":"mutable","name":"data","nameLocation":"6528:4:4","nodeType":"VariableDeclaration","scope":774,"src":"6515:17:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":761,"name":"bytes","nodeType":"ElementaryTypeName","src":"6515:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6498:35:4"},"returnParameters":{"id":766,"nodeType":"ParameterList","parameters":[{"constant":false,"id":765,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":774,"src":"6552:12:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":764,"name":"bytes","nodeType":"ElementaryTypeName","src":"6552:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6551:14:4"},"scope":887,"src":"6469:198:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":802,"nodeType":"Block","src":"7008:170:4","statements":[{"assignments":[787,789],"declarations":[{"constant":false,"id":787,"mutability":"mutable","name":"success","nameLocation":"7024:7:4","nodeType":"VariableDeclaration","scope":802,"src":"7019:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":786,"name":"bool","nodeType":"ElementaryTypeName","src":"7019:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":789,"mutability":"mutable","name":"returndata","nameLocation":"7046:10:4","nodeType":"VariableDeclaration","scope":802,"src":"7033:23:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":788,"name":"bytes","nodeType":"ElementaryTypeName","src":"7033:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":794,"initialValue":{"arguments":[{"id":792,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":779,"src":"7080:4:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":790,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":777,"src":"7060:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":791,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7067:12:4","memberName":"delegatecall","nodeType":"MemberAccess","src":"7060:19:4","typeDescriptions":{"typeIdentifier":"t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bool,bytes memory)"}},"id":793,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7060:25:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"7018:67:4"},{"expression":{"arguments":[{"id":796,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":777,"src":"7129:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":797,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":787,"src":"7137:7:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":798,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":789,"src":"7146:10:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":799,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":781,"src":"7158:12:4","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":795,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":842,"src":"7102:26:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":800,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7102:69:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":785,"id":801,"nodeType":"Return","src":"7095:76:4"}]},"documentation":{"id":775,"nodeType":"StructuredDocumentation","src":"6673:175:4","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":803,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"6862:20:4","nodeType":"FunctionDefinition","parameters":{"id":782,"nodeType":"ParameterList","parameters":[{"constant":false,"id":777,"mutability":"mutable","name":"target","nameLocation":"6900:6:4","nodeType":"VariableDeclaration","scope":803,"src":"6892:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":776,"name":"address","nodeType":"ElementaryTypeName","src":"6892:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":779,"mutability":"mutable","name":"data","nameLocation":"6929:4:4","nodeType":"VariableDeclaration","scope":803,"src":"6916:17:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":778,"name":"bytes","nodeType":"ElementaryTypeName","src":"6916:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":781,"mutability":"mutable","name":"errorMessage","nameLocation":"6957:12:4","nodeType":"VariableDeclaration","scope":803,"src":"6943:26:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":780,"name":"string","nodeType":"ElementaryTypeName","src":"6943:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6882:93:4"},"returnParameters":{"id":785,"nodeType":"ParameterList","parameters":[{"constant":false,"id":784,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":803,"src":"6994:12:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":783,"name":"bytes","nodeType":"ElementaryTypeName","src":"6994:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6993:14:4"},"scope":887,"src":"6853:325:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":841,"nodeType":"Block","src":"7660:434:4","statements":[{"condition":{"id":817,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":808,"src":"7674:7:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":839,"nodeType":"Block","src":"8030:58:4","statements":[{"expression":{"arguments":[{"id":835,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":810,"src":"8052:10:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":836,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":812,"src":"8064:12:4","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":834,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":886,"src":"8044:7:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (bytes memory,string memory) pure"}},"id":837,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8044:33:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":838,"nodeType":"ExpressionStatement","src":"8044:33:4"}]},"id":840,"nodeType":"IfStatement","src":"7670:418:4","trueBody":{"id":833,"nodeType":"Block","src":"7683:341:4","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":818,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":810,"src":"7701:10:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7712:6:4","memberName":"length","nodeType":"MemberAccess","src":"7701:17:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":820,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7722:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7701:22:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":830,"nodeType":"IfStatement","src":"7697:286:4","trueBody":{"id":829,"nodeType":"Block","src":"7725:258:4","statements":[{"expression":{"arguments":[{"arguments":[{"id":824,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":806,"src":"7927:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":823,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":575,"src":"7916:10:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":825,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7916:18:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","id":826,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7936:31:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""},"value":"Address: call to non-contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""}],"id":822,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7908:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":827,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7908:60:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":828,"nodeType":"ExpressionStatement","src":"7908:60:4"}]}},{"expression":{"id":831,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":810,"src":"8003:10:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":816,"id":832,"nodeType":"Return","src":"7996:17:4"}]}}]},"documentation":{"id":804,"nodeType":"StructuredDocumentation","src":"7184:277:4","text":" @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\n the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\n _Available since v4.8._"},"id":842,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResultFromTarget","nameLocation":"7475:26:4","nodeType":"FunctionDefinition","parameters":{"id":813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":806,"mutability":"mutable","name":"target","nameLocation":"7519:6:4","nodeType":"VariableDeclaration","scope":842,"src":"7511:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":805,"name":"address","nodeType":"ElementaryTypeName","src":"7511:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":808,"mutability":"mutable","name":"success","nameLocation":"7540:7:4","nodeType":"VariableDeclaration","scope":842,"src":"7535:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":807,"name":"bool","nodeType":"ElementaryTypeName","src":"7535:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":810,"mutability":"mutable","name":"returndata","nameLocation":"7570:10:4","nodeType":"VariableDeclaration","scope":842,"src":"7557:23:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":809,"name":"bytes","nodeType":"ElementaryTypeName","src":"7557:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":812,"mutability":"mutable","name":"errorMessage","nameLocation":"7604:12:4","nodeType":"VariableDeclaration","scope":842,"src":"7590:26:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":811,"name":"string","nodeType":"ElementaryTypeName","src":"7590:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7501:121:4"},"returnParameters":{"id":816,"nodeType":"ParameterList","parameters":[{"constant":false,"id":815,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":842,"src":"7646:12:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":814,"name":"bytes","nodeType":"ElementaryTypeName","src":"7646:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7645:14:4"},"scope":887,"src":"7466:628:4","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":865,"nodeType":"Block","src":"8475:135:4","statements":[{"condition":{"id":854,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":845,"src":"8489:7:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":863,"nodeType":"Block","src":"8546:58:4","statements":[{"expression":{"arguments":[{"id":859,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":847,"src":"8568:10:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":860,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":849,"src":"8580:12:4","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":858,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":886,"src":"8560:7:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (bytes memory,string memory) pure"}},"id":861,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8560:33:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":862,"nodeType":"ExpressionStatement","src":"8560:33:4"}]},"id":864,"nodeType":"IfStatement","src":"8485:119:4","trueBody":{"id":857,"nodeType":"Block","src":"8498:42:4","statements":[{"expression":{"id":855,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":847,"src":"8519:10:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":853,"id":856,"nodeType":"Return","src":"8512:17:4"}]}}]},"documentation":{"id":843,"nodeType":"StructuredDocumentation","src":"8100:210:4","text":" @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\n revert reason or using the provided one.\n _Available since v4.3._"},"id":866,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResult","nameLocation":"8324:16:4","nodeType":"FunctionDefinition","parameters":{"id":850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":845,"mutability":"mutable","name":"success","nameLocation":"8355:7:4","nodeType":"VariableDeclaration","scope":866,"src":"8350:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":844,"name":"bool","nodeType":"ElementaryTypeName","src":"8350:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":847,"mutability":"mutable","name":"returndata","nameLocation":"8385:10:4","nodeType":"VariableDeclaration","scope":866,"src":"8372:23:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":846,"name":"bytes","nodeType":"ElementaryTypeName","src":"8372:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":849,"mutability":"mutable","name":"errorMessage","nameLocation":"8419:12:4","nodeType":"VariableDeclaration","scope":866,"src":"8405:26:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":848,"name":"string","nodeType":"ElementaryTypeName","src":"8405:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8340:97:4"},"returnParameters":{"id":853,"nodeType":"ParameterList","parameters":[{"constant":false,"id":852,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":866,"src":"8461:12:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":851,"name":"bytes","nodeType":"ElementaryTypeName","src":"8461:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8460:14:4"},"scope":887,"src":"8315:295:4","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":885,"nodeType":"Block","src":"8699:457:4","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":873,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":868,"src":"8775:10:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8786:6:4","memberName":"length","nodeType":"MemberAccess","src":"8775:17:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8795:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8775:21:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":883,"nodeType":"Block","src":"9105:45:4","statements":[{"expression":{"arguments":[{"id":880,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":870,"src":"9126:12:4","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":879,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"9119:6:4","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":881,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9119:20:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":882,"nodeType":"ExpressionStatement","src":"9119:20:4"}]},"id":884,"nodeType":"IfStatement","src":"8771:379:4","trueBody":{"id":878,"nodeType":"Block","src":"8798:301:4","statements":[{"AST":{"nodeType":"YulBlock","src":"8956:133:4","statements":[{"nodeType":"YulVariableDeclaration","src":"8974:40:4","value":{"arguments":[{"name":"returndata","nodeType":"YulIdentifier","src":"9003:10:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8997:5:4"},"nodeType":"YulFunctionCall","src":"8997:17:4"},"variables":[{"name":"returndata_size","nodeType":"YulTypedName","src":"8978:15:4","type":""}]},{"expression":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9042:2:4","type":"","value":"32"},{"name":"returndata","nodeType":"YulIdentifier","src":"9046:10:4"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9038:3:4"},"nodeType":"YulFunctionCall","src":"9038:19:4"},{"name":"returndata_size","nodeType":"YulIdentifier","src":"9059:15:4"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9031:6:4"},"nodeType":"YulFunctionCall","src":"9031:44:4"},"nodeType":"YulExpressionStatement","src":"9031:44:4"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":868,"isOffset":false,"isSlot":false,"src":"9003:10:4","valueSize":1},{"declaration":868,"isOffset":false,"isSlot":false,"src":"9046:10:4","valueSize":1}],"id":877,"nodeType":"InlineAssembly","src":"8947:142:4"}]}}]},"id":886,"implemented":true,"kind":"function","modifiers":[],"name":"_revert","nameLocation":"8625:7:4","nodeType":"FunctionDefinition","parameters":{"id":871,"nodeType":"ParameterList","parameters":[{"constant":false,"id":868,"mutability":"mutable","name":"returndata","nameLocation":"8646:10:4","nodeType":"VariableDeclaration","scope":886,"src":"8633:23:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":867,"name":"bytes","nodeType":"ElementaryTypeName","src":"8633:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":870,"mutability":"mutable","name":"errorMessage","nameLocation":"8672:12:4","nodeType":"VariableDeclaration","scope":886,"src":"8658:26:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":869,"name":"string","nodeType":"ElementaryTypeName","src":"8658:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8632:53:4"},"returnParameters":{"id":872,"nodeType":"ParameterList","parameters":[],"src":"8699:0:4"},"scope":887,"src":"8616:540:4","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":888,"src":"194:8964:4","usedErrors":[]}],"src":"101:9058:4"},"id":4},"@openzeppelin/contracts/utils/Strings.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Strings.sol","exportedSymbols":{"Math":[1927],"Strings":[1062]},"id":1063,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":889,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"101:23:5"},{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","file":"./math/Math.sol","id":890,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1063,"sourceUnit":1928,"src":"126:25:5","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"Strings","contractDependencies":[],"contractKind":"library","documentation":{"id":891,"nodeType":"StructuredDocumentation","src":"153:34:5","text":" @dev String operations."},"fullyImplemented":true,"id":1062,"linearizedBaseContracts":[1062],"name":"Strings","nameLocation":"196:7:5","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":894,"mutability":"constant","name":"_SYMBOLS","nameLocation":"235:8:5","nodeType":"VariableDeclaration","scope":1062,"src":"210:54:5","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"typeName":{"id":892,"name":"bytes16","nodeType":"ElementaryTypeName","src":"210:7:5","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"value":{"hexValue":"30313233343536373839616263646566","id":893,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"246:18:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f","typeString":"literal_string \"0123456789abcdef\""},"value":"0123456789abcdef"},"visibility":"private"},{"constant":true,"id":897,"mutability":"constant","name":"_ADDRESS_LENGTH","nameLocation":"293:15:5","nodeType":"VariableDeclaration","scope":1062,"src":"270:43:5","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":895,"name":"uint8","nodeType":"ElementaryTypeName","src":"270:5:5","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3230","id":896,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"311:2:5","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"private"},{"body":{"id":944,"nodeType":"Block","src":"486:625:5","statements":[{"id":943,"nodeType":"UncheckedBlock","src":"496:609:5","statements":[{"assignments":[906],"declarations":[{"constant":false,"id":906,"mutability":"mutable","name":"length","nameLocation":"528:6:5","nodeType":"VariableDeclaration","scope":943,"src":"520:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":905,"name":"uint256","nodeType":"ElementaryTypeName","src":"520:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":913,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":909,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":900,"src":"548:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":907,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1927,"src":"537:4:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1927_$","typeString":"type(library Math)"}},"id":908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"542:5:5","memberName":"log10","nodeType":"MemberAccess","referencedDeclaration":1764,"src":"537:10:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":910,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"537:17:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":911,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"557:1:5","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"537:21:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"520:38:5"},{"assignments":[915],"declarations":[{"constant":false,"id":915,"mutability":"mutable","name":"buffer","nameLocation":"586:6:5","nodeType":"VariableDeclaration","scope":943,"src":"572:20:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":914,"name":"string","nodeType":"ElementaryTypeName","src":"572:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":920,"initialValue":{"arguments":[{"id":918,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":906,"src":"606:6:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":917,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"595:10:5","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"},"typeName":{"id":916,"name":"string","nodeType":"ElementaryTypeName","src":"599:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"id":919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"595:18:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"572:41:5"},{"assignments":[922],"declarations":[{"constant":false,"id":922,"mutability":"mutable","name":"ptr","nameLocation":"635:3:5","nodeType":"VariableDeclaration","scope":943,"src":"627:11:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":921,"name":"uint256","nodeType":"ElementaryTypeName","src":"627:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":923,"nodeType":"VariableDeclarationStatement","src":"627:11:5"},{"AST":{"nodeType":"YulBlock","src":"708:67:5","statements":[{"nodeType":"YulAssignment","src":"726:35:5","value":{"arguments":[{"name":"buffer","nodeType":"YulIdentifier","src":"737:6:5"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"749:2:5","type":"","value":"32"},{"name":"length","nodeType":"YulIdentifier","src":"753:6:5"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"745:3:5"},"nodeType":"YulFunctionCall","src":"745:15:5"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"733:3:5"},"nodeType":"YulFunctionCall","src":"733:28:5"},"variableNames":[{"name":"ptr","nodeType":"YulIdentifier","src":"726:3:5"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":915,"isOffset":false,"isSlot":false,"src":"737:6:5","valueSize":1},{"declaration":906,"isOffset":false,"isSlot":false,"src":"753:6:5","valueSize":1},{"declaration":922,"isOffset":false,"isSlot":false,"src":"726:3:5","valueSize":1}],"id":924,"nodeType":"InlineAssembly","src":"699:76:5"},{"body":{"id":939,"nodeType":"Block","src":"801:267:5","statements":[{"expression":{"id":927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"819:5:5","subExpression":{"id":926,"name":"ptr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":922,"src":"819:3:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":928,"nodeType":"ExpressionStatement","src":"819:5:5"},{"AST":{"nodeType":"YulBlock","src":"902:84:5","statements":[{"expression":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"932:3:5"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"946:5:5"},{"kind":"number","nodeType":"YulLiteral","src":"953:2:5","type":"","value":"10"}],"functionName":{"name":"mod","nodeType":"YulIdentifier","src":"942:3:5"},"nodeType":"YulFunctionCall","src":"942:14:5"},{"name":"_SYMBOLS","nodeType":"YulIdentifier","src":"958:8:5"}],"functionName":{"name":"byte","nodeType":"YulIdentifier","src":"937:4:5"},"nodeType":"YulFunctionCall","src":"937:30:5"}],"functionName":{"name":"mstore8","nodeType":"YulIdentifier","src":"924:7:5"},"nodeType":"YulFunctionCall","src":"924:44:5"},"nodeType":"YulExpressionStatement","src":"924:44:5"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":894,"isOffset":false,"isSlot":false,"src":"958:8:5","valueSize":1},{"declaration":922,"isOffset":false,"isSlot":false,"src":"932:3:5","valueSize":1},{"declaration":900,"isOffset":false,"isSlot":false,"src":"946:5:5","valueSize":1}],"id":929,"nodeType":"InlineAssembly","src":"893:93:5"},{"expression":{"id":932,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":930,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":900,"src":"1003:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":931,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1012:2:5","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"1003:11:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":933,"nodeType":"ExpressionStatement","src":"1003:11:5"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":934,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":900,"src":"1036:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":935,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1045:1:5","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1036:10:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":938,"nodeType":"IfStatement","src":"1032:21:5","trueBody":{"id":937,"nodeType":"Break","src":"1048:5:5"}}]},"condition":{"hexValue":"74727565","id":925,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"795:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":940,"nodeType":"WhileStatement","src":"788:280:5"},{"expression":{"id":941,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":915,"src":"1088:6:5","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":904,"id":942,"nodeType":"Return","src":"1081:13:5"}]}]},"documentation":{"id":898,"nodeType":"StructuredDocumentation","src":"320:90:5","text":" @dev Converts a `uint256` to its ASCII `string` decimal representation."},"id":945,"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"424:8:5","nodeType":"FunctionDefinition","parameters":{"id":901,"nodeType":"ParameterList","parameters":[{"constant":false,"id":900,"mutability":"mutable","name":"value","nameLocation":"441:5:5","nodeType":"VariableDeclaration","scope":945,"src":"433:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":899,"name":"uint256","nodeType":"ElementaryTypeName","src":"433:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"432:15:5"},"returnParameters":{"id":904,"nodeType":"ParameterList","parameters":[{"constant":false,"id":903,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":945,"src":"471:13:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":902,"name":"string","nodeType":"ElementaryTypeName","src":"471:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"470:15:5"},"scope":1062,"src":"415:696:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":964,"nodeType":"Block","src":"1290:100:5","statements":[{"id":963,"nodeType":"UncheckedBlock","src":"1300:84:5","statements":[{"expression":{"arguments":[{"id":954,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":948,"src":"1343:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":957,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":948,"src":"1362:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":955,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1927,"src":"1350:4:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1927_$","typeString":"type(library Math)"}},"id":956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1355:6:5","memberName":"log256","nodeType":"MemberAccess","referencedDeclaration":1887,"src":"1350:11:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":958,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1350:18:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":959,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1371:1:5","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1350:22:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":953,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[965,1041,1061],"referencedDeclaration":1041,"src":"1331:11:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1331:42:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":952,"id":962,"nodeType":"Return","src":"1324:49:5"}]}]},"documentation":{"id":946,"nodeType":"StructuredDocumentation","src":"1117:94:5","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."},"id":965,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"1225:11:5","nodeType":"FunctionDefinition","parameters":{"id":949,"nodeType":"ParameterList","parameters":[{"constant":false,"id":948,"mutability":"mutable","name":"value","nameLocation":"1245:5:5","nodeType":"VariableDeclaration","scope":965,"src":"1237:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":947,"name":"uint256","nodeType":"ElementaryTypeName","src":"1237:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1236:15:5"},"returnParameters":{"id":952,"nodeType":"ParameterList","parameters":[{"constant":false,"id":951,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":965,"src":"1275:13:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":950,"name":"string","nodeType":"ElementaryTypeName","src":"1275:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1274:15:5"},"scope":1062,"src":"1216:174:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1040,"nodeType":"Block","src":"1603:347:5","statements":[{"assignments":[976],"declarations":[{"constant":false,"id":976,"mutability":"mutable","name":"buffer","nameLocation":"1626:6:5","nodeType":"VariableDeclaration","scope":1040,"src":"1613:19:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":975,"name":"bytes","nodeType":"ElementaryTypeName","src":"1613:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":985,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":981,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":979,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1645:1:5","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":980,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":970,"src":"1649:6:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1645:10:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":982,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1658:1:5","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"1645:14:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":978,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1635:9:5","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":977,"name":"bytes","nodeType":"ElementaryTypeName","src":"1639:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":984,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1635:25:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"1613:47:5"},{"expression":{"id":990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":986,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":976,"src":"1670:6:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":988,"indexExpression":{"hexValue":"30","id":987,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1677:1:5","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1670:9:5","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":989,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1682:3:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"src":"1670:15:5","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":991,"nodeType":"ExpressionStatement","src":"1670:15:5"},{"expression":{"id":996,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":992,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":976,"src":"1695:6:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":994,"indexExpression":{"hexValue":"31","id":993,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1702:1:5","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1695:9:5","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"78","id":995,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1707:3:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83","typeString":"literal_string \"x\""},"value":"x"},"src":"1695:15:5","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":997,"nodeType":"ExpressionStatement","src":"1695:15:5"},{"body":{"id":1026,"nodeType":"Block","src":"1765:83:5","statements":[{"expression":{"id":1020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1012,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":976,"src":"1779:6:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1014,"indexExpression":{"id":1013,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":999,"src":"1786:1:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1779:9:5","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":1015,"name":"_SYMBOLS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":894,"src":"1791:8:5","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":1019,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1016,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":968,"src":"1800:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":1017,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1808:3:5","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"1800:11:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1791:21:5","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"1779:33:5","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1021,"nodeType":"ExpressionStatement","src":"1779:33:5"},{"expression":{"id":1024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1022,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":968,"src":"1826:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":1023,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1836:1:5","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"1826:11:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1025,"nodeType":"ExpressionStatement","src":"1826:11:5"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1006,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":999,"src":"1753:1:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":1007,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1757:1:5","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1753:5:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1027,"initializationExpression":{"assignments":[999],"declarations":[{"constant":false,"id":999,"mutability":"mutable","name":"i","nameLocation":"1733:1:5","nodeType":"VariableDeclaration","scope":1027,"src":"1725:9:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":998,"name":"uint256","nodeType":"ElementaryTypeName","src":"1725:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1005,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1002,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1000,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1737:1:5","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1001,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":970,"src":"1741:6:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1737:10:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1750:1:5","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1737:14:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1725:26:5"},"loopExpression":{"expression":{"id":1010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"1760:3:5","subExpression":{"id":1009,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":999,"src":"1762:1:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1011,"nodeType":"ExpressionStatement","src":"1760:3:5"},"nodeType":"ForStatement","src":"1720:128:5"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1031,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1029,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":968,"src":"1865:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1030,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1874:1:5","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1865:10:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"537472696e67733a20686578206c656e67746820696e73756666696369656e74","id":1032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1877:34:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2","typeString":"literal_string \"Strings: hex length insufficient\""},"value":"Strings: hex length insufficient"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2","typeString":"literal_string \"Strings: hex length insufficient\""}],"id":1028,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1857:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1033,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1857:55:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1034,"nodeType":"ExpressionStatement","src":"1857:55:5"},{"expression":{"arguments":[{"id":1037,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":976,"src":"1936:6:5","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1036,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1929:6:5","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1035,"name":"string","nodeType":"ElementaryTypeName","src":"1929:6:5","typeDescriptions":{}}},"id":1038,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1929:14:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":974,"id":1039,"nodeType":"Return","src":"1922:21:5"}]},"documentation":{"id":966,"nodeType":"StructuredDocumentation","src":"1396:112:5","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."},"id":1041,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"1522:11:5","nodeType":"FunctionDefinition","parameters":{"id":971,"nodeType":"ParameterList","parameters":[{"constant":false,"id":968,"mutability":"mutable","name":"value","nameLocation":"1542:5:5","nodeType":"VariableDeclaration","scope":1041,"src":"1534:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":967,"name":"uint256","nodeType":"ElementaryTypeName","src":"1534:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":970,"mutability":"mutable","name":"length","nameLocation":"1557:6:5","nodeType":"VariableDeclaration","scope":1041,"src":"1549:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":969,"name":"uint256","nodeType":"ElementaryTypeName","src":"1549:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1533:31:5"},"returnParameters":{"id":974,"nodeType":"ParameterList","parameters":[{"constant":false,"id":973,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1041,"src":"1588:13:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":972,"name":"string","nodeType":"ElementaryTypeName","src":"1588:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1587:15:5"},"scope":1062,"src":"1513:437:5","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1060,"nodeType":"Block","src":"2175:76:5","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":1054,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1044,"src":"2220:4:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1053,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2212:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":1052,"name":"uint160","nodeType":"ElementaryTypeName","src":"2212:7:5","typeDescriptions":{}}},"id":1055,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2212:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":1051,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2204:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1050,"name":"uint256","nodeType":"ElementaryTypeName","src":"2204:7:5","typeDescriptions":{}}},"id":1056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2204:22:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1057,"name":"_ADDRESS_LENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":897,"src":"2228:15:5","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":1049,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[965,1041,1061],"referencedDeclaration":1041,"src":"2192:11:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1058,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2192:52:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1048,"id":1059,"nodeType":"Return","src":"2185:59:5"}]},"documentation":{"id":1042,"nodeType":"StructuredDocumentation","src":"1956:141:5","text":" @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation."},"id":1061,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"2111:11:5","nodeType":"FunctionDefinition","parameters":{"id":1045,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1044,"mutability":"mutable","name":"addr","nameLocation":"2131:4:5","nodeType":"VariableDeclaration","scope":1061,"src":"2123:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1043,"name":"address","nodeType":"ElementaryTypeName","src":"2123:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2122:14:5"},"returnParameters":{"id":1048,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1047,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1061,"src":"2160:13:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1046,"name":"string","nodeType":"ElementaryTypeName","src":"2160:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2159:15:5"},"scope":1062,"src":"2102:149:5","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":1063,"src":"188:2065:5","usedErrors":[]}],"src":"101:2153:5"},"id":5},"@openzeppelin/contracts/utils/math/Math.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","exportedSymbols":{"Math":[1927]},"id":1928,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1064,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"103:23:6"},{"abstract":false,"baseContracts":[],"canonicalName":"Math","contractDependencies":[],"contractKind":"library","documentation":{"id":1065,"nodeType":"StructuredDocumentation","src":"128:73:6","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"id":1927,"linearizedBaseContracts":[1927],"name":"Math","nameLocation":"210:4:6","nodeType":"ContractDefinition","nodes":[{"canonicalName":"Math.Rounding","id":1069,"members":[{"id":1066,"name":"Down","nameLocation":"245:4:6","nodeType":"EnumValue","src":"245:4:6"},{"id":1067,"name":"Up","nameLocation":"287:2:6","nodeType":"EnumValue","src":"287:2:6"},{"id":1068,"name":"Zero","nameLocation":"318:4:6","nodeType":"EnumValue","src":"318:4:6"}],"name":"Rounding","nameLocation":"226:8:6","nodeType":"EnumDefinition","src":"221:122:6"},{"body":{"id":1086,"nodeType":"Block","src":"480:37:6","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1081,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1079,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1072,"src":"497:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":1080,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1074,"src":"501:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"497:5:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":1083,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1074,"src":"509:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"497:13:6","trueExpression":{"id":1082,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1072,"src":"505:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1078,"id":1085,"nodeType":"Return","src":"490:20:6"}]},"documentation":{"id":1070,"nodeType":"StructuredDocumentation","src":"349:59:6","text":" @dev Returns the largest of two numbers."},"id":1087,"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"422:3:6","nodeType":"FunctionDefinition","parameters":{"id":1075,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1072,"mutability":"mutable","name":"a","nameLocation":"434:1:6","nodeType":"VariableDeclaration","scope":1087,"src":"426:9:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1071,"name":"uint256","nodeType":"ElementaryTypeName","src":"426:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1074,"mutability":"mutable","name":"b","nameLocation":"445:1:6","nodeType":"VariableDeclaration","scope":1087,"src":"437:9:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1073,"name":"uint256","nodeType":"ElementaryTypeName","src":"437:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"425:22:6"},"returnParameters":{"id":1078,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1077,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1087,"src":"471:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1076,"name":"uint256","nodeType":"ElementaryTypeName","src":"471:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"470:9:6"},"scope":1927,"src":"413:104:6","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1104,"nodeType":"Block","src":"655:37:6","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1099,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1097,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1090,"src":"672:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1098,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1092,"src":"676:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"672:5:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":1101,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1092,"src":"684:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"672:13:6","trueExpression":{"id":1100,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1090,"src":"680:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1096,"id":1103,"nodeType":"Return","src":"665:20:6"}]},"documentation":{"id":1088,"nodeType":"StructuredDocumentation","src":"523:60:6","text":" @dev Returns the smallest of two numbers."},"id":1105,"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"597:3:6","nodeType":"FunctionDefinition","parameters":{"id":1093,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1090,"mutability":"mutable","name":"a","nameLocation":"609:1:6","nodeType":"VariableDeclaration","scope":1105,"src":"601:9:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1089,"name":"uint256","nodeType":"ElementaryTypeName","src":"601:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1092,"mutability":"mutable","name":"b","nameLocation":"620:1:6","nodeType":"VariableDeclaration","scope":1105,"src":"612:9:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1091,"name":"uint256","nodeType":"ElementaryTypeName","src":"612:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"600:22:6"},"returnParameters":{"id":1096,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1095,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1105,"src":"646:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1094,"name":"uint256","nodeType":"ElementaryTypeName","src":"646:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"645:9:6"},"scope":1927,"src":"588:104:6","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1127,"nodeType":"Block","src":"876:82:6","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1115,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1108,"src":"931:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":1116,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1110,"src":"935:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"931:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1118,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"930:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1124,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1121,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1119,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1108,"src":"941:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":1120,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1110,"src":"945:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"941:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1122,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"940:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":1123,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"950:1:6","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"940:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"930:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1114,"id":1126,"nodeType":"Return","src":"923:28:6"}]},"documentation":{"id":1106,"nodeType":"StructuredDocumentation","src":"698:102:6","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"id":1128,"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"814:7:6","nodeType":"FunctionDefinition","parameters":{"id":1111,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1108,"mutability":"mutable","name":"a","nameLocation":"830:1:6","nodeType":"VariableDeclaration","scope":1128,"src":"822:9:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1107,"name":"uint256","nodeType":"ElementaryTypeName","src":"822:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1110,"mutability":"mutable","name":"b","nameLocation":"841:1:6","nodeType":"VariableDeclaration","scope":1128,"src":"833:9:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1109,"name":"uint256","nodeType":"ElementaryTypeName","src":"833:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"821:22:6"},"returnParameters":{"id":1114,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1113,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1128,"src":"867:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1112,"name":"uint256","nodeType":"ElementaryTypeName","src":"867:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"866:9:6"},"scope":1927,"src":"805:153:6","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1152,"nodeType":"Block","src":"1228:123:6","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1140,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1138,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1131,"src":"1316:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1139,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1321:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1316:6:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1142,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1131,"src":"1330:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1143,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1334:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1330:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1145,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1329:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1146,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1133,"src":"1339:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1329:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1148,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1343:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1329:15:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1316:28:6","trueExpression":{"hexValue":"30","id":1141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1325:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1137,"id":1151,"nodeType":"Return","src":"1309:35:6"}]},"documentation":{"id":1129,"nodeType":"StructuredDocumentation","src":"964:188:6","text":" @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds up instead\n of rounding down."},"id":1153,"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"1166:7:6","nodeType":"FunctionDefinition","parameters":{"id":1134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1131,"mutability":"mutable","name":"a","nameLocation":"1182:1:6","nodeType":"VariableDeclaration","scope":1153,"src":"1174:9:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1130,"name":"uint256","nodeType":"ElementaryTypeName","src":"1174:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1133,"mutability":"mutable","name":"b","nameLocation":"1193:1:6","nodeType":"VariableDeclaration","scope":1153,"src":"1185:9:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1132,"name":"uint256","nodeType":"ElementaryTypeName","src":"1185:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1173:22:6"},"returnParameters":{"id":1137,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1136,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1153,"src":"1219:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1135,"name":"uint256","nodeType":"ElementaryTypeName","src":"1219:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1218:9:6"},"scope":1927,"src":"1157:194:6","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1274,"nodeType":"Block","src":"1795:3797:6","statements":[{"id":1273,"nodeType":"UncheckedBlock","src":"1805:3781:6","statements":[{"assignments":[1166],"declarations":[{"constant":false,"id":1166,"mutability":"mutable","name":"prod0","nameLocation":"2134:5:6","nodeType":"VariableDeclaration","scope":1273,"src":"2126:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1165,"name":"uint256","nodeType":"ElementaryTypeName","src":"2126:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1167,"nodeType":"VariableDeclarationStatement","src":"2126:13:6"},{"assignments":[1169],"declarations":[{"constant":false,"id":1169,"mutability":"mutable","name":"prod1","nameLocation":"2206:5:6","nodeType":"VariableDeclaration","scope":1273,"src":"2198:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1168,"name":"uint256","nodeType":"ElementaryTypeName","src":"2198:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1170,"nodeType":"VariableDeclarationStatement","src":"2198:13:6"},{"AST":{"nodeType":"YulBlock","src":"2278:157:6","statements":[{"nodeType":"YulVariableDeclaration","src":"2296:30:6","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"2313:1:6"},{"name":"y","nodeType":"YulIdentifier","src":"2316:1:6"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2323:1:6","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2319:3:6"},"nodeType":"YulFunctionCall","src":"2319:6:6"}],"functionName":{"name":"mulmod","nodeType":"YulIdentifier","src":"2306:6:6"},"nodeType":"YulFunctionCall","src":"2306:20:6"},"variables":[{"name":"mm","nodeType":"YulTypedName","src":"2300:2:6","type":""}]},{"nodeType":"YulAssignment","src":"2343:18:6","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"2356:1:6"},{"name":"y","nodeType":"YulIdentifier","src":"2359:1:6"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"2352:3:6"},"nodeType":"YulFunctionCall","src":"2352:9:6"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"2343:5:6"}]},{"nodeType":"YulAssignment","src":"2378:43:6","value":{"arguments":[{"arguments":[{"name":"mm","nodeType":"YulIdentifier","src":"2395:2:6"},{"name":"prod0","nodeType":"YulIdentifier","src":"2399:5:6"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2391:3:6"},"nodeType":"YulFunctionCall","src":"2391:14:6"},{"arguments":[{"name":"mm","nodeType":"YulIdentifier","src":"2410:2:6"},{"name":"prod0","nodeType":"YulIdentifier","src":"2414:5:6"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2407:2:6"},"nodeType":"YulFunctionCall","src":"2407:13:6"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2387:3:6"},"nodeType":"YulFunctionCall","src":"2387:34:6"},"variableNames":[{"name":"prod1","nodeType":"YulIdentifier","src":"2378:5:6"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1166,"isOffset":false,"isSlot":false,"src":"2343:5:6","valueSize":1},{"declaration":1166,"isOffset":false,"isSlot":false,"src":"2399:5:6","valueSize":1},{"declaration":1166,"isOffset":false,"isSlot":false,"src":"2414:5:6","valueSize":1},{"declaration":1169,"isOffset":false,"isSlot":false,"src":"2378:5:6","valueSize":1},{"declaration":1156,"isOffset":false,"isSlot":false,"src":"2313:1:6","valueSize":1},{"declaration":1156,"isOffset":false,"isSlot":false,"src":"2356:1:6","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"2316:1:6","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"2359:1:6","valueSize":1}],"id":1171,"nodeType":"InlineAssembly","src":"2269:166:6"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1174,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1172,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1169,"src":"2516:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1173,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2525:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2516:10:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1180,"nodeType":"IfStatement","src":"2512:75:6","trueBody":{"id":1179,"nodeType":"Block","src":"2528:59:6","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1175,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1166,"src":"2553:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1176,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1160,"src":"2561:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2553:19:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1164,"id":1178,"nodeType":"Return","src":"2546:26:6"}]}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1182,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1160,"src":"2697:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":1183,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1169,"src":"2711:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2697:19:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1181,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2689:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":1185,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2689:28:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1186,"nodeType":"ExpressionStatement","src":"2689:28:6"},{"assignments":[1188],"declarations":[{"constant":false,"id":1188,"mutability":"mutable","name":"remainder","nameLocation":"2981:9:6","nodeType":"VariableDeclaration","scope":1273,"src":"2973:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1187,"name":"uint256","nodeType":"ElementaryTypeName","src":"2973:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1189,"nodeType":"VariableDeclarationStatement","src":"2973:17:6"},{"AST":{"nodeType":"YulBlock","src":"3013:291:6","statements":[{"nodeType":"YulAssignment","src":"3082:38:6","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"3102:1:6"},{"name":"y","nodeType":"YulIdentifier","src":"3105:1:6"},{"name":"denominator","nodeType":"YulIdentifier","src":"3108:11:6"}],"functionName":{"name":"mulmod","nodeType":"YulIdentifier","src":"3095:6:6"},"nodeType":"YulFunctionCall","src":"3095:25:6"},"variableNames":[{"name":"remainder","nodeType":"YulIdentifier","src":"3082:9:6"}]},{"nodeType":"YulAssignment","src":"3202:41:6","value":{"arguments":[{"name":"prod1","nodeType":"YulIdentifier","src":"3215:5:6"},{"arguments":[{"name":"remainder","nodeType":"YulIdentifier","src":"3225:9:6"},{"name":"prod0","nodeType":"YulIdentifier","src":"3236:5:6"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3222:2:6"},"nodeType":"YulFunctionCall","src":"3222:20:6"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3211:3:6"},"nodeType":"YulFunctionCall","src":"3211:32:6"},"variableNames":[{"name":"prod1","nodeType":"YulIdentifier","src":"3202:5:6"}]},{"nodeType":"YulAssignment","src":"3260:30:6","value":{"arguments":[{"name":"prod0","nodeType":"YulIdentifier","src":"3273:5:6"},{"name":"remainder","nodeType":"YulIdentifier","src":"3280:9:6"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3269:3:6"},"nodeType":"YulFunctionCall","src":"3269:21:6"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"3260:5:6"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1160,"isOffset":false,"isSlot":false,"src":"3108:11:6","valueSize":1},{"declaration":1166,"isOffset":false,"isSlot":false,"src":"3236:5:6","valueSize":1},{"declaration":1166,"isOffset":false,"isSlot":false,"src":"3260:5:6","valueSize":1},{"declaration":1166,"isOffset":false,"isSlot":false,"src":"3273:5:6","valueSize":1},{"declaration":1169,"isOffset":false,"isSlot":false,"src":"3202:5:6","valueSize":1},{"declaration":1169,"isOffset":false,"isSlot":false,"src":"3215:5:6","valueSize":1},{"declaration":1188,"isOffset":false,"isSlot":false,"src":"3082:9:6","valueSize":1},{"declaration":1188,"isOffset":false,"isSlot":false,"src":"3225:9:6","valueSize":1},{"declaration":1188,"isOffset":false,"isSlot":false,"src":"3280:9:6","valueSize":1},{"declaration":1156,"isOffset":false,"isSlot":false,"src":"3102:1:6","valueSize":1},{"declaration":1158,"isOffset":false,"isSlot":false,"src":"3105:1:6","valueSize":1}],"id":1190,"nodeType":"InlineAssembly","src":"3004:300:6"},{"assignments":[1192],"declarations":[{"constant":false,"id":1192,"mutability":"mutable","name":"twos","nameLocation":"3619:4:6","nodeType":"VariableDeclaration","scope":1273,"src":"3611:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1191,"name":"uint256","nodeType":"ElementaryTypeName","src":"3611:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1200,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1193,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1160,"src":"3626:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"3641:12:6","subExpression":{"id":1194,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1160,"src":"3642:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3656:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3641:16:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1198,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3640:18:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3626:32:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3611:47:6"},{"AST":{"nodeType":"YulBlock","src":"3681:362:6","statements":[{"nodeType":"YulAssignment","src":"3746:37:6","value":{"arguments":[{"name":"denominator","nodeType":"YulIdentifier","src":"3765:11:6"},{"name":"twos","nodeType":"YulIdentifier","src":"3778:4:6"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"3761:3:6"},"nodeType":"YulFunctionCall","src":"3761:22:6"},"variableNames":[{"name":"denominator","nodeType":"YulIdentifier","src":"3746:11:6"}]},{"nodeType":"YulAssignment","src":"3850:25:6","value":{"arguments":[{"name":"prod0","nodeType":"YulIdentifier","src":"3863:5:6"},{"name":"twos","nodeType":"YulIdentifier","src":"3870:4:6"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"3859:3:6"},"nodeType":"YulFunctionCall","src":"3859:16:6"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"3850:5:6"}]},{"nodeType":"YulAssignment","src":"3990:39:6","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4010:1:6","type":"","value":"0"},{"name":"twos","nodeType":"YulIdentifier","src":"4013:4:6"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4006:3:6"},"nodeType":"YulFunctionCall","src":"4006:12:6"},{"name":"twos","nodeType":"YulIdentifier","src":"4020:4:6"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"4002:3:6"},"nodeType":"YulFunctionCall","src":"4002:23:6"},{"kind":"number","nodeType":"YulLiteral","src":"4027:1:6","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3998:3:6"},"nodeType":"YulFunctionCall","src":"3998:31:6"},"variableNames":[{"name":"twos","nodeType":"YulIdentifier","src":"3990:4:6"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1160,"isOffset":false,"isSlot":false,"src":"3746:11:6","valueSize":1},{"declaration":1160,"isOffset":false,"isSlot":false,"src":"3765:11:6","valueSize":1},{"declaration":1166,"isOffset":false,"isSlot":false,"src":"3850:5:6","valueSize":1},{"declaration":1166,"isOffset":false,"isSlot":false,"src":"3863:5:6","valueSize":1},{"declaration":1192,"isOffset":false,"isSlot":false,"src":"3778:4:6","valueSize":1},{"declaration":1192,"isOffset":false,"isSlot":false,"src":"3870:4:6","valueSize":1},{"declaration":1192,"isOffset":false,"isSlot":false,"src":"3990:4:6","valueSize":1},{"declaration":1192,"isOffset":false,"isSlot":false,"src":"4013:4:6","valueSize":1},{"declaration":1192,"isOffset":false,"isSlot":false,"src":"4020:4:6","valueSize":1}],"id":1201,"nodeType":"InlineAssembly","src":"3672:371:6"},{"expression":{"id":1206,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1202,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1166,"src":"4109:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1203,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1169,"src":"4118:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1204,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1192,"src":"4126:4:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4118:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4109:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1207,"nodeType":"ExpressionStatement","src":"4109:21:6"},{"assignments":[1209],"declarations":[{"constant":false,"id":1209,"mutability":"mutable","name":"inverse","nameLocation":"4456:7:6","nodeType":"VariableDeclaration","scope":1273,"src":"4448:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1208,"name":"uint256","nodeType":"ElementaryTypeName","src":"4448:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1216,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":1210,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4467:1:6","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1211,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1160,"src":"4471:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4467:15:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1213,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4466:17:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":1214,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4486:1:6","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"4466:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4448:39:6"},{"expression":{"id":1223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1217,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1209,"src":"4704:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1218,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4715:1:6","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1219,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1160,"src":"4719:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1220,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1209,"src":"4733:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4719:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4715:25:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4704:36:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1224,"nodeType":"ExpressionStatement","src":"4704:36:6"},{"expression":{"id":1231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1225,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1209,"src":"4773:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4784:1:6","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1227,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1160,"src":"4788:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1228,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1209,"src":"4802:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4788:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4784:25:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4773:36:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1232,"nodeType":"ExpressionStatement","src":"4773:36:6"},{"expression":{"id":1239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1233,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1209,"src":"4843:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1234,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4854:1:6","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1235,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1160,"src":"4858:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1236,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1209,"src":"4872:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4858:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4854:25:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4843:36:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1240,"nodeType":"ExpressionStatement","src":"4843:36:6"},{"expression":{"id":1247,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1241,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1209,"src":"4913:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1246,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4924:1:6","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1245,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1243,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1160,"src":"4928:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1244,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1209,"src":"4942:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4928:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4924:25:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4913:36:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1248,"nodeType":"ExpressionStatement","src":"4913:36:6"},{"expression":{"id":1255,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1249,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1209,"src":"4983:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1250,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4994:1:6","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1251,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1160,"src":"4998:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1252,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1209,"src":"5012:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4998:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4994:25:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4983:36:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1256,"nodeType":"ExpressionStatement","src":"4983:36:6"},{"expression":{"id":1263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1257,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1209,"src":"5054:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1262,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5065:1:6","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1259,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1160,"src":"5069:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1260,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1209,"src":"5083:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5069:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5065:25:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5054:36:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1264,"nodeType":"ExpressionStatement","src":"5054:36:6"},{"expression":{"id":1269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1265,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1163,"src":"5524:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1266,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1166,"src":"5533:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1267,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1209,"src":"5541:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5533:15:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5524:24:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1270,"nodeType":"ExpressionStatement","src":"5524:24:6"},{"expression":{"id":1271,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1163,"src":"5569:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1164,"id":1272,"nodeType":"Return","src":"5562:13:6"}]}]},"documentation":{"id":1154,"nodeType":"StructuredDocumentation","src":"1357:305:6","text":" @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\n @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\n with further edits by Uniswap Labs also under MIT license."},"id":1275,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"1676:6:6","nodeType":"FunctionDefinition","parameters":{"id":1161,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1156,"mutability":"mutable","name":"x","nameLocation":"1700:1:6","nodeType":"VariableDeclaration","scope":1275,"src":"1692:9:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1155,"name":"uint256","nodeType":"ElementaryTypeName","src":"1692:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1158,"mutability":"mutable","name":"y","nameLocation":"1719:1:6","nodeType":"VariableDeclaration","scope":1275,"src":"1711:9:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1157,"name":"uint256","nodeType":"ElementaryTypeName","src":"1711:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1160,"mutability":"mutable","name":"denominator","nameLocation":"1738:11:6","nodeType":"VariableDeclaration","scope":1275,"src":"1730:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1159,"name":"uint256","nodeType":"ElementaryTypeName","src":"1730:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1682:73:6"},"returnParameters":{"id":1164,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1163,"mutability":"mutable","name":"result","nameLocation":"1787:6:6","nodeType":"VariableDeclaration","scope":1275,"src":"1779:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1162,"name":"uint256","nodeType":"ElementaryTypeName","src":"1779:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1778:16:6"},"scope":1927,"src":"1667:3925:6","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1318,"nodeType":"Block","src":"5872:189:6","statements":[{"assignments":[1291],"declarations":[{"constant":false,"id":1291,"mutability":"mutable","name":"result","nameLocation":"5890:6:6","nodeType":"VariableDeclaration","scope":1318,"src":"5882:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1290,"name":"uint256","nodeType":"ElementaryTypeName","src":"5882:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1297,"initialValue":{"arguments":[{"id":1293,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1278,"src":"5906:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1294,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1280,"src":"5909:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1295,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1282,"src":"5912:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1292,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[1275,1319],"referencedDeclaration":1275,"src":"5899:6:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":1296,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5899:25:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5882:42:6"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1309,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$1069","typeString":"enum Math.Rounding"},"id":1301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1298,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1285,"src":"5938:8:6","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1069","typeString":"enum Math.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1299,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1069,"src":"5950:8:6","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$1069_$","typeString":"type(enum Math.Rounding)"}},"id":1300,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5959:2:6","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":1067,"src":"5950:11:6","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1069","typeString":"enum Math.Rounding"}},"src":"5938:23:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1303,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1278,"src":"5972:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1304,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1280,"src":"5975:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1305,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1282,"src":"5978:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1302,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"5965:6:6","typeDescriptions":{"typeIdentifier":"t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":1306,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5965:25:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1307,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5993:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5965:29:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5938:56:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1315,"nodeType":"IfStatement","src":"5934:98:6","trueBody":{"id":1314,"nodeType":"Block","src":"5996:36:6","statements":[{"expression":{"id":1312,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1310,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1291,"src":"6010:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1311,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6020:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6010:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1313,"nodeType":"ExpressionStatement","src":"6010:11:6"}]}},{"expression":{"id":1316,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1291,"src":"6048:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1289,"id":1317,"nodeType":"Return","src":"6041:13:6"}]},"documentation":{"id":1276,"nodeType":"StructuredDocumentation","src":"5598:121:6","text":" @notice Calculates x * y / denominator with full precision, following the selected rounding direction."},"id":1319,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"5733:6:6","nodeType":"FunctionDefinition","parameters":{"id":1286,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1278,"mutability":"mutable","name":"x","nameLocation":"5757:1:6","nodeType":"VariableDeclaration","scope":1319,"src":"5749:9:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1277,"name":"uint256","nodeType":"ElementaryTypeName","src":"5749:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1280,"mutability":"mutable","name":"y","nameLocation":"5776:1:6","nodeType":"VariableDeclaration","scope":1319,"src":"5768:9:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1279,"name":"uint256","nodeType":"ElementaryTypeName","src":"5768:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1282,"mutability":"mutable","name":"denominator","nameLocation":"5795:11:6","nodeType":"VariableDeclaration","scope":1319,"src":"5787:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1281,"name":"uint256","nodeType":"ElementaryTypeName","src":"5787:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1285,"mutability":"mutable","name":"rounding","nameLocation":"5825:8:6","nodeType":"VariableDeclaration","scope":1319,"src":"5816:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1069","typeString":"enum Math.Rounding"},"typeName":{"id":1284,"nodeType":"UserDefinedTypeName","pathNode":{"id":1283,"name":"Rounding","nameLocations":["5816:8:6"],"nodeType":"IdentifierPath","referencedDeclaration":1069,"src":"5816:8:6"},"referencedDeclaration":1069,"src":"5816:8:6","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1069","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"5739:100:6"},"returnParameters":{"id":1289,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1288,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1319,"src":"5863:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1287,"name":"uint256","nodeType":"ElementaryTypeName","src":"5863:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5862:9:6"},"scope":1927,"src":"5724:337:6","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1430,"nodeType":"Block","src":"6337:1585:6","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1329,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1327,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1322,"src":"6351:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6356:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6351:6:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1333,"nodeType":"IfStatement","src":"6347:45:6","trueBody":{"id":1332,"nodeType":"Block","src":"6359:33:6","statements":[{"expression":{"hexValue":"30","id":1330,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6380:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":1326,"id":1331,"nodeType":"Return","src":"6373:8:6"}]}},{"assignments":[1335],"declarations":[{"constant":false,"id":1335,"mutability":"mutable","name":"result","nameLocation":"7079:6:6","nodeType":"VariableDeclaration","scope":1430,"src":"7071:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1334,"name":"uint256","nodeType":"ElementaryTypeName","src":"7071:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1344,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7088:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1338,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1322,"src":"7099:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1337,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[1599,1635],"referencedDeclaration":1599,"src":"7094:4:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1339,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7094:7:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":1340,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7105:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7094:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1342,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7093:14:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7088:19:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7071:36:6"},{"id":1429,"nodeType":"UncheckedBlock","src":"7508:408:6","statements":[{"expression":{"id":1354,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1345,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1335,"src":"7532:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1353,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1350,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1346,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1335,"src":"7542:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1347,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1322,"src":"7551:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1348,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1335,"src":"7555:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7551:10:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7542:19:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1351,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7541:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":1352,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7566:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7541:26:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7532:35:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1355,"nodeType":"ExpressionStatement","src":"7532:35:6"},{"expression":{"id":1365,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1356,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1335,"src":"7581:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1357,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1335,"src":"7591:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1360,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1358,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1322,"src":"7600:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1359,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1335,"src":"7604:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7600:10:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7591:19:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1362,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7590:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":1363,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7615:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7590:26:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7581:35:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1366,"nodeType":"ExpressionStatement","src":"7581:35:6"},{"expression":{"id":1376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1367,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1335,"src":"7630:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1368,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1335,"src":"7640:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1371,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1369,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1322,"src":"7649:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1370,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1335,"src":"7653:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7649:10:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7640:19:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1373,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7639:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":1374,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7664:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7639:26:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7630:35:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1377,"nodeType":"ExpressionStatement","src":"7630:35:6"},{"expression":{"id":1387,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1378,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1335,"src":"7679:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1383,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1379,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1335,"src":"7689:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1380,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1322,"src":"7698:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1381,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1335,"src":"7702:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7698:10:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7689:19:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1384,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7688:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":1385,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7713:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7688:26:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7679:35:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1388,"nodeType":"ExpressionStatement","src":"7679:35:6"},{"expression":{"id":1398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1389,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1335,"src":"7728:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1390,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1335,"src":"7738:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1391,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1322,"src":"7747:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1392,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1335,"src":"7751:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7747:10:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7738:19:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1395,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7737:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":1396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7762:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7737:26:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7728:35:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1399,"nodeType":"ExpressionStatement","src":"7728:35:6"},{"expression":{"id":1409,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1400,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1335,"src":"7777:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1401,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1335,"src":"7787:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1402,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1322,"src":"7796:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1403,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1335,"src":"7800:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7796:10:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7787:19:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1406,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7786:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":1407,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7811:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7786:26:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7777:35:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1410,"nodeType":"ExpressionStatement","src":"7777:35:6"},{"expression":{"id":1420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1411,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1335,"src":"7826:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1412,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1335,"src":"7836:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1413,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1322,"src":"7845:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1414,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1335,"src":"7849:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7845:10:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7836:19:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1417,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7835:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":1418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7860:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7835:26:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7826:35:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1421,"nodeType":"ExpressionStatement","src":"7826:35:6"},{"expression":{"arguments":[{"id":1423,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1335,"src":"7886:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1424,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1322,"src":"7894:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1425,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1335,"src":"7898:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7894:10:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1422,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1105,"src":"7882:3:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":1427,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7882:23:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1326,"id":1428,"nodeType":"Return","src":"7875:30:6"}]}]},"documentation":{"id":1320,"nodeType":"StructuredDocumentation","src":"6067:208:6","text":" @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\n Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11)."},"id":1431,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"6289:4:6","nodeType":"FunctionDefinition","parameters":{"id":1323,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1322,"mutability":"mutable","name":"a","nameLocation":"6302:1:6","nodeType":"VariableDeclaration","scope":1431,"src":"6294:9:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1321,"name":"uint256","nodeType":"ElementaryTypeName","src":"6294:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6293:11:6"},"returnParameters":{"id":1326,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1325,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1431,"src":"6328:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1324,"name":"uint256","nodeType":"ElementaryTypeName","src":"6328:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6327:9:6"},"scope":1927,"src":"6280:1642:6","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1466,"nodeType":"Block","src":"8098:161:6","statements":[{"id":1465,"nodeType":"UncheckedBlock","src":"8108:145:6","statements":[{"assignments":[1443],"declarations":[{"constant":false,"id":1443,"mutability":"mutable","name":"result","nameLocation":"8140:6:6","nodeType":"VariableDeclaration","scope":1465,"src":"8132:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1442,"name":"uint256","nodeType":"ElementaryTypeName","src":"8132:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1447,"initialValue":{"arguments":[{"id":1445,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1434,"src":"8154:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1444,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[1431,1467],"referencedDeclaration":1431,"src":"8149:4:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1446,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8149:7:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8132:24:6"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1448,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1443,"src":"8177:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$1069","typeString":"enum Math.Rounding"},"id":1452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1449,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1437,"src":"8187:8:6","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1069","typeString":"enum Math.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1450,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1069,"src":"8199:8:6","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$1069_$","typeString":"type(enum Math.Rounding)"}},"id":1451,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8208:2:6","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":1067,"src":"8199:11:6","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1069","typeString":"enum Math.Rounding"}},"src":"8187:23:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1457,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1453,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1443,"src":"8214:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1454,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1443,"src":"8223:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8214:15:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1456,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1434,"src":"8232:1:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8214:19:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8187:46:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1460,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8240:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8187:54:6","trueExpression":{"hexValue":"31","id":1459,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8236:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1462,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8186:56:6","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"8177:65:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1441,"id":1464,"nodeType":"Return","src":"8170:72:6"}]}]},"documentation":{"id":1432,"nodeType":"StructuredDocumentation","src":"7928:89:6","text":" @notice Calculates sqrt(a), following the selected rounding direction."},"id":1467,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"8031:4:6","nodeType":"FunctionDefinition","parameters":{"id":1438,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1434,"mutability":"mutable","name":"a","nameLocation":"8044:1:6","nodeType":"VariableDeclaration","scope":1467,"src":"8036:9:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1433,"name":"uint256","nodeType":"ElementaryTypeName","src":"8036:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1437,"mutability":"mutable","name":"rounding","nameLocation":"8056:8:6","nodeType":"VariableDeclaration","scope":1467,"src":"8047:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1069","typeString":"enum Math.Rounding"},"typeName":{"id":1436,"nodeType":"UserDefinedTypeName","pathNode":{"id":1435,"name":"Rounding","nameLocations":["8047:8:6"],"nodeType":"IdentifierPath","referencedDeclaration":1069,"src":"8047:8:6"},"referencedDeclaration":1069,"src":"8047:8:6","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1069","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"8035:30:6"},"returnParameters":{"id":1441,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1440,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1467,"src":"8089:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1439,"name":"uint256","nodeType":"ElementaryTypeName","src":"8089:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8088:9:6"},"scope":1927,"src":"8022:237:6","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1598,"nodeType":"Block","src":"8444:922:6","statements":[{"assignments":[1476],"declarations":[{"constant":false,"id":1476,"mutability":"mutable","name":"result","nameLocation":"8462:6:6","nodeType":"VariableDeclaration","scope":1598,"src":"8454:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1475,"name":"uint256","nodeType":"ElementaryTypeName","src":"8454:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1478,"initialValue":{"hexValue":"30","id":1477,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8471:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"8454:18:6"},{"id":1595,"nodeType":"UncheckedBlock","src":"8482:855:6","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1479,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1470,"src":"8510:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":1480,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8519:3:6","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"8510:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1482,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8525:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8510:16:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1493,"nodeType":"IfStatement","src":"8506:99:6","trueBody":{"id":1492,"nodeType":"Block","src":"8528:77:6","statements":[{"expression":{"id":1486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1484,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1470,"src":"8546:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":1485,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8556:3:6","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"8546:13:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1487,"nodeType":"ExpressionStatement","src":"8546:13:6"},{"expression":{"id":1490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1488,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1476,"src":"8577:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"313238","id":1489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8587:3:6","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"8577:13:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1491,"nodeType":"ExpressionStatement","src":"8577:13:6"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1496,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1494,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1470,"src":"8622:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":1495,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8631:2:6","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"8622:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1497,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8636:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8622:15:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1508,"nodeType":"IfStatement","src":"8618:96:6","trueBody":{"id":1507,"nodeType":"Block","src":"8639:75:6","statements":[{"expression":{"id":1501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1499,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1470,"src":"8657:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":1500,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8667:2:6","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"8657:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1502,"nodeType":"ExpressionStatement","src":"8657:12:6"},{"expression":{"id":1505,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1503,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1476,"src":"8687:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":1504,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8697:2:6","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"8687:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1506,"nodeType":"ExpressionStatement","src":"8687:12:6"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1509,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1470,"src":"8731:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":1510,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8740:2:6","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"8731:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1512,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8745:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8731:15:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1523,"nodeType":"IfStatement","src":"8727:96:6","trueBody":{"id":1522,"nodeType":"Block","src":"8748:75:6","statements":[{"expression":{"id":1516,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1514,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1470,"src":"8766:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":1515,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8776:2:6","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"8766:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1517,"nodeType":"ExpressionStatement","src":"8766:12:6"},{"expression":{"id":1520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1518,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1476,"src":"8796:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":1519,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8806:2:6","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"8796:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1521,"nodeType":"ExpressionStatement","src":"8796:12:6"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1524,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1470,"src":"8840:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":1525,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8849:2:6","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"8840:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1527,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8854:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8840:15:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1538,"nodeType":"IfStatement","src":"8836:96:6","trueBody":{"id":1537,"nodeType":"Block","src":"8857:75:6","statements":[{"expression":{"id":1531,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1529,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1470,"src":"8875:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":1530,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8885:2:6","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"8875:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1532,"nodeType":"ExpressionStatement","src":"8875:12:6"},{"expression":{"id":1535,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1533,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1476,"src":"8905:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1534,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8915:2:6","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"8905:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1536,"nodeType":"ExpressionStatement","src":"8905:12:6"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1541,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1539,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1470,"src":"8949:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":1540,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8958:1:6","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"8949:10:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1542,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8962:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8949:14:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1553,"nodeType":"IfStatement","src":"8945:93:6","trueBody":{"id":1552,"nodeType":"Block","src":"8965:73:6","statements":[{"expression":{"id":1546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1544,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1470,"src":"8983:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":1545,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8993:1:6","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"8983:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1547,"nodeType":"ExpressionStatement","src":"8983:11:6"},{"expression":{"id":1550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1548,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1476,"src":"9012:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1549,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9022:1:6","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"9012:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1551,"nodeType":"ExpressionStatement","src":"9012:11:6"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1554,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1470,"src":"9055:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":1555,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9064:1:6","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"9055:10:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1557,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9068:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9055:14:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1568,"nodeType":"IfStatement","src":"9051:93:6","trueBody":{"id":1567,"nodeType":"Block","src":"9071:73:6","statements":[{"expression":{"id":1561,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1559,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1470,"src":"9089:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":1560,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9099:1:6","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"9089:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1562,"nodeType":"ExpressionStatement","src":"9089:11:6"},{"expression":{"id":1565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1563,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1476,"src":"9118:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1564,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9128:1:6","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"9118:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1566,"nodeType":"ExpressionStatement","src":"9118:11:6"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1569,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1470,"src":"9161:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":1570,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9170:1:6","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9161:10:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9174:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9161:14:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1583,"nodeType":"IfStatement","src":"9157:93:6","trueBody":{"id":1582,"nodeType":"Block","src":"9177:73:6","statements":[{"expression":{"id":1576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1574,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1470,"src":"9195:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"32","id":1575,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9205:1:6","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9195:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1577,"nodeType":"ExpressionStatement","src":"9195:11:6"},{"expression":{"id":1580,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1578,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1476,"src":"9224:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1579,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9234:1:6","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9224:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1581,"nodeType":"ExpressionStatement","src":"9224:11:6"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1586,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1584,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1470,"src":"9267:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":1585,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9276:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9267:10:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1587,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9280:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9267:14:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1594,"nodeType":"IfStatement","src":"9263:64:6","trueBody":{"id":1593,"nodeType":"Block","src":"9283:44:6","statements":[{"expression":{"id":1591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1589,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1476,"src":"9301:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1590,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9311:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9301:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1592,"nodeType":"ExpressionStatement","src":"9301:11:6"}]}}]},{"expression":{"id":1596,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1476,"src":"9353:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1474,"id":1597,"nodeType":"Return","src":"9346:13:6"}]},"documentation":{"id":1468,"nodeType":"StructuredDocumentation","src":"8265:113:6","text":" @dev Return the log in base 2, rounded down, of a positive value.\n Returns 0 if given 0."},"id":1599,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"8392:4:6","nodeType":"FunctionDefinition","parameters":{"id":1471,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1470,"mutability":"mutable","name":"value","nameLocation":"8405:5:6","nodeType":"VariableDeclaration","scope":1599,"src":"8397:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1469,"name":"uint256","nodeType":"ElementaryTypeName","src":"8397:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8396:15:6"},"returnParameters":{"id":1474,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1473,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1599,"src":"8435:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1472,"name":"uint256","nodeType":"ElementaryTypeName","src":"8435:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8434:9:6"},"scope":1927,"src":"8383:983:6","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1634,"nodeType":"Block","src":"9599:165:6","statements":[{"id":1633,"nodeType":"UncheckedBlock","src":"9609:149:6","statements":[{"assignments":[1611],"declarations":[{"constant":false,"id":1611,"mutability":"mutable","name":"result","nameLocation":"9641:6:6","nodeType":"VariableDeclaration","scope":1633,"src":"9633:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1610,"name":"uint256","nodeType":"ElementaryTypeName","src":"9633:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1615,"initialValue":{"arguments":[{"id":1613,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1602,"src":"9655:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1612,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[1599,1635],"referencedDeclaration":1599,"src":"9650:4:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1614,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9650:11:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9633:28:6"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1631,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1616,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1611,"src":"9682:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$1069","typeString":"enum Math.Rounding"},"id":1620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1617,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1605,"src":"9692:8:6","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1069","typeString":"enum Math.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1618,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1069,"src":"9704:8:6","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$1069_$","typeString":"type(enum Math.Rounding)"}},"id":1619,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9713:2:6","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":1067,"src":"9704:11:6","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1069","typeString":"enum Math.Rounding"}},"src":"9692:23:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1623,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1621,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9719:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":1622,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1611,"src":"9724:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9719:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1624,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1602,"src":"9733:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9719:19:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9692:46:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1628,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9745:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1629,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"9692:54:6","trueExpression":{"hexValue":"31","id":1627,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9741:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1630,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9691:56:6","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"9682:65:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1609,"id":1632,"nodeType":"Return","src":"9675:72:6"}]}]},"documentation":{"id":1600,"nodeType":"StructuredDocumentation","src":"9372:142:6","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":1635,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"9528:4:6","nodeType":"FunctionDefinition","parameters":{"id":1606,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1602,"mutability":"mutable","name":"value","nameLocation":"9541:5:6","nodeType":"VariableDeclaration","scope":1635,"src":"9533:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1601,"name":"uint256","nodeType":"ElementaryTypeName","src":"9533:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1605,"mutability":"mutable","name":"rounding","nameLocation":"9557:8:6","nodeType":"VariableDeclaration","scope":1635,"src":"9548:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1069","typeString":"enum Math.Rounding"},"typeName":{"id":1604,"nodeType":"UserDefinedTypeName","pathNode":{"id":1603,"name":"Rounding","nameLocations":["9548:8:6"],"nodeType":"IdentifierPath","referencedDeclaration":1069,"src":"9548:8:6"},"referencedDeclaration":1069,"src":"9548:8:6","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1069","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"9532:34:6"},"returnParameters":{"id":1609,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1608,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1635,"src":"9590:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1607,"name":"uint256","nodeType":"ElementaryTypeName","src":"9590:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9589:9:6"},"scope":1927,"src":"9519:245:6","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1763,"nodeType":"Block","src":"9951:828:6","statements":[{"assignments":[1644],"declarations":[{"constant":false,"id":1644,"mutability":"mutable","name":"result","nameLocation":"9969:6:6","nodeType":"VariableDeclaration","scope":1763,"src":"9961:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1643,"name":"uint256","nodeType":"ElementaryTypeName","src":"9961:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1646,"initialValue":{"hexValue":"30","id":1645,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9978:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"9961:18:6"},{"id":1760,"nodeType":"UncheckedBlock","src":"9989:761:6","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1647,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1638,"src":"10017:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":1650,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1648,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10026:2:6","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":1649,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10030:2:6","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10026:6:6","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"10017:15:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1663,"nodeType":"IfStatement","src":"10013:99:6","trueBody":{"id":1662,"nodeType":"Block","src":"10034:78:6","statements":[{"expression":{"id":1656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1652,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1638,"src":"10052:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":1655,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1653,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10061:2:6","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":1654,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10065:2:6","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10061:6:6","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"10052:15:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1657,"nodeType":"ExpressionStatement","src":"10052:15:6"},{"expression":{"id":1660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1658,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1644,"src":"10085:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":1659,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10095:2:6","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10085:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1661,"nodeType":"ExpressionStatement","src":"10085:12:6"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1668,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1664,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1638,"src":"10129:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1667,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1665,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10138:2:6","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1666,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10142:2:6","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"10138:6:6","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"10129:15:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1680,"nodeType":"IfStatement","src":"10125:99:6","trueBody":{"id":1679,"nodeType":"Block","src":"10146:78:6","statements":[{"expression":{"id":1673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1669,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1638,"src":"10164:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1672,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1670,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10173:2:6","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1671,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10177:2:6","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"10173:6:6","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"10164:15:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1674,"nodeType":"ExpressionStatement","src":"10164:15:6"},{"expression":{"id":1677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1675,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1644,"src":"10197:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":1676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10207:2:6","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"10197:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1678,"nodeType":"ExpressionStatement","src":"10197:12:6"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1681,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1638,"src":"10241:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1684,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1682,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10250:2:6","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1683,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10254:2:6","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"10250:6:6","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"10241:15:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1697,"nodeType":"IfStatement","src":"10237:99:6","trueBody":{"id":1696,"nodeType":"Block","src":"10258:78:6","statements":[{"expression":{"id":1690,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1686,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1638,"src":"10276:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1689,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1687,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10285:2:6","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1688,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10289:2:6","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"10285:6:6","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"10276:15:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1691,"nodeType":"ExpressionStatement","src":"10276:15:6"},{"expression":{"id":1694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1692,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1644,"src":"10309:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1693,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10319:2:6","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"10309:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1695,"nodeType":"ExpressionStatement","src":"10309:12:6"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1698,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1638,"src":"10353:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1701,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1699,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10362:2:6","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1700,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10366:1:6","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"10362:5:6","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"10353:14:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1714,"nodeType":"IfStatement","src":"10349:96:6","trueBody":{"id":1713,"nodeType":"Block","src":"10369:76:6","statements":[{"expression":{"id":1707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1703,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1638,"src":"10387:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1706,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1704,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10396:2:6","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1705,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10400:1:6","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"10396:5:6","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"10387:14:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1708,"nodeType":"ExpressionStatement","src":"10387:14:6"},{"expression":{"id":1711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1709,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1644,"src":"10419:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1710,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10429:1:6","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"10419:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1712,"nodeType":"ExpressionStatement","src":"10419:11:6"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1715,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1638,"src":"10462:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1718,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1716,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10471:2:6","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1717,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10475:1:6","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"10471:5:6","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"10462:14:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1731,"nodeType":"IfStatement","src":"10458:96:6","trueBody":{"id":1730,"nodeType":"Block","src":"10478:76:6","statements":[{"expression":{"id":1724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1720,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1638,"src":"10496:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1723,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1721,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10505:2:6","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1722,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10509:1:6","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"10505:5:6","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"10496:14:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1725,"nodeType":"ExpressionStatement","src":"10496:14:6"},{"expression":{"id":1728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1726,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1644,"src":"10528:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1727,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10538:1:6","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"10528:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1729,"nodeType":"ExpressionStatement","src":"10528:11:6"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1732,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1638,"src":"10571:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1735,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1733,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10580:2:6","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1734,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10584:1:6","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10580:5:6","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"10571:14:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1748,"nodeType":"IfStatement","src":"10567:96:6","trueBody":{"id":1747,"nodeType":"Block","src":"10587:76:6","statements":[{"expression":{"id":1741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1737,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1638,"src":"10605:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1740,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1738,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10614:2:6","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1739,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10618:1:6","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10614:5:6","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"10605:14:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1742,"nodeType":"ExpressionStatement","src":"10605:14:6"},{"expression":{"id":1745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1743,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1644,"src":"10637:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1744,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10647:1:6","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10637:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1746,"nodeType":"ExpressionStatement","src":"10637:11:6"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1753,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1749,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1638,"src":"10680:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":1752,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1750,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10689:2:6","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":1751,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10693:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10689:5:6","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"10680:14:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1759,"nodeType":"IfStatement","src":"10676:64:6","trueBody":{"id":1758,"nodeType":"Block","src":"10696:44:6","statements":[{"expression":{"id":1756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1754,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1644,"src":"10714:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1755,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10724:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10714:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1757,"nodeType":"ExpressionStatement","src":"10714:11:6"}]}}]},{"expression":{"id":1761,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1644,"src":"10766:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1642,"id":1762,"nodeType":"Return","src":"10759:13:6"}]},"documentation":{"id":1636,"nodeType":"StructuredDocumentation","src":"9770:114:6","text":" @dev Return the log in base 10, rounded down, of a positive value.\n Returns 0 if given 0."},"id":1764,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"9898:5:6","nodeType":"FunctionDefinition","parameters":{"id":1639,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1638,"mutability":"mutable","name":"value","nameLocation":"9912:5:6","nodeType":"VariableDeclaration","scope":1764,"src":"9904:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1637,"name":"uint256","nodeType":"ElementaryTypeName","src":"9904:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9903:15:6"},"returnParameters":{"id":1642,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1641,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1764,"src":"9942:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1640,"name":"uint256","nodeType":"ElementaryTypeName","src":"9942:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9941:9:6"},"scope":1927,"src":"9889:890:6","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1799,"nodeType":"Block","src":"11014:165:6","statements":[{"id":1798,"nodeType":"UncheckedBlock","src":"11024:149:6","statements":[{"assignments":[1776],"declarations":[{"constant":false,"id":1776,"mutability":"mutable","name":"result","nameLocation":"11056:6:6","nodeType":"VariableDeclaration","scope":1798,"src":"11048:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1775,"name":"uint256","nodeType":"ElementaryTypeName","src":"11048:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1780,"initialValue":{"arguments":[{"id":1778,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1767,"src":"11071:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1777,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[1764,1800],"referencedDeclaration":1764,"src":"11065:5:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1779,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11065:12:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11048:29:6"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1796,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1781,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1776,"src":"11098:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1791,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$1069","typeString":"enum Math.Rounding"},"id":1785,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1782,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1770,"src":"11108:8:6","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1069","typeString":"enum Math.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1783,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1069,"src":"11120:8:6","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$1069_$","typeString":"type(enum Math.Rounding)"}},"id":1784,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11129:2:6","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":1067,"src":"11120:11:6","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1069","typeString":"enum Math.Rounding"}},"src":"11108:23:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1788,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1786,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11135:2:6","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":1787,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1776,"src":"11139:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11135:10:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1789,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1767,"src":"11148:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11135:18:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11108:45:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1793,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11160:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11108:53:6","trueExpression":{"hexValue":"31","id":1792,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11156:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1795,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11107:55:6","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11098:64:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1774,"id":1797,"nodeType":"Return","src":"11091:71:6"}]}]},"documentation":{"id":1765,"nodeType":"StructuredDocumentation","src":"10785:143:6","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":1800,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"10942:5:6","nodeType":"FunctionDefinition","parameters":{"id":1771,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1767,"mutability":"mutable","name":"value","nameLocation":"10956:5:6","nodeType":"VariableDeclaration","scope":1800,"src":"10948:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1766,"name":"uint256","nodeType":"ElementaryTypeName","src":"10948:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1770,"mutability":"mutable","name":"rounding","nameLocation":"10972:8:6","nodeType":"VariableDeclaration","scope":1800,"src":"10963:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1069","typeString":"enum Math.Rounding"},"typeName":{"id":1769,"nodeType":"UserDefinedTypeName","pathNode":{"id":1768,"name":"Rounding","nameLocations":["10963:8:6"],"nodeType":"IdentifierPath","referencedDeclaration":1069,"src":"10963:8:6"},"referencedDeclaration":1069,"src":"10963:8:6","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1069","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"10947:34:6"},"returnParameters":{"id":1774,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1773,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1800,"src":"11005:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1772,"name":"uint256","nodeType":"ElementaryTypeName","src":"11005:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11004:9:6"},"scope":1927,"src":"10933:246:6","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1886,"nodeType":"Block","src":"11493:600:6","statements":[{"assignments":[1809],"declarations":[{"constant":false,"id":1809,"mutability":"mutable","name":"result","nameLocation":"11511:6:6","nodeType":"VariableDeclaration","scope":1886,"src":"11503:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1808,"name":"uint256","nodeType":"ElementaryTypeName","src":"11503:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1811,"initialValue":{"hexValue":"30","id":1810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11520:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"11503:18:6"},{"id":1883,"nodeType":"UncheckedBlock","src":"11531:533:6","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1814,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1812,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1803,"src":"11559:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":1813,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11568:3:6","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"11559:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1815,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11574:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11559:16:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1826,"nodeType":"IfStatement","src":"11555:98:6","trueBody":{"id":1825,"nodeType":"Block","src":"11577:76:6","statements":[{"expression":{"id":1819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1817,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1803,"src":"11595:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":1818,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11605:3:6","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"11595:13:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1820,"nodeType":"ExpressionStatement","src":"11595:13:6"},{"expression":{"id":1823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1821,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1809,"src":"11626:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1822,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11636:2:6","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"11626:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1824,"nodeType":"ExpressionStatement","src":"11626:12:6"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1827,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1803,"src":"11670:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":1828,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11679:2:6","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"11670:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1830,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11684:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11670:15:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1841,"nodeType":"IfStatement","src":"11666:95:6","trueBody":{"id":1840,"nodeType":"Block","src":"11687:74:6","statements":[{"expression":{"id":1834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1832,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1803,"src":"11705:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":1833,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11715:2:6","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"11705:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1835,"nodeType":"ExpressionStatement","src":"11705:12:6"},{"expression":{"id":1838,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1836,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1809,"src":"11735:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1837,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11745:1:6","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"11735:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1839,"nodeType":"ExpressionStatement","src":"11735:11:6"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1842,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1803,"src":"11778:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":1843,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11787:2:6","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"11778:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1845,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11792:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11778:15:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1856,"nodeType":"IfStatement","src":"11774:95:6","trueBody":{"id":1855,"nodeType":"Block","src":"11795:74:6","statements":[{"expression":{"id":1849,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1847,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1803,"src":"11813:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":1848,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11823:2:6","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"11813:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1850,"nodeType":"ExpressionStatement","src":"11813:12:6"},{"expression":{"id":1853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1851,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1809,"src":"11843:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1852,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11853:1:6","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"11843:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1854,"nodeType":"ExpressionStatement","src":"11843:11:6"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1857,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1803,"src":"11886:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":1858,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11895:2:6","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"11886:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11900:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11886:15:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1871,"nodeType":"IfStatement","src":"11882:95:6","trueBody":{"id":1870,"nodeType":"Block","src":"11903:74:6","statements":[{"expression":{"id":1864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1862,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1803,"src":"11921:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":1863,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11931:2:6","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"11921:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1865,"nodeType":"ExpressionStatement","src":"11921:12:6"},{"expression":{"id":1868,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1866,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1809,"src":"11951:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1867,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11961:1:6","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"11951:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1869,"nodeType":"ExpressionStatement","src":"11951:11:6"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1872,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1803,"src":"11994:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":1873,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12003:1:6","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"11994:10:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12007:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11994:14:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1882,"nodeType":"IfStatement","src":"11990:64:6","trueBody":{"id":1881,"nodeType":"Block","src":"12010:44:6","statements":[{"expression":{"id":1879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1877,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1809,"src":"12028:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1878,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12038:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12028:11:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1880,"nodeType":"ExpressionStatement","src":"12028:11:6"}]}}]},{"expression":{"id":1884,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1809,"src":"12080:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1807,"id":1885,"nodeType":"Return","src":"12073:13:6"}]},"documentation":{"id":1801,"nodeType":"StructuredDocumentation","src":"11185:240:6","text":" @dev Return the log in base 256, rounded down, of a positive value.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string."},"id":1887,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"11439:6:6","nodeType":"FunctionDefinition","parameters":{"id":1804,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1803,"mutability":"mutable","name":"value","nameLocation":"11454:5:6","nodeType":"VariableDeclaration","scope":1887,"src":"11446:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1802,"name":"uint256","nodeType":"ElementaryTypeName","src":"11446:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11445:15:6"},"returnParameters":{"id":1807,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1806,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1887,"src":"11484:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1805,"name":"uint256","nodeType":"ElementaryTypeName","src":"11484:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11483:9:6"},"scope":1927,"src":"11430:663:6","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1925,"nodeType":"Block","src":"12329:173:6","statements":[{"id":1924,"nodeType":"UncheckedBlock","src":"12339:157:6","statements":[{"assignments":[1899],"declarations":[{"constant":false,"id":1899,"mutability":"mutable","name":"result","nameLocation":"12371:6:6","nodeType":"VariableDeclaration","scope":1924,"src":"12363:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1898,"name":"uint256","nodeType":"ElementaryTypeName","src":"12363:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1903,"initialValue":{"arguments":[{"id":1901,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1890,"src":"12387:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1900,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[1887,1926],"referencedDeclaration":1887,"src":"12380:6:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1902,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12380:13:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12363:30:6"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1922,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1904,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1899,"src":"12414:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$1069","typeString":"enum Math.Rounding"},"id":1908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1905,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1893,"src":"12424:8:6","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1069","typeString":"enum Math.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1906,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1069,"src":"12436:8:6","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$1069_$","typeString":"type(enum Math.Rounding)"}},"id":1907,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12445:2:6","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":1067,"src":"12436:11:6","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1069","typeString":"enum Math.Rounding"}},"src":"12424:23:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1916,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1914,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1909,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12451:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1910,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1899,"src":"12457:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"38","id":1911,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12466:1:6","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12457:10:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1913,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12456:12:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12451:17:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1915,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1890,"src":"12471:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12451:25:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12424:52:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1919,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12483:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"12424:60:6","trueExpression":{"hexValue":"31","id":1918,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12479:1:6","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1921,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12423:62:6","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"12414:71:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1897,"id":1923,"nodeType":"Return","src":"12407:78:6"}]}]},"documentation":{"id":1888,"nodeType":"StructuredDocumentation","src":"12099:143:6","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":1926,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"12256:6:6","nodeType":"FunctionDefinition","parameters":{"id":1894,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1890,"mutability":"mutable","name":"value","nameLocation":"12271:5:6","nodeType":"VariableDeclaration","scope":1926,"src":"12263:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1889,"name":"uint256","nodeType":"ElementaryTypeName","src":"12263:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1893,"mutability":"mutable","name":"rounding","nameLocation":"12287:8:6","nodeType":"VariableDeclaration","scope":1926,"src":"12278:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1069","typeString":"enum Math.Rounding"},"typeName":{"id":1892,"nodeType":"UserDefinedTypeName","pathNode":{"id":1891,"name":"Rounding","nameLocations":["12278:8:6"],"nodeType":"IdentifierPath","referencedDeclaration":1069,"src":"12278:8:6"},"referencedDeclaration":1069,"src":"12278:8:6","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1069","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"12262:34:6"},"returnParameters":{"id":1897,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1896,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1926,"src":"12320:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1895,"name":"uint256","nodeType":"ElementaryTypeName","src":"12320:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12319:9:6"},"scope":1927,"src":"12247:255:6","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":1928,"src":"202:12302:6","usedErrors":[]}],"src":"103:12402:6"},"id":6},"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol":{"ast":{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol","exportedSymbols":{"IConstantFlowAgreementV1":[5487],"IInstantDistributionAgreementV1":[5893],"ISuperToken":[6947],"ISuperfluid":[7599],"SuperTokenV1Library":[5077]},"id":5078,"license":"AGPLv3","nodeType":"SourceUnit","nodes":[{"id":1929,"literals":["solidity",">=","0.8",".0"],"nodeType":"PragmaDirective","src":"35:25:7"},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol","file":"../interfaces/superfluid/ISuperfluid.sol","id":1932,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5078,"sourceUnit":7600,"src":"62:92:7","symbolAliases":[{"foreign":{"id":1930,"name":"ISuperfluid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7599,"src":"75:11:7","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":1931,"name":"ISuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6947,"src":"92:11:7","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol","file":"../interfaces/agreements/IConstantFlowAgreementV1.sol","id":1934,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5078,"sourceUnit":5488,"src":"156:101:7","symbolAliases":[{"foreign":{"id":1933,"name":"IConstantFlowAgreementV1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5487,"src":"169:24:7","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IInstantDistributionAgreementV1.sol","file":"../interfaces/agreements/IInstantDistributionAgreementV1.sol","id":1936,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5078,"sourceUnit":5894,"src":"259:115:7","symbolAliases":[{"foreign":{"id":1935,"name":"IInstantDistributionAgreementV1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5893,"src":"272:31:7","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"SuperTokenV1Library","contractDependencies":[],"contractKind":"library","documentation":{"id":1937,"nodeType":"StructuredDocumentation","src":"376:195:7","text":" @title Library for Token Centric Interface\n @author Superfluid\n @dev Set `using for ISuperToken` in including file, and call any of these functions on an instance\n of ISuperToken"},"fullyImplemented":true,"id":5077,"linearizedBaseContracts":[5077],"name":"SuperTokenV1Library","nameLocation":"580:19:7","nodeType":"ContractDefinition","nodes":[{"body":{"id":1985,"nodeType":"Block","src":"972:344:7","statements":[{"assignments":[1952,1955],"declarations":[{"constant":false,"id":1952,"mutability":"mutable","name":"host","nameLocation":"995:4:7","nodeType":"VariableDeclaration","scope":1985,"src":"983:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"},"typeName":{"id":1951,"nodeType":"UserDefinedTypeName","pathNode":{"id":1950,"name":"ISuperfluid","nameLocations":["983:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":7599,"src":"983:11:7"},"referencedDeclaration":7599,"src":"983:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":1955,"mutability":"mutable","name":"cfa","nameLocation":"1026:3:7","nodeType":"VariableDeclaration","scope":1985,"src":"1001:28:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":1954,"nodeType":"UserDefinedTypeName","pathNode":{"id":1953,"name":"IConstantFlowAgreementV1","nameLocations":["1001:24:7"],"nodeType":"IdentifierPath","referencedDeclaration":5487,"src":"1001:24:7"},"referencedDeclaration":5487,"src":"1001:24:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"id":1959,"initialValue":{"arguments":[{"id":1957,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1941,"src":"1056:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}],"id":1956,"name":"_getAndCacheHostAndCFA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4827,"src":"1033:22:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$6947_$returns$_t_contract$_ISuperfluid_$7599_$_t_contract$_IConstantFlowAgreementV1_$5487_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"id":1958,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1033:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7599_$_t_contract$_IConstantFlowAgreementV1_$5487_$","typeString":"tuple(contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"982:80:7"},{"expression":{"arguments":[{"id":1963,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1955,"src":"1104:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},{"arguments":[{"expression":{"id":1966,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1955,"src":"1153:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"id":1967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1157:10:7","memberName":"createFlow","nodeType":"MemberAccess","referencedDeclaration":5304,"src":"1153:14:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,int96,bytes memory) external returns (bytes memory)"}},{"components":[{"id":1968,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1941,"src":"1186:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},{"id":1969,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1943,"src":"1193:8:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1970,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1945,"src":"1203:8:7","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},{"arguments":[{"hexValue":"30","id":1973,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1223:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1972,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1213:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":1971,"name":"bytes","nodeType":"ElementaryTypeName","src":"1217:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":1974,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1213:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":1975,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1185:41:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,int96,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,int96,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,int96,bytes memory)"}],"expression":{"id":1964,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1121:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1965,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1125:10:7","memberName":"encodeCall","nodeType":"MemberAccess","src":"1121:14:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1976,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1121:119:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"hexValue":"30","id":1979,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1264:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1978,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1254:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":1977,"name":"bytes","nodeType":"ElementaryTypeName","src":"1258:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":1980,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1254:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1960,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1952,"src":"1072:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"id":1962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1077:13:7","memberName":"callAgreement","nodeType":"MemberAccess","referencedDeclaration":7497,"src":"1072:18:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6395_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory) external returns (bytes memory)"}},"id":1981,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1072:216:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1982,"nodeType":"ExpressionStatement","src":"1072:216:7"},{"expression":{"hexValue":"74727565","id":1983,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1305:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":1949,"id":1984,"nodeType":"Return","src":"1298:11:7"}]},"documentation":{"id":1938,"nodeType":"StructuredDocumentation","src":"671:187:7","text":" @dev Create flow without userData\n @param token The token used in flow\n @param receiver The receiver of the flow\n @param flowRate The desired flowRate"},"id":1986,"implemented":true,"kind":"function","modifiers":[],"name":"createFlow","nameLocation":"872:10:7","nodeType":"FunctionDefinition","parameters":{"id":1946,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1941,"mutability":"mutable","name":"token","nameLocation":"895:5:7","nodeType":"VariableDeclaration","scope":1986,"src":"883:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":1940,"nodeType":"UserDefinedTypeName","pathNode":{"id":1939,"name":"ISuperToken","nameLocations":["883:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"883:11:7"},"referencedDeclaration":6947,"src":"883:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":1943,"mutability":"mutable","name":"receiver","nameLocation":"910:8:7","nodeType":"VariableDeclaration","scope":1986,"src":"902:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1942,"name":"address","nodeType":"ElementaryTypeName","src":"902:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1945,"mutability":"mutable","name":"flowRate","nameLocation":"926:8:7","nodeType":"VariableDeclaration","scope":1986,"src":"920:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":1944,"name":"int96","nodeType":"ElementaryTypeName","src":"920:5:7","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"882:53:7"},"returnParameters":{"id":1949,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1948,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1986,"src":"962:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1947,"name":"bool","nodeType":"ElementaryTypeName","src":"962:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"961:6:7"},"scope":5077,"src":"863:453:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2033,"nodeType":"Block","src":"1702:340:7","statements":[{"assignments":[2003,2006],"declarations":[{"constant":false,"id":2003,"mutability":"mutable","name":"host","nameLocation":"1725:4:7","nodeType":"VariableDeclaration","scope":2033,"src":"1713:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"},"typeName":{"id":2002,"nodeType":"UserDefinedTypeName","pathNode":{"id":2001,"name":"ISuperfluid","nameLocations":["1713:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":7599,"src":"1713:11:7"},"referencedDeclaration":7599,"src":"1713:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":2006,"mutability":"mutable","name":"cfa","nameLocation":"1756:3:7","nodeType":"VariableDeclaration","scope":2033,"src":"1731:28:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":2005,"nodeType":"UserDefinedTypeName","pathNode":{"id":2004,"name":"IConstantFlowAgreementV1","nameLocations":["1731:24:7"],"nodeType":"IdentifierPath","referencedDeclaration":5487,"src":"1731:24:7"},"referencedDeclaration":5487,"src":"1731:24:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"id":2010,"initialValue":{"arguments":[{"id":2008,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1990,"src":"1786:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}],"id":2007,"name":"_getAndCacheHostAndCFA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4827,"src":"1763:22:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$6947_$returns$_t_contract$_ISuperfluid_$7599_$_t_contract$_IConstantFlowAgreementV1_$5487_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"id":2009,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1763:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7599_$_t_contract$_IConstantFlowAgreementV1_$5487_$","typeString":"tuple(contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"1712:80:7"},{"expression":{"arguments":[{"id":2014,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2006,"src":"1834:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},{"arguments":[{"expression":{"id":2017,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2006,"src":"1883:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"id":2018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1887:10:7","memberName":"createFlow","nodeType":"MemberAccess","referencedDeclaration":5304,"src":"1883:14:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,int96,bytes memory) external returns (bytes memory)"}},{"components":[{"id":2019,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1990,"src":"1916:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},{"id":2020,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1992,"src":"1923:8:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2021,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1994,"src":"1933:8:7","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},{"arguments":[{"hexValue":"30","id":2024,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1953:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2023,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1943:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2022,"name":"bytes","nodeType":"ElementaryTypeName","src":"1947:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2025,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1943:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":2026,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1915:41:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,int96,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,int96,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,int96,bytes memory)"}],"expression":{"id":2015,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1851:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2016,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1855:10:7","memberName":"encodeCall","nodeType":"MemberAccess","src":"1851:14:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2027,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1851:119:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":2028,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1996,"src":"1984:8:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2011,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2003,"src":"1802:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"id":2013,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1807:13:7","memberName":"callAgreement","nodeType":"MemberAccess","referencedDeclaration":7497,"src":"1802:18:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6395_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory) external returns (bytes memory)"}},"id":2029,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1802:212:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2030,"nodeType":"ExpressionStatement","src":"1802:212:7"},{"expression":{"hexValue":"74727565","id":2031,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2031:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":2000,"id":2032,"nodeType":"Return","src":"2024:11:7"}]},"documentation":{"id":1987,"nodeType":"StructuredDocumentation","src":"1322:243:7","text":" @dev Create flow with userData\n @param token The token used in flow\n @param receiver The receiver of the flow\n @param flowRate The desired flowRate\n @param userData The userdata passed along with call"},"id":2034,"implemented":true,"kind":"function","modifiers":[],"name":"createFlow","nameLocation":"1579:10:7","nodeType":"FunctionDefinition","parameters":{"id":1997,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1990,"mutability":"mutable","name":"token","nameLocation":"1602:5:7","nodeType":"VariableDeclaration","scope":2034,"src":"1590:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":1989,"nodeType":"UserDefinedTypeName","pathNode":{"id":1988,"name":"ISuperToken","nameLocations":["1590:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"1590:11:7"},"referencedDeclaration":6947,"src":"1590:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":1992,"mutability":"mutable","name":"receiver","nameLocation":"1617:8:7","nodeType":"VariableDeclaration","scope":2034,"src":"1609:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1991,"name":"address","nodeType":"ElementaryTypeName","src":"1609:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1994,"mutability":"mutable","name":"flowRate","nameLocation":"1633:8:7","nodeType":"VariableDeclaration","scope":2034,"src":"1627:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":1993,"name":"int96","nodeType":"ElementaryTypeName","src":"1627:5:7","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"},{"constant":false,"id":1996,"mutability":"mutable","name":"userData","nameLocation":"1656:8:7","nodeType":"VariableDeclaration","scope":2034,"src":"1643:21:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1995,"name":"bytes","nodeType":"ElementaryTypeName","src":"1643:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1589:76:7"},"returnParameters":{"id":2000,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1999,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2034,"src":"1692:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1998,"name":"bool","nodeType":"ElementaryTypeName","src":"1692:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1691:6:7"},"scope":5077,"src":"1570:472:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2082,"nodeType":"Block","src":"2350:344:7","statements":[{"assignments":[2049,2052],"declarations":[{"constant":false,"id":2049,"mutability":"mutable","name":"host","nameLocation":"2373:4:7","nodeType":"VariableDeclaration","scope":2082,"src":"2361:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"},"typeName":{"id":2048,"nodeType":"UserDefinedTypeName","pathNode":{"id":2047,"name":"ISuperfluid","nameLocations":["2361:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":7599,"src":"2361:11:7"},"referencedDeclaration":7599,"src":"2361:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":2052,"mutability":"mutable","name":"cfa","nameLocation":"2404:3:7","nodeType":"VariableDeclaration","scope":2082,"src":"2379:28:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":2051,"nodeType":"UserDefinedTypeName","pathNode":{"id":2050,"name":"IConstantFlowAgreementV1","nameLocations":["2379:24:7"],"nodeType":"IdentifierPath","referencedDeclaration":5487,"src":"2379:24:7"},"referencedDeclaration":5487,"src":"2379:24:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"id":2056,"initialValue":{"arguments":[{"id":2054,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2038,"src":"2434:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}],"id":2053,"name":"_getAndCacheHostAndCFA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4827,"src":"2411:22:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$6947_$returns$_t_contract$_ISuperfluid_$7599_$_t_contract$_IConstantFlowAgreementV1_$5487_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"id":2055,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2411:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7599_$_t_contract$_IConstantFlowAgreementV1_$5487_$","typeString":"tuple(contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"2360:80:7"},{"expression":{"arguments":[{"id":2060,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2052,"src":"2482:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},{"arguments":[{"expression":{"id":2063,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2052,"src":"2531:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"id":2064,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2535:10:7","memberName":"updateFlow","nodeType":"MemberAccess","referencedDeclaration":5336,"src":"2531:14:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,int96,bytes memory) external returns (bytes memory)"}},{"components":[{"id":2065,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2038,"src":"2564:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},{"id":2066,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2040,"src":"2571:8:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2067,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2042,"src":"2581:8:7","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},{"arguments":[{"hexValue":"30","id":2070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2601:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2069,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2591:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2068,"name":"bytes","nodeType":"ElementaryTypeName","src":"2595:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2591:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":2072,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2563:41:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,int96,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,int96,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,int96,bytes memory)"}],"expression":{"id":2061,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2499:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2062,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2503:10:7","memberName":"encodeCall","nodeType":"MemberAccess","src":"2499:14:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2073,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2499:119:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"hexValue":"30","id":2076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2642:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2075,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2632:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2074,"name":"bytes","nodeType":"ElementaryTypeName","src":"2636:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2077,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2632:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2057,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2049,"src":"2450:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"id":2059,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2455:13:7","memberName":"callAgreement","nodeType":"MemberAccess","referencedDeclaration":7497,"src":"2450:18:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6395_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory) external returns (bytes memory)"}},"id":2078,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2450:216:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2079,"nodeType":"ExpressionStatement","src":"2450:216:7"},{"expression":{"hexValue":"74727565","id":2080,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2683:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":2046,"id":2081,"nodeType":"Return","src":"2676:11:7"}]},"documentation":{"id":2035,"nodeType":"StructuredDocumentation","src":"2049:187:7","text":" @dev Update flow without userData\n @param token The token used in flow\n @param receiver The receiver of the flow\n @param flowRate The desired flowRate"},"id":2083,"implemented":true,"kind":"function","modifiers":[],"name":"updateFlow","nameLocation":"2250:10:7","nodeType":"FunctionDefinition","parameters":{"id":2043,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2038,"mutability":"mutable","name":"token","nameLocation":"2273:5:7","nodeType":"VariableDeclaration","scope":2083,"src":"2261:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":2037,"nodeType":"UserDefinedTypeName","pathNode":{"id":2036,"name":"ISuperToken","nameLocations":["2261:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"2261:11:7"},"referencedDeclaration":6947,"src":"2261:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":2040,"mutability":"mutable","name":"receiver","nameLocation":"2288:8:7","nodeType":"VariableDeclaration","scope":2083,"src":"2280:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2039,"name":"address","nodeType":"ElementaryTypeName","src":"2280:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2042,"mutability":"mutable","name":"flowRate","nameLocation":"2304:8:7","nodeType":"VariableDeclaration","scope":2083,"src":"2298:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":2041,"name":"int96","nodeType":"ElementaryTypeName","src":"2298:5:7","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"2260:53:7"},"returnParameters":{"id":2046,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2045,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2083,"src":"2340:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2044,"name":"bool","nodeType":"ElementaryTypeName","src":"2340:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2339:6:7"},"scope":5077,"src":"2241:453:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2130,"nodeType":"Block","src":"3081:328:7","statements":[{"assignments":[2100,2103],"declarations":[{"constant":false,"id":2100,"mutability":"mutable","name":"host","nameLocation":"3104:4:7","nodeType":"VariableDeclaration","scope":2130,"src":"3092:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"},"typeName":{"id":2099,"nodeType":"UserDefinedTypeName","pathNode":{"id":2098,"name":"ISuperfluid","nameLocations":["3092:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":7599,"src":"3092:11:7"},"referencedDeclaration":7599,"src":"3092:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":2103,"mutability":"mutable","name":"cfa","nameLocation":"3135:3:7","nodeType":"VariableDeclaration","scope":2130,"src":"3110:28:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":2102,"nodeType":"UserDefinedTypeName","pathNode":{"id":2101,"name":"IConstantFlowAgreementV1","nameLocations":["3110:24:7"],"nodeType":"IdentifierPath","referencedDeclaration":5487,"src":"3110:24:7"},"referencedDeclaration":5487,"src":"3110:24:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"id":2107,"initialValue":{"arguments":[{"id":2105,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2087,"src":"3165:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}],"id":2104,"name":"_getAndCacheHostAndCFA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4827,"src":"3142:22:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$6947_$returns$_t_contract$_ISuperfluid_$7599_$_t_contract$_IConstantFlowAgreementV1_$5487_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"id":2106,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3142:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7599_$_t_contract$_IConstantFlowAgreementV1_$5487_$","typeString":"tuple(contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"3091:80:7"},{"expression":{"arguments":[{"id":2111,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2103,"src":"3213:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},{"arguments":[{"expression":{"id":2114,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2103,"src":"3262:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"id":2115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3266:10:7","memberName":"updateFlow","nodeType":"MemberAccess","referencedDeclaration":5336,"src":"3262:14:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,int96,bytes memory) external returns (bytes memory)"}},{"components":[{"id":2116,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2087,"src":"3295:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},{"id":2117,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2089,"src":"3302:8:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2118,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2091,"src":"3312:8:7","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},{"arguments":[{"hexValue":"30","id":2121,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3332:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2120,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"3322:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2119,"name":"bytes","nodeType":"ElementaryTypeName","src":"3326:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2122,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3322:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":2123,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3294:41:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,int96,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,int96,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,int96,bytes memory)"}],"expression":{"id":2112,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3230:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2113,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3234:10:7","memberName":"encodeCall","nodeType":"MemberAccess","src":"3230:14:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2124,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3230:119:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":2125,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2093,"src":"3363:8:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2108,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2100,"src":"3181:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"id":2110,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3186:13:7","memberName":"callAgreement","nodeType":"MemberAccess","referencedDeclaration":7497,"src":"3181:18:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6395_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory) external returns (bytes memory)"}},"id":2126,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3181:200:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2127,"nodeType":"ExpressionStatement","src":"3181:200:7"},{"expression":{"hexValue":"74727565","id":2128,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3398:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":2097,"id":2129,"nodeType":"Return","src":"3391:11:7"}]},"documentation":{"id":2084,"nodeType":"StructuredDocumentation","src":"2701:243:7","text":" @dev Update flow with userData\n @param token The token used in flow\n @param receiver The receiver of the flow\n @param flowRate The desired flowRate\n @param userData The userdata passed along with call"},"id":2131,"implemented":true,"kind":"function","modifiers":[],"name":"updateFlow","nameLocation":"2958:10:7","nodeType":"FunctionDefinition","parameters":{"id":2094,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2087,"mutability":"mutable","name":"token","nameLocation":"2981:5:7","nodeType":"VariableDeclaration","scope":2131,"src":"2969:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":2086,"nodeType":"UserDefinedTypeName","pathNode":{"id":2085,"name":"ISuperToken","nameLocations":["2969:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"2969:11:7"},"referencedDeclaration":6947,"src":"2969:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":2089,"mutability":"mutable","name":"receiver","nameLocation":"2996:8:7","nodeType":"VariableDeclaration","scope":2131,"src":"2988:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2088,"name":"address","nodeType":"ElementaryTypeName","src":"2988:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2091,"mutability":"mutable","name":"flowRate","nameLocation":"3012:8:7","nodeType":"VariableDeclaration","scope":2131,"src":"3006:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":2090,"name":"int96","nodeType":"ElementaryTypeName","src":"3006:5:7","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"},{"constant":false,"id":2093,"mutability":"mutable","name":"userData","nameLocation":"3035:8:7","nodeType":"VariableDeclaration","scope":2131,"src":"3022:21:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2092,"name":"bytes","nodeType":"ElementaryTypeName","src":"3022:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2968:76:7"},"returnParameters":{"id":2097,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2096,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2131,"src":"3071:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2095,"name":"bool","nodeType":"ElementaryTypeName","src":"3071:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3070:6:7"},"scope":5077,"src":"2949:460:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2179,"nodeType":"Block","src":"3716:342:7","statements":[{"assignments":[2146,2149],"declarations":[{"constant":false,"id":2146,"mutability":"mutable","name":"host","nameLocation":"3739:4:7","nodeType":"VariableDeclaration","scope":2179,"src":"3727:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"},"typeName":{"id":2145,"nodeType":"UserDefinedTypeName","pathNode":{"id":2144,"name":"ISuperfluid","nameLocations":["3727:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":7599,"src":"3727:11:7"},"referencedDeclaration":7599,"src":"3727:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":2149,"mutability":"mutable","name":"cfa","nameLocation":"3770:3:7","nodeType":"VariableDeclaration","scope":2179,"src":"3745:28:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":2148,"nodeType":"UserDefinedTypeName","pathNode":{"id":2147,"name":"IConstantFlowAgreementV1","nameLocations":["3745:24:7"],"nodeType":"IdentifierPath","referencedDeclaration":5487,"src":"3745:24:7"},"referencedDeclaration":5487,"src":"3745:24:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"id":2153,"initialValue":{"arguments":[{"id":2151,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2135,"src":"3800:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}],"id":2150,"name":"_getAndCacheHostAndCFA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4827,"src":"3777:22:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$6947_$returns$_t_contract$_ISuperfluid_$7599_$_t_contract$_IConstantFlowAgreementV1_$5487_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"id":2152,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3777:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7599_$_t_contract$_IConstantFlowAgreementV1_$5487_$","typeString":"tuple(contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"3726:80:7"},{"expression":{"arguments":[{"id":2157,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2149,"src":"3848:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},{"arguments":[{"expression":{"id":2160,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2149,"src":"3897:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"id":2161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3901:10:7","memberName":"deleteFlow","nodeType":"MemberAccess","referencedDeclaration":5432,"src":"3897:14:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,address,bytes memory) external returns (bytes memory)"}},{"components":[{"id":2162,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2135,"src":"3930:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},{"id":2163,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2137,"src":"3937:6:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2164,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2139,"src":"3945:8:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":2167,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3965:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2166,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"3955:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2165,"name":"bytes","nodeType":"ElementaryTypeName","src":"3959:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2168,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3955:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":2169,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3929:39:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,address,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,address,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,address,bytes memory)"}],"expression":{"id":2158,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3865:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2159,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3869:10:7","memberName":"encodeCall","nodeType":"MemberAccess","src":"3865:14:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2170,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3865:117:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"hexValue":"30","id":2173,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4006:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2172,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"3996:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2171,"name":"bytes","nodeType":"ElementaryTypeName","src":"4000:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2174,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3996:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2154,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2146,"src":"3816:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"id":2156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3821:13:7","memberName":"callAgreement","nodeType":"MemberAccess","referencedDeclaration":7497,"src":"3816:18:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6395_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory) external returns (bytes memory)"}},"id":2175,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3816:214:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2176,"nodeType":"ExpressionStatement","src":"3816:214:7"},{"expression":{"hexValue":"74727565","id":2177,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4047:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":2143,"id":2178,"nodeType":"Return","src":"4040:11:7"}]},"documentation":{"id":2132,"nodeType":"StructuredDocumentation","src":"3415:187:7","text":" @dev Delete flow without userData\n @param token The token used in flow\n @param sender The sender of the flow\n @param receiver The receiver of the flow"},"id":2180,"implemented":true,"kind":"function","modifiers":[],"name":"deleteFlow","nameLocation":"3616:10:7","nodeType":"FunctionDefinition","parameters":{"id":2140,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2135,"mutability":"mutable","name":"token","nameLocation":"3639:5:7","nodeType":"VariableDeclaration","scope":2180,"src":"3627:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":2134,"nodeType":"UserDefinedTypeName","pathNode":{"id":2133,"name":"ISuperToken","nameLocations":["3627:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"3627:11:7"},"referencedDeclaration":6947,"src":"3627:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":2137,"mutability":"mutable","name":"sender","nameLocation":"3654:6:7","nodeType":"VariableDeclaration","scope":2180,"src":"3646:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2136,"name":"address","nodeType":"ElementaryTypeName","src":"3646:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2139,"mutability":"mutable","name":"receiver","nameLocation":"3670:8:7","nodeType":"VariableDeclaration","scope":2180,"src":"3662:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2138,"name":"address","nodeType":"ElementaryTypeName","src":"3662:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3626:53:7"},"returnParameters":{"id":2143,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2142,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2180,"src":"3706:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2141,"name":"bool","nodeType":"ElementaryTypeName","src":"3706:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3705:6:7"},"scope":5077,"src":"3607:451:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2227,"nodeType":"Block","src":"4444:326:7","statements":[{"assignments":[2197,2200],"declarations":[{"constant":false,"id":2197,"mutability":"mutable","name":"host","nameLocation":"4467:4:7","nodeType":"VariableDeclaration","scope":2227,"src":"4455:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"},"typeName":{"id":2196,"nodeType":"UserDefinedTypeName","pathNode":{"id":2195,"name":"ISuperfluid","nameLocations":["4455:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":7599,"src":"4455:11:7"},"referencedDeclaration":7599,"src":"4455:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":2200,"mutability":"mutable","name":"cfa","nameLocation":"4498:3:7","nodeType":"VariableDeclaration","scope":2227,"src":"4473:28:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":2199,"nodeType":"UserDefinedTypeName","pathNode":{"id":2198,"name":"IConstantFlowAgreementV1","nameLocations":["4473:24:7"],"nodeType":"IdentifierPath","referencedDeclaration":5487,"src":"4473:24:7"},"referencedDeclaration":5487,"src":"4473:24:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"id":2204,"initialValue":{"arguments":[{"id":2202,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2184,"src":"4528:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}],"id":2201,"name":"_getAndCacheHostAndCFA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4827,"src":"4505:22:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$6947_$returns$_t_contract$_ISuperfluid_$7599_$_t_contract$_IConstantFlowAgreementV1_$5487_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"id":2203,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4505:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7599_$_t_contract$_IConstantFlowAgreementV1_$5487_$","typeString":"tuple(contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"4454:80:7"},{"expression":{"arguments":[{"id":2208,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2200,"src":"4576:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},{"arguments":[{"expression":{"id":2211,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2200,"src":"4625:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"id":2212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4629:10:7","memberName":"deleteFlow","nodeType":"MemberAccess","referencedDeclaration":5432,"src":"4625:14:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,address,bytes memory) external returns (bytes memory)"}},{"components":[{"id":2213,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2184,"src":"4658:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},{"id":2214,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2186,"src":"4665:6:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2215,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2188,"src":"4673:8:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":2218,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4693:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2217,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"4683:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2216,"name":"bytes","nodeType":"ElementaryTypeName","src":"4687:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2219,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4683:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":2220,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4657:39:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,address,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,address,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,address,bytes memory)"}],"expression":{"id":2209,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4593:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2210,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4597:10:7","memberName":"encodeCall","nodeType":"MemberAccess","src":"4593:14:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2221,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4593:117:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":2222,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2190,"src":"4724:8:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2205,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2197,"src":"4544:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"id":2207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4549:13:7","memberName":"callAgreement","nodeType":"MemberAccess","referencedDeclaration":7497,"src":"4544:18:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6395_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory) external returns (bytes memory)"}},"id":2223,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4544:198:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2224,"nodeType":"ExpressionStatement","src":"4544:198:7"},{"expression":{"hexValue":"74727565","id":2225,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4759:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":2194,"id":2226,"nodeType":"Return","src":"4752:11:7"}]},"documentation":{"id":2181,"nodeType":"StructuredDocumentation","src":"4064:243:7","text":" @dev Delete flow with userData\n @param token The token used in flow\n @param sender The sender of the flow\n @param receiver The receiver of the flow\n @param userData The userdata passed along with call"},"id":2228,"implemented":true,"kind":"function","modifiers":[],"name":"deleteFlow","nameLocation":"4321:10:7","nodeType":"FunctionDefinition","parameters":{"id":2191,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2184,"mutability":"mutable","name":"token","nameLocation":"4344:5:7","nodeType":"VariableDeclaration","scope":2228,"src":"4332:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":2183,"nodeType":"UserDefinedTypeName","pathNode":{"id":2182,"name":"ISuperToken","nameLocations":["4332:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"4332:11:7"},"referencedDeclaration":6947,"src":"4332:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":2186,"mutability":"mutable","name":"sender","nameLocation":"4359:6:7","nodeType":"VariableDeclaration","scope":2228,"src":"4351:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2185,"name":"address","nodeType":"ElementaryTypeName","src":"4351:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2188,"mutability":"mutable","name":"receiver","nameLocation":"4375:8:7","nodeType":"VariableDeclaration","scope":2228,"src":"4367:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2187,"name":"address","nodeType":"ElementaryTypeName","src":"4367:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2190,"mutability":"mutable","name":"userData","nameLocation":"4398:8:7","nodeType":"VariableDeclaration","scope":2228,"src":"4385:21:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2189,"name":"bytes","nodeType":"ElementaryTypeName","src":"4385:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4331:76:7"},"returnParameters":{"id":2194,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2193,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2228,"src":"4434:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2192,"name":"bool","nodeType":"ElementaryTypeName","src":"4434:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4433:6:7"},"scope":5077,"src":"4312:458:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2307,"nodeType":"Block","src":"5440:524:7","statements":[{"assignments":[2249,2252],"declarations":[{"constant":false,"id":2249,"mutability":"mutable","name":"host","nameLocation":"5463:4:7","nodeType":"VariableDeclaration","scope":2307,"src":"5451:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"},"typeName":{"id":2248,"nodeType":"UserDefinedTypeName","pathNode":{"id":2247,"name":"ISuperfluid","nameLocations":["5451:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":7599,"src":"5451:11:7"},"referencedDeclaration":7599,"src":"5451:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":2252,"mutability":"mutable","name":"cfa","nameLocation":"5494:3:7","nodeType":"VariableDeclaration","scope":2307,"src":"5469:28:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":2251,"nodeType":"UserDefinedTypeName","pathNode":{"id":2250,"name":"IConstantFlowAgreementV1","nameLocations":["5469:24:7"],"nodeType":"IdentifierPath","referencedDeclaration":5487,"src":"5469:24:7"},"referencedDeclaration":5487,"src":"5469:24:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"id":2256,"initialValue":{"arguments":[{"id":2254,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2232,"src":"5524:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}],"id":2253,"name":"_getAndCacheHostAndCFA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4827,"src":"5501:22:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$6947_$returns$_t_contract$_ISuperfluid_$7599_$_t_contract$_IConstantFlowAgreementV1_$5487_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"id":2255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5501:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7599_$_t_contract$_IConstantFlowAgreementV1_$5487_$","typeString":"tuple(contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"5450:80:7"},{"assignments":[2258],"declarations":[{"constant":false,"id":2258,"mutability":"mutable","name":"permissionsBitmask","nameLocation":"5546:18:7","nodeType":"VariableDeclaration","scope":2307,"src":"5540:24:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2257,"name":"uint8","nodeType":"ElementaryTypeName","src":"5540:5:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":2280,"initialValue":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":2279,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":2271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"condition":{"id":2259,"name":"allowCreate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2236,"src":"5568:11:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":2261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5586:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":2262,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"5568:19:7","trueExpression":{"hexValue":"31","id":2260,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5582:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":2263,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5567:21:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":2270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"condition":{"id":2264,"name":"allowUpdate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2238,"src":"5604:11:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":2266,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5622:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":2267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"5604:19:7","trueExpression":{"hexValue":"31","id":2265,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5618:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":2268,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5603:21:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"31","id":2269,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5628:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5603:26:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"5567:62:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":2278,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"condition":{"id":2272,"name":"allowDelete","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2240,"src":"5645:11:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":2274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5663:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":2275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"5645:19:7","trueExpression":{"hexValue":"31","id":2273,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5659:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":2276,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5644:21:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"32","id":2277,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5669:1:7","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"5644:26:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"5567:103:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"5540:130:7"},{"expression":{"arguments":[{"id":2284,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2252,"src":"5712:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},{"arguments":[{"expression":{"id":2287,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2252,"src":"5761:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"id":2288,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5765:29:7","memberName":"updateFlowOperatorPermissions","nodeType":"MemberAccess","referencedDeclaration":5203,"src":"5761:33:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_uint8_$_t_int96_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,uint8,int96,bytes memory) external returns (bytes memory)"}},{"components":[{"id":2289,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2232,"src":"5813:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},{"id":2290,"name":"flowOperator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2234,"src":"5820:12:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2291,"name":"permissionsBitmask","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2258,"src":"5834:18:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":2292,"name":"flowRateAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2242,"src":"5854:17:7","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},{"arguments":[{"hexValue":"30","id":2295,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5883:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2294,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"5873:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2293,"name":"bytes","nodeType":"ElementaryTypeName","src":"5877:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2296,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5873:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":2297,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5812:74:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_uint8_$_t_int96_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,uint8,int96,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_uint8_$_t_int96_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,uint8,int96,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_uint8_$_t_int96_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,uint8,int96,bytes memory)"}],"expression":{"id":2285,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5729:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2286,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5733:10:7","memberName":"encodeCall","nodeType":"MemberAccess","src":"5729:14:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2298,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5729:171:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"hexValue":"30","id":2301,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5924:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2300,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"5914:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2299,"name":"bytes","nodeType":"ElementaryTypeName","src":"5918:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5914:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2281,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2249,"src":"5680:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"id":2283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5685:13:7","memberName":"callAgreement","nodeType":"MemberAccess","referencedDeclaration":7497,"src":"5680:18:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6395_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory) external returns (bytes memory)"}},"id":2303,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5680:256:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2304,"nodeType":"ExpressionStatement","src":"5680:256:7"},{"expression":{"hexValue":"74727565","id":2305,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5953:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":2246,"id":2306,"nodeType":"Return","src":"5946:11:7"}]},"documentation":{"id":2229,"nodeType":"StructuredDocumentation","src":"4834:375:7","text":" @dev Update permissions for flow operator\n @param token The token used in flow\n @param flowOperator The address given flow permissions\n @param allowCreate creation permissions\n @param allowCreate update permissions\n @param allowCreate deletion permissions\n @param flowRateAllowance The allowance provided to flowOperator"},"id":2308,"implemented":true,"kind":"function","modifiers":[],"name":"setFlowPermissions","nameLocation":"5223:18:7","nodeType":"FunctionDefinition","parameters":{"id":2243,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2232,"mutability":"mutable","name":"token","nameLocation":"5263:5:7","nodeType":"VariableDeclaration","scope":2308,"src":"5251:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":2231,"nodeType":"UserDefinedTypeName","pathNode":{"id":2230,"name":"ISuperToken","nameLocations":["5251:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"5251:11:7"},"referencedDeclaration":6947,"src":"5251:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":2234,"mutability":"mutable","name":"flowOperator","nameLocation":"5286:12:7","nodeType":"VariableDeclaration","scope":2308,"src":"5278:20:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2233,"name":"address","nodeType":"ElementaryTypeName","src":"5278:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2236,"mutability":"mutable","name":"allowCreate","nameLocation":"5313:11:7","nodeType":"VariableDeclaration","scope":2308,"src":"5308:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2235,"name":"bool","nodeType":"ElementaryTypeName","src":"5308:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2238,"mutability":"mutable","name":"allowUpdate","nameLocation":"5339:11:7","nodeType":"VariableDeclaration","scope":2308,"src":"5334:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2237,"name":"bool","nodeType":"ElementaryTypeName","src":"5334:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2240,"mutability":"mutable","name":"allowDelete","nameLocation":"5365:11:7","nodeType":"VariableDeclaration","scope":2308,"src":"5360:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2239,"name":"bool","nodeType":"ElementaryTypeName","src":"5360:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2242,"mutability":"mutable","name":"flowRateAllowance","nameLocation":"5392:17:7","nodeType":"VariableDeclaration","scope":2308,"src":"5386:23:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":2241,"name":"int96","nodeType":"ElementaryTypeName","src":"5386:5:7","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"5241:174:7"},"returnParameters":{"id":2246,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2245,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2308,"src":"5434:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2244,"name":"bool","nodeType":"ElementaryTypeName","src":"5434:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5433:6:7"},"scope":5077,"src":"5214:750:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2353,"nodeType":"Block","src":"6290:352:7","statements":[{"assignments":[2321,2324],"declarations":[{"constant":false,"id":2321,"mutability":"mutable","name":"host","nameLocation":"6313:4:7","nodeType":"VariableDeclaration","scope":2353,"src":"6301:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"},"typeName":{"id":2320,"nodeType":"UserDefinedTypeName","pathNode":{"id":2319,"name":"ISuperfluid","nameLocations":["6301:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":7599,"src":"6301:11:7"},"referencedDeclaration":7599,"src":"6301:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":2324,"mutability":"mutable","name":"cfa","nameLocation":"6344:3:7","nodeType":"VariableDeclaration","scope":2353,"src":"6319:28:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":2323,"nodeType":"UserDefinedTypeName","pathNode":{"id":2322,"name":"IConstantFlowAgreementV1","nameLocations":["6319:24:7"],"nodeType":"IdentifierPath","referencedDeclaration":5487,"src":"6319:24:7"},"referencedDeclaration":5487,"src":"6319:24:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"id":2328,"initialValue":{"arguments":[{"id":2326,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2312,"src":"6374:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}],"id":2325,"name":"_getAndCacheHostAndCFA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4827,"src":"6351:22:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$6947_$returns$_t_contract$_ISuperfluid_$7599_$_t_contract$_IConstantFlowAgreementV1_$5487_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"id":2327,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6351:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7599_$_t_contract$_IConstantFlowAgreementV1_$5487_$","typeString":"tuple(contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"6300:80:7"},{"expression":{"arguments":[{"id":2332,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2324,"src":"6422:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},{"arguments":[{"expression":{"id":2335,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2324,"src":"6471:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"id":2336,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6475:36:7","memberName":"authorizeFlowOperatorWithFullControl","nodeType":"MemberAccess","referencedDeclaration":5246,"src":"6471:40:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,bytes memory) external returns (bytes memory)"}},{"components":[{"id":2337,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2312,"src":"6530:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},{"id":2338,"name":"flowOperator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2314,"src":"6537:12:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":2341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6561:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2340,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"6551:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2339,"name":"bytes","nodeType":"ElementaryTypeName","src":"6555:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6551:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":2343,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6529:35:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,bytes memory)"}],"expression":{"id":2333,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6439:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2334,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6443:10:7","memberName":"encodeCall","nodeType":"MemberAccess","src":"6439:14:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2344,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6439:139:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"hexValue":"30","id":2347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6602:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2346,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"6592:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2345,"name":"bytes","nodeType":"ElementaryTypeName","src":"6596:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6592:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2329,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2321,"src":"6390:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"id":2331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6395:13:7","memberName":"callAgreement","nodeType":"MemberAccess","referencedDeclaration":7497,"src":"6390:18:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6395_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory) external returns (bytes memory)"}},"id":2349,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6390:224:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2350,"nodeType":"ExpressionStatement","src":"6390:224:7"},{"expression":{"hexValue":"74727565","id":2351,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6631:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":2318,"id":2352,"nodeType":"Return","src":"6624:11:7"}]},"documentation":{"id":2309,"nodeType":"StructuredDocumentation","src":"5970:197:7","text":" @dev Update permissions for flow operator - give operator max permissions\n @param token The token used in flow\n @param flowOperator The address given flow permissions"},"id":2354,"implemented":true,"kind":"function","modifiers":[],"name":"setMaxFlowPermissions","nameLocation":"6181:21:7","nodeType":"FunctionDefinition","parameters":{"id":2315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2312,"mutability":"mutable","name":"token","nameLocation":"6224:5:7","nodeType":"VariableDeclaration","scope":2354,"src":"6212:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":2311,"nodeType":"UserDefinedTypeName","pathNode":{"id":2310,"name":"ISuperToken","nameLocations":["6212:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"6212:11:7"},"referencedDeclaration":6947,"src":"6212:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":2314,"mutability":"mutable","name":"flowOperator","nameLocation":"6247:12:7","nodeType":"VariableDeclaration","scope":2354,"src":"6239:20:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2313,"name":"address","nodeType":"ElementaryTypeName","src":"6239:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6202:63:7"},"returnParameters":{"id":2318,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2317,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2354,"src":"6284:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2316,"name":"bool","nodeType":"ElementaryTypeName","src":"6284:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6283:6:7"},"scope":5077,"src":"6172:470:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2399,"nodeType":"Block","src":"6960:349:7","statements":[{"assignments":[2367,2370],"declarations":[{"constant":false,"id":2367,"mutability":"mutable","name":"host","nameLocation":"6983:4:7","nodeType":"VariableDeclaration","scope":2399,"src":"6971:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"},"typeName":{"id":2366,"nodeType":"UserDefinedTypeName","pathNode":{"id":2365,"name":"ISuperfluid","nameLocations":["6971:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":7599,"src":"6971:11:7"},"referencedDeclaration":7599,"src":"6971:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":2370,"mutability":"mutable","name":"cfa","nameLocation":"7014:3:7","nodeType":"VariableDeclaration","scope":2399,"src":"6989:28:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":2369,"nodeType":"UserDefinedTypeName","pathNode":{"id":2368,"name":"IConstantFlowAgreementV1","nameLocations":["6989:24:7"],"nodeType":"IdentifierPath","referencedDeclaration":5487,"src":"6989:24:7"},"referencedDeclaration":5487,"src":"6989:24:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"id":2374,"initialValue":{"arguments":[{"id":2372,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2358,"src":"7044:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}],"id":2371,"name":"_getAndCacheHostAndCFA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4827,"src":"7021:22:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$6947_$returns$_t_contract$_ISuperfluid_$7599_$_t_contract$_IConstantFlowAgreementV1_$5487_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"id":2373,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7021:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7599_$_t_contract$_IConstantFlowAgreementV1_$5487_$","typeString":"tuple(contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"6970:80:7"},{"expression":{"arguments":[{"id":2378,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2370,"src":"7092:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},{"arguments":[{"expression":{"id":2381,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2370,"src":"7141:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"id":2382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7145:33:7","memberName":"revokeFlowOperatorWithFullControl","nodeType":"MemberAccess","referencedDeclaration":5259,"src":"7141:37:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,bytes memory) external returns (bytes memory)"}},{"components":[{"id":2383,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2358,"src":"7197:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},{"id":2384,"name":"flowOperator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2360,"src":"7204:12:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":2387,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7228:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2386,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"7218:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2385,"name":"bytes","nodeType":"ElementaryTypeName","src":"7222:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2388,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7218:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":2389,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7196:35:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,bytes memory)"}],"expression":{"id":2379,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7109:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2380,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7113:10:7","memberName":"encodeCall","nodeType":"MemberAccess","src":"7109:14:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2390,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7109:136:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"hexValue":"30","id":2393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7269:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2392,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"7259:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2391,"name":"bytes","nodeType":"ElementaryTypeName","src":"7263:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7259:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2375,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2367,"src":"7060:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"id":2377,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7065:13:7","memberName":"callAgreement","nodeType":"MemberAccess","referencedDeclaration":7497,"src":"7060:18:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6395_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory) external returns (bytes memory)"}},"id":2395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7060:221:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2396,"nodeType":"ExpressionStatement","src":"7060:221:7"},{"expression":{"hexValue":"74727565","id":2397,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7298:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":2364,"id":2398,"nodeType":"Return","src":"7291:11:7"}]},"documentation":{"id":2355,"nodeType":"StructuredDocumentation","src":"6648:189:7","text":" @dev Update permissions for flow operator - revoke all permission\n @param token The token used in flow\n @param flowOperator The address given flow permissions"},"id":2400,"implemented":true,"kind":"function","modifiers":[],"name":"revokeFlowPermissions","nameLocation":"6851:21:7","nodeType":"FunctionDefinition","parameters":{"id":2361,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2358,"mutability":"mutable","name":"token","nameLocation":"6894:5:7","nodeType":"VariableDeclaration","scope":2400,"src":"6882:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":2357,"nodeType":"UserDefinedTypeName","pathNode":{"id":2356,"name":"ISuperToken","nameLocations":["6882:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"6882:11:7"},"referencedDeclaration":6947,"src":"6882:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":2360,"mutability":"mutable","name":"flowOperator","nameLocation":"6917:12:7","nodeType":"VariableDeclaration","scope":2400,"src":"6909:20:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2359,"name":"address","nodeType":"ElementaryTypeName","src":"6909:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6872:63:7"},"returnParameters":{"id":2364,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2363,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2400,"src":"6954:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2362,"name":"bool","nodeType":"ElementaryTypeName","src":"6954:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6953:6:7"},"scope":5077,"src":"6842:467:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2479,"nodeType":"Block","src":"8140:654:7","statements":[{"assignments":[2423,2426],"declarations":[{"constant":false,"id":2423,"mutability":"mutable","name":"host","nameLocation":"8163:4:7","nodeType":"VariableDeclaration","scope":2479,"src":"8151:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"},"typeName":{"id":2422,"nodeType":"UserDefinedTypeName","pathNode":{"id":2421,"name":"ISuperfluid","nameLocations":["8151:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":7599,"src":"8151:11:7"},"referencedDeclaration":7599,"src":"8151:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":2426,"mutability":"mutable","name":"cfa","nameLocation":"8194:3:7","nodeType":"VariableDeclaration","scope":2479,"src":"8169:28:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":2425,"nodeType":"UserDefinedTypeName","pathNode":{"id":2424,"name":"IConstantFlowAgreementV1","nameLocations":["8169:24:7"],"nodeType":"IdentifierPath","referencedDeclaration":5487,"src":"8169:24:7"},"referencedDeclaration":5487,"src":"8169:24:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"id":2430,"initialValue":{"arguments":[{"id":2428,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2404,"src":"8224:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}],"id":2427,"name":"_getAndCacheHostAndCFA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4827,"src":"8201:22:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$6947_$returns$_t_contract$_ISuperfluid_$7599_$_t_contract$_IConstantFlowAgreementV1_$5487_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"id":2429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8201:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7599_$_t_contract$_IConstantFlowAgreementV1_$5487_$","typeString":"tuple(contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"8150:80:7"},{"assignments":[2432],"declarations":[{"constant":false,"id":2432,"mutability":"mutable","name":"permissionsBitmask","nameLocation":"8246:18:7","nodeType":"VariableDeclaration","scope":2479,"src":"8240:24:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2431,"name":"uint8","nodeType":"ElementaryTypeName","src":"8240:5:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":2454,"initialValue":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":2453,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":2445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"condition":{"id":2433,"name":"allowCreate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2408,"src":"8268:11:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":2435,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8286:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":2436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8268:19:7","trueExpression":{"hexValue":"31","id":2434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8282:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":2437,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8267:21:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":2444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"condition":{"id":2438,"name":"allowUpdate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2410,"src":"8304:11:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":2440,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8322:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":2441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8304:19:7","trueExpression":{"hexValue":"31","id":2439,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8318:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":2442,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8303:21:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"31","id":2443,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8328:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8303:26:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"8267:62:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":2452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"condition":{"id":2446,"name":"allowDelete","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2412,"src":"8345:11:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":2448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8363:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":2449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8345:19:7","trueExpression":{"hexValue":"31","id":2447,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8359:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":2450,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8344:21:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"32","id":2451,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8369:1:7","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"8344:26:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"8267:103:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"8240:130:7"},{"expression":{"id":2477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":2455,"name":"newCtx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2419,"src":"8381:6:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},null],"id":2456,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"8380:10:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$__$","typeString":"tuple(bytes memory,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2459,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2426,"src":"8436:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},{"arguments":[{"expression":{"id":2462,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2426,"src":"8485:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"id":2463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8489:29:7","memberName":"updateFlowOperatorPermissions","nodeType":"MemberAccess","referencedDeclaration":5203,"src":"8485:33:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_uint8_$_t_int96_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,uint8,int96,bytes memory) external returns (bytes memory)"}},{"components":[{"id":2464,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2404,"src":"8558:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},{"id":2465,"name":"flowOperator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2406,"src":"8585:12:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2466,"name":"permissionsBitmask","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2432,"src":"8619:18:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":2467,"name":"flowRateAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2414,"src":"8659:17:7","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},{"arguments":[{"hexValue":"30","id":2470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8708:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2469,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"8698:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2468,"name":"bytes","nodeType":"ElementaryTypeName","src":"8702:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2471,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8698:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":2472,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8536:192:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_uint8_$_t_int96_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,uint8,int96,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_uint8_$_t_int96_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,uint8,int96,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_uint8_$_t_int96_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,uint8,int96,bytes memory)"}],"expression":{"id":2460,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"8453:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2461,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8457:10:7","memberName":"encodeCall","nodeType":"MemberAccess","src":"8453:14:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2473,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8453:289:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"3078","id":2474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8756:4:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"},{"id":2475,"name":"ctx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2416,"src":"8774:3:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2457,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2423,"src":"8393:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"id":2458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8398:24:7","memberName":"callAgreementWithContext","nodeType":"MemberAccess","referencedDeclaration":7548,"src":"8393:29:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6395_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory,bytes memory) external returns (bytes memory,bytes memory)"}},"id":2476,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8393:394:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(bytes memory,bytes memory)"}},"src":"8380:407:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2478,"nodeType":"ExpressionStatement","src":"8380:407:7"}]},"documentation":{"id":2401,"nodeType":"StructuredDocumentation","src":"7315:546:7","text":" @dev Update permissions for flow operator in callback\n @notice allowing userData to be a parameter here triggered stack to deep error\n @param token The token used in flow\n @param flowOperator The address given flow permissions\n @param allowCreate creation permissions\n @param allowCreate update permissions\n @param allowCreate deletion permissions\n @param flowRateAllowance The allowance provided to flowOperator\n @param ctx Context bytes (see ISuperfluid.sol for Context struct)"},"id":2480,"implemented":true,"kind":"function","modifiers":[],"name":"setFlowPermissionsWithCtx","nameLocation":"7875:25:7","nodeType":"FunctionDefinition","parameters":{"id":2417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2404,"mutability":"mutable","name":"token","nameLocation":"7922:5:7","nodeType":"VariableDeclaration","scope":2480,"src":"7910:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":2403,"nodeType":"UserDefinedTypeName","pathNode":{"id":2402,"name":"ISuperToken","nameLocations":["7910:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"7910:11:7"},"referencedDeclaration":6947,"src":"7910:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":2406,"mutability":"mutable","name":"flowOperator","nameLocation":"7945:12:7","nodeType":"VariableDeclaration","scope":2480,"src":"7937:20:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2405,"name":"address","nodeType":"ElementaryTypeName","src":"7937:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2408,"mutability":"mutable","name":"allowCreate","nameLocation":"7972:11:7","nodeType":"VariableDeclaration","scope":2480,"src":"7967:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2407,"name":"bool","nodeType":"ElementaryTypeName","src":"7967:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2410,"mutability":"mutable","name":"allowUpdate","nameLocation":"7998:11:7","nodeType":"VariableDeclaration","scope":2480,"src":"7993:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2409,"name":"bool","nodeType":"ElementaryTypeName","src":"7993:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2412,"mutability":"mutable","name":"allowDelete","nameLocation":"8024:11:7","nodeType":"VariableDeclaration","scope":2480,"src":"8019:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2411,"name":"bool","nodeType":"ElementaryTypeName","src":"8019:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2414,"mutability":"mutable","name":"flowRateAllowance","nameLocation":"8051:17:7","nodeType":"VariableDeclaration","scope":2480,"src":"8045:23:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":2413,"name":"int96","nodeType":"ElementaryTypeName","src":"8045:5:7","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"},{"constant":false,"id":2416,"mutability":"mutable","name":"ctx","nameLocation":"8091:3:7","nodeType":"VariableDeclaration","scope":2480,"src":"8078:16:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2415,"name":"bytes","nodeType":"ElementaryTypeName","src":"8078:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7900:200:7"},"returnParameters":{"id":2420,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2419,"mutability":"mutable","name":"newCtx","nameLocation":"8132:6:7","nodeType":"VariableDeclaration","scope":2480,"src":"8119:19:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2418,"name":"bytes","nodeType":"ElementaryTypeName","src":"8119:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8118:21:7"},"scope":5077,"src":"7866:928:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2525,"nodeType":"Block","src":"9241:442:7","statements":[{"assignments":[2495,2498],"declarations":[{"constant":false,"id":2495,"mutability":"mutable","name":"host","nameLocation":"9264:4:7","nodeType":"VariableDeclaration","scope":2525,"src":"9252:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"},"typeName":{"id":2494,"nodeType":"UserDefinedTypeName","pathNode":{"id":2493,"name":"ISuperfluid","nameLocations":["9252:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":7599,"src":"9252:11:7"},"referencedDeclaration":7599,"src":"9252:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":2498,"mutability":"mutable","name":"cfa","nameLocation":"9295:3:7","nodeType":"VariableDeclaration","scope":2525,"src":"9270:28:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":2497,"nodeType":"UserDefinedTypeName","pathNode":{"id":2496,"name":"IConstantFlowAgreementV1","nameLocations":["9270:24:7"],"nodeType":"IdentifierPath","referencedDeclaration":5487,"src":"9270:24:7"},"referencedDeclaration":5487,"src":"9270:24:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"id":2502,"initialValue":{"arguments":[{"id":2500,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2484,"src":"9325:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}],"id":2499,"name":"_getAndCacheHostAndCFA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4827,"src":"9302:22:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$6947_$returns$_t_contract$_ISuperfluid_$7599_$_t_contract$_IConstantFlowAgreementV1_$5487_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"id":2501,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9302:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7599_$_t_contract$_IConstantFlowAgreementV1_$5487_$","typeString":"tuple(contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"9251:80:7"},{"expression":{"id":2523,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":2503,"name":"newCtx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2491,"src":"9342:6:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},null],"id":2504,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"9341:10:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$__$","typeString":"tuple(bytes memory,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2507,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2498,"src":"9397:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},{"arguments":[{"expression":{"id":2510,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2498,"src":"9446:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"id":2511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9450:36:7","memberName":"authorizeFlowOperatorWithFullControl","nodeType":"MemberAccess","referencedDeclaration":5246,"src":"9446:40:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,bytes memory) external returns (bytes memory)"}},{"components":[{"id":2512,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2484,"src":"9526:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},{"id":2513,"name":"flowOperator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2486,"src":"9553:12:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":2516,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9597:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2515,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"9587:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2514,"name":"bytes","nodeType":"ElementaryTypeName","src":"9591:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2517,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9587:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":2518,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9504:113:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,bytes memory)"}],"expression":{"id":2508,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"9414:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2509,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9418:10:7","memberName":"encodeCall","nodeType":"MemberAccess","src":"9414:14:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2519,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9414:217:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"3078","id":2520,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9645:4:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"},{"id":2521,"name":"ctx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2488,"src":"9663:3:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2505,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2495,"src":"9354:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"id":2506,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9359:24:7","memberName":"callAgreementWithContext","nodeType":"MemberAccess","referencedDeclaration":7548,"src":"9354:29:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6395_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory,bytes memory) external returns (bytes memory,bytes memory)"}},"id":2522,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9354:322:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(bytes memory,bytes memory)"}},"src":"9341:335:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2524,"nodeType":"ExpressionStatement","src":"9341:335:7"}]},"documentation":{"id":2481,"nodeType":"StructuredDocumentation","src":"8800:270:7","text":" @dev Update permissions for flow operator - give operator max permissions\n @param token The token used in flow\n @param flowOperator The address given flow permissions\n @param ctx Context bytes (see ISuperfluid.sol for Context struct)"},"id":2526,"implemented":true,"kind":"function","modifiers":[],"name":"setMaxFlowPermissionsWithCtx","nameLocation":"9084:28:7","nodeType":"FunctionDefinition","parameters":{"id":2489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2484,"mutability":"mutable","name":"token","nameLocation":"9134:5:7","nodeType":"VariableDeclaration","scope":2526,"src":"9122:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":2483,"nodeType":"UserDefinedTypeName","pathNode":{"id":2482,"name":"ISuperToken","nameLocations":["9122:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"9122:11:7"},"referencedDeclaration":6947,"src":"9122:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":2486,"mutability":"mutable","name":"flowOperator","nameLocation":"9157:12:7","nodeType":"VariableDeclaration","scope":2526,"src":"9149:20:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2485,"name":"address","nodeType":"ElementaryTypeName","src":"9149:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2488,"mutability":"mutable","name":"ctx","nameLocation":"9192:3:7","nodeType":"VariableDeclaration","scope":2526,"src":"9179:16:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2487,"name":"bytes","nodeType":"ElementaryTypeName","src":"9179:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9112:89:7"},"returnParameters":{"id":2492,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2491,"mutability":"mutable","name":"newCtx","nameLocation":"9233:6:7","nodeType":"VariableDeclaration","scope":2526,"src":"9220:19:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2490,"name":"bytes","nodeType":"ElementaryTypeName","src":"9220:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9219:21:7"},"scope":5077,"src":"9075:608:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2571,"nodeType":"Block","src":"10121:361:7","statements":[{"assignments":[2541,2544],"declarations":[{"constant":false,"id":2541,"mutability":"mutable","name":"host","nameLocation":"10144:4:7","nodeType":"VariableDeclaration","scope":2571,"src":"10132:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"},"typeName":{"id":2540,"nodeType":"UserDefinedTypeName","pathNode":{"id":2539,"name":"ISuperfluid","nameLocations":["10132:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":7599,"src":"10132:11:7"},"referencedDeclaration":7599,"src":"10132:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":2544,"mutability":"mutable","name":"cfa","nameLocation":"10175:3:7","nodeType":"VariableDeclaration","scope":2571,"src":"10150:28:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":2543,"nodeType":"UserDefinedTypeName","pathNode":{"id":2542,"name":"IConstantFlowAgreementV1","nameLocations":["10150:24:7"],"nodeType":"IdentifierPath","referencedDeclaration":5487,"src":"10150:24:7"},"referencedDeclaration":5487,"src":"10150:24:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"id":2548,"initialValue":{"arguments":[{"id":2546,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2530,"src":"10205:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}],"id":2545,"name":"_getAndCacheHostAndCFA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4827,"src":"10182:22:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$6947_$returns$_t_contract$_ISuperfluid_$7599_$_t_contract$_IConstantFlowAgreementV1_$5487_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"id":2547,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10182:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7599_$_t_contract$_IConstantFlowAgreementV1_$5487_$","typeString":"tuple(contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"10131:80:7"},{"expression":{"id":2569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":2549,"name":"newCtx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2537,"src":"10222:6:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},null],"id":2550,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"10221:10:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$__$","typeString":"tuple(bytes memory,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2553,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2544,"src":"10277:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},{"arguments":[{"expression":{"id":2556,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2544,"src":"10326:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"id":2557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10330:33:7","memberName":"revokeFlowOperatorWithFullControl","nodeType":"MemberAccess","referencedDeclaration":5259,"src":"10326:37:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,bytes memory) external returns (bytes memory)"}},{"components":[{"id":2558,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2530,"src":"10382:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},{"id":2559,"name":"flowOperator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2532,"src":"10389:12:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":2562,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10413:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2561,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"10403:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2560,"name":"bytes","nodeType":"ElementaryTypeName","src":"10407:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2563,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10403:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":2564,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10381:35:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,bytes memory)"}],"expression":{"id":2554,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"10294:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2555,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10298:10:7","memberName":"encodeCall","nodeType":"MemberAccess","src":"10294:14:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2565,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10294:136:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"3078","id":2566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10444:4:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"},{"id":2567,"name":"ctx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2534,"src":"10462:3:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2551,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2541,"src":"10234:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"id":2552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10239:24:7","memberName":"callAgreementWithContext","nodeType":"MemberAccess","referencedDeclaration":7548,"src":"10234:29:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6395_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory,bytes memory) external returns (bytes memory,bytes memory)"}},"id":2568,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10234:241:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(bytes memory,bytes memory)"}},"src":"10221:254:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2570,"nodeType":"ExpressionStatement","src":"10221:254:7"}]},"documentation":{"id":2527,"nodeType":"StructuredDocumentation","src":"9689:261:7","text":" @dev Update permissions for flow operator - revoke all permission\n @param token The token used in flow\n @param flowOperator The address given flow permissions\n @param ctx Context bytes (see ISuperfluid.sol for Context struct)"},"id":2572,"implemented":true,"kind":"function","modifiers":[],"name":"revokeFlowPermissionsWithCtx","nameLocation":"9964:28:7","nodeType":"FunctionDefinition","parameters":{"id":2535,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2530,"mutability":"mutable","name":"token","nameLocation":"10014:5:7","nodeType":"VariableDeclaration","scope":2572,"src":"10002:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":2529,"nodeType":"UserDefinedTypeName","pathNode":{"id":2528,"name":"ISuperToken","nameLocations":["10002:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"10002:11:7"},"referencedDeclaration":6947,"src":"10002:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":2532,"mutability":"mutable","name":"flowOperator","nameLocation":"10037:12:7","nodeType":"VariableDeclaration","scope":2572,"src":"10029:20:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2531,"name":"address","nodeType":"ElementaryTypeName","src":"10029:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2534,"mutability":"mutable","name":"ctx","nameLocation":"10072:3:7","nodeType":"VariableDeclaration","scope":2572,"src":"10059:16:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2533,"name":"bytes","nodeType":"ElementaryTypeName","src":"10059:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9992:89:7"},"returnParameters":{"id":2538,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2537,"mutability":"mutable","name":"newCtx","nameLocation":"10113:6:7","nodeType":"VariableDeclaration","scope":2572,"src":"10100:19:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2536,"name":"bytes","nodeType":"ElementaryTypeName","src":"10100:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"10099:21:7"},"scope":5077,"src":"9955:527:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2623,"nodeType":"Block","src":"10891:350:7","statements":[{"assignments":[2589,2592],"declarations":[{"constant":false,"id":2589,"mutability":"mutable","name":"host","nameLocation":"10914:4:7","nodeType":"VariableDeclaration","scope":2623,"src":"10902:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"},"typeName":{"id":2588,"nodeType":"UserDefinedTypeName","pathNode":{"id":2587,"name":"ISuperfluid","nameLocations":["10902:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":7599,"src":"10902:11:7"},"referencedDeclaration":7599,"src":"10902:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":2592,"mutability":"mutable","name":"cfa","nameLocation":"10945:3:7","nodeType":"VariableDeclaration","scope":2623,"src":"10920:28:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":2591,"nodeType":"UserDefinedTypeName","pathNode":{"id":2590,"name":"IConstantFlowAgreementV1","nameLocations":["10920:24:7"],"nodeType":"IdentifierPath","referencedDeclaration":5487,"src":"10920:24:7"},"referencedDeclaration":5487,"src":"10920:24:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"id":2596,"initialValue":{"arguments":[{"id":2594,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2576,"src":"10975:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}],"id":2593,"name":"_getAndCacheHostAndCFA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4827,"src":"10952:22:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$6947_$returns$_t_contract$_ISuperfluid_$7599_$_t_contract$_IConstantFlowAgreementV1_$5487_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"id":2595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10952:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7599_$_t_contract$_IConstantFlowAgreementV1_$5487_$","typeString":"tuple(contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"10901:80:7"},{"expression":{"arguments":[{"id":2600,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2592,"src":"11023:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},{"arguments":[{"expression":{"id":2603,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2592,"src":"11072:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"id":2604,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11076:20:7","memberName":"createFlowByOperator","nodeType":"MemberAccess","referencedDeclaration":5321,"src":"11072:24:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,address,int96,bytes memory) external returns (bytes memory)"}},{"components":[{"id":2605,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2576,"src":"11115:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},{"id":2606,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2578,"src":"11122:6:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2607,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2580,"src":"11130:8:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2608,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2582,"src":"11140:8:7","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},{"arguments":[{"hexValue":"30","id":2611,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11160:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2610,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"11150:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2609,"name":"bytes","nodeType":"ElementaryTypeName","src":"11154:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2612,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11150:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":2613,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11114:49:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,address,int96,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,address,int96,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,address,int96,bytes memory)"}],"expression":{"id":2601,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"11040:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2602,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11044:10:7","memberName":"encodeCall","nodeType":"MemberAccess","src":"11040:14:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2614,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11040:137:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"hexValue":"30","id":2617,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11201:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2616,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"11191:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2615,"name":"bytes","nodeType":"ElementaryTypeName","src":"11195:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2618,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11191:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2597,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2589,"src":"10991:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"id":2599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10996:13:7","memberName":"callAgreement","nodeType":"MemberAccess","referencedDeclaration":7497,"src":"10991:18:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6395_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory) external returns (bytes memory)"}},"id":2619,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10991:222:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2620,"nodeType":"ExpressionStatement","src":"10991:222:7"},{"expression":{"hexValue":"74727565","id":2621,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"11230:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":2586,"id":2622,"nodeType":"Return","src":"11223:11:7"}]},"documentation":{"id":2573,"nodeType":"StructuredDocumentation","src":"10489:242:7","text":" @dev Creates flow as an operator without userData\n @param token The token to flow\n @param sender The sender of the flow\n @param receiver The receiver of the flow\n @param flowRate The desired flowRate"},"id":2624,"implemented":true,"kind":"function","modifiers":[],"name":"createFlowFrom","nameLocation":"10745:14:7","nodeType":"FunctionDefinition","parameters":{"id":2583,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2576,"mutability":"mutable","name":"token","nameLocation":"10781:5:7","nodeType":"VariableDeclaration","scope":2624,"src":"10769:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":2575,"nodeType":"UserDefinedTypeName","pathNode":{"id":2574,"name":"ISuperToken","nameLocations":["10769:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"10769:11:7"},"referencedDeclaration":6947,"src":"10769:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":2578,"mutability":"mutable","name":"sender","nameLocation":"10804:6:7","nodeType":"VariableDeclaration","scope":2624,"src":"10796:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2577,"name":"address","nodeType":"ElementaryTypeName","src":"10796:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2580,"mutability":"mutable","name":"receiver","nameLocation":"10828:8:7","nodeType":"VariableDeclaration","scope":2624,"src":"10820:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2579,"name":"address","nodeType":"ElementaryTypeName","src":"10820:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2582,"mutability":"mutable","name":"flowRate","nameLocation":"10852:8:7","nodeType":"VariableDeclaration","scope":2624,"src":"10846:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":2581,"name":"int96","nodeType":"ElementaryTypeName","src":"10846:5:7","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"10759:107:7"},"returnParameters":{"id":2586,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2585,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2624,"src":"10885:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2584,"name":"bool","nodeType":"ElementaryTypeName","src":"10885:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10884:6:7"},"scope":5077,"src":"10736:505:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2674,"nodeType":"Block","src":"11723:346:7","statements":[{"assignments":[2643,2646],"declarations":[{"constant":false,"id":2643,"mutability":"mutable","name":"host","nameLocation":"11746:4:7","nodeType":"VariableDeclaration","scope":2674,"src":"11734:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"},"typeName":{"id":2642,"nodeType":"UserDefinedTypeName","pathNode":{"id":2641,"name":"ISuperfluid","nameLocations":["11734:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":7599,"src":"11734:11:7"},"referencedDeclaration":7599,"src":"11734:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":2646,"mutability":"mutable","name":"cfa","nameLocation":"11777:3:7","nodeType":"VariableDeclaration","scope":2674,"src":"11752:28:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":2645,"nodeType":"UserDefinedTypeName","pathNode":{"id":2644,"name":"IConstantFlowAgreementV1","nameLocations":["11752:24:7"],"nodeType":"IdentifierPath","referencedDeclaration":5487,"src":"11752:24:7"},"referencedDeclaration":5487,"src":"11752:24:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"id":2650,"initialValue":{"arguments":[{"id":2648,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2628,"src":"11807:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}],"id":2647,"name":"_getAndCacheHostAndCFA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4827,"src":"11784:22:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$6947_$returns$_t_contract$_ISuperfluid_$7599_$_t_contract$_IConstantFlowAgreementV1_$5487_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"id":2649,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11784:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7599_$_t_contract$_IConstantFlowAgreementV1_$5487_$","typeString":"tuple(contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"11733:80:7"},{"expression":{"arguments":[{"id":2654,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2646,"src":"11855:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},{"arguments":[{"expression":{"id":2657,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2646,"src":"11904:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"id":2658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11908:20:7","memberName":"createFlowByOperator","nodeType":"MemberAccess","referencedDeclaration":5321,"src":"11904:24:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,address,int96,bytes memory) external returns (bytes memory)"}},{"components":[{"id":2659,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2628,"src":"11947:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},{"id":2660,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2630,"src":"11954:6:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2661,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2632,"src":"11962:8:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2662,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2634,"src":"11972:8:7","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},{"arguments":[{"hexValue":"30","id":2665,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11992:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2664,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"11982:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2663,"name":"bytes","nodeType":"ElementaryTypeName","src":"11986:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2666,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11982:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":2667,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11946:49:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,address,int96,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,address,int96,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,address,int96,bytes memory)"}],"expression":{"id":2655,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"11872:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2656,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11876:10:7","memberName":"encodeCall","nodeType":"MemberAccess","src":"11872:14:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2668,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11872:137:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":2669,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2636,"src":"12023:8:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2651,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2643,"src":"11823:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"id":2653,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11828:13:7","memberName":"callAgreement","nodeType":"MemberAccess","referencedDeclaration":7497,"src":"11823:18:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6395_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory) external returns (bytes memory)"}},"id":2670,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11823:218:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2671,"nodeType":"ExpressionStatement","src":"11823:218:7"},{"expression":{"hexValue":"74727565","id":2672,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12058:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":2640,"id":2673,"nodeType":"Return","src":"12051:11:7"}]},"documentation":{"id":2625,"nodeType":"StructuredDocumentation","src":"11247:285:7","text":" @dev Creates flow as an operator with userData\n @param token The token to flow\n @param sender The sender of the flow\n @param receiver The receiver of the flow\n @param flowRate The desired flowRate\n @param userData The user provided data"},"id":2675,"implemented":true,"kind":"function","modifiers":[],"name":"createFlowFrom","nameLocation":"11546:14:7","nodeType":"FunctionDefinition","parameters":{"id":2637,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2628,"mutability":"mutable","name":"token","nameLocation":"11582:5:7","nodeType":"VariableDeclaration","scope":2675,"src":"11570:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":2627,"nodeType":"UserDefinedTypeName","pathNode":{"id":2626,"name":"ISuperToken","nameLocations":["11570:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"11570:11:7"},"referencedDeclaration":6947,"src":"11570:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":2630,"mutability":"mutable","name":"sender","nameLocation":"11605:6:7","nodeType":"VariableDeclaration","scope":2675,"src":"11597:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2629,"name":"address","nodeType":"ElementaryTypeName","src":"11597:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2632,"mutability":"mutable","name":"receiver","nameLocation":"11629:8:7","nodeType":"VariableDeclaration","scope":2675,"src":"11621:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2631,"name":"address","nodeType":"ElementaryTypeName","src":"11621:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2634,"mutability":"mutable","name":"flowRate","nameLocation":"11653:8:7","nodeType":"VariableDeclaration","scope":2675,"src":"11647:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":2633,"name":"int96","nodeType":"ElementaryTypeName","src":"11647:5:7","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"},{"constant":false,"id":2636,"mutability":"mutable","name":"userData","nameLocation":"11684:8:7","nodeType":"VariableDeclaration","scope":2675,"src":"11671:21:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2635,"name":"bytes","nodeType":"ElementaryTypeName","src":"11671:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"11560:138:7"},"returnParameters":{"id":2640,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2639,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2675,"src":"11717:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2638,"name":"bool","nodeType":"ElementaryTypeName","src":"11717:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"11716:6:7"},"scope":5077,"src":"11537:532:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2726,"nodeType":"Block","src":"12478:350:7","statements":[{"assignments":[2692,2695],"declarations":[{"constant":false,"id":2692,"mutability":"mutable","name":"host","nameLocation":"12501:4:7","nodeType":"VariableDeclaration","scope":2726,"src":"12489:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"},"typeName":{"id":2691,"nodeType":"UserDefinedTypeName","pathNode":{"id":2690,"name":"ISuperfluid","nameLocations":["12489:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":7599,"src":"12489:11:7"},"referencedDeclaration":7599,"src":"12489:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":2695,"mutability":"mutable","name":"cfa","nameLocation":"12532:3:7","nodeType":"VariableDeclaration","scope":2726,"src":"12507:28:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":2694,"nodeType":"UserDefinedTypeName","pathNode":{"id":2693,"name":"IConstantFlowAgreementV1","nameLocations":["12507:24:7"],"nodeType":"IdentifierPath","referencedDeclaration":5487,"src":"12507:24:7"},"referencedDeclaration":5487,"src":"12507:24:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"id":2699,"initialValue":{"arguments":[{"id":2697,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2679,"src":"12562:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}],"id":2696,"name":"_getAndCacheHostAndCFA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4827,"src":"12539:22:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$6947_$returns$_t_contract$_ISuperfluid_$7599_$_t_contract$_IConstantFlowAgreementV1_$5487_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"id":2698,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12539:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7599_$_t_contract$_IConstantFlowAgreementV1_$5487_$","typeString":"tuple(contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"12488:80:7"},{"expression":{"arguments":[{"id":2703,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2695,"src":"12610:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},{"arguments":[{"expression":{"id":2706,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2695,"src":"12659:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"id":2707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12663:20:7","memberName":"updateFlowByOperator","nodeType":"MemberAccess","referencedDeclaration":5353,"src":"12659:24:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,address,int96,bytes memory) external returns (bytes memory)"}},{"components":[{"id":2708,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2679,"src":"12702:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},{"id":2709,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2681,"src":"12709:6:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2710,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2683,"src":"12717:8:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2711,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2685,"src":"12727:8:7","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},{"arguments":[{"hexValue":"30","id":2714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12747:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2713,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"12737:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2712,"name":"bytes","nodeType":"ElementaryTypeName","src":"12741:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2715,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12737:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":2716,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12701:49:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,address,int96,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,address,int96,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,address,int96,bytes memory)"}],"expression":{"id":2704,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"12627:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2705,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12631:10:7","memberName":"encodeCall","nodeType":"MemberAccess","src":"12627:14:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2717,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12627:137:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"hexValue":"30","id":2720,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12788:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2719,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"12778:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2718,"name":"bytes","nodeType":"ElementaryTypeName","src":"12782:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2721,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12778:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2700,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2692,"src":"12578:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"id":2702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12583:13:7","memberName":"callAgreement","nodeType":"MemberAccess","referencedDeclaration":7497,"src":"12578:18:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6395_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory) external returns (bytes memory)"}},"id":2722,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12578:222:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2723,"nodeType":"ExpressionStatement","src":"12578:222:7"},{"expression":{"hexValue":"74727565","id":2724,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12817:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":2689,"id":2725,"nodeType":"Return","src":"12810:11:7"}]},"documentation":{"id":2676,"nodeType":"StructuredDocumentation","src":"12076:242:7","text":" @dev Updates flow as an operator without userData\n @param token The token to flow\n @param sender The sender of the flow\n @param receiver The receiver of the flow\n @param flowRate The desired flowRate"},"id":2727,"implemented":true,"kind":"function","modifiers":[],"name":"updateFlowFrom","nameLocation":"12332:14:7","nodeType":"FunctionDefinition","parameters":{"id":2686,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2679,"mutability":"mutable","name":"token","nameLocation":"12368:5:7","nodeType":"VariableDeclaration","scope":2727,"src":"12356:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":2678,"nodeType":"UserDefinedTypeName","pathNode":{"id":2677,"name":"ISuperToken","nameLocations":["12356:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"12356:11:7"},"referencedDeclaration":6947,"src":"12356:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":2681,"mutability":"mutable","name":"sender","nameLocation":"12391:6:7","nodeType":"VariableDeclaration","scope":2727,"src":"12383:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2680,"name":"address","nodeType":"ElementaryTypeName","src":"12383:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2683,"mutability":"mutable","name":"receiver","nameLocation":"12415:8:7","nodeType":"VariableDeclaration","scope":2727,"src":"12407:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2682,"name":"address","nodeType":"ElementaryTypeName","src":"12407:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2685,"mutability":"mutable","name":"flowRate","nameLocation":"12439:8:7","nodeType":"VariableDeclaration","scope":2727,"src":"12433:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":2684,"name":"int96","nodeType":"ElementaryTypeName","src":"12433:5:7","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"12346:107:7"},"returnParameters":{"id":2689,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2688,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2727,"src":"12472:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2687,"name":"bool","nodeType":"ElementaryTypeName","src":"12472:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"12471:6:7"},"scope":5077,"src":"12323:505:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2777,"nodeType":"Block","src":"13310:346:7","statements":[{"assignments":[2746,2749],"declarations":[{"constant":false,"id":2746,"mutability":"mutable","name":"host","nameLocation":"13333:4:7","nodeType":"VariableDeclaration","scope":2777,"src":"13321:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"},"typeName":{"id":2745,"nodeType":"UserDefinedTypeName","pathNode":{"id":2744,"name":"ISuperfluid","nameLocations":["13321:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":7599,"src":"13321:11:7"},"referencedDeclaration":7599,"src":"13321:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":2749,"mutability":"mutable","name":"cfa","nameLocation":"13364:3:7","nodeType":"VariableDeclaration","scope":2777,"src":"13339:28:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":2748,"nodeType":"UserDefinedTypeName","pathNode":{"id":2747,"name":"IConstantFlowAgreementV1","nameLocations":["13339:24:7"],"nodeType":"IdentifierPath","referencedDeclaration":5487,"src":"13339:24:7"},"referencedDeclaration":5487,"src":"13339:24:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"id":2753,"initialValue":{"arguments":[{"id":2751,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2731,"src":"13394:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}],"id":2750,"name":"_getAndCacheHostAndCFA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4827,"src":"13371:22:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$6947_$returns$_t_contract$_ISuperfluid_$7599_$_t_contract$_IConstantFlowAgreementV1_$5487_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"id":2752,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13371:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7599_$_t_contract$_IConstantFlowAgreementV1_$5487_$","typeString":"tuple(contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"13320:80:7"},{"expression":{"arguments":[{"id":2757,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2749,"src":"13442:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},{"arguments":[{"expression":{"id":2760,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2749,"src":"13491:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"id":2761,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13495:20:7","memberName":"updateFlowByOperator","nodeType":"MemberAccess","referencedDeclaration":5353,"src":"13491:24:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,address,int96,bytes memory) external returns (bytes memory)"}},{"components":[{"id":2762,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2731,"src":"13534:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},{"id":2763,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2733,"src":"13541:6:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2764,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2735,"src":"13549:8:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2765,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2737,"src":"13559:8:7","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},{"arguments":[{"hexValue":"30","id":2768,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13579:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2767,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"13569:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2766,"name":"bytes","nodeType":"ElementaryTypeName","src":"13573:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2769,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13569:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":2770,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13533:49:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,address,int96,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,address,int96,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,address,int96,bytes memory)"}],"expression":{"id":2758,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"13459:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2759,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13463:10:7","memberName":"encodeCall","nodeType":"MemberAccess","src":"13459:14:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2771,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13459:137:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":2772,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2739,"src":"13610:8:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2754,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2746,"src":"13410:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"id":2756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13415:13:7","memberName":"callAgreement","nodeType":"MemberAccess","referencedDeclaration":7497,"src":"13410:18:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6395_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory) external returns (bytes memory)"}},"id":2773,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13410:218:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2774,"nodeType":"ExpressionStatement","src":"13410:218:7"},{"expression":{"hexValue":"74727565","id":2775,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"13645:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":2743,"id":2776,"nodeType":"Return","src":"13638:11:7"}]},"documentation":{"id":2728,"nodeType":"StructuredDocumentation","src":"12834:285:7","text":" @dev Updates flow as an operator with userData\n @param token The token to flow\n @param sender The sender of the flow\n @param receiver The receiver of the flow\n @param flowRate The desired flowRate\n @param userData The user provided data"},"id":2778,"implemented":true,"kind":"function","modifiers":[],"name":"updateFlowFrom","nameLocation":"13133:14:7","nodeType":"FunctionDefinition","parameters":{"id":2740,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2731,"mutability":"mutable","name":"token","nameLocation":"13169:5:7","nodeType":"VariableDeclaration","scope":2778,"src":"13157:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":2730,"nodeType":"UserDefinedTypeName","pathNode":{"id":2729,"name":"ISuperToken","nameLocations":["13157:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"13157:11:7"},"referencedDeclaration":6947,"src":"13157:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":2733,"mutability":"mutable","name":"sender","nameLocation":"13192:6:7","nodeType":"VariableDeclaration","scope":2778,"src":"13184:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2732,"name":"address","nodeType":"ElementaryTypeName","src":"13184:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2735,"mutability":"mutable","name":"receiver","nameLocation":"13216:8:7","nodeType":"VariableDeclaration","scope":2778,"src":"13208:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2734,"name":"address","nodeType":"ElementaryTypeName","src":"13208:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2737,"mutability":"mutable","name":"flowRate","nameLocation":"13240:8:7","nodeType":"VariableDeclaration","scope":2778,"src":"13234:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":2736,"name":"int96","nodeType":"ElementaryTypeName","src":"13234:5:7","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"},{"constant":false,"id":2739,"mutability":"mutable","name":"userData","nameLocation":"13271:8:7","nodeType":"VariableDeclaration","scope":2778,"src":"13258:21:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2738,"name":"bytes","nodeType":"ElementaryTypeName","src":"13258:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"13147:138:7"},"returnParameters":{"id":2743,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2742,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2778,"src":"13304:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2741,"name":"bool","nodeType":"ElementaryTypeName","src":"13304:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"13303:6:7"},"scope":5077,"src":"13124:532:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2826,"nodeType":"Block","src":"13997:340:7","statements":[{"assignments":[2793,2796],"declarations":[{"constant":false,"id":2793,"mutability":"mutable","name":"host","nameLocation":"14020:4:7","nodeType":"VariableDeclaration","scope":2826,"src":"14008:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"},"typeName":{"id":2792,"nodeType":"UserDefinedTypeName","pathNode":{"id":2791,"name":"ISuperfluid","nameLocations":["14008:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":7599,"src":"14008:11:7"},"referencedDeclaration":7599,"src":"14008:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":2796,"mutability":"mutable","name":"cfa","nameLocation":"14051:3:7","nodeType":"VariableDeclaration","scope":2826,"src":"14026:28:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":2795,"nodeType":"UserDefinedTypeName","pathNode":{"id":2794,"name":"IConstantFlowAgreementV1","nameLocations":["14026:24:7"],"nodeType":"IdentifierPath","referencedDeclaration":5487,"src":"14026:24:7"},"referencedDeclaration":5487,"src":"14026:24:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"id":2800,"initialValue":{"arguments":[{"id":2798,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2782,"src":"14081:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}],"id":2797,"name":"_getAndCacheHostAndCFA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4827,"src":"14058:22:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$6947_$returns$_t_contract$_ISuperfluid_$7599_$_t_contract$_IConstantFlowAgreementV1_$5487_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"id":2799,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14058:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7599_$_t_contract$_IConstantFlowAgreementV1_$5487_$","typeString":"tuple(contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"14007:80:7"},{"expression":{"arguments":[{"id":2804,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2796,"src":"14129:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},{"arguments":[{"expression":{"id":2807,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2796,"src":"14178:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"id":2808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14182:20:7","memberName":"deleteFlowByOperator","nodeType":"MemberAccess","referencedDeclaration":5447,"src":"14178:24:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,address,bytes memory) external returns (bytes memory)"}},{"components":[{"id":2809,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2782,"src":"14221:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},{"id":2810,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2784,"src":"14228:6:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2811,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2786,"src":"14236:8:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":2814,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14256:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2813,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"14246:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2812,"name":"bytes","nodeType":"ElementaryTypeName","src":"14250:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2815,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14246:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":2816,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14220:39:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,address,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,address,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,address,bytes memory)"}],"expression":{"id":2805,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"14146:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2806,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14150:10:7","memberName":"encodeCall","nodeType":"MemberAccess","src":"14146:14:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2817,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14146:127:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"hexValue":"30","id":2820,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14297:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2819,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"14287:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2818,"name":"bytes","nodeType":"ElementaryTypeName","src":"14291:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2821,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14287:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2801,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2793,"src":"14097:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"id":2803,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14102:13:7","memberName":"callAgreement","nodeType":"MemberAccess","referencedDeclaration":7497,"src":"14097:18:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6395_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory) external returns (bytes memory)"}},"id":2822,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14097:212:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2823,"nodeType":"ExpressionStatement","src":"14097:212:7"},{"expression":{"hexValue":"74727565","id":2824,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"14326:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":2790,"id":2825,"nodeType":"Return","src":"14319:11:7"}]},"documentation":{"id":2779,"nodeType":"StructuredDocumentation","src":"13663:198:7","text":" @dev Deletes flow as an operator without userData\n @param token The token to flow\n @param sender The sender of the flow\n @param receiver The receiver of the flow"},"id":2827,"implemented":true,"kind":"function","modifiers":[],"name":"deleteFlowFrom","nameLocation":"13875:14:7","nodeType":"FunctionDefinition","parameters":{"id":2787,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2782,"mutability":"mutable","name":"token","nameLocation":"13911:5:7","nodeType":"VariableDeclaration","scope":2827,"src":"13899:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":2781,"nodeType":"UserDefinedTypeName","pathNode":{"id":2780,"name":"ISuperToken","nameLocations":["13899:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"13899:11:7"},"referencedDeclaration":6947,"src":"13899:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":2784,"mutability":"mutable","name":"sender","nameLocation":"13934:6:7","nodeType":"VariableDeclaration","scope":2827,"src":"13926:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2783,"name":"address","nodeType":"ElementaryTypeName","src":"13926:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2786,"mutability":"mutable","name":"receiver","nameLocation":"13958:8:7","nodeType":"VariableDeclaration","scope":2827,"src":"13950:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2785,"name":"address","nodeType":"ElementaryTypeName","src":"13950:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"13889:83:7"},"returnParameters":{"id":2790,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2789,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2827,"src":"13991:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2788,"name":"bool","nodeType":"ElementaryTypeName","src":"13991:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"13990:6:7"},"scope":5077,"src":"13866:471:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2874,"nodeType":"Block","src":"14751:336:7","statements":[{"assignments":[2844,2847],"declarations":[{"constant":false,"id":2844,"mutability":"mutable","name":"host","nameLocation":"14774:4:7","nodeType":"VariableDeclaration","scope":2874,"src":"14762:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"},"typeName":{"id":2843,"nodeType":"UserDefinedTypeName","pathNode":{"id":2842,"name":"ISuperfluid","nameLocations":["14762:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":7599,"src":"14762:11:7"},"referencedDeclaration":7599,"src":"14762:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":2847,"mutability":"mutable","name":"cfa","nameLocation":"14805:3:7","nodeType":"VariableDeclaration","scope":2874,"src":"14780:28:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":2846,"nodeType":"UserDefinedTypeName","pathNode":{"id":2845,"name":"IConstantFlowAgreementV1","nameLocations":["14780:24:7"],"nodeType":"IdentifierPath","referencedDeclaration":5487,"src":"14780:24:7"},"referencedDeclaration":5487,"src":"14780:24:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"id":2851,"initialValue":{"arguments":[{"id":2849,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2831,"src":"14835:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}],"id":2848,"name":"_getAndCacheHostAndCFA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4827,"src":"14812:22:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$6947_$returns$_t_contract$_ISuperfluid_$7599_$_t_contract$_IConstantFlowAgreementV1_$5487_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"id":2850,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14812:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7599_$_t_contract$_IConstantFlowAgreementV1_$5487_$","typeString":"tuple(contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"14761:80:7"},{"expression":{"arguments":[{"id":2855,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2847,"src":"14883:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},{"arguments":[{"expression":{"id":2858,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2847,"src":"14932:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"id":2859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14936:20:7","memberName":"deleteFlowByOperator","nodeType":"MemberAccess","referencedDeclaration":5447,"src":"14932:24:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,address,bytes memory) external returns (bytes memory)"}},{"components":[{"id":2860,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2831,"src":"14975:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},{"id":2861,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2833,"src":"14982:6:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2862,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2835,"src":"14990:8:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":2865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15010:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2864,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"15000:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2863,"name":"bytes","nodeType":"ElementaryTypeName","src":"15004:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2866,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15000:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":2867,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14974:39:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,address,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,address,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,address,bytes memory)"}],"expression":{"id":2856,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"14900:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2857,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14904:10:7","memberName":"encodeCall","nodeType":"MemberAccess","src":"14900:14:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2868,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14900:127:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":2869,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2837,"src":"15041:8:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2852,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2844,"src":"14851:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"id":2854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14856:13:7","memberName":"callAgreement","nodeType":"MemberAccess","referencedDeclaration":7497,"src":"14851:18:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6395_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory) external returns (bytes memory)"}},"id":2870,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14851:208:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2871,"nodeType":"ExpressionStatement","src":"14851:208:7"},{"expression":{"hexValue":"74727565","id":2872,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"15076:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":2841,"id":2873,"nodeType":"Return","src":"15069:11:7"}]},"documentation":{"id":2828,"nodeType":"StructuredDocumentation","src":"14343:241:7","text":" @dev Deletes flow as an operator with userData\n @param token The token to flow\n @param sender The sender of the flow\n @param receiver The receiver of the flow\n @param userData The user provided data"},"id":2875,"implemented":true,"kind":"function","modifiers":[],"name":"deleteFlowFrom","nameLocation":"14598:14:7","nodeType":"FunctionDefinition","parameters":{"id":2838,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2831,"mutability":"mutable","name":"token","nameLocation":"14634:5:7","nodeType":"VariableDeclaration","scope":2875,"src":"14622:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":2830,"nodeType":"UserDefinedTypeName","pathNode":{"id":2829,"name":"ISuperToken","nameLocations":["14622:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"14622:11:7"},"referencedDeclaration":6947,"src":"14622:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":2833,"mutability":"mutable","name":"sender","nameLocation":"14657:6:7","nodeType":"VariableDeclaration","scope":2875,"src":"14649:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2832,"name":"address","nodeType":"ElementaryTypeName","src":"14649:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2835,"mutability":"mutable","name":"receiver","nameLocation":"14681:8:7","nodeType":"VariableDeclaration","scope":2875,"src":"14673:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2834,"name":"address","nodeType":"ElementaryTypeName","src":"14673:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2837,"mutability":"mutable","name":"userData","nameLocation":"14712:8:7","nodeType":"VariableDeclaration","scope":2875,"src":"14699:21:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2836,"name":"bytes","nodeType":"ElementaryTypeName","src":"14699:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"14612:114:7"},"returnParameters":{"id":2841,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2840,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2875,"src":"14745:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2839,"name":"bool","nodeType":"ElementaryTypeName","src":"14745:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"14744:6:7"},"scope":5077,"src":"14589:498:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2923,"nodeType":"Block","src":"15611:457:7","statements":[{"assignments":[2892,2895],"declarations":[{"constant":false,"id":2892,"mutability":"mutable","name":"host","nameLocation":"15634:4:7","nodeType":"VariableDeclaration","scope":2923,"src":"15622:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"},"typeName":{"id":2891,"nodeType":"UserDefinedTypeName","pathNode":{"id":2890,"name":"ISuperfluid","nameLocations":["15622:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":7599,"src":"15622:11:7"},"referencedDeclaration":7599,"src":"15622:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":2895,"mutability":"mutable","name":"cfa","nameLocation":"15665:3:7","nodeType":"VariableDeclaration","scope":2923,"src":"15640:28:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":2894,"nodeType":"UserDefinedTypeName","pathNode":{"id":2893,"name":"IConstantFlowAgreementV1","nameLocations":["15640:24:7"],"nodeType":"IdentifierPath","referencedDeclaration":5487,"src":"15640:24:7"},"referencedDeclaration":5487,"src":"15640:24:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"id":2899,"initialValue":{"arguments":[{"id":2897,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2879,"src":"15695:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}],"id":2896,"name":"_getAndCacheHostAndCFA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4827,"src":"15672:22:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$6947_$returns$_t_contract$_ISuperfluid_$7599_$_t_contract$_IConstantFlowAgreementV1_$5487_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"id":2898,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15672:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7599_$_t_contract$_IConstantFlowAgreementV1_$5487_$","typeString":"tuple(contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"15621:80:7"},{"expression":{"id":2921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":2900,"name":"newCtx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2888,"src":"15712:6:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},null],"id":2901,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"15711:10:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$__$","typeString":"tuple(bytes memory,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2904,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2895,"src":"15767:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},{"arguments":[{"expression":{"id":2907,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2895,"src":"15816:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"id":2908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15820:10:7","memberName":"createFlow","nodeType":"MemberAccess","referencedDeclaration":5304,"src":"15816:14:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,int96,bytes memory) external returns (bytes memory)"}},{"components":[{"id":2909,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2879,"src":"15870:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},{"id":2910,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2881,"src":"15897:8:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2911,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2883,"src":"15927:8:7","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},{"arguments":[{"hexValue":"30","id":2914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15967:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2913,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"15957:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2912,"name":"bytes","nodeType":"ElementaryTypeName","src":"15961:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2915,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15957:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":2916,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"15848:154:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,int96,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,int96,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,int96,bytes memory)"}],"expression":{"id":2905,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"15784:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2906,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15788:10:7","memberName":"encodeCall","nodeType":"MemberAccess","src":"15784:14:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2917,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15784:232:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"3078","id":2918,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16030:4:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"},{"id":2919,"name":"ctx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2885,"src":"16048:3:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2902,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2892,"src":"15724:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"id":2903,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15729:24:7","memberName":"callAgreementWithContext","nodeType":"MemberAccess","referencedDeclaration":7548,"src":"15724:29:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6395_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory,bytes memory) external returns (bytes memory,bytes memory)"}},"id":2920,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15724:337:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(bytes memory,bytes memory)"}},"src":"15711:350:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2922,"nodeType":"ExpressionStatement","src":"15711:350:7"}]},"documentation":{"id":2876,"nodeType":"StructuredDocumentation","src":"15167:264:7","text":" @dev Create flow with context and userData\n @param token The token to flow\n @param receiver The receiver of the flow\n @param flowRate The desired flowRate\n @param ctx Context bytes (see ISuperfluid.sol for Context struct)"},"id":2924,"implemented":true,"kind":"function","modifiers":[],"name":"createFlowWithCtx","nameLocation":"15445:17:7","nodeType":"FunctionDefinition","parameters":{"id":2886,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2879,"mutability":"mutable","name":"token","nameLocation":"15484:5:7","nodeType":"VariableDeclaration","scope":2924,"src":"15472:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":2878,"nodeType":"UserDefinedTypeName","pathNode":{"id":2877,"name":"ISuperToken","nameLocations":["15472:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"15472:11:7"},"referencedDeclaration":6947,"src":"15472:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":2881,"mutability":"mutable","name":"receiver","nameLocation":"15507:8:7","nodeType":"VariableDeclaration","scope":2924,"src":"15499:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2880,"name":"address","nodeType":"ElementaryTypeName","src":"15499:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2883,"mutability":"mutable","name":"flowRate","nameLocation":"15531:8:7","nodeType":"VariableDeclaration","scope":2924,"src":"15525:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":2882,"name":"int96","nodeType":"ElementaryTypeName","src":"15525:5:7","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"},{"constant":false,"id":2885,"mutability":"mutable","name":"ctx","nameLocation":"15562:3:7","nodeType":"VariableDeclaration","scope":2924,"src":"15549:16:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2884,"name":"bytes","nodeType":"ElementaryTypeName","src":"15549:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"15462:109:7"},"returnParameters":{"id":2889,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2888,"mutability":"mutable","name":"newCtx","nameLocation":"15603:6:7","nodeType":"VariableDeclaration","scope":2924,"src":"15590:19:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2887,"name":"bytes","nodeType":"ElementaryTypeName","src":"15590:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"15589:21:7"},"scope":5077,"src":"15436:632:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2975,"nodeType":"Block","src":"16589:495:7","statements":[{"assignments":[2943,2946],"declarations":[{"constant":false,"id":2943,"mutability":"mutable","name":"host","nameLocation":"16612:4:7","nodeType":"VariableDeclaration","scope":2975,"src":"16600:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"},"typeName":{"id":2942,"nodeType":"UserDefinedTypeName","pathNode":{"id":2941,"name":"ISuperfluid","nameLocations":["16600:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":7599,"src":"16600:11:7"},"referencedDeclaration":7599,"src":"16600:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":2946,"mutability":"mutable","name":"cfa","nameLocation":"16643:3:7","nodeType":"VariableDeclaration","scope":2975,"src":"16618:28:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":2945,"nodeType":"UserDefinedTypeName","pathNode":{"id":2944,"name":"IConstantFlowAgreementV1","nameLocations":["16618:24:7"],"nodeType":"IdentifierPath","referencedDeclaration":5487,"src":"16618:24:7"},"referencedDeclaration":5487,"src":"16618:24:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"id":2950,"initialValue":{"arguments":[{"id":2948,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2928,"src":"16673:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}],"id":2947,"name":"_getAndCacheHostAndCFA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4827,"src":"16650:22:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$6947_$returns$_t_contract$_ISuperfluid_$7599_$_t_contract$_IConstantFlowAgreementV1_$5487_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"id":2949,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16650:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7599_$_t_contract$_IConstantFlowAgreementV1_$5487_$","typeString":"tuple(contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"16599:80:7"},{"expression":{"id":2973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":2951,"name":"newCtx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2939,"src":"16690:6:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},null],"id":2952,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"16689:10:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$__$","typeString":"tuple(bytes memory,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2955,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2946,"src":"16745:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},{"arguments":[{"expression":{"id":2958,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2946,"src":"16794:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"id":2959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16798:20:7","memberName":"createFlowByOperator","nodeType":"MemberAccess","referencedDeclaration":5321,"src":"16794:24:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,address,int96,bytes memory) external returns (bytes memory)"}},{"components":[{"id":2960,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2928,"src":"16858:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},{"id":2961,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2930,"src":"16885:6:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2962,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2932,"src":"16913:8:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2963,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2934,"src":"16943:8:7","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},{"arguments":[{"hexValue":"30","id":2966,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16983:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2965,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"16973:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2964,"name":"bytes","nodeType":"ElementaryTypeName","src":"16977:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2967,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16973:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":2968,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16836:182:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,address,int96,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,address,int96,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,address,int96,bytes memory)"}],"expression":{"id":2956,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"16762:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2957,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16766:10:7","memberName":"encodeCall","nodeType":"MemberAccess","src":"16762:14:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16762:270:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"3078","id":2970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17046:4:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"},{"id":2971,"name":"ctx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2936,"src":"17064:3:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2953,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2943,"src":"16702:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"id":2954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16707:24:7","memberName":"callAgreementWithContext","nodeType":"MemberAccess","referencedDeclaration":7548,"src":"16702:29:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6395_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory,bytes memory) external returns (bytes memory,bytes memory)"}},"id":2972,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16702:375:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(bytes memory,bytes memory)"}},"src":"16689:388:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2974,"nodeType":"ExpressionStatement","src":"16689:388:7"}]},"documentation":{"id":2925,"nodeType":"StructuredDocumentation","src":"16074:307:7","text":" @dev Create flow by operator with context\n @param token The token to flow\n @param sender The sender of the flow\n @param receiver The receiver of the flow\n @param flowRate The desired flowRate\n @param ctx Context bytes (see ISuperfluid.sol for Context struct)"},"id":2976,"implemented":true,"kind":"function","modifiers":[],"name":"createFlowFromWithCtx","nameLocation":"16395:21:7","nodeType":"FunctionDefinition","parameters":{"id":2937,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2928,"mutability":"mutable","name":"token","nameLocation":"16438:5:7","nodeType":"VariableDeclaration","scope":2976,"src":"16426:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":2927,"nodeType":"UserDefinedTypeName","pathNode":{"id":2926,"name":"ISuperToken","nameLocations":["16426:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"16426:11:7"},"referencedDeclaration":6947,"src":"16426:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":2930,"mutability":"mutable","name":"sender","nameLocation":"16461:6:7","nodeType":"VariableDeclaration","scope":2976,"src":"16453:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2929,"name":"address","nodeType":"ElementaryTypeName","src":"16453:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2932,"mutability":"mutable","name":"receiver","nameLocation":"16485:8:7","nodeType":"VariableDeclaration","scope":2976,"src":"16477:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2931,"name":"address","nodeType":"ElementaryTypeName","src":"16477:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2934,"mutability":"mutable","name":"flowRate","nameLocation":"16509:8:7","nodeType":"VariableDeclaration","scope":2976,"src":"16503:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":2933,"name":"int96","nodeType":"ElementaryTypeName","src":"16503:5:7","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"},{"constant":false,"id":2936,"mutability":"mutable","name":"ctx","nameLocation":"16540:3:7","nodeType":"VariableDeclaration","scope":2976,"src":"16527:16:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2935,"name":"bytes","nodeType":"ElementaryTypeName","src":"16527:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"16416:133:7"},"returnParameters":{"id":2940,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2939,"mutability":"mutable","name":"newCtx","nameLocation":"16581:6:7","nodeType":"VariableDeclaration","scope":2976,"src":"16568:19:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2938,"name":"bytes","nodeType":"ElementaryTypeName","src":"16568:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"16567:21:7"},"scope":5077,"src":"16386:698:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3024,"nodeType":"Block","src":"17521:457:7","statements":[{"assignments":[2993,2996],"declarations":[{"constant":false,"id":2993,"mutability":"mutable","name":"host","nameLocation":"17544:4:7","nodeType":"VariableDeclaration","scope":3024,"src":"17532:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"},"typeName":{"id":2992,"nodeType":"UserDefinedTypeName","pathNode":{"id":2991,"name":"ISuperfluid","nameLocations":["17532:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":7599,"src":"17532:11:7"},"referencedDeclaration":7599,"src":"17532:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":2996,"mutability":"mutable","name":"cfa","nameLocation":"17575:3:7","nodeType":"VariableDeclaration","scope":3024,"src":"17550:28:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":2995,"nodeType":"UserDefinedTypeName","pathNode":{"id":2994,"name":"IConstantFlowAgreementV1","nameLocations":["17550:24:7"],"nodeType":"IdentifierPath","referencedDeclaration":5487,"src":"17550:24:7"},"referencedDeclaration":5487,"src":"17550:24:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"id":3000,"initialValue":{"arguments":[{"id":2998,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2980,"src":"17605:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}],"id":2997,"name":"_getAndCacheHostAndCFA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4827,"src":"17582:22:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$6947_$returns$_t_contract$_ISuperfluid_$7599_$_t_contract$_IConstantFlowAgreementV1_$5487_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"id":2999,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17582:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7599_$_t_contract$_IConstantFlowAgreementV1_$5487_$","typeString":"tuple(contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"17531:80:7"},{"expression":{"id":3022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":3001,"name":"newCtx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2989,"src":"17622:6:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},null],"id":3002,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"17621:10:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$__$","typeString":"tuple(bytes memory,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3005,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2996,"src":"17677:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},{"arguments":[{"expression":{"id":3008,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2996,"src":"17726:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"id":3009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17730:10:7","memberName":"updateFlow","nodeType":"MemberAccess","referencedDeclaration":5336,"src":"17726:14:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,int96,bytes memory) external returns (bytes memory)"}},{"components":[{"id":3010,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2980,"src":"17780:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},{"id":3011,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2982,"src":"17807:8:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3012,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2984,"src":"17837:8:7","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},{"arguments":[{"hexValue":"30","id":3015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17877:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3014,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"17867:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":3013,"name":"bytes","nodeType":"ElementaryTypeName","src":"17871:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":3016,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17867:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":3017,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17758:154:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,int96,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,int96,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,int96,bytes memory)"}],"expression":{"id":3006,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"17694:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3007,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"17698:10:7","memberName":"encodeCall","nodeType":"MemberAccess","src":"17694:14:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3018,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17694:232:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"3078","id":3019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17940:4:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"},{"id":3020,"name":"ctx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2986,"src":"17958:3:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":3003,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2993,"src":"17634:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"id":3004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17639:24:7","memberName":"callAgreementWithContext","nodeType":"MemberAccess","referencedDeclaration":7548,"src":"17634:29:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6395_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory,bytes memory) external returns (bytes memory,bytes memory)"}},"id":3021,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17634:337:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(bytes memory,bytes memory)"}},"src":"17621:350:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3023,"nodeType":"ExpressionStatement","src":"17621:350:7"}]},"documentation":{"id":2977,"nodeType":"StructuredDocumentation","src":"17090:251:7","text":" @dev Update flow with context\n @param token The token to flow\n @param receiver The receiver of the flow\n @param flowRate The desired flowRate\n @param ctx Context bytes (see ISuperfluid.sol for Context struct)"},"id":3025,"implemented":true,"kind":"function","modifiers":[],"name":"updateFlowWithCtx","nameLocation":"17355:17:7","nodeType":"FunctionDefinition","parameters":{"id":2987,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2980,"mutability":"mutable","name":"token","nameLocation":"17394:5:7","nodeType":"VariableDeclaration","scope":3025,"src":"17382:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":2979,"nodeType":"UserDefinedTypeName","pathNode":{"id":2978,"name":"ISuperToken","nameLocations":["17382:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"17382:11:7"},"referencedDeclaration":6947,"src":"17382:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":2982,"mutability":"mutable","name":"receiver","nameLocation":"17417:8:7","nodeType":"VariableDeclaration","scope":3025,"src":"17409:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2981,"name":"address","nodeType":"ElementaryTypeName","src":"17409:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2984,"mutability":"mutable","name":"flowRate","nameLocation":"17441:8:7","nodeType":"VariableDeclaration","scope":3025,"src":"17435:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":2983,"name":"int96","nodeType":"ElementaryTypeName","src":"17435:5:7","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"},{"constant":false,"id":2986,"mutability":"mutable","name":"ctx","nameLocation":"17472:3:7","nodeType":"VariableDeclaration","scope":3025,"src":"17459:16:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2985,"name":"bytes","nodeType":"ElementaryTypeName","src":"17459:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"17372:109:7"},"returnParameters":{"id":2990,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2989,"mutability":"mutable","name":"newCtx","nameLocation":"17513:6:7","nodeType":"VariableDeclaration","scope":3025,"src":"17500:19:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2988,"name":"bytes","nodeType":"ElementaryTypeName","src":"17500:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"17499:21:7"},"scope":5077,"src":"17346:632:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3076,"nodeType":"Block","src":"18501:495:7","statements":[{"assignments":[3044,3047],"declarations":[{"constant":false,"id":3044,"mutability":"mutable","name":"host","nameLocation":"18524:4:7","nodeType":"VariableDeclaration","scope":3076,"src":"18512:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"},"typeName":{"id":3043,"nodeType":"UserDefinedTypeName","pathNode":{"id":3042,"name":"ISuperfluid","nameLocations":["18512:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":7599,"src":"18512:11:7"},"referencedDeclaration":7599,"src":"18512:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":3047,"mutability":"mutable","name":"cfa","nameLocation":"18555:3:7","nodeType":"VariableDeclaration","scope":3076,"src":"18530:28:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":3046,"nodeType":"UserDefinedTypeName","pathNode":{"id":3045,"name":"IConstantFlowAgreementV1","nameLocations":["18530:24:7"],"nodeType":"IdentifierPath","referencedDeclaration":5487,"src":"18530:24:7"},"referencedDeclaration":5487,"src":"18530:24:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"id":3051,"initialValue":{"arguments":[{"id":3049,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3029,"src":"18585:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}],"id":3048,"name":"_getAndCacheHostAndCFA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4827,"src":"18562:22:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$6947_$returns$_t_contract$_ISuperfluid_$7599_$_t_contract$_IConstantFlowAgreementV1_$5487_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"id":3050,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18562:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7599_$_t_contract$_IConstantFlowAgreementV1_$5487_$","typeString":"tuple(contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"18511:80:7"},{"expression":{"id":3074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":3052,"name":"newCtx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3040,"src":"18602:6:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},null],"id":3053,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"18601:10:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$__$","typeString":"tuple(bytes memory,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3056,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3047,"src":"18657:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},{"arguments":[{"expression":{"id":3059,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3047,"src":"18706:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"id":3060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18710:20:7","memberName":"updateFlowByOperator","nodeType":"MemberAccess","referencedDeclaration":5353,"src":"18706:24:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,address,int96,bytes memory) external returns (bytes memory)"}},{"components":[{"id":3061,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3029,"src":"18770:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},{"id":3062,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3031,"src":"18797:6:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3063,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3033,"src":"18825:8:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3064,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3035,"src":"18855:8:7","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},{"arguments":[{"hexValue":"30","id":3067,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18895:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3066,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"18885:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":3065,"name":"bytes","nodeType":"ElementaryTypeName","src":"18889:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":3068,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18885:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":3069,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18748:182:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,address,int96,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,address,int96,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,address,int96,bytes memory)"}],"expression":{"id":3057,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"18674:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3058,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"18678:10:7","memberName":"encodeCall","nodeType":"MemberAccess","src":"18674:14:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3070,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18674:270:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"3078","id":3071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18958:4:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"},{"id":3072,"name":"ctx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3037,"src":"18976:3:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":3054,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3044,"src":"18614:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"id":3055,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18619:24:7","memberName":"callAgreementWithContext","nodeType":"MemberAccess","referencedDeclaration":7548,"src":"18614:29:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6395_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory,bytes memory) external returns (bytes memory,bytes memory)"}},"id":3073,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18614:375:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(bytes memory,bytes memory)"}},"src":"18601:388:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3075,"nodeType":"ExpressionStatement","src":"18601:388:7"}]},"documentation":{"id":3026,"nodeType":"StructuredDocumentation","src":"17984:309:7","text":" @dev Update flow by operator with context\n @param token The token to flow\n @param sender The receiver of the flow\n @param receiver The receiver of the flow\n @param flowRate The desired flowRate\n @param ctx Context bytes (see ISuperfluid.sol for Context struct)"},"id":3077,"implemented":true,"kind":"function","modifiers":[],"name":"updateFlowFromWithCtx","nameLocation":"18307:21:7","nodeType":"FunctionDefinition","parameters":{"id":3038,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3029,"mutability":"mutable","name":"token","nameLocation":"18350:5:7","nodeType":"VariableDeclaration","scope":3077,"src":"18338:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":3028,"nodeType":"UserDefinedTypeName","pathNode":{"id":3027,"name":"ISuperToken","nameLocations":["18338:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"18338:11:7"},"referencedDeclaration":6947,"src":"18338:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":3031,"mutability":"mutable","name":"sender","nameLocation":"18373:6:7","nodeType":"VariableDeclaration","scope":3077,"src":"18365:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3030,"name":"address","nodeType":"ElementaryTypeName","src":"18365:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3033,"mutability":"mutable","name":"receiver","nameLocation":"18397:8:7","nodeType":"VariableDeclaration","scope":3077,"src":"18389:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3032,"name":"address","nodeType":"ElementaryTypeName","src":"18389:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3035,"mutability":"mutable","name":"flowRate","nameLocation":"18421:8:7","nodeType":"VariableDeclaration","scope":3077,"src":"18415:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":3034,"name":"int96","nodeType":"ElementaryTypeName","src":"18415:5:7","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"},{"constant":false,"id":3037,"mutability":"mutable","name":"ctx","nameLocation":"18452:3:7","nodeType":"VariableDeclaration","scope":3077,"src":"18439:16:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3036,"name":"bytes","nodeType":"ElementaryTypeName","src":"18439:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"18328:133:7"},"returnParameters":{"id":3041,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3040,"mutability":"mutable","name":"newCtx","nameLocation":"18493:6:7","nodeType":"VariableDeclaration","scope":3077,"src":"18480:19:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3039,"name":"bytes","nodeType":"ElementaryTypeName","src":"18480:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"18479:21:7"},"scope":5077,"src":"18298:698:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3125,"nodeType":"Block","src":"19433:455:7","statements":[{"assignments":[3094,3097],"declarations":[{"constant":false,"id":3094,"mutability":"mutable","name":"host","nameLocation":"19456:4:7","nodeType":"VariableDeclaration","scope":3125,"src":"19444:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"},"typeName":{"id":3093,"nodeType":"UserDefinedTypeName","pathNode":{"id":3092,"name":"ISuperfluid","nameLocations":["19444:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":7599,"src":"19444:11:7"},"referencedDeclaration":7599,"src":"19444:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":3097,"mutability":"mutable","name":"cfa","nameLocation":"19487:3:7","nodeType":"VariableDeclaration","scope":3125,"src":"19462:28:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":3096,"nodeType":"UserDefinedTypeName","pathNode":{"id":3095,"name":"IConstantFlowAgreementV1","nameLocations":["19462:24:7"],"nodeType":"IdentifierPath","referencedDeclaration":5487,"src":"19462:24:7"},"referencedDeclaration":5487,"src":"19462:24:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"id":3101,"initialValue":{"arguments":[{"id":3099,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3081,"src":"19517:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}],"id":3098,"name":"_getAndCacheHostAndCFA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4827,"src":"19494:22:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$6947_$returns$_t_contract$_ISuperfluid_$7599_$_t_contract$_IConstantFlowAgreementV1_$5487_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"id":3100,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19494:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7599_$_t_contract$_IConstantFlowAgreementV1_$5487_$","typeString":"tuple(contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"19443:80:7"},{"expression":{"id":3123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":3102,"name":"newCtx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3090,"src":"19534:6:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},null],"id":3103,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"19533:10:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$__$","typeString":"tuple(bytes memory,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3106,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3097,"src":"19589:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},{"arguments":[{"expression":{"id":3109,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3097,"src":"19638:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"id":3110,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19642:10:7","memberName":"deleteFlow","nodeType":"MemberAccess","referencedDeclaration":5432,"src":"19638:14:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,address,bytes memory) external returns (bytes memory)"}},{"components":[{"id":3111,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3081,"src":"19692:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},{"id":3112,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3083,"src":"19719:6:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3113,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3085,"src":"19747:8:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":3116,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19787:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3115,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"19777:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":3114,"name":"bytes","nodeType":"ElementaryTypeName","src":"19781:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":3117,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19777:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":3118,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19670:152:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,address,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,address,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,address,bytes memory)"}],"expression":{"id":3107,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"19606:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3108,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"19610:10:7","memberName":"encodeCall","nodeType":"MemberAccess","src":"19606:14:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3119,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19606:230:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"3078","id":3120,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"19850:4:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"},{"id":3121,"name":"ctx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3087,"src":"19868:3:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":3104,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3094,"src":"19546:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"id":3105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19551:24:7","memberName":"callAgreementWithContext","nodeType":"MemberAccess","referencedDeclaration":7548,"src":"19546:29:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6395_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory,bytes memory) external returns (bytes memory,bytes memory)"}},"id":3122,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19546:335:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(bytes memory,bytes memory)"}},"src":"19533:348:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3124,"nodeType":"ExpressionStatement","src":"19533:348:7"}]},"documentation":{"id":3078,"nodeType":"StructuredDocumentation","src":"19002:251:7","text":" @dev Delete flow with context\n @param token The token to flow\n @param sender The sender of the flow\n @param receiver The receiver of the flow\n @param ctx Context bytes (see ISuperfluid.sol for Context struct)"},"id":3126,"implemented":true,"kind":"function","modifiers":[],"name":"deleteFlowWithCtx","nameLocation":"19267:17:7","nodeType":"FunctionDefinition","parameters":{"id":3088,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3081,"mutability":"mutable","name":"token","nameLocation":"19306:5:7","nodeType":"VariableDeclaration","scope":3126,"src":"19294:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":3080,"nodeType":"UserDefinedTypeName","pathNode":{"id":3079,"name":"ISuperToken","nameLocations":["19294:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"19294:11:7"},"referencedDeclaration":6947,"src":"19294:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":3083,"mutability":"mutable","name":"sender","nameLocation":"19329:6:7","nodeType":"VariableDeclaration","scope":3126,"src":"19321:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3082,"name":"address","nodeType":"ElementaryTypeName","src":"19321:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3085,"mutability":"mutable","name":"receiver","nameLocation":"19353:8:7","nodeType":"VariableDeclaration","scope":3126,"src":"19345:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3084,"name":"address","nodeType":"ElementaryTypeName","src":"19345:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3087,"mutability":"mutable","name":"ctx","nameLocation":"19384:3:7","nodeType":"VariableDeclaration","scope":3126,"src":"19371:16:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3086,"name":"bytes","nodeType":"ElementaryTypeName","src":"19371:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"19284:109:7"},"returnParameters":{"id":3091,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3090,"mutability":"mutable","name":"newCtx","nameLocation":"19425:6:7","nodeType":"VariableDeclaration","scope":3126,"src":"19412:19:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3089,"name":"bytes","nodeType":"ElementaryTypeName","src":"19412:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"19411:21:7"},"scope":5077,"src":"19258:630:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3174,"nodeType":"Block","src":"20341:465:7","statements":[{"assignments":[3143,3146],"declarations":[{"constant":false,"id":3143,"mutability":"mutable","name":"host","nameLocation":"20364:4:7","nodeType":"VariableDeclaration","scope":3174,"src":"20352:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"},"typeName":{"id":3142,"nodeType":"UserDefinedTypeName","pathNode":{"id":3141,"name":"ISuperfluid","nameLocations":["20352:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":7599,"src":"20352:11:7"},"referencedDeclaration":7599,"src":"20352:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":3146,"mutability":"mutable","name":"cfa","nameLocation":"20395:3:7","nodeType":"VariableDeclaration","scope":3174,"src":"20370:28:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":3145,"nodeType":"UserDefinedTypeName","pathNode":{"id":3144,"name":"IConstantFlowAgreementV1","nameLocations":["20370:24:7"],"nodeType":"IdentifierPath","referencedDeclaration":5487,"src":"20370:24:7"},"referencedDeclaration":5487,"src":"20370:24:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"id":3150,"initialValue":{"arguments":[{"id":3148,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3130,"src":"20425:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}],"id":3147,"name":"_getAndCacheHostAndCFA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4827,"src":"20402:22:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$6947_$returns$_t_contract$_ISuperfluid_$7599_$_t_contract$_IConstantFlowAgreementV1_$5487_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"id":3149,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20402:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7599_$_t_contract$_IConstantFlowAgreementV1_$5487_$","typeString":"tuple(contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"20351:80:7"},{"expression":{"id":3172,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":3151,"name":"newCtx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3139,"src":"20442:6:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},null],"id":3152,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"20441:10:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$__$","typeString":"tuple(bytes memory,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3155,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3146,"src":"20497:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},{"arguments":[{"expression":{"id":3158,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3146,"src":"20546:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"id":3159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20550:20:7","memberName":"deleteFlowByOperator","nodeType":"MemberAccess","referencedDeclaration":5447,"src":"20546:24:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,address,bytes memory) external returns (bytes memory)"}},{"components":[{"id":3160,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3130,"src":"20610:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},{"id":3161,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3132,"src":"20637:6:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3162,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3134,"src":"20665:8:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":3165,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20705:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3164,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"20695:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":3163,"name":"bytes","nodeType":"ElementaryTypeName","src":"20699:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":3166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20695:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":3167,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20588:152:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,address,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,address,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,address,bytes memory)"}],"expression":{"id":3156,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"20514:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3157,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"20518:10:7","memberName":"encodeCall","nodeType":"MemberAccess","src":"20514:14:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3168,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20514:240:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"3078","id":3169,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"20768:4:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"},{"id":3170,"name":"ctx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3136,"src":"20786:3:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":3153,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3143,"src":"20454:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"id":3154,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20459:24:7","memberName":"callAgreementWithContext","nodeType":"MemberAccess","referencedDeclaration":7548,"src":"20454:29:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6395_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory,bytes memory) external returns (bytes memory,bytes memory)"}},"id":3171,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20454:345:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(bytes memory,bytes memory)"}},"src":"20441:358:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3173,"nodeType":"ExpressionStatement","src":"20441:358:7"}]},"documentation":{"id":3127,"nodeType":"StructuredDocumentation","src":"19894:263:7","text":" @dev Delete flow by operator with context\n @param token The token to flow\n @param sender The sender of the flow\n @param receiver The receiver of the flow\n @param ctx Context bytes (see ISuperfluid.sol for Context struct)"},"id":3175,"implemented":true,"kind":"function","modifiers":[],"name":"deleteFlowFromWithCtx","nameLocation":"20171:21:7","nodeType":"FunctionDefinition","parameters":{"id":3137,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3130,"mutability":"mutable","name":"token","nameLocation":"20214:5:7","nodeType":"VariableDeclaration","scope":3175,"src":"20202:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":3129,"nodeType":"UserDefinedTypeName","pathNode":{"id":3128,"name":"ISuperToken","nameLocations":["20202:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"20202:11:7"},"referencedDeclaration":6947,"src":"20202:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":3132,"mutability":"mutable","name":"sender","nameLocation":"20237:6:7","nodeType":"VariableDeclaration","scope":3175,"src":"20229:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3131,"name":"address","nodeType":"ElementaryTypeName","src":"20229:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3134,"mutability":"mutable","name":"receiver","nameLocation":"20261:8:7","nodeType":"VariableDeclaration","scope":3175,"src":"20253:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3133,"name":"address","nodeType":"ElementaryTypeName","src":"20253:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3136,"mutability":"mutable","name":"ctx","nameLocation":"20292:3:7","nodeType":"VariableDeclaration","scope":3175,"src":"20279:16:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3135,"name":"bytes","nodeType":"ElementaryTypeName","src":"20279:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"20192:109:7"},"returnParameters":{"id":3140,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3139,"mutability":"mutable","name":"newCtx","nameLocation":"20333:6:7","nodeType":"VariableDeclaration","scope":3175,"src":"20320:19:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3138,"name":"bytes","nodeType":"ElementaryTypeName","src":"20320:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"20319:21:7"},"scope":5077,"src":"20162:644:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3205,"nodeType":"Block","src":"21257:138:7","statements":[{"assignments":[null,3190],"declarations":[null,{"constant":false,"id":3190,"mutability":"mutable","name":"cfa","nameLocation":"21295:3:7","nodeType":"VariableDeclaration","scope":3205,"src":"21270:28:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":3189,"nodeType":"UserDefinedTypeName","pathNode":{"id":3188,"name":"IConstantFlowAgreementV1","nameLocations":["21270:24:7"],"nodeType":"IdentifierPath","referencedDeclaration":5487,"src":"21270:24:7"},"referencedDeclaration":5487,"src":"21270:24:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"id":3194,"initialValue":{"arguments":[{"id":3192,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3179,"src":"21317:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}],"id":3191,"name":"_getHostAndCFA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4994,"src":"21302:14:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_ISuperToken_$6947_$returns$_t_contract$_ISuperfluid_$7599_$_t_contract$_IConstantFlowAgreementV1_$5487_$","typeString":"function (contract ISuperToken) view returns (contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"id":3193,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21302:21:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7599_$_t_contract$_IConstantFlowAgreementV1_$5487_$","typeString":"tuple(contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"21267:56:7"},{"expression":{"id":3203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[null,{"id":3195,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3186,"src":"21336:8:7","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},null,null],"id":3196,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"21333:16:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_int96_$__$__$","typeString":"tuple(,int96,,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3199,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3179,"src":"21364:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},{"id":3200,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3181,"src":"21371:6:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3201,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3183,"src":"21379:8:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":3197,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3190,"src":"21352:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"id":3198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21356:7:7","memberName":"getFlow","nodeType":"MemberAccess","referencedDeclaration":5372,"src":"21352:11:7","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_address_$returns$_t_uint256_$_t_int96_$_t_uint256_$_t_uint256_$","typeString":"function (contract ISuperfluidToken,address,address) view external returns (uint256,int96,uint256,uint256)"}},"id":3202,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21352:36:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_int96_$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,int96,uint256,uint256)"}},"src":"21333:55:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3204,"nodeType":"ExpressionStatement","src":"21333:55:7"}]},"documentation":{"id":3176,"nodeType":"StructuredDocumentation","src":"20881:247:7","text":" @dev get flow rate between two accounts for given token\n @param token The token used in flow\n @param sender The sender of the flow\n @param receiver The receiver of the flow\n @return flowRate The flow rate"},"id":3206,"implemented":true,"kind":"function","modifiers":[],"name":"getFlowRate","nameLocation":"21142:11:7","nodeType":"FunctionDefinition","parameters":{"id":3184,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3179,"mutability":"mutable","name":"token","nameLocation":"21166:5:7","nodeType":"VariableDeclaration","scope":3206,"src":"21154:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":3178,"nodeType":"UserDefinedTypeName","pathNode":{"id":3177,"name":"ISuperToken","nameLocations":["21154:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"21154:11:7"},"referencedDeclaration":6947,"src":"21154:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":3181,"mutability":"mutable","name":"sender","nameLocation":"21181:6:7","nodeType":"VariableDeclaration","scope":3206,"src":"21173:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3180,"name":"address","nodeType":"ElementaryTypeName","src":"21173:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3183,"mutability":"mutable","name":"receiver","nameLocation":"21197:8:7","nodeType":"VariableDeclaration","scope":3206,"src":"21189:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3182,"name":"address","nodeType":"ElementaryTypeName","src":"21189:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"21153:53:7"},"returnParameters":{"id":3187,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3186,"mutability":"mutable","name":"flowRate","nameLocation":"21243:8:7","nodeType":"VariableDeclaration","scope":3206,"src":"21237:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":3185,"name":"int96","nodeType":"ElementaryTypeName","src":"21237:5:7","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"21236:16:7"},"scope":5077,"src":"21133:262:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":3245,"nodeType":"Block","src":"22042:167:7","statements":[{"assignments":[null,3227],"declarations":[null,{"constant":false,"id":3227,"mutability":"mutable","name":"cfa","nameLocation":"22080:3:7","nodeType":"VariableDeclaration","scope":3245,"src":"22055:28:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":3226,"nodeType":"UserDefinedTypeName","pathNode":{"id":3225,"name":"IConstantFlowAgreementV1","nameLocations":["22055:24:7"],"nodeType":"IdentifierPath","referencedDeclaration":5487,"src":"22055:24:7"},"referencedDeclaration":5487,"src":"22055:24:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"id":3231,"initialValue":{"arguments":[{"id":3229,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3210,"src":"22102:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}],"id":3228,"name":"_getHostAndCFA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4994,"src":"22087:14:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_ISuperToken_$6947_$returns$_t_contract$_ISuperfluid_$7599_$_t_contract$_IConstantFlowAgreementV1_$5487_$","typeString":"function (contract ISuperToken) view returns (contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"id":3230,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22087:21:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7599_$_t_contract$_IConstantFlowAgreementV1_$5487_$","typeString":"tuple(contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"22052:56:7"},{"expression":{"id":3243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":3232,"name":"lastUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3217,"src":"22119:11:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3233,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3219,"src":"22132:8:7","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},{"id":3234,"name":"deposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3221,"src":"22142:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3235,"name":"owedDeposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3223,"src":"22151:11:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3236,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"22118:45:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_int96_$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,int96,uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3239,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3210,"src":"22178:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},{"id":3240,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3212,"src":"22185:6:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3241,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3214,"src":"22193:8:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":3237,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3227,"src":"22166:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"id":3238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22170:7:7","memberName":"getFlow","nodeType":"MemberAccess","referencedDeclaration":5372,"src":"22166:11:7","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_address_$returns$_t_uint256_$_t_int96_$_t_uint256_$_t_uint256_$","typeString":"function (contract ISuperfluidToken,address,address) view external returns (uint256,int96,uint256,uint256)"}},"id":3242,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22166:36:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_int96_$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,int96,uint256,uint256)"}},"src":"22118:84:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3244,"nodeType":"ExpressionStatement","src":"22118:84:7"}]},"documentation":{"id":3207,"nodeType":"StructuredDocumentation","src":"21401:445:7","text":" @dev get flow info between two accounts for given token\n @param token The token used in flow\n @param sender The sender of the flow\n @param receiver The receiver of the flow\n @return lastUpdated Timestamp of flow creation or last flowrate change\n @return flowRate The flow rate\n @return deposit The amount of deposit the flow\n @return owedDeposit The amount of owed deposit of the flow"},"id":3246,"implemented":true,"kind":"function","modifiers":[],"name":"getFlowInfo","nameLocation":"21860:11:7","nodeType":"FunctionDefinition","parameters":{"id":3215,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3210,"mutability":"mutable","name":"token","nameLocation":"21884:5:7","nodeType":"VariableDeclaration","scope":3246,"src":"21872:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":3209,"nodeType":"UserDefinedTypeName","pathNode":{"id":3208,"name":"ISuperToken","nameLocations":["21872:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"21872:11:7"},"referencedDeclaration":6947,"src":"21872:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":3212,"mutability":"mutable","name":"sender","nameLocation":"21899:6:7","nodeType":"VariableDeclaration","scope":3246,"src":"21891:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3211,"name":"address","nodeType":"ElementaryTypeName","src":"21891:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3214,"mutability":"mutable","name":"receiver","nameLocation":"21915:8:7","nodeType":"VariableDeclaration","scope":3246,"src":"21907:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3213,"name":"address","nodeType":"ElementaryTypeName","src":"21907:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"21871:53:7"},"returnParameters":{"id":3224,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3217,"mutability":"mutable","name":"lastUpdated","nameLocation":"21971:11:7","nodeType":"VariableDeclaration","scope":3246,"src":"21963:19:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3216,"name":"uint256","nodeType":"ElementaryTypeName","src":"21963:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3219,"mutability":"mutable","name":"flowRate","nameLocation":"21990:8:7","nodeType":"VariableDeclaration","scope":3246,"src":"21984:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":3218,"name":"int96","nodeType":"ElementaryTypeName","src":"21984:5:7","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"},{"constant":false,"id":3221,"mutability":"mutable","name":"deposit","nameLocation":"22008:7:7","nodeType":"VariableDeclaration","scope":3246,"src":"22000:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3220,"name":"uint256","nodeType":"ElementaryTypeName","src":"22000:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3223,"mutability":"mutable","name":"owedDeposit","nameLocation":"22025:11:7","nodeType":"VariableDeclaration","scope":3246,"src":"22017:19:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3222,"name":"uint256","nodeType":"ElementaryTypeName","src":"22017:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21962:75:7"},"scope":5077,"src":"21851:358:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":3270,"nodeType":"Block","src":"22542:120:7","statements":[{"assignments":[null,3259],"declarations":[null,{"constant":false,"id":3259,"mutability":"mutable","name":"cfa","nameLocation":"22580:3:7","nodeType":"VariableDeclaration","scope":3270,"src":"22555:28:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":3258,"nodeType":"UserDefinedTypeName","pathNode":{"id":3257,"name":"IConstantFlowAgreementV1","nameLocations":["22555:24:7"],"nodeType":"IdentifierPath","referencedDeclaration":5487,"src":"22555:24:7"},"referencedDeclaration":5487,"src":"22555:24:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"id":3263,"initialValue":{"arguments":[{"id":3261,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3250,"src":"22602:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}],"id":3260,"name":"_getHostAndCFA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4994,"src":"22587:14:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_ISuperToken_$6947_$returns$_t_contract$_ISuperfluid_$7599_$_t_contract$_IConstantFlowAgreementV1_$5487_$","typeString":"function (contract ISuperToken) view returns (contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"id":3262,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22587:21:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7599_$_t_contract$_IConstantFlowAgreementV1_$5487_$","typeString":"tuple(contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"22552:56:7"},{"expression":{"arguments":[{"id":3266,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3250,"src":"22640:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},{"id":3267,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3252,"src":"22647:7:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":3264,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3259,"src":"22625:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"id":3265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22629:10:7","memberName":"getNetFlow","nodeType":"MemberAccess","referencedDeclaration":5417,"src":"22625:14:7","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_contract$_ISuperfluidToken_$8014_$_t_address_$returns$_t_int96_$","typeString":"function (contract ISuperfluidToken,address) view external returns (int96)"}},"id":3268,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22625:30:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"functionReturnParameters":3256,"id":3269,"nodeType":"Return","src":"22618:37:7"}]},"documentation":{"id":3247,"nodeType":"StructuredDocumentation","src":"22215:211:7","text":" @dev get net flow rate for given account for given token\n @param token Super token address\n @param account Account to query\n @return flowRate The net flow rate of the account"},"id":3271,"implemented":true,"kind":"function","modifiers":[],"name":"getNetFlowRate","nameLocation":"22440:14:7","nodeType":"FunctionDefinition","parameters":{"id":3253,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3250,"mutability":"mutable","name":"token","nameLocation":"22467:5:7","nodeType":"VariableDeclaration","scope":3271,"src":"22455:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":3249,"nodeType":"UserDefinedTypeName","pathNode":{"id":3248,"name":"ISuperToken","nameLocations":["22455:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"22455:11:7"},"referencedDeclaration":6947,"src":"22455:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":3252,"mutability":"mutable","name":"account","nameLocation":"22482:7:7","nodeType":"VariableDeclaration","scope":3271,"src":"22474:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3251,"name":"address","nodeType":"ElementaryTypeName","src":"22474:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"22454:36:7"},"returnParameters":{"id":3256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3255,"mutability":"mutable","name":"flowRate","nameLocation":"22528:8:7","nodeType":"VariableDeclaration","scope":3271,"src":"22522:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":3254,"name":"int96","nodeType":"ElementaryTypeName","src":"22522:5:7","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"22521:16:7"},"scope":5077,"src":"22431:231:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":3301,"nodeType":"Block","src":"23275:128:7","statements":[{"assignments":[null,3290],"declarations":[null,{"constant":false,"id":3290,"mutability":"mutable","name":"cfa","nameLocation":"23313:3:7","nodeType":"VariableDeclaration","scope":3301,"src":"23288:28:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":3289,"nodeType":"UserDefinedTypeName","pathNode":{"id":3288,"name":"IConstantFlowAgreementV1","nameLocations":["23288:24:7"],"nodeType":"IdentifierPath","referencedDeclaration":5487,"src":"23288:24:7"},"referencedDeclaration":5487,"src":"23288:24:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"id":3294,"initialValue":{"arguments":[{"id":3292,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3275,"src":"23335:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}],"id":3291,"name":"_getHostAndCFA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4994,"src":"23320:14:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_ISuperToken_$6947_$returns$_t_contract$_ISuperfluid_$7599_$_t_contract$_IConstantFlowAgreementV1_$5487_$","typeString":"function (contract ISuperToken) view returns (contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"id":3293,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23320:21:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7599_$_t_contract$_IConstantFlowAgreementV1_$5487_$","typeString":"tuple(contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"23285:56:7"},{"expression":{"arguments":[{"id":3297,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3275,"src":"23381:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},{"id":3298,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3277,"src":"23388:7:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":3295,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3290,"src":"23358:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"id":3296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23362:18:7","memberName":"getAccountFlowInfo","nodeType":"MemberAccess","referencedDeclaration":5406,"src":"23358:22:7","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_contract$_ISuperfluidToken_$8014_$_t_address_$returns$_t_uint256_$_t_int96_$_t_uint256_$_t_uint256_$","typeString":"function (contract ISuperfluidToken,address) view external returns (uint256,int96,uint256,uint256)"}},"id":3299,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23358:38:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_int96_$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,int96,uint256,uint256)"}},"functionReturnParameters":3287,"id":3300,"nodeType":"Return","src":"23351:45:7"}]},"documentation":{"id":3272,"nodeType":"StructuredDocumentation","src":"22668:424:7","text":" @dev get the aggregated flow info of the account\n @param token Super token address\n @param account Account to query\n @return lastUpdated Timestamp of the last change of the net flow\n @return flowRate The net flow rate of token for account\n @return deposit The sum of all deposits for account's flows\n @return owedDeposit The sum of all owed deposits for account's flows"},"id":3302,"implemented":true,"kind":"function","modifiers":[],"name":"getNetFlowInfo","nameLocation":"23106:14:7","nodeType":"FunctionDefinition","parameters":{"id":3278,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3275,"mutability":"mutable","name":"token","nameLocation":"23133:5:7","nodeType":"VariableDeclaration","scope":3302,"src":"23121:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":3274,"nodeType":"UserDefinedTypeName","pathNode":{"id":3273,"name":"ISuperToken","nameLocations":["23121:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"23121:11:7"},"referencedDeclaration":6947,"src":"23121:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":3277,"mutability":"mutable","name":"account","nameLocation":"23148:7:7","nodeType":"VariableDeclaration","scope":3302,"src":"23140:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3276,"name":"address","nodeType":"ElementaryTypeName","src":"23140:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"23120:36:7"},"returnParameters":{"id":3287,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3280,"mutability":"mutable","name":"lastUpdated","nameLocation":"23204:11:7","nodeType":"VariableDeclaration","scope":3302,"src":"23196:19:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3279,"name":"uint256","nodeType":"ElementaryTypeName","src":"23196:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3282,"mutability":"mutable","name":"flowRate","nameLocation":"23223:8:7","nodeType":"VariableDeclaration","scope":3302,"src":"23217:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":3281,"name":"int96","nodeType":"ElementaryTypeName","src":"23217:5:7","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"},{"constant":false,"id":3284,"mutability":"mutable","name":"deposit","nameLocation":"23241:7:7","nodeType":"VariableDeclaration","scope":3302,"src":"23233:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3283,"name":"uint256","nodeType":"ElementaryTypeName","src":"23233:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3286,"mutability":"mutable","name":"owedDeposit","nameLocation":"23258:11:7","nodeType":"VariableDeclaration","scope":3302,"src":"23250:19:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3285,"name":"uint256","nodeType":"ElementaryTypeName","src":"23250:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23195:75:7"},"scope":5077,"src":"23097:306:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":3326,"nodeType":"Block","src":"23814:140:7","statements":[{"assignments":[null,3315],"declarations":[null,{"constant":false,"id":3315,"mutability":"mutable","name":"cfa","nameLocation":"23852:3:7","nodeType":"VariableDeclaration","scope":3326,"src":"23827:28:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":3314,"nodeType":"UserDefinedTypeName","pathNode":{"id":3313,"name":"IConstantFlowAgreementV1","nameLocations":["23827:24:7"],"nodeType":"IdentifierPath","referencedDeclaration":5487,"src":"23827:24:7"},"referencedDeclaration":5487,"src":"23827:24:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"id":3319,"initialValue":{"arguments":[{"id":3317,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3306,"src":"23874:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}],"id":3316,"name":"_getHostAndCFA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4994,"src":"23859:14:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_ISuperToken_$6947_$returns$_t_contract$_ISuperfluid_$7599_$_t_contract$_IConstantFlowAgreementV1_$5487_$","typeString":"function (contract ISuperToken) view returns (contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"id":3318,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23859:21:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7599_$_t_contract$_IConstantFlowAgreementV1_$5487_$","typeString":"tuple(contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"23824:56:7"},{"expression":{"arguments":[{"id":3322,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3306,"src":"23931:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},{"id":3323,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3308,"src":"23938:8:7","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},{"typeIdentifier":"t_int96","typeString":"int96"}],"expression":{"id":3320,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3315,"src":"23897:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"id":3321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23901:29:7","memberName":"getDepositRequiredForFlowRate","nodeType":"MemberAccess","referencedDeclaration":5160,"src":"23897:33:7","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_contract$_ISuperfluidToken_$8014_$_t_int96_$returns$_t_uint256_$","typeString":"function (contract ISuperfluidToken,int96) view external returns (uint256)"}},"id":3324,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23897:50:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3312,"id":3325,"nodeType":"Return","src":"23890:57:7"}]},"documentation":{"id":3303,"nodeType":"StructuredDocumentation","src":"23409:273:7","text":" @dev calculate buffer for a flow rate\n @param token The token used in flow\n @param flowRate The flowrate to calculate the needed buffer for\n @return bufferAmount The buffer amount based on flowRate, liquidationPeriod and minimum deposit"},"id":3327,"implemented":true,"kind":"function","modifiers":[],"name":"getBufferAmountByFlowRate","nameLocation":"23696:25:7","nodeType":"FunctionDefinition","parameters":{"id":3309,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3306,"mutability":"mutable","name":"token","nameLocation":"23734:5:7","nodeType":"VariableDeclaration","scope":3327,"src":"23722:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":3305,"nodeType":"UserDefinedTypeName","pathNode":{"id":3304,"name":"ISuperToken","nameLocations":["23722:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"23722:11:7"},"referencedDeclaration":6947,"src":"23722:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":3308,"mutability":"mutable","name":"flowRate","nameLocation":"23747:8:7","nodeType":"VariableDeclaration","scope":3327,"src":"23741:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":3307,"name":"int96","nodeType":"ElementaryTypeName","src":"23741:5:7","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"23721:35:7"},"returnParameters":{"id":3312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3311,"mutability":"mutable","name":"bufferAmount","nameLocation":"23796:12:7","nodeType":"VariableDeclaration","scope":3327,"src":"23788:20:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3310,"name":"uint256","nodeType":"ElementaryTypeName","src":"23788:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23787:22:7"},"scope":5077,"src":"23687:267:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":3404,"nodeType":"Block","src":"24713:421:7","statements":[{"assignments":[null,3348],"declarations":[null,{"constant":false,"id":3348,"mutability":"mutable","name":"cfa","nameLocation":"24751:3:7","nodeType":"VariableDeclaration","scope":3404,"src":"24726:28:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":3347,"nodeType":"UserDefinedTypeName","pathNode":{"id":3346,"name":"IConstantFlowAgreementV1","nameLocations":["24726:24:7"],"nodeType":"IdentifierPath","referencedDeclaration":5487,"src":"24726:24:7"},"referencedDeclaration":5487,"src":"24726:24:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"id":3352,"initialValue":{"arguments":[{"id":3350,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3331,"src":"24773:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}],"id":3349,"name":"_getHostAndCFA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4994,"src":"24758:14:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_ISuperToken_$6947_$returns$_t_contract$_ISuperfluid_$7599_$_t_contract$_IConstantFlowAgreementV1_$5487_$","typeString":"function (contract ISuperToken) view returns (contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"id":3351,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24758:21:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7599_$_t_contract$_IConstantFlowAgreementV1_$5487_$","typeString":"tuple(contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"24723:56:7"},{"assignments":[3354],"declarations":[{"constant":false,"id":3354,"mutability":"mutable","name":"permissionsBitmask","nameLocation":"24795:18:7","nodeType":"VariableDeclaration","scope":3404,"src":"24789:24:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3353,"name":"uint8","nodeType":"ElementaryTypeName","src":"24789:5:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":3355,"nodeType":"VariableDeclarationStatement","src":"24789:24:7"},{"expression":{"id":3365,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[null,{"id":3356,"name":"permissionsBitmask","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3354,"src":"24826:18:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":3357,"name":"flowRateAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3344,"src":"24846:17:7","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}}],"id":3358,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"24823:41:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_uint8_$_t_int96_$","typeString":"tuple(,uint8,int96)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3361,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3331,"src":"24891:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},{"id":3362,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3333,"src":"24898:6:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3363,"name":"flowOperator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3335,"src":"24906:12:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":3359,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3348,"src":"24867:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"id":3360,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24871:19:7","memberName":"getFlowOperatorData","nodeType":"MemberAccess","referencedDeclaration":5276,"src":"24867:23:7","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_address_$returns$_t_bytes32_$_t_uint8_$_t_int96_$","typeString":"function (contract ISuperfluidToken,address,address) view external returns (bytes32,uint8,int96)"}},"id":3364,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24867:52:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_uint8_$_t_int96_$","typeString":"tuple(bytes32,uint8,int96)"}},"src":"24823:96:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3366,"nodeType":"ExpressionStatement","src":"24823:96:7"},{"expression":{"id":3376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3367,"name":"allowCreate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3338,"src":"24929:11:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":3372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":3370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3368,"name":"permissionsBitmask","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3354,"src":"24943:18:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"31","id":3369,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24964:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24943:22:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":3371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24969:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24943:27:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"66616c7365","id":3374,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"24980:5:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"id":3375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"24943:42:7","trueExpression":{"hexValue":"74727565","id":3373,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"24973:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"24929:56:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3377,"nodeType":"ExpressionStatement","src":"24929:56:7"},{"expression":{"id":3389,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3378,"name":"allowUpdate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3340,"src":"24995:11:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":3385,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":3383,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":3381,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3379,"name":"permissionsBitmask","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3354,"src":"25009:18:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":3380,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25031:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25009:23:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"31","id":3382,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25035:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25009:27:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":3384,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25040:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25009:32:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"66616c7365","id":3387,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"25051:5:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"id":3388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"25009:47:7","trueExpression":{"hexValue":"74727565","id":3386,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"25044:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"24995:61:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3390,"nodeType":"ExpressionStatement","src":"24995:61:7"},{"expression":{"id":3402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3391,"name":"allowDelete","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3342,"src":"25066:11:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":3398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":3396,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":3394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3392,"name":"permissionsBitmask","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3354,"src":"25080:18:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":3393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25102:1:7","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"25080:23:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"31","id":3395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25106:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25080:27:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":3397,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25111:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25080:32:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"66616c7365","id":3400,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"25122:5:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"id":3401,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"25080:47:7","trueExpression":{"hexValue":"74727565","id":3399,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"25115:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"25066:61:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3403,"nodeType":"ExpressionStatement","src":"25066:61:7"}]},"documentation":{"id":3328,"nodeType":"StructuredDocumentation","src":"23960:541:7","text":" @dev get existing flow permissions\n @param token The token used in flow\n @param sender sender of a flow\n @param flowOperator the address we are checking permissions of for sender & token\n @return allowCreate is true if the flowOperator can create flows\n @return allowUpdate is true if the flowOperator can update flows\n @return allowDelete is true if the flowOperator can delete flows\n @return flowRateAllowance The flow rate allowance the flowOperator is granted (only goes down)"},"id":3405,"implemented":true,"kind":"function","modifiers":[],"name":"getFlowPermissions","nameLocation":"24515:18:7","nodeType":"FunctionDefinition","parameters":{"id":3336,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3331,"mutability":"mutable","name":"token","nameLocation":"24546:5:7","nodeType":"VariableDeclaration","scope":3405,"src":"24534:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":3330,"nodeType":"UserDefinedTypeName","pathNode":{"id":3329,"name":"ISuperToken","nameLocations":["24534:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"24534:11:7"},"referencedDeclaration":6947,"src":"24534:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":3333,"mutability":"mutable","name":"sender","nameLocation":"24561:6:7","nodeType":"VariableDeclaration","scope":3405,"src":"24553:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3332,"name":"address","nodeType":"ElementaryTypeName","src":"24553:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3335,"mutability":"mutable","name":"flowOperator","nameLocation":"24577:12:7","nodeType":"VariableDeclaration","scope":3405,"src":"24569:20:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3334,"name":"address","nodeType":"ElementaryTypeName","src":"24569:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"24533:57:7"},"returnParameters":{"id":3345,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3338,"mutability":"mutable","name":"allowCreate","nameLocation":"24635:11:7","nodeType":"VariableDeclaration","scope":3405,"src":"24630:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3337,"name":"bool","nodeType":"ElementaryTypeName","src":"24630:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3340,"mutability":"mutable","name":"allowUpdate","nameLocation":"24653:11:7","nodeType":"VariableDeclaration","scope":3405,"src":"24648:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3339,"name":"bool","nodeType":"ElementaryTypeName","src":"24648:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3342,"mutability":"mutable","name":"allowDelete","nameLocation":"24671:11:7","nodeType":"VariableDeclaration","scope":3405,"src":"24666:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3341,"name":"bool","nodeType":"ElementaryTypeName","src":"24666:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3344,"mutability":"mutable","name":"flowRateAllowance","nameLocation":"24690:17:7","nodeType":"VariableDeclaration","scope":3405,"src":"24684:23:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":3343,"name":"int96","nodeType":"ElementaryTypeName","src":"24684:5:7","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"24629:79:7"},"scope":5077,"src":"24506:628:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":3438,"nodeType":"Block","src":"25883:136:7","statements":[{"assignments":[null,3426],"declarations":[null,{"constant":false,"id":3426,"mutability":"mutable","name":"ida","nameLocation":"25928:3:7","nodeType":"VariableDeclaration","scope":3438,"src":"25896:35:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"},"typeName":{"id":3425,"nodeType":"UserDefinedTypeName","pathNode":{"id":3424,"name":"IInstantDistributionAgreementV1","nameLocations":["25896:31:7"],"nodeType":"IdentifierPath","referencedDeclaration":5893,"src":"25896:31:7"},"referencedDeclaration":5893,"src":"25896:31:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"visibility":"internal"}],"id":3430,"initialValue":{"arguments":[{"id":3428,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3409,"src":"25950:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}],"id":3427,"name":"_getHostAndIDA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5076,"src":"25935:14:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_ISuperToken_$6947_$returns$_t_contract$_ISuperfluid_$7599_$_t_contract$_IInstantDistributionAgreementV1_$5893_$","typeString":"function (contract ISuperToken) view returns (contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"id":3429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25935:21:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7599_$_t_contract$_IInstantDistributionAgreementV1_$5893_$","typeString":"tuple(contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"25893:63:7"},{"expression":{"arguments":[{"id":3433,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3409,"src":"25986:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},{"id":3434,"name":"publisher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3411,"src":"25993:9:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3435,"name":"indexId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3413,"src":"26004:7:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"expression":{"id":3431,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3426,"src":"25973:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"id":3432,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25977:8:7","memberName":"getIndex","nodeType":"MemberAccess","referencedDeclaration":5570,"src":"25973:12:7","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_uint32_$returns$_t_bool_$_t_uint128_$_t_uint128_$_t_uint128_$","typeString":"function (contract ISuperfluidToken,address,uint32) view external returns (bool,uint128,uint128,uint128)"}},"id":3436,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25973:39:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint128_$_t_uint128_$_t_uint128_$","typeString":"tuple(bool,uint128,uint128,uint128)"}},"functionReturnParameters":3423,"id":3437,"nodeType":"Return","src":"25966:46:7"}]},"documentation":{"id":3406,"nodeType":"StructuredDocumentation","src":"25212:464:7","text":" @dev Gets an index by its ID and publisher.\n @param token Super token used with the index.\n @param publisher Publisher of the index.\n @param indexId ID of the index.\n @return exist True if the index exists.\n @return indexValue Total value of the index.\n @return totalUnitsApproved Units of the index approved by subscribers.\n @return totalUnitsPending Units of teh index not yet approved by subscribers."},"id":3439,"implemented":true,"kind":"function","modifiers":[],"name":"getIndex","nameLocation":"25690:8:7","nodeType":"FunctionDefinition","parameters":{"id":3414,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3409,"mutability":"mutable","name":"token","nameLocation":"25711:5:7","nodeType":"VariableDeclaration","scope":3439,"src":"25699:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":3408,"nodeType":"UserDefinedTypeName","pathNode":{"id":3407,"name":"ISuperToken","nameLocations":["25699:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"25699:11:7"},"referencedDeclaration":6947,"src":"25699:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":3411,"mutability":"mutable","name":"publisher","nameLocation":"25726:9:7","nodeType":"VariableDeclaration","scope":3439,"src":"25718:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3410,"name":"address","nodeType":"ElementaryTypeName","src":"25718:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3413,"mutability":"mutable","name":"indexId","nameLocation":"25744:7:7","nodeType":"VariableDeclaration","scope":3439,"src":"25737:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":3412,"name":"uint32","nodeType":"ElementaryTypeName","src":"25737:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"25698:54:7"},"returnParameters":{"id":3423,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3416,"mutability":"mutable","name":"exist","nameLocation":"25797:5:7","nodeType":"VariableDeclaration","scope":3439,"src":"25792:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3415,"name":"bool","nodeType":"ElementaryTypeName","src":"25792:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3418,"mutability":"mutable","name":"indexValue","nameLocation":"25812:10:7","nodeType":"VariableDeclaration","scope":3439,"src":"25804:18:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3417,"name":"uint128","nodeType":"ElementaryTypeName","src":"25804:7:7","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3420,"mutability":"mutable","name":"totalUnitsApproved","nameLocation":"25832:18:7","nodeType":"VariableDeclaration","scope":3439,"src":"25824:26:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3419,"name":"uint128","nodeType":"ElementaryTypeName","src":"25824:7:7","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3422,"mutability":"mutable","name":"totalUnitsPending","nameLocation":"25860:17:7","nodeType":"VariableDeclaration","scope":3439,"src":"25852:25:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3421,"name":"uint128","nodeType":"ElementaryTypeName","src":"25852:7:7","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"25791:87:7"},"scope":5077,"src":"25681:338:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":3471,"nodeType":"Block","src":"26692:157:7","statements":[{"assignments":[null,3458],"declarations":[null,{"constant":false,"id":3458,"mutability":"mutable","name":"ida","nameLocation":"26737:3:7","nodeType":"VariableDeclaration","scope":3471,"src":"26705:35:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"},"typeName":{"id":3457,"nodeType":"UserDefinedTypeName","pathNode":{"id":3456,"name":"IInstantDistributionAgreementV1","nameLocations":["26705:31:7"],"nodeType":"IdentifierPath","referencedDeclaration":5893,"src":"26705:31:7"},"referencedDeclaration":5893,"src":"26705:31:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"visibility":"internal"}],"id":3462,"initialValue":{"arguments":[{"id":3460,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3443,"src":"26759:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}],"id":3459,"name":"_getHostAndIDA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5076,"src":"26744:14:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_ISuperToken_$6947_$returns$_t_contract$_ISuperfluid_$7599_$_t_contract$_IInstantDistributionAgreementV1_$5893_$","typeString":"function (contract ISuperToken) view returns (contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"id":3461,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26744:21:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7599_$_t_contract$_IInstantDistributionAgreementV1_$5893_$","typeString":"tuple(contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"26702:63:7"},{"expression":{"arguments":[{"id":3465,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3443,"src":"26808:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},{"id":3466,"name":"publisher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3445,"src":"26815:9:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3467,"name":"indexId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3447,"src":"26826:7:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":3468,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3449,"src":"26835:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3463,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3458,"src":"26782:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"id":3464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26786:21:7","memberName":"calculateDistribution","nodeType":"MemberAccess","referencedDeclaration":5587,"src":"26782:25:7","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_uint32_$_t_uint256_$returns$_t_uint256_$_t_uint128_$","typeString":"function (contract ISuperfluidToken,address,uint32,uint256) view external returns (uint256,uint128)"}},"id":3469,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26782:60:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint128_$","typeString":"tuple(uint256,uint128)"}},"functionReturnParameters":3455,"id":3470,"nodeType":"Return","src":"26775:67:7"}]},"documentation":{"id":3440,"nodeType":"StructuredDocumentation","src":"26025:473:7","text":" @dev Calculates the distribution amount based on the amount of tokens desired to distribute.\n @param token Super token used with the index.\n @param publisher Publisher of the index.\n @param indexId ID of the index.\n @param amount Amount of tokens desired to distribute.\n @return actualAmount Amount to be distributed with correct rounding.\n @return newIndexValue The index value after the distribution would be called."},"id":3472,"implemented":true,"kind":"function","modifiers":[],"name":"calculateDistribution","nameLocation":"26512:21:7","nodeType":"FunctionDefinition","parameters":{"id":3450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3443,"mutability":"mutable","name":"token","nameLocation":"26546:5:7","nodeType":"VariableDeclaration","scope":3472,"src":"26534:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":3442,"nodeType":"UserDefinedTypeName","pathNode":{"id":3441,"name":"ISuperToken","nameLocations":["26534:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"26534:11:7"},"referencedDeclaration":6947,"src":"26534:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":3445,"mutability":"mutable","name":"publisher","nameLocation":"26561:9:7","nodeType":"VariableDeclaration","scope":3472,"src":"26553:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3444,"name":"address","nodeType":"ElementaryTypeName","src":"26553:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3447,"mutability":"mutable","name":"indexId","nameLocation":"26579:7:7","nodeType":"VariableDeclaration","scope":3472,"src":"26572:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":3446,"name":"uint32","nodeType":"ElementaryTypeName","src":"26572:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":3449,"mutability":"mutable","name":"amount","nameLocation":"26596:6:7","nodeType":"VariableDeclaration","scope":3472,"src":"26588:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3448,"name":"uint256","nodeType":"ElementaryTypeName","src":"26588:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26533:70:7"},"returnParameters":{"id":3455,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3452,"mutability":"mutable","name":"actualAmount","nameLocation":"26651:12:7","nodeType":"VariableDeclaration","scope":3472,"src":"26643:20:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3451,"name":"uint256","nodeType":"ElementaryTypeName","src":"26643:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3454,"mutability":"mutable","name":"newIndexValue","nameLocation":"26673:13:7","nodeType":"VariableDeclaration","scope":3472,"src":"26665:21:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3453,"name":"uint128","nodeType":"ElementaryTypeName","src":"26665:7:7","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"26642:45:7"},"scope":5077,"src":"26503:346:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":3503,"nodeType":"Block","src":"27435:137:7","statements":[{"assignments":[null,3492],"declarations":[null,{"constant":false,"id":3492,"mutability":"mutable","name":"ida","nameLocation":"27480:3:7","nodeType":"VariableDeclaration","scope":3503,"src":"27448:35:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"},"typeName":{"id":3491,"nodeType":"UserDefinedTypeName","pathNode":{"id":3490,"name":"IInstantDistributionAgreementV1","nameLocations":["27448:31:7"],"nodeType":"IdentifierPath","referencedDeclaration":5893,"src":"27448:31:7"},"referencedDeclaration":5893,"src":"27448:31:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"visibility":"internal"}],"id":3496,"initialValue":{"arguments":[{"id":3494,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3476,"src":"27502:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}],"id":3493,"name":"_getHostAndIDA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5076,"src":"27487:14:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_ISuperToken_$6947_$returns$_t_contract$_ISuperfluid_$7599_$_t_contract$_IInstantDistributionAgreementV1_$5893_$","typeString":"function (contract ISuperToken) view returns (contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"id":3495,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27487:21:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7599_$_t_contract$_IInstantDistributionAgreementV1_$5893_$","typeString":"tuple(contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"27445:63:7"},{"expression":{"arguments":[{"id":3499,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3476,"src":"27547:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},{"id":3500,"name":"subscriber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3478,"src":"27554:10:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":3497,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3492,"src":"27525:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"id":3498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27529:17:7","memberName":"listSubscriptions","nodeType":"MemberAccess","referencedDeclaration":5830,"src":"27525:21:7","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_contract$_ISuperfluidToken_$8014_$_t_address_$returns$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint32_$dyn_memory_ptr_$_t_array$_t_uint128_$dyn_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address) view external returns (address[] memory,uint32[] memory,uint128[] memory)"}},"id":3501,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27525:40:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint32_$dyn_memory_ptr_$_t_array$_t_uint128_$dyn_memory_ptr_$","typeString":"tuple(address[] memory,uint32[] memory,uint128[] memory)"}},"functionReturnParameters":3489,"id":3502,"nodeType":"Return","src":"27518:47:7"}]},"documentation":{"id":3473,"nodeType":"StructuredDocumentation","src":"26855:315:7","text":" @dev List all subscriptions of an address\n @param token Super token used in the indexes listed.\n @param subscriber Subscriber address.\n @return publishers Publishers of the indices.\n @return indexIds IDs of the indices.\n @return unitsList Units owned of the indices."},"id":3504,"implemented":true,"kind":"function","modifiers":[],"name":"listSubscriptions","nameLocation":"27184:17:7","nodeType":"FunctionDefinition","parameters":{"id":3479,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3476,"mutability":"mutable","name":"token","nameLocation":"27223:5:7","nodeType":"VariableDeclaration","scope":3504,"src":"27211:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":3475,"nodeType":"UserDefinedTypeName","pathNode":{"id":3474,"name":"ISuperToken","nameLocations":["27211:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"27211:11:7"},"referencedDeclaration":6947,"src":"27211:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":3478,"mutability":"mutable","name":"subscriber","nameLocation":"27246:10:7","nodeType":"VariableDeclaration","scope":3504,"src":"27238:18:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3477,"name":"address","nodeType":"ElementaryTypeName","src":"27238:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"27201:61:7"},"returnParameters":{"id":3489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3482,"mutability":"mutable","name":"publishers","nameLocation":"27332:10:7","nodeType":"VariableDeclaration","scope":3504,"src":"27315:27:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":3480,"name":"address","nodeType":"ElementaryTypeName","src":"27315:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3481,"nodeType":"ArrayTypeName","src":"27315:9:7","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":3485,"mutability":"mutable","name":"indexIds","nameLocation":"27372:8:7","nodeType":"VariableDeclaration","scope":3504,"src":"27356:24:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[]"},"typeName":{"baseType":{"id":3483,"name":"uint32","nodeType":"ElementaryTypeName","src":"27356:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":3484,"nodeType":"ArrayTypeName","src":"27356:8:7","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_storage_ptr","typeString":"uint32[]"}},"visibility":"internal"},{"constant":false,"id":3488,"mutability":"mutable","name":"unitsList","nameLocation":"27411:9:7","nodeType":"VariableDeclaration","scope":3504,"src":"27394:26:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint128_$dyn_memory_ptr","typeString":"uint128[]"},"typeName":{"baseType":{"id":3486,"name":"uint128","nodeType":"ElementaryTypeName","src":"27394:7:7","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":3487,"nodeType":"ArrayTypeName","src":"27394:9:7","typeDescriptions":{"typeIdentifier":"t_array$_t_uint128_$dyn_storage_ptr","typeString":"uint128[]"}},"visibility":"internal"}],"src":"27301:129:7"},"scope":5077,"src":"27175:397:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":3540,"nodeType":"Block","src":"28347:155:7","statements":[{"assignments":[null,3527],"declarations":[null,{"constant":false,"id":3527,"mutability":"mutable","name":"ida","nameLocation":"28392:3:7","nodeType":"VariableDeclaration","scope":3540,"src":"28360:35:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"},"typeName":{"id":3526,"nodeType":"UserDefinedTypeName","pathNode":{"id":3525,"name":"IInstantDistributionAgreementV1","nameLocations":["28360:31:7"],"nodeType":"IdentifierPath","referencedDeclaration":5893,"src":"28360:31:7"},"referencedDeclaration":5893,"src":"28360:31:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"visibility":"internal"}],"id":3531,"initialValue":{"arguments":[{"id":3529,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3508,"src":"28414:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}],"id":3528,"name":"_getHostAndIDA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5076,"src":"28399:14:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_ISuperToken_$6947_$returns$_t_contract$_ISuperfluid_$7599_$_t_contract$_IInstantDistributionAgreementV1_$5893_$","typeString":"function (contract ISuperToken) view returns (contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"id":3530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28399:21:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7599_$_t_contract$_IInstantDistributionAgreementV1_$5893_$","typeString":"tuple(contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"28357:63:7"},{"expression":{"arguments":[{"id":3534,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3508,"src":"28457:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},{"id":3535,"name":"publisher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3510,"src":"28464:9:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3536,"name":"indexId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3512,"src":"28475:7:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":3537,"name":"subscriber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3514,"src":"28484:10:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":3532,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3527,"src":"28437:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"id":3533,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"28441:15:7","memberName":"getSubscription","nodeType":"MemberAccess","referencedDeclaration":5793,"src":"28437:19:7","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_uint32_$_t_address_$returns$_t_bool_$_t_bool_$_t_uint128_$_t_uint256_$","typeString":"function (contract ISuperfluidToken,address,uint32,address) view external returns (bool,bool,uint128,uint256)"}},"id":3538,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28437:58:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bool_$_t_uint128_$_t_uint256_$","typeString":"tuple(bool,bool,uint128,uint256)"}},"functionReturnParameters":3524,"id":3539,"nodeType":"Return","src":"28430:65:7"}]},"documentation":{"id":3505,"nodeType":"StructuredDocumentation","src":"27578:551:7","text":" @dev Gets subscription by publisher, index id, and subscriber.\n @param token Super token used with the index.\n @param publisher Publisher of the index.\n @param indexId ID of the index.\n @param subscriber Subscriber to the index.\n @return exist True if the subscription exists.\n @return approved True if the subscription has been approved by the subscriber.\n @return units Units held by the subscriber\n @return pendingDistribution If not approved, the amount to be claimed on approval."},"id":3541,"implemented":true,"kind":"function","modifiers":[],"name":"getSubscription","nameLocation":"28143:15:7","nodeType":"FunctionDefinition","parameters":{"id":3515,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3508,"mutability":"mutable","name":"token","nameLocation":"28171:5:7","nodeType":"VariableDeclaration","scope":3541,"src":"28159:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":3507,"nodeType":"UserDefinedTypeName","pathNode":{"id":3506,"name":"ISuperToken","nameLocations":["28159:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"28159:11:7"},"referencedDeclaration":6947,"src":"28159:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":3510,"mutability":"mutable","name":"publisher","nameLocation":"28186:9:7","nodeType":"VariableDeclaration","scope":3541,"src":"28178:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3509,"name":"address","nodeType":"ElementaryTypeName","src":"28178:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3512,"mutability":"mutable","name":"indexId","nameLocation":"28204:7:7","nodeType":"VariableDeclaration","scope":3541,"src":"28197:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":3511,"name":"uint32","nodeType":"ElementaryTypeName","src":"28197:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":3514,"mutability":"mutable","name":"subscriber","nameLocation":"28221:10:7","nodeType":"VariableDeclaration","scope":3541,"src":"28213:18:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3513,"name":"address","nodeType":"ElementaryTypeName","src":"28213:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"28158:74:7"},"returnParameters":{"id":3524,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3517,"mutability":"mutable","name":"exist","nameLocation":"28277:5:7","nodeType":"VariableDeclaration","scope":3541,"src":"28272:10:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3516,"name":"bool","nodeType":"ElementaryTypeName","src":"28272:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3519,"mutability":"mutable","name":"approved","nameLocation":"28289:8:7","nodeType":"VariableDeclaration","scope":3541,"src":"28284:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3518,"name":"bool","nodeType":"ElementaryTypeName","src":"28284:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3521,"mutability":"mutable","name":"units","nameLocation":"28307:5:7","nodeType":"VariableDeclaration","scope":3541,"src":"28299:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3520,"name":"uint128","nodeType":"ElementaryTypeName","src":"28299:7:7","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3523,"mutability":"mutable","name":"pendingDistribution","nameLocation":"28322:19:7","nodeType":"VariableDeclaration","scope":3541,"src":"28314:27:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3522,"name":"uint256","nodeType":"ElementaryTypeName","src":"28314:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"28271:71:7"},"scope":5077,"src":"28134:368:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":3572,"nodeType":"Block","src":"29297:140:7","statements":[{"assignments":[null,3561],"declarations":[null,{"constant":false,"id":3561,"mutability":"mutable","name":"ida","nameLocation":"29342:3:7","nodeType":"VariableDeclaration","scope":3572,"src":"29310:35:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"},"typeName":{"id":3560,"nodeType":"UserDefinedTypeName","pathNode":{"id":3559,"name":"IInstantDistributionAgreementV1","nameLocations":["29310:31:7"],"nodeType":"IdentifierPath","referencedDeclaration":5893,"src":"29310:31:7"},"referencedDeclaration":5893,"src":"29310:31:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"visibility":"internal"}],"id":3565,"initialValue":{"arguments":[{"id":3563,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3544,"src":"29364:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}],"id":3562,"name":"_getHostAndIDA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5076,"src":"29349:14:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_ISuperToken_$6947_$returns$_t_contract$_ISuperfluid_$7599_$_t_contract$_IInstantDistributionAgreementV1_$5893_$","typeString":"function (contract ISuperToken) view returns (contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"id":3564,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29349:21:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7599_$_t_contract$_IInstantDistributionAgreementV1_$5893_$","typeString":"tuple(contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"29307:63:7"},{"expression":{"arguments":[{"id":3568,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3544,"src":"29411:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},{"id":3569,"name":"agreementId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3546,"src":"29418:11:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":3566,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3561,"src":"29387:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"id":3567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"29391:19:7","memberName":"getSubscriptionByID","nodeType":"MemberAccess","referencedDeclaration":5812,"src":"29387:23:7","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_contract$_ISuperfluidToken_$8014_$_t_bytes32_$returns$_t_address_$_t_uint32_$_t_bool_$_t_uint128_$_t_uint256_$","typeString":"function (contract ISuperfluidToken,bytes32) view external returns (address,uint32,bool,uint128,uint256)"}},"id":3570,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29387:43:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint32_$_t_bool_$_t_uint128_$_t_uint256_$","typeString":"tuple(address,uint32,bool,uint128,uint256)"}},"functionReturnParameters":3558,"id":3571,"nodeType":"Return","src":"29380:50:7"}]},"id":3573,"implemented":true,"kind":"function","modifiers":[],"name":"getSubscriptionByID","nameLocation":"29030:19:7","nodeType":"FunctionDefinition","parameters":{"id":3547,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3544,"mutability":"mutable","name":"token","nameLocation":"29062:5:7","nodeType":"VariableDeclaration","scope":3573,"src":"29050:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":3543,"nodeType":"UserDefinedTypeName","pathNode":{"id":3542,"name":"ISuperToken","nameLocations":["29050:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"29050:11:7"},"referencedDeclaration":6947,"src":"29050:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":3546,"mutability":"mutable","name":"agreementId","nameLocation":"29077:11:7","nodeType":"VariableDeclaration","scope":3573,"src":"29069:19:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3545,"name":"bytes32","nodeType":"ElementaryTypeName","src":"29069:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"29049:40:7"},"returnParameters":{"id":3558,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3549,"mutability":"mutable","name":"publisher","nameLocation":"29150:9:7","nodeType":"VariableDeclaration","scope":3573,"src":"29142:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3548,"name":"address","nodeType":"ElementaryTypeName","src":"29142:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3551,"mutability":"mutable","name":"indexId","nameLocation":"29180:7:7","nodeType":"VariableDeclaration","scope":3573,"src":"29173:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":3550,"name":"uint32","nodeType":"ElementaryTypeName","src":"29173:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":3553,"mutability":"mutable","name":"approved","nameLocation":"29206:8:7","nodeType":"VariableDeclaration","scope":3573,"src":"29201:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3552,"name":"bool","nodeType":"ElementaryTypeName","src":"29201:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3555,"mutability":"mutable","name":"units","nameLocation":"29236:5:7","nodeType":"VariableDeclaration","scope":3573,"src":"29228:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3554,"name":"uint128","nodeType":"ElementaryTypeName","src":"29228:7:7","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3557,"mutability":"mutable","name":"pendingDistribution","nameLocation":"29263:19:7","nodeType":"VariableDeclaration","scope":3573,"src":"29255:27:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3556,"name":"uint256","nodeType":"ElementaryTypeName","src":"29255:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29128:164:7"},"scope":5077,"src":"29021:416:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":3615,"nodeType":"Block","src":"29757:418:7","statements":[{"assignments":[3586,3589],"declarations":[{"constant":false,"id":3586,"mutability":"mutable","name":"host","nameLocation":"29780:4:7","nodeType":"VariableDeclaration","scope":3615,"src":"29768:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"},"typeName":{"id":3585,"nodeType":"UserDefinedTypeName","pathNode":{"id":3584,"name":"ISuperfluid","nameLocations":["29768:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":7599,"src":"29768:11:7"},"referencedDeclaration":7599,"src":"29768:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":3589,"mutability":"mutable","name":"ida","nameLocation":"29818:3:7","nodeType":"VariableDeclaration","scope":3615,"src":"29786:35:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"},"typeName":{"id":3588,"nodeType":"UserDefinedTypeName","pathNode":{"id":3587,"name":"IInstantDistributionAgreementV1","nameLocations":["29786:31:7"],"nodeType":"IdentifierPath","referencedDeclaration":5893,"src":"29786:31:7"},"referencedDeclaration":5893,"src":"29786:31:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"visibility":"internal"}],"id":3593,"initialValue":{"arguments":[{"id":3591,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3577,"src":"29848:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}],"id":3590,"name":"_getAndCacheHostAndIDA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4912,"src":"29825:22:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$6947_$returns$_t_contract$_ISuperfluid_$7599_$_t_contract$_IInstantDistributionAgreementV1_$5893_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"id":3592,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29825:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7599_$_t_contract$_IInstantDistributionAgreementV1_$5893_$","typeString":"tuple(contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"29767:87:7"},{"expression":{"arguments":[{"id":3597,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3589,"src":"29896:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},{"arguments":[{"expression":{"id":3600,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3589,"src":"29945:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"id":3601,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"29949:11:7","memberName":"createIndex","nodeType":"MemberAccess","referencedDeclaration":5539,"src":"29945:15:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_uint32_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,uint32,bytes memory) external returns (bytes memory)"}},{"components":[{"id":3602,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3577,"src":"30000:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},{"id":3603,"name":"indexId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3579,"src":"30027:7:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"arguments":[{"hexValue":"30","id":3606,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30066:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3605,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"30056:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":3604,"name":"bytes","nodeType":"ElementaryTypeName","src":"30060:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":3607,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30056:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":3608,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"29978:127:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_uint32_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,uint32,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_uint32_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,uint32,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_uint32_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,uint32,bytes memory)"}],"expression":{"id":3598,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"29913:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3599,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"29917:10:7","memberName":"encodeCall","nodeType":"MemberAccess","src":"29913:14:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29913:206:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"3078","id":3610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"30133:4:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""}],"expression":{"id":3594,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3586,"src":"29864:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"id":3596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"29869:13:7","memberName":"callAgreement","nodeType":"MemberAccess","referencedDeclaration":7497,"src":"29864:18:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6395_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory) external returns (bytes memory)"}},"id":3611,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29864:283:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3612,"nodeType":"ExpressionStatement","src":"29864:283:7"},{"expression":{"hexValue":"74727565","id":3613,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"30164:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":3583,"id":3614,"nodeType":"Return","src":"30157:11:7"}]},"documentation":{"id":3574,"nodeType":"StructuredDocumentation","src":"29514:136:7","text":" @dev Creates a new index.\n @param token Super Token used with the index.\n @param indexId ID of the index."},"id":3616,"implemented":true,"kind":"function","modifiers":[],"name":"createIndex","nameLocation":"29664:11:7","nodeType":"FunctionDefinition","parameters":{"id":3580,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3577,"mutability":"mutable","name":"token","nameLocation":"29697:5:7","nodeType":"VariableDeclaration","scope":3616,"src":"29685:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":3576,"nodeType":"UserDefinedTypeName","pathNode":{"id":3575,"name":"ISuperToken","nameLocations":["29685:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"29685:11:7"},"referencedDeclaration":6947,"src":"29685:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":3579,"mutability":"mutable","name":"indexId","nameLocation":"29719:7:7","nodeType":"VariableDeclaration","scope":3616,"src":"29712:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":3578,"name":"uint32","nodeType":"ElementaryTypeName","src":"29712:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"29675:57:7"},"returnParameters":{"id":3583,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3582,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3616,"src":"29751:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3581,"name":"bool","nodeType":"ElementaryTypeName","src":"29751:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"29750:6:7"},"scope":5077,"src":"29655:520:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3660,"nodeType":"Block","src":"30519:422:7","statements":[{"assignments":[3631,3634],"declarations":[{"constant":false,"id":3631,"mutability":"mutable","name":"host","nameLocation":"30542:4:7","nodeType":"VariableDeclaration","scope":3660,"src":"30530:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"},"typeName":{"id":3630,"nodeType":"UserDefinedTypeName","pathNode":{"id":3629,"name":"ISuperfluid","nameLocations":["30530:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":7599,"src":"30530:11:7"},"referencedDeclaration":7599,"src":"30530:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":3634,"mutability":"mutable","name":"ida","nameLocation":"30580:3:7","nodeType":"VariableDeclaration","scope":3660,"src":"30548:35:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"},"typeName":{"id":3633,"nodeType":"UserDefinedTypeName","pathNode":{"id":3632,"name":"IInstantDistributionAgreementV1","nameLocations":["30548:31:7"],"nodeType":"IdentifierPath","referencedDeclaration":5893,"src":"30548:31:7"},"referencedDeclaration":5893,"src":"30548:31:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"visibility":"internal"}],"id":3638,"initialValue":{"arguments":[{"id":3636,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3620,"src":"30610:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}],"id":3635,"name":"_getAndCacheHostAndIDA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4912,"src":"30587:22:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$6947_$returns$_t_contract$_ISuperfluid_$7599_$_t_contract$_IInstantDistributionAgreementV1_$5893_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"id":3637,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30587:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7599_$_t_contract$_IInstantDistributionAgreementV1_$5893_$","typeString":"tuple(contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"30529:87:7"},{"expression":{"arguments":[{"id":3642,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3634,"src":"30658:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},{"arguments":[{"expression":{"id":3645,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3634,"src":"30707:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"id":3646,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"30711:11:7","memberName":"createIndex","nodeType":"MemberAccess","referencedDeclaration":5539,"src":"30707:15:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_uint32_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,uint32,bytes memory) external returns (bytes memory)"}},{"components":[{"id":3647,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3620,"src":"30762:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},{"id":3648,"name":"indexId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3622,"src":"30789:7:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"arguments":[{"hexValue":"30","id":3651,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30828:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3650,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"30818:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":3649,"name":"bytes","nodeType":"ElementaryTypeName","src":"30822:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":3652,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30818:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":3653,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"30740:127:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_uint32_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,uint32,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_uint32_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,uint32,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_uint32_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,uint32,bytes memory)"}],"expression":{"id":3643,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"30675:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3644,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"30679:10:7","memberName":"encodeCall","nodeType":"MemberAccess","src":"30675:14:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3654,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30675:206:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":3655,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3624,"src":"30895:8:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":3639,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3631,"src":"30626:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"id":3641,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"30631:13:7","memberName":"callAgreement","nodeType":"MemberAccess","referencedDeclaration":7497,"src":"30626:18:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6395_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory) external returns (bytes memory)"}},"id":3656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30626:287:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3657,"nodeType":"ExpressionStatement","src":"30626:287:7"},{"expression":{"hexValue":"74727565","id":3658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"30930:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":3628,"id":3659,"nodeType":"Return","src":"30923:11:7"}]},"documentation":{"id":3617,"nodeType":"StructuredDocumentation","src":"30181:200:7","text":" @dev Creates a new index with userData.\n @param token Super Token used with the index.\n @param indexId ID of the index.\n @param userData Arbitrary user data field."},"id":3661,"implemented":true,"kind":"function","modifiers":[],"name":"createIndex","nameLocation":"30395:11:7","nodeType":"FunctionDefinition","parameters":{"id":3625,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3620,"mutability":"mutable","name":"token","nameLocation":"30428:5:7","nodeType":"VariableDeclaration","scope":3661,"src":"30416:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":3619,"nodeType":"UserDefinedTypeName","pathNode":{"id":3618,"name":"ISuperToken","nameLocations":["30416:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"30416:11:7"},"referencedDeclaration":6947,"src":"30416:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":3622,"mutability":"mutable","name":"indexId","nameLocation":"30450:7:7","nodeType":"VariableDeclaration","scope":3661,"src":"30443:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":3621,"name":"uint32","nodeType":"ElementaryTypeName","src":"30443:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":3624,"mutability":"mutable","name":"userData","nameLocation":"30480:8:7","nodeType":"VariableDeclaration","scope":3661,"src":"30467:21:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3623,"name":"bytes","nodeType":"ElementaryTypeName","src":"30467:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"30406:88:7"},"returnParameters":{"id":3628,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3627,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3661,"src":"30513:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3626,"name":"bool","nodeType":"ElementaryTypeName","src":"30513:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"30512:6:7"},"scope":5077,"src":"30386:555:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3706,"nodeType":"Block","src":"31452:450:7","statements":[{"assignments":[3676,3679],"declarations":[{"constant":false,"id":3676,"mutability":"mutable","name":"host","nameLocation":"31475:4:7","nodeType":"VariableDeclaration","scope":3706,"src":"31463:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"},"typeName":{"id":3675,"nodeType":"UserDefinedTypeName","pathNode":{"id":3674,"name":"ISuperfluid","nameLocations":["31463:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":7599,"src":"31463:11:7"},"referencedDeclaration":7599,"src":"31463:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":3679,"mutability":"mutable","name":"ida","nameLocation":"31513:3:7","nodeType":"VariableDeclaration","scope":3706,"src":"31481:35:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"},"typeName":{"id":3678,"nodeType":"UserDefinedTypeName","pathNode":{"id":3677,"name":"IInstantDistributionAgreementV1","nameLocations":["31481:31:7"],"nodeType":"IdentifierPath","referencedDeclaration":5893,"src":"31481:31:7"},"referencedDeclaration":5893,"src":"31481:31:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"visibility":"internal"}],"id":3683,"initialValue":{"arguments":[{"id":3681,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3665,"src":"31543:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}],"id":3680,"name":"_getAndCacheHostAndIDA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4912,"src":"31520:22:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$6947_$returns$_t_contract$_ISuperfluid_$7599_$_t_contract$_IInstantDistributionAgreementV1_$5893_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"id":3682,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31520:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7599_$_t_contract$_IInstantDistributionAgreementV1_$5893_$","typeString":"tuple(contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"31462:87:7"},{"expression":{"arguments":[{"id":3687,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3679,"src":"31591:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},{"arguments":[{"expression":{"id":3690,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3679,"src":"31640:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"id":3691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31644:11:7","memberName":"updateIndex","nodeType":"MemberAccess","referencedDeclaration":5602,"src":"31640:15:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_uint32_$_t_uint128_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,uint32,uint128,bytes memory) external returns (bytes memory)"}},{"components":[{"id":3692,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3665,"src":"31695:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},{"id":3693,"name":"indexId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3667,"src":"31722:7:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":3694,"name":"indexValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3669,"src":"31751:10:7","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"arguments":[{"hexValue":"30","id":3697,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31793:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3696,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"31783:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":3695,"name":"bytes","nodeType":"ElementaryTypeName","src":"31787:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":3698,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31783:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":3699,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31673:159:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_uint32_$_t_uint128_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,uint32,uint128,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_uint32_$_t_uint128_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,uint32,uint128,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_uint32_$_t_uint128_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,uint32,uint128,bytes memory)"}],"expression":{"id":3688,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"31608:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3689,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"31612:10:7","memberName":"encodeCall","nodeType":"MemberAccess","src":"31608:14:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3700,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31608:238:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"3078","id":3701,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"31860:4:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""}],"expression":{"id":3684,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3676,"src":"31559:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"id":3686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31564:13:7","memberName":"callAgreement","nodeType":"MemberAccess","referencedDeclaration":7497,"src":"31559:18:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6395_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory) external returns (bytes memory)"}},"id":3702,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31559:315:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3703,"nodeType":"ExpressionStatement","src":"31559:315:7"},{"expression":{"hexValue":"74727565","id":3704,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"31891:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":3673,"id":3705,"nodeType":"Return","src":"31884:11:7"}]},"documentation":{"id":3662,"nodeType":"StructuredDocumentation","src":"30947:365:7","text":" @dev Updates an index value. This distributes an amount of tokens equal to\n `indexValue - lastIndexValue`. See `distribute` for another way to distribute.\n @param token Super Token used with the index.\n @param indexId ID of the index.\n @param indexValue New TOTAL index value, this will equal the total amount distributed."},"id":3707,"implemented":true,"kind":"function","modifiers":[],"name":"updateIndexValue","nameLocation":"31326:16:7","nodeType":"FunctionDefinition","parameters":{"id":3670,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3665,"mutability":"mutable","name":"token","nameLocation":"31364:5:7","nodeType":"VariableDeclaration","scope":3707,"src":"31352:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":3664,"nodeType":"UserDefinedTypeName","pathNode":{"id":3663,"name":"ISuperToken","nameLocations":["31352:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"31352:11:7"},"referencedDeclaration":6947,"src":"31352:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":3667,"mutability":"mutable","name":"indexId","nameLocation":"31386:7:7","nodeType":"VariableDeclaration","scope":3707,"src":"31379:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":3666,"name":"uint32","nodeType":"ElementaryTypeName","src":"31379:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":3669,"mutability":"mutable","name":"indexValue","nameLocation":"31411:10:7","nodeType":"VariableDeclaration","scope":3707,"src":"31403:18:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3668,"name":"uint128","nodeType":"ElementaryTypeName","src":"31403:7:7","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"31342:85:7"},"returnParameters":{"id":3673,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3672,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3707,"src":"31446:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3671,"name":"bool","nodeType":"ElementaryTypeName","src":"31446:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"31445:6:7"},"scope":5077,"src":"31317:585:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3754,"nodeType":"Block","src":"32508:454:7","statements":[{"assignments":[3724,3727],"declarations":[{"constant":false,"id":3724,"mutability":"mutable","name":"host","nameLocation":"32531:4:7","nodeType":"VariableDeclaration","scope":3754,"src":"32519:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"},"typeName":{"id":3723,"nodeType":"UserDefinedTypeName","pathNode":{"id":3722,"name":"ISuperfluid","nameLocations":["32519:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":7599,"src":"32519:11:7"},"referencedDeclaration":7599,"src":"32519:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":3727,"mutability":"mutable","name":"ida","nameLocation":"32569:3:7","nodeType":"VariableDeclaration","scope":3754,"src":"32537:35:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"},"typeName":{"id":3726,"nodeType":"UserDefinedTypeName","pathNode":{"id":3725,"name":"IInstantDistributionAgreementV1","nameLocations":["32537:31:7"],"nodeType":"IdentifierPath","referencedDeclaration":5893,"src":"32537:31:7"},"referencedDeclaration":5893,"src":"32537:31:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"visibility":"internal"}],"id":3731,"initialValue":{"arguments":[{"id":3729,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3711,"src":"32599:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}],"id":3728,"name":"_getAndCacheHostAndIDA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4912,"src":"32576:22:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$6947_$returns$_t_contract$_ISuperfluid_$7599_$_t_contract$_IInstantDistributionAgreementV1_$5893_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"id":3730,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32576:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7599_$_t_contract$_IInstantDistributionAgreementV1_$5893_$","typeString":"tuple(contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"32518:87:7"},{"expression":{"arguments":[{"id":3735,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3727,"src":"32647:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},{"arguments":[{"expression":{"id":3738,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3727,"src":"32696:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"id":3739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"32700:11:7","memberName":"updateIndex","nodeType":"MemberAccess","referencedDeclaration":5602,"src":"32696:15:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_uint32_$_t_uint128_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,uint32,uint128,bytes memory) external returns (bytes memory)"}},{"components":[{"id":3740,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3711,"src":"32751:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},{"id":3741,"name":"indexId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3713,"src":"32778:7:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":3742,"name":"indexValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3715,"src":"32807:10:7","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"arguments":[{"hexValue":"30","id":3745,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32849:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3744,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"32839:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":3743,"name":"bytes","nodeType":"ElementaryTypeName","src":"32843:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":3746,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32839:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":3747,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"32729:159:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_uint32_$_t_uint128_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,uint32,uint128,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_uint32_$_t_uint128_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,uint32,uint128,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_uint32_$_t_uint128_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,uint32,uint128,bytes memory)"}],"expression":{"id":3736,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"32664:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3737,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"32668:10:7","memberName":"encodeCall","nodeType":"MemberAccess","src":"32664:14:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3748,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32664:238:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":3749,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3717,"src":"32916:8:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":3732,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3724,"src":"32615:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"id":3734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"32620:13:7","memberName":"callAgreement","nodeType":"MemberAccess","referencedDeclaration":7497,"src":"32615:18:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6395_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory) external returns (bytes memory)"}},"id":3750,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32615:319:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3751,"nodeType":"ExpressionStatement","src":"32615:319:7"},{"expression":{"hexValue":"74727565","id":3752,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"32951:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":3721,"id":3753,"nodeType":"Return","src":"32944:11:7"}]},"documentation":{"id":3708,"nodeType":"StructuredDocumentation","src":"31908:429:7","text":" @dev Updates an index value with userData. This distributes an amount of tokens equal to\n `indexValue - lastIndexValue`. See `distribute` for another way to distribute.\n @param token Super Token used with the index.\n @param indexId ID of the index.\n @param indexValue New TOTAL index value, this will equal the total amount distributed.\n @param userData Arbitrary user data field."},"id":3755,"implemented":true,"kind":"function","modifiers":[],"name":"updateIndexValue","nameLocation":"32351:16:7","nodeType":"FunctionDefinition","parameters":{"id":3718,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3711,"mutability":"mutable","name":"token","nameLocation":"32389:5:7","nodeType":"VariableDeclaration","scope":3755,"src":"32377:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":3710,"nodeType":"UserDefinedTypeName","pathNode":{"id":3709,"name":"ISuperToken","nameLocations":["32377:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"32377:11:7"},"referencedDeclaration":6947,"src":"32377:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":3713,"mutability":"mutable","name":"indexId","nameLocation":"32411:7:7","nodeType":"VariableDeclaration","scope":3755,"src":"32404:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":3712,"name":"uint32","nodeType":"ElementaryTypeName","src":"32404:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":3715,"mutability":"mutable","name":"indexValue","nameLocation":"32436:10:7","nodeType":"VariableDeclaration","scope":3755,"src":"32428:18:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3714,"name":"uint128","nodeType":"ElementaryTypeName","src":"32428:7:7","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3717,"mutability":"mutable","name":"userData","nameLocation":"32469:8:7","nodeType":"VariableDeclaration","scope":3755,"src":"32456:21:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3716,"name":"bytes","nodeType":"ElementaryTypeName","src":"32456:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"32367:116:7"},"returnParameters":{"id":3721,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3720,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3755,"src":"32502:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3719,"name":"bool","nodeType":"ElementaryTypeName","src":"32502:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"32501:6:7"},"scope":5077,"src":"32342:620:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3800,"nodeType":"Block","src":"33465:445:7","statements":[{"assignments":[3770,3773],"declarations":[{"constant":false,"id":3770,"mutability":"mutable","name":"host","nameLocation":"33488:4:7","nodeType":"VariableDeclaration","scope":3800,"src":"33476:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"},"typeName":{"id":3769,"nodeType":"UserDefinedTypeName","pathNode":{"id":3768,"name":"ISuperfluid","nameLocations":["33476:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":7599,"src":"33476:11:7"},"referencedDeclaration":7599,"src":"33476:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":3773,"mutability":"mutable","name":"ida","nameLocation":"33526:3:7","nodeType":"VariableDeclaration","scope":3800,"src":"33494:35:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"},"typeName":{"id":3772,"nodeType":"UserDefinedTypeName","pathNode":{"id":3771,"name":"IInstantDistributionAgreementV1","nameLocations":["33494:31:7"],"nodeType":"IdentifierPath","referencedDeclaration":5893,"src":"33494:31:7"},"referencedDeclaration":5893,"src":"33494:31:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"visibility":"internal"}],"id":3777,"initialValue":{"arguments":[{"id":3775,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3759,"src":"33556:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}],"id":3774,"name":"_getAndCacheHostAndIDA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4912,"src":"33533:22:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$6947_$returns$_t_contract$_ISuperfluid_$7599_$_t_contract$_IInstantDistributionAgreementV1_$5893_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"id":3776,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33533:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7599_$_t_contract$_IInstantDistributionAgreementV1_$5893_$","typeString":"tuple(contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"33475:87:7"},{"expression":{"arguments":[{"id":3781,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3773,"src":"33604:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},{"arguments":[{"expression":{"id":3784,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3773,"src":"33653:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"id":3785,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"33657:10:7","memberName":"distribute","nodeType":"MemberAccess","referencedDeclaration":5637,"src":"33653:14:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_uint32_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,uint32,uint256,bytes memory) external returns (bytes memory)"}},{"components":[{"id":3786,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3759,"src":"33707:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},{"id":3787,"name":"indexId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3761,"src":"33734:7:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":3788,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3763,"src":"33763:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":3791,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"33801:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3790,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"33791:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":3789,"name":"bytes","nodeType":"ElementaryTypeName","src":"33795:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":3792,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33791:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":3793,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"33685:155:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_uint32_$_t_uint256_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,uint32,uint256,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_uint32_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,uint32,uint256,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_uint32_$_t_uint256_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,uint32,uint256,bytes memory)"}],"expression":{"id":3782,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"33621:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3783,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"33625:10:7","memberName":"encodeCall","nodeType":"MemberAccess","src":"33621:14:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3794,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33621:233:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"3078","id":3795,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"33868:4:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""}],"expression":{"id":3778,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3770,"src":"33572:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"id":3780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"33577:13:7","memberName":"callAgreement","nodeType":"MemberAccess","referencedDeclaration":7497,"src":"33572:18:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6395_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory) external returns (bytes memory)"}},"id":3796,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33572:310:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3797,"nodeType":"ExpressionStatement","src":"33572:310:7"},{"expression":{"hexValue":"74727565","id":3798,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"33899:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":3767,"id":3799,"nodeType":"Return","src":"33892:11:7"}]},"documentation":{"id":3756,"nodeType":"StructuredDocumentation","src":"32968:367:7","text":" @dev Distributes tokens in a more developer friendly way than `updateIndex`. Instead of\n passing the new total index value, this function will increase the index value by `amount`.\n @param token Super Token used with the index.\n @param indexId ID of the index.\n @param amount Amount by which the index value should increase."},"id":3801,"implemented":true,"kind":"function","modifiers":[],"name":"distribute","nameLocation":"33349:10:7","nodeType":"FunctionDefinition","parameters":{"id":3764,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3759,"mutability":"mutable","name":"token","nameLocation":"33381:5:7","nodeType":"VariableDeclaration","scope":3801,"src":"33369:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":3758,"nodeType":"UserDefinedTypeName","pathNode":{"id":3757,"name":"ISuperToken","nameLocations":["33369:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"33369:11:7"},"referencedDeclaration":6947,"src":"33369:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":3761,"mutability":"mutable","name":"indexId","nameLocation":"33403:7:7","nodeType":"VariableDeclaration","scope":3801,"src":"33396:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":3760,"name":"uint32","nodeType":"ElementaryTypeName","src":"33396:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":3763,"mutability":"mutable","name":"amount","nameLocation":"33428:6:7","nodeType":"VariableDeclaration","scope":3801,"src":"33420:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3762,"name":"uint256","nodeType":"ElementaryTypeName","src":"33420:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33359:81:7"},"returnParameters":{"id":3767,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3766,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3801,"src":"33459:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3765,"name":"bool","nodeType":"ElementaryTypeName","src":"33459:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"33458:6:7"},"scope":5077,"src":"33340:570:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3848,"nodeType":"Block","src":"34547:449:7","statements":[{"assignments":[3818,3821],"declarations":[{"constant":false,"id":3818,"mutability":"mutable","name":"host","nameLocation":"34570:4:7","nodeType":"VariableDeclaration","scope":3848,"src":"34558:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"},"typeName":{"id":3817,"nodeType":"UserDefinedTypeName","pathNode":{"id":3816,"name":"ISuperfluid","nameLocations":["34558:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":7599,"src":"34558:11:7"},"referencedDeclaration":7599,"src":"34558:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":3821,"mutability":"mutable","name":"ida","nameLocation":"34608:3:7","nodeType":"VariableDeclaration","scope":3848,"src":"34576:35:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"},"typeName":{"id":3820,"nodeType":"UserDefinedTypeName","pathNode":{"id":3819,"name":"IInstantDistributionAgreementV1","nameLocations":["34576:31:7"],"nodeType":"IdentifierPath","referencedDeclaration":5893,"src":"34576:31:7"},"referencedDeclaration":5893,"src":"34576:31:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"visibility":"internal"}],"id":3825,"initialValue":{"arguments":[{"id":3823,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3805,"src":"34638:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}],"id":3822,"name":"_getAndCacheHostAndIDA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4912,"src":"34615:22:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$6947_$returns$_t_contract$_ISuperfluid_$7599_$_t_contract$_IInstantDistributionAgreementV1_$5893_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"id":3824,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34615:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7599_$_t_contract$_IInstantDistributionAgreementV1_$5893_$","typeString":"tuple(contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"34557:87:7"},{"expression":{"arguments":[{"id":3829,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3821,"src":"34686:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},{"arguments":[{"expression":{"id":3832,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3821,"src":"34735:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"id":3833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"34739:10:7","memberName":"distribute","nodeType":"MemberAccess","referencedDeclaration":5637,"src":"34735:14:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_uint32_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,uint32,uint256,bytes memory) external returns (bytes memory)"}},{"components":[{"id":3834,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3805,"src":"34789:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},{"id":3835,"name":"indexId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3807,"src":"34816:7:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":3836,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3809,"src":"34845:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":3839,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"34883:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3838,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"34873:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":3837,"name":"bytes","nodeType":"ElementaryTypeName","src":"34877:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":3840,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34873:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":3841,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"34767:155:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_uint32_$_t_uint256_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,uint32,uint256,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_uint32_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,uint32,uint256,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_uint32_$_t_uint256_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,uint32,uint256,bytes memory)"}],"expression":{"id":3830,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"34703:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3831,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"34707:10:7","memberName":"encodeCall","nodeType":"MemberAccess","src":"34703:14:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3842,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34703:233:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":3843,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3811,"src":"34950:8:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":3826,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3818,"src":"34654:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"id":3828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"34659:13:7","memberName":"callAgreement","nodeType":"MemberAccess","referencedDeclaration":7497,"src":"34654:18:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6395_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory) external returns (bytes memory)"}},"id":3844,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34654:314:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3845,"nodeType":"ExpressionStatement","src":"34654:314:7"},{"expression":{"hexValue":"74727565","id":3846,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"34985:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":3815,"id":3847,"nodeType":"Return","src":"34978:11:7"}]},"documentation":{"id":3802,"nodeType":"StructuredDocumentation","src":"33916:470:7","text":" @dev Distributes tokens in a more developer friendly way than `updateIndex` (w user data). Instead of\n passing the new total index value, this function will increase the index value by `amount`.\n This takes arbitrary user data.\n @param token Super Token used with the index.\n @param indexId ID of the index.\n @param amount Amount by which the index value should increase.\n @param userData Arbitrary user data field."},"id":3849,"implemented":true,"kind":"function","modifiers":[],"name":"distribute","nameLocation":"34400:10:7","nodeType":"FunctionDefinition","parameters":{"id":3812,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3805,"mutability":"mutable","name":"token","nameLocation":"34432:5:7","nodeType":"VariableDeclaration","scope":3849,"src":"34420:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":3804,"nodeType":"UserDefinedTypeName","pathNode":{"id":3803,"name":"ISuperToken","nameLocations":["34420:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"34420:11:7"},"referencedDeclaration":6947,"src":"34420:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":3807,"mutability":"mutable","name":"indexId","nameLocation":"34454:7:7","nodeType":"VariableDeclaration","scope":3849,"src":"34447:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":3806,"name":"uint32","nodeType":"ElementaryTypeName","src":"34447:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":3809,"mutability":"mutable","name":"amount","nameLocation":"34479:6:7","nodeType":"VariableDeclaration","scope":3849,"src":"34471:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3808,"name":"uint256","nodeType":"ElementaryTypeName","src":"34471:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3811,"mutability":"mutable","name":"userData","nameLocation":"34508:8:7","nodeType":"VariableDeclaration","scope":3849,"src":"34495:21:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3810,"name":"bytes","nodeType":"ElementaryTypeName","src":"34495:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"34410:112:7"},"returnParameters":{"id":3815,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3814,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3849,"src":"34541:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3813,"name":"bool","nodeType":"ElementaryTypeName","src":"34541:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34540:6:7"},"scope":5077,"src":"34391:605:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3894,"nodeType":"Block","src":"35518:457:7","statements":[{"assignments":[3864,3867],"declarations":[{"constant":false,"id":3864,"mutability":"mutable","name":"host","nameLocation":"35541:4:7","nodeType":"VariableDeclaration","scope":3894,"src":"35529:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"},"typeName":{"id":3863,"nodeType":"UserDefinedTypeName","pathNode":{"id":3862,"name":"ISuperfluid","nameLocations":["35529:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":7599,"src":"35529:11:7"},"referencedDeclaration":7599,"src":"35529:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":3867,"mutability":"mutable","name":"ida","nameLocation":"35579:3:7","nodeType":"VariableDeclaration","scope":3894,"src":"35547:35:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"},"typeName":{"id":3866,"nodeType":"UserDefinedTypeName","pathNode":{"id":3865,"name":"IInstantDistributionAgreementV1","nameLocations":["35547:31:7"],"nodeType":"IdentifierPath","referencedDeclaration":5893,"src":"35547:31:7"},"referencedDeclaration":5893,"src":"35547:31:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"visibility":"internal"}],"id":3871,"initialValue":{"arguments":[{"id":3869,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3853,"src":"35609:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}],"id":3868,"name":"_getAndCacheHostAndIDA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4912,"src":"35586:22:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$6947_$returns$_t_contract$_ISuperfluid_$7599_$_t_contract$_IInstantDistributionAgreementV1_$5893_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"id":3870,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"35586:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7599_$_t_contract$_IInstantDistributionAgreementV1_$5893_$","typeString":"tuple(contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"35528:87:7"},{"expression":{"arguments":[{"id":3875,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3867,"src":"35657:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},{"arguments":[{"expression":{"id":3878,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3867,"src":"35706:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"id":3879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"35710:19:7","memberName":"approveSubscription","nodeType":"MemberAccess","referencedDeclaration":5652,"src":"35706:23:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_uint32_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,uint32,bytes memory) external returns (bytes memory)"}},{"components":[{"id":3880,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3853,"src":"35769:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},{"id":3881,"name":"publisher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3855,"src":"35796:9:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3882,"name":"indexId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3857,"src":"35827:7:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"arguments":[{"hexValue":"30","id":3885,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"35866:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3884,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"35856:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":3883,"name":"bytes","nodeType":"ElementaryTypeName","src":"35860:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":3886,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"35856:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":3887,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"35747:158:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_uint32_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,uint32,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_uint32_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,uint32,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_uint32_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,uint32,bytes memory)"}],"expression":{"id":3876,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"35674:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3877,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"35678:10:7","memberName":"encodeCall","nodeType":"MemberAccess","src":"35674:14:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3888,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"35674:245:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"3078","id":3889,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"35933:4:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""}],"expression":{"id":3872,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3864,"src":"35625:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"id":3874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"35630:13:7","memberName":"callAgreement","nodeType":"MemberAccess","referencedDeclaration":7497,"src":"35625:18:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6395_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory) external returns (bytes memory)"}},"id":3890,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"35625:322:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3891,"nodeType":"ExpressionStatement","src":"35625:322:7"},{"expression":{"hexValue":"74727565","id":3892,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"35964:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":3861,"id":3893,"nodeType":"Return","src":"35957:11:7"}]},"documentation":{"id":3850,"nodeType":"StructuredDocumentation","src":"35002:374:7","text":" @dev Approves a subscription to an index. The subscriber's real time balance will not update\n until the subscription is approved, but once approved, the balance will be updated with\n prior distributions.\n @param token Super Token used with the index.\n @param publisher Publisher of the index.\n @param indexId ID of the index."},"id":3895,"implemented":true,"kind":"function","modifiers":[],"name":"approveSubscription","nameLocation":"35390:19:7","nodeType":"FunctionDefinition","parameters":{"id":3858,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3853,"mutability":"mutable","name":"token","nameLocation":"35431:5:7","nodeType":"VariableDeclaration","scope":3895,"src":"35419:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":3852,"nodeType":"UserDefinedTypeName","pathNode":{"id":3851,"name":"ISuperToken","nameLocations":["35419:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"35419:11:7"},"referencedDeclaration":6947,"src":"35419:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":3855,"mutability":"mutable","name":"publisher","nameLocation":"35454:9:7","nodeType":"VariableDeclaration","scope":3895,"src":"35446:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3854,"name":"address","nodeType":"ElementaryTypeName","src":"35446:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3857,"mutability":"mutable","name":"indexId","nameLocation":"35480:7:7","nodeType":"VariableDeclaration","scope":3895,"src":"35473:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":3856,"name":"uint32","nodeType":"ElementaryTypeName","src":"35473:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"35409:84:7"},"returnParameters":{"id":3861,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3860,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3895,"src":"35512:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3859,"name":"bool","nodeType":"ElementaryTypeName","src":"35512:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"35511:6:7"},"scope":5077,"src":"35381:594:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3942,"nodeType":"Block","src":"36593:461:7","statements":[{"assignments":[3912,3915],"declarations":[{"constant":false,"id":3912,"mutability":"mutable","name":"host","nameLocation":"36616:4:7","nodeType":"VariableDeclaration","scope":3942,"src":"36604:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"},"typeName":{"id":3911,"nodeType":"UserDefinedTypeName","pathNode":{"id":3910,"name":"ISuperfluid","nameLocations":["36604:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":7599,"src":"36604:11:7"},"referencedDeclaration":7599,"src":"36604:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":3915,"mutability":"mutable","name":"ida","nameLocation":"36654:3:7","nodeType":"VariableDeclaration","scope":3942,"src":"36622:35:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"},"typeName":{"id":3914,"nodeType":"UserDefinedTypeName","pathNode":{"id":3913,"name":"IInstantDistributionAgreementV1","nameLocations":["36622:31:7"],"nodeType":"IdentifierPath","referencedDeclaration":5893,"src":"36622:31:7"},"referencedDeclaration":5893,"src":"36622:31:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"visibility":"internal"}],"id":3919,"initialValue":{"arguments":[{"id":3917,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3899,"src":"36684:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}],"id":3916,"name":"_getAndCacheHostAndIDA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4912,"src":"36661:22:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$6947_$returns$_t_contract$_ISuperfluid_$7599_$_t_contract$_IInstantDistributionAgreementV1_$5893_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"id":3918,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36661:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7599_$_t_contract$_IInstantDistributionAgreementV1_$5893_$","typeString":"tuple(contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"36603:87:7"},{"expression":{"arguments":[{"id":3923,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3915,"src":"36732:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},{"arguments":[{"expression":{"id":3926,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3915,"src":"36781:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"id":3927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"36785:19:7","memberName":"approveSubscription","nodeType":"MemberAccess","referencedDeclaration":5652,"src":"36781:23:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_uint32_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,uint32,bytes memory) external returns (bytes memory)"}},{"components":[{"id":3928,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3899,"src":"36844:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},{"id":3929,"name":"publisher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3901,"src":"36871:9:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3930,"name":"indexId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3903,"src":"36902:7:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"arguments":[{"hexValue":"30","id":3933,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"36941:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3932,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"36931:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":3931,"name":"bytes","nodeType":"ElementaryTypeName","src":"36935:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":3934,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36931:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":3935,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"36822:158:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_uint32_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,uint32,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_uint32_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,uint32,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_uint32_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,uint32,bytes memory)"}],"expression":{"id":3924,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"36749:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3925,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"36753:10:7","memberName":"encodeCall","nodeType":"MemberAccess","src":"36749:14:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3936,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36749:245:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":3937,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3905,"src":"37008:8:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":3920,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3912,"src":"36700:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"id":3922,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"36705:13:7","memberName":"callAgreement","nodeType":"MemberAccess","referencedDeclaration":7497,"src":"36700:18:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6395_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory) external returns (bytes memory)"}},"id":3938,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36700:326:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3939,"nodeType":"ExpressionStatement","src":"36700:326:7"},{"expression":{"hexValue":"74727565","id":3940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"37043:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":3909,"id":3941,"nodeType":"Return","src":"37036:11:7"}]},"documentation":{"id":3896,"nodeType":"StructuredDocumentation","src":"35981:439:7","text":" @dev Approves a subscription to an index with user data. The subscriber's real time balance will not update\n until the subscription is approved, but once approved, the balance will be updated with\n prior distributions.\n @param token Super Token used with the index.\n @param publisher Publisher of the index.\n @param indexId ID of the index.\n @param userData Arbitrary user data field."},"id":3943,"implemented":true,"kind":"function","modifiers":[],"name":"approveSubscription","nameLocation":"36434:19:7","nodeType":"FunctionDefinition","parameters":{"id":3906,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3899,"mutability":"mutable","name":"token","nameLocation":"36475:5:7","nodeType":"VariableDeclaration","scope":3943,"src":"36463:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":3898,"nodeType":"UserDefinedTypeName","pathNode":{"id":3897,"name":"ISuperToken","nameLocations":["36463:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"36463:11:7"},"referencedDeclaration":6947,"src":"36463:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":3901,"mutability":"mutable","name":"publisher","nameLocation":"36498:9:7","nodeType":"VariableDeclaration","scope":3943,"src":"36490:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3900,"name":"address","nodeType":"ElementaryTypeName","src":"36490:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3903,"mutability":"mutable","name":"indexId","nameLocation":"36524:7:7","nodeType":"VariableDeclaration","scope":3943,"src":"36517:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":3902,"name":"uint32","nodeType":"ElementaryTypeName","src":"36517:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":3905,"mutability":"mutable","name":"userData","nameLocation":"36554:8:7","nodeType":"VariableDeclaration","scope":3943,"src":"36541:21:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3904,"name":"bytes","nodeType":"ElementaryTypeName","src":"36541:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"36453:115:7"},"returnParameters":{"id":3909,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3908,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3943,"src":"36587:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3907,"name":"bool","nodeType":"ElementaryTypeName","src":"36587:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"36586:6:7"},"scope":5077,"src":"36425:629:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3988,"nodeType":"Block","src":"37408:456:7","statements":[{"assignments":[3958,3961],"declarations":[{"constant":false,"id":3958,"mutability":"mutable","name":"host","nameLocation":"37431:4:7","nodeType":"VariableDeclaration","scope":3988,"src":"37419:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"},"typeName":{"id":3957,"nodeType":"UserDefinedTypeName","pathNode":{"id":3956,"name":"ISuperfluid","nameLocations":["37419:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":7599,"src":"37419:11:7"},"referencedDeclaration":7599,"src":"37419:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":3961,"mutability":"mutable","name":"ida","nameLocation":"37469:3:7","nodeType":"VariableDeclaration","scope":3988,"src":"37437:35:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"},"typeName":{"id":3960,"nodeType":"UserDefinedTypeName","pathNode":{"id":3959,"name":"IInstantDistributionAgreementV1","nameLocations":["37437:31:7"],"nodeType":"IdentifierPath","referencedDeclaration":5893,"src":"37437:31:7"},"referencedDeclaration":5893,"src":"37437:31:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"visibility":"internal"}],"id":3965,"initialValue":{"arguments":[{"id":3963,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3947,"src":"37499:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}],"id":3962,"name":"_getAndCacheHostAndIDA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4912,"src":"37476:22:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$6947_$returns$_t_contract$_ISuperfluid_$7599_$_t_contract$_IInstantDistributionAgreementV1_$5893_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"id":3964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37476:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7599_$_t_contract$_IInstantDistributionAgreementV1_$5893_$","typeString":"tuple(contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"37418:87:7"},{"expression":{"arguments":[{"id":3969,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3961,"src":"37547:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},{"arguments":[{"expression":{"id":3972,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3961,"src":"37596:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"id":3973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37600:18:7","memberName":"revokeSubscription","nodeType":"MemberAccess","referencedDeclaration":5695,"src":"37596:22:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_uint32_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,uint32,bytes memory) external returns (bytes memory)"}},{"components":[{"id":3974,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3947,"src":"37658:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},{"id":3975,"name":"publisher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3949,"src":"37685:9:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3976,"name":"indexId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3951,"src":"37716:7:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"arguments":[{"hexValue":"30","id":3979,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37755:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3978,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"37745:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":3977,"name":"bytes","nodeType":"ElementaryTypeName","src":"37749:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":3980,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37745:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":3981,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"37636:158:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_uint32_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,uint32,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_uint32_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,uint32,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_uint32_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,uint32,bytes memory)"}],"expression":{"id":3970,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"37564:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3971,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"37568:10:7","memberName":"encodeCall","nodeType":"MemberAccess","src":"37564:14:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3982,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37564:244:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"3078","id":3983,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"37822:4:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""}],"expression":{"id":3966,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3958,"src":"37515:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"id":3968,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37520:13:7","memberName":"callAgreement","nodeType":"MemberAccess","referencedDeclaration":7497,"src":"37515:18:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6395_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory) external returns (bytes memory)"}},"id":3984,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37515:321:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3985,"nodeType":"ExpressionStatement","src":"37515:321:7"},{"expression":{"hexValue":"74727565","id":3986,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"37853:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":3955,"id":3987,"nodeType":"Return","src":"37846:11:7"}]},"documentation":{"id":3944,"nodeType":"StructuredDocumentation","src":"37060:207:7","text":" @dev Revokes a previously approved subscription.\n @param token Super Token used with the index.\n @param publisher Publisher of the index.\n @param indexId ID of the index."},"id":3989,"implemented":true,"kind":"function","modifiers":[],"name":"revokeSubscription","nameLocation":"37281:18:7","nodeType":"FunctionDefinition","parameters":{"id":3952,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3947,"mutability":"mutable","name":"token","nameLocation":"37321:5:7","nodeType":"VariableDeclaration","scope":3989,"src":"37309:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":3946,"nodeType":"UserDefinedTypeName","pathNode":{"id":3945,"name":"ISuperToken","nameLocations":["37309:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"37309:11:7"},"referencedDeclaration":6947,"src":"37309:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":3949,"mutability":"mutable","name":"publisher","nameLocation":"37344:9:7","nodeType":"VariableDeclaration","scope":3989,"src":"37336:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3948,"name":"address","nodeType":"ElementaryTypeName","src":"37336:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3951,"mutability":"mutable","name":"indexId","nameLocation":"37370:7:7","nodeType":"VariableDeclaration","scope":3989,"src":"37363:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":3950,"name":"uint32","nodeType":"ElementaryTypeName","src":"37363:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"37299:84:7"},"returnParameters":{"id":3955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3954,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3989,"src":"37402:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3953,"name":"bool","nodeType":"ElementaryTypeName","src":"37402:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"37401:6:7"},"scope":5077,"src":"37272:592:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4036,"nodeType":"Block","src":"38331:460:7","statements":[{"assignments":[4006,4009],"declarations":[{"constant":false,"id":4006,"mutability":"mutable","name":"host","nameLocation":"38354:4:7","nodeType":"VariableDeclaration","scope":4036,"src":"38342:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"},"typeName":{"id":4005,"nodeType":"UserDefinedTypeName","pathNode":{"id":4004,"name":"ISuperfluid","nameLocations":["38342:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":7599,"src":"38342:11:7"},"referencedDeclaration":7599,"src":"38342:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":4009,"mutability":"mutable","name":"ida","nameLocation":"38392:3:7","nodeType":"VariableDeclaration","scope":4036,"src":"38360:35:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"},"typeName":{"id":4008,"nodeType":"UserDefinedTypeName","pathNode":{"id":4007,"name":"IInstantDistributionAgreementV1","nameLocations":["38360:31:7"],"nodeType":"IdentifierPath","referencedDeclaration":5893,"src":"38360:31:7"},"referencedDeclaration":5893,"src":"38360:31:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"visibility":"internal"}],"id":4013,"initialValue":{"arguments":[{"id":4011,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3993,"src":"38422:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}],"id":4010,"name":"_getAndCacheHostAndIDA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4912,"src":"38399:22:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$6947_$returns$_t_contract$_ISuperfluid_$7599_$_t_contract$_IInstantDistributionAgreementV1_$5893_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"id":4012,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38399:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7599_$_t_contract$_IInstantDistributionAgreementV1_$5893_$","typeString":"tuple(contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"38341:87:7"},{"expression":{"arguments":[{"id":4017,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4009,"src":"38470:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},{"arguments":[{"expression":{"id":4020,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4009,"src":"38519:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"id":4021,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38523:18:7","memberName":"revokeSubscription","nodeType":"MemberAccess","referencedDeclaration":5695,"src":"38519:22:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_uint32_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,uint32,bytes memory) external returns (bytes memory)"}},{"components":[{"id":4022,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3993,"src":"38581:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},{"id":4023,"name":"publisher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3995,"src":"38608:9:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4024,"name":"indexId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3997,"src":"38639:7:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"arguments":[{"hexValue":"30","id":4027,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"38678:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4026,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"38668:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":4025,"name":"bytes","nodeType":"ElementaryTypeName","src":"38672:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":4028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38668:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":4029,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"38559:158:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_uint32_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,uint32,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_uint32_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,uint32,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_uint32_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,uint32,bytes memory)"}],"expression":{"id":4018,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"38487:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4019,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"38491:10:7","memberName":"encodeCall","nodeType":"MemberAccess","src":"38487:14:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4030,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38487:244:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":4031,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3999,"src":"38745:8:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":4014,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4006,"src":"38438:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"id":4016,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38443:13:7","memberName":"callAgreement","nodeType":"MemberAccess","referencedDeclaration":7497,"src":"38438:18:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6395_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory) external returns (bytes memory)"}},"id":4032,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38438:325:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4033,"nodeType":"ExpressionStatement","src":"38438:325:7"},{"expression":{"hexValue":"74727565","id":4034,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"38780:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":4003,"id":4035,"nodeType":"Return","src":"38773:11:7"}]},"documentation":{"id":3990,"nodeType":"StructuredDocumentation","src":"37870:289:7","text":" @dev Revokes a previously approved subscription. This takes arbitrary user data.\n @param token Super Token used with the index.\n @param publisher Publisher of the index.\n @param indexId ID of the index.\n @param userData Arbitrary user data field."},"id":4037,"implemented":true,"kind":"function","modifiers":[],"name":"revokeSubscription","nameLocation":"38173:18:7","nodeType":"FunctionDefinition","parameters":{"id":4000,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3993,"mutability":"mutable","name":"token","nameLocation":"38213:5:7","nodeType":"VariableDeclaration","scope":4037,"src":"38201:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":3992,"nodeType":"UserDefinedTypeName","pathNode":{"id":3991,"name":"ISuperToken","nameLocations":["38201:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"38201:11:7"},"referencedDeclaration":6947,"src":"38201:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":3995,"mutability":"mutable","name":"publisher","nameLocation":"38236:9:7","nodeType":"VariableDeclaration","scope":4037,"src":"38228:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3994,"name":"address","nodeType":"ElementaryTypeName","src":"38228:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3997,"mutability":"mutable","name":"indexId","nameLocation":"38262:7:7","nodeType":"VariableDeclaration","scope":4037,"src":"38255:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":3996,"name":"uint32","nodeType":"ElementaryTypeName","src":"38255:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":3999,"mutability":"mutable","name":"userData","nameLocation":"38292:8:7","nodeType":"VariableDeclaration","scope":4037,"src":"38279:21:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3998,"name":"bytes","nodeType":"ElementaryTypeName","src":"38279:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"38191:115:7"},"returnParameters":{"id":4003,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4002,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4037,"src":"38325:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4001,"name":"bool","nodeType":"ElementaryTypeName","src":"38325:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"38324:6:7"},"scope":5077,"src":"38164:627:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4085,"nodeType":"Block","src":"39311:481:7","statements":[{"assignments":[4054,4057],"declarations":[{"constant":false,"id":4054,"mutability":"mutable","name":"host","nameLocation":"39334:4:7","nodeType":"VariableDeclaration","scope":4085,"src":"39322:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"},"typeName":{"id":4053,"nodeType":"UserDefinedTypeName","pathNode":{"id":4052,"name":"ISuperfluid","nameLocations":["39322:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":7599,"src":"39322:11:7"},"referencedDeclaration":7599,"src":"39322:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":4057,"mutability":"mutable","name":"ida","nameLocation":"39372:3:7","nodeType":"VariableDeclaration","scope":4085,"src":"39340:35:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"},"typeName":{"id":4056,"nodeType":"UserDefinedTypeName","pathNode":{"id":4055,"name":"IInstantDistributionAgreementV1","nameLocations":["39340:31:7"],"nodeType":"IdentifierPath","referencedDeclaration":5893,"src":"39340:31:7"},"referencedDeclaration":5893,"src":"39340:31:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"visibility":"internal"}],"id":4061,"initialValue":{"arguments":[{"id":4059,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4041,"src":"39402:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}],"id":4058,"name":"_getAndCacheHostAndIDA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4912,"src":"39379:22:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$6947_$returns$_t_contract$_ISuperfluid_$7599_$_t_contract$_IInstantDistributionAgreementV1_$5893_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"id":4060,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39379:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7599_$_t_contract$_IInstantDistributionAgreementV1_$5893_$","typeString":"tuple(contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"39321:87:7"},{"expression":{"arguments":[{"id":4065,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4057,"src":"39447:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},{"arguments":[{"expression":{"id":4068,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4057,"src":"39496:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"id":4069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"39500:18:7","memberName":"updateSubscription","nodeType":"MemberAccess","referencedDeclaration":5740,"src":"39496:22:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_uint32_$_t_address_$_t_uint128_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,uint32,address,uint128,bytes memory) external returns (bytes memory)"}},{"components":[{"id":4070,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4041,"src":"39558:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},{"id":4071,"name":"indexId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4043,"src":"39585:7:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":4072,"name":"subscriber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4045,"src":"39614:10:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4073,"name":"units","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4047,"src":"39646:5:7","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"arguments":[{"hexValue":"30","id":4076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39683:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4075,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"39673:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":4074,"name":"bytes","nodeType":"ElementaryTypeName","src":"39677:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":4077,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39673:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":4078,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"39536:186:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_uint32_$_t_address_$_t_uint128_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,uint32,address,uint128,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_uint32_$_t_address_$_t_uint128_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,uint32,address,uint128,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_uint32_$_t_address_$_t_uint128_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,uint32,address,uint128,bytes memory)"}],"expression":{"id":4066,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"39464:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4067,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"39468:10:7","memberName":"encodeCall","nodeType":"MemberAccess","src":"39464:14:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4079,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39464:272:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"3078","id":4080,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"39750:4:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""}],"expression":{"id":4062,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4054,"src":"39418:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"id":4064,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"39423:13:7","memberName":"callAgreement","nodeType":"MemberAccess","referencedDeclaration":7497,"src":"39418:18:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6395_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory) external returns (bytes memory)"}},"id":4081,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39418:346:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4082,"nodeType":"ExpressionStatement","src":"39418:346:7"},{"expression":{"hexValue":"74727565","id":4083,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"39781:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":4051,"id":4084,"nodeType":"Return","src":"39774:11:7"}]},"documentation":{"id":4038,"nodeType":"StructuredDocumentation","src":"38797:344:7","text":" @dev Updates the units of a subscription. This changes the number of shares the subscriber holds\n @param token Super Token used with the index.\n @param indexId ID of the index.\n @param subscriber Subscriber address whose units are to be updated.\n @param units New number of units the subscriber holds."},"id":4086,"implemented":true,"kind":"function","modifiers":[],"name":"updateSubscriptionUnits","nameLocation":"39155:23:7","nodeType":"FunctionDefinition","parameters":{"id":4048,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4041,"mutability":"mutable","name":"token","nameLocation":"39200:5:7","nodeType":"VariableDeclaration","scope":4086,"src":"39188:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":4040,"nodeType":"UserDefinedTypeName","pathNode":{"id":4039,"name":"ISuperToken","nameLocations":["39188:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"39188:11:7"},"referencedDeclaration":6947,"src":"39188:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":4043,"mutability":"mutable","name":"indexId","nameLocation":"39222:7:7","nodeType":"VariableDeclaration","scope":4086,"src":"39215:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4042,"name":"uint32","nodeType":"ElementaryTypeName","src":"39215:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":4045,"mutability":"mutable","name":"subscriber","nameLocation":"39247:10:7","nodeType":"VariableDeclaration","scope":4086,"src":"39239:18:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4044,"name":"address","nodeType":"ElementaryTypeName","src":"39239:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4047,"mutability":"mutable","name":"units","nameLocation":"39275:5:7","nodeType":"VariableDeclaration","scope":4086,"src":"39267:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":4046,"name":"uint128","nodeType":"ElementaryTypeName","src":"39267:7:7","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"39178:108:7"},"returnParameters":{"id":4051,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4050,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4086,"src":"39305:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4049,"name":"bool","nodeType":"ElementaryTypeName","src":"39305:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"39304:6:7"},"scope":5077,"src":"39146:646:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4136,"nodeType":"Block","src":"40433:485:7","statements":[{"assignments":[4105,4108],"declarations":[{"constant":false,"id":4105,"mutability":"mutable","name":"host","nameLocation":"40456:4:7","nodeType":"VariableDeclaration","scope":4136,"src":"40444:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"},"typeName":{"id":4104,"nodeType":"UserDefinedTypeName","pathNode":{"id":4103,"name":"ISuperfluid","nameLocations":["40444:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":7599,"src":"40444:11:7"},"referencedDeclaration":7599,"src":"40444:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":4108,"mutability":"mutable","name":"ida","nameLocation":"40494:3:7","nodeType":"VariableDeclaration","scope":4136,"src":"40462:35:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"},"typeName":{"id":4107,"nodeType":"UserDefinedTypeName","pathNode":{"id":4106,"name":"IInstantDistributionAgreementV1","nameLocations":["40462:31:7"],"nodeType":"IdentifierPath","referencedDeclaration":5893,"src":"40462:31:7"},"referencedDeclaration":5893,"src":"40462:31:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"visibility":"internal"}],"id":4112,"initialValue":{"arguments":[{"id":4110,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4090,"src":"40524:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}],"id":4109,"name":"_getAndCacheHostAndIDA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4912,"src":"40501:22:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$6947_$returns$_t_contract$_ISuperfluid_$7599_$_t_contract$_IInstantDistributionAgreementV1_$5893_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"id":4111,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40501:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7599_$_t_contract$_IInstantDistributionAgreementV1_$5893_$","typeString":"tuple(contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"40443:87:7"},{"expression":{"arguments":[{"id":4116,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4108,"src":"40569:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},{"arguments":[{"expression":{"id":4119,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4108,"src":"40618:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"id":4120,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40622:18:7","memberName":"updateSubscription","nodeType":"MemberAccess","referencedDeclaration":5740,"src":"40618:22:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_uint32_$_t_address_$_t_uint128_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,uint32,address,uint128,bytes memory) external returns (bytes memory)"}},{"components":[{"id":4121,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4090,"src":"40680:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},{"id":4122,"name":"indexId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4092,"src":"40707:7:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":4123,"name":"subscriber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4094,"src":"40736:10:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4124,"name":"units","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4096,"src":"40768:5:7","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"arguments":[{"hexValue":"30","id":4127,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"40805:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4126,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"40795:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":4125,"name":"bytes","nodeType":"ElementaryTypeName","src":"40799:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":4128,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40795:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":4129,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"40658:186:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_uint32_$_t_address_$_t_uint128_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,uint32,address,uint128,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_uint32_$_t_address_$_t_uint128_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,uint32,address,uint128,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_uint32_$_t_address_$_t_uint128_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,uint32,address,uint128,bytes memory)"}],"expression":{"id":4117,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"40586:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4118,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"40590:10:7","memberName":"encodeCall","nodeType":"MemberAccess","src":"40586:14:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4130,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40586:272:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":4131,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4098,"src":"40872:8:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":4113,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4105,"src":"40540:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"id":4115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40545:13:7","memberName":"callAgreement","nodeType":"MemberAccess","referencedDeclaration":7497,"src":"40540:18:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6395_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory) external returns (bytes memory)"}},"id":4132,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40540:350:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4133,"nodeType":"ExpressionStatement","src":"40540:350:7"},{"expression":{"hexValue":"74727565","id":4134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"40907:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":4102,"id":4135,"nodeType":"Return","src":"40900:11:7"}]},"documentation":{"id":4087,"nodeType":"StructuredDocumentation","src":"39798:434:7","text":" @dev Updates the units of a subscription. This changes the number of shares the subscriber\n holds. This takes arbitrary user data.\n @param token Super Token used with the index.\n @param indexId ID of the index.\n @param subscriber Subscriber address whose units are to be updated.\n @param units New number of units the subscriber holds.\n @param userData Arbitrary user data field."},"id":4137,"implemented":true,"kind":"function","modifiers":[],"name":"updateSubscriptionUnits","nameLocation":"40246:23:7","nodeType":"FunctionDefinition","parameters":{"id":4099,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4090,"mutability":"mutable","name":"token","nameLocation":"40291:5:7","nodeType":"VariableDeclaration","scope":4137,"src":"40279:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":4089,"nodeType":"UserDefinedTypeName","pathNode":{"id":4088,"name":"ISuperToken","nameLocations":["40279:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"40279:11:7"},"referencedDeclaration":6947,"src":"40279:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":4092,"mutability":"mutable","name":"indexId","nameLocation":"40313:7:7","nodeType":"VariableDeclaration","scope":4137,"src":"40306:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4091,"name":"uint32","nodeType":"ElementaryTypeName","src":"40306:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":4094,"mutability":"mutable","name":"subscriber","nameLocation":"40338:10:7","nodeType":"VariableDeclaration","scope":4137,"src":"40330:18:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4093,"name":"address","nodeType":"ElementaryTypeName","src":"40330:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4096,"mutability":"mutable","name":"units","nameLocation":"40366:5:7","nodeType":"VariableDeclaration","scope":4137,"src":"40358:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":4095,"name":"uint128","nodeType":"ElementaryTypeName","src":"40358:7:7","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":4098,"mutability":"mutable","name":"userData","nameLocation":"40394:8:7","nodeType":"VariableDeclaration","scope":4137,"src":"40381:21:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4097,"name":"bytes","nodeType":"ElementaryTypeName","src":"40381:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"40269:139:7"},"returnParameters":{"id":4102,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4101,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4137,"src":"40427:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4100,"name":"bool","nodeType":"ElementaryTypeName","src":"40427:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"40426:6:7"},"scope":5077,"src":"40237:681:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4185,"nodeType":"Block","src":"41391:488:7","statements":[{"assignments":[4154,4157],"declarations":[{"constant":false,"id":4154,"mutability":"mutable","name":"host","nameLocation":"41414:4:7","nodeType":"VariableDeclaration","scope":4185,"src":"41402:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"},"typeName":{"id":4153,"nodeType":"UserDefinedTypeName","pathNode":{"id":4152,"name":"ISuperfluid","nameLocations":["41402:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":7599,"src":"41402:11:7"},"referencedDeclaration":7599,"src":"41402:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":4157,"mutability":"mutable","name":"ida","nameLocation":"41452:3:7","nodeType":"VariableDeclaration","scope":4185,"src":"41420:35:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"},"typeName":{"id":4156,"nodeType":"UserDefinedTypeName","pathNode":{"id":4155,"name":"IInstantDistributionAgreementV1","nameLocations":["41420:31:7"],"nodeType":"IdentifierPath","referencedDeclaration":5893,"src":"41420:31:7"},"referencedDeclaration":5893,"src":"41420:31:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"visibility":"internal"}],"id":4161,"initialValue":{"arguments":[{"id":4159,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4141,"src":"41482:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}],"id":4158,"name":"_getAndCacheHostAndIDA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4912,"src":"41459:22:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$6947_$returns$_t_contract$_ISuperfluid_$7599_$_t_contract$_IInstantDistributionAgreementV1_$5893_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"id":4160,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41459:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7599_$_t_contract$_IInstantDistributionAgreementV1_$5893_$","typeString":"tuple(contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"41401:87:7"},{"expression":{"arguments":[{"id":4165,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4157,"src":"41530:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},{"arguments":[{"expression":{"id":4168,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4157,"src":"41579:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"id":4169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41583:18:7","memberName":"deleteSubscription","nodeType":"MemberAccess","referencedDeclaration":5847,"src":"41579:22:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_uint32_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,uint32,address,bytes memory) external returns (bytes memory)"}},{"components":[{"id":4170,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4141,"src":"41641:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},{"id":4171,"name":"publisher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4143,"src":"41668:9:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4172,"name":"indexId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4145,"src":"41699:7:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":4173,"name":"subscriber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4147,"src":"41728:10:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":4176,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"41770:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4175,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"41760:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":4174,"name":"bytes","nodeType":"ElementaryTypeName","src":"41764:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":4177,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41760:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":4178,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"41619:190:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_uint32_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,uint32,address,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_uint32_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,uint32,address,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_uint32_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,uint32,address,bytes memory)"}],"expression":{"id":4166,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"41547:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4167,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"41551:10:7","memberName":"encodeCall","nodeType":"MemberAccess","src":"41547:14:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4179,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41547:276:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"3078","id":4180,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"41837:4:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""}],"expression":{"id":4162,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4154,"src":"41498:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"id":4164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41503:13:7","memberName":"callAgreement","nodeType":"MemberAccess","referencedDeclaration":7497,"src":"41498:18:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6395_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory) external returns (bytes memory)"}},"id":4181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41498:353:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4182,"nodeType":"ExpressionStatement","src":"41498:353:7"},{"expression":{"hexValue":"74727565","id":4183,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"41868:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":4151,"id":4184,"nodeType":"Return","src":"41861:11:7"}]},"documentation":{"id":4138,"nodeType":"StructuredDocumentation","src":"40924:298:7","text":" @dev Deletes a subscription, setting a subcriber's units to zero\n @param token Super Token used with the index.\n @param publisher Publisher of the index.\n @param indexId ID of the index.\n @param subscriber Subscriber address whose units are to be deleted."},"id":4186,"implemented":true,"kind":"function","modifiers":[],"name":"deleteSubscription","nameLocation":"41236:18:7","nodeType":"FunctionDefinition","parameters":{"id":4148,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4141,"mutability":"mutable","name":"token","nameLocation":"41276:5:7","nodeType":"VariableDeclaration","scope":4186,"src":"41264:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":4140,"nodeType":"UserDefinedTypeName","pathNode":{"id":4139,"name":"ISuperToken","nameLocations":["41264:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"41264:11:7"},"referencedDeclaration":6947,"src":"41264:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":4143,"mutability":"mutable","name":"publisher","nameLocation":"41299:9:7","nodeType":"VariableDeclaration","scope":4186,"src":"41291:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4142,"name":"address","nodeType":"ElementaryTypeName","src":"41291:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4145,"mutability":"mutable","name":"indexId","nameLocation":"41325:7:7","nodeType":"VariableDeclaration","scope":4186,"src":"41318:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4144,"name":"uint32","nodeType":"ElementaryTypeName","src":"41318:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":4147,"mutability":"mutable","name":"subscriber","nameLocation":"41350:10:7","nodeType":"VariableDeclaration","scope":4186,"src":"41342:18:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4146,"name":"address","nodeType":"ElementaryTypeName","src":"41342:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"41254:112:7"},"returnParameters":{"id":4151,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4150,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4186,"src":"41385:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4149,"name":"bool","nodeType":"ElementaryTypeName","src":"41385:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"41384:6:7"},"scope":5077,"src":"41227:652:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4236,"nodeType":"Block","src":"42465:492:7","statements":[{"assignments":[4205,4208],"declarations":[{"constant":false,"id":4205,"mutability":"mutable","name":"host","nameLocation":"42488:4:7","nodeType":"VariableDeclaration","scope":4236,"src":"42476:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"},"typeName":{"id":4204,"nodeType":"UserDefinedTypeName","pathNode":{"id":4203,"name":"ISuperfluid","nameLocations":["42476:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":7599,"src":"42476:11:7"},"referencedDeclaration":7599,"src":"42476:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":4208,"mutability":"mutable","name":"ida","nameLocation":"42526:3:7","nodeType":"VariableDeclaration","scope":4236,"src":"42494:35:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"},"typeName":{"id":4207,"nodeType":"UserDefinedTypeName","pathNode":{"id":4206,"name":"IInstantDistributionAgreementV1","nameLocations":["42494:31:7"],"nodeType":"IdentifierPath","referencedDeclaration":5893,"src":"42494:31:7"},"referencedDeclaration":5893,"src":"42494:31:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"visibility":"internal"}],"id":4212,"initialValue":{"arguments":[{"id":4210,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4190,"src":"42556:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}],"id":4209,"name":"_getAndCacheHostAndIDA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4912,"src":"42533:22:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$6947_$returns$_t_contract$_ISuperfluid_$7599_$_t_contract$_IInstantDistributionAgreementV1_$5893_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"id":4211,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42533:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7599_$_t_contract$_IInstantDistributionAgreementV1_$5893_$","typeString":"tuple(contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"42475:87:7"},{"expression":{"arguments":[{"id":4216,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4208,"src":"42604:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},{"arguments":[{"expression":{"id":4219,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4208,"src":"42653:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"id":4220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42657:18:7","memberName":"deleteSubscription","nodeType":"MemberAccess","referencedDeclaration":5847,"src":"42653:22:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_uint32_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,uint32,address,bytes memory) external returns (bytes memory)"}},{"components":[{"id":4221,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4190,"src":"42715:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},{"id":4222,"name":"publisher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4192,"src":"42742:9:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4223,"name":"indexId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4194,"src":"42773:7:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":4224,"name":"subscriber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4196,"src":"42802:10:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":4227,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"42844:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4226,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"42834:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":4225,"name":"bytes","nodeType":"ElementaryTypeName","src":"42838:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":4228,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42834:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":4229,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"42693:190:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_uint32_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,uint32,address,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_uint32_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,uint32,address,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_uint32_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,uint32,address,bytes memory)"}],"expression":{"id":4217,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"42621:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4218,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"42625:10:7","memberName":"encodeCall","nodeType":"MemberAccess","src":"42621:14:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4230,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42621:276:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":4231,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4198,"src":"42911:8:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":4213,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4205,"src":"42572:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"id":4215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42577:13:7","memberName":"callAgreement","nodeType":"MemberAccess","referencedDeclaration":7497,"src":"42572:18:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6395_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory) external returns (bytes memory)"}},"id":4232,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42572:357:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4233,"nodeType":"ExpressionStatement","src":"42572:357:7"},{"expression":{"hexValue":"74727565","id":4234,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"42946:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":4202,"id":4235,"nodeType":"Return","src":"42939:11:7"}]},"documentation":{"id":4187,"nodeType":"StructuredDocumentation","src":"41885:380:7","text":" @dev Deletes a subscription, setting a subcriber's units to zero. This takes arbitrary userdata.\n @param token Super Token used with the index.\n @param publisher Publisher of the index.\n @param indexId ID of the index.\n @param subscriber Subscriber address whose units are to be deleted.\n @param userData Arbitrary user data field."},"id":4237,"implemented":true,"kind":"function","modifiers":[],"name":"deleteSubscription","nameLocation":"42279:18:7","nodeType":"FunctionDefinition","parameters":{"id":4199,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4190,"mutability":"mutable","name":"token","nameLocation":"42319:5:7","nodeType":"VariableDeclaration","scope":4237,"src":"42307:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":4189,"nodeType":"UserDefinedTypeName","pathNode":{"id":4188,"name":"ISuperToken","nameLocations":["42307:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"42307:11:7"},"referencedDeclaration":6947,"src":"42307:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":4192,"mutability":"mutable","name":"publisher","nameLocation":"42342:9:7","nodeType":"VariableDeclaration","scope":4237,"src":"42334:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4191,"name":"address","nodeType":"ElementaryTypeName","src":"42334:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4194,"mutability":"mutable","name":"indexId","nameLocation":"42368:7:7","nodeType":"VariableDeclaration","scope":4237,"src":"42361:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4193,"name":"uint32","nodeType":"ElementaryTypeName","src":"42361:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":4196,"mutability":"mutable","name":"subscriber","nameLocation":"42393:10:7","nodeType":"VariableDeclaration","scope":4237,"src":"42385:18:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4195,"name":"address","nodeType":"ElementaryTypeName","src":"42385:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4198,"mutability":"mutable","name":"userData","nameLocation":"42426:8:7","nodeType":"VariableDeclaration","scope":4237,"src":"42413:21:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4197,"name":"bytes","nodeType":"ElementaryTypeName","src":"42413:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"42297:143:7"},"returnParameters":{"id":4202,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4201,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4237,"src":"42459:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4200,"name":"bool","nodeType":"ElementaryTypeName","src":"42459:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"42458:6:7"},"scope":5077,"src":"42270:687:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4285,"nodeType":"Block","src":"43416:476:7","statements":[{"assignments":[4254,4257],"declarations":[{"constant":false,"id":4254,"mutability":"mutable","name":"host","nameLocation":"43440:4:7","nodeType":"VariableDeclaration","scope":4285,"src":"43428:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"},"typeName":{"id":4253,"nodeType":"UserDefinedTypeName","pathNode":{"id":4252,"name":"ISuperfluid","nameLocations":["43428:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":7599,"src":"43428:11:7"},"referencedDeclaration":7599,"src":"43428:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":4257,"mutability":"mutable","name":"ida","nameLocation":"43478:3:7","nodeType":"VariableDeclaration","scope":4285,"src":"43446:35:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"},"typeName":{"id":4256,"nodeType":"UserDefinedTypeName","pathNode":{"id":4255,"name":"IInstantDistributionAgreementV1","nameLocations":["43446:31:7"],"nodeType":"IdentifierPath","referencedDeclaration":5893,"src":"43446:31:7"},"referencedDeclaration":5893,"src":"43446:31:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"visibility":"internal"}],"id":4261,"initialValue":{"arguments":[{"id":4259,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4241,"src":"43508:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}],"id":4258,"name":"_getAndCacheHostAndIDA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4912,"src":"43485:22:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$6947_$returns$_t_contract$_ISuperfluid_$7599_$_t_contract$_IInstantDistributionAgreementV1_$5893_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"id":4260,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"43485:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7599_$_t_contract$_IInstantDistributionAgreementV1_$5893_$","typeString":"tuple(contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"43427:87:7"},{"expression":{"arguments":[{"id":4265,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4257,"src":"43556:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},{"arguments":[{"expression":{"id":4268,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4257,"src":"43605:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"id":4269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43609:5:7","memberName":"claim","nodeType":"MemberAccess","referencedDeclaration":5864,"src":"43605:9:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_uint32_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,uint32,address,bytes memory) external returns (bytes memory)"}},{"components":[{"id":4270,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4241,"src":"43654:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},{"id":4271,"name":"publisher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4243,"src":"43681:9:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4272,"name":"indexId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4245,"src":"43712:7:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":4273,"name":"subscriber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4247,"src":"43741:10:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":4276,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"43783:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4275,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"43773:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":4274,"name":"bytes","nodeType":"ElementaryTypeName","src":"43777:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":4277,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"43773:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":4278,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"43632:190:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_uint32_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,uint32,address,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_uint32_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,uint32,address,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_uint32_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,uint32,address,bytes memory)"}],"expression":{"id":4266,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"43573:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4267,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"43577:10:7","memberName":"encodeCall","nodeType":"MemberAccess","src":"43573:14:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4279,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"43573:263:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"3078","id":4280,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"43850:4:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""}],"expression":{"id":4262,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4254,"src":"43524:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"id":4264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43529:13:7","memberName":"callAgreement","nodeType":"MemberAccess","referencedDeclaration":7497,"src":"43524:18:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6395_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory) external returns (bytes memory)"}},"id":4281,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"43524:340:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4282,"nodeType":"ExpressionStatement","src":"43524:340:7"},{"expression":{"hexValue":"74727565","id":4283,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"43881:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":4251,"id":4284,"nodeType":"Return","src":"43874:11:7"}]},"documentation":{"id":4238,"nodeType":"StructuredDocumentation","src":"42963:297:7","text":" @dev Claims pending distribution. Subscription should not be approved\n @param token Super Token used with the index.\n @param publisher Publisher of the index.\n @param indexId ID of the index.\n @param subscriber Subscriber address that receives the claim."},"id":4286,"implemented":true,"kind":"function","modifiers":[],"name":"claim","nameLocation":"43274:5:7","nodeType":"FunctionDefinition","parameters":{"id":4248,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4241,"mutability":"mutable","name":"token","nameLocation":"43301:5:7","nodeType":"VariableDeclaration","scope":4286,"src":"43289:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":4240,"nodeType":"UserDefinedTypeName","pathNode":{"id":4239,"name":"ISuperToken","nameLocations":["43289:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"43289:11:7"},"referencedDeclaration":6947,"src":"43289:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":4243,"mutability":"mutable","name":"publisher","nameLocation":"43324:9:7","nodeType":"VariableDeclaration","scope":4286,"src":"43316:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4242,"name":"address","nodeType":"ElementaryTypeName","src":"43316:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4245,"mutability":"mutable","name":"indexId","nameLocation":"43350:7:7","nodeType":"VariableDeclaration","scope":4286,"src":"43343:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4244,"name":"uint32","nodeType":"ElementaryTypeName","src":"43343:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":4247,"mutability":"mutable","name":"subscriber","nameLocation":"43375:10:7","nodeType":"VariableDeclaration","scope":4286,"src":"43367:18:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4246,"name":"address","nodeType":"ElementaryTypeName","src":"43367:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"43279:112:7"},"returnParameters":{"id":4251,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4250,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4286,"src":"43410:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4249,"name":"bool","nodeType":"ElementaryTypeName","src":"43410:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"43409:6:7"},"scope":5077,"src":"43265:627:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4336,"nodeType":"Block","src":"44465:480:7","statements":[{"assignments":[4305,4308],"declarations":[{"constant":false,"id":4305,"mutability":"mutable","name":"host","nameLocation":"44489:4:7","nodeType":"VariableDeclaration","scope":4336,"src":"44477:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"},"typeName":{"id":4304,"nodeType":"UserDefinedTypeName","pathNode":{"id":4303,"name":"ISuperfluid","nameLocations":["44477:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":7599,"src":"44477:11:7"},"referencedDeclaration":7599,"src":"44477:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":4308,"mutability":"mutable","name":"ida","nameLocation":"44527:3:7","nodeType":"VariableDeclaration","scope":4336,"src":"44495:35:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"},"typeName":{"id":4307,"nodeType":"UserDefinedTypeName","pathNode":{"id":4306,"name":"IInstantDistributionAgreementV1","nameLocations":["44495:31:7"],"nodeType":"IdentifierPath","referencedDeclaration":5893,"src":"44495:31:7"},"referencedDeclaration":5893,"src":"44495:31:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"visibility":"internal"}],"id":4312,"initialValue":{"arguments":[{"id":4310,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4290,"src":"44557:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}],"id":4309,"name":"_getAndCacheHostAndIDA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4912,"src":"44534:22:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$6947_$returns$_t_contract$_ISuperfluid_$7599_$_t_contract$_IInstantDistributionAgreementV1_$5893_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"id":4311,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44534:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7599_$_t_contract$_IInstantDistributionAgreementV1_$5893_$","typeString":"tuple(contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"44476:87:7"},{"expression":{"arguments":[{"id":4316,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4308,"src":"44605:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},{"arguments":[{"expression":{"id":4319,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4308,"src":"44654:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"id":4320,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"44658:5:7","memberName":"claim","nodeType":"MemberAccess","referencedDeclaration":5864,"src":"44654:9:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_uint32_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,uint32,address,bytes memory) external returns (bytes memory)"}},{"components":[{"id":4321,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4290,"src":"44703:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},{"id":4322,"name":"publisher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4292,"src":"44730:9:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4323,"name":"indexId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4294,"src":"44761:7:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":4324,"name":"subscriber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4296,"src":"44790:10:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":4327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44832:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4326,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"44822:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":4325,"name":"bytes","nodeType":"ElementaryTypeName","src":"44826:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":4328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44822:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":4329,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"44681:190:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_uint32_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,uint32,address,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_uint32_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,uint32,address,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_uint32_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,uint32,address,bytes memory)"}],"expression":{"id":4317,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"44622:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4318,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"44626:10:7","memberName":"encodeCall","nodeType":"MemberAccess","src":"44622:14:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44622:263:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":4331,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4298,"src":"44899:8:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":4313,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4305,"src":"44573:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"id":4315,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"44578:13:7","memberName":"callAgreement","nodeType":"MemberAccess","referencedDeclaration":7497,"src":"44573:18:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6395_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory) external returns (bytes memory)"}},"id":4332,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44573:344:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4333,"nodeType":"ExpressionStatement","src":"44573:344:7"},{"expression":{"hexValue":"74727565","id":4334,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"44934:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":4302,"id":4335,"nodeType":"Return","src":"44927:11:7"}]},"documentation":{"id":4287,"nodeType":"StructuredDocumentation","src":"43898:380:7","text":" @dev Claims pending distribution. Subscription should not be approved. This takes arbitrary user data.\n @param token Super Token used with the index.\n @param publisher Publisher of the index.\n @param indexId ID of the index.\n @param subscriber Subscriber address that receives the claim.\n @param userData Arbitrary user data field."},"id":4337,"implemented":true,"kind":"function","modifiers":[],"name":"claim","nameLocation":"44292:5:7","nodeType":"FunctionDefinition","parameters":{"id":4299,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4290,"mutability":"mutable","name":"token","nameLocation":"44319:5:7","nodeType":"VariableDeclaration","scope":4337,"src":"44307:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":4289,"nodeType":"UserDefinedTypeName","pathNode":{"id":4288,"name":"ISuperToken","nameLocations":["44307:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"44307:11:7"},"referencedDeclaration":6947,"src":"44307:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":4292,"mutability":"mutable","name":"publisher","nameLocation":"44342:9:7","nodeType":"VariableDeclaration","scope":4337,"src":"44334:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4291,"name":"address","nodeType":"ElementaryTypeName","src":"44334:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4294,"mutability":"mutable","name":"indexId","nameLocation":"44368:7:7","nodeType":"VariableDeclaration","scope":4337,"src":"44361:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4293,"name":"uint32","nodeType":"ElementaryTypeName","src":"44361:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":4296,"mutability":"mutable","name":"subscriber","nameLocation":"44393:10:7","nodeType":"VariableDeclaration","scope":4337,"src":"44385:18:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4295,"name":"address","nodeType":"ElementaryTypeName","src":"44385:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4298,"mutability":"mutable","name":"userData","nameLocation":"44426:8:7","nodeType":"VariableDeclaration","scope":4337,"src":"44413:21:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4297,"name":"bytes","nodeType":"ElementaryTypeName","src":"44413:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"44297:143:7"},"returnParameters":{"id":4302,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4301,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4337,"src":"44459:4:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4300,"name":"bool","nodeType":"ElementaryTypeName","src":"44459:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"44458:6:7"},"scope":5077,"src":"44283:662:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4382,"nodeType":"Block","src":"45412:438:7","statements":[{"assignments":[4352,4355],"declarations":[{"constant":false,"id":4352,"mutability":"mutable","name":"host","nameLocation":"45435:4:7","nodeType":"VariableDeclaration","scope":4382,"src":"45423:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"},"typeName":{"id":4351,"nodeType":"UserDefinedTypeName","pathNode":{"id":4350,"name":"ISuperfluid","nameLocations":["45423:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":7599,"src":"45423:11:7"},"referencedDeclaration":7599,"src":"45423:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":4355,"mutability":"mutable","name":"ida","nameLocation":"45473:3:7","nodeType":"VariableDeclaration","scope":4382,"src":"45441:35:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"},"typeName":{"id":4354,"nodeType":"UserDefinedTypeName","pathNode":{"id":4353,"name":"IInstantDistributionAgreementV1","nameLocations":["45441:31:7"],"nodeType":"IdentifierPath","referencedDeclaration":5893,"src":"45441:31:7"},"referencedDeclaration":5893,"src":"45441:31:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"visibility":"internal"}],"id":4359,"initialValue":{"arguments":[{"id":4357,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4341,"src":"45503:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}],"id":4356,"name":"_getAndCacheHostAndIDA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4912,"src":"45480:22:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$6947_$returns$_t_contract$_ISuperfluid_$7599_$_t_contract$_IInstantDistributionAgreementV1_$5893_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"id":4358,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45480:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7599_$_t_contract$_IInstantDistributionAgreementV1_$5893_$","typeString":"tuple(contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"45422:87:7"},{"expression":{"id":4380,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":4360,"name":"newCtx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4348,"src":"45520:6:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},null],"id":4361,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"45519:10:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$__$","typeString":"tuple(bytes memory,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4364,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4355,"src":"45575:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},{"arguments":[{"expression":{"id":4367,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4355,"src":"45624:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"id":4368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"45628:11:7","memberName":"createIndex","nodeType":"MemberAccess","referencedDeclaration":5539,"src":"45624:15:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_uint32_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,uint32,bytes memory) external returns (bytes memory)"}},{"components":[{"id":4369,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4341,"src":"45679:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},{"id":4370,"name":"indexId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4343,"src":"45706:7:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"arguments":[{"hexValue":"30","id":4373,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45745:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4372,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"45735:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":4371,"name":"bytes","nodeType":"ElementaryTypeName","src":"45739:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":4374,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45735:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":4375,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"45657:127:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_uint32_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,uint32,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_uint32_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,uint32,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_uint32_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,uint32,bytes memory)"}],"expression":{"id":4365,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"45592:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4366,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"45596:10:7","memberName":"encodeCall","nodeType":"MemberAccess","src":"45592:14:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4376,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45592:206:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"3078","id":4377,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"45812:4:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"},{"id":4378,"name":"ctx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4345,"src":"45830:3:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":4362,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4352,"src":"45532:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"id":4363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"45537:24:7","memberName":"callAgreementWithContext","nodeType":"MemberAccess","referencedDeclaration":7548,"src":"45532:29:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6395_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory,bytes memory) external returns (bytes memory,bytes memory)"}},"id":4379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45532:311:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(bytes memory,bytes memory)"}},"src":"45519:324:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4381,"nodeType":"ExpressionStatement","src":"45519:324:7"}]},"documentation":{"id":4338,"nodeType":"StructuredDocumentation","src":"45024:233:7","text":" @dev Creates a new index with ctx.\n Meant for usage in super app callbacks\n @param token Super Token used with the index.\n @param indexId ID of the index.\n @param ctx from super app callback"},"id":4383,"implemented":true,"kind":"function","modifiers":[],"name":"createIndexWithCtx","nameLocation":"45271:18:7","nodeType":"FunctionDefinition","parameters":{"id":4346,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4341,"mutability":"mutable","name":"token","nameLocation":"45311:5:7","nodeType":"VariableDeclaration","scope":4383,"src":"45299:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":4340,"nodeType":"UserDefinedTypeName","pathNode":{"id":4339,"name":"ISuperToken","nameLocations":["45299:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"45299:11:7"},"referencedDeclaration":6947,"src":"45299:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":4343,"mutability":"mutable","name":"indexId","nameLocation":"45333:7:7","nodeType":"VariableDeclaration","scope":4383,"src":"45326:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4342,"name":"uint32","nodeType":"ElementaryTypeName","src":"45326:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":4345,"mutability":"mutable","name":"ctx","nameLocation":"45363:3:7","nodeType":"VariableDeclaration","scope":4383,"src":"45350:16:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4344,"name":"bytes","nodeType":"ElementaryTypeName","src":"45350:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"45289:83:7"},"returnParameters":{"id":4349,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4348,"mutability":"mutable","name":"newCtx","nameLocation":"45404:6:7","nodeType":"VariableDeclaration","scope":4383,"src":"45391:19:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4347,"name":"bytes","nodeType":"ElementaryTypeName","src":"45391:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"45390:21:7"},"scope":5077,"src":"45262:588:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4431,"nodeType":"Block","src":"46506:470:7","statements":[{"assignments":[4400,4403],"declarations":[{"constant":false,"id":4400,"mutability":"mutable","name":"host","nameLocation":"46529:4:7","nodeType":"VariableDeclaration","scope":4431,"src":"46517:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"},"typeName":{"id":4399,"nodeType":"UserDefinedTypeName","pathNode":{"id":4398,"name":"ISuperfluid","nameLocations":["46517:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":7599,"src":"46517:11:7"},"referencedDeclaration":7599,"src":"46517:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":4403,"mutability":"mutable","name":"ida","nameLocation":"46567:3:7","nodeType":"VariableDeclaration","scope":4431,"src":"46535:35:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"},"typeName":{"id":4402,"nodeType":"UserDefinedTypeName","pathNode":{"id":4401,"name":"IInstantDistributionAgreementV1","nameLocations":["46535:31:7"],"nodeType":"IdentifierPath","referencedDeclaration":5893,"src":"46535:31:7"},"referencedDeclaration":5893,"src":"46535:31:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"visibility":"internal"}],"id":4407,"initialValue":{"arguments":[{"id":4405,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4387,"src":"46597:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}],"id":4404,"name":"_getAndCacheHostAndIDA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4912,"src":"46574:22:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$6947_$returns$_t_contract$_ISuperfluid_$7599_$_t_contract$_IInstantDistributionAgreementV1_$5893_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"id":4406,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46574:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7599_$_t_contract$_IInstantDistributionAgreementV1_$5893_$","typeString":"tuple(contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"46516:87:7"},{"expression":{"id":4429,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":4408,"name":"newCtx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4396,"src":"46614:6:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},null],"id":4409,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"46613:10:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$__$","typeString":"tuple(bytes memory,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4412,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4403,"src":"46669:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},{"arguments":[{"expression":{"id":4415,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4403,"src":"46718:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"id":4416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"46722:11:7","memberName":"updateIndex","nodeType":"MemberAccess","referencedDeclaration":5602,"src":"46718:15:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_uint32_$_t_uint128_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,uint32,uint128,bytes memory) external returns (bytes memory)"}},{"components":[{"id":4417,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4387,"src":"46773:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},{"id":4418,"name":"indexId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4389,"src":"46800:7:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":4419,"name":"indexValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4391,"src":"46829:10:7","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"arguments":[{"hexValue":"30","id":4422,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46871:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4421,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"46861:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":4420,"name":"bytes","nodeType":"ElementaryTypeName","src":"46865:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":4423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46861:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":4424,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"46751:159:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_uint32_$_t_uint128_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,uint32,uint128,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_uint32_$_t_uint128_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,uint32,uint128,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_uint32_$_t_uint128_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,uint32,uint128,bytes memory)"}],"expression":{"id":4413,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"46686:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4414,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"46690:10:7","memberName":"encodeCall","nodeType":"MemberAccess","src":"46686:14:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46686:238:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"3078","id":4426,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"46938:4:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"},{"id":4427,"name":"ctx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4393,"src":"46956:3:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":4410,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4400,"src":"46626:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"id":4411,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"46631:24:7","memberName":"callAgreementWithContext","nodeType":"MemberAccess","referencedDeclaration":7548,"src":"46626:29:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6395_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory,bytes memory) external returns (bytes memory,bytes memory)"}},"id":4428,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46626:343:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(bytes memory,bytes memory)"}},"src":"46613:356:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4430,"nodeType":"ExpressionStatement","src":"46613:356:7"}]},"documentation":{"id":4384,"nodeType":"StructuredDocumentation","src":"45856:462:7","text":" @dev Updates an index value with ctx. This distributes an amount of tokens equal to\n `indexValue - lastIndexValue`. See `distribute` for another way to distribute.\n Meant for usage in super app callbakcs\n @param token Super Token used with the index.\n @param indexId ID of the index.\n @param indexValue New TOTAL index value, this will equal the total amount distributed.\n @param ctx from super app callback"},"id":4432,"implemented":true,"kind":"function","modifiers":[],"name":"updateIndexValueWithCtx","nameLocation":"46332:23:7","nodeType":"FunctionDefinition","parameters":{"id":4394,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4387,"mutability":"mutable","name":"token","nameLocation":"46377:5:7","nodeType":"VariableDeclaration","scope":4432,"src":"46365:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":4386,"nodeType":"UserDefinedTypeName","pathNode":{"id":4385,"name":"ISuperToken","nameLocations":["46365:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"46365:11:7"},"referencedDeclaration":6947,"src":"46365:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":4389,"mutability":"mutable","name":"indexId","nameLocation":"46399:7:7","nodeType":"VariableDeclaration","scope":4432,"src":"46392:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4388,"name":"uint32","nodeType":"ElementaryTypeName","src":"46392:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":4391,"mutability":"mutable","name":"indexValue","nameLocation":"46424:10:7","nodeType":"VariableDeclaration","scope":4432,"src":"46416:18:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":4390,"name":"uint128","nodeType":"ElementaryTypeName","src":"46416:7:7","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":4393,"mutability":"mutable","name":"ctx","nameLocation":"46457:3:7","nodeType":"VariableDeclaration","scope":4432,"src":"46444:16:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4392,"name":"bytes","nodeType":"ElementaryTypeName","src":"46444:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"46355:111:7"},"returnParameters":{"id":4397,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4396,"mutability":"mutable","name":"newCtx","nameLocation":"46498:6:7","nodeType":"VariableDeclaration","scope":4432,"src":"46485:19:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4395,"name":"bytes","nodeType":"ElementaryTypeName","src":"46485:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"46484:21:7"},"scope":5077,"src":"46323:653:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4480,"nodeType":"Block","src":"47568:465:7","statements":[{"assignments":[4449,4452],"declarations":[{"constant":false,"id":4449,"mutability":"mutable","name":"host","nameLocation":"47591:4:7","nodeType":"VariableDeclaration","scope":4480,"src":"47579:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"},"typeName":{"id":4448,"nodeType":"UserDefinedTypeName","pathNode":{"id":4447,"name":"ISuperfluid","nameLocations":["47579:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":7599,"src":"47579:11:7"},"referencedDeclaration":7599,"src":"47579:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":4452,"mutability":"mutable","name":"ida","nameLocation":"47629:3:7","nodeType":"VariableDeclaration","scope":4480,"src":"47597:35:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"},"typeName":{"id":4451,"nodeType":"UserDefinedTypeName","pathNode":{"id":4450,"name":"IInstantDistributionAgreementV1","nameLocations":["47597:31:7"],"nodeType":"IdentifierPath","referencedDeclaration":5893,"src":"47597:31:7"},"referencedDeclaration":5893,"src":"47597:31:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"visibility":"internal"}],"id":4456,"initialValue":{"arguments":[{"id":4454,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4436,"src":"47659:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}],"id":4453,"name":"_getAndCacheHostAndIDA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4912,"src":"47636:22:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$6947_$returns$_t_contract$_ISuperfluid_$7599_$_t_contract$_IInstantDistributionAgreementV1_$5893_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"id":4455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47636:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7599_$_t_contract$_IInstantDistributionAgreementV1_$5893_$","typeString":"tuple(contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"47578:87:7"},{"expression":{"id":4478,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":4457,"name":"newCtx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4445,"src":"47676:6:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},null],"id":4458,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"47675:10:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$__$","typeString":"tuple(bytes memory,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4461,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4452,"src":"47731:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},{"arguments":[{"expression":{"id":4464,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4452,"src":"47780:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"id":4465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"47784:10:7","memberName":"distribute","nodeType":"MemberAccess","referencedDeclaration":5637,"src":"47780:14:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_uint32_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,uint32,uint256,bytes memory) external returns (bytes memory)"}},{"components":[{"id":4466,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4436,"src":"47834:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},{"id":4467,"name":"indexId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4438,"src":"47861:7:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":4468,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4440,"src":"47890:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":4471,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47928:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4470,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"47918:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":4469,"name":"bytes","nodeType":"ElementaryTypeName","src":"47922:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":4472,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47918:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":4473,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"47812:155:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_uint32_$_t_uint256_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,uint32,uint256,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_uint32_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,uint32,uint256,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_uint32_$_t_uint256_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,uint32,uint256,bytes memory)"}],"expression":{"id":4462,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"47748:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4463,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"47752:10:7","memberName":"encodeCall","nodeType":"MemberAccess","src":"47748:14:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4474,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47748:233:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"3078","id":4475,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"47995:4:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"},{"id":4476,"name":"ctx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4442,"src":"48013:3:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":4459,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4449,"src":"47688:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"id":4460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"47693:24:7","memberName":"callAgreementWithContext","nodeType":"MemberAccess","referencedDeclaration":7548,"src":"47688:29:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6395_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory,bytes memory) external returns (bytes memory,bytes memory)"}},"id":4477,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47688:338:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(bytes memory,bytes memory)"}},"src":"47675:351:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4479,"nodeType":"ExpressionStatement","src":"47675:351:7"}]},"documentation":{"id":4433,"nodeType":"StructuredDocumentation","src":"46982:408:7","text":" @dev Distributes tokens in a more developer friendly way than `updateIndex`.Instead of\n passing the new total index value, this function will increase the index value by `amount`.\n @param token Super Token used with the index.\n @param indexId ID of the index.\n @param amount Amount by which the index value should increase.\n @param ctx from super app callback"},"id":4481,"implemented":true,"kind":"function","modifiers":[],"name":"distributeWithCtx","nameLocation":"47404:17:7","nodeType":"FunctionDefinition","parameters":{"id":4443,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4436,"mutability":"mutable","name":"token","nameLocation":"47443:5:7","nodeType":"VariableDeclaration","scope":4481,"src":"47431:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":4435,"nodeType":"UserDefinedTypeName","pathNode":{"id":4434,"name":"ISuperToken","nameLocations":["47431:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"47431:11:7"},"referencedDeclaration":6947,"src":"47431:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":4438,"mutability":"mutable","name":"indexId","nameLocation":"47465:7:7","nodeType":"VariableDeclaration","scope":4481,"src":"47458:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4437,"name":"uint32","nodeType":"ElementaryTypeName","src":"47458:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":4440,"mutability":"mutable","name":"amount","nameLocation":"47490:6:7","nodeType":"VariableDeclaration","scope":4481,"src":"47482:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4439,"name":"uint256","nodeType":"ElementaryTypeName","src":"47482:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4442,"mutability":"mutable","name":"ctx","nameLocation":"47519:3:7","nodeType":"VariableDeclaration","scope":4481,"src":"47506:16:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4441,"name":"bytes","nodeType":"ElementaryTypeName","src":"47506:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"47421:107:7"},"returnParameters":{"id":4446,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4445,"mutability":"mutable","name":"newCtx","nameLocation":"47560:6:7","nodeType":"VariableDeclaration","scope":4481,"src":"47547:19:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4444,"name":"bytes","nodeType":"ElementaryTypeName","src":"47547:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"47546:21:7"},"scope":5077,"src":"47395:638:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4529,"nodeType":"Block","src":"48645:477:7","statements":[{"assignments":[4498,4501],"declarations":[{"constant":false,"id":4498,"mutability":"mutable","name":"host","nameLocation":"48668:4:7","nodeType":"VariableDeclaration","scope":4529,"src":"48656:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"},"typeName":{"id":4497,"nodeType":"UserDefinedTypeName","pathNode":{"id":4496,"name":"ISuperfluid","nameLocations":["48656:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":7599,"src":"48656:11:7"},"referencedDeclaration":7599,"src":"48656:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":4501,"mutability":"mutable","name":"ida","nameLocation":"48706:3:7","nodeType":"VariableDeclaration","scope":4529,"src":"48674:35:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"},"typeName":{"id":4500,"nodeType":"UserDefinedTypeName","pathNode":{"id":4499,"name":"IInstantDistributionAgreementV1","nameLocations":["48674:31:7"],"nodeType":"IdentifierPath","referencedDeclaration":5893,"src":"48674:31:7"},"referencedDeclaration":5893,"src":"48674:31:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"visibility":"internal"}],"id":4505,"initialValue":{"arguments":[{"id":4503,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4485,"src":"48736:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}],"id":4502,"name":"_getAndCacheHostAndIDA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4912,"src":"48713:22:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$6947_$returns$_t_contract$_ISuperfluid_$7599_$_t_contract$_IInstantDistributionAgreementV1_$5893_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"id":4504,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"48713:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7599_$_t_contract$_IInstantDistributionAgreementV1_$5893_$","typeString":"tuple(contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"48655:87:7"},{"expression":{"id":4527,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":4506,"name":"newCtx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4494,"src":"48753:6:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},null],"id":4507,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"48752:10:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$__$","typeString":"tuple(bytes memory,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4510,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4501,"src":"48808:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},{"arguments":[{"expression":{"id":4513,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4501,"src":"48857:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"id":4514,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"48861:19:7","memberName":"approveSubscription","nodeType":"MemberAccess","referencedDeclaration":5652,"src":"48857:23:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_uint32_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,uint32,bytes memory) external returns (bytes memory)"}},{"components":[{"id":4515,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4485,"src":"48920:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},{"id":4516,"name":"publisher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4487,"src":"48947:9:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4517,"name":"indexId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4489,"src":"48978:7:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"arguments":[{"hexValue":"30","id":4520,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"49017:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4519,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"49007:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":4518,"name":"bytes","nodeType":"ElementaryTypeName","src":"49011:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":4521,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49007:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":4522,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"48898:158:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_uint32_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,uint32,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_uint32_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,uint32,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_uint32_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,uint32,bytes memory)"}],"expression":{"id":4511,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"48825:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4512,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"48829:10:7","memberName":"encodeCall","nodeType":"MemberAccess","src":"48825:14:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"48825:245:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"3078","id":4524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"49084:4:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"},{"id":4525,"name":"ctx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4491,"src":"49102:3:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":4508,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4498,"src":"48765:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"id":4509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"48770:24:7","memberName":"callAgreementWithContext","nodeType":"MemberAccess","referencedDeclaration":7548,"src":"48765:29:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6395_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory,bytes memory) external returns (bytes memory,bytes memory)"}},"id":4526,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"48765:350:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(bytes memory,bytes memory)"}},"src":"48752:363:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4528,"nodeType":"ExpressionStatement","src":"48752:363:7"}]},"documentation":{"id":4482,"nodeType":"StructuredDocumentation","src":"48039:416:7","text":" @dev Approves a subscription to an index. The subscriber's real time balance will not update\n until the subscription is approved, but once approved, the balance will be updated with\n prior distributions.\n @param token Super Token used with the index.\n @param publisher Publisher of the index.\n @param indexId ID of the index.\n @param ctx from super app callback"},"id":4530,"implemented":true,"kind":"function","modifiers":[],"name":"approveSubscriptionWithCtx","nameLocation":"48469:26:7","nodeType":"FunctionDefinition","parameters":{"id":4492,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4485,"mutability":"mutable","name":"token","nameLocation":"48517:5:7","nodeType":"VariableDeclaration","scope":4530,"src":"48505:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":4484,"nodeType":"UserDefinedTypeName","pathNode":{"id":4483,"name":"ISuperToken","nameLocations":["48505:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"48505:11:7"},"referencedDeclaration":6947,"src":"48505:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":4487,"mutability":"mutable","name":"publisher","nameLocation":"48540:9:7","nodeType":"VariableDeclaration","scope":4530,"src":"48532:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4486,"name":"address","nodeType":"ElementaryTypeName","src":"48532:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4489,"mutability":"mutable","name":"indexId","nameLocation":"48566:7:7","nodeType":"VariableDeclaration","scope":4530,"src":"48559:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4488,"name":"uint32","nodeType":"ElementaryTypeName","src":"48559:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":4491,"mutability":"mutable","name":"ctx","nameLocation":"48596:3:7","nodeType":"VariableDeclaration","scope":4530,"src":"48583:16:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4490,"name":"bytes","nodeType":"ElementaryTypeName","src":"48583:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"48495:110:7"},"returnParameters":{"id":4495,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4494,"mutability":"mutable","name":"newCtx","nameLocation":"48637:6:7","nodeType":"VariableDeclaration","scope":4530,"src":"48624:19:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4493,"name":"bytes","nodeType":"ElementaryTypeName","src":"48624:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"48623:21:7"},"scope":5077,"src":"48460:662:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4578,"nodeType":"Block","src":"49596:476:7","statements":[{"assignments":[4547,4550],"declarations":[{"constant":false,"id":4547,"mutability":"mutable","name":"host","nameLocation":"49619:4:7","nodeType":"VariableDeclaration","scope":4578,"src":"49607:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"},"typeName":{"id":4546,"nodeType":"UserDefinedTypeName","pathNode":{"id":4545,"name":"ISuperfluid","nameLocations":["49607:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":7599,"src":"49607:11:7"},"referencedDeclaration":7599,"src":"49607:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":4550,"mutability":"mutable","name":"ida","nameLocation":"49657:3:7","nodeType":"VariableDeclaration","scope":4578,"src":"49625:35:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"},"typeName":{"id":4549,"nodeType":"UserDefinedTypeName","pathNode":{"id":4548,"name":"IInstantDistributionAgreementV1","nameLocations":["49625:31:7"],"nodeType":"IdentifierPath","referencedDeclaration":5893,"src":"49625:31:7"},"referencedDeclaration":5893,"src":"49625:31:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"visibility":"internal"}],"id":4554,"initialValue":{"arguments":[{"id":4552,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4534,"src":"49687:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}],"id":4551,"name":"_getAndCacheHostAndIDA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4912,"src":"49664:22:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$6947_$returns$_t_contract$_ISuperfluid_$7599_$_t_contract$_IInstantDistributionAgreementV1_$5893_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"id":4553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49664:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7599_$_t_contract$_IInstantDistributionAgreementV1_$5893_$","typeString":"tuple(contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"49606:87:7"},{"expression":{"id":4576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":4555,"name":"newCtx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4543,"src":"49704:6:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},null],"id":4556,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"49703:10:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$__$","typeString":"tuple(bytes memory,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4559,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4550,"src":"49759:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},{"arguments":[{"expression":{"id":4562,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4550,"src":"49808:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"id":4563,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"49812:18:7","memberName":"revokeSubscription","nodeType":"MemberAccess","referencedDeclaration":5695,"src":"49808:22:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_uint32_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,uint32,bytes memory) external returns (bytes memory)"}},{"components":[{"id":4564,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4534,"src":"49870:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},{"id":4565,"name":"publisher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4536,"src":"49897:9:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4566,"name":"indexId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4538,"src":"49928:7:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"arguments":[{"hexValue":"30","id":4569,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"49967:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4568,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"49957:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":4567,"name":"bytes","nodeType":"ElementaryTypeName","src":"49961:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":4570,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49957:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":4571,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"49848:158:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_uint32_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,uint32,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_uint32_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,uint32,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_uint32_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,uint32,bytes memory)"}],"expression":{"id":4560,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"49776:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4561,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"49780:10:7","memberName":"encodeCall","nodeType":"MemberAccess","src":"49776:14:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4572,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49776:244:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"3078","id":4573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"50034:4:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"},{"id":4574,"name":"ctx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4540,"src":"50052:3:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":4557,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4547,"src":"49716:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"id":4558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"49721:24:7","memberName":"callAgreementWithContext","nodeType":"MemberAccess","referencedDeclaration":7548,"src":"49716:29:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6395_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory,bytes memory) external returns (bytes memory,bytes memory)"}},"id":4575,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49716:349:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(bytes memory,bytes memory)"}},"src":"49703:362:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4577,"nodeType":"ExpressionStatement","src":"49703:362:7"}]},"documentation":{"id":4531,"nodeType":"StructuredDocumentation","src":"49128:279:7","text":" @dev Revokes a previously approved subscription. Meant for usage in super apps\n @param token Super Token used with the index.\n @param publisher Publisher of the index.\n @param indexId ID of the index.\n @param ctx from super app callback"},"id":4579,"implemented":true,"kind":"function","modifiers":[],"name":"revokeSubscriptionWithCtx","nameLocation":"49421:25:7","nodeType":"FunctionDefinition","parameters":{"id":4541,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4534,"mutability":"mutable","name":"token","nameLocation":"49468:5:7","nodeType":"VariableDeclaration","scope":4579,"src":"49456:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":4533,"nodeType":"UserDefinedTypeName","pathNode":{"id":4532,"name":"ISuperToken","nameLocations":["49456:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"49456:11:7"},"referencedDeclaration":6947,"src":"49456:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":4536,"mutability":"mutable","name":"publisher","nameLocation":"49491:9:7","nodeType":"VariableDeclaration","scope":4579,"src":"49483:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4535,"name":"address","nodeType":"ElementaryTypeName","src":"49483:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4538,"mutability":"mutable","name":"indexId","nameLocation":"49517:7:7","nodeType":"VariableDeclaration","scope":4579,"src":"49510:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4537,"name":"uint32","nodeType":"ElementaryTypeName","src":"49510:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":4540,"mutability":"mutable","name":"ctx","nameLocation":"49547:3:7","nodeType":"VariableDeclaration","scope":4579,"src":"49534:16:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4539,"name":"bytes","nodeType":"ElementaryTypeName","src":"49534:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"49446:110:7"},"returnParameters":{"id":4544,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4543,"mutability":"mutable","name":"newCtx","nameLocation":"49588:6:7","nodeType":"VariableDeclaration","scope":4579,"src":"49575:19:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4542,"name":"bytes","nodeType":"ElementaryTypeName","src":"49575:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"49574:21:7"},"scope":5077,"src":"49412:660:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4630,"nodeType":"Block","src":"50720:501:7","statements":[{"assignments":[4598,4601],"declarations":[{"constant":false,"id":4598,"mutability":"mutable","name":"host","nameLocation":"50743:4:7","nodeType":"VariableDeclaration","scope":4630,"src":"50731:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"},"typeName":{"id":4597,"nodeType":"UserDefinedTypeName","pathNode":{"id":4596,"name":"ISuperfluid","nameLocations":["50731:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":7599,"src":"50731:11:7"},"referencedDeclaration":7599,"src":"50731:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":4601,"mutability":"mutable","name":"ida","nameLocation":"50781:3:7","nodeType":"VariableDeclaration","scope":4630,"src":"50749:35:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"},"typeName":{"id":4600,"nodeType":"UserDefinedTypeName","pathNode":{"id":4599,"name":"IInstantDistributionAgreementV1","nameLocations":["50749:31:7"],"nodeType":"IdentifierPath","referencedDeclaration":5893,"src":"50749:31:7"},"referencedDeclaration":5893,"src":"50749:31:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"visibility":"internal"}],"id":4605,"initialValue":{"arguments":[{"id":4603,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"50811:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}],"id":4602,"name":"_getAndCacheHostAndIDA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4912,"src":"50788:22:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$6947_$returns$_t_contract$_ISuperfluid_$7599_$_t_contract$_IInstantDistributionAgreementV1_$5893_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"id":4604,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50788:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7599_$_t_contract$_IInstantDistributionAgreementV1_$5893_$","typeString":"tuple(contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"50730:87:7"},{"expression":{"id":4628,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":4606,"name":"newCtx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4594,"src":"50828:6:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},null],"id":4607,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"50827:10:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$__$","typeString":"tuple(bytes memory,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4610,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4601,"src":"50880:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},{"arguments":[{"expression":{"id":4613,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4601,"src":"50929:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"id":4614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"50933:18:7","memberName":"updateSubscription","nodeType":"MemberAccess","referencedDeclaration":5740,"src":"50929:22:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_uint32_$_t_address_$_t_uint128_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,uint32,address,uint128,bytes memory) external returns (bytes memory)"}},{"components":[{"id":4615,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"50991:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},{"id":4616,"name":"indexId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4585,"src":"51018:7:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":4617,"name":"subscriber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4587,"src":"51047:10:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4618,"name":"units","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4589,"src":"51079:5:7","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"arguments":[{"hexValue":"30","id":4621,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"51116:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4620,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"51106:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":4619,"name":"bytes","nodeType":"ElementaryTypeName","src":"51110:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":4622,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51106:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":4623,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"50969:186:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_uint32_$_t_address_$_t_uint128_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,uint32,address,uint128,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_uint32_$_t_address_$_t_uint128_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,uint32,address,uint128,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_uint32_$_t_address_$_t_uint128_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,uint32,address,uint128,bytes memory)"}],"expression":{"id":4611,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"50897:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4612,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"50901:10:7","memberName":"encodeCall","nodeType":"MemberAccess","src":"50897:14:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4624,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50897:272:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"3078","id":4625,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"51183:4:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"},{"id":4626,"name":"ctx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4591,"src":"51201:3:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":4608,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4598,"src":"50840:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"id":4609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"50845:24:7","memberName":"callAgreementWithContext","nodeType":"MemberAccess","referencedDeclaration":7548,"src":"50840:29:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6395_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory,bytes memory) external returns (bytes memory,bytes memory)"}},"id":4627,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50840:374:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(bytes memory,bytes memory)"}},"src":"50827:387:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4629,"nodeType":"ExpressionStatement","src":"50827:387:7"}]},"documentation":{"id":4580,"nodeType":"StructuredDocumentation","src":"50078:424:7","text":" @dev Updates the units of a subscription. This changes the number of shares the subscriber\n holds. Meant for usage in super apps\n @param token Super Token used with the index.\n @param indexId ID of the index.\n @param subscriber Subscriber address whose units are to be updated.\n @param units New number of units the subscriber holds.\n @param ctx from super app callback"},"id":4631,"implemented":true,"kind":"function","modifiers":[],"name":"updateSubscriptionUnitsWithCtx","nameLocation":"50516:30:7","nodeType":"FunctionDefinition","parameters":{"id":4592,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4583,"mutability":"mutable","name":"token","nameLocation":"50568:5:7","nodeType":"VariableDeclaration","scope":4631,"src":"50556:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":4582,"nodeType":"UserDefinedTypeName","pathNode":{"id":4581,"name":"ISuperToken","nameLocations":["50556:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"50556:11:7"},"referencedDeclaration":6947,"src":"50556:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":4585,"mutability":"mutable","name":"indexId","nameLocation":"50590:7:7","nodeType":"VariableDeclaration","scope":4631,"src":"50583:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4584,"name":"uint32","nodeType":"ElementaryTypeName","src":"50583:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":4587,"mutability":"mutable","name":"subscriber","nameLocation":"50615:10:7","nodeType":"VariableDeclaration","scope":4631,"src":"50607:18:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4586,"name":"address","nodeType":"ElementaryTypeName","src":"50607:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4589,"mutability":"mutable","name":"units","nameLocation":"50643:5:7","nodeType":"VariableDeclaration","scope":4631,"src":"50635:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":4588,"name":"uint128","nodeType":"ElementaryTypeName","src":"50635:7:7","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":4591,"mutability":"mutable","name":"ctx","nameLocation":"50671:3:7","nodeType":"VariableDeclaration","scope":4631,"src":"50658:16:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4590,"name":"bytes","nodeType":"ElementaryTypeName","src":"50658:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"50546:134:7"},"returnParameters":{"id":4595,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4594,"mutability":"mutable","name":"newCtx","nameLocation":"50712:6:7","nodeType":"VariableDeclaration","scope":4631,"src":"50699:19:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4593,"name":"bytes","nodeType":"ElementaryTypeName","src":"50699:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"50698:21:7"},"scope":5077,"src":"50507:714:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4682,"nodeType":"Block","src":"51822:508:7","statements":[{"assignments":[4650,4653],"declarations":[{"constant":false,"id":4650,"mutability":"mutable","name":"host","nameLocation":"51845:4:7","nodeType":"VariableDeclaration","scope":4682,"src":"51833:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"},"typeName":{"id":4649,"nodeType":"UserDefinedTypeName","pathNode":{"id":4648,"name":"ISuperfluid","nameLocations":["51833:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":7599,"src":"51833:11:7"},"referencedDeclaration":7599,"src":"51833:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":4653,"mutability":"mutable","name":"ida","nameLocation":"51883:3:7","nodeType":"VariableDeclaration","scope":4682,"src":"51851:35:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"},"typeName":{"id":4652,"nodeType":"UserDefinedTypeName","pathNode":{"id":4651,"name":"IInstantDistributionAgreementV1","nameLocations":["51851:31:7"],"nodeType":"IdentifierPath","referencedDeclaration":5893,"src":"51851:31:7"},"referencedDeclaration":5893,"src":"51851:31:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"visibility":"internal"}],"id":4657,"initialValue":{"arguments":[{"id":4655,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4635,"src":"51913:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}],"id":4654,"name":"_getAndCacheHostAndIDA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4912,"src":"51890:22:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$6947_$returns$_t_contract$_ISuperfluid_$7599_$_t_contract$_IInstantDistributionAgreementV1_$5893_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"id":4656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51890:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7599_$_t_contract$_IInstantDistributionAgreementV1_$5893_$","typeString":"tuple(contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"51832:87:7"},{"expression":{"id":4680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":4658,"name":"newCtx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4646,"src":"51930:6:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},null],"id":4659,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"51929:10:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$__$","typeString":"tuple(bytes memory,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4662,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4653,"src":"51985:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},{"arguments":[{"expression":{"id":4665,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4653,"src":"52034:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"id":4666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52038:18:7","memberName":"deleteSubscription","nodeType":"MemberAccess","referencedDeclaration":5847,"src":"52034:22:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_uint32_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,uint32,address,bytes memory) external returns (bytes memory)"}},{"components":[{"id":4667,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4635,"src":"52096:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},{"id":4668,"name":"publisher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4637,"src":"52123:9:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4669,"name":"indexId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4639,"src":"52154:7:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":4670,"name":"subscriber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4641,"src":"52183:10:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":4673,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"52225:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4672,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"52215:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":4671,"name":"bytes","nodeType":"ElementaryTypeName","src":"52219:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":4674,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52215:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":4675,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"52074:190:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_uint32_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,uint32,address,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_uint32_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,uint32,address,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_uint32_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,uint32,address,bytes memory)"}],"expression":{"id":4663,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"52002:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4664,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"52006:10:7","memberName":"encodeCall","nodeType":"MemberAccess","src":"52002:14:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4676,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52002:276:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"3078","id":4677,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"52292:4:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"},{"id":4678,"name":"ctx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4643,"src":"52310:3:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":4660,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4650,"src":"51942:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"id":4661,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"51947:24:7","memberName":"callAgreementWithContext","nodeType":"MemberAccess","referencedDeclaration":7548,"src":"51942:29:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6395_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory,bytes memory) external returns (bytes memory,bytes memory)"}},"id":4679,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51942:381:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(bytes memory,bytes memory)"}},"src":"51929:394:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4681,"nodeType":"ExpressionStatement","src":"51929:394:7"}]},"documentation":{"id":4632,"nodeType":"StructuredDocumentation","src":"51227:378:7","text":" @dev Deletes a subscription, setting a subcriber's units to zero.\n Meant for usage in super apps\n @param token Super Token used with the index.\n @param publisher Publisher of the index.\n @param indexId ID of the index.\n @param subscriber Subscriber address whose units are to be deleted.\n @param ctx from super app callback"},"id":4683,"implemented":true,"kind":"function","modifiers":[],"name":"deleteSubscriptionWithCtx","nameLocation":"51619:25:7","nodeType":"FunctionDefinition","parameters":{"id":4644,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4635,"mutability":"mutable","name":"token","nameLocation":"51666:5:7","nodeType":"VariableDeclaration","scope":4683,"src":"51654:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":4634,"nodeType":"UserDefinedTypeName","pathNode":{"id":4633,"name":"ISuperToken","nameLocations":["51654:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"51654:11:7"},"referencedDeclaration":6947,"src":"51654:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":4637,"mutability":"mutable","name":"publisher","nameLocation":"51689:9:7","nodeType":"VariableDeclaration","scope":4683,"src":"51681:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4636,"name":"address","nodeType":"ElementaryTypeName","src":"51681:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4639,"mutability":"mutable","name":"indexId","nameLocation":"51715:7:7","nodeType":"VariableDeclaration","scope":4683,"src":"51708:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4638,"name":"uint32","nodeType":"ElementaryTypeName","src":"51708:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":4641,"mutability":"mutable","name":"subscriber","nameLocation":"51740:10:7","nodeType":"VariableDeclaration","scope":4683,"src":"51732:18:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4640,"name":"address","nodeType":"ElementaryTypeName","src":"51732:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4643,"mutability":"mutable","name":"ctx","nameLocation":"51773:3:7","nodeType":"VariableDeclaration","scope":4683,"src":"51760:16:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4642,"name":"bytes","nodeType":"ElementaryTypeName","src":"51760:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"51644:138:7"},"returnParameters":{"id":4647,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4646,"mutability":"mutable","name":"newCtx","nameLocation":"51814:6:7","nodeType":"VariableDeclaration","scope":4683,"src":"51801:19:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4645,"name":"bytes","nodeType":"ElementaryTypeName","src":"51801:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"51800:21:7"},"scope":5077,"src":"51610:720:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4734,"nodeType":"Block","src":"52926:496:7","statements":[{"assignments":[4702,4705],"declarations":[{"constant":false,"id":4702,"mutability":"mutable","name":"host","nameLocation":"52950:4:7","nodeType":"VariableDeclaration","scope":4734,"src":"52938:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"},"typeName":{"id":4701,"nodeType":"UserDefinedTypeName","pathNode":{"id":4700,"name":"ISuperfluid","nameLocations":["52938:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":7599,"src":"52938:11:7"},"referencedDeclaration":7599,"src":"52938:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":4705,"mutability":"mutable","name":"ida","nameLocation":"52988:3:7","nodeType":"VariableDeclaration","scope":4734,"src":"52956:35:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"},"typeName":{"id":4704,"nodeType":"UserDefinedTypeName","pathNode":{"id":4703,"name":"IInstantDistributionAgreementV1","nameLocations":["52956:31:7"],"nodeType":"IdentifierPath","referencedDeclaration":5893,"src":"52956:31:7"},"referencedDeclaration":5893,"src":"52956:31:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"visibility":"internal"}],"id":4709,"initialValue":{"arguments":[{"id":4707,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4687,"src":"53018:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}],"id":4706,"name":"_getAndCacheHostAndIDA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4912,"src":"52995:22:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$6947_$returns$_t_contract$_ISuperfluid_$7599_$_t_contract$_IInstantDistributionAgreementV1_$5893_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"id":4708,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52995:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7599_$_t_contract$_IInstantDistributionAgreementV1_$5893_$","typeString":"tuple(contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"52937:87:7"},{"expression":{"id":4732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":4710,"name":"newCtx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4698,"src":"53035:6:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},null],"id":4711,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"53034:10:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$__$","typeString":"tuple(bytes memory,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4714,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4705,"src":"53090:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},{"arguments":[{"expression":{"id":4717,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4705,"src":"53139:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"id":4718,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"53143:5:7","memberName":"claim","nodeType":"MemberAccess","referencedDeclaration":5864,"src":"53139:9:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_uint32_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,uint32,address,bytes memory) external returns (bytes memory)"}},{"components":[{"id":4719,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4687,"src":"53188:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},{"id":4720,"name":"publisher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4689,"src":"53215:9:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4721,"name":"indexId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4691,"src":"53246:7:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":4722,"name":"subscriber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4693,"src":"53275:10:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":4725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"53317:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4724,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"53307:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":4723,"name":"bytes","nodeType":"ElementaryTypeName","src":"53311:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":4726,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53307:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":4727,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"53166:190:7","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_uint32_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,uint32,address,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8014_$_t_address_$_t_uint32_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,uint32,address,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$6947_$_t_address_$_t_uint32_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,uint32,address,bytes memory)"}],"expression":{"id":4715,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"53107:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4716,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"53111:10:7","memberName":"encodeCall","nodeType":"MemberAccess","src":"53107:14:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4728,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53107:263:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"3078","id":4729,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"53384:4:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"},{"id":4730,"name":"ctx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4695,"src":"53402:3:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":4712,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4702,"src":"53047:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"id":4713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"53052:24:7","memberName":"callAgreementWithContext","nodeType":"MemberAccess","referencedDeclaration":7548,"src":"53047:29:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6395_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory,bytes memory) external returns (bytes memory,bytes memory)"}},"id":4731,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53047:368:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(bytes memory,bytes memory)"}},"src":"53034:381:7","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4733,"nodeType":"ExpressionStatement","src":"53034:381:7"}]},"documentation":{"id":4684,"nodeType":"StructuredDocumentation","src":"52336:386:7","text":" @dev Claims pending distribution. Subscription should not be approved.\n Meant for usage in super app callbacks\n @param token Super Token used with the index.\n @param publisher Publisher of the index.\n @param indexId ID of the index.\n @param subscriber Subscriber address that receives the claim.\n @param ctx from super app callback"},"id":4735,"implemented":true,"kind":"function","modifiers":[],"name":"claimWithCtx","nameLocation":"52736:12:7","nodeType":"FunctionDefinition","parameters":{"id":4696,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4687,"mutability":"mutable","name":"token","nameLocation":"52770:5:7","nodeType":"VariableDeclaration","scope":4735,"src":"52758:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":4686,"nodeType":"UserDefinedTypeName","pathNode":{"id":4685,"name":"ISuperToken","nameLocations":["52758:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"52758:11:7"},"referencedDeclaration":6947,"src":"52758:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":4689,"mutability":"mutable","name":"publisher","nameLocation":"52793:9:7","nodeType":"VariableDeclaration","scope":4735,"src":"52785:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4688,"name":"address","nodeType":"ElementaryTypeName","src":"52785:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4691,"mutability":"mutable","name":"indexId","nameLocation":"52819:7:7","nodeType":"VariableDeclaration","scope":4735,"src":"52812:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4690,"name":"uint32","nodeType":"ElementaryTypeName","src":"52812:6:7","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":4693,"mutability":"mutable","name":"subscriber","nameLocation":"52844:10:7","nodeType":"VariableDeclaration","scope":4735,"src":"52836:18:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4692,"name":"address","nodeType":"ElementaryTypeName","src":"52836:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4695,"mutability":"mutable","name":"ctx","nameLocation":"52877:3:7","nodeType":"VariableDeclaration","scope":4735,"src":"52864:16:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4694,"name":"bytes","nodeType":"ElementaryTypeName","src":"52864:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"52748:138:7"},"returnParameters":{"id":4699,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4698,"mutability":"mutable","name":"newCtx","nameLocation":"52918:6:7","nodeType":"VariableDeclaration","scope":4735,"src":"52905:19:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4697,"name":"bytes","nodeType":"ElementaryTypeName","src":"52905:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"52904:21:7"},"scope":5077,"src":"52727:695:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"constant":true,"id":4738,"mutability":"constant","name":"_HOST_SLOT","nameLocation":"53581:10:7","nodeType":"VariableDeclaration","scope":5077,"src":"53556:104:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4736,"name":"bytes32","nodeType":"ElementaryTypeName","src":"53556:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307836353539396266373436653137613030656136326533363130353836393932643838313031623738656563336366333830373036363231666239376561383337","id":4737,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"53594:66:7","typeDescriptions":{"typeIdentifier":"t_rational_45841923532930376854970590744995540846552119741516134097130102287103816542263_by_1","typeString":"int_const 4584...(69 digits omitted)...2263"},"value":"0x65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea837"},"visibility":"private"},{"constant":true,"id":4741,"mutability":"constant","name":"_CFA_SLOT","nameLocation":"53764:9:7","nodeType":"VariableDeclaration","scope":5077,"src":"53739:103:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4739,"name":"bytes32","nodeType":"ElementaryTypeName","src":"53739:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307862393639643739643838616364303264303465643765653764343362393439653764616630393364333633616263666262633433646664666431636539363961","id":4740,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"53776:66:7","typeDescriptions":{"typeIdentifier":"t_rational_83864884052275761806128162606931667685484524194840996638048501509189845030554_by_1","typeString":"int_const 8386...(69 digits omitted)...0554"},"value":"0xb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a"},"visibility":"private"},{"constant":true,"id":4744,"mutability":"constant","name":"_IDA_SLOT","nameLocation":"53947:9:7","nodeType":"VariableDeclaration","scope":5077,"src":"53922:103:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4742,"name":"bytes32","nodeType":"ElementaryTypeName","src":"53922:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307861383332656531393234656139363032313161663264663037643635643136363233323031386636313361633637303830343363643866383737336564646562","id":4743,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"53959:66:7","typeDescriptions":{"typeIdentifier":"t_rational_76078544208744620866510837364533883980946787649609488990749670216708906737131_by_1","typeString":"int_const 7607...(69 digits omitted)...7131"},"value":"0xa832ee1924ea960211af2df07d65d166232018f613ac6708043cd8f8773eddeb"},"visibility":"private"},{"body":{"id":4826,"nodeType":"Block","src":"54296:1023:7","statements":[{"AST":{"nodeType":"YulBlock","src":"54366:108:7","statements":[{"nodeType":"YulAssignment","src":"54403:25:7","value":{"arguments":[{"name":"_HOST_SLOT","nodeType":"YulIdentifier","src":"54417:10:7"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"54411:5:7"},"nodeType":"YulFunctionCall","src":"54411:17:7"},"variableNames":[{"name":"host","nodeType":"YulIdentifier","src":"54403:4:7"}]},{"nodeType":"YulAssignment","src":"54441:23:7","value":{"arguments":[{"name":"_CFA_SLOT","nodeType":"YulIdentifier","src":"54454:9:7"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"54448:5:7"},"nodeType":"YulFunctionCall","src":"54448:16:7"},"variableNames":[{"name":"cfa","nodeType":"YulIdentifier","src":"54441:3:7"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":4741,"isOffset":false,"isSlot":false,"src":"54454:9:7","valueSize":1},{"declaration":4738,"isOffset":false,"isSlot":false,"src":"54417:10:7","valueSize":1},{"declaration":4754,"isOffset":false,"isSlot":false,"src":"54441:3:7","valueSize":1},{"declaration":4751,"isOffset":false,"isSlot":false,"src":"54403:4:7","valueSize":1}],"id":4756,"nodeType":"InlineAssembly","src":"54357:117:7"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4765,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4759,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4754,"src":"54495:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}],"id":4758,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"54487:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4757,"name":"address","nodeType":"ElementaryTypeName","src":"54487:7:7","typeDescriptions":{}}},"id":4760,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"54487:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":4763,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"54511:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4762,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"54503:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4761,"name":"address","nodeType":"ElementaryTypeName","src":"54503:7:7","typeDescriptions":{}}},"id":4764,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"54503:10:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"54487:26:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4801,"nodeType":"IfStatement","src":"54483:741:7","trueBody":{"id":4800,"nodeType":"Block","src":"54515:709:7","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4774,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4768,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4751,"src":"54615:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}],"id":4767,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"54607:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4766,"name":"address","nodeType":"ElementaryTypeName","src":"54607:7:7","typeDescriptions":{}}},"id":4769,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"54607:13:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":4772,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"54632:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4771,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"54624:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4770,"name":"address","nodeType":"ElementaryTypeName","src":"54624:7:7","typeDescriptions":{}}},"id":4773,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"54624:10:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"54607:27:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4784,"nodeType":"IfStatement","src":"54603:101:7","trueBody":{"id":4783,"nodeType":"Block","src":"54636:68:7","statements":[{"expression":{"id":4781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4775,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4751,"src":"54654:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":4777,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4747,"src":"54673:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"id":4778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"54679:7:7","memberName":"getHost","nodeType":"MemberAccess","referencedDeclaration":7751,"src":"54673:13:7","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":4779,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"54673:15:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4776,"name":"ISuperfluid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7599,"src":"54661:11:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISuperfluid_$7599_$","typeString":"type(contract ISuperfluid)"}},"id":4780,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"54661:28:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"src":"54654:35:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"id":4782,"nodeType":"ExpressionStatement","src":"54654:35:7"}]}},{"expression":{"id":4797,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4785,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4754,"src":"54717:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[{"hexValue":"307861393231346363393636313565303038356433626230373737353864623639343937646332646365336232623165393762633933633364313864383365666433","id":4793,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"54903:66:7","typeDescriptions":{"typeIdentifier":"t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1","typeString":"int_const 7649...(69 digits omitted)...0115"},"value":"0xa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd3"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1","typeString":"int_const 7649...(69 digits omitted)...0115"}],"expression":{"arguments":[{"id":4790,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4751,"src":"54768:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}],"id":4789,"name":"ISuperfluid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7599,"src":"54756:11:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISuperfluid_$7599_$","typeString":"type(contract ISuperfluid)"}},"id":4791,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"54756:17:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"id":4792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"54774:17:7","memberName":"getAgreementClass","nodeType":"MemberAccess","referencedDeclaration":7236,"src":"54756:35:7","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_contract$_ISuperAgreement_$6395_$","typeString":"function (bytes32) view external returns (contract ISuperAgreement)"}},"id":4794,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"54756:214:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISuperAgreement_$6395","typeString":"contract ISuperAgreement"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperAgreement_$6395","typeString":"contract ISuperAgreement"}],"id":4788,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"54748:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4787,"name":"address","nodeType":"ElementaryTypeName","src":"54748:7:7","typeDescriptions":{}}},"id":4795,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"54748:223:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4786,"name":"IConstantFlowAgreementV1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5487,"src":"54723:24:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IConstantFlowAgreementV1_$5487_$","typeString":"type(contract IConstantFlowAgreementV1)"}},"id":4796,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"54723:249:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"src":"54717:255:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"id":4798,"nodeType":"ExpressionStatement","src":"54717:255:7"},{"AST":{"nodeType":"YulBlock","src":"55084:130:7","statements":[{"expression":{"arguments":[{"name":"_HOST_SLOT","nodeType":"YulIdentifier","src":"55144:10:7"},{"name":"host","nodeType":"YulIdentifier","src":"55156:4:7"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"55137:6:7"},"nodeType":"YulFunctionCall","src":"55137:24:7"},"nodeType":"YulExpressionStatement","src":"55137:24:7"},{"expression":{"arguments":[{"name":"_CFA_SLOT","nodeType":"YulIdentifier","src":"55185:9:7"},{"name":"cfa","nodeType":"YulIdentifier","src":"55196:3:7"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"55178:6:7"},"nodeType":"YulFunctionCall","src":"55178:22:7"},"nodeType":"YulExpressionStatement","src":"55178:22:7"}]},"evmVersion":"paris","externalReferences":[{"declaration":4741,"isOffset":false,"isSlot":false,"src":"55185:9:7","valueSize":1},{"declaration":4738,"isOffset":false,"isSlot":false,"src":"55144:10:7","valueSize":1},{"declaration":4754,"isOffset":false,"isSlot":false,"src":"55196:3:7","valueSize":1},{"declaration":4751,"isOffset":false,"isSlot":false,"src":"55156:4:7","valueSize":1}],"id":4799,"nodeType":"InlineAssembly","src":"55075:139:7"}]}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4805,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4751,"src":"55248:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}],"id":4804,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"55240:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4803,"name":"address","nodeType":"ElementaryTypeName","src":"55240:7:7","typeDescriptions":{}}},"id":4806,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"55240:13:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":4809,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"55265:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4808,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"55257:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4807,"name":"address","nodeType":"ElementaryTypeName","src":"55257:7:7","typeDescriptions":{}}},"id":4810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"55257:10:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"55240:27:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":4802,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"55233:6:7","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":4812,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"55233:35:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4813,"nodeType":"ExpressionStatement","src":"55233:35:7"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4817,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4754,"src":"55293:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}],"id":4816,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"55285:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4815,"name":"address","nodeType":"ElementaryTypeName","src":"55285:7:7","typeDescriptions":{}}},"id":4818,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"55285:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":4821,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"55309:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4820,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"55301:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4819,"name":"address","nodeType":"ElementaryTypeName","src":"55301:7:7","typeDescriptions":{}}},"id":4822,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"55301:10:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"55285:26:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":4814,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"55278:6:7","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":4824,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"55278:34:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4825,"nodeType":"ExpressionStatement","src":"55278:34:7"}]},"id":4827,"implemented":true,"kind":"function","modifiers":[],"name":"_getAndCacheHostAndCFA","nameLocation":"54178:22:7","nodeType":"FunctionDefinition","parameters":{"id":4748,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4747,"mutability":"mutable","name":"token","nameLocation":"54213:5:7","nodeType":"VariableDeclaration","scope":4827,"src":"54201:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":4746,"nodeType":"UserDefinedTypeName","pathNode":{"id":4745,"name":"ISuperToken","nameLocations":["54201:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"54201:11:7"},"referencedDeclaration":6947,"src":"54201:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"}],"src":"54200:19:7"},"returnParameters":{"id":4755,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4751,"mutability":"mutable","name":"host","nameLocation":"54256:4:7","nodeType":"VariableDeclaration","scope":4827,"src":"54244:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"},"typeName":{"id":4750,"nodeType":"UserDefinedTypeName","pathNode":{"id":4749,"name":"ISuperfluid","nameLocations":["54244:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":7599,"src":"54244:11:7"},"referencedDeclaration":7599,"src":"54244:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":4754,"mutability":"mutable","name":"cfa","nameLocation":"54287:3:7","nodeType":"VariableDeclaration","scope":4827,"src":"54262:28:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":4753,"nodeType":"UserDefinedTypeName","pathNode":{"id":4752,"name":"IConstantFlowAgreementV1","nameLocations":["54262:24:7"],"nodeType":"IdentifierPath","referencedDeclaration":5487,"src":"54262:24:7"},"referencedDeclaration":5487,"src":"54262:24:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"src":"54243:48:7"},"scope":5077,"src":"54169:1150:7","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":4911,"nodeType":"Block","src":"55596:952:7","statements":[{"AST":{"nodeType":"YulBlock","src":"55666:108:7","statements":[{"nodeType":"YulAssignment","src":"55703:25:7","value":{"arguments":[{"name":"_HOST_SLOT","nodeType":"YulIdentifier","src":"55717:10:7"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"55711:5:7"},"nodeType":"YulFunctionCall","src":"55711:17:7"},"variableNames":[{"name":"host","nodeType":"YulIdentifier","src":"55703:4:7"}]},{"nodeType":"YulAssignment","src":"55741:23:7","value":{"arguments":[{"name":"_IDA_SLOT","nodeType":"YulIdentifier","src":"55754:9:7"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"55748:5:7"},"nodeType":"YulFunctionCall","src":"55748:16:7"},"variableNames":[{"name":"ida","nodeType":"YulIdentifier","src":"55741:3:7"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":4738,"isOffset":false,"isSlot":false,"src":"55717:10:7","valueSize":1},{"declaration":4744,"isOffset":false,"isSlot":false,"src":"55754:9:7","valueSize":1},{"declaration":4834,"isOffset":false,"isSlot":false,"src":"55703:4:7","valueSize":1},{"declaration":4837,"isOffset":false,"isSlot":false,"src":"55741:3:7","valueSize":1}],"id":4839,"nodeType":"InlineAssembly","src":"55657:117:7"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4842,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4837,"src":"55795:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}],"id":4841,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"55787:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4840,"name":"address","nodeType":"ElementaryTypeName","src":"55787:7:7","typeDescriptions":{}}},"id":4843,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"55787:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":4846,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"55811:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4845,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"55803:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4844,"name":"address","nodeType":"ElementaryTypeName","src":"55803:7:7","typeDescriptions":{}}},"id":4847,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"55803:10:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"55787:26:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4886,"nodeType":"IfStatement","src":"55783:670:7","trueBody":{"id":4885,"nodeType":"Block","src":"55815:638:7","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4857,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4851,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4834,"src":"55915:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}],"id":4850,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"55907:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4849,"name":"address","nodeType":"ElementaryTypeName","src":"55907:7:7","typeDescriptions":{}}},"id":4852,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"55907:13:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":4855,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"55932:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4854,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"55924:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4853,"name":"address","nodeType":"ElementaryTypeName","src":"55924:7:7","typeDescriptions":{}}},"id":4856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"55924:10:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"55907:27:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4867,"nodeType":"IfStatement","src":"55903:101:7","trueBody":{"id":4866,"nodeType":"Block","src":"55936:68:7","statements":[{"expression":{"id":4864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4858,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4834,"src":"55954:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":4860,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4830,"src":"55973:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"id":4861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"55979:7:7","memberName":"getHost","nodeType":"MemberAccess","referencedDeclaration":7751,"src":"55973:13:7","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":4862,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"55973:15:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4859,"name":"ISuperfluid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7599,"src":"55961:11:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISuperfluid_$7599_$","typeString":"type(contract ISuperfluid)"}},"id":4863,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"55961:28:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"src":"55954:35:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"id":4865,"nodeType":"ExpressionStatement","src":"55954:35:7"}]}},{"expression":{"id":4882,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4868,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4837,"src":"56017:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"hexValue":"6f72672e7375706572666c7569642d66696e616e63652e61677265656d656e74732e496e7374616e74446973747269627574696f6e41677265656d656e742e7631","id":4877,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"56130:67:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_8aedc3b5d4bf031e11a7e2940f7251c005698405d58e02e1c247fed3b1b3a674","typeString":"literal_string \"org.superfluid-finance.agreements.InstantDistributionAgreement.v1\""},"value":"org.superfluid-finance.agreements.InstantDistributionAgreement.v1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_8aedc3b5d4bf031e11a7e2940f7251c005698405d58e02e1c247fed3b1b3a674","typeString":"literal_string \"org.superfluid-finance.agreements.InstantDistributionAgreement.v1\""}],"id":4876,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"56120:9:7","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":4878,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"56120:78:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"arguments":[{"id":4873,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4834,"src":"56075:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}],"id":4872,"name":"ISuperfluid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7599,"src":"56063:11:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISuperfluid_$7599_$","typeString":"type(contract ISuperfluid)"}},"id":4874,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"56063:17:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"id":4875,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"56081:17:7","memberName":"getAgreementClass","nodeType":"MemberAccess","referencedDeclaration":7236,"src":"56063:35:7","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_contract$_ISuperAgreement_$6395_$","typeString":"function (bytes32) view external returns (contract ISuperAgreement)"}},"id":4879,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"56063:136:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISuperAgreement_$6395","typeString":"contract ISuperAgreement"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperAgreement_$6395","typeString":"contract ISuperAgreement"}],"id":4871,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"56055:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4870,"name":"address","nodeType":"ElementaryTypeName","src":"56055:7:7","typeDescriptions":{}}},"id":4880,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"56055:145:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4869,"name":"IInstantDistributionAgreementV1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5893,"src":"56023:31:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IInstantDistributionAgreementV1_$5893_$","typeString":"type(contract IInstantDistributionAgreementV1)"}},"id":4881,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"56023:178:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"src":"56017:184:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"id":4883,"nodeType":"ExpressionStatement","src":"56017:184:7"},{"AST":{"nodeType":"YulBlock","src":"56313:130:7","statements":[{"expression":{"arguments":[{"name":"_HOST_SLOT","nodeType":"YulIdentifier","src":"56373:10:7"},{"name":"host","nodeType":"YulIdentifier","src":"56385:4:7"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"56366:6:7"},"nodeType":"YulFunctionCall","src":"56366:24:7"},"nodeType":"YulExpressionStatement","src":"56366:24:7"},{"expression":{"arguments":[{"name":"_IDA_SLOT","nodeType":"YulIdentifier","src":"56414:9:7"},{"name":"ida","nodeType":"YulIdentifier","src":"56425:3:7"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"56407:6:7"},"nodeType":"YulFunctionCall","src":"56407:22:7"},"nodeType":"YulExpressionStatement","src":"56407:22:7"}]},"evmVersion":"paris","externalReferences":[{"declaration":4738,"isOffset":false,"isSlot":false,"src":"56373:10:7","valueSize":1},{"declaration":4744,"isOffset":false,"isSlot":false,"src":"56414:9:7","valueSize":1},{"declaration":4834,"isOffset":false,"isSlot":false,"src":"56385:4:7","valueSize":1},{"declaration":4837,"isOffset":false,"isSlot":false,"src":"56425:3:7","valueSize":1}],"id":4884,"nodeType":"InlineAssembly","src":"56304:139:7"}]}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4890,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4834,"src":"56477:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}],"id":4889,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"56469:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4888,"name":"address","nodeType":"ElementaryTypeName","src":"56469:7:7","typeDescriptions":{}}},"id":4891,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"56469:13:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":4894,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"56494:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4893,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"56486:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4892,"name":"address","nodeType":"ElementaryTypeName","src":"56486:7:7","typeDescriptions":{}}},"id":4895,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"56486:10:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"56469:27:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":4887,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"56462:6:7","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":4897,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"56462:35:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4898,"nodeType":"ExpressionStatement","src":"56462:35:7"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4902,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4837,"src":"56522:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}],"id":4901,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"56514:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4900,"name":"address","nodeType":"ElementaryTypeName","src":"56514:7:7","typeDescriptions":{}}},"id":4903,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"56514:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":4906,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"56538:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4905,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"56530:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4904,"name":"address","nodeType":"ElementaryTypeName","src":"56530:7:7","typeDescriptions":{}}},"id":4907,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"56530:10:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"56514:26:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":4899,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"56507:6:7","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":4909,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"56507:34:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4910,"nodeType":"ExpressionStatement","src":"56507:34:7"}]},"id":4912,"implemented":true,"kind":"function","modifiers":[],"name":"_getAndCacheHostAndIDA","nameLocation":"55471:22:7","nodeType":"FunctionDefinition","parameters":{"id":4831,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4830,"mutability":"mutable","name":"token","nameLocation":"55506:5:7","nodeType":"VariableDeclaration","scope":4912,"src":"55494:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":4829,"nodeType":"UserDefinedTypeName","pathNode":{"id":4828,"name":"ISuperToken","nameLocations":["55494:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"55494:11:7"},"referencedDeclaration":6947,"src":"55494:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"}],"src":"55493:19:7"},"returnParameters":{"id":4838,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4834,"mutability":"mutable","name":"host","nameLocation":"55549:4:7","nodeType":"VariableDeclaration","scope":4912,"src":"55537:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"},"typeName":{"id":4833,"nodeType":"UserDefinedTypeName","pathNode":{"id":4832,"name":"ISuperfluid","nameLocations":["55537:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":7599,"src":"55537:11:7"},"referencedDeclaration":7599,"src":"55537:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":4837,"mutability":"mutable","name":"ida","nameLocation":"55587:3:7","nodeType":"VariableDeclaration","scope":4912,"src":"55555:35:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"},"typeName":{"id":4836,"nodeType":"UserDefinedTypeName","pathNode":{"id":4835,"name":"IInstantDistributionAgreementV1","nameLocations":["55555:31:7"],"nodeType":"IdentifierPath","referencedDeclaration":5893,"src":"55555:31:7"},"referencedDeclaration":5893,"src":"55555:31:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"visibility":"internal"}],"src":"55536:55:7"},"scope":5077,"src":"55462:1086:7","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":4993,"nodeType":"Block","src":"56792:793:7","statements":[{"AST":{"nodeType":"YulBlock","src":"56862:108:7","statements":[{"nodeType":"YulAssignment","src":"56899:25:7","value":{"arguments":[{"name":"_HOST_SLOT","nodeType":"YulIdentifier","src":"56913:10:7"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"56907:5:7"},"nodeType":"YulFunctionCall","src":"56907:17:7"},"variableNames":[{"name":"host","nodeType":"YulIdentifier","src":"56899:4:7"}]},{"nodeType":"YulAssignment","src":"56937:23:7","value":{"arguments":[{"name":"_CFA_SLOT","nodeType":"YulIdentifier","src":"56950:9:7"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"56944:5:7"},"nodeType":"YulFunctionCall","src":"56944:16:7"},"variableNames":[{"name":"cfa","nodeType":"YulIdentifier","src":"56937:3:7"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":4741,"isOffset":false,"isSlot":false,"src":"56950:9:7","valueSize":1},{"declaration":4738,"isOffset":false,"isSlot":false,"src":"56913:10:7","valueSize":1},{"declaration":4922,"isOffset":false,"isSlot":false,"src":"56937:3:7","valueSize":1},{"declaration":4919,"isOffset":false,"isSlot":false,"src":"56899:4:7","valueSize":1}],"id":4924,"nodeType":"InlineAssembly","src":"56853:117:7"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4927,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4922,"src":"56991:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}],"id":4926,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"56983:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4925,"name":"address","nodeType":"ElementaryTypeName","src":"56983:7:7","typeDescriptions":{}}},"id":4928,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"56983:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":4931,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"57007:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4930,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"56999:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4929,"name":"address","nodeType":"ElementaryTypeName","src":"56999:7:7","typeDescriptions":{}}},"id":4932,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"56999:10:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"56983:26:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4968,"nodeType":"IfStatement","src":"56979:511:7","trueBody":{"id":4967,"nodeType":"Block","src":"57011:479:7","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4936,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4919,"src":"57122:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}],"id":4935,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"57114:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4934,"name":"address","nodeType":"ElementaryTypeName","src":"57114:7:7","typeDescriptions":{}}},"id":4937,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"57114:13:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":4940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"57139:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4939,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"57131:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4938,"name":"address","nodeType":"ElementaryTypeName","src":"57131:7:7","typeDescriptions":{}}},"id":4941,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"57131:10:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"57114:27:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4952,"nodeType":"IfStatement","src":"57110:101:7","trueBody":{"id":4951,"nodeType":"Block","src":"57143:68:7","statements":[{"expression":{"id":4949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4943,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4919,"src":"57161:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":4945,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4915,"src":"57180:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"id":4946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"57186:7:7","memberName":"getHost","nodeType":"MemberAccess","referencedDeclaration":7751,"src":"57180:13:7","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":4947,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"57180:15:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4944,"name":"ISuperfluid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7599,"src":"57168:11:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISuperfluid_$7599_$","typeString":"type(contract ISuperfluid)"}},"id":4948,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"57168:28:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"src":"57161:35:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"id":4950,"nodeType":"ExpressionStatement","src":"57161:35:7"}]}},{"expression":{"id":4965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4953,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4922,"src":"57224:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[{"hexValue":"307861393231346363393636313565303038356433626230373737353864623639343937646332646365336232623165393762633933633364313864383365666433","id":4961,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"57410:66:7","typeDescriptions":{"typeIdentifier":"t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1","typeString":"int_const 7649...(69 digits omitted)...0115"},"value":"0xa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd3"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1","typeString":"int_const 7649...(69 digits omitted)...0115"}],"expression":{"arguments":[{"id":4958,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4919,"src":"57275:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}],"id":4957,"name":"ISuperfluid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7599,"src":"57263:11:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISuperfluid_$7599_$","typeString":"type(contract ISuperfluid)"}},"id":4959,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"57263:17:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"id":4960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"57281:17:7","memberName":"getAgreementClass","nodeType":"MemberAccess","referencedDeclaration":7236,"src":"57263:35:7","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_contract$_ISuperAgreement_$6395_$","typeString":"function (bytes32) view external returns (contract ISuperAgreement)"}},"id":4962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"57263:214:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISuperAgreement_$6395","typeString":"contract ISuperAgreement"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperAgreement_$6395","typeString":"contract ISuperAgreement"}],"id":4956,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"57255:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4955,"name":"address","nodeType":"ElementaryTypeName","src":"57255:7:7","typeDescriptions":{}}},"id":4963,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"57255:223:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4954,"name":"IConstantFlowAgreementV1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5487,"src":"57230:24:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IConstantFlowAgreementV1_$5487_$","typeString":"type(contract IConstantFlowAgreementV1)"}},"id":4964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"57230:249:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"src":"57224:255:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"id":4966,"nodeType":"ExpressionStatement","src":"57224:255:7"}]}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4972,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4919,"src":"57514:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}],"id":4971,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"57506:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4970,"name":"address","nodeType":"ElementaryTypeName","src":"57506:7:7","typeDescriptions":{}}},"id":4973,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"57506:13:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":4976,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"57531:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4975,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"57523:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4974,"name":"address","nodeType":"ElementaryTypeName","src":"57523:7:7","typeDescriptions":{}}},"id":4977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"57523:10:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"57506:27:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":4969,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"57499:6:7","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":4979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"57499:35:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4980,"nodeType":"ExpressionStatement","src":"57499:35:7"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4984,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4922,"src":"57559:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}],"id":4983,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"57551:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4982,"name":"address","nodeType":"ElementaryTypeName","src":"57551:7:7","typeDescriptions":{}}},"id":4985,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"57551:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":4988,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"57575:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4987,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"57567:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4986,"name":"address","nodeType":"ElementaryTypeName","src":"57567:7:7","typeDescriptions":{}}},"id":4989,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"57567:10:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"57551:26:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":4981,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"57544:6:7","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":4991,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"57544:34:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4992,"nodeType":"ExpressionStatement","src":"57544:34:7"}]},"id":4994,"implemented":true,"kind":"function","modifiers":[],"name":"_getHostAndCFA","nameLocation":"56677:14:7","nodeType":"FunctionDefinition","parameters":{"id":4916,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4915,"mutability":"mutable","name":"token","nameLocation":"56704:5:7","nodeType":"VariableDeclaration","scope":4994,"src":"56692:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":4914,"nodeType":"UserDefinedTypeName","pathNode":{"id":4913,"name":"ISuperToken","nameLocations":["56692:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"56692:11:7"},"referencedDeclaration":6947,"src":"56692:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"}],"src":"56691:19:7"},"returnParameters":{"id":4923,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4919,"mutability":"mutable","name":"host","nameLocation":"56752:4:7","nodeType":"VariableDeclaration","scope":4994,"src":"56740:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"},"typeName":{"id":4918,"nodeType":"UserDefinedTypeName","pathNode":{"id":4917,"name":"ISuperfluid","nameLocations":["56740:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":7599,"src":"56740:11:7"},"referencedDeclaration":7599,"src":"56740:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":4922,"mutability":"mutable","name":"cfa","nameLocation":"56783:3:7","nodeType":"VariableDeclaration","scope":4994,"src":"56758:28:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":4921,"nodeType":"UserDefinedTypeName","pathNode":{"id":4920,"name":"IConstantFlowAgreementV1","nameLocations":["56758:24:7"],"nodeType":"IdentifierPath","referencedDeclaration":5487,"src":"56758:24:7"},"referencedDeclaration":5487,"src":"56758:24:7","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5487","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"src":"56739:48:7"},"scope":5077,"src":"56668:917:7","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":5075,"nodeType":"Block","src":"57836:807:7","statements":[{"AST":{"nodeType":"YulBlock","src":"57906:108:7","statements":[{"nodeType":"YulAssignment","src":"57943:25:7","value":{"arguments":[{"name":"_HOST_SLOT","nodeType":"YulIdentifier","src":"57957:10:7"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"57951:5:7"},"nodeType":"YulFunctionCall","src":"57951:17:7"},"variableNames":[{"name":"host","nodeType":"YulIdentifier","src":"57943:4:7"}]},{"nodeType":"YulAssignment","src":"57981:23:7","value":{"arguments":[{"name":"_IDA_SLOT","nodeType":"YulIdentifier","src":"57994:9:7"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"57988:5:7"},"nodeType":"YulFunctionCall","src":"57988:16:7"},"variableNames":[{"name":"ida","nodeType":"YulIdentifier","src":"57981:3:7"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":4738,"isOffset":false,"isSlot":false,"src":"57957:10:7","valueSize":1},{"declaration":4744,"isOffset":false,"isSlot":false,"src":"57994:9:7","valueSize":1},{"declaration":5001,"isOffset":false,"isSlot":false,"src":"57943:4:7","valueSize":1},{"declaration":5004,"isOffset":false,"isSlot":false,"src":"57981:3:7","valueSize":1}],"id":5006,"nodeType":"InlineAssembly","src":"57897:117:7"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":5009,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5004,"src":"58035:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}],"id":5008,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"58027:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5007,"name":"address","nodeType":"ElementaryTypeName","src":"58027:7:7","typeDescriptions":{}}},"id":5010,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"58027:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":5013,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"58051:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":5012,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"58043:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5011,"name":"address","nodeType":"ElementaryTypeName","src":"58043:7:7","typeDescriptions":{}}},"id":5014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"58043:10:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"58027:26:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5050,"nodeType":"IfStatement","src":"58023:525:7","trueBody":{"id":5049,"nodeType":"Block","src":"58055:493:7","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":5018,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5001,"src":"58166:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}],"id":5017,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"58158:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5016,"name":"address","nodeType":"ElementaryTypeName","src":"58158:7:7","typeDescriptions":{}}},"id":5019,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"58158:13:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":5022,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"58183:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":5021,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"58175:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5020,"name":"address","nodeType":"ElementaryTypeName","src":"58175:7:7","typeDescriptions":{}}},"id":5023,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"58175:10:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"58158:27:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5034,"nodeType":"IfStatement","src":"58154:101:7","trueBody":{"id":5033,"nodeType":"Block","src":"58187:68:7","statements":[{"expression":{"id":5031,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5025,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5001,"src":"58205:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":5027,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4997,"src":"58224:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"id":5028,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"58230:7:7","memberName":"getHost","nodeType":"MemberAccess","referencedDeclaration":7751,"src":"58224:13:7","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":5029,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"58224:15:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5026,"name":"ISuperfluid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7599,"src":"58212:11:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISuperfluid_$7599_$","typeString":"type(contract ISuperfluid)"}},"id":5030,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"58212:28:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"src":"58205:35:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"id":5032,"nodeType":"ExpressionStatement","src":"58205:35:7"}]}},{"expression":{"id":5047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5035,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5004,"src":"58268:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[{"hexValue":"307831353630393331306165336333303138396131323138623761646162616633366332363732353565373063663931623663626133383433363764396564613332","id":5043,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"58468:66:7","typeDescriptions":{"typeIdentifier":"t_rational_9669202144888542544909930522822239693248535320499447278175106571457164925490_by_1","typeString":"int_const 9669...(68 digits omitted)...5490"},"value":"0x15609310ae3c30189a1218b7adabaf36c267255e70cf91b6cba384367d9eda32"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_9669202144888542544909930522822239693248535320499447278175106571457164925490_by_1","typeString":"int_const 9669...(68 digits omitted)...5490"}],"expression":{"arguments":[{"id":5040,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5001,"src":"58326:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}],"id":5039,"name":"ISuperfluid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7599,"src":"58314:11:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISuperfluid_$7599_$","typeString":"type(contract ISuperfluid)"}},"id":5041,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"58314:17:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"id":5042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"58332:17:7","memberName":"getAgreementClass","nodeType":"MemberAccess","referencedDeclaration":7236,"src":"58314:35:7","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_contract$_ISuperAgreement_$6395_$","typeString":"function (bytes32) view external returns (contract ISuperAgreement)"}},"id":5044,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"58314:221:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISuperAgreement_$6395","typeString":"contract ISuperAgreement"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperAgreement_$6395","typeString":"contract ISuperAgreement"}],"id":5038,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"58306:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5037,"name":"address","nodeType":"ElementaryTypeName","src":"58306:7:7","typeDescriptions":{}}},"id":5045,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"58306:230:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5036,"name":"IInstantDistributionAgreementV1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5893,"src":"58274:31:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IInstantDistributionAgreementV1_$5893_$","typeString":"type(contract IInstantDistributionAgreementV1)"}},"id":5046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"58274:263:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"src":"58268:269:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"id":5048,"nodeType":"ExpressionStatement","src":"58268:269:7"}]}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":5054,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5001,"src":"58572:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}],"id":5053,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"58564:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5052,"name":"address","nodeType":"ElementaryTypeName","src":"58564:7:7","typeDescriptions":{}}},"id":5055,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"58564:13:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":5058,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"58589:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":5057,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"58581:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5056,"name":"address","nodeType":"ElementaryTypeName","src":"58581:7:7","typeDescriptions":{}}},"id":5059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"58581:10:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"58564:27:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":5051,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"58557:6:7","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":5061,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"58557:35:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5062,"nodeType":"ExpressionStatement","src":"58557:35:7"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5072,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":5066,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5004,"src":"58617:3:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}],"id":5065,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"58609:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5064,"name":"address","nodeType":"ElementaryTypeName","src":"58609:7:7","typeDescriptions":{}}},"id":5067,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"58609:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":5070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"58633:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":5069,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"58625:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5068,"name":"address","nodeType":"ElementaryTypeName","src":"58625:7:7","typeDescriptions":{}}},"id":5071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"58625:10:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"58609:26:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":5063,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"58602:6:7","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":5073,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"58602:34:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5074,"nodeType":"ExpressionStatement","src":"58602:34:7"}]},"id":5076,"implemented":true,"kind":"function","modifiers":[],"name":"_getHostAndIDA","nameLocation":"57714:14:7","nodeType":"FunctionDefinition","parameters":{"id":4998,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4997,"mutability":"mutable","name":"token","nameLocation":"57741:5:7","nodeType":"VariableDeclaration","scope":5076,"src":"57729:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":4996,"nodeType":"UserDefinedTypeName","pathNode":{"id":4995,"name":"ISuperToken","nameLocations":["57729:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"57729:11:7"},"referencedDeclaration":6947,"src":"57729:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"}],"src":"57728:19:7"},"returnParameters":{"id":5005,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5001,"mutability":"mutable","name":"host","nameLocation":"57789:4:7","nodeType":"VariableDeclaration","scope":5076,"src":"57777:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"},"typeName":{"id":5000,"nodeType":"UserDefinedTypeName","pathNode":{"id":4999,"name":"ISuperfluid","nameLocations":["57777:11:7"],"nodeType":"IdentifierPath","referencedDeclaration":7599,"src":"57777:11:7"},"referencedDeclaration":7599,"src":"57777:11:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":5004,"mutability":"mutable","name":"ida","nameLocation":"57827:3:7","nodeType":"VariableDeclaration","scope":5076,"src":"57795:35:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"},"typeName":{"id":5003,"nodeType":"UserDefinedTypeName","pathNode":{"id":5002,"name":"IInstantDistributionAgreementV1","nameLocations":["57795:31:7"],"nodeType":"IdentifierPath","referencedDeclaration":5893,"src":"57795:31:7"},"referencedDeclaration":5893,"src":"57795:31:7","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5893","typeString":"contract IInstantDistributionAgreementV1"}},"visibility":"internal"}],"src":"57776:55:7"},"scope":5077,"src":"57705:938:7","stateMutability":"view","virtual":false,"visibility":"private"}],"scope":5078,"src":"572:58073:7","usedErrors":[]}],"src":"35:58611:7"},"id":7},"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol":{"ast":{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol","exportedSymbols":{"IConstantFlowAgreementV1":[5487],"ISuperAgreement":[6395],"ISuperfluidToken":[8014]},"id":5488,"license":"AGPLv3","nodeType":"SourceUnit","nodes":[{"id":5079,"literals":["solidity",">=","0.8",".4"],"nodeType":"PragmaDirective","src":"35:25:8"},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol","file":"../superfluid/ISuperAgreement.sol","id":5081,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5488,"sourceUnit":6396,"src":"62:68:8","symbolAliases":[{"foreign":{"id":5080,"name":"ISuperAgreement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6395,"src":"71:15:8","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol","file":"../superfluid/ISuperfluidToken.sol","id":5083,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5488,"sourceUnit":8015,"src":"131:70:8","symbolAliases":[{"foreign":{"id":5082,"name":"ISuperfluidToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8014,"src":"140:16:8","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":5085,"name":"ISuperAgreement","nameLocations":["323:15:8"],"nodeType":"IdentifierPath","referencedDeclaration":6395,"src":"323:15:8"},"id":5086,"nodeType":"InheritanceSpecifier","src":"323:15:8"}],"canonicalName":"IConstantFlowAgreementV1","contractDependencies":[],"contractKind":"contract","documentation":{"id":5084,"nodeType":"StructuredDocumentation","src":"203:73:8","text":" @title Constant Flow Agreement interface\n @author Superfluid"},"fullyImplemented":false,"id":5487,"linearizedBaseContracts":[5487,6395],"name":"IConstantFlowAgreementV1","nameLocation":"295:24:8","nodeType":"ContractDefinition","nodes":[{"errorSelector":"4b993136","id":5088,"name":"CFA_ACL_NO_SENDER_CREATE","nameLocation":"526:24:8","nodeType":"ErrorDefinition","parameters":{"id":5087,"nodeType":"ParameterList","parameters":[],"src":"550:2:8"},"src":"520:33:8"},{"errorSelector":"edfa0d3b","id":5090,"name":"CFA_ACL_NO_SENDER_UPDATE","nameLocation":"592:24:8","nodeType":"ErrorDefinition","parameters":{"id":5089,"nodeType":"ParameterList","parameters":[],"src":"616:2:8"},"src":"586:33:8"},{"errorSelector":"a3eab6ac","id":5092,"name":"CFA_ACL_OPERATOR_NO_CREATE_PERMISSIONS","nameLocation":"658:38:8","nodeType":"ErrorDefinition","parameters":{"id":5091,"nodeType":"ParameterList","parameters":[],"src":"696:2:8"},"src":"652:47:8"},{"errorSelector":"ac434b5f","id":5094,"name":"CFA_ACL_OPERATOR_NO_UPDATE_PERMISSIONS","nameLocation":"724:38:8","nodeType":"ErrorDefinition","parameters":{"id":5093,"nodeType":"ParameterList","parameters":[],"src":"762:2:8"},"src":"718:47:8"},{"errorSelector":"e30f1bff","id":5096,"name":"CFA_ACL_OPERATOR_NO_DELETE_PERMISSIONS","nameLocation":"790:38:8","nodeType":"ErrorDefinition","parameters":{"id":5095,"nodeType":"ParameterList","parameters":[],"src":"828:2:8"},"src":"784:47:8"},{"errorSelector":"a0645c1f","id":5098,"name":"CFA_ACL_FLOW_RATE_ALLOWANCE_EXCEEDED","nameLocation":"856:36:8","nodeType":"ErrorDefinition","parameters":{"id":5097,"nodeType":"ParameterList","parameters":[],"src":"892:2:8"},"src":"850:45:8"},{"errorSelector":"7939d66c","id":5100,"name":"CFA_ACL_UNCLEAN_PERMISSIONS","nameLocation":"922:27:8","nodeType":"ErrorDefinition","parameters":{"id":5099,"nodeType":"ParameterList","parameters":[],"src":"949:2:8"},"src":"916:36:8"},{"errorSelector":"b0ed394d","id":5102,"name":"CFA_ACL_NO_SENDER_FLOW_OPERATOR","nameLocation":"988:31:8","nodeType":"ErrorDefinition","parameters":{"id":5101,"nodeType":"ParameterList","parameters":[],"src":"1019:2:8"},"src":"982:40:8"},{"errorSelector":"86e0377d","id":5104,"name":"CFA_ACL_NO_NEGATIVE_ALLOWANCE","nameLocation":"1054:29:8","nodeType":"ErrorDefinition","parameters":{"id":5103,"nodeType":"ParameterList","parameters":[],"src":"1083:2:8"},"src":"1048:38:8"},{"errorSelector":"801b6863","id":5106,"name":"CFA_FLOW_ALREADY_EXISTS","nameLocation":"1120:23:8","nodeType":"ErrorDefinition","parameters":{"id":5105,"nodeType":"ParameterList","parameters":[],"src":"1143:2:8"},"src":"1114:32:8"},{"errorSelector":"5a32bf24","id":5108,"name":"CFA_FLOW_DOES_NOT_EXIST","nameLocation":"1186:23:8","nodeType":"ErrorDefinition","parameters":{"id":5107,"nodeType":"ParameterList","parameters":[],"src":"1209:2:8"},"src":"1180:32:8"},{"errorSelector":"ea76c9b3","id":5110,"name":"CFA_INSUFFICIENT_BALANCE","nameLocation":"1252:24:8","nodeType":"ErrorDefinition","parameters":{"id":5109,"nodeType":"ParameterList","parameters":[],"src":"1276:2:8"},"src":"1246:33:8"},{"errorSelector":"1ce9b067","id":5112,"name":"CFA_ZERO_ADDRESS_SENDER","nameLocation":"1318:23:8","nodeType":"ErrorDefinition","parameters":{"id":5111,"nodeType":"ParameterList","parameters":[],"src":"1341:2:8"},"src":"1312:32:8"},{"errorSelector":"78e02b2a","id":5114,"name":"CFA_ZERO_ADDRESS_RECEIVER","nameLocation":"1384:25:8","nodeType":"ErrorDefinition","parameters":{"id":5113,"nodeType":"ParameterList","parameters":[],"src":"1409:2:8"},"src":"1378:34:8"},{"errorSelector":"9f76430b","id":5116,"name":"CFA_HOOK_OUT_OF_GAS","nameLocation":"1450:19:8","nodeType":"ErrorDefinition","parameters":{"id":5115,"nodeType":"ParameterList","parameters":[],"src":"1469:2:8"},"src":"1444:28:8"},{"errorSelector":"752c2b9c","id":5118,"name":"CFA_DEPOSIT_TOO_BIG","nameLocation":"1516:19:8","nodeType":"ErrorDefinition","parameters":{"id":5117,"nodeType":"ParameterList","parameters":[],"src":"1535:2:8"},"src":"1510:28:8"},{"errorSelector":"0c9c55c1","id":5120,"name":"CFA_FLOW_RATE_TOO_BIG","nameLocation":"1582:21:8","nodeType":"ErrorDefinition","parameters":{"id":5119,"nodeType":"ParameterList","parameters":[],"src":"1603:2:8"},"src":"1576:30:8"},{"errorSelector":"ce11b5d1","id":5122,"name":"CFA_NON_CRITICAL_SENDER","nameLocation":"1648:23:8","nodeType":"ErrorDefinition","parameters":{"id":5121,"nodeType":"ParameterList","parameters":[],"src":"1671:2:8"},"src":"1642:32:8"},{"errorSelector":"91acad16","id":5124,"name":"CFA_INVALID_FLOW_RATE","nameLocation":"1714:21:8","nodeType":"ErrorDefinition","parameters":{"id":5123,"nodeType":"ParameterList","parameters":[],"src":"1735:2:8"},"src":"1708:30:8"},{"errorSelector":"a47338ef","id":5126,"name":"CFA_NO_SELF_FLOW","nameLocation":"1780:16:8","nodeType":"ErrorDefinition","parameters":{"id":5125,"nodeType":"ParameterList","parameters":[],"src":"1796:2:8"},"src":"1774:25:8"},{"baseFunctions":[6377],"body":{"id":5137,"nodeType":"Block","src":"1965:95:8","statements":[{"expression":{"arguments":[{"hexValue":"6f72672e7375706572666c7569642d66696e616e63652e61677265656d656e74732e436f6e7374616e74466c6f7741677265656d656e742e7631","id":5134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1992:60:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_a9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd3","typeString":"literal_string \"org.superfluid-finance.agreements.ConstantFlowAgreement.v1\""},"value":"org.superfluid-finance.agreements.ConstantFlowAgreement.v1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_a9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd3","typeString":"literal_string \"org.superfluid-finance.agreements.ConstantFlowAgreement.v1\""}],"id":5133,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1982:9:8","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":5135,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1982:71:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":5132,"id":5136,"nodeType":"Return","src":"1975:78:8"}]},"documentation":{"id":5127,"nodeType":"StructuredDocumentation","src":"1841:53:8","text":"@dev ISuperAgreement.agreementType implementation"},"functionSelector":"7730599e","id":5138,"implemented":true,"kind":"function","modifiers":[],"name":"agreementType","nameLocation":"1908:13:8","nodeType":"FunctionDefinition","overrides":{"id":5129,"nodeType":"OverrideSpecifier","overrides":[],"src":"1933:8:8"},"parameters":{"id":5128,"nodeType":"ParameterList","parameters":[],"src":"1921:2:8"},"returnParameters":{"id":5132,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5131,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5138,"src":"1956:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5130,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1956:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1955:9:8"},"scope":5487,"src":"1899:161:8","stateMutability":"pure","virtual":false,"visibility":"external"},{"documentation":{"id":5139,"nodeType":"StructuredDocumentation","src":"2066:239:8","text":" @notice Get the maximum flow rate allowed with the deposit\n @dev The deposit is clipped and rounded down\n @param deposit Deposit amount used for creating the flow\n @return flowRate The maximum flow rate"},"functionSelector":"0602f7db","id":5149,"implemented":false,"kind":"function","modifiers":[],"name":"getMaximumFlowRateFromDeposit","nameLocation":"2319:29:8","nodeType":"FunctionDefinition","parameters":{"id":5145,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5142,"mutability":"mutable","name":"token","nameLocation":"2375:5:8","nodeType":"VariableDeclaration","scope":5149,"src":"2358:22:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"},"typeName":{"id":5141,"nodeType":"UserDefinedTypeName","pathNode":{"id":5140,"name":"ISuperfluidToken","nameLocations":["2358:16:8"],"nodeType":"IdentifierPath","referencedDeclaration":8014,"src":"2358:16:8"},"referencedDeclaration":8014,"src":"2358:16:8","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5144,"mutability":"mutable","name":"deposit","nameLocation":"2398:7:8","nodeType":"VariableDeclaration","scope":5149,"src":"2390:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5143,"name":"uint256","nodeType":"ElementaryTypeName","src":"2390:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2348:58:8"},"returnParameters":{"id":5148,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5147,"mutability":"mutable","name":"flowRate","nameLocation":"2460:8:8","nodeType":"VariableDeclaration","scope":5149,"src":"2454:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":5146,"name":"int96","nodeType":"ElementaryTypeName","src":"2454:5:8","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"2453:16:8"},"scope":5487,"src":"2310:160:8","stateMutability":"view","virtual":true,"visibility":"external"},{"documentation":{"id":5150,"nodeType":"StructuredDocumentation","src":"2476:482:8","text":" @notice Get the deposit required for creating the flow\n @dev Calculates the deposit based on the liquidationPeriod and flowRate\n @param flowRate Flow rate to be tested\n @return deposit The deposit amount based on flowRate and liquidationPeriod\n @custom:note \n - if calculated deposit (flowRate * liquidationPeriod) is less\n than the minimum deposit, we use the minimum deposit otherwise\n we use the calculated deposit"},"functionSelector":"8d997f6e","id":5160,"implemented":false,"kind":"function","modifiers":[],"name":"getDepositRequiredForFlowRate","nameLocation":"2972:29:8","nodeType":"FunctionDefinition","parameters":{"id":5156,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5153,"mutability":"mutable","name":"token","nameLocation":"3028:5:8","nodeType":"VariableDeclaration","scope":5160,"src":"3011:22:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"},"typeName":{"id":5152,"nodeType":"UserDefinedTypeName","pathNode":{"id":5151,"name":"ISuperfluidToken","nameLocations":["3011:16:8"],"nodeType":"IdentifierPath","referencedDeclaration":8014,"src":"3011:16:8"},"referencedDeclaration":8014,"src":"3011:16:8","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5155,"mutability":"mutable","name":"flowRate","nameLocation":"3049:8:8","nodeType":"VariableDeclaration","scope":5160,"src":"3043:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":5154,"name":"int96","nodeType":"ElementaryTypeName","src":"3043:5:8","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"3001:57:8"},"returnParameters":{"id":5159,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5158,"mutability":"mutable","name":"deposit","nameLocation":"3114:7:8","nodeType":"VariableDeclaration","scope":5160,"src":"3106:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5157,"name":"uint256","nodeType":"ElementaryTypeName","src":"3106:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3105:17:8"},"scope":5487,"src":"2963:160:8","stateMutability":"view","virtual":true,"visibility":"external"},{"documentation":{"id":5161,"nodeType":"StructuredDocumentation","src":"3129:306:8","text":" @dev Returns whether it is the patrician period based on host.getNow()\n @param account The account we are interested in\n @return isCurrentlyPatricianPeriod Whether it is currently the patrician period dictated by governance\n @return timestamp The value of host.getNow()"},"functionSelector":"4fe9c291","id":5173,"implemented":false,"kind":"function","modifiers":[],"name":"isPatricianPeriodNow","nameLocation":"3449:20:8","nodeType":"FunctionDefinition","parameters":{"id":5167,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5164,"mutability":"mutable","name":"token","nameLocation":"3496:5:8","nodeType":"VariableDeclaration","scope":5173,"src":"3479:22:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"},"typeName":{"id":5163,"nodeType":"UserDefinedTypeName","pathNode":{"id":5162,"name":"ISuperfluidToken","nameLocations":["3479:16:8"],"nodeType":"IdentifierPath","referencedDeclaration":8014,"src":"3479:16:8"},"referencedDeclaration":8014,"src":"3479:16:8","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5166,"mutability":"mutable","name":"account","nameLocation":"3519:7:8","nodeType":"VariableDeclaration","scope":5173,"src":"3511:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5165,"name":"address","nodeType":"ElementaryTypeName","src":"3511:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3469:58:8"},"returnParameters":{"id":5172,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5169,"mutability":"mutable","name":"isCurrentlyPatricianPeriod","nameLocation":"3580:26:8","nodeType":"VariableDeclaration","scope":5173,"src":"3575:31:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5168,"name":"bool","nodeType":"ElementaryTypeName","src":"3575:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5171,"mutability":"mutable","name":"timestamp","nameLocation":"3616:9:8","nodeType":"VariableDeclaration","scope":5173,"src":"3608:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5170,"name":"uint256","nodeType":"ElementaryTypeName","src":"3608:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3574:52:8"},"scope":5487,"src":"3440:187:8","stateMutability":"view","virtual":true,"visibility":"external"},{"documentation":{"id":5174,"nodeType":"StructuredDocumentation","src":"3633:329:8","text":" @dev Returns whether it is the patrician period based on timestamp\n @param account The account we are interested in\n @param timestamp The timestamp we are interested in observing the result of isPatricianPeriod\n @return bool Whether it is currently the patrician period dictated by governance"},"functionSelector":"4b839e0b","id":5186,"implemented":false,"kind":"function","modifiers":[],"name":"isPatricianPeriod","nameLocation":"3976:17:8","nodeType":"FunctionDefinition","parameters":{"id":5182,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5177,"mutability":"mutable","name":"token","nameLocation":"4020:5:8","nodeType":"VariableDeclaration","scope":5186,"src":"4003:22:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"},"typeName":{"id":5176,"nodeType":"UserDefinedTypeName","pathNode":{"id":5175,"name":"ISuperfluidToken","nameLocations":["4003:16:8"],"nodeType":"IdentifierPath","referencedDeclaration":8014,"src":"4003:16:8"},"referencedDeclaration":8014,"src":"4003:16:8","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5179,"mutability":"mutable","name":"account","nameLocation":"4043:7:8","nodeType":"VariableDeclaration","scope":5186,"src":"4035:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5178,"name":"address","nodeType":"ElementaryTypeName","src":"4035:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5181,"mutability":"mutable","name":"timestamp","nameLocation":"4068:9:8","nodeType":"VariableDeclaration","scope":5186,"src":"4060:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5180,"name":"uint256","nodeType":"ElementaryTypeName","src":"4060:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3993:90:8"},"returnParameters":{"id":5185,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5184,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5186,"src":"4129:4:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5183,"name":"bool","nodeType":"ElementaryTypeName","src":"4129:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4128:6:8"},"scope":5487,"src":"3967:168:8","stateMutability":"view","virtual":true,"visibility":"public"},{"documentation":{"id":5187,"nodeType":"StructuredDocumentation","src":"4141:464:8","text":" @dev msgSender from `ctx` updates permissions for the `flowOperator` with `flowRateAllowance`\n @param token Super token address\n @param flowOperator The permission grantee address\n @param permissions A bitmask representation of the granted permissions\n @param flowRateAllowance The flow rate allowance the `flowOperator` is granted (only goes down)\n @param ctx Context bytes (see ISuperfluid.sol for Context struct)"},"functionSelector":"811b3d40","id":5203,"implemented":false,"kind":"function","modifiers":[],"name":"updateFlowOperatorPermissions","nameLocation":"4619:29:8","nodeType":"FunctionDefinition","parameters":{"id":5199,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5190,"mutability":"mutable","name":"token","nameLocation":"4675:5:8","nodeType":"VariableDeclaration","scope":5203,"src":"4658:22:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"},"typeName":{"id":5189,"nodeType":"UserDefinedTypeName","pathNode":{"id":5188,"name":"ISuperfluidToken","nameLocations":["4658:16:8"],"nodeType":"IdentifierPath","referencedDeclaration":8014,"src":"4658:16:8"},"referencedDeclaration":8014,"src":"4658:16:8","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5192,"mutability":"mutable","name":"flowOperator","nameLocation":"4698:12:8","nodeType":"VariableDeclaration","scope":5203,"src":"4690:20:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5191,"name":"address","nodeType":"ElementaryTypeName","src":"4690:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5194,"mutability":"mutable","name":"permissions","nameLocation":"4726:11:8","nodeType":"VariableDeclaration","scope":5203,"src":"4720:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":5193,"name":"uint8","nodeType":"ElementaryTypeName","src":"4720:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":5196,"mutability":"mutable","name":"flowRateAllowance","nameLocation":"4753:17:8","nodeType":"VariableDeclaration","scope":5203,"src":"4747:23:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":5195,"name":"int96","nodeType":"ElementaryTypeName","src":"4747:5:8","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"},{"constant":false,"id":5198,"mutability":"mutable","name":"ctx","nameLocation":"4795:3:8","nodeType":"VariableDeclaration","scope":5203,"src":"4780:18:8","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":5197,"name":"bytes","nodeType":"ElementaryTypeName","src":"4780:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4648:156:8"},"returnParameters":{"id":5202,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5201,"mutability":"mutable","name":"newCtx","nameLocation":"4860:6:8","nodeType":"VariableDeclaration","scope":5203,"src":"4847:19:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5200,"name":"bytes","nodeType":"ElementaryTypeName","src":"4847:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4846:21:8"},"scope":5487,"src":"4610:258:8","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"documentation":{"id":5204,"nodeType":"StructuredDocumentation","src":"4874:508:8","text":" @notice msgSender from `ctx` increases flow rate allowance for the `flowOperator` by `addedFlowRateAllowance`\n @dev if `addedFlowRateAllowance` is negative, we revert with CFA_ACL_NO_NEGATIVE_ALLOWANCE\n @param token Super token address\n @param flowOperator The permission grantee address\n @param addedFlowRateAllowance The flow rate allowance delta\n @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n @return newCtx The new context bytes"},"functionSelector":"ac5f5d00","id":5218,"implemented":false,"kind":"function","modifiers":[],"name":"increaseFlowRateAllowance","nameLocation":"5396:25:8","nodeType":"FunctionDefinition","parameters":{"id":5214,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5207,"mutability":"mutable","name":"token","nameLocation":"5448:5:8","nodeType":"VariableDeclaration","scope":5218,"src":"5431:22:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"},"typeName":{"id":5206,"nodeType":"UserDefinedTypeName","pathNode":{"id":5205,"name":"ISuperfluidToken","nameLocations":["5431:16:8"],"nodeType":"IdentifierPath","referencedDeclaration":8014,"src":"5431:16:8"},"referencedDeclaration":8014,"src":"5431:16:8","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5209,"mutability":"mutable","name":"flowOperator","nameLocation":"5471:12:8","nodeType":"VariableDeclaration","scope":5218,"src":"5463:20:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5208,"name":"address","nodeType":"ElementaryTypeName","src":"5463:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5211,"mutability":"mutable","name":"addedFlowRateAllowance","nameLocation":"5499:22:8","nodeType":"VariableDeclaration","scope":5218,"src":"5493:28:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":5210,"name":"int96","nodeType":"ElementaryTypeName","src":"5493:5:8","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"},{"constant":false,"id":5213,"mutability":"mutable","name":"ctx","nameLocation":"5546:3:8","nodeType":"VariableDeclaration","scope":5218,"src":"5531:18:8","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":5212,"name":"bytes","nodeType":"ElementaryTypeName","src":"5531:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5421:134:8"},"returnParameters":{"id":5217,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5216,"mutability":"mutable","name":"newCtx","nameLocation":"5594:6:8","nodeType":"VariableDeclaration","scope":5218,"src":"5581:19:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5215,"name":"bytes","nodeType":"ElementaryTypeName","src":"5581:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5580:21:8"},"scope":5487,"src":"5387:215:8","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"documentation":{"id":5219,"nodeType":"StructuredDocumentation","src":"5608:520:8","text":" @dev msgSender from `ctx` decreases flow rate allowance for the `flowOperator` by `subtractedFlowRateAllowance`\n @dev if `subtractedFlowRateAllowance` is negative, we revert with CFA_ACL_NO_NEGATIVE_ALLOWANCE\n @param token Super token address\n @param flowOperator The permission grantee address\n @param subtractedFlowRateAllowance The flow rate allowance delta\n @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n @return newCtx The new context bytes"},"functionSelector":"5f51fb23","id":5233,"implemented":false,"kind":"function","modifiers":[],"name":"decreaseFlowRateAllowance","nameLocation":"6142:25:8","nodeType":"FunctionDefinition","parameters":{"id":5229,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5222,"mutability":"mutable","name":"token","nameLocation":"6194:5:8","nodeType":"VariableDeclaration","scope":5233,"src":"6177:22:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"},"typeName":{"id":5221,"nodeType":"UserDefinedTypeName","pathNode":{"id":5220,"name":"ISuperfluidToken","nameLocations":["6177:16:8"],"nodeType":"IdentifierPath","referencedDeclaration":8014,"src":"6177:16:8"},"referencedDeclaration":8014,"src":"6177:16:8","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5224,"mutability":"mutable","name":"flowOperator","nameLocation":"6217:12:8","nodeType":"VariableDeclaration","scope":5233,"src":"6209:20:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5223,"name":"address","nodeType":"ElementaryTypeName","src":"6209:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5226,"mutability":"mutable","name":"subtractedFlowRateAllowance","nameLocation":"6245:27:8","nodeType":"VariableDeclaration","scope":5233,"src":"6239:33:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":5225,"name":"int96","nodeType":"ElementaryTypeName","src":"6239:5:8","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"},{"constant":false,"id":5228,"mutability":"mutable","name":"ctx","nameLocation":"6297:3:8","nodeType":"VariableDeclaration","scope":5233,"src":"6282:18:8","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":5227,"name":"bytes","nodeType":"ElementaryTypeName","src":"6282:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6167:139:8"},"returnParameters":{"id":5232,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5231,"mutability":"mutable","name":"newCtx","nameLocation":"6345:6:8","nodeType":"VariableDeclaration","scope":5233,"src":"6332:19:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5230,"name":"bytes","nodeType":"ElementaryTypeName","src":"6332:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6331:21:8"},"scope":5487,"src":"6133:220:8","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"documentation":{"id":5234,"nodeType":"StructuredDocumentation","src":"6359:295:8","text":" @dev msgSender from `ctx` grants `flowOperator` all permissions with flowRateAllowance as type(int96).max\n @param token Super token address\n @param flowOperator The permission grantee address\n @param ctx Context bytes (see ISuperfluid.sol for Context struct)"},"functionSelector":"54b770e3","id":5246,"implemented":false,"kind":"function","modifiers":[],"name":"authorizeFlowOperatorWithFullControl","nameLocation":"6668:36:8","nodeType":"FunctionDefinition","parameters":{"id":5242,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5237,"mutability":"mutable","name":"token","nameLocation":"6731:5:8","nodeType":"VariableDeclaration","scope":5246,"src":"6714:22:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"},"typeName":{"id":5236,"nodeType":"UserDefinedTypeName","pathNode":{"id":5235,"name":"ISuperfluidToken","nameLocations":["6714:16:8"],"nodeType":"IdentifierPath","referencedDeclaration":8014,"src":"6714:16:8"},"referencedDeclaration":8014,"src":"6714:16:8","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5239,"mutability":"mutable","name":"flowOperator","nameLocation":"6754:12:8","nodeType":"VariableDeclaration","scope":5246,"src":"6746:20:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5238,"name":"address","nodeType":"ElementaryTypeName","src":"6746:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5241,"mutability":"mutable","name":"ctx","nameLocation":"6791:3:8","nodeType":"VariableDeclaration","scope":5246,"src":"6776:18:8","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":5240,"name":"bytes","nodeType":"ElementaryTypeName","src":"6776:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6704:96:8"},"returnParameters":{"id":5245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5244,"mutability":"mutable","name":"newCtx","nameLocation":"6855:6:8","nodeType":"VariableDeclaration","scope":5246,"src":"6842:19:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5243,"name":"bytes","nodeType":"ElementaryTypeName","src":"6842:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6841:21:8"},"scope":5487,"src":"6659:204:8","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"documentation":{"id":5247,"nodeType":"StructuredDocumentation","src":"6870:346:8","text":" @notice msgSender from `ctx` revokes `flowOperator` create/update/delete permissions\n @dev `permissions` and `flowRateAllowance` will both be set to 0\n @param token Super token address\n @param flowOperator The permission grantee address\n @param ctx Context bytes (see ISuperfluid.sol for Context struct)"},"functionSelector":"062e56ec","id":5259,"implemented":false,"kind":"function","modifiers":[],"name":"revokeFlowOperatorWithFullControl","nameLocation":"7230:33:8","nodeType":"FunctionDefinition","parameters":{"id":5255,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5250,"mutability":"mutable","name":"token","nameLocation":"7290:5:8","nodeType":"VariableDeclaration","scope":5259,"src":"7273:22:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"},"typeName":{"id":5249,"nodeType":"UserDefinedTypeName","pathNode":{"id":5248,"name":"ISuperfluidToken","nameLocations":["7273:16:8"],"nodeType":"IdentifierPath","referencedDeclaration":8014,"src":"7273:16:8"},"referencedDeclaration":8014,"src":"7273:16:8","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5252,"mutability":"mutable","name":"flowOperator","nameLocation":"7313:12:8","nodeType":"VariableDeclaration","scope":5259,"src":"7305:20:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5251,"name":"address","nodeType":"ElementaryTypeName","src":"7305:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5254,"mutability":"mutable","name":"ctx","nameLocation":"7350:3:8","nodeType":"VariableDeclaration","scope":5259,"src":"7335:18:8","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":5253,"name":"bytes","nodeType":"ElementaryTypeName","src":"7335:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7263:96:8"},"returnParameters":{"id":5258,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5257,"mutability":"mutable","name":"newCtx","nameLocation":"7414:6:8","nodeType":"VariableDeclaration","scope":5259,"src":"7401:19:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5256,"name":"bytes","nodeType":"ElementaryTypeName","src":"7401:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7400:21:8"},"scope":5487,"src":"7221:201:8","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"documentation":{"id":5260,"nodeType":"StructuredDocumentation","src":"7428:553:8","text":" @notice Get the permissions of a flow operator between `sender` and `flowOperator` for `token`\n @param token Super token address\n @param sender The permission granter address\n @param flowOperator The permission grantee address\n @return flowOperatorId The keccak256 hash of encoded string \"flowOperator\", sender and flowOperator\n @return permissions A bitmask representation of the granted permissions\n @return flowRateAllowance The flow rate allowance the `flowOperator` is granted (only goes down)"},"functionSelector":"00422bbe","id":5276,"implemented":false,"kind":"function","modifiers":[],"name":"getFlowOperatorData","nameLocation":"7995:19:8","nodeType":"FunctionDefinition","parameters":{"id":5268,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5263,"mutability":"mutable","name":"token","nameLocation":"8040:5:8","nodeType":"VariableDeclaration","scope":5276,"src":"8023:22:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"},"typeName":{"id":5262,"nodeType":"UserDefinedTypeName","pathNode":{"id":5261,"name":"ISuperfluidToken","nameLocations":["8023:16:8"],"nodeType":"IdentifierPath","referencedDeclaration":8014,"src":"8023:16:8"},"referencedDeclaration":8014,"src":"8023:16:8","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5265,"mutability":"mutable","name":"sender","nameLocation":"8062:6:8","nodeType":"VariableDeclaration","scope":5276,"src":"8054:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5264,"name":"address","nodeType":"ElementaryTypeName","src":"8054:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5267,"mutability":"mutable","name":"flowOperator","nameLocation":"8085:12:8","nodeType":"VariableDeclaration","scope":5276,"src":"8077:20:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5266,"name":"address","nodeType":"ElementaryTypeName","src":"8077:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8014:89:8"},"returnParameters":{"id":5275,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5270,"mutability":"mutable","name":"flowOperatorId","nameLocation":"8170:14:8","nodeType":"VariableDeclaration","scope":5276,"src":"8162:22:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5269,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8162:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":5272,"mutability":"mutable","name":"permissions","nameLocation":"8204:11:8","nodeType":"VariableDeclaration","scope":5276,"src":"8198:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":5271,"name":"uint8","nodeType":"ElementaryTypeName","src":"8198:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":5274,"mutability":"mutable","name":"flowRateAllowance","nameLocation":"8235:17:8","nodeType":"VariableDeclaration","scope":5276,"src":"8229:23:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":5273,"name":"int96","nodeType":"ElementaryTypeName","src":"8229:5:8","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"8148:114:8"},"scope":5487,"src":"7986:277:8","stateMutability":"view","virtual":true,"visibility":"public"},{"documentation":{"id":5277,"nodeType":"StructuredDocumentation","src":"8269:394:8","text":" @notice Get flow operator using flowOperatorId\n @param token Super token address\n @param flowOperatorId The keccak256 hash of encoded string \"flowOperator\", sender and flowOperator\n @return permissions A bitmask representation of the granted permissions\n @return flowRateAllowance The flow rate allowance the `flowOperator` is granted (only goes down)"},"functionSelector":"09d256ef","id":5289,"implemented":false,"kind":"function","modifiers":[],"name":"getFlowOperatorDataByID","nameLocation":"8677:23:8","nodeType":"FunctionDefinition","parameters":{"id":5283,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5280,"mutability":"mutable","name":"token","nameLocation":"8726:5:8","nodeType":"VariableDeclaration","scope":5289,"src":"8709:22:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"},"typeName":{"id":5279,"nodeType":"UserDefinedTypeName","pathNode":{"id":5278,"name":"ISuperfluidToken","nameLocations":["8709:16:8"],"nodeType":"IdentifierPath","referencedDeclaration":8014,"src":"8709:16:8"},"referencedDeclaration":8014,"src":"8709:16:8","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5282,"mutability":"mutable","name":"flowOperatorId","nameLocation":"8748:14:8","nodeType":"VariableDeclaration","scope":5289,"src":"8740:22:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5281,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8740:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8700:68:8"},"returnParameters":{"id":5288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5285,"mutability":"mutable","name":"permissions","nameLocation":"8835:11:8","nodeType":"VariableDeclaration","scope":5289,"src":"8829:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":5284,"name":"uint8","nodeType":"ElementaryTypeName","src":"8829:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":5287,"mutability":"mutable","name":"flowRateAllowance","nameLocation":"8866:17:8","nodeType":"VariableDeclaration","scope":5289,"src":"8860:23:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":5286,"name":"int96","nodeType":"ElementaryTypeName","src":"8860:5:8","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"8815:78:8"},"scope":5487,"src":"8668:226:8","stateMutability":"view","virtual":true,"visibility":"external"},{"documentation":{"id":5290,"nodeType":"StructuredDocumentation","src":"8900:741:8","text":" @notice Create a flow betwen ctx.msgSender and receiver\n @dev flowId (agreementId) is the keccak256 hash of encoded sender and receiver\n @param token Super token address\n @param receiver Flow receiver address\n @param flowRate New flow rate in amount per second\n @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n @custom:callbacks \n - AgreementCreated\n - agreementId - can be used in getFlowByID\n - agreementData - abi.encode(address flowSender, address flowReceiver)\n @custom:note \n - A deposit is taken as safety margin for the solvency agents\n - A extra gas fee may be taken to pay for solvency agent liquidations"},"functionSelector":"62fc305e","id":5304,"implemented":false,"kind":"function","modifiers":[],"name":"createFlow","nameLocation":"9655:10:8","nodeType":"FunctionDefinition","parameters":{"id":5300,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5293,"mutability":"mutable","name":"token","nameLocation":"9692:5:8","nodeType":"VariableDeclaration","scope":5304,"src":"9675:22:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"},"typeName":{"id":5292,"nodeType":"UserDefinedTypeName","pathNode":{"id":5291,"name":"ISuperfluidToken","nameLocations":["9675:16:8"],"nodeType":"IdentifierPath","referencedDeclaration":8014,"src":"9675:16:8"},"referencedDeclaration":8014,"src":"9675:16:8","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5295,"mutability":"mutable","name":"receiver","nameLocation":"9715:8:8","nodeType":"VariableDeclaration","scope":5304,"src":"9707:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5294,"name":"address","nodeType":"ElementaryTypeName","src":"9707:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5297,"mutability":"mutable","name":"flowRate","nameLocation":"9739:8:8","nodeType":"VariableDeclaration","scope":5304,"src":"9733:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":5296,"name":"int96","nodeType":"ElementaryTypeName","src":"9733:5:8","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"},{"constant":false,"id":5299,"mutability":"mutable","name":"ctx","nameLocation":"9772:3:8","nodeType":"VariableDeclaration","scope":5304,"src":"9757:18:8","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":5298,"name":"bytes","nodeType":"ElementaryTypeName","src":"9757:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9665:116:8"},"returnParameters":{"id":5303,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5302,"mutability":"mutable","name":"newCtx","nameLocation":"9836:6:8","nodeType":"VariableDeclaration","scope":5304,"src":"9823:19:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5301,"name":"bytes","nodeType":"ElementaryTypeName","src":"9823:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9822:21:8"},"scope":5487,"src":"9646:198:8","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"documentation":{"id":5305,"nodeType":"StructuredDocumentation","src":"9850:436:8","text":" @notice Create a flow between sender and receiver\n @dev A flow created by an approved flow operator (see above for details on callbacks)\n @param token Super token address\n @param sender Flow sender address (has granted permissions)\n @param receiver Flow receiver address\n @param flowRate New flow rate in amount per second\n @param ctx Context bytes (see ISuperfluid.sol for Context struct)"},"functionSelector":"94229ecb","id":5321,"implemented":false,"kind":"function","modifiers":[],"name":"createFlowByOperator","nameLocation":"10300:20:8","nodeType":"FunctionDefinition","parameters":{"id":5317,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5308,"mutability":"mutable","name":"token","nameLocation":"10347:5:8","nodeType":"VariableDeclaration","scope":5321,"src":"10330:22:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"},"typeName":{"id":5307,"nodeType":"UserDefinedTypeName","pathNode":{"id":5306,"name":"ISuperfluidToken","nameLocations":["10330:16:8"],"nodeType":"IdentifierPath","referencedDeclaration":8014,"src":"10330:16:8"},"referencedDeclaration":8014,"src":"10330:16:8","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5310,"mutability":"mutable","name":"sender","nameLocation":"10370:6:8","nodeType":"VariableDeclaration","scope":5321,"src":"10362:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5309,"name":"address","nodeType":"ElementaryTypeName","src":"10362:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5312,"mutability":"mutable","name":"receiver","nameLocation":"10394:8:8","nodeType":"VariableDeclaration","scope":5321,"src":"10386:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5311,"name":"address","nodeType":"ElementaryTypeName","src":"10386:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5314,"mutability":"mutable","name":"flowRate","nameLocation":"10418:8:8","nodeType":"VariableDeclaration","scope":5321,"src":"10412:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":5313,"name":"int96","nodeType":"ElementaryTypeName","src":"10412:5:8","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"},{"constant":false,"id":5316,"mutability":"mutable","name":"ctx","nameLocation":"10451:3:8","nodeType":"VariableDeclaration","scope":5321,"src":"10436:18:8","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":5315,"name":"bytes","nodeType":"ElementaryTypeName","src":"10436:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"10320:140:8"},"returnParameters":{"id":5320,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5319,"mutability":"mutable","name":"newCtx","nameLocation":"10515:6:8","nodeType":"VariableDeclaration","scope":5321,"src":"10502:19:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5318,"name":"bytes","nodeType":"ElementaryTypeName","src":"10502:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"10501:21:8"},"scope":5487,"src":"10291:232:8","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"documentation":{"id":5322,"nodeType":"StructuredDocumentation","src":"10529:833:8","text":" @notice Update the flow rate between ctx.msgSender and receiver\n @dev flowId (agreementId) is the keccak256 hash of encoded sender and receiver\n @param token Super token address\n @param receiver Flow receiver address\n @param flowRate New flow rate in amount per second\n @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n @custom:callbacks \n - AgreementUpdated\n - agreementId - can be used in getFlowByID\n - agreementData - abi.encode(address flowSender, address flowReceiver)\n @custom:note \n - Only the flow sender may update the flow rate\n - Even if the flow rate is zero, the flow is not deleted\n from the system\n - Deposit amount will be adjusted accordingly\n - No new gas fee is charged"},"functionSelector":"50209a62","id":5336,"implemented":false,"kind":"function","modifiers":[],"name":"updateFlow","nameLocation":"11376:10:8","nodeType":"FunctionDefinition","parameters":{"id":5332,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5325,"mutability":"mutable","name":"token","nameLocation":"11413:5:8","nodeType":"VariableDeclaration","scope":5336,"src":"11396:22:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"},"typeName":{"id":5324,"nodeType":"UserDefinedTypeName","pathNode":{"id":5323,"name":"ISuperfluidToken","nameLocations":["11396:16:8"],"nodeType":"IdentifierPath","referencedDeclaration":8014,"src":"11396:16:8"},"referencedDeclaration":8014,"src":"11396:16:8","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5327,"mutability":"mutable","name":"receiver","nameLocation":"11436:8:8","nodeType":"VariableDeclaration","scope":5336,"src":"11428:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5326,"name":"address","nodeType":"ElementaryTypeName","src":"11428:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5329,"mutability":"mutable","name":"flowRate","nameLocation":"11460:8:8","nodeType":"VariableDeclaration","scope":5336,"src":"11454:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":5328,"name":"int96","nodeType":"ElementaryTypeName","src":"11454:5:8","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"},{"constant":false,"id":5331,"mutability":"mutable","name":"ctx","nameLocation":"11493:3:8","nodeType":"VariableDeclaration","scope":5336,"src":"11478:18:8","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":5330,"name":"bytes","nodeType":"ElementaryTypeName","src":"11478:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"11386:116:8"},"returnParameters":{"id":5335,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5334,"mutability":"mutable","name":"newCtx","nameLocation":"11557:6:8","nodeType":"VariableDeclaration","scope":5336,"src":"11544:19:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5333,"name":"bytes","nodeType":"ElementaryTypeName","src":"11544:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"11543:21:8"},"scope":5487,"src":"11367:198:8","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"documentation":{"id":5337,"nodeType":"StructuredDocumentation","src":"11571:436:8","text":" @notice Update a flow between sender and receiver\n @dev A flow updated by an approved flow operator (see above for details on callbacks)\n @param token Super token address\n @param sender Flow sender address (has granted permissions)\n @param receiver Flow receiver address\n @param flowRate New flow rate in amount per second\n @param ctx Context bytes (see ISuperfluid.sol for Context struct)"},"functionSelector":"354b9590","id":5353,"implemented":false,"kind":"function","modifiers":[],"name":"updateFlowByOperator","nameLocation":"12021:20:8","nodeType":"FunctionDefinition","parameters":{"id":5349,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5340,"mutability":"mutable","name":"token","nameLocation":"12068:5:8","nodeType":"VariableDeclaration","scope":5353,"src":"12051:22:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"},"typeName":{"id":5339,"nodeType":"UserDefinedTypeName","pathNode":{"id":5338,"name":"ISuperfluidToken","nameLocations":["12051:16:8"],"nodeType":"IdentifierPath","referencedDeclaration":8014,"src":"12051:16:8"},"referencedDeclaration":8014,"src":"12051:16:8","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5342,"mutability":"mutable","name":"sender","nameLocation":"12091:6:8","nodeType":"VariableDeclaration","scope":5353,"src":"12083:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5341,"name":"address","nodeType":"ElementaryTypeName","src":"12083:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5344,"mutability":"mutable","name":"receiver","nameLocation":"12115:8:8","nodeType":"VariableDeclaration","scope":5353,"src":"12107:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5343,"name":"address","nodeType":"ElementaryTypeName","src":"12107:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5346,"mutability":"mutable","name":"flowRate","nameLocation":"12139:8:8","nodeType":"VariableDeclaration","scope":5353,"src":"12133:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":5345,"name":"int96","nodeType":"ElementaryTypeName","src":"12133:5:8","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"},{"constant":false,"id":5348,"mutability":"mutable","name":"ctx","nameLocation":"12172:3:8","nodeType":"VariableDeclaration","scope":5353,"src":"12157:18:8","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":5347,"name":"bytes","nodeType":"ElementaryTypeName","src":"12157:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"12041:140:8"},"returnParameters":{"id":5352,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5351,"mutability":"mutable","name":"newCtx","nameLocation":"12236:6:8","nodeType":"VariableDeclaration","scope":5353,"src":"12223:19:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5350,"name":"bytes","nodeType":"ElementaryTypeName","src":"12223:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"12222:21:8"},"scope":5487,"src":"12012:232:8","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"documentation":{"id":5354,"nodeType":"StructuredDocumentation","src":"12250:415:8","text":" @dev Get the flow data between `sender` and `receiver` of `token`\n @param token Super token address\n @param sender Flow receiver\n @param receiver Flow sender\n @return timestamp Timestamp of when the flow is updated\n @return flowRate The flow rate\n @return deposit The amount of deposit the flow\n @return owedDeposit The amount of owed deposit of the flow"},"functionSelector":"e6a1e888","id":5372,"implemented":false,"kind":"function","modifiers":[],"name":"getFlow","nameLocation":"12679:7:8","nodeType":"FunctionDefinition","parameters":{"id":5362,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5357,"mutability":"mutable","name":"token","nameLocation":"12713:5:8","nodeType":"VariableDeclaration","scope":5372,"src":"12696:22:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"},"typeName":{"id":5356,"nodeType":"UserDefinedTypeName","pathNode":{"id":5355,"name":"ISuperfluidToken","nameLocations":["12696:16:8"],"nodeType":"IdentifierPath","referencedDeclaration":8014,"src":"12696:16:8"},"referencedDeclaration":8014,"src":"12696:16:8","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5359,"mutability":"mutable","name":"sender","nameLocation":"12736:6:8","nodeType":"VariableDeclaration","scope":5372,"src":"12728:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5358,"name":"address","nodeType":"ElementaryTypeName","src":"12728:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5361,"mutability":"mutable","name":"receiver","nameLocation":"12760:8:8","nodeType":"VariableDeclaration","scope":5372,"src":"12752:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5360,"name":"address","nodeType":"ElementaryTypeName","src":"12752:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12686:88:8"},"returnParameters":{"id":5371,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5364,"mutability":"mutable","name":"timestamp","nameLocation":"12843:9:8","nodeType":"VariableDeclaration","scope":5372,"src":"12835:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5363,"name":"uint256","nodeType":"ElementaryTypeName","src":"12835:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5366,"mutability":"mutable","name":"flowRate","nameLocation":"12872:8:8","nodeType":"VariableDeclaration","scope":5372,"src":"12866:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":5365,"name":"int96","nodeType":"ElementaryTypeName","src":"12866:5:8","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"},{"constant":false,"id":5368,"mutability":"mutable","name":"deposit","nameLocation":"12902:7:8","nodeType":"VariableDeclaration","scope":5372,"src":"12894:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5367,"name":"uint256","nodeType":"ElementaryTypeName","src":"12894:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5370,"mutability":"mutable","name":"owedDeposit","nameLocation":"12931:11:8","nodeType":"VariableDeclaration","scope":5372,"src":"12923:19:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5369,"name":"uint256","nodeType":"ElementaryTypeName","src":"12923:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12821:131:8"},"scope":5487,"src":"12670:283:8","stateMutability":"view","virtual":true,"visibility":"external"},{"documentation":{"id":5373,"nodeType":"StructuredDocumentation","src":"12959:445:8","text":" @notice Get flow data using agreementId\n @dev flowId (agreementId) is the keccak256 hash of encoded sender and receiver\n @param token Super token address\n @param agreementId The agreement ID\n @return timestamp Timestamp of when the flow is updated\n @return flowRate The flow rate\n @return deposit The deposit amount of the flow\n @return owedDeposit The owed deposit amount of the flow"},"functionSelector":"aabd2668","id":5389,"implemented":false,"kind":"function","modifiers":[],"name":"getFlowByID","nameLocation":"13418:11:8","nodeType":"FunctionDefinition","parameters":{"id":5379,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5376,"mutability":"mutable","name":"token","nameLocation":"13455:5:8","nodeType":"VariableDeclaration","scope":5389,"src":"13438:22:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"},"typeName":{"id":5375,"nodeType":"UserDefinedTypeName","pathNode":{"id":5374,"name":"ISuperfluidToken","nameLocations":["13438:16:8"],"nodeType":"IdentifierPath","referencedDeclaration":8014,"src":"13438:16:8"},"referencedDeclaration":8014,"src":"13438:16:8","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5378,"mutability":"mutable","name":"agreementId","nameLocation":"13477:11:8","nodeType":"VariableDeclaration","scope":5389,"src":"13469:19:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5377,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13469:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"13429:65:8"},"returnParameters":{"id":5388,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5381,"mutability":"mutable","name":"timestamp","nameLocation":"13563:9:8","nodeType":"VariableDeclaration","scope":5389,"src":"13555:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5380,"name":"uint256","nodeType":"ElementaryTypeName","src":"13555:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5383,"mutability":"mutable","name":"flowRate","nameLocation":"13592:8:8","nodeType":"VariableDeclaration","scope":5389,"src":"13586:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":5382,"name":"int96","nodeType":"ElementaryTypeName","src":"13586:5:8","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"},{"constant":false,"id":5385,"mutability":"mutable","name":"deposit","nameLocation":"13622:7:8","nodeType":"VariableDeclaration","scope":5389,"src":"13614:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5384,"name":"uint256","nodeType":"ElementaryTypeName","src":"13614:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5387,"mutability":"mutable","name":"owedDeposit","nameLocation":"13651:11:8","nodeType":"VariableDeclaration","scope":5389,"src":"13643:19:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5386,"name":"uint256","nodeType":"ElementaryTypeName","src":"13643:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13541:131:8"},"scope":5487,"src":"13409:264:8","stateMutability":"view","virtual":true,"visibility":"external"},{"documentation":{"id":5390,"nodeType":"StructuredDocumentation","src":"13679:436:8","text":" @dev Get the aggregated flow info of the account\n @param token Super token address\n @param account Account for the query\n @return timestamp Timestamp of when a flow was last updated for account\n @return flowRate The net flow rate of token for account\n @return deposit The sum of all deposits for account's flows\n @return owedDeposit The sum of all owed deposits for account's flows"},"functionSelector":"0f1ac495","id":5406,"implemented":false,"kind":"function","modifiers":[],"name":"getAccountFlowInfo","nameLocation":"14129:18:8","nodeType":"FunctionDefinition","parameters":{"id":5396,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5393,"mutability":"mutable","name":"token","nameLocation":"14174:5:8","nodeType":"VariableDeclaration","scope":5406,"src":"14157:22:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"},"typeName":{"id":5392,"nodeType":"UserDefinedTypeName","pathNode":{"id":5391,"name":"ISuperfluidToken","nameLocations":["14157:16:8"],"nodeType":"IdentifierPath","referencedDeclaration":8014,"src":"14157:16:8"},"referencedDeclaration":8014,"src":"14157:16:8","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5395,"mutability":"mutable","name":"account","nameLocation":"14197:7:8","nodeType":"VariableDeclaration","scope":5406,"src":"14189:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5394,"name":"address","nodeType":"ElementaryTypeName","src":"14189:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"14147:63:8"},"returnParameters":{"id":5405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5398,"mutability":"mutable","name":"timestamp","nameLocation":"14279:9:8","nodeType":"VariableDeclaration","scope":5406,"src":"14271:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5397,"name":"uint256","nodeType":"ElementaryTypeName","src":"14271:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5400,"mutability":"mutable","name":"flowRate","nameLocation":"14308:8:8","nodeType":"VariableDeclaration","scope":5406,"src":"14302:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":5399,"name":"int96","nodeType":"ElementaryTypeName","src":"14302:5:8","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"},{"constant":false,"id":5402,"mutability":"mutable","name":"deposit","nameLocation":"14338:7:8","nodeType":"VariableDeclaration","scope":5406,"src":"14330:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5401,"name":"uint256","nodeType":"ElementaryTypeName","src":"14330:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5404,"mutability":"mutable","name":"owedDeposit","nameLocation":"14367:11:8","nodeType":"VariableDeclaration","scope":5406,"src":"14359:19:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5403,"name":"uint256","nodeType":"ElementaryTypeName","src":"14359:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14257:122:8"},"scope":5487,"src":"14120:260:8","stateMutability":"view","virtual":true,"visibility":"external"},{"documentation":{"id":5407,"nodeType":"StructuredDocumentation","src":"14386:182:8","text":" @dev Get the net flow rate of the account\n @param token Super token address\n @param account Account for the query\n @return flowRate Net flow rate"},"functionSelector":"e8e7e2d1","id":5417,"implemented":false,"kind":"function","modifiers":[],"name":"getNetFlow","nameLocation":"14582:10:8","nodeType":"FunctionDefinition","parameters":{"id":5413,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5410,"mutability":"mutable","name":"token","nameLocation":"14619:5:8","nodeType":"VariableDeclaration","scope":5417,"src":"14602:22:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"},"typeName":{"id":5409,"nodeType":"UserDefinedTypeName","pathNode":{"id":5408,"name":"ISuperfluidToken","nameLocations":["14602:16:8"],"nodeType":"IdentifierPath","referencedDeclaration":8014,"src":"14602:16:8"},"referencedDeclaration":8014,"src":"14602:16:8","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5412,"mutability":"mutable","name":"account","nameLocation":"14642:7:8","nodeType":"VariableDeclaration","scope":5417,"src":"14634:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5411,"name":"address","nodeType":"ElementaryTypeName","src":"14634:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"14592:63:8"},"returnParameters":{"id":5416,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5415,"mutability":"mutable","name":"flowRate","nameLocation":"14709:8:8","nodeType":"VariableDeclaration","scope":5417,"src":"14703:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":5414,"name":"int96","nodeType":"ElementaryTypeName","src":"14703:5:8","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"14702:16:8"},"scope":5487,"src":"14573:146:8","stateMutability":"view","virtual":true,"visibility":"external"},{"documentation":{"id":5418,"nodeType":"StructuredDocumentation","src":"14725:763:8","text":" @notice Delete the flow between sender and receiver\n @dev flowId (agreementId) is the keccak256 hash of encoded sender and receiver\n @param token Super token address\n @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n @param receiver Flow receiver address\n @custom:callbacks \n - AgreementTerminated\n - agreementId - can be used in getFlowByID\n - agreementData - abi.encode(address flowSender, address flowReceiver)\n @custom:note \n - Both flow sender and receiver may delete the flow\n - If Sender account is insolvent or in critical state, a solvency agent may\n also terminate the agreement\n - Gas fee may be returned to the sender"},"functionSelector":"b4b333c6","id":5432,"implemented":false,"kind":"function","modifiers":[],"name":"deleteFlow","nameLocation":"15502:10:8","nodeType":"FunctionDefinition","parameters":{"id":5428,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5421,"mutability":"mutable","name":"token","nameLocation":"15539:5:8","nodeType":"VariableDeclaration","scope":5432,"src":"15522:22:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"},"typeName":{"id":5420,"nodeType":"UserDefinedTypeName","pathNode":{"id":5419,"name":"ISuperfluidToken","nameLocations":["15522:16:8"],"nodeType":"IdentifierPath","referencedDeclaration":8014,"src":"15522:16:8"},"referencedDeclaration":8014,"src":"15522:16:8","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5423,"mutability":"mutable","name":"sender","nameLocation":"15562:6:8","nodeType":"VariableDeclaration","scope":5432,"src":"15554:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5422,"name":"address","nodeType":"ElementaryTypeName","src":"15554:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5425,"mutability":"mutable","name":"receiver","nameLocation":"15586:8:8","nodeType":"VariableDeclaration","scope":5432,"src":"15578:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5424,"name":"address","nodeType":"ElementaryTypeName","src":"15578:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5427,"mutability":"mutable","name":"ctx","nameLocation":"15619:3:8","nodeType":"VariableDeclaration","scope":5432,"src":"15604:18:8","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":5426,"name":"bytes","nodeType":"ElementaryTypeName","src":"15604:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"15512:116:8"},"returnParameters":{"id":5431,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5430,"mutability":"mutable","name":"newCtx","nameLocation":"15683:6:8","nodeType":"VariableDeclaration","scope":5432,"src":"15670:19:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5429,"name":"bytes","nodeType":"ElementaryTypeName","src":"15670:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"15669:21:8"},"scope":5487,"src":"15493:198:8","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"documentation":{"id":5433,"nodeType":"StructuredDocumentation","src":"15697:321:8","text":" @notice Delete the flow between sender and receiver\n @dev A flow deleted by an approved flow operator (see above for details on callbacks)\n @param token Super token address\n @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n @param receiver Flow receiver address"},"functionSelector":"4c8b181f","id":5447,"implemented":false,"kind":"function","modifiers":[],"name":"deleteFlowByOperator","nameLocation":"16032:20:8","nodeType":"FunctionDefinition","parameters":{"id":5443,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5436,"mutability":"mutable","name":"token","nameLocation":"16079:5:8","nodeType":"VariableDeclaration","scope":5447,"src":"16062:22:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"},"typeName":{"id":5435,"nodeType":"UserDefinedTypeName","pathNode":{"id":5434,"name":"ISuperfluidToken","nameLocations":["16062:16:8"],"nodeType":"IdentifierPath","referencedDeclaration":8014,"src":"16062:16:8"},"referencedDeclaration":8014,"src":"16062:16:8","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5438,"mutability":"mutable","name":"sender","nameLocation":"16102:6:8","nodeType":"VariableDeclaration","scope":5447,"src":"16094:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5437,"name":"address","nodeType":"ElementaryTypeName","src":"16094:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5440,"mutability":"mutable","name":"receiver","nameLocation":"16126:8:8","nodeType":"VariableDeclaration","scope":5447,"src":"16118:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5439,"name":"address","nodeType":"ElementaryTypeName","src":"16118:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5442,"mutability":"mutable","name":"ctx","nameLocation":"16159:3:8","nodeType":"VariableDeclaration","scope":5447,"src":"16144:18:8","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":5441,"name":"bytes","nodeType":"ElementaryTypeName","src":"16144:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"16052:116:8"},"returnParameters":{"id":5446,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5445,"mutability":"mutable","name":"newCtx","nameLocation":"16223:6:8","nodeType":"VariableDeclaration","scope":5447,"src":"16210:19:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5444,"name":"bytes","nodeType":"ElementaryTypeName","src":"16210:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"16209:21:8"},"scope":5487,"src":"16023:208:8","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"anonymous":false,"documentation":{"id":5448,"nodeType":"StructuredDocumentation","src":"16242:353:8","text":" @dev Flow operator updated event\n @param token Super token address\n @param sender Flow sender address\n @param flowOperator Flow operator address\n @param permissions Octo bitmask representation of permissions\n @param flowRateAllowance The flow rate allowance the `flowOperator` is granted (only goes down)"},"eventSelector":"c0d5d3a6ac18cc1769788c925e6e7fc89cd47e4270a42884736fa9b3ec09f3a8","id":5461,"name":"FlowOperatorUpdated","nameLocation":"16606:19:8","nodeType":"EventDefinition","parameters":{"id":5460,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5451,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"16660:5:8","nodeType":"VariableDeclaration","scope":5461,"src":"16635:30:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"},"typeName":{"id":5450,"nodeType":"UserDefinedTypeName","pathNode":{"id":5449,"name":"ISuperfluidToken","nameLocations":["16635:16:8"],"nodeType":"IdentifierPath","referencedDeclaration":8014,"src":"16635:16:8"},"referencedDeclaration":8014,"src":"16635:16:8","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5453,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"16691:6:8","nodeType":"VariableDeclaration","scope":5461,"src":"16675:22:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5452,"name":"address","nodeType":"ElementaryTypeName","src":"16675:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5455,"indexed":true,"mutability":"mutable","name":"flowOperator","nameLocation":"16723:12:8","nodeType":"VariableDeclaration","scope":5461,"src":"16707:28:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5454,"name":"address","nodeType":"ElementaryTypeName","src":"16707:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5457,"indexed":false,"mutability":"mutable","name":"permissions","nameLocation":"16751:11:8","nodeType":"VariableDeclaration","scope":5461,"src":"16745:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":5456,"name":"uint8","nodeType":"ElementaryTypeName","src":"16745:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":5459,"indexed":false,"mutability":"mutable","name":"flowRateAllowance","nameLocation":"16778:17:8","nodeType":"VariableDeclaration","scope":5461,"src":"16772:23:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":5458,"name":"int96","nodeType":"ElementaryTypeName","src":"16772:5:8","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"16625:176:8"},"src":"16600:202:8"},{"anonymous":false,"documentation":{"id":5462,"nodeType":"StructuredDocumentation","src":"16808:466:8","text":" @dev Flow updated event\n @param token Super token address\n @param sender Flow sender address\n @param receiver Flow recipient address\n @param flowRate Flow rate in amount per second for this flow\n @param totalSenderFlowRate Total flow rate in amount per second for the sender\n @param totalReceiverFlowRate Total flow rate in amount per second for the receiver\n @param userData The user provided data"},"eventSelector":"57269d2ebcccecdcc0d9d2c0a0b80ead95f344e28ec20f50f709811f209d4e0e","id":5479,"name":"FlowUpdated","nameLocation":"17285:11:8","nodeType":"EventDefinition","parameters":{"id":5478,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5465,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"17331:5:8","nodeType":"VariableDeclaration","scope":5479,"src":"17306:30:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"},"typeName":{"id":5464,"nodeType":"UserDefinedTypeName","pathNode":{"id":5463,"name":"ISuperfluidToken","nameLocations":["17306:16:8"],"nodeType":"IdentifierPath","referencedDeclaration":8014,"src":"17306:16:8"},"referencedDeclaration":8014,"src":"17306:16:8","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5467,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"17362:6:8","nodeType":"VariableDeclaration","scope":5479,"src":"17346:22:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5466,"name":"address","nodeType":"ElementaryTypeName","src":"17346:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5469,"indexed":true,"mutability":"mutable","name":"receiver","nameLocation":"17394:8:8","nodeType":"VariableDeclaration","scope":5479,"src":"17378:24:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5468,"name":"address","nodeType":"ElementaryTypeName","src":"17378:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5471,"indexed":false,"mutability":"mutable","name":"flowRate","nameLocation":"17418:8:8","nodeType":"VariableDeclaration","scope":5479,"src":"17412:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":5470,"name":"int96","nodeType":"ElementaryTypeName","src":"17412:5:8","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"},{"constant":false,"id":5473,"indexed":false,"mutability":"mutable","name":"totalSenderFlowRate","nameLocation":"17443:19:8","nodeType":"VariableDeclaration","scope":5479,"src":"17436:26:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5472,"name":"int256","nodeType":"ElementaryTypeName","src":"17436:6:8","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":5475,"indexed":false,"mutability":"mutable","name":"totalReceiverFlowRate","nameLocation":"17479:21:8","nodeType":"VariableDeclaration","scope":5479,"src":"17472:28:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5474,"name":"int256","nodeType":"ElementaryTypeName","src":"17472:6:8","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":5477,"indexed":false,"mutability":"mutable","name":"userData","nameLocation":"17516:8:8","nodeType":"VariableDeclaration","scope":5479,"src":"17510:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5476,"name":"bytes","nodeType":"ElementaryTypeName","src":"17510:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"17296:234:8"},"src":"17279:252:8"},{"anonymous":false,"documentation":{"id":5480,"nodeType":"StructuredDocumentation","src":"17537:181:8","text":" @dev Flow updated extension event\n @param flowOperator Flow operator address - the Context.msgSender\n @param deposit The deposit amount for the stream"},"eventSelector":"71e0c98e270fc3084227b473f176924d5303ece8c639e679998a2d7dc8e70f74","id":5486,"name":"FlowUpdatedExtension","nameLocation":"17729:20:8","nodeType":"EventDefinition","parameters":{"id":5485,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5482,"indexed":true,"mutability":"mutable","name":"flowOperator","nameLocation":"17775:12:8","nodeType":"VariableDeclaration","scope":5486,"src":"17759:28:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5481,"name":"address","nodeType":"ElementaryTypeName","src":"17759:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5484,"indexed":false,"mutability":"mutable","name":"deposit","nameLocation":"17805:7:8","nodeType":"VariableDeclaration","scope":5486,"src":"17797:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5483,"name":"uint256","nodeType":"ElementaryTypeName","src":"17797:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17749:69:8"},"src":"17723:96:8"}],"scope":5488,"src":"277:17544:8","usedErrors":[5088,5090,5092,5094,5096,5098,5100,5102,5104,5106,5108,5110,5112,5114,5116,5118,5120,5122,5124,5126]}],"src":"35:17787:8"},"id":8},"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IInstantDistributionAgreementV1.sol":{"ast":{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IInstantDistributionAgreementV1.sol","exportedSymbols":{"IInstantDistributionAgreementV1":[5893],"ISuperAgreement":[6395],"ISuperfluidToken":[8014]},"id":5894,"license":"AGPLv3","nodeType":"SourceUnit","nodes":[{"id":5489,"literals":["solidity",">=","0.8",".4"],"nodeType":"PragmaDirective","src":"35:25:9"},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol","file":"../superfluid/ISuperAgreement.sol","id":5491,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5894,"sourceUnit":6396,"src":"62:68:9","symbolAliases":[{"foreign":{"id":5490,"name":"ISuperAgreement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6395,"src":"71:15:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol","file":"../superfluid/ISuperfluidToken.sol","id":5493,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5894,"sourceUnit":8015,"src":"131:70:9","symbolAliases":[{"foreign":{"id":5492,"name":"ISuperfluidToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8014,"src":"140:16:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":5495,"name":"ISuperAgreement","nameLocations":["1837:15:9"],"nodeType":"IdentifierPath","referencedDeclaration":6395,"src":"1837:15:9"},"id":5496,"nodeType":"InheritanceSpecifier","src":"1837:15:9"}],"canonicalName":"IInstantDistributionAgreementV1","contractDependencies":[],"contractKind":"contract","documentation":{"id":5494,"nodeType":"StructuredDocumentation","src":"204:1579:9","text":" @title Instant Distribution Agreement interface\n @author Superfluid\n @notice \n - A publisher can create as many as indices as possibly identifiable with `indexId`.\n - `indexId` is deliberately limited to 32 bits, to avoid the chance for sha-3 collision.\n Despite knowing sha-3 collision is only theoretical.\n - A publisher can create a subscription to an index for any subscriber.\n - A subscription consists of:\n - The index it subscribes to.\n - Number of units subscribed.\n - An index consists of:\n - Current value as `uint128 indexValue`.\n - Total units of the approved subscriptions as `uint128 totalUnitsApproved`.\n - Total units of the non approved subscription as `uint128 totalUnitsPending`.\n - A publisher can update an index with a new value that doesn't decrease.\n - A publisher can update a subscription with any number of units.\n - A publisher or a subscriber can delete a subscription and reset its units to zero.\n - A subscriber must approve the index in order to receive distributions from the publisher\n each time the index is updated.\n - The amount distributed is $$\\Delta{index} * units$$\n - Distributions to a non approved subscription stays in the publisher's deposit until:\n - the subscriber approves the subscription (side effect),\n - the publisher updates the subscription (side effect),\n - the subscriber deletes the subscription even if it is never approved (side effect),\n - or the subscriber can explicitly claim them."},"fullyImplemented":false,"id":5893,"linearizedBaseContracts":[5893,6395],"name":"IInstantDistributionAgreementV1","nameLocation":"1802:31:9","nodeType":"ContractDefinition","nodes":[{"errorSelector":"cfdca725","id":5498,"name":"IDA_INDEX_SHOULD_GROW","nameLocation":"2040:21:9","nodeType":"ErrorDefinition","parameters":{"id":5497,"nodeType":"ParameterList","parameters":[],"src":"2061:2:9"},"src":"2034:30:9"},{"errorSelector":"92da6d17","id":5500,"name":"IDA_OPERATION_NOT_ALLOWED","nameLocation":"2101:25:9","nodeType":"ErrorDefinition","parameters":{"id":5499,"nodeType":"ParameterList","parameters":[],"src":"2126:2:9"},"src":"2095:34:9"},{"errorSelector":"5c02a517","id":5502,"name":"IDA_INDEX_ALREADY_EXISTS","nameLocation":"2162:24:9","nodeType":"ErrorDefinition","parameters":{"id":5501,"nodeType":"ParameterList","parameters":[],"src":"2186:2:9"},"src":"2156:33:9"},{"errorSelector":"edeaa63b","id":5504,"name":"IDA_INDEX_DOES_NOT_EXIST","nameLocation":"2223:24:9","nodeType":"ErrorDefinition","parameters":{"id":5503,"nodeType":"ParameterList","parameters":[],"src":"2247:2:9"},"src":"2217:33:9"},{"errorSelector":"b6c8c980","id":5506,"name":"IDA_SUBSCRIPTION_DOES_NOT_EXIST","nameLocation":"2284:31:9","nodeType":"ErrorDefinition","parameters":{"id":5505,"nodeType":"ParameterList","parameters":[],"src":"2315:2:9"},"src":"2278:40:9"},{"errorSelector":"3eb2f849","id":5508,"name":"IDA_SUBSCRIPTION_ALREADY_APPROVED","nameLocation":"2345:33:9","nodeType":"ErrorDefinition","parameters":{"id":5507,"nodeType":"ParameterList","parameters":[],"src":"2378:2:9"},"src":"2339:42:9"},{"errorSelector":"37412573","id":5510,"name":"IDA_SUBSCRIPTION_IS_NOT_APPROVED","nameLocation":"2406:32:9","nodeType":"ErrorDefinition","parameters":{"id":5509,"nodeType":"ParameterList","parameters":[],"src":"2438:2:9"},"src":"2400:41:9"},{"errorSelector":"16e759bb","id":5512,"name":"IDA_INSUFFICIENT_BALANCE","nameLocation":"2467:24:9","nodeType":"ErrorDefinition","parameters":{"id":5511,"nodeType":"ParameterList","parameters":[],"src":"2491:2:9"},"src":"2461:33:9"},{"errorSelector":"c90a4674","id":5514,"name":"IDA_ZERO_ADDRESS_SUBSCRIBER","nameLocation":"2528:27:9","nodeType":"ErrorDefinition","parameters":{"id":5513,"nodeType":"ParameterList","parameters":[],"src":"2555:2:9"},"src":"2522:36:9"},{"baseFunctions":[6377],"body":{"id":5525,"nodeType":"Block","src":"2708:102:9","statements":[{"expression":{"arguments":[{"hexValue":"6f72672e7375706572666c7569642d66696e616e63652e61677265656d656e74732e496e7374616e74446973747269627574696f6e41677265656d656e742e7631","id":5522,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2735:67:9","typeDescriptions":{"typeIdentifier":"t_stringliteral_8aedc3b5d4bf031e11a7e2940f7251c005698405d58e02e1c247fed3b1b3a674","typeString":"literal_string \"org.superfluid-finance.agreements.InstantDistributionAgreement.v1\""},"value":"org.superfluid-finance.agreements.InstantDistributionAgreement.v1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_8aedc3b5d4bf031e11a7e2940f7251c005698405d58e02e1c247fed3b1b3a674","typeString":"literal_string \"org.superfluid-finance.agreements.InstantDistributionAgreement.v1\""}],"id":5521,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2725:9:9","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":5523,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2725:78:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":5520,"id":5524,"nodeType":"Return","src":"2718:85:9"}]},"documentation":{"id":5515,"nodeType":"StructuredDocumentation","src":"2584:53:9","text":"@dev ISuperAgreement.agreementType implementation"},"functionSelector":"7730599e","id":5526,"implemented":true,"kind":"function","modifiers":[],"name":"agreementType","nameLocation":"2651:13:9","nodeType":"FunctionDefinition","overrides":{"id":5517,"nodeType":"OverrideSpecifier","overrides":[],"src":"2676:8:9"},"parameters":{"id":5516,"nodeType":"ParameterList","parameters":[],"src":"2664:2:9"},"returnParameters":{"id":5520,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5519,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5526,"src":"2699:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5518,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2699:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2698:9:9"},"scope":5893,"src":"2642:168:9","stateMutability":"pure","virtual":false,"visibility":"external"},{"documentation":{"id":5527,"nodeType":"StructuredDocumentation","src":"3001:256:9","text":" @dev Create a new index for the publisher\n @param token Super token address\n @param indexId Id of the index\n @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n @custom:callbacks \n None"},"functionSelector":"d787840a","id":5539,"implemented":false,"kind":"function","modifiers":[],"name":"createIndex","nameLocation":"3271:11:9","nodeType":"FunctionDefinition","parameters":{"id":5535,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5530,"mutability":"mutable","name":"token","nameLocation":"3309:5:9","nodeType":"VariableDeclaration","scope":5539,"src":"3292:22:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"},"typeName":{"id":5529,"nodeType":"UserDefinedTypeName","pathNode":{"id":5528,"name":"ISuperfluidToken","nameLocations":["3292:16:9"],"nodeType":"IdentifierPath","referencedDeclaration":8014,"src":"3292:16:9"},"referencedDeclaration":8014,"src":"3292:16:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5532,"mutability":"mutable","name":"indexId","nameLocation":"3331:7:9","nodeType":"VariableDeclaration","scope":5539,"src":"3324:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5531,"name":"uint32","nodeType":"ElementaryTypeName","src":"3324:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5534,"mutability":"mutable","name":"ctx","nameLocation":"3363:3:9","nodeType":"VariableDeclaration","scope":5539,"src":"3348:18:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":5533,"name":"bytes","nodeType":"ElementaryTypeName","src":"3348:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3282:85:9"},"returnParameters":{"id":5538,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5537,"mutability":"mutable","name":"newCtx","nameLocation":"3442:6:9","nodeType":"VariableDeclaration","scope":5539,"src":"3429:19:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5536,"name":"bytes","nodeType":"ElementaryTypeName","src":"3429:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3428:21:9"},"scope":5893,"src":"3262:188:9","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"anonymous":false,"documentation":{"id":5540,"nodeType":"StructuredDocumentation","src":"3455:246:9","text":" @dev Index created event\n @param token Super token address\n @param publisher Index creator and publisher\n @param indexId The specified indexId of the newly created index\n @param userData The user provided data"},"eventSelector":"01ab8663165edfb7390d9e5f75d960a66dacf4f01fa9787e3a731c870d0da921","id":5551,"name":"IndexCreated","nameLocation":"3712:12:9","nodeType":"EventDefinition","parameters":{"id":5550,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5543,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"3759:5:9","nodeType":"VariableDeclaration","scope":5551,"src":"3734:30:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"},"typeName":{"id":5542,"nodeType":"UserDefinedTypeName","pathNode":{"id":5541,"name":"ISuperfluidToken","nameLocations":["3734:16:9"],"nodeType":"IdentifierPath","referencedDeclaration":8014,"src":"3734:16:9"},"referencedDeclaration":8014,"src":"3734:16:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5545,"indexed":true,"mutability":"mutable","name":"publisher","nameLocation":"3790:9:9","nodeType":"VariableDeclaration","scope":5551,"src":"3774:25:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5544,"name":"address","nodeType":"ElementaryTypeName","src":"3774:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5547,"indexed":true,"mutability":"mutable","name":"indexId","nameLocation":"3824:7:9","nodeType":"VariableDeclaration","scope":5551,"src":"3809:22:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5546,"name":"uint32","nodeType":"ElementaryTypeName","src":"3809:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5549,"indexed":false,"mutability":"mutable","name":"userData","nameLocation":"3847:8:9","nodeType":"VariableDeclaration","scope":5551,"src":"3841:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5548,"name":"bytes","nodeType":"ElementaryTypeName","src":"3841:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3724:132:9"},"src":"3706:151:9"},{"documentation":{"id":5552,"nodeType":"StructuredDocumentation","src":"3863:418:9","text":" @dev Query the data of a index\n @param token Super token address\n @param publisher The publisher of the index\n @param indexId Id of the index\n @return exist Does the index exist\n @return indexValue Value of the current index\n @return totalUnitsApproved Total units approved for the index\n @return totalUnitsPending Total units pending approval for the index"},"functionSelector":"23fc23f3","id":5570,"implemented":false,"kind":"function","modifiers":[],"name":"getIndex","nameLocation":"4295:8:9","nodeType":"FunctionDefinition","parameters":{"id":5560,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5555,"mutability":"mutable","name":"token","nameLocation":"4330:5:9","nodeType":"VariableDeclaration","scope":5570,"src":"4313:22:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"},"typeName":{"id":5554,"nodeType":"UserDefinedTypeName","pathNode":{"id":5553,"name":"ISuperfluidToken","nameLocations":["4313:16:9"],"nodeType":"IdentifierPath","referencedDeclaration":8014,"src":"4313:16:9"},"referencedDeclaration":8014,"src":"4313:16:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5557,"mutability":"mutable","name":"publisher","nameLocation":"4353:9:9","nodeType":"VariableDeclaration","scope":5570,"src":"4345:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5556,"name":"address","nodeType":"ElementaryTypeName","src":"4345:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5559,"mutability":"mutable","name":"indexId","nameLocation":"4379:7:9","nodeType":"VariableDeclaration","scope":5570,"src":"4372:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5558,"name":"uint32","nodeType":"ElementaryTypeName","src":"4372:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"4303:84:9"},"returnParameters":{"id":5569,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5562,"mutability":"mutable","name":"exist","nameLocation":"4488:5:9","nodeType":"VariableDeclaration","scope":5570,"src":"4483:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5561,"name":"bool","nodeType":"ElementaryTypeName","src":"4483:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5564,"mutability":"mutable","name":"indexValue","nameLocation":"4519:10:9","nodeType":"VariableDeclaration","scope":5570,"src":"4511:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5563,"name":"uint128","nodeType":"ElementaryTypeName","src":"4511:7:9","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":5566,"mutability":"mutable","name":"totalUnitsApproved","nameLocation":"4555:18:9","nodeType":"VariableDeclaration","scope":5570,"src":"4547:26:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5565,"name":"uint128","nodeType":"ElementaryTypeName","src":"4547:7:9","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":5568,"mutability":"mutable","name":"totalUnitsPending","nameLocation":"4599:17:9","nodeType":"VariableDeclaration","scope":5570,"src":"4591:25:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5567,"name":"uint128","nodeType":"ElementaryTypeName","src":"4591:7:9","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"4465:152:9"},"scope":5893,"src":"4286:332:9","stateMutability":"view","virtual":true,"visibility":"external"},{"documentation":{"id":5571,"nodeType":"StructuredDocumentation","src":"4624:446:9","text":" @dev Calculate actual distribution amount\n @param token Super token address\n @param publisher The publisher of the index\n @param indexId Id of the index\n @param amount The amount of tokens desired to be distributed\n @return actualAmount The amount to be distributed after ensuring no rounding errors\n @return newIndexValue The index value given the desired amount of tokens to be distributed"},"functionSelector":"899baaec","id":5587,"implemented":false,"kind":"function","modifiers":[],"name":"calculateDistribution","nameLocation":"5084:21:9","nodeType":"FunctionDefinition","parameters":{"id":5581,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5574,"mutability":"mutable","name":"token","nameLocation":"5131:5:9","nodeType":"VariableDeclaration","scope":5587,"src":"5114:22:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"},"typeName":{"id":5573,"nodeType":"UserDefinedTypeName","pathNode":{"id":5572,"name":"ISuperfluidToken","nameLocations":["5114:16:9"],"nodeType":"IdentifierPath","referencedDeclaration":8014,"src":"5114:16:9"},"referencedDeclaration":8014,"src":"5114:16:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5576,"mutability":"mutable","name":"publisher","nameLocation":"5153:9:9","nodeType":"VariableDeclaration","scope":5587,"src":"5145:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5575,"name":"address","nodeType":"ElementaryTypeName","src":"5145:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5578,"mutability":"mutable","name":"indexId","nameLocation":"5178:7:9","nodeType":"VariableDeclaration","scope":5587,"src":"5171:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5577,"name":"uint32","nodeType":"ElementaryTypeName","src":"5171:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5580,"mutability":"mutable","name":"amount","nameLocation":"5202:6:9","nodeType":"VariableDeclaration","scope":5587,"src":"5194:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5579,"name":"uint256","nodeType":"ElementaryTypeName","src":"5194:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5105:104:9"},"returnParameters":{"id":5586,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5583,"mutability":"mutable","name":"actualAmount","nameLocation":"5297:12:9","nodeType":"VariableDeclaration","scope":5587,"src":"5289:20:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5582,"name":"uint256","nodeType":"ElementaryTypeName","src":"5289:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5585,"mutability":"mutable","name":"newIndexValue","nameLocation":"5334:13:9","nodeType":"VariableDeclaration","scope":5587,"src":"5326:21:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5584,"name":"uint128","nodeType":"ElementaryTypeName","src":"5326:7:9","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"5272:76:9"},"scope":5893,"src":"5075:274:9","stateMutability":"view","virtual":true,"visibility":"external"},{"documentation":{"id":5588,"nodeType":"StructuredDocumentation","src":"5355:294:9","text":" @dev Update index value of an index\n @param token Super token address\n @param indexId Id of the index\n @param indexValue Value of the index\n @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n @custom:callbacks \n None"},"functionSelector":"7fbc7639","id":5602,"implemented":false,"kind":"function","modifiers":[],"name":"updateIndex","nameLocation":"5663:11:9","nodeType":"FunctionDefinition","parameters":{"id":5598,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5591,"mutability":"mutable","name":"token","nameLocation":"5701:5:9","nodeType":"VariableDeclaration","scope":5602,"src":"5684:22:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"},"typeName":{"id":5590,"nodeType":"UserDefinedTypeName","pathNode":{"id":5589,"name":"ISuperfluidToken","nameLocations":["5684:16:9"],"nodeType":"IdentifierPath","referencedDeclaration":8014,"src":"5684:16:9"},"referencedDeclaration":8014,"src":"5684:16:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5593,"mutability":"mutable","name":"indexId","nameLocation":"5723:7:9","nodeType":"VariableDeclaration","scope":5602,"src":"5716:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5592,"name":"uint32","nodeType":"ElementaryTypeName","src":"5716:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5595,"mutability":"mutable","name":"indexValue","nameLocation":"5748:10:9","nodeType":"VariableDeclaration","scope":5602,"src":"5740:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5594,"name":"uint128","nodeType":"ElementaryTypeName","src":"5740:7:9","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":5597,"mutability":"mutable","name":"ctx","nameLocation":"5783:3:9","nodeType":"VariableDeclaration","scope":5602,"src":"5768:18:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":5596,"name":"bytes","nodeType":"ElementaryTypeName","src":"5768:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5674:113:9"},"returnParameters":{"id":5601,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5600,"mutability":"mutable","name":"newCtx","nameLocation":"5862:6:9","nodeType":"VariableDeclaration","scope":5602,"src":"5849:19:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5599,"name":"bytes","nodeType":"ElementaryTypeName","src":"5849:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5848:21:9"},"scope":5893,"src":"5654:216:9","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"anonymous":false,"documentation":{"id":5603,"nodeType":"StructuredDocumentation","src":"5875:539:9","text":" @dev Index updated event\n @param token Super token address\n @param publisher Index updater and publisher\n @param indexId The specified indexId of the updated index\n @param oldIndexValue The previous index value\n @param newIndexValue The updated index value\n @param totalUnitsPending The total units pending when the indexValue was updated\n @param totalUnitsApproved The total units approved when the indexValue was updated\n @param userData The user provided data"},"eventSelector":"81e37f3d9f16cbf29a62d6a1c21d79b23ef29b54124ec44af43a50fffb9304f3","id":5622,"name":"IndexUpdated","nameLocation":"6425:12:9","nodeType":"EventDefinition","parameters":{"id":5621,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5606,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"6472:5:9","nodeType":"VariableDeclaration","scope":5622,"src":"6447:30:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"},"typeName":{"id":5605,"nodeType":"UserDefinedTypeName","pathNode":{"id":5604,"name":"ISuperfluidToken","nameLocations":["6447:16:9"],"nodeType":"IdentifierPath","referencedDeclaration":8014,"src":"6447:16:9"},"referencedDeclaration":8014,"src":"6447:16:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5608,"indexed":true,"mutability":"mutable","name":"publisher","nameLocation":"6503:9:9","nodeType":"VariableDeclaration","scope":5622,"src":"6487:25:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5607,"name":"address","nodeType":"ElementaryTypeName","src":"6487:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5610,"indexed":true,"mutability":"mutable","name":"indexId","nameLocation":"6537:7:9","nodeType":"VariableDeclaration","scope":5622,"src":"6522:22:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5609,"name":"uint32","nodeType":"ElementaryTypeName","src":"6522:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5612,"indexed":false,"mutability":"mutable","name":"oldIndexValue","nameLocation":"6562:13:9","nodeType":"VariableDeclaration","scope":5622,"src":"6554:21:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5611,"name":"uint128","nodeType":"ElementaryTypeName","src":"6554:7:9","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":5614,"indexed":false,"mutability":"mutable","name":"newIndexValue","nameLocation":"6593:13:9","nodeType":"VariableDeclaration","scope":5622,"src":"6585:21:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5613,"name":"uint128","nodeType":"ElementaryTypeName","src":"6585:7:9","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":5616,"indexed":false,"mutability":"mutable","name":"totalUnitsPending","nameLocation":"6624:17:9","nodeType":"VariableDeclaration","scope":5622,"src":"6616:25:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5615,"name":"uint128","nodeType":"ElementaryTypeName","src":"6616:7:9","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":5618,"indexed":false,"mutability":"mutable","name":"totalUnitsApproved","nameLocation":"6659:18:9","nodeType":"VariableDeclaration","scope":5622,"src":"6651:26:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5617,"name":"uint128","nodeType":"ElementaryTypeName","src":"6651:7:9","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":5620,"indexed":false,"mutability":"mutable","name":"userData","nameLocation":"6693:8:9","nodeType":"VariableDeclaration","scope":5622,"src":"6687:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5619,"name":"bytes","nodeType":"ElementaryTypeName","src":"6687:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6437:265:9"},"src":"6419:284:9"},{"documentation":{"id":5623,"nodeType":"StructuredDocumentation","src":"6709:653:9","text":" @dev Distribute tokens through the index\n @param token Super token address\n @param indexId Id of the index\n @param amount The amount of tokens desired to be distributed\n @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n @custom:note \n - This is a convenient version of updateIndex. It adds to the index\n a delta that equals to `amount / totalUnits`\n - The actual amount distributed could be obtained via\n `calculateDistribution`. This is due to precision error with index\n value and units data range\n @custom:callbacks \n None"},"functionSelector":"b96731c2","id":5637,"implemented":false,"kind":"function","modifiers":[],"name":"distribute","nameLocation":"7376:10:9","nodeType":"FunctionDefinition","parameters":{"id":5633,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5626,"mutability":"mutable","name":"token","nameLocation":"7413:5:9","nodeType":"VariableDeclaration","scope":5637,"src":"7396:22:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"},"typeName":{"id":5625,"nodeType":"UserDefinedTypeName","pathNode":{"id":5624,"name":"ISuperfluidToken","nameLocations":["7396:16:9"],"nodeType":"IdentifierPath","referencedDeclaration":8014,"src":"7396:16:9"},"referencedDeclaration":8014,"src":"7396:16:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5628,"mutability":"mutable","name":"indexId","nameLocation":"7435:7:9","nodeType":"VariableDeclaration","scope":5637,"src":"7428:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5627,"name":"uint32","nodeType":"ElementaryTypeName","src":"7428:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5630,"mutability":"mutable","name":"amount","nameLocation":"7460:6:9","nodeType":"VariableDeclaration","scope":5637,"src":"7452:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5629,"name":"uint256","nodeType":"ElementaryTypeName","src":"7452:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5632,"mutability":"mutable","name":"ctx","nameLocation":"7491:3:9","nodeType":"VariableDeclaration","scope":5637,"src":"7476:18:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":5631,"name":"bytes","nodeType":"ElementaryTypeName","src":"7476:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7386:109:9"},"returnParameters":{"id":5636,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5635,"mutability":"mutable","name":"newCtx","nameLocation":"7570:6:9","nodeType":"VariableDeclaration","scope":5637,"src":"7557:19:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5634,"name":"bytes","nodeType":"ElementaryTypeName","src":"7557:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7556:21:9"},"scope":5893,"src":"7367:211:9","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"documentation":{"id":5638,"nodeType":"StructuredDocumentation","src":"7777:576:9","text":" @dev Approve the subscription of an index\n @param token Super token address\n @param publisher The publisher of the index\n @param indexId Id of the index\n @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n @custom:callbacks \n - if subscription exist\n - AgreementCreated callback to the publisher:\n - agreementId is for the subscription\n - if subscription does not exist\n - AgreementUpdated callback to the publisher:\n - agreementId is for the subscription"},"functionSelector":"acf4a6c2","id":5652,"implemented":false,"kind":"function","modifiers":[],"name":"approveSubscription","nameLocation":"8367:19:9","nodeType":"FunctionDefinition","parameters":{"id":5648,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5641,"mutability":"mutable","name":"token","nameLocation":"8413:5:9","nodeType":"VariableDeclaration","scope":5652,"src":"8396:22:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"},"typeName":{"id":5640,"nodeType":"UserDefinedTypeName","pathNode":{"id":5639,"name":"ISuperfluidToken","nameLocations":["8396:16:9"],"nodeType":"IdentifierPath","referencedDeclaration":8014,"src":"8396:16:9"},"referencedDeclaration":8014,"src":"8396:16:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5643,"mutability":"mutable","name":"publisher","nameLocation":"8436:9:9","nodeType":"VariableDeclaration","scope":5652,"src":"8428:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5642,"name":"address","nodeType":"ElementaryTypeName","src":"8428:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5645,"mutability":"mutable","name":"indexId","nameLocation":"8462:7:9","nodeType":"VariableDeclaration","scope":5652,"src":"8455:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5644,"name":"uint32","nodeType":"ElementaryTypeName","src":"8455:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5647,"mutability":"mutable","name":"ctx","nameLocation":"8494:3:9","nodeType":"VariableDeclaration","scope":5652,"src":"8479:18:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":5646,"name":"bytes","nodeType":"ElementaryTypeName","src":"8479:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8386:112:9"},"returnParameters":{"id":5651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5650,"mutability":"mutable","name":"newCtx","nameLocation":"8573:6:9","nodeType":"VariableDeclaration","scope":5652,"src":"8560:19:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5649,"name":"bytes","nodeType":"ElementaryTypeName","src":"8560:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8559:21:9"},"scope":5893,"src":"8358:223:9","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"anonymous":false,"documentation":{"id":5653,"nodeType":"StructuredDocumentation","src":"8586:272:9","text":" @dev Index subscribed event\n @param token Super token address\n @param publisher Index publisher\n @param indexId The specified indexId\n @param subscriber The approved subscriber\n @param userData The user provided data"},"eventSelector":"492d2641617cfaf24ac7328f85bc5bdf5113537d78dc7671afa4f49a73f053c2","id":5666,"name":"IndexSubscribed","nameLocation":"8869:15:9","nodeType":"EventDefinition","parameters":{"id":5665,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5656,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"8919:5:9","nodeType":"VariableDeclaration","scope":5666,"src":"8894:30:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"},"typeName":{"id":5655,"nodeType":"UserDefinedTypeName","pathNode":{"id":5654,"name":"ISuperfluidToken","nameLocations":["8894:16:9"],"nodeType":"IdentifierPath","referencedDeclaration":8014,"src":"8894:16:9"},"referencedDeclaration":8014,"src":"8894:16:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5658,"indexed":true,"mutability":"mutable","name":"publisher","nameLocation":"8950:9:9","nodeType":"VariableDeclaration","scope":5666,"src":"8934:25:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5657,"name":"address","nodeType":"ElementaryTypeName","src":"8934:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5660,"indexed":true,"mutability":"mutable","name":"indexId","nameLocation":"8984:7:9","nodeType":"VariableDeclaration","scope":5666,"src":"8969:22:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5659,"name":"uint32","nodeType":"ElementaryTypeName","src":"8969:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5662,"indexed":false,"mutability":"mutable","name":"subscriber","nameLocation":"9009:10:9","nodeType":"VariableDeclaration","scope":5666,"src":"9001:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5661,"name":"address","nodeType":"ElementaryTypeName","src":"9001:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5664,"indexed":false,"mutability":"mutable","name":"userData","nameLocation":"9035:8:9","nodeType":"VariableDeclaration","scope":5666,"src":"9029:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5663,"name":"bytes","nodeType":"ElementaryTypeName","src":"9029:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8884:160:9"},"src":"8863:182:9"},{"anonymous":false,"documentation":{"id":5667,"nodeType":"StructuredDocumentation","src":"9051:277:9","text":" @dev Subscription approved event\n @param token Super token address\n @param subscriber The approved subscriber\n @param publisher Index publisher\n @param indexId The specified indexId\n @param userData The user provided data"},"eventSelector":"c0b8396b655615cdb85fe462a9a1792480816f909cd46d9517a940b386dfbf6b","id":5680,"name":"SubscriptionApproved","nameLocation":"9339:20:9","nodeType":"EventDefinition","parameters":{"id":5679,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5670,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"9394:5:9","nodeType":"VariableDeclaration","scope":5680,"src":"9369:30:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"},"typeName":{"id":5669,"nodeType":"UserDefinedTypeName","pathNode":{"id":5668,"name":"ISuperfluidToken","nameLocations":["9369:16:9"],"nodeType":"IdentifierPath","referencedDeclaration":8014,"src":"9369:16:9"},"referencedDeclaration":8014,"src":"9369:16:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5672,"indexed":true,"mutability":"mutable","name":"subscriber","nameLocation":"9425:10:9","nodeType":"VariableDeclaration","scope":5680,"src":"9409:26:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5671,"name":"address","nodeType":"ElementaryTypeName","src":"9409:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5674,"indexed":false,"mutability":"mutable","name":"publisher","nameLocation":"9453:9:9","nodeType":"VariableDeclaration","scope":5680,"src":"9445:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5673,"name":"address","nodeType":"ElementaryTypeName","src":"9445:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5676,"indexed":false,"mutability":"mutable","name":"indexId","nameLocation":"9479:7:9","nodeType":"VariableDeclaration","scope":5680,"src":"9472:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5675,"name":"uint32","nodeType":"ElementaryTypeName","src":"9472:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5678,"indexed":false,"mutability":"mutable","name":"userData","nameLocation":"9502:8:9","nodeType":"VariableDeclaration","scope":5680,"src":"9496:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5677,"name":"bytes","nodeType":"ElementaryTypeName","src":"9496:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9359:152:9"},"src":"9333:179:9"},{"documentation":{"id":5681,"nodeType":"StructuredDocumentation","src":"9518:465:9","text":" @notice Revoke the subscription of an index\n @dev \"Unapproves\" the subscription and moves approved units to pending\n @param token Super token address\n @param publisher The publisher of the index\n @param indexId Id of the index\n @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n @custom:callbacks \n - AgreementUpdated callback to the publisher:\n - agreementId is for the subscription"},"functionSelector":"6041ae96","id":5695,"implemented":false,"kind":"function","modifiers":[],"name":"revokeSubscription","nameLocation":"9997:18:9","nodeType":"FunctionDefinition","parameters":{"id":5691,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5684,"mutability":"mutable","name":"token","nameLocation":"10042:5:9","nodeType":"VariableDeclaration","scope":5695,"src":"10025:22:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"},"typeName":{"id":5683,"nodeType":"UserDefinedTypeName","pathNode":{"id":5682,"name":"ISuperfluidToken","nameLocations":["10025:16:9"],"nodeType":"IdentifierPath","referencedDeclaration":8014,"src":"10025:16:9"},"referencedDeclaration":8014,"src":"10025:16:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5686,"mutability":"mutable","name":"publisher","nameLocation":"10065:9:9","nodeType":"VariableDeclaration","scope":5695,"src":"10057:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5685,"name":"address","nodeType":"ElementaryTypeName","src":"10057:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5688,"mutability":"mutable","name":"indexId","nameLocation":"10091:7:9","nodeType":"VariableDeclaration","scope":5695,"src":"10084:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5687,"name":"uint32","nodeType":"ElementaryTypeName","src":"10084:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5690,"mutability":"mutable","name":"ctx","nameLocation":"10123:3:9","nodeType":"VariableDeclaration","scope":5695,"src":"10108:18:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":5689,"name":"bytes","nodeType":"ElementaryTypeName","src":"10108:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"10015:112:9"},"returnParameters":{"id":5694,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5693,"mutability":"mutable","name":"newCtx","nameLocation":"10193:6:9","nodeType":"VariableDeclaration","scope":5695,"src":"10180:19:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5692,"name":"bytes","nodeType":"ElementaryTypeName","src":"10180:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"10179:21:9"},"scope":5893,"src":"9988:213:9","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"anonymous":false,"documentation":{"id":5696,"nodeType":"StructuredDocumentation","src":"10206:278:9","text":" @dev Index unsubscribed event\n @param token Super token address\n @param publisher Index publisher\n @param indexId The specified indexId\n @param subscriber The unsubscribed subscriber\n @param userData The user provided data"},"eventSelector":"e1f8e9cd8061e5b251769965bda6ca9ef1674bc6541fb9131039fa53f024d142","id":5709,"name":"IndexUnsubscribed","nameLocation":"10495:17:9","nodeType":"EventDefinition","parameters":{"id":5708,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5699,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"10547:5:9","nodeType":"VariableDeclaration","scope":5709,"src":"10522:30:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"},"typeName":{"id":5698,"nodeType":"UserDefinedTypeName","pathNode":{"id":5697,"name":"ISuperfluidToken","nameLocations":["10522:16:9"],"nodeType":"IdentifierPath","referencedDeclaration":8014,"src":"10522:16:9"},"referencedDeclaration":8014,"src":"10522:16:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5701,"indexed":true,"mutability":"mutable","name":"publisher","nameLocation":"10578:9:9","nodeType":"VariableDeclaration","scope":5709,"src":"10562:25:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5700,"name":"address","nodeType":"ElementaryTypeName","src":"10562:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5703,"indexed":true,"mutability":"mutable","name":"indexId","nameLocation":"10612:7:9","nodeType":"VariableDeclaration","scope":5709,"src":"10597:22:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5702,"name":"uint32","nodeType":"ElementaryTypeName","src":"10597:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5705,"indexed":false,"mutability":"mutable","name":"subscriber","nameLocation":"10637:10:9","nodeType":"VariableDeclaration","scope":5709,"src":"10629:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5704,"name":"address","nodeType":"ElementaryTypeName","src":"10629:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5707,"indexed":false,"mutability":"mutable","name":"userData","nameLocation":"10663:8:9","nodeType":"VariableDeclaration","scope":5709,"src":"10657:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5706,"name":"bytes","nodeType":"ElementaryTypeName","src":"10657:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"10512:160:9"},"src":"10489:184:9"},{"anonymous":false,"documentation":{"id":5710,"nodeType":"StructuredDocumentation","src":"10683:277:9","text":" @dev Subscription approved event\n @param token Super token address\n @param subscriber The approved subscriber\n @param publisher Index publisher\n @param indexId The specified indexId\n @param userData The user provided data"},"eventSelector":"9e02127550b99adc8cc6ee332a36f31338facdbc396cebefce9a047247cd0455","id":5723,"name":"SubscriptionRevoked","nameLocation":"10971:19:9","nodeType":"EventDefinition","parameters":{"id":5722,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5713,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"11025:5:9","nodeType":"VariableDeclaration","scope":5723,"src":"11000:30:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"},"typeName":{"id":5712,"nodeType":"UserDefinedTypeName","pathNode":{"id":5711,"name":"ISuperfluidToken","nameLocations":["11000:16:9"],"nodeType":"IdentifierPath","referencedDeclaration":8014,"src":"11000:16:9"},"referencedDeclaration":8014,"src":"11000:16:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5715,"indexed":true,"mutability":"mutable","name":"subscriber","nameLocation":"11056:10:9","nodeType":"VariableDeclaration","scope":5723,"src":"11040:26:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5714,"name":"address","nodeType":"ElementaryTypeName","src":"11040:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5717,"indexed":false,"mutability":"mutable","name":"publisher","nameLocation":"11084:9:9","nodeType":"VariableDeclaration","scope":5723,"src":"11076:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5716,"name":"address","nodeType":"ElementaryTypeName","src":"11076:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5719,"indexed":false,"mutability":"mutable","name":"indexId","nameLocation":"11110:7:9","nodeType":"VariableDeclaration","scope":5723,"src":"11103:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5718,"name":"uint32","nodeType":"ElementaryTypeName","src":"11103:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5721,"indexed":false,"mutability":"mutable","name":"userData","nameLocation":"11133:8:9","nodeType":"VariableDeclaration","scope":5723,"src":"11127:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5720,"name":"bytes","nodeType":"ElementaryTypeName","src":"11127:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"10990:152:9"},"src":"10965:178:9"},{"documentation":{"id":5724,"nodeType":"StructuredDocumentation","src":"11149:643:9","text":" @dev Update the nuber of units of a subscription\n @param token Super token address\n @param indexId Id of the index\n @param subscriber The subscriber of the index\n @param units Number of units of the subscription\n @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n @custom:callbacks \n - if subscription exist\n - AgreementCreated callback to the subscriber:\n - agreementId is for the subscription\n - if subscription does not exist\n - AgreementUpdated callback to the subscriber:\n - agreementId is for the subscription"},"functionSelector":"232d2b58","id":5740,"implemented":false,"kind":"function","modifiers":[],"name":"updateSubscription","nameLocation":"11806:18:9","nodeType":"FunctionDefinition","parameters":{"id":5736,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5727,"mutability":"mutable","name":"token","nameLocation":"11851:5:9","nodeType":"VariableDeclaration","scope":5740,"src":"11834:22:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"},"typeName":{"id":5726,"nodeType":"UserDefinedTypeName","pathNode":{"id":5725,"name":"ISuperfluidToken","nameLocations":["11834:16:9"],"nodeType":"IdentifierPath","referencedDeclaration":8014,"src":"11834:16:9"},"referencedDeclaration":8014,"src":"11834:16:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5729,"mutability":"mutable","name":"indexId","nameLocation":"11873:7:9","nodeType":"VariableDeclaration","scope":5740,"src":"11866:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5728,"name":"uint32","nodeType":"ElementaryTypeName","src":"11866:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5731,"mutability":"mutable","name":"subscriber","nameLocation":"11898:10:9","nodeType":"VariableDeclaration","scope":5740,"src":"11890:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5730,"name":"address","nodeType":"ElementaryTypeName","src":"11890:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5733,"mutability":"mutable","name":"units","nameLocation":"11926:5:9","nodeType":"VariableDeclaration","scope":5740,"src":"11918:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5732,"name":"uint128","nodeType":"ElementaryTypeName","src":"11918:7:9","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":5735,"mutability":"mutable","name":"ctx","nameLocation":"11956:3:9","nodeType":"VariableDeclaration","scope":5740,"src":"11941:18:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":5734,"name":"bytes","nodeType":"ElementaryTypeName","src":"11941:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"11824:136:9"},"returnParameters":{"id":5739,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5738,"mutability":"mutable","name":"newCtx","nameLocation":"12035:6:9","nodeType":"VariableDeclaration","scope":5740,"src":"12022:19:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5737,"name":"bytes","nodeType":"ElementaryTypeName","src":"12022:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"12021:21:9"},"scope":5893,"src":"11797:246:9","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"anonymous":false,"documentation":{"id":5741,"nodeType":"StructuredDocumentation","src":"12049:322:9","text":" @dev Index units updated event\n @param token Super token address\n @param publisher Index publisher\n @param indexId The specified indexId\n @param subscriber The subscriber units updated\n @param units The new units amount\n @param userData The user provided data"},"eventSelector":"0115987243fd19d615b5ea62a80372a06a2b37fec378b148ee7a507c5c4c0a39","id":5756,"name":"IndexUnitsUpdated","nameLocation":"12382:17:9","nodeType":"EventDefinition","parameters":{"id":5755,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5744,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"12434:5:9","nodeType":"VariableDeclaration","scope":5756,"src":"12409:30:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"},"typeName":{"id":5743,"nodeType":"UserDefinedTypeName","pathNode":{"id":5742,"name":"ISuperfluidToken","nameLocations":["12409:16:9"],"nodeType":"IdentifierPath","referencedDeclaration":8014,"src":"12409:16:9"},"referencedDeclaration":8014,"src":"12409:16:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5746,"indexed":true,"mutability":"mutable","name":"publisher","nameLocation":"12465:9:9","nodeType":"VariableDeclaration","scope":5756,"src":"12449:25:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5745,"name":"address","nodeType":"ElementaryTypeName","src":"12449:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5748,"indexed":true,"mutability":"mutable","name":"indexId","nameLocation":"12499:7:9","nodeType":"VariableDeclaration","scope":5756,"src":"12484:22:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5747,"name":"uint32","nodeType":"ElementaryTypeName","src":"12484:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5750,"indexed":false,"mutability":"mutable","name":"subscriber","nameLocation":"12524:10:9","nodeType":"VariableDeclaration","scope":5756,"src":"12516:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5749,"name":"address","nodeType":"ElementaryTypeName","src":"12516:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5752,"indexed":false,"mutability":"mutable","name":"units","nameLocation":"12552:5:9","nodeType":"VariableDeclaration","scope":5756,"src":"12544:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5751,"name":"uint128","nodeType":"ElementaryTypeName","src":"12544:7:9","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":5754,"indexed":false,"mutability":"mutable","name":"userData","nameLocation":"12573:8:9","nodeType":"VariableDeclaration","scope":5756,"src":"12567:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5753,"name":"bytes","nodeType":"ElementaryTypeName","src":"12567:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"12399:183:9"},"src":"12376:207:9"},{"anonymous":false,"documentation":{"id":5757,"nodeType":"StructuredDocumentation","src":"12593:329:9","text":" @dev Subscription units updated event\n @param token Super token address\n @param subscriber The subscriber units updated\n @param indexId The specified indexId\n @param publisher Index publisher\n @param units The new units amount\n @param userData The user provided data"},"eventSelector":"e0707ac7efb8b59c22189af8d004ed17dc9e4379e71b9066119b62c182524977","id":5772,"name":"SubscriptionUnitsUpdated","nameLocation":"12933:24:9","nodeType":"EventDefinition","parameters":{"id":5771,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5760,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"12992:5:9","nodeType":"VariableDeclaration","scope":5772,"src":"12967:30:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"},"typeName":{"id":5759,"nodeType":"UserDefinedTypeName","pathNode":{"id":5758,"name":"ISuperfluidToken","nameLocations":["12967:16:9"],"nodeType":"IdentifierPath","referencedDeclaration":8014,"src":"12967:16:9"},"referencedDeclaration":8014,"src":"12967:16:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5762,"indexed":true,"mutability":"mutable","name":"subscriber","nameLocation":"13023:10:9","nodeType":"VariableDeclaration","scope":5772,"src":"13007:26:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5761,"name":"address","nodeType":"ElementaryTypeName","src":"13007:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5764,"indexed":false,"mutability":"mutable","name":"publisher","nameLocation":"13051:9:9","nodeType":"VariableDeclaration","scope":5772,"src":"13043:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5763,"name":"address","nodeType":"ElementaryTypeName","src":"13043:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5766,"indexed":false,"mutability":"mutable","name":"indexId","nameLocation":"13077:7:9","nodeType":"VariableDeclaration","scope":5772,"src":"13070:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5765,"name":"uint32","nodeType":"ElementaryTypeName","src":"13070:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5768,"indexed":false,"mutability":"mutable","name":"units","nameLocation":"13102:5:9","nodeType":"VariableDeclaration","scope":5772,"src":"13094:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5767,"name":"uint128","nodeType":"ElementaryTypeName","src":"13094:7:9","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":5770,"indexed":false,"mutability":"mutable","name":"userData","nameLocation":"13123:8:9","nodeType":"VariableDeclaration","scope":5772,"src":"13117:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5769,"name":"bytes","nodeType":"ElementaryTypeName","src":"13117:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"12957:175:9"},"src":"12927:206:9"},{"documentation":{"id":5773,"nodeType":"StructuredDocumentation","src":"13139:488:9","text":" @dev Get data of a subscription\n @param token Super token address\n @param publisher The publisher of the index\n @param indexId Id of the index\n @param subscriber The subscriber of the index\n @return exist Does the subscription exist?\n @return approved Is the subscription approved?\n @return units Units of the suscription\n @return pendingDistribution Pending amount of tokens to be distributed for unapproved subscription"},"functionSelector":"5b534051","id":5793,"implemented":false,"kind":"function","modifiers":[],"name":"getSubscription","nameLocation":"13641:15:9","nodeType":"FunctionDefinition","parameters":{"id":5783,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5776,"mutability":"mutable","name":"token","nameLocation":"13683:5:9","nodeType":"VariableDeclaration","scope":5793,"src":"13666:22:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"},"typeName":{"id":5775,"nodeType":"UserDefinedTypeName","pathNode":{"id":5774,"name":"ISuperfluidToken","nameLocations":["13666:16:9"],"nodeType":"IdentifierPath","referencedDeclaration":8014,"src":"13666:16:9"},"referencedDeclaration":8014,"src":"13666:16:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5778,"mutability":"mutable","name":"publisher","nameLocation":"13706:9:9","nodeType":"VariableDeclaration","scope":5793,"src":"13698:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5777,"name":"address","nodeType":"ElementaryTypeName","src":"13698:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5780,"mutability":"mutable","name":"indexId","nameLocation":"13732:7:9","nodeType":"VariableDeclaration","scope":5793,"src":"13725:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5779,"name":"uint32","nodeType":"ElementaryTypeName","src":"13725:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5782,"mutability":"mutable","name":"subscriber","nameLocation":"13757:10:9","nodeType":"VariableDeclaration","scope":5793,"src":"13749:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5781,"name":"address","nodeType":"ElementaryTypeName","src":"13749:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"13656:112:9"},"returnParameters":{"id":5792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5785,"mutability":"mutable","name":"exist","nameLocation":"13869:5:9","nodeType":"VariableDeclaration","scope":5793,"src":"13864:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5784,"name":"bool","nodeType":"ElementaryTypeName","src":"13864:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5787,"mutability":"mutable","name":"approved","nameLocation":"13897:8:9","nodeType":"VariableDeclaration","scope":5793,"src":"13892:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5786,"name":"bool","nodeType":"ElementaryTypeName","src":"13892:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5789,"mutability":"mutable","name":"units","nameLocation":"13931:5:9","nodeType":"VariableDeclaration","scope":5793,"src":"13923:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5788,"name":"uint128","nodeType":"ElementaryTypeName","src":"13923:7:9","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":5791,"mutability":"mutable","name":"pendingDistribution","nameLocation":"13962:19:9","nodeType":"VariableDeclaration","scope":5793,"src":"13954:27:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5790,"name":"uint256","nodeType":"ElementaryTypeName","src":"13954:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13846:149:9"},"scope":5893,"src":"13632:364:9","stateMutability":"view","virtual":true,"visibility":"external"},{"documentation":{"id":5794,"nodeType":"StructuredDocumentation","src":"14002:554:9","text":" @notice Get data of a subscription by agreement ID\n @dev indexId (agreementId) is the keccak256 hash of encodePacked(\"publisher\", publisher, indexId)\n @param token Super token address\n @param agreementId The agreement ID\n @return publisher The publisher of the index\n @return indexId Id of the index\n @return approved Is the subscription approved?\n @return units Units of the suscription\n @return pendingDistribution Pending amount of tokens to be distributed for unapproved subscription"},"functionSelector":"cd7245c5","id":5812,"implemented":false,"kind":"function","modifiers":[],"name":"getSubscriptionByID","nameLocation":"14570:19:9","nodeType":"FunctionDefinition","parameters":{"id":5800,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5797,"mutability":"mutable","name":"token","nameLocation":"14616:5:9","nodeType":"VariableDeclaration","scope":5812,"src":"14599:22:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"},"typeName":{"id":5796,"nodeType":"UserDefinedTypeName","pathNode":{"id":5795,"name":"ISuperfluidToken","nameLocations":["14599:16:9"],"nodeType":"IdentifierPath","referencedDeclaration":8014,"src":"14599:16:9"},"referencedDeclaration":8014,"src":"14599:16:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5799,"mutability":"mutable","name":"agreementId","nameLocation":"14639:11:9","nodeType":"VariableDeclaration","scope":5812,"src":"14631:19:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5798,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14631:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"14589:62:9"},"returnParameters":{"id":5811,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5802,"mutability":"mutable","name":"publisher","nameLocation":"14755:9:9","nodeType":"VariableDeclaration","scope":5812,"src":"14747:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5801,"name":"address","nodeType":"ElementaryTypeName","src":"14747:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5804,"mutability":"mutable","name":"indexId","nameLocation":"14789:7:9","nodeType":"VariableDeclaration","scope":5812,"src":"14782:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5803,"name":"uint32","nodeType":"ElementaryTypeName","src":"14782:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5806,"mutability":"mutable","name":"approved","nameLocation":"14819:8:9","nodeType":"VariableDeclaration","scope":5812,"src":"14814:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5805,"name":"bool","nodeType":"ElementaryTypeName","src":"14814:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5808,"mutability":"mutable","name":"units","nameLocation":"14853:5:9","nodeType":"VariableDeclaration","scope":5812,"src":"14845:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5807,"name":"uint128","nodeType":"ElementaryTypeName","src":"14845:7:9","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":5810,"mutability":"mutable","name":"pendingDistribution","nameLocation":"14884:19:9","nodeType":"VariableDeclaration","scope":5812,"src":"14876:27:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5809,"name":"uint256","nodeType":"ElementaryTypeName","src":"14876:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14729:188:9"},"scope":5893,"src":"14561:357:9","stateMutability":"view","virtual":true,"visibility":"external"},{"documentation":{"id":5813,"nodeType":"StructuredDocumentation","src":"14924:305:9","text":" @dev List subscriptions of an user\n @param token Super token address\n @param subscriber The subscriber's address\n @return publishers Publishers of the subcriptions\n @return indexIds Indexes of the subscriptions\n @return unitsList Units of the subscriptions"},"functionSelector":"b6dacdb8","id":5830,"implemented":false,"kind":"function","modifiers":[],"name":"listSubscriptions","nameLocation":"15243:17:9","nodeType":"FunctionDefinition","parameters":{"id":5819,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5816,"mutability":"mutable","name":"token","nameLocation":"15287:5:9","nodeType":"VariableDeclaration","scope":5830,"src":"15270:22:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"},"typeName":{"id":5815,"nodeType":"UserDefinedTypeName","pathNode":{"id":5814,"name":"ISuperfluidToken","nameLocations":["15270:16:9"],"nodeType":"IdentifierPath","referencedDeclaration":8014,"src":"15270:16:9"},"referencedDeclaration":8014,"src":"15270:16:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5818,"mutability":"mutable","name":"subscriber","nameLocation":"15310:10:9","nodeType":"VariableDeclaration","scope":5830,"src":"15302:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5817,"name":"address","nodeType":"ElementaryTypeName","src":"15302:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"15260:61:9"},"returnParameters":{"id":5829,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5822,"mutability":"mutable","name":"publishers","nameLocation":"15434:10:9","nodeType":"VariableDeclaration","scope":5830,"src":"15417:27:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":5820,"name":"address","nodeType":"ElementaryTypeName","src":"15417:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5821,"nodeType":"ArrayTypeName","src":"15417:9:9","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":5825,"mutability":"mutable","name":"indexIds","nameLocation":"15478:8:9","nodeType":"VariableDeclaration","scope":5830,"src":"15462:24:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[]"},"typeName":{"baseType":{"id":5823,"name":"uint32","nodeType":"ElementaryTypeName","src":"15462:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":5824,"nodeType":"ArrayTypeName","src":"15462:8:9","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_storage_ptr","typeString":"uint32[]"}},"visibility":"internal"},{"constant":false,"id":5828,"mutability":"mutable","name":"unitsList","nameLocation":"15521:9:9","nodeType":"VariableDeclaration","scope":5830,"src":"15504:26:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint128_$dyn_memory_ptr","typeString":"uint128[]"},"typeName":{"baseType":{"id":5826,"name":"uint128","nodeType":"ElementaryTypeName","src":"15504:7:9","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":5827,"nodeType":"ArrayTypeName","src":"15504:9:9","typeDescriptions":{"typeIdentifier":"t_array$_t_uint128_$dyn_storage_ptr","typeString":"uint128[]"}},"visibility":"internal"}],"src":"15399:132:9"},"scope":5893,"src":"15234:298:9","stateMutability":"view","virtual":true,"visibility":"external"},{"documentation":{"id":5831,"nodeType":"StructuredDocumentation","src":"15538:633:9","text":" @dev Delete the subscription of an user\n @param token Super token address\n @param publisher The publisher of the index\n @param indexId Id of the index\n @param subscriber The subscriber's address\n @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n @custom:callbacks \n - if the subscriber called it\n - AgreementTerminated callback to the publsiher:\n - agreementId is for the subscription\n - if the publisher called it\n - AgreementTerminated callback to the subscriber:\n - agreementId is for the subscription"},"functionSelector":"2e5e74c6","id":5847,"implemented":false,"kind":"function","modifiers":[],"name":"deleteSubscription","nameLocation":"16185:18:9","nodeType":"FunctionDefinition","parameters":{"id":5843,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5834,"mutability":"mutable","name":"token","nameLocation":"16230:5:9","nodeType":"VariableDeclaration","scope":5847,"src":"16213:22:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"},"typeName":{"id":5833,"nodeType":"UserDefinedTypeName","pathNode":{"id":5832,"name":"ISuperfluidToken","nameLocations":["16213:16:9"],"nodeType":"IdentifierPath","referencedDeclaration":8014,"src":"16213:16:9"},"referencedDeclaration":8014,"src":"16213:16:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5836,"mutability":"mutable","name":"publisher","nameLocation":"16253:9:9","nodeType":"VariableDeclaration","scope":5847,"src":"16245:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5835,"name":"address","nodeType":"ElementaryTypeName","src":"16245:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5838,"mutability":"mutable","name":"indexId","nameLocation":"16279:7:9","nodeType":"VariableDeclaration","scope":5847,"src":"16272:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5837,"name":"uint32","nodeType":"ElementaryTypeName","src":"16272:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5840,"mutability":"mutable","name":"subscriber","nameLocation":"16304:10:9","nodeType":"VariableDeclaration","scope":5847,"src":"16296:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5839,"name":"address","nodeType":"ElementaryTypeName","src":"16296:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5842,"mutability":"mutable","name":"ctx","nameLocation":"16339:3:9","nodeType":"VariableDeclaration","scope":5847,"src":"16324:18:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":5841,"name":"bytes","nodeType":"ElementaryTypeName","src":"16324:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"16203:140:9"},"returnParameters":{"id":5846,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5845,"mutability":"mutable","name":"newCtx","nameLocation":"16418:6:9","nodeType":"VariableDeclaration","scope":5847,"src":"16405:19:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5844,"name":"bytes","nodeType":"ElementaryTypeName","src":"16405:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"16404:21:9"},"scope":5893,"src":"16176:250:9","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"documentation":{"id":5848,"nodeType":"StructuredDocumentation","src":"16432:495:9","text":" @dev Claim pending distributions\n @param token Super token address\n @param publisher The publisher of the index\n @param indexId Id of the index\n @param subscriber The subscriber's address\n @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n @custom:note The subscription should not be approved yet\n @custom:callbacks \n - AgreementUpdated callback to the publisher:\n - agreementId is for the subscription"},"functionSelector":"acafa1b8","id":5864,"implemented":false,"kind":"function","modifiers":[],"name":"claim","nameLocation":"16941:5:9","nodeType":"FunctionDefinition","parameters":{"id":5860,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5851,"mutability":"mutable","name":"token","nameLocation":"16973:5:9","nodeType":"VariableDeclaration","scope":5864,"src":"16956:22:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"},"typeName":{"id":5850,"nodeType":"UserDefinedTypeName","pathNode":{"id":5849,"name":"ISuperfluidToken","nameLocations":["16956:16:9"],"nodeType":"IdentifierPath","referencedDeclaration":8014,"src":"16956:16:9"},"referencedDeclaration":8014,"src":"16956:16:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5853,"mutability":"mutable","name":"publisher","nameLocation":"16996:9:9","nodeType":"VariableDeclaration","scope":5864,"src":"16988:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5852,"name":"address","nodeType":"ElementaryTypeName","src":"16988:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5855,"mutability":"mutable","name":"indexId","nameLocation":"17022:7:9","nodeType":"VariableDeclaration","scope":5864,"src":"17015:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5854,"name":"uint32","nodeType":"ElementaryTypeName","src":"17015:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5857,"mutability":"mutable","name":"subscriber","nameLocation":"17047:10:9","nodeType":"VariableDeclaration","scope":5864,"src":"17039:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5856,"name":"address","nodeType":"ElementaryTypeName","src":"17039:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5859,"mutability":"mutable","name":"ctx","nameLocation":"17082:3:9","nodeType":"VariableDeclaration","scope":5864,"src":"17067:18:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":5858,"name":"bytes","nodeType":"ElementaryTypeName","src":"17067:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"16946:140:9"},"returnParameters":{"id":5863,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5862,"mutability":"mutable","name":"newCtx","nameLocation":"17149:6:9","nodeType":"VariableDeclaration","scope":5864,"src":"17136:19:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5861,"name":"bytes","nodeType":"ElementaryTypeName","src":"17136:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"17135:21:9"},"scope":5893,"src":"16932:225:9","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"anonymous":false,"documentation":{"id":5865,"nodeType":"StructuredDocumentation","src":"17167:289:9","text":" @dev Index distribution claimed event\n @param token Super token address\n @param publisher Index publisher\n @param indexId The specified indexId\n @param subscriber The subscriber units updated\n @param amount The pending amount claimed"},"eventSelector":"467eccd248ef31c8bcef16d94856855799a8783aeef10f3759e43614059a6bb1","id":5878,"name":"IndexDistributionClaimed","nameLocation":"17467:24:9","nodeType":"EventDefinition","parameters":{"id":5877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5868,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"17526:5:9","nodeType":"VariableDeclaration","scope":5878,"src":"17501:30:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"},"typeName":{"id":5867,"nodeType":"UserDefinedTypeName","pathNode":{"id":5866,"name":"ISuperfluidToken","nameLocations":["17501:16:9"],"nodeType":"IdentifierPath","referencedDeclaration":8014,"src":"17501:16:9"},"referencedDeclaration":8014,"src":"17501:16:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5870,"indexed":true,"mutability":"mutable","name":"publisher","nameLocation":"17557:9:9","nodeType":"VariableDeclaration","scope":5878,"src":"17541:25:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5869,"name":"address","nodeType":"ElementaryTypeName","src":"17541:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5872,"indexed":true,"mutability":"mutable","name":"indexId","nameLocation":"17591:7:9","nodeType":"VariableDeclaration","scope":5878,"src":"17576:22:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5871,"name":"uint32","nodeType":"ElementaryTypeName","src":"17576:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5874,"indexed":false,"mutability":"mutable","name":"subscriber","nameLocation":"17616:10:9","nodeType":"VariableDeclaration","scope":5878,"src":"17608:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5873,"name":"address","nodeType":"ElementaryTypeName","src":"17608:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5876,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"17644:6:9","nodeType":"VariableDeclaration","scope":5878,"src":"17636:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5875,"name":"uint256","nodeType":"ElementaryTypeName","src":"17636:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17491:160:9"},"src":"17461:191:9"},{"anonymous":false,"documentation":{"id":5879,"nodeType":"StructuredDocumentation","src":"17662:296:9","text":" @dev Subscription distribution claimed event\n @param token Super token address\n @param subscriber The subscriber units updated\n @param publisher Index publisher\n @param indexId The specified indexId\n @param amount The pending amount claimed"},"eventSelector":"48a3d91d4a07e4982b081260e24f922bd33bb965882772d6de19c922c3eabdea","id":5892,"name":"SubscriptionDistributionClaimed","nameLocation":"17969:31:9","nodeType":"EventDefinition","parameters":{"id":5891,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5882,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"18035:5:9","nodeType":"VariableDeclaration","scope":5892,"src":"18010:30:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"},"typeName":{"id":5881,"nodeType":"UserDefinedTypeName","pathNode":{"id":5880,"name":"ISuperfluidToken","nameLocations":["18010:16:9"],"nodeType":"IdentifierPath","referencedDeclaration":8014,"src":"18010:16:9"},"referencedDeclaration":8014,"src":"18010:16:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5884,"indexed":true,"mutability":"mutable","name":"subscriber","nameLocation":"18066:10:9","nodeType":"VariableDeclaration","scope":5892,"src":"18050:26:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5883,"name":"address","nodeType":"ElementaryTypeName","src":"18050:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5886,"indexed":false,"mutability":"mutable","name":"publisher","nameLocation":"18094:9:9","nodeType":"VariableDeclaration","scope":5892,"src":"18086:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5885,"name":"address","nodeType":"ElementaryTypeName","src":"18086:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5888,"indexed":false,"mutability":"mutable","name":"indexId","nameLocation":"18120:7:9","nodeType":"VariableDeclaration","scope":5892,"src":"18113:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5887,"name":"uint32","nodeType":"ElementaryTypeName","src":"18113:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5890,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"18145:6:9","nodeType":"VariableDeclaration","scope":5892,"src":"18137:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5889,"name":"uint256","nodeType":"ElementaryTypeName","src":"18137:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18000:152:9"},"src":"17963:190:9"}],"scope":5894,"src":"1784:16372:9","usedErrors":[5498,5500,5502,5504,5506,5508,5510,5512,5514]}],"src":"35:18122:9"},"id":9},"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol":{"ast":{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol","exportedSymbols":{"BatchOperation":[6265],"ContextDefinitions":[6132],"FlowOperatorDefinitions":[6219],"SuperAppDefinitions":[6056],"SuperfluidGovernanceConfigs":[6366]},"id":6367,"license":"AGPLv3","nodeType":"SourceUnit","nodes":[{"id":5895,"literals":["solidity",">=","0.8",".4"],"nodeType":"PragmaDirective","src":"35:25:10"},{"abstract":false,"baseContracts":[],"canonicalName":"SuperAppDefinitions","contractDependencies":[],"contractKind":"library","documentation":{"id":5896,"nodeType":"StructuredDocumentation","src":"62:69:10","text":" @title Super app definitions library\n @author Superfluid"},"fullyImplemented":true,"id":6056,"linearizedBaseContracts":[6056],"name":"SuperAppDefinitions","nameLocation":"140:19:10","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":5899,"mutability":"constant","name":"APP_LEVEL_MASK","nameLocation":"615:14:10","nodeType":"VariableDeclaration","scope":6056,"src":"589:47:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5897,"name":"uint256","nodeType":"ElementaryTypeName","src":"589:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30784646","id":5898,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"632:4:10","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"0xFF"},"visibility":"internal"},{"constant":true,"id":5904,"mutability":"constant","name":"APP_LEVEL_FINAL","nameLocation":"760:15:10","nodeType":"VariableDeclaration","scope":6056,"src":"734:50:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5900,"name":"uint256","nodeType":"ElementaryTypeName","src":"734:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"id":5903,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":5901,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"778:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"30","id":5902,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"783:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"778:6:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}},"visibility":"internal"},{"constant":true,"id":5909,"mutability":"constant","name":"APP_LEVEL_SECOND","nameLocation":"915:16:10","nodeType":"VariableDeclaration","scope":6056,"src":"889:51:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5905,"name":"uint256","nodeType":"ElementaryTypeName","src":"889:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"id":5908,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":5906,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"934:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"31","id":5907,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"939:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"934:6:10","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}},"visibility":"internal"},{"body":{"id":5923,"nodeType":"Block","src":"1026:58:10","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5918,"name":"configWord","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5911,"src":"1049:10:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":5919,"name":"APP_LEVEL_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5899,"src":"1062:14:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1049:27:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5917,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1043:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":5916,"name":"uint8","nodeType":"ElementaryTypeName","src":"1043:5:10","typeDescriptions":{}}},"id":5921,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1043:34:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":5915,"id":5922,"nodeType":"Return","src":"1036:41:10"}]},"id":5924,"implemented":true,"kind":"function","modifiers":[],"name":"getAppCallbackLevel","nameLocation":"956:19:10","nodeType":"FunctionDefinition","parameters":{"id":5912,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5911,"mutability":"mutable","name":"configWord","nameLocation":"984:10:10","nodeType":"VariableDeclaration","scope":5924,"src":"976:18:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5910,"name":"uint256","nodeType":"ElementaryTypeName","src":"976:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"975:20:10"},"returnParameters":{"id":5915,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5914,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5924,"src":"1019:5:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":5913,"name":"uint8","nodeType":"ElementaryTypeName","src":"1019:5:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"1018:7:10"},"scope":6056,"src":"947:137:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"constant":true,"id":5929,"mutability":"constant","name":"APP_JAIL_BIT","nameLocation":"1116:12:10","nodeType":"VariableDeclaration","scope":6056,"src":"1090:48:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5925,"name":"uint256","nodeType":"ElementaryTypeName","src":"1090:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_rational_32768_by_1","typeString":"int_const 32768"},"id":5928,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":5926,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1131:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3135","id":5927,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1136:2:10","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"15"},"src":"1131:7:10","typeDescriptions":{"typeIdentifier":"t_rational_32768_by_1","typeString":"int_const 32768"}},"visibility":"internal"},{"body":{"id":5944,"nodeType":"Block","src":"1214:75:10","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5936,"name":"configWord","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5931,"src":"1232:10:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"expression":{"id":5937,"name":"SuperAppDefinitions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6056,"src":"1245:19:10","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SuperAppDefinitions_$6056_$","typeString":"type(library SuperAppDefinitions)"}},"id":5938,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1265:12:10","memberName":"APP_JAIL_BIT","nodeType":"MemberAccess","referencedDeclaration":5929,"src":"1245:32:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1232:45:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5940,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1231:47:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":5941,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1281:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1231:51:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":5935,"id":5943,"nodeType":"Return","src":"1224:58:10"}]},"id":5945,"implemented":true,"kind":"function","modifiers":[],"name":"isAppJailed","nameLocation":"1153:11:10","nodeType":"FunctionDefinition","parameters":{"id":5932,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5931,"mutability":"mutable","name":"configWord","nameLocation":"1173:10:10","nodeType":"VariableDeclaration","scope":5945,"src":"1165:18:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5930,"name":"uint256","nodeType":"ElementaryTypeName","src":"1165:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1164:20:10"},"returnParameters":{"id":5935,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5934,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5945,"src":"1208:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5933,"name":"bool","nodeType":"ElementaryTypeName","src":"1208:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1207:6:10"},"scope":6056,"src":"1144:145:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"constant":true,"id":5950,"mutability":"constant","name":"AGREEMENT_CALLBACK_NOOP_BITMASKS","nameLocation":"1522:32:10","nodeType":"VariableDeclaration","scope":6056,"src":"1496:71:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5946,"name":"uint256","nodeType":"ElementaryTypeName","src":"1496:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_rational_1095216660480_by_1","typeString":"int_const 1095216660480"},"id":5949,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"30784646","id":5947,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1557:4:10","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"0xFF"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3332","id":5948,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1565:2:10","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"1557:10:10","typeDescriptions":{"typeIdentifier":"t_rational_1095216660480_by_1","typeString":"int_const 1095216660480"}},"visibility":"internal"},{"constant":true,"id":5958,"mutability":"constant","name":"BEFORE_AGREEMENT_CREATED_NOOP","nameLocation":"1599:29:10","nodeType":"VariableDeclaration","scope":6056,"src":"1573:71:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5951,"name":"uint256","nodeType":"ElementaryTypeName","src":"1573:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"},"id":5957,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":5952,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1631:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"id":5955,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3332","id":5953,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1637:2:10","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"30","id":5954,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1642:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1637:6:10","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}}],"id":5956,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1636:8:10","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}},"src":"1631:13:10","typeDescriptions":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"}},"visibility":"internal"},{"constant":true,"id":5966,"mutability":"constant","name":"AFTER_AGREEMENT_CREATED_NOOP","nameLocation":"1676:28:10","nodeType":"VariableDeclaration","scope":6056,"src":"1650:70:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5959,"name":"uint256","nodeType":"ElementaryTypeName","src":"1650:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_rational_8589934592_by_1","typeString":"int_const 8589934592"},"id":5965,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":5960,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1707:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_33_by_1","typeString":"int_const 33"},"id":5963,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3332","id":5961,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1713:2:10","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":5962,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1718:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1713:6:10","typeDescriptions":{"typeIdentifier":"t_rational_33_by_1","typeString":"int_const 33"}}],"id":5964,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1712:8:10","typeDescriptions":{"typeIdentifier":"t_rational_33_by_1","typeString":"int_const 33"}},"src":"1707:13:10","typeDescriptions":{"typeIdentifier":"t_rational_8589934592_by_1","typeString":"int_const 8589934592"}},"visibility":"internal"},{"constant":true,"id":5974,"mutability":"constant","name":"BEFORE_AGREEMENT_UPDATED_NOOP","nameLocation":"1752:29:10","nodeType":"VariableDeclaration","scope":6056,"src":"1726:71:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5967,"name":"uint256","nodeType":"ElementaryTypeName","src":"1726:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_rational_17179869184_by_1","typeString":"int_const 17179869184"},"id":5973,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":5968,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1784:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_34_by_1","typeString":"int_const 34"},"id":5971,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3332","id":5969,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1790:2:10","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":5970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1795:1:10","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"1790:6:10","typeDescriptions":{"typeIdentifier":"t_rational_34_by_1","typeString":"int_const 34"}}],"id":5972,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1789:8:10","typeDescriptions":{"typeIdentifier":"t_rational_34_by_1","typeString":"int_const 34"}},"src":"1784:13:10","typeDescriptions":{"typeIdentifier":"t_rational_17179869184_by_1","typeString":"int_const 17179869184"}},"visibility":"internal"},{"constant":true,"id":5982,"mutability":"constant","name":"AFTER_AGREEMENT_UPDATED_NOOP","nameLocation":"1829:28:10","nodeType":"VariableDeclaration","scope":6056,"src":"1803:70:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5975,"name":"uint256","nodeType":"ElementaryTypeName","src":"1803:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_rational_34359738368_by_1","typeString":"int_const 34359738368"},"id":5981,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":5976,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1860:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_35_by_1","typeString":"int_const 35"},"id":5979,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3332","id":5977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1866:2:10","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"33","id":5978,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1871:1:10","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"1866:6:10","typeDescriptions":{"typeIdentifier":"t_rational_35_by_1","typeString":"int_const 35"}}],"id":5980,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1865:8:10","typeDescriptions":{"typeIdentifier":"t_rational_35_by_1","typeString":"int_const 35"}},"src":"1860:13:10","typeDescriptions":{"typeIdentifier":"t_rational_34359738368_by_1","typeString":"int_const 34359738368"}},"visibility":"internal"},{"constant":true,"id":5990,"mutability":"constant","name":"BEFORE_AGREEMENT_TERMINATED_NOOP","nameLocation":"1905:32:10","nodeType":"VariableDeclaration","scope":6056,"src":"1879:74:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5983,"name":"uint256","nodeType":"ElementaryTypeName","src":"1879:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_rational_68719476736_by_1","typeString":"int_const 68719476736"},"id":5989,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":5984,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1940:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"id":5987,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3332","id":5985,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1946:2:10","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"34","id":5986,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1951:1:10","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"1946:6:10","typeDescriptions":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"}}],"id":5988,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1945:8:10","typeDescriptions":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"}},"src":"1940:13:10","typeDescriptions":{"typeIdentifier":"t_rational_68719476736_by_1","typeString":"int_const 68719476736"}},"visibility":"internal"},{"constant":true,"id":5998,"mutability":"constant","name":"AFTER_AGREEMENT_TERMINATED_NOOP","nameLocation":"1985:31:10","nodeType":"VariableDeclaration","scope":6056,"src":"1959:73:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5991,"name":"uint256","nodeType":"ElementaryTypeName","src":"1959:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_rational_137438953472_by_1","typeString":"int_const 137438953472"},"id":5997,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":5992,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2019:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_37_by_1","typeString":"int_const 37"},"id":5995,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3332","id":5993,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2025:2:10","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"35","id":5994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2030:1:10","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"2025:6:10","typeDescriptions":{"typeIdentifier":"t_rational_37_by_1","typeString":"int_const 37"}}],"id":5996,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2024:8:10","typeDescriptions":{"typeIdentifier":"t_rational_37_by_1","typeString":"int_const 37"}},"src":"2019:13:10","typeDescriptions":{"typeIdentifier":"t_rational_137438953472_by_1","typeString":"int_const 137438953472"}},"visibility":"internal"},{"constant":true,"id":6001,"mutability":"constant","name":"APP_RULE_REGISTRATION_ONLY_IN_CONSTRUCTOR","nameLocation":"2250:41:10","nodeType":"VariableDeclaration","scope":6056,"src":"2224:71:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5999,"name":"uint256","nodeType":"ElementaryTypeName","src":"2224:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31","id":6000,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2294:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"internal"},{"constant":true,"id":6004,"mutability":"constant","name":"APP_RULE_NO_REGISTRATION_FOR_EOA","nameLocation":"2327:32:10","nodeType":"VariableDeclaration","scope":6056,"src":"2301:62:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6002,"name":"uint256","nodeType":"ElementaryTypeName","src":"2301:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"32","id":6003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2362:1:10","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"internal"},{"constant":true,"id":6007,"mutability":"constant","name":"APP_RULE_NO_REVERT_ON_TERMINATION_CALLBACK","nameLocation":"2395:42:10","nodeType":"VariableDeclaration","scope":6056,"src":"2369:73:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6005,"name":"uint256","nodeType":"ElementaryTypeName","src":"2369:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3130","id":6006,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2440:2:10","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"visibility":"internal"},{"constant":true,"id":6010,"mutability":"constant","name":"APP_RULE_NO_CRITICAL_SENDER_ACCOUNT","nameLocation":"2474:35:10","nodeType":"VariableDeclaration","scope":6056,"src":"2448:66:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6008,"name":"uint256","nodeType":"ElementaryTypeName","src":"2448:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3131","id":6009,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2512:2:10","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"11"},"visibility":"internal"},{"constant":true,"id":6013,"mutability":"constant","name":"APP_RULE_NO_CRITICAL_RECEIVER_ACCOUNT","nameLocation":"2546:37:10","nodeType":"VariableDeclaration","scope":6056,"src":"2520:68:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6011,"name":"uint256","nodeType":"ElementaryTypeName","src":"2520:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3132","id":6012,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2586:2:10","typeDescriptions":{"typeIdentifier":"t_rational_12_by_1","typeString":"int_const 12"},"value":"12"},"visibility":"internal"},{"constant":true,"id":6016,"mutability":"constant","name":"APP_RULE_CTX_IS_READONLY","nameLocation":"2620:24:10","nodeType":"VariableDeclaration","scope":6056,"src":"2594:55:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6014,"name":"uint256","nodeType":"ElementaryTypeName","src":"2594:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3230","id":6015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2647:2:10","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"internal"},{"constant":true,"id":6019,"mutability":"constant","name":"APP_RULE_CTX_IS_NOT_CLEAN","nameLocation":"2681:25:10","nodeType":"VariableDeclaration","scope":6056,"src":"2655:56:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6017,"name":"uint256","nodeType":"ElementaryTypeName","src":"2655:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3231","id":6018,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2709:2:10","typeDescriptions":{"typeIdentifier":"t_rational_21_by_1","typeString":"int_const 21"},"value":"21"},"visibility":"internal"},{"constant":true,"id":6022,"mutability":"constant","name":"APP_RULE_CTX_IS_MALFORMATED","nameLocation":"2743:27:10","nodeType":"VariableDeclaration","scope":6056,"src":"2717:58:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6020,"name":"uint256","nodeType":"ElementaryTypeName","src":"2717:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3232","id":6021,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2773:2:10","typeDescriptions":{"typeIdentifier":"t_rational_22_by_1","typeString":"int_const 22"},"value":"22"},"visibility":"internal"},{"constant":true,"id":6025,"mutability":"constant","name":"APP_RULE_COMPOSITE_APP_IS_NOT_WHITELISTED","nameLocation":"2807:41:10","nodeType":"VariableDeclaration","scope":6056,"src":"2781:72:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6023,"name":"uint256","nodeType":"ElementaryTypeName","src":"2781:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3330","id":6024,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2851:2:10","typeDescriptions":{"typeIdentifier":"t_rational_30_by_1","typeString":"int_const 30"},"value":"30"},"visibility":"internal"},{"constant":true,"id":6028,"mutability":"constant","name":"APP_RULE_COMPOSITE_APP_IS_JAILED","nameLocation":"2885:32:10","nodeType":"VariableDeclaration","scope":6056,"src":"2859:63:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6026,"name":"uint256","nodeType":"ElementaryTypeName","src":"2859:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3331","id":6027,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2920:2:10","typeDescriptions":{"typeIdentifier":"t_rational_31_by_1","typeString":"int_const 31"},"value":"31"},"visibility":"internal"},{"constant":true,"id":6031,"mutability":"constant","name":"APP_RULE_MAX_APP_LEVEL_REACHED","nameLocation":"2954:30:10","nodeType":"VariableDeclaration","scope":6056,"src":"2928:61:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6029,"name":"uint256","nodeType":"ElementaryTypeName","src":"2928:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3430","id":6030,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2987:2:10","typeDescriptions":{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},"value":"40"},"visibility":"internal"},{"body":{"id":6054,"nodeType":"Block","src":"3182:120:10","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6052,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6046,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6038,"name":"configWord","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6033,"src":"3200:10:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":6045,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"3213:67:10","subExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6043,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6041,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":6039,"name":"APP_LEVEL_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5899,"src":"3215:14:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"id":6040,"name":"APP_JAIL_BIT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5929,"src":"3232:12:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3215:29:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"id":6042,"name":"AGREEMENT_CALLBACK_NOOP_BITMASKS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5950,"src":"3247:32:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3215:64:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6044,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3214:66:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3200:80:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6047,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3199:82:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":6050,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3293:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6049,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3285:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6048,"name":"uint256","nodeType":"ElementaryTypeName","src":"3285:7:10","typeDescriptions":{}}},"id":6051,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3285:10:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3199:96:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6037,"id":6053,"nodeType":"Return","src":"3192:103:10"}]},"id":6055,"implemented":true,"kind":"function","modifiers":[],"name":"isConfigWordClean","nameLocation":"3115:17:10","nodeType":"FunctionDefinition","parameters":{"id":6034,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6033,"mutability":"mutable","name":"configWord","nameLocation":"3141:10:10","nodeType":"VariableDeclaration","scope":6055,"src":"3133:18:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6032,"name":"uint256","nodeType":"ElementaryTypeName","src":"3133:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3132:20:10"},"returnParameters":{"id":6037,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6036,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6055,"src":"3176:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6035,"name":"bool","nodeType":"ElementaryTypeName","src":"3176:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3175:6:10"},"scope":6056,"src":"3106:196:10","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":6367,"src":"132:3172:10","usedErrors":[]},{"abstract":false,"baseContracts":[],"canonicalName":"ContextDefinitions","contractDependencies":[],"contractKind":"library","documentation":{"id":6057,"nodeType":"StructuredDocumentation","src":"3306:67:10","text":" @title Context definitions library\n @author Superfluid"},"fullyImplemented":true,"id":6132,"linearizedBaseContracts":[6132],"name":"ContextDefinitions","nameLocation":"3382:18:10","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":6060,"mutability":"constant","name":"CALL_INFO_APP_LEVEL_MASK","nameLocation":"3629:24:10","nodeType":"VariableDeclaration","scope":6132,"src":"3603:57:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6058,"name":"uint256","nodeType":"ElementaryTypeName","src":"3603:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30784646","id":6059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3656:4:10","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"0xFF"},"visibility":"internal"},{"constant":true,"id":6063,"mutability":"constant","name":"CALL_INFO_CALL_TYPE_SHIFT","nameLocation":"3710:25:10","nodeType":"VariableDeclaration","scope":6132,"src":"3684:56:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6061,"name":"uint256","nodeType":"ElementaryTypeName","src":"3684:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3332","id":6062,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3738:2:10","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"visibility":"internal"},{"constant":true,"id":6068,"mutability":"constant","name":"CALL_INFO_CALL_TYPE_MASK","nameLocation":"3772:24:10","nodeType":"VariableDeclaration","scope":6132,"src":"3746:85:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6064,"name":"uint256","nodeType":"ElementaryTypeName","src":"3746:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6067,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"307846","id":6065,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3799:3:10","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xF"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":6066,"name":"CALL_INFO_CALL_TYPE_SHIFT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6063,"src":"3806:25:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3799:32:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":true,"id":6071,"mutability":"constant","name":"CALL_INFO_CALL_TYPE_AGREEMENT","nameLocation":"3861:29:10","nodeType":"VariableDeclaration","scope":6132,"src":"3837:57:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6069,"name":"uint8","nodeType":"ElementaryTypeName","src":"3837:5:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"31","id":6070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3893:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"internal"},{"constant":true,"id":6074,"mutability":"constant","name":"CALL_INFO_CALL_TYPE_APP_ACTION","nameLocation":"3924:30:10","nodeType":"VariableDeclaration","scope":6132,"src":"3900:58:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6072,"name":"uint8","nodeType":"ElementaryTypeName","src":"3900:5:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"32","id":6073,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3957:1:10","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"internal"},{"constant":true,"id":6077,"mutability":"constant","name":"CALL_INFO_CALL_TYPE_APP_CALLBACK","nameLocation":"3988:32:10","nodeType":"VariableDeclaration","scope":6132,"src":"3964:60:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6075,"name":"uint8","nodeType":"ElementaryTypeName","src":"3964:5:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"33","id":6076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4023:1:10","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"visibility":"internal"},{"body":{"id":6107,"nodeType":"Block","src":"4156:172:10","statements":[{"expression":{"id":6093,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6086,"name":"appCallbackLevel","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6082,"src":"4166:16:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6091,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6089,"name":"callInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6079,"src":"4191:8:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":6090,"name":"CALL_INFO_APP_LEVEL_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6060,"src":"4202:24:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4191:35:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6088,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4185:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":6087,"name":"uint8","nodeType":"ElementaryTypeName","src":"4185:5:10","typeDescriptions":{}}},"id":6092,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4185:42:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4166:61:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":6094,"nodeType":"ExpressionStatement","src":"4166:61:10"},{"expression":{"id":6105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6095,"name":"callType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6084,"src":"4237:8:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6098,"name":"callInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6079,"src":"4255:8:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":6099,"name":"CALL_INFO_CALL_TYPE_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6068,"src":"4266:24:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4255:35:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6101,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4254:37:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":6102,"name":"CALL_INFO_CALL_TYPE_SHIFT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6063,"src":"4295:25:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4254:66:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6097,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4248:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":6096,"name":"uint8","nodeType":"ElementaryTypeName","src":"4248:5:10","typeDescriptions":{}}},"id":6104,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4248:73:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4237:84:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":6106,"nodeType":"ExpressionStatement","src":"4237:84:10"}]},"id":6108,"implemented":true,"kind":"function","modifiers":[],"name":"decodeCallInfo","nameLocation":"4040:14:10","nodeType":"FunctionDefinition","parameters":{"id":6080,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6079,"mutability":"mutable","name":"callInfo","nameLocation":"4063:8:10","nodeType":"VariableDeclaration","scope":6108,"src":"4055:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6078,"name":"uint256","nodeType":"ElementaryTypeName","src":"4055:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4054:18:10"},"returnParameters":{"id":6085,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6082,"mutability":"mutable","name":"appCallbackLevel","nameLocation":"4118:16:10","nodeType":"VariableDeclaration","scope":6108,"src":"4112:22:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6081,"name":"uint8","nodeType":"ElementaryTypeName","src":"4112:5:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":6084,"mutability":"mutable","name":"callType","nameLocation":"4142:8:10","nodeType":"VariableDeclaration","scope":6108,"src":"4136:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6083,"name":"uint8","nodeType":"ElementaryTypeName","src":"4136:5:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"4111:40:10"},"scope":6132,"src":"4031:297:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6130,"nodeType":"Block","src":"4459:100:10","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":6119,"name":"appCallbackLevel","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6110,"src":"4484:16:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":6118,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4476:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6117,"name":"uint256","nodeType":"ElementaryTypeName","src":"4476:7:10","typeDescriptions":{}}},"id":6120,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4476:25:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":6123,"name":"callType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6112,"src":"4513:8:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":6122,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4505:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6121,"name":"uint256","nodeType":"ElementaryTypeName","src":"4505:7:10","typeDescriptions":{}}},"id":6124,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4505:17:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":6125,"name":"CALL_INFO_CALL_TYPE_SHIFT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6063,"src":"4526:25:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4505:46:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6127,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4504:48:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4476:76:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6116,"id":6129,"nodeType":"Return","src":"4469:83:10"}]},"id":6131,"implemented":true,"kind":"function","modifiers":[],"name":"encodeCallInfo","nameLocation":"4343:14:10","nodeType":"FunctionDefinition","parameters":{"id":6113,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6110,"mutability":"mutable","name":"appCallbackLevel","nameLocation":"4364:16:10","nodeType":"VariableDeclaration","scope":6131,"src":"4358:22:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6109,"name":"uint8","nodeType":"ElementaryTypeName","src":"4358:5:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":6112,"mutability":"mutable","name":"callType","nameLocation":"4388:8:10","nodeType":"VariableDeclaration","scope":6131,"src":"4382:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6111,"name":"uint8","nodeType":"ElementaryTypeName","src":"4382:5:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"4357:40:10"},"returnParameters":{"id":6116,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6115,"mutability":"mutable","name":"callInfo","nameLocation":"4445:8:10","nodeType":"VariableDeclaration","scope":6131,"src":"4437:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6114,"name":"uint256","nodeType":"ElementaryTypeName","src":"4437:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4436:18:10"},"scope":6132,"src":"4334:225:10","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":6367,"src":"3374:1188:10","usedErrors":[]},{"abstract":false,"baseContracts":[],"canonicalName":"FlowOperatorDefinitions","contractDependencies":[],"contractKind":"library","documentation":{"id":6133,"nodeType":"StructuredDocumentation","src":"4564:74:10","text":" @title Flow Operator definitions library\n @author Superfluid"},"fullyImplemented":true,"id":6219,"linearizedBaseContracts":[6219],"name":"FlowOperatorDefinitions","nameLocation":"4648:23:10","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":6141,"mutability":"constant","name":"AUTHORIZE_FLOW_OPERATOR_CREATE","nameLocation":"4702:30:10","nodeType":"VariableDeclaration","scope":6219,"src":"4678:70:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6134,"name":"uint8","nodeType":"ElementaryTypeName","src":"4678:5:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":6140,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"hexValue":"31","id":6137,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4741:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":6136,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4735:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":6135,"name":"uint8","nodeType":"ElementaryTypeName","src":"4735:5:10","typeDescriptions":{}}},"id":6138,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4735:8:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"30","id":6139,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4747:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4735:13:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":true,"id":6149,"mutability":"constant","name":"AUTHORIZE_FLOW_OPERATOR_UPDATE","nameLocation":"4778:30:10","nodeType":"VariableDeclaration","scope":6219,"src":"4754:70:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6142,"name":"uint8","nodeType":"ElementaryTypeName","src":"4754:5:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":6148,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"hexValue":"31","id":6145,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4817:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":6144,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4811:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":6143,"name":"uint8","nodeType":"ElementaryTypeName","src":"4811:5:10","typeDescriptions":{}}},"id":6146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4811:8:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"31","id":6147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4823:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4811:13:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":true,"id":6157,"mutability":"constant","name":"AUTHORIZE_FLOW_OPERATOR_DELETE","nameLocation":"4854:30:10","nodeType":"VariableDeclaration","scope":6219,"src":"4830:70:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6150,"name":"uint8","nodeType":"ElementaryTypeName","src":"4830:5:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":6156,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"hexValue":"31","id":6153,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4893:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":6152,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4887:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":6151,"name":"uint8","nodeType":"ElementaryTypeName","src":"4887:5:10","typeDescriptions":{}}},"id":6154,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4887:8:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"32","id":6155,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4899:1:10","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"4887:13:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":true,"id":6164,"mutability":"constant","name":"AUTHORIZE_FULL_CONTROL","nameLocation":"4930:22:10","nodeType":"VariableDeclaration","scope":6219,"src":"4906:153:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6158,"name":"uint8","nodeType":"ElementaryTypeName","src":"4906:5:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":6163,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":6161,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":6159,"name":"AUTHORIZE_FLOW_OPERATOR_CREATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6141,"src":"4963:30:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"id":6160,"name":"AUTHORIZE_FLOW_OPERATOR_UPDATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6149,"src":"4996:30:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4963:63:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"id":6162,"name":"AUTHORIZE_FLOW_OPERATOR_DELETE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6157,"src":"5029:30:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4963:96:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":true,"id":6174,"mutability":"constant","name":"REVOKE_FLOW_OPERATOR_CREATE","nameLocation":"5089:27:10","nodeType":"VariableDeclaration","scope":6219,"src":"5065:70:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6165,"name":"uint8","nodeType":"ElementaryTypeName","src":"5065:5:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"id":6173,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"5119:16:10","subExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":6171,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"hexValue":"31","id":6168,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5127:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":6167,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5121:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":6166,"name":"uint8","nodeType":"ElementaryTypeName","src":"5121:5:10","typeDescriptions":{}}},"id":6169,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5121:8:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"30","id":6170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5133:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5121:13:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":6172,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5120:15:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":true,"id":6184,"mutability":"constant","name":"REVOKE_FLOW_OPERATOR_UPDATE","nameLocation":"5165:27:10","nodeType":"VariableDeclaration","scope":6219,"src":"5141:70:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6175,"name":"uint8","nodeType":"ElementaryTypeName","src":"5141:5:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"id":6183,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"5195:16:10","subExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":6181,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"hexValue":"31","id":6178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5203:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":6177,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5197:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":6176,"name":"uint8","nodeType":"ElementaryTypeName","src":"5197:5:10","typeDescriptions":{}}},"id":6179,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5197:8:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"31","id":6180,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5209:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5197:13:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":6182,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5196:15:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":true,"id":6194,"mutability":"constant","name":"REVOKE_FLOW_OPERATOR_DELETE","nameLocation":"5241:27:10","nodeType":"VariableDeclaration","scope":6219,"src":"5217:70:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6185,"name":"uint8","nodeType":"ElementaryTypeName","src":"5217:5:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"id":6193,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"5271:16:10","subExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":6191,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"hexValue":"31","id":6188,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5279:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":6187,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5273:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":6186,"name":"uint8","nodeType":"ElementaryTypeName","src":"5273:5:10","typeDescriptions":{}}},"id":6189,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5273:8:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"32","id":6190,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5285:1:10","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"5273:13:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":6192,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5272:15:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"body":{"id":6217,"nodeType":"Block","src":"5370:209:10","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":6215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":6209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6201,"name":"permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6196,"src":"5401:11:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":6208,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"5415:131:10","subExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":6206,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":6204,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":6202,"name":"AUTHORIZE_FLOW_OPERATOR_CREATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6141,"src":"5417:30:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"id":6203,"name":"AUTHORIZE_FLOW_OPERATOR_UPDATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6149,"src":"5466:30:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"5417:79:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"id":6205,"name":"AUTHORIZE_FLOW_OPERATOR_DELETE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6157,"src":"5515:30:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"5417:128:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":6207,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5416:130:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"5401:145:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":6210,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5387:173:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":6213,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5570:1:10","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6212,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5564:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":6211,"name":"uint8","nodeType":"ElementaryTypeName","src":"5564:5:10","typeDescriptions":{}}},"id":6214,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5564:8:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"5387:185:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6200,"id":6216,"nodeType":"Return","src":"5380:192:10"}]},"id":6218,"implemented":true,"kind":"function","modifiers":[],"name":"isPermissionsClean","nameLocation":"5303:18:10","nodeType":"FunctionDefinition","parameters":{"id":6197,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6196,"mutability":"mutable","name":"permissions","nameLocation":"5328:11:10","nodeType":"VariableDeclaration","scope":6218,"src":"5322:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6195,"name":"uint8","nodeType":"ElementaryTypeName","src":"5322:5:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"5321:19:10"},"returnParameters":{"id":6200,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6199,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6218,"src":"5364:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6198,"name":"bool","nodeType":"ElementaryTypeName","src":"5364:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5363:6:10"},"scope":6219,"src":"5294:285:10","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":6367,"src":"4640:942:10","usedErrors":[]},{"abstract":false,"baseContracts":[],"canonicalName":"BatchOperation","contractDependencies":[],"contractKind":"library","documentation":{"id":6220,"nodeType":"StructuredDocumentation","src":"5584:63:10","text":" @title Batch operation library\n @author Superfluid"},"fullyImplemented":true,"id":6265,"linearizedBaseContracts":[6265],"name":"BatchOperation","nameLocation":"5656:14:10","nodeType":"ContractDefinition","nodes":[{"constant":true,"documentation":{"id":6221,"nodeType":"StructuredDocumentation","src":"5677:200:10","text":" @dev ERC20.approve batch operation type\n Call spec:\n ISuperToken(target).operationApprove(\n abi.decode(data, (address spender, uint256 amount))\n )"},"id":6224,"mutability":"constant","name":"OPERATION_TYPE_ERC20_APPROVE","nameLocation":"5907:28:10","nodeType":"VariableDeclaration","scope":6265,"src":"5882:57:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6222,"name":"uint32","nodeType":"ElementaryTypeName","src":"5882:6:10","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":{"hexValue":"31","id":6223,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5938:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"internal"},{"constant":true,"documentation":{"id":6225,"nodeType":"StructuredDocumentation","src":"5945:227:10","text":" @dev ERC20.transferFrom batch operation type\n Call spec:\n ISuperToken(target).operationTransferFrom(\n abi.decode(data, (address sender, address recipient, uint256 amount)\n )"},"id":6228,"mutability":"constant","name":"OPERATION_TYPE_ERC20_TRANSFER_FROM","nameLocation":"6202:34:10","nodeType":"VariableDeclaration","scope":6265,"src":"6177:63:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6226,"name":"uint32","nodeType":"ElementaryTypeName","src":"6177:6:10","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":{"hexValue":"32","id":6227,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6239:1:10","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"internal"},{"constant":true,"documentation":{"id":6229,"nodeType":"StructuredDocumentation","src":"6246:212:10","text":" @dev ERC777.send batch operation type\n Call spec:\n ISuperToken(target).operationSend(\n abi.decode(data, (address recipient, uint256 amount, bytes userData)\n )"},"id":6232,"mutability":"constant","name":"OPERATION_TYPE_ERC777_SEND","nameLocation":"6488:26:10","nodeType":"VariableDeclaration","scope":6265,"src":"6463:55:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6230,"name":"uint32","nodeType":"ElementaryTypeName","src":"6463:6:10","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":{"hexValue":"33","id":6231,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6517:1:10","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"visibility":"internal"},{"constant":true,"documentation":{"id":6233,"nodeType":"StructuredDocumentation","src":"6524:241:10","text":" @dev ERC20.increaseAllowance batch operation type\n Call spec:\n ISuperToken(target).operationIncreaseAllowance(\n abi.decode(data, (address account, address spender, uint256 addedValue))\n )"},"id":6236,"mutability":"constant","name":"OPERATION_TYPE_ERC20_INCREASE_ALLOWANCE","nameLocation":"6795:39:10","nodeType":"VariableDeclaration","scope":6265,"src":"6770:68:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6234,"name":"uint32","nodeType":"ElementaryTypeName","src":"6770:6:10","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":{"hexValue":"34","id":6235,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6837:1:10","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"visibility":"internal"},{"constant":true,"documentation":{"id":6237,"nodeType":"StructuredDocumentation","src":"6844:246:10","text":" @dev ERC20.decreaseAllowance batch operation type\n Call spec:\n ISuperToken(target).operationDecreaseAllowance(\n abi.decode(data, (address account, address spender, uint256 subtractedValue))\n )"},"id":6240,"mutability":"constant","name":"OPERATION_TYPE_ERC20_DECREASE_ALLOWANCE","nameLocation":"7120:39:10","nodeType":"VariableDeclaration","scope":6265,"src":"7095:68:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6238,"name":"uint32","nodeType":"ElementaryTypeName","src":"7095:6:10","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":{"hexValue":"35","id":6239,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7162:1:10","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"visibility":"internal"},{"constant":true,"documentation":{"id":6241,"nodeType":"StructuredDocumentation","src":"7169:187:10","text":" @dev SuperToken.upgrade batch operation type\n Call spec:\n ISuperToken(target).operationUpgrade(\n abi.decode(data, (uint256 amount)\n )"},"id":6246,"mutability":"constant","name":"OPERATION_TYPE_SUPERTOKEN_UPGRADE","nameLocation":"7386:33:10","nodeType":"VariableDeclaration","scope":6265,"src":"7361:68:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6242,"name":"uint32","nodeType":"ElementaryTypeName","src":"7361:6:10","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":{"commonType":{"typeIdentifier":"t_rational_101_by_1","typeString":"int_const 101"},"id":6245,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":6243,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7422:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"313030","id":6244,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7426:3:10","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"7422:7:10","typeDescriptions":{"typeIdentifier":"t_rational_101_by_1","typeString":"int_const 101"}},"visibility":"internal"},{"constant":true,"documentation":{"id":6247,"nodeType":"StructuredDocumentation","src":"7435:191:10","text":" @dev SuperToken.downgrade batch operation type\n Call spec:\n ISuperToken(target).operationDowngrade(\n abi.decode(data, (uint256 amount)\n )"},"id":6252,"mutability":"constant","name":"OPERATION_TYPE_SUPERTOKEN_DOWNGRADE","nameLocation":"7656:35:10","nodeType":"VariableDeclaration","scope":6265,"src":"7631:70:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6248,"name":"uint32","nodeType":"ElementaryTypeName","src":"7631:6:10","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":{"commonType":{"typeIdentifier":"t_rational_102_by_1","typeString":"int_const 102"},"id":6251,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":6249,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7694:1:10","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"313030","id":6250,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7698:3:10","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"7694:7:10","typeDescriptions":{"typeIdentifier":"t_rational_102_by_1","typeString":"int_const 102"}},"visibility":"internal"},{"constant":true,"documentation":{"id":6253,"nodeType":"StructuredDocumentation","src":"7707:223:10","text":" @dev Superfluid.callAgreement batch operation type\n Call spec:\n callAgreement(\n ISuperAgreement(target)),\n abi.decode(data, (bytes callData, bytes userData)\n )"},"id":6258,"mutability":"constant","name":"OPERATION_TYPE_SUPERFLUID_CALL_AGREEMENT","nameLocation":"7960:40:10","nodeType":"VariableDeclaration","scope":6265,"src":"7935:75:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6254,"name":"uint32","nodeType":"ElementaryTypeName","src":"7935:6:10","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":{"commonType":{"typeIdentifier":"t_rational_201_by_1","typeString":"int_const 201"},"id":6257,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":6255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8003:1:10","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"323030","id":6256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8007:3:10","typeDescriptions":{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},"value":"200"},"src":"8003:7:10","typeDescriptions":{"typeIdentifier":"t_rational_201_by_1","typeString":"int_const 201"}},"visibility":"internal"},{"constant":true,"documentation":{"id":6259,"nodeType":"StructuredDocumentation","src":"8016:172:10","text":" @dev Superfluid.callAppAction batch operation type\n Call spec:\n callAppAction(\n ISuperApp(target)),\n data\n )"},"id":6264,"mutability":"constant","name":"OPERATION_TYPE_SUPERFLUID_CALL_APP_ACTION","nameLocation":"8218:41:10","nodeType":"VariableDeclaration","scope":6265,"src":"8193:76:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6260,"name":"uint32","nodeType":"ElementaryTypeName","src":"8193:6:10","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":{"commonType":{"typeIdentifier":"t_rational_202_by_1","typeString":"int_const 202"},"id":6263,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":6261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8262:1:10","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"323030","id":6262,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8266:3:10","typeDescriptions":{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},"value":"200"},"src":"8262:7:10","typeDescriptions":{"typeIdentifier":"t_rational_202_by_1","typeString":"int_const 202"}},"visibility":"internal"}],"scope":6367,"src":"5648:2624:10","usedErrors":[]},{"abstract":false,"baseContracts":[],"canonicalName":"SuperfluidGovernanceConfigs","contractDependencies":[],"contractKind":"library","documentation":{"id":6266,"nodeType":"StructuredDocumentation","src":"8274:77:10","text":" @title Superfluid governance configs library\n @author Superfluid"},"fullyImplemented":true,"id":6366,"linearizedBaseContracts":[6366],"name":"SuperfluidGovernanceConfigs","nameLocation":"8360:27:10","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":6271,"mutability":"constant","name":"SUPERFLUID_REWARD_ADDRESS_CONFIG_KEY","nameLocation":"8421:36:10","nodeType":"VariableDeclaration","scope":6366,"src":"8395:133:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6267,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8395:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"6f72672e7375706572666c7569642d66696e616e63652e7375706572666c7569642e72657761726441646472657373","id":6269,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8478:49:10","typeDescriptions":{"typeIdentifier":"t_stringliteral_9f60ae461adf056670e03ae602566409933242392cb06744f5747c9f38b05d09","typeString":"literal_string \"org.superfluid-finance.superfluid.rewardAddress\""},"value":"org.superfluid-finance.superfluid.rewardAddress"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_9f60ae461adf056670e03ae602566409933242392cb06744f5747c9f38b05d09","typeString":"literal_string \"org.superfluid-finance.superfluid.rewardAddress\""}],"id":6268,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"8468:9:10","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":6270,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8468:60:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":true,"id":6276,"mutability":"constant","name":"CFAV1_PPP_CONFIG_KEY","nameLocation":"8560:20:10","nodeType":"VariableDeclaration","scope":6366,"src":"8534:145:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6272,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8534:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"6f72672e7375706572666c7569642d66696e616e63652e61677265656d656e74732e436f6e7374616e74466c6f7741677265656d656e742e76312e505050436f6e66696775726174696f6e","id":6274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8601:77:10","typeDescriptions":{"typeIdentifier":"t_stringliteral_e420d96e81cb4a6b2abb2366c4f93312d4e2ae878a7d4b22e73472fdad891f78","typeString":"literal_string \"org.superfluid-finance.agreements.ConstantFlowAgreement.v1.PPPConfiguration\""},"value":"org.superfluid-finance.agreements.ConstantFlowAgreement.v1.PPPConfiguration"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_e420d96e81cb4a6b2abb2366c4f93312d4e2ae878a7d4b22e73472fdad891f78","typeString":"literal_string \"org.superfluid-finance.agreements.ConstantFlowAgreement.v1.PPPConfiguration\""}],"id":6273,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"8591:9:10","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":6275,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8591:88:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":true,"id":6281,"mutability":"constant","name":"SUPERTOKEN_MINIMUM_DEPOSIT_KEY","nameLocation":"8711:30:10","nodeType":"VariableDeclaration","scope":6366,"src":"8685:138:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6277,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8685:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"6f72672e7375706572666c7569642d66696e616e63652e7375706572666c7569642e7375706572546f6b656e4d696e696d756d4465706f736974","id":6279,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8762:60:10","typeDescriptions":{"typeIdentifier":"t_stringliteral_eae305fa863b373417e615b1044222e2806cefc7788d169ce6748a443c3f6cc4","typeString":"literal_string \"org.superfluid-finance.superfluid.superTokenMinimumDeposit\""},"value":"org.superfluid-finance.superfluid.superTokenMinimumDeposit"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_eae305fa863b373417e615b1044222e2806cefc7788d169ce6748a443c3f6cc4","typeString":"literal_string \"org.superfluid-finance.superfluid.superTokenMinimumDeposit\""}],"id":6278,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"8752:9:10","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":6280,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8752:71:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"body":{"id":6296,"nodeType":"Block","src":"8919:135:10","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"6f72672e7375706572666c7569642d66696e616e63652e7375706572666c7569642e74727573746564466f72776172646572","id":6291,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8970:52:10","typeDescriptions":{"typeIdentifier":"t_stringliteral_5e8d8c86403ce515d0afc5f813484261c20de0e66deea95df3a7de50a4365fdd","typeString":"literal_string \"org.superfluid-finance.superfluid.trustedForwarder\""},"value":"org.superfluid-finance.superfluid.trustedForwarder"},{"id":6292,"name":"forwarder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6283,"src":"9036:9:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_5e8d8c86403ce515d0afc5f813484261c20de0e66deea95df3a7de50a4365fdd","typeString":"literal_string \"org.superfluid-finance.superfluid.trustedForwarder\""},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":6289,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"8946:3:10","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":6290,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8950:6:10","memberName":"encode","nodeType":"MemberAccess","src":"8946:10:10","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":6293,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8946:100:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6288,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"8936:9:10","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":6294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8936:111:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":6287,"id":6295,"nodeType":"Return","src":"8929:118:10"}]},"id":6297,"implemented":true,"kind":"function","modifiers":[],"name":"getTrustedForwarderConfigKey","nameLocation":"8839:28:10","nodeType":"FunctionDefinition","parameters":{"id":6284,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6283,"mutability":"mutable","name":"forwarder","nameLocation":"8876:9:10","nodeType":"VariableDeclaration","scope":6297,"src":"8868:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6282,"name":"address","nodeType":"ElementaryTypeName","src":"8868:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8867:19:10"},"returnParameters":{"id":6287,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6286,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6297,"src":"8910:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6285,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8910:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8909:9:10"},"scope":6366,"src":"8830:224:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6315,"nodeType":"Block","src":"9178:178:10","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"6f72672e7375706572666c7569642d66696e616e63652e7375706572666c7569642e61707057686974654c697374696e672e726567697374726174696f6e4b6579","id":6309,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9229:67:10","typeDescriptions":{"typeIdentifier":"t_stringliteral_2ac2eda5c308a51ed3bd3433d0d20fe487916751b3404fa382719429ef24259a","typeString":"literal_string \"org.superfluid-finance.superfluid.appWhiteListing.registrationKey\""},"value":"org.superfluid-finance.superfluid.appWhiteListing.registrationKey"},{"id":6310,"name":"deployer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6299,"src":"9310:8:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6311,"name":"registrationKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6301,"src":"9332:15:10","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_2ac2eda5c308a51ed3bd3433d0d20fe487916751b3404fa382719429ef24259a","typeString":"literal_string \"org.superfluid-finance.superfluid.appWhiteListing.registrationKey\""},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":6307,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"9205:3:10","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":6308,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9209:6:10","memberName":"encode","nodeType":"MemberAccess","src":"9205:10:10","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":6312,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9205:143:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6306,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"9195:9:10","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":6313,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9195:154:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":6305,"id":6314,"nodeType":"Return","src":"9188:161:10"}]},"id":6316,"implemented":true,"kind":"function","modifiers":[],"name":"getAppRegistrationConfigKey","nameLocation":"9069:27:10","nodeType":"FunctionDefinition","parameters":{"id":6302,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6299,"mutability":"mutable","name":"deployer","nameLocation":"9105:8:10","nodeType":"VariableDeclaration","scope":6316,"src":"9097:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6298,"name":"address","nodeType":"ElementaryTypeName","src":"9097:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6301,"mutability":"mutable","name":"registrationKey","nameLocation":"9129:15:10","nodeType":"VariableDeclaration","scope":6316,"src":"9115:29:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6300,"name":"string","nodeType":"ElementaryTypeName","src":"9115:6:10","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"9096:49:10"},"returnParameters":{"id":6305,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6304,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6316,"src":"9169:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6303,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9169:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"9168:9:10"},"scope":6366,"src":"9060:296:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6331,"nodeType":"Block","src":"9443:140:10","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"6f72672e7375706572666c7569642d66696e616e63652e7375706572666c7569642e61707057686974654c697374696e672e666163746f7279","id":6326,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9494:59:10","typeDescriptions":{"typeIdentifier":"t_stringliteral_3a9ec29d76a01dd4676b43ee8f5ae7a021577f823fb495dfb5627ad6bbb890b6","typeString":"literal_string \"org.superfluid-finance.superfluid.appWhiteListing.factory\""},"value":"org.superfluid-finance.superfluid.appWhiteListing.factory"},{"id":6327,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6318,"src":"9567:7:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_3a9ec29d76a01dd4676b43ee8f5ae7a021577f823fb495dfb5627ad6bbb890b6","typeString":"literal_string \"org.superfluid-finance.superfluid.appWhiteListing.factory\""},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":6324,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"9470:3:10","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":6325,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9474:6:10","memberName":"encode","nodeType":"MemberAccess","src":"9470:10:10","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":6328,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9470:105:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6323,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"9460:9:10","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":6329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9460:116:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":6322,"id":6330,"nodeType":"Return","src":"9453:123:10"}]},"id":6332,"implemented":true,"kind":"function","modifiers":[],"name":"getAppFactoryConfigKey","nameLocation":"9371:22:10","nodeType":"FunctionDefinition","parameters":{"id":6319,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6318,"mutability":"mutable","name":"factory","nameLocation":"9402:7:10","nodeType":"VariableDeclaration","scope":6332,"src":"9394:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6317,"name":"address","nodeType":"ElementaryTypeName","src":"9394:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9393:17:10"},"returnParameters":{"id":6322,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6321,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6332,"src":"9434:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6320,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9434:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"9433:9:10"},"scope":6366,"src":"9362:221:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6364,"nodeType":"Block","src":"9708:129:10","statements":[{"expression":{"id":6352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6341,"name":"liquidationPeriod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6337,"src":"9718:17:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6344,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6342,"name":"pppConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6334,"src":"9739:9:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":6343,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9752:2:10","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"9739:15:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6345,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9738:17:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"expression":{"arguments":[{"id":6348,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9763:6:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":6347,"name":"uint32","nodeType":"ElementaryTypeName","src":"9763:6:10","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"}],"id":6346,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"9758:4:10","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":6349,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9758:12:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint32","typeString":"type(uint32)"}},"id":6350,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9771:3:10","memberName":"max","nodeType":"MemberAccess","src":"9758:16:10","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"9738:36:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9718:56:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6353,"nodeType":"ExpressionStatement","src":"9718:56:10"},{"expression":{"id":6362,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6354,"name":"patricianPeriod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6339,"src":"9784:15:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6355,"name":"pppConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6334,"src":"9802:9:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"expression":{"arguments":[{"id":6358,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9819:6:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":6357,"name":"uint32","nodeType":"ElementaryTypeName","src":"9819:6:10","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"}],"id":6356,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"9814:4:10","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":6359,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9814:12:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint32","typeString":"type(uint32)"}},"id":6360,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9827:3:10","memberName":"max","nodeType":"MemberAccess","src":"9814:16:10","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"9802:28:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9784:46:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6363,"nodeType":"ExpressionStatement","src":"9784:46:10"}]},"id":6365,"implemented":true,"kind":"function","modifiers":[],"name":"decodePPPConfig","nameLocation":"9598:15:10","nodeType":"FunctionDefinition","parameters":{"id":6335,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6334,"mutability":"mutable","name":"pppConfig","nameLocation":"9622:9:10","nodeType":"VariableDeclaration","scope":6365,"src":"9614:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6333,"name":"uint256","nodeType":"ElementaryTypeName","src":"9614:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9613:19:10"},"returnParameters":{"id":6340,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6337,"mutability":"mutable","name":"liquidationPeriod","nameLocation":"9664:17:10","nodeType":"VariableDeclaration","scope":6365,"src":"9656:25:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6336,"name":"uint256","nodeType":"ElementaryTypeName","src":"9656:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6339,"mutability":"mutable","name":"patricianPeriod","nameLocation":"9691:15:10","nodeType":"VariableDeclaration","scope":6365,"src":"9683:23:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6338,"name":"uint256","nodeType":"ElementaryTypeName","src":"9683:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9655:52:10"},"scope":6366,"src":"9589:248:10","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":6367,"src":"8352:1487:10","usedErrors":[]}],"src":"35:9805:10"},"id":10},"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol":{"ast":{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol","exportedSymbols":{"ISuperAgreement":[6395],"ISuperfluidToken":[8014]},"id":6396,"license":"AGPLv3","nodeType":"SourceUnit","nodes":[{"id":6368,"literals":["solidity",">=","0.8",".4"],"nodeType":"PragmaDirective","src":"35:25:11"},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol","file":"./ISuperfluidToken.sol","id":6370,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6396,"sourceUnit":8015,"src":"62:58:11","symbolAliases":[{"foreign":{"id":6369,"name":"ISuperfluidToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8014,"src":"71:16:11","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"ISuperAgreement","contractDependencies":[],"contractKind":"interface","documentation":{"id":6371,"nodeType":"StructuredDocumentation","src":"122:65:11","text":" @title Super agreement interface\n @author Superfluid"},"fullyImplemented":false,"id":6395,"linearizedBaseContracts":[6395],"name":"ISuperAgreement","nameLocation":"198:15:11","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":6372,"nodeType":"StructuredDocumentation","src":"221:59:11","text":" @dev Get the type of the agreement class"},"functionSelector":"7730599e","id":6377,"implemented":false,"kind":"function","modifiers":[],"name":"agreementType","nameLocation":"294:13:11","nodeType":"FunctionDefinition","parameters":{"id":6373,"nodeType":"ParameterList","parameters":[],"src":"307:2:11"},"returnParameters":{"id":6376,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6375,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6377,"src":"333:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6374,"name":"bytes32","nodeType":"ElementaryTypeName","src":"333:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"332:9:11"},"scope":6395,"src":"285:57:11","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":6378,"nodeType":"StructuredDocumentation","src":"348:425:11","text":" @dev Calculate the real-time balance for the account of this agreement class\n @param account Account the state belongs to\n @param time Time used for the calculation\n @return dynamicBalance Dynamic balance portion of real-time balance of this agreement\n @return deposit Account deposit amount of this agreement\n @return owedDeposit Account owed deposit amount of this agreement"},"functionSelector":"9b2e48bc","id":6394,"implemented":false,"kind":"function","modifiers":[],"name":"realtimeBalanceOf","nameLocation":"787:17:11","nodeType":"FunctionDefinition","parameters":{"id":6386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6381,"mutability":"mutable","name":"token","nameLocation":"831:5:11","nodeType":"VariableDeclaration","scope":6394,"src":"814:22:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"},"typeName":{"id":6380,"nodeType":"UserDefinedTypeName","pathNode":{"id":6379,"name":"ISuperfluidToken","nameLocations":["814:16:11"],"nodeType":"IdentifierPath","referencedDeclaration":8014,"src":"814:16:11"},"referencedDeclaration":8014,"src":"814:16:11","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":6383,"mutability":"mutable","name":"account","nameLocation":"854:7:11","nodeType":"VariableDeclaration","scope":6394,"src":"846:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6382,"name":"address","nodeType":"ElementaryTypeName","src":"846:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6385,"mutability":"mutable","name":"time","nameLocation":"879:4:11","nodeType":"VariableDeclaration","scope":6394,"src":"871:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6384,"name":"uint256","nodeType":"ElementaryTypeName","src":"871:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"804:85:11"},"returnParameters":{"id":6393,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6388,"mutability":"mutable","name":"dynamicBalance","nameLocation":"957:14:11","nodeType":"VariableDeclaration","scope":6394,"src":"950:21:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6387,"name":"int256","nodeType":"ElementaryTypeName","src":"950:6:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":6390,"mutability":"mutable","name":"deposit","nameLocation":"993:7:11","nodeType":"VariableDeclaration","scope":6394,"src":"985:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6389,"name":"uint256","nodeType":"ElementaryTypeName","src":"985:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6392,"mutability":"mutable","name":"owedDeposit","nameLocation":"1022:11:11","nodeType":"VariableDeclaration","scope":6394,"src":"1014:19:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6391,"name":"uint256","nodeType":"ElementaryTypeName","src":"1014:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"936:107:11"},"scope":6395,"src":"778:266:11","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":6396,"src":"188:859:11","usedErrors":[]}],"src":"35:1013:11"},"id":11},"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperApp.sol":{"ast":{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperApp.sol","exportedSymbols":{"ISuperApp":[6509],"ISuperToken":[6947]},"id":6510,"license":"AGPLv3","nodeType":"SourceUnit","nodes":[{"id":6397,"literals":["solidity",">=","0.8",".4"],"nodeType":"PragmaDirective","src":"35:25:12"},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.sol","file":"./ISuperToken.sol","id":6399,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6510,"sourceUnit":6948,"src":"62:48:12","symbolAliases":[{"foreign":{"id":6398,"name":"ISuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6947,"src":"71:11:12","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"ISuperApp","contractDependencies":[],"contractKind":"interface","documentation":{"id":6400,"nodeType":"StructuredDocumentation","src":"112:133:12","text":" @title SuperApp interface\n @author Superfluid\n @dev Be aware of the app being jailed, when the word permitted is used."},"fullyImplemented":false,"id":6509,"linearizedBaseContracts":[6509],"name":"ISuperApp","nameLocation":"256:9:12","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":6401,"nodeType":"StructuredDocumentation","src":"273:630:12","text":" @dev Callback before a new agreement is created.\n @param superToken The super token used for the agreement.\n @param agreementClass The agreement class address.\n @param agreementId The agreementId\n @param agreementData The agreement data (non-compressed)\n @param ctx The context data.\n @return cbdata A free format in memory data the app can use to pass\n arbitary information to the after-hook callback.\n @custom:note \n - It will be invoked with `staticcall`, no state changes are permitted.\n - Only revert with a \"reason\" is permitted."},"functionSelector":"30d9c915","id":6417,"implemented":false,"kind":"function","modifiers":[],"name":"beforeAgreementCreated","nameLocation":"917:22:12","nodeType":"FunctionDefinition","parameters":{"id":6413,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6404,"mutability":"mutable","name":"superToken","nameLocation":"961:10:12","nodeType":"VariableDeclaration","scope":6417,"src":"949:22:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":6403,"nodeType":"UserDefinedTypeName","pathNode":{"id":6402,"name":"ISuperToken","nameLocations":["949:11:12"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"949:11:12"},"referencedDeclaration":6947,"src":"949:11:12","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":6406,"mutability":"mutable","name":"agreementClass","nameLocation":"989:14:12","nodeType":"VariableDeclaration","scope":6417,"src":"981:22:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6405,"name":"address","nodeType":"ElementaryTypeName","src":"981:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6408,"mutability":"mutable","name":"agreementId","nameLocation":"1021:11:12","nodeType":"VariableDeclaration","scope":6417,"src":"1013:19:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6407,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1013:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":6410,"mutability":"mutable","name":"agreementData","nameLocation":"1057:13:12","nodeType":"VariableDeclaration","scope":6417,"src":"1042:28:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6409,"name":"bytes","nodeType":"ElementaryTypeName","src":"1042:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":6412,"mutability":"mutable","name":"ctx","nameLocation":"1095:3:12","nodeType":"VariableDeclaration","scope":6417,"src":"1080:18:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6411,"name":"bytes","nodeType":"ElementaryTypeName","src":"1080:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"939:165:12"},"returnParameters":{"id":6416,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6415,"mutability":"mutable","name":"cbdata","nameLocation":"1165:6:12","nodeType":"VariableDeclaration","scope":6417,"src":"1152:19:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6414,"name":"bytes","nodeType":"ElementaryTypeName","src":"1152:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1151:21:12"},"scope":6509,"src":"908:265:12","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":6418,"nodeType":"StructuredDocumentation","src":"1179:579:12","text":" @dev Callback after a new agreement is created.\n @param superToken The super token used for the agreement.\n @param agreementClass The agreement class address.\n @param agreementId The agreementId\n @param agreementData The agreement data (non-compressed)\n @param cbdata The data returned from the before-hook callback.\n @param ctx The context data.\n @return newCtx The current context of the transaction.\n @custom:note \n - State changes is permitted.\n - Only revert with a \"reason\" is permitted."},"functionSelector":"d86ed3e5","id":6436,"implemented":false,"kind":"function","modifiers":[],"name":"afterAgreementCreated","nameLocation":"1772:21:12","nodeType":"FunctionDefinition","parameters":{"id":6432,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6421,"mutability":"mutable","name":"superToken","nameLocation":"1815:10:12","nodeType":"VariableDeclaration","scope":6436,"src":"1803:22:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":6420,"nodeType":"UserDefinedTypeName","pathNode":{"id":6419,"name":"ISuperToken","nameLocations":["1803:11:12"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"1803:11:12"},"referencedDeclaration":6947,"src":"1803:11:12","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":6423,"mutability":"mutable","name":"agreementClass","nameLocation":"1843:14:12","nodeType":"VariableDeclaration","scope":6436,"src":"1835:22:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6422,"name":"address","nodeType":"ElementaryTypeName","src":"1835:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6425,"mutability":"mutable","name":"agreementId","nameLocation":"1875:11:12","nodeType":"VariableDeclaration","scope":6436,"src":"1867:19:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6424,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1867:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":6427,"mutability":"mutable","name":"agreementData","nameLocation":"1911:13:12","nodeType":"VariableDeclaration","scope":6436,"src":"1896:28:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6426,"name":"bytes","nodeType":"ElementaryTypeName","src":"1896:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":6429,"mutability":"mutable","name":"cbdata","nameLocation":"1949:6:12","nodeType":"VariableDeclaration","scope":6436,"src":"1934:21:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6428,"name":"bytes","nodeType":"ElementaryTypeName","src":"1934:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":6431,"mutability":"mutable","name":"ctx","nameLocation":"1980:3:12","nodeType":"VariableDeclaration","scope":6436,"src":"1965:18:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6430,"name":"bytes","nodeType":"ElementaryTypeName","src":"1965:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1793:196:12"},"returnParameters":{"id":6435,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6434,"mutability":"mutable","name":"newCtx","nameLocation":"2037:6:12","nodeType":"VariableDeclaration","scope":6436,"src":"2024:19:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6433,"name":"bytes","nodeType":"ElementaryTypeName","src":"2024:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2023:21:12"},"scope":6509,"src":"1763:282:12","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6437,"nodeType":"StructuredDocumentation","src":"2051:630:12","text":" @dev Callback before a new agreement is updated.\n @param superToken The super token used for the agreement.\n @param agreementClass The agreement class address.\n @param agreementId The agreementId\n @param agreementData The agreement data (non-compressed)\n @param ctx The context data.\n @return cbdata A free format in memory data the app can use to pass\n arbitary information to the after-hook callback.\n @custom:note \n - It will be invoked with `staticcall`, no state changes are permitted.\n - Only revert with a \"reason\" is permitted."},"functionSelector":"884d1f40","id":6453,"implemented":false,"kind":"function","modifiers":[],"name":"beforeAgreementUpdated","nameLocation":"2695:22:12","nodeType":"FunctionDefinition","parameters":{"id":6449,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6440,"mutability":"mutable","name":"superToken","nameLocation":"2739:10:12","nodeType":"VariableDeclaration","scope":6453,"src":"2727:22:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":6439,"nodeType":"UserDefinedTypeName","pathNode":{"id":6438,"name":"ISuperToken","nameLocations":["2727:11:12"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"2727:11:12"},"referencedDeclaration":6947,"src":"2727:11:12","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":6442,"mutability":"mutable","name":"agreementClass","nameLocation":"2767:14:12","nodeType":"VariableDeclaration","scope":6453,"src":"2759:22:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6441,"name":"address","nodeType":"ElementaryTypeName","src":"2759:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6444,"mutability":"mutable","name":"agreementId","nameLocation":"2799:11:12","nodeType":"VariableDeclaration","scope":6453,"src":"2791:19:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6443,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2791:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":6446,"mutability":"mutable","name":"agreementData","nameLocation":"2835:13:12","nodeType":"VariableDeclaration","scope":6453,"src":"2820:28:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6445,"name":"bytes","nodeType":"ElementaryTypeName","src":"2820:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":6448,"mutability":"mutable","name":"ctx","nameLocation":"2873:3:12","nodeType":"VariableDeclaration","scope":6453,"src":"2858:18:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6447,"name":"bytes","nodeType":"ElementaryTypeName","src":"2858:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2717:165:12"},"returnParameters":{"id":6452,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6451,"mutability":"mutable","name":"cbdata","nameLocation":"2943:6:12","nodeType":"VariableDeclaration","scope":6453,"src":"2930:19:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6450,"name":"bytes","nodeType":"ElementaryTypeName","src":"2930:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2929:21:12"},"scope":6509,"src":"2686:265:12","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":6454,"nodeType":"StructuredDocumentation","src":"2958:566:12","text":" @dev Callback after a new agreement is updated.\n @param superToken The super token used for the agreement.\n @param agreementClass The agreement class address.\n @param agreementId The agreementId\n @param agreementData The agreement data (non-compressed)\n @param cbdata The data returned from the before-hook callback.\n @param ctx The context data.\n @return newCtx The current context of the transaction.\n @custom:note \n - State changes is permitted.\n - Only revert with a \"reason\" is permitted."},"functionSelector":"230dbd29","id":6472,"implemented":false,"kind":"function","modifiers":[],"name":"afterAgreementUpdated","nameLocation":"3538:21:12","nodeType":"FunctionDefinition","parameters":{"id":6468,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6457,"mutability":"mutable","name":"superToken","nameLocation":"3581:10:12","nodeType":"VariableDeclaration","scope":6472,"src":"3569:22:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":6456,"nodeType":"UserDefinedTypeName","pathNode":{"id":6455,"name":"ISuperToken","nameLocations":["3569:11:12"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"3569:11:12"},"referencedDeclaration":6947,"src":"3569:11:12","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":6459,"mutability":"mutable","name":"agreementClass","nameLocation":"3609:14:12","nodeType":"VariableDeclaration","scope":6472,"src":"3601:22:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6458,"name":"address","nodeType":"ElementaryTypeName","src":"3601:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6461,"mutability":"mutable","name":"agreementId","nameLocation":"3641:11:12","nodeType":"VariableDeclaration","scope":6472,"src":"3633:19:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6460,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3633:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":6463,"mutability":"mutable","name":"agreementData","nameLocation":"3677:13:12","nodeType":"VariableDeclaration","scope":6472,"src":"3662:28:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6462,"name":"bytes","nodeType":"ElementaryTypeName","src":"3662:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":6465,"mutability":"mutable","name":"cbdata","nameLocation":"3715:6:12","nodeType":"VariableDeclaration","scope":6472,"src":"3700:21:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6464,"name":"bytes","nodeType":"ElementaryTypeName","src":"3700:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":6467,"mutability":"mutable","name":"ctx","nameLocation":"3746:3:12","nodeType":"VariableDeclaration","scope":6472,"src":"3731:18:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6466,"name":"bytes","nodeType":"ElementaryTypeName","src":"3731:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3559:196:12"},"returnParameters":{"id":6471,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6470,"mutability":"mutable","name":"newCtx","nameLocation":"3803:6:12","nodeType":"VariableDeclaration","scope":6472,"src":"3790:19:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6469,"name":"bytes","nodeType":"ElementaryTypeName","src":"3790:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3789:21:12"},"scope":6509,"src":"3529:282:12","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6473,"nodeType":"StructuredDocumentation","src":"3817:588:12","text":" @dev Callback before a new agreement is terminated.\n @param superToken The super token used for the agreement.\n @param agreementClass The agreement class address.\n @param agreementId The agreementId\n @param agreementData The agreement data (non-compressed)\n @param ctx The context data.\n @return cbdata A free format in memory data the app can use to pass arbitary information to the after-hook callback.\n @custom:note \n - It will be invoked with `staticcall`, no state changes are permitted.\n - Revert is not permitted."},"functionSelector":"5f9e7d77","id":6489,"implemented":false,"kind":"function","modifiers":[],"name":"beforeAgreementTerminated","nameLocation":"4419:25:12","nodeType":"FunctionDefinition","parameters":{"id":6485,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6476,"mutability":"mutable","name":"superToken","nameLocation":"4466:10:12","nodeType":"VariableDeclaration","scope":6489,"src":"4454:22:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":6475,"nodeType":"UserDefinedTypeName","pathNode":{"id":6474,"name":"ISuperToken","nameLocations":["4454:11:12"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"4454:11:12"},"referencedDeclaration":6947,"src":"4454:11:12","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":6478,"mutability":"mutable","name":"agreementClass","nameLocation":"4494:14:12","nodeType":"VariableDeclaration","scope":6489,"src":"4486:22:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6477,"name":"address","nodeType":"ElementaryTypeName","src":"4486:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6480,"mutability":"mutable","name":"agreementId","nameLocation":"4526:11:12","nodeType":"VariableDeclaration","scope":6489,"src":"4518:19:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6479,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4518:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":6482,"mutability":"mutable","name":"agreementData","nameLocation":"4562:13:12","nodeType":"VariableDeclaration","scope":6489,"src":"4547:28:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6481,"name":"bytes","nodeType":"ElementaryTypeName","src":"4547:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":6484,"mutability":"mutable","name":"ctx","nameLocation":"4600:3:12","nodeType":"VariableDeclaration","scope":6489,"src":"4585:18:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6483,"name":"bytes","nodeType":"ElementaryTypeName","src":"4585:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4444:165:12"},"returnParameters":{"id":6488,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6487,"mutability":"mutable","name":"cbdata","nameLocation":"4670:6:12","nodeType":"VariableDeclaration","scope":6489,"src":"4657:19:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6486,"name":"bytes","nodeType":"ElementaryTypeName","src":"4657:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4656:21:12"},"scope":6509,"src":"4410:268:12","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":6490,"nodeType":"StructuredDocumentation","src":"4684:552:12","text":" @dev Callback after a new agreement is terminated.\n @param superToken The super token used for the agreement.\n @param agreementClass The agreement class address.\n @param agreementId The agreementId\n @param agreementData The agreement data (non-compressed)\n @param cbdata The data returned from the before-hook callback.\n @param ctx The context data.\n @return newCtx The current context of the transaction.\n @custom:note \n - State changes is permitted.\n - Revert is not permitted."},"functionSelector":"53c11f99","id":6508,"implemented":false,"kind":"function","modifiers":[],"name":"afterAgreementTerminated","nameLocation":"5250:24:12","nodeType":"FunctionDefinition","parameters":{"id":6504,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6493,"mutability":"mutable","name":"superToken","nameLocation":"5296:10:12","nodeType":"VariableDeclaration","scope":6508,"src":"5284:22:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":6492,"nodeType":"UserDefinedTypeName","pathNode":{"id":6491,"name":"ISuperToken","nameLocations":["5284:11:12"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"5284:11:12"},"referencedDeclaration":6947,"src":"5284:11:12","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":6495,"mutability":"mutable","name":"agreementClass","nameLocation":"5324:14:12","nodeType":"VariableDeclaration","scope":6508,"src":"5316:22:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6494,"name":"address","nodeType":"ElementaryTypeName","src":"5316:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6497,"mutability":"mutable","name":"agreementId","nameLocation":"5356:11:12","nodeType":"VariableDeclaration","scope":6508,"src":"5348:19:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6496,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5348:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":6499,"mutability":"mutable","name":"agreementData","nameLocation":"5392:13:12","nodeType":"VariableDeclaration","scope":6508,"src":"5377:28:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6498,"name":"bytes","nodeType":"ElementaryTypeName","src":"5377:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":6501,"mutability":"mutable","name":"cbdata","nameLocation":"5430:6:12","nodeType":"VariableDeclaration","scope":6508,"src":"5415:21:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6500,"name":"bytes","nodeType":"ElementaryTypeName","src":"5415:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":6503,"mutability":"mutable","name":"ctx","nameLocation":"5461:3:12","nodeType":"VariableDeclaration","scope":6508,"src":"5446:18:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6502,"name":"bytes","nodeType":"ElementaryTypeName","src":"5446:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5274:196:12"},"returnParameters":{"id":6507,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6506,"mutability":"mutable","name":"newCtx","nameLocation":"5518:6:12","nodeType":"VariableDeclaration","scope":6508,"src":"5505:19:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6505,"name":"bytes","nodeType":"ElementaryTypeName","src":"5505:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5504:21:12"},"scope":6509,"src":"5241:285:12","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":6510,"src":"246:5282:12","usedErrors":[]}],"src":"35:5494:12"},"id":12},"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.sol":{"ast":{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.sol","exportedSymbols":{"IERC20":[77],"IERC777":[557],"ISuperToken":[6947],"ISuperfluid":[7599],"ISuperfluidToken":[8014],"TokenInfo":[8048]},"id":6948,"license":"AGPLv3","nodeType":"SourceUnit","nodes":[{"id":6511,"literals":["solidity",">=","0.8",".4"],"nodeType":"PragmaDirective","src":"35:25:13"},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol","file":"./ISuperfluid.sol","id":6513,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6948,"sourceUnit":7600,"src":"62:48:13","symbolAliases":[{"foreign":{"id":6512,"name":"ISuperfluid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7599,"src":"71:11:13","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol","file":"./ISuperfluidToken.sol","id":6515,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6948,"sourceUnit":8015,"src":"111:58:13","symbolAliases":[{"foreign":{"id":6514,"name":"ISuperfluidToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8014,"src":"120:16:13","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.sol","file":"../tokens/TokenInfo.sol","id":6517,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6948,"sourceUnit":8049,"src":"170:52:13","symbolAliases":[{"foreign":{"id":6516,"name":"TokenInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8048,"src":"179:9:13","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC777/IERC777.sol","file":"@openzeppelin/contracts/token/ERC777/IERC777.sol","id":6519,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6948,"sourceUnit":558,"src":"223:75:13","symbolAliases":[{"foreign":{"id":6518,"name":"IERC777","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":557,"src":"232:7:13","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":6521,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6948,"sourceUnit":78,"src":"299:72:13","symbolAliases":[{"foreign":{"id":6520,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77,"src":"308:6:13","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":6523,"name":"ISuperfluidToken","nameLocations":["496:16:13"],"nodeType":"IdentifierPath","referencedDeclaration":8014,"src":"496:16:13"},"id":6524,"nodeType":"InheritanceSpecifier","src":"496:16:13"},{"baseName":{"id":6525,"name":"TokenInfo","nameLocations":["514:9:13"],"nodeType":"IdentifierPath","referencedDeclaration":8048,"src":"514:9:13"},"id":6526,"nodeType":"InheritanceSpecifier","src":"514:9:13"},{"baseName":{"id":6527,"name":"IERC20","nameLocations":["525:6:13"],"nodeType":"IdentifierPath","referencedDeclaration":77,"src":"525:6:13"},"id":6528,"nodeType":"InheritanceSpecifier","src":"525:6:13"},{"baseName":{"id":6529,"name":"IERC777","nameLocations":["533:7:13"],"nodeType":"IdentifierPath","referencedDeclaration":557,"src":"533:7:13"},"id":6530,"nodeType":"InheritanceSpecifier","src":"533:7:13"}],"canonicalName":"ISuperToken","contractDependencies":[],"contractKind":"interface","documentation":{"id":6522,"nodeType":"StructuredDocumentation","src":"373:97:13","text":" @title Super token (Superfluid Token + ERC20 + ERC777) interface\n @author Superfluid"},"fullyImplemented":false,"id":6947,"linearizedBaseContracts":[6947,557,77,8048,8014],"name":"ISuperToken","nameLocation":"481:11:13","nodeType":"ContractDefinition","nodes":[{"errorSelector":"f7f02227","id":6532,"name":"SUPER_TOKEN_CALLER_IS_NOT_OPERATOR_FOR_HOLDER","nameLocation":"728:45:13","nodeType":"ErrorDefinition","parameters":{"id":6531,"nodeType":"ParameterList","parameters":[],"src":"773:2:13"},"src":"722:54:13"},{"errorSelector":"fe737d05","id":6534,"name":"SUPER_TOKEN_NOT_ERC777_TOKENS_RECIPIENT","nameLocation":"807:39:13","nodeType":"ErrorDefinition","parameters":{"id":6533,"nodeType":"ParameterList","parameters":[],"src":"846:2:13"},"src":"801:48:13"},{"errorSelector":"e3e13698","id":6536,"name":"SUPER_TOKEN_INFLATIONARY_DEFLATIONARY_NOT_SUPPORTED","nameLocation":"886:51:13","nodeType":"ErrorDefinition","parameters":{"id":6535,"nodeType":"ParameterList","parameters":[],"src":"937:2:13"},"src":"880:60:13"},{"errorSelector":"f79cf656","id":6538,"name":"SUPER_TOKEN_NO_UNDERLYING_TOKEN","nameLocation":"965:31:13","nodeType":"ErrorDefinition","parameters":{"id":6537,"nodeType":"ParameterList","parameters":[],"src":"996:2:13"},"src":"959:40:13"},{"errorSelector":"7ffa6648","id":6540,"name":"SUPER_TOKEN_ONLY_SELF","nameLocation":"1044:21:13","nodeType":"ErrorDefinition","parameters":{"id":6539,"nodeType":"ParameterList","parameters":[],"src":"1065:2:13"},"src":"1038:30:13"},{"errorSelector":"98f73704","id":6542,"name":"SUPER_TOKEN_ONLY_HOST","nameLocation":"1123:21:13","nodeType":"ErrorDefinition","parameters":{"id":6541,"nodeType":"ParameterList","parameters":[],"src":"1144:2:13"},"src":"1117:30:13"},{"errorSelector":"81638627","id":6544,"name":"SUPER_TOKEN_APPROVE_FROM_ZERO_ADDRESS","nameLocation":"1202:37:13","nodeType":"ErrorDefinition","parameters":{"id":6543,"nodeType":"ParameterList","parameters":[],"src":"1239:2:13"},"src":"1196:46:13"},{"errorSelector":"df070274","id":6546,"name":"SUPER_TOKEN_APPROVE_TO_ZERO_ADDRESS","nameLocation":"1281:35:13","nodeType":"ErrorDefinition","parameters":{"id":6545,"nodeType":"ParameterList","parameters":[],"src":"1316:2:13"},"src":"1275:44:13"},{"errorSelector":"ba2ab184","id":6548,"name":"SUPER_TOKEN_BURN_FROM_ZERO_ADDRESS","nameLocation":"1360:34:13","nodeType":"ErrorDefinition","parameters":{"id":6547,"nodeType":"ParameterList","parameters":[],"src":"1394:2:13"},"src":"1354:43:13"},{"errorSelector":"0d243157","id":6550,"name":"SUPER_TOKEN_MINT_TO_ZERO_ADDRESS","nameLocation":"1439:32:13","nodeType":"ErrorDefinition","parameters":{"id":6549,"nodeType":"ParameterList","parameters":[],"src":"1471:2:13"},"src":"1433:41:13"},{"errorSelector":"eecd6c9b","id":6552,"name":"SUPER_TOKEN_TRANSFER_FROM_ZERO_ADDRESS","nameLocation":"1518:38:13","nodeType":"ErrorDefinition","parameters":{"id":6551,"nodeType":"ParameterList","parameters":[],"src":"1556:2:13"},"src":"1512:47:13"},{"errorSelector":"e219bd39","id":6554,"name":"SUPER_TOKEN_TRANSFER_TO_ZERO_ADDRESS","nameLocation":"1597:36:13","nodeType":"ErrorDefinition","parameters":{"id":6553,"nodeType":"ParameterList","parameters":[],"src":"1633:2:13"},"src":"1591:45:13"},{"documentation":{"id":6555,"nodeType":"StructuredDocumentation","src":"1671:47:13","text":" @dev Initialize the contract"},"functionSelector":"42fe0980","id":6567,"implemented":false,"kind":"function","modifiers":[],"name":"initialize","nameLocation":"1732:10:13","nodeType":"FunctionDefinition","parameters":{"id":6565,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6558,"mutability":"mutable","name":"underlyingToken","nameLocation":"1759:15:13","nodeType":"VariableDeclaration","scope":6567,"src":"1752:22:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$77","typeString":"contract IERC20"},"typeName":{"id":6557,"nodeType":"UserDefinedTypeName","pathNode":{"id":6556,"name":"IERC20","nameLocations":["1752:6:13"],"nodeType":"IdentifierPath","referencedDeclaration":77,"src":"1752:6:13"},"referencedDeclaration":77,"src":"1752:6:13","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$77","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":6560,"mutability":"mutable","name":"underlyingDecimals","nameLocation":"1790:18:13","nodeType":"VariableDeclaration","scope":6567,"src":"1784:24:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6559,"name":"uint8","nodeType":"ElementaryTypeName","src":"1784:5:13","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":6562,"mutability":"mutable","name":"n","nameLocation":"1834:1:13","nodeType":"VariableDeclaration","scope":6567,"src":"1818:17:13","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":6561,"name":"string","nodeType":"ElementaryTypeName","src":"1818:6:13","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":6564,"mutability":"mutable","name":"s","nameLocation":"1861:1:13","nodeType":"VariableDeclaration","scope":6567,"src":"1845:17:13","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":6563,"name":"string","nodeType":"ElementaryTypeName","src":"1845:6:13","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1742:126:13"},"returnParameters":{"id":6566,"nodeType":"ParameterList","parameters":[],"src":"1877:0:13"},"scope":6947,"src":"1723:155:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[443,8035],"documentation":{"id":6568,"nodeType":"StructuredDocumentation","src":"2069:54:13","text":" @dev Returns the name of the token."},"functionSelector":"06fdde03","id":6576,"implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"2137:4:13","nodeType":"FunctionDefinition","overrides":{"id":6572,"nodeType":"OverrideSpecifier","overrides":[{"id":6570,"name":"IERC777","nameLocations":["2167:7:13"],"nodeType":"IdentifierPath","referencedDeclaration":557,"src":"2167:7:13"},{"id":6571,"name":"TokenInfo","nameLocations":["2176:9:13"],"nodeType":"IdentifierPath","referencedDeclaration":8048,"src":"2176:9:13"}],"src":"2158:28:13"},"parameters":{"id":6569,"nodeType":"ParameterList","parameters":[],"src":"2141:2:13"},"returnParameters":{"id":6575,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6574,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6576,"src":"2196:13:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6573,"name":"string","nodeType":"ElementaryTypeName","src":"2196:6:13","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2195:15:13"},"scope":6947,"src":"2128:83:13","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[449,8041],"documentation":{"id":6577,"nodeType":"StructuredDocumentation","src":"2217:102:13","text":" @dev Returns the symbol of the token, usually a shorter version of the\n name."},"functionSelector":"95d89b41","id":6585,"implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"2333:6:13","nodeType":"FunctionDefinition","overrides":{"id":6581,"nodeType":"OverrideSpecifier","overrides":[{"id":6579,"name":"IERC777","nameLocations":["2365:7:13"],"nodeType":"IdentifierPath","referencedDeclaration":557,"src":"2365:7:13"},{"id":6580,"name":"TokenInfo","nameLocations":["2374:9:13"],"nodeType":"IdentifierPath","referencedDeclaration":8048,"src":"2374:9:13"}],"src":"2356:28:13"},"parameters":{"id":6578,"nodeType":"ParameterList","parameters":[],"src":"2339:2:13"},"returnParameters":{"id":6584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6583,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6585,"src":"2394:13:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6582,"name":"string","nodeType":"ElementaryTypeName","src":"2394:6:13","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2393:15:13"},"scope":6947,"src":"2324:85:13","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[8047],"documentation":{"id":6586,"nodeType":"StructuredDocumentation","src":"2415:669:13","text":" @dev Returns the number of decimals used to get its user representation.\n For example, if `decimals` equals `2`, a balance of `505` tokens should\n be displayed to a user as `5,05` (`505 / 10 ** 2`).\n Tokens usually opt for a value of 18, imitating the relationship between\n Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is\n called.\n @custom:note SuperToken always uses 18 decimals.\n This information is only used for _display_ purposes: it in\n no way affects any of the arithmetic of the contract, including\n {IERC20-balanceOf} and {IERC20-transfer}."},"functionSelector":"313ce567","id":6593,"implemented":false,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"3098:8:13","nodeType":"FunctionDefinition","overrides":{"id":6589,"nodeType":"OverrideSpecifier","overrides":[{"id":6588,"name":"TokenInfo","nameLocations":["3132:9:13"],"nodeType":"IdentifierPath","referencedDeclaration":8048,"src":"3132:9:13"}],"src":"3123:19:13"},"parameters":{"id":6587,"nodeType":"ParameterList","parameters":[],"src":"3106:2:13"},"returnParameters":{"id":6592,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6591,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6593,"src":"3152:5:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6590,"name":"uint8","nodeType":"ElementaryTypeName","src":"3152:5:13","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"3151:7:13"},"scope":6947,"src":"3089:70:13","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[26,461],"documentation":{"id":6594,"nodeType":"StructuredDocumentation","src":"3346:49:13","text":" @dev See {IERC20-totalSupply}."},"functionSelector":"18160ddd","id":6602,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"3409:11:13","nodeType":"FunctionDefinition","overrides":{"id":6598,"nodeType":"OverrideSpecifier","overrides":[{"id":6596,"name":"IERC777","nameLocations":["3446:7:13"],"nodeType":"IdentifierPath","referencedDeclaration":557,"src":"3446:7:13"},{"id":6597,"name":"IERC20","nameLocations":["3455:6:13"],"nodeType":"IdentifierPath","referencedDeclaration":77,"src":"3455:6:13"}],"src":"3437:25:13"},"parameters":{"id":6595,"nodeType":"ParameterList","parameters":[],"src":"3420:2:13"},"returnParameters":{"id":6601,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6600,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6602,"src":"3472:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6599,"name":"uint256","nodeType":"ElementaryTypeName","src":"3472:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3471:9:13"},"scope":6947,"src":"3400:81:13","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[34,469],"documentation":{"id":6603,"nodeType":"StructuredDocumentation","src":"3487:83:13","text":" @dev Returns the amount of tokens owned by an account (`owner`)."},"functionSelector":"70a08231","id":6613,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"3584:9:13","nodeType":"FunctionDefinition","overrides":{"id":6609,"nodeType":"OverrideSpecifier","overrides":[{"id":6607,"name":"IERC777","nameLocations":["3634:7:13"],"nodeType":"IdentifierPath","referencedDeclaration":557,"src":"3634:7:13"},{"id":6608,"name":"IERC20","nameLocations":["3643:6:13"],"nodeType":"IdentifierPath","referencedDeclaration":77,"src":"3643:6:13"}],"src":"3625:25:13"},"parameters":{"id":6606,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6605,"mutability":"mutable","name":"account","nameLocation":"3602:7:13","nodeType":"VariableDeclaration","scope":6613,"src":"3594:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6604,"name":"address","nodeType":"ElementaryTypeName","src":"3594:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3593:17:13"},"returnParameters":{"id":6612,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6611,"mutability":"mutable","name":"balance","nameLocation":"3667:7:13","nodeType":"VariableDeclaration","scope":6613,"src":"3659:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6610,"name":"uint256","nodeType":"ElementaryTypeName","src":"3659:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3658:17:13"},"scope":6947,"src":"3575:101:13","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[44],"documentation":{"id":6614,"nodeType":"StructuredDocumentation","src":"3854:233:13","text":" @dev Moves `amount` tokens from the caller's account to `recipient`.\n @return Returns Success a boolean value indicating whether the operation succeeded.\n @custom:emits a {Transfer} event."},"functionSelector":"a9059cbb","id":6625,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"4101:8:13","nodeType":"FunctionDefinition","overrides":{"id":6621,"nodeType":"OverrideSpecifier","overrides":[{"id":6620,"name":"IERC20","nameLocations":["4163:6:13"],"nodeType":"IdentifierPath","referencedDeclaration":77,"src":"4163:6:13"}],"src":"4154:16:13"},"parameters":{"id":6619,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6616,"mutability":"mutable","name":"recipient","nameLocation":"4118:9:13","nodeType":"VariableDeclaration","scope":6625,"src":"4110:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6615,"name":"address","nodeType":"ElementaryTypeName","src":"4110:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6618,"mutability":"mutable","name":"amount","nameLocation":"4137:6:13","nodeType":"VariableDeclaration","scope":6625,"src":"4129:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6617,"name":"uint256","nodeType":"ElementaryTypeName","src":"4129:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4109:35:13"},"returnParameters":{"id":6624,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6623,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6625,"src":"4180:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6622,"name":"bool","nodeType":"ElementaryTypeName","src":"4180:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4179:6:13"},"scope":6947,"src":"4092:94:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[54],"documentation":{"id":6626,"nodeType":"StructuredDocumentation","src":"4192:288:13","text":" @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n @notice This value changes when {approve} or {transferFrom} are called."},"functionSelector":"dd62ed3e","id":6637,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"4494:9:13","nodeType":"FunctionDefinition","overrides":{"id":6633,"nodeType":"OverrideSpecifier","overrides":[{"id":6632,"name":"IERC20","nameLocations":["4554:6:13"],"nodeType":"IdentifierPath","referencedDeclaration":77,"src":"4554:6:13"}],"src":"4545:16:13"},"parameters":{"id":6631,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6628,"mutability":"mutable","name":"owner","nameLocation":"4512:5:13","nodeType":"VariableDeclaration","scope":6637,"src":"4504:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6627,"name":"address","nodeType":"ElementaryTypeName","src":"4504:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6630,"mutability":"mutable","name":"spender","nameLocation":"4527:7:13","nodeType":"VariableDeclaration","scope":6637,"src":"4519:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6629,"name":"address","nodeType":"ElementaryTypeName","src":"4519:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4503:32:13"},"returnParameters":{"id":6636,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6635,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6637,"src":"4576:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6634,"name":"uint256","nodeType":"ElementaryTypeName","src":"4576:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4575:9:13"},"scope":6947,"src":"4485:100:13","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[64],"documentation":{"id":6638,"nodeType":"StructuredDocumentation","src":"4591:668:13","text":" @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n @return Returns Success a boolean value indicating whether the operation succeeded.\n @custom:note Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n @custom:emits an {Approval} event."},"functionSelector":"095ea7b3","id":6649,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"5273:7:13","nodeType":"FunctionDefinition","overrides":{"id":6645,"nodeType":"OverrideSpecifier","overrides":[{"id":6644,"name":"IERC20","nameLocations":["5332:6:13"],"nodeType":"IdentifierPath","referencedDeclaration":77,"src":"5332:6:13"}],"src":"5323:16:13"},"parameters":{"id":6643,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6640,"mutability":"mutable","name":"spender","nameLocation":"5289:7:13","nodeType":"VariableDeclaration","scope":6649,"src":"5281:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6639,"name":"address","nodeType":"ElementaryTypeName","src":"5281:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6642,"mutability":"mutable","name":"amount","nameLocation":"5306:6:13","nodeType":"VariableDeclaration","scope":6649,"src":"5298:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6641,"name":"uint256","nodeType":"ElementaryTypeName","src":"5298:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5280:33:13"},"returnParameters":{"id":6648,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6647,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6649,"src":"5349:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6646,"name":"bool","nodeType":"ElementaryTypeName","src":"5349:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5348:6:13"},"scope":6947,"src":"5264:91:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[76],"documentation":{"id":6650,"nodeType":"StructuredDocumentation","src":"5361:336:13","text":" @dev Moves `amount` tokens from `sender` to `recipient` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n @return Returns Success a boolean value indicating whether the operation succeeded.\n @custom:emits a {Transfer} event."},"functionSelector":"23b872dd","id":6663,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"5711:12:13","nodeType":"FunctionDefinition","overrides":{"id":6659,"nodeType":"OverrideSpecifier","overrides":[{"id":6658,"name":"IERC20","nameLocations":["5793:6:13"],"nodeType":"IdentifierPath","referencedDeclaration":77,"src":"5793:6:13"}],"src":"5784:16:13"},"parameters":{"id":6657,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6652,"mutability":"mutable","name":"sender","nameLocation":"5732:6:13","nodeType":"VariableDeclaration","scope":6663,"src":"5724:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6651,"name":"address","nodeType":"ElementaryTypeName","src":"5724:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6654,"mutability":"mutable","name":"recipient","nameLocation":"5748:9:13","nodeType":"VariableDeclaration","scope":6663,"src":"5740:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6653,"name":"address","nodeType":"ElementaryTypeName","src":"5740:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6656,"mutability":"mutable","name":"amount","nameLocation":"5767:6:13","nodeType":"VariableDeclaration","scope":6663,"src":"5759:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6655,"name":"uint256","nodeType":"ElementaryTypeName","src":"5759:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5723:51:13"},"returnParameters":{"id":6662,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6661,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6663,"src":"5810:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6660,"name":"bool","nodeType":"ElementaryTypeName","src":"5810:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5809:6:13"},"scope":6947,"src":"5702:114:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6664,"nodeType":"StructuredDocumentation","src":"5822:393:13","text":" @dev Atomically increases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n @custom:emits an {Approval} event indicating the updated allowance.\n @custom:requirements \n - `spender` cannot be the zero address."},"functionSelector":"39509351","id":6673,"implemented":false,"kind":"function","modifiers":[],"name":"increaseAllowance","nameLocation":"6229:17:13","nodeType":"FunctionDefinition","parameters":{"id":6669,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6666,"mutability":"mutable","name":"spender","nameLocation":"6255:7:13","nodeType":"VariableDeclaration","scope":6673,"src":"6247:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6665,"name":"address","nodeType":"ElementaryTypeName","src":"6247:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6668,"mutability":"mutable","name":"addedValue","nameLocation":"6272:10:13","nodeType":"VariableDeclaration","scope":6673,"src":"6264:18:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6667,"name":"uint256","nodeType":"ElementaryTypeName","src":"6264:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6246:37:13"},"returnParameters":{"id":6672,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6671,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6673,"src":"6302:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6670,"name":"bool","nodeType":"ElementaryTypeName","src":"6302:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6301:6:13"},"scope":6947,"src":"6220:88:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6674,"nodeType":"StructuredDocumentation","src":"6314:485:13","text":" @dev Atomically decreases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n @custom:emits an {Approval} event indicating the updated allowance.\n @custom:requirements \n - `spender` cannot be the zero address.\n - `spender` must have allowance for the caller of at least\n `subtractedValue`."},"functionSelector":"a457c2d7","id":6683,"implemented":false,"kind":"function","modifiers":[],"name":"decreaseAllowance","nameLocation":"6814:17:13","nodeType":"FunctionDefinition","parameters":{"id":6679,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6676,"mutability":"mutable","name":"spender","nameLocation":"6840:7:13","nodeType":"VariableDeclaration","scope":6683,"src":"6832:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6675,"name":"address","nodeType":"ElementaryTypeName","src":"6832:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6678,"mutability":"mutable","name":"subtractedValue","nameLocation":"6857:15:13","nodeType":"VariableDeclaration","scope":6683,"src":"6849:23:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6677,"name":"uint256","nodeType":"ElementaryTypeName","src":"6849:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6831:42:13"},"returnParameters":{"id":6682,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6681,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6683,"src":"6892:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6680,"name":"bool","nodeType":"ElementaryTypeName","src":"6892:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6891:6:13"},"scope":6947,"src":"6805:93:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[455],"documentation":{"id":6684,"nodeType":"StructuredDocumentation","src":"7077:315:13","text":" @dev Returns the smallest part of the token that is not divisible. This\n means all token operations (creation, movement and destruction) must have\n amounts that are a multiple of this number.\n @custom:note For super token contracts, this value is always 1"},"functionSelector":"556f0dc7","id":6691,"implemented":false,"kind":"function","modifiers":[],"name":"granularity","nameLocation":"7406:11:13","nodeType":"FunctionDefinition","overrides":{"id":6687,"nodeType":"OverrideSpecifier","overrides":[{"id":6686,"name":"IERC777","nameLocations":["7443:7:13"],"nodeType":"IdentifierPath","referencedDeclaration":557,"src":"7443:7:13"}],"src":"7434:17:13"},"parameters":{"id":6685,"nodeType":"ParameterList","parameters":[],"src":"7417:2:13"},"returnParameters":{"id":6690,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6689,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6691,"src":"7461:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6688,"name":"uint256","nodeType":"ElementaryTypeName","src":"7461:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7460:9:13"},"scope":6947,"src":"7397:73:13","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[479],"documentation":{"id":6692,"nodeType":"StructuredDocumentation","src":"7476:610:13","text":" @dev Moves `amount` tokens from the caller's account to `recipient`.\n @dev If send or receive hooks are registered for the caller and `recipient`,\n the corresponding functions will be called with `data` and empty\n `operatorData`. See {IERC777Sender} and {IERC777Recipient}.\n @custom:emits a {Sent} event.\n @custom:requirements \n - the caller must have at least `amount` tokens.\n - `recipient` cannot be the zero address.\n - if `recipient` is a contract, it must implement the {IERC777Recipient}\n interface."},"functionSelector":"9bd9bbc6","id":6703,"implemented":false,"kind":"function","modifiers":[],"name":"send","nameLocation":"8100:4:13","nodeType":"FunctionDefinition","overrides":{"id":6701,"nodeType":"OverrideSpecifier","overrides":[{"id":6700,"name":"IERC777","nameLocations":["8179:7:13"],"nodeType":"IdentifierPath","referencedDeclaration":557,"src":"8179:7:13"}],"src":"8170:17:13"},"parameters":{"id":6699,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6694,"mutability":"mutable","name":"recipient","nameLocation":"8113:9:13","nodeType":"VariableDeclaration","scope":6703,"src":"8105:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6693,"name":"address","nodeType":"ElementaryTypeName","src":"8105:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6696,"mutability":"mutable","name":"amount","nameLocation":"8132:6:13","nodeType":"VariableDeclaration","scope":6703,"src":"8124:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6695,"name":"uint256","nodeType":"ElementaryTypeName","src":"8124:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6698,"mutability":"mutable","name":"data","nameLocation":"8155:4:13","nodeType":"VariableDeclaration","scope":6703,"src":"8140:19:13","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6697,"name":"bytes","nodeType":"ElementaryTypeName","src":"8140:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8104:56:13"},"returnParameters":{"id":6702,"nodeType":"ParameterList","parameters":[],"src":"8187:0:13"},"scope":6947,"src":"8091:97:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[487],"documentation":{"id":6704,"nodeType":"StructuredDocumentation","src":"8194:473:13","text":" @dev Destroys `amount` tokens from the caller's account, reducing the\n total supply and transfers the underlying token to the caller's account.\n If a send hook is registered for the caller, the corresponding function\n will be called with `data` and empty `operatorData`. See {IERC777Sender}.\n @custom:emits a {Burned} event.\n @custom:requirements \n - the caller must have at least `amount` tokens."},"functionSelector":"fe9d9303","id":6713,"implemented":false,"kind":"function","modifiers":[],"name":"burn","nameLocation":"8681:4:13","nodeType":"FunctionDefinition","overrides":{"id":6711,"nodeType":"OverrideSpecifier","overrides":[{"id":6710,"name":"IERC777","nameLocations":["8741:7:13"],"nodeType":"IdentifierPath","referencedDeclaration":557,"src":"8741:7:13"}],"src":"8732:17:13"},"parameters":{"id":6709,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6706,"mutability":"mutable","name":"amount","nameLocation":"8694:6:13","nodeType":"VariableDeclaration","scope":6713,"src":"8686:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6705,"name":"uint256","nodeType":"ElementaryTypeName","src":"8686:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6708,"mutability":"mutable","name":"data","nameLocation":"8717:4:13","nodeType":"VariableDeclaration","scope":6713,"src":"8702:19:13","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6707,"name":"bytes","nodeType":"ElementaryTypeName","src":"8702:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8685:37:13"},"returnParameters":{"id":6712,"nodeType":"ParameterList","parameters":[],"src":"8749:0:13"},"scope":6947,"src":"8672:78:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[497],"documentation":{"id":6714,"nodeType":"StructuredDocumentation","src":"8756:249:13","text":" @dev Returns true if an account is an operator of `tokenHolder`.\n Operators can send and burn tokens on behalf of their owners. All\n accounts are their own operator.\n See {operatorSend} and {operatorBurn}."},"functionSelector":"d95b6371","id":6725,"implemented":false,"kind":"function","modifiers":[],"name":"isOperatorFor","nameLocation":"9019:13:13","nodeType":"FunctionDefinition","overrides":{"id":6721,"nodeType":"OverrideSpecifier","overrides":[{"id":6720,"name":"IERC777","nameLocations":["9090:7:13"],"nodeType":"IdentifierPath","referencedDeclaration":557,"src":"9090:7:13"}],"src":"9081:17:13"},"parameters":{"id":6719,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6716,"mutability":"mutable","name":"operator","nameLocation":"9041:8:13","nodeType":"VariableDeclaration","scope":6725,"src":"9033:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6715,"name":"address","nodeType":"ElementaryTypeName","src":"9033:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6718,"mutability":"mutable","name":"tokenHolder","nameLocation":"9059:11:13","nodeType":"VariableDeclaration","scope":6725,"src":"9051:19:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6717,"name":"address","nodeType":"ElementaryTypeName","src":"9051:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9032:39:13"},"returnParameters":{"id":6724,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6723,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6725,"src":"9113:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6722,"name":"bool","nodeType":"ElementaryTypeName","src":"9113:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"9112:6:13"},"scope":6947,"src":"9010:109:13","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[503],"documentation":{"id":6726,"nodeType":"StructuredDocumentation","src":"9125:243:13","text":" @dev Make an account an operator of the caller.\n See {isOperatorFor}.\n @custom:emits an {AuthorizedOperator} event.\n @custom:requirements \n - `operator` cannot be calling address."},"functionSelector":"959b8c3f","id":6733,"implemented":false,"kind":"function","modifiers":[],"name":"authorizeOperator","nameLocation":"9382:17:13","nodeType":"FunctionDefinition","overrides":{"id":6731,"nodeType":"OverrideSpecifier","overrides":[{"id":6730,"name":"IERC777","nameLocations":["9436:7:13"],"nodeType":"IdentifierPath","referencedDeclaration":557,"src":"9436:7:13"}],"src":"9427:17:13"},"parameters":{"id":6729,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6728,"mutability":"mutable","name":"operator","nameLocation":"9408:8:13","nodeType":"VariableDeclaration","scope":6733,"src":"9400:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6727,"name":"address","nodeType":"ElementaryTypeName","src":"9400:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9399:18:13"},"returnParameters":{"id":6732,"nodeType":"ParameterList","parameters":[],"src":"9444:0:13"},"scope":6947,"src":"9373:72:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[509],"documentation":{"id":6734,"nodeType":"StructuredDocumentation","src":"9451:271:13","text":" @dev Revoke an account's operator status for the caller.\n See {isOperatorFor} and {defaultOperators}.\n @custom:emits a {RevokedOperator} event.\n @custom:requirements \n - `operator` cannot be calling address."},"functionSelector":"fad8b32a","id":6741,"implemented":false,"kind":"function","modifiers":[],"name":"revokeOperator","nameLocation":"9736:14:13","nodeType":"FunctionDefinition","overrides":{"id":6739,"nodeType":"OverrideSpecifier","overrides":[{"id":6738,"name":"IERC777","nameLocations":["9787:7:13"],"nodeType":"IdentifierPath","referencedDeclaration":557,"src":"9787:7:13"}],"src":"9778:17:13"},"parameters":{"id":6737,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6736,"mutability":"mutable","name":"operator","nameLocation":"9759:8:13","nodeType":"VariableDeclaration","scope":6741,"src":"9751:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6735,"name":"address","nodeType":"ElementaryTypeName","src":"9751:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9750:18:13"},"returnParameters":{"id":6740,"nodeType":"ParameterList","parameters":[],"src":"9795:0:13"},"scope":6947,"src":"9727:69:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[516],"documentation":{"id":6742,"nodeType":"StructuredDocumentation","src":"9802:338:13","text":" @dev Returns the list of default operators. These accounts are operators\n for all token holders, even if {authorizeOperator} was never called on\n them.\n This list is immutable, but individual holders may revoke these via\n {revokeOperator}, in which case {isOperatorFor} will return false."},"functionSelector":"06e48538","id":6750,"implemented":false,"kind":"function","modifiers":[],"name":"defaultOperators","nameLocation":"10154:16:13","nodeType":"FunctionDefinition","overrides":{"id":6745,"nodeType":"OverrideSpecifier","overrides":[{"id":6744,"name":"IERC777","nameLocations":["10191:7:13"],"nodeType":"IdentifierPath","referencedDeclaration":557,"src":"10191:7:13"}],"src":"10182:17:13"},"parameters":{"id":6743,"nodeType":"ParameterList","parameters":[],"src":"10170:2:13"},"returnParameters":{"id":6749,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6748,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6750,"src":"10214:16:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":6746,"name":"address","nodeType":"ElementaryTypeName","src":"10214:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":6747,"nodeType":"ArrayTypeName","src":"10214:9:13","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"10213:18:13"},"scope":6947,"src":"10145:87:13","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[530],"documentation":{"id":6751,"nodeType":"StructuredDocumentation","src":"10238:724:13","text":" @dev Moves `amount` tokens from `sender` to `recipient`. The caller must\n be an operator of `sender`.\n If send or receive hooks are registered for `sender` and `recipient`,\n the corresponding functions will be called with `data` and\n `operatorData`. See {IERC777Sender} and {IERC777Recipient}.\n @custom:emits a {Sent} event.\n @custom:requirements \n - `sender` cannot be the zero address.\n - `sender` must have at least `amount` tokens.\n - the caller must be an operator for `sender`.\n - `recipient` cannot be the zero address.\n - if `recipient` is a contract, it must implement the {IERC777Recipient}\n interface."},"functionSelector":"62ad1b83","id":6766,"implemented":false,"kind":"function","modifiers":[],"name":"operatorSend","nameLocation":"10976:12:13","nodeType":"FunctionDefinition","overrides":{"id":6764,"nodeType":"OverrideSpecifier","overrides":[{"id":6763,"name":"IERC777","nameLocations":["11154:7:13"],"nodeType":"IdentifierPath","referencedDeclaration":557,"src":"11154:7:13"}],"src":"11145:17:13"},"parameters":{"id":6762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6753,"mutability":"mutable","name":"sender","nameLocation":"11006:6:13","nodeType":"VariableDeclaration","scope":6766,"src":"10998:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6752,"name":"address","nodeType":"ElementaryTypeName","src":"10998:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6755,"mutability":"mutable","name":"recipient","nameLocation":"11030:9:13","nodeType":"VariableDeclaration","scope":6766,"src":"11022:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6754,"name":"address","nodeType":"ElementaryTypeName","src":"11022:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6757,"mutability":"mutable","name":"amount","nameLocation":"11057:6:13","nodeType":"VariableDeclaration","scope":6766,"src":"11049:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6756,"name":"uint256","nodeType":"ElementaryTypeName","src":"11049:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6759,"mutability":"mutable","name":"data","nameLocation":"11088:4:13","nodeType":"VariableDeclaration","scope":6766,"src":"11073:19:13","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6758,"name":"bytes","nodeType":"ElementaryTypeName","src":"11073:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":6761,"mutability":"mutable","name":"operatorData","nameLocation":"11117:12:13","nodeType":"VariableDeclaration","scope":6766,"src":"11102:27:13","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6760,"name":"bytes","nodeType":"ElementaryTypeName","src":"11102:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"10988:147:13"},"returnParameters":{"id":6765,"nodeType":"ParameterList","parameters":[],"src":"11162:0:13"},"scope":6947,"src":"10967:196:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[542],"documentation":{"id":6767,"nodeType":"StructuredDocumentation","src":"11169:542:13","text":" @dev Destroys `amount` tokens from `account`, reducing the total supply.\n The caller must be an operator of `account`.\n If a send hook is registered for `account`, the corresponding function\n will be called with `data` and `operatorData`. See {IERC777Sender}.\n @custom:emits a {Burned} event.\n @custom:requirements \n - `account` cannot be the zero address.\n - `account` must have at least `amount` tokens.\n - the caller must be an operator for `account`."},"functionSelector":"fc673c4f","id":6780,"implemented":false,"kind":"function","modifiers":[],"name":"operatorBurn","nameLocation":"11725:12:13","nodeType":"FunctionDefinition","overrides":{"id":6778,"nodeType":"OverrideSpecifier","overrides":[{"id":6777,"name":"IERC777","nameLocations":["11877:7:13"],"nodeType":"IdentifierPath","referencedDeclaration":557,"src":"11877:7:13"}],"src":"11868:17:13"},"parameters":{"id":6776,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6769,"mutability":"mutable","name":"account","nameLocation":"11755:7:13","nodeType":"VariableDeclaration","scope":6780,"src":"11747:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6768,"name":"address","nodeType":"ElementaryTypeName","src":"11747:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6771,"mutability":"mutable","name":"amount","nameLocation":"11780:6:13","nodeType":"VariableDeclaration","scope":6780,"src":"11772:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6770,"name":"uint256","nodeType":"ElementaryTypeName","src":"11772:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6773,"mutability":"mutable","name":"data","nameLocation":"11811:4:13","nodeType":"VariableDeclaration","scope":6780,"src":"11796:19:13","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6772,"name":"bytes","nodeType":"ElementaryTypeName","src":"11796:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":6775,"mutability":"mutable","name":"operatorData","nameLocation":"11840:12:13","nodeType":"VariableDeclaration","scope":6780,"src":"11825:27:13","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6774,"name":"bytes","nodeType":"ElementaryTypeName","src":"11825:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"11737:121:13"},"returnParameters":{"id":6779,"nodeType":"ParameterList","parameters":[],"src":"11885:0:13"},"scope":6947,"src":"11716:170:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6781,"nodeType":"StructuredDocumentation","src":"12094:107:13","text":" @dev Mint new tokens for the account\n @custom:modifiers \n - onlySelf"},"functionSelector":"c68d4283","id":6790,"implemented":false,"kind":"function","modifiers":[],"name":"selfMint","nameLocation":"12215:8:13","nodeType":"FunctionDefinition","parameters":{"id":6788,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6783,"mutability":"mutable","name":"account","nameLocation":"12241:7:13","nodeType":"VariableDeclaration","scope":6790,"src":"12233:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6782,"name":"address","nodeType":"ElementaryTypeName","src":"12233:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6785,"mutability":"mutable","name":"amount","nameLocation":"12266:6:13","nodeType":"VariableDeclaration","scope":6790,"src":"12258:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6784,"name":"uint256","nodeType":"ElementaryTypeName","src":"12258:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6787,"mutability":"mutable","name":"userData","nameLocation":"12295:8:13","nodeType":"VariableDeclaration","scope":6790,"src":"12282:21:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6786,"name":"bytes","nodeType":"ElementaryTypeName","src":"12282:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"12223:86:13"},"returnParameters":{"id":6789,"nodeType":"ParameterList","parameters":[],"src":"12318:0:13"},"scope":6947,"src":"12206:113:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6791,"nodeType":"StructuredDocumentation","src":"12324:107:13","text":" @dev Burn existing tokens for the account\n @custom:modifiers \n - onlySelf"},"functionSelector":"9d876741","id":6800,"implemented":false,"kind":"function","modifiers":[],"name":"selfBurn","nameLocation":"12444:8:13","nodeType":"FunctionDefinition","parameters":{"id":6798,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6793,"mutability":"mutable","name":"account","nameLocation":"12469:7:13","nodeType":"VariableDeclaration","scope":6800,"src":"12461:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6792,"name":"address","nodeType":"ElementaryTypeName","src":"12461:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6795,"mutability":"mutable","name":"amount","nameLocation":"12493:6:13","nodeType":"VariableDeclaration","scope":6800,"src":"12485:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6794,"name":"uint256","nodeType":"ElementaryTypeName","src":"12485:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6797,"mutability":"mutable","name":"userData","nameLocation":"12521:8:13","nodeType":"VariableDeclaration","scope":6800,"src":"12508:21:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6796,"name":"bytes","nodeType":"ElementaryTypeName","src":"12508:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"12452:82:13"},"returnParameters":{"id":6799,"nodeType":"ParameterList","parameters":[],"src":"12543:0:13"},"scope":6947,"src":"12435:109:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6801,"nodeType":"StructuredDocumentation","src":"12549:245:13","text":" @dev Transfer `amount` tokens from the `sender` to `recipient`.\n If `spender` isn't the same as `sender`, checks if `spender` has allowance to\n spend tokens of `sender`.\n @custom:modifiers \n - onlySelf"},"functionSelector":"41b706be","id":6812,"implemented":false,"kind":"function","modifiers":[],"name":"selfTransferFrom","nameLocation":"12807:16:13","nodeType":"FunctionDefinition","parameters":{"id":6810,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6803,"mutability":"mutable","name":"sender","nameLocation":"12841:6:13","nodeType":"VariableDeclaration","scope":6812,"src":"12833:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6802,"name":"address","nodeType":"ElementaryTypeName","src":"12833:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6805,"mutability":"mutable","name":"spender","nameLocation":"12865:7:13","nodeType":"VariableDeclaration","scope":6812,"src":"12857:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6804,"name":"address","nodeType":"ElementaryTypeName","src":"12857:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6807,"mutability":"mutable","name":"recipient","nameLocation":"12890:9:13","nodeType":"VariableDeclaration","scope":6812,"src":"12882:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6806,"name":"address","nodeType":"ElementaryTypeName","src":"12882:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6809,"mutability":"mutable","name":"amount","nameLocation":"12917:6:13","nodeType":"VariableDeclaration","scope":6812,"src":"12909:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6808,"name":"uint256","nodeType":"ElementaryTypeName","src":"12909:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12823:105:13"},"returnParameters":{"id":6811,"nodeType":"ParameterList","parameters":[],"src":"12937:0:13"},"scope":6947,"src":"12798:140:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6813,"nodeType":"StructuredDocumentation","src":"12943:145:13","text":" @dev Give `spender`, `amount` allowance to spend the tokens of\n `account`.\n @custom:modifiers \n - onlySelf"},"functionSelector":"66a12fb6","id":6822,"implemented":false,"kind":"function","modifiers":[],"name":"selfApproveFor","nameLocation":"13101:14:13","nodeType":"FunctionDefinition","parameters":{"id":6820,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6815,"mutability":"mutable","name":"account","nameLocation":"13133:7:13","nodeType":"VariableDeclaration","scope":6822,"src":"13125:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6814,"name":"address","nodeType":"ElementaryTypeName","src":"13125:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6817,"mutability":"mutable","name":"spender","nameLocation":"13158:7:13","nodeType":"VariableDeclaration","scope":6822,"src":"13150:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6816,"name":"address","nodeType":"ElementaryTypeName","src":"13150:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6819,"mutability":"mutable","name":"amount","nameLocation":"13183:6:13","nodeType":"VariableDeclaration","scope":6822,"src":"13175:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6818,"name":"uint256","nodeType":"ElementaryTypeName","src":"13175:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13115:79:13"},"returnParameters":{"id":6821,"nodeType":"ParameterList","parameters":[],"src":"13203:0:13"},"scope":6947,"src":"13092:112:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6823,"nodeType":"StructuredDocumentation","src":"13405:87:13","text":" @dev Transfer all available balance from `msg.sender` to `recipient`"},"functionSelector":"a3a7e7f3","id":6828,"implemented":false,"kind":"function","modifiers":[],"name":"transferAll","nameLocation":"13506:11:13","nodeType":"FunctionDefinition","parameters":{"id":6826,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6825,"mutability":"mutable","name":"recipient","nameLocation":"13526:9:13","nodeType":"VariableDeclaration","scope":6828,"src":"13518:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6824,"name":"address","nodeType":"ElementaryTypeName","src":"13518:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"13517:19:13"},"returnParameters":{"id":6827,"nodeType":"ParameterList","parameters":[],"src":"13545:0:13"},"scope":6947,"src":"13497:49:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6829,"nodeType":"StructuredDocumentation","src":"13735:110:13","text":" @dev Return the underlying token contract\n @return tokenAddr Underlying token address"},"functionSelector":"ee719bc8","id":6834,"implemented":false,"kind":"function","modifiers":[],"name":"getUnderlyingToken","nameLocation":"13859:18:13","nodeType":"FunctionDefinition","parameters":{"id":6830,"nodeType":"ParameterList","parameters":[],"src":"13877:2:13"},"returnParameters":{"id":6833,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6832,"mutability":"mutable","name":"tokenAddr","nameLocation":"13910:9:13","nodeType":"VariableDeclaration","scope":6834,"src":"13902:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6831,"name":"address","nodeType":"ElementaryTypeName","src":"13902:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"13901:19:13"},"scope":6947,"src":"13850:71:13","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":6835,"nodeType":"StructuredDocumentation","src":"13927:262:13","text":" @dev Upgrade ERC20 to SuperToken.\n @param amount Number of tokens to be upgraded (in 18 decimals)\n @custom:note It will use `transferFrom` to get tokens. Before calling this\n function you should `approve` this contract"},"functionSelector":"45977d03","id":6840,"implemented":false,"kind":"function","modifiers":[],"name":"upgrade","nameLocation":"14203:7:13","nodeType":"FunctionDefinition","parameters":{"id":6838,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6837,"mutability":"mutable","name":"amount","nameLocation":"14219:6:13","nodeType":"VariableDeclaration","scope":6840,"src":"14211:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6836,"name":"uint256","nodeType":"ElementaryTypeName","src":"14211:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14210:16:13"},"returnParameters":{"id":6839,"nodeType":"ParameterList","parameters":[],"src":"14235:0:13"},"scope":6947,"src":"14194:42:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6841,"nodeType":"StructuredDocumentation","src":"14242:679:13","text":" @dev Upgrade ERC20 to SuperToken and transfer immediately\n @param to The account to receive upgraded tokens\n @param amount Number of tokens to be upgraded (in 18 decimals)\n @param data User data for the TokensRecipient callback\n @custom:note It will use `transferFrom` to get tokens. Before calling this\n function you should `approve` this contract\n \n @custom:warning\n - there is potential of reentrancy IF the \"to\" account is a registered ERC777 recipient.\n @custom:requirements \n - if `data` is NOT empty AND `to` is a contract, it MUST be a registered ERC777 recipient otherwise it reverts."},"functionSelector":"5b9d09cc","id":6850,"implemented":false,"kind":"function","modifiers":[],"name":"upgradeTo","nameLocation":"14935:9:13","nodeType":"FunctionDefinition","parameters":{"id":6848,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6843,"mutability":"mutable","name":"to","nameLocation":"14953:2:13","nodeType":"VariableDeclaration","scope":6850,"src":"14945:10:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6842,"name":"address","nodeType":"ElementaryTypeName","src":"14945:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6845,"mutability":"mutable","name":"amount","nameLocation":"14965:6:13","nodeType":"VariableDeclaration","scope":6850,"src":"14957:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6844,"name":"uint256","nodeType":"ElementaryTypeName","src":"14957:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6847,"mutability":"mutable","name":"data","nameLocation":"14988:4:13","nodeType":"VariableDeclaration","scope":6850,"src":"14973:19:13","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6846,"name":"bytes","nodeType":"ElementaryTypeName","src":"14973:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"14944:49:13"},"returnParameters":{"id":6849,"nodeType":"ParameterList","parameters":[],"src":"15002:0:13"},"scope":6947,"src":"14926:77:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":6851,"nodeType":"StructuredDocumentation","src":"15009:166:13","text":" @dev Token upgrade event\n @param account Account where tokens are upgraded to\n @param amount Amount of tokens upgraded (in 18 decimals)"},"eventSelector":"25ca84076773b0455db53621c459ddc84fe40840e4932a62706a032566f399df","id":6857,"name":"TokenUpgraded","nameLocation":"15186:13:13","nodeType":"EventDefinition","parameters":{"id":6856,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6853,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"15225:7:13","nodeType":"VariableDeclaration","scope":6857,"src":"15209:23:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6852,"name":"address","nodeType":"ElementaryTypeName","src":"15209:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6855,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"15250:6:13","nodeType":"VariableDeclaration","scope":6857,"src":"15242:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6854,"name":"uint256","nodeType":"ElementaryTypeName","src":"15242:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15199:63:13"},"src":"15180:83:13"},{"documentation":{"id":6858,"nodeType":"StructuredDocumentation","src":"15269:158:13","text":" @dev Downgrade SuperToken to ERC20.\n @dev It will call transfer to send tokens\n @param amount Number of tokens to be downgraded"},"functionSelector":"11bcc81e","id":6863,"implemented":false,"kind":"function","modifiers":[],"name":"downgrade","nameLocation":"15441:9:13","nodeType":"FunctionDefinition","parameters":{"id":6861,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6860,"mutability":"mutable","name":"amount","nameLocation":"15459:6:13","nodeType":"VariableDeclaration","scope":6863,"src":"15451:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6859,"name":"uint256","nodeType":"ElementaryTypeName","src":"15451:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15450:16:13"},"returnParameters":{"id":6862,"nodeType":"ParameterList","parameters":[],"src":"15475:0:13"},"scope":6947,"src":"15432:44:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6864,"nodeType":"StructuredDocumentation","src":"15482:208:13","text":" @dev Downgrade SuperToken to ERC20 and transfer immediately\n @param to The account to receive downgraded tokens\n @param amount Number of tokens to be downgraded (in 18 decimals)"},"functionSelector":"83ba2525","id":6871,"implemented":false,"kind":"function","modifiers":[],"name":"downgradeTo","nameLocation":"15704:11:13","nodeType":"FunctionDefinition","parameters":{"id":6869,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6866,"mutability":"mutable","name":"to","nameLocation":"15724:2:13","nodeType":"VariableDeclaration","scope":6871,"src":"15716:10:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6865,"name":"address","nodeType":"ElementaryTypeName","src":"15716:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6868,"mutability":"mutable","name":"amount","nameLocation":"15736:6:13","nodeType":"VariableDeclaration","scope":6871,"src":"15728:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6867,"name":"uint256","nodeType":"ElementaryTypeName","src":"15728:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15715:28:13"},"returnParameters":{"id":6870,"nodeType":"ParameterList","parameters":[],"src":"15752:0:13"},"scope":6947,"src":"15695:58:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":6872,"nodeType":"StructuredDocumentation","src":"15759:152:13","text":" @dev Token downgrade event\n @param account Account whose tokens are downgraded\n @param amount Amount of tokens downgraded"},"eventSelector":"3bc27981aebbb57f9247dc00fde9d6cd91e4b230083fec3238fedbcba1f9ab3d","id":6878,"name":"TokenDowngraded","nameLocation":"15922:15:13","nodeType":"EventDefinition","parameters":{"id":6877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6874,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"15963:7:13","nodeType":"VariableDeclaration","scope":6878,"src":"15947:23:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6873,"name":"address","nodeType":"ElementaryTypeName","src":"15947:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6876,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"15988:6:13","nodeType":"VariableDeclaration","scope":6878,"src":"15980:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6875,"name":"uint256","nodeType":"ElementaryTypeName","src":"15980:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15937:63:13"},"src":"15916:85:13"},{"documentation":{"id":6879,"nodeType":"StructuredDocumentation","src":"16190:277:13","text":" @dev Perform ERC20 approve by host contract.\n @param account The account owner to be approved.\n @param spender The spender of account owner's funds.\n @param amount Number of tokens to be approved.\n @custom:modifiers \n - onlyHost"},"functionSelector":"62aa5287","id":6888,"implemented":false,"kind":"function","modifiers":[],"name":"operationApprove","nameLocation":"16481:16:13","nodeType":"FunctionDefinition","parameters":{"id":6886,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6881,"mutability":"mutable","name":"account","nameLocation":"16515:7:13","nodeType":"VariableDeclaration","scope":6888,"src":"16507:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6880,"name":"address","nodeType":"ElementaryTypeName","src":"16507:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6883,"mutability":"mutable","name":"spender","nameLocation":"16540:7:13","nodeType":"VariableDeclaration","scope":6888,"src":"16532:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6882,"name":"address","nodeType":"ElementaryTypeName","src":"16532:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6885,"mutability":"mutable","name":"amount","nameLocation":"16565:6:13","nodeType":"VariableDeclaration","scope":6888,"src":"16557:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6884,"name":"uint256","nodeType":"ElementaryTypeName","src":"16557:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16497:80:13"},"returnParameters":{"id":6887,"nodeType":"ParameterList","parameters":[],"src":"16586:0:13"},"scope":6947,"src":"16472:115:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"4b2763b3","id":6897,"implemented":false,"kind":"function","modifiers":[],"name":"operationIncreaseAllowance","nameLocation":"16602:26:13","nodeType":"FunctionDefinition","parameters":{"id":6895,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6890,"mutability":"mutable","name":"account","nameLocation":"16646:7:13","nodeType":"VariableDeclaration","scope":6897,"src":"16638:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6889,"name":"address","nodeType":"ElementaryTypeName","src":"16638:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6892,"mutability":"mutable","name":"spender","nameLocation":"16671:7:13","nodeType":"VariableDeclaration","scope":6897,"src":"16663:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6891,"name":"address","nodeType":"ElementaryTypeName","src":"16663:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6894,"mutability":"mutable","name":"addedValue","nameLocation":"16696:10:13","nodeType":"VariableDeclaration","scope":6897,"src":"16688:18:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6893,"name":"uint256","nodeType":"ElementaryTypeName","src":"16688:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16628:84:13"},"returnParameters":{"id":6896,"nodeType":"ParameterList","parameters":[],"src":"16721:0:13"},"scope":6947,"src":"16593:129:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"c780fd82","id":6906,"implemented":false,"kind":"function","modifiers":[],"name":"operationDecreaseAllowance","nameLocation":"16737:26:13","nodeType":"FunctionDefinition","parameters":{"id":6904,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6899,"mutability":"mutable","name":"account","nameLocation":"16781:7:13","nodeType":"VariableDeclaration","scope":6906,"src":"16773:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6898,"name":"address","nodeType":"ElementaryTypeName","src":"16773:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6901,"mutability":"mutable","name":"spender","nameLocation":"16806:7:13","nodeType":"VariableDeclaration","scope":6906,"src":"16798:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6900,"name":"address","nodeType":"ElementaryTypeName","src":"16798:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6903,"mutability":"mutable","name":"subtractedValue","nameLocation":"16831:15:13","nodeType":"VariableDeclaration","scope":6906,"src":"16823:23:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6902,"name":"uint256","nodeType":"ElementaryTypeName","src":"16823:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16763:89:13"},"returnParameters":{"id":6905,"nodeType":"ParameterList","parameters":[],"src":"16861:0:13"},"scope":6947,"src":"16728:134:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6907,"nodeType":"StructuredDocumentation","src":"16868:343:13","text":" @dev Perform ERC20 transferFrom by host contract.\n @param account The account to spend sender's funds.\n @param spender The account where the funds is sent from.\n @param recipient The recipient of the funds.\n @param amount Number of tokens to be transferred.\n @custom:modifiers \n - onlyHost"},"functionSelector":"16d055d6","id":6918,"implemented":false,"kind":"function","modifiers":[],"name":"operationTransferFrom","nameLocation":"17225:21:13","nodeType":"FunctionDefinition","parameters":{"id":6916,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6909,"mutability":"mutable","name":"account","nameLocation":"17264:7:13","nodeType":"VariableDeclaration","scope":6918,"src":"17256:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6908,"name":"address","nodeType":"ElementaryTypeName","src":"17256:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6911,"mutability":"mutable","name":"spender","nameLocation":"17289:7:13","nodeType":"VariableDeclaration","scope":6918,"src":"17281:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6910,"name":"address","nodeType":"ElementaryTypeName","src":"17281:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6913,"mutability":"mutable","name":"recipient","nameLocation":"17314:9:13","nodeType":"VariableDeclaration","scope":6918,"src":"17306:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6912,"name":"address","nodeType":"ElementaryTypeName","src":"17306:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6915,"mutability":"mutable","name":"amount","nameLocation":"17341:6:13","nodeType":"VariableDeclaration","scope":6918,"src":"17333:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6914,"name":"uint256","nodeType":"ElementaryTypeName","src":"17333:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17246:107:13"},"returnParameters":{"id":6917,"nodeType":"ParameterList","parameters":[],"src":"17362:0:13"},"scope":6947,"src":"17216:147:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6919,"nodeType":"StructuredDocumentation","src":"17369:325:13","text":" @dev Perform ERC777 send by host contract.\n @param spender The account where the funds is sent from.\n @param recipient The recipient of the funds.\n @param amount Number of tokens to be transferred.\n @param data Arbitrary user inputted data\n @custom:modifiers \n - onlyHost"},"functionSelector":"ca0c1e7f","id":6930,"implemented":false,"kind":"function","modifiers":[],"name":"operationSend","nameLocation":"17708:13:13","nodeType":"FunctionDefinition","parameters":{"id":6928,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6921,"mutability":"mutable","name":"spender","nameLocation":"17739:7:13","nodeType":"VariableDeclaration","scope":6930,"src":"17731:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6920,"name":"address","nodeType":"ElementaryTypeName","src":"17731:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6923,"mutability":"mutable","name":"recipient","nameLocation":"17764:9:13","nodeType":"VariableDeclaration","scope":6930,"src":"17756:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6922,"name":"address","nodeType":"ElementaryTypeName","src":"17756:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6925,"mutability":"mutable","name":"amount","nameLocation":"17791:6:13","nodeType":"VariableDeclaration","scope":6930,"src":"17783:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6924,"name":"uint256","nodeType":"ElementaryTypeName","src":"17783:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6927,"mutability":"mutable","name":"data","nameLocation":"17820:4:13","nodeType":"VariableDeclaration","scope":6930,"src":"17807:17:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6926,"name":"bytes","nodeType":"ElementaryTypeName","src":"17807:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"17721:109:13"},"returnParameters":{"id":6929,"nodeType":"ParameterList","parameters":[],"src":"17839:0:13"},"scope":6947,"src":"17699:141:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6931,"nodeType":"StructuredDocumentation","src":"17846:233:13","text":" @dev Upgrade ERC20 to SuperToken by host contract.\n @param account The account to be changed.\n @param amount Number of tokens to be upgraded (in 18 decimals)\n @custom:modifiers \n - onlyHost"},"functionSelector":"ca789464","id":6938,"implemented":false,"kind":"function","modifiers":[],"name":"operationUpgrade","nameLocation":"18093:16:13","nodeType":"FunctionDefinition","parameters":{"id":6936,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6933,"mutability":"mutable","name":"account","nameLocation":"18118:7:13","nodeType":"VariableDeclaration","scope":6938,"src":"18110:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6932,"name":"address","nodeType":"ElementaryTypeName","src":"18110:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6935,"mutability":"mutable","name":"amount","nameLocation":"18135:6:13","nodeType":"VariableDeclaration","scope":6938,"src":"18127:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6934,"name":"uint256","nodeType":"ElementaryTypeName","src":"18127:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18109:33:13"},"returnParameters":{"id":6937,"nodeType":"ParameterList","parameters":[],"src":"18151:0:13"},"scope":6947,"src":"18084:68:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6939,"nodeType":"StructuredDocumentation","src":"18158:237:13","text":" @dev Downgrade ERC20 to SuperToken by host contract.\n @param account The account to be changed.\n @param amount Number of tokens to be downgraded (in 18 decimals)\n @custom:modifiers \n - onlyHost"},"functionSelector":"245887fc","id":6946,"implemented":false,"kind":"function","modifiers":[],"name":"operationDowngrade","nameLocation":"18409:18:13","nodeType":"FunctionDefinition","parameters":{"id":6944,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6941,"mutability":"mutable","name":"account","nameLocation":"18436:7:13","nodeType":"VariableDeclaration","scope":6946,"src":"18428:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6940,"name":"address","nodeType":"ElementaryTypeName","src":"18428:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6943,"mutability":"mutable","name":"amount","nameLocation":"18453:6:13","nodeType":"VariableDeclaration","scope":6946,"src":"18445:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6942,"name":"uint256","nodeType":"ElementaryTypeName","src":"18445:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18427:33:13"},"returnParameters":{"id":6945,"nodeType":"ParameterList","parameters":[],"src":"18469:0:13"},"scope":6947,"src":"18400:70:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":6948,"src":"471:18529:13","usedErrors":[6532,6534,6536,6538,6540,6542,6544,6546,6548,6550,6552,6554,7735,7737,7739,7741,7743,7745]}],"src":"35:18966:13"},"id":13},"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperTokenFactory.sol":{"ast":{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperTokenFactory.sol","exportedSymbols":{"ERC20WithTokenInfo":[8026],"IERC20":[77],"ISuperToken":[6947],"ISuperTokenFactory":[7077]},"id":7078,"license":"AGPLv3","nodeType":"SourceUnit","nodes":[{"id":6949,"literals":["solidity",">=","0.8",".4"],"nodeType":"PragmaDirective","src":"35:25:14"},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.sol","file":"./ISuperToken.sol","id":6951,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7078,"sourceUnit":6948,"src":"62:48:14","symbolAliases":[{"foreign":{"id":6950,"name":"ISuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6947,"src":"71:11:14","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo.sol","file":"../tokens/ERC20WithTokenInfo.sol","id":6954,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7078,"sourceUnit":8027,"src":"112:86:14","symbolAliases":[{"foreign":{"id":6952,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77,"src":"125:6:14","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":6953,"name":"ERC20WithTokenInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8026,"src":"137:18:14","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"ISuperTokenFactory","contractDependencies":[],"contractKind":"interface","documentation":{"id":6955,"nodeType":"StructuredDocumentation","src":"200:69:14","text":" @title Super token factory interface\n @author Superfluid"},"fullyImplemented":false,"id":7077,"linearizedBaseContracts":[7077],"name":"ISuperTokenFactory","nameLocation":"280:18:14","nodeType":"ContractDefinition","nodes":[{"errorSelector":"91d67972","id":6957,"name":"SUPER_TOKEN_FACTORY_ALREADY_EXISTS","nameLocation":"486:34:14","nodeType":"ErrorDefinition","parameters":{"id":6956,"nodeType":"ParameterList","parameters":[],"src":"520:2:14"},"src":"480:43:14"},{"errorSelector":"872cac48","id":6959,"name":"SUPER_TOKEN_FACTORY_DOES_NOT_EXIST","nameLocation":"564:34:14","nodeType":"ErrorDefinition","parameters":{"id":6958,"nodeType":"ParameterList","parameters":[],"src":"598:2:14"},"src":"558:43:14"},{"errorSelector":"1b39b9b4","id":6961,"name":"SUPER_TOKEN_FACTORY_UNINITIALIZED","nameLocation":"642:33:14","nodeType":"ErrorDefinition","parameters":{"id":6960,"nodeType":"ParameterList","parameters":[],"src":"675:2:14"},"src":"636:42:14"},{"errorSelector":"478b8e83","id":6963,"name":"SUPER_TOKEN_FACTORY_ONLY_HOST","nameLocation":"720:29:14","nodeType":"ErrorDefinition","parameters":{"id":6962,"nodeType":"ParameterList","parameters":[],"src":"749:2:14"},"src":"714:38:14"},{"errorSelector":"c4901a43","id":6965,"name":"SUPER_TOKEN_FACTORY_NON_UPGRADEABLE_IS_DEPRECATED","nameLocation":"798:49:14","nodeType":"ErrorDefinition","parameters":{"id":6964,"nodeType":"ParameterList","parameters":[],"src":"847:2:14"},"src":"792:58:14"},{"errorSelector":"305c9e82","id":6967,"name":"SUPER_TOKEN_FACTORY_ZERO_ADDRESS","nameLocation":"876:32:14","nodeType":"ErrorDefinition","parameters":{"id":6966,"nodeType":"ParameterList","parameters":[],"src":"908:2:14"},"src":"870:41:14"},{"documentation":{"id":6968,"nodeType":"StructuredDocumentation","src":"949:60:14","text":" @dev Get superfluid host contract address"},"functionSelector":"20bc4425","id":6973,"implemented":false,"kind":"function","modifiers":[],"name":"getHost","nameLocation":"1023:7:14","nodeType":"FunctionDefinition","parameters":{"id":6969,"nodeType":"ParameterList","parameters":[],"src":"1030:2:14"},"returnParameters":{"id":6972,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6971,"mutability":"mutable","name":"host","nameLocation":"1063:4:14","nodeType":"VariableDeclaration","scope":6973,"src":"1055:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6970,"name":"address","nodeType":"ElementaryTypeName","src":"1055:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1054:14:14"},"scope":7077,"src":"1014:55:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":6974,"nodeType":"StructuredDocumentation","src":"1075:32:14","text":"@dev Initialize the contract"},"functionSelector":"8129fc1c","id":6977,"implemented":false,"kind":"function","modifiers":[],"name":"initialize","nameLocation":"1121:10:14","nodeType":"FunctionDefinition","parameters":{"id":6975,"nodeType":"ParameterList","parameters":[],"src":"1131:2:14"},"returnParameters":{"id":6976,"nodeType":"ParameterList","parameters":[],"src":"1142:0:14"},"scope":7077,"src":"1112:31:14","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6978,"nodeType":"StructuredDocumentation","src":"1149:77:14","text":" @dev Get the current super token logic used by the factory"},"functionSelector":"9470a5b2","id":6984,"implemented":false,"kind":"function","modifiers":[],"name":"getSuperTokenLogic","nameLocation":"1240:18:14","nodeType":"FunctionDefinition","parameters":{"id":6979,"nodeType":"ParameterList","parameters":[],"src":"1258:2:14"},"returnParameters":{"id":6983,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6982,"mutability":"mutable","name":"superToken","nameLocation":"1296:10:14","nodeType":"VariableDeclaration","scope":6984,"src":"1284:22:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":6981,"nodeType":"UserDefinedTypeName","pathNode":{"id":6980,"name":"ISuperToken","nameLocations":["1284:11:14"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"1284:11:14"},"referencedDeclaration":6947,"src":"1284:11:14","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"}],"src":"1283:24:14"},"scope":7077,"src":"1231:77:14","stateMutability":"view","virtual":false,"visibility":"external"},{"canonicalName":"ISuperTokenFactory.Upgradability","id":6988,"members":[{"id":6985,"name":"NON_UPGRADABLE","nameLocation":"1472:14:14","nodeType":"EnumValue","src":"1472:14:14"},{"id":6986,"name":"SEMI_UPGRADABLE","nameLocation":"1566:15:14","nodeType":"EnumValue","src":"1566:15:14"},{"id":6987,"name":"FULL_UPGRADABLE","nameLocation":"1645:15:14","nodeType":"EnumValue","src":"1645:15:14"}],"name":"Upgradability","nameLocation":"1367:13:14","nodeType":"EnumDefinition","src":"1362:304:14"},{"documentation":{"id":6989,"nodeType":"StructuredDocumentation","src":"1672:398:14","text":" @notice Create new super token wrapper for the underlying ERC20 token\n @param underlyingToken Underlying ERC20 token\n @param underlyingDecimals Underlying token decimals\n @param upgradability Upgradability mode\n @param name Super token name\n @param symbol Super token symbol\n @return superToken The deployed and initialized wrapper super token"},"functionSelector":"a6d0c534","id":7007,"implemented":false,"kind":"function","modifiers":[],"name":"createERC20Wrapper","nameLocation":"2084:18:14","nodeType":"FunctionDefinition","parameters":{"id":7002,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6992,"mutability":"mutable","name":"underlyingToken","nameLocation":"2119:15:14","nodeType":"VariableDeclaration","scope":7007,"src":"2112:22:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$77","typeString":"contract IERC20"},"typeName":{"id":6991,"nodeType":"UserDefinedTypeName","pathNode":{"id":6990,"name":"IERC20","nameLocations":["2112:6:14"],"nodeType":"IdentifierPath","referencedDeclaration":77,"src":"2112:6:14"},"referencedDeclaration":77,"src":"2112:6:14","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$77","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":6994,"mutability":"mutable","name":"underlyingDecimals","nameLocation":"2150:18:14","nodeType":"VariableDeclaration","scope":7007,"src":"2144:24:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6993,"name":"uint8","nodeType":"ElementaryTypeName","src":"2144:5:14","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":6997,"mutability":"mutable","name":"upgradability","nameLocation":"2192:13:14","nodeType":"VariableDeclaration","scope":7007,"src":"2178:27:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Upgradability_$6988","typeString":"enum ISuperTokenFactory.Upgradability"},"typeName":{"id":6996,"nodeType":"UserDefinedTypeName","pathNode":{"id":6995,"name":"Upgradability","nameLocations":["2178:13:14"],"nodeType":"IdentifierPath","referencedDeclaration":6988,"src":"2178:13:14"},"referencedDeclaration":6988,"src":"2178:13:14","typeDescriptions":{"typeIdentifier":"t_enum$_Upgradability_$6988","typeString":"enum ISuperTokenFactory.Upgradability"}},"visibility":"internal"},{"constant":false,"id":6999,"mutability":"mutable","name":"name","nameLocation":"2231:4:14","nodeType":"VariableDeclaration","scope":7007,"src":"2215:20:14","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":6998,"name":"string","nodeType":"ElementaryTypeName","src":"2215:6:14","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":7001,"mutability":"mutable","name":"symbol","nameLocation":"2261:6:14","nodeType":"VariableDeclaration","scope":7007,"src":"2245:22:14","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":7000,"name":"string","nodeType":"ElementaryTypeName","src":"2245:6:14","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2102:171:14"},"returnParameters":{"id":7006,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7005,"mutability":"mutable","name":"superToken","nameLocation":"2320:10:14","nodeType":"VariableDeclaration","scope":7007,"src":"2308:22:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":7004,"nodeType":"UserDefinedTypeName","pathNode":{"id":7003,"name":"ISuperToken","nameLocations":["2308:11:14"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"2308:11:14"},"referencedDeclaration":6947,"src":"2308:11:14","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"}],"src":"2307:24:14"},"scope":7077,"src":"2075:257:14","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7008,"nodeType":"StructuredDocumentation","src":"2338:433:14","text":" @notice Create new super token wrapper for the underlying ERC20 token with extra token info\n @param underlyingToken Underlying ERC20 token\n @param upgradability Upgradability mode\n @param name Super token name\n @param symbol Super token symbol\n @return superToken The deployed and initialized wrapper super token\n NOTE:\n - It assumes token provide the .decimals() function"},"functionSelector":"431f1481","id":7024,"implemented":false,"kind":"function","modifiers":[],"name":"createERC20Wrapper","nameLocation":"2785:18:14","nodeType":"FunctionDefinition","parameters":{"id":7019,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7011,"mutability":"mutable","name":"underlyingToken","nameLocation":"2832:15:14","nodeType":"VariableDeclaration","scope":7024,"src":"2813:34:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20WithTokenInfo_$8026","typeString":"contract ERC20WithTokenInfo"},"typeName":{"id":7010,"nodeType":"UserDefinedTypeName","pathNode":{"id":7009,"name":"ERC20WithTokenInfo","nameLocations":["2813:18:14"],"nodeType":"IdentifierPath","referencedDeclaration":8026,"src":"2813:18:14"},"referencedDeclaration":8026,"src":"2813:18:14","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20WithTokenInfo_$8026","typeString":"contract ERC20WithTokenInfo"}},"visibility":"internal"},{"constant":false,"id":7014,"mutability":"mutable","name":"upgradability","nameLocation":"2871:13:14","nodeType":"VariableDeclaration","scope":7024,"src":"2857:27:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Upgradability_$6988","typeString":"enum ISuperTokenFactory.Upgradability"},"typeName":{"id":7013,"nodeType":"UserDefinedTypeName","pathNode":{"id":7012,"name":"Upgradability","nameLocations":["2857:13:14"],"nodeType":"IdentifierPath","referencedDeclaration":6988,"src":"2857:13:14"},"referencedDeclaration":6988,"src":"2857:13:14","typeDescriptions":{"typeIdentifier":"t_enum$_Upgradability_$6988","typeString":"enum ISuperTokenFactory.Upgradability"}},"visibility":"internal"},{"constant":false,"id":7016,"mutability":"mutable","name":"name","nameLocation":"2910:4:14","nodeType":"VariableDeclaration","scope":7024,"src":"2894:20:14","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":7015,"name":"string","nodeType":"ElementaryTypeName","src":"2894:6:14","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":7018,"mutability":"mutable","name":"symbol","nameLocation":"2940:6:14","nodeType":"VariableDeclaration","scope":7024,"src":"2924:22:14","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":7017,"name":"string","nodeType":"ElementaryTypeName","src":"2924:6:14","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2803:149:14"},"returnParameters":{"id":7023,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7022,"mutability":"mutable","name":"superToken","nameLocation":"2999:10:14","nodeType":"VariableDeclaration","scope":7024,"src":"2987:22:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":7021,"nodeType":"UserDefinedTypeName","pathNode":{"id":7020,"name":"ISuperToken","nameLocations":["2987:11:14"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"2987:11:14"},"referencedDeclaration":6947,"src":"2987:11:14","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"}],"src":"2986:24:14"},"scope":7077,"src":"2776:235:14","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7025,"nodeType":"StructuredDocumentation","src":"3017:318:14","text":" @notice Creates a wrapper super token AND sets it in the canonical list OR reverts if it already exists\n @dev salt for create2 is the keccak256 hash of abi.encode(address(_underlyingToken))\n @param _underlyingToken Underlying ERC20 token\n @return ISuperToken the created supertoken"},"functionSelector":"151188dc","id":7034,"implemented":false,"kind":"function","modifiers":[],"name":"createCanonicalERC20Wrapper","nameLocation":"3349:27:14","nodeType":"FunctionDefinition","parameters":{"id":7029,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7028,"mutability":"mutable","name":"_underlyingToken","nameLocation":"3396:16:14","nodeType":"VariableDeclaration","scope":7034,"src":"3377:35:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20WithTokenInfo_$8026","typeString":"contract ERC20WithTokenInfo"},"typeName":{"id":7027,"nodeType":"UserDefinedTypeName","pathNode":{"id":7026,"name":"ERC20WithTokenInfo","nameLocations":["3377:18:14"],"nodeType":"IdentifierPath","referencedDeclaration":8026,"src":"3377:18:14"},"referencedDeclaration":8026,"src":"3377:18:14","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20WithTokenInfo_$8026","typeString":"contract ERC20WithTokenInfo"}},"visibility":"internal"}],"src":"3376:37:14"},"returnParameters":{"id":7033,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7032,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7034,"src":"3448:11:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":7031,"nodeType":"UserDefinedTypeName","pathNode":{"id":7030,"name":"ISuperToken","nameLocations":["3448:11:14"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"3448:11:14"},"referencedDeclaration":6947,"src":"3448:11:14","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"}],"src":"3447:13:14"},"scope":7077,"src":"3340:121:14","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7035,"nodeType":"StructuredDocumentation","src":"3467:502:14","text":" @notice Computes/Retrieves wrapper super token address given the underlying token address\n @dev We return from our canonical list if it already exists, otherwise we compute it\n @dev note that this function only computes addresses for SEMI_UPGRADABLE SuperTokens\n @param _underlyingToken Underlying ERC20 token address\n @return superTokenAddress Super token address\n @return isDeployed whether the super token is deployed AND set in the canonical mapping"},"functionSelector":"bab74c89","id":7044,"implemented":false,"kind":"function","modifiers":[],"name":"computeCanonicalERC20WrapperAddress","nameLocation":"3983:35:14","nodeType":"FunctionDefinition","parameters":{"id":7038,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7037,"mutability":"mutable","name":"_underlyingToken","nameLocation":"4027:16:14","nodeType":"VariableDeclaration","scope":7044,"src":"4019:24:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7036,"name":"address","nodeType":"ElementaryTypeName","src":"4019:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4018:26:14"},"returnParameters":{"id":7043,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7040,"mutability":"mutable","name":"superTokenAddress","nameLocation":"4100:17:14","nodeType":"VariableDeclaration","scope":7044,"src":"4092:25:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7039,"name":"address","nodeType":"ElementaryTypeName","src":"4092:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7042,"mutability":"mutable","name":"isDeployed","nameLocation":"4124:10:14","nodeType":"VariableDeclaration","scope":7044,"src":"4119:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7041,"name":"bool","nodeType":"ElementaryTypeName","src":"4119:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4091:44:14"},"scope":7077,"src":"3974:162:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7045,"nodeType":"StructuredDocumentation","src":"4142:314:14","text":" @notice Gets the canonical ERC20 wrapper super token address given the underlying token address\n @dev We return the address if it exists and the zero address otherwise\n @param _underlyingTokenAddress Underlying ERC20 token address\n @return superTokenAddress Super token address"},"functionSelector":"eff0a89d","id":7052,"implemented":false,"kind":"function","modifiers":[],"name":"getCanonicalERC20Wrapper","nameLocation":"4470:24:14","nodeType":"FunctionDefinition","parameters":{"id":7048,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7047,"mutability":"mutable","name":"_underlyingTokenAddress","nameLocation":"4503:23:14","nodeType":"VariableDeclaration","scope":7052,"src":"4495:31:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7046,"name":"address","nodeType":"ElementaryTypeName","src":"4495:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4494:33:14"},"returnParameters":{"id":7051,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7050,"mutability":"mutable","name":"superTokenAddress","nameLocation":"4583:17:14","nodeType":"VariableDeclaration","scope":7052,"src":"4575:25:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7049,"name":"address","nodeType":"ElementaryTypeName","src":"4575:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4574:27:14"},"scope":7077,"src":"4461:141:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7053,"nodeType":"StructuredDocumentation","src":"4608:131:14","text":" @dev Creates a new custom super token\n @param customSuperTokenProxy address of the custom supertoken proxy"},"functionSelector":"d412d344","id":7058,"implemented":false,"kind":"function","modifiers":[],"name":"initializeCustomSuperToken","nameLocation":"4753:26:14","nodeType":"FunctionDefinition","parameters":{"id":7056,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7055,"mutability":"mutable","name":"customSuperTokenProxy","nameLocation":"4797:21:14","nodeType":"VariableDeclaration","scope":7058,"src":"4789:29:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7054,"name":"address","nodeType":"ElementaryTypeName","src":"4789:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4779:45:14"},"returnParameters":{"id":7057,"nodeType":"ParameterList","parameters":[],"src":"4841:0:14"},"scope":7077,"src":"4744:98:14","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":7059,"nodeType":"StructuredDocumentation","src":"4848:103:14","text":" @dev Super token logic created event\n @param tokenLogic Token logic address"},"eventSelector":"c13fb19d60857980e565bf5dae406b8802d3c1cec50c6156b30b12b874029783","id":7064,"name":"SuperTokenLogicCreated","nameLocation":"4962:22:14","nodeType":"EventDefinition","parameters":{"id":7063,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7062,"indexed":true,"mutability":"mutable","name":"tokenLogic","nameLocation":"5005:10:14","nodeType":"VariableDeclaration","scope":7064,"src":"4985:30:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":7061,"nodeType":"UserDefinedTypeName","pathNode":{"id":7060,"name":"ISuperToken","nameLocations":["4985:11:14"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"4985:11:14"},"referencedDeclaration":6947,"src":"4985:11:14","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"}],"src":"4984:32:14"},"src":"4956:61:14"},{"anonymous":false,"documentation":{"id":7065,"nodeType":"StructuredDocumentation","src":"5023:106:14","text":" @dev Super token created event\n @param token Newly created super token address"},"eventSelector":"b52c6d9d122e8c07769b96d7bb14e66db58ee03fdebaaa2f92547e9c7ef0e65f","id":7070,"name":"SuperTokenCreated","nameLocation":"5140:17:14","nodeType":"EventDefinition","parameters":{"id":7069,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7068,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"5178:5:14","nodeType":"VariableDeclaration","scope":7070,"src":"5158:25:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":7067,"nodeType":"UserDefinedTypeName","pathNode":{"id":7066,"name":"ISuperToken","nameLocations":["5158:11:14"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"5158:11:14"},"referencedDeclaration":6947,"src":"5158:11:14","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"}],"src":"5157:27:14"},"src":"5134:51:14"},{"anonymous":false,"documentation":{"id":7071,"nodeType":"StructuredDocumentation","src":"5191:120:14","text":" @dev Custom super token created event\n @param token Newly created custom super token address"},"eventSelector":"437790724a6e97b75d23117f28cdd4b1beeafc34f7a0911ef256e9334f4369a5","id":7076,"name":"CustomSuperTokenCreated","nameLocation":"5322:23:14","nodeType":"EventDefinition","parameters":{"id":7075,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7074,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"5366:5:14","nodeType":"VariableDeclaration","scope":7076,"src":"5346:25:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":7073,"nodeType":"UserDefinedTypeName","pathNode":{"id":7072,"name":"ISuperToken","nameLocations":["5346:11:14"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"5346:11:14"},"referencedDeclaration":6947,"src":"5346:11:14","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"}],"src":"5345:27:14"},"src":"5316:57:14"}],"scope":7078,"src":"270:5106:14","usedErrors":[6957,6959,6961,6963,6965,6967]}],"src":"35:5342:14"},"id":14},"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol":{"ast":{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol","exportedSymbols":{"BatchOperation":[6265],"ContextDefinitions":[6132],"FlowOperatorDefinitions":[6219],"IERC20":[77],"IERC777":[557],"ISuperAgreement":[6395],"ISuperApp":[6509],"ISuperToken":[6947],"ISuperTokenFactory":[7077],"ISuperfluid":[7599],"ISuperfluidGovernance":[7728],"ISuperfluidToken":[8014],"SuperAppDefinitions":[6056],"SuperfluidGovernanceConfigs":[6366],"TokenInfo":[8048]},"id":7600,"license":"AGPLv3","nodeType":"SourceUnit","nodes":[{"id":7079,"literals":["solidity",">=","0.8",".4"],"nodeType":"PragmaDirective","src":"35:25:15"},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance.sol","file":"./ISuperfluidGovernance.sol","id":7081,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7600,"sourceUnit":7729,"src":"62:68:15","symbolAliases":[{"foreign":{"id":7080,"name":"ISuperfluidGovernance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7728,"src":"71:21:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol","file":"./ISuperfluidToken.sol","id":7083,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7600,"sourceUnit":8015,"src":"131:58:15","symbolAliases":[{"foreign":{"id":7082,"name":"ISuperfluidToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8014,"src":"140:16:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.sol","file":"./ISuperToken.sol","id":7085,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7600,"sourceUnit":6948,"src":"190:48:15","symbolAliases":[{"foreign":{"id":7084,"name":"ISuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6947,"src":"199:11:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperTokenFactory.sol","file":"./ISuperTokenFactory.sol","id":7087,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7600,"sourceUnit":7078,"src":"239:62:15","symbolAliases":[{"foreign":{"id":7086,"name":"ISuperTokenFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7077,"src":"248:18:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol","file":"./ISuperAgreement.sol","id":7089,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7600,"sourceUnit":6396,"src":"302:56:15","symbolAliases":[{"foreign":{"id":7088,"name":"ISuperAgreement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6395,"src":"311:15:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperApp.sol","file":"./ISuperApp.sol","id":7091,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7600,"sourceUnit":6510,"src":"359:44:15","symbolAliases":[{"foreign":{"id":7090,"name":"ISuperApp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6509,"src":"368:9:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol","file":"./Definitions.sol","id":7097,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7600,"sourceUnit":6367,"src":"404:166:15","symbolAliases":[{"foreign":{"id":7092,"name":"BatchOperation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6265,"src":"417:14:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":7093,"name":"ContextDefinitions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6132,"src":"437:18:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":7094,"name":"FlowOperatorDefinitions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6219,"src":"461:23:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":7095,"name":"SuperAppDefinitions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6056,"src":"490:19:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":7096,"name":"SuperfluidGovernanceConfigs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6366,"src":"515:27:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.sol","file":"../tokens/TokenInfo.sol","id":7099,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7600,"sourceUnit":8049,"src":"571:52:15","symbolAliases":[{"foreign":{"id":7098,"name":"TokenInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8048,"src":"580:9:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":7101,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7600,"sourceUnit":78,"src":"624:72:15","symbolAliases":[{"foreign":{"id":7100,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77,"src":"633:6:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC777/IERC777.sol","file":"@openzeppelin/contracts/token/ERC777/IERC777.sol","id":7103,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7600,"sourceUnit":558,"src":"697:75:15","symbolAliases":[{"foreign":{"id":7102,"name":"IERC777","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":557,"src":"706:7:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"ISuperfluid","contractDependencies":[],"contractKind":"interface","documentation":{"id":7104,"nodeType":"StructuredDocumentation","src":"774:345:15","text":" @title Host interface\n @author Superfluid\n @notice This is the central contract of the system where super agreement, super app\n and super token features are connected.\n The Superfluid host contract is also the entry point for the protocol users,\n where batch call and meta transaction are provided for UX improvements."},"fullyImplemented":false,"id":7599,"linearizedBaseContracts":[7599],"name":"ISuperfluid","nameLocation":"1130:11:15","nodeType":"ContractDefinition","nodes":[{"errorSelector":"ef4295f6","id":7106,"name":"HOST_AGREEMENT_CALLBACK_IS_NOT_ACTION","nameLocation":"1361:37:15","nodeType":"ErrorDefinition","parameters":{"id":7105,"nodeType":"ParameterList","parameters":[],"src":"1398:2:15"},"src":"1355:46:15"},{"errorSelector":"474e7641","id":7108,"name":"HOST_CANNOT_DOWNGRADE_TO_NON_UPGRADEABLE","nameLocation":"1439:40:15","nodeType":"ErrorDefinition","parameters":{"id":7107,"nodeType":"ParameterList","parameters":[],"src":"1479:2:15"},"src":"1433:49:15"},{"errorSelector":"0cd0ebc2","id":7110,"name":"HOST_CALL_AGREEMENT_WITH_CTX_FROM_WRONG_ADDRESS","nameLocation":"1517:47:15","nodeType":"ErrorDefinition","parameters":{"id":7109,"nodeType":"ParameterList","parameters":[],"src":"1564:2:15"},"src":"1511:56:15"},{"errorSelector":"473f7bd4","id":7112,"name":"HOST_CALL_APP_ACTION_WITH_CTX_FROM_WRONG_ADDRESS","nameLocation":"1595:48:15","nodeType":"ErrorDefinition","parameters":{"id":7111,"nodeType":"ParameterList","parameters":[],"src":"1643:2:15"},"src":"1589:57:15"},{"errorSelector":"f4c802a4","id":7114,"name":"HOST_INVALID_CONFIG_WORD","nameLocation":"1673:24:15","nodeType":"ErrorDefinition","parameters":{"id":7113,"nodeType":"ParameterList","parameters":[],"src":"1697:2:15"},"src":"1667:33:15"},{"errorSelector":"7c281a78","id":7116,"name":"HOST_MAX_256_AGREEMENTS","nameLocation":"1751:23:15","nodeType":"ErrorDefinition","parameters":{"id":7115,"nodeType":"ParameterList","parameters":[],"src":"1774:2:15"},"src":"1745:32:15"},{"errorSelector":"14f72c9f","id":7118,"name":"HOST_NON_UPGRADEABLE","nameLocation":"1829:20:15","nodeType":"ErrorDefinition","parameters":{"id":7117,"nodeType":"ParameterList","parameters":[],"src":"1849:2:15"},"src":"1823:29:15"},{"errorSelector":"67e9985b","id":7120,"name":"HOST_NON_ZERO_LENGTH_PLACEHOLDER_CTX","nameLocation":"1907:36:15","nodeType":"ErrorDefinition","parameters":{"id":7119,"nodeType":"ParameterList","parameters":[],"src":"1943:2:15"},"src":"1901:45:15"},{"errorSelector":"c5d22a4e","id":7122,"name":"HOST_ONLY_GOVERNANCE","nameLocation":"1985:20:15","nodeType":"ErrorDefinition","parameters":{"id":7121,"nodeType":"ParameterList","parameters":[],"src":"2005:2:15"},"src":"1979:29:15"},{"errorSelector":"b4770115","id":7124,"name":"HOST_UNKNOWN_BATCH_CALL_OPERATION_TYPE","nameLocation":"2063:38:15","nodeType":"ErrorDefinition","parameters":{"id":7123,"nodeType":"ParameterList","parameters":[],"src":"2101:2:15"},"src":"2057:47:15"},{"errorSelector":"dc9ddba8","id":7126,"name":"HOST_AGREEMENT_ALREADY_REGISTERED","nameLocation":"2141:33:15","nodeType":"ErrorDefinition","parameters":{"id":7125,"nodeType":"ParameterList","parameters":[],"src":"2174:2:15"},"src":"2135:42:15"},{"errorSelector":"1c9e9bea","id":7128,"name":"HOST_AGREEMENT_IS_NOT_REGISTERED","nameLocation":"2219:32:15","nodeType":"ErrorDefinition","parameters":{"id":7127,"nodeType":"ParameterList","parameters":[],"src":"2251:2:15"},"src":"2213:41:15"},{"errorSelector":"d4f6b30c","id":7130,"name":"HOST_MUST_BE_CONTRACT","nameLocation":"2297:21:15","nodeType":"ErrorDefinition","parameters":{"id":7129,"nodeType":"ParameterList","parameters":[],"src":"2318:2:15"},"src":"2291:30:15"},{"errorSelector":"619c5359","id":7132,"name":"HOST_ONLY_LISTED_AGREEMENT","nameLocation":"2375:26:15","nodeType":"ErrorDefinition","parameters":{"id":7131,"nodeType":"ParameterList","parameters":[],"src":"2401:2:15"},"src":"2369:35:15"},{"errorSelector":"a85ba64f","id":7136,"name":"APP_RULE","nameLocation":"2546:8:15","nodeType":"ErrorDefinition","parameters":{"id":7135,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7134,"mutability":"mutable","name":"_code","nameLocation":"2563:5:15","nodeType":"VariableDeclaration","scope":7136,"src":"2555:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7133,"name":"uint256","nodeType":"ElementaryTypeName","src":"2555:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2554:15:15"},"src":"2540:30:15"},{"errorSelector":"19ab84d1","id":7138,"name":"HOST_INVALID_OR_EXPIRED_SUPER_APP_REGISTRATION_KEY","nameLocation":"2625:50:15","nodeType":"ErrorDefinition","parameters":{"id":7137,"nodeType":"ParameterList","parameters":[],"src":"2675:2:15"},"src":"2619:59:15"},{"errorSelector":"163cbe43","id":7140,"name":"HOST_NOT_A_SUPER_APP","nameLocation":"2703:20:15","nodeType":"ErrorDefinition","parameters":{"id":7139,"nodeType":"ParameterList","parameters":[],"src":"2723:2:15"},"src":"2697:29:15"},{"errorSelector":"5b93ebf0","id":7142,"name":"HOST_NO_APP_REGISTRATION_PERMISSIONS","nameLocation":"2781:36:15","nodeType":"ErrorDefinition","parameters":{"id":7141,"nodeType":"ParameterList","parameters":[],"src":"2817:2:15"},"src":"2775:45:15"},{"errorSelector":"96aa315e","id":7144,"name":"HOST_RECEIVER_IS_NOT_SUPER_APP","nameLocation":"2859:30:15","nodeType":"ErrorDefinition","parameters":{"id":7143,"nodeType":"ParameterList","parameters":[],"src":"2889:2:15"},"src":"2853:39:15"},{"errorSelector":"bacfdc40","id":7146,"name":"HOST_SENDER_IS_NOT_SUPER_APP","nameLocation":"2937:28:15","nodeType":"ErrorDefinition","parameters":{"id":7145,"nodeType":"ParameterList","parameters":[],"src":"2965:2:15"},"src":"2931:37:15"},{"errorSelector":"44725270","id":7148,"name":"HOST_SOURCE_APP_NEEDS_HIGHER_APP_LEVEL","nameLocation":"3015:38:15","nodeType":"ErrorDefinition","parameters":{"id":7147,"nodeType":"ParameterList","parameters":[],"src":"3053:2:15"},"src":"3009:47:15"},{"errorSelector":"02384b64","id":7150,"name":"HOST_SUPER_APP_IS_JAILED","nameLocation":"3093:24:15","nodeType":"ErrorDefinition","parameters":{"id":7149,"nodeType":"ParameterList","parameters":[],"src":"3117:2:15"},"src":"3087:33:15"},{"errorSelector":"01b0a935","id":7152,"name":"HOST_SUPER_APP_ALREADY_REGISTERED","nameLocation":"3171:33:15","nodeType":"ErrorDefinition","parameters":{"id":7151,"nodeType":"ParameterList","parameters":[],"src":"3204:2:15"},"src":"3165:42:15"},{"errorSelector":"289533c5","id":7154,"name":"HOST_UNAUTHORIZED_SUPER_APP_FACTORY","nameLocation":"3249:35:15","nodeType":"ErrorDefinition","parameters":{"id":7153,"nodeType":"ParameterList","parameters":[],"src":"3284:2:15"},"src":"3243:44:15"},{"functionSelector":"bbe4fd50","id":7159,"implemented":false,"kind":"function","modifiers":[],"name":"getNow","nameLocation":"3844:6:15","nodeType":"FunctionDefinition","parameters":{"id":7155,"nodeType":"ParameterList","parameters":[],"src":"3850:2:15"},"returnParameters":{"id":7158,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7157,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7159,"src":"3876:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7156,"name":"uint256","nodeType":"ElementaryTypeName","src":"3876:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3875:9:15"},"scope":7599,"src":"3835:50:15","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7160,"nodeType":"StructuredDocumentation","src":"4070:81:15","text":" @dev Get the current governance address of the Superfluid host"},"functionSelector":"289b3c0d","id":7166,"implemented":false,"kind":"function","modifiers":[],"name":"getGovernance","nameLocation":"4165:13:15","nodeType":"FunctionDefinition","parameters":{"id":7161,"nodeType":"ParameterList","parameters":[],"src":"4178:2:15"},"returnParameters":{"id":7165,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7164,"mutability":"mutable","name":"governance","nameLocation":"4225:10:15","nodeType":"VariableDeclaration","scope":7166,"src":"4203:32:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidGovernance_$7728","typeString":"contract ISuperfluidGovernance"},"typeName":{"id":7163,"nodeType":"UserDefinedTypeName","pathNode":{"id":7162,"name":"ISuperfluidGovernance","nameLocations":["4203:21:15"],"nodeType":"IdentifierPath","referencedDeclaration":7728,"src":"4203:21:15"},"referencedDeclaration":7728,"src":"4203:21:15","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidGovernance_$7728","typeString":"contract ISuperfluidGovernance"}},"visibility":"internal"}],"src":"4202:34:15"},"scope":7599,"src":"4156:81:15","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7167,"nodeType":"StructuredDocumentation","src":"4243:69:15","text":" @dev Replace the current governance with a new one"},"functionSelector":"7283100c","id":7173,"implemented":false,"kind":"function","modifiers":[],"name":"replaceGovernance","nameLocation":"4326:17:15","nodeType":"FunctionDefinition","parameters":{"id":7171,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7170,"mutability":"mutable","name":"newGov","nameLocation":"4366:6:15","nodeType":"VariableDeclaration","scope":7173,"src":"4344:28:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidGovernance_$7728","typeString":"contract ISuperfluidGovernance"},"typeName":{"id":7169,"nodeType":"UserDefinedTypeName","pathNode":{"id":7168,"name":"ISuperfluidGovernance","nameLocations":["4344:21:15"],"nodeType":"IdentifierPath","referencedDeclaration":7728,"src":"4344:21:15"},"referencedDeclaration":7728,"src":"4344:21:15","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidGovernance_$7728","typeString":"contract ISuperfluidGovernance"}},"visibility":"internal"}],"src":"4343:30:15"},"returnParameters":{"id":7172,"nodeType":"ParameterList","parameters":[],"src":"4382:0:15"},"scope":7599,"src":"4317:66:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":7174,"nodeType":"StructuredDocumentation","src":"4388:169:15","text":" @dev Governance replaced event\n @param oldGov Address of the old governance contract\n @param newGov Address of the new governance contract"},"eventSelector":"13abda02e63c790d0e2818b251282cfe5cbe0a8abd69c54bf5d2260c0907bd2e","id":7182,"name":"GovernanceReplaced","nameLocation":"4568:18:15","nodeType":"EventDefinition","parameters":{"id":7181,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7177,"indexed":false,"mutability":"mutable","name":"oldGov","nameLocation":"4609:6:15","nodeType":"VariableDeclaration","scope":7182,"src":"4587:28:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidGovernance_$7728","typeString":"contract ISuperfluidGovernance"},"typeName":{"id":7176,"nodeType":"UserDefinedTypeName","pathNode":{"id":7175,"name":"ISuperfluidGovernance","nameLocations":["4587:21:15"],"nodeType":"IdentifierPath","referencedDeclaration":7728,"src":"4587:21:15"},"referencedDeclaration":7728,"src":"4587:21:15","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidGovernance_$7728","typeString":"contract ISuperfluidGovernance"}},"visibility":"internal"},{"constant":false,"id":7180,"indexed":false,"mutability":"mutable","name":"newGov","nameLocation":"4639:6:15","nodeType":"VariableDeclaration","scope":7182,"src":"4617:28:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidGovernance_$7728","typeString":"contract ISuperfluidGovernance"},"typeName":{"id":7179,"nodeType":"UserDefinedTypeName","pathNode":{"id":7178,"name":"ISuperfluidGovernance","nameLocations":["4617:21:15"],"nodeType":"IdentifierPath","referencedDeclaration":7728,"src":"4617:21:15"},"referencedDeclaration":7728,"src":"4617:21:15","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidGovernance_$7728","typeString":"contract ISuperfluidGovernance"}},"visibility":"internal"}],"src":"4586:60:15"},"src":"4562:85:15"},{"documentation":{"id":7183,"nodeType":"StructuredDocumentation","src":"4844:188:15","text":" @dev Register a new agreement class to the system\n @param agreementClassLogic Initial agreement class code\n @custom:modifiers \n - onlyGovernance"},"functionSelector":"15a024e1","id":7189,"implemented":false,"kind":"function","modifiers":[],"name":"registerAgreementClass","nameLocation":"5046:22:15","nodeType":"FunctionDefinition","parameters":{"id":7187,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7186,"mutability":"mutable","name":"agreementClassLogic","nameLocation":"5085:19:15","nodeType":"VariableDeclaration","scope":7189,"src":"5069:35:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperAgreement_$6395","typeString":"contract ISuperAgreement"},"typeName":{"id":7185,"nodeType":"UserDefinedTypeName","pathNode":{"id":7184,"name":"ISuperAgreement","nameLocations":["5069:15:15"],"nodeType":"IdentifierPath","referencedDeclaration":6395,"src":"5069:15:15"},"referencedDeclaration":6395,"src":"5069:15:15","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperAgreement_$6395","typeString":"contract ISuperAgreement"}},"visibility":"internal"}],"src":"5068:37:15"},"returnParameters":{"id":7188,"nodeType":"ParameterList","parameters":[],"src":"5114:0:15"},"scope":7599,"src":"5037:78:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":7190,"nodeType":"StructuredDocumentation","src":"5120:280:15","text":" @notice Agreement class registered event\n @dev agreementType is the keccak256 hash of: \"org.superfluid-finance.agreements..\"\n @param agreementType The agreement type registered\n @param code Address of the new agreement"},"eventSelector":"878135063a6cfb3bc333e534b1fdc83f4f12221cad6705c31c0567048a8bd3d1","id":7196,"name":"AgreementClassRegistered","nameLocation":"5411:24:15","nodeType":"EventDefinition","parameters":{"id":7195,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7192,"indexed":false,"mutability":"mutable","name":"agreementType","nameLocation":"5444:13:15","nodeType":"VariableDeclaration","scope":7196,"src":"5436:21:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7191,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5436:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":7194,"indexed":false,"mutability":"mutable","name":"code","nameLocation":"5467:4:15","nodeType":"VariableDeclaration","scope":7196,"src":"5459:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7193,"name":"address","nodeType":"ElementaryTypeName","src":"5459:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5435:37:15"},"src":"5405:68:15"},{"documentation":{"id":7197,"nodeType":"StructuredDocumentation","src":"5479:176:15","text":" @dev Update code of an agreement class\n @param agreementClassLogic New code for the agreement class\n @custom:modifiers \n - onlyGovernance"},"functionSelector":"06cecba8","id":7203,"implemented":false,"kind":"function","modifiers":[],"name":"updateAgreementClass","nameLocation":"5669:20:15","nodeType":"FunctionDefinition","parameters":{"id":7201,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7200,"mutability":"mutable","name":"agreementClassLogic","nameLocation":"5706:19:15","nodeType":"VariableDeclaration","scope":7203,"src":"5690:35:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperAgreement_$6395","typeString":"contract ISuperAgreement"},"typeName":{"id":7199,"nodeType":"UserDefinedTypeName","pathNode":{"id":7198,"name":"ISuperAgreement","nameLocations":["5690:15:15"],"nodeType":"IdentifierPath","referencedDeclaration":6395,"src":"5690:15:15"},"referencedDeclaration":6395,"src":"5690:15:15","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperAgreement_$6395","typeString":"contract ISuperAgreement"}},"visibility":"internal"}],"src":"5689:37:15"},"returnParameters":{"id":7202,"nodeType":"ParameterList","parameters":[],"src":"5735:0:15"},"scope":7599,"src":"5660:76:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":7204,"nodeType":"StructuredDocumentation","src":"5741:274:15","text":" @notice Agreement class updated event\n @dev agreementType is the keccak256 hash of: \"org.superfluid-finance.agreements..\"\n @param agreementType The agreement type updated\n @param code Address of the new agreement"},"eventSelector":"9279aa773f2b588996032d8de89911555039f28b13a11a7c17074330bc082d9a","id":7210,"name":"AgreementClassUpdated","nameLocation":"6026:21:15","nodeType":"EventDefinition","parameters":{"id":7209,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7206,"indexed":false,"mutability":"mutable","name":"agreementType","nameLocation":"6056:13:15","nodeType":"VariableDeclaration","scope":7210,"src":"6048:21:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7205,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6048:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":7208,"indexed":false,"mutability":"mutable","name":"code","nameLocation":"6079:4:15","nodeType":"VariableDeclaration","scope":7210,"src":"6071:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7207,"name":"address","nodeType":"ElementaryTypeName","src":"6071:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6047:37:15"},"src":"6020:65:15"},{"documentation":{"id":7211,"nodeType":"StructuredDocumentation","src":"6091:181:15","text":" @notice Check if the agreement type is whitelisted\n @dev agreementType is the keccak256 hash of: \"org.superfluid-finance.agreements..\""},"functionSelector":"e8dccb7d","id":7218,"implemented":false,"kind":"function","modifiers":[],"name":"isAgreementTypeListed","nameLocation":"6286:21:15","nodeType":"FunctionDefinition","parameters":{"id":7214,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7213,"mutability":"mutable","name":"agreementType","nameLocation":"6316:13:15","nodeType":"VariableDeclaration","scope":7218,"src":"6308:21:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7212,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6308:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6307:23:15"},"returnParameters":{"id":7217,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7216,"mutability":"mutable","name":"yes","nameLocation":"6358:3:15","nodeType":"VariableDeclaration","scope":7218,"src":"6353:8:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7215,"name":"bool","nodeType":"ElementaryTypeName","src":"6353:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6352:10:15"},"scope":7599,"src":"6277:86:15","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7219,"nodeType":"StructuredDocumentation","src":"6369:65:15","text":" @dev Check if the agreement class is whitelisted"},"functionSelector":"8ca48484","id":7227,"implemented":false,"kind":"function","modifiers":[],"name":"isAgreementClassListed","nameLocation":"6448:22:15","nodeType":"FunctionDefinition","parameters":{"id":7223,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7222,"mutability":"mutable","name":"agreementClass","nameLocation":"6487:14:15","nodeType":"VariableDeclaration","scope":7227,"src":"6471:30:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperAgreement_$6395","typeString":"contract ISuperAgreement"},"typeName":{"id":7221,"nodeType":"UserDefinedTypeName","pathNode":{"id":7220,"name":"ISuperAgreement","nameLocations":["6471:15:15"],"nodeType":"IdentifierPath","referencedDeclaration":6395,"src":"6471:15:15"},"referencedDeclaration":6395,"src":"6471:15:15","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperAgreement_$6395","typeString":"contract ISuperAgreement"}},"visibility":"internal"}],"src":"6470:32:15"},"returnParameters":{"id":7226,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7225,"mutability":"mutable","name":"yes","nameLocation":"6530:3:15","nodeType":"VariableDeclaration","scope":7227,"src":"6525:8:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7224,"name":"bool","nodeType":"ElementaryTypeName","src":"6525:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6524:10:15"},"scope":7599,"src":"6439:96:15","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7228,"nodeType":"StructuredDocumentation","src":"6541:158:15","text":" @notice Get agreement class\n @dev agreementType is the keccak256 hash of: \"org.superfluid-finance.agreements..\""},"functionSelector":"b6d200de","id":7236,"implemented":false,"kind":"function","modifiers":[],"name":"getAgreementClass","nameLocation":"6713:17:15","nodeType":"FunctionDefinition","parameters":{"id":7231,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7230,"mutability":"mutable","name":"agreementType","nameLocation":"6739:13:15","nodeType":"VariableDeclaration","scope":7236,"src":"6731:21:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7229,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6731:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6730:23:15"},"returnParameters":{"id":7235,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7234,"mutability":"mutable","name":"agreementClass","nameLocation":"6792:14:15","nodeType":"VariableDeclaration","scope":7236,"src":"6776:30:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperAgreement_$6395","typeString":"contract ISuperAgreement"},"typeName":{"id":7233,"nodeType":"UserDefinedTypeName","pathNode":{"id":7232,"name":"ISuperAgreement","nameLocations":["6776:15:15"],"nodeType":"IdentifierPath","referencedDeclaration":6395,"src":"6776:15:15"},"referencedDeclaration":6395,"src":"6776:15:15","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperAgreement_$6395","typeString":"contract ISuperAgreement"}},"visibility":"internal"}],"src":"6775:32:15"},"scope":7599,"src":"6704:104:15","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7237,"nodeType":"StructuredDocumentation","src":"6814:113:15","text":" @dev Map list of the agreement classes using a bitmap\n @param bitmap Agreement class bitmap"},"functionSelector":"c56a069d","id":7246,"implemented":false,"kind":"function","modifiers":[],"name":"mapAgreementClasses","nameLocation":"6941:19:15","nodeType":"FunctionDefinition","parameters":{"id":7240,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7239,"mutability":"mutable","name":"bitmap","nameLocation":"6969:6:15","nodeType":"VariableDeclaration","scope":7246,"src":"6961:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7238,"name":"uint256","nodeType":"ElementaryTypeName","src":"6961:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6960:16:15"},"returnParameters":{"id":7245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7244,"mutability":"mutable","name":"agreementClasses","nameLocation":"7041:16:15","nodeType":"VariableDeclaration","scope":7246,"src":"7016:41:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_ISuperAgreement_$6395_$dyn_memory_ptr","typeString":"contract ISuperAgreement[]"},"typeName":{"baseType":{"id":7242,"nodeType":"UserDefinedTypeName","pathNode":{"id":7241,"name":"ISuperAgreement","nameLocations":["7016:15:15"],"nodeType":"IdentifierPath","referencedDeclaration":6395,"src":"7016:15:15"},"referencedDeclaration":6395,"src":"7016:15:15","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperAgreement_$6395","typeString":"contract ISuperAgreement"}},"id":7243,"nodeType":"ArrayTypeName","src":"7016:17:15","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_ISuperAgreement_$6395_$dyn_storage_ptr","typeString":"contract ISuperAgreement[]"}},"visibility":"internal"}],"src":"7015:43:15"},"scope":7599,"src":"6932:127:15","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7247,"nodeType":"StructuredDocumentation","src":"7065:236:15","text":" @notice Create a new bitmask by adding a agreement class to it\n @dev agreementType is the keccak256 hash of: \"org.superfluid-finance.agreements..\"\n @param bitmap Agreement class bitmap"},"functionSelector":"bced3ddc","id":7256,"implemented":false,"kind":"function","modifiers":[],"name":"addToAgreementClassesBitmap","nameLocation":"7315:27:15","nodeType":"FunctionDefinition","parameters":{"id":7252,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7249,"mutability":"mutable","name":"bitmap","nameLocation":"7351:6:15","nodeType":"VariableDeclaration","scope":7256,"src":"7343:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7248,"name":"uint256","nodeType":"ElementaryTypeName","src":"7343:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7251,"mutability":"mutable","name":"agreementType","nameLocation":"7367:13:15","nodeType":"VariableDeclaration","scope":7256,"src":"7359:21:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7250,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7359:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7342:39:15"},"returnParameters":{"id":7255,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7254,"mutability":"mutable","name":"newBitmap","nameLocation":"7429:9:15","nodeType":"VariableDeclaration","scope":7256,"src":"7421:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7253,"name":"uint256","nodeType":"ElementaryTypeName","src":"7421:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7420:19:15"},"scope":7599,"src":"7306:134:15","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7257,"nodeType":"StructuredDocumentation","src":"7446:240:15","text":" @notice Create a new bitmask by removing a agreement class from it\n @dev agreementType is the keccak256 hash of: \"org.superfluid-finance.agreements..\"\n @param bitmap Agreement class bitmap"},"functionSelector":"a5dbbbcd","id":7266,"implemented":false,"kind":"function","modifiers":[],"name":"removeFromAgreementClassesBitmap","nameLocation":"7700:32:15","nodeType":"FunctionDefinition","parameters":{"id":7262,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7259,"mutability":"mutable","name":"bitmap","nameLocation":"7741:6:15","nodeType":"VariableDeclaration","scope":7266,"src":"7733:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7258,"name":"uint256","nodeType":"ElementaryTypeName","src":"7733:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7261,"mutability":"mutable","name":"agreementType","nameLocation":"7757:13:15","nodeType":"VariableDeclaration","scope":7266,"src":"7749:21:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7260,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7749:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7732:39:15"},"returnParameters":{"id":7265,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7264,"mutability":"mutable","name":"newBitmap","nameLocation":"7819:9:15","nodeType":"VariableDeclaration","scope":7266,"src":"7811:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7263,"name":"uint256","nodeType":"ElementaryTypeName","src":"7811:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7810:19:15"},"scope":7599,"src":"7691:139:15","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7267,"nodeType":"StructuredDocumentation","src":"8023:86:15","text":" @dev Get the super token factory\n @return factory The factory"},"functionSelector":"731aed6e","id":7273,"implemented":false,"kind":"function","modifiers":[],"name":"getSuperTokenFactory","nameLocation":"8123:20:15","nodeType":"FunctionDefinition","parameters":{"id":7268,"nodeType":"ParameterList","parameters":[],"src":"8143:2:15"},"returnParameters":{"id":7272,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7271,"mutability":"mutable","name":"factory","nameLocation":"8188:7:15","nodeType":"VariableDeclaration","scope":7273,"src":"8169:26:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperTokenFactory_$7077","typeString":"contract ISuperTokenFactory"},"typeName":{"id":7270,"nodeType":"UserDefinedTypeName","pathNode":{"id":7269,"name":"ISuperTokenFactory","nameLocations":["8169:18:15"],"nodeType":"IdentifierPath","referencedDeclaration":7077,"src":"8169:18:15"},"referencedDeclaration":7077,"src":"8169:18:15","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperTokenFactory_$7077","typeString":"contract ISuperTokenFactory"}},"visibility":"internal"}],"src":"8168:28:15"},"scope":7599,"src":"8114:83:15","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7274,"nodeType":"StructuredDocumentation","src":"8203:134:15","text":" @dev Get the super token factory logic (applicable to upgradable deployment)\n @return logic The factory logic"},"functionSelector":"f2e55caf","id":7279,"implemented":false,"kind":"function","modifiers":[],"name":"getSuperTokenFactoryLogic","nameLocation":"8351:25:15","nodeType":"FunctionDefinition","parameters":{"id":7275,"nodeType":"ParameterList","parameters":[],"src":"8376:2:15"},"returnParameters":{"id":7278,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7277,"mutability":"mutable","name":"logic","nameLocation":"8410:5:15","nodeType":"VariableDeclaration","scope":7279,"src":"8402:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7276,"name":"address","nodeType":"ElementaryTypeName","src":"8402:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8401:15:15"},"scope":7599,"src":"8342:75:15","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7280,"nodeType":"StructuredDocumentation","src":"8423:93:15","text":" @dev Update super token factory\n @param newFactory New factory logic"},"functionSelector":"54fbc493","id":7286,"implemented":false,"kind":"function","modifiers":[],"name":"updateSuperTokenFactory","nameLocation":"8530:23:15","nodeType":"FunctionDefinition","parameters":{"id":7284,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7283,"mutability":"mutable","name":"newFactory","nameLocation":"8573:10:15","nodeType":"VariableDeclaration","scope":7286,"src":"8554:29:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperTokenFactory_$7077","typeString":"contract ISuperTokenFactory"},"typeName":{"id":7282,"nodeType":"UserDefinedTypeName","pathNode":{"id":7281,"name":"ISuperTokenFactory","nameLocations":["8554:18:15"],"nodeType":"IdentifierPath","referencedDeclaration":7077,"src":"8554:18:15"},"referencedDeclaration":7077,"src":"8554:18:15","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperTokenFactory_$7077","typeString":"contract ISuperTokenFactory"}},"visibility":"internal"}],"src":"8553:31:15"},"returnParameters":{"id":7285,"nodeType":"ParameterList","parameters":[],"src":"8593:0:15"},"scope":7599,"src":"8521:73:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":7287,"nodeType":"StructuredDocumentation","src":"8599:108:15","text":" @dev SuperToken factory updated event\n @param newFactory Address of the new factory"},"eventSelector":"ce13a9895a1719ad4493b2ac1a9bfb36070566161abab408e7ecbe586da8d499","id":7292,"name":"SuperTokenFactoryUpdated","nameLocation":"8718:24:15","nodeType":"EventDefinition","parameters":{"id":7291,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7290,"indexed":false,"mutability":"mutable","name":"newFactory","nameLocation":"8762:10:15","nodeType":"VariableDeclaration","scope":7292,"src":"8743:29:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperTokenFactory_$7077","typeString":"contract ISuperTokenFactory"},"typeName":{"id":7289,"nodeType":"UserDefinedTypeName","pathNode":{"id":7288,"name":"ISuperTokenFactory","nameLocations":["8743:18:15"],"nodeType":"IdentifierPath","referencedDeclaration":7077,"src":"8743:18:15"},"referencedDeclaration":7077,"src":"8743:18:15","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperTokenFactory_$7077","typeString":"contract ISuperTokenFactory"}},"visibility":"internal"}],"src":"8742:31:15"},"src":"8712:62:15"},{"documentation":{"id":7293,"nodeType":"StructuredDocumentation","src":"8780:147:15","text":" @notice Update the super token logic to the latest\n @dev Refer to ISuperTokenFactory.Upgradability for expected behaviours"},"functionSelector":"787afde7","id":7299,"implemented":false,"kind":"function","modifiers":[],"name":"updateSuperTokenLogic","nameLocation":"8941:21:15","nodeType":"FunctionDefinition","parameters":{"id":7297,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7296,"mutability":"mutable","name":"token","nameLocation":"8975:5:15","nodeType":"VariableDeclaration","scope":7299,"src":"8963:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":7295,"nodeType":"UserDefinedTypeName","pathNode":{"id":7294,"name":"ISuperToken","nameLocations":["8963:11:15"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"8963:11:15"},"referencedDeclaration":6947,"src":"8963:11:15","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"}],"src":"8962:19:15"},"returnParameters":{"id":7298,"nodeType":"ParameterList","parameters":[],"src":"8990:0:15"},"scope":7599,"src":"8932:59:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":7300,"nodeType":"StructuredDocumentation","src":"8996:109:15","text":" @dev SuperToken logic updated event\n @param code Address of the new SuperToken logic"},"eventSelector":"840acbd291b38534819f47f875839277e502f40e1c7bfea2c5fc2c8017442cd3","id":7307,"name":"SuperTokenLogicUpdated","nameLocation":"9116:22:15","nodeType":"EventDefinition","parameters":{"id":7306,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7303,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"9159:5:15","nodeType":"VariableDeclaration","scope":7307,"src":"9139:25:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":7302,"nodeType":"UserDefinedTypeName","pathNode":{"id":7301,"name":"ISuperToken","nameLocations":["9139:11:15"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"9139:11:15"},"referencedDeclaration":6947,"src":"9139:11:15","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":7305,"indexed":false,"mutability":"mutable","name":"code","nameLocation":"9174:4:15","nodeType":"VariableDeclaration","scope":7307,"src":"9166:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7304,"name":"address","nodeType":"ElementaryTypeName","src":"9166:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9138:41:15"},"src":"9110:70:15"},{"documentation":{"id":7308,"nodeType":"StructuredDocumentation","src":"9367:383:15","text":" @dev Message sender (must be a contract) declares itself as a super app.\n @custom:deprecated you should use `registerAppWithKey` or `registerAppByFactory` instead,\n because app registration is currently governance permissioned on mainnets.\n @param configWord The super app manifest configuration, flags are defined in\n `SuperAppDefinitions`"},"functionSelector":"ad3915c8","id":7313,"implemented":false,"kind":"function","modifiers":[],"name":"registerApp","nameLocation":"9764:11:15","nodeType":"FunctionDefinition","parameters":{"id":7311,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7310,"mutability":"mutable","name":"configWord","nameLocation":"9784:10:15","nodeType":"VariableDeclaration","scope":7313,"src":"9776:18:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7309,"name":"uint256","nodeType":"ElementaryTypeName","src":"9776:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9775:20:15"},"returnParameters":{"id":7312,"nodeType":"ParameterList","parameters":[],"src":"9804:0:15"},"scope":7599,"src":"9755:50:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":7314,"nodeType":"StructuredDocumentation","src":"9810:84:15","text":" @dev App registered event\n @param app Address of jailed app"},"eventSelector":"0d540ad8f39e07d19909687352b9fa017405d93c91a6760981fbae9cf28bfef7","id":7319,"name":"AppRegistered","nameLocation":"9905:13:15","nodeType":"EventDefinition","parameters":{"id":7318,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7317,"indexed":true,"mutability":"mutable","name":"app","nameLocation":"9937:3:15","nodeType":"VariableDeclaration","scope":7319,"src":"9919:21:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6509","typeString":"contract ISuperApp"},"typeName":{"id":7316,"nodeType":"UserDefinedTypeName","pathNode":{"id":7315,"name":"ISuperApp","nameLocations":["9919:9:15"],"nodeType":"IdentifierPath","referencedDeclaration":6509,"src":"9919:9:15"},"referencedDeclaration":6509,"src":"9919:9:15","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6509","typeString":"contract ISuperApp"}},"visibility":"internal"}],"src":"9918:23:15"},"src":"9899:43:15"},{"documentation":{"id":7320,"nodeType":"StructuredDocumentation","src":"9948:655:15","text":" @dev Message sender declares itself as a super app.\n @param configWord The super app manifest configuration, flags are defined in `SuperAppDefinitions`\n @param registrationKey The registration key issued by the governance, needed to register on a mainnet.\n @notice See https://github.com/superfluid-finance/protocol-monorepo/wiki/Super-App-White-listing-Guide\n On testnets or in dev environment, a placeholder (e.g. empty string) can be used.\n While the message sender must be the super app itself, the transaction sender (tx.origin)\n must be the deployer account the registration key was issued for."},"functionSelector":"bd1c448b","id":7327,"implemented":false,"kind":"function","modifiers":[],"name":"registerAppWithKey","nameLocation":"10617:18:15","nodeType":"FunctionDefinition","parameters":{"id":7325,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7322,"mutability":"mutable","name":"configWord","nameLocation":"10644:10:15","nodeType":"VariableDeclaration","scope":7327,"src":"10636:18:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7321,"name":"uint256","nodeType":"ElementaryTypeName","src":"10636:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7324,"mutability":"mutable","name":"registrationKey","nameLocation":"10672:15:15","nodeType":"VariableDeclaration","scope":7327,"src":"10656:31:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":7323,"name":"string","nodeType":"ElementaryTypeName","src":"10656:6:15","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"10635:53:15"},"returnParameters":{"id":7326,"nodeType":"ParameterList","parameters":[],"src":"10697:0:15"},"scope":7599,"src":"10608:90:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7328,"nodeType":"StructuredDocumentation","src":"10704:400:15","text":" @dev Message sender (must be a contract) declares app as a super app\n @param configWord The super app manifest configuration, flags are defined in `SuperAppDefinitions`\n @notice On mainnet deployments, only factory contracts pre-authorized by governance can use this.\n See https://github.com/superfluid-finance/protocol-monorepo/wiki/Super-App-White-listing-Guide"},"functionSelector":"f3733052","id":7336,"implemented":false,"kind":"function","modifiers":[],"name":"registerAppByFactory","nameLocation":"11118:20:15","nodeType":"FunctionDefinition","parameters":{"id":7334,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7331,"mutability":"mutable","name":"app","nameLocation":"11149:3:15","nodeType":"VariableDeclaration","scope":7336,"src":"11139:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6509","typeString":"contract ISuperApp"},"typeName":{"id":7330,"nodeType":"UserDefinedTypeName","pathNode":{"id":7329,"name":"ISuperApp","nameLocations":["11139:9:15"],"nodeType":"IdentifierPath","referencedDeclaration":6509,"src":"11139:9:15"},"referencedDeclaration":6509,"src":"11139:9:15","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6509","typeString":"contract ISuperApp"}},"visibility":"internal"},{"constant":false,"id":7333,"mutability":"mutable","name":"configWord","nameLocation":"11162:10:15","nodeType":"VariableDeclaration","scope":7336,"src":"11154:18:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7332,"name":"uint256","nodeType":"ElementaryTypeName","src":"11154:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11138:35:15"},"returnParameters":{"id":7335,"nodeType":"ParameterList","parameters":[],"src":"11182:0:15"},"scope":7599,"src":"11109:74:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7337,"nodeType":"StructuredDocumentation","src":"11189:90:15","text":" @dev Query if the app is registered\n @param app Super app address"},"functionSelector":"3ca3ad4e","id":7345,"implemented":false,"kind":"function","modifiers":[],"name":"isApp","nameLocation":"11293:5:15","nodeType":"FunctionDefinition","parameters":{"id":7341,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7340,"mutability":"mutable","name":"app","nameLocation":"11309:3:15","nodeType":"VariableDeclaration","scope":7345,"src":"11299:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6509","typeString":"contract ISuperApp"},"typeName":{"id":7339,"nodeType":"UserDefinedTypeName","pathNode":{"id":7338,"name":"ISuperApp","nameLocations":["11299:9:15"],"nodeType":"IdentifierPath","referencedDeclaration":6509,"src":"11299:9:15"},"referencedDeclaration":6509,"src":"11299:9:15","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6509","typeString":"contract ISuperApp"}},"visibility":"internal"}],"src":"11298:15:15"},"returnParameters":{"id":7344,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7343,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7345,"src":"11336:4:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7342,"name":"bool","nodeType":"ElementaryTypeName","src":"11336:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"11335:6:15"},"scope":7599,"src":"11284:58:15","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7346,"nodeType":"StructuredDocumentation","src":"11348:83:15","text":" @dev Query app callbacklevel\n @param app Super app address"},"functionSelector":"9378fa13","id":7354,"implemented":false,"kind":"function","modifiers":[],"name":"getAppCallbackLevel","nameLocation":"11445:19:15","nodeType":"FunctionDefinition","parameters":{"id":7350,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7349,"mutability":"mutable","name":"app","nameLocation":"11475:3:15","nodeType":"VariableDeclaration","scope":7354,"src":"11465:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6509","typeString":"contract ISuperApp"},"typeName":{"id":7348,"nodeType":"UserDefinedTypeName","pathNode":{"id":7347,"name":"ISuperApp","nameLocations":["11465:9:15"],"nodeType":"IdentifierPath","referencedDeclaration":6509,"src":"11465:9:15"},"referencedDeclaration":6509,"src":"11465:9:15","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6509","typeString":"contract ISuperApp"}},"visibility":"internal"}],"src":"11464:15:15"},"returnParameters":{"id":7353,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7352,"mutability":"mutable","name":"appCallbackLevel","nameLocation":"11508:16:15","nodeType":"VariableDeclaration","scope":7354,"src":"11502:22:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":7351,"name":"uint8","nodeType":"ElementaryTypeName","src":"11502:5:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"11501:24:15"},"scope":7599,"src":"11436:90:15","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7355,"nodeType":"StructuredDocumentation","src":"11532:93:15","text":" @dev Get the manifest of the super app\n @param app Super app address"},"functionSelector":"f9f522f4","id":7367,"implemented":false,"kind":"function","modifiers":[],"name":"getAppManifest","nameLocation":"11639:14:15","nodeType":"FunctionDefinition","parameters":{"id":7359,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7358,"mutability":"mutable","name":"app","nameLocation":"11673:3:15","nodeType":"VariableDeclaration","scope":7367,"src":"11663:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6509","typeString":"contract ISuperApp"},"typeName":{"id":7357,"nodeType":"UserDefinedTypeName","pathNode":{"id":7356,"name":"ISuperApp","nameLocations":["11663:9:15"],"nodeType":"IdentifierPath","referencedDeclaration":6509,"src":"11663:9:15"},"referencedDeclaration":6509,"src":"11663:9:15","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6509","typeString":"contract ISuperApp"}},"visibility":"internal"}],"src":"11653:29:15"},"returnParameters":{"id":7366,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7361,"mutability":"mutable","name":"isSuperApp","nameLocation":"11740:10:15","nodeType":"VariableDeclaration","scope":7367,"src":"11735:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7360,"name":"bool","nodeType":"ElementaryTypeName","src":"11735:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":7363,"mutability":"mutable","name":"isJailed","nameLocation":"11769:8:15","nodeType":"VariableDeclaration","scope":7367,"src":"11764:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7362,"name":"bool","nodeType":"ElementaryTypeName","src":"11764:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":7365,"mutability":"mutable","name":"noopMask","nameLocation":"11799:8:15","nodeType":"VariableDeclaration","scope":7367,"src":"11791:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7364,"name":"uint256","nodeType":"ElementaryTypeName","src":"11791:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11721:96:15"},"scope":7599,"src":"11630:188:15","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7368,"nodeType":"StructuredDocumentation","src":"11824:92:15","text":" @dev Query if the app has been jailed\n @param app Super app address"},"functionSelector":"6b4f3335","id":7376,"implemented":false,"kind":"function","modifiers":[],"name":"isAppJailed","nameLocation":"11930:11:15","nodeType":"FunctionDefinition","parameters":{"id":7372,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7371,"mutability":"mutable","name":"app","nameLocation":"11952:3:15","nodeType":"VariableDeclaration","scope":7376,"src":"11942:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6509","typeString":"contract ISuperApp"},"typeName":{"id":7370,"nodeType":"UserDefinedTypeName","pathNode":{"id":7369,"name":"ISuperApp","nameLocations":["11942:9:15"],"nodeType":"IdentifierPath","referencedDeclaration":6509,"src":"11942:9:15"},"referencedDeclaration":6509,"src":"11942:9:15","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6509","typeString":"contract ISuperApp"}},"visibility":"internal"}],"src":"11941:15:15"},"returnParameters":{"id":7375,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7374,"mutability":"mutable","name":"isJail","nameLocation":"11985:6:15","nodeType":"VariableDeclaration","scope":7376,"src":"11980:11:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7373,"name":"bool","nodeType":"ElementaryTypeName","src":"11980:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"11979:13:15"},"scope":7599,"src":"11921:72:15","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7377,"nodeType":"StructuredDocumentation","src":"11999:153:15","text":" @dev Whitelist the target app for app composition for the source app (msg.sender)\n @param targetApp The target super app address"},"functionSelector":"57121e0c","id":7383,"implemented":false,"kind":"function","modifiers":[],"name":"allowCompositeApp","nameLocation":"12166:17:15","nodeType":"FunctionDefinition","parameters":{"id":7381,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7380,"mutability":"mutable","name":"targetApp","nameLocation":"12194:9:15","nodeType":"VariableDeclaration","scope":7383,"src":"12184:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6509","typeString":"contract ISuperApp"},"typeName":{"id":7379,"nodeType":"UserDefinedTypeName","pathNode":{"id":7378,"name":"ISuperApp","nameLocations":["12184:9:15"],"nodeType":"IdentifierPath","referencedDeclaration":6509,"src":"12184:9:15"},"referencedDeclaration":6509,"src":"12184:9:15","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6509","typeString":"contract ISuperApp"}},"visibility":"internal"}],"src":"12183:21:15"},"returnParameters":{"id":7382,"nodeType":"ParameterList","parameters":[],"src":"12213:0:15"},"scope":7599,"src":"12157:57:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7384,"nodeType":"StructuredDocumentation","src":"12220:184:15","text":" @dev Query if source app is allowed to call the target app as downstream app\n @param app Super app address\n @param targetApp The target super app address"},"functionSelector":"bb84cfa1","id":7395,"implemented":false,"kind":"function","modifiers":[],"name":"isCompositeAppAllowed","nameLocation":"12418:21:15","nodeType":"FunctionDefinition","parameters":{"id":7391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7387,"mutability":"mutable","name":"app","nameLocation":"12459:3:15","nodeType":"VariableDeclaration","scope":7395,"src":"12449:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6509","typeString":"contract ISuperApp"},"typeName":{"id":7386,"nodeType":"UserDefinedTypeName","pathNode":{"id":7385,"name":"ISuperApp","nameLocations":["12449:9:15"],"nodeType":"IdentifierPath","referencedDeclaration":6509,"src":"12449:9:15"},"referencedDeclaration":6509,"src":"12449:9:15","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6509","typeString":"contract ISuperApp"}},"visibility":"internal"},{"constant":false,"id":7390,"mutability":"mutable","name":"targetApp","nameLocation":"12482:9:15","nodeType":"VariableDeclaration","scope":7395,"src":"12472:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6509","typeString":"contract ISuperApp"},"typeName":{"id":7389,"nodeType":"UserDefinedTypeName","pathNode":{"id":7388,"name":"ISuperApp","nameLocations":["12472:9:15"],"nodeType":"IdentifierPath","referencedDeclaration":6509,"src":"12472:9:15"},"referencedDeclaration":6509,"src":"12472:9:15","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6509","typeString":"contract ISuperApp"}},"visibility":"internal"}],"src":"12439:58:15"},"returnParameters":{"id":7394,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7393,"mutability":"mutable","name":"isAppAllowed","nameLocation":"12542:12:15","nodeType":"VariableDeclaration","scope":7395,"src":"12537:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7392,"name":"bool","nodeType":"ElementaryTypeName","src":"12537:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"12536:19:15"},"scope":7599,"src":"12409:147:15","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7396,"nodeType":"StructuredDocumentation","src":"12948:393:15","text":" @dev (For agreements) StaticCall the app before callback\n @param app The super app.\n @param callData The call data sending to the super app.\n @param isTermination Is it a termination callback?\n @param ctx Current ctx, it will be validated.\n @return cbdata Data returned from the callback."},"functionSelector":"74041e02","id":7410,"implemented":false,"kind":"function","modifiers":[],"name":"callAppBeforeCallback","nameLocation":"13355:21:15","nodeType":"FunctionDefinition","parameters":{"id":7406,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7399,"mutability":"mutable","name":"app","nameLocation":"13396:3:15","nodeType":"VariableDeclaration","scope":7410,"src":"13386:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6509","typeString":"contract ISuperApp"},"typeName":{"id":7398,"nodeType":"UserDefinedTypeName","pathNode":{"id":7397,"name":"ISuperApp","nameLocations":["13386:9:15"],"nodeType":"IdentifierPath","referencedDeclaration":6509,"src":"13386:9:15"},"referencedDeclaration":6509,"src":"13386:9:15","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6509","typeString":"contract ISuperApp"}},"visibility":"internal"},{"constant":false,"id":7401,"mutability":"mutable","name":"callData","nameLocation":"13424:8:15","nodeType":"VariableDeclaration","scope":7410,"src":"13409:23:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":7400,"name":"bytes","nodeType":"ElementaryTypeName","src":"13409:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":7403,"mutability":"mutable","name":"isTermination","nameLocation":"13447:13:15","nodeType":"VariableDeclaration","scope":7410,"src":"13442:18:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7402,"name":"bool","nodeType":"ElementaryTypeName","src":"13442:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":7405,"mutability":"mutable","name":"ctx","nameLocation":"13485:3:15","nodeType":"VariableDeclaration","scope":7410,"src":"13470:18:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":7404,"name":"bytes","nodeType":"ElementaryTypeName","src":"13470:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"13376:118:15"},"returnParameters":{"id":7409,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7408,"mutability":"mutable","name":"cbdata","nameLocation":"13597:6:15","nodeType":"VariableDeclaration","scope":7410,"src":"13584:19:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7407,"name":"bytes","nodeType":"ElementaryTypeName","src":"13584:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"13583:21:15"},"scope":7599,"src":"13346:259:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7411,"nodeType":"StructuredDocumentation","src":"13611:393:15","text":" @dev (For agreements) Call the app after callback\n @param app The super app.\n @param callData The call data sending to the super app.\n @param isTermination Is it a termination callback?\n @param ctx Current ctx, it will be validated.\n @return newCtx The current context of the transaction."},"functionSelector":"1e6d0a84","id":7425,"implemented":false,"kind":"function","modifiers":[],"name":"callAppAfterCallback","nameLocation":"14018:20:15","nodeType":"FunctionDefinition","parameters":{"id":7421,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7414,"mutability":"mutable","name":"app","nameLocation":"14058:3:15","nodeType":"VariableDeclaration","scope":7425,"src":"14048:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6509","typeString":"contract ISuperApp"},"typeName":{"id":7413,"nodeType":"UserDefinedTypeName","pathNode":{"id":7412,"name":"ISuperApp","nameLocations":["14048:9:15"],"nodeType":"IdentifierPath","referencedDeclaration":6509,"src":"14048:9:15"},"referencedDeclaration":6509,"src":"14048:9:15","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6509","typeString":"contract ISuperApp"}},"visibility":"internal"},{"constant":false,"id":7416,"mutability":"mutable","name":"callData","nameLocation":"14086:8:15","nodeType":"VariableDeclaration","scope":7425,"src":"14071:23:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":7415,"name":"bytes","nodeType":"ElementaryTypeName","src":"14071:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":7418,"mutability":"mutable","name":"isTermination","nameLocation":"14109:13:15","nodeType":"VariableDeclaration","scope":7425,"src":"14104:18:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7417,"name":"bool","nodeType":"ElementaryTypeName","src":"14104:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":7420,"mutability":"mutable","name":"ctx","nameLocation":"14147:3:15","nodeType":"VariableDeclaration","scope":7425,"src":"14132:18:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":7419,"name":"bytes","nodeType":"ElementaryTypeName","src":"14132:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"14038:118:15"},"returnParameters":{"id":7424,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7423,"mutability":"mutable","name":"newCtx","nameLocation":"14259:6:15","nodeType":"VariableDeclaration","scope":7425,"src":"14246:19:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7422,"name":"bytes","nodeType":"ElementaryTypeName","src":"14246:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"14245:21:15"},"scope":7599,"src":"14009:258:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7426,"nodeType":"StructuredDocumentation","src":"14273:408:15","text":" @dev (For agreements) Create a new callback stack\n @param ctx The current ctx, it will be validated.\n @param app The super app.\n @param appCreditGranted App credit granted so far.\n @param appCreditUsed App credit used so far.\n @return newCtx The current context of the transaction."},"functionSelector":"768fabb0","id":7443,"implemented":false,"kind":"function","modifiers":[],"name":"appCallbackPush","nameLocation":"14695:15:15","nodeType":"FunctionDefinition","parameters":{"id":7439,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7428,"mutability":"mutable","name":"ctx","nameLocation":"14735:3:15","nodeType":"VariableDeclaration","scope":7443,"src":"14720:18:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":7427,"name":"bytes","nodeType":"ElementaryTypeName","src":"14720:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":7431,"mutability":"mutable","name":"app","nameLocation":"14758:3:15","nodeType":"VariableDeclaration","scope":7443,"src":"14748:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6509","typeString":"contract ISuperApp"},"typeName":{"id":7430,"nodeType":"UserDefinedTypeName","pathNode":{"id":7429,"name":"ISuperApp","nameLocations":["14748:9:15"],"nodeType":"IdentifierPath","referencedDeclaration":6509,"src":"14748:9:15"},"referencedDeclaration":6509,"src":"14748:9:15","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6509","typeString":"contract ISuperApp"}},"visibility":"internal"},{"constant":false,"id":7433,"mutability":"mutable","name":"appCreditGranted","nameLocation":"14779:16:15","nodeType":"VariableDeclaration","scope":7443,"src":"14771:24:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7432,"name":"uint256","nodeType":"ElementaryTypeName","src":"14771:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7435,"mutability":"mutable","name":"appCreditUsed","nameLocation":"14812:13:15","nodeType":"VariableDeclaration","scope":7443,"src":"14805:20:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7434,"name":"int256","nodeType":"ElementaryTypeName","src":"14805:6:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":7438,"mutability":"mutable","name":"appCreditToken","nameLocation":"14852:14:15","nodeType":"VariableDeclaration","scope":7443,"src":"14835:31:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"},"typeName":{"id":7437,"nodeType":"UserDefinedTypeName","pathNode":{"id":7436,"name":"ISuperfluidToken","nameLocations":["14835:16:15"],"nodeType":"IdentifierPath","referencedDeclaration":8014,"src":"14835:16:15"},"referencedDeclaration":8014,"src":"14835:16:15","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"}},"visibility":"internal"}],"src":"14710:162:15"},"returnParameters":{"id":7442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7441,"mutability":"mutable","name":"newCtx","nameLocation":"14976:6:15","nodeType":"VariableDeclaration","scope":7443,"src":"14963:19:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7440,"name":"bytes","nodeType":"ElementaryTypeName","src":"14963:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"14962:21:15"},"scope":7599,"src":"14686:298:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7444,"nodeType":"StructuredDocumentation","src":"14990:554:15","text":" @dev (For agreements) Pop from the current app callback stack\n @param ctx The ctx that was pushed before the callback stack.\n @param appCreditUsedDelta App credit used by the app.\n @return newCtx The current context of the transaction.\n @custom:security\n - Here we cannot do assertValidCtx(ctx), since we do not really save the stack in memory.\n - Hence there is still implicit trust that the agreement handles the callback push/pop pair correctly."},"functionSelector":"989b0c3e","id":7453,"implemented":false,"kind":"function","modifiers":[],"name":"appCallbackPop","nameLocation":"15558:14:15","nodeType":"FunctionDefinition","parameters":{"id":7449,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7446,"mutability":"mutable","name":"ctx","nameLocation":"15597:3:15","nodeType":"VariableDeclaration","scope":7453,"src":"15582:18:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":7445,"name":"bytes","nodeType":"ElementaryTypeName","src":"15582:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":7448,"mutability":"mutable","name":"appCreditUsedDelta","nameLocation":"15617:18:15","nodeType":"VariableDeclaration","scope":7453,"src":"15610:25:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7447,"name":"int256","nodeType":"ElementaryTypeName","src":"15610:6:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"15572:69:15"},"returnParameters":{"id":7452,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7451,"mutability":"mutable","name":"newCtx","nameLocation":"15714:6:15","nodeType":"VariableDeclaration","scope":7453,"src":"15701:19:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7450,"name":"bytes","nodeType":"ElementaryTypeName","src":"15701:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"15700:21:15"},"scope":7599,"src":"15549:173:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7454,"nodeType":"StructuredDocumentation","src":"15728:288:15","text":" @dev (For agreements) Use app credit.\n @param ctx The current ctx, it will be validated.\n @param appCreditUsedMore See app credit for more details.\n @return newCtx The current context of the transaction."},"functionSelector":"59a29141","id":7463,"implemented":false,"kind":"function","modifiers":[],"name":"ctxUseCredit","nameLocation":"16030:12:15","nodeType":"FunctionDefinition","parameters":{"id":7459,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7456,"mutability":"mutable","name":"ctx","nameLocation":"16067:3:15","nodeType":"VariableDeclaration","scope":7463,"src":"16052:18:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":7455,"name":"bytes","nodeType":"ElementaryTypeName","src":"16052:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":7458,"mutability":"mutable","name":"appCreditUsedMore","nameLocation":"16087:17:15","nodeType":"VariableDeclaration","scope":7463,"src":"16080:24:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7457,"name":"int256","nodeType":"ElementaryTypeName","src":"16080:6:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"16042:68:15"},"returnParameters":{"id":7462,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7461,"mutability":"mutable","name":"newCtx","nameLocation":"16214:6:15","nodeType":"VariableDeclaration","scope":7463,"src":"16201:19:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7460,"name":"bytes","nodeType":"ElementaryTypeName","src":"16201:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"16200:21:15"},"scope":7599,"src":"16021:201:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7464,"nodeType":"StructuredDocumentation","src":"16228:244:15","text":" @dev (For agreements) Jail the app.\n @param app The super app.\n @param reason Jail reason code.\n @return newCtx The current context of the transaction."},"functionSelector":"b724211e","id":7476,"implemented":false,"kind":"function","modifiers":[],"name":"jailApp","nameLocation":"16486:7:15","nodeType":"FunctionDefinition","parameters":{"id":7472,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7466,"mutability":"mutable","name":"ctx","nameLocation":"16518:3:15","nodeType":"VariableDeclaration","scope":7476,"src":"16503:18:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":7465,"name":"bytes","nodeType":"ElementaryTypeName","src":"16503:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":7469,"mutability":"mutable","name":"app","nameLocation":"16541:3:15","nodeType":"VariableDeclaration","scope":7476,"src":"16531:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6509","typeString":"contract ISuperApp"},"typeName":{"id":7468,"nodeType":"UserDefinedTypeName","pathNode":{"id":7467,"name":"ISuperApp","nameLocations":["16531:9:15"],"nodeType":"IdentifierPath","referencedDeclaration":6509,"src":"16531:9:15"},"referencedDeclaration":6509,"src":"16531:9:15","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6509","typeString":"contract ISuperApp"}},"visibility":"internal"},{"constant":false,"id":7471,"mutability":"mutable","name":"reason","nameLocation":"16562:6:15","nodeType":"VariableDeclaration","scope":7476,"src":"16554:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7470,"name":"uint256","nodeType":"ElementaryTypeName","src":"16554:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16493:81:15"},"returnParameters":{"id":7475,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7474,"mutability":"mutable","name":"newCtx","nameLocation":"16678:6:15","nodeType":"VariableDeclaration","scope":7476,"src":"16665:19:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7473,"name":"bytes","nodeType":"ElementaryTypeName","src":"16665:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"16664:21:15"},"scope":7599,"src":"16477:209:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":7477,"nodeType":"StructuredDocumentation","src":"16692:172:15","text":" @dev Jail event for the app\n @param app Address of jailed app\n @param reason Reason the app is jailed (see Definitions.sol for the full list)"},"eventSelector":"be3aa33bd245135e4e26b223d79d14ea479a47bff09f2b03c53838af1edbb14b","id":7484,"name":"Jail","nameLocation":"16875:4:15","nodeType":"EventDefinition","parameters":{"id":7483,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7480,"indexed":true,"mutability":"mutable","name":"app","nameLocation":"16898:3:15","nodeType":"VariableDeclaration","scope":7484,"src":"16880:21:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6509","typeString":"contract ISuperApp"},"typeName":{"id":7479,"nodeType":"UserDefinedTypeName","pathNode":{"id":7478,"name":"ISuperApp","nameLocations":["16880:9:15"],"nodeType":"IdentifierPath","referencedDeclaration":6509,"src":"16880:9:15"},"referencedDeclaration":6509,"src":"16880:9:15","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6509","typeString":"contract ISuperApp"}},"visibility":"internal"},{"constant":false,"id":7482,"indexed":false,"mutability":"mutable","name":"reason","nameLocation":"16911:6:15","nodeType":"VariableDeclaration","scope":7484,"src":"16903:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7481,"name":"uint256","nodeType":"ElementaryTypeName","src":"16903:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16879:39:15"},"src":"16869:50:15"},{"documentation":{"id":7485,"nodeType":"StructuredDocumentation","src":"17480:265:15","text":" @dev Call agreement function\n @param agreementClass The agreement address you are calling\n @param callData The contextual call data with placeholder ctx\n @param userData Extra user data being sent to the super app callbacks"},"functionSelector":"39255d5b","id":7497,"implemented":false,"kind":"function","modifiers":[],"name":"callAgreement","nameLocation":"17760:13:15","nodeType":"FunctionDefinition","parameters":{"id":7493,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7488,"mutability":"mutable","name":"agreementClass","nameLocation":"17800:14:15","nodeType":"VariableDeclaration","scope":7497,"src":"17784:30:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperAgreement_$6395","typeString":"contract ISuperAgreement"},"typeName":{"id":7487,"nodeType":"UserDefinedTypeName","pathNode":{"id":7486,"name":"ISuperAgreement","nameLocations":["17784:15:15"],"nodeType":"IdentifierPath","referencedDeclaration":6395,"src":"17784:15:15"},"referencedDeclaration":6395,"src":"17784:15:15","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperAgreement_$6395","typeString":"contract ISuperAgreement"}},"visibility":"internal"},{"constant":false,"id":7490,"mutability":"mutable","name":"callData","nameLocation":"17840:8:15","nodeType":"VariableDeclaration","scope":7497,"src":"17825:23:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":7489,"name":"bytes","nodeType":"ElementaryTypeName","src":"17825:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":7492,"mutability":"mutable","name":"userData","nameLocation":"17874:8:15","nodeType":"VariableDeclaration","scope":7497,"src":"17859:23:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":7491,"name":"bytes","nodeType":"ElementaryTypeName","src":"17859:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"17773:116:15"},"returnParameters":{"id":7496,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7495,"mutability":"mutable","name":"returnedData","nameLocation":"17993:12:15","nodeType":"VariableDeclaration","scope":7497,"src":"17980:25:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7494,"name":"bytes","nodeType":"ElementaryTypeName","src":"17980:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"17979:27:15"},"scope":7599,"src":"17751:256:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7498,"nodeType":"StructuredDocumentation","src":"18013:268:15","text":" @notice Call app action\n @dev Main use case is calling app action in a batch call via the host\n @param callData The contextual call data\n @custom:note See \"Contextless Call Proxies\" above for more about contextual call data."},"functionSelector":"1e855cf3","id":7508,"implemented":false,"kind":"function","modifiers":[],"name":"callAppAction","nameLocation":"18295:13:15","nodeType":"FunctionDefinition","parameters":{"id":7504,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7501,"mutability":"mutable","name":"app","nameLocation":"18328:3:15","nodeType":"VariableDeclaration","scope":7508,"src":"18318:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6509","typeString":"contract ISuperApp"},"typeName":{"id":7500,"nodeType":"UserDefinedTypeName","pathNode":{"id":7499,"name":"ISuperApp","nameLocations":["18318:9:15"],"nodeType":"IdentifierPath","referencedDeclaration":6509,"src":"18318:9:15"},"referencedDeclaration":6509,"src":"18318:9:15","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6509","typeString":"contract ISuperApp"}},"visibility":"internal"},{"constant":false,"id":7503,"mutability":"mutable","name":"callData","nameLocation":"18356:8:15","nodeType":"VariableDeclaration","scope":7508,"src":"18341:23:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":7502,"name":"bytes","nodeType":"ElementaryTypeName","src":"18341:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"18308:62:15"},"returnParameters":{"id":7507,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7506,"mutability":"mutable","name":"returnedData","nameLocation":"18500:12:15","nodeType":"VariableDeclaration","scope":7508,"src":"18487:25:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7505,"name":"bytes","nodeType":"ElementaryTypeName","src":"18487:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"18486:27:15"},"scope":7599,"src":"18286:228:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"canonicalName":"ISuperfluid.Context","id":7532,"members":[{"constant":false,"id":7510,"mutability":"mutable","name":"appCallbackLevel","nameLocation":"19759:16:15","nodeType":"VariableDeclaration","scope":7532,"src":"19753:22:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":7509,"name":"uint8","nodeType":"ElementaryTypeName","src":"19753:5:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":7512,"mutability":"mutable","name":"callType","nameLocation":"19815:8:15","nodeType":"VariableDeclaration","scope":7532,"src":"19809:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":7511,"name":"uint8","nodeType":"ElementaryTypeName","src":"19809:5:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":7514,"mutability":"mutable","name":"timestamp","nameLocation":"19873:9:15","nodeType":"VariableDeclaration","scope":7532,"src":"19865:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7513,"name":"uint256","nodeType":"ElementaryTypeName","src":"19865:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7516,"mutability":"mutable","name":"msgSender","nameLocation":"19952:9:15","nodeType":"VariableDeclaration","scope":7532,"src":"19944:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7515,"name":"address","nodeType":"ElementaryTypeName","src":"19944:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7518,"mutability":"mutable","name":"agreementSelector","nameLocation":"20117:17:15","nodeType":"VariableDeclaration","scope":7532,"src":"20110:24:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":7517,"name":"bytes4","nodeType":"ElementaryTypeName","src":"20110:6:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"},{"constant":false,"id":7520,"mutability":"mutable","name":"userData","nameLocation":"20198:8:15","nodeType":"VariableDeclaration","scope":7532,"src":"20192:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":7519,"name":"bytes","nodeType":"ElementaryTypeName","src":"20192:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":7522,"mutability":"mutable","name":"appCreditGranted","nameLocation":"20300:16:15","nodeType":"VariableDeclaration","scope":7532,"src":"20292:24:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7521,"name":"uint256","nodeType":"ElementaryTypeName","src":"20292:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7524,"mutability":"mutable","name":"appCreditWantedDeprecated","nameLocation":"20383:25:15","nodeType":"VariableDeclaration","scope":7532,"src":"20375:33:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7523,"name":"uint256","nodeType":"ElementaryTypeName","src":"20375:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7526,"mutability":"mutable","name":"appCreditUsed","nameLocation":"20946:13:15","nodeType":"VariableDeclaration","scope":7532,"src":"20939:20:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7525,"name":"int256","nodeType":"ElementaryTypeName","src":"20939:6:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":7528,"mutability":"mutable","name":"appAddress","nameLocation":"21000:10:15","nodeType":"VariableDeclaration","scope":7532,"src":"20992:18:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7527,"name":"address","nodeType":"ElementaryTypeName","src":"20992:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7531,"mutability":"mutable","name":"appCreditToken","nameLocation":"21074:14:15","nodeType":"VariableDeclaration","scope":7532,"src":"21057:31:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"},"typeName":{"id":7530,"nodeType":"UserDefinedTypeName","pathNode":{"id":7529,"name":"ISuperfluidToken","nameLocations":["21057:16:15"],"nodeType":"IdentifierPath","referencedDeclaration":8014,"src":"21057:16:15"},"referencedDeclaration":8014,"src":"21057:16:15","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"}},"visibility":"internal"}],"name":"Context","nameLocation":"19659:7:15","nodeType":"StructDefinition","scope":7599,"src":"19652:1443:15","visibility":"public"},{"functionSelector":"4329d293","id":7548,"implemented":false,"kind":"function","modifiers":[],"name":"callAgreementWithContext","nameLocation":"21110:24:15","nodeType":"FunctionDefinition","parameters":{"id":7542,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7535,"mutability":"mutable","name":"agreementClass","nameLocation":"21160:14:15","nodeType":"VariableDeclaration","scope":7548,"src":"21144:30:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperAgreement_$6395","typeString":"contract ISuperAgreement"},"typeName":{"id":7534,"nodeType":"UserDefinedTypeName","pathNode":{"id":7533,"name":"ISuperAgreement","nameLocations":["21144:15:15"],"nodeType":"IdentifierPath","referencedDeclaration":6395,"src":"21144:15:15"},"referencedDeclaration":6395,"src":"21144:15:15","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperAgreement_$6395","typeString":"contract ISuperAgreement"}},"visibility":"internal"},{"constant":false,"id":7537,"mutability":"mutable","name":"callData","nameLocation":"21199:8:15","nodeType":"VariableDeclaration","scope":7548,"src":"21184:23:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":7536,"name":"bytes","nodeType":"ElementaryTypeName","src":"21184:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":7539,"mutability":"mutable","name":"userData","nameLocation":"21232:8:15","nodeType":"VariableDeclaration","scope":7548,"src":"21217:23:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":7538,"name":"bytes","nodeType":"ElementaryTypeName","src":"21217:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":7541,"mutability":"mutable","name":"ctx","nameLocation":"21265:3:15","nodeType":"VariableDeclaration","scope":7548,"src":"21250:18:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":7540,"name":"bytes","nodeType":"ElementaryTypeName","src":"21250:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"21134:140:15"},"returnParameters":{"id":7547,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7544,"mutability":"mutable","name":"newCtx","nameLocation":"21395:6:15","nodeType":"VariableDeclaration","scope":7548,"src":"21382:19:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7543,"name":"bytes","nodeType":"ElementaryTypeName","src":"21382:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":7546,"mutability":"mutable","name":"returnedData","nameLocation":"21416:12:15","nodeType":"VariableDeclaration","scope":7548,"src":"21403:25:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7545,"name":"bytes","nodeType":"ElementaryTypeName","src":"21403:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"21381:48:15"},"scope":7599,"src":"21101:329:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"ba48b5f8","id":7560,"implemented":false,"kind":"function","modifiers":[],"name":"callAppActionWithContext","nameLocation":"21445:24:15","nodeType":"FunctionDefinition","parameters":{"id":7556,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7551,"mutability":"mutable","name":"app","nameLocation":"21489:3:15","nodeType":"VariableDeclaration","scope":7560,"src":"21479:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6509","typeString":"contract ISuperApp"},"typeName":{"id":7550,"nodeType":"UserDefinedTypeName","pathNode":{"id":7549,"name":"ISuperApp","nameLocations":["21479:9:15"],"nodeType":"IdentifierPath","referencedDeclaration":6509,"src":"21479:9:15"},"referencedDeclaration":6509,"src":"21479:9:15","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6509","typeString":"contract ISuperApp"}},"visibility":"internal"},{"constant":false,"id":7553,"mutability":"mutable","name":"callData","nameLocation":"21517:8:15","nodeType":"VariableDeclaration","scope":7560,"src":"21502:23:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":7552,"name":"bytes","nodeType":"ElementaryTypeName","src":"21502:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":7555,"mutability":"mutable","name":"ctx","nameLocation":"21550:3:15","nodeType":"VariableDeclaration","scope":7560,"src":"21535:18:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":7554,"name":"bytes","nodeType":"ElementaryTypeName","src":"21535:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"21469:90:15"},"returnParameters":{"id":7559,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7558,"mutability":"mutable","name":"newCtx","nameLocation":"21667:6:15","nodeType":"VariableDeclaration","scope":7560,"src":"21654:19:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7557,"name":"bytes","nodeType":"ElementaryTypeName","src":"21654:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"21653:21:15"},"scope":7599,"src":"21436:239:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"3f6c923a","id":7568,"implemented":false,"kind":"function","modifiers":[],"name":"decodeCtx","nameLocation":"21690:9:15","nodeType":"FunctionDefinition","parameters":{"id":7563,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7562,"mutability":"mutable","name":"ctx","nameLocation":"21713:3:15","nodeType":"VariableDeclaration","scope":7568,"src":"21700:16:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7561,"name":"bytes","nodeType":"ElementaryTypeName","src":"21700:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"21699:18:15"},"returnParameters":{"id":7567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7566,"mutability":"mutable","name":"context","nameLocation":"21772:7:15","nodeType":"VariableDeclaration","scope":7568,"src":"21757:22:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Context_$7532_memory_ptr","typeString":"struct ISuperfluid.Context"},"typeName":{"id":7565,"nodeType":"UserDefinedTypeName","pathNode":{"id":7564,"name":"Context","nameLocations":["21757:7:15"],"nodeType":"IdentifierPath","referencedDeclaration":7532,"src":"21757:7:15"},"referencedDeclaration":7532,"src":"21757:7:15","typeDescriptions":{"typeIdentifier":"t_struct$_Context_$7532_storage_ptr","typeString":"struct ISuperfluid.Context"}},"visibility":"internal"}],"src":"21756:24:15"},"scope":7599,"src":"21681:100:15","stateMutability":"pure","virtual":false,"visibility":"external"},{"functionSelector":"bf428734","id":7575,"implemented":false,"kind":"function","modifiers":[],"name":"isCtxValid","nameLocation":"21796:10:15","nodeType":"FunctionDefinition","parameters":{"id":7571,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7570,"mutability":"mutable","name":"ctx","nameLocation":"21822:3:15","nodeType":"VariableDeclaration","scope":7575,"src":"21807:18:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":7569,"name":"bytes","nodeType":"ElementaryTypeName","src":"21807:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"21806:20:15"},"returnParameters":{"id":7574,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7573,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7575,"src":"21850:4:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7572,"name":"bool","nodeType":"ElementaryTypeName","src":"21850:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"21849:6:15"},"scope":7599,"src":"21787:69:15","stateMutability":"view","virtual":false,"visibility":"external"},{"canonicalName":"ISuperfluid.Operation","id":7582,"members":[{"constant":false,"id":7577,"mutability":"mutable","name":"operationType","nameLocation":"22193:13:15","nodeType":"VariableDeclaration","scope":7582,"src":"22186:20:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":7576,"name":"uint32","nodeType":"ElementaryTypeName","src":"22186:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":7579,"mutability":"mutable","name":"target","nameLocation":"22252:6:15","nodeType":"VariableDeclaration","scope":7582,"src":"22244:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7578,"name":"address","nodeType":"ElementaryTypeName","src":"22244:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7581,"mutability":"mutable","name":"data","nameLocation":"22316:4:15","nodeType":"VariableDeclaration","scope":7582,"src":"22310:10:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":7580,"name":"bytes","nodeType":"ElementaryTypeName","src":"22310:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"Operation","nameLocation":"22095:9:15","nodeType":"StructDefinition","scope":7599,"src":"22088:239:15","visibility":"public"},{"documentation":{"id":7583,"nodeType":"StructuredDocumentation","src":"22333:94:15","text":" @dev Batch call function\n @param operations Array of batch operations"},"functionSelector":"6ad3ca7d","id":7590,"implemented":false,"kind":"function","modifiers":[],"name":"batchCall","nameLocation":"22441:9:15","nodeType":"FunctionDefinition","parameters":{"id":7588,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7587,"mutability":"mutable","name":"operations","nameLocation":"22472:10:15","nodeType":"VariableDeclaration","scope":7590,"src":"22451:31:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Operation_$7582_calldata_ptr_$dyn_calldata_ptr","typeString":"struct ISuperfluid.Operation[]"},"typeName":{"baseType":{"id":7585,"nodeType":"UserDefinedTypeName","pathNode":{"id":7584,"name":"Operation","nameLocations":["22451:9:15"],"nodeType":"IdentifierPath","referencedDeclaration":7582,"src":"22451:9:15"},"referencedDeclaration":7582,"src":"22451:9:15","typeDescriptions":{"typeIdentifier":"t_struct$_Operation_$7582_storage_ptr","typeString":"struct ISuperfluid.Operation"}},"id":7586,"nodeType":"ArrayTypeName","src":"22451:11:15","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Operation_$7582_storage_$dyn_storage_ptr","typeString":"struct ISuperfluid.Operation[]"}},"visibility":"internal"}],"src":"22450:33:15"},"returnParameters":{"id":7589,"nodeType":"ParameterList","parameters":[],"src":"22492:0:15"},"scope":7599,"src":"22432:61:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7591,"nodeType":"StructuredDocumentation","src":"22499:128:15","text":" @dev Batch call function for trusted forwarders (EIP-2771)\n @param operations Array of batch operations"},"functionSelector":"670e77e3","id":7598,"implemented":false,"kind":"function","modifiers":[],"name":"forwardBatchCall","nameLocation":"22641:16:15","nodeType":"FunctionDefinition","parameters":{"id":7596,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7595,"mutability":"mutable","name":"operations","nameLocation":"22679:10:15","nodeType":"VariableDeclaration","scope":7598,"src":"22658:31:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Operation_$7582_calldata_ptr_$dyn_calldata_ptr","typeString":"struct ISuperfluid.Operation[]"},"typeName":{"baseType":{"id":7593,"nodeType":"UserDefinedTypeName","pathNode":{"id":7592,"name":"Operation","nameLocations":["22658:9:15"],"nodeType":"IdentifierPath","referencedDeclaration":7582,"src":"22658:9:15"},"referencedDeclaration":7582,"src":"22658:9:15","typeDescriptions":{"typeIdentifier":"t_struct$_Operation_$7582_storage_ptr","typeString":"struct ISuperfluid.Operation"}},"id":7594,"nodeType":"ArrayTypeName","src":"22658:11:15","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Operation_$7582_storage_$dyn_storage_ptr","typeString":"struct ISuperfluid.Operation[]"}},"visibility":"internal"}],"src":"22657:33:15"},"returnParameters":{"id":7597,"nodeType":"ParameterList","parameters":[],"src":"22699:0:15"},"scope":7599,"src":"22632:68:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":7600,"src":"1120:22687:15","usedErrors":[7106,7108,7110,7112,7114,7116,7118,7120,7122,7124,7126,7128,7130,7132,7136,7138,7140,7142,7144,7146,7148,7150,7152,7154]}],"src":"35:23773:15"},"id":15},"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance.sol":{"ast":{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance.sol","exportedSymbols":{"ISuperAgreement":[6395],"ISuperToken":[6947],"ISuperfluid":[7599],"ISuperfluidGovernance":[7728],"ISuperfluidToken":[8014]},"id":7729,"license":"AGPLv3","nodeType":"SourceUnit","nodes":[{"id":7601,"literals":["solidity",">=","0.8",".4"],"nodeType":"PragmaDirective","src":"35:25:16"},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol","file":"./ISuperAgreement.sol","id":7603,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7729,"sourceUnit":6396,"src":"62:56:16","symbolAliases":[{"foreign":{"id":7602,"name":"ISuperAgreement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6395,"src":"71:15:16","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.sol","file":"./ISuperToken.sol","id":7605,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7729,"sourceUnit":6948,"src":"119:48:16","symbolAliases":[{"foreign":{"id":7604,"name":"ISuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6947,"src":"128:11:16","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol","file":"./ISuperfluidToken.sol","id":7607,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7729,"sourceUnit":8015,"src":"168:59:16","symbolAliases":[{"foreign":{"id":7606,"name":"ISuperfluidToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8014,"src":"177:16:16","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol","file":"./ISuperfluid.sol","id":7609,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7729,"sourceUnit":7600,"src":"228:48:16","symbolAliases":[{"foreign":{"id":7608,"name":"ISuperfluid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7599,"src":"237:11:16","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"ISuperfluidGovernance","contractDependencies":[],"contractKind":"interface","documentation":{"id":7610,"nodeType":"StructuredDocumentation","src":"279:71:16","text":" @title Superfluid governance interface\n @author Superfluid"},"fullyImplemented":false,"id":7728,"linearizedBaseContracts":[7728],"name":"ISuperfluidGovernance","nameLocation":"361:21:16","nodeType":"ContractDefinition","nodes":[{"errorSelector":"27743aa6","id":7612,"name":"SF_GOV_ARRAYS_NOT_SAME_LENGTH","nameLocation":"574:29:16","nodeType":"ErrorDefinition","parameters":{"id":7611,"nodeType":"ParameterList","parameters":[],"src":"603:2:16"},"src":"568:38:16"},{"errorSelector":"e171980a","id":7614,"name":"SF_GOV_INVALID_LIQUIDATION_OR_PATRICIAN_PERIOD","nameLocation":"648:46:16","nodeType":"ErrorDefinition","parameters":{"id":7613,"nodeType":"ParameterList","parameters":[],"src":"694:2:16"},"src":"642:55:16"},{"errorSelector":"80dddd73","id":7616,"name":"SF_GOV_MUST_BE_CONTRACT","nameLocation":"722:23:16","nodeType":"ErrorDefinition","parameters":{"id":7615,"nodeType":"ParameterList","parameters":[],"src":"745:2:16"},"src":"716:32:16"},{"documentation":{"id":7617,"nodeType":"StructuredDocumentation","src":"791:76:16","text":" @dev Replace the current governance with a new governance"},"functionSelector":"44864b25","id":7625,"implemented":false,"kind":"function","modifiers":[],"name":"replaceGovernance","nameLocation":"881:17:16","nodeType":"FunctionDefinition","parameters":{"id":7623,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7620,"mutability":"mutable","name":"host","nameLocation":"920:4:16","nodeType":"VariableDeclaration","scope":7625,"src":"908:16:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"},"typeName":{"id":7619,"nodeType":"UserDefinedTypeName","pathNode":{"id":7618,"name":"ISuperfluid","nameLocations":["908:11:16"],"nodeType":"IdentifierPath","referencedDeclaration":7599,"src":"908:11:16"},"referencedDeclaration":7599,"src":"908:11:16","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":7622,"mutability":"mutable","name":"newGov","nameLocation":"942:6:16","nodeType":"VariableDeclaration","scope":7625,"src":"934:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7621,"name":"address","nodeType":"ElementaryTypeName","src":"934:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"898:51:16"},"returnParameters":{"id":7624,"nodeType":"ParameterList","parameters":[],"src":"958:0:16"},"scope":7728,"src":"872:87:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7626,"nodeType":"StructuredDocumentation","src":"965:54:16","text":" @dev Register a new agreement class"},"functionSelector":"cadf8f85","id":7634,"implemented":false,"kind":"function","modifiers":[],"name":"registerAgreementClass","nameLocation":"1033:22:16","nodeType":"FunctionDefinition","parameters":{"id":7632,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7629,"mutability":"mutable","name":"host","nameLocation":"1077:4:16","nodeType":"VariableDeclaration","scope":7634,"src":"1065:16:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"},"typeName":{"id":7628,"nodeType":"UserDefinedTypeName","pathNode":{"id":7627,"name":"ISuperfluid","nameLocations":["1065:11:16"],"nodeType":"IdentifierPath","referencedDeclaration":7599,"src":"1065:11:16"},"referencedDeclaration":7599,"src":"1065:11:16","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":7631,"mutability":"mutable","name":"agreementClass","nameLocation":"1099:14:16","nodeType":"VariableDeclaration","scope":7634,"src":"1091:22:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7630,"name":"address","nodeType":"ElementaryTypeName","src":"1091:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1055:59:16"},"returnParameters":{"id":7633,"nodeType":"ParameterList","parameters":[],"src":"1123:0:16"},"scope":7728,"src":"1024:100:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7635,"nodeType":"StructuredDocumentation","src":"1130:193:16","text":" @dev Update logics of the contracts\n @custom:note \n - Because they might have inter-dependencies, it is good to have one single function to update them all"},"functionSelector":"427942a4","id":7648,"implemented":false,"kind":"function","modifiers":[],"name":"updateContracts","nameLocation":"1337:15:16","nodeType":"FunctionDefinition","parameters":{"id":7646,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7638,"mutability":"mutable","name":"host","nameLocation":"1374:4:16","nodeType":"VariableDeclaration","scope":7648,"src":"1362:16:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"},"typeName":{"id":7637,"nodeType":"UserDefinedTypeName","pathNode":{"id":7636,"name":"ISuperfluid","nameLocations":["1362:11:16"],"nodeType":"IdentifierPath","referencedDeclaration":7599,"src":"1362:11:16"},"referencedDeclaration":7599,"src":"1362:11:16","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":7640,"mutability":"mutable","name":"hostNewLogic","nameLocation":"1396:12:16","nodeType":"VariableDeclaration","scope":7648,"src":"1388:20:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7639,"name":"address","nodeType":"ElementaryTypeName","src":"1388:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7643,"mutability":"mutable","name":"agreementClassNewLogics","nameLocation":"1437:23:16","nodeType":"VariableDeclaration","scope":7648,"src":"1418:42:16","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":7641,"name":"address","nodeType":"ElementaryTypeName","src":"1418:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7642,"nodeType":"ArrayTypeName","src":"1418:9:16","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":7645,"mutability":"mutable","name":"superTokenFactoryNewLogic","nameLocation":"1478:25:16","nodeType":"VariableDeclaration","scope":7648,"src":"1470:33:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7644,"name":"address","nodeType":"ElementaryTypeName","src":"1470:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1352:157:16"},"returnParameters":{"id":7647,"nodeType":"ParameterList","parameters":[],"src":"1518:0:16"},"scope":7728,"src":"1328:191:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7649,"nodeType":"StructuredDocumentation","src":"1525:113:16","text":" @dev Update supertoken logic contract to the latest that is managed by the super token factory"},"functionSelector":"42148deb","id":7659,"implemented":false,"kind":"function","modifiers":[],"name":"batchUpdateSuperTokenLogic","nameLocation":"1652:26:16","nodeType":"FunctionDefinition","parameters":{"id":7657,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7652,"mutability":"mutable","name":"host","nameLocation":"1700:4:16","nodeType":"VariableDeclaration","scope":7659,"src":"1688:16:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"},"typeName":{"id":7651,"nodeType":"UserDefinedTypeName","pathNode":{"id":7650,"name":"ISuperfluid","nameLocations":["1688:11:16"],"nodeType":"IdentifierPath","referencedDeclaration":7599,"src":"1688:11:16"},"referencedDeclaration":7599,"src":"1688:11:16","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":7656,"mutability":"mutable","name":"tokens","nameLocation":"1737:6:16","nodeType":"VariableDeclaration","scope":7659,"src":"1714:29:16","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_ISuperToken_$6947_$dyn_calldata_ptr","typeString":"contract ISuperToken[]"},"typeName":{"baseType":{"id":7654,"nodeType":"UserDefinedTypeName","pathNode":{"id":7653,"name":"ISuperToken","nameLocations":["1714:11:16"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"1714:11:16"},"referencedDeclaration":6947,"src":"1714:11:16","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"id":7655,"nodeType":"ArrayTypeName","src":"1714:13:16","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_ISuperToken_$6947_$dyn_storage_ptr","typeString":"contract ISuperToken[]"}},"visibility":"internal"}],"src":"1678:66:16"},"returnParameters":{"id":7658,"nodeType":"ParameterList","parameters":[],"src":"1753:0:16"},"scope":7728,"src":"1643:111:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7660,"nodeType":"StructuredDocumentation","src":"1764:58:16","text":" @dev Set configuration as address value"},"functionSelector":"78707cb8","id":7673,"implemented":false,"kind":"function","modifiers":[],"name":"setConfig","nameLocation":"1836:9:16","nodeType":"FunctionDefinition","parameters":{"id":7671,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7663,"mutability":"mutable","name":"host","nameLocation":"1867:4:16","nodeType":"VariableDeclaration","scope":7673,"src":"1855:16:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"},"typeName":{"id":7662,"nodeType":"UserDefinedTypeName","pathNode":{"id":7661,"name":"ISuperfluid","nameLocations":["1855:11:16"],"nodeType":"IdentifierPath","referencedDeclaration":7599,"src":"1855:11:16"},"referencedDeclaration":7599,"src":"1855:11:16","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":7666,"mutability":"mutable","name":"superToken","nameLocation":"1898:10:16","nodeType":"VariableDeclaration","scope":7673,"src":"1881:27:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"},"typeName":{"id":7665,"nodeType":"UserDefinedTypeName","pathNode":{"id":7664,"name":"ISuperfluidToken","nameLocations":["1881:16:16"],"nodeType":"IdentifierPath","referencedDeclaration":8014,"src":"1881:16:16"},"referencedDeclaration":8014,"src":"1881:16:16","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":7668,"mutability":"mutable","name":"key","nameLocation":"1926:3:16","nodeType":"VariableDeclaration","scope":7673,"src":"1918:11:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7667,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1918:7:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":7670,"mutability":"mutable","name":"value","nameLocation":"1947:5:16","nodeType":"VariableDeclaration","scope":7673,"src":"1939:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7669,"name":"address","nodeType":"ElementaryTypeName","src":"1939:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1845:113:16"},"returnParameters":{"id":7672,"nodeType":"ParameterList","parameters":[],"src":"1967:0:16"},"scope":7728,"src":"1827:141:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7674,"nodeType":"StructuredDocumentation","src":"1978:58:16","text":" @dev Set configuration as uint256 value"},"functionSelector":"f79a8e63","id":7687,"implemented":false,"kind":"function","modifiers":[],"name":"setConfig","nameLocation":"2050:9:16","nodeType":"FunctionDefinition","parameters":{"id":7685,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7677,"mutability":"mutable","name":"host","nameLocation":"2081:4:16","nodeType":"VariableDeclaration","scope":7687,"src":"2069:16:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"},"typeName":{"id":7676,"nodeType":"UserDefinedTypeName","pathNode":{"id":7675,"name":"ISuperfluid","nameLocations":["2069:11:16"],"nodeType":"IdentifierPath","referencedDeclaration":7599,"src":"2069:11:16"},"referencedDeclaration":7599,"src":"2069:11:16","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":7680,"mutability":"mutable","name":"superToken","nameLocation":"2112:10:16","nodeType":"VariableDeclaration","scope":7687,"src":"2095:27:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"},"typeName":{"id":7679,"nodeType":"UserDefinedTypeName","pathNode":{"id":7678,"name":"ISuperfluidToken","nameLocations":["2095:16:16"],"nodeType":"IdentifierPath","referencedDeclaration":8014,"src":"2095:16:16"},"referencedDeclaration":8014,"src":"2095:16:16","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":7682,"mutability":"mutable","name":"key","nameLocation":"2140:3:16","nodeType":"VariableDeclaration","scope":7687,"src":"2132:11:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7681,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2132:7:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":7684,"mutability":"mutable","name":"value","nameLocation":"2161:5:16","nodeType":"VariableDeclaration","scope":7687,"src":"2153:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7683,"name":"uint256","nodeType":"ElementaryTypeName","src":"2153:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2059:113:16"},"returnParameters":{"id":7686,"nodeType":"ParameterList","parameters":[],"src":"2181:0:16"},"scope":7728,"src":"2041:141:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7688,"nodeType":"StructuredDocumentation","src":"2188:43:16","text":" @dev Clear configuration"},"functionSelector":"640b6cc9","id":7699,"implemented":false,"kind":"function","modifiers":[],"name":"clearConfig","nameLocation":"2245:11:16","nodeType":"FunctionDefinition","parameters":{"id":7697,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7691,"mutability":"mutable","name":"host","nameLocation":"2278:4:16","nodeType":"VariableDeclaration","scope":7699,"src":"2266:16:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"},"typeName":{"id":7690,"nodeType":"UserDefinedTypeName","pathNode":{"id":7689,"name":"ISuperfluid","nameLocations":["2266:11:16"],"nodeType":"IdentifierPath","referencedDeclaration":7599,"src":"2266:11:16"},"referencedDeclaration":7599,"src":"2266:11:16","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":7694,"mutability":"mutable","name":"superToken","nameLocation":"2309:10:16","nodeType":"VariableDeclaration","scope":7699,"src":"2292:27:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"},"typeName":{"id":7693,"nodeType":"UserDefinedTypeName","pathNode":{"id":7692,"name":"ISuperfluidToken","nameLocations":["2292:16:16"],"nodeType":"IdentifierPath","referencedDeclaration":8014,"src":"2292:16:16"},"referencedDeclaration":8014,"src":"2292:16:16","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":7696,"mutability":"mutable","name":"key","nameLocation":"2337:3:16","nodeType":"VariableDeclaration","scope":7699,"src":"2329:11:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7695,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2329:7:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2256:90:16"},"returnParameters":{"id":7698,"nodeType":"ParameterList","parameters":[],"src":"2355:0:16"},"scope":7728,"src":"2236:120:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7700,"nodeType":"StructuredDocumentation","src":"2362:58:16","text":" @dev Get configuration as address value"},"functionSelector":"8369a0f1","id":7713,"implemented":false,"kind":"function","modifiers":[],"name":"getConfigAsAddress","nameLocation":"2434:18:16","nodeType":"FunctionDefinition","parameters":{"id":7709,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7703,"mutability":"mutable","name":"host","nameLocation":"2474:4:16","nodeType":"VariableDeclaration","scope":7713,"src":"2462:16:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"},"typeName":{"id":7702,"nodeType":"UserDefinedTypeName","pathNode":{"id":7701,"name":"ISuperfluid","nameLocations":["2462:11:16"],"nodeType":"IdentifierPath","referencedDeclaration":7599,"src":"2462:11:16"},"referencedDeclaration":7599,"src":"2462:11:16","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":7706,"mutability":"mutable","name":"superToken","nameLocation":"2505:10:16","nodeType":"VariableDeclaration","scope":7713,"src":"2488:27:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"},"typeName":{"id":7705,"nodeType":"UserDefinedTypeName","pathNode":{"id":7704,"name":"ISuperfluidToken","nameLocations":["2488:16:16"],"nodeType":"IdentifierPath","referencedDeclaration":8014,"src":"2488:16:16"},"referencedDeclaration":8014,"src":"2488:16:16","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":7708,"mutability":"mutable","name":"key","nameLocation":"2533:3:16","nodeType":"VariableDeclaration","scope":7713,"src":"2525:11:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7707,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2525:7:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2452:85:16"},"returnParameters":{"id":7712,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7711,"mutability":"mutable","name":"value","nameLocation":"2569:5:16","nodeType":"VariableDeclaration","scope":7713,"src":"2561:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7710,"name":"address","nodeType":"ElementaryTypeName","src":"2561:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2560:15:16"},"scope":7728,"src":"2425:151:16","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7714,"nodeType":"StructuredDocumentation","src":"2582:58:16","text":" @dev Get configuration as uint256 value"},"functionSelector":"80f70cba","id":7727,"implemented":false,"kind":"function","modifiers":[],"name":"getConfigAsUint256","nameLocation":"2654:18:16","nodeType":"FunctionDefinition","parameters":{"id":7723,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7717,"mutability":"mutable","name":"host","nameLocation":"2694:4:16","nodeType":"VariableDeclaration","scope":7727,"src":"2682:16:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"},"typeName":{"id":7716,"nodeType":"UserDefinedTypeName","pathNode":{"id":7715,"name":"ISuperfluid","nameLocations":["2682:11:16"],"nodeType":"IdentifierPath","referencedDeclaration":7599,"src":"2682:11:16"},"referencedDeclaration":7599,"src":"2682:11:16","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7599","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":7720,"mutability":"mutable","name":"superToken","nameLocation":"2725:10:16","nodeType":"VariableDeclaration","scope":7727,"src":"2708:27:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"},"typeName":{"id":7719,"nodeType":"UserDefinedTypeName","pathNode":{"id":7718,"name":"ISuperfluidToken","nameLocations":["2708:16:16"],"nodeType":"IdentifierPath","referencedDeclaration":8014,"src":"2708:16:16"},"referencedDeclaration":8014,"src":"2708:16:16","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8014","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":7722,"mutability":"mutable","name":"key","nameLocation":"2753:3:16","nodeType":"VariableDeclaration","scope":7727,"src":"2745:11:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7721,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2745:7:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2672:85:16"},"returnParameters":{"id":7726,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7725,"mutability":"mutable","name":"value","nameLocation":"2789:5:16","nodeType":"VariableDeclaration","scope":7727,"src":"2781:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7724,"name":"uint256","nodeType":"ElementaryTypeName","src":"2781:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2780:15:16"},"scope":7728,"src":"2645:151:16","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":7729,"src":"351:2448:16","usedErrors":[7612,7614,7616]}],"src":"35:2765:16"},"id":16},"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol":{"ast":{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol","exportedSymbols":{"ISuperAgreement":[6395],"ISuperfluidToken":[8014]},"id":8015,"license":"AGPLv3","nodeType":"SourceUnit","nodes":[{"id":7730,"literals":["solidity",">=","0.8",".4"],"nodeType":"PragmaDirective","src":"35:25:17"},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol","file":"./ISuperAgreement.sol","id":7732,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8015,"sourceUnit":6396,"src":"62:56:17","symbolAliases":[{"foreign":{"id":7731,"name":"ISuperAgreement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6395,"src":"71:15:17","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"ISuperfluidToken","contractDependencies":[],"contractKind":"interface","documentation":{"id":7733,"nodeType":"StructuredDocumentation","src":"120:66:17","text":" @title Superfluid token interface\n @author Superfluid"},"fullyImplemented":false,"id":8014,"linearizedBaseContracts":[8014],"name":"ISuperfluidToken","nameLocation":"197:16:17","nodeType":"ContractDefinition","nodes":[{"errorSelector":"f05521f6","id":7735,"name":"SF_TOKEN_AGREEMENT_ALREADY_EXISTS","nameLocation":"401:33:17","nodeType":"ErrorDefinition","parameters":{"id":7734,"nodeType":"ParameterList","parameters":[],"src":"434:2:17"},"src":"395:42:17"},{"errorSelector":"dae18809","id":7737,"name":"SF_TOKEN_AGREEMENT_DOES_NOT_EXIST","nameLocation":"463:33:17","nodeType":"ErrorDefinition","parameters":{"id":7736,"nodeType":"ParameterList","parameters":[],"src":"496:2:17"},"src":"457:42:17"},{"errorSelector":"10ecdf44","id":7739,"name":"SF_TOKEN_BURN_INSUFFICIENT_BALANCE","nameLocation":"525:34:17","nodeType":"ErrorDefinition","parameters":{"id":7738,"nodeType":"ParameterList","parameters":[],"src":"559:2:17"},"src":"519:43:17"},{"errorSelector":"2f4cb941","id":7741,"name":"SF_TOKEN_MOVE_INSUFFICIENT_BALANCE","nameLocation":"587:34:17","nodeType":"ErrorDefinition","parameters":{"id":7740,"nodeType":"ParameterList","parameters":[],"src":"621:2:17"},"src":"581:43:17"},{"errorSelector":"c9ff6644","id":7743,"name":"SF_TOKEN_ONLY_LISTED_AGREEMENT","nameLocation":"649:30:17","nodeType":"ErrorDefinition","parameters":{"id":7742,"nodeType":"ParameterList","parameters":[],"src":"679:2:17"},"src":"643:39:17"},{"errorSelector":"c51efddd","id":7745,"name":"SF_TOKEN_ONLY_HOST","nameLocation":"711:18:17","nodeType":"ErrorDefinition","parameters":{"id":7744,"nodeType":"ParameterList","parameters":[],"src":"729:2:17"},"src":"705:27:17"},{"documentation":{"id":7746,"nodeType":"StructuredDocumentation","src":"954:60:17","text":" @dev Get superfluid host contract address"},"functionSelector":"20bc4425","id":7751,"implemented":false,"kind":"function","modifiers":[],"name":"getHost","nameLocation":"1028:7:17","nodeType":"FunctionDefinition","parameters":{"id":7747,"nodeType":"ParameterList","parameters":[],"src":"1035:2:17"},"returnParameters":{"id":7750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7749,"mutability":"mutable","name":"host","nameLocation":"1068:4:17","nodeType":"VariableDeclaration","scope":7751,"src":"1060:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7748,"name":"address","nodeType":"ElementaryTypeName","src":"1060:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1059:14:17"},"scope":8014,"src":"1019:55:17","stateMutability":"view","virtual":false,"visibility":"external"},{"canonicalName":"ISuperfluidToken.LiquidationTypeData","id":7756,"members":[{"constant":false,"id":7753,"mutability":"mutable","name":"version","nameLocation":"1507:7:17","nodeType":"VariableDeclaration","scope":7756,"src":"1499:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7752,"name":"uint256","nodeType":"ElementaryTypeName","src":"1499:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7755,"mutability":"mutable","name":"liquidationType","nameLocation":"1530:15:17","nodeType":"VariableDeclaration","scope":7756,"src":"1524:21:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":7754,"name":"uint8","nodeType":"ElementaryTypeName","src":"1524:5:17","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"name":"LiquidationTypeData","nameLocation":"1469:19:17","nodeType":"StructDefinition","scope":8014,"src":"1462:90:17","visibility":"public"},{"documentation":{"id":7757,"nodeType":"StructuredDocumentation","src":"1754:321:17","text":" @dev Calculate the real balance of a user, taking in consideration all agreements of the account\n @param account for the query\n @param timestamp Time of balance\n @return availableBalance Real-time balance\n @return deposit Account deposit\n @return owedDeposit Account owed Deposit"},"functionSelector":"eb3537cc","id":7770,"implemented":false,"kind":"function","modifiers":[],"name":"realtimeBalanceOf","nameLocation":"2089:17:17","nodeType":"FunctionDefinition","parameters":{"id":7762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7759,"mutability":"mutable","name":"account","nameLocation":"2123:7:17","nodeType":"VariableDeclaration","scope":7770,"src":"2115:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7758,"name":"address","nodeType":"ElementaryTypeName","src":"2115:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7761,"mutability":"mutable","name":"timestamp","nameLocation":"2147:9:17","nodeType":"VariableDeclaration","scope":7770,"src":"2139:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7760,"name":"uint256","nodeType":"ElementaryTypeName","src":"2139:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2106:56:17"},"returnParameters":{"id":7769,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7764,"mutability":"mutable","name":"availableBalance","nameLocation":"2222:16:17","nodeType":"VariableDeclaration","scope":7770,"src":"2215:23:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7763,"name":"int256","nodeType":"ElementaryTypeName","src":"2215:6:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":7766,"mutability":"mutable","name":"deposit","nameLocation":"2260:7:17","nodeType":"VariableDeclaration","scope":7770,"src":"2252:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7765,"name":"uint256","nodeType":"ElementaryTypeName","src":"2252:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7768,"mutability":"mutable","name":"owedDeposit","nameLocation":"2289:11:17","nodeType":"VariableDeclaration","scope":7770,"src":"2281:19:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7767,"name":"uint256","nodeType":"ElementaryTypeName","src":"2281:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2201:100:17"},"scope":8014,"src":"2080:222:17","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7771,"nodeType":"StructuredDocumentation","src":"2308:339:17","text":" @notice Calculate the realtime balance given the current host.getNow() value\n @dev realtimeBalanceOf with timestamp equals to block timestamp\n @param account for the query\n @return availableBalance Real-time balance\n @return deposit Account deposit\n @return owedDeposit Account owed Deposit"},"functionSelector":"2ec8eec7","id":7784,"implemented":false,"kind":"function","modifiers":[],"name":"realtimeBalanceOfNow","nameLocation":"2661:20:17","nodeType":"FunctionDefinition","parameters":{"id":7774,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7773,"mutability":"mutable","name":"account","nameLocation":"2698:7:17","nodeType":"VariableDeclaration","scope":7784,"src":"2690:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7772,"name":"address","nodeType":"ElementaryTypeName","src":"2690:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2681:30:17"},"returnParameters":{"id":7783,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7776,"mutability":"mutable","name":"availableBalance","nameLocation":"2771:16:17","nodeType":"VariableDeclaration","scope":7784,"src":"2764:23:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7775,"name":"int256","nodeType":"ElementaryTypeName","src":"2764:6:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":7778,"mutability":"mutable","name":"deposit","nameLocation":"2809:7:17","nodeType":"VariableDeclaration","scope":7784,"src":"2801:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7777,"name":"uint256","nodeType":"ElementaryTypeName","src":"2801:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7780,"mutability":"mutable","name":"owedDeposit","nameLocation":"2838:11:17","nodeType":"VariableDeclaration","scope":7784,"src":"2830:19:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7779,"name":"uint256","nodeType":"ElementaryTypeName","src":"2830:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7782,"mutability":"mutable","name":"timestamp","nameLocation":"2871:9:17","nodeType":"VariableDeclaration","scope":7784,"src":"2863:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7781,"name":"uint256","nodeType":"ElementaryTypeName","src":"2863:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2750:131:17"},"scope":8014,"src":"2652:230:17","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7785,"nodeType":"StructuredDocumentation","src":"2888:309:17","text":" @notice Check if account is critical\n @dev A critical account is when availableBalance < 0\n @param account The account to check\n @param timestamp The time we'd like to check if the account is critical (should use future)\n @return isCritical Whether the account is critical"},"functionSelector":"d9d078d6","id":7794,"implemented":false,"kind":"function","modifiers":[],"name":"isAccountCritical","nameLocation":"3211:17:17","nodeType":"FunctionDefinition","parameters":{"id":7790,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7787,"mutability":"mutable","name":"account","nameLocation":"3246:7:17","nodeType":"VariableDeclaration","scope":7794,"src":"3238:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7786,"name":"address","nodeType":"ElementaryTypeName","src":"3238:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7789,"mutability":"mutable","name":"timestamp","nameLocation":"3271:9:17","nodeType":"VariableDeclaration","scope":7794,"src":"3263:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7788,"name":"uint256","nodeType":"ElementaryTypeName","src":"3263:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3228:58:17"},"returnParameters":{"id":7793,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7792,"mutability":"mutable","name":"isCritical","nameLocation":"3330:10:17","nodeType":"VariableDeclaration","scope":7794,"src":"3325:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7791,"name":"bool","nodeType":"ElementaryTypeName","src":"3325:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3324:17:17"},"scope":8014,"src":"3202:140:17","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7795,"nodeType":"StructuredDocumentation","src":"3348:239:17","text":" @notice Check if account is critical now (current host.getNow())\n @dev A critical account is when availableBalance < 0\n @param account The account to check\n @return isCritical Whether the account is critical"},"functionSelector":"79359f6f","id":7802,"implemented":false,"kind":"function","modifiers":[],"name":"isAccountCriticalNow","nameLocation":"3601:20:17","nodeType":"FunctionDefinition","parameters":{"id":7798,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7797,"mutability":"mutable","name":"account","nameLocation":"3639:7:17","nodeType":"VariableDeclaration","scope":7802,"src":"3631:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7796,"name":"address","nodeType":"ElementaryTypeName","src":"3631:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3621:31:17"},"returnParameters":{"id":7801,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7800,"mutability":"mutable","name":"isCritical","nameLocation":"3696:10:17","nodeType":"VariableDeclaration","scope":7802,"src":"3691:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7799,"name":"bool","nodeType":"ElementaryTypeName","src":"3691:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3690:17:17"},"scope":8014,"src":"3592:116:17","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7803,"nodeType":"StructuredDocumentation","src":"3714:383:17","text":" @notice Check if account is solvent\n @dev An account is insolvent when the sum of deposits for a token can't cover the negative availableBalance\n @param account The account to check\n @param timestamp The time we'd like to check if the account is solvent (should use future)\n @return isSolvent True if the account is solvent, false otherwise"},"functionSelector":"b84cdd4a","id":7812,"implemented":false,"kind":"function","modifiers":[],"name":"isAccountSolvent","nameLocation":"4111:16:17","nodeType":"FunctionDefinition","parameters":{"id":7808,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7805,"mutability":"mutable","name":"account","nameLocation":"4145:7:17","nodeType":"VariableDeclaration","scope":7812,"src":"4137:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7804,"name":"address","nodeType":"ElementaryTypeName","src":"4137:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7807,"mutability":"mutable","name":"timestamp","nameLocation":"4170:9:17","nodeType":"VariableDeclaration","scope":7812,"src":"4162:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7806,"name":"uint256","nodeType":"ElementaryTypeName","src":"4162:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4127:58:17"},"returnParameters":{"id":7811,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7810,"mutability":"mutable","name":"isSolvent","nameLocation":"4229:9:17","nodeType":"VariableDeclaration","scope":7812,"src":"4224:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7809,"name":"bool","nodeType":"ElementaryTypeName","src":"4224:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4223:16:17"},"scope":8014,"src":"4102:138:17","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7813,"nodeType":"StructuredDocumentation","src":"4246:289:17","text":" @notice Check if account is solvent now\n @dev An account is insolvent when the sum of deposits for a token can't cover the negative availableBalance\n @param account The account to check\n @return isSolvent True if the account is solvent, false otherwise"},"functionSelector":"bb0d196e","id":7820,"implemented":false,"kind":"function","modifiers":[],"name":"isAccountSolventNow","nameLocation":"4549:19:17","nodeType":"FunctionDefinition","parameters":{"id":7816,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7815,"mutability":"mutable","name":"account","nameLocation":"4586:7:17","nodeType":"VariableDeclaration","scope":7820,"src":"4578:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7814,"name":"address","nodeType":"ElementaryTypeName","src":"4578:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4568:31:17"},"returnParameters":{"id":7819,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7818,"mutability":"mutable","name":"isSolvent","nameLocation":"4643:9:17","nodeType":"VariableDeclaration","scope":7820,"src":"4638:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7817,"name":"bool","nodeType":"ElementaryTypeName","src":"4638:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4637:16:17"},"scope":8014,"src":"4540:114:17","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7821,"nodeType":"StructuredDocumentation","src":"4660:277:17","text":" @notice Get a list of agreements that is active for the account\n @dev An active agreement is one that has state for the account\n @param account Account to query\n @return activeAgreements List of accounts that have non-zero states for the account"},"functionSelector":"386fa221","id":7830,"implemented":false,"kind":"function","modifiers":[],"name":"getAccountActiveAgreements","nameLocation":"4951:26:17","nodeType":"FunctionDefinition","parameters":{"id":7824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7823,"mutability":"mutable","name":"account","nameLocation":"4986:7:17","nodeType":"VariableDeclaration","scope":7830,"src":"4978:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7822,"name":"address","nodeType":"ElementaryTypeName","src":"4978:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4977:17:17"},"returnParameters":{"id":7829,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7828,"mutability":"mutable","name":"activeAgreements","nameLocation":"5056:16:17","nodeType":"VariableDeclaration","scope":7830,"src":"5031:41:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_ISuperAgreement_$6395_$dyn_memory_ptr","typeString":"contract ISuperAgreement[]"},"typeName":{"baseType":{"id":7826,"nodeType":"UserDefinedTypeName","pathNode":{"id":7825,"name":"ISuperAgreement","nameLocations":["5031:15:17"],"nodeType":"IdentifierPath","referencedDeclaration":6395,"src":"5031:15:17"},"referencedDeclaration":6395,"src":"5031:15:17","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperAgreement_$6395","typeString":"contract ISuperAgreement"}},"id":7827,"nodeType":"ArrayTypeName","src":"5031:17:17","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_ISuperAgreement_$6395_$dyn_storage_ptr","typeString":"contract ISuperAgreement[]"}},"visibility":"internal"}],"src":"5030:43:17"},"scope":8014,"src":"4942:132:17","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7831,"nodeType":"StructuredDocumentation","src":"5280:110:17","text":" @dev Create a new agreement\n @param id Agreement ID\n @param data Agreement data"},"functionSelector":"12a6a3f8","id":7839,"implemented":false,"kind":"function","modifiers":[],"name":"createAgreement","nameLocation":"5404:15:17","nodeType":"FunctionDefinition","parameters":{"id":7837,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7833,"mutability":"mutable","name":"id","nameLocation":"5437:2:17","nodeType":"VariableDeclaration","scope":7839,"src":"5429:10:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7832,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5429:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":7836,"mutability":"mutable","name":"data","nameLocation":"5468:4:17","nodeType":"VariableDeclaration","scope":7839,"src":"5449:23:17","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":7834,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5449:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7835,"nodeType":"ArrayTypeName","src":"5449:9:17","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"5419:59:17"},"returnParameters":{"id":7838,"nodeType":"ParameterList","parameters":[],"src":"5495:0:17"},"scope":8014,"src":"5395:101:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":7840,"nodeType":"StructuredDocumentation","src":"5501:174:17","text":" @dev Agreement created event\n @param agreementClass Contract address of the agreement\n @param id Agreement ID\n @param data Agreement data"},"eventSelector":"770ea40a13a4644573ed785e5c7116890709947918747febc5add46feb531e2d","id":7849,"name":"AgreementCreated","nameLocation":"5686:16:17","nodeType":"EventDefinition","parameters":{"id":7848,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7842,"indexed":true,"mutability":"mutable","name":"agreementClass","nameLocation":"5728:14:17","nodeType":"VariableDeclaration","scope":7849,"src":"5712:30:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7841,"name":"address","nodeType":"ElementaryTypeName","src":"5712:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7844,"indexed":false,"mutability":"mutable","name":"id","nameLocation":"5760:2:17","nodeType":"VariableDeclaration","scope":7849,"src":"5752:10:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7843,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5752:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":7847,"indexed":false,"mutability":"mutable","name":"data","nameLocation":"5782:4:17","nodeType":"VariableDeclaration","scope":7849,"src":"5772:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":7845,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5772:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7846,"nodeType":"ArrayTypeName","src":"5772:9:17","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"5702:90:17"},"src":"5680:113:17"},{"documentation":{"id":7850,"nodeType":"StructuredDocumentation","src":"5799:184:17","text":" @dev Get data of the agreement\n @param agreementClass Contract address of the agreement\n @param id Agreement ID\n @return data Data of the agreement"},"functionSelector":"6c2d9f2f","id":7862,"implemented":false,"kind":"function","modifiers":[],"name":"getAgreementData","nameLocation":"5997:16:17","nodeType":"FunctionDefinition","parameters":{"id":7857,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7852,"mutability":"mutable","name":"agreementClass","nameLocation":"6031:14:17","nodeType":"VariableDeclaration","scope":7862,"src":"6023:22:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7851,"name":"address","nodeType":"ElementaryTypeName","src":"6023:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7854,"mutability":"mutable","name":"id","nameLocation":"6063:2:17","nodeType":"VariableDeclaration","scope":7862,"src":"6055:10:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7853,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6055:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":7856,"mutability":"mutable","name":"dataLength","nameLocation":"6080:10:17","nodeType":"VariableDeclaration","scope":7862,"src":"6075:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7855,"name":"uint","nodeType":"ElementaryTypeName","src":"6075:4:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6013:83:17"},"returnParameters":{"id":7861,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7860,"mutability":"mutable","name":"data","nameLocation":"6152:4:17","nodeType":"VariableDeclaration","scope":7862,"src":"6135:21:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":7858,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6135:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7859,"nodeType":"ArrayTypeName","src":"6135:9:17","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"6134:23:17"},"scope":8014,"src":"5988:170:17","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7863,"nodeType":"StructuredDocumentation","src":"6164:110:17","text":" @dev Create a new agreement\n @param id Agreement ID\n @param data Agreement data"},"functionSelector":"a1b2bf8b","id":7871,"implemented":false,"kind":"function","modifiers":[],"name":"updateAgreementData","nameLocation":"6288:19:17","nodeType":"FunctionDefinition","parameters":{"id":7869,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7865,"mutability":"mutable","name":"id","nameLocation":"6325:2:17","nodeType":"VariableDeclaration","scope":7871,"src":"6317:10:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7864,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6317:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":7868,"mutability":"mutable","name":"data","nameLocation":"6356:4:17","nodeType":"VariableDeclaration","scope":7871,"src":"6337:23:17","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":7866,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6337:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7867,"nodeType":"ArrayTypeName","src":"6337:9:17","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"6307:59:17"},"returnParameters":{"id":7870,"nodeType":"ParameterList","parameters":[],"src":"6383:0:17"},"scope":8014,"src":"6279:105:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":7872,"nodeType":"StructuredDocumentation","src":"6389:174:17","text":" @dev Agreement updated event\n @param agreementClass Contract address of the agreement\n @param id Agreement ID\n @param data Agreement data"},"eventSelector":"0c4c547b3a4fcaa5be8353b3111472b124155bccc86de811d4a481c9e6e9faca","id":7881,"name":"AgreementUpdated","nameLocation":"6574:16:17","nodeType":"EventDefinition","parameters":{"id":7880,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7874,"indexed":true,"mutability":"mutable","name":"agreementClass","nameLocation":"6616:14:17","nodeType":"VariableDeclaration","scope":7881,"src":"6600:30:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7873,"name":"address","nodeType":"ElementaryTypeName","src":"6600:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7876,"indexed":false,"mutability":"mutable","name":"id","nameLocation":"6648:2:17","nodeType":"VariableDeclaration","scope":7881,"src":"6640:10:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7875,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6640:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":7879,"indexed":false,"mutability":"mutable","name":"data","nameLocation":"6670:4:17","nodeType":"VariableDeclaration","scope":7881,"src":"6660:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":7877,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6660:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7878,"nodeType":"ArrayTypeName","src":"6660:9:17","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"6590:90:17"},"src":"6568:113:17"},{"documentation":{"id":7882,"nodeType":"StructuredDocumentation","src":"6687:73:17","text":" @dev Close the agreement\n @param id Agreement ID"},"functionSelector":"27048397","id":7889,"implemented":false,"kind":"function","modifiers":[],"name":"terminateAgreement","nameLocation":"6774:18:17","nodeType":"FunctionDefinition","parameters":{"id":7887,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7884,"mutability":"mutable","name":"id","nameLocation":"6810:2:17","nodeType":"VariableDeclaration","scope":7889,"src":"6802:10:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7883,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6802:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":7886,"mutability":"mutable","name":"dataLength","nameLocation":"6827:10:17","nodeType":"VariableDeclaration","scope":7889,"src":"6822:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7885,"name":"uint","nodeType":"ElementaryTypeName","src":"6822:4:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6792:51:17"},"returnParameters":{"id":7888,"nodeType":"ParameterList","parameters":[],"src":"6860:0:17"},"scope":8014,"src":"6765:96:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":7890,"nodeType":"StructuredDocumentation","src":"6866:143:17","text":" @dev Agreement terminated event\n @param agreementClass Contract address of the agreement\n @param id Agreement ID"},"eventSelector":"71a63dc095de07aa5512ad57a7596a39516317e316981a1cd71000057be1537b","id":7896,"name":"AgreementTerminated","nameLocation":"7020:19:17","nodeType":"EventDefinition","parameters":{"id":7895,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7892,"indexed":true,"mutability":"mutable","name":"agreementClass","nameLocation":"7065:14:17","nodeType":"VariableDeclaration","scope":7896,"src":"7049:30:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7891,"name":"address","nodeType":"ElementaryTypeName","src":"7049:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7894,"indexed":false,"mutability":"mutable","name":"id","nameLocation":"7097:2:17","nodeType":"VariableDeclaration","scope":7896,"src":"7089:10:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7893,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7089:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7039:66:17"},"src":"7014:92:17"},{"documentation":{"id":7897,"nodeType":"StructuredDocumentation","src":"7112:199:17","text":" @dev Update agreement state slot\n @param account Account to be updated\n @custom:note \n - To clear the storage out, provide zero-ed array of intended length"},"functionSelector":"090c415e","id":7907,"implemented":false,"kind":"function","modifiers":[],"name":"updateAgreementStateSlot","nameLocation":"7325:24:17","nodeType":"FunctionDefinition","parameters":{"id":7905,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7899,"mutability":"mutable","name":"account","nameLocation":"7367:7:17","nodeType":"VariableDeclaration","scope":7907,"src":"7359:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7898,"name":"address","nodeType":"ElementaryTypeName","src":"7359:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7901,"mutability":"mutable","name":"slotId","nameLocation":"7392:6:17","nodeType":"VariableDeclaration","scope":7907,"src":"7384:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7900,"name":"uint256","nodeType":"ElementaryTypeName","src":"7384:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7904,"mutability":"mutable","name":"slotData","nameLocation":"7427:8:17","nodeType":"VariableDeclaration","scope":7907,"src":"7408:27:17","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":7902,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7408:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7903,"nodeType":"ArrayTypeName","src":"7408:9:17","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"7349:92:17"},"returnParameters":{"id":7906,"nodeType":"ParameterList","parameters":[],"src":"7458:0:17"},"scope":8014,"src":"7316:143:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":7908,"nodeType":"StructuredDocumentation","src":"7464:214:17","text":" @dev Agreement account state updated event\n @param agreementClass Contract address of the agreement\n @param account Account updated\n @param slotId slot id of the agreement state"},"eventSelector":"30f416fa68fca014a0f334464c64b000ba53e99b6d2afdea9d5ca756372d5985","id":7916,"name":"AgreementStateUpdated","nameLocation":"7689:21:17","nodeType":"EventDefinition","parameters":{"id":7915,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7910,"indexed":true,"mutability":"mutable","name":"agreementClass","nameLocation":"7736:14:17","nodeType":"VariableDeclaration","scope":7916,"src":"7720:30:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7909,"name":"address","nodeType":"ElementaryTypeName","src":"7720:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7912,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"7776:7:17","nodeType":"VariableDeclaration","scope":7916,"src":"7760:23:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7911,"name":"address","nodeType":"ElementaryTypeName","src":"7760:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7914,"indexed":false,"mutability":"mutable","name":"slotId","nameLocation":"7801:6:17","nodeType":"VariableDeclaration","scope":7916,"src":"7793:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7913,"name":"uint256","nodeType":"ElementaryTypeName","src":"7793:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7710:103:17"},"src":"7683:131:17"},{"documentation":{"id":7917,"nodeType":"StructuredDocumentation","src":"7820:267:17","text":" @dev Get data of the slot of the state of an agreement\n @param agreementClass Contract address of the agreement\n @param account Account to query\n @param slotId slot id of the state\n @param dataLength length of the state data"},"functionSelector":"4b61cc33","id":7931,"implemented":false,"kind":"function","modifiers":[],"name":"getAgreementStateSlot","nameLocation":"8101:21:17","nodeType":"FunctionDefinition","parameters":{"id":7926,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7919,"mutability":"mutable","name":"agreementClass","nameLocation":"8140:14:17","nodeType":"VariableDeclaration","scope":7931,"src":"8132:22:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7918,"name":"address","nodeType":"ElementaryTypeName","src":"8132:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7921,"mutability":"mutable","name":"account","nameLocation":"8172:7:17","nodeType":"VariableDeclaration","scope":7931,"src":"8164:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7920,"name":"address","nodeType":"ElementaryTypeName","src":"8164:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7923,"mutability":"mutable","name":"slotId","nameLocation":"8197:6:17","nodeType":"VariableDeclaration","scope":7931,"src":"8189:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7922,"name":"uint256","nodeType":"ElementaryTypeName","src":"8189:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7925,"mutability":"mutable","name":"dataLength","nameLocation":"8218:10:17","nodeType":"VariableDeclaration","scope":7931,"src":"8213:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7924,"name":"uint","nodeType":"ElementaryTypeName","src":"8213:4:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8122:112:17"},"returnParameters":{"id":7930,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7929,"mutability":"mutable","name":"slotData","nameLocation":"8291:8:17","nodeType":"VariableDeclaration","scope":7931,"src":"8274:25:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":7927,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8274:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7928,"nodeType":"ArrayTypeName","src":"8274:9:17","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"8273:27:17"},"scope":8014,"src":"8092:209:17","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7932,"nodeType":"StructuredDocumentation","src":"8307:320:17","text":" @notice Settle balance from an account by the agreement\n @dev The agreement needs to make sure that the balance delta is balanced afterwards\n @param account Account to query.\n @param delta Amount of balance delta to be settled\n @custom:modifiers \n - onlyAgreement"},"functionSelector":"cf97256d","id":7939,"implemented":false,"kind":"function","modifiers":[],"name":"settleBalance","nameLocation":"8641:13:17","nodeType":"FunctionDefinition","parameters":{"id":7937,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7934,"mutability":"mutable","name":"account","nameLocation":"8672:7:17","nodeType":"VariableDeclaration","scope":7939,"src":"8664:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7933,"name":"address","nodeType":"ElementaryTypeName","src":"8664:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7936,"mutability":"mutable","name":"delta","nameLocation":"8696:5:17","nodeType":"VariableDeclaration","scope":7939,"src":"8689:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7935,"name":"int256","nodeType":"ElementaryTypeName","src":"8689:6:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"8654:53:17"},"returnParameters":{"id":7938,"nodeType":"ParameterList","parameters":[],"src":"8724:0:17"},"scope":8014,"src":"8632:93:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7940,"nodeType":"StructuredDocumentation","src":"8731:1154:17","text":" @dev Make liquidation payouts (v2)\n @param id Agreement ID\n @param liquidationTypeData Data regarding the version of the liquidation schema and the type\n @param liquidatorAccount Address of the executor of the liquidation\n @param useDefaultRewardAccount Whether or not the default reward account receives the rewardAmount\n @param targetAccount Account to be liquidated\n @param rewardAmount The amount the rewarded account will receive\n @param targetAccountBalanceDelta The delta amount the target account balance should change by\n @custom:note \n - If a bailout is required (bailoutAmount > 0)\n - the actual reward (single deposit) goes to the executor,\n - while the reward account becomes the bailout account\n - total bailout include: bailout amount + reward amount\n - the targetAccount will be bailed out\n - If a bailout is not required\n - the targetAccount will pay the rewardAmount\n - the liquidator (reward account in PIC period) will receive the rewardAmount\n @custom:modifiers \n - onlyAgreement"},"functionSelector":"1863e809","id":7957,"implemented":false,"kind":"function","modifiers":[],"name":"makeLiquidationPayoutsV2","nameLocation":"9899:24:17","nodeType":"FunctionDefinition","parameters":{"id":7955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7942,"mutability":"mutable","name":"id","nameLocation":"9946:2:17","nodeType":"VariableDeclaration","scope":7957,"src":"9938:10:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7941,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9938:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":7944,"mutability":"mutable","name":"liquidationTypeData","nameLocation":"9971:19:17","nodeType":"VariableDeclaration","scope":7957,"src":"9958:32:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7943,"name":"bytes","nodeType":"ElementaryTypeName","src":"9958:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":7946,"mutability":"mutable","name":"liquidatorAccount","nameLocation":"10008:17:17","nodeType":"VariableDeclaration","scope":7957,"src":"10000:25:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7945,"name":"address","nodeType":"ElementaryTypeName","src":"10000:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7948,"mutability":"mutable","name":"useDefaultRewardAccount","nameLocation":"10040:23:17","nodeType":"VariableDeclaration","scope":7957,"src":"10035:28:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7947,"name":"bool","nodeType":"ElementaryTypeName","src":"10035:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":7950,"mutability":"mutable","name":"targetAccount","nameLocation":"10081:13:17","nodeType":"VariableDeclaration","scope":7957,"src":"10073:21:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7949,"name":"address","nodeType":"ElementaryTypeName","src":"10073:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7952,"mutability":"mutable","name":"rewardAmount","nameLocation":"10112:12:17","nodeType":"VariableDeclaration","scope":7957,"src":"10104:20:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7951,"name":"uint256","nodeType":"ElementaryTypeName","src":"10104:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7954,"mutability":"mutable","name":"targetAccountBalanceDelta","nameLocation":"10141:25:17","nodeType":"VariableDeclaration","scope":7957,"src":"10134:32:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7953,"name":"int256","nodeType":"ElementaryTypeName","src":"10134:6:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"9928:244:17"},"returnParameters":{"id":7956,"nodeType":"ParameterList","parameters":[],"src":"10181:0:17"},"scope":8014,"src":"9890:292:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":7958,"nodeType":"StructuredDocumentation","src":"10187:1512:17","text":" @dev Agreement liquidation event v2 (including agent account)\n @param agreementClass Contract address of the agreement\n @param id Agreement ID\n @param liquidatorAccount Address of the executor of the liquidation\n @param targetAccount Account of the stream sender\n @param rewardAmountReceiver Account that collects the reward or bails out insolvent accounts\n @param rewardAmount The amount the reward recipient account balance should change by\n @param targetAccountBalanceDelta The amount the sender account balance should change by\n @param liquidationTypeData The encoded liquidation type data including the version (how to decode)\n @custom:note \n Reward account rule:\n - if the agreement is liquidated during the PIC period\n - the rewardAmountReceiver will get the rewardAmount (remaining deposit), regardless of the liquidatorAccount\n - the targetAccount will pay for the rewardAmount\n - if the agreement is liquidated after the PIC period AND the targetAccount is solvent\n - the rewardAmountReceiver will get the rewardAmount (remaining deposit)\n - the targetAccount will pay for the rewardAmount\n - if the targetAccount is insolvent\n - the liquidatorAccount will get the rewardAmount (single deposit)\n - the default reward account (governance) will pay for both the rewardAmount and bailoutAmount\n - the targetAccount will receive the bailoutAmount"},"eventSelector":"b8381a3ce157650e06186e3e8f4dd4dc29236f2688b6eed1893d0a60d7c6386f","id":7976,"name":"AgreementLiquidatedV2","nameLocation":"11710:21:17","nodeType":"EventDefinition","parameters":{"id":7975,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7960,"indexed":true,"mutability":"mutable","name":"agreementClass","nameLocation":"11757:14:17","nodeType":"VariableDeclaration","scope":7976,"src":"11741:30:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7959,"name":"address","nodeType":"ElementaryTypeName","src":"11741:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7962,"indexed":false,"mutability":"mutable","name":"id","nameLocation":"11789:2:17","nodeType":"VariableDeclaration","scope":7976,"src":"11781:10:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7961,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11781:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":7964,"indexed":true,"mutability":"mutable","name":"liquidatorAccount","nameLocation":"11817:17:17","nodeType":"VariableDeclaration","scope":7976,"src":"11801:33:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7963,"name":"address","nodeType":"ElementaryTypeName","src":"11801:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7966,"indexed":true,"mutability":"mutable","name":"targetAccount","nameLocation":"11860:13:17","nodeType":"VariableDeclaration","scope":7976,"src":"11844:29:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7965,"name":"address","nodeType":"ElementaryTypeName","src":"11844:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7968,"indexed":false,"mutability":"mutable","name":"rewardAmountReceiver","nameLocation":"11891:20:17","nodeType":"VariableDeclaration","scope":7976,"src":"11883:28:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7967,"name":"address","nodeType":"ElementaryTypeName","src":"11883:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7970,"indexed":false,"mutability":"mutable","name":"rewardAmount","nameLocation":"11929:12:17","nodeType":"VariableDeclaration","scope":7976,"src":"11921:20:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7969,"name":"uint256","nodeType":"ElementaryTypeName","src":"11921:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7972,"indexed":false,"mutability":"mutable","name":"targetAccountBalanceDelta","nameLocation":"11958:25:17","nodeType":"VariableDeclaration","scope":7976,"src":"11951:32:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7971,"name":"int256","nodeType":"ElementaryTypeName","src":"11951:6:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":7974,"indexed":false,"mutability":"mutable","name":"liquidationTypeData","nameLocation":"11999:19:17","nodeType":"VariableDeclaration","scope":7976,"src":"11993:25:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7973,"name":"bytes","nodeType":"ElementaryTypeName","src":"11993:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"11731:293:17"},"src":"11704:321:17"},{"anonymous":false,"documentation":{"id":7977,"nodeType":"StructuredDocumentation","src":"12837:435:17","text":" @dev Agreement liquidation event (DEPRECATED BY AgreementLiquidatedBy)\n @param agreementClass Contract address of the agreement\n @param id Agreement ID\n @param penaltyAccount Account of the agreement to be penalized\n @param rewardAccount Account that collect the reward\n @param rewardAmount Amount of liquidation reward\n @custom:deprecated Use AgreementLiquidatedV2 instead"},"eventSelector":"8505c3d8f1f184f032cf0bc4cd80ee61c8b9d94f8907c3281bf0101a2610fe80","id":7989,"name":"AgreementLiquidated","nameLocation":"13283:19:17","nodeType":"EventDefinition","parameters":{"id":7988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7979,"indexed":true,"mutability":"mutable","name":"agreementClass","nameLocation":"13328:14:17","nodeType":"VariableDeclaration","scope":7989,"src":"13312:30:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7978,"name":"address","nodeType":"ElementaryTypeName","src":"13312:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7981,"indexed":false,"mutability":"mutable","name":"id","nameLocation":"13360:2:17","nodeType":"VariableDeclaration","scope":7989,"src":"13352:10:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7980,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13352:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":7983,"indexed":true,"mutability":"mutable","name":"penaltyAccount","nameLocation":"13388:14:17","nodeType":"VariableDeclaration","scope":7989,"src":"13372:30:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7982,"name":"address","nodeType":"ElementaryTypeName","src":"13372:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7985,"indexed":true,"mutability":"mutable","name":"rewardAccount","nameLocation":"13428:13:17","nodeType":"VariableDeclaration","scope":7989,"src":"13412:29:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7984,"name":"address","nodeType":"ElementaryTypeName","src":"13412:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7987,"indexed":false,"mutability":"mutable","name":"rewardAmount","nameLocation":"13459:12:17","nodeType":"VariableDeclaration","scope":7989,"src":"13451:20:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7986,"name":"uint256","nodeType":"ElementaryTypeName","src":"13451:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13302:175:17"},"src":"13277:201:17"},{"anonymous":false,"documentation":{"id":7990,"nodeType":"StructuredDocumentation","src":"13484:276:17","text":" @dev System bailout occurred (DEPRECATED BY AgreementLiquidatedBy)\n @param bailoutAccount Account that bailout the penalty account\n @param bailoutAmount Amount of account bailout\n @custom:deprecated Use AgreementLiquidatedV2 instead"},"eventSelector":"d6c9a04afc81e8c614310bbee6c9e84f5abe15b82038bf8347014ce0852e6ffd","id":7996,"name":"Bailout","nameLocation":"13771:7:17","nodeType":"EventDefinition","parameters":{"id":7995,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7992,"indexed":true,"mutability":"mutable","name":"bailoutAccount","nameLocation":"13804:14:17","nodeType":"VariableDeclaration","scope":7996,"src":"13788:30:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7991,"name":"address","nodeType":"ElementaryTypeName","src":"13788:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7994,"indexed":false,"mutability":"mutable","name":"bailoutAmount","nameLocation":"13836:13:17","nodeType":"VariableDeclaration","scope":7996,"src":"13828:21:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7993,"name":"uint256","nodeType":"ElementaryTypeName","src":"13828:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13778:77:17"},"src":"13765:91:17"},{"anonymous":false,"documentation":{"id":7997,"nodeType":"StructuredDocumentation","src":"13862:1082:17","text":" @dev Agreement liquidation event (DEPRECATED BY AgreementLiquidatedV2)\n @param liquidatorAccount Account of the agent that performed the liquidation.\n @param agreementClass Contract address of the agreement\n @param id Agreement ID\n @param penaltyAccount Account of the agreement to be penalized\n @param bondAccount Account that collect the reward or bailout accounts\n @param rewardAmount Amount of liquidation reward\n @param bailoutAmount Amount of liquidation bailouot\n @custom:deprecated Use AgreementLiquidatedV2 instead\n @custom:note \n Reward account rule:\n - if bailout is equal to 0, then\n - the bondAccount will get the rewardAmount,\n - the penaltyAccount will pay for the rewardAmount.\n - if bailout is larger than 0, then\n - the liquidatorAccount will get the rewardAmouont,\n - the bondAccount will pay for both the rewardAmount and bailoutAmount,\n - the penaltyAccount will pay for the rewardAmount while get the bailoutAmount."},"eventSelector":"5f22b60e58b1d6de858bc27c48d5a4653e052da99e083c1d88bb8c58e1abc8ef","id":8013,"name":"AgreementLiquidatedBy","nameLocation":"14955:21:17","nodeType":"EventDefinition","parameters":{"id":8012,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7999,"indexed":false,"mutability":"mutable","name":"liquidatorAccount","nameLocation":"14994:17:17","nodeType":"VariableDeclaration","scope":8013,"src":"14986:25:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7998,"name":"address","nodeType":"ElementaryTypeName","src":"14986:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8001,"indexed":true,"mutability":"mutable","name":"agreementClass","nameLocation":"15037:14:17","nodeType":"VariableDeclaration","scope":8013,"src":"15021:30:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8000,"name":"address","nodeType":"ElementaryTypeName","src":"15021:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8003,"indexed":false,"mutability":"mutable","name":"id","nameLocation":"15069:2:17","nodeType":"VariableDeclaration","scope":8013,"src":"15061:10:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8002,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15061:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":8005,"indexed":true,"mutability":"mutable","name":"penaltyAccount","nameLocation":"15097:14:17","nodeType":"VariableDeclaration","scope":8013,"src":"15081:30:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8004,"name":"address","nodeType":"ElementaryTypeName","src":"15081:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8007,"indexed":true,"mutability":"mutable","name":"bondAccount","nameLocation":"15137:11:17","nodeType":"VariableDeclaration","scope":8013,"src":"15121:27:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8006,"name":"address","nodeType":"ElementaryTypeName","src":"15121:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8009,"indexed":false,"mutability":"mutable","name":"rewardAmount","nameLocation":"15166:12:17","nodeType":"VariableDeclaration","scope":8013,"src":"15158:20:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8008,"name":"uint256","nodeType":"ElementaryTypeName","src":"15158:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8011,"indexed":false,"mutability":"mutable","name":"bailoutAmount","nameLocation":"15196:13:17","nodeType":"VariableDeclaration","scope":8013,"src":"15188:21:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8010,"name":"uint256","nodeType":"ElementaryTypeName","src":"15188:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14976:239:17"},"src":"14949:267:17"}],"scope":8015,"src":"187:15031:17","usedErrors":[7735,7737,7739,7741,7743,7745]}],"src":"35:15184:17"},"id":17},"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo.sol":{"ast":{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo.sol","exportedSymbols":{"ERC20WithTokenInfo":[8026],"IERC20":[77],"TokenInfo":[8048]},"id":8027,"license":"AGPLv3","nodeType":"SourceUnit","nodes":[{"id":8016,"literals":["solidity",">=","0.8",".4"],"nodeType":"PragmaDirective","src":"35:25:18"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":8018,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8027,"sourceUnit":78,"src":"62:72:18","symbolAliases":[{"foreign":{"id":8017,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77,"src":"71:6:18","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.sol","file":"./TokenInfo.sol","id":8020,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8027,"sourceUnit":8049,"src":"135:44:18","symbolAliases":[{"foreign":{"id":8019,"name":"TokenInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8048,"src":"144:9:18","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":8022,"name":"IERC20","nameLocations":["530:6:18"],"nodeType":"IdentifierPath","referencedDeclaration":77,"src":"530:6:18"},"id":8023,"nodeType":"InheritanceSpecifier","src":"530:6:18"},{"baseName":{"id":8024,"name":"TokenInfo","nameLocations":["538:9:18"],"nodeType":"IdentifierPath","referencedDeclaration":8048,"src":"538:9:18"},"id":8025,"nodeType":"InheritanceSpecifier","src":"538:9:18"}],"canonicalName":"ERC20WithTokenInfo","contractDependencies":[],"contractKind":"contract","documentation":{"id":8021,"nodeType":"StructuredDocumentation","src":"181:263:18","text":" @title ERC20 token with token info interface\n @author Superfluid\n @dev Using abstract contract instead of interfaces because old solidity\n does not support interface inheriting other interfaces\n solhint-disable-next-line no-empty-blocks"},"fullyImplemented":false,"id":8026,"linearizedBaseContracts":[8026,8048,77],"name":"ERC20WithTokenInfo","nameLocation":"508:18:18","nodeType":"ContractDefinition","nodes":[],"scope":8027,"src":"490:60:18","usedErrors":[]}],"src":"35:516:18"},"id":18},"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.sol":{"ast":{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.sol","exportedSymbols":{"TokenInfo":[8048]},"id":8049,"license":"AGPLv3","nodeType":"SourceUnit","nodes":[{"id":8028,"literals":["solidity",">=","0.8",".4"],"nodeType":"PragmaDirective","src":"35:25:19"},{"abstract":false,"baseContracts":[],"canonicalName":"TokenInfo","contractDependencies":[],"contractKind":"interface","documentation":{"id":8029,"nodeType":"StructuredDocumentation","src":"62:188:19","text":" @title ERC20 token info interface\n @author Superfluid\n @dev ERC20 standard interface does not specify these functions, but\n often the token implementations have them."},"fullyImplemented":false,"id":8048,"linearizedBaseContracts":[8048],"name":"TokenInfo","nameLocation":"261:9:19","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":8030,"nodeType":"StructuredDocumentation","src":"277:54:19","text":" @dev Returns the name of the token."},"functionSelector":"06fdde03","id":8035,"implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"345:4:19","nodeType":"FunctionDefinition","parameters":{"id":8031,"nodeType":"ParameterList","parameters":[],"src":"349:2:19"},"returnParameters":{"id":8034,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8033,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8035,"src":"375:13:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8032,"name":"string","nodeType":"ElementaryTypeName","src":"375:6:19","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"374:15:19"},"scope":8048,"src":"336:54:19","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":8036,"nodeType":"StructuredDocumentation","src":"396:102:19","text":" @dev Returns the symbol of the token, usually a shorter version of the\n name."},"functionSelector":"95d89b41","id":8041,"implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"512:6:19","nodeType":"FunctionDefinition","parameters":{"id":8037,"nodeType":"ParameterList","parameters":[],"src":"518:2:19"},"returnParameters":{"id":8040,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8039,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8041,"src":"544:13:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8038,"name":"string","nodeType":"ElementaryTypeName","src":"544:6:19","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"543:15:19"},"scope":8048,"src":"503:56:19","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":8042,"nodeType":"StructuredDocumentation","src":"565:612:19","text":" @dev Returns the number of decimals used to get its user representation.\n For example, if `decimals` equals `2`, a balance of `505` tokens should\n be displayed to a user as `5,05` (`505 / 10 ** 2`).\n Tokens usually opt for a value of 18, imitating the relationship between\n Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is\n called.\n NOTE: This information is only used for _display_ purposes: it in\n no way affects any of the arithmetic of the contract, including\n {IERC20-balanceOf} and {IERC20-transfer}."},"functionSelector":"313ce567","id":8047,"implemented":false,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"1191:8:19","nodeType":"FunctionDefinition","parameters":{"id":8043,"nodeType":"ParameterList","parameters":[],"src":"1199:2:19"},"returnParameters":{"id":8046,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8045,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8047,"src":"1225:5:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":8044,"name":"uint8","nodeType":"ElementaryTypeName","src":"1225:5:19","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"1224:7:19"},"scope":8048,"src":"1182:50:19","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":8049,"src":"251:983:19","usedErrors":[]}],"src":"35:1200:19"},"id":19},"contracts/archives/OldFlow.sol":{"ast":{"absolutePath":"contracts/archives/OldFlow.sol","exportedSymbols":{"ArrayLengthNotMatch":[11575],"IAutomate":[15534],"IOpsProxyFactory":[15572],"ISuperToken":[6947],"ITaskTreasuryUpgradable":[15562],"LibAutomate":[11560],"LibControl":[12557],"LibSession":[14179],"Module":[15488],"ModuleData":[15496],"OldFlow":[8070],"OldLibFlow":[9055],"SessionNotStarted":[13587],"SuperTokenV1Library":[5077],"TooEarly":[8067],"UserFlowNotStopped":[8069]},"id":8071,"license":"BUSL-1.1","nodeType":"SourceUnit","nodes":[{"id":8050,"literals":["solidity","^","0.8",".9"],"nodeType":"PragmaDirective","src":"37:23:20"},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol","file":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol","id":8052,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8071,"sourceUnit":7600,"src":"62:115:20","symbolAliases":[{"foreign":{"id":8051,"name":"ISuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6947,"src":"70:11:20","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol","file":"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol","id":8054,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8071,"sourceUnit":5078,"src":"178:114:20","symbolAliases":[{"foreign":{"id":8053,"name":"SuperTokenV1Library","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5077,"src":"186:19:20","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/libraries/core/LibAutomate.sol","file":"../libraries/core/LibAutomate.sol","id":8056,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8071,"sourceUnit":11561,"src":"294:62:20","symbolAliases":[{"foreign":{"id":8055,"name":"LibAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11560,"src":"302:11:20","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/libraries/core/LibControl.sol","file":"../libraries/core/LibControl.sol","id":8059,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8071,"sourceUnit":12558,"src":"357:81:20","symbolAliases":[{"foreign":{"id":8057,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"365:10:20","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":8058,"name":"ArrayLengthNotMatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11575,"src":"377:19:20","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/libraries/core/LibSession.sol","file":"../libraries/core/LibSession.sol","id":8062,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8071,"sourceUnit":14180,"src":"439:79:20","symbolAliases":[{"foreign":{"id":8060,"name":"LibSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14179,"src":"447:10:20","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":8061,"name":"SessionNotStarted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13587,"src":"459:17:20","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/archives/OldLibFlow.sol","file":"./OldLibFlow.sol","id":8064,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8071,"sourceUnit":9056,"src":"519:44:20","symbolAliases":[{"foreign":{"id":8063,"name":"OldLibFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9055,"src":"527:10:20","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/services/gelato/Types.sol","file":"../services/gelato/Types.sol","id":8065,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8071,"sourceUnit":15573,"src":"565:38:20","symbolAliases":[],"unitAlias":""},{"errorSelector":"085de625","id":8067,"name":"TooEarly","nameLocation":"611:8:20","nodeType":"ErrorDefinition","parameters":{"id":8066,"nodeType":"ParameterList","parameters":[],"src":"619:2:20"},"src":"605:17:20"},{"errorSelector":"58942936","id":8069,"name":"UserFlowNotStopped","nameLocation":"629:18:20","nodeType":"ErrorDefinition","parameters":{"id":8068,"nodeType":"ParameterList","parameters":[],"src":"647:2:20"},"src":"623:27:20"},{"abstract":false,"baseContracts":[],"canonicalName":"OldFlow","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":8070,"linearizedBaseContracts":[8070],"name":"OldFlow","nameLocation":"661:7:20","nodeType":"ContractDefinition","nodes":[],"scope":8071,"src":"652:12043:20","usedErrors":[]}],"src":"37:13170:20"},"id":20},"contracts/archives/OldLibFlow.sol":{"ast":{"absolutePath":"contracts/archives/OldLibFlow.sol","exportedSymbols":{"ContractError":[11591],"ISuperToken":[6947],"InsufficientFunds":[8083],"InsufficientLifespan1":[8085],"InsufficientLifespan2":[8087],"InsufficientLifespan3":[8089],"InvalidBalance1":[8093],"InvalidBalance2":[8095],"LibControl":[12557],"LibSession":[14179],"OldLibFlow":[9055],"OnlySingleFlowAllowed":[8091],"SuperTokenV1Library":[5077]},"id":9056,"license":"BUSL-1.1","nodeType":"SourceUnit","nodes":[{"id":8072,"literals":["solidity","^","0.8",".9"],"nodeType":"PragmaDirective","src":"36:23:21"},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol","file":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol","id":8074,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9056,"sourceUnit":7600,"src":"61:115:21","symbolAliases":[{"foreign":{"id":8073,"name":"ISuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6947,"src":"69:11:21","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol","file":"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol","id":8076,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9056,"sourceUnit":5078,"src":"177:114:21","symbolAliases":[{"foreign":{"id":8075,"name":"SuperTokenV1Library","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5077,"src":"185:19:21","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/libraries/core/LibControl.sol","file":"../libraries/core/LibControl.sol","id":8079,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9056,"sourceUnit":12558,"src":"293:75:21","symbolAliases":[{"foreign":{"id":8077,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"301:10:21","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":8078,"name":"ContractError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11591,"src":"313:13:21","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/libraries/core/LibSession.sol","file":"../libraries/core/LibSession.sol","id":8081,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9056,"sourceUnit":14180,"src":"369:60:21","symbolAliases":[{"foreign":{"id":8080,"name":"LibSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14179,"src":"377:10:21","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"errorSelector":"356680b7","id":8083,"name":"InsufficientFunds","nameLocation":"437:17:21","nodeType":"ErrorDefinition","parameters":{"id":8082,"nodeType":"ParameterList","parameters":[],"src":"454:2:21"},"src":"431:26:21"},{"errorSelector":"cdd3529e","id":8085,"name":"InsufficientLifespan1","nameLocation":"464:21:21","nodeType":"ErrorDefinition","parameters":{"id":8084,"nodeType":"ParameterList","parameters":[],"src":"485:2:21"},"src":"458:30:21"},{"errorSelector":"6c451f0c","id":8087,"name":"InsufficientLifespan2","nameLocation":"495:21:21","nodeType":"ErrorDefinition","parameters":{"id":8086,"nodeType":"ParameterList","parameters":[],"src":"516:2:21"},"src":"489:30:21"},{"errorSelector":"3661e75b","id":8089,"name":"InsufficientLifespan3","nameLocation":"526:21:21","nodeType":"ErrorDefinition","parameters":{"id":8088,"nodeType":"ParameterList","parameters":[],"src":"547:2:21"},"src":"520:30:21"},{"errorSelector":"01266b00","id":8091,"name":"OnlySingleFlowAllowed","nameLocation":"557:21:21","nodeType":"ErrorDefinition","parameters":{"id":8090,"nodeType":"ParameterList","parameters":[],"src":"578:2:21"},"src":"551:30:21"},{"errorSelector":"0a2005fa","id":8093,"name":"InvalidBalance1","nameLocation":"588:15:21","nodeType":"ErrorDefinition","parameters":{"id":8092,"nodeType":"ParameterList","parameters":[],"src":"603:2:21"},"src":"582:24:21"},{"errorSelector":"2fe0888f","id":8095,"name":"InvalidBalance2","nameLocation":"613:15:21","nodeType":"ErrorDefinition","parameters":{"id":8094,"nodeType":"ParameterList","parameters":[],"src":"628:2:21"},"src":"607:24:21"},{"abstract":false,"baseContracts":[],"canonicalName":"OldLibFlow","contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":9055,"linearizedBaseContracts":[9055],"name":"OldLibFlow","nameLocation":"641:10:21","nodeType":"ContractDefinition","nodes":[{"global":false,"id":8099,"libraryName":{"id":8096,"name":"SuperTokenV1Library","nameLocations":["664:19:21"],"nodeType":"IdentifierPath","referencedDeclaration":5077,"src":"664:19:21"},"nodeType":"UsingForDirective","src":"658:42:21","typeName":{"id":8098,"nodeType":"UserDefinedTypeName","pathNode":{"id":8097,"name":"ISuperToken","nameLocations":["688:11:21"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"688:11:21"},"referencedDeclaration":6947,"src":"688:11:21","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}},{"constant":true,"id":8104,"mutability":"constant","name":"STORAGE_POSITION_FLOW","nameLocation":"723:21:21","nodeType":"VariableDeclaration","scope":9055,"src":"706:61:21","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8100,"name":"bytes32","nodeType":"ElementaryTypeName","src":"706:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"64732e666c6f77","id":8102,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"757:9:21","typeDescriptions":{"typeIdentifier":"t_stringliteral_2da2adfb54fd91bfb31e0d805792077ddcd5b0427b14a56397e2f3cc190c8830","typeString":"literal_string \"ds.flow\""},"value":"ds.flow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_2da2adfb54fd91bfb31e0d805792077ddcd5b0427b14a56397e2f3cc190c8830","typeString":"literal_string \"ds.flow\""}],"id":8101,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"747:9:21","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":8103,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"747:20:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"canonicalName":"OldLibFlow.FlowRecord","id":8117,"members":[{"constant":false,"id":8106,"mutability":"mutable","name":"controlNonce","nameLocation":"810:12:21","nodeType":"VariableDeclaration","scope":8117,"src":"802:20:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8105,"name":"uint256","nodeType":"ElementaryTypeName","src":"802:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8108,"mutability":"mutable","name":"receiver","nameLocation":"866:8:21","nodeType":"VariableDeclaration","scope":8117,"src":"858:16:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8107,"name":"address","nodeType":"ElementaryTypeName","src":"858:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8110,"mutability":"mutable","name":"sessionNonce","nameLocation":"892:12:21","nodeType":"VariableDeclaration","scope":8117,"src":"884:20:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8109,"name":"uint256","nodeType":"ElementaryTypeName","src":"884:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8112,"mutability":"mutable","name":"timestampIncrease","nameLocation":"922:17:21","nodeType":"VariableDeclaration","scope":8117,"src":"914:25:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8111,"name":"uint256","nodeType":"ElementaryTypeName","src":"914:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8114,"mutability":"mutable","name":"timestampDecrease","nameLocation":"1008:17:21","nodeType":"VariableDeclaration","scope":8117,"src":"1000:25:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8113,"name":"uint256","nodeType":"ElementaryTypeName","src":"1000:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8116,"mutability":"mutable","name":"taskId","nameLocation":"1106:6:21","nodeType":"VariableDeclaration","scope":8117,"src":"1098:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8115,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1098:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"FlowRecord","nameLocation":"781:10:21","nodeType":"StructDefinition","scope":9055,"src":"774:421:21","visibility":"public"},{"canonicalName":"OldLibFlow.StorageFlow","id":8143,"members":[{"constant":false,"id":8123,"mutability":"mutable","name":"flowNonce","nameLocation":"1451:9:21","nodeType":"VariableDeclaration","scope":8143,"src":"1403:57:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":8122,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":8118,"name":"address","nodeType":"ElementaryTypeName","src":"1411:7:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1403:47:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":8121,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":8119,"name":"address","nodeType":"ElementaryTypeName","src":"1430:7:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1422:27:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":8120,"name":"uint256","nodeType":"ElementaryTypeName","src":"1441:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"internal"},{"constant":false,"id":8132,"mutability":"mutable","name":"flowRecord","nameLocation":"1586:10:21","nodeType":"VariableDeclaration","scope":8143,"src":"1515:81:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$8117_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct OldLibFlow.FlowRecord)))"},"typeName":{"id":8131,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":8124,"name":"address","nodeType":"ElementaryTypeName","src":"1523:7:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1515:70:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$8117_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct OldLibFlow.FlowRecord)))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":8130,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":8125,"name":"address","nodeType":"ElementaryTypeName","src":"1542:7:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1534:50:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$8117_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct OldLibFlow.FlowRecord))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":8129,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":8126,"name":"uint256","nodeType":"ElementaryTypeName","src":"1561:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1553:30:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$8117_storage_$","typeString":"mapping(uint256 => struct OldLibFlow.FlowRecord)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":8128,"nodeType":"UserDefinedTypeName","pathNode":{"id":8127,"name":"FlowRecord","nameLocations":["1572:10:21"],"nodeType":"IdentifierPath","referencedDeclaration":8117,"src":"1572:10:21"},"referencedDeclaration":8117,"src":"1572:10:21","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$8117_storage_ptr","typeString":"struct OldLibFlow.FlowRecord"}}}}},"visibility":"internal"},{"constant":false,"id":8138,"mutability":"mutable","name":"deposits","nameLocation":"1716:8:21","nodeType":"VariableDeclaration","scope":8143,"src":"1668:56:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":8137,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":8133,"name":"address","nodeType":"ElementaryTypeName","src":"1676:7:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1668:47:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":8136,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":8134,"name":"address","nodeType":"ElementaryTypeName","src":"1695:7:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1687:27:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":8135,"name":"uint256","nodeType":"ElementaryTypeName","src":"1706:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"internal"},{"constant":false,"id":8142,"mutability":"mutable","name":"totalDeposits","nameLocation":"1806:13:21","nodeType":"VariableDeclaration","scope":8143,"src":"1778:41:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":8141,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":8139,"name":"address","nodeType":"ElementaryTypeName","src":"1786:7:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1778:27:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":8140,"name":"uint256","nodeType":"ElementaryTypeName","src":"1797:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"}],"name":"StorageFlow","nameLocation":"1208:11:21","nodeType":"StructDefinition","scope":9055,"src":"1201:656:21","visibility":"public"},{"body":{"id":8154,"nodeType":"Block","src":"1933:117:21","statements":[{"assignments":[8150],"declarations":[{"constant":false,"id":8150,"mutability":"mutable","name":"position","nameLocation":"1951:8:21","nodeType":"VariableDeclaration","scope":8154,"src":"1943:16:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8149,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1943:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":8152,"initialValue":{"id":8151,"name":"STORAGE_POSITION_FLOW","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8104,"src":"1962:21:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"1943:40:21"},{"AST":{"nodeType":"YulBlock","src":"2002:42:21","statements":[{"nodeType":"YulAssignment","src":"2016:18:21","value":{"name":"position","nodeType":"YulIdentifier","src":"2026:8:21"},"variableNames":[{"name":"s.slot","nodeType":"YulIdentifier","src":"2016:6:21"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":8150,"isOffset":false,"isSlot":false,"src":"2026:8:21","valueSize":1},{"declaration":8147,"isOffset":false,"isSlot":true,"src":"2016:6:21","suffix":"slot","valueSize":1}],"id":8153,"nodeType":"InlineAssembly","src":"1993:51:21"}]},"id":8155,"implemented":true,"kind":"function","modifiers":[],"name":"_storageFlow","nameLocation":"1872:12:21","nodeType":"FunctionDefinition","parameters":{"id":8144,"nodeType":"ParameterList","parameters":[],"src":"1884:2:21"},"returnParameters":{"id":8148,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8147,"mutability":"mutable","name":"s","nameLocation":"1930:1:21","nodeType":"VariableDeclaration","scope":8155,"src":"1910:21:21","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$8143_storage_ptr","typeString":"struct OldLibFlow.StorageFlow"},"typeName":{"id":8146,"nodeType":"UserDefinedTypeName","pathNode":{"id":8145,"name":"StorageFlow","nameLocations":["1910:11:21"],"nodeType":"IdentifierPath","referencedDeclaration":8143,"src":"1910:11:21"},"referencedDeclaration":8143,"src":"1910:11:21","typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$8143_storage_ptr","typeString":"struct OldLibFlow.StorageFlow"}},"visibility":"internal"}],"src":"1909:23:21"},"scope":9055,"src":"1863:187:21","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8194,"nodeType":"Block","src":"2215:268:21","statements":[{"expression":{"arguments":[{"expression":{"id":8166,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2276:3:21","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2280:6:21","memberName":"sender","nodeType":"MemberAccess","src":"2276:10:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":8170,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2308:4:21","typeDescriptions":{"typeIdentifier":"t_contract$_OldLibFlow_$9055","typeString":"library OldLibFlow"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_OldLibFlow_$9055","typeString":"library OldLibFlow"}],"id":8169,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2300:7:21","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8168,"name":"address","nodeType":"ElementaryTypeName","src":"2300:7:21","typeDescriptions":{}}},"id":8171,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2300:13:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8172,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8159,"src":"2327:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":8163,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8157,"src":"2237:11:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8162,"name":"ISuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6947,"src":"2225:11:21","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISuperToken_$6947_$","typeString":"type(contract ISuperToken)"}},"id":8164,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2225:24:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"id":8165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2250:12:21","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":6663,"src":"2225:37:21","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":8173,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2225:119:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8174,"nodeType":"ExpressionStatement","src":"2225:119:21"},{"expression":{"id":8184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8175,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8155,"src":"2355:12:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$8143_storage_ptr_$","typeString":"function () pure returns (struct OldLibFlow.StorageFlow storage pointer)"}},"id":8176,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2355:14:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$8143_storage_ptr","typeString":"struct OldLibFlow.StorageFlow storage pointer"}},"id":8177,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2370:8:21","memberName":"deposits","nodeType":"MemberAccess","referencedDeclaration":8138,"src":"2355:23:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":8180,"indexExpression":{"expression":{"id":8178,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2379:3:21","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2383:6:21","memberName":"sender","nodeType":"MemberAccess","src":"2379:10:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2355:35:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8182,"indexExpression":{"id":8181,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8157,"src":"2391:11:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2355:48:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":8183,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8159,"src":"2407:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2355:59:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8185,"nodeType":"ExpressionStatement","src":"2355:59:21"},{"expression":{"id":8192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8186,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8155,"src":"2424:12:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$8143_storage_ptr_$","typeString":"function () pure returns (struct OldLibFlow.StorageFlow storage pointer)"}},"id":8187,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2424:14:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$8143_storage_ptr","typeString":"struct OldLibFlow.StorageFlow storage pointer"}},"id":8188,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2439:13:21","memberName":"totalDeposits","nodeType":"MemberAccess","referencedDeclaration":8142,"src":"2424:28:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8190,"indexExpression":{"id":8189,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8157,"src":"2453:11:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2424:41:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":8191,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8159,"src":"2469:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2424:52:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8193,"nodeType":"ExpressionStatement","src":"2424:52:21"}]},"id":8195,"implemented":true,"kind":"function","modifiers":[],"name":"_depositSuperToken","nameLocation":"2149:18:21","nodeType":"FunctionDefinition","parameters":{"id":8160,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8157,"mutability":"mutable","name":"_superToken","nameLocation":"2176:11:21","nodeType":"VariableDeclaration","scope":8195,"src":"2168:19:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8156,"name":"address","nodeType":"ElementaryTypeName","src":"2168:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8159,"mutability":"mutable","name":"_amount","nameLocation":"2197:7:21","nodeType":"VariableDeclaration","scope":8195,"src":"2189:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8158,"name":"uint256","nodeType":"ElementaryTypeName","src":"2189:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2167:38:21"},"returnParameters":{"id":8161,"nodeType":"ParameterList","parameters":[],"src":"2215:0:21"},"scope":9055,"src":"2140:343:21","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":8258,"nodeType":"Block","src":"2587:597:21","statements":[{"expression":{"arguments":[{"expression":{"id":8203,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2702:3:21","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8204,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2706:6:21","memberName":"sender","nodeType":"MemberAccess","src":"2702:10:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8205,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8197,"src":"2714:11:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":8202,"name":"_setRemainingBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8331,"src":"2681:20:21","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":8206,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2681:45:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8207,"nodeType":"ExpressionStatement","src":"2681:45:21"},{"assignments":[8209],"declarations":[{"constant":false,"id":8209,"mutability":"mutable","name":"amountRemaining","nameLocation":"2759:15:21","nodeType":"VariableDeclaration","scope":8258,"src":"2751:23:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8208,"name":"uint256","nodeType":"ElementaryTypeName","src":"2751:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8218,"initialValue":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8210,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8155,"src":"2777:12:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$8143_storage_ptr_$","typeString":"function () pure returns (struct OldLibFlow.StorageFlow storage pointer)"}},"id":8211,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2777:14:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$8143_storage_ptr","typeString":"struct OldLibFlow.StorageFlow storage pointer"}},"id":8212,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2792:8:21","memberName":"deposits","nodeType":"MemberAccess","referencedDeclaration":8138,"src":"2777:23:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":8215,"indexExpression":{"expression":{"id":8213,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2801:3:21","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8214,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2805:6:21","memberName":"sender","nodeType":"MemberAccess","src":"2801:10:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2777:35:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8217,"indexExpression":{"id":8216,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8197,"src":"2826:11:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2777:70:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2751:96:21"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8219,"name":"amountRemaining","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8209,"src":"2862:15:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":8220,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8199,"src":"2880:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2862:25:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8225,"nodeType":"IfStatement","src":"2858:57:21","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8222,"name":"InsufficientFunds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8083,"src":"2896:17:21","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":8223,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2896:19:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8224,"nodeType":"RevertStatement","src":"2889:26:21"}},{"expression":{"id":8235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8226,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8155,"src":"2926:12:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$8143_storage_ptr_$","typeString":"function () pure returns (struct OldLibFlow.StorageFlow storage pointer)"}},"id":8227,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2926:14:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$8143_storage_ptr","typeString":"struct OldLibFlow.StorageFlow storage pointer"}},"id":8228,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2941:8:21","memberName":"deposits","nodeType":"MemberAccess","referencedDeclaration":8138,"src":"2926:23:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":8231,"indexExpression":{"expression":{"id":8229,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2950:3:21","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2954:6:21","memberName":"sender","nodeType":"MemberAccess","src":"2950:10:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2926:35:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8233,"indexExpression":{"id":8232,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8197,"src":"2962:11:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2926:48:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":8234,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8199,"src":"2978:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2926:59:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8236,"nodeType":"ExpressionStatement","src":"2926:59:21"},{"expression":{"id":8243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8237,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8155,"src":"2995:12:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$8143_storage_ptr_$","typeString":"function () pure returns (struct OldLibFlow.StorageFlow storage pointer)"}},"id":8238,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2995:14:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$8143_storage_ptr","typeString":"struct OldLibFlow.StorageFlow storage pointer"}},"id":8239,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3010:13:21","memberName":"totalDeposits","nodeType":"MemberAccess","referencedDeclaration":8142,"src":"2995:28:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8241,"indexExpression":{"id":8240,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8197,"src":"3024:11:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2995:41:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":8242,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8199,"src":"3040:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2995:52:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8244,"nodeType":"ExpressionStatement","src":"2995:52:21"},{"expression":{"arguments":[{"arguments":[{"id":8251,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3117:4:21","typeDescriptions":{"typeIdentifier":"t_contract$_OldLibFlow_$9055","typeString":"library OldLibFlow"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_OldLibFlow_$9055","typeString":"library OldLibFlow"}],"id":8250,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3109:7:21","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8249,"name":"address","nodeType":"ElementaryTypeName","src":"3109:7:21","typeDescriptions":{}}},"id":8252,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3109:13:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":8253,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3136:3:21","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3140:6:21","memberName":"sender","nodeType":"MemberAccess","src":"3136:10:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8255,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8199,"src":"3160:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":8246,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8197,"src":"3070:11:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8245,"name":"ISuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6947,"src":"3058:11:21","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISuperToken_$6947_$","typeString":"type(contract ISuperToken)"}},"id":8247,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3058:24:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"id":8248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3083:12:21","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":6663,"src":"3058:37:21","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":8256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3058:119:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8257,"nodeType":"ExpressionStatement","src":"3058:119:21"}]},"id":8259,"implemented":true,"kind":"function","modifiers":[],"name":"_withdrawSuperToken","nameLocation":"2498:19:21","nodeType":"FunctionDefinition","parameters":{"id":8200,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8197,"mutability":"mutable","name":"_superToken","nameLocation":"2535:11:21","nodeType":"VariableDeclaration","scope":8259,"src":"2527:19:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8196,"name":"address","nodeType":"ElementaryTypeName","src":"2527:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8199,"mutability":"mutable","name":"_amount","nameLocation":"2564:7:21","nodeType":"VariableDeclaration","scope":8259,"src":"2556:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8198,"name":"uint256","nodeType":"ElementaryTypeName","src":"2556:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2517:60:21"},"returnParameters":{"id":8201,"nodeType":"ParameterList","parameters":[],"src":"2587:0:21"},"scope":9055,"src":"2489:695:21","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":8273,"nodeType":"Block","src":"3295:104:21","statements":[{"condition":{"arguments":[{"expression":{"id":8265,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3324:3:21","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3328:6:21","memberName":"sender","nodeType":"MemberAccess","src":"3324:10:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8267,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8261,"src":"3336:11:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":8264,"name":"_hasActiveFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8762,"src":"3309:14:21","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":8268,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3309:39:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8272,"nodeType":"IfStatement","src":"3305:87:21","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8269,"name":"OnlySingleFlowAllowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8091,"src":"3369:21:21","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":8270,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3369:23:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8271,"nodeType":"RevertStatement","src":"3362:30:21"}}]},"id":8274,"implemented":true,"kind":"function","modifiers":[],"name":"_requireSingleFlow","nameLocation":"3241:18:21","nodeType":"FunctionDefinition","parameters":{"id":8262,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8261,"mutability":"mutable","name":"_superToken","nameLocation":"3268:11:21","nodeType":"VariableDeclaration","scope":8274,"src":"3260:19:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8260,"name":"address","nodeType":"ElementaryTypeName","src":"3260:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3259:21:21"},"returnParameters":{"id":8263,"nodeType":"ParameterList","parameters":[],"src":"3295:0:21"},"scope":9055,"src":"3232:167:21","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":8330,"nodeType":"Block","src":"3522:458:21","statements":[{"assignments":[8282],"declarations":[{"constant":false,"id":8282,"mutability":"mutable","name":"amountFlowed","nameLocation":"3540:12:21","nodeType":"VariableDeclaration","scope":8330,"src":"3532:20:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8281,"name":"uint256","nodeType":"ElementaryTypeName","src":"3532:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8287,"initialValue":{"arguments":[{"id":8284,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8276,"src":"3572:5:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8285,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8278,"src":"3579:11:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":8283,"name":"_getAmountFlowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8578,"src":"3555:16:21","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":8286,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3555:36:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3532:59:21"},{"expression":{"id":8296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8288,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8155,"src":"3602:12:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$8143_storage_ptr_$","typeString":"function () pure returns (struct OldLibFlow.StorageFlow storage pointer)"}},"id":8289,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3602:14:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$8143_storage_ptr","typeString":"struct OldLibFlow.StorageFlow storage pointer"}},"id":8290,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3617:8:21","memberName":"deposits","nodeType":"MemberAccess","referencedDeclaration":8138,"src":"3602:23:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":8292,"indexExpression":{"id":8291,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8276,"src":"3626:5:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3602:30:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8294,"indexExpression":{"id":8293,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8278,"src":"3633:11:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3602:43:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":8295,"name":"amountFlowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8282,"src":"3649:12:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3602:59:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8297,"nodeType":"ExpressionStatement","src":"3602:59:21"},{"expression":{"id":8304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8298,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8155,"src":"3671:12:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$8143_storage_ptr_$","typeString":"function () pure returns (struct OldLibFlow.StorageFlow storage pointer)"}},"id":8299,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3671:14:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$8143_storage_ptr","typeString":"struct OldLibFlow.StorageFlow storage pointer"}},"id":8300,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3686:13:21","memberName":"totalDeposits","nodeType":"MemberAccess","referencedDeclaration":8142,"src":"3671:28:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8302,"indexExpression":{"id":8301,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8278,"src":"3700:11:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3671:41:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":8303,"name":"amountFlowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8282,"src":"3716:12:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3671:57:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8305,"nodeType":"ExpressionStatement","src":"3671:57:21"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8306,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8155,"src":"3743:12:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$8143_storage_ptr_$","typeString":"function () pure returns (struct OldLibFlow.StorageFlow storage pointer)"}},"id":8307,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3743:14:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$8143_storage_ptr","typeString":"struct OldLibFlow.StorageFlow storage pointer"}},"id":8308,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3758:8:21","memberName":"deposits","nodeType":"MemberAccess","referencedDeclaration":8138,"src":"3743:23:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":8310,"indexExpression":{"id":8309,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8276,"src":"3767:5:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3743:30:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8312,"indexExpression":{"id":8311,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8278,"src":"3774:11:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3743:43:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":8313,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3789:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3743:47:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8318,"nodeType":"IfStatement","src":"3739:89:21","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8315,"name":"InvalidBalance1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8093,"src":"3811:15:21","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":8316,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3811:17:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8317,"nodeType":"RevertStatement","src":"3804:24:21"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8319,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8155,"src":"3866:12:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$8143_storage_ptr_$","typeString":"function () pure returns (struct OldLibFlow.StorageFlow storage pointer)"}},"id":8320,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3866:14:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$8143_storage_ptr","typeString":"struct OldLibFlow.StorageFlow storage pointer"}},"id":8321,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3881:13:21","memberName":"totalDeposits","nodeType":"MemberAccess","referencedDeclaration":8142,"src":"3866:28:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8323,"indexExpression":{"id":8322,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8278,"src":"3895:11:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3866:41:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":8324,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3910:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3866:45:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8329,"nodeType":"IfStatement","src":"3862:87:21","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8326,"name":"InvalidBalance2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8095,"src":"3932:15:21","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":8327,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3932:17:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8328,"nodeType":"RevertStatement","src":"3925:24:21"}}]},"id":8331,"implemented":true,"kind":"function","modifiers":[],"name":"_setRemainingBalance","nameLocation":"3456:20:21","nodeType":"FunctionDefinition","parameters":{"id":8279,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8276,"mutability":"mutable","name":"_user","nameLocation":"3485:5:21","nodeType":"VariableDeclaration","scope":8331,"src":"3477:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8275,"name":"address","nodeType":"ElementaryTypeName","src":"3477:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8278,"mutability":"mutable","name":"_superToken","nameLocation":"3500:11:21","nodeType":"VariableDeclaration","scope":8331,"src":"3492:19:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8277,"name":"address","nodeType":"ElementaryTypeName","src":"3492:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3476:36:21"},"returnParameters":{"id":8280,"nodeType":"ParameterList","parameters":[],"src":"3522:0:21"},"scope":9055,"src":"3447:533:21","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":8348,"nodeType":"Block","src":"4140:68:21","statements":[{"expression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8340,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8155,"src":"4157:12:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$8143_storage_ptr_$","typeString":"function () pure returns (struct OldLibFlow.StorageFlow storage pointer)"}},"id":8341,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4157:14:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$8143_storage_ptr","typeString":"struct OldLibFlow.StorageFlow storage pointer"}},"id":8342,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4172:9:21","memberName":"flowNonce","nodeType":"MemberAccess","referencedDeclaration":8123,"src":"4157:24:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":8344,"indexExpression":{"id":8343,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8333,"src":"4182:5:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4157:31:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8346,"indexExpression":{"id":8345,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8335,"src":"4189:11:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4157:44:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8339,"id":8347,"nodeType":"Return","src":"4150:51:21"}]},"id":8349,"implemented":true,"kind":"function","modifiers":[],"name":"_getNewNonce","nameLocation":"4037:12:21","nodeType":"FunctionDefinition","parameters":{"id":8336,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8333,"mutability":"mutable","name":"_user","nameLocation":"4067:5:21","nodeType":"VariableDeclaration","scope":8349,"src":"4059:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8332,"name":"address","nodeType":"ElementaryTypeName","src":"4059:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8335,"mutability":"mutable","name":"_superToken","nameLocation":"4090:11:21","nodeType":"VariableDeclaration","scope":8349,"src":"4082:19:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8334,"name":"address","nodeType":"ElementaryTypeName","src":"4082:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4049:58:21"},"returnParameters":{"id":8339,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8338,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8349,"src":"4131:7:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8337,"name":"uint256","nodeType":"ElementaryTypeName","src":"4131:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4130:9:21"},"scope":9055,"src":"4028:180:21","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":8377,"nodeType":"Block","src":"4330:120:21","statements":[{"assignments":[8359],"declarations":[{"constant":false,"id":8359,"mutability":"mutable","name":"nonce","nameLocation":"4348:5:21","nodeType":"VariableDeclaration","scope":8377,"src":"4340:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8358,"name":"uint256","nodeType":"ElementaryTypeName","src":"4340:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8367,"initialValue":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8360,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8155,"src":"4356:12:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$8143_storage_ptr_$","typeString":"function () pure returns (struct OldLibFlow.StorageFlow storage pointer)"}},"id":8361,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4356:14:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$8143_storage_ptr","typeString":"struct OldLibFlow.StorageFlow storage pointer"}},"id":8362,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4371:9:21","memberName":"flowNonce","nodeType":"MemberAccess","referencedDeclaration":8123,"src":"4356:24:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":8364,"indexExpression":{"id":8363,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8351,"src":"4381:5:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4356:31:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8366,"indexExpression":{"id":8365,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8353,"src":"4388:11:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4356:44:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4340:60:21"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8368,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8359,"src":"4417:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8369,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4426:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4417:10:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8374,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8372,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8359,"src":"4434:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":8373,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4442:1:21","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4434:9:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"4417:26:21","trueExpression":{"hexValue":"30","id":8371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4430:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8357,"id":8376,"nodeType":"Return","src":"4410:33:21"}]},"id":8378,"implemented":true,"kind":"function","modifiers":[],"name":"_getCurrentNonce","nameLocation":"4223:16:21","nodeType":"FunctionDefinition","parameters":{"id":8354,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8351,"mutability":"mutable","name":"_user","nameLocation":"4257:5:21","nodeType":"VariableDeclaration","scope":8378,"src":"4249:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8350,"name":"address","nodeType":"ElementaryTypeName","src":"4249:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8353,"mutability":"mutable","name":"_superToken","nameLocation":"4280:11:21","nodeType":"VariableDeclaration","scope":8378,"src":"4272:19:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8352,"name":"address","nodeType":"ElementaryTypeName","src":"4272:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4239:58:21"},"returnParameters":{"id":8357,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8356,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8378,"src":"4321:7:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8355,"name":"uint256","nodeType":"ElementaryTypeName","src":"4321:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4320:9:21"},"scope":9055,"src":"4214:236:21","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":8441,"nodeType":"Block","src":"4602:532:21","statements":[{"assignments":[8390],"declarations":[{"constant":false,"id":8390,"mutability":"mutable","name":"unsafeLifespan","nameLocation":"4620:14:21","nodeType":"VariableDeclaration","scope":8441,"src":"4612:22:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8389,"name":"uint256","nodeType":"ElementaryTypeName","src":"4612:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8406,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8391,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8155,"src":"4637:12:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$8143_storage_ptr_$","typeString":"function () pure returns (struct OldLibFlow.StorageFlow storage pointer)"}},"id":8392,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4637:14:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$8143_storage_ptr","typeString":"struct OldLibFlow.StorageFlow storage pointer"}},"id":8393,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4652:8:21","memberName":"deposits","nodeType":"MemberAccess","referencedDeclaration":8138,"src":"4637:23:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":8395,"indexExpression":{"id":8394,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8380,"src":"4661:5:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4637:30:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8397,"indexExpression":{"id":8396,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8382,"src":"4668:11:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4637:43:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[{"arguments":[{"id":8402,"name":"_flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8384,"src":"4710:9:21","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int96","typeString":"int96"}],"id":8401,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4703:6:21","typeDescriptions":{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"},"typeName":{"id":8400,"name":"uint96","nodeType":"ElementaryTypeName","src":"4703:6:21","typeDescriptions":{}}},"id":8403,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4703:17:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":8399,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4695:7:21","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":8398,"name":"uint256","nodeType":"ElementaryTypeName","src":"4695:7:21","typeDescriptions":{}}},"id":8404,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4695:26:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4637:84:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4612:109:21"},{"assignments":[8411],"declarations":[{"constant":false,"id":8411,"mutability":"mutable","name":"sControl","nameLocation":"4766:8:21","nodeType":"VariableDeclaration","scope":8441,"src":"4732:42:21","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl"},"typeName":{"id":8410,"nodeType":"UserDefinedTypeName","pathNode":{"id":8409,"name":"LibControl.StorageControl","nameLocations":["4732:10:21","4743:14:21"],"nodeType":"IdentifierPath","referencedDeclaration":11668,"src":"4732:25:21"},"referencedDeclaration":11668,"src":"4732:25:21","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl"}},"visibility":"internal"}],"id":8415,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8412,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"4777:10:21","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$12557_$","typeString":"type(library LibControl)"}},"id":8413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4801:15:21","memberName":"_storageControl","nodeType":"MemberAccess","referencedDeclaration":11680,"src":"4777:39:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$11668_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":8414,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4777:41:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4732:86:21"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8416,"name":"unsafeLifespan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8390,"src":"4833:14:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":8417,"name":"sControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8411,"src":"4850:8:21","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":8418,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4859:18:21","memberName":"minimumEndDuration","nodeType":"MemberAccess","referencedDeclaration":11630,"src":"4850:27:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4833:44:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8423,"nodeType":"IfStatement","src":"4829:92:21","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8420,"name":"InsufficientLifespan1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8085,"src":"4898:21:21","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":8421,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4898:23:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8422,"nodeType":"RevertStatement","src":"4891:30:21"}},{"assignments":[8425],"declarations":[{"constant":false,"id":8425,"mutability":"mutable","name":"safeLifespan","nameLocation":"4940:12:21","nodeType":"VariableDeclaration","scope":8441,"src":"4932:20:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8424,"name":"uint256","nodeType":"ElementaryTypeName","src":"4932:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8430,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8429,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8426,"name":"unsafeLifespan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8390,"src":"4955:14:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":8427,"name":"sControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8411,"src":"4972:8:21","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":8428,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4981:18:21","memberName":"minimumEndDuration","nodeType":"MemberAccess","referencedDeclaration":11630,"src":"4972:27:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4955:44:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4932:67:21"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8431,"name":"safeLifespan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8425,"src":"5014:12:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":8432,"name":"sControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8411,"src":"5029:8:21","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":8433,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5038:15:21","memberName":"minimumLifespan","nodeType":"MemberAccess","referencedDeclaration":11632,"src":"5029:24:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5014:39:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8438,"nodeType":"IfStatement","src":"5010:87:21","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8435,"name":"InsufficientLifespan2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8087,"src":"5074:21:21","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":8436,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5074:23:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8437,"nodeType":"RevertStatement","src":"5067:30:21"}},{"expression":{"id":8439,"name":"safeLifespan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8425,"src":"5115:12:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8388,"id":8440,"nodeType":"Return","src":"5108:19:21"}]},"id":8442,"implemented":true,"kind":"function","modifiers":[],"name":"_getValidSafeLifespan","nameLocation":"4465:21:21","nodeType":"FunctionDefinition","parameters":{"id":8385,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8380,"mutability":"mutable","name":"_user","nameLocation":"4504:5:21","nodeType":"VariableDeclaration","scope":8442,"src":"4496:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8379,"name":"address","nodeType":"ElementaryTypeName","src":"4496:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8382,"mutability":"mutable","name":"_superToken","nameLocation":"4527:11:21","nodeType":"VariableDeclaration","scope":8442,"src":"4519:19:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8381,"name":"address","nodeType":"ElementaryTypeName","src":"4519:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8384,"mutability":"mutable","name":"_flowRate","nameLocation":"4554:9:21","nodeType":"VariableDeclaration","scope":8442,"src":"4548:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":8383,"name":"int96","nodeType":"ElementaryTypeName","src":"4548:5:21","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"4486:83:21"},"returnParameters":{"id":8388,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8387,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8442,"src":"4593:7:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8386,"name":"uint256","nodeType":"ElementaryTypeName","src":"4593:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4592:9:21"},"scope":9055,"src":"4456:678:21","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":8491,"nodeType":"Block","src":"5428:429:21","statements":[{"assignments":[8457],"declarations":[{"constant":false,"id":8457,"mutability":"mutable","name":"safeLifespan","nameLocation":"5446:12:21","nodeType":"VariableDeclaration","scope":8491,"src":"5438:20:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8456,"name":"uint256","nodeType":"ElementaryTypeName","src":"5438:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8463,"initialValue":{"arguments":[{"id":8459,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8445,"src":"5496:5:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8460,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8447,"src":"5515:11:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8461,"name":"_flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8451,"src":"5540:9:21","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_int96","typeString":"int96"}],"id":8458,"name":"_getValidSafeLifespan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8442,"src":"5461:21:21","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_int96_$returns$_t_uint256_$","typeString":"function (address,address,int96) view returns (uint256)"}},"id":8462,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5461:98:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5438:121:21"},{"assignments":[8468],"declarations":[{"constant":false,"id":8468,"mutability":"mutable","name":"sControl","nameLocation":"5604:8:21","nodeType":"VariableDeclaration","scope":8491,"src":"5570:42:21","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl"},"typeName":{"id":8467,"nodeType":"UserDefinedTypeName","pathNode":{"id":8466,"name":"LibControl.StorageControl","nameLocations":["5570:10:21","5581:14:21"],"nodeType":"IdentifierPath","referencedDeclaration":11668,"src":"5570:25:21"},"referencedDeclaration":11668,"src":"5570:25:21","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl"}},"visibility":"internal"}],"id":8472,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8469,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"5615:10:21","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$12557_$","typeString":"type(library LibControl)"}},"id":8470,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5639:15:21","memberName":"_storageControl","nodeType":"MemberAccess","referencedDeclaration":11680,"src":"5615:39:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$11668_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":8471,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5615:41:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"5570:86:21"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8473,"name":"_lifespan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8449,"src":"5670:9:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8478,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":8474,"name":"sControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8468,"src":"5682:8:21","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":8475,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5691:18:21","memberName":"minimumEndDuration","nodeType":"MemberAccess","referencedDeclaration":11630,"src":"5682:27:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"id":8476,"name":"sControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8468,"src":"5712:8:21","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":8477,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5721:15:21","memberName":"minimumLifespan","nodeType":"MemberAccess","referencedDeclaration":11632,"src":"5712:24:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5682:54:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5670:66:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8483,"nodeType":"IfStatement","src":"5666:114:21","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8480,"name":"InsufficientLifespan3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8089,"src":"5757:21:21","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":8481,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5757:23:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8482,"nodeType":"RevertStatement","src":"5750:30:21"}},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8484,"name":"_lifespan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8449,"src":"5798:9:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":8485,"name":"safeLifespan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8457,"src":"5811:12:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5798:25:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":8488,"name":"_lifespan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8449,"src":"5841:9:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"5798:52:21","trueExpression":{"id":8487,"name":"safeLifespan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8457,"src":"5826:12:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8455,"id":8490,"nodeType":"Return","src":"5791:59:21"}]},"documentation":{"id":8443,"nodeType":"StructuredDocumentation","src":"5140:110:21","text":" flowRate --> 1 sec\n maximumFlowAmount --> maximumFlowAmount/flowRate [in sec]"},"id":8492,"implemented":true,"kind":"function","modifiers":[],"name":"_getScheduledLifespan","nameLocation":"5264:21:21","nodeType":"FunctionDefinition","parameters":{"id":8452,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8445,"mutability":"mutable","name":"_user","nameLocation":"5303:5:21","nodeType":"VariableDeclaration","scope":8492,"src":"5295:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8444,"name":"address","nodeType":"ElementaryTypeName","src":"5295:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8447,"mutability":"mutable","name":"_superToken","nameLocation":"5326:11:21","nodeType":"VariableDeclaration","scope":8492,"src":"5318:19:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8446,"name":"address","nodeType":"ElementaryTypeName","src":"5318:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8449,"mutability":"mutable","name":"_lifespan","nameLocation":"5355:9:21","nodeType":"VariableDeclaration","scope":8492,"src":"5347:17:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8448,"name":"uint256","nodeType":"ElementaryTypeName","src":"5347:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8451,"mutability":"mutable","name":"_flowRate","nameLocation":"5380:9:21","nodeType":"VariableDeclaration","scope":8492,"src":"5374:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":8450,"name":"int96","nodeType":"ElementaryTypeName","src":"5374:5:21","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"5285:110:21"},"returnParameters":{"id":8455,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8454,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8492,"src":"5419:7:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8453,"name":"uint256","nodeType":"ElementaryTypeName","src":"5419:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5418:9:21"},"scope":9055,"src":"5255:602:21","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":8577,"nodeType":"Block","src":"5979:855:21","statements":[{"assignments":[8502],"declarations":[{"constant":false,"id":8502,"mutability":"mutable","name":"amountFlowed","nameLocation":"5997:12:21","nodeType":"VariableDeclaration","scope":8577,"src":"5989:20:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8501,"name":"uint256","nodeType":"ElementaryTypeName","src":"5989:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8503,"nodeType":"VariableDeclarationStatement","src":"5989:20:21"},{"assignments":[8505],"declarations":[{"constant":false,"id":8505,"mutability":"mutable","name":"currentNonce","nameLocation":"6027:12:21","nodeType":"VariableDeclaration","scope":8577,"src":"6019:20:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8504,"name":"uint256","nodeType":"ElementaryTypeName","src":"6019:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8510,"initialValue":{"arguments":[{"id":8507,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8494,"src":"6059:5:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8508,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8496,"src":"6066:11:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":8506,"name":"_getCurrentNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8378,"src":"6042:16:21","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":8509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6042:36:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6019:59:21"},{"assignments":[8512,8514,8516,8518,null],"declarations":[{"constant":false,"id":8512,"mutability":"mutable","name":"receiver","nameLocation":"6110:8:21","nodeType":"VariableDeclaration","scope":8577,"src":"6102:16:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8511,"name":"address","nodeType":"ElementaryTypeName","src":"6102:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8514,"mutability":"mutable","name":"sessionNonce","nameLocation":"6140:12:21","nodeType":"VariableDeclaration","scope":8577,"src":"6132:20:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8513,"name":"uint256","nodeType":"ElementaryTypeName","src":"6132:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8516,"mutability":"mutable","name":"timestampIncrease","nameLocation":"6174:17:21","nodeType":"VariableDeclaration","scope":8577,"src":"6166:25:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8515,"name":"uint256","nodeType":"ElementaryTypeName","src":"6166:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8518,"mutability":"mutable","name":"timestampDecrease","nameLocation":"6213:17:21","nodeType":"VariableDeclaration","scope":8577,"src":"6205:25:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8517,"name":"uint256","nodeType":"ElementaryTypeName","src":"6205:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},null],"id":8524,"initialValue":{"arguments":[{"id":8520,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8494,"src":"6258:5:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8521,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8496,"src":"6265:11:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8522,"name":"currentNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8505,"src":"6278:12:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8519,"name":"_getFlowData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8854,"src":"6245:12:21","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes32_$","typeString":"function (address,address,uint256) view returns (address,uint256,uint256,uint256,bytes32)"}},"id":8523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6245:46:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes32_$","typeString":"tuple(address,uint256,uint256,uint256,bytes32)"}},"nodeType":"VariableDeclarationStatement","src":"6088:203:21"},{"assignments":[null,8526,null,8528],"declarations":[null,{"constant":false,"id":8526,"mutability":"mutable","name":"flowRate","nameLocation":"6311:8:21","nodeType":"VariableDeclaration","scope":8577,"src":"6304:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":8525,"name":"uint96","nodeType":"ElementaryTypeName","src":"6304:6:21","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},null,{"constant":false,"id":8528,"mutability":"mutable","name":"timestampStop","nameLocation":"6331:13:21","nodeType":"VariableDeclaration","scope":8577,"src":"6323:21:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8527,"name":"uint256","nodeType":"ElementaryTypeName","src":"6323:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8535,"initialValue":{"arguments":[{"id":8531,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8512,"src":"6388:8:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8532,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8496,"src":"6398:11:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8533,"name":"sessionNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8514,"src":"6411:12:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8529,"name":"LibSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14179,"src":"6348:10:21","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibSession_$14179_$","typeString":"type(library LibSession)"}},"id":8530,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6372:15:21","memberName":"_getSessionData","nodeType":"MemberAccess","referencedDeclaration":14070,"src":"6348:39:21","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_int96_$_t_uint96_$_t_uint256_$_t_uint256_$","typeString":"function (address,address,uint256) view returns (int96,uint96,uint256,uint256)"}},"id":8534,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6348:76:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int96_$_t_uint96_$_t_uint256_$_t_uint256_$","typeString":"tuple(int96,uint96,uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"6301:123:21"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8536,"name":"timestampDecrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8518,"src":"6439:17:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":8537,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6460:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6439:22:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8552,"name":"timestampStop","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8528,"src":"6604:13:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":8553,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6621:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6604:18:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":8572,"nodeType":"Block","src":"6757:41:21","statements":[{"expression":{"id":8570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8568,"name":"amountFlowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8502,"src":"6771:12:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":8569,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6786:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6771:16:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8571,"nodeType":"ExpressionStatement","src":"6771:16:21"}]},"id":8573,"nodeType":"IfStatement","src":"6600:198:21","trueBody":{"id":8567,"nodeType":"Block","src":"6624:127:21","statements":[{"expression":{"id":8565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8555,"name":"amountFlowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8502,"src":"6638:12:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":8558,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8526,"src":"6677:8:21","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":8557,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6669:7:21","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":8556,"name":"uint256","nodeType":"ElementaryTypeName","src":"6669:7:21","typeDescriptions":{}}},"id":8559,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6669:17:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8560,"name":"timestampStop","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8528,"src":"6706:13:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":8561,"name":"timestampIncrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8516,"src":"6722:17:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6706:33:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":8563,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6705:35:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6669:71:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6638:102:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8566,"nodeType":"ExpressionStatement","src":"6638:102:21"}]}},"id":8574,"nodeType":"IfStatement","src":"6435:363:21","trueBody":{"id":8551,"nodeType":"Block","src":"6463:131:21","statements":[{"expression":{"id":8549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8539,"name":"amountFlowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8502,"src":"6477:12:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":8542,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8526,"src":"6516:8:21","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":8541,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6508:7:21","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":8540,"name":"uint256","nodeType":"ElementaryTypeName","src":"6508:7:21","typeDescriptions":{}}},"id":8543,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6508:17:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8544,"name":"timestampDecrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8518,"src":"6545:17:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":8545,"name":"timestampIncrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8516,"src":"6565:17:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6545:37:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":8547,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6544:39:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6508:75:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6477:106:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8550,"nodeType":"ExpressionStatement","src":"6477:106:21"}]}},{"expression":{"id":8575,"name":"amountFlowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8502,"src":"6815:12:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8500,"id":8576,"nodeType":"Return","src":"6808:19:21"}]},"id":8578,"implemented":true,"kind":"function","modifiers":[],"name":"_getAmountFlowed","nameLocation":"5872:16:21","nodeType":"FunctionDefinition","parameters":{"id":8497,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8494,"mutability":"mutable","name":"_user","nameLocation":"5906:5:21","nodeType":"VariableDeclaration","scope":8578,"src":"5898:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8493,"name":"address","nodeType":"ElementaryTypeName","src":"5898:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8496,"mutability":"mutable","name":"_superToken","nameLocation":"5929:11:21","nodeType":"VariableDeclaration","scope":8578,"src":"5921:19:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8495,"name":"address","nodeType":"ElementaryTypeName","src":"5921:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5888:58:21"},"returnParameters":{"id":8500,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8499,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8578,"src":"5970:7:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8498,"name":"uint256","nodeType":"ElementaryTypeName","src":"5970:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5969:9:21"},"scope":9055,"src":"5863:971:21","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":8707,"nodeType":"Block","src":"11006:1781:21","statements":[{"assignments":[8588,8591],"declarations":[{"constant":false,"id":8588,"mutability":"mutable","name":"currentTimestamp","nameLocation":"11373:16:21","nodeType":"VariableDeclaration","scope":8707,"src":"11365:24:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8587,"name":"uint256","nodeType":"ElementaryTypeName","src":"11365:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8591,"mutability":"mutable","name":"superTokens","nameLocation":"11408:11:21","nodeType":"VariableDeclaration","scope":8707,"src":"11391:28:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":8589,"name":"address","nodeType":"ElementaryTypeName","src":"11391:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8590,"nodeType":"ArrayTypeName","src":"11391:9:21","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":8596,"initialValue":{"arguments":[{"id":8594,"name":"_broadcaster","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8582,"src":"11470:12:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":8592,"name":"LibSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14179,"src":"11423:10:21","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibSession_$14179_$","typeString":"type(library LibSession)"}},"id":8593,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11447:22:21","memberName":"_getCurrentSessionData","nodeType":"MemberAccess","referencedDeclaration":14010,"src":"11423:46:21","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (address) view returns (uint256,address[] memory)"}},"id":8595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11423:60:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"tuple(uint256,address[] memory)"}},"nodeType":"VariableDeclarationStatement","src":"11364:119:21"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8604,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8597,"name":"currentTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8588,"src":"11498:16:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8598,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11518:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11498:21:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":8600,"name":"superTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8591,"src":"11523:11:21","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":8601,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11535:6:21","memberName":"length","nodeType":"MemberAccess","src":"11523:18:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"30","id":8602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11545:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11523:23:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11498:48:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8607,"nodeType":"IfStatement","src":"11494:66:21","trueBody":{"expression":{"hexValue":"66616c7365","id":8605,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"11555:5:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":8586,"id":8606,"nodeType":"Return","src":"11548:12:21"}},{"body":{"id":8703,"nodeType":"Block","src":"11620:1139:21","statements":[{"assignments":[8620],"declarations":[{"constant":false,"id":8620,"mutability":"mutable","name":"activeSessionNonce","nameLocation":"11642:18:21","nodeType":"VariableDeclaration","scope":8703,"src":"11634:26:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8619,"name":"uint256","nodeType":"ElementaryTypeName","src":"11634:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8628,"initialValue":{"arguments":[{"id":8623,"name":"_broadcaster","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8582,"src":"11708:12:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":8624,"name":"superTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8591,"src":"11738:11:21","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":8626,"indexExpression":{"id":8625,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8609,"src":"11750:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11738:14:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":8621,"name":"LibSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14179,"src":"11663:10:21","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibSession_$14179_$","typeString":"type(library LibSession)"}},"id":8622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11674:16:21","memberName":"_getCurrentNonce","nodeType":"MemberAccess","referencedDeclaration":13985,"src":"11663:27:21","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":8627,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11663:103:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11634:132:21"},{"assignments":[null,null,8630,8632],"declarations":[null,null,{"constant":false,"id":8630,"mutability":"mutable","name":"timestampStart","nameLocation":"11794:14:21","nodeType":"VariableDeclaration","scope":8703,"src":"11786:22:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8629,"name":"uint256","nodeType":"ElementaryTypeName","src":"11786:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8632,"mutability":"mutable","name":"timestampStop","nameLocation":"11818:13:21","nodeType":"VariableDeclaration","scope":8703,"src":"11810:21:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8631,"name":"uint256","nodeType":"ElementaryTypeName","src":"11810:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8641,"initialValue":{"arguments":[{"id":8635,"name":"_broadcaster","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8582,"src":"11900:12:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":8636,"name":"superTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8591,"src":"11934:11:21","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":8638,"indexExpression":{"id":8637,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8609,"src":"11946:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11934:14:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8639,"name":"activeSessionNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8620,"src":"11970:18:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8633,"name":"LibSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14179,"src":"11835:10:21","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibSession_$14179_$","typeString":"type(library LibSession)"}},"id":8634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11863:15:21","memberName":"_getSessionData","nodeType":"MemberAccess","referencedDeclaration":14070,"src":"11835:43:21","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_int96_$_t_uint96_$_t_uint256_$_t_uint256_$","typeString":"function (address,address,uint256) view returns (int96,uint96,uint256,uint256)"}},"id":8640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11835:171:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int96_$_t_uint96_$_t_uint256_$_t_uint256_$","typeString":"tuple(int96,uint96,uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"11781:225:21"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8644,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8642,"name":"timestampStart","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8630,"src":"12025:14:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":8643,"name":"currentTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8588,"src":"12043:16:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12025:34:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8647,"nodeType":"IfStatement","src":"12021:52:21","trueBody":{"expression":{"hexValue":"66616c7365","id":8645,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12068:5:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":8586,"id":8646,"nodeType":"Return","src":"12061:12:21"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8648,"name":"timestampStop","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8632,"src":"12092:13:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":8649,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12109:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12092:18:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8653,"nodeType":"IfStatement","src":"12088:36:21","trueBody":{"expression":{"hexValue":"66616c7365","id":8651,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12119:5:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":8586,"id":8652,"nodeType":"Return","src":"12112:12:21"}},{"assignments":[8655],"declarations":[{"constant":false,"id":8655,"mutability":"mutable","name":"currentFlowNonce","nameLocation":"12147:16:21","nodeType":"VariableDeclaration","scope":8703,"src":"12139:24:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8654,"name":"uint256","nodeType":"ElementaryTypeName","src":"12139:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8662,"initialValue":{"arguments":[{"id":8657,"name":"_viewer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8580,"src":"12200:7:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":8658,"name":"superTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8591,"src":"12225:11:21","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":8660,"indexExpression":{"id":8659,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8609,"src":"12237:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12225:14:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":8656,"name":"_getCurrentNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8378,"src":"12166:16:21","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":8661,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12166:87:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12139:114:21"},{"assignments":[8664,8666,8668,8670,null],"declarations":[{"constant":false,"id":8664,"mutability":"mutable","name":"receiver","nameLocation":"12294:8:21","nodeType":"VariableDeclaration","scope":8703,"src":"12286:16:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8663,"name":"address","nodeType":"ElementaryTypeName","src":"12286:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8666,"mutability":"mutable","name":"sessionNonce","nameLocation":"12328:12:21","nodeType":"VariableDeclaration","scope":8703,"src":"12320:20:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8665,"name":"uint256","nodeType":"ElementaryTypeName","src":"12320:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8668,"mutability":"mutable","name":"timestampIncrease","nameLocation":"12366:17:21","nodeType":"VariableDeclaration","scope":8703,"src":"12358:25:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8667,"name":"uint256","nodeType":"ElementaryTypeName","src":"12358:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8670,"mutability":"mutable","name":"timestampDecrease","nameLocation":"12409:17:21","nodeType":"VariableDeclaration","scope":8703,"src":"12401:25:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8669,"name":"uint256","nodeType":"ElementaryTypeName","src":"12401:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},null],"id":8678,"initialValue":{"arguments":[{"id":8672,"name":"_viewer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8580,"src":"12458:7:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":8673,"name":"superTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8591,"src":"12467:11:21","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":8675,"indexExpression":{"id":8674,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8609,"src":"12479:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12467:14:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8676,"name":"currentFlowNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8655,"src":"12483:16:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8671,"name":"_getFlowData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8854,"src":"12445:12:21","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes32_$","typeString":"function (address,address,uint256) view returns (address,uint256,uint256,uint256,bytes32)"}},"id":8677,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12445:55:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes32_$","typeString":"tuple(address,uint256,uint256,uint256,bytes32)"}},"nodeType":"VariableDeclarationStatement","src":"12268:232:21"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8679,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8664,"src":"12519:8:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":8680,"name":"_broadcaster","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8582,"src":"12531:12:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12519:24:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8684,"nodeType":"IfStatement","src":"12515:42:21","trueBody":{"expression":{"hexValue":"66616c7365","id":8682,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12552:5:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":8586,"id":8683,"nodeType":"Return","src":"12545:12:21"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8687,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8685,"name":"sessionNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8666,"src":"12576:12:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":8686,"name":"activeSessionNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8620,"src":"12592:18:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12576:34:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8690,"nodeType":"IfStatement","src":"12572:52:21","trueBody":{"expression":{"hexValue":"66616c7365","id":8688,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12619:5:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":8586,"id":8689,"nodeType":"Return","src":"12612:12:21"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8693,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8691,"name":"timestampIncrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8668,"src":"12643:17:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":8692,"name":"currentTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8588,"src":"12663:16:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12643:36:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8696,"nodeType":"IfStatement","src":"12639:54:21","trueBody":{"expression":{"hexValue":"66616c7365","id":8694,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12688:5:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":8586,"id":8695,"nodeType":"Return","src":"12681:12:21"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8697,"name":"timestampDecrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8670,"src":"12712:17:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":8698,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12733:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12712:22:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8702,"nodeType":"IfStatement","src":"12708:40:21","trueBody":{"expression":{"hexValue":"66616c7365","id":8700,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12743:5:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":8586,"id":8701,"nodeType":"Return","src":"12736:12:21"}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8612,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8609,"src":"11591:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":8613,"name":"superTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8591,"src":"11595:11:21","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":8614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11607:6:21","memberName":"length","nodeType":"MemberAccess","src":"11595:18:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11591:22:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8704,"initializationExpression":{"assignments":[8609],"declarations":[{"constant":false,"id":8609,"mutability":"mutable","name":"i","nameLocation":"11584:1:21","nodeType":"VariableDeclaration","scope":8704,"src":"11576:9:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8608,"name":"uint256","nodeType":"ElementaryTypeName","src":"11576:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8611,"initialValue":{"hexValue":"30","id":8610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11588:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"11576:13:21"},"loopExpression":{"expression":{"id":8617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"11615:3:21","subExpression":{"id":8616,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8609,"src":"11615:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8618,"nodeType":"ExpressionStatement","src":"11615:3:21"},"nodeType":"ForStatement","src":"11571:1188:21"},{"expression":{"hexValue":"74727565","id":8705,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12776:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":8586,"id":8706,"nodeType":"Return","src":"12769:11:21"}]},"id":8708,"implemented":true,"kind":"function","modifiers":[],"name":"_isViewSessionAllowed","nameLocation":"10894:21:21","nodeType":"FunctionDefinition","parameters":{"id":8583,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8580,"mutability":"mutable","name":"_viewer","nameLocation":"10933:7:21","nodeType":"VariableDeclaration","scope":8708,"src":"10925:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8579,"name":"address","nodeType":"ElementaryTypeName","src":"10925:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8582,"mutability":"mutable","name":"_broadcaster","nameLocation":"10958:12:21","nodeType":"VariableDeclaration","scope":8708,"src":"10950:20:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8581,"name":"address","nodeType":"ElementaryTypeName","src":"10950:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10915:61:21"},"returnParameters":{"id":8586,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8585,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8708,"src":"11000:4:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8584,"name":"bool","nodeType":"ElementaryTypeName","src":"11000:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10999:6:21"},"scope":9055,"src":"10885:1902:21","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":8761,"nodeType":"Block","src":"12904:532:21","statements":[{"assignments":[8718],"declarations":[{"constant":false,"id":8718,"mutability":"mutable","name":"newFlowNonce","nameLocation":"12922:12:21","nodeType":"VariableDeclaration","scope":8761,"src":"12914:20:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8717,"name":"uint256","nodeType":"ElementaryTypeName","src":"12914:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8723,"initialValue":{"arguments":[{"id":8720,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8710,"src":"12950:5:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8721,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8712,"src":"12957:11:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":8719,"name":"_getNewNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8349,"src":"12937:12:21","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":8722,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12937:32:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12914:55:21"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8724,"name":"newFlowNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8718,"src":"12983:12:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":8725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12998:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12983:16:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8758,"nodeType":"IfStatement","src":"12979:429:21","trueBody":{"id":8757,"nodeType":"Block","src":"13001:407:21","statements":[{"assignments":[null,null,null,8728],"declarations":[null,null,null,{"constant":false,"id":8728,"mutability":"mutable","name":"timestampStop","nameLocation":"13030:13:21","nodeType":"VariableDeclaration","scope":8757,"src":"13022:21:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8727,"name":"uint256","nodeType":"ElementaryTypeName","src":"13022:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8737,"initialValue":{"arguments":[{"id":8731,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8710,"src":"13099:5:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8732,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8712,"src":"13122:11:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8733,"name":"newFlowNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8718,"src":"13151:12:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":8734,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13166:1:21","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13151:16:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8729,"name":"LibSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14179,"src":"13047:10:21","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibSession_$14179_$","typeString":"type(library LibSession)"}},"id":8730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13058:23:21","memberName":"_getSessionDataFromFlow","nodeType":"MemberAccess","referencedDeclaration":14127,"src":"13047:34:21","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_int96_$_t_uint96_$_t_uint256_$_t_uint256_$","typeString":"function (address,address,uint256) view returns (int96,uint96,uint256,uint256)"}},"id":8736,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13047:134:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int96_$_t_uint96_$_t_uint256_$_t_uint256_$","typeString":"tuple(int96,uint96,uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"13015:166:21"},{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8738,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8155,"src":"13219:12:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$8143_storage_ptr_$","typeString":"function () pure returns (struct OldLibFlow.StorageFlow storage pointer)"}},"id":8739,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13219:14:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$8143_storage_ptr","typeString":"struct OldLibFlow.StorageFlow storage pointer"}},"id":8740,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13251:10:21","memberName":"flowRecord","nodeType":"MemberAccess","referencedDeclaration":8132,"src":"13219:42:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$8117_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct OldLibFlow.FlowRecord storage ref)))"}},"id":8742,"indexExpression":{"id":8741,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8710,"src":"13262:5:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13219:49:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$8117_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct OldLibFlow.FlowRecord storage ref))"}},"id":8744,"indexExpression":{"id":8743,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8712,"src":"13269:11:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13219:62:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$8117_storage_$","typeString":"mapping(uint256 => struct OldLibFlow.FlowRecord storage ref)"}},"id":8748,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8747,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8745,"name":"newFlowNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8718,"src":"13282:12:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":8746,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13297:1:21","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13282:16:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13219:80:21","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$8117_storage","typeString":"struct OldLibFlow.FlowRecord storage ref"}},"id":8749,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13321:17:21","memberName":"timestampDecrease","nodeType":"MemberAccess","referencedDeclaration":8114,"src":"13219:119:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8750,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13358:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13219:140:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8752,"name":"timestampStop","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8728,"src":"13379:13:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8753,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13396:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13379:18:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13219:178:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":8716,"id":8756,"nodeType":"Return","src":"13196:201:21"}]}},{"expression":{"hexValue":"66616c7365","id":8759,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"13424:5:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":8716,"id":8760,"nodeType":"Return","src":"13417:12:21"}]},"id":8762,"implemented":true,"kind":"function","modifiers":[],"name":"_hasActiveFlow","nameLocation":"12802:14:21","nodeType":"FunctionDefinition","parameters":{"id":8713,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8710,"mutability":"mutable","name":"_user","nameLocation":"12834:5:21","nodeType":"VariableDeclaration","scope":8762,"src":"12826:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8709,"name":"address","nodeType":"ElementaryTypeName","src":"12826:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8712,"mutability":"mutable","name":"_superToken","nameLocation":"12857:11:21","nodeType":"VariableDeclaration","scope":8762,"src":"12849:19:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8711,"name":"address","nodeType":"ElementaryTypeName","src":"12849:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12816:58:21"},"returnParameters":{"id":8716,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8715,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8762,"src":"12898:4:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8714,"name":"bool","nodeType":"ElementaryTypeName","src":"12898:4:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"12897:6:21"},"scope":9055,"src":"12793:643:21","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":8853,"nodeType":"Block","src":"13614:705:21","statements":[{"assignments":[8782],"declarations":[{"constant":false,"id":8782,"mutability":"mutable","name":"receiver","nameLocation":"13632:8:21","nodeType":"VariableDeclaration","scope":8853,"src":"13624:16:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8781,"name":"address","nodeType":"ElementaryTypeName","src":"13624:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":8793,"initialValue":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8783,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8155,"src":"13643:12:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$8143_storage_ptr_$","typeString":"function () pure returns (struct OldLibFlow.StorageFlow storage pointer)"}},"id":8784,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13643:14:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$8143_storage_ptr","typeString":"struct OldLibFlow.StorageFlow storage pointer"}},"id":8785,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13667:10:21","memberName":"flowRecord","nodeType":"MemberAccess","referencedDeclaration":8132,"src":"13643:34:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$8117_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct OldLibFlow.FlowRecord storage ref)))"}},"id":8787,"indexExpression":{"id":8786,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8764,"src":"13678:5:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13643:41:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$8117_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct OldLibFlow.FlowRecord storage ref))"}},"id":8789,"indexExpression":{"id":8788,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8766,"src":"13685:11:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13643:54:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$8117_storage_$","typeString":"mapping(uint256 => struct OldLibFlow.FlowRecord storage ref)"}},"id":8791,"indexExpression":{"id":8790,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8768,"src":"13698:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13643:62:21","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$8117_storage","typeString":"struct OldLibFlow.FlowRecord storage ref"}},"id":8792,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13706:8:21","memberName":"receiver","nodeType":"MemberAccess","referencedDeclaration":8108,"src":"13643:71:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"13624:90:21"},{"assignments":[8795],"declarations":[{"constant":false,"id":8795,"mutability":"mutable","name":"sessionNonce","nameLocation":"13732:12:21","nodeType":"VariableDeclaration","scope":8853,"src":"13724:20:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8794,"name":"uint256","nodeType":"ElementaryTypeName","src":"13724:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8806,"initialValue":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8796,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8155,"src":"13747:12:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$8143_storage_ptr_$","typeString":"function () pure returns (struct OldLibFlow.StorageFlow storage pointer)"}},"id":8797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13747:14:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$8143_storage_ptr","typeString":"struct OldLibFlow.StorageFlow storage pointer"}},"id":8798,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13771:10:21","memberName":"flowRecord","nodeType":"MemberAccess","referencedDeclaration":8132,"src":"13747:34:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$8117_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct OldLibFlow.FlowRecord storage ref)))"}},"id":8800,"indexExpression":{"id":8799,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8764,"src":"13782:5:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13747:41:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$8117_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct OldLibFlow.FlowRecord storage ref))"}},"id":8802,"indexExpression":{"id":8801,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8766,"src":"13789:11:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13747:54:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$8117_storage_$","typeString":"mapping(uint256 => struct OldLibFlow.FlowRecord storage ref)"}},"id":8804,"indexExpression":{"id":8803,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8768,"src":"13802:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13747:62:21","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$8117_storage","typeString":"struct OldLibFlow.FlowRecord storage ref"}},"id":8805,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13810:12:21","memberName":"sessionNonce","nodeType":"MemberAccess","referencedDeclaration":8110,"src":"13747:75:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13724:98:21"},{"assignments":[8808],"declarations":[{"constant":false,"id":8808,"mutability":"mutable","name":"timestampIncrease","nameLocation":"13840:17:21","nodeType":"VariableDeclaration","scope":8853,"src":"13832:25:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8807,"name":"uint256","nodeType":"ElementaryTypeName","src":"13832:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8819,"initialValue":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8809,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8155,"src":"13860:12:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$8143_storage_ptr_$","typeString":"function () pure returns (struct OldLibFlow.StorageFlow storage pointer)"}},"id":8810,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13860:14:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$8143_storage_ptr","typeString":"struct OldLibFlow.StorageFlow storage pointer"}},"id":8811,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13884:10:21","memberName":"flowRecord","nodeType":"MemberAccess","referencedDeclaration":8132,"src":"13860:34:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$8117_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct OldLibFlow.FlowRecord storage ref)))"}},"id":8813,"indexExpression":{"id":8812,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8764,"src":"13895:5:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13860:41:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$8117_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct OldLibFlow.FlowRecord storage ref))"}},"id":8815,"indexExpression":{"id":8814,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8766,"src":"13902:11:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13860:54:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$8117_storage_$","typeString":"mapping(uint256 => struct OldLibFlow.FlowRecord storage ref)"}},"id":8817,"indexExpression":{"id":8816,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8768,"src":"13915:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13860:62:21","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$8117_storage","typeString":"struct OldLibFlow.FlowRecord storage ref"}},"id":8818,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13923:17:21","memberName":"timestampIncrease","nodeType":"MemberAccess","referencedDeclaration":8112,"src":"13860:80:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13832:108:21"},{"assignments":[8821],"declarations":[{"constant":false,"id":8821,"mutability":"mutable","name":"timestampDecrease","nameLocation":"13958:17:21","nodeType":"VariableDeclaration","scope":8853,"src":"13950:25:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8820,"name":"uint256","nodeType":"ElementaryTypeName","src":"13950:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8832,"initialValue":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8822,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8155,"src":"13978:12:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$8143_storage_ptr_$","typeString":"function () pure returns (struct OldLibFlow.StorageFlow storage pointer)"}},"id":8823,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13978:14:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$8143_storage_ptr","typeString":"struct OldLibFlow.StorageFlow storage pointer"}},"id":8824,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14002:10:21","memberName":"flowRecord","nodeType":"MemberAccess","referencedDeclaration":8132,"src":"13978:34:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$8117_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct OldLibFlow.FlowRecord storage ref)))"}},"id":8826,"indexExpression":{"id":8825,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8764,"src":"14013:5:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13978:41:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$8117_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct OldLibFlow.FlowRecord storage ref))"}},"id":8828,"indexExpression":{"id":8827,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8766,"src":"14020:11:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13978:54:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$8117_storage_$","typeString":"mapping(uint256 => struct OldLibFlow.FlowRecord storage ref)"}},"id":8830,"indexExpression":{"id":8829,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8768,"src":"14033:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13978:62:21","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$8117_storage","typeString":"struct OldLibFlow.FlowRecord storage ref"}},"id":8831,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14041:17:21","memberName":"timestampDecrease","nodeType":"MemberAccess","referencedDeclaration":8114,"src":"13978:80:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13950:108:21"},{"assignments":[8834],"declarations":[{"constant":false,"id":8834,"mutability":"mutable","name":"taskId","nameLocation":"14076:6:21","nodeType":"VariableDeclaration","scope":8853,"src":"14068:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8833,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14068:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":8845,"initialValue":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8835,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8155,"src":"14085:12:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$8143_storage_ptr_$","typeString":"function () pure returns (struct OldLibFlow.StorageFlow storage pointer)"}},"id":8836,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14085:14:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$8143_storage_ptr","typeString":"struct OldLibFlow.StorageFlow storage pointer"}},"id":8837,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14109:10:21","memberName":"flowRecord","nodeType":"MemberAccess","referencedDeclaration":8132,"src":"14085:34:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$8117_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct OldLibFlow.FlowRecord storage ref)))"}},"id":8839,"indexExpression":{"id":8838,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8764,"src":"14120:5:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14085:41:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$8117_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct OldLibFlow.FlowRecord storage ref))"}},"id":8841,"indexExpression":{"id":8840,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8766,"src":"14127:11:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14085:54:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$8117_storage_$","typeString":"mapping(uint256 => struct OldLibFlow.FlowRecord storage ref)"}},"id":8843,"indexExpression":{"id":8842,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8768,"src":"14140:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14085:62:21","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$8117_storage","typeString":"struct OldLibFlow.FlowRecord storage ref"}},"id":8844,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14148:6:21","memberName":"taskId","nodeType":"MemberAccess","referencedDeclaration":8116,"src":"14085:69:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"14068:86:21"},{"expression":{"components":[{"id":8846,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8782,"src":"14186:8:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8847,"name":"sessionNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8795,"src":"14208:12:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8848,"name":"timestampIncrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8808,"src":"14234:17:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8849,"name":"timestampDecrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8821,"src":"14265:17:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8850,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8834,"src":"14296:6:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":8851,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14172:140:21","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes32_$","typeString":"tuple(address,uint256,uint256,uint256,bytes32)"}},"functionReturnParameters":8780,"id":8852,"nodeType":"Return","src":"14165:147:21"}]},"id":8854,"implemented":true,"kind":"function","modifiers":[],"name":"_getFlowData","nameLocation":"13451:12:21","nodeType":"FunctionDefinition","parameters":{"id":8769,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8764,"mutability":"mutable","name":"_user","nameLocation":"13481:5:21","nodeType":"VariableDeclaration","scope":8854,"src":"13473:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8763,"name":"address","nodeType":"ElementaryTypeName","src":"13473:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8766,"mutability":"mutable","name":"_superToken","nameLocation":"13504:11:21","nodeType":"VariableDeclaration","scope":8854,"src":"13496:19:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8765,"name":"address","nodeType":"ElementaryTypeName","src":"13496:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8768,"mutability":"mutable","name":"_nonce","nameLocation":"13533:6:21","nodeType":"VariableDeclaration","scope":8854,"src":"13525:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8767,"name":"uint256","nodeType":"ElementaryTypeName","src":"13525:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13463:82:21"},"returnParameters":{"id":8780,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8771,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8854,"src":"13569:7:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8770,"name":"address","nodeType":"ElementaryTypeName","src":"13569:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8773,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8854,"src":"13578:7:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8772,"name":"uint256","nodeType":"ElementaryTypeName","src":"13578:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8775,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8854,"src":"13587:7:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8774,"name":"uint256","nodeType":"ElementaryTypeName","src":"13587:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8777,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8854,"src":"13596:7:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8776,"name":"uint256","nodeType":"ElementaryTypeName","src":"13596:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8779,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8854,"src":"13605:7:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8778,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13605:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"13568:45:21"},"scope":9055,"src":"13442:877:21","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":8871,"nodeType":"Block","src":"14440:67:21","statements":[{"expression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8863,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8155,"src":"14457:12:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$8143_storage_ptr_$","typeString":"function () pure returns (struct OldLibFlow.StorageFlow storage pointer)"}},"id":8864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14457:14:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$8143_storage_ptr","typeString":"struct OldLibFlow.StorageFlow storage pointer"}},"id":8865,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14472:8:21","memberName":"deposits","nodeType":"MemberAccess","referencedDeclaration":8138,"src":"14457:23:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":8867,"indexExpression":{"id":8866,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8856,"src":"14481:5:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14457:30:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8869,"indexExpression":{"id":8868,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8858,"src":"14488:11:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14457:43:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8862,"id":8870,"nodeType":"Return","src":"14450:50:21"}]},"id":8872,"implemented":true,"kind":"function","modifiers":[],"name":"_getDepositUser","nameLocation":"14334:15:21","nodeType":"FunctionDefinition","parameters":{"id":8859,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8856,"mutability":"mutable","name":"_user","nameLocation":"14367:5:21","nodeType":"VariableDeclaration","scope":8872,"src":"14359:13:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8855,"name":"address","nodeType":"ElementaryTypeName","src":"14359:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8858,"mutability":"mutable","name":"_superToken","nameLocation":"14390:11:21","nodeType":"VariableDeclaration","scope":8872,"src":"14382:19:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8857,"name":"address","nodeType":"ElementaryTypeName","src":"14382:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"14349:58:21"},"returnParameters":{"id":8862,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8861,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8872,"src":"14431:7:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8860,"name":"uint256","nodeType":"ElementaryTypeName","src":"14431:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14430:9:21"},"scope":9055,"src":"14325:182:21","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":8885,"nodeType":"Block","src":"14606:65:21","statements":[{"expression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8879,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8155,"src":"14623:12:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$8143_storage_ptr_$","typeString":"function () pure returns (struct OldLibFlow.StorageFlow storage pointer)"}},"id":8880,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14623:14:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$8143_storage_ptr","typeString":"struct OldLibFlow.StorageFlow storage pointer"}},"id":8881,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14638:13:21","memberName":"totalDeposits","nodeType":"MemberAccess","referencedDeclaration":8142,"src":"14623:28:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8883,"indexExpression":{"id":8882,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8874,"src":"14652:11:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14623:41:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8878,"id":8884,"nodeType":"Return","src":"14616:48:21"}]},"id":8886,"implemented":true,"kind":"function","modifiers":[],"name":"_getDepositTotal","nameLocation":"14522:16:21","nodeType":"FunctionDefinition","parameters":{"id":8875,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8874,"mutability":"mutable","name":"_superToken","nameLocation":"14556:11:21","nodeType":"VariableDeclaration","scope":8886,"src":"14548:19:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8873,"name":"address","nodeType":"ElementaryTypeName","src":"14548:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"14538:35:21"},"returnParameters":{"id":8878,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8877,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8886,"src":"14597:7:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8876,"name":"uint256","nodeType":"ElementaryTypeName","src":"14597:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14596:9:21"},"scope":9055,"src":"14513:158:21","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":8953,"nodeType":"Block","src":"14887:451:21","statements":[{"assignments":[8901],"declarations":[{"constant":false,"id":8901,"mutability":"mutable","name":"iSuperToken","nameLocation":"14909:11:21","nodeType":"VariableDeclaration","scope":8953,"src":"14897:23:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":8900,"nodeType":"UserDefinedTypeName","pathNode":{"id":8899,"name":"ISuperToken","nameLocations":["14897:11:21"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"14897:11:21"},"referencedDeclaration":6947,"src":"14897:11:21","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"}],"id":8905,"initialValue":{"arguments":[{"id":8903,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8888,"src":"14935:11:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8902,"name":"ISuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6947,"src":"14923:11:21","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISuperToken_$6947_$","typeString":"type(contract ISuperToken)"}},"id":8904,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14923:24:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"nodeType":"VariableDeclarationStatement","src":"14897:50:21"},{"assignments":[8907],"declarations":[{"constant":false,"id":8907,"mutability":"mutable","name":"flowRate","nameLocation":"14963:8:21","nodeType":"VariableDeclaration","scope":8953,"src":"14957:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":8906,"name":"int96","nodeType":"ElementaryTypeName","src":"14957:5:21","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"id":8916,"initialValue":{"arguments":[{"arguments":[{"id":8912,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"15006:4:21","typeDescriptions":{"typeIdentifier":"t_contract$_OldLibFlow_$9055","typeString":"library OldLibFlow"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_OldLibFlow_$9055","typeString":"library OldLibFlow"}],"id":8911,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14998:7:21","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8910,"name":"address","nodeType":"ElementaryTypeName","src":"14998:7:21","typeDescriptions":{}}},"id":8913,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14998:13:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8914,"name":"_receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8892,"src":"15013:9:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":8908,"name":"iSuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8901,"src":"14974:11:21","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"id":8909,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14986:11:21","memberName":"getFlowRate","nodeType":"MemberAccess","referencedDeclaration":3206,"src":"14974:23:21","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_ISuperToken_$6947_$_t_address_$_t_address_$returns$_t_int96_$attached_to$_t_contract$_ISuperToken_$6947_$","typeString":"function (contract ISuperToken,address,address) view returns (int96)"}},"id":8915,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14974:49:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"VariableDeclarationStatement","src":"14957:66:21"},{"condition":{"commonType":{"typeIdentifier":"t_int96","typeString":"int96"},"id":8919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8917,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8907,"src":"15038:8:21","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"30","id":8918,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15050:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"15038:13:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":8937,"nodeType":"Block","src":"15128:80:21","statements":[{"expression":{"arguments":[{"id":8931,"name":"_receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8892,"src":"15165:9:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_int96","typeString":"int96"},"id":8934,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8932,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8907,"src":"15176:8:21","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":8933,"name":"_flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8896,"src":"15187:9:21","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"src":"15176:20:21","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_int96","typeString":"int96"}],"expression":{"id":8928,"name":"iSuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8901,"src":"15142:11:21","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"id":8930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15154:10:21","memberName":"updateFlow","nodeType":"MemberAccess","referencedDeclaration":2083,"src":"15142:22:21","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$6947_$_t_address_$_t_int96_$returns$_t_bool_$attached_to$_t_contract$_ISuperToken_$6947_$","typeString":"function (contract ISuperToken,address,int96) returns (bool)"}},"id":8935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15142:55:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8936,"nodeType":"ExpressionStatement","src":"15142:55:21"}]},"id":8938,"nodeType":"IfStatement","src":"15034:174:21","trueBody":{"id":8927,"nodeType":"Block","src":"15053:69:21","statements":[{"expression":{"arguments":[{"id":8923,"name":"_receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8892,"src":"15090:9:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8924,"name":"_flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8896,"src":"15101:9:21","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_int96","typeString":"int96"}],"expression":{"id":8920,"name":"iSuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8901,"src":"15067:11:21","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"id":8922,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15079:10:21","memberName":"createFlow","nodeType":"MemberAccess","referencedDeclaration":1986,"src":"15067:22:21","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$6947_$_t_address_$_t_int96_$returns$_t_bool_$attached_to$_t_contract$_ISuperToken_$6947_$","typeString":"function (contract ISuperToken,address,int96) returns (bool)"}},"id":8925,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15067:44:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8926,"nodeType":"ExpressionStatement","src":"15067:44:21"}]}},{"expression":{"id":8951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8939,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8155,"src":"15218:12:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$8143_storage_ptr_$","typeString":"function () pure returns (struct OldLibFlow.StorageFlow storage pointer)"}},"id":8940,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15218:14:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$8143_storage_ptr","typeString":"struct OldLibFlow.StorageFlow storage pointer"}},"id":8941,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15242:10:21","memberName":"flowRecord","nodeType":"MemberAccess","referencedDeclaration":8132,"src":"15218:34:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$8117_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct OldLibFlow.FlowRecord storage ref)))"}},"id":8943,"indexExpression":{"id":8942,"name":"_sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8890,"src":"15253:7:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15218:43:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$8117_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct OldLibFlow.FlowRecord storage ref))"}},"id":8945,"indexExpression":{"id":8944,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8888,"src":"15262:11:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15218:56:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$8117_storage_$","typeString":"mapping(uint256 => struct OldLibFlow.FlowRecord storage ref)"}},"id":8947,"indexExpression":{"id":8946,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8894,"src":"15275:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15218:64:21","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$8117_storage","typeString":"struct OldLibFlow.FlowRecord storage ref"}},"id":8948,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"15283:17:21","memberName":"timestampIncrease","nodeType":"MemberAccess","referencedDeclaration":8112,"src":"15218:82:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":8949,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"15303:5:21","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":8950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15322:9:21","memberName":"timestamp","nodeType":"MemberAccess","src":"15303:28:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15218:113:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8952,"nodeType":"ExpressionStatement","src":"15218:113:21"}]},"id":8954,"implemented":true,"kind":"function","modifiers":[],"name":"_increaseFlow","nameLocation":"14728:13:21","nodeType":"FunctionDefinition","parameters":{"id":8897,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8888,"mutability":"mutable","name":"_superToken","nameLocation":"14759:11:21","nodeType":"VariableDeclaration","scope":8954,"src":"14751:19:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8887,"name":"address","nodeType":"ElementaryTypeName","src":"14751:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8890,"mutability":"mutable","name":"_sender","nameLocation":"14788:7:21","nodeType":"VariableDeclaration","scope":8954,"src":"14780:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8889,"name":"address","nodeType":"ElementaryTypeName","src":"14780:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8892,"mutability":"mutable","name":"_receiver","nameLocation":"14813:9:21","nodeType":"VariableDeclaration","scope":8954,"src":"14805:17:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8891,"name":"address","nodeType":"ElementaryTypeName","src":"14805:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8894,"mutability":"mutable","name":"_nonce","nameLocation":"14840:6:21","nodeType":"VariableDeclaration","scope":8954,"src":"14832:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8893,"name":"uint256","nodeType":"ElementaryTypeName","src":"14832:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8896,"mutability":"mutable","name":"_flowRate","nameLocation":"14862:9:21","nodeType":"VariableDeclaration","scope":8954,"src":"14856:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":8895,"name":"int96","nodeType":"ElementaryTypeName","src":"14856:5:21","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"14741:136:21"},"returnParameters":{"id":8898,"nodeType":"ParameterList","parameters":[],"src":"14887:0:21"},"scope":9055,"src":"14719:619:21","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9053,"nodeType":"Block","src":"15512:724:21","statements":[{"assignments":[8969],"declarations":[{"constant":false,"id":8969,"mutability":"mutable","name":"iSuperToken","nameLocation":"15534:11:21","nodeType":"VariableDeclaration","scope":9053,"src":"15522:23:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":8968,"nodeType":"UserDefinedTypeName","pathNode":{"id":8967,"name":"ISuperToken","nameLocations":["15522:11:21"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"15522:11:21"},"referencedDeclaration":6947,"src":"15522:11:21","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"}],"id":8973,"initialValue":{"arguments":[{"id":8971,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8956,"src":"15560:11:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8970,"name":"ISuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6947,"src":"15548:11:21","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISuperToken_$6947_$","typeString":"type(contract ISuperToken)"}},"id":8972,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15548:24:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"nodeType":"VariableDeclarationStatement","src":"15522:50:21"},{"assignments":[8975],"declarations":[{"constant":false,"id":8975,"mutability":"mutable","name":"flowRate","nameLocation":"15588:8:21","nodeType":"VariableDeclaration","scope":9053,"src":"15582:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":8974,"name":"int96","nodeType":"ElementaryTypeName","src":"15582:5:21","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"id":8984,"initialValue":{"arguments":[{"arguments":[{"id":8980,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"15631:4:21","typeDescriptions":{"typeIdentifier":"t_contract$_OldLibFlow_$9055","typeString":"library OldLibFlow"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_OldLibFlow_$9055","typeString":"library OldLibFlow"}],"id":8979,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15623:7:21","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8978,"name":"address","nodeType":"ElementaryTypeName","src":"15623:7:21","typeDescriptions":{}}},"id":8981,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15623:13:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8982,"name":"_receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8960,"src":"15638:9:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":8976,"name":"iSuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8969,"src":"15599:11:21","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"id":8977,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15611:11:21","memberName":"getFlowRate","nodeType":"MemberAccess","referencedDeclaration":3206,"src":"15599:23:21","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_ISuperToken_$6947_$_t_address_$_t_address_$returns$_t_int96_$attached_to$_t_contract$_ISuperToken_$6947_$","typeString":"function (contract ISuperToken,address,address) view returns (int96)"}},"id":8983,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15599:49:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"VariableDeclarationStatement","src":"15582:66:21"},{"condition":{"commonType":{"typeIdentifier":"t_int96","typeString":"int96"},"id":8989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int96","typeString":"int96"},"id":8987,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8985,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8975,"src":"15663:8:21","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":8986,"name":"_flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8964,"src":"15674:9:21","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"src":"15663:20:21","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"30","id":8988,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15687:1:21","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"15663:25:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":9010,"nodeType":"Block","src":"15769:80:21","statements":[{"expression":{"arguments":[{"id":9004,"name":"_receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8960,"src":"15806:9:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_int96","typeString":"int96"},"id":9007,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9005,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8975,"src":"15817:8:21","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":9006,"name":"_flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8964,"src":"15828:9:21","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"src":"15817:20:21","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_int96","typeString":"int96"}],"expression":{"id":9001,"name":"iSuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8969,"src":"15783:11:21","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"id":9003,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15795:10:21","memberName":"updateFlow","nodeType":"MemberAccess","referencedDeclaration":2083,"src":"15783:22:21","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$6947_$_t_address_$_t_int96_$returns$_t_bool_$attached_to$_t_contract$_ISuperToken_$6947_$","typeString":"function (contract ISuperToken,address,int96) returns (bool)"}},"id":9008,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15783:55:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9009,"nodeType":"ExpressionStatement","src":"15783:55:21"}]},"id":9011,"nodeType":"IfStatement","src":"15659:190:21","trueBody":{"id":9000,"nodeType":"Block","src":"15690:73:21","statements":[{"expression":{"arguments":[{"arguments":[{"id":8995,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"15735:4:21","typeDescriptions":{"typeIdentifier":"t_contract$_OldLibFlow_$9055","typeString":"library OldLibFlow"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_OldLibFlow_$9055","typeString":"library OldLibFlow"}],"id":8994,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15727:7:21","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8993,"name":"address","nodeType":"ElementaryTypeName","src":"15727:7:21","typeDescriptions":{}}},"id":8996,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15727:13:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8997,"name":"_receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8960,"src":"15742:9:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":8990,"name":"iSuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8969,"src":"15704:11:21","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"id":8992,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15716:10:21","memberName":"deleteFlow","nodeType":"MemberAccess","referencedDeclaration":2180,"src":"15704:22:21","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$6947_$_t_address_$_t_address_$returns$_t_bool_$attached_to$_t_contract$_ISuperToken_$6947_$","typeString":"function (contract ISuperToken,address,address) returns (bool)"}},"id":8998,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15704:48:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8999,"nodeType":"ExpressionStatement","src":"15704:48:21"}]}},{"expression":{"id":9024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":9012,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8155,"src":"15859:12:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$8143_storage_ptr_$","typeString":"function () pure returns (struct OldLibFlow.StorageFlow storage pointer)"}},"id":9013,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15859:14:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$8143_storage_ptr","typeString":"struct OldLibFlow.StorageFlow storage pointer"}},"id":9014,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15883:10:21","memberName":"flowRecord","nodeType":"MemberAccess","referencedDeclaration":8132,"src":"15859:34:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$8117_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct OldLibFlow.FlowRecord storage ref)))"}},"id":9016,"indexExpression":{"id":9015,"name":"_sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8958,"src":"15894:7:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15859:43:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$8117_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct OldLibFlow.FlowRecord storage ref))"}},"id":9018,"indexExpression":{"id":9017,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8956,"src":"15903:11:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15859:56:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$8117_storage_$","typeString":"mapping(uint256 => struct OldLibFlow.FlowRecord storage ref)"}},"id":9020,"indexExpression":{"id":9019,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8962,"src":"15916:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15859:64:21","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$8117_storage","typeString":"struct OldLibFlow.FlowRecord storage ref"}},"id":9021,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"15924:17:21","memberName":"timestampDecrease","nodeType":"MemberAccess","referencedDeclaration":8114,"src":"15859:82:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":9022,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"15944:5:21","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":9023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15963:9:21","memberName":"timestamp","nodeType":"MemberAccess","src":"15944:28:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15859:113:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9025,"nodeType":"ExpressionStatement","src":"15859:113:21"},{"assignments":[9027],"declarations":[{"constant":false,"id":9027,"mutability":"mutable","name":"controlNonce","nameLocation":"15991:12:21","nodeType":"VariableDeclaration","scope":9053,"src":"15983:20:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9026,"name":"uint256","nodeType":"ElementaryTypeName","src":"15983:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9038,"initialValue":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":9028,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8155,"src":"16006:12:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$8143_storage_ptr_$","typeString":"function () pure returns (struct OldLibFlow.StorageFlow storage pointer)"}},"id":9029,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16006:14:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$8143_storage_ptr","typeString":"struct OldLibFlow.StorageFlow storage pointer"}},"id":9030,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16030:10:21","memberName":"flowRecord","nodeType":"MemberAccess","referencedDeclaration":8132,"src":"16006:34:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$8117_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct OldLibFlow.FlowRecord storage ref)))"}},"id":9032,"indexExpression":{"id":9031,"name":"_sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8958,"src":"16041:7:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16006:43:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$8117_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct OldLibFlow.FlowRecord storage ref))"}},"id":9034,"indexExpression":{"id":9033,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8956,"src":"16050:11:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16006:56:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$8117_storage_$","typeString":"mapping(uint256 => struct OldLibFlow.FlowRecord storage ref)"}},"id":9036,"indexExpression":{"id":9035,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8962,"src":"16063:6:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16006:64:21","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$8117_storage","typeString":"struct OldLibFlow.FlowRecord storage ref"}},"id":9037,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16071:12:21","memberName":"controlNonce","nodeType":"MemberAccess","referencedDeclaration":8106,"src":"16006:77:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15983:100:21"},{"expression":{"id":9051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9039,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"16093:10:21","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$12557_$","typeString":"type(library LibControl)"}},"id":9041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16113:15:21","memberName":"_storageControl","nodeType":"MemberAccess","referencedDeclaration":11680,"src":"16093:35:21","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$11668_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":9042,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16093:37:21","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":9043,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16140:13:21","memberName":"controlRecord","nodeType":"MemberAccess","referencedDeclaration":11653,"src":"16093:60:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_ControlRecord_$11619_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibControl.ControlRecord storage ref))"}},"id":9045,"indexExpression":{"id":9044,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8956,"src":"16154:11:21","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16093:73:21","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ControlRecord_$11619_storage_$","typeString":"mapping(uint256 => struct LibControl.ControlRecord storage ref)"}},"id":9047,"indexExpression":{"id":9046,"name":"controlNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9027,"src":"16167:12:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16093:87:21","typeDescriptions":{"typeIdentifier":"t_struct$_ControlRecord_$11619_storage","typeString":"struct LibControl.ControlRecord storage ref"}},"id":9048,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"16181:17:21","memberName":"timestampDecrease","nodeType":"MemberAccess","referencedDeclaration":11618,"src":"16093:105:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":9049,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"16201:5:21","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":9050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16220:9:21","memberName":"timestamp","nodeType":"MemberAccess","src":"16201:28:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16093:136:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9052,"nodeType":"ExpressionStatement","src":"16093:136:21"}]},"id":9054,"implemented":true,"kind":"function","modifiers":[],"name":"_decreaseFlow","nameLocation":"15353:13:21","nodeType":"FunctionDefinition","parameters":{"id":8965,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8956,"mutability":"mutable","name":"_superToken","nameLocation":"15384:11:21","nodeType":"VariableDeclaration","scope":9054,"src":"15376:19:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8955,"name":"address","nodeType":"ElementaryTypeName","src":"15376:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8958,"mutability":"mutable","name":"_sender","nameLocation":"15413:7:21","nodeType":"VariableDeclaration","scope":9054,"src":"15405:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8957,"name":"address","nodeType":"ElementaryTypeName","src":"15405:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8960,"mutability":"mutable","name":"_receiver","nameLocation":"15438:9:21","nodeType":"VariableDeclaration","scope":9054,"src":"15430:17:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8959,"name":"address","nodeType":"ElementaryTypeName","src":"15430:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8962,"mutability":"mutable","name":"_nonce","nameLocation":"15465:6:21","nodeType":"VariableDeclaration","scope":9054,"src":"15457:14:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8961,"name":"uint256","nodeType":"ElementaryTypeName","src":"15457:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8964,"mutability":"mutable","name":"_flowRate","nameLocation":"15487:9:21","nodeType":"VariableDeclaration","scope":9054,"src":"15481:15:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":8963,"name":"int96","nodeType":"ElementaryTypeName","src":"15481:5:21","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"15366:136:21"},"returnParameters":{"id":8966,"nodeType":"ParameterList","parameters":[],"src":"15512:0:21"},"scope":9055,"src":"15344:892:21","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":9056,"src":"633:15605:21","usedErrors":[]}],"src":"36:16375:21"},"id":21},"contracts/facets/core/Control.sol":{"ast":{"absolutePath":"contracts/facets/core/Control.sol","exportedSymbols":{"ArrayLengthNotMatch":[11575],"Control":[9609],"IControl":[10801],"InvalidFlowRateBounds":[11585],"IterableMappingBPS":[14434],"LibAccessControl":[14732],"LibControl":[12557]},"id":9610,"license":"BUSL-1.1","nodeType":"SourceUnit","nodes":[{"id":9057,"literals":["solidity","^","0.8",".9"],"nodeType":"PragmaDirective","src":"37:23:22"},{"absolutePath":"contracts/libraries/utils/LibAccessControl.sol","file":"../../libraries/utils/LibAccessControl.sol","id":9059,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9610,"sourceUnit":14733,"src":"62:76:22","symbolAliases":[{"foreign":{"id":9058,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14732,"src":"70:16:22","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/libraries/core/LibControl.sol","file":"../../libraries/core/LibControl.sol","id":9063,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9610,"sourceUnit":12558,"src":"139:107:22","symbolAliases":[{"foreign":{"id":9060,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"147:10:22","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":9061,"name":"ArrayLengthNotMatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11575,"src":"159:19:22","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":9062,"name":"InvalidFlowRateBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11585,"src":"180:21:22","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/core/IControl.sol","file":"../../interfaces/core/IControl.sol","id":9065,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9610,"sourceUnit":10802,"src":"247:60:22","symbolAliases":[{"foreign":{"id":9064,"name":"IControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10801,"src":"255:8:22","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/libraries/utils/IterableMappingBPS.sol","file":"../../libraries/utils/IterableMappingBPS.sol","id":9067,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9610,"sourceUnit":14435,"src":"309:80:22","symbolAliases":[{"foreign":{"id":9066,"name":"IterableMappingBPS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14434,"src":"317:18:22","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":9068,"name":"IControl","nameLocations":["411:8:22"],"nodeType":"IdentifierPath","referencedDeclaration":10801,"src":"411:8:22"},"id":9069,"nodeType":"InheritanceSpecifier","src":"411:8:22"}],"canonicalName":"Control","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":9609,"linearizedBaseContracts":[9609,10801],"name":"Control","nameLocation":"400:7:22","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[10613],"body":{"id":9089,"nodeType":"Block","src":"495:124:22","statements":[{"expression":{"arguments":[{"id":9079,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9071,"src":"544:11:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9076,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"505:10:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$12557_$","typeString":"type(library LibControl)"}},"id":9078,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"516:27:22","memberName":"_requireSuperTokenSupported","nodeType":"MemberAccess","referencedDeclaration":12003,"src":"505:38:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":9080,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"505:51:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9081,"nodeType":"ExpressionStatement","src":"505:51:22"},{"expression":{"arguments":[{"id":9085,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9071,"src":"591:11:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9086,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9073,"src":"604:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9082,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"566:10:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$12557_$","typeString":"type(library LibControl)"}},"id":9084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"577:13:22","memberName":"_depositAsset","nodeType":"MemberAccess","referencedDeclaration":11720,"src":"566:24:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":9087,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"566:46:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9088,"nodeType":"ExpressionStatement","src":"566:46:22"}]},"functionSelector":"46a5d043","id":9090,"implemented":true,"kind":"function","modifiers":[],"name":"depositAsset","nameLocation":"435:12:22","nodeType":"FunctionDefinition","parameters":{"id":9074,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9071,"mutability":"mutable","name":"_superToken","nameLocation":"456:11:22","nodeType":"VariableDeclaration","scope":9090,"src":"448:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9070,"name":"address","nodeType":"ElementaryTypeName","src":"448:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9073,"mutability":"mutable","name":"_amount","nameLocation":"477:7:22","nodeType":"VariableDeclaration","scope":9090,"src":"469:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9072,"name":"uint256","nodeType":"ElementaryTypeName","src":"469:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"447:38:22"},"returnParameters":{"id":9075,"nodeType":"ParameterList","parameters":[],"src":"495:0:22"},"scope":9609,"src":"426:193:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[10620],"body":{"id":9104,"nodeType":"Block","src":"695:371:22","statements":[{"documentation":" don't need to check if supertoken suppported or not\n as there may be a chance that a supported supertoken\n gets removed but there is still user funds in the app\n in that case, just let user withdraw as will fail anyway if 0 amount","expression":{"arguments":[{"id":9100,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9092,"src":"1038:11:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9101,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9094,"src":"1051:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9097,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"1012:10:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$12557_$","typeString":"type(library LibControl)"}},"id":9099,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1023:14:22","memberName":"_withdrawAsset","nodeType":"MemberAccess","referencedDeclaration":11770,"src":"1012:25:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":9102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1012:47:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9103,"nodeType":"ExpressionStatement","src":"1012:47:22"}]},"functionSelector":"38e4f064","id":9105,"implemented":true,"kind":"function","modifiers":[],"name":"withdrawAsset","nameLocation":"634:13:22","nodeType":"FunctionDefinition","parameters":{"id":9095,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9092,"mutability":"mutable","name":"_superToken","nameLocation":"656:11:22","nodeType":"VariableDeclaration","scope":9105,"src":"648:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9091,"name":"address","nodeType":"ElementaryTypeName","src":"648:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9094,"mutability":"mutable","name":"_amount","nameLocation":"677:7:22","nodeType":"VariableDeclaration","scope":9105,"src":"669:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9093,"name":"uint256","nodeType":"ElementaryTypeName","src":"669:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"647:38:22"},"returnParameters":{"id":9096,"nodeType":"ParameterList","parameters":[],"src":"695:0:22"},"scope":9609,"src":"625:441:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[10627],"body":{"id":9126,"nodeType":"Block","src":"1147:145:22","statements":[{"expression":{"arguments":[{"expression":{"id":9115,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14732,"src":"1191:16:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$14732_$","typeString":"type(library LibAccessControl)"}},"id":9116,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1208:14:22","memberName":"TREASURER_ROLE","nodeType":"MemberAccess","referencedDeclaration":14461,"src":"1191:31:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":9112,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14732,"src":"1157:16:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$14732_$","typeString":"type(library LibAccessControl)"}},"id":9114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1174:16:22","memberName":"_requireOnlyRole","nodeType":"MemberAccess","referencedDeclaration":14512,"src":"1157:33:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$__$","typeString":"function (bytes32) view"}},"id":9117,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1157:66:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9118,"nodeType":"ExpressionStatement","src":"1157:66:22"},{"expression":{"arguments":[{"id":9122,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9107,"src":"1264:11:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9123,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9109,"src":"1277:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9119,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"1233:10:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$12557_$","typeString":"type(library LibControl)"}},"id":9121,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1244:19:22","memberName":"_withdrawFeeBalance","nodeType":"MemberAccess","referencedDeclaration":11810,"src":"1233:30:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":9124,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1233:52:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9125,"nodeType":"ExpressionStatement","src":"1233:52:22"}]},"functionSelector":"ebaae661","id":9127,"implemented":true,"kind":"function","modifiers":[],"name":"withdrawFeeBalance","nameLocation":"1081:18:22","nodeType":"FunctionDefinition","parameters":{"id":9110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9107,"mutability":"mutable","name":"_superToken","nameLocation":"1108:11:22","nodeType":"VariableDeclaration","scope":9127,"src":"1100:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9106,"name":"address","nodeType":"ElementaryTypeName","src":"1100:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9109,"mutability":"mutable","name":"_amount","nameLocation":"1129:7:22","nodeType":"VariableDeclaration","scope":9127,"src":"1121:15:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9108,"name":"uint256","nodeType":"ElementaryTypeName","src":"1121:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1099:38:22"},"returnParameters":{"id":9111,"nodeType":"ParameterList","parameters":[],"src":"1147:0:22"},"scope":9609,"src":"1072:220:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[10634],"body":{"id":9142,"nodeType":"Block","src":"1488:66:22","statements":[{"expression":{"arguments":[{"id":9138,"name":"count","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9130,"src":"1528:5:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9139,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9132,"src":"1535:11:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9135,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"1498:10:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$12557_$","typeString":"type(library LibControl)"}},"id":9137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1509:18:22","memberName":"_realizeFeeBalance","nodeType":"MemberAccess","referencedDeclaration":11830,"src":"1498:29:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_address_$returns$__$","typeString":"function (uint256,address)"}},"id":9140,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1498:49:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9141,"nodeType":"ExpressionStatement","src":"1498:49:22"}]},"documentation":{"id":9128,"nodeType":"StructuredDocumentation","src":"1298:113:22","text":" do external analysis on up to what count flow ended\n to determine what `count` should be"},"functionSelector":"adefe35e","id":9143,"implemented":true,"kind":"function","modifiers":[],"name":"realizeFeeBalance","nameLocation":"1425:17:22","nodeType":"FunctionDefinition","parameters":{"id":9133,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9130,"mutability":"mutable","name":"count","nameLocation":"1451:5:22","nodeType":"VariableDeclaration","scope":9143,"src":"1443:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9129,"name":"uint256","nodeType":"ElementaryTypeName","src":"1443:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9132,"mutability":"mutable","name":"_superToken","nameLocation":"1466:11:22","nodeType":"VariableDeclaration","scope":9143,"src":"1458:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9131,"name":"address","nodeType":"ElementaryTypeName","src":"1458:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1442:36:22"},"returnParameters":{"id":9134,"nodeType":"ParameterList","parameters":[],"src":"1488:0:22"},"scope":9609,"src":"1416:138:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[10639],"body":{"id":9167,"nodeType":"Block","src":"1661:190:22","statements":[{"expression":{"arguments":[{"expression":{"id":9151,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14732,"src":"1705:16:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$14732_$","typeString":"type(library LibAccessControl)"}},"id":9152,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1722:15:22","memberName":"STRATEGIST_ROLE","nodeType":"MemberAccess","referencedDeclaration":14469,"src":"1705:32:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":9148,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14732,"src":"1671:16:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$14732_$","typeString":"type(library LibAccessControl)"}},"id":9150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1688:16:22","memberName":"_requireOnlyRole","nodeType":"MemberAccess","referencedDeclaration":14512,"src":"1671:33:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$__$","typeString":"function (bytes32) view"}},"id":9153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1671:67:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9154,"nodeType":"ExpressionStatement","src":"1671:67:22"},{"expression":{"arguments":[{"id":9158,"name":"_duration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9145,"src":"1780:9:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9155,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"1748:10:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$12557_$","typeString":"type(library LibControl)"}},"id":9157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1759:20:22","memberName":"_requireNonZeroValue","nodeType":"MemberAccess","referencedDeclaration":11989,"src":"1748:31:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":9159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1748:42:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9160,"nodeType":"ExpressionStatement","src":"1748:42:22"},{"expression":{"arguments":[{"id":9164,"name":"_duration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9145,"src":"1834:9:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9161,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"1800:10:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$12557_$","typeString":"type(library LibControl)"}},"id":9163,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1811:22:22","memberName":"_setMinimumEndDuration","nodeType":"MemberAccess","referencedDeclaration":12064,"src":"1800:33:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":9165,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1800:44:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9166,"nodeType":"ExpressionStatement","src":"1800:44:22"}]},"functionSelector":"578dc59a","id":9168,"implemented":true,"kind":"function","modifiers":[],"name":"setMinimumEndDuration","nameLocation":"1611:21:22","nodeType":"FunctionDefinition","parameters":{"id":9146,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9145,"mutability":"mutable","name":"_duration","nameLocation":"1641:9:22","nodeType":"VariableDeclaration","scope":9168,"src":"1633:17:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9144,"name":"uint256","nodeType":"ElementaryTypeName","src":"1633:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1632:19:22"},"returnParameters":{"id":9147,"nodeType":"ParameterList","parameters":[],"src":"1661:0:22"},"scope":9609,"src":"1602:249:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[10644],"body":{"id":9192,"nodeType":"Block","src":"1913:187:22","statements":[{"expression":{"arguments":[{"expression":{"id":9176,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14732,"src":"1957:16:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$14732_$","typeString":"type(library LibAccessControl)"}},"id":9177,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1974:15:22","memberName":"STRATEGIST_ROLE","nodeType":"MemberAccess","referencedDeclaration":14469,"src":"1957:32:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":9173,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14732,"src":"1923:16:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$14732_$","typeString":"type(library LibAccessControl)"}},"id":9175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1940:16:22","memberName":"_requireOnlyRole","nodeType":"MemberAccess","referencedDeclaration":14512,"src":"1923:33:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$__$","typeString":"function (bytes32) view"}},"id":9178,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1923:67:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9179,"nodeType":"ExpressionStatement","src":"1923:67:22"},{"expression":{"arguments":[{"id":9183,"name":"_duration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9170,"src":"2032:9:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9180,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"2000:10:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$12557_$","typeString":"type(library LibControl)"}},"id":9182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2011:20:22","memberName":"_requireNonZeroValue","nodeType":"MemberAccess","referencedDeclaration":11989,"src":"2000:31:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":9184,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2000:42:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9185,"nodeType":"ExpressionStatement","src":"2000:42:22"},{"expression":{"arguments":[{"id":9189,"name":"_duration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9170,"src":"2083:9:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9186,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"2052:10:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$12557_$","typeString":"type(library LibControl)"}},"id":9188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2063:19:22","memberName":"_setMinimumLifespan","nodeType":"MemberAccess","referencedDeclaration":12076,"src":"2052:30:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":9190,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2052:41:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9191,"nodeType":"ExpressionStatement","src":"2052:41:22"}]},"functionSelector":"245b6c93","id":9193,"implemented":true,"kind":"function","modifiers":[],"name":"setMinimumLifespan","nameLocation":"1866:18:22","nodeType":"FunctionDefinition","parameters":{"id":9171,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9170,"mutability":"mutable","name":"_duration","nameLocation":"1893:9:22","nodeType":"VariableDeclaration","scope":9193,"src":"1885:17:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9169,"name":"uint256","nodeType":"ElementaryTypeName","src":"1885:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1884:19:22"},"returnParameters":{"id":9172,"nodeType":"ParameterList","parameters":[],"src":"1913:0:22"},"scope":9609,"src":"1857:243:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[10649],"body":{"id":9217,"nodeType":"Block","src":"2161:186:22","statements":[{"expression":{"arguments":[{"expression":{"id":9201,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14732,"src":"2205:16:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$14732_$","typeString":"type(library LibAccessControl)"}},"id":9202,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2222:15:22","memberName":"STRATEGIST_ROLE","nodeType":"MemberAccess","referencedDeclaration":14469,"src":"2205:32:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":9198,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14732,"src":"2171:16:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$14732_$","typeString":"type(library LibAccessControl)"}},"id":9200,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2188:16:22","memberName":"_requireOnlyRole","nodeType":"MemberAccess","referencedDeclaration":14512,"src":"2171:33:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$__$","typeString":"function (bytes32) view"}},"id":9203,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2171:67:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9204,"nodeType":"ExpressionStatement","src":"2171:67:22"},{"expression":{"arguments":[{"id":9208,"name":"_duration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9195,"src":"2280:9:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9205,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"2248:10:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$12557_$","typeString":"type(library LibControl)"}},"id":9207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2259:20:22","memberName":"_requireNonZeroValue","nodeType":"MemberAccess","referencedDeclaration":11989,"src":"2248:31:22","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":9209,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2248:42:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9210,"nodeType":"ExpressionStatement","src":"2248:42:22"},{"expression":{"arguments":[{"id":9214,"name":"_duration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9195,"src":"2330:9:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9211,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"2300:10:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$12557_$","typeString":"type(library LibControl)"}},"id":9213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2311:18:22","memberName":"_setSTBufferAmount","nodeType":"MemberAccess","referencedDeclaration":12088,"src":"2300:29:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":9215,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2300:40:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9216,"nodeType":"ExpressionStatement","src":"2300:40:22"}]},"functionSelector":"487eb939","id":9218,"implemented":true,"kind":"function","modifiers":[],"name":"setSTBufferAmount","nameLocation":"2115:17:22","nodeType":"FunctionDefinition","parameters":{"id":9196,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9195,"mutability":"mutable","name":"_duration","nameLocation":"2141:9:22","nodeType":"VariableDeclaration","scope":9218,"src":"2133:17:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9194,"name":"uint256","nodeType":"ElementaryTypeName","src":"2133:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2132:19:22"},"returnParameters":{"id":9197,"nodeType":"ParameterList","parameters":[],"src":"2161:0:22"},"scope":9609,"src":"2106:241:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[10654],"body":{"id":9236,"nodeType":"Block","src":"2406:132:22","statements":[{"expression":{"arguments":[{"expression":{"id":9226,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14732,"src":"2450:16:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$14732_$","typeString":"type(library LibAccessControl)"}},"id":9227,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2467:15:22","memberName":"STRATEGIST_ROLE","nodeType":"MemberAccess","referencedDeclaration":14469,"src":"2450:32:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":9223,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14732,"src":"2416:16:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$14732_$","typeString":"type(library LibAccessControl)"}},"id":9225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2433:16:22","memberName":"_requireOnlyRole","nodeType":"MemberAccess","referencedDeclaration":14512,"src":"2416:33:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$__$","typeString":"function (bytes32) view"}},"id":9228,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2416:67:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9229,"nodeType":"ExpressionStatement","src":"2416:67:22"},{"expression":{"arguments":[{"id":9233,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9220,"src":"2519:11:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9230,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"2493:10:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$12557_$","typeString":"type(library LibControl)"}},"id":9232,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2504:14:22","memberName":"_addSuperToken","nodeType":"MemberAccess","referencedDeclaration":12102,"src":"2493:25:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":9234,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2493:38:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9235,"nodeType":"ExpressionStatement","src":"2493:38:22"}]},"functionSelector":"22c3a21f","id":9237,"implemented":true,"kind":"function","modifiers":[],"name":"addSuperToken","nameLocation":"2362:13:22","nodeType":"FunctionDefinition","parameters":{"id":9221,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9220,"mutability":"mutable","name":"_superToken","nameLocation":"2384:11:22","nodeType":"VariableDeclaration","scope":9237,"src":"2376:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9219,"name":"address","nodeType":"ElementaryTypeName","src":"2376:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2375:21:22"},"returnParameters":{"id":9222,"nodeType":"ParameterList","parameters":[],"src":"2406:0:22"},"scope":9609,"src":"2353:185:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[10659],"body":{"id":9255,"nodeType":"Block","src":"2600:135:22","statements":[{"expression":{"arguments":[{"expression":{"id":9245,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14732,"src":"2644:16:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$14732_$","typeString":"type(library LibAccessControl)"}},"id":9246,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2661:15:22","memberName":"STRATEGIST_ROLE","nodeType":"MemberAccess","referencedDeclaration":14469,"src":"2644:32:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":9242,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14732,"src":"2610:16:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$14732_$","typeString":"type(library LibAccessControl)"}},"id":9244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2627:16:22","memberName":"_requireOnlyRole","nodeType":"MemberAccess","referencedDeclaration":14512,"src":"2610:33:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$__$","typeString":"function (bytes32) view"}},"id":9247,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2610:67:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9248,"nodeType":"ExpressionStatement","src":"2610:67:22"},{"expression":{"arguments":[{"id":9252,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9239,"src":"2716:11:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9249,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"2687:10:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$12557_$","typeString":"type(library LibControl)"}},"id":9251,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2698:17:22","memberName":"_removeSuperToken","nodeType":"MemberAccess","referencedDeclaration":12115,"src":"2687:28:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":9253,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2687:41:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9254,"nodeType":"ExpressionStatement","src":"2687:41:22"}]},"functionSelector":"83807889","id":9256,"implemented":true,"kind":"function","modifiers":[],"name":"removeSuperToken","nameLocation":"2553:16:22","nodeType":"FunctionDefinition","parameters":{"id":9240,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9239,"mutability":"mutable","name":"_superToken","nameLocation":"2578:11:22","nodeType":"VariableDeclaration","scope":9256,"src":"2570:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9238,"name":"address","nodeType":"ElementaryTypeName","src":"2570:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2569:21:22"},"returnParameters":{"id":9241,"nodeType":"ParameterList","parameters":[],"src":"2600:0:22"},"scope":9609,"src":"2544:191:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[10662],"body":{"id":9271,"nodeType":"Block","src":"2771:117:22","statements":[{"expression":{"arguments":[{"expression":{"id":9262,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14732,"src":"2815:16:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$14732_$","typeString":"type(library LibAccessControl)"}},"id":9263,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2832:15:22","memberName":"STRATEGIST_ROLE","nodeType":"MemberAccess","referencedDeclaration":14469,"src":"2815:32:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":9259,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14732,"src":"2781:16:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$14732_$","typeString":"type(library LibAccessControl)"}},"id":9261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2798:16:22","memberName":"_requireOnlyRole","nodeType":"MemberAccess","referencedDeclaration":14512,"src":"2781:33:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$__$","typeString":"function (bytes32) view"}},"id":9264,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2781:67:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9265,"nodeType":"ExpressionStatement","src":"2781:67:22"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9266,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"2858:10:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$12557_$","typeString":"type(library LibControl)"}},"id":9268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2869:10:22","memberName":"_toggleBPS","nodeType":"MemberAccess","referencedDeclaration":12128,"src":"2858:21:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":9269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2858:23:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9270,"nodeType":"ExpressionStatement","src":"2858:23:22"}]},"functionSelector":"703ab1b7","id":9272,"implemented":true,"kind":"function","modifiers":[],"name":"toggleBPS","nameLocation":"2750:9:22","nodeType":"FunctionDefinition","parameters":{"id":9257,"nodeType":"ParameterList","parameters":[],"src":"2759:2:22"},"returnParameters":{"id":9258,"nodeType":"ParameterList","parameters":[],"src":"2771:0:22"},"scope":9609,"src":"2741:147:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[10665],"body":{"id":9287,"nodeType":"Block","src":"2923:116:22","statements":[{"expression":{"arguments":[{"expression":{"id":9278,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14732,"src":"2967:16:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$14732_$","typeString":"type(library LibAccessControl)"}},"id":9279,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2984:15:22","memberName":"STRATEGIST_ROLE","nodeType":"MemberAccess","referencedDeclaration":14469,"src":"2967:32:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":9275,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14732,"src":"2933:16:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$14732_$","typeString":"type(library LibAccessControl)"}},"id":9277,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2950:16:22","memberName":"_requireOnlyRole","nodeType":"MemberAccess","referencedDeclaration":14512,"src":"2933:33:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$__$","typeString":"function (bytes32) view"}},"id":9280,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2933:67:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9281,"nodeType":"ExpressionStatement","src":"2933:67:22"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9282,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"3010:10:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$12557_$","typeString":"type(library LibControl)"}},"id":9284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3021:9:22","memberName":"_clearBPS","nodeType":"MemberAccess","referencedDeclaration":12168,"src":"3010:20:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":9285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3010:22:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9286,"nodeType":"ExpressionStatement","src":"3010:22:22"}]},"functionSelector":"795e3425","id":9288,"implemented":true,"kind":"function","modifiers":[],"name":"clearBPS","nameLocation":"2903:8:22","nodeType":"FunctionDefinition","parameters":{"id":9273,"nodeType":"ParameterList","parameters":[],"src":"2911:2:22"},"returnParameters":{"id":9274,"nodeType":"ParameterList","parameters":[],"src":"2923:0:22"},"scope":9609,"src":"2894:145:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[10680],"body":{"id":9383,"nodeType":"Block","src":"3783:723:22","statements":[{"expression":{"arguments":[{"expression":{"id":9307,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14732,"src":"3827:16:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$14732_$","typeString":"type(library LibAccessControl)"}},"id":9308,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3844:15:22","memberName":"STRATEGIST_ROLE","nodeType":"MemberAccess","referencedDeclaration":14469,"src":"3827:32:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":9304,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14732,"src":"3793:16:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$14732_$","typeString":"type(library LibAccessControl)"}},"id":9306,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3810:16:22","memberName":"_requireOnlyRole","nodeType":"MemberAccess","referencedDeclaration":14512,"src":"3793:33:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$__$","typeString":"function (bytes32) view"}},"id":9309,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3793:67:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9310,"nodeType":"ExpressionStatement","src":"3793:67:22"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":9327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":9321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9315,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9311,"name":"_bpss","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9292,"src":"3887:5:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint16_$dyn_memory_ptr","typeString":"uint16[] memory"}},"id":9312,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3893:6:22","memberName":"length","nodeType":"MemberAccess","src":"3887:12:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":9313,"name":"_flowRateLowerBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9295,"src":"3903:20:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint96_$dyn_memory_ptr","typeString":"uint96[] memory"}},"id":9314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3924:6:22","memberName":"length","nodeType":"MemberAccess","src":"3903:27:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3887:43:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9320,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9316,"name":"_bpss","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9292,"src":"3946:5:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint16_$dyn_memory_ptr","typeString":"uint16[] memory"}},"id":9317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3952:6:22","memberName":"length","nodeType":"MemberAccess","src":"3946:12:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":9318,"name":"_flowRateUpperBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9298,"src":"3962:20:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint96_$dyn_memory_ptr","typeString":"uint96[] memory"}},"id":9319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3983:6:22","memberName":"length","nodeType":"MemberAccess","src":"3962:27:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3946:43:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3887:102:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9326,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9322,"name":"_bpss","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9292,"src":"4005:5:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint16_$dyn_memory_ptr","typeString":"uint16[] memory"}},"id":9323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4011:6:22","memberName":"length","nodeType":"MemberAccess","src":"4005:12:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":9324,"name":"_tags","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9301,"src":"4021:5:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":9325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4027:6:22","memberName":"length","nodeType":"MemberAccess","src":"4021:12:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4005:28:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3887:146:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9331,"nodeType":"IfStatement","src":"3870:202:22","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":9328,"name":"ArrayLengthNotMatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11575,"src":"4051:19:22","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":9329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4051:21:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9330,"nodeType":"RevertStatement","src":"4044:28:22"}},{"body":{"id":9381,"nodeType":"Block","src":"4126:374:22","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9343,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9333,"src":"4144:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9344,"name":"_bpss","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9292,"src":"4148:5:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint16_$dyn_memory_ptr","typeString":"uint16[] memory"}},"id":9345,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4154:6:22","memberName":"length","nodeType":"MemberAccess","src":"4148:12:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":9346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4163:1:22","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4148:16:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4144:20:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9363,"nodeType":"IfStatement","src":"4140:169:22","trueBody":{"id":9362,"nodeType":"Block","src":"4166:143:22","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint96","typeString":"uint96"},"id":9357,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":9349,"name":"_flowRateUpperBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9298,"src":"4188:20:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint96_$dyn_memory_ptr","typeString":"uint96[] memory"}},"id":9351,"indexExpression":{"id":9350,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9333,"src":"4209:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4188:23:22","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"baseExpression":{"id":9352,"name":"_flowRateLowerBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9295,"src":"4215:20:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint96_$dyn_memory_ptr","typeString":"uint96[] memory"}},"id":9356,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9355,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9353,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9333,"src":"4236:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":9354,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4240:1:22","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4236:5:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4215:27:22","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"4188:54:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9361,"nodeType":"IfStatement","src":"4184:110:22","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":9358,"name":"InvalidFlowRateBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11585,"src":"4271:21:22","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":9359,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4271:23:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9360,"nodeType":"RevertStatement","src":"4264:30:22"}}]}},{"expression":{"arguments":[{"baseExpression":{"id":9367,"name":"_bpss","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9292,"src":"4359:5:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint16_$dyn_memory_ptr","typeString":"uint16[] memory"}},"id":9369,"indexExpression":{"id":9368,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9333,"src":"4365:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4359:8:22","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"baseExpression":{"id":9370,"name":"_flowRateLowerBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9295,"src":"4385:20:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint96_$dyn_memory_ptr","typeString":"uint96[] memory"}},"id":9372,"indexExpression":{"id":9371,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9333,"src":"4406:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4385:23:22","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"baseExpression":{"id":9373,"name":"_flowRateUpperBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9298,"src":"4426:20:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint96_$dyn_memory_ptr","typeString":"uint96[] memory"}},"id":9375,"indexExpression":{"id":9374,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9333,"src":"4447:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4426:23:22","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"baseExpression":{"id":9376,"name":"_tags","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9301,"src":"4467:5:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":9378,"indexExpression":{"id":9377,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9333,"src":"4473:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4467:8:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9364,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"4323:10:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$12557_$","typeString":"type(library LibControl)"}},"id":9366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4334:7:22","memberName":"_setBPS","nodeType":"MemberAccess","referencedDeclaration":12201,"src":"4323:18:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint16_$_t_uint96_$_t_uint96_$_t_uint256_$returns$__$","typeString":"function (uint16,uint96,uint96,uint256)"}},"id":9379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4323:166:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9380,"nodeType":"ExpressionStatement","src":"4323:166:22"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9336,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9333,"src":"4103:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":9337,"name":"_bpss","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9292,"src":"4107:5:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint16_$dyn_memory_ptr","typeString":"uint16[] memory"}},"id":9338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4113:6:22","memberName":"length","nodeType":"MemberAccess","src":"4107:12:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4103:16:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9382,"initializationExpression":{"assignments":[9333],"declarations":[{"constant":false,"id":9333,"mutability":"mutable","name":"i","nameLocation":"4096:1:22","nodeType":"VariableDeclaration","scope":9382,"src":"4088:9:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9332,"name":"uint256","nodeType":"ElementaryTypeName","src":"4088:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9335,"initialValue":{"hexValue":"30","id":9334,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4100:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4088:13:22"},"loopExpression":{"expression":{"id":9341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"4121:3:22","subExpression":{"id":9340,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9333,"src":"4121:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9342,"nodeType":"ExpressionStatement","src":"4121:3:22"},"nodeType":"ForStatement","src":"4083:417:22"}]},"documentation":{"id":9289,"nodeType":"StructuredDocumentation","src":"3045:547:22","text":" - flowRate must be asc value\n - flowRateUpperBound value of i must be equal flowRateLowerBound value of i+1\n eg:\n array | tag | bound | bps\n index | | lower | upper |\n ----------------------------------\n 0 | 1 | 0.001 | 0.002 | 4000 (40%)\n 1 | 2 | 0.002 | 0.003 | 2000 (20%)\n 2 | 3 | 0.003 | 0.005 | 500 (5%)\n how to call (eg):\n first call has tags related to 720p\n second call has tags related to 1080p"},"functionSelector":"cb857c80","id":9384,"implemented":true,"kind":"function","modifiers":[],"name":"setBPS","nameLocation":"3606:6:22","nodeType":"FunctionDefinition","parameters":{"id":9302,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9292,"mutability":"mutable","name":"_bpss","nameLocation":"3638:5:22","nodeType":"VariableDeclaration","scope":9384,"src":"3622:21:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint16_$dyn_memory_ptr","typeString":"uint16[]"},"typeName":{"baseType":{"id":9290,"name":"uint16","nodeType":"ElementaryTypeName","src":"3622:6:22","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"id":9291,"nodeType":"ArrayTypeName","src":"3622:8:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint16_$dyn_storage_ptr","typeString":"uint16[]"}},"visibility":"internal"},{"constant":false,"id":9295,"mutability":"mutable","name":"_flowRateLowerBounds","nameLocation":"3669:20:22","nodeType":"VariableDeclaration","scope":9384,"src":"3653:36:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint96_$dyn_memory_ptr","typeString":"uint96[]"},"typeName":{"baseType":{"id":9293,"name":"uint96","nodeType":"ElementaryTypeName","src":"3653:6:22","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"id":9294,"nodeType":"ArrayTypeName","src":"3653:8:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint96_$dyn_storage_ptr","typeString":"uint96[]"}},"visibility":"internal"},{"constant":false,"id":9298,"mutability":"mutable","name":"_flowRateUpperBounds","nameLocation":"3715:20:22","nodeType":"VariableDeclaration","scope":9384,"src":"3699:36:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint96_$dyn_memory_ptr","typeString":"uint96[]"},"typeName":{"baseType":{"id":9296,"name":"uint96","nodeType":"ElementaryTypeName","src":"3699:6:22","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"id":9297,"nodeType":"ArrayTypeName","src":"3699:8:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint96_$dyn_storage_ptr","typeString":"uint96[]"}},"visibility":"internal"},{"constant":false,"id":9301,"mutability":"mutable","name":"_tags","nameLocation":"3762:5:22","nodeType":"VariableDeclaration","scope":9384,"src":"3745:22:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":9299,"name":"uint256","nodeType":"ElementaryTypeName","src":"3745:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9300,"nodeType":"ArrayTypeName","src":"3745:9:22","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"3612:161:22"},"returnParameters":{"id":9303,"nodeType":"ParameterList","parameters":[],"src":"3783:0:22"},"scope":9609,"src":"3597:909:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[10687],"body":{"id":9405,"nodeType":"Block","src":"4566:126:22","statements":[{"expression":{"arguments":[{"expression":{"id":9394,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14732,"src":"4610:16:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$14732_$","typeString":"type(library LibAccessControl)"}},"id":9395,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4627:15:22","memberName":"STRATEGIST_ROLE","nodeType":"MemberAccess","referencedDeclaration":14469,"src":"4610:32:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":9391,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14732,"src":"4576:16:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$14732_$","typeString":"type(library LibAccessControl)"}},"id":9393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4593:16:22","memberName":"_requireOnlyRole","nodeType":"MemberAccess","referencedDeclaration":14512,"src":"4576:33:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$__$","typeString":"function (bytes32) view"}},"id":9396,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4576:67:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9397,"nodeType":"ExpressionStatement","src":"4576:67:22"},{"expression":{"arguments":[{"id":9401,"name":"_bps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9386,"src":"4673:4:22","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"id":9402,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9388,"src":"4679:5:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9398,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"4653:10:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$12557_$","typeString":"type(library LibControl)"}},"id":9400,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4664:8:22","memberName":"_setSBPS","nodeType":"MemberAccess","referencedDeclaration":12221,"src":"4653:19:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint16_$_t_address_$returns$__$","typeString":"function (uint16,address)"}},"id":9403,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4653:32:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9404,"nodeType":"ExpressionStatement","src":"4653:32:22"}]},"functionSelector":"d99d3b69","id":9406,"implemented":true,"kind":"function","modifiers":[],"name":"setSBPS","nameLocation":"4521:7:22","nodeType":"FunctionDefinition","parameters":{"id":9389,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9386,"mutability":"mutable","name":"_bps","nameLocation":"4536:4:22","nodeType":"VariableDeclaration","scope":9406,"src":"4529:11:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":9385,"name":"uint16","nodeType":"ElementaryTypeName","src":"4529:6:22","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":9388,"mutability":"mutable","name":"_user","nameLocation":"4550:5:22","nodeType":"VariableDeclaration","scope":9406,"src":"4542:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9387,"name":"address","nodeType":"ElementaryTypeName","src":"4542:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4528:28:22"},"returnParameters":{"id":9390,"nodeType":"ParameterList","parameters":[],"src":"4566:0:22"},"scope":9609,"src":"4512:180:22","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[10694],"body":{"id":9418,"nodeType":"Block","src":"4788:62:22","statements":[{"expression":{"arguments":[{"id":9415,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9408,"src":"4831:11:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9413,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"4805:10:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$12557_$","typeString":"type(library LibControl)"}},"id":9414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4816:14:22","memberName":"_getFeeBalance","nodeType":"MemberAccess","referencedDeclaration":12235,"src":"4805:25:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":9416,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4805:38:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9412,"id":9417,"nodeType":"Return","src":"4798:45:22"}]},"functionSelector":"c78f6803","id":9419,"implemented":true,"kind":"function","modifiers":[],"name":"getFeeBalance","nameLocation":"4707:13:22","nodeType":"FunctionDefinition","parameters":{"id":9409,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9408,"mutability":"mutable","name":"_superToken","nameLocation":"4738:11:22","nodeType":"VariableDeclaration","scope":9419,"src":"4730:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9407,"name":"address","nodeType":"ElementaryTypeName","src":"4730:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4720:35:22"},"returnParameters":{"id":9412,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9411,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9419,"src":"4779:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9410,"name":"uint256","nodeType":"ElementaryTypeName","src":"4779:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4778:9:22"},"scope":9609,"src":"4698:152:22","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[10709],"body":{"id":9440,"nodeType":"Block","src":"4998:71:22","statements":[{"expression":{"arguments":[{"id":9436,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9421,"src":"5042:11:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9437,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9423,"src":"5055:6:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9434,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"5015:10:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$12557_$","typeString":"type(library LibControl)"}},"id":9435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5026:15:22","memberName":"_getControlData","nodeType":"MemberAccess","referencedDeclaration":12301,"src":"5015:26:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$returns$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"function (address,uint256) view returns (address,uint256,uint256,uint256)"}},"id":9438,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5015:47:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"tuple(address,uint256,uint256,uint256)"}},"functionReturnParameters":9433,"id":9439,"nodeType":"Return","src":"5008:54:22"}]},"functionSelector":"0b72660d","id":9441,"implemented":true,"kind":"function","modifiers":[],"name":"getControlData","nameLocation":"4865:14:22","nodeType":"FunctionDefinition","parameters":{"id":9424,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9421,"mutability":"mutable","name":"_superToken","nameLocation":"4897:11:22","nodeType":"VariableDeclaration","scope":9441,"src":"4889:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9420,"name":"address","nodeType":"ElementaryTypeName","src":"4889:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9423,"mutability":"mutable","name":"_nonce","nameLocation":"4926:6:22","nodeType":"VariableDeclaration","scope":9441,"src":"4918:14:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9422,"name":"uint256","nodeType":"ElementaryTypeName","src":"4918:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4879:59:22"},"returnParameters":{"id":9433,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9426,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9441,"src":"4962:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9425,"name":"address","nodeType":"ElementaryTypeName","src":"4962:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9428,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9441,"src":"4971:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9427,"name":"uint256","nodeType":"ElementaryTypeName","src":"4971:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9430,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9441,"src":"4980:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9429,"name":"uint256","nodeType":"ElementaryTypeName","src":"4980:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9432,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9441,"src":"4989:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9431,"name":"uint256","nodeType":"ElementaryTypeName","src":"4989:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4961:36:22"},"scope":9609,"src":"4856:213:22","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[10716],"body":{"id":9453,"nodeType":"Block","src":"5170:60:22","statements":[{"expression":{"arguments":[{"id":9450,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9443,"src":"5211:11:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9448,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"5187:10:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$12557_$","typeString":"type(library LibControl)"}},"id":9449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5198:12:22","memberName":"_getNewNonce","nodeType":"MemberAccess","referencedDeclaration":12052,"src":"5187:23:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":9451,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5187:36:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9447,"id":9452,"nodeType":"Return","src":"5180:43:22"}]},"functionSelector":"7f69bcaf","id":9454,"implemented":true,"kind":"function","modifiers":[],"name":"getNewControlNonce","nameLocation":"5084:18:22","nodeType":"FunctionDefinition","parameters":{"id":9444,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9443,"mutability":"mutable","name":"_superToken","nameLocation":"5120:11:22","nodeType":"VariableDeclaration","scope":9454,"src":"5112:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9442,"name":"address","nodeType":"ElementaryTypeName","src":"5112:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5102:35:22"},"returnParameters":{"id":9447,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9446,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9454,"src":"5161:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9445,"name":"uint256","nodeType":"ElementaryTypeName","src":"5161:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5160:9:22"},"scope":9609,"src":"5075:155:22","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[10721],"body":{"id":9463,"nodeType":"Block","src":"5301:59:22","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9459,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"5318:10:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$12557_$","typeString":"type(library LibControl)"}},"id":9460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5329:22:22","memberName":"_getMinimumEndDuration","nodeType":"MemberAccess","referencedDeclaration":12311,"src":"5318:33:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":9461,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5318:35:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9458,"id":9462,"nodeType":"Return","src":"5311:42:22"}]},"functionSelector":"6812a173","id":9464,"implemented":true,"kind":"function","modifiers":[],"name":"getMinimumEndDuration","nameLocation":"5245:21:22","nodeType":"FunctionDefinition","parameters":{"id":9455,"nodeType":"ParameterList","parameters":[],"src":"5266:2:22"},"returnParameters":{"id":9458,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9457,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9464,"src":"5292:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9456,"name":"uint256","nodeType":"ElementaryTypeName","src":"5292:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5291:9:22"},"scope":9609,"src":"5236:124:22","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[10726],"body":{"id":9473,"nodeType":"Block","src":"5428:56:22","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9469,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"5445:10:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$12557_$","typeString":"type(library LibControl)"}},"id":9470,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5456:19:22","memberName":"_getMinimumLifespan","nodeType":"MemberAccess","referencedDeclaration":12321,"src":"5445:30:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":9471,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5445:32:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9468,"id":9472,"nodeType":"Return","src":"5438:39:22"}]},"functionSelector":"ca70e1d5","id":9474,"implemented":true,"kind":"function","modifiers":[],"name":"getMinimumLifespan","nameLocation":"5375:18:22","nodeType":"FunctionDefinition","parameters":{"id":9465,"nodeType":"ParameterList","parameters":[],"src":"5393:2:22"},"returnParameters":{"id":9468,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9467,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9474,"src":"5419:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9466,"name":"uint256","nodeType":"ElementaryTypeName","src":"5419:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5418:9:22"},"scope":9609,"src":"5366:118:22","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[10731],"body":{"id":9483,"nodeType":"Block","src":"5561:65:22","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9479,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"5578:10:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$12557_$","typeString":"type(library LibControl)"}},"id":9480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5589:28:22","memberName":"_getSTBufferDurationInSecond","nodeType":"MemberAccess","referencedDeclaration":12331,"src":"5578:39:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":9481,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5578:41:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9478,"id":9482,"nodeType":"Return","src":"5571:48:22"}]},"functionSelector":"7ea195ad","id":9484,"implemented":true,"kind":"function","modifiers":[],"name":"getSTBufferDurationInSecond","nameLocation":"5499:27:22","nodeType":"FunctionDefinition","parameters":{"id":9475,"nodeType":"ParameterList","parameters":[],"src":"5526:2:22"},"returnParameters":{"id":9478,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9477,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9484,"src":"5552:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9476,"name":"uint256","nodeType":"ElementaryTypeName","src":"5552:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5551:9:22"},"scope":9609,"src":"5490:136:22","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[10738],"body":{"id":9496,"nodeType":"Block","src":"5728:71:22","statements":[{"expression":{"arguments":[{"id":9493,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9486,"src":"5780:11:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9491,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"5745:10:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$12557_$","typeString":"type(library LibControl)"}},"id":9492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5756:23:22","memberName":"_isSuperTokensSupported","nodeType":"MemberAccess","referencedDeclaration":12345,"src":"5745:34:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":9494,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5745:47:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":9490,"id":9495,"nodeType":"Return","src":"5738:54:22"}]},"functionSelector":"acff4744","id":9497,"implemented":true,"kind":"function","modifiers":[],"name":"isSuperTokensSupported","nameLocation":"5641:22:22","nodeType":"FunctionDefinition","parameters":{"id":9487,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9486,"mutability":"mutable","name":"_superToken","nameLocation":"5681:11:22","nodeType":"VariableDeclaration","scope":9497,"src":"5673:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9485,"name":"address","nodeType":"ElementaryTypeName","src":"5673:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5663:35:22"},"returnParameters":{"id":9490,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9489,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9497,"src":"5722:4:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9488,"name":"bool","nodeType":"ElementaryTypeName","src":"5722:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5721:6:22"},"scope":9609,"src":"5632:167:22","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[10743],"body":{"id":9506,"nodeType":"Block","src":"5858:50:22","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9502,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"5875:10:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$12557_$","typeString":"type(library LibControl)"}},"id":9503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5886:13:22","memberName":"_isBPSEnabled","nodeType":"MemberAccess","referencedDeclaration":12355,"src":"5875:24:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":9504,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5875:26:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":9501,"id":9505,"nodeType":"Return","src":"5868:33:22"}]},"functionSelector":"a86c8c7c","id":9507,"implemented":true,"kind":"function","modifiers":[],"name":"isBPSEnabled","nameLocation":"5814:12:22","nodeType":"FunctionDefinition","parameters":{"id":9498,"nodeType":"ParameterList","parameters":[],"src":"5826:2:22"},"returnParameters":{"id":9501,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9500,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9507,"src":"5852:4:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9499,"name":"bool","nodeType":"ElementaryTypeName","src":"5852:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5851:6:22"},"scope":9609,"src":"5805:103:22","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[10748],"body":{"id":9516,"nodeType":"Block","src":"5968:48:22","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9512,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"5985:10:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$12557_$","typeString":"type(library LibControl)"}},"id":9513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5996:11:22","memberName":"_getBPSSize","nodeType":"MemberAccess","referencedDeclaration":12367,"src":"5985:22:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":9514,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5985:24:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9511,"id":9515,"nodeType":"Return","src":"5978:31:22"}]},"functionSelector":"a8771ab9","id":9517,"implemented":true,"kind":"function","modifiers":[],"name":"getBPSSize","nameLocation":"5923:10:22","nodeType":"FunctionDefinition","parameters":{"id":9508,"nodeType":"ParameterList","parameters":[],"src":"5933:2:22"},"returnParameters":{"id":9511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9510,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9517,"src":"5959:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9509,"name":"uint256","nodeType":"ElementaryTypeName","src":"5959:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5958:9:22"},"scope":9609,"src":"5914:102:22","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[10759],"body":{"id":9533,"nodeType":"Block","src":"6117:52:22","statements":[{"expression":{"arguments":[{"id":9530,"name":"_tag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9519,"src":"6157:4:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9528,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"6134:10:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$12557_$","typeString":"type(library LibControl)"}},"id":9529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6145:11:22","memberName":"_getBPSData","nodeType":"MemberAccess","referencedDeclaration":12430,"src":"6134:22:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint16_$_t_uint96_$_t_uint96_$","typeString":"function (uint256) view returns (uint16,uint96,uint96)"}},"id":9531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6134:28:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint16_$_t_uint96_$_t_uint96_$","typeString":"tuple(uint16,uint96,uint96)"}},"functionReturnParameters":9527,"id":9532,"nodeType":"Return","src":"6127:35:22"}]},"functionSelector":"6ab1c734","id":9534,"implemented":true,"kind":"function","modifiers":[],"name":"getBPSData","nameLocation":"6031:10:22","nodeType":"FunctionDefinition","parameters":{"id":9520,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9519,"mutability":"mutable","name":"_tag","nameLocation":"6059:4:22","nodeType":"VariableDeclaration","scope":9534,"src":"6051:12:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9518,"name":"uint256","nodeType":"ElementaryTypeName","src":"6051:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6041:28:22"},"returnParameters":{"id":9527,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9522,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9534,"src":"6093:6:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":9521,"name":"uint16","nodeType":"ElementaryTypeName","src":"6093:6:22","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":9524,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9534,"src":"6101:6:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":9523,"name":"uint96","nodeType":"ElementaryTypeName","src":"6101:6:22","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":9526,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9534,"src":"6109:6:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":9525,"name":"uint96","nodeType":"ElementaryTypeName","src":"6109:6:22","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"src":"6092:24:22"},"scope":9609,"src":"6022:147:22","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[10766],"body":{"id":9546,"nodeType":"Block","src":"6238:50:22","statements":[{"expression":{"arguments":[{"id":9543,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9536,"src":"6275:5:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9541,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"6255:10:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$12557_$","typeString":"type(library LibControl)"}},"id":9542,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6266:8:22","memberName":"_getSBPS","nodeType":"MemberAccess","referencedDeclaration":12444,"src":"6255:19:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint16_$","typeString":"function (address) view returns (uint16)"}},"id":9544,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6255:26:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"functionReturnParameters":9540,"id":9545,"nodeType":"Return","src":"6248:33:22"}]},"functionSelector":"2357f2cf","id":9547,"implemented":true,"kind":"function","modifiers":[],"name":"getSBPS","nameLocation":"6184:7:22","nodeType":"FunctionDefinition","parameters":{"id":9537,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9536,"mutability":"mutable","name":"_user","nameLocation":"6200:5:22","nodeType":"VariableDeclaration","scope":9547,"src":"6192:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9535,"name":"address","nodeType":"ElementaryTypeName","src":"6192:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6191:15:22"},"returnParameters":{"id":9540,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9539,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9547,"src":"6230:6:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":9538,"name":"uint16","nodeType":"ElementaryTypeName","src":"6230:6:22","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"6229:8:22"},"scope":9609,"src":"6175:113:22","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[10775],"body":{"id":9562,"nodeType":"Block","src":"6423:87:22","statements":[{"expression":{"arguments":[{"id":9558,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9549,"src":"6477:11:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9559,"name":"_newFlowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9551,"src":"6490:12:22","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_int96","typeString":"int96"}],"expression":{"id":9556,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"6440:10:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$12557_$","typeString":"type(library LibControl)"}},"id":9557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6451:25:22","memberName":"_getNewBufferedAppBalance","nodeType":"MemberAccess","referencedDeclaration":12495,"src":"6440:36:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_int96_$returns$_t_uint256_$","typeString":"function (address,int96) view returns (uint256)"}},"id":9560,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6440:63:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9555,"id":9561,"nodeType":"Return","src":"6433:70:22"}]},"functionSelector":"4ee43e46","id":9563,"implemented":true,"kind":"function","modifiers":[],"name":"getNewBufferedAppBalance","nameLocation":"6303:24:22","nodeType":"FunctionDefinition","parameters":{"id":9552,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9549,"mutability":"mutable","name":"_superToken","nameLocation":"6345:11:22","nodeType":"VariableDeclaration","scope":9563,"src":"6337:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9548,"name":"address","nodeType":"ElementaryTypeName","src":"6337:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9551,"mutability":"mutable","name":"_newFlowRate","nameLocation":"6372:12:22","nodeType":"VariableDeclaration","scope":9563,"src":"6366:18:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":9550,"name":"int96","nodeType":"ElementaryTypeName","src":"6366:5:22","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"6327:63:22"},"returnParameters":{"id":9555,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9554,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9563,"src":"6414:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9553,"name":"uint256","nodeType":"ElementaryTypeName","src":"6414:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6413:9:22"},"scope":9609,"src":"6294:216:22","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[10784],"body":{"id":9578,"nodeType":"Block","src":"6648:83:22","statements":[{"expression":{"arguments":[{"id":9574,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9565,"src":"6698:11:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9575,"name":"_newFlowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9567,"src":"6711:12:22","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_int96","typeString":"int96"}],"expression":{"id":9572,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"6665:10:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$12557_$","typeString":"type(library LibControl)"}},"id":9573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6676:21:22","memberName":"_isNewFlowRateAllowed","nodeType":"MemberAccess","referencedDeclaration":12524,"src":"6665:32:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_int96_$returns$_t_bool_$","typeString":"function (address,int96) view returns (bool)"}},"id":9576,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6665:59:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":9571,"id":9577,"nodeType":"Return","src":"6658:66:22"}]},"functionSelector":"c467cddc","id":9579,"implemented":true,"kind":"function","modifiers":[],"name":"isNewFlowRateAllowed","nameLocation":"6535:20:22","nodeType":"FunctionDefinition","parameters":{"id":9568,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9565,"mutability":"mutable","name":"_superToken","nameLocation":"6573:11:22","nodeType":"VariableDeclaration","scope":9579,"src":"6565:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9564,"name":"address","nodeType":"ElementaryTypeName","src":"6565:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9567,"mutability":"mutable","name":"_newFlowRate","nameLocation":"6600:12:22","nodeType":"VariableDeclaration","scope":9579,"src":"6594:18:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":9566,"name":"int96","nodeType":"ElementaryTypeName","src":"6594:5:22","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"6555:63:22"},"returnParameters":{"id":9571,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9570,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9579,"src":"6642:4:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9569,"name":"bool","nodeType":"ElementaryTypeName","src":"6642:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6641:6:22"},"scope":9609,"src":"6526:205:22","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[10793],"body":{"id":9594,"nodeType":"Block","src":"6859:68:22","statements":[{"expression":{"arguments":[{"id":9590,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9581,"src":"6901:5:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9591,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9583,"src":"6908:11:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9588,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"6876:10:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$12557_$","typeString":"type(library LibControl)"}},"id":9589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6887:13:22","memberName":"_getAssetUser","nodeType":"MemberAccess","referencedDeclaration":12542,"src":"6876:24:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":9592,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6876:44:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9587,"id":9593,"nodeType":"Return","src":"6869:51:22"}]},"functionSelector":"be835747","id":9595,"implemented":true,"kind":"function","modifiers":[],"name":"getAssetUser","nameLocation":"6756:12:22","nodeType":"FunctionDefinition","parameters":{"id":9584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9581,"mutability":"mutable","name":"_user","nameLocation":"6786:5:22","nodeType":"VariableDeclaration","scope":9595,"src":"6778:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9580,"name":"address","nodeType":"ElementaryTypeName","src":"6778:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9583,"mutability":"mutable","name":"_superToken","nameLocation":"6809:11:22","nodeType":"VariableDeclaration","scope":9595,"src":"6801:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9582,"name":"address","nodeType":"ElementaryTypeName","src":"6801:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6768:58:22"},"returnParameters":{"id":9587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9586,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9595,"src":"6850:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9585,"name":"uint256","nodeType":"ElementaryTypeName","src":"6850:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6849:9:22"},"scope":9609,"src":"6747:180:22","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[10800],"body":{"id":9607,"nodeType":"Block","src":"7023:62:22","statements":[{"expression":{"arguments":[{"id":9604,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9597,"src":"7066:11:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9602,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"7040:10:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$12557_$","typeString":"type(library LibControl)"}},"id":9603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7051:14:22","memberName":"_getAssetTotal","nodeType":"MemberAccess","referencedDeclaration":12556,"src":"7040:25:22","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":9605,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7040:38:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9601,"id":9606,"nodeType":"Return","src":"7033:45:22"}]},"functionSelector":"b2419083","id":9608,"implemented":true,"kind":"function","modifiers":[],"name":"getAssetTotal","nameLocation":"6942:13:22","nodeType":"FunctionDefinition","parameters":{"id":9598,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9597,"mutability":"mutable","name":"_superToken","nameLocation":"6973:11:22","nodeType":"VariableDeclaration","scope":9608,"src":"6965:19:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9596,"name":"address","nodeType":"ElementaryTypeName","src":"6965:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6955:35:22"},"returnParameters":{"id":9601,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9600,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9608,"src":"7014:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9599,"name":"uint256","nodeType":"ElementaryTypeName","src":"7014:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7013:9:22"},"scope":9609,"src":"6933:152:22","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":9610,"src":"391:6696:22","usedErrors":[11573,11575,11577,11581,11583,11585,11587,11591]}],"src":"37:7051:22"},"id":22},"contracts/facets/core/Flow.sol":{"ast":{"absolutePath":"contracts/facets/core/Flow.sol","exportedSymbols":{"ArrayLengthNotMatch":[11575],"Flow":[10290],"IAutomate":[15534],"IFlow":[10931],"IOpsProxyFactory":[15572],"ISuperToken":[6947],"ITaskTreasuryUpgradable":[15562],"LibAutomate":[11560],"LibControl":[12557],"LibFlow":[13572],"LibSession":[14179],"Module":[15488],"ModuleData":[15496],"SessionNotStarted":[13587],"SuperTokenV1Library":[5077],"TooEarly":[9630]},"id":10291,"license":"BUSL-1.1","nodeType":"SourceUnit","nodes":[{"id":9611,"literals":["solidity","^","0.8",".9"],"nodeType":"PragmaDirective","src":"37:23:23"},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol","file":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol","id":9613,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10291,"sourceUnit":7600,"src":"62:115:23","symbolAliases":[{"foreign":{"id":9612,"name":"ISuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6947,"src":"70:11:23","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol","file":"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol","id":9615,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10291,"sourceUnit":5078,"src":"178:114:23","symbolAliases":[{"foreign":{"id":9614,"name":"SuperTokenV1Library","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5077,"src":"186:19:23","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/libraries/core/LibAutomate.sol","file":"../../libraries/core/LibAutomate.sol","id":9617,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10291,"sourceUnit":11561,"src":"294:65:23","symbolAliases":[{"foreign":{"id":9616,"name":"LibAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11560,"src":"302:11:23","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/libraries/core/LibControl.sol","file":"../../libraries/core/LibControl.sol","id":9620,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10291,"sourceUnit":12558,"src":"360:84:23","symbolAliases":[{"foreign":{"id":9618,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"368:10:23","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":9619,"name":"ArrayLengthNotMatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11575,"src":"380:19:23","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/libraries/core/LibSession.sol","file":"../../libraries/core/LibSession.sol","id":9623,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10291,"sourceUnit":14180,"src":"445:82:23","symbolAliases":[{"foreign":{"id":9621,"name":"LibSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14179,"src":"453:10:23","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":9622,"name":"SessionNotStarted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13587,"src":"465:17:23","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/libraries/core/LibFlow.sol","file":"../../libraries/core/LibFlow.sol","id":9625,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10291,"sourceUnit":13573,"src":"528:57:23","symbolAliases":[{"foreign":{"id":9624,"name":"LibFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13572,"src":"536:7:23","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/core/IFlow.sol","file":"../../interfaces/core/IFlow.sol","id":9627,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10291,"sourceUnit":10932,"src":"586:54:23","symbolAliases":[{"foreign":{"id":9626,"name":"IFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10931,"src":"594:5:23","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/services/gelato/Types.sol","file":"../../services/gelato/Types.sol","id":9628,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10291,"sourceUnit":15573,"src":"642:41:23","symbolAliases":[],"unitAlias":""},{"errorSelector":"085de625","id":9630,"name":"TooEarly","nameLocation":"691:8:23","nodeType":"ErrorDefinition","parameters":{"id":9629,"nodeType":"ParameterList","parameters":[],"src":"699:2:23"},"src":"685:17:23"},{"abstract":false,"baseContracts":[{"baseName":{"id":9631,"name":"IFlow","nameLocations":["721:5:23"],"nodeType":"IdentifierPath","referencedDeclaration":10931,"src":"721:5:23"},"id":9632,"nodeType":"InheritanceSpecifier","src":"721:5:23"}],"canonicalName":"Flow","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":10290,"linearizedBaseContracts":[10290,10931],"name":"Flow","nameLocation":"713:4:23","nodeType":"ContractDefinition","nodes":[{"global":false,"id":9636,"libraryName":{"id":9633,"name":"SuperTokenV1Library","nameLocations":["739:19:23"],"nodeType":"IdentifierPath","referencedDeclaration":5077,"src":"739:19:23"},"nodeType":"UsingForDirective","src":"733:42:23","typeName":{"id":9635,"nodeType":"UserDefinedTypeName","pathNode":{"id":9634,"name":"ISuperToken","nameLocations":["763:11:23"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"763:11:23"},"referencedDeclaration":6947,"src":"763:11:23","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}},{"baseFunctions":[10812],"body":{"id":9967,"nodeType":"Block","src":"1326:3578:23","statements":[{"expression":{"arguments":[{"id":9649,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9641,"src":"1365:11:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9646,"name":"LibFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13572,"src":"1336:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibFlow_$13572_$","typeString":"type(library LibFlow)"}},"id":9648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1344:20:23","memberName":"_requireNoActiveFlow","nodeType":"MemberAccess","referencedDeclaration":12763,"src":"1336:28:23","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":9650,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1336:41:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9651,"nodeType":"ExpressionStatement","src":"1336:41:23"},{"expression":{"arguments":[{"expression":{"id":9655,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1567:3:23","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1571:6:23","memberName":"sender","nodeType":"MemberAccess","src":"1567:10:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9657,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9641,"src":"1579:11:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9652,"name":"LibFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13572,"src":"1538:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibFlow_$13572_$","typeString":"type(library LibFlow)"}},"id":9654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1546:20:23","memberName":"_setRemainingBalance","nodeType":"MemberAccess","referencedDeclaration":12846,"src":"1538:28:23","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":9658,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1538:53:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9659,"nodeType":"ExpressionStatement","src":"1538:53:23"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9660,"name":"LibAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11560,"src":"1616:11:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAutomate_$11560_$","typeString":"type(library LibAutomate)"}},"id":9662,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1628:34:23","memberName":"_requireSufficientAppGelatoBalance","nodeType":"MemberAccess","referencedDeclaration":11393,"src":"1616:46:23","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":9663,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1616:48:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9664,"nodeType":"ExpressionStatement","src":"1616:48:23"},{"expression":{"arguments":[{"id":9668,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9641,"src":"1713:11:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9665,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"1674:10:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$12557_$","typeString":"type(library LibControl)"}},"id":9667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1685:27:23","memberName":"_requireSuperTokenSupported","nodeType":"MemberAccess","referencedDeclaration":12003,"src":"1674:38:23","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":9669,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1674:51:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9670,"nodeType":"ExpressionStatement","src":"1674:51:23"},{"assignments":[9675],"declarations":[{"constant":false,"id":9675,"mutability":"mutable","name":"sSession","nameLocation":"1769:8:23","nodeType":"VariableDeclaration","scope":9967,"src":"1735:42:23","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$13634_storage_ptr","typeString":"struct LibSession.StorageSession"},"typeName":{"id":9674,"nodeType":"UserDefinedTypeName","pathNode":{"id":9673,"name":"LibSession.StorageSession","nameLocations":["1735:10:23","1746:14:23"],"nodeType":"IdentifierPath","referencedDeclaration":13634,"src":"1735:25:23"},"referencedDeclaration":13634,"src":"1735:25:23","typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$13634_storage_ptr","typeString":"struct LibSession.StorageSession"}},"visibility":"internal"}],"id":9679,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9676,"name":"LibSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14179,"src":"1780:10:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibSession_$14179_$","typeString":"type(library LibSession)"}},"id":9677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1804:15:23","memberName":"_storageSession","nodeType":"MemberAccess","referencedDeclaration":13646,"src":"1780:39:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageSession_$13634_storage_ptr_$","typeString":"function () pure returns (struct LibSession.StorageSession storage pointer)"}},"id":9678,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1780:41:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$13634_storage_ptr","typeString":"struct LibSession.StorageSession storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"1735:86:23"},{"assignments":[9681],"declarations":[{"constant":false,"id":9681,"mutability":"mutable","name":"activeSessionNonce","nameLocation":"1839:18:23","nodeType":"VariableDeclaration","scope":9967,"src":"1831:26:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9680,"name":"uint256","nodeType":"ElementaryTypeName","src":"1831:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9687,"initialValue":{"arguments":[{"id":9684,"name":"_receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9639,"src":"1901:9:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9685,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9641,"src":"1924:11:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9682,"name":"LibSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14179,"src":"1860:10:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibSession_$14179_$","typeString":"type(library LibSession)"}},"id":9683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1871:16:23","memberName":"_getCurrentNonce","nodeType":"MemberAccess","referencedDeclaration":13985,"src":"1860:27:23","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":9686,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1860:85:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1831:114:23"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"id":9688,"name":"sSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9675,"src":"1973:8:23","typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$13634_storage_ptr","typeString":"struct LibSession.StorageSession storage pointer"}},"id":9689,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1995:13:23","memberName":"sessionRecord","nodeType":"MemberAccess","referencedDeclaration":13628,"src":"1973:35:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_SessionRecord_$13613_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibSession.SessionRecord storage ref)))"}},"id":9691,"indexExpression":{"id":9690,"name":"_receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9639,"src":"2009:9:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1973:46:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_SessionRecord_$13613_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibSession.SessionRecord storage ref))"}},"id":9693,"indexExpression":{"id":9692,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9641,"src":"2020:11:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1973:59:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_SessionRecord_$13613_storage_$","typeString":"mapping(uint256 => struct LibSession.SessionRecord storage ref)"}},"id":9695,"indexExpression":{"id":9694,"name":"activeSessionNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9681,"src":"2033:18:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1973:79:23","typeDescriptions":{"typeIdentifier":"t_struct$_SessionRecord_$13613_storage","typeString":"struct LibSession.SessionRecord storage ref"}},"id":9696,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2070:14:23","memberName":"timestampStart","nodeType":"MemberAccess","referencedDeclaration":13610,"src":"1973:111:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":9697,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2088:1:23","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1973:116:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9702,"nodeType":"IfStatement","src":"1956:170:23","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":9699,"name":"SessionNotStarted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13587,"src":"2107:17:23","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":9700,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2107:19:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9701,"nodeType":"RevertStatement","src":"2100:26:23"}},{"assignments":[9707],"declarations":[{"constant":false,"id":9707,"mutability":"mutable","name":"sFlow","nameLocation":"2165:5:23","nodeType":"VariableDeclaration","scope":9967,"src":"2137:33:23","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$12632_storage_ptr","typeString":"struct LibFlow.StorageFlow"},"typeName":{"id":9706,"nodeType":"UserDefinedTypeName","pathNode":{"id":9705,"name":"LibFlow.StorageFlow","nameLocations":["2137:7:23","2145:11:23"],"nodeType":"IdentifierPath","referencedDeclaration":12632,"src":"2137:19:23"},"referencedDeclaration":12632,"src":"2137:19:23","typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$12632_storage_ptr","typeString":"struct LibFlow.StorageFlow"}},"visibility":"internal"}],"id":9711,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9708,"name":"LibFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13572,"src":"2173:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibFlow_$13572_$","typeString":"type(library LibFlow)"}},"id":9709,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2181:12:23","memberName":"_storageFlow","nodeType":"MemberAccess","referencedDeclaration":12644,"src":"2173:20:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$12632_storage_ptr_$","typeString":"function () pure returns (struct LibFlow.StorageFlow storage pointer)"}},"id":9710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2173:22:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$12632_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2137:58:23"},{"assignments":[9713],"declarations":[{"constant":false,"id":9713,"mutability":"mutable","name":"flowRate","nameLocation":"2211:8:23","nodeType":"VariableDeclaration","scope":9967,"src":"2205:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":9712,"name":"int96","nodeType":"ElementaryTypeName","src":"2205:5:23","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"id":9723,"initialValue":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"id":9714,"name":"sSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9675,"src":"2222:8:23","typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$13634_storage_ptr","typeString":"struct LibSession.StorageSession storage pointer"}},"id":9715,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2240:13:23","memberName":"sessionRecord","nodeType":"MemberAccess","referencedDeclaration":13628,"src":"2222:31:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_SessionRecord_$13613_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibSession.SessionRecord storage ref)))"}},"id":9717,"indexExpression":{"id":9716,"name":"_receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9639,"src":"2254:9:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2222:42:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_SessionRecord_$13613_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibSession.SessionRecord storage ref))"}},"id":9719,"indexExpression":{"id":9718,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9641,"src":"2265:11:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2222:55:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_SessionRecord_$13613_storage_$","typeString":"mapping(uint256 => struct LibSession.SessionRecord storage ref)"}},"id":9721,"indexExpression":{"id":9720,"name":"activeSessionNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9681,"src":"2278:18:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2222:75:23","typeDescriptions":{"typeIdentifier":"t_struct$_SessionRecord_$13613_storage","typeString":"struct LibSession.SessionRecord storage ref"}},"id":9722,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2311:17:23","memberName":"effectiveFlowRate","nodeType":"MemberAccess","referencedDeclaration":13606,"src":"2222:106:23","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"VariableDeclarationStatement","src":"2205:123:23"},{"expression":{"arguments":[{"id":9727,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9641,"src":"2380:11:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9728,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9713,"src":"2393:8:23","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_int96","typeString":"int96"}],"expression":{"id":9724,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"2338:10:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$12557_$","typeString":"type(library LibControl)"}},"id":9726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2349:30:23","memberName":"_requireSufficientAppSTBalance","nodeType":"MemberAccess","referencedDeclaration":12021,"src":"2338:41:23","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_int96_$returns$__$","typeString":"function (address,int96) view"}},"id":9729,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2338:64:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9730,"nodeType":"ExpressionStatement","src":"2338:64:23"},{"assignments":[9732],"declarations":[{"constant":false,"id":9732,"mutability":"mutable","name":"scheduledLifespan","nameLocation":"2420:17:23","nodeType":"VariableDeclaration","scope":9967,"src":"2412:25:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9731,"name":"uint256","nodeType":"ElementaryTypeName","src":"2412:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9741,"initialValue":{"arguments":[{"expression":{"id":9735,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2483:3:23","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2487:6:23","memberName":"sender","nodeType":"MemberAccess","src":"2483:10:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9737,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9641,"src":"2507:11:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9738,"name":"_lifespan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9643,"src":"2532:9:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9739,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9713,"src":"2555:8:23","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_int96","typeString":"int96"}],"expression":{"id":9733,"name":"LibFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13572,"src":"2440:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibFlow_$13572_$","typeString":"type(library LibFlow)"}},"id":9734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2448:21:23","memberName":"_getScheduledLifespan","nodeType":"MemberAccess","referencedDeclaration":12960,"src":"2440:29:23","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$_t_int96_$returns$_t_uint256_$","typeString":"function (address,address,uint256,int96) view returns (uint256)"}},"id":9740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2440:133:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2412:161:23"},{"assignments":[9743],"declarations":[{"constant":false,"id":9743,"mutability":"mutable","name":"newFlowNonce","nameLocation":"2670:12:23","nodeType":"VariableDeclaration","scope":9967,"src":"2662:20:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9742,"name":"uint256","nodeType":"ElementaryTypeName","src":"2662:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9750,"initialValue":{"arguments":[{"expression":{"id":9746,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2706:3:23","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9747,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2710:6:23","memberName":"sender","nodeType":"MemberAccess","src":"2706:10:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9748,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9641,"src":"2718:11:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9744,"name":"LibFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13572,"src":"2685:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibFlow_$13572_$","typeString":"type(library LibFlow)"}},"id":9745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2693:12:23","memberName":"_getNewNonce","nodeType":"MemberAccess","referencedDeclaration":13258,"src":"2685:20:23","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":9749,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2685:45:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2662:68:23"},{"expression":{"id":9763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"id":9751,"name":"sFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9707,"src":"2741:5:23","typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$12632_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":9757,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2756:10:23","memberName":"flowRecord","nodeType":"MemberAccess","referencedDeclaration":12621,"src":"2741:25:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref)))"}},"id":9758,"indexExpression":{"expression":{"id":9753,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2767:3:23","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2771:6:23","memberName":"sender","nodeType":"MemberAccess","src":"2767:10:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2741:37:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref))"}},"id":9759,"indexExpression":{"id":9755,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9641,"src":"2779:11:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2741:50:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$","typeString":"mapping(uint256 => struct LibFlow.FlowRecord storage ref)"}},"id":9760,"indexExpression":{"id":9756,"name":"newFlowNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9743,"src":"2792:12:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2741:64:23","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$12606_storage","typeString":"struct LibFlow.FlowRecord storage ref"}},"id":9761,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2806:8:23","memberName":"receiver","nodeType":"MemberAccess","referencedDeclaration":12595,"src":"2741:73:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9762,"name":"_receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9639,"src":"2817:9:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2741:85:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9764,"nodeType":"ExpressionStatement","src":"2741:85:23"},{"expression":{"id":9777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"id":9765,"name":"sFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9707,"src":"2836:5:23","typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$12632_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":9771,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2851:10:23","memberName":"flowRecord","nodeType":"MemberAccess","referencedDeclaration":12621,"src":"2836:25:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref)))"}},"id":9772,"indexExpression":{"expression":{"id":9767,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2862:3:23","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2866:6:23","memberName":"sender","nodeType":"MemberAccess","src":"2862:10:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2836:37:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref))"}},"id":9773,"indexExpression":{"id":9769,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9641,"src":"2874:11:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2836:50:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$","typeString":"mapping(uint256 => struct LibFlow.FlowRecord storage ref)"}},"id":9774,"indexExpression":{"id":9770,"name":"newFlowNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9743,"src":"2887:12:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2836:64:23","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$12606_storage","typeString":"struct LibFlow.FlowRecord storage ref"}},"id":9775,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2914:12:23","memberName":"sessionNonce","nodeType":"MemberAccess","referencedDeclaration":12597,"src":"2836:90:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9776,"name":"activeSessionNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9681,"src":"2929:18:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2836:111:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9778,"nodeType":"ExpressionStatement","src":"2836:111:23"},{"assignments":[9783],"declarations":[{"constant":false,"id":9783,"mutability":"mutable","name":"sControl","nameLocation":"2992:8:23","nodeType":"VariableDeclaration","scope":9967,"src":"2958:42:23","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl"},"typeName":{"id":9782,"nodeType":"UserDefinedTypeName","pathNode":{"id":9781,"name":"LibControl.StorageControl","nameLocations":["2958:10:23","2969:14:23"],"nodeType":"IdentifierPath","referencedDeclaration":11668,"src":"2958:25:23"},"referencedDeclaration":11668,"src":"2958:25:23","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl"}},"visibility":"internal"}],"id":9787,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9784,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"3003:10:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$12557_$","typeString":"type(library LibControl)"}},"id":9785,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3027:15:23","memberName":"_storageControl","nodeType":"MemberAccess","referencedDeclaration":11680,"src":"3003:39:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$11668_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":9786,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3003:41:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2958:86:23"},{"assignments":[9789],"declarations":[{"constant":false,"id":9789,"mutability":"mutable","name":"newControlNonce","nameLocation":"3062:15:23","nodeType":"VariableDeclaration","scope":9967,"src":"3054:23:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9788,"name":"uint256","nodeType":"ElementaryTypeName","src":"3054:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9794,"initialValue":{"baseExpression":{"expression":{"id":9790,"name":"sControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9783,"src":"3080:8:23","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":9791,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3089:12:23","memberName":"controlNonce","nodeType":"MemberAccess","referencedDeclaration":11646,"src":"3080:21:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":9793,"indexExpression":{"id":9792,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9641,"src":"3102:11:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3080:34:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3054:60:23"},{"expression":{"id":9804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"baseExpression":{"expression":{"id":9795,"name":"sControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9783,"src":"3124:8:23","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":9799,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3142:13:23","memberName":"controlRecord","nodeType":"MemberAccess","referencedDeclaration":11653,"src":"3124:31:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_ControlRecord_$11619_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibControl.ControlRecord storage ref))"}},"id":9800,"indexExpression":{"id":9797,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9641,"src":"3156:11:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3124:44:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ControlRecord_$11619_storage_$","typeString":"mapping(uint256 => struct LibControl.ControlRecord storage ref)"}},"id":9801,"indexExpression":{"id":9798,"name":"newControlNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9789,"src":"3169:15:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3124:61:23","typeDescriptions":{"typeIdentifier":"t_struct$_ControlRecord_$11619_storage","typeString":"struct LibControl.ControlRecord storage ref"}},"id":9802,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3186:8:23","memberName":"receiver","nodeType":"MemberAccess","referencedDeclaration":11612,"src":"3124:70:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9803,"name":"_receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9639,"src":"3197:9:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3124:82:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9805,"nodeType":"ExpressionStatement","src":"3124:82:23"},{"expression":{"id":9815,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"baseExpression":{"expression":{"id":9806,"name":"sControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9783,"src":"3216:8:23","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":9810,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3234:13:23","memberName":"controlRecord","nodeType":"MemberAccess","referencedDeclaration":11653,"src":"3216:31:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_ControlRecord_$11619_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibControl.ControlRecord storage ref))"}},"id":9811,"indexExpression":{"id":9808,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9641,"src":"3248:11:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3216:44:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ControlRecord_$11619_storage_$","typeString":"mapping(uint256 => struct LibControl.ControlRecord storage ref)"}},"id":9812,"indexExpression":{"id":9809,"name":"newControlNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9789,"src":"3261:15:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3216:61:23","typeDescriptions":{"typeIdentifier":"t_struct$_ControlRecord_$11619_storage","typeString":"struct LibControl.ControlRecord storage ref"}},"id":9813,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3291:12:23","memberName":"sessionNonce","nodeType":"MemberAccess","referencedDeclaration":11614,"src":"3216:87:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9814,"name":"activeSessionNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9681,"src":"3306:18:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3216:108:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9816,"nodeType":"ExpressionStatement","src":"3216:108:23"},{"expression":{"id":9827,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"baseExpression":{"expression":{"id":9817,"name":"sControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9783,"src":"3334:8:23","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":9821,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3352:13:23","memberName":"controlRecord","nodeType":"MemberAccess","referencedDeclaration":11653,"src":"3334:31:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_ControlRecord_$11619_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibControl.ControlRecord storage ref))"}},"id":9822,"indexExpression":{"id":9819,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9641,"src":"3366:11:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3334:44:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ControlRecord_$11619_storage_$","typeString":"mapping(uint256 => struct LibControl.ControlRecord storage ref)"}},"id":9823,"indexExpression":{"id":9820,"name":"newControlNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9789,"src":"3379:15:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3334:61:23","typeDescriptions":{"typeIdentifier":"t_struct$_ControlRecord_$11619_storage","typeString":"struct LibControl.ControlRecord storage ref"}},"id":9824,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3396:17:23","memberName":"timestampIncrease","nodeType":"MemberAccess","referencedDeclaration":11616,"src":"3334:79:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":9825,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"3416:5:23","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":9826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3435:9:23","memberName":"timestamp","nodeType":"MemberAccess","src":"3416:28:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3334:110:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9828,"nodeType":"ExpressionStatement","src":"3334:110:23"},{"expression":{"id":9841,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"id":9829,"name":"sFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9707,"src":"3454:5:23","typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$12632_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":9835,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3469:10:23","memberName":"flowRecord","nodeType":"MemberAccess","referencedDeclaration":12621,"src":"3454:25:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref)))"}},"id":9836,"indexExpression":{"expression":{"id":9831,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3480:3:23","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3484:6:23","memberName":"sender","nodeType":"MemberAccess","src":"3480:10:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3454:37:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref))"}},"id":9837,"indexExpression":{"id":9833,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9641,"src":"3492:11:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3454:50:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$","typeString":"mapping(uint256 => struct LibFlow.FlowRecord storage ref)"}},"id":9838,"indexExpression":{"id":9834,"name":"newFlowNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9743,"src":"3505:12:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3454:64:23","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$12606_storage","typeString":"struct LibFlow.FlowRecord storage ref"}},"id":9839,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3532:12:23","memberName":"controlNonce","nodeType":"MemberAccess","referencedDeclaration":12593,"src":"3454:90:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9840,"name":"newControlNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9789,"src":"3547:15:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3454:108:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9842,"nodeType":"ExpressionStatement","src":"3454:108:23"},{"expression":{"arguments":[{"id":9846,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9641,"src":"3645:11:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":9847,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3670:3:23","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3674:6:23","memberName":"sender","nodeType":"MemberAccess","src":"3670:10:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9849,"name":"_receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9639,"src":"3694:9:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9850,"name":"newFlowNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9743,"src":"3717:12:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9851,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9713,"src":"3743:8:23","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_int96","typeString":"int96"}],"expression":{"id":9843,"name":"LibFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13572,"src":"3610:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibFlow_$13572_$","typeString":"type(library LibFlow)"}},"id":9845,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3618:13:23","memberName":"_increaseFlow","nodeType":"MemberAccess","referencedDeclaration":13471,"src":"3610:21:23","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_int96_$returns$__$","typeString":"function (address,address,address,uint256,int96)"}},"id":9852,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3610:151:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9853,"nodeType":"ExpressionStatement","src":"3610:151:23"},{"assignments":[9856],"declarations":[{"constant":false,"id":9856,"mutability":"mutable","name":"moduleDataFlowStop","nameLocation":"3826:18:23","nodeType":"VariableDeclaration","scope":9967,"src":"3808:36:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ModuleData_$15496_memory_ptr","typeString":"struct ModuleData"},"typeName":{"id":9855,"nodeType":"UserDefinedTypeName","pathNode":{"id":9854,"name":"ModuleData","nameLocations":["3808:10:23"],"nodeType":"IdentifierPath","referencedDeclaration":15496,"src":"3808:10:23"},"referencedDeclaration":15496,"src":"3808:10:23","typeDescriptions":{"typeIdentifier":"t_struct$_ModuleData_$15496_storage_ptr","typeString":"struct ModuleData"}},"visibility":"internal"}],"id":9870,"initialValue":{"arguments":[{"arguments":[{"hexValue":"32","id":9862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3894:1:23","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"id":9861,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"3881:12:23","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_enum$_Module_$15488_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (enum Module[] memory)"},"typeName":{"baseType":{"id":9859,"nodeType":"UserDefinedTypeName","pathNode":{"id":9858,"name":"Module","nameLocations":["3885:6:23"],"nodeType":"IdentifierPath","referencedDeclaration":15488,"src":"3885:6:23"},"referencedDeclaration":15488,"src":"3885:6:23","typeDescriptions":{"typeIdentifier":"t_enum$_Module_$15488","typeString":"enum Module"}},"id":9860,"nodeType":"ArrayTypeName","src":"3885:8:23","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_Module_$15488_$dyn_storage_ptr","typeString":"enum Module[]"}}},"id":9863,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3881:15:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_Module_$15488_$dyn_memory_ptr","typeString":"enum Module[] memory"}},{"arguments":[{"hexValue":"31","id":9867,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3928:1:23","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":9866,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"3916:11:23","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory[] memory)"},"typeName":{"baseType":{"id":9864,"name":"bytes","nodeType":"ElementaryTypeName","src":"3920:5:23","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":9865,"nodeType":"ArrayTypeName","src":"3920:7:23","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}}},"id":9868,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3916:14:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_enum$_Module_$15488_$dyn_memory_ptr","typeString":"enum Module[] memory"},{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}],"id":9857,"name":"ModuleData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15496,"src":"3847:10:23","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_ModuleData_$15496_storage_ptr_$","typeString":"type(struct ModuleData storage pointer)"}},"id":9869,"isConstant":false,"isLValue":false,"isPure":true,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["3872:7:23","3910:4:23"],"names":["modules","args"],"nodeType":"FunctionCall","src":"3847:94:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ModuleData_$15496_memory_ptr","typeString":"struct ModuleData memory"}},"nodeType":"VariableDeclarationStatement","src":"3808:133:23"},{"expression":{"id":9878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":9871,"name":"moduleDataFlowStop","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9856,"src":"3952:18:23","typeDescriptions":{"typeIdentifier":"t_struct$_ModuleData_$15496_memory_ptr","typeString":"struct ModuleData memory"}},"id":9874,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3971:7:23","memberName":"modules","nodeType":"MemberAccess","referencedDeclaration":15492,"src":"3952:26:23","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_Module_$15488_$dyn_memory_ptr","typeString":"enum Module[] memory"}},"id":9875,"indexExpression":{"hexValue":"30","id":9873,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3979:1:23","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3952:29:23","typeDescriptions":{"typeIdentifier":"t_enum$_Module_$15488","typeString":"enum Module"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":9876,"name":"Module","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15488,"src":"3984:6:23","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Module_$15488_$","typeString":"type(enum Module)"}},"id":9877,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3991:4:23","memberName":"TIME","nodeType":"MemberAccess","referencedDeclaration":15485,"src":"3984:11:23","typeDescriptions":{"typeIdentifier":"t_enum$_Module_$15488","typeString":"enum Module"}},"src":"3952:43:23","typeDescriptions":{"typeIdentifier":"t_enum$_Module_$15488","typeString":"enum Module"}},"id":9879,"nodeType":"ExpressionStatement","src":"3952:43:23"},{"expression":{"id":9887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":9880,"name":"moduleDataFlowStop","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9856,"src":"4005:18:23","typeDescriptions":{"typeIdentifier":"t_struct$_ModuleData_$15496_memory_ptr","typeString":"struct ModuleData memory"}},"id":9883,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4024:7:23","memberName":"modules","nodeType":"MemberAccess","referencedDeclaration":15492,"src":"4005:26:23","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_Module_$15488_$dyn_memory_ptr","typeString":"enum Module[] memory"}},"id":9884,"indexExpression":{"hexValue":"31","id":9882,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4032:1:23","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4005:29:23","typeDescriptions":{"typeIdentifier":"t_enum$_Module_$15488","typeString":"enum Module"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":9885,"name":"Module","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15488,"src":"4037:6:23","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Module_$15488_$","typeString":"type(enum Module)"}},"id":9886,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4044:11:23","memberName":"SINGLE_EXEC","nodeType":"MemberAccess","referencedDeclaration":15487,"src":"4037:18:23","typeDescriptions":{"typeIdentifier":"t_enum$_Module_$15488","typeString":"enum Module"}},"src":"4005:50:23","typeDescriptions":{"typeIdentifier":"t_enum$_Module_$15488","typeString":"enum Module"}},"id":9888,"nodeType":"ExpressionStatement","src":"4005:50:23"},{"expression":{"id":9902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":9889,"name":"moduleDataFlowStop","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9856,"src":"4066:18:23","typeDescriptions":{"typeIdentifier":"t_struct$_ModuleData_$15496_memory_ptr","typeString":"struct ModuleData memory"}},"id":9892,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4085:4:23","memberName":"args","nodeType":"MemberAccess","referencedDeclaration":15495,"src":"4066:23:23","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"id":9893,"indexExpression":{"hexValue":"30","id":9891,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4090:1:23","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4066:26:23","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9899,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9896,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"4135:5:23","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":9897,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4141:9:23","memberName":"timestamp","nodeType":"MemberAccess","src":"4135:15:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":9898,"name":"scheduledLifespan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9732,"src":"4153:17:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4135:35:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9900,"name":"scheduledLifespan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9732,"src":"4184:17:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9894,"name":"LibAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11560,"src":"4095:11:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAutomate_$11560_$","typeString":"type(library LibAutomate)"}},"id":9895,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4107:14:23","memberName":"_timeModuleArg","nodeType":"MemberAccess","referencedDeclaration":11537,"src":"4095:26:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (bytes memory)"}},"id":9901,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4095:116:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"4066:145:23","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":9903,"nodeType":"ExpressionStatement","src":"4066:145:23"},{"assignments":[9905],"declarations":[{"constant":false,"id":9905,"mutability":"mutable","name":"execDataFlowStop","nameLocation":"4235:16:23","nodeType":"VariableDeclaration","scope":9967,"src":"4222:29:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9904,"name":"bytes","nodeType":"ElementaryTypeName","src":"4222:5:23","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":9918,"initialValue":{"arguments":[{"expression":{"expression":{"id":9908,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4290:4:23","typeDescriptions":{"typeIdentifier":"t_contract$_Flow_$10290","typeString":"contract Flow"}},"id":9909,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4295:12:23","memberName":"decreaseFlow","nodeType":"MemberAccess","referencedDeclaration":9997,"src":"4290:17:23","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_int96_$returns$__$","typeString":"function (address,address,address,uint256,int96) external"}},"id":9910,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4308:8:23","memberName":"selector","nodeType":"MemberAccess","src":"4290:26:23","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":9911,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9641,"src":"4330:11:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":9912,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4355:3:23","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4359:6:23","memberName":"sender","nodeType":"MemberAccess","src":"4355:10:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9914,"name":"_receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9639,"src":"4379:9:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9915,"name":"newFlowNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9743,"src":"4402:12:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9916,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9713,"src":"4428:8:23","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_int96","typeString":"int96"}],"expression":{"id":9906,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4254:3:23","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":9907,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4258:18:23","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"4254:22:23","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":9917,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4254:192:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"4222:224:23"},{"expression":{"id":9946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"id":9919,"name":"sFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9707,"src":"4457:5:23","typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$12632_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":9925,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4472:10:23","memberName":"flowRecord","nodeType":"MemberAccess","referencedDeclaration":12621,"src":"4457:25:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref)))"}},"id":9926,"indexExpression":{"expression":{"id":9921,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4483:3:23","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9922,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4487:6:23","memberName":"sender","nodeType":"MemberAccess","src":"4483:10:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4457:37:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref))"}},"id":9927,"indexExpression":{"id":9923,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9641,"src":"4495:11:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4457:50:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$","typeString":"mapping(uint256 => struct LibFlow.FlowRecord storage ref)"}},"id":9928,"indexExpression":{"id":9924,"name":"newFlowNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9743,"src":"4508:12:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4457:64:23","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$12606_storage","typeString":"struct LibFlow.FlowRecord storage ref"}},"id":9929,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4522:6:23","memberName":"taskId","nodeType":"MemberAccess","referencedDeclaration":12603,"src":"4457:71:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":9937,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4651:4:23","typeDescriptions":{"typeIdentifier":"t_contract$_Flow_$10290","typeString":"contract Flow"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Flow_$10290","typeString":"contract Flow"}],"id":9936,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4643:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9935,"name":"address","nodeType":"ElementaryTypeName","src":"4643:7:23","typeDescriptions":{}}},"id":9938,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4643:13:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9939,"name":"execDataFlowStop","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9905,"src":"4674:16:23","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":9940,"name":"moduleDataFlowStop","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9856,"src":"4708:18:23","typeDescriptions":{"typeIdentifier":"t_struct$_ModuleData_$15496_memory_ptr","typeString":"struct ModuleData memory"}},{"arguments":[{"hexValue":"30","id":9943,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4752:1:23","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":9942,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4744:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9941,"name":"address","nodeType":"ElementaryTypeName","src":"4744:7:23","typeDescriptions":{}}},"id":9944,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4744:10:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_struct$_ModuleData_$15496_memory_ptr","typeString":"struct ModuleData memory"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9930,"name":"LibAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11560,"src":"4531:11:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAutomate_$11560_$","typeString":"type(library LibAutomate)"}},"id":9931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4556:16:23","memberName":"_storageAutomate","nodeType":"MemberAccess","referencedDeclaration":11201,"src":"4531:41:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageAutomate_$11189_storage_ptr_$","typeString":"function () pure returns (struct LibAutomate.StorageAutomate storage pointer)"}},"id":9932,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4531:43:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageAutomate_$11189_storage_ptr","typeString":"struct LibAutomate.StorageAutomate storage pointer"}},"id":9933,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4588:13:23","memberName":"gelatoAutobot","nodeType":"MemberAccess","referencedDeclaration":11181,"src":"4531:70:23","typeDescriptions":{"typeIdentifier":"t_contract$_IAutomate_$15534","typeString":"contract IAutomate"}},"id":9934,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4615:10:23","memberName":"createTask","nodeType":"MemberAccess","referencedDeclaration":15510,"src":"4531:94:23","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_struct$_ModuleData_$15496_memory_ptr_$_t_address_$returns$_t_bytes32_$","typeString":"function (address,bytes memory,struct ModuleData memory,address) external returns (bytes32)"}},"id":9945,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4531:237:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"4457:311:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":9947,"nodeType":"ExpressionStatement","src":"4457:311:23"},{"expression":{"id":9957,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"id":9948,"name":"sFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9707,"src":"4803:5:23","typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$12632_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":9953,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4809:9:23","memberName":"flowNonce","nodeType":"MemberAccess","referencedDeclaration":12612,"src":"4803:15:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":9954,"indexExpression":{"expression":{"id":9950,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4819:3:23","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4823:6:23","memberName":"sender","nodeType":"MemberAccess","src":"4819:10:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4803:27:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":9955,"indexExpression":{"id":9952,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9641,"src":"4831:11:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4803:40:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":9956,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4847:1:23","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4803:45:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9958,"nodeType":"ExpressionStatement","src":"4803:45:23"},{"expression":{"id":9965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":9959,"name":"sControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9783,"src":"4858:8:23","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":9962,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4867:12:23","memberName":"controlNonce","nodeType":"MemberAccess","referencedDeclaration":11646,"src":"4858:21:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":9963,"indexExpression":{"id":9961,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9641,"src":"4880:11:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4858:34:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":9964,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4896:1:23","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4858:39:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9966,"nodeType":"ExpressionStatement","src":"4858:39:23"}]},"documentation":{"id":9637,"nodeType":"StructuredDocumentation","src":"987:218:23","text":" // TODO: need to check if you have sufficient deposits left or not\n SOL1: have user manually off flow\n SOL2: force settle blaance before open next flow (also force settle before withdraw)"},"functionSelector":"dfc96e1b","id":9968,"implemented":true,"kind":"function","modifiers":[],"name":"openFlow","nameLocation":"1219:8:23","nodeType":"FunctionDefinition","parameters":{"id":9644,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9639,"mutability":"mutable","name":"_receiver","nameLocation":"1245:9:23","nodeType":"VariableDeclaration","scope":9968,"src":"1237:17:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9638,"name":"address","nodeType":"ElementaryTypeName","src":"1237:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9641,"mutability":"mutable","name":"_superToken","nameLocation":"1272:11:23","nodeType":"VariableDeclaration","scope":9968,"src":"1264:19:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9640,"name":"address","nodeType":"ElementaryTypeName","src":"1264:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9643,"mutability":"mutable","name":"_lifespan","nameLocation":"1301:9:23","nodeType":"VariableDeclaration","scope":9968,"src":"1293:17:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9642,"name":"uint256","nodeType":"ElementaryTypeName","src":"1293:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1227:89:23"},"returnParameters":{"id":9645,"nodeType":"ParameterList","parameters":[],"src":"1326:0:23"},"scope":10290,"src":"1210:3694:23","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[10825],"body":{"id":9996,"nodeType":"Block","src":"5077:204:23","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9981,"name":"LibAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11560,"src":"5087:11:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAutomate_$11560_$","typeString":"type(library LibAutomate)"}},"id":9983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5099:19:23","memberName":"_requireOnlyAutobot","nodeType":"MemberAccess","referencedDeclaration":11379,"src":"5087:31:23","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":9984,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5087:33:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9985,"nodeType":"ExpressionStatement","src":"5087:33:23"},{"expression":{"arguments":[{"id":9989,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9970,"src":"5166:11:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9990,"name":"_sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9972,"src":"5191:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9991,"name":"_receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9974,"src":"5212:9:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9992,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9976,"src":"5235:6:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9993,"name":"_flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9978,"src":"5255:9:23","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_int96","typeString":"int96"}],"expression":{"id":9986,"name":"LibFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13572,"src":"5131:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibFlow_$13572_$","typeString":"type(library LibFlow)"}},"id":9988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5139:13:23","memberName":"_decreaseFlow","nodeType":"MemberAccess","referencedDeclaration":13571,"src":"5131:21:23","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_int96_$returns$__$","typeString":"function (address,address,address,uint256,int96)"}},"id":9994,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5131:143:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9995,"nodeType":"ExpressionStatement","src":"5131:143:23"}]},"functionSelector":"36fbb025","id":9997,"implemented":true,"kind":"function","modifiers":[],"name":"decreaseFlow","nameLocation":"4919:12:23","nodeType":"FunctionDefinition","parameters":{"id":9979,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9970,"mutability":"mutable","name":"_superToken","nameLocation":"4949:11:23","nodeType":"VariableDeclaration","scope":9997,"src":"4941:19:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9969,"name":"address","nodeType":"ElementaryTypeName","src":"4941:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9972,"mutability":"mutable","name":"_sender","nameLocation":"4978:7:23","nodeType":"VariableDeclaration","scope":9997,"src":"4970:15:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9971,"name":"address","nodeType":"ElementaryTypeName","src":"4970:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9974,"mutability":"mutable","name":"_receiver","nameLocation":"5003:9:23","nodeType":"VariableDeclaration","scope":9997,"src":"4995:17:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9973,"name":"address","nodeType":"ElementaryTypeName","src":"4995:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9976,"mutability":"mutable","name":"_nonce","nameLocation":"5030:6:23","nodeType":"VariableDeclaration","scope":9997,"src":"5022:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9975,"name":"uint256","nodeType":"ElementaryTypeName","src":"5022:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9978,"mutability":"mutable","name":"_flowRate","nameLocation":"5052:9:23","nodeType":"VariableDeclaration","scope":9997,"src":"5046:15:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":9977,"name":"int96","nodeType":"ElementaryTypeName","src":"5046:5:23","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"4931:136:23"},"returnParameters":{"id":9980,"nodeType":"ParameterList","parameters":[],"src":"5077:0:23"},"scope":10290,"src":"4910:371:23","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[10832],"body":{"id":10104,"nodeType":"Block","src":"5416:1088:23","statements":[{"assignments":[10008],"declarations":[{"constant":false,"id":10008,"mutability":"mutable","name":"sFlow","nameLocation":"5454:5:23","nodeType":"VariableDeclaration","scope":10104,"src":"5426:33:23","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$12632_storage_ptr","typeString":"struct LibFlow.StorageFlow"},"typeName":{"id":10007,"nodeType":"UserDefinedTypeName","pathNode":{"id":10006,"name":"LibFlow.StorageFlow","nameLocations":["5426:7:23","5434:11:23"],"nodeType":"IdentifierPath","referencedDeclaration":12632,"src":"5426:19:23"},"referencedDeclaration":12632,"src":"5426:19:23","typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$12632_storage_ptr","typeString":"struct LibFlow.StorageFlow"}},"visibility":"internal"}],"id":10012,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10009,"name":"LibFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13572,"src":"5462:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibFlow_$13572_$","typeString":"type(library LibFlow)"}},"id":10010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5470:12:23","memberName":"_storageFlow","nodeType":"MemberAccess","referencedDeclaration":12644,"src":"5462:20:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$12632_storage_ptr_$","typeString":"function () pure returns (struct LibFlow.StorageFlow storage pointer)"}},"id":10011,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5462:22:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$12632_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"5426:58:23"},{"assignments":[10014],"declarations":[{"constant":false,"id":10014,"mutability":"mutable","name":"minimumEndTimestamp","nameLocation":"5503:19:23","nodeType":"VariableDeclaration","scope":10104,"src":"5495:27:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10013,"name":"uint256","nodeType":"ElementaryTypeName","src":"5495:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10030,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"id":10015,"name":"sFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10008,"src":"5525:5:23","typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$12632_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":10016,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5540:10:23","memberName":"flowRecord","nodeType":"MemberAccess","referencedDeclaration":12621,"src":"5525:25:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref)))"}},"id":10019,"indexExpression":{"expression":{"id":10017,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5551:3:23","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5555:6:23","memberName":"sender","nodeType":"MemberAccess","src":"5551:10:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5525:37:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref))"}},"id":10021,"indexExpression":{"id":10020,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9999,"src":"5563:11:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5525:50:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$","typeString":"mapping(uint256 => struct LibFlow.FlowRecord storage ref)"}},"id":10023,"indexExpression":{"id":10022,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10001,"src":"5576:6:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5525:58:23","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$12606_storage","typeString":"struct LibFlow.FlowRecord storage ref"}},"id":10024,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5584:17:23","memberName":"timestampIncrease","nodeType":"MemberAccess","referencedDeclaration":12599,"src":"5525:76:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10025,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"5616:10:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$12557_$","typeString":"type(library LibControl)"}},"id":10026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5627:15:23","memberName":"_storageControl","nodeType":"MemberAccess","referencedDeclaration":11680,"src":"5616:26:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$11668_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":10027,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5616:28:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":10028,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5645:15:23","memberName":"minimumLifespan","nodeType":"MemberAccess","referencedDeclaration":11632,"src":"5616:44:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5525:135:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5495:165:23"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":10031,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"5675:5:23","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":10032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5681:9:23","memberName":"timestamp","nodeType":"MemberAccess","src":"5675:15:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":10033,"name":"minimumEndTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10014,"src":"5693:19:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5675:37:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10038,"nodeType":"IfStatement","src":"5671:60:23","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":10035,"name":"TooEarly","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9630,"src":"5721:8:23","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":10036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5721:10:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10037,"nodeType":"RevertStatement","src":"5714:17:23"}},{"expression":{"arguments":[{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"id":10045,"name":"sFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10008,"src":"5920:5:23","typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$12632_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":10046,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5926:10:23","memberName":"flowRecord","nodeType":"MemberAccess","referencedDeclaration":12621,"src":"5920:16:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref)))"}},"id":10049,"indexExpression":{"expression":{"id":10047,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5937:3:23","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5941:6:23","memberName":"sender","nodeType":"MemberAccess","src":"5937:10:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5920:28:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref))"}},"id":10051,"indexExpression":{"id":10050,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9999,"src":"5949:11:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5920:41:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$","typeString":"mapping(uint256 => struct LibFlow.FlowRecord storage ref)"}},"id":10053,"indexExpression":{"id":10052,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10001,"src":"5962:6:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5920:49:23","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$12606_storage","typeString":"struct LibFlow.FlowRecord storage ref"}},"id":10054,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5970:6:23","memberName":"taskId","nodeType":"MemberAccess","referencedDeclaration":12603,"src":"5920:56:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10039,"name":"LibAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11560,"src":"5851:11:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAutomate_$11560_$","typeString":"type(library LibAutomate)"}},"id":10041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5863:16:23","memberName":"_storageAutomate","nodeType":"MemberAccess","referencedDeclaration":11201,"src":"5851:28:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageAutomate_$11189_storage_ptr_$","typeString":"function () pure returns (struct LibAutomate.StorageAutomate storage pointer)"}},"id":10042,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5851:30:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageAutomate_$11189_storage_ptr","typeString":"struct LibAutomate.StorageAutomate storage pointer"}},"id":10043,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5882:13:23","memberName":"gelatoAutobot","nodeType":"MemberAccess","referencedDeclaration":11181,"src":"5851:44:23","typeDescriptions":{"typeIdentifier":"t_contract$_IAutomate_$15534","typeString":"contract IAutomate"}},"id":10044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5896:10:23","memberName":"cancelTask","nodeType":"MemberAccess","referencedDeclaration":15515,"src":"5851:55:23","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32) external"}},"id":10055,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5851:135:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10056,"nodeType":"ExpressionStatement","src":"5851:135:23"},{"assignments":[10058],"declarations":[{"constant":false,"id":10058,"mutability":"mutable","name":"receiver","nameLocation":"6028:8:23","nodeType":"VariableDeclaration","scope":10104,"src":"6020:16:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10057,"name":"address","nodeType":"ElementaryTypeName","src":"6020:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":10069,"initialValue":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"id":10059,"name":"sFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10008,"src":"6039:5:23","typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$12632_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":10060,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6054:10:23","memberName":"flowRecord","nodeType":"MemberAccess","referencedDeclaration":12621,"src":"6039:25:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref)))"}},"id":10063,"indexExpression":{"expression":{"id":10061,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6065:3:23","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6069:6:23","memberName":"sender","nodeType":"MemberAccess","src":"6065:10:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6039:37:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref))"}},"id":10065,"indexExpression":{"id":10064,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9999,"src":"6077:11:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6039:50:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$","typeString":"mapping(uint256 => struct LibFlow.FlowRecord storage ref)"}},"id":10067,"indexExpression":{"id":10066,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10001,"src":"6090:6:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6039:58:23","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$12606_storage","typeString":"struct LibFlow.FlowRecord storage ref"}},"id":10068,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6098:8:23","memberName":"receiver","nodeType":"MemberAccess","referencedDeclaration":12595,"src":"6039:67:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6020:86:23"},{"assignments":[10071],"declarations":[{"constant":false,"id":10071,"mutability":"mutable","name":"sessionNonce","nameLocation":"6124:12:23","nodeType":"VariableDeclaration","scope":10104,"src":"6116:20:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10070,"name":"uint256","nodeType":"ElementaryTypeName","src":"6116:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10082,"initialValue":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"id":10072,"name":"sFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10008,"src":"6139:5:23","typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$12632_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":10073,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6154:10:23","memberName":"flowRecord","nodeType":"MemberAccess","referencedDeclaration":12621,"src":"6139:25:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref)))"}},"id":10076,"indexExpression":{"expression":{"id":10074,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6165:3:23","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6169:6:23","memberName":"sender","nodeType":"MemberAccess","src":"6165:10:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6139:37:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref))"}},"id":10078,"indexExpression":{"id":10077,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9999,"src":"6177:11:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6139:50:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$","typeString":"mapping(uint256 => struct LibFlow.FlowRecord storage ref)"}},"id":10080,"indexExpression":{"id":10079,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10001,"src":"6190:6:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6139:58:23","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$12606_storage","typeString":"struct LibFlow.FlowRecord storage ref"}},"id":10081,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6198:12:23","memberName":"sessionNonce","nodeType":"MemberAccess","referencedDeclaration":12597,"src":"6139:71:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6116:94:23"},{"expression":{"arguments":[{"id":10086,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9999,"src":"6256:11:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":10087,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6281:3:23","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10088,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6285:6:23","memberName":"sender","nodeType":"MemberAccess","src":"6281:10:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10089,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10058,"src":"6305:8:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10090,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10001,"src":"6327:6:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10091,"name":"LibSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14179,"src":"6347:10:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibSession_$14179_$","typeString":"type(library LibSession)"}},"id":10092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6371:15:23","memberName":"_storageSession","nodeType":"MemberAccess","referencedDeclaration":13646,"src":"6347:39:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageSession_$13634_storage_ptr_$","typeString":"function () pure returns (struct LibSession.StorageSession storage pointer)"}},"id":10093,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6347:41:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$13634_storage_ptr","typeString":"struct LibSession.StorageSession storage pointer"}},"id":10094,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6402:13:23","memberName":"sessionRecord","nodeType":"MemberAccess","referencedDeclaration":13628,"src":"6347:68:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_SessionRecord_$13613_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibSession.SessionRecord storage ref)))"}},"id":10096,"indexExpression":{"id":10095,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10058,"src":"6416:8:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6347:78:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_SessionRecord_$13613_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibSession.SessionRecord storage ref))"}},"id":10098,"indexExpression":{"id":10097,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9999,"src":"6426:11:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6347:91:23","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_SessionRecord_$13613_storage_$","typeString":"mapping(uint256 => struct LibSession.SessionRecord storage ref)"}},"id":10100,"indexExpression":{"id":10099,"name":"sessionNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10071,"src":"6439:12:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6347:105:23","typeDescriptions":{"typeIdentifier":"t_struct$_SessionRecord_$13613_storage","typeString":"struct LibSession.SessionRecord storage ref"}},"id":10101,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6470:17:23","memberName":"effectiveFlowRate","nodeType":"MemberAccess","referencedDeclaration":13606,"src":"6347:140:23","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_int96","typeString":"int96"}],"expression":{"id":10083,"name":"LibFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13572,"src":"6221:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibFlow_$13572_$","typeString":"type(library LibFlow)"}},"id":10085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6229:13:23","memberName":"_decreaseFlow","nodeType":"MemberAccess","referencedDeclaration":13571,"src":"6221:21:23","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_int96_$returns$__$","typeString":"function (address,address,address,uint256,int96)"}},"id":10102,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6221:276:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10103,"nodeType":"ExpressionStatement","src":"6221:276:23"}]},"functionSelector":"e32867fc","id":10105,"implemented":true,"kind":"function","modifiers":[],"name":"closeFlow","nameLocation":"5360:9:23","nodeType":"FunctionDefinition","parameters":{"id":10002,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9999,"mutability":"mutable","name":"_superToken","nameLocation":"5378:11:23","nodeType":"VariableDeclaration","scope":10105,"src":"5370:19:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9998,"name":"address","nodeType":"ElementaryTypeName","src":"5370:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10001,"mutability":"mutable","name":"_nonce","nameLocation":"5399:6:23","nodeType":"VariableDeclaration","scope":10105,"src":"5391:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10000,"name":"uint256","nodeType":"ElementaryTypeName","src":"5391:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5369:37:23"},"returnParameters":{"id":10003,"nodeType":"ParameterList","parameters":[],"src":"5416:0:23"},"scope":10290,"src":"5351:1153:23","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[10839],"body":{"id":10125,"nodeType":"Block","src":"6584:126:23","statements":[{"expression":{"arguments":[{"id":10115,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10107,"src":"6633:11:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10112,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"6594:10:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$12557_$","typeString":"type(library LibControl)"}},"id":10114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6605:27:23","memberName":"_requireSuperTokenSupported","nodeType":"MemberAccess","referencedDeclaration":12003,"src":"6594:38:23","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":10116,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6594:51:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10117,"nodeType":"ExpressionStatement","src":"6594:51:23"},{"expression":{"arguments":[{"id":10121,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10107,"src":"6682:11:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10122,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10109,"src":"6695:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10118,"name":"LibFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13572,"src":"6655:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibFlow_$13572_$","typeString":"type(library LibFlow)"}},"id":10120,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6663:18:23","memberName":"_depositSuperToken","nodeType":"MemberAccess","referencedDeclaration":12684,"src":"6655:26:23","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":10123,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6655:48:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10124,"nodeType":"ExpressionStatement","src":"6655:48:23"}]},"functionSelector":"0197c386","id":10126,"implemented":true,"kind":"function","modifiers":[],"name":"depositSuperToken","nameLocation":"6519:17:23","nodeType":"FunctionDefinition","parameters":{"id":10110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10107,"mutability":"mutable","name":"_superToken","nameLocation":"6545:11:23","nodeType":"VariableDeclaration","scope":10126,"src":"6537:19:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10106,"name":"address","nodeType":"ElementaryTypeName","src":"6537:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10109,"mutability":"mutable","name":"_amount","nameLocation":"6566:7:23","nodeType":"VariableDeclaration","scope":10126,"src":"6558:15:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10108,"name":"uint256","nodeType":"ElementaryTypeName","src":"6558:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6536:38:23"},"returnParameters":{"id":10111,"nodeType":"ParameterList","parameters":[],"src":"6584:0:23"},"scope":10290,"src":"6510:200:23","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[10846],"body":{"id":10146,"nodeType":"Block","src":"6791:425:23","statements":[{"documentation":" don't need to check if supertoken suppported or not\n as there may be a chance that a supported supertoken\n gets removed but there is still user funds in the app\n in that case, just let user withdraw as will fail anyway if 0 amount","expression":{"arguments":[{"id":10136,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10128,"src":"7137:11:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10133,"name":"LibFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13572,"src":"7108:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibFlow_$13572_$","typeString":"type(library LibFlow)"}},"id":10135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7116:20:23","memberName":"_requireNoActiveFlow","nodeType":"MemberAccess","referencedDeclaration":12763,"src":"7108:28:23","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":10137,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7108:41:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10138,"nodeType":"ExpressionStatement","src":"7108:41:23"},{"expression":{"arguments":[{"id":10142,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10128,"src":"7188:11:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10143,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10130,"src":"7201:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10139,"name":"LibFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13572,"src":"7160:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibFlow_$13572_$","typeString":"type(library LibFlow)"}},"id":10141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7168:19:23","memberName":"_withdrawSuperToken","nodeType":"MemberAccess","referencedDeclaration":12748,"src":"7160:27:23","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":10144,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7160:49:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10145,"nodeType":"ExpressionStatement","src":"7160:49:23"}]},"functionSelector":"dc5cd1d8","id":10147,"implemented":true,"kind":"function","modifiers":[],"name":"withdrawSuperToken","nameLocation":"6725:18:23","nodeType":"FunctionDefinition","parameters":{"id":10131,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10128,"mutability":"mutable","name":"_superToken","nameLocation":"6752:11:23","nodeType":"VariableDeclaration","scope":10147,"src":"6744:19:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10127,"name":"address","nodeType":"ElementaryTypeName","src":"6744:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10130,"mutability":"mutable","name":"_amount","nameLocation":"6773:7:23","nodeType":"VariableDeclaration","scope":10147,"src":"6765:15:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10129,"name":"uint256","nodeType":"ElementaryTypeName","src":"6765:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6743:38:23"},"returnParameters":{"id":10132,"nodeType":"ParameterList","parameters":[],"src":"6791:0:23"},"scope":10290,"src":"6716:500:23","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[10855],"body":{"id":10162,"nodeType":"Block","src":"7351:68:23","statements":[{"expression":{"arguments":[{"id":10158,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10149,"src":"7393:5:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10159,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10151,"src":"7400:11:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10156,"name":"LibFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13572,"src":"7368:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibFlow_$13572_$","typeString":"type(library LibFlow)"}},"id":10157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7376:16:23","memberName":"_getAmountFlowed","nodeType":"MemberAccess","referencedDeclaration":13056,"src":"7368:24:23","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":10160,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7368:44:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10155,"id":10161,"nodeType":"Return","src":"7361:51:23"}]},"functionSelector":"3870f4a0","id":10163,"implemented":true,"kind":"function","modifiers":[],"name":"getAmountFlowed","nameLocation":"7245:15:23","nodeType":"FunctionDefinition","parameters":{"id":10152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10149,"mutability":"mutable","name":"_user","nameLocation":"7278:5:23","nodeType":"VariableDeclaration","scope":10163,"src":"7270:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10148,"name":"address","nodeType":"ElementaryTypeName","src":"7270:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10151,"mutability":"mutable","name":"_superToken","nameLocation":"7301:11:23","nodeType":"VariableDeclaration","scope":10163,"src":"7293:19:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10150,"name":"address","nodeType":"ElementaryTypeName","src":"7293:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7260:58:23"},"returnParameters":{"id":10155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10154,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10163,"src":"7342:7:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10153,"name":"uint256","nodeType":"ElementaryTypeName","src":"7342:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7341:9:23"},"scope":10290,"src":"7236:183:23","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[10866],"body":{"id":10181,"nodeType":"Block","src":"7570:84:23","statements":[{"expression":{"arguments":[{"id":10176,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10165,"src":"7617:5:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10177,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10167,"src":"7624:11:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10178,"name":"_flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10169,"src":"7637:9:23","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_int96","typeString":"int96"}],"expression":{"id":10174,"name":"LibFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13572,"src":"7587:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibFlow_$13572_$","typeString":"type(library LibFlow)"}},"id":10175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7595:21:23","memberName":"_getValidSafeLifespan","nodeType":"MemberAccess","referencedDeclaration":12910,"src":"7587:29:23","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_int96_$returns$_t_uint256_$","typeString":"function (address,address,int96) view returns (uint256)"}},"id":10179,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7587:60:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10173,"id":10180,"nodeType":"Return","src":"7580:67:23"}]},"functionSelector":"0dfa0b82","id":10182,"implemented":true,"kind":"function","modifiers":[],"name":"getValidSafeLifespan","nameLocation":"7434:20:23","nodeType":"FunctionDefinition","parameters":{"id":10170,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10165,"mutability":"mutable","name":"_user","nameLocation":"7472:5:23","nodeType":"VariableDeclaration","scope":10182,"src":"7464:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10164,"name":"address","nodeType":"ElementaryTypeName","src":"7464:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10167,"mutability":"mutable","name":"_superToken","nameLocation":"7495:11:23","nodeType":"VariableDeclaration","scope":10182,"src":"7487:19:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10166,"name":"address","nodeType":"ElementaryTypeName","src":"7487:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10169,"mutability":"mutable","name":"_flowRate","nameLocation":"7522:9:23","nodeType":"VariableDeclaration","scope":10182,"src":"7516:15:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":10168,"name":"int96","nodeType":"ElementaryTypeName","src":"7516:5:23","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"7454:83:23"},"returnParameters":{"id":10173,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10172,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10182,"src":"7561:7:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10171,"name":"uint256","nodeType":"ElementaryTypeName","src":"7561:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7560:9:23"},"scope":10290,"src":"7425:229:23","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[10875],"body":{"id":10198,"nodeType":"Block","src":"7980:76:23","statements":[{"expression":{"arguments":[{"id":10194,"name":"_viewer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10185,"src":"8027:7:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10195,"name":"_broadcaster","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10187,"src":"8036:12:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10192,"name":"LibFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13572,"src":"7997:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibFlow_$13572_$","typeString":"type(library LibFlow)"}},"id":10193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8005:21:23","memberName":"_isViewSessionAllowed","nodeType":"MemberAccess","referencedDeclaration":13240,"src":"7997:29:23","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":10196,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7997:52:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":10191,"id":10197,"nodeType":"Return","src":"7990:59:23"}]},"documentation":{"id":10183,"nodeType":"StructuredDocumentation","src":"7697:158:23","text":" use `isViewSessionAllowed` to easily determine if viewer can \"join room\" or not\n !! NOT used to determine if can `openFlow` or not..."},"functionSelector":"9a5b5f93","id":10199,"implemented":true,"kind":"function","modifiers":[],"name":"isViewSessionAllowed","nameLocation":"7869:20:23","nodeType":"FunctionDefinition","parameters":{"id":10188,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10185,"mutability":"mutable","name":"_viewer","nameLocation":"7907:7:23","nodeType":"VariableDeclaration","scope":10199,"src":"7899:15:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10184,"name":"address","nodeType":"ElementaryTypeName","src":"7899:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10187,"mutability":"mutable","name":"_broadcaster","nameLocation":"7932:12:23","nodeType":"VariableDeclaration","scope":10199,"src":"7924:20:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10186,"name":"address","nodeType":"ElementaryTypeName","src":"7924:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7889:61:23"},"returnParameters":{"id":10191,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10190,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10199,"src":"7974:4:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10189,"name":"bool","nodeType":"ElementaryTypeName","src":"7974:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7973:6:23"},"scope":10290,"src":"7860:196:23","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[10884],"body":{"id":10214,"nodeType":"Block","src":"8172:66:23","statements":[{"expression":{"arguments":[{"id":10210,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10201,"src":"8212:5:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10211,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10203,"src":"8219:11:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10208,"name":"LibFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13572,"src":"8189:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibFlow_$13572_$","typeString":"type(library LibFlow)"}},"id":10209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8197:14:23","memberName":"_hasActiveFlow","nodeType":"MemberAccess","referencedDeclaration":13110,"src":"8189:22:23","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":10212,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8189:42:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":10207,"id":10213,"nodeType":"Return","src":"8182:49:23"}]},"functionSelector":"468240a9","id":10215,"implemented":true,"kind":"function","modifiers":[],"name":"hasActiveFlow","nameLocation":"8071:13:23","nodeType":"FunctionDefinition","parameters":{"id":10204,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10201,"mutability":"mutable","name":"_user","nameLocation":"8102:5:23","nodeType":"VariableDeclaration","scope":10215,"src":"8094:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10200,"name":"address","nodeType":"ElementaryTypeName","src":"8094:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10203,"mutability":"mutable","name":"_superToken","nameLocation":"8125:11:23","nodeType":"VariableDeclaration","scope":10215,"src":"8117:19:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10202,"name":"address","nodeType":"ElementaryTypeName","src":"8117:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8084:58:23"},"returnParameters":{"id":10207,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10206,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10215,"src":"8166:4:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10205,"name":"bool","nodeType":"ElementaryTypeName","src":"8166:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8165:6:23"},"scope":10290,"src":"8062:176:23","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[10893],"body":{"id":10230,"nodeType":"Block","src":"8373:64:23","statements":[{"expression":{"arguments":[{"id":10226,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10217,"src":"8411:5:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10227,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10219,"src":"8418:11:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10224,"name":"LibFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13572,"src":"8390:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibFlow_$13572_$","typeString":"type(library LibFlow)"}},"id":10225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8398:12:23","memberName":"_getNewNonce","nodeType":"MemberAccess","referencedDeclaration":13258,"src":"8390:20:23","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":10228,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8390:40:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10223,"id":10229,"nodeType":"Return","src":"8383:47:23"}]},"functionSelector":"521d3f3c","id":10231,"implemented":true,"kind":"function","modifiers":[],"name":"getNewFlowNonce","nameLocation":"8267:15:23","nodeType":"FunctionDefinition","parameters":{"id":10220,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10217,"mutability":"mutable","name":"_user","nameLocation":"8300:5:23","nodeType":"VariableDeclaration","scope":10231,"src":"8292:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10216,"name":"address","nodeType":"ElementaryTypeName","src":"8292:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10219,"mutability":"mutable","name":"_superToken","nameLocation":"8323:11:23","nodeType":"VariableDeclaration","scope":10231,"src":"8315:19:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10218,"name":"address","nodeType":"ElementaryTypeName","src":"8315:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8282:58:23"},"returnParameters":{"id":10223,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10222,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10231,"src":"8364:7:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10221,"name":"uint256","nodeType":"ElementaryTypeName","src":"8364:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8363:9:23"},"scope":10290,"src":"8258:179:23","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[10914],"body":{"id":10259,"nodeType":"Block","src":"8662:72:23","statements":[{"expression":{"arguments":[{"id":10254,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10233,"src":"8700:5:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10255,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10235,"src":"8707:11:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10256,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10237,"src":"8720:6:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10252,"name":"LibFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13572,"src":"8679:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibFlow_$13572_$","typeString":"type(library LibFlow)"}},"id":10253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8687:12:23","memberName":"_getFlowData","nodeType":"MemberAccess","referencedDeclaration":13371,"src":"8679:20:23","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes32_$_t_bool_$","typeString":"function (address,address,uint256) view returns (address,uint256,uint256,uint256,bytes32,bool)"}},"id":10257,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8679:48:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes32_$_t_bool_$","typeString":"tuple(address,uint256,uint256,uint256,bytes32,bool)"}},"functionReturnParameters":10251,"id":10258,"nodeType":"Return","src":"8672:55:23"}]},"functionSelector":"54bbc2ad","id":10260,"implemented":true,"kind":"function","modifiers":[],"name":"getFlowData","nameLocation":"8466:11:23","nodeType":"FunctionDefinition","parameters":{"id":10238,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10233,"mutability":"mutable","name":"_user","nameLocation":"8495:5:23","nodeType":"VariableDeclaration","scope":10260,"src":"8487:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10232,"name":"address","nodeType":"ElementaryTypeName","src":"8487:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10235,"mutability":"mutable","name":"_superToken","nameLocation":"8518:11:23","nodeType":"VariableDeclaration","scope":10260,"src":"8510:19:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10234,"name":"address","nodeType":"ElementaryTypeName","src":"8510:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10237,"mutability":"mutable","name":"_nonce","nameLocation":"8547:6:23","nodeType":"VariableDeclaration","scope":10260,"src":"8539:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10236,"name":"uint256","nodeType":"ElementaryTypeName","src":"8539:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8477:82:23"},"returnParameters":{"id":10251,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10240,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10260,"src":"8607:7:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10239,"name":"address","nodeType":"ElementaryTypeName","src":"8607:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10242,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10260,"src":"8616:7:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10241,"name":"uint256","nodeType":"ElementaryTypeName","src":"8616:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10244,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10260,"src":"8625:7:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10243,"name":"uint256","nodeType":"ElementaryTypeName","src":"8625:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10246,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10260,"src":"8634:7:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10245,"name":"uint256","nodeType":"ElementaryTypeName","src":"8634:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10248,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10260,"src":"8643:7:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10247,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8643:7:23","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":10250,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10260,"src":"8652:4:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10249,"name":"bool","nodeType":"ElementaryTypeName","src":"8652:4:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8606:51:23"},"scope":10290,"src":"8457:277:23","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[10923],"body":{"id":10275,"nodeType":"Block","src":"8854:67:23","statements":[{"expression":{"arguments":[{"id":10271,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10262,"src":"8895:5:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10272,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10264,"src":"8902:11:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10269,"name":"LibFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13572,"src":"8871:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibFlow_$13572_$","typeString":"type(library LibFlow)"}},"id":10270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8879:15:23","memberName":"_getDepositUser","nodeType":"MemberAccess","referencedDeclaration":13389,"src":"8871:23:23","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":10273,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8871:43:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10268,"id":10274,"nodeType":"Return","src":"8864:50:23"}]},"functionSelector":"a152ca6f","id":10276,"implemented":true,"kind":"function","modifiers":[],"name":"getDepositUser","nameLocation":"8749:14:23","nodeType":"FunctionDefinition","parameters":{"id":10265,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10262,"mutability":"mutable","name":"_user","nameLocation":"8781:5:23","nodeType":"VariableDeclaration","scope":10276,"src":"8773:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10261,"name":"address","nodeType":"ElementaryTypeName","src":"8773:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10264,"mutability":"mutable","name":"_superToken","nameLocation":"8804:11:23","nodeType":"VariableDeclaration","scope":10276,"src":"8796:19:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10263,"name":"address","nodeType":"ElementaryTypeName","src":"8796:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8763:58:23"},"returnParameters":{"id":10268,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10267,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10276,"src":"8845:7:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10266,"name":"uint256","nodeType":"ElementaryTypeName","src":"8845:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8844:9:23"},"scope":10290,"src":"8740:181:23","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[10930],"body":{"id":10288,"nodeType":"Block","src":"9019:61:23","statements":[{"expression":{"arguments":[{"id":10285,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10278,"src":"9061:11:23","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10283,"name":"LibFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13572,"src":"9036:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibFlow_$13572_$","typeString":"type(library LibFlow)"}},"id":10284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9044:16:23","memberName":"_getDepositTotal","nodeType":"MemberAccess","referencedDeclaration":13403,"src":"9036:24:23","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":10286,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9036:37:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10282,"id":10287,"nodeType":"Return","src":"9029:44:23"}]},"functionSelector":"c76474db","id":10289,"implemented":true,"kind":"function","modifiers":[],"name":"getDepositTotal","nameLocation":"8936:15:23","nodeType":"FunctionDefinition","parameters":{"id":10279,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10278,"mutability":"mutable","name":"_superToken","nameLocation":"8969:11:23","nodeType":"VariableDeclaration","scope":10289,"src":"8961:19:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10277,"name":"address","nodeType":"ElementaryTypeName","src":"8961:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8951:35:23"},"returnParameters":{"id":10282,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10281,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10289,"src":"9010:7:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10280,"name":"uint256","nodeType":"ElementaryTypeName","src":"9010:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9009:9:23"},"scope":10290,"src":"8927:153:23","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":10291,"src":"704:8378:23","usedErrors":[9630,11161,11163,11577,11579,12570,12572,12574,12576,12578,12580,12582,13587]}],"src":"37:9557:23"},"id":23},"contracts/facets/core/Session.sol":{"ast":{"absolutePath":"contracts/facets/core/Session.sol","exportedSymbols":{"ArrayLengthNotMatch":[11575],"ISession":[11002],"LibControl":[12557],"LibSession":[14179],"Session":[10565]},"id":10566,"license":"BUSL-1.1","nodeType":"SourceUnit","nodes":[{"id":10292,"literals":["solidity","^","0.8",".9"],"nodeType":"PragmaDirective","src":"37:23:24"},{"absolutePath":"contracts/libraries/core/LibControl.sol","file":"../../libraries/core/LibControl.sol","id":10295,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10566,"sourceUnit":12558,"src":"62:84:24","symbolAliases":[{"foreign":{"id":10293,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"70:10:24","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":10294,"name":"ArrayLengthNotMatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11575,"src":"82:19:24","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/libraries/core/LibSession.sol","file":"../../libraries/core/LibSession.sol","id":10297,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10566,"sourceUnit":14180,"src":"147:63:24","symbolAliases":[{"foreign":{"id":10296,"name":"LibSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14179,"src":"155:10:24","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/core/ISession.sol","file":"../../interfaces/core/ISession.sol","id":10299,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10566,"sourceUnit":11003,"src":"211:60:24","symbolAliases":[{"foreign":{"id":10298,"name":"ISession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11002,"src":"219:8:24","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":10300,"name":"ISession","nameLocations":["293:8:24"],"nodeType":"IdentifierPath","referencedDeclaration":11002,"src":"293:8:24"},"id":10301,"nodeType":"InheritanceSpecifier","src":"293:8:24"}],"canonicalName":"Session","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":10565,"linearizedBaseContracts":[10565,11002],"name":"Session","nameLocation":"282:7:24","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[10942],"body":{"id":10355,"nodeType":"Block","src":"422:378:24","statements":[{"expression":{"arguments":[{"id":10313,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10303,"src":"471:11:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10310,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"432:10:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$12557_$","typeString":"type(library LibControl)"}},"id":10312,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"443:27:24","memberName":"_requireSuperTokenSupported","nodeType":"MemberAccess","referencedDeclaration":12003,"src":"432:38:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":10314,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"432:51:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10315,"nodeType":"ExpressionStatement","src":"432:51:24"},{"expression":{"arguments":[{"id":10319,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10303,"src":"518:11:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10320,"name":"_flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10305,"src":"531:9:24","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"id":10321,"name":"_tag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10307,"src":"542:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10316,"name":"LibSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14179,"src":"493:10:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibSession_$14179_$","typeString":"type(library LibSession)"}},"id":10318,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"504:13:24","memberName":"_startSession","nodeType":"MemberAccess","referencedDeclaration":13762,"src":"493:24:24","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint96_$_t_uint256_$returns$__$","typeString":"function (address,uint96,uint256)"}},"id":10322,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"493:54:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10323,"nodeType":"ExpressionStatement","src":"493:54:24"},{"assignments":[10328],"declarations":[{"constant":false,"id":10328,"mutability":"mutable","name":"sSession","nameLocation":"592:8:24","nodeType":"VariableDeclaration","scope":10355,"src":"558:42:24","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$13634_storage_ptr","typeString":"struct LibSession.StorageSession"},"typeName":{"id":10327,"nodeType":"UserDefinedTypeName","pathNode":{"id":10326,"name":"LibSession.StorageSession","nameLocations":["558:10:24","569:14:24"],"nodeType":"IdentifierPath","referencedDeclaration":13634,"src":"558:25:24"},"referencedDeclaration":13634,"src":"558:25:24","typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$13634_storage_ptr","typeString":"struct LibSession.StorageSession"}},"visibility":"internal"}],"id":10332,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10329,"name":"LibSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14179,"src":"603:10:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibSession_$14179_$","typeString":"type(library LibSession)"}},"id":10330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"627:15:24","memberName":"_storageSession","nodeType":"MemberAccess","referencedDeclaration":13646,"src":"603:39:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageSession_$13634_storage_ptr_$","typeString":"function () pure returns (struct LibSession.StorageSession storage pointer)"}},"id":10331,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"603:41:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$13634_storage_ptr","typeString":"struct LibSession.StorageSession storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"558:86:24"},{"expression":{"id":10342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":10333,"name":"sSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10328,"src":"655:8:24","typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$13634_storage_ptr","typeString":"struct LibSession.StorageSession storage pointer"}},"id":10337,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"664:14:24","memberName":"sessionCurrent","nodeType":"MemberAccess","referencedDeclaration":13633,"src":"655:23:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_SessionCurrent_$13604_storage_$","typeString":"mapping(address => struct LibSession.SessionCurrent storage ref)"}},"id":10338,"indexExpression":{"expression":{"id":10335,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"679:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10336,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"683:6:24","memberName":"sender","nodeType":"MemberAccess","src":"679:10:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"655:35:24","typeDescriptions":{"typeIdentifier":"t_struct$_SessionCurrent_$13604_storage","typeString":"struct LibSession.SessionCurrent storage ref"}},"id":10339,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"691:9:24","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":13600,"src":"655:45:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":10340,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"703:5:24","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":10341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"709:9:24","memberName":"timestamp","nodeType":"MemberAccess","src":"703:15:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"655:63:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10343,"nodeType":"ExpressionStatement","src":"655:63:24"},{"expression":{"arguments":[{"id":10352,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10303,"src":"781:11:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"baseExpression":{"expression":{"id":10344,"name":"sSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10328,"src":"728:8:24","typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$13634_storage_ptr","typeString":"struct LibSession.StorageSession storage pointer"}},"id":10348,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"737:14:24","memberName":"sessionCurrent","nodeType":"MemberAccess","referencedDeclaration":13633,"src":"728:23:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_SessionCurrent_$13604_storage_$","typeString":"mapping(address => struct LibSession.SessionCurrent storage ref)"}},"id":10349,"indexExpression":{"expression":{"id":10346,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"752:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"756:6:24","memberName":"sender","nodeType":"MemberAccess","src":"752:10:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"728:35:24","typeDescriptions":{"typeIdentifier":"t_struct$_SessionCurrent_$13604_storage","typeString":"struct LibSession.SessionCurrent storage ref"}},"id":10350,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"764:11:24","memberName":"superTokens","nodeType":"MemberAccess","referencedDeclaration":13603,"src":"728:47:24","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":10351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"776:4:24","memberName":"push","nodeType":"MemberAccess","src":"728:52:24","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$_t_address_$returns$__$attached_to$_t_array$_t_address_$dyn_storage_ptr_$","typeString":"function (address[] storage pointer,address)"}},"id":10353,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"728:65:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10354,"nodeType":"ExpressionStatement","src":"728:65:24"}]},"functionSelector":"7fe70a27","id":10356,"implemented":true,"kind":"function","modifiers":[],"name":"startSession","nameLocation":"317:12:24","nodeType":"FunctionDefinition","parameters":{"id":10308,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10303,"mutability":"mutable","name":"_superToken","nameLocation":"347:11:24","nodeType":"VariableDeclaration","scope":10356,"src":"339:19:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10302,"name":"address","nodeType":"ElementaryTypeName","src":"339:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10305,"mutability":"mutable","name":"_flowRate","nameLocation":"375:9:24","nodeType":"VariableDeclaration","scope":10356,"src":"368:16:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":10304,"name":"uint96","nodeType":"ElementaryTypeName","src":"368:6:24","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":10307,"mutability":"mutable","name":"_tag","nameLocation":"402:4:24","nodeType":"VariableDeclaration","scope":10356,"src":"394:12:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10306,"name":"uint256","nodeType":"ElementaryTypeName","src":"394:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"329:83:24"},"returnParameters":{"id":10309,"nodeType":"ParameterList","parameters":[],"src":"422:0:24"},"scope":10565,"src":"308:492:24","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[10947],"body":{"id":10376,"nodeType":"Block","src":"1012:525:24","statements":[{"documentation":" don't need to check if supertoken suppported or not\n as there may be a chance that a supported supertoken\n gets removed but there is still session active with the\n supertoken\n in that case, just let user withdraw as will fail anyway if 0 amount","expression":{"arguments":[{"id":10364,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10358,"src":"1446:11:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10361,"name":"LibSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14179,"src":"1422:10:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibSession_$14179_$","typeString":"type(library LibSession)"}},"id":10363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1433:12:24","memberName":"_stopSession","nodeType":"MemberAccess","referencedDeclaration":13859,"src":"1422:23:24","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":10365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1422:36:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10366,"nodeType":"ExpressionStatement","src":"1422:36:24"},{"expression":{"id":10374,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"1468:62:24","subExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10367,"name":"LibSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14179,"src":"1475:10:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibSession_$14179_$","typeString":"type(library LibSession)"}},"id":10368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1486:15:24","memberName":"_storageSession","nodeType":"MemberAccess","referencedDeclaration":13646,"src":"1475:26:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageSession_$13634_storage_ptr_$","typeString":"function () pure returns (struct LibSession.StorageSession storage pointer)"}},"id":10369,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1475:28:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$13634_storage_ptr","typeString":"struct LibSession.StorageSession storage pointer"}},"id":10370,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1504:14:24","memberName":"sessionCurrent","nodeType":"MemberAccess","referencedDeclaration":13633,"src":"1475:43:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_SessionCurrent_$13604_storage_$","typeString":"mapping(address => struct LibSession.SessionCurrent storage ref)"}},"id":10373,"indexExpression":{"expression":{"id":10371,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1519:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1523:6:24","memberName":"sender","nodeType":"MemberAccess","src":"1519:10:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1475:55:24","typeDescriptions":{"typeIdentifier":"t_struct$_SessionCurrent_$13604_storage","typeString":"struct LibSession.SessionCurrent storage ref"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10375,"nodeType":"ExpressionStatement","src":"1468:62:24"}]},"functionSelector":"b233bd05","id":10377,"implemented":true,"kind":"function","modifiers":[],"name":"stopSession","nameLocation":"970:11:24","nodeType":"FunctionDefinition","parameters":{"id":10359,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10358,"mutability":"mutable","name":"_superToken","nameLocation":"990:11:24","nodeType":"VariableDeclaration","scope":10377,"src":"982:19:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10357,"name":"address","nodeType":"ElementaryTypeName","src":"982:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"981:21:24"},"returnParameters":{"id":10360,"nodeType":"ParameterList","parameters":[],"src":"1012:0:24"},"scope":10565,"src":"961:576:24","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[10959],"body":{"id":10469,"nodeType":"Block","src":"1702:627:24","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":10389,"name":"_superTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10380,"src":"1729:12:24","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":10390,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1742:6:24","memberName":"length","nodeType":"MemberAccess","src":"1729:19:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":10391,"name":"_flowRates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10383,"src":"1752:10:24","typeDescriptions":{"typeIdentifier":"t_array$_t_uint96_$dyn_memory_ptr","typeString":"uint96[] memory"}},"id":10392,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1763:6:24","memberName":"length","nodeType":"MemberAccess","src":"1752:17:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1729:40:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":10394,"name":"_superTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10380,"src":"1785:12:24","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":10395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1798:6:24","memberName":"length","nodeType":"MemberAccess","src":"1785:19:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":10396,"name":"_tags","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10386,"src":"1808:5:24","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":10397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1814:6:24","memberName":"length","nodeType":"MemberAccess","src":"1808:12:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1785:35:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1729:91:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10403,"nodeType":"IfStatement","src":"1712:147:24","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":10400,"name":"ArrayLengthNotMatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11575,"src":"1838:19:24","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":10401,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1838:21:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10402,"nodeType":"RevertStatement","src":"1831:28:24"}},{"body":{"id":10437,"nodeType":"Block","src":"1920:160:24","statements":[{"expression":{"arguments":[{"baseExpression":{"id":10418,"name":"_superTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10380,"src":"1973:12:24","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":10420,"indexExpression":{"id":10419,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10405,"src":"1986:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1973:15:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10415,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"1934:10:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$12557_$","typeString":"type(library LibControl)"}},"id":10417,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1945:27:24","memberName":"_requireSuperTokenSupported","nodeType":"MemberAccess","referencedDeclaration":12003,"src":"1934:38:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":10421,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1934:55:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10422,"nodeType":"ExpressionStatement","src":"1934:55:24"},{"expression":{"arguments":[{"baseExpression":{"id":10426,"name":"_superTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10380,"src":"2028:12:24","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":10428,"indexExpression":{"id":10427,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10405,"src":"2041:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2028:15:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":10429,"name":"_flowRates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10383,"src":"2045:10:24","typeDescriptions":{"typeIdentifier":"t_array$_t_uint96_$dyn_memory_ptr","typeString":"uint96[] memory"}},"id":10431,"indexExpression":{"id":10430,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10405,"src":"2056:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2045:13:24","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"baseExpression":{"id":10432,"name":"_tags","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10386,"src":"2060:5:24","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":10434,"indexExpression":{"id":10433,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10405,"src":"2066:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2060:8:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10423,"name":"LibSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14179,"src":"2003:10:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibSession_$14179_$","typeString":"type(library LibSession)"}},"id":10425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2014:13:24","memberName":"_startSession","nodeType":"MemberAccess","referencedDeclaration":13762,"src":"2003:24:24","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint96_$_t_uint256_$returns$__$","typeString":"function (address,uint96,uint256)"}},"id":10435,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2003:66:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10436,"nodeType":"ExpressionStatement","src":"2003:66:24"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10411,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10408,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10405,"src":"1890:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":10409,"name":"_superTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10380,"src":"1894:12:24","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":10410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1907:6:24","memberName":"length","nodeType":"MemberAccess","src":"1894:19:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1890:23:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10438,"initializationExpression":{"assignments":[10405],"declarations":[{"constant":false,"id":10405,"mutability":"mutable","name":"i","nameLocation":"1883:1:24","nodeType":"VariableDeclaration","scope":10438,"src":"1875:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10404,"name":"uint256","nodeType":"ElementaryTypeName","src":"1875:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10407,"initialValue":{"hexValue":"30","id":10406,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1887:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"1875:13:24"},"loopExpression":{"expression":{"id":10413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"1915:3:24","subExpression":{"id":10412,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10405,"src":"1915:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10414,"nodeType":"ExpressionStatement","src":"1915:3:24"},"nodeType":"ForStatement","src":"1870:210:24"},{"assignments":[10443],"declarations":[{"constant":false,"id":10443,"mutability":"mutable","name":"sSession","nameLocation":"2124:8:24","nodeType":"VariableDeclaration","scope":10469,"src":"2090:42:24","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$13634_storage_ptr","typeString":"struct LibSession.StorageSession"},"typeName":{"id":10442,"nodeType":"UserDefinedTypeName","pathNode":{"id":10441,"name":"LibSession.StorageSession","nameLocations":["2090:10:24","2101:14:24"],"nodeType":"IdentifierPath","referencedDeclaration":13634,"src":"2090:25:24"},"referencedDeclaration":13634,"src":"2090:25:24","typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$13634_storage_ptr","typeString":"struct LibSession.StorageSession"}},"visibility":"internal"}],"id":10447,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10444,"name":"LibSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14179,"src":"2135:10:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibSession_$14179_$","typeString":"type(library LibSession)"}},"id":10445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2159:15:24","memberName":"_storageSession","nodeType":"MemberAccess","referencedDeclaration":13646,"src":"2135:39:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageSession_$13634_storage_ptr_$","typeString":"function () pure returns (struct LibSession.StorageSession storage pointer)"}},"id":10446,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2135:41:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$13634_storage_ptr","typeString":"struct LibSession.StorageSession storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2090:86:24"},{"expression":{"id":10457,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":10448,"name":"sSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10443,"src":"2187:8:24","typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$13634_storage_ptr","typeString":"struct LibSession.StorageSession storage pointer"}},"id":10452,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2196:14:24","memberName":"sessionCurrent","nodeType":"MemberAccess","referencedDeclaration":13633,"src":"2187:23:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_SessionCurrent_$13604_storage_$","typeString":"mapping(address => struct LibSession.SessionCurrent storage ref)"}},"id":10453,"indexExpression":{"expression":{"id":10450,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2211:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2215:6:24","memberName":"sender","nodeType":"MemberAccess","src":"2211:10:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2187:35:24","typeDescriptions":{"typeIdentifier":"t_struct$_SessionCurrent_$13604_storage","typeString":"struct LibSession.SessionCurrent storage ref"}},"id":10454,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2223:9:24","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":13600,"src":"2187:45:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":10455,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"2235:5:24","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":10456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2241:9:24","memberName":"timestamp","nodeType":"MemberAccess","src":"2235:15:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2187:63:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10458,"nodeType":"ExpressionStatement","src":"2187:63:24"},{"expression":{"id":10467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":10459,"name":"sSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10443,"src":"2260:8:24","typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$13634_storage_ptr","typeString":"struct LibSession.StorageSession storage pointer"}},"id":10463,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2269:14:24","memberName":"sessionCurrent","nodeType":"MemberAccess","referencedDeclaration":13633,"src":"2260:23:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_SessionCurrent_$13604_storage_$","typeString":"mapping(address => struct LibSession.SessionCurrent storage ref)"}},"id":10464,"indexExpression":{"expression":{"id":10461,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2284:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2288:6:24","memberName":"sender","nodeType":"MemberAccess","src":"2284:10:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2260:35:24","typeDescriptions":{"typeIdentifier":"t_struct$_SessionCurrent_$13604_storage","typeString":"struct LibSession.SessionCurrent storage ref"}},"id":10465,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2296:11:24","memberName":"superTokens","nodeType":"MemberAccess","referencedDeclaration":13603,"src":"2260:47:24","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10466,"name":"_superTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10380,"src":"2310:12:24","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"2260:62:24","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":10468,"nodeType":"ExpressionStatement","src":"2260:62:24"}]},"functionSelector":"f437a7a5","id":10470,"implemented":true,"kind":"function","modifiers":[],"name":"startSessions","nameLocation":"1566:13:24","nodeType":"FunctionDefinition","parameters":{"id":10387,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10380,"mutability":"mutable","name":"_superTokens","nameLocation":"1606:12:24","nodeType":"VariableDeclaration","scope":10470,"src":"1589:29:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":10378,"name":"address","nodeType":"ElementaryTypeName","src":"1589:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10379,"nodeType":"ArrayTypeName","src":"1589:9:24","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":10383,"mutability":"mutable","name":"_flowRates","nameLocation":"1644:10:24","nodeType":"VariableDeclaration","scope":10470,"src":"1628:26:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint96_$dyn_memory_ptr","typeString":"uint96[]"},"typeName":{"baseType":{"id":10381,"name":"uint96","nodeType":"ElementaryTypeName","src":"1628:6:24","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"id":10382,"nodeType":"ArrayTypeName","src":"1628:8:24","typeDescriptions":{"typeIdentifier":"t_array$_t_uint96_$dyn_storage_ptr","typeString":"uint96[]"}},"visibility":"internal"},{"constant":false,"id":10386,"mutability":"mutable","name":"_tags","nameLocation":"1681:5:24","nodeType":"VariableDeclaration","scope":10470,"src":"1664:22:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":10384,"name":"uint256","nodeType":"ElementaryTypeName","src":"1664:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10385,"nodeType":"ArrayTypeName","src":"1664:9:24","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"1579:113:24"},"returnParameters":{"id":10388,"nodeType":"ParameterList","parameters":[],"src":"1702:0:24"},"scope":10565,"src":"1557:772:24","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[10965],"body":{"id":10506,"nodeType":"Block","src":"2397:640:24","statements":[{"body":{"id":10495,"nodeType":"Block","src":"2457:501:24","statements":[{"documentation":" don't need to check if supertoken suppported or not\n as there may be a chance that a supported supertoken\n gets removed but there is still session active with the\n supertoken\n in that case, just let user withdraw as will fail anyway if 0 amount","expression":{"arguments":[{"baseExpression":{"id":10490,"name":"_superTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10473,"src":"2931:12:24","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":10492,"indexExpression":{"id":10491,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10477,"src":"2944:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2931:15:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10487,"name":"LibSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14179,"src":"2907:10:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibSession_$14179_$","typeString":"type(library LibSession)"}},"id":10489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2918:12:24","memberName":"_stopSession","nodeType":"MemberAccess","referencedDeclaration":13859,"src":"2907:23:24","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":10493,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2907:40:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10494,"nodeType":"ExpressionStatement","src":"2907:40:24"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10480,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10477,"src":"2427:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":10481,"name":"_superTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10473,"src":"2431:12:24","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":10482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2444:6:24","memberName":"length","nodeType":"MemberAccess","src":"2431:19:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2427:23:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10496,"initializationExpression":{"assignments":[10477],"declarations":[{"constant":false,"id":10477,"mutability":"mutable","name":"i","nameLocation":"2420:1:24","nodeType":"VariableDeclaration","scope":10496,"src":"2412:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10476,"name":"uint256","nodeType":"ElementaryTypeName","src":"2412:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10479,"initialValue":{"hexValue":"30","id":10478,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2424:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2412:13:24"},"loopExpression":{"expression":{"id":10485,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2452:3:24","subExpression":{"id":10484,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10477,"src":"2452:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10486,"nodeType":"ExpressionStatement","src":"2452:3:24"},"nodeType":"ForStatement","src":"2407:551:24"},{"expression":{"id":10504,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"2968:62:24","subExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10497,"name":"LibSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14179,"src":"2975:10:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibSession_$14179_$","typeString":"type(library LibSession)"}},"id":10498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2986:15:24","memberName":"_storageSession","nodeType":"MemberAccess","referencedDeclaration":13646,"src":"2975:26:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageSession_$13634_storage_ptr_$","typeString":"function () pure returns (struct LibSession.StorageSession storage pointer)"}},"id":10499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2975:28:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$13634_storage_ptr","typeString":"struct LibSession.StorageSession storage pointer"}},"id":10500,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3004:14:24","memberName":"sessionCurrent","nodeType":"MemberAccess","referencedDeclaration":13633,"src":"2975:43:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_SessionCurrent_$13604_storage_$","typeString":"mapping(address => struct LibSession.SessionCurrent storage ref)"}},"id":10503,"indexExpression":{"expression":{"id":10501,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3019:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10502,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3023:6:24","memberName":"sender","nodeType":"MemberAccess","src":"3019:10:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2975:55:24","typeDescriptions":{"typeIdentifier":"t_struct$_SessionCurrent_$13604_storage","typeString":"struct LibSession.SessionCurrent storage ref"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10505,"nodeType":"ExpressionStatement","src":"2968:62:24"}]},"functionSelector":"9afffbf9","id":10507,"implemented":true,"kind":"function","modifiers":[],"name":"stopSessions","nameLocation":"2344:12:24","nodeType":"FunctionDefinition","parameters":{"id":10474,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10473,"mutability":"mutable","name":"_superTokens","nameLocation":"2374:12:24","nodeType":"VariableDeclaration","scope":10507,"src":"2357:29:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":10471,"name":"address","nodeType":"ElementaryTypeName","src":"2357:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10472,"nodeType":"ArrayTypeName","src":"2357:9:24","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"2356:31:24"},"returnParameters":{"id":10475,"nodeType":"ParameterList","parameters":[],"src":"2397:0:24"},"scope":10565,"src":"2335:702:24","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[10974],"body":{"id":10522,"nodeType":"Block","src":"3161:67:24","statements":[{"expression":{"arguments":[{"id":10518,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10509,"src":"3202:5:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10519,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10511,"src":"3209:11:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10516,"name":"LibSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14179,"src":"3178:10:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibSession_$14179_$","typeString":"type(library LibSession)"}},"id":10517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3189:12:24","memberName":"_getNewNonce","nodeType":"MemberAccess","referencedDeclaration":13956,"src":"3178:23:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":10520,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3178:43:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10515,"id":10521,"nodeType":"Return","src":"3171:50:24"}]},"functionSelector":"92c2226e","id":10523,"implemented":true,"kind":"function","modifiers":[],"name":"getNewSessionNonce","nameLocation":"3052:18:24","nodeType":"FunctionDefinition","parameters":{"id":10512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10509,"mutability":"mutable","name":"_user","nameLocation":"3088:5:24","nodeType":"VariableDeclaration","scope":10523,"src":"3080:13:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10508,"name":"address","nodeType":"ElementaryTypeName","src":"3080:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10511,"mutability":"mutable","name":"_superToken","nameLocation":"3111:11:24","nodeType":"VariableDeclaration","scope":10523,"src":"3103:19:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10510,"name":"address","nodeType":"ElementaryTypeName","src":"3103:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3070:58:24"},"returnParameters":{"id":10515,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10514,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10523,"src":"3152:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10513,"name":"uint256","nodeType":"ElementaryTypeName","src":"3152:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3151:9:24"},"scope":10565,"src":"3043:185:24","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[10991],"body":{"id":10547,"nodeType":"Block","src":"3396:78:24","statements":[{"expression":{"arguments":[{"id":10542,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10525,"src":"3440:5:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10543,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10527,"src":"3447:11:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10544,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10529,"src":"3460:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10540,"name":"LibSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14179,"src":"3413:10:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibSession_$14179_$","typeString":"type(library LibSession)"}},"id":10541,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3424:15:24","memberName":"_getSessionData","nodeType":"MemberAccess","referencedDeclaration":14070,"src":"3413:26:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_int96_$_t_uint96_$_t_uint256_$_t_uint256_$","typeString":"function (address,address,uint256) view returns (int96,uint96,uint256,uint256)"}},"id":10545,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3413:54:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int96_$_t_uint96_$_t_uint256_$_t_uint256_$","typeString":"tuple(int96,uint96,uint256,uint256)"}},"functionReturnParameters":10539,"id":10546,"nodeType":"Return","src":"3406:61:24"}]},"functionSelector":"8ff3849b","id":10548,"implemented":true,"kind":"function","modifiers":[],"name":"getSessionData","nameLocation":"3243:14:24","nodeType":"FunctionDefinition","parameters":{"id":10530,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10525,"mutability":"mutable","name":"_user","nameLocation":"3275:5:24","nodeType":"VariableDeclaration","scope":10548,"src":"3267:13:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10524,"name":"address","nodeType":"ElementaryTypeName","src":"3267:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10527,"mutability":"mutable","name":"_superToken","nameLocation":"3298:11:24","nodeType":"VariableDeclaration","scope":10548,"src":"3290:19:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10526,"name":"address","nodeType":"ElementaryTypeName","src":"3290:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10529,"mutability":"mutable","name":"_nonce","nameLocation":"3327:6:24","nodeType":"VariableDeclaration","scope":10548,"src":"3319:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10528,"name":"uint256","nodeType":"ElementaryTypeName","src":"3319:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3257:82:24"},"returnParameters":{"id":10539,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10532,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10548,"src":"3363:5:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":10531,"name":"int96","nodeType":"ElementaryTypeName","src":"3363:5:24","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"},{"constant":false,"id":10534,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10548,"src":"3370:6:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":10533,"name":"uint96","nodeType":"ElementaryTypeName","src":"3370:6:24","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":10536,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10548,"src":"3378:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10535,"name":"uint256","nodeType":"ElementaryTypeName","src":"3378:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10538,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10548,"src":"3387:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10537,"name":"uint256","nodeType":"ElementaryTypeName","src":"3387:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3362:33:24"},"scope":10565,"src":"3234:240:24","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[11001],"body":{"id":10563,"nodeType":"Block","src":"3590:64:24","statements":[{"expression":{"arguments":[{"id":10560,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10550,"src":"3641:5:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10558,"name":"LibSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14179,"src":"3607:10:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibSession_$14179_$","typeString":"type(library LibSession)"}},"id":10559,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3618:22:24","memberName":"_getCurrentSessionData","nodeType":"MemberAccess","referencedDeclaration":14010,"src":"3607:33:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (address) view returns (uint256,address[] memory)"}},"id":10561,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3607:40:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"tuple(uint256,address[] memory)"}},"functionReturnParameters":10557,"id":10562,"nodeType":"Return","src":"3600:47:24"}]},"functionSelector":"53732469","id":10564,"implemented":true,"kind":"function","modifiers":[],"name":"getCurrentSessionData","nameLocation":"3489:21:24","nodeType":"FunctionDefinition","parameters":{"id":10551,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10550,"mutability":"mutable","name":"_user","nameLocation":"3528:5:24","nodeType":"VariableDeclaration","scope":10564,"src":"3520:13:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10549,"name":"address","nodeType":"ElementaryTypeName","src":"3520:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3510:29:24"},"returnParameters":{"id":10557,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10553,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10564,"src":"3563:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10552,"name":"uint256","nodeType":"ElementaryTypeName","src":"3563:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10556,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10564,"src":"3572:16:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":10554,"name":"address","nodeType":"ElementaryTypeName","src":"3572:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10555,"nodeType":"ArrayTypeName","src":"3572:9:24","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"3562:27:24"},"scope":10565,"src":"3480:174:24","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":10566,"src":"273:3383:24","usedErrors":[11575,11577,11589,12578,13585,13587,13589]}],"src":"37:3620:24"},"id":24},"contracts/interfaces/core/IAutomate.sol":{"ast":{"absolutePath":"contracts/interfaces/core/IAutomate.sol","exportedSymbols":{"IAutomate":[10604]},"id":10605,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":10567,"literals":["solidity","^","0.8",".9"],"nodeType":"PragmaDirective","src":"32:23:25"},{"abstract":false,"baseContracts":[],"canonicalName":"IAutomate","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":10604,"linearizedBaseContracts":[10604],"name":"IAutomate","nameLocation":"67:9:25","nodeType":"ContractDefinition","nodes":[{"functionSelector":"71ebf6f4","id":10572,"implemented":false,"kind":"function","modifiers":[],"name":"setGelatoContracts","nameLocation":"92:18:25","nodeType":"FunctionDefinition","parameters":{"id":10570,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10569,"mutability":"mutable","name":"_ops","nameLocation":"119:4:25","nodeType":"VariableDeclaration","scope":10572,"src":"111:12:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10568,"name":"address","nodeType":"ElementaryTypeName","src":"111:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"110:14:25"},"returnParameters":{"id":10571,"nodeType":"ParameterList","parameters":[],"src":"133:0:25"},"scope":10604,"src":"83:51:25","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"bb6bd765","id":10585,"implemented":false,"kind":"function","modifiers":[],"name":"getGelatoAddresses","nameLocation":"149:18:25","nodeType":"FunctionDefinition","parameters":{"id":10573,"nodeType":"ParameterList","parameters":[],"src":"167:2:25"},"returnParameters":{"id":10584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10575,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10585,"src":"217:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10574,"name":"address","nodeType":"ElementaryTypeName","src":"217:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10577,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10585,"src":"226:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10576,"name":"address","nodeType":"ElementaryTypeName","src":"226:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10579,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10585,"src":"235:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10578,"name":"address","nodeType":"ElementaryTypeName","src":"235:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10581,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10585,"src":"244:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10580,"name":"address","nodeType":"ElementaryTypeName","src":"244:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10583,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10585,"src":"253:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10582,"name":"address","nodeType":"ElementaryTypeName","src":"253:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"216:45:25"},"scope":10604,"src":"140:122:25","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"a6f9223d","id":10590,"implemented":false,"kind":"function","modifiers":[],"name":"withdrawGelatoFunds","nameLocation":"277:19:25","nodeType":"FunctionDefinition","parameters":{"id":10588,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10587,"mutability":"mutable","name":"_amount","nameLocation":"305:7:25","nodeType":"VariableDeclaration","scope":10590,"src":"297:15:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10586,"name":"uint256","nodeType":"ElementaryTypeName","src":"297:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"296:17:25"},"returnParameters":{"id":10589,"nodeType":"ParameterList","parameters":[],"src":"322:0:25"},"scope":10604,"src":"268:55:25","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"1674bc24","id":10593,"implemented":false,"kind":"function","modifiers":[],"name":"depositGelatoFunds","nameLocation":"338:18:25","nodeType":"FunctionDefinition","parameters":{"id":10591,"nodeType":"ParameterList","parameters":[],"src":"356:2:25"},"returnParameters":{"id":10592,"nodeType":"ParameterList","parameters":[],"src":"375:0:25"},"scope":10604,"src":"329:47:25","stateMutability":"payable","virtual":false,"visibility":"external"},{"functionSelector":"2e4b6945","id":10598,"implemented":false,"kind":"function","modifiers":[],"name":"setMinimumAppGelatoBalance","nameLocation":"391:26:25","nodeType":"FunctionDefinition","parameters":{"id":10596,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10595,"mutability":"mutable","name":"_value","nameLocation":"426:6:25","nodeType":"VariableDeclaration","scope":10598,"src":"418:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10594,"name":"uint256","nodeType":"ElementaryTypeName","src":"418:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"417:16:25"},"returnParameters":{"id":10597,"nodeType":"ParameterList","parameters":[],"src":"442:0:25"},"scope":10604,"src":"382:61:25","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"f24a25de","id":10603,"implemented":false,"kind":"function","modifiers":[],"name":"getMinimumAppGelatoBalance","nameLocation":"458:26:25","nodeType":"FunctionDefinition","parameters":{"id":10599,"nodeType":"ParameterList","parameters":[],"src":"484:2:25"},"returnParameters":{"id":10602,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10601,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10603,"src":"510:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10600,"name":"uint256","nodeType":"ElementaryTypeName","src":"510:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"509:9:25"},"scope":10604,"src":"449:70:25","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":10605,"src":"57:464:25","usedErrors":[]}],"src":"32:490:25"},"id":25},"contracts/interfaces/core/IControl.sol":{"ast":{"absolutePath":"contracts/interfaces/core/IControl.sol","exportedSymbols":{"IControl":[10801]},"id":10802,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":10606,"literals":["solidity","^","0.8",".9"],"nodeType":"PragmaDirective","src":"32:23:26"},{"abstract":false,"baseContracts":[],"canonicalName":"IControl","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":10801,"linearizedBaseContracts":[10801],"name":"IControl","nameLocation":"67:8:26","nodeType":"ContractDefinition","nodes":[{"functionSelector":"46a5d043","id":10613,"implemented":false,"kind":"function","modifiers":[],"name":"depositAsset","nameLocation":"91:12:26","nodeType":"FunctionDefinition","parameters":{"id":10611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10608,"mutability":"mutable","name":"_superToken","nameLocation":"112:11:26","nodeType":"VariableDeclaration","scope":10613,"src":"104:19:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10607,"name":"address","nodeType":"ElementaryTypeName","src":"104:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10610,"mutability":"mutable","name":"_amount","nameLocation":"133:7:26","nodeType":"VariableDeclaration","scope":10613,"src":"125:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10609,"name":"uint256","nodeType":"ElementaryTypeName","src":"125:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"103:38:26"},"returnParameters":{"id":10612,"nodeType":"ParameterList","parameters":[],"src":"150:0:26"},"scope":10801,"src":"82:69:26","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"38e4f064","id":10620,"implemented":false,"kind":"function","modifiers":[],"name":"withdrawAsset","nameLocation":"166:13:26","nodeType":"FunctionDefinition","parameters":{"id":10618,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10615,"mutability":"mutable","name":"_superToken","nameLocation":"188:11:26","nodeType":"VariableDeclaration","scope":10620,"src":"180:19:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10614,"name":"address","nodeType":"ElementaryTypeName","src":"180:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10617,"mutability":"mutable","name":"_amount","nameLocation":"209:7:26","nodeType":"VariableDeclaration","scope":10620,"src":"201:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10616,"name":"uint256","nodeType":"ElementaryTypeName","src":"201:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"179:38:26"},"returnParameters":{"id":10619,"nodeType":"ParameterList","parameters":[],"src":"226:0:26"},"scope":10801,"src":"157:70:26","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"ebaae661","id":10627,"implemented":false,"kind":"function","modifiers":[],"name":"withdrawFeeBalance","nameLocation":"242:18:26","nodeType":"FunctionDefinition","parameters":{"id":10625,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10622,"mutability":"mutable","name":"_superToken","nameLocation":"269:11:26","nodeType":"VariableDeclaration","scope":10627,"src":"261:19:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10621,"name":"address","nodeType":"ElementaryTypeName","src":"261:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10624,"mutability":"mutable","name":"_amount","nameLocation":"290:7:26","nodeType":"VariableDeclaration","scope":10627,"src":"282:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10623,"name":"uint256","nodeType":"ElementaryTypeName","src":"282:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"260:38:26"},"returnParameters":{"id":10626,"nodeType":"ParameterList","parameters":[],"src":"307:0:26"},"scope":10801,"src":"233:75:26","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"adefe35e","id":10634,"implemented":false,"kind":"function","modifiers":[],"name":"realizeFeeBalance","nameLocation":"323:17:26","nodeType":"FunctionDefinition","parameters":{"id":10632,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10629,"mutability":"mutable","name":"count","nameLocation":"349:5:26","nodeType":"VariableDeclaration","scope":10634,"src":"341:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10628,"name":"uint256","nodeType":"ElementaryTypeName","src":"341:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10631,"mutability":"mutable","name":"_superToken","nameLocation":"364:11:26","nodeType":"VariableDeclaration","scope":10634,"src":"356:19:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10630,"name":"address","nodeType":"ElementaryTypeName","src":"356:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"340:36:26"},"returnParameters":{"id":10633,"nodeType":"ParameterList","parameters":[],"src":"385:0:26"},"scope":10801,"src":"314:72:26","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"578dc59a","id":10639,"implemented":false,"kind":"function","modifiers":[],"name":"setMinimumEndDuration","nameLocation":"401:21:26","nodeType":"FunctionDefinition","parameters":{"id":10637,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10636,"mutability":"mutable","name":"_duration","nameLocation":"431:9:26","nodeType":"VariableDeclaration","scope":10639,"src":"423:17:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10635,"name":"uint256","nodeType":"ElementaryTypeName","src":"423:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"422:19:26"},"returnParameters":{"id":10638,"nodeType":"ParameterList","parameters":[],"src":"450:0:26"},"scope":10801,"src":"392:59:26","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"245b6c93","id":10644,"implemented":false,"kind":"function","modifiers":[],"name":"setMinimumLifespan","nameLocation":"466:18:26","nodeType":"FunctionDefinition","parameters":{"id":10642,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10641,"mutability":"mutable","name":"_duration","nameLocation":"493:9:26","nodeType":"VariableDeclaration","scope":10644,"src":"485:17:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10640,"name":"uint256","nodeType":"ElementaryTypeName","src":"485:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"484:19:26"},"returnParameters":{"id":10643,"nodeType":"ParameterList","parameters":[],"src":"512:0:26"},"scope":10801,"src":"457:56:26","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"487eb939","id":10649,"implemented":false,"kind":"function","modifiers":[],"name":"setSTBufferAmount","nameLocation":"528:17:26","nodeType":"FunctionDefinition","parameters":{"id":10647,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10646,"mutability":"mutable","name":"_duration","nameLocation":"554:9:26","nodeType":"VariableDeclaration","scope":10649,"src":"546:17:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10645,"name":"uint256","nodeType":"ElementaryTypeName","src":"546:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"545:19:26"},"returnParameters":{"id":10648,"nodeType":"ParameterList","parameters":[],"src":"573:0:26"},"scope":10801,"src":"519:55:26","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"22c3a21f","id":10654,"implemented":false,"kind":"function","modifiers":[],"name":"addSuperToken","nameLocation":"589:13:26","nodeType":"FunctionDefinition","parameters":{"id":10652,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10651,"mutability":"mutable","name":"_superToken","nameLocation":"611:11:26","nodeType":"VariableDeclaration","scope":10654,"src":"603:19:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10650,"name":"address","nodeType":"ElementaryTypeName","src":"603:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"602:21:26"},"returnParameters":{"id":10653,"nodeType":"ParameterList","parameters":[],"src":"632:0:26"},"scope":10801,"src":"580:53:26","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"83807889","id":10659,"implemented":false,"kind":"function","modifiers":[],"name":"removeSuperToken","nameLocation":"648:16:26","nodeType":"FunctionDefinition","parameters":{"id":10657,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10656,"mutability":"mutable","name":"_superToken","nameLocation":"673:11:26","nodeType":"VariableDeclaration","scope":10659,"src":"665:19:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10655,"name":"address","nodeType":"ElementaryTypeName","src":"665:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"664:21:26"},"returnParameters":{"id":10658,"nodeType":"ParameterList","parameters":[],"src":"694:0:26"},"scope":10801,"src":"639:56:26","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"703ab1b7","id":10662,"implemented":false,"kind":"function","modifiers":[],"name":"toggleBPS","nameLocation":"710:9:26","nodeType":"FunctionDefinition","parameters":{"id":10660,"nodeType":"ParameterList","parameters":[],"src":"719:2:26"},"returnParameters":{"id":10661,"nodeType":"ParameterList","parameters":[],"src":"730:0:26"},"scope":10801,"src":"701:30:26","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"795e3425","id":10665,"implemented":false,"kind":"function","modifiers":[],"name":"clearBPS","nameLocation":"746:8:26","nodeType":"FunctionDefinition","parameters":{"id":10663,"nodeType":"ParameterList","parameters":[],"src":"754:2:26"},"returnParameters":{"id":10664,"nodeType":"ParameterList","parameters":[],"src":"765:0:26"},"scope":10801,"src":"737:29:26","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"cb857c80","id":10680,"implemented":false,"kind":"function","modifiers":[],"name":"setBPS","nameLocation":"781:6:26","nodeType":"FunctionDefinition","parameters":{"id":10678,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10668,"mutability":"mutable","name":"_bpss","nameLocation":"813:5:26","nodeType":"VariableDeclaration","scope":10680,"src":"797:21:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint16_$dyn_memory_ptr","typeString":"uint16[]"},"typeName":{"baseType":{"id":10666,"name":"uint16","nodeType":"ElementaryTypeName","src":"797:6:26","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"id":10667,"nodeType":"ArrayTypeName","src":"797:8:26","typeDescriptions":{"typeIdentifier":"t_array$_t_uint16_$dyn_storage_ptr","typeString":"uint16[]"}},"visibility":"internal"},{"constant":false,"id":10671,"mutability":"mutable","name":"_flowRateLowerBounds","nameLocation":"844:20:26","nodeType":"VariableDeclaration","scope":10680,"src":"828:36:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint96_$dyn_memory_ptr","typeString":"uint96[]"},"typeName":{"baseType":{"id":10669,"name":"uint96","nodeType":"ElementaryTypeName","src":"828:6:26","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"id":10670,"nodeType":"ArrayTypeName","src":"828:8:26","typeDescriptions":{"typeIdentifier":"t_array$_t_uint96_$dyn_storage_ptr","typeString":"uint96[]"}},"visibility":"internal"},{"constant":false,"id":10674,"mutability":"mutable","name":"_flowRateUpperBounds","nameLocation":"890:20:26","nodeType":"VariableDeclaration","scope":10680,"src":"874:36:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint96_$dyn_memory_ptr","typeString":"uint96[]"},"typeName":{"baseType":{"id":10672,"name":"uint96","nodeType":"ElementaryTypeName","src":"874:6:26","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"id":10673,"nodeType":"ArrayTypeName","src":"874:8:26","typeDescriptions":{"typeIdentifier":"t_array$_t_uint96_$dyn_storage_ptr","typeString":"uint96[]"}},"visibility":"internal"},{"constant":false,"id":10677,"mutability":"mutable","name":"_tags","nameLocation":"937:5:26","nodeType":"VariableDeclaration","scope":10680,"src":"920:22:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":10675,"name":"uint256","nodeType":"ElementaryTypeName","src":"920:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10676,"nodeType":"ArrayTypeName","src":"920:9:26","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"787:161:26"},"returnParameters":{"id":10679,"nodeType":"ParameterList","parameters":[],"src":"957:0:26"},"scope":10801,"src":"772:186:26","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"d99d3b69","id":10687,"implemented":false,"kind":"function","modifiers":[],"name":"setSBPS","nameLocation":"973:7:26","nodeType":"FunctionDefinition","parameters":{"id":10685,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10682,"mutability":"mutable","name":"_bps","nameLocation":"988:4:26","nodeType":"VariableDeclaration","scope":10687,"src":"981:11:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":10681,"name":"uint16","nodeType":"ElementaryTypeName","src":"981:6:26","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":10684,"mutability":"mutable","name":"_user","nameLocation":"1002:5:26","nodeType":"VariableDeclaration","scope":10687,"src":"994:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10683,"name":"address","nodeType":"ElementaryTypeName","src":"994:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"980:28:26"},"returnParameters":{"id":10686,"nodeType":"ParameterList","parameters":[],"src":"1017:0:26"},"scope":10801,"src":"964:54:26","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"c78f6803","id":10694,"implemented":false,"kind":"function","modifiers":[],"name":"getFeeBalance","nameLocation":"1033:13:26","nodeType":"FunctionDefinition","parameters":{"id":10690,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10689,"mutability":"mutable","name":"_superToken","nameLocation":"1055:11:26","nodeType":"VariableDeclaration","scope":10694,"src":"1047:19:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10688,"name":"address","nodeType":"ElementaryTypeName","src":"1047:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1046:21:26"},"returnParameters":{"id":10693,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10692,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10694,"src":"1091:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10691,"name":"uint256","nodeType":"ElementaryTypeName","src":"1091:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1090:9:26"},"scope":10801,"src":"1024:76:26","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"0b72660d","id":10709,"implemented":false,"kind":"function","modifiers":[],"name":"getControlData","nameLocation":"1115:14:26","nodeType":"FunctionDefinition","parameters":{"id":10699,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10696,"mutability":"mutable","name":"_superToken","nameLocation":"1147:11:26","nodeType":"VariableDeclaration","scope":10709,"src":"1139:19:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10695,"name":"address","nodeType":"ElementaryTypeName","src":"1139:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10698,"mutability":"mutable","name":"_nonce","nameLocation":"1176:6:26","nodeType":"VariableDeclaration","scope":10709,"src":"1168:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10697,"name":"uint256","nodeType":"ElementaryTypeName","src":"1168:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1129:59:26"},"returnParameters":{"id":10708,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10701,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10709,"src":"1212:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10700,"name":"address","nodeType":"ElementaryTypeName","src":"1212:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10703,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10709,"src":"1221:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10702,"name":"uint256","nodeType":"ElementaryTypeName","src":"1221:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10705,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10709,"src":"1230:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10704,"name":"uint256","nodeType":"ElementaryTypeName","src":"1230:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10707,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10709,"src":"1239:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10706,"name":"uint256","nodeType":"ElementaryTypeName","src":"1239:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1211:36:26"},"scope":10801,"src":"1106:142:26","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"7f69bcaf","id":10716,"implemented":false,"kind":"function","modifiers":[],"name":"getNewControlNonce","nameLocation":"1263:18:26","nodeType":"FunctionDefinition","parameters":{"id":10712,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10711,"mutability":"mutable","name":"_superToken","nameLocation":"1299:11:26","nodeType":"VariableDeclaration","scope":10716,"src":"1291:19:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10710,"name":"address","nodeType":"ElementaryTypeName","src":"1291:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1281:35:26"},"returnParameters":{"id":10715,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10714,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10716,"src":"1340:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10713,"name":"uint256","nodeType":"ElementaryTypeName","src":"1340:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1339:9:26"},"scope":10801,"src":"1254:95:26","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"6812a173","id":10721,"implemented":false,"kind":"function","modifiers":[],"name":"getMinimumEndDuration","nameLocation":"1364:21:26","nodeType":"FunctionDefinition","parameters":{"id":10717,"nodeType":"ParameterList","parameters":[],"src":"1385:2:26"},"returnParameters":{"id":10720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10719,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10721,"src":"1411:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10718,"name":"uint256","nodeType":"ElementaryTypeName","src":"1411:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1410:9:26"},"scope":10801,"src":"1355:65:26","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"ca70e1d5","id":10726,"implemented":false,"kind":"function","modifiers":[],"name":"getMinimumLifespan","nameLocation":"1435:18:26","nodeType":"FunctionDefinition","parameters":{"id":10722,"nodeType":"ParameterList","parameters":[],"src":"1453:2:26"},"returnParameters":{"id":10725,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10724,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10726,"src":"1479:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10723,"name":"uint256","nodeType":"ElementaryTypeName","src":"1479:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1478:9:26"},"scope":10801,"src":"1426:62:26","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"7ea195ad","id":10731,"implemented":false,"kind":"function","modifiers":[],"name":"getSTBufferDurationInSecond","nameLocation":"1503:27:26","nodeType":"FunctionDefinition","parameters":{"id":10727,"nodeType":"ParameterList","parameters":[],"src":"1530:2:26"},"returnParameters":{"id":10730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10729,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10731,"src":"1556:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10728,"name":"uint256","nodeType":"ElementaryTypeName","src":"1556:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1555:9:26"},"scope":10801,"src":"1494:71:26","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"acff4744","id":10738,"implemented":false,"kind":"function","modifiers":[],"name":"isSuperTokensSupported","nameLocation":"1580:22:26","nodeType":"FunctionDefinition","parameters":{"id":10734,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10733,"mutability":"mutable","name":"_superToken","nameLocation":"1620:11:26","nodeType":"VariableDeclaration","scope":10738,"src":"1612:19:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10732,"name":"address","nodeType":"ElementaryTypeName","src":"1612:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1602:35:26"},"returnParameters":{"id":10737,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10736,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10738,"src":"1661:4:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10735,"name":"bool","nodeType":"ElementaryTypeName","src":"1661:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1660:6:26"},"scope":10801,"src":"1571:96:26","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"a86c8c7c","id":10743,"implemented":false,"kind":"function","modifiers":[],"name":"isBPSEnabled","nameLocation":"1682:12:26","nodeType":"FunctionDefinition","parameters":{"id":10739,"nodeType":"ParameterList","parameters":[],"src":"1694:2:26"},"returnParameters":{"id":10742,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10741,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10743,"src":"1720:4:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10740,"name":"bool","nodeType":"ElementaryTypeName","src":"1720:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1719:6:26"},"scope":10801,"src":"1673:53:26","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"a8771ab9","id":10748,"implemented":false,"kind":"function","modifiers":[],"name":"getBPSSize","nameLocation":"1741:10:26","nodeType":"FunctionDefinition","parameters":{"id":10744,"nodeType":"ParameterList","parameters":[],"src":"1751:2:26"},"returnParameters":{"id":10747,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10746,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10748,"src":"1777:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10745,"name":"uint256","nodeType":"ElementaryTypeName","src":"1777:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1776:9:26"},"scope":10801,"src":"1732:54:26","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"6ab1c734","id":10759,"implemented":false,"kind":"function","modifiers":[],"name":"getBPSData","nameLocation":"1801:10:26","nodeType":"FunctionDefinition","parameters":{"id":10751,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10750,"mutability":"mutable","name":"_tag","nameLocation":"1829:4:26","nodeType":"VariableDeclaration","scope":10759,"src":"1821:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10749,"name":"uint256","nodeType":"ElementaryTypeName","src":"1821:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1811:28:26"},"returnParameters":{"id":10758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10753,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10759,"src":"1863:6:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":10752,"name":"uint16","nodeType":"ElementaryTypeName","src":"1863:6:26","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":10755,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10759,"src":"1871:6:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":10754,"name":"uint96","nodeType":"ElementaryTypeName","src":"1871:6:26","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":10757,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10759,"src":"1879:6:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":10756,"name":"uint96","nodeType":"ElementaryTypeName","src":"1879:6:26","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"src":"1862:24:26"},"scope":10801,"src":"1792:95:26","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"2357f2cf","id":10766,"implemented":false,"kind":"function","modifiers":[],"name":"getSBPS","nameLocation":"1902:7:26","nodeType":"FunctionDefinition","parameters":{"id":10762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10761,"mutability":"mutable","name":"_user","nameLocation":"1918:5:26","nodeType":"VariableDeclaration","scope":10766,"src":"1910:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10760,"name":"address","nodeType":"ElementaryTypeName","src":"1910:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1909:15:26"},"returnParameters":{"id":10765,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10764,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10766,"src":"1948:6:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":10763,"name":"uint16","nodeType":"ElementaryTypeName","src":"1948:6:26","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"1947:8:26"},"scope":10801,"src":"1893:63:26","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"4ee43e46","id":10775,"implemented":false,"kind":"function","modifiers":[],"name":"getNewBufferedAppBalance","nameLocation":"1971:24:26","nodeType":"FunctionDefinition","parameters":{"id":10771,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10768,"mutability":"mutable","name":"_superToken","nameLocation":"2013:11:26","nodeType":"VariableDeclaration","scope":10775,"src":"2005:19:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10767,"name":"address","nodeType":"ElementaryTypeName","src":"2005:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10770,"mutability":"mutable","name":"_newFlowRate","nameLocation":"2040:12:26","nodeType":"VariableDeclaration","scope":10775,"src":"2034:18:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":10769,"name":"int96","nodeType":"ElementaryTypeName","src":"2034:5:26","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"1995:63:26"},"returnParameters":{"id":10774,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10773,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10775,"src":"2082:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10772,"name":"uint256","nodeType":"ElementaryTypeName","src":"2082:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2081:9:26"},"scope":10801,"src":"1962:129:26","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"c467cddc","id":10784,"implemented":false,"kind":"function","modifiers":[],"name":"isNewFlowRateAllowed","nameLocation":"2106:20:26","nodeType":"FunctionDefinition","parameters":{"id":10780,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10777,"mutability":"mutable","name":"_superToken","nameLocation":"2144:11:26","nodeType":"VariableDeclaration","scope":10784,"src":"2136:19:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10776,"name":"address","nodeType":"ElementaryTypeName","src":"2136:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10779,"mutability":"mutable","name":"_newFlowRate","nameLocation":"2171:12:26","nodeType":"VariableDeclaration","scope":10784,"src":"2165:18:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":10778,"name":"int96","nodeType":"ElementaryTypeName","src":"2165:5:26","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"2126:63:26"},"returnParameters":{"id":10783,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10782,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10784,"src":"2213:4:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10781,"name":"bool","nodeType":"ElementaryTypeName","src":"2213:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2212:6:26"},"scope":10801,"src":"2097:122:26","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"be835747","id":10793,"implemented":false,"kind":"function","modifiers":[],"name":"getAssetUser","nameLocation":"2234:12:26","nodeType":"FunctionDefinition","parameters":{"id":10789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10786,"mutability":"mutable","name":"_user","nameLocation":"2264:5:26","nodeType":"VariableDeclaration","scope":10793,"src":"2256:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10785,"name":"address","nodeType":"ElementaryTypeName","src":"2256:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10788,"mutability":"mutable","name":"_superToken","nameLocation":"2287:11:26","nodeType":"VariableDeclaration","scope":10793,"src":"2279:19:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10787,"name":"address","nodeType":"ElementaryTypeName","src":"2279:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2246:58:26"},"returnParameters":{"id":10792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10791,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10793,"src":"2328:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10790,"name":"uint256","nodeType":"ElementaryTypeName","src":"2328:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2327:9:26"},"scope":10801,"src":"2225:112:26","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"b2419083","id":10800,"implemented":false,"kind":"function","modifiers":[],"name":"getAssetTotal","nameLocation":"2352:13:26","nodeType":"FunctionDefinition","parameters":{"id":10796,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10795,"mutability":"mutable","name":"_superToken","nameLocation":"2374:11:26","nodeType":"VariableDeclaration","scope":10800,"src":"2366:19:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10794,"name":"address","nodeType":"ElementaryTypeName","src":"2366:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2365:21:26"},"returnParameters":{"id":10799,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10798,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10800,"src":"2410:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10797,"name":"uint256","nodeType":"ElementaryTypeName","src":"2410:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2409:9:26"},"scope":10801,"src":"2343:76:26","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":10802,"src":"57:2364:26","usedErrors":[]}],"src":"32:2390:26"},"id":26},"contracts/interfaces/core/IFlow.sol":{"ast":{"absolutePath":"contracts/interfaces/core/IFlow.sol","exportedSymbols":{"IFlow":[10931]},"id":10932,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":10803,"literals":["solidity","^","0.8",".9"],"nodeType":"PragmaDirective","src":"32:23:27"},{"abstract":false,"baseContracts":[],"canonicalName":"IFlow","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":10931,"linearizedBaseContracts":[10931],"name":"IFlow","nameLocation":"187:5:27","nodeType":"ContractDefinition","nodes":[{"functionSelector":"dfc96e1b","id":10812,"implemented":false,"kind":"function","modifiers":[],"name":"openFlow","nameLocation":"208:8:27","nodeType":"FunctionDefinition","parameters":{"id":10810,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10805,"mutability":"mutable","name":"_receiver","nameLocation":"234:9:27","nodeType":"VariableDeclaration","scope":10812,"src":"226:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10804,"name":"address","nodeType":"ElementaryTypeName","src":"226:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10807,"mutability":"mutable","name":"_superToken","nameLocation":"261:11:27","nodeType":"VariableDeclaration","scope":10812,"src":"253:19:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10806,"name":"address","nodeType":"ElementaryTypeName","src":"253:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10809,"mutability":"mutable","name":"_lifespan","nameLocation":"290:9:27","nodeType":"VariableDeclaration","scope":10812,"src":"282:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10808,"name":"uint256","nodeType":"ElementaryTypeName","src":"282:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"216:89:27"},"returnParameters":{"id":10811,"nodeType":"ParameterList","parameters":[],"src":"314:0:27"},"scope":10931,"src":"199:116:27","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"36fbb025","id":10825,"implemented":false,"kind":"function","modifiers":[],"name":"decreaseFlow","nameLocation":"330:12:27","nodeType":"FunctionDefinition","parameters":{"id":10823,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10814,"mutability":"mutable","name":"_superToken","nameLocation":"360:11:27","nodeType":"VariableDeclaration","scope":10825,"src":"352:19:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10813,"name":"address","nodeType":"ElementaryTypeName","src":"352:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10816,"mutability":"mutable","name":"_sender","nameLocation":"389:7:27","nodeType":"VariableDeclaration","scope":10825,"src":"381:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10815,"name":"address","nodeType":"ElementaryTypeName","src":"381:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10818,"mutability":"mutable","name":"_receiver","nameLocation":"414:9:27","nodeType":"VariableDeclaration","scope":10825,"src":"406:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10817,"name":"address","nodeType":"ElementaryTypeName","src":"406:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10820,"mutability":"mutable","name":"_nonce","nameLocation":"441:6:27","nodeType":"VariableDeclaration","scope":10825,"src":"433:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10819,"name":"uint256","nodeType":"ElementaryTypeName","src":"433:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10822,"mutability":"mutable","name":"_flowRate","nameLocation":"463:9:27","nodeType":"VariableDeclaration","scope":10825,"src":"457:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":10821,"name":"int96","nodeType":"ElementaryTypeName","src":"457:5:27","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"342:136:27"},"returnParameters":{"id":10824,"nodeType":"ParameterList","parameters":[],"src":"487:0:27"},"scope":10931,"src":"321:167:27","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"e32867fc","id":10832,"implemented":false,"kind":"function","modifiers":[],"name":"closeFlow","nameLocation":"503:9:27","nodeType":"FunctionDefinition","parameters":{"id":10830,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10827,"mutability":"mutable","name":"_superToken","nameLocation":"521:11:27","nodeType":"VariableDeclaration","scope":10832,"src":"513:19:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10826,"name":"address","nodeType":"ElementaryTypeName","src":"513:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10829,"mutability":"mutable","name":"_nonce","nameLocation":"542:6:27","nodeType":"VariableDeclaration","scope":10832,"src":"534:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10828,"name":"uint256","nodeType":"ElementaryTypeName","src":"534:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"512:37:27"},"returnParameters":{"id":10831,"nodeType":"ParameterList","parameters":[],"src":"558:0:27"},"scope":10931,"src":"494:65:27","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"0197c386","id":10839,"implemented":false,"kind":"function","modifiers":[],"name":"depositSuperToken","nameLocation":"574:17:27","nodeType":"FunctionDefinition","parameters":{"id":10837,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10834,"mutability":"mutable","name":"_superToken","nameLocation":"600:11:27","nodeType":"VariableDeclaration","scope":10839,"src":"592:19:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10833,"name":"address","nodeType":"ElementaryTypeName","src":"592:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10836,"mutability":"mutable","name":"_amount","nameLocation":"621:7:27","nodeType":"VariableDeclaration","scope":10839,"src":"613:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10835,"name":"uint256","nodeType":"ElementaryTypeName","src":"613:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"591:38:27"},"returnParameters":{"id":10838,"nodeType":"ParameterList","parameters":[],"src":"638:0:27"},"scope":10931,"src":"565:74:27","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"dc5cd1d8","id":10846,"implemented":false,"kind":"function","modifiers":[],"name":"withdrawSuperToken","nameLocation":"654:18:27","nodeType":"FunctionDefinition","parameters":{"id":10844,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10841,"mutability":"mutable","name":"_superToken","nameLocation":"681:11:27","nodeType":"VariableDeclaration","scope":10846,"src":"673:19:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10840,"name":"address","nodeType":"ElementaryTypeName","src":"673:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10843,"mutability":"mutable","name":"_amount","nameLocation":"702:7:27","nodeType":"VariableDeclaration","scope":10846,"src":"694:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10842,"name":"uint256","nodeType":"ElementaryTypeName","src":"694:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"672:38:27"},"returnParameters":{"id":10845,"nodeType":"ParameterList","parameters":[],"src":"719:0:27"},"scope":10931,"src":"645:75:27","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"3870f4a0","id":10855,"implemented":false,"kind":"function","modifiers":[],"name":"getAmountFlowed","nameLocation":"735:15:27","nodeType":"FunctionDefinition","parameters":{"id":10851,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10848,"mutability":"mutable","name":"_user","nameLocation":"768:5:27","nodeType":"VariableDeclaration","scope":10855,"src":"760:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10847,"name":"address","nodeType":"ElementaryTypeName","src":"760:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10850,"mutability":"mutable","name":"_superToken","nameLocation":"791:11:27","nodeType":"VariableDeclaration","scope":10855,"src":"783:19:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10849,"name":"address","nodeType":"ElementaryTypeName","src":"783:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"750:58:27"},"returnParameters":{"id":10854,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10853,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10855,"src":"832:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10852,"name":"uint256","nodeType":"ElementaryTypeName","src":"832:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"831:9:27"},"scope":10931,"src":"726:115:27","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"0dfa0b82","id":10866,"implemented":false,"kind":"function","modifiers":[],"name":"getValidSafeLifespan","nameLocation":"856:20:27","nodeType":"FunctionDefinition","parameters":{"id":10862,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10857,"mutability":"mutable","name":"_user","nameLocation":"894:5:27","nodeType":"VariableDeclaration","scope":10866,"src":"886:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10856,"name":"address","nodeType":"ElementaryTypeName","src":"886:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10859,"mutability":"mutable","name":"_superToken","nameLocation":"917:11:27","nodeType":"VariableDeclaration","scope":10866,"src":"909:19:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10858,"name":"address","nodeType":"ElementaryTypeName","src":"909:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10861,"mutability":"mutable","name":"_flowRate","nameLocation":"944:9:27","nodeType":"VariableDeclaration","scope":10866,"src":"938:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":10860,"name":"int96","nodeType":"ElementaryTypeName","src":"938:5:27","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"876:83:27"},"returnParameters":{"id":10865,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10864,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10866,"src":"983:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10863,"name":"uint256","nodeType":"ElementaryTypeName","src":"983:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"982:9:27"},"scope":10931,"src":"847:145:27","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"9a5b5f93","id":10875,"implemented":false,"kind":"function","modifiers":[],"name":"isViewSessionAllowed","nameLocation":"1007:20:27","nodeType":"FunctionDefinition","parameters":{"id":10871,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10868,"mutability":"mutable","name":"_viewer","nameLocation":"1045:7:27","nodeType":"VariableDeclaration","scope":10875,"src":"1037:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10867,"name":"address","nodeType":"ElementaryTypeName","src":"1037:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10870,"mutability":"mutable","name":"_broadcaster","nameLocation":"1070:12:27","nodeType":"VariableDeclaration","scope":10875,"src":"1062:20:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10869,"name":"address","nodeType":"ElementaryTypeName","src":"1062:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1027:61:27"},"returnParameters":{"id":10874,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10873,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10875,"src":"1112:4:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10872,"name":"bool","nodeType":"ElementaryTypeName","src":"1112:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1111:6:27"},"scope":10931,"src":"998:120:27","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"468240a9","id":10884,"implemented":false,"kind":"function","modifiers":[],"name":"hasActiveFlow","nameLocation":"1133:13:27","nodeType":"FunctionDefinition","parameters":{"id":10880,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10877,"mutability":"mutable","name":"_user","nameLocation":"1164:5:27","nodeType":"VariableDeclaration","scope":10884,"src":"1156:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10876,"name":"address","nodeType":"ElementaryTypeName","src":"1156:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10879,"mutability":"mutable","name":"_superToken","nameLocation":"1187:11:27","nodeType":"VariableDeclaration","scope":10884,"src":"1179:19:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10878,"name":"address","nodeType":"ElementaryTypeName","src":"1179:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1146:58:27"},"returnParameters":{"id":10883,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10882,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10884,"src":"1228:4:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10881,"name":"bool","nodeType":"ElementaryTypeName","src":"1228:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1227:6:27"},"scope":10931,"src":"1124:110:27","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"521d3f3c","id":10893,"implemented":false,"kind":"function","modifiers":[],"name":"getNewFlowNonce","nameLocation":"1249:15:27","nodeType":"FunctionDefinition","parameters":{"id":10889,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10886,"mutability":"mutable","name":"_user","nameLocation":"1282:5:27","nodeType":"VariableDeclaration","scope":10893,"src":"1274:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10885,"name":"address","nodeType":"ElementaryTypeName","src":"1274:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10888,"mutability":"mutable","name":"_superToken","nameLocation":"1305:11:27","nodeType":"VariableDeclaration","scope":10893,"src":"1297:19:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10887,"name":"address","nodeType":"ElementaryTypeName","src":"1297:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1264:58:27"},"returnParameters":{"id":10892,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10891,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10893,"src":"1346:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10890,"name":"uint256","nodeType":"ElementaryTypeName","src":"1346:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1345:9:27"},"scope":10931,"src":"1240:115:27","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"54bbc2ad","id":10914,"implemented":false,"kind":"function","modifiers":[],"name":"getFlowData","nameLocation":"1370:11:27","nodeType":"FunctionDefinition","parameters":{"id":10900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10895,"mutability":"mutable","name":"_user","nameLocation":"1399:5:27","nodeType":"VariableDeclaration","scope":10914,"src":"1391:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10894,"name":"address","nodeType":"ElementaryTypeName","src":"1391:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10897,"mutability":"mutable","name":"_superToken","nameLocation":"1422:11:27","nodeType":"VariableDeclaration","scope":10914,"src":"1414:19:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10896,"name":"address","nodeType":"ElementaryTypeName","src":"1414:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10899,"mutability":"mutable","name":"_nonce","nameLocation":"1451:6:27","nodeType":"VariableDeclaration","scope":10914,"src":"1443:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10898,"name":"uint256","nodeType":"ElementaryTypeName","src":"1443:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1381:82:27"},"returnParameters":{"id":10913,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10902,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10914,"src":"1487:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10901,"name":"address","nodeType":"ElementaryTypeName","src":"1487:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10904,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10914,"src":"1496:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10903,"name":"uint256","nodeType":"ElementaryTypeName","src":"1496:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10906,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10914,"src":"1505:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10905,"name":"uint256","nodeType":"ElementaryTypeName","src":"1505:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10908,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10914,"src":"1514:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10907,"name":"uint256","nodeType":"ElementaryTypeName","src":"1514:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10910,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10914,"src":"1523:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10909,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1523:7:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":10912,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10914,"src":"1532:4:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10911,"name":"bool","nodeType":"ElementaryTypeName","src":"1532:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1486:51:27"},"scope":10931,"src":"1361:177:27","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"a152ca6f","id":10923,"implemented":false,"kind":"function","modifiers":[],"name":"getDepositUser","nameLocation":"1553:14:27","nodeType":"FunctionDefinition","parameters":{"id":10919,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10916,"mutability":"mutable","name":"_user","nameLocation":"1585:5:27","nodeType":"VariableDeclaration","scope":10923,"src":"1577:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10915,"name":"address","nodeType":"ElementaryTypeName","src":"1577:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10918,"mutability":"mutable","name":"_superToken","nameLocation":"1608:11:27","nodeType":"VariableDeclaration","scope":10923,"src":"1600:19:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10917,"name":"address","nodeType":"ElementaryTypeName","src":"1600:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1567:58:27"},"returnParameters":{"id":10922,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10921,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10923,"src":"1649:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10920,"name":"uint256","nodeType":"ElementaryTypeName","src":"1649:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1648:9:27"},"scope":10931,"src":"1544:114:27","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"c76474db","id":10930,"implemented":false,"kind":"function","modifiers":[],"name":"getDepositTotal","nameLocation":"1673:15:27","nodeType":"FunctionDefinition","parameters":{"id":10926,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10925,"mutability":"mutable","name":"_superToken","nameLocation":"1706:11:27","nodeType":"VariableDeclaration","scope":10930,"src":"1698:19:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10924,"name":"address","nodeType":"ElementaryTypeName","src":"1698:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1688:35:27"},"returnParameters":{"id":10929,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10928,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10930,"src":"1747:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10927,"name":"uint256","nodeType":"ElementaryTypeName","src":"1747:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1746:9:27"},"scope":10931,"src":"1664:92:27","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":10932,"src":"177:1581:27","usedErrors":[]}],"src":"32:1727:27"},"id":27},"contracts/interfaces/core/ISession.sol":{"ast":{"absolutePath":"contracts/interfaces/core/ISession.sol","exportedSymbols":{"ISession":[11002]},"id":11003,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":10933,"literals":["solidity","^","0.8",".9"],"nodeType":"PragmaDirective","src":"32:23:28"},{"abstract":false,"baseContracts":[],"canonicalName":"ISession","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":11002,"linearizedBaseContracts":[11002],"name":"ISession","nameLocation":"67:8:28","nodeType":"ContractDefinition","nodes":[{"functionSelector":"7fe70a27","id":10942,"implemented":false,"kind":"function","modifiers":[],"name":"startSession","nameLocation":"91:12:28","nodeType":"FunctionDefinition","parameters":{"id":10940,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10935,"mutability":"mutable","name":"_superToken","nameLocation":"121:11:28","nodeType":"VariableDeclaration","scope":10942,"src":"113:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10934,"name":"address","nodeType":"ElementaryTypeName","src":"113:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10937,"mutability":"mutable","name":"_flowRate","nameLocation":"149:9:28","nodeType":"VariableDeclaration","scope":10942,"src":"142:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":10936,"name":"uint96","nodeType":"ElementaryTypeName","src":"142:6:28","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":10939,"mutability":"mutable","name":"_tag","nameLocation":"176:4:28","nodeType":"VariableDeclaration","scope":10942,"src":"168:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10938,"name":"uint256","nodeType":"ElementaryTypeName","src":"168:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"103:83:28"},"returnParameters":{"id":10941,"nodeType":"ParameterList","parameters":[],"src":"195:0:28"},"scope":11002,"src":"82:114:28","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"b233bd05","id":10947,"implemented":false,"kind":"function","modifiers":[],"name":"stopSession","nameLocation":"211:11:28","nodeType":"FunctionDefinition","parameters":{"id":10945,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10944,"mutability":"mutable","name":"_superToken","nameLocation":"231:11:28","nodeType":"VariableDeclaration","scope":10947,"src":"223:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10943,"name":"address","nodeType":"ElementaryTypeName","src":"223:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"222:21:28"},"returnParameters":{"id":10946,"nodeType":"ParameterList","parameters":[],"src":"252:0:28"},"scope":11002,"src":"202:51:28","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"f437a7a5","id":10959,"implemented":false,"kind":"function","modifiers":[],"name":"startSessions","nameLocation":"268:13:28","nodeType":"FunctionDefinition","parameters":{"id":10957,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10950,"mutability":"mutable","name":"_superTokens","nameLocation":"308:12:28","nodeType":"VariableDeclaration","scope":10959,"src":"291:29:28","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":10948,"name":"address","nodeType":"ElementaryTypeName","src":"291:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10949,"nodeType":"ArrayTypeName","src":"291:9:28","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":10953,"mutability":"mutable","name":"_flowRates","nameLocation":"346:10:28","nodeType":"VariableDeclaration","scope":10959,"src":"330:26:28","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint96_$dyn_memory_ptr","typeString":"uint96[]"},"typeName":{"baseType":{"id":10951,"name":"uint96","nodeType":"ElementaryTypeName","src":"330:6:28","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"id":10952,"nodeType":"ArrayTypeName","src":"330:8:28","typeDescriptions":{"typeIdentifier":"t_array$_t_uint96_$dyn_storage_ptr","typeString":"uint96[]"}},"visibility":"internal"},{"constant":false,"id":10956,"mutability":"mutable","name":"_tags","nameLocation":"383:5:28","nodeType":"VariableDeclaration","scope":10959,"src":"366:22:28","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":10954,"name":"uint256","nodeType":"ElementaryTypeName","src":"366:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10955,"nodeType":"ArrayTypeName","src":"366:9:28","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"281:113:28"},"returnParameters":{"id":10958,"nodeType":"ParameterList","parameters":[],"src":"403:0:28"},"scope":11002,"src":"259:145:28","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"9afffbf9","id":10965,"implemented":false,"kind":"function","modifiers":[],"name":"stopSessions","nameLocation":"419:12:28","nodeType":"FunctionDefinition","parameters":{"id":10963,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10962,"mutability":"mutable","name":"_superTokens","nameLocation":"449:12:28","nodeType":"VariableDeclaration","scope":10965,"src":"432:29:28","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":10960,"name":"address","nodeType":"ElementaryTypeName","src":"432:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10961,"nodeType":"ArrayTypeName","src":"432:9:28","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"431:31:28"},"returnParameters":{"id":10964,"nodeType":"ParameterList","parameters":[],"src":"471:0:28"},"scope":11002,"src":"410:62:28","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"92c2226e","id":10974,"implemented":false,"kind":"function","modifiers":[],"name":"getNewSessionNonce","nameLocation":"487:18:28","nodeType":"FunctionDefinition","parameters":{"id":10970,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10967,"mutability":"mutable","name":"_user","nameLocation":"523:5:28","nodeType":"VariableDeclaration","scope":10974,"src":"515:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10966,"name":"address","nodeType":"ElementaryTypeName","src":"515:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10969,"mutability":"mutable","name":"_superToken","nameLocation":"546:11:28","nodeType":"VariableDeclaration","scope":10974,"src":"538:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10968,"name":"address","nodeType":"ElementaryTypeName","src":"538:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"505:58:28"},"returnParameters":{"id":10973,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10972,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10974,"src":"587:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10971,"name":"uint256","nodeType":"ElementaryTypeName","src":"587:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"586:9:28"},"scope":11002,"src":"478:118:28","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"8ff3849b","id":10991,"implemented":false,"kind":"function","modifiers":[],"name":"getSessionData","nameLocation":"611:14:28","nodeType":"FunctionDefinition","parameters":{"id":10981,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10976,"mutability":"mutable","name":"_user","nameLocation":"643:5:28","nodeType":"VariableDeclaration","scope":10991,"src":"635:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10975,"name":"address","nodeType":"ElementaryTypeName","src":"635:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10978,"mutability":"mutable","name":"_superToken","nameLocation":"666:11:28","nodeType":"VariableDeclaration","scope":10991,"src":"658:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10977,"name":"address","nodeType":"ElementaryTypeName","src":"658:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10980,"mutability":"mutable","name":"_nonce","nameLocation":"695:6:28","nodeType":"VariableDeclaration","scope":10991,"src":"687:14:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10979,"name":"uint256","nodeType":"ElementaryTypeName","src":"687:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"625:82:28"},"returnParameters":{"id":10990,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10983,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10991,"src":"731:5:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":10982,"name":"int96","nodeType":"ElementaryTypeName","src":"731:5:28","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"},{"constant":false,"id":10985,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10991,"src":"738:6:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":10984,"name":"uint96","nodeType":"ElementaryTypeName","src":"738:6:28","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":10987,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10991,"src":"746:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10986,"name":"uint256","nodeType":"ElementaryTypeName","src":"746:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10989,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10991,"src":"755:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10988,"name":"uint256","nodeType":"ElementaryTypeName","src":"755:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"730:33:28"},"scope":11002,"src":"602:162:28","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"53732469","id":11001,"implemented":false,"kind":"function","modifiers":[],"name":"getCurrentSessionData","nameLocation":"779:21:28","nodeType":"FunctionDefinition","parameters":{"id":10994,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10993,"mutability":"mutable","name":"_user","nameLocation":"818:5:28","nodeType":"VariableDeclaration","scope":11001,"src":"810:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10992,"name":"address","nodeType":"ElementaryTypeName","src":"810:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"800:29:28"},"returnParameters":{"id":11000,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10996,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11001,"src":"853:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10995,"name":"uint256","nodeType":"ElementaryTypeName","src":"853:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10999,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11001,"src":"862:16:28","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":10997,"name":"address","nodeType":"ElementaryTypeName","src":"862:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10998,"nodeType":"ArrayTypeName","src":"862:9:28","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"852:27:28"},"scope":11002,"src":"770:110:28","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":11003,"src":"57:825:28","usedErrors":[]}],"src":"32:851:28"},"id":28},"contracts/interfaces/utils/IAccessControl.sol":{"ast":{"absolutePath":"contracts/interfaces/utils/IAccessControl.sol","exportedSymbols":{"IAccessControl":[11052]},"id":11053,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":11004,"literals":["solidity","^","0.8",".9"],"nodeType":"PragmaDirective","src":"32:23:29"},{"abstract":false,"baseContracts":[],"canonicalName":"IAccessControl","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":11052,"linearizedBaseContracts":[11052],"name":"IAccessControl","nameLocation":"67:14:29","nodeType":"ContractDefinition","nodes":[{"functionSelector":"52a9c8d7","id":11009,"implemented":false,"kind":"function","modifiers":[],"name":"getDefaultAdminRole","nameLocation":"97:19:29","nodeType":"FunctionDefinition","parameters":{"id":11005,"nodeType":"ParameterList","parameters":[],"src":"116:2:29"},"returnParameters":{"id":11008,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11007,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11009,"src":"142:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11006,"name":"bytes32","nodeType":"ElementaryTypeName","src":"142:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"141:9:29"},"scope":11052,"src":"88:63:29","stateMutability":"pure","virtual":false,"visibility":"external"},{"functionSelector":"6e9067fb","id":11016,"implemented":false,"kind":"function","modifiers":[],"name":"getRole","nameLocation":"166:7:29","nodeType":"FunctionDefinition","parameters":{"id":11012,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11011,"mutability":"mutable","name":"_role","nameLocation":"188:5:29","nodeType":"VariableDeclaration","scope":11016,"src":"174:19:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":11010,"name":"string","nodeType":"ElementaryTypeName","src":"174:6:29","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"173:21:29"},"returnParameters":{"id":11015,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11014,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11016,"src":"218:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11013,"name":"bytes32","nodeType":"ElementaryTypeName","src":"218:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"217:9:29"},"scope":11052,"src":"157:70:29","stateMutability":"pure","virtual":false,"visibility":"external"},{"functionSelector":"91d14854","id":11025,"implemented":false,"kind":"function","modifiers":[],"name":"hasRole","nameLocation":"242:7:29","nodeType":"FunctionDefinition","parameters":{"id":11021,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11018,"mutability":"mutable","name":"_role","nameLocation":"267:5:29","nodeType":"VariableDeclaration","scope":11025,"src":"259:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11017,"name":"bytes32","nodeType":"ElementaryTypeName","src":"259:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":11020,"mutability":"mutable","name":"_account","nameLocation":"290:8:29","nodeType":"VariableDeclaration","scope":11025,"src":"282:16:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11019,"name":"address","nodeType":"ElementaryTypeName","src":"282:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"249:55:29"},"returnParameters":{"id":11024,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11023,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11025,"src":"328:4:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11022,"name":"bool","nodeType":"ElementaryTypeName","src":"328:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"327:6:29"},"scope":11052,"src":"233:101:29","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"248a9ca3","id":11032,"implemented":false,"kind":"function","modifiers":[],"name":"getRoleAdmin","nameLocation":"349:12:29","nodeType":"FunctionDefinition","parameters":{"id":11028,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11027,"mutability":"mutable","name":"_role","nameLocation":"370:5:29","nodeType":"VariableDeclaration","scope":11032,"src":"362:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11026,"name":"bytes32","nodeType":"ElementaryTypeName","src":"362:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"361:15:29"},"returnParameters":{"id":11031,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11030,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11032,"src":"400:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11029,"name":"bytes32","nodeType":"ElementaryTypeName","src":"400:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"399:9:29"},"scope":11052,"src":"340:69:29","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"2f2ff15d","id":11039,"implemented":false,"kind":"function","modifiers":[],"name":"grantRole","nameLocation":"424:9:29","nodeType":"FunctionDefinition","parameters":{"id":11037,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11034,"mutability":"mutable","name":"_role","nameLocation":"442:5:29","nodeType":"VariableDeclaration","scope":11039,"src":"434:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11033,"name":"bytes32","nodeType":"ElementaryTypeName","src":"434:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":11036,"mutability":"mutable","name":"_account","nameLocation":"457:8:29","nodeType":"VariableDeclaration","scope":11039,"src":"449:16:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11035,"name":"address","nodeType":"ElementaryTypeName","src":"449:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"433:33:29"},"returnParameters":{"id":11038,"nodeType":"ParameterList","parameters":[],"src":"475:0:29"},"scope":11052,"src":"415:61:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"d547741f","id":11046,"implemented":false,"kind":"function","modifiers":[],"name":"revokeRole","nameLocation":"491:10:29","nodeType":"FunctionDefinition","parameters":{"id":11044,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11041,"mutability":"mutable","name":"_role","nameLocation":"510:5:29","nodeType":"VariableDeclaration","scope":11046,"src":"502:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11040,"name":"bytes32","nodeType":"ElementaryTypeName","src":"502:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":11043,"mutability":"mutable","name":"_account","nameLocation":"525:8:29","nodeType":"VariableDeclaration","scope":11046,"src":"517:16:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11042,"name":"address","nodeType":"ElementaryTypeName","src":"517:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"501:33:29"},"returnParameters":{"id":11045,"nodeType":"ParameterList","parameters":[],"src":"543:0:29"},"scope":11052,"src":"482:62:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"8bb9c5bf","id":11051,"implemented":false,"kind":"function","modifiers":[],"name":"renounceRole","nameLocation":"559:12:29","nodeType":"FunctionDefinition","parameters":{"id":11049,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11048,"mutability":"mutable","name":"_role","nameLocation":"580:5:29","nodeType":"VariableDeclaration","scope":11051,"src":"572:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11047,"name":"bytes32","nodeType":"ElementaryTypeName","src":"572:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"571:15:29"},"returnParameters":{"id":11050,"nodeType":"ParameterList","parameters":[],"src":"595:0:29"},"scope":11052,"src":"550:46:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":11053,"src":"57:541:29","usedErrors":[]}],"src":"32:567:29"},"id":29},"contracts/interfaces/utils/ICut.sol":{"ast":{"absolutePath":"contracts/interfaces/utils/ICut.sol","exportedSymbols":{"ICut":[11090]},"id":11091,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":11054,"literals":["solidity","^","0.8",".9"],"nodeType":"PragmaDirective","src":"32:23:30"},{"abstract":false,"baseContracts":[],"canonicalName":"ICut","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":11090,"linearizedBaseContracts":[11090],"name":"ICut","nameLocation":"67:4:30","nodeType":"ContractDefinition","nodes":[{"canonicalName":"ICut.FacetCutAction","id":11058,"members":[{"id":11055,"name":"Add","nameLocation":"108:3:30","nodeType":"EnumValue","src":"108:3:30"},{"id":11056,"name":"Replace","nameLocation":"121:7:30","nodeType":"EnumValue","src":"121:7:30"},{"id":11057,"name":"Remove","nameLocation":"138:6:30","nodeType":"EnumValue","src":"138:6:30"}],"name":"FacetCutAction","nameLocation":"83:14:30","nodeType":"EnumDefinition","src":"78:72:30"},{"canonicalName":"ICut.FacetCut","id":11067,"members":[{"constant":false,"id":11060,"mutability":"mutable","name":"facetAddress","nameLocation":"224:12:30","nodeType":"VariableDeclaration","scope":11067,"src":"216:20:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11059,"name":"address","nodeType":"ElementaryTypeName","src":"216:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11063,"mutability":"mutable","name":"action","nameLocation":"261:6:30","nodeType":"VariableDeclaration","scope":11067,"src":"246:21:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_FacetCutAction_$11058","typeString":"enum ICut.FacetCutAction"},"typeName":{"id":11062,"nodeType":"UserDefinedTypeName","pathNode":{"id":11061,"name":"FacetCutAction","nameLocations":["246:14:30"],"nodeType":"IdentifierPath","referencedDeclaration":11058,"src":"246:14:30"},"referencedDeclaration":11058,"src":"246:14:30","typeDescriptions":{"typeIdentifier":"t_enum$_FacetCutAction_$11058","typeString":"enum ICut.FacetCutAction"}},"visibility":"internal"},{"constant":false,"id":11066,"mutability":"mutable","name":"functionSelectors","nameLocation":"286:17:30","nodeType":"VariableDeclaration","scope":11067,"src":"277:26:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage_ptr","typeString":"bytes4[]"},"typeName":{"baseType":{"id":11064,"name":"bytes4","nodeType":"ElementaryTypeName","src":"277:6:30","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":11065,"nodeType":"ArrayTypeName","src":"277:8:30","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage_ptr","typeString":"bytes4[]"}},"visibility":"internal"}],"name":"FacetCut","nameLocation":"197:8:30","nodeType":"StructDefinition","scope":11090,"src":"190:120:30","visibility":"public"},{"documentation":{"id":11068,"nodeType":"StructuredDocumentation","src":"316:438:30","text":"@notice Add/replace/remove any number of functions and optionally execute\n a function with delegatecall\n @param _diamondCut Contains the facet addresses and function selectors\n @param _init The address of the contract or facet to execute _calldata\n @param _calldata A function call, including function selector and arguments\n _calldata is executed with delegatecall on _init"},"functionSelector":"1f931c1c","id":11079,"implemented":false,"kind":"function","modifiers":[],"name":"diamondCut","nameLocation":"768:10:30","nodeType":"FunctionDefinition","parameters":{"id":11077,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11072,"mutability":"mutable","name":"_diamondCut","nameLocation":"808:11:30","nodeType":"VariableDeclaration","scope":11079,"src":"788:31:30","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_FacetCut_$11067_calldata_ptr_$dyn_calldata_ptr","typeString":"struct ICut.FacetCut[]"},"typeName":{"baseType":{"id":11070,"nodeType":"UserDefinedTypeName","pathNode":{"id":11069,"name":"FacetCut","nameLocations":["788:8:30"],"nodeType":"IdentifierPath","referencedDeclaration":11067,"src":"788:8:30"},"referencedDeclaration":11067,"src":"788:8:30","typeDescriptions":{"typeIdentifier":"t_struct$_FacetCut_$11067_storage_ptr","typeString":"struct ICut.FacetCut"}},"id":11071,"nodeType":"ArrayTypeName","src":"788:10:30","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_FacetCut_$11067_storage_$dyn_storage_ptr","typeString":"struct ICut.FacetCut[]"}},"visibility":"internal"},{"constant":false,"id":11074,"mutability":"mutable","name":"_init","nameLocation":"837:5:30","nodeType":"VariableDeclaration","scope":11079,"src":"829:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11073,"name":"address","nodeType":"ElementaryTypeName","src":"829:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11076,"mutability":"mutable","name":"_calldata","nameLocation":"867:9:30","nodeType":"VariableDeclaration","scope":11079,"src":"852:24:30","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":11075,"name":"bytes","nodeType":"ElementaryTypeName","src":"852:5:30","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"778:104:30"},"returnParameters":{"id":11078,"nodeType":"ParameterList","parameters":[],"src":"891:0:30"},"scope":11090,"src":"759:133:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"eventSelector":"8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb673","id":11089,"name":"DiamondCut","nameLocation":"904:10:30","nodeType":"EventDefinition","parameters":{"id":11088,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11083,"indexed":false,"mutability":"mutable","name":"_diamondCut","nameLocation":"926:11:30","nodeType":"VariableDeclaration","scope":11089,"src":"915:22:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_FacetCut_$11067_memory_ptr_$dyn_memory_ptr","typeString":"struct ICut.FacetCut[]"},"typeName":{"baseType":{"id":11081,"nodeType":"UserDefinedTypeName","pathNode":{"id":11080,"name":"FacetCut","nameLocations":["915:8:30"],"nodeType":"IdentifierPath","referencedDeclaration":11067,"src":"915:8:30"},"referencedDeclaration":11067,"src":"915:8:30","typeDescriptions":{"typeIdentifier":"t_struct$_FacetCut_$11067_storage_ptr","typeString":"struct ICut.FacetCut"}},"id":11082,"nodeType":"ArrayTypeName","src":"915:10:30","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_FacetCut_$11067_storage_$dyn_storage_ptr","typeString":"struct ICut.FacetCut[]"}},"visibility":"internal"},{"constant":false,"id":11085,"indexed":false,"mutability":"mutable","name":"_init","nameLocation":"947:5:30","nodeType":"VariableDeclaration","scope":11089,"src":"939:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11084,"name":"address","nodeType":"ElementaryTypeName","src":"939:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11087,"indexed":false,"mutability":"mutable","name":"_calldata","nameLocation":"960:9:30","nodeType":"VariableDeclaration","scope":11089,"src":"954:15:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11086,"name":"bytes","nodeType":"ElementaryTypeName","src":"954:5:30","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"914:56:30"},"src":"898:73:30"}],"scope":11091,"src":"57:916:30","usedErrors":[]}],"src":"32:942:30"},"id":30},"contracts/interfaces/utils/IERC165.sol":{"ast":{"absolutePath":"contracts/interfaces/utils/IERC165.sol","exportedSymbols":{"IERC165":[11101]},"id":11102,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":11092,"literals":["solidity","^","0.8",".9"],"nodeType":"PragmaDirective","src":"32:23:31"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":11101,"linearizedBaseContracts":[11101],"name":"IERC165","nameLocation":"67:7:31","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":11093,"nodeType":"StructuredDocumentation","src":"81:373:31","text":"@notice Query if a contract implements an interface\n @param interfaceId The interface identifier, as specified in ERC-165\n @dev Interface identification is specified in ERC-165. This function\n uses less than 30,000 gas.\n @return `true` if the contract implements `interfaceID` and\n `interfaceID` is not 0xffffffff, `false` otherwise"},"functionSelector":"01ffc9a7","id":11100,"implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"468:17:31","nodeType":"FunctionDefinition","parameters":{"id":11096,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11095,"mutability":"mutable","name":"interfaceId","nameLocation":"493:11:31","nodeType":"VariableDeclaration","scope":11100,"src":"486:18:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":11094,"name":"bytes4","nodeType":"ElementaryTypeName","src":"486:6:31","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"485:20:31"},"returnParameters":{"id":11099,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11098,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11100,"src":"529:4:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11097,"name":"bool","nodeType":"ElementaryTypeName","src":"529:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"528:6:31"},"scope":11101,"src":"459:76:31","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":11102,"src":"57:480:31","usedErrors":[]}],"src":"32:506:31"},"id":31},"contracts/interfaces/utils/ILoupe.sol":{"ast":{"absolutePath":"contracts/interfaces/utils/ILoupe.sol","exportedSymbols":{"ILoupe":[11142]},"id":11143,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":11103,"literals":["solidity","^","0.8",".9"],"nodeType":"PragmaDirective","src":"32:23:32"},{"abstract":false,"baseContracts":[],"canonicalName":"ILoupe","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":11142,"linearizedBaseContracts":[11142],"name":"ILoupe","nameLocation":"168:6:32","nodeType":"ContractDefinition","nodes":[{"canonicalName":"ILoupe.Facet","id":11109,"members":[{"constant":false,"id":11105,"mutability":"mutable","name":"facetAddress","nameLocation":"292:12:32","nodeType":"VariableDeclaration","scope":11109,"src":"284:20:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11104,"name":"address","nodeType":"ElementaryTypeName","src":"284:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11108,"mutability":"mutable","name":"functionSelectors","nameLocation":"323:17:32","nodeType":"VariableDeclaration","scope":11109,"src":"314:26:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage_ptr","typeString":"bytes4[]"},"typeName":{"baseType":{"id":11106,"name":"bytes4","nodeType":"ElementaryTypeName","src":"314:6:32","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":11107,"nodeType":"ArrayTypeName","src":"314:8:32","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage_ptr","typeString":"bytes4[]"}},"visibility":"internal"}],"name":"Facet","nameLocation":"268:5:32","nodeType":"StructDefinition","scope":11142,"src":"261:86:32","visibility":"public"},{"documentation":{"id":11110,"nodeType":"StructuredDocumentation","src":"353:106:32","text":"@notice Gets all facet addresses and their four byte function selectors.\n @return facets_ Facet"},"functionSelector":"7a0ed627","id":11117,"implemented":false,"kind":"function","modifiers":[],"name":"facets","nameLocation":"473:6:32","nodeType":"FunctionDefinition","parameters":{"id":11111,"nodeType":"ParameterList","parameters":[],"src":"479:2:32"},"returnParameters":{"id":11116,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11115,"mutability":"mutable","name":"facets_","nameLocation":"520:7:32","nodeType":"VariableDeclaration","scope":11117,"src":"505:22:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Facet_$11109_memory_ptr_$dyn_memory_ptr","typeString":"struct ILoupe.Facet[]"},"typeName":{"baseType":{"id":11113,"nodeType":"UserDefinedTypeName","pathNode":{"id":11112,"name":"Facet","nameLocations":["505:5:32"],"nodeType":"IdentifierPath","referencedDeclaration":11109,"src":"505:5:32"},"referencedDeclaration":11109,"src":"505:5:32","typeDescriptions":{"typeIdentifier":"t_struct$_Facet_$11109_storage_ptr","typeString":"struct ILoupe.Facet"}},"id":11114,"nodeType":"ArrayTypeName","src":"505:7:32","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Facet_$11109_storage_$dyn_storage_ptr","typeString":"struct ILoupe.Facet[]"}},"visibility":"internal"}],"src":"504:24:32"},"scope":11142,"src":"464:65:32","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":11118,"nodeType":"StructuredDocumentation","src":"535:155:32","text":"@notice Gets all the function selectors supported by a specific facet.\n @param _facet The facet address.\n @return facetFunctionSelectors_"},"functionSelector":"adfca15e","id":11126,"implemented":false,"kind":"function","modifiers":[],"name":"facetFunctionSelectors","nameLocation":"704:22:32","nodeType":"FunctionDefinition","parameters":{"id":11121,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11120,"mutability":"mutable","name":"_facet","nameLocation":"744:6:32","nodeType":"VariableDeclaration","scope":11126,"src":"736:14:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11119,"name":"address","nodeType":"ElementaryTypeName","src":"736:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"726:30:32"},"returnParameters":{"id":11125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11124,"mutability":"mutable","name":"facetFunctionSelectors_","nameLocation":"796:23:32","nodeType":"VariableDeclaration","scope":11126,"src":"780:39:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[]"},"typeName":{"baseType":{"id":11122,"name":"bytes4","nodeType":"ElementaryTypeName","src":"780:6:32","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":11123,"nodeType":"ArrayTypeName","src":"780:8:32","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage_ptr","typeString":"bytes4[]"}},"visibility":"internal"}],"src":"779:41:32"},"scope":11142,"src":"695:126:32","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":11127,"nodeType":"StructuredDocumentation","src":"827:90:32","text":"@notice Get all the facet addresses used by a diamond.\n @return facetAddresses_"},"functionSelector":"52ef6b2c","id":11133,"implemented":false,"kind":"function","modifiers":[],"name":"facetAddresses","nameLocation":"931:14:32","nodeType":"FunctionDefinition","parameters":{"id":11128,"nodeType":"ParameterList","parameters":[],"src":"945:2:32"},"returnParameters":{"id":11132,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11131,"mutability":"mutable","name":"facetAddresses_","nameLocation":"1012:15:32","nodeType":"VariableDeclaration","scope":11133,"src":"995:32:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":11129,"name":"address","nodeType":"ElementaryTypeName","src":"995:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11130,"nodeType":"ArrayTypeName","src":"995:9:32","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"994:34:32"},"scope":11142,"src":"922:107:32","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":11134,"nodeType":"StructuredDocumentation","src":"1035:219:32","text":"@notice Gets the facet that supports the given selector.\n @dev If facet is not found return address(0).\n @param _functionSelector The function selector.\n @return facetAddress_ The facet address."},"functionSelector":"cdffacc6","id":11141,"implemented":false,"kind":"function","modifiers":[],"name":"facetAddress","nameLocation":"1268:12:32","nodeType":"FunctionDefinition","parameters":{"id":11137,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11136,"mutability":"mutable","name":"_functionSelector","nameLocation":"1297:17:32","nodeType":"VariableDeclaration","scope":11141,"src":"1290:24:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":11135,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1290:6:32","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1280:40:32"},"returnParameters":{"id":11140,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11139,"mutability":"mutable","name":"facetAddress_","nameLocation":"1352:13:32","nodeType":"VariableDeclaration","scope":11141,"src":"1344:21:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11138,"name":"address","nodeType":"ElementaryTypeName","src":"1344:7:32","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1343:23:32"},"scope":11142,"src":"1259:108:32","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":11143,"src":"158:1211:32","usedErrors":[]}],"src":"32:1338:32"},"id":32},"contracts/interfaces/utils/IUtility.sol":{"ast":{"absolutePath":"contracts/interfaces/utils/IUtility.sol","exportedSymbols":{"IUtility":[11155]},"id":11156,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":11144,"literals":["solidity","^","0.8",".9"],"nodeType":"PragmaDirective","src":"32:23:33"},{"abstract":false,"baseContracts":[],"canonicalName":"IUtility","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":11155,"linearizedBaseContracts":[11155],"name":"IUtility","nameLocation":"67:8:33","nodeType":"ContractDefinition","nodes":[{"functionSelector":"88a9d554","id":11149,"implemented":false,"kind":"function","modifiers":[],"name":"getNativeBalance","nameLocation":"91:16:33","nodeType":"FunctionDefinition","parameters":{"id":11145,"nodeType":"ParameterList","parameters":[],"src":"107:2:33"},"returnParameters":{"id":11148,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11147,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11149,"src":"133:7:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11146,"name":"uint256","nodeType":"ElementaryTypeName","src":"133:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"132:9:33"},"scope":11155,"src":"82:60:33","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"c9a463e2","id":11154,"implemented":false,"kind":"function","modifiers":[],"name":"withdrawNativeBalance","nameLocation":"157:21:33","nodeType":"FunctionDefinition","parameters":{"id":11152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11151,"mutability":"mutable","name":"_amount","nameLocation":"187:7:33","nodeType":"VariableDeclaration","scope":11154,"src":"179:15:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11150,"name":"uint256","nodeType":"ElementaryTypeName","src":"179:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"178:17:33"},"returnParameters":{"id":11153,"nodeType":"ParameterList","parameters":[],"src":"204:0:33"},"scope":11155,"src":"148:57:33","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":11156,"src":"57:150:33","usedErrors":[]}],"src":"32:176:33"},"id":33},"contracts/libraries/core/LibAutomate.sol":{"ast":{"absolutePath":"contracts/libraries/core/LibAutomate.sol","exportedSymbols":{"Address":[887],"CallerNotAutobot":[11163],"IAutomate":[15534],"IERC20":[77],"IERC20Permit":[113],"IOpsProxyFactory":[15572],"ITaskTreasuryUpgradable":[15562],"InsufficientAppGelatoBalance":[11161],"LibAutomate":[11560],"Module":[15488],"ModuleData":[15496],"SafeERC20":[394]},"id":11561,"license":"BUSL-1.1","nodeType":"SourceUnit","nodes":[{"id":11157,"literals":["solidity","^","0.8",".9"],"nodeType":"PragmaDirective","src":"36:23:34"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","file":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","id":11158,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11561,"sourceUnit":395,"src":"61:65:34","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/services/gelato/Types.sol","file":"../../services/gelato/Types.sol","id":11159,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11561,"sourceUnit":15573,"src":"127:41:34","symbolAliases":[],"unitAlias":""},{"errorSelector":"a4261199","id":11161,"name":"InsufficientAppGelatoBalance","nameLocation":"193:28:34","nodeType":"ErrorDefinition","parameters":{"id":11160,"nodeType":"ParameterList","parameters":[],"src":"221:2:34"},"src":"187:37:34"},{"errorSelector":"b5e0b292","id":11163,"name":"CallerNotAutobot","nameLocation":"231:16:34","nodeType":"ErrorDefinition","parameters":{"id":11162,"nodeType":"ParameterList","parameters":[],"src":"247:2:34"},"src":"225:25:34"},{"abstract":false,"baseContracts":[],"canonicalName":"LibAutomate","contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":11560,"linearizedBaseContracts":[11560],"name":"LibAutomate","nameLocation":"260:11:34","nodeType":"ContractDefinition","nodes":[{"global":false,"id":11167,"libraryName":{"id":11164,"name":"SafeERC20","nameLocations":["284:9:34"],"nodeType":"IdentifierPath","referencedDeclaration":394,"src":"284:9:34"},"nodeType":"UsingForDirective","src":"278:27:34","typeName":{"id":11166,"nodeType":"UserDefinedTypeName","pathNode":{"id":11165,"name":"IERC20","nameLocations":["298:6:34"],"nodeType":"IdentifierPath","referencedDeclaration":77,"src":"298:6:34"},"referencedDeclaration":77,"src":"298:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$77","typeString":"contract IERC20"}}},{"constant":true,"id":11172,"mutability":"constant","name":"STORAGE_POSITION_AUTOMATE","nameLocation":"328:25:34","nodeType":"VariableDeclaration","scope":11560,"src":"311:69:34","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11168,"name":"bytes32","nodeType":"ElementaryTypeName","src":"311:7:34","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"64732e6175746f6d617465","id":11170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"366:13:34","typeDescriptions":{"typeIdentifier":"t_stringliteral_de06769ca6d80a022439e234eebb61c3801d652175b62f912d6f8cac7b881c65","typeString":"literal_string \"ds.automate\""},"value":"ds.automate"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_de06769ca6d80a022439e234eebb61c3801d652175b62f912d6f8cac7b881c65","typeString":"literal_string \"ds.automate\""}],"id":11169,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"356:9:34","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":11171,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"356:24:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":true,"id":11175,"mutability":"constant","name":"AUTOBOT_PROXY_FACTORY","nameLocation":"412:21:34","nodeType":"VariableDeclaration","scope":11560,"src":"386:100:34","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11173,"name":"address","nodeType":"ElementaryTypeName","src":"386:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"hexValue":"307843383135644231364434626536646466323638354332303139333739303561426633333846354437","id":11174,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"444:42:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"value":"0xC815dB16D4be6ddf2685C201937905aBf338F5D7"},"visibility":"internal"},{"constant":true,"id":11178,"mutability":"constant","name":"GELATO_FEE","nameLocation":"518:10:34","nodeType":"VariableDeclaration","scope":11560,"src":"492:89:34","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11176,"name":"address","nodeType":"ElementaryTypeName","src":"492:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"hexValue":"307845656565654565656545654565654565456545656545454565656565456565656565656545456545","id":11177,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"539:42:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"value":"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"},"visibility":"internal"},{"canonicalName":"LibAutomate.StorageAutomate","id":11189,"members":[{"constant":false,"id":11181,"mutability":"mutable","name":"gelatoAutobot","nameLocation":"631:13:34","nodeType":"VariableDeclaration","scope":11189,"src":"621:23:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAutomate_$15534","typeString":"contract IAutomate"},"typeName":{"id":11180,"nodeType":"UserDefinedTypeName","pathNode":{"id":11179,"name":"IAutomate","nameLocations":["621:9:34"],"nodeType":"IdentifierPath","referencedDeclaration":15534,"src":"621:9:34"},"referencedDeclaration":15534,"src":"621:9:34","typeDescriptions":{"typeIdentifier":"t_contract$_IAutomate_$15534","typeString":"contract IAutomate"}},"visibility":"internal"},{"constant":false,"id":11184,"mutability":"mutable","name":"gelatoTreasury","nameLocation":"678:14:34","nodeType":"VariableDeclaration","scope":11189,"src":"654:38:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ITaskTreasuryUpgradable_$15562","typeString":"contract ITaskTreasuryUpgradable"},"typeName":{"id":11183,"nodeType":"UserDefinedTypeName","pathNode":{"id":11182,"name":"ITaskTreasuryUpgradable","nameLocations":["654:23:34"],"nodeType":"IdentifierPath","referencedDeclaration":15562,"src":"654:23:34"},"referencedDeclaration":15562,"src":"654:23:34","typeDescriptions":{"typeIdentifier":"t_contract$_ITaskTreasuryUpgradable_$15562","typeString":"contract ITaskTreasuryUpgradable"}},"visibility":"internal"},{"constant":false,"id":11186,"mutability":"mutable","name":"gelatoNetwork","nameLocation":"710:13:34","nodeType":"VariableDeclaration","scope":11189,"src":"702:21:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11185,"name":"address","nodeType":"ElementaryTypeName","src":"702:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11188,"mutability":"mutable","name":"minimumAppGelatoBalance","nameLocation":"741:23:34","nodeType":"VariableDeclaration","scope":11189,"src":"733:31:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11187,"name":"uint256","nodeType":"ElementaryTypeName","src":"733:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"StorageAutomate","nameLocation":"595:15:34","nodeType":"StructDefinition","scope":11560,"src":"588:183:34","visibility":"public"},{"body":{"id":11200,"nodeType":"Block","src":"883:121:34","statements":[{"assignments":[11196],"declarations":[{"constant":false,"id":11196,"mutability":"mutable","name":"position","nameLocation":"901:8:34","nodeType":"VariableDeclaration","scope":11200,"src":"893:16:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11195,"name":"bytes32","nodeType":"ElementaryTypeName","src":"893:7:34","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":11198,"initialValue":{"id":11197,"name":"STORAGE_POSITION_AUTOMATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11172,"src":"912:25:34","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"893:44:34"},{"AST":{"nodeType":"YulBlock","src":"956:42:34","statements":[{"nodeType":"YulAssignment","src":"970:18:34","value":{"name":"position","nodeType":"YulIdentifier","src":"980:8:34"},"variableNames":[{"name":"s.slot","nodeType":"YulIdentifier","src":"970:6:34"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":11196,"isOffset":false,"isSlot":false,"src":"980:8:34","valueSize":1},{"declaration":11193,"isOffset":false,"isSlot":true,"src":"970:6:34","suffix":"slot","valueSize":1}],"id":11199,"nodeType":"InlineAssembly","src":"947:51:34"}]},"id":11201,"implemented":true,"kind":"function","modifiers":[],"name":"_storageAutomate","nameLocation":"786:16:34","nodeType":"FunctionDefinition","parameters":{"id":11190,"nodeType":"ParameterList","parameters":[],"src":"802:2:34"},"returnParameters":{"id":11194,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11193,"mutability":"mutable","name":"s","nameLocation":"876:1:34","nodeType":"VariableDeclaration","scope":11201,"src":"852:25:34","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageAutomate_$11189_storage_ptr","typeString":"struct LibAutomate.StorageAutomate"},"typeName":{"id":11192,"nodeType":"UserDefinedTypeName","pathNode":{"id":11191,"name":"StorageAutomate","nameLocations":["852:15:34"],"nodeType":"IdentifierPath","referencedDeclaration":11189,"src":"852:15:34"},"referencedDeclaration":11189,"src":"852:15:34","typeDescriptions":{"typeIdentifier":"t_struct$_StorageAutomate_$11189_storage_ptr","typeString":"struct LibAutomate.StorageAutomate"}},"visibility":"internal"}],"src":"851:27:34"},"scope":11560,"src":"777:227:34","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11219,"nodeType":"Block","src":"1150:152:34","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":11212,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1229:3:34","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1233:6:34","memberName":"sender","nodeType":"MemberAccess","src":"1229:10:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11211,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1221:8:34","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":11210,"name":"address","nodeType":"ElementaryTypeName","src":"1221:8:34","stateMutability":"payable","typeDescriptions":{}}},"id":11214,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1221:19:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":11215,"name":"GELATO_FEE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11178,"src":"1254:10:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11216,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11203,"src":"1278:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11206,"name":"_storageAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11201,"src":"1160:16:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageAutomate_$11189_storage_ptr_$","typeString":"function () pure returns (struct LibAutomate.StorageAutomate storage pointer)"}},"id":11207,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1160:18:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageAutomate_$11189_storage_ptr","typeString":"struct LibAutomate.StorageAutomate storage pointer"}},"id":11208,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1179:14:34","memberName":"gelatoTreasury","nodeType":"MemberAccess","referencedDeclaration":11184,"src":"1160:33:34","typeDescriptions":{"typeIdentifier":"t_contract$_ITaskTreasuryUpgradable_$15562","typeString":"contract ITaskTreasuryUpgradable"}},"id":11209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1194:13:34","memberName":"withdrawFunds","nodeType":"MemberAccess","referencedDeclaration":15552,"src":"1160:47:34","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_payable_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address payable,address,uint256) external"}},"id":11217,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1160:135:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11218,"nodeType":"ExpressionStatement","src":"1160:135:34"}]},"id":11220,"implemented":true,"kind":"function","modifiers":[],"name":"_withdrawGelatoFunds","nameLocation":"1103:20:34","nodeType":"FunctionDefinition","parameters":{"id":11204,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11203,"mutability":"mutable","name":"_amount","nameLocation":"1132:7:34","nodeType":"VariableDeclaration","scope":11220,"src":"1124:15:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11202,"name":"uint256","nodeType":"ElementaryTypeName","src":"1124:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1123:17:34"},"returnParameters":{"id":11205,"nodeType":"ParameterList","parameters":[],"src":"1150:0:34"},"scope":11560,"src":"1094:208:34","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":11239,"nodeType":"Block","src":"1410:199:34","statements":[{"expression":{"arguments":[{"arguments":[{"id":11233,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1504:4:34","typeDescriptions":{"typeIdentifier":"t_contract$_LibAutomate_$11560","typeString":"library LibAutomate"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LibAutomate_$11560","typeString":"library LibAutomate"}],"id":11232,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1496:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11231,"name":"address","nodeType":"ElementaryTypeName","src":"1496:7:34","typeDescriptions":{}}},"id":11234,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1496:13:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11235,"name":"GELATO_FEE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11178,"src":"1561:10:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11236,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11222,"src":"1585:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11225,"name":"_storageAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11201,"src":"1420:16:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageAutomate_$11189_storage_ptr_$","typeString":"function () pure returns (struct LibAutomate.StorageAutomate storage pointer)"}},"id":11226,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1420:18:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageAutomate_$11189_storage_ptr","typeString":"struct LibAutomate.StorageAutomate storage pointer"}},"id":11227,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1439:14:34","memberName":"gelatoTreasury","nodeType":"MemberAccess","referencedDeclaration":11184,"src":"1420:33:34","typeDescriptions":{"typeIdentifier":"t_contract$_ITaskTreasuryUpgradable_$15562","typeString":"contract ITaskTreasuryUpgradable"}},"id":11228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1454:12:34","memberName":"depositFunds","nodeType":"MemberAccess","referencedDeclaration":15543,"src":"1420:46:34","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) payable external"}},"id":11230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":11229,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11222,"src":"1474:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"1420:62:34","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_address_$_t_uint256_$returns$__$value","typeString":"function (address,address,uint256) payable external"}},"id":11237,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1420:182:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11238,"nodeType":"ExpressionStatement","src":"1420:182:34"}]},"id":11240,"implemented":true,"kind":"function","modifiers":[],"name":"_depositGelatoFunds","nameLocation":"1364:19:34","nodeType":"FunctionDefinition","parameters":{"id":11223,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11222,"mutability":"mutable","name":"_amount","nameLocation":"1392:7:34","nodeType":"VariableDeclaration","scope":11240,"src":"1384:15:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11221,"name":"uint256","nodeType":"ElementaryTypeName","src":"1384:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1383:17:34"},"returnParameters":{"id":11224,"nodeType":"ParameterList","parameters":[],"src":"1410:0:34"},"scope":11560,"src":"1355:254:34","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":11301,"nodeType":"Block","src":"1754:401:34","statements":[{"assignments":[11252],"declarations":[{"constant":false,"id":11252,"mutability":"mutable","name":"moduleData","nameLocation":"1782:10:34","nodeType":"VariableDeclaration","scope":11301,"src":"1764:28:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ModuleData_$15496_memory_ptr","typeString":"struct ModuleData"},"typeName":{"id":11251,"nodeType":"UserDefinedTypeName","pathNode":{"id":11250,"name":"ModuleData","nameLocations":["1764:10:34"],"nodeType":"IdentifierPath","referencedDeclaration":15496,"src":"1764:10:34"},"referencedDeclaration":15496,"src":"1764:10:34","typeDescriptions":{"typeIdentifier":"t_struct$_ModuleData_$15496_storage_ptr","typeString":"struct ModuleData"}},"visibility":"internal"}],"id":11266,"initialValue":{"arguments":[{"arguments":[{"hexValue":"32","id":11258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1842:1:34","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"id":11257,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1829:12:34","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_enum$_Module_$15488_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (enum Module[] memory)"},"typeName":{"baseType":{"id":11255,"nodeType":"UserDefinedTypeName","pathNode":{"id":11254,"name":"Module","nameLocations":["1833:6:34"],"nodeType":"IdentifierPath","referencedDeclaration":15488,"src":"1833:6:34"},"referencedDeclaration":15488,"src":"1833:6:34","typeDescriptions":{"typeIdentifier":"t_enum$_Module_$15488","typeString":"enum Module"}},"id":11256,"nodeType":"ArrayTypeName","src":"1833:8:34","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_Module_$15488_$dyn_storage_ptr","typeString":"enum Module[]"}}},"id":11259,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1829:15:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_Module_$15488_$dyn_memory_ptr","typeString":"enum Module[] memory"}},{"arguments":[{"hexValue":"31","id":11263,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1876:1:34","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":11262,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1864:11:34","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory[] memory)"},"typeName":{"baseType":{"id":11260,"name":"bytes","nodeType":"ElementaryTypeName","src":"1868:5:34","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":11261,"nodeType":"ArrayTypeName","src":"1868:7:34","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}}},"id":11264,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1864:14:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_enum$_Module_$15488_$dyn_memory_ptr","typeString":"enum Module[] memory"},{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}],"id":11253,"name":"ModuleData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15496,"src":"1795:10:34","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_ModuleData_$15496_storage_ptr_$","typeString":"type(struct ModuleData storage pointer)"}},"id":11265,"isConstant":false,"isLValue":false,"isPure":true,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["1820:7:34","1858:4:34"],"names":["modules","args"],"nodeType":"FunctionCall","src":"1795:94:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ModuleData_$15496_memory_ptr","typeString":"struct ModuleData memory"}},"nodeType":"VariableDeclarationStatement","src":"1764:125:34"},{"expression":{"id":11274,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":11267,"name":"moduleData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11252,"src":"1900:10:34","typeDescriptions":{"typeIdentifier":"t_struct$_ModuleData_$15496_memory_ptr","typeString":"struct ModuleData memory"}},"id":11270,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1911:7:34","memberName":"modules","nodeType":"MemberAccess","referencedDeclaration":15492,"src":"1900:18:34","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_Module_$15488_$dyn_memory_ptr","typeString":"enum Module[] memory"}},"id":11271,"indexExpression":{"hexValue":"30","id":11269,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1919:1:34","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1900:21:34","typeDescriptions":{"typeIdentifier":"t_enum$_Module_$15488","typeString":"enum Module"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":11272,"name":"Module","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15488,"src":"1924:6:34","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Module_$15488_$","typeString":"type(enum Module)"}},"id":11273,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1931:4:34","memberName":"TIME","nodeType":"MemberAccess","referencedDeclaration":15485,"src":"1924:11:34","typeDescriptions":{"typeIdentifier":"t_enum$_Module_$15488","typeString":"enum Module"}},"src":"1900:35:34","typeDescriptions":{"typeIdentifier":"t_enum$_Module_$15488","typeString":"enum Module"}},"id":11275,"nodeType":"ExpressionStatement","src":"1900:35:34"},{"expression":{"id":11283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":11276,"name":"moduleData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11252,"src":"1945:10:34","typeDescriptions":{"typeIdentifier":"t_struct$_ModuleData_$15496_memory_ptr","typeString":"struct ModuleData memory"}},"id":11279,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1956:7:34","memberName":"modules","nodeType":"MemberAccess","referencedDeclaration":15492,"src":"1945:18:34","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_Module_$15488_$dyn_memory_ptr","typeString":"enum Module[] memory"}},"id":11280,"indexExpression":{"hexValue":"31","id":11278,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1964:1:34","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1945:21:34","typeDescriptions":{"typeIdentifier":"t_enum$_Module_$15488","typeString":"enum Module"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":11281,"name":"Module","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15488,"src":"1969:6:34","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Module_$15488_$","typeString":"type(enum Module)"}},"id":11282,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1976:11:34","memberName":"SINGLE_EXEC","nodeType":"MemberAccess","referencedDeclaration":15487,"src":"1969:18:34","typeDescriptions":{"typeIdentifier":"t_enum$_Module_$15488","typeString":"enum Module"}},"src":"1945:42:34","typeDescriptions":{"typeIdentifier":"t_enum$_Module_$15488","typeString":"enum Module"}},"id":11284,"nodeType":"ExpressionStatement","src":"1945:42:34"},{"expression":{"id":11297,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":11285,"name":"moduleData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11252,"src":"1998:10:34","typeDescriptions":{"typeIdentifier":"t_struct$_ModuleData_$15496_memory_ptr","typeString":"struct ModuleData memory"}},"id":11288,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2009:4:34","memberName":"args","nodeType":"MemberAccess","referencedDeclaration":15495,"src":"1998:15:34","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"id":11289,"indexExpression":{"hexValue":"30","id":11287,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2014:1:34","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1998:18:34","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11294,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":11291,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"2047:5:34","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":11292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2053:9:34","memberName":"timestamp","nodeType":"MemberAccess","src":"2047:15:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":11293,"name":"_durationStart","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11242,"src":"2065:14:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2047:32:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11295,"name":"_durationInterval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11244,"src":"2093:17:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11290,"name":"_timeModuleArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11537,"src":"2019:14:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (bytes memory)"}},"id":11296,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2019:101:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"1998:122:34","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":11298,"nodeType":"ExpressionStatement","src":"1998:122:34"},{"expression":{"id":11299,"name":"moduleData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11252,"src":"2138:10:34","typeDescriptions":{"typeIdentifier":"t_struct$_ModuleData_$15496_memory_ptr","typeString":"struct ModuleData memory"}},"functionReturnParameters":11249,"id":11300,"nodeType":"Return","src":"2131:17:34"}]},"id":11302,"implemented":true,"kind":"function","modifiers":[],"name":"_getModuleData","nameLocation":"1624:14:34","nodeType":"FunctionDefinition","parameters":{"id":11245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11242,"mutability":"mutable","name":"_durationStart","nameLocation":"1656:14:34","nodeType":"VariableDeclaration","scope":11302,"src":"1648:22:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11241,"name":"uint256","nodeType":"ElementaryTypeName","src":"1648:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11244,"mutability":"mutable","name":"_durationInterval","nameLocation":"1688:17:34","nodeType":"VariableDeclaration","scope":11302,"src":"1680:25:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11243,"name":"uint256","nodeType":"ElementaryTypeName","src":"1680:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1638:73:34"},"returnParameters":{"id":11249,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11248,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11302,"src":"1735:17:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ModuleData_$15496_memory_ptr","typeString":"struct ModuleData"},"typeName":{"id":11247,"nodeType":"UserDefinedTypeName","pathNode":{"id":11246,"name":"ModuleData","nameLocations":["1735:10:34"],"nodeType":"IdentifierPath","referencedDeclaration":15496,"src":"1735:10:34"},"referencedDeclaration":15496,"src":"1735:10:34","typeDescriptions":{"typeIdentifier":"t_struct$_ModuleData_$15496_storage_ptr","typeString":"struct ModuleData"}},"visibility":"internal"}],"src":"1734:19:34"},"scope":11560,"src":"1615:540:34","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":11343,"nodeType":"Block","src":"2222:410:34","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11311,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11309,"name":"_feeToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11306,"src":"2236:9:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":11310,"name":"GELATO_FEE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11178,"src":"2249:10:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2236:23:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":11341,"nodeType":"Block","src":"2458:168:34","statements":[{"expression":{"arguments":[{"arguments":[{"id":11333,"name":"_feeToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11306,"src":"2519:9:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11332,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":77,"src":"2512:6:34","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$77_$","typeString":"type(contract IERC20)"}},"id":11334,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2512:17:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$77","typeString":"contract IERC20"}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11335,"name":"_storageAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11201,"src":"2547:16:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageAutomate_$11189_storage_ptr_$","typeString":"function () pure returns (struct LibAutomate.StorageAutomate storage pointer)"}},"id":11336,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2547:18:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageAutomate_$11189_storage_ptr","typeString":"struct LibAutomate.StorageAutomate storage pointer"}},"id":11337,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2566:13:34","memberName":"gelatoNetwork","nodeType":"MemberAccess","referencedDeclaration":11186,"src":"2547:32:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11338,"name":"_fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11304,"src":"2597:4:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$77","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11329,"name":"SafeERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":394,"src":"2472:9:34","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeERC20_$394_$","typeString":"type(library SafeERC20)"}},"id":11331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2482:12:34","memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":145,"src":"2472:22:34","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$77_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256)"}},"id":11339,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2472:143:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11340,"nodeType":"ExpressionStatement","src":"2472:143:34"}]},"id":11342,"nodeType":"IfStatement","src":"2232:394:34","trueBody":{"id":11328,"nodeType":"Block","src":"2261:191:34","statements":[{"assignments":[11313,null],"declarations":[{"constant":false,"id":11313,"mutability":"mutable","name":"success","nameLocation":"2281:7:34","nodeType":"VariableDeclaration","scope":11328,"src":"2276:12:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11312,"name":"bool","nodeType":"ElementaryTypeName","src":"2276:4:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":11322,"initialValue":{"arguments":[{"hexValue":"","id":11320,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2375:2:34","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11314,"name":"_storageAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11201,"src":"2294:16:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageAutomate_$11189_storage_ptr_$","typeString":"function () pure returns (struct LibAutomate.StorageAutomate storage pointer)"}},"id":11315,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2294:18:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageAutomate_$11189_storage_ptr","typeString":"struct LibAutomate.StorageAutomate storage pointer"}},"id":11316,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2313:13:34","memberName":"gelatoNetwork","nodeType":"MemberAccess","referencedDeclaration":11186,"src":"2294:32:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2327:4:34","memberName":"call","nodeType":"MemberAccess","src":"2294:37:34","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":11319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":11318,"name":"_fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11304,"src":"2356:4:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2294:80:34","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":11321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2294:84:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2275:103:34"},{"expression":{"arguments":[{"id":11324,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11313,"src":"2400:7:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4c69624175746f6d6174653a205f7472616e73666572206661696c6564","id":11325,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2409:31:34","typeDescriptions":{"typeIdentifier":"t_stringliteral_b24521f2acb2461b4e7257d6e06c3c0d0d7d3233139ee3ec85b64c2d7241819e","typeString":"literal_string \"LibAutomate: _transfer failed\""},"value":"LibAutomate: _transfer failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b24521f2acb2461b4e7257d6e06c3c0d0d7d3233139ee3ec85b64c2d7241819e","typeString":"literal_string \"LibAutomate: _transfer failed\""}],"id":11323,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2392:7:34","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":11326,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2392:49:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11327,"nodeType":"ExpressionStatement","src":"2392:49:34"}]}}]},"id":11344,"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"2170:9:34","nodeType":"FunctionDefinition","parameters":{"id":11307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11304,"mutability":"mutable","name":"_fee","nameLocation":"2188:4:34","nodeType":"VariableDeclaration","scope":11344,"src":"2180:12:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11303,"name":"uint256","nodeType":"ElementaryTypeName","src":"2180:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11306,"mutability":"mutable","name":"_feeToken","nameLocation":"2202:9:34","nodeType":"VariableDeclaration","scope":11344,"src":"2194:17:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11305,"name":"address","nodeType":"ElementaryTypeName","src":"2194:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2179:33:34"},"returnParameters":{"id":11308,"nodeType":"ParameterList","parameters":[],"src":"2222:0:34"},"scope":11560,"src":"2161:471:34","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":11361,"nodeType":"Block","src":"2746:83:34","statements":[{"expression":{"id":11359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":11351,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11347,"src":"2757:3:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11352,"name":"feeToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11349,"src":"2762:8:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":11353,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"2756:15:34","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_address_$","typeString":"tuple(uint256,address)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11354,"name":"_storageAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11201,"src":"2774:16:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageAutomate_$11189_storage_ptr_$","typeString":"function () pure returns (struct LibAutomate.StorageAutomate storage pointer)"}},"id":11355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2774:18:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageAutomate_$11189_storage_ptr","typeString":"struct LibAutomate.StorageAutomate storage pointer"}},"id":11356,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2793:13:34","memberName":"gelatoAutobot","nodeType":"MemberAccess","referencedDeclaration":11181,"src":"2774:32:34","typeDescriptions":{"typeIdentifier":"t_contract$_IAutomate_$15534","typeString":"contract IAutomate"}},"id":11357,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2807:13:34","memberName":"getFeeDetails","nodeType":"MemberAccess","referencedDeclaration":15522,"src":"2774:46:34","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$_t_address_$","typeString":"function () view external returns (uint256,address)"}},"id":11358,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2774:48:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_address_$","typeString":"tuple(uint256,address)"}},"src":"2756:66:34","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11360,"nodeType":"ExpressionStatement","src":"2756:66:34"}]},"id":11362,"implemented":true,"kind":"function","modifiers":[],"name":"_getFeeDetails","nameLocation":"2647:14:34","nodeType":"FunctionDefinition","parameters":{"id":11345,"nodeType":"ParameterList","parameters":[],"src":"2661:2:34"},"returnParameters":{"id":11350,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11347,"mutability":"mutable","name":"fee","nameLocation":"2719:3:34","nodeType":"VariableDeclaration","scope":11362,"src":"2711:11:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11346,"name":"uint256","nodeType":"ElementaryTypeName","src":"2711:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11349,"mutability":"mutable","name":"feeToken","nameLocation":"2732:8:34","nodeType":"VariableDeclaration","scope":11362,"src":"2724:16:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11348,"name":"address","nodeType":"ElementaryTypeName","src":"2724:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2710:31:34"},"scope":11560,"src":"2638:191:34","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":11378,"nodeType":"Block","src":"2922:115:34","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":11365,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2936:3:34","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2940:6:34","memberName":"sender","nodeType":"MemberAccess","src":"2936:10:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11369,"name":"_storageAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11201,"src":"2958:16:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageAutomate_$11189_storage_ptr_$","typeString":"function () pure returns (struct LibAutomate.StorageAutomate storage pointer)"}},"id":11370,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2958:18:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageAutomate_$11189_storage_ptr","typeString":"struct LibAutomate.StorageAutomate storage pointer"}},"id":11371,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2977:13:34","memberName":"gelatoAutobot","nodeType":"MemberAccess","referencedDeclaration":11181,"src":"2958:32:34","typeDescriptions":{"typeIdentifier":"t_contract$_IAutomate_$15534","typeString":"contract IAutomate"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IAutomate_$15534","typeString":"contract IAutomate"}],"id":11368,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2950:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11367,"name":"address","nodeType":"ElementaryTypeName","src":"2950:7:34","typeDescriptions":{}}},"id":11372,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2950:41:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2936:55:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11377,"nodeType":"IfStatement","src":"2932:98:34","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":11374,"name":"CallerNotAutobot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11163,"src":"3012:16:34","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":11375,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3012:18:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11376,"nodeType":"RevertStatement","src":"3005:25:34"}}]},"id":11379,"implemented":true,"kind":"function","modifiers":[],"name":"_requireOnlyAutobot","nameLocation":"2886:19:34","nodeType":"FunctionDefinition","parameters":{"id":11363,"nodeType":"ParameterList","parameters":[],"src":"2905:2:34"},"returnParameters":{"id":11364,"nodeType":"ParameterList","parameters":[],"src":"2922:0:34"},"scope":11560,"src":"2877:160:34","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":11392,"nodeType":"Block","src":"3103:150:34","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11387,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":11382,"name":"_getAppGelatoBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11499,"src":"3130:20:34","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":11383,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3130:22:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11384,"name":"_storageAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11201,"src":"3156:16:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageAutomate_$11189_storage_ptr_$","typeString":"function () pure returns (struct LibAutomate.StorageAutomate storage pointer)"}},"id":11385,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3156:18:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageAutomate_$11189_storage_ptr","typeString":"struct LibAutomate.StorageAutomate storage pointer"}},"id":11386,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3175:23:34","memberName":"minimumAppGelatoBalance","nodeType":"MemberAccess","referencedDeclaration":11188,"src":"3156:42:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3130:68:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11391,"nodeType":"IfStatement","src":"3113:133:34","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":11388,"name":"InsufficientAppGelatoBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11161,"src":"3216:28:34","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":11389,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3216:30:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11390,"nodeType":"RevertStatement","src":"3209:37:34"}}]},"id":11393,"implemented":true,"kind":"function","modifiers":[],"name":"_requireSufficientAppGelatoBalance","nameLocation":"3052:34:34","nodeType":"FunctionDefinition","parameters":{"id":11380,"nodeType":"ParameterList","parameters":[],"src":"3086:2:34"},"returnParameters":{"id":11381,"nodeType":"ParameterList","parameters":[],"src":"3103:0:34"},"scope":11560,"src":"3043:210:34","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":11426,"nodeType":"Block","src":"3357:263:34","statements":[{"expression":{"id":11404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11398,"name":"_storageAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11201,"src":"3367:16:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageAutomate_$11189_storage_ptr_$","typeString":"function () pure returns (struct LibAutomate.StorageAutomate storage pointer)"}},"id":11399,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3367:18:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageAutomate_$11189_storage_ptr","typeString":"struct LibAutomate.StorageAutomate storage pointer"}},"id":11400,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3386:13:34","memberName":"gelatoAutobot","nodeType":"MemberAccess","referencedDeclaration":11181,"src":"3367:32:34","typeDescriptions":{"typeIdentifier":"t_contract$_IAutomate_$15534","typeString":"contract IAutomate"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11402,"name":"_autobot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11395,"src":"3412:8:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11401,"name":"IAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15534,"src":"3402:9:34","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAutomate_$15534_$","typeString":"type(contract IAutomate)"}},"id":11403,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3402:19:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAutomate_$15534","typeString":"contract IAutomate"}},"src":"3367:54:34","typeDescriptions":{"typeIdentifier":"t_contract$_IAutomate_$15534","typeString":"contract IAutomate"}},"id":11405,"nodeType":"ExpressionStatement","src":"3367:54:34"},{"expression":{"id":11414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11406,"name":"_storageAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11201,"src":"3431:16:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageAutomate_$11189_storage_ptr_$","typeString":"function () pure returns (struct LibAutomate.StorageAutomate storage pointer)"}},"id":11407,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3431:18:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageAutomate_$11189_storage_ptr","typeString":"struct LibAutomate.StorageAutomate storage pointer"}},"id":11408,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3450:13:34","memberName":"gelatoNetwork","nodeType":"MemberAccess","referencedDeclaration":11186,"src":"3431:32:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":11410,"name":"_autobot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11395,"src":"3476:8:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11409,"name":"IAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15534,"src":"3466:9:34","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAutomate_$15534_$","typeString":"type(contract IAutomate)"}},"id":11411,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3466:19:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAutomate_$15534","typeString":"contract IAutomate"}},"id":11412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3486:6:34","memberName":"gelato","nodeType":"MemberAccess","referencedDeclaration":15527,"src":"3466:26:34","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_payable_$","typeString":"function () view external returns (address payable)"}},"id":11413,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3466:28:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"3431:63:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11415,"nodeType":"ExpressionStatement","src":"3431:63:34"},{"expression":{"id":11424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11416,"name":"_storageAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11201,"src":"3504:16:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageAutomate_$11189_storage_ptr_$","typeString":"function () pure returns (struct LibAutomate.StorageAutomate storage pointer)"}},"id":11417,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3504:18:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageAutomate_$11189_storage_ptr","typeString":"struct LibAutomate.StorageAutomate storage pointer"}},"id":11418,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3523:14:34","memberName":"gelatoTreasury","nodeType":"MemberAccess","referencedDeclaration":11184,"src":"3504:33:34","typeDescriptions":{"typeIdentifier":"t_contract$_ITaskTreasuryUpgradable_$15562","typeString":"contract ITaskTreasuryUpgradable"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11419,"name":"_storageAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11201,"src":"3540:16:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageAutomate_$11189_storage_ptr_$","typeString":"function () pure returns (struct LibAutomate.StorageAutomate storage pointer)"}},"id":11420,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3540:18:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageAutomate_$11189_storage_ptr","typeString":"struct LibAutomate.StorageAutomate storage pointer"}},"id":11421,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3572:13:34","memberName":"gelatoAutobot","nodeType":"MemberAccess","referencedDeclaration":11181,"src":"3540:45:34","typeDescriptions":{"typeIdentifier":"t_contract$_IAutomate_$15534","typeString":"contract IAutomate"}},"id":11422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3599:12:34","memberName":"taskTreasury","nodeType":"MemberAccess","referencedDeclaration":15533,"src":"3540:71:34","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_ITaskTreasuryUpgradable_$15562_$","typeString":"function () view external returns (contract ITaskTreasuryUpgradable)"}},"id":11423,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3540:73:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ITaskTreasuryUpgradable_$15562","typeString":"contract ITaskTreasuryUpgradable"}},"src":"3504:109:34","typeDescriptions":{"typeIdentifier":"t_contract$_ITaskTreasuryUpgradable_$15562","typeString":"contract ITaskTreasuryUpgradable"}},"id":11425,"nodeType":"ExpressionStatement","src":"3504:109:34"}]},"id":11427,"implemented":true,"kind":"function","modifiers":[],"name":"_setGelatoContracts","nameLocation":"3310:19:34","nodeType":"FunctionDefinition","parameters":{"id":11396,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11395,"mutability":"mutable","name":"_autobot","nameLocation":"3338:8:34","nodeType":"VariableDeclaration","scope":11427,"src":"3330:16:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11394,"name":"address","nodeType":"ElementaryTypeName","src":"3330:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3329:18:34"},"returnParameters":{"id":11397,"nodeType":"ParameterList","parameters":[],"src":"3357:0:34"},"scope":11560,"src":"3301:319:34","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":11438,"nodeType":"Block","src":"3688:68:34","statements":[{"expression":{"id":11436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11432,"name":"_storageAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11201,"src":"3698:16:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageAutomate_$11189_storage_ptr_$","typeString":"function () pure returns (struct LibAutomate.StorageAutomate storage pointer)"}},"id":11433,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3698:18:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageAutomate_$11189_storage_ptr","typeString":"struct LibAutomate.StorageAutomate storage pointer"}},"id":11434,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3717:23:34","memberName":"minimumAppGelatoBalance","nodeType":"MemberAccess","referencedDeclaration":11188,"src":"3698:42:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11435,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11429,"src":"3743:6:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3698:51:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11437,"nodeType":"ExpressionStatement","src":"3698:51:34"}]},"id":11439,"implemented":true,"kind":"function","modifiers":[],"name":"_setMinimumAppGelatoBalance","nameLocation":"3635:27:34","nodeType":"FunctionDefinition","parameters":{"id":11430,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11429,"mutability":"mutable","name":"_value","nameLocation":"3671:6:34","nodeType":"VariableDeclaration","scope":11439,"src":"3663:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11428,"name":"uint256","nodeType":"ElementaryTypeName","src":"3663:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3662:16:34"},"returnParameters":{"id":11431,"nodeType":"ParameterList","parameters":[],"src":"3688:0:34"},"scope":11560,"src":"3626:130:34","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":11471,"nodeType":"Block","src":"3931:250:34","statements":[{"expression":{"components":[{"arguments":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11454,"name":"_storageAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11201,"src":"3970:16:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageAutomate_$11189_storage_ptr_$","typeString":"function () pure returns (struct LibAutomate.StorageAutomate storage pointer)"}},"id":11455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3970:18:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageAutomate_$11189_storage_ptr","typeString":"struct LibAutomate.StorageAutomate storage pointer"}},"id":11456,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3989:13:34","memberName":"gelatoAutobot","nodeType":"MemberAccess","referencedDeclaration":11181,"src":"3970:32:34","typeDescriptions":{"typeIdentifier":"t_contract$_IAutomate_$15534","typeString":"contract IAutomate"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IAutomate_$15534","typeString":"contract IAutomate"}],"id":11453,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3962:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11452,"name":"address","nodeType":"ElementaryTypeName","src":"3962:7:34","typeDescriptions":{}}},"id":11457,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3962:41:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11460,"name":"_storageAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11201,"src":"4025:16:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageAutomate_$11189_storage_ptr_$","typeString":"function () pure returns (struct LibAutomate.StorageAutomate storage pointer)"}},"id":11461,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4025:18:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageAutomate_$11189_storage_ptr","typeString":"struct LibAutomate.StorageAutomate storage pointer"}},"id":11462,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4044:14:34","memberName":"gelatoTreasury","nodeType":"MemberAccess","referencedDeclaration":11184,"src":"4025:33:34","typeDescriptions":{"typeIdentifier":"t_contract$_ITaskTreasuryUpgradable_$15562","typeString":"contract ITaskTreasuryUpgradable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ITaskTreasuryUpgradable_$15562","typeString":"contract ITaskTreasuryUpgradable"}],"id":11459,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4017:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11458,"name":"address","nodeType":"ElementaryTypeName","src":"4017:7:34","typeDescriptions":{}}},"id":11463,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4017:42:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11464,"name":"_storageAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11201,"src":"4073:16:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageAutomate_$11189_storage_ptr_$","typeString":"function () pure returns (struct LibAutomate.StorageAutomate storage pointer)"}},"id":11465,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4073:18:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageAutomate_$11189_storage_ptr","typeString":"struct LibAutomate.StorageAutomate storage pointer"}},"id":11466,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4092:13:34","memberName":"gelatoNetwork","nodeType":"MemberAccess","referencedDeclaration":11186,"src":"4073:32:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11467,"name":"AUTOBOT_PROXY_FACTORY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11175,"src":"4119:21:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11468,"name":"GELATO_FEE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11178,"src":"4154:10:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":11469,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3948:226:34","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$_t_address_$_t_address_$_t_address_$","typeString":"tuple(address,address,address,address,address)"}},"functionReturnParameters":11451,"id":11470,"nodeType":"Return","src":"3941:233:34"}]},"id":11472,"implemented":true,"kind":"function","modifiers":[],"name":"_getGelatoAddresses","nameLocation":"3813:19:34","nodeType":"FunctionDefinition","parameters":{"id":11440,"nodeType":"ParameterList","parameters":[],"src":"3832:2:34"},"returnParameters":{"id":11451,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11442,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11472,"src":"3882:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11441,"name":"address","nodeType":"ElementaryTypeName","src":"3882:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11444,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11472,"src":"3891:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11443,"name":"address","nodeType":"ElementaryTypeName","src":"3891:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11446,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11472,"src":"3900:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11445,"name":"address","nodeType":"ElementaryTypeName","src":"3900:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11448,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11472,"src":"3909:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11447,"name":"address","nodeType":"ElementaryTypeName","src":"3909:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11450,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11472,"src":"3918:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11449,"name":"address","nodeType":"ElementaryTypeName","src":"3918:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3881:45:34"},"scope":11560,"src":"3804:377:34","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":11481,"nodeType":"Block","src":"4258:66:34","statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11477,"name":"_storageAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11201,"src":"4275:16:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageAutomate_$11189_storage_ptr_$","typeString":"function () pure returns (struct LibAutomate.StorageAutomate storage pointer)"}},"id":11478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4275:18:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageAutomate_$11189_storage_ptr","typeString":"struct LibAutomate.StorageAutomate storage pointer"}},"id":11479,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4294:23:34","memberName":"minimumAppGelatoBalance","nodeType":"MemberAccess","referencedDeclaration":11188,"src":"4275:42:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11476,"id":11480,"nodeType":"Return","src":"4268:49:34"}]},"id":11482,"implemented":true,"kind":"function","modifiers":[],"name":"_getMinimumAppGelatoBalance","nameLocation":"4196:27:34","nodeType":"FunctionDefinition","parameters":{"id":11473,"nodeType":"ParameterList","parameters":[],"src":"4223:2:34"},"returnParameters":{"id":11476,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11475,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11482,"src":"4249:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11474,"name":"uint256","nodeType":"ElementaryTypeName","src":"4249:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4248:9:34"},"scope":11560,"src":"4187:137:34","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":11498,"nodeType":"Block","src":"4394:159:34","statements":[{"expression":{"arguments":[{"arguments":[{"id":11493,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4499:4:34","typeDescriptions":{"typeIdentifier":"t_contract$_LibAutomate_$11560","typeString":"library LibAutomate"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LibAutomate_$11560","typeString":"library LibAutomate"}],"id":11492,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4491:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11491,"name":"address","nodeType":"ElementaryTypeName","src":"4491:7:34","typeDescriptions":{}}},"id":11494,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4491:13:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11495,"name":"GELATO_FEE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11178,"src":"4522:10:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11487,"name":"_storageAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11201,"src":"4423:16:34","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageAutomate_$11189_storage_ptr_$","typeString":"function () pure returns (struct LibAutomate.StorageAutomate storage pointer)"}},"id":11488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4423:18:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageAutomate_$11189_storage_ptr","typeString":"struct LibAutomate.StorageAutomate storage pointer"}},"id":11489,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4442:14:34","memberName":"gelatoTreasury","nodeType":"MemberAccess","referencedDeclaration":11184,"src":"4423:33:34","typeDescriptions":{"typeIdentifier":"t_contract$_ITaskTreasuryUpgradable_$15562","typeString":"contract ITaskTreasuryUpgradable"}},"id":11490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4457:16:34","memberName":"userTokenBalance","nodeType":"MemberAccess","referencedDeclaration":15561,"src":"4423:50:34","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":11496,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4423:123:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11486,"id":11497,"nodeType":"Return","src":"4404:142:34"}]},"id":11499,"implemented":true,"kind":"function","modifiers":[],"name":"_getAppGelatoBalance","nameLocation":"4339:20:34","nodeType":"FunctionDefinition","parameters":{"id":11483,"nodeType":"ParameterList","parameters":[],"src":"4359:2:34"},"returnParameters":{"id":11486,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11485,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11499,"src":"4385:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11484,"name":"uint256","nodeType":"ElementaryTypeName","src":"4385:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4384:9:34"},"scope":11560,"src":"4330:223:34","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":11514,"nodeType":"Block","src":"4742:67:34","statements":[{"expression":{"arguments":[{"id":11510,"name":"_resolverAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11501,"src":"4770:16:34","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11511,"name":"_resolverData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11503,"src":"4788:13:34","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":11508,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4759:3:34","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":11509,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4763:6:34","memberName":"encode","nodeType":"MemberAccess","src":"4759:10:34","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":11512,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4759:43:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":11507,"id":11513,"nodeType":"Return","src":"4752:50:34"}]},"id":11515,"implemented":true,"kind":"function","modifiers":[],"name":"_resolverModuleArg","nameLocation":"4610:18:34","nodeType":"FunctionDefinition","parameters":{"id":11504,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11501,"mutability":"mutable","name":"_resolverAddress","nameLocation":"4646:16:34","nodeType":"VariableDeclaration","scope":11515,"src":"4638:24:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11500,"name":"address","nodeType":"ElementaryTypeName","src":"4638:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11503,"mutability":"mutable","name":"_resolverData","nameLocation":"4685:13:34","nodeType":"VariableDeclaration","scope":11515,"src":"4672:26:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11502,"name":"bytes","nodeType":"ElementaryTypeName","src":"4672:5:34","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4628:76:34"},"returnParameters":{"id":11507,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11506,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11515,"src":"4728:12:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11505,"name":"bytes","nodeType":"ElementaryTypeName","src":"4728:5:34","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4727:14:34"},"scope":11560,"src":"4601:208:34","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11536,"nodeType":"Block","src":"4937:75:34","statements":[{"expression":{"arguments":[{"arguments":[{"id":11528,"name":"_startTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11517,"src":"4973:10:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11527,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4965:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":11526,"name":"uint128","nodeType":"ElementaryTypeName","src":"4965:7:34","typeDescriptions":{}}},"id":11529,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4965:19:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"arguments":[{"id":11532,"name":"_interval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11519,"src":"4994:9:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11531,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4986:7:34","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":11530,"name":"uint128","nodeType":"ElementaryTypeName","src":"4986:7:34","typeDescriptions":{}}},"id":11533,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4986:18:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":11524,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4954:3:34","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":11525,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4958:6:34","memberName":"encode","nodeType":"MemberAccess","src":"4954:10:34","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":11534,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4954:51:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":11523,"id":11535,"nodeType":"Return","src":"4947:58:34"}]},"id":11537,"implemented":true,"kind":"function","modifiers":[],"name":"_timeModuleArg","nameLocation":"4824:14:34","nodeType":"FunctionDefinition","parameters":{"id":11520,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11517,"mutability":"mutable","name":"_startTime","nameLocation":"4856:10:34","nodeType":"VariableDeclaration","scope":11537,"src":"4848:18:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11516,"name":"uint256","nodeType":"ElementaryTypeName","src":"4848:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11519,"mutability":"mutable","name":"_interval","nameLocation":"4884:9:34","nodeType":"VariableDeclaration","scope":11537,"src":"4876:17:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11518,"name":"uint256","nodeType":"ElementaryTypeName","src":"4876:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4838:61:34"},"returnParameters":{"id":11523,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11522,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11537,"src":"4923:12:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11521,"name":"bytes","nodeType":"ElementaryTypeName","src":"4923:5:34","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4922:14:34"},"scope":11560,"src":"4815:197:34","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11547,"nodeType":"Block","src":"5082:33:34","statements":[{"expression":{"arguments":[{"hexValue":"","id":11544,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5105:2:34","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":11543,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5099:5:34","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":11542,"name":"bytes","nodeType":"ElementaryTypeName","src":"5099:5:34","typeDescriptions":{}}},"id":11545,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5099:9:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":11541,"id":11546,"nodeType":"Return","src":"5092:16:34"}]},"id":11548,"implemented":true,"kind":"function","modifiers":[],"name":"_proxyModuleArg","nameLocation":"5027:15:34","nodeType":"FunctionDefinition","parameters":{"id":11538,"nodeType":"ParameterList","parameters":[],"src":"5042:2:34"},"returnParameters":{"id":11541,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11540,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11548,"src":"5068:12:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11539,"name":"bytes","nodeType":"ElementaryTypeName","src":"5068:5:34","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5067:14:34"},"scope":11560,"src":"5018:97:34","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11558,"nodeType":"Block","src":"5190:33:34","statements":[{"expression":{"arguments":[{"hexValue":"","id":11555,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5213:2:34","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":11554,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5207:5:34","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":11553,"name":"bytes","nodeType":"ElementaryTypeName","src":"5207:5:34","typeDescriptions":{}}},"id":11556,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5207:9:34","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":11552,"id":11557,"nodeType":"Return","src":"5200:16:34"}]},"id":11559,"implemented":true,"kind":"function","modifiers":[],"name":"_singleExecModuleArg","nameLocation":"5130:20:34","nodeType":"FunctionDefinition","parameters":{"id":11549,"nodeType":"ParameterList","parameters":[],"src":"5150:2:34"},"returnParameters":{"id":11552,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11551,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11559,"src":"5176:12:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11550,"name":"bytes","nodeType":"ElementaryTypeName","src":"5176:5:34","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5175:14:34"},"scope":11560,"src":"5121:102:34","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":11561,"src":"252:4973:34","usedErrors":[]}],"src":"36:5190:34"},"id":34},"contracts/libraries/core/LibControl.sol":{"ast":{"absolutePath":"contracts/libraries/core/LibControl.sol","exportedSymbols":{"ArrayLengthNotMatch":[11575],"BasisPointsRange":[14188],"ContractError":[11591],"ISuperToken":[6947],"InsufficientAppSTBalance":[11579],"InsufficientAssets":[11581],"InsufficientFeeBalance":[11583],"InvalidBasisPoints":[11587],"InvalidFlowRate":[11589],"InvalidFlowRateBounds":[11585],"InvalidSuperToken":[11577],"IterableMappingBPS":[14434],"LibControl":[12557],"LibSession":[14179],"SuperTokenV1Library":[5077],"ZeroValue":[11573]},"id":12558,"license":"BUSL-1.1","nodeType":"SourceUnit","nodes":[{"id":11562,"literals":["solidity","^","0.8",".9"],"nodeType":"PragmaDirective","src":"36:23:35"},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol","file":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol","id":11564,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12558,"sourceUnit":7600,"src":"61:115:35","symbolAliases":[{"foreign":{"id":11563,"name":"ISuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6947,"src":"69:11:35","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol","file":"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol","id":11566,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12558,"sourceUnit":5078,"src":"177:114:35","symbolAliases":[{"foreign":{"id":11565,"name":"SuperTokenV1Library","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5077,"src":"185:19:35","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/libraries/utils/IterableMappingBPS.sol","file":"../utils/IterableMappingBPS.sol","id":11569,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12558,"sourceUnit":14435,"src":"292:85:35","symbolAliases":[{"foreign":{"id":11567,"name":"IterableMappingBPS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14434,"src":"300:18:35","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":11568,"name":"BasisPointsRange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14188,"src":"320:16:35","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/libraries/core/LibSession.sol","file":"./LibSession.sol","id":11571,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12558,"sourceUnit":14180,"src":"379:44:35","symbolAliases":[{"foreign":{"id":11570,"name":"LibSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14179,"src":"387:10:35","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"errorSelector":"7c946ed7","id":11573,"name":"ZeroValue","nameLocation":"431:9:35","nodeType":"ErrorDefinition","parameters":{"id":11572,"nodeType":"ParameterList","parameters":[],"src":"440:2:35"},"src":"425:18:35"},{"errorSelector":"ed882f71","id":11575,"name":"ArrayLengthNotMatch","nameLocation":"450:19:35","nodeType":"ErrorDefinition","parameters":{"id":11574,"nodeType":"ParameterList","parameters":[],"src":"469:2:35"},"src":"444:28:35"},{"errorSelector":"334ae3e6","id":11577,"name":"InvalidSuperToken","nameLocation":"479:17:35","nodeType":"ErrorDefinition","parameters":{"id":11576,"nodeType":"ParameterList","parameters":[],"src":"496:2:35"},"src":"473:26:35"},{"errorSelector":"1824866a","id":11579,"name":"InsufficientAppSTBalance","nameLocation":"506:24:35","nodeType":"ErrorDefinition","parameters":{"id":11578,"nodeType":"ParameterList","parameters":[],"src":"530:2:35"},"src":"500:33:35"},{"errorSelector":"96d80433","id":11581,"name":"InsufficientAssets","nameLocation":"540:18:35","nodeType":"ErrorDefinition","parameters":{"id":11580,"nodeType":"ParameterList","parameters":[],"src":"558:2:35"},"src":"534:27:35"},{"errorSelector":"f00d49ea","id":11583,"name":"InsufficientFeeBalance","nameLocation":"568:22:35","nodeType":"ErrorDefinition","parameters":{"id":11582,"nodeType":"ParameterList","parameters":[],"src":"590:2:35"},"src":"562:31:35"},{"errorSelector":"22450233","id":11585,"name":"InvalidFlowRateBounds","nameLocation":"600:21:35","nodeType":"ErrorDefinition","parameters":{"id":11584,"nodeType":"ParameterList","parameters":[],"src":"621:2:35"},"src":"594:30:35"},{"errorSelector":"800c7e91","id":11587,"name":"InvalidBasisPoints","nameLocation":"631:18:35","nodeType":"ErrorDefinition","parameters":{"id":11586,"nodeType":"ParameterList","parameters":[],"src":"649:2:35"},"src":"625:27:35"},{"errorSelector":"fe267e42","id":11589,"name":"InvalidFlowRate","nameLocation":"659:15:35","nodeType":"ErrorDefinition","parameters":{"id":11588,"nodeType":"ParameterList","parameters":[],"src":"674:2:35"},"src":"653:24:35"},{"errorSelector":"ae1c061f","id":11591,"name":"ContractError","nameLocation":"684:13:35","nodeType":"ErrorDefinition","parameters":{"id":11590,"nodeType":"ParameterList","parameters":[],"src":"697:2:35"},"src":"678:22:35"},{"abstract":false,"baseContracts":[],"canonicalName":"LibControl","contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":12557,"linearizedBaseContracts":[12557],"name":"LibControl","nameLocation":"710:10:35","nodeType":"ContractDefinition","nodes":[{"global":false,"id":11595,"libraryName":{"id":11592,"name":"SuperTokenV1Library","nameLocations":["733:19:35"],"nodeType":"IdentifierPath","referencedDeclaration":5077,"src":"733:19:35"},"nodeType":"UsingForDirective","src":"727:42:35","typeName":{"id":11594,"nodeType":"UserDefinedTypeName","pathNode":{"id":11593,"name":"ISuperToken","nameLocations":["757:11:35"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"757:11:35"},"referencedDeclaration":6947,"src":"757:11:35","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}},{"global":false,"id":11599,"libraryName":{"id":11596,"name":"IterableMappingBPS","nameLocations":["780:18:35"],"nodeType":"IdentifierPath","referencedDeclaration":14434,"src":"780:18:35"},"nodeType":"UsingForDirective","src":"774:52:35","typeName":{"id":11598,"nodeType":"UserDefinedTypeName","pathNode":{"id":11597,"name":"IterableMappingBPS.Map","nameLocations":["803:18:35","822:3:35"],"nodeType":"IdentifierPath","referencedDeclaration":14205,"src":"803:22:35"},"referencedDeclaration":14205,"src":"803:22:35","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14205_storage_ptr","typeString":"struct IterableMappingBPS.Map"}}},{"constant":true,"id":11604,"mutability":"constant","name":"STORAGE_POSITION_CONTROL","nameLocation":"849:24:35","nodeType":"VariableDeclaration","scope":12557,"src":"832:67:35","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11600,"name":"bytes32","nodeType":"ElementaryTypeName","src":"832:7:35","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"64732e636f6e74726f6c","id":11602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"886:12:35","typeDescriptions":{"typeIdentifier":"t_stringliteral_2f7ed27098ecefe70183ee38ae4542dee65215b0786f6870871034402cfe2cc9","typeString":"literal_string \"ds.control\""},"value":"ds.control"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_2f7ed27098ecefe70183ee38ae4542dee65215b0786f6870871034402cfe2cc9","typeString":"literal_string \"ds.control\""}],"id":11601,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"876:9:35","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":11603,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"876:23:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":true,"id":11607,"mutability":"constant","name":"bpsMin","nameLocation":"929:6:35","nodeType":"VariableDeclaration","scope":12557,"src":"905:36:35","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":11605,"name":"uint8","nodeType":"ElementaryTypeName","src":"905:5:35","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"313030","id":11606,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"938:3:35","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"visibility":"internal"},{"constant":true,"id":11610,"mutability":"constant","name":"bpsMax","nameLocation":"972:6:35","nodeType":"VariableDeclaration","scope":12557,"src":"947:39:35","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":11608,"name":"uint16","nodeType":"ElementaryTypeName","src":"947:6:35","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"value":{"hexValue":"3130303030","id":11609,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"981:5:35","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"10000"},"visibility":"internal"},{"canonicalName":"LibControl.ControlRecord","id":11619,"members":[{"constant":false,"id":11612,"mutability":"mutable","name":"receiver","nameLocation":"1032:8:35","nodeType":"VariableDeclaration","scope":11619,"src":"1024:16:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11611,"name":"address","nodeType":"ElementaryTypeName","src":"1024:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11614,"mutability":"mutable","name":"sessionNonce","nameLocation":"1058:12:35","nodeType":"VariableDeclaration","scope":11619,"src":"1050:20:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11613,"name":"uint256","nodeType":"ElementaryTypeName","src":"1050:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11616,"mutability":"mutable","name":"timestampIncrease","nameLocation":"1088:17:35","nodeType":"VariableDeclaration","scope":11619,"src":"1080:25:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11615,"name":"uint256","nodeType":"ElementaryTypeName","src":"1080:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11618,"mutability":"mutable","name":"timestampDecrease","nameLocation":"1123:17:35","nodeType":"VariableDeclaration","scope":11619,"src":"1115:25:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11617,"name":"uint256","nodeType":"ElementaryTypeName","src":"1115:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"ControlRecord","nameLocation":"1000:13:35","nodeType":"StructDefinition","scope":12557,"src":"993:154:35","visibility":"public"},{"canonicalName":"LibControl.StorageControl","id":11668,"members":[{"constant":false,"id":11622,"mutability":"mutable","name":"bps","nameLocation":"1208:3:35","nodeType":"VariableDeclaration","scope":11668,"src":"1185:26:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14205_storage_ptr","typeString":"struct IterableMappingBPS.Map"},"typeName":{"id":11621,"nodeType":"UserDefinedTypeName","pathNode":{"id":11620,"name":"IterableMappingBPS.Map","nameLocations":["1185:18:35","1204:3:35"],"nodeType":"IdentifierPath","referencedDeclaration":14205,"src":"1185:22:35"},"referencedDeclaration":14205,"src":"1185:22:35","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14205_storage_ptr","typeString":"struct IterableMappingBPS.Map"}},"visibility":"internal"},{"constant":false,"id":11626,"mutability":"mutable","name":"sbps","nameLocation":"1347:4:35","nodeType":"VariableDeclaration","scope":11668,"src":"1320:31:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint16_$","typeString":"mapping(address => uint16)"},"typeName":{"id":11625,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":11623,"name":"address","nodeType":"ElementaryTypeName","src":"1328:7:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1320:26:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint16_$","typeString":"mapping(address => uint16)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":11624,"name":"uint16","nodeType":"ElementaryTypeName","src":"1339:6:35","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}},"visibility":"internal"},{"constant":false,"id":11628,"mutability":"mutable","name":"isBPSEnabled","nameLocation":"1377:12:35","nodeType":"VariableDeclaration","scope":11668,"src":"1372:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11627,"name":"bool","nodeType":"ElementaryTypeName","src":"1372:4:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":11630,"mutability":"mutable","name":"minimumEndDuration","nameLocation":"1407:18:35","nodeType":"VariableDeclaration","scope":11668,"src":"1399:26:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11629,"name":"uint256","nodeType":"ElementaryTypeName","src":"1399:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11632,"mutability":"mutable","name":"minimumLifespan","nameLocation":"1454:15:35","nodeType":"VariableDeclaration","scope":11668,"src":"1446:23:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11631,"name":"uint256","nodeType":"ElementaryTypeName","src":"1446:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11634,"mutability":"mutable","name":"stBufferDurationInSecond","nameLocation":"1498:24:35","nodeType":"VariableDeclaration","scope":11668,"src":"1490:32:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11633,"name":"uint256","nodeType":"ElementaryTypeName","src":"1490:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11638,"mutability":"mutable","name":"superTokens","nameLocation":"1557:11:35","nodeType":"VariableDeclaration","scope":11668,"src":"1532:36:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":11637,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":11635,"name":"address","nodeType":"ElementaryTypeName","src":"1540:7:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1532:24:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":11636,"name":"bool","nodeType":"ElementaryTypeName","src":"1551:4:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"internal"},{"constant":false,"id":11642,"mutability":"mutable","name":"unsettledControlNonce","nameLocation":"1617:21:35","nodeType":"VariableDeclaration","scope":11668,"src":"1589:49:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":11641,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":11639,"name":"address","nodeType":"ElementaryTypeName","src":"1597:7:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1589:27:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":11640,"name":"uint256","nodeType":"ElementaryTypeName","src":"1608:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"},{"constant":false,"id":11646,"mutability":"mutable","name":"controlNonce","nameLocation":"1676:12:35","nodeType":"VariableDeclaration","scope":11668,"src":"1648:40:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":11645,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":11643,"name":"address","nodeType":"ElementaryTypeName","src":"1656:7:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1648:27:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":11644,"name":"uint256","nodeType":"ElementaryTypeName","src":"1667:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"},{"constant":false,"id":11653,"mutability":"mutable","name":"controlRecord","nameLocation":"1776:13:35","nodeType":"VariableDeclaration","scope":11668,"src":"1722:67:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_ControlRecord_$11619_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibControl.ControlRecord))"},"typeName":{"id":11652,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":11647,"name":"address","nodeType":"ElementaryTypeName","src":"1730:7:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1722:53:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_ControlRecord_$11619_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibControl.ControlRecord))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":11651,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":11648,"name":"uint256","nodeType":"ElementaryTypeName","src":"1749:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1741:33:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ControlRecord_$11619_storage_$","typeString":"mapping(uint256 => struct LibControl.ControlRecord)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":11650,"nodeType":"UserDefinedTypeName","pathNode":{"id":11649,"name":"ControlRecord","nameLocations":["1760:13:35"],"nodeType":"IdentifierPath","referencedDeclaration":11619,"src":"1760:13:35"},"referencedDeclaration":11619,"src":"1760:13:35","typeDescriptions":{"typeIdentifier":"t_struct$_ControlRecord_$11619_storage_ptr","typeString":"struct LibControl.ControlRecord"}}}},"visibility":"internal"},{"constant":false,"id":11657,"mutability":"mutable","name":"feeBalance","nameLocation":"1870:10:35","nodeType":"VariableDeclaration","scope":11668,"src":"1842:38:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":11656,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":11654,"name":"address","nodeType":"ElementaryTypeName","src":"1850:7:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1842:27:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":11655,"name":"uint256","nodeType":"ElementaryTypeName","src":"1861:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"},{"constant":false,"id":11663,"mutability":"mutable","name":"assets","nameLocation":"1986:6:35","nodeType":"VariableDeclaration","scope":11668,"src":"1938:54:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":11662,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":11658,"name":"address","nodeType":"ElementaryTypeName","src":"1946:7:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1938:47:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":11661,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":11659,"name":"address","nodeType":"ElementaryTypeName","src":"1965:7:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1957:27:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":11660,"name":"uint256","nodeType":"ElementaryTypeName","src":"1976:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"internal"},{"constant":false,"id":11667,"mutability":"mutable","name":"totalAssets","nameLocation":"2076:11:35","nodeType":"VariableDeclaration","scope":11668,"src":"2048:39:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":11666,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":11664,"name":"address","nodeType":"ElementaryTypeName","src":"2056:7:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2048:27:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":11665,"name":"uint256","nodeType":"ElementaryTypeName","src":"2067:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"}],"name":"StorageControl","nameLocation":"1160:14:35","nodeType":"StructDefinition","scope":12557,"src":"1153:972:35","visibility":"public"},{"body":{"id":11679,"nodeType":"Block","src":"2235:120:35","statements":[{"assignments":[11675],"declarations":[{"constant":false,"id":11675,"mutability":"mutable","name":"position","nameLocation":"2253:8:35","nodeType":"VariableDeclaration","scope":11679,"src":"2245:16:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11674,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2245:7:35","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":11677,"initialValue":{"id":11676,"name":"STORAGE_POSITION_CONTROL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11604,"src":"2264:24:35","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"2245:43:35"},{"AST":{"nodeType":"YulBlock","src":"2307:42:35","statements":[{"nodeType":"YulAssignment","src":"2321:18:35","value":{"name":"position","nodeType":"YulIdentifier","src":"2331:8:35"},"variableNames":[{"name":"s.slot","nodeType":"YulIdentifier","src":"2321:6:35"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":11675,"isOffset":false,"isSlot":false,"src":"2331:8:35","valueSize":1},{"declaration":11672,"isOffset":false,"isSlot":true,"src":"2321:6:35","suffix":"slot","valueSize":1}],"id":11678,"nodeType":"InlineAssembly","src":"2298:51:35"}]},"id":11680,"implemented":true,"kind":"function","modifiers":[],"name":"_storageControl","nameLocation":"2140:15:35","nodeType":"FunctionDefinition","parameters":{"id":11669,"nodeType":"ParameterList","parameters":[],"src":"2155:2:35"},"returnParameters":{"id":11673,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11672,"mutability":"mutable","name":"s","nameLocation":"2228:1:35","nodeType":"VariableDeclaration","scope":11680,"src":"2205:24:35","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl"},"typeName":{"id":11671,"nodeType":"UserDefinedTypeName","pathNode":{"id":11670,"name":"StorageControl","nameLocations":["2205:14:35"],"nodeType":"IdentifierPath","referencedDeclaration":11668,"src":"2205:14:35"},"referencedDeclaration":11668,"src":"2205:14:35","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl"}},"visibility":"internal"}],"src":"2204:26:35"},"scope":12557,"src":"2131:224:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11719,"nodeType":"Block","src":"2515:270:35","statements":[{"expression":{"arguments":[{"expression":{"id":11691,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2576:3:35","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2580:6:35","memberName":"sender","nodeType":"MemberAccess","src":"2576:10:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":11695,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2608:4:35","typeDescriptions":{"typeIdentifier":"t_contract$_LibControl_$12557","typeString":"library LibControl"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LibControl_$12557","typeString":"library LibControl"}],"id":11694,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2600:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11693,"name":"address","nodeType":"ElementaryTypeName","src":"2600:7:35","typeDescriptions":{}}},"id":11696,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2600:13:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11697,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11684,"src":"2627:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":11688,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11682,"src":"2537:11:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11687,"name":"ISuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6947,"src":"2525:11:35","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISuperToken_$6947_$","typeString":"type(contract ISuperToken)"}},"id":11689,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2525:24:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"id":11690,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2550:12:35","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":6663,"src":"2525:37:35","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":11698,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2525:119:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11699,"nodeType":"ExpressionStatement","src":"2525:119:35"},{"expression":{"id":11709,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11700,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11680,"src":"2655:15:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$11668_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":11701,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2655:17:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":11702,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2673:6:35","memberName":"assets","nodeType":"MemberAccess","referencedDeclaration":11663,"src":"2655:24:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":11705,"indexExpression":{"expression":{"id":11703,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2680:3:35","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2684:6:35","memberName":"sender","nodeType":"MemberAccess","src":"2680:10:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2655:36:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":11707,"indexExpression":{"id":11706,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11682,"src":"2692:11:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2655:49:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":11708,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11684,"src":"2708:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2655:60:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11710,"nodeType":"ExpressionStatement","src":"2655:60:35"},{"expression":{"id":11717,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11711,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11680,"src":"2725:15:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$11668_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":11712,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2725:17:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":11713,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2743:11:35","memberName":"totalAssets","nodeType":"MemberAccess","referencedDeclaration":11667,"src":"2725:29:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":11715,"indexExpression":{"id":11714,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11682,"src":"2755:11:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2725:42:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":11716,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11684,"src":"2771:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2725:53:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11718,"nodeType":"ExpressionStatement","src":"2725:53:35"}]},"id":11720,"implemented":true,"kind":"function","modifiers":[],"name":"_depositAsset","nameLocation":"2454:13:35","nodeType":"FunctionDefinition","parameters":{"id":11685,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11682,"mutability":"mutable","name":"_superToken","nameLocation":"2476:11:35","nodeType":"VariableDeclaration","scope":11720,"src":"2468:19:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11681,"name":"address","nodeType":"ElementaryTypeName","src":"2468:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11684,"mutability":"mutable","name":"_amount","nameLocation":"2497:7:35","nodeType":"VariableDeclaration","scope":11720,"src":"2489:15:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11683,"name":"uint256","nodeType":"ElementaryTypeName","src":"2489:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2467:38:35"},"returnParameters":{"id":11686,"nodeType":"ParameterList","parameters":[],"src":"2515:0:35"},"scope":12557,"src":"2445:340:35","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":11769,"nodeType":"Block","src":"2862:320:35","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11727,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11680,"src":"2876:15:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$11668_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":11728,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2876:17:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":11729,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2894:6:35","memberName":"assets","nodeType":"MemberAccess","referencedDeclaration":11663,"src":"2876:24:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":11732,"indexExpression":{"expression":{"id":11730,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2901:3:35","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2905:6:35","memberName":"sender","nodeType":"MemberAccess","src":"2901:10:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2876:36:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":11734,"indexExpression":{"id":11733,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11722,"src":"2913:11:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2876:49:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":11735,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11724,"src":"2928:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2876:59:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11740,"nodeType":"IfStatement","src":"2872:104:35","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":11737,"name":"InsufficientAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11581,"src":"2956:18:35","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":11738,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2956:20:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11739,"nodeType":"RevertStatement","src":"2949:27:35"}},{"expression":{"id":11750,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11741,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11680,"src":"2987:15:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$11668_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":11742,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2987:17:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":11743,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3005:6:35","memberName":"assets","nodeType":"MemberAccess","referencedDeclaration":11663,"src":"2987:24:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":11746,"indexExpression":{"expression":{"id":11744,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3012:3:35","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3016:6:35","memberName":"sender","nodeType":"MemberAccess","src":"3012:10:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2987:36:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":11748,"indexExpression":{"id":11747,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11722,"src":"3024:11:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2987:49:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":11749,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11724,"src":"3040:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2987:60:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11751,"nodeType":"ExpressionStatement","src":"2987:60:35"},{"expression":{"id":11758,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11752,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11680,"src":"3057:15:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$11668_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":11753,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3057:17:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":11754,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3075:11:35","memberName":"totalAssets","nodeType":"MemberAccess","referencedDeclaration":11667,"src":"3057:29:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":11756,"indexExpression":{"id":11755,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11722,"src":"3087:11:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3057:42:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":11757,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11724,"src":"3103:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3057:53:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11759,"nodeType":"ExpressionStatement","src":"3057:53:35"},{"expression":{"arguments":[{"expression":{"id":11764,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3155:3:35","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11765,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3159:6:35","memberName":"sender","nodeType":"MemberAccess","src":"3155:10:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11766,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11724,"src":"3167:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":11761,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11722,"src":"3133:11:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11760,"name":"ISuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6947,"src":"3121:11:35","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISuperToken_$6947_$","typeString":"type(contract ISuperToken)"}},"id":11762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3121:24:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"id":11763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3146:8:35","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":6625,"src":"3121:33:35","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":11767,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3121:54:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11768,"nodeType":"ExpressionStatement","src":"3121:54:35"}]},"id":11770,"implemented":true,"kind":"function","modifiers":[],"name":"_withdrawAsset","nameLocation":"2800:14:35","nodeType":"FunctionDefinition","parameters":{"id":11725,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11722,"mutability":"mutable","name":"_superToken","nameLocation":"2823:11:35","nodeType":"VariableDeclaration","scope":11770,"src":"2815:19:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11721,"name":"address","nodeType":"ElementaryTypeName","src":"2815:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11724,"mutability":"mutable","name":"_amount","nameLocation":"2844:7:35","nodeType":"VariableDeclaration","scope":11770,"src":"2836:15:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11723,"name":"uint256","nodeType":"ElementaryTypeName","src":"2836:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2814:38:35"},"returnParameters":{"id":11726,"nodeType":"ParameterList","parameters":[],"src":"2862:0:35"},"scope":12557,"src":"2791:391:35","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":11809,"nodeType":"Block","src":"3286:310:35","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11777,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11680,"src":"3300:15:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$11668_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":11778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3300:17:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":11779,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3318:10:35","memberName":"feeBalance","nodeType":"MemberAccess","referencedDeclaration":11657,"src":"3300:28:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":11781,"indexExpression":{"id":11780,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11772,"src":"3329:11:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3300:41:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":11782,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11774,"src":"3344:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3300:51:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11787,"nodeType":"IfStatement","src":"3296:100:35","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":11784,"name":"InsufficientFeeBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11583,"src":"3372:22:35","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":11785,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3372:24:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11786,"nodeType":"RevertStatement","src":"3365:31:35"}},{"expression":{"id":11794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11788,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11680,"src":"3407:15:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$11668_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":11789,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3407:17:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":11790,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3425:10:35","memberName":"feeBalance","nodeType":"MemberAccess","referencedDeclaration":11657,"src":"3407:28:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":11792,"indexExpression":{"id":11791,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11772,"src":"3436:11:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3407:41:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":11793,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11774,"src":"3452:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3407:52:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11795,"nodeType":"ExpressionStatement","src":"3407:52:35"},{"expression":{"arguments":[{"arguments":[{"id":11802,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3529:4:35","typeDescriptions":{"typeIdentifier":"t_contract$_LibControl_$12557","typeString":"library LibControl"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LibControl_$12557","typeString":"library LibControl"}],"id":11801,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3521:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11800,"name":"address","nodeType":"ElementaryTypeName","src":"3521:7:35","typeDescriptions":{}}},"id":11803,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3521:13:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":11804,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3548:3:35","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3552:6:35","memberName":"sender","nodeType":"MemberAccess","src":"3548:10:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11806,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11774,"src":"3572:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":11797,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11772,"src":"3482:11:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11796,"name":"ISuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6947,"src":"3470:11:35","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISuperToken_$6947_$","typeString":"type(contract ISuperToken)"}},"id":11798,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3470:24:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"id":11799,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3495:12:35","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":6663,"src":"3470:37:35","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":11807,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3470:119:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11808,"nodeType":"ExpressionStatement","src":"3470:119:35"}]},"id":11810,"implemented":true,"kind":"function","modifiers":[],"name":"_withdrawFeeBalance","nameLocation":"3197:19:35","nodeType":"FunctionDefinition","parameters":{"id":11775,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11772,"mutability":"mutable","name":"_superToken","nameLocation":"3234:11:35","nodeType":"VariableDeclaration","scope":11810,"src":"3226:19:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11771,"name":"address","nodeType":"ElementaryTypeName","src":"3226:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11774,"mutability":"mutable","name":"_amount","nameLocation":"3263:7:35","nodeType":"VariableDeclaration","scope":11810,"src":"3255:15:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11773,"name":"uint256","nodeType":"ElementaryTypeName","src":"3255:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3216:60:35"},"returnParameters":{"id":11776,"nodeType":"ParameterList","parameters":[],"src":"3286:0:35"},"scope":12557,"src":"3188:408:35","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":11829,"nodeType":"Block","src":"3675:151:35","statements":[{"expression":{"id":11827,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11817,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11680,"src":"3685:15:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$11668_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":11818,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3685:17:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":11819,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3703:10:35","memberName":"feeBalance","nodeType":"MemberAccess","referencedDeclaration":11657,"src":"3685:28:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":11821,"indexExpression":{"id":11820,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11814,"src":"3714:11:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3685:41:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"id":11823,"name":"count","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11812,"src":"3761:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11824,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11814,"src":"3780:11:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"74727565","id":11825,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3805:4:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":11822,"name":"_getAppFeeBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11891,"src":"3730:17:35","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bool_$returns$_t_uint256_$","typeString":"function (uint256,address,bool) returns (uint256)"}},"id":11826,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3730:89:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3685:134:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11828,"nodeType":"ExpressionStatement","src":"3685:134:35"}]},"id":11830,"implemented":true,"kind":"function","modifiers":[],"name":"_realizeFeeBalance","nameLocation":"3611:18:35","nodeType":"FunctionDefinition","parameters":{"id":11815,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11812,"mutability":"mutable","name":"count","nameLocation":"3638:5:35","nodeType":"VariableDeclaration","scope":11830,"src":"3630:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11811,"name":"uint256","nodeType":"ElementaryTypeName","src":"3630:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11814,"mutability":"mutable","name":"_superToken","nameLocation":"3653:11:35","nodeType":"VariableDeclaration","scope":11830,"src":"3645:19:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11813,"name":"address","nodeType":"ElementaryTypeName","src":"3645:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3629:36:35"},"returnParameters":{"id":11816,"nodeType":"ParameterList","parameters":[],"src":"3675:0:35"},"scope":12557,"src":"3602:224:35","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":11890,"nodeType":"Block","src":"3968:1679:35","statements":[{"assignments":[11843],"declarations":[{"constant":false,"id":11843,"mutability":"mutable","name":"sControl","nameLocation":"4001:8:35","nodeType":"VariableDeclaration","scope":11890,"src":"3978:31:35","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl"},"typeName":{"id":11842,"nodeType":"UserDefinedTypeName","pathNode":{"id":11841,"name":"StorageControl","nameLocations":["3978:14:35"],"nodeType":"IdentifierPath","referencedDeclaration":11668,"src":"3978:14:35"},"referencedDeclaration":11668,"src":"3978:14:35","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl"}},"visibility":"internal"}],"id":11846,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":11844,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11680,"src":"4012:15:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$11668_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":11845,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4012:17:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3978:51:35"},{"assignments":[11848],"declarations":[{"constant":false,"id":11848,"mutability":"mutable","name":"unsettledControlNonce","nameLocation":"4047:21:35","nodeType":"VariableDeclaration","scope":11890,"src":"4039:29:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11847,"name":"uint256","nodeType":"ElementaryTypeName","src":"4039:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11853,"initialValue":{"baseExpression":{"expression":{"id":11849,"name":"sControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11843,"src":"4071:8:35","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":11850,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4080:21:35","memberName":"unsettledControlNonce","nodeType":"MemberAccess","referencedDeclaration":11642,"src":"4071:30:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":11852,"indexExpression":{"id":11851,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11834,"src":"4115:11:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4071:65:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4039:97:35"},{"assignments":[11855],"declarations":[{"constant":false,"id":11855,"mutability":"mutable","name":"amountFee","nameLocation":"4258:9:35","nodeType":"VariableDeclaration","scope":11890,"src":"4250:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11854,"name":"uint256","nodeType":"ElementaryTypeName","src":"4250:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11856,"nodeType":"VariableDeclarationStatement","src":"4250:17:35"},{"body":{"id":11886,"nodeType":"Block","src":"4313:1301:35","statements":[{"expression":{"id":11874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11867,"name":"amountFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11855,"src":"5407:9:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"id":11869,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11834,"src":"5457:11:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11872,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11870,"name":"unsettledControlNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11848,"src":"5486:21:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":11871,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11858,"src":"5510:1:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5486:25:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11868,"name":"_calculateAmountFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11976,"src":"5420:19:35","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,uint256) view returns (uint256)"}},"id":11873,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5420:105:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5407:118:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11875,"nodeType":"ExpressionStatement","src":"5407:118:35"},{"condition":{"id":11876,"name":"_isSettle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11836,"src":"5544:9:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11885,"nodeType":"IfStatement","src":"5540:63:35","trueBody":{"expression":{"id":11883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":11877,"name":"sControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11843,"src":"5555:8:35","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":11880,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5564:21:35","memberName":"unsettledControlNonce","nodeType":"MemberAccess","referencedDeclaration":11642,"src":"5555:30:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":11881,"indexExpression":{"id":11879,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11834,"src":"5586:11:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5555:43:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":11882,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5602:1:35","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5555:48:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11884,"nodeType":"ExpressionStatement","src":"5555:48:35"}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11861,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11858,"src":"4297:1:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":11862,"name":"count","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11832,"src":"4301:5:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4297:9:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11887,"initializationExpression":{"assignments":[11858],"declarations":[{"constant":false,"id":11858,"mutability":"mutable","name":"i","nameLocation":"4290:1:35","nodeType":"VariableDeclaration","scope":11887,"src":"4282:9:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11857,"name":"uint256","nodeType":"ElementaryTypeName","src":"4282:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11860,"initialValue":{"hexValue":"30","id":11859,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4294:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4282:13:35"},"loopExpression":{"expression":{"id":11865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"4308:3:35","subExpression":{"id":11864,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11858,"src":"4308:1:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11866,"nodeType":"ExpressionStatement","src":"4308:3:35"},"nodeType":"ForStatement","src":"4277:1337:35"},{"expression":{"id":11888,"name":"amountFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11855,"src":"5631:9:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11840,"id":11889,"nodeType":"Return","src":"5624:16:35"}]},"id":11891,"implemented":true,"kind":"function","modifiers":[],"name":"_getAppFeeBalance","nameLocation":"3841:17:35","nodeType":"FunctionDefinition","parameters":{"id":11837,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11832,"mutability":"mutable","name":"count","nameLocation":"3876:5:35","nodeType":"VariableDeclaration","scope":11891,"src":"3868:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11831,"name":"uint256","nodeType":"ElementaryTypeName","src":"3868:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11834,"mutability":"mutable","name":"_superToken","nameLocation":"3899:11:35","nodeType":"VariableDeclaration","scope":11891,"src":"3891:19:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11833,"name":"address","nodeType":"ElementaryTypeName","src":"3891:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11836,"mutability":"mutable","name":"_isSettle","nameLocation":"3925:9:35","nodeType":"VariableDeclaration","scope":11891,"src":"3920:14:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11835,"name":"bool","nodeType":"ElementaryTypeName","src":"3920:4:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3858:82:35"},"returnParameters":{"id":11840,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11839,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11891,"src":"3959:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11838,"name":"uint256","nodeType":"ElementaryTypeName","src":"3959:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3958:9:35"},"scope":12557,"src":"3832:1815:35","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":11975,"nodeType":"Block","src":"6077:920:35","statements":[{"assignments":[11902],"declarations":[{"constant":false,"id":11902,"mutability":"mutable","name":"sControl","nameLocation":"6110:8:35","nodeType":"VariableDeclaration","scope":11975,"src":"6087:31:35","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl"},"typeName":{"id":11901,"nodeType":"UserDefinedTypeName","pathNode":{"id":11900,"name":"StorageControl","nameLocations":["6087:14:35"],"nodeType":"IdentifierPath","referencedDeclaration":11668,"src":"6087:14:35"},"referencedDeclaration":11668,"src":"6087:14:35","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl"}},"visibility":"internal"}],"id":11905,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":11903,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11680,"src":"6121:15:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$11668_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":11904,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6121:17:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"6087:51:35"},{"assignments":[11907],"declarations":[{"constant":false,"id":11907,"mutability":"mutable","name":"timestampIncrease","nameLocation":"6156:17:35","nodeType":"VariableDeclaration","scope":11975,"src":"6148:25:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11906,"name":"uint256","nodeType":"ElementaryTypeName","src":"6148:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11915,"initialValue":{"expression":{"baseExpression":{"baseExpression":{"expression":{"id":11908,"name":"sControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11902,"src":"6176:8:35","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":11909,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6194:13:35","memberName":"controlRecord","nodeType":"MemberAccess","referencedDeclaration":11653,"src":"6176:31:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_ControlRecord_$11619_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibControl.ControlRecord storage ref))"}},"id":11911,"indexExpression":{"id":11910,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11893,"src":"6208:11:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6176:44:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ControlRecord_$11619_storage_$","typeString":"mapping(uint256 => struct LibControl.ControlRecord storage ref)"}},"id":11913,"indexExpression":{"id":11912,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11895,"src":"6221:6:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6176:52:35","typeDescriptions":{"typeIdentifier":"t_struct$_ControlRecord_$11619_storage","typeString":"struct LibControl.ControlRecord storage ref"}},"id":11914,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6229:17:35","memberName":"timestampIncrease","nodeType":"MemberAccess","referencedDeclaration":11616,"src":"6176:70:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6148:98:35"},{"assignments":[11917],"declarations":[{"constant":false,"id":11917,"mutability":"mutable","name":"timestampDecrease","nameLocation":"6264:17:35","nodeType":"VariableDeclaration","scope":11975,"src":"6256:25:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11916,"name":"uint256","nodeType":"ElementaryTypeName","src":"6256:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11925,"initialValue":{"expression":{"baseExpression":{"baseExpression":{"expression":{"id":11918,"name":"sControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11902,"src":"6284:8:35","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":11919,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6302:13:35","memberName":"controlRecord","nodeType":"MemberAccess","referencedDeclaration":11653,"src":"6284:31:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_ControlRecord_$11619_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibControl.ControlRecord storage ref))"}},"id":11921,"indexExpression":{"id":11920,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11893,"src":"6316:11:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6284:44:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ControlRecord_$11619_storage_$","typeString":"mapping(uint256 => struct LibControl.ControlRecord storage ref)"}},"id":11923,"indexExpression":{"id":11922,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11895,"src":"6329:6:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6284:52:35","typeDescriptions":{"typeIdentifier":"t_struct$_ControlRecord_$11619_storage","typeString":"struct LibControl.ControlRecord storage ref"}},"id":11924,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6337:17:35","memberName":"timestampDecrease","nodeType":"MemberAccess","referencedDeclaration":11618,"src":"6284:70:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6256:98:35"},{"assignments":[11927,11929,null,11931],"declarations":[{"constant":false,"id":11927,"mutability":"mutable","name":"effectiveFlowRate","nameLocation":"6385:17:35","nodeType":"VariableDeclaration","scope":11975,"src":"6379:23:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":11926,"name":"int96","nodeType":"ElementaryTypeName","src":"6379:5:35","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"},{"constant":false,"id":11929,"mutability":"mutable","name":"flowRate","nameLocation":"6423:8:35","nodeType":"VariableDeclaration","scope":11975,"src":"6416:15:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":11928,"name":"uint96","nodeType":"ElementaryTypeName","src":"6416:6:35","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},null,{"constant":false,"id":11931,"mutability":"mutable","name":"timestampStop","nameLocation":"6467:13:35","nodeType":"VariableDeclaration","scope":11975,"src":"6459:21:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11930,"name":"uint256","nodeType":"ElementaryTypeName","src":"6459:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11937,"initialValue":{"arguments":[{"id":11934,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11893,"src":"6531:11:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11935,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11895,"src":"6544:6:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11932,"name":"LibSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14179,"src":"6493:10:35","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibSession_$14179_$","typeString":"type(library LibSession)"}},"id":11933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6504:26:35","memberName":"_getSessionDataFromControl","nodeType":"MemberAccess","referencedDeclaration":14178,"src":"6493:37:35","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$returns$_t_int96_$_t_uint96_$_t_uint256_$_t_uint256_$","typeString":"function (address,uint256) view returns (int96,uint96,uint256,uint256)"}},"id":11936,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6493:58:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int96_$_t_uint96_$_t_uint256_$_t_uint256_$","typeString":"tuple(int96,uint96,uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"6365:186:35"},{"assignments":[11939],"declarations":[{"constant":false,"id":11939,"mutability":"mutable","name":"feeFlowRate","nameLocation":"6570:11:35","nodeType":"VariableDeclaration","scope":11975,"src":"6562:19:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11938,"name":"uint256","nodeType":"ElementaryTypeName","src":"6562:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11946,"initialValue":{"commonType":{"typeIdentifier":"t_uint96","typeString":"uint96"},"id":11945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11940,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11929,"src":"6584:8:35","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[{"id":11943,"name":"effectiveFlowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11927,"src":"6602:17:35","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int96","typeString":"int96"}],"id":11942,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6595:6:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"},"typeName":{"id":11941,"name":"uint96","nodeType":"ElementaryTypeName","src":"6595:6:35","typeDescriptions":{}}},"id":11944,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6595:25:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"6584:36:35","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"VariableDeclarationStatement","src":"6562:58:35"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11947,"name":"timestampDecrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11917,"src":"6635:17:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":11948,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6656:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6635:22:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11958,"name":"timestampStop","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11931,"src":"6754:13:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":11959,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6771:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6754:18:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":11972,"nodeType":"Block","src":"6861:130:35","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":11969,"name":"ContractError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11591,"src":"6882:13:35","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":11970,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6882:15:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11971,"nodeType":"RevertStatement","src":"6875:22:35"}]},"id":11973,"nodeType":"IfStatement","src":"6750:241:35","trueBody":{"id":11968,"nodeType":"Block","src":"6774:81:35","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11961,"name":"feeFlowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11939,"src":"6795:11:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11964,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11962,"name":"timestampStop","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11931,"src":"6810:13:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":11963,"name":"timestampIncrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11907,"src":"6826:17:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6810:33:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":11965,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6809:35:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6795:49:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11899,"id":11967,"nodeType":"Return","src":"6788:56:35"}]}},"id":11974,"nodeType":"IfStatement","src":"6631:360:35","trueBody":{"id":11957,"nodeType":"Block","src":"6659:85:35","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11955,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11950,"name":"feeFlowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11939,"src":"6680:11:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11953,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11951,"name":"timestampDecrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11917,"src":"6695:17:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":11952,"name":"timestampIncrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11907,"src":"6715:17:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6695:37:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":11954,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6694:39:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6680:53:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11899,"id":11956,"nodeType":"Return","src":"6673:60:35"}]}}]},"id":11976,"implemented":true,"kind":"function","modifiers":[],"name":"_calculateAmountFee","nameLocation":"5966:19:35","nodeType":"FunctionDefinition","parameters":{"id":11896,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11893,"mutability":"mutable","name":"_superToken","nameLocation":"6003:11:35","nodeType":"VariableDeclaration","scope":11976,"src":"5995:19:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11892,"name":"address","nodeType":"ElementaryTypeName","src":"5995:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11895,"mutability":"mutable","name":"_nonce","nameLocation":"6032:6:35","nodeType":"VariableDeclaration","scope":11976,"src":"6024:14:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11894,"name":"uint256","nodeType":"ElementaryTypeName","src":"6024:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5985:59:35"},"returnParameters":{"id":11899,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11898,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11976,"src":"6068:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11897,"name":"uint256","nodeType":"ElementaryTypeName","src":"6068:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6067:9:35"},"scope":12557,"src":"5957:1040:35","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":11988,"nodeType":"Block","src":"7105:52:35","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11981,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11978,"src":"7119:6:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"30","id":11982,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7129:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7119:11:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11987,"nodeType":"IfStatement","src":"7115:35:35","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":11984,"name":"ZeroValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11573,"src":"7139:9:35","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":11985,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7139:11:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11986,"nodeType":"RevertStatement","src":"7132:18:35"}}]},"id":11989,"implemented":true,"kind":"function","modifiers":[],"name":"_requireNonZeroValue","nameLocation":"7054:20:35","nodeType":"FunctionDefinition","parameters":{"id":11979,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11978,"mutability":"mutable","name":"_value","nameLocation":"7083:6:35","nodeType":"VariableDeclaration","scope":11989,"src":"7075:14:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11977,"name":"uint256","nodeType":"ElementaryTypeName","src":"7075:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7074:16:35"},"returnParameters":{"id":11980,"nodeType":"ParameterList","parameters":[],"src":"7105:0:35"},"scope":12557,"src":"7045:112:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12002,"nodeType":"Block","src":"7235:86:35","statements":[{"condition":{"id":11997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"7249:37:35","subExpression":{"arguments":[{"id":11995,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11991,"src":"7274:11:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11994,"name":"_isSuperTokensSupported","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12345,"src":"7250:23:35","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":11996,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7250:36:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12001,"nodeType":"IfStatement","src":"7245:69:35","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":11998,"name":"InvalidSuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11577,"src":"7295:17:35","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":11999,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7295:19:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12000,"nodeType":"RevertStatement","src":"7288:26:35"}}]},"id":12003,"implemented":true,"kind":"function","modifiers":[],"name":"_requireSuperTokenSupported","nameLocation":"7172:27:35","nodeType":"FunctionDefinition","parameters":{"id":11992,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11991,"mutability":"mutable","name":"_superToken","nameLocation":"7208:11:35","nodeType":"VariableDeclaration","scope":12003,"src":"7200:19:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11990,"name":"address","nodeType":"ElementaryTypeName","src":"7200:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7199:21:35"},"returnParameters":{"id":11993,"nodeType":"ParameterList","parameters":[],"src":"7235:0:35"},"scope":12557,"src":"7163:158:35","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":12020,"nodeType":"Block","src":"7647:117:35","statements":[{"condition":{"id":12015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"7661:49:35","subExpression":{"arguments":[{"id":12012,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12006,"src":"7684:11:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12013,"name":"_newFlowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12008,"src":"7697:12:35","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_int96","typeString":"int96"}],"id":12011,"name":"_isNewFlowRateAllowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12524,"src":"7662:21:35","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_int96_$returns$_t_bool_$","typeString":"function (address,int96) view returns (bool)"}},"id":12014,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7662:48:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12019,"nodeType":"IfStatement","src":"7657:100:35","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":12016,"name":"InsufficientAppSTBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11579,"src":"7731:24:35","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":12017,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7731:26:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12018,"nodeType":"RevertStatement","src":"7724:33:35"}}]},"documentation":{"id":12004,"nodeType":"StructuredDocumentation","src":"7327:198:35","text":" guard against how long before app runs out of funds and loses its deposit\n * `STBufferDurationInSecond` is a critical parameter and should be set as large as possible"},"id":12021,"implemented":true,"kind":"function","modifiers":[],"name":"_requireSufficientAppSTBalance","nameLocation":"7539:30:35","nodeType":"FunctionDefinition","parameters":{"id":12009,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12006,"mutability":"mutable","name":"_superToken","nameLocation":"7587:11:35","nodeType":"VariableDeclaration","scope":12021,"src":"7579:19:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12005,"name":"address","nodeType":"ElementaryTypeName","src":"7579:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12008,"mutability":"mutable","name":"_newFlowRate","nameLocation":"7614:12:35","nodeType":"VariableDeclaration","scope":12021,"src":"7608:18:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":12007,"name":"int96","nodeType":"ElementaryTypeName","src":"7608:5:35","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"7569:63:35"},"returnParameters":{"id":12010,"nodeType":"ParameterList","parameters":[],"src":"7647:0:35"},"scope":12557,"src":"7530:234:35","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":12037,"nodeType":"Block","src":"7831:80:35","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":12032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":12028,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12026,"name":"_bps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12023,"src":"7845:4:35","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":12027,"name":"bpsMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11607,"src":"7852:6:35","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"7845:13:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":12031,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12029,"name":"_bps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12023,"src":"7862:4:35","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":12030,"name":"bpsMax","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11610,"src":"7869:6:35","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"7862:13:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7845:30:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12036,"nodeType":"IfStatement","src":"7841:63:35","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":12033,"name":"InvalidBasisPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11587,"src":"7884:18:35","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":12034,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7884:20:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12035,"nodeType":"RevertStatement","src":"7877:27:35"}}]},"id":12038,"implemented":true,"kind":"function","modifiers":[],"name":"_requireValidBasisPoints","nameLocation":"7779:24:35","nodeType":"FunctionDefinition","parameters":{"id":12024,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12023,"mutability":"mutable","name":"_bps","nameLocation":"7811:4:35","nodeType":"VariableDeclaration","scope":12038,"src":"7804:11:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":12022,"name":"uint16","nodeType":"ElementaryTypeName","src":"7804:6:35","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"7803:13:35"},"returnParameters":{"id":12025,"nodeType":"ParameterList","parameters":[],"src":"7831:0:35"},"scope":12557,"src":"7770:141:35","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12051,"nodeType":"Block","src":"8034:67:35","statements":[{"expression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12045,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11680,"src":"8051:15:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$11668_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":12046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8051:17:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":12047,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8069:12:35","memberName":"controlNonce","nodeType":"MemberAccess","referencedDeclaration":11646,"src":"8051:30:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":12049,"indexExpression":{"id":12048,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12040,"src":"8082:11:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8051:43:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12044,"id":12050,"nodeType":"Return","src":"8044:50:35"}]},"id":12052,"implemented":true,"kind":"function","modifiers":[],"name":"_getNewNonce","nameLocation":"7968:12:35","nodeType":"FunctionDefinition","parameters":{"id":12041,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12040,"mutability":"mutable","name":"_superToken","nameLocation":"7989:11:35","nodeType":"VariableDeclaration","scope":12052,"src":"7981:19:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12039,"name":"address","nodeType":"ElementaryTypeName","src":"7981:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7980:21:35"},"returnParameters":{"id":12044,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12043,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12052,"src":"8025:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12042,"name":"uint256","nodeType":"ElementaryTypeName","src":"8025:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8024:9:35"},"scope":12557,"src":"7959:142:35","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":12063,"nodeType":"Block","src":"8167:65:35","statements":[{"expression":{"id":12061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12057,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11680,"src":"8177:15:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$11668_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":12058,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8177:17:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":12059,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8195:18:35","memberName":"minimumEndDuration","nodeType":"MemberAccess","referencedDeclaration":11630,"src":"8177:36:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":12060,"name":"_duration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12054,"src":"8216:9:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8177:48:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12062,"nodeType":"ExpressionStatement","src":"8177:48:35"}]},"id":12064,"implemented":true,"kind":"function","modifiers":[],"name":"_setMinimumEndDuration","nameLocation":"8116:22:35","nodeType":"FunctionDefinition","parameters":{"id":12055,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12054,"mutability":"mutable","name":"_duration","nameLocation":"8147:9:35","nodeType":"VariableDeclaration","scope":12064,"src":"8139:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12053,"name":"uint256","nodeType":"ElementaryTypeName","src":"8139:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8138:19:35"},"returnParameters":{"id":12056,"nodeType":"ParameterList","parameters":[],"src":"8167:0:35"},"scope":12557,"src":"8107:125:35","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":12075,"nodeType":"Block","src":"8295:62:35","statements":[{"expression":{"id":12073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12069,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11680,"src":"8305:15:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$11668_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":12070,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8305:17:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":12071,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8323:15:35","memberName":"minimumLifespan","nodeType":"MemberAccess","referencedDeclaration":11632,"src":"8305:33:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":12072,"name":"_duration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12066,"src":"8341:9:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8305:45:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12074,"nodeType":"ExpressionStatement","src":"8305:45:35"}]},"id":12076,"implemented":true,"kind":"function","modifiers":[],"name":"_setMinimumLifespan","nameLocation":"8247:19:35","nodeType":"FunctionDefinition","parameters":{"id":12067,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12066,"mutability":"mutable","name":"_duration","nameLocation":"8275:9:35","nodeType":"VariableDeclaration","scope":12076,"src":"8267:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12065,"name":"uint256","nodeType":"ElementaryTypeName","src":"8267:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8266:19:35"},"returnParameters":{"id":12068,"nodeType":"ParameterList","parameters":[],"src":"8295:0:35"},"scope":12557,"src":"8238:119:35","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":12087,"nodeType":"Block","src":"8419:71:35","statements":[{"expression":{"id":12085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12081,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11680,"src":"8429:15:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$11668_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":12082,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8429:17:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":12083,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8447:24:35","memberName":"stBufferDurationInSecond","nodeType":"MemberAccess","referencedDeclaration":11634,"src":"8429:42:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":12084,"name":"_duration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12078,"src":"8474:9:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8429:54:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12086,"nodeType":"ExpressionStatement","src":"8429:54:35"}]},"id":12088,"implemented":true,"kind":"function","modifiers":[],"name":"_setSTBufferAmount","nameLocation":"8372:18:35","nodeType":"FunctionDefinition","parameters":{"id":12079,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12078,"mutability":"mutable","name":"_duration","nameLocation":"8399:9:35","nodeType":"VariableDeclaration","scope":12088,"src":"8391:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12077,"name":"uint256","nodeType":"ElementaryTypeName","src":"8391:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8390:19:35"},"returnParameters":{"id":12080,"nodeType":"ParameterList","parameters":[],"src":"8419:0:35"},"scope":12557,"src":"8363:127:35","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":12101,"nodeType":"Block","src":"8550:66:35","statements":[{"expression":{"id":12099,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12093,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11680,"src":"8560:15:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$11668_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":12094,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8560:17:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":12095,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8578:11:35","memberName":"superTokens","nodeType":"MemberAccess","referencedDeclaration":11638,"src":"8560:29:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":12097,"indexExpression":{"id":12096,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12090,"src":"8590:11:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8560:42:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":12098,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8605:4:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"8560:49:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12100,"nodeType":"ExpressionStatement","src":"8560:49:35"}]},"id":12102,"implemented":true,"kind":"function","modifiers":[],"name":"_addSuperToken","nameLocation":"8505:14:35","nodeType":"FunctionDefinition","parameters":{"id":12091,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12090,"mutability":"mutable","name":"_superToken","nameLocation":"8528:11:35","nodeType":"VariableDeclaration","scope":12102,"src":"8520:19:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12089,"name":"address","nodeType":"ElementaryTypeName","src":"8520:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8519:21:35"},"returnParameters":{"id":12092,"nodeType":"ParameterList","parameters":[],"src":"8550:0:35"},"scope":12557,"src":"8496:120:35","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":12114,"nodeType":"Block","src":"8679:66:35","statements":[{"expression":{"id":12112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"8689:49:35","subExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12107,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11680,"src":"8696:15:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$11668_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":12108,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8696:17:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":12109,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8714:11:35","memberName":"superTokens","nodeType":"MemberAccess","referencedDeclaration":11638,"src":"8696:29:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":12111,"indexExpression":{"id":12110,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12104,"src":"8726:11:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8696:42:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12113,"nodeType":"ExpressionStatement","src":"8689:49:35"}]},"id":12115,"implemented":true,"kind":"function","modifiers":[],"name":"_removeSuperToken","nameLocation":"8631:17:35","nodeType":"FunctionDefinition","parameters":{"id":12105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12104,"mutability":"mutable","name":"_superToken","nameLocation":"8657:11:35","nodeType":"VariableDeclaration","scope":12115,"src":"8649:19:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12103,"name":"address","nodeType":"ElementaryTypeName","src":"8649:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8648:21:35"},"returnParameters":{"id":12106,"nodeType":"ParameterList","parameters":[],"src":"8679:0:35"},"scope":12557,"src":"8622:123:35","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":12127,"nodeType":"Block","src":"8782:81:35","statements":[{"expression":{"id":12125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12118,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11680,"src":"8792:15:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$11668_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":12119,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8792:17:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":12120,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8810:12:35","memberName":"isBPSEnabled","nodeType":"MemberAccess","referencedDeclaration":11628,"src":"8792:30:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":12124,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"8825:31:35","subExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12121,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11680,"src":"8826:15:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$11668_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":12122,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8826:17:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":12123,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8844:12:35","memberName":"isBPSEnabled","nodeType":"MemberAccess","referencedDeclaration":11628,"src":"8826:30:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8792:64:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12126,"nodeType":"ExpressionStatement","src":"8792:64:35"}]},"id":12128,"implemented":true,"kind":"function","modifiers":[],"name":"_toggleBPS","nameLocation":"8760:10:35","nodeType":"FunctionDefinition","parameters":{"id":12116,"nodeType":"ParameterList","parameters":[],"src":"8770:2:35"},"returnParameters":{"id":12117,"nodeType":"ParameterList","parameters":[],"src":"8782:0:35"},"scope":12557,"src":"8751:112:35","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":12167,"nodeType":"Block","src":"8899:281:35","statements":[{"assignments":[12132],"declarations":[{"constant":false,"id":12132,"mutability":"mutable","name":"sizeBeforeClear","nameLocation":"8917:15:35","nodeType":"VariableDeclaration","scope":12167,"src":"8909:23:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12131,"name":"uint256","nodeType":"ElementaryTypeName","src":"8909:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12135,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":12133,"name":"_getBPSSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12367,"src":"8935:11:35","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":12134,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8935:13:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8909:39:35"},{"body":{"id":12165,"nodeType":"Block","src":"9004:170:35","statements":[{"assignments":[12147],"declarations":[{"constant":false,"id":12147,"mutability":"mutable","name":"tag","nameLocation":"9026:3:35","nodeType":"VariableDeclaration","scope":12165,"src":"9018:11:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12146,"name":"uint256","nodeType":"ElementaryTypeName","src":"9018:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12157,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12155,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":12152,"name":"_getBPSSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12367,"src":"9085:11:35","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":12153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9085:13:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":12154,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9101:1:35","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9085:17:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12148,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11680,"src":"9032:15:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$11668_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":12149,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9032:17:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":12150,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9050:3:35","memberName":"bps","nodeType":"MemberAccess","referencedDeclaration":11622,"src":"9032:21:35","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14205_storage","typeString":"struct IterableMappingBPS.Map storage ref"}},"id":12151,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9054:13:35","memberName":"getKeyAtIndex","nodeType":"MemberAccess","referencedDeclaration":14238,"src":"9032:35:35","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Map_$14205_storage_ptr_$_t_uint256_$returns$_t_uint256_$attached_to$_t_struct$_Map_$14205_storage_ptr_$","typeString":"function (struct IterableMappingBPS.Map storage pointer,uint256) view returns (uint256)"}},"id":12156,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9032:84:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9018:98:35"},{"expression":{"arguments":[{"id":12162,"name":"tag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12147,"src":"9159:3:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12158,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11680,"src":"9130:15:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$11668_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":12159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9130:17:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":12160,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9148:3:35","memberName":"bps","nodeType":"MemberAccess","referencedDeclaration":11622,"src":"9130:21:35","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14205_storage","typeString":"struct IterableMappingBPS.Map storage ref"}},"id":12161,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9152:6:35","memberName":"remove","nodeType":"MemberAccess","referencedDeclaration":14433,"src":"9130:28:35","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Map_$14205_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_struct$_Map_$14205_storage_ptr_$","typeString":"function (struct IterableMappingBPS.Map storage pointer,uint256)"}},"id":12163,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9130:33:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12164,"nodeType":"ExpressionStatement","src":"9130:33:35"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12140,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12137,"src":"8978:1:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":12141,"name":"sizeBeforeClear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12132,"src":"8982:15:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8978:19:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12166,"initializationExpression":{"assignments":[12137],"declarations":[{"constant":false,"id":12137,"mutability":"mutable","name":"i","nameLocation":"8971:1:35","nodeType":"VariableDeclaration","scope":12166,"src":"8963:9:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12136,"name":"uint256","nodeType":"ElementaryTypeName","src":"8963:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12139,"initialValue":{"hexValue":"30","id":12138,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8975:1:35","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"8963:13:35"},"loopExpression":{"expression":{"id":12144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"8999:3:35","subExpression":{"id":12143,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12137,"src":"8999:1:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12145,"nodeType":"ExpressionStatement","src":"8999:3:35"},"nodeType":"ForStatement","src":"8958:216:35"}]},"id":12168,"implemented":true,"kind":"function","modifiers":[],"name":"_clearBPS","nameLocation":"8878:9:35","nodeType":"FunctionDefinition","parameters":{"id":12129,"nodeType":"ParameterList","parameters":[],"src":"8887:2:35"},"returnParameters":{"id":12130,"nodeType":"ParameterList","parameters":[],"src":"8899:0:35"},"scope":12557,"src":"8869:311:35","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":12200,"nodeType":"Block","src":"9333:293:35","statements":[{"expression":{"arguments":[{"id":12180,"name":"_bps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12170,"src":"9368:4:35","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"id":12179,"name":"_requireValidBasisPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12038,"src":"9343:24:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint16_$returns$__$","typeString":"function (uint16) pure"}},"id":12181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9343:30:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12182,"nodeType":"ExpressionStatement","src":"9343:30:35"},{"condition":{"commonType":{"typeIdentifier":"t_uint96","typeString":"uint96"},"id":12185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12183,"name":"_flowRateUpperBound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12174,"src":"9387:19:35","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":12184,"name":"_flowRateLowerBound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12172,"src":"9409:19:35","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"9387:41:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12189,"nodeType":"IfStatement","src":"9383:89:35","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":12186,"name":"InvalidFlowRateBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11585,"src":"9449:21:35","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":12187,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9449:23:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12188,"nodeType":"RevertStatement","src":"9442:30:35"}},{"expression":{"arguments":[{"id":12194,"name":"_tag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12176,"src":"9521:4:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12195,"name":"_bps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12170,"src":"9539:4:35","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"id":12196,"name":"_flowRateLowerBound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12172,"src":"9557:19:35","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"id":12197,"name":"_flowRateUpperBound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12174,"src":"9590:19:35","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_uint96","typeString":"uint96"}],"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12190,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11680,"src":"9482:15:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$11668_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":12191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9482:17:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":12192,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9500:3:35","memberName":"bps","nodeType":"MemberAccess","referencedDeclaration":11622,"src":"9482:21:35","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14205_storage","typeString":"struct IterableMappingBPS.Map storage ref"}},"id":12193,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9504:3:35","memberName":"set","nodeType":"MemberAccess","referencedDeclaration":14353,"src":"9482:25:35","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Map_$14205_storage_ptr_$_t_uint256_$_t_uint16_$_t_uint96_$_t_uint96_$returns$__$attached_to$_t_struct$_Map_$14205_storage_ptr_$","typeString":"function (struct IterableMappingBPS.Map storage pointer,uint256,uint16,uint96,uint96)"}},"id":12198,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9482:137:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12199,"nodeType":"ExpressionStatement","src":"9482:137:35"}]},"id":12201,"implemented":true,"kind":"function","modifiers":[],"name":"_setBPS","nameLocation":"9195:7:35","nodeType":"FunctionDefinition","parameters":{"id":12177,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12170,"mutability":"mutable","name":"_bps","nameLocation":"9219:4:35","nodeType":"VariableDeclaration","scope":12201,"src":"9212:11:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":12169,"name":"uint16","nodeType":"ElementaryTypeName","src":"9212:6:35","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":12172,"mutability":"mutable","name":"_flowRateLowerBound","nameLocation":"9240:19:35","nodeType":"VariableDeclaration","scope":12201,"src":"9233:26:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":12171,"name":"uint96","nodeType":"ElementaryTypeName","src":"9233:6:35","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":12174,"mutability":"mutable","name":"_flowRateUpperBound","nameLocation":"9276:19:35","nodeType":"VariableDeclaration","scope":12201,"src":"9269:26:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":12173,"name":"uint96","nodeType":"ElementaryTypeName","src":"9269:6:35","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":12176,"mutability":"mutable","name":"_tag","nameLocation":"9313:4:35","nodeType":"VariableDeclaration","scope":12201,"src":"9305:12:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12175,"name":"uint256","nodeType":"ElementaryTypeName","src":"9305:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9202:121:35"},"returnParameters":{"id":12178,"nodeType":"ParameterList","parameters":[],"src":"9333:0:35"},"scope":12557,"src":"9186:440:35","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":12220,"nodeType":"Block","src":"9687:93:35","statements":[{"expression":{"arguments":[{"id":12209,"name":"_bps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12203,"src":"9722:4:35","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"id":12208,"name":"_requireValidBasisPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12038,"src":"9697:24:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint16_$returns$__$","typeString":"function (uint16) pure"}},"id":12210,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9697:30:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12211,"nodeType":"ExpressionStatement","src":"9697:30:35"},{"expression":{"id":12218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12212,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11680,"src":"9737:15:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$11668_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":12213,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9737:17:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":12214,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9755:4:35","memberName":"sbps","nodeType":"MemberAccess","referencedDeclaration":11626,"src":"9737:22:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint16_$","typeString":"mapping(address => uint16)"}},"id":12216,"indexExpression":{"id":12215,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12205,"src":"9760:5:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9737:29:35","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":12217,"name":"_bps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12203,"src":"9769:4:35","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"9737:36:35","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"id":12219,"nodeType":"ExpressionStatement","src":"9737:36:35"}]},"id":12221,"implemented":true,"kind":"function","modifiers":[],"name":"_setSBPS","nameLocation":"9641:8:35","nodeType":"FunctionDefinition","parameters":{"id":12206,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12203,"mutability":"mutable","name":"_bps","nameLocation":"9657:4:35","nodeType":"VariableDeclaration","scope":12221,"src":"9650:11:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":12202,"name":"uint16","nodeType":"ElementaryTypeName","src":"9650:6:35","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":12205,"mutability":"mutable","name":"_user","nameLocation":"9671:5:35","nodeType":"VariableDeclaration","scope":12221,"src":"9663:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12204,"name":"address","nodeType":"ElementaryTypeName","src":"9663:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9649:28:35"},"returnParameters":{"id":12207,"nodeType":"ParameterList","parameters":[],"src":"9687:0:35"},"scope":12557,"src":"9632:148:35","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":12234,"nodeType":"Block","src":"9966:65:35","statements":[{"expression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12228,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11680,"src":"9983:15:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$11668_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":12229,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9983:17:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":12230,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10001:10:35","memberName":"feeBalance","nodeType":"MemberAccess","referencedDeclaration":11657,"src":"9983:28:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":12232,"indexExpression":{"id":12231,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12223,"src":"10012:11:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9983:41:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12227,"id":12233,"nodeType":"Return","src":"9976:48:35"}]},"id":12235,"implemented":true,"kind":"function","modifiers":[],"name":"_getFeeBalance","nameLocation":"9884:14:35","nodeType":"FunctionDefinition","parameters":{"id":12224,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12223,"mutability":"mutable","name":"_superToken","nameLocation":"9916:11:35","nodeType":"VariableDeclaration","scope":12235,"src":"9908:19:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12222,"name":"address","nodeType":"ElementaryTypeName","src":"9908:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9898:35:35"},"returnParameters":{"id":12227,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12226,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12235,"src":"9957:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12225,"name":"uint256","nodeType":"ElementaryTypeName","src":"9957:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9956:9:35"},"scope":12557,"src":"9875:156:35","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":12300,"nodeType":"Block","src":"10180:527:35","statements":[{"assignments":[12251],"declarations":[{"constant":false,"id":12251,"mutability":"mutable","name":"receiver","nameLocation":"10198:8:35","nodeType":"VariableDeclaration","scope":12300,"src":"10190:16:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12250,"name":"address","nodeType":"ElementaryTypeName","src":"10190:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":12260,"initialValue":{"expression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12252,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11680,"src":"10209:15:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$11668_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":12253,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10209:17:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":12254,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10236:13:35","memberName":"controlRecord","nodeType":"MemberAccess","referencedDeclaration":11653,"src":"10209:40:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_ControlRecord_$11619_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibControl.ControlRecord storage ref))"}},"id":12256,"indexExpression":{"id":12255,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12237,"src":"10250:11:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10209:53:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ControlRecord_$11619_storage_$","typeString":"mapping(uint256 => struct LibControl.ControlRecord storage ref)"}},"id":12258,"indexExpression":{"id":12257,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12239,"src":"10263:6:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10209:61:35","typeDescriptions":{"typeIdentifier":"t_struct$_ControlRecord_$11619_storage","typeString":"struct LibControl.ControlRecord storage ref"}},"id":12259,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10271:8:35","memberName":"receiver","nodeType":"MemberAccess","referencedDeclaration":11612,"src":"10209:70:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"10190:89:35"},{"assignments":[12262],"declarations":[{"constant":false,"id":12262,"mutability":"mutable","name":"sessionNonce","nameLocation":"10297:12:35","nodeType":"VariableDeclaration","scope":12300,"src":"10289:20:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12261,"name":"uint256","nodeType":"ElementaryTypeName","src":"10289:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12271,"initialValue":{"expression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12263,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11680,"src":"10312:15:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$11668_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":12264,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10312:17:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":12265,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10339:13:35","memberName":"controlRecord","nodeType":"MemberAccess","referencedDeclaration":11653,"src":"10312:40:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_ControlRecord_$11619_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibControl.ControlRecord storage ref))"}},"id":12267,"indexExpression":{"id":12266,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12237,"src":"10353:11:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10312:53:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ControlRecord_$11619_storage_$","typeString":"mapping(uint256 => struct LibControl.ControlRecord storage ref)"}},"id":12269,"indexExpression":{"id":12268,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12239,"src":"10366:6:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10312:61:35","typeDescriptions":{"typeIdentifier":"t_struct$_ControlRecord_$11619_storage","typeString":"struct LibControl.ControlRecord storage ref"}},"id":12270,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10374:12:35","memberName":"sessionNonce","nodeType":"MemberAccess","referencedDeclaration":11614,"src":"10312:74:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10289:97:35"},{"assignments":[12273],"declarations":[{"constant":false,"id":12273,"mutability":"mutable","name":"timestampIncrease","nameLocation":"10404:17:35","nodeType":"VariableDeclaration","scope":12300,"src":"10396:25:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12272,"name":"uint256","nodeType":"ElementaryTypeName","src":"10396:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12282,"initialValue":{"expression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12274,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11680,"src":"10424:15:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$11668_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":12275,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10424:17:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":12276,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10451:13:35","memberName":"controlRecord","nodeType":"MemberAccess","referencedDeclaration":11653,"src":"10424:40:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_ControlRecord_$11619_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibControl.ControlRecord storage ref))"}},"id":12278,"indexExpression":{"id":12277,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12237,"src":"10465:11:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10424:53:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ControlRecord_$11619_storage_$","typeString":"mapping(uint256 => struct LibControl.ControlRecord storage ref)"}},"id":12280,"indexExpression":{"id":12279,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12239,"src":"10478:6:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10424:61:35","typeDescriptions":{"typeIdentifier":"t_struct$_ControlRecord_$11619_storage","typeString":"struct LibControl.ControlRecord storage ref"}},"id":12281,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10486:17:35","memberName":"timestampIncrease","nodeType":"MemberAccess","referencedDeclaration":11616,"src":"10424:79:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10396:107:35"},{"assignments":[12284],"declarations":[{"constant":false,"id":12284,"mutability":"mutable","name":"timestampDecrease","nameLocation":"10521:17:35","nodeType":"VariableDeclaration","scope":12300,"src":"10513:25:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12283,"name":"uint256","nodeType":"ElementaryTypeName","src":"10513:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12293,"initialValue":{"expression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12285,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11680,"src":"10541:15:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$11668_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":12286,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10541:17:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":12287,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10568:13:35","memberName":"controlRecord","nodeType":"MemberAccess","referencedDeclaration":11653,"src":"10541:40:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_ControlRecord_$11619_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibControl.ControlRecord storage ref))"}},"id":12289,"indexExpression":{"id":12288,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12237,"src":"10582:11:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10541:53:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ControlRecord_$11619_storage_$","typeString":"mapping(uint256 => struct LibControl.ControlRecord storage ref)"}},"id":12291,"indexExpression":{"id":12290,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12239,"src":"10595:6:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10541:61:35","typeDescriptions":{"typeIdentifier":"t_struct$_ControlRecord_$11619_storage","typeString":"struct LibControl.ControlRecord storage ref"}},"id":12292,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10603:17:35","memberName":"timestampDecrease","nodeType":"MemberAccess","referencedDeclaration":11618,"src":"10541:79:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10513:107:35"},{"expression":{"components":[{"id":12294,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12251,"src":"10639:8:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12295,"name":"sessionNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12262,"src":"10649:12:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12296,"name":"timestampIncrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12273,"src":"10663:17:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12297,"name":"timestampDecrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12284,"src":"10682:17:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":12298,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10638:62:35","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"tuple(address,uint256,uint256,uint256)"}},"functionReturnParameters":12249,"id":12299,"nodeType":"Return","src":"10631:69:35"}]},"id":12301,"implemented":true,"kind":"function","modifiers":[],"name":"_getControlData","nameLocation":"10046:15:35","nodeType":"FunctionDefinition","parameters":{"id":12240,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12237,"mutability":"mutable","name":"_superToken","nameLocation":"10079:11:35","nodeType":"VariableDeclaration","scope":12301,"src":"10071:19:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12236,"name":"address","nodeType":"ElementaryTypeName","src":"10071:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12239,"mutability":"mutable","name":"_nonce","nameLocation":"10108:6:35","nodeType":"VariableDeclaration","scope":12301,"src":"10100:14:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12238,"name":"uint256","nodeType":"ElementaryTypeName","src":"10100:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10061:59:35"},"returnParameters":{"id":12249,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12242,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12301,"src":"10144:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12241,"name":"address","nodeType":"ElementaryTypeName","src":"10144:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12244,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12301,"src":"10153:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12243,"name":"uint256","nodeType":"ElementaryTypeName","src":"10153:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12246,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12301,"src":"10162:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12245,"name":"uint256","nodeType":"ElementaryTypeName","src":"10162:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12248,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12301,"src":"10171:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12247,"name":"uint256","nodeType":"ElementaryTypeName","src":"10171:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10143:36:35"},"scope":12557,"src":"10037:670:35","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":12310,"nodeType":"Block","src":"10779:60:35","statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12306,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11680,"src":"10796:15:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$11668_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":12307,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10796:17:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":12308,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10814:18:35","memberName":"minimumEndDuration","nodeType":"MemberAccess","referencedDeclaration":11630,"src":"10796:36:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12305,"id":12309,"nodeType":"Return","src":"10789:43:35"}]},"id":12311,"implemented":true,"kind":"function","modifiers":[],"name":"_getMinimumEndDuration","nameLocation":"10722:22:35","nodeType":"FunctionDefinition","parameters":{"id":12302,"nodeType":"ParameterList","parameters":[],"src":"10744:2:35"},"returnParameters":{"id":12305,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12304,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12311,"src":"10770:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12303,"name":"uint256","nodeType":"ElementaryTypeName","src":"10770:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10769:9:35"},"scope":12557,"src":"10713:126:35","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":12320,"nodeType":"Block","src":"10908:57:35","statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12316,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11680,"src":"10925:15:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$11668_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":12317,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10925:17:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":12318,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10943:15:35","memberName":"minimumLifespan","nodeType":"MemberAccess","referencedDeclaration":11632,"src":"10925:33:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12315,"id":12319,"nodeType":"Return","src":"10918:40:35"}]},"id":12321,"implemented":true,"kind":"function","modifiers":[],"name":"_getMinimumLifespan","nameLocation":"10854:19:35","nodeType":"FunctionDefinition","parameters":{"id":12312,"nodeType":"ParameterList","parameters":[],"src":"10873:2:35"},"returnParameters":{"id":12315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12314,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12321,"src":"10899:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12313,"name":"uint256","nodeType":"ElementaryTypeName","src":"10899:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10898:9:35"},"scope":12557,"src":"10845:120:35","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":12330,"nodeType":"Block","src":"11043:66:35","statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12326,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11680,"src":"11060:15:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$11668_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":12327,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11060:17:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":12328,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11078:24:35","memberName":"stBufferDurationInSecond","nodeType":"MemberAccess","referencedDeclaration":11634,"src":"11060:42:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12325,"id":12329,"nodeType":"Return","src":"11053:49:35"}]},"id":12331,"implemented":true,"kind":"function","modifiers":[],"name":"_getSTBufferDurationInSecond","nameLocation":"10980:28:35","nodeType":"FunctionDefinition","parameters":{"id":12322,"nodeType":"ParameterList","parameters":[],"src":"11008:2:35"},"returnParameters":{"id":12325,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12324,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12331,"src":"11034:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12323,"name":"uint256","nodeType":"ElementaryTypeName","src":"11034:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11033:9:35"},"scope":12557,"src":"10971:138:35","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":12344,"nodeType":"Block","src":"11212:66:35","statements":[{"expression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12338,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11680,"src":"11229:15:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$11668_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":12339,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11229:17:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":12340,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11247:11:35","memberName":"superTokens","nodeType":"MemberAccess","referencedDeclaration":11638,"src":"11229:29:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":12342,"indexExpression":{"id":12341,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12333,"src":"11259:11:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11229:42:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":12337,"id":12343,"nodeType":"Return","src":"11222:49:35"}]},"id":12345,"implemented":true,"kind":"function","modifiers":[],"name":"_isSuperTokensSupported","nameLocation":"11124:23:35","nodeType":"FunctionDefinition","parameters":{"id":12334,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12333,"mutability":"mutable","name":"_superToken","nameLocation":"11165:11:35","nodeType":"VariableDeclaration","scope":12345,"src":"11157:19:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12332,"name":"address","nodeType":"ElementaryTypeName","src":"11157:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11147:35:35"},"returnParameters":{"id":12337,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12336,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12345,"src":"11206:4:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12335,"name":"bool","nodeType":"ElementaryTypeName","src":"11206:4:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"11205:6:35"},"scope":12557,"src":"11115:163:35","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":12354,"nodeType":"Block","src":"11338:54:35","statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12350,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11680,"src":"11355:15:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$11668_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":12351,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11355:17:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":12352,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11373:12:35","memberName":"isBPSEnabled","nodeType":"MemberAccess","referencedDeclaration":11628,"src":"11355:30:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":12349,"id":12353,"nodeType":"Return","src":"11348:37:35"}]},"id":12355,"implemented":true,"kind":"function","modifiers":[],"name":"_isBPSEnabled","nameLocation":"11293:13:35","nodeType":"FunctionDefinition","parameters":{"id":12346,"nodeType":"ParameterList","parameters":[],"src":"11306:2:35"},"returnParameters":{"id":12349,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12348,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12355,"src":"11332:4:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12347,"name":"bool","nodeType":"ElementaryTypeName","src":"11332:4:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"11331:6:35"},"scope":12557,"src":"11284:108:35","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":12366,"nodeType":"Block","src":"11453:52:35","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12360,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11680,"src":"11470:15:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$11668_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":12361,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11470:17:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":12362,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11488:3:35","memberName":"bps","nodeType":"MemberAccess","referencedDeclaration":11622,"src":"11470:21:35","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14205_storage","typeString":"struct IterableMappingBPS.Map storage ref"}},"id":12363,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11492:4:35","memberName":"size","nodeType":"MemberAccess","referencedDeclaration":14251,"src":"11470:26:35","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Map_$14205_storage_ptr_$returns$_t_uint256_$attached_to$_t_struct$_Map_$14205_storage_ptr_$","typeString":"function (struct IterableMappingBPS.Map storage pointer) view returns (uint256)"}},"id":12364,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11470:28:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12359,"id":12365,"nodeType":"Return","src":"11463:35:35"}]},"id":12367,"implemented":true,"kind":"function","modifiers":[],"name":"_getBPSSize","nameLocation":"11407:11:35","nodeType":"FunctionDefinition","parameters":{"id":12356,"nodeType":"ParameterList","parameters":[],"src":"11418:2:35"},"returnParameters":{"id":12359,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12358,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12367,"src":"11444:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12357,"name":"uint256","nodeType":"ElementaryTypeName","src":"11444:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11443:9:35"},"scope":12557,"src":"11398:107:35","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":12399,"nodeType":"Block","src":"11618:288:35","statements":[{"assignments":[12377,12379,12381],"declarations":[{"constant":false,"id":12377,"mutability":"mutable","name":"bps","nameLocation":"11649:3:35","nodeType":"VariableDeclaration","scope":12399,"src":"11642:10:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":12376,"name":"uint16","nodeType":"ElementaryTypeName","src":"11642:6:35","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":12379,"mutability":"mutable","name":"flowRateLowerBound","nameLocation":"11673:18:35","nodeType":"VariableDeclaration","scope":12399,"src":"11666:25:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":12378,"name":"uint96","nodeType":"ElementaryTypeName","src":"11666:6:35","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":12381,"mutability":"mutable","name":"flowRateUpperBound","nameLocation":"11712:18:35","nodeType":"VariableDeclaration","scope":12399,"src":"11705:25:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":12380,"name":"uint96","nodeType":"ElementaryTypeName","src":"11705:6:35","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"id":12385,"initialValue":{"arguments":[{"id":12383,"name":"_tag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12371,"src":"11755:4:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12382,"name":"_getBPSData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12430,"src":"11743:11:35","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint16_$_t_uint96_$_t_uint96_$","typeString":"function (uint256) view returns (uint16,uint96,uint96)"}},"id":12384,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11743:17:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint16_$_t_uint96_$_t_uint96_$","typeString":"tuple(uint16,uint96,uint96)"}},"nodeType":"VariableDeclarationStatement","src":"11628:132:35"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":12392,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint96","typeString":"uint96"},"id":12388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12386,"name":"_flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12369,"src":"11775:9:35","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":12387,"name":"flowRateLowerBound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12379,"src":"11787:18:35","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"11775:30:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint96","typeString":"uint96"},"id":12391,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12389,"name":"_flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12369,"src":"11809:9:35","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":12390,"name":"flowRateUpperBound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12381,"src":"11822:18:35","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"11809:31:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11775:65:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12396,"nodeType":"IfStatement","src":"11771:107:35","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":12393,"name":"InvalidFlowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11589,"src":"11861:15:35","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":12394,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11861:17:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12395,"nodeType":"RevertStatement","src":"11854:24:35"}},{"expression":{"id":12397,"name":"bps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12377,"src":"11896:3:35","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"functionReturnParameters":12375,"id":12398,"nodeType":"Return","src":"11889:10:35"}]},"id":12400,"implemented":true,"kind":"function","modifiers":[],"name":"_getValidBPS","nameLocation":"11520:12:35","nodeType":"FunctionDefinition","parameters":{"id":12372,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12369,"mutability":"mutable","name":"_flowRate","nameLocation":"11549:9:35","nodeType":"VariableDeclaration","scope":12400,"src":"11542:16:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":12368,"name":"uint96","nodeType":"ElementaryTypeName","src":"11542:6:35","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":12371,"mutability":"mutable","name":"_tag","nameLocation":"11576:4:35","nodeType":"VariableDeclaration","scope":12400,"src":"11568:12:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12370,"name":"uint256","nodeType":"ElementaryTypeName","src":"11568:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11532:54:35"},"returnParameters":{"id":12375,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12374,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12400,"src":"11610:6:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":12373,"name":"uint16","nodeType":"ElementaryTypeName","src":"11610:6:35","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"11609:8:35"},"scope":12557,"src":"11511:395:35","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":12429,"nodeType":"Block","src":"12008:156:35","statements":[{"assignments":[12413],"declarations":[{"constant":false,"id":12413,"mutability":"mutable","name":"data","nameLocation":"12042:4:35","nodeType":"VariableDeclaration","scope":12429,"src":"12018:28:35","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_BasisPointsRange_$14188_memory_ptr","typeString":"struct BasisPointsRange"},"typeName":{"id":12412,"nodeType":"UserDefinedTypeName","pathNode":{"id":12411,"name":"BasisPointsRange","nameLocations":["12018:16:35"],"nodeType":"IdentifierPath","referencedDeclaration":14188,"src":"12018:16:35"},"referencedDeclaration":14188,"src":"12018:16:35","typeDescriptions":{"typeIdentifier":"t_struct$_BasisPointsRange_$14188_storage_ptr","typeString":"struct BasisPointsRange"}},"visibility":"internal"}],"id":12420,"initialValue":{"arguments":[{"id":12418,"name":"_tag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12402,"src":"12075:4:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12414,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11680,"src":"12049:15:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$11668_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":12415,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12049:17:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":12416,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12067:3:35","memberName":"bps","nodeType":"MemberAccess","referencedDeclaration":11622,"src":"12049:21:35","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14205_storage","typeString":"struct IterableMappingBPS.Map storage ref"}},"id":12417,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12071:3:35","memberName":"get","nodeType":"MemberAccess","referencedDeclaration":14222,"src":"12049:25:35","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Map_$14205_storage_ptr_$_t_uint256_$returns$_t_struct$_BasisPointsRange_$14188_memory_ptr_$attached_to$_t_struct$_Map_$14205_storage_ptr_$","typeString":"function (struct IterableMappingBPS.Map storage pointer,uint256) view returns (struct BasisPointsRange memory)"}},"id":12419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12049:31:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_BasisPointsRange_$14188_memory_ptr","typeString":"struct BasisPointsRange memory"}},"nodeType":"VariableDeclarationStatement","src":"12018:62:35"},{"expression":{"components":[{"expression":{"id":12421,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12413,"src":"12098:4:35","typeDescriptions":{"typeIdentifier":"t_struct$_BasisPointsRange_$14188_memory_ptr","typeString":"struct BasisPointsRange memory"}},"id":12422,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12103:3:35","memberName":"bps","nodeType":"MemberAccess","referencedDeclaration":14183,"src":"12098:8:35","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"expression":{"id":12423,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12413,"src":"12108:4:35","typeDescriptions":{"typeIdentifier":"t_struct$_BasisPointsRange_$14188_memory_ptr","typeString":"struct BasisPointsRange memory"}},"id":12424,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12113:18:35","memberName":"flowRateLowerBound","nodeType":"MemberAccess","referencedDeclaration":14185,"src":"12108:23:35","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"expression":{"id":12425,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12413,"src":"12133:4:35","typeDescriptions":{"typeIdentifier":"t_struct$_BasisPointsRange_$14188_memory_ptr","typeString":"struct BasisPointsRange memory"}},"id":12426,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12138:18:35","memberName":"flowRateUpperBound","nodeType":"MemberAccess","referencedDeclaration":14187,"src":"12133:23:35","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"id":12427,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12097:60:35","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint16_$_t_uint96_$_t_uint96_$","typeString":"tuple(uint16,uint96,uint96)"}},"functionReturnParameters":12410,"id":12428,"nodeType":"Return","src":"12090:67:35"}]},"id":12430,"implemented":true,"kind":"function","modifiers":[],"name":"_getBPSData","nameLocation":"11921:11:35","nodeType":"FunctionDefinition","parameters":{"id":12403,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12402,"mutability":"mutable","name":"_tag","nameLocation":"11950:4:35","nodeType":"VariableDeclaration","scope":12430,"src":"11942:12:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12401,"name":"uint256","nodeType":"ElementaryTypeName","src":"11942:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11932:28:35"},"returnParameters":{"id":12410,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12405,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12430,"src":"11984:6:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":12404,"name":"uint16","nodeType":"ElementaryTypeName","src":"11984:6:35","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":12407,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12430,"src":"11992:6:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":12406,"name":"uint96","nodeType":"ElementaryTypeName","src":"11992:6:35","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":12409,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12430,"src":"12000:6:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":12408,"name":"uint96","nodeType":"ElementaryTypeName","src":"12000:6:35","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"src":"11983:24:35"},"scope":12557,"src":"11912:252:35","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":12443,"nodeType":"Block","src":"12234:53:35","statements":[{"expression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12437,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11680,"src":"12251:15:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$11668_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":12438,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12251:17:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":12439,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12269:4:35","memberName":"sbps","nodeType":"MemberAccess","referencedDeclaration":11626,"src":"12251:22:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint16_$","typeString":"mapping(address => uint16)"}},"id":12441,"indexExpression":{"id":12440,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12432,"src":"12274:5:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12251:29:35","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"functionReturnParameters":12436,"id":12442,"nodeType":"Return","src":"12244:36:35"}]},"id":12444,"implemented":true,"kind":"function","modifiers":[],"name":"_getSBPS","nameLocation":"12179:8:35","nodeType":"FunctionDefinition","parameters":{"id":12433,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12432,"mutability":"mutable","name":"_user","nameLocation":"12196:5:35","nodeType":"VariableDeclaration","scope":12444,"src":"12188:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12431,"name":"address","nodeType":"ElementaryTypeName","src":"12188:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12187:15:35"},"returnParameters":{"id":12436,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12435,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12444,"src":"12226:6:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":12434,"name":"uint16","nodeType":"ElementaryTypeName","src":"12226:6:35","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"12225:8:35"},"scope":12557,"src":"12170:117:35","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":12494,"nodeType":"Block","src":"12423:429:35","statements":[{"assignments":[12455],"declarations":[{"constant":false,"id":12455,"mutability":"mutable","name":"iSuperToken","nameLocation":"12445:11:35","nodeType":"VariableDeclaration","scope":12494,"src":"12433:23:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":12454,"nodeType":"UserDefinedTypeName","pathNode":{"id":12453,"name":"ISuperToken","nameLocations":["12433:11:35"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"12433:11:35"},"referencedDeclaration":6947,"src":"12433:11:35","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"}],"id":12459,"initialValue":{"arguments":[{"id":12457,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12446,"src":"12471:11:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12456,"name":"ISuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6947,"src":"12459:11:35","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISuperToken_$6947_$","typeString":"type(contract ISuperToken)"}},"id":12458,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12459:24:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"nodeType":"VariableDeclarationStatement","src":"12433:50:35"},{"assignments":[12461],"declarations":[{"constant":false,"id":12461,"mutability":"mutable","name":"newBufferAmount","nameLocation":"12501:15:35","nodeType":"VariableDeclaration","scope":12494,"src":"12493:23:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12460,"name":"uint256","nodeType":"ElementaryTypeName","src":"12493:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12466,"initialValue":{"arguments":[{"id":12464,"name":"_newFlowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12448,"src":"12570:12:35","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int96","typeString":"int96"}],"expression":{"id":12462,"name":"iSuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12455,"src":"12519:11:35","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"id":12463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12531:25:35","memberName":"getBufferAmountByFlowRate","nodeType":"MemberAccess","referencedDeclaration":3327,"src":"12519:37:35","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_ISuperToken_$6947_$_t_int96_$returns$_t_uint256_$attached_to$_t_contract$_ISuperToken_$6947_$","typeString":"function (contract ISuperToken,int96) view returns (uint256)"}},"id":12465,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12519:73:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12493:99:35"},{"assignments":[12468],"declarations":[{"constant":false,"id":12468,"mutability":"mutable","name":"contractNetFlowRate","nameLocation":"12608:19:35","nodeType":"VariableDeclaration","scope":12494,"src":"12602:25:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":12467,"name":"int96","nodeType":"ElementaryTypeName","src":"12602:5:35","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"id":12476,"initialValue":{"arguments":[{"arguments":[{"id":12473,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"12665:4:35","typeDescriptions":{"typeIdentifier":"t_contract$_LibControl_$12557","typeString":"library LibControl"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LibControl_$12557","typeString":"library LibControl"}],"id":12472,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12657:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12471,"name":"address","nodeType":"ElementaryTypeName","src":"12657:7:35","typeDescriptions":{}}},"id":12474,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12657:13:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":12469,"name":"iSuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12455,"src":"12630:11:35","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"id":12470,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12642:14:35","memberName":"getNetFlowRate","nodeType":"MemberAccess","referencedDeclaration":3271,"src":"12630:26:35","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_ISuperToken_$6947_$_t_address_$returns$_t_int96_$attached_to$_t_contract$_ISuperToken_$6947_$","typeString":"function (contract ISuperToken,address) view returns (int96)"}},"id":12475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12630:41:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"VariableDeclarationStatement","src":"12602:69:35"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12477,"name":"newBufferAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12461,"src":"12701:15:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_int96","typeString":"int96"},"id":12484,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12482,"name":"contractNetFlowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12468,"src":"12747:19:35","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":12483,"name":"_newFlowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12448,"src":"12769:12:35","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"src":"12747:34:35","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int96","typeString":"int96"}],"id":12481,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12740:6:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"},"typeName":{"id":12480,"name":"uint96","nodeType":"ElementaryTypeName","src":"12740:6:35","typeDescriptions":{}}},"id":12485,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12740:42:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":12479,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12732:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":12478,"name":"uint256","nodeType":"ElementaryTypeName","src":"12732:7:35","typeDescriptions":{}}},"id":12486,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12732:51:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12487,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11680,"src":"12802:15:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$11668_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":12488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12802:17:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":12489,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12820:24:35","memberName":"stBufferDurationInSecond","nodeType":"MemberAccess","referencedDeclaration":11634,"src":"12802:42:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12732:112:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":12491,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12731:114:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12701:144:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12452,"id":12493,"nodeType":"Return","src":"12682:163:35"}]},"id":12495,"implemented":true,"kind":"function","modifiers":[],"name":"_getNewBufferedAppBalance","nameLocation":"12302:25:35","nodeType":"FunctionDefinition","parameters":{"id":12449,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12446,"mutability":"mutable","name":"_superToken","nameLocation":"12345:11:35","nodeType":"VariableDeclaration","scope":12495,"src":"12337:19:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12445,"name":"address","nodeType":"ElementaryTypeName","src":"12337:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12448,"mutability":"mutable","name":"_newFlowRate","nameLocation":"12372:12:35","nodeType":"VariableDeclaration","scope":12495,"src":"12366:18:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":12447,"name":"int96","nodeType":"ElementaryTypeName","src":"12366:5:35","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"12327:63:35"},"returnParameters":{"id":12452,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12451,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12495,"src":"12414:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12450,"name":"uint256","nodeType":"ElementaryTypeName","src":"12414:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12413:9:35"},"scope":12557,"src":"12293:559:35","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":12523,"nodeType":"Block","src":"12981:226:35","statements":[{"assignments":[12505],"declarations":[{"constant":false,"id":12505,"mutability":"mutable","name":"contractBalance","nameLocation":"12999:15:35","nodeType":"VariableDeclaration","scope":12523,"src":"12991:23:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12504,"name":"uint256","nodeType":"ElementaryTypeName","src":"12991:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12515,"initialValue":{"arguments":[{"arguments":[{"id":12512,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"13073:4:35","typeDescriptions":{"typeIdentifier":"t_contract$_LibControl_$12557","typeString":"library LibControl"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LibControl_$12557","typeString":"library LibControl"}],"id":12511,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13065:7:35","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12510,"name":"address","nodeType":"ElementaryTypeName","src":"13065:7:35","typeDescriptions":{}}},"id":12513,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13065:13:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":12507,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12497,"src":"13029:11:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12506,"name":"ISuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6947,"src":"13017:11:35","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISuperToken_$6947_$","typeString":"type(contract ISuperToken)"}},"id":12508,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13017:24:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"id":12509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13042:9:35","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":6613,"src":"13017:34:35","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":12514,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13017:71:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12991:97:35"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12516,"name":"contractBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12505,"src":"13118:15:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"arguments":[{"id":12518,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12497,"src":"13174:11:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12519,"name":"_newFlowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12499,"src":"13187:12:35","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_int96","typeString":"int96"}],"id":12517,"name":"_getNewBufferedAppBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12495,"src":"13148:25:35","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_int96_$returns$_t_uint256_$","typeString":"function (address,int96) view returns (uint256)"}},"id":12520,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13148:52:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13118:82:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":12503,"id":12522,"nodeType":"Return","src":"13099:101:35"}]},"id":12524,"implemented":true,"kind":"function","modifiers":[],"name":"_isNewFlowRateAllowed","nameLocation":"12867:21:35","nodeType":"FunctionDefinition","parameters":{"id":12500,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12497,"mutability":"mutable","name":"_superToken","nameLocation":"12906:11:35","nodeType":"VariableDeclaration","scope":12524,"src":"12898:19:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12496,"name":"address","nodeType":"ElementaryTypeName","src":"12898:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12499,"mutability":"mutable","name":"_newFlowRate","nameLocation":"12933:12:35","nodeType":"VariableDeclaration","scope":12524,"src":"12927:18:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":12498,"name":"int96","nodeType":"ElementaryTypeName","src":"12927:5:35","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"12888:63:35"},"returnParameters":{"id":12503,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12502,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12524,"src":"12975:4:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12501,"name":"bool","nodeType":"ElementaryTypeName","src":"12975:4:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"12974:6:35"},"scope":12557,"src":"12858:349:35","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":12541,"nodeType":"Block","src":"13326:68:35","statements":[{"expression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12533,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11680,"src":"13343:15:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$11668_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":12534,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13343:17:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":12535,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13361:6:35","memberName":"assets","nodeType":"MemberAccess","referencedDeclaration":11663,"src":"13343:24:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":12537,"indexExpression":{"id":12536,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12526,"src":"13368:5:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13343:31:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":12539,"indexExpression":{"id":12538,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12528,"src":"13375:11:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13343:44:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12532,"id":12540,"nodeType":"Return","src":"13336:51:35"}]},"id":12542,"implemented":true,"kind":"function","modifiers":[],"name":"_getAssetUser","nameLocation":"13222:13:35","nodeType":"FunctionDefinition","parameters":{"id":12529,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12526,"mutability":"mutable","name":"_user","nameLocation":"13253:5:35","nodeType":"VariableDeclaration","scope":12542,"src":"13245:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12525,"name":"address","nodeType":"ElementaryTypeName","src":"13245:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12528,"mutability":"mutable","name":"_superToken","nameLocation":"13276:11:35","nodeType":"VariableDeclaration","scope":12542,"src":"13268:19:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12527,"name":"address","nodeType":"ElementaryTypeName","src":"13268:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"13235:58:35"},"returnParameters":{"id":12532,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12531,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12542,"src":"13317:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12530,"name":"uint256","nodeType":"ElementaryTypeName","src":"13317:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13316:9:35"},"scope":12557,"src":"13213:181:35","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":12555,"nodeType":"Block","src":"13491:66:35","statements":[{"expression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12549,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11680,"src":"13508:15:35","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$11668_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":12550,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13508:17:35","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":12551,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13526:11:35","memberName":"totalAssets","nodeType":"MemberAccess","referencedDeclaration":11667,"src":"13508:29:35","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":12553,"indexExpression":{"id":12552,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12544,"src":"13538:11:35","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13508:42:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12548,"id":12554,"nodeType":"Return","src":"13501:49:35"}]},"id":12556,"implemented":true,"kind":"function","modifiers":[],"name":"_getAssetTotal","nameLocation":"13409:14:35","nodeType":"FunctionDefinition","parameters":{"id":12545,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12544,"mutability":"mutable","name":"_superToken","nameLocation":"13441:11:35","nodeType":"VariableDeclaration","scope":12556,"src":"13433:19:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12543,"name":"address","nodeType":"ElementaryTypeName","src":"13433:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"13423:35:35"},"returnParameters":{"id":12548,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12547,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12556,"src":"13482:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12546,"name":"uint256","nodeType":"ElementaryTypeName","src":"13482:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13481:9:35"},"scope":12557,"src":"13400:157:35","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":12558,"src":"702:12899:35","usedErrors":[]}],"src":"36:13635:35"},"id":35},"contracts/libraries/core/LibFlow.sol":{"ast":{"absolutePath":"contracts/libraries/core/LibFlow.sol","exportedSymbols":{"ContractError":[11591],"HasActiveFlow":[12578],"ISuperToken":[6947],"InsufficientFunds":[12570],"InsufficientLifespan1":[12572],"InsufficientLifespan2":[12574],"InsufficientLifespan3":[12576],"InvalidBalance1":[12580],"InvalidBalance2":[12582],"LibControl":[12557],"LibFlow":[13572],"LibSession":[14179],"SuperTokenV1Library":[5077]},"id":13573,"license":"BUSL-1.1","nodeType":"SourceUnit","nodes":[{"id":12559,"literals":["solidity","^","0.8",".9"],"nodeType":"PragmaDirective","src":"36:23:36"},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol","file":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol","id":12561,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13573,"sourceUnit":7600,"src":"61:115:36","symbolAliases":[{"foreign":{"id":12560,"name":"ISuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6947,"src":"69:11:36","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol","file":"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol","id":12563,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13573,"sourceUnit":5078,"src":"177:114:36","symbolAliases":[{"foreign":{"id":12562,"name":"SuperTokenV1Library","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5077,"src":"185:19:36","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/libraries/core/LibControl.sol","file":"./LibControl.sol","id":12566,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13573,"sourceUnit":12558,"src":"293:59:36","symbolAliases":[{"foreign":{"id":12564,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"301:10:36","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":12565,"name":"ContractError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11591,"src":"313:13:36","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/libraries/core/LibSession.sol","file":"./LibSession.sol","id":12568,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13573,"sourceUnit":14180,"src":"353:44:36","symbolAliases":[{"foreign":{"id":12567,"name":"LibSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14179,"src":"361:10:36","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"errorSelector":"356680b7","id":12570,"name":"InsufficientFunds","nameLocation":"439:17:36","nodeType":"ErrorDefinition","parameters":{"id":12569,"nodeType":"ParameterList","parameters":[],"src":"456:2:36"},"src":"433:26:36"},{"errorSelector":"cdd3529e","id":12572,"name":"InsufficientLifespan1","nameLocation":"466:21:36","nodeType":"ErrorDefinition","parameters":{"id":12571,"nodeType":"ParameterList","parameters":[],"src":"487:2:36"},"src":"460:30:36"},{"errorSelector":"6c451f0c","id":12574,"name":"InsufficientLifespan2","nameLocation":"497:21:36","nodeType":"ErrorDefinition","parameters":{"id":12573,"nodeType":"ParameterList","parameters":[],"src":"518:2:36"},"src":"491:30:36"},{"errorSelector":"3661e75b","id":12576,"name":"InsufficientLifespan3","nameLocation":"528:21:36","nodeType":"ErrorDefinition","parameters":{"id":12575,"nodeType":"ParameterList","parameters":[],"src":"549:2:36"},"src":"522:30:36"},{"errorSelector":"d18923ab","id":12578,"name":"HasActiveFlow","nameLocation":"559:13:36","nodeType":"ErrorDefinition","parameters":{"id":12577,"nodeType":"ParameterList","parameters":[],"src":"572:2:36"},"src":"553:22:36"},{"errorSelector":"0a2005fa","id":12580,"name":"InvalidBalance1","nameLocation":"582:15:36","nodeType":"ErrorDefinition","parameters":{"id":12579,"nodeType":"ParameterList","parameters":[],"src":"597:2:36"},"src":"576:24:36"},{"errorSelector":"2fe0888f","id":12582,"name":"InvalidBalance2","nameLocation":"607:15:36","nodeType":"ErrorDefinition","parameters":{"id":12581,"nodeType":"ParameterList","parameters":[],"src":"622:2:36"},"src":"601:24:36"},{"abstract":false,"baseContracts":[],"canonicalName":"LibFlow","contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":13572,"linearizedBaseContracts":[13572],"name":"LibFlow","nameLocation":"635:7:36","nodeType":"ContractDefinition","nodes":[{"global":false,"id":12586,"libraryName":{"id":12583,"name":"SuperTokenV1Library","nameLocations":["655:19:36"],"nodeType":"IdentifierPath","referencedDeclaration":5077,"src":"655:19:36"},"nodeType":"UsingForDirective","src":"649:42:36","typeName":{"id":12585,"nodeType":"UserDefinedTypeName","pathNode":{"id":12584,"name":"ISuperToken","nameLocations":["679:11:36"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"679:11:36"},"referencedDeclaration":6947,"src":"679:11:36","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}},{"constant":true,"id":12591,"mutability":"constant","name":"STORAGE_POSITION_FLOW","nameLocation":"714:21:36","nodeType":"VariableDeclaration","scope":13572,"src":"697:61:36","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":12587,"name":"bytes32","nodeType":"ElementaryTypeName","src":"697:7:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"64732e666c6f77","id":12589,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"748:9:36","typeDescriptions":{"typeIdentifier":"t_stringliteral_2da2adfb54fd91bfb31e0d805792077ddcd5b0427b14a56397e2f3cc190c8830","typeString":"literal_string \"ds.flow\""},"value":"ds.flow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_2da2adfb54fd91bfb31e0d805792077ddcd5b0427b14a56397e2f3cc190c8830","typeString":"literal_string \"ds.flow\""}],"id":12588,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"738:9:36","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":12590,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"738:20:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"canonicalName":"LibFlow.FlowRecord","id":12606,"members":[{"constant":false,"id":12593,"mutability":"mutable","name":"controlNonce","nameLocation":"801:12:36","nodeType":"VariableDeclaration","scope":12606,"src":"793:20:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12592,"name":"uint256","nodeType":"ElementaryTypeName","src":"793:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12595,"mutability":"mutable","name":"receiver","nameLocation":"857:8:36","nodeType":"VariableDeclaration","scope":12606,"src":"849:16:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12594,"name":"address","nodeType":"ElementaryTypeName","src":"849:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12597,"mutability":"mutable","name":"sessionNonce","nameLocation":"883:12:36","nodeType":"VariableDeclaration","scope":12606,"src":"875:20:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12596,"name":"uint256","nodeType":"ElementaryTypeName","src":"875:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12599,"mutability":"mutable","name":"timestampIncrease","nameLocation":"913:17:36","nodeType":"VariableDeclaration","scope":12606,"src":"905:25:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12598,"name":"uint256","nodeType":"ElementaryTypeName","src":"905:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12601,"mutability":"mutable","name":"timestampDecrease","nameLocation":"999:17:36","nodeType":"VariableDeclaration","scope":12606,"src":"991:25:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12600,"name":"uint256","nodeType":"ElementaryTypeName","src":"991:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12603,"mutability":"mutable","name":"taskId","nameLocation":"1097:6:36","nodeType":"VariableDeclaration","scope":12606,"src":"1089:14:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":12602,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1089:7:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":12605,"mutability":"mutable","name":"isBalanceSettled","nameLocation":"1160:16:36","nodeType":"VariableDeclaration","scope":12606,"src":"1155:21:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12604,"name":"bool","nodeType":"ElementaryTypeName","src":"1155:4:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"FlowRecord","nameLocation":"772:10:36","nodeType":"StructDefinition","scope":13572,"src":"765:418:36","visibility":"public"},{"canonicalName":"LibFlow.StorageFlow","id":12632,"members":[{"constant":false,"id":12612,"mutability":"mutable","name":"flowNonce","nameLocation":"1439:9:36","nodeType":"VariableDeclaration","scope":12632,"src":"1391:57:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":12611,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":12607,"name":"address","nodeType":"ElementaryTypeName","src":"1399:7:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1391:47:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":12610,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":12608,"name":"address","nodeType":"ElementaryTypeName","src":"1418:7:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1410:27:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":12609,"name":"uint256","nodeType":"ElementaryTypeName","src":"1429:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"internal"},{"constant":false,"id":12621,"mutability":"mutable","name":"flowRecord","nameLocation":"1574:10:36","nodeType":"VariableDeclaration","scope":12632,"src":"1503:81:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibFlow.FlowRecord)))"},"typeName":{"id":12620,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":12613,"name":"address","nodeType":"ElementaryTypeName","src":"1511:7:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1503:70:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibFlow.FlowRecord)))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":12619,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":12614,"name":"address","nodeType":"ElementaryTypeName","src":"1530:7:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1522:50:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibFlow.FlowRecord))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":12618,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":12615,"name":"uint256","nodeType":"ElementaryTypeName","src":"1549:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1541:30:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$","typeString":"mapping(uint256 => struct LibFlow.FlowRecord)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":12617,"nodeType":"UserDefinedTypeName","pathNode":{"id":12616,"name":"FlowRecord","nameLocations":["1560:10:36"],"nodeType":"IdentifierPath","referencedDeclaration":12606,"src":"1560:10:36"},"referencedDeclaration":12606,"src":"1560:10:36","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$12606_storage_ptr","typeString":"struct LibFlow.FlowRecord"}}}}},"visibility":"internal"},{"constant":false,"id":12627,"mutability":"mutable","name":"deposits","nameLocation":"1704:8:36","nodeType":"VariableDeclaration","scope":12632,"src":"1656:56:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":12626,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":12622,"name":"address","nodeType":"ElementaryTypeName","src":"1664:7:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1656:47:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":12625,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":12623,"name":"address","nodeType":"ElementaryTypeName","src":"1683:7:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1675:27:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":12624,"name":"uint256","nodeType":"ElementaryTypeName","src":"1694:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"internal"},{"constant":false,"id":12631,"mutability":"mutable","name":"totalDeposits","nameLocation":"1794:13:36","nodeType":"VariableDeclaration","scope":12632,"src":"1766:41:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":12630,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":12628,"name":"address","nodeType":"ElementaryTypeName","src":"1774:7:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1766:27:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":12629,"name":"uint256","nodeType":"ElementaryTypeName","src":"1785:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"}],"name":"StorageFlow","nameLocation":"1196:11:36","nodeType":"StructDefinition","scope":13572,"src":"1189:656:36","visibility":"public"},{"body":{"id":12643,"nodeType":"Block","src":"1921:117:36","statements":[{"assignments":[12639],"declarations":[{"constant":false,"id":12639,"mutability":"mutable","name":"position","nameLocation":"1939:8:36","nodeType":"VariableDeclaration","scope":12643,"src":"1931:16:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":12638,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1931:7:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":12641,"initialValue":{"id":12640,"name":"STORAGE_POSITION_FLOW","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12591,"src":"1950:21:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"1931:40:36"},{"AST":{"nodeType":"YulBlock","src":"1990:42:36","statements":[{"nodeType":"YulAssignment","src":"2004:18:36","value":{"name":"position","nodeType":"YulIdentifier","src":"2014:8:36"},"variableNames":[{"name":"s.slot","nodeType":"YulIdentifier","src":"2004:6:36"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":12639,"isOffset":false,"isSlot":false,"src":"2014:8:36","valueSize":1},{"declaration":12636,"isOffset":false,"isSlot":true,"src":"2004:6:36","suffix":"slot","valueSize":1}],"id":12642,"nodeType":"InlineAssembly","src":"1981:51:36"}]},"id":12644,"implemented":true,"kind":"function","modifiers":[],"name":"_storageFlow","nameLocation":"1860:12:36","nodeType":"FunctionDefinition","parameters":{"id":12633,"nodeType":"ParameterList","parameters":[],"src":"1872:2:36"},"returnParameters":{"id":12637,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12636,"mutability":"mutable","name":"s","nameLocation":"1918:1:36","nodeType":"VariableDeclaration","scope":12644,"src":"1898:21:36","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$12632_storage_ptr","typeString":"struct LibFlow.StorageFlow"},"typeName":{"id":12635,"nodeType":"UserDefinedTypeName","pathNode":{"id":12634,"name":"StorageFlow","nameLocations":["1898:11:36"],"nodeType":"IdentifierPath","referencedDeclaration":12632,"src":"1898:11:36"},"referencedDeclaration":12632,"src":"1898:11:36","typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$12632_storage_ptr","typeString":"struct LibFlow.StorageFlow"}},"visibility":"internal"}],"src":"1897:23:36"},"scope":13572,"src":"1851:187:36","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12683,"nodeType":"Block","src":"2203:268:36","statements":[{"expression":{"arguments":[{"expression":{"id":12655,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2264:3:36","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2268:6:36","memberName":"sender","nodeType":"MemberAccess","src":"2264:10:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":12659,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2296:4:36","typeDescriptions":{"typeIdentifier":"t_contract$_LibFlow_$13572","typeString":"library LibFlow"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LibFlow_$13572","typeString":"library LibFlow"}],"id":12658,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2288:7:36","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12657,"name":"address","nodeType":"ElementaryTypeName","src":"2288:7:36","typeDescriptions":{}}},"id":12660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2288:13:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12661,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12648,"src":"2315:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":12652,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12646,"src":"2225:11:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12651,"name":"ISuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6947,"src":"2213:11:36","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISuperToken_$6947_$","typeString":"type(contract ISuperToken)"}},"id":12653,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2213:24:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"id":12654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2238:12:36","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":6663,"src":"2213:37:36","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":12662,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2213:119:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12663,"nodeType":"ExpressionStatement","src":"2213:119:36"},{"expression":{"id":12673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12664,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12644,"src":"2343:12:36","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$12632_storage_ptr_$","typeString":"function () pure returns (struct LibFlow.StorageFlow storage pointer)"}},"id":12665,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2343:14:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$12632_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":12666,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2358:8:36","memberName":"deposits","nodeType":"MemberAccess","referencedDeclaration":12627,"src":"2343:23:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":12669,"indexExpression":{"expression":{"id":12667,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2367:3:36","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12668,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2371:6:36","memberName":"sender","nodeType":"MemberAccess","src":"2367:10:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2343:35:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":12671,"indexExpression":{"id":12670,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12646,"src":"2379:11:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2343:48:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":12672,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12648,"src":"2395:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2343:59:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12674,"nodeType":"ExpressionStatement","src":"2343:59:36"},{"expression":{"id":12681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12675,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12644,"src":"2412:12:36","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$12632_storage_ptr_$","typeString":"function () pure returns (struct LibFlow.StorageFlow storage pointer)"}},"id":12676,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2412:14:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$12632_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":12677,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2427:13:36","memberName":"totalDeposits","nodeType":"MemberAccess","referencedDeclaration":12631,"src":"2412:28:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":12679,"indexExpression":{"id":12678,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12646,"src":"2441:11:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2412:41:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":12680,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12648,"src":"2457:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2412:52:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12682,"nodeType":"ExpressionStatement","src":"2412:52:36"}]},"id":12684,"implemented":true,"kind":"function","modifiers":[],"name":"_depositSuperToken","nameLocation":"2137:18:36","nodeType":"FunctionDefinition","parameters":{"id":12649,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12646,"mutability":"mutable","name":"_superToken","nameLocation":"2164:11:36","nodeType":"VariableDeclaration","scope":12684,"src":"2156:19:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12645,"name":"address","nodeType":"ElementaryTypeName","src":"2156:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12648,"mutability":"mutable","name":"_amount","nameLocation":"2185:7:36","nodeType":"VariableDeclaration","scope":12684,"src":"2177:15:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12647,"name":"uint256","nodeType":"ElementaryTypeName","src":"2177:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2155:38:36"},"returnParameters":{"id":12650,"nodeType":"ParameterList","parameters":[],"src":"2203:0:36"},"scope":13572,"src":"2128:343:36","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":12747,"nodeType":"Block","src":"2575:597:36","statements":[{"expression":{"arguments":[{"expression":{"id":12692,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2690:3:36","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12693,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2694:6:36","memberName":"sender","nodeType":"MemberAccess","src":"2690:10:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12694,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12686,"src":"2702:11:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":12691,"name":"_setRemainingBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12846,"src":"2669:20:36","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":12695,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2669:45:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12696,"nodeType":"ExpressionStatement","src":"2669:45:36"},{"assignments":[12698],"declarations":[{"constant":false,"id":12698,"mutability":"mutable","name":"amountRemaining","nameLocation":"2747:15:36","nodeType":"VariableDeclaration","scope":12747,"src":"2739:23:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12697,"name":"uint256","nodeType":"ElementaryTypeName","src":"2739:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12707,"initialValue":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12699,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12644,"src":"2765:12:36","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$12632_storage_ptr_$","typeString":"function () pure returns (struct LibFlow.StorageFlow storage pointer)"}},"id":12700,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2765:14:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$12632_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":12701,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2780:8:36","memberName":"deposits","nodeType":"MemberAccess","referencedDeclaration":12627,"src":"2765:23:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":12704,"indexExpression":{"expression":{"id":12702,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2789:3:36","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12703,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2793:6:36","memberName":"sender","nodeType":"MemberAccess","src":"2789:10:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2765:35:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":12706,"indexExpression":{"id":12705,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12686,"src":"2814:11:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2765:70:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2739:96:36"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12710,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12708,"name":"amountRemaining","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12698,"src":"2850:15:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":12709,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12688,"src":"2868:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2850:25:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12714,"nodeType":"IfStatement","src":"2846:57:36","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":12711,"name":"InsufficientFunds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12570,"src":"2884:17:36","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":12712,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2884:19:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12713,"nodeType":"RevertStatement","src":"2877:26:36"}},{"expression":{"id":12724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12715,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12644,"src":"2914:12:36","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$12632_storage_ptr_$","typeString":"function () pure returns (struct LibFlow.StorageFlow storage pointer)"}},"id":12716,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2914:14:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$12632_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":12717,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2929:8:36","memberName":"deposits","nodeType":"MemberAccess","referencedDeclaration":12627,"src":"2914:23:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":12720,"indexExpression":{"expression":{"id":12718,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2938:3:36","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2942:6:36","memberName":"sender","nodeType":"MemberAccess","src":"2938:10:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2914:35:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":12722,"indexExpression":{"id":12721,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12686,"src":"2950:11:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2914:48:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":12723,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12688,"src":"2966:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2914:59:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12725,"nodeType":"ExpressionStatement","src":"2914:59:36"},{"expression":{"id":12732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12726,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12644,"src":"2983:12:36","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$12632_storage_ptr_$","typeString":"function () pure returns (struct LibFlow.StorageFlow storage pointer)"}},"id":12727,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2983:14:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$12632_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":12728,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2998:13:36","memberName":"totalDeposits","nodeType":"MemberAccess","referencedDeclaration":12631,"src":"2983:28:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":12730,"indexExpression":{"id":12729,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12686,"src":"3012:11:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2983:41:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":12731,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12688,"src":"3028:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2983:52:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12733,"nodeType":"ExpressionStatement","src":"2983:52:36"},{"expression":{"arguments":[{"arguments":[{"id":12740,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3105:4:36","typeDescriptions":{"typeIdentifier":"t_contract$_LibFlow_$13572","typeString":"library LibFlow"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LibFlow_$13572","typeString":"library LibFlow"}],"id":12739,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3097:7:36","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12738,"name":"address","nodeType":"ElementaryTypeName","src":"3097:7:36","typeDescriptions":{}}},"id":12741,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3097:13:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":12742,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3124:3:36","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12743,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3128:6:36","memberName":"sender","nodeType":"MemberAccess","src":"3124:10:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12744,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12688,"src":"3148:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":12735,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12686,"src":"3058:11:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12734,"name":"ISuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6947,"src":"3046:11:36","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISuperToken_$6947_$","typeString":"type(contract ISuperToken)"}},"id":12736,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3046:24:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"id":12737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3071:12:36","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":6663,"src":"3046:37:36","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":12745,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3046:119:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12746,"nodeType":"ExpressionStatement","src":"3046:119:36"}]},"id":12748,"implemented":true,"kind":"function","modifiers":[],"name":"_withdrawSuperToken","nameLocation":"2486:19:36","nodeType":"FunctionDefinition","parameters":{"id":12689,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12686,"mutability":"mutable","name":"_superToken","nameLocation":"2523:11:36","nodeType":"VariableDeclaration","scope":12748,"src":"2515:19:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12685,"name":"address","nodeType":"ElementaryTypeName","src":"2515:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12688,"mutability":"mutable","name":"_amount","nameLocation":"2552:7:36","nodeType":"VariableDeclaration","scope":12748,"src":"2544:15:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12687,"name":"uint256","nodeType":"ElementaryTypeName","src":"2544:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2505:60:36"},"returnParameters":{"id":12690,"nodeType":"ParameterList","parameters":[],"src":"2575:0:36"},"scope":13572,"src":"2477:695:36","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":12762,"nodeType":"Block","src":"3285:84:36","statements":[{"condition":{"arguments":[{"expression":{"id":12754,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3314:3:36","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3318:6:36","memberName":"sender","nodeType":"MemberAccess","src":"3314:10:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12756,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12750,"src":"3326:11:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":12753,"name":"_hasActiveFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13110,"src":"3299:14:36","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":12757,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3299:39:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12761,"nodeType":"IfStatement","src":"3295:67:36","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":12758,"name":"HasActiveFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12578,"src":"3347:13:36","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":12759,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3347:15:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12760,"nodeType":"RevertStatement","src":"3340:22:36"}}]},"id":12763,"implemented":true,"kind":"function","modifiers":[],"name":"_requireNoActiveFlow","nameLocation":"3229:20:36","nodeType":"FunctionDefinition","parameters":{"id":12751,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12750,"mutability":"mutable","name":"_superToken","nameLocation":"3258:11:36","nodeType":"VariableDeclaration","scope":12763,"src":"3250:19:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12749,"name":"address","nodeType":"ElementaryTypeName","src":"3250:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3249:21:36"},"returnParameters":{"id":12752,"nodeType":"ParameterList","parameters":[],"src":"3285:0:36"},"scope":13572,"src":"3220:149:36","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":12845,"nodeType":"Block","src":"3492:878:36","statements":[{"assignments":[12771],"declarations":[{"constant":false,"id":12771,"mutability":"mutable","name":"amountFlowed","nameLocation":"3510:12:36","nodeType":"VariableDeclaration","scope":12845,"src":"3502:20:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12770,"name":"uint256","nodeType":"ElementaryTypeName","src":"3502:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12776,"initialValue":{"arguments":[{"id":12773,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12765,"src":"3542:5:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12774,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12767,"src":"3549:11:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":12772,"name":"_getAmountFlowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13056,"src":"3525:16:36","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":12775,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3525:36:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3502:59:36"},{"expression":{"id":12785,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12777,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12644,"src":"3572:12:36","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$12632_storage_ptr_$","typeString":"function () pure returns (struct LibFlow.StorageFlow storage pointer)"}},"id":12778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3572:14:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$12632_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":12779,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3587:8:36","memberName":"deposits","nodeType":"MemberAccess","referencedDeclaration":12627,"src":"3572:23:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":12781,"indexExpression":{"id":12780,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12765,"src":"3596:5:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3572:30:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":12783,"indexExpression":{"id":12782,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12767,"src":"3603:11:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3572:43:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":12784,"name":"amountFlowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12771,"src":"3619:12:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3572:59:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12786,"nodeType":"ExpressionStatement","src":"3572:59:36"},{"expression":{"id":12793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12787,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12644,"src":"3641:12:36","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$12632_storage_ptr_$","typeString":"function () pure returns (struct LibFlow.StorageFlow storage pointer)"}},"id":12788,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3641:14:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$12632_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":12789,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3656:13:36","memberName":"totalDeposits","nodeType":"MemberAccess","referencedDeclaration":12631,"src":"3641:28:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":12791,"indexExpression":{"id":12790,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12767,"src":"3670:11:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3641:41:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":12792,"name":"amountFlowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12771,"src":"3686:12:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3641:57:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12794,"nodeType":"ExpressionStatement","src":"3641:57:36"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12803,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12795,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12644,"src":"3713:12:36","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$12632_storage_ptr_$","typeString":"function () pure returns (struct LibFlow.StorageFlow storage pointer)"}},"id":12796,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3713:14:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$12632_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":12797,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3728:8:36","memberName":"deposits","nodeType":"MemberAccess","referencedDeclaration":12627,"src":"3713:23:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":12799,"indexExpression":{"id":12798,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12765,"src":"3737:5:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3713:30:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":12801,"indexExpression":{"id":12800,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12767,"src":"3744:11:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3713:43:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":12802,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3759:1:36","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3713:47:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12807,"nodeType":"IfStatement","src":"3709:89:36","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":12804,"name":"InvalidBalance1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12580,"src":"3781:15:36","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":12805,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3781:17:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12806,"nodeType":"RevertStatement","src":"3774:24:36"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12814,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12808,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12644,"src":"3836:12:36","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$12632_storage_ptr_$","typeString":"function () pure returns (struct LibFlow.StorageFlow storage pointer)"}},"id":12809,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3836:14:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$12632_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":12810,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3851:13:36","memberName":"totalDeposits","nodeType":"MemberAccess","referencedDeclaration":12631,"src":"3836:28:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":12812,"indexExpression":{"id":12811,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12767,"src":"3865:11:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3836:41:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":12813,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3880:1:36","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3836:45:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12818,"nodeType":"IfStatement","src":"3832:87:36","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":12815,"name":"InvalidBalance2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12582,"src":"3902:15:36","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":12816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3902:17:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12817,"nodeType":"RevertStatement","src":"3895:24:36"}},{"assignments":[12820],"declarations":[{"constant":false,"id":12820,"mutability":"mutable","name":"newFlowNonce","nameLocation":"3962:12:36","nodeType":"VariableDeclaration","scope":12845,"src":"3954:20:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12819,"name":"uint256","nodeType":"ElementaryTypeName","src":"3954:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12825,"initialValue":{"arguments":[{"id":12822,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12765,"src":"3990:5:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12823,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12767,"src":"3997:11:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":12821,"name":"_getNewNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13258,"src":"3977:12:36","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":12824,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3977:32:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3954:55:36"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12826,"name":"newFlowNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12820,"src":"4023:12:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":12827,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4038:1:36","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4023:16:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12844,"nodeType":"IfStatement","src":"4019:151:36","trueBody":{"expression":{"id":12842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12829,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12644,"src":"4053:12:36","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$12632_storage_ptr_$","typeString":"function () pure returns (struct LibFlow.StorageFlow storage pointer)"}},"id":12830,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4053:14:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$12632_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":12831,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4081:10:36","memberName":"flowRecord","nodeType":"MemberAccess","referencedDeclaration":12621,"src":"4053:38:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref)))"}},"id":12833,"indexExpression":{"id":12832,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12765,"src":"4092:5:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4053:45:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref))"}},"id":12835,"indexExpression":{"id":12834,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12767,"src":"4099:11:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4053:58:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$","typeString":"mapping(uint256 => struct LibFlow.FlowRecord storage ref)"}},"id":12839,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12838,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12836,"name":"newFlowNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12820,"src":"4112:12:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":12837,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4127:1:36","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4112:16:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4053:76:36","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$12606_storage","typeString":"struct LibFlow.FlowRecord storage ref"}},"id":12840,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4147:16:36","memberName":"isBalanceSettled","nodeType":"MemberAccess","referencedDeclaration":12605,"src":"4053:110:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":12841,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4166:4:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"4053:117:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12843,"nodeType":"ExpressionStatement","src":"4053:117:36"}}]},"id":12846,"implemented":true,"kind":"function","modifiers":[],"name":"_setRemainingBalance","nameLocation":"3426:20:36","nodeType":"FunctionDefinition","parameters":{"id":12768,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12765,"mutability":"mutable","name":"_user","nameLocation":"3455:5:36","nodeType":"VariableDeclaration","scope":12846,"src":"3447:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12764,"name":"address","nodeType":"ElementaryTypeName","src":"3447:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12767,"mutability":"mutable","name":"_superToken","nameLocation":"3470:11:36","nodeType":"VariableDeclaration","scope":12846,"src":"3462:19:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12766,"name":"address","nodeType":"ElementaryTypeName","src":"3462:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3446:36:36"},"returnParameters":{"id":12769,"nodeType":"ParameterList","parameters":[],"src":"3492:0:36"},"scope":13572,"src":"3417:953:36","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":12909,"nodeType":"Block","src":"4578:532:36","statements":[{"assignments":[12858],"declarations":[{"constant":false,"id":12858,"mutability":"mutable","name":"unsafeLifespan","nameLocation":"4596:14:36","nodeType":"VariableDeclaration","scope":12909,"src":"4588:22:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12857,"name":"uint256","nodeType":"ElementaryTypeName","src":"4588:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12874,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12873,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12859,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12644,"src":"4613:12:36","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$12632_storage_ptr_$","typeString":"function () pure returns (struct LibFlow.StorageFlow storage pointer)"}},"id":12860,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4613:14:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$12632_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":12861,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4628:8:36","memberName":"deposits","nodeType":"MemberAccess","referencedDeclaration":12627,"src":"4613:23:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":12863,"indexExpression":{"id":12862,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12848,"src":"4637:5:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4613:30:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":12865,"indexExpression":{"id":12864,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12850,"src":"4644:11:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4613:43:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[{"arguments":[{"id":12870,"name":"_flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12852,"src":"4686:9:36","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int96","typeString":"int96"}],"id":12869,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4679:6:36","typeDescriptions":{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"},"typeName":{"id":12868,"name":"uint96","nodeType":"ElementaryTypeName","src":"4679:6:36","typeDescriptions":{}}},"id":12871,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4679:17:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":12867,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4671:7:36","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":12866,"name":"uint256","nodeType":"ElementaryTypeName","src":"4671:7:36","typeDescriptions":{}}},"id":12872,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4671:26:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4613:84:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4588:109:36"},{"assignments":[12879],"declarations":[{"constant":false,"id":12879,"mutability":"mutable","name":"sControl","nameLocation":"4742:8:36","nodeType":"VariableDeclaration","scope":12909,"src":"4708:42:36","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl"},"typeName":{"id":12878,"nodeType":"UserDefinedTypeName","pathNode":{"id":12877,"name":"LibControl.StorageControl","nameLocations":["4708:10:36","4719:14:36"],"nodeType":"IdentifierPath","referencedDeclaration":11668,"src":"4708:25:36"},"referencedDeclaration":11668,"src":"4708:25:36","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl"}},"visibility":"internal"}],"id":12883,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":12880,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"4753:10:36","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$12557_$","typeString":"type(library LibControl)"}},"id":12881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4777:15:36","memberName":"_storageControl","nodeType":"MemberAccess","referencedDeclaration":11680,"src":"4753:39:36","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$11668_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":12882,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4753:41:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4708:86:36"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12884,"name":"unsafeLifespan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12858,"src":"4809:14:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":12885,"name":"sControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12879,"src":"4826:8:36","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":12886,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4835:18:36","memberName":"minimumEndDuration","nodeType":"MemberAccess","referencedDeclaration":11630,"src":"4826:27:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4809:44:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12891,"nodeType":"IfStatement","src":"4805:92:36","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":12888,"name":"InsufficientLifespan1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12572,"src":"4874:21:36","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":12889,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4874:23:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12890,"nodeType":"RevertStatement","src":"4867:30:36"}},{"assignments":[12893],"declarations":[{"constant":false,"id":12893,"mutability":"mutable","name":"safeLifespan","nameLocation":"4916:12:36","nodeType":"VariableDeclaration","scope":12909,"src":"4908:20:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12892,"name":"uint256","nodeType":"ElementaryTypeName","src":"4908:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12898,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12897,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12894,"name":"unsafeLifespan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12858,"src":"4931:14:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":12895,"name":"sControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12879,"src":"4948:8:36","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":12896,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4957:18:36","memberName":"minimumEndDuration","nodeType":"MemberAccess","referencedDeclaration":11630,"src":"4948:27:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4931:44:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4908:67:36"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12899,"name":"safeLifespan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12893,"src":"4990:12:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":12900,"name":"sControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12879,"src":"5005:8:36","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":12901,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5014:15:36","memberName":"minimumLifespan","nodeType":"MemberAccess","referencedDeclaration":11632,"src":"5005:24:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4990:39:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12906,"nodeType":"IfStatement","src":"4986:87:36","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":12903,"name":"InsufficientLifespan2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12574,"src":"5050:21:36","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":12904,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5050:23:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12905,"nodeType":"RevertStatement","src":"5043:30:36"}},{"expression":{"id":12907,"name":"safeLifespan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12893,"src":"5091:12:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12856,"id":12908,"nodeType":"Return","src":"5084:19:36"}]},"id":12910,"implemented":true,"kind":"function","modifiers":[],"name":"_getValidSafeLifespan","nameLocation":"4441:21:36","nodeType":"FunctionDefinition","parameters":{"id":12853,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12848,"mutability":"mutable","name":"_user","nameLocation":"4480:5:36","nodeType":"VariableDeclaration","scope":12910,"src":"4472:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12847,"name":"address","nodeType":"ElementaryTypeName","src":"4472:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12850,"mutability":"mutable","name":"_superToken","nameLocation":"4503:11:36","nodeType":"VariableDeclaration","scope":12910,"src":"4495:19:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12849,"name":"address","nodeType":"ElementaryTypeName","src":"4495:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12852,"mutability":"mutable","name":"_flowRate","nameLocation":"4530:9:36","nodeType":"VariableDeclaration","scope":12910,"src":"4524:15:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":12851,"name":"int96","nodeType":"ElementaryTypeName","src":"4524:5:36","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"4462:83:36"},"returnParameters":{"id":12856,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12855,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12910,"src":"4569:7:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12854,"name":"uint256","nodeType":"ElementaryTypeName","src":"4569:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4568:9:36"},"scope":13572,"src":"4432:678:36","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":12959,"nodeType":"Block","src":"5404:429:36","statements":[{"assignments":[12925],"declarations":[{"constant":false,"id":12925,"mutability":"mutable","name":"safeLifespan","nameLocation":"5422:12:36","nodeType":"VariableDeclaration","scope":12959,"src":"5414:20:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12924,"name":"uint256","nodeType":"ElementaryTypeName","src":"5414:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12931,"initialValue":{"arguments":[{"id":12927,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12913,"src":"5472:5:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12928,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12915,"src":"5491:11:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12929,"name":"_flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12919,"src":"5516:9:36","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_int96","typeString":"int96"}],"id":12926,"name":"_getValidSafeLifespan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12910,"src":"5437:21:36","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_int96_$returns$_t_uint256_$","typeString":"function (address,address,int96) view returns (uint256)"}},"id":12930,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5437:98:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5414:121:36"},{"assignments":[12936],"declarations":[{"constant":false,"id":12936,"mutability":"mutable","name":"sControl","nameLocation":"5580:8:36","nodeType":"VariableDeclaration","scope":12959,"src":"5546:42:36","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl"},"typeName":{"id":12935,"nodeType":"UserDefinedTypeName","pathNode":{"id":12934,"name":"LibControl.StorageControl","nameLocations":["5546:10:36","5557:14:36"],"nodeType":"IdentifierPath","referencedDeclaration":11668,"src":"5546:25:36"},"referencedDeclaration":11668,"src":"5546:25:36","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl"}},"visibility":"internal"}],"id":12940,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":12937,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"5591:10:36","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$12557_$","typeString":"type(library LibControl)"}},"id":12938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5615:15:36","memberName":"_storageControl","nodeType":"MemberAccess","referencedDeclaration":11680,"src":"5591:39:36","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$11668_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":12939,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5591:41:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"5546:86:36"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12941,"name":"_lifespan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12917,"src":"5646:9:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":12942,"name":"sControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12936,"src":"5658:8:36","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":12943,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5667:18:36","memberName":"minimumEndDuration","nodeType":"MemberAccess","referencedDeclaration":11630,"src":"5658:27:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"id":12944,"name":"sControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12936,"src":"5688:8:36","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":12945,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5697:15:36","memberName":"minimumLifespan","nodeType":"MemberAccess","referencedDeclaration":11632,"src":"5688:24:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5658:54:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5646:66:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12951,"nodeType":"IfStatement","src":"5642:114:36","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":12948,"name":"InsufficientLifespan3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12576,"src":"5733:21:36","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":12949,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5733:23:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12950,"nodeType":"RevertStatement","src":"5726:30:36"}},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12952,"name":"_lifespan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12917,"src":"5774:9:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":12953,"name":"safeLifespan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12925,"src":"5787:12:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5774:25:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":12956,"name":"_lifespan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12917,"src":"5817:9:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12957,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"5774:52:36","trueExpression":{"id":12955,"name":"safeLifespan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12925,"src":"5802:12:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12923,"id":12958,"nodeType":"Return","src":"5767:59:36"}]},"documentation":{"id":12911,"nodeType":"StructuredDocumentation","src":"5116:110:36","text":" flowRate --> 1 sec\n maximumFlowAmount --> maximumFlowAmount/flowRate [in sec]"},"id":12960,"implemented":true,"kind":"function","modifiers":[],"name":"_getScheduledLifespan","nameLocation":"5240:21:36","nodeType":"FunctionDefinition","parameters":{"id":12920,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12913,"mutability":"mutable","name":"_user","nameLocation":"5279:5:36","nodeType":"VariableDeclaration","scope":12960,"src":"5271:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12912,"name":"address","nodeType":"ElementaryTypeName","src":"5271:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12915,"mutability":"mutable","name":"_superToken","nameLocation":"5302:11:36","nodeType":"VariableDeclaration","scope":12960,"src":"5294:19:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12914,"name":"address","nodeType":"ElementaryTypeName","src":"5294:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12917,"mutability":"mutable","name":"_lifespan","nameLocation":"5331:9:36","nodeType":"VariableDeclaration","scope":12960,"src":"5323:17:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12916,"name":"uint256","nodeType":"ElementaryTypeName","src":"5323:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12919,"mutability":"mutable","name":"_flowRate","nameLocation":"5356:9:36","nodeType":"VariableDeclaration","scope":12960,"src":"5350:15:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":12918,"name":"int96","nodeType":"ElementaryTypeName","src":"5350:5:36","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"5261:110:36"},"returnParameters":{"id":12923,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12922,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12960,"src":"5395:7:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12921,"name":"uint256","nodeType":"ElementaryTypeName","src":"5395:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5394:9:36"},"scope":13572,"src":"5231:602:36","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":13055,"nodeType":"Block","src":"5955:1035:36","statements":[{"assignments":[12970],"declarations":[{"constant":false,"id":12970,"mutability":"mutable","name":"amountFlowed","nameLocation":"5973:12:36","nodeType":"VariableDeclaration","scope":13055,"src":"5965:20:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12969,"name":"uint256","nodeType":"ElementaryTypeName","src":"5965:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12971,"nodeType":"VariableDeclarationStatement","src":"5965:20:36"},{"assignments":[12973],"declarations":[{"constant":false,"id":12973,"mutability":"mutable","name":"currentNonce","nameLocation":"6003:12:36","nodeType":"VariableDeclaration","scope":13055,"src":"5995:20:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12972,"name":"uint256","nodeType":"ElementaryTypeName","src":"5995:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12978,"initialValue":{"arguments":[{"id":12975,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12962,"src":"6035:5:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12976,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12964,"src":"6042:11:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":12974,"name":"_getCurrentNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13287,"src":"6018:16:36","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":12977,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6018:36:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5995:59:36"},{"assignments":[12980,12982,12984,12986,null,12988],"declarations":[{"constant":false,"id":12980,"mutability":"mutable","name":"receiver","nameLocation":"6086:8:36","nodeType":"VariableDeclaration","scope":13055,"src":"6078:16:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12979,"name":"address","nodeType":"ElementaryTypeName","src":"6078:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12982,"mutability":"mutable","name":"sessionNonce","nameLocation":"6116:12:36","nodeType":"VariableDeclaration","scope":13055,"src":"6108:20:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12981,"name":"uint256","nodeType":"ElementaryTypeName","src":"6108:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12984,"mutability":"mutable","name":"timestampIncrease","nameLocation":"6150:17:36","nodeType":"VariableDeclaration","scope":13055,"src":"6142:25:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12983,"name":"uint256","nodeType":"ElementaryTypeName","src":"6142:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12986,"mutability":"mutable","name":"timestampDecrease","nameLocation":"6189:17:36","nodeType":"VariableDeclaration","scope":13055,"src":"6181:25:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12985,"name":"uint256","nodeType":"ElementaryTypeName","src":"6181:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},null,{"constant":false,"id":12988,"mutability":"mutable","name":"isBalanceSettled","nameLocation":"6239:16:36","nodeType":"VariableDeclaration","scope":13055,"src":"6234:21:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12987,"name":"bool","nodeType":"ElementaryTypeName","src":"6234:4:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":12994,"initialValue":{"arguments":[{"id":12990,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12962,"src":"6281:5:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12991,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12964,"src":"6288:11:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12992,"name":"currentNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12973,"src":"6301:12:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12989,"name":"_getFlowData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13371,"src":"6268:12:36","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes32_$_t_bool_$","typeString":"function (address,address,uint256) view returns (address,uint256,uint256,uint256,bytes32,bool)"}},"id":12993,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6268:46:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes32_$_t_bool_$","typeString":"tuple(address,uint256,uint256,uint256,bytes32,bool)"}},"nodeType":"VariableDeclarationStatement","src":"6064:250:36"},{"assignments":[null,12996,null,12998],"declarations":[null,{"constant":false,"id":12996,"mutability":"mutable","name":"flowRate","nameLocation":"6334:8:36","nodeType":"VariableDeclaration","scope":13055,"src":"6327:15:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":12995,"name":"uint96","nodeType":"ElementaryTypeName","src":"6327:6:36","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},null,{"constant":false,"id":12998,"mutability":"mutable","name":"timestampStop","nameLocation":"6354:13:36","nodeType":"VariableDeclaration","scope":13055,"src":"6346:21:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12997,"name":"uint256","nodeType":"ElementaryTypeName","src":"6346:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13005,"initialValue":{"arguments":[{"id":13001,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12980,"src":"6411:8:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13002,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12964,"src":"6421:11:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13003,"name":"sessionNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12982,"src":"6434:12:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":12999,"name":"LibSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14179,"src":"6371:10:36","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibSession_$14179_$","typeString":"type(library LibSession)"}},"id":13000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6395:15:36","memberName":"_getSessionData","nodeType":"MemberAccess","referencedDeclaration":14070,"src":"6371:39:36","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_int96_$_t_uint96_$_t_uint256_$_t_uint256_$","typeString":"function (address,address,uint256) view returns (int96,uint96,uint256,uint256)"}},"id":13004,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6371:76:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int96_$_t_uint96_$_t_uint256_$_t_uint256_$","typeString":"tuple(int96,uint96,uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"6324:123:36"},{"condition":{"id":13006,"name":"isBalanceSettled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12988,"src":"6462:16:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":13051,"nodeType":"Block","src":"6527:427:36","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13012,"name":"timestampDecrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12986,"src":"6545:17:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":13013,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6566:1:36","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6545:22:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13028,"name":"timestampStop","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12998,"src":"6726:13:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":13029,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6743:1:36","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6726:18:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":13048,"nodeType":"Block","src":"6895:49:36","statements":[{"expression":{"id":13046,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13044,"name":"amountFlowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12970,"src":"6913:12:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":13045,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6928:1:36","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6913:16:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13047,"nodeType":"ExpressionStatement","src":"6913:16:36"}]},"id":13049,"nodeType":"IfStatement","src":"6722:222:36","trueBody":{"id":13043,"nodeType":"Block","src":"6746:143:36","statements":[{"expression":{"id":13041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13031,"name":"amountFlowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12970,"src":"6764:12:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13040,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":13034,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12996,"src":"6807:8:36","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":13033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6799:7:36","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":13032,"name":"uint256","nodeType":"ElementaryTypeName","src":"6799:7:36","typeDescriptions":{}}},"id":13035,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6799:17:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13038,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13036,"name":"timestampStop","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12998,"src":"6840:13:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":13037,"name":"timestampIncrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12984,"src":"6856:17:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6840:33:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":13039,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6839:35:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6799:75:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6764:110:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13042,"nodeType":"ExpressionStatement","src":"6764:110:36"}]}},"id":13050,"nodeType":"IfStatement","src":"6541:403:36","trueBody":{"id":13027,"nodeType":"Block","src":"6569:147:36","statements":[{"expression":{"id":13025,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13015,"name":"amountFlowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12970,"src":"6587:12:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":13018,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12996,"src":"6630:8:36","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":13017,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6622:7:36","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":13016,"name":"uint256","nodeType":"ElementaryTypeName","src":"6622:7:36","typeDescriptions":{}}},"id":13019,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6622:17:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13020,"name":"timestampDecrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12986,"src":"6663:17:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":13021,"name":"timestampIncrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12984,"src":"6683:17:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6663:37:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":13023,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6662:39:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6622:79:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6587:114:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13026,"nodeType":"ExpressionStatement","src":"6587:114:36"}]}}]},"id":13052,"nodeType":"IfStatement","src":"6458:496:36","trueBody":{"id":13011,"nodeType":"Block","src":"6480:41:36","statements":[{"expression":{"id":13009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13007,"name":"amountFlowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12970,"src":"6494:12:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":13008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6509:1:36","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6494:16:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13010,"nodeType":"ExpressionStatement","src":"6494:16:36"}]}},{"expression":{"id":13053,"name":"amountFlowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12970,"src":"6971:12:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12968,"id":13054,"nodeType":"Return","src":"6964:19:36"}]},"id":13056,"implemented":true,"kind":"function","modifiers":[],"name":"_getAmountFlowed","nameLocation":"5848:16:36","nodeType":"FunctionDefinition","parameters":{"id":12965,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12962,"mutability":"mutable","name":"_user","nameLocation":"5882:5:36","nodeType":"VariableDeclaration","scope":13056,"src":"5874:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12961,"name":"address","nodeType":"ElementaryTypeName","src":"5874:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12964,"mutability":"mutable","name":"_superToken","nameLocation":"5905:11:36","nodeType":"VariableDeclaration","scope":13056,"src":"5897:19:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12963,"name":"address","nodeType":"ElementaryTypeName","src":"5897:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5864:58:36"},"returnParameters":{"id":12968,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12967,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13056,"src":"5946:7:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12966,"name":"uint256","nodeType":"ElementaryTypeName","src":"5946:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5945:9:36"},"scope":13572,"src":"5839:1151:36","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":13109,"nodeType":"Block","src":"7107:532:36","statements":[{"assignments":[13066],"declarations":[{"constant":false,"id":13066,"mutability":"mutable","name":"newFlowNonce","nameLocation":"7125:12:36","nodeType":"VariableDeclaration","scope":13109,"src":"7117:20:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13065,"name":"uint256","nodeType":"ElementaryTypeName","src":"7117:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13071,"initialValue":{"arguments":[{"id":13068,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13058,"src":"7153:5:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13069,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13060,"src":"7160:11:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":13067,"name":"_getNewNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13258,"src":"7140:12:36","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":13070,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7140:32:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7117:55:36"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13072,"name":"newFlowNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13066,"src":"7186:12:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":13073,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7201:1:36","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7186:16:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13106,"nodeType":"IfStatement","src":"7182:429:36","trueBody":{"id":13105,"nodeType":"Block","src":"7204:407:36","statements":[{"assignments":[null,null,null,13076],"declarations":[null,null,null,{"constant":false,"id":13076,"mutability":"mutable","name":"timestampStop","nameLocation":"7233:13:36","nodeType":"VariableDeclaration","scope":13105,"src":"7225:21:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13075,"name":"uint256","nodeType":"ElementaryTypeName","src":"7225:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13085,"initialValue":{"arguments":[{"id":13079,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13058,"src":"7302:5:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13080,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13060,"src":"7325:11:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13081,"name":"newFlowNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13066,"src":"7354:12:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":13082,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7369:1:36","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7354:16:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":13077,"name":"LibSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14179,"src":"7250:10:36","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibSession_$14179_$","typeString":"type(library LibSession)"}},"id":13078,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7261:23:36","memberName":"_getSessionDataFromFlow","nodeType":"MemberAccess","referencedDeclaration":14127,"src":"7250:34:36","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_int96_$_t_uint96_$_t_uint256_$_t_uint256_$","typeString":"function (address,address,uint256) view returns (int96,uint96,uint256,uint256)"}},"id":13084,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7250:134:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int96_$_t_uint96_$_t_uint256_$_t_uint256_$","typeString":"tuple(int96,uint96,uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"7218:166:36"},{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13099,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13086,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12644,"src":"7422:12:36","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$12632_storage_ptr_$","typeString":"function () pure returns (struct LibFlow.StorageFlow storage pointer)"}},"id":13087,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7422:14:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$12632_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":13088,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7454:10:36","memberName":"flowRecord","nodeType":"MemberAccess","referencedDeclaration":12621,"src":"7422:42:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref)))"}},"id":13090,"indexExpression":{"id":13089,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13058,"src":"7465:5:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7422:49:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref))"}},"id":13092,"indexExpression":{"id":13091,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13060,"src":"7472:11:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7422:62:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$","typeString":"mapping(uint256 => struct LibFlow.FlowRecord storage ref)"}},"id":13096,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13095,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13093,"name":"newFlowNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13066,"src":"7485:12:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":13094,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7500:1:36","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7485:16:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7422:80:36","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$12606_storage","typeString":"struct LibFlow.FlowRecord storage ref"}},"id":13097,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7524:17:36","memberName":"timestampDecrease","nodeType":"MemberAccess","referencedDeclaration":12601,"src":"7422:119:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":13098,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7561:1:36","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7422:140:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13100,"name":"timestampStop","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13076,"src":"7582:13:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":13101,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7599:1:36","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7582:18:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7422:178:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":13064,"id":13104,"nodeType":"Return","src":"7399:201:36"}]}},{"expression":{"hexValue":"66616c7365","id":13107,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7627:5:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":13064,"id":13108,"nodeType":"Return","src":"7620:12:36"}]},"id":13110,"implemented":true,"kind":"function","modifiers":[],"name":"_hasActiveFlow","nameLocation":"7005:14:36","nodeType":"FunctionDefinition","parameters":{"id":13061,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13058,"mutability":"mutable","name":"_user","nameLocation":"7037:5:36","nodeType":"VariableDeclaration","scope":13110,"src":"7029:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13057,"name":"address","nodeType":"ElementaryTypeName","src":"7029:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13060,"mutability":"mutable","name":"_superToken","nameLocation":"7060:11:36","nodeType":"VariableDeclaration","scope":13110,"src":"7052:19:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13059,"name":"address","nodeType":"ElementaryTypeName","src":"7052:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7019:58:36"},"returnParameters":{"id":13064,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13063,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13110,"src":"7101:4:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13062,"name":"bool","nodeType":"ElementaryTypeName","src":"7101:4:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7100:6:36"},"scope":13572,"src":"6996:643:36","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":13239,"nodeType":"Block","src":"7766:1451:36","statements":[{"assignments":[13120,13123],"declarations":[{"constant":false,"id":13120,"mutability":"mutable","name":"currentTimestamp","nameLocation":"7785:16:36","nodeType":"VariableDeclaration","scope":13239,"src":"7777:24:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13119,"name":"uint256","nodeType":"ElementaryTypeName","src":"7777:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13123,"mutability":"mutable","name":"superTokens","nameLocation":"7820:11:36","nodeType":"VariableDeclaration","scope":13239,"src":"7803:28:36","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":13121,"name":"address","nodeType":"ElementaryTypeName","src":"7803:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":13122,"nodeType":"ArrayTypeName","src":"7803:9:36","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":13128,"initialValue":{"arguments":[{"id":13126,"name":"_broadcaster","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13114,"src":"7882:12:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":13124,"name":"LibSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14179,"src":"7835:10:36","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibSession_$14179_$","typeString":"type(library LibSession)"}},"id":13125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7859:22:36","memberName":"_getCurrentSessionData","nodeType":"MemberAccess","referencedDeclaration":14010,"src":"7835:46:36","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (address) view returns (uint256,address[] memory)"}},"id":13127,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7835:60:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"tuple(uint256,address[] memory)"}},"nodeType":"VariableDeclarationStatement","src":"7776:119:36"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13129,"name":"currentTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13120,"src":"7910:16:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":13130,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7930:1:36","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7910:21:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":13132,"name":"superTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13123,"src":"7935:11:36","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":13133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7947:6:36","memberName":"length","nodeType":"MemberAccess","src":"7935:18:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"30","id":13134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7957:1:36","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7935:23:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7910:48:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13139,"nodeType":"IfStatement","src":"7906:66:36","trueBody":{"expression":{"hexValue":"66616c7365","id":13137,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7967:5:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":13118,"id":13138,"nodeType":"Return","src":"7960:12:36"}},{"body":{"id":13235,"nodeType":"Block","src":"8032:1157:36","statements":[{"assignments":[13152],"declarations":[{"constant":false,"id":13152,"mutability":"mutable","name":"activeSessionNonce","nameLocation":"8054:18:36","nodeType":"VariableDeclaration","scope":13235,"src":"8046:26:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13151,"name":"uint256","nodeType":"ElementaryTypeName","src":"8046:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13160,"initialValue":{"arguments":[{"id":13155,"name":"_broadcaster","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13114,"src":"8120:12:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":13156,"name":"superTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13123,"src":"8150:11:36","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":13158,"indexExpression":{"id":13157,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13141,"src":"8162:1:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8150:14:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":13153,"name":"LibSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14179,"src":"8075:10:36","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibSession_$14179_$","typeString":"type(library LibSession)"}},"id":13154,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8086:16:36","memberName":"_getCurrentNonce","nodeType":"MemberAccess","referencedDeclaration":13985,"src":"8075:27:36","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":13159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8075:103:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8046:132:36"},{"assignments":[null,null,13162,13164],"declarations":[null,null,{"constant":false,"id":13162,"mutability":"mutable","name":"timestampStart","nameLocation":"8206:14:36","nodeType":"VariableDeclaration","scope":13235,"src":"8198:22:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13161,"name":"uint256","nodeType":"ElementaryTypeName","src":"8198:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13164,"mutability":"mutable","name":"timestampStop","nameLocation":"8230:13:36","nodeType":"VariableDeclaration","scope":13235,"src":"8222:21:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13163,"name":"uint256","nodeType":"ElementaryTypeName","src":"8222:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13173,"initialValue":{"arguments":[{"id":13167,"name":"_broadcaster","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13114,"src":"8312:12:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":13168,"name":"superTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13123,"src":"8346:11:36","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":13170,"indexExpression":{"id":13169,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13141,"src":"8358:1:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8346:14:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13171,"name":"activeSessionNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13152,"src":"8382:18:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":13165,"name":"LibSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14179,"src":"8247:10:36","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibSession_$14179_$","typeString":"type(library LibSession)"}},"id":13166,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8275:15:36","memberName":"_getSessionData","nodeType":"MemberAccess","referencedDeclaration":14070,"src":"8247:43:36","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_int96_$_t_uint96_$_t_uint256_$_t_uint256_$","typeString":"function (address,address,uint256) view returns (int96,uint96,uint256,uint256)"}},"id":13172,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8247:171:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int96_$_t_uint96_$_t_uint256_$_t_uint256_$","typeString":"tuple(int96,uint96,uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"8193:225:36"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13174,"name":"timestampStart","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13162,"src":"8437:14:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":13175,"name":"currentTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13120,"src":"8455:16:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8437:34:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13179,"nodeType":"IfStatement","src":"8433:52:36","trueBody":{"expression":{"hexValue":"66616c7365","id":13177,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8480:5:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":13118,"id":13178,"nodeType":"Return","src":"8473:12:36"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13180,"name":"timestampStop","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13164,"src":"8504:13:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":13181,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8521:1:36","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8504:18:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13185,"nodeType":"IfStatement","src":"8500:36:36","trueBody":{"expression":{"hexValue":"66616c7365","id":13183,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8531:5:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":13118,"id":13184,"nodeType":"Return","src":"8524:12:36"}},{"assignments":[13187],"declarations":[{"constant":false,"id":13187,"mutability":"mutable","name":"currentFlowNonce","nameLocation":"8559:16:36","nodeType":"VariableDeclaration","scope":13235,"src":"8551:24:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13186,"name":"uint256","nodeType":"ElementaryTypeName","src":"8551:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13194,"initialValue":{"arguments":[{"id":13189,"name":"_viewer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13112,"src":"8612:7:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":13190,"name":"superTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13123,"src":"8637:11:36","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":13192,"indexExpression":{"id":13191,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13141,"src":"8649:1:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8637:14:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":13188,"name":"_getCurrentNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13287,"src":"8578:16:36","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":13193,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8578:87:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8551:114:36"},{"assignments":[13196,13198,13200,13202,null,null],"declarations":[{"constant":false,"id":13196,"mutability":"mutable","name":"receiver","nameLocation":"8706:8:36","nodeType":"VariableDeclaration","scope":13235,"src":"8698:16:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13195,"name":"address","nodeType":"ElementaryTypeName","src":"8698:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13198,"mutability":"mutable","name":"sessionNonce","nameLocation":"8740:12:36","nodeType":"VariableDeclaration","scope":13235,"src":"8732:20:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13197,"name":"uint256","nodeType":"ElementaryTypeName","src":"8732:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13200,"mutability":"mutable","name":"timestampIncrease","nameLocation":"8778:17:36","nodeType":"VariableDeclaration","scope":13235,"src":"8770:25:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13199,"name":"uint256","nodeType":"ElementaryTypeName","src":"8770:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13202,"mutability":"mutable","name":"timestampDecrease","nameLocation":"8821:17:36","nodeType":"VariableDeclaration","scope":13235,"src":"8813:25:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13201,"name":"uint256","nodeType":"ElementaryTypeName","src":"8813:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},null,null],"id":13210,"initialValue":{"arguments":[{"id":13204,"name":"_viewer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13112,"src":"8888:7:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":13205,"name":"superTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13123,"src":"8897:11:36","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":13207,"indexExpression":{"id":13206,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13141,"src":"8909:1:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8897:14:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13208,"name":"currentFlowNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13187,"src":"8913:16:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13203,"name":"_getFlowData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13371,"src":"8875:12:36","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes32_$_t_bool_$","typeString":"function (address,address,uint256) view returns (address,uint256,uint256,uint256,bytes32,bool)"}},"id":13209,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8875:55:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes32_$_t_bool_$","typeString":"tuple(address,uint256,uint256,uint256,bytes32,bool)"}},"nodeType":"VariableDeclarationStatement","src":"8680:250:36"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":13213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13211,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13196,"src":"8949:8:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":13212,"name":"_broadcaster","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13114,"src":"8961:12:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8949:24:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13216,"nodeType":"IfStatement","src":"8945:42:36","trueBody":{"expression":{"hexValue":"66616c7365","id":13214,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8982:5:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":13118,"id":13215,"nodeType":"Return","src":"8975:12:36"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13217,"name":"sessionNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13198,"src":"9006:12:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":13218,"name":"activeSessionNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13152,"src":"9022:18:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9006:34:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13222,"nodeType":"IfStatement","src":"9002:52:36","trueBody":{"expression":{"hexValue":"66616c7365","id":13220,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9049:5:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":13118,"id":13221,"nodeType":"Return","src":"9042:12:36"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13223,"name":"timestampIncrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13200,"src":"9073:17:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":13224,"name":"currentTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13120,"src":"9093:16:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9073:36:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13228,"nodeType":"IfStatement","src":"9069:54:36","trueBody":{"expression":{"hexValue":"66616c7365","id":13226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9118:5:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":13118,"id":13227,"nodeType":"Return","src":"9111:12:36"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13229,"name":"timestampDecrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13202,"src":"9142:17:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":13230,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9163:1:36","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9142:22:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13234,"nodeType":"IfStatement","src":"9138:40:36","trueBody":{"expression":{"hexValue":"66616c7365","id":13232,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9173:5:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":13118,"id":13233,"nodeType":"Return","src":"9166:12:36"}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13144,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13141,"src":"8003:1:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":13145,"name":"superTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13123,"src":"8007:11:36","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":13146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8019:6:36","memberName":"length","nodeType":"MemberAccess","src":"8007:18:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8003:22:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13236,"initializationExpression":{"assignments":[13141],"declarations":[{"constant":false,"id":13141,"mutability":"mutable","name":"i","nameLocation":"7996:1:36","nodeType":"VariableDeclaration","scope":13236,"src":"7988:9:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13140,"name":"uint256","nodeType":"ElementaryTypeName","src":"7988:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13143,"initialValue":{"hexValue":"30","id":13142,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8000:1:36","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"7988:13:36"},"loopExpression":{"expression":{"id":13149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"8027:3:36","subExpression":{"id":13148,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13141,"src":"8027:1:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13150,"nodeType":"ExpressionStatement","src":"8027:3:36"},"nodeType":"ForStatement","src":"7983:1206:36"},{"expression":{"hexValue":"74727565","id":13237,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9206:4:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":13118,"id":13238,"nodeType":"Return","src":"9199:11:36"}]},"id":13240,"implemented":true,"kind":"function","modifiers":[],"name":"_isViewSessionAllowed","nameLocation":"7654:21:36","nodeType":"FunctionDefinition","parameters":{"id":13115,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13112,"mutability":"mutable","name":"_viewer","nameLocation":"7693:7:36","nodeType":"VariableDeclaration","scope":13240,"src":"7685:15:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13111,"name":"address","nodeType":"ElementaryTypeName","src":"7685:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13114,"mutability":"mutable","name":"_broadcaster","nameLocation":"7718:12:36","nodeType":"VariableDeclaration","scope":13240,"src":"7710:20:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13113,"name":"address","nodeType":"ElementaryTypeName","src":"7710:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7675:61:36"},"returnParameters":{"id":13118,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13117,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13240,"src":"7760:4:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13116,"name":"bool","nodeType":"ElementaryTypeName","src":"7760:4:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7759:6:36"},"scope":13572,"src":"7645:1572:36","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":13257,"nodeType":"Block","src":"9335:68:36","statements":[{"expression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13249,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12644,"src":"9352:12:36","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$12632_storage_ptr_$","typeString":"function () pure returns (struct LibFlow.StorageFlow storage pointer)"}},"id":13250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9352:14:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$12632_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":13251,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9367:9:36","memberName":"flowNonce","nodeType":"MemberAccess","referencedDeclaration":12612,"src":"9352:24:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":13253,"indexExpression":{"id":13252,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13242,"src":"9377:5:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9352:31:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":13255,"indexExpression":{"id":13254,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13244,"src":"9384:11:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9352:44:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13248,"id":13256,"nodeType":"Return","src":"9345:51:36"}]},"id":13258,"implemented":true,"kind":"function","modifiers":[],"name":"_getNewNonce","nameLocation":"9232:12:36","nodeType":"FunctionDefinition","parameters":{"id":13245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13242,"mutability":"mutable","name":"_user","nameLocation":"9262:5:36","nodeType":"VariableDeclaration","scope":13258,"src":"9254:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13241,"name":"address","nodeType":"ElementaryTypeName","src":"9254:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13244,"mutability":"mutable","name":"_superToken","nameLocation":"9285:11:36","nodeType":"VariableDeclaration","scope":13258,"src":"9277:19:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13243,"name":"address","nodeType":"ElementaryTypeName","src":"9277:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9244:58:36"},"returnParameters":{"id":13248,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13247,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13258,"src":"9326:7:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13246,"name":"uint256","nodeType":"ElementaryTypeName","src":"9326:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9325:9:36"},"scope":13572,"src":"9223:180:36","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":13286,"nodeType":"Block","src":"9525:120:36","statements":[{"assignments":[13268],"declarations":[{"constant":false,"id":13268,"mutability":"mutable","name":"nonce","nameLocation":"9543:5:36","nodeType":"VariableDeclaration","scope":13286,"src":"9535:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13267,"name":"uint256","nodeType":"ElementaryTypeName","src":"9535:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13276,"initialValue":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13269,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12644,"src":"9551:12:36","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$12632_storage_ptr_$","typeString":"function () pure returns (struct LibFlow.StorageFlow storage pointer)"}},"id":13270,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9551:14:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$12632_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":13271,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9566:9:36","memberName":"flowNonce","nodeType":"MemberAccess","referencedDeclaration":12612,"src":"9551:24:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":13273,"indexExpression":{"id":13272,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13260,"src":"9576:5:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9551:31:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":13275,"indexExpression":{"id":13274,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13262,"src":"9583:11:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9551:44:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9535:60:36"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13279,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13277,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13268,"src":"9612:5:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":13278,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9621:1:36","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9612:10:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13281,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13268,"src":"9629:5:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":13282,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9637:1:36","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9629:9:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"9612:26:36","trueExpression":{"hexValue":"30","id":13280,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9625:1:36","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13266,"id":13285,"nodeType":"Return","src":"9605:33:36"}]},"id":13287,"implemented":true,"kind":"function","modifiers":[],"name":"_getCurrentNonce","nameLocation":"9418:16:36","nodeType":"FunctionDefinition","parameters":{"id":13263,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13260,"mutability":"mutable","name":"_user","nameLocation":"9452:5:36","nodeType":"VariableDeclaration","scope":13287,"src":"9444:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13259,"name":"address","nodeType":"ElementaryTypeName","src":"9444:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13262,"mutability":"mutable","name":"_superToken","nameLocation":"9475:11:36","nodeType":"VariableDeclaration","scope":13287,"src":"9467:19:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13261,"name":"address","nodeType":"ElementaryTypeName","src":"9467:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9434:58:36"},"returnParameters":{"id":13266,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13265,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13287,"src":"9516:7:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13264,"name":"uint256","nodeType":"ElementaryTypeName","src":"9516:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9515:9:36"},"scope":13572,"src":"9409:236:36","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":13370,"nodeType":"Block","src":"9857:557:36","statements":[{"expression":{"components":[{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13308,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12644,"src":"9888:12:36","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$12632_storage_ptr_$","typeString":"function () pure returns (struct LibFlow.StorageFlow storage pointer)"}},"id":13309,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9888:14:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$12632_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":13310,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9903:10:36","memberName":"flowRecord","nodeType":"MemberAccess","referencedDeclaration":12621,"src":"9888:25:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref)))"}},"id":13312,"indexExpression":{"id":13311,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13289,"src":"9914:5:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9888:32:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref))"}},"id":13314,"indexExpression":{"id":13313,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13291,"src":"9921:11:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9888:45:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$","typeString":"mapping(uint256 => struct LibFlow.FlowRecord storage ref)"}},"id":13316,"indexExpression":{"id":13315,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13293,"src":"9934:6:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9888:53:36","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$12606_storage","typeString":"struct LibFlow.FlowRecord storage ref"}},"id":13317,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9942:8:36","memberName":"receiver","nodeType":"MemberAccess","referencedDeclaration":12595,"src":"9888:62:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13318,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12644,"src":"9964:12:36","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$12632_storage_ptr_$","typeString":"function () pure returns (struct LibFlow.StorageFlow storage pointer)"}},"id":13319,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9964:14:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$12632_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":13320,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9979:10:36","memberName":"flowRecord","nodeType":"MemberAccess","referencedDeclaration":12621,"src":"9964:25:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref)))"}},"id":13322,"indexExpression":{"id":13321,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13289,"src":"9990:5:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9964:32:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref))"}},"id":13324,"indexExpression":{"id":13323,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13291,"src":"9997:11:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9964:45:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$","typeString":"mapping(uint256 => struct LibFlow.FlowRecord storage ref)"}},"id":13326,"indexExpression":{"id":13325,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13293,"src":"10010:6:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9964:53:36","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$12606_storage","typeString":"struct LibFlow.FlowRecord storage ref"}},"id":13327,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10018:12:36","memberName":"sessionNonce","nodeType":"MemberAccess","referencedDeclaration":12597,"src":"9964:66:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13328,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12644,"src":"10044:12:36","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$12632_storage_ptr_$","typeString":"function () pure returns (struct LibFlow.StorageFlow storage pointer)"}},"id":13329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10044:14:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$12632_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":13330,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10072:10:36","memberName":"flowRecord","nodeType":"MemberAccess","referencedDeclaration":12621,"src":"10044:38:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref)))"}},"id":13332,"indexExpression":{"id":13331,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13289,"src":"10083:5:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10044:45:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref))"}},"id":13334,"indexExpression":{"id":13333,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13291,"src":"10090:11:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10044:58:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$","typeString":"mapping(uint256 => struct LibFlow.FlowRecord storage ref)"}},"id":13336,"indexExpression":{"id":13335,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13293,"src":"10103:6:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10044:66:36","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$12606_storage","typeString":"struct LibFlow.FlowRecord storage ref"}},"id":13337,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10111:17:36","memberName":"timestampIncrease","nodeType":"MemberAccess","referencedDeclaration":12599,"src":"10044:84:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13338,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12644,"src":"10142:12:36","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$12632_storage_ptr_$","typeString":"function () pure returns (struct LibFlow.StorageFlow storage pointer)"}},"id":13339,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10142:14:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$12632_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":13340,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10170:10:36","memberName":"flowRecord","nodeType":"MemberAccess","referencedDeclaration":12621,"src":"10142:38:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref)))"}},"id":13342,"indexExpression":{"id":13341,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13289,"src":"10181:5:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10142:45:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref))"}},"id":13344,"indexExpression":{"id":13343,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13291,"src":"10188:11:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10142:58:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$","typeString":"mapping(uint256 => struct LibFlow.FlowRecord storage ref)"}},"id":13346,"indexExpression":{"id":13345,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13293,"src":"10201:6:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10142:66:36","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$12606_storage","typeString":"struct LibFlow.FlowRecord storage ref"}},"id":13347,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10209:17:36","memberName":"timestampDecrease","nodeType":"MemberAccess","referencedDeclaration":12601,"src":"10142:84:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13348,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12644,"src":"10240:12:36","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$12632_storage_ptr_$","typeString":"function () pure returns (struct LibFlow.StorageFlow storage pointer)"}},"id":13349,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10240:14:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$12632_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":13350,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10255:10:36","memberName":"flowRecord","nodeType":"MemberAccess","referencedDeclaration":12621,"src":"10240:25:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref)))"}},"id":13352,"indexExpression":{"id":13351,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13289,"src":"10266:5:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10240:32:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref))"}},"id":13354,"indexExpression":{"id":13353,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13291,"src":"10273:11:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10240:45:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$","typeString":"mapping(uint256 => struct LibFlow.FlowRecord storage ref)"}},"id":13356,"indexExpression":{"id":13355,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13293,"src":"10286:6:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10240:53:36","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$12606_storage","typeString":"struct LibFlow.FlowRecord storage ref"}},"id":13357,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10294:6:36","memberName":"taskId","nodeType":"MemberAccess","referencedDeclaration":12603,"src":"10240:60:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13358,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12644,"src":"10314:12:36","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$12632_storage_ptr_$","typeString":"function () pure returns (struct LibFlow.StorageFlow storage pointer)"}},"id":13359,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10314:14:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$12632_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":13360,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10342:10:36","memberName":"flowRecord","nodeType":"MemberAccess","referencedDeclaration":12621,"src":"10314:38:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref)))"}},"id":13362,"indexExpression":{"id":13361,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13289,"src":"10353:5:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10314:45:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref))"}},"id":13364,"indexExpression":{"id":13363,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13291,"src":"10360:11:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10314:58:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$","typeString":"mapping(uint256 => struct LibFlow.FlowRecord storage ref)"}},"id":13366,"indexExpression":{"id":13365,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13293,"src":"10373:6:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10314:66:36","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$12606_storage","typeString":"struct LibFlow.FlowRecord storage ref"}},"id":13367,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10381:16:36","memberName":"isBalanceSettled","nodeType":"MemberAccess","referencedDeclaration":12605,"src":"10314:83:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":13368,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9874:533:36","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes32_$_t_bool_$","typeString":"tuple(address,uint256,uint256,uint256,bytes32,bool)"}},"functionReturnParameters":13307,"id":13369,"nodeType":"Return","src":"9867:540:36"}]},"id":13371,"implemented":true,"kind":"function","modifiers":[],"name":"_getFlowData","nameLocation":"9660:12:36","nodeType":"FunctionDefinition","parameters":{"id":13294,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13289,"mutability":"mutable","name":"_user","nameLocation":"9690:5:36","nodeType":"VariableDeclaration","scope":13371,"src":"9682:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13288,"name":"address","nodeType":"ElementaryTypeName","src":"9682:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13291,"mutability":"mutable","name":"_superToken","nameLocation":"9713:11:36","nodeType":"VariableDeclaration","scope":13371,"src":"9705:19:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13290,"name":"address","nodeType":"ElementaryTypeName","src":"9705:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13293,"mutability":"mutable","name":"_nonce","nameLocation":"9742:6:36","nodeType":"VariableDeclaration","scope":13371,"src":"9734:14:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13292,"name":"uint256","nodeType":"ElementaryTypeName","src":"9734:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9672:82:36"},"returnParameters":{"id":13307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13296,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13371,"src":"9802:7:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13295,"name":"address","nodeType":"ElementaryTypeName","src":"9802:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13298,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13371,"src":"9811:7:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13297,"name":"uint256","nodeType":"ElementaryTypeName","src":"9811:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13300,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13371,"src":"9820:7:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13299,"name":"uint256","nodeType":"ElementaryTypeName","src":"9820:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13302,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13371,"src":"9829:7:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13301,"name":"uint256","nodeType":"ElementaryTypeName","src":"9829:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13304,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13371,"src":"9838:7:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13303,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9838:7:36","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":13306,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13371,"src":"9847:4:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13305,"name":"bool","nodeType":"ElementaryTypeName","src":"9847:4:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"9801:51:36"},"scope":13572,"src":"9651:763:36","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":13388,"nodeType":"Block","src":"10535:67:36","statements":[{"expression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13380,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12644,"src":"10552:12:36","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$12632_storage_ptr_$","typeString":"function () pure returns (struct LibFlow.StorageFlow storage pointer)"}},"id":13381,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10552:14:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$12632_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":13382,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10567:8:36","memberName":"deposits","nodeType":"MemberAccess","referencedDeclaration":12627,"src":"10552:23:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":13384,"indexExpression":{"id":13383,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13373,"src":"10576:5:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10552:30:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":13386,"indexExpression":{"id":13385,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13375,"src":"10583:11:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10552:43:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13379,"id":13387,"nodeType":"Return","src":"10545:50:36"}]},"id":13389,"implemented":true,"kind":"function","modifiers":[],"name":"_getDepositUser","nameLocation":"10429:15:36","nodeType":"FunctionDefinition","parameters":{"id":13376,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13373,"mutability":"mutable","name":"_user","nameLocation":"10462:5:36","nodeType":"VariableDeclaration","scope":13389,"src":"10454:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13372,"name":"address","nodeType":"ElementaryTypeName","src":"10454:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13375,"mutability":"mutable","name":"_superToken","nameLocation":"10485:11:36","nodeType":"VariableDeclaration","scope":13389,"src":"10477:19:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13374,"name":"address","nodeType":"ElementaryTypeName","src":"10477:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10444:58:36"},"returnParameters":{"id":13379,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13378,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13389,"src":"10526:7:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13377,"name":"uint256","nodeType":"ElementaryTypeName","src":"10526:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10525:9:36"},"scope":13572,"src":"10420:182:36","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":13402,"nodeType":"Block","src":"10701:65:36","statements":[{"expression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13396,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12644,"src":"10718:12:36","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$12632_storage_ptr_$","typeString":"function () pure returns (struct LibFlow.StorageFlow storage pointer)"}},"id":13397,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10718:14:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$12632_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":13398,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10733:13:36","memberName":"totalDeposits","nodeType":"MemberAccess","referencedDeclaration":12631,"src":"10718:28:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":13400,"indexExpression":{"id":13399,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13391,"src":"10747:11:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10718:41:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13395,"id":13401,"nodeType":"Return","src":"10711:48:36"}]},"id":13403,"implemented":true,"kind":"function","modifiers":[],"name":"_getDepositTotal","nameLocation":"10617:16:36","nodeType":"FunctionDefinition","parameters":{"id":13392,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13391,"mutability":"mutable","name":"_superToken","nameLocation":"10651:11:36","nodeType":"VariableDeclaration","scope":13403,"src":"10643:19:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13390,"name":"address","nodeType":"ElementaryTypeName","src":"10643:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10633:35:36"},"returnParameters":{"id":13395,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13394,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13403,"src":"10692:7:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13393,"name":"uint256","nodeType":"ElementaryTypeName","src":"10692:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10691:9:36"},"scope":13572,"src":"10608:158:36","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":13470,"nodeType":"Block","src":"10982:451:36","statements":[{"assignments":[13418],"declarations":[{"constant":false,"id":13418,"mutability":"mutable","name":"iSuperToken","nameLocation":"11004:11:36","nodeType":"VariableDeclaration","scope":13470,"src":"10992:23:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":13417,"nodeType":"UserDefinedTypeName","pathNode":{"id":13416,"name":"ISuperToken","nameLocations":["10992:11:36"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"10992:11:36"},"referencedDeclaration":6947,"src":"10992:11:36","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"}],"id":13422,"initialValue":{"arguments":[{"id":13420,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13405,"src":"11030:11:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13419,"name":"ISuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6947,"src":"11018:11:36","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISuperToken_$6947_$","typeString":"type(contract ISuperToken)"}},"id":13421,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11018:24:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"nodeType":"VariableDeclarationStatement","src":"10992:50:36"},{"assignments":[13424],"declarations":[{"constant":false,"id":13424,"mutability":"mutable","name":"flowRate","nameLocation":"11058:8:36","nodeType":"VariableDeclaration","scope":13470,"src":"11052:14:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":13423,"name":"int96","nodeType":"ElementaryTypeName","src":"11052:5:36","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"id":13433,"initialValue":{"arguments":[{"arguments":[{"id":13429,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"11101:4:36","typeDescriptions":{"typeIdentifier":"t_contract$_LibFlow_$13572","typeString":"library LibFlow"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LibFlow_$13572","typeString":"library LibFlow"}],"id":13428,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11093:7:36","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13427,"name":"address","nodeType":"ElementaryTypeName","src":"11093:7:36","typeDescriptions":{}}},"id":13430,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11093:13:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13431,"name":"_receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13409,"src":"11108:9:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":13425,"name":"iSuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13418,"src":"11069:11:36","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"id":13426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11081:11:36","memberName":"getFlowRate","nodeType":"MemberAccess","referencedDeclaration":3206,"src":"11069:23:36","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_ISuperToken_$6947_$_t_address_$_t_address_$returns$_t_int96_$attached_to$_t_contract$_ISuperToken_$6947_$","typeString":"function (contract ISuperToken,address,address) view returns (int96)"}},"id":13432,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11069:49:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"VariableDeclarationStatement","src":"11052:66:36"},{"condition":{"commonType":{"typeIdentifier":"t_int96","typeString":"int96"},"id":13436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13434,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13424,"src":"11133:8:36","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"30","id":13435,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11145:1:36","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11133:13:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":13454,"nodeType":"Block","src":"11223:80:36","statements":[{"expression":{"arguments":[{"id":13448,"name":"_receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13409,"src":"11260:9:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_int96","typeString":"int96"},"id":13451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13449,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13424,"src":"11271:8:36","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":13450,"name":"_flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13413,"src":"11282:9:36","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"src":"11271:20:36","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_int96","typeString":"int96"}],"expression":{"id":13445,"name":"iSuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13418,"src":"11237:11:36","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"id":13447,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11249:10:36","memberName":"updateFlow","nodeType":"MemberAccess","referencedDeclaration":2083,"src":"11237:22:36","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$6947_$_t_address_$_t_int96_$returns$_t_bool_$attached_to$_t_contract$_ISuperToken_$6947_$","typeString":"function (contract ISuperToken,address,int96) returns (bool)"}},"id":13452,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11237:55:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13453,"nodeType":"ExpressionStatement","src":"11237:55:36"}]},"id":13455,"nodeType":"IfStatement","src":"11129:174:36","trueBody":{"id":13444,"nodeType":"Block","src":"11148:69:36","statements":[{"expression":{"arguments":[{"id":13440,"name":"_receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13409,"src":"11185:9:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13441,"name":"_flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13413,"src":"11196:9:36","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_int96","typeString":"int96"}],"expression":{"id":13437,"name":"iSuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13418,"src":"11162:11:36","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"id":13439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11174:10:36","memberName":"createFlow","nodeType":"MemberAccess","referencedDeclaration":1986,"src":"11162:22:36","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$6947_$_t_address_$_t_int96_$returns$_t_bool_$attached_to$_t_contract$_ISuperToken_$6947_$","typeString":"function (contract ISuperToken,address,int96) returns (bool)"}},"id":13442,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11162:44:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13443,"nodeType":"ExpressionStatement","src":"11162:44:36"}]}},{"expression":{"id":13468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13456,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12644,"src":"11313:12:36","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$12632_storage_ptr_$","typeString":"function () pure returns (struct LibFlow.StorageFlow storage pointer)"}},"id":13457,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11313:14:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$12632_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":13458,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11337:10:36","memberName":"flowRecord","nodeType":"MemberAccess","referencedDeclaration":12621,"src":"11313:34:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref)))"}},"id":13460,"indexExpression":{"id":13459,"name":"_sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13407,"src":"11348:7:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11313:43:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref))"}},"id":13462,"indexExpression":{"id":13461,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13405,"src":"11357:11:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11313:56:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$","typeString":"mapping(uint256 => struct LibFlow.FlowRecord storage ref)"}},"id":13464,"indexExpression":{"id":13463,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13411,"src":"11370:6:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11313:64:36","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$12606_storage","typeString":"struct LibFlow.FlowRecord storage ref"}},"id":13465,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"11378:17:36","memberName":"timestampIncrease","nodeType":"MemberAccess","referencedDeclaration":12599,"src":"11313:82:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":13466,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"11398:5:36","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":13467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11417:9:36","memberName":"timestamp","nodeType":"MemberAccess","src":"11398:28:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11313:113:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13469,"nodeType":"ExpressionStatement","src":"11313:113:36"}]},"id":13471,"implemented":true,"kind":"function","modifiers":[],"name":"_increaseFlow","nameLocation":"10823:13:36","nodeType":"FunctionDefinition","parameters":{"id":13414,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13405,"mutability":"mutable","name":"_superToken","nameLocation":"10854:11:36","nodeType":"VariableDeclaration","scope":13471,"src":"10846:19:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13404,"name":"address","nodeType":"ElementaryTypeName","src":"10846:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13407,"mutability":"mutable","name":"_sender","nameLocation":"10883:7:36","nodeType":"VariableDeclaration","scope":13471,"src":"10875:15:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13406,"name":"address","nodeType":"ElementaryTypeName","src":"10875:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13409,"mutability":"mutable","name":"_receiver","nameLocation":"10908:9:36","nodeType":"VariableDeclaration","scope":13471,"src":"10900:17:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13408,"name":"address","nodeType":"ElementaryTypeName","src":"10900:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13411,"mutability":"mutable","name":"_nonce","nameLocation":"10935:6:36","nodeType":"VariableDeclaration","scope":13471,"src":"10927:14:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13410,"name":"uint256","nodeType":"ElementaryTypeName","src":"10927:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13413,"mutability":"mutable","name":"_flowRate","nameLocation":"10957:9:36","nodeType":"VariableDeclaration","scope":13471,"src":"10951:15:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":13412,"name":"int96","nodeType":"ElementaryTypeName","src":"10951:5:36","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"10836:136:36"},"returnParameters":{"id":13415,"nodeType":"ParameterList","parameters":[],"src":"10982:0:36"},"scope":13572,"src":"10814:619:36","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":13570,"nodeType":"Block","src":"11607:724:36","statements":[{"assignments":[13486],"declarations":[{"constant":false,"id":13486,"mutability":"mutable","name":"iSuperToken","nameLocation":"11629:11:36","nodeType":"VariableDeclaration","scope":13570,"src":"11617:23:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":13485,"nodeType":"UserDefinedTypeName","pathNode":{"id":13484,"name":"ISuperToken","nameLocations":["11617:11:36"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"11617:11:36"},"referencedDeclaration":6947,"src":"11617:11:36","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"}],"id":13490,"initialValue":{"arguments":[{"id":13488,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13473,"src":"11655:11:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13487,"name":"ISuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6947,"src":"11643:11:36","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISuperToken_$6947_$","typeString":"type(contract ISuperToken)"}},"id":13489,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11643:24:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"nodeType":"VariableDeclarationStatement","src":"11617:50:36"},{"assignments":[13492],"declarations":[{"constant":false,"id":13492,"mutability":"mutable","name":"flowRate","nameLocation":"11683:8:36","nodeType":"VariableDeclaration","scope":13570,"src":"11677:14:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":13491,"name":"int96","nodeType":"ElementaryTypeName","src":"11677:5:36","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"id":13501,"initialValue":{"arguments":[{"arguments":[{"id":13497,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"11726:4:36","typeDescriptions":{"typeIdentifier":"t_contract$_LibFlow_$13572","typeString":"library LibFlow"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LibFlow_$13572","typeString":"library LibFlow"}],"id":13496,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11718:7:36","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13495,"name":"address","nodeType":"ElementaryTypeName","src":"11718:7:36","typeDescriptions":{}}},"id":13498,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11718:13:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13499,"name":"_receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13477,"src":"11733:9:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":13493,"name":"iSuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13486,"src":"11694:11:36","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"id":13494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11706:11:36","memberName":"getFlowRate","nodeType":"MemberAccess","referencedDeclaration":3206,"src":"11694:23:36","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_ISuperToken_$6947_$_t_address_$_t_address_$returns$_t_int96_$attached_to$_t_contract$_ISuperToken_$6947_$","typeString":"function (contract ISuperToken,address,address) view returns (int96)"}},"id":13500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11694:49:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"VariableDeclarationStatement","src":"11677:66:36"},{"condition":{"commonType":{"typeIdentifier":"t_int96","typeString":"int96"},"id":13506,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int96","typeString":"int96"},"id":13504,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13502,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13492,"src":"11758:8:36","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":13503,"name":"_flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13481,"src":"11769:9:36","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"src":"11758:20:36","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"30","id":13505,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11782:1:36","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11758:25:36","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":13527,"nodeType":"Block","src":"11864:80:36","statements":[{"expression":{"arguments":[{"id":13521,"name":"_receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13477,"src":"11901:9:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_int96","typeString":"int96"},"id":13524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13522,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13492,"src":"11912:8:36","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":13523,"name":"_flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13481,"src":"11923:9:36","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"src":"11912:20:36","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_int96","typeString":"int96"}],"expression":{"id":13518,"name":"iSuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13486,"src":"11878:11:36","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"id":13520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11890:10:36","memberName":"updateFlow","nodeType":"MemberAccess","referencedDeclaration":2083,"src":"11878:22:36","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$6947_$_t_address_$_t_int96_$returns$_t_bool_$attached_to$_t_contract$_ISuperToken_$6947_$","typeString":"function (contract ISuperToken,address,int96) returns (bool)"}},"id":13525,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11878:55:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13526,"nodeType":"ExpressionStatement","src":"11878:55:36"}]},"id":13528,"nodeType":"IfStatement","src":"11754:190:36","trueBody":{"id":13517,"nodeType":"Block","src":"11785:73:36","statements":[{"expression":{"arguments":[{"arguments":[{"id":13512,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"11830:4:36","typeDescriptions":{"typeIdentifier":"t_contract$_LibFlow_$13572","typeString":"library LibFlow"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LibFlow_$13572","typeString":"library LibFlow"}],"id":13511,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11822:7:36","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13510,"name":"address","nodeType":"ElementaryTypeName","src":"11822:7:36","typeDescriptions":{}}},"id":13513,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11822:13:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13514,"name":"_receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13477,"src":"11837:9:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":13507,"name":"iSuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13486,"src":"11799:11:36","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"id":13509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11811:10:36","memberName":"deleteFlow","nodeType":"MemberAccess","referencedDeclaration":2180,"src":"11799:22:36","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$6947_$_t_address_$_t_address_$returns$_t_bool_$attached_to$_t_contract$_ISuperToken_$6947_$","typeString":"function (contract ISuperToken,address,address) returns (bool)"}},"id":13515,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11799:48:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13516,"nodeType":"ExpressionStatement","src":"11799:48:36"}]}},{"expression":{"id":13541,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13529,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12644,"src":"11954:12:36","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$12632_storage_ptr_$","typeString":"function () pure returns (struct LibFlow.StorageFlow storage pointer)"}},"id":13530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11954:14:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$12632_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":13531,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11978:10:36","memberName":"flowRecord","nodeType":"MemberAccess","referencedDeclaration":12621,"src":"11954:34:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref)))"}},"id":13533,"indexExpression":{"id":13532,"name":"_sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13475,"src":"11989:7:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11954:43:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref))"}},"id":13535,"indexExpression":{"id":13534,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13473,"src":"11998:11:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11954:56:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$","typeString":"mapping(uint256 => struct LibFlow.FlowRecord storage ref)"}},"id":13537,"indexExpression":{"id":13536,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13479,"src":"12011:6:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11954:64:36","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$12606_storage","typeString":"struct LibFlow.FlowRecord storage ref"}},"id":13538,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"12019:17:36","memberName":"timestampDecrease","nodeType":"MemberAccess","referencedDeclaration":12601,"src":"11954:82:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":13539,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"12039:5:36","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":13540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12058:9:36","memberName":"timestamp","nodeType":"MemberAccess","src":"12039:28:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11954:113:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13542,"nodeType":"ExpressionStatement","src":"11954:113:36"},{"assignments":[13544],"declarations":[{"constant":false,"id":13544,"mutability":"mutable","name":"controlNonce","nameLocation":"12086:12:36","nodeType":"VariableDeclaration","scope":13570,"src":"12078:20:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13543,"name":"uint256","nodeType":"ElementaryTypeName","src":"12078:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13555,"initialValue":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13545,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12644,"src":"12101:12:36","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$12632_storage_ptr_$","typeString":"function () pure returns (struct LibFlow.StorageFlow storage pointer)"}},"id":13546,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12101:14:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$12632_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":13547,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12125:10:36","memberName":"flowRecord","nodeType":"MemberAccess","referencedDeclaration":12621,"src":"12101:34:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref)))"}},"id":13549,"indexExpression":{"id":13548,"name":"_sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13475,"src":"12136:7:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12101:43:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref))"}},"id":13551,"indexExpression":{"id":13550,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13473,"src":"12145:11:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12101:56:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$","typeString":"mapping(uint256 => struct LibFlow.FlowRecord storage ref)"}},"id":13553,"indexExpression":{"id":13552,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13479,"src":"12158:6:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12101:64:36","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$12606_storage","typeString":"struct LibFlow.FlowRecord storage ref"}},"id":13554,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12166:12:36","memberName":"controlNonce","nodeType":"MemberAccess","referencedDeclaration":12593,"src":"12101:77:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12078:100:36"},{"expression":{"id":13568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":13556,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"12188:10:36","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$12557_$","typeString":"type(library LibControl)"}},"id":13558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12208:15:36","memberName":"_storageControl","nodeType":"MemberAccess","referencedDeclaration":11680,"src":"12188:35:36","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$11668_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":13559,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12188:37:36","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":13560,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12235:13:36","memberName":"controlRecord","nodeType":"MemberAccess","referencedDeclaration":11653,"src":"12188:60:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_ControlRecord_$11619_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibControl.ControlRecord storage ref))"}},"id":13562,"indexExpression":{"id":13561,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13473,"src":"12249:11:36","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12188:73:36","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ControlRecord_$11619_storage_$","typeString":"mapping(uint256 => struct LibControl.ControlRecord storage ref)"}},"id":13564,"indexExpression":{"id":13563,"name":"controlNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13544,"src":"12262:12:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12188:87:36","typeDescriptions":{"typeIdentifier":"t_struct$_ControlRecord_$11619_storage","typeString":"struct LibControl.ControlRecord storage ref"}},"id":13565,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"12276:17:36","memberName":"timestampDecrease","nodeType":"MemberAccess","referencedDeclaration":11618,"src":"12188:105:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":13566,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"12296:5:36","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":13567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12315:9:36","memberName":"timestamp","nodeType":"MemberAccess","src":"12296:28:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12188:136:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13569,"nodeType":"ExpressionStatement","src":"12188:136:36"}]},"id":13571,"implemented":true,"kind":"function","modifiers":[],"name":"_decreaseFlow","nameLocation":"11448:13:36","nodeType":"FunctionDefinition","parameters":{"id":13482,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13473,"mutability":"mutable","name":"_superToken","nameLocation":"11479:11:36","nodeType":"VariableDeclaration","scope":13571,"src":"11471:19:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13472,"name":"address","nodeType":"ElementaryTypeName","src":"11471:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13475,"mutability":"mutable","name":"_sender","nameLocation":"11508:7:36","nodeType":"VariableDeclaration","scope":13571,"src":"11500:15:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13474,"name":"address","nodeType":"ElementaryTypeName","src":"11500:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13477,"mutability":"mutable","name":"_receiver","nameLocation":"11533:9:36","nodeType":"VariableDeclaration","scope":13571,"src":"11525:17:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13476,"name":"address","nodeType":"ElementaryTypeName","src":"11525:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13479,"mutability":"mutable","name":"_nonce","nameLocation":"11560:6:36","nodeType":"VariableDeclaration","scope":13571,"src":"11552:14:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13478,"name":"uint256","nodeType":"ElementaryTypeName","src":"11552:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13481,"mutability":"mutable","name":"_flowRate","nameLocation":"11582:9:36","nodeType":"VariableDeclaration","scope":13571,"src":"11576:15:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":13480,"name":"int96","nodeType":"ElementaryTypeName","src":"11576:5:36","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"11461:136:36"},"returnParameters":{"id":13483,"nodeType":"ParameterList","parameters":[],"src":"11607:0:36"},"scope":13572,"src":"11439:892:36","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":13573,"src":"627:11706:36","usedErrors":[]}],"src":"36:12470:36"},"id":36},"contracts/libraries/core/LibSession.sol":{"ast":{"absolutePath":"contracts/libraries/core/LibSession.sol","exportedSymbols":{"ISuperToken":[6947],"InvalidFlowRate":[11589],"LibControl":[12557],"LibFlow":[13572],"LibSession":[14179],"PreviousSessionStillLive":[13585],"SessionAlreadyEnded":[13589],"SessionNotStarted":[13587],"SuperTokenV1Library":[5077]},"id":14180,"license":"BUSL-1.1","nodeType":"SourceUnit","nodes":[{"id":13574,"literals":["solidity","^","0.8",".9"],"nodeType":"PragmaDirective","src":"36:23:37"},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol","file":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol","id":13576,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14180,"sourceUnit":7600,"src":"61:115:37","symbolAliases":[{"foreign":{"id":13575,"name":"ISuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6947,"src":"69:11:37","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol","file":"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol","id":13578,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14180,"sourceUnit":5078,"src":"177:114:37","symbolAliases":[{"foreign":{"id":13577,"name":"SuperTokenV1Library","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5077,"src":"185:19:37","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/libraries/core/LibControl.sol","file":"./LibControl.sol","id":13581,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14180,"sourceUnit":12558,"src":"293:61:37","symbolAliases":[{"foreign":{"id":13579,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"301:10:37","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":13580,"name":"InvalidFlowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11589,"src":"313:15:37","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/libraries/core/LibFlow.sol","file":"./LibFlow.sol","id":13583,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14180,"sourceUnit":13573,"src":"355:38:37","symbolAliases":[{"foreign":{"id":13582,"name":"LibFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13572,"src":"363:7:37","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"errorSelector":"9b90a9c6","id":13585,"name":"PreviousSessionStillLive","nameLocation":"401:24:37","nodeType":"ErrorDefinition","parameters":{"id":13584,"nodeType":"ParameterList","parameters":[],"src":"425:2:37"},"src":"395:33:37"},{"errorSelector":"3c2779e5","id":13587,"name":"SessionNotStarted","nameLocation":"435:17:37","nodeType":"ErrorDefinition","parameters":{"id":13586,"nodeType":"ParameterList","parameters":[],"src":"452:2:37"},"src":"429:26:37"},{"errorSelector":"e7a7ee38","id":13589,"name":"SessionAlreadyEnded","nameLocation":"462:19:37","nodeType":"ErrorDefinition","parameters":{"id":13588,"nodeType":"ParameterList","parameters":[],"src":"481:2:37"},"src":"456:28:37"},{"abstract":false,"baseContracts":[],"canonicalName":"LibSession","contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":14179,"linearizedBaseContracts":[14179],"name":"LibSession","nameLocation":"494:10:37","nodeType":"ContractDefinition","nodes":[{"global":false,"id":13593,"libraryName":{"id":13590,"name":"SuperTokenV1Library","nameLocations":["517:19:37"],"nodeType":"IdentifierPath","referencedDeclaration":5077,"src":"517:19:37"},"nodeType":"UsingForDirective","src":"511:42:37","typeName":{"id":13592,"nodeType":"UserDefinedTypeName","pathNode":{"id":13591,"name":"ISuperToken","nameLocations":["541:11:37"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"541:11:37"},"referencedDeclaration":6947,"src":"541:11:37","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}}},{"constant":true,"id":13598,"mutability":"constant","name":"STORAGE_POSITION_SESSION","nameLocation":"576:24:37","nodeType":"VariableDeclaration","scope":14179,"src":"559:67:37","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13594,"name":"bytes32","nodeType":"ElementaryTypeName","src":"559:7:37","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"64732e73657373696f6e","id":13596,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"613:12:37","typeDescriptions":{"typeIdentifier":"t_stringliteral_9cd9afe22fea86221d6e8117226b65bb0e2af8c4f5b8abf255fb0afcad4a3a9c","typeString":"literal_string \"ds.session\""},"value":"ds.session"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_9cd9afe22fea86221d6e8117226b65bb0e2af8c4f5b8abf255fb0afcad4a3a9c","typeString":"literal_string \"ds.session\""}],"id":13595,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"603:9:37","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":13597,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"603:23:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"canonicalName":"LibSession.SessionCurrent","id":13604,"members":[{"constant":false,"id":13600,"mutability":"mutable","name":"timestamp","nameLocation":"673:9:37","nodeType":"VariableDeclaration","scope":13604,"src":"665:17:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13599,"name":"uint256","nodeType":"ElementaryTypeName","src":"665:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13603,"mutability":"mutable","name":"superTokens","nameLocation":"702:11:37","nodeType":"VariableDeclaration","scope":13604,"src":"692:21:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":13601,"name":"address","nodeType":"ElementaryTypeName","src":"692:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":13602,"nodeType":"ArrayTypeName","src":"692:9:37","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"name":"SessionCurrent","nameLocation":"640:14:37","nodeType":"StructDefinition","scope":14179,"src":"633:87:37","visibility":"public"},{"canonicalName":"LibSession.SessionRecord","id":13613,"members":[{"constant":false,"id":13606,"mutability":"mutable","name":"effectiveFlowRate","nameLocation":"763:17:37","nodeType":"VariableDeclaration","scope":13613,"src":"757:23:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":13605,"name":"int96","nodeType":"ElementaryTypeName","src":"757:5:37","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"},{"constant":false,"id":13608,"mutability":"mutable","name":"flowRate","nameLocation":"797:8:37","nodeType":"VariableDeclaration","scope":13613,"src":"790:15:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":13607,"name":"uint96","nodeType":"ElementaryTypeName","src":"790:6:37","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":13610,"mutability":"mutable","name":"timestampStart","nameLocation":"823:14:37","nodeType":"VariableDeclaration","scope":13613,"src":"815:22:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13609,"name":"uint256","nodeType":"ElementaryTypeName","src":"815:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13612,"mutability":"mutable","name":"timestampStop","nameLocation":"855:13:37","nodeType":"VariableDeclaration","scope":13613,"src":"847:21:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13611,"name":"uint256","nodeType":"ElementaryTypeName","src":"847:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"SessionRecord","nameLocation":"733:13:37","nodeType":"StructDefinition","scope":14179,"src":"726:149:37","visibility":"public"},{"canonicalName":"LibSession.StorageSession","id":13634,"members":[{"constant":false,"id":13619,"mutability":"mutable","name":"sessionNonce","nameLocation":"961:12:37","nodeType":"VariableDeclaration","scope":13634,"src":"913:60:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":13618,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":13614,"name":"address","nodeType":"ElementaryTypeName","src":"921:7:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"913:47:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":13617,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":13615,"name":"address","nodeType":"ElementaryTypeName","src":"940:7:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"932:27:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":13616,"name":"uint256","nodeType":"ElementaryTypeName","src":"951:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"internal"},{"constant":false,"id":13628,"mutability":"mutable","name":"sessionRecord","nameLocation":"1107:13:37","nodeType":"VariableDeclaration","scope":13634,"src":"1033:87:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_SessionRecord_$13613_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibSession.SessionRecord)))"},"typeName":{"id":13627,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":13620,"name":"address","nodeType":"ElementaryTypeName","src":"1041:7:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1033:73:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_SessionRecord_$13613_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibSession.SessionRecord)))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":13626,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":13621,"name":"address","nodeType":"ElementaryTypeName","src":"1060:7:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1052:53:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_SessionRecord_$13613_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibSession.SessionRecord))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":13625,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":13622,"name":"uint256","nodeType":"ElementaryTypeName","src":"1079:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1071:33:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_SessionRecord_$13613_storage_$","typeString":"mapping(uint256 => struct LibSession.SessionRecord)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":13624,"nodeType":"UserDefinedTypeName","pathNode":{"id":13623,"name":"SessionRecord","nameLocations":["1090:13:37"],"nodeType":"IdentifierPath","referencedDeclaration":13613,"src":"1090:13:37"},"referencedDeclaration":13613,"src":"1090:13:37","typeDescriptions":{"typeIdentifier":"t_struct$_SessionRecord_$13613_storage_ptr","typeString":"struct LibSession.SessionRecord"}}}}},"visibility":"internal"},{"constant":false,"id":13633,"mutability":"mutable","name":"sessionCurrent","nameLocation":"1225:14:37","nodeType":"VariableDeclaration","scope":13634,"src":"1190:49:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_SessionCurrent_$13604_storage_$","typeString":"mapping(address => struct LibSession.SessionCurrent)"},"typeName":{"id":13632,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":13629,"name":"address","nodeType":"ElementaryTypeName","src":"1198:7:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1190:34:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_SessionCurrent_$13604_storage_$","typeString":"mapping(address => struct LibSession.SessionCurrent)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":13631,"nodeType":"UserDefinedTypeName","pathNode":{"id":13630,"name":"SessionCurrent","nameLocations":["1209:14:37"],"nodeType":"IdentifierPath","referencedDeclaration":13604,"src":"1209:14:37"},"referencedDeclaration":13604,"src":"1209:14:37","typeDescriptions":{"typeIdentifier":"t_struct$_SessionCurrent_$13604_storage_ptr","typeString":"struct LibSession.SessionCurrent"}}},"visibility":"internal"}],"name":"StorageSession","nameLocation":"888:14:37","nodeType":"StructDefinition","scope":14179,"src":"881:405:37","visibility":"public"},{"body":{"id":13645,"nodeType":"Block","src":"1396:120:37","statements":[{"assignments":[13641],"declarations":[{"constant":false,"id":13641,"mutability":"mutable","name":"position","nameLocation":"1414:8:37","nodeType":"VariableDeclaration","scope":13645,"src":"1406:16:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13640,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1406:7:37","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":13643,"initialValue":{"id":13642,"name":"STORAGE_POSITION_SESSION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13598,"src":"1425:24:37","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"1406:43:37"},{"AST":{"nodeType":"YulBlock","src":"1468:42:37","statements":[{"nodeType":"YulAssignment","src":"1482:18:37","value":{"name":"position","nodeType":"YulIdentifier","src":"1492:8:37"},"variableNames":[{"name":"s.slot","nodeType":"YulIdentifier","src":"1482:6:37"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":13641,"isOffset":false,"isSlot":false,"src":"1492:8:37","valueSize":1},{"declaration":13638,"isOffset":false,"isSlot":true,"src":"1482:6:37","suffix":"slot","valueSize":1}],"id":13644,"nodeType":"InlineAssembly","src":"1459:51:37"}]},"id":13646,"implemented":true,"kind":"function","modifiers":[],"name":"_storageSession","nameLocation":"1301:15:37","nodeType":"FunctionDefinition","parameters":{"id":13635,"nodeType":"ParameterList","parameters":[],"src":"1316:2:37"},"returnParameters":{"id":13639,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13638,"mutability":"mutable","name":"s","nameLocation":"1389:1:37","nodeType":"VariableDeclaration","scope":13646,"src":"1366:24:37","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$13634_storage_ptr","typeString":"struct LibSession.StorageSession"},"typeName":{"id":13637,"nodeType":"UserDefinedTypeName","pathNode":{"id":13636,"name":"StorageSession","nameLocations":["1366:14:37"],"nodeType":"IdentifierPath","referencedDeclaration":13634,"src":"1366:14:37"},"referencedDeclaration":13634,"src":"1366:14:37","typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$13634_storage_ptr","typeString":"struct LibSession.StorageSession"}},"visibility":"internal"}],"src":"1365:26:37"},"scope":14179,"src":"1292:224:37","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":13761,"nodeType":"Block","src":"2167:1016:37","statements":[{"assignments":[13658],"declarations":[{"constant":false,"id":13658,"mutability":"mutable","name":"sSession","nameLocation":"2200:8:37","nodeType":"VariableDeclaration","scope":13761,"src":"2177:31:37","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$13634_storage_ptr","typeString":"struct LibSession.StorageSession"},"typeName":{"id":13657,"nodeType":"UserDefinedTypeName","pathNode":{"id":13656,"name":"StorageSession","nameLocations":["2177:14:37"],"nodeType":"IdentifierPath","referencedDeclaration":13634,"src":"2177:14:37"},"referencedDeclaration":13634,"src":"2177:14:37","typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$13634_storage_ptr","typeString":"struct LibSession.StorageSession"}},"visibility":"internal"}],"id":13661,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":13659,"name":"_storageSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13646,"src":"2211:15:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageSession_$13634_storage_ptr_$","typeString":"function () pure returns (struct LibSession.StorageSession storage pointer)"}},"id":13660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2211:17:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$13634_storage_ptr","typeString":"struct LibSession.StorageSession storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2177:51:37"},{"assignments":[13663],"declarations":[{"constant":false,"id":13663,"mutability":"mutable","name":"newNonce","nameLocation":"2246:8:37","nodeType":"VariableDeclaration","scope":13761,"src":"2238:16:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13662,"name":"uint256","nodeType":"ElementaryTypeName","src":"2238:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13669,"initialValue":{"arguments":[{"expression":{"id":13665,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2270:3:37","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2274:6:37","memberName":"sender","nodeType":"MemberAccess","src":"2270:10:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13667,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13649,"src":"2282:11:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":13664,"name":"_getNewNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13956,"src":"2257:12:37","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":13668,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2257:37:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2238:56:37"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13687,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13670,"name":"newNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13663,"src":"2322:8:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":13671,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2333:1:37","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2322:12:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"id":13673,"name":"sSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13658,"src":"2350:8:37","typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$13634_storage_ptr","typeString":"struct LibSession.StorageSession storage pointer"}},"id":13674,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2372:13:37","memberName":"sessionRecord","nodeType":"MemberAccess","referencedDeclaration":13628,"src":"2350:35:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_SessionRecord_$13613_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibSession.SessionRecord storage ref)))"}},"id":13677,"indexExpression":{"expression":{"id":13675,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2386:3:37","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2390:6:37","memberName":"sender","nodeType":"MemberAccess","src":"2386:10:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2350:47:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_SessionRecord_$13613_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibSession.SessionRecord storage ref))"}},"id":13679,"indexExpression":{"id":13678,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13649,"src":"2398:11:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2350:60:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_SessionRecord_$13613_storage_$","typeString":"mapping(uint256 => struct LibSession.SessionRecord storage ref)"}},"id":13683,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13682,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13680,"name":"newNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13663,"src":"2411:8:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":13681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2422:1:37","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2411:12:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2350:74:37","typeDescriptions":{"typeIdentifier":"t_struct$_SessionRecord_$13613_storage","typeString":"struct LibSession.SessionRecord storage ref"}},"id":13684,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2442:13:37","memberName":"timestampStop","nodeType":"MemberAccess","referencedDeclaration":13612,"src":"2350:105:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":13685,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2471:1:37","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2350:122:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2322:150:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13691,"nodeType":"IfStatement","src":"2305:211:37","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":13688,"name":"PreviousSessionStillLive","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13585,"src":"2490:24:37","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":13689,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2490:26:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13690,"nodeType":"RevertStatement","src":"2483:33:37"}},{"expression":{"arguments":[{"id":13695,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13649,"src":"2556:11:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":13692,"name":"LibFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13572,"src":"2527:7:37","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibFlow_$13572_$","typeString":"type(library LibFlow)"}},"id":13694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2535:20:37","memberName":"_requireNoActiveFlow","nodeType":"MemberAccess","referencedDeclaration":12763,"src":"2527:28:37","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":13696,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2527:41:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13697,"nodeType":"ExpressionStatement","src":"2527:41:37"},{"assignments":[13699],"declarations":[{"constant":false,"id":13699,"mutability":"mutable","name":"effectiveFlowRate","nameLocation":"2585:17:37","nodeType":"VariableDeclaration","scope":13761,"src":"2579:23:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":13698,"name":"int96","nodeType":"ElementaryTypeName","src":"2579:5:37","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"id":13706,"initialValue":{"arguments":[{"expression":{"id":13701,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2640:3:37","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2644:6:37","memberName":"sender","nodeType":"MemberAccess","src":"2640:10:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13703,"name":"_flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13651,"src":"2664:9:37","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"id":13704,"name":"_tag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13653,"src":"2687:4:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13700,"name":"_getEffectiveFlowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13938,"src":"2605:21:37","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint96_$_t_uint256_$returns$_t_int96_$","typeString":"function (address,uint96,uint256) view returns (int96)"}},"id":13705,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2605:96:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"VariableDeclarationStatement","src":"2579:122:37"},{"expression":{"id":13719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"id":13707,"name":"sSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13658,"src":"2751:8:37","typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$13634_storage_ptr","typeString":"struct LibSession.StorageSession storage pointer"}},"id":13713,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2769:13:37","memberName":"sessionRecord","nodeType":"MemberAccess","referencedDeclaration":13628,"src":"2751:31:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_SessionRecord_$13613_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibSession.SessionRecord storage ref)))"}},"id":13714,"indexExpression":{"expression":{"id":13709,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2783:3:37","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13710,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2787:6:37","memberName":"sender","nodeType":"MemberAccess","src":"2783:10:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2751:43:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_SessionRecord_$13613_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibSession.SessionRecord storage ref))"}},"id":13715,"indexExpression":{"id":13711,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13649,"src":"2795:11:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2751:56:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_SessionRecord_$13613_storage_$","typeString":"mapping(uint256 => struct LibSession.SessionRecord storage ref)"}},"id":13716,"indexExpression":{"id":13712,"name":"newNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13663,"src":"2808:8:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2751:66:37","typeDescriptions":{"typeIdentifier":"t_struct$_SessionRecord_$13613_storage","typeString":"struct LibSession.SessionRecord storage ref"}},"id":13717,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2831:17:37","memberName":"effectiveFlowRate","nodeType":"MemberAccess","referencedDeclaration":13606,"src":"2751:97:37","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":13718,"name":"effectiveFlowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13699,"src":"2851:17:37","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"src":"2751:117:37","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"id":13720,"nodeType":"ExpressionStatement","src":"2751:117:37"},{"expression":{"id":13733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"id":13721,"name":"sSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13658,"src":"2878:8:37","typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$13634_storage_ptr","typeString":"struct LibSession.StorageSession storage pointer"}},"id":13727,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2896:13:37","memberName":"sessionRecord","nodeType":"MemberAccess","referencedDeclaration":13628,"src":"2878:31:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_SessionRecord_$13613_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibSession.SessionRecord storage ref)))"}},"id":13728,"indexExpression":{"expression":{"id":13723,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2910:3:37","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2914:6:37","memberName":"sender","nodeType":"MemberAccess","src":"2910:10:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2878:43:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_SessionRecord_$13613_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibSession.SessionRecord storage ref))"}},"id":13729,"indexExpression":{"id":13725,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13649,"src":"2922:11:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2878:56:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_SessionRecord_$13613_storage_$","typeString":"mapping(uint256 => struct LibSession.SessionRecord storage ref)"}},"id":13730,"indexExpression":{"id":13726,"name":"newNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13663,"src":"2935:8:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2878:66:37","typeDescriptions":{"typeIdentifier":"t_struct$_SessionRecord_$13613_storage","typeString":"struct LibSession.SessionRecord storage ref"}},"id":13731,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2945:8:37","memberName":"flowRate","nodeType":"MemberAccess","referencedDeclaration":13608,"src":"2878:75:37","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":13732,"name":"_flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13651,"src":"2956:9:37","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"2878:87:37","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"id":13734,"nodeType":"ExpressionStatement","src":"2878:87:37"},{"expression":{"id":13748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"id":13735,"name":"sSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13658,"src":"2975:8:37","typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$13634_storage_ptr","typeString":"struct LibSession.StorageSession storage pointer"}},"id":13741,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2993:13:37","memberName":"sessionRecord","nodeType":"MemberAccess","referencedDeclaration":13628,"src":"2975:31:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_SessionRecord_$13613_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibSession.SessionRecord storage ref)))"}},"id":13742,"indexExpression":{"expression":{"id":13737,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3007:3:37","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3011:6:37","memberName":"sender","nodeType":"MemberAccess","src":"3007:10:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2975:43:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_SessionRecord_$13613_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibSession.SessionRecord storage ref))"}},"id":13743,"indexExpression":{"id":13739,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13649,"src":"3019:11:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2975:56:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_SessionRecord_$13613_storage_$","typeString":"mapping(uint256 => struct LibSession.SessionRecord storage ref)"}},"id":13744,"indexExpression":{"id":13740,"name":"newNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13663,"src":"3032:8:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2975:66:37","typeDescriptions":{"typeIdentifier":"t_struct$_SessionRecord_$13613_storage","typeString":"struct LibSession.SessionRecord storage ref"}},"id":13745,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3042:14:37","memberName":"timestampStart","nodeType":"MemberAccess","referencedDeclaration":13610,"src":"2975:81:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":13746,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"3059:5:37","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":13747,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3078:9:37","memberName":"timestamp","nodeType":"MemberAccess","src":"3059:28:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2975:112:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13749,"nodeType":"ExpressionStatement","src":"2975:112:37"},{"expression":{"id":13759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13750,"name":"_storageSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13646,"src":"3116:15:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageSession_$13634_storage_ptr_$","typeString":"function () pure returns (struct LibSession.StorageSession storage pointer)"}},"id":13751,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3116:17:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$13634_storage_ptr","typeString":"struct LibSession.StorageSession storage pointer"}},"id":13752,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3134:12:37","memberName":"sessionNonce","nodeType":"MemberAccess","referencedDeclaration":13619,"src":"3116:30:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":13755,"indexExpression":{"expression":{"id":13753,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3147:3:37","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3151:6:37","memberName":"sender","nodeType":"MemberAccess","src":"3147:10:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3116:42:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":13757,"indexExpression":{"id":13756,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13649,"src":"3159:11:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3116:55:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":13758,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3175:1:37","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3116:60:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13760,"nodeType":"ExpressionStatement","src":"3116:60:37"}]},"documentation":{"id":13647,"nodeType":"StructuredDocumentation","src":"1606:441:37","text":" startSession helps with\n 1. ensures only one supertoken session per broadcaster is open\n (may have multiple sessionRecord but at different supertokens).\n 2. to verify if different supertoken session belongs to the same \"livestream\",\n for every supertoken latest nonce, `timestampStart` must equal `currentTimestamp`,\n and currentTimestamp != 0. Do check externally (frontend/backend)"},"id":13762,"implemented":true,"kind":"function","modifiers":[],"name":"_startSession","nameLocation":"2061:13:37","nodeType":"FunctionDefinition","parameters":{"id":13654,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13649,"mutability":"mutable","name":"_superToken","nameLocation":"2092:11:37","nodeType":"VariableDeclaration","scope":13762,"src":"2084:19:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13648,"name":"address","nodeType":"ElementaryTypeName","src":"2084:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13651,"mutability":"mutable","name":"_flowRate","nameLocation":"2120:9:37","nodeType":"VariableDeclaration","scope":13762,"src":"2113:16:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":13650,"name":"uint96","nodeType":"ElementaryTypeName","src":"2113:6:37","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":13653,"mutability":"mutable","name":"_tag","nameLocation":"2147:4:37","nodeType":"VariableDeclaration","scope":13762,"src":"2139:12:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13652,"name":"uint256","nodeType":"ElementaryTypeName","src":"2139:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2074:83:37"},"returnParameters":{"id":13655,"nodeType":"ParameterList","parameters":[],"src":"2167:0:37"},"scope":14179,"src":"2052:1131:37","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":13858,"nodeType":"Block","src":"3363:815:37","statements":[{"assignments":[13768],"declarations":[{"constant":false,"id":13768,"mutability":"mutable","name":"activeNonce","nameLocation":"3381:11:37","nodeType":"VariableDeclaration","scope":13858,"src":"3373:19:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13767,"name":"uint256","nodeType":"ElementaryTypeName","src":"3373:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13774,"initialValue":{"arguments":[{"expression":{"id":13770,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3412:3:37","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3416:6:37","memberName":"sender","nodeType":"MemberAccess","src":"3412:10:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13772,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13764,"src":"3424:11:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":13769,"name":"_getCurrentNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13985,"src":"3395:16:37","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":13773,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3395:41:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3373:63:37"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13787,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13775,"name":"_storageSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13646,"src":"3463:15:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageSession_$13634_storage_ptr_$","typeString":"function () pure returns (struct LibSession.StorageSession storage pointer)"}},"id":13776,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3463:17:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$13634_storage_ptr","typeString":"struct LibSession.StorageSession storage pointer"}},"id":13777,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3494:13:37","memberName":"sessionRecord","nodeType":"MemberAccess","referencedDeclaration":13628,"src":"3463:44:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_SessionRecord_$13613_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibSession.SessionRecord storage ref)))"}},"id":13780,"indexExpression":{"expression":{"id":13778,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3508:3:37","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3512:6:37","memberName":"sender","nodeType":"MemberAccess","src":"3508:10:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3463:56:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_SessionRecord_$13613_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibSession.SessionRecord storage ref))"}},"id":13782,"indexExpression":{"id":13781,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13764,"src":"3520:11:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3463:69:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_SessionRecord_$13613_storage_$","typeString":"mapping(uint256 => struct LibSession.SessionRecord storage ref)"}},"id":13784,"indexExpression":{"id":13783,"name":"activeNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13768,"src":"3533:11:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3463:82:37","typeDescriptions":{"typeIdentifier":"t_struct$_SessionRecord_$13613_storage","typeString":"struct LibSession.SessionRecord storage ref"}},"id":13785,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3563:14:37","memberName":"timestampStart","nodeType":"MemberAccess","referencedDeclaration":13610,"src":"3463:114:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":13786,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3581:1:37","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3463:119:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13791,"nodeType":"IfStatement","src":"3446:173:37","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":13788,"name":"SessionNotStarted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13587,"src":"3600:17:37","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":13789,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3600:19:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13790,"nodeType":"RevertStatement","src":"3593:26:37"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13792,"name":"_storageSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13646,"src":"3646:15:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageSession_$13634_storage_ptr_$","typeString":"function () pure returns (struct LibSession.StorageSession storage pointer)"}},"id":13793,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3646:17:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$13634_storage_ptr","typeString":"struct LibSession.StorageSession storage pointer"}},"id":13794,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3677:13:37","memberName":"sessionRecord","nodeType":"MemberAccess","referencedDeclaration":13628,"src":"3646:44:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_SessionRecord_$13613_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibSession.SessionRecord storage ref)))"}},"id":13797,"indexExpression":{"expression":{"id":13795,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3691:3:37","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13796,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3695:6:37","memberName":"sender","nodeType":"MemberAccess","src":"3691:10:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3646:56:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_SessionRecord_$13613_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibSession.SessionRecord storage ref))"}},"id":13799,"indexExpression":{"id":13798,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13764,"src":"3703:11:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3646:69:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_SessionRecord_$13613_storage_$","typeString":"mapping(uint256 => struct LibSession.SessionRecord storage ref)"}},"id":13801,"indexExpression":{"id":13800,"name":"activeNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13768,"src":"3716:11:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3646:82:37","typeDescriptions":{"typeIdentifier":"t_struct$_SessionRecord_$13613_storage","typeString":"struct LibSession.SessionRecord storage ref"}},"id":13802,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3746:13:37","memberName":"timestampStop","nodeType":"MemberAccess","referencedDeclaration":13612,"src":"3646:113:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":13803,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3763:1:37","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3646:118:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13808,"nodeType":"IfStatement","src":"3629:174:37","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":13805,"name":"SessionAlreadyEnded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13589,"src":"3782:19:37","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":13806,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3782:21:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13807,"nodeType":"RevertStatement","src":"3775:28:37"}},{"assignments":[13811],"declarations":[{"constant":false,"id":13811,"mutability":"mutable","name":"iSuperToken","nameLocation":"3826:11:37","nodeType":"VariableDeclaration","scope":13858,"src":"3814:23:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"},"typeName":{"id":13810,"nodeType":"UserDefinedTypeName","pathNode":{"id":13809,"name":"ISuperToken","nameLocations":["3814:11:37"],"nodeType":"IdentifierPath","referencedDeclaration":6947,"src":"3814:11:37"},"referencedDeclaration":6947,"src":"3814:11:37","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"visibility":"internal"}],"id":13815,"initialValue":{"arguments":[{"id":13813,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13764,"src":"3852:11:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13812,"name":"ISuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6947,"src":"3840:11:37","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISuperToken_$6947_$","typeString":"type(contract ISuperToken)"}},"id":13814,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3840:24:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"nodeType":"VariableDeclarationStatement","src":"3814:50:37"},{"assignments":[13817],"declarations":[{"constant":false,"id":13817,"mutability":"mutable","name":"flowRate","nameLocation":"3880:8:37","nodeType":"VariableDeclaration","scope":13858,"src":"3874:14:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":13816,"name":"int96","nodeType":"ElementaryTypeName","src":"3874:5:37","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"id":13827,"initialValue":{"arguments":[{"arguments":[{"id":13822,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3923:4:37","typeDescriptions":{"typeIdentifier":"t_contract$_LibSession_$14179","typeString":"library LibSession"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LibSession_$14179","typeString":"library LibSession"}],"id":13821,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3915:7:37","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13820,"name":"address","nodeType":"ElementaryTypeName","src":"3915:7:37","typeDescriptions":{}}},"id":13823,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3915:13:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":13824,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3930:3:37","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3934:6:37","memberName":"sender","nodeType":"MemberAccess","src":"3930:10:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":13818,"name":"iSuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13811,"src":"3891:11:37","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"id":13819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3903:11:37","memberName":"getFlowRate","nodeType":"MemberAccess","referencedDeclaration":3206,"src":"3891:23:37","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_ISuperToken_$6947_$_t_address_$_t_address_$returns$_t_int96_$attached_to$_t_contract$_ISuperToken_$6947_$","typeString":"function (contract ISuperToken,address,address) view returns (int96)"}},"id":13826,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3891:50:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"VariableDeclarationStatement","src":"3874:67:37"},{"condition":{"commonType":{"typeIdentifier":"t_int96","typeString":"int96"},"id":13830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13828,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13817,"src":"3955:8:37","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":13829,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3967:1:37","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3955:13:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13842,"nodeType":"IfStatement","src":"3951:68:37","trueBody":{"expression":{"arguments":[{"arguments":[{"id":13836,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4001:4:37","typeDescriptions":{"typeIdentifier":"t_contract$_LibSession_$14179","typeString":"library LibSession"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LibSession_$14179","typeString":"library LibSession"}],"id":13835,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3993:7:37","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13834,"name":"address","nodeType":"ElementaryTypeName","src":"3993:7:37","typeDescriptions":{}}},"id":13837,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3993:13:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":13838,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4008:3:37","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4012:6:37","memberName":"sender","nodeType":"MemberAccess","src":"4008:10:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":13831,"name":"iSuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13811,"src":"3970:11:37","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$6947","typeString":"contract ISuperToken"}},"id":13833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3982:10:37","memberName":"deleteFlow","nodeType":"MemberAccess","referencedDeclaration":2180,"src":"3970:22:37","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$6947_$_t_address_$_t_address_$returns$_t_bool_$attached_to$_t_contract$_ISuperToken_$6947_$","typeString":"function (contract ISuperToken,address,address) returns (bool)"}},"id":13840,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3970:49:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13841,"nodeType":"ExpressionStatement","src":"3970:49:37"}},{"expression":{"id":13856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13843,"name":"_storageSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13646,"src":"4048:15:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageSession_$13634_storage_ptr_$","typeString":"function () pure returns (struct LibSession.StorageSession storage pointer)"}},"id":13844,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4048:17:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$13634_storage_ptr","typeString":"struct LibSession.StorageSession storage pointer"}},"id":13845,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4075:13:37","memberName":"sessionRecord","nodeType":"MemberAccess","referencedDeclaration":13628,"src":"4048:40:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_SessionRecord_$13613_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibSession.SessionRecord storage ref)))"}},"id":13848,"indexExpression":{"expression":{"id":13846,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4089:3:37","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13847,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4093:6:37","memberName":"sender","nodeType":"MemberAccess","src":"4089:10:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4048:52:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_SessionRecord_$13613_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibSession.SessionRecord storage ref))"}},"id":13850,"indexExpression":{"id":13849,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13764,"src":"4101:11:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4048:65:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_SessionRecord_$13613_storage_$","typeString":"mapping(uint256 => struct LibSession.SessionRecord storage ref)"}},"id":13852,"indexExpression":{"id":13851,"name":"activeNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13768,"src":"4114:11:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4048:78:37","typeDescriptions":{"typeIdentifier":"t_struct$_SessionRecord_$13613_storage","typeString":"struct LibSession.SessionRecord storage ref"}},"id":13853,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4140:13:37","memberName":"timestampStop","nodeType":"MemberAccess","referencedDeclaration":13612,"src":"4048:105:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":13854,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"4156:5:37","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":13855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4162:9:37","memberName":"timestamp","nodeType":"MemberAccess","src":"4156:15:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4048:123:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13857,"nodeType":"ExpressionStatement","src":"4048:123:37"}]},"id":13859,"implemented":true,"kind":"function","modifiers":[],"name":"_stopSession","nameLocation":"3320:12:37","nodeType":"FunctionDefinition","parameters":{"id":13765,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13764,"mutability":"mutable","name":"_superToken","nameLocation":"3341:11:37","nodeType":"VariableDeclaration","scope":13859,"src":"3333:19:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13763,"name":"address","nodeType":"ElementaryTypeName","src":"3333:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3332:21:37"},"returnParameters":{"id":13766,"nodeType":"ParameterList","parameters":[],"src":"3363:0:37"},"scope":14179,"src":"3311:867:37","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":13937,"nodeType":"Block","src":"4499:509:37","statements":[{"assignments":[13871],"declarations":[{"constant":false,"id":13871,"mutability":"mutable","name":"bps","nameLocation":"4516:3:37","nodeType":"VariableDeclaration","scope":13937,"src":"4509:10:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":13870,"name":"uint16","nodeType":"ElementaryTypeName","src":"4509:6:37","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"id":13872,"nodeType":"VariableDeclarationStatement","src":"4509:10:37"},{"assignments":[13874],"declarations":[{"constant":false,"id":13874,"mutability":"mutable","name":"sbps","nameLocation":"4536:4:37","nodeType":"VariableDeclaration","scope":13937,"src":"4529:11:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":13873,"name":"uint16","nodeType":"ElementaryTypeName","src":"4529:6:37","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"id":13881,"initialValue":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":13875,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"4543:10:37","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$12557_$","typeString":"type(library LibControl)"}},"id":13876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4554:15:37","memberName":"_storageControl","nodeType":"MemberAccess","referencedDeclaration":11680,"src":"4543:26:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$11668_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":13877,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4543:28:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":13878,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4572:4:37","memberName":"sbps","nodeType":"MemberAccess","referencedDeclaration":11626,"src":"4543:33:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint16_$","typeString":"mapping(address => uint16)"}},"id":13880,"indexExpression":{"id":13879,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13861,"src":"4577:5:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4543:40:37","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"VariableDeclarationStatement","src":"4529:54:37"},{"condition":{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":13884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13882,"name":"sbps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13874,"src":"4597:4:37","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":13883,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4604:1:37","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4597:8:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":13902,"nodeType":"Block","src":"4648:119:37","statements":[{"condition":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":13890,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"4666:10:37","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$12557_$","typeString":"type(library LibControl)"}},"id":13891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4677:13:37","memberName":"_isBPSEnabled","nodeType":"MemberAccess","referencedDeclaration":12355,"src":"4666:24:37","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":13892,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4666:26:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13901,"nodeType":"IfStatement","src":"4662:94:37","trueBody":{"expression":{"id":13899,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13893,"name":"bps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13871,"src":"4710:3:37","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":13896,"name":"_flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13863,"src":"4740:9:37","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"id":13897,"name":"_tag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13865,"src":"4751:4:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":13894,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"4716:10:37","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$12557_$","typeString":"type(library LibControl)"}},"id":13895,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4727:12:37","memberName":"_getValidBPS","nodeType":"MemberAccess","referencedDeclaration":12400,"src":"4716:23:37","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint96_$_t_uint256_$returns$_t_uint16_$","typeString":"function (uint96,uint256) view returns (uint16)"}},"id":13898,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4716:40:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"4710:46:37","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"id":13900,"nodeType":"ExpressionStatement","src":"4710:46:37"}}]},"id":13903,"nodeType":"IfStatement","src":"4593:174:37","trueBody":{"id":13889,"nodeType":"Block","src":"4607:35:37","statements":[{"expression":{"id":13887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13885,"name":"bps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13871,"src":"4621:3:37","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":13886,"name":"sbps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13874,"src":"4627:4:37","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"4621:10:37","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"id":13888,"nodeType":"ExpressionStatement","src":"4621:10:37"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":13906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13904,"name":"bps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13871,"src":"4781:3:37","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":13905,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4788:1:37","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4781:8:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":13935,"nodeType":"Block","src":"4845:157:37","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint96","typeString":"uint96"},"id":13919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint96","typeString":"uint96"},"id":13915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13913,"name":"_flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13863,"src":"4864:9:37","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":13914,"name":"bps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13871,"src":"4876:3:37","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"4864:15:37","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"id":13916,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4863:17:37","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":13917,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"4883:10:37","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$12557_$","typeString":"type(library LibControl)"}},"id":13918,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4894:6:37","memberName":"bpsMax","nodeType":"MemberAccess","referencedDeclaration":11610,"src":"4883:17:37","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"4863:37:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13923,"nodeType":"IfStatement","src":"4859:67:37","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":13920,"name":"InvalidFlowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11589,"src":"4909:15:37","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":13921,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4909:17:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13922,"nodeType":"RevertStatement","src":"4902:24:37"}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint96","typeString":"uint96"},"id":13932,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint96","typeString":"uint96"},"id":13928,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13926,"name":"_flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13863,"src":"4954:9:37","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":13927,"name":"bps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13871,"src":"4966:3:37","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"4954:15:37","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"id":13929,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4953:17:37","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"expression":{"id":13930,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"4973:10:37","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$12557_$","typeString":"type(library LibControl)"}},"id":13931,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4984:6:37","memberName":"bpsMax","nodeType":"MemberAccess","referencedDeclaration":11610,"src":"4973:17:37","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"4953:37:37","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":13925,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4947:5:37","typeDescriptions":{"typeIdentifier":"t_type$_t_int96_$","typeString":"type(int96)"},"typeName":{"id":13924,"name":"int96","nodeType":"ElementaryTypeName","src":"4947:5:37","typeDescriptions":{}}},"id":13933,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4947:44:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"functionReturnParameters":13869,"id":13934,"nodeType":"Return","src":"4940:51:37"}]},"id":13936,"nodeType":"IfStatement","src":"4777:225:37","trueBody":{"id":13912,"nodeType":"Block","src":"4791:48:37","statements":[{"expression":{"arguments":[{"id":13909,"name":"_flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13863,"src":"4818:9:37","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":13908,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4812:5:37","typeDescriptions":{"typeIdentifier":"t_type$_t_int96_$","typeString":"type(int96)"},"typeName":{"id":13907,"name":"int96","nodeType":"ElementaryTypeName","src":"4812:5:37","typeDescriptions":{}}},"id":13910,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4812:16:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"functionReturnParameters":13869,"id":13911,"nodeType":"Return","src":"4805:23:37"}]}}]},"id":13938,"implemented":true,"kind":"function","modifiers":[],"name":"_getEffectiveFlowRate","nameLocation":"4370:21:37","nodeType":"FunctionDefinition","parameters":{"id":13866,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13861,"mutability":"mutable","name":"_user","nameLocation":"4409:5:37","nodeType":"VariableDeclaration","scope":13938,"src":"4401:13:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13860,"name":"address","nodeType":"ElementaryTypeName","src":"4401:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13863,"mutability":"mutable","name":"_flowRate","nameLocation":"4431:9:37","nodeType":"VariableDeclaration","scope":13938,"src":"4424:16:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":13862,"name":"uint96","nodeType":"ElementaryTypeName","src":"4424:6:37","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":13865,"mutability":"mutable","name":"_tag","nameLocation":"4458:4:37","nodeType":"VariableDeclaration","scope":13938,"src":"4450:12:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13864,"name":"uint256","nodeType":"ElementaryTypeName","src":"4450:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4391:77:37"},"returnParameters":{"id":13869,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13868,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13938,"src":"4492:5:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":13867,"name":"int96","nodeType":"ElementaryTypeName","src":"4492:5:37","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"4491:7:37"},"scope":14179,"src":"4361:647:37","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":13955,"nodeType":"Block","src":"5140:74:37","statements":[{"expression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13947,"name":"_storageSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13646,"src":"5157:15:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageSession_$13634_storage_ptr_$","typeString":"function () pure returns (struct LibSession.StorageSession storage pointer)"}},"id":13948,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5157:17:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$13634_storage_ptr","typeString":"struct LibSession.StorageSession storage pointer"}},"id":13949,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5175:12:37","memberName":"sessionNonce","nodeType":"MemberAccess","referencedDeclaration":13619,"src":"5157:30:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":13951,"indexExpression":{"id":13950,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13940,"src":"5188:5:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5157:37:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":13953,"indexExpression":{"id":13952,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13942,"src":"5195:11:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5157:50:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13946,"id":13954,"nodeType":"Return","src":"5150:57:37"}]},"id":13956,"implemented":true,"kind":"function","modifiers":[],"name":"_getNewNonce","nameLocation":"5037:12:37","nodeType":"FunctionDefinition","parameters":{"id":13943,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13940,"mutability":"mutable","name":"_user","nameLocation":"5067:5:37","nodeType":"VariableDeclaration","scope":13956,"src":"5059:13:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13939,"name":"address","nodeType":"ElementaryTypeName","src":"5059:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13942,"mutability":"mutable","name":"_superToken","nameLocation":"5090:11:37","nodeType":"VariableDeclaration","scope":13956,"src":"5082:19:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13941,"name":"address","nodeType":"ElementaryTypeName","src":"5082:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5049:58:37"},"returnParameters":{"id":13946,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13945,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13956,"src":"5131:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13944,"name":"uint256","nodeType":"ElementaryTypeName","src":"5131:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5130:9:37"},"scope":14179,"src":"5028:186:37","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":13984,"nodeType":"Block","src":"5336:126:37","statements":[{"assignments":[13966],"declarations":[{"constant":false,"id":13966,"mutability":"mutable","name":"nonce","nameLocation":"5354:5:37","nodeType":"VariableDeclaration","scope":13984,"src":"5346:13:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13965,"name":"uint256","nodeType":"ElementaryTypeName","src":"5346:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13974,"initialValue":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13967,"name":"_storageSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13646,"src":"5362:15:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageSession_$13634_storage_ptr_$","typeString":"function () pure returns (struct LibSession.StorageSession storage pointer)"}},"id":13968,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5362:17:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$13634_storage_ptr","typeString":"struct LibSession.StorageSession storage pointer"}},"id":13969,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5380:12:37","memberName":"sessionNonce","nodeType":"MemberAccess","referencedDeclaration":13619,"src":"5362:30:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":13971,"indexExpression":{"id":13970,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13958,"src":"5393:5:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5362:37:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":13973,"indexExpression":{"id":13972,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13960,"src":"5400:11:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5362:50:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5346:66:37"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13977,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13975,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13966,"src":"5429:5:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":13976,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5438:1:37","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5429:10:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13981,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13979,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13966,"src":"5446:5:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":13980,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5454:1:37","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5446:9:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"5429:26:37","trueExpression":{"hexValue":"30","id":13978,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5442:1:37","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13964,"id":13983,"nodeType":"Return","src":"5422:33:37"}]},"id":13985,"implemented":true,"kind":"function","modifiers":[],"name":"_getCurrentNonce","nameLocation":"5229:16:37","nodeType":"FunctionDefinition","parameters":{"id":13961,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13958,"mutability":"mutable","name":"_user","nameLocation":"5263:5:37","nodeType":"VariableDeclaration","scope":13985,"src":"5255:13:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13957,"name":"address","nodeType":"ElementaryTypeName","src":"5255:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13960,"mutability":"mutable","name":"_superToken","nameLocation":"5286:11:37","nodeType":"VariableDeclaration","scope":13985,"src":"5278:19:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13959,"name":"address","nodeType":"ElementaryTypeName","src":"5278:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5245:58:37"},"returnParameters":{"id":13964,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13963,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13985,"src":"5327:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13962,"name":"uint256","nodeType":"ElementaryTypeName","src":"5327:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5326:9:37"},"scope":14179,"src":"5220:242:37","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":14009,"nodeType":"Block","src":"5579:162:37","statements":[{"expression":{"components":[{"expression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13995,"name":"_storageSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13646,"src":"5610:15:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageSession_$13634_storage_ptr_$","typeString":"function () pure returns (struct LibSession.StorageSession storage pointer)"}},"id":13996,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5610:17:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$13634_storage_ptr","typeString":"struct LibSession.StorageSession storage pointer"}},"id":13997,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5628:14:37","memberName":"sessionCurrent","nodeType":"MemberAccess","referencedDeclaration":13633,"src":"5610:32:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_SessionCurrent_$13604_storage_$","typeString":"mapping(address => struct LibSession.SessionCurrent storage ref)"}},"id":13999,"indexExpression":{"id":13998,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13987,"src":"5643:5:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5610:39:37","typeDescriptions":{"typeIdentifier":"t_struct$_SessionCurrent_$13604_storage","typeString":"struct LibSession.SessionCurrent storage ref"}},"id":14000,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5650:9:37","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":13600,"src":"5610:49:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":14001,"name":"_storageSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13646,"src":"5673:15:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageSession_$13634_storage_ptr_$","typeString":"function () pure returns (struct LibSession.StorageSession storage pointer)"}},"id":14002,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5673:17:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$13634_storage_ptr","typeString":"struct LibSession.StorageSession storage pointer"}},"id":14003,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5691:14:37","memberName":"sessionCurrent","nodeType":"MemberAccess","referencedDeclaration":13633,"src":"5673:32:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_SessionCurrent_$13604_storage_$","typeString":"mapping(address => struct LibSession.SessionCurrent storage ref)"}},"id":14005,"indexExpression":{"id":14004,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13987,"src":"5706:5:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5673:39:37","typeDescriptions":{"typeIdentifier":"t_struct$_SessionCurrent_$13604_storage","typeString":"struct LibSession.SessionCurrent storage ref"}},"id":14006,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5713:11:37","memberName":"superTokens","nodeType":"MemberAccess","referencedDeclaration":13603,"src":"5673:51:37","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}}],"id":14007,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5596:138:37","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_address_$dyn_storage_$","typeString":"tuple(uint256,address[] storage ref)"}},"functionReturnParameters":13994,"id":14008,"nodeType":"Return","src":"5589:145:37"}]},"id":14010,"implemented":true,"kind":"function","modifiers":[],"name":"_getCurrentSessionData","nameLocation":"5477:22:37","nodeType":"FunctionDefinition","parameters":{"id":13988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13987,"mutability":"mutable","name":"_user","nameLocation":"5517:5:37","nodeType":"VariableDeclaration","scope":14010,"src":"5509:13:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13986,"name":"address","nodeType":"ElementaryTypeName","src":"5509:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5499:29:37"},"returnParameters":{"id":13994,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13990,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14010,"src":"5552:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13989,"name":"uint256","nodeType":"ElementaryTypeName","src":"5552:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13993,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14010,"src":"5561:16:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":13991,"name":"address","nodeType":"ElementaryTypeName","src":"5561:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":13992,"nodeType":"ArrayTypeName","src":"5561:9:37","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"5551:27:37"},"scope":14179,"src":"5468:273:37","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":14069,"nodeType":"Block","src":"5910:434:37","statements":[{"expression":{"components":[{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":14027,"name":"_storageSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13646,"src":"5941:15:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageSession_$13634_storage_ptr_$","typeString":"function () pure returns (struct LibSession.StorageSession storage pointer)"}},"id":14028,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5941:17:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$13634_storage_ptr","typeString":"struct LibSession.StorageSession storage pointer"}},"id":14029,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5972:13:37","memberName":"sessionRecord","nodeType":"MemberAccess","referencedDeclaration":13628,"src":"5941:44:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_SessionRecord_$13613_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibSession.SessionRecord storage ref)))"}},"id":14031,"indexExpression":{"id":14030,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14012,"src":"5986:5:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5941:51:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_SessionRecord_$13613_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibSession.SessionRecord storage ref))"}},"id":14033,"indexExpression":{"id":14032,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14014,"src":"5993:11:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5941:64:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_SessionRecord_$13613_storage_$","typeString":"mapping(uint256 => struct LibSession.SessionRecord storage ref)"}},"id":14035,"indexExpression":{"id":14034,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14016,"src":"6006:6:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5941:72:37","typeDescriptions":{"typeIdentifier":"t_struct$_SessionRecord_$13613_storage","typeString":"struct LibSession.SessionRecord storage ref"}},"id":14036,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6014:17:37","memberName":"effectiveFlowRate","nodeType":"MemberAccess","referencedDeclaration":13606,"src":"5941:90:37","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":14037,"name":"_storageSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13646,"src":"6045:15:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageSession_$13634_storage_ptr_$","typeString":"function () pure returns (struct LibSession.StorageSession storage pointer)"}},"id":14038,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6045:17:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$13634_storage_ptr","typeString":"struct LibSession.StorageSession storage pointer"}},"id":14039,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6076:13:37","memberName":"sessionRecord","nodeType":"MemberAccess","referencedDeclaration":13628,"src":"6045:44:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_SessionRecord_$13613_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibSession.SessionRecord storage ref)))"}},"id":14041,"indexExpression":{"id":14040,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14012,"src":"6090:5:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6045:51:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_SessionRecord_$13613_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibSession.SessionRecord storage ref))"}},"id":14043,"indexExpression":{"id":14042,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14014,"src":"6097:11:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6045:64:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_SessionRecord_$13613_storage_$","typeString":"mapping(uint256 => struct LibSession.SessionRecord storage ref)"}},"id":14045,"indexExpression":{"id":14044,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14016,"src":"6110:6:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6045:72:37","typeDescriptions":{"typeIdentifier":"t_struct$_SessionRecord_$13613_storage","typeString":"struct LibSession.SessionRecord storage ref"}},"id":14046,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6118:8:37","memberName":"flowRate","nodeType":"MemberAccess","referencedDeclaration":13608,"src":"6045:81:37","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":14047,"name":"_storageSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13646,"src":"6140:15:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageSession_$13634_storage_ptr_$","typeString":"function () pure returns (struct LibSession.StorageSession storage pointer)"}},"id":14048,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6140:17:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$13634_storage_ptr","typeString":"struct LibSession.StorageSession storage pointer"}},"id":14049,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6171:13:37","memberName":"sessionRecord","nodeType":"MemberAccess","referencedDeclaration":13628,"src":"6140:44:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_SessionRecord_$13613_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibSession.SessionRecord storage ref)))"}},"id":14051,"indexExpression":{"id":14050,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14012,"src":"6185:5:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6140:51:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_SessionRecord_$13613_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibSession.SessionRecord storage ref))"}},"id":14053,"indexExpression":{"id":14052,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14014,"src":"6192:11:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6140:64:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_SessionRecord_$13613_storage_$","typeString":"mapping(uint256 => struct LibSession.SessionRecord storage ref)"}},"id":14055,"indexExpression":{"id":14054,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14016,"src":"6205:6:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6140:72:37","typeDescriptions":{"typeIdentifier":"t_struct$_SessionRecord_$13613_storage","typeString":"struct LibSession.SessionRecord storage ref"}},"id":14056,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6213:14:37","memberName":"timestampStart","nodeType":"MemberAccess","referencedDeclaration":13610,"src":"6140:87:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":14057,"name":"_storageSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13646,"src":"6241:15:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageSession_$13634_storage_ptr_$","typeString":"function () pure returns (struct LibSession.StorageSession storage pointer)"}},"id":14058,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6241:17:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$13634_storage_ptr","typeString":"struct LibSession.StorageSession storage pointer"}},"id":14059,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6272:13:37","memberName":"sessionRecord","nodeType":"MemberAccess","referencedDeclaration":13628,"src":"6241:44:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_SessionRecord_$13613_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibSession.SessionRecord storage ref)))"}},"id":14061,"indexExpression":{"id":14060,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14012,"src":"6286:5:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6241:51:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_SessionRecord_$13613_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibSession.SessionRecord storage ref))"}},"id":14063,"indexExpression":{"id":14062,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14014,"src":"6293:11:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6241:64:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_SessionRecord_$13613_storage_$","typeString":"mapping(uint256 => struct LibSession.SessionRecord storage ref)"}},"id":14065,"indexExpression":{"id":14064,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14016,"src":"6306:6:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6241:72:37","typeDescriptions":{"typeIdentifier":"t_struct$_SessionRecord_$13613_storage","typeString":"struct LibSession.SessionRecord storage ref"}},"id":14066,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6314:13:37","memberName":"timestampStop","nodeType":"MemberAccess","referencedDeclaration":13612,"src":"6241:86:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":14067,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5927:410:37","typeDescriptions":{"typeIdentifier":"t_tuple$_t_int96_$_t_uint96_$_t_uint256_$_t_uint256_$","typeString":"tuple(int96,uint96,uint256,uint256)"}},"functionReturnParameters":14026,"id":14068,"nodeType":"Return","src":"5920:417:37"}]},"id":14070,"implemented":true,"kind":"function","modifiers":[],"name":"_getSessionData","nameLocation":"5756:15:37","nodeType":"FunctionDefinition","parameters":{"id":14017,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14012,"mutability":"mutable","name":"_user","nameLocation":"5789:5:37","nodeType":"VariableDeclaration","scope":14070,"src":"5781:13:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14011,"name":"address","nodeType":"ElementaryTypeName","src":"5781:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14014,"mutability":"mutable","name":"_superToken","nameLocation":"5812:11:37","nodeType":"VariableDeclaration","scope":14070,"src":"5804:19:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14013,"name":"address","nodeType":"ElementaryTypeName","src":"5804:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14016,"mutability":"mutable","name":"_nonce","nameLocation":"5841:6:37","nodeType":"VariableDeclaration","scope":14070,"src":"5833:14:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14015,"name":"uint256","nodeType":"ElementaryTypeName","src":"5833:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5771:82:37"},"returnParameters":{"id":14026,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14019,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14070,"src":"5877:5:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":14018,"name":"int96","nodeType":"ElementaryTypeName","src":"5877:5:37","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"},{"constant":false,"id":14021,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14070,"src":"5884:6:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":14020,"name":"uint96","nodeType":"ElementaryTypeName","src":"5884:6:37","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":14023,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14070,"src":"5892:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14022,"name":"uint256","nodeType":"ElementaryTypeName","src":"5892:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14025,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14070,"src":"5901:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14024,"name":"uint256","nodeType":"ElementaryTypeName","src":"5901:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5876:33:37"},"scope":14179,"src":"5747:597:37","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":14126,"nodeType":"Block","src":"6521:336:37","statements":[{"assignments":[14091],"declarations":[{"constant":false,"id":14091,"mutability":"mutable","name":"sFlow","nameLocation":"6559:5:37","nodeType":"VariableDeclaration","scope":14126,"src":"6531:33:37","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$12632_storage_ptr","typeString":"struct LibFlow.StorageFlow"},"typeName":{"id":14090,"nodeType":"UserDefinedTypeName","pathNode":{"id":14089,"name":"LibFlow.StorageFlow","nameLocations":["6531:7:37","6539:11:37"],"nodeType":"IdentifierPath","referencedDeclaration":12632,"src":"6531:19:37"},"referencedDeclaration":12632,"src":"6531:19:37","typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$12632_storage_ptr","typeString":"struct LibFlow.StorageFlow"}},"visibility":"internal"}],"id":14095,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14092,"name":"LibFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13572,"src":"6567:7:37","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibFlow_$13572_$","typeString":"type(library LibFlow)"}},"id":14093,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6575:12:37","memberName":"_storageFlow","nodeType":"MemberAccess","referencedDeclaration":12644,"src":"6567:20:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$12632_storage_ptr_$","typeString":"function () pure returns (struct LibFlow.StorageFlow storage pointer)"}},"id":14094,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6567:22:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$12632_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"6531:58:37"},{"assignments":[14097],"declarations":[{"constant":false,"id":14097,"mutability":"mutable","name":"receiver","nameLocation":"6608:8:37","nodeType":"VariableDeclaration","scope":14126,"src":"6600:16:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14096,"name":"address","nodeType":"ElementaryTypeName","src":"6600:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":14107,"initialValue":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"id":14098,"name":"sFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14091,"src":"6619:5:37","typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$12632_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":14099,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6634:10:37","memberName":"flowRecord","nodeType":"MemberAccess","referencedDeclaration":12621,"src":"6619:25:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref)))"}},"id":14101,"indexExpression":{"id":14100,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14072,"src":"6645:5:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6619:32:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref))"}},"id":14103,"indexExpression":{"id":14102,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14074,"src":"6652:11:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6619:45:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$","typeString":"mapping(uint256 => struct LibFlow.FlowRecord storage ref)"}},"id":14105,"indexExpression":{"id":14104,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14076,"src":"6665:6:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6619:53:37","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$12606_storage","typeString":"struct LibFlow.FlowRecord storage ref"}},"id":14106,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6673:8:37","memberName":"receiver","nodeType":"MemberAccess","referencedDeclaration":12595,"src":"6619:62:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6600:81:37"},{"assignments":[14109],"declarations":[{"constant":false,"id":14109,"mutability":"mutable","name":"sessionNonce","nameLocation":"6699:12:37","nodeType":"VariableDeclaration","scope":14126,"src":"6691:20:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14108,"name":"uint256","nodeType":"ElementaryTypeName","src":"6691:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14119,"initialValue":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"id":14110,"name":"sFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14091,"src":"6714:5:37","typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$12632_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":14111,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6729:10:37","memberName":"flowRecord","nodeType":"MemberAccess","referencedDeclaration":12621,"src":"6714:25:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref)))"}},"id":14113,"indexExpression":{"id":14112,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14072,"src":"6740:5:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6714:32:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref))"}},"id":14115,"indexExpression":{"id":14114,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14074,"src":"6747:11:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6714:45:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$12606_storage_$","typeString":"mapping(uint256 => struct LibFlow.FlowRecord storage ref)"}},"id":14117,"indexExpression":{"id":14116,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14076,"src":"6760:6:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6714:53:37","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$12606_storage","typeString":"struct LibFlow.FlowRecord storage ref"}},"id":14118,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6768:12:37","memberName":"sessionNonce","nodeType":"MemberAccess","referencedDeclaration":12597,"src":"6714:66:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6691:89:37"},{"expression":{"arguments":[{"id":14121,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14097,"src":"6814:8:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14122,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14074,"src":"6824:11:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14123,"name":"sessionNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14109,"src":"6837:12:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14120,"name":"_getSessionData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14070,"src":"6798:15:37","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_int96_$_t_uint96_$_t_uint256_$_t_uint256_$","typeString":"function (address,address,uint256) view returns (int96,uint96,uint256,uint256)"}},"id":14124,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6798:52:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int96_$_t_uint96_$_t_uint256_$_t_uint256_$","typeString":"tuple(int96,uint96,uint256,uint256)"}},"functionReturnParameters":14086,"id":14125,"nodeType":"Return","src":"6791:59:37"}]},"id":14127,"implemented":true,"kind":"function","modifiers":[],"name":"_getSessionDataFromFlow","nameLocation":"6359:23:37","nodeType":"FunctionDefinition","parameters":{"id":14077,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14072,"mutability":"mutable","name":"_user","nameLocation":"6400:5:37","nodeType":"VariableDeclaration","scope":14127,"src":"6392:13:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14071,"name":"address","nodeType":"ElementaryTypeName","src":"6392:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14074,"mutability":"mutable","name":"_superToken","nameLocation":"6423:11:37","nodeType":"VariableDeclaration","scope":14127,"src":"6415:19:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14073,"name":"address","nodeType":"ElementaryTypeName","src":"6415:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14076,"mutability":"mutable","name":"_nonce","nameLocation":"6452:6:37","nodeType":"VariableDeclaration","scope":14127,"src":"6444:14:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14075,"name":"uint256","nodeType":"ElementaryTypeName","src":"6444:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6382:82:37"},"returnParameters":{"id":14086,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14079,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14127,"src":"6488:5:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":14078,"name":"int96","nodeType":"ElementaryTypeName","src":"6488:5:37","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"},{"constant":false,"id":14081,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14127,"src":"6495:6:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":14080,"name":"uint96","nodeType":"ElementaryTypeName","src":"6495:6:37","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":14083,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14127,"src":"6503:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14082,"name":"uint256","nodeType":"ElementaryTypeName","src":"6503:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14085,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14127,"src":"6512:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14084,"name":"uint256","nodeType":"ElementaryTypeName","src":"6512:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6487:33:37"},"scope":14179,"src":"6350:507:37","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":14177,"nodeType":"Block","src":"7014:353:37","statements":[{"assignments":[14146],"declarations":[{"constant":false,"id":14146,"mutability":"mutable","name":"sControl","nameLocation":"7058:8:37","nodeType":"VariableDeclaration","scope":14177,"src":"7024:42:37","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl"},"typeName":{"id":14145,"nodeType":"UserDefinedTypeName","pathNode":{"id":14144,"name":"LibControl.StorageControl","nameLocations":["7024:10:37","7035:14:37"],"nodeType":"IdentifierPath","referencedDeclaration":11668,"src":"7024:25:37"},"referencedDeclaration":11668,"src":"7024:25:37","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl"}},"visibility":"internal"}],"id":14150,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14147,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"7069:10:37","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$12557_$","typeString":"type(library LibControl)"}},"id":14148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7093:15:37","memberName":"_storageControl","nodeType":"MemberAccess","referencedDeclaration":11680,"src":"7069:39:37","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$11668_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":14149,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7069:41:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"7024:86:37"},{"assignments":[14152],"declarations":[{"constant":false,"id":14152,"mutability":"mutable","name":"receiver","nameLocation":"7129:8:37","nodeType":"VariableDeclaration","scope":14177,"src":"7121:16:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14151,"name":"address","nodeType":"ElementaryTypeName","src":"7121:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":14160,"initialValue":{"expression":{"baseExpression":{"baseExpression":{"expression":{"id":14153,"name":"sControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14146,"src":"7140:8:37","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":14154,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7149:13:37","memberName":"controlRecord","nodeType":"MemberAccess","referencedDeclaration":11653,"src":"7140:22:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_ControlRecord_$11619_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibControl.ControlRecord storage ref))"}},"id":14156,"indexExpression":{"id":14155,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14129,"src":"7163:11:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7140:35:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ControlRecord_$11619_storage_$","typeString":"mapping(uint256 => struct LibControl.ControlRecord storage ref)"}},"id":14158,"indexExpression":{"id":14157,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14131,"src":"7176:6:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7140:43:37","typeDescriptions":{"typeIdentifier":"t_struct$_ControlRecord_$11619_storage","typeString":"struct LibControl.ControlRecord storage ref"}},"id":14159,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7184:8:37","memberName":"receiver","nodeType":"MemberAccess","referencedDeclaration":11612,"src":"7140:52:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"7121:71:37"},{"assignments":[14162],"declarations":[{"constant":false,"id":14162,"mutability":"mutable","name":"sessionNonce","nameLocation":"7210:12:37","nodeType":"VariableDeclaration","scope":14177,"src":"7202:20:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14161,"name":"uint256","nodeType":"ElementaryTypeName","src":"7202:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14170,"initialValue":{"expression":{"baseExpression":{"baseExpression":{"expression":{"id":14163,"name":"sControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14146,"src":"7225:8:37","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$11668_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":14164,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7243:13:37","memberName":"controlRecord","nodeType":"MemberAccess","referencedDeclaration":11653,"src":"7225:31:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_ControlRecord_$11619_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibControl.ControlRecord storage ref))"}},"id":14166,"indexExpression":{"id":14165,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14129,"src":"7257:11:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7225:44:37","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ControlRecord_$11619_storage_$","typeString":"mapping(uint256 => struct LibControl.ControlRecord storage ref)"}},"id":14168,"indexExpression":{"id":14167,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14131,"src":"7270:6:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7225:52:37","typeDescriptions":{"typeIdentifier":"t_struct$_ControlRecord_$11619_storage","typeString":"struct LibControl.ControlRecord storage ref"}},"id":14169,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7278:12:37","memberName":"sessionNonce","nodeType":"MemberAccess","referencedDeclaration":11614,"src":"7225:65:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7202:88:37"},{"expression":{"arguments":[{"id":14172,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14152,"src":"7324:8:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14173,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14129,"src":"7334:11:37","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14174,"name":"sessionNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14162,"src":"7347:12:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14171,"name":"_getSessionData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14070,"src":"7308:15:37","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_int96_$_t_uint96_$_t_uint256_$_t_uint256_$","typeString":"function (address,address,uint256) view returns (int96,uint96,uint256,uint256)"}},"id":14175,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7308:52:37","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int96_$_t_uint96_$_t_uint256_$_t_uint256_$","typeString":"tuple(int96,uint96,uint256,uint256)"}},"functionReturnParameters":14141,"id":14176,"nodeType":"Return","src":"7301:59:37"}]},"id":14178,"implemented":true,"kind":"function","modifiers":[],"name":"_getSessionDataFromControl","nameLocation":"6872:26:37","nodeType":"FunctionDefinition","parameters":{"id":14132,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14129,"mutability":"mutable","name":"_superToken","nameLocation":"6916:11:37","nodeType":"VariableDeclaration","scope":14178,"src":"6908:19:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14128,"name":"address","nodeType":"ElementaryTypeName","src":"6908:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14131,"mutability":"mutable","name":"_nonce","nameLocation":"6945:6:37","nodeType":"VariableDeclaration","scope":14178,"src":"6937:14:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14130,"name":"uint256","nodeType":"ElementaryTypeName","src":"6937:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6898:59:37"},"returnParameters":{"id":14141,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14134,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14178,"src":"6981:5:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":14133,"name":"int96","nodeType":"ElementaryTypeName","src":"6981:5:37","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"},{"constant":false,"id":14136,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14178,"src":"6988:6:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":14135,"name":"uint96","nodeType":"ElementaryTypeName","src":"6988:6:37","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":14138,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14178,"src":"6996:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14137,"name":"uint256","nodeType":"ElementaryTypeName","src":"6996:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14140,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14178,"src":"7005:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14139,"name":"uint256","nodeType":"ElementaryTypeName","src":"7005:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6980:33:37"},"scope":14179,"src":"6863:504:37","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":14180,"src":"486:6925:37","usedErrors":[]}],"src":"36:7376:37"},"id":37},"contracts/libraries/utils/IterableMappingBPS.sol":{"ast":{"absolutePath":"contracts/libraries/utils/IterableMappingBPS.sol","exportedSymbols":{"BasisPointsRange":[14188],"IterableMappingBPS":[14434]},"id":14435,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":14181,"literals":["solidity","^","0.8",".17"],"nodeType":"PragmaDirective","src":"32:24:38"},{"canonicalName":"BasisPointsRange","id":14188,"members":[{"constant":false,"id":14183,"mutability":"mutable","name":"bps","nameLocation":"95:3:38","nodeType":"VariableDeclaration","scope":14188,"src":"88:10:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":14182,"name":"uint16","nodeType":"ElementaryTypeName","src":"88:6:38","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":14185,"mutability":"mutable","name":"flowRateLowerBound","nameLocation":"151:18:38","nodeType":"VariableDeclaration","scope":14188,"src":"144:25:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":14184,"name":"uint96","nodeType":"ElementaryTypeName","src":"144:6:38","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":14187,"mutability":"mutable","name":"flowRateUpperBound","nameLocation":"182:18:38","nodeType":"VariableDeclaration","scope":14188,"src":"175:25:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":14186,"name":"uint96","nodeType":"ElementaryTypeName","src":"175:6:38","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"name":"BasisPointsRange","nameLocation":"65:16:38","nodeType":"StructDefinition","scope":14435,"src":"58:145:38","visibility":"public"},{"abstract":false,"baseContracts":[],"canonicalName":"IterableMappingBPS","contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":14434,"linearizedBaseContracts":[14434],"name":"IterableMappingBPS","nameLocation":"213:18:38","nodeType":"ContractDefinition","nodes":[{"canonicalName":"IterableMappingBPS.Map","id":14205,"members":[{"constant":false,"id":14191,"mutability":"mutable","name":"keys","nameLocation":"334:4:38","nodeType":"VariableDeclaration","scope":14205,"src":"324:14:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":14189,"name":"uint256","nodeType":"ElementaryTypeName","src":"324:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14190,"nodeType":"ArrayTypeName","src":"324:9:38","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":14196,"mutability":"mutable","name":"values","nameLocation":"385:6:38","nodeType":"VariableDeclaration","scope":14205,"src":"348:43:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_BasisPointsRange_$14188_storage_$","typeString":"mapping(uint256 => struct BasisPointsRange)"},"typeName":{"id":14195,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":14192,"name":"uint256","nodeType":"ElementaryTypeName","src":"356:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"348:36:38","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_BasisPointsRange_$14188_storage_$","typeString":"mapping(uint256 => struct BasisPointsRange)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":14194,"nodeType":"UserDefinedTypeName","pathNode":{"id":14193,"name":"BasisPointsRange","nameLocations":["367:16:38"],"nodeType":"IdentifierPath","referencedDeclaration":14188,"src":"367:16:38"},"referencedDeclaration":14188,"src":"367:16:38","typeDescriptions":{"typeIdentifier":"t_struct$_BasisPointsRange_$14188_storage_ptr","typeString":"struct BasisPointsRange"}}},"visibility":"internal"},{"constant":false,"id":14200,"mutability":"mutable","name":"indexOf","nameLocation":"429:7:38","nodeType":"VariableDeclaration","scope":14205,"src":"401:35:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"typeName":{"id":14199,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":14197,"name":"uint256","nodeType":"ElementaryTypeName","src":"409:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"401:27:38","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":14198,"name":"uint256","nodeType":"ElementaryTypeName","src":"420:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"},{"constant":false,"id":14204,"mutability":"mutable","name":"inserted","nameLocation":"471:8:38","nodeType":"VariableDeclaration","scope":14205,"src":"446:33:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"typeName":{"id":14203,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":14201,"name":"uint256","nodeType":"ElementaryTypeName","src":"454:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"446:24:38","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":14202,"name":"bool","nodeType":"ElementaryTypeName","src":"465:4:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"internal"}],"name":"Map","nameLocation":"310:3:38","nodeType":"StructDefinition","scope":14434,"src":"303:183:38","visibility":"public"},{"body":{"id":14221,"nodeType":"Block","src":"605:39:38","statements":[{"expression":{"baseExpression":{"expression":{"id":14216,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14208,"src":"622:3:38","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14205_storage_ptr","typeString":"struct IterableMappingBPS.Map storage pointer"}},"id":14217,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"626:6:38","memberName":"values","nodeType":"MemberAccess","referencedDeclaration":14196,"src":"622:10:38","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_BasisPointsRange_$14188_storage_$","typeString":"mapping(uint256 => struct BasisPointsRange storage ref)"}},"id":14219,"indexExpression":{"id":14218,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14210,"src":"633:3:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"622:15:38","typeDescriptions":{"typeIdentifier":"t_struct$_BasisPointsRange_$14188_storage","typeString":"struct BasisPointsRange storage ref"}},"functionReturnParameters":14215,"id":14220,"nodeType":"Return","src":"615:22:38"}]},"id":14222,"implemented":true,"kind":"function","modifiers":[],"name":"get","nameLocation":"501:3:38","nodeType":"FunctionDefinition","parameters":{"id":14211,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14208,"mutability":"mutable","name":"map","nameLocation":"526:3:38","nodeType":"VariableDeclaration","scope":14222,"src":"514:15:38","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14205_storage_ptr","typeString":"struct IterableMappingBPS.Map"},"typeName":{"id":14207,"nodeType":"UserDefinedTypeName","pathNode":{"id":14206,"name":"Map","nameLocations":["514:3:38"],"nodeType":"IdentifierPath","referencedDeclaration":14205,"src":"514:3:38"},"referencedDeclaration":14205,"src":"514:3:38","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14205_storage_ptr","typeString":"struct IterableMappingBPS.Map"}},"visibility":"internal"},{"constant":false,"id":14210,"mutability":"mutable","name":"key","nameLocation":"547:3:38","nodeType":"VariableDeclaration","scope":14222,"src":"539:11:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14209,"name":"uint256","nodeType":"ElementaryTypeName","src":"539:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"504:52:38"},"returnParameters":{"id":14215,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14214,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14222,"src":"580:23:38","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_BasisPointsRange_$14188_memory_ptr","typeString":"struct BasisPointsRange"},"typeName":{"id":14213,"nodeType":"UserDefinedTypeName","pathNode":{"id":14212,"name":"BasisPointsRange","nameLocations":["580:16:38"],"nodeType":"IdentifierPath","referencedDeclaration":14188,"src":"580:16:38"},"referencedDeclaration":14188,"src":"580:16:38","typeDescriptions":{"typeIdentifier":"t_struct$_BasisPointsRange_$14188_storage_ptr","typeString":"struct BasisPointsRange"}},"visibility":"internal"}],"src":"579:25:38"},"scope":14434,"src":"492:152:38","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":14237,"nodeType":"Block","src":"759:39:38","statements":[{"expression":{"baseExpression":{"expression":{"id":14232,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14225,"src":"776:3:38","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14205_storage_ptr","typeString":"struct IterableMappingBPS.Map storage pointer"}},"id":14233,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"780:4:38","memberName":"keys","nodeType":"MemberAccess","referencedDeclaration":14191,"src":"776:8:38","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":14235,"indexExpression":{"id":14234,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14227,"src":"785:5:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"776:15:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":14231,"id":14236,"nodeType":"Return","src":"769:22:38"}]},"id":14238,"implemented":true,"kind":"function","modifiers":[],"name":"getKeyAtIndex","nameLocation":"659:13:38","nodeType":"FunctionDefinition","parameters":{"id":14228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14225,"mutability":"mutable","name":"map","nameLocation":"694:3:38","nodeType":"VariableDeclaration","scope":14238,"src":"682:15:38","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14205_storage_ptr","typeString":"struct IterableMappingBPS.Map"},"typeName":{"id":14224,"nodeType":"UserDefinedTypeName","pathNode":{"id":14223,"name":"Map","nameLocations":["682:3:38"],"nodeType":"IdentifierPath","referencedDeclaration":14205,"src":"682:3:38"},"referencedDeclaration":14205,"src":"682:3:38","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14205_storage_ptr","typeString":"struct IterableMappingBPS.Map"}},"visibility":"internal"},{"constant":false,"id":14227,"mutability":"mutable","name":"index","nameLocation":"715:5:38","nodeType":"VariableDeclaration","scope":14238,"src":"707:13:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14226,"name":"uint256","nodeType":"ElementaryTypeName","src":"707:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"672:54:38"},"returnParameters":{"id":14231,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14230,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14238,"src":"750:7:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14229,"name":"uint256","nodeType":"ElementaryTypeName","src":"750:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"749:9:38"},"scope":14434,"src":"650:148:38","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":14250,"nodeType":"Block","src":"867:39:38","statements":[{"expression":{"expression":{"expression":{"id":14246,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14241,"src":"884:3:38","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14205_storage_ptr","typeString":"struct IterableMappingBPS.Map storage pointer"}},"id":14247,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"888:4:38","memberName":"keys","nodeType":"MemberAccess","referencedDeclaration":14191,"src":"884:8:38","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":14248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"893:6:38","memberName":"length","nodeType":"MemberAccess","src":"884:15:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":14245,"id":14249,"nodeType":"Return","src":"877:22:38"}]},"id":14251,"implemented":true,"kind":"function","modifiers":[],"name":"size","nameLocation":"813:4:38","nodeType":"FunctionDefinition","parameters":{"id":14242,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14241,"mutability":"mutable","name":"map","nameLocation":"830:3:38","nodeType":"VariableDeclaration","scope":14251,"src":"818:15:38","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14205_storage_ptr","typeString":"struct IterableMappingBPS.Map"},"typeName":{"id":14240,"nodeType":"UserDefinedTypeName","pathNode":{"id":14239,"name":"Map","nameLocations":["818:3:38"],"nodeType":"IdentifierPath","referencedDeclaration":14205,"src":"818:3:38"},"referencedDeclaration":14205,"src":"818:3:38","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14205_storage_ptr","typeString":"struct IterableMappingBPS.Map"}},"visibility":"internal"}],"src":"817:17:38"},"returnParameters":{"id":14245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14244,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14251,"src":"858:7:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14243,"name":"uint256","nodeType":"ElementaryTypeName","src":"858:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"857:9:38"},"scope":14434,"src":"804:102:38","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":14352,"nodeType":"Block","src":"1079:547:38","statements":[{"condition":{"baseExpression":{"expression":{"id":14265,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14254,"src":"1093:3:38","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14205_storage_ptr","typeString":"struct IterableMappingBPS.Map storage pointer"}},"id":14266,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1097:8:38","memberName":"inserted","nodeType":"MemberAccess","referencedDeclaration":14204,"src":"1093:12:38","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":14268,"indexExpression":{"id":14267,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14256,"src":"1106:3:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1093:17:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":14350,"nodeType":"Block","src":"1309:311:38","statements":[{"expression":{"id":14303,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":14297,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14254,"src":"1323:3:38","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14205_storage_ptr","typeString":"struct IterableMappingBPS.Map storage pointer"}},"id":14300,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1327:8:38","memberName":"inserted","nodeType":"MemberAccess","referencedDeclaration":14204,"src":"1323:12:38","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":14301,"indexExpression":{"id":14299,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14256,"src":"1336:3:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1323:17:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":14302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1343:4:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"1323:24:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14304,"nodeType":"ExpressionStatement","src":"1323:24:38"},{"expression":{"id":14312,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":14305,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14254,"src":"1362:3:38","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14205_storage_ptr","typeString":"struct IterableMappingBPS.Map storage pointer"}},"id":14308,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1366:6:38","memberName":"values","nodeType":"MemberAccess","referencedDeclaration":14196,"src":"1362:10:38","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_BasisPointsRange_$14188_storage_$","typeString":"mapping(uint256 => struct BasisPointsRange storage ref)"}},"id":14309,"indexExpression":{"id":14307,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14256,"src":"1373:3:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1362:15:38","typeDescriptions":{"typeIdentifier":"t_struct$_BasisPointsRange_$14188_storage","typeString":"struct BasisPointsRange storage ref"}},"id":14310,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1378:3:38","memberName":"bps","nodeType":"MemberAccess","referencedDeclaration":14183,"src":"1362:19:38","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14311,"name":"_bps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14258,"src":"1384:4:38","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"1362:26:38","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"id":14313,"nodeType":"ExpressionStatement","src":"1362:26:38"},{"expression":{"id":14321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":14314,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14254,"src":"1402:3:38","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14205_storage_ptr","typeString":"struct IterableMappingBPS.Map storage pointer"}},"id":14317,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1406:6:38","memberName":"values","nodeType":"MemberAccess","referencedDeclaration":14196,"src":"1402:10:38","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_BasisPointsRange_$14188_storage_$","typeString":"mapping(uint256 => struct BasisPointsRange storage ref)"}},"id":14318,"indexExpression":{"id":14316,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14256,"src":"1413:3:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1402:15:38","typeDescriptions":{"typeIdentifier":"t_struct$_BasisPointsRange_$14188_storage","typeString":"struct BasisPointsRange storage ref"}},"id":14319,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1418:18:38","memberName":"flowRateLowerBound","nodeType":"MemberAccess","referencedDeclaration":14185,"src":"1402:34:38","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14320,"name":"_flowRateLowerBound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14260,"src":"1439:19:38","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"1402:56:38","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"id":14322,"nodeType":"ExpressionStatement","src":"1402:56:38"},{"expression":{"id":14330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":14323,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14254,"src":"1472:3:38","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14205_storage_ptr","typeString":"struct IterableMappingBPS.Map storage pointer"}},"id":14326,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1476:6:38","memberName":"values","nodeType":"MemberAccess","referencedDeclaration":14196,"src":"1472:10:38","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_BasisPointsRange_$14188_storage_$","typeString":"mapping(uint256 => struct BasisPointsRange storage ref)"}},"id":14327,"indexExpression":{"id":14325,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14256,"src":"1483:3:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1472:15:38","typeDescriptions":{"typeIdentifier":"t_struct$_BasisPointsRange_$14188_storage","typeString":"struct BasisPointsRange storage ref"}},"id":14328,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1488:18:38","memberName":"flowRateUpperBound","nodeType":"MemberAccess","referencedDeclaration":14187,"src":"1472:34:38","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14329,"name":"_flowRateUpperBound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14262,"src":"1509:19:38","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"1472:56:38","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"id":14331,"nodeType":"ExpressionStatement","src":"1472:56:38"},{"expression":{"id":14340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":14332,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14254,"src":"1543:3:38","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14205_storage_ptr","typeString":"struct IterableMappingBPS.Map storage pointer"}},"id":14335,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1547:7:38","memberName":"indexOf","nodeType":"MemberAccess","referencedDeclaration":14200,"src":"1543:11:38","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":14336,"indexExpression":{"id":14334,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14256,"src":"1555:3:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1543:16:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":14337,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14254,"src":"1562:3:38","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14205_storage_ptr","typeString":"struct IterableMappingBPS.Map storage pointer"}},"id":14338,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1566:4:38","memberName":"keys","nodeType":"MemberAccess","referencedDeclaration":14191,"src":"1562:8:38","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":14339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1571:6:38","memberName":"length","nodeType":"MemberAccess","src":"1562:15:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1543:34:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14341,"nodeType":"ExpressionStatement","src":"1543:34:38"},{"expression":{"arguments":[{"id":14347,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14256,"src":"1605:3:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":14342,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14254,"src":"1591:3:38","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14205_storage_ptr","typeString":"struct IterableMappingBPS.Map storage pointer"}},"id":14345,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1595:4:38","memberName":"keys","nodeType":"MemberAccess","referencedDeclaration":14191,"src":"1591:8:38","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":14346,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1600:4:38","memberName":"push","nodeType":"MemberAccess","src":"1591:13:38","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$","typeString":"function (uint256[] storage pointer,uint256)"}},"id":14348,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1591:18:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14349,"nodeType":"ExpressionStatement","src":"1591:18:38"}]},"id":14351,"nodeType":"IfStatement","src":"1089:531:38","trueBody":{"id":14296,"nodeType":"Block","src":"1112:191:38","statements":[{"expression":{"id":14276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":14269,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14254,"src":"1126:3:38","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14205_storage_ptr","typeString":"struct IterableMappingBPS.Map storage pointer"}},"id":14272,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1130:6:38","memberName":"values","nodeType":"MemberAccess","referencedDeclaration":14196,"src":"1126:10:38","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_BasisPointsRange_$14188_storage_$","typeString":"mapping(uint256 => struct BasisPointsRange storage ref)"}},"id":14273,"indexExpression":{"id":14271,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14256,"src":"1137:3:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1126:15:38","typeDescriptions":{"typeIdentifier":"t_struct$_BasisPointsRange_$14188_storage","typeString":"struct BasisPointsRange storage ref"}},"id":14274,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1142:3:38","memberName":"bps","nodeType":"MemberAccess","referencedDeclaration":14183,"src":"1126:19:38","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14275,"name":"_bps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14258,"src":"1148:4:38","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"1126:26:38","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"id":14277,"nodeType":"ExpressionStatement","src":"1126:26:38"},{"expression":{"id":14285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":14278,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14254,"src":"1166:3:38","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14205_storage_ptr","typeString":"struct IterableMappingBPS.Map storage pointer"}},"id":14281,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1170:6:38","memberName":"values","nodeType":"MemberAccess","referencedDeclaration":14196,"src":"1166:10:38","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_BasisPointsRange_$14188_storage_$","typeString":"mapping(uint256 => struct BasisPointsRange storage ref)"}},"id":14282,"indexExpression":{"id":14280,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14256,"src":"1177:3:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1166:15:38","typeDescriptions":{"typeIdentifier":"t_struct$_BasisPointsRange_$14188_storage","typeString":"struct BasisPointsRange storage ref"}},"id":14283,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1182:18:38","memberName":"flowRateLowerBound","nodeType":"MemberAccess","referencedDeclaration":14185,"src":"1166:34:38","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14284,"name":"_flowRateLowerBound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14260,"src":"1203:19:38","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"1166:56:38","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"id":14286,"nodeType":"ExpressionStatement","src":"1166:56:38"},{"expression":{"id":14294,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":14287,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14254,"src":"1236:3:38","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14205_storage_ptr","typeString":"struct IterableMappingBPS.Map storage pointer"}},"id":14290,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1240:6:38","memberName":"values","nodeType":"MemberAccess","referencedDeclaration":14196,"src":"1236:10:38","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_BasisPointsRange_$14188_storage_$","typeString":"mapping(uint256 => struct BasisPointsRange storage ref)"}},"id":14291,"indexExpression":{"id":14289,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14256,"src":"1247:3:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1236:15:38","typeDescriptions":{"typeIdentifier":"t_struct$_BasisPointsRange_$14188_storage","typeString":"struct BasisPointsRange storage ref"}},"id":14292,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1252:18:38","memberName":"flowRateUpperBound","nodeType":"MemberAccess","referencedDeclaration":14187,"src":"1236:34:38","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14293,"name":"_flowRateUpperBound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14262,"src":"1273:19:38","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"1236:56:38","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"id":14295,"nodeType":"ExpressionStatement","src":"1236:56:38"}]}}]},"id":14353,"implemented":true,"kind":"function","modifiers":[],"name":"set","nameLocation":"921:3:38","nodeType":"FunctionDefinition","parameters":{"id":14263,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14254,"mutability":"mutable","name":"map","nameLocation":"946:3:38","nodeType":"VariableDeclaration","scope":14353,"src":"934:15:38","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14205_storage_ptr","typeString":"struct IterableMappingBPS.Map"},"typeName":{"id":14253,"nodeType":"UserDefinedTypeName","pathNode":{"id":14252,"name":"Map","nameLocations":["934:3:38"],"nodeType":"IdentifierPath","referencedDeclaration":14205,"src":"934:3:38"},"referencedDeclaration":14205,"src":"934:3:38","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14205_storage_ptr","typeString":"struct IterableMappingBPS.Map"}},"visibility":"internal"},{"constant":false,"id":14256,"mutability":"mutable","name":"key","nameLocation":"967:3:38","nodeType":"VariableDeclaration","scope":14353,"src":"959:11:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14255,"name":"uint256","nodeType":"ElementaryTypeName","src":"959:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14258,"mutability":"mutable","name":"_bps","nameLocation":"987:4:38","nodeType":"VariableDeclaration","scope":14353,"src":"980:11:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":14257,"name":"uint16","nodeType":"ElementaryTypeName","src":"980:6:38","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":14260,"mutability":"mutable","name":"_flowRateLowerBound","nameLocation":"1008:19:38","nodeType":"VariableDeclaration","scope":14353,"src":"1001:26:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":14259,"name":"uint96","nodeType":"ElementaryTypeName","src":"1001:6:38","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":14262,"mutability":"mutable","name":"_flowRateUpperBound","nameLocation":"1044:19:38","nodeType":"VariableDeclaration","scope":14353,"src":"1037:26:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":14261,"name":"uint96","nodeType":"ElementaryTypeName","src":"1037:6:38","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"src":"924:145:38"},"returnParameters":{"id":14264,"nodeType":"ParameterList","parameters":[],"src":"1079:0:38"},"scope":14434,"src":"912:714:38","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":14432,"nodeType":"Block","src":"1687:403:38","statements":[{"condition":{"id":14365,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1701:18:38","subExpression":{"baseExpression":{"expression":{"id":14361,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14356,"src":"1702:3:38","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14205_storage_ptr","typeString":"struct IterableMappingBPS.Map storage pointer"}},"id":14362,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1706:8:38","memberName":"inserted","nodeType":"MemberAccess","referencedDeclaration":14204,"src":"1702:12:38","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":14364,"indexExpression":{"id":14363,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14358,"src":"1715:3:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1702:17:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14368,"nodeType":"IfStatement","src":"1697:55:38","trueBody":{"id":14367,"nodeType":"Block","src":"1721:31:38","statements":[{"functionReturnParameters":14360,"id":14366,"nodeType":"Return","src":"1735:7:38"}]}},{"expression":{"id":14373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"1762:24:38","subExpression":{"baseExpression":{"expression":{"id":14369,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14356,"src":"1769:3:38","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14205_storage_ptr","typeString":"struct IterableMappingBPS.Map storage pointer"}},"id":14370,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1773:8:38","memberName":"inserted","nodeType":"MemberAccess","referencedDeclaration":14204,"src":"1769:12:38","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":14372,"indexExpression":{"id":14371,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14358,"src":"1782:3:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1769:17:38","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14374,"nodeType":"ExpressionStatement","src":"1762:24:38"},{"expression":{"id":14379,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"1796:22:38","subExpression":{"baseExpression":{"expression":{"id":14375,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14356,"src":"1803:3:38","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14205_storage_ptr","typeString":"struct IterableMappingBPS.Map storage pointer"}},"id":14376,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1807:6:38","memberName":"values","nodeType":"MemberAccess","referencedDeclaration":14196,"src":"1803:10:38","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_BasisPointsRange_$14188_storage_$","typeString":"mapping(uint256 => struct BasisPointsRange storage ref)"}},"id":14378,"indexExpression":{"id":14377,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14358,"src":"1814:3:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1803:15:38","typeDescriptions":{"typeIdentifier":"t_struct$_BasisPointsRange_$14188_storage","typeString":"struct BasisPointsRange storage ref"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14380,"nodeType":"ExpressionStatement","src":"1796:22:38"},{"assignments":[14382],"declarations":[{"constant":false,"id":14382,"mutability":"mutable","name":"index","nameLocation":"1834:5:38","nodeType":"VariableDeclaration","scope":14432,"src":"1829:10:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14381,"name":"uint","nodeType":"ElementaryTypeName","src":"1829:4:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14387,"initialValue":{"baseExpression":{"expression":{"id":14383,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14356,"src":"1842:3:38","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14205_storage_ptr","typeString":"struct IterableMappingBPS.Map storage pointer"}},"id":14384,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1846:7:38","memberName":"indexOf","nodeType":"MemberAccess","referencedDeclaration":14200,"src":"1842:11:38","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":14386,"indexExpression":{"id":14385,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14358,"src":"1854:3:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1842:16:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1829:29:38"},{"assignments":[14389],"declarations":[{"constant":false,"id":14389,"mutability":"mutable","name":"lastIndex","nameLocation":"1873:9:38","nodeType":"VariableDeclaration","scope":14432,"src":"1868:14:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14388,"name":"uint","nodeType":"ElementaryTypeName","src":"1868:4:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14395,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":14390,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14356,"src":"1885:3:38","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14205_storage_ptr","typeString":"struct IterableMappingBPS.Map storage pointer"}},"id":14391,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1889:4:38","memberName":"keys","nodeType":"MemberAccess","referencedDeclaration":14191,"src":"1885:8:38","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":14392,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1894:6:38","memberName":"length","nodeType":"MemberAccess","src":"1885:15:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":14393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1903:1:38","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1885:19:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1868:36:38"},{"assignments":[14397],"declarations":[{"constant":false,"id":14397,"mutability":"mutable","name":"lastKey","nameLocation":"1922:7:38","nodeType":"VariableDeclaration","scope":14432,"src":"1914:15:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14396,"name":"uint256","nodeType":"ElementaryTypeName","src":"1914:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14402,"initialValue":{"baseExpression":{"expression":{"id":14398,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14356,"src":"1932:3:38","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14205_storage_ptr","typeString":"struct IterableMappingBPS.Map storage pointer"}},"id":14399,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1936:4:38","memberName":"keys","nodeType":"MemberAccess","referencedDeclaration":14191,"src":"1932:8:38","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":14401,"indexExpression":{"id":14400,"name":"lastIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14389,"src":"1941:9:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1932:19:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1914:37:38"},{"expression":{"id":14409,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":14403,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14356,"src":"1962:3:38","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14205_storage_ptr","typeString":"struct IterableMappingBPS.Map storage pointer"}},"id":14406,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1966:7:38","memberName":"indexOf","nodeType":"MemberAccess","referencedDeclaration":14200,"src":"1962:11:38","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":14407,"indexExpression":{"id":14405,"name":"lastKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14397,"src":"1974:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1962:20:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14408,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14382,"src":"1985:5:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1962:28:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14410,"nodeType":"ExpressionStatement","src":"1962:28:38"},{"expression":{"id":14415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"2000:23:38","subExpression":{"baseExpression":{"expression":{"id":14411,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14356,"src":"2007:3:38","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14205_storage_ptr","typeString":"struct IterableMappingBPS.Map storage pointer"}},"id":14412,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2011:7:38","memberName":"indexOf","nodeType":"MemberAccess","referencedDeclaration":14200,"src":"2007:11:38","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":14414,"indexExpression":{"id":14413,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14358,"src":"2019:3:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2007:16:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14416,"nodeType":"ExpressionStatement","src":"2000:23:38"},{"expression":{"id":14423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":14417,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14356,"src":"2034:3:38","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14205_storage_ptr","typeString":"struct IterableMappingBPS.Map storage pointer"}},"id":14420,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2038:4:38","memberName":"keys","nodeType":"MemberAccess","referencedDeclaration":14191,"src":"2034:8:38","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":14421,"indexExpression":{"id":14419,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14382,"src":"2043:5:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2034:15:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14422,"name":"lastKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14397,"src":"2052:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2034:25:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14424,"nodeType":"ExpressionStatement","src":"2034:25:38"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":14425,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14356,"src":"2069:3:38","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14205_storage_ptr","typeString":"struct IterableMappingBPS.Map storage pointer"}},"id":14428,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2073:4:38","memberName":"keys","nodeType":"MemberAccess","referencedDeclaration":14191,"src":"2069:8:38","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":14429,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2078:3:38","memberName":"pop","nodeType":"MemberAccess","src":"2069:12:38","typeDescriptions":{"typeIdentifier":"t_function_arraypop_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$","typeString":"function (uint256[] storage pointer)"}},"id":14430,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2069:14:38","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14431,"nodeType":"ExpressionStatement","src":"2069:14:38"}]},"id":14433,"implemented":true,"kind":"function","modifiers":[],"name":"remove","nameLocation":"1641:6:38","nodeType":"FunctionDefinition","parameters":{"id":14359,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14356,"mutability":"mutable","name":"map","nameLocation":"1660:3:38","nodeType":"VariableDeclaration","scope":14433,"src":"1648:15:38","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14205_storage_ptr","typeString":"struct IterableMappingBPS.Map"},"typeName":{"id":14355,"nodeType":"UserDefinedTypeName","pathNode":{"id":14354,"name":"Map","nameLocations":["1648:3:38"],"nodeType":"IdentifierPath","referencedDeclaration":14205,"src":"1648:3:38"},"referencedDeclaration":14205,"src":"1648:3:38","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14205_storage_ptr","typeString":"struct IterableMappingBPS.Map"}},"visibility":"internal"},{"constant":false,"id":14358,"mutability":"mutable","name":"key","nameLocation":"1673:3:38","nodeType":"VariableDeclaration","scope":14433,"src":"1665:11:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14357,"name":"uint256","nodeType":"ElementaryTypeName","src":"1665:7:38","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1647:30:38"},"returnParameters":{"id":14360,"nodeType":"ParameterList","parameters":[],"src":"1687:0:38"},"scope":14434,"src":"1632:458:38","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":14435,"src":"205:1887:38","usedErrors":[]}],"src":"32:2061:38"},"id":38},"contracts/libraries/utils/LibAccessControl.sol":{"ast":{"absolutePath":"contracts/libraries/utils/LibAccessControl.sol","exportedSymbols":{"LibAccessControl":[14732],"Math":[1927],"Strings":[1062]},"id":14733,"license":"BUSL-1.1","nodeType":"SourceUnit","nodes":[{"id":14436,"literals":["solidity","^","0.8",".9"],"nodeType":"PragmaDirective","src":"36:23:39"},{"absolutePath":"@openzeppelin/contracts/utils/Strings.sol","file":"@openzeppelin/contracts/utils/Strings.sol","id":14437,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14733,"sourceUnit":1063,"src":"61:51:39","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"LibAccessControl","contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":14732,"linearizedBaseContracts":[14732],"name":"LibAccessControl","nameLocation":"122:16:39","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":14442,"mutability":"constant","name":"STORAGE_POSITION_ACCESSCONTROL","nameLocation":"162:30:39","nodeType":"VariableDeclaration","scope":14732,"src":"145:87:39","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14438,"name":"bytes32","nodeType":"ElementaryTypeName","src":"145:7:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"64732e616363657373636f6e74726f6c","id":14440,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"213:18:39","typeDescriptions":{"typeIdentifier":"t_stringliteral_4cd15452b25e815d3f9d1a3c7edd985a178edf5eb3461a1acbf855517423d694","typeString":"literal_string \"ds.accesscontrol\""},"value":"ds.accesscontrol"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_4cd15452b25e815d3f9d1a3c7edd985a178edf5eb3461a1acbf855517423d694","typeString":"literal_string \"ds.accesscontrol\""}],"id":14439,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"203:9:39","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":14441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"203:29:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":true,"id":14445,"mutability":"constant","name":"DEFAULT_ADMIN_ROLE","nameLocation":"256:18:39","nodeType":"VariableDeclaration","scope":14732,"src":"239:42:39","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14443,"name":"bytes32","nodeType":"ElementaryTypeName","src":"239:7:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"30783030","id":14444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"277:4:39","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x00"},"visibility":"internal"},{"constant":true,"id":14453,"mutability":"constant","name":"MAINTAINER_ROLE","nameLocation":"304:15:39","nodeType":"VariableDeclaration","scope":14732,"src":"287:75:39","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14446,"name":"bytes32","nodeType":"ElementaryTypeName","src":"287:7:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"arguments":[{"hexValue":"4d41494e5441494e45525f524f4c45","id":14450,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"343:17:39","typeDescriptions":{"typeIdentifier":"t_stringliteral_339759585899103d2ace64958e37e18ccb0504652c81d4a1b8aa80fe2126ab95","typeString":"literal_string \"MAINTAINER_ROLE\""},"value":"MAINTAINER_ROLE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_339759585899103d2ace64958e37e18ccb0504652c81d4a1b8aa80fe2126ab95","typeString":"literal_string \"MAINTAINER_ROLE\""}],"expression":{"id":14448,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"332:3:39","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":14449,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"336:6:39","memberName":"encode","nodeType":"MemberAccess","src":"332:10:39","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":14451,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"332:29:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":14447,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"322:9:39","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":14452,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"322:40:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":true,"id":14461,"mutability":"constant","name":"TREASURER_ROLE","nameLocation":"385:14:39","nodeType":"VariableDeclaration","scope":14732,"src":"368:73:39","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14454,"name":"bytes32","nodeType":"ElementaryTypeName","src":"368:7:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"arguments":[{"hexValue":"5452454153555245525f524f4c45","id":14458,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"423:16:39","typeDescriptions":{"typeIdentifier":"t_stringliteral_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07","typeString":"literal_string \"TREASURER_ROLE\""},"value":"TREASURER_ROLE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07","typeString":"literal_string \"TREASURER_ROLE\""}],"expression":{"id":14456,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"412:3:39","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":14457,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"416:6:39","memberName":"encode","nodeType":"MemberAccess","src":"412:10:39","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":14459,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"412:28:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":14455,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"402:9:39","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":14460,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"402:39:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":true,"id":14469,"mutability":"constant","name":"STRATEGIST_ROLE","nameLocation":"464:15:39","nodeType":"VariableDeclaration","scope":14732,"src":"447:75:39","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14462,"name":"bytes32","nodeType":"ElementaryTypeName","src":"447:7:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"arguments":[{"hexValue":"535452415445474953545f524f4c45","id":14466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"503:17:39","typeDescriptions":{"typeIdentifier":"t_stringliteral_17a8e30262c1f919c33056d877a3c22b95c2f5e4dac44683c1c2323cd79fbdb0","typeString":"literal_string \"STRATEGIST_ROLE\""},"value":"STRATEGIST_ROLE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_17a8e30262c1f919c33056d877a3c22b95c2f5e4dac44683c1c2323cd79fbdb0","typeString":"literal_string \"STRATEGIST_ROLE\""}],"expression":{"id":14464,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"492:3:39","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":14465,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"496:6:39","memberName":"encode","nodeType":"MemberAccess","src":"492:10:39","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":14467,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"492:29:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":14463,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"482:9:39","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":14468,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"482:40:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":true,"id":14477,"mutability":"constant","name":"DEVELOPER_ROLE","nameLocation":"545:14:39","nodeType":"VariableDeclaration","scope":14732,"src":"528:73:39","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14470,"name":"bytes32","nodeType":"ElementaryTypeName","src":"528:7:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"arguments":[{"hexValue":"444556454c4f5045525f524f4c45","id":14474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"583:16:39","typeDescriptions":{"typeIdentifier":"t_stringliteral_4504b9dfd7400a1522f49a8b4a100552da9236849581fd59b7363eb48c6a474c","typeString":"literal_string \"DEVELOPER_ROLE\""},"value":"DEVELOPER_ROLE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_4504b9dfd7400a1522f49a8b4a100552da9236849581fd59b7363eb48c6a474c","typeString":"literal_string \"DEVELOPER_ROLE\""}],"expression":{"id":14472,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"572:3:39","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":14473,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"576:6:39","memberName":"encode","nodeType":"MemberAccess","src":"572:10:39","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":14475,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"572:28:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":14471,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"562:9:39","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":14476,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"562:39:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"canonicalName":"LibAccessControl.RoleData","id":14484,"members":[{"constant":false,"id":14481,"mutability":"mutable","name":"members","nameLocation":"659:7:39","nodeType":"VariableDeclaration","scope":14484,"src":"634:32:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":14480,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":14478,"name":"address","nodeType":"ElementaryTypeName","src":"642:7:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"634:24:39","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":14479,"name":"bool","nodeType":"ElementaryTypeName","src":"653:4:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"internal"},{"constant":false,"id":14483,"mutability":"mutable","name":"adminRole","nameLocation":"684:9:39","nodeType":"VariableDeclaration","scope":14484,"src":"676:17:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14482,"name":"bytes32","nodeType":"ElementaryTypeName","src":"676:7:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"RoleData","nameLocation":"615:8:39","nodeType":"StructDefinition","scope":14732,"src":"608:92:39","visibility":"public"},{"canonicalName":"LibAccessControl.StorageAccessControl","id":14490,"members":[{"constant":false,"id":14489,"mutability":"mutable","name":"roles","nameLocation":"773:5:39","nodeType":"VariableDeclaration","scope":14490,"src":"744:34:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$14484_storage_$","typeString":"mapping(bytes32 => struct LibAccessControl.RoleData)"},"typeName":{"id":14488,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":14485,"name":"bytes32","nodeType":"ElementaryTypeName","src":"752:7:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"744:28:39","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$14484_storage_$","typeString":"mapping(bytes32 => struct LibAccessControl.RoleData)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":14487,"nodeType":"UserDefinedTypeName","pathNode":{"id":14486,"name":"RoleData","nameLocations":["763:8:39"],"nodeType":"IdentifierPath","referencedDeclaration":14484,"src":"763:8:39"},"referencedDeclaration":14484,"src":"763:8:39","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$14484_storage_ptr","typeString":"struct LibAccessControl.RoleData"}}},"visibility":"internal"}],"name":"StorageAccessControl","nameLocation":"713:20:39","nodeType":"StructDefinition","scope":14732,"src":"706:79:39","visibility":"public"},{"body":{"id":14501,"nodeType":"Block","src":"907:126:39","statements":[{"assignments":[14497],"declarations":[{"constant":false,"id":14497,"mutability":"mutable","name":"position","nameLocation":"925:8:39","nodeType":"VariableDeclaration","scope":14501,"src":"917:16:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14496,"name":"bytes32","nodeType":"ElementaryTypeName","src":"917:7:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":14499,"initialValue":{"id":14498,"name":"STORAGE_POSITION_ACCESSCONTROL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14442,"src":"936:30:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"917:49:39"},{"AST":{"nodeType":"YulBlock","src":"985:42:39","statements":[{"nodeType":"YulAssignment","src":"999:18:39","value":{"name":"position","nodeType":"YulIdentifier","src":"1009:8:39"},"variableNames":[{"name":"s.slot","nodeType":"YulIdentifier","src":"999:6:39"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":14497,"isOffset":false,"isSlot":false,"src":"1009:8:39","valueSize":1},{"declaration":14494,"isOffset":false,"isSlot":true,"src":"999:6:39","suffix":"slot","valueSize":1}],"id":14500,"nodeType":"InlineAssembly","src":"976:51:39"}]},"id":14502,"implemented":true,"kind":"function","modifiers":[],"name":"_storageAccessControl","nameLocation":"800:21:39","nodeType":"FunctionDefinition","parameters":{"id":14491,"nodeType":"ParameterList","parameters":[],"src":"821:2:39"},"returnParameters":{"id":14495,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14494,"mutability":"mutable","name":"s","nameLocation":"900:1:39","nodeType":"VariableDeclaration","scope":14502,"src":"871:30:39","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageAccessControl_$14490_storage_ptr","typeString":"struct LibAccessControl.StorageAccessControl"},"typeName":{"id":14493,"nodeType":"UserDefinedTypeName","pathNode":{"id":14492,"name":"StorageAccessControl","nameLocations":["871:20:39"],"nodeType":"IdentifierPath","referencedDeclaration":14490,"src":"871:20:39"},"referencedDeclaration":14490,"src":"871:20:39","typeDescriptions":{"typeIdentifier":"t_struct$_StorageAccessControl_$14490_storage_ptr","typeString":"struct LibAccessControl.StorageAccessControl"}},"visibility":"internal"}],"src":"870:32:39"},"scope":14732,"src":"791:242:39","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":14511,"nodeType":"Block","src":"1094:34:39","statements":[{"expression":{"arguments":[{"id":14508,"name":"_role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14504,"src":"1115:5:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":14507,"name":"_checkRole","nodeType":"Identifier","overloadedDeclarations":[14543,14585],"referencedDeclaration":14543,"src":"1104:10:39","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$__$","typeString":"function (bytes32) view"}},"id":14509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1104:17:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14510,"nodeType":"ExpressionStatement","src":"1104:17:39"}]},"id":14512,"implemented":true,"kind":"function","modifiers":[],"name":"_requireOnlyRole","nameLocation":"1048:16:39","nodeType":"FunctionDefinition","parameters":{"id":14505,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14504,"mutability":"mutable","name":"_role","nameLocation":"1073:5:39","nodeType":"VariableDeclaration","scope":14512,"src":"1065:13:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14503,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1065:7:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1064:15:39"},"returnParameters":{"id":14506,"nodeType":"ParameterList","parameters":[],"src":"1094:0:39"},"scope":14732,"src":"1039:89:39","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":14530,"nodeType":"Block","src":"1236:78:39","statements":[{"expression":{"baseExpression":{"expression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":14521,"name":"_storageAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14502,"src":"1253:21:39","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageAccessControl_$14490_storage_ptr_$","typeString":"function () pure returns (struct LibAccessControl.StorageAccessControl storage pointer)"}},"id":14522,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1253:23:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageAccessControl_$14490_storage_ptr","typeString":"struct LibAccessControl.StorageAccessControl storage pointer"}},"id":14523,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1277:5:39","memberName":"roles","nodeType":"MemberAccess","referencedDeclaration":14489,"src":"1253:29:39","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$14484_storage_$","typeString":"mapping(bytes32 => struct LibAccessControl.RoleData storage ref)"}},"id":14525,"indexExpression":{"id":14524,"name":"_role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14514,"src":"1283:5:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1253:36:39","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$14484_storage","typeString":"struct LibAccessControl.RoleData storage ref"}},"id":14526,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1290:7:39","memberName":"members","nodeType":"MemberAccess","referencedDeclaration":14481,"src":"1253:44:39","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":14528,"indexExpression":{"id":14527,"name":"_account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14516,"src":"1298:8:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1253:54:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":14520,"id":14529,"nodeType":"Return","src":"1246:61:39"}]},"id":14531,"implemented":true,"kind":"function","modifiers":[],"name":"_hasRole","nameLocation":"1143:8:39","nodeType":"FunctionDefinition","parameters":{"id":14517,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14514,"mutability":"mutable","name":"_role","nameLocation":"1169:5:39","nodeType":"VariableDeclaration","scope":14531,"src":"1161:13:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14513,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1161:7:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":14516,"mutability":"mutable","name":"_account","nameLocation":"1192:8:39","nodeType":"VariableDeclaration","scope":14531,"src":"1184:16:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14515,"name":"address","nodeType":"ElementaryTypeName","src":"1184:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1151:55:39"},"returnParameters":{"id":14520,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14519,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14531,"src":"1230:4:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14518,"name":"bool","nodeType":"ElementaryTypeName","src":"1230:4:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1229:6:39"},"scope":14732,"src":"1134:180:39","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":14542,"nodeType":"Block","src":"1369:46:39","statements":[{"expression":{"arguments":[{"id":14537,"name":"_role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14533,"src":"1390:5:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":14538,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1397:3:39","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":14539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1401:6:39","memberName":"sender","nodeType":"MemberAccess","src":"1397:10:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":14536,"name":"_checkRole","nodeType":"Identifier","overloadedDeclarations":[14543,14585],"referencedDeclaration":14585,"src":"1379:10:39","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address) view"}},"id":14540,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1379:29:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14541,"nodeType":"ExpressionStatement","src":"1379:29:39"}]},"id":14543,"implemented":true,"kind":"function","modifiers":[],"name":"_checkRole","nameLocation":"1329:10:39","nodeType":"FunctionDefinition","parameters":{"id":14534,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14533,"mutability":"mutable","name":"_role","nameLocation":"1348:5:39","nodeType":"VariableDeclaration","scope":14543,"src":"1340:13:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14532,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1340:7:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1339:15:39"},"returnParameters":{"id":14535,"nodeType":"ParameterList","parameters":[],"src":"1369:0:39"},"scope":14732,"src":"1320:95:39","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":14584,"nodeType":"Block","src":"1488:424:39","statements":[{"condition":{"id":14554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1502:26:39","subExpression":{"arguments":[{"id":14551,"name":"_role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14545,"src":"1512:5:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":14552,"name":"_account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14547,"src":"1519:8:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":14550,"name":"_hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14531,"src":"1503:8:39","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":14553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1503:25:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14583,"nodeType":"IfStatement","src":"1498:408:39","trueBody":{"id":14582,"nodeType":"Block","src":"1530:376:39","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"hexValue":"416363657373436f6e74726f6c3a206163636f756e7420","id":14560,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1638:25:39","typeDescriptions":{"typeIdentifier":"t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874","typeString":"literal_string \"AccessControl: account \""},"value":"AccessControl: account "},{"arguments":[{"arguments":[{"id":14565,"name":"_account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14547,"src":"1717:8:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14564,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1709:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":14563,"name":"uint160","nodeType":"ElementaryTypeName","src":"1709:7:39","typeDescriptions":{}}},"id":14566,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1709:17:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"hexValue":"3230","id":14567,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1728:2:39","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"}],"expression":{"id":14561,"name":"Strings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1062,"src":"1689:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Strings_$1062_$","typeString":"type(library Strings)"}},"id":14562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1697:11:39","memberName":"toHexString","nodeType":"MemberAccess","referencedDeclaration":1041,"src":"1689:19:39","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":14568,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1689:42:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"206973206d697373696e6720726f6c6520","id":14569,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1757:19:39","typeDescriptions":{"typeIdentifier":"t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69","typeString":"literal_string \" is missing role \""},"value":" is missing role "},{"arguments":[{"arguments":[{"id":14574,"name":"_role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14545,"src":"1830:5:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":14573,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1822:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":14572,"name":"uint256","nodeType":"ElementaryTypeName","src":"1822:7:39","typeDescriptions":{}}},"id":14575,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1822:14:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"3332","id":14576,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1838:2:39","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"expression":{"id":14570,"name":"Strings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1062,"src":"1802:7:39","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Strings_$1062_$","typeString":"type(library Strings)"}},"id":14571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1810:11:39","memberName":"toHexString","nodeType":"MemberAccess","referencedDeclaration":1041,"src":"1802:19:39","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":14577,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1802:39:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874","typeString":"literal_string \"AccessControl: account \""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69","typeString":"literal_string \" is missing role \""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":14558,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1596:3:39","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":14559,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1600:12:39","memberName":"encodePacked","nodeType":"MemberAccess","src":"1596:16:39","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":14578,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1596:267:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":14557,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1568:6:39","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":14556,"name":"string","nodeType":"ElementaryTypeName","src":"1568:6:39","typeDescriptions":{}}},"id":14579,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1568:313:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":14555,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"1544:6:39","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":14580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1544:351:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14581,"nodeType":"ExpressionStatement","src":"1544:351:39"}]}}]},"id":14585,"implemented":true,"kind":"function","modifiers":[],"name":"_checkRole","nameLocation":"1430:10:39","nodeType":"FunctionDefinition","parameters":{"id":14548,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14545,"mutability":"mutable","name":"_role","nameLocation":"1449:5:39","nodeType":"VariableDeclaration","scope":14585,"src":"1441:13:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14544,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1441:7:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":14547,"mutability":"mutable","name":"_account","nameLocation":"1464:8:39","nodeType":"VariableDeclaration","scope":14585,"src":"1456:16:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14546,"name":"address","nodeType":"ElementaryTypeName","src":"1456:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1440:33:39"},"returnParameters":{"id":14549,"nodeType":"ParameterList","parameters":[],"src":"1488:0:39"},"scope":14732,"src":"1421:491:39","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":14599,"nodeType":"Block","src":"1988:70:39","statements":[{"expression":{"expression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":14592,"name":"_storageAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14502,"src":"2005:21:39","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageAccessControl_$14490_storage_ptr_$","typeString":"function () pure returns (struct LibAccessControl.StorageAccessControl storage pointer)"}},"id":14593,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2005:23:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageAccessControl_$14490_storage_ptr","typeString":"struct LibAccessControl.StorageAccessControl storage pointer"}},"id":14594,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2029:5:39","memberName":"roles","nodeType":"MemberAccess","referencedDeclaration":14489,"src":"2005:29:39","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$14484_storage_$","typeString":"mapping(bytes32 => struct LibAccessControl.RoleData storage ref)"}},"id":14596,"indexExpression":{"id":14595,"name":"_role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14587,"src":"2035:5:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2005:36:39","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$14484_storage","typeString":"struct LibAccessControl.RoleData storage ref"}},"id":14597,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2042:9:39","memberName":"adminRole","nodeType":"MemberAccess","referencedDeclaration":14483,"src":"2005:46:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":14591,"id":14598,"nodeType":"Return","src":"1998:53:39"}]},"id":14600,"implemented":true,"kind":"function","modifiers":[],"name":"_getRoleAdmin","nameLocation":"1927:13:39","nodeType":"FunctionDefinition","parameters":{"id":14588,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14587,"mutability":"mutable","name":"_role","nameLocation":"1949:5:39","nodeType":"VariableDeclaration","scope":14600,"src":"1941:13:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14586,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1941:7:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1940:15:39"},"returnParameters":{"id":14591,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14590,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14600,"src":"1979:7:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14589,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1979:7:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1978:9:39"},"scope":14732,"src":"1918:140:39","stateMutability":"view","virtual":false,"visibility":"internal"},{"anonymous":false,"eventSelector":"bd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff","id":14608,"name":"RoleAdminChanged","nameLocation":"2070:16:39","nodeType":"EventDefinition","parameters":{"id":14607,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14602,"indexed":true,"mutability":"mutable","name":"role","nameLocation":"2112:4:39","nodeType":"VariableDeclaration","scope":14608,"src":"2096:20:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14601,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2096:7:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":14604,"indexed":true,"mutability":"mutable","name":"previousAdminRole","nameLocation":"2142:17:39","nodeType":"VariableDeclaration","scope":14608,"src":"2126:33:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14603,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2126:7:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":14606,"indexed":true,"mutability":"mutable","name":"newAdminRole","nameLocation":"2185:12:39","nodeType":"VariableDeclaration","scope":14608,"src":"2169:28:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14605,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2169:7:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2086:117:39"},"src":"2064:140:39"},{"body":{"id":14636,"nodeType":"Block","src":"2277:203:39","statements":[{"assignments":[14616],"declarations":[{"constant":false,"id":14616,"mutability":"mutable","name":"previousAdminRole","nameLocation":"2295:17:39","nodeType":"VariableDeclaration","scope":14636,"src":"2287:25:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14615,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2287:7:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":14620,"initialValue":{"arguments":[{"id":14618,"name":"_role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14610,"src":"2329:5:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":14617,"name":"_getRoleAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14600,"src":"2315:13:39","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":14619,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2315:20:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"2287:48:39"},{"expression":{"id":14628,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":14621,"name":"_storageAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14502,"src":"2345:21:39","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageAccessControl_$14490_storage_ptr_$","typeString":"function () pure returns (struct LibAccessControl.StorageAccessControl storage pointer)"}},"id":14622,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2345:23:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageAccessControl_$14490_storage_ptr","typeString":"struct LibAccessControl.StorageAccessControl storage pointer"}},"id":14623,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2369:5:39","memberName":"roles","nodeType":"MemberAccess","referencedDeclaration":14489,"src":"2345:29:39","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$14484_storage_$","typeString":"mapping(bytes32 => struct LibAccessControl.RoleData storage ref)"}},"id":14625,"indexExpression":{"id":14624,"name":"_role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14610,"src":"2375:5:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2345:36:39","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$14484_storage","typeString":"struct LibAccessControl.RoleData storage ref"}},"id":14626,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2382:9:39","memberName":"adminRole","nodeType":"MemberAccess","referencedDeclaration":14483,"src":"2345:46:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14627,"name":"_adminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14612,"src":"2394:10:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2345:59:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":14629,"nodeType":"ExpressionStatement","src":"2345:59:39"},{"eventCall":{"arguments":[{"id":14631,"name":"_role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14610,"src":"2436:5:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":14632,"name":"previousAdminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14616,"src":"2443:17:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":14633,"name":"_adminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14612,"src":"2462:10:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":14630,"name":"RoleAdminChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14608,"src":"2419:16:39","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (bytes32,bytes32,bytes32)"}},"id":14634,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2419:54:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14635,"nodeType":"EmitStatement","src":"2414:59:39"}]},"id":14637,"implemented":true,"kind":"function","modifiers":[],"name":"_setRoleAdmin","nameLocation":"2219:13:39","nodeType":"FunctionDefinition","parameters":{"id":14613,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14610,"mutability":"mutable","name":"_role","nameLocation":"2241:5:39","nodeType":"VariableDeclaration","scope":14637,"src":"2233:13:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14609,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2233:7:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":14612,"mutability":"mutable","name":"_adminRole","nameLocation":"2256:10:39","nodeType":"VariableDeclaration","scope":14637,"src":"2248:18:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14611,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2248:7:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2232:35:39"},"returnParameters":{"id":14614,"nodeType":"ParameterList","parameters":[],"src":"2277:0:39"},"scope":14732,"src":"2210:270:39","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"anonymous":false,"eventSelector":"2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","id":14645,"name":"RoleGranted","nameLocation":"2492:11:39","nodeType":"EventDefinition","parameters":{"id":14644,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14639,"indexed":true,"mutability":"mutable","name":"role","nameLocation":"2529:4:39","nodeType":"VariableDeclaration","scope":14645,"src":"2513:20:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14638,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2513:7:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":14641,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"2559:7:39","nodeType":"VariableDeclaration","scope":14645,"src":"2543:23:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14640,"name":"address","nodeType":"ElementaryTypeName","src":"2543:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14643,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"2592:6:39","nodeType":"VariableDeclaration","scope":14645,"src":"2576:22:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14642,"name":"address","nodeType":"ElementaryTypeName","src":"2576:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2503:101:39"},"src":"2486:119:39"},{"body":{"id":14677,"nodeType":"Block","src":"2673:193:39","statements":[{"condition":{"id":14656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"2687:26:39","subExpression":{"arguments":[{"id":14653,"name":"_role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14647,"src":"2697:5:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":14654,"name":"_account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14649,"src":"2704:8:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":14652,"name":"_hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14531,"src":"2688:8:39","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":14655,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2688:25:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14676,"nodeType":"IfStatement","src":"2683:177:39","trueBody":{"id":14675,"nodeType":"Block","src":"2715:145:39","statements":[{"expression":{"id":14666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":14657,"name":"_storageAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14502,"src":"2729:21:39","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageAccessControl_$14490_storage_ptr_$","typeString":"function () pure returns (struct LibAccessControl.StorageAccessControl storage pointer)"}},"id":14658,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2729:23:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageAccessControl_$14490_storage_ptr","typeString":"struct LibAccessControl.StorageAccessControl storage pointer"}},"id":14659,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2753:5:39","memberName":"roles","nodeType":"MemberAccess","referencedDeclaration":14489,"src":"2729:29:39","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$14484_storage_$","typeString":"mapping(bytes32 => struct LibAccessControl.RoleData storage ref)"}},"id":14661,"indexExpression":{"id":14660,"name":"_role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14647,"src":"2759:5:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2729:36:39","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$14484_storage","typeString":"struct LibAccessControl.RoleData storage ref"}},"id":14662,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2766:7:39","memberName":"members","nodeType":"MemberAccess","referencedDeclaration":14481,"src":"2729:44:39","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":14664,"indexExpression":{"id":14663,"name":"_account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14649,"src":"2774:8:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2729:54:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":14665,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2786:4:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"2729:61:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14667,"nodeType":"ExpressionStatement","src":"2729:61:39"},{"eventCall":{"arguments":[{"id":14669,"name":"_role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14647,"src":"2821:5:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":14670,"name":"_account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14649,"src":"2828:8:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":14671,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2838:3:39","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":14672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2842:6:39","memberName":"sender","nodeType":"MemberAccess","src":"2838:10:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":14668,"name":"RoleGranted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14645,"src":"2809:11:39","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$","typeString":"function (bytes32,address,address)"}},"id":14673,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2809:40:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14674,"nodeType":"EmitStatement","src":"2804:45:39"}]}}]},"id":14678,"implemented":true,"kind":"function","modifiers":[],"name":"_grantRole","nameLocation":"2620:10:39","nodeType":"FunctionDefinition","parameters":{"id":14650,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14647,"mutability":"mutable","name":"_role","nameLocation":"2639:5:39","nodeType":"VariableDeclaration","scope":14678,"src":"2631:13:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14646,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2631:7:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":14649,"mutability":"mutable","name":"_account","nameLocation":"2654:8:39","nodeType":"VariableDeclaration","scope":14678,"src":"2646:16:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14648,"name":"address","nodeType":"ElementaryTypeName","src":"2646:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2630:33:39"},"returnParameters":{"id":14651,"nodeType":"ParameterList","parameters":[],"src":"2673:0:39"},"scope":14732,"src":"2611:255:39","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"anonymous":false,"eventSelector":"f6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b","id":14686,"name":"RoleRevoked","nameLocation":"2878:11:39","nodeType":"EventDefinition","parameters":{"id":14685,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14680,"indexed":true,"mutability":"mutable","name":"role","nameLocation":"2915:4:39","nodeType":"VariableDeclaration","scope":14686,"src":"2899:20:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14679,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2899:7:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":14682,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"2945:7:39","nodeType":"VariableDeclaration","scope":14686,"src":"2929:23:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14681,"name":"address","nodeType":"ElementaryTypeName","src":"2929:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14684,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"2978:6:39","nodeType":"VariableDeclaration","scope":14686,"src":"2962:22:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14683,"name":"address","nodeType":"ElementaryTypeName","src":"2962:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2889:101:39"},"src":"2872:119:39"},{"body":{"id":14717,"nodeType":"Block","src":"3060:193:39","statements":[{"condition":{"arguments":[{"id":14694,"name":"_role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14688,"src":"3083:5:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":14695,"name":"_account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14690,"src":"3090:8:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":14693,"name":"_hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14531,"src":"3074:8:39","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":14696,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3074:25:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14716,"nodeType":"IfStatement","src":"3070:177:39","trueBody":{"id":14715,"nodeType":"Block","src":"3101:146:39","statements":[{"expression":{"id":14706,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":14697,"name":"_storageAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14502,"src":"3115:21:39","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageAccessControl_$14490_storage_ptr_$","typeString":"function () pure returns (struct LibAccessControl.StorageAccessControl storage pointer)"}},"id":14698,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3115:23:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageAccessControl_$14490_storage_ptr","typeString":"struct LibAccessControl.StorageAccessControl storage pointer"}},"id":14699,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3139:5:39","memberName":"roles","nodeType":"MemberAccess","referencedDeclaration":14489,"src":"3115:29:39","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$14484_storage_$","typeString":"mapping(bytes32 => struct LibAccessControl.RoleData storage ref)"}},"id":14701,"indexExpression":{"id":14700,"name":"_role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14688,"src":"3145:5:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3115:36:39","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$14484_storage","typeString":"struct LibAccessControl.RoleData storage ref"}},"id":14702,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3152:7:39","memberName":"members","nodeType":"MemberAccess","referencedDeclaration":14481,"src":"3115:44:39","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":14704,"indexExpression":{"id":14703,"name":"_account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14690,"src":"3160:8:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3115:54:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":14705,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3172:5:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"3115:62:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14707,"nodeType":"ExpressionStatement","src":"3115:62:39"},{"eventCall":{"arguments":[{"id":14709,"name":"_role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14688,"src":"3208:5:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":14710,"name":"_account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14690,"src":"3215:8:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":14711,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3225:3:39","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":14712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3229:6:39","memberName":"sender","nodeType":"MemberAccess","src":"3225:10:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":14708,"name":"RoleRevoked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14686,"src":"3196:11:39","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$","typeString":"function (bytes32,address,address)"}},"id":14713,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3196:40:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14714,"nodeType":"EmitStatement","src":"3191:45:39"}]}}]},"id":14718,"implemented":true,"kind":"function","modifiers":[],"name":"_revokeRole","nameLocation":"3006:11:39","nodeType":"FunctionDefinition","parameters":{"id":14691,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14688,"mutability":"mutable","name":"_role","nameLocation":"3026:5:39","nodeType":"VariableDeclaration","scope":14718,"src":"3018:13:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14687,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3018:7:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":14690,"mutability":"mutable","name":"_account","nameLocation":"3041:8:39","nodeType":"VariableDeclaration","scope":14718,"src":"3033:16:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14689,"name":"address","nodeType":"ElementaryTypeName","src":"3033:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3017:33:39"},"returnParameters":{"id":14692,"nodeType":"ParameterList","parameters":[],"src":"3060:0:39"},"scope":14732,"src":"2997:256:39","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":14730,"nodeType":"Block","src":"3321:44:39","statements":[{"expression":{"arguments":[{"id":14726,"name":"_role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14720,"src":"3342:5:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":14727,"name":"_account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14722,"src":"3349:8:39","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":14725,"name":"_grantRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14678,"src":"3331:10:39","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":14728,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3331:27:39","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14729,"nodeType":"ExpressionStatement","src":"3331:27:39"}]},"id":14731,"implemented":true,"kind":"function","modifiers":[],"name":"_setupRole","nameLocation":"3268:10:39","nodeType":"FunctionDefinition","parameters":{"id":14723,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14720,"mutability":"mutable","name":"_role","nameLocation":"3287:5:39","nodeType":"VariableDeclaration","scope":14731,"src":"3279:13:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14719,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3279:7:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":14722,"mutability":"mutable","name":"_account","nameLocation":"3302:8:39","nodeType":"VariableDeclaration","scope":14731,"src":"3294:16:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14721,"name":"address","nodeType":"ElementaryTypeName","src":"3294:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3278:33:39"},"returnParameters":{"id":14724,"nodeType":"ParameterList","parameters":[],"src":"3321:0:39"},"scope":14732,"src":"3259:106:39","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":14733,"src":"114:3253:39","usedErrors":[]}],"src":"36:3332:39"},"id":39},"contracts/libraries/utils/LibDiamond.sol":{"ast":{"absolutePath":"contracts/libraries/utils/LibDiamond.sol","exportedSymbols":{"ICut":[11090],"InitializationFunctionReverted":[14742],"LibDiamond":[15481]},"id":15482,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":14734,"literals":["solidity","^","0.8",".9"],"nodeType":"PragmaDirective","src":"32:23:40"},{"absolutePath":"contracts/interfaces/utils/ICut.sol","file":"../../interfaces/utils/ICut.sol","id":14736,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":15482,"sourceUnit":11091,"src":"57:53:40","symbolAliases":[{"foreign":{"id":14735,"name":"ICut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11090,"src":"65:4:40","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"errorSelector":"192105d7","id":14742,"name":"InitializationFunctionReverted","nameLocation":"266:30:40","nodeType":"ErrorDefinition","parameters":{"id":14741,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14738,"mutability":"mutable","name":"_initializationContractAddress","nameLocation":"310:30:40","nodeType":"VariableDeclaration","scope":14742,"src":"302:38:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14737,"name":"address","nodeType":"ElementaryTypeName","src":"302:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14740,"mutability":"mutable","name":"_calldata","nameLocation":"352:9:40","nodeType":"VariableDeclaration","scope":14742,"src":"346:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":14739,"name":"bytes","nodeType":"ElementaryTypeName","src":"346:5:40","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"296:67:40"},"src":"260:104:40"},{"abstract":false,"baseContracts":[],"canonicalName":"LibDiamond","contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":15481,"linearizedBaseContracts":[15481],"name":"LibDiamond","nameLocation":"374:10:40","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":14747,"mutability":"constant","name":"STORAGE_POSITION_DIAMOND","nameLocation":"408:24:40","nodeType":"VariableDeclaration","scope":15481,"src":"391:97:40","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14743,"name":"bytes32","nodeType":"ElementaryTypeName","src":"391:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"6469616d6f6e642e7374616e646172642e6469616d6f6e642e73746f72616765","id":14745,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"453:34:40","typeDescriptions":{"typeIdentifier":"t_stringliteral_c8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c","typeString":"literal_string \"diamond.standard.diamond.storage\""},"value":"diamond.standard.diamond.storage"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c","typeString":"literal_string \"diamond.standard.diamond.storage\""}],"id":14744,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"443:9:40","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":14746,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"443:45:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"canonicalName":"LibDiamond.FacetAddressAndPosition","id":14752,"members":[{"constant":false,"id":14749,"mutability":"mutable","name":"facetAddress","nameLocation":"544:12:40","nodeType":"VariableDeclaration","scope":14752,"src":"536:20:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14748,"name":"address","nodeType":"ElementaryTypeName","src":"536:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14751,"mutability":"mutable","name":"functionSelectorPosition","nameLocation":"573:24:40","nodeType":"VariableDeclaration","scope":14752,"src":"566:31:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":14750,"name":"uint96","nodeType":"ElementaryTypeName","src":"566:6:40","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"name":"FacetAddressAndPosition","nameLocation":"502:23:40","nodeType":"StructDefinition","scope":15481,"src":"495:171:40","visibility":"public"},{"canonicalName":"LibDiamond.FacetFunctionSelectors","id":14758,"members":[{"constant":false,"id":14755,"mutability":"mutable","name":"functionSelectors","nameLocation":"721:17:40","nodeType":"VariableDeclaration","scope":14758,"src":"712:26:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage_ptr","typeString":"bytes4[]"},"typeName":{"baseType":{"id":14753,"name":"bytes4","nodeType":"ElementaryTypeName","src":"712:6:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":14754,"nodeType":"ArrayTypeName","src":"712:8:40","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage_ptr","typeString":"bytes4[]"}},"visibility":"internal"},{"constant":false,"id":14757,"mutability":"mutable","name":"facetAddressPosition","nameLocation":"756:20:40","nodeType":"VariableDeclaration","scope":14758,"src":"748:28:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14756,"name":"uint256","nodeType":"ElementaryTypeName","src":"748:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"FacetFunctionSelectors","nameLocation":"679:22:40","nodeType":"StructDefinition","scope":15481,"src":"672:163:40","visibility":"public"},{"canonicalName":"LibDiamond.StorageDiamond","id":14776,"members":[{"constant":false,"id":14763,"mutability":"mutable","name":"selectorToFacetAndPosition","nameLocation":"1061:26:40","nodeType":"VariableDeclaration","scope":14776,"src":"1018:69:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_struct$_FacetAddressAndPosition_$14752_storage_$","typeString":"mapping(bytes4 => struct LibDiamond.FacetAddressAndPosition)"},"typeName":{"id":14762,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":14759,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1026:6:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"Mapping","src":"1018:42:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_struct$_FacetAddressAndPosition_$14752_storage_$","typeString":"mapping(bytes4 => struct LibDiamond.FacetAddressAndPosition)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":14761,"nodeType":"UserDefinedTypeName","pathNode":{"id":14760,"name":"FacetAddressAndPosition","nameLocations":["1036:23:40"],"nodeType":"IdentifierPath","referencedDeclaration":14752,"src":"1036:23:40"},"referencedDeclaration":14752,"src":"1036:23:40","typeDescriptions":{"typeIdentifier":"t_struct$_FacetAddressAndPosition_$14752_storage_ptr","typeString":"struct LibDiamond.FacetAddressAndPosition"}}},"visibility":"internal"},{"constant":false,"id":14768,"mutability":"mutable","name":"facetFunctionSelectors","nameLocation":"1194:22:40","nodeType":"VariableDeclaration","scope":14776,"src":"1151:65:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_FacetFunctionSelectors_$14758_storage_$","typeString":"mapping(address => struct LibDiamond.FacetFunctionSelectors)"},"typeName":{"id":14767,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":14764,"name":"address","nodeType":"ElementaryTypeName","src":"1159:7:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1151:42:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_FacetFunctionSelectors_$14758_storage_$","typeString":"mapping(address => struct LibDiamond.FacetFunctionSelectors)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":14766,"nodeType":"UserDefinedTypeName","pathNode":{"id":14765,"name":"FacetFunctionSelectors","nameLocations":["1170:22:40"],"nodeType":"IdentifierPath","referencedDeclaration":14758,"src":"1170:22:40"},"referencedDeclaration":14758,"src":"1170:22:40","typeDescriptions":{"typeIdentifier":"t_struct$_FacetFunctionSelectors_$14758_storage_ptr","typeString":"struct LibDiamond.FacetFunctionSelectors"}}},"visibility":"internal"},{"constant":false,"id":14771,"mutability":"mutable","name":"facetAddresses","nameLocation":"1263:14:40","nodeType":"VariableDeclaration","scope":14776,"src":"1253:24:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":14769,"name":"address","nodeType":"ElementaryTypeName","src":"1253:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":14770,"nodeType":"ArrayTypeName","src":"1253:9:40","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":14775,"mutability":"mutable","name":"supportedInterfaces","nameLocation":"1413:19:40","nodeType":"VariableDeclaration","scope":14776,"src":"1389:43:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_bool_$","typeString":"mapping(bytes4 => bool)"},"typeName":{"id":14774,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":14772,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1397:6:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"Mapping","src":"1389:23:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_bool_$","typeString":"mapping(bytes4 => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":14773,"name":"bool","nodeType":"ElementaryTypeName","src":"1407:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"internal"}],"name":"StorageDiamond","nameLocation":"848:14:40","nodeType":"StructDefinition","scope":15481,"src":"841:598:40","visibility":"public"},{"body":{"id":14787,"nodeType":"Block","src":"1549:120:40","statements":[{"assignments":[14783],"declarations":[{"constant":false,"id":14783,"mutability":"mutable","name":"position","nameLocation":"1567:8:40","nodeType":"VariableDeclaration","scope":14787,"src":"1559:16:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14782,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1559:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":14785,"initialValue":{"id":14784,"name":"STORAGE_POSITION_DIAMOND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14747,"src":"1578:24:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"1559:43:40"},{"AST":{"nodeType":"YulBlock","src":"1621:42:40","statements":[{"nodeType":"YulAssignment","src":"1635:18:40","value":{"name":"position","nodeType":"YulIdentifier","src":"1645:8:40"},"variableNames":[{"name":"s.slot","nodeType":"YulIdentifier","src":"1635:6:40"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":14783,"isOffset":false,"isSlot":false,"src":"1645:8:40","valueSize":1},{"declaration":14780,"isOffset":false,"isSlot":true,"src":"1635:6:40","suffix":"slot","valueSize":1}],"id":14786,"nodeType":"InlineAssembly","src":"1612:51:40"}]},"id":14788,"implemented":true,"kind":"function","modifiers":[],"name":"_storageDiamond","nameLocation":"1454:15:40","nodeType":"FunctionDefinition","parameters":{"id":14777,"nodeType":"ParameterList","parameters":[],"src":"1469:2:40"},"returnParameters":{"id":14781,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14780,"mutability":"mutable","name":"s","nameLocation":"1542:1:40","nodeType":"VariableDeclaration","scope":14788,"src":"1519:24:40","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond"},"typeName":{"id":14779,"nodeType":"UserDefinedTypeName","pathNode":{"id":14778,"name":"StorageDiamond","nameLocations":["1519:14:40"],"nodeType":"IdentifierPath","referencedDeclaration":14776,"src":"1519:14:40"},"referencedDeclaration":14776,"src":"1519:14:40","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond"}},"visibility":"internal"}],"src":"1518:26:40"},"scope":15481,"src":"1445:224:40","stateMutability":"pure","virtual":false,"visibility":"internal"},{"anonymous":false,"eventSelector":"8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb673","id":14798,"name":"DiamondCut","nameLocation":"1681:10:40","nodeType":"EventDefinition","parameters":{"id":14797,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14792,"indexed":false,"mutability":"mutable","name":"_diamondCut","nameLocation":"1717:11:40","nodeType":"VariableDeclaration","scope":14798,"src":"1701:27:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_FacetCut_$11067_memory_ptr_$dyn_memory_ptr","typeString":"struct ICut.FacetCut[]"},"typeName":{"baseType":{"id":14790,"nodeType":"UserDefinedTypeName","pathNode":{"id":14789,"name":"ICut.FacetCut","nameLocations":["1701:4:40","1706:8:40"],"nodeType":"IdentifierPath","referencedDeclaration":11067,"src":"1701:13:40"},"referencedDeclaration":11067,"src":"1701:13:40","typeDescriptions":{"typeIdentifier":"t_struct$_FacetCut_$11067_storage_ptr","typeString":"struct ICut.FacetCut"}},"id":14791,"nodeType":"ArrayTypeName","src":"1701:15:40","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_FacetCut_$11067_storage_$dyn_storage_ptr","typeString":"struct ICut.FacetCut[]"}},"visibility":"internal"},{"constant":false,"id":14794,"indexed":false,"mutability":"mutable","name":"_init","nameLocation":"1746:5:40","nodeType":"VariableDeclaration","scope":14798,"src":"1738:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14793,"name":"address","nodeType":"ElementaryTypeName","src":"1738:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14796,"indexed":false,"mutability":"mutable","name":"_calldata","nameLocation":"1767:9:40","nodeType":"VariableDeclaration","scope":14798,"src":"1761:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":14795,"name":"bytes","nodeType":"ElementaryTypeName","src":"1761:5:40","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1691:91:40"},"src":"1675:108:40"},{"body":{"id":14901,"nodeType":"Block","src":"1964:1122:40","statements":[{"body":{"id":14888,"nodeType":"Block","src":"2092:883:40","statements":[{"assignments":[14823],"declarations":[{"constant":false,"id":14823,"mutability":"mutable","name":"action","nameLocation":"2126:6:40","nodeType":"VariableDeclaration","scope":14888,"src":"2106:26:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_FacetCutAction_$11058","typeString":"enum ICut.FacetCutAction"},"typeName":{"id":14822,"nodeType":"UserDefinedTypeName","pathNode":{"id":14821,"name":"ICut.FacetCutAction","nameLocations":["2106:4:40","2111:14:40"],"nodeType":"IdentifierPath","referencedDeclaration":11058,"src":"2106:19:40"},"referencedDeclaration":11058,"src":"2106:19:40","typeDescriptions":{"typeIdentifier":"t_enum$_FacetCutAction_$11058","typeString":"enum ICut.FacetCutAction"}},"visibility":"internal"}],"id":14828,"initialValue":{"expression":{"baseExpression":{"id":14824,"name":"_diamondCut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14802,"src":"2135:11:40","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_FacetCut_$11067_memory_ptr_$dyn_memory_ptr","typeString":"struct ICut.FacetCut memory[] memory"}},"id":14826,"indexExpression":{"id":14825,"name":"facetIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14810,"src":"2147:10:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2135:23:40","typeDescriptions":{"typeIdentifier":"t_struct$_FacetCut_$11067_memory_ptr","typeString":"struct ICut.FacetCut memory"}},"id":14827,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2159:6:40","memberName":"action","nodeType":"MemberAccess","referencedDeclaration":11063,"src":"2135:30:40","typeDescriptions":{"typeIdentifier":"t_enum$_FacetCutAction_$11058","typeString":"enum ICut.FacetCutAction"}},"nodeType":"VariableDeclarationStatement","src":"2106:59:40"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_FacetCutAction_$11058","typeString":"enum ICut.FacetCutAction"},"id":14833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14829,"name":"action","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14823,"src":"2183:6:40","typeDescriptions":{"typeIdentifier":"t_enum$_FacetCutAction_$11058","typeString":"enum ICut.FacetCutAction"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":14830,"name":"ICut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11090,"src":"2193:4:40","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ICut_$11090_$","typeString":"type(contract ICut)"}},"id":14831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2198:14:40","memberName":"FacetCutAction","nodeType":"MemberAccess","referencedDeclaration":11058,"src":"2193:19:40","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FacetCutAction_$11058_$","typeString":"type(enum ICut.FacetCutAction)"}},"id":14832,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2213:3:40","memberName":"Add","nodeType":"MemberAccess","referencedDeclaration":11055,"src":"2193:23:40","typeDescriptions":{"typeIdentifier":"t_enum$_FacetCutAction_$11058","typeString":"enum ICut.FacetCutAction"}},"src":"2183:33:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_FacetCutAction_$11058","typeString":"enum ICut.FacetCutAction"},"id":14850,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14846,"name":"action","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14823,"src":"2413:6:40","typeDescriptions":{"typeIdentifier":"t_enum$_FacetCutAction_$11058","typeString":"enum ICut.FacetCutAction"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":14847,"name":"ICut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11090,"src":"2423:4:40","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ICut_$11090_$","typeString":"type(contract ICut)"}},"id":14848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2428:14:40","memberName":"FacetCutAction","nodeType":"MemberAccess","referencedDeclaration":11058,"src":"2423:19:40","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FacetCutAction_$11058_$","typeString":"type(enum ICut.FacetCutAction)"}},"id":14849,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2443:7:40","memberName":"Replace","nodeType":"MemberAccess","referencedDeclaration":11056,"src":"2423:27:40","typeDescriptions":{"typeIdentifier":"t_enum$_FacetCutAction_$11058","typeString":"enum ICut.FacetCutAction"}},"src":"2413:37:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_FacetCutAction_$11058","typeString":"enum ICut.FacetCutAction"},"id":14867,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14863,"name":"action","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14823,"src":"2651:6:40","typeDescriptions":{"typeIdentifier":"t_enum$_FacetCutAction_$11058","typeString":"enum ICut.FacetCutAction"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":14864,"name":"ICut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11090,"src":"2661:4:40","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ICut_$11090_$","typeString":"type(contract ICut)"}},"id":14865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2666:14:40","memberName":"FacetCutAction","nodeType":"MemberAccess","referencedDeclaration":11058,"src":"2661:19:40","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FacetCutAction_$11058_$","typeString":"type(enum ICut.FacetCutAction)"}},"id":14866,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2681:6:40","memberName":"Remove","nodeType":"MemberAccess","referencedDeclaration":11057,"src":"2661:26:40","typeDescriptions":{"typeIdentifier":"t_enum$_FacetCutAction_$11058","typeString":"enum ICut.FacetCutAction"}},"src":"2651:36:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":14884,"nodeType":"Block","src":"2883:82:40","statements":[{"expression":{"arguments":[{"hexValue":"4c69624469616d6f6e644375743a20496e636f7272656374204661636574437574416374696f6e","id":14881,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2908:41:40","typeDescriptions":{"typeIdentifier":"t_stringliteral_48267d8daf5ea9c6bbad1fe9c53dc4c04a2a01b2b85bad432956cf42f45b2f54","typeString":"literal_string \"LibDiamondCut: Incorrect FacetCutAction\""},"value":"LibDiamondCut: Incorrect FacetCutAction"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_48267d8daf5ea9c6bbad1fe9c53dc4c04a2a01b2b85bad432956cf42f45b2f54","typeString":"literal_string \"LibDiamondCut: Incorrect FacetCutAction\""}],"id":14880,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"2901:6:40","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":14882,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2901:49:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14883,"nodeType":"ExpressionStatement","src":"2901:49:40"}]},"id":14885,"nodeType":"IfStatement","src":"2647:318:40","trueBody":{"id":14879,"nodeType":"Block","src":"2689:188:40","statements":[{"expression":{"arguments":[{"expression":{"baseExpression":{"id":14869,"name":"_diamondCut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14802,"src":"2745:11:40","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_FacetCut_$11067_memory_ptr_$dyn_memory_ptr","typeString":"struct ICut.FacetCut memory[] memory"}},"id":14871,"indexExpression":{"id":14870,"name":"facetIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14810,"src":"2757:10:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2745:23:40","typeDescriptions":{"typeIdentifier":"t_struct$_FacetCut_$11067_memory_ptr","typeString":"struct ICut.FacetCut memory"}},"id":14872,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2769:12:40","memberName":"facetAddress","nodeType":"MemberAccess","referencedDeclaration":11060,"src":"2745:36:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"baseExpression":{"id":14873,"name":"_diamondCut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14802,"src":"2803:11:40","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_FacetCut_$11067_memory_ptr_$dyn_memory_ptr","typeString":"struct ICut.FacetCut memory[] memory"}},"id":14875,"indexExpression":{"id":14874,"name":"facetIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14810,"src":"2815:10:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2803:23:40","typeDescriptions":{"typeIdentifier":"t_struct$_FacetCut_$11067_memory_ptr","typeString":"struct ICut.FacetCut memory"}},"id":14876,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2827:17:40","memberName":"functionSelectors","nodeType":"MemberAccess","referencedDeclaration":11066,"src":"2803:41:40","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}],"id":14868,"name":"_removeFunctions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15172,"src":"2707:16:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_array$_t_bytes4_$dyn_memory_ptr_$returns$__$","typeString":"function (address,bytes4[] memory)"}},"id":14877,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2707:155:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14878,"nodeType":"ExpressionStatement","src":"2707:155:40"}]}},"id":14886,"nodeType":"IfStatement","src":"2409:556:40","trueBody":{"id":14862,"nodeType":"Block","src":"2452:189:40","statements":[{"expression":{"arguments":[{"expression":{"baseExpression":{"id":14852,"name":"_diamondCut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14802,"src":"2509:11:40","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_FacetCut_$11067_memory_ptr_$dyn_memory_ptr","typeString":"struct ICut.FacetCut memory[] memory"}},"id":14854,"indexExpression":{"id":14853,"name":"facetIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14810,"src":"2521:10:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2509:23:40","typeDescriptions":{"typeIdentifier":"t_struct$_FacetCut_$11067_memory_ptr","typeString":"struct ICut.FacetCut memory"}},"id":14855,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2533:12:40","memberName":"facetAddress","nodeType":"MemberAccess","referencedDeclaration":11060,"src":"2509:36:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"baseExpression":{"id":14856,"name":"_diamondCut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14802,"src":"2567:11:40","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_FacetCut_$11067_memory_ptr_$dyn_memory_ptr","typeString":"struct ICut.FacetCut memory[] memory"}},"id":14858,"indexExpression":{"id":14857,"name":"facetIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14810,"src":"2579:10:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2567:23:40","typeDescriptions":{"typeIdentifier":"t_struct$_FacetCut_$11067_memory_ptr","typeString":"struct ICut.FacetCut memory"}},"id":14859,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2591:17:40","memberName":"functionSelectors","nodeType":"MemberAccess","referencedDeclaration":11066,"src":"2567:41:40","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}],"id":14851,"name":"_replaceFunctions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15107,"src":"2470:17:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_array$_t_bytes4_$dyn_memory_ptr_$returns$__$","typeString":"function (address,bytes4[] memory)"}},"id":14860,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2470:156:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14861,"nodeType":"ExpressionStatement","src":"2470:156:40"}]}},"id":14887,"nodeType":"IfStatement","src":"2179:786:40","trueBody":{"id":14845,"nodeType":"Block","src":"2218:185:40","statements":[{"expression":{"arguments":[{"expression":{"baseExpression":{"id":14835,"name":"_diamondCut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14802,"src":"2271:11:40","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_FacetCut_$11067_memory_ptr_$dyn_memory_ptr","typeString":"struct ICut.FacetCut memory[] memory"}},"id":14837,"indexExpression":{"id":14836,"name":"facetIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14810,"src":"2283:10:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2271:23:40","typeDescriptions":{"typeIdentifier":"t_struct$_FacetCut_$11067_memory_ptr","typeString":"struct ICut.FacetCut memory"}},"id":14838,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2295:12:40","memberName":"facetAddress","nodeType":"MemberAccess","referencedDeclaration":11060,"src":"2271:36:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"baseExpression":{"id":14839,"name":"_diamondCut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14802,"src":"2329:11:40","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_FacetCut_$11067_memory_ptr_$dyn_memory_ptr","typeString":"struct ICut.FacetCut memory[] memory"}},"id":14841,"indexExpression":{"id":14840,"name":"facetIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14810,"src":"2341:10:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2329:23:40","typeDescriptions":{"typeIdentifier":"t_struct$_FacetCut_$11067_memory_ptr","typeString":"struct ICut.FacetCut memory"}},"id":14842,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2353:17:40","memberName":"functionSelectors","nodeType":"MemberAccess","referencedDeclaration":11066,"src":"2329:41:40","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}],"id":14834,"name":"_addFunctions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15003,"src":"2236:13:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_array$_t_bytes4_$dyn_memory_ptr_$returns$__$","typeString":"function (address,bytes4[] memory)"}},"id":14843,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2236:152:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14844,"nodeType":"ExpressionStatement","src":"2236:152:40"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14815,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14812,"name":"facetIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14810,"src":"2024:10:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":14813,"name":"_diamondCut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14802,"src":"2037:11:40","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_FacetCut_$11067_memory_ptr_$dyn_memory_ptr","typeString":"struct ICut.FacetCut memory[] memory"}},"id":14814,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2049:6:40","memberName":"length","nodeType":"MemberAccess","src":"2037:18:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2024:31:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14889,"initializationExpression":{"assignments":[14810],"declarations":[{"constant":false,"id":14810,"mutability":"mutable","name":"facetIndex","nameLocation":"2000:10:40","nodeType":"VariableDeclaration","scope":14889,"src":"1992:18:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14809,"name":"uint256","nodeType":"ElementaryTypeName","src":"1992:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14811,"nodeType":"VariableDeclarationStatement","src":"1992:18:40"},"loopExpression":{"expression":{"id":14817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2069:12:40","subExpression":{"id":14816,"name":"facetIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14810,"src":"2069:10:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14818,"nodeType":"ExpressionStatement","src":"2069:12:40"},"nodeType":"ForStatement","src":"1974:1001:40"},{"eventCall":{"arguments":[{"id":14891,"name":"_diamondCut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14802,"src":"3000:11:40","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_FacetCut_$11067_memory_ptr_$dyn_memory_ptr","typeString":"struct ICut.FacetCut memory[] memory"}},{"id":14892,"name":"_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14804,"src":"3013:5:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14893,"name":"_calldata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14806,"src":"3020:9:40","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_FacetCut_$11067_memory_ptr_$dyn_memory_ptr","typeString":"struct ICut.FacetCut memory[] memory"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":14890,"name":"DiamondCut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14798,"src":"2989:10:40","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_array$_t_struct$_FacetCut_$11067_memory_ptr_$dyn_memory_ptr_$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (struct ICut.FacetCut memory[] memory,address,bytes memory)"}},"id":14894,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2989:41:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14895,"nodeType":"EmitStatement","src":"2984:46:40"},{"expression":{"arguments":[{"id":14897,"name":"_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14804,"src":"3062:5:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14898,"name":"_calldata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14806,"src":"3069:9:40","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":14896,"name":"_initializeDiamondCut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15461,"src":"3040:21:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":14899,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3040:39:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14900,"nodeType":"ExpressionStatement","src":"3040:39:40"}]},"id":14902,"implemented":true,"kind":"function","modifiers":[],"name":"_cut","nameLocation":"1845:4:40","nodeType":"FunctionDefinition","parameters":{"id":14807,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14802,"mutability":"mutable","name":"_diamondCut","nameLocation":"1882:11:40","nodeType":"VariableDeclaration","scope":14902,"src":"1859:34:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_FacetCut_$11067_memory_ptr_$dyn_memory_ptr","typeString":"struct ICut.FacetCut[]"},"typeName":{"baseType":{"id":14800,"nodeType":"UserDefinedTypeName","pathNode":{"id":14799,"name":"ICut.FacetCut","nameLocations":["1859:4:40","1864:8:40"],"nodeType":"IdentifierPath","referencedDeclaration":11067,"src":"1859:13:40"},"referencedDeclaration":11067,"src":"1859:13:40","typeDescriptions":{"typeIdentifier":"t_struct$_FacetCut_$11067_storage_ptr","typeString":"struct ICut.FacetCut"}},"id":14801,"nodeType":"ArrayTypeName","src":"1859:15:40","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_FacetCut_$11067_storage_$dyn_storage_ptr","typeString":"struct ICut.FacetCut[]"}},"visibility":"internal"},{"constant":false,"id":14804,"mutability":"mutable","name":"_init","nameLocation":"1911:5:40","nodeType":"VariableDeclaration","scope":14902,"src":"1903:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14803,"name":"address","nodeType":"ElementaryTypeName","src":"1903:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14806,"mutability":"mutable","name":"_calldata","nameLocation":"1939:9:40","nodeType":"VariableDeclaration","scope":14902,"src":"1926:22:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":14805,"name":"bytes","nodeType":"ElementaryTypeName","src":"1926:5:40","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1849:105:40"},"returnParameters":{"id":14808,"nodeType":"ParameterList","parameters":[],"src":"1964:0:40"},"scope":15481,"src":"1836:1250:40","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":15002,"nodeType":"Block","src":"3205:1193:40","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14914,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":14911,"name":"_functionSelectors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14907,"src":"3236:18:40","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}},"id":14912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3255:6:40","memberName":"length","nodeType":"MemberAccess","src":"3236:25:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":14913,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3264:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3236:29:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e20666163657420746f20637574","id":14915,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3279:45:40","typeDescriptions":{"typeIdentifier":"t_stringliteral_1ffc682bcfedefd5e93ba9ed0c2d1bc0b18319886e3b4bd28a03a3d3729f85c0","typeString":"literal_string \"LibDiamondCut: No selectors in facet to cut\""},"value":"LibDiamondCut: No selectors in facet to cut"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1ffc682bcfedefd5e93ba9ed0c2d1bc0b18319886e3b4bd28a03a3d3729f85c0","typeString":"literal_string \"LibDiamondCut: No selectors in facet to cut\""}],"id":14910,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3215:7:40","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14916,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3215:119:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14917,"nodeType":"ExpressionStatement","src":"3215:119:40"},{"assignments":[14920],"declarations":[{"constant":false,"id":14920,"mutability":"mutable","name":"s","nameLocation":"3367:1:40","nodeType":"VariableDeclaration","scope":15002,"src":"3344:24:40","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond"},"typeName":{"id":14919,"nodeType":"UserDefinedTypeName","pathNode":{"id":14918,"name":"StorageDiamond","nameLocations":["3344:14:40"],"nodeType":"IdentifierPath","referencedDeclaration":14776,"src":"3344:14:40"},"referencedDeclaration":14776,"src":"3344:14:40","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond"}},"visibility":"internal"}],"id":14923,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":14921,"name":"_storageDiamond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14788,"src":"3371:15:40","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageDiamond_$14776_storage_ptr_$","typeString":"function () pure returns (struct LibDiamond.StorageDiamond storage pointer)"}},"id":14922,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3371:17:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3344:44:40"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":14930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14925,"name":"_facetAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14904,"src":"3419:13:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":14928,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3444:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":14927,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3436:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14926,"name":"address","nodeType":"ElementaryTypeName","src":"3436:7:40","typeDescriptions":{}}},"id":14929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3436:10:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3419:27:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4c69624469616d6f6e644375743a204164642066616365742063616e27742062652061646472657373283029","id":14931,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3460:46:40","typeDescriptions":{"typeIdentifier":"t_stringliteral_64609d8b93c93a06b98d7db7a87b04044cd4a52c5661d603bb9b90ad8b914a3a","typeString":"literal_string \"LibDiamondCut: Add facet can't be address(0)\""},"value":"LibDiamondCut: Add facet can't be address(0)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_64609d8b93c93a06b98d7db7a87b04044cd4a52c5661d603bb9b90ad8b914a3a","typeString":"literal_string \"LibDiamondCut: Add facet can't be address(0)\""}],"id":14924,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3398:7:40","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14932,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3398:118:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14933,"nodeType":"ExpressionStatement","src":"3398:118:40"},{"assignments":[14935],"declarations":[{"constant":false,"id":14935,"mutability":"mutable","name":"selectorPosition","nameLocation":"3533:16:40","nodeType":"VariableDeclaration","scope":15002,"src":"3526:23:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":14934,"name":"uint96","nodeType":"ElementaryTypeName","src":"3526:6:40","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"id":14945,"initialValue":{"arguments":[{"expression":{"expression":{"baseExpression":{"expression":{"id":14938,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14920,"src":"3572:1:40","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":14939,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3574:22:40","memberName":"facetFunctionSelectors","nodeType":"MemberAccess","referencedDeclaration":14768,"src":"3572:24:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_FacetFunctionSelectors_$14758_storage_$","typeString":"mapping(address => struct LibDiamond.FacetFunctionSelectors storage ref)"}},"id":14941,"indexExpression":{"id":14940,"name":"_facetAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14904,"src":"3597:13:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3572:39:40","typeDescriptions":{"typeIdentifier":"t_struct$_FacetFunctionSelectors_$14758_storage","typeString":"struct LibDiamond.FacetFunctionSelectors storage ref"}},"id":14942,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3612:17:40","memberName":"functionSelectors","nodeType":"MemberAccess","referencedDeclaration":14755,"src":"3572:57:40","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage","typeString":"bytes4[] storage ref"}},"id":14943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3630:6:40","memberName":"length","nodeType":"MemberAccess","src":"3572:64:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14937,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3552:6:40","typeDescriptions":{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"},"typeName":{"id":14936,"name":"uint96","nodeType":"ElementaryTypeName","src":"3552:6:40","typeDescriptions":{}}},"id":14944,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3552:94:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"VariableDeclarationStatement","src":"3526:120:40"},{"condition":{"commonType":{"typeIdentifier":"t_uint96","typeString":"uint96"},"id":14948,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14946,"name":"selectorPosition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14935,"src":"3714:16:40","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":14947,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3734:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3714:21:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14955,"nodeType":"IfStatement","src":"3710:79:40","trueBody":{"id":14954,"nodeType":"Block","src":"3737:52:40","statements":[{"expression":{"arguments":[{"id":14950,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14920,"src":"3761:1:40","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},{"id":14951,"name":"_facetAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14904,"src":"3764:13:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"},{"typeIdentifier":"t_address","typeString":"address"}],"id":14949,"name":"_addFacet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15205,"src":"3751:9:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_StorageDiamond_$14776_storage_ptr_$_t_address_$returns$__$","typeString":"function (struct LibDiamond.StorageDiamond storage pointer,address)"}},"id":14952,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3751:27:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14953,"nodeType":"ExpressionStatement","src":"3751:27:40"}]}},{"body":{"id":15000,"nodeType":"Block","src":"3932:460:40","statements":[{"assignments":[14967],"declarations":[{"constant":false,"id":14967,"mutability":"mutable","name":"selector","nameLocation":"3953:8:40","nodeType":"VariableDeclaration","scope":15000,"src":"3946:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":14966,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3946:6:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"id":14971,"initialValue":{"baseExpression":{"id":14968,"name":"_functionSelectors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14907,"src":"3964:18:40","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}},"id":14970,"indexExpression":{"id":14969,"name":"selectorIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14957,"src":"3983:13:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3964:33:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"VariableDeclarationStatement","src":"3946:51:40"},{"assignments":[14973],"declarations":[{"constant":false,"id":14973,"mutability":"mutable","name":"oldFacetAddress","nameLocation":"4019:15:40","nodeType":"VariableDeclaration","scope":15000,"src":"4011:23:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14972,"name":"address","nodeType":"ElementaryTypeName","src":"4011:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":14979,"initialValue":{"expression":{"baseExpression":{"expression":{"id":14974,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14920,"src":"4037:1:40","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":14975,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4056:26:40","memberName":"selectorToFacetAndPosition","nodeType":"MemberAccess","referencedDeclaration":14763,"src":"4037:45:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_struct$_FacetAddressAndPosition_$14752_storage_$","typeString":"mapping(bytes4 => struct LibDiamond.FacetAddressAndPosition storage ref)"}},"id":14977,"indexExpression":{"id":14976,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14967,"src":"4083:8:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4037:55:40","typeDescriptions":{"typeIdentifier":"t_struct$_FacetAddressAndPosition_$14752_storage","typeString":"struct LibDiamond.FacetAddressAndPosition storage ref"}},"id":14978,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4110:12:40","memberName":"facetAddress","nodeType":"MemberAccess","referencedDeclaration":14749,"src":"4037:85:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4011:111:40"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":14986,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14981,"name":"oldFacetAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14973,"src":"4161:15:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":14984,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4188:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":14983,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4180:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14982,"name":"address","nodeType":"ElementaryTypeName","src":"4180:7:40","typeDescriptions":{}}},"id":14985,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4180:10:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4161:29:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f6e207468617420616c726561647920657869737473","id":14987,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4208:55:40","typeDescriptions":{"typeIdentifier":"t_stringliteral_99a7418ee014d613f46da44561258cdbb58064508097483a319062b99fa37700","typeString":"literal_string \"LibDiamondCut: Can't add function that already exists\""},"value":"LibDiamondCut: Can't add function that already exists"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_99a7418ee014d613f46da44561258cdbb58064508097483a319062b99fa37700","typeString":"literal_string \"LibDiamondCut: Can't add function that already exists\""}],"id":14980,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4136:7:40","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":14988,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4136:141:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14989,"nodeType":"ExpressionStatement","src":"4136:141:40"},{"expression":{"arguments":[{"id":14991,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14920,"src":"4304:1:40","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},{"id":14992,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14967,"src":"4307:8:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":14993,"name":"selectorPosition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14935,"src":"4317:16:40","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"id":14994,"name":"_facetAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14904,"src":"4335:13:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_address","typeString":"address"}],"id":14990,"name":"_addFunction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15246,"src":"4291:12:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_StorageDiamond_$14776_storage_ptr_$_t_bytes4_$_t_uint96_$_t_address_$returns$__$","typeString":"function (struct LibDiamond.StorageDiamond storage pointer,bytes4,uint96,address)"}},"id":14995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4291:58:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14996,"nodeType":"ExpressionStatement","src":"4291:58:40"},{"expression":{"id":14998,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"4363:18:40","subExpression":{"id":14997,"name":"selectorPosition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14935,"src":"4363:16:40","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"id":14999,"nodeType":"ExpressionStatement","src":"4363:18:40"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14959,"name":"selectorIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14957,"src":"3851:13:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":14960,"name":"_functionSelectors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14907,"src":"3867:18:40","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}},"id":14961,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3886:6:40","memberName":"length","nodeType":"MemberAccess","src":"3867:25:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3851:41:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15001,"initializationExpression":{"assignments":[14957],"declarations":[{"constant":false,"id":14957,"mutability":"mutable","name":"selectorIndex","nameLocation":"3824:13:40","nodeType":"VariableDeclaration","scope":15001,"src":"3816:21:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14956,"name":"uint256","nodeType":"ElementaryTypeName","src":"3816:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14958,"nodeType":"VariableDeclarationStatement","src":"3816:21:40"},"loopExpression":{"expression":{"id":14964,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"3906:15:40","subExpression":{"id":14963,"name":"selectorIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14957,"src":"3906:13:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14965,"nodeType":"ExpressionStatement","src":"3906:15:40"},"nodeType":"ForStatement","src":"3798:594:40"}]},"id":15003,"implemented":true,"kind":"function","modifiers":[],"name":"_addFunctions","nameLocation":"3101:13:40","nodeType":"FunctionDefinition","parameters":{"id":14908,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14904,"mutability":"mutable","name":"_facetAddress","nameLocation":"3132:13:40","nodeType":"VariableDeclaration","scope":15003,"src":"3124:21:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14903,"name":"address","nodeType":"ElementaryTypeName","src":"3124:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14907,"mutability":"mutable","name":"_functionSelectors","nameLocation":"3171:18:40","nodeType":"VariableDeclaration","scope":15003,"src":"3155:34:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[]"},"typeName":{"baseType":{"id":14905,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3155:6:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":14906,"nodeType":"ArrayTypeName","src":"3155:8:40","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage_ptr","typeString":"bytes4[]"}},"visibility":"internal"}],"src":"3114:81:40"},"returnParameters":{"id":14909,"nodeType":"ParameterList","parameters":[],"src":"3205:0:40"},"scope":15481,"src":"3092:1306:40","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":15106,"nodeType":"Block","src":"4521:1258:40","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":15012,"name":"_functionSelectors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15008,"src":"4552:18:40","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}},"id":15013,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4571:6:40","memberName":"length","nodeType":"MemberAccess","src":"4552:25:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":15014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4580:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4552:29:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e20666163657420746f20637574","id":15016,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4595:45:40","typeDescriptions":{"typeIdentifier":"t_stringliteral_1ffc682bcfedefd5e93ba9ed0c2d1bc0b18319886e3b4bd28a03a3d3729f85c0","typeString":"literal_string \"LibDiamondCut: No selectors in facet to cut\""},"value":"LibDiamondCut: No selectors in facet to cut"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1ffc682bcfedefd5e93ba9ed0c2d1bc0b18319886e3b4bd28a03a3d3729f85c0","typeString":"literal_string \"LibDiamondCut: No selectors in facet to cut\""}],"id":15011,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4531:7:40","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15017,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4531:119:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15018,"nodeType":"ExpressionStatement","src":"4531:119:40"},{"assignments":[15021],"declarations":[{"constant":false,"id":15021,"mutability":"mutable","name":"s","nameLocation":"4683:1:40","nodeType":"VariableDeclaration","scope":15106,"src":"4660:24:40","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond"},"typeName":{"id":15020,"nodeType":"UserDefinedTypeName","pathNode":{"id":15019,"name":"StorageDiamond","nameLocations":["4660:14:40"],"nodeType":"IdentifierPath","referencedDeclaration":14776,"src":"4660:14:40"},"referencedDeclaration":14776,"src":"4660:14:40","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond"}},"visibility":"internal"}],"id":15024,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":15022,"name":"_storageDiamond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14788,"src":"4687:15:40","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageDiamond_$14776_storage_ptr_$","typeString":"function () pure returns (struct LibDiamond.StorageDiamond storage pointer)"}},"id":15023,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4687:17:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4660:44:40"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":15031,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15026,"name":"_facetAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15005,"src":"4735:13:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":15029,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4760:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":15028,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4752:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15027,"name":"address","nodeType":"ElementaryTypeName","src":"4752:7:40","typeDescriptions":{}}},"id":15030,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4752:10:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4735:27:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4c69624469616d6f6e644375743a204164642066616365742063616e27742062652061646472657373283029","id":15032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4776:46:40","typeDescriptions":{"typeIdentifier":"t_stringliteral_64609d8b93c93a06b98d7db7a87b04044cd4a52c5661d603bb9b90ad8b914a3a","typeString":"literal_string \"LibDiamondCut: Add facet can't be address(0)\""},"value":"LibDiamondCut: Add facet can't be address(0)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_64609d8b93c93a06b98d7db7a87b04044cd4a52c5661d603bb9b90ad8b914a3a","typeString":"literal_string \"LibDiamondCut: Add facet can't be address(0)\""}],"id":15025,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4714:7:40","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15033,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4714:118:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15034,"nodeType":"ExpressionStatement","src":"4714:118:40"},{"assignments":[15036],"declarations":[{"constant":false,"id":15036,"mutability":"mutable","name":"selectorPosition","nameLocation":"4849:16:40","nodeType":"VariableDeclaration","scope":15106,"src":"4842:23:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":15035,"name":"uint96","nodeType":"ElementaryTypeName","src":"4842:6:40","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"id":15046,"initialValue":{"arguments":[{"expression":{"expression":{"baseExpression":{"expression":{"id":15039,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15021,"src":"4888:1:40","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":15040,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4890:22:40","memberName":"facetFunctionSelectors","nodeType":"MemberAccess","referencedDeclaration":14768,"src":"4888:24:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_FacetFunctionSelectors_$14758_storage_$","typeString":"mapping(address => struct LibDiamond.FacetFunctionSelectors storage ref)"}},"id":15042,"indexExpression":{"id":15041,"name":"_facetAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15005,"src":"4913:13:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4888:39:40","typeDescriptions":{"typeIdentifier":"t_struct$_FacetFunctionSelectors_$14758_storage","typeString":"struct LibDiamond.FacetFunctionSelectors storage ref"}},"id":15043,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4928:17:40","memberName":"functionSelectors","nodeType":"MemberAccess","referencedDeclaration":14755,"src":"4888:57:40","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage","typeString":"bytes4[] storage ref"}},"id":15044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4946:6:40","memberName":"length","nodeType":"MemberAccess","src":"4888:64:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15038,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4868:6:40","typeDescriptions":{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"},"typeName":{"id":15037,"name":"uint96","nodeType":"ElementaryTypeName","src":"4868:6:40","typeDescriptions":{}}},"id":15045,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4868:94:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"VariableDeclarationStatement","src":"4842:120:40"},{"condition":{"commonType":{"typeIdentifier":"t_uint96","typeString":"uint96"},"id":15049,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15047,"name":"selectorPosition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15036,"src":"5030:16:40","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":15048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5050:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5030:21:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15056,"nodeType":"IfStatement","src":"5026:79:40","trueBody":{"id":15055,"nodeType":"Block","src":"5053:52:40","statements":[{"expression":{"arguments":[{"id":15051,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15021,"src":"5077:1:40","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},{"id":15052,"name":"_facetAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15005,"src":"5080:13:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"},{"typeIdentifier":"t_address","typeString":"address"}],"id":15050,"name":"_addFacet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15205,"src":"5067:9:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_StorageDiamond_$14776_storage_ptr_$_t_address_$returns$__$","typeString":"function (struct LibDiamond.StorageDiamond storage pointer,address)"}},"id":15053,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5067:27:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15054,"nodeType":"ExpressionStatement","src":"5067:27:40"}]}},{"body":{"id":15104,"nodeType":"Block","src":"5248:525:40","statements":[{"assignments":[15068],"declarations":[{"constant":false,"id":15068,"mutability":"mutable","name":"selector","nameLocation":"5269:8:40","nodeType":"VariableDeclaration","scope":15104,"src":"5262:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":15067,"name":"bytes4","nodeType":"ElementaryTypeName","src":"5262:6:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"id":15072,"initialValue":{"baseExpression":{"id":15069,"name":"_functionSelectors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15008,"src":"5280:18:40","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}},"id":15071,"indexExpression":{"id":15070,"name":"selectorIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15058,"src":"5299:13:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5280:33:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"VariableDeclarationStatement","src":"5262:51:40"},{"assignments":[15074],"declarations":[{"constant":false,"id":15074,"mutability":"mutable","name":"oldFacetAddress","nameLocation":"5335:15:40","nodeType":"VariableDeclaration","scope":15104,"src":"5327:23:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15073,"name":"address","nodeType":"ElementaryTypeName","src":"5327:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":15080,"initialValue":{"expression":{"baseExpression":{"expression":{"id":15075,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15021,"src":"5353:1:40","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":15076,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5372:26:40","memberName":"selectorToFacetAndPosition","nodeType":"MemberAccess","referencedDeclaration":14763,"src":"5353:45:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_struct$_FacetAddressAndPosition_$14752_storage_$","typeString":"mapping(bytes4 => struct LibDiamond.FacetAddressAndPosition storage ref)"}},"id":15078,"indexExpression":{"id":15077,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15068,"src":"5399:8:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5353:55:40","typeDescriptions":{"typeIdentifier":"t_struct$_FacetAddressAndPosition_$14752_storage","typeString":"struct LibDiamond.FacetAddressAndPosition storage ref"}},"id":15079,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5426:12:40","memberName":"facetAddress","nodeType":"MemberAccess","referencedDeclaration":14749,"src":"5353:85:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5327:111:40"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":15084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15082,"name":"oldFacetAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15074,"src":"5477:15:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":15083,"name":"_facetAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15005,"src":"5496:13:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5477:32:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e6374696f6e20776974682073616d652066756e6374696f6e","id":15085,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5527:58:40","typeDescriptions":{"typeIdentifier":"t_stringliteral_b5a7112edf707196456f338fdcc19cd849be6cb8c0d166bcd035f4cfb00e7078","typeString":"literal_string \"LibDiamondCut: Can't replace function with same function\""},"value":"LibDiamondCut: Can't replace function with same function"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b5a7112edf707196456f338fdcc19cd849be6cb8c0d166bcd035f4cfb00e7078","typeString":"literal_string \"LibDiamondCut: Can't replace function with same function\""}],"id":15081,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5452:7:40","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15086,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5452:147:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15087,"nodeType":"ExpressionStatement","src":"5452:147:40"},{"expression":{"arguments":[{"id":15089,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15021,"src":"5629:1:40","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},{"id":15090,"name":"oldFacetAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15074,"src":"5632:15:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15091,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15068,"src":"5649:8:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":15088,"name":"_removeFunction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15413,"src":"5613:15:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_StorageDiamond_$14776_storage_ptr_$_t_address_$_t_bytes4_$returns$__$","typeString":"function (struct LibDiamond.StorageDiamond storage pointer,address,bytes4)"}},"id":15092,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5613:45:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15093,"nodeType":"ExpressionStatement","src":"5613:45:40"},{"expression":{"arguments":[{"id":15095,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15021,"src":"5685:1:40","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},{"id":15096,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15068,"src":"5688:8:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":15097,"name":"selectorPosition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15036,"src":"5698:16:40","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"id":15098,"name":"_facetAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15005,"src":"5716:13:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_address","typeString":"address"}],"id":15094,"name":"_addFunction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15246,"src":"5672:12:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_StorageDiamond_$14776_storage_ptr_$_t_bytes4_$_t_uint96_$_t_address_$returns$__$","typeString":"function (struct LibDiamond.StorageDiamond storage pointer,bytes4,uint96,address)"}},"id":15099,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5672:58:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15100,"nodeType":"ExpressionStatement","src":"5672:58:40"},{"expression":{"id":15102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"5744:18:40","subExpression":{"id":15101,"name":"selectorPosition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15036,"src":"5744:16:40","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"id":15103,"nodeType":"ExpressionStatement","src":"5744:18:40"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15063,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15060,"name":"selectorIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15058,"src":"5167:13:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":15061,"name":"_functionSelectors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15008,"src":"5183:18:40","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}},"id":15062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5202:6:40","memberName":"length","nodeType":"MemberAccess","src":"5183:25:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5167:41:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15105,"initializationExpression":{"assignments":[15058],"declarations":[{"constant":false,"id":15058,"mutability":"mutable","name":"selectorIndex","nameLocation":"5140:13:40","nodeType":"VariableDeclaration","scope":15105,"src":"5132:21:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15057,"name":"uint256","nodeType":"ElementaryTypeName","src":"5132:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15059,"nodeType":"VariableDeclarationStatement","src":"5132:21:40"},"loopExpression":{"expression":{"id":15065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"5222:15:40","subExpression":{"id":15064,"name":"selectorIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15058,"src":"5222:13:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15066,"nodeType":"ExpressionStatement","src":"5222:15:40"},"nodeType":"ForStatement","src":"5114:659:40"}]},"id":15107,"implemented":true,"kind":"function","modifiers":[],"name":"_replaceFunctions","nameLocation":"4413:17:40","nodeType":"FunctionDefinition","parameters":{"id":15009,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15005,"mutability":"mutable","name":"_facetAddress","nameLocation":"4448:13:40","nodeType":"VariableDeclaration","scope":15107,"src":"4440:21:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15004,"name":"address","nodeType":"ElementaryTypeName","src":"4440:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15008,"mutability":"mutable","name":"_functionSelectors","nameLocation":"4487:18:40","nodeType":"VariableDeclaration","scope":15107,"src":"4471:34:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[]"},"typeName":{"baseType":{"id":15006,"name":"bytes4","nodeType":"ElementaryTypeName","src":"4471:6:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":15007,"nodeType":"ArrayTypeName","src":"4471:8:40","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage_ptr","typeString":"bytes4[]"}},"visibility":"internal"}],"src":"4430:81:40"},"returnParameters":{"id":15010,"nodeType":"ParameterList","parameters":[],"src":"4521:0:40"},"scope":15481,"src":"4404:1375:40","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":15171,"nodeType":"Block","src":"5901:796:40","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15119,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":15116,"name":"_functionSelectors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15112,"src":"5932:18:40","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}},"id":15117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5951:6:40","memberName":"length","nodeType":"MemberAccess","src":"5932:25:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":15118,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5960:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5932:29:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e20666163657420746f20637574","id":15120,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5975:45:40","typeDescriptions":{"typeIdentifier":"t_stringliteral_1ffc682bcfedefd5e93ba9ed0c2d1bc0b18319886e3b4bd28a03a3d3729f85c0","typeString":"literal_string \"LibDiamondCut: No selectors in facet to cut\""},"value":"LibDiamondCut: No selectors in facet to cut"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1ffc682bcfedefd5e93ba9ed0c2d1bc0b18319886e3b4bd28a03a3d3729f85c0","typeString":"literal_string \"LibDiamondCut: No selectors in facet to cut\""}],"id":15115,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5911:7:40","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15121,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5911:119:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15122,"nodeType":"ExpressionStatement","src":"5911:119:40"},{"assignments":[15125],"declarations":[{"constant":false,"id":15125,"mutability":"mutable","name":"s","nameLocation":"6063:1:40","nodeType":"VariableDeclaration","scope":15171,"src":"6040:24:40","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond"},"typeName":{"id":15124,"nodeType":"UserDefinedTypeName","pathNode":{"id":15123,"name":"StorageDiamond","nameLocations":["6040:14:40"],"nodeType":"IdentifierPath","referencedDeclaration":14776,"src":"6040:14:40"},"referencedDeclaration":14776,"src":"6040:14:40","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond"}},"visibility":"internal"}],"id":15128,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":15126,"name":"_storageDiamond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14788,"src":"6067:15:40","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageDiamond_$14776_storage_ptr_$","typeString":"function () pure returns (struct LibDiamond.StorageDiamond storage pointer)"}},"id":15127,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6067:17:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"6040:44:40"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":15135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15130,"name":"_facetAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15109,"src":"6180:13:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":15133,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6205:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":15132,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6197:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15131,"name":"address","nodeType":"ElementaryTypeName","src":"6197:7:40","typeDescriptions":{}}},"id":15134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6197:10:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6180:27:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4c69624469616d6f6e644375743a2052656d6f76652066616365742061646472657373206d7573742062652061646472657373283029","id":15136,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6221:56:40","typeDescriptions":{"typeIdentifier":"t_stringliteral_b739aae768f79b96e91d9f66398733516895e39eb09ee54a795b49dcc77504d4","typeString":"literal_string \"LibDiamondCut: Remove facet address must be address(0)\""},"value":"LibDiamondCut: Remove facet address must be address(0)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b739aae768f79b96e91d9f66398733516895e39eb09ee54a795b49dcc77504d4","typeString":"literal_string \"LibDiamondCut: Remove facet address must be address(0)\""}],"id":15129,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6159:7:40","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15137,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6159:128:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15138,"nodeType":"ExpressionStatement","src":"6159:128:40"},{"body":{"id":15169,"nodeType":"Block","src":"6431:260:40","statements":[{"assignments":[15150],"declarations":[{"constant":false,"id":15150,"mutability":"mutable","name":"selector","nameLocation":"6452:8:40","nodeType":"VariableDeclaration","scope":15169,"src":"6445:15:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":15149,"name":"bytes4","nodeType":"ElementaryTypeName","src":"6445:6:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"id":15154,"initialValue":{"baseExpression":{"id":15151,"name":"_functionSelectors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15112,"src":"6463:18:40","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}},"id":15153,"indexExpression":{"id":15152,"name":"selectorIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15140,"src":"6482:13:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6463:33:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"VariableDeclarationStatement","src":"6445:51:40"},{"assignments":[15156],"declarations":[{"constant":false,"id":15156,"mutability":"mutable","name":"oldFacetAddress","nameLocation":"6518:15:40","nodeType":"VariableDeclaration","scope":15169,"src":"6510:23:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15155,"name":"address","nodeType":"ElementaryTypeName","src":"6510:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":15162,"initialValue":{"expression":{"baseExpression":{"expression":{"id":15157,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15125,"src":"6536:1:40","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":15158,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6555:26:40","memberName":"selectorToFacetAndPosition","nodeType":"MemberAccess","referencedDeclaration":14763,"src":"6536:45:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_struct$_FacetAddressAndPosition_$14752_storage_$","typeString":"mapping(bytes4 => struct LibDiamond.FacetAddressAndPosition storage ref)"}},"id":15160,"indexExpression":{"id":15159,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15150,"src":"6582:8:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6536:55:40","typeDescriptions":{"typeIdentifier":"t_struct$_FacetAddressAndPosition_$14752_storage","typeString":"struct LibDiamond.FacetAddressAndPosition storage ref"}},"id":15161,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6609:12:40","memberName":"facetAddress","nodeType":"MemberAccess","referencedDeclaration":14749,"src":"6536:85:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6510:111:40"},{"expression":{"arguments":[{"id":15164,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15125,"src":"6651:1:40","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},{"id":15165,"name":"oldFacetAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15156,"src":"6654:15:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15166,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15150,"src":"6671:8:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":15163,"name":"_removeFunction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15413,"src":"6635:15:40","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_StorageDiamond_$14776_storage_ptr_$_t_address_$_t_bytes4_$returns$__$","typeString":"function (struct LibDiamond.StorageDiamond storage pointer,address,bytes4)"}},"id":15167,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6635:45:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15168,"nodeType":"ExpressionStatement","src":"6635:45:40"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15142,"name":"selectorIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15140,"src":"6350:13:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":15143,"name":"_functionSelectors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15112,"src":"6366:18:40","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}},"id":15144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6385:6:40","memberName":"length","nodeType":"MemberAccess","src":"6366:25:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6350:41:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15170,"initializationExpression":{"assignments":[15140],"declarations":[{"constant":false,"id":15140,"mutability":"mutable","name":"selectorIndex","nameLocation":"6323:13:40","nodeType":"VariableDeclaration","scope":15170,"src":"6315:21:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15139,"name":"uint256","nodeType":"ElementaryTypeName","src":"6315:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15141,"nodeType":"VariableDeclarationStatement","src":"6315:21:40"},"loopExpression":{"expression":{"id":15147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"6405:15:40","subExpression":{"id":15146,"name":"selectorIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15140,"src":"6405:13:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15148,"nodeType":"ExpressionStatement","src":"6405:15:40"},"nodeType":"ForStatement","src":"6297:394:40"}]},"id":15172,"implemented":true,"kind":"function","modifiers":[],"name":"_removeFunctions","nameLocation":"5794:16:40","nodeType":"FunctionDefinition","parameters":{"id":15113,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15109,"mutability":"mutable","name":"_facetAddress","nameLocation":"5828:13:40","nodeType":"VariableDeclaration","scope":15172,"src":"5820:21:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15108,"name":"address","nodeType":"ElementaryTypeName","src":"5820:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15112,"mutability":"mutable","name":"_functionSelectors","nameLocation":"5867:18:40","nodeType":"VariableDeclaration","scope":15172,"src":"5851:34:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[]"},"typeName":{"baseType":{"id":15110,"name":"bytes4","nodeType":"ElementaryTypeName","src":"5851:6:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":15111,"nodeType":"ArrayTypeName","src":"5851:8:40","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage_ptr","typeString":"bytes4[]"}},"visibility":"internal"}],"src":"5810:81:40"},"returnParameters":{"id":15114,"nodeType":"ParameterList","parameters":[],"src":"5901:0:40"},"scope":15481,"src":"5785:912:40","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":15204,"nodeType":"Block","src":"6802:297:40","statements":[{"expression":{"arguments":[{"id":15181,"name":"_facetAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15177,"src":"6849:13:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"4c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465","id":15182,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6876:38:40","typeDescriptions":{"typeIdentifier":"t_stringliteral_846ccbeb9c32d4d40d2c1bf991251db6ab65744a2f52b273947cee088a65504b","typeString":"literal_string \"LibDiamondCut: New facet has no code\""},"value":"LibDiamondCut: New facet has no code"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_stringliteral_846ccbeb9c32d4d40d2c1bf991251db6ab65744a2f52b273947cee088a65504b","typeString":"literal_string \"LibDiamondCut: New facet has no code\""}],"id":15180,"name":"_requireHasContractCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15480,"src":"6812:23:40","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_string_memory_ptr_$returns$__$","typeString":"function (address,string memory) view"}},"id":15183,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6812:112:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15184,"nodeType":"ExpressionStatement","src":"6812:112:40"},{"expression":{"id":15194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":15185,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15175,"src":"6934:1:40","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":15188,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6936:22:40","memberName":"facetFunctionSelectors","nodeType":"MemberAccess","referencedDeclaration":14768,"src":"6934:24:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_FacetFunctionSelectors_$14758_storage_$","typeString":"mapping(address => struct LibDiamond.FacetFunctionSelectors storage ref)"}},"id":15189,"indexExpression":{"id":15187,"name":"_facetAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15177,"src":"6959:13:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6934:39:40","typeDescriptions":{"typeIdentifier":"t_struct$_FacetFunctionSelectors_$14758_storage","typeString":"struct LibDiamond.FacetFunctionSelectors storage ref"}},"id":15190,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6974:20:40","memberName":"facetAddressPosition","nodeType":"MemberAccess","referencedDeclaration":14757,"src":"6934:60:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":15191,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15175,"src":"6997:1:40","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":15192,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7012:14:40","memberName":"facetAddresses","nodeType":"MemberAccess","referencedDeclaration":14771,"src":"6997:29:40","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":15193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7040:6:40","memberName":"length","nodeType":"MemberAccess","src":"6997:49:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6934:112:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15195,"nodeType":"ExpressionStatement","src":"6934:112:40"},{"expression":{"arguments":[{"id":15201,"name":"_facetAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15177,"src":"7078:13:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"id":15196,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15175,"src":"7056:1:40","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":15199,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7058:14:40","memberName":"facetAddresses","nodeType":"MemberAccess","referencedDeclaration":14771,"src":"7056:16:40","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":15200,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7073:4:40","memberName":"push","nodeType":"MemberAccess","src":"7056:21:40","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$_t_address_$returns$__$attached_to$_t_array$_t_address_$dyn_storage_ptr_$","typeString":"function (address[] storage pointer,address)"}},"id":15202,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7056:36:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15203,"nodeType":"ExpressionStatement","src":"7056:36:40"}]},"id":15205,"implemented":true,"kind":"function","modifiers":[],"name":"_addFacet","nameLocation":"6712:9:40","nodeType":"FunctionDefinition","parameters":{"id":15178,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15175,"mutability":"mutable","name":"s","nameLocation":"6754:1:40","nodeType":"VariableDeclaration","scope":15205,"src":"6731:24:40","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond"},"typeName":{"id":15174,"nodeType":"UserDefinedTypeName","pathNode":{"id":15173,"name":"StorageDiamond","nameLocations":["6731:14:40"],"nodeType":"IdentifierPath","referencedDeclaration":14776,"src":"6731:14:40"},"referencedDeclaration":14776,"src":"6731:14:40","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond"}},"visibility":"internal"},{"constant":false,"id":15177,"mutability":"mutable","name":"_facetAddress","nameLocation":"6773:13:40","nodeType":"VariableDeclaration","scope":15205,"src":"6765:21:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15176,"name":"address","nodeType":"ElementaryTypeName","src":"6765:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6721:71:40"},"returnParameters":{"id":15179,"nodeType":"ParameterList","parameters":[],"src":"6802:0:40"},"scope":15481,"src":"6703:396:40","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":15245,"nodeType":"Block","src":"7267:310:40","statements":[{"expression":{"id":15224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":15217,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15208,"src":"7277:1:40","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":15220,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7292:26:40","memberName":"selectorToFacetAndPosition","nodeType":"MemberAccess","referencedDeclaration":14763,"src":"7277:41:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_struct$_FacetAddressAndPosition_$14752_storage_$","typeString":"mapping(bytes4 => struct LibDiamond.FacetAddressAndPosition storage ref)"}},"id":15221,"indexExpression":{"id":15219,"name":"_selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15210,"src":"7319:9:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7277:52:40","typeDescriptions":{"typeIdentifier":"t_struct$_FacetAddressAndPosition_$14752_storage","typeString":"struct LibDiamond.FacetAddressAndPosition storage ref"}},"id":15222,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7343:24:40","memberName":"functionSelectorPosition","nodeType":"MemberAccess","referencedDeclaration":14751,"src":"7277:90:40","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":15223,"name":"_selectorPosition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15212,"src":"7370:17:40","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"7277:110:40","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"id":15225,"nodeType":"ExpressionStatement","src":"7277:110:40"},{"expression":{"arguments":[{"id":15233,"name":"_selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15210,"src":"7473:9:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"expression":{"baseExpression":{"expression":{"id":15226,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15208,"src":"7397:1:40","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":15229,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7399:22:40","memberName":"facetFunctionSelectors","nodeType":"MemberAccess","referencedDeclaration":14768,"src":"7397:24:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_FacetFunctionSelectors_$14758_storage_$","typeString":"mapping(address => struct LibDiamond.FacetFunctionSelectors storage ref)"}},"id":15230,"indexExpression":{"id":15228,"name":"_facetAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15214,"src":"7422:13:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7397:39:40","typeDescriptions":{"typeIdentifier":"t_struct$_FacetFunctionSelectors_$14758_storage","typeString":"struct LibDiamond.FacetFunctionSelectors storage ref"}},"id":15231,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7437:17:40","memberName":"functionSelectors","nodeType":"MemberAccess","referencedDeclaration":14755,"src":"7397:57:40","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage","typeString":"bytes4[] storage ref"}},"id":15232,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7455:4:40","memberName":"push","nodeType":"MemberAccess","src":"7397:62:40","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_bytes4_$dyn_storage_ptr_$_t_bytes4_$returns$__$attached_to$_t_array$_t_bytes4_$dyn_storage_ptr_$","typeString":"function (bytes4[] storage pointer,bytes4)"}},"id":15234,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7397:95:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15235,"nodeType":"ExpressionStatement","src":"7397:95:40"},{"expression":{"id":15243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":15236,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15208,"src":"7502:1:40","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":15239,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7504:26:40","memberName":"selectorToFacetAndPosition","nodeType":"MemberAccess","referencedDeclaration":14763,"src":"7502:28:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_struct$_FacetAddressAndPosition_$14752_storage_$","typeString":"mapping(bytes4 => struct LibDiamond.FacetAddressAndPosition storage ref)"}},"id":15240,"indexExpression":{"id":15238,"name":"_selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15210,"src":"7531:9:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7502:39:40","typeDescriptions":{"typeIdentifier":"t_struct$_FacetAddressAndPosition_$14752_storage","typeString":"struct LibDiamond.FacetAddressAndPosition storage ref"}},"id":15241,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7542:12:40","memberName":"facetAddress","nodeType":"MemberAccess","referencedDeclaration":14749,"src":"7502:52:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":15242,"name":"_facetAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15214,"src":"7557:13:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7502:68:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":15244,"nodeType":"ExpressionStatement","src":"7502:68:40"}]},"id":15246,"implemented":true,"kind":"function","modifiers":[],"name":"_addFunction","nameLocation":"7114:12:40","nodeType":"FunctionDefinition","parameters":{"id":15215,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15208,"mutability":"mutable","name":"s","nameLocation":"7159:1:40","nodeType":"VariableDeclaration","scope":15246,"src":"7136:24:40","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond"},"typeName":{"id":15207,"nodeType":"UserDefinedTypeName","pathNode":{"id":15206,"name":"StorageDiamond","nameLocations":["7136:14:40"],"nodeType":"IdentifierPath","referencedDeclaration":14776,"src":"7136:14:40"},"referencedDeclaration":14776,"src":"7136:14:40","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond"}},"visibility":"internal"},{"constant":false,"id":15210,"mutability":"mutable","name":"_selector","nameLocation":"7177:9:40","nodeType":"VariableDeclaration","scope":15246,"src":"7170:16:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":15209,"name":"bytes4","nodeType":"ElementaryTypeName","src":"7170:6:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"},{"constant":false,"id":15212,"mutability":"mutable","name":"_selectorPosition","nameLocation":"7203:17:40","nodeType":"VariableDeclaration","scope":15246,"src":"7196:24:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":15211,"name":"uint96","nodeType":"ElementaryTypeName","src":"7196:6:40","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":15214,"mutability":"mutable","name":"_facetAddress","nameLocation":"7238:13:40","nodeType":"VariableDeclaration","scope":15246,"src":"7230:21:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15213,"name":"address","nodeType":"ElementaryTypeName","src":"7230:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7126:131:40"},"returnParameters":{"id":15216,"nodeType":"ParameterList","parameters":[],"src":"7267:0:40"},"scope":15481,"src":"7105:472:40","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":15412,"nodeType":"Block","src":"7714:2420:40","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":15262,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15257,"name":"_facetAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15251,"src":"7745:13:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":15260,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7770:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":15259,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7762:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15258,"name":"address","nodeType":"ElementaryTypeName","src":"7762:7:40","typeDescriptions":{}}},"id":15261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7762:10:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7745:27:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6374696f6e207468617420646f65736e2774206578697374","id":15263,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7786:57:40","typeDescriptions":{"typeIdentifier":"t_stringliteral_2c590e498c4d56c984a7092fd5e89a68b9f4541ce9f97252fb74e44a00ffbb71","typeString":"literal_string \"LibDiamondCut: Can't remove function that doesn't exist\""},"value":"LibDiamondCut: Can't remove function that doesn't exist"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2c590e498c4d56c984a7092fd5e89a68b9f4541ce9f97252fb74e44a00ffbb71","typeString":"literal_string \"LibDiamondCut: Can't remove function that doesn't exist\""}],"id":15256,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7724:7:40","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15264,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7724:129:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15265,"nodeType":"ExpressionStatement","src":"7724:129:40"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":15272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15267,"name":"_facetAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15251,"src":"7961:13:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":15270,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"7986:4:40","typeDescriptions":{"typeIdentifier":"t_contract$_LibDiamond_$15481","typeString":"library LibDiamond"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LibDiamond_$15481","typeString":"library LibDiamond"}],"id":15269,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7978:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15268,"name":"address","nodeType":"ElementaryTypeName","src":"7978:7:40","typeDescriptions":{}}},"id":15271,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7978:13:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7961:30:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d757461626c652066756e6374696f6e","id":15273,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8005:48:40","typeDescriptions":{"typeIdentifier":"t_stringliteral_8ba063dfaa4be2d2cbe73dbb1364728b0f7031ac048441d5fad19e9541992b21","typeString":"literal_string \"LibDiamondCut: Can't remove immutable function\""},"value":"LibDiamondCut: Can't remove immutable function"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8ba063dfaa4be2d2cbe73dbb1364728b0f7031ac048441d5fad19e9541992b21","typeString":"literal_string \"LibDiamondCut: Can't remove immutable function\""}],"id":15266,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7940:7:40","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15274,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7940:123:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15275,"nodeType":"ExpressionStatement","src":"7940:123:40"},{"assignments":[15277],"declarations":[{"constant":false,"id":15277,"mutability":"mutable","name":"selectorPosition","nameLocation":"8155:16:40","nodeType":"VariableDeclaration","scope":15412,"src":"8147:24:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15276,"name":"uint256","nodeType":"ElementaryTypeName","src":"8147:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15283,"initialValue":{"expression":{"baseExpression":{"expression":{"id":15278,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15249,"src":"8174:1:40","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":15279,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8189:26:40","memberName":"selectorToFacetAndPosition","nodeType":"MemberAccess","referencedDeclaration":14763,"src":"8174:41:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_struct$_FacetAddressAndPosition_$14752_storage_$","typeString":"mapping(bytes4 => struct LibDiamond.FacetAddressAndPosition storage ref)"}},"id":15281,"indexExpression":{"id":15280,"name":"_selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15253,"src":"8216:9:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8174:52:40","typeDescriptions":{"typeIdentifier":"t_struct$_FacetAddressAndPosition_$14752_storage","typeString":"struct LibDiamond.FacetAddressAndPosition storage ref"}},"id":15282,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8240:24:40","memberName":"functionSelectorPosition","nodeType":"MemberAccess","referencedDeclaration":14751,"src":"8174:90:40","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"VariableDeclarationStatement","src":"8147:117:40"},{"assignments":[15285],"declarations":[{"constant":false,"id":15285,"mutability":"mutable","name":"lastSelectorPosition","nameLocation":"8282:20:40","nodeType":"VariableDeclaration","scope":15412,"src":"8274:28:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15284,"name":"uint256","nodeType":"ElementaryTypeName","src":"8274:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15294,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15293,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"baseExpression":{"expression":{"id":15286,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15249,"src":"8305:1:40","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":15287,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8320:22:40","memberName":"facetFunctionSelectors","nodeType":"MemberAccess","referencedDeclaration":14768,"src":"8305:37:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_FacetFunctionSelectors_$14758_storage_$","typeString":"mapping(address => struct LibDiamond.FacetFunctionSelectors storage ref)"}},"id":15289,"indexExpression":{"id":15288,"name":"_facetAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15251,"src":"8343:13:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8305:52:40","typeDescriptions":{"typeIdentifier":"t_struct$_FacetFunctionSelectors_$14758_storage","typeString":"struct LibDiamond.FacetFunctionSelectors storage ref"}},"id":15290,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8371:17:40","memberName":"functionSelectors","nodeType":"MemberAccess","referencedDeclaration":14755,"src":"8305:83:40","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage","typeString":"bytes4[] storage ref"}},"id":15291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8402:6:40","memberName":"length","nodeType":"MemberAccess","src":"8305:103:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":15292,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8411:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8305:107:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8274:138:40"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15297,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15295,"name":"selectorPosition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15277,"src":"8494:16:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":15296,"name":"lastSelectorPosition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15285,"src":"8514:20:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8494:40:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15332,"nodeType":"IfStatement","src":"8490:490:40","trueBody":{"id":15331,"nodeType":"Block","src":"8536:444:40","statements":[{"assignments":[15299],"declarations":[{"constant":false,"id":15299,"mutability":"mutable","name":"lastSelector","nameLocation":"8557:12:40","nodeType":"VariableDeclaration","scope":15331,"src":"8550:19:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":15298,"name":"bytes4","nodeType":"ElementaryTypeName","src":"8550:6:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"id":15307,"initialValue":{"baseExpression":{"expression":{"baseExpression":{"expression":{"id":15300,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15249,"src":"8572:1:40","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":15301,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8591:22:40","memberName":"facetFunctionSelectors","nodeType":"MemberAccess","referencedDeclaration":14768,"src":"8572:41:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_FacetFunctionSelectors_$14758_storage_$","typeString":"mapping(address => struct LibDiamond.FacetFunctionSelectors storage ref)"}},"id":15303,"indexExpression":{"id":15302,"name":"_facetAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15251,"src":"8614:13:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8572:56:40","typeDescriptions":{"typeIdentifier":"t_struct$_FacetFunctionSelectors_$14758_storage","typeString":"struct LibDiamond.FacetFunctionSelectors storage ref"}},"id":15304,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8646:17:40","memberName":"functionSelectors","nodeType":"MemberAccess","referencedDeclaration":14755,"src":"8572:91:40","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage","typeString":"bytes4[] storage ref"}},"id":15306,"indexExpression":{"id":15305,"name":"lastSelectorPosition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15285,"src":"8664:20:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8572:113:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"VariableDeclarationStatement","src":"8550:135:40"},{"expression":{"id":15317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"baseExpression":{"expression":{"id":15308,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15249,"src":"8699:1:40","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":15311,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8701:22:40","memberName":"facetFunctionSelectors","nodeType":"MemberAccess","referencedDeclaration":14768,"src":"8699:24:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_FacetFunctionSelectors_$14758_storage_$","typeString":"mapping(address => struct LibDiamond.FacetFunctionSelectors storage ref)"}},"id":15312,"indexExpression":{"id":15310,"name":"_facetAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15251,"src":"8724:13:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8699:39:40","typeDescriptions":{"typeIdentifier":"t_struct$_FacetFunctionSelectors_$14758_storage","typeString":"struct LibDiamond.FacetFunctionSelectors storage ref"}},"id":15313,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8739:17:40","memberName":"functionSelectors","nodeType":"MemberAccess","referencedDeclaration":14755,"src":"8699:57:40","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage","typeString":"bytes4[] storage ref"}},"id":15315,"indexExpression":{"id":15314,"name":"selectorPosition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15277,"src":"8778:16:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8699:113:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":15316,"name":"lastSelector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15299,"src":"8815:12:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"8699:128:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":15318,"nodeType":"ExpressionStatement","src":"8699:128:40"},{"expression":{"id":15329,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":15319,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15249,"src":"8841:1:40","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":15322,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8860:26:40","memberName":"selectorToFacetAndPosition","nodeType":"MemberAccess","referencedDeclaration":14763,"src":"8841:45:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_struct$_FacetAddressAndPosition_$14752_storage_$","typeString":"mapping(bytes4 => struct LibDiamond.FacetAddressAndPosition storage ref)"}},"id":15323,"indexExpression":{"id":15321,"name":"lastSelector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15299,"src":"8887:12:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8841:59:40","typeDescriptions":{"typeIdentifier":"t_struct$_FacetAddressAndPosition_$14752_storage","typeString":"struct LibDiamond.FacetAddressAndPosition storage ref"}},"id":15324,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8918:24:40","memberName":"functionSelectorPosition","nodeType":"MemberAccess","referencedDeclaration":14751,"src":"8841:101:40","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":15327,"name":"selectorPosition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15277,"src":"8952:16:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15326,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8945:6:40","typeDescriptions":{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"},"typeName":{"id":15325,"name":"uint96","nodeType":"ElementaryTypeName","src":"8945:6:40","typeDescriptions":{}}},"id":15328,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8945:24:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"8841:128:40","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"id":15330,"nodeType":"ExpressionStatement","src":"8841:128:40"}]}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"baseExpression":{"expression":{"id":15333,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15249,"src":"9025:1:40","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":15336,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9027:22:40","memberName":"facetFunctionSelectors","nodeType":"MemberAccess","referencedDeclaration":14768,"src":"9025:24:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_FacetFunctionSelectors_$14758_storage_$","typeString":"mapping(address => struct LibDiamond.FacetFunctionSelectors storage ref)"}},"id":15337,"indexExpression":{"id":15335,"name":"_facetAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15251,"src":"9050:13:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9025:39:40","typeDescriptions":{"typeIdentifier":"t_struct$_FacetFunctionSelectors_$14758_storage","typeString":"struct LibDiamond.FacetFunctionSelectors storage ref"}},"id":15338,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9065:17:40","memberName":"functionSelectors","nodeType":"MemberAccess","referencedDeclaration":14755,"src":"9025:57:40","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage","typeString":"bytes4[] storage ref"}},"id":15339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9083:3:40","memberName":"pop","nodeType":"MemberAccess","src":"9025:61:40","typeDescriptions":{"typeIdentifier":"t_function_arraypop_nonpayable$_t_array$_t_bytes4_$dyn_storage_ptr_$returns$__$attached_to$_t_array$_t_bytes4_$dyn_storage_ptr_$","typeString":"function (bytes4[] storage pointer)"}},"id":15340,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9025:63:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15341,"nodeType":"ExpressionStatement","src":"9025:63:40"},{"expression":{"id":15346,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"9098:46:40","subExpression":{"baseExpression":{"expression":{"id":15342,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15249,"src":"9105:1:40","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":15343,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9107:26:40","memberName":"selectorToFacetAndPosition","nodeType":"MemberAccess","referencedDeclaration":14763,"src":"9105:28:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_struct$_FacetAddressAndPosition_$14752_storage_$","typeString":"mapping(bytes4 => struct LibDiamond.FacetAddressAndPosition storage ref)"}},"id":15345,"indexExpression":{"id":15344,"name":"_selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15253,"src":"9134:9:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9105:39:40","typeDescriptions":{"typeIdentifier":"t_struct$_FacetAddressAndPosition_$14752_storage","typeString":"struct LibDiamond.FacetAddressAndPosition storage ref"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15347,"nodeType":"ExpressionStatement","src":"9098:46:40"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15350,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15348,"name":"lastSelectorPosition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15285,"src":"9239:20:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":15349,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9263:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9239:25:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15411,"nodeType":"IfStatement","src":"9235:893:40","trueBody":{"id":15410,"nodeType":"Block","src":"9266:862:40","statements":[{"assignments":[15352],"declarations":[{"constant":false,"id":15352,"mutability":"mutable","name":"lastFacetAddressPosition","nameLocation":"9379:24:40","nodeType":"VariableDeclaration","scope":15410,"src":"9371:32:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15351,"name":"uint256","nodeType":"ElementaryTypeName","src":"9371:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15358,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15357,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":15353,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15249,"src":"9406:1:40","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":15354,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9408:14:40","memberName":"facetAddresses","nodeType":"MemberAccess","referencedDeclaration":14771,"src":"9406:16:40","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":15355,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9423:6:40","memberName":"length","nodeType":"MemberAccess","src":"9406:23:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":15356,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9432:1:40","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9406:27:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9371:62:40"},{"assignments":[15360],"declarations":[{"constant":false,"id":15360,"mutability":"mutable","name":"facetAddressPosition","nameLocation":"9455:20:40","nodeType":"VariableDeclaration","scope":15410,"src":"9447:28:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15359,"name":"uint256","nodeType":"ElementaryTypeName","src":"9447:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15366,"initialValue":{"expression":{"baseExpression":{"expression":{"id":15361,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15249,"src":"9478:1:40","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":15362,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9497:22:40","memberName":"facetFunctionSelectors","nodeType":"MemberAccess","referencedDeclaration":14768,"src":"9478:41:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_FacetFunctionSelectors_$14758_storage_$","typeString":"mapping(address => struct LibDiamond.FacetFunctionSelectors storage ref)"}},"id":15364,"indexExpression":{"id":15363,"name":"_facetAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15251,"src":"9520:13:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9478:56:40","typeDescriptions":{"typeIdentifier":"t_struct$_FacetFunctionSelectors_$14758_storage","typeString":"struct LibDiamond.FacetFunctionSelectors storage ref"}},"id":15365,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9552:20:40","memberName":"facetAddressPosition","nodeType":"MemberAccess","referencedDeclaration":14757,"src":"9478:94:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9447:125:40"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15367,"name":"facetAddressPosition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15360,"src":"9590:20:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":15368,"name":"lastFacetAddressPosition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15352,"src":"9614:24:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9590:48:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15395,"nodeType":"IfStatement","src":"9586:415:40","trueBody":{"id":15394,"nodeType":"Block","src":"9640:361:40","statements":[{"assignments":[15371],"declarations":[{"constant":false,"id":15371,"mutability":"mutable","name":"lastFacetAddress","nameLocation":"9666:16:40","nodeType":"VariableDeclaration","scope":15394,"src":"9658:24:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15370,"name":"address","nodeType":"ElementaryTypeName","src":"9658:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":15376,"initialValue":{"baseExpression":{"expression":{"id":15372,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15249,"src":"9685:1:40","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":15373,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9687:14:40","memberName":"facetAddresses","nodeType":"MemberAccess","referencedDeclaration":14771,"src":"9685:16:40","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":15375,"indexExpression":{"id":15374,"name":"lastFacetAddressPosition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15352,"src":"9723:24:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9685:80:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"9658:107:40"},{"expression":{"id":15383,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":15377,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15249,"src":"9783:1:40","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":15380,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9785:14:40","memberName":"facetAddresses","nodeType":"MemberAccess","referencedDeclaration":14771,"src":"9783:16:40","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":15381,"indexExpression":{"id":15379,"name":"facetAddressPosition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15360,"src":"9800:20:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9783:38:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":15382,"name":"lastFacetAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15371,"src":"9824:16:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9783:57:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":15384,"nodeType":"ExpressionStatement","src":"9783:57:40"},{"expression":{"id":15392,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":15385,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15249,"src":"9858:1:40","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":15388,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9881:22:40","memberName":"facetFunctionSelectors","nodeType":"MemberAccess","referencedDeclaration":14768,"src":"9858:45:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_FacetFunctionSelectors_$14758_storage_$","typeString":"mapping(address => struct LibDiamond.FacetFunctionSelectors storage ref)"}},"id":15389,"indexExpression":{"id":15387,"name":"lastFacetAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15371,"src":"9904:16:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9858:63:40","typeDescriptions":{"typeIdentifier":"t_struct$_FacetFunctionSelectors_$14758_storage","typeString":"struct LibDiamond.FacetFunctionSelectors storage ref"}},"id":15390,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"9943:20:40","memberName":"facetAddressPosition","nodeType":"MemberAccess","referencedDeclaration":14757,"src":"9858:105:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":15391,"name":"facetAddressPosition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15360,"src":"9966:20:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9858:128:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15393,"nodeType":"ExpressionStatement","src":"9858:128:40"}]}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":15396,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15249,"src":"10014:1:40","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":15399,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10016:14:40","memberName":"facetAddresses","nodeType":"MemberAccess","referencedDeclaration":14771,"src":"10014:16:40","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":15400,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10031:3:40","memberName":"pop","nodeType":"MemberAccess","src":"10014:20:40","typeDescriptions":{"typeIdentifier":"t_function_arraypop_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$returns$__$attached_to$_t_array$_t_address_$dyn_storage_ptr_$","typeString":"function (address[] storage pointer)"}},"id":15401,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10014:22:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15402,"nodeType":"ExpressionStatement","src":"10014:22:40"},{"expression":{"id":15408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"10050:67:40","subExpression":{"expression":{"baseExpression":{"expression":{"id":15403,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15249,"src":"10057:1:40","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":15404,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10059:22:40","memberName":"facetFunctionSelectors","nodeType":"MemberAccess","referencedDeclaration":14768,"src":"10057:24:40","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_FacetFunctionSelectors_$14758_storage_$","typeString":"mapping(address => struct LibDiamond.FacetFunctionSelectors storage ref)"}},"id":15406,"indexExpression":{"id":15405,"name":"_facetAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15251,"src":"10082:13:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10057:39:40","typeDescriptions":{"typeIdentifier":"t_struct$_FacetFunctionSelectors_$14758_storage","typeString":"struct LibDiamond.FacetFunctionSelectors storage ref"}},"id":15407,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"10097:20:40","memberName":"facetAddressPosition","nodeType":"MemberAccess","referencedDeclaration":14757,"src":"10057:60:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15409,"nodeType":"ExpressionStatement","src":"10050:67:40"}]}}]},"id":15413,"implemented":true,"kind":"function","modifiers":[],"name":"_removeFunction","nameLocation":"7592:15:40","nodeType":"FunctionDefinition","parameters":{"id":15254,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15249,"mutability":"mutable","name":"s","nameLocation":"7640:1:40","nodeType":"VariableDeclaration","scope":15413,"src":"7617:24:40","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond"},"typeName":{"id":15248,"nodeType":"UserDefinedTypeName","pathNode":{"id":15247,"name":"StorageDiamond","nameLocations":["7617:14:40"],"nodeType":"IdentifierPath","referencedDeclaration":14776,"src":"7617:14:40"},"referencedDeclaration":14776,"src":"7617:14:40","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond"}},"visibility":"internal"},{"constant":false,"id":15251,"mutability":"mutable","name":"_facetAddress","nameLocation":"7659:13:40","nodeType":"VariableDeclaration","scope":15413,"src":"7651:21:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15250,"name":"address","nodeType":"ElementaryTypeName","src":"7651:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15253,"mutability":"mutable","name":"_selector","nameLocation":"7689:9:40","nodeType":"VariableDeclaration","scope":15413,"src":"7682:16:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":15252,"name":"bytes4","nodeType":"ElementaryTypeName","src":"7682:6:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"7607:97:40"},"returnParameters":{"id":15255,"nodeType":"ParameterList","parameters":[],"src":"7714:0:40"},"scope":15481,"src":"7583:2551:40","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":15460,"nodeType":"Block","src":"10241:691:40","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":15425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15420,"name":"_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15415,"src":"10255:5:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":15423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10272:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":15422,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10264:7:40","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15421,"name":"address","nodeType":"ElementaryTypeName","src":"10264:7:40","typeDescriptions":{}}},"id":15424,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10264:10:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10255:19:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15428,"nodeType":"IfStatement","src":"10251:56:40","trueBody":{"id":15427,"nodeType":"Block","src":"10276:31:40","statements":[{"functionReturnParameters":15419,"id":15426,"nodeType":"Return","src":"10290:7:40"}]}},{"expression":{"arguments":[{"id":15430,"name":"_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15415,"src":"10353:5:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"4c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f6465","id":15431,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10372:42:40","typeDescriptions":{"typeIdentifier":"t_stringliteral_460f8f0920c649146ef02741816b1cf9ce4f02ea288ceb73adf027cefe9069a0","typeString":"literal_string \"LibDiamondCut: _init address has no code\""},"value":"LibDiamondCut: _init address has no code"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_stringliteral_460f8f0920c649146ef02741816b1cf9ce4f02ea288ceb73adf027cefe9069a0","typeString":"literal_string \"LibDiamondCut: _init address has no code\""}],"id":15429,"name":"_requireHasContractCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15480,"src":"10316:23:40","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_string_memory_ptr_$returns$__$","typeString":"function (address,string memory) view"}},"id":15432,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10316:108:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15433,"nodeType":"ExpressionStatement","src":"10316:108:40"},{"assignments":[15435,15437],"declarations":[{"constant":false,"id":15435,"mutability":"mutable","name":"success","nameLocation":"10440:7:40","nodeType":"VariableDeclaration","scope":15460,"src":"10435:12:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15434,"name":"bool","nodeType":"ElementaryTypeName","src":"10435:4:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":15437,"mutability":"mutable","name":"error","nameLocation":"10462:5:40","nodeType":"VariableDeclaration","scope":15460,"src":"10449:18:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":15436,"name":"bytes","nodeType":"ElementaryTypeName","src":"10449:5:40","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":15442,"initialValue":{"arguments":[{"id":15440,"name":"_calldata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15417,"src":"10490:9:40","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":15438,"name":"_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15415,"src":"10471:5:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":15439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10477:12:40","memberName":"delegatecall","nodeType":"MemberAccess","src":"10471:18:40","typeDescriptions":{"typeIdentifier":"t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bool,bytes memory)"}},"id":15441,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10471:29:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"10434:66:40"},{"condition":{"id":15444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"10514:8:40","subExpression":{"id":15443,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15435,"src":"10515:7:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15459,"nodeType":"IfStatement","src":"10510:416:40","trueBody":{"id":15458,"nodeType":"Block","src":"10524:402:40","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":15445,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15437,"src":"10542:5:40","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":15446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10548:6:40","memberName":"length","nodeType":"MemberAccess","src":"10542:12:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":15447,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10557:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10542:16:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":15456,"nodeType":"Block","src":"10828:88:40","statements":[{"errorCall":{"arguments":[{"id":15452,"name":"_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15415,"src":"10884:5:40","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15453,"name":"_calldata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15417,"src":"10891:9:40","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":15451,"name":"InitializationFunctionReverted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14742,"src":"10853:30:40","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory) pure"}},"id":15454,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10853:48:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15455,"nodeType":"RevertStatement","src":"10846:55:40"}]},"id":15457,"nodeType":"IfStatement","src":"10538:378:40","trueBody":{"id":15450,"nodeType":"Block","src":"10560:262:40","statements":[{"AST":{"nodeType":"YulBlock","src":"10673:135:40","statements":[{"nodeType":"YulVariableDeclaration","src":"10695:35:40","value":{"arguments":[{"name":"error","nodeType":"YulIdentifier","src":"10724:5:40"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10718:5:40"},"nodeType":"YulFunctionCall","src":"10718:12:40"},"variables":[{"name":"returndata_size","nodeType":"YulTypedName","src":"10699:15:40","type":""}]},{"expression":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10762:2:40","type":"","value":"32"},{"name":"error","nodeType":"YulIdentifier","src":"10766:5:40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10758:3:40"},"nodeType":"YulFunctionCall","src":"10758:14:40"},{"name":"returndata_size","nodeType":"YulIdentifier","src":"10774:15:40"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10751:6:40"},"nodeType":"YulFunctionCall","src":"10751:39:40"},"nodeType":"YulExpressionStatement","src":"10751:39:40"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":15437,"isOffset":false,"isSlot":false,"src":"10724:5:40","valueSize":1},{"declaration":15437,"isOffset":false,"isSlot":false,"src":"10766:5:40","valueSize":1}],"id":15449,"nodeType":"InlineAssembly","src":"10664:144:40"}]}}]}}]},"id":15461,"implemented":true,"kind":"function","modifiers":[],"name":"_initializeDiamondCut","nameLocation":"10149:21:40","nodeType":"FunctionDefinition","parameters":{"id":15418,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15415,"mutability":"mutable","name":"_init","nameLocation":"10188:5:40","nodeType":"VariableDeclaration","scope":15461,"src":"10180:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15414,"name":"address","nodeType":"ElementaryTypeName","src":"10180:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15417,"mutability":"mutable","name":"_calldata","nameLocation":"10216:9:40","nodeType":"VariableDeclaration","scope":15461,"src":"10203:22:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":15416,"name":"bytes","nodeType":"ElementaryTypeName","src":"10203:5:40","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"10170:61:40"},"returnParameters":{"id":15419,"nodeType":"ParameterList","parameters":[],"src":"10241:0:40"},"scope":15481,"src":"10140:792:40","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":15479,"nodeType":"Block","src":"11055:167:40","statements":[{"assignments":[15469],"declarations":[{"constant":false,"id":15469,"mutability":"mutable","name":"contractSize","nameLocation":"11073:12:40","nodeType":"VariableDeclaration","scope":15479,"src":"11065:20:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15468,"name":"uint256","nodeType":"ElementaryTypeName","src":"11065:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15470,"nodeType":"VariableDeclarationStatement","src":"11065:20:40"},{"AST":{"nodeType":"YulBlock","src":"11104:62:40","statements":[{"nodeType":"YulAssignment","src":"11118:38:40","value":{"arguments":[{"name":"_contract","nodeType":"YulIdentifier","src":"11146:9:40"}],"functionName":{"name":"extcodesize","nodeType":"YulIdentifier","src":"11134:11:40"},"nodeType":"YulFunctionCall","src":"11134:22:40"},"variableNames":[{"name":"contractSize","nodeType":"YulIdentifier","src":"11118:12:40"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":15463,"isOffset":false,"isSlot":false,"src":"11146:9:40","valueSize":1},{"declaration":15469,"isOffset":false,"isSlot":false,"src":"11118:12:40","valueSize":1}],"id":15471,"nodeType":"InlineAssembly","src":"11095:71:40"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15473,"name":"contractSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15469,"src":"11183:12:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":15474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11198:1:40","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11183:16:40","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":15476,"name":"_errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15465,"src":"11201:13:40","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":15472,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11175:7:40","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15477,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11175:40:40","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15478,"nodeType":"ExpressionStatement","src":"11175:40:40"}]},"id":15480,"implemented":true,"kind":"function","modifiers":[],"name":"_requireHasContractCode","nameLocation":"10947:23:40","nodeType":"FunctionDefinition","parameters":{"id":15466,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15463,"mutability":"mutable","name":"_contract","nameLocation":"10988:9:40","nodeType":"VariableDeclaration","scope":15480,"src":"10980:17:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15462,"name":"address","nodeType":"ElementaryTypeName","src":"10980:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15465,"mutability":"mutable","name":"_errorMessage","nameLocation":"11021:13:40","nodeType":"VariableDeclaration","scope":15480,"src":"11007:27:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":15464,"name":"string","nodeType":"ElementaryTypeName","src":"11007:6:40","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"10970:70:40"},"returnParameters":{"id":15467,"nodeType":"ParameterList","parameters":[],"src":"11055:0:40"},"scope":15481,"src":"10938:284:40","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":15482,"src":"366:10858:40","usedErrors":[]}],"src":"32:11193:40"},"id":40},"contracts/services/gelato/Types.sol":{"ast":{"absolutePath":"contracts/services/gelato/Types.sol","exportedSymbols":{"IAutomate":[15534],"IOpsProxyFactory":[15572],"ITaskTreasuryUpgradable":[15562],"Module":[15488],"ModuleData":[15496]},"id":15573,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":15483,"literals":["solidity","^","0.8",".12"],"nodeType":"PragmaDirective","src":"130:24:41"},{"canonicalName":"Module","id":15488,"members":[{"id":15484,"name":"RESOLVER","nameLocation":"174:8:41","nodeType":"EnumValue","src":"174:8:41"},{"id":15485,"name":"TIME","nameLocation":"188:4:41","nodeType":"EnumValue","src":"188:4:41"},{"id":15486,"name":"PROXY","nameLocation":"198:5:41","nodeType":"EnumValue","src":"198:5:41"},{"id":15487,"name":"SINGLE_EXEC","nameLocation":"209:11:41","nodeType":"EnumValue","src":"209:11:41"}],"name":"Module","nameLocation":"161:6:41","nodeType":"EnumDefinition","src":"156:66:41"},{"canonicalName":"ModuleData","id":15496,"members":[{"constant":false,"id":15492,"mutability":"mutable","name":"modules","nameLocation":"257:7:41","nodeType":"VariableDeclaration","scope":15496,"src":"248:16:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_Module_$15488_$dyn_storage_ptr","typeString":"enum Module[]"},"typeName":{"baseType":{"id":15490,"nodeType":"UserDefinedTypeName","pathNode":{"id":15489,"name":"Module","nameLocations":["248:6:41"],"nodeType":"IdentifierPath","referencedDeclaration":15488,"src":"248:6:41"},"referencedDeclaration":15488,"src":"248:6:41","typeDescriptions":{"typeIdentifier":"t_enum$_Module_$15488","typeString":"enum Module"}},"id":15491,"nodeType":"ArrayTypeName","src":"248:8:41","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_Module_$15488_$dyn_storage_ptr","typeString":"enum Module[]"}},"visibility":"internal"},{"constant":false,"id":15495,"mutability":"mutable","name":"args","nameLocation":"278:4:41","nodeType":"VariableDeclaration","scope":15496,"src":"270:12:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":15493,"name":"bytes","nodeType":"ElementaryTypeName","src":"270:5:41","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":15494,"nodeType":"ArrayTypeName","src":"270:7:41","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"name":"ModuleData","nameLocation":"231:10:41","nodeType":"StructDefinition","scope":15573,"src":"224:61:41","visibility":"public"},{"abstract":false,"baseContracts":[],"canonicalName":"IAutomate","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":15534,"linearizedBaseContracts":[15534],"name":"IAutomate","nameLocation":"297:9:41","nodeType":"ContractDefinition","nodes":[{"functionSelector":"3323b467","id":15510,"implemented":false,"kind":"function","modifiers":[],"name":"createTask","nameLocation":"322:10:41","nodeType":"FunctionDefinition","parameters":{"id":15506,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15498,"mutability":"mutable","name":"execAddress","nameLocation":"350:11:41","nodeType":"VariableDeclaration","scope":15510,"src":"342:19:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15497,"name":"address","nodeType":"ElementaryTypeName","src":"342:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15500,"mutability":"mutable","name":"execDataOrSelector","nameLocation":"386:18:41","nodeType":"VariableDeclaration","scope":15510,"src":"371:33:41","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":15499,"name":"bytes","nodeType":"ElementaryTypeName","src":"371:5:41","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":15503,"mutability":"mutable","name":"moduleData","nameLocation":"434:10:41","nodeType":"VariableDeclaration","scope":15510,"src":"414:30:41","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ModuleData_$15496_calldata_ptr","typeString":"struct ModuleData"},"typeName":{"id":15502,"nodeType":"UserDefinedTypeName","pathNode":{"id":15501,"name":"ModuleData","nameLocations":["414:10:41"],"nodeType":"IdentifierPath","referencedDeclaration":15496,"src":"414:10:41"},"referencedDeclaration":15496,"src":"414:10:41","typeDescriptions":{"typeIdentifier":"t_struct$_ModuleData_$15496_storage_ptr","typeString":"struct ModuleData"}},"visibility":"internal"},{"constant":false,"id":15505,"mutability":"mutable","name":"feeToken","nameLocation":"462:8:41","nodeType":"VariableDeclaration","scope":15510,"src":"454:16:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15504,"name":"address","nodeType":"ElementaryTypeName","src":"454:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"332:144:41"},"returnParameters":{"id":15509,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15508,"mutability":"mutable","name":"taskId","nameLocation":"503:6:41","nodeType":"VariableDeclaration","scope":15510,"src":"495:14:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15507,"name":"bytes32","nodeType":"ElementaryTypeName","src":"495:7:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"494:16:41"},"scope":15534,"src":"313:198:41","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"ee8ca3b5","id":15515,"implemented":false,"kind":"function","modifiers":[],"name":"cancelTask","nameLocation":"526:10:41","nodeType":"FunctionDefinition","parameters":{"id":15513,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15512,"mutability":"mutable","name":"taskId","nameLocation":"545:6:41","nodeType":"VariableDeclaration","scope":15515,"src":"537:14:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15511,"name":"bytes32","nodeType":"ElementaryTypeName","src":"537:7:41","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"536:16:41"},"returnParameters":{"id":15514,"nodeType":"ParameterList","parameters":[],"src":"561:0:41"},"scope":15534,"src":"517:45:41","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"b810c636","id":15522,"implemented":false,"kind":"function","modifiers":[],"name":"getFeeDetails","nameLocation":"577:13:41","nodeType":"FunctionDefinition","parameters":{"id":15516,"nodeType":"ParameterList","parameters":[],"src":"590:2:41"},"returnParameters":{"id":15521,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15518,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15522,"src":"616:7:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15517,"name":"uint256","nodeType":"ElementaryTypeName","src":"616:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15520,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15522,"src":"625:7:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15519,"name":"address","nodeType":"ElementaryTypeName","src":"625:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"615:18:41"},"scope":15534,"src":"568:66:41","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"573ea575","id":15527,"implemented":false,"kind":"function","modifiers":[],"name":"gelato","nameLocation":"649:6:41","nodeType":"FunctionDefinition","parameters":{"id":15523,"nodeType":"ParameterList","parameters":[],"src":"655:2:41"},"returnParameters":{"id":15526,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15525,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15527,"src":"681:15:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":15524,"name":"address","nodeType":"ElementaryTypeName","src":"681:15:41","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"}],"src":"680:17:41"},"scope":15534,"src":"640:58:41","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"e60a3213","id":15533,"implemented":false,"kind":"function","modifiers":[],"name":"taskTreasury","nameLocation":"713:12:41","nodeType":"FunctionDefinition","parameters":{"id":15528,"nodeType":"ParameterList","parameters":[],"src":"725:2:41"},"returnParameters":{"id":15532,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15531,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15533,"src":"751:23:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ITaskTreasuryUpgradable_$15562","typeString":"contract ITaskTreasuryUpgradable"},"typeName":{"id":15530,"nodeType":"UserDefinedTypeName","pathNode":{"id":15529,"name":"ITaskTreasuryUpgradable","nameLocations":["751:23:41"],"nodeType":"IdentifierPath","referencedDeclaration":15562,"src":"751:23:41"},"referencedDeclaration":15562,"src":"751:23:41","typeDescriptions":{"typeIdentifier":"t_contract$_ITaskTreasuryUpgradable_$15562","typeString":"contract ITaskTreasuryUpgradable"}},"visibility":"internal"}],"src":"750:25:41"},"scope":15534,"src":"704:72:41","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":15573,"src":"287:491:41","usedErrors":[]},{"abstract":false,"baseContracts":[],"canonicalName":"ITaskTreasuryUpgradable","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":15562,"linearizedBaseContracts":[15562],"name":"ITaskTreasuryUpgradable","nameLocation":"790:23:41","nodeType":"ContractDefinition","nodes":[{"functionSelector":"c1461d57","id":15543,"implemented":false,"kind":"function","modifiers":[],"name":"depositFunds","nameLocation":"829:12:41","nodeType":"FunctionDefinition","parameters":{"id":15541,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15536,"mutability":"mutable","name":"receiver","nameLocation":"859:8:41","nodeType":"VariableDeclaration","scope":15543,"src":"851:16:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15535,"name":"address","nodeType":"ElementaryTypeName","src":"851:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15538,"mutability":"mutable","name":"token","nameLocation":"885:5:41","nodeType":"VariableDeclaration","scope":15543,"src":"877:13:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15537,"name":"address","nodeType":"ElementaryTypeName","src":"877:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15540,"mutability":"mutable","name":"amount","nameLocation":"908:6:41","nodeType":"VariableDeclaration","scope":15543,"src":"900:14:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15539,"name":"uint256","nodeType":"ElementaryTypeName","src":"900:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"841:79:41"},"returnParameters":{"id":15542,"nodeType":"ParameterList","parameters":[],"src":"937:0:41"},"scope":15562,"src":"820:118:41","stateMutability":"payable","virtual":false,"visibility":"external"},{"functionSelector":"1c20fadd","id":15552,"implemented":false,"kind":"function","modifiers":[],"name":"withdrawFunds","nameLocation":"953:13:41","nodeType":"FunctionDefinition","parameters":{"id":15550,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15545,"mutability":"mutable","name":"receiver","nameLocation":"992:8:41","nodeType":"VariableDeclaration","scope":15552,"src":"976:24:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":15544,"name":"address","nodeType":"ElementaryTypeName","src":"976:15:41","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":15547,"mutability":"mutable","name":"token","nameLocation":"1018:5:41","nodeType":"VariableDeclaration","scope":15552,"src":"1010:13:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15546,"name":"address","nodeType":"ElementaryTypeName","src":"1010:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15549,"mutability":"mutable","name":"amount","nameLocation":"1041:6:41","nodeType":"VariableDeclaration","scope":15552,"src":"1033:14:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15548,"name":"uint256","nodeType":"ElementaryTypeName","src":"1033:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"966:87:41"},"returnParameters":{"id":15551,"nodeType":"ParameterList","parameters":[],"src":"1062:0:41"},"scope":15562,"src":"944:119:41","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"b47064c8","id":15561,"implemented":false,"kind":"function","modifiers":[],"name":"userTokenBalance","nameLocation":"1078:16:41","nodeType":"FunctionDefinition","parameters":{"id":15557,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15554,"mutability":"mutable","name":"_user","nameLocation":"1103:5:41","nodeType":"VariableDeclaration","scope":15561,"src":"1095:13:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15553,"name":"address","nodeType":"ElementaryTypeName","src":"1095:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15556,"mutability":"mutable","name":"_token","nameLocation":"1118:6:41","nodeType":"VariableDeclaration","scope":15561,"src":"1110:14:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15555,"name":"address","nodeType":"ElementaryTypeName","src":"1110:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1094:31:41"},"returnParameters":{"id":15560,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15559,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15561,"src":"1173:7:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15558,"name":"uint256","nodeType":"ElementaryTypeName","src":"1173:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1172:9:41"},"scope":15562,"src":"1069:113:41","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":15573,"src":"780:424:41","usedErrors":[]},{"abstract":false,"baseContracts":[],"canonicalName":"IOpsProxyFactory","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":15572,"linearizedBaseContracts":[15572],"name":"IOpsProxyFactory","nameLocation":"1216:16:41","nodeType":"ContractDefinition","nodes":[{"functionSelector":"ded89a7c","id":15571,"implemented":false,"kind":"function","modifiers":[],"name":"getProxyOf","nameLocation":"1248:10:41","nodeType":"FunctionDefinition","parameters":{"id":15565,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15564,"mutability":"mutable","name":"account","nameLocation":"1267:7:41","nodeType":"VariableDeclaration","scope":15571,"src":"1259:15:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15563,"name":"address","nodeType":"ElementaryTypeName","src":"1259:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1258:17:41"},"returnParameters":{"id":15570,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15567,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15571,"src":"1299:7:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15566,"name":"address","nodeType":"ElementaryTypeName","src":"1299:7:41","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15569,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15571,"src":"1308:4:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15568,"name":"bool","nodeType":"ElementaryTypeName","src":"1308:4:41","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1298:15:41"},"scope":15572,"src":"1239:75:41","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":15573,"src":"1206:110:41","usedErrors":[]}],"src":"130:1187:41"},"id":41},"contracts/upgrades/DiamondInit.sol":{"ast":{"absolutePath":"contracts/upgrades/DiamondInit.sol","exportedSymbols":{"DiamondInit":[15777],"IAccessControl":[11052],"IAutomate":[10604],"IControl":[10801],"ICut":[11090],"IERC165":[11101],"IFlow":[10931],"ILoupe":[11142],"ISession":[11002],"ISuperToken":[6947],"IUtility":[11155],"LibAutomate":[11560],"LibControl":[12557],"LibDiamond":[15481]},"id":15778,"license":"BUSL-1.1","nodeType":"SourceUnit","nodes":[{"id":15574,"literals":["solidity","^","0.8",".9"],"nodeType":"PragmaDirective","src":"37:23:42"},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol","file":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol","id":15576,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":15778,"sourceUnit":7600,"src":"62:115:42","symbolAliases":[{"foreign":{"id":15575,"name":"ISuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6947,"src":"70:11:42","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/libraries/utils/LibDiamond.sol","file":"../libraries/utils/LibDiamond.sol","id":15578,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":15778,"sourceUnit":15482,"src":"179:61:42","symbolAliases":[{"foreign":{"id":15577,"name":"LibDiamond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15481,"src":"187:10:42","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/libraries/core/LibAutomate.sol","file":"../libraries/core/LibAutomate.sol","id":15580,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":15778,"sourceUnit":11561,"src":"241:62:42","symbolAliases":[{"foreign":{"id":15579,"name":"LibAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11560,"src":"249:11:42","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/libraries/core/LibControl.sol","file":"../libraries/core/LibControl.sol","id":15582,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":15778,"sourceUnit":12558,"src":"304:60:42","symbolAliases":[{"foreign":{"id":15581,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"312:10:42","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/utils/IERC165.sol","file":"../interfaces/utils/IERC165.sol","id":15584,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":15778,"sourceUnit":11102,"src":"365:56:42","symbolAliases":[{"foreign":{"id":15583,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11101,"src":"373:7:42","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/utils/ICut.sol","file":"../interfaces/utils/ICut.sol","id":15586,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":15778,"sourceUnit":11091,"src":"422:50:42","symbolAliases":[{"foreign":{"id":15585,"name":"ICut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11090,"src":"430:4:42","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/utils/ILoupe.sol","file":"../interfaces/utils/ILoupe.sol","id":15588,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":15778,"sourceUnit":11143,"src":"473:54:42","symbolAliases":[{"foreign":{"id":15587,"name":"ILoupe","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11142,"src":"481:6:42","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/utils/IAccessControl.sol","file":"../interfaces/utils/IAccessControl.sol","id":15590,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":15778,"sourceUnit":11053,"src":"528:70:42","symbolAliases":[{"foreign":{"id":15589,"name":"IAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11052,"src":"536:14:42","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/utils/IUtility.sol","file":"../interfaces/utils/IUtility.sol","id":15592,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":15778,"sourceUnit":11156,"src":"599:58:42","symbolAliases":[{"foreign":{"id":15591,"name":"IUtility","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11155,"src":"607:8:42","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/core/IAutomate.sol","file":"../interfaces/core/IAutomate.sol","id":15594,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":15778,"sourceUnit":10605,"src":"658:59:42","symbolAliases":[{"foreign":{"id":15593,"name":"IAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10604,"src":"666:9:42","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/core/IControl.sol","file":"../interfaces/core/IControl.sol","id":15596,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":15778,"sourceUnit":10802,"src":"718:57:42","symbolAliases":[{"foreign":{"id":15595,"name":"IControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10801,"src":"726:8:42","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/core/ISession.sol","file":"../interfaces/core/ISession.sol","id":15598,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":15778,"sourceUnit":11003,"src":"776:57:42","symbolAliases":[{"foreign":{"id":15597,"name":"ISession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11002,"src":"784:8:42","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/core/IFlow.sol","file":"../interfaces/core/IFlow.sol","id":15600,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":15778,"sourceUnit":10932,"src":"834:51:42","symbolAliases":[{"foreign":{"id":15599,"name":"IFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10931,"src":"842:5:42","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"DiamondInit","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":15777,"linearizedBaseContracts":[15777],"name":"DiamondInit","nameLocation":"896:11:42","nodeType":"ContractDefinition","nodes":[{"body":{"id":15775,"nodeType":"Block","src":"1186:1115:42","statements":[{"assignments":[15620],"declarations":[{"constant":false,"id":15620,"mutability":"mutable","name":"s","nameLocation":"1230:1:42","nodeType":"VariableDeclaration","scope":15775,"src":"1196:35:42","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond"},"typeName":{"id":15619,"nodeType":"UserDefinedTypeName","pathNode":{"id":15618,"name":"LibDiamond.StorageDiamond","nameLocations":["1196:10:42","1207:14:42"],"nodeType":"IdentifierPath","referencedDeclaration":14776,"src":"1196:25:42"},"referencedDeclaration":14776,"src":"1196:25:42","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond"}},"visibility":"internal"}],"id":15624,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":15621,"name":"LibDiamond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15481,"src":"1234:10:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibDiamond_$15481_$","typeString":"type(library LibDiamond)"}},"id":15622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1245:15:42","memberName":"_storageDiamond","nodeType":"MemberAccess","referencedDeclaration":14788,"src":"1234:26:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageDiamond_$14776_storage_ptr_$","typeString":"function () pure returns (struct LibDiamond.StorageDiamond storage pointer)"}},"id":15623,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1234:28:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"1196:66:42"},{"expression":{"id":15634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":15625,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15620,"src":"1272:1:42","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":15631,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1274:19:42","memberName":"supportedInterfaces","nodeType":"MemberAccess","referencedDeclaration":14775,"src":"1272:21:42","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_bool_$","typeString":"mapping(bytes4 => bool)"}},"id":15632,"indexExpression":{"expression":{"arguments":[{"id":15628,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11101,"src":"1299:7:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$11101_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$11101_$","typeString":"type(contract IERC165)"}],"id":15627,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1294:4:42","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":15629,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1294:13:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$11101","typeString":"type(contract IERC165)"}},"id":15630,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1308:11:42","memberName":"interfaceId","nodeType":"MemberAccess","src":"1294:25:42","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1272:48:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":15633,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1323:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"1272:55:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15635,"nodeType":"ExpressionStatement","src":"1272:55:42"},{"expression":{"id":15645,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":15636,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15620,"src":"1337:1:42","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":15642,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1339:19:42","memberName":"supportedInterfaces","nodeType":"MemberAccess","referencedDeclaration":14775,"src":"1337:21:42","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_bool_$","typeString":"mapping(bytes4 => bool)"}},"id":15643,"indexExpression":{"expression":{"arguments":[{"id":15639,"name":"ICut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11090,"src":"1364:4:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ICut_$11090_$","typeString":"type(contract ICut)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_ICut_$11090_$","typeString":"type(contract ICut)"}],"id":15638,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1359:4:42","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":15640,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1359:10:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_ICut_$11090","typeString":"type(contract ICut)"}},"id":15641,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1370:11:42","memberName":"interfaceId","nodeType":"MemberAccess","src":"1359:22:42","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1337:45:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":15644,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1385:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"1337:52:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15646,"nodeType":"ExpressionStatement","src":"1337:52:42"},{"expression":{"id":15656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":15647,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15620,"src":"1399:1:42","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":15653,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1401:19:42","memberName":"supportedInterfaces","nodeType":"MemberAccess","referencedDeclaration":14775,"src":"1399:21:42","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_bool_$","typeString":"mapping(bytes4 => bool)"}},"id":15654,"indexExpression":{"expression":{"arguments":[{"id":15650,"name":"ILoupe","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11142,"src":"1426:6:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ILoupe_$11142_$","typeString":"type(contract ILoupe)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_ILoupe_$11142_$","typeString":"type(contract ILoupe)"}],"id":15649,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1421:4:42","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":15651,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1421:12:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_ILoupe_$11142","typeString":"type(contract ILoupe)"}},"id":15652,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1434:11:42","memberName":"interfaceId","nodeType":"MemberAccess","src":"1421:24:42","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1399:47:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":15655,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1449:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"1399:54:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15657,"nodeType":"ExpressionStatement","src":"1399:54:42"},{"expression":{"id":15667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":15658,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15620,"src":"1463:1:42","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":15664,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1465:19:42","memberName":"supportedInterfaces","nodeType":"MemberAccess","referencedDeclaration":14775,"src":"1463:21:42","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_bool_$","typeString":"mapping(bytes4 => bool)"}},"id":15665,"indexExpression":{"expression":{"arguments":[{"id":15661,"name":"IAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11052,"src":"1490:14:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAccessControl_$11052_$","typeString":"type(contract IAccessControl)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IAccessControl_$11052_$","typeString":"type(contract IAccessControl)"}],"id":15660,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1485:4:42","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":15662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1485:20:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IAccessControl_$11052","typeString":"type(contract IAccessControl)"}},"id":15663,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1506:11:42","memberName":"interfaceId","nodeType":"MemberAccess","src":"1485:32:42","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1463:55:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":15666,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1521:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"1463:62:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15668,"nodeType":"ExpressionStatement","src":"1463:62:42"},{"expression":{"id":15678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":15669,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15620,"src":"1535:1:42","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":15675,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1537:19:42","memberName":"supportedInterfaces","nodeType":"MemberAccess","referencedDeclaration":14775,"src":"1535:21:42","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_bool_$","typeString":"mapping(bytes4 => bool)"}},"id":15676,"indexExpression":{"expression":{"arguments":[{"id":15672,"name":"IUtility","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11155,"src":"1562:8:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IUtility_$11155_$","typeString":"type(contract IUtility)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IUtility_$11155_$","typeString":"type(contract IUtility)"}],"id":15671,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1557:4:42","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":15673,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1557:14:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IUtility_$11155","typeString":"type(contract IUtility)"}},"id":15674,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1572:11:42","memberName":"interfaceId","nodeType":"MemberAccess","src":"1557:26:42","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1535:49:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":15677,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1587:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"1535:56:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15679,"nodeType":"ExpressionStatement","src":"1535:56:42"},{"expression":{"id":15689,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":15680,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15620,"src":"1601:1:42","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":15686,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1603:19:42","memberName":"supportedInterfaces","nodeType":"MemberAccess","referencedDeclaration":14775,"src":"1601:21:42","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_bool_$","typeString":"mapping(bytes4 => bool)"}},"id":15687,"indexExpression":{"expression":{"arguments":[{"id":15683,"name":"IAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10604,"src":"1628:9:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAutomate_$10604_$","typeString":"type(contract IAutomate)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IAutomate_$10604_$","typeString":"type(contract IAutomate)"}],"id":15682,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1623:4:42","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":15684,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1623:15:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IAutomate_$10604","typeString":"type(contract IAutomate)"}},"id":15685,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1639:11:42","memberName":"interfaceId","nodeType":"MemberAccess","src":"1623:27:42","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1601:50:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":15688,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1654:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"1601:57:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15690,"nodeType":"ExpressionStatement","src":"1601:57:42"},{"expression":{"id":15700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":15691,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15620,"src":"1668:1:42","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":15697,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1670:19:42","memberName":"supportedInterfaces","nodeType":"MemberAccess","referencedDeclaration":14775,"src":"1668:21:42","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_bool_$","typeString":"mapping(bytes4 => bool)"}},"id":15698,"indexExpression":{"expression":{"arguments":[{"id":15694,"name":"IControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10801,"src":"1695:8:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IControl_$10801_$","typeString":"type(contract IControl)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IControl_$10801_$","typeString":"type(contract IControl)"}],"id":15693,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1690:4:42","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":15695,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1690:14:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IControl_$10801","typeString":"type(contract IControl)"}},"id":15696,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1705:11:42","memberName":"interfaceId","nodeType":"MemberAccess","src":"1690:26:42","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1668:49:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":15699,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1720:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"1668:56:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15701,"nodeType":"ExpressionStatement","src":"1668:56:42"},{"expression":{"id":15711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":15702,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15620,"src":"1734:1:42","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":15708,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1736:19:42","memberName":"supportedInterfaces","nodeType":"MemberAccess","referencedDeclaration":14775,"src":"1734:21:42","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_bool_$","typeString":"mapping(bytes4 => bool)"}},"id":15709,"indexExpression":{"expression":{"arguments":[{"id":15705,"name":"ISession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11002,"src":"1761:8:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISession_$11002_$","typeString":"type(contract ISession)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_ISession_$11002_$","typeString":"type(contract ISession)"}],"id":15704,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1756:4:42","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":15706,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1756:14:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_ISession_$11002","typeString":"type(contract ISession)"}},"id":15707,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1771:11:42","memberName":"interfaceId","nodeType":"MemberAccess","src":"1756:26:42","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1734:49:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":15710,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1786:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"1734:56:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15712,"nodeType":"ExpressionStatement","src":"1734:56:42"},{"expression":{"id":15722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":15713,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15620,"src":"1800:1:42","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$14776_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":15719,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1802:19:42","memberName":"supportedInterfaces","nodeType":"MemberAccess","referencedDeclaration":14775,"src":"1800:21:42","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_bool_$","typeString":"mapping(bytes4 => bool)"}},"id":15720,"indexExpression":{"expression":{"arguments":[{"id":15716,"name":"IFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10931,"src":"1827:5:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IFlow_$10931_$","typeString":"type(contract IFlow)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IFlow_$10931_$","typeString":"type(contract IFlow)"}],"id":15715,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1822:4:42","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":15717,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1822:11:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IFlow_$10931","typeString":"type(contract IFlow)"}},"id":15718,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1834:11:42","memberName":"interfaceId","nodeType":"MemberAccess","src":"1822:23:42","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1800:46:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":15721,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1849:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"1800:53:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15723,"nodeType":"ExpressionStatement","src":"1800:53:42"},{"expression":{"arguments":[{"id":15727,"name":"_autobot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15602,"src":"1896:8:42","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":15724,"name":"LibAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11560,"src":"1864:11:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAutomate_$11560_$","typeString":"type(library LibAutomate)"}},"id":15726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1876:19:42","memberName":"_setGelatoContracts","nodeType":"MemberAccess","referencedDeclaration":11427,"src":"1864:31:42","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":15728,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1864:41:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15729,"nodeType":"ExpressionStatement","src":"1864:41:42"},{"expression":{"arguments":[{"id":15733,"name":"_minimumAppGelatoBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15604,"src":"1955:24:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":15730,"name":"LibAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11560,"src":"1915:11:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAutomate_$11560_$","typeString":"type(library LibAutomate)"}},"id":15732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1927:27:42","memberName":"_setMinimumAppGelatoBalance","nodeType":"MemberAccess","referencedDeclaration":11439,"src":"1915:39:42","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":15734,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1915:65:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15735,"nodeType":"ExpressionStatement","src":"1915:65:42"},{"expression":{"arguments":[{"id":15739,"name":"_minimumEndDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15606,"src":"2024:19:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":15736,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"1990:10:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$12557_$","typeString":"type(library LibControl)"}},"id":15738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2001:22:42","memberName":"_setMinimumEndDuration","nodeType":"MemberAccess","referencedDeclaration":12064,"src":"1990:33:42","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":15740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1990:54:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15741,"nodeType":"ExpressionStatement","src":"1990:54:42"},{"expression":{"arguments":[{"id":15745,"name":"_minimumLifespan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15608,"src":"2085:16:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":15742,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"2054:10:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$12557_$","typeString":"type(library LibControl)"}},"id":15744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2065:19:42","memberName":"_setMinimumLifespan","nodeType":"MemberAccess","referencedDeclaration":12076,"src":"2054:30:42","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":15746,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2054:48:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15747,"nodeType":"ExpressionStatement","src":"2054:48:42"},{"expression":{"arguments":[{"id":15751,"name":"_stBufferDurationInSecond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15610,"src":"2142:25:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":15748,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"2112:10:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$12557_$","typeString":"type(library LibControl)"}},"id":15750,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2123:18:42","memberName":"_setSTBufferAmount","nodeType":"MemberAccess","referencedDeclaration":12088,"src":"2112:29:42","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":15752,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2112:56:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15753,"nodeType":"ExpressionStatement","src":"2112:56:42"},{"body":{"id":15773,"nodeType":"Block","src":"2228:67:42","statements":[{"expression":{"arguments":[{"baseExpression":{"id":15768,"name":"_superTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15613,"src":"2268:12:42","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":15770,"indexExpression":{"id":15769,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15755,"src":"2281:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2268:15:42","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":15765,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12557,"src":"2242:10:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$12557_$","typeString":"type(library LibControl)"}},"id":15767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2253:14:42","memberName":"_addSuperToken","nodeType":"MemberAccess","referencedDeclaration":12102,"src":"2242:25:42","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":15771,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2242:42:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15772,"nodeType":"ExpressionStatement","src":"2242:42:42"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15761,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15758,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15755,"src":"2198:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":15759,"name":"_superTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15613,"src":"2202:12:42","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":15760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2215:6:42","memberName":"length","nodeType":"MemberAccess","src":"2202:19:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2198:23:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15774,"initializationExpression":{"assignments":[15755],"declarations":[{"constant":false,"id":15755,"mutability":"mutable","name":"i","nameLocation":"2191:1:42","nodeType":"VariableDeclaration","scope":15774,"src":"2183:9:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15754,"name":"uint256","nodeType":"ElementaryTypeName","src":"2183:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15757,"initialValue":{"hexValue":"30","id":15756,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2195:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2183:13:42"},"loopExpression":{"expression":{"id":15763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2223:3:42","subExpression":{"id":15762,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15755,"src":"2223:1:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15764,"nodeType":"ExpressionStatement","src":"2223:3:42"},"nodeType":"ForStatement","src":"2178:117:42"}]},"functionSelector":"0629b938","id":15776,"implemented":true,"kind":"function","modifiers":[],"name":"init","nameLocation":"923:4:42","nodeType":"FunctionDefinition","parameters":{"id":15614,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15602,"mutability":"mutable","name":"_autobot","nameLocation":"945:8:42","nodeType":"VariableDeclaration","scope":15776,"src":"937:16:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15601,"name":"address","nodeType":"ElementaryTypeName","src":"937:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15604,"mutability":"mutable","name":"_minimumAppGelatoBalance","nameLocation":"971:24:42","nodeType":"VariableDeclaration","scope":15776,"src":"963:32:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15603,"name":"uint256","nodeType":"ElementaryTypeName","src":"963:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15606,"mutability":"mutable","name":"_minimumEndDuration","nameLocation":"1013:19:42","nodeType":"VariableDeclaration","scope":15776,"src":"1005:27:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15605,"name":"uint256","nodeType":"ElementaryTypeName","src":"1005:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15608,"mutability":"mutable","name":"_minimumLifespan","nameLocation":"1061:16:42","nodeType":"VariableDeclaration","scope":15776,"src":"1053:24:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15607,"name":"uint256","nodeType":"ElementaryTypeName","src":"1053:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15610,"mutability":"mutable","name":"_stBufferDurationInSecond","nameLocation":"1106:25:42","nodeType":"VariableDeclaration","scope":15776,"src":"1098:33:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15609,"name":"uint256","nodeType":"ElementaryTypeName","src":"1098:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15613,"mutability":"mutable","name":"_superTokens","nameLocation":"1158:12:42","nodeType":"VariableDeclaration","scope":15776,"src":"1141:29:42","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":15611,"name":"address","nodeType":"ElementaryTypeName","src":"1141:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":15612,"nodeType":"ArrayTypeName","src":"1141:9:42","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"927:249:42"},"returnParameters":{"id":15615,"nodeType":"ParameterList","parameters":[],"src":"1186:0:42"},"scope":15777,"src":"914:1387:42","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":15778,"src":"887:1416:42","usedErrors":[]}],"src":"37:2267:42"},"id":42}},"contracts":{"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"IERC20":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 standard as defined in the EIP.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]}},\"version\":1}"}},"@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol":{"IERC20Permit":{"abi":[{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in https://eips.ethereum.org/EIPS/eip-2612[EIP-2612]. Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't need to send a transaction, and thus is not required to hold Ether at all.\",\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\"},\"nonces(address)\":{\"details\":\"Returns the current nonce for `owner`. This value must be included whenever a signature is generated for {permit}. Every successful call to {permit} increases ``owner``'s nonce by one. This prevents a signature from being used multiple times.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Sets `value` as the allowance of `spender` over ``owner``'s tokens, given ``owner``'s signed approval. IMPORTANT: The same issues {IERC20-approve} has related to transaction ordering also apply here. Emits an {Approval} event. Requirements: - `spender` cannot be the zero address. - `deadline` must be a timestamp in the future. - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` over the EIP712-formatted function arguments. - the signature must use ``owner``'s current nonce (see {nonces}). For more information on the signature format, see the https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section].\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol\":\"IERC20Permit\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol\":{\"keccak256\":\"0xf41ca991f30855bf80ffd11e9347856a517b977f0a6c2d52e6421a99b7840329\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2717fd2bdac99daa960a6de500754ea1b932093c946388c381da48658234b95\",\"dweb:/ipfs/QmP6QVMn6UeA3ByahyJbYQr5M6coHKBKsf3ySZSfbyA8R7\"]}},\"version\":1}"}},"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol":{"SafeERC20":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bbcb1fd435e5744a5b541c709a8f7209eca403ec3ecfbdbe7bdc2822cdbb6f3d64736f6c63430008120033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBB 0xCB 0x1F 0xD4 CALLDATALOAD 0xE5 PUSH21 0x4A5B541C709A8F7209ECA403EC3ECFBDBE7BDC2822 0xCD 0xBB PUSH16 0x3D64736F6C6343000812003300000000 ","sourceMap":"707:3748:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bbcb1fd435e5744a5b541c709a8f7209eca403ec3ecfbdbe7bdc2822cdbb6f3d64736f6c63430008120033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBB 0xCB 0x1F 0xD4 CALLDATALOAD 0xE5 PUSH21 0x4A5B541C709A8F7209ECA403EC3ECFBDBE7BDC2822 0xCD 0xBB PUSH16 0x3D64736F6C6343000812003300000000 ","sourceMap":"707:3748:2:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers around ERC20 operations that throw on failure (when the token contract returns false). Tokens that return no value (and instead revert or throw on failure) are also supported, non-reverting calls are assumed to be successful. To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"SafeERC20\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":\"SafeERC20\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol\":{\"keccak256\":\"0xf41ca991f30855bf80ffd11e9347856a517b977f0a6c2d52e6421a99b7840329\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2717fd2bdac99daa960a6de500754ea1b932093c946388c381da48658234b95\",\"dweb:/ipfs/QmP6QVMn6UeA3ByahyJbYQr5M6coHKBKsf3ySZSfbyA8R7\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x9b72f93be69ca894d8492c244259615c4a742afc8d63720dbc8bb81087d9b238\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5a7b96e511be78d5cdf635c784e6ab8cdd38625bb8cafb8a80914a1c89cf0f6\",\"dweb:/ipfs/QmVzTCwJxQAkjRQHboT5QrvsVJGWQHgfEjeTbvyxoKBrds\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xf96f969e24029d43d0df89e59d365f277021dac62b48e1c1e3ebe0acdd7f1ca1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec772b45a624be516f1c81970caa8a2e144301e9d0921cbc1a2789fef39a1269\",\"dweb:/ipfs/QmNyjwxCrGhQMyzLD93oUobJXVe9ceJvRvfXwbEtuxPiEj\"]}},\"version\":1}"}},"@openzeppelin/contracts/token/ERC777/IERC777.sol":{"IERC777":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"tokenHolder","type":"address"}],"name":"AuthorizedOperator","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"Burned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"Minted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"tokenHolder","type":"address"}],"name":"RevokedOperator","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"Sent","type":"event"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"authorizeOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"defaultOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"granularity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"tokenHolder","type":"address"}],"name":"isOperatorFor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"operatorBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"operatorSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"revokeOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"send","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"authorizeOperator(address)":"959b8c3f","balanceOf(address)":"70a08231","burn(uint256,bytes)":"fe9d9303","defaultOperators()":"06e48538","granularity()":"556f0dc7","isOperatorFor(address,address)":"d95b6371","name()":"06fdde03","operatorBurn(address,uint256,bytes,bytes)":"fc673c4f","operatorSend(address,address,uint256,bytes,bytes)":"62ad1b83","revokeOperator(address)":"fad8b32a","send(address,uint256,bytes)":"9bd9bbc6","symbol()":"95d89b41","totalSupply()":"18160ddd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenHolder\",\"type\":\"address\"}],\"name\":\"AuthorizedOperator\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"operatorData\",\"type\":\"bytes\"}],\"name\":\"Burned\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"operatorData\",\"type\":\"bytes\"}],\"name\":\"Minted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenHolder\",\"type\":\"address\"}],\"name\":\"RevokedOperator\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"operatorData\",\"type\":\"bytes\"}],\"name\":\"Sent\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"authorizeOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"granularity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenHolder\",\"type\":\"address\"}],\"name\":\"isOperatorFor\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"operatorData\",\"type\":\"bytes\"}],\"name\":\"operatorBurn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"operatorData\",\"type\":\"bytes\"}],\"name\":\"operatorSend\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"revokeOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"send\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC777Token standard as defined in the EIP. This contract uses the https://eips.ethereum.org/EIPS/eip-1820[ERC1820 registry standard] to let token holders and recipients react to token movements by using setting implementers for the associated interfaces in said registry. See {IERC1820Registry} and {ERC1820Implementer}.\",\"events\":{\"AuthorizedOperator(address,address)\":{\"details\":\"Emitted when `operator` is made operator for `tokenHolder`.\"},\"Burned(address,address,uint256,bytes,bytes)\":{\"details\":\"Emitted when `operator` destroys `amount` tokens from `account`. Note that some additional user `data` and `operatorData` can be logged in the event.\"},\"Minted(address,address,uint256,bytes,bytes)\":{\"details\":\"Emitted when `amount` tokens are created by `operator` and assigned to `to`. Note that some additional user `data` and `operatorData` can be logged in the event.\"},\"RevokedOperator(address,address)\":{\"details\":\"Emitted when `operator` is revoked its operator status for `tokenHolder`.\"}},\"kind\":\"dev\",\"methods\":{\"authorizeOperator(address)\":{\"details\":\"Make an account an operator of the caller. See {isOperatorFor}. Emits an {AuthorizedOperator} event. Requirements - `operator` cannot be calling address.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by an account (`owner`).\"},\"burn(uint256,bytes)\":{\"details\":\"Destroys `amount` tokens from the caller's account, reducing the total supply. If a send hook is registered for the caller, the corresponding function will be called with `data` and empty `operatorData`. See {IERC777Sender}. Emits a {Burned} event. Requirements - the caller must have at least `amount` tokens.\"},\"defaultOperators()\":{\"details\":\"Returns the list of default operators. These accounts are operators for all token holders, even if {authorizeOperator} was never called on them. This list is immutable, but individual holders may revoke these via {revokeOperator}, in which case {isOperatorFor} will return false.\"},\"granularity()\":{\"details\":\"Returns the smallest part of the token that is not divisible. This means all token operations (creation, movement and destruction) must have amounts that are a multiple of this number. For most token contracts, this value will equal 1.\"},\"isOperatorFor(address,address)\":{\"details\":\"Returns true if an account is an operator of `tokenHolder`. Operators can send and burn tokens on behalf of their owners. All accounts are their own operator. See {operatorSend} and {operatorBurn}.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"operatorBurn(address,uint256,bytes,bytes)\":{\"details\":\"Destroys `amount` tokens from `account`, reducing the total supply. The caller must be an operator of `account`. If a send hook is registered for `account`, the corresponding function will be called with `data` and `operatorData`. See {IERC777Sender}. Emits a {Burned} event. Requirements - `account` cannot be the zero address. - `account` must have at least `amount` tokens. - the caller must be an operator for `account`.\"},\"operatorSend(address,address,uint256,bytes,bytes)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient`. The caller must be an operator of `sender`. If send or receive hooks are registered for `sender` and `recipient`, the corresponding functions will be called with `data` and `operatorData`. See {IERC777Sender} and {IERC777Recipient}. Emits a {Sent} event. Requirements - `sender` cannot be the zero address. - `sender` must have at least `amount` tokens. - the caller must be an operator for `sender`. - `recipient` cannot be the zero address. - if `recipient` is a contract, it must implement the {IERC777Recipient} interface.\"},\"revokeOperator(address)\":{\"details\":\"Revoke an account's operator status for the caller. See {isOperatorFor} and {defaultOperators}. Emits a {RevokedOperator} event. Requirements - `operator` cannot be calling address.\"},\"send(address,uint256,bytes)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. If send or receive hooks are registered for the caller and `recipient`, the corresponding functions will be called with `data` and empty `operatorData`. See {IERC777Sender} and {IERC777Recipient}. Emits a {Sent} event. Requirements - the caller must have at least `amount` tokens. - `recipient` cannot be the zero address. - if `recipient` is a contract, it must implement the {IERC777Recipient} interface.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC777/IERC777.sol\":\"IERC777\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC777/IERC777.sol\":{\"keccak256\":\"0x385a7061f1436b079d44c140dee9387d5313e94874ff9ee877dc0085c981ac3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c3fe22bb0d9527356e11f267f9187134de4d4ed1ff77468b4d73e3238697b96\",\"dweb:/ipfs/Qmc8caJctgxbzXEpxRogQMR2bnBk5U67hA7kKbUEG2PUXV\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/Address.sol":{"Address":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122056388b4bd61a0a82b1b5642110ef2e3e47829ce58d55205c0109152159a2901a64736f6c63430008120033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 JUMP CODESIZE DUP12 0x4B 0xD6 BYTE EXP DUP3 0xB1 0xB5 PUSH5 0x2110EF2E3E SELFBALANCE DUP3 SWAP13 0xE5 DUP14 SSTORE KECCAK256 0x5C ADD MULMOD ISZERO 0x21 MSIZE LOG2 SWAP1 BYTE PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"194:8964:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122056388b4bd61a0a82b1b5642110ef2e3e47829ce58d55205c0109152159a2901a64736f6c63430008120033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 JUMP CODESIZE DUP12 0x4B 0xD6 BYTE EXP DUP3 0xB1 0xB5 PUSH5 0x2110EF2E3E SELFBALANCE DUP3 SWAP13 0xE5 DUP14 SSTORE KECCAK256 0x5C ADD MULMOD ISZERO 0x21 MSIZE LOG2 SWAP1 BYTE PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"194:8964:4:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Address.sol\":\"Address\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xf96f969e24029d43d0df89e59d365f277021dac62b48e1c1e3ebe0acdd7f1ca1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec772b45a624be516f1c81970caa8a2e144301e9d0921cbc1a2789fef39a1269\",\"dweb:/ipfs/QmNyjwxCrGhQMyzLD93oUobJXVe9ceJvRvfXwbEtuxPiEj\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/Strings.sol":{"Strings":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202be3788305d51dccf412882e015ded65d6890e38d360ee4450d98f27031c296564736f6c63430008120033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2B 0xE3 PUSH25 0x8305D51DCCF412882E015DED65D6890E38D360EE4450D98F27 SUB SHR 0x29 PUSH6 0x64736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"188:2065:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202be3788305d51dccf412882e015ded65d6890e38d360ee4450d98f27031c296564736f6c63430008120033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2B 0xE3 PUSH25 0x8305D51DCCF412882E015DED65D6890E38D360EE4450D98F27 SUB SHR 0x29 PUSH6 0x64736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"188:2065:5:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"String operations.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Strings.sol\":\"Strings\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xa4d1d62251f8574deb032a35fc948386a9b4de74b812d4f545a1ac120486b48a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c969013129ba9e651a20735ef659fef6d8a1139ea3607bd4b26ddea2d645634\",\"dweb:/ipfs/QmVhVa6LGuzAcB8qgDtVHRkucn4ihj5UZr8xBLcJkP6ucb\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa1e8e83cd0087785df04ac79fb395d9f3684caeaf973d9e2c71caef723a3a5d6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33bbf48cc069be677705037ba7520c22b1b622c23b33e1a71495f2d36549d40b\",\"dweb:/ipfs/Qmct36zWXv3j7LZB83uwbg7TXwnZSN1fqHNDZ93GG98bGz\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/math/Math.sol":{"Math":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208f63ffdaae21fc026dee9daad1bffb318e7c5b3a3259e486c6500b228f15508f64736f6c63430008120033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP16 PUSH4 0xFFDAAE21 0xFC MUL PUSH14 0xEE9DAAD1BFFB318E7C5B3A3259E4 DUP7 0xC6 POP SIGNEXTEND 0x22 DUP16 ISZERO POP DUP16 PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"202:12302:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208f63ffdaae21fc026dee9daad1bffb318e7c5b3a3259e486c6500b228f15508f64736f6c63430008120033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP16 PUSH4 0xFFDAAE21 0xFC MUL PUSH14 0xEE9DAAD1BFFB318E7C5B3A3259E4 DUP7 0xC6 POP SIGNEXTEND 0x22 DUP16 ISZERO POP DUP16 PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"202:12302:6:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/math/Math.sol\":\"Math\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa1e8e83cd0087785df04ac79fb395d9f3684caeaf973d9e2c71caef723a3a5d6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33bbf48cc069be677705037ba7520c22b1b622c23b33e1a71495f2d36549d40b\",\"dweb:/ipfs/Qmct36zWXv3j7LZB83uwbg7TXwnZSN1fqHNDZ93GG98bGz\"]}},\"version\":1}"}},"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol":{"SuperTokenV1Library":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122073d7e2aef7282b8d27140e83b7b62ce0d0675f2534eaabcab57e5e2e48e18f2364736f6c63430008120033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH20 0xD7E2AEF7282B8D27140E83B7B62CE0D0675F2534 0xEA 0xAB 0xCA 0xB5 PUSH31 0x5E2E48E18F2364736F6C634300081200330000000000000000000000000000 ","sourceMap":"572:58073:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122073d7e2aef7282b8d27140e83b7b62ce0d0675f2534eaabcab57e5e2e48e18f2364736f6c63430008120033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH20 0xD7E2AEF7282B8D27140E83B7B62CE0D0675F2534 0xEA 0xAB 0xCA 0xB5 PUSH31 0x5E2E48E18F2364736F6C634300081200330000000000000000000000000000 ","sourceMap":"572:58073:7:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Superfluid\",\"details\":\"Set `using for ISuperToken` in including file, and call any of these functions on an instance of ISuperToken\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Library for Token Centric Interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol\":\"SuperTokenV1Library\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"@openzeppelin/contracts/token/ERC777/IERC777.sol\":{\"keccak256\":\"0x385a7061f1436b079d44c140dee9387d5313e94874ff9ee877dc0085c981ac3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c3fe22bb0d9527356e11f267f9187134de4d4ed1ff77468b4d73e3238697b96\",\"dweb:/ipfs/Qmc8caJctgxbzXEpxRogQMR2bnBk5U67hA7kKbUEG2PUXV\"]},\"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol\":{\"keccak256\":\"0x1b588d76f3addfeb2f368ec534fbd8da6120c8ba3c08e95f410a9cc2204faf79\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://74e51ec8a8d50ad9c6c047a2548de4aac9e6da23f65b2d8a74e89665d26c527f\",\"dweb:/ipfs/QmS26ukRAwj9ZSHmRSbjmpmdA6EaZHAK6JvE38LkqjRYaP\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol\":{\"keccak256\":\"0xb68e122faba133422f4cbdd7e15fc913073dfa2c3682c18d6449b121e67d1104\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://da0611fda964b8356d38cb006133865b58adc6e11d3817e27daf20b02ad6880f\",\"dweb:/ipfs/QmeLbak3yiUfkGvxEZzmS4ndDwDfxtZNeKiA86G3WxzjyD\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IInstantDistributionAgreementV1.sol\":{\"keccak256\":\"0x7b088dfa11a00d2b1e6e0938978364a6918015b052a4bf3ffcc67db9b3182370\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://2437f6ea2d8c8de7613aef5de4dcf3530c2beb801f7d5f3e21ac617e73f8882b\",\"dweb:/ipfs/QmVBtqXYV25fQZ9P6xokBzgFnHCBthJSZdFo9quBY169fd\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol\":{\"keccak256\":\"0x80254971aff00fc006d70b85b7bc830bb28096789e72ff3f03aa22cc7810eb0c\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://840f9d959abfbf3919db3dca35336e360b2bbd54e677439a545c7c4f163f6d70\",\"dweb:/ipfs/QmR4CRq7dpYR4NuCSASkNrcnbSScRX8MaEvDs8L7v3xDyr\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol\":{\"keccak256\":\"0x9b4fab6dcac1337f78e04d67d8c2b48b1de8bd4bbf14b475840f9dbda7b8f21e\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://cc2f3629ad0cb46bd4f595880591ad6c9d75a82d920cb9355e462fbf8022c820\",\"dweb:/ipfs/QmXMovxK4qpWT4yffXxUVjkMNwxEfS6mtn39mLSmjaxEdW\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperApp.sol\":{\"keccak256\":\"0x6cc4b0724d977190c7441dfc3be6c6e48b43b555c3370af32ef5b6600f15f53f\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://3e89c944642772a42429f21a11017b57deb98a9198f8e4f8749f00aaee71299e\",\"dweb:/ipfs/QmaSv9GvqikcGHJ3tcwATDHSpQw6mfnHPDtcfqcZSS7LF6\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.sol\":{\"keccak256\":\"0x6860f0bf69dcc1d1ec39eefb43e0cd18b276b48ebe9efd53450e09cd2f997ab2\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://6421f80f2ff7818bd235b7bf4b911cc40edcb598507a246b4de0fa0191a9e1aa\",\"dweb:/ipfs/QmWxktXMjYhi1zt52D3JXNcxCFesXu8kQoSCJQ3j88apM3\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperTokenFactory.sol\":{\"keccak256\":\"0xe2525ef2906504e2f61775ed91bbebeea2f4e2e3fa42ce190561acf6a01187ff\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://7a9859eb432321a65cd15ca988a13776e1c31df44b4cf25f95fa04b54a8a8625\",\"dweb:/ipfs/QmQVJQoeoWemptZhbRgWJZWwMTiNtxVsc1FYmGdtdTfqcL\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol\":{\"keccak256\":\"0xab9dab941f99d0f0ef6125fb6eafde03378d7c3e94e613dd12fb7fbf594c3373\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://928c6ef915dee69058d4cfcb9f2344d4fc78d9763b47b17e5c03fbff64ba3c64\",\"dweb:/ipfs/Qmdk733ZHceatz3qbuodLCCS9TUspJJtXLoX6vWwMvrPDE\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance.sol\":{\"keccak256\":\"0x90a9259d0f0bb6b1bb6d48f051277eb75df96a9fbe684a203a3a468ad19318e2\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://9c8162a2d07ffe768920fef55292684149173afefbfba76b8fca007e55092229\",\"dweb:/ipfs/QmducLNwrzeUXEpBjUTSMu7sfmQEwVhcYXApe4brc1zQ6V\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol\":{\"keccak256\":\"0x9cad3866982902ea88df0874a563d2e4aeba5a5bcc6289c30cccf9b4099d2fb6\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://e8fd960b259331f204c7cb7dcd32b09d68f4294e3b872fad00ad467609c3ef72\",\"dweb:/ipfs/QmeZFEvsDunXQGPbXFfN5AvfKM5am1FY8Xv6e3c4tNKvgY\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo.sol\":{\"keccak256\":\"0x55be78ffb441c782f612b153d7d9049e3f0dbfd412c1f7df29c896b972b2985f\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://a223c68e38a6c9b1e363e525911bc7eda44ea517865ae53bd0d34ff858cc02ae\",\"dweb:/ipfs/QmVruGehibG6Emr2A6JHwUnhd4NzsGkE24cbGqnDpEvrKh\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.sol\":{\"keccak256\":\"0x7456cd394cc905aae7cdbd4601ce1c296c768c13c28e66efbb913cc070bad3e4\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://5a6589b428b724721ba5b4dd196c8f366a6e694ef313add093f29af64496c042\",\"dweb:/ipfs/QmSMgV6y8L6pyyzDz6kKmafVwujNWcjTqutpCBxe4uNRqg\"]}},\"version\":1}"}},"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol":{"IConstantFlowAgreementV1":{"abi":[{"inputs":[],"name":"CFA_ACL_FLOW_RATE_ALLOWANCE_EXCEEDED","type":"error"},{"inputs":[],"name":"CFA_ACL_NO_NEGATIVE_ALLOWANCE","type":"error"},{"inputs":[],"name":"CFA_ACL_NO_SENDER_CREATE","type":"error"},{"inputs":[],"name":"CFA_ACL_NO_SENDER_FLOW_OPERATOR","type":"error"},{"inputs":[],"name":"CFA_ACL_NO_SENDER_UPDATE","type":"error"},{"inputs":[],"name":"CFA_ACL_OPERATOR_NO_CREATE_PERMISSIONS","type":"error"},{"inputs":[],"name":"CFA_ACL_OPERATOR_NO_DELETE_PERMISSIONS","type":"error"},{"inputs":[],"name":"CFA_ACL_OPERATOR_NO_UPDATE_PERMISSIONS","type":"error"},{"inputs":[],"name":"CFA_ACL_UNCLEAN_PERMISSIONS","type":"error"},{"inputs":[],"name":"CFA_DEPOSIT_TOO_BIG","type":"error"},{"inputs":[],"name":"CFA_FLOW_ALREADY_EXISTS","type":"error"},{"inputs":[],"name":"CFA_FLOW_DOES_NOT_EXIST","type":"error"},{"inputs":[],"name":"CFA_FLOW_RATE_TOO_BIG","type":"error"},{"inputs":[],"name":"CFA_HOOK_OUT_OF_GAS","type":"error"},{"inputs":[],"name":"CFA_INSUFFICIENT_BALANCE","type":"error"},{"inputs":[],"name":"CFA_INVALID_FLOW_RATE","type":"error"},{"inputs":[],"name":"CFA_NON_CRITICAL_SENDER","type":"error"},{"inputs":[],"name":"CFA_NO_SELF_FLOW","type":"error"},{"inputs":[],"name":"CFA_ZERO_ADDRESS_RECEIVER","type":"error"},{"inputs":[],"name":"CFA_ZERO_ADDRESS_SENDER","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract ISuperfluidToken","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"flowOperator","type":"address"},{"indexed":false,"internalType":"uint8","name":"permissions","type":"uint8"},{"indexed":false,"internalType":"int96","name":"flowRateAllowance","type":"int96"}],"name":"FlowOperatorUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract ISuperfluidToken","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"int96","name":"flowRate","type":"int96"},{"indexed":false,"internalType":"int256","name":"totalSenderFlowRate","type":"int256"},{"indexed":false,"internalType":"int256","name":"totalReceiverFlowRate","type":"int256"},{"indexed":false,"internalType":"bytes","name":"userData","type":"bytes"}],"name":"FlowUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"flowOperator","type":"address"},{"indexed":false,"internalType":"uint256","name":"deposit","type":"uint256"}],"name":"FlowUpdatedExtension","type":"event"},{"inputs":[],"name":"agreementType","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"contract ISuperfluidToken","name":"token","type":"address"},{"internalType":"address","name":"flowOperator","type":"address"},{"internalType":"bytes","name":"ctx","type":"bytes"}],"name":"authorizeFlowOperatorWithFullControl","outputs":[{"internalType":"bytes","name":"newCtx","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ISuperfluidToken","name":"token","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"int96","name":"flowRate","type":"int96"},{"internalType":"bytes","name":"ctx","type":"bytes"}],"name":"createFlow","outputs":[{"internalType":"bytes","name":"newCtx","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ISuperfluidToken","name":"token","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"int96","name":"flowRate","type":"int96"},{"internalType":"bytes","name":"ctx","type":"bytes"}],"name":"createFlowByOperator","outputs":[{"internalType":"bytes","name":"newCtx","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ISuperfluidToken","name":"token","type":"address"},{"internalType":"address","name":"flowOperator","type":"address"},{"internalType":"int96","name":"subtractedFlowRateAllowance","type":"int96"},{"internalType":"bytes","name":"ctx","type":"bytes"}],"name":"decreaseFlowRateAllowance","outputs":[{"internalType":"bytes","name":"newCtx","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ISuperfluidToken","name":"token","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"bytes","name":"ctx","type":"bytes"}],"name":"deleteFlow","outputs":[{"internalType":"bytes","name":"newCtx","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ISuperfluidToken","name":"token","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"bytes","name":"ctx","type":"bytes"}],"name":"deleteFlowByOperator","outputs":[{"internalType":"bytes","name":"newCtx","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ISuperfluidToken","name":"token","type":"address"},{"internalType":"address","name":"account","type":"address"}],"name":"getAccountFlowInfo","outputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"int96","name":"flowRate","type":"int96"},{"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":"int96","name":"flowRate","type":"int96"}],"name":"getDepositRequiredForFlowRate","outputs":[{"internalType":"uint256","name":"deposit","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ISuperfluidToken","name":"token","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"receiver","type":"address"}],"name":"getFlow","outputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"int96","name":"flowRate","type":"int96"},{"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":"bytes32","name":"agreementId","type":"bytes32"}],"name":"getFlowByID","outputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"int96","name":"flowRate","type":"int96"},{"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":"sender","type":"address"},{"internalType":"address","name":"flowOperator","type":"address"}],"name":"getFlowOperatorData","outputs":[{"internalType":"bytes32","name":"flowOperatorId","type":"bytes32"},{"internalType":"uint8","name":"permissions","type":"uint8"},{"internalType":"int96","name":"flowRateAllowance","type":"int96"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ISuperfluidToken","name":"token","type":"address"},{"internalType":"bytes32","name":"flowOperatorId","type":"bytes32"}],"name":"getFlowOperatorDataByID","outputs":[{"internalType":"uint8","name":"permissions","type":"uint8"},{"internalType":"int96","name":"flowRateAllowance","type":"int96"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ISuperfluidToken","name":"token","type":"address"},{"internalType":"uint256","name":"deposit","type":"uint256"}],"name":"getMaximumFlowRateFromDeposit","outputs":[{"internalType":"int96","name":"flowRate","type":"int96"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ISuperfluidToken","name":"token","type":"address"},{"internalType":"address","name":"account","type":"address"}],"name":"getNetFlow","outputs":[{"internalType":"int96","name":"flowRate","type":"int96"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ISuperfluidToken","name":"token","type":"address"},{"internalType":"address","name":"flowOperator","type":"address"},{"internalType":"int96","name":"addedFlowRateAllowance","type":"int96"},{"internalType":"bytes","name":"ctx","type":"bytes"}],"name":"increaseFlowRateAllowance","outputs":[{"internalType":"bytes","name":"newCtx","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ISuperfluidToken","name":"token","type":"address"},{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"isPatricianPeriod","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ISuperfluidToken","name":"token","type":"address"},{"internalType":"address","name":"account","type":"address"}],"name":"isPatricianPeriodNow","outputs":[{"internalType":"bool","name":"isCurrentlyPatricianPeriod","type":"bool"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ISuperfluidToken","name":"token","type":"address"},{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"time","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":"flowOperator","type":"address"},{"internalType":"bytes","name":"ctx","type":"bytes"}],"name":"revokeFlowOperatorWithFullControl","outputs":[{"internalType":"bytes","name":"newCtx","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ISuperfluidToken","name":"token","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"int96","name":"flowRate","type":"int96"},{"internalType":"bytes","name":"ctx","type":"bytes"}],"name":"updateFlow","outputs":[{"internalType":"bytes","name":"newCtx","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ISuperfluidToken","name":"token","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"int96","name":"flowRate","type":"int96"},{"internalType":"bytes","name":"ctx","type":"bytes"}],"name":"updateFlowByOperator","outputs":[{"internalType":"bytes","name":"newCtx","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ISuperfluidToken","name":"token","type":"address"},{"internalType":"address","name":"flowOperator","type":"address"},{"internalType":"uint8","name":"permissions","type":"uint8"},{"internalType":"int96","name":"flowRateAllowance","type":"int96"},{"internalType":"bytes","name":"ctx","type":"bytes"}],"name":"updateFlowOperatorPermissions","outputs":[{"internalType":"bytes","name":"newCtx","type":"bytes"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"agreementType()":"7730599e","authorizeFlowOperatorWithFullControl(address,address,bytes)":"54b770e3","createFlow(address,address,int96,bytes)":"62fc305e","createFlowByOperator(address,address,address,int96,bytes)":"94229ecb","decreaseFlowRateAllowance(address,address,int96,bytes)":"5f51fb23","deleteFlow(address,address,address,bytes)":"b4b333c6","deleteFlowByOperator(address,address,address,bytes)":"4c8b181f","getAccountFlowInfo(address,address)":"0f1ac495","getDepositRequiredForFlowRate(address,int96)":"8d997f6e","getFlow(address,address,address)":"e6a1e888","getFlowByID(address,bytes32)":"aabd2668","getFlowOperatorData(address,address,address)":"00422bbe","getFlowOperatorDataByID(address,bytes32)":"09d256ef","getMaximumFlowRateFromDeposit(address,uint256)":"0602f7db","getNetFlow(address,address)":"e8e7e2d1","increaseFlowRateAllowance(address,address,int96,bytes)":"ac5f5d00","isPatricianPeriod(address,address,uint256)":"4b839e0b","isPatricianPeriodNow(address,address)":"4fe9c291","realtimeBalanceOf(address,address,uint256)":"9b2e48bc","revokeFlowOperatorWithFullControl(address,address,bytes)":"062e56ec","updateFlow(address,address,int96,bytes)":"50209a62","updateFlowByOperator(address,address,address,int96,bytes)":"354b9590","updateFlowOperatorPermissions(address,address,uint8,int96,bytes)":"811b3d40"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"CFA_ACL_FLOW_RATE_ALLOWANCE_EXCEEDED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CFA_ACL_NO_NEGATIVE_ALLOWANCE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CFA_ACL_NO_SENDER_CREATE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CFA_ACL_NO_SENDER_FLOW_OPERATOR\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CFA_ACL_NO_SENDER_UPDATE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CFA_ACL_OPERATOR_NO_CREATE_PERMISSIONS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CFA_ACL_OPERATOR_NO_DELETE_PERMISSIONS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CFA_ACL_OPERATOR_NO_UPDATE_PERMISSIONS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CFA_ACL_UNCLEAN_PERMISSIONS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CFA_DEPOSIT_TOO_BIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CFA_FLOW_ALREADY_EXISTS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CFA_FLOW_DOES_NOT_EXIST\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CFA_FLOW_RATE_TOO_BIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CFA_HOOK_OUT_OF_GAS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CFA_INSUFFICIENT_BALANCE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CFA_INVALID_FLOW_RATE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CFA_NON_CRITICAL_SENDER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CFA_NO_SELF_FLOW\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CFA_ZERO_ADDRESS_RECEIVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CFA_ZERO_ADDRESS_SENDER\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"flowOperator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"permissions\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"int96\",\"name\":\"flowRateAllowance\",\"type\":\"int96\"}],\"name\":\"FlowOperatorUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"totalSenderFlowRate\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"totalReceiverFlowRate\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"FlowUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"flowOperator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"deposit\",\"type\":\"uint256\"}],\"name\":\"FlowUpdatedExtension\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"agreementType\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"flowOperator\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"authorizeFlowOperatorWithFullControl\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"createFlow\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"createFlowByOperator\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"flowOperator\",\"type\":\"address\"},{\"internalType\":\"int96\",\"name\":\"subtractedFlowRateAllowance\",\"type\":\"int96\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"decreaseFlowRateAllowance\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"deleteFlow\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"deleteFlowByOperator\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getAccountFlowInfo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"},{\"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\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"}],\"name\":\"getDepositRequiredForFlowRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"deposit\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"getFlow\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"},{\"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\":\"bytes32\",\"name\":\"agreementId\",\"type\":\"bytes32\"}],\"name\":\"getFlowByID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"},{\"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\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"flowOperator\",\"type\":\"address\"}],\"name\":\"getFlowOperatorData\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"flowOperatorId\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"permissions\",\"type\":\"uint8\"},{\"internalType\":\"int96\",\"name\":\"flowRateAllowance\",\"type\":\"int96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"flowOperatorId\",\"type\":\"bytes32\"}],\"name\":\"getFlowOperatorDataByID\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"permissions\",\"type\":\"uint8\"},{\"internalType\":\"int96\",\"name\":\"flowRateAllowance\",\"type\":\"int96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deposit\",\"type\":\"uint256\"}],\"name\":\"getMaximumFlowRateFromDeposit\",\"outputs\":[{\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNetFlow\",\"outputs\":[{\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"flowOperator\",\"type\":\"address\"},{\"internalType\":\"int96\",\"name\":\"addedFlowRateAllowance\",\"type\":\"int96\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"increaseFlowRateAllowance\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"isPatricianPeriod\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isPatricianPeriodNow\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isCurrentlyPatricianPeriod\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"time\",\"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\":\"flowOperator\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"revokeFlowOperatorWithFullControl\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"updateFlow\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"updateFlowByOperator\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"flowOperator\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"permissions\",\"type\":\"uint8\"},{\"internalType\":\"int96\",\"name\":\"flowRateAllowance\",\"type\":\"int96\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"updateFlowOperatorPermissions\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Superfluid\",\"events\":{\"FlowOperatorUpdated(address,address,address,uint8,int96)\":{\"details\":\"Flow operator updated event\",\"params\":{\"flowOperator\":\"Flow operator address\",\"flowRateAllowance\":\"The flow rate allowance the `flowOperator` is granted (only goes down)\",\"permissions\":\"Octo bitmask representation of permissions\",\"sender\":\"Flow sender address\",\"token\":\"Super token address\"}},\"FlowUpdated(address,address,address,int96,int256,int256,bytes)\":{\"details\":\"Flow updated event\",\"params\":{\"flowRate\":\"Flow rate in amount per second for this flow\",\"receiver\":\"Flow recipient address\",\"sender\":\"Flow sender address\",\"token\":\"Super token address\",\"totalReceiverFlowRate\":\"Total flow rate in amount per second for the receiver\",\"totalSenderFlowRate\":\"Total flow rate in amount per second for the sender\",\"userData\":\"The user provided data\"}},\"FlowUpdatedExtension(address,uint256)\":{\"details\":\"Flow updated extension event\",\"params\":{\"deposit\":\"The deposit amount for the stream\",\"flowOperator\":\"Flow operator address - the Context.msgSender\"}}},\"kind\":\"dev\",\"methods\":{\"agreementType()\":{\"details\":\"ISuperAgreement.agreementType implementation\"},\"authorizeFlowOperatorWithFullControl(address,address,bytes)\":{\"details\":\"msgSender from `ctx` grants `flowOperator` all permissions with flowRateAllowance as type(int96).max\",\"params\":{\"ctx\":\"Context bytes (see ISuperfluid.sol for Context struct)\",\"flowOperator\":\"The permission grantee address\",\"token\":\"Super token address\"}},\"createFlow(address,address,int96,bytes)\":{\"custom:callbacks\":\" - AgreementCreated - agreementId - can be used in getFlowByID - agreementData - abi.encode(address flowSender, address flowReceiver)\",\"custom:note\":\" - A deposit is taken as safety margin for the solvency agents - A extra gas fee may be taken to pay for solvency agent liquidations\",\"details\":\"flowId (agreementId) is the keccak256 hash of encoded sender and receiver\",\"params\":{\"ctx\":\"Context bytes (see ISuperfluid.sol for Context struct)\",\"flowRate\":\"New flow rate in amount per second\",\"receiver\":\"Flow receiver address\",\"token\":\"Super token address\"}},\"createFlowByOperator(address,address,address,int96,bytes)\":{\"details\":\"A flow created by an approved flow operator (see above for details on callbacks)\",\"params\":{\"ctx\":\"Context bytes (see ISuperfluid.sol for Context struct)\",\"flowRate\":\"New flow rate in amount per second\",\"receiver\":\"Flow receiver address\",\"sender\":\"Flow sender address (has granted permissions)\",\"token\":\"Super token address\"}},\"decreaseFlowRateAllowance(address,address,int96,bytes)\":{\"details\":\"msgSender from `ctx` decreases flow rate allowance for the `flowOperator` by `subtractedFlowRateAllowance`if `subtractedFlowRateAllowance` is negative, we revert with CFA_ACL_NO_NEGATIVE_ALLOWANCE\",\"params\":{\"ctx\":\"Context bytes (see ISuperfluid.sol for Context struct)\",\"flowOperator\":\"The permission grantee address\",\"subtractedFlowRateAllowance\":\"The flow rate allowance delta\",\"token\":\"Super token address\"},\"returns\":{\"newCtx\":\"The new context bytes\"}},\"deleteFlow(address,address,address,bytes)\":{\"custom:callbacks\":\" - AgreementTerminated - agreementId - can be used in getFlowByID - agreementData - abi.encode(address flowSender, address flowReceiver)\",\"custom:note\":\" - Both flow sender and receiver may delete the flow - If Sender account is insolvent or in critical state, a solvency agent may also terminate the agreement - Gas fee may be returned to the sender\",\"details\":\"flowId (agreementId) is the keccak256 hash of encoded sender and receiver\",\"params\":{\"ctx\":\"Context bytes (see ISuperfluid.sol for Context struct)\",\"receiver\":\"Flow receiver address\",\"token\":\"Super token address\"}},\"deleteFlowByOperator(address,address,address,bytes)\":{\"details\":\"A flow deleted by an approved flow operator (see above for details on callbacks)\",\"params\":{\"ctx\":\"Context bytes (see ISuperfluid.sol for Context struct)\",\"receiver\":\"Flow receiver address\",\"token\":\"Super token address\"}},\"getAccountFlowInfo(address,address)\":{\"details\":\"Get the aggregated flow info of the account\",\"params\":{\"account\":\"Account for the query\",\"token\":\"Super token address\"},\"returns\":{\"deposit\":\"The sum of all deposits for account's flows\",\"flowRate\":\"The net flow rate of token for account\",\"owedDeposit\":\"The sum of all owed deposits for account's flows\",\"timestamp\":\"Timestamp of when a flow was last updated for account\"}},\"getDepositRequiredForFlowRate(address,int96)\":{\"custom:note\":\" - if calculated deposit (flowRate * liquidationPeriod) is less than the minimum deposit, we use the minimum deposit otherwise we use the calculated deposit\",\"details\":\"Calculates the deposit based on the liquidationPeriod and flowRate\",\"params\":{\"flowRate\":\"Flow rate to be tested\"},\"returns\":{\"deposit\":\"The deposit amount based on flowRate and liquidationPeriod\"}},\"getFlow(address,address,address)\":{\"details\":\"Get the flow data between `sender` and `receiver` of `token`\",\"params\":{\"receiver\":\"Flow sender\",\"sender\":\"Flow receiver\",\"token\":\"Super token address\"},\"returns\":{\"deposit\":\"The amount of deposit the flow\",\"flowRate\":\"The flow rate\",\"owedDeposit\":\"The amount of owed deposit of the flow\",\"timestamp\":\"Timestamp of when the flow is updated\"}},\"getFlowByID(address,bytes32)\":{\"details\":\"flowId (agreementId) is the keccak256 hash of encoded sender and receiver\",\"params\":{\"agreementId\":\"The agreement ID\",\"token\":\"Super token address\"},\"returns\":{\"deposit\":\"The deposit amount of the flow\",\"flowRate\":\"The flow rate\",\"owedDeposit\":\"The owed deposit amount of the flow\",\"timestamp\":\"Timestamp of when the flow is updated\"}},\"getFlowOperatorData(address,address,address)\":{\"params\":{\"flowOperator\":\"The permission grantee address\",\"sender\":\"The permission granter address\",\"token\":\"Super token address\"},\"returns\":{\"flowOperatorId\":\"The keccak256 hash of encoded string \\\"flowOperator\\\", sender and flowOperator\",\"flowRateAllowance\":\"The flow rate allowance the `flowOperator` is granted (only goes down)\",\"permissions\":\"A bitmask representation of the granted permissions\"}},\"getFlowOperatorDataByID(address,bytes32)\":{\"params\":{\"flowOperatorId\":\"The keccak256 hash of encoded string \\\"flowOperator\\\", sender and flowOperator\",\"token\":\"Super token address\"},\"returns\":{\"flowRateAllowance\":\"The flow rate allowance the `flowOperator` is granted (only goes down)\",\"permissions\":\"A bitmask representation of the granted permissions\"}},\"getMaximumFlowRateFromDeposit(address,uint256)\":{\"details\":\"The deposit is clipped and rounded down\",\"params\":{\"deposit\":\"Deposit amount used for creating the flow\"},\"returns\":{\"flowRate\":\"The maximum flow rate\"}},\"getNetFlow(address,address)\":{\"details\":\"Get the net flow rate of the account\",\"params\":{\"account\":\"Account for the query\",\"token\":\"Super token address\"},\"returns\":{\"flowRate\":\"Net flow rate\"}},\"increaseFlowRateAllowance(address,address,int96,bytes)\":{\"details\":\"if `addedFlowRateAllowance` is negative, we revert with CFA_ACL_NO_NEGATIVE_ALLOWANCE\",\"params\":{\"addedFlowRateAllowance\":\"The flow rate allowance delta\",\"ctx\":\"Context bytes (see ISuperfluid.sol for Context struct)\",\"flowOperator\":\"The permission grantee address\",\"token\":\"Super token address\"},\"returns\":{\"newCtx\":\"The new context bytes\"}},\"isPatricianPeriod(address,address,uint256)\":{\"details\":\"Returns whether it is the patrician period based on timestamp\",\"params\":{\"account\":\"The account we are interested in\",\"timestamp\":\"The timestamp we are interested in observing the result of isPatricianPeriod\"},\"returns\":{\"_0\":\"bool Whether it is currently the patrician period dictated by governance\"}},\"isPatricianPeriodNow(address,address)\":{\"details\":\"Returns whether it is the patrician period based on host.getNow()\",\"params\":{\"account\":\"The account we are interested in\"},\"returns\":{\"isCurrentlyPatricianPeriod\":\"Whether it is currently the patrician period dictated by governance\",\"timestamp\":\"The value of host.getNow()\"}},\"realtimeBalanceOf(address,address,uint256)\":{\"details\":\"Calculate the real-time balance for the account of this agreement class\",\"params\":{\"account\":\"Account the state belongs to\",\"time\":\"Time used for the calculation\"},\"returns\":{\"deposit\":\"Account deposit amount of this agreement\",\"dynamicBalance\":\"Dynamic balance portion of real-time balance of this agreement\",\"owedDeposit\":\"Account owed deposit amount of this agreement\"}},\"revokeFlowOperatorWithFullControl(address,address,bytes)\":{\"details\":\"`permissions` and `flowRateAllowance` will both be set to 0\",\"params\":{\"ctx\":\"Context bytes (see ISuperfluid.sol for Context struct)\",\"flowOperator\":\"The permission grantee address\",\"token\":\"Super token address\"}},\"updateFlow(address,address,int96,bytes)\":{\"custom:callbacks\":\" - AgreementUpdated - agreementId - can be used in getFlowByID - agreementData - abi.encode(address flowSender, address flowReceiver)\",\"custom:note\":\" - Only the flow sender may update the flow rate - Even if the flow rate is zero, the flow is not deleted from the system - Deposit amount will be adjusted accordingly - No new gas fee is charged\",\"details\":\"flowId (agreementId) is the keccak256 hash of encoded sender and receiver\",\"params\":{\"ctx\":\"Context bytes (see ISuperfluid.sol for Context struct)\",\"flowRate\":\"New flow rate in amount per second\",\"receiver\":\"Flow receiver address\",\"token\":\"Super token address\"}},\"updateFlowByOperator(address,address,address,int96,bytes)\":{\"details\":\"A flow updated by an approved flow operator (see above for details on callbacks)\",\"params\":{\"ctx\":\"Context bytes (see ISuperfluid.sol for Context struct)\",\"flowRate\":\"New flow rate in amount per second\",\"receiver\":\"Flow receiver address\",\"sender\":\"Flow sender address (has granted permissions)\",\"token\":\"Super token address\"}},\"updateFlowOperatorPermissions(address,address,uint8,int96,bytes)\":{\"details\":\"msgSender from `ctx` updates permissions for the `flowOperator` with `flowRateAllowance`\",\"params\":{\"ctx\":\"Context bytes (see ISuperfluid.sol for Context struct)\",\"flowOperator\":\"The permission grantee address\",\"flowRateAllowance\":\"The flow rate allowance the `flowOperator` is granted (only goes down)\",\"permissions\":\"A bitmask representation of the granted permissions\",\"token\":\"Super token address\"}}},\"title\":\"Constant Flow Agreement interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"createFlow(address,address,int96,bytes)\":{\"notice\":\"Create a flow betwen ctx.msgSender and receiver\"},\"createFlowByOperator(address,address,address,int96,bytes)\":{\"notice\":\"Create a flow between sender and receiver\"},\"deleteFlow(address,address,address,bytes)\":{\"notice\":\"Delete the flow between sender and receiver\"},\"deleteFlowByOperator(address,address,address,bytes)\":{\"notice\":\"Delete the flow between sender and receiver\"},\"getDepositRequiredForFlowRate(address,int96)\":{\"notice\":\"Get the deposit required for creating the flow\"},\"getFlowByID(address,bytes32)\":{\"notice\":\"Get flow data using agreementId\"},\"getFlowOperatorData(address,address,address)\":{\"notice\":\"Get the permissions of a flow operator between `sender` and `flowOperator` for `token`\"},\"getFlowOperatorDataByID(address,bytes32)\":{\"notice\":\"Get flow operator using flowOperatorId\"},\"getMaximumFlowRateFromDeposit(address,uint256)\":{\"notice\":\"Get the maximum flow rate allowed with the deposit\"},\"increaseFlowRateAllowance(address,address,int96,bytes)\":{\"notice\":\"msgSender from `ctx` increases flow rate allowance for the `flowOperator` by `addedFlowRateAllowance`\"},\"revokeFlowOperatorWithFullControl(address,address,bytes)\":{\"notice\":\"msgSender from `ctx` revokes `flowOperator` create/update/delete permissions\"},\"updateFlow(address,address,int96,bytes)\":{\"notice\":\"Update the flow rate between ctx.msgSender and receiver\"},\"updateFlowByOperator(address,address,address,int96,bytes)\":{\"notice\":\"Update a flow between sender and receiver\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol\":\"IConstantFlowAgreementV1\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol\":{\"keccak256\":\"0xb68e122faba133422f4cbdd7e15fc913073dfa2c3682c18d6449b121e67d1104\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://da0611fda964b8356d38cb006133865b58adc6e11d3817e27daf20b02ad6880f\",\"dweb:/ipfs/QmeLbak3yiUfkGvxEZzmS4ndDwDfxtZNeKiA86G3WxzjyD\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol\":{\"keccak256\":\"0x9b4fab6dcac1337f78e04d67d8c2b48b1de8bd4bbf14b475840f9dbda7b8f21e\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://cc2f3629ad0cb46bd4f595880591ad6c9d75a82d920cb9355e462fbf8022c820\",\"dweb:/ipfs/QmXMovxK4qpWT4yffXxUVjkMNwxEfS6mtn39mLSmjaxEdW\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol\":{\"keccak256\":\"0x9cad3866982902ea88df0874a563d2e4aeba5a5bcc6289c30cccf9b4099d2fb6\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://e8fd960b259331f204c7cb7dcd32b09d68f4294e3b872fad00ad467609c3ef72\",\"dweb:/ipfs/QmeZFEvsDunXQGPbXFfN5AvfKM5am1FY8Xv6e3c4tNKvgY\"]}},\"version\":1}"}},"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IInstantDistributionAgreementV1.sol":{"IInstantDistributionAgreementV1":{"abi":[{"inputs":[],"name":"IDA_INDEX_ALREADY_EXISTS","type":"error"},{"inputs":[],"name":"IDA_INDEX_DOES_NOT_EXIST","type":"error"},{"inputs":[],"name":"IDA_INDEX_SHOULD_GROW","type":"error"},{"inputs":[],"name":"IDA_INSUFFICIENT_BALANCE","type":"error"},{"inputs":[],"name":"IDA_OPERATION_NOT_ALLOWED","type":"error"},{"inputs":[],"name":"IDA_SUBSCRIPTION_ALREADY_APPROVED","type":"error"},{"inputs":[],"name":"IDA_SUBSCRIPTION_DOES_NOT_EXIST","type":"error"},{"inputs":[],"name":"IDA_SUBSCRIPTION_IS_NOT_APPROVED","type":"error"},{"inputs":[],"name":"IDA_ZERO_ADDRESS_SUBSCRIBER","type":"error"},{"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":"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":[{"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":[{"internalType":"contract ISuperfluidToken","name":"token","type":"address"},{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"time","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":"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"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"agreementType()":"7730599e","approveSubscription(address,address,uint32,bytes)":"acf4a6c2","calculateDistribution(address,address,uint32,uint256)":"899baaec","claim(address,address,uint32,address,bytes)":"acafa1b8","createIndex(address,uint32,bytes)":"d787840a","deleteSubscription(address,address,uint32,address,bytes)":"2e5e74c6","distribute(address,uint32,uint256,bytes)":"b96731c2","getIndex(address,address,uint32)":"23fc23f3","getSubscription(address,address,uint32,address)":"5b534051","getSubscriptionByID(address,bytes32)":"cd7245c5","listSubscriptions(address,address)":"b6dacdb8","realtimeBalanceOf(address,address,uint256)":"9b2e48bc","revokeSubscription(address,address,uint32,bytes)":"6041ae96","updateIndex(address,uint32,uint128,bytes)":"7fbc7639","updateSubscription(address,uint32,address,uint128,bytes)":"232d2b58"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"IDA_INDEX_ALREADY_EXISTS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IDA_INDEX_DOES_NOT_EXIST\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IDA_INDEX_SHOULD_GROW\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IDA_INSUFFICIENT_BALANCE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IDA_OPERATION_NOT_ALLOWED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IDA_SUBSCRIPTION_ALREADY_APPROVED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IDA_SUBSCRIPTION_DOES_NOT_EXIST\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IDA_SUBSCRIPTION_IS_NOT_APPROVED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IDA_ZERO_ADDRESS_SUBSCRIBER\",\"type\":\"error\"},{\"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\":\"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\":[{\"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\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"time\",\"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\":\"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\",\"events\":{\"IndexCreated(address,address,uint32,bytes)\":{\"details\":\"Index created event\",\"params\":{\"indexId\":\"The specified indexId of the newly created index\",\"publisher\":\"Index creator and publisher\",\"token\":\"Super token address\",\"userData\":\"The user provided data\"}},\"IndexDistributionClaimed(address,address,uint32,address,uint256)\":{\"details\":\"Index distribution claimed event\",\"params\":{\"amount\":\"The pending amount claimed\",\"indexId\":\"The specified indexId\",\"publisher\":\"Index publisher\",\"subscriber\":\"The subscriber units updated\",\"token\":\"Super token address\"}},\"IndexSubscribed(address,address,uint32,address,bytes)\":{\"details\":\"Index subscribed event\",\"params\":{\"indexId\":\"The specified indexId\",\"publisher\":\"Index publisher\",\"subscriber\":\"The approved subscriber\",\"token\":\"Super token address\",\"userData\":\"The user provided data\"}},\"IndexUnitsUpdated(address,address,uint32,address,uint128,bytes)\":{\"details\":\"Index units updated event\",\"params\":{\"indexId\":\"The specified indexId\",\"publisher\":\"Index publisher\",\"subscriber\":\"The subscriber units updated\",\"token\":\"Super token address\",\"units\":\"The new units amount\",\"userData\":\"The user provided data\"}},\"IndexUnsubscribed(address,address,uint32,address,bytes)\":{\"details\":\"Index unsubscribed event\",\"params\":{\"indexId\":\"The specified indexId\",\"publisher\":\"Index publisher\",\"subscriber\":\"The unsubscribed subscriber\",\"token\":\"Super token address\",\"userData\":\"The user provided data\"}},\"IndexUpdated(address,address,uint32,uint128,uint128,uint128,uint128,bytes)\":{\"details\":\"Index updated event\",\"params\":{\"indexId\":\"The specified indexId of the updated index\",\"newIndexValue\":\"The updated index value\",\"oldIndexValue\":\"The previous index value\",\"publisher\":\"Index updater and publisher\",\"token\":\"Super token address\",\"totalUnitsApproved\":\"The total units approved when the indexValue was updated\",\"totalUnitsPending\":\"The total units pending when the indexValue was updated\",\"userData\":\"The user provided data\"}},\"SubscriptionApproved(address,address,address,uint32,bytes)\":{\"details\":\"Subscription approved event\",\"params\":{\"indexId\":\"The specified indexId\",\"publisher\":\"Index publisher\",\"subscriber\":\"The approved subscriber\",\"token\":\"Super token address\",\"userData\":\"The user provided data\"}},\"SubscriptionDistributionClaimed(address,address,address,uint32,uint256)\":{\"details\":\"Subscription distribution claimed event\",\"params\":{\"amount\":\"The pending amount claimed\",\"indexId\":\"The specified indexId\",\"publisher\":\"Index publisher\",\"subscriber\":\"The subscriber units updated\",\"token\":\"Super token address\"}},\"SubscriptionRevoked(address,address,address,uint32,bytes)\":{\"details\":\"Subscription approved event\",\"params\":{\"indexId\":\"The specified indexId\",\"publisher\":\"Index publisher\",\"subscriber\":\"The approved subscriber\",\"token\":\"Super token address\",\"userData\":\"The user provided data\"}},\"SubscriptionUnitsUpdated(address,address,address,uint32,uint128,bytes)\":{\"details\":\"Subscription units updated event\",\"params\":{\"indexId\":\"The specified indexId\",\"publisher\":\"Index publisher\",\"subscriber\":\"The subscriber units updated\",\"token\":\"Super token address\",\"units\":\"The new units amount\",\"userData\":\"The user provided data\"}}},\"kind\":\"dev\",\"methods\":{\"agreementType()\":{\"details\":\"ISuperAgreement.agreementType implementation\"},\"approveSubscription(address,address,uint32,bytes)\":{\"custom:callbacks\":\" - if subscription exist - AgreementCreated callback to the publisher: - agreementId is for the subscription - if subscription does not exist - AgreementUpdated callback to the publisher: - agreementId is for the subscription\",\"details\":\"Approve the subscription of an index\",\"params\":{\"ctx\":\"Context bytes (see ISuperfluid.sol for Context struct)\",\"indexId\":\"Id of the index\",\"publisher\":\"The publisher of the index\",\"token\":\"Super token address\"}},\"calculateDistribution(address,address,uint32,uint256)\":{\"details\":\"Calculate actual distribution amount\",\"params\":{\"amount\":\"The amount of tokens desired to be distributed\",\"indexId\":\"Id of the index\",\"publisher\":\"The publisher of the index\",\"token\":\"Super token address\"},\"returns\":{\"actualAmount\":\"The amount to be distributed after ensuring no rounding errors\",\"newIndexValue\":\"The index value given the desired amount of tokens to be distributed\"}},\"claim(address,address,uint32,address,bytes)\":{\"custom:callbacks\":\" - AgreementUpdated callback to the publisher: - agreementId is for the subscription\",\"custom:note\":\"The subscription should not be approved yet\",\"details\":\"Claim pending distributions\",\"params\":{\"ctx\":\"Context bytes (see ISuperfluid.sol for Context struct)\",\"indexId\":\"Id of the index\",\"publisher\":\"The publisher of the index\",\"subscriber\":\"The subscriber's address\",\"token\":\"Super token address\"}},\"createIndex(address,uint32,bytes)\":{\"custom:callbacks\":\" None\",\"details\":\"Create a new index for the publisher\",\"params\":{\"ctx\":\"Context bytes (see ISuperfluid.sol for Context struct)\",\"indexId\":\"Id of the index\",\"token\":\"Super token address\"}},\"deleteSubscription(address,address,uint32,address,bytes)\":{\"custom:callbacks\":\" - if the subscriber called it - AgreementTerminated callback to the publsiher: - agreementId is for the subscription - if the publisher called it - AgreementTerminated callback to the subscriber: - agreementId is for the subscription\",\"details\":\"Delete the subscription of an user\",\"params\":{\"ctx\":\"Context bytes (see ISuperfluid.sol for Context struct)\",\"indexId\":\"Id of the index\",\"publisher\":\"The publisher of the index\",\"subscriber\":\"The subscriber's address\",\"token\":\"Super token address\"}},\"distribute(address,uint32,uint256,bytes)\":{\"custom:callbacks\":\" None\",\"custom:note\":\" - This is a convenient version of updateIndex. It adds to the index a delta that equals to `amount / totalUnits` - The actual amount distributed could be obtained via `calculateDistribution`. This is due to precision error with index value and units data range\",\"details\":\"Distribute tokens through the index\",\"params\":{\"amount\":\"The amount of tokens desired to be distributed\",\"ctx\":\"Context bytes (see ISuperfluid.sol for Context struct)\",\"indexId\":\"Id of the index\",\"token\":\"Super token address\"}},\"getIndex(address,address,uint32)\":{\"details\":\"Query the data of a index\",\"params\":{\"indexId\":\"Id of the index\",\"publisher\":\"The publisher of the index\",\"token\":\"Super token address\"},\"returns\":{\"exist\":\"Does the index exist\",\"indexValue\":\"Value of the current index\",\"totalUnitsApproved\":\"Total units approved for the index\",\"totalUnitsPending\":\"Total units pending approval for the index\"}},\"getSubscription(address,address,uint32,address)\":{\"details\":\"Get data of a subscription\",\"params\":{\"indexId\":\"Id of the index\",\"publisher\":\"The publisher of the index\",\"subscriber\":\"The subscriber of the index\",\"token\":\"Super token address\"},\"returns\":{\"approved\":\"Is the subscription approved?\",\"exist\":\"Does the subscription exist?\",\"pendingDistribution\":\"Pending amount of tokens to be distributed for unapproved subscription\",\"units\":\"Units of the suscription\"}},\"getSubscriptionByID(address,bytes32)\":{\"details\":\"indexId (agreementId) is the keccak256 hash of encodePacked(\\\"publisher\\\", publisher, indexId)\",\"params\":{\"agreementId\":\"The agreement ID\",\"token\":\"Super token address\"},\"returns\":{\"approved\":\"Is the subscription approved?\",\"indexId\":\"Id of the index\",\"pendingDistribution\":\"Pending amount of tokens to be distributed for unapproved subscription\",\"publisher\":\"The publisher of the index\",\"units\":\"Units of the suscription\"}},\"listSubscriptions(address,address)\":{\"details\":\"List subscriptions of an user\",\"params\":{\"subscriber\":\"The subscriber's address\",\"token\":\"Super token address\"},\"returns\":{\"indexIds\":\"Indexes of the subscriptions\",\"publishers\":\"Publishers of the subcriptions\",\"unitsList\":\"Units of the subscriptions\"}},\"realtimeBalanceOf(address,address,uint256)\":{\"details\":\"Calculate the real-time balance for the account of this agreement class\",\"params\":{\"account\":\"Account the state belongs to\",\"time\":\"Time used for the calculation\"},\"returns\":{\"deposit\":\"Account deposit amount of this agreement\",\"dynamicBalance\":\"Dynamic balance portion of real-time balance of this agreement\",\"owedDeposit\":\"Account owed deposit amount of this agreement\"}},\"revokeSubscription(address,address,uint32,bytes)\":{\"custom:callbacks\":\" - AgreementUpdated callback to the publisher: - agreementId is for the subscription\",\"details\":\"\\\"Unapproves\\\" the subscription and moves approved units to pending\",\"params\":{\"ctx\":\"Context bytes (see ISuperfluid.sol for Context struct)\",\"indexId\":\"Id of the index\",\"publisher\":\"The publisher of the index\",\"token\":\"Super token address\"}},\"updateIndex(address,uint32,uint128,bytes)\":{\"custom:callbacks\":\" None\",\"details\":\"Update index value of an index\",\"params\":{\"ctx\":\"Context bytes (see ISuperfluid.sol for Context struct)\",\"indexId\":\"Id of the index\",\"indexValue\":\"Value of the index\",\"token\":\"Super token address\"}},\"updateSubscription(address,uint32,address,uint128,bytes)\":{\"custom:callbacks\":\" - if subscription exist - AgreementCreated callback to the subscriber: - agreementId is for the subscription - if subscription does not exist - AgreementUpdated callback to the subscriber: - agreementId is for the subscription\",\"details\":\"Update the nuber of units of a subscription\",\"params\":{\"ctx\":\"Context bytes (see ISuperfluid.sol for Context struct)\",\"indexId\":\"Id of the index\",\"subscriber\":\"The subscriber of the index\",\"token\":\"Super token address\",\"units\":\"Number of units of the subscription\"}}},\"title\":\"Instant Distribution Agreement interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getSubscriptionByID(address,bytes32)\":{\"notice\":\"Get data of a subscription by agreement ID\"},\"revokeSubscription(address,address,uint32,bytes)\":{\"notice\":\"Revoke the subscription of an index\"}},\"notice\":\" - A publisher can create as many as indices as possibly identifiable with `indexId`. - `indexId` is deliberately limited to 32 bits, to avoid the chance for sha-3 collision. Despite knowing sha-3 collision is only theoretical. - A publisher can create a subscription to an index for any subscriber. - A subscription consists of: - The index it subscribes to. - Number of units subscribed. - An index consists of: - Current value as `uint128 indexValue`. - Total units of the approved subscriptions as `uint128 totalUnitsApproved`. - Total units of the non approved subscription as `uint128 totalUnitsPending`. - A publisher can update an index with a new value that doesn't decrease. - A publisher can update a subscription with any number of units. - A publisher or a subscriber can delete a subscription and reset its units to zero. - A subscriber must approve the index in order to receive distributions from the publisher each time the index is updated. - The amount distributed is $$\\\\Delta{index} * units$$ - Distributions to a non approved subscription stays in the publisher's deposit until: - the subscriber approves the subscription (side effect), - the publisher updates the subscription (side effect), - the subscriber deletes the subscription even if it is never approved (side effect), - or the subscriber can explicitly claim them.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IInstantDistributionAgreementV1.sol\":\"IInstantDistributionAgreementV1\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IInstantDistributionAgreementV1.sol\":{\"keccak256\":\"0x7b088dfa11a00d2b1e6e0938978364a6918015b052a4bf3ffcc67db9b3182370\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://2437f6ea2d8c8de7613aef5de4dcf3530c2beb801f7d5f3e21ac617e73f8882b\",\"dweb:/ipfs/QmVBtqXYV25fQZ9P6xokBzgFnHCBthJSZdFo9quBY169fd\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol\":{\"keccak256\":\"0x9b4fab6dcac1337f78e04d67d8c2b48b1de8bd4bbf14b475840f9dbda7b8f21e\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://cc2f3629ad0cb46bd4f595880591ad6c9d75a82d920cb9355e462fbf8022c820\",\"dweb:/ipfs/QmXMovxK4qpWT4yffXxUVjkMNwxEfS6mtn39mLSmjaxEdW\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol\":{\"keccak256\":\"0x9cad3866982902ea88df0874a563d2e4aeba5a5bcc6289c30cccf9b4099d2fb6\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://e8fd960b259331f204c7cb7dcd32b09d68f4294e3b872fad00ad467609c3ef72\",\"dweb:/ipfs/QmeZFEvsDunXQGPbXFfN5AvfKM5am1FY8Xv6e3c4tNKvgY\"]}},\"version\":1}"}},"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol":{"BatchOperation":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220da5dd631c35b8847b86cab213313b194f2dd118eb04af90b21bb711f915f469664736f6c63430008120033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDA 0x5D 0xD6 BALANCE 0xC3 JUMPDEST DUP9 SELFBALANCE 0xB8 PUSH13 0xAB213313B194F2DD118EB04AF9 SIGNEXTEND 0x21 0xBB PUSH18 0x1F915F469664736F6C634300081200330000 ","sourceMap":"5648:2624:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220da5dd631c35b8847b86cab213313b194f2dd118eb04af90b21bb711f915f469664736f6c63430008120033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDA 0x5D 0xD6 BALANCE 0xC3 JUMPDEST DUP9 SELFBALANCE 0xB8 PUSH13 0xAB213313B194F2DD118EB04AF9 SIGNEXTEND 0x21 0xBB PUSH18 0x1F915F469664736F6C634300081200330000 ","sourceMap":"5648:2624:10:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Superfluid\",\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"OPERATION_TYPE_ERC20_APPROVE\":{\"details\":\"ERC20.approve batch operation type Call spec: ISuperToken(target).operationApprove( abi.decode(data, (address spender, uint256 amount)) )\"},\"OPERATION_TYPE_ERC20_DECREASE_ALLOWANCE\":{\"details\":\"ERC20.decreaseAllowance batch operation type Call spec: ISuperToken(target).operationDecreaseAllowance( abi.decode(data, (address account, address spender, uint256 subtractedValue)) )\"},\"OPERATION_TYPE_ERC20_INCREASE_ALLOWANCE\":{\"details\":\"ERC20.increaseAllowance batch operation type Call spec: ISuperToken(target).operationIncreaseAllowance( abi.decode(data, (address account, address spender, uint256 addedValue)) )\"},\"OPERATION_TYPE_ERC20_TRANSFER_FROM\":{\"details\":\"ERC20.transferFrom batch operation type Call spec: ISuperToken(target).operationTransferFrom( abi.decode(data, (address sender, address recipient, uint256 amount) )\"},\"OPERATION_TYPE_ERC777_SEND\":{\"details\":\"ERC777.send batch operation type Call spec: ISuperToken(target).operationSend( abi.decode(data, (address recipient, uint256 amount, bytes userData) )\"},\"OPERATION_TYPE_SUPERFLUID_CALL_AGREEMENT\":{\"details\":\"Superfluid.callAgreement batch operation type Call spec: callAgreement( ISuperAgreement(target)), abi.decode(data, (bytes callData, bytes userData) )\"},\"OPERATION_TYPE_SUPERFLUID_CALL_APP_ACTION\":{\"details\":\"Superfluid.callAppAction batch operation type Call spec: callAppAction( ISuperApp(target)), data )\"},\"OPERATION_TYPE_SUPERTOKEN_DOWNGRADE\":{\"details\":\"SuperToken.downgrade batch operation type Call spec: ISuperToken(target).operationDowngrade( abi.decode(data, (uint256 amount) )\"},\"OPERATION_TYPE_SUPERTOKEN_UPGRADE\":{\"details\":\"SuperToken.upgrade batch operation type Call spec: ISuperToken(target).operationUpgrade( abi.decode(data, (uint256 amount) )\"}},\"title\":\"Batch operation library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol\":\"BatchOperation\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol\":{\"keccak256\":\"0x80254971aff00fc006d70b85b7bc830bb28096789e72ff3f03aa22cc7810eb0c\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://840f9d959abfbf3919db3dca35336e360b2bbd54e677439a545c7c4f163f6d70\",\"dweb:/ipfs/QmR4CRq7dpYR4NuCSASkNrcnbSScRX8MaEvDs8L7v3xDyr\"]}},\"version\":1}"},"ContextDefinitions":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f6ee11acd8841f1e4cf8ab047c4dd32929a35fd9506eae81223b6bf42284265464736f6c63430008120033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF6 0xEE GT 0xAC 0xD8 DUP5 0x1F 0x1E 0x4C 0xF8 0xAB DIV PUSH29 0x4DD32929A35FD9506EAE81223B6BF42284265464736F6C634300081200 CALLER ","sourceMap":"3374:1188:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f6ee11acd8841f1e4cf8ab047c4dd32929a35fd9506eae81223b6bf42284265464736f6c63430008120033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF6 0xEE GT 0xAC 0xD8 DUP5 0x1F 0x1E 0x4C 0xF8 0xAB DIV PUSH29 0x4DD32929A35FD9506EAE81223B6BF42284265464736F6C634300081200 CALLER ","sourceMap":"3374:1188:10:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Superfluid\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Context definitions library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol\":\"ContextDefinitions\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol\":{\"keccak256\":\"0x80254971aff00fc006d70b85b7bc830bb28096789e72ff3f03aa22cc7810eb0c\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://840f9d959abfbf3919db3dca35336e360b2bbd54e677439a545c7c4f163f6d70\",\"dweb:/ipfs/QmR4CRq7dpYR4NuCSASkNrcnbSScRX8MaEvDs8L7v3xDyr\"]}},\"version\":1}"},"FlowOperatorDefinitions":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f4996d1d63aa3ee379ec5128889b3674ee0678764a9bda09f457d432155d961164736f6c63430008120033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DELEGATECALL SWAP10 PUSH14 0x1D63AA3EE379EC5128889B3674EE MOD PUSH25 0x764A9BDA09F457D432155D961164736F6C6343000812003300 ","sourceMap":"4640:942:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f4996d1d63aa3ee379ec5128889b3674ee0678764a9bda09f457d432155d961164736f6c63430008120033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DELEGATECALL SWAP10 PUSH14 0x1D63AA3EE379EC5128889B3674EE MOD PUSH25 0x764A9BDA09F457D432155D961164736F6C6343000812003300 ","sourceMap":"4640:942:10:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Superfluid\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Flow Operator definitions library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol\":\"FlowOperatorDefinitions\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol\":{\"keccak256\":\"0x80254971aff00fc006d70b85b7bc830bb28096789e72ff3f03aa22cc7810eb0c\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://840f9d959abfbf3919db3dca35336e360b2bbd54e677439a545c7c4f163f6d70\",\"dweb:/ipfs/QmR4CRq7dpYR4NuCSASkNrcnbSScRX8MaEvDs8L7v3xDyr\"]}},\"version\":1}"},"SuperAppDefinitions":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207d609f4baa33a55d18a8788405fffaeb6b88aaccb0749e127c74ff80c2f3948164736f6c63430008120033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH30 0x609F4BAA33A55D18A8788405FFFAEB6B88AACCB0749E127C74FF80C2F394 DUP2 PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"132:3172:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207d609f4baa33a55d18a8788405fffaeb6b88aaccb0749e127c74ff80c2f3948164736f6c63430008120033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH30 0x609F4BAA33A55D18A8788405FFFAEB6B88AACCB0749E127C74FF80C2F394 DUP2 PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"132:3172:10:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Superfluid\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Super app definitions library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol\":\"SuperAppDefinitions\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol\":{\"keccak256\":\"0x80254971aff00fc006d70b85b7bc830bb28096789e72ff3f03aa22cc7810eb0c\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://840f9d959abfbf3919db3dca35336e360b2bbd54e677439a545c7c4f163f6d70\",\"dweb:/ipfs/QmR4CRq7dpYR4NuCSASkNrcnbSScRX8MaEvDs8L7v3xDyr\"]}},\"version\":1}"},"SuperfluidGovernanceConfigs":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ca46d43e9b19dd1e2c46d531f4015b90dd1db589ba0f2db0dd1e89a9d497470064736f6c63430008120033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCA CHAINID 0xD4 RETURNDATACOPY SWAP12 NOT 0xDD 0x1E 0x2C CHAINID 0xD5 BALANCE DELEGATECALL ADD JUMPDEST SWAP1 0xDD SAR 0xB5 DUP10 0xBA 0xF 0x2D 0xB0 0xDD 0x1E DUP10 0xA9 0xD4 SWAP8 SELFBALANCE STOP PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"8352:1487:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ca46d43e9b19dd1e2c46d531f4015b90dd1db589ba0f2db0dd1e89a9d497470064736f6c63430008120033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCA CHAINID 0xD4 RETURNDATACOPY SWAP12 NOT 0xDD 0x1E 0x2C CHAINID 0xD5 BALANCE DELEGATECALL ADD JUMPDEST SWAP1 0xDD SAR 0xB5 DUP10 0xBA 0xF 0x2D 0xB0 0xDD 0x1E DUP10 0xA9 0xD4 SWAP8 SELFBALANCE STOP PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"8352:1487:10:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Superfluid\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Superfluid governance configs library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol\":\"SuperfluidGovernanceConfigs\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol\":{\"keccak256\":\"0x80254971aff00fc006d70b85b7bc830bb28096789e72ff3f03aa22cc7810eb0c\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://840f9d959abfbf3919db3dca35336e360b2bbd54e677439a545c7c4f163f6d70\",\"dweb:/ipfs/QmR4CRq7dpYR4NuCSASkNrcnbSScRX8MaEvDs8L7v3xDyr\"]}},\"version\":1}"}},"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol":{"ISuperAgreement":{"abi":[{"inputs":[],"name":"agreementType","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":"time","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"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"agreementType()":"7730599e","realtimeBalanceOf(address,address,uint256)":"9b2e48bc"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"agreementType\",\"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\":\"time\",\"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\"}],\"devdoc\":{\"author\":\"Superfluid\",\"kind\":\"dev\",\"methods\":{\"agreementType()\":{\"details\":\"Get the type of the agreement class\"},\"realtimeBalanceOf(address,address,uint256)\":{\"details\":\"Calculate the real-time balance for the account of this agreement class\",\"params\":{\"account\":\"Account the state belongs to\",\"time\":\"Time used for the calculation\"},\"returns\":{\"deposit\":\"Account deposit amount of this agreement\",\"dynamicBalance\":\"Dynamic balance portion of real-time balance of this agreement\",\"owedDeposit\":\"Account owed deposit amount of this agreement\"}}},\"title\":\"Super agreement interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol\":\"ISuperAgreement\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol\":{\"keccak256\":\"0x9b4fab6dcac1337f78e04d67d8c2b48b1de8bd4bbf14b475840f9dbda7b8f21e\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://cc2f3629ad0cb46bd4f595880591ad6c9d75a82d920cb9355e462fbf8022c820\",\"dweb:/ipfs/QmXMovxK4qpWT4yffXxUVjkMNwxEfS6mtn39mLSmjaxEdW\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol\":{\"keccak256\":\"0x9cad3866982902ea88df0874a563d2e4aeba5a5bcc6289c30cccf9b4099d2fb6\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://e8fd960b259331f204c7cb7dcd32b09d68f4294e3b872fad00ad467609c3ef72\",\"dweb:/ipfs/QmeZFEvsDunXQGPbXFfN5AvfKM5am1FY8Xv6e3c4tNKvgY\"]}},\"version\":1}"}},"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperApp.sol":{"ISuperApp":{"abi":[{"inputs":[{"internalType":"contract ISuperToken","name":"superToken","type":"address"},{"internalType":"address","name":"agreementClass","type":"address"},{"internalType":"bytes32","name":"agreementId","type":"bytes32"},{"internalType":"bytes","name":"agreementData","type":"bytes"},{"internalType":"bytes","name":"cbdata","type":"bytes"},{"internalType":"bytes","name":"ctx","type":"bytes"}],"name":"afterAgreementCreated","outputs":[{"internalType":"bytes","name":"newCtx","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ISuperToken","name":"superToken","type":"address"},{"internalType":"address","name":"agreementClass","type":"address"},{"internalType":"bytes32","name":"agreementId","type":"bytes32"},{"internalType":"bytes","name":"agreementData","type":"bytes"},{"internalType":"bytes","name":"cbdata","type":"bytes"},{"internalType":"bytes","name":"ctx","type":"bytes"}],"name":"afterAgreementTerminated","outputs":[{"internalType":"bytes","name":"newCtx","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ISuperToken","name":"superToken","type":"address"},{"internalType":"address","name":"agreementClass","type":"address"},{"internalType":"bytes32","name":"agreementId","type":"bytes32"},{"internalType":"bytes","name":"agreementData","type":"bytes"},{"internalType":"bytes","name":"cbdata","type":"bytes"},{"internalType":"bytes","name":"ctx","type":"bytes"}],"name":"afterAgreementUpdated","outputs":[{"internalType":"bytes","name":"newCtx","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ISuperToken","name":"superToken","type":"address"},{"internalType":"address","name":"agreementClass","type":"address"},{"internalType":"bytes32","name":"agreementId","type":"bytes32"},{"internalType":"bytes","name":"agreementData","type":"bytes"},{"internalType":"bytes","name":"ctx","type":"bytes"}],"name":"beforeAgreementCreated","outputs":[{"internalType":"bytes","name":"cbdata","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ISuperToken","name":"superToken","type":"address"},{"internalType":"address","name":"agreementClass","type":"address"},{"internalType":"bytes32","name":"agreementId","type":"bytes32"},{"internalType":"bytes","name":"agreementData","type":"bytes"},{"internalType":"bytes","name":"ctx","type":"bytes"}],"name":"beforeAgreementTerminated","outputs":[{"internalType":"bytes","name":"cbdata","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ISuperToken","name":"superToken","type":"address"},{"internalType":"address","name":"agreementClass","type":"address"},{"internalType":"bytes32","name":"agreementId","type":"bytes32"},{"internalType":"bytes","name":"agreementData","type":"bytes"},{"internalType":"bytes","name":"ctx","type":"bytes"}],"name":"beforeAgreementUpdated","outputs":[{"internalType":"bytes","name":"cbdata","type":"bytes"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"afterAgreementCreated(address,address,bytes32,bytes,bytes,bytes)":"d86ed3e5","afterAgreementTerminated(address,address,bytes32,bytes,bytes,bytes)":"53c11f99","afterAgreementUpdated(address,address,bytes32,bytes,bytes,bytes)":"230dbd29","beforeAgreementCreated(address,address,bytes32,bytes,bytes)":"30d9c915","beforeAgreementTerminated(address,address,bytes32,bytes,bytes)":"5f9e7d77","beforeAgreementUpdated(address,address,bytes32,bytes,bytes)":"884d1f40"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract ISuperToken\",\"name\":\"superToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"agreementId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"agreementData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"cbdata\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"afterAgreementCreated\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperToken\",\"name\":\"superToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"agreementId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"agreementData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"cbdata\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"afterAgreementTerminated\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperToken\",\"name\":\"superToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"agreementId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"agreementData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"cbdata\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"afterAgreementUpdated\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperToken\",\"name\":\"superToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"agreementId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"agreementData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"beforeAgreementCreated\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"cbdata\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperToken\",\"name\":\"superToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"agreementId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"agreementData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"beforeAgreementTerminated\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"cbdata\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperToken\",\"name\":\"superToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"agreementId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"agreementData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"beforeAgreementUpdated\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"cbdata\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Superfluid\",\"details\":\"Be aware of the app being jailed, when the word permitted is used.\",\"kind\":\"dev\",\"methods\":{\"afterAgreementCreated(address,address,bytes32,bytes,bytes,bytes)\":{\"custom:note\":\" - State changes is permitted. - Only revert with a \\\"reason\\\" is permitted.\",\"details\":\"Callback after a new agreement is created.\",\"params\":{\"agreementClass\":\"The agreement class address.\",\"agreementData\":\"The agreement data (non-compressed)\",\"agreementId\":\"The agreementId\",\"cbdata\":\"The data returned from the before-hook callback.\",\"ctx\":\"The context data.\",\"superToken\":\"The super token used for the agreement.\"},\"returns\":{\"newCtx\":\"The current context of the transaction.\"}},\"afterAgreementTerminated(address,address,bytes32,bytes,bytes,bytes)\":{\"custom:note\":\" - State changes is permitted. - Revert is not permitted.\",\"details\":\"Callback after a new agreement is terminated.\",\"params\":{\"agreementClass\":\"The agreement class address.\",\"agreementData\":\"The agreement data (non-compressed)\",\"agreementId\":\"The agreementId\",\"cbdata\":\"The data returned from the before-hook callback.\",\"ctx\":\"The context data.\",\"superToken\":\"The super token used for the agreement.\"},\"returns\":{\"newCtx\":\"The current context of the transaction.\"}},\"afterAgreementUpdated(address,address,bytes32,bytes,bytes,bytes)\":{\"custom:note\":\" - State changes is permitted. - Only revert with a \\\"reason\\\" is permitted.\",\"details\":\"Callback after a new agreement is updated.\",\"params\":{\"agreementClass\":\"The agreement class address.\",\"agreementData\":\"The agreement data (non-compressed)\",\"agreementId\":\"The agreementId\",\"cbdata\":\"The data returned from the before-hook callback.\",\"ctx\":\"The context data.\",\"superToken\":\"The super token used for the agreement.\"},\"returns\":{\"newCtx\":\"The current context of the transaction.\"}},\"beforeAgreementCreated(address,address,bytes32,bytes,bytes)\":{\"custom:note\":\" - It will be invoked with `staticcall`, no state changes are permitted. - Only revert with a \\\"reason\\\" is permitted.\",\"details\":\"Callback before a new agreement is created.\",\"params\":{\"agreementClass\":\"The agreement class address.\",\"agreementData\":\"The agreement data (non-compressed)\",\"agreementId\":\"The agreementId\",\"ctx\":\"The context data.\",\"superToken\":\"The super token used for the agreement.\"},\"returns\":{\"cbdata\":\"A free format in memory data the app can use to pass arbitary information to the after-hook callback.\"}},\"beforeAgreementTerminated(address,address,bytes32,bytes,bytes)\":{\"custom:note\":\" - It will be invoked with `staticcall`, no state changes are permitted. - Revert is not permitted.\",\"details\":\"Callback before a new agreement is terminated.\",\"params\":{\"agreementClass\":\"The agreement class address.\",\"agreementData\":\"The agreement data (non-compressed)\",\"agreementId\":\"The agreementId\",\"ctx\":\"The context data.\",\"superToken\":\"The super token used for the agreement.\"},\"returns\":{\"cbdata\":\"A free format in memory data the app can use to pass arbitary information to the after-hook callback.\"}},\"beforeAgreementUpdated(address,address,bytes32,bytes,bytes)\":{\"custom:note\":\" - It will be invoked with `staticcall`, no state changes are permitted. - Only revert with a \\\"reason\\\" is permitted.\",\"details\":\"Callback before a new agreement is updated.\",\"params\":{\"agreementClass\":\"The agreement class address.\",\"agreementData\":\"The agreement data (non-compressed)\",\"agreementId\":\"The agreementId\",\"ctx\":\"The context data.\",\"superToken\":\"The super token used for the agreement.\"},\"returns\":{\"cbdata\":\"A free format in memory data the app can use to pass arbitary information to the after-hook callback.\"}}},\"title\":\"SuperApp interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperApp.sol\":\"ISuperApp\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"@openzeppelin/contracts/token/ERC777/IERC777.sol\":{\"keccak256\":\"0x385a7061f1436b079d44c140dee9387d5313e94874ff9ee877dc0085c981ac3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c3fe22bb0d9527356e11f267f9187134de4d4ed1ff77468b4d73e3238697b96\",\"dweb:/ipfs/Qmc8caJctgxbzXEpxRogQMR2bnBk5U67hA7kKbUEG2PUXV\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol\":{\"keccak256\":\"0x80254971aff00fc006d70b85b7bc830bb28096789e72ff3f03aa22cc7810eb0c\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://840f9d959abfbf3919db3dca35336e360b2bbd54e677439a545c7c4f163f6d70\",\"dweb:/ipfs/QmR4CRq7dpYR4NuCSASkNrcnbSScRX8MaEvDs8L7v3xDyr\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol\":{\"keccak256\":\"0x9b4fab6dcac1337f78e04d67d8c2b48b1de8bd4bbf14b475840f9dbda7b8f21e\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://cc2f3629ad0cb46bd4f595880591ad6c9d75a82d920cb9355e462fbf8022c820\",\"dweb:/ipfs/QmXMovxK4qpWT4yffXxUVjkMNwxEfS6mtn39mLSmjaxEdW\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperApp.sol\":{\"keccak256\":\"0x6cc4b0724d977190c7441dfc3be6c6e48b43b555c3370af32ef5b6600f15f53f\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://3e89c944642772a42429f21a11017b57deb98a9198f8e4f8749f00aaee71299e\",\"dweb:/ipfs/QmaSv9GvqikcGHJ3tcwATDHSpQw6mfnHPDtcfqcZSS7LF6\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.sol\":{\"keccak256\":\"0x6860f0bf69dcc1d1ec39eefb43e0cd18b276b48ebe9efd53450e09cd2f997ab2\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://6421f80f2ff7818bd235b7bf4b911cc40edcb598507a246b4de0fa0191a9e1aa\",\"dweb:/ipfs/QmWxktXMjYhi1zt52D3JXNcxCFesXu8kQoSCJQ3j88apM3\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperTokenFactory.sol\":{\"keccak256\":\"0xe2525ef2906504e2f61775ed91bbebeea2f4e2e3fa42ce190561acf6a01187ff\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://7a9859eb432321a65cd15ca988a13776e1c31df44b4cf25f95fa04b54a8a8625\",\"dweb:/ipfs/QmQVJQoeoWemptZhbRgWJZWwMTiNtxVsc1FYmGdtdTfqcL\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol\":{\"keccak256\":\"0xab9dab941f99d0f0ef6125fb6eafde03378d7c3e94e613dd12fb7fbf594c3373\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://928c6ef915dee69058d4cfcb9f2344d4fc78d9763b47b17e5c03fbff64ba3c64\",\"dweb:/ipfs/Qmdk733ZHceatz3qbuodLCCS9TUspJJtXLoX6vWwMvrPDE\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance.sol\":{\"keccak256\":\"0x90a9259d0f0bb6b1bb6d48f051277eb75df96a9fbe684a203a3a468ad19318e2\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://9c8162a2d07ffe768920fef55292684149173afefbfba76b8fca007e55092229\",\"dweb:/ipfs/QmducLNwrzeUXEpBjUTSMu7sfmQEwVhcYXApe4brc1zQ6V\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol\":{\"keccak256\":\"0x9cad3866982902ea88df0874a563d2e4aeba5a5bcc6289c30cccf9b4099d2fb6\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://e8fd960b259331f204c7cb7dcd32b09d68f4294e3b872fad00ad467609c3ef72\",\"dweb:/ipfs/QmeZFEvsDunXQGPbXFfN5AvfKM5am1FY8Xv6e3c4tNKvgY\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo.sol\":{\"keccak256\":\"0x55be78ffb441c782f612b153d7d9049e3f0dbfd412c1f7df29c896b972b2985f\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://a223c68e38a6c9b1e363e525911bc7eda44ea517865ae53bd0d34ff858cc02ae\",\"dweb:/ipfs/QmVruGehibG6Emr2A6JHwUnhd4NzsGkE24cbGqnDpEvrKh\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.sol\":{\"keccak256\":\"0x7456cd394cc905aae7cdbd4601ce1c296c768c13c28e66efbb913cc070bad3e4\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://5a6589b428b724721ba5b4dd196c8f366a6e694ef313add093f29af64496c042\",\"dweb:/ipfs/QmSMgV6y8L6pyyzDz6kKmafVwujNWcjTqutpCBxe4uNRqg\"]}},\"version\":1}"}},"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.sol":{"ISuperToken":{"abi":[{"inputs":[],"name":"SF_TOKEN_AGREEMENT_ALREADY_EXISTS","type":"error"},{"inputs":[],"name":"SF_TOKEN_AGREEMENT_DOES_NOT_EXIST","type":"error"},{"inputs":[],"name":"SF_TOKEN_BURN_INSUFFICIENT_BALANCE","type":"error"},{"inputs":[],"name":"SF_TOKEN_MOVE_INSUFFICIENT_BALANCE","type":"error"},{"inputs":[],"name":"SF_TOKEN_ONLY_HOST","type":"error"},{"inputs":[],"name":"SF_TOKEN_ONLY_LISTED_AGREEMENT","type":"error"},{"inputs":[],"name":"SUPER_TOKEN_APPROVE_FROM_ZERO_ADDRESS","type":"error"},{"inputs":[],"name":"SUPER_TOKEN_APPROVE_TO_ZERO_ADDRESS","type":"error"},{"inputs":[],"name":"SUPER_TOKEN_BURN_FROM_ZERO_ADDRESS","type":"error"},{"inputs":[],"name":"SUPER_TOKEN_CALLER_IS_NOT_OPERATOR_FOR_HOLDER","type":"error"},{"inputs":[],"name":"SUPER_TOKEN_INFLATIONARY_DEFLATIONARY_NOT_SUPPORTED","type":"error"},{"inputs":[],"name":"SUPER_TOKEN_MINT_TO_ZERO_ADDRESS","type":"error"},{"inputs":[],"name":"SUPER_TOKEN_NOT_ERC777_TOKENS_RECIPIENT","type":"error"},{"inputs":[],"name":"SUPER_TOKEN_NO_UNDERLYING_TOKEN","type":"error"},{"inputs":[],"name":"SUPER_TOKEN_ONLY_HOST","type":"error"},{"inputs":[],"name":"SUPER_TOKEN_ONLY_SELF","type":"error"},{"inputs":[],"name":"SUPER_TOKEN_TRANSFER_FROM_ZERO_ADDRESS","type":"error"},{"inputs":[],"name":"SUPER_TOKEN_TRANSFER_TO_ZERO_ADDRESS","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"agreementClass","type":"address"},{"indexed":false,"internalType":"bytes32","name":"id","type":"bytes32"},{"indexed":false,"internalType":"bytes32[]","name":"data","type":"bytes32[]"}],"name":"AgreementCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"agreementClass","type":"address"},{"indexed":false,"internalType":"bytes32","name":"id","type":"bytes32"},{"indexed":true,"internalType":"address","name":"penaltyAccount","type":"address"},{"indexed":true,"internalType":"address","name":"rewardAccount","type":"address"},{"indexed":false,"internalType":"uint256","name":"rewardAmount","type":"uint256"}],"name":"AgreementLiquidated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"liquidatorAccount","type":"address"},{"indexed":true,"internalType":"address","name":"agreementClass","type":"address"},{"indexed":false,"internalType":"bytes32","name":"id","type":"bytes32"},{"indexed":true,"internalType":"address","name":"penaltyAccount","type":"address"},{"indexed":true,"internalType":"address","name":"bondAccount","type":"address"},{"indexed":false,"internalType":"uint256","name":"rewardAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bailoutAmount","type":"uint256"}],"name":"AgreementLiquidatedBy","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"agreementClass","type":"address"},{"indexed":false,"internalType":"bytes32","name":"id","type":"bytes32"},{"indexed":true,"internalType":"address","name":"liquidatorAccount","type":"address"},{"indexed":true,"internalType":"address","name":"targetAccount","type":"address"},{"indexed":false,"internalType":"address","name":"rewardAmountReceiver","type":"address"},{"indexed":false,"internalType":"uint256","name":"rewardAmount","type":"uint256"},{"indexed":false,"internalType":"int256","name":"targetAccountBalanceDelta","type":"int256"},{"indexed":false,"internalType":"bytes","name":"liquidationTypeData","type":"bytes"}],"name":"AgreementLiquidatedV2","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"agreementClass","type":"address"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"slotId","type":"uint256"}],"name":"AgreementStateUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"agreementClass","type":"address"},{"indexed":false,"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"AgreementTerminated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"agreementClass","type":"address"},{"indexed":false,"internalType":"bytes32","name":"id","type":"bytes32"},{"indexed":false,"internalType":"bytes32[]","name":"data","type":"bytes32[]"}],"name":"AgreementUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"tokenHolder","type":"address"}],"name":"AuthorizedOperator","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"bailoutAccount","type":"address"},{"indexed":false,"internalType":"uint256","name":"bailoutAmount","type":"uint256"}],"name":"Bailout","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"Burned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"Minted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"tokenHolder","type":"address"}],"name":"RevokedOperator","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"Sent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokenDowngraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokenUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"authorizeOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"bytes32[]","name":"data","type":"bytes32[]"}],"name":"createAgreement","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"defaultOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"downgrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"downgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getAccountActiveAgreements","outputs":[{"internalType":"contract ISuperAgreement[]","name":"activeAgreements","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"agreementClass","type":"address"},{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"uint256","name":"dataLength","type":"uint256"}],"name":"getAgreementData","outputs":[{"internalType":"bytes32[]","name":"data","type":"bytes32[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"agreementClass","type":"address"},{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"slotId","type":"uint256"},{"internalType":"uint256","name":"dataLength","type":"uint256"}],"name":"getAgreementStateSlot","outputs":[{"internalType":"bytes32[]","name":"slotData","type":"bytes32[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getHost","outputs":[{"internalType":"address","name":"host","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUnderlyingToken","outputs":[{"internalType":"address","name":"tokenAddr","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"granularity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"underlyingToken","type":"address"},{"internalType":"uint8","name":"underlyingDecimals","type":"uint8"},{"internalType":"string","name":"n","type":"string"},{"internalType":"string","name":"s","type":"string"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"isAccountCritical","outputs":[{"internalType":"bool","name":"isCritical","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isAccountCriticalNow","outputs":[{"internalType":"bool","name":"isCritical","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"isAccountSolvent","outputs":[{"internalType":"bool","name":"isSolvent","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isAccountSolventNow","outputs":[{"internalType":"bool","name":"isSolvent","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"tokenHolder","type":"address"}],"name":"isOperatorFor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"bytes","name":"liquidationTypeData","type":"bytes"},{"internalType":"address","name":"liquidatorAccount","type":"address"},{"internalType":"bool","name":"useDefaultRewardAccount","type":"bool"},{"internalType":"address","name":"targetAccount","type":"address"},{"internalType":"uint256","name":"rewardAmount","type":"uint256"},{"internalType":"int256","name":"targetAccountBalanceDelta","type":"int256"}],"name":"makeLiquidationPayoutsV2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"operationApprove","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"operationDecreaseAllowance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"operationDowngrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"operationIncreaseAllowance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"operationSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"operationTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"operationUpgrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"operatorBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"operatorSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"realtimeBalanceOf","outputs":[{"internalType":"int256","name":"availableBalance","type":"int256"},{"internalType":"uint256","name":"deposit","type":"uint256"},{"internalType":"uint256","name":"owedDeposit","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"realtimeBalanceOfNow","outputs":[{"internalType":"int256","name":"availableBalance","type":"int256"},{"internalType":"uint256","name":"deposit","type":"uint256"},{"internalType":"uint256","name":"owedDeposit","type":"uint256"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"revokeOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"selfApproveFor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"selfBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"selfMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"selfTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"send","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"int256","name":"delta","type":"int256"}],"name":"settleBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"uint256","name":"dataLength","type":"uint256"}],"name":"terminateAgreement","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"}],"name":"transferAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"bytes32[]","name":"data","type":"bytes32[]"}],"name":"updateAgreementData","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"slotId","type":"uint256"},{"internalType":"bytes32[]","name":"slotData","type":"bytes32[]"}],"name":"updateAgreementStateSlot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"upgrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","authorizeOperator(address)":"959b8c3f","balanceOf(address)":"70a08231","burn(uint256,bytes)":"fe9d9303","createAgreement(bytes32,bytes32[])":"12a6a3f8","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","defaultOperators()":"06e48538","downgrade(uint256)":"11bcc81e","downgradeTo(address,uint256)":"83ba2525","getAccountActiveAgreements(address)":"386fa221","getAgreementData(address,bytes32,uint256)":"6c2d9f2f","getAgreementStateSlot(address,address,uint256,uint256)":"4b61cc33","getHost()":"20bc4425","getUnderlyingToken()":"ee719bc8","granularity()":"556f0dc7","increaseAllowance(address,uint256)":"39509351","initialize(address,uint8,string,string)":"42fe0980","isAccountCritical(address,uint256)":"d9d078d6","isAccountCriticalNow(address)":"79359f6f","isAccountSolvent(address,uint256)":"b84cdd4a","isAccountSolventNow(address)":"bb0d196e","isOperatorFor(address,address)":"d95b6371","makeLiquidationPayoutsV2(bytes32,bytes,address,bool,address,uint256,int256)":"1863e809","name()":"06fdde03","operationApprove(address,address,uint256)":"62aa5287","operationDecreaseAllowance(address,address,uint256)":"c780fd82","operationDowngrade(address,uint256)":"245887fc","operationIncreaseAllowance(address,address,uint256)":"4b2763b3","operationSend(address,address,uint256,bytes)":"ca0c1e7f","operationTransferFrom(address,address,address,uint256)":"16d055d6","operationUpgrade(address,uint256)":"ca789464","operatorBurn(address,uint256,bytes,bytes)":"fc673c4f","operatorSend(address,address,uint256,bytes,bytes)":"62ad1b83","realtimeBalanceOf(address,uint256)":"eb3537cc","realtimeBalanceOfNow(address)":"2ec8eec7","revokeOperator(address)":"fad8b32a","selfApproveFor(address,address,uint256)":"66a12fb6","selfBurn(address,uint256,bytes)":"9d876741","selfMint(address,uint256,bytes)":"c68d4283","selfTransferFrom(address,address,address,uint256)":"41b706be","send(address,uint256,bytes)":"9bd9bbc6","settleBalance(address,int256)":"cf97256d","symbol()":"95d89b41","terminateAgreement(bytes32,uint256)":"27048397","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferAll(address)":"a3a7e7f3","transferFrom(address,address,uint256)":"23b872dd","updateAgreementData(bytes32,bytes32[])":"a1b2bf8b","updateAgreementStateSlot(address,uint256,bytes32[])":"090c415e","upgrade(uint256)":"45977d03","upgradeTo(address,uint256,bytes)":"5b9d09cc"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"SF_TOKEN_AGREEMENT_ALREADY_EXISTS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SF_TOKEN_AGREEMENT_DOES_NOT_EXIST\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SF_TOKEN_BURN_INSUFFICIENT_BALANCE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SF_TOKEN_MOVE_INSUFFICIENT_BALANCE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SF_TOKEN_ONLY_HOST\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SF_TOKEN_ONLY_LISTED_AGREEMENT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SUPER_TOKEN_APPROVE_FROM_ZERO_ADDRESS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SUPER_TOKEN_APPROVE_TO_ZERO_ADDRESS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SUPER_TOKEN_BURN_FROM_ZERO_ADDRESS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SUPER_TOKEN_CALLER_IS_NOT_OPERATOR_FOR_HOLDER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SUPER_TOKEN_INFLATIONARY_DEFLATIONARY_NOT_SUPPORTED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SUPER_TOKEN_MINT_TO_ZERO_ADDRESS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SUPER_TOKEN_NOT_ERC777_TOKENS_RECIPIENT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SUPER_TOKEN_NO_UNDERLYING_TOKEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SUPER_TOKEN_ONLY_HOST\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SUPER_TOKEN_ONLY_SELF\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SUPER_TOKEN_TRANSFER_FROM_ZERO_ADDRESS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SUPER_TOKEN_TRANSFER_TO_ZERO_ADDRESS\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32[]\",\"name\":\"data\",\"type\":\"bytes32[]\"}],\"name\":\"AgreementCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"penaltyAccount\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"rewardAccount\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewardAmount\",\"type\":\"uint256\"}],\"name\":\"AgreementLiquidated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"liquidatorAccount\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"penaltyAccount\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"bondAccount\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewardAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bailoutAmount\",\"type\":\"uint256\"}],\"name\":\"AgreementLiquidatedBy\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"liquidatorAccount\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"targetAccount\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"rewardAmountReceiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewardAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"targetAccountBalanceDelta\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"liquidationTypeData\",\"type\":\"bytes\"}],\"name\":\"AgreementLiquidatedV2\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slotId\",\"type\":\"uint256\"}],\"name\":\"AgreementStateUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"AgreementTerminated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32[]\",\"name\":\"data\",\"type\":\"bytes32[]\"}],\"name\":\"AgreementUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenHolder\",\"type\":\"address\"}],\"name\":\"AuthorizedOperator\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"bailoutAccount\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bailoutAmount\",\"type\":\"uint256\"}],\"name\":\"Bailout\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"operatorData\",\"type\":\"bytes\"}],\"name\":\"Burned\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"operatorData\",\"type\":\"bytes\"}],\"name\":\"Minted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenHolder\",\"type\":\"address\"}],\"name\":\"RevokedOperator\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"operatorData\",\"type\":\"bytes\"}],\"name\":\"Sent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenDowngraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"authorizeOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"data\",\"type\":\"bytes32[]\"}],\"name\":\"createAgreement\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"downgrade\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"downgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getAccountActiveAgreements\",\"outputs\":[{\"internalType\":\"contract ISuperAgreement[]\",\"name\":\"activeAgreements\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"dataLength\",\"type\":\"uint256\"}],\"name\":\"getAgreementData\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"data\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"slotId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"dataLength\",\"type\":\"uint256\"}],\"name\":\"getAgreementStateSlot\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"slotData\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getHost\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"host\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUnderlyingToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"granularity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"underlyingToken\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"underlyingDecimals\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"n\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"s\",\"type\":\"string\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"isAccountCritical\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isCritical\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isAccountCriticalNow\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isCritical\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"isAccountSolvent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isSolvent\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isAccountSolventNow\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isSolvent\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenHolder\",\"type\":\"address\"}],\"name\":\"isOperatorFor\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"liquidationTypeData\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"liquidatorAccount\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"useDefaultRewardAccount\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"targetAccount\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"rewardAmount\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"targetAccountBalanceDelta\",\"type\":\"int256\"}],\"name\":\"makeLiquidationPayoutsV2\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"operationApprove\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"operationDecreaseAllowance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"operationDowngrade\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"operationIncreaseAllowance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"operationSend\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"operationTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"operationUpgrade\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"operatorData\",\"type\":\"bytes\"}],\"name\":\"operatorBurn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"operatorData\",\"type\":\"bytes\"}],\"name\":\"operatorSend\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"realtimeBalanceOf\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"availableBalance\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"deposit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"owedDeposit\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"realtimeBalanceOfNow\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"availableBalance\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"deposit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"owedDeposit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"revokeOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"selfApproveFor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"selfBurn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"selfMint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"selfTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"send\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"int256\",\"name\":\"delta\",\"type\":\"int256\"}],\"name\":\"settleBalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"dataLength\",\"type\":\"uint256\"}],\"name\":\"terminateAgreement\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"transferAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"data\",\"type\":\"bytes32[]\"}],\"name\":\"updateAgreementData\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"slotId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"slotData\",\"type\":\"bytes32[]\"}],\"name\":\"updateAgreementStateSlot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"upgrade\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Superfluid\",\"events\":{\"AgreementCreated(address,bytes32,bytes32[])\":{\"details\":\"Agreement created event\",\"params\":{\"agreementClass\":\"Contract address of the agreement\",\"data\":\"Agreement data\",\"id\":\"Agreement ID\"}},\"AgreementLiquidated(address,bytes32,address,address,uint256)\":{\"custom:deprecated\":\"Use AgreementLiquidatedV2 instead\",\"details\":\"Agreement liquidation event (DEPRECATED BY AgreementLiquidatedBy)\",\"params\":{\"agreementClass\":\"Contract address of the agreement\",\"id\":\"Agreement ID\",\"penaltyAccount\":\"Account of the agreement to be penalized\",\"rewardAccount\":\"Account that collect the reward\",\"rewardAmount\":\"Amount of liquidation reward\"}},\"AgreementLiquidatedBy(address,address,bytes32,address,address,uint256,uint256)\":{\"custom:deprecated\":\"Use AgreementLiquidatedV2 instead\",\"custom:note\":\" Reward account rule: - if bailout is equal to 0, then - the bondAccount will get the rewardAmount, - the penaltyAccount will pay for the rewardAmount. - if bailout is larger than 0, then - the liquidatorAccount will get the rewardAmouont, - the bondAccount will pay for both the rewardAmount and bailoutAmount, - the penaltyAccount will pay for the rewardAmount while get the bailoutAmount.\",\"details\":\"Agreement liquidation event (DEPRECATED BY AgreementLiquidatedV2)\",\"params\":{\"agreementClass\":\"Contract address of the agreement\",\"bailoutAmount\":\"Amount of liquidation bailouot\",\"bondAccount\":\"Account that collect the reward or bailout accounts\",\"id\":\"Agreement ID\",\"liquidatorAccount\":\"Account of the agent that performed the liquidation.\",\"penaltyAccount\":\"Account of the agreement to be penalized\",\"rewardAmount\":\"Amount of liquidation reward\"}},\"AgreementLiquidatedV2(address,bytes32,address,address,address,uint256,int256,bytes)\":{\"custom:note\":\" Reward account rule: - if the agreement is liquidated during the PIC period - the rewardAmountReceiver will get the rewardAmount (remaining deposit), regardless of the liquidatorAccount - the targetAccount will pay for the rewardAmount - if the agreement is liquidated after the PIC period AND the targetAccount is solvent - the rewardAmountReceiver will get the rewardAmount (remaining deposit) - the targetAccount will pay for the rewardAmount - if the targetAccount is insolvent - the liquidatorAccount will get the rewardAmount (single deposit) - the default reward account (governance) will pay for both the rewardAmount and bailoutAmount - the targetAccount will receive the bailoutAmount\",\"details\":\"Agreement liquidation event v2 (including agent account)\",\"params\":{\"agreementClass\":\"Contract address of the agreement\",\"id\":\"Agreement ID\",\"liquidationTypeData\":\"The encoded liquidation type data including the version (how to decode)\",\"liquidatorAccount\":\"Address of the executor of the liquidation\",\"rewardAmount\":\"The amount the reward recipient account balance should change by\",\"rewardAmountReceiver\":\"Account that collects the reward or bails out insolvent accounts\",\"targetAccount\":\"Account of the stream sender\",\"targetAccountBalanceDelta\":\"The amount the sender account balance should change by\"}},\"AgreementStateUpdated(address,address,uint256)\":{\"details\":\"Agreement account state updated event\",\"params\":{\"account\":\"Account updated\",\"agreementClass\":\"Contract address of the agreement\",\"slotId\":\"slot id of the agreement state\"}},\"AgreementTerminated(address,bytes32)\":{\"details\":\"Agreement terminated event\",\"params\":{\"agreementClass\":\"Contract address of the agreement\",\"id\":\"Agreement ID\"}},\"AgreementUpdated(address,bytes32,bytes32[])\":{\"details\":\"Agreement updated event\",\"params\":{\"agreementClass\":\"Contract address of the agreement\",\"data\":\"Agreement data\",\"id\":\"Agreement ID\"}},\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"AuthorizedOperator(address,address)\":{\"details\":\"Emitted when `operator` is made operator for `tokenHolder`.\"},\"Bailout(address,uint256)\":{\"custom:deprecated\":\"Use AgreementLiquidatedV2 instead\",\"details\":\"System bailout occurred (DEPRECATED BY AgreementLiquidatedBy)\",\"params\":{\"bailoutAccount\":\"Account that bailout the penalty account\",\"bailoutAmount\":\"Amount of account bailout\"}},\"Burned(address,address,uint256,bytes,bytes)\":{\"details\":\"Emitted when `operator` destroys `amount` tokens from `account`. Note that some additional user `data` and `operatorData` can be logged in the event.\"},\"Minted(address,address,uint256,bytes,bytes)\":{\"details\":\"Emitted when `amount` tokens are created by `operator` and assigned to `to`. Note that some additional user `data` and `operatorData` can be logged in the event.\"},\"RevokedOperator(address,address)\":{\"details\":\"Emitted when `operator` is revoked its operator status for `tokenHolder`.\"},\"TokenDowngraded(address,uint256)\":{\"details\":\"Token downgrade event\",\"params\":{\"account\":\"Account whose tokens are downgraded\",\"amount\":\"Amount of tokens downgraded\"}},\"TokenUpgraded(address,uint256)\":{\"details\":\"Token upgrade event\",\"params\":{\"account\":\"Account where tokens are upgraded to\",\"amount\":\"Amount of tokens upgraded (in 18 decimals)\"}},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default.\"},\"approve(address,uint256)\":{\"custom:emits\":\"an {Approval} event.\",\"custom:note\":\"Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\",\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens.\",\"returns\":{\"_0\":\"Returns Success a boolean value indicating whether the operation succeeded.\"}},\"authorizeOperator(address)\":{\"custom:emits\":\"an {AuthorizedOperator} event.\",\"custom:requirements\":\" - `operator` cannot be calling address.\",\"details\":\"Make an account an operator of the caller. See {isOperatorFor}.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by an account (`owner`).\"},\"burn(uint256,bytes)\":{\"custom:emits\":\"a {Burned} event.\",\"custom:requirements\":\" - the caller must have at least `amount` tokens.\",\"details\":\"Destroys `amount` tokens from the caller's account, reducing the total supply and transfers the underlying token to the caller's account. If a send hook is registered for the caller, the corresponding function will be called with `data` and empty `operatorData`. See {IERC777Sender}.\"},\"createAgreement(bytes32,bytes32[])\":{\"details\":\"Create a new agreement\",\"params\":{\"data\":\"Agreement data\",\"id\":\"Agreement ID\"}},\"decimals()\":{\"custom:note\":\"SuperToken always uses 18 decimals. This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\",\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called.\"},\"decreaseAllowance(address,uint256)\":{\"custom:emits\":\"an {Approval} event indicating the updated allowance.\",\"custom:requirements\":\" - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\",\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}.\"},\"defaultOperators()\":{\"details\":\"Returns the list of default operators. These accounts are operators for all token holders, even if {authorizeOperator} was never called on them. This list is immutable, but individual holders may revoke these via {revokeOperator}, in which case {isOperatorFor} will return false.\"},\"downgrade(uint256)\":{\"details\":\"Downgrade SuperToken to ERC20.It will call transfer to send tokens\",\"params\":{\"amount\":\"Number of tokens to be downgraded\"}},\"downgradeTo(address,uint256)\":{\"details\":\"Downgrade SuperToken to ERC20 and transfer immediately\",\"params\":{\"amount\":\"Number of tokens to be downgraded (in 18 decimals)\",\"to\":\"The account to receive downgraded tokens\"}},\"getAccountActiveAgreements(address)\":{\"details\":\"An active agreement is one that has state for the account\",\"params\":{\"account\":\"Account to query\"},\"returns\":{\"activeAgreements\":\"List of accounts that have non-zero states for the account\"}},\"getAgreementData(address,bytes32,uint256)\":{\"details\":\"Get data of the agreement\",\"params\":{\"agreementClass\":\"Contract address of the agreement\",\"id\":\"Agreement ID\"},\"returns\":{\"data\":\"Data of the agreement\"}},\"getAgreementStateSlot(address,address,uint256,uint256)\":{\"details\":\"Get data of the slot of the state of an agreement\",\"params\":{\"account\":\"Account to query\",\"agreementClass\":\"Contract address of the agreement\",\"dataLength\":\"length of the state data\",\"slotId\":\"slot id of the state\"}},\"getHost()\":{\"details\":\"Get superfluid host contract address\"},\"getUnderlyingToken()\":{\"details\":\"Return the underlying token contract\",\"returns\":{\"tokenAddr\":\"Underlying token address\"}},\"granularity()\":{\"custom:note\":\"For super token contracts, this value is always 1\",\"details\":\"Returns the smallest part of the token that is not divisible. This means all token operations (creation, movement and destruction) must have amounts that are a multiple of this number.\"},\"increaseAllowance(address,uint256)\":{\"custom:emits\":\"an {Approval} event indicating the updated allowance.\",\"custom:requirements\":\" - `spender` cannot be the zero address.\",\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}.\"},\"initialize(address,uint8,string,string)\":{\"details\":\"Initialize the contract\"},\"isAccountCritical(address,uint256)\":{\"details\":\"A critical account is when availableBalance < 0\",\"params\":{\"account\":\"The account to check\",\"timestamp\":\"The time we'd like to check if the account is critical (should use future)\"},\"returns\":{\"isCritical\":\"Whether the account is critical\"}},\"isAccountCriticalNow(address)\":{\"details\":\"A critical account is when availableBalance < 0\",\"params\":{\"account\":\"The account to check\"},\"returns\":{\"isCritical\":\"Whether the account is critical\"}},\"isAccountSolvent(address,uint256)\":{\"details\":\"An account is insolvent when the sum of deposits for a token can't cover the negative availableBalance\",\"params\":{\"account\":\"The account to check\",\"timestamp\":\"The time we'd like to check if the account is solvent (should use future)\"},\"returns\":{\"isSolvent\":\"True if the account is solvent, false otherwise\"}},\"isAccountSolventNow(address)\":{\"details\":\"An account is insolvent when the sum of deposits for a token can't cover the negative availableBalance\",\"params\":{\"account\":\"The account to check\"},\"returns\":{\"isSolvent\":\"True if the account is solvent, false otherwise\"}},\"isOperatorFor(address,address)\":{\"details\":\"Returns true if an account is an operator of `tokenHolder`. Operators can send and burn tokens on behalf of their owners. All accounts are their own operator. See {operatorSend} and {operatorBurn}.\"},\"makeLiquidationPayoutsV2(bytes32,bytes,address,bool,address,uint256,int256)\":{\"custom:modifiers\":\" - onlyAgreement\",\"custom:note\":\" - If a bailout is required (bailoutAmount > 0) - the actual reward (single deposit) goes to the executor, - while the reward account becomes the bailout account - total bailout include: bailout amount + reward amount - the targetAccount will be bailed out - If a bailout is not required - the targetAccount will pay the rewardAmount - the liquidator (reward account in PIC period) will receive the rewardAmount\",\"details\":\"Make liquidation payouts (v2)\",\"params\":{\"id\":\"Agreement ID\",\"liquidationTypeData\":\"Data regarding the version of the liquidation schema and the type\",\"liquidatorAccount\":\"Address of the executor of the liquidation\",\"rewardAmount\":\"The amount the rewarded account will receive\",\"targetAccount\":\"Account to be liquidated\",\"targetAccountBalanceDelta\":\"The delta amount the target account balance should change by\",\"useDefaultRewardAccount\":\"Whether or not the default reward account receives the rewardAmount\"}},\"name()\":{\"details\":\"Returns the name of the token.\"},\"operationApprove(address,address,uint256)\":{\"custom:modifiers\":\" - onlyHost\",\"details\":\"Perform ERC20 approve by host contract.\",\"params\":{\"account\":\"The account owner to be approved.\",\"amount\":\"Number of tokens to be approved.\",\"spender\":\"The spender of account owner's funds.\"}},\"operationDowngrade(address,uint256)\":{\"custom:modifiers\":\" - onlyHost\",\"details\":\"Downgrade ERC20 to SuperToken by host contract.\",\"params\":{\"account\":\"The account to be changed.\",\"amount\":\"Number of tokens to be downgraded (in 18 decimals)\"}},\"operationSend(address,address,uint256,bytes)\":{\"custom:modifiers\":\" - onlyHost\",\"details\":\"Perform ERC777 send by host contract.\",\"params\":{\"amount\":\"Number of tokens to be transferred.\",\"data\":\"Arbitrary user inputted data\",\"recipient\":\"The recipient of the funds.\",\"spender\":\"The account where the funds is sent from.\"}},\"operationTransferFrom(address,address,address,uint256)\":{\"custom:modifiers\":\" - onlyHost\",\"details\":\"Perform ERC20 transferFrom by host contract.\",\"params\":{\"account\":\"The account to spend sender's funds.\",\"amount\":\"Number of tokens to be transferred.\",\"recipient\":\"The recipient of the funds.\",\"spender\":\"The account where the funds is sent from.\"}},\"operationUpgrade(address,uint256)\":{\"custom:modifiers\":\" - onlyHost\",\"details\":\"Upgrade ERC20 to SuperToken by host contract.\",\"params\":{\"account\":\"The account to be changed.\",\"amount\":\"Number of tokens to be upgraded (in 18 decimals)\"}},\"operatorBurn(address,uint256,bytes,bytes)\":{\"custom:emits\":\"a {Burned} event.\",\"custom:requirements\":\" - `account` cannot be the zero address. - `account` must have at least `amount` tokens. - the caller must be an operator for `account`.\",\"details\":\"Destroys `amount` tokens from `account`, reducing the total supply. The caller must be an operator of `account`. If a send hook is registered for `account`, the corresponding function will be called with `data` and `operatorData`. See {IERC777Sender}.\"},\"operatorSend(address,address,uint256,bytes,bytes)\":{\"custom:emits\":\"a {Sent} event.\",\"custom:requirements\":\" - `sender` cannot be the zero address. - `sender` must have at least `amount` tokens. - the caller must be an operator for `sender`. - `recipient` cannot be the zero address. - if `recipient` is a contract, it must implement the {IERC777Recipient} interface.\",\"details\":\"Moves `amount` tokens from `sender` to `recipient`. The caller must be an operator of `sender`. If send or receive hooks are registered for `sender` and `recipient`, the corresponding functions will be called with `data` and `operatorData`. See {IERC777Sender} and {IERC777Recipient}.\"},\"realtimeBalanceOf(address,uint256)\":{\"details\":\"Calculate the real balance of a user, taking in consideration all agreements of the account\",\"params\":{\"account\":\"for the query\",\"timestamp\":\"Time of balance\"},\"returns\":{\"availableBalance\":\"Real-time balance\",\"deposit\":\"Account deposit\",\"owedDeposit\":\"Account owed Deposit\"}},\"realtimeBalanceOfNow(address)\":{\"details\":\"realtimeBalanceOf with timestamp equals to block timestamp\",\"params\":{\"account\":\"for the query\"},\"returns\":{\"availableBalance\":\"Real-time balance\",\"deposit\":\"Account deposit\",\"owedDeposit\":\"Account owed Deposit\"}},\"revokeOperator(address)\":{\"custom:emits\":\"a {RevokedOperator} event.\",\"custom:requirements\":\" - `operator` cannot be calling address.\",\"details\":\"Revoke an account's operator status for the caller. See {isOperatorFor} and {defaultOperators}.\"},\"selfApproveFor(address,address,uint256)\":{\"custom:modifiers\":\" - onlySelf\",\"details\":\"Give `spender`, `amount` allowance to spend the tokens of `account`.\"},\"selfBurn(address,uint256,bytes)\":{\"custom:modifiers\":\" - onlySelf\",\"details\":\"Burn existing tokens for the account\"},\"selfMint(address,uint256,bytes)\":{\"custom:modifiers\":\" - onlySelf\",\"details\":\"Mint new tokens for the account\"},\"selfTransferFrom(address,address,address,uint256)\":{\"custom:modifiers\":\" - onlySelf\",\"details\":\"Transfer `amount` tokens from the `sender` to `recipient`. If `spender` isn't the same as `sender`, checks if `spender` has allowance to spend tokens of `sender`.\"},\"send(address,uint256,bytes)\":{\"custom:emits\":\"a {Sent} event.\",\"custom:requirements\":\" - the caller must have at least `amount` tokens. - `recipient` cannot be the zero address. - if `recipient` is a contract, it must implement the {IERC777Recipient} interface.\",\"details\":\"Moves `amount` tokens from the caller's account to `recipient`.If send or receive hooks are registered for the caller and `recipient`, the corresponding functions will be called with `data` and empty `operatorData`. See {IERC777Sender} and {IERC777Recipient}.\"},\"settleBalance(address,int256)\":{\"custom:modifiers\":\" - onlyAgreement\",\"details\":\"The agreement needs to make sure that the balance delta is balanced afterwards\",\"params\":{\"account\":\"Account to query.\",\"delta\":\"Amount of balance delta to be settled\"}},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"terminateAgreement(bytes32,uint256)\":{\"details\":\"Close the agreement\",\"params\":{\"id\":\"Agreement ID\"}},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"custom:emits\":\"a {Transfer} event.\",\"details\":\"Moves `amount` tokens from the caller's account to `recipient`.\",\"returns\":{\"_0\":\"Returns Success a boolean value indicating whether the operation succeeded.\"}},\"transferAll(address)\":{\"details\":\"Transfer all available balance from `msg.sender` to `recipient`\"},\"transferFrom(address,address,uint256)\":{\"custom:emits\":\"a {Transfer} event.\",\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance.\",\"returns\":{\"_0\":\"Returns Success a boolean value indicating whether the operation succeeded.\"}},\"updateAgreementData(bytes32,bytes32[])\":{\"details\":\"Create a new agreement\",\"params\":{\"data\":\"Agreement data\",\"id\":\"Agreement ID\"}},\"updateAgreementStateSlot(address,uint256,bytes32[])\":{\"custom:note\":\" - To clear the storage out, provide zero-ed array of intended length\",\"details\":\"Update agreement state slot\",\"params\":{\"account\":\"Account to be updated\"}},\"upgrade(uint256)\":{\"custom:note\":\"It will use `transferFrom` to get tokens. Before calling this function you should `approve` this contract\",\"details\":\"Upgrade ERC20 to SuperToken.\",\"params\":{\"amount\":\"Number of tokens to be upgraded (in 18 decimals)\"}},\"upgradeTo(address,uint256,bytes)\":{\"custom:note\":\"It will use `transferFrom` to get tokens. Before calling this function you should `approve` this contract \",\"custom:requirements\":\" - if `data` is NOT empty AND `to` is a contract, it MUST be a registered ERC777 recipient otherwise it reverts.\",\"custom:warning\":\"- there is potential of reentrancy IF the \\\"to\\\" account is a registered ERC777 recipient.\",\"details\":\"Upgrade ERC20 to SuperToken and transfer immediately\",\"params\":{\"amount\":\"Number of tokens to be upgraded (in 18 decimals)\",\"data\":\"User data for the TokensRecipient callback\",\"to\":\"The account to receive upgraded tokens\"}}},\"title\":\"Super token (Superfluid Token + ERC20 + ERC777) interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"allowance(address,address)\":{\"notice\":\"This value changes when {approve} or {transferFrom} are called.\"},\"getAccountActiveAgreements(address)\":{\"notice\":\"Get a list of agreements that is active for the account\"},\"isAccountCritical(address,uint256)\":{\"notice\":\"Check if account is critical\"},\"isAccountCriticalNow(address)\":{\"notice\":\"Check if account is critical now (current host.getNow())\"},\"isAccountSolvent(address,uint256)\":{\"notice\":\"Check if account is solvent\"},\"isAccountSolventNow(address)\":{\"notice\":\"Check if account is solvent now\"},\"realtimeBalanceOfNow(address)\":{\"notice\":\"Calculate the realtime balance given the current host.getNow() value\"},\"settleBalance(address,int256)\":{\"notice\":\"Settle balance from an account by the agreement\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.sol\":\"ISuperToken\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"@openzeppelin/contracts/token/ERC777/IERC777.sol\":{\"keccak256\":\"0x385a7061f1436b079d44c140dee9387d5313e94874ff9ee877dc0085c981ac3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c3fe22bb0d9527356e11f267f9187134de4d4ed1ff77468b4d73e3238697b96\",\"dweb:/ipfs/Qmc8caJctgxbzXEpxRogQMR2bnBk5U67hA7kKbUEG2PUXV\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol\":{\"keccak256\":\"0x80254971aff00fc006d70b85b7bc830bb28096789e72ff3f03aa22cc7810eb0c\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://840f9d959abfbf3919db3dca35336e360b2bbd54e677439a545c7c4f163f6d70\",\"dweb:/ipfs/QmR4CRq7dpYR4NuCSASkNrcnbSScRX8MaEvDs8L7v3xDyr\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol\":{\"keccak256\":\"0x9b4fab6dcac1337f78e04d67d8c2b48b1de8bd4bbf14b475840f9dbda7b8f21e\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://cc2f3629ad0cb46bd4f595880591ad6c9d75a82d920cb9355e462fbf8022c820\",\"dweb:/ipfs/QmXMovxK4qpWT4yffXxUVjkMNwxEfS6mtn39mLSmjaxEdW\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperApp.sol\":{\"keccak256\":\"0x6cc4b0724d977190c7441dfc3be6c6e48b43b555c3370af32ef5b6600f15f53f\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://3e89c944642772a42429f21a11017b57deb98a9198f8e4f8749f00aaee71299e\",\"dweb:/ipfs/QmaSv9GvqikcGHJ3tcwATDHSpQw6mfnHPDtcfqcZSS7LF6\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.sol\":{\"keccak256\":\"0x6860f0bf69dcc1d1ec39eefb43e0cd18b276b48ebe9efd53450e09cd2f997ab2\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://6421f80f2ff7818bd235b7bf4b911cc40edcb598507a246b4de0fa0191a9e1aa\",\"dweb:/ipfs/QmWxktXMjYhi1zt52D3JXNcxCFesXu8kQoSCJQ3j88apM3\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperTokenFactory.sol\":{\"keccak256\":\"0xe2525ef2906504e2f61775ed91bbebeea2f4e2e3fa42ce190561acf6a01187ff\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://7a9859eb432321a65cd15ca988a13776e1c31df44b4cf25f95fa04b54a8a8625\",\"dweb:/ipfs/QmQVJQoeoWemptZhbRgWJZWwMTiNtxVsc1FYmGdtdTfqcL\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol\":{\"keccak256\":\"0xab9dab941f99d0f0ef6125fb6eafde03378d7c3e94e613dd12fb7fbf594c3373\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://928c6ef915dee69058d4cfcb9f2344d4fc78d9763b47b17e5c03fbff64ba3c64\",\"dweb:/ipfs/Qmdk733ZHceatz3qbuodLCCS9TUspJJtXLoX6vWwMvrPDE\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance.sol\":{\"keccak256\":\"0x90a9259d0f0bb6b1bb6d48f051277eb75df96a9fbe684a203a3a468ad19318e2\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://9c8162a2d07ffe768920fef55292684149173afefbfba76b8fca007e55092229\",\"dweb:/ipfs/QmducLNwrzeUXEpBjUTSMu7sfmQEwVhcYXApe4brc1zQ6V\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol\":{\"keccak256\":\"0x9cad3866982902ea88df0874a563d2e4aeba5a5bcc6289c30cccf9b4099d2fb6\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://e8fd960b259331f204c7cb7dcd32b09d68f4294e3b872fad00ad467609c3ef72\",\"dweb:/ipfs/QmeZFEvsDunXQGPbXFfN5AvfKM5am1FY8Xv6e3c4tNKvgY\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo.sol\":{\"keccak256\":\"0x55be78ffb441c782f612b153d7d9049e3f0dbfd412c1f7df29c896b972b2985f\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://a223c68e38a6c9b1e363e525911bc7eda44ea517865ae53bd0d34ff858cc02ae\",\"dweb:/ipfs/QmVruGehibG6Emr2A6JHwUnhd4NzsGkE24cbGqnDpEvrKh\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.sol\":{\"keccak256\":\"0x7456cd394cc905aae7cdbd4601ce1c296c768c13c28e66efbb913cc070bad3e4\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://5a6589b428b724721ba5b4dd196c8f366a6e694ef313add093f29af64496c042\",\"dweb:/ipfs/QmSMgV6y8L6pyyzDz6kKmafVwujNWcjTqutpCBxe4uNRqg\"]}},\"version\":1}"}},"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperTokenFactory.sol":{"ISuperTokenFactory":{"abi":[{"inputs":[],"name":"SUPER_TOKEN_FACTORY_ALREADY_EXISTS","type":"error"},{"inputs":[],"name":"SUPER_TOKEN_FACTORY_DOES_NOT_EXIST","type":"error"},{"inputs":[],"name":"SUPER_TOKEN_FACTORY_NON_UPGRADEABLE_IS_DEPRECATED","type":"error"},{"inputs":[],"name":"SUPER_TOKEN_FACTORY_ONLY_HOST","type":"error"},{"inputs":[],"name":"SUPER_TOKEN_FACTORY_UNINITIALIZED","type":"error"},{"inputs":[],"name":"SUPER_TOKEN_FACTORY_ZERO_ADDRESS","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract ISuperToken","name":"token","type":"address"}],"name":"CustomSuperTokenCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract ISuperToken","name":"token","type":"address"}],"name":"SuperTokenCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract ISuperToken","name":"tokenLogic","type":"address"}],"name":"SuperTokenLogicCreated","type":"event"},{"inputs":[{"internalType":"address","name":"_underlyingToken","type":"address"}],"name":"computeCanonicalERC20WrapperAddress","outputs":[{"internalType":"address","name":"superTokenAddress","type":"address"},{"internalType":"bool","name":"isDeployed","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ERC20WithTokenInfo","name":"_underlyingToken","type":"address"}],"name":"createCanonicalERC20Wrapper","outputs":[{"internalType":"contract ISuperToken","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ERC20WithTokenInfo","name":"underlyingToken","type":"address"},{"internalType":"enum ISuperTokenFactory.Upgradability","name":"upgradability","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"}],"name":"createERC20Wrapper","outputs":[{"internalType":"contract ISuperToken","name":"superToken","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"underlyingToken","type":"address"},{"internalType":"uint8","name":"underlyingDecimals","type":"uint8"},{"internalType":"enum ISuperTokenFactory.Upgradability","name":"upgradability","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"}],"name":"createERC20Wrapper","outputs":[{"internalType":"contract ISuperToken","name":"superToken","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_underlyingTokenAddress","type":"address"}],"name":"getCanonicalERC20Wrapper","outputs":[{"internalType":"address","name":"superTokenAddress","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getHost","outputs":[{"internalType":"address","name":"host","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSuperTokenLogic","outputs":[{"internalType":"contract ISuperToken","name":"superToken","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"customSuperTokenProxy","type":"address"}],"name":"initializeCustomSuperToken","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"computeCanonicalERC20WrapperAddress(address)":"bab74c89","createCanonicalERC20Wrapper(address)":"151188dc","createERC20Wrapper(address,uint8,string,string)":"431f1481","createERC20Wrapper(address,uint8,uint8,string,string)":"a6d0c534","getCanonicalERC20Wrapper(address)":"eff0a89d","getHost()":"20bc4425","getSuperTokenLogic()":"9470a5b2","initialize()":"8129fc1c","initializeCustomSuperToken(address)":"d412d344"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"SUPER_TOKEN_FACTORY_ALREADY_EXISTS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SUPER_TOKEN_FACTORY_DOES_NOT_EXIST\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SUPER_TOKEN_FACTORY_NON_UPGRADEABLE_IS_DEPRECATED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SUPER_TOKEN_FACTORY_ONLY_HOST\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SUPER_TOKEN_FACTORY_UNINITIALIZED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SUPER_TOKEN_FACTORY_ZERO_ADDRESS\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ISuperToken\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"CustomSuperTokenCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ISuperToken\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SuperTokenCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ISuperToken\",\"name\":\"tokenLogic\",\"type\":\"address\"}],\"name\":\"SuperTokenLogicCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_underlyingToken\",\"type\":\"address\"}],\"name\":\"computeCanonicalERC20WrapperAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"superTokenAddress\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isDeployed\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ERC20WithTokenInfo\",\"name\":\"_underlyingToken\",\"type\":\"address\"}],\"name\":\"createCanonicalERC20Wrapper\",\"outputs\":[{\"internalType\":\"contract ISuperToken\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ERC20WithTokenInfo\",\"name\":\"underlyingToken\",\"type\":\"address\"},{\"internalType\":\"enum ISuperTokenFactory.Upgradability\",\"name\":\"upgradability\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"}],\"name\":\"createERC20Wrapper\",\"outputs\":[{\"internalType\":\"contract ISuperToken\",\"name\":\"superToken\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"underlyingToken\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"underlyingDecimals\",\"type\":\"uint8\"},{\"internalType\":\"enum ISuperTokenFactory.Upgradability\",\"name\":\"upgradability\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"}],\"name\":\"createERC20Wrapper\",\"outputs\":[{\"internalType\":\"contract ISuperToken\",\"name\":\"superToken\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_underlyingTokenAddress\",\"type\":\"address\"}],\"name\":\"getCanonicalERC20Wrapper\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"superTokenAddress\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getHost\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"host\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSuperTokenLogic\",\"outputs\":[{\"internalType\":\"contract ISuperToken\",\"name\":\"superToken\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"customSuperTokenProxy\",\"type\":\"address\"}],\"name\":\"initializeCustomSuperToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Superfluid\",\"events\":{\"CustomSuperTokenCreated(address)\":{\"details\":\"Custom super token created event\",\"params\":{\"token\":\"Newly created custom super token address\"}},\"SuperTokenCreated(address)\":{\"details\":\"Super token created event\",\"params\":{\"token\":\"Newly created super token address\"}},\"SuperTokenLogicCreated(address)\":{\"details\":\"Super token logic created event\",\"params\":{\"tokenLogic\":\"Token logic address\"}}},\"kind\":\"dev\",\"methods\":{\"computeCanonicalERC20WrapperAddress(address)\":{\"details\":\"We return from our canonical list if it already exists, otherwise we compute itnote that this function only computes addresses for SEMI_UPGRADABLE SuperTokens\",\"params\":{\"_underlyingToken\":\"Underlying ERC20 token address\"},\"returns\":{\"isDeployed\":\"whether the super token is deployed AND set in the canonical mapping\",\"superTokenAddress\":\"Super token address\"}},\"createCanonicalERC20Wrapper(address)\":{\"details\":\"salt for create2 is the keccak256 hash of abi.encode(address(_underlyingToken))\",\"params\":{\"_underlyingToken\":\"Underlying ERC20 token\"},\"returns\":{\"_0\":\"ISuperToken the created supertoken\"}},\"createERC20Wrapper(address,uint8,string,string)\":{\"params\":{\"name\":\"Super token name\",\"symbol\":\"Super token symbol\",\"underlyingToken\":\"Underlying ERC20 token\",\"upgradability\":\"Upgradability mode\"},\"returns\":{\"superToken\":\"The deployed and initialized wrapper super token NOTE: - It assumes token provide the .decimals() function\"}},\"createERC20Wrapper(address,uint8,uint8,string,string)\":{\"params\":{\"name\":\"Super token name\",\"symbol\":\"Super token symbol\",\"underlyingDecimals\":\"Underlying token decimals\",\"underlyingToken\":\"Underlying ERC20 token\",\"upgradability\":\"Upgradability mode\"},\"returns\":{\"superToken\":\"The deployed and initialized wrapper super token\"}},\"getCanonicalERC20Wrapper(address)\":{\"details\":\"We return the address if it exists and the zero address otherwise\",\"params\":{\"_underlyingTokenAddress\":\"Underlying ERC20 token address\"},\"returns\":{\"superTokenAddress\":\"Super token address\"}},\"getHost()\":{\"details\":\"Get superfluid host contract address\"},\"getSuperTokenLogic()\":{\"details\":\"Get the current super token logic used by the factory\"},\"initialize()\":{\"details\":\"Initialize the contract\"},\"initializeCustomSuperToken(address)\":{\"details\":\"Creates a new custom super token\",\"params\":{\"customSuperTokenProxy\":\"address of the custom supertoken proxy\"}}},\"title\":\"Super token factory interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"computeCanonicalERC20WrapperAddress(address)\":{\"notice\":\"Computes/Retrieves wrapper super token address given the underlying token address\"},\"createCanonicalERC20Wrapper(address)\":{\"notice\":\"Creates a wrapper super token AND sets it in the canonical list OR reverts if it already exists\"},\"createERC20Wrapper(address,uint8,string,string)\":{\"notice\":\"Create new super token wrapper for the underlying ERC20 token with extra token info\"},\"createERC20Wrapper(address,uint8,uint8,string,string)\":{\"notice\":\"Create new super token wrapper for the underlying ERC20 token\"},\"getCanonicalERC20Wrapper(address)\":{\"notice\":\"Gets the canonical ERC20 wrapper super token address given the underlying token address\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperTokenFactory.sol\":\"ISuperTokenFactory\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"@openzeppelin/contracts/token/ERC777/IERC777.sol\":{\"keccak256\":\"0x385a7061f1436b079d44c140dee9387d5313e94874ff9ee877dc0085c981ac3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c3fe22bb0d9527356e11f267f9187134de4d4ed1ff77468b4d73e3238697b96\",\"dweb:/ipfs/Qmc8caJctgxbzXEpxRogQMR2bnBk5U67hA7kKbUEG2PUXV\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol\":{\"keccak256\":\"0x80254971aff00fc006d70b85b7bc830bb28096789e72ff3f03aa22cc7810eb0c\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://840f9d959abfbf3919db3dca35336e360b2bbd54e677439a545c7c4f163f6d70\",\"dweb:/ipfs/QmR4CRq7dpYR4NuCSASkNrcnbSScRX8MaEvDs8L7v3xDyr\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol\":{\"keccak256\":\"0x9b4fab6dcac1337f78e04d67d8c2b48b1de8bd4bbf14b475840f9dbda7b8f21e\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://cc2f3629ad0cb46bd4f595880591ad6c9d75a82d920cb9355e462fbf8022c820\",\"dweb:/ipfs/QmXMovxK4qpWT4yffXxUVjkMNwxEfS6mtn39mLSmjaxEdW\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperApp.sol\":{\"keccak256\":\"0x6cc4b0724d977190c7441dfc3be6c6e48b43b555c3370af32ef5b6600f15f53f\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://3e89c944642772a42429f21a11017b57deb98a9198f8e4f8749f00aaee71299e\",\"dweb:/ipfs/QmaSv9GvqikcGHJ3tcwATDHSpQw6mfnHPDtcfqcZSS7LF6\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.sol\":{\"keccak256\":\"0x6860f0bf69dcc1d1ec39eefb43e0cd18b276b48ebe9efd53450e09cd2f997ab2\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://6421f80f2ff7818bd235b7bf4b911cc40edcb598507a246b4de0fa0191a9e1aa\",\"dweb:/ipfs/QmWxktXMjYhi1zt52D3JXNcxCFesXu8kQoSCJQ3j88apM3\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperTokenFactory.sol\":{\"keccak256\":\"0xe2525ef2906504e2f61775ed91bbebeea2f4e2e3fa42ce190561acf6a01187ff\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://7a9859eb432321a65cd15ca988a13776e1c31df44b4cf25f95fa04b54a8a8625\",\"dweb:/ipfs/QmQVJQoeoWemptZhbRgWJZWwMTiNtxVsc1FYmGdtdTfqcL\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol\":{\"keccak256\":\"0xab9dab941f99d0f0ef6125fb6eafde03378d7c3e94e613dd12fb7fbf594c3373\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://928c6ef915dee69058d4cfcb9f2344d4fc78d9763b47b17e5c03fbff64ba3c64\",\"dweb:/ipfs/Qmdk733ZHceatz3qbuodLCCS9TUspJJtXLoX6vWwMvrPDE\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance.sol\":{\"keccak256\":\"0x90a9259d0f0bb6b1bb6d48f051277eb75df96a9fbe684a203a3a468ad19318e2\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://9c8162a2d07ffe768920fef55292684149173afefbfba76b8fca007e55092229\",\"dweb:/ipfs/QmducLNwrzeUXEpBjUTSMu7sfmQEwVhcYXApe4brc1zQ6V\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol\":{\"keccak256\":\"0x9cad3866982902ea88df0874a563d2e4aeba5a5bcc6289c30cccf9b4099d2fb6\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://e8fd960b259331f204c7cb7dcd32b09d68f4294e3b872fad00ad467609c3ef72\",\"dweb:/ipfs/QmeZFEvsDunXQGPbXFfN5AvfKM5am1FY8Xv6e3c4tNKvgY\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo.sol\":{\"keccak256\":\"0x55be78ffb441c782f612b153d7d9049e3f0dbfd412c1f7df29c896b972b2985f\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://a223c68e38a6c9b1e363e525911bc7eda44ea517865ae53bd0d34ff858cc02ae\",\"dweb:/ipfs/QmVruGehibG6Emr2A6JHwUnhd4NzsGkE24cbGqnDpEvrKh\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.sol\":{\"keccak256\":\"0x7456cd394cc905aae7cdbd4601ce1c296c768c13c28e66efbb913cc070bad3e4\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://5a6589b428b724721ba5b4dd196c8f366a6e694ef313add093f29af64496c042\",\"dweb:/ipfs/QmSMgV6y8L6pyyzDz6kKmafVwujNWcjTqutpCBxe4uNRqg\"]}},\"version\":1}"}},"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol":{"ISuperfluid":{"abi":[{"inputs":[{"internalType":"uint256","name":"_code","type":"uint256"}],"name":"APP_RULE","type":"error"},{"inputs":[],"name":"HOST_AGREEMENT_ALREADY_REGISTERED","type":"error"},{"inputs":[],"name":"HOST_AGREEMENT_CALLBACK_IS_NOT_ACTION","type":"error"},{"inputs":[],"name":"HOST_AGREEMENT_IS_NOT_REGISTERED","type":"error"},{"inputs":[],"name":"HOST_CALL_AGREEMENT_WITH_CTX_FROM_WRONG_ADDRESS","type":"error"},{"inputs":[],"name":"HOST_CALL_APP_ACTION_WITH_CTX_FROM_WRONG_ADDRESS","type":"error"},{"inputs":[],"name":"HOST_CANNOT_DOWNGRADE_TO_NON_UPGRADEABLE","type":"error"},{"inputs":[],"name":"HOST_INVALID_CONFIG_WORD","type":"error"},{"inputs":[],"name":"HOST_INVALID_OR_EXPIRED_SUPER_APP_REGISTRATION_KEY","type":"error"},{"inputs":[],"name":"HOST_MAX_256_AGREEMENTS","type":"error"},{"inputs":[],"name":"HOST_MUST_BE_CONTRACT","type":"error"},{"inputs":[],"name":"HOST_NON_UPGRADEABLE","type":"error"},{"inputs":[],"name":"HOST_NON_ZERO_LENGTH_PLACEHOLDER_CTX","type":"error"},{"inputs":[],"name":"HOST_NOT_A_SUPER_APP","type":"error"},{"inputs":[],"name":"HOST_NO_APP_REGISTRATION_PERMISSIONS","type":"error"},{"inputs":[],"name":"HOST_ONLY_GOVERNANCE","type":"error"},{"inputs":[],"name":"HOST_ONLY_LISTED_AGREEMENT","type":"error"},{"inputs":[],"name":"HOST_RECEIVER_IS_NOT_SUPER_APP","type":"error"},{"inputs":[],"name":"HOST_SENDER_IS_NOT_SUPER_APP","type":"error"},{"inputs":[],"name":"HOST_SOURCE_APP_NEEDS_HIGHER_APP_LEVEL","type":"error"},{"inputs":[],"name":"HOST_SUPER_APP_ALREADY_REGISTERED","type":"error"},{"inputs":[],"name":"HOST_SUPER_APP_IS_JAILED","type":"error"},{"inputs":[],"name":"HOST_UNAUTHORIZED_SUPER_APP_FACTORY","type":"error"},{"inputs":[],"name":"HOST_UNKNOWN_BATCH_CALL_OPERATION_TYPE","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"agreementType","type":"bytes32"},{"indexed":false,"internalType":"address","name":"code","type":"address"}],"name":"AgreementClassRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"agreementType","type":"bytes32"},{"indexed":false,"internalType":"address","name":"code","type":"address"}],"name":"AgreementClassUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract ISuperApp","name":"app","type":"address"}],"name":"AppRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract ISuperfluidGovernance","name":"oldGov","type":"address"},{"indexed":false,"internalType":"contract ISuperfluidGovernance","name":"newGov","type":"address"}],"name":"GovernanceReplaced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract ISuperApp","name":"app","type":"address"},{"indexed":false,"internalType":"uint256","name":"reason","type":"uint256"}],"name":"Jail","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract ISuperTokenFactory","name":"newFactory","type":"address"}],"name":"SuperTokenFactoryUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract ISuperToken","name":"token","type":"address"},{"indexed":false,"internalType":"address","name":"code","type":"address"}],"name":"SuperTokenLogicUpdated","type":"event"},{"inputs":[{"internalType":"uint256","name":"bitmap","type":"uint256"},{"internalType":"bytes32","name":"agreementType","type":"bytes32"}],"name":"addToAgreementClassesBitmap","outputs":[{"internalType":"uint256","name":"newBitmap","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ISuperApp","name":"targetApp","type":"address"}],"name":"allowCompositeApp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"ctx","type":"bytes"},{"internalType":"int256","name":"appCreditUsedDelta","type":"int256"}],"name":"appCallbackPop","outputs":[{"internalType":"bytes","name":"newCtx","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"ctx","type":"bytes"},{"internalType":"contract ISuperApp","name":"app","type":"address"},{"internalType":"uint256","name":"appCreditGranted","type":"uint256"},{"internalType":"int256","name":"appCreditUsed","type":"int256"},{"internalType":"contract ISuperfluidToken","name":"appCreditToken","type":"address"}],"name":"appCallbackPush","outputs":[{"internalType":"bytes","name":"newCtx","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"operationType","type":"uint32"},{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct ISuperfluid.Operation[]","name":"operations","type":"tuple[]"}],"name":"batchCall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ISuperAgreement","name":"agreementClass","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"callAgreement","outputs":[{"internalType":"bytes","name":"returnedData","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ISuperAgreement","name":"agreementClass","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"},{"internalType":"bytes","name":"userData","type":"bytes"},{"internalType":"bytes","name":"ctx","type":"bytes"}],"name":"callAgreementWithContext","outputs":[{"internalType":"bytes","name":"newCtx","type":"bytes"},{"internalType":"bytes","name":"returnedData","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ISuperApp","name":"app","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"}],"name":"callAppAction","outputs":[{"internalType":"bytes","name":"returnedData","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ISuperApp","name":"app","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"},{"internalType":"bytes","name":"ctx","type":"bytes"}],"name":"callAppActionWithContext","outputs":[{"internalType":"bytes","name":"newCtx","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ISuperApp","name":"app","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"},{"internalType":"bool","name":"isTermination","type":"bool"},{"internalType":"bytes","name":"ctx","type":"bytes"}],"name":"callAppAfterCallback","outputs":[{"internalType":"bytes","name":"newCtx","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ISuperApp","name":"app","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"},{"internalType":"bool","name":"isTermination","type":"bool"},{"internalType":"bytes","name":"ctx","type":"bytes"}],"name":"callAppBeforeCallback","outputs":[{"internalType":"bytes","name":"cbdata","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"ctx","type":"bytes"},{"internalType":"int256","name":"appCreditUsedMore","type":"int256"}],"name":"ctxUseCredit","outputs":[{"internalType":"bytes","name":"newCtx","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"ctx","type":"bytes"}],"name":"decodeCtx","outputs":[{"components":[{"internalType":"uint8","name":"appCallbackLevel","type":"uint8"},{"internalType":"uint8","name":"callType","type":"uint8"},{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"address","name":"msgSender","type":"address"},{"internalType":"bytes4","name":"agreementSelector","type":"bytes4"},{"internalType":"bytes","name":"userData","type":"bytes"},{"internalType":"uint256","name":"appCreditGranted","type":"uint256"},{"internalType":"uint256","name":"appCreditWantedDeprecated","type":"uint256"},{"internalType":"int256","name":"appCreditUsed","type":"int256"},{"internalType":"address","name":"appAddress","type":"address"},{"internalType":"contract ISuperfluidToken","name":"appCreditToken","type":"address"}],"internalType":"struct ISuperfluid.Context","name":"context","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"operationType","type":"uint32"},{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct ISuperfluid.Operation[]","name":"operations","type":"tuple[]"}],"name":"forwardBatchCall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"agreementType","type":"bytes32"}],"name":"getAgreementClass","outputs":[{"internalType":"contract ISuperAgreement","name":"agreementClass","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ISuperApp","name":"app","type":"address"}],"name":"getAppCallbackLevel","outputs":[{"internalType":"uint8","name":"appCallbackLevel","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ISuperApp","name":"app","type":"address"}],"name":"getAppManifest","outputs":[{"internalType":"bool","name":"isSuperApp","type":"bool"},{"internalType":"bool","name":"isJailed","type":"bool"},{"internalType":"uint256","name":"noopMask","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGovernance","outputs":[{"internalType":"contract ISuperfluidGovernance","name":"governance","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNow","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSuperTokenFactory","outputs":[{"internalType":"contract ISuperTokenFactory","name":"factory","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSuperTokenFactoryLogic","outputs":[{"internalType":"address","name":"logic","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ISuperAgreement","name":"agreementClass","type":"address"}],"name":"isAgreementClassListed","outputs":[{"internalType":"bool","name":"yes","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"agreementType","type":"bytes32"}],"name":"isAgreementTypeListed","outputs":[{"internalType":"bool","name":"yes","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ISuperApp","name":"app","type":"address"}],"name":"isApp","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ISuperApp","name":"app","type":"address"}],"name":"isAppJailed","outputs":[{"internalType":"bool","name":"isJail","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ISuperApp","name":"app","type":"address"},{"internalType":"contract ISuperApp","name":"targetApp","type":"address"}],"name":"isCompositeAppAllowed","outputs":[{"internalType":"bool","name":"isAppAllowed","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"ctx","type":"bytes"}],"name":"isCtxValid","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"ctx","type":"bytes"},{"internalType":"contract ISuperApp","name":"app","type":"address"},{"internalType":"uint256","name":"reason","type":"uint256"}],"name":"jailApp","outputs":[{"internalType":"bytes","name":"newCtx","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"bitmap","type":"uint256"}],"name":"mapAgreementClasses","outputs":[{"internalType":"contract ISuperAgreement[]","name":"agreementClasses","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ISuperAgreement","name":"agreementClassLogic","type":"address"}],"name":"registerAgreementClass","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"configWord","type":"uint256"}],"name":"registerApp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ISuperApp","name":"app","type":"address"},{"internalType":"uint256","name":"configWord","type":"uint256"}],"name":"registerAppByFactory","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"configWord","type":"uint256"},{"internalType":"string","name":"registrationKey","type":"string"}],"name":"registerAppWithKey","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"bitmap","type":"uint256"},{"internalType":"bytes32","name":"agreementType","type":"bytes32"}],"name":"removeFromAgreementClassesBitmap","outputs":[{"internalType":"uint256","name":"newBitmap","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ISuperfluidGovernance","name":"newGov","type":"address"}],"name":"replaceGovernance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ISuperAgreement","name":"agreementClassLogic","type":"address"}],"name":"updateAgreementClass","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ISuperTokenFactory","name":"newFactory","type":"address"}],"name":"updateSuperTokenFactory","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ISuperToken","name":"token","type":"address"}],"name":"updateSuperTokenLogic","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"addToAgreementClassesBitmap(uint256,bytes32)":"bced3ddc","allowCompositeApp(address)":"57121e0c","appCallbackPop(bytes,int256)":"989b0c3e","appCallbackPush(bytes,address,uint256,int256,address)":"768fabb0","batchCall((uint32,address,bytes)[])":"6ad3ca7d","callAgreement(address,bytes,bytes)":"39255d5b","callAgreementWithContext(address,bytes,bytes,bytes)":"4329d293","callAppAction(address,bytes)":"1e855cf3","callAppActionWithContext(address,bytes,bytes)":"ba48b5f8","callAppAfterCallback(address,bytes,bool,bytes)":"1e6d0a84","callAppBeforeCallback(address,bytes,bool,bytes)":"74041e02","ctxUseCredit(bytes,int256)":"59a29141","decodeCtx(bytes)":"3f6c923a","forwardBatchCall((uint32,address,bytes)[])":"670e77e3","getAgreementClass(bytes32)":"b6d200de","getAppCallbackLevel(address)":"9378fa13","getAppManifest(address)":"f9f522f4","getGovernance()":"289b3c0d","getNow()":"bbe4fd50","getSuperTokenFactory()":"731aed6e","getSuperTokenFactoryLogic()":"f2e55caf","isAgreementClassListed(address)":"8ca48484","isAgreementTypeListed(bytes32)":"e8dccb7d","isApp(address)":"3ca3ad4e","isAppJailed(address)":"6b4f3335","isCompositeAppAllowed(address,address)":"bb84cfa1","isCtxValid(bytes)":"bf428734","jailApp(bytes,address,uint256)":"b724211e","mapAgreementClasses(uint256)":"c56a069d","registerAgreementClass(address)":"15a024e1","registerApp(uint256)":"ad3915c8","registerAppByFactory(address,uint256)":"f3733052","registerAppWithKey(uint256,string)":"bd1c448b","removeFromAgreementClassesBitmap(uint256,bytes32)":"a5dbbbcd","replaceGovernance(address)":"7283100c","updateAgreementClass(address)":"06cecba8","updateSuperTokenFactory(address)":"54fbc493","updateSuperTokenLogic(address)":"787afde7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_code\",\"type\":\"uint256\"}],\"name\":\"APP_RULE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HOST_AGREEMENT_ALREADY_REGISTERED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HOST_AGREEMENT_CALLBACK_IS_NOT_ACTION\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HOST_AGREEMENT_IS_NOT_REGISTERED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HOST_CALL_AGREEMENT_WITH_CTX_FROM_WRONG_ADDRESS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HOST_CALL_APP_ACTION_WITH_CTX_FROM_WRONG_ADDRESS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HOST_CANNOT_DOWNGRADE_TO_NON_UPGRADEABLE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HOST_INVALID_CONFIG_WORD\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HOST_INVALID_OR_EXPIRED_SUPER_APP_REGISTRATION_KEY\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HOST_MAX_256_AGREEMENTS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HOST_MUST_BE_CONTRACT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HOST_NON_UPGRADEABLE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HOST_NON_ZERO_LENGTH_PLACEHOLDER_CTX\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HOST_NOT_A_SUPER_APP\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HOST_NO_APP_REGISTRATION_PERMISSIONS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HOST_ONLY_GOVERNANCE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HOST_ONLY_LISTED_AGREEMENT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HOST_RECEIVER_IS_NOT_SUPER_APP\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HOST_SENDER_IS_NOT_SUPER_APP\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HOST_SOURCE_APP_NEEDS_HIGHER_APP_LEVEL\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HOST_SUPER_APP_ALREADY_REGISTERED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HOST_SUPER_APP_IS_JAILED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HOST_UNAUTHORIZED_SUPER_APP_FACTORY\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HOST_UNKNOWN_BATCH_CALL_OPERATION_TYPE\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"agreementType\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"code\",\"type\":\"address\"}],\"name\":\"AgreementClassRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"agreementType\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"code\",\"type\":\"address\"}],\"name\":\"AgreementClassUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ISuperApp\",\"name\":\"app\",\"type\":\"address\"}],\"name\":\"AppRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract ISuperfluidGovernance\",\"name\":\"oldGov\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract ISuperfluidGovernance\",\"name\":\"newGov\",\"type\":\"address\"}],\"name\":\"GovernanceReplaced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ISuperApp\",\"name\":\"app\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reason\",\"type\":\"uint256\"}],\"name\":\"Jail\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract ISuperTokenFactory\",\"name\":\"newFactory\",\"type\":\"address\"}],\"name\":\"SuperTokenFactoryUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ISuperToken\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"code\",\"type\":\"address\"}],\"name\":\"SuperTokenLogicUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"bitmap\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"agreementType\",\"type\":\"bytes32\"}],\"name\":\"addToAgreementClassesBitmap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"newBitmap\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperApp\",\"name\":\"targetApp\",\"type\":\"address\"}],\"name\":\"allowCompositeApp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"},{\"internalType\":\"int256\",\"name\":\"appCreditUsedDelta\",\"type\":\"int256\"}],\"name\":\"appCallbackPop\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"},{\"internalType\":\"contract ISuperApp\",\"name\":\"app\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"appCreditGranted\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"appCreditUsed\",\"type\":\"int256\"},{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"appCreditToken\",\"type\":\"address\"}],\"name\":\"appCallbackPush\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"operationType\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct ISuperfluid.Operation[]\",\"name\":\"operations\",\"type\":\"tuple[]\"}],\"name\":\"batchCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperAgreement\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"callAgreement\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"returnedData\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperAgreement\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"callAgreementWithContext\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"returnedData\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperApp\",\"name\":\"app\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"name\":\"callAppAction\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"returnedData\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperApp\",\"name\":\"app\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"callAppActionWithContext\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperApp\",\"name\":\"app\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"isTermination\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"callAppAfterCallback\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperApp\",\"name\":\"app\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"isTermination\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"callAppBeforeCallback\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"cbdata\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"},{\"internalType\":\"int256\",\"name\":\"appCreditUsedMore\",\"type\":\"int256\"}],\"name\":\"ctxUseCredit\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"decodeCtx\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"appCallbackLevel\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"callType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"},{\"internalType\":\"bytes4\",\"name\":\"agreementSelector\",\"type\":\"bytes4\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"appCreditGranted\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"appCreditWantedDeprecated\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"appCreditUsed\",\"type\":\"int256\"},{\"internalType\":\"address\",\"name\":\"appAddress\",\"type\":\"address\"},{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"appCreditToken\",\"type\":\"address\"}],\"internalType\":\"struct ISuperfluid.Context\",\"name\":\"context\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"operationType\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct ISuperfluid.Operation[]\",\"name\":\"operations\",\"type\":\"tuple[]\"}],\"name\":\"forwardBatchCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"agreementType\",\"type\":\"bytes32\"}],\"name\":\"getAgreementClass\",\"outputs\":[{\"internalType\":\"contract ISuperAgreement\",\"name\":\"agreementClass\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperApp\",\"name\":\"app\",\"type\":\"address\"}],\"name\":\"getAppCallbackLevel\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"appCallbackLevel\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperApp\",\"name\":\"app\",\"type\":\"address\"}],\"name\":\"getAppManifest\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isSuperApp\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isJailed\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"noopMask\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGovernance\",\"outputs\":[{\"internalType\":\"contract ISuperfluidGovernance\",\"name\":\"governance\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNow\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSuperTokenFactory\",\"outputs\":[{\"internalType\":\"contract ISuperTokenFactory\",\"name\":\"factory\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSuperTokenFactoryLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"logic\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperAgreement\",\"name\":\"agreementClass\",\"type\":\"address\"}],\"name\":\"isAgreementClassListed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"yes\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"agreementType\",\"type\":\"bytes32\"}],\"name\":\"isAgreementTypeListed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"yes\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperApp\",\"name\":\"app\",\"type\":\"address\"}],\"name\":\"isApp\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperApp\",\"name\":\"app\",\"type\":\"address\"}],\"name\":\"isAppJailed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isJail\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperApp\",\"name\":\"app\",\"type\":\"address\"},{\"internalType\":\"contract ISuperApp\",\"name\":\"targetApp\",\"type\":\"address\"}],\"name\":\"isCompositeAppAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isAppAllowed\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"isCtxValid\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"},{\"internalType\":\"contract ISuperApp\",\"name\":\"app\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"reason\",\"type\":\"uint256\"}],\"name\":\"jailApp\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"bitmap\",\"type\":\"uint256\"}],\"name\":\"mapAgreementClasses\",\"outputs\":[{\"internalType\":\"contract ISuperAgreement[]\",\"name\":\"agreementClasses\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperAgreement\",\"name\":\"agreementClassLogic\",\"type\":\"address\"}],\"name\":\"registerAgreementClass\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"configWord\",\"type\":\"uint256\"}],\"name\":\"registerApp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperApp\",\"name\":\"app\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"configWord\",\"type\":\"uint256\"}],\"name\":\"registerAppByFactory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"configWord\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"registrationKey\",\"type\":\"string\"}],\"name\":\"registerAppWithKey\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"bitmap\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"agreementType\",\"type\":\"bytes32\"}],\"name\":\"removeFromAgreementClassesBitmap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"newBitmap\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidGovernance\",\"name\":\"newGov\",\"type\":\"address\"}],\"name\":\"replaceGovernance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperAgreement\",\"name\":\"agreementClassLogic\",\"type\":\"address\"}],\"name\":\"updateAgreementClass\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperTokenFactory\",\"name\":\"newFactory\",\"type\":\"address\"}],\"name\":\"updateSuperTokenFactory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperToken\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"updateSuperTokenLogic\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Superfluid\",\"events\":{\"AgreementClassRegistered(bytes32,address)\":{\"details\":\"agreementType is the keccak256 hash of: \\\"org.superfluid-finance.agreements..\\\"\",\"params\":{\"agreementType\":\"The agreement type registered\",\"code\":\"Address of the new agreement\"}},\"AgreementClassUpdated(bytes32,address)\":{\"details\":\"agreementType is the keccak256 hash of: \\\"org.superfluid-finance.agreements..\\\"\",\"params\":{\"agreementType\":\"The agreement type updated\",\"code\":\"Address of the new agreement\"}},\"AppRegistered(address)\":{\"details\":\"App registered event\",\"params\":{\"app\":\"Address of jailed app\"}},\"GovernanceReplaced(address,address)\":{\"details\":\"Governance replaced event\",\"params\":{\"newGov\":\"Address of the new governance contract\",\"oldGov\":\"Address of the old governance contract\"}},\"Jail(address,uint256)\":{\"details\":\"Jail event for the app\",\"params\":{\"app\":\"Address of jailed app\",\"reason\":\"Reason the app is jailed (see Definitions.sol for the full list)\"}},\"SuperTokenFactoryUpdated(address)\":{\"details\":\"SuperToken factory updated event\",\"params\":{\"newFactory\":\"Address of the new factory\"}},\"SuperTokenLogicUpdated(address,address)\":{\"details\":\"SuperToken logic updated event\",\"params\":{\"code\":\"Address of the new SuperToken logic\"}}},\"kind\":\"dev\",\"methods\":{\"addToAgreementClassesBitmap(uint256,bytes32)\":{\"details\":\"agreementType is the keccak256 hash of: \\\"org.superfluid-finance.agreements..\\\"\",\"params\":{\"bitmap\":\"Agreement class bitmap\"}},\"allowCompositeApp(address)\":{\"details\":\"Whitelist the target app for app composition for the source app (msg.sender)\",\"params\":{\"targetApp\":\"The target super app address\"}},\"appCallbackPop(bytes,int256)\":{\"custom:security\":\"- Here we cannot do assertValidCtx(ctx), since we do not really save the stack in memory. - Hence there is still implicit trust that the agreement handles the callback push/pop pair correctly.\",\"details\":\"(For agreements) Pop from the current app callback stack\",\"params\":{\"appCreditUsedDelta\":\"App credit used by the app.\",\"ctx\":\"The ctx that was pushed before the callback stack.\"},\"returns\":{\"newCtx\":\" The current context of the transaction.\"}},\"appCallbackPush(bytes,address,uint256,int256,address)\":{\"details\":\"(For agreements) Create a new callback stack\",\"params\":{\"app\":\"The super app.\",\"appCreditGranted\":\"App credit granted so far.\",\"appCreditUsed\":\"App credit used so far.\",\"ctx\":\"The current ctx, it will be validated.\"},\"returns\":{\"newCtx\":\" The current context of the transaction.\"}},\"batchCall((uint32,address,bytes)[])\":{\"details\":\"Batch call function\",\"params\":{\"operations\":\"Array of batch operations\"}},\"callAgreement(address,bytes,bytes)\":{\"details\":\"Call agreement function\",\"params\":{\"agreementClass\":\"The agreement address you are calling\",\"callData\":\"The contextual call data with placeholder ctx\",\"userData\":\"Extra user data being sent to the super app callbacks\"}},\"callAppAction(address,bytes)\":{\"custom:note\":\"See \\\"Contextless Call Proxies\\\" above for more about contextual call data.\",\"details\":\"Main use case is calling app action in a batch call via the host\",\"params\":{\"callData\":\"The contextual call data\"}},\"callAppAfterCallback(address,bytes,bool,bytes)\":{\"details\":\"(For agreements) Call the app after callback\",\"params\":{\"app\":\"The super app.\",\"callData\":\"The call data sending to the super app.\",\"ctx\":\"Current ctx, it will be validated.\",\"isTermination\":\"Is it a termination callback?\"},\"returns\":{\"newCtx\":\" The current context of the transaction.\"}},\"callAppBeforeCallback(address,bytes,bool,bytes)\":{\"details\":\"(For agreements) StaticCall the app before callback\",\"params\":{\"app\":\"The super app.\",\"callData\":\"The call data sending to the super app.\",\"ctx\":\"Current ctx, it will be validated.\",\"isTermination\":\"Is it a termination callback?\"},\"returns\":{\"cbdata\":\" Data returned from the callback.\"}},\"ctxUseCredit(bytes,int256)\":{\"details\":\"(For agreements) Use app credit.\",\"params\":{\"appCreditUsedMore\":\"See app credit for more details.\",\"ctx\":\"The current ctx, it will be validated.\"},\"returns\":{\"newCtx\":\" The current context of the transaction.\"}},\"forwardBatchCall((uint32,address,bytes)[])\":{\"details\":\"Batch call function for trusted forwarders (EIP-2771)\",\"params\":{\"operations\":\"Array of batch operations\"}},\"getAgreementClass(bytes32)\":{\"details\":\"agreementType is the keccak256 hash of: \\\"org.superfluid-finance.agreements..\\\"\"},\"getAppCallbackLevel(address)\":{\"details\":\"Query app callbacklevel\",\"params\":{\"app\":\"Super app address\"}},\"getAppManifest(address)\":{\"details\":\"Get the manifest of the super app\",\"params\":{\"app\":\"Super app address\"}},\"getGovernance()\":{\"details\":\"Get the current governance address of the Superfluid host\"},\"getSuperTokenFactory()\":{\"details\":\"Get the super token factory\",\"returns\":{\"factory\":\"The factory\"}},\"getSuperTokenFactoryLogic()\":{\"details\":\"Get the super token factory logic (applicable to upgradable deployment)\",\"returns\":{\"logic\":\"The factory logic\"}},\"isAgreementClassListed(address)\":{\"details\":\"Check if the agreement class is whitelisted\"},\"isAgreementTypeListed(bytes32)\":{\"details\":\"agreementType is the keccak256 hash of: \\\"org.superfluid-finance.agreements..\\\"\"},\"isApp(address)\":{\"details\":\"Query if the app is registered\",\"params\":{\"app\":\"Super app address\"}},\"isAppJailed(address)\":{\"details\":\"Query if the app has been jailed\",\"params\":{\"app\":\"Super app address\"}},\"isCompositeAppAllowed(address,address)\":{\"details\":\"Query if source app is allowed to call the target app as downstream app\",\"params\":{\"app\":\"Super app address\",\"targetApp\":\"The target super app address\"}},\"jailApp(bytes,address,uint256)\":{\"details\":\"(For agreements) Jail the app.\",\"params\":{\"app\":\"The super app.\",\"reason\":\"Jail reason code.\"},\"returns\":{\"newCtx\":\" The current context of the transaction.\"}},\"mapAgreementClasses(uint256)\":{\"details\":\"Map list of the agreement classes using a bitmap\",\"params\":{\"bitmap\":\"Agreement class bitmap\"}},\"registerAgreementClass(address)\":{\"custom:modifiers\":\" - onlyGovernance\",\"details\":\"Register a new agreement class to the system\",\"params\":{\"agreementClassLogic\":\"Initial agreement class code\"}},\"registerApp(uint256)\":{\"custom:deprecated\":\"you should use `registerAppWithKey` or `registerAppByFactory` instead, because app registration is currently governance permissioned on mainnets.\",\"details\":\"Message sender (must be a contract) declares itself as a super app.\",\"params\":{\"configWord\":\"The super app manifest configuration, flags are defined in `SuperAppDefinitions`\"}},\"registerAppByFactory(address,uint256)\":{\"details\":\"Message sender (must be a contract) declares app as a super app\",\"params\":{\"configWord\":\"The super app manifest configuration, flags are defined in `SuperAppDefinitions`\"}},\"registerAppWithKey(uint256,string)\":{\"details\":\"Message sender declares itself as a super app.\",\"params\":{\"configWord\":\"The super app manifest configuration, flags are defined in `SuperAppDefinitions`\",\"registrationKey\":\"The registration key issued by the governance, needed to register on a mainnet.\"}},\"removeFromAgreementClassesBitmap(uint256,bytes32)\":{\"details\":\"agreementType is the keccak256 hash of: \\\"org.superfluid-finance.agreements..\\\"\",\"params\":{\"bitmap\":\"Agreement class bitmap\"}},\"replaceGovernance(address)\":{\"details\":\"Replace the current governance with a new one\"},\"updateAgreementClass(address)\":{\"custom:modifiers\":\" - onlyGovernance\",\"details\":\"Update code of an agreement class\",\"params\":{\"agreementClassLogic\":\"New code for the agreement class\"}},\"updateSuperTokenFactory(address)\":{\"details\":\"Update super token factory\",\"params\":{\"newFactory\":\"New factory logic\"}},\"updateSuperTokenLogic(address)\":{\"details\":\"Refer to ISuperTokenFactory.Upgradability for expected behaviours\"}},\"title\":\"Host interface\",\"version\":1},\"userdoc\":{\"events\":{\"AgreementClassRegistered(bytes32,address)\":{\"notice\":\"Agreement class registered event\"},\"AgreementClassUpdated(bytes32,address)\":{\"notice\":\"Agreement class updated event\"}},\"kind\":\"user\",\"methods\":{\"addToAgreementClassesBitmap(uint256,bytes32)\":{\"notice\":\"Create a new bitmask by adding a agreement class to it\"},\"callAppAction(address,bytes)\":{\"notice\":\"Call app action\"},\"getAgreementClass(bytes32)\":{\"notice\":\"Get agreement class\"},\"isAgreementTypeListed(bytes32)\":{\"notice\":\"Check if the agreement type is whitelisted\"},\"registerAppByFactory(address,uint256)\":{\"notice\":\"On mainnet deployments, only factory contracts pre-authorized by governance can use this. See https://github.com/superfluid-finance/protocol-monorepo/wiki/Super-App-White-listing-Guide\"},\"registerAppWithKey(uint256,string)\":{\"notice\":\"See https://github.com/superfluid-finance/protocol-monorepo/wiki/Super-App-White-listing-Guide On testnets or in dev environment, a placeholder (e.g. empty string) can be used. While the message sender must be the super app itself, the transaction sender (tx.origin) must be the deployer account the registration key was issued for.\"},\"removeFromAgreementClassesBitmap(uint256,bytes32)\":{\"notice\":\"Create a new bitmask by removing a agreement class from it\"},\"updateSuperTokenLogic(address)\":{\"notice\":\"Update the super token logic to the latest\"}},\"notice\":\"This is the central contract of the system where super agreement, super app and super token features are connected. The Superfluid host contract is also the entry point for the protocol users, where batch call and meta transaction are provided for UX improvements.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol\":\"ISuperfluid\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"@openzeppelin/contracts/token/ERC777/IERC777.sol\":{\"keccak256\":\"0x385a7061f1436b079d44c140dee9387d5313e94874ff9ee877dc0085c981ac3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c3fe22bb0d9527356e11f267f9187134de4d4ed1ff77468b4d73e3238697b96\",\"dweb:/ipfs/Qmc8caJctgxbzXEpxRogQMR2bnBk5U67hA7kKbUEG2PUXV\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol\":{\"keccak256\":\"0x80254971aff00fc006d70b85b7bc830bb28096789e72ff3f03aa22cc7810eb0c\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://840f9d959abfbf3919db3dca35336e360b2bbd54e677439a545c7c4f163f6d70\",\"dweb:/ipfs/QmR4CRq7dpYR4NuCSASkNrcnbSScRX8MaEvDs8L7v3xDyr\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol\":{\"keccak256\":\"0x9b4fab6dcac1337f78e04d67d8c2b48b1de8bd4bbf14b475840f9dbda7b8f21e\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://cc2f3629ad0cb46bd4f595880591ad6c9d75a82d920cb9355e462fbf8022c820\",\"dweb:/ipfs/QmXMovxK4qpWT4yffXxUVjkMNwxEfS6mtn39mLSmjaxEdW\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperApp.sol\":{\"keccak256\":\"0x6cc4b0724d977190c7441dfc3be6c6e48b43b555c3370af32ef5b6600f15f53f\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://3e89c944642772a42429f21a11017b57deb98a9198f8e4f8749f00aaee71299e\",\"dweb:/ipfs/QmaSv9GvqikcGHJ3tcwATDHSpQw6mfnHPDtcfqcZSS7LF6\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.sol\":{\"keccak256\":\"0x6860f0bf69dcc1d1ec39eefb43e0cd18b276b48ebe9efd53450e09cd2f997ab2\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://6421f80f2ff7818bd235b7bf4b911cc40edcb598507a246b4de0fa0191a9e1aa\",\"dweb:/ipfs/QmWxktXMjYhi1zt52D3JXNcxCFesXu8kQoSCJQ3j88apM3\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperTokenFactory.sol\":{\"keccak256\":\"0xe2525ef2906504e2f61775ed91bbebeea2f4e2e3fa42ce190561acf6a01187ff\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://7a9859eb432321a65cd15ca988a13776e1c31df44b4cf25f95fa04b54a8a8625\",\"dweb:/ipfs/QmQVJQoeoWemptZhbRgWJZWwMTiNtxVsc1FYmGdtdTfqcL\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol\":{\"keccak256\":\"0xab9dab941f99d0f0ef6125fb6eafde03378d7c3e94e613dd12fb7fbf594c3373\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://928c6ef915dee69058d4cfcb9f2344d4fc78d9763b47b17e5c03fbff64ba3c64\",\"dweb:/ipfs/Qmdk733ZHceatz3qbuodLCCS9TUspJJtXLoX6vWwMvrPDE\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance.sol\":{\"keccak256\":\"0x90a9259d0f0bb6b1bb6d48f051277eb75df96a9fbe684a203a3a468ad19318e2\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://9c8162a2d07ffe768920fef55292684149173afefbfba76b8fca007e55092229\",\"dweb:/ipfs/QmducLNwrzeUXEpBjUTSMu7sfmQEwVhcYXApe4brc1zQ6V\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol\":{\"keccak256\":\"0x9cad3866982902ea88df0874a563d2e4aeba5a5bcc6289c30cccf9b4099d2fb6\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://e8fd960b259331f204c7cb7dcd32b09d68f4294e3b872fad00ad467609c3ef72\",\"dweb:/ipfs/QmeZFEvsDunXQGPbXFfN5AvfKM5am1FY8Xv6e3c4tNKvgY\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo.sol\":{\"keccak256\":\"0x55be78ffb441c782f612b153d7d9049e3f0dbfd412c1f7df29c896b972b2985f\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://a223c68e38a6c9b1e363e525911bc7eda44ea517865ae53bd0d34ff858cc02ae\",\"dweb:/ipfs/QmVruGehibG6Emr2A6JHwUnhd4NzsGkE24cbGqnDpEvrKh\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.sol\":{\"keccak256\":\"0x7456cd394cc905aae7cdbd4601ce1c296c768c13c28e66efbb913cc070bad3e4\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://5a6589b428b724721ba5b4dd196c8f366a6e694ef313add093f29af64496c042\",\"dweb:/ipfs/QmSMgV6y8L6pyyzDz6kKmafVwujNWcjTqutpCBxe4uNRqg\"]}},\"version\":1}"}},"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance.sol":{"ISuperfluidGovernance":{"abi":[{"inputs":[],"name":"SF_GOV_ARRAYS_NOT_SAME_LENGTH","type":"error"},{"inputs":[],"name":"SF_GOV_INVALID_LIQUIDATION_OR_PATRICIAN_PERIOD","type":"error"},{"inputs":[],"name":"SF_GOV_MUST_BE_CONTRACT","type":"error"},{"inputs":[{"internalType":"contract ISuperfluid","name":"host","type":"address"},{"internalType":"contract ISuperToken[]","name":"tokens","type":"address[]"}],"name":"batchUpdateSuperTokenLogic","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ISuperfluid","name":"host","type":"address"},{"internalType":"contract ISuperfluidToken","name":"superToken","type":"address"},{"internalType":"bytes32","name":"key","type":"bytes32"}],"name":"clearConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ISuperfluid","name":"host","type":"address"},{"internalType":"contract ISuperfluidToken","name":"superToken","type":"address"},{"internalType":"bytes32","name":"key","type":"bytes32"}],"name":"getConfigAsAddress","outputs":[{"internalType":"address","name":"value","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ISuperfluid","name":"host","type":"address"},{"internalType":"contract ISuperfluidToken","name":"superToken","type":"address"},{"internalType":"bytes32","name":"key","type":"bytes32"}],"name":"getConfigAsUint256","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ISuperfluid","name":"host","type":"address"},{"internalType":"address","name":"agreementClass","type":"address"}],"name":"registerAgreementClass","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ISuperfluid","name":"host","type":"address"},{"internalType":"address","name":"newGov","type":"address"}],"name":"replaceGovernance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ISuperfluid","name":"host","type":"address"},{"internalType":"contract ISuperfluidToken","name":"superToken","type":"address"},{"internalType":"bytes32","name":"key","type":"bytes32"},{"internalType":"address","name":"value","type":"address"}],"name":"setConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ISuperfluid","name":"host","type":"address"},{"internalType":"contract ISuperfluidToken","name":"superToken","type":"address"},{"internalType":"bytes32","name":"key","type":"bytes32"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ISuperfluid","name":"host","type":"address"},{"internalType":"address","name":"hostNewLogic","type":"address"},{"internalType":"address[]","name":"agreementClassNewLogics","type":"address[]"},{"internalType":"address","name":"superTokenFactoryNewLogic","type":"address"}],"name":"updateContracts","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"batchUpdateSuperTokenLogic(address,address[])":"42148deb","clearConfig(address,address,bytes32)":"640b6cc9","getConfigAsAddress(address,address,bytes32)":"8369a0f1","getConfigAsUint256(address,address,bytes32)":"80f70cba","registerAgreementClass(address,address)":"cadf8f85","replaceGovernance(address,address)":"44864b25","setConfig(address,address,bytes32,address)":"78707cb8","setConfig(address,address,bytes32,uint256)":"f79a8e63","updateContracts(address,address,address[],address)":"427942a4"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"SF_GOV_ARRAYS_NOT_SAME_LENGTH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SF_GOV_INVALID_LIQUIDATION_OR_PATRICIAN_PERIOD\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SF_GOV_MUST_BE_CONTRACT\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"contract ISuperToken[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"batchUpdateSuperTokenLogic\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"superToken\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"}],\"name\":\"clearConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"superToken\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"}],\"name\":\"getConfigAsAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"superToken\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"}],\"name\":\"getConfigAsUint256\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"}],\"name\":\"registerAgreementClass\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newGov\",\"type\":\"address\"}],\"name\":\"replaceGovernance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"superToken\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"name\":\"setConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"superToken\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"setConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"hostNewLogic\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"agreementClassNewLogics\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"superTokenFactoryNewLogic\",\"type\":\"address\"}],\"name\":\"updateContracts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Superfluid\",\"kind\":\"dev\",\"methods\":{\"batchUpdateSuperTokenLogic(address,address[])\":{\"details\":\"Update supertoken logic contract to the latest that is managed by the super token factory\"},\"clearConfig(address,address,bytes32)\":{\"details\":\"Clear configuration\"},\"getConfigAsAddress(address,address,bytes32)\":{\"details\":\"Get configuration as address value\"},\"getConfigAsUint256(address,address,bytes32)\":{\"details\":\"Get configuration as uint256 value\"},\"registerAgreementClass(address,address)\":{\"details\":\"Register a new agreement class\"},\"replaceGovernance(address,address)\":{\"details\":\"Replace the current governance with a new governance\"},\"setConfig(address,address,bytes32,address)\":{\"details\":\"Set configuration as address value\"},\"setConfig(address,address,bytes32,uint256)\":{\"details\":\"Set configuration as uint256 value\"},\"updateContracts(address,address,address[],address)\":{\"custom:note\":\" - Because they might have inter-dependencies, it is good to have one single function to update them all\",\"details\":\"Update logics of the contracts\"}},\"title\":\"Superfluid governance interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance.sol\":\"ISuperfluidGovernance\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"@openzeppelin/contracts/token/ERC777/IERC777.sol\":{\"keccak256\":\"0x385a7061f1436b079d44c140dee9387d5313e94874ff9ee877dc0085c981ac3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c3fe22bb0d9527356e11f267f9187134de4d4ed1ff77468b4d73e3238697b96\",\"dweb:/ipfs/Qmc8caJctgxbzXEpxRogQMR2bnBk5U67hA7kKbUEG2PUXV\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol\":{\"keccak256\":\"0x80254971aff00fc006d70b85b7bc830bb28096789e72ff3f03aa22cc7810eb0c\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://840f9d959abfbf3919db3dca35336e360b2bbd54e677439a545c7c4f163f6d70\",\"dweb:/ipfs/QmR4CRq7dpYR4NuCSASkNrcnbSScRX8MaEvDs8L7v3xDyr\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol\":{\"keccak256\":\"0x9b4fab6dcac1337f78e04d67d8c2b48b1de8bd4bbf14b475840f9dbda7b8f21e\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://cc2f3629ad0cb46bd4f595880591ad6c9d75a82d920cb9355e462fbf8022c820\",\"dweb:/ipfs/QmXMovxK4qpWT4yffXxUVjkMNwxEfS6mtn39mLSmjaxEdW\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperApp.sol\":{\"keccak256\":\"0x6cc4b0724d977190c7441dfc3be6c6e48b43b555c3370af32ef5b6600f15f53f\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://3e89c944642772a42429f21a11017b57deb98a9198f8e4f8749f00aaee71299e\",\"dweb:/ipfs/QmaSv9GvqikcGHJ3tcwATDHSpQw6mfnHPDtcfqcZSS7LF6\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.sol\":{\"keccak256\":\"0x6860f0bf69dcc1d1ec39eefb43e0cd18b276b48ebe9efd53450e09cd2f997ab2\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://6421f80f2ff7818bd235b7bf4b911cc40edcb598507a246b4de0fa0191a9e1aa\",\"dweb:/ipfs/QmWxktXMjYhi1zt52D3JXNcxCFesXu8kQoSCJQ3j88apM3\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperTokenFactory.sol\":{\"keccak256\":\"0xe2525ef2906504e2f61775ed91bbebeea2f4e2e3fa42ce190561acf6a01187ff\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://7a9859eb432321a65cd15ca988a13776e1c31df44b4cf25f95fa04b54a8a8625\",\"dweb:/ipfs/QmQVJQoeoWemptZhbRgWJZWwMTiNtxVsc1FYmGdtdTfqcL\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol\":{\"keccak256\":\"0xab9dab941f99d0f0ef6125fb6eafde03378d7c3e94e613dd12fb7fbf594c3373\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://928c6ef915dee69058d4cfcb9f2344d4fc78d9763b47b17e5c03fbff64ba3c64\",\"dweb:/ipfs/Qmdk733ZHceatz3qbuodLCCS9TUspJJtXLoX6vWwMvrPDE\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance.sol\":{\"keccak256\":\"0x90a9259d0f0bb6b1bb6d48f051277eb75df96a9fbe684a203a3a468ad19318e2\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://9c8162a2d07ffe768920fef55292684149173afefbfba76b8fca007e55092229\",\"dweb:/ipfs/QmducLNwrzeUXEpBjUTSMu7sfmQEwVhcYXApe4brc1zQ6V\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol\":{\"keccak256\":\"0x9cad3866982902ea88df0874a563d2e4aeba5a5bcc6289c30cccf9b4099d2fb6\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://e8fd960b259331f204c7cb7dcd32b09d68f4294e3b872fad00ad467609c3ef72\",\"dweb:/ipfs/QmeZFEvsDunXQGPbXFfN5AvfKM5am1FY8Xv6e3c4tNKvgY\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo.sol\":{\"keccak256\":\"0x55be78ffb441c782f612b153d7d9049e3f0dbfd412c1f7df29c896b972b2985f\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://a223c68e38a6c9b1e363e525911bc7eda44ea517865ae53bd0d34ff858cc02ae\",\"dweb:/ipfs/QmVruGehibG6Emr2A6JHwUnhd4NzsGkE24cbGqnDpEvrKh\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.sol\":{\"keccak256\":\"0x7456cd394cc905aae7cdbd4601ce1c296c768c13c28e66efbb913cc070bad3e4\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://5a6589b428b724721ba5b4dd196c8f366a6e694ef313add093f29af64496c042\",\"dweb:/ipfs/QmSMgV6y8L6pyyzDz6kKmafVwujNWcjTqutpCBxe4uNRqg\"]}},\"version\":1}"}},"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol":{"ISuperfluidToken":{"abi":[{"inputs":[],"name":"SF_TOKEN_AGREEMENT_ALREADY_EXISTS","type":"error"},{"inputs":[],"name":"SF_TOKEN_AGREEMENT_DOES_NOT_EXIST","type":"error"},{"inputs":[],"name":"SF_TOKEN_BURN_INSUFFICIENT_BALANCE","type":"error"},{"inputs":[],"name":"SF_TOKEN_MOVE_INSUFFICIENT_BALANCE","type":"error"},{"inputs":[],"name":"SF_TOKEN_ONLY_HOST","type":"error"},{"inputs":[],"name":"SF_TOKEN_ONLY_LISTED_AGREEMENT","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"agreementClass","type":"address"},{"indexed":false,"internalType":"bytes32","name":"id","type":"bytes32"},{"indexed":false,"internalType":"bytes32[]","name":"data","type":"bytes32[]"}],"name":"AgreementCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"agreementClass","type":"address"},{"indexed":false,"internalType":"bytes32","name":"id","type":"bytes32"},{"indexed":true,"internalType":"address","name":"penaltyAccount","type":"address"},{"indexed":true,"internalType":"address","name":"rewardAccount","type":"address"},{"indexed":false,"internalType":"uint256","name":"rewardAmount","type":"uint256"}],"name":"AgreementLiquidated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"liquidatorAccount","type":"address"},{"indexed":true,"internalType":"address","name":"agreementClass","type":"address"},{"indexed":false,"internalType":"bytes32","name":"id","type":"bytes32"},{"indexed":true,"internalType":"address","name":"penaltyAccount","type":"address"},{"indexed":true,"internalType":"address","name":"bondAccount","type":"address"},{"indexed":false,"internalType":"uint256","name":"rewardAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bailoutAmount","type":"uint256"}],"name":"AgreementLiquidatedBy","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"agreementClass","type":"address"},{"indexed":false,"internalType":"bytes32","name":"id","type":"bytes32"},{"indexed":true,"internalType":"address","name":"liquidatorAccount","type":"address"},{"indexed":true,"internalType":"address","name":"targetAccount","type":"address"},{"indexed":false,"internalType":"address","name":"rewardAmountReceiver","type":"address"},{"indexed":false,"internalType":"uint256","name":"rewardAmount","type":"uint256"},{"indexed":false,"internalType":"int256","name":"targetAccountBalanceDelta","type":"int256"},{"indexed":false,"internalType":"bytes","name":"liquidationTypeData","type":"bytes"}],"name":"AgreementLiquidatedV2","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"agreementClass","type":"address"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"slotId","type":"uint256"}],"name":"AgreementStateUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"agreementClass","type":"address"},{"indexed":false,"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"AgreementTerminated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"agreementClass","type":"address"},{"indexed":false,"internalType":"bytes32","name":"id","type":"bytes32"},{"indexed":false,"internalType":"bytes32[]","name":"data","type":"bytes32[]"}],"name":"AgreementUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"bailoutAccount","type":"address"},{"indexed":false,"internalType":"uint256","name":"bailoutAmount","type":"uint256"}],"name":"Bailout","type":"event"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"bytes32[]","name":"data","type":"bytes32[]"}],"name":"createAgreement","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getAccountActiveAgreements","outputs":[{"internalType":"contract ISuperAgreement[]","name":"activeAgreements","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"agreementClass","type":"address"},{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"uint256","name":"dataLength","type":"uint256"}],"name":"getAgreementData","outputs":[{"internalType":"bytes32[]","name":"data","type":"bytes32[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"agreementClass","type":"address"},{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"slotId","type":"uint256"},{"internalType":"uint256","name":"dataLength","type":"uint256"}],"name":"getAgreementStateSlot","outputs":[{"internalType":"bytes32[]","name":"slotData","type":"bytes32[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getHost","outputs":[{"internalType":"address","name":"host","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"isAccountCritical","outputs":[{"internalType":"bool","name":"isCritical","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isAccountCriticalNow","outputs":[{"internalType":"bool","name":"isCritical","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"isAccountSolvent","outputs":[{"internalType":"bool","name":"isSolvent","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isAccountSolventNow","outputs":[{"internalType":"bool","name":"isSolvent","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"bytes","name":"liquidationTypeData","type":"bytes"},{"internalType":"address","name":"liquidatorAccount","type":"address"},{"internalType":"bool","name":"useDefaultRewardAccount","type":"bool"},{"internalType":"address","name":"targetAccount","type":"address"},{"internalType":"uint256","name":"rewardAmount","type":"uint256"},{"internalType":"int256","name":"targetAccountBalanceDelta","type":"int256"}],"name":"makeLiquidationPayoutsV2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"realtimeBalanceOf","outputs":[{"internalType":"int256","name":"availableBalance","type":"int256"},{"internalType":"uint256","name":"deposit","type":"uint256"},{"internalType":"uint256","name":"owedDeposit","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"realtimeBalanceOfNow","outputs":[{"internalType":"int256","name":"availableBalance","type":"int256"},{"internalType":"uint256","name":"deposit","type":"uint256"},{"internalType":"uint256","name":"owedDeposit","type":"uint256"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"int256","name":"delta","type":"int256"}],"name":"settleBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"uint256","name":"dataLength","type":"uint256"}],"name":"terminateAgreement","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"bytes32[]","name":"data","type":"bytes32[]"}],"name":"updateAgreementData","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"slotId","type":"uint256"},{"internalType":"bytes32[]","name":"slotData","type":"bytes32[]"}],"name":"updateAgreementStateSlot","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"createAgreement(bytes32,bytes32[])":"12a6a3f8","getAccountActiveAgreements(address)":"386fa221","getAgreementData(address,bytes32,uint256)":"6c2d9f2f","getAgreementStateSlot(address,address,uint256,uint256)":"4b61cc33","getHost()":"20bc4425","isAccountCritical(address,uint256)":"d9d078d6","isAccountCriticalNow(address)":"79359f6f","isAccountSolvent(address,uint256)":"b84cdd4a","isAccountSolventNow(address)":"bb0d196e","makeLiquidationPayoutsV2(bytes32,bytes,address,bool,address,uint256,int256)":"1863e809","realtimeBalanceOf(address,uint256)":"eb3537cc","realtimeBalanceOfNow(address)":"2ec8eec7","settleBalance(address,int256)":"cf97256d","terminateAgreement(bytes32,uint256)":"27048397","updateAgreementData(bytes32,bytes32[])":"a1b2bf8b","updateAgreementStateSlot(address,uint256,bytes32[])":"090c415e"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"SF_TOKEN_AGREEMENT_ALREADY_EXISTS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SF_TOKEN_AGREEMENT_DOES_NOT_EXIST\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SF_TOKEN_BURN_INSUFFICIENT_BALANCE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SF_TOKEN_MOVE_INSUFFICIENT_BALANCE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SF_TOKEN_ONLY_HOST\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SF_TOKEN_ONLY_LISTED_AGREEMENT\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32[]\",\"name\":\"data\",\"type\":\"bytes32[]\"}],\"name\":\"AgreementCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"penaltyAccount\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"rewardAccount\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewardAmount\",\"type\":\"uint256\"}],\"name\":\"AgreementLiquidated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"liquidatorAccount\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"penaltyAccount\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"bondAccount\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewardAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bailoutAmount\",\"type\":\"uint256\"}],\"name\":\"AgreementLiquidatedBy\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"liquidatorAccount\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"targetAccount\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"rewardAmountReceiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewardAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"targetAccountBalanceDelta\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"liquidationTypeData\",\"type\":\"bytes\"}],\"name\":\"AgreementLiquidatedV2\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slotId\",\"type\":\"uint256\"}],\"name\":\"AgreementStateUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"AgreementTerminated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32[]\",\"name\":\"data\",\"type\":\"bytes32[]\"}],\"name\":\"AgreementUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"bailoutAccount\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bailoutAmount\",\"type\":\"uint256\"}],\"name\":\"Bailout\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"data\",\"type\":\"bytes32[]\"}],\"name\":\"createAgreement\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getAccountActiveAgreements\",\"outputs\":[{\"internalType\":\"contract ISuperAgreement[]\",\"name\":\"activeAgreements\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"dataLength\",\"type\":\"uint256\"}],\"name\":\"getAgreementData\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"data\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"slotId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"dataLength\",\"type\":\"uint256\"}],\"name\":\"getAgreementStateSlot\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"slotData\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getHost\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"host\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"isAccountCritical\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isCritical\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isAccountCriticalNow\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isCritical\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"isAccountSolvent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isSolvent\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isAccountSolventNow\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isSolvent\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"liquidationTypeData\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"liquidatorAccount\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"useDefaultRewardAccount\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"targetAccount\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"rewardAmount\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"targetAccountBalanceDelta\",\"type\":\"int256\"}],\"name\":\"makeLiquidationPayoutsV2\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"realtimeBalanceOf\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"availableBalance\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"deposit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"owedDeposit\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"realtimeBalanceOfNow\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"availableBalance\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"deposit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"owedDeposit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"int256\",\"name\":\"delta\",\"type\":\"int256\"}],\"name\":\"settleBalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"dataLength\",\"type\":\"uint256\"}],\"name\":\"terminateAgreement\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"data\",\"type\":\"bytes32[]\"}],\"name\":\"updateAgreementData\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"slotId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"slotData\",\"type\":\"bytes32[]\"}],\"name\":\"updateAgreementStateSlot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Superfluid\",\"events\":{\"AgreementCreated(address,bytes32,bytes32[])\":{\"details\":\"Agreement created event\",\"params\":{\"agreementClass\":\"Contract address of the agreement\",\"data\":\"Agreement data\",\"id\":\"Agreement ID\"}},\"AgreementLiquidated(address,bytes32,address,address,uint256)\":{\"custom:deprecated\":\"Use AgreementLiquidatedV2 instead\",\"details\":\"Agreement liquidation event (DEPRECATED BY AgreementLiquidatedBy)\",\"params\":{\"agreementClass\":\"Contract address of the agreement\",\"id\":\"Agreement ID\",\"penaltyAccount\":\"Account of the agreement to be penalized\",\"rewardAccount\":\"Account that collect the reward\",\"rewardAmount\":\"Amount of liquidation reward\"}},\"AgreementLiquidatedBy(address,address,bytes32,address,address,uint256,uint256)\":{\"custom:deprecated\":\"Use AgreementLiquidatedV2 instead\",\"custom:note\":\" Reward account rule: - if bailout is equal to 0, then - the bondAccount will get the rewardAmount, - the penaltyAccount will pay for the rewardAmount. - if bailout is larger than 0, then - the liquidatorAccount will get the rewardAmouont, - the bondAccount will pay for both the rewardAmount and bailoutAmount, - the penaltyAccount will pay for the rewardAmount while get the bailoutAmount.\",\"details\":\"Agreement liquidation event (DEPRECATED BY AgreementLiquidatedV2)\",\"params\":{\"agreementClass\":\"Contract address of the agreement\",\"bailoutAmount\":\"Amount of liquidation bailouot\",\"bondAccount\":\"Account that collect the reward or bailout accounts\",\"id\":\"Agreement ID\",\"liquidatorAccount\":\"Account of the agent that performed the liquidation.\",\"penaltyAccount\":\"Account of the agreement to be penalized\",\"rewardAmount\":\"Amount of liquidation reward\"}},\"AgreementLiquidatedV2(address,bytes32,address,address,address,uint256,int256,bytes)\":{\"custom:note\":\" Reward account rule: - if the agreement is liquidated during the PIC period - the rewardAmountReceiver will get the rewardAmount (remaining deposit), regardless of the liquidatorAccount - the targetAccount will pay for the rewardAmount - if the agreement is liquidated after the PIC period AND the targetAccount is solvent - the rewardAmountReceiver will get the rewardAmount (remaining deposit) - the targetAccount will pay for the rewardAmount - if the targetAccount is insolvent - the liquidatorAccount will get the rewardAmount (single deposit) - the default reward account (governance) will pay for both the rewardAmount and bailoutAmount - the targetAccount will receive the bailoutAmount\",\"details\":\"Agreement liquidation event v2 (including agent account)\",\"params\":{\"agreementClass\":\"Contract address of the agreement\",\"id\":\"Agreement ID\",\"liquidationTypeData\":\"The encoded liquidation type data including the version (how to decode)\",\"liquidatorAccount\":\"Address of the executor of the liquidation\",\"rewardAmount\":\"The amount the reward recipient account balance should change by\",\"rewardAmountReceiver\":\"Account that collects the reward or bails out insolvent accounts\",\"targetAccount\":\"Account of the stream sender\",\"targetAccountBalanceDelta\":\"The amount the sender account balance should change by\"}},\"AgreementStateUpdated(address,address,uint256)\":{\"details\":\"Agreement account state updated event\",\"params\":{\"account\":\"Account updated\",\"agreementClass\":\"Contract address of the agreement\",\"slotId\":\"slot id of the agreement state\"}},\"AgreementTerminated(address,bytes32)\":{\"details\":\"Agreement terminated event\",\"params\":{\"agreementClass\":\"Contract address of the agreement\",\"id\":\"Agreement ID\"}},\"AgreementUpdated(address,bytes32,bytes32[])\":{\"details\":\"Agreement updated event\",\"params\":{\"agreementClass\":\"Contract address of the agreement\",\"data\":\"Agreement data\",\"id\":\"Agreement ID\"}},\"Bailout(address,uint256)\":{\"custom:deprecated\":\"Use AgreementLiquidatedV2 instead\",\"details\":\"System bailout occurred (DEPRECATED BY AgreementLiquidatedBy)\",\"params\":{\"bailoutAccount\":\"Account that bailout the penalty account\",\"bailoutAmount\":\"Amount of account bailout\"}}},\"kind\":\"dev\",\"methods\":{\"createAgreement(bytes32,bytes32[])\":{\"details\":\"Create a new agreement\",\"params\":{\"data\":\"Agreement data\",\"id\":\"Agreement ID\"}},\"getAccountActiveAgreements(address)\":{\"details\":\"An active agreement is one that has state for the account\",\"params\":{\"account\":\"Account to query\"},\"returns\":{\"activeAgreements\":\"List of accounts that have non-zero states for the account\"}},\"getAgreementData(address,bytes32,uint256)\":{\"details\":\"Get data of the agreement\",\"params\":{\"agreementClass\":\"Contract address of the agreement\",\"id\":\"Agreement ID\"},\"returns\":{\"data\":\"Data of the agreement\"}},\"getAgreementStateSlot(address,address,uint256,uint256)\":{\"details\":\"Get data of the slot of the state of an agreement\",\"params\":{\"account\":\"Account to query\",\"agreementClass\":\"Contract address of the agreement\",\"dataLength\":\"length of the state data\",\"slotId\":\"slot id of the state\"}},\"getHost()\":{\"details\":\"Get superfluid host contract address\"},\"isAccountCritical(address,uint256)\":{\"details\":\"A critical account is when availableBalance < 0\",\"params\":{\"account\":\"The account to check\",\"timestamp\":\"The time we'd like to check if the account is critical (should use future)\"},\"returns\":{\"isCritical\":\"Whether the account is critical\"}},\"isAccountCriticalNow(address)\":{\"details\":\"A critical account is when availableBalance < 0\",\"params\":{\"account\":\"The account to check\"},\"returns\":{\"isCritical\":\"Whether the account is critical\"}},\"isAccountSolvent(address,uint256)\":{\"details\":\"An account is insolvent when the sum of deposits for a token can't cover the negative availableBalance\",\"params\":{\"account\":\"The account to check\",\"timestamp\":\"The time we'd like to check if the account is solvent (should use future)\"},\"returns\":{\"isSolvent\":\"True if the account is solvent, false otherwise\"}},\"isAccountSolventNow(address)\":{\"details\":\"An account is insolvent when the sum of deposits for a token can't cover the negative availableBalance\",\"params\":{\"account\":\"The account to check\"},\"returns\":{\"isSolvent\":\"True if the account is solvent, false otherwise\"}},\"makeLiquidationPayoutsV2(bytes32,bytes,address,bool,address,uint256,int256)\":{\"custom:modifiers\":\" - onlyAgreement\",\"custom:note\":\" - If a bailout is required (bailoutAmount > 0) - the actual reward (single deposit) goes to the executor, - while the reward account becomes the bailout account - total bailout include: bailout amount + reward amount - the targetAccount will be bailed out - If a bailout is not required - the targetAccount will pay the rewardAmount - the liquidator (reward account in PIC period) will receive the rewardAmount\",\"details\":\"Make liquidation payouts (v2)\",\"params\":{\"id\":\"Agreement ID\",\"liquidationTypeData\":\"Data regarding the version of the liquidation schema and the type\",\"liquidatorAccount\":\"Address of the executor of the liquidation\",\"rewardAmount\":\"The amount the rewarded account will receive\",\"targetAccount\":\"Account to be liquidated\",\"targetAccountBalanceDelta\":\"The delta amount the target account balance should change by\",\"useDefaultRewardAccount\":\"Whether or not the default reward account receives the rewardAmount\"}},\"realtimeBalanceOf(address,uint256)\":{\"details\":\"Calculate the real balance of a user, taking in consideration all agreements of the account\",\"params\":{\"account\":\"for the query\",\"timestamp\":\"Time of balance\"},\"returns\":{\"availableBalance\":\"Real-time balance\",\"deposit\":\"Account deposit\",\"owedDeposit\":\"Account owed Deposit\"}},\"realtimeBalanceOfNow(address)\":{\"details\":\"realtimeBalanceOf with timestamp equals to block timestamp\",\"params\":{\"account\":\"for the query\"},\"returns\":{\"availableBalance\":\"Real-time balance\",\"deposit\":\"Account deposit\",\"owedDeposit\":\"Account owed Deposit\"}},\"settleBalance(address,int256)\":{\"custom:modifiers\":\" - onlyAgreement\",\"details\":\"The agreement needs to make sure that the balance delta is balanced afterwards\",\"params\":{\"account\":\"Account to query.\",\"delta\":\"Amount of balance delta to be settled\"}},\"terminateAgreement(bytes32,uint256)\":{\"details\":\"Close the agreement\",\"params\":{\"id\":\"Agreement ID\"}},\"updateAgreementData(bytes32,bytes32[])\":{\"details\":\"Create a new agreement\",\"params\":{\"data\":\"Agreement data\",\"id\":\"Agreement ID\"}},\"updateAgreementStateSlot(address,uint256,bytes32[])\":{\"custom:note\":\" - To clear the storage out, provide zero-ed array of intended length\",\"details\":\"Update agreement state slot\",\"params\":{\"account\":\"Account to be updated\"}}},\"title\":\"Superfluid token interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getAccountActiveAgreements(address)\":{\"notice\":\"Get a list of agreements that is active for the account\"},\"isAccountCritical(address,uint256)\":{\"notice\":\"Check if account is critical\"},\"isAccountCriticalNow(address)\":{\"notice\":\"Check if account is critical now (current host.getNow())\"},\"isAccountSolvent(address,uint256)\":{\"notice\":\"Check if account is solvent\"},\"isAccountSolventNow(address)\":{\"notice\":\"Check if account is solvent now\"},\"realtimeBalanceOfNow(address)\":{\"notice\":\"Calculate the realtime balance given the current host.getNow() value\"},\"settleBalance(address,int256)\":{\"notice\":\"Settle balance from an account by the agreement\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol\":\"ISuperfluidToken\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol\":{\"keccak256\":\"0x9b4fab6dcac1337f78e04d67d8c2b48b1de8bd4bbf14b475840f9dbda7b8f21e\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://cc2f3629ad0cb46bd4f595880591ad6c9d75a82d920cb9355e462fbf8022c820\",\"dweb:/ipfs/QmXMovxK4qpWT4yffXxUVjkMNwxEfS6mtn39mLSmjaxEdW\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol\":{\"keccak256\":\"0x9cad3866982902ea88df0874a563d2e4aeba5a5bcc6289c30cccf9b4099d2fb6\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://e8fd960b259331f204c7cb7dcd32b09d68f4294e3b872fad00ad467609c3ef72\",\"dweb:/ipfs/QmeZFEvsDunXQGPbXFfN5AvfKM5am1FY8Xv6e3c4tNKvgY\"]}},\"version\":1}"}},"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo.sol":{"ERC20WithTokenInfo":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Superfluid\",\"details\":\"Using abstract contract instead of interfaces because old solidity does not support interface inheriting other interfaces solhint-disable-next-line no-empty-blocks\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"title\":\"ERC20 token with token info interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo.sol\":\"ERC20WithTokenInfo\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo.sol\":{\"keccak256\":\"0x55be78ffb441c782f612b153d7d9049e3f0dbfd412c1f7df29c896b972b2985f\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://a223c68e38a6c9b1e363e525911bc7eda44ea517865ae53bd0d34ff858cc02ae\",\"dweb:/ipfs/QmVruGehibG6Emr2A6JHwUnhd4NzsGkE24cbGqnDpEvrKh\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.sol\":{\"keccak256\":\"0x7456cd394cc905aae7cdbd4601ce1c296c768c13c28e66efbb913cc070bad3e4\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://5a6589b428b724721ba5b4dd196c8f366a6e694ef313add093f29af64496c042\",\"dweb:/ipfs/QmSMgV6y8L6pyyzDz6kKmafVwujNWcjTqutpCBxe4uNRqg\"]}},\"version\":1}"}},"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.sol":{"TokenInfo":{"abi":[{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"decimals()":"313ce567","name()":"06fdde03","symbol()":"95d89b41"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Superfluid\",\"details\":\"ERC20 standard interface does not specify these functions, but often the token implementations have them.\",\"kind\":\"dev\",\"methods\":{\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"}},\"title\":\"ERC20 token info interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.sol\":\"TokenInfo\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.sol\":{\"keccak256\":\"0x7456cd394cc905aae7cdbd4601ce1c296c768c13c28e66efbb913cc070bad3e4\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://5a6589b428b724721ba5b4dd196c8f366a6e694ef313add093f29af64496c042\",\"dweb:/ipfs/QmSMgV6y8L6pyyzDz6kKmafVwujNWcjTqutpCBxe4uNRqg\"]}},\"version\":1}"}},"contracts/archives/OldFlow.sol":{"OldFlow":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea2646970667358221220b19252acdce364dc853c8848bd342980d83f67b80b37f9ee69d3fcb33d92bad364736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3F DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB1 SWAP3 MSTORE 0xAC 0xDC 0xE3 PUSH5 0xDC853C8848 0xBD CALLVALUE 0x29 DUP1 0xD8 EXTCODEHASH PUSH8 0xB80B37F9EE69D3FC 0xB3 RETURNDATASIZE SWAP3 0xBA 0xD3 PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"652:12043:20:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"6080604052600080fdfea2646970667358221220b19252acdce364dc853c8848bd342980d83f67b80b37f9ee69d3fcb33d92bad364736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB1 SWAP3 MSTORE 0xAC 0xDC 0xE3 PUSH5 0xDC853C8848 0xBD CALLVALUE 0x29 DUP1 0xD8 EXTCODEHASH PUSH8 0xB80B37F9EE69D3FC 0xB3 RETURNDATASIZE SWAP3 0xBA 0xD3 PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"652:12043:20:-:0;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/archives/OldFlow.sol\":\"OldFlow\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol\":{\"keccak256\":\"0xf41ca991f30855bf80ffd11e9347856a517b977f0a6c2d52e6421a99b7840329\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2717fd2bdac99daa960a6de500754ea1b932093c946388c381da48658234b95\",\"dweb:/ipfs/QmP6QVMn6UeA3ByahyJbYQr5M6coHKBKsf3ySZSfbyA8R7\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x9b72f93be69ca894d8492c244259615c4a742afc8d63720dbc8bb81087d9b238\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5a7b96e511be78d5cdf635c784e6ab8cdd38625bb8cafb8a80914a1c89cf0f6\",\"dweb:/ipfs/QmVzTCwJxQAkjRQHboT5QrvsVJGWQHgfEjeTbvyxoKBrds\"]},\"@openzeppelin/contracts/token/ERC777/IERC777.sol\":{\"keccak256\":\"0x385a7061f1436b079d44c140dee9387d5313e94874ff9ee877dc0085c981ac3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c3fe22bb0d9527356e11f267f9187134de4d4ed1ff77468b4d73e3238697b96\",\"dweb:/ipfs/Qmc8caJctgxbzXEpxRogQMR2bnBk5U67hA7kKbUEG2PUXV\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xf96f969e24029d43d0df89e59d365f277021dac62b48e1c1e3ebe0acdd7f1ca1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec772b45a624be516f1c81970caa8a2e144301e9d0921cbc1a2789fef39a1269\",\"dweb:/ipfs/QmNyjwxCrGhQMyzLD93oUobJXVe9ceJvRvfXwbEtuxPiEj\"]},\"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol\":{\"keccak256\":\"0x1b588d76f3addfeb2f368ec534fbd8da6120c8ba3c08e95f410a9cc2204faf79\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://74e51ec8a8d50ad9c6c047a2548de4aac9e6da23f65b2d8a74e89665d26c527f\",\"dweb:/ipfs/QmS26ukRAwj9ZSHmRSbjmpmdA6EaZHAK6JvE38LkqjRYaP\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol\":{\"keccak256\":\"0xb68e122faba133422f4cbdd7e15fc913073dfa2c3682c18d6449b121e67d1104\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://da0611fda964b8356d38cb006133865b58adc6e11d3817e27daf20b02ad6880f\",\"dweb:/ipfs/QmeLbak3yiUfkGvxEZzmS4ndDwDfxtZNeKiA86G3WxzjyD\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IInstantDistributionAgreementV1.sol\":{\"keccak256\":\"0x7b088dfa11a00d2b1e6e0938978364a6918015b052a4bf3ffcc67db9b3182370\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://2437f6ea2d8c8de7613aef5de4dcf3530c2beb801f7d5f3e21ac617e73f8882b\",\"dweb:/ipfs/QmVBtqXYV25fQZ9P6xokBzgFnHCBthJSZdFo9quBY169fd\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol\":{\"keccak256\":\"0x80254971aff00fc006d70b85b7bc830bb28096789e72ff3f03aa22cc7810eb0c\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://840f9d959abfbf3919db3dca35336e360b2bbd54e677439a545c7c4f163f6d70\",\"dweb:/ipfs/QmR4CRq7dpYR4NuCSASkNrcnbSScRX8MaEvDs8L7v3xDyr\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol\":{\"keccak256\":\"0x9b4fab6dcac1337f78e04d67d8c2b48b1de8bd4bbf14b475840f9dbda7b8f21e\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://cc2f3629ad0cb46bd4f595880591ad6c9d75a82d920cb9355e462fbf8022c820\",\"dweb:/ipfs/QmXMovxK4qpWT4yffXxUVjkMNwxEfS6mtn39mLSmjaxEdW\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperApp.sol\":{\"keccak256\":\"0x6cc4b0724d977190c7441dfc3be6c6e48b43b555c3370af32ef5b6600f15f53f\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://3e89c944642772a42429f21a11017b57deb98a9198f8e4f8749f00aaee71299e\",\"dweb:/ipfs/QmaSv9GvqikcGHJ3tcwATDHSpQw6mfnHPDtcfqcZSS7LF6\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.sol\":{\"keccak256\":\"0x6860f0bf69dcc1d1ec39eefb43e0cd18b276b48ebe9efd53450e09cd2f997ab2\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://6421f80f2ff7818bd235b7bf4b911cc40edcb598507a246b4de0fa0191a9e1aa\",\"dweb:/ipfs/QmWxktXMjYhi1zt52D3JXNcxCFesXu8kQoSCJQ3j88apM3\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperTokenFactory.sol\":{\"keccak256\":\"0xe2525ef2906504e2f61775ed91bbebeea2f4e2e3fa42ce190561acf6a01187ff\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://7a9859eb432321a65cd15ca988a13776e1c31df44b4cf25f95fa04b54a8a8625\",\"dweb:/ipfs/QmQVJQoeoWemptZhbRgWJZWwMTiNtxVsc1FYmGdtdTfqcL\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol\":{\"keccak256\":\"0xab9dab941f99d0f0ef6125fb6eafde03378d7c3e94e613dd12fb7fbf594c3373\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://928c6ef915dee69058d4cfcb9f2344d4fc78d9763b47b17e5c03fbff64ba3c64\",\"dweb:/ipfs/Qmdk733ZHceatz3qbuodLCCS9TUspJJtXLoX6vWwMvrPDE\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance.sol\":{\"keccak256\":\"0x90a9259d0f0bb6b1bb6d48f051277eb75df96a9fbe684a203a3a468ad19318e2\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://9c8162a2d07ffe768920fef55292684149173afefbfba76b8fca007e55092229\",\"dweb:/ipfs/QmducLNwrzeUXEpBjUTSMu7sfmQEwVhcYXApe4brc1zQ6V\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol\":{\"keccak256\":\"0x9cad3866982902ea88df0874a563d2e4aeba5a5bcc6289c30cccf9b4099d2fb6\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://e8fd960b259331f204c7cb7dcd32b09d68f4294e3b872fad00ad467609c3ef72\",\"dweb:/ipfs/QmeZFEvsDunXQGPbXFfN5AvfKM5am1FY8Xv6e3c4tNKvgY\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo.sol\":{\"keccak256\":\"0x55be78ffb441c782f612b153d7d9049e3f0dbfd412c1f7df29c896b972b2985f\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://a223c68e38a6c9b1e363e525911bc7eda44ea517865ae53bd0d34ff858cc02ae\",\"dweb:/ipfs/QmVruGehibG6Emr2A6JHwUnhd4NzsGkE24cbGqnDpEvrKh\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.sol\":{\"keccak256\":\"0x7456cd394cc905aae7cdbd4601ce1c296c768c13c28e66efbb913cc070bad3e4\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://5a6589b428b724721ba5b4dd196c8f366a6e694ef313add093f29af64496c042\",\"dweb:/ipfs/QmSMgV6y8L6pyyzDz6kKmafVwujNWcjTqutpCBxe4uNRqg\"]},\"contracts/archives/OldFlow.sol\":{\"keccak256\":\"0xc2a20725569fa7eb3ae7e0ddc2ab081561110e946d754b012c17c68eade0f434\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://a6c58496a95908303a313563a8ea0fd604dd176758472c09196c97917064df94\",\"dweb:/ipfs/QmZDaJdsnu59YQx9rrbX1oyzTT2A1ATjtCxkM25xsuqPHV\"]},\"contracts/archives/OldLibFlow.sol\":{\"keccak256\":\"0x41a38a3595da8ca29d214887535559720c2236a54afd431e99973d53a9a41445\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://9421bf4f3329ebbcc33b2b8e551929953fe366d4240a321e67973ed175f5ebdb\",\"dweb:/ipfs/QmYb9dsEqRe4ELvu9ZaQrq5j5GPFFqGWDav7kAe14vVf22\"]},\"contracts/libraries/core/LibAutomate.sol\":{\"keccak256\":\"0xdca80cbbdf57dfc0f76c3719a54d2da92c09e46c3844b1011d9742a16ed2eb93\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://d5b967a7f5fa571c8154fa358725e9b5cff19b6e3847ff00e0ec210c9ce7a97b\",\"dweb:/ipfs/Qma7vn262Je4WamND9fytLSFaM4tw7NcGs5pYE1Lc3iB5a\"]},\"contracts/libraries/core/LibControl.sol\":{\"keccak256\":\"0x791dd1dc0c61948e1b1a46d190f02a041abdf6e2db26f1b436b06d8116381103\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://ec9343651044d62055789d04d464545afed31f82268dfd17703763a54441e0ec\",\"dweb:/ipfs/QmWKFYUATgubBYLZCRghkenZbjJHQwdQ8ymZVK5xBFm2QJ\"]},\"contracts/libraries/core/LibFlow.sol\":{\"keccak256\":\"0xf07903d54504fd374edbd492a084b92f9b9bd6e39846ecfcb743d9ce3031e2a7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://94b205c755a9c96ec4d8f3631cf24cb255d28b3abc65c7b2580f50a0f3c23f1c\",\"dweb:/ipfs/QmVsrQ3WzkQ9PvckGaBhd2ZDMV56wsPPZcRCGi5Qv9UXmc\"]},\"contracts/libraries/core/LibSession.sol\":{\"keccak256\":\"0x5dc6cfbe8840f7d1aa3c3920c1b7c420f27f7d7c785f4ddcb0b48072aa748648\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1094bf42c4cd9d75155a03b601321fa4d0095db76fb6c0d551cc38de8cd72031\",\"dweb:/ipfs/QmNhuWZFMJvuYUNsEzBkSnZp4hrjpR32VHMkWMTon1Q31u\"]},\"contracts/libraries/utils/IterableMappingBPS.sol\":{\"keccak256\":\"0xb6ab47a53267822918fdd13e4df79bfc1e8b2bbf921c80bbc4ad2e706e3539ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://092d19ac7ce0d7ada8fbb01d3af6822d6d8260fe8b8248e54b906a9edf381dd2\",\"dweb:/ipfs/QmZ8LZ72a2sSNfwm4Fpz54ZHVcjTe1dDy4ZrBhbNztZ1Bg\"]},\"contracts/services/gelato/Types.sol\":{\"keccak256\":\"0xcb8ce40dd420fe9d1fc258beba179e7c43560616dfd045d254a15fa75e6043e8\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://27599e8fa821421f99c2ae56716b118c4f47201d20c8475f6554395a60fc00a5\",\"dweb:/ipfs/QmS7h9jcSSZTM1icDDcFjdNgK3cFJWXFEXoJBpjfjn2a89\"]}},\"version\":1}"}},"contracts/archives/OldLibFlow.sol":{"OldLibFlow":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122075f27bd66156c1d7f362cb6eba8d581ed219d767ec19871c06f16e06636178bf64736f6c63430008120033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH22 0xF27BD66156C1D7F362CB6EBA8D581ED219D767EC1987 SHR MOD CALL PUSH15 0x6636178BF64736F6C634300081200 CALLER ","sourceMap":"633:15605:21:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122075f27bd66156c1d7f362cb6eba8d581ed219d767ec19871c06f16e06636178bf64736f6c63430008120033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH22 0xF27BD66156C1D7F362CB6EBA8D581ED219D767EC1987 SHR MOD CALL PUSH15 0x6636178BF64736F6C634300081200 CALLER ","sourceMap":"633:15605:21:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/archives/OldLibFlow.sol\":\"OldLibFlow\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"@openzeppelin/contracts/token/ERC777/IERC777.sol\":{\"keccak256\":\"0x385a7061f1436b079d44c140dee9387d5313e94874ff9ee877dc0085c981ac3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c3fe22bb0d9527356e11f267f9187134de4d4ed1ff77468b4d73e3238697b96\",\"dweb:/ipfs/Qmc8caJctgxbzXEpxRogQMR2bnBk5U67hA7kKbUEG2PUXV\"]},\"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol\":{\"keccak256\":\"0x1b588d76f3addfeb2f368ec534fbd8da6120c8ba3c08e95f410a9cc2204faf79\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://74e51ec8a8d50ad9c6c047a2548de4aac9e6da23f65b2d8a74e89665d26c527f\",\"dweb:/ipfs/QmS26ukRAwj9ZSHmRSbjmpmdA6EaZHAK6JvE38LkqjRYaP\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol\":{\"keccak256\":\"0xb68e122faba133422f4cbdd7e15fc913073dfa2c3682c18d6449b121e67d1104\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://da0611fda964b8356d38cb006133865b58adc6e11d3817e27daf20b02ad6880f\",\"dweb:/ipfs/QmeLbak3yiUfkGvxEZzmS4ndDwDfxtZNeKiA86G3WxzjyD\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IInstantDistributionAgreementV1.sol\":{\"keccak256\":\"0x7b088dfa11a00d2b1e6e0938978364a6918015b052a4bf3ffcc67db9b3182370\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://2437f6ea2d8c8de7613aef5de4dcf3530c2beb801f7d5f3e21ac617e73f8882b\",\"dweb:/ipfs/QmVBtqXYV25fQZ9P6xokBzgFnHCBthJSZdFo9quBY169fd\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol\":{\"keccak256\":\"0x80254971aff00fc006d70b85b7bc830bb28096789e72ff3f03aa22cc7810eb0c\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://840f9d959abfbf3919db3dca35336e360b2bbd54e677439a545c7c4f163f6d70\",\"dweb:/ipfs/QmR4CRq7dpYR4NuCSASkNrcnbSScRX8MaEvDs8L7v3xDyr\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol\":{\"keccak256\":\"0x9b4fab6dcac1337f78e04d67d8c2b48b1de8bd4bbf14b475840f9dbda7b8f21e\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://cc2f3629ad0cb46bd4f595880591ad6c9d75a82d920cb9355e462fbf8022c820\",\"dweb:/ipfs/QmXMovxK4qpWT4yffXxUVjkMNwxEfS6mtn39mLSmjaxEdW\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperApp.sol\":{\"keccak256\":\"0x6cc4b0724d977190c7441dfc3be6c6e48b43b555c3370af32ef5b6600f15f53f\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://3e89c944642772a42429f21a11017b57deb98a9198f8e4f8749f00aaee71299e\",\"dweb:/ipfs/QmaSv9GvqikcGHJ3tcwATDHSpQw6mfnHPDtcfqcZSS7LF6\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.sol\":{\"keccak256\":\"0x6860f0bf69dcc1d1ec39eefb43e0cd18b276b48ebe9efd53450e09cd2f997ab2\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://6421f80f2ff7818bd235b7bf4b911cc40edcb598507a246b4de0fa0191a9e1aa\",\"dweb:/ipfs/QmWxktXMjYhi1zt52D3JXNcxCFesXu8kQoSCJQ3j88apM3\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperTokenFactory.sol\":{\"keccak256\":\"0xe2525ef2906504e2f61775ed91bbebeea2f4e2e3fa42ce190561acf6a01187ff\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://7a9859eb432321a65cd15ca988a13776e1c31df44b4cf25f95fa04b54a8a8625\",\"dweb:/ipfs/QmQVJQoeoWemptZhbRgWJZWwMTiNtxVsc1FYmGdtdTfqcL\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol\":{\"keccak256\":\"0xab9dab941f99d0f0ef6125fb6eafde03378d7c3e94e613dd12fb7fbf594c3373\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://928c6ef915dee69058d4cfcb9f2344d4fc78d9763b47b17e5c03fbff64ba3c64\",\"dweb:/ipfs/Qmdk733ZHceatz3qbuodLCCS9TUspJJtXLoX6vWwMvrPDE\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance.sol\":{\"keccak256\":\"0x90a9259d0f0bb6b1bb6d48f051277eb75df96a9fbe684a203a3a468ad19318e2\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://9c8162a2d07ffe768920fef55292684149173afefbfba76b8fca007e55092229\",\"dweb:/ipfs/QmducLNwrzeUXEpBjUTSMu7sfmQEwVhcYXApe4brc1zQ6V\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol\":{\"keccak256\":\"0x9cad3866982902ea88df0874a563d2e4aeba5a5bcc6289c30cccf9b4099d2fb6\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://e8fd960b259331f204c7cb7dcd32b09d68f4294e3b872fad00ad467609c3ef72\",\"dweb:/ipfs/QmeZFEvsDunXQGPbXFfN5AvfKM5am1FY8Xv6e3c4tNKvgY\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo.sol\":{\"keccak256\":\"0x55be78ffb441c782f612b153d7d9049e3f0dbfd412c1f7df29c896b972b2985f\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://a223c68e38a6c9b1e363e525911bc7eda44ea517865ae53bd0d34ff858cc02ae\",\"dweb:/ipfs/QmVruGehibG6Emr2A6JHwUnhd4NzsGkE24cbGqnDpEvrKh\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.sol\":{\"keccak256\":\"0x7456cd394cc905aae7cdbd4601ce1c296c768c13c28e66efbb913cc070bad3e4\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://5a6589b428b724721ba5b4dd196c8f366a6e694ef313add093f29af64496c042\",\"dweb:/ipfs/QmSMgV6y8L6pyyzDz6kKmafVwujNWcjTqutpCBxe4uNRqg\"]},\"contracts/archives/OldLibFlow.sol\":{\"keccak256\":\"0x41a38a3595da8ca29d214887535559720c2236a54afd431e99973d53a9a41445\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://9421bf4f3329ebbcc33b2b8e551929953fe366d4240a321e67973ed175f5ebdb\",\"dweb:/ipfs/QmYb9dsEqRe4ELvu9ZaQrq5j5GPFFqGWDav7kAe14vVf22\"]},\"contracts/libraries/core/LibControl.sol\":{\"keccak256\":\"0x791dd1dc0c61948e1b1a46d190f02a041abdf6e2db26f1b436b06d8116381103\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://ec9343651044d62055789d04d464545afed31f82268dfd17703763a54441e0ec\",\"dweb:/ipfs/QmWKFYUATgubBYLZCRghkenZbjJHQwdQ8ymZVK5xBFm2QJ\"]},\"contracts/libraries/core/LibFlow.sol\":{\"keccak256\":\"0xf07903d54504fd374edbd492a084b92f9b9bd6e39846ecfcb743d9ce3031e2a7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://94b205c755a9c96ec4d8f3631cf24cb255d28b3abc65c7b2580f50a0f3c23f1c\",\"dweb:/ipfs/QmVsrQ3WzkQ9PvckGaBhd2ZDMV56wsPPZcRCGi5Qv9UXmc\"]},\"contracts/libraries/core/LibSession.sol\":{\"keccak256\":\"0x5dc6cfbe8840f7d1aa3c3920c1b7c420f27f7d7c785f4ddcb0b48072aa748648\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1094bf42c4cd9d75155a03b601321fa4d0095db76fb6c0d551cc38de8cd72031\",\"dweb:/ipfs/QmNhuWZFMJvuYUNsEzBkSnZp4hrjpR32VHMkWMTon1Q31u\"]},\"contracts/libraries/utils/IterableMappingBPS.sol\":{\"keccak256\":\"0xb6ab47a53267822918fdd13e4df79bfc1e8b2bbf921c80bbc4ad2e706e3539ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://092d19ac7ce0d7ada8fbb01d3af6822d6d8260fe8b8248e54b906a9edf381dd2\",\"dweb:/ipfs/QmZ8LZ72a2sSNfwm4Fpz54ZHVcjTe1dDy4ZrBhbNztZ1Bg\"]}},\"version\":1}"}},"contracts/facets/core/Control.sol":{"Control":{"abi":[{"inputs":[],"name":"ArrayLengthNotMatch","type":"error"},{"inputs":[],"name":"ContractError","type":"error"},{"inputs":[],"name":"InsufficientAssets","type":"error"},{"inputs":[],"name":"InsufficientFeeBalance","type":"error"},{"inputs":[],"name":"InvalidBasisPoints","type":"error"},{"inputs":[],"name":"InvalidFlowRateBounds","type":"error"},{"inputs":[],"name":"InvalidSuperToken","type":"error"},{"inputs":[],"name":"ZeroValue","type":"error"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"}],"name":"addSuperToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"clearBPS","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"depositAsset","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"}],"name":"getAssetTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"address","name":"_superToken","type":"address"}],"name":"getAssetUser","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tag","type":"uint256"}],"name":"getBPSData","outputs":[{"internalType":"uint16","name":"","type":"uint16"},{"internalType":"uint96","name":"","type":"uint96"},{"internalType":"uint96","name":"","type":"uint96"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBPSSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"},{"internalType":"uint256","name":"_nonce","type":"uint256"}],"name":"getControlData","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"}],"name":"getFeeBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMinimumEndDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMinimumLifespan","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"},{"internalType":"int96","name":"_newFlowRate","type":"int96"}],"name":"getNewBufferedAppBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"}],"name":"getNewControlNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getSBPS","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSTBufferDurationInSecond","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isBPSEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"},{"internalType":"int96","name":"_newFlowRate","type":"int96"}],"name":"isNewFlowRateAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"}],"name":"isSuperTokensSupported","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"address","name":"_superToken","type":"address"}],"name":"realizeFeeBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"}],"name":"removeSuperToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16[]","name":"_bpss","type":"uint16[]"},{"internalType":"uint96[]","name":"_flowRateLowerBounds","type":"uint96[]"},{"internalType":"uint96[]","name":"_flowRateUpperBounds","type":"uint96[]"},{"internalType":"uint256[]","name":"_tags","type":"uint256[]"}],"name":"setBPS","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_duration","type":"uint256"}],"name":"setMinimumEndDuration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_duration","type":"uint256"}],"name":"setMinimumLifespan","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_bps","type":"uint16"},{"internalType":"address","name":"_user","type":"address"}],"name":"setSBPS","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_duration","type":"uint256"}],"name":"setSTBufferAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"toggleBPS","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawAsset","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawFeeBalance","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50613d17806100206000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c80637f69bcaf116100f9578063be83574711610097578063ca70e1d511610071578063ca70e1d51461051a578063cb857c8014610538578063d99d3b6914610554578063ebaae66114610570576101c4565b8063be8357471461048a578063c467cddc146104ba578063c78f6803146104ea576101c4565b8063a8771ab9116100d3578063a8771ab9146103f0578063acff47441461040e578063adefe35e1461043e578063b24190831461045a576101c4565b80637f69bcaf1461038657806383807889146103b6578063a86c8c7c146103d2576101c4565b80634ee43e46116101665780636ab1c734116101405780636ab1c73414610322578063703ab1b714610354578063795e34251461035e5780637ea195ad14610368576101c4565b80634ee43e46146102b8578063578dc59a146102e85780636812a17314610304576101c4565b8063245b6c93116101a2578063245b6c931461024857806338e4f0641461026457806346a5d04314610280578063487eb9391461029c576101c4565b80630b72660d146101c957806322c3a21f146101fc5780632357f2cf14610218575b600080fd5b6101e360048036038101906101de9190612d16565b61058c565b6040516101f39493929190612d74565b60405180910390f35b61021660048036038101906102119190612db9565b6105ad565b005b610232600480360381019061022d9190612db9565b6105e6565b60405161023f9190612e03565b60405180910390f35b610262600480360381019061025d9190612e1e565b6105f8565b005b61027e60048036038101906102799190612d16565b61063a565b005b61029a60048036038101906102959190612d16565b610648565b005b6102b660048036038101906102b19190612e1e565b61065f565b005b6102d260048036038101906102cd9190612e84565b6106a1565b6040516102df9190612ec4565b60405180910390f35b61030260048036038101906102fd9190612e1e565b6106b5565b005b61030c6106f7565b6040516103199190612ec4565b60405180910390f35b61033c60048036038101906103379190612e1e565b610706565b60405161034b93929190612f06565b60405180910390f35b61035c610721565b005b610366610758565b005b61037061078f565b60405161037d9190612ec4565b60405180910390f35b6103a0600480360381019061039b9190612db9565b61079e565b6040516103ad9190612ec4565b60405180910390f35b6103d060048036038101906103cb9190612db9565b6107b0565b005b6103da6107e9565b6040516103e79190612f58565b60405180910390f35b6103f86107f8565b6040516104059190612ec4565b60405180910390f35b61042860048036038101906104239190612db9565b610807565b6040516104359190612f58565b60405180910390f35b61045860048036038101906104539190612f73565b610819565b005b610474600480360381019061046f9190612db9565b610827565b6040516104819190612ec4565b60405180910390f35b6104a4600480360381019061049f9190612fb3565b610839565b6040516104b19190612ec4565b60405180910390f35b6104d460048036038101906104cf9190612e84565b61084d565b6040516104e19190612f58565b60405180910390f35b61050460048036038101906104ff9190612db9565b610861565b6040516105119190612ec4565b60405180910390f35b610522610873565b60405161052f9190612ec4565b60405180910390f35b610552600480360381019061054d919061332a565b610882565b005b61056e60048036038101906105699190613401565b610a4b565b005b61058a60048036038101906105859190612d16565b610a86565b005b60008060008061059c8686610ac1565b935093509350935092959194509250565b6105da6040516020016105bf9061349e565b60405160208183030381529060405280519060200120610c84565b6105e381610c90565b50565b60006105f182610cf4565b9050919050565b61062560405160200161060a9061349e565b60405160208183030381529060405280519060200120610c84565b61062e81610d54565b61063781610d91565b50565b6106448282610da4565b5050565b61065182610fe1565b61065b8282611023565b5050565b61068c6040516020016106719061349e565b60405160208183030381529060405280519060200120610c84565b61069581610d54565b61069e816111a3565b50565b60006106ad83836111b6565b905092915050565b6106e26040516020016106c79061349e565b60405160208183030381529060405280519060200120610c84565b6106eb81610d54565b6106f48161125c565b50565b600061070161126f565b905090565b600080600061071484611282565b9250925092509193909250565b61074e6040516020016107339061349e565b60405160208183030381529060405280519060200120610c84565b6107566112c4565b565b61078560405160200161076a9061349e565b60405160208183030381529060405280519060200120610c84565b61078d611302565b565b6000610799611382565b905090565b60006107a982611395565b9050919050565b6107dd6040516020016107c29061349e565b60405160208183030381529060405280519060200120610c84565b6107e6816113e7565b50565b60006107f3611442565b905090565b6000610802611462565b905090565b60006108128261147c565b9050919050565b61082382826114db565b5050565b600061083282611549565b9050919050565b6000610845838361159b565b905092915050565b6000610859838361162b565b905092915050565b600061086c826116bf565b9050919050565b600061087d611711565b905090565b6108af6040516020016108949061349e565b60405160208183030381529060405280519060200120610c84565b825184511415806108c257508151845114155b806108cf57508051845114155b15610906576040517fed882f7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8451811015610a44576001855161092091906134ed565b8110156109bd57836001826109359190613521565b8151811061094657610945613555565b5b60200260200101516bffffffffffffffffffffffff1683828151811061096f5761096e613555565b5b60200260200101516bffffffffffffffffffffffff16146109bc576040517f2245023300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b610a318582815181106109d3576109d2613555565b5b60200260200101518583815181106109ee576109ed613555565b5b6020026020010151858481518110610a0957610a08613555565b5b6020026020010151858581518110610a2457610a23613555565b5b6020026020010151611724565b8080610a3c90613584565b915050610909565b5050505050565b610a78604051602001610a5d9061349e565b60405160208183030381529060405280519060200120610c84565b610a8282826117ac565b5050565b610ab3604051602001610a9890613618565b60405160208183030381529060405280519060200120610c84565b610abd828261181c565b5050565b6000806000806000610ad1611982565b600c0160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000610b52611982565b600c0160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008881526020019081526020016000206001015490506000610bb3611982565b600c0160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008981526020019081526020016000206002015490506000610c14611982565b600c0160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a81526020019081526020016000206003015490508383838397509750975097505050505092959194509250565b610c8d816119af565b50565b6001610c9a611982565b60090160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000610cfe611982565b60040160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900461ffff169050919050565b60008111610d8e576040517f7c946ed700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b80610d9a611982565b6007018190555050565b80610dad611982565b600e0160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610e63576040517f96d8043300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80610e6c611982565b600e0160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ef891906134ed565b9250508190555080610f08611982565b600f0160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610f5791906134ed565b925050819055508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610f99929190613638565b6020604051808303816000875af1158015610fb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fdc919061368d565b505050565b610fea8161147c565b611020576040517f334ae3e600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b8173ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401611060939291906136ba565b6020604051808303816000875af115801561107f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a3919061368d565b50806110ad611982565b600e0160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546111399190613521565b9250508190555080611149611982565b600f0160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546111989190613521565b925050819055505050565b806111ac611982565b6008018190555050565b60008083905060006111e7848373ffffffffffffffffffffffffffffffffffffffff166119bc90919063ffffffff16565b90506000611214308473ffffffffffffffffffffffffffffffffffffffff16611a5090919063ffffffff16565b905061121e611982565b60080154858261122e91906136f1565b6bffffffffffffffffffffffff166112469190613755565b826112519190613521565b935050505092915050565b80611265611982565b6006018190555050565b6000611279611982565b60060154905090565b6000806000806112a585611294611982565b600001611ae490919063ffffffff16565b9050806000015181602001518260400151935093509350509193909250565b6112cc611982565b60050160009054906101000a900460ff16156112e6611982565b60050160006101000a81548160ff021916908315150217905550565b600061130c611462565b905060005b8181101561137e57600061134b6001611328611462565b61133291906134ed565b61133a611982565b600001611bb090919063ffffffff16565b905061136a81611359611982565b600001611bdb90919063ffffffff16565b50808061137690613584565b915050611311565b5050565b600061138c611982565b60080154905090565b600061139f611982565b600b0160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6113ef611982565b60090160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff021916905550565b600061144c611982565b60050160009054906101000a900460ff16905090565b600061147761146f611982565b600001611d74565b905090565b6000611486611982565b60090160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6114e782826001611d85565b6114ef611982565b600d0160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461153e9190613521565b925050819055505050565b6000611553611982565b600f0160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006115a5611982565b600e0160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000808373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016116679190613797565b602060405180830381865afa158015611684573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a891906137c7565b90506116b484846111b6565b811191505092915050565b60006116c9611982565b600d0160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600061171b611982565b60070154905090565b61172d84611e8b565b826bffffffffffffffffffffffff16826bffffffffffffffffffffffff161015611783576040517f2245023300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117a681858585611792611982565b600001611ee490949392919063ffffffff16565b50505050565b6117b582611e8b565b816117be611982565b60040160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548161ffff021916908361ffff1602179055505050565b80611825611982565b600d0160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561189e576040517ff00d49ea00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806118a7611982565b600d0160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118f691906134ed565b925050819055508173ffffffffffffffffffffffffffffffffffffffff166323b872dd3033846040518463ffffffff1660e01b815260040161193a939291906136ba565b6020604051808303816000875af1158015611959573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061197d919061368d565b505050565b6000807f2f7ed27098ecefe70183ee38ae4542dee65215b0786f6870871034402cfe2cc990508091505090565b6119b98133612115565b50565b6000806119c8846121b2565b9150508073ffffffffffffffffffffffffffffffffffffffff16638d997f6e85856040518363ffffffff1660e01b8152600401611a06929190613862565b602060405180830381865afa158015611a23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4791906137c7565b91505092915050565b600080611a5c846121b2565b9150508073ffffffffffffffffffffffffffffffffffffffff1663e8e7e2d185856040518363ffffffff1660e01b8152600401611a9a92919061388b565b602060405180830381865afa158015611ab7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611adb91906138c9565b91505092915050565b611aec612c2d565b8260010160008381526020019081526020016000206040518060600160405290816000820160009054906101000a900461ffff1661ffff1661ffff1681526020016000820160029054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160008201600e9054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681525050905092915050565b6000826000018281548110611bc857611bc7613555565b5b9060005260206000200154905092915050565b81600301600082815260200190815260200160002060009054906101000a900460ff1615611d705781600301600082815260200190815260200160002060006101000a81549060ff0219169055816001016000828152602001908152602001600020600080820160006101000a81549061ffff02191690556000820160026101000a8154906bffffffffffffffffffffffff021916905560008201600e6101000a8154906bffffffffffffffffffffffff021916905550506000826002016000838152602001908152602001600020549050600060018460000180549050611cc391906134ed565b90506000846000018281548110611cdd57611cdc613555565b5b9060005260206000200154905082856002016000838152602001908152602001600020819055508460020160008581526020019081526020016000206000905580856000018481548110611d3457611d33613555565b5b906000526020600020018190555084600001805480611d5657611d556138f6565b5b600190038181906000526020600020016000905590555050505b5050565b600081600001805490509050919050565b600080611d90611982565b9050600081600a0160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600080600090505b87811015611e7d57611dfd878285611df89190613521565b6123f3565b82611e089190613521565b91508515611e6a57600184600a0160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611e629190613521565b925050819055505b8080611e7590613584565b915050611de0565b508093505050509392505050565b606460ff168161ffff161080611eaa575061271061ffff168161ffff16115b15611ee1576040517f800c7e9100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b84600301600085815260200190815260200160002060009054906101000a900460ff1615611fd2578285600101600086815260200190815260200160002060000160006101000a81548161ffff021916908361ffff1602179055508185600101600086815260200190815260200160002060000160026101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555080856001016000868152602001908152602001600020600001600e6101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555061210e565b600185600301600086815260200190815260200160002060006101000a81548160ff0219169083151502179055508285600101600086815260200190815260200160002060000160006101000a81548161ffff021916908361ffff1602179055508185600101600086815260200190815260200160002060000160026101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555080856001016000868152602001908152602001600020600001600e6101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550846000018054905085600201600086815260200190815260200160002081905550846000018490806001815401808255809150506001900390600052602060002001600090919091909150555b5050505050565b61211f828261257a565b6121ae576121448173ffffffffffffffffffffffffffffffffffffffff1660146125ee565b6121528360001c60206125ee565b604051602001612163929190613a2e565b6040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a59190613aa1565b60405180910390fd5b5050565b6000807f65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea8375491507fb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a549050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361237457600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122d7578273ffffffffffffffffffffffffffffffffffffffff166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d49190613ad8565b91505b8173ffffffffffffffffffffffffffffffffffffffff1663b6d200de7fa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd36040518263ffffffff1660e01b81526004016123309190613b57565b602060405180830381865afa15801561234d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123719190613bb0565b90505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036123b1576123b0613bdd565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036123ee576123ed613bdd565b5b915091565b6000806123fe611982565b9050600081600c0160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000858152602001908152602001600020600201549050600082600c0160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600086815260200190815260200160002060030154905060008060006124c3898961282a565b93505092509250600083836124d89190613c0c565b6bffffffffffffffffffffffff169050600085146125155785856124fc91906134ed565b816125079190613755565b975050505050505050612574565b6000821461254257858261252991906134ed565b816125349190613755565b975050505050505050612574565b6040517fae1c061f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b92915050565b600061258461292f565b600001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6060600060028360026126019190613755565b61260b9190613521565b67ffffffffffffffff81111561262457612623613009565b5b6040519080825280601f01601f1916602001820160405280156126565781602001600182028036833780820191505090505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061268e5761268d613555565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106126f2576126f1613555565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026127329190613755565b61273c9190613521565b90505b60018111156127dc577f3031323334353637383961626364656600000000000000000000000000000000600f86166010811061277e5761277d613555565b5b1a60f81b82828151811061279557612794613555565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c9450806127d590613c4c565b905061273f565b5060008414612820576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281790613cc1565b60405180910390fd5b8091505092915050565b600080600080600061283a611982565b9050600081600c0160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600082600c0160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600089815260200190815260200160002060010154905061291b828a8361295c565b965096509650965050505092959194509250565b6000807f4cd15452b25e815d3f9d1a3c7edd985a178edf5eb3461a1acbf855517423d69490508091505090565b60008060008061296a612c00565b60010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600086815260200190815260200160002060000160009054906101000a9004600b0b612a11612c00565b60010160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878152602001908152602001600020600001600c9054906101000a90046bffffffffffffffffffffffff16612ac3612c00565b60010160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088815260200190815260200160002060010154612b5d612c00565b60010160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600089815260200190815260200160002060020154935093509350935093509350935093565b6000807f9cd9afe22fea86221d6e8117226b65bb0e2af8c4f5b8abf255fb0afcad4a3a9c90508091505090565b6040518060600160405280600061ffff16815260200160006bffffffffffffffffffffffff16815260200160006bffffffffffffffffffffffff1681525090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612cad82612c82565b9050919050565b612cbd81612ca2565b8114612cc857600080fd5b50565b600081359050612cda81612cb4565b92915050565b6000819050919050565b612cf381612ce0565b8114612cfe57600080fd5b50565b600081359050612d1081612cea565b92915050565b60008060408385031215612d2d57612d2c612c78565b5b6000612d3b85828601612ccb565b9250506020612d4c85828601612d01565b9150509250929050565b612d5f81612ca2565b82525050565b612d6e81612ce0565b82525050565b6000608082019050612d896000830187612d56565b612d966020830186612d65565b612da36040830185612d65565b612db06060830184612d65565b95945050505050565b600060208284031215612dcf57612dce612c78565b5b6000612ddd84828501612ccb565b91505092915050565b600061ffff82169050919050565b612dfd81612de6565b82525050565b6000602082019050612e186000830184612df4565b92915050565b600060208284031215612e3457612e33612c78565b5b6000612e4284828501612d01565b91505092915050565b600081600b0b9050919050565b612e6181612e4b565b8114612e6c57600080fd5b50565b600081359050612e7e81612e58565b92915050565b60008060408385031215612e9b57612e9a612c78565b5b6000612ea985828601612ccb565b9250506020612eba85828601612e6f565b9150509250929050565b6000602082019050612ed96000830184612d65565b92915050565b60006bffffffffffffffffffffffff82169050919050565b612f0081612edf565b82525050565b6000606082019050612f1b6000830186612df4565b612f286020830185612ef7565b612f356040830184612ef7565b949350505050565b60008115159050919050565b612f5281612f3d565b82525050565b6000602082019050612f6d6000830184612f49565b92915050565b60008060408385031215612f8a57612f89612c78565b5b6000612f9885828601612d01565b9250506020612fa985828601612ccb565b9150509250929050565b60008060408385031215612fca57612fc9612c78565b5b6000612fd885828601612ccb565b9250506020612fe985828601612ccb565b9150509250929050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61304182612ff8565b810181811067ffffffffffffffff821117156130605761305f613009565b5b80604052505050565b6000613073612c6e565b905061307f8282613038565b919050565b600067ffffffffffffffff82111561309f5761309e613009565b5b602082029050602081019050919050565b600080fd5b6130be81612de6565b81146130c957600080fd5b50565b6000813590506130db816130b5565b92915050565b60006130f46130ef84613084565b613069565b90508083825260208201905060208402830185811115613117576131166130b0565b5b835b81811015613140578061312c88826130cc565b845260208401935050602081019050613119565b5050509392505050565b600082601f83011261315f5761315e612ff3565b5b813561316f8482602086016130e1565b91505092915050565b600067ffffffffffffffff82111561319357613192613009565b5b602082029050602081019050919050565b6131ad81612edf565b81146131b857600080fd5b50565b6000813590506131ca816131a4565b92915050565b60006131e36131de84613178565b613069565b90508083825260208201905060208402830185811115613206576132056130b0565b5b835b8181101561322f578061321b88826131bb565b845260208401935050602081019050613208565b5050509392505050565b600082601f83011261324e5761324d612ff3565b5b813561325e8482602086016131d0565b91505092915050565b600067ffffffffffffffff82111561328257613281613009565b5b602082029050602081019050919050565b60006132a66132a184613267565b613069565b905080838252602082019050602084028301858111156132c9576132c86130b0565b5b835b818110156132f257806132de8882612d01565b8452602084019350506020810190506132cb565b5050509392505050565b600082601f83011261331157613310612ff3565b5b8135613321848260208601613293565b91505092915050565b6000806000806080858703121561334457613343612c78565b5b600085013567ffffffffffffffff81111561336257613361612c7d565b5b61336e8782880161314a565b945050602085013567ffffffffffffffff81111561338f5761338e612c7d565b5b61339b87828801613239565b935050604085013567ffffffffffffffff8111156133bc576133bb612c7d565b5b6133c887828801613239565b925050606085013567ffffffffffffffff8111156133e9576133e8612c7d565b5b6133f5878288016132fc565b91505092959194509250565b6000806040838503121561341857613417612c78565b5b6000613426858286016130cc565b925050602061343785828601612ccb565b9150509250929050565b600082825260208201905092915050565b7f535452415445474953545f524f4c450000000000000000000000000000000000600082015250565b6000613488600f83613441565b915061349382613452565b602082019050919050565b600060208201905081810360008301526134b78161347b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006134f882612ce0565b915061350383612ce0565b925082820390508181111561351b5761351a6134be565b5b92915050565b600061352c82612ce0565b915061353783612ce0565b925082820190508082111561354f5761354e6134be565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061358f82612ce0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036135c1576135c06134be565b5b600182019050919050565b7f5452454153555245525f524f4c45000000000000000000000000000000000000600082015250565b6000613602600e83613441565b915061360d826135cc565b602082019050919050565b60006020820190508181036000830152613631816135f5565b9050919050565b600060408201905061364d6000830185612d56565b61365a6020830184612d65565b9392505050565b61366a81612f3d565b811461367557600080fd5b50565b60008151905061368781613661565b92915050565b6000602082840312156136a3576136a2612c78565b5b60006136b184828501613678565b91505092915050565b60006060820190506136cf6000830186612d56565b6136dc6020830185612d56565b6136e96040830184612d65565b949350505050565b60006136fc82612e4b565b915061370783612e4b565b925082820190507fffffffffffffffffffffffffffffffffffffffff80000000000000000000000081126b7fffffffffffffffffffffff8213171561374f5761374e6134be565b5b92915050565b600061376082612ce0565b915061376b83612ce0565b925082820261377981612ce0565b915082820484148315176137905761378f6134be565b5b5092915050565b60006020820190506137ac6000830184612d56565b92915050565b6000815190506137c181612cea565b92915050565b6000602082840312156137dd576137dc612c78565b5b60006137eb848285016137b2565b91505092915050565b6000819050919050565b600061381961381461380f84612c82565b6137f4565b612c82565b9050919050565b600061382b826137fe565b9050919050565b600061383d82613820565b9050919050565b61384d81613832565b82525050565b61385c81612e4b565b82525050565b60006040820190506138776000830185613844565b6138846020830184613853565b9392505050565b60006040820190506138a06000830185613844565b6138ad6020830184612d56565b9392505050565b6000815190506138c381612e58565b92915050565b6000602082840312156138df576138de612c78565b5b60006138ed848285016138b4565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000613966601783613925565b915061397182613930565b601782019050919050565b600081519050919050565b60005b838110156139a557808201518184015260208101905061398a565b60008484015250505050565b60006139bc8261397c565b6139c68185613925565b93506139d6818560208601613987565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000613a18601183613925565b9150613a23826139e2565b601182019050919050565b6000613a3982613959565b9150613a4582856139b1565b9150613a5082613a0b565b9150613a5c82846139b1565b91508190509392505050565b6000613a738261397c565b613a7d8185613441565b9350613a8d818560208601613987565b613a9681612ff8565b840191505092915050565b60006020820190508181036000830152613abb8184613a68565b905092915050565b600081519050613ad281612cb4565b92915050565b600060208284031215613aee57613aed612c78565b5b6000613afc84828501613ac3565b91505092915050565b6000819050919050565b6000819050919050565b60008160001b9050919050565b6000613b41613b3c613b3784613b05565b613b19565b613b0f565b9050919050565b613b5181613b26565b82525050565b6000602082019050613b6c6000830184613b48565b92915050565b6000613b7d82612ca2565b9050919050565b613b8d81613b72565b8114613b9857600080fd5b50565b600081519050613baa81613b84565b92915050565b600060208284031215613bc657613bc5612c78565b5b6000613bd484828501613b9b565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000613c1782612edf565b9150613c2283612edf565b925082820390506bffffffffffffffffffffffff811115613c4657613c456134be565b5b92915050565b6000613c5782612ce0565b915060008203613c6a57613c696134be565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b6000613cab602083613441565b9150613cb682613c75565b602082019050919050565b60006020820190508181036000830152613cda81613c9e565b905091905056fea2646970667358221220c4e7572168b3d5831e83e3433ea938199032c5ffc0e0ea577795da4ca37ccd8364736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3D17 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1C4 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7F69BCAF GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0xBE835747 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xCA70E1D5 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xCA70E1D5 EQ PUSH2 0x51A JUMPI DUP1 PUSH4 0xCB857C80 EQ PUSH2 0x538 JUMPI DUP1 PUSH4 0xD99D3B69 EQ PUSH2 0x554 JUMPI DUP1 PUSH4 0xEBAAE661 EQ PUSH2 0x570 JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0xBE835747 EQ PUSH2 0x48A JUMPI DUP1 PUSH4 0xC467CDDC EQ PUSH2 0x4BA JUMPI DUP1 PUSH4 0xC78F6803 EQ PUSH2 0x4EA JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0xA8771AB9 GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0xA8771AB9 EQ PUSH2 0x3F0 JUMPI DUP1 PUSH4 0xACFF4744 EQ PUSH2 0x40E JUMPI DUP1 PUSH4 0xADEFE35E EQ PUSH2 0x43E JUMPI DUP1 PUSH4 0xB2419083 EQ PUSH2 0x45A JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x7F69BCAF EQ PUSH2 0x386 JUMPI DUP1 PUSH4 0x83807889 EQ PUSH2 0x3B6 JUMPI DUP1 PUSH4 0xA86C8C7C EQ PUSH2 0x3D2 JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x4EE43E46 GT PUSH2 0x166 JUMPI DUP1 PUSH4 0x6AB1C734 GT PUSH2 0x140 JUMPI DUP1 PUSH4 0x6AB1C734 EQ PUSH2 0x322 JUMPI DUP1 PUSH4 0x703AB1B7 EQ PUSH2 0x354 JUMPI DUP1 PUSH4 0x795E3425 EQ PUSH2 0x35E JUMPI DUP1 PUSH4 0x7EA195AD EQ PUSH2 0x368 JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x4EE43E46 EQ PUSH2 0x2B8 JUMPI DUP1 PUSH4 0x578DC59A EQ PUSH2 0x2E8 JUMPI DUP1 PUSH4 0x6812A173 EQ PUSH2 0x304 JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x245B6C93 GT PUSH2 0x1A2 JUMPI DUP1 PUSH4 0x245B6C93 EQ PUSH2 0x248 JUMPI DUP1 PUSH4 0x38E4F064 EQ PUSH2 0x264 JUMPI DUP1 PUSH4 0x46A5D043 EQ PUSH2 0x280 JUMPI DUP1 PUSH4 0x487EB939 EQ PUSH2 0x29C JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0xB72660D EQ PUSH2 0x1C9 JUMPI DUP1 PUSH4 0x22C3A21F EQ PUSH2 0x1FC JUMPI DUP1 PUSH4 0x2357F2CF EQ PUSH2 0x218 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1E3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1DE SWAP2 SWAP1 PUSH2 0x2D16 JUMP JUMPDEST PUSH2 0x58C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1F3 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2D74 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x216 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x211 SWAP2 SWAP1 PUSH2 0x2DB9 JUMP JUMPDEST PUSH2 0x5AD JUMP JUMPDEST STOP JUMPDEST PUSH2 0x232 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x22D SWAP2 SWAP1 PUSH2 0x2DB9 JUMP JUMPDEST PUSH2 0x5E6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x23F SWAP2 SWAP1 PUSH2 0x2E03 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x262 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x25D SWAP2 SWAP1 PUSH2 0x2E1E JUMP JUMPDEST PUSH2 0x5F8 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x27E PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x279 SWAP2 SWAP1 PUSH2 0x2D16 JUMP JUMPDEST PUSH2 0x63A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x29A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x295 SWAP2 SWAP1 PUSH2 0x2D16 JUMP JUMPDEST PUSH2 0x648 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2B1 SWAP2 SWAP1 PUSH2 0x2E1E JUMP JUMPDEST PUSH2 0x65F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2D2 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2CD SWAP2 SWAP1 PUSH2 0x2E84 JUMP JUMPDEST PUSH2 0x6A1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2DF SWAP2 SWAP1 PUSH2 0x2EC4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x302 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2FD SWAP2 SWAP1 PUSH2 0x2E1E JUMP JUMPDEST PUSH2 0x6B5 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x30C PUSH2 0x6F7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x319 SWAP2 SWAP1 PUSH2 0x2EC4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x33C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x337 SWAP2 SWAP1 PUSH2 0x2E1E JUMP JUMPDEST PUSH2 0x706 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x34B SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2F06 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x35C PUSH2 0x721 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x366 PUSH2 0x758 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x370 PUSH2 0x78F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x37D SWAP2 SWAP1 PUSH2 0x2EC4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x39B SWAP2 SWAP1 PUSH2 0x2DB9 JUMP JUMPDEST PUSH2 0x79E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3AD SWAP2 SWAP1 PUSH2 0x2EC4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3D0 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3CB SWAP2 SWAP1 PUSH2 0x2DB9 JUMP JUMPDEST PUSH2 0x7B0 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3DA PUSH2 0x7E9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3E7 SWAP2 SWAP1 PUSH2 0x2F58 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3F8 PUSH2 0x7F8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x405 SWAP2 SWAP1 PUSH2 0x2EC4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x428 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x423 SWAP2 SWAP1 PUSH2 0x2DB9 JUMP JUMPDEST PUSH2 0x807 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x435 SWAP2 SWAP1 PUSH2 0x2F58 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x458 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x453 SWAP2 SWAP1 PUSH2 0x2F73 JUMP JUMPDEST PUSH2 0x819 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x474 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x46F SWAP2 SWAP1 PUSH2 0x2DB9 JUMP JUMPDEST PUSH2 0x827 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x481 SWAP2 SWAP1 PUSH2 0x2EC4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x4A4 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x49F SWAP2 SWAP1 PUSH2 0x2FB3 JUMP JUMPDEST PUSH2 0x839 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4B1 SWAP2 SWAP1 PUSH2 0x2EC4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x4D4 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x4CF SWAP2 SWAP1 PUSH2 0x2E84 JUMP JUMPDEST PUSH2 0x84D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4E1 SWAP2 SWAP1 PUSH2 0x2F58 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x504 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x4FF SWAP2 SWAP1 PUSH2 0x2DB9 JUMP JUMPDEST PUSH2 0x861 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x511 SWAP2 SWAP1 PUSH2 0x2EC4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x522 PUSH2 0x873 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x52F SWAP2 SWAP1 PUSH2 0x2EC4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x552 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x54D SWAP2 SWAP1 PUSH2 0x332A JUMP JUMPDEST PUSH2 0x882 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x56E PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x569 SWAP2 SWAP1 PUSH2 0x3401 JUMP JUMPDEST PUSH2 0xA4B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x58A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x585 SWAP2 SWAP1 PUSH2 0x2D16 JUMP JUMPDEST PUSH2 0xA86 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x59C DUP7 DUP7 PUSH2 0xAC1 JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH2 0x5DA PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x5BF SWAP1 PUSH2 0x349E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0xC84 JUMP JUMPDEST PUSH2 0x5E3 DUP2 PUSH2 0xC90 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5F1 DUP3 PUSH2 0xCF4 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x625 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x60A SWAP1 PUSH2 0x349E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0xC84 JUMP JUMPDEST PUSH2 0x62E DUP2 PUSH2 0xD54 JUMP JUMPDEST PUSH2 0x637 DUP2 PUSH2 0xD91 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x644 DUP3 DUP3 PUSH2 0xDA4 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x651 DUP3 PUSH2 0xFE1 JUMP JUMPDEST PUSH2 0x65B DUP3 DUP3 PUSH2 0x1023 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x68C PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x671 SWAP1 PUSH2 0x349E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0xC84 JUMP JUMPDEST PUSH2 0x695 DUP2 PUSH2 0xD54 JUMP JUMPDEST PUSH2 0x69E DUP2 PUSH2 0x11A3 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6AD DUP4 DUP4 PUSH2 0x11B6 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x6E2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x6C7 SWAP1 PUSH2 0x349E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0xC84 JUMP JUMPDEST PUSH2 0x6EB DUP2 PUSH2 0xD54 JUMP JUMPDEST PUSH2 0x6F4 DUP2 PUSH2 0x125C JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x701 PUSH2 0x126F JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x714 DUP5 PUSH2 0x1282 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH2 0x74E PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x733 SWAP1 PUSH2 0x349E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0xC84 JUMP JUMPDEST PUSH2 0x756 PUSH2 0x12C4 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x785 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x76A SWAP1 PUSH2 0x349E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0xC84 JUMP JUMPDEST PUSH2 0x78D PUSH2 0x1302 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH2 0x799 PUSH2 0x1382 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7A9 DUP3 PUSH2 0x1395 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x7DD PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x7C2 SWAP1 PUSH2 0x349E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0xC84 JUMP JUMPDEST PUSH2 0x7E6 DUP2 PUSH2 0x13E7 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7F3 PUSH2 0x1442 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x802 PUSH2 0x1462 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x812 DUP3 PUSH2 0x147C JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x823 DUP3 DUP3 PUSH2 0x14DB JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x832 DUP3 PUSH2 0x1549 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x845 DUP4 DUP4 PUSH2 0x159B JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x859 DUP4 DUP4 PUSH2 0x162B JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x86C DUP3 PUSH2 0x16BF JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x87D PUSH2 0x1711 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x8AF PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x894 SWAP1 PUSH2 0x349E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0xC84 JUMP JUMPDEST DUP3 MLOAD DUP5 MLOAD EQ ISZERO DUP1 PUSH2 0x8C2 JUMPI POP DUP2 MLOAD DUP5 MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x8CF JUMPI POP DUP1 MLOAD DUP5 MLOAD EQ ISZERO JUMPDEST ISZERO PUSH2 0x906 JUMPI PUSH1 0x40 MLOAD PUSH32 0xED882F7100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0xA44 JUMPI PUSH1 0x1 DUP6 MLOAD PUSH2 0x920 SWAP2 SWAP1 PUSH2 0x34ED JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0x9BD JUMPI DUP4 PUSH1 0x1 DUP3 PUSH2 0x935 SWAP2 SWAP1 PUSH2 0x3521 JUMP JUMPDEST DUP2 MLOAD DUP2 LT PUSH2 0x946 JUMPI PUSH2 0x945 PUSH2 0x3555 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x96F JUMPI PUSH2 0x96E PUSH2 0x3555 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x9BC JUMPI PUSH1 0x40 MLOAD PUSH32 0x2245023300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMPDEST PUSH2 0xA31 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x9D3 JUMPI PUSH2 0x9D2 PUSH2 0x3555 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x9EE JUMPI PUSH2 0x9ED PUSH2 0x3555 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xA09 JUMPI PUSH2 0xA08 PUSH2 0x3555 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0xA24 JUMPI PUSH2 0xA23 PUSH2 0x3555 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x1724 JUMP JUMPDEST DUP1 DUP1 PUSH2 0xA3C SWAP1 PUSH2 0x3584 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x909 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0xA78 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xA5D SWAP1 PUSH2 0x349E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0xC84 JUMP JUMPDEST PUSH2 0xA82 DUP3 DUP3 PUSH2 0x17AC JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0xAB3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xA98 SWAP1 PUSH2 0x3618 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0xC84 JUMP JUMPDEST PUSH2 0xABD DUP3 DUP3 PUSH2 0x181C JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xAD1 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xC ADD PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH2 0xB52 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xC ADD PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 POP PUSH1 0x0 PUSH2 0xBB3 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xC ADD PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP1 POP PUSH1 0x0 PUSH2 0xC14 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xC ADD PUSH1 0x0 DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP11 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD SLOAD SWAP1 POP DUP4 DUP4 DUP4 DUP4 SWAP8 POP SWAP8 POP SWAP8 POP SWAP8 POP POP POP POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH2 0xC8D DUP2 PUSH2 0x19AF JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH2 0xC9A PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x9 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCFE PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x4 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH2 0xFFFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0xD8E JUMPI PUSH1 0x40 MLOAD PUSH32 0x7C946ED700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 PUSH2 0xD9A PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x7 ADD DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST DUP1 PUSH2 0xDAD PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xE ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD LT ISZERO PUSH2 0xE63 JUMPI PUSH1 0x40 MLOAD PUSH32 0x96D8043300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0xE6C PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xE ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xEF8 SWAP2 SWAP1 PUSH2 0x34ED JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 PUSH2 0xF08 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xF ADD PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xF57 SWAP2 SWAP1 PUSH2 0x34ED JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB CALLER DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF99 SWAP3 SWAP2 SWAP1 PUSH2 0x3638 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFB8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xFDC SWAP2 SWAP1 PUSH2 0x368D JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0xFEA DUP2 PUSH2 0x147C JUMP JUMPDEST PUSH2 0x1020 JUMPI PUSH1 0x40 MLOAD PUSH32 0x334AE3E600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x23B872DD CALLER ADDRESS DUP5 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1060 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x36BA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x107F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x10A3 SWAP2 SWAP1 PUSH2 0x368D JUMP JUMPDEST POP DUP1 PUSH2 0x10AD PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xE ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1139 SWAP2 SWAP1 PUSH2 0x3521 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 PUSH2 0x1149 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xF ADD PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1198 SWAP2 SWAP1 PUSH2 0x3521 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP JUMP JUMPDEST DUP1 PUSH2 0x11AC PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x8 ADD DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 SWAP1 POP PUSH1 0x0 PUSH2 0x11E7 DUP5 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x19BC SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1214 ADDRESS DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1A50 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x121E PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x8 ADD SLOAD DUP6 DUP3 PUSH2 0x122E SWAP2 SWAP1 PUSH2 0x36F1 JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1246 SWAP2 SWAP1 PUSH2 0x3755 JUMP JUMPDEST DUP3 PUSH2 0x1251 SWAP2 SWAP1 PUSH2 0x3521 JUMP JUMPDEST SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 PUSH2 0x1265 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x6 ADD DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1279 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x6 ADD SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x12A5 DUP6 PUSH2 0x1294 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x0 ADD PUSH2 0x1AE4 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x0 ADD MLOAD DUP2 PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x40 ADD MLOAD SWAP4 POP SWAP4 POP SWAP4 POP POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH2 0x12CC PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x5 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x12E6 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x5 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x130C PUSH2 0x1462 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x137E JUMPI PUSH1 0x0 PUSH2 0x134B PUSH1 0x1 PUSH2 0x1328 PUSH2 0x1462 JUMP JUMPDEST PUSH2 0x1332 SWAP2 SWAP1 PUSH2 0x34ED JUMP JUMPDEST PUSH2 0x133A PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x0 ADD PUSH2 0x1BB0 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x136A DUP2 PUSH2 0x1359 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x0 ADD PUSH2 0x1BDB SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP DUP1 DUP1 PUSH2 0x1376 SWAP1 PUSH2 0x3584 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1311 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x138C PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x8 ADD SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x139F PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xB ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x13EF PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x9 ADD PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH1 0xFF MUL NOT AND SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x144C PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x5 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1477 PUSH2 0x146F PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x0 ADD PUSH2 0x1D74 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1486 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x9 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x14E7 DUP3 DUP3 PUSH1 0x1 PUSH2 0x1D85 JUMP JUMPDEST PUSH2 0x14EF PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xD ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x153E SWAP2 SWAP1 PUSH2 0x3521 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1553 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xF ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15A5 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xE ADD PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1667 SWAP2 SWAP1 PUSH2 0x3797 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1684 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x16A8 SWAP2 SWAP1 PUSH2 0x37C7 JUMP JUMPDEST SWAP1 POP PUSH2 0x16B4 DUP5 DUP5 PUSH2 0x11B6 JUMP JUMPDEST DUP2 GT SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16C9 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xD ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x171B PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x7 ADD SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x172D DUP5 PUSH2 0x1E8B JUMP JUMPDEST DUP3 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND LT ISZERO PUSH2 0x1783 JUMPI PUSH1 0x40 MLOAD PUSH32 0x2245023300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x17A6 DUP2 DUP6 DUP6 DUP6 PUSH2 0x1792 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x0 ADD PUSH2 0x1EE4 SWAP1 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x17B5 DUP3 PUSH2 0x1E8B JUMP JUMPDEST DUP2 PUSH2 0x17BE PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x4 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH2 0xFFFF MUL NOT AND SWAP1 DUP4 PUSH2 0xFFFF AND MUL OR SWAP1 SSTORE POP POP POP JUMP JUMPDEST DUP1 PUSH2 0x1825 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xD ADD PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD LT ISZERO PUSH2 0x189E JUMPI PUSH1 0x40 MLOAD PUSH32 0xF00D49EA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x18A7 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xD ADD PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x18F6 SWAP2 SWAP1 PUSH2 0x34ED JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x23B872DD ADDRESS CALLER DUP5 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x193A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x36BA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1959 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x197D SWAP2 SWAP1 PUSH2 0x368D JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x2F7ED27098ECEFE70183EE38AE4542DEE65215B0786F6870871034402CFE2CC9 SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH2 0x19B9 DUP2 CALLER PUSH2 0x2115 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x19C8 DUP5 PUSH2 0x21B2 JUMP JUMPDEST SWAP2 POP POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x8D997F6E DUP6 DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1A06 SWAP3 SWAP2 SWAP1 PUSH2 0x3862 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1A23 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1A47 SWAP2 SWAP1 PUSH2 0x37C7 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1A5C DUP5 PUSH2 0x21B2 JUMP JUMPDEST SWAP2 POP POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xE8E7E2D1 DUP6 DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1A9A SWAP3 SWAP2 SWAP1 PUSH2 0x388B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1AB7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1ADB SWAP2 SWAP1 PUSH2 0x38C9 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1AEC PUSH2 0x2C2D JUMP JUMPDEST DUP3 PUSH1 0x1 ADD PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH2 0xFFFF AND PUSH2 0xFFFF AND PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP3 ADD PUSH1 0x2 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP3 ADD PUSH1 0xE SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1BC8 JUMPI PUSH2 0x1BC7 PUSH2 0x3555 JUMP JUMPDEST JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 PUSH1 0x3 ADD PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x1D70 JUMPI DUP2 PUSH1 0x3 ADD PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH1 0xFF MUL NOT AND SWAP1 SSTORE DUP2 PUSH1 0x1 ADD PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP1 DUP3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH2 0xFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x0 DUP3 ADD PUSH1 0x2 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x0 DUP3 ADD PUSH1 0xE PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE POP POP PUSH1 0x0 DUP3 PUSH1 0x2 ADD PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP5 PUSH1 0x0 ADD DUP1 SLOAD SWAP1 POP PUSH2 0x1CC3 SWAP2 SWAP1 PUSH2 0x34ED JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP5 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1CDD JUMPI PUSH2 0x1CDC PUSH2 0x3555 JUMP JUMPDEST JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP3 DUP6 PUSH1 0x2 ADD PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP5 PUSH1 0x2 ADD PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SSTORE DUP1 DUP6 PUSH1 0x0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x1D34 JUMPI PUSH2 0x1D33 PUSH2 0x3555 JUMP JUMPDEST JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP2 SWAP1 SSTORE POP DUP5 PUSH1 0x0 ADD DUP1 SLOAD DUP1 PUSH2 0x1D56 JUMPI PUSH2 0x1D55 PUSH2 0x38F6 JUMP JUMPDEST JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE SWAP1 SSTORE POP POP POP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 ADD DUP1 SLOAD SWAP1 POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1D90 PUSH2 0x1982 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0xA ADD PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 POP JUMPDEST DUP8 DUP2 LT ISZERO PUSH2 0x1E7D JUMPI PUSH2 0x1DFD DUP8 DUP3 DUP6 PUSH2 0x1DF8 SWAP2 SWAP1 PUSH2 0x3521 JUMP JUMPDEST PUSH2 0x23F3 JUMP JUMPDEST DUP3 PUSH2 0x1E08 SWAP2 SWAP1 PUSH2 0x3521 JUMP JUMPDEST SWAP2 POP DUP6 ISZERO PUSH2 0x1E6A JUMPI PUSH1 0x1 DUP5 PUSH1 0xA ADD PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1E62 SWAP2 SWAP1 PUSH2 0x3521 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP JUMPDEST DUP1 DUP1 PUSH2 0x1E75 SWAP1 PUSH2 0x3584 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1DE0 JUMP JUMPDEST POP DUP1 SWAP4 POP POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x64 PUSH1 0xFF AND DUP2 PUSH2 0xFFFF AND LT DUP1 PUSH2 0x1EAA JUMPI POP PUSH2 0x2710 PUSH2 0xFFFF AND DUP2 PUSH2 0xFFFF AND GT JUMPDEST ISZERO PUSH2 0x1EE1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x800C7E9100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP5 PUSH1 0x3 ADD PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x1FD2 JUMPI DUP3 DUP6 PUSH1 0x1 ADD PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH2 0xFFFF MUL NOT AND SWAP1 DUP4 PUSH2 0xFFFF AND MUL OR SWAP1 SSTORE POP DUP2 DUP6 PUSH1 0x1 ADD PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x2 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 DUP6 PUSH1 0x1 ADD PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0xE PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x210E JUMP JUMPDEST PUSH1 0x1 DUP6 PUSH1 0x3 ADD PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP3 DUP6 PUSH1 0x1 ADD PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH2 0xFFFF MUL NOT AND SWAP1 DUP4 PUSH2 0xFFFF AND MUL OR SWAP1 SSTORE POP DUP2 DUP6 PUSH1 0x1 ADD PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x2 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 DUP6 PUSH1 0x1 ADD PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0xE PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP5 PUSH1 0x0 ADD DUP1 SLOAD SWAP1 POP DUP6 PUSH1 0x2 ADD PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP5 PUSH1 0x0 ADD DUP5 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 POP SSTORE JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x211F DUP3 DUP3 PUSH2 0x257A JUMP JUMPDEST PUSH2 0x21AE JUMPI PUSH2 0x2144 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x14 PUSH2 0x25EE JUMP JUMPDEST PUSH2 0x2152 DUP4 PUSH1 0x0 SHR PUSH1 0x20 PUSH2 0x25EE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2163 SWAP3 SWAP2 SWAP1 PUSH2 0x3A2E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x21A5 SWAP2 SWAP1 PUSH2 0x3AA1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x65599BF746E17A00EA62E3610586992D88101B78EEC3CF380706621FB97EA837 SLOAD SWAP2 POP PUSH32 0xB969D79D88ACD02D04ED7EE7D43B949E7DAF093D363ABCFBBC43DFDFD1CE969A SLOAD SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x2374 JUMPI PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x22D7 JUMPI DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x20BC4425 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x22B0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x22D4 SWAP2 SWAP1 PUSH2 0x3AD8 JUMP JUMPDEST SWAP2 POP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xB6D200DE PUSH32 0xA9214CC96615E0085D3BB077758DB69497DC2DCE3B2B1E97BC93C3D18D83EFD3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2330 SWAP2 SWAP1 PUSH2 0x3B57 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x234D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2371 SWAP2 SWAP1 PUSH2 0x3BB0 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x23B1 JUMPI PUSH2 0x23B0 PUSH2 0x3BDD JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x23EE JUMPI PUSH2 0x23ED PUSH2 0x3BDD JUMP JUMPDEST JUMPDEST SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x23FE PUSH2 0x1982 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0xC ADD PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0xC ADD PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD SLOAD SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x24C3 DUP10 DUP10 PUSH2 0x282A JUMP JUMPDEST SWAP4 POP POP SWAP3 POP SWAP3 POP PUSH1 0x0 DUP4 DUP4 PUSH2 0x24D8 SWAP2 SWAP1 PUSH2 0x3C0C JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 DUP6 EQ PUSH2 0x2515 JUMPI DUP6 DUP6 PUSH2 0x24FC SWAP2 SWAP1 PUSH2 0x34ED JUMP JUMPDEST DUP2 PUSH2 0x2507 SWAP2 SWAP1 PUSH2 0x3755 JUMP JUMPDEST SWAP8 POP POP POP POP POP POP POP POP PUSH2 0x2574 JUMP JUMPDEST PUSH1 0x0 DUP3 EQ PUSH2 0x2542 JUMPI DUP6 DUP3 PUSH2 0x2529 SWAP2 SWAP1 PUSH2 0x34ED JUMP JUMPDEST DUP2 PUSH2 0x2534 SWAP2 SWAP1 PUSH2 0x3755 JUMP JUMPDEST SWAP8 POP POP POP POP POP POP POP POP PUSH2 0x2574 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xAE1C061F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2584 PUSH2 0x292F JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x2 DUP4 PUSH1 0x2 PUSH2 0x2601 SWAP2 SWAP1 PUSH2 0x3755 JUMP JUMPDEST PUSH2 0x260B SWAP2 SWAP1 PUSH2 0x3521 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2624 JUMPI PUSH2 0x2623 PUSH2 0x3009 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2656 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x268E JUMPI PUSH2 0x268D PUSH2 0x3555 JUMP JUMPDEST JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH32 0x7800000000000000000000000000000000000000000000000000000000000000 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x26F2 JUMPI PUSH2 0x26F1 PUSH2 0x3555 JUMP JUMPDEST JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x0 PUSH1 0x1 DUP5 PUSH1 0x2 PUSH2 0x2732 SWAP2 SWAP1 PUSH2 0x3755 JUMP JUMPDEST PUSH2 0x273C SWAP2 SWAP1 PUSH2 0x3521 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x27DC JUMPI PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 PUSH1 0xF DUP7 AND PUSH1 0x10 DUP2 LT PUSH2 0x277E JUMPI PUSH2 0x277D PUSH2 0x3555 JUMP JUMPDEST JUMPDEST BYTE PUSH1 0xF8 SHL DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2795 JUMPI PUSH2 0x2794 PUSH2 0x3555 JUMP JUMPDEST JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x4 DUP6 SWAP1 SHR SWAP5 POP DUP1 PUSH2 0x27D5 SWAP1 PUSH2 0x3C4C JUMP JUMPDEST SWAP1 POP PUSH2 0x273F JUMP JUMPDEST POP PUSH1 0x0 DUP5 EQ PUSH2 0x2820 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2817 SWAP1 PUSH2 0x3CC1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x283A PUSH2 0x1982 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0xC ADD PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0xC ADD PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 POP PUSH2 0x291B DUP3 DUP11 DUP4 PUSH2 0x295C JUMP JUMPDEST SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP POP POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x4CD15452B25E815D3F9D1A3C7EDD985A178EDF5EB3461A1ACBF855517423D694 SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x296A PUSH2 0x2C00 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xB SIGNEXTEND PUSH2 0x2A11 PUSH2 0x2C00 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0xC SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2AC3 PUSH2 0x2C00 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0x2B5D PUSH2 0x2C00 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x9CD9AFE22FEA86221D6E8117226B65BB0E2AF8C4F5B8ABF255FB0AFCAD4A3A9C SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2CAD DUP3 PUSH2 0x2C82 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2CBD DUP2 PUSH2 0x2CA2 JUMP JUMPDEST DUP2 EQ PUSH2 0x2CC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x2CDA DUP2 PUSH2 0x2CB4 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2CF3 DUP2 PUSH2 0x2CE0 JUMP JUMPDEST DUP2 EQ PUSH2 0x2CFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x2D10 DUP2 PUSH2 0x2CEA JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2D2D JUMPI PUSH2 0x2D2C PUSH2 0x2C78 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2D3B DUP6 DUP3 DUP7 ADD PUSH2 0x2CCB JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x2D4C DUP6 DUP3 DUP7 ADD PUSH2 0x2D01 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x2D5F DUP2 PUSH2 0x2CA2 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x2D6E DUP2 PUSH2 0x2CE0 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x2D89 PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x2D56 JUMP JUMPDEST PUSH2 0x2D96 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x2D65 JUMP JUMPDEST PUSH2 0x2DA3 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x2D65 JUMP JUMPDEST PUSH2 0x2DB0 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x2D65 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2DCF JUMPI PUSH2 0x2DCE PUSH2 0x2C78 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2DDD DUP5 DUP3 DUP6 ADD PUSH2 0x2CCB JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2DFD DUP2 PUSH2 0x2DE6 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2E18 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2DF4 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2E34 JUMPI PUSH2 0x2E33 PUSH2 0x2C78 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2E42 DUP5 DUP3 DUP6 ADD PUSH2 0x2D01 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0xB SIGNEXTEND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2E61 DUP2 PUSH2 0x2E4B JUMP JUMPDEST DUP2 EQ PUSH2 0x2E6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x2E7E DUP2 PUSH2 0x2E58 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2E9B JUMPI PUSH2 0x2E9A PUSH2 0x2C78 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2EA9 DUP6 DUP3 DUP7 ADD PUSH2 0x2CCB JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x2EBA DUP6 DUP3 DUP7 ADD PUSH2 0x2E6F JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2ED9 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2D65 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2F00 DUP2 PUSH2 0x2EDF JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x2F1B PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x2DF4 JUMP JUMPDEST PUSH2 0x2F28 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x2EF7 JUMP JUMPDEST PUSH2 0x2F35 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x2EF7 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2F52 DUP2 PUSH2 0x2F3D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2F6D PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2F49 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2F8A JUMPI PUSH2 0x2F89 PUSH2 0x2C78 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2F98 DUP6 DUP3 DUP7 ADD PUSH2 0x2D01 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x2FA9 DUP6 DUP3 DUP7 ADD PUSH2 0x2CCB JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2FCA JUMPI PUSH2 0x2FC9 PUSH2 0x2C78 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2FD8 DUP6 DUP3 DUP7 ADD PUSH2 0x2CCB JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x2FE9 DUP6 DUP3 DUP7 ADD PUSH2 0x2CCB JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x3041 DUP3 PUSH2 0x2FF8 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x3060 JUMPI PUSH2 0x305F PUSH2 0x3009 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3073 PUSH2 0x2C6E JUMP JUMPDEST SWAP1 POP PUSH2 0x307F DUP3 DUP3 PUSH2 0x3038 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x309F JUMPI PUSH2 0x309E PUSH2 0x3009 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x30BE DUP2 PUSH2 0x2DE6 JUMP JUMPDEST DUP2 EQ PUSH2 0x30C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x30DB DUP2 PUSH2 0x30B5 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x30F4 PUSH2 0x30EF DUP5 PUSH2 0x3084 JUMP JUMPDEST PUSH2 0x3069 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x3117 JUMPI PUSH2 0x3116 PUSH2 0x30B0 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3140 JUMPI DUP1 PUSH2 0x312C DUP9 DUP3 PUSH2 0x30CC JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x3119 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x315F JUMPI PUSH2 0x315E PUSH2 0x2FF3 JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x316F DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x30E1 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x3193 JUMPI PUSH2 0x3192 PUSH2 0x3009 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x31AD DUP2 PUSH2 0x2EDF JUMP JUMPDEST DUP2 EQ PUSH2 0x31B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x31CA DUP2 PUSH2 0x31A4 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x31E3 PUSH2 0x31DE DUP5 PUSH2 0x3178 JUMP JUMPDEST PUSH2 0x3069 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x3206 JUMPI PUSH2 0x3205 PUSH2 0x30B0 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x322F JUMPI DUP1 PUSH2 0x321B DUP9 DUP3 PUSH2 0x31BB JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x3208 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x324E JUMPI PUSH2 0x324D PUSH2 0x2FF3 JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x325E DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x31D0 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x3282 JUMPI PUSH2 0x3281 PUSH2 0x3009 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x32A6 PUSH2 0x32A1 DUP5 PUSH2 0x3267 JUMP JUMPDEST PUSH2 0x3069 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x32C9 JUMPI PUSH2 0x32C8 PUSH2 0x30B0 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x32F2 JUMPI DUP1 PUSH2 0x32DE DUP9 DUP3 PUSH2 0x2D01 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x32CB JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3311 JUMPI PUSH2 0x3310 PUSH2 0x2FF3 JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3321 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x3293 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3344 JUMPI PUSH2 0x3343 PUSH2 0x2C78 JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3362 JUMPI PUSH2 0x3361 PUSH2 0x2C7D JUMP JUMPDEST JUMPDEST PUSH2 0x336E DUP8 DUP3 DUP9 ADD PUSH2 0x314A JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x338F JUMPI PUSH2 0x338E PUSH2 0x2C7D JUMP JUMPDEST JUMPDEST PUSH2 0x339B DUP8 DUP3 DUP9 ADD PUSH2 0x3239 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x33BC JUMPI PUSH2 0x33BB PUSH2 0x2C7D JUMP JUMPDEST JUMPDEST PUSH2 0x33C8 DUP8 DUP3 DUP9 ADD PUSH2 0x3239 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x33E9 JUMPI PUSH2 0x33E8 PUSH2 0x2C7D JUMP JUMPDEST JUMPDEST PUSH2 0x33F5 DUP8 DUP3 DUP9 ADD PUSH2 0x32FC JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3418 JUMPI PUSH2 0x3417 PUSH2 0x2C78 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x3426 DUP6 DUP3 DUP7 ADD PUSH2 0x30CC JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x3437 DUP6 DUP3 DUP7 ADD PUSH2 0x2CCB JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x535452415445474953545F524F4C450000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3488 PUSH1 0xF DUP4 PUSH2 0x3441 JUMP JUMPDEST SWAP2 POP PUSH2 0x3493 DUP3 PUSH2 0x3452 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x34B7 DUP2 PUSH2 0x347B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x34F8 DUP3 PUSH2 0x2CE0 JUMP JUMPDEST SWAP2 POP PUSH2 0x3503 DUP4 PUSH2 0x2CE0 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP DUP2 DUP2 GT ISZERO PUSH2 0x351B JUMPI PUSH2 0x351A PUSH2 0x34BE JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x352C DUP3 PUSH2 0x2CE0 JUMP JUMPDEST SWAP2 POP PUSH2 0x3537 DUP4 PUSH2 0x2CE0 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x354F JUMPI PUSH2 0x354E PUSH2 0x34BE JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x358F DUP3 PUSH2 0x2CE0 JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x35C1 JUMPI PUSH2 0x35C0 PUSH2 0x34BE JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x5452454153555245525F524F4C45000000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3602 PUSH1 0xE DUP4 PUSH2 0x3441 JUMP JUMPDEST SWAP2 POP PUSH2 0x360D DUP3 PUSH2 0x35CC JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3631 DUP2 PUSH2 0x35F5 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x364D PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x2D56 JUMP JUMPDEST PUSH2 0x365A PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2D65 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x366A DUP2 PUSH2 0x2F3D JUMP JUMPDEST DUP2 EQ PUSH2 0x3675 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x3687 DUP2 PUSH2 0x3661 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x36A3 JUMPI PUSH2 0x36A2 PUSH2 0x2C78 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x36B1 DUP5 DUP3 DUP6 ADD PUSH2 0x3678 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x36CF PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x2D56 JUMP JUMPDEST PUSH2 0x36DC PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x2D56 JUMP JUMPDEST PUSH2 0x36E9 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x2D65 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x36FC DUP3 PUSH2 0x2E4B JUMP JUMPDEST SWAP2 POP PUSH2 0x3707 DUP4 PUSH2 0x2E4B JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800000000000000000000000 DUP2 SLT PUSH12 0x7FFFFFFFFFFFFFFFFFFFFFFF DUP3 SGT OR ISZERO PUSH2 0x374F JUMPI PUSH2 0x374E PUSH2 0x34BE JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3760 DUP3 PUSH2 0x2CE0 JUMP JUMPDEST SWAP2 POP PUSH2 0x376B DUP4 PUSH2 0x2CE0 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 MUL PUSH2 0x3779 DUP2 PUSH2 0x2CE0 JUMP JUMPDEST SWAP2 POP DUP3 DUP3 DIV DUP5 EQ DUP4 ISZERO OR PUSH2 0x3790 JUMPI PUSH2 0x378F PUSH2 0x34BE JUMP JUMPDEST JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x37AC PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2D56 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x37C1 DUP2 PUSH2 0x2CEA JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x37DD JUMPI PUSH2 0x37DC PUSH2 0x2C78 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x37EB DUP5 DUP3 DUP6 ADD PUSH2 0x37B2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3819 PUSH2 0x3814 PUSH2 0x380F DUP5 PUSH2 0x2C82 JUMP JUMPDEST PUSH2 0x37F4 JUMP JUMPDEST PUSH2 0x2C82 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x382B DUP3 PUSH2 0x37FE JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x383D DUP3 PUSH2 0x3820 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x384D DUP2 PUSH2 0x3832 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x385C DUP2 PUSH2 0x2E4B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x3877 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x3844 JUMP JUMPDEST PUSH2 0x3884 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3853 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x38A0 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x3844 JUMP JUMPDEST PUSH2 0x38AD PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2D56 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x38C3 DUP2 PUSH2 0x2E58 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x38DF JUMPI PUSH2 0x38DE PUSH2 0x2C78 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x38ED DUP5 DUP3 DUP6 ADD PUSH2 0x38B4 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x416363657373436F6E74726F6C3A206163636F756E7420000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3966 PUSH1 0x17 DUP4 PUSH2 0x3925 JUMP JUMPDEST SWAP2 POP PUSH2 0x3971 DUP3 PUSH2 0x3930 JUMP JUMPDEST PUSH1 0x17 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x39A5 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x398A JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x39BC DUP3 PUSH2 0x397C JUMP JUMPDEST PUSH2 0x39C6 DUP2 DUP6 PUSH2 0x3925 JUMP JUMPDEST SWAP4 POP PUSH2 0x39D6 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x3987 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x206973206D697373696E6720726F6C6520000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A18 PUSH1 0x11 DUP4 PUSH2 0x3925 JUMP JUMPDEST SWAP2 POP PUSH2 0x3A23 DUP3 PUSH2 0x39E2 JUMP JUMPDEST PUSH1 0x11 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A39 DUP3 PUSH2 0x3959 JUMP JUMPDEST SWAP2 POP PUSH2 0x3A45 DUP3 DUP6 PUSH2 0x39B1 JUMP JUMPDEST SWAP2 POP PUSH2 0x3A50 DUP3 PUSH2 0x3A0B JUMP JUMPDEST SWAP2 POP PUSH2 0x3A5C DUP3 DUP5 PUSH2 0x39B1 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A73 DUP3 PUSH2 0x397C JUMP JUMPDEST PUSH2 0x3A7D DUP2 DUP6 PUSH2 0x3441 JUMP JUMPDEST SWAP4 POP PUSH2 0x3A8D DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x3987 JUMP JUMPDEST PUSH2 0x3A96 DUP2 PUSH2 0x2FF8 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3ABB DUP2 DUP5 PUSH2 0x3A68 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x3AD2 DUP2 PUSH2 0x2CB4 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3AEE JUMPI PUSH2 0x3AED PUSH2 0x2C78 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x3AFC DUP5 DUP3 DUP6 ADD PUSH2 0x3AC3 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 SHL SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B41 PUSH2 0x3B3C PUSH2 0x3B37 DUP5 PUSH2 0x3B05 JUMP JUMPDEST PUSH2 0x3B19 JUMP JUMPDEST PUSH2 0x3B0F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3B51 DUP2 PUSH2 0x3B26 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x3B6C PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x3B48 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B7D DUP3 PUSH2 0x2CA2 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3B8D DUP2 PUSH2 0x3B72 JUMP JUMPDEST DUP2 EQ PUSH2 0x3B98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x3BAA DUP2 PUSH2 0x3B84 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3BC6 JUMPI PUSH2 0x3BC5 PUSH2 0x2C78 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x3BD4 DUP5 DUP3 DUP6 ADD PUSH2 0x3B9B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3C17 DUP3 PUSH2 0x2EDF JUMP JUMPDEST SWAP2 POP PUSH2 0x3C22 DUP4 PUSH2 0x2EDF JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3C46 JUMPI PUSH2 0x3C45 PUSH2 0x34BE JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C57 DUP3 PUSH2 0x2CE0 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 DUP3 SUB PUSH2 0x3C6A JUMPI PUSH2 0x3C69 PUSH2 0x34BE JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 SUB SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x537472696E67733A20686578206C656E67746820696E73756666696369656E74 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3CAB PUSH1 0x20 DUP4 PUSH2 0x3441 JUMP JUMPDEST SWAP2 POP PUSH2 0x3CB6 DUP3 PUSH2 0x3C75 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3CDA DUP2 PUSH2 0x3C9E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC4 0xE7 JUMPI 0x21 PUSH9 0xB3D5831E83E3433EA9 CODESIZE NOT SWAP1 ORIGIN 0xC5 SELFDESTRUCT 0xC0 0xE0 0xEA JUMPI PUSH24 0x95DA4CA37CCD8364736F6C63430008120033000000000000 ","sourceMap":"391:6696:22:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_addSuperToken_12102":{"entryPoint":3216,"id":12102,"parameterSlots":1,"returnSlots":0},"@_calculateAmountFee_11976":{"entryPoint":9203,"id":11976,"parameterSlots":2,"returnSlots":1},"@_checkRole_14543":{"entryPoint":6575,"id":14543,"parameterSlots":1,"returnSlots":0},"@_checkRole_14585":{"entryPoint":8469,"id":14585,"parameterSlots":2,"returnSlots":0},"@_clearBPS_12168":{"entryPoint":4866,"id":12168,"parameterSlots":0,"returnSlots":0},"@_depositAsset_11720":{"entryPoint":4131,"id":11720,"parameterSlots":2,"returnSlots":0},"@_getAppFeeBalance_11891":{"entryPoint":7557,"id":11891,"parameterSlots":3,"returnSlots":1},"@_getAssetTotal_12556":{"entryPoint":5449,"id":12556,"parameterSlots":1,"returnSlots":1},"@_getAssetUser_12542":{"entryPoint":5531,"id":12542,"parameterSlots":2,"returnSlots":1},"@_getBPSData_12430":{"entryPoint":4738,"id":12430,"parameterSlots":1,"returnSlots":3},"@_getBPSSize_12367":{"entryPoint":5218,"id":12367,"parameterSlots":0,"returnSlots":1},"@_getControlData_12301":{"entryPoint":2753,"id":12301,"parameterSlots":2,"returnSlots":4},"@_getFeeBalance_12235":{"entryPoint":5823,"id":12235,"parameterSlots":1,"returnSlots":1},"@_getHostAndCFA_4994":{"entryPoint":8626,"id":4994,"parameterSlots":1,"returnSlots":2},"@_getMinimumEndDuration_12311":{"entryPoint":4719,"id":12311,"parameterSlots":0,"returnSlots":1},"@_getMinimumLifespan_12321":{"entryPoint":5905,"id":12321,"parameterSlots":0,"returnSlots":1},"@_getNewBufferedAppBalance_12495":{"entryPoint":4534,"id":12495,"parameterSlots":2,"returnSlots":1},"@_getNewNonce_12052":{"entryPoint":5013,"id":12052,"parameterSlots":1,"returnSlots":1},"@_getSBPS_12444":{"entryPoint":3316,"id":12444,"parameterSlots":1,"returnSlots":1},"@_getSTBufferDurationInSecond_12331":{"entryPoint":4994,"id":12331,"parameterSlots":0,"returnSlots":1},"@_getSessionDataFromControl_14178":{"entryPoint":10282,"id":14178,"parameterSlots":2,"returnSlots":4},"@_getSessionData_14070":{"entryPoint":10588,"id":14070,"parameterSlots":3,"returnSlots":4},"@_hasRole_14531":{"entryPoint":9594,"id":14531,"parameterSlots":2,"returnSlots":1},"@_isBPSEnabled_12355":{"entryPoint":5186,"id":12355,"parameterSlots":0,"returnSlots":1},"@_isNewFlowRateAllowed_12524":{"entryPoint":5675,"id":12524,"parameterSlots":2,"returnSlots":1},"@_isSuperTokensSupported_12345":{"entryPoint":5244,"id":12345,"parameterSlots":1,"returnSlots":1},"@_realizeFeeBalance_11830":{"entryPoint":5339,"id":11830,"parameterSlots":2,"returnSlots":0},"@_removeSuperToken_12115":{"entryPoint":5095,"id":12115,"parameterSlots":1,"returnSlots":0},"@_requireNonZeroValue_11989":{"entryPoint":3412,"id":11989,"parameterSlots":1,"returnSlots":0},"@_requireOnlyRole_14512":{"entryPoint":3204,"id":14512,"parameterSlots":1,"returnSlots":0},"@_requireSuperTokenSupported_12003":{"entryPoint":4065,"id":12003,"parameterSlots":1,"returnSlots":0},"@_requireValidBasisPoints_12038":{"entryPoint":7819,"id":12038,"parameterSlots":1,"returnSlots":0},"@_setBPS_12201":{"entryPoint":5924,"id":12201,"parameterSlots":4,"returnSlots":0},"@_setMinimumEndDuration_12064":{"entryPoint":4700,"id":12064,"parameterSlots":1,"returnSlots":0},"@_setMinimumLifespan_12076":{"entryPoint":3473,"id":12076,"parameterSlots":1,"returnSlots":0},"@_setSBPS_12221":{"entryPoint":6060,"id":12221,"parameterSlots":2,"returnSlots":0},"@_setSTBufferAmount_12088":{"entryPoint":4515,"id":12088,"parameterSlots":1,"returnSlots":0},"@_storageAccessControl_14502":{"entryPoint":10543,"id":14502,"parameterSlots":0,"returnSlots":1},"@_storageControl_11680":{"entryPoint":6530,"id":11680,"parameterSlots":0,"returnSlots":1},"@_storageSession_13646":{"entryPoint":11264,"id":13646,"parameterSlots":0,"returnSlots":1},"@_toggleBPS_12128":{"entryPoint":4804,"id":12128,"parameterSlots":0,"returnSlots":0},"@_withdrawAsset_11770":{"entryPoint":3492,"id":11770,"parameterSlots":2,"returnSlots":0},"@_withdrawFeeBalance_11810":{"entryPoint":6172,"id":11810,"parameterSlots":2,"returnSlots":0},"@addSuperToken_9237":{"entryPoint":1453,"id":9237,"parameterSlots":1,"returnSlots":0},"@clearBPS_9288":{"entryPoint":1880,"id":9288,"parameterSlots":0,"returnSlots":0},"@depositAsset_9090":{"entryPoint":1608,"id":9090,"parameterSlots":2,"returnSlots":0},"@getAssetTotal_9608":{"entryPoint":2087,"id":9608,"parameterSlots":1,"returnSlots":1},"@getAssetUser_9595":{"entryPoint":2105,"id":9595,"parameterSlots":2,"returnSlots":1},"@getBPSData_9534":{"entryPoint":1798,"id":9534,"parameterSlots":1,"returnSlots":3},"@getBPSSize_9517":{"entryPoint":2040,"id":9517,"parameterSlots":0,"returnSlots":1},"@getBufferAmountByFlowRate_3327":{"entryPoint":6588,"id":3327,"parameterSlots":2,"returnSlots":1},"@getControlData_9441":{"entryPoint":1420,"id":9441,"parameterSlots":2,"returnSlots":4},"@getFeeBalance_9419":{"entryPoint":2145,"id":9419,"parameterSlots":1,"returnSlots":1},"@getKeyAtIndex_14238":{"entryPoint":7088,"id":14238,"parameterSlots":2,"returnSlots":1},"@getMinimumEndDuration_9464":{"entryPoint":1783,"id":9464,"parameterSlots":0,"returnSlots":1},"@getMinimumLifespan_9474":{"entryPoint":2163,"id":9474,"parameterSlots":0,"returnSlots":1},"@getNetFlowRate_3271":{"entryPoint":6736,"id":3271,"parameterSlots":2,"returnSlots":1},"@getNewBufferedAppBalance_9563":{"entryPoint":1697,"id":9563,"parameterSlots":2,"returnSlots":1},"@getNewControlNonce_9454":{"entryPoint":1950,"id":9454,"parameterSlots":1,"returnSlots":1},"@getSBPS_9547":{"entryPoint":1510,"id":9547,"parameterSlots":1,"returnSlots":1},"@getSTBufferDurationInSecond_9484":{"entryPoint":1935,"id":9484,"parameterSlots":0,"returnSlots":1},"@get_14222":{"entryPoint":6884,"id":14222,"parameterSlots":2,"returnSlots":1},"@isBPSEnabled_9507":{"entryPoint":2025,"id":9507,"parameterSlots":0,"returnSlots":1},"@isNewFlowRateAllowed_9579":{"entryPoint":2125,"id":9579,"parameterSlots":2,"returnSlots":1},"@isSuperTokensSupported_9497":{"entryPoint":2055,"id":9497,"parameterSlots":1,"returnSlots":1},"@realizeFeeBalance_9143":{"entryPoint":2073,"id":9143,"parameterSlots":2,"returnSlots":0},"@removeSuperToken_9256":{"entryPoint":1968,"id":9256,"parameterSlots":1,"returnSlots":0},"@remove_14433":{"entryPoint":7131,"id":14433,"parameterSlots":2,"returnSlots":0},"@setBPS_9384":{"entryPoint":2178,"id":9384,"parameterSlots":4,"returnSlots":0},"@setMinimumEndDuration_9168":{"entryPoint":1717,"id":9168,"parameterSlots":1,"returnSlots":0},"@setMinimumLifespan_9193":{"entryPoint":1528,"id":9193,"parameterSlots":1,"returnSlots":0},"@setSBPS_9406":{"entryPoint":2635,"id":9406,"parameterSlots":2,"returnSlots":0},"@setSTBufferAmount_9218":{"entryPoint":1631,"id":9218,"parameterSlots":1,"returnSlots":0},"@set_14353":{"entryPoint":7908,"id":14353,"parameterSlots":5,"returnSlots":0},"@size_14251":{"entryPoint":7540,"id":14251,"parameterSlots":1,"returnSlots":1},"@toHexString_1041":{"entryPoint":9710,"id":1041,"parameterSlots":2,"returnSlots":1},"@toggleBPS_9272":{"entryPoint":1825,"id":9272,"parameterSlots":0,"returnSlots":0},"@withdrawAsset_9105":{"entryPoint":1594,"id":9105,"parameterSlots":2,"returnSlots":0},"@withdrawFeeBalance_9127":{"entryPoint":2694,"id":9127,"parameterSlots":2,"returnSlots":0},"abi_decode_available_length_t_array$_t_uint16_$dyn_memory_ptr":{"entryPoint":12513,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr":{"entryPoint":12947,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_available_length_t_array$_t_uint96_$dyn_memory_ptr":{"entryPoint":12752,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_t_address":{"entryPoint":11467,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_address_fromMemory":{"entryPoint":15043,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_array$_t_uint16_$dyn_memory_ptr":{"entryPoint":12618,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_array$_t_uint256_$dyn_memory_ptr":{"entryPoint":13052,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_array$_t_uint96_$dyn_memory_ptr":{"entryPoint":12857,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bool_fromMemory":{"entryPoint":13944,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_contract$_ISuperAgreement_$6395_fromMemory":{"entryPoint":15259,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_int96":{"entryPoint":11887,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_int96_fromMemory":{"entryPoint":14516,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint16":{"entryPoint":12492,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint256":{"entryPoint":11521,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint256_fromMemory":{"entryPoint":14258,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint96":{"entryPoint":12731,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":11705,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":15064,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":12211,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_int96":{"entryPoint":11908,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":11542,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_array$_t_uint16_$dyn_memory_ptrt_array$_t_uint96_$dyn_memory_ptrt_array$_t_uint96_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr":{"entryPoint":13098,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_bool_fromMemory":{"entryPoint":13965,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_ISuperAgreement_$6395_fromMemory":{"entryPoint":15280,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_int96_fromMemory":{"entryPoint":14537,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint16t_address":{"entryPoint":13313,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint256":{"entryPoint":11806,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256_fromMemory":{"entryPoint":14279,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256t_address":{"entryPoint":12147,"id":null,"parameterSlots":2,"returnSlots":2},"abi_encode_t_address_to_t_address_fromStack":{"entryPoint":11606,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bool_to_t_bool_fromStack":{"entryPoint":12105,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_contract$_ISuperToken_$6947_to_t_address_fromStack":{"entryPoint":14404,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_int96_to_t_int96_fromStack":{"entryPoint":14419,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1_to_t_bytes32_fromStack":{"entryPoint":15176,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack":{"entryPoint":14952,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":14769,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2_to_t_string_memory_ptr_fromStack":{"entryPoint":15518,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_17a8e30262c1f919c33056d877a3c22b95c2f5e4dac44683c1c2323cd79fbdb0_to_t_string_memory_ptr_fromStack":{"entryPoint":13435,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07_to_t_string_memory_ptr_fromStack":{"entryPoint":13813,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_to_t_string_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":14681,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_to_t_string_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":14859,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_uint16_to_t_uint16_fromStack":{"entryPoint":11764,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_uint256_to_t_uint256_fromStack":{"entryPoint":11621,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_uint96_to_t_uint96_fromStack":{"entryPoint":12023,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_tuple_packed_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_t_string_memory_ptr_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":14894,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":14231,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed":{"entryPoint":14010,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed":{"entryPoint":13880,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address_t_uint256_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":11636,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":12120,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_ISuperToken_$6947_t_address__to_t_address_t_address__fromStack_reversed":{"entryPoint":14475,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_contract$_ISuperToken_$6947_t_int96__to_t_address_t_int96__fromStack_reversed":{"entryPoint":14434,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1__to_t_bytes32__fromStack_reversed":{"entryPoint":15191,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":15009,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":15553,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_17a8e30262c1f919c33056d877a3c22b95c2f5e4dac44683c1c2323cd79fbdb0__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":13470,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":13848,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint16__to_t_uint16__fromStack_reversed":{"entryPoint":11779,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint16_t_uint96_t_uint96__to_t_uint16_t_uint96_t_uint96__fromStack_reversed":{"entryPoint":12038,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":11972,"id":null,"parameterSlots":2,"returnSlots":1},"allocate_memory":{"entryPoint":12393,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":11374,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_t_array$_t_uint16_$dyn_memory_ptr":{"entryPoint":12420,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr":{"entryPoint":12903,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_t_array$_t_uint96_$dyn_memory_ptr":{"entryPoint":12664,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_string_memory_ptr":{"entryPoint":14716,"id":null,"parameterSlots":1,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_fromStack":{"entryPoint":13377,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":14629,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_int96":{"entryPoint":14065,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":13601,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_t_uint256":{"entryPoint":14165,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":13549,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint96":{"entryPoint":15372,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_t_address":{"entryPoint":11426,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_bool":{"entryPoint":12093,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_bytes32":{"entryPoint":15119,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_contract$_ISuperAgreement_$6395":{"entryPoint":15218,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_int96":{"entryPoint":11851,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1":{"entryPoint":15109,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint16":{"entryPoint":11750,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint160":{"entryPoint":11394,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint256":{"entryPoint":11488,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint96":{"entryPoint":11999,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_contract$_ISuperToken_$6947_to_t_address":{"entryPoint":14386,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1_to_t_bytes32":{"entryPoint":15142,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_uint160_to_t_address":{"entryPoint":14368,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_uint160_to_t_uint160":{"entryPoint":14334,"id":null,"parameterSlots":1,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":14727,"id":null,"parameterSlots":3,"returnSlots":0},"decrement_t_uint256":{"entryPoint":15436,"id":null,"parameterSlots":1,"returnSlots":1},"finalize_allocation":{"entryPoint":12344,"id":null,"parameterSlots":2,"returnSlots":0},"identity":{"entryPoint":14324,"id":null,"parameterSlots":1,"returnSlots":1},"increment_t_uint256":{"entryPoint":13700,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x01":{"entryPoint":15325,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x11":{"entryPoint":13502,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x31":{"entryPoint":14582,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":13653,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":12297,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":12275,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef":{"entryPoint":12464,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":11389,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":11384,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of_32":{"entryPoint":12280,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_0":{"entryPoint":15129,"id":null,"parameterSlots":1,"returnSlots":1},"store_literal_in_memory_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2":{"entryPoint":15477,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_17a8e30262c1f919c33056d877a3c22b95c2f5e4dac44683c1c2323cd79fbdb0":{"entryPoint":13394,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07":{"entryPoint":13772,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874":{"entryPoint":14640,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69":{"entryPoint":14818,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_address":{"entryPoint":11444,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_bool":{"entryPoint":13921,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_contract$_ISuperAgreement_$6395":{"entryPoint":15236,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_int96":{"entryPoint":11864,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_uint16":{"entryPoint":12469,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_uint256":{"entryPoint":11498,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_uint96":{"entryPoint":12708,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:30939:43","statements":[{"body":{"nodeType":"YulBlock","src":"47:35:43","statements":[{"nodeType":"YulAssignment","src":"57:19:43","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"73:2:43","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"67:5:43"},"nodeType":"YulFunctionCall","src":"67:9:43"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"57:6:43"}]}]},"name":"allocate_unbounded","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"40:6:43","type":""}],"src":"7:75:43"},{"body":{"nodeType":"YulBlock","src":"177:28:43","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"194:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"197:1:43","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"187:6:43"},"nodeType":"YulFunctionCall","src":"187:12:43"},"nodeType":"YulExpressionStatement","src":"187:12:43"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulFunctionDefinition","src":"88:117:43"},{"body":{"nodeType":"YulBlock","src":"300:28:43","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"317:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"320:1:43","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"310:6:43"},"nodeType":"YulFunctionCall","src":"310:12:43"},"nodeType":"YulExpressionStatement","src":"310:12:43"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulFunctionDefinition","src":"211:117:43"},{"body":{"nodeType":"YulBlock","src":"379:81:43","statements":[{"nodeType":"YulAssignment","src":"389:65:43","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"404:5:43"},{"kind":"number","nodeType":"YulLiteral","src":"411:42:43","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"400:3:43"},"nodeType":"YulFunctionCall","src":"400:54:43"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"389:7:43"}]}]},"name":"cleanup_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"361:5:43","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"371:7:43","type":""}],"src":"334:126:43"},{"body":{"nodeType":"YulBlock","src":"511:51:43","statements":[{"nodeType":"YulAssignment","src":"521:35:43","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"550:5:43"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"532:17:43"},"nodeType":"YulFunctionCall","src":"532:24:43"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"521:7:43"}]}]},"name":"cleanup_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"493:5:43","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"503:7:43","type":""}],"src":"466:96:43"},{"body":{"nodeType":"YulBlock","src":"611:79:43","statements":[{"body":{"nodeType":"YulBlock","src":"668:16:43","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"677:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"680:1:43","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"670:6:43"},"nodeType":"YulFunctionCall","src":"670:12:43"},"nodeType":"YulExpressionStatement","src":"670:12:43"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"634:5:43"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"659:5:43"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"641:17:43"},"nodeType":"YulFunctionCall","src":"641:24:43"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"631:2:43"},"nodeType":"YulFunctionCall","src":"631:35:43"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"624:6:43"},"nodeType":"YulFunctionCall","src":"624:43:43"},"nodeType":"YulIf","src":"621:63:43"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"604:5:43","type":""}],"src":"568:122:43"},{"body":{"nodeType":"YulBlock","src":"748:87:43","statements":[{"nodeType":"YulAssignment","src":"758:29:43","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"780:6:43"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"767:12:43"},"nodeType":"YulFunctionCall","src":"767:20:43"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"758:5:43"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"823:5:43"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"796:26:43"},"nodeType":"YulFunctionCall","src":"796:33:43"},"nodeType":"YulExpressionStatement","src":"796:33:43"}]},"name":"abi_decode_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"726:6:43","type":""},{"name":"end","nodeType":"YulTypedName","src":"734:3:43","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"742:5:43","type":""}],"src":"696:139:43"},{"body":{"nodeType":"YulBlock","src":"886:32:43","statements":[{"nodeType":"YulAssignment","src":"896:16:43","value":{"name":"value","nodeType":"YulIdentifier","src":"907:5:43"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"896:7:43"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"868:5:43","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"878:7:43","type":""}],"src":"841:77:43"},{"body":{"nodeType":"YulBlock","src":"967:79:43","statements":[{"body":{"nodeType":"YulBlock","src":"1024:16:43","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1033:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1036:1:43","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1026:6:43"},"nodeType":"YulFunctionCall","src":"1026:12:43"},"nodeType":"YulExpressionStatement","src":"1026:12:43"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"990:5:43"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1015:5:43"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"997:17:43"},"nodeType":"YulFunctionCall","src":"997:24:43"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"987:2:43"},"nodeType":"YulFunctionCall","src":"987:35:43"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"980:6:43"},"nodeType":"YulFunctionCall","src":"980:43:43"},"nodeType":"YulIf","src":"977:63:43"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"960:5:43","type":""}],"src":"924:122:43"},{"body":{"nodeType":"YulBlock","src":"1104:87:43","statements":[{"nodeType":"YulAssignment","src":"1114:29:43","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1136:6:43"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1123:12:43"},"nodeType":"YulFunctionCall","src":"1123:20:43"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1114:5:43"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1179:5:43"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"1152:26:43"},"nodeType":"YulFunctionCall","src":"1152:33:43"},"nodeType":"YulExpressionStatement","src":"1152:33:43"}]},"name":"abi_decode_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1082:6:43","type":""},{"name":"end","nodeType":"YulTypedName","src":"1090:3:43","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1098:5:43","type":""}],"src":"1052:139:43"},{"body":{"nodeType":"YulBlock","src":"1280:391:43","statements":[{"body":{"nodeType":"YulBlock","src":"1326:83:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"1328:77:43"},"nodeType":"YulFunctionCall","src":"1328:79:43"},"nodeType":"YulExpressionStatement","src":"1328:79:43"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1301:7:43"},{"name":"headStart","nodeType":"YulIdentifier","src":"1310:9:43"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1297:3:43"},"nodeType":"YulFunctionCall","src":"1297:23:43"},{"kind":"number","nodeType":"YulLiteral","src":"1322:2:43","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1293:3:43"},"nodeType":"YulFunctionCall","src":"1293:32:43"},"nodeType":"YulIf","src":"1290:119:43"},{"nodeType":"YulBlock","src":"1419:117:43","statements":[{"nodeType":"YulVariableDeclaration","src":"1434:15:43","value":{"kind":"number","nodeType":"YulLiteral","src":"1448:1:43","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1438:6:43","type":""}]},{"nodeType":"YulAssignment","src":"1463:63:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1498:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"1509:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1494:3:43"},"nodeType":"YulFunctionCall","src":"1494:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1518:7:43"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"1473:20:43"},"nodeType":"YulFunctionCall","src":"1473:53:43"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1463:6:43"}]}]},{"nodeType":"YulBlock","src":"1546:118:43","statements":[{"nodeType":"YulVariableDeclaration","src":"1561:16:43","value":{"kind":"number","nodeType":"YulLiteral","src":"1575:2:43","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1565:6:43","type":""}]},{"nodeType":"YulAssignment","src":"1591:63:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1626:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"1637:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1622:3:43"},"nodeType":"YulFunctionCall","src":"1622:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1646:7:43"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"1601:20:43"},"nodeType":"YulFunctionCall","src":"1601:53:43"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1591:6:43"}]}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1242:9:43","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1253:7:43","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1265:6:43","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1273:6:43","type":""}],"src":"1197:474:43"},{"body":{"nodeType":"YulBlock","src":"1742:53:43","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1759:3:43"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1782:5:43"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"1764:17:43"},"nodeType":"YulFunctionCall","src":"1764:24:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1752:6:43"},"nodeType":"YulFunctionCall","src":"1752:37:43"},"nodeType":"YulExpressionStatement","src":"1752:37:43"}]},"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1730:5:43","type":""},{"name":"pos","nodeType":"YulTypedName","src":"1737:3:43","type":""}],"src":"1677:118:43"},{"body":{"nodeType":"YulBlock","src":"1866:53:43","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1883:3:43"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1906:5:43"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"1888:17:43"},"nodeType":"YulFunctionCall","src":"1888:24:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1876:6:43"},"nodeType":"YulFunctionCall","src":"1876:37:43"},"nodeType":"YulExpressionStatement","src":"1876:37:43"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1854:5:43","type":""},{"name":"pos","nodeType":"YulTypedName","src":"1861:3:43","type":""}],"src":"1801:118:43"},{"body":{"nodeType":"YulBlock","src":"2107:371:43","statements":[{"nodeType":"YulAssignment","src":"2117:27:43","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2129:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"2140:3:43","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2125:3:43"},"nodeType":"YulFunctionCall","src":"2125:19:43"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2117:4:43"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2198:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2211:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"2222:1:43","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2207:3:43"},"nodeType":"YulFunctionCall","src":"2207:17:43"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"2154:43:43"},"nodeType":"YulFunctionCall","src":"2154:71:43"},"nodeType":"YulExpressionStatement","src":"2154:71:43"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"2279:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2292:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"2303:2:43","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2288:3:43"},"nodeType":"YulFunctionCall","src":"2288:18:43"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"2235:43:43"},"nodeType":"YulFunctionCall","src":"2235:72:43"},"nodeType":"YulExpressionStatement","src":"2235:72:43"},{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"2361:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2374:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"2385:2:43","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2370:3:43"},"nodeType":"YulFunctionCall","src":"2370:18:43"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"2317:43:43"},"nodeType":"YulFunctionCall","src":"2317:72:43"},"nodeType":"YulExpressionStatement","src":"2317:72:43"},{"expression":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"2443:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2456:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"2467:2:43","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2452:3:43"},"nodeType":"YulFunctionCall","src":"2452:18:43"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"2399:43:43"},"nodeType":"YulFunctionCall","src":"2399:72:43"},"nodeType":"YulExpressionStatement","src":"2399:72:43"}]},"name":"abi_encode_tuple_t_address_t_uint256_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2055:9:43","type":""},{"name":"value3","nodeType":"YulTypedName","src":"2067:6:43","type":""},{"name":"value2","nodeType":"YulTypedName","src":"2075:6:43","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2083:6:43","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2091:6:43","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2102:4:43","type":""}],"src":"1925:553:43"},{"body":{"nodeType":"YulBlock","src":"2550:263:43","statements":[{"body":{"nodeType":"YulBlock","src":"2596:83:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"2598:77:43"},"nodeType":"YulFunctionCall","src":"2598:79:43"},"nodeType":"YulExpressionStatement","src":"2598:79:43"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2571:7:43"},{"name":"headStart","nodeType":"YulIdentifier","src":"2580:9:43"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2567:3:43"},"nodeType":"YulFunctionCall","src":"2567:23:43"},{"kind":"number","nodeType":"YulLiteral","src":"2592:2:43","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2563:3:43"},"nodeType":"YulFunctionCall","src":"2563:32:43"},"nodeType":"YulIf","src":"2560:119:43"},{"nodeType":"YulBlock","src":"2689:117:43","statements":[{"nodeType":"YulVariableDeclaration","src":"2704:15:43","value":{"kind":"number","nodeType":"YulLiteral","src":"2718:1:43","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2708:6:43","type":""}]},{"nodeType":"YulAssignment","src":"2733:63:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2768:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"2779:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2764:3:43"},"nodeType":"YulFunctionCall","src":"2764:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2788:7:43"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"2743:20:43"},"nodeType":"YulFunctionCall","src":"2743:53:43"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2733:6:43"}]}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2520:9:43","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2531:7:43","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2543:6:43","type":""}],"src":"2484:329:43"},{"body":{"nodeType":"YulBlock","src":"2863:45:43","statements":[{"nodeType":"YulAssignment","src":"2873:29:43","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2888:5:43"},{"kind":"number","nodeType":"YulLiteral","src":"2895:6:43","type":"","value":"0xffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2884:3:43"},"nodeType":"YulFunctionCall","src":"2884:18:43"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"2873:7:43"}]}]},"name":"cleanup_t_uint16","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2845:5:43","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"2855:7:43","type":""}],"src":"2819:89:43"},{"body":{"nodeType":"YulBlock","src":"2977:52:43","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2994:3:43"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3016:5:43"}],"functionName":{"name":"cleanup_t_uint16","nodeType":"YulIdentifier","src":"2999:16:43"},"nodeType":"YulFunctionCall","src":"2999:23:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2987:6:43"},"nodeType":"YulFunctionCall","src":"2987:36:43"},"nodeType":"YulExpressionStatement","src":"2987:36:43"}]},"name":"abi_encode_t_uint16_to_t_uint16_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2965:5:43","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2972:3:43","type":""}],"src":"2914:115:43"},{"body":{"nodeType":"YulBlock","src":"3131:122:43","statements":[{"nodeType":"YulAssignment","src":"3141:26:43","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3153:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"3164:2:43","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3149:3:43"},"nodeType":"YulFunctionCall","src":"3149:18:43"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3141:4:43"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3219:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3232:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"3243:1:43","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3228:3:43"},"nodeType":"YulFunctionCall","src":"3228:17:43"}],"functionName":{"name":"abi_encode_t_uint16_to_t_uint16_fromStack","nodeType":"YulIdentifier","src":"3177:41:43"},"nodeType":"YulFunctionCall","src":"3177:69:43"},"nodeType":"YulExpressionStatement","src":"3177:69:43"}]},"name":"abi_encode_tuple_t_uint16__to_t_uint16__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3103:9:43","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3115:6:43","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3126:4:43","type":""}],"src":"3035:218:43"},{"body":{"nodeType":"YulBlock","src":"3325:263:43","statements":[{"body":{"nodeType":"YulBlock","src":"3371:83:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"3373:77:43"},"nodeType":"YulFunctionCall","src":"3373:79:43"},"nodeType":"YulExpressionStatement","src":"3373:79:43"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3346:7:43"},{"name":"headStart","nodeType":"YulIdentifier","src":"3355:9:43"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3342:3:43"},"nodeType":"YulFunctionCall","src":"3342:23:43"},{"kind":"number","nodeType":"YulLiteral","src":"3367:2:43","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3338:3:43"},"nodeType":"YulFunctionCall","src":"3338:32:43"},"nodeType":"YulIf","src":"3335:119:43"},{"nodeType":"YulBlock","src":"3464:117:43","statements":[{"nodeType":"YulVariableDeclaration","src":"3479:15:43","value":{"kind":"number","nodeType":"YulLiteral","src":"3493:1:43","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3483:6:43","type":""}]},{"nodeType":"YulAssignment","src":"3508:63:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3543:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"3554:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3539:3:43"},"nodeType":"YulFunctionCall","src":"3539:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3563:7:43"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"3518:20:43"},"nodeType":"YulFunctionCall","src":"3518:53:43"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3508:6:43"}]}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3295:9:43","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3306:7:43","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3318:6:43","type":""}],"src":"3259:329:43"},{"body":{"nodeType":"YulBlock","src":"3637:48:43","statements":[{"nodeType":"YulAssignment","src":"3647:32:43","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3669:2:43","type":"","value":"11"},{"name":"value","nodeType":"YulIdentifier","src":"3673:5:43"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"3658:10:43"},"nodeType":"YulFunctionCall","src":"3658:21:43"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"3647:7:43"}]}]},"name":"cleanup_t_int96","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3619:5:43","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"3629:7:43","type":""}],"src":"3594:91:43"},{"body":{"nodeType":"YulBlock","src":"3732:77:43","statements":[{"body":{"nodeType":"YulBlock","src":"3787:16:43","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3796:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3799:1:43","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3789:6:43"},"nodeType":"YulFunctionCall","src":"3789:12:43"},"nodeType":"YulExpressionStatement","src":"3789:12:43"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3755:5:43"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3778:5:43"}],"functionName":{"name":"cleanup_t_int96","nodeType":"YulIdentifier","src":"3762:15:43"},"nodeType":"YulFunctionCall","src":"3762:22:43"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3752:2:43"},"nodeType":"YulFunctionCall","src":"3752:33:43"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3745:6:43"},"nodeType":"YulFunctionCall","src":"3745:41:43"},"nodeType":"YulIf","src":"3742:61:43"}]},"name":"validator_revert_t_int96","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3725:5:43","type":""}],"src":"3691:118:43"},{"body":{"nodeType":"YulBlock","src":"3865:85:43","statements":[{"nodeType":"YulAssignment","src":"3875:29:43","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3897:6:43"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3884:12:43"},"nodeType":"YulFunctionCall","src":"3884:20:43"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"3875:5:43"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3938:5:43"}],"functionName":{"name":"validator_revert_t_int96","nodeType":"YulIdentifier","src":"3913:24:43"},"nodeType":"YulFunctionCall","src":"3913:31:43"},"nodeType":"YulExpressionStatement","src":"3913:31:43"}]},"name":"abi_decode_t_int96","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"3843:6:43","type":""},{"name":"end","nodeType":"YulTypedName","src":"3851:3:43","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"3859:5:43","type":""}],"src":"3815:135:43"},{"body":{"nodeType":"YulBlock","src":"4037:389:43","statements":[{"body":{"nodeType":"YulBlock","src":"4083:83:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"4085:77:43"},"nodeType":"YulFunctionCall","src":"4085:79:43"},"nodeType":"YulExpressionStatement","src":"4085:79:43"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4058:7:43"},{"name":"headStart","nodeType":"YulIdentifier","src":"4067:9:43"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4054:3:43"},"nodeType":"YulFunctionCall","src":"4054:23:43"},{"kind":"number","nodeType":"YulLiteral","src":"4079:2:43","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4050:3:43"},"nodeType":"YulFunctionCall","src":"4050:32:43"},"nodeType":"YulIf","src":"4047:119:43"},{"nodeType":"YulBlock","src":"4176:117:43","statements":[{"nodeType":"YulVariableDeclaration","src":"4191:15:43","value":{"kind":"number","nodeType":"YulLiteral","src":"4205:1:43","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4195:6:43","type":""}]},{"nodeType":"YulAssignment","src":"4220:63:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4255:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"4266:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4251:3:43"},"nodeType":"YulFunctionCall","src":"4251:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4275:7:43"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"4230:20:43"},"nodeType":"YulFunctionCall","src":"4230:53:43"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4220:6:43"}]}]},{"nodeType":"YulBlock","src":"4303:116:43","statements":[{"nodeType":"YulVariableDeclaration","src":"4318:16:43","value":{"kind":"number","nodeType":"YulLiteral","src":"4332:2:43","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4322:6:43","type":""}]},{"nodeType":"YulAssignment","src":"4348:61:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4381:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"4392:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4377:3:43"},"nodeType":"YulFunctionCall","src":"4377:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4401:7:43"}],"functionName":{"name":"abi_decode_t_int96","nodeType":"YulIdentifier","src":"4358:18:43"},"nodeType":"YulFunctionCall","src":"4358:51:43"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4348:6:43"}]}]}]},"name":"abi_decode_tuple_t_addresst_int96","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3999:9:43","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4010:7:43","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4022:6:43","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4030:6:43","type":""}],"src":"3956:470:43"},{"body":{"nodeType":"YulBlock","src":"4530:124:43","statements":[{"nodeType":"YulAssignment","src":"4540:26:43","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4552:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"4563:2:43","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4548:3:43"},"nodeType":"YulFunctionCall","src":"4548:18:43"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4540:4:43"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4620:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4633:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"4644:1:43","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4629:3:43"},"nodeType":"YulFunctionCall","src":"4629:17:43"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"4576:43:43"},"nodeType":"YulFunctionCall","src":"4576:71:43"},"nodeType":"YulExpressionStatement","src":"4576:71:43"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4502:9:43","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4514:6:43","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4525:4:43","type":""}],"src":"4432:222:43"},{"body":{"nodeType":"YulBlock","src":"4704:65:43","statements":[{"nodeType":"YulAssignment","src":"4714:49:43","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4729:5:43"},{"kind":"number","nodeType":"YulLiteral","src":"4736:26:43","type":"","value":"0xffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4725:3:43"},"nodeType":"YulFunctionCall","src":"4725:38:43"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"4714:7:43"}]}]},"name":"cleanup_t_uint96","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4686:5:43","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"4696:7:43","type":""}],"src":"4660:109:43"},{"body":{"nodeType":"YulBlock","src":"4838:52:43","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4855:3:43"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4877:5:43"}],"functionName":{"name":"cleanup_t_uint96","nodeType":"YulIdentifier","src":"4860:16:43"},"nodeType":"YulFunctionCall","src":"4860:23:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4848:6:43"},"nodeType":"YulFunctionCall","src":"4848:36:43"},"nodeType":"YulExpressionStatement","src":"4848:36:43"}]},"name":"abi_encode_t_uint96_to_t_uint96_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4826:5:43","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4833:3:43","type":""}],"src":"4775:115:43"},{"body":{"nodeType":"YulBlock","src":"5044:282:43","statements":[{"nodeType":"YulAssignment","src":"5054:26:43","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5066:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"5077:2:43","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5062:3:43"},"nodeType":"YulFunctionCall","src":"5062:18:43"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5054:4:43"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5132:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5145:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"5156:1:43","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5141:3:43"},"nodeType":"YulFunctionCall","src":"5141:17:43"}],"functionName":{"name":"abi_encode_t_uint16_to_t_uint16_fromStack","nodeType":"YulIdentifier","src":"5090:41:43"},"nodeType":"YulFunctionCall","src":"5090:69:43"},"nodeType":"YulExpressionStatement","src":"5090:69:43"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"5211:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5224:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"5235:2:43","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5220:3:43"},"nodeType":"YulFunctionCall","src":"5220:18:43"}],"functionName":{"name":"abi_encode_t_uint96_to_t_uint96_fromStack","nodeType":"YulIdentifier","src":"5169:41:43"},"nodeType":"YulFunctionCall","src":"5169:70:43"},"nodeType":"YulExpressionStatement","src":"5169:70:43"},{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"5291:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5304:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"5315:2:43","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5300:3:43"},"nodeType":"YulFunctionCall","src":"5300:18:43"}],"functionName":{"name":"abi_encode_t_uint96_to_t_uint96_fromStack","nodeType":"YulIdentifier","src":"5249:41:43"},"nodeType":"YulFunctionCall","src":"5249:70:43"},"nodeType":"YulExpressionStatement","src":"5249:70:43"}]},"name":"abi_encode_tuple_t_uint16_t_uint96_t_uint96__to_t_uint16_t_uint96_t_uint96__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5000:9:43","type":""},{"name":"value2","nodeType":"YulTypedName","src":"5012:6:43","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5020:6:43","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5028:6:43","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5039:4:43","type":""}],"src":"4896:430:43"},{"body":{"nodeType":"YulBlock","src":"5374:48:43","statements":[{"nodeType":"YulAssignment","src":"5384:32:43","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5409:5:43"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5402:6:43"},"nodeType":"YulFunctionCall","src":"5402:13:43"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5395:6:43"},"nodeType":"YulFunctionCall","src":"5395:21:43"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5384:7:43"}]}]},"name":"cleanup_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5356:5:43","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5366:7:43","type":""}],"src":"5332:90:43"},{"body":{"nodeType":"YulBlock","src":"5487:50:43","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5504:3:43"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5524:5:43"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"5509:14:43"},"nodeType":"YulFunctionCall","src":"5509:21:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5497:6:43"},"nodeType":"YulFunctionCall","src":"5497:34:43"},"nodeType":"YulExpressionStatement","src":"5497:34:43"}]},"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5475:5:43","type":""},{"name":"pos","nodeType":"YulTypedName","src":"5482:3:43","type":""}],"src":"5428:109:43"},{"body":{"nodeType":"YulBlock","src":"5635:118:43","statements":[{"nodeType":"YulAssignment","src":"5645:26:43","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5657:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"5668:2:43","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5653:3:43"},"nodeType":"YulFunctionCall","src":"5653:18:43"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5645:4:43"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5719:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5732:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"5743:1:43","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5728:3:43"},"nodeType":"YulFunctionCall","src":"5728:17:43"}],"functionName":{"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulIdentifier","src":"5681:37:43"},"nodeType":"YulFunctionCall","src":"5681:65:43"},"nodeType":"YulExpressionStatement","src":"5681:65:43"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5607:9:43","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5619:6:43","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5630:4:43","type":""}],"src":"5543:210:43"},{"body":{"nodeType":"YulBlock","src":"5842:391:43","statements":[{"body":{"nodeType":"YulBlock","src":"5888:83:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"5890:77:43"},"nodeType":"YulFunctionCall","src":"5890:79:43"},"nodeType":"YulExpressionStatement","src":"5890:79:43"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5863:7:43"},{"name":"headStart","nodeType":"YulIdentifier","src":"5872:9:43"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5859:3:43"},"nodeType":"YulFunctionCall","src":"5859:23:43"},{"kind":"number","nodeType":"YulLiteral","src":"5884:2:43","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5855:3:43"},"nodeType":"YulFunctionCall","src":"5855:32:43"},"nodeType":"YulIf","src":"5852:119:43"},{"nodeType":"YulBlock","src":"5981:117:43","statements":[{"nodeType":"YulVariableDeclaration","src":"5996:15:43","value":{"kind":"number","nodeType":"YulLiteral","src":"6010:1:43","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6000:6:43","type":""}]},{"nodeType":"YulAssignment","src":"6025:63:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6060:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"6071:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6056:3:43"},"nodeType":"YulFunctionCall","src":"6056:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6080:7:43"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"6035:20:43"},"nodeType":"YulFunctionCall","src":"6035:53:43"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6025:6:43"}]}]},{"nodeType":"YulBlock","src":"6108:118:43","statements":[{"nodeType":"YulVariableDeclaration","src":"6123:16:43","value":{"kind":"number","nodeType":"YulLiteral","src":"6137:2:43","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6127:6:43","type":""}]},{"nodeType":"YulAssignment","src":"6153:63:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6188:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"6199:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6184:3:43"},"nodeType":"YulFunctionCall","src":"6184:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6208:7:43"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"6163:20:43"},"nodeType":"YulFunctionCall","src":"6163:53:43"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"6153:6:43"}]}]}]},"name":"abi_decode_tuple_t_uint256t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5804:9:43","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5815:7:43","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5827:6:43","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5835:6:43","type":""}],"src":"5759:474:43"},{"body":{"nodeType":"YulBlock","src":"6322:391:43","statements":[{"body":{"nodeType":"YulBlock","src":"6368:83:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"6370:77:43"},"nodeType":"YulFunctionCall","src":"6370:79:43"},"nodeType":"YulExpressionStatement","src":"6370:79:43"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6343:7:43"},{"name":"headStart","nodeType":"YulIdentifier","src":"6352:9:43"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6339:3:43"},"nodeType":"YulFunctionCall","src":"6339:23:43"},{"kind":"number","nodeType":"YulLiteral","src":"6364:2:43","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6335:3:43"},"nodeType":"YulFunctionCall","src":"6335:32:43"},"nodeType":"YulIf","src":"6332:119:43"},{"nodeType":"YulBlock","src":"6461:117:43","statements":[{"nodeType":"YulVariableDeclaration","src":"6476:15:43","value":{"kind":"number","nodeType":"YulLiteral","src":"6490:1:43","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6480:6:43","type":""}]},{"nodeType":"YulAssignment","src":"6505:63:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6540:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"6551:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6536:3:43"},"nodeType":"YulFunctionCall","src":"6536:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6560:7:43"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"6515:20:43"},"nodeType":"YulFunctionCall","src":"6515:53:43"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6505:6:43"}]}]},{"nodeType":"YulBlock","src":"6588:118:43","statements":[{"nodeType":"YulVariableDeclaration","src":"6603:16:43","value":{"kind":"number","nodeType":"YulLiteral","src":"6617:2:43","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6607:6:43","type":""}]},{"nodeType":"YulAssignment","src":"6633:63:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6668:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"6679:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6664:3:43"},"nodeType":"YulFunctionCall","src":"6664:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6688:7:43"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"6643:20:43"},"nodeType":"YulFunctionCall","src":"6643:53:43"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"6633:6:43"}]}]}]},"name":"abi_decode_tuple_t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6284:9:43","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6295:7:43","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6307:6:43","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6315:6:43","type":""}],"src":"6239:474:43"},{"body":{"nodeType":"YulBlock","src":"6808:28:43","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6825:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6828:1:43","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6818:6:43"},"nodeType":"YulFunctionCall","src":"6818:12:43"},"nodeType":"YulExpressionStatement","src":"6818:12:43"}]},"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulFunctionDefinition","src":"6719:117:43"},{"body":{"nodeType":"YulBlock","src":"6890:54:43","statements":[{"nodeType":"YulAssignment","src":"6900:38:43","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6918:5:43"},{"kind":"number","nodeType":"YulLiteral","src":"6925:2:43","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6914:3:43"},"nodeType":"YulFunctionCall","src":"6914:14:43"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6934:2:43","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"6930:3:43"},"nodeType":"YulFunctionCall","src":"6930:7:43"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6910:3:43"},"nodeType":"YulFunctionCall","src":"6910:28:43"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"6900:6:43"}]}]},"name":"round_up_to_mul_of_32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6873:5:43","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"6883:6:43","type":""}],"src":"6842:102:43"},{"body":{"nodeType":"YulBlock","src":"6978:152:43","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6995:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6998:77:43","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6988:6:43"},"nodeType":"YulFunctionCall","src":"6988:88:43"},"nodeType":"YulExpressionStatement","src":"6988:88:43"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7092:1:43","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"7095:4:43","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7085:6:43"},"nodeType":"YulFunctionCall","src":"7085:15:43"},"nodeType":"YulExpressionStatement","src":"7085:15:43"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7116:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7119:4:43","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7109:6:43"},"nodeType":"YulFunctionCall","src":"7109:15:43"},"nodeType":"YulExpressionStatement","src":"7109:15:43"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"6950:180:43"},{"body":{"nodeType":"YulBlock","src":"7179:238:43","statements":[{"nodeType":"YulVariableDeclaration","src":"7189:58:43","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7211:6:43"},{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"7241:4:43"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"7219:21:43"},"nodeType":"YulFunctionCall","src":"7219:27:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7207:3:43"},"nodeType":"YulFunctionCall","src":"7207:40:43"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"7193:10:43","type":""}]},{"body":{"nodeType":"YulBlock","src":"7358:22:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"7360:16:43"},"nodeType":"YulFunctionCall","src":"7360:18:43"},"nodeType":"YulExpressionStatement","src":"7360:18:43"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7301:10:43"},{"kind":"number","nodeType":"YulLiteral","src":"7313:18:43","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7298:2:43"},"nodeType":"YulFunctionCall","src":"7298:34:43"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7337:10:43"},{"name":"memPtr","nodeType":"YulIdentifier","src":"7349:6:43"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"7334:2:43"},"nodeType":"YulFunctionCall","src":"7334:22:43"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7295:2:43"},"nodeType":"YulFunctionCall","src":"7295:62:43"},"nodeType":"YulIf","src":"7292:88:43"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7396:2:43","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7400:10:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7389:6:43"},"nodeType":"YulFunctionCall","src":"7389:22:43"},"nodeType":"YulExpressionStatement","src":"7389:22:43"}]},"name":"finalize_allocation","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"7165:6:43","type":""},{"name":"size","nodeType":"YulTypedName","src":"7173:4:43","type":""}],"src":"7136:281:43"},{"body":{"nodeType":"YulBlock","src":"7464:88:43","statements":[{"nodeType":"YulAssignment","src":"7474:30:43","value":{"arguments":[],"functionName":{"name":"allocate_unbounded","nodeType":"YulIdentifier","src":"7484:18:43"},"nodeType":"YulFunctionCall","src":"7484:20:43"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7474:6:43"}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7533:6:43"},{"name":"size","nodeType":"YulIdentifier","src":"7541:4:43"}],"functionName":{"name":"finalize_allocation","nodeType":"YulIdentifier","src":"7513:19:43"},"nodeType":"YulFunctionCall","src":"7513:33:43"},"nodeType":"YulExpressionStatement","src":"7513:33:43"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"7448:4:43","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"7457:6:43","type":""}],"src":"7423:129:43"},{"body":{"nodeType":"YulBlock","src":"7639:229:43","statements":[{"body":{"nodeType":"YulBlock","src":"7744:22:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"7746:16:43"},"nodeType":"YulFunctionCall","src":"7746:18:43"},"nodeType":"YulExpressionStatement","src":"7746:18:43"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"7716:6:43"},{"kind":"number","nodeType":"YulLiteral","src":"7724:18:43","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7713:2:43"},"nodeType":"YulFunctionCall","src":"7713:30:43"},"nodeType":"YulIf","src":"7710:56:43"},{"nodeType":"YulAssignment","src":"7776:25:43","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"7788:6:43"},{"kind":"number","nodeType":"YulLiteral","src":"7796:4:43","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"7784:3:43"},"nodeType":"YulFunctionCall","src":"7784:17:43"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"7776:4:43"}]},{"nodeType":"YulAssignment","src":"7838:23:43","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"7850:4:43"},{"kind":"number","nodeType":"YulLiteral","src":"7856:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7846:3:43"},"nodeType":"YulFunctionCall","src":"7846:15:43"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"7838:4:43"}]}]},"name":"array_allocation_size_t_array$_t_uint16_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"7623:6:43","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"7634:4:43","type":""}],"src":"7558:310:43"},{"body":{"nodeType":"YulBlock","src":"7963:28:43","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7980:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7983:1:43","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7973:6:43"},"nodeType":"YulFunctionCall","src":"7973:12:43"},"nodeType":"YulExpressionStatement","src":"7973:12:43"}]},"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nodeType":"YulFunctionDefinition","src":"7874:117:43"},{"body":{"nodeType":"YulBlock","src":"8039:78:43","statements":[{"body":{"nodeType":"YulBlock","src":"8095:16:43","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8104:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8107:1:43","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8097:6:43"},"nodeType":"YulFunctionCall","src":"8097:12:43"},"nodeType":"YulExpressionStatement","src":"8097:12:43"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8062:5:43"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8086:5:43"}],"functionName":{"name":"cleanup_t_uint16","nodeType":"YulIdentifier","src":"8069:16:43"},"nodeType":"YulFunctionCall","src":"8069:23:43"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8059:2:43"},"nodeType":"YulFunctionCall","src":"8059:34:43"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8052:6:43"},"nodeType":"YulFunctionCall","src":"8052:42:43"},"nodeType":"YulIf","src":"8049:62:43"}]},"name":"validator_revert_t_uint16","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8032:5:43","type":""}],"src":"7997:120:43"},{"body":{"nodeType":"YulBlock","src":"8174:86:43","statements":[{"nodeType":"YulAssignment","src":"8184:29:43","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"8206:6:43"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8193:12:43"},"nodeType":"YulFunctionCall","src":"8193:20:43"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"8184:5:43"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8248:5:43"}],"functionName":{"name":"validator_revert_t_uint16","nodeType":"YulIdentifier","src":"8222:25:43"},"nodeType":"YulFunctionCall","src":"8222:32:43"},"nodeType":"YulExpressionStatement","src":"8222:32:43"}]},"name":"abi_decode_t_uint16","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"8152:6:43","type":""},{"name":"end","nodeType":"YulTypedName","src":"8160:3:43","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"8168:5:43","type":""}],"src":"8123:137:43"},{"body":{"nodeType":"YulBlock","src":"8383:606:43","statements":[{"nodeType":"YulAssignment","src":"8393:89:43","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"8474:6:43"}],"functionName":{"name":"array_allocation_size_t_array$_t_uint16_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"8418:55:43"},"nodeType":"YulFunctionCall","src":"8418:63:43"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"8402:15:43"},"nodeType":"YulFunctionCall","src":"8402:80:43"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"8393:5:43"}]},{"nodeType":"YulVariableDeclaration","src":"8491:16:43","value":{"name":"array","nodeType":"YulIdentifier","src":"8502:5:43"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"8495:3:43","type":""}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"8524:5:43"},{"name":"length","nodeType":"YulIdentifier","src":"8531:6:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8517:6:43"},"nodeType":"YulFunctionCall","src":"8517:21:43"},"nodeType":"YulExpressionStatement","src":"8517:21:43"},{"nodeType":"YulAssignment","src":"8547:23:43","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"8558:5:43"},{"kind":"number","nodeType":"YulLiteral","src":"8565:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8554:3:43"},"nodeType":"YulFunctionCall","src":"8554:16:43"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"8547:3:43"}]},{"nodeType":"YulVariableDeclaration","src":"8580:44:43","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"8598:6:43"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"8610:6:43"},{"kind":"number","nodeType":"YulLiteral","src":"8618:4:43","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"8606:3:43"},"nodeType":"YulFunctionCall","src":"8606:17:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8594:3:43"},"nodeType":"YulFunctionCall","src":"8594:30:43"},"variables":[{"name":"srcEnd","nodeType":"YulTypedName","src":"8584:6:43","type":""}]},{"body":{"nodeType":"YulBlock","src":"8652:103:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nodeType":"YulIdentifier","src":"8666:77:43"},"nodeType":"YulFunctionCall","src":"8666:79:43"},"nodeType":"YulExpressionStatement","src":"8666:79:43"}]},"condition":{"arguments":[{"name":"srcEnd","nodeType":"YulIdentifier","src":"8639:6:43"},{"name":"end","nodeType":"YulIdentifier","src":"8647:3:43"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8636:2:43"},"nodeType":"YulFunctionCall","src":"8636:15:43"},"nodeType":"YulIf","src":"8633:122:43"},{"body":{"nodeType":"YulBlock","src":"8840:143:43","statements":[{"nodeType":"YulVariableDeclaration","src":"8855:21:43","value":{"name":"src","nodeType":"YulIdentifier","src":"8873:3:43"},"variables":[{"name":"elementPos","nodeType":"YulTypedName","src":"8859:10:43","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"8897:3:43"},{"arguments":[{"name":"elementPos","nodeType":"YulIdentifier","src":"8922:10:43"},{"name":"end","nodeType":"YulIdentifier","src":"8934:3:43"}],"functionName":{"name":"abi_decode_t_uint16","nodeType":"YulIdentifier","src":"8902:19:43"},"nodeType":"YulFunctionCall","src":"8902:36:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8890:6:43"},"nodeType":"YulFunctionCall","src":"8890:49:43"},"nodeType":"YulExpressionStatement","src":"8890:49:43"},{"nodeType":"YulAssignment","src":"8952:21:43","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"8963:3:43"},{"kind":"number","nodeType":"YulLiteral","src":"8968:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8959:3:43"},"nodeType":"YulFunctionCall","src":"8959:14:43"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"8952:3:43"}]}]},"condition":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"8793:3:43"},{"name":"srcEnd","nodeType":"YulIdentifier","src":"8798:6:43"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"8790:2:43"},"nodeType":"YulFunctionCall","src":"8790:15:43"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"8806:25:43","statements":[{"nodeType":"YulAssignment","src":"8808:21:43","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"8819:3:43"},{"kind":"number","nodeType":"YulLiteral","src":"8824:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8815:3:43"},"nodeType":"YulFunctionCall","src":"8815:14:43"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"8808:3:43"}]}]},"pre":{"nodeType":"YulBlock","src":"8768:21:43","statements":[{"nodeType":"YulVariableDeclaration","src":"8770:17:43","value":{"name":"offset","nodeType":"YulIdentifier","src":"8781:6:43"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"8774:3:43","type":""}]}]},"src":"8764:219:43"}]},"name":"abi_decode_available_length_t_array$_t_uint16_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"8353:6:43","type":""},{"name":"length","nodeType":"YulTypedName","src":"8361:6:43","type":""},{"name":"end","nodeType":"YulTypedName","src":"8369:3:43","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"8377:5:43","type":""}],"src":"8282:707:43"},{"body":{"nodeType":"YulBlock","src":"9087:292:43","statements":[{"body":{"nodeType":"YulBlock","src":"9136:83:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"9138:77:43"},"nodeType":"YulFunctionCall","src":"9138:79:43"},"nodeType":"YulExpressionStatement","src":"9138:79:43"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"9115:6:43"},{"kind":"number","nodeType":"YulLiteral","src":"9123:4:43","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9111:3:43"},"nodeType":"YulFunctionCall","src":"9111:17:43"},{"name":"end","nodeType":"YulIdentifier","src":"9130:3:43"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9107:3:43"},"nodeType":"YulFunctionCall","src":"9107:27:43"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"9100:6:43"},"nodeType":"YulFunctionCall","src":"9100:35:43"},"nodeType":"YulIf","src":"9097:122:43"},{"nodeType":"YulVariableDeclaration","src":"9228:34:43","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"9255:6:43"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9242:12:43"},"nodeType":"YulFunctionCall","src":"9242:20:43"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"9232:6:43","type":""}]},{"nodeType":"YulAssignment","src":"9271:102:43","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"9346:6:43"},{"kind":"number","nodeType":"YulLiteral","src":"9354:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9342:3:43"},"nodeType":"YulFunctionCall","src":"9342:17:43"},{"name":"length","nodeType":"YulIdentifier","src":"9361:6:43"},{"name":"end","nodeType":"YulIdentifier","src":"9369:3:43"}],"functionName":{"name":"abi_decode_available_length_t_array$_t_uint16_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"9280:61:43"},"nodeType":"YulFunctionCall","src":"9280:93:43"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"9271:5:43"}]}]},"name":"abi_decode_t_array$_t_uint16_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"9065:6:43","type":""},{"name":"end","nodeType":"YulTypedName","src":"9073:3:43","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"9081:5:43","type":""}],"src":"9011:368:43"},{"body":{"nodeType":"YulBlock","src":"9466:229:43","statements":[{"body":{"nodeType":"YulBlock","src":"9571:22:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"9573:16:43"},"nodeType":"YulFunctionCall","src":"9573:18:43"},"nodeType":"YulExpressionStatement","src":"9573:18:43"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"9543:6:43"},{"kind":"number","nodeType":"YulLiteral","src":"9551:18:43","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"9540:2:43"},"nodeType":"YulFunctionCall","src":"9540:30:43"},"nodeType":"YulIf","src":"9537:56:43"},{"nodeType":"YulAssignment","src":"9603:25:43","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"9615:6:43"},{"kind":"number","nodeType":"YulLiteral","src":"9623:4:43","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"9611:3:43"},"nodeType":"YulFunctionCall","src":"9611:17:43"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"9603:4:43"}]},{"nodeType":"YulAssignment","src":"9665:23:43","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"9677:4:43"},{"kind":"number","nodeType":"YulLiteral","src":"9683:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9673:3:43"},"nodeType":"YulFunctionCall","src":"9673:15:43"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"9665:4:43"}]}]},"name":"array_allocation_size_t_array$_t_uint96_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"9450:6:43","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"9461:4:43","type":""}],"src":"9385:310:43"},{"body":{"nodeType":"YulBlock","src":"9743:78:43","statements":[{"body":{"nodeType":"YulBlock","src":"9799:16:43","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9808:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9811:1:43","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9801:6:43"},"nodeType":"YulFunctionCall","src":"9801:12:43"},"nodeType":"YulExpressionStatement","src":"9801:12:43"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9766:5:43"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9790:5:43"}],"functionName":{"name":"cleanup_t_uint96","nodeType":"YulIdentifier","src":"9773:16:43"},"nodeType":"YulFunctionCall","src":"9773:23:43"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"9763:2:43"},"nodeType":"YulFunctionCall","src":"9763:34:43"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"9756:6:43"},"nodeType":"YulFunctionCall","src":"9756:42:43"},"nodeType":"YulIf","src":"9753:62:43"}]},"name":"validator_revert_t_uint96","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"9736:5:43","type":""}],"src":"9701:120:43"},{"body":{"nodeType":"YulBlock","src":"9878:86:43","statements":[{"nodeType":"YulAssignment","src":"9888:29:43","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"9910:6:43"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9897:12:43"},"nodeType":"YulFunctionCall","src":"9897:20:43"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"9888:5:43"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9952:5:43"}],"functionName":{"name":"validator_revert_t_uint96","nodeType":"YulIdentifier","src":"9926:25:43"},"nodeType":"YulFunctionCall","src":"9926:32:43"},"nodeType":"YulExpressionStatement","src":"9926:32:43"}]},"name":"abi_decode_t_uint96","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"9856:6:43","type":""},{"name":"end","nodeType":"YulTypedName","src":"9864:3:43","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"9872:5:43","type":""}],"src":"9827:137:43"},{"body":{"nodeType":"YulBlock","src":"10087:606:43","statements":[{"nodeType":"YulAssignment","src":"10097:89:43","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"10178:6:43"}],"functionName":{"name":"array_allocation_size_t_array$_t_uint96_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"10122:55:43"},"nodeType":"YulFunctionCall","src":"10122:63:43"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"10106:15:43"},"nodeType":"YulFunctionCall","src":"10106:80:43"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"10097:5:43"}]},{"nodeType":"YulVariableDeclaration","src":"10195:16:43","value":{"name":"array","nodeType":"YulIdentifier","src":"10206:5:43"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"10199:3:43","type":""}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"10228:5:43"},{"name":"length","nodeType":"YulIdentifier","src":"10235:6:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10221:6:43"},"nodeType":"YulFunctionCall","src":"10221:21:43"},"nodeType":"YulExpressionStatement","src":"10221:21:43"},{"nodeType":"YulAssignment","src":"10251:23:43","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"10262:5:43"},{"kind":"number","nodeType":"YulLiteral","src":"10269:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10258:3:43"},"nodeType":"YulFunctionCall","src":"10258:16:43"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"10251:3:43"}]},{"nodeType":"YulVariableDeclaration","src":"10284:44:43","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"10302:6:43"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"10314:6:43"},{"kind":"number","nodeType":"YulLiteral","src":"10322:4:43","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"10310:3:43"},"nodeType":"YulFunctionCall","src":"10310:17:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10298:3:43"},"nodeType":"YulFunctionCall","src":"10298:30:43"},"variables":[{"name":"srcEnd","nodeType":"YulTypedName","src":"10288:6:43","type":""}]},{"body":{"nodeType":"YulBlock","src":"10356:103:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nodeType":"YulIdentifier","src":"10370:77:43"},"nodeType":"YulFunctionCall","src":"10370:79:43"},"nodeType":"YulExpressionStatement","src":"10370:79:43"}]},"condition":{"arguments":[{"name":"srcEnd","nodeType":"YulIdentifier","src":"10343:6:43"},{"name":"end","nodeType":"YulIdentifier","src":"10351:3:43"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"10340:2:43"},"nodeType":"YulFunctionCall","src":"10340:15:43"},"nodeType":"YulIf","src":"10337:122:43"},{"body":{"nodeType":"YulBlock","src":"10544:143:43","statements":[{"nodeType":"YulVariableDeclaration","src":"10559:21:43","value":{"name":"src","nodeType":"YulIdentifier","src":"10577:3:43"},"variables":[{"name":"elementPos","nodeType":"YulTypedName","src":"10563:10:43","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"10601:3:43"},{"arguments":[{"name":"elementPos","nodeType":"YulIdentifier","src":"10626:10:43"},{"name":"end","nodeType":"YulIdentifier","src":"10638:3:43"}],"functionName":{"name":"abi_decode_t_uint96","nodeType":"YulIdentifier","src":"10606:19:43"},"nodeType":"YulFunctionCall","src":"10606:36:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10594:6:43"},"nodeType":"YulFunctionCall","src":"10594:49:43"},"nodeType":"YulExpressionStatement","src":"10594:49:43"},{"nodeType":"YulAssignment","src":"10656:21:43","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"10667:3:43"},{"kind":"number","nodeType":"YulLiteral","src":"10672:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10663:3:43"},"nodeType":"YulFunctionCall","src":"10663:14:43"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"10656:3:43"}]}]},"condition":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"10497:3:43"},{"name":"srcEnd","nodeType":"YulIdentifier","src":"10502:6:43"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"10494:2:43"},"nodeType":"YulFunctionCall","src":"10494:15:43"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"10510:25:43","statements":[{"nodeType":"YulAssignment","src":"10512:21:43","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"10523:3:43"},{"kind":"number","nodeType":"YulLiteral","src":"10528:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10519:3:43"},"nodeType":"YulFunctionCall","src":"10519:14:43"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"10512:3:43"}]}]},"pre":{"nodeType":"YulBlock","src":"10472:21:43","statements":[{"nodeType":"YulVariableDeclaration","src":"10474:17:43","value":{"name":"offset","nodeType":"YulIdentifier","src":"10485:6:43"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"10478:3:43","type":""}]}]},"src":"10468:219:43"}]},"name":"abi_decode_available_length_t_array$_t_uint96_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"10057:6:43","type":""},{"name":"length","nodeType":"YulTypedName","src":"10065:6:43","type":""},{"name":"end","nodeType":"YulTypedName","src":"10073:3:43","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"10081:5:43","type":""}],"src":"9986:707:43"},{"body":{"nodeType":"YulBlock","src":"10791:292:43","statements":[{"body":{"nodeType":"YulBlock","src":"10840:83:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"10842:77:43"},"nodeType":"YulFunctionCall","src":"10842:79:43"},"nodeType":"YulExpressionStatement","src":"10842:79:43"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"10819:6:43"},{"kind":"number","nodeType":"YulLiteral","src":"10827:4:43","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10815:3:43"},"nodeType":"YulFunctionCall","src":"10815:17:43"},{"name":"end","nodeType":"YulIdentifier","src":"10834:3:43"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"10811:3:43"},"nodeType":"YulFunctionCall","src":"10811:27:43"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"10804:6:43"},"nodeType":"YulFunctionCall","src":"10804:35:43"},"nodeType":"YulIf","src":"10801:122:43"},{"nodeType":"YulVariableDeclaration","src":"10932:34:43","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"10959:6:43"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"10946:12:43"},"nodeType":"YulFunctionCall","src":"10946:20:43"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"10936:6:43","type":""}]},{"nodeType":"YulAssignment","src":"10975:102:43","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"11050:6:43"},{"kind":"number","nodeType":"YulLiteral","src":"11058:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11046:3:43"},"nodeType":"YulFunctionCall","src":"11046:17:43"},{"name":"length","nodeType":"YulIdentifier","src":"11065:6:43"},{"name":"end","nodeType":"YulIdentifier","src":"11073:3:43"}],"functionName":{"name":"abi_decode_available_length_t_array$_t_uint96_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"10984:61:43"},"nodeType":"YulFunctionCall","src":"10984:93:43"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"10975:5:43"}]}]},"name":"abi_decode_t_array$_t_uint96_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"10769:6:43","type":""},{"name":"end","nodeType":"YulTypedName","src":"10777:3:43","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"10785:5:43","type":""}],"src":"10715:368:43"},{"body":{"nodeType":"YulBlock","src":"11171:229:43","statements":[{"body":{"nodeType":"YulBlock","src":"11276:22:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"11278:16:43"},"nodeType":"YulFunctionCall","src":"11278:18:43"},"nodeType":"YulExpressionStatement","src":"11278:18:43"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"11248:6:43"},{"kind":"number","nodeType":"YulLiteral","src":"11256:18:43","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"11245:2:43"},"nodeType":"YulFunctionCall","src":"11245:30:43"},"nodeType":"YulIf","src":"11242:56:43"},{"nodeType":"YulAssignment","src":"11308:25:43","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"11320:6:43"},{"kind":"number","nodeType":"YulLiteral","src":"11328:4:43","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"11316:3:43"},"nodeType":"YulFunctionCall","src":"11316:17:43"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"11308:4:43"}]},{"nodeType":"YulAssignment","src":"11370:23:43","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"11382:4:43"},{"kind":"number","nodeType":"YulLiteral","src":"11388:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11378:3:43"},"nodeType":"YulFunctionCall","src":"11378:15:43"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"11370:4:43"}]}]},"name":"array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"11155:6:43","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"11166:4:43","type":""}],"src":"11089:311:43"},{"body":{"nodeType":"YulBlock","src":"11525:608:43","statements":[{"nodeType":"YulAssignment","src":"11535:90:43","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"11617:6:43"}],"functionName":{"name":"array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"11560:56:43"},"nodeType":"YulFunctionCall","src":"11560:64:43"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"11544:15:43"},"nodeType":"YulFunctionCall","src":"11544:81:43"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"11535:5:43"}]},{"nodeType":"YulVariableDeclaration","src":"11634:16:43","value":{"name":"array","nodeType":"YulIdentifier","src":"11645:5:43"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"11638:3:43","type":""}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"11667:5:43"},{"name":"length","nodeType":"YulIdentifier","src":"11674:6:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11660:6:43"},"nodeType":"YulFunctionCall","src":"11660:21:43"},"nodeType":"YulExpressionStatement","src":"11660:21:43"},{"nodeType":"YulAssignment","src":"11690:23:43","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"11701:5:43"},{"kind":"number","nodeType":"YulLiteral","src":"11708:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11697:3:43"},"nodeType":"YulFunctionCall","src":"11697:16:43"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"11690:3:43"}]},{"nodeType":"YulVariableDeclaration","src":"11723:44:43","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"11741:6:43"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"11753:6:43"},{"kind":"number","nodeType":"YulLiteral","src":"11761:4:43","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"11749:3:43"},"nodeType":"YulFunctionCall","src":"11749:17:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11737:3:43"},"nodeType":"YulFunctionCall","src":"11737:30:43"},"variables":[{"name":"srcEnd","nodeType":"YulTypedName","src":"11727:6:43","type":""}]},{"body":{"nodeType":"YulBlock","src":"11795:103:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nodeType":"YulIdentifier","src":"11809:77:43"},"nodeType":"YulFunctionCall","src":"11809:79:43"},"nodeType":"YulExpressionStatement","src":"11809:79:43"}]},"condition":{"arguments":[{"name":"srcEnd","nodeType":"YulIdentifier","src":"11782:6:43"},{"name":"end","nodeType":"YulIdentifier","src":"11790:3:43"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"11779:2:43"},"nodeType":"YulFunctionCall","src":"11779:15:43"},"nodeType":"YulIf","src":"11776:122:43"},{"body":{"nodeType":"YulBlock","src":"11983:144:43","statements":[{"nodeType":"YulVariableDeclaration","src":"11998:21:43","value":{"name":"src","nodeType":"YulIdentifier","src":"12016:3:43"},"variables":[{"name":"elementPos","nodeType":"YulTypedName","src":"12002:10:43","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"12040:3:43"},{"arguments":[{"name":"elementPos","nodeType":"YulIdentifier","src":"12066:10:43"},{"name":"end","nodeType":"YulIdentifier","src":"12078:3:43"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"12045:20:43"},"nodeType":"YulFunctionCall","src":"12045:37:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12033:6:43"},"nodeType":"YulFunctionCall","src":"12033:50:43"},"nodeType":"YulExpressionStatement","src":"12033:50:43"},{"nodeType":"YulAssignment","src":"12096:21:43","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"12107:3:43"},{"kind":"number","nodeType":"YulLiteral","src":"12112:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12103:3:43"},"nodeType":"YulFunctionCall","src":"12103:14:43"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"12096:3:43"}]}]},"condition":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"11936:3:43"},{"name":"srcEnd","nodeType":"YulIdentifier","src":"11941:6:43"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"11933:2:43"},"nodeType":"YulFunctionCall","src":"11933:15:43"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"11949:25:43","statements":[{"nodeType":"YulAssignment","src":"11951:21:43","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"11962:3:43"},{"kind":"number","nodeType":"YulLiteral","src":"11967:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11958:3:43"},"nodeType":"YulFunctionCall","src":"11958:14:43"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"11951:3:43"}]}]},"pre":{"nodeType":"YulBlock","src":"11911:21:43","statements":[{"nodeType":"YulVariableDeclaration","src":"11913:17:43","value":{"name":"offset","nodeType":"YulIdentifier","src":"11924:6:43"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"11917:3:43","type":""}]}]},"src":"11907:220:43"}]},"name":"abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"11495:6:43","type":""},{"name":"length","nodeType":"YulTypedName","src":"11503:6:43","type":""},{"name":"end","nodeType":"YulTypedName","src":"11511:3:43","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"11519:5:43","type":""}],"src":"11423:710:43"},{"body":{"nodeType":"YulBlock","src":"12233:293:43","statements":[{"body":{"nodeType":"YulBlock","src":"12282:83:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"12284:77:43"},"nodeType":"YulFunctionCall","src":"12284:79:43"},"nodeType":"YulExpressionStatement","src":"12284:79:43"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"12261:6:43"},{"kind":"number","nodeType":"YulLiteral","src":"12269:4:43","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12257:3:43"},"nodeType":"YulFunctionCall","src":"12257:17:43"},{"name":"end","nodeType":"YulIdentifier","src":"12276:3:43"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"12253:3:43"},"nodeType":"YulFunctionCall","src":"12253:27:43"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"12246:6:43"},"nodeType":"YulFunctionCall","src":"12246:35:43"},"nodeType":"YulIf","src":"12243:122:43"},{"nodeType":"YulVariableDeclaration","src":"12374:34:43","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"12401:6:43"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"12388:12:43"},"nodeType":"YulFunctionCall","src":"12388:20:43"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"12378:6:43","type":""}]},{"nodeType":"YulAssignment","src":"12417:103:43","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"12493:6:43"},{"kind":"number","nodeType":"YulLiteral","src":"12501:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12489:3:43"},"nodeType":"YulFunctionCall","src":"12489:17:43"},{"name":"length","nodeType":"YulIdentifier","src":"12508:6:43"},{"name":"end","nodeType":"YulIdentifier","src":"12516:3:43"}],"functionName":{"name":"abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"12426:62:43"},"nodeType":"YulFunctionCall","src":"12426:94:43"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"12417:5:43"}]}]},"name":"abi_decode_t_array$_t_uint256_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"12211:6:43","type":""},{"name":"end","nodeType":"YulTypedName","src":"12219:3:43","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"12227:5:43","type":""}],"src":"12156:370:43"},{"body":{"nodeType":"YulBlock","src":"12746:1385:43","statements":[{"body":{"nodeType":"YulBlock","src":"12793:83:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"12795:77:43"},"nodeType":"YulFunctionCall","src":"12795:79:43"},"nodeType":"YulExpressionStatement","src":"12795:79:43"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"12767:7:43"},{"name":"headStart","nodeType":"YulIdentifier","src":"12776:9:43"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12763:3:43"},"nodeType":"YulFunctionCall","src":"12763:23:43"},{"kind":"number","nodeType":"YulLiteral","src":"12788:3:43","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"12759:3:43"},"nodeType":"YulFunctionCall","src":"12759:33:43"},"nodeType":"YulIf","src":"12756:120:43"},{"nodeType":"YulBlock","src":"12886:301:43","statements":[{"nodeType":"YulVariableDeclaration","src":"12901:45:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12932:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"12943:1:43","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12928:3:43"},"nodeType":"YulFunctionCall","src":"12928:17:43"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"12915:12:43"},"nodeType":"YulFunctionCall","src":"12915:31:43"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"12905:6:43","type":""}]},{"body":{"nodeType":"YulBlock","src":"12993:83:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"12995:77:43"},"nodeType":"YulFunctionCall","src":"12995:79:43"},"nodeType":"YulExpressionStatement","src":"12995:79:43"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"12965:6:43"},{"kind":"number","nodeType":"YulLiteral","src":"12973:18:43","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"12962:2:43"},"nodeType":"YulFunctionCall","src":"12962:30:43"},"nodeType":"YulIf","src":"12959:117:43"},{"nodeType":"YulAssignment","src":"13090:87:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13149:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"13160:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13145:3:43"},"nodeType":"YulFunctionCall","src":"13145:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"13169:7:43"}],"functionName":{"name":"abi_decode_t_array$_t_uint16_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"13100:44:43"},"nodeType":"YulFunctionCall","src":"13100:77:43"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"13090:6:43"}]}]},{"nodeType":"YulBlock","src":"13197:302:43","statements":[{"nodeType":"YulVariableDeclaration","src":"13212:46:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13243:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"13254:2:43","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13239:3:43"},"nodeType":"YulFunctionCall","src":"13239:18:43"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"13226:12:43"},"nodeType":"YulFunctionCall","src":"13226:32:43"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"13216:6:43","type":""}]},{"body":{"nodeType":"YulBlock","src":"13305:83:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"13307:77:43"},"nodeType":"YulFunctionCall","src":"13307:79:43"},"nodeType":"YulExpressionStatement","src":"13307:79:43"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"13277:6:43"},{"kind":"number","nodeType":"YulLiteral","src":"13285:18:43","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"13274:2:43"},"nodeType":"YulFunctionCall","src":"13274:30:43"},"nodeType":"YulIf","src":"13271:117:43"},{"nodeType":"YulAssignment","src":"13402:87:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13461:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"13472:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13457:3:43"},"nodeType":"YulFunctionCall","src":"13457:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"13481:7:43"}],"functionName":{"name":"abi_decode_t_array$_t_uint96_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"13412:44:43"},"nodeType":"YulFunctionCall","src":"13412:77:43"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"13402:6:43"}]}]},{"nodeType":"YulBlock","src":"13509:302:43","statements":[{"nodeType":"YulVariableDeclaration","src":"13524:46:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13555:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"13566:2:43","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13551:3:43"},"nodeType":"YulFunctionCall","src":"13551:18:43"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"13538:12:43"},"nodeType":"YulFunctionCall","src":"13538:32:43"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"13528:6:43","type":""}]},{"body":{"nodeType":"YulBlock","src":"13617:83:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"13619:77:43"},"nodeType":"YulFunctionCall","src":"13619:79:43"},"nodeType":"YulExpressionStatement","src":"13619:79:43"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"13589:6:43"},{"kind":"number","nodeType":"YulLiteral","src":"13597:18:43","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"13586:2:43"},"nodeType":"YulFunctionCall","src":"13586:30:43"},"nodeType":"YulIf","src":"13583:117:43"},{"nodeType":"YulAssignment","src":"13714:87:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13773:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"13784:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13769:3:43"},"nodeType":"YulFunctionCall","src":"13769:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"13793:7:43"}],"functionName":{"name":"abi_decode_t_array$_t_uint96_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"13724:44:43"},"nodeType":"YulFunctionCall","src":"13724:77:43"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"13714:6:43"}]}]},{"nodeType":"YulBlock","src":"13821:303:43","statements":[{"nodeType":"YulVariableDeclaration","src":"13836:46:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13867:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"13878:2:43","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13863:3:43"},"nodeType":"YulFunctionCall","src":"13863:18:43"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"13850:12:43"},"nodeType":"YulFunctionCall","src":"13850:32:43"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"13840:6:43","type":""}]},{"body":{"nodeType":"YulBlock","src":"13929:83:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"13931:77:43"},"nodeType":"YulFunctionCall","src":"13931:79:43"},"nodeType":"YulExpressionStatement","src":"13931:79:43"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"13901:6:43"},{"kind":"number","nodeType":"YulLiteral","src":"13909:18:43","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"13898:2:43"},"nodeType":"YulFunctionCall","src":"13898:30:43"},"nodeType":"YulIf","src":"13895:117:43"},{"nodeType":"YulAssignment","src":"14026:88:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14086:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"14097:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14082:3:43"},"nodeType":"YulFunctionCall","src":"14082:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"14106:7:43"}],"functionName":{"name":"abi_decode_t_array$_t_uint256_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"14036:45:43"},"nodeType":"YulFunctionCall","src":"14036:78:43"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"14026:6:43"}]}]}]},"name":"abi_decode_tuple_t_array$_t_uint16_$dyn_memory_ptrt_array$_t_uint96_$dyn_memory_ptrt_array$_t_uint96_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12692:9:43","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"12703:7:43","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"12715:6:43","type":""},{"name":"value1","nodeType":"YulTypedName","src":"12723:6:43","type":""},{"name":"value2","nodeType":"YulTypedName","src":"12731:6:43","type":""},{"name":"value3","nodeType":"YulTypedName","src":"12739:6:43","type":""}],"src":"12532:1599:43"},{"body":{"nodeType":"YulBlock","src":"14219:390:43","statements":[{"body":{"nodeType":"YulBlock","src":"14265:83:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"14267:77:43"},"nodeType":"YulFunctionCall","src":"14267:79:43"},"nodeType":"YulExpressionStatement","src":"14267:79:43"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"14240:7:43"},{"name":"headStart","nodeType":"YulIdentifier","src":"14249:9:43"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"14236:3:43"},"nodeType":"YulFunctionCall","src":"14236:23:43"},{"kind":"number","nodeType":"YulLiteral","src":"14261:2:43","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"14232:3:43"},"nodeType":"YulFunctionCall","src":"14232:32:43"},"nodeType":"YulIf","src":"14229:119:43"},{"nodeType":"YulBlock","src":"14358:116:43","statements":[{"nodeType":"YulVariableDeclaration","src":"14373:15:43","value":{"kind":"number","nodeType":"YulLiteral","src":"14387:1:43","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"14377:6:43","type":""}]},{"nodeType":"YulAssignment","src":"14402:62:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14436:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"14447:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14432:3:43"},"nodeType":"YulFunctionCall","src":"14432:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"14456:7:43"}],"functionName":{"name":"abi_decode_t_uint16","nodeType":"YulIdentifier","src":"14412:19:43"},"nodeType":"YulFunctionCall","src":"14412:52:43"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"14402:6:43"}]}]},{"nodeType":"YulBlock","src":"14484:118:43","statements":[{"nodeType":"YulVariableDeclaration","src":"14499:16:43","value":{"kind":"number","nodeType":"YulLiteral","src":"14513:2:43","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"14503:6:43","type":""}]},{"nodeType":"YulAssignment","src":"14529:63:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14564:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"14575:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14560:3:43"},"nodeType":"YulFunctionCall","src":"14560:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"14584:7:43"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"14539:20:43"},"nodeType":"YulFunctionCall","src":"14539:53:43"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"14529:6:43"}]}]}]},"name":"abi_decode_tuple_t_uint16t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"14181:9:43","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"14192:7:43","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"14204:6:43","type":""},{"name":"value1","nodeType":"YulTypedName","src":"14212:6:43","type":""}],"src":"14137:472:43"},{"body":{"nodeType":"YulBlock","src":"14711:73:43","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14728:3:43"},{"name":"length","nodeType":"YulIdentifier","src":"14733:6:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14721:6:43"},"nodeType":"YulFunctionCall","src":"14721:19:43"},"nodeType":"YulExpressionStatement","src":"14721:19:43"},{"nodeType":"YulAssignment","src":"14749:29:43","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14768:3:43"},{"kind":"number","nodeType":"YulLiteral","src":"14773:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14764:3:43"},"nodeType":"YulFunctionCall","src":"14764:14:43"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"14749:11:43"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"14683:3:43","type":""},{"name":"length","nodeType":"YulTypedName","src":"14688:6:43","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"14699:11:43","type":""}],"src":"14615:169:43"},{"body":{"nodeType":"YulBlock","src":"14896:59:43","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"14918:6:43"},{"kind":"number","nodeType":"YulLiteral","src":"14926:1:43","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14914:3:43"},"nodeType":"YulFunctionCall","src":"14914:14:43"},{"hexValue":"535452415445474953545f524f4c45","kind":"string","nodeType":"YulLiteral","src":"14930:17:43","type":"","value":"STRATEGIST_ROLE"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14907:6:43"},"nodeType":"YulFunctionCall","src":"14907:41:43"},"nodeType":"YulExpressionStatement","src":"14907:41:43"}]},"name":"store_literal_in_memory_17a8e30262c1f919c33056d877a3c22b95c2f5e4dac44683c1c2323cd79fbdb0","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"14888:6:43","type":""}],"src":"14790:165:43"},{"body":{"nodeType":"YulBlock","src":"15107:220:43","statements":[{"nodeType":"YulAssignment","src":"15117:74:43","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"15183:3:43"},{"kind":"number","nodeType":"YulLiteral","src":"15188:2:43","type":"","value":"15"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"15124:58:43"},"nodeType":"YulFunctionCall","src":"15124:67:43"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"15117:3:43"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"15289:3:43"}],"functionName":{"name":"store_literal_in_memory_17a8e30262c1f919c33056d877a3c22b95c2f5e4dac44683c1c2323cd79fbdb0","nodeType":"YulIdentifier","src":"15200:88:43"},"nodeType":"YulFunctionCall","src":"15200:93:43"},"nodeType":"YulExpressionStatement","src":"15200:93:43"},{"nodeType":"YulAssignment","src":"15302:19:43","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"15313:3:43"},{"kind":"number","nodeType":"YulLiteral","src":"15318:2:43","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15309:3:43"},"nodeType":"YulFunctionCall","src":"15309:12:43"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"15302:3:43"}]}]},"name":"abi_encode_t_stringliteral_17a8e30262c1f919c33056d877a3c22b95c2f5e4dac44683c1c2323cd79fbdb0_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"15095:3:43","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"15103:3:43","type":""}],"src":"14961:366:43"},{"body":{"nodeType":"YulBlock","src":"15504:248:43","statements":[{"nodeType":"YulAssignment","src":"15514:26:43","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15526:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"15537:2:43","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15522:3:43"},"nodeType":"YulFunctionCall","src":"15522:18:43"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"15514:4:43"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15561:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"15572:1:43","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15557:3:43"},"nodeType":"YulFunctionCall","src":"15557:17:43"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"15580:4:43"},{"name":"headStart","nodeType":"YulIdentifier","src":"15586:9:43"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"15576:3:43"},"nodeType":"YulFunctionCall","src":"15576:20:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15550:6:43"},"nodeType":"YulFunctionCall","src":"15550:47:43"},"nodeType":"YulExpressionStatement","src":"15550:47:43"},{"nodeType":"YulAssignment","src":"15606:139:43","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"15740:4:43"}],"functionName":{"name":"abi_encode_t_stringliteral_17a8e30262c1f919c33056d877a3c22b95c2f5e4dac44683c1c2323cd79fbdb0_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"15614:124:43"},"nodeType":"YulFunctionCall","src":"15614:131:43"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"15606:4:43"}]}]},"name":"abi_encode_tuple_t_stringliteral_17a8e30262c1f919c33056d877a3c22b95c2f5e4dac44683c1c2323cd79fbdb0__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"15484:9:43","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"15499:4:43","type":""}],"src":"15333:419:43"},{"body":{"nodeType":"YulBlock","src":"15786:152:43","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15803:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"15806:77:43","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15796:6:43"},"nodeType":"YulFunctionCall","src":"15796:88:43"},"nodeType":"YulExpressionStatement","src":"15796:88:43"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15900:1:43","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"15903:4:43","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15893:6:43"},"nodeType":"YulFunctionCall","src":"15893:15:43"},"nodeType":"YulExpressionStatement","src":"15893:15:43"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15924:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"15927:4:43","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"15917:6:43"},"nodeType":"YulFunctionCall","src":"15917:15:43"},"nodeType":"YulExpressionStatement","src":"15917:15:43"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"15758:180:43"},{"body":{"nodeType":"YulBlock","src":"15989:149:43","statements":[{"nodeType":"YulAssignment","src":"15999:25:43","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"16022:1:43"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"16004:17:43"},"nodeType":"YulFunctionCall","src":"16004:20:43"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"15999:1:43"}]},{"nodeType":"YulAssignment","src":"16033:25:43","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"16056:1:43"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"16038:17:43"},"nodeType":"YulFunctionCall","src":"16038:20:43"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"16033:1:43"}]},{"nodeType":"YulAssignment","src":"16067:17:43","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"16079:1:43"},{"name":"y","nodeType":"YulIdentifier","src":"16082:1:43"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"16075:3:43"},"nodeType":"YulFunctionCall","src":"16075:9:43"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"16067:4:43"}]},{"body":{"nodeType":"YulBlock","src":"16109:22:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"16111:16:43"},"nodeType":"YulFunctionCall","src":"16111:18:43"},"nodeType":"YulExpressionStatement","src":"16111:18:43"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"16100:4:43"},{"name":"x","nodeType":"YulIdentifier","src":"16106:1:43"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"16097:2:43"},"nodeType":"YulFunctionCall","src":"16097:11:43"},"nodeType":"YulIf","src":"16094:37:43"}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"15975:1:43","type":""},{"name":"y","nodeType":"YulTypedName","src":"15978:1:43","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"15984:4:43","type":""}],"src":"15944:194:43"},{"body":{"nodeType":"YulBlock","src":"16188:147:43","statements":[{"nodeType":"YulAssignment","src":"16198:25:43","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"16221:1:43"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"16203:17:43"},"nodeType":"YulFunctionCall","src":"16203:20:43"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"16198:1:43"}]},{"nodeType":"YulAssignment","src":"16232:25:43","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"16255:1:43"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"16237:17:43"},"nodeType":"YulFunctionCall","src":"16237:20:43"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"16232:1:43"}]},{"nodeType":"YulAssignment","src":"16266:16:43","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"16277:1:43"},{"name":"y","nodeType":"YulIdentifier","src":"16280:1:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16273:3:43"},"nodeType":"YulFunctionCall","src":"16273:9:43"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"16266:3:43"}]},{"body":{"nodeType":"YulBlock","src":"16306:22:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"16308:16:43"},"nodeType":"YulFunctionCall","src":"16308:18:43"},"nodeType":"YulExpressionStatement","src":"16308:18:43"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"16298:1:43"},{"name":"sum","nodeType":"YulIdentifier","src":"16301:3:43"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"16295:2:43"},"nodeType":"YulFunctionCall","src":"16295:10:43"},"nodeType":"YulIf","src":"16292:36:43"}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"16175:1:43","type":""},{"name":"y","nodeType":"YulTypedName","src":"16178:1:43","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"16184:3:43","type":""}],"src":"16144:191:43"},{"body":{"nodeType":"YulBlock","src":"16369:152:43","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"16386:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"16389:77:43","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16379:6:43"},"nodeType":"YulFunctionCall","src":"16379:88:43"},"nodeType":"YulExpressionStatement","src":"16379:88:43"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"16483:1:43","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"16486:4:43","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16476:6:43"},"nodeType":"YulFunctionCall","src":"16476:15:43"},"nodeType":"YulExpressionStatement","src":"16476:15:43"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"16507:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"16510:4:43","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"16500:6:43"},"nodeType":"YulFunctionCall","src":"16500:15:43"},"nodeType":"YulExpressionStatement","src":"16500:15:43"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"16341:180:43"},{"body":{"nodeType":"YulBlock","src":"16570:190:43","statements":[{"nodeType":"YulAssignment","src":"16580:33:43","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"16607:5:43"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"16589:17:43"},"nodeType":"YulFunctionCall","src":"16589:24:43"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"16580:5:43"}]},{"body":{"nodeType":"YulBlock","src":"16703:22:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"16705:16:43"},"nodeType":"YulFunctionCall","src":"16705:18:43"},"nodeType":"YulExpressionStatement","src":"16705:18:43"}]},"condition":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"16628:5:43"},{"kind":"number","nodeType":"YulLiteral","src":"16635:66:43","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"16625:2:43"},"nodeType":"YulFunctionCall","src":"16625:77:43"},"nodeType":"YulIf","src":"16622:103:43"},{"nodeType":"YulAssignment","src":"16734:20:43","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"16745:5:43"},{"kind":"number","nodeType":"YulLiteral","src":"16752:1:43","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16741:3:43"},"nodeType":"YulFunctionCall","src":"16741:13:43"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"16734:3:43"}]}]},"name":"increment_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"16556:5:43","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"16566:3:43","type":""}],"src":"16527:233:43"},{"body":{"nodeType":"YulBlock","src":"16872:58:43","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"16894:6:43"},{"kind":"number","nodeType":"YulLiteral","src":"16902:1:43","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16890:3:43"},"nodeType":"YulFunctionCall","src":"16890:14:43"},{"hexValue":"5452454153555245525f524f4c45","kind":"string","nodeType":"YulLiteral","src":"16906:16:43","type":"","value":"TREASURER_ROLE"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16883:6:43"},"nodeType":"YulFunctionCall","src":"16883:40:43"},"nodeType":"YulExpressionStatement","src":"16883:40:43"}]},"name":"store_literal_in_memory_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"16864:6:43","type":""}],"src":"16766:164:43"},{"body":{"nodeType":"YulBlock","src":"17082:220:43","statements":[{"nodeType":"YulAssignment","src":"17092:74:43","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17158:3:43"},{"kind":"number","nodeType":"YulLiteral","src":"17163:2:43","type":"","value":"14"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"17099:58:43"},"nodeType":"YulFunctionCall","src":"17099:67:43"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"17092:3:43"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17264:3:43"}],"functionName":{"name":"store_literal_in_memory_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07","nodeType":"YulIdentifier","src":"17175:88:43"},"nodeType":"YulFunctionCall","src":"17175:93:43"},"nodeType":"YulExpressionStatement","src":"17175:93:43"},{"nodeType":"YulAssignment","src":"17277:19:43","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17288:3:43"},{"kind":"number","nodeType":"YulLiteral","src":"17293:2:43","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17284:3:43"},"nodeType":"YulFunctionCall","src":"17284:12:43"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"17277:3:43"}]}]},"name":"abi_encode_t_stringliteral_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"17070:3:43","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"17078:3:43","type":""}],"src":"16936:366:43"},{"body":{"nodeType":"YulBlock","src":"17479:248:43","statements":[{"nodeType":"YulAssignment","src":"17489:26:43","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17501:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"17512:2:43","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17497:3:43"},"nodeType":"YulFunctionCall","src":"17497:18:43"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"17489:4:43"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17536:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"17547:1:43","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17532:3:43"},"nodeType":"YulFunctionCall","src":"17532:17:43"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"17555:4:43"},{"name":"headStart","nodeType":"YulIdentifier","src":"17561:9:43"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"17551:3:43"},"nodeType":"YulFunctionCall","src":"17551:20:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17525:6:43"},"nodeType":"YulFunctionCall","src":"17525:47:43"},"nodeType":"YulExpressionStatement","src":"17525:47:43"},{"nodeType":"YulAssignment","src":"17581:139:43","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"17715:4:43"}],"functionName":{"name":"abi_encode_t_stringliteral_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"17589:124:43"},"nodeType":"YulFunctionCall","src":"17589:131:43"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"17581:4:43"}]}]},"name":"abi_encode_tuple_t_stringliteral_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"17459:9:43","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"17474:4:43","type":""}],"src":"17308:419:43"},{"body":{"nodeType":"YulBlock","src":"17859:206:43","statements":[{"nodeType":"YulAssignment","src":"17869:26:43","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17881:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"17892:2:43","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17877:3:43"},"nodeType":"YulFunctionCall","src":"17877:18:43"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"17869:4:43"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"17949:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17962:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"17973:1:43","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17958:3:43"},"nodeType":"YulFunctionCall","src":"17958:17:43"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"17905:43:43"},"nodeType":"YulFunctionCall","src":"17905:71:43"},"nodeType":"YulExpressionStatement","src":"17905:71:43"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"18030:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18043:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"18054:2:43","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18039:3:43"},"nodeType":"YulFunctionCall","src":"18039:18:43"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"17986:43:43"},"nodeType":"YulFunctionCall","src":"17986:72:43"},"nodeType":"YulExpressionStatement","src":"17986:72:43"}]},"name":"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"17823:9:43","type":""},{"name":"value1","nodeType":"YulTypedName","src":"17835:6:43","type":""},{"name":"value0","nodeType":"YulTypedName","src":"17843:6:43","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"17854:4:43","type":""}],"src":"17733:332:43"},{"body":{"nodeType":"YulBlock","src":"18111:76:43","statements":[{"body":{"nodeType":"YulBlock","src":"18165:16:43","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"18174:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"18177:1:43","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"18167:6:43"},"nodeType":"YulFunctionCall","src":"18167:12:43"},"nodeType":"YulExpressionStatement","src":"18167:12:43"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"18134:5:43"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"18156:5:43"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"18141:14:43"},"nodeType":"YulFunctionCall","src":"18141:21:43"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"18131:2:43"},"nodeType":"YulFunctionCall","src":"18131:32:43"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"18124:6:43"},"nodeType":"YulFunctionCall","src":"18124:40:43"},"nodeType":"YulIf","src":"18121:60:43"}]},"name":"validator_revert_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"18104:5:43","type":""}],"src":"18071:116:43"},{"body":{"nodeType":"YulBlock","src":"18253:77:43","statements":[{"nodeType":"YulAssignment","src":"18263:22:43","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"18278:6:43"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"18272:5:43"},"nodeType":"YulFunctionCall","src":"18272:13:43"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"18263:5:43"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"18318:5:43"}],"functionName":{"name":"validator_revert_t_bool","nodeType":"YulIdentifier","src":"18294:23:43"},"nodeType":"YulFunctionCall","src":"18294:30:43"},"nodeType":"YulExpressionStatement","src":"18294:30:43"}]},"name":"abi_decode_t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"18231:6:43","type":""},{"name":"end","nodeType":"YulTypedName","src":"18239:3:43","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"18247:5:43","type":""}],"src":"18193:137:43"},{"body":{"nodeType":"YulBlock","src":"18410:271:43","statements":[{"body":{"nodeType":"YulBlock","src":"18456:83:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"18458:77:43"},"nodeType":"YulFunctionCall","src":"18458:79:43"},"nodeType":"YulExpressionStatement","src":"18458:79:43"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"18431:7:43"},{"name":"headStart","nodeType":"YulIdentifier","src":"18440:9:43"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"18427:3:43"},"nodeType":"YulFunctionCall","src":"18427:23:43"},{"kind":"number","nodeType":"YulLiteral","src":"18452:2:43","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"18423:3:43"},"nodeType":"YulFunctionCall","src":"18423:32:43"},"nodeType":"YulIf","src":"18420:119:43"},{"nodeType":"YulBlock","src":"18549:125:43","statements":[{"nodeType":"YulVariableDeclaration","src":"18564:15:43","value":{"kind":"number","nodeType":"YulLiteral","src":"18578:1:43","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"18568:6:43","type":""}]},{"nodeType":"YulAssignment","src":"18593:71:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18636:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"18647:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18632:3:43"},"nodeType":"YulFunctionCall","src":"18632:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"18656:7:43"}],"functionName":{"name":"abi_decode_t_bool_fromMemory","nodeType":"YulIdentifier","src":"18603:28:43"},"nodeType":"YulFunctionCall","src":"18603:61:43"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"18593:6:43"}]}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"18380:9:43","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"18391:7:43","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"18403:6:43","type":""}],"src":"18336:345:43"},{"body":{"nodeType":"YulBlock","src":"18841:288:43","statements":[{"nodeType":"YulAssignment","src":"18851:26:43","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18863:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"18874:2:43","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18859:3:43"},"nodeType":"YulFunctionCall","src":"18859:18:43"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"18851:4:43"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"18931:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18944:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"18955:1:43","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18940:3:43"},"nodeType":"YulFunctionCall","src":"18940:17:43"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"18887:43:43"},"nodeType":"YulFunctionCall","src":"18887:71:43"},"nodeType":"YulExpressionStatement","src":"18887:71:43"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"19012:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19025:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"19036:2:43","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19021:3:43"},"nodeType":"YulFunctionCall","src":"19021:18:43"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"18968:43:43"},"nodeType":"YulFunctionCall","src":"18968:72:43"},"nodeType":"YulExpressionStatement","src":"18968:72:43"},{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"19094:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19107:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"19118:2:43","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19103:3:43"},"nodeType":"YulFunctionCall","src":"19103:18:43"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"19050:43:43"},"nodeType":"YulFunctionCall","src":"19050:72:43"},"nodeType":"YulExpressionStatement","src":"19050:72:43"}]},"name":"abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"18797:9:43","type":""},{"name":"value2","nodeType":"YulTypedName","src":"18809:6:43","type":""},{"name":"value1","nodeType":"YulTypedName","src":"18817:6:43","type":""},{"name":"value0","nodeType":"YulTypedName","src":"18825:6:43","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"18836:4:43","type":""}],"src":"18687:442:43"},{"body":{"nodeType":"YulBlock","src":"19177:285:43","statements":[{"nodeType":"YulAssignment","src":"19187:23:43","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"19208:1:43"}],"functionName":{"name":"cleanup_t_int96","nodeType":"YulIdentifier","src":"19192:15:43"},"nodeType":"YulFunctionCall","src":"19192:18:43"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"19187:1:43"}]},{"nodeType":"YulAssignment","src":"19219:23:43","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"19240:1:43"}],"functionName":{"name":"cleanup_t_int96","nodeType":"YulIdentifier","src":"19224:15:43"},"nodeType":"YulFunctionCall","src":"19224:18:43"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"19219:1:43"}]},{"nodeType":"YulAssignment","src":"19251:16:43","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"19262:1:43"},{"name":"y","nodeType":"YulIdentifier","src":"19265:1:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19258:3:43"},"nodeType":"YulFunctionCall","src":"19258:9:43"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"19251:3:43"}]},{"body":{"nodeType":"YulBlock","src":"19433:22:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"19435:16:43"},"nodeType":"YulFunctionCall","src":"19435:18:43"},"nodeType":"YulExpressionStatement","src":"19435:18:43"}]},"condition":{"arguments":[{"arguments":[{"name":"sum","nodeType":"YulIdentifier","src":"19300:3:43"},{"kind":"number","nodeType":"YulLiteral","src":"19305:26:43","type":"","value":"0x7fffffffffffffffffffffff"}],"functionName":{"name":"sgt","nodeType":"YulIdentifier","src":"19296:3:43"},"nodeType":"YulFunctionCall","src":"19296:36:43"},{"arguments":[{"name":"sum","nodeType":"YulIdentifier","src":"19350:3:43"},{"kind":"number","nodeType":"YulLiteral","src":"19355:66:43","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff800000000000000000000000"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"19346:3:43"},"nodeType":"YulFunctionCall","src":"19346:76:43"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"19280:2:43"},"nodeType":"YulFunctionCall","src":"19280:152:43"},"nodeType":"YulIf","src":"19277:178:43"}]},"name":"checked_add_t_int96","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"19164:1:43","type":""},{"name":"y","nodeType":"YulTypedName","src":"19167:1:43","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"19173:3:43","type":""}],"src":"19135:327:43"},{"body":{"nodeType":"YulBlock","src":"19516:362:43","statements":[{"nodeType":"YulAssignment","src":"19526:25:43","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"19549:1:43"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"19531:17:43"},"nodeType":"YulFunctionCall","src":"19531:20:43"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"19526:1:43"}]},{"nodeType":"YulAssignment","src":"19560:25:43","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"19583:1:43"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"19565:17:43"},"nodeType":"YulFunctionCall","src":"19565:20:43"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"19560:1:43"}]},{"nodeType":"YulVariableDeclaration","src":"19594:28:43","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"19617:1:43"},{"name":"y","nodeType":"YulIdentifier","src":"19620:1:43"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"19613:3:43"},"nodeType":"YulFunctionCall","src":"19613:9:43"},"variables":[{"name":"product_raw","nodeType":"YulTypedName","src":"19598:11:43","type":""}]},{"nodeType":"YulAssignment","src":"19631:41:43","value":{"arguments":[{"name":"product_raw","nodeType":"YulIdentifier","src":"19660:11:43"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"19642:17:43"},"nodeType":"YulFunctionCall","src":"19642:30:43"},"variableNames":[{"name":"product","nodeType":"YulIdentifier","src":"19631:7:43"}]},{"body":{"nodeType":"YulBlock","src":"19849:22:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"19851:16:43"},"nodeType":"YulFunctionCall","src":"19851:18:43"},"nodeType":"YulExpressionStatement","src":"19851:18:43"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"19782:1:43"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"19775:6:43"},"nodeType":"YulFunctionCall","src":"19775:9:43"},{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"19805:1:43"},{"arguments":[{"name":"product","nodeType":"YulIdentifier","src":"19812:7:43"},{"name":"x","nodeType":"YulIdentifier","src":"19821:1:43"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"19808:3:43"},"nodeType":"YulFunctionCall","src":"19808:15:43"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"19802:2:43"},"nodeType":"YulFunctionCall","src":"19802:22:43"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"19755:2:43"},"nodeType":"YulFunctionCall","src":"19755:83:43"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"19735:6:43"},"nodeType":"YulFunctionCall","src":"19735:113:43"},"nodeType":"YulIf","src":"19732:139:43"}]},"name":"checked_mul_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"19499:1:43","type":""},{"name":"y","nodeType":"YulTypedName","src":"19502:1:43","type":""}],"returnVariables":[{"name":"product","nodeType":"YulTypedName","src":"19508:7:43","type":""}],"src":"19468:410:43"},{"body":{"nodeType":"YulBlock","src":"19982:124:43","statements":[{"nodeType":"YulAssignment","src":"19992:26:43","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20004:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"20015:2:43","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20000:3:43"},"nodeType":"YulFunctionCall","src":"20000:18:43"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"19992:4:43"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"20072:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20085:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"20096:1:43","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20081:3:43"},"nodeType":"YulFunctionCall","src":"20081:17:43"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"20028:43:43"},"nodeType":"YulFunctionCall","src":"20028:71:43"},"nodeType":"YulExpressionStatement","src":"20028:71:43"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"19954:9:43","type":""},{"name":"value0","nodeType":"YulTypedName","src":"19966:6:43","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"19977:4:43","type":""}],"src":"19884:222:43"},{"body":{"nodeType":"YulBlock","src":"20175:80:43","statements":[{"nodeType":"YulAssignment","src":"20185:22:43","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"20200:6:43"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"20194:5:43"},"nodeType":"YulFunctionCall","src":"20194:13:43"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"20185:5:43"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"20243:5:43"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"20216:26:43"},"nodeType":"YulFunctionCall","src":"20216:33:43"},"nodeType":"YulExpressionStatement","src":"20216:33:43"}]},"name":"abi_decode_t_uint256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"20153:6:43","type":""},{"name":"end","nodeType":"YulTypedName","src":"20161:3:43","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"20169:5:43","type":""}],"src":"20112:143:43"},{"body":{"nodeType":"YulBlock","src":"20338:274:43","statements":[{"body":{"nodeType":"YulBlock","src":"20384:83:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"20386:77:43"},"nodeType":"YulFunctionCall","src":"20386:79:43"},"nodeType":"YulExpressionStatement","src":"20386:79:43"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"20359:7:43"},{"name":"headStart","nodeType":"YulIdentifier","src":"20368:9:43"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"20355:3:43"},"nodeType":"YulFunctionCall","src":"20355:23:43"},{"kind":"number","nodeType":"YulLiteral","src":"20380:2:43","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"20351:3:43"},"nodeType":"YulFunctionCall","src":"20351:32:43"},"nodeType":"YulIf","src":"20348:119:43"},{"nodeType":"YulBlock","src":"20477:128:43","statements":[{"nodeType":"YulVariableDeclaration","src":"20492:15:43","value":{"kind":"number","nodeType":"YulLiteral","src":"20506:1:43","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"20496:6:43","type":""}]},{"nodeType":"YulAssignment","src":"20521:74:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20567:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"20578:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20563:3:43"},"nodeType":"YulFunctionCall","src":"20563:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"20587:7:43"}],"functionName":{"name":"abi_decode_t_uint256_fromMemory","nodeType":"YulIdentifier","src":"20531:31:43"},"nodeType":"YulFunctionCall","src":"20531:64:43"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"20521:6:43"}]}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"20308:9:43","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"20319:7:43","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"20331:6:43","type":""}],"src":"20261:351:43"},{"body":{"nodeType":"YulBlock","src":"20650:28:43","statements":[{"nodeType":"YulAssignment","src":"20660:12:43","value":{"name":"value","nodeType":"YulIdentifier","src":"20667:5:43"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"20660:3:43"}]}]},"name":"identity","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"20636:5:43","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"20646:3:43","type":""}],"src":"20618:60:43"},{"body":{"nodeType":"YulBlock","src":"20744:82:43","statements":[{"nodeType":"YulAssignment","src":"20754:66:43","value":{"arguments":[{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"20812:5:43"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"20794:17:43"},"nodeType":"YulFunctionCall","src":"20794:24:43"}],"functionName":{"name":"identity","nodeType":"YulIdentifier","src":"20785:8:43"},"nodeType":"YulFunctionCall","src":"20785:34:43"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"20767:17:43"},"nodeType":"YulFunctionCall","src":"20767:53:43"},"variableNames":[{"name":"converted","nodeType":"YulIdentifier","src":"20754:9:43"}]}]},"name":"convert_t_uint160_to_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"20724:5:43","type":""}],"returnVariables":[{"name":"converted","nodeType":"YulTypedName","src":"20734:9:43","type":""}],"src":"20684:142:43"},{"body":{"nodeType":"YulBlock","src":"20892:66:43","statements":[{"nodeType":"YulAssignment","src":"20902:50:43","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"20946:5:43"}],"functionName":{"name":"convert_t_uint160_to_t_uint160","nodeType":"YulIdentifier","src":"20915:30:43"},"nodeType":"YulFunctionCall","src":"20915:37:43"},"variableNames":[{"name":"converted","nodeType":"YulIdentifier","src":"20902:9:43"}]}]},"name":"convert_t_uint160_to_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"20872:5:43","type":""}],"returnVariables":[{"name":"converted","nodeType":"YulTypedName","src":"20882:9:43","type":""}],"src":"20832:126:43"},{"body":{"nodeType":"YulBlock","src":"21044:66:43","statements":[{"nodeType":"YulAssignment","src":"21054:50:43","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"21098:5:43"}],"functionName":{"name":"convert_t_uint160_to_t_address","nodeType":"YulIdentifier","src":"21067:30:43"},"nodeType":"YulFunctionCall","src":"21067:37:43"},"variableNames":[{"name":"converted","nodeType":"YulIdentifier","src":"21054:9:43"}]}]},"name":"convert_t_contract$_ISuperToken_$6947_to_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"21024:5:43","type":""}],"returnVariables":[{"name":"converted","nodeType":"YulTypedName","src":"21034:9:43","type":""}],"src":"20964:146:43"},{"body":{"nodeType":"YulBlock","src":"21201:86:43","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"21218:3:43"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"21274:5:43"}],"functionName":{"name":"convert_t_contract$_ISuperToken_$6947_to_t_address","nodeType":"YulIdentifier","src":"21223:50:43"},"nodeType":"YulFunctionCall","src":"21223:57:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21211:6:43"},"nodeType":"YulFunctionCall","src":"21211:70:43"},"nodeType":"YulExpressionStatement","src":"21211:70:43"}]},"name":"abi_encode_t_contract$_ISuperToken_$6947_to_t_address_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"21189:5:43","type":""},{"name":"pos","nodeType":"YulTypedName","src":"21196:3:43","type":""}],"src":"21116:171:43"},{"body":{"nodeType":"YulBlock","src":"21354:51:43","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"21371:3:43"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"21392:5:43"}],"functionName":{"name":"cleanup_t_int96","nodeType":"YulIdentifier","src":"21376:15:43"},"nodeType":"YulFunctionCall","src":"21376:22:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21364:6:43"},"nodeType":"YulFunctionCall","src":"21364:35:43"},"nodeType":"YulExpressionStatement","src":"21364:35:43"}]},"name":"abi_encode_t_int96_to_t_int96_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"21342:5:43","type":""},{"name":"pos","nodeType":"YulTypedName","src":"21349:3:43","type":""}],"src":"21293:112:43"},{"body":{"nodeType":"YulBlock","src":"21553:222:43","statements":[{"nodeType":"YulAssignment","src":"21563:26:43","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21575:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"21586:2:43","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21571:3:43"},"nodeType":"YulFunctionCall","src":"21571:18:43"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"21563:4:43"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"21663:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21676:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"21687:1:43","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21672:3:43"},"nodeType":"YulFunctionCall","src":"21672:17:43"}],"functionName":{"name":"abi_encode_t_contract$_ISuperToken_$6947_to_t_address_fromStack","nodeType":"YulIdentifier","src":"21599:63:43"},"nodeType":"YulFunctionCall","src":"21599:91:43"},"nodeType":"YulExpressionStatement","src":"21599:91:43"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"21740:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21753:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"21764:2:43","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21749:3:43"},"nodeType":"YulFunctionCall","src":"21749:18:43"}],"functionName":{"name":"abi_encode_t_int96_to_t_int96_fromStack","nodeType":"YulIdentifier","src":"21700:39:43"},"nodeType":"YulFunctionCall","src":"21700:68:43"},"nodeType":"YulExpressionStatement","src":"21700:68:43"}]},"name":"abi_encode_tuple_t_contract$_ISuperToken_$6947_t_int96__to_t_address_t_int96__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"21517:9:43","type":""},{"name":"value1","nodeType":"YulTypedName","src":"21529:6:43","type":""},{"name":"value0","nodeType":"YulTypedName","src":"21537:6:43","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"21548:4:43","type":""}],"src":"21411:364:43"},{"body":{"nodeType":"YulBlock","src":"21927:226:43","statements":[{"nodeType":"YulAssignment","src":"21937:26:43","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21949:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"21960:2:43","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21945:3:43"},"nodeType":"YulFunctionCall","src":"21945:18:43"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"21937:4:43"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"22037:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22050:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"22061:1:43","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22046:3:43"},"nodeType":"YulFunctionCall","src":"22046:17:43"}],"functionName":{"name":"abi_encode_t_contract$_ISuperToken_$6947_to_t_address_fromStack","nodeType":"YulIdentifier","src":"21973:63:43"},"nodeType":"YulFunctionCall","src":"21973:91:43"},"nodeType":"YulExpressionStatement","src":"21973:91:43"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"22118:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22131:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"22142:2:43","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22127:3:43"},"nodeType":"YulFunctionCall","src":"22127:18:43"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"22074:43:43"},"nodeType":"YulFunctionCall","src":"22074:72:43"},"nodeType":"YulExpressionStatement","src":"22074:72:43"}]},"name":"abi_encode_tuple_t_contract$_ISuperToken_$6947_t_address__to_t_address_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"21891:9:43","type":""},{"name":"value1","nodeType":"YulTypedName","src":"21903:6:43","type":""},{"name":"value0","nodeType":"YulTypedName","src":"21911:6:43","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"21922:4:43","type":""}],"src":"21781:372:43"},{"body":{"nodeType":"YulBlock","src":"22220:78:43","statements":[{"nodeType":"YulAssignment","src":"22230:22:43","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"22245:6:43"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"22239:5:43"},"nodeType":"YulFunctionCall","src":"22239:13:43"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"22230:5:43"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"22286:5:43"}],"functionName":{"name":"validator_revert_t_int96","nodeType":"YulIdentifier","src":"22261:24:43"},"nodeType":"YulFunctionCall","src":"22261:31:43"},"nodeType":"YulExpressionStatement","src":"22261:31:43"}]},"name":"abi_decode_t_int96_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"22198:6:43","type":""},{"name":"end","nodeType":"YulTypedName","src":"22206:3:43","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"22214:5:43","type":""}],"src":"22159:139:43"},{"body":{"nodeType":"YulBlock","src":"22379:272:43","statements":[{"body":{"nodeType":"YulBlock","src":"22425:83:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"22427:77:43"},"nodeType":"YulFunctionCall","src":"22427:79:43"},"nodeType":"YulExpressionStatement","src":"22427:79:43"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"22400:7:43"},{"name":"headStart","nodeType":"YulIdentifier","src":"22409:9:43"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"22396:3:43"},"nodeType":"YulFunctionCall","src":"22396:23:43"},{"kind":"number","nodeType":"YulLiteral","src":"22421:2:43","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"22392:3:43"},"nodeType":"YulFunctionCall","src":"22392:32:43"},"nodeType":"YulIf","src":"22389:119:43"},{"nodeType":"YulBlock","src":"22518:126:43","statements":[{"nodeType":"YulVariableDeclaration","src":"22533:15:43","value":{"kind":"number","nodeType":"YulLiteral","src":"22547:1:43","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"22537:6:43","type":""}]},{"nodeType":"YulAssignment","src":"22562:72:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22606:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"22617:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22602:3:43"},"nodeType":"YulFunctionCall","src":"22602:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"22626:7:43"}],"functionName":{"name":"abi_decode_t_int96_fromMemory","nodeType":"YulIdentifier","src":"22572:29:43"},"nodeType":"YulFunctionCall","src":"22572:62:43"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"22562:6:43"}]}]}]},"name":"abi_decode_tuple_t_int96_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"22349:9:43","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"22360:7:43","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"22372:6:43","type":""}],"src":"22304:347:43"},{"body":{"nodeType":"YulBlock","src":"22685:152:43","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"22702:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"22705:77:43","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22695:6:43"},"nodeType":"YulFunctionCall","src":"22695:88:43"},"nodeType":"YulExpressionStatement","src":"22695:88:43"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"22799:1:43","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"22802:4:43","type":"","value":"0x31"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22792:6:43"},"nodeType":"YulFunctionCall","src":"22792:15:43"},"nodeType":"YulExpressionStatement","src":"22792:15:43"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"22823:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"22826:4:43","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"22816:6:43"},"nodeType":"YulFunctionCall","src":"22816:15:43"},"nodeType":"YulExpressionStatement","src":"22816:15:43"}]},"name":"panic_error_0x31","nodeType":"YulFunctionDefinition","src":"22657:180:43"},{"body":{"nodeType":"YulBlock","src":"22957:34:43","statements":[{"nodeType":"YulAssignment","src":"22967:18:43","value":{"name":"pos","nodeType":"YulIdentifier","src":"22982:3:43"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"22967:11:43"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"22929:3:43","type":""},{"name":"length","nodeType":"YulTypedName","src":"22934:6:43","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"22945:11:43","type":""}],"src":"22843:148:43"},{"body":{"nodeType":"YulBlock","src":"23103:67:43","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"23125:6:43"},{"kind":"number","nodeType":"YulLiteral","src":"23133:1:43","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23121:3:43"},"nodeType":"YulFunctionCall","src":"23121:14:43"},{"hexValue":"416363657373436f6e74726f6c3a206163636f756e7420","kind":"string","nodeType":"YulLiteral","src":"23137:25:43","type":"","value":"AccessControl: account "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"23114:6:43"},"nodeType":"YulFunctionCall","src":"23114:49:43"},"nodeType":"YulExpressionStatement","src":"23114:49:43"}]},"name":"store_literal_in_memory_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"23095:6:43","type":""}],"src":"22997:173:43"},{"body":{"nodeType":"YulBlock","src":"23340:238:43","statements":[{"nodeType":"YulAssignment","src":"23350:92:43","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"23434:3:43"},{"kind":"number","nodeType":"YulLiteral","src":"23439:2:43","type":"","value":"23"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"23357:76:43"},"nodeType":"YulFunctionCall","src":"23357:85:43"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"23350:3:43"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"23540:3:43"}],"functionName":{"name":"store_literal_in_memory_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874","nodeType":"YulIdentifier","src":"23451:88:43"},"nodeType":"YulFunctionCall","src":"23451:93:43"},"nodeType":"YulExpressionStatement","src":"23451:93:43"},{"nodeType":"YulAssignment","src":"23553:19:43","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"23564:3:43"},{"kind":"number","nodeType":"YulLiteral","src":"23569:2:43","type":"","value":"23"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23560:3:43"},"nodeType":"YulFunctionCall","src":"23560:12:43"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"23553:3:43"}]}]},"name":"abi_encode_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"23328:3:43","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"23336:3:43","type":""}],"src":"23176:402:43"},{"body":{"nodeType":"YulBlock","src":"23643:40:43","statements":[{"nodeType":"YulAssignment","src":"23654:22:43","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"23670:5:43"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"23664:5:43"},"nodeType":"YulFunctionCall","src":"23664:12:43"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"23654:6:43"}]}]},"name":"array_length_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"23626:5:43","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"23636:6:43","type":""}],"src":"23584:99:43"},{"body":{"nodeType":"YulBlock","src":"23751:184:43","statements":[{"nodeType":"YulVariableDeclaration","src":"23761:10:43","value":{"kind":"number","nodeType":"YulLiteral","src":"23770:1:43","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"23765:1:43","type":""}]},{"body":{"nodeType":"YulBlock","src":"23830:63:43","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"23855:3:43"},{"name":"i","nodeType":"YulIdentifier","src":"23860:1:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23851:3:43"},"nodeType":"YulFunctionCall","src":"23851:11:43"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"23874:3:43"},{"name":"i","nodeType":"YulIdentifier","src":"23879:1:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23870:3:43"},"nodeType":"YulFunctionCall","src":"23870:11:43"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"23864:5:43"},"nodeType":"YulFunctionCall","src":"23864:18:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"23844:6:43"},"nodeType":"YulFunctionCall","src":"23844:39:43"},"nodeType":"YulExpressionStatement","src":"23844:39:43"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"23791:1:43"},{"name":"length","nodeType":"YulIdentifier","src":"23794:6:43"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"23788:2:43"},"nodeType":"YulFunctionCall","src":"23788:13:43"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"23802:19:43","statements":[{"nodeType":"YulAssignment","src":"23804:15:43","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"23813:1:43"},{"kind":"number","nodeType":"YulLiteral","src":"23816:2:43","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23809:3:43"},"nodeType":"YulFunctionCall","src":"23809:10:43"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"23804:1:43"}]}]},"pre":{"nodeType":"YulBlock","src":"23784:3:43","statements":[]},"src":"23780:113:43"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"23913:3:43"},{"name":"length","nodeType":"YulIdentifier","src":"23918:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23909:3:43"},"nodeType":"YulFunctionCall","src":"23909:16:43"},{"kind":"number","nodeType":"YulLiteral","src":"23927:1:43","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"23902:6:43"},"nodeType":"YulFunctionCall","src":"23902:27:43"},"nodeType":"YulExpressionStatement","src":"23902:27:43"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"23733:3:43","type":""},{"name":"dst","nodeType":"YulTypedName","src":"23738:3:43","type":""},{"name":"length","nodeType":"YulTypedName","src":"23743:6:43","type":""}],"src":"23689:246:43"},{"body":{"nodeType":"YulBlock","src":"24051:280:43","statements":[{"nodeType":"YulVariableDeclaration","src":"24061:53:43","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"24108:5:43"}],"functionName":{"name":"array_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"24075:32:43"},"nodeType":"YulFunctionCall","src":"24075:39:43"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"24065:6:43","type":""}]},{"nodeType":"YulAssignment","src":"24123:96:43","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"24207:3:43"},{"name":"length","nodeType":"YulIdentifier","src":"24212:6:43"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"24130:76:43"},"nodeType":"YulFunctionCall","src":"24130:89:43"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"24123:3:43"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"24267:5:43"},{"kind":"number","nodeType":"YulLiteral","src":"24274:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24263:3:43"},"nodeType":"YulFunctionCall","src":"24263:16:43"},{"name":"pos","nodeType":"YulIdentifier","src":"24281:3:43"},{"name":"length","nodeType":"YulIdentifier","src":"24286:6:43"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"24228:34:43"},"nodeType":"YulFunctionCall","src":"24228:65:43"},"nodeType":"YulExpressionStatement","src":"24228:65:43"},{"nodeType":"YulAssignment","src":"24302:23:43","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"24313:3:43"},{"name":"length","nodeType":"YulIdentifier","src":"24318:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24309:3:43"},"nodeType":"YulFunctionCall","src":"24309:16:43"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"24302:3:43"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"24032:5:43","type":""},{"name":"pos","nodeType":"YulTypedName","src":"24039:3:43","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"24047:3:43","type":""}],"src":"23941:390:43"},{"body":{"nodeType":"YulBlock","src":"24443:61:43","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"24465:6:43"},{"kind":"number","nodeType":"YulLiteral","src":"24473:1:43","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24461:3:43"},"nodeType":"YulFunctionCall","src":"24461:14:43"},{"hexValue":"206973206d697373696e6720726f6c6520","kind":"string","nodeType":"YulLiteral","src":"24477:19:43","type":"","value":" is missing role "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"24454:6:43"},"nodeType":"YulFunctionCall","src":"24454:43:43"},"nodeType":"YulExpressionStatement","src":"24454:43:43"}]},"name":"store_literal_in_memory_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"24435:6:43","type":""}],"src":"24337:167:43"},{"body":{"nodeType":"YulBlock","src":"24674:238:43","statements":[{"nodeType":"YulAssignment","src":"24684:92:43","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"24768:3:43"},{"kind":"number","nodeType":"YulLiteral","src":"24773:2:43","type":"","value":"17"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"24691:76:43"},"nodeType":"YulFunctionCall","src":"24691:85:43"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"24684:3:43"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"24874:3:43"}],"functionName":{"name":"store_literal_in_memory_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69","nodeType":"YulIdentifier","src":"24785:88:43"},"nodeType":"YulFunctionCall","src":"24785:93:43"},"nodeType":"YulExpressionStatement","src":"24785:93:43"},{"nodeType":"YulAssignment","src":"24887:19:43","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"24898:3:43"},{"kind":"number","nodeType":"YulLiteral","src":"24903:2:43","type":"","value":"17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24894:3:43"},"nodeType":"YulFunctionCall","src":"24894:12:43"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"24887:3:43"}]}]},"name":"abi_encode_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"24662:3:43","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"24670:3:43","type":""}],"src":"24510:402:43"},{"body":{"nodeType":"YulBlock","src":"25304:581:43","statements":[{"nodeType":"YulAssignment","src":"25315:155:43","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"25466:3:43"}],"functionName":{"name":"abi_encode_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"25322:142:43"},"nodeType":"YulFunctionCall","src":"25322:148:43"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"25315:3:43"}]},{"nodeType":"YulAssignment","src":"25480:102:43","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"25569:6:43"},{"name":"pos","nodeType":"YulIdentifier","src":"25578:3:43"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"25487:81:43"},"nodeType":"YulFunctionCall","src":"25487:95:43"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"25480:3:43"}]},{"nodeType":"YulAssignment","src":"25592:155:43","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"25743:3:43"}],"functionName":{"name":"abi_encode_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"25599:142:43"},"nodeType":"YulFunctionCall","src":"25599:148:43"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"25592:3:43"}]},{"nodeType":"YulAssignment","src":"25757:102:43","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"25846:6:43"},{"name":"pos","nodeType":"YulIdentifier","src":"25855:3:43"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"25764:81:43"},"nodeType":"YulFunctionCall","src":"25764:95:43"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"25757:3:43"}]},{"nodeType":"YulAssignment","src":"25869:10:43","value":{"name":"pos","nodeType":"YulIdentifier","src":"25876:3:43"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"25869:3:43"}]}]},"name":"abi_encode_tuple_packed_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_t_string_memory_ptr_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"25275:3:43","type":""},{"name":"value1","nodeType":"YulTypedName","src":"25281:6:43","type":""},{"name":"value0","nodeType":"YulTypedName","src":"25289:6:43","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"25300:3:43","type":""}],"src":"24918:967:43"},{"body":{"nodeType":"YulBlock","src":"25983:285:43","statements":[{"nodeType":"YulVariableDeclaration","src":"25993:53:43","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"26040:5:43"}],"functionName":{"name":"array_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"26007:32:43"},"nodeType":"YulFunctionCall","src":"26007:39:43"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"25997:6:43","type":""}]},{"nodeType":"YulAssignment","src":"26055:78:43","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"26121:3:43"},{"name":"length","nodeType":"YulIdentifier","src":"26126:6:43"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"26062:58:43"},"nodeType":"YulFunctionCall","src":"26062:71:43"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"26055:3:43"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"26181:5:43"},{"kind":"number","nodeType":"YulLiteral","src":"26188:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26177:3:43"},"nodeType":"YulFunctionCall","src":"26177:16:43"},{"name":"pos","nodeType":"YulIdentifier","src":"26195:3:43"},{"name":"length","nodeType":"YulIdentifier","src":"26200:6:43"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"26142:34:43"},"nodeType":"YulFunctionCall","src":"26142:65:43"},"nodeType":"YulExpressionStatement","src":"26142:65:43"},{"nodeType":"YulAssignment","src":"26216:46:43","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"26227:3:43"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"26254:6:43"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"26232:21:43"},"nodeType":"YulFunctionCall","src":"26232:29:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26223:3:43"},"nodeType":"YulFunctionCall","src":"26223:39:43"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"26216:3:43"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"25964:5:43","type":""},{"name":"pos","nodeType":"YulTypedName","src":"25971:3:43","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"25979:3:43","type":""}],"src":"25891:377:43"},{"body":{"nodeType":"YulBlock","src":"26392:195:43","statements":[{"nodeType":"YulAssignment","src":"26402:26:43","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"26414:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"26425:2:43","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26410:3:43"},"nodeType":"YulFunctionCall","src":"26410:18:43"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"26402:4:43"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"26449:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"26460:1:43","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26445:3:43"},"nodeType":"YulFunctionCall","src":"26445:17:43"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"26468:4:43"},{"name":"headStart","nodeType":"YulIdentifier","src":"26474:9:43"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"26464:3:43"},"nodeType":"YulFunctionCall","src":"26464:20:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"26438:6:43"},"nodeType":"YulFunctionCall","src":"26438:47:43"},"nodeType":"YulExpressionStatement","src":"26438:47:43"},{"nodeType":"YulAssignment","src":"26494:86:43","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"26566:6:43"},{"name":"tail","nodeType":"YulIdentifier","src":"26575:4:43"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"26502:63:43"},"nodeType":"YulFunctionCall","src":"26502:78:43"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"26494:4:43"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"26364:9:43","type":""},{"name":"value0","nodeType":"YulTypedName","src":"26376:6:43","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"26387:4:43","type":""}],"src":"26274:313:43"},{"body":{"nodeType":"YulBlock","src":"26656:80:43","statements":[{"nodeType":"YulAssignment","src":"26666:22:43","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"26681:6:43"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"26675:5:43"},"nodeType":"YulFunctionCall","src":"26675:13:43"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"26666:5:43"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"26724:5:43"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"26697:26:43"},"nodeType":"YulFunctionCall","src":"26697:33:43"},"nodeType":"YulExpressionStatement","src":"26697:33:43"}]},"name":"abi_decode_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"26634:6:43","type":""},{"name":"end","nodeType":"YulTypedName","src":"26642:3:43","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"26650:5:43","type":""}],"src":"26593:143:43"},{"body":{"nodeType":"YulBlock","src":"26819:274:43","statements":[{"body":{"nodeType":"YulBlock","src":"26865:83:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"26867:77:43"},"nodeType":"YulFunctionCall","src":"26867:79:43"},"nodeType":"YulExpressionStatement","src":"26867:79:43"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"26840:7:43"},{"name":"headStart","nodeType":"YulIdentifier","src":"26849:9:43"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"26836:3:43"},"nodeType":"YulFunctionCall","src":"26836:23:43"},{"kind":"number","nodeType":"YulLiteral","src":"26861:2:43","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"26832:3:43"},"nodeType":"YulFunctionCall","src":"26832:32:43"},"nodeType":"YulIf","src":"26829:119:43"},{"nodeType":"YulBlock","src":"26958:128:43","statements":[{"nodeType":"YulVariableDeclaration","src":"26973:15:43","value":{"kind":"number","nodeType":"YulLiteral","src":"26987:1:43","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"26977:6:43","type":""}]},{"nodeType":"YulAssignment","src":"27002:74:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"27048:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"27059:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"27044:3:43"},"nodeType":"YulFunctionCall","src":"27044:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"27068:7:43"}],"functionName":{"name":"abi_decode_t_address_fromMemory","nodeType":"YulIdentifier","src":"27012:31:43"},"nodeType":"YulFunctionCall","src":"27012:64:43"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"27002:6:43"}]}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"26789:9:43","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"26800:7:43","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"26812:6:43","type":""}],"src":"26742:351:43"},{"body":{"nodeType":"YulBlock","src":"27228:32:43","statements":[{"nodeType":"YulAssignment","src":"27238:16:43","value":{"name":"value","nodeType":"YulIdentifier","src":"27249:5:43"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"27238:7:43"}]}]},"name":"cleanup_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"27210:5:43","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"27220:7:43","type":""}],"src":"27099:161:43"},{"body":{"nodeType":"YulBlock","src":"27311:32:43","statements":[{"nodeType":"YulAssignment","src":"27321:16:43","value":{"name":"value","nodeType":"YulIdentifier","src":"27332:5:43"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"27321:7:43"}]}]},"name":"cleanup_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"27293:5:43","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"27303:7:43","type":""}],"src":"27266:77:43"},{"body":{"nodeType":"YulBlock","src":"27390:51:43","statements":[{"nodeType":"YulAssignment","src":"27400:34:43","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"27425:1:43","type":"","value":"0"},{"name":"value","nodeType":"YulIdentifier","src":"27428:5:43"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"27421:3:43"},"nodeType":"YulFunctionCall","src":"27421:13:43"},"variableNames":[{"name":"newValue","nodeType":"YulIdentifier","src":"27400:8:43"}]}]},"name":"shift_left_0","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"27371:5:43","type":""}],"returnVariables":[{"name":"newValue","nodeType":"YulTypedName","src":"27381:8:43","type":""}],"src":"27349:92:43"},{"body":{"nodeType":"YulBlock","src":"27591:170:43","statements":[{"nodeType":"YulAssignment","src":"27601:154:43","value":{"arguments":[{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"27747:5:43"}],"functionName":{"name":"cleanup_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1","nodeType":"YulIdentifier","src":"27645:101:43"},"nodeType":"YulFunctionCall","src":"27645:108:43"}],"functionName":{"name":"shift_left_0","nodeType":"YulIdentifier","src":"27632:12:43"},"nodeType":"YulFunctionCall","src":"27632:122:43"}],"functionName":{"name":"cleanup_t_bytes32","nodeType":"YulIdentifier","src":"27614:17:43"},"nodeType":"YulFunctionCall","src":"27614:141:43"},"variableNames":[{"name":"converted","nodeType":"YulIdentifier","src":"27601:9:43"}]}]},"name":"convert_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1_to_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"27571:5:43","type":""}],"returnVariables":[{"name":"converted","nodeType":"YulTypedName","src":"27581:9:43","type":""}],"src":"27447:314:43"},{"body":{"nodeType":"YulBlock","src":"27916:150:43","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"27933:3:43"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"28053:5:43"}],"functionName":{"name":"convert_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1_to_t_bytes32","nodeType":"YulIdentifier","src":"27938:114:43"},"nodeType":"YulFunctionCall","src":"27938:121:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"27926:6:43"},"nodeType":"YulFunctionCall","src":"27926:134:43"},"nodeType":"YulExpressionStatement","src":"27926:134:43"}]},"name":"abi_encode_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1_to_t_bytes32_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"27904:5:43","type":""},{"name":"pos","nodeType":"YulTypedName","src":"27911:3:43","type":""}],"src":"27767:299:43"},{"body":{"nodeType":"YulBlock","src":"28254:208:43","statements":[{"nodeType":"YulAssignment","src":"28264:26:43","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"28276:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"28287:2:43","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"28272:3:43"},"nodeType":"YulFunctionCall","src":"28272:18:43"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"28264:4:43"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"28428:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"28441:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"28452:1:43","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"28437:3:43"},"nodeType":"YulFunctionCall","src":"28437:17:43"}],"functionName":{"name":"abi_encode_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1_to_t_bytes32_fromStack","nodeType":"YulIdentifier","src":"28300:127:43"},"nodeType":"YulFunctionCall","src":"28300:155:43"},"nodeType":"YulExpressionStatement","src":"28300:155:43"}]},"name":"abi_encode_tuple_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1__to_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"28226:9:43","type":""},{"name":"value0","nodeType":"YulTypedName","src":"28238:6:43","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"28249:4:43","type":""}],"src":"28072:390:43"},{"body":{"nodeType":"YulBlock","src":"28537:51:43","statements":[{"nodeType":"YulAssignment","src":"28547:35:43","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"28576:5:43"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"28558:17:43"},"nodeType":"YulFunctionCall","src":"28558:24:43"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"28547:7:43"}]}]},"name":"cleanup_t_contract$_ISuperAgreement_$6395","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"28519:5:43","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"28529:7:43","type":""}],"src":"28468:120:43"},{"body":{"nodeType":"YulBlock","src":"28661:103:43","statements":[{"body":{"nodeType":"YulBlock","src":"28742:16:43","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"28751:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"28754:1:43","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"28744:6:43"},"nodeType":"YulFunctionCall","src":"28744:12:43"},"nodeType":"YulExpressionStatement","src":"28744:12:43"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"28684:5:43"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"28733:5:43"}],"functionName":{"name":"cleanup_t_contract$_ISuperAgreement_$6395","nodeType":"YulIdentifier","src":"28691:41:43"},"nodeType":"YulFunctionCall","src":"28691:48:43"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"28681:2:43"},"nodeType":"YulFunctionCall","src":"28681:59:43"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"28674:6:43"},"nodeType":"YulFunctionCall","src":"28674:67:43"},"nodeType":"YulIf","src":"28671:87:43"}]},"name":"validator_revert_t_contract$_ISuperAgreement_$6395","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"28654:5:43","type":""}],"src":"28594:170:43"},{"body":{"nodeType":"YulBlock","src":"28857:104:43","statements":[{"nodeType":"YulAssignment","src":"28867:22:43","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"28882:6:43"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"28876:5:43"},"nodeType":"YulFunctionCall","src":"28876:13:43"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"28867:5:43"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"28949:5:43"}],"functionName":{"name":"validator_revert_t_contract$_ISuperAgreement_$6395","nodeType":"YulIdentifier","src":"28898:50:43"},"nodeType":"YulFunctionCall","src":"28898:57:43"},"nodeType":"YulExpressionStatement","src":"28898:57:43"}]},"name":"abi_decode_t_contract$_ISuperAgreement_$6395_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"28835:6:43","type":""},{"name":"end","nodeType":"YulTypedName","src":"28843:3:43","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"28851:5:43","type":""}],"src":"28770:191:43"},{"body":{"nodeType":"YulBlock","src":"29068:298:43","statements":[{"body":{"nodeType":"YulBlock","src":"29114:83:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"29116:77:43"},"nodeType":"YulFunctionCall","src":"29116:79:43"},"nodeType":"YulExpressionStatement","src":"29116:79:43"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"29089:7:43"},{"name":"headStart","nodeType":"YulIdentifier","src":"29098:9:43"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"29085:3:43"},"nodeType":"YulFunctionCall","src":"29085:23:43"},{"kind":"number","nodeType":"YulLiteral","src":"29110:2:43","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"29081:3:43"},"nodeType":"YulFunctionCall","src":"29081:32:43"},"nodeType":"YulIf","src":"29078:119:43"},{"nodeType":"YulBlock","src":"29207:152:43","statements":[{"nodeType":"YulVariableDeclaration","src":"29222:15:43","value":{"kind":"number","nodeType":"YulLiteral","src":"29236:1:43","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"29226:6:43","type":""}]},{"nodeType":"YulAssignment","src":"29251:98:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"29321:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"29332:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"29317:3:43"},"nodeType":"YulFunctionCall","src":"29317:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"29341:7:43"}],"functionName":{"name":"abi_decode_t_contract$_ISuperAgreement_$6395_fromMemory","nodeType":"YulIdentifier","src":"29261:55:43"},"nodeType":"YulFunctionCall","src":"29261:88:43"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"29251:6:43"}]}]}]},"name":"abi_decode_tuple_t_contract$_ISuperAgreement_$6395_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"29038:9:43","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"29049:7:43","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"29061:6:43","type":""}],"src":"28967:399:43"},{"body":{"nodeType":"YulBlock","src":"29400:152:43","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"29417:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"29420:77:43","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"29410:6:43"},"nodeType":"YulFunctionCall","src":"29410:88:43"},"nodeType":"YulExpressionStatement","src":"29410:88:43"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"29514:1:43","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"29517:4:43","type":"","value":"0x01"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"29507:6:43"},"nodeType":"YulFunctionCall","src":"29507:15:43"},"nodeType":"YulExpressionStatement","src":"29507:15:43"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"29538:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"29541:4:43","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"29531:6:43"},"nodeType":"YulFunctionCall","src":"29531:15:43"},"nodeType":"YulExpressionStatement","src":"29531:15:43"}]},"name":"panic_error_0x01","nodeType":"YulFunctionDefinition","src":"29372:180:43"},{"body":{"nodeType":"YulBlock","src":"29602:172:43","statements":[{"nodeType":"YulAssignment","src":"29612:24:43","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"29634:1:43"}],"functionName":{"name":"cleanup_t_uint96","nodeType":"YulIdentifier","src":"29617:16:43"},"nodeType":"YulFunctionCall","src":"29617:19:43"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"29612:1:43"}]},{"nodeType":"YulAssignment","src":"29645:24:43","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"29667:1:43"}],"functionName":{"name":"cleanup_t_uint96","nodeType":"YulIdentifier","src":"29650:16:43"},"nodeType":"YulFunctionCall","src":"29650:19:43"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"29645:1:43"}]},{"nodeType":"YulAssignment","src":"29678:17:43","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"29690:1:43"},{"name":"y","nodeType":"YulIdentifier","src":"29693:1:43"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"29686:3:43"},"nodeType":"YulFunctionCall","src":"29686:9:43"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"29678:4:43"}]},{"body":{"nodeType":"YulBlock","src":"29745:22:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"29747:16:43"},"nodeType":"YulFunctionCall","src":"29747:18:43"},"nodeType":"YulExpressionStatement","src":"29747:18:43"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"29711:4:43"},{"kind":"number","nodeType":"YulLiteral","src":"29717:26:43","type":"","value":"0xffffffffffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"29708:2:43"},"nodeType":"YulFunctionCall","src":"29708:36:43"},"nodeType":"YulIf","src":"29705:62:43"}]},"name":"checked_sub_t_uint96","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"29588:1:43","type":""},{"name":"y","nodeType":"YulTypedName","src":"29591:1:43","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"29597:4:43","type":""}],"src":"29558:216:43"},{"body":{"nodeType":"YulBlock","src":"29823:128:43","statements":[{"nodeType":"YulAssignment","src":"29833:33:43","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"29860:5:43"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"29842:17:43"},"nodeType":"YulFunctionCall","src":"29842:24:43"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"29833:5:43"}]},{"body":{"nodeType":"YulBlock","src":"29894:22:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"29896:16:43"},"nodeType":"YulFunctionCall","src":"29896:18:43"},"nodeType":"YulExpressionStatement","src":"29896:18:43"}]},"condition":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"29881:5:43"},{"kind":"number","nodeType":"YulLiteral","src":"29888:4:43","type":"","value":"0x00"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"29878:2:43"},"nodeType":"YulFunctionCall","src":"29878:15:43"},"nodeType":"YulIf","src":"29875:41:43"},{"nodeType":"YulAssignment","src":"29925:20:43","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"29936:5:43"},{"kind":"number","nodeType":"YulLiteral","src":"29943:1:43","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"29932:3:43"},"nodeType":"YulFunctionCall","src":"29932:13:43"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"29925:3:43"}]}]},"name":"decrement_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"29809:5:43","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"29819:3:43","type":""}],"src":"29780:171:43"},{"body":{"nodeType":"YulBlock","src":"30063:76:43","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"30085:6:43"},{"kind":"number","nodeType":"YulLiteral","src":"30093:1:43","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"30081:3:43"},"nodeType":"YulFunctionCall","src":"30081:14:43"},{"hexValue":"537472696e67733a20686578206c656e67746820696e73756666696369656e74","kind":"string","nodeType":"YulLiteral","src":"30097:34:43","type":"","value":"Strings: hex length insufficient"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"30074:6:43"},"nodeType":"YulFunctionCall","src":"30074:58:43"},"nodeType":"YulExpressionStatement","src":"30074:58:43"}]},"name":"store_literal_in_memory_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"30055:6:43","type":""}],"src":"29957:182:43"},{"body":{"nodeType":"YulBlock","src":"30291:220:43","statements":[{"nodeType":"YulAssignment","src":"30301:74:43","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"30367:3:43"},{"kind":"number","nodeType":"YulLiteral","src":"30372:2:43","type":"","value":"32"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"30308:58:43"},"nodeType":"YulFunctionCall","src":"30308:67:43"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"30301:3:43"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"30473:3:43"}],"functionName":{"name":"store_literal_in_memory_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2","nodeType":"YulIdentifier","src":"30384:88:43"},"nodeType":"YulFunctionCall","src":"30384:93:43"},"nodeType":"YulExpressionStatement","src":"30384:93:43"},{"nodeType":"YulAssignment","src":"30486:19:43","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"30497:3:43"},{"kind":"number","nodeType":"YulLiteral","src":"30502:2:43","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"30493:3:43"},"nodeType":"YulFunctionCall","src":"30493:12:43"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"30486:3:43"}]}]},"name":"abi_encode_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"30279:3:43","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"30287:3:43","type":""}],"src":"30145:366:43"},{"body":{"nodeType":"YulBlock","src":"30688:248:43","statements":[{"nodeType":"YulAssignment","src":"30698:26:43","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"30710:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"30721:2:43","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"30706:3:43"},"nodeType":"YulFunctionCall","src":"30706:18:43"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"30698:4:43"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"30745:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"30756:1:43","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"30741:3:43"},"nodeType":"YulFunctionCall","src":"30741:17:43"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"30764:4:43"},{"name":"headStart","nodeType":"YulIdentifier","src":"30770:9:43"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"30760:3:43"},"nodeType":"YulFunctionCall","src":"30760:20:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"30734:6:43"},"nodeType":"YulFunctionCall","src":"30734:47:43"},"nodeType":"YulExpressionStatement","src":"30734:47:43"},{"nodeType":"YulAssignment","src":"30790:139:43","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"30924:4:43"}],"functionName":{"name":"abi_encode_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"30798:124:43"},"nodeType":"YulFunctionCall","src":"30798:131:43"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"30790:4:43"}]}]},"name":"abi_encode_tuple_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"30668:9:43","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"30683:4:43","type":""}],"src":"30517:419:43"}]},"contents":"{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_address_t_uint256_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart , value3, value2, value1, value0) -> tail {\n tail := add(headStart, 128)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value3, add(headStart, 96))\n\n }\n\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_uint16(value) -> cleaned {\n cleaned := and(value, 0xffff)\n }\n\n function abi_encode_t_uint16_to_t_uint16_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint16(value))\n }\n\n function abi_encode_tuple_t_uint16__to_t_uint16__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint16_to_t_uint16_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_int96(value) -> cleaned {\n cleaned := signextend(11, value)\n }\n\n function validator_revert_t_int96(value) {\n if iszero(eq(value, cleanup_t_int96(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_int96(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_int96(value)\n }\n\n function abi_decode_tuple_t_addresst_int96(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_int96(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function cleanup_t_uint96(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffff)\n }\n\n function abi_encode_t_uint96_to_t_uint96_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint96(value))\n }\n\n function abi_encode_tuple_t_uint16_t_uint96_t_uint96__to_t_uint16_t_uint96_t_uint96__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_uint16_to_t_uint16_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint96_to_t_uint96_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint96_to_t_uint96_fromStack(value2, add(headStart, 64))\n\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bool_to_t_bool_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_uint256t_address(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n\n function allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function array_allocation_size_t_array$_t_uint16_$dyn_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := mul(length, 0x20)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() {\n revert(0, 0)\n }\n\n function validator_revert_t_uint16(value) {\n if iszero(eq(value, cleanup_t_uint16(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint16(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint16(value)\n }\n\n // uint16[]\n function abi_decode_available_length_t_array$_t_uint16_$dyn_memory_ptr(offset, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_array$_t_uint16_$dyn_memory_ptr(length))\n let dst := array\n\n mstore(array, length)\n dst := add(array, 0x20)\n\n let srcEnd := add(offset, mul(length, 0x20))\n if gt(srcEnd, end) {\n revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef()\n }\n for { let src := offset } lt(src, srcEnd) { src := add(src, 0x20) }\n {\n\n let elementPos := src\n\n mstore(dst, abi_decode_t_uint16(elementPos, end))\n dst := add(dst, 0x20)\n }\n }\n\n // uint16[]\n function abi_decode_t_array$_t_uint16_$dyn_memory_ptr(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := calldataload(offset)\n array := abi_decode_available_length_t_array$_t_uint16_$dyn_memory_ptr(add(offset, 0x20), length, end)\n }\n\n function array_allocation_size_t_array$_t_uint96_$dyn_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := mul(length, 0x20)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function validator_revert_t_uint96(value) {\n if iszero(eq(value, cleanup_t_uint96(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint96(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint96(value)\n }\n\n // uint96[]\n function abi_decode_available_length_t_array$_t_uint96_$dyn_memory_ptr(offset, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_array$_t_uint96_$dyn_memory_ptr(length))\n let dst := array\n\n mstore(array, length)\n dst := add(array, 0x20)\n\n let srcEnd := add(offset, mul(length, 0x20))\n if gt(srcEnd, end) {\n revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef()\n }\n for { let src := offset } lt(src, srcEnd) { src := add(src, 0x20) }\n {\n\n let elementPos := src\n\n mstore(dst, abi_decode_t_uint96(elementPos, end))\n dst := add(dst, 0x20)\n }\n }\n\n // uint96[]\n function abi_decode_t_array$_t_uint96_$dyn_memory_ptr(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := calldataload(offset)\n array := abi_decode_available_length_t_array$_t_uint96_$dyn_memory_ptr(add(offset, 0x20), length, end)\n }\n\n function array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := mul(length, 0x20)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n // uint256[]\n function abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr(offset, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr(length))\n let dst := array\n\n mstore(array, length)\n dst := add(array, 0x20)\n\n let srcEnd := add(offset, mul(length, 0x20))\n if gt(srcEnd, end) {\n revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef()\n }\n for { let src := offset } lt(src, srcEnd) { src := add(src, 0x20) }\n {\n\n let elementPos := src\n\n mstore(dst, abi_decode_t_uint256(elementPos, end))\n dst := add(dst, 0x20)\n }\n }\n\n // uint256[]\n function abi_decode_t_array$_t_uint256_$dyn_memory_ptr(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := calldataload(offset)\n array := abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr(add(offset, 0x20), length, end)\n }\n\n function abi_decode_tuple_t_array$_t_uint16_$dyn_memory_ptrt_array$_t_uint96_$dyn_memory_ptrt_array$_t_uint96_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3 {\n if slt(sub(dataEnd, headStart), 128) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := calldataload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value0 := abi_decode_t_array$_t_uint16_$dyn_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value1 := abi_decode_t_array$_t_uint96_$dyn_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value2 := abi_decode_t_array$_t_uint96_$dyn_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 96))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value3 := abi_decode_t_array$_t_uint256_$dyn_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_uint16t_address(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function store_literal_in_memory_17a8e30262c1f919c33056d877a3c22b95c2f5e4dac44683c1c2323cd79fbdb0(memPtr) {\n\n mstore(add(memPtr, 0), \"STRATEGIST_ROLE\")\n\n }\n\n function abi_encode_t_stringliteral_17a8e30262c1f919c33056d877a3c22b95c2f5e4dac44683c1c2323cd79fbdb0_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 15)\n store_literal_in_memory_17a8e30262c1f919c33056d877a3c22b95c2f5e4dac44683c1c2323cd79fbdb0(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_17a8e30262c1f919c33056d877a3c22b95c2f5e4dac44683c1c2323cd79fbdb0__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_17a8e30262c1f919c33056d877a3c22b95c2f5e4dac44683c1c2323cd79fbdb0_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function checked_sub_t_uint256(x, y) -> diff {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n diff := sub(x, y)\n\n if gt(diff, x) { panic_error_0x11() }\n\n }\n\n function checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n sum := add(x, y)\n\n if gt(x, sum) { panic_error_0x11() }\n\n }\n\n function panic_error_0x32() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n\n function increment_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n ret := add(value, 1)\n }\n\n function store_literal_in_memory_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07(memPtr) {\n\n mstore(add(memPtr, 0), \"TREASURER_ROLE\")\n\n }\n\n function abi_encode_t_stringliteral_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 14)\n store_literal_in_memory_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n }\n\n function validator_revert_t_bool(value) {\n if iszero(eq(value, cleanup_t_bool(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bool_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_bool(value)\n }\n\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bool_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n }\n\n function checked_add_t_int96(x, y) -> sum {\n x := cleanup_t_int96(x)\n y := cleanup_t_int96(y)\n sum := add(x, y)\n\n if or(\n sgt(sum, 0x7fffffffffffffffffffffff),\n slt(sum, 0xffffffffffffffffffffffffffffffffffffffff800000000000000000000000)\n ) { panic_error_0x11() }\n\n }\n\n function checked_mul_t_uint256(x, y) -> product {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n let product_raw := mul(x, y)\n product := cleanup_t_uint256(product_raw)\n\n // overflow, if x != 0 and y != product/x\n if iszero(\n or(\n iszero(x),\n eq(y, div(product, x))\n )\n ) { panic_error_0x11() }\n\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_t_uint256_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function identity(value) -> ret {\n ret := value\n }\n\n function convert_t_uint160_to_t_uint160(value) -> converted {\n converted := cleanup_t_uint160(identity(cleanup_t_uint160(value)))\n }\n\n function convert_t_uint160_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_uint160(value)\n }\n\n function convert_t_contract$_ISuperToken_$6947_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_address(value)\n }\n\n function abi_encode_t_contract$_ISuperToken_$6947_to_t_address_fromStack(value, pos) {\n mstore(pos, convert_t_contract$_ISuperToken_$6947_to_t_address(value))\n }\n\n function abi_encode_t_int96_to_t_int96_fromStack(value, pos) {\n mstore(pos, cleanup_t_int96(value))\n }\n\n function abi_encode_tuple_t_contract$_ISuperToken_$6947_t_int96__to_t_address_t_int96__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_contract$_ISuperToken_$6947_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_int96_to_t_int96_fromStack(value1, add(headStart, 32))\n\n }\n\n function abi_encode_tuple_t_contract$_ISuperToken_$6947_t_address__to_t_address_t_address__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_contract$_ISuperToken_$6947_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n }\n\n function abi_decode_t_int96_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_int96(value)\n }\n\n function abi_decode_tuple_t_int96_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_int96_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x31() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x31)\n revert(0, 0x24)\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function store_literal_in_memory_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874(memPtr) {\n\n mstore(add(memPtr, 0), \"AccessControl: account \")\n\n }\n\n function abi_encode_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_to_t_string_memory_ptr_nonPadded_inplace_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, 23)\n store_literal_in_memory_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874(pos)\n end := add(pos, 23)\n }\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function copy_memory_to_memory_with_cleanup(src, dst, length) {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, length)\n }\n\n function store_literal_in_memory_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69(memPtr) {\n\n mstore(add(memPtr, 0), \" is missing role \")\n\n }\n\n function abi_encode_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_to_t_string_memory_ptr_nonPadded_inplace_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, 17)\n store_literal_in_memory_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69(pos)\n end := add(pos, 17)\n }\n\n function abi_encode_tuple_packed_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_t_string_memory_ptr_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value1, value0) -> end {\n\n pos := abi_encode_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_to_t_string_memory_ptr_nonPadded_inplace_fromStack( pos)\n\n pos := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value0, pos)\n\n pos := abi_encode_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_to_t_string_memory_ptr_nonPadded_inplace_fromStack( pos)\n\n pos := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value1, pos)\n\n end := pos\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value0, tail)\n\n }\n\n function abi_decode_t_address_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1(value) -> cleaned {\n cleaned := value\n }\n\n function cleanup_t_bytes32(value) -> cleaned {\n cleaned := value\n }\n\n function shift_left_0(value) -> newValue {\n newValue :=\n\n shl(0, value)\n\n }\n\n function convert_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1_to_t_bytes32(value) -> converted {\n converted := cleanup_t_bytes32(shift_left_0(cleanup_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1(value)))\n }\n\n function abi_encode_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1_to_t_bytes32_fromStack(value, pos) {\n mstore(pos, convert_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1_to_t_bytes32(value))\n }\n\n function abi_encode_tuple_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1__to_t_bytes32__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n }\n\n function cleanup_t_contract$_ISuperAgreement_$6395(value) -> cleaned {\n cleaned := cleanup_t_address(value)\n }\n\n function validator_revert_t_contract$_ISuperAgreement_$6395(value) {\n if iszero(eq(value, cleanup_t_contract$_ISuperAgreement_$6395(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_contract$_ISuperAgreement_$6395_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_contract$_ISuperAgreement_$6395(value)\n }\n\n function abi_decode_tuple_t_contract$_ISuperAgreement_$6395_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_ISuperAgreement_$6395_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x01() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x01)\n revert(0, 0x24)\n }\n\n function checked_sub_t_uint96(x, y) -> diff {\n x := cleanup_t_uint96(x)\n y := cleanup_t_uint96(y)\n diff := sub(x, y)\n\n if gt(diff, 0xffffffffffffffffffffffff) { panic_error_0x11() }\n\n }\n\n function decrement_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0x00) { panic_error_0x11() }\n ret := sub(value, 1)\n }\n\n function store_literal_in_memory_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2(memPtr) {\n\n mstore(add(memPtr, 0), \"Strings: hex length insufficient\")\n\n }\n\n function abi_encode_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 32)\n store_literal_in_memory_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n}\n","id":43,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106101c45760003560e01c80637f69bcaf116100f9578063be83574711610097578063ca70e1d511610071578063ca70e1d51461051a578063cb857c8014610538578063d99d3b6914610554578063ebaae66114610570576101c4565b8063be8357471461048a578063c467cddc146104ba578063c78f6803146104ea576101c4565b8063a8771ab9116100d3578063a8771ab9146103f0578063acff47441461040e578063adefe35e1461043e578063b24190831461045a576101c4565b80637f69bcaf1461038657806383807889146103b6578063a86c8c7c146103d2576101c4565b80634ee43e46116101665780636ab1c734116101405780636ab1c73414610322578063703ab1b714610354578063795e34251461035e5780637ea195ad14610368576101c4565b80634ee43e46146102b8578063578dc59a146102e85780636812a17314610304576101c4565b8063245b6c93116101a2578063245b6c931461024857806338e4f0641461026457806346a5d04314610280578063487eb9391461029c576101c4565b80630b72660d146101c957806322c3a21f146101fc5780632357f2cf14610218575b600080fd5b6101e360048036038101906101de9190612d16565b61058c565b6040516101f39493929190612d74565b60405180910390f35b61021660048036038101906102119190612db9565b6105ad565b005b610232600480360381019061022d9190612db9565b6105e6565b60405161023f9190612e03565b60405180910390f35b610262600480360381019061025d9190612e1e565b6105f8565b005b61027e60048036038101906102799190612d16565b61063a565b005b61029a60048036038101906102959190612d16565b610648565b005b6102b660048036038101906102b19190612e1e565b61065f565b005b6102d260048036038101906102cd9190612e84565b6106a1565b6040516102df9190612ec4565b60405180910390f35b61030260048036038101906102fd9190612e1e565b6106b5565b005b61030c6106f7565b6040516103199190612ec4565b60405180910390f35b61033c60048036038101906103379190612e1e565b610706565b60405161034b93929190612f06565b60405180910390f35b61035c610721565b005b610366610758565b005b61037061078f565b60405161037d9190612ec4565b60405180910390f35b6103a0600480360381019061039b9190612db9565b61079e565b6040516103ad9190612ec4565b60405180910390f35b6103d060048036038101906103cb9190612db9565b6107b0565b005b6103da6107e9565b6040516103e79190612f58565b60405180910390f35b6103f86107f8565b6040516104059190612ec4565b60405180910390f35b61042860048036038101906104239190612db9565b610807565b6040516104359190612f58565b60405180910390f35b61045860048036038101906104539190612f73565b610819565b005b610474600480360381019061046f9190612db9565b610827565b6040516104819190612ec4565b60405180910390f35b6104a4600480360381019061049f9190612fb3565b610839565b6040516104b19190612ec4565b60405180910390f35b6104d460048036038101906104cf9190612e84565b61084d565b6040516104e19190612f58565b60405180910390f35b61050460048036038101906104ff9190612db9565b610861565b6040516105119190612ec4565b60405180910390f35b610522610873565b60405161052f9190612ec4565b60405180910390f35b610552600480360381019061054d919061332a565b610882565b005b61056e60048036038101906105699190613401565b610a4b565b005b61058a60048036038101906105859190612d16565b610a86565b005b60008060008061059c8686610ac1565b935093509350935092959194509250565b6105da6040516020016105bf9061349e565b60405160208183030381529060405280519060200120610c84565b6105e381610c90565b50565b60006105f182610cf4565b9050919050565b61062560405160200161060a9061349e565b60405160208183030381529060405280519060200120610c84565b61062e81610d54565b61063781610d91565b50565b6106448282610da4565b5050565b61065182610fe1565b61065b8282611023565b5050565b61068c6040516020016106719061349e565b60405160208183030381529060405280519060200120610c84565b61069581610d54565b61069e816111a3565b50565b60006106ad83836111b6565b905092915050565b6106e26040516020016106c79061349e565b60405160208183030381529060405280519060200120610c84565b6106eb81610d54565b6106f48161125c565b50565b600061070161126f565b905090565b600080600061071484611282565b9250925092509193909250565b61074e6040516020016107339061349e565b60405160208183030381529060405280519060200120610c84565b6107566112c4565b565b61078560405160200161076a9061349e565b60405160208183030381529060405280519060200120610c84565b61078d611302565b565b6000610799611382565b905090565b60006107a982611395565b9050919050565b6107dd6040516020016107c29061349e565b60405160208183030381529060405280519060200120610c84565b6107e6816113e7565b50565b60006107f3611442565b905090565b6000610802611462565b905090565b60006108128261147c565b9050919050565b61082382826114db565b5050565b600061083282611549565b9050919050565b6000610845838361159b565b905092915050565b6000610859838361162b565b905092915050565b600061086c826116bf565b9050919050565b600061087d611711565b905090565b6108af6040516020016108949061349e565b60405160208183030381529060405280519060200120610c84565b825184511415806108c257508151845114155b806108cf57508051845114155b15610906576040517fed882f7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8451811015610a44576001855161092091906134ed565b8110156109bd57836001826109359190613521565b8151811061094657610945613555565b5b60200260200101516bffffffffffffffffffffffff1683828151811061096f5761096e613555565b5b60200260200101516bffffffffffffffffffffffff16146109bc576040517f2245023300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b610a318582815181106109d3576109d2613555565b5b60200260200101518583815181106109ee576109ed613555565b5b6020026020010151858481518110610a0957610a08613555565b5b6020026020010151858581518110610a2457610a23613555565b5b6020026020010151611724565b8080610a3c90613584565b915050610909565b5050505050565b610a78604051602001610a5d9061349e565b60405160208183030381529060405280519060200120610c84565b610a8282826117ac565b5050565b610ab3604051602001610a9890613618565b60405160208183030381529060405280519060200120610c84565b610abd828261181c565b5050565b6000806000806000610ad1611982565b600c0160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000610b52611982565b600c0160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008881526020019081526020016000206001015490506000610bb3611982565b600c0160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008981526020019081526020016000206002015490506000610c14611982565b600c0160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a81526020019081526020016000206003015490508383838397509750975097505050505092959194509250565b610c8d816119af565b50565b6001610c9a611982565b60090160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000610cfe611982565b60040160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900461ffff169050919050565b60008111610d8e576040517f7c946ed700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b80610d9a611982565b6007018190555050565b80610dad611982565b600e0160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610e63576040517f96d8043300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80610e6c611982565b600e0160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ef891906134ed565b9250508190555080610f08611982565b600f0160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610f5791906134ed565b925050819055508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610f99929190613638565b6020604051808303816000875af1158015610fb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fdc919061368d565b505050565b610fea8161147c565b611020576040517f334ae3e600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b8173ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401611060939291906136ba565b6020604051808303816000875af115801561107f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a3919061368d565b50806110ad611982565b600e0160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546111399190613521565b9250508190555080611149611982565b600f0160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546111989190613521565b925050819055505050565b806111ac611982565b6008018190555050565b60008083905060006111e7848373ffffffffffffffffffffffffffffffffffffffff166119bc90919063ffffffff16565b90506000611214308473ffffffffffffffffffffffffffffffffffffffff16611a5090919063ffffffff16565b905061121e611982565b60080154858261122e91906136f1565b6bffffffffffffffffffffffff166112469190613755565b826112519190613521565b935050505092915050565b80611265611982565b6006018190555050565b6000611279611982565b60060154905090565b6000806000806112a585611294611982565b600001611ae490919063ffffffff16565b9050806000015181602001518260400151935093509350509193909250565b6112cc611982565b60050160009054906101000a900460ff16156112e6611982565b60050160006101000a81548160ff021916908315150217905550565b600061130c611462565b905060005b8181101561137e57600061134b6001611328611462565b61133291906134ed565b61133a611982565b600001611bb090919063ffffffff16565b905061136a81611359611982565b600001611bdb90919063ffffffff16565b50808061137690613584565b915050611311565b5050565b600061138c611982565b60080154905090565b600061139f611982565b600b0160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6113ef611982565b60090160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff021916905550565b600061144c611982565b60050160009054906101000a900460ff16905090565b600061147761146f611982565b600001611d74565b905090565b6000611486611982565b60090160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6114e782826001611d85565b6114ef611982565b600d0160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461153e9190613521565b925050819055505050565b6000611553611982565b600f0160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006115a5611982565b600e0160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000808373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016116679190613797565b602060405180830381865afa158015611684573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a891906137c7565b90506116b484846111b6565b811191505092915050565b60006116c9611982565b600d0160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600061171b611982565b60070154905090565b61172d84611e8b565b826bffffffffffffffffffffffff16826bffffffffffffffffffffffff161015611783576040517f2245023300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117a681858585611792611982565b600001611ee490949392919063ffffffff16565b50505050565b6117b582611e8b565b816117be611982565b60040160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548161ffff021916908361ffff1602179055505050565b80611825611982565b600d0160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561189e576040517ff00d49ea00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806118a7611982565b600d0160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118f691906134ed565b925050819055508173ffffffffffffffffffffffffffffffffffffffff166323b872dd3033846040518463ffffffff1660e01b815260040161193a939291906136ba565b6020604051808303816000875af1158015611959573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061197d919061368d565b505050565b6000807f2f7ed27098ecefe70183ee38ae4542dee65215b0786f6870871034402cfe2cc990508091505090565b6119b98133612115565b50565b6000806119c8846121b2565b9150508073ffffffffffffffffffffffffffffffffffffffff16638d997f6e85856040518363ffffffff1660e01b8152600401611a06929190613862565b602060405180830381865afa158015611a23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4791906137c7565b91505092915050565b600080611a5c846121b2565b9150508073ffffffffffffffffffffffffffffffffffffffff1663e8e7e2d185856040518363ffffffff1660e01b8152600401611a9a92919061388b565b602060405180830381865afa158015611ab7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611adb91906138c9565b91505092915050565b611aec612c2d565b8260010160008381526020019081526020016000206040518060600160405290816000820160009054906101000a900461ffff1661ffff1661ffff1681526020016000820160029054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160008201600e9054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681525050905092915050565b6000826000018281548110611bc857611bc7613555565b5b9060005260206000200154905092915050565b81600301600082815260200190815260200160002060009054906101000a900460ff1615611d705781600301600082815260200190815260200160002060006101000a81549060ff0219169055816001016000828152602001908152602001600020600080820160006101000a81549061ffff02191690556000820160026101000a8154906bffffffffffffffffffffffff021916905560008201600e6101000a8154906bffffffffffffffffffffffff021916905550506000826002016000838152602001908152602001600020549050600060018460000180549050611cc391906134ed565b90506000846000018281548110611cdd57611cdc613555565b5b9060005260206000200154905082856002016000838152602001908152602001600020819055508460020160008581526020019081526020016000206000905580856000018481548110611d3457611d33613555565b5b906000526020600020018190555084600001805480611d5657611d556138f6565b5b600190038181906000526020600020016000905590555050505b5050565b600081600001805490509050919050565b600080611d90611982565b9050600081600a0160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600080600090505b87811015611e7d57611dfd878285611df89190613521565b6123f3565b82611e089190613521565b91508515611e6a57600184600a0160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611e629190613521565b925050819055505b8080611e7590613584565b915050611de0565b508093505050509392505050565b606460ff168161ffff161080611eaa575061271061ffff168161ffff16115b15611ee1576040517f800c7e9100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b84600301600085815260200190815260200160002060009054906101000a900460ff1615611fd2578285600101600086815260200190815260200160002060000160006101000a81548161ffff021916908361ffff1602179055508185600101600086815260200190815260200160002060000160026101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555080856001016000868152602001908152602001600020600001600e6101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555061210e565b600185600301600086815260200190815260200160002060006101000a81548160ff0219169083151502179055508285600101600086815260200190815260200160002060000160006101000a81548161ffff021916908361ffff1602179055508185600101600086815260200190815260200160002060000160026101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555080856001016000868152602001908152602001600020600001600e6101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550846000018054905085600201600086815260200190815260200160002081905550846000018490806001815401808255809150506001900390600052602060002001600090919091909150555b5050505050565b61211f828261257a565b6121ae576121448173ffffffffffffffffffffffffffffffffffffffff1660146125ee565b6121528360001c60206125ee565b604051602001612163929190613a2e565b6040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a59190613aa1565b60405180910390fd5b5050565b6000807f65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea8375491507fb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a549050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361237457600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122d7578273ffffffffffffffffffffffffffffffffffffffff166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d49190613ad8565b91505b8173ffffffffffffffffffffffffffffffffffffffff1663b6d200de7fa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd36040518263ffffffff1660e01b81526004016123309190613b57565b602060405180830381865afa15801561234d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123719190613bb0565b90505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036123b1576123b0613bdd565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036123ee576123ed613bdd565b5b915091565b6000806123fe611982565b9050600081600c0160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000858152602001908152602001600020600201549050600082600c0160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600086815260200190815260200160002060030154905060008060006124c3898961282a565b93505092509250600083836124d89190613c0c565b6bffffffffffffffffffffffff169050600085146125155785856124fc91906134ed565b816125079190613755565b975050505050505050612574565b6000821461254257858261252991906134ed565b816125349190613755565b975050505050505050612574565b6040517fae1c061f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b92915050565b600061258461292f565b600001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6060600060028360026126019190613755565b61260b9190613521565b67ffffffffffffffff81111561262457612623613009565b5b6040519080825280601f01601f1916602001820160405280156126565781602001600182028036833780820191505090505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061268e5761268d613555565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106126f2576126f1613555565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026127329190613755565b61273c9190613521565b90505b60018111156127dc577f3031323334353637383961626364656600000000000000000000000000000000600f86166010811061277e5761277d613555565b5b1a60f81b82828151811061279557612794613555565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c9450806127d590613c4c565b905061273f565b5060008414612820576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281790613cc1565b60405180910390fd5b8091505092915050565b600080600080600061283a611982565b9050600081600c0160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600082600c0160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600089815260200190815260200160002060010154905061291b828a8361295c565b965096509650965050505092959194509250565b6000807f4cd15452b25e815d3f9d1a3c7edd985a178edf5eb3461a1acbf855517423d69490508091505090565b60008060008061296a612c00565b60010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600086815260200190815260200160002060000160009054906101000a9004600b0b612a11612c00565b60010160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878152602001908152602001600020600001600c9054906101000a90046bffffffffffffffffffffffff16612ac3612c00565b60010160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088815260200190815260200160002060010154612b5d612c00565b60010160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600089815260200190815260200160002060020154935093509350935093509350935093565b6000807f9cd9afe22fea86221d6e8117226b65bb0e2af8c4f5b8abf255fb0afcad4a3a9c90508091505090565b6040518060600160405280600061ffff16815260200160006bffffffffffffffffffffffff16815260200160006bffffffffffffffffffffffff1681525090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612cad82612c82565b9050919050565b612cbd81612ca2565b8114612cc857600080fd5b50565b600081359050612cda81612cb4565b92915050565b6000819050919050565b612cf381612ce0565b8114612cfe57600080fd5b50565b600081359050612d1081612cea565b92915050565b60008060408385031215612d2d57612d2c612c78565b5b6000612d3b85828601612ccb565b9250506020612d4c85828601612d01565b9150509250929050565b612d5f81612ca2565b82525050565b612d6e81612ce0565b82525050565b6000608082019050612d896000830187612d56565b612d966020830186612d65565b612da36040830185612d65565b612db06060830184612d65565b95945050505050565b600060208284031215612dcf57612dce612c78565b5b6000612ddd84828501612ccb565b91505092915050565b600061ffff82169050919050565b612dfd81612de6565b82525050565b6000602082019050612e186000830184612df4565b92915050565b600060208284031215612e3457612e33612c78565b5b6000612e4284828501612d01565b91505092915050565b600081600b0b9050919050565b612e6181612e4b565b8114612e6c57600080fd5b50565b600081359050612e7e81612e58565b92915050565b60008060408385031215612e9b57612e9a612c78565b5b6000612ea985828601612ccb565b9250506020612eba85828601612e6f565b9150509250929050565b6000602082019050612ed96000830184612d65565b92915050565b60006bffffffffffffffffffffffff82169050919050565b612f0081612edf565b82525050565b6000606082019050612f1b6000830186612df4565b612f286020830185612ef7565b612f356040830184612ef7565b949350505050565b60008115159050919050565b612f5281612f3d565b82525050565b6000602082019050612f6d6000830184612f49565b92915050565b60008060408385031215612f8a57612f89612c78565b5b6000612f9885828601612d01565b9250506020612fa985828601612ccb565b9150509250929050565b60008060408385031215612fca57612fc9612c78565b5b6000612fd885828601612ccb565b9250506020612fe985828601612ccb565b9150509250929050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61304182612ff8565b810181811067ffffffffffffffff821117156130605761305f613009565b5b80604052505050565b6000613073612c6e565b905061307f8282613038565b919050565b600067ffffffffffffffff82111561309f5761309e613009565b5b602082029050602081019050919050565b600080fd5b6130be81612de6565b81146130c957600080fd5b50565b6000813590506130db816130b5565b92915050565b60006130f46130ef84613084565b613069565b90508083825260208201905060208402830185811115613117576131166130b0565b5b835b81811015613140578061312c88826130cc565b845260208401935050602081019050613119565b5050509392505050565b600082601f83011261315f5761315e612ff3565b5b813561316f8482602086016130e1565b91505092915050565b600067ffffffffffffffff82111561319357613192613009565b5b602082029050602081019050919050565b6131ad81612edf565b81146131b857600080fd5b50565b6000813590506131ca816131a4565b92915050565b60006131e36131de84613178565b613069565b90508083825260208201905060208402830185811115613206576132056130b0565b5b835b8181101561322f578061321b88826131bb565b845260208401935050602081019050613208565b5050509392505050565b600082601f83011261324e5761324d612ff3565b5b813561325e8482602086016131d0565b91505092915050565b600067ffffffffffffffff82111561328257613281613009565b5b602082029050602081019050919050565b60006132a66132a184613267565b613069565b905080838252602082019050602084028301858111156132c9576132c86130b0565b5b835b818110156132f257806132de8882612d01565b8452602084019350506020810190506132cb565b5050509392505050565b600082601f83011261331157613310612ff3565b5b8135613321848260208601613293565b91505092915050565b6000806000806080858703121561334457613343612c78565b5b600085013567ffffffffffffffff81111561336257613361612c7d565b5b61336e8782880161314a565b945050602085013567ffffffffffffffff81111561338f5761338e612c7d565b5b61339b87828801613239565b935050604085013567ffffffffffffffff8111156133bc576133bb612c7d565b5b6133c887828801613239565b925050606085013567ffffffffffffffff8111156133e9576133e8612c7d565b5b6133f5878288016132fc565b91505092959194509250565b6000806040838503121561341857613417612c78565b5b6000613426858286016130cc565b925050602061343785828601612ccb565b9150509250929050565b600082825260208201905092915050565b7f535452415445474953545f524f4c450000000000000000000000000000000000600082015250565b6000613488600f83613441565b915061349382613452565b602082019050919050565b600060208201905081810360008301526134b78161347b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006134f882612ce0565b915061350383612ce0565b925082820390508181111561351b5761351a6134be565b5b92915050565b600061352c82612ce0565b915061353783612ce0565b925082820190508082111561354f5761354e6134be565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061358f82612ce0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036135c1576135c06134be565b5b600182019050919050565b7f5452454153555245525f524f4c45000000000000000000000000000000000000600082015250565b6000613602600e83613441565b915061360d826135cc565b602082019050919050565b60006020820190508181036000830152613631816135f5565b9050919050565b600060408201905061364d6000830185612d56565b61365a6020830184612d65565b9392505050565b61366a81612f3d565b811461367557600080fd5b50565b60008151905061368781613661565b92915050565b6000602082840312156136a3576136a2612c78565b5b60006136b184828501613678565b91505092915050565b60006060820190506136cf6000830186612d56565b6136dc6020830185612d56565b6136e96040830184612d65565b949350505050565b60006136fc82612e4b565b915061370783612e4b565b925082820190507fffffffffffffffffffffffffffffffffffffffff80000000000000000000000081126b7fffffffffffffffffffffff8213171561374f5761374e6134be565b5b92915050565b600061376082612ce0565b915061376b83612ce0565b925082820261377981612ce0565b915082820484148315176137905761378f6134be565b5b5092915050565b60006020820190506137ac6000830184612d56565b92915050565b6000815190506137c181612cea565b92915050565b6000602082840312156137dd576137dc612c78565b5b60006137eb848285016137b2565b91505092915050565b6000819050919050565b600061381961381461380f84612c82565b6137f4565b612c82565b9050919050565b600061382b826137fe565b9050919050565b600061383d82613820565b9050919050565b61384d81613832565b82525050565b61385c81612e4b565b82525050565b60006040820190506138776000830185613844565b6138846020830184613853565b9392505050565b60006040820190506138a06000830185613844565b6138ad6020830184612d56565b9392505050565b6000815190506138c381612e58565b92915050565b6000602082840312156138df576138de612c78565b5b60006138ed848285016138b4565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000613966601783613925565b915061397182613930565b601782019050919050565b600081519050919050565b60005b838110156139a557808201518184015260208101905061398a565b60008484015250505050565b60006139bc8261397c565b6139c68185613925565b93506139d6818560208601613987565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000613a18601183613925565b9150613a23826139e2565b601182019050919050565b6000613a3982613959565b9150613a4582856139b1565b9150613a5082613a0b565b9150613a5c82846139b1565b91508190509392505050565b6000613a738261397c565b613a7d8185613441565b9350613a8d818560208601613987565b613a9681612ff8565b840191505092915050565b60006020820190508181036000830152613abb8184613a68565b905092915050565b600081519050613ad281612cb4565b92915050565b600060208284031215613aee57613aed612c78565b5b6000613afc84828501613ac3565b91505092915050565b6000819050919050565b6000819050919050565b60008160001b9050919050565b6000613b41613b3c613b3784613b05565b613b19565b613b0f565b9050919050565b613b5181613b26565b82525050565b6000602082019050613b6c6000830184613b48565b92915050565b6000613b7d82612ca2565b9050919050565b613b8d81613b72565b8114613b9857600080fd5b50565b600081519050613baa81613b84565b92915050565b600060208284031215613bc657613bc5612c78565b5b6000613bd484828501613b9b565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000613c1782612edf565b9150613c2283612edf565b925082820390506bffffffffffffffffffffffff811115613c4657613c456134be565b5b92915050565b6000613c5782612ce0565b915060008203613c6a57613c696134be565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b6000613cab602083613441565b9150613cb682613c75565b602082019050919050565b60006020820190508181036000830152613cda81613c9e565b905091905056fea2646970667358221220c4e7572168b3d5831e83e3433ea938199032c5ffc0e0ea577795da4ca37ccd8364736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1C4 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7F69BCAF GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0xBE835747 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xCA70E1D5 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xCA70E1D5 EQ PUSH2 0x51A JUMPI DUP1 PUSH4 0xCB857C80 EQ PUSH2 0x538 JUMPI DUP1 PUSH4 0xD99D3B69 EQ PUSH2 0x554 JUMPI DUP1 PUSH4 0xEBAAE661 EQ PUSH2 0x570 JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0xBE835747 EQ PUSH2 0x48A JUMPI DUP1 PUSH4 0xC467CDDC EQ PUSH2 0x4BA JUMPI DUP1 PUSH4 0xC78F6803 EQ PUSH2 0x4EA JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0xA8771AB9 GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0xA8771AB9 EQ PUSH2 0x3F0 JUMPI DUP1 PUSH4 0xACFF4744 EQ PUSH2 0x40E JUMPI DUP1 PUSH4 0xADEFE35E EQ PUSH2 0x43E JUMPI DUP1 PUSH4 0xB2419083 EQ PUSH2 0x45A JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x7F69BCAF EQ PUSH2 0x386 JUMPI DUP1 PUSH4 0x83807889 EQ PUSH2 0x3B6 JUMPI DUP1 PUSH4 0xA86C8C7C EQ PUSH2 0x3D2 JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x4EE43E46 GT PUSH2 0x166 JUMPI DUP1 PUSH4 0x6AB1C734 GT PUSH2 0x140 JUMPI DUP1 PUSH4 0x6AB1C734 EQ PUSH2 0x322 JUMPI DUP1 PUSH4 0x703AB1B7 EQ PUSH2 0x354 JUMPI DUP1 PUSH4 0x795E3425 EQ PUSH2 0x35E JUMPI DUP1 PUSH4 0x7EA195AD EQ PUSH2 0x368 JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x4EE43E46 EQ PUSH2 0x2B8 JUMPI DUP1 PUSH4 0x578DC59A EQ PUSH2 0x2E8 JUMPI DUP1 PUSH4 0x6812A173 EQ PUSH2 0x304 JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x245B6C93 GT PUSH2 0x1A2 JUMPI DUP1 PUSH4 0x245B6C93 EQ PUSH2 0x248 JUMPI DUP1 PUSH4 0x38E4F064 EQ PUSH2 0x264 JUMPI DUP1 PUSH4 0x46A5D043 EQ PUSH2 0x280 JUMPI DUP1 PUSH4 0x487EB939 EQ PUSH2 0x29C JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0xB72660D EQ PUSH2 0x1C9 JUMPI DUP1 PUSH4 0x22C3A21F EQ PUSH2 0x1FC JUMPI DUP1 PUSH4 0x2357F2CF EQ PUSH2 0x218 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1E3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1DE SWAP2 SWAP1 PUSH2 0x2D16 JUMP JUMPDEST PUSH2 0x58C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1F3 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2D74 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x216 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x211 SWAP2 SWAP1 PUSH2 0x2DB9 JUMP JUMPDEST PUSH2 0x5AD JUMP JUMPDEST STOP JUMPDEST PUSH2 0x232 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x22D SWAP2 SWAP1 PUSH2 0x2DB9 JUMP JUMPDEST PUSH2 0x5E6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x23F SWAP2 SWAP1 PUSH2 0x2E03 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x262 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x25D SWAP2 SWAP1 PUSH2 0x2E1E JUMP JUMPDEST PUSH2 0x5F8 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x27E PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x279 SWAP2 SWAP1 PUSH2 0x2D16 JUMP JUMPDEST PUSH2 0x63A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x29A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x295 SWAP2 SWAP1 PUSH2 0x2D16 JUMP JUMPDEST PUSH2 0x648 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2B1 SWAP2 SWAP1 PUSH2 0x2E1E JUMP JUMPDEST PUSH2 0x65F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2D2 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2CD SWAP2 SWAP1 PUSH2 0x2E84 JUMP JUMPDEST PUSH2 0x6A1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2DF SWAP2 SWAP1 PUSH2 0x2EC4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x302 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2FD SWAP2 SWAP1 PUSH2 0x2E1E JUMP JUMPDEST PUSH2 0x6B5 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x30C PUSH2 0x6F7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x319 SWAP2 SWAP1 PUSH2 0x2EC4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x33C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x337 SWAP2 SWAP1 PUSH2 0x2E1E JUMP JUMPDEST PUSH2 0x706 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x34B SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2F06 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x35C PUSH2 0x721 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x366 PUSH2 0x758 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x370 PUSH2 0x78F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x37D SWAP2 SWAP1 PUSH2 0x2EC4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x39B SWAP2 SWAP1 PUSH2 0x2DB9 JUMP JUMPDEST PUSH2 0x79E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3AD SWAP2 SWAP1 PUSH2 0x2EC4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3D0 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3CB SWAP2 SWAP1 PUSH2 0x2DB9 JUMP JUMPDEST PUSH2 0x7B0 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3DA PUSH2 0x7E9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3E7 SWAP2 SWAP1 PUSH2 0x2F58 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3F8 PUSH2 0x7F8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x405 SWAP2 SWAP1 PUSH2 0x2EC4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x428 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x423 SWAP2 SWAP1 PUSH2 0x2DB9 JUMP JUMPDEST PUSH2 0x807 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x435 SWAP2 SWAP1 PUSH2 0x2F58 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x458 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x453 SWAP2 SWAP1 PUSH2 0x2F73 JUMP JUMPDEST PUSH2 0x819 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x474 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x46F SWAP2 SWAP1 PUSH2 0x2DB9 JUMP JUMPDEST PUSH2 0x827 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x481 SWAP2 SWAP1 PUSH2 0x2EC4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x4A4 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x49F SWAP2 SWAP1 PUSH2 0x2FB3 JUMP JUMPDEST PUSH2 0x839 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4B1 SWAP2 SWAP1 PUSH2 0x2EC4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x4D4 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x4CF SWAP2 SWAP1 PUSH2 0x2E84 JUMP JUMPDEST PUSH2 0x84D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4E1 SWAP2 SWAP1 PUSH2 0x2F58 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x504 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x4FF SWAP2 SWAP1 PUSH2 0x2DB9 JUMP JUMPDEST PUSH2 0x861 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x511 SWAP2 SWAP1 PUSH2 0x2EC4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x522 PUSH2 0x873 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x52F SWAP2 SWAP1 PUSH2 0x2EC4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x552 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x54D SWAP2 SWAP1 PUSH2 0x332A JUMP JUMPDEST PUSH2 0x882 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x56E PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x569 SWAP2 SWAP1 PUSH2 0x3401 JUMP JUMPDEST PUSH2 0xA4B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x58A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x585 SWAP2 SWAP1 PUSH2 0x2D16 JUMP JUMPDEST PUSH2 0xA86 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x59C DUP7 DUP7 PUSH2 0xAC1 JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH2 0x5DA PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x5BF SWAP1 PUSH2 0x349E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0xC84 JUMP JUMPDEST PUSH2 0x5E3 DUP2 PUSH2 0xC90 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5F1 DUP3 PUSH2 0xCF4 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x625 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x60A SWAP1 PUSH2 0x349E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0xC84 JUMP JUMPDEST PUSH2 0x62E DUP2 PUSH2 0xD54 JUMP JUMPDEST PUSH2 0x637 DUP2 PUSH2 0xD91 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x644 DUP3 DUP3 PUSH2 0xDA4 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x651 DUP3 PUSH2 0xFE1 JUMP JUMPDEST PUSH2 0x65B DUP3 DUP3 PUSH2 0x1023 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x68C PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x671 SWAP1 PUSH2 0x349E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0xC84 JUMP JUMPDEST PUSH2 0x695 DUP2 PUSH2 0xD54 JUMP JUMPDEST PUSH2 0x69E DUP2 PUSH2 0x11A3 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6AD DUP4 DUP4 PUSH2 0x11B6 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x6E2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x6C7 SWAP1 PUSH2 0x349E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0xC84 JUMP JUMPDEST PUSH2 0x6EB DUP2 PUSH2 0xD54 JUMP JUMPDEST PUSH2 0x6F4 DUP2 PUSH2 0x125C JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x701 PUSH2 0x126F JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x714 DUP5 PUSH2 0x1282 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH2 0x74E PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x733 SWAP1 PUSH2 0x349E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0xC84 JUMP JUMPDEST PUSH2 0x756 PUSH2 0x12C4 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x785 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x76A SWAP1 PUSH2 0x349E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0xC84 JUMP JUMPDEST PUSH2 0x78D PUSH2 0x1302 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH2 0x799 PUSH2 0x1382 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7A9 DUP3 PUSH2 0x1395 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x7DD PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x7C2 SWAP1 PUSH2 0x349E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0xC84 JUMP JUMPDEST PUSH2 0x7E6 DUP2 PUSH2 0x13E7 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7F3 PUSH2 0x1442 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x802 PUSH2 0x1462 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x812 DUP3 PUSH2 0x147C JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x823 DUP3 DUP3 PUSH2 0x14DB JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x832 DUP3 PUSH2 0x1549 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x845 DUP4 DUP4 PUSH2 0x159B JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x859 DUP4 DUP4 PUSH2 0x162B JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x86C DUP3 PUSH2 0x16BF JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x87D PUSH2 0x1711 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x8AF PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x894 SWAP1 PUSH2 0x349E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0xC84 JUMP JUMPDEST DUP3 MLOAD DUP5 MLOAD EQ ISZERO DUP1 PUSH2 0x8C2 JUMPI POP DUP2 MLOAD DUP5 MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x8CF JUMPI POP DUP1 MLOAD DUP5 MLOAD EQ ISZERO JUMPDEST ISZERO PUSH2 0x906 JUMPI PUSH1 0x40 MLOAD PUSH32 0xED882F7100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0xA44 JUMPI PUSH1 0x1 DUP6 MLOAD PUSH2 0x920 SWAP2 SWAP1 PUSH2 0x34ED JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0x9BD JUMPI DUP4 PUSH1 0x1 DUP3 PUSH2 0x935 SWAP2 SWAP1 PUSH2 0x3521 JUMP JUMPDEST DUP2 MLOAD DUP2 LT PUSH2 0x946 JUMPI PUSH2 0x945 PUSH2 0x3555 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x96F JUMPI PUSH2 0x96E PUSH2 0x3555 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x9BC JUMPI PUSH1 0x40 MLOAD PUSH32 0x2245023300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMPDEST PUSH2 0xA31 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x9D3 JUMPI PUSH2 0x9D2 PUSH2 0x3555 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x9EE JUMPI PUSH2 0x9ED PUSH2 0x3555 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xA09 JUMPI PUSH2 0xA08 PUSH2 0x3555 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0xA24 JUMPI PUSH2 0xA23 PUSH2 0x3555 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x1724 JUMP JUMPDEST DUP1 DUP1 PUSH2 0xA3C SWAP1 PUSH2 0x3584 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x909 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0xA78 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xA5D SWAP1 PUSH2 0x349E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0xC84 JUMP JUMPDEST PUSH2 0xA82 DUP3 DUP3 PUSH2 0x17AC JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0xAB3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xA98 SWAP1 PUSH2 0x3618 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0xC84 JUMP JUMPDEST PUSH2 0xABD DUP3 DUP3 PUSH2 0x181C JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xAD1 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xC ADD PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH2 0xB52 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xC ADD PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 POP PUSH1 0x0 PUSH2 0xBB3 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xC ADD PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP1 POP PUSH1 0x0 PUSH2 0xC14 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xC ADD PUSH1 0x0 DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP11 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD SLOAD SWAP1 POP DUP4 DUP4 DUP4 DUP4 SWAP8 POP SWAP8 POP SWAP8 POP SWAP8 POP POP POP POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH2 0xC8D DUP2 PUSH2 0x19AF JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH2 0xC9A PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x9 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCFE PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x4 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH2 0xFFFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0xD8E JUMPI PUSH1 0x40 MLOAD PUSH32 0x7C946ED700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 PUSH2 0xD9A PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x7 ADD DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST DUP1 PUSH2 0xDAD PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xE ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD LT ISZERO PUSH2 0xE63 JUMPI PUSH1 0x40 MLOAD PUSH32 0x96D8043300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0xE6C PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xE ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xEF8 SWAP2 SWAP1 PUSH2 0x34ED JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 PUSH2 0xF08 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xF ADD PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xF57 SWAP2 SWAP1 PUSH2 0x34ED JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB CALLER DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF99 SWAP3 SWAP2 SWAP1 PUSH2 0x3638 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFB8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xFDC SWAP2 SWAP1 PUSH2 0x368D JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0xFEA DUP2 PUSH2 0x147C JUMP JUMPDEST PUSH2 0x1020 JUMPI PUSH1 0x40 MLOAD PUSH32 0x334AE3E600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x23B872DD CALLER ADDRESS DUP5 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1060 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x36BA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x107F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x10A3 SWAP2 SWAP1 PUSH2 0x368D JUMP JUMPDEST POP DUP1 PUSH2 0x10AD PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xE ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1139 SWAP2 SWAP1 PUSH2 0x3521 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 PUSH2 0x1149 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xF ADD PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1198 SWAP2 SWAP1 PUSH2 0x3521 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP JUMP JUMPDEST DUP1 PUSH2 0x11AC PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x8 ADD DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 SWAP1 POP PUSH1 0x0 PUSH2 0x11E7 DUP5 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x19BC SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1214 ADDRESS DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1A50 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x121E PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x8 ADD SLOAD DUP6 DUP3 PUSH2 0x122E SWAP2 SWAP1 PUSH2 0x36F1 JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1246 SWAP2 SWAP1 PUSH2 0x3755 JUMP JUMPDEST DUP3 PUSH2 0x1251 SWAP2 SWAP1 PUSH2 0x3521 JUMP JUMPDEST SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 PUSH2 0x1265 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x6 ADD DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1279 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x6 ADD SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x12A5 DUP6 PUSH2 0x1294 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x0 ADD PUSH2 0x1AE4 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x0 ADD MLOAD DUP2 PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x40 ADD MLOAD SWAP4 POP SWAP4 POP SWAP4 POP POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH2 0x12CC PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x5 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x12E6 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x5 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x130C PUSH2 0x1462 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x137E JUMPI PUSH1 0x0 PUSH2 0x134B PUSH1 0x1 PUSH2 0x1328 PUSH2 0x1462 JUMP JUMPDEST PUSH2 0x1332 SWAP2 SWAP1 PUSH2 0x34ED JUMP JUMPDEST PUSH2 0x133A PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x0 ADD PUSH2 0x1BB0 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x136A DUP2 PUSH2 0x1359 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x0 ADD PUSH2 0x1BDB SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP DUP1 DUP1 PUSH2 0x1376 SWAP1 PUSH2 0x3584 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1311 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x138C PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x8 ADD SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x139F PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xB ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x13EF PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x9 ADD PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH1 0xFF MUL NOT AND SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x144C PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x5 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1477 PUSH2 0x146F PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x0 ADD PUSH2 0x1D74 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1486 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x9 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x14E7 DUP3 DUP3 PUSH1 0x1 PUSH2 0x1D85 JUMP JUMPDEST PUSH2 0x14EF PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xD ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x153E SWAP2 SWAP1 PUSH2 0x3521 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1553 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xF ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15A5 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xE ADD PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1667 SWAP2 SWAP1 PUSH2 0x3797 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1684 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x16A8 SWAP2 SWAP1 PUSH2 0x37C7 JUMP JUMPDEST SWAP1 POP PUSH2 0x16B4 DUP5 DUP5 PUSH2 0x11B6 JUMP JUMPDEST DUP2 GT SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16C9 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xD ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x171B PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x7 ADD SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x172D DUP5 PUSH2 0x1E8B JUMP JUMPDEST DUP3 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND LT ISZERO PUSH2 0x1783 JUMPI PUSH1 0x40 MLOAD PUSH32 0x2245023300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x17A6 DUP2 DUP6 DUP6 DUP6 PUSH2 0x1792 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x0 ADD PUSH2 0x1EE4 SWAP1 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x17B5 DUP3 PUSH2 0x1E8B JUMP JUMPDEST DUP2 PUSH2 0x17BE PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x4 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH2 0xFFFF MUL NOT AND SWAP1 DUP4 PUSH2 0xFFFF AND MUL OR SWAP1 SSTORE POP POP POP JUMP JUMPDEST DUP1 PUSH2 0x1825 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xD ADD PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD LT ISZERO PUSH2 0x189E JUMPI PUSH1 0x40 MLOAD PUSH32 0xF00D49EA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x18A7 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xD ADD PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x18F6 SWAP2 SWAP1 PUSH2 0x34ED JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x23B872DD ADDRESS CALLER DUP5 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x193A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x36BA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1959 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x197D SWAP2 SWAP1 PUSH2 0x368D JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x2F7ED27098ECEFE70183EE38AE4542DEE65215B0786F6870871034402CFE2CC9 SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH2 0x19B9 DUP2 CALLER PUSH2 0x2115 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x19C8 DUP5 PUSH2 0x21B2 JUMP JUMPDEST SWAP2 POP POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x8D997F6E DUP6 DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1A06 SWAP3 SWAP2 SWAP1 PUSH2 0x3862 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1A23 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1A47 SWAP2 SWAP1 PUSH2 0x37C7 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1A5C DUP5 PUSH2 0x21B2 JUMP JUMPDEST SWAP2 POP POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xE8E7E2D1 DUP6 DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1A9A SWAP3 SWAP2 SWAP1 PUSH2 0x388B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1AB7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1ADB SWAP2 SWAP1 PUSH2 0x38C9 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1AEC PUSH2 0x2C2D JUMP JUMPDEST DUP3 PUSH1 0x1 ADD PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH2 0xFFFF AND PUSH2 0xFFFF AND PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP3 ADD PUSH1 0x2 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP3 ADD PUSH1 0xE SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1BC8 JUMPI PUSH2 0x1BC7 PUSH2 0x3555 JUMP JUMPDEST JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 PUSH1 0x3 ADD PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x1D70 JUMPI DUP2 PUSH1 0x3 ADD PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH1 0xFF MUL NOT AND SWAP1 SSTORE DUP2 PUSH1 0x1 ADD PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP1 DUP3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH2 0xFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x0 DUP3 ADD PUSH1 0x2 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x0 DUP3 ADD PUSH1 0xE PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE POP POP PUSH1 0x0 DUP3 PUSH1 0x2 ADD PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP5 PUSH1 0x0 ADD DUP1 SLOAD SWAP1 POP PUSH2 0x1CC3 SWAP2 SWAP1 PUSH2 0x34ED JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP5 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1CDD JUMPI PUSH2 0x1CDC PUSH2 0x3555 JUMP JUMPDEST JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP3 DUP6 PUSH1 0x2 ADD PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP5 PUSH1 0x2 ADD PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SSTORE DUP1 DUP6 PUSH1 0x0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x1D34 JUMPI PUSH2 0x1D33 PUSH2 0x3555 JUMP JUMPDEST JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP2 SWAP1 SSTORE POP DUP5 PUSH1 0x0 ADD DUP1 SLOAD DUP1 PUSH2 0x1D56 JUMPI PUSH2 0x1D55 PUSH2 0x38F6 JUMP JUMPDEST JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE SWAP1 SSTORE POP POP POP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 ADD DUP1 SLOAD SWAP1 POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1D90 PUSH2 0x1982 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0xA ADD PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 POP JUMPDEST DUP8 DUP2 LT ISZERO PUSH2 0x1E7D JUMPI PUSH2 0x1DFD DUP8 DUP3 DUP6 PUSH2 0x1DF8 SWAP2 SWAP1 PUSH2 0x3521 JUMP JUMPDEST PUSH2 0x23F3 JUMP JUMPDEST DUP3 PUSH2 0x1E08 SWAP2 SWAP1 PUSH2 0x3521 JUMP JUMPDEST SWAP2 POP DUP6 ISZERO PUSH2 0x1E6A JUMPI PUSH1 0x1 DUP5 PUSH1 0xA ADD PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1E62 SWAP2 SWAP1 PUSH2 0x3521 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP JUMPDEST DUP1 DUP1 PUSH2 0x1E75 SWAP1 PUSH2 0x3584 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1DE0 JUMP JUMPDEST POP DUP1 SWAP4 POP POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x64 PUSH1 0xFF AND DUP2 PUSH2 0xFFFF AND LT DUP1 PUSH2 0x1EAA JUMPI POP PUSH2 0x2710 PUSH2 0xFFFF AND DUP2 PUSH2 0xFFFF AND GT JUMPDEST ISZERO PUSH2 0x1EE1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x800C7E9100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP5 PUSH1 0x3 ADD PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x1FD2 JUMPI DUP3 DUP6 PUSH1 0x1 ADD PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH2 0xFFFF MUL NOT AND SWAP1 DUP4 PUSH2 0xFFFF AND MUL OR SWAP1 SSTORE POP DUP2 DUP6 PUSH1 0x1 ADD PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x2 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 DUP6 PUSH1 0x1 ADD PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0xE PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x210E JUMP JUMPDEST PUSH1 0x1 DUP6 PUSH1 0x3 ADD PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP3 DUP6 PUSH1 0x1 ADD PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH2 0xFFFF MUL NOT AND SWAP1 DUP4 PUSH2 0xFFFF AND MUL OR SWAP1 SSTORE POP DUP2 DUP6 PUSH1 0x1 ADD PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x2 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 DUP6 PUSH1 0x1 ADD PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0xE PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP5 PUSH1 0x0 ADD DUP1 SLOAD SWAP1 POP DUP6 PUSH1 0x2 ADD PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP5 PUSH1 0x0 ADD DUP5 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 POP SSTORE JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x211F DUP3 DUP3 PUSH2 0x257A JUMP JUMPDEST PUSH2 0x21AE JUMPI PUSH2 0x2144 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x14 PUSH2 0x25EE JUMP JUMPDEST PUSH2 0x2152 DUP4 PUSH1 0x0 SHR PUSH1 0x20 PUSH2 0x25EE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2163 SWAP3 SWAP2 SWAP1 PUSH2 0x3A2E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x21A5 SWAP2 SWAP1 PUSH2 0x3AA1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x65599BF746E17A00EA62E3610586992D88101B78EEC3CF380706621FB97EA837 SLOAD SWAP2 POP PUSH32 0xB969D79D88ACD02D04ED7EE7D43B949E7DAF093D363ABCFBBC43DFDFD1CE969A SLOAD SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x2374 JUMPI PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x22D7 JUMPI DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x20BC4425 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x22B0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x22D4 SWAP2 SWAP1 PUSH2 0x3AD8 JUMP JUMPDEST SWAP2 POP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xB6D200DE PUSH32 0xA9214CC96615E0085D3BB077758DB69497DC2DCE3B2B1E97BC93C3D18D83EFD3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2330 SWAP2 SWAP1 PUSH2 0x3B57 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x234D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2371 SWAP2 SWAP1 PUSH2 0x3BB0 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x23B1 JUMPI PUSH2 0x23B0 PUSH2 0x3BDD JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x23EE JUMPI PUSH2 0x23ED PUSH2 0x3BDD JUMP JUMPDEST JUMPDEST SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x23FE PUSH2 0x1982 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0xC ADD PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0xC ADD PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD SLOAD SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x24C3 DUP10 DUP10 PUSH2 0x282A JUMP JUMPDEST SWAP4 POP POP SWAP3 POP SWAP3 POP PUSH1 0x0 DUP4 DUP4 PUSH2 0x24D8 SWAP2 SWAP1 PUSH2 0x3C0C JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 DUP6 EQ PUSH2 0x2515 JUMPI DUP6 DUP6 PUSH2 0x24FC SWAP2 SWAP1 PUSH2 0x34ED JUMP JUMPDEST DUP2 PUSH2 0x2507 SWAP2 SWAP1 PUSH2 0x3755 JUMP JUMPDEST SWAP8 POP POP POP POP POP POP POP POP PUSH2 0x2574 JUMP JUMPDEST PUSH1 0x0 DUP3 EQ PUSH2 0x2542 JUMPI DUP6 DUP3 PUSH2 0x2529 SWAP2 SWAP1 PUSH2 0x34ED JUMP JUMPDEST DUP2 PUSH2 0x2534 SWAP2 SWAP1 PUSH2 0x3755 JUMP JUMPDEST SWAP8 POP POP POP POP POP POP POP POP PUSH2 0x2574 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xAE1C061F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2584 PUSH2 0x292F JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x2 DUP4 PUSH1 0x2 PUSH2 0x2601 SWAP2 SWAP1 PUSH2 0x3755 JUMP JUMPDEST PUSH2 0x260B SWAP2 SWAP1 PUSH2 0x3521 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2624 JUMPI PUSH2 0x2623 PUSH2 0x3009 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2656 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x268E JUMPI PUSH2 0x268D PUSH2 0x3555 JUMP JUMPDEST JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH32 0x7800000000000000000000000000000000000000000000000000000000000000 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x26F2 JUMPI PUSH2 0x26F1 PUSH2 0x3555 JUMP JUMPDEST JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x0 PUSH1 0x1 DUP5 PUSH1 0x2 PUSH2 0x2732 SWAP2 SWAP1 PUSH2 0x3755 JUMP JUMPDEST PUSH2 0x273C SWAP2 SWAP1 PUSH2 0x3521 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x27DC JUMPI PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 PUSH1 0xF DUP7 AND PUSH1 0x10 DUP2 LT PUSH2 0x277E JUMPI PUSH2 0x277D PUSH2 0x3555 JUMP JUMPDEST JUMPDEST BYTE PUSH1 0xF8 SHL DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2795 JUMPI PUSH2 0x2794 PUSH2 0x3555 JUMP JUMPDEST JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x4 DUP6 SWAP1 SHR SWAP5 POP DUP1 PUSH2 0x27D5 SWAP1 PUSH2 0x3C4C JUMP JUMPDEST SWAP1 POP PUSH2 0x273F JUMP JUMPDEST POP PUSH1 0x0 DUP5 EQ PUSH2 0x2820 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2817 SWAP1 PUSH2 0x3CC1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x283A PUSH2 0x1982 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0xC ADD PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0xC ADD PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 POP PUSH2 0x291B DUP3 DUP11 DUP4 PUSH2 0x295C JUMP JUMPDEST SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP POP POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x4CD15452B25E815D3F9D1A3C7EDD985A178EDF5EB3461A1ACBF855517423D694 SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x296A PUSH2 0x2C00 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xB SIGNEXTEND PUSH2 0x2A11 PUSH2 0x2C00 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0xC SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2AC3 PUSH2 0x2C00 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0x2B5D PUSH2 0x2C00 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x9CD9AFE22FEA86221D6E8117226B65BB0E2AF8C4F5B8ABF255FB0AFCAD4A3A9C SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2CAD DUP3 PUSH2 0x2C82 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2CBD DUP2 PUSH2 0x2CA2 JUMP JUMPDEST DUP2 EQ PUSH2 0x2CC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x2CDA DUP2 PUSH2 0x2CB4 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2CF3 DUP2 PUSH2 0x2CE0 JUMP JUMPDEST DUP2 EQ PUSH2 0x2CFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x2D10 DUP2 PUSH2 0x2CEA JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2D2D JUMPI PUSH2 0x2D2C PUSH2 0x2C78 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2D3B DUP6 DUP3 DUP7 ADD PUSH2 0x2CCB JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x2D4C DUP6 DUP3 DUP7 ADD PUSH2 0x2D01 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x2D5F DUP2 PUSH2 0x2CA2 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x2D6E DUP2 PUSH2 0x2CE0 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x2D89 PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x2D56 JUMP JUMPDEST PUSH2 0x2D96 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x2D65 JUMP JUMPDEST PUSH2 0x2DA3 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x2D65 JUMP JUMPDEST PUSH2 0x2DB0 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x2D65 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2DCF JUMPI PUSH2 0x2DCE PUSH2 0x2C78 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2DDD DUP5 DUP3 DUP6 ADD PUSH2 0x2CCB JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2DFD DUP2 PUSH2 0x2DE6 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2E18 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2DF4 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2E34 JUMPI PUSH2 0x2E33 PUSH2 0x2C78 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2E42 DUP5 DUP3 DUP6 ADD PUSH2 0x2D01 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0xB SIGNEXTEND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2E61 DUP2 PUSH2 0x2E4B JUMP JUMPDEST DUP2 EQ PUSH2 0x2E6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x2E7E DUP2 PUSH2 0x2E58 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2E9B JUMPI PUSH2 0x2E9A PUSH2 0x2C78 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2EA9 DUP6 DUP3 DUP7 ADD PUSH2 0x2CCB JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x2EBA DUP6 DUP3 DUP7 ADD PUSH2 0x2E6F JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2ED9 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2D65 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2F00 DUP2 PUSH2 0x2EDF JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x2F1B PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x2DF4 JUMP JUMPDEST PUSH2 0x2F28 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x2EF7 JUMP JUMPDEST PUSH2 0x2F35 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x2EF7 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2F52 DUP2 PUSH2 0x2F3D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2F6D PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2F49 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2F8A JUMPI PUSH2 0x2F89 PUSH2 0x2C78 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2F98 DUP6 DUP3 DUP7 ADD PUSH2 0x2D01 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x2FA9 DUP6 DUP3 DUP7 ADD PUSH2 0x2CCB JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2FCA JUMPI PUSH2 0x2FC9 PUSH2 0x2C78 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2FD8 DUP6 DUP3 DUP7 ADD PUSH2 0x2CCB JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x2FE9 DUP6 DUP3 DUP7 ADD PUSH2 0x2CCB JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x3041 DUP3 PUSH2 0x2FF8 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x3060 JUMPI PUSH2 0x305F PUSH2 0x3009 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3073 PUSH2 0x2C6E JUMP JUMPDEST SWAP1 POP PUSH2 0x307F DUP3 DUP3 PUSH2 0x3038 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x309F JUMPI PUSH2 0x309E PUSH2 0x3009 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x30BE DUP2 PUSH2 0x2DE6 JUMP JUMPDEST DUP2 EQ PUSH2 0x30C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x30DB DUP2 PUSH2 0x30B5 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x30F4 PUSH2 0x30EF DUP5 PUSH2 0x3084 JUMP JUMPDEST PUSH2 0x3069 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x3117 JUMPI PUSH2 0x3116 PUSH2 0x30B0 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3140 JUMPI DUP1 PUSH2 0x312C DUP9 DUP3 PUSH2 0x30CC JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x3119 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x315F JUMPI PUSH2 0x315E PUSH2 0x2FF3 JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x316F DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x30E1 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x3193 JUMPI PUSH2 0x3192 PUSH2 0x3009 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x31AD DUP2 PUSH2 0x2EDF JUMP JUMPDEST DUP2 EQ PUSH2 0x31B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x31CA DUP2 PUSH2 0x31A4 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x31E3 PUSH2 0x31DE DUP5 PUSH2 0x3178 JUMP JUMPDEST PUSH2 0x3069 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x3206 JUMPI PUSH2 0x3205 PUSH2 0x30B0 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x322F JUMPI DUP1 PUSH2 0x321B DUP9 DUP3 PUSH2 0x31BB JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x3208 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x324E JUMPI PUSH2 0x324D PUSH2 0x2FF3 JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x325E DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x31D0 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x3282 JUMPI PUSH2 0x3281 PUSH2 0x3009 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x32A6 PUSH2 0x32A1 DUP5 PUSH2 0x3267 JUMP JUMPDEST PUSH2 0x3069 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x32C9 JUMPI PUSH2 0x32C8 PUSH2 0x30B0 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x32F2 JUMPI DUP1 PUSH2 0x32DE DUP9 DUP3 PUSH2 0x2D01 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x32CB JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3311 JUMPI PUSH2 0x3310 PUSH2 0x2FF3 JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3321 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x3293 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3344 JUMPI PUSH2 0x3343 PUSH2 0x2C78 JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3362 JUMPI PUSH2 0x3361 PUSH2 0x2C7D JUMP JUMPDEST JUMPDEST PUSH2 0x336E DUP8 DUP3 DUP9 ADD PUSH2 0x314A JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x338F JUMPI PUSH2 0x338E PUSH2 0x2C7D JUMP JUMPDEST JUMPDEST PUSH2 0x339B DUP8 DUP3 DUP9 ADD PUSH2 0x3239 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x33BC JUMPI PUSH2 0x33BB PUSH2 0x2C7D JUMP JUMPDEST JUMPDEST PUSH2 0x33C8 DUP8 DUP3 DUP9 ADD PUSH2 0x3239 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x33E9 JUMPI PUSH2 0x33E8 PUSH2 0x2C7D JUMP JUMPDEST JUMPDEST PUSH2 0x33F5 DUP8 DUP3 DUP9 ADD PUSH2 0x32FC JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3418 JUMPI PUSH2 0x3417 PUSH2 0x2C78 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x3426 DUP6 DUP3 DUP7 ADD PUSH2 0x30CC JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x3437 DUP6 DUP3 DUP7 ADD PUSH2 0x2CCB JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x535452415445474953545F524F4C450000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3488 PUSH1 0xF DUP4 PUSH2 0x3441 JUMP JUMPDEST SWAP2 POP PUSH2 0x3493 DUP3 PUSH2 0x3452 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x34B7 DUP2 PUSH2 0x347B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x34F8 DUP3 PUSH2 0x2CE0 JUMP JUMPDEST SWAP2 POP PUSH2 0x3503 DUP4 PUSH2 0x2CE0 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP DUP2 DUP2 GT ISZERO PUSH2 0x351B JUMPI PUSH2 0x351A PUSH2 0x34BE JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x352C DUP3 PUSH2 0x2CE0 JUMP JUMPDEST SWAP2 POP PUSH2 0x3537 DUP4 PUSH2 0x2CE0 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x354F JUMPI PUSH2 0x354E PUSH2 0x34BE JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x358F DUP3 PUSH2 0x2CE0 JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x35C1 JUMPI PUSH2 0x35C0 PUSH2 0x34BE JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x5452454153555245525F524F4C45000000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3602 PUSH1 0xE DUP4 PUSH2 0x3441 JUMP JUMPDEST SWAP2 POP PUSH2 0x360D DUP3 PUSH2 0x35CC JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3631 DUP2 PUSH2 0x35F5 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x364D PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x2D56 JUMP JUMPDEST PUSH2 0x365A PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2D65 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x366A DUP2 PUSH2 0x2F3D JUMP JUMPDEST DUP2 EQ PUSH2 0x3675 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x3687 DUP2 PUSH2 0x3661 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x36A3 JUMPI PUSH2 0x36A2 PUSH2 0x2C78 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x36B1 DUP5 DUP3 DUP6 ADD PUSH2 0x3678 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x36CF PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x2D56 JUMP JUMPDEST PUSH2 0x36DC PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x2D56 JUMP JUMPDEST PUSH2 0x36E9 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x2D65 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x36FC DUP3 PUSH2 0x2E4B JUMP JUMPDEST SWAP2 POP PUSH2 0x3707 DUP4 PUSH2 0x2E4B JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800000000000000000000000 DUP2 SLT PUSH12 0x7FFFFFFFFFFFFFFFFFFFFFFF DUP3 SGT OR ISZERO PUSH2 0x374F JUMPI PUSH2 0x374E PUSH2 0x34BE JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3760 DUP3 PUSH2 0x2CE0 JUMP JUMPDEST SWAP2 POP PUSH2 0x376B DUP4 PUSH2 0x2CE0 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 MUL PUSH2 0x3779 DUP2 PUSH2 0x2CE0 JUMP JUMPDEST SWAP2 POP DUP3 DUP3 DIV DUP5 EQ DUP4 ISZERO OR PUSH2 0x3790 JUMPI PUSH2 0x378F PUSH2 0x34BE JUMP JUMPDEST JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x37AC PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2D56 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x37C1 DUP2 PUSH2 0x2CEA JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x37DD JUMPI PUSH2 0x37DC PUSH2 0x2C78 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x37EB DUP5 DUP3 DUP6 ADD PUSH2 0x37B2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3819 PUSH2 0x3814 PUSH2 0x380F DUP5 PUSH2 0x2C82 JUMP JUMPDEST PUSH2 0x37F4 JUMP JUMPDEST PUSH2 0x2C82 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x382B DUP3 PUSH2 0x37FE JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x383D DUP3 PUSH2 0x3820 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x384D DUP2 PUSH2 0x3832 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x385C DUP2 PUSH2 0x2E4B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x3877 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x3844 JUMP JUMPDEST PUSH2 0x3884 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3853 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x38A0 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x3844 JUMP JUMPDEST PUSH2 0x38AD PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2D56 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x38C3 DUP2 PUSH2 0x2E58 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x38DF JUMPI PUSH2 0x38DE PUSH2 0x2C78 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x38ED DUP5 DUP3 DUP6 ADD PUSH2 0x38B4 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x416363657373436F6E74726F6C3A206163636F756E7420000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3966 PUSH1 0x17 DUP4 PUSH2 0x3925 JUMP JUMPDEST SWAP2 POP PUSH2 0x3971 DUP3 PUSH2 0x3930 JUMP JUMPDEST PUSH1 0x17 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x39A5 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x398A JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x39BC DUP3 PUSH2 0x397C JUMP JUMPDEST PUSH2 0x39C6 DUP2 DUP6 PUSH2 0x3925 JUMP JUMPDEST SWAP4 POP PUSH2 0x39D6 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x3987 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x206973206D697373696E6720726F6C6520000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A18 PUSH1 0x11 DUP4 PUSH2 0x3925 JUMP JUMPDEST SWAP2 POP PUSH2 0x3A23 DUP3 PUSH2 0x39E2 JUMP JUMPDEST PUSH1 0x11 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A39 DUP3 PUSH2 0x3959 JUMP JUMPDEST SWAP2 POP PUSH2 0x3A45 DUP3 DUP6 PUSH2 0x39B1 JUMP JUMPDEST SWAP2 POP PUSH2 0x3A50 DUP3 PUSH2 0x3A0B JUMP JUMPDEST SWAP2 POP PUSH2 0x3A5C DUP3 DUP5 PUSH2 0x39B1 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A73 DUP3 PUSH2 0x397C JUMP JUMPDEST PUSH2 0x3A7D DUP2 DUP6 PUSH2 0x3441 JUMP JUMPDEST SWAP4 POP PUSH2 0x3A8D DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x3987 JUMP JUMPDEST PUSH2 0x3A96 DUP2 PUSH2 0x2FF8 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3ABB DUP2 DUP5 PUSH2 0x3A68 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x3AD2 DUP2 PUSH2 0x2CB4 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3AEE JUMPI PUSH2 0x3AED PUSH2 0x2C78 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x3AFC DUP5 DUP3 DUP6 ADD PUSH2 0x3AC3 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 SHL SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B41 PUSH2 0x3B3C PUSH2 0x3B37 DUP5 PUSH2 0x3B05 JUMP JUMPDEST PUSH2 0x3B19 JUMP JUMPDEST PUSH2 0x3B0F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3B51 DUP2 PUSH2 0x3B26 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x3B6C PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x3B48 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B7D DUP3 PUSH2 0x2CA2 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3B8D DUP2 PUSH2 0x3B72 JUMP JUMPDEST DUP2 EQ PUSH2 0x3B98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x3BAA DUP2 PUSH2 0x3B84 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3BC6 JUMPI PUSH2 0x3BC5 PUSH2 0x2C78 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x3BD4 DUP5 DUP3 DUP6 ADD PUSH2 0x3B9B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3C17 DUP3 PUSH2 0x2EDF JUMP JUMPDEST SWAP2 POP PUSH2 0x3C22 DUP4 PUSH2 0x2EDF JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3C46 JUMPI PUSH2 0x3C45 PUSH2 0x34BE JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C57 DUP3 PUSH2 0x2CE0 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 DUP3 SUB PUSH2 0x3C6A JUMPI PUSH2 0x3C69 PUSH2 0x34BE JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 SUB SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x537472696E67733A20686578206C656E67746820696E73756666696369656E74 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3CAB PUSH1 0x20 DUP4 PUSH2 0x3441 JUMP JUMPDEST SWAP2 POP PUSH2 0x3CB6 DUP3 PUSH2 0x3C75 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3CDA DUP2 PUSH2 0x3C9E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC4 0xE7 JUMPI 0x21 PUSH9 0xB3D5831E83E3433EA9 CODESIZE NOT SWAP1 ORIGIN 0xC5 SELFDESTRUCT 0xC0 0xE0 0xEA JUMPI PUSH24 0x95DA4CA37CCD8364736F6C63430008120033000000000000 ","sourceMap":"391:6696:22:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4856:213;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;2353:185;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6175:113;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1857:243;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;625:441;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;426:193;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2106:241;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6294:216;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1602:249;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5236:124;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6022:147;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;2741;;;:::i;:::-;;2894:145;;;:::i;:::-;;5490:136;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5075:155;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2544:191;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5805:103;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5914:102;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5632:167;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1416:138;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6933:152;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6747:180;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6526:205;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4698:152;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5366:118;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3597:909;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4512:180;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1072:220;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4856:213;4962:7;4971;4980;4989;5015:47;5042:11;5055:6;5015:26;:47::i;:::-;5008:54;;;;;;;;4856:213;;;;;;;:::o;2353:185::-;2416:67;492:29:39;;;;;;;:::i;:::-;;;;;;;;;;;;;482:40;;;;;;2416:33:22;:67::i;:::-;2493:38;2519:11;2493:25;:38::i;:::-;2353:185;:::o;6175:113::-;6230:6;6255:26;6275:5;6255:19;:26::i;:::-;6248:33;;6175:113;;;:::o;1857:243::-;1923:67;492:29:39;;;;;;;:::i;:::-;;;;;;;;;;;;;482:40;;;;;;1923:33:22;:67::i;:::-;2000:42;2032:9;2000:31;:42::i;:::-;2052:41;2083:9;2052:30;:41::i;:::-;1857:243;:::o;625:441::-;1012:47;1038:11;1051:7;1012:25;:47::i;:::-;625:441;;:::o;426:193::-;505:51;544:11;505:38;:51::i;:::-;566:46;591:11;604:7;566:24;:46::i;:::-;426:193;;:::o;2106:241::-;2171:67;492:29:39;;;;;;;:::i;:::-;;;;;;;;;;;;;482:40;;;;;;2171:33:22;:67::i;:::-;2248:42;2280:9;2248:31;:42::i;:::-;2300:40;2330:9;2300:29;:40::i;:::-;2106:241;:::o;6294:216::-;6414:7;6440:63;6477:11;6490:12;6440:36;:63::i;:::-;6433:70;;6294:216;;;;:::o;1602:249::-;1671:67;492:29:39;;;;;;;:::i;:::-;;;;;;;;;;;;;482:40;;;;;;1671:33:22;:67::i;:::-;1748:42;1780:9;1748:31;:42::i;:::-;1800:44;1834:9;1800:33;:44::i;:::-;1602:249;:::o;5236:124::-;5292:7;5318:35;:33;:35::i;:::-;5311:42;;5236:124;:::o;6022:147::-;6093:6;6101;6109;6134:28;6157:4;6134:22;:28::i;:::-;6127:35;;;;;;6022:147;;;;;:::o;2741:::-;2781:67;492:29:39;;;;;;;:::i;:::-;;;;;;;;;;;;;482:40;;;;;;2781:33:22;:67::i;:::-;2858:23;:21;:23::i;:::-;2741:147::o;2894:145::-;2933:67;492:29:39;;;;;;;:::i;:::-;;;;;;;;;;;;;482:40;;;;;;2933:33:22;:67::i;:::-;3010:22;:20;:22::i;:::-;2894:145::o;5490:136::-;5552:7;5578:41;:39;:41::i;:::-;5571:48;;5490:136;:::o;5075:155::-;5161:7;5187:36;5211:11;5187:23;:36::i;:::-;5180:43;;5075:155;;;:::o;2544:191::-;2610:67;492:29:39;;;;;;;:::i;:::-;;;;;;;;;;;;;482:40;;;;;;2610:33:22;:67::i;:::-;2687:41;2716:11;2687:28;:41::i;:::-;2544:191;:::o;5805:103::-;5852:4;5875:26;:24;:26::i;:::-;5868:33;;5805:103;:::o;5914:102::-;5959:7;5985:24;:22;:24::i;:::-;5978:31;;5914:102;:::o;5632:167::-;5722:4;5745:47;5780:11;5745:34;:47::i;:::-;5738:54;;5632:167;;;:::o;1416:138::-;1498:49;1528:5;1535:11;1498:29;:49::i;:::-;1416:138;;:::o;6933:152::-;7014:7;7040:38;7066:11;7040:25;:38::i;:::-;7033:45;;6933:152;;;:::o;6747:180::-;6850:7;6876:44;6901:5;6908:11;6876:24;:44::i;:::-;6869:51;;6747:180;;;;:::o;6526:205::-;6642:4;6665:59;6698:11;6711:12;6665:32;:59::i;:::-;6658:66;;6526:205;;;;:::o;4698:152::-;4779:7;4805:38;4831:11;4805:25;:38::i;:::-;4798:45;;4698:152;;;:::o;5366:118::-;5419:7;5445:32;:30;:32::i;:::-;5438:39;;5366:118;:::o;3597:909::-;3793:67;492:29:39;;;;;;;:::i;:::-;;;;;;;;;;;;;482:40;;;;;;3793:33:22;:67::i;:::-;3903:20;:27;3887:5;:12;:43;;:102;;;;3962:20;:27;3946:5;:12;:43;;3887:102;:146;;;;4021:5;:12;4005:5;:12;:28;;3887:146;3870:202;;;4051:21;;;;;;;;;;;;;;3870:202;4088:9;4083:417;4107:5;:12;4103:1;:16;4083:417;;;4163:1;4148:5;:12;:16;;;;:::i;:::-;4144:1;:20;4140:169;;;4215:20;4240:1;4236;:5;;;;:::i;:::-;4215:27;;;;;;;;:::i;:::-;;;;;;;;4188:54;;:20;4209:1;4188:23;;;;;;;;:::i;:::-;;;;;;;;:54;;;4184:110;;4271:23;;;;;;;;;;;;;;4184:110;4140:169;4323:166;4359:5;4365:1;4359:8;;;;;;;;:::i;:::-;;;;;;;;4385:20;4406:1;4385:23;;;;;;;;:::i;:::-;;;;;;;;4426:20;4447:1;4426:23;;;;;;;;:::i;:::-;;;;;;;;4467:5;4473:1;4467:8;;;;;;;;:::i;:::-;;;;;;;;4323:18;:166::i;:::-;4121:3;;;;;:::i;:::-;;;;4083:417;;;;3597:909;;;;:::o;4512:180::-;4576:67;492:29:39;;;;;;;:::i;:::-;;;;;;;;;;;;;482:40;;;;;;4576:33:22;:67::i;:::-;4653:32;4673:4;4679:5;4653:19;:32::i;:::-;4512:180;;:::o;1072:220::-;1157:66;412:28:39;;;;;;;:::i;:::-;;;;;;;;;;;;;402:39;;;;;;1157:33:22;:66::i;:::-;1233:52;1264:11;1277:7;1233:30;:52::i;:::-;1072:220;;:::o;10037:670:35:-;10144:7;10153;10162;10171;10190:16;10209:17;:15;:17::i;:::-;:40;;:53;10250:11;10209:53;;;;;;;;;;;;;;;:61;10263:6;10209:61;;;;;;;;;;;:70;;;;;;;;;;;;10190:89;;10289:20;10312:17;:15;:17::i;:::-;:40;;:53;10353:11;10312:53;;;;;;;;;;;;;;;:61;10366:6;10312:61;;;;;;;;;;;:74;;;10289:97;;10396:25;10424:17;:15;:17::i;:::-;:40;;:53;10465:11;10424:53;;;;;;;;;;;;;;;:61;10478:6;10424:61;;;;;;;;;;;:79;;;10396:107;;10513:25;10541:17;:15;:17::i;:::-;:40;;:53;10582:11;10541:53;;;;;;;;;;;;;;;:61;10595:6;10541:61;;;;;;;;;;;:79;;;10513:107;;10639:8;10649:12;10663:17;10682;10631:69;;;;;;;;;;;;10037:670;;;;;;;:::o;1039:89:39:-;1104:17;1115:5;1104:10;:17::i;:::-;1039:89;:::o;8496:120:35:-;8605:4;8560:17;:15;:17::i;:::-;:29;;:42;8590:11;8560:42;;;;;;;;;;;;;;;;:49;;;;;;;;;;;;;;;;;;8496:120;:::o;12170:117::-;12226:6;12251:17;:15;:17::i;:::-;:22;;:29;12274:5;12251:29;;;;;;;;;;;;;;;;;;;;;;;;;12244:36;;12170:117;;;:::o;7045:112::-;7129:1;7119:6;:11;7115:35;;7139:11;;;;;;;;;;;;;;7115:35;7045:112;:::o;8238:119::-;8341:9;8305:17;:15;:17::i;:::-;:33;;:45;;;;8238:119;:::o;2791:391::-;2928:7;2876:17;:15;:17::i;:::-;:24;;:36;2901:10;2876:36;;;;;;;;;;;;;;;:49;2913:11;2876:49;;;;;;;;;;;;;;;;:59;2872:104;;;2956:20;;;;;;;;;;;;;;2872:104;3040:7;2987:17;:15;:17::i;:::-;:24;;:36;3012:10;2987:36;;;;;;;;;;;;;;;:49;3024:11;2987:49;;;;;;;;;;;;;;;;:60;;;;;;;:::i;:::-;;;;;;;;3103:7;3057:17;:15;:17::i;:::-;:29;;:42;3087:11;3057:42;;;;;;;;;;;;;;;;:53;;;;;;;:::i;:::-;;;;;;;;3133:11;3121:33;;;3155:10;3167:7;3121:54;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2791:391;;:::o;7163:158::-;7250:36;7274:11;7250:23;:36::i;:::-;7245:69;;7295:19;;;;;;;;;;;;;;7245:69;7163:158;:::o;2445:340::-;2537:11;2525:37;;;2576:10;2608:4;2627:7;2525:119;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2708:7;2655:17;:15;:17::i;:::-;:24;;:36;2680:10;2655:36;;;;;;;;;;;;;;;:49;2692:11;2655:49;;;;;;;;;;;;;;;;:60;;;;;;;:::i;:::-;;;;;;;;2771:7;2725:17;:15;:17::i;:::-;:29;;:42;2755:11;2725:42;;;;;;;;;;;;;;;;:53;;;;;;;:::i;:::-;;;;;;;;2445:340;;:::o;8363:127::-;8474:9;8429:17;:15;:17::i;:::-;:42;;:54;;;;8363:127;:::o;12293:559::-;12414:7;12433:23;12471:11;12433:50;;12493:23;12519:73;12570:12;12519:11;:37;;;;:73;;;;:::i;:::-;12493:99;;12602:25;12630:41;12665:4;12630:11;:26;;;;:41;;;;:::i;:::-;12602:69;;12802:17;:15;:17::i;:::-;:42;;;12769:12;12747:19;:34;;;;:::i;:::-;12732:51;;:112;;;;:::i;:::-;12701:15;:144;;;;:::i;:::-;12682:163;;;;;12293:559;;;;:::o;8107:125::-;8216:9;8177:17;:15;:17::i;:::-;:36;;:48;;;;8107:125;:::o;10713:126::-;10770:7;10796:17;:15;:17::i;:::-;:36;;;10789:43;;10713:126;:::o;11912:252::-;11984:6;11992;12000;12018:28;12049:31;12075:4;12049:17;:15;:17::i;:::-;:21;;:25;;:31;;;;:::i;:::-;12018:62;;12098:4;:8;;;12108:4;:23;;;12133:4;:23;;;12090:67;;;;;;;11912:252;;;;;:::o;8751:112::-;8826:17;:15;:17::i;:::-;:30;;;;;;;;;;;;8825:31;8792:17;:15;:17::i;:::-;:30;;;:64;;;;;;;;;;;;;;;;;;8751:112::o;8869:311::-;8909:23;8935:13;:11;:13::i;:::-;8909:39;;8963:9;8958:216;8982:15;8978:1;:19;8958:216;;;9018:11;9032:84;9101:1;9085:13;:11;:13::i;:::-;:17;;;;:::i;:::-;9032;:15;:17::i;:::-;:21;;:35;;:84;;;;:::i;:::-;9018:98;;9130:33;9159:3;9130:17;:15;:17::i;:::-;:21;;:28;;:33;;;;:::i;:::-;9004:170;8999:3;;;;;:::i;:::-;;;;8958:216;;;;8899:281;8869:311::o;10971:138::-;11034:7;11060:17;:15;:17::i;:::-;:42;;;11053:49;;10971:138;:::o;7959:142::-;8025:7;8051:17;:15;:17::i;:::-;:30;;:43;8082:11;8051:43;;;;;;;;;;;;;;;;8044:50;;7959:142;;;:::o;8622:123::-;8696:17;:15;:17::i;:::-;:29;;:42;8726:11;8696:42;;;;;;;;;;;;;;;;8689:49;;;;;;;;;;;8622:123;:::o;11284:108::-;11332:4;11355:17;:15;:17::i;:::-;:30;;;;;;;;;;;;11348:37;;11284:108;:::o;11398:107::-;11444:7;11470:28;:17;:15;:17::i;:::-;:21;;:26;:28::i;:::-;11463:35;;11398:107;:::o;11115:163::-;11206:4;11229:17;:15;:17::i;:::-;:29;;:42;11259:11;11229:42;;;;;;;;;;;;;;;;;;;;;;;;;11222:49;;11115:163;;;:::o;3602:224::-;3730:89;3761:5;3780:11;3805:4;3730:17;:89::i;:::-;3685:17;:15;:17::i;:::-;:28;;:41;3714:11;3685:41;;;;;;;;;;;;;;;;:134;;;;;;;:::i;:::-;;;;;;;;3602:224;;:::o;13400:157::-;13482:7;13508:17;:15;:17::i;:::-;:29;;:42;13538:11;13508:42;;;;;;;;;;;;;;;;13501:49;;13400:157;;;:::o;13213:181::-;13317:7;13343:17;:15;:17::i;:::-;:24;;:31;13368:5;13343:31;;;;;;;;;;;;;;;:44;13375:11;13343:44;;;;;;;;;;;;;;;;13336:51;;13213:181;;;;:::o;12858:349::-;12975:4;12991:23;13029:11;13017:34;;;13073:4;13017:71;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12991:97;;13148:52;13174:11;13187:12;13148:25;:52::i;:::-;13118:15;:82;13099:101;;;12858:349;;;;:::o;9875:156::-;9957:7;9983:17;:15;:17::i;:::-;:28;;:41;10012:11;9983:41;;;;;;;;;;;;;;;;9976:48;;9875:156;;;:::o;10845:120::-;10899:7;10925:17;:15;:17::i;:::-;:33;;;10918:40;;10845:120;:::o;9186:440::-;9343:30;9368:4;9343:24;:30::i;:::-;9409:19;9387:41;;:19;:41;;;9383:89;;;9449:23;;;;;;;;;;;;;;9383:89;9482:137;9521:4;9539;9557:19;9590;9482:17;:15;:17::i;:::-;:21;;:25;;:137;;;;;;;:::i;:::-;9186:440;;;;:::o;9632:148::-;9697:30;9722:4;9697:24;:30::i;:::-;9769:4;9737:17;:15;:17::i;:::-;:22;;:29;9760:5;9737:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;9632:148;;:::o;3188:408::-;3344:7;3300:17;:15;:17::i;:::-;:28;;:41;3329:11;3300:41;;;;;;;;;;;;;;;;:51;3296:100;;;3372:24;;;;;;;;;;;;;;3296:100;3452:7;3407:17;:15;:17::i;:::-;:28;;:41;3436:11;3407:41;;;;;;;;;;;;;;;;:52;;;;;;;:::i;:::-;;;;;;;;3482:11;3470:37;;;3529:4;3548:10;3572:7;3470:119;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3188:408;;:::o;2131:224::-;2205:24;2245:16;876:23;2245:43;;2331:8;2321:18;;2307:42;2131:224;:::o;1320:95:39:-;1379:29;1390:5;1397:10;1379;:29::i;:::-;1320:95;:::o;23687:267:7:-;23788:20;23827:28;23859:21;23874:5;23859:14;:21::i;:::-;23824:56;;;23897:3;:33;;;23931:5;23938:8;23897:50;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23890:57;;;23687:267;;;;:::o;22431:231::-;22522:14;22555:28;22587:21;22602:5;22587:14;:21::i;:::-;22552:56;;;22625:3;:14;;;22640:5;22647:7;22625:30;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22618:37;;;22431:231;;;;:::o;492:152:38:-;580:23;;:::i;:::-;622:3;:10;;:15;633:3;622:15;;;;;;;;;;;615:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;492:152;;;;:::o;650:148::-;750:7;776:3;:8;;785:5;776:15;;;;;;;;:::i;:::-;;;;;;;;;;769:22;;650:148;;;;:::o;1632:458::-;1702:3;:12;;:17;1715:3;1702:17;;;;;;;;;;;;;;;;;;;;;1697:55;1735:7;1697:55;1769:3;:12;;:17;1782:3;1769:17;;;;;;;;;;;;1762:24;;;;;;;;;;;1803:3;:10;;:15;1814:3;1803:15;;;;;;;;;;;;1796:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1829:10;1842:3;:11;;:16;1854:3;1842:16;;;;;;;;;;;;1829:29;;1868:14;1903:1;1885:3;:8;;:15;;;;:19;;;;:::i;:::-;1868:36;;1914:15;1932:3;:8;;1941:9;1932:19;;;;;;;;:::i;:::-;;;;;;;;;;1914:37;;1985:5;1962:3;:11;;:20;1974:7;1962:20;;;;;;;;;;;:28;;;;2007:3;:11;;:16;2019:3;2007:16;;;;;;;;;;;2000:23;;;2052:7;2034:3;:8;;2043:5;2034:15;;;;;;;;:::i;:::-;;;;;;;;;:25;;;;2069:3;:8;;:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1687:403;;;1632:458;;;:::o;804:102::-;858:7;884:3;:8;;:15;;;;877:22;;804:102;;;:::o;3832:1815:35:-;3959:7;3978:31;4012:17;:15;:17::i;:::-;3978:51;;4039:29;4071:8;:30;;:65;4115:11;4071:65;;;;;;;;;;;;;;;;4039:97;;4250:17;4282:9;4294:1;4282:13;;4277:1337;4301:5;4297:1;:9;4277:1337;;;5420:105;5457:11;5510:1;5486:21;:25;;;;:::i;:::-;5420:19;:105::i;:::-;5407:118;;;;;:::i;:::-;;;5544:9;5540:63;;;5602:1;5555:8;:30;;:43;5586:11;5555:43;;;;;;;;;;;;;;;;:48;;;;;;;:::i;:::-;;;;;;;;5540:63;4308:3;;;;;:::i;:::-;;;;4277:1337;;;;5631:9;5624:16;;;;;3832:1815;;;;;:::o;7770:141::-;938:3;7845:13;;:4;:13;;;:30;;;;981:5;7862:13;;:4;:13;;;7845:30;7841:63;;;7884:20;;;;;;;;;;;;;;7841:63;7770:141;:::o;912:714:38:-;1093:3;:12;;:17;1106:3;1093:17;;;;;;;;;;;;;;;;;;;;;1089:531;;;1148:4;1126:3;:10;;:15;1137:3;1126:15;;;;;;;;;;;:19;;;:26;;;;;;;;;;;;;;;;;;1203:19;1166:3;:10;;:15;1177:3;1166:15;;;;;;;;;;;:34;;;:56;;;;;;;;;;;;;;;;;;1273:19;1236:3;:10;;:15;1247:3;1236:15;;;;;;;;;;;:34;;;:56;;;;;;;;;;;;;;;;;;1089:531;;;1343:4;1323:3;:12;;:17;1336:3;1323:17;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;1384:4;1362:3;:10;;:15;1373:3;1362:15;;;;;;;;;;;:19;;;:26;;;;;;;;;;;;;;;;;;1439:19;1402:3;:10;;:15;1413:3;1402:15;;;;;;;;;;;:34;;;:56;;;;;;;;;;;;;;;;;;1509:19;1472:3;:10;;:15;1483:3;1472:15;;;;;;;;;;;:34;;;:56;;;;;;;;;;;;;;;;;;1562:3;:8;;:15;;;;1543:3;:11;;:16;1555:3;1543:16;;;;;;;;;;;:34;;;;1591:3;:8;;1605:3;1591:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1089:531;912:714;;;;;:::o;1421:491:39:-;1503:25;1512:5;1519:8;1503;:25::i;:::-;1498:408;;1689:42;1717:8;1689:42;;1728:2;1689:19;:42::i;:::-;1802:39;1830:5;1822:14;;1838:2;1802:19;:39::i;:::-;1596:267;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1544:351;;;;;;;;;;;:::i;:::-;;;;;;;;1498:408;1421:491;;:::o;56668:917:7:-;56740:16;56758:28;56913:10;56907:17;56899:25;;56950:9;56944:16;56937:23;;57007:1;56983:26;;56991:3;56983:26;;;56979:511;;57139:1;57114:27;;57122:4;57114:27;;;57110:101;;57180:5;:13;;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;57161:35;;57110:101;57275:4;57263:35;;;57410:66;57263:214;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;57224:255;;56979:511;57531:1;57506:27;;57514:4;57506:27;;;57499:35;;;;:::i;:::-;;57575:1;57551:26;;57559:3;57551:26;;;57544:34;;;;:::i;:::-;;56668:917;;;:::o;5957:1040:35:-;6068:7;6087:31;6121:17;:15;:17::i;:::-;6087:51;;6148:25;6176:8;:31;;:44;6208:11;6176:44;;;;;;;;;;;;;;;:52;6221:6;6176:52;;;;;;;;;;;:70;;;6148:98;;6256:25;6284:8;:31;;:44;6316:11;6284:44;;;;;;;;;;;;;;;:52;6329:6;6284:52;;;;;;;;;;;:70;;;6256:98;;6379:23;6416:15;6459:21;6493:58;6531:11;6544:6;6493:37;:58::i;:::-;6365:186;;;;;;;6562:19;6602:17;6584:8;:36;;;;:::i;:::-;6562:58;;;;6656:1;6635:17;:22;6631:360;;6715:17;6695;:37;;;;:::i;:::-;6680:11;:53;;;;:::i;:::-;6673:60;;;;;;;;;;;6631:360;6771:1;6754:13;:18;6750:241;;6826:17;6810:13;:33;;;;:::i;:::-;6795:11;:49;;;;:::i;:::-;6788:56;;;;;;;;;;;6750:241;6882:15;;;;;;;;;;;;;;5957:1040;;;;;:::o;1134:180:39:-;1230:4;1253:23;:21;:23::i;:::-;:29;;:36;1283:5;1253:36;;;;;;;;;;;:44;;:54;1298:8;1253:54;;;;;;;;;;;;;;;;;;;;;;;;;1246:61;;1134:180;;;;:::o;1513:437:5:-;1588:13;1613:19;1658:1;1649:6;1645:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;1635:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1613:47;;1670:15;:6;1677:1;1670:9;;;;;;;;:::i;:::-;;;;;:15;;;;;;;;;;;1695;:6;1702:1;1695:9;;;;;;;;:::i;:::-;;;;;:15;;;;;;;;;;;1725:9;1750:1;1741:6;1737:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;1725:26;;1720:128;1757:1;1753;:5;1720:128;;;1791:8;1808:3;1800:5;:11;1791:21;;;;;;;:::i;:::-;;;;;1779:6;1786:1;1779:9;;;;;;;;:::i;:::-;;;;;:33;;;;;;;;;;;1836:1;1826:11;;;;;1760:3;;;;:::i;:::-;;;1720:128;;;;1874:1;1865:5;:10;1857:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;1936:6;1922:21;;;1513:437;;;;:::o;6863:504:37:-;6981:5;6988:6;6996:7;7005;7024:42;7069:41;:39;:41::i;:::-;7024:86;;7121:16;7140:8;:22;;:35;7163:11;7140:35;;;;;;;;;;;;;;;:43;7176:6;7140:43;;;;;;;;;;;:52;;;;;;;;;;;;7121:71;;7202:20;7225:8;:31;;:44;7257:11;7225:44;;;;;;;;;;;;;;;:52;7270:6;7225:52;;;;;;;;;;;:65;;;7202:88;;7308:52;7324:8;7334:11;7347:12;7308:15;:52::i;:::-;7301:59;;;;;;;;;;;6863:504;;;;;;;:::o;791:242:39:-;871:30;917:16;203:29;917:49;;1009:8;999:18;;985:42;791:242;:::o;5747:597:37:-;5877:5;5884:6;5892:7;5901;5941:17;:15;:17::i;:::-;:44;;:51;5986:5;5941:51;;;;;;;;;;;;;;;:64;5993:11;5941:64;;;;;;;;;;;;;;;:72;6006:6;5941:72;;;;;;;;;;;:90;;;;;;;;;;;;6045:17;:15;:17::i;:::-;:44;;:51;6090:5;6045:51;;;;;;;;;;;;;;;:64;6097:11;6045:64;;;;;;;;;;;;;;;:72;6110:6;6045:72;;;;;;;;;;;:81;;;;;;;;;;;;6140:17;:15;:17::i;:::-;:44;;:51;6185:5;6140:51;;;;;;;;;;;;;;;:64;6192:11;6140:64;;;;;;;;;;;;;;;:72;6205:6;6140:72;;;;;;;;;;;:87;;;6241:17;:15;:17::i;:::-;:44;;:51;6286:5;6241:51;;;;;;;;;;;;;;;:64;6293:11;6241:64;;;;;;;;;;;;;;;:72;6306:6;6241:72;;;;;;;;;;;:86;;;5920:417;;;;;;;;5747:597;;;;;;;:::o;1292:224::-;1366:24;1406:16;603:23;1406:43;;1492:8;1482:18;;1468:42;1292:224;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7:75:43:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:77::-;878:7;907:5;896:16;;841:77;;;:::o;924:122::-;997:24;1015:5;997:24;:::i;:::-;990:5;987:35;977:63;;1036:1;1033;1026:12;977:63;924:122;:::o;1052:139::-;1098:5;1136:6;1123:20;1114:29;;1152:33;1179:5;1152:33;:::i;:::-;1052:139;;;;:::o;1197:474::-;1265:6;1273;1322:2;1310:9;1301:7;1297:23;1293:32;1290:119;;;1328:79;;:::i;:::-;1290:119;1448:1;1473:53;1518:7;1509:6;1498:9;1494:22;1473:53;:::i;:::-;1463:63;;1419:117;1575:2;1601:53;1646:7;1637:6;1626:9;1622:22;1601:53;:::i;:::-;1591:63;;1546:118;1197:474;;;;;:::o;1677:118::-;1764:24;1782:5;1764:24;:::i;:::-;1759:3;1752:37;1677:118;;:::o;1801:::-;1888:24;1906:5;1888:24;:::i;:::-;1883:3;1876:37;1801:118;;:::o;1925:553::-;2102:4;2140:3;2129:9;2125:19;2117:27;;2154:71;2222:1;2211:9;2207:17;2198:6;2154:71;:::i;:::-;2235:72;2303:2;2292:9;2288:18;2279:6;2235:72;:::i;:::-;2317;2385:2;2374:9;2370:18;2361:6;2317:72;:::i;:::-;2399;2467:2;2456:9;2452:18;2443:6;2399:72;:::i;:::-;1925:553;;;;;;;:::o;2484:329::-;2543:6;2592:2;2580:9;2571:7;2567:23;2563:32;2560:119;;;2598:79;;:::i;:::-;2560:119;2718:1;2743:53;2788:7;2779:6;2768:9;2764:22;2743:53;:::i;:::-;2733:63;;2689:117;2484:329;;;;:::o;2819:89::-;2855:7;2895:6;2888:5;2884:18;2873:29;;2819:89;;;:::o;2914:115::-;2999:23;3016:5;2999:23;:::i;:::-;2994:3;2987:36;2914:115;;:::o;3035:218::-;3126:4;3164:2;3153:9;3149:18;3141:26;;3177:69;3243:1;3232:9;3228:17;3219:6;3177:69;:::i;:::-;3035:218;;;;:::o;3259:329::-;3318:6;3367:2;3355:9;3346:7;3342:23;3338:32;3335:119;;;3373:79;;:::i;:::-;3335:119;3493:1;3518:53;3563:7;3554:6;3543:9;3539:22;3518:53;:::i;:::-;3508:63;;3464:117;3259:329;;;;:::o;3594:91::-;3629:7;3673:5;3669:2;3658:21;3647:32;;3594:91;;;:::o;3691:118::-;3762:22;3778:5;3762:22;:::i;:::-;3755:5;3752:33;3742:61;;3799:1;3796;3789:12;3742:61;3691:118;:::o;3815:135::-;3859:5;3897:6;3884:20;3875:29;;3913:31;3938:5;3913:31;:::i;:::-;3815:135;;;;:::o;3956:470::-;4022:6;4030;4079:2;4067:9;4058:7;4054:23;4050:32;4047:119;;;4085:79;;:::i;:::-;4047:119;4205:1;4230:53;4275:7;4266:6;4255:9;4251:22;4230:53;:::i;:::-;4220:63;;4176:117;4332:2;4358:51;4401:7;4392:6;4381:9;4377:22;4358:51;:::i;:::-;4348:61;;4303:116;3956:470;;;;;:::o;4432:222::-;4525:4;4563:2;4552:9;4548:18;4540:26;;4576:71;4644:1;4633:9;4629:17;4620:6;4576:71;:::i;:::-;4432:222;;;;:::o;4660:109::-;4696:7;4736:26;4729:5;4725:38;4714:49;;4660:109;;;:::o;4775:115::-;4860:23;4877:5;4860:23;:::i;:::-;4855:3;4848:36;4775:115;;:::o;4896:430::-;5039:4;5077:2;5066:9;5062:18;5054:26;;5090:69;5156:1;5145:9;5141:17;5132:6;5090:69;:::i;:::-;5169:70;5235:2;5224:9;5220:18;5211:6;5169:70;:::i;:::-;5249;5315:2;5304:9;5300:18;5291:6;5249:70;:::i;:::-;4896:430;;;;;;:::o;5332:90::-;5366:7;5409:5;5402:13;5395:21;5384:32;;5332:90;;;:::o;5428:109::-;5509:21;5524:5;5509:21;:::i;:::-;5504:3;5497:34;5428:109;;:::o;5543:210::-;5630:4;5668:2;5657:9;5653:18;5645:26;;5681:65;5743:1;5732:9;5728:17;5719:6;5681:65;:::i;:::-;5543:210;;;;:::o;5759:474::-;5827:6;5835;5884:2;5872:9;5863:7;5859:23;5855:32;5852:119;;;5890:79;;:::i;:::-;5852:119;6010:1;6035:53;6080:7;6071:6;6060:9;6056:22;6035:53;:::i;:::-;6025:63;;5981:117;6137:2;6163:53;6208:7;6199:6;6188:9;6184:22;6163:53;:::i;:::-;6153:63;;6108:118;5759:474;;;;;:::o;6239:::-;6307:6;6315;6364:2;6352:9;6343:7;6339:23;6335:32;6332:119;;;6370:79;;:::i;:::-;6332:119;6490:1;6515:53;6560:7;6551:6;6540:9;6536:22;6515:53;:::i;:::-;6505:63;;6461:117;6617:2;6643:53;6688:7;6679:6;6668:9;6664:22;6643:53;:::i;:::-;6633:63;;6588:118;6239:474;;;;;:::o;6719:117::-;6828:1;6825;6818:12;6842:102;6883:6;6934:2;6930:7;6925:2;6918:5;6914:14;6910:28;6900:38;;6842:102;;;:::o;6950:180::-;6998:77;6995:1;6988:88;7095:4;7092:1;7085:15;7119:4;7116:1;7109:15;7136:281;7219:27;7241:4;7219:27;:::i;:::-;7211:6;7207:40;7349:6;7337:10;7334:22;7313:18;7301:10;7298:34;7295:62;7292:88;;;7360:18;;:::i;:::-;7292:88;7400:10;7396:2;7389:22;7179:238;7136:281;;:::o;7423:129::-;7457:6;7484:20;;:::i;:::-;7474:30;;7513:33;7541:4;7533:6;7513:33;:::i;:::-;7423:129;;;:::o;7558:310::-;7634:4;7724:18;7716:6;7713:30;7710:56;;;7746:18;;:::i;:::-;7710:56;7796:4;7788:6;7784:17;7776:25;;7856:4;7850;7846:15;7838:23;;7558:310;;;:::o;7874:117::-;7983:1;7980;7973:12;7997:120;8069:23;8086:5;8069:23;:::i;:::-;8062:5;8059:34;8049:62;;8107:1;8104;8097:12;8049:62;7997:120;:::o;8123:137::-;8168:5;8206:6;8193:20;8184:29;;8222:32;8248:5;8222:32;:::i;:::-;8123:137;;;;:::o;8282:707::-;8377:5;8402:80;8418:63;8474:6;8418:63;:::i;:::-;8402:80;:::i;:::-;8393:89;;8502:5;8531:6;8524:5;8517:21;8565:4;8558:5;8554:16;8547:23;;8618:4;8610:6;8606:17;8598:6;8594:30;8647:3;8639:6;8636:15;8633:122;;;8666:79;;:::i;:::-;8633:122;8781:6;8764:219;8798:6;8793:3;8790:15;8764:219;;;8873:3;8902:36;8934:3;8922:10;8902:36;:::i;:::-;8897:3;8890:49;8968:4;8963:3;8959:14;8952:21;;8840:143;8824:4;8819:3;8815:14;8808:21;;8764:219;;;8768:21;8383:606;;8282:707;;;;;:::o;9011:368::-;9081:5;9130:3;9123:4;9115:6;9111:17;9107:27;9097:122;;9138:79;;:::i;:::-;9097:122;9255:6;9242:20;9280:93;9369:3;9361:6;9354:4;9346:6;9342:17;9280:93;:::i;:::-;9271:102;;9087:292;9011:368;;;;:::o;9385:310::-;9461:4;9551:18;9543:6;9540:30;9537:56;;;9573:18;;:::i;:::-;9537:56;9623:4;9615:6;9611:17;9603:25;;9683:4;9677;9673:15;9665:23;;9385:310;;;:::o;9701:120::-;9773:23;9790:5;9773:23;:::i;:::-;9766:5;9763:34;9753:62;;9811:1;9808;9801:12;9753:62;9701:120;:::o;9827:137::-;9872:5;9910:6;9897:20;9888:29;;9926:32;9952:5;9926:32;:::i;:::-;9827:137;;;;:::o;9986:707::-;10081:5;10106:80;10122:63;10178:6;10122:63;:::i;:::-;10106:80;:::i;:::-;10097:89;;10206:5;10235:6;10228:5;10221:21;10269:4;10262:5;10258:16;10251:23;;10322:4;10314:6;10310:17;10302:6;10298:30;10351:3;10343:6;10340:15;10337:122;;;10370:79;;:::i;:::-;10337:122;10485:6;10468:219;10502:6;10497:3;10494:15;10468:219;;;10577:3;10606:36;10638:3;10626:10;10606:36;:::i;:::-;10601:3;10594:49;10672:4;10667:3;10663:14;10656:21;;10544:143;10528:4;10523:3;10519:14;10512:21;;10468:219;;;10472:21;10087:606;;9986:707;;;;;:::o;10715:368::-;10785:5;10834:3;10827:4;10819:6;10815:17;10811:27;10801:122;;10842:79;;:::i;:::-;10801:122;10959:6;10946:20;10984:93;11073:3;11065:6;11058:4;11050:6;11046:17;10984:93;:::i;:::-;10975:102;;10791:292;10715:368;;;;:::o;11089:311::-;11166:4;11256:18;11248:6;11245:30;11242:56;;;11278:18;;:::i;:::-;11242:56;11328:4;11320:6;11316:17;11308:25;;11388:4;11382;11378:15;11370:23;;11089:311;;;:::o;11423:710::-;11519:5;11544:81;11560:64;11617:6;11560:64;:::i;:::-;11544:81;:::i;:::-;11535:90;;11645:5;11674:6;11667:5;11660:21;11708:4;11701:5;11697:16;11690:23;;11761:4;11753:6;11749:17;11741:6;11737:30;11790:3;11782:6;11779:15;11776:122;;;11809:79;;:::i;:::-;11776:122;11924:6;11907:220;11941:6;11936:3;11933:15;11907:220;;;12016:3;12045:37;12078:3;12066:10;12045:37;:::i;:::-;12040:3;12033:50;12112:4;12107:3;12103:14;12096:21;;11983:144;11967:4;11962:3;11958:14;11951:21;;11907:220;;;11911:21;11525:608;;11423:710;;;;;:::o;12156:370::-;12227:5;12276:3;12269:4;12261:6;12257:17;12253:27;12243:122;;12284:79;;:::i;:::-;12243:122;12401:6;12388:20;12426:94;12516:3;12508:6;12501:4;12493:6;12489:17;12426:94;:::i;:::-;12417:103;;12233:293;12156:370;;;;:::o;12532:1599::-;12715:6;12723;12731;12739;12788:3;12776:9;12767:7;12763:23;12759:33;12756:120;;;12795:79;;:::i;:::-;12756:120;12943:1;12932:9;12928:17;12915:31;12973:18;12965:6;12962:30;12959:117;;;12995:79;;:::i;:::-;12959:117;13100:77;13169:7;13160:6;13149:9;13145:22;13100:77;:::i;:::-;13090:87;;12886:301;13254:2;13243:9;13239:18;13226:32;13285:18;13277:6;13274:30;13271:117;;;13307:79;;:::i;:::-;13271:117;13412:77;13481:7;13472:6;13461:9;13457:22;13412:77;:::i;:::-;13402:87;;13197:302;13566:2;13555:9;13551:18;13538:32;13597:18;13589:6;13586:30;13583:117;;;13619:79;;:::i;:::-;13583:117;13724:77;13793:7;13784:6;13773:9;13769:22;13724:77;:::i;:::-;13714:87;;13509:302;13878:2;13867:9;13863:18;13850:32;13909:18;13901:6;13898:30;13895:117;;;13931:79;;:::i;:::-;13895:117;14036:78;14106:7;14097:6;14086:9;14082:22;14036:78;:::i;:::-;14026:88;;13821:303;12532:1599;;;;;;;:::o;14137:472::-;14204:6;14212;14261:2;14249:9;14240:7;14236:23;14232:32;14229:119;;;14267:79;;:::i;:::-;14229:119;14387:1;14412:52;14456:7;14447:6;14436:9;14432:22;14412:52;:::i;:::-;14402:62;;14358:116;14513:2;14539:53;14584:7;14575:6;14564:9;14560:22;14539:53;:::i;:::-;14529:63;;14484:118;14137:472;;;;;:::o;14615:169::-;14699:11;14733:6;14728:3;14721:19;14773:4;14768:3;14764:14;14749:29;;14615:169;;;;:::o;14790:165::-;14930:17;14926:1;14918:6;14914:14;14907:41;14790:165;:::o;14961:366::-;15103:3;15124:67;15188:2;15183:3;15124:67;:::i;:::-;15117:74;;15200:93;15289:3;15200:93;:::i;:::-;15318:2;15313:3;15309:12;15302:19;;14961:366;;;:::o;15333:419::-;15499:4;15537:2;15526:9;15522:18;15514:26;;15586:9;15580:4;15576:20;15572:1;15561:9;15557:17;15550:47;15614:131;15740:4;15614:131;:::i;:::-;15606:139;;15333:419;;;:::o;15758:180::-;15806:77;15803:1;15796:88;15903:4;15900:1;15893:15;15927:4;15924:1;15917:15;15944:194;15984:4;16004:20;16022:1;16004:20;:::i;:::-;15999:25;;16038:20;16056:1;16038:20;:::i;:::-;16033:25;;16082:1;16079;16075:9;16067:17;;16106:1;16100:4;16097:11;16094:37;;;16111:18;;:::i;:::-;16094:37;15944:194;;;;:::o;16144:191::-;16184:3;16203:20;16221:1;16203:20;:::i;:::-;16198:25;;16237:20;16255:1;16237:20;:::i;:::-;16232:25;;16280:1;16277;16273:9;16266:16;;16301:3;16298:1;16295:10;16292:36;;;16308:18;;:::i;:::-;16292:36;16144:191;;;;:::o;16341:180::-;16389:77;16386:1;16379:88;16486:4;16483:1;16476:15;16510:4;16507:1;16500:15;16527:233;16566:3;16589:24;16607:5;16589:24;:::i;:::-;16580:33;;16635:66;16628:5;16625:77;16622:103;;16705:18;;:::i;:::-;16622:103;16752:1;16745:5;16741:13;16734:20;;16527:233;;;:::o;16766:164::-;16906:16;16902:1;16894:6;16890:14;16883:40;16766:164;:::o;16936:366::-;17078:3;17099:67;17163:2;17158:3;17099:67;:::i;:::-;17092:74;;17175:93;17264:3;17175:93;:::i;:::-;17293:2;17288:3;17284:12;17277:19;;16936:366;;;:::o;17308:419::-;17474:4;17512:2;17501:9;17497:18;17489:26;;17561:9;17555:4;17551:20;17547:1;17536:9;17532:17;17525:47;17589:131;17715:4;17589:131;:::i;:::-;17581:139;;17308:419;;;:::o;17733:332::-;17854:4;17892:2;17881:9;17877:18;17869:26;;17905:71;17973:1;17962:9;17958:17;17949:6;17905:71;:::i;:::-;17986:72;18054:2;18043:9;18039:18;18030:6;17986:72;:::i;:::-;17733:332;;;;;:::o;18071:116::-;18141:21;18156:5;18141:21;:::i;:::-;18134:5;18131:32;18121:60;;18177:1;18174;18167:12;18121:60;18071:116;:::o;18193:137::-;18247:5;18278:6;18272:13;18263:22;;18294:30;18318:5;18294:30;:::i;:::-;18193:137;;;;:::o;18336:345::-;18403:6;18452:2;18440:9;18431:7;18427:23;18423:32;18420:119;;;18458:79;;:::i;:::-;18420:119;18578:1;18603:61;18656:7;18647:6;18636:9;18632:22;18603:61;:::i;:::-;18593:71;;18549:125;18336:345;;;;:::o;18687:442::-;18836:4;18874:2;18863:9;18859:18;18851:26;;18887:71;18955:1;18944:9;18940:17;18931:6;18887:71;:::i;:::-;18968:72;19036:2;19025:9;19021:18;19012:6;18968:72;:::i;:::-;19050;19118:2;19107:9;19103:18;19094:6;19050:72;:::i;:::-;18687:442;;;;;;:::o;19135:327::-;19173:3;19192:18;19208:1;19192:18;:::i;:::-;19187:23;;19224:18;19240:1;19224:18;:::i;:::-;19219:23;;19265:1;19262;19258:9;19251:16;;19355:66;19350:3;19346:76;19305:26;19300:3;19296:36;19280:152;19277:178;;;19435:18;;:::i;:::-;19277:178;19135:327;;;;:::o;19468:410::-;19508:7;19531:20;19549:1;19531:20;:::i;:::-;19526:25;;19565:20;19583:1;19565:20;:::i;:::-;19560:25;;19620:1;19617;19613:9;19642:30;19660:11;19642:30;:::i;:::-;19631:41;;19821:1;19812:7;19808:15;19805:1;19802:22;19782:1;19775:9;19755:83;19732:139;;19851:18;;:::i;:::-;19732:139;19516:362;19468:410;;;;:::o;19884:222::-;19977:4;20015:2;20004:9;20000:18;19992:26;;20028:71;20096:1;20085:9;20081:17;20072:6;20028:71;:::i;:::-;19884:222;;;;:::o;20112:143::-;20169:5;20200:6;20194:13;20185:22;;20216:33;20243:5;20216:33;:::i;:::-;20112:143;;;;:::o;20261:351::-;20331:6;20380:2;20368:9;20359:7;20355:23;20351:32;20348:119;;;20386:79;;:::i;:::-;20348:119;20506:1;20531:64;20587:7;20578:6;20567:9;20563:22;20531:64;:::i;:::-;20521:74;;20477:128;20261:351;;;;:::o;20618:60::-;20646:3;20667:5;20660:12;;20618:60;;;:::o;20684:142::-;20734:9;20767:53;20785:34;20794:24;20812:5;20794:24;:::i;:::-;20785:34;:::i;:::-;20767:53;:::i;:::-;20754:66;;20684:142;;;:::o;20832:126::-;20882:9;20915:37;20946:5;20915:37;:::i;:::-;20902:50;;20832:126;;;:::o;20964:146::-;21034:9;21067:37;21098:5;21067:37;:::i;:::-;21054:50;;20964:146;;;:::o;21116:171::-;21223:57;21274:5;21223:57;:::i;:::-;21218:3;21211:70;21116:171;;:::o;21293:112::-;21376:22;21392:5;21376:22;:::i;:::-;21371:3;21364:35;21293:112;;:::o;21411:364::-;21548:4;21586:2;21575:9;21571:18;21563:26;;21599:91;21687:1;21676:9;21672:17;21663:6;21599:91;:::i;:::-;21700:68;21764:2;21753:9;21749:18;21740:6;21700:68;:::i;:::-;21411:364;;;;;:::o;21781:372::-;21922:4;21960:2;21949:9;21945:18;21937:26;;21973:91;22061:1;22050:9;22046:17;22037:6;21973:91;:::i;:::-;22074:72;22142:2;22131:9;22127:18;22118:6;22074:72;:::i;:::-;21781:372;;;;;:::o;22159:139::-;22214:5;22245:6;22239:13;22230:22;;22261:31;22286:5;22261:31;:::i;:::-;22159:139;;;;:::o;22304:347::-;22372:6;22421:2;22409:9;22400:7;22396:23;22392:32;22389:119;;;22427:79;;:::i;:::-;22389:119;22547:1;22572:62;22626:7;22617:6;22606:9;22602:22;22572:62;:::i;:::-;22562:72;;22518:126;22304:347;;;;:::o;22657:180::-;22705:77;22702:1;22695:88;22802:4;22799:1;22792:15;22826:4;22823:1;22816:15;22843:148;22945:11;22982:3;22967:18;;22843:148;;;;:::o;22997:173::-;23137:25;23133:1;23125:6;23121:14;23114:49;22997:173;:::o;23176:402::-;23336:3;23357:85;23439:2;23434:3;23357:85;:::i;:::-;23350:92;;23451:93;23540:3;23451:93;:::i;:::-;23569:2;23564:3;23560:12;23553:19;;23176:402;;;:::o;23584:99::-;23636:6;23670:5;23664:12;23654:22;;23584:99;;;:::o;23689:246::-;23770:1;23780:113;23794:6;23791:1;23788:13;23780:113;;;23879:1;23874:3;23870:11;23864:18;23860:1;23855:3;23851:11;23844:39;23816:2;23813:1;23809:10;23804:15;;23780:113;;;23927:1;23918:6;23913:3;23909:16;23902:27;23751:184;23689:246;;;:::o;23941:390::-;24047:3;24075:39;24108:5;24075:39;:::i;:::-;24130:89;24212:6;24207:3;24130:89;:::i;:::-;24123:96;;24228:65;24286:6;24281:3;24274:4;24267:5;24263:16;24228:65;:::i;:::-;24318:6;24313:3;24309:16;24302:23;;24051:280;23941:390;;;;:::o;24337:167::-;24477:19;24473:1;24465:6;24461:14;24454:43;24337:167;:::o;24510:402::-;24670:3;24691:85;24773:2;24768:3;24691:85;:::i;:::-;24684:92;;24785:93;24874:3;24785:93;:::i;:::-;24903:2;24898:3;24894:12;24887:19;;24510:402;;;:::o;24918:967::-;25300:3;25322:148;25466:3;25322:148;:::i;:::-;25315:155;;25487:95;25578:3;25569:6;25487:95;:::i;:::-;25480:102;;25599:148;25743:3;25599:148;:::i;:::-;25592:155;;25764:95;25855:3;25846:6;25764:95;:::i;:::-;25757:102;;25876:3;25869:10;;24918:967;;;;;:::o;25891:377::-;25979:3;26007:39;26040:5;26007:39;:::i;:::-;26062:71;26126:6;26121:3;26062:71;:::i;:::-;26055:78;;26142:65;26200:6;26195:3;26188:4;26181:5;26177:16;26142:65;:::i;:::-;26232:29;26254:6;26232:29;:::i;:::-;26227:3;26223:39;26216:46;;25983:285;25891:377;;;;:::o;26274:313::-;26387:4;26425:2;26414:9;26410:18;26402:26;;26474:9;26468:4;26464:20;26460:1;26449:9;26445:17;26438:47;26502:78;26575:4;26566:6;26502:78;:::i;:::-;26494:86;;26274:313;;;;:::o;26593:143::-;26650:5;26681:6;26675:13;26666:22;;26697:33;26724:5;26697:33;:::i;:::-;26593:143;;;;:::o;26742:351::-;26812:6;26861:2;26849:9;26840:7;26836:23;26832:32;26829:119;;;26867:79;;:::i;:::-;26829:119;26987:1;27012:64;27068:7;27059:6;27048:9;27044:22;27012:64;:::i;:::-;27002:74;;26958:128;26742:351;;;;:::o;27099:161::-;27220:7;27249:5;27238:16;;27099:161;;;:::o;27266:77::-;27303:7;27332:5;27321:16;;27266:77;;;:::o;27349:92::-;27381:8;27428:5;27425:1;27421:13;27400:34;;27349:92;;;:::o;27447:314::-;27581:9;27614:141;27632:122;27645:108;27747:5;27645:108;:::i;:::-;27632:122;:::i;:::-;27614:141;:::i;:::-;27601:154;;27447:314;;;:::o;27767:299::-;27938:121;28053:5;27938:121;:::i;:::-;27933:3;27926:134;27767:299;;:::o;28072:390::-;28249:4;28287:2;28276:9;28272:18;28264:26;;28300:155;28452:1;28441:9;28437:17;28428:6;28300:155;:::i;:::-;28072:390;;;;:::o;28468:120::-;28529:7;28558:24;28576:5;28558:24;:::i;:::-;28547:35;;28468:120;;;:::o;28594:170::-;28691:48;28733:5;28691:48;:::i;:::-;28684:5;28681:59;28671:87;;28754:1;28751;28744:12;28671:87;28594:170;:::o;28770:191::-;28851:5;28882:6;28876:13;28867:22;;28898:57;28949:5;28898:57;:::i;:::-;28770:191;;;;:::o;28967:399::-;29061:6;29110:2;29098:9;29089:7;29085:23;29081:32;29078:119;;;29116:79;;:::i;:::-;29078:119;29236:1;29261:88;29341:7;29332:6;29321:9;29317:22;29261:88;:::i;:::-;29251:98;;29207:152;28967:399;;;;:::o;29372:180::-;29420:77;29417:1;29410:88;29517:4;29514:1;29507:15;29541:4;29538:1;29531:15;29558:216;29597:4;29617:19;29634:1;29617:19;:::i;:::-;29612:24;;29650:19;29667:1;29650:19;:::i;:::-;29645:24;;29693:1;29690;29686:9;29678:17;;29717:26;29711:4;29708:36;29705:62;;;29747:18;;:::i;:::-;29705:62;29558:216;;;;:::o;29780:171::-;29819:3;29842:24;29860:5;29842:24;:::i;:::-;29833:33;;29888:4;29881:5;29878:15;29875:41;;29896:18;;:::i;:::-;29875:41;29943:1;29936:5;29932:13;29925:20;;29780:171;;;:::o;29957:182::-;30097:34;30093:1;30085:6;30081:14;30074:58;29957:182;:::o;30145:366::-;30287:3;30308:67;30372:2;30367:3;30308:67;:::i;:::-;30301:74;;30384:93;30473:3;30384:93;:::i;:::-;30502:2;30497:3;30493:12;30486:19;;30145:366;;;:::o;30517:419::-;30683:4;30721:2;30710:9;30706:18;30698:26;;30770:9;30764:4;30760:20;30756:1;30745:9;30741:17;30734:47;30798:131;30924:4;30798:131;:::i;:::-;30790:139;;30517:419;;;:::o"},"methodIdentifiers":{"addSuperToken(address)":"22c3a21f","clearBPS()":"795e3425","depositAsset(address,uint256)":"46a5d043","getAssetTotal(address)":"b2419083","getAssetUser(address,address)":"be835747","getBPSData(uint256)":"6ab1c734","getBPSSize()":"a8771ab9","getControlData(address,uint256)":"0b72660d","getFeeBalance(address)":"c78f6803","getMinimumEndDuration()":"6812a173","getMinimumLifespan()":"ca70e1d5","getNewBufferedAppBalance(address,int96)":"4ee43e46","getNewControlNonce(address)":"7f69bcaf","getSBPS(address)":"2357f2cf","getSTBufferDurationInSecond()":"7ea195ad","isBPSEnabled()":"a86c8c7c","isNewFlowRateAllowed(address,int96)":"c467cddc","isSuperTokensSupported(address)":"acff4744","realizeFeeBalance(uint256,address)":"adefe35e","removeSuperToken(address)":"83807889","setBPS(uint16[],uint96[],uint96[],uint256[])":"cb857c80","setMinimumEndDuration(uint256)":"578dc59a","setMinimumLifespan(uint256)":"245b6c93","setSBPS(uint16,address)":"d99d3b69","setSTBufferAmount(uint256)":"487eb939","toggleBPS()":"703ab1b7","withdrawAsset(address,uint256)":"38e4f064","withdrawFeeBalance(address,uint256)":"ebaae661"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ArrayLengthNotMatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractError\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientAssets\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientFeeBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidBasisPoints\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidFlowRateBounds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSuperToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroValue\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"}],\"name\":\"addSuperToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"clearBPS\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"depositAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"}],\"name\":\"getAssetTotal\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"}],\"name\":\"getAssetUser\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tag\",\"type\":\"uint256\"}],\"name\":\"getBPSData\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"},{\"internalType\":\"uint96\",\"name\":\"\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBPSSize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_nonce\",\"type\":\"uint256\"}],\"name\":\"getControlData\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"}],\"name\":\"getFeeBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinimumEndDuration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinimumLifespan\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"},{\"internalType\":\"int96\",\"name\":\"_newFlowRate\",\"type\":\"int96\"}],\"name\":\"getNewBufferedAppBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"}],\"name\":\"getNewControlNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"getSBPS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSTBufferDurationInSecond\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isBPSEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"},{\"internalType\":\"int96\",\"name\":\"_newFlowRate\",\"type\":\"int96\"}],\"name\":\"isNewFlowRateAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"}],\"name\":\"isSuperTokensSupported\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"}],\"name\":\"realizeFeeBalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"}],\"name\":\"removeSuperToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16[]\",\"name\":\"_bpss\",\"type\":\"uint16[]\"},{\"internalType\":\"uint96[]\",\"name\":\"_flowRateLowerBounds\",\"type\":\"uint96[]\"},{\"internalType\":\"uint96[]\",\"name\":\"_flowRateUpperBounds\",\"type\":\"uint96[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_tags\",\"type\":\"uint256[]\"}],\"name\":\"setBPS\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_duration\",\"type\":\"uint256\"}],\"name\":\"setMinimumEndDuration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_duration\",\"type\":\"uint256\"}],\"name\":\"setMinimumLifespan\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_bps\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"setSBPS\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_duration\",\"type\":\"uint256\"}],\"name\":\"setSTBufferAmount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"toggleBPS\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"withdrawAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"withdrawFeeBalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"realizeFeeBalance(uint256,address)\":{\"notice\":\"do external analysis on up to what count flow ended to determine what `count` should be\"},\"setBPS(uint16[],uint96[],uint96[],uint256[])\":{\"notice\":\"- flowRate must be asc value - flowRateUpperBound value of i must be equal flowRateLowerBound value of i+1 eg: array | tag | bound | bps index | | lower | upper | ---------------------------------- 0 | 1 | 0.001 | 0.002 | 4000 (40%) 1 | 2 | 0.002 | 0.003 | 2000 (20%) 2 | 3 | 0.003 | 0.005 | 500 (5%) how to call (eg): first call has tags related to 720p second call has tags related to 1080p\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/facets/core/Control.sol\":\"Control\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"@openzeppelin/contracts/token/ERC777/IERC777.sol\":{\"keccak256\":\"0x385a7061f1436b079d44c140dee9387d5313e94874ff9ee877dc0085c981ac3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c3fe22bb0d9527356e11f267f9187134de4d4ed1ff77468b4d73e3238697b96\",\"dweb:/ipfs/Qmc8caJctgxbzXEpxRogQMR2bnBk5U67hA7kKbUEG2PUXV\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xa4d1d62251f8574deb032a35fc948386a9b4de74b812d4f545a1ac120486b48a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c969013129ba9e651a20735ef659fef6d8a1139ea3607bd4b26ddea2d645634\",\"dweb:/ipfs/QmVhVa6LGuzAcB8qgDtVHRkucn4ihj5UZr8xBLcJkP6ucb\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa1e8e83cd0087785df04ac79fb395d9f3684caeaf973d9e2c71caef723a3a5d6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33bbf48cc069be677705037ba7520c22b1b622c23b33e1a71495f2d36549d40b\",\"dweb:/ipfs/Qmct36zWXv3j7LZB83uwbg7TXwnZSN1fqHNDZ93GG98bGz\"]},\"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol\":{\"keccak256\":\"0x1b588d76f3addfeb2f368ec534fbd8da6120c8ba3c08e95f410a9cc2204faf79\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://74e51ec8a8d50ad9c6c047a2548de4aac9e6da23f65b2d8a74e89665d26c527f\",\"dweb:/ipfs/QmS26ukRAwj9ZSHmRSbjmpmdA6EaZHAK6JvE38LkqjRYaP\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol\":{\"keccak256\":\"0xb68e122faba133422f4cbdd7e15fc913073dfa2c3682c18d6449b121e67d1104\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://da0611fda964b8356d38cb006133865b58adc6e11d3817e27daf20b02ad6880f\",\"dweb:/ipfs/QmeLbak3yiUfkGvxEZzmS4ndDwDfxtZNeKiA86G3WxzjyD\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IInstantDistributionAgreementV1.sol\":{\"keccak256\":\"0x7b088dfa11a00d2b1e6e0938978364a6918015b052a4bf3ffcc67db9b3182370\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://2437f6ea2d8c8de7613aef5de4dcf3530c2beb801f7d5f3e21ac617e73f8882b\",\"dweb:/ipfs/QmVBtqXYV25fQZ9P6xokBzgFnHCBthJSZdFo9quBY169fd\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol\":{\"keccak256\":\"0x80254971aff00fc006d70b85b7bc830bb28096789e72ff3f03aa22cc7810eb0c\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://840f9d959abfbf3919db3dca35336e360b2bbd54e677439a545c7c4f163f6d70\",\"dweb:/ipfs/QmR4CRq7dpYR4NuCSASkNrcnbSScRX8MaEvDs8L7v3xDyr\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol\":{\"keccak256\":\"0x9b4fab6dcac1337f78e04d67d8c2b48b1de8bd4bbf14b475840f9dbda7b8f21e\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://cc2f3629ad0cb46bd4f595880591ad6c9d75a82d920cb9355e462fbf8022c820\",\"dweb:/ipfs/QmXMovxK4qpWT4yffXxUVjkMNwxEfS6mtn39mLSmjaxEdW\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperApp.sol\":{\"keccak256\":\"0x6cc4b0724d977190c7441dfc3be6c6e48b43b555c3370af32ef5b6600f15f53f\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://3e89c944642772a42429f21a11017b57deb98a9198f8e4f8749f00aaee71299e\",\"dweb:/ipfs/QmaSv9GvqikcGHJ3tcwATDHSpQw6mfnHPDtcfqcZSS7LF6\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.sol\":{\"keccak256\":\"0x6860f0bf69dcc1d1ec39eefb43e0cd18b276b48ebe9efd53450e09cd2f997ab2\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://6421f80f2ff7818bd235b7bf4b911cc40edcb598507a246b4de0fa0191a9e1aa\",\"dweb:/ipfs/QmWxktXMjYhi1zt52D3JXNcxCFesXu8kQoSCJQ3j88apM3\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperTokenFactory.sol\":{\"keccak256\":\"0xe2525ef2906504e2f61775ed91bbebeea2f4e2e3fa42ce190561acf6a01187ff\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://7a9859eb432321a65cd15ca988a13776e1c31df44b4cf25f95fa04b54a8a8625\",\"dweb:/ipfs/QmQVJQoeoWemptZhbRgWJZWwMTiNtxVsc1FYmGdtdTfqcL\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol\":{\"keccak256\":\"0xab9dab941f99d0f0ef6125fb6eafde03378d7c3e94e613dd12fb7fbf594c3373\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://928c6ef915dee69058d4cfcb9f2344d4fc78d9763b47b17e5c03fbff64ba3c64\",\"dweb:/ipfs/Qmdk733ZHceatz3qbuodLCCS9TUspJJtXLoX6vWwMvrPDE\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance.sol\":{\"keccak256\":\"0x90a9259d0f0bb6b1bb6d48f051277eb75df96a9fbe684a203a3a468ad19318e2\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://9c8162a2d07ffe768920fef55292684149173afefbfba76b8fca007e55092229\",\"dweb:/ipfs/QmducLNwrzeUXEpBjUTSMu7sfmQEwVhcYXApe4brc1zQ6V\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol\":{\"keccak256\":\"0x9cad3866982902ea88df0874a563d2e4aeba5a5bcc6289c30cccf9b4099d2fb6\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://e8fd960b259331f204c7cb7dcd32b09d68f4294e3b872fad00ad467609c3ef72\",\"dweb:/ipfs/QmeZFEvsDunXQGPbXFfN5AvfKM5am1FY8Xv6e3c4tNKvgY\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo.sol\":{\"keccak256\":\"0x55be78ffb441c782f612b153d7d9049e3f0dbfd412c1f7df29c896b972b2985f\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://a223c68e38a6c9b1e363e525911bc7eda44ea517865ae53bd0d34ff858cc02ae\",\"dweb:/ipfs/QmVruGehibG6Emr2A6JHwUnhd4NzsGkE24cbGqnDpEvrKh\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.sol\":{\"keccak256\":\"0x7456cd394cc905aae7cdbd4601ce1c296c768c13c28e66efbb913cc070bad3e4\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://5a6589b428b724721ba5b4dd196c8f366a6e694ef313add093f29af64496c042\",\"dweb:/ipfs/QmSMgV6y8L6pyyzDz6kKmafVwujNWcjTqutpCBxe4uNRqg\"]},\"contracts/facets/core/Control.sol\":{\"keccak256\":\"0x945c13b2ec3c077ed5cd53e2239126141f0de0955c3c034060c2dc2fd120edc7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://44fcd7b2a8b11abcfc01c58812e0f1b64dcafb320002f639f9f67aca2706436d\",\"dweb:/ipfs/QmZPgtNdSiF4xHM57CxaHj5JjHAJjVfGuSFbJF6jjyLwFV\"]},\"contracts/interfaces/core/IControl.sol\":{\"keccak256\":\"0xbe980059242de4291d9e3816f3ee0d4ad8dde4eb6a842a673315a7f82bd0b8b7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5f3f5807a1c3fd9605ca2769413d69f3e99e914a5f196fd5392cbedb3f779f3d\",\"dweb:/ipfs/QmUjmRwMjioDHcy6hLxeWDV7TgxahNwcty3HbGSywJTd46\"]},\"contracts/libraries/core/LibControl.sol\":{\"keccak256\":\"0x791dd1dc0c61948e1b1a46d190f02a041abdf6e2db26f1b436b06d8116381103\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://ec9343651044d62055789d04d464545afed31f82268dfd17703763a54441e0ec\",\"dweb:/ipfs/QmWKFYUATgubBYLZCRghkenZbjJHQwdQ8ymZVK5xBFm2QJ\"]},\"contracts/libraries/core/LibFlow.sol\":{\"keccak256\":\"0xf07903d54504fd374edbd492a084b92f9b9bd6e39846ecfcb743d9ce3031e2a7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://94b205c755a9c96ec4d8f3631cf24cb255d28b3abc65c7b2580f50a0f3c23f1c\",\"dweb:/ipfs/QmVsrQ3WzkQ9PvckGaBhd2ZDMV56wsPPZcRCGi5Qv9UXmc\"]},\"contracts/libraries/core/LibSession.sol\":{\"keccak256\":\"0x5dc6cfbe8840f7d1aa3c3920c1b7c420f27f7d7c785f4ddcb0b48072aa748648\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1094bf42c4cd9d75155a03b601321fa4d0095db76fb6c0d551cc38de8cd72031\",\"dweb:/ipfs/QmNhuWZFMJvuYUNsEzBkSnZp4hrjpR32VHMkWMTon1Q31u\"]},\"contracts/libraries/utils/IterableMappingBPS.sol\":{\"keccak256\":\"0xb6ab47a53267822918fdd13e4df79bfc1e8b2bbf921c80bbc4ad2e706e3539ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://092d19ac7ce0d7ada8fbb01d3af6822d6d8260fe8b8248e54b906a9edf381dd2\",\"dweb:/ipfs/QmZ8LZ72a2sSNfwm4Fpz54ZHVcjTe1dDy4ZrBhbNztZ1Bg\"]},\"contracts/libraries/utils/LibAccessControl.sol\":{\"keccak256\":\"0xebec727abd5564cc66e0b402d9ceb87168e19d73bd4853b034944b61a420f912\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://5390c191313856ad3f5d863b71d8a9d29a793c73cc6fecd9ef41abff262131a2\",\"dweb:/ipfs/QmUK83c2nwSR1L8M2rADMkJtsaBkADhYN2W3xuoxaQ2eC9\"]}},\"version\":1}"}},"contracts/facets/core/Flow.sol":{"Flow":{"abi":[{"inputs":[],"name":"CallerNotAutobot","type":"error"},{"inputs":[],"name":"HasActiveFlow","type":"error"},{"inputs":[],"name":"InsufficientAppGelatoBalance","type":"error"},{"inputs":[],"name":"InsufficientAppSTBalance","type":"error"},{"inputs":[],"name":"InsufficientFunds","type":"error"},{"inputs":[],"name":"InsufficientLifespan1","type":"error"},{"inputs":[],"name":"InsufficientLifespan2","type":"error"},{"inputs":[],"name":"InsufficientLifespan3","type":"error"},{"inputs":[],"name":"InvalidBalance1","type":"error"},{"inputs":[],"name":"InvalidBalance2","type":"error"},{"inputs":[],"name":"InvalidSuperToken","type":"error"},{"inputs":[],"name":"SessionNotStarted","type":"error"},{"inputs":[],"name":"TooEarly","type":"error"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"},{"internalType":"uint256","name":"_nonce","type":"uint256"}],"name":"closeFlow","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"},{"internalType":"address","name":"_sender","type":"address"},{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"_nonce","type":"uint256"},{"internalType":"int96","name":"_flowRate","type":"int96"}],"name":"decreaseFlow","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"depositSuperToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"address","name":"_superToken","type":"address"}],"name":"getAmountFlowed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"}],"name":"getDepositTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"address","name":"_superToken","type":"address"}],"name":"getDepositUser","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"address","name":"_superToken","type":"address"},{"internalType":"uint256","name":"_nonce","type":"uint256"}],"name":"getFlowData","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"address","name":"_superToken","type":"address"}],"name":"getNewFlowNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"address","name":"_superToken","type":"address"},{"internalType":"int96","name":"_flowRate","type":"int96"}],"name":"getValidSafeLifespan","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"address","name":"_superToken","type":"address"}],"name":"hasActiveFlow","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_viewer","type":"address"},{"internalType":"address","name":"_broadcaster","type":"address"}],"name":"isViewSessionAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"address","name":"_superToken","type":"address"},{"internalType":"uint256","name":"_lifespan","type":"uint256"}],"name":"openFlow","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawSuperToken","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50614fb4806100206000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806354bbc2ad1161008c578063c76474db11610066578063c76474db14610261578063dc5cd1d814610291578063dfc96e1b146102ad578063e32867fc146102c9576100cf565b806354bbc2ad146101cc5780639a5b5f9314610201578063a152ca6f14610231576100cf565b80630197c386146100d45780630dfa0b82146100f057806336fbb025146101205780633870f4a01461013c578063468240a91461016c578063521d3f3c1461019c575b600080fd5b6100ee60048036038101906100e99190613f40565b6102e5565b005b61010a60048036038101906101059190613fb9565b6102fc565b604051610117919061401b565b60405180910390f35b61013a60048036038101906101359190614036565b610312565b005b610156600480360381019061015191906140b1565b61032e565b604051610163919061401b565b60405180910390f35b610186600480360381019061018191906140b1565b610342565b604051610193919061410c565b60405180910390f35b6101b660048036038101906101b191906140b1565b610356565b6040516101c3919061401b565b60405180910390f35b6101e660048036038101906101e19190614127565b61036a565b6040516101f8969594939291906141a2565b60405180910390f35b61021b600480360381019061021691906140b1565b610396565b604051610228919061410c565b60405180910390f35b61024b600480360381019061024691906140b1565b6103aa565b604051610258919061401b565b60405180910390f35b61027b60048036038101906102769190614203565b6103be565b604051610288919061401b565b60405180910390f35b6102ab60048036038101906102a69190613f40565b6103d0565b005b6102c760048036038101906102c29190614127565b6103e7565b005b6102e360048036038101906102de9190613f40565b610db3565b005b6102ee826111d7565b6102f88282611219565b5050565b6000610309848484611399565b90509392505050565b61031a6114e6565b6103278585858585611578565b5050505050565b600061033a83836117d2565b905092915050565b600061034e83836118a5565b905092915050565b600061036283836119a5565b905092915050565b60008060008060008061037e898989611a35565b95509550955095509550955093975093979195509350565b60006103a28383611e1f565b905092915050565b60006103b68383612001565b905092915050565b60006103c982612091565b9050919050565b6103d9826120e3565b6103e38282612127565b5050565b6103f0826120e3565b6103fa3383612376565b61040261269e565b61040b826111d7565b60006104156126eb565b905060006104238585612718565b905060008260010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060010154036104f1576040517f3c2779e500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006104fb6127c9565b905060008360010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060000160009054906101000a9004600b0b90506105ab86826127f6565b60006105b93388888561283a565b905060006105c733896119a5565b9050888460010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550848460010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060020181905550600061073b6128bf565b9050600081600b0160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508a82600c0160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508682600c0160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000838152602001908152602001600020600101819055504282600c0160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060020181905550808660010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008581526020019081526020016000206000018190555061096f8a338d86896128ec565b60006040518060400160405280600267ffffffffffffffff81111561099757610996614230565b5b6040519080825280602002602001820160405280156109c55781602001602082028036833780820191505090505b508152602001600167ffffffffffffffff8111156109e6576109e5614230565b5b604051908082528060200260200182016040528015610a1957816020015b6060815260200190600190039081610a045790505b50815250905060018160000151600081518110610a3957610a3861425f565b5b60200260200101906003811115610a5357610a5261428e565b5b90816003811115610a6757610a6661428e565b5b8152505060038160000151600181518110610a8557610a8461425f565b5b60200260200101906003811115610a9f57610a9e61428e565b5b90816003811115610ab357610ab261428e565b5b81525050610acc8542610ac691906142ec565b86612a3b565b8160200151600081518110610ae457610ae361425f565b5b602002602001018190525060006336fbb02560e01b8c338f888b604051602401610b1295949392919061432f565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050610b79612a67565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633323b46730838560006040518563ffffffff1660e01b8152600401610bdc9493929190614659565b6020604051808303816000875af1158015610bfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1f91906146d8565b8860010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008781526020019081526020016000206005018190555060018860000160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d4491906142ec565b92505081905550600184600b0160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d9d91906142ec565b9250508190555050505050505050505050505050565b6000610dbd6127c9565b90506000610dc96128bf565b600701548260010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085815260200190815260200160002060030154610e6a91906142ec565b905080421015610ea6576040517f085de62500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610eae612a67565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ee8ca3b58360010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000868152602001908152602001600020600501546040518263ffffffff1660e01b8152600401610f9c9190614705565b600060405180830381600087803b158015610fb657600080fd5b505af1158015610fca573d6000803e3d6000fd5b5050505060008260010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008360010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008681526020019081526020016000206002015490506111cf8633848861112b6126eb565b60010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087815260200190815260200160002060000160009054906101000a9004600b0b611578565b505050505050565b6111e081612a94565b611216576040517f334ae3e600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b8173ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b815260040161125693929190614720565b6020604051808303816000875af1158015611275573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112999190614783565b50806112a36127c9565b60020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461132f91906142ec565b925050819055508061133f6127c9565b60030160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461138e91906142ec565b925050819055505050565b600080826bffffffffffffffffffffffff166113b36127c9565b60020160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461143b91906147df565b905060006114476128bf565b90508060060154821015611487576040517fcdd3529e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008160060154836114999190614810565b905081600701548110156114d9576040517f6c451f0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8093505050509392505050565b6114ee612a67565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611576576040517fb5e0b29200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600085905060006115aa30868473ffffffffffffffffffffffffffffffffffffffff16612af39092919063ffffffff16565b9050600083826115ba9190614844565b600b0b136115f3576115ed30868473ffffffffffffffffffffffffffffffffffffffff16612b939092919063ffffffff16565b5061162b565b6116298584836116039190614844565b8473ffffffffffffffffffffffffffffffffffffffff16612d469092919063ffffffff16565b505b426116346127c9565b60010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008681526020019081526020016000206004018190555060006116d36127c9565b60010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000868152602001908152602001600020600001549050426117706128bf565b600c0160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000838152602001908152602001600020600301819055505050505050505050565b60008060006117e18585612ef9565b905060008060008060006117f68a8a88611a35565b955050945094509450945060008061180f878c88612faa565b93505092505082156118245760009850611893565b600084146118585784846118389190614810565b826bffffffffffffffffffffffff1661185191906148a8565b9850611892565b6000811461188c57848161186c9190614810565b826bffffffffffffffffffffffff1661188591906148a8565b9850611891565b600098505b5b5b88995050505050505050505092915050565b6000806118b284846119a5565b905060008111156119995760006118d685856001856118d19190614810565b61324e565b935050505060006118e56127c9565b60010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001856119719190614810565b8152602001908152602001600020600401541480156119905750600081145b9250505061199f565b60009150505b92915050565b60006119af6127c9565b60000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600080600080600080611a466127c9565b60010160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611b006127c9565b60010160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600089815260200190815260200160002060020154611b9a6127c9565b60010160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a815260200190815260200160002060030154611c346127c9565b60010160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008b815260200190815260200160002060040154611cce6127c9565b60010160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c815260200190815260200160002060050154611d686127c9565b60010160008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d815260200190815260200160002060060160009054906101000a900460ff1695509550955095509550955093975093979195509350565b6000806000611e2d846133cd565b915091506000821480611e4257506000815111155b15611e5257600092505050611ffb565b60005b8151811015611ff3576000611e8486848481518110611e7757611e7661425f565b5b6020026020010151612718565b9050600080611eae88868681518110611ea057611e9f61425f565b5b602002602001015185612faa565b935093505050858214611eca5760009650505050505050611ffb565b60008114611ee15760009650505050505050611ffb565b6000611f078a878781518110611efa57611ef961425f565b5b6020026020010151612ef9565b9050600080600080611f348e8b8b81518110611f2657611f2561425f565b5b602002602001015187611a35565b505093509350935093508c73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611f855760009b505050505050505050505050611ffb565b878314611fa05760009b505050505050505050505050611ffb565b8a821015611fbc5760009b505050505050505050505050611ffb565b60008114611fd85760009b505050505050505050505050611ffb565b50505050505050508080611feb906148ea565b915050611e55565b506001925050505b92915050565b600061200b6127c9565b60020160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600061209b6127c9565b60030160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6120ed33826118a5565b15612124576040517fd18923ab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6121313383612376565b600061213b6127c9565b60020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156121f5576040517f356680b700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816121fe6127c9565b60020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461228a9190614810565b925050819055508161229a6127c9565b60030160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546122e99190614810565b925050819055508273ffffffffffffffffffffffffffffffffffffffff166323b872dd3033856040518463ffffffff1660e01b815260040161232d93929190614720565b6020604051808303816000875af115801561234c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123709190614783565b50505050565b600061238283836117d2565b90508061238d6127c9565b60020160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124199190614810565b92505081905550806124296127c9565b60030160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124789190614810565b9250508190555060006124896127c9565b60020160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561253f576040517f0a2005fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006125496127c9565b60030160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156125c2576040517f2fe0888f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006125ce84846119a5565b905060008111156126985760016125e36127c9565b60010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060018461266f9190614810565b815260200190815260200160002060060160006101000a81548160ff0219169083151502179055505b50505050565b6126a6612a67565b600301546126b26134f9565b116126e9576040517fa426119900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6000807f9cd9afe22fea86221d6e8117226b65bb0e2af8c4f5b8abf255fb0afcad4a3a9c90508091505090565b6000806127236126eb565b60000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081146127bd576001816127b89190614810565b6127c0565b60005b91505092915050565b6000807f2da2adfb54fd91bfb31e0d805792077ddcd5b0427b14a56397e2f3cc190c883090508091505090565b61280082826135bb565b612836576040517f1824866a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b600080612848868685611399565b905060006128546128bf565b90508060070154816006015461286a91906142ec565b8510156128a3576040517f3661e75b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818510156128b157846128b3565b815b92505050949350505050565b6000807f2f7ed27098ecefe70183ee38ae4542dee65215b0786f6870871034402cfe2cc990508091505090565b6000859050600061291e30868473ffffffffffffffffffffffffffffffffffffffff16612af39092919063ffffffff16565b9050600081600b0b1361295c5761295685848473ffffffffffffffffffffffffffffffffffffffff1661364f9092919063ffffffff16565b50612994565b61299285848361296c9190614932565b8473ffffffffffffffffffffffffffffffffffffffff16612d469092919063ffffffff16565b505b4261299d6127c9565b60010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008681526020019081526020016000206003018190555050505050505050565b60608282604051602001612a509291906149c1565b604051602081830303815290604052905092915050565b6000807fde06769ca6d80a022439e234eebb61c3801d652175b62f912d6f8cac7b881c6590508091505090565b6000612a9e6128bf565b60090160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080612aff85613802565b9150508073ffffffffffffffffffffffffffffffffffffffff1663e6a1e8888686866040518463ffffffff1660e01b8152600401612b3f93929190614a49565b608060405180830381865afa158015612b5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b809190614aaa565b9091925090505080925050509392505050565b6000806000612ba186613a43565b915091508173ffffffffffffffffffffffffffffffffffffffff166339255d5b828373ffffffffffffffffffffffffffffffffffffffff1663b4b333c68a8a8a600067ffffffffffffffff811115612bfc57612bfb614230565b5b6040519080825280601f01601f191660200182016040528015612c2e5781602001600182028036833780820191505090505b50604051602401612c429493929190614b11565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050600067ffffffffffffffff811115612c9f57612c9e614230565b5b6040519080825280601f01601f191660200182016040528015612cd15781602001600182028036833780820191505090505b506040518463ffffffff1660e01b8152600401612cf093929190614b7e565b6000604051808303816000875af1158015612d0f573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190612d389190614cba565b506001925050509392505050565b6000806000612d5486613a43565b915091508173ffffffffffffffffffffffffffffffffffffffff166339255d5b828373ffffffffffffffffffffffffffffffffffffffff166350209a628a8a8a600067ffffffffffffffff811115612daf57612dae614230565b5b6040519080825280601f01601f191660200182016040528015612de15781602001600182028036833780820191505090505b50604051602401612df59493929190614d03565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050600067ffffffffffffffff811115612e5257612e51614230565b5b6040519080825280601f01601f191660200182016040528015612e845781602001600182028036833780820191505090505b506040518463ffffffff1660e01b8152600401612ea393929190614b7e565b6000604051808303816000875af1158015612ec2573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190612eeb9190614cba565b506001925050509392505050565b600080612f046127c9565b60000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008114612f9e57600181612f999190614810565b612fa1565b60005b91505092915050565b600080600080612fb86126eb565b60010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600086815260200190815260200160002060000160009054906101000a9004600b0b61305f6126eb565b60010160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878152602001908152602001600020600001600c9054906101000a90046bffffffffffffffffffffffff166131116126eb565b60010160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000888152602001908152602001600020600101546131ab6126eb565b60010160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600089815260200190815260200160002060020154935093509350935093509350935093565b600080600080600061325e6127c9565b905060008160010160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008260010160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008981526020019081526020016000206002015490506133b9828a83612faa565b965096509650965050505093509350935093565b600060606133d96126eb565b60020160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546134256126eb565b60020160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101808054806020026020016040519081016040528092919081815260200182805480156134e957602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161349f575b5050505050905091509150915091565b6000613503612a67565b60010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b47064c83073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6040518363ffffffff1660e01b8152600401613575929190614d4f565b602060405180830381865afa158015613592573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135b69190614d78565b905090565b6000808373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016135f79190614da5565b602060405180830381865afa158015613614573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136389190614d78565b90506136448484613cca565b811191505092915050565b600080600061365d86613a43565b915091508173ffffffffffffffffffffffffffffffffffffffff166339255d5b828373ffffffffffffffffffffffffffffffffffffffff166362fc305e8a8a8a600067ffffffffffffffff8111156136b8576136b7614230565b5b6040519080825280601f01601f1916602001820160405280156136ea5781602001600182028036833780820191505090505b506040516024016136fe9493929190614d03565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050600067ffffffffffffffff81111561375b5761375a614230565b5b6040519080825280601f01601f19166020018201604052801561378d5781602001600182028036833780820191505090505b506040518463ffffffff1660e01b81526004016137ac93929190614b7e565b6000604051808303816000875af11580156137cb573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906137f49190614cba565b506001925050509392505050565b6000807f65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea8375491507fb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a549050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036139c457600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613927578273ffffffffffffffffffffffffffffffffffffffff166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015613900573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139249190614dd5565b91505b8173ffffffffffffffffffffffffffffffffffffffff1663b6d200de7fa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd36040518263ffffffff1660e01b81526004016139809190614e4a565b602060405180830381865afa15801561399d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139c19190614ea3565b90505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613a0157613a00614ed0565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613a3e57613a3d614ed0565b5b915091565b6000807f65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea8375491507fb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a549050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613c4b57600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613b68578273ffffffffffffffffffffffffffffffffffffffff166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b659190614dd5565b91505b8173ffffffffffffffffffffffffffffffffffffffff1663b6d200de7fa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd36040518263ffffffff1660e01b8152600401613bc19190614e4a565b602060405180830381865afa158015613bde573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c029190614ea3565b9050817f65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea83755807fb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a555b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613c8857613c87614ed0565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613cc557613cc4614ed0565b5b915091565b6000808390506000613cfb848373ffffffffffffffffffffffffffffffffffffffff16613d7090919063ffffffff16565b90506000613d28308473ffffffffffffffffffffffffffffffffffffffff16613e0490919063ffffffff16565b9050613d326128bf565b600801548582613d429190614932565b6bffffffffffffffffffffffff16613d5a91906148a8565b82613d6591906142ec565b935050505092915050565b600080613d7c84613802565b9150508073ffffffffffffffffffffffffffffffffffffffff16638d997f6e85856040518363ffffffff1660e01b8152600401613dba929190614eff565b602060405180830381865afa158015613dd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dfb9190614d78565b91505092915050565b600080613e1084613802565b9150508073ffffffffffffffffffffffffffffffffffffffff1663e8e7e2d185856040518363ffffffff1660e01b8152600401613e4e929190614f28565b602060405180830381865afa158015613e6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e8f9190614f51565b91505092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613ed782613eac565b9050919050565b613ee781613ecc565b8114613ef257600080fd5b50565b600081359050613f0481613ede565b92915050565b6000819050919050565b613f1d81613f0a565b8114613f2857600080fd5b50565b600081359050613f3a81613f14565b92915050565b60008060408385031215613f5757613f56613ea2565b5b6000613f6585828601613ef5565b9250506020613f7685828601613f2b565b9150509250929050565b600081600b0b9050919050565b613f9681613f80565b8114613fa157600080fd5b50565b600081359050613fb381613f8d565b92915050565b600080600060608486031215613fd257613fd1613ea2565b5b6000613fe086828701613ef5565b9350506020613ff186828701613ef5565b925050604061400286828701613fa4565b9150509250925092565b61401581613f0a565b82525050565b6000602082019050614030600083018461400c565b92915050565b600080600080600060a0868803121561405257614051613ea2565b5b600061406088828901613ef5565b955050602061407188828901613ef5565b945050604061408288828901613ef5565b935050606061409388828901613f2b565b92505060806140a488828901613fa4565b9150509295509295909350565b600080604083850312156140c8576140c7613ea2565b5b60006140d685828601613ef5565b92505060206140e785828601613ef5565b9150509250929050565b60008115159050919050565b614106816140f1565b82525050565b600060208201905061412160008301846140fd565b92915050565b6000806000606084860312156141405761413f613ea2565b5b600061414e86828701613ef5565b935050602061415f86828701613ef5565b925050604061417086828701613f2b565b9150509250925092565b61418381613ecc565b82525050565b6000819050919050565b61419c81614189565b82525050565b600060c0820190506141b7600083018961417a565b6141c4602083018861400c565b6141d1604083018761400c565b6141de606083018661400c565b6141eb6080830185614193565b6141f860a08301846140fd565b979650505050505050565b60006020828403121561421957614218613ea2565b5b600061422784828501613ef5565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006142f782613f0a565b915061430283613f0a565b925082820190508082111561431a576143196142bd565b5b92915050565b61432981613f80565b82525050565b600060a082019050614344600083018861417a565b614351602083018761417a565b61435e604083018661417a565b61436b606083018561400c565b6143786080830184614320565b9695505050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156143bc5780820151818401526020810190506143a1565b60008484015250505050565b6000601f19601f8301169050919050565b60006143e482614382565b6143ee818561438d565b93506143fe81856020860161439e565b614407816143c8565b840191505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6004811061444f5761444e61428e565b5b50565b60008190506144608261443e565b919050565b600061447082614452565b9050919050565b61448081614465565b82525050565b60006144928383614477565b60208301905092915050565b6000602082019050919050565b60006144b682614412565b6144c0818561441d565b93506144cb8361442e565b8060005b838110156144fc5781516144e38882614486565b97506144ee8361449e565b9250506001810190506144cf565b5085935050505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600082825260208201905092915050565b600061455182614382565b61455b8185614535565b935061456b81856020860161439e565b614574816143c8565b840191505092915050565b600061458b8383614546565b905092915050565b6000602082019050919050565b60006145ab82614509565b6145b58185614514565b9350836020820285016145c785614525565b8060005b8581101561460357848403895281516145e4858261457f565b94506145ef83614593565b925060208a019950506001810190506145cb565b50829750879550505050505092915050565b6000604083016000830151848203600086015261463282826144ab565b9150506020830151848203602086015261464c82826145a0565b9150508091505092915050565b600060808201905061466e600083018761417a565b818103602083015261468081866143d9565b905081810360408301526146948185614615565b90506146a3606083018461417a565b95945050505050565b6146b581614189565b81146146c057600080fd5b50565b6000815190506146d2816146ac565b92915050565b6000602082840312156146ee576146ed613ea2565b5b60006146fc848285016146c3565b91505092915050565b600060208201905061471a6000830184614193565b92915050565b6000606082019050614735600083018661417a565b614742602083018561417a565b61474f604083018461400c565b949350505050565b614760816140f1565b811461476b57600080fd5b50565b60008151905061477d81614757565b92915050565b60006020828403121561479957614798613ea2565b5b60006147a78482850161476e565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006147ea82613f0a565b91506147f583613f0a565b925082614805576148046147b0565b5b828204905092915050565b600061481b82613f0a565b915061482683613f0a565b925082820390508181111561483e5761483d6142bd565b5b92915050565b600061484f82613f80565b915061485a83613f80565b925082820390506b7fffffffffffffffffffffff81137fffffffffffffffffffffffffffffffffffffffff800000000000000000000000821217156148a2576148a16142bd565b5b92915050565b60006148b382613f0a565b91506148be83613f0a565b92508282026148cc81613f0a565b915082820484148315176148e3576148e26142bd565b5b5092915050565b60006148f582613f0a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614927576149266142bd565b5b600182019050919050565b600061493d82613f80565b915061494883613f80565b925082820190507fffffffffffffffffffffffffffffffffffffffff80000000000000000000000081126b7fffffffffffffffffffffff821317156149905761498f6142bd565b5b92915050565b60006fffffffffffffffffffffffffffffffff82169050919050565b6149bb81614996565b82525050565b60006040820190506149d660008301856149b2565b6149e360208301846149b2565b9392505050565b6000819050919050565b6000614a0f614a0a614a0584613eac565b6149ea565b613eac565b9050919050565b6000614a21826149f4565b9050919050565b6000614a3382614a16565b9050919050565b614a4381614a28565b82525050565b6000606082019050614a5e6000830186614a3a565b614a6b602083018561417a565b614a78604083018461417a565b949350505050565b600081519050614a8f81613f14565b92915050565b600081519050614aa481613f8d565b92915050565b60008060008060808587031215614ac457614ac3613ea2565b5b6000614ad287828801614a80565b9450506020614ae387828801614a95565b9350506040614af487828801614a80565b9250506060614b0587828801614a80565b91505092959194509250565b6000608082019050614b266000830187614a3a565b614b33602083018661417a565b614b40604083018561417a565b8181036060830152614b5281846143d9565b905095945050505050565b6000614b6882614a16565b9050919050565b614b7881614b5d565b82525050565b6000606082019050614b936000830186614b6f565b8181036020830152614ba581856143d9565b90508181036040830152614bb981846143d9565b9050949350505050565b600080fd5b600080fd5b614bd6826143c8565b810181811067ffffffffffffffff82111715614bf557614bf4614230565b5b80604052505050565b6000614c08613e98565b9050614c148282614bcd565b919050565b600067ffffffffffffffff821115614c3457614c33614230565b5b614c3d826143c8565b9050602081019050919050565b6000614c5d614c5884614c19565b614bfe565b905082815260208101848484011115614c7957614c78614bc8565b5b614c8484828561439e565b509392505050565b600082601f830112614ca157614ca0614bc3565b5b8151614cb1848260208601614c4a565b91505092915050565b600060208284031215614cd057614ccf613ea2565b5b600082015167ffffffffffffffff811115614cee57614ced613ea7565b5b614cfa84828501614c8c565b91505092915050565b6000608082019050614d186000830187614a3a565b614d25602083018661417a565b614d326040830185614320565b8181036060830152614d4481846143d9565b905095945050505050565b6000604082019050614d64600083018561417a565b614d71602083018461417a565b9392505050565b600060208284031215614d8e57614d8d613ea2565b5b6000614d9c84828501614a80565b91505092915050565b6000602082019050614dba600083018461417a565b92915050565b600081519050614dcf81613ede565b92915050565b600060208284031215614deb57614dea613ea2565b5b6000614df984828501614dc0565b91505092915050565b6000819050919050565b60008160001b9050919050565b6000614e34614e2f614e2a84614e02565b614e0c565b614189565b9050919050565b614e4481614e19565b82525050565b6000602082019050614e5f6000830184614e3b565b92915050565b6000614e7082613ecc565b9050919050565b614e8081614e65565b8114614e8b57600080fd5b50565b600081519050614e9d81614e77565b92915050565b600060208284031215614eb957614eb8613ea2565b5b6000614ec784828501614e8e565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000604082019050614f146000830185614a3a565b614f216020830184614320565b9392505050565b6000604082019050614f3d6000830185614a3a565b614f4a602083018461417a565b9392505050565b600060208284031215614f6757614f66613ea2565b5b6000614f7584828501614a95565b9150509291505056fea26469706673582212201dce8b857275c446b38b2fd0190c291b939a9d8728ca09a3c4be594a1d5f303264736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4FB4 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xCF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x54BBC2AD GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xC76474DB GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xC76474DB EQ PUSH2 0x261 JUMPI DUP1 PUSH4 0xDC5CD1D8 EQ PUSH2 0x291 JUMPI DUP1 PUSH4 0xDFC96E1B EQ PUSH2 0x2AD JUMPI DUP1 PUSH4 0xE32867FC EQ PUSH2 0x2C9 JUMPI PUSH2 0xCF JUMP JUMPDEST DUP1 PUSH4 0x54BBC2AD EQ PUSH2 0x1CC JUMPI DUP1 PUSH4 0x9A5B5F93 EQ PUSH2 0x201 JUMPI DUP1 PUSH4 0xA152CA6F EQ PUSH2 0x231 JUMPI PUSH2 0xCF JUMP JUMPDEST DUP1 PUSH4 0x197C386 EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0xDFA0B82 EQ PUSH2 0xF0 JUMPI DUP1 PUSH4 0x36FBB025 EQ PUSH2 0x120 JUMPI DUP1 PUSH4 0x3870F4A0 EQ PUSH2 0x13C JUMPI DUP1 PUSH4 0x468240A9 EQ PUSH2 0x16C JUMPI DUP1 PUSH4 0x521D3F3C EQ PUSH2 0x19C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEE PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xE9 SWAP2 SWAP1 PUSH2 0x3F40 JUMP JUMPDEST PUSH2 0x2E5 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x10A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x105 SWAP2 SWAP1 PUSH2 0x3FB9 JUMP JUMPDEST PUSH2 0x2FC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x117 SWAP2 SWAP1 PUSH2 0x401B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x13A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x135 SWAP2 SWAP1 PUSH2 0x4036 JUMP JUMPDEST PUSH2 0x312 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x156 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x151 SWAP2 SWAP1 PUSH2 0x40B1 JUMP JUMPDEST PUSH2 0x32E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x163 SWAP2 SWAP1 PUSH2 0x401B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x186 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x181 SWAP2 SWAP1 PUSH2 0x40B1 JUMP JUMPDEST PUSH2 0x342 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x193 SWAP2 SWAP1 PUSH2 0x410C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1B1 SWAP2 SWAP1 PUSH2 0x40B1 JUMP JUMPDEST PUSH2 0x356 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1C3 SWAP2 SWAP1 PUSH2 0x401B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1E6 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1E1 SWAP2 SWAP1 PUSH2 0x4127 JUMP JUMPDEST PUSH2 0x36A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1F8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x41A2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x21B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x216 SWAP2 SWAP1 PUSH2 0x40B1 JUMP JUMPDEST PUSH2 0x396 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x228 SWAP2 SWAP1 PUSH2 0x410C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x24B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x246 SWAP2 SWAP1 PUSH2 0x40B1 JUMP JUMPDEST PUSH2 0x3AA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x258 SWAP2 SWAP1 PUSH2 0x401B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x27B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x276 SWAP2 SWAP1 PUSH2 0x4203 JUMP JUMPDEST PUSH2 0x3BE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x288 SWAP2 SWAP1 PUSH2 0x401B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2AB PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2A6 SWAP2 SWAP1 PUSH2 0x3F40 JUMP JUMPDEST PUSH2 0x3D0 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2C7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2C2 SWAP2 SWAP1 PUSH2 0x4127 JUMP JUMPDEST PUSH2 0x3E7 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2E3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2DE SWAP2 SWAP1 PUSH2 0x3F40 JUMP JUMPDEST PUSH2 0xDB3 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2EE DUP3 PUSH2 0x11D7 JUMP JUMPDEST PUSH2 0x2F8 DUP3 DUP3 PUSH2 0x1219 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x309 DUP5 DUP5 DUP5 PUSH2 0x1399 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x31A PUSH2 0x14E6 JUMP JUMPDEST PUSH2 0x327 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x1578 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x33A DUP4 DUP4 PUSH2 0x17D2 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x34E DUP4 DUP4 PUSH2 0x18A5 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x362 DUP4 DUP4 PUSH2 0x19A5 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x37E DUP10 DUP10 DUP10 PUSH2 0x1A35 JUMP JUMPDEST SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 POP SWAP4 SWAP8 POP SWAP4 SWAP8 SWAP2 SWAP6 POP SWAP4 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A2 DUP4 DUP4 PUSH2 0x1E1F JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B6 DUP4 DUP4 PUSH2 0x2001 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C9 DUP3 PUSH2 0x2091 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3D9 DUP3 PUSH2 0x20E3 JUMP JUMPDEST PUSH2 0x3E3 DUP3 DUP3 PUSH2 0x2127 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x3F0 DUP3 PUSH2 0x20E3 JUMP JUMPDEST PUSH2 0x3FA CALLER DUP4 PUSH2 0x2376 JUMP JUMPDEST PUSH2 0x402 PUSH2 0x269E JUMP JUMPDEST PUSH2 0x40B DUP3 PUSH2 0x11D7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x415 PUSH2 0x26EB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x423 DUP6 DUP6 PUSH2 0x2718 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x1 ADD PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD SLOAD SUB PUSH2 0x4F1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x3C2779E500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4FB PUSH2 0x27C9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x1 ADD PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xB SIGNEXTEND SWAP1 POP PUSH2 0x5AB DUP7 DUP3 PUSH2 0x27F6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5B9 CALLER DUP9 DUP9 DUP6 PUSH2 0x283A JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x5C7 CALLER DUP10 PUSH2 0x19A5 JUMP JUMPDEST SWAP1 POP DUP9 DUP5 PUSH1 0x1 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP5 DUP5 PUSH1 0x1 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD DUP2 SWAP1 SSTORE POP PUSH1 0x0 PUSH2 0x73B PUSH2 0x28BF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0xB ADD PUSH1 0x0 DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP11 DUP3 PUSH1 0xC ADD PUSH1 0x0 DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP7 DUP3 PUSH1 0xC ADD PUSH1 0x0 DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP TIMESTAMP DUP3 PUSH1 0xC ADD PUSH1 0x0 DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD DUP2 SWAP1 SSTORE POP DUP1 DUP7 PUSH1 0x1 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP2 SWAP1 SSTORE POP PUSH2 0x96F DUP11 CALLER DUP14 DUP7 DUP10 PUSH2 0x28EC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x997 JUMPI PUSH2 0x996 PUSH2 0x4230 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x9C5 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x9E6 JUMPI PUSH2 0x9E5 PUSH2 0x4230 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xA19 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xA04 JUMPI SWAP1 POP JUMPDEST POP DUP2 MSTORE POP SWAP1 POP PUSH1 0x1 DUP2 PUSH1 0x0 ADD MLOAD PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xA39 JUMPI PUSH2 0xA38 PUSH2 0x425F JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xA53 JUMPI PUSH2 0xA52 PUSH2 0x428E JUMP JUMPDEST JUMPDEST SWAP1 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xA67 JUMPI PUSH2 0xA66 PUSH2 0x428E JUMP JUMPDEST JUMPDEST DUP2 MSTORE POP POP PUSH1 0x3 DUP2 PUSH1 0x0 ADD MLOAD PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0xA85 JUMPI PUSH2 0xA84 PUSH2 0x425F JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xA9F JUMPI PUSH2 0xA9E PUSH2 0x428E JUMP JUMPDEST JUMPDEST SWAP1 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xAB3 JUMPI PUSH2 0xAB2 PUSH2 0x428E JUMP JUMPDEST JUMPDEST DUP2 MSTORE POP POP PUSH2 0xACC DUP6 TIMESTAMP PUSH2 0xAC6 SWAP2 SWAP1 PUSH2 0x42EC JUMP JUMPDEST DUP7 PUSH2 0x2A3B JUMP JUMPDEST DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xAE4 JUMPI PUSH2 0xAE3 PUSH2 0x425F JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP PUSH1 0x0 PUSH4 0x36FBB025 PUSH1 0xE0 SHL DUP13 CALLER DUP16 DUP9 DUP12 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0xB12 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x432F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP SWAP1 POP PUSH2 0xB79 PUSH2 0x2A67 JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x3323B467 ADDRESS DUP4 DUP6 PUSH1 0x0 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBDC SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4659 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0xBFB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC1F SWAP2 SWAP1 PUSH2 0x46D8 JUMP JUMPDEST DUP9 PUSH1 0x1 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP15 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x5 ADD DUP2 SWAP1 SSTORE POP PUSH1 0x1 DUP9 PUSH1 0x0 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP15 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xD44 SWAP2 SWAP1 PUSH2 0x42EC JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 DUP5 PUSH1 0xB ADD PUSH1 0x0 DUP15 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xD9D SWAP2 SWAP1 PUSH2 0x42EC JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDBD PUSH2 0x27C9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xDC9 PUSH2 0x28BF JUMP JUMPDEST PUSH1 0x7 ADD SLOAD DUP3 PUSH1 0x1 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD SLOAD PUSH2 0xE6A SWAP2 SWAP1 PUSH2 0x42EC JUMP JUMPDEST SWAP1 POP DUP1 TIMESTAMP LT ISZERO PUSH2 0xEA6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x85DE62500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xEAE PUSH2 0x2A67 JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xEE8CA3B5 DUP4 PUSH1 0x1 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x5 ADD SLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF9C SWAP2 SWAP1 PUSH2 0x4705 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFCA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 DUP3 PUSH1 0x1 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x1 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP1 POP PUSH2 0x11CF DUP7 CALLER DUP5 DUP9 PUSH2 0x112B PUSH2 0x26EB JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xB SIGNEXTEND PUSH2 0x1578 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x11E0 DUP2 PUSH2 0x2A94 JUMP JUMPDEST PUSH2 0x1216 JUMPI PUSH1 0x40 MLOAD PUSH32 0x334AE3E600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x23B872DD CALLER ADDRESS DUP5 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1256 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4720 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1275 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1299 SWAP2 SWAP1 PUSH2 0x4783 JUMP JUMPDEST POP DUP1 PUSH2 0x12A3 PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x2 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x132F SWAP2 SWAP1 PUSH2 0x42EC JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 PUSH2 0x133F PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x3 ADD PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x138E SWAP2 SWAP1 PUSH2 0x42EC JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x13B3 PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x2 ADD PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x143B SWAP2 SWAP1 PUSH2 0x47DF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1447 PUSH2 0x28BF JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x6 ADD SLOAD DUP3 LT ISZERO PUSH2 0x1487 JUMPI PUSH1 0x40 MLOAD PUSH32 0xCDD3529E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x6 ADD SLOAD DUP4 PUSH2 0x1499 SWAP2 SWAP1 PUSH2 0x4810 JUMP JUMPDEST SWAP1 POP DUP2 PUSH1 0x7 ADD SLOAD DUP2 LT ISZERO PUSH2 0x14D9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x6C451F0C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP4 POP POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x14EE PUSH2 0x2A67 JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1576 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB5E0B29200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP6 SWAP1 POP PUSH1 0x0 PUSH2 0x15AA ADDRESS DUP7 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2AF3 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 DUP3 PUSH2 0x15BA SWAP2 SWAP1 PUSH2 0x4844 JUMP JUMPDEST PUSH1 0xB SIGNEXTEND SGT PUSH2 0x15F3 JUMPI PUSH2 0x15ED ADDRESS DUP7 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2B93 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP PUSH2 0x162B JUMP JUMPDEST PUSH2 0x1629 DUP6 DUP5 DUP4 PUSH2 0x1603 SWAP2 SWAP1 PUSH2 0x4844 JUMP JUMPDEST DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2D46 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP JUMPDEST TIMESTAMP PUSH2 0x1634 PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD DUP2 SWAP1 SSTORE POP PUSH1 0x0 PUSH2 0x16D3 PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD SLOAD SWAP1 POP TIMESTAMP PUSH2 0x1770 PUSH2 0x28BF JUMP JUMPDEST PUSH1 0xC ADD PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD DUP2 SWAP1 SSTORE POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x17E1 DUP6 DUP6 PUSH2 0x2EF9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x17F6 DUP11 DUP11 DUP9 PUSH2 0x1A35 JUMP JUMPDEST SWAP6 POP POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP PUSH1 0x0 DUP1 PUSH2 0x180F DUP8 DUP13 DUP9 PUSH2 0x2FAA JUMP JUMPDEST SWAP4 POP POP SWAP3 POP POP DUP3 ISZERO PUSH2 0x1824 JUMPI PUSH1 0x0 SWAP9 POP PUSH2 0x1893 JUMP JUMPDEST PUSH1 0x0 DUP5 EQ PUSH2 0x1858 JUMPI DUP5 DUP5 PUSH2 0x1838 SWAP2 SWAP1 PUSH2 0x4810 JUMP JUMPDEST DUP3 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1851 SWAP2 SWAP1 PUSH2 0x48A8 JUMP JUMPDEST SWAP9 POP PUSH2 0x1892 JUMP JUMPDEST PUSH1 0x0 DUP2 EQ PUSH2 0x188C JUMPI DUP5 DUP2 PUSH2 0x186C SWAP2 SWAP1 PUSH2 0x4810 JUMP JUMPDEST DUP3 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1885 SWAP2 SWAP1 PUSH2 0x48A8 JUMP JUMPDEST SWAP9 POP PUSH2 0x1891 JUMP JUMPDEST PUSH1 0x0 SWAP9 POP JUMPDEST JUMPDEST JUMPDEST DUP9 SWAP10 POP POP POP POP POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x18B2 DUP5 DUP5 PUSH2 0x19A5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 GT ISZERO PUSH2 0x1999 JUMPI PUSH1 0x0 PUSH2 0x18D6 DUP6 DUP6 PUSH1 0x1 DUP6 PUSH2 0x18D1 SWAP2 SWAP1 PUSH2 0x4810 JUMP JUMPDEST PUSH2 0x324E JUMP JUMPDEST SWAP4 POP POP POP POP PUSH1 0x0 PUSH2 0x18E5 PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH1 0x1 DUP6 PUSH2 0x1971 SWAP2 SWAP1 PUSH2 0x4810 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD SLOAD EQ DUP1 ISZERO PUSH2 0x1990 JUMPI POP PUSH1 0x0 DUP2 EQ JUMPDEST SWAP3 POP POP POP PUSH2 0x199F JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x19AF PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x1A46 PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1B00 PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH2 0x1B9A PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP11 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD SLOAD PUSH2 0x1C34 PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP14 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP12 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD SLOAD PUSH2 0x1CCE PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP15 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP14 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP13 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x5 ADD SLOAD PUSH2 0x1D68 PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP16 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP15 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP14 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x6 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 POP SWAP4 SWAP8 POP SWAP4 SWAP8 SWAP2 SWAP6 POP SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1E2D DUP5 PUSH2 0x33CD JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ DUP1 PUSH2 0x1E42 JUMPI POP PUSH1 0x0 DUP2 MLOAD GT ISZERO JUMPDEST ISZERO PUSH2 0x1E52 JUMPI PUSH1 0x0 SWAP3 POP POP POP PUSH2 0x1FFB JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x1FF3 JUMPI PUSH1 0x0 PUSH2 0x1E84 DUP7 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1E77 JUMPI PUSH2 0x1E76 PUSH2 0x425F JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x2718 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x1EAE DUP9 DUP7 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x1EA0 JUMPI PUSH2 0x1E9F PUSH2 0x425F JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 PUSH2 0x2FAA JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP DUP6 DUP3 EQ PUSH2 0x1ECA JUMPI PUSH1 0x0 SWAP7 POP POP POP POP POP POP POP PUSH2 0x1FFB JUMP JUMPDEST PUSH1 0x0 DUP2 EQ PUSH2 0x1EE1 JUMPI PUSH1 0x0 SWAP7 POP POP POP POP POP POP POP PUSH2 0x1FFB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F07 DUP11 DUP8 DUP8 DUP2 MLOAD DUP2 LT PUSH2 0x1EFA JUMPI PUSH2 0x1EF9 PUSH2 0x425F JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x2EF9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x1F34 DUP15 DUP12 DUP12 DUP2 MLOAD DUP2 LT PUSH2 0x1F26 JUMPI PUSH2 0x1F25 PUSH2 0x425F JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 PUSH2 0x1A35 JUMP JUMPDEST POP POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1F85 JUMPI PUSH1 0x0 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP PUSH2 0x1FFB JUMP JUMPDEST DUP8 DUP4 EQ PUSH2 0x1FA0 JUMPI PUSH1 0x0 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP PUSH2 0x1FFB JUMP JUMPDEST DUP11 DUP3 LT ISZERO PUSH2 0x1FBC JUMPI PUSH1 0x0 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP PUSH2 0x1FFB JUMP JUMPDEST PUSH1 0x0 DUP2 EQ PUSH2 0x1FD8 JUMPI PUSH1 0x0 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP PUSH2 0x1FFB JUMP JUMPDEST POP POP POP POP POP POP POP POP DUP1 DUP1 PUSH2 0x1FEB SWAP1 PUSH2 0x48EA JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1E55 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x200B PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x2 ADD PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x209B PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x3 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x20ED CALLER DUP3 PUSH2 0x18A5 JUMP JUMPDEST ISZERO PUSH2 0x2124 JUMPI PUSH1 0x40 MLOAD PUSH32 0xD18923AB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x2131 CALLER DUP4 PUSH2 0x2376 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x213B PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x2 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0x21F5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x356680B700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH2 0x21FE PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x2 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x228A SWAP2 SWAP1 PUSH2 0x4810 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH2 0x229A PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x3 ADD PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x22E9 SWAP2 SWAP1 PUSH2 0x4810 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x23B872DD ADDRESS CALLER DUP6 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x232D SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4720 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x234C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2370 SWAP2 SWAP1 PUSH2 0x4783 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2382 DUP4 DUP4 PUSH2 0x17D2 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x238D PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x2 ADD PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x2419 SWAP2 SWAP1 PUSH2 0x4810 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 PUSH2 0x2429 PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x3 ADD PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x2478 SWAP2 SWAP1 PUSH2 0x4810 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x0 PUSH2 0x2489 PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x2 ADD PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD LT ISZERO PUSH2 0x253F JUMPI PUSH1 0x40 MLOAD PUSH32 0xA2005FA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2549 PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x3 ADD PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD LT ISZERO PUSH2 0x25C2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x2FE0888F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x25CE DUP5 DUP5 PUSH2 0x19A5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 GT ISZERO PUSH2 0x2698 JUMPI PUSH1 0x1 PUSH2 0x25E3 PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH1 0x1 DUP5 PUSH2 0x266F SWAP2 SWAP1 PUSH2 0x4810 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x6 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x26A6 PUSH2 0x2A67 JUMP JUMPDEST PUSH1 0x3 ADD SLOAD PUSH2 0x26B2 PUSH2 0x34F9 JUMP JUMPDEST GT PUSH2 0x26E9 JUMPI PUSH1 0x40 MLOAD PUSH32 0xA426119900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x9CD9AFE22FEA86221D6E8117226B65BB0E2AF8C4F5B8ABF255FB0AFCAD4A3A9C SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2723 PUSH2 0x26EB JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH1 0x0 DUP2 EQ PUSH2 0x27BD JUMPI PUSH1 0x1 DUP2 PUSH2 0x27B8 SWAP2 SWAP1 PUSH2 0x4810 JUMP JUMPDEST PUSH2 0x27C0 JUMP JUMPDEST PUSH1 0x0 JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x2DA2ADFB54FD91BFB31E0D805792077DDCD5B0427B14A56397E2F3CC190C8830 SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH2 0x2800 DUP3 DUP3 PUSH2 0x35BB JUMP JUMPDEST PUSH2 0x2836 JUMPI PUSH1 0x40 MLOAD PUSH32 0x1824866A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2848 DUP7 DUP7 DUP6 PUSH2 0x1399 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2854 PUSH2 0x28BF JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x7 ADD SLOAD DUP2 PUSH1 0x6 ADD SLOAD PUSH2 0x286A SWAP2 SWAP1 PUSH2 0x42EC JUMP JUMPDEST DUP6 LT ISZERO PUSH2 0x28A3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x3661E75B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 DUP6 LT ISZERO PUSH2 0x28B1 JUMPI DUP5 PUSH2 0x28B3 JUMP JUMPDEST DUP2 JUMPDEST SWAP3 POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x2F7ED27098ECEFE70183EE38AE4542DEE65215B0786F6870871034402CFE2CC9 SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP6 SWAP1 POP PUSH1 0x0 PUSH2 0x291E ADDRESS DUP7 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2AF3 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0xB SIGNEXTEND SGT PUSH2 0x295C JUMPI PUSH2 0x2956 DUP6 DUP5 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x364F SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP PUSH2 0x2994 JUMP JUMPDEST PUSH2 0x2992 DUP6 DUP5 DUP4 PUSH2 0x296C SWAP2 SWAP1 PUSH2 0x4932 JUMP JUMPDEST DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2D46 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP JUMPDEST TIMESTAMP PUSH2 0x299D PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD DUP2 SWAP1 SSTORE POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2A50 SWAP3 SWAP2 SWAP1 PUSH2 0x49C1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0xDE06769CA6D80A022439E234EEBB61C3801D652175B62F912D6F8CAC7B881C65 SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2A9E PUSH2 0x28BF JUMP JUMPDEST PUSH1 0x9 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2AFF DUP6 PUSH2 0x3802 JUMP JUMPDEST SWAP2 POP POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xE6A1E888 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2B3F SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4A49 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2B5C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2B80 SWAP2 SWAP1 PUSH2 0x4AAA JUMP JUMPDEST SWAP1 SWAP2 SWAP3 POP SWAP1 POP POP DUP1 SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2BA1 DUP7 PUSH2 0x3A43 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x39255D5B DUP3 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xB4B333C6 DUP11 DUP11 DUP11 PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2BFC JUMPI PUSH2 0x2BFB PUSH2 0x4230 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2C2E JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2C42 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4B11 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2C9F JUMPI PUSH2 0x2C9E PUSH2 0x4230 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2CD1 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2CF0 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4B7E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2D0F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2D38 SWAP2 SWAP1 PUSH2 0x4CBA JUMP JUMPDEST POP PUSH1 0x1 SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2D54 DUP7 PUSH2 0x3A43 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x39255D5B DUP3 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x50209A62 DUP11 DUP11 DUP11 PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2DAF JUMPI PUSH2 0x2DAE PUSH2 0x4230 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2DE1 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2DF5 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4D03 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2E52 JUMPI PUSH2 0x2E51 PUSH2 0x4230 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2E84 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2EA3 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4B7E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2EC2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2EEB SWAP2 SWAP1 PUSH2 0x4CBA JUMP JUMPDEST POP PUSH1 0x1 SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2F04 PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH1 0x0 DUP2 EQ PUSH2 0x2F9E JUMPI PUSH1 0x1 DUP2 PUSH2 0x2F99 SWAP2 SWAP1 PUSH2 0x4810 JUMP JUMPDEST PUSH2 0x2FA1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x2FB8 PUSH2 0x26EB JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xB SIGNEXTEND PUSH2 0x305F PUSH2 0x26EB JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0xC SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3111 PUSH2 0x26EB JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0x31AB PUSH2 0x26EB JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x325E PUSH2 0x27C9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x1 ADD PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x1 ADD PUSH1 0x0 DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP1 POP PUSH2 0x33B9 DUP3 DUP11 DUP4 PUSH2 0x2FAA JUMP JUMPDEST SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP POP POP POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH2 0x33D9 PUSH2 0x26EB JUMP JUMPDEST PUSH1 0x2 ADD PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD SLOAD PUSH2 0x3425 PUSH2 0x26EB JUMP JUMPDEST PUSH1 0x2 ADD PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD DUP1 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x34E9 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH2 0x349F JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 POP SWAP2 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3503 PUSH2 0x2A67 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xB47064C8 ADDRESS PUSH20 0xEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3575 SWAP3 SWAP2 SWAP1 PUSH2 0x4D4F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3592 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x35B6 SWAP2 SWAP1 PUSH2 0x4D78 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x35F7 SWAP2 SWAP1 PUSH2 0x4DA5 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3614 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3638 SWAP2 SWAP1 PUSH2 0x4D78 JUMP JUMPDEST SWAP1 POP PUSH2 0x3644 DUP5 DUP5 PUSH2 0x3CCA JUMP JUMPDEST DUP2 GT SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x365D DUP7 PUSH2 0x3A43 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x39255D5B DUP3 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x62FC305E DUP11 DUP11 DUP11 PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x36B8 JUMPI PUSH2 0x36B7 PUSH2 0x4230 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x36EA JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x36FE SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4D03 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x375B JUMPI PUSH2 0x375A PUSH2 0x4230 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x378D JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x37AC SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4B7E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x37CB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x37F4 SWAP2 SWAP1 PUSH2 0x4CBA JUMP JUMPDEST POP PUSH1 0x1 SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x65599BF746E17A00EA62E3610586992D88101B78EEC3CF380706621FB97EA837 SLOAD SWAP2 POP PUSH32 0xB969D79D88ACD02D04ED7EE7D43B949E7DAF093D363ABCFBBC43DFDFD1CE969A SLOAD SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x39C4 JUMPI PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x3927 JUMPI DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x20BC4425 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3900 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3924 SWAP2 SWAP1 PUSH2 0x4DD5 JUMP JUMPDEST SWAP2 POP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xB6D200DE PUSH32 0xA9214CC96615E0085D3BB077758DB69497DC2DCE3B2B1E97BC93C3D18D83EFD3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3980 SWAP2 SWAP1 PUSH2 0x4E4A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x399D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x39C1 SWAP2 SWAP1 PUSH2 0x4EA3 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x3A01 JUMPI PUSH2 0x3A00 PUSH2 0x4ED0 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x3A3E JUMPI PUSH2 0x3A3D PUSH2 0x4ED0 JUMP JUMPDEST JUMPDEST SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x65599BF746E17A00EA62E3610586992D88101B78EEC3CF380706621FB97EA837 SLOAD SWAP2 POP PUSH32 0xB969D79D88ACD02D04ED7EE7D43B949E7DAF093D363ABCFBBC43DFDFD1CE969A SLOAD SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x3C4B JUMPI PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x3B68 JUMPI DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x20BC4425 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3B41 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3B65 SWAP2 SWAP1 PUSH2 0x4DD5 JUMP JUMPDEST SWAP2 POP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xB6D200DE PUSH32 0xA9214CC96615E0085D3BB077758DB69497DC2DCE3B2B1E97BC93C3D18D83EFD3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3BC1 SWAP2 SWAP1 PUSH2 0x4E4A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3BDE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3C02 SWAP2 SWAP1 PUSH2 0x4EA3 JUMP JUMPDEST SWAP1 POP DUP2 PUSH32 0x65599BF746E17A00EA62E3610586992D88101B78EEC3CF380706621FB97EA837 SSTORE DUP1 PUSH32 0xB969D79D88ACD02D04ED7EE7D43B949E7DAF093D363ABCFBBC43DFDFD1CE969A SSTORE JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x3C88 JUMPI PUSH2 0x3C87 PUSH2 0x4ED0 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x3CC5 JUMPI PUSH2 0x3CC4 PUSH2 0x4ED0 JUMP JUMPDEST JUMPDEST SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 SWAP1 POP PUSH1 0x0 PUSH2 0x3CFB DUP5 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3D70 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3D28 ADDRESS DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3E04 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x3D32 PUSH2 0x28BF JUMP JUMPDEST PUSH1 0x8 ADD SLOAD DUP6 DUP3 PUSH2 0x3D42 SWAP2 SWAP1 PUSH2 0x4932 JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3D5A SWAP2 SWAP1 PUSH2 0x48A8 JUMP JUMPDEST DUP3 PUSH2 0x3D65 SWAP2 SWAP1 PUSH2 0x42EC JUMP JUMPDEST SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3D7C DUP5 PUSH2 0x3802 JUMP JUMPDEST SWAP2 POP POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x8D997F6E DUP6 DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DBA SWAP3 SWAP2 SWAP1 PUSH2 0x4EFF JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3DD7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3DFB SWAP2 SWAP1 PUSH2 0x4D78 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3E10 DUP5 PUSH2 0x3802 JUMP JUMPDEST SWAP2 POP POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xE8E7E2D1 DUP6 DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3E4E SWAP3 SWAP2 SWAP1 PUSH2 0x4F28 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3E6B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3E8F SWAP2 SWAP1 PUSH2 0x4F51 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3ED7 DUP3 PUSH2 0x3EAC JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3EE7 DUP2 PUSH2 0x3ECC JUMP JUMPDEST DUP2 EQ PUSH2 0x3EF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x3F04 DUP2 PUSH2 0x3EDE JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3F1D DUP2 PUSH2 0x3F0A JUMP JUMPDEST DUP2 EQ PUSH2 0x3F28 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x3F3A DUP2 PUSH2 0x3F14 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3F57 JUMPI PUSH2 0x3F56 PUSH2 0x3EA2 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x3F65 DUP6 DUP3 DUP7 ADD PUSH2 0x3EF5 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x3F76 DUP6 DUP3 DUP7 ADD PUSH2 0x3F2B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0xB SIGNEXTEND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3F96 DUP2 PUSH2 0x3F80 JUMP JUMPDEST DUP2 EQ PUSH2 0x3FA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x3FB3 DUP2 PUSH2 0x3F8D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3FD2 JUMPI PUSH2 0x3FD1 PUSH2 0x3EA2 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x3FE0 DUP7 DUP3 DUP8 ADD PUSH2 0x3EF5 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x3FF1 DUP7 DUP3 DUP8 ADD PUSH2 0x3EF5 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x4002 DUP7 DUP3 DUP8 ADD PUSH2 0x3FA4 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH2 0x4015 DUP2 PUSH2 0x3F0A JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x4030 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x400C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x4052 JUMPI PUSH2 0x4051 PUSH2 0x3EA2 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x4060 DUP9 DUP3 DUP10 ADD PUSH2 0x3EF5 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH2 0x4071 DUP9 DUP3 DUP10 ADD PUSH2 0x3EF5 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 PUSH2 0x4082 DUP9 DUP3 DUP10 ADD PUSH2 0x3EF5 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 PUSH2 0x4093 DUP9 DUP3 DUP10 ADD PUSH2 0x3F2B JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 PUSH2 0x40A4 DUP9 DUP3 DUP10 ADD PUSH2 0x3FA4 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x40C8 JUMPI PUSH2 0x40C7 PUSH2 0x3EA2 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x40D6 DUP6 DUP3 DUP7 ADD PUSH2 0x3EF5 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x40E7 DUP6 DUP3 DUP7 ADD PUSH2 0x3EF5 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x4106 DUP2 PUSH2 0x40F1 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x4121 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x40FD JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4140 JUMPI PUSH2 0x413F PUSH2 0x3EA2 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x414E DUP7 DUP3 DUP8 ADD PUSH2 0x3EF5 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x415F DUP7 DUP3 DUP8 ADD PUSH2 0x3EF5 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x4170 DUP7 DUP3 DUP8 ADD PUSH2 0x3F2B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH2 0x4183 DUP2 PUSH2 0x3ECC JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x419C DUP2 PUSH2 0x4189 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC0 DUP3 ADD SWAP1 POP PUSH2 0x41B7 PUSH1 0x0 DUP4 ADD DUP10 PUSH2 0x417A JUMP JUMPDEST PUSH2 0x41C4 PUSH1 0x20 DUP4 ADD DUP9 PUSH2 0x400C JUMP JUMPDEST PUSH2 0x41D1 PUSH1 0x40 DUP4 ADD DUP8 PUSH2 0x400C JUMP JUMPDEST PUSH2 0x41DE PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x400C JUMP JUMPDEST PUSH2 0x41EB PUSH1 0x80 DUP4 ADD DUP6 PUSH2 0x4193 JUMP JUMPDEST PUSH2 0x41F8 PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x40FD JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4219 JUMPI PUSH2 0x4218 PUSH2 0x3EA2 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x4227 DUP5 DUP3 DUP6 ADD PUSH2 0x3EF5 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x42F7 DUP3 PUSH2 0x3F0A JUMP JUMPDEST SWAP2 POP PUSH2 0x4302 DUP4 PUSH2 0x3F0A JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x431A JUMPI PUSH2 0x4319 PUSH2 0x42BD JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x4329 DUP2 PUSH2 0x3F80 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 ADD SWAP1 POP PUSH2 0x4344 PUSH1 0x0 DUP4 ADD DUP9 PUSH2 0x417A JUMP JUMPDEST PUSH2 0x4351 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x417A JUMP JUMPDEST PUSH2 0x435E PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x417A JUMP JUMPDEST PUSH2 0x436B PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x400C JUMP JUMPDEST PUSH2 0x4378 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x4320 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x43BC JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x43A1 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x43E4 DUP3 PUSH2 0x4382 JUMP JUMPDEST PUSH2 0x43EE DUP2 DUP6 PUSH2 0x438D JUMP JUMPDEST SWAP4 POP PUSH2 0x43FE DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x439E JUMP JUMPDEST PUSH2 0x4407 DUP2 PUSH2 0x43C8 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x4 DUP2 LT PUSH2 0x444F JUMPI PUSH2 0x444E PUSH2 0x428E JUMP JUMPDEST JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH2 0x4460 DUP3 PUSH2 0x443E JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4470 DUP3 PUSH2 0x4452 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x4480 DUP2 PUSH2 0x4465 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4492 DUP4 DUP4 PUSH2 0x4477 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x44B6 DUP3 PUSH2 0x4412 JUMP JUMPDEST PUSH2 0x44C0 DUP2 DUP6 PUSH2 0x441D JUMP JUMPDEST SWAP4 POP PUSH2 0x44CB DUP4 PUSH2 0x442E JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x44FC JUMPI DUP2 MLOAD PUSH2 0x44E3 DUP9 DUP3 PUSH2 0x4486 JUMP JUMPDEST SWAP8 POP PUSH2 0x44EE DUP4 PUSH2 0x449E JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x44CF JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4551 DUP3 PUSH2 0x4382 JUMP JUMPDEST PUSH2 0x455B DUP2 DUP6 PUSH2 0x4535 JUMP JUMPDEST SWAP4 POP PUSH2 0x456B DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x439E JUMP JUMPDEST PUSH2 0x4574 DUP2 PUSH2 0x43C8 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x458B DUP4 DUP4 PUSH2 0x4546 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x45AB DUP3 PUSH2 0x4509 JUMP JUMPDEST PUSH2 0x45B5 DUP2 DUP6 PUSH2 0x4514 JUMP JUMPDEST SWAP4 POP DUP4 PUSH1 0x20 DUP3 MUL DUP6 ADD PUSH2 0x45C7 DUP6 PUSH2 0x4525 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x4603 JUMPI DUP5 DUP5 SUB DUP10 MSTORE DUP2 MLOAD PUSH2 0x45E4 DUP6 DUP3 PUSH2 0x457F JUMP JUMPDEST SWAP5 POP PUSH2 0x45EF DUP4 PUSH2 0x4593 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP11 ADD SWAP10 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x45CB JUMP JUMPDEST POP DUP3 SWAP8 POP DUP8 SWAP6 POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP4 ADD PUSH1 0x0 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH1 0x0 DUP7 ADD MSTORE PUSH2 0x4632 DUP3 DUP3 PUSH2 0x44AB JUMP JUMPDEST SWAP2 POP POP PUSH1 0x20 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH1 0x20 DUP7 ADD MSTORE PUSH2 0x464C DUP3 DUP3 PUSH2 0x45A0 JUMP JUMPDEST SWAP2 POP POP DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x466E PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x417A JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x4680 DUP2 DUP7 PUSH2 0x43D9 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x4694 DUP2 DUP6 PUSH2 0x4615 JUMP JUMPDEST SWAP1 POP PUSH2 0x46A3 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x417A JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x46B5 DUP2 PUSH2 0x4189 JUMP JUMPDEST DUP2 EQ PUSH2 0x46C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x46D2 DUP2 PUSH2 0x46AC JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x46EE JUMPI PUSH2 0x46ED PUSH2 0x3EA2 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x46FC DUP5 DUP3 DUP6 ADD PUSH2 0x46C3 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x471A PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x4193 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x4735 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x417A JUMP JUMPDEST PUSH2 0x4742 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x417A JUMP JUMPDEST PUSH2 0x474F PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x400C JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x4760 DUP2 PUSH2 0x40F1 JUMP JUMPDEST DUP2 EQ PUSH2 0x476B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x477D DUP2 PUSH2 0x4757 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4799 JUMPI PUSH2 0x4798 PUSH2 0x3EA2 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x47A7 DUP5 DUP3 DUP6 ADD PUSH2 0x476E JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x47EA DUP3 PUSH2 0x3F0A JUMP JUMPDEST SWAP2 POP PUSH2 0x47F5 DUP4 PUSH2 0x3F0A JUMP JUMPDEST SWAP3 POP DUP3 PUSH2 0x4805 JUMPI PUSH2 0x4804 PUSH2 0x47B0 JUMP JUMPDEST JUMPDEST DUP3 DUP3 DIV SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x481B DUP3 PUSH2 0x3F0A JUMP JUMPDEST SWAP2 POP PUSH2 0x4826 DUP4 PUSH2 0x3F0A JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP DUP2 DUP2 GT ISZERO PUSH2 0x483E JUMPI PUSH2 0x483D PUSH2 0x42BD JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x484F DUP3 PUSH2 0x3F80 JUMP JUMPDEST SWAP2 POP PUSH2 0x485A DUP4 PUSH2 0x3F80 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP PUSH12 0x7FFFFFFFFFFFFFFFFFFFFFFF DUP2 SGT PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800000000000000000000000 DUP3 SLT OR ISZERO PUSH2 0x48A2 JUMPI PUSH2 0x48A1 PUSH2 0x42BD JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x48B3 DUP3 PUSH2 0x3F0A JUMP JUMPDEST SWAP2 POP PUSH2 0x48BE DUP4 PUSH2 0x3F0A JUMP JUMPDEST SWAP3 POP DUP3 DUP3 MUL PUSH2 0x48CC DUP2 PUSH2 0x3F0A JUMP JUMPDEST SWAP2 POP DUP3 DUP3 DIV DUP5 EQ DUP4 ISZERO OR PUSH2 0x48E3 JUMPI PUSH2 0x48E2 PUSH2 0x42BD JUMP JUMPDEST JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x48F5 DUP3 PUSH2 0x3F0A JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x4927 JUMPI PUSH2 0x4926 PUSH2 0x42BD JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x493D DUP3 PUSH2 0x3F80 JUMP JUMPDEST SWAP2 POP PUSH2 0x4948 DUP4 PUSH2 0x3F80 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800000000000000000000000 DUP2 SLT PUSH12 0x7FFFFFFFFFFFFFFFFFFFFFFF DUP3 SGT OR ISZERO PUSH2 0x4990 JUMPI PUSH2 0x498F PUSH2 0x42BD JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x49BB DUP2 PUSH2 0x4996 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x49D6 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x49B2 JUMP JUMPDEST PUSH2 0x49E3 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x49B2 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4A0F PUSH2 0x4A0A PUSH2 0x4A05 DUP5 PUSH2 0x3EAC JUMP JUMPDEST PUSH2 0x49EA JUMP JUMPDEST PUSH2 0x3EAC JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4A21 DUP3 PUSH2 0x49F4 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4A33 DUP3 PUSH2 0x4A16 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x4A43 DUP2 PUSH2 0x4A28 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x4A5E PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x4A3A JUMP JUMPDEST PUSH2 0x4A6B PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x417A JUMP JUMPDEST PUSH2 0x4A78 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x417A JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x4A8F DUP2 PUSH2 0x3F14 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x4AA4 DUP2 PUSH2 0x3F8D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4AC4 JUMPI PUSH2 0x4AC3 PUSH2 0x3EA2 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x4AD2 DUP8 DUP3 DUP9 ADD PUSH2 0x4A80 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x4AE3 DUP8 DUP3 DUP9 ADD PUSH2 0x4A95 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x4AF4 DUP8 DUP3 DUP9 ADD PUSH2 0x4A80 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x4B05 DUP8 DUP3 DUP9 ADD PUSH2 0x4A80 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x4B26 PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x4A3A JUMP JUMPDEST PUSH2 0x4B33 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x417A JUMP JUMPDEST PUSH2 0x4B40 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x417A JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x4B52 DUP2 DUP5 PUSH2 0x43D9 JUMP JUMPDEST SWAP1 POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4B68 DUP3 PUSH2 0x4A16 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x4B78 DUP2 PUSH2 0x4B5D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x4B93 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x4B6F JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x4BA5 DUP2 DUP6 PUSH2 0x43D9 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x4BB9 DUP2 DUP5 PUSH2 0x43D9 JUMP JUMPDEST SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4BD6 DUP3 PUSH2 0x43C8 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x4BF5 JUMPI PUSH2 0x4BF4 PUSH2 0x4230 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4C08 PUSH2 0x3E98 JUMP JUMPDEST SWAP1 POP PUSH2 0x4C14 DUP3 DUP3 PUSH2 0x4BCD JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x4C34 JUMPI PUSH2 0x4C33 PUSH2 0x4230 JUMP JUMPDEST JUMPDEST PUSH2 0x4C3D DUP3 PUSH2 0x43C8 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4C5D PUSH2 0x4C58 DUP5 PUSH2 0x4C19 JUMP JUMPDEST PUSH2 0x4BFE JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x4C79 JUMPI PUSH2 0x4C78 PUSH2 0x4BC8 JUMP JUMPDEST JUMPDEST PUSH2 0x4C84 DUP5 DUP3 DUP6 PUSH2 0x439E JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4CA1 JUMPI PUSH2 0x4CA0 PUSH2 0x4BC3 JUMP JUMPDEST JUMPDEST DUP2 MLOAD PUSH2 0x4CB1 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x4C4A JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4CD0 JUMPI PUSH2 0x4CCF PUSH2 0x3EA2 JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP3 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4CEE JUMPI PUSH2 0x4CED PUSH2 0x3EA7 JUMP JUMPDEST JUMPDEST PUSH2 0x4CFA DUP5 DUP3 DUP6 ADD PUSH2 0x4C8C JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x4D18 PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x4A3A JUMP JUMPDEST PUSH2 0x4D25 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x417A JUMP JUMPDEST PUSH2 0x4D32 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x4320 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x4D44 DUP2 DUP5 PUSH2 0x43D9 JUMP JUMPDEST SWAP1 POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x4D64 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x417A JUMP JUMPDEST PUSH2 0x4D71 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x417A JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4D8E JUMPI PUSH2 0x4D8D PUSH2 0x3EA2 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x4D9C DUP5 DUP3 DUP6 ADD PUSH2 0x4A80 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x4DBA PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x417A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x4DCF DUP2 PUSH2 0x3EDE JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4DEB JUMPI PUSH2 0x4DEA PUSH2 0x3EA2 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x4DF9 DUP5 DUP3 DUP6 ADD PUSH2 0x4DC0 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 SHL SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4E34 PUSH2 0x4E2F PUSH2 0x4E2A DUP5 PUSH2 0x4E02 JUMP JUMPDEST PUSH2 0x4E0C JUMP JUMPDEST PUSH2 0x4189 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x4E44 DUP2 PUSH2 0x4E19 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x4E5F PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x4E3B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4E70 DUP3 PUSH2 0x3ECC JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x4E80 DUP2 PUSH2 0x4E65 JUMP JUMPDEST DUP2 EQ PUSH2 0x4E8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x4E9D DUP2 PUSH2 0x4E77 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4EB9 JUMPI PUSH2 0x4EB8 PUSH2 0x3EA2 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x4EC7 DUP5 DUP3 DUP6 ADD PUSH2 0x4E8E JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x4F14 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x4A3A JUMP JUMPDEST PUSH2 0x4F21 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4320 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x4F3D PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x4A3A JUMP JUMPDEST PUSH2 0x4F4A PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x417A JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4F67 JUMPI PUSH2 0x4F66 PUSH2 0x3EA2 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x4F75 DUP5 DUP3 DUP6 ADD PUSH2 0x4A95 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SAR 0xCE DUP12 DUP6 PUSH19 0x75C446B38B2FD0190C291B939A9D8728CA09A3 0xC4 0xBE MSIZE 0x4A SAR 0x5F ADDRESS ORIGIN PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"704:8378:23:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_decreaseFlow_13571":{"entryPoint":5496,"id":13571,"parameterSlots":5,"returnSlots":0},"@_depositSuperToken_12684":{"entryPoint":4633,"id":12684,"parameterSlots":2,"returnSlots":0},"@_getAmountFlowed_13056":{"entryPoint":6098,"id":13056,"parameterSlots":2,"returnSlots":1},"@_getAndCacheHostAndCFA_4827":{"entryPoint":14915,"id":4827,"parameterSlots":1,"returnSlots":2},"@_getAppGelatoBalance_11499":{"entryPoint":13561,"id":11499,"parameterSlots":0,"returnSlots":1},"@_getCurrentNonce_13287":{"entryPoint":12025,"id":13287,"parameterSlots":2,"returnSlots":1},"@_getCurrentNonce_13985":{"entryPoint":10008,"id":13985,"parameterSlots":2,"returnSlots":1},"@_getCurrentSessionData_14010":{"entryPoint":13261,"id":14010,"parameterSlots":1,"returnSlots":2},"@_getDepositTotal_13403":{"entryPoint":8337,"id":13403,"parameterSlots":1,"returnSlots":1},"@_getDepositUser_13389":{"entryPoint":8193,"id":13389,"parameterSlots":2,"returnSlots":1},"@_getFlowData_13371":{"entryPoint":6709,"id":13371,"parameterSlots":3,"returnSlots":6},"@_getHostAndCFA_4994":{"entryPoint":14338,"id":4994,"parameterSlots":1,"returnSlots":2},"@_getNewBufferedAppBalance_12495":{"entryPoint":15562,"id":12495,"parameterSlots":2,"returnSlots":1},"@_getNewNonce_13258":{"entryPoint":6565,"id":13258,"parameterSlots":2,"returnSlots":1},"@_getScheduledLifespan_12960":{"entryPoint":10298,"id":12960,"parameterSlots":4,"returnSlots":1},"@_getSessionDataFromFlow_14127":{"entryPoint":12878,"id":14127,"parameterSlots":3,"returnSlots":4},"@_getSessionData_14070":{"entryPoint":12202,"id":14070,"parameterSlots":3,"returnSlots":4},"@_getValidSafeLifespan_12910":{"entryPoint":5017,"id":12910,"parameterSlots":3,"returnSlots":1},"@_hasActiveFlow_13110":{"entryPoint":6309,"id":13110,"parameterSlots":2,"returnSlots":1},"@_increaseFlow_13471":{"entryPoint":10476,"id":13471,"parameterSlots":5,"returnSlots":0},"@_isNewFlowRateAllowed_12524":{"entryPoint":13755,"id":12524,"parameterSlots":2,"returnSlots":1},"@_isSuperTokensSupported_12345":{"entryPoint":10900,"id":12345,"parameterSlots":1,"returnSlots":1},"@_isViewSessionAllowed_13240":{"entryPoint":7711,"id":13240,"parameterSlots":2,"returnSlots":1},"@_requireNoActiveFlow_12763":{"entryPoint":8419,"id":12763,"parameterSlots":1,"returnSlots":0},"@_requireOnlyAutobot_11379":{"entryPoint":5350,"id":11379,"parameterSlots":0,"returnSlots":0},"@_requireSufficientAppGelatoBalance_11393":{"entryPoint":9886,"id":11393,"parameterSlots":0,"returnSlots":0},"@_requireSufficientAppSTBalance_12021":{"entryPoint":10230,"id":12021,"parameterSlots":2,"returnSlots":0},"@_requireSuperTokenSupported_12003":{"entryPoint":4567,"id":12003,"parameterSlots":1,"returnSlots":0},"@_setRemainingBalance_12846":{"entryPoint":9078,"id":12846,"parameterSlots":2,"returnSlots":0},"@_storageAutomate_11201":{"entryPoint":10855,"id":11201,"parameterSlots":0,"returnSlots":1},"@_storageControl_11680":{"entryPoint":10431,"id":11680,"parameterSlots":0,"returnSlots":1},"@_storageFlow_12644":{"entryPoint":10185,"id":12644,"parameterSlots":0,"returnSlots":1},"@_storageSession_13646":{"entryPoint":9963,"id":13646,"parameterSlots":0,"returnSlots":1},"@_timeModuleArg_11537":{"entryPoint":10811,"id":11537,"parameterSlots":2,"returnSlots":1},"@_withdrawSuperToken_12748":{"entryPoint":8487,"id":12748,"parameterSlots":2,"returnSlots":0},"@closeFlow_10105":{"entryPoint":3507,"id":10105,"parameterSlots":2,"returnSlots":0},"@createFlow_1986":{"entryPoint":13903,"id":1986,"parameterSlots":3,"returnSlots":1},"@decreaseFlow_9997":{"entryPoint":786,"id":9997,"parameterSlots":5,"returnSlots":0},"@deleteFlow_2180":{"entryPoint":11155,"id":2180,"parameterSlots":3,"returnSlots":1},"@depositSuperToken_10126":{"entryPoint":741,"id":10126,"parameterSlots":2,"returnSlots":0},"@getAmountFlowed_10163":{"entryPoint":814,"id":10163,"parameterSlots":2,"returnSlots":1},"@getBufferAmountByFlowRate_3327":{"entryPoint":15728,"id":3327,"parameterSlots":2,"returnSlots":1},"@getDepositTotal_10289":{"entryPoint":958,"id":10289,"parameterSlots":1,"returnSlots":1},"@getDepositUser_10276":{"entryPoint":938,"id":10276,"parameterSlots":2,"returnSlots":1},"@getFlowData_10260":{"entryPoint":874,"id":10260,"parameterSlots":3,"returnSlots":6},"@getFlowRate_3206":{"entryPoint":10995,"id":3206,"parameterSlots":3,"returnSlots":1},"@getNetFlowRate_3271":{"entryPoint":15876,"id":3271,"parameterSlots":2,"returnSlots":1},"@getNewFlowNonce_10231":{"entryPoint":854,"id":10231,"parameterSlots":2,"returnSlots":1},"@getValidSafeLifespan_10182":{"entryPoint":764,"id":10182,"parameterSlots":3,"returnSlots":1},"@hasActiveFlow_10215":{"entryPoint":834,"id":10215,"parameterSlots":2,"returnSlots":1},"@isViewSessionAllowed_10199":{"entryPoint":918,"id":10199,"parameterSlots":2,"returnSlots":1},"@openFlow_9968":{"entryPoint":999,"id":9968,"parameterSlots":3,"returnSlots":0},"@updateFlow_2083":{"entryPoint":11590,"id":2083,"parameterSlots":3,"returnSlots":1},"@withdrawSuperToken_10147":{"entryPoint":976,"id":10147,"parameterSlots":2,"returnSlots":0},"abi_decode_available_length_t_bytes_memory_ptr_fromMemory":{"entryPoint":19530,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_t_address":{"entryPoint":16117,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_address_fromMemory":{"entryPoint":19904,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bool_fromMemory":{"entryPoint":18286,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes32_fromMemory":{"entryPoint":18115,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes_memory_ptr_fromMemory":{"entryPoint":19596,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_contract$_ISuperAgreement_$6395_fromMemory":{"entryPoint":20110,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_int96":{"entryPoint":16292,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_int96_fromMemory":{"entryPoint":19093,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint256":{"entryPoint":16171,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint256_fromMemory":{"entryPoint":19072,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":16899,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":19925,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":16561,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_addresst_uint256t_int96":{"entryPoint":16438,"id":null,"parameterSlots":2,"returnSlots":5},"abi_decode_tuple_t_addresst_addresst_int96":{"entryPoint":16313,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":16679,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":16192,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bool_fromMemory":{"entryPoint":18307,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32_fromMemory":{"entryPoint":18136,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes_memory_ptr_fromMemory":{"entryPoint":19642,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_ISuperAgreement_$6395_fromMemory":{"entryPoint":20131,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_int96_fromMemory":{"entryPoint":20305,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256_fromMemory":{"entryPoint":19832,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256t_int96t_uint256t_uint256_fromMemory":{"entryPoint":19114,"id":null,"parameterSlots":2,"returnSlots":4},"abi_encodeUpdatedPos_t_bytes_memory_ptr_to_t_bytes_memory_ptr":{"entryPoint":17791,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_t_enum$_Module_$15488_to_t_uint8":{"entryPoint":17542,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_address_to_t_address_fromStack":{"entryPoint":16762,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr":{"entryPoint":17824,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_array$_t_enum$_Module_$15488_$dyn_memory_ptr_to_t_array$_t_uint8_$dyn_memory_ptr":{"entryPoint":17579,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_bool_to_t_bool_fromStack":{"entryPoint":16637,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bytes32_to_t_bytes32_fromStack":{"entryPoint":16787,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr":{"entryPoint":17734,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack":{"entryPoint":17369,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_contract$_IConstantFlowAgreementV1_$5487_to_t_address_fromStack":{"entryPoint":19311,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_contract$_ISuperToken_$6947_to_t_address_fromStack":{"entryPoint":19002,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_enum$_Module_$15488_to_t_uint8":{"entryPoint":17527,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_int96_to_t_int96_fromStack":{"entryPoint":17184,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1_to_t_bytes32_fromStack":{"entryPoint":20027,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_struct$_ModuleData_$15496_memory_ptr_to_t_struct$_ModuleData_$15496_memory_ptr_fromStack":{"entryPoint":17941,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_uint128_to_t_uint128_fromStack":{"entryPoint":18866,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_uint256_to_t_uint256_fromStack":{"entryPoint":16396,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":19877,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed":{"entryPoint":19791,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_address_t_uint256_t_int96__to_t_address_t_address_t_address_t_uint256_t_int96__fromStack_reversed":{"entryPoint":17199,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed":{"entryPoint":18208,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_address_t_bytes_memory_ptr_t_struct$_ModuleData_$15496_memory_ptr_t_address__to_t_address_t_bytes_memory_ptr_t_struct$_ModuleData_$15496_memory_ptr_t_address__fromStack_reversed":{"entryPoint":18009,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_address_t_uint256_t_uint256_t_uint256_t_bytes32_t_bool__to_t_address_t_uint256_t_uint256_t_uint256_t_bytes32_t_bool__fromStack_reversed":{"entryPoint":16802,"id":null,"parameterSlots":7,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":16652,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed":{"entryPoint":18181,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_IConstantFlowAgreementV1_$5487_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":19326,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_contract$_ISuperToken_$6947_t_address__to_t_address_t_address__fromStack_reversed":{"entryPoint":20264,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_contract$_ISuperToken_$6947_t_address_t_address__to_t_address_t_address_t_address__fromStack_reversed":{"entryPoint":19017,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_contract$_ISuperToken_$6947_t_address_t_address_t_bytes_memory_ptr__to_t_address_t_address_t_address_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":19217,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_contract$_ISuperToken_$6947_t_address_t_int96_t_bytes_memory_ptr__to_t_address_t_address_t_int96_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":19715,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_contract$_ISuperToken_$6947_t_int96__to_t_address_t_int96__fromStack_reversed":{"entryPoint":20223,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1__to_t_bytes32__fromStack_reversed":{"entryPoint":20042,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint128_t_uint128__to_t_uint128_t_uint128__fromStack_reversed":{"entryPoint":18881,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":16411,"id":null,"parameterSlots":2,"returnSlots":1},"allocate_memory":{"entryPoint":19454,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":16024,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_t_bytes_memory_ptr":{"entryPoint":19481,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr":{"entryPoint":17701,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_t_array$_t_enum$_Module_$15488_$dyn_memory_ptr":{"entryPoint":17454,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr":{"entryPoint":17673,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_array$_t_enum$_Module_$15488_$dyn_memory_ptr":{"entryPoint":17426,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_bytes_memory_ptr":{"entryPoint":17282,"id":null,"parameterSlots":1,"returnSlots":1},"array_nextElement_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr":{"entryPoint":17811,"id":null,"parameterSlots":1,"returnSlots":1},"array_nextElement_t_array$_t_enum$_Module_$15488_$dyn_memory_ptr":{"entryPoint":17566,"id":null,"parameterSlots":1,"returnSlots":1},"array_storeLengthForEncoding_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr":{"entryPoint":17684,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_array$_t_uint8_$dyn_memory_ptr":{"entryPoint":17437,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_bytes_memory_ptr":{"entryPoint":17717,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack":{"entryPoint":17293,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_int96":{"entryPoint":18738,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":17132,"id":null,"parameterSlots":2,"returnSlots":1},"checked_div_t_uint256":{"entryPoint":18399,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_t_uint256":{"entryPoint":18600,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_int96":{"entryPoint":18500,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":18448,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_t_address":{"entryPoint":16076,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_bool":{"entryPoint":16625,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_bytes32":{"entryPoint":16777,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_contract$_ISuperAgreement_$6395":{"entryPoint":20069,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_enum$_Module_$15488":{"entryPoint":17490,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_int96":{"entryPoint":16256,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1":{"entryPoint":19970,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint128":{"entryPoint":18838,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint160":{"entryPoint":16044,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint256":{"entryPoint":16138,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_contract$_IConstantFlowAgreementV1_$5487_to_t_address":{"entryPoint":19293,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_contract$_ISuperToken_$6947_to_t_address":{"entryPoint":18984,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_enum$_Module_$15488_to_t_uint8":{"entryPoint":17509,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1_to_t_bytes32":{"entryPoint":19993,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_uint160_to_t_address":{"entryPoint":18966,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_uint160_to_t_uint160":{"entryPoint":18932,"id":null,"parameterSlots":1,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":17310,"id":null,"parameterSlots":3,"returnSlots":0},"finalize_allocation":{"entryPoint":19405,"id":null,"parameterSlots":2,"returnSlots":0},"identity":{"entryPoint":18922,"id":null,"parameterSlots":1,"returnSlots":1},"increment_t_uint256":{"entryPoint":18666,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x01":{"entryPoint":20176,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x11":{"entryPoint":17085,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x12":{"entryPoint":18352,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":17038,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":16991,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":16944,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":19395,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae":{"entryPoint":19400,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":16039,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":16034,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of_32":{"entryPoint":17352,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_0":{"entryPoint":19980,"id":null,"parameterSlots":1,"returnSlots":1},"validator_assert_t_enum$_Module_$15488":{"entryPoint":17470,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_address":{"entryPoint":16094,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_bool":{"entryPoint":18263,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_bytes32":{"entryPoint":18092,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_contract$_ISuperAgreement_$6395":{"entryPoint":20087,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_int96":{"entryPoint":16269,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_uint256":{"entryPoint":16148,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:32067:43","statements":[{"body":{"nodeType":"YulBlock","src":"47:35:43","statements":[{"nodeType":"YulAssignment","src":"57:19:43","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"73:2:43","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"67:5:43"},"nodeType":"YulFunctionCall","src":"67:9:43"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"57:6:43"}]}]},"name":"allocate_unbounded","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"40:6:43","type":""}],"src":"7:75:43"},{"body":{"nodeType":"YulBlock","src":"177:28:43","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"194:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"197:1:43","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"187:6:43"},"nodeType":"YulFunctionCall","src":"187:12:43"},"nodeType":"YulExpressionStatement","src":"187:12:43"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulFunctionDefinition","src":"88:117:43"},{"body":{"nodeType":"YulBlock","src":"300:28:43","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"317:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"320:1:43","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"310:6:43"},"nodeType":"YulFunctionCall","src":"310:12:43"},"nodeType":"YulExpressionStatement","src":"310:12:43"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulFunctionDefinition","src":"211:117:43"},{"body":{"nodeType":"YulBlock","src":"379:81:43","statements":[{"nodeType":"YulAssignment","src":"389:65:43","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"404:5:43"},{"kind":"number","nodeType":"YulLiteral","src":"411:42:43","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"400:3:43"},"nodeType":"YulFunctionCall","src":"400:54:43"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"389:7:43"}]}]},"name":"cleanup_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"361:5:43","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"371:7:43","type":""}],"src":"334:126:43"},{"body":{"nodeType":"YulBlock","src":"511:51:43","statements":[{"nodeType":"YulAssignment","src":"521:35:43","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"550:5:43"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"532:17:43"},"nodeType":"YulFunctionCall","src":"532:24:43"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"521:7:43"}]}]},"name":"cleanup_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"493:5:43","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"503:7:43","type":""}],"src":"466:96:43"},{"body":{"nodeType":"YulBlock","src":"611:79:43","statements":[{"body":{"nodeType":"YulBlock","src":"668:16:43","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"677:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"680:1:43","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"670:6:43"},"nodeType":"YulFunctionCall","src":"670:12:43"},"nodeType":"YulExpressionStatement","src":"670:12:43"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"634:5:43"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"659:5:43"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"641:17:43"},"nodeType":"YulFunctionCall","src":"641:24:43"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"631:2:43"},"nodeType":"YulFunctionCall","src":"631:35:43"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"624:6:43"},"nodeType":"YulFunctionCall","src":"624:43:43"},"nodeType":"YulIf","src":"621:63:43"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"604:5:43","type":""}],"src":"568:122:43"},{"body":{"nodeType":"YulBlock","src":"748:87:43","statements":[{"nodeType":"YulAssignment","src":"758:29:43","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"780:6:43"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"767:12:43"},"nodeType":"YulFunctionCall","src":"767:20:43"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"758:5:43"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"823:5:43"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"796:26:43"},"nodeType":"YulFunctionCall","src":"796:33:43"},"nodeType":"YulExpressionStatement","src":"796:33:43"}]},"name":"abi_decode_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"726:6:43","type":""},{"name":"end","nodeType":"YulTypedName","src":"734:3:43","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"742:5:43","type":""}],"src":"696:139:43"},{"body":{"nodeType":"YulBlock","src":"886:32:43","statements":[{"nodeType":"YulAssignment","src":"896:16:43","value":{"name":"value","nodeType":"YulIdentifier","src":"907:5:43"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"896:7:43"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"868:5:43","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"878:7:43","type":""}],"src":"841:77:43"},{"body":{"nodeType":"YulBlock","src":"967:79:43","statements":[{"body":{"nodeType":"YulBlock","src":"1024:16:43","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1033:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1036:1:43","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1026:6:43"},"nodeType":"YulFunctionCall","src":"1026:12:43"},"nodeType":"YulExpressionStatement","src":"1026:12:43"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"990:5:43"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1015:5:43"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"997:17:43"},"nodeType":"YulFunctionCall","src":"997:24:43"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"987:2:43"},"nodeType":"YulFunctionCall","src":"987:35:43"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"980:6:43"},"nodeType":"YulFunctionCall","src":"980:43:43"},"nodeType":"YulIf","src":"977:63:43"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"960:5:43","type":""}],"src":"924:122:43"},{"body":{"nodeType":"YulBlock","src":"1104:87:43","statements":[{"nodeType":"YulAssignment","src":"1114:29:43","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1136:6:43"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1123:12:43"},"nodeType":"YulFunctionCall","src":"1123:20:43"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1114:5:43"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1179:5:43"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"1152:26:43"},"nodeType":"YulFunctionCall","src":"1152:33:43"},"nodeType":"YulExpressionStatement","src":"1152:33:43"}]},"name":"abi_decode_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1082:6:43","type":""},{"name":"end","nodeType":"YulTypedName","src":"1090:3:43","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1098:5:43","type":""}],"src":"1052:139:43"},{"body":{"nodeType":"YulBlock","src":"1280:391:43","statements":[{"body":{"nodeType":"YulBlock","src":"1326:83:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"1328:77:43"},"nodeType":"YulFunctionCall","src":"1328:79:43"},"nodeType":"YulExpressionStatement","src":"1328:79:43"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1301:7:43"},{"name":"headStart","nodeType":"YulIdentifier","src":"1310:9:43"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1297:3:43"},"nodeType":"YulFunctionCall","src":"1297:23:43"},{"kind":"number","nodeType":"YulLiteral","src":"1322:2:43","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1293:3:43"},"nodeType":"YulFunctionCall","src":"1293:32:43"},"nodeType":"YulIf","src":"1290:119:43"},{"nodeType":"YulBlock","src":"1419:117:43","statements":[{"nodeType":"YulVariableDeclaration","src":"1434:15:43","value":{"kind":"number","nodeType":"YulLiteral","src":"1448:1:43","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1438:6:43","type":""}]},{"nodeType":"YulAssignment","src":"1463:63:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1498:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"1509:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1494:3:43"},"nodeType":"YulFunctionCall","src":"1494:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1518:7:43"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"1473:20:43"},"nodeType":"YulFunctionCall","src":"1473:53:43"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1463:6:43"}]}]},{"nodeType":"YulBlock","src":"1546:118:43","statements":[{"nodeType":"YulVariableDeclaration","src":"1561:16:43","value":{"kind":"number","nodeType":"YulLiteral","src":"1575:2:43","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1565:6:43","type":""}]},{"nodeType":"YulAssignment","src":"1591:63:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1626:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"1637:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1622:3:43"},"nodeType":"YulFunctionCall","src":"1622:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1646:7:43"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"1601:20:43"},"nodeType":"YulFunctionCall","src":"1601:53:43"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1591:6:43"}]}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1242:9:43","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1253:7:43","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1265:6:43","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1273:6:43","type":""}],"src":"1197:474:43"},{"body":{"nodeType":"YulBlock","src":"1720:48:43","statements":[{"nodeType":"YulAssignment","src":"1730:32:43","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1752:2:43","type":"","value":"11"},{"name":"value","nodeType":"YulIdentifier","src":"1756:5:43"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"1741:10:43"},"nodeType":"YulFunctionCall","src":"1741:21:43"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"1730:7:43"}]}]},"name":"cleanup_t_int96","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1702:5:43","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"1712:7:43","type":""}],"src":"1677:91:43"},{"body":{"nodeType":"YulBlock","src":"1815:77:43","statements":[{"body":{"nodeType":"YulBlock","src":"1870:16:43","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1879:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1882:1:43","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1872:6:43"},"nodeType":"YulFunctionCall","src":"1872:12:43"},"nodeType":"YulExpressionStatement","src":"1872:12:43"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1838:5:43"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1861:5:43"}],"functionName":{"name":"cleanup_t_int96","nodeType":"YulIdentifier","src":"1845:15:43"},"nodeType":"YulFunctionCall","src":"1845:22:43"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1835:2:43"},"nodeType":"YulFunctionCall","src":"1835:33:43"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1828:6:43"},"nodeType":"YulFunctionCall","src":"1828:41:43"},"nodeType":"YulIf","src":"1825:61:43"}]},"name":"validator_revert_t_int96","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1808:5:43","type":""}],"src":"1774:118:43"},{"body":{"nodeType":"YulBlock","src":"1948:85:43","statements":[{"nodeType":"YulAssignment","src":"1958:29:43","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1980:6:43"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1967:12:43"},"nodeType":"YulFunctionCall","src":"1967:20:43"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1958:5:43"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2021:5:43"}],"functionName":{"name":"validator_revert_t_int96","nodeType":"YulIdentifier","src":"1996:24:43"},"nodeType":"YulFunctionCall","src":"1996:31:43"},"nodeType":"YulExpressionStatement","src":"1996:31:43"}]},"name":"abi_decode_t_int96","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1926:6:43","type":""},{"name":"end","nodeType":"YulTypedName","src":"1934:3:43","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1942:5:43","type":""}],"src":"1898:135:43"},{"body":{"nodeType":"YulBlock","src":"2137:517:43","statements":[{"body":{"nodeType":"YulBlock","src":"2183:83:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"2185:77:43"},"nodeType":"YulFunctionCall","src":"2185:79:43"},"nodeType":"YulExpressionStatement","src":"2185:79:43"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2158:7:43"},{"name":"headStart","nodeType":"YulIdentifier","src":"2167:9:43"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2154:3:43"},"nodeType":"YulFunctionCall","src":"2154:23:43"},{"kind":"number","nodeType":"YulLiteral","src":"2179:2:43","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2150:3:43"},"nodeType":"YulFunctionCall","src":"2150:32:43"},"nodeType":"YulIf","src":"2147:119:43"},{"nodeType":"YulBlock","src":"2276:117:43","statements":[{"nodeType":"YulVariableDeclaration","src":"2291:15:43","value":{"kind":"number","nodeType":"YulLiteral","src":"2305:1:43","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2295:6:43","type":""}]},{"nodeType":"YulAssignment","src":"2320:63:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2355:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"2366:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2351:3:43"},"nodeType":"YulFunctionCall","src":"2351:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2375:7:43"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"2330:20:43"},"nodeType":"YulFunctionCall","src":"2330:53:43"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2320:6:43"}]}]},{"nodeType":"YulBlock","src":"2403:118:43","statements":[{"nodeType":"YulVariableDeclaration","src":"2418:16:43","value":{"kind":"number","nodeType":"YulLiteral","src":"2432:2:43","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2422:6:43","type":""}]},{"nodeType":"YulAssignment","src":"2448:63:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2483:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"2494:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2479:3:43"},"nodeType":"YulFunctionCall","src":"2479:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2503:7:43"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"2458:20:43"},"nodeType":"YulFunctionCall","src":"2458:53:43"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2448:6:43"}]}]},{"nodeType":"YulBlock","src":"2531:116:43","statements":[{"nodeType":"YulVariableDeclaration","src":"2546:16:43","value":{"kind":"number","nodeType":"YulLiteral","src":"2560:2:43","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2550:6:43","type":""}]},{"nodeType":"YulAssignment","src":"2576:61:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2609:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"2620:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2605:3:43"},"nodeType":"YulFunctionCall","src":"2605:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2629:7:43"}],"functionName":{"name":"abi_decode_t_int96","nodeType":"YulIdentifier","src":"2586:18:43"},"nodeType":"YulFunctionCall","src":"2586:51:43"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"2576:6:43"}]}]}]},"name":"abi_decode_tuple_t_addresst_addresst_int96","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2091:9:43","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2102:7:43","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2114:6:43","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2122:6:43","type":""},{"name":"value2","nodeType":"YulTypedName","src":"2130:6:43","type":""}],"src":"2039:615:43"},{"body":{"nodeType":"YulBlock","src":"2725:53:43","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2742:3:43"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2765:5:43"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"2747:17:43"},"nodeType":"YulFunctionCall","src":"2747:24:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2735:6:43"},"nodeType":"YulFunctionCall","src":"2735:37:43"},"nodeType":"YulExpressionStatement","src":"2735:37:43"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2713:5:43","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2720:3:43","type":""}],"src":"2660:118:43"},{"body":{"nodeType":"YulBlock","src":"2882:124:43","statements":[{"nodeType":"YulAssignment","src":"2892:26:43","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2904:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"2915:2:43","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2900:3:43"},"nodeType":"YulFunctionCall","src":"2900:18:43"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2892:4:43"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2972:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2985:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"2996:1:43","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2981:3:43"},"nodeType":"YulFunctionCall","src":"2981:17:43"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"2928:43:43"},"nodeType":"YulFunctionCall","src":"2928:71:43"},"nodeType":"YulExpressionStatement","src":"2928:71:43"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2854:9:43","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2866:6:43","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2877:4:43","type":""}],"src":"2784:222:43"},{"body":{"nodeType":"YulBlock","src":"3144:775:43","statements":[{"body":{"nodeType":"YulBlock","src":"3191:83:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"3193:77:43"},"nodeType":"YulFunctionCall","src":"3193:79:43"},"nodeType":"YulExpressionStatement","src":"3193:79:43"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3165:7:43"},{"name":"headStart","nodeType":"YulIdentifier","src":"3174:9:43"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3161:3:43"},"nodeType":"YulFunctionCall","src":"3161:23:43"},{"kind":"number","nodeType":"YulLiteral","src":"3186:3:43","type":"","value":"160"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3157:3:43"},"nodeType":"YulFunctionCall","src":"3157:33:43"},"nodeType":"YulIf","src":"3154:120:43"},{"nodeType":"YulBlock","src":"3284:117:43","statements":[{"nodeType":"YulVariableDeclaration","src":"3299:15:43","value":{"kind":"number","nodeType":"YulLiteral","src":"3313:1:43","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3303:6:43","type":""}]},{"nodeType":"YulAssignment","src":"3328:63:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3363:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"3374:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3359:3:43"},"nodeType":"YulFunctionCall","src":"3359:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3383:7:43"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"3338:20:43"},"nodeType":"YulFunctionCall","src":"3338:53:43"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3328:6:43"}]}]},{"nodeType":"YulBlock","src":"3411:118:43","statements":[{"nodeType":"YulVariableDeclaration","src":"3426:16:43","value":{"kind":"number","nodeType":"YulLiteral","src":"3440:2:43","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3430:6:43","type":""}]},{"nodeType":"YulAssignment","src":"3456:63:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3491:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"3502:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3487:3:43"},"nodeType":"YulFunctionCall","src":"3487:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3511:7:43"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"3466:20:43"},"nodeType":"YulFunctionCall","src":"3466:53:43"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3456:6:43"}]}]},{"nodeType":"YulBlock","src":"3539:118:43","statements":[{"nodeType":"YulVariableDeclaration","src":"3554:16:43","value":{"kind":"number","nodeType":"YulLiteral","src":"3568:2:43","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3558:6:43","type":""}]},{"nodeType":"YulAssignment","src":"3584:63:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3619:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"3630:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3615:3:43"},"nodeType":"YulFunctionCall","src":"3615:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3639:7:43"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"3594:20:43"},"nodeType":"YulFunctionCall","src":"3594:53:43"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"3584:6:43"}]}]},{"nodeType":"YulBlock","src":"3667:118:43","statements":[{"nodeType":"YulVariableDeclaration","src":"3682:16:43","value":{"kind":"number","nodeType":"YulLiteral","src":"3696:2:43","type":"","value":"96"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3686:6:43","type":""}]},{"nodeType":"YulAssignment","src":"3712:63:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3747:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"3758:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3743:3:43"},"nodeType":"YulFunctionCall","src":"3743:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3767:7:43"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"3722:20:43"},"nodeType":"YulFunctionCall","src":"3722:53:43"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"3712:6:43"}]}]},{"nodeType":"YulBlock","src":"3795:117:43","statements":[{"nodeType":"YulVariableDeclaration","src":"3810:17:43","value":{"kind":"number","nodeType":"YulLiteral","src":"3824:3:43","type":"","value":"128"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3814:6:43","type":""}]},{"nodeType":"YulAssignment","src":"3841:61:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3874:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"3885:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3870:3:43"},"nodeType":"YulFunctionCall","src":"3870:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3894:7:43"}],"functionName":{"name":"abi_decode_t_int96","nodeType":"YulIdentifier","src":"3851:18:43"},"nodeType":"YulFunctionCall","src":"3851:51:43"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"3841:6:43"}]}]}]},"name":"abi_decode_tuple_t_addresst_addresst_addresst_uint256t_int96","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3082:9:43","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3093:7:43","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3105:6:43","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3113:6:43","type":""},{"name":"value2","nodeType":"YulTypedName","src":"3121:6:43","type":""},{"name":"value3","nodeType":"YulTypedName","src":"3129:6:43","type":""},{"name":"value4","nodeType":"YulTypedName","src":"3137:6:43","type":""}],"src":"3012:907:43"},{"body":{"nodeType":"YulBlock","src":"4008:391:43","statements":[{"body":{"nodeType":"YulBlock","src":"4054:83:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"4056:77:43"},"nodeType":"YulFunctionCall","src":"4056:79:43"},"nodeType":"YulExpressionStatement","src":"4056:79:43"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4029:7:43"},{"name":"headStart","nodeType":"YulIdentifier","src":"4038:9:43"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4025:3:43"},"nodeType":"YulFunctionCall","src":"4025:23:43"},{"kind":"number","nodeType":"YulLiteral","src":"4050:2:43","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4021:3:43"},"nodeType":"YulFunctionCall","src":"4021:32:43"},"nodeType":"YulIf","src":"4018:119:43"},{"nodeType":"YulBlock","src":"4147:117:43","statements":[{"nodeType":"YulVariableDeclaration","src":"4162:15:43","value":{"kind":"number","nodeType":"YulLiteral","src":"4176:1:43","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4166:6:43","type":""}]},{"nodeType":"YulAssignment","src":"4191:63:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4226:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"4237:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4222:3:43"},"nodeType":"YulFunctionCall","src":"4222:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4246:7:43"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"4201:20:43"},"nodeType":"YulFunctionCall","src":"4201:53:43"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4191:6:43"}]}]},{"nodeType":"YulBlock","src":"4274:118:43","statements":[{"nodeType":"YulVariableDeclaration","src":"4289:16:43","value":{"kind":"number","nodeType":"YulLiteral","src":"4303:2:43","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4293:6:43","type":""}]},{"nodeType":"YulAssignment","src":"4319:63:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4354:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"4365:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4350:3:43"},"nodeType":"YulFunctionCall","src":"4350:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4374:7:43"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"4329:20:43"},"nodeType":"YulFunctionCall","src":"4329:53:43"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4319:6:43"}]}]}]},"name":"abi_decode_tuple_t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3970:9:43","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3981:7:43","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3993:6:43","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4001:6:43","type":""}],"src":"3925:474:43"},{"body":{"nodeType":"YulBlock","src":"4447:48:43","statements":[{"nodeType":"YulAssignment","src":"4457:32:43","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4482:5:43"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4475:6:43"},"nodeType":"YulFunctionCall","src":"4475:13:43"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4468:6:43"},"nodeType":"YulFunctionCall","src":"4468:21:43"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"4457:7:43"}]}]},"name":"cleanup_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4429:5:43","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"4439:7:43","type":""}],"src":"4405:90:43"},{"body":{"nodeType":"YulBlock","src":"4560:50:43","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4577:3:43"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4597:5:43"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"4582:14:43"},"nodeType":"YulFunctionCall","src":"4582:21:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4570:6:43"},"nodeType":"YulFunctionCall","src":"4570:34:43"},"nodeType":"YulExpressionStatement","src":"4570:34:43"}]},"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4548:5:43","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4555:3:43","type":""}],"src":"4501:109:43"},{"body":{"nodeType":"YulBlock","src":"4708:118:43","statements":[{"nodeType":"YulAssignment","src":"4718:26:43","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4730:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"4741:2:43","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4726:3:43"},"nodeType":"YulFunctionCall","src":"4726:18:43"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4718:4:43"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4792:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4805:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"4816:1:43","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4801:3:43"},"nodeType":"YulFunctionCall","src":"4801:17:43"}],"functionName":{"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulIdentifier","src":"4754:37:43"},"nodeType":"YulFunctionCall","src":"4754:65:43"},"nodeType":"YulExpressionStatement","src":"4754:65:43"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4680:9:43","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4692:6:43","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4703:4:43","type":""}],"src":"4616:210:43"},{"body":{"nodeType":"YulBlock","src":"4932:519:43","statements":[{"body":{"nodeType":"YulBlock","src":"4978:83:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"4980:77:43"},"nodeType":"YulFunctionCall","src":"4980:79:43"},"nodeType":"YulExpressionStatement","src":"4980:79:43"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4953:7:43"},{"name":"headStart","nodeType":"YulIdentifier","src":"4962:9:43"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4949:3:43"},"nodeType":"YulFunctionCall","src":"4949:23:43"},{"kind":"number","nodeType":"YulLiteral","src":"4974:2:43","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4945:3:43"},"nodeType":"YulFunctionCall","src":"4945:32:43"},"nodeType":"YulIf","src":"4942:119:43"},{"nodeType":"YulBlock","src":"5071:117:43","statements":[{"nodeType":"YulVariableDeclaration","src":"5086:15:43","value":{"kind":"number","nodeType":"YulLiteral","src":"5100:1:43","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5090:6:43","type":""}]},{"nodeType":"YulAssignment","src":"5115:63:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5150:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"5161:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5146:3:43"},"nodeType":"YulFunctionCall","src":"5146:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5170:7:43"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"5125:20:43"},"nodeType":"YulFunctionCall","src":"5125:53:43"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5115:6:43"}]}]},{"nodeType":"YulBlock","src":"5198:118:43","statements":[{"nodeType":"YulVariableDeclaration","src":"5213:16:43","value":{"kind":"number","nodeType":"YulLiteral","src":"5227:2:43","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5217:6:43","type":""}]},{"nodeType":"YulAssignment","src":"5243:63:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5278:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"5289:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5274:3:43"},"nodeType":"YulFunctionCall","src":"5274:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5298:7:43"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"5253:20:43"},"nodeType":"YulFunctionCall","src":"5253:53:43"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"5243:6:43"}]}]},{"nodeType":"YulBlock","src":"5326:118:43","statements":[{"nodeType":"YulVariableDeclaration","src":"5341:16:43","value":{"kind":"number","nodeType":"YulLiteral","src":"5355:2:43","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5345:6:43","type":""}]},{"nodeType":"YulAssignment","src":"5371:63:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5406:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"5417:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5402:3:43"},"nodeType":"YulFunctionCall","src":"5402:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5426:7:43"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"5381:20:43"},"nodeType":"YulFunctionCall","src":"5381:53:43"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"5371:6:43"}]}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4886:9:43","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4897:7:43","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4909:6:43","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4917:6:43","type":""},{"name":"value2","nodeType":"YulTypedName","src":"4925:6:43","type":""}],"src":"4832:619:43"},{"body":{"nodeType":"YulBlock","src":"5522:53:43","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5539:3:43"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5562:5:43"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"5544:17:43"},"nodeType":"YulFunctionCall","src":"5544:24:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5532:6:43"},"nodeType":"YulFunctionCall","src":"5532:37:43"},"nodeType":"YulExpressionStatement","src":"5532:37:43"}]},"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5510:5:43","type":""},{"name":"pos","nodeType":"YulTypedName","src":"5517:3:43","type":""}],"src":"5457:118:43"},{"body":{"nodeType":"YulBlock","src":"5626:32:43","statements":[{"nodeType":"YulAssignment","src":"5636:16:43","value":{"name":"value","nodeType":"YulIdentifier","src":"5647:5:43"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5636:7:43"}]}]},"name":"cleanup_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5608:5:43","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5618:7:43","type":""}],"src":"5581:77:43"},{"body":{"nodeType":"YulBlock","src":"5729:53:43","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5746:3:43"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5769:5:43"}],"functionName":{"name":"cleanup_t_bytes32","nodeType":"YulIdentifier","src":"5751:17:43"},"nodeType":"YulFunctionCall","src":"5751:24:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5739:6:43"},"nodeType":"YulFunctionCall","src":"5739:37:43"},"nodeType":"YulExpressionStatement","src":"5739:37:43"}]},"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5717:5:43","type":""},{"name":"pos","nodeType":"YulTypedName","src":"5724:3:43","type":""}],"src":"5664:118:43"},{"body":{"nodeType":"YulBlock","src":"6020:531:43","statements":[{"nodeType":"YulAssignment","src":"6030:27:43","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6042:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"6053:3:43","type":"","value":"192"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6038:3:43"},"nodeType":"YulFunctionCall","src":"6038:19:43"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6030:4:43"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6111:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6124:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"6135:1:43","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6120:3:43"},"nodeType":"YulFunctionCall","src":"6120:17:43"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"6067:43:43"},"nodeType":"YulFunctionCall","src":"6067:71:43"},"nodeType":"YulExpressionStatement","src":"6067:71:43"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"6192:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6205:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"6216:2:43","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6201:3:43"},"nodeType":"YulFunctionCall","src":"6201:18:43"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"6148:43:43"},"nodeType":"YulFunctionCall","src":"6148:72:43"},"nodeType":"YulExpressionStatement","src":"6148:72:43"},{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"6274:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6287:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"6298:2:43","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6283:3:43"},"nodeType":"YulFunctionCall","src":"6283:18:43"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"6230:43:43"},"nodeType":"YulFunctionCall","src":"6230:72:43"},"nodeType":"YulExpressionStatement","src":"6230:72:43"},{"expression":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"6356:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6369:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"6380:2:43","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6365:3:43"},"nodeType":"YulFunctionCall","src":"6365:18:43"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"6312:43:43"},"nodeType":"YulFunctionCall","src":"6312:72:43"},"nodeType":"YulExpressionStatement","src":"6312:72:43"},{"expression":{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"6438:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6451:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"6462:3:43","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6447:3:43"},"nodeType":"YulFunctionCall","src":"6447:19:43"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nodeType":"YulIdentifier","src":"6394:43:43"},"nodeType":"YulFunctionCall","src":"6394:73:43"},"nodeType":"YulExpressionStatement","src":"6394:73:43"},{"expression":{"arguments":[{"name":"value5","nodeType":"YulIdentifier","src":"6515:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6528:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"6539:3:43","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6524:3:43"},"nodeType":"YulFunctionCall","src":"6524:19:43"}],"functionName":{"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulIdentifier","src":"6477:37:43"},"nodeType":"YulFunctionCall","src":"6477:67:43"},"nodeType":"YulExpressionStatement","src":"6477:67:43"}]},"name":"abi_encode_tuple_t_address_t_uint256_t_uint256_t_uint256_t_bytes32_t_bool__to_t_address_t_uint256_t_uint256_t_uint256_t_bytes32_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5952:9:43","type":""},{"name":"value5","nodeType":"YulTypedName","src":"5964:6:43","type":""},{"name":"value4","nodeType":"YulTypedName","src":"5972:6:43","type":""},{"name":"value3","nodeType":"YulTypedName","src":"5980:6:43","type":""},{"name":"value2","nodeType":"YulTypedName","src":"5988:6:43","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5996:6:43","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6004:6:43","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6015:4:43","type":""}],"src":"5788:763:43"},{"body":{"nodeType":"YulBlock","src":"6623:263:43","statements":[{"body":{"nodeType":"YulBlock","src":"6669:83:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"6671:77:43"},"nodeType":"YulFunctionCall","src":"6671:79:43"},"nodeType":"YulExpressionStatement","src":"6671:79:43"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6644:7:43"},{"name":"headStart","nodeType":"YulIdentifier","src":"6653:9:43"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6640:3:43"},"nodeType":"YulFunctionCall","src":"6640:23:43"},{"kind":"number","nodeType":"YulLiteral","src":"6665:2:43","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6636:3:43"},"nodeType":"YulFunctionCall","src":"6636:32:43"},"nodeType":"YulIf","src":"6633:119:43"},{"nodeType":"YulBlock","src":"6762:117:43","statements":[{"nodeType":"YulVariableDeclaration","src":"6777:15:43","value":{"kind":"number","nodeType":"YulLiteral","src":"6791:1:43","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6781:6:43","type":""}]},{"nodeType":"YulAssignment","src":"6806:63:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6841:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"6852:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6837:3:43"},"nodeType":"YulFunctionCall","src":"6837:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6861:7:43"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"6816:20:43"},"nodeType":"YulFunctionCall","src":"6816:53:43"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6806:6:43"}]}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6593:9:43","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6604:7:43","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6616:6:43","type":""}],"src":"6557:329:43"},{"body":{"nodeType":"YulBlock","src":"6920:152:43","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6937:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6940:77:43","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6930:6:43"},"nodeType":"YulFunctionCall","src":"6930:88:43"},"nodeType":"YulExpressionStatement","src":"6930:88:43"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7034:1:43","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"7037:4:43","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7027:6:43"},"nodeType":"YulFunctionCall","src":"7027:15:43"},"nodeType":"YulExpressionStatement","src":"7027:15:43"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7058:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7061:4:43","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7051:6:43"},"nodeType":"YulFunctionCall","src":"7051:15:43"},"nodeType":"YulExpressionStatement","src":"7051:15:43"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"6892:180:43"},{"body":{"nodeType":"YulBlock","src":"7106:152:43","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7123:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7126:77:43","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7116:6:43"},"nodeType":"YulFunctionCall","src":"7116:88:43"},"nodeType":"YulExpressionStatement","src":"7116:88:43"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7220:1:43","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"7223:4:43","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7213:6:43"},"nodeType":"YulFunctionCall","src":"7213:15:43"},"nodeType":"YulExpressionStatement","src":"7213:15:43"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7244:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7247:4:43","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7237:6:43"},"nodeType":"YulFunctionCall","src":"7237:15:43"},"nodeType":"YulExpressionStatement","src":"7237:15:43"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"7078:180:43"},{"body":{"nodeType":"YulBlock","src":"7292:152:43","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7309:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7312:77:43","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7302:6:43"},"nodeType":"YulFunctionCall","src":"7302:88:43"},"nodeType":"YulExpressionStatement","src":"7302:88:43"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7406:1:43","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"7409:4:43","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7399:6:43"},"nodeType":"YulFunctionCall","src":"7399:15:43"},"nodeType":"YulExpressionStatement","src":"7399:15:43"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7430:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7433:4:43","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7423:6:43"},"nodeType":"YulFunctionCall","src":"7423:15:43"},"nodeType":"YulExpressionStatement","src":"7423:15:43"}]},"name":"panic_error_0x21","nodeType":"YulFunctionDefinition","src":"7264:180:43"},{"body":{"nodeType":"YulBlock","src":"7478:152:43","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7495:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7498:77:43","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7488:6:43"},"nodeType":"YulFunctionCall","src":"7488:88:43"},"nodeType":"YulExpressionStatement","src":"7488:88:43"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7592:1:43","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"7595:4:43","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7585:6:43"},"nodeType":"YulFunctionCall","src":"7585:15:43"},"nodeType":"YulExpressionStatement","src":"7585:15:43"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7616:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7619:4:43","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7609:6:43"},"nodeType":"YulFunctionCall","src":"7609:15:43"},"nodeType":"YulExpressionStatement","src":"7609:15:43"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"7450:180:43"},{"body":{"nodeType":"YulBlock","src":"7680:147:43","statements":[{"nodeType":"YulAssignment","src":"7690:25:43","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"7713:1:43"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"7695:17:43"},"nodeType":"YulFunctionCall","src":"7695:20:43"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"7690:1:43"}]},{"nodeType":"YulAssignment","src":"7724:25:43","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"7747:1:43"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"7729:17:43"},"nodeType":"YulFunctionCall","src":"7729:20:43"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"7724:1:43"}]},{"nodeType":"YulAssignment","src":"7758:16:43","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"7769:1:43"},{"name":"y","nodeType":"YulIdentifier","src":"7772:1:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7765:3:43"},"nodeType":"YulFunctionCall","src":"7765:9:43"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"7758:3:43"}]},{"body":{"nodeType":"YulBlock","src":"7798:22:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"7800:16:43"},"nodeType":"YulFunctionCall","src":"7800:18:43"},"nodeType":"YulExpressionStatement","src":"7800:18:43"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"7790:1:43"},{"name":"sum","nodeType":"YulIdentifier","src":"7793:3:43"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7787:2:43"},"nodeType":"YulFunctionCall","src":"7787:10:43"},"nodeType":"YulIf","src":"7784:36:43"}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"7667:1:43","type":""},{"name":"y","nodeType":"YulTypedName","src":"7670:1:43","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"7676:3:43","type":""}],"src":"7636:191:43"},{"body":{"nodeType":"YulBlock","src":"7894:51:43","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"7911:3:43"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7932:5:43"}],"functionName":{"name":"cleanup_t_int96","nodeType":"YulIdentifier","src":"7916:15:43"},"nodeType":"YulFunctionCall","src":"7916:22:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7904:6:43"},"nodeType":"YulFunctionCall","src":"7904:35:43"},"nodeType":"YulExpressionStatement","src":"7904:35:43"}]},"name":"abi_encode_t_int96_to_t_int96_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7882:5:43","type":""},{"name":"pos","nodeType":"YulTypedName","src":"7889:3:43","type":""}],"src":"7833:112:43"},{"body":{"nodeType":"YulBlock","src":"8157:450:43","statements":[{"nodeType":"YulAssignment","src":"8167:27:43","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8179:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"8190:3:43","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8175:3:43"},"nodeType":"YulFunctionCall","src":"8175:19:43"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8167:4:43"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8248:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8261:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"8272:1:43","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8257:3:43"},"nodeType":"YulFunctionCall","src":"8257:17:43"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"8204:43:43"},"nodeType":"YulFunctionCall","src":"8204:71:43"},"nodeType":"YulExpressionStatement","src":"8204:71:43"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"8329:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8342:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"8353:2:43","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8338:3:43"},"nodeType":"YulFunctionCall","src":"8338:18:43"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"8285:43:43"},"nodeType":"YulFunctionCall","src":"8285:72:43"},"nodeType":"YulExpressionStatement","src":"8285:72:43"},{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"8411:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8424:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"8435:2:43","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8420:3:43"},"nodeType":"YulFunctionCall","src":"8420:18:43"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"8367:43:43"},"nodeType":"YulFunctionCall","src":"8367:72:43"},"nodeType":"YulExpressionStatement","src":"8367:72:43"},{"expression":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"8493:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8506:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"8517:2:43","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8502:3:43"},"nodeType":"YulFunctionCall","src":"8502:18:43"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"8449:43:43"},"nodeType":"YulFunctionCall","src":"8449:72:43"},"nodeType":"YulExpressionStatement","src":"8449:72:43"},{"expression":{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"8571:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8584:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"8595:3:43","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8580:3:43"},"nodeType":"YulFunctionCall","src":"8580:19:43"}],"functionName":{"name":"abi_encode_t_int96_to_t_int96_fromStack","nodeType":"YulIdentifier","src":"8531:39:43"},"nodeType":"YulFunctionCall","src":"8531:69:43"},"nodeType":"YulExpressionStatement","src":"8531:69:43"}]},"name":"abi_encode_tuple_t_address_t_address_t_address_t_uint256_t_int96__to_t_address_t_address_t_address_t_uint256_t_int96__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8097:9:43","type":""},{"name":"value4","nodeType":"YulTypedName","src":"8109:6:43","type":""},{"name":"value3","nodeType":"YulTypedName","src":"8117:6:43","type":""},{"name":"value2","nodeType":"YulTypedName","src":"8125:6:43","type":""},{"name":"value1","nodeType":"YulTypedName","src":"8133:6:43","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8141:6:43","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8152:4:43","type":""}],"src":"7951:656:43"},{"body":{"nodeType":"YulBlock","src":"8671:40:43","statements":[{"nodeType":"YulAssignment","src":"8682:22:43","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8698:5:43"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8692:5:43"},"nodeType":"YulFunctionCall","src":"8692:12:43"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"8682:6:43"}]}]},"name":"array_length_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8654:5:43","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"8664:6:43","type":""}],"src":"8613:98:43"},{"body":{"nodeType":"YulBlock","src":"8812:73:43","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8829:3:43"},{"name":"length","nodeType":"YulIdentifier","src":"8834:6:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8822:6:43"},"nodeType":"YulFunctionCall","src":"8822:19:43"},"nodeType":"YulExpressionStatement","src":"8822:19:43"},{"nodeType":"YulAssignment","src":"8850:29:43","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8869:3:43"},{"kind":"number","nodeType":"YulLiteral","src":"8874:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8865:3:43"},"nodeType":"YulFunctionCall","src":"8865:14:43"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"8850:11:43"}]}]},"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"8784:3:43","type":""},{"name":"length","nodeType":"YulTypedName","src":"8789:6:43","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"8800:11:43","type":""}],"src":"8717:168:43"},{"body":{"nodeType":"YulBlock","src":"8953:184:43","statements":[{"nodeType":"YulVariableDeclaration","src":"8963:10:43","value":{"kind":"number","nodeType":"YulLiteral","src":"8972:1:43","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"8967:1:43","type":""}]},{"body":{"nodeType":"YulBlock","src":"9032:63:43","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"9057:3:43"},{"name":"i","nodeType":"YulIdentifier","src":"9062:1:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9053:3:43"},"nodeType":"YulFunctionCall","src":"9053:11:43"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"9076:3:43"},{"name":"i","nodeType":"YulIdentifier","src":"9081:1:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9072:3:43"},"nodeType":"YulFunctionCall","src":"9072:11:43"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9066:5:43"},"nodeType":"YulFunctionCall","src":"9066:18:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9046:6:43"},"nodeType":"YulFunctionCall","src":"9046:39:43"},"nodeType":"YulExpressionStatement","src":"9046:39:43"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"8993:1:43"},{"name":"length","nodeType":"YulIdentifier","src":"8996:6:43"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"8990:2:43"},"nodeType":"YulFunctionCall","src":"8990:13:43"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"9004:19:43","statements":[{"nodeType":"YulAssignment","src":"9006:15:43","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"9015:1:43"},{"kind":"number","nodeType":"YulLiteral","src":"9018:2:43","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9011:3:43"},"nodeType":"YulFunctionCall","src":"9011:10:43"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"9006:1:43"}]}]},"pre":{"nodeType":"YulBlock","src":"8986:3:43","statements":[]},"src":"8982:113:43"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"9115:3:43"},{"name":"length","nodeType":"YulIdentifier","src":"9120:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9111:3:43"},"nodeType":"YulFunctionCall","src":"9111:16:43"},{"kind":"number","nodeType":"YulLiteral","src":"9129:1:43","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9104:6:43"},"nodeType":"YulFunctionCall","src":"9104:27:43"},"nodeType":"YulExpressionStatement","src":"9104:27:43"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"8935:3:43","type":""},{"name":"dst","nodeType":"YulTypedName","src":"8940:3:43","type":""},{"name":"length","nodeType":"YulTypedName","src":"8945:6:43","type":""}],"src":"8891:246:43"},{"body":{"nodeType":"YulBlock","src":"9191:54:43","statements":[{"nodeType":"YulAssignment","src":"9201:38:43","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9219:5:43"},{"kind":"number","nodeType":"YulLiteral","src":"9226:2:43","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9215:3:43"},"nodeType":"YulFunctionCall","src":"9215:14:43"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9235:2:43","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"9231:3:43"},"nodeType":"YulFunctionCall","src":"9231:7:43"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"9211:3:43"},"nodeType":"YulFunctionCall","src":"9211:28:43"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"9201:6:43"}]}]},"name":"round_up_to_mul_of_32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"9174:5:43","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"9184:6:43","type":""}],"src":"9143:102:43"},{"body":{"nodeType":"YulBlock","src":"9341:283:43","statements":[{"nodeType":"YulVariableDeclaration","src":"9351:52:43","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9397:5:43"}],"functionName":{"name":"array_length_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"9365:31:43"},"nodeType":"YulFunctionCall","src":"9365:38:43"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"9355:6:43","type":""}]},{"nodeType":"YulAssignment","src":"9412:77:43","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9477:3:43"},{"name":"length","nodeType":"YulIdentifier","src":"9482:6:43"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"9419:57:43"},"nodeType":"YulFunctionCall","src":"9419:70:43"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"9412:3:43"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9537:5:43"},{"kind":"number","nodeType":"YulLiteral","src":"9544:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9533:3:43"},"nodeType":"YulFunctionCall","src":"9533:16:43"},{"name":"pos","nodeType":"YulIdentifier","src":"9551:3:43"},{"name":"length","nodeType":"YulIdentifier","src":"9556:6:43"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"9498:34:43"},"nodeType":"YulFunctionCall","src":"9498:65:43"},"nodeType":"YulExpressionStatement","src":"9498:65:43"},{"nodeType":"YulAssignment","src":"9572:46:43","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9583:3:43"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"9610:6:43"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"9588:21:43"},"nodeType":"YulFunctionCall","src":"9588:29:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9579:3:43"},"nodeType":"YulFunctionCall","src":"9579:39:43"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"9572:3:43"}]}]},"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"9322:5:43","type":""},{"name":"pos","nodeType":"YulTypedName","src":"9329:3:43","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"9337:3:43","type":""}],"src":"9251:373:43"},{"body":{"nodeType":"YulBlock","src":"9716:40:43","statements":[{"nodeType":"YulAssignment","src":"9727:22:43","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9743:5:43"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9737:5:43"},"nodeType":"YulFunctionCall","src":"9737:12:43"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"9727:6:43"}]}]},"name":"array_length_t_array$_t_enum$_Module_$15488_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"9699:5:43","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"9709:6:43","type":""}],"src":"9630:126:43"},{"body":{"nodeType":"YulBlock","src":"9861:73:43","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9878:3:43"},{"name":"length","nodeType":"YulIdentifier","src":"9883:6:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9871:6:43"},"nodeType":"YulFunctionCall","src":"9871:19:43"},"nodeType":"YulExpressionStatement","src":"9871:19:43"},{"nodeType":"YulAssignment","src":"9899:29:43","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9918:3:43"},{"kind":"number","nodeType":"YulLiteral","src":"9923:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9914:3:43"},"nodeType":"YulFunctionCall","src":"9914:14:43"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"9899:11:43"}]}]},"name":"array_storeLengthForEncoding_t_array$_t_uint8_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"9833:3:43","type":""},{"name":"length","nodeType":"YulTypedName","src":"9838:6:43","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"9849:11:43","type":""}],"src":"9762:172:43"},{"body":{"nodeType":"YulBlock","src":"10024:60:43","statements":[{"nodeType":"YulAssignment","src":"10034:11:43","value":{"name":"ptr","nodeType":"YulIdentifier","src":"10042:3:43"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"10034:4:43"}]},{"nodeType":"YulAssignment","src":"10055:22:43","value":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"10067:3:43"},{"kind":"number","nodeType":"YulLiteral","src":"10072:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10063:3:43"},"nodeType":"YulFunctionCall","src":"10063:14:43"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"10055:4:43"}]}]},"name":"array_dataslot_t_array$_t_enum$_Module_$15488_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"10011:3:43","type":""}],"returnVariables":[{"name":"data","nodeType":"YulTypedName","src":"10019:4:43","type":""}],"src":"9940:144:43"},{"body":{"nodeType":"YulBlock","src":"10145:62:43","statements":[{"body":{"nodeType":"YulBlock","src":"10179:22:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x21","nodeType":"YulIdentifier","src":"10181:16:43"},"nodeType":"YulFunctionCall","src":"10181:18:43"},"nodeType":"YulExpressionStatement","src":"10181:18:43"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10168:5:43"},{"kind":"number","nodeType":"YulLiteral","src":"10175:1:43","type":"","value":"4"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"10165:2:43"},"nodeType":"YulFunctionCall","src":"10165:12:43"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"10158:6:43"},"nodeType":"YulFunctionCall","src":"10158:20:43"},"nodeType":"YulIf","src":"10155:46:43"}]},"name":"validator_assert_t_enum$_Module_$15488","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"10138:5:43","type":""}],"src":"10090:117:43"},{"body":{"nodeType":"YulBlock","src":"10270:78:43","statements":[{"nodeType":"YulAssignment","src":"10280:16:43","value":{"name":"value","nodeType":"YulIdentifier","src":"10291:5:43"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"10280:7:43"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10336:5:43"}],"functionName":{"name":"validator_assert_t_enum$_Module_$15488","nodeType":"YulIdentifier","src":"10297:38:43"},"nodeType":"YulFunctionCall","src":"10297:45:43"},"nodeType":"YulExpressionStatement","src":"10297:45:43"}]},"name":"cleanup_t_enum$_Module_$15488","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"10252:5:43","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"10262:7:43","type":""}],"src":"10213:135:43"},{"body":{"nodeType":"YulBlock","src":"10424:65:43","statements":[{"nodeType":"YulAssignment","src":"10434:49:43","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10477:5:43"}],"functionName":{"name":"cleanup_t_enum$_Module_$15488","nodeType":"YulIdentifier","src":"10447:29:43"},"nodeType":"YulFunctionCall","src":"10447:36:43"},"variableNames":[{"name":"converted","nodeType":"YulIdentifier","src":"10434:9:43"}]}]},"name":"convert_t_enum$_Module_$15488_to_t_uint8","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"10404:5:43","type":""}],"returnVariables":[{"name":"converted","nodeType":"YulTypedName","src":"10414:9:43","type":""}],"src":"10354:135:43"},{"body":{"nodeType":"YulBlock","src":"10560:76:43","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10577:3:43"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10623:5:43"}],"functionName":{"name":"convert_t_enum$_Module_$15488_to_t_uint8","nodeType":"YulIdentifier","src":"10582:40:43"},"nodeType":"YulFunctionCall","src":"10582:47:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10570:6:43"},"nodeType":"YulFunctionCall","src":"10570:60:43"},"nodeType":"YulExpressionStatement","src":"10570:60:43"}]},"name":"abi_encode_t_enum$_Module_$15488_to_t_uint8","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"10548:5:43","type":""},{"name":"pos","nodeType":"YulTypedName","src":"10555:3:43","type":""}],"src":"10495:141:43"},{"body":{"nodeType":"YulBlock","src":"10732:109:43","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10786:6:43"},{"name":"pos","nodeType":"YulIdentifier","src":"10794:3:43"}],"functionName":{"name":"abi_encode_t_enum$_Module_$15488_to_t_uint8","nodeType":"YulIdentifier","src":"10742:43:43"},"nodeType":"YulFunctionCall","src":"10742:56:43"},"nodeType":"YulExpressionStatement","src":"10742:56:43"},{"nodeType":"YulAssignment","src":"10807:28:43","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10825:3:43"},{"kind":"number","nodeType":"YulLiteral","src":"10830:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10821:3:43"},"nodeType":"YulFunctionCall","src":"10821:14:43"},"variableNames":[{"name":"updatedPos","nodeType":"YulIdentifier","src":"10807:10:43"}]}]},"name":"abi_encodeUpdatedPos_t_enum$_Module_$15488_to_t_uint8","nodeType":"YulFunctionDefinition","parameters":[{"name":"value0","nodeType":"YulTypedName","src":"10705:6:43","type":""},{"name":"pos","nodeType":"YulTypedName","src":"10713:3:43","type":""}],"returnVariables":[{"name":"updatedPos","nodeType":"YulTypedName","src":"10721:10:43","type":""}],"src":"10642:199:43"},{"body":{"nodeType":"YulBlock","src":"10934:38:43","statements":[{"nodeType":"YulAssignment","src":"10944:22:43","value":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"10956:3:43"},{"kind":"number","nodeType":"YulLiteral","src":"10961:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10952:3:43"},"nodeType":"YulFunctionCall","src":"10952:14:43"},"variableNames":[{"name":"next","nodeType":"YulIdentifier","src":"10944:4:43"}]}]},"name":"array_nextElement_t_array$_t_enum$_Module_$15488_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"10921:3:43","type":""}],"returnVariables":[{"name":"next","nodeType":"YulTypedName","src":"10929:4:43","type":""}],"src":"10847:125:43"},{"body":{"nodeType":"YulBlock","src":"11134:642:43","statements":[{"nodeType":"YulVariableDeclaration","src":"11144:80:43","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11218:5:43"}],"functionName":{"name":"array_length_t_array$_t_enum$_Module_$15488_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"11158:59:43"},"nodeType":"YulFunctionCall","src":"11158:66:43"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"11148:6:43","type":""}]},{"nodeType":"YulAssignment","src":"11233:81:43","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"11302:3:43"},{"name":"length","nodeType":"YulIdentifier","src":"11307:6:43"}],"functionName":{"name":"array_storeLengthForEncoding_t_array$_t_uint8_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"11240:61:43"},"nodeType":"YulFunctionCall","src":"11240:74:43"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"11233:3:43"}]},{"nodeType":"YulVariableDeclaration","src":"11323:83:43","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11400:5:43"}],"functionName":{"name":"array_dataslot_t_array$_t_enum$_Module_$15488_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"11338:61:43"},"nodeType":"YulFunctionCall","src":"11338:68:43"},"variables":[{"name":"baseRef","nodeType":"YulTypedName","src":"11327:7:43","type":""}]},{"nodeType":"YulVariableDeclaration","src":"11415:21:43","value":{"name":"baseRef","nodeType":"YulIdentifier","src":"11429:7:43"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"11419:6:43","type":""}]},{"body":{"nodeType":"YulBlock","src":"11505:246:43","statements":[{"nodeType":"YulVariableDeclaration","src":"11519:34:43","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"11546:6:43"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"11540:5:43"},"nodeType":"YulFunctionCall","src":"11540:13:43"},"variables":[{"name":"elementValue0","nodeType":"YulTypedName","src":"11523:13:43","type":""}]},{"nodeType":"YulAssignment","src":"11566:80:43","value":{"arguments":[{"name":"elementValue0","nodeType":"YulIdentifier","src":"11627:13:43"},{"name":"pos","nodeType":"YulIdentifier","src":"11642:3:43"}],"functionName":{"name":"abi_encodeUpdatedPos_t_enum$_Module_$15488_to_t_uint8","nodeType":"YulIdentifier","src":"11573:53:43"},"nodeType":"YulFunctionCall","src":"11573:73:43"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"11566:3:43"}]},{"nodeType":"YulAssignment","src":"11659:82:43","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"11734:6:43"}],"functionName":{"name":"array_nextElement_t_array$_t_enum$_Module_$15488_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"11669:64:43"},"nodeType":"YulFunctionCall","src":"11669:72:43"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"11659:6:43"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"11467:1:43"},{"name":"length","nodeType":"YulIdentifier","src":"11470:6:43"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"11464:2:43"},"nodeType":"YulFunctionCall","src":"11464:13:43"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"11478:18:43","statements":[{"nodeType":"YulAssignment","src":"11480:14:43","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"11489:1:43"},{"kind":"number","nodeType":"YulLiteral","src":"11492:1:43","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11485:3:43"},"nodeType":"YulFunctionCall","src":"11485:9:43"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"11480:1:43"}]}]},"pre":{"nodeType":"YulBlock","src":"11449:14:43","statements":[{"nodeType":"YulVariableDeclaration","src":"11451:10:43","value":{"kind":"number","nodeType":"YulLiteral","src":"11460:1:43","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"11455:1:43","type":""}]}]},"src":"11445:306:43"},{"nodeType":"YulAssignment","src":"11760:10:43","value":{"name":"pos","nodeType":"YulIdentifier","src":"11767:3:43"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"11760:3:43"}]}]},"name":"abi_encode_t_array$_t_enum$_Module_$15488_$dyn_memory_ptr_to_t_array$_t_uint8_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"11113:5:43","type":""},{"name":"pos","nodeType":"YulTypedName","src":"11120:3:43","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"11129:3:43","type":""}],"src":"11010:766:43"},{"body":{"nodeType":"YulBlock","src":"11865:40:43","statements":[{"nodeType":"YulAssignment","src":"11876:22:43","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11892:5:43"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"11886:5:43"},"nodeType":"YulFunctionCall","src":"11886:12:43"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"11876:6:43"}]}]},"name":"array_length_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"11848:5:43","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"11858:6:43","type":""}],"src":"11782:123:43"},{"body":{"nodeType":"YulBlock","src":"12021:73:43","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12038:3:43"},{"name":"length","nodeType":"YulIdentifier","src":"12043:6:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12031:6:43"},"nodeType":"YulFunctionCall","src":"12031:19:43"},"nodeType":"YulExpressionStatement","src":"12031:19:43"},{"nodeType":"YulAssignment","src":"12059:29:43","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12078:3:43"},{"kind":"number","nodeType":"YulLiteral","src":"12083:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12074:3:43"},"nodeType":"YulFunctionCall","src":"12074:14:43"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"12059:11:43"}]}]},"name":"array_storeLengthForEncoding_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"11993:3:43","type":""},{"name":"length","nodeType":"YulTypedName","src":"11998:6:43","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"12009:11:43","type":""}],"src":"11911:183:43"},{"body":{"nodeType":"YulBlock","src":"12181:60:43","statements":[{"nodeType":"YulAssignment","src":"12191:11:43","value":{"name":"ptr","nodeType":"YulIdentifier","src":"12199:3:43"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"12191:4:43"}]},{"nodeType":"YulAssignment","src":"12212:22:43","value":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"12224:3:43"},{"kind":"number","nodeType":"YulLiteral","src":"12229:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12220:3:43"},"nodeType":"YulFunctionCall","src":"12220:14:43"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"12212:4:43"}]}]},"name":"array_dataslot_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"12168:3:43","type":""}],"returnVariables":[{"name":"data","nodeType":"YulTypedName","src":"12176:4:43","type":""}],"src":"12100:141:43"},{"body":{"nodeType":"YulBlock","src":"12332:73:43","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12349:3:43"},{"name":"length","nodeType":"YulIdentifier","src":"12354:6:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12342:6:43"},"nodeType":"YulFunctionCall","src":"12342:19:43"},"nodeType":"YulExpressionStatement","src":"12342:19:43"},{"nodeType":"YulAssignment","src":"12370:29:43","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12389:3:43"},{"kind":"number","nodeType":"YulLiteral","src":"12394:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12385:3:43"},"nodeType":"YulFunctionCall","src":"12385:14:43"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"12370:11:43"}]}]},"name":"array_storeLengthForEncoding_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"12304:3:43","type":""},{"name":"length","nodeType":"YulTypedName","src":"12309:6:43","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"12320:11:43","type":""}],"src":"12247:158:43"},{"body":{"nodeType":"YulBlock","src":"12491:273:43","statements":[{"nodeType":"YulVariableDeclaration","src":"12501:52:43","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"12547:5:43"}],"functionName":{"name":"array_length_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"12515:31:43"},"nodeType":"YulFunctionCall","src":"12515:38:43"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"12505:6:43","type":""}]},{"nodeType":"YulAssignment","src":"12562:67:43","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12617:3:43"},{"name":"length","nodeType":"YulIdentifier","src":"12622:6:43"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"12569:47:43"},"nodeType":"YulFunctionCall","src":"12569:60:43"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"12562:3:43"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"12677:5:43"},{"kind":"number","nodeType":"YulLiteral","src":"12684:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12673:3:43"},"nodeType":"YulFunctionCall","src":"12673:16:43"},{"name":"pos","nodeType":"YulIdentifier","src":"12691:3:43"},{"name":"length","nodeType":"YulIdentifier","src":"12696:6:43"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"12638:34:43"},"nodeType":"YulFunctionCall","src":"12638:65:43"},"nodeType":"YulExpressionStatement","src":"12638:65:43"},{"nodeType":"YulAssignment","src":"12712:46:43","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12723:3:43"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"12750:6:43"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"12728:21:43"},"nodeType":"YulFunctionCall","src":"12728:29:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12719:3:43"},"nodeType":"YulFunctionCall","src":"12719:39:43"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"12712:3:43"}]}]},"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"12472:5:43","type":""},{"name":"pos","nodeType":"YulTypedName","src":"12479:3:43","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"12487:3:43","type":""}],"src":"12411:353:43"},{"body":{"nodeType":"YulBlock","src":"12868:94:43","statements":[{"nodeType":"YulAssignment","src":"12878:78:43","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"12944:6:43"},{"name":"pos","nodeType":"YulIdentifier","src":"12952:3:43"}],"functionName":{"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"12892:51:43"},"nodeType":"YulFunctionCall","src":"12892:64:43"},"variableNames":[{"name":"updatedPos","nodeType":"YulIdentifier","src":"12878:10:43"}]}]},"name":"abi_encodeUpdatedPos_t_bytes_memory_ptr_to_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value0","nodeType":"YulTypedName","src":"12841:6:43","type":""},{"name":"pos","nodeType":"YulTypedName","src":"12849:3:43","type":""}],"returnVariables":[{"name":"updatedPos","nodeType":"YulTypedName","src":"12857:10:43","type":""}],"src":"12770:192:43"},{"body":{"nodeType":"YulBlock","src":"13052:38:43","statements":[{"nodeType":"YulAssignment","src":"13062:22:43","value":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"13074:3:43"},{"kind":"number","nodeType":"YulLiteral","src":"13079:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13070:3:43"},"nodeType":"YulFunctionCall","src":"13070:14:43"},"variableNames":[{"name":"next","nodeType":"YulIdentifier","src":"13062:4:43"}]}]},"name":"array_nextElement_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"13039:3:43","type":""}],"returnVariables":[{"name":"next","nodeType":"YulTypedName","src":"13047:4:43","type":""}],"src":"12968:122:43"},{"body":{"nodeType":"YulBlock","src":"13254:831:43","statements":[{"nodeType":"YulVariableDeclaration","src":"13264:77:43","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"13335:5:43"}],"functionName":{"name":"array_length_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"13278:56:43"},"nodeType":"YulFunctionCall","src":"13278:63:43"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"13268:6:43","type":""}]},{"nodeType":"YulAssignment","src":"13350:92:43","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13430:3:43"},{"name":"length","nodeType":"YulIdentifier","src":"13435:6:43"}],"functionName":{"name":"array_storeLengthForEncoding_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"13357:72:43"},"nodeType":"YulFunctionCall","src":"13357:85:43"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"13350:3:43"}]},{"nodeType":"YulVariableDeclaration","src":"13451:20:43","value":{"name":"pos","nodeType":"YulIdentifier","src":"13468:3:43"},"variables":[{"name":"headStart","nodeType":"YulTypedName","src":"13455:9:43","type":""}]},{"nodeType":"YulVariableDeclaration","src":"13480:39:43","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13496:3:43"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"13505:6:43"},{"kind":"number","nodeType":"YulLiteral","src":"13513:4:43","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"13501:3:43"},"nodeType":"YulFunctionCall","src":"13501:17:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13492:3:43"},"nodeType":"YulFunctionCall","src":"13492:27:43"},"variables":[{"name":"tail","nodeType":"YulTypedName","src":"13484:4:43","type":""}]},{"nodeType":"YulVariableDeclaration","src":"13528:80:43","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"13602:5:43"}],"functionName":{"name":"array_dataslot_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"13543:58:43"},"nodeType":"YulFunctionCall","src":"13543:65:43"},"variables":[{"name":"baseRef","nodeType":"YulTypedName","src":"13532:7:43","type":""}]},{"nodeType":"YulVariableDeclaration","src":"13617:21:43","value":{"name":"baseRef","nodeType":"YulIdentifier","src":"13631:7:43"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"13621:6:43","type":""}]},{"body":{"nodeType":"YulBlock","src":"13707:333:43","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13728:3:43"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"13737:4:43"},{"name":"headStart","nodeType":"YulIdentifier","src":"13743:9:43"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"13733:3:43"},"nodeType":"YulFunctionCall","src":"13733:20:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13721:6:43"},"nodeType":"YulFunctionCall","src":"13721:33:43"},"nodeType":"YulExpressionStatement","src":"13721:33:43"},{"nodeType":"YulVariableDeclaration","src":"13767:34:43","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"13794:6:43"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"13788:5:43"},"nodeType":"YulFunctionCall","src":"13788:13:43"},"variables":[{"name":"elementValue0","nodeType":"YulTypedName","src":"13771:13:43","type":""}]},{"nodeType":"YulAssignment","src":"13814:90:43","value":{"arguments":[{"name":"elementValue0","nodeType":"YulIdentifier","src":"13884:13:43"},{"name":"tail","nodeType":"YulIdentifier","src":"13899:4:43"}],"functionName":{"name":"abi_encodeUpdatedPos_t_bytes_memory_ptr_to_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"13822:61:43"},"nodeType":"YulFunctionCall","src":"13822:82:43"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13814:4:43"}]},{"nodeType":"YulAssignment","src":"13917:79:43","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"13989:6:43"}],"functionName":{"name":"array_nextElement_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"13927:61:43"},"nodeType":"YulFunctionCall","src":"13927:69:43"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"13917:6:43"}]},{"nodeType":"YulAssignment","src":"14009:21:43","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14020:3:43"},{"kind":"number","nodeType":"YulLiteral","src":"14025:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14016:3:43"},"nodeType":"YulFunctionCall","src":"14016:14:43"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"14009:3:43"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"13669:1:43"},{"name":"length","nodeType":"YulIdentifier","src":"13672:6:43"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"13666:2:43"},"nodeType":"YulFunctionCall","src":"13666:13:43"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"13680:18:43","statements":[{"nodeType":"YulAssignment","src":"13682:14:43","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"13691:1:43"},{"kind":"number","nodeType":"YulLiteral","src":"13694:1:43","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13687:3:43"},"nodeType":"YulFunctionCall","src":"13687:9:43"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"13682:1:43"}]}]},"pre":{"nodeType":"YulBlock","src":"13651:14:43","statements":[{"nodeType":"YulVariableDeclaration","src":"13653:10:43","value":{"kind":"number","nodeType":"YulLiteral","src":"13662:1:43","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"13657:1:43","type":""}]}]},"src":"13647:393:43"},{"nodeType":"YulAssignment","src":"14049:11:43","value":{"name":"tail","nodeType":"YulIdentifier","src":"14056:4:43"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"14049:3:43"}]},{"nodeType":"YulAssignment","src":"14069:10:43","value":{"name":"pos","nodeType":"YulIdentifier","src":"14076:3:43"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"14069:3:43"}]}]},"name":"abi_encode_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"13233:5:43","type":""},{"name":"pos","nodeType":"YulTypedName","src":"13240:3:43","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"13249:3:43","type":""}],"src":"13122:963:43"},{"body":{"nodeType":"YulBlock","src":"14269:644:43","statements":[{"nodeType":"YulVariableDeclaration","src":"14279:26:43","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14295:3:43"},{"kind":"number","nodeType":"YulLiteral","src":"14300:4:43","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14291:3:43"},"nodeType":"YulFunctionCall","src":"14291:14:43"},"variables":[{"name":"tail","nodeType":"YulTypedName","src":"14283:4:43","type":""}]},{"nodeType":"YulBlock","src":"14315:278:43","statements":[{"nodeType":"YulVariableDeclaration","src":"14353:43:43","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"14383:5:43"},{"kind":"number","nodeType":"YulLiteral","src":"14390:4:43","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14379:3:43"},"nodeType":"YulFunctionCall","src":"14379:16:43"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"14373:5:43"},"nodeType":"YulFunctionCall","src":"14373:23:43"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"14357:12:43","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14421:3:43"},{"kind":"number","nodeType":"YulLiteral","src":"14426:4:43","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14417:3:43"},"nodeType":"YulFunctionCall","src":"14417:14:43"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"14437:4:43"},{"name":"pos","nodeType":"YulIdentifier","src":"14443:3:43"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"14433:3:43"},"nodeType":"YulFunctionCall","src":"14433:14:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14410:6:43"},"nodeType":"YulFunctionCall","src":"14410:38:43"},"nodeType":"YulExpressionStatement","src":"14410:38:43"},{"nodeType":"YulAssignment","src":"14461:121:43","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"14563:12:43"},{"name":"tail","nodeType":"YulIdentifier","src":"14577:4:43"}],"functionName":{"name":"abi_encode_t_array$_t_enum$_Module_$15488_$dyn_memory_ptr_to_t_array$_t_uint8_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"14469:93:43"},"nodeType":"YulFunctionCall","src":"14469:113:43"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"14461:4:43"}]}]},{"nodeType":"YulBlock","src":"14603:283:43","statements":[{"nodeType":"YulVariableDeclaration","src":"14638:43:43","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"14668:5:43"},{"kind":"number","nodeType":"YulLiteral","src":"14675:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14664:3:43"},"nodeType":"YulFunctionCall","src":"14664:16:43"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"14658:5:43"},"nodeType":"YulFunctionCall","src":"14658:23:43"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"14642:12:43","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14706:3:43"},{"kind":"number","nodeType":"YulLiteral","src":"14711:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14702:3:43"},"nodeType":"YulFunctionCall","src":"14702:14:43"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"14722:4:43"},{"name":"pos","nodeType":"YulIdentifier","src":"14728:3:43"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"14718:3:43"},"nodeType":"YulFunctionCall","src":"14718:14:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14695:6:43"},"nodeType":"YulFunctionCall","src":"14695:38:43"},"nodeType":"YulExpressionStatement","src":"14695:38:43"},{"nodeType":"YulAssignment","src":"14746:129:43","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"14856:12:43"},{"name":"tail","nodeType":"YulIdentifier","src":"14870:4:43"}],"functionName":{"name":"abi_encode_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"14754:101:43"},"nodeType":"YulFunctionCall","src":"14754:121:43"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"14746:4:43"}]}]},{"nodeType":"YulAssignment","src":"14896:11:43","value":{"name":"tail","nodeType":"YulIdentifier","src":"14903:4:43"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"14896:3:43"}]}]},"name":"abi_encode_t_struct$_ModuleData_$15496_memory_ptr_to_t_struct$_ModuleData_$15496_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"14248:5:43","type":""},{"name":"pos","nodeType":"YulTypedName","src":"14255:3:43","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"14264:3:43","type":""}],"src":"14137:776:43"},{"body":{"nodeType":"YulBlock","src":"15177:549:43","statements":[{"nodeType":"YulAssignment","src":"15187:27:43","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15199:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"15210:3:43","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15195:3:43"},"nodeType":"YulFunctionCall","src":"15195:19:43"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"15187:4:43"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"15268:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15281:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"15292:1:43","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15277:3:43"},"nodeType":"YulFunctionCall","src":"15277:17:43"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"15224:43:43"},"nodeType":"YulFunctionCall","src":"15224:71:43"},"nodeType":"YulExpressionStatement","src":"15224:71:43"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15316:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"15327:2:43","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15312:3:43"},"nodeType":"YulFunctionCall","src":"15312:18:43"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"15336:4:43"},{"name":"headStart","nodeType":"YulIdentifier","src":"15342:9:43"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"15332:3:43"},"nodeType":"YulFunctionCall","src":"15332:20:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15305:6:43"},"nodeType":"YulFunctionCall","src":"15305:48:43"},"nodeType":"YulExpressionStatement","src":"15305:48:43"},{"nodeType":"YulAssignment","src":"15362:84:43","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"15432:6:43"},{"name":"tail","nodeType":"YulIdentifier","src":"15441:4:43"}],"functionName":{"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"15370:61:43"},"nodeType":"YulFunctionCall","src":"15370:76:43"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"15362:4:43"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15467:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"15478:2:43","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15463:3:43"},"nodeType":"YulFunctionCall","src":"15463:18:43"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"15487:4:43"},{"name":"headStart","nodeType":"YulIdentifier","src":"15493:9:43"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"15483:3:43"},"nodeType":"YulFunctionCall","src":"15483:20:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15456:6:43"},"nodeType":"YulFunctionCall","src":"15456:48:43"},"nodeType":"YulExpressionStatement","src":"15456:48:43"},{"nodeType":"YulAssignment","src":"15513:124:43","value":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"15623:6:43"},{"name":"tail","nodeType":"YulIdentifier","src":"15632:4:43"}],"functionName":{"name":"abi_encode_t_struct$_ModuleData_$15496_memory_ptr_to_t_struct$_ModuleData_$15496_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"15521:101:43"},"nodeType":"YulFunctionCall","src":"15521:116:43"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"15513:4:43"}]},{"expression":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"15691:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15704:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"15715:2:43","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15700:3:43"},"nodeType":"YulFunctionCall","src":"15700:18:43"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"15647:43:43"},"nodeType":"YulFunctionCall","src":"15647:72:43"},"nodeType":"YulExpressionStatement","src":"15647:72:43"}]},"name":"abi_encode_tuple_t_address_t_bytes_memory_ptr_t_struct$_ModuleData_$15496_memory_ptr_t_address__to_t_address_t_bytes_memory_ptr_t_struct$_ModuleData_$15496_memory_ptr_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"15125:9:43","type":""},{"name":"value3","nodeType":"YulTypedName","src":"15137:6:43","type":""},{"name":"value2","nodeType":"YulTypedName","src":"15145:6:43","type":""},{"name":"value1","nodeType":"YulTypedName","src":"15153:6:43","type":""},{"name":"value0","nodeType":"YulTypedName","src":"15161:6:43","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"15172:4:43","type":""}],"src":"14919:807:43"},{"body":{"nodeType":"YulBlock","src":"15775:79:43","statements":[{"body":{"nodeType":"YulBlock","src":"15832:16:43","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15841:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"15844:1:43","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"15834:6:43"},"nodeType":"YulFunctionCall","src":"15834:12:43"},"nodeType":"YulExpressionStatement","src":"15834:12:43"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"15798:5:43"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"15823:5:43"}],"functionName":{"name":"cleanup_t_bytes32","nodeType":"YulIdentifier","src":"15805:17:43"},"nodeType":"YulFunctionCall","src":"15805:24:43"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"15795:2:43"},"nodeType":"YulFunctionCall","src":"15795:35:43"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"15788:6:43"},"nodeType":"YulFunctionCall","src":"15788:43:43"},"nodeType":"YulIf","src":"15785:63:43"}]},"name":"validator_revert_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"15768:5:43","type":""}],"src":"15732:122:43"},{"body":{"nodeType":"YulBlock","src":"15923:80:43","statements":[{"nodeType":"YulAssignment","src":"15933:22:43","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"15948:6:43"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"15942:5:43"},"nodeType":"YulFunctionCall","src":"15942:13:43"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"15933:5:43"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"15991:5:43"}],"functionName":{"name":"validator_revert_t_bytes32","nodeType":"YulIdentifier","src":"15964:26:43"},"nodeType":"YulFunctionCall","src":"15964:33:43"},"nodeType":"YulExpressionStatement","src":"15964:33:43"}]},"name":"abi_decode_t_bytes32_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"15901:6:43","type":""},{"name":"end","nodeType":"YulTypedName","src":"15909:3:43","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"15917:5:43","type":""}],"src":"15860:143:43"},{"body":{"nodeType":"YulBlock","src":"16086:274:43","statements":[{"body":{"nodeType":"YulBlock","src":"16132:83:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"16134:77:43"},"nodeType":"YulFunctionCall","src":"16134:79:43"},"nodeType":"YulExpressionStatement","src":"16134:79:43"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"16107:7:43"},{"name":"headStart","nodeType":"YulIdentifier","src":"16116:9:43"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"16103:3:43"},"nodeType":"YulFunctionCall","src":"16103:23:43"},{"kind":"number","nodeType":"YulLiteral","src":"16128:2:43","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"16099:3:43"},"nodeType":"YulFunctionCall","src":"16099:32:43"},"nodeType":"YulIf","src":"16096:119:43"},{"nodeType":"YulBlock","src":"16225:128:43","statements":[{"nodeType":"YulVariableDeclaration","src":"16240:15:43","value":{"kind":"number","nodeType":"YulLiteral","src":"16254:1:43","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"16244:6:43","type":""}]},{"nodeType":"YulAssignment","src":"16269:74:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16315:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"16326:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16311:3:43"},"nodeType":"YulFunctionCall","src":"16311:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"16335:7:43"}],"functionName":{"name":"abi_decode_t_bytes32_fromMemory","nodeType":"YulIdentifier","src":"16279:31:43"},"nodeType":"YulFunctionCall","src":"16279:64:43"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"16269:6:43"}]}]}]},"name":"abi_decode_tuple_t_bytes32_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"16056:9:43","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"16067:7:43","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"16079:6:43","type":""}],"src":"16009:351:43"},{"body":{"nodeType":"YulBlock","src":"16464:124:43","statements":[{"nodeType":"YulAssignment","src":"16474:26:43","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16486:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"16497:2:43","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16482:3:43"},"nodeType":"YulFunctionCall","src":"16482:18:43"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"16474:4:43"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"16554:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16567:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"16578:1:43","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16563:3:43"},"nodeType":"YulFunctionCall","src":"16563:17:43"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nodeType":"YulIdentifier","src":"16510:43:43"},"nodeType":"YulFunctionCall","src":"16510:71:43"},"nodeType":"YulExpressionStatement","src":"16510:71:43"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"16436:9:43","type":""},{"name":"value0","nodeType":"YulTypedName","src":"16448:6:43","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"16459:4:43","type":""}],"src":"16366:222:43"},{"body":{"nodeType":"YulBlock","src":"16748:288:43","statements":[{"nodeType":"YulAssignment","src":"16758:26:43","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16770:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"16781:2:43","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16766:3:43"},"nodeType":"YulFunctionCall","src":"16766:18:43"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"16758:4:43"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"16838:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16851:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"16862:1:43","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16847:3:43"},"nodeType":"YulFunctionCall","src":"16847:17:43"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"16794:43:43"},"nodeType":"YulFunctionCall","src":"16794:71:43"},"nodeType":"YulExpressionStatement","src":"16794:71:43"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"16919:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16932:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"16943:2:43","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16928:3:43"},"nodeType":"YulFunctionCall","src":"16928:18:43"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"16875:43:43"},"nodeType":"YulFunctionCall","src":"16875:72:43"},"nodeType":"YulExpressionStatement","src":"16875:72:43"},{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"17001:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17014:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"17025:2:43","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17010:3:43"},"nodeType":"YulFunctionCall","src":"17010:18:43"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"16957:43:43"},"nodeType":"YulFunctionCall","src":"16957:72:43"},"nodeType":"YulExpressionStatement","src":"16957:72:43"}]},"name":"abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"16704:9:43","type":""},{"name":"value2","nodeType":"YulTypedName","src":"16716:6:43","type":""},{"name":"value1","nodeType":"YulTypedName","src":"16724:6:43","type":""},{"name":"value0","nodeType":"YulTypedName","src":"16732:6:43","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"16743:4:43","type":""}],"src":"16594:442:43"},{"body":{"nodeType":"YulBlock","src":"17082:76:43","statements":[{"body":{"nodeType":"YulBlock","src":"17136:16:43","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"17145:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"17148:1:43","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"17138:6:43"},"nodeType":"YulFunctionCall","src":"17138:12:43"},"nodeType":"YulExpressionStatement","src":"17138:12:43"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"17105:5:43"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"17127:5:43"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"17112:14:43"},"nodeType":"YulFunctionCall","src":"17112:21:43"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"17102:2:43"},"nodeType":"YulFunctionCall","src":"17102:32:43"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"17095:6:43"},"nodeType":"YulFunctionCall","src":"17095:40:43"},"nodeType":"YulIf","src":"17092:60:43"}]},"name":"validator_revert_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"17075:5:43","type":""}],"src":"17042:116:43"},{"body":{"nodeType":"YulBlock","src":"17224:77:43","statements":[{"nodeType":"YulAssignment","src":"17234:22:43","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"17249:6:43"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"17243:5:43"},"nodeType":"YulFunctionCall","src":"17243:13:43"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"17234:5:43"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"17289:5:43"}],"functionName":{"name":"validator_revert_t_bool","nodeType":"YulIdentifier","src":"17265:23:43"},"nodeType":"YulFunctionCall","src":"17265:30:43"},"nodeType":"YulExpressionStatement","src":"17265:30:43"}]},"name":"abi_decode_t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"17202:6:43","type":""},{"name":"end","nodeType":"YulTypedName","src":"17210:3:43","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"17218:5:43","type":""}],"src":"17164:137:43"},{"body":{"nodeType":"YulBlock","src":"17381:271:43","statements":[{"body":{"nodeType":"YulBlock","src":"17427:83:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"17429:77:43"},"nodeType":"YulFunctionCall","src":"17429:79:43"},"nodeType":"YulExpressionStatement","src":"17429:79:43"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"17402:7:43"},{"name":"headStart","nodeType":"YulIdentifier","src":"17411:9:43"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"17398:3:43"},"nodeType":"YulFunctionCall","src":"17398:23:43"},{"kind":"number","nodeType":"YulLiteral","src":"17423:2:43","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"17394:3:43"},"nodeType":"YulFunctionCall","src":"17394:32:43"},"nodeType":"YulIf","src":"17391:119:43"},{"nodeType":"YulBlock","src":"17520:125:43","statements":[{"nodeType":"YulVariableDeclaration","src":"17535:15:43","value":{"kind":"number","nodeType":"YulLiteral","src":"17549:1:43","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"17539:6:43","type":""}]},{"nodeType":"YulAssignment","src":"17564:71:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17607:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"17618:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17603:3:43"},"nodeType":"YulFunctionCall","src":"17603:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"17627:7:43"}],"functionName":{"name":"abi_decode_t_bool_fromMemory","nodeType":"YulIdentifier","src":"17574:28:43"},"nodeType":"YulFunctionCall","src":"17574:61:43"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"17564:6:43"}]}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"17351:9:43","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"17362:7:43","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"17374:6:43","type":""}],"src":"17307:345:43"},{"body":{"nodeType":"YulBlock","src":"17686:152:43","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"17703:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"17706:77:43","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17696:6:43"},"nodeType":"YulFunctionCall","src":"17696:88:43"},"nodeType":"YulExpressionStatement","src":"17696:88:43"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"17800:1:43","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"17803:4:43","type":"","value":"0x12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17793:6:43"},"nodeType":"YulFunctionCall","src":"17793:15:43"},"nodeType":"YulExpressionStatement","src":"17793:15:43"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"17824:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"17827:4:43","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"17817:6:43"},"nodeType":"YulFunctionCall","src":"17817:15:43"},"nodeType":"YulExpressionStatement","src":"17817:15:43"}]},"name":"panic_error_0x12","nodeType":"YulFunctionDefinition","src":"17658:180:43"},{"body":{"nodeType":"YulBlock","src":"17886:143:43","statements":[{"nodeType":"YulAssignment","src":"17896:25:43","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"17919:1:43"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"17901:17:43"},"nodeType":"YulFunctionCall","src":"17901:20:43"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"17896:1:43"}]},{"nodeType":"YulAssignment","src":"17930:25:43","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"17953:1:43"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"17935:17:43"},"nodeType":"YulFunctionCall","src":"17935:20:43"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"17930:1:43"}]},{"body":{"nodeType":"YulBlock","src":"17977:22:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x12","nodeType":"YulIdentifier","src":"17979:16:43"},"nodeType":"YulFunctionCall","src":"17979:18:43"},"nodeType":"YulExpressionStatement","src":"17979:18:43"}]},"condition":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"17974:1:43"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"17967:6:43"},"nodeType":"YulFunctionCall","src":"17967:9:43"},"nodeType":"YulIf","src":"17964:35:43"},{"nodeType":"YulAssignment","src":"18009:14:43","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"18018:1:43"},{"name":"y","nodeType":"YulIdentifier","src":"18021:1:43"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"18014:3:43"},"nodeType":"YulFunctionCall","src":"18014:9:43"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"18009:1:43"}]}]},"name":"checked_div_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"17875:1:43","type":""},{"name":"y","nodeType":"YulTypedName","src":"17878:1:43","type":""}],"returnVariables":[{"name":"r","nodeType":"YulTypedName","src":"17884:1:43","type":""}],"src":"17844:185:43"},{"body":{"nodeType":"YulBlock","src":"18080:149:43","statements":[{"nodeType":"YulAssignment","src":"18090:25:43","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"18113:1:43"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"18095:17:43"},"nodeType":"YulFunctionCall","src":"18095:20:43"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"18090:1:43"}]},{"nodeType":"YulAssignment","src":"18124:25:43","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"18147:1:43"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"18129:17:43"},"nodeType":"YulFunctionCall","src":"18129:20:43"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"18124:1:43"}]},{"nodeType":"YulAssignment","src":"18158:17:43","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"18170:1:43"},{"name":"y","nodeType":"YulIdentifier","src":"18173:1:43"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"18166:3:43"},"nodeType":"YulFunctionCall","src":"18166:9:43"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"18158:4:43"}]},{"body":{"nodeType":"YulBlock","src":"18200:22:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"18202:16:43"},"nodeType":"YulFunctionCall","src":"18202:18:43"},"nodeType":"YulExpressionStatement","src":"18202:18:43"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"18191:4:43"},{"name":"x","nodeType":"YulIdentifier","src":"18197:1:43"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"18188:2:43"},"nodeType":"YulFunctionCall","src":"18188:11:43"},"nodeType":"YulIf","src":"18185:37:43"}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"18066:1:43","type":""},{"name":"y","nodeType":"YulTypedName","src":"18069:1:43","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"18075:4:43","type":""}],"src":"18035:194:43"},{"body":{"nodeType":"YulBlock","src":"18278:288:43","statements":[{"nodeType":"YulAssignment","src":"18288:23:43","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"18309:1:43"}],"functionName":{"name":"cleanup_t_int96","nodeType":"YulIdentifier","src":"18293:15:43"},"nodeType":"YulFunctionCall","src":"18293:18:43"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"18288:1:43"}]},{"nodeType":"YulAssignment","src":"18320:23:43","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"18341:1:43"}],"functionName":{"name":"cleanup_t_int96","nodeType":"YulIdentifier","src":"18325:15:43"},"nodeType":"YulFunctionCall","src":"18325:18:43"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"18320:1:43"}]},{"nodeType":"YulAssignment","src":"18352:17:43","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"18364:1:43"},{"name":"y","nodeType":"YulIdentifier","src":"18367:1:43"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"18360:3:43"},"nodeType":"YulFunctionCall","src":"18360:9:43"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"18352:4:43"}]},{"body":{"nodeType":"YulBlock","src":"18537:22:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"18539:16:43"},"nodeType":"YulFunctionCall","src":"18539:18:43"},"nodeType":"YulExpressionStatement","src":"18539:18:43"}]},"condition":{"arguments":[{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"18402:4:43"},{"kind":"number","nodeType":"YulLiteral","src":"18408:66:43","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff800000000000000000000000"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"18398:3:43"},"nodeType":"YulFunctionCall","src":"18398:77:43"},{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"18493:4:43"},{"kind":"number","nodeType":"YulLiteral","src":"18499:26:43","type":"","value":"0x7fffffffffffffffffffffff"}],"functionName":{"name":"sgt","nodeType":"YulIdentifier","src":"18489:3:43"},"nodeType":"YulFunctionCall","src":"18489:37:43"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"18382:2:43"},"nodeType":"YulFunctionCall","src":"18382:154:43"},"nodeType":"YulIf","src":"18379:180:43"}]},"name":"checked_sub_t_int96","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"18264:1:43","type":""},{"name":"y","nodeType":"YulTypedName","src":"18267:1:43","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"18273:4:43","type":""}],"src":"18235:331:43"},{"body":{"nodeType":"YulBlock","src":"18620:362:43","statements":[{"nodeType":"YulAssignment","src":"18630:25:43","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"18653:1:43"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"18635:17:43"},"nodeType":"YulFunctionCall","src":"18635:20:43"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"18630:1:43"}]},{"nodeType":"YulAssignment","src":"18664:25:43","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"18687:1:43"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"18669:17:43"},"nodeType":"YulFunctionCall","src":"18669:20:43"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"18664:1:43"}]},{"nodeType":"YulVariableDeclaration","src":"18698:28:43","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"18721:1:43"},{"name":"y","nodeType":"YulIdentifier","src":"18724:1:43"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"18717:3:43"},"nodeType":"YulFunctionCall","src":"18717:9:43"},"variables":[{"name":"product_raw","nodeType":"YulTypedName","src":"18702:11:43","type":""}]},{"nodeType":"YulAssignment","src":"18735:41:43","value":{"arguments":[{"name":"product_raw","nodeType":"YulIdentifier","src":"18764:11:43"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"18746:17:43"},"nodeType":"YulFunctionCall","src":"18746:30:43"},"variableNames":[{"name":"product","nodeType":"YulIdentifier","src":"18735:7:43"}]},{"body":{"nodeType":"YulBlock","src":"18953:22:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"18955:16:43"},"nodeType":"YulFunctionCall","src":"18955:18:43"},"nodeType":"YulExpressionStatement","src":"18955:18:43"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"18886:1:43"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"18879:6:43"},"nodeType":"YulFunctionCall","src":"18879:9:43"},{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"18909:1:43"},{"arguments":[{"name":"product","nodeType":"YulIdentifier","src":"18916:7:43"},{"name":"x","nodeType":"YulIdentifier","src":"18925:1:43"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"18912:3:43"},"nodeType":"YulFunctionCall","src":"18912:15:43"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"18906:2:43"},"nodeType":"YulFunctionCall","src":"18906:22:43"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"18859:2:43"},"nodeType":"YulFunctionCall","src":"18859:83:43"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"18839:6:43"},"nodeType":"YulFunctionCall","src":"18839:113:43"},"nodeType":"YulIf","src":"18836:139:43"}]},"name":"checked_mul_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"18603:1:43","type":""},{"name":"y","nodeType":"YulTypedName","src":"18606:1:43","type":""}],"returnVariables":[{"name":"product","nodeType":"YulTypedName","src":"18612:7:43","type":""}],"src":"18572:410:43"},{"body":{"nodeType":"YulBlock","src":"19031:190:43","statements":[{"nodeType":"YulAssignment","src":"19041:33:43","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"19068:5:43"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"19050:17:43"},"nodeType":"YulFunctionCall","src":"19050:24:43"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"19041:5:43"}]},{"body":{"nodeType":"YulBlock","src":"19164:22:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"19166:16:43"},"nodeType":"YulFunctionCall","src":"19166:18:43"},"nodeType":"YulExpressionStatement","src":"19166:18:43"}]},"condition":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"19089:5:43"},{"kind":"number","nodeType":"YulLiteral","src":"19096:66:43","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"19086:2:43"},"nodeType":"YulFunctionCall","src":"19086:77:43"},"nodeType":"YulIf","src":"19083:103:43"},{"nodeType":"YulAssignment","src":"19195:20:43","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"19206:5:43"},{"kind":"number","nodeType":"YulLiteral","src":"19213:1:43","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19202:3:43"},"nodeType":"YulFunctionCall","src":"19202:13:43"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"19195:3:43"}]}]},"name":"increment_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"19017:5:43","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"19027:3:43","type":""}],"src":"18988:233:43"},{"body":{"nodeType":"YulBlock","src":"19269:285:43","statements":[{"nodeType":"YulAssignment","src":"19279:23:43","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"19300:1:43"}],"functionName":{"name":"cleanup_t_int96","nodeType":"YulIdentifier","src":"19284:15:43"},"nodeType":"YulFunctionCall","src":"19284:18:43"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"19279:1:43"}]},{"nodeType":"YulAssignment","src":"19311:23:43","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"19332:1:43"}],"functionName":{"name":"cleanup_t_int96","nodeType":"YulIdentifier","src":"19316:15:43"},"nodeType":"YulFunctionCall","src":"19316:18:43"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"19311:1:43"}]},{"nodeType":"YulAssignment","src":"19343:16:43","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"19354:1:43"},{"name":"y","nodeType":"YulIdentifier","src":"19357:1:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19350:3:43"},"nodeType":"YulFunctionCall","src":"19350:9:43"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"19343:3:43"}]},{"body":{"nodeType":"YulBlock","src":"19525:22:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"19527:16:43"},"nodeType":"YulFunctionCall","src":"19527:18:43"},"nodeType":"YulExpressionStatement","src":"19527:18:43"}]},"condition":{"arguments":[{"arguments":[{"name":"sum","nodeType":"YulIdentifier","src":"19392:3:43"},{"kind":"number","nodeType":"YulLiteral","src":"19397:26:43","type":"","value":"0x7fffffffffffffffffffffff"}],"functionName":{"name":"sgt","nodeType":"YulIdentifier","src":"19388:3:43"},"nodeType":"YulFunctionCall","src":"19388:36:43"},{"arguments":[{"name":"sum","nodeType":"YulIdentifier","src":"19442:3:43"},{"kind":"number","nodeType":"YulLiteral","src":"19447:66:43","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff800000000000000000000000"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"19438:3:43"},"nodeType":"YulFunctionCall","src":"19438:76:43"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"19372:2:43"},"nodeType":"YulFunctionCall","src":"19372:152:43"},"nodeType":"YulIf","src":"19369:178:43"}]},"name":"checked_add_t_int96","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"19256:1:43","type":""},{"name":"y","nodeType":"YulTypedName","src":"19259:1:43","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"19265:3:43","type":""}],"src":"19227:327:43"},{"body":{"nodeType":"YulBlock","src":"19605:73:43","statements":[{"nodeType":"YulAssignment","src":"19615:57:43","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"19630:5:43"},{"kind":"number","nodeType":"YulLiteral","src":"19637:34:43","type":"","value":"0xffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"19626:3:43"},"nodeType":"YulFunctionCall","src":"19626:46:43"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"19615:7:43"}]}]},"name":"cleanup_t_uint128","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"19587:5:43","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"19597:7:43","type":""}],"src":"19560:118:43"},{"body":{"nodeType":"YulBlock","src":"19749:53:43","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"19766:3:43"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"19789:5:43"}],"functionName":{"name":"cleanup_t_uint128","nodeType":"YulIdentifier","src":"19771:17:43"},"nodeType":"YulFunctionCall","src":"19771:24:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19759:6:43"},"nodeType":"YulFunctionCall","src":"19759:37:43"},"nodeType":"YulExpressionStatement","src":"19759:37:43"}]},"name":"abi_encode_t_uint128_to_t_uint128_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"19737:5:43","type":""},{"name":"pos","nodeType":"YulTypedName","src":"19744:3:43","type":""}],"src":"19684:118:43"},{"body":{"nodeType":"YulBlock","src":"19934:206:43","statements":[{"nodeType":"YulAssignment","src":"19944:26:43","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19956:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"19967:2:43","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19952:3:43"},"nodeType":"YulFunctionCall","src":"19952:18:43"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"19944:4:43"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"20024:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20037:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"20048:1:43","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20033:3:43"},"nodeType":"YulFunctionCall","src":"20033:17:43"}],"functionName":{"name":"abi_encode_t_uint128_to_t_uint128_fromStack","nodeType":"YulIdentifier","src":"19980:43:43"},"nodeType":"YulFunctionCall","src":"19980:71:43"},"nodeType":"YulExpressionStatement","src":"19980:71:43"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"20105:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20118:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"20129:2:43","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20114:3:43"},"nodeType":"YulFunctionCall","src":"20114:18:43"}],"functionName":{"name":"abi_encode_t_uint128_to_t_uint128_fromStack","nodeType":"YulIdentifier","src":"20061:43:43"},"nodeType":"YulFunctionCall","src":"20061:72:43"},"nodeType":"YulExpressionStatement","src":"20061:72:43"}]},"name":"abi_encode_tuple_t_uint128_t_uint128__to_t_uint128_t_uint128__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"19898:9:43","type":""},{"name":"value1","nodeType":"YulTypedName","src":"19910:6:43","type":""},{"name":"value0","nodeType":"YulTypedName","src":"19918:6:43","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"19929:4:43","type":""}],"src":"19808:332:43"},{"body":{"nodeType":"YulBlock","src":"20178:28:43","statements":[{"nodeType":"YulAssignment","src":"20188:12:43","value":{"name":"value","nodeType":"YulIdentifier","src":"20195:5:43"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"20188:3:43"}]}]},"name":"identity","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"20164:5:43","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"20174:3:43","type":""}],"src":"20146:60:43"},{"body":{"nodeType":"YulBlock","src":"20272:82:43","statements":[{"nodeType":"YulAssignment","src":"20282:66:43","value":{"arguments":[{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"20340:5:43"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"20322:17:43"},"nodeType":"YulFunctionCall","src":"20322:24:43"}],"functionName":{"name":"identity","nodeType":"YulIdentifier","src":"20313:8:43"},"nodeType":"YulFunctionCall","src":"20313:34:43"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"20295:17:43"},"nodeType":"YulFunctionCall","src":"20295:53:43"},"variableNames":[{"name":"converted","nodeType":"YulIdentifier","src":"20282:9:43"}]}]},"name":"convert_t_uint160_to_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"20252:5:43","type":""}],"returnVariables":[{"name":"converted","nodeType":"YulTypedName","src":"20262:9:43","type":""}],"src":"20212:142:43"},{"body":{"nodeType":"YulBlock","src":"20420:66:43","statements":[{"nodeType":"YulAssignment","src":"20430:50:43","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"20474:5:43"}],"functionName":{"name":"convert_t_uint160_to_t_uint160","nodeType":"YulIdentifier","src":"20443:30:43"},"nodeType":"YulFunctionCall","src":"20443:37:43"},"variableNames":[{"name":"converted","nodeType":"YulIdentifier","src":"20430:9:43"}]}]},"name":"convert_t_uint160_to_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"20400:5:43","type":""}],"returnVariables":[{"name":"converted","nodeType":"YulTypedName","src":"20410:9:43","type":""}],"src":"20360:126:43"},{"body":{"nodeType":"YulBlock","src":"20572:66:43","statements":[{"nodeType":"YulAssignment","src":"20582:50:43","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"20626:5:43"}],"functionName":{"name":"convert_t_uint160_to_t_address","nodeType":"YulIdentifier","src":"20595:30:43"},"nodeType":"YulFunctionCall","src":"20595:37:43"},"variableNames":[{"name":"converted","nodeType":"YulIdentifier","src":"20582:9:43"}]}]},"name":"convert_t_contract$_ISuperToken_$6947_to_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"20552:5:43","type":""}],"returnVariables":[{"name":"converted","nodeType":"YulTypedName","src":"20562:9:43","type":""}],"src":"20492:146:43"},{"body":{"nodeType":"YulBlock","src":"20729:86:43","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"20746:3:43"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"20802:5:43"}],"functionName":{"name":"convert_t_contract$_ISuperToken_$6947_to_t_address","nodeType":"YulIdentifier","src":"20751:50:43"},"nodeType":"YulFunctionCall","src":"20751:57:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20739:6:43"},"nodeType":"YulFunctionCall","src":"20739:70:43"},"nodeType":"YulExpressionStatement","src":"20739:70:43"}]},"name":"abi_encode_t_contract$_ISuperToken_$6947_to_t_address_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"20717:5:43","type":""},{"name":"pos","nodeType":"YulTypedName","src":"20724:3:43","type":""}],"src":"20644:171:43"},{"body":{"nodeType":"YulBlock","src":"20995:308:43","statements":[{"nodeType":"YulAssignment","src":"21005:26:43","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21017:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"21028:2:43","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21013:3:43"},"nodeType":"YulFunctionCall","src":"21013:18:43"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"21005:4:43"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"21105:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21118:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"21129:1:43","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21114:3:43"},"nodeType":"YulFunctionCall","src":"21114:17:43"}],"functionName":{"name":"abi_encode_t_contract$_ISuperToken_$6947_to_t_address_fromStack","nodeType":"YulIdentifier","src":"21041:63:43"},"nodeType":"YulFunctionCall","src":"21041:91:43"},"nodeType":"YulExpressionStatement","src":"21041:91:43"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"21186:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21199:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"21210:2:43","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21195:3:43"},"nodeType":"YulFunctionCall","src":"21195:18:43"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"21142:43:43"},"nodeType":"YulFunctionCall","src":"21142:72:43"},"nodeType":"YulExpressionStatement","src":"21142:72:43"},{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"21268:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21281:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"21292:2:43","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21277:3:43"},"nodeType":"YulFunctionCall","src":"21277:18:43"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"21224:43:43"},"nodeType":"YulFunctionCall","src":"21224:72:43"},"nodeType":"YulExpressionStatement","src":"21224:72:43"}]},"name":"abi_encode_tuple_t_contract$_ISuperToken_$6947_t_address_t_address__to_t_address_t_address_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"20951:9:43","type":""},{"name":"value2","nodeType":"YulTypedName","src":"20963:6:43","type":""},{"name":"value1","nodeType":"YulTypedName","src":"20971:6:43","type":""},{"name":"value0","nodeType":"YulTypedName","src":"20979:6:43","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"20990:4:43","type":""}],"src":"20821:482:43"},{"body":{"nodeType":"YulBlock","src":"21372:80:43","statements":[{"nodeType":"YulAssignment","src":"21382:22:43","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"21397:6:43"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"21391:5:43"},"nodeType":"YulFunctionCall","src":"21391:13:43"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"21382:5:43"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"21440:5:43"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"21413:26:43"},"nodeType":"YulFunctionCall","src":"21413:33:43"},"nodeType":"YulExpressionStatement","src":"21413:33:43"}]},"name":"abi_decode_t_uint256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"21350:6:43","type":""},{"name":"end","nodeType":"YulTypedName","src":"21358:3:43","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"21366:5:43","type":""}],"src":"21309:143:43"},{"body":{"nodeType":"YulBlock","src":"21519:78:43","statements":[{"nodeType":"YulAssignment","src":"21529:22:43","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"21544:6:43"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"21538:5:43"},"nodeType":"YulFunctionCall","src":"21538:13:43"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"21529:5:43"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"21585:5:43"}],"functionName":{"name":"validator_revert_t_int96","nodeType":"YulIdentifier","src":"21560:24:43"},"nodeType":"YulFunctionCall","src":"21560:31:43"},"nodeType":"YulExpressionStatement","src":"21560:31:43"}]},"name":"abi_decode_t_int96_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"21497:6:43","type":""},{"name":"end","nodeType":"YulTypedName","src":"21505:3:43","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"21513:5:43","type":""}],"src":"21458:139:43"},{"body":{"nodeType":"YulBlock","src":"21729:690:43","statements":[{"body":{"nodeType":"YulBlock","src":"21776:83:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"21778:77:43"},"nodeType":"YulFunctionCall","src":"21778:79:43"},"nodeType":"YulExpressionStatement","src":"21778:79:43"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"21750:7:43"},{"name":"headStart","nodeType":"YulIdentifier","src":"21759:9:43"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"21746:3:43"},"nodeType":"YulFunctionCall","src":"21746:23:43"},{"kind":"number","nodeType":"YulLiteral","src":"21771:3:43","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"21742:3:43"},"nodeType":"YulFunctionCall","src":"21742:33:43"},"nodeType":"YulIf","src":"21739:120:43"},{"nodeType":"YulBlock","src":"21869:128:43","statements":[{"nodeType":"YulVariableDeclaration","src":"21884:15:43","value":{"kind":"number","nodeType":"YulLiteral","src":"21898:1:43","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"21888:6:43","type":""}]},{"nodeType":"YulAssignment","src":"21913:74:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21959:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"21970:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21955:3:43"},"nodeType":"YulFunctionCall","src":"21955:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"21979:7:43"}],"functionName":{"name":"abi_decode_t_uint256_fromMemory","nodeType":"YulIdentifier","src":"21923:31:43"},"nodeType":"YulFunctionCall","src":"21923:64:43"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"21913:6:43"}]}]},{"nodeType":"YulBlock","src":"22007:127:43","statements":[{"nodeType":"YulVariableDeclaration","src":"22022:16:43","value":{"kind":"number","nodeType":"YulLiteral","src":"22036:2:43","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"22026:6:43","type":""}]},{"nodeType":"YulAssignment","src":"22052:72:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22096:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"22107:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22092:3:43"},"nodeType":"YulFunctionCall","src":"22092:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"22116:7:43"}],"functionName":{"name":"abi_decode_t_int96_fromMemory","nodeType":"YulIdentifier","src":"22062:29:43"},"nodeType":"YulFunctionCall","src":"22062:62:43"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"22052:6:43"}]}]},{"nodeType":"YulBlock","src":"22144:129:43","statements":[{"nodeType":"YulVariableDeclaration","src":"22159:16:43","value":{"kind":"number","nodeType":"YulLiteral","src":"22173:2:43","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"22163:6:43","type":""}]},{"nodeType":"YulAssignment","src":"22189:74:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22235:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"22246:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22231:3:43"},"nodeType":"YulFunctionCall","src":"22231:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"22255:7:43"}],"functionName":{"name":"abi_decode_t_uint256_fromMemory","nodeType":"YulIdentifier","src":"22199:31:43"},"nodeType":"YulFunctionCall","src":"22199:64:43"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"22189:6:43"}]}]},{"nodeType":"YulBlock","src":"22283:129:43","statements":[{"nodeType":"YulVariableDeclaration","src":"22298:16:43","value":{"kind":"number","nodeType":"YulLiteral","src":"22312:2:43","type":"","value":"96"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"22302:6:43","type":""}]},{"nodeType":"YulAssignment","src":"22328:74:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22374:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"22385:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22370:3:43"},"nodeType":"YulFunctionCall","src":"22370:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"22394:7:43"}],"functionName":{"name":"abi_decode_t_uint256_fromMemory","nodeType":"YulIdentifier","src":"22338:31:43"},"nodeType":"YulFunctionCall","src":"22338:64:43"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"22328:6:43"}]}]}]},"name":"abi_decode_tuple_t_uint256t_int96t_uint256t_uint256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"21675:9:43","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"21686:7:43","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"21698:6:43","type":""},{"name":"value1","nodeType":"YulTypedName","src":"21706:6:43","type":""},{"name":"value2","nodeType":"YulTypedName","src":"21714:6:43","type":""},{"name":"value3","nodeType":"YulTypedName","src":"21722:6:43","type":""}],"src":"21603:816:43"},{"body":{"nodeType":"YulBlock","src":"22645:460:43","statements":[{"nodeType":"YulAssignment","src":"22655:27:43","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22667:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"22678:3:43","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22663:3:43"},"nodeType":"YulFunctionCall","src":"22663:19:43"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"22655:4:43"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"22756:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22769:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"22780:1:43","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22765:3:43"},"nodeType":"YulFunctionCall","src":"22765:17:43"}],"functionName":{"name":"abi_encode_t_contract$_ISuperToken_$6947_to_t_address_fromStack","nodeType":"YulIdentifier","src":"22692:63:43"},"nodeType":"YulFunctionCall","src":"22692:91:43"},"nodeType":"YulExpressionStatement","src":"22692:91:43"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"22837:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22850:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"22861:2:43","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22846:3:43"},"nodeType":"YulFunctionCall","src":"22846:18:43"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"22793:43:43"},"nodeType":"YulFunctionCall","src":"22793:72:43"},"nodeType":"YulExpressionStatement","src":"22793:72:43"},{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"22919:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22932:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"22943:2:43","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22928:3:43"},"nodeType":"YulFunctionCall","src":"22928:18:43"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"22875:43:43"},"nodeType":"YulFunctionCall","src":"22875:72:43"},"nodeType":"YulExpressionStatement","src":"22875:72:43"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22968:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"22979:2:43","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22964:3:43"},"nodeType":"YulFunctionCall","src":"22964:18:43"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"22988:4:43"},{"name":"headStart","nodeType":"YulIdentifier","src":"22994:9:43"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"22984:3:43"},"nodeType":"YulFunctionCall","src":"22984:20:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22957:6:43"},"nodeType":"YulFunctionCall","src":"22957:48:43"},"nodeType":"YulExpressionStatement","src":"22957:48:43"},{"nodeType":"YulAssignment","src":"23014:84:43","value":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"23084:6:43"},{"name":"tail","nodeType":"YulIdentifier","src":"23093:4:43"}],"functionName":{"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"23022:61:43"},"nodeType":"YulFunctionCall","src":"23022:76:43"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"23014:4:43"}]}]},"name":"abi_encode_tuple_t_contract$_ISuperToken_$6947_t_address_t_address_t_bytes_memory_ptr__to_t_address_t_address_t_address_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"22593:9:43","type":""},{"name":"value3","nodeType":"YulTypedName","src":"22605:6:43","type":""},{"name":"value2","nodeType":"YulTypedName","src":"22613:6:43","type":""},{"name":"value1","nodeType":"YulTypedName","src":"22621:6:43","type":""},{"name":"value0","nodeType":"YulTypedName","src":"22629:6:43","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"22640:4:43","type":""}],"src":"22425:680:43"},{"body":{"nodeType":"YulBlock","src":"23204:66:43","statements":[{"nodeType":"YulAssignment","src":"23214:50:43","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"23258:5:43"}],"functionName":{"name":"convert_t_uint160_to_t_address","nodeType":"YulIdentifier","src":"23227:30:43"},"nodeType":"YulFunctionCall","src":"23227:37:43"},"variableNames":[{"name":"converted","nodeType":"YulIdentifier","src":"23214:9:43"}]}]},"name":"convert_t_contract$_IConstantFlowAgreementV1_$5487_to_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"23184:5:43","type":""}],"returnVariables":[{"name":"converted","nodeType":"YulTypedName","src":"23194:9:43","type":""}],"src":"23111:159:43"},{"body":{"nodeType":"YulBlock","src":"23374:99:43","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"23391:3:43"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"23460:5:43"}],"functionName":{"name":"convert_t_contract$_IConstantFlowAgreementV1_$5487_to_t_address","nodeType":"YulIdentifier","src":"23396:63:43"},"nodeType":"YulFunctionCall","src":"23396:70:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"23384:6:43"},"nodeType":"YulFunctionCall","src":"23384:83:43"},"nodeType":"YulExpressionStatement","src":"23384:83:43"}]},"name":"abi_encode_t_contract$_IConstantFlowAgreementV1_$5487_to_t_address_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"23362:5:43","type":""},{"name":"pos","nodeType":"YulTypedName","src":"23369:3:43","type":""}],"src":"23276:197:43"},{"body":{"nodeType":"YulBlock","src":"23702:459:43","statements":[{"nodeType":"YulAssignment","src":"23712:26:43","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23724:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"23735:2:43","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23720:3:43"},"nodeType":"YulFunctionCall","src":"23720:18:43"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"23712:4:43"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"23825:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23838:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"23849:1:43","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23834:3:43"},"nodeType":"YulFunctionCall","src":"23834:17:43"}],"functionName":{"name":"abi_encode_t_contract$_IConstantFlowAgreementV1_$5487_to_t_address_fromStack","nodeType":"YulIdentifier","src":"23748:76:43"},"nodeType":"YulFunctionCall","src":"23748:104:43"},"nodeType":"YulExpressionStatement","src":"23748:104:43"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23873:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"23884:2:43","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23869:3:43"},"nodeType":"YulFunctionCall","src":"23869:18:43"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"23893:4:43"},{"name":"headStart","nodeType":"YulIdentifier","src":"23899:9:43"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"23889:3:43"},"nodeType":"YulFunctionCall","src":"23889:20:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"23862:6:43"},"nodeType":"YulFunctionCall","src":"23862:48:43"},"nodeType":"YulExpressionStatement","src":"23862:48:43"},{"nodeType":"YulAssignment","src":"23919:84:43","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"23989:6:43"},{"name":"tail","nodeType":"YulIdentifier","src":"23998:4:43"}],"functionName":{"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"23927:61:43"},"nodeType":"YulFunctionCall","src":"23927:76:43"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"23919:4:43"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24024:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"24035:2:43","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24020:3:43"},"nodeType":"YulFunctionCall","src":"24020:18:43"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"24044:4:43"},{"name":"headStart","nodeType":"YulIdentifier","src":"24050:9:43"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"24040:3:43"},"nodeType":"YulFunctionCall","src":"24040:20:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"24013:6:43"},"nodeType":"YulFunctionCall","src":"24013:48:43"},"nodeType":"YulExpressionStatement","src":"24013:48:43"},{"nodeType":"YulAssignment","src":"24070:84:43","value":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"24140:6:43"},{"name":"tail","nodeType":"YulIdentifier","src":"24149:4:43"}],"functionName":{"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"24078:61:43"},"nodeType":"YulFunctionCall","src":"24078:76:43"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"24070:4:43"}]}]},"name":"abi_encode_tuple_t_contract$_IConstantFlowAgreementV1_$5487_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"23658:9:43","type":""},{"name":"value2","nodeType":"YulTypedName","src":"23670:6:43","type":""},{"name":"value1","nodeType":"YulTypedName","src":"23678:6:43","type":""},{"name":"value0","nodeType":"YulTypedName","src":"23686:6:43","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"23697:4:43","type":""}],"src":"23479:682:43"},{"body":{"nodeType":"YulBlock","src":"24256:28:43","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"24273:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"24276:1:43","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"24266:6:43"},"nodeType":"YulFunctionCall","src":"24266:12:43"},"nodeType":"YulExpressionStatement","src":"24266:12:43"}]},"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulFunctionDefinition","src":"24167:117:43"},{"body":{"nodeType":"YulBlock","src":"24379:28:43","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"24396:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"24399:1:43","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"24389:6:43"},"nodeType":"YulFunctionCall","src":"24389:12:43"},"nodeType":"YulExpressionStatement","src":"24389:12:43"}]},"name":"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae","nodeType":"YulFunctionDefinition","src":"24290:117:43"},{"body":{"nodeType":"YulBlock","src":"24456:238:43","statements":[{"nodeType":"YulVariableDeclaration","src":"24466:58:43","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"24488:6:43"},{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"24518:4:43"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"24496:21:43"},"nodeType":"YulFunctionCall","src":"24496:27:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24484:3:43"},"nodeType":"YulFunctionCall","src":"24484:40:43"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"24470:10:43","type":""}]},{"body":{"nodeType":"YulBlock","src":"24635:22:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"24637:16:43"},"nodeType":"YulFunctionCall","src":"24637:18:43"},"nodeType":"YulExpressionStatement","src":"24637:18:43"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"24578:10:43"},{"kind":"number","nodeType":"YulLiteral","src":"24590:18:43","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"24575:2:43"},"nodeType":"YulFunctionCall","src":"24575:34:43"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"24614:10:43"},{"name":"memPtr","nodeType":"YulIdentifier","src":"24626:6:43"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"24611:2:43"},"nodeType":"YulFunctionCall","src":"24611:22:43"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"24572:2:43"},"nodeType":"YulFunctionCall","src":"24572:62:43"},"nodeType":"YulIf","src":"24569:88:43"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"24673:2:43","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"24677:10:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"24666:6:43"},"nodeType":"YulFunctionCall","src":"24666:22:43"},"nodeType":"YulExpressionStatement","src":"24666:22:43"}]},"name":"finalize_allocation","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"24442:6:43","type":""},{"name":"size","nodeType":"YulTypedName","src":"24450:4:43","type":""}],"src":"24413:281:43"},{"body":{"nodeType":"YulBlock","src":"24741:88:43","statements":[{"nodeType":"YulAssignment","src":"24751:30:43","value":{"arguments":[],"functionName":{"name":"allocate_unbounded","nodeType":"YulIdentifier","src":"24761:18:43"},"nodeType":"YulFunctionCall","src":"24761:20:43"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"24751:6:43"}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"24810:6:43"},{"name":"size","nodeType":"YulIdentifier","src":"24818:4:43"}],"functionName":{"name":"finalize_allocation","nodeType":"YulIdentifier","src":"24790:19:43"},"nodeType":"YulFunctionCall","src":"24790:33:43"},"nodeType":"YulExpressionStatement","src":"24790:33:43"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"24725:4:43","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"24734:6:43","type":""}],"src":"24700:129:43"},{"body":{"nodeType":"YulBlock","src":"24901:241:43","statements":[{"body":{"nodeType":"YulBlock","src":"25006:22:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"25008:16:43"},"nodeType":"YulFunctionCall","src":"25008:18:43"},"nodeType":"YulExpressionStatement","src":"25008:18:43"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"24978:6:43"},{"kind":"number","nodeType":"YulLiteral","src":"24986:18:43","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"24975:2:43"},"nodeType":"YulFunctionCall","src":"24975:30:43"},"nodeType":"YulIf","src":"24972:56:43"},{"nodeType":"YulAssignment","src":"25038:37:43","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"25068:6:43"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"25046:21:43"},"nodeType":"YulFunctionCall","src":"25046:29:43"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"25038:4:43"}]},{"nodeType":"YulAssignment","src":"25112:23:43","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"25124:4:43"},{"kind":"number","nodeType":"YulLiteral","src":"25130:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"25120:3:43"},"nodeType":"YulFunctionCall","src":"25120:15:43"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"25112:4:43"}]}]},"name":"array_allocation_size_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"24885:6:43","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"24896:4:43","type":""}],"src":"24835:307:43"},{"body":{"nodeType":"YulBlock","src":"25242:338:43","statements":[{"nodeType":"YulAssignment","src":"25252:74:43","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"25318:6:43"}],"functionName":{"name":"array_allocation_size_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"25277:40:43"},"nodeType":"YulFunctionCall","src":"25277:48:43"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"25261:15:43"},"nodeType":"YulFunctionCall","src":"25261:65:43"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"25252:5:43"}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"25342:5:43"},{"name":"length","nodeType":"YulIdentifier","src":"25349:6:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"25335:6:43"},"nodeType":"YulFunctionCall","src":"25335:21:43"},"nodeType":"YulExpressionStatement","src":"25335:21:43"},{"nodeType":"YulVariableDeclaration","src":"25365:27:43","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"25380:5:43"},{"kind":"number","nodeType":"YulLiteral","src":"25387:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"25376:3:43"},"nodeType":"YulFunctionCall","src":"25376:16:43"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"25369:3:43","type":""}]},{"body":{"nodeType":"YulBlock","src":"25430:83:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae","nodeType":"YulIdentifier","src":"25432:77:43"},"nodeType":"YulFunctionCall","src":"25432:79:43"},"nodeType":"YulExpressionStatement","src":"25432:79:43"}]},"condition":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"25411:3:43"},{"name":"length","nodeType":"YulIdentifier","src":"25416:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"25407:3:43"},"nodeType":"YulFunctionCall","src":"25407:16:43"},{"name":"end","nodeType":"YulIdentifier","src":"25425:3:43"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"25404:2:43"},"nodeType":"YulFunctionCall","src":"25404:25:43"},"nodeType":"YulIf","src":"25401:112:43"},{"expression":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"25557:3:43"},{"name":"dst","nodeType":"YulIdentifier","src":"25562:3:43"},{"name":"length","nodeType":"YulIdentifier","src":"25567:6:43"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"25522:34:43"},"nodeType":"YulFunctionCall","src":"25522:52:43"},"nodeType":"YulExpressionStatement","src":"25522:52:43"}]},"name":"abi_decode_available_length_t_bytes_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"25215:3:43","type":""},{"name":"length","nodeType":"YulTypedName","src":"25220:6:43","type":""},{"name":"end","nodeType":"YulTypedName","src":"25228:3:43","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"25236:5:43","type":""}],"src":"25148:432:43"},{"body":{"nodeType":"YulBlock","src":"25671:281:43","statements":[{"body":{"nodeType":"YulBlock","src":"25720:83:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"25722:77:43"},"nodeType":"YulFunctionCall","src":"25722:79:43"},"nodeType":"YulExpressionStatement","src":"25722:79:43"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"25699:6:43"},{"kind":"number","nodeType":"YulLiteral","src":"25707:4:43","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"25695:3:43"},"nodeType":"YulFunctionCall","src":"25695:17:43"},{"name":"end","nodeType":"YulIdentifier","src":"25714:3:43"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"25691:3:43"},"nodeType":"YulFunctionCall","src":"25691:27:43"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"25684:6:43"},"nodeType":"YulFunctionCall","src":"25684:35:43"},"nodeType":"YulIf","src":"25681:122:43"},{"nodeType":"YulVariableDeclaration","src":"25812:27:43","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"25832:6:43"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"25826:5:43"},"nodeType":"YulFunctionCall","src":"25826:13:43"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"25816:6:43","type":""}]},{"nodeType":"YulAssignment","src":"25848:98:43","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"25919:6:43"},{"kind":"number","nodeType":"YulLiteral","src":"25927:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"25915:3:43"},"nodeType":"YulFunctionCall","src":"25915:17:43"},{"name":"length","nodeType":"YulIdentifier","src":"25934:6:43"},{"name":"end","nodeType":"YulIdentifier","src":"25942:3:43"}],"functionName":{"name":"abi_decode_available_length_t_bytes_memory_ptr_fromMemory","nodeType":"YulIdentifier","src":"25857:57:43"},"nodeType":"YulFunctionCall","src":"25857:89:43"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"25848:5:43"}]}]},"name":"abi_decode_t_bytes_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"25649:6:43","type":""},{"name":"end","nodeType":"YulTypedName","src":"25657:3:43","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"25665:5:43","type":""}],"src":"25599:353:43"},{"body":{"nodeType":"YulBlock","src":"26044:436:43","statements":[{"body":{"nodeType":"YulBlock","src":"26090:83:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"26092:77:43"},"nodeType":"YulFunctionCall","src":"26092:79:43"},"nodeType":"YulExpressionStatement","src":"26092:79:43"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"26065:7:43"},{"name":"headStart","nodeType":"YulIdentifier","src":"26074:9:43"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"26061:3:43"},"nodeType":"YulFunctionCall","src":"26061:23:43"},{"kind":"number","nodeType":"YulLiteral","src":"26086:2:43","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"26057:3:43"},"nodeType":"YulFunctionCall","src":"26057:32:43"},"nodeType":"YulIf","src":"26054:119:43"},{"nodeType":"YulBlock","src":"26183:290:43","statements":[{"nodeType":"YulVariableDeclaration","src":"26198:38:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"26222:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"26233:1:43","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26218:3:43"},"nodeType":"YulFunctionCall","src":"26218:17:43"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"26212:5:43"},"nodeType":"YulFunctionCall","src":"26212:24:43"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"26202:6:43","type":""}]},{"body":{"nodeType":"YulBlock","src":"26283:83:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"26285:77:43"},"nodeType":"YulFunctionCall","src":"26285:79:43"},"nodeType":"YulExpressionStatement","src":"26285:79:43"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"26255:6:43"},{"kind":"number","nodeType":"YulLiteral","src":"26263:18:43","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"26252:2:43"},"nodeType":"YulFunctionCall","src":"26252:30:43"},"nodeType":"YulIf","src":"26249:117:43"},{"nodeType":"YulAssignment","src":"26380:83:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"26435:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"26446:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26431:3:43"},"nodeType":"YulFunctionCall","src":"26431:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"26455:7:43"}],"functionName":{"name":"abi_decode_t_bytes_memory_ptr_fromMemory","nodeType":"YulIdentifier","src":"26390:40:43"},"nodeType":"YulFunctionCall","src":"26390:73:43"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"26380:6:43"}]}]}]},"name":"abi_decode_tuple_t_bytes_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"26014:9:43","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"26025:7:43","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"26037:6:43","type":""}],"src":"25958:522:43"},{"body":{"nodeType":"YulBlock","src":"26702:456:43","statements":[{"nodeType":"YulAssignment","src":"26712:27:43","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"26724:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"26735:3:43","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26720:3:43"},"nodeType":"YulFunctionCall","src":"26720:19:43"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"26712:4:43"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"26813:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"26826:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"26837:1:43","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26822:3:43"},"nodeType":"YulFunctionCall","src":"26822:17:43"}],"functionName":{"name":"abi_encode_t_contract$_ISuperToken_$6947_to_t_address_fromStack","nodeType":"YulIdentifier","src":"26749:63:43"},"nodeType":"YulFunctionCall","src":"26749:91:43"},"nodeType":"YulExpressionStatement","src":"26749:91:43"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"26894:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"26907:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"26918:2:43","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26903:3:43"},"nodeType":"YulFunctionCall","src":"26903:18:43"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"26850:43:43"},"nodeType":"YulFunctionCall","src":"26850:72:43"},"nodeType":"YulExpressionStatement","src":"26850:72:43"},{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"26972:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"26985:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"26996:2:43","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26981:3:43"},"nodeType":"YulFunctionCall","src":"26981:18:43"}],"functionName":{"name":"abi_encode_t_int96_to_t_int96_fromStack","nodeType":"YulIdentifier","src":"26932:39:43"},"nodeType":"YulFunctionCall","src":"26932:68:43"},"nodeType":"YulExpressionStatement","src":"26932:68:43"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"27021:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"27032:2:43","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"27017:3:43"},"nodeType":"YulFunctionCall","src":"27017:18:43"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"27041:4:43"},{"name":"headStart","nodeType":"YulIdentifier","src":"27047:9:43"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"27037:3:43"},"nodeType":"YulFunctionCall","src":"27037:20:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"27010:6:43"},"nodeType":"YulFunctionCall","src":"27010:48:43"},"nodeType":"YulExpressionStatement","src":"27010:48:43"},{"nodeType":"YulAssignment","src":"27067:84:43","value":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"27137:6:43"},{"name":"tail","nodeType":"YulIdentifier","src":"27146:4:43"}],"functionName":{"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"27075:61:43"},"nodeType":"YulFunctionCall","src":"27075:76:43"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"27067:4:43"}]}]},"name":"abi_encode_tuple_t_contract$_ISuperToken_$6947_t_address_t_int96_t_bytes_memory_ptr__to_t_address_t_address_t_int96_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"26650:9:43","type":""},{"name":"value3","nodeType":"YulTypedName","src":"26662:6:43","type":""},{"name":"value2","nodeType":"YulTypedName","src":"26670:6:43","type":""},{"name":"value1","nodeType":"YulTypedName","src":"26678:6:43","type":""},{"name":"value0","nodeType":"YulTypedName","src":"26686:6:43","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"26697:4:43","type":""}],"src":"26486:672:43"},{"body":{"nodeType":"YulBlock","src":"27290:206:43","statements":[{"nodeType":"YulAssignment","src":"27300:26:43","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"27312:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"27323:2:43","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"27308:3:43"},"nodeType":"YulFunctionCall","src":"27308:18:43"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"27300:4:43"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"27380:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"27393:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"27404:1:43","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"27389:3:43"},"nodeType":"YulFunctionCall","src":"27389:17:43"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"27336:43:43"},"nodeType":"YulFunctionCall","src":"27336:71:43"},"nodeType":"YulExpressionStatement","src":"27336:71:43"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"27461:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"27474:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"27485:2:43","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"27470:3:43"},"nodeType":"YulFunctionCall","src":"27470:18:43"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"27417:43:43"},"nodeType":"YulFunctionCall","src":"27417:72:43"},"nodeType":"YulExpressionStatement","src":"27417:72:43"}]},"name":"abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"27254:9:43","type":""},{"name":"value1","nodeType":"YulTypedName","src":"27266:6:43","type":""},{"name":"value0","nodeType":"YulTypedName","src":"27274:6:43","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"27285:4:43","type":""}],"src":"27164:332:43"},{"body":{"nodeType":"YulBlock","src":"27579:274:43","statements":[{"body":{"nodeType":"YulBlock","src":"27625:83:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"27627:77:43"},"nodeType":"YulFunctionCall","src":"27627:79:43"},"nodeType":"YulExpressionStatement","src":"27627:79:43"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"27600:7:43"},{"name":"headStart","nodeType":"YulIdentifier","src":"27609:9:43"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"27596:3:43"},"nodeType":"YulFunctionCall","src":"27596:23:43"},{"kind":"number","nodeType":"YulLiteral","src":"27621:2:43","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"27592:3:43"},"nodeType":"YulFunctionCall","src":"27592:32:43"},"nodeType":"YulIf","src":"27589:119:43"},{"nodeType":"YulBlock","src":"27718:128:43","statements":[{"nodeType":"YulVariableDeclaration","src":"27733:15:43","value":{"kind":"number","nodeType":"YulLiteral","src":"27747:1:43","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"27737:6:43","type":""}]},{"nodeType":"YulAssignment","src":"27762:74:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"27808:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"27819:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"27804:3:43"},"nodeType":"YulFunctionCall","src":"27804:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"27828:7:43"}],"functionName":{"name":"abi_decode_t_uint256_fromMemory","nodeType":"YulIdentifier","src":"27772:31:43"},"nodeType":"YulFunctionCall","src":"27772:64:43"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"27762:6:43"}]}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"27549:9:43","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"27560:7:43","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"27572:6:43","type":""}],"src":"27502:351:43"},{"body":{"nodeType":"YulBlock","src":"27957:124:43","statements":[{"nodeType":"YulAssignment","src":"27967:26:43","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"27979:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"27990:2:43","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"27975:3:43"},"nodeType":"YulFunctionCall","src":"27975:18:43"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"27967:4:43"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"28047:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"28060:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"28071:1:43","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"28056:3:43"},"nodeType":"YulFunctionCall","src":"28056:17:43"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"28003:43:43"},"nodeType":"YulFunctionCall","src":"28003:71:43"},"nodeType":"YulExpressionStatement","src":"28003:71:43"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"27929:9:43","type":""},{"name":"value0","nodeType":"YulTypedName","src":"27941:6:43","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"27952:4:43","type":""}],"src":"27859:222:43"},{"body":{"nodeType":"YulBlock","src":"28150:80:43","statements":[{"nodeType":"YulAssignment","src":"28160:22:43","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"28175:6:43"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"28169:5:43"},"nodeType":"YulFunctionCall","src":"28169:13:43"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"28160:5:43"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"28218:5:43"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"28191:26:43"},"nodeType":"YulFunctionCall","src":"28191:33:43"},"nodeType":"YulExpressionStatement","src":"28191:33:43"}]},"name":"abi_decode_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"28128:6:43","type":""},{"name":"end","nodeType":"YulTypedName","src":"28136:3:43","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"28144:5:43","type":""}],"src":"28087:143:43"},{"body":{"nodeType":"YulBlock","src":"28313:274:43","statements":[{"body":{"nodeType":"YulBlock","src":"28359:83:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"28361:77:43"},"nodeType":"YulFunctionCall","src":"28361:79:43"},"nodeType":"YulExpressionStatement","src":"28361:79:43"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"28334:7:43"},{"name":"headStart","nodeType":"YulIdentifier","src":"28343:9:43"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"28330:3:43"},"nodeType":"YulFunctionCall","src":"28330:23:43"},{"kind":"number","nodeType":"YulLiteral","src":"28355:2:43","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"28326:3:43"},"nodeType":"YulFunctionCall","src":"28326:32:43"},"nodeType":"YulIf","src":"28323:119:43"},{"nodeType":"YulBlock","src":"28452:128:43","statements":[{"nodeType":"YulVariableDeclaration","src":"28467:15:43","value":{"kind":"number","nodeType":"YulLiteral","src":"28481:1:43","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"28471:6:43","type":""}]},{"nodeType":"YulAssignment","src":"28496:74:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"28542:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"28553:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"28538:3:43"},"nodeType":"YulFunctionCall","src":"28538:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"28562:7:43"}],"functionName":{"name":"abi_decode_t_address_fromMemory","nodeType":"YulIdentifier","src":"28506:31:43"},"nodeType":"YulFunctionCall","src":"28506:64:43"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"28496:6:43"}]}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"28283:9:43","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"28294:7:43","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"28306:6:43","type":""}],"src":"28236:351:43"},{"body":{"nodeType":"YulBlock","src":"28722:32:43","statements":[{"nodeType":"YulAssignment","src":"28732:16:43","value":{"name":"value","nodeType":"YulIdentifier","src":"28743:5:43"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"28732:7:43"}]}]},"name":"cleanup_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"28704:5:43","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"28714:7:43","type":""}],"src":"28593:161:43"},{"body":{"nodeType":"YulBlock","src":"28801:51:43","statements":[{"nodeType":"YulAssignment","src":"28811:34:43","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"28836:1:43","type":"","value":"0"},{"name":"value","nodeType":"YulIdentifier","src":"28839:5:43"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"28832:3:43"},"nodeType":"YulFunctionCall","src":"28832:13:43"},"variableNames":[{"name":"newValue","nodeType":"YulIdentifier","src":"28811:8:43"}]}]},"name":"shift_left_0","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"28782:5:43","type":""}],"returnVariables":[{"name":"newValue","nodeType":"YulTypedName","src":"28792:8:43","type":""}],"src":"28760:92:43"},{"body":{"nodeType":"YulBlock","src":"29002:170:43","statements":[{"nodeType":"YulAssignment","src":"29012:154:43","value":{"arguments":[{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"29158:5:43"}],"functionName":{"name":"cleanup_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1","nodeType":"YulIdentifier","src":"29056:101:43"},"nodeType":"YulFunctionCall","src":"29056:108:43"}],"functionName":{"name":"shift_left_0","nodeType":"YulIdentifier","src":"29043:12:43"},"nodeType":"YulFunctionCall","src":"29043:122:43"}],"functionName":{"name":"cleanup_t_bytes32","nodeType":"YulIdentifier","src":"29025:17:43"},"nodeType":"YulFunctionCall","src":"29025:141:43"},"variableNames":[{"name":"converted","nodeType":"YulIdentifier","src":"29012:9:43"}]}]},"name":"convert_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1_to_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"28982:5:43","type":""}],"returnVariables":[{"name":"converted","nodeType":"YulTypedName","src":"28992:9:43","type":""}],"src":"28858:314:43"},{"body":{"nodeType":"YulBlock","src":"29327:150:43","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"29344:3:43"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"29464:5:43"}],"functionName":{"name":"convert_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1_to_t_bytes32","nodeType":"YulIdentifier","src":"29349:114:43"},"nodeType":"YulFunctionCall","src":"29349:121:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"29337:6:43"},"nodeType":"YulFunctionCall","src":"29337:134:43"},"nodeType":"YulExpressionStatement","src":"29337:134:43"}]},"name":"abi_encode_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1_to_t_bytes32_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"29315:5:43","type":""},{"name":"pos","nodeType":"YulTypedName","src":"29322:3:43","type":""}],"src":"29178:299:43"},{"body":{"nodeType":"YulBlock","src":"29665:208:43","statements":[{"nodeType":"YulAssignment","src":"29675:26:43","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"29687:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"29698:2:43","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"29683:3:43"},"nodeType":"YulFunctionCall","src":"29683:18:43"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"29675:4:43"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"29839:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"29852:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"29863:1:43","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"29848:3:43"},"nodeType":"YulFunctionCall","src":"29848:17:43"}],"functionName":{"name":"abi_encode_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1_to_t_bytes32_fromStack","nodeType":"YulIdentifier","src":"29711:127:43"},"nodeType":"YulFunctionCall","src":"29711:155:43"},"nodeType":"YulExpressionStatement","src":"29711:155:43"}]},"name":"abi_encode_tuple_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1__to_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"29637:9:43","type":""},{"name":"value0","nodeType":"YulTypedName","src":"29649:6:43","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"29660:4:43","type":""}],"src":"29483:390:43"},{"body":{"nodeType":"YulBlock","src":"29948:51:43","statements":[{"nodeType":"YulAssignment","src":"29958:35:43","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"29987:5:43"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"29969:17:43"},"nodeType":"YulFunctionCall","src":"29969:24:43"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"29958:7:43"}]}]},"name":"cleanup_t_contract$_ISuperAgreement_$6395","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"29930:5:43","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"29940:7:43","type":""}],"src":"29879:120:43"},{"body":{"nodeType":"YulBlock","src":"30072:103:43","statements":[{"body":{"nodeType":"YulBlock","src":"30153:16:43","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"30162:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"30165:1:43","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"30155:6:43"},"nodeType":"YulFunctionCall","src":"30155:12:43"},"nodeType":"YulExpressionStatement","src":"30155:12:43"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"30095:5:43"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"30144:5:43"}],"functionName":{"name":"cleanup_t_contract$_ISuperAgreement_$6395","nodeType":"YulIdentifier","src":"30102:41:43"},"nodeType":"YulFunctionCall","src":"30102:48:43"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"30092:2:43"},"nodeType":"YulFunctionCall","src":"30092:59:43"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"30085:6:43"},"nodeType":"YulFunctionCall","src":"30085:67:43"},"nodeType":"YulIf","src":"30082:87:43"}]},"name":"validator_revert_t_contract$_ISuperAgreement_$6395","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"30065:5:43","type":""}],"src":"30005:170:43"},{"body":{"nodeType":"YulBlock","src":"30268:104:43","statements":[{"nodeType":"YulAssignment","src":"30278:22:43","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"30293:6:43"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"30287:5:43"},"nodeType":"YulFunctionCall","src":"30287:13:43"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"30278:5:43"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"30360:5:43"}],"functionName":{"name":"validator_revert_t_contract$_ISuperAgreement_$6395","nodeType":"YulIdentifier","src":"30309:50:43"},"nodeType":"YulFunctionCall","src":"30309:57:43"},"nodeType":"YulExpressionStatement","src":"30309:57:43"}]},"name":"abi_decode_t_contract$_ISuperAgreement_$6395_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"30246:6:43","type":""},{"name":"end","nodeType":"YulTypedName","src":"30254:3:43","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"30262:5:43","type":""}],"src":"30181:191:43"},{"body":{"nodeType":"YulBlock","src":"30479:298:43","statements":[{"body":{"nodeType":"YulBlock","src":"30525:83:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"30527:77:43"},"nodeType":"YulFunctionCall","src":"30527:79:43"},"nodeType":"YulExpressionStatement","src":"30527:79:43"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"30500:7:43"},{"name":"headStart","nodeType":"YulIdentifier","src":"30509:9:43"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"30496:3:43"},"nodeType":"YulFunctionCall","src":"30496:23:43"},{"kind":"number","nodeType":"YulLiteral","src":"30521:2:43","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"30492:3:43"},"nodeType":"YulFunctionCall","src":"30492:32:43"},"nodeType":"YulIf","src":"30489:119:43"},{"nodeType":"YulBlock","src":"30618:152:43","statements":[{"nodeType":"YulVariableDeclaration","src":"30633:15:43","value":{"kind":"number","nodeType":"YulLiteral","src":"30647:1:43","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"30637:6:43","type":""}]},{"nodeType":"YulAssignment","src":"30662:98:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"30732:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"30743:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"30728:3:43"},"nodeType":"YulFunctionCall","src":"30728:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"30752:7:43"}],"functionName":{"name":"abi_decode_t_contract$_ISuperAgreement_$6395_fromMemory","nodeType":"YulIdentifier","src":"30672:55:43"},"nodeType":"YulFunctionCall","src":"30672:88:43"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"30662:6:43"}]}]}]},"name":"abi_decode_tuple_t_contract$_ISuperAgreement_$6395_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"30449:9:43","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"30460:7:43","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"30472:6:43","type":""}],"src":"30378:399:43"},{"body":{"nodeType":"YulBlock","src":"30811:152:43","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"30828:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"30831:77:43","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"30821:6:43"},"nodeType":"YulFunctionCall","src":"30821:88:43"},"nodeType":"YulExpressionStatement","src":"30821:88:43"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"30925:1:43","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"30928:4:43","type":"","value":"0x01"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"30918:6:43"},"nodeType":"YulFunctionCall","src":"30918:15:43"},"nodeType":"YulExpressionStatement","src":"30918:15:43"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"30949:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"30952:4:43","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"30942:6:43"},"nodeType":"YulFunctionCall","src":"30942:15:43"},"nodeType":"YulExpressionStatement","src":"30942:15:43"}]},"name":"panic_error_0x01","nodeType":"YulFunctionDefinition","src":"30783:180:43"},{"body":{"nodeType":"YulBlock","src":"31111:222:43","statements":[{"nodeType":"YulAssignment","src":"31121:26:43","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"31133:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"31144:2:43","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"31129:3:43"},"nodeType":"YulFunctionCall","src":"31129:18:43"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"31121:4:43"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"31221:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"31234:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"31245:1:43","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"31230:3:43"},"nodeType":"YulFunctionCall","src":"31230:17:43"}],"functionName":{"name":"abi_encode_t_contract$_ISuperToken_$6947_to_t_address_fromStack","nodeType":"YulIdentifier","src":"31157:63:43"},"nodeType":"YulFunctionCall","src":"31157:91:43"},"nodeType":"YulExpressionStatement","src":"31157:91:43"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"31298:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"31311:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"31322:2:43","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"31307:3:43"},"nodeType":"YulFunctionCall","src":"31307:18:43"}],"functionName":{"name":"abi_encode_t_int96_to_t_int96_fromStack","nodeType":"YulIdentifier","src":"31258:39:43"},"nodeType":"YulFunctionCall","src":"31258:68:43"},"nodeType":"YulExpressionStatement","src":"31258:68:43"}]},"name":"abi_encode_tuple_t_contract$_ISuperToken_$6947_t_int96__to_t_address_t_int96__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"31075:9:43","type":""},{"name":"value1","nodeType":"YulTypedName","src":"31087:6:43","type":""},{"name":"value0","nodeType":"YulTypedName","src":"31095:6:43","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"31106:4:43","type":""}],"src":"30969:364:43"},{"body":{"nodeType":"YulBlock","src":"31485:226:43","statements":[{"nodeType":"YulAssignment","src":"31495:26:43","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"31507:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"31518:2:43","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"31503:3:43"},"nodeType":"YulFunctionCall","src":"31503:18:43"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"31495:4:43"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"31595:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"31608:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"31619:1:43","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"31604:3:43"},"nodeType":"YulFunctionCall","src":"31604:17:43"}],"functionName":{"name":"abi_encode_t_contract$_ISuperToken_$6947_to_t_address_fromStack","nodeType":"YulIdentifier","src":"31531:63:43"},"nodeType":"YulFunctionCall","src":"31531:91:43"},"nodeType":"YulExpressionStatement","src":"31531:91:43"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"31676:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"31689:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"31700:2:43","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"31685:3:43"},"nodeType":"YulFunctionCall","src":"31685:18:43"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"31632:43:43"},"nodeType":"YulFunctionCall","src":"31632:72:43"},"nodeType":"YulExpressionStatement","src":"31632:72:43"}]},"name":"abi_encode_tuple_t_contract$_ISuperToken_$6947_t_address__to_t_address_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"31449:9:43","type":""},{"name":"value1","nodeType":"YulTypedName","src":"31461:6:43","type":""},{"name":"value0","nodeType":"YulTypedName","src":"31469:6:43","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"31480:4:43","type":""}],"src":"31339:372:43"},{"body":{"nodeType":"YulBlock","src":"31792:272:43","statements":[{"body":{"nodeType":"YulBlock","src":"31838:83:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"31840:77:43"},"nodeType":"YulFunctionCall","src":"31840:79:43"},"nodeType":"YulExpressionStatement","src":"31840:79:43"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"31813:7:43"},{"name":"headStart","nodeType":"YulIdentifier","src":"31822:9:43"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"31809:3:43"},"nodeType":"YulFunctionCall","src":"31809:23:43"},{"kind":"number","nodeType":"YulLiteral","src":"31834:2:43","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"31805:3:43"},"nodeType":"YulFunctionCall","src":"31805:32:43"},"nodeType":"YulIf","src":"31802:119:43"},{"nodeType":"YulBlock","src":"31931:126:43","statements":[{"nodeType":"YulVariableDeclaration","src":"31946:15:43","value":{"kind":"number","nodeType":"YulLiteral","src":"31960:1:43","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"31950:6:43","type":""}]},{"nodeType":"YulAssignment","src":"31975:72:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"32019:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"32030:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"32015:3:43"},"nodeType":"YulFunctionCall","src":"32015:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"32039:7:43"}],"functionName":{"name":"abi_decode_t_int96_fromMemory","nodeType":"YulIdentifier","src":"31985:29:43"},"nodeType":"YulFunctionCall","src":"31985:62:43"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"31975:6:43"}]}]}]},"name":"abi_decode_tuple_t_int96_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"31762:9:43","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"31773:7:43","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"31785:6:43","type":""}],"src":"31717:347:43"}]},"contents":"{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_int96(value) -> cleaned {\n cleaned := signextend(11, value)\n }\n\n function validator_revert_t_int96(value) {\n if iszero(eq(value, cleanup_t_int96(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_int96(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_int96(value)\n }\n\n function abi_decode_tuple_t_addresst_addresst_int96(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_int96(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_addresst_addresst_addresst_uint256t_int96(headStart, dataEnd) -> value0, value1, value2, value3, value4 {\n if slt(sub(dataEnd, headStart), 160) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 128\n\n value4 := abi_decode_t_int96(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bool_to_t_bool_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function cleanup_t_bytes32(value) -> cleaned {\n cleaned := value\n }\n\n function abi_encode_t_bytes32_to_t_bytes32_fromStack(value, pos) {\n mstore(pos, cleanup_t_bytes32(value))\n }\n\n function abi_encode_tuple_t_address_t_uint256_t_uint256_t_uint256_t_bytes32_t_bool__to_t_address_t_uint256_t_uint256_t_uint256_t_bytes32_t_bool__fromStack_reversed(headStart , value5, value4, value3, value2, value1, value0) -> tail {\n tail := add(headStart, 192)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value3, add(headStart, 96))\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value4, add(headStart, 128))\n\n abi_encode_t_bool_to_t_bool_fromStack(value5, add(headStart, 160))\n\n }\n\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function panic_error_0x32() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n\n function panic_error_0x21() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n sum := add(x, y)\n\n if gt(x, sum) { panic_error_0x11() }\n\n }\n\n function abi_encode_t_int96_to_t_int96_fromStack(value, pos) {\n mstore(pos, cleanup_t_int96(value))\n }\n\n function abi_encode_tuple_t_address_t_address_t_address_t_uint256_t_int96__to_t_address_t_address_t_address_t_uint256_t_int96__fromStack_reversed(headStart , value4, value3, value2, value1, value0) -> tail {\n tail := add(headStart, 160)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_address_to_t_address_fromStack(value2, add(headStart, 64))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value3, add(headStart, 96))\n\n abi_encode_t_int96_to_t_int96_fromStack(value4, add(headStart, 128))\n\n }\n\n function array_length_t_bytes_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function copy_memory_to_memory_with_cleanup(src, dst, length) {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_bytes_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function array_length_t_array$_t_enum$_Module_$15488_$dyn_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_array$_t_uint8_$dyn_memory_ptr(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function array_dataslot_t_array$_t_enum$_Module_$15488_$dyn_memory_ptr(ptr) -> data {\n data := ptr\n\n data := add(ptr, 0x20)\n\n }\n\n function validator_assert_t_enum$_Module_$15488(value) {\n if iszero(lt(value, 4)) { panic_error_0x21() }\n }\n\n function cleanup_t_enum$_Module_$15488(value) -> cleaned {\n cleaned := value validator_assert_t_enum$_Module_$15488(value)\n }\n\n function convert_t_enum$_Module_$15488_to_t_uint8(value) -> converted {\n converted := cleanup_t_enum$_Module_$15488(value)\n }\n\n function abi_encode_t_enum$_Module_$15488_to_t_uint8(value, pos) {\n mstore(pos, convert_t_enum$_Module_$15488_to_t_uint8(value))\n }\n\n function abi_encodeUpdatedPos_t_enum$_Module_$15488_to_t_uint8(value0, pos) -> updatedPos {\n abi_encode_t_enum$_Module_$15488_to_t_uint8(value0, pos)\n updatedPos := add(pos, 0x20)\n }\n\n function array_nextElement_t_array$_t_enum$_Module_$15488_$dyn_memory_ptr(ptr) -> next {\n next := add(ptr, 0x20)\n }\n\n // enum Module[] -> uint8[]\n function abi_encode_t_array$_t_enum$_Module_$15488_$dyn_memory_ptr_to_t_array$_t_uint8_$dyn_memory_ptr(value, pos) -> end {\n let length := array_length_t_array$_t_enum$_Module_$15488_$dyn_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_array$_t_uint8_$dyn_memory_ptr(pos, length)\n let baseRef := array_dataslot_t_array$_t_enum$_Module_$15488_$dyn_memory_ptr(value)\n let srcPtr := baseRef\n for { let i := 0 } lt(i, length) { i := add(i, 1) }\n {\n let elementValue0 := mload(srcPtr)\n pos := abi_encodeUpdatedPos_t_enum$_Module_$15488_to_t_uint8(elementValue0, pos)\n srcPtr := array_nextElement_t_array$_t_enum$_Module_$15488_$dyn_memory_ptr(srcPtr)\n }\n end := pos\n }\n\n function array_length_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function array_dataslot_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr(ptr) -> data {\n data := ptr\n\n data := add(ptr, 0x20)\n\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr(value, pos) -> end {\n let length := array_length_t_bytes_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encodeUpdatedPos_t_bytes_memory_ptr_to_t_bytes_memory_ptr(value0, pos) -> updatedPos {\n updatedPos := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr(value0, pos)\n }\n\n function array_nextElement_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr(ptr) -> next {\n next := add(ptr, 0x20)\n }\n\n // bytes[] -> bytes[]\n function abi_encode_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr(value, pos) -> end {\n let length := array_length_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr(pos, length)\n let headStart := pos\n let tail := add(pos, mul(length, 0x20))\n let baseRef := array_dataslot_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr(value)\n let srcPtr := baseRef\n for { let i := 0 } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, sub(tail, headStart))\n let elementValue0 := mload(srcPtr)\n tail := abi_encodeUpdatedPos_t_bytes_memory_ptr_to_t_bytes_memory_ptr(elementValue0, tail)\n srcPtr := array_nextElement_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr(srcPtr)\n pos := add(pos, 0x20)\n }\n pos := tail\n end := pos\n }\n\n // struct ModuleData -> struct ModuleData\n function abi_encode_t_struct$_ModuleData_$15496_memory_ptr_to_t_struct$_ModuleData_$15496_memory_ptr_fromStack(value, pos) -> end {\n let tail := add(pos, 0x40)\n\n {\n // modules\n\n let memberValue0 := mload(add(value, 0x00))\n\n mstore(add(pos, 0x00), sub(tail, pos))\n tail := abi_encode_t_array$_t_enum$_Module_$15488_$dyn_memory_ptr_to_t_array$_t_uint8_$dyn_memory_ptr(memberValue0, tail)\n\n }\n\n {\n // args\n\n let memberValue0 := mload(add(value, 0x20))\n\n mstore(add(pos, 0x20), sub(tail, pos))\n tail := abi_encode_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr(memberValue0, tail)\n\n }\n\n end := tail\n }\n\n function abi_encode_tuple_t_address_t_bytes_memory_ptr_t_struct$_ModuleData_$15496_memory_ptr_t_address__to_t_address_t_bytes_memory_ptr_t_struct$_ModuleData_$15496_memory_ptr_t_address__fromStack_reversed(headStart , value3, value2, value1, value0) -> tail {\n tail := add(headStart, 128)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n mstore(add(headStart, 32), sub(tail, headStart))\n tail := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value1, tail)\n\n mstore(add(headStart, 64), sub(tail, headStart))\n tail := abi_encode_t_struct$_ModuleData_$15496_memory_ptr_to_t_struct$_ModuleData_$15496_memory_ptr_fromStack(value2, tail)\n\n abi_encode_t_address_to_t_address_fromStack(value3, add(headStart, 96))\n\n }\n\n function validator_revert_t_bytes32(value) {\n if iszero(eq(value, cleanup_t_bytes32(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bytes32_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_bytes32(value)\n }\n\n function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n }\n\n function validator_revert_t_bool(value) {\n if iszero(eq(value, cleanup_t_bool(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bool_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_bool(value)\n }\n\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bool_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x12() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n\n function checked_div_t_uint256(x, y) -> r {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n if iszero(y) { panic_error_0x12() }\n\n r := div(x, y)\n }\n\n function checked_sub_t_uint256(x, y) -> diff {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n diff := sub(x, y)\n\n if gt(diff, x) { panic_error_0x11() }\n\n }\n\n function checked_sub_t_int96(x, y) -> diff {\n x := cleanup_t_int96(x)\n y := cleanup_t_int96(y)\n diff := sub(x, y)\n\n if or(\n slt(diff, 0xffffffffffffffffffffffffffffffffffffffff800000000000000000000000),\n sgt(diff, 0x7fffffffffffffffffffffff)\n ) { panic_error_0x11() }\n\n }\n\n function checked_mul_t_uint256(x, y) -> product {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n let product_raw := mul(x, y)\n product := cleanup_t_uint256(product_raw)\n\n // overflow, if x != 0 and y != product/x\n if iszero(\n or(\n iszero(x),\n eq(y, div(product, x))\n )\n ) { panic_error_0x11() }\n\n }\n\n function increment_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n ret := add(value, 1)\n }\n\n function checked_add_t_int96(x, y) -> sum {\n x := cleanup_t_int96(x)\n y := cleanup_t_int96(y)\n sum := add(x, y)\n\n if or(\n sgt(sum, 0x7fffffffffffffffffffffff),\n slt(sum, 0xffffffffffffffffffffffffffffffffffffffff800000000000000000000000)\n ) { panic_error_0x11() }\n\n }\n\n function cleanup_t_uint128(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffff)\n }\n\n function abi_encode_t_uint128_to_t_uint128_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint128(value))\n }\n\n function abi_encode_tuple_t_uint128_t_uint128__to_t_uint128_t_uint128__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_uint128_to_t_uint128_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint128_to_t_uint128_fromStack(value1, add(headStart, 32))\n\n }\n\n function identity(value) -> ret {\n ret := value\n }\n\n function convert_t_uint160_to_t_uint160(value) -> converted {\n converted := cleanup_t_uint160(identity(cleanup_t_uint160(value)))\n }\n\n function convert_t_uint160_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_uint160(value)\n }\n\n function convert_t_contract$_ISuperToken_$6947_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_address(value)\n }\n\n function abi_encode_t_contract$_ISuperToken_$6947_to_t_address_fromStack(value, pos) {\n mstore(pos, convert_t_contract$_ISuperToken_$6947_to_t_address(value))\n }\n\n function abi_encode_tuple_t_contract$_ISuperToken_$6947_t_address_t_address__to_t_address_t_address_t_address__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_contract$_ISuperToken_$6947_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_address_to_t_address_fromStack(value2, add(headStart, 64))\n\n }\n\n function abi_decode_t_uint256_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_t_int96_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_int96(value)\n }\n\n function abi_decode_tuple_t_uint256t_int96t_uint256t_uint256_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3 {\n if slt(sub(dataEnd, headStart), 128) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_int96_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_uint256_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_tuple_t_contract$_ISuperToken_$6947_t_address_t_address_t_bytes_memory_ptr__to_t_address_t_address_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart , value3, value2, value1, value0) -> tail {\n tail := add(headStart, 128)\n\n abi_encode_t_contract$_ISuperToken_$6947_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_address_to_t_address_fromStack(value2, add(headStart, 64))\n\n mstore(add(headStart, 96), sub(tail, headStart))\n tail := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value3, tail)\n\n }\n\n function convert_t_contract$_IConstantFlowAgreementV1_$5487_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_address(value)\n }\n\n function abi_encode_t_contract$_IConstantFlowAgreementV1_$5487_to_t_address_fromStack(value, pos) {\n mstore(pos, convert_t_contract$_IConstantFlowAgreementV1_$5487_to_t_address(value))\n }\n\n function abi_encode_tuple_t_contract$_IConstantFlowAgreementV1_$5487_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr_t_bytes_memory_ptr__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_contract$_IConstantFlowAgreementV1_$5487_to_t_address_fromStack(value0, add(headStart, 0))\n\n mstore(add(headStart, 32), sub(tail, headStart))\n tail := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value1, tail)\n\n mstore(add(headStart, 64), sub(tail, headStart))\n tail := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value2, tail)\n\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() {\n revert(0, 0)\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n\n function allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function array_allocation_size_t_bytes_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := round_up_to_mul_of_32(length)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function abi_decode_available_length_t_bytes_memory_ptr_fromMemory(src, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_bytes_memory_ptr(length))\n mstore(array, length)\n let dst := add(array, 0x20)\n if gt(add(src, length), end) { revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() }\n copy_memory_to_memory_with_cleanup(src, dst, length)\n }\n\n // bytes\n function abi_decode_t_bytes_memory_ptr_fromMemory(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := mload(offset)\n array := abi_decode_available_length_t_bytes_memory_ptr_fromMemory(add(offset, 0x20), length, end)\n }\n\n function abi_decode_tuple_t_bytes_memory_ptr_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := mload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value0 := abi_decode_t_bytes_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_tuple_t_contract$_ISuperToken_$6947_t_address_t_int96_t_bytes_memory_ptr__to_t_address_t_address_t_int96_t_bytes_memory_ptr__fromStack_reversed(headStart , value3, value2, value1, value0) -> tail {\n tail := add(headStart, 128)\n\n abi_encode_t_contract$_ISuperToken_$6947_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_int96_to_t_int96_fromStack(value2, add(headStart, 64))\n\n mstore(add(headStart, 96), sub(tail, headStart))\n tail := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value3, tail)\n\n }\n\n function abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n }\n\n function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_t_address_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1(value) -> cleaned {\n cleaned := value\n }\n\n function shift_left_0(value) -> newValue {\n newValue :=\n\n shl(0, value)\n\n }\n\n function convert_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1_to_t_bytes32(value) -> converted {\n converted := cleanup_t_bytes32(shift_left_0(cleanup_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1(value)))\n }\n\n function abi_encode_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1_to_t_bytes32_fromStack(value, pos) {\n mstore(pos, convert_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1_to_t_bytes32(value))\n }\n\n function abi_encode_tuple_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1__to_t_bytes32__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n }\n\n function cleanup_t_contract$_ISuperAgreement_$6395(value) -> cleaned {\n cleaned := cleanup_t_address(value)\n }\n\n function validator_revert_t_contract$_ISuperAgreement_$6395(value) {\n if iszero(eq(value, cleanup_t_contract$_ISuperAgreement_$6395(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_contract$_ISuperAgreement_$6395_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_contract$_ISuperAgreement_$6395(value)\n }\n\n function abi_decode_tuple_t_contract$_ISuperAgreement_$6395_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_ISuperAgreement_$6395_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x01() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x01)\n revert(0, 0x24)\n }\n\n function abi_encode_tuple_t_contract$_ISuperToken_$6947_t_int96__to_t_address_t_int96__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_contract$_ISuperToken_$6947_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_int96_to_t_int96_fromStack(value1, add(headStart, 32))\n\n }\n\n function abi_encode_tuple_t_contract$_ISuperToken_$6947_t_address__to_t_address_t_address__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_contract$_ISuperToken_$6947_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n }\n\n function abi_decode_tuple_t_int96_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_int96_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n}\n","id":43,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100cf5760003560e01c806354bbc2ad1161008c578063c76474db11610066578063c76474db14610261578063dc5cd1d814610291578063dfc96e1b146102ad578063e32867fc146102c9576100cf565b806354bbc2ad146101cc5780639a5b5f9314610201578063a152ca6f14610231576100cf565b80630197c386146100d45780630dfa0b82146100f057806336fbb025146101205780633870f4a01461013c578063468240a91461016c578063521d3f3c1461019c575b600080fd5b6100ee60048036038101906100e99190613f40565b6102e5565b005b61010a60048036038101906101059190613fb9565b6102fc565b604051610117919061401b565b60405180910390f35b61013a60048036038101906101359190614036565b610312565b005b610156600480360381019061015191906140b1565b61032e565b604051610163919061401b565b60405180910390f35b610186600480360381019061018191906140b1565b610342565b604051610193919061410c565b60405180910390f35b6101b660048036038101906101b191906140b1565b610356565b6040516101c3919061401b565b60405180910390f35b6101e660048036038101906101e19190614127565b61036a565b6040516101f8969594939291906141a2565b60405180910390f35b61021b600480360381019061021691906140b1565b610396565b604051610228919061410c565b60405180910390f35b61024b600480360381019061024691906140b1565b6103aa565b604051610258919061401b565b60405180910390f35b61027b60048036038101906102769190614203565b6103be565b604051610288919061401b565b60405180910390f35b6102ab60048036038101906102a69190613f40565b6103d0565b005b6102c760048036038101906102c29190614127565b6103e7565b005b6102e360048036038101906102de9190613f40565b610db3565b005b6102ee826111d7565b6102f88282611219565b5050565b6000610309848484611399565b90509392505050565b61031a6114e6565b6103278585858585611578565b5050505050565b600061033a83836117d2565b905092915050565b600061034e83836118a5565b905092915050565b600061036283836119a5565b905092915050565b60008060008060008061037e898989611a35565b95509550955095509550955093975093979195509350565b60006103a28383611e1f565b905092915050565b60006103b68383612001565b905092915050565b60006103c982612091565b9050919050565b6103d9826120e3565b6103e38282612127565b5050565b6103f0826120e3565b6103fa3383612376565b61040261269e565b61040b826111d7565b60006104156126eb565b905060006104238585612718565b905060008260010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060010154036104f1576040517f3c2779e500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006104fb6127c9565b905060008360010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060000160009054906101000a9004600b0b90506105ab86826127f6565b60006105b93388888561283a565b905060006105c733896119a5565b9050888460010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550848460010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060020181905550600061073b6128bf565b9050600081600b0160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508a82600c0160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508682600c0160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000838152602001908152602001600020600101819055504282600c0160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060020181905550808660010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008581526020019081526020016000206000018190555061096f8a338d86896128ec565b60006040518060400160405280600267ffffffffffffffff81111561099757610996614230565b5b6040519080825280602002602001820160405280156109c55781602001602082028036833780820191505090505b508152602001600167ffffffffffffffff8111156109e6576109e5614230565b5b604051908082528060200260200182016040528015610a1957816020015b6060815260200190600190039081610a045790505b50815250905060018160000151600081518110610a3957610a3861425f565b5b60200260200101906003811115610a5357610a5261428e565b5b90816003811115610a6757610a6661428e565b5b8152505060038160000151600181518110610a8557610a8461425f565b5b60200260200101906003811115610a9f57610a9e61428e565b5b90816003811115610ab357610ab261428e565b5b81525050610acc8542610ac691906142ec565b86612a3b565b8160200151600081518110610ae457610ae361425f565b5b602002602001018190525060006336fbb02560e01b8c338f888b604051602401610b1295949392919061432f565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050610b79612a67565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633323b46730838560006040518563ffffffff1660e01b8152600401610bdc9493929190614659565b6020604051808303816000875af1158015610bfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1f91906146d8565b8860010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008781526020019081526020016000206005018190555060018860000160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d4491906142ec565b92505081905550600184600b0160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d9d91906142ec565b9250508190555050505050505050505050505050565b6000610dbd6127c9565b90506000610dc96128bf565b600701548260010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085815260200190815260200160002060030154610e6a91906142ec565b905080421015610ea6576040517f085de62500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610eae612a67565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ee8ca3b58360010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000868152602001908152602001600020600501546040518263ffffffff1660e01b8152600401610f9c9190614705565b600060405180830381600087803b158015610fb657600080fd5b505af1158015610fca573d6000803e3d6000fd5b5050505060008260010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008360010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008681526020019081526020016000206002015490506111cf8633848861112b6126eb565b60010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087815260200190815260200160002060000160009054906101000a9004600b0b611578565b505050505050565b6111e081612a94565b611216576040517f334ae3e600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b8173ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b815260040161125693929190614720565b6020604051808303816000875af1158015611275573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112999190614783565b50806112a36127c9565b60020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461132f91906142ec565b925050819055508061133f6127c9565b60030160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461138e91906142ec565b925050819055505050565b600080826bffffffffffffffffffffffff166113b36127c9565b60020160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461143b91906147df565b905060006114476128bf565b90508060060154821015611487576040517fcdd3529e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008160060154836114999190614810565b905081600701548110156114d9576040517f6c451f0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8093505050509392505050565b6114ee612a67565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611576576040517fb5e0b29200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600085905060006115aa30868473ffffffffffffffffffffffffffffffffffffffff16612af39092919063ffffffff16565b9050600083826115ba9190614844565b600b0b136115f3576115ed30868473ffffffffffffffffffffffffffffffffffffffff16612b939092919063ffffffff16565b5061162b565b6116298584836116039190614844565b8473ffffffffffffffffffffffffffffffffffffffff16612d469092919063ffffffff16565b505b426116346127c9565b60010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008681526020019081526020016000206004018190555060006116d36127c9565b60010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000868152602001908152602001600020600001549050426117706128bf565b600c0160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000838152602001908152602001600020600301819055505050505050505050565b60008060006117e18585612ef9565b905060008060008060006117f68a8a88611a35565b955050945094509450945060008061180f878c88612faa565b93505092505082156118245760009850611893565b600084146118585784846118389190614810565b826bffffffffffffffffffffffff1661185191906148a8565b9850611892565b6000811461188c57848161186c9190614810565b826bffffffffffffffffffffffff1661188591906148a8565b9850611891565b600098505b5b5b88995050505050505050505092915050565b6000806118b284846119a5565b905060008111156119995760006118d685856001856118d19190614810565b61324e565b935050505060006118e56127c9565b60010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001856119719190614810565b8152602001908152602001600020600401541480156119905750600081145b9250505061199f565b60009150505b92915050565b60006119af6127c9565b60000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600080600080600080611a466127c9565b60010160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611b006127c9565b60010160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600089815260200190815260200160002060020154611b9a6127c9565b60010160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a815260200190815260200160002060030154611c346127c9565b60010160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008b815260200190815260200160002060040154611cce6127c9565b60010160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c815260200190815260200160002060050154611d686127c9565b60010160008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d815260200190815260200160002060060160009054906101000a900460ff1695509550955095509550955093975093979195509350565b6000806000611e2d846133cd565b915091506000821480611e4257506000815111155b15611e5257600092505050611ffb565b60005b8151811015611ff3576000611e8486848481518110611e7757611e7661425f565b5b6020026020010151612718565b9050600080611eae88868681518110611ea057611e9f61425f565b5b602002602001015185612faa565b935093505050858214611eca5760009650505050505050611ffb565b60008114611ee15760009650505050505050611ffb565b6000611f078a878781518110611efa57611ef961425f565b5b6020026020010151612ef9565b9050600080600080611f348e8b8b81518110611f2657611f2561425f565b5b602002602001015187611a35565b505093509350935093508c73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611f855760009b505050505050505050505050611ffb565b878314611fa05760009b505050505050505050505050611ffb565b8a821015611fbc5760009b505050505050505050505050611ffb565b60008114611fd85760009b505050505050505050505050611ffb565b50505050505050508080611feb906148ea565b915050611e55565b506001925050505b92915050565b600061200b6127c9565b60020160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600061209b6127c9565b60030160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6120ed33826118a5565b15612124576040517fd18923ab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6121313383612376565b600061213b6127c9565b60020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156121f5576040517f356680b700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816121fe6127c9565b60020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461228a9190614810565b925050819055508161229a6127c9565b60030160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546122e99190614810565b925050819055508273ffffffffffffffffffffffffffffffffffffffff166323b872dd3033856040518463ffffffff1660e01b815260040161232d93929190614720565b6020604051808303816000875af115801561234c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123709190614783565b50505050565b600061238283836117d2565b90508061238d6127c9565b60020160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124199190614810565b92505081905550806124296127c9565b60030160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124789190614810565b9250508190555060006124896127c9565b60020160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561253f576040517f0a2005fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006125496127c9565b60030160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156125c2576040517f2fe0888f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006125ce84846119a5565b905060008111156126985760016125e36127c9565b60010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060018461266f9190614810565b815260200190815260200160002060060160006101000a81548160ff0219169083151502179055505b50505050565b6126a6612a67565b600301546126b26134f9565b116126e9576040517fa426119900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6000807f9cd9afe22fea86221d6e8117226b65bb0e2af8c4f5b8abf255fb0afcad4a3a9c90508091505090565b6000806127236126eb565b60000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081146127bd576001816127b89190614810565b6127c0565b60005b91505092915050565b6000807f2da2adfb54fd91bfb31e0d805792077ddcd5b0427b14a56397e2f3cc190c883090508091505090565b61280082826135bb565b612836576040517f1824866a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b600080612848868685611399565b905060006128546128bf565b90508060070154816006015461286a91906142ec565b8510156128a3576040517f3661e75b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818510156128b157846128b3565b815b92505050949350505050565b6000807f2f7ed27098ecefe70183ee38ae4542dee65215b0786f6870871034402cfe2cc990508091505090565b6000859050600061291e30868473ffffffffffffffffffffffffffffffffffffffff16612af39092919063ffffffff16565b9050600081600b0b1361295c5761295685848473ffffffffffffffffffffffffffffffffffffffff1661364f9092919063ffffffff16565b50612994565b61299285848361296c9190614932565b8473ffffffffffffffffffffffffffffffffffffffff16612d469092919063ffffffff16565b505b4261299d6127c9565b60010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008681526020019081526020016000206003018190555050505050505050565b60608282604051602001612a509291906149c1565b604051602081830303815290604052905092915050565b6000807fde06769ca6d80a022439e234eebb61c3801d652175b62f912d6f8cac7b881c6590508091505090565b6000612a9e6128bf565b60090160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080612aff85613802565b9150508073ffffffffffffffffffffffffffffffffffffffff1663e6a1e8888686866040518463ffffffff1660e01b8152600401612b3f93929190614a49565b608060405180830381865afa158015612b5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b809190614aaa565b9091925090505080925050509392505050565b6000806000612ba186613a43565b915091508173ffffffffffffffffffffffffffffffffffffffff166339255d5b828373ffffffffffffffffffffffffffffffffffffffff1663b4b333c68a8a8a600067ffffffffffffffff811115612bfc57612bfb614230565b5b6040519080825280601f01601f191660200182016040528015612c2e5781602001600182028036833780820191505090505b50604051602401612c429493929190614b11565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050600067ffffffffffffffff811115612c9f57612c9e614230565b5b6040519080825280601f01601f191660200182016040528015612cd15781602001600182028036833780820191505090505b506040518463ffffffff1660e01b8152600401612cf093929190614b7e565b6000604051808303816000875af1158015612d0f573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190612d389190614cba565b506001925050509392505050565b6000806000612d5486613a43565b915091508173ffffffffffffffffffffffffffffffffffffffff166339255d5b828373ffffffffffffffffffffffffffffffffffffffff166350209a628a8a8a600067ffffffffffffffff811115612daf57612dae614230565b5b6040519080825280601f01601f191660200182016040528015612de15781602001600182028036833780820191505090505b50604051602401612df59493929190614d03565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050600067ffffffffffffffff811115612e5257612e51614230565b5b6040519080825280601f01601f191660200182016040528015612e845781602001600182028036833780820191505090505b506040518463ffffffff1660e01b8152600401612ea393929190614b7e565b6000604051808303816000875af1158015612ec2573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190612eeb9190614cba565b506001925050509392505050565b600080612f046127c9565b60000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008114612f9e57600181612f999190614810565b612fa1565b60005b91505092915050565b600080600080612fb86126eb565b60010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600086815260200190815260200160002060000160009054906101000a9004600b0b61305f6126eb565b60010160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878152602001908152602001600020600001600c9054906101000a90046bffffffffffffffffffffffff166131116126eb565b60010160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000888152602001908152602001600020600101546131ab6126eb565b60010160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600089815260200190815260200160002060020154935093509350935093509350935093565b600080600080600061325e6127c9565b905060008160010160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008260010160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008981526020019081526020016000206002015490506133b9828a83612faa565b965096509650965050505093509350935093565b600060606133d96126eb565b60020160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546134256126eb565b60020160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101808054806020026020016040519081016040528092919081815260200182805480156134e957602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161349f575b5050505050905091509150915091565b6000613503612a67565b60010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b47064c83073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6040518363ffffffff1660e01b8152600401613575929190614d4f565b602060405180830381865afa158015613592573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135b69190614d78565b905090565b6000808373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016135f79190614da5565b602060405180830381865afa158015613614573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136389190614d78565b90506136448484613cca565b811191505092915050565b600080600061365d86613a43565b915091508173ffffffffffffffffffffffffffffffffffffffff166339255d5b828373ffffffffffffffffffffffffffffffffffffffff166362fc305e8a8a8a600067ffffffffffffffff8111156136b8576136b7614230565b5b6040519080825280601f01601f1916602001820160405280156136ea5781602001600182028036833780820191505090505b506040516024016136fe9493929190614d03565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050600067ffffffffffffffff81111561375b5761375a614230565b5b6040519080825280601f01601f19166020018201604052801561378d5781602001600182028036833780820191505090505b506040518463ffffffff1660e01b81526004016137ac93929190614b7e565b6000604051808303816000875af11580156137cb573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906137f49190614cba565b506001925050509392505050565b6000807f65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea8375491507fb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a549050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036139c457600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613927578273ffffffffffffffffffffffffffffffffffffffff166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015613900573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139249190614dd5565b91505b8173ffffffffffffffffffffffffffffffffffffffff1663b6d200de7fa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd36040518263ffffffff1660e01b81526004016139809190614e4a565b602060405180830381865afa15801561399d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139c19190614ea3565b90505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613a0157613a00614ed0565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613a3e57613a3d614ed0565b5b915091565b6000807f65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea8375491507fb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a549050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613c4b57600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613b68578273ffffffffffffffffffffffffffffffffffffffff166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b659190614dd5565b91505b8173ffffffffffffffffffffffffffffffffffffffff1663b6d200de7fa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd36040518263ffffffff1660e01b8152600401613bc19190614e4a565b602060405180830381865afa158015613bde573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c029190614ea3565b9050817f65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea83755807fb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a555b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613c8857613c87614ed0565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613cc557613cc4614ed0565b5b915091565b6000808390506000613cfb848373ffffffffffffffffffffffffffffffffffffffff16613d7090919063ffffffff16565b90506000613d28308473ffffffffffffffffffffffffffffffffffffffff16613e0490919063ffffffff16565b9050613d326128bf565b600801548582613d429190614932565b6bffffffffffffffffffffffff16613d5a91906148a8565b82613d6591906142ec565b935050505092915050565b600080613d7c84613802565b9150508073ffffffffffffffffffffffffffffffffffffffff16638d997f6e85856040518363ffffffff1660e01b8152600401613dba929190614eff565b602060405180830381865afa158015613dd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dfb9190614d78565b91505092915050565b600080613e1084613802565b9150508073ffffffffffffffffffffffffffffffffffffffff1663e8e7e2d185856040518363ffffffff1660e01b8152600401613e4e929190614f28565b602060405180830381865afa158015613e6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e8f9190614f51565b91505092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613ed782613eac565b9050919050565b613ee781613ecc565b8114613ef257600080fd5b50565b600081359050613f0481613ede565b92915050565b6000819050919050565b613f1d81613f0a565b8114613f2857600080fd5b50565b600081359050613f3a81613f14565b92915050565b60008060408385031215613f5757613f56613ea2565b5b6000613f6585828601613ef5565b9250506020613f7685828601613f2b565b9150509250929050565b600081600b0b9050919050565b613f9681613f80565b8114613fa157600080fd5b50565b600081359050613fb381613f8d565b92915050565b600080600060608486031215613fd257613fd1613ea2565b5b6000613fe086828701613ef5565b9350506020613ff186828701613ef5565b925050604061400286828701613fa4565b9150509250925092565b61401581613f0a565b82525050565b6000602082019050614030600083018461400c565b92915050565b600080600080600060a0868803121561405257614051613ea2565b5b600061406088828901613ef5565b955050602061407188828901613ef5565b945050604061408288828901613ef5565b935050606061409388828901613f2b565b92505060806140a488828901613fa4565b9150509295509295909350565b600080604083850312156140c8576140c7613ea2565b5b60006140d685828601613ef5565b92505060206140e785828601613ef5565b9150509250929050565b60008115159050919050565b614106816140f1565b82525050565b600060208201905061412160008301846140fd565b92915050565b6000806000606084860312156141405761413f613ea2565b5b600061414e86828701613ef5565b935050602061415f86828701613ef5565b925050604061417086828701613f2b565b9150509250925092565b61418381613ecc565b82525050565b6000819050919050565b61419c81614189565b82525050565b600060c0820190506141b7600083018961417a565b6141c4602083018861400c565b6141d1604083018761400c565b6141de606083018661400c565b6141eb6080830185614193565b6141f860a08301846140fd565b979650505050505050565b60006020828403121561421957614218613ea2565b5b600061422784828501613ef5565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006142f782613f0a565b915061430283613f0a565b925082820190508082111561431a576143196142bd565b5b92915050565b61432981613f80565b82525050565b600060a082019050614344600083018861417a565b614351602083018761417a565b61435e604083018661417a565b61436b606083018561400c565b6143786080830184614320565b9695505050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156143bc5780820151818401526020810190506143a1565b60008484015250505050565b6000601f19601f8301169050919050565b60006143e482614382565b6143ee818561438d565b93506143fe81856020860161439e565b614407816143c8565b840191505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6004811061444f5761444e61428e565b5b50565b60008190506144608261443e565b919050565b600061447082614452565b9050919050565b61448081614465565b82525050565b60006144928383614477565b60208301905092915050565b6000602082019050919050565b60006144b682614412565b6144c0818561441d565b93506144cb8361442e565b8060005b838110156144fc5781516144e38882614486565b97506144ee8361449e565b9250506001810190506144cf565b5085935050505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600082825260208201905092915050565b600061455182614382565b61455b8185614535565b935061456b81856020860161439e565b614574816143c8565b840191505092915050565b600061458b8383614546565b905092915050565b6000602082019050919050565b60006145ab82614509565b6145b58185614514565b9350836020820285016145c785614525565b8060005b8581101561460357848403895281516145e4858261457f565b94506145ef83614593565b925060208a019950506001810190506145cb565b50829750879550505050505092915050565b6000604083016000830151848203600086015261463282826144ab565b9150506020830151848203602086015261464c82826145a0565b9150508091505092915050565b600060808201905061466e600083018761417a565b818103602083015261468081866143d9565b905081810360408301526146948185614615565b90506146a3606083018461417a565b95945050505050565b6146b581614189565b81146146c057600080fd5b50565b6000815190506146d2816146ac565b92915050565b6000602082840312156146ee576146ed613ea2565b5b60006146fc848285016146c3565b91505092915050565b600060208201905061471a6000830184614193565b92915050565b6000606082019050614735600083018661417a565b614742602083018561417a565b61474f604083018461400c565b949350505050565b614760816140f1565b811461476b57600080fd5b50565b60008151905061477d81614757565b92915050565b60006020828403121561479957614798613ea2565b5b60006147a78482850161476e565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006147ea82613f0a565b91506147f583613f0a565b925082614805576148046147b0565b5b828204905092915050565b600061481b82613f0a565b915061482683613f0a565b925082820390508181111561483e5761483d6142bd565b5b92915050565b600061484f82613f80565b915061485a83613f80565b925082820390506b7fffffffffffffffffffffff81137fffffffffffffffffffffffffffffffffffffffff800000000000000000000000821217156148a2576148a16142bd565b5b92915050565b60006148b382613f0a565b91506148be83613f0a565b92508282026148cc81613f0a565b915082820484148315176148e3576148e26142bd565b5b5092915050565b60006148f582613f0a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614927576149266142bd565b5b600182019050919050565b600061493d82613f80565b915061494883613f80565b925082820190507fffffffffffffffffffffffffffffffffffffffff80000000000000000000000081126b7fffffffffffffffffffffff821317156149905761498f6142bd565b5b92915050565b60006fffffffffffffffffffffffffffffffff82169050919050565b6149bb81614996565b82525050565b60006040820190506149d660008301856149b2565b6149e360208301846149b2565b9392505050565b6000819050919050565b6000614a0f614a0a614a0584613eac565b6149ea565b613eac565b9050919050565b6000614a21826149f4565b9050919050565b6000614a3382614a16565b9050919050565b614a4381614a28565b82525050565b6000606082019050614a5e6000830186614a3a565b614a6b602083018561417a565b614a78604083018461417a565b949350505050565b600081519050614a8f81613f14565b92915050565b600081519050614aa481613f8d565b92915050565b60008060008060808587031215614ac457614ac3613ea2565b5b6000614ad287828801614a80565b9450506020614ae387828801614a95565b9350506040614af487828801614a80565b9250506060614b0587828801614a80565b91505092959194509250565b6000608082019050614b266000830187614a3a565b614b33602083018661417a565b614b40604083018561417a565b8181036060830152614b5281846143d9565b905095945050505050565b6000614b6882614a16565b9050919050565b614b7881614b5d565b82525050565b6000606082019050614b936000830186614b6f565b8181036020830152614ba581856143d9565b90508181036040830152614bb981846143d9565b9050949350505050565b600080fd5b600080fd5b614bd6826143c8565b810181811067ffffffffffffffff82111715614bf557614bf4614230565b5b80604052505050565b6000614c08613e98565b9050614c148282614bcd565b919050565b600067ffffffffffffffff821115614c3457614c33614230565b5b614c3d826143c8565b9050602081019050919050565b6000614c5d614c5884614c19565b614bfe565b905082815260208101848484011115614c7957614c78614bc8565b5b614c8484828561439e565b509392505050565b600082601f830112614ca157614ca0614bc3565b5b8151614cb1848260208601614c4a565b91505092915050565b600060208284031215614cd057614ccf613ea2565b5b600082015167ffffffffffffffff811115614cee57614ced613ea7565b5b614cfa84828501614c8c565b91505092915050565b6000608082019050614d186000830187614a3a565b614d25602083018661417a565b614d326040830185614320565b8181036060830152614d4481846143d9565b905095945050505050565b6000604082019050614d64600083018561417a565b614d71602083018461417a565b9392505050565b600060208284031215614d8e57614d8d613ea2565b5b6000614d9c84828501614a80565b91505092915050565b6000602082019050614dba600083018461417a565b92915050565b600081519050614dcf81613ede565b92915050565b600060208284031215614deb57614dea613ea2565b5b6000614df984828501614dc0565b91505092915050565b6000819050919050565b60008160001b9050919050565b6000614e34614e2f614e2a84614e02565b614e0c565b614189565b9050919050565b614e4481614e19565b82525050565b6000602082019050614e5f6000830184614e3b565b92915050565b6000614e7082613ecc565b9050919050565b614e8081614e65565b8114614e8b57600080fd5b50565b600081519050614e9d81614e77565b92915050565b600060208284031215614eb957614eb8613ea2565b5b6000614ec784828501614e8e565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000604082019050614f146000830185614a3a565b614f216020830184614320565b9392505050565b6000604082019050614f3d6000830185614a3a565b614f4a602083018461417a565b9392505050565b600060208284031215614f6757614f66613ea2565b5b6000614f7584828501614a95565b9150509291505056fea26469706673582212201dce8b857275c446b38b2fd0190c291b939a9d8728ca09a3c4be594a1d5f303264736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xCF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x54BBC2AD GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xC76474DB GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xC76474DB EQ PUSH2 0x261 JUMPI DUP1 PUSH4 0xDC5CD1D8 EQ PUSH2 0x291 JUMPI DUP1 PUSH4 0xDFC96E1B EQ PUSH2 0x2AD JUMPI DUP1 PUSH4 0xE32867FC EQ PUSH2 0x2C9 JUMPI PUSH2 0xCF JUMP JUMPDEST DUP1 PUSH4 0x54BBC2AD EQ PUSH2 0x1CC JUMPI DUP1 PUSH4 0x9A5B5F93 EQ PUSH2 0x201 JUMPI DUP1 PUSH4 0xA152CA6F EQ PUSH2 0x231 JUMPI PUSH2 0xCF JUMP JUMPDEST DUP1 PUSH4 0x197C386 EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0xDFA0B82 EQ PUSH2 0xF0 JUMPI DUP1 PUSH4 0x36FBB025 EQ PUSH2 0x120 JUMPI DUP1 PUSH4 0x3870F4A0 EQ PUSH2 0x13C JUMPI DUP1 PUSH4 0x468240A9 EQ PUSH2 0x16C JUMPI DUP1 PUSH4 0x521D3F3C EQ PUSH2 0x19C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEE PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xE9 SWAP2 SWAP1 PUSH2 0x3F40 JUMP JUMPDEST PUSH2 0x2E5 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x10A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x105 SWAP2 SWAP1 PUSH2 0x3FB9 JUMP JUMPDEST PUSH2 0x2FC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x117 SWAP2 SWAP1 PUSH2 0x401B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x13A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x135 SWAP2 SWAP1 PUSH2 0x4036 JUMP JUMPDEST PUSH2 0x312 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x156 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x151 SWAP2 SWAP1 PUSH2 0x40B1 JUMP JUMPDEST PUSH2 0x32E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x163 SWAP2 SWAP1 PUSH2 0x401B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x186 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x181 SWAP2 SWAP1 PUSH2 0x40B1 JUMP JUMPDEST PUSH2 0x342 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x193 SWAP2 SWAP1 PUSH2 0x410C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1B1 SWAP2 SWAP1 PUSH2 0x40B1 JUMP JUMPDEST PUSH2 0x356 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1C3 SWAP2 SWAP1 PUSH2 0x401B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1E6 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1E1 SWAP2 SWAP1 PUSH2 0x4127 JUMP JUMPDEST PUSH2 0x36A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1F8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x41A2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x21B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x216 SWAP2 SWAP1 PUSH2 0x40B1 JUMP JUMPDEST PUSH2 0x396 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x228 SWAP2 SWAP1 PUSH2 0x410C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x24B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x246 SWAP2 SWAP1 PUSH2 0x40B1 JUMP JUMPDEST PUSH2 0x3AA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x258 SWAP2 SWAP1 PUSH2 0x401B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x27B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x276 SWAP2 SWAP1 PUSH2 0x4203 JUMP JUMPDEST PUSH2 0x3BE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x288 SWAP2 SWAP1 PUSH2 0x401B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2AB PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2A6 SWAP2 SWAP1 PUSH2 0x3F40 JUMP JUMPDEST PUSH2 0x3D0 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2C7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2C2 SWAP2 SWAP1 PUSH2 0x4127 JUMP JUMPDEST PUSH2 0x3E7 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2E3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2DE SWAP2 SWAP1 PUSH2 0x3F40 JUMP JUMPDEST PUSH2 0xDB3 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2EE DUP3 PUSH2 0x11D7 JUMP JUMPDEST PUSH2 0x2F8 DUP3 DUP3 PUSH2 0x1219 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x309 DUP5 DUP5 DUP5 PUSH2 0x1399 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x31A PUSH2 0x14E6 JUMP JUMPDEST PUSH2 0x327 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x1578 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x33A DUP4 DUP4 PUSH2 0x17D2 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x34E DUP4 DUP4 PUSH2 0x18A5 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x362 DUP4 DUP4 PUSH2 0x19A5 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x37E DUP10 DUP10 DUP10 PUSH2 0x1A35 JUMP JUMPDEST SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 POP SWAP4 SWAP8 POP SWAP4 SWAP8 SWAP2 SWAP6 POP SWAP4 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A2 DUP4 DUP4 PUSH2 0x1E1F JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B6 DUP4 DUP4 PUSH2 0x2001 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C9 DUP3 PUSH2 0x2091 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3D9 DUP3 PUSH2 0x20E3 JUMP JUMPDEST PUSH2 0x3E3 DUP3 DUP3 PUSH2 0x2127 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x3F0 DUP3 PUSH2 0x20E3 JUMP JUMPDEST PUSH2 0x3FA CALLER DUP4 PUSH2 0x2376 JUMP JUMPDEST PUSH2 0x402 PUSH2 0x269E JUMP JUMPDEST PUSH2 0x40B DUP3 PUSH2 0x11D7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x415 PUSH2 0x26EB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x423 DUP6 DUP6 PUSH2 0x2718 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x1 ADD PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD SLOAD SUB PUSH2 0x4F1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x3C2779E500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4FB PUSH2 0x27C9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x1 ADD PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xB SIGNEXTEND SWAP1 POP PUSH2 0x5AB DUP7 DUP3 PUSH2 0x27F6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5B9 CALLER DUP9 DUP9 DUP6 PUSH2 0x283A JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x5C7 CALLER DUP10 PUSH2 0x19A5 JUMP JUMPDEST SWAP1 POP DUP9 DUP5 PUSH1 0x1 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP5 DUP5 PUSH1 0x1 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD DUP2 SWAP1 SSTORE POP PUSH1 0x0 PUSH2 0x73B PUSH2 0x28BF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0xB ADD PUSH1 0x0 DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP11 DUP3 PUSH1 0xC ADD PUSH1 0x0 DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP7 DUP3 PUSH1 0xC ADD PUSH1 0x0 DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP TIMESTAMP DUP3 PUSH1 0xC ADD PUSH1 0x0 DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD DUP2 SWAP1 SSTORE POP DUP1 DUP7 PUSH1 0x1 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP2 SWAP1 SSTORE POP PUSH2 0x96F DUP11 CALLER DUP14 DUP7 DUP10 PUSH2 0x28EC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x997 JUMPI PUSH2 0x996 PUSH2 0x4230 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x9C5 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x9E6 JUMPI PUSH2 0x9E5 PUSH2 0x4230 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xA19 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xA04 JUMPI SWAP1 POP JUMPDEST POP DUP2 MSTORE POP SWAP1 POP PUSH1 0x1 DUP2 PUSH1 0x0 ADD MLOAD PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xA39 JUMPI PUSH2 0xA38 PUSH2 0x425F JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xA53 JUMPI PUSH2 0xA52 PUSH2 0x428E JUMP JUMPDEST JUMPDEST SWAP1 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xA67 JUMPI PUSH2 0xA66 PUSH2 0x428E JUMP JUMPDEST JUMPDEST DUP2 MSTORE POP POP PUSH1 0x3 DUP2 PUSH1 0x0 ADD MLOAD PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0xA85 JUMPI PUSH2 0xA84 PUSH2 0x425F JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xA9F JUMPI PUSH2 0xA9E PUSH2 0x428E JUMP JUMPDEST JUMPDEST SWAP1 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xAB3 JUMPI PUSH2 0xAB2 PUSH2 0x428E JUMP JUMPDEST JUMPDEST DUP2 MSTORE POP POP PUSH2 0xACC DUP6 TIMESTAMP PUSH2 0xAC6 SWAP2 SWAP1 PUSH2 0x42EC JUMP JUMPDEST DUP7 PUSH2 0x2A3B JUMP JUMPDEST DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xAE4 JUMPI PUSH2 0xAE3 PUSH2 0x425F JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP PUSH1 0x0 PUSH4 0x36FBB025 PUSH1 0xE0 SHL DUP13 CALLER DUP16 DUP9 DUP12 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0xB12 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x432F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP SWAP1 POP PUSH2 0xB79 PUSH2 0x2A67 JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x3323B467 ADDRESS DUP4 DUP6 PUSH1 0x0 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBDC SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4659 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0xBFB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC1F SWAP2 SWAP1 PUSH2 0x46D8 JUMP JUMPDEST DUP9 PUSH1 0x1 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP15 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x5 ADD DUP2 SWAP1 SSTORE POP PUSH1 0x1 DUP9 PUSH1 0x0 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP15 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xD44 SWAP2 SWAP1 PUSH2 0x42EC JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 DUP5 PUSH1 0xB ADD PUSH1 0x0 DUP15 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xD9D SWAP2 SWAP1 PUSH2 0x42EC JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDBD PUSH2 0x27C9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xDC9 PUSH2 0x28BF JUMP JUMPDEST PUSH1 0x7 ADD SLOAD DUP3 PUSH1 0x1 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD SLOAD PUSH2 0xE6A SWAP2 SWAP1 PUSH2 0x42EC JUMP JUMPDEST SWAP1 POP DUP1 TIMESTAMP LT ISZERO PUSH2 0xEA6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x85DE62500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xEAE PUSH2 0x2A67 JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xEE8CA3B5 DUP4 PUSH1 0x1 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x5 ADD SLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF9C SWAP2 SWAP1 PUSH2 0x4705 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFCA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 DUP3 PUSH1 0x1 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x1 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP1 POP PUSH2 0x11CF DUP7 CALLER DUP5 DUP9 PUSH2 0x112B PUSH2 0x26EB JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xB SIGNEXTEND PUSH2 0x1578 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x11E0 DUP2 PUSH2 0x2A94 JUMP JUMPDEST PUSH2 0x1216 JUMPI PUSH1 0x40 MLOAD PUSH32 0x334AE3E600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x23B872DD CALLER ADDRESS DUP5 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1256 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4720 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1275 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1299 SWAP2 SWAP1 PUSH2 0x4783 JUMP JUMPDEST POP DUP1 PUSH2 0x12A3 PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x2 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x132F SWAP2 SWAP1 PUSH2 0x42EC JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 PUSH2 0x133F PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x3 ADD PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x138E SWAP2 SWAP1 PUSH2 0x42EC JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x13B3 PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x2 ADD PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x143B SWAP2 SWAP1 PUSH2 0x47DF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1447 PUSH2 0x28BF JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x6 ADD SLOAD DUP3 LT ISZERO PUSH2 0x1487 JUMPI PUSH1 0x40 MLOAD PUSH32 0xCDD3529E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x6 ADD SLOAD DUP4 PUSH2 0x1499 SWAP2 SWAP1 PUSH2 0x4810 JUMP JUMPDEST SWAP1 POP DUP2 PUSH1 0x7 ADD SLOAD DUP2 LT ISZERO PUSH2 0x14D9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x6C451F0C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP4 POP POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x14EE PUSH2 0x2A67 JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1576 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB5E0B29200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP6 SWAP1 POP PUSH1 0x0 PUSH2 0x15AA ADDRESS DUP7 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2AF3 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 DUP3 PUSH2 0x15BA SWAP2 SWAP1 PUSH2 0x4844 JUMP JUMPDEST PUSH1 0xB SIGNEXTEND SGT PUSH2 0x15F3 JUMPI PUSH2 0x15ED ADDRESS DUP7 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2B93 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP PUSH2 0x162B JUMP JUMPDEST PUSH2 0x1629 DUP6 DUP5 DUP4 PUSH2 0x1603 SWAP2 SWAP1 PUSH2 0x4844 JUMP JUMPDEST DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2D46 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP JUMPDEST TIMESTAMP PUSH2 0x1634 PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD DUP2 SWAP1 SSTORE POP PUSH1 0x0 PUSH2 0x16D3 PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD SLOAD SWAP1 POP TIMESTAMP PUSH2 0x1770 PUSH2 0x28BF JUMP JUMPDEST PUSH1 0xC ADD PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD DUP2 SWAP1 SSTORE POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x17E1 DUP6 DUP6 PUSH2 0x2EF9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x17F6 DUP11 DUP11 DUP9 PUSH2 0x1A35 JUMP JUMPDEST SWAP6 POP POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP PUSH1 0x0 DUP1 PUSH2 0x180F DUP8 DUP13 DUP9 PUSH2 0x2FAA JUMP JUMPDEST SWAP4 POP POP SWAP3 POP POP DUP3 ISZERO PUSH2 0x1824 JUMPI PUSH1 0x0 SWAP9 POP PUSH2 0x1893 JUMP JUMPDEST PUSH1 0x0 DUP5 EQ PUSH2 0x1858 JUMPI DUP5 DUP5 PUSH2 0x1838 SWAP2 SWAP1 PUSH2 0x4810 JUMP JUMPDEST DUP3 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1851 SWAP2 SWAP1 PUSH2 0x48A8 JUMP JUMPDEST SWAP9 POP PUSH2 0x1892 JUMP JUMPDEST PUSH1 0x0 DUP2 EQ PUSH2 0x188C JUMPI DUP5 DUP2 PUSH2 0x186C SWAP2 SWAP1 PUSH2 0x4810 JUMP JUMPDEST DUP3 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1885 SWAP2 SWAP1 PUSH2 0x48A8 JUMP JUMPDEST SWAP9 POP PUSH2 0x1891 JUMP JUMPDEST PUSH1 0x0 SWAP9 POP JUMPDEST JUMPDEST JUMPDEST DUP9 SWAP10 POP POP POP POP POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x18B2 DUP5 DUP5 PUSH2 0x19A5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 GT ISZERO PUSH2 0x1999 JUMPI PUSH1 0x0 PUSH2 0x18D6 DUP6 DUP6 PUSH1 0x1 DUP6 PUSH2 0x18D1 SWAP2 SWAP1 PUSH2 0x4810 JUMP JUMPDEST PUSH2 0x324E JUMP JUMPDEST SWAP4 POP POP POP POP PUSH1 0x0 PUSH2 0x18E5 PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH1 0x1 DUP6 PUSH2 0x1971 SWAP2 SWAP1 PUSH2 0x4810 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD SLOAD EQ DUP1 ISZERO PUSH2 0x1990 JUMPI POP PUSH1 0x0 DUP2 EQ JUMPDEST SWAP3 POP POP POP PUSH2 0x199F JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x19AF PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x1A46 PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1B00 PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH2 0x1B9A PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP11 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD SLOAD PUSH2 0x1C34 PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP14 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP12 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD SLOAD PUSH2 0x1CCE PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP15 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP14 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP13 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x5 ADD SLOAD PUSH2 0x1D68 PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP16 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP15 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP14 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x6 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 POP SWAP4 SWAP8 POP SWAP4 SWAP8 SWAP2 SWAP6 POP SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1E2D DUP5 PUSH2 0x33CD JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ DUP1 PUSH2 0x1E42 JUMPI POP PUSH1 0x0 DUP2 MLOAD GT ISZERO JUMPDEST ISZERO PUSH2 0x1E52 JUMPI PUSH1 0x0 SWAP3 POP POP POP PUSH2 0x1FFB JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x1FF3 JUMPI PUSH1 0x0 PUSH2 0x1E84 DUP7 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1E77 JUMPI PUSH2 0x1E76 PUSH2 0x425F JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x2718 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x1EAE DUP9 DUP7 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x1EA0 JUMPI PUSH2 0x1E9F PUSH2 0x425F JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 PUSH2 0x2FAA JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP DUP6 DUP3 EQ PUSH2 0x1ECA JUMPI PUSH1 0x0 SWAP7 POP POP POP POP POP POP POP PUSH2 0x1FFB JUMP JUMPDEST PUSH1 0x0 DUP2 EQ PUSH2 0x1EE1 JUMPI PUSH1 0x0 SWAP7 POP POP POP POP POP POP POP PUSH2 0x1FFB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F07 DUP11 DUP8 DUP8 DUP2 MLOAD DUP2 LT PUSH2 0x1EFA JUMPI PUSH2 0x1EF9 PUSH2 0x425F JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x2EF9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x1F34 DUP15 DUP12 DUP12 DUP2 MLOAD DUP2 LT PUSH2 0x1F26 JUMPI PUSH2 0x1F25 PUSH2 0x425F JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 PUSH2 0x1A35 JUMP JUMPDEST POP POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1F85 JUMPI PUSH1 0x0 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP PUSH2 0x1FFB JUMP JUMPDEST DUP8 DUP4 EQ PUSH2 0x1FA0 JUMPI PUSH1 0x0 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP PUSH2 0x1FFB JUMP JUMPDEST DUP11 DUP3 LT ISZERO PUSH2 0x1FBC JUMPI PUSH1 0x0 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP PUSH2 0x1FFB JUMP JUMPDEST PUSH1 0x0 DUP2 EQ PUSH2 0x1FD8 JUMPI PUSH1 0x0 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP PUSH2 0x1FFB JUMP JUMPDEST POP POP POP POP POP POP POP POP DUP1 DUP1 PUSH2 0x1FEB SWAP1 PUSH2 0x48EA JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1E55 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x200B PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x2 ADD PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x209B PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x3 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x20ED CALLER DUP3 PUSH2 0x18A5 JUMP JUMPDEST ISZERO PUSH2 0x2124 JUMPI PUSH1 0x40 MLOAD PUSH32 0xD18923AB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x2131 CALLER DUP4 PUSH2 0x2376 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x213B PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x2 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0x21F5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x356680B700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH2 0x21FE PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x2 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x228A SWAP2 SWAP1 PUSH2 0x4810 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH2 0x229A PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x3 ADD PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x22E9 SWAP2 SWAP1 PUSH2 0x4810 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x23B872DD ADDRESS CALLER DUP6 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x232D SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4720 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x234C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2370 SWAP2 SWAP1 PUSH2 0x4783 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2382 DUP4 DUP4 PUSH2 0x17D2 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x238D PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x2 ADD PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x2419 SWAP2 SWAP1 PUSH2 0x4810 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 PUSH2 0x2429 PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x3 ADD PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x2478 SWAP2 SWAP1 PUSH2 0x4810 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x0 PUSH2 0x2489 PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x2 ADD PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD LT ISZERO PUSH2 0x253F JUMPI PUSH1 0x40 MLOAD PUSH32 0xA2005FA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2549 PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x3 ADD PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD LT ISZERO PUSH2 0x25C2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x2FE0888F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x25CE DUP5 DUP5 PUSH2 0x19A5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 GT ISZERO PUSH2 0x2698 JUMPI PUSH1 0x1 PUSH2 0x25E3 PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH1 0x1 DUP5 PUSH2 0x266F SWAP2 SWAP1 PUSH2 0x4810 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x6 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x26A6 PUSH2 0x2A67 JUMP JUMPDEST PUSH1 0x3 ADD SLOAD PUSH2 0x26B2 PUSH2 0x34F9 JUMP JUMPDEST GT PUSH2 0x26E9 JUMPI PUSH1 0x40 MLOAD PUSH32 0xA426119900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x9CD9AFE22FEA86221D6E8117226B65BB0E2AF8C4F5B8ABF255FB0AFCAD4A3A9C SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2723 PUSH2 0x26EB JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH1 0x0 DUP2 EQ PUSH2 0x27BD JUMPI PUSH1 0x1 DUP2 PUSH2 0x27B8 SWAP2 SWAP1 PUSH2 0x4810 JUMP JUMPDEST PUSH2 0x27C0 JUMP JUMPDEST PUSH1 0x0 JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x2DA2ADFB54FD91BFB31E0D805792077DDCD5B0427B14A56397E2F3CC190C8830 SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH2 0x2800 DUP3 DUP3 PUSH2 0x35BB JUMP JUMPDEST PUSH2 0x2836 JUMPI PUSH1 0x40 MLOAD PUSH32 0x1824866A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2848 DUP7 DUP7 DUP6 PUSH2 0x1399 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2854 PUSH2 0x28BF JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x7 ADD SLOAD DUP2 PUSH1 0x6 ADD SLOAD PUSH2 0x286A SWAP2 SWAP1 PUSH2 0x42EC JUMP JUMPDEST DUP6 LT ISZERO PUSH2 0x28A3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x3661E75B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 DUP6 LT ISZERO PUSH2 0x28B1 JUMPI DUP5 PUSH2 0x28B3 JUMP JUMPDEST DUP2 JUMPDEST SWAP3 POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x2F7ED27098ECEFE70183EE38AE4542DEE65215B0786F6870871034402CFE2CC9 SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP6 SWAP1 POP PUSH1 0x0 PUSH2 0x291E ADDRESS DUP7 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2AF3 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0xB SIGNEXTEND SGT PUSH2 0x295C JUMPI PUSH2 0x2956 DUP6 DUP5 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x364F SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP PUSH2 0x2994 JUMP JUMPDEST PUSH2 0x2992 DUP6 DUP5 DUP4 PUSH2 0x296C SWAP2 SWAP1 PUSH2 0x4932 JUMP JUMPDEST DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2D46 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP JUMPDEST TIMESTAMP PUSH2 0x299D PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD DUP2 SWAP1 SSTORE POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2A50 SWAP3 SWAP2 SWAP1 PUSH2 0x49C1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0xDE06769CA6D80A022439E234EEBB61C3801D652175B62F912D6F8CAC7B881C65 SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2A9E PUSH2 0x28BF JUMP JUMPDEST PUSH1 0x9 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2AFF DUP6 PUSH2 0x3802 JUMP JUMPDEST SWAP2 POP POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xE6A1E888 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2B3F SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4A49 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2B5C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2B80 SWAP2 SWAP1 PUSH2 0x4AAA JUMP JUMPDEST SWAP1 SWAP2 SWAP3 POP SWAP1 POP POP DUP1 SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2BA1 DUP7 PUSH2 0x3A43 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x39255D5B DUP3 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xB4B333C6 DUP11 DUP11 DUP11 PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2BFC JUMPI PUSH2 0x2BFB PUSH2 0x4230 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2C2E JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2C42 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4B11 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2C9F JUMPI PUSH2 0x2C9E PUSH2 0x4230 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2CD1 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2CF0 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4B7E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2D0F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2D38 SWAP2 SWAP1 PUSH2 0x4CBA JUMP JUMPDEST POP PUSH1 0x1 SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2D54 DUP7 PUSH2 0x3A43 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x39255D5B DUP3 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x50209A62 DUP11 DUP11 DUP11 PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2DAF JUMPI PUSH2 0x2DAE PUSH2 0x4230 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2DE1 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2DF5 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4D03 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2E52 JUMPI PUSH2 0x2E51 PUSH2 0x4230 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2E84 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2EA3 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4B7E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2EC2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2EEB SWAP2 SWAP1 PUSH2 0x4CBA JUMP JUMPDEST POP PUSH1 0x1 SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2F04 PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH1 0x0 DUP2 EQ PUSH2 0x2F9E JUMPI PUSH1 0x1 DUP2 PUSH2 0x2F99 SWAP2 SWAP1 PUSH2 0x4810 JUMP JUMPDEST PUSH2 0x2FA1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x2FB8 PUSH2 0x26EB JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xB SIGNEXTEND PUSH2 0x305F PUSH2 0x26EB JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0xC SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3111 PUSH2 0x26EB JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0x31AB PUSH2 0x26EB JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x325E PUSH2 0x27C9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x1 ADD PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x1 ADD PUSH1 0x0 DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP1 POP PUSH2 0x33B9 DUP3 DUP11 DUP4 PUSH2 0x2FAA JUMP JUMPDEST SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP POP POP POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH2 0x33D9 PUSH2 0x26EB JUMP JUMPDEST PUSH1 0x2 ADD PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD SLOAD PUSH2 0x3425 PUSH2 0x26EB JUMP JUMPDEST PUSH1 0x2 ADD PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD DUP1 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x34E9 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH2 0x349F JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 POP SWAP2 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3503 PUSH2 0x2A67 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xB47064C8 ADDRESS PUSH20 0xEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3575 SWAP3 SWAP2 SWAP1 PUSH2 0x4D4F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3592 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x35B6 SWAP2 SWAP1 PUSH2 0x4D78 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x35F7 SWAP2 SWAP1 PUSH2 0x4DA5 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3614 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3638 SWAP2 SWAP1 PUSH2 0x4D78 JUMP JUMPDEST SWAP1 POP PUSH2 0x3644 DUP5 DUP5 PUSH2 0x3CCA JUMP JUMPDEST DUP2 GT SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x365D DUP7 PUSH2 0x3A43 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x39255D5B DUP3 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x62FC305E DUP11 DUP11 DUP11 PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x36B8 JUMPI PUSH2 0x36B7 PUSH2 0x4230 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x36EA JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x36FE SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4D03 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x375B JUMPI PUSH2 0x375A PUSH2 0x4230 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x378D JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x37AC SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4B7E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x37CB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x37F4 SWAP2 SWAP1 PUSH2 0x4CBA JUMP JUMPDEST POP PUSH1 0x1 SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x65599BF746E17A00EA62E3610586992D88101B78EEC3CF380706621FB97EA837 SLOAD SWAP2 POP PUSH32 0xB969D79D88ACD02D04ED7EE7D43B949E7DAF093D363ABCFBBC43DFDFD1CE969A SLOAD SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x39C4 JUMPI PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x3927 JUMPI DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x20BC4425 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3900 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3924 SWAP2 SWAP1 PUSH2 0x4DD5 JUMP JUMPDEST SWAP2 POP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xB6D200DE PUSH32 0xA9214CC96615E0085D3BB077758DB69497DC2DCE3B2B1E97BC93C3D18D83EFD3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3980 SWAP2 SWAP1 PUSH2 0x4E4A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x399D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x39C1 SWAP2 SWAP1 PUSH2 0x4EA3 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x3A01 JUMPI PUSH2 0x3A00 PUSH2 0x4ED0 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x3A3E JUMPI PUSH2 0x3A3D PUSH2 0x4ED0 JUMP JUMPDEST JUMPDEST SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x65599BF746E17A00EA62E3610586992D88101B78EEC3CF380706621FB97EA837 SLOAD SWAP2 POP PUSH32 0xB969D79D88ACD02D04ED7EE7D43B949E7DAF093D363ABCFBBC43DFDFD1CE969A SLOAD SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x3C4B JUMPI PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x3B68 JUMPI DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x20BC4425 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3B41 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3B65 SWAP2 SWAP1 PUSH2 0x4DD5 JUMP JUMPDEST SWAP2 POP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xB6D200DE PUSH32 0xA9214CC96615E0085D3BB077758DB69497DC2DCE3B2B1E97BC93C3D18D83EFD3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3BC1 SWAP2 SWAP1 PUSH2 0x4E4A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3BDE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3C02 SWAP2 SWAP1 PUSH2 0x4EA3 JUMP JUMPDEST SWAP1 POP DUP2 PUSH32 0x65599BF746E17A00EA62E3610586992D88101B78EEC3CF380706621FB97EA837 SSTORE DUP1 PUSH32 0xB969D79D88ACD02D04ED7EE7D43B949E7DAF093D363ABCFBBC43DFDFD1CE969A SSTORE JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x3C88 JUMPI PUSH2 0x3C87 PUSH2 0x4ED0 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x3CC5 JUMPI PUSH2 0x3CC4 PUSH2 0x4ED0 JUMP JUMPDEST JUMPDEST SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 SWAP1 POP PUSH1 0x0 PUSH2 0x3CFB DUP5 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3D70 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3D28 ADDRESS DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3E04 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x3D32 PUSH2 0x28BF JUMP JUMPDEST PUSH1 0x8 ADD SLOAD DUP6 DUP3 PUSH2 0x3D42 SWAP2 SWAP1 PUSH2 0x4932 JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3D5A SWAP2 SWAP1 PUSH2 0x48A8 JUMP JUMPDEST DUP3 PUSH2 0x3D65 SWAP2 SWAP1 PUSH2 0x42EC JUMP JUMPDEST SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3D7C DUP5 PUSH2 0x3802 JUMP JUMPDEST SWAP2 POP POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x8D997F6E DUP6 DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DBA SWAP3 SWAP2 SWAP1 PUSH2 0x4EFF JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3DD7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3DFB SWAP2 SWAP1 PUSH2 0x4D78 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3E10 DUP5 PUSH2 0x3802 JUMP JUMPDEST SWAP2 POP POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xE8E7E2D1 DUP6 DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3E4E SWAP3 SWAP2 SWAP1 PUSH2 0x4F28 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3E6B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3E8F SWAP2 SWAP1 PUSH2 0x4F51 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3ED7 DUP3 PUSH2 0x3EAC JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3EE7 DUP2 PUSH2 0x3ECC JUMP JUMPDEST DUP2 EQ PUSH2 0x3EF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x3F04 DUP2 PUSH2 0x3EDE JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3F1D DUP2 PUSH2 0x3F0A JUMP JUMPDEST DUP2 EQ PUSH2 0x3F28 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x3F3A DUP2 PUSH2 0x3F14 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3F57 JUMPI PUSH2 0x3F56 PUSH2 0x3EA2 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x3F65 DUP6 DUP3 DUP7 ADD PUSH2 0x3EF5 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x3F76 DUP6 DUP3 DUP7 ADD PUSH2 0x3F2B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0xB SIGNEXTEND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3F96 DUP2 PUSH2 0x3F80 JUMP JUMPDEST DUP2 EQ PUSH2 0x3FA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x3FB3 DUP2 PUSH2 0x3F8D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3FD2 JUMPI PUSH2 0x3FD1 PUSH2 0x3EA2 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x3FE0 DUP7 DUP3 DUP8 ADD PUSH2 0x3EF5 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x3FF1 DUP7 DUP3 DUP8 ADD PUSH2 0x3EF5 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x4002 DUP7 DUP3 DUP8 ADD PUSH2 0x3FA4 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH2 0x4015 DUP2 PUSH2 0x3F0A JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x4030 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x400C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x4052 JUMPI PUSH2 0x4051 PUSH2 0x3EA2 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x4060 DUP9 DUP3 DUP10 ADD PUSH2 0x3EF5 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH2 0x4071 DUP9 DUP3 DUP10 ADD PUSH2 0x3EF5 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 PUSH2 0x4082 DUP9 DUP3 DUP10 ADD PUSH2 0x3EF5 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 PUSH2 0x4093 DUP9 DUP3 DUP10 ADD PUSH2 0x3F2B JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 PUSH2 0x40A4 DUP9 DUP3 DUP10 ADD PUSH2 0x3FA4 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x40C8 JUMPI PUSH2 0x40C7 PUSH2 0x3EA2 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x40D6 DUP6 DUP3 DUP7 ADD PUSH2 0x3EF5 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x40E7 DUP6 DUP3 DUP7 ADD PUSH2 0x3EF5 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x4106 DUP2 PUSH2 0x40F1 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x4121 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x40FD JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4140 JUMPI PUSH2 0x413F PUSH2 0x3EA2 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x414E DUP7 DUP3 DUP8 ADD PUSH2 0x3EF5 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x415F DUP7 DUP3 DUP8 ADD PUSH2 0x3EF5 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x4170 DUP7 DUP3 DUP8 ADD PUSH2 0x3F2B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH2 0x4183 DUP2 PUSH2 0x3ECC JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x419C DUP2 PUSH2 0x4189 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC0 DUP3 ADD SWAP1 POP PUSH2 0x41B7 PUSH1 0x0 DUP4 ADD DUP10 PUSH2 0x417A JUMP JUMPDEST PUSH2 0x41C4 PUSH1 0x20 DUP4 ADD DUP9 PUSH2 0x400C JUMP JUMPDEST PUSH2 0x41D1 PUSH1 0x40 DUP4 ADD DUP8 PUSH2 0x400C JUMP JUMPDEST PUSH2 0x41DE PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x400C JUMP JUMPDEST PUSH2 0x41EB PUSH1 0x80 DUP4 ADD DUP6 PUSH2 0x4193 JUMP JUMPDEST PUSH2 0x41F8 PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x40FD JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4219 JUMPI PUSH2 0x4218 PUSH2 0x3EA2 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x4227 DUP5 DUP3 DUP6 ADD PUSH2 0x3EF5 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x42F7 DUP3 PUSH2 0x3F0A JUMP JUMPDEST SWAP2 POP PUSH2 0x4302 DUP4 PUSH2 0x3F0A JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x431A JUMPI PUSH2 0x4319 PUSH2 0x42BD JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x4329 DUP2 PUSH2 0x3F80 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 ADD SWAP1 POP PUSH2 0x4344 PUSH1 0x0 DUP4 ADD DUP9 PUSH2 0x417A JUMP JUMPDEST PUSH2 0x4351 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x417A JUMP JUMPDEST PUSH2 0x435E PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x417A JUMP JUMPDEST PUSH2 0x436B PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x400C JUMP JUMPDEST PUSH2 0x4378 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x4320 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x43BC JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x43A1 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x43E4 DUP3 PUSH2 0x4382 JUMP JUMPDEST PUSH2 0x43EE DUP2 DUP6 PUSH2 0x438D JUMP JUMPDEST SWAP4 POP PUSH2 0x43FE DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x439E JUMP JUMPDEST PUSH2 0x4407 DUP2 PUSH2 0x43C8 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x4 DUP2 LT PUSH2 0x444F JUMPI PUSH2 0x444E PUSH2 0x428E JUMP JUMPDEST JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH2 0x4460 DUP3 PUSH2 0x443E JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4470 DUP3 PUSH2 0x4452 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x4480 DUP2 PUSH2 0x4465 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4492 DUP4 DUP4 PUSH2 0x4477 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x44B6 DUP3 PUSH2 0x4412 JUMP JUMPDEST PUSH2 0x44C0 DUP2 DUP6 PUSH2 0x441D JUMP JUMPDEST SWAP4 POP PUSH2 0x44CB DUP4 PUSH2 0x442E JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x44FC JUMPI DUP2 MLOAD PUSH2 0x44E3 DUP9 DUP3 PUSH2 0x4486 JUMP JUMPDEST SWAP8 POP PUSH2 0x44EE DUP4 PUSH2 0x449E JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x44CF JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4551 DUP3 PUSH2 0x4382 JUMP JUMPDEST PUSH2 0x455B DUP2 DUP6 PUSH2 0x4535 JUMP JUMPDEST SWAP4 POP PUSH2 0x456B DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x439E JUMP JUMPDEST PUSH2 0x4574 DUP2 PUSH2 0x43C8 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x458B DUP4 DUP4 PUSH2 0x4546 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x45AB DUP3 PUSH2 0x4509 JUMP JUMPDEST PUSH2 0x45B5 DUP2 DUP6 PUSH2 0x4514 JUMP JUMPDEST SWAP4 POP DUP4 PUSH1 0x20 DUP3 MUL DUP6 ADD PUSH2 0x45C7 DUP6 PUSH2 0x4525 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x4603 JUMPI DUP5 DUP5 SUB DUP10 MSTORE DUP2 MLOAD PUSH2 0x45E4 DUP6 DUP3 PUSH2 0x457F JUMP JUMPDEST SWAP5 POP PUSH2 0x45EF DUP4 PUSH2 0x4593 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP11 ADD SWAP10 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x45CB JUMP JUMPDEST POP DUP3 SWAP8 POP DUP8 SWAP6 POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP4 ADD PUSH1 0x0 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH1 0x0 DUP7 ADD MSTORE PUSH2 0x4632 DUP3 DUP3 PUSH2 0x44AB JUMP JUMPDEST SWAP2 POP POP PUSH1 0x20 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH1 0x20 DUP7 ADD MSTORE PUSH2 0x464C DUP3 DUP3 PUSH2 0x45A0 JUMP JUMPDEST SWAP2 POP POP DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x466E PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x417A JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x4680 DUP2 DUP7 PUSH2 0x43D9 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x4694 DUP2 DUP6 PUSH2 0x4615 JUMP JUMPDEST SWAP1 POP PUSH2 0x46A3 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x417A JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x46B5 DUP2 PUSH2 0x4189 JUMP JUMPDEST DUP2 EQ PUSH2 0x46C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x46D2 DUP2 PUSH2 0x46AC JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x46EE JUMPI PUSH2 0x46ED PUSH2 0x3EA2 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x46FC DUP5 DUP3 DUP6 ADD PUSH2 0x46C3 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x471A PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x4193 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x4735 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x417A JUMP JUMPDEST PUSH2 0x4742 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x417A JUMP JUMPDEST PUSH2 0x474F PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x400C JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x4760 DUP2 PUSH2 0x40F1 JUMP JUMPDEST DUP2 EQ PUSH2 0x476B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x477D DUP2 PUSH2 0x4757 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4799 JUMPI PUSH2 0x4798 PUSH2 0x3EA2 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x47A7 DUP5 DUP3 DUP6 ADD PUSH2 0x476E JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x47EA DUP3 PUSH2 0x3F0A JUMP JUMPDEST SWAP2 POP PUSH2 0x47F5 DUP4 PUSH2 0x3F0A JUMP JUMPDEST SWAP3 POP DUP3 PUSH2 0x4805 JUMPI PUSH2 0x4804 PUSH2 0x47B0 JUMP JUMPDEST JUMPDEST DUP3 DUP3 DIV SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x481B DUP3 PUSH2 0x3F0A JUMP JUMPDEST SWAP2 POP PUSH2 0x4826 DUP4 PUSH2 0x3F0A JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP DUP2 DUP2 GT ISZERO PUSH2 0x483E JUMPI PUSH2 0x483D PUSH2 0x42BD JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x484F DUP3 PUSH2 0x3F80 JUMP JUMPDEST SWAP2 POP PUSH2 0x485A DUP4 PUSH2 0x3F80 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP PUSH12 0x7FFFFFFFFFFFFFFFFFFFFFFF DUP2 SGT PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800000000000000000000000 DUP3 SLT OR ISZERO PUSH2 0x48A2 JUMPI PUSH2 0x48A1 PUSH2 0x42BD JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x48B3 DUP3 PUSH2 0x3F0A JUMP JUMPDEST SWAP2 POP PUSH2 0x48BE DUP4 PUSH2 0x3F0A JUMP JUMPDEST SWAP3 POP DUP3 DUP3 MUL PUSH2 0x48CC DUP2 PUSH2 0x3F0A JUMP JUMPDEST SWAP2 POP DUP3 DUP3 DIV DUP5 EQ DUP4 ISZERO OR PUSH2 0x48E3 JUMPI PUSH2 0x48E2 PUSH2 0x42BD JUMP JUMPDEST JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x48F5 DUP3 PUSH2 0x3F0A JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x4927 JUMPI PUSH2 0x4926 PUSH2 0x42BD JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x493D DUP3 PUSH2 0x3F80 JUMP JUMPDEST SWAP2 POP PUSH2 0x4948 DUP4 PUSH2 0x3F80 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800000000000000000000000 DUP2 SLT PUSH12 0x7FFFFFFFFFFFFFFFFFFFFFFF DUP3 SGT OR ISZERO PUSH2 0x4990 JUMPI PUSH2 0x498F PUSH2 0x42BD JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x49BB DUP2 PUSH2 0x4996 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x49D6 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x49B2 JUMP JUMPDEST PUSH2 0x49E3 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x49B2 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4A0F PUSH2 0x4A0A PUSH2 0x4A05 DUP5 PUSH2 0x3EAC JUMP JUMPDEST PUSH2 0x49EA JUMP JUMPDEST PUSH2 0x3EAC JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4A21 DUP3 PUSH2 0x49F4 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4A33 DUP3 PUSH2 0x4A16 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x4A43 DUP2 PUSH2 0x4A28 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x4A5E PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x4A3A JUMP JUMPDEST PUSH2 0x4A6B PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x417A JUMP JUMPDEST PUSH2 0x4A78 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x417A JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x4A8F DUP2 PUSH2 0x3F14 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x4AA4 DUP2 PUSH2 0x3F8D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4AC4 JUMPI PUSH2 0x4AC3 PUSH2 0x3EA2 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x4AD2 DUP8 DUP3 DUP9 ADD PUSH2 0x4A80 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x4AE3 DUP8 DUP3 DUP9 ADD PUSH2 0x4A95 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x4AF4 DUP8 DUP3 DUP9 ADD PUSH2 0x4A80 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x4B05 DUP8 DUP3 DUP9 ADD PUSH2 0x4A80 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x4B26 PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x4A3A JUMP JUMPDEST PUSH2 0x4B33 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x417A JUMP JUMPDEST PUSH2 0x4B40 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x417A JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x4B52 DUP2 DUP5 PUSH2 0x43D9 JUMP JUMPDEST SWAP1 POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4B68 DUP3 PUSH2 0x4A16 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x4B78 DUP2 PUSH2 0x4B5D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x4B93 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x4B6F JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x4BA5 DUP2 DUP6 PUSH2 0x43D9 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x4BB9 DUP2 DUP5 PUSH2 0x43D9 JUMP JUMPDEST SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4BD6 DUP3 PUSH2 0x43C8 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x4BF5 JUMPI PUSH2 0x4BF4 PUSH2 0x4230 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4C08 PUSH2 0x3E98 JUMP JUMPDEST SWAP1 POP PUSH2 0x4C14 DUP3 DUP3 PUSH2 0x4BCD JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x4C34 JUMPI PUSH2 0x4C33 PUSH2 0x4230 JUMP JUMPDEST JUMPDEST PUSH2 0x4C3D DUP3 PUSH2 0x43C8 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4C5D PUSH2 0x4C58 DUP5 PUSH2 0x4C19 JUMP JUMPDEST PUSH2 0x4BFE JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x4C79 JUMPI PUSH2 0x4C78 PUSH2 0x4BC8 JUMP JUMPDEST JUMPDEST PUSH2 0x4C84 DUP5 DUP3 DUP6 PUSH2 0x439E JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4CA1 JUMPI PUSH2 0x4CA0 PUSH2 0x4BC3 JUMP JUMPDEST JUMPDEST DUP2 MLOAD PUSH2 0x4CB1 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x4C4A JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4CD0 JUMPI PUSH2 0x4CCF PUSH2 0x3EA2 JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP3 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4CEE JUMPI PUSH2 0x4CED PUSH2 0x3EA7 JUMP JUMPDEST JUMPDEST PUSH2 0x4CFA DUP5 DUP3 DUP6 ADD PUSH2 0x4C8C JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x4D18 PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x4A3A JUMP JUMPDEST PUSH2 0x4D25 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x417A JUMP JUMPDEST PUSH2 0x4D32 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x4320 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x4D44 DUP2 DUP5 PUSH2 0x43D9 JUMP JUMPDEST SWAP1 POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x4D64 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x417A JUMP JUMPDEST PUSH2 0x4D71 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x417A JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4D8E JUMPI PUSH2 0x4D8D PUSH2 0x3EA2 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x4D9C DUP5 DUP3 DUP6 ADD PUSH2 0x4A80 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x4DBA PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x417A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x4DCF DUP2 PUSH2 0x3EDE JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4DEB JUMPI PUSH2 0x4DEA PUSH2 0x3EA2 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x4DF9 DUP5 DUP3 DUP6 ADD PUSH2 0x4DC0 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 SHL SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4E34 PUSH2 0x4E2F PUSH2 0x4E2A DUP5 PUSH2 0x4E02 JUMP JUMPDEST PUSH2 0x4E0C JUMP JUMPDEST PUSH2 0x4189 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x4E44 DUP2 PUSH2 0x4E19 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x4E5F PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x4E3B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4E70 DUP3 PUSH2 0x3ECC JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x4E80 DUP2 PUSH2 0x4E65 JUMP JUMPDEST DUP2 EQ PUSH2 0x4E8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x4E9D DUP2 PUSH2 0x4E77 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4EB9 JUMPI PUSH2 0x4EB8 PUSH2 0x3EA2 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x4EC7 DUP5 DUP3 DUP6 ADD PUSH2 0x4E8E JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x4F14 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x4A3A JUMP JUMPDEST PUSH2 0x4F21 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4320 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x4F3D PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x4A3A JUMP JUMPDEST PUSH2 0x4F4A PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x417A JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4F67 JUMPI PUSH2 0x4F66 PUSH2 0x3EA2 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x4F75 DUP5 DUP3 DUP6 ADD PUSH2 0x4A95 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SAR 0xCE DUP12 DUP6 PUSH19 0x75C446B38B2FD0190C291B939A9D8728CA09A3 0xC4 0xBE MSIZE 0x4A SAR 0x5F ADDRESS ORIGIN PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"704:8378:23:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6510:200;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7425:229;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4910:371;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7236:183;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8062:176;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8258:179;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8457:277;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;7860:196;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8740:181;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8927:153;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6716:500;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1210:3694;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5351:1153;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6510:200;6594:51;6633:11;6594:38;:51::i;:::-;6655:48;6682:11;6695:7;6655:26;:48::i;:::-;6510:200;;:::o;7425:229::-;7561:7;7587:60;7617:5;7624:11;7637:9;7587:29;:60::i;:::-;7580:67;;7425:229;;;;;:::o;4910:371::-;5087:33;:31;:33::i;:::-;5131:143;5166:11;5191:7;5212:9;5235:6;5255:9;5131:21;:143::i;:::-;4910:371;;;;;:::o;7236:183::-;7342:7;7368:44;7393:5;7400:11;7368:24;:44::i;:::-;7361:51;;7236:183;;;;:::o;8062:176::-;8166:4;8189:42;8212:5;8219:11;8189:22;:42::i;:::-;8182:49;;8062:176;;;;:::o;8258:179::-;8364:7;8390:40;8411:5;8418:11;8390:20;:40::i;:::-;8383:47;;8258:179;;;;:::o;8457:277::-;8607:7;8616;8625;8634;8643;8652:4;8679:48;8700:5;8707:11;8720:6;8679:20;:48::i;:::-;8672:55;;;;;;;;;;;;8457:277;;;;;;;;;;:::o;7860:196::-;7974:4;7997:52;8027:7;8036:12;7997:29;:52::i;:::-;7990:59;;7860:196;;;;:::o;8740:181::-;8845:7;8871:43;8895:5;8902:11;8871:23;:43::i;:::-;8864:50;;8740:181;;;;:::o;8927:153::-;9010:7;9036:37;9061:11;9036:24;:37::i;:::-;9029:44;;8927:153;;;:::o;6716:500::-;7108:41;7137:11;7108:28;:41::i;:::-;7160:49;7188:11;7201:7;7160:27;:49::i;:::-;6716:500;;:::o;1210:3694::-;1336:41;1365:11;1336:28;:41::i;:::-;1538:53;1567:10;1579:11;1538:28;:53::i;:::-;1616:48;:46;:48::i;:::-;1674:51;1713:11;1674:38;:51::i;:::-;1735:42;1780:41;:39;:41::i;:::-;1735:86;;1831:26;1860:85;1901:9;1924:11;1860:27;:85::i;:::-;1831:114;;2088:1;1973:8;:35;;:46;2009:9;1973:46;;;;;;;;;;;;;;;:59;2020:11;1973:59;;;;;;;;;;;;;;;:79;2033:18;1973:79;;;;;;;;;;;:111;;;:116;1956:170;;2107:19;;;;;;;;;;;;;;1956:170;2137:33;2173:22;:20;:22::i;:::-;2137:58;;2205:14;2222:8;:31;;:42;2254:9;2222:42;;;;;;;;;;;;;;;:55;2265:11;2222:55;;;;;;;;;;;;;;;:75;2278:18;2222:75;;;;;;;;;;;:106;;;;;;;;;;;;2205:123;;2338:64;2380:11;2393:8;2338:41;:64::i;:::-;2412:25;2440:133;2483:10;2507:11;2532:9;2555:8;2440:29;:133::i;:::-;2412:161;;2662:20;2685:45;2706:10;2718:11;2685:20;:45::i;:::-;2662:68;;2817:9;2741:5;:25;;:37;2767:10;2741:37;;;;;;;;;;;;;;;:50;2779:11;2741:50;;;;;;;;;;;;;;;:64;2792:12;2741:64;;;;;;;;;;;:73;;;:85;;;;;;;;;;;;;;;;;;2929:18;2836:5;:25;;:37;2862:10;2836:37;;;;;;;;;;;;;;;:50;2874:11;2836:50;;;;;;;;;;;;;;;:64;2887:12;2836:64;;;;;;;;;;;:90;;:111;;;;2958:42;3003:41;:39;:41::i;:::-;2958:86;;3054:23;3080:8;:21;;:34;3102:11;3080:34;;;;;;;;;;;;;;;;3054:60;;3197:9;3124:8;:31;;:44;3156:11;3124:44;;;;;;;;;;;;;;;:61;3169:15;3124:61;;;;;;;;;;;:70;;;:82;;;;;;;;;;;;;;;;;;3306:18;3216:8;:31;;:44;3248:11;3216:44;;;;;;;;;;;;;;;:61;3261:15;3216:61;;;;;;;;;;;:87;;:108;;;;3416:28;3334:8;:31;;:44;3366:11;3334:44;;;;;;;;;;;;;;;:61;3379:15;3334:61;;;;;;;;;;;:79;;:110;;;;3547:15;3454:5;:25;;:37;3480:10;3454:37;;;;;;;;;;;;;;;:50;3492:11;3454:50;;;;;;;;;;;;;;;:64;3505:12;3454:64;;;;;;;;;;;:90;;:108;;;;3610:151;3645:11;3670:10;3694:9;3717:12;3743:8;3610:21;:151::i;:::-;3808:36;3847:94;;;;;;;;3894:1;3881:15;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3847:94;;;;3928:1;3916:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3847:94;;;3808:133;;3984:11;3952:18;:26;;;3979:1;3952:29;;;;;;;;:::i;:::-;;;;;;;:43;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;4037:18;4005;:26;;;4032:1;4005:29;;;;;;;;:::i;:::-;;;;;;;:50;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;4095:116;4153:17;4135:15;:35;;;;:::i;:::-;4184:17;4095:26;:116::i;:::-;4066:18;:23;;;4090:1;4066:26;;;;;;;;:::i;:::-;;;;;;;:145;;;;4222:29;4290:26;;;4330:11;4355:10;4379:9;4402:12;4428:8;4254:192;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4222:224;;4531:43;:41;:43::i;:::-;:70;;;;;;;;;;;;:94;;;4651:4;4674:16;4708:18;4752:1;4531:237;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4457:5;:25;;:37;4483:10;4457:37;;;;;;;;;;;;;;;:50;4495:11;4457:50;;;;;;;;;;;;;;;:64;4508:12;4457:64;;;;;;;;;;;:71;;:311;;;;4847:1;4803:5;:15;;:27;4819:10;4803:27;;;;;;;;;;;;;;;:40;4831:11;4803:40;;;;;;;;;;;;;;;;:45;;;;;;;:::i;:::-;;;;;;;;4896:1;4858:8;:21;;:34;4880:11;4858:34;;;;;;;;;;;;;;;;:39;;;;;;;:::i;:::-;;;;;;;;1326:3578;;;;;;;;;;1210:3694;;;:::o;5351:1153::-;5426:33;5462:22;:20;:22::i;:::-;5426:58;;5495:27;5616:28;:26;:28::i;:::-;:44;;;5525:5;:25;;:37;5551:10;5525:37;;;;;;;;;;;;;;;:50;5563:11;5525:50;;;;;;;;;;;;;;;:58;5576:6;5525:58;;;;;;;;;;;:76;;;:135;;;;:::i;:::-;5495:165;;5693:19;5675:15;:37;5671:60;;;5721:10;;;;;;;;;;;;;;5671:60;5851:30;:28;:30::i;:::-;:44;;;;;;;;;;;;:55;;;5920:5;:16;;:28;5937:10;5920:28;;;;;;;;;;;;;;;:41;5949:11;5920:41;;;;;;;;;;;;;;;:49;5962:6;5920:49;;;;;;;;;;;:56;;;5851:135;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6020:16;6039:5;:25;;:37;6065:10;6039:37;;;;;;;;;;;;;;;:50;6077:11;6039:50;;;;;;;;;;;;;;;:58;6090:6;6039:58;;;;;;;;;;;:67;;;;;;;;;;;;6020:86;;6116:20;6139:5;:25;;:37;6165:10;6139:37;;;;;;;;;;;;;;;:50;6177:11;6139:50;;;;;;;;;;;;;;;:58;6190:6;6139:58;;;;;;;;;;;:71;;;6116:94;;6221:276;6256:11;6281:10;6305:8;6327:6;6347:41;:39;:41::i;:::-;:68;;:78;6416:8;6347:78;;;;;;;;;;;;;;;:91;6426:11;6347:91;;;;;;;;;;;;;;;:105;6439:12;6347:105;;;;;;;;;;;:140;;;;;;;;;;;;6221:21;:276::i;:::-;5416:1088;;;;5351:1153;;:::o;7163:158:35:-;7250:36;7274:11;7250:23;:36::i;:::-;7245:69;;7295:19;;;;;;;;;;;;;;7245:69;7163:158;:::o;2128:343:36:-;2225:11;2213:37;;;2264:10;2296:4;2315:7;2213:119;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2395:7;2343:14;:12;:14::i;:::-;:23;;:35;2367:10;2343:35;;;;;;;;;;;;;;;:48;2379:11;2343:48;;;;;;;;;;;;;;;;:59;;;;;;;:::i;:::-;;;;;;;;2457:7;2412:14;:12;:14::i;:::-;:28;;:41;2441:11;2412:41;;;;;;;;;;;;;;;;:52;;;;;;;:::i;:::-;;;;;;;;2128:343;;:::o;4432:678::-;4569:7;4588:22;4686:9;4671:26;;4613:14;:12;:14::i;:::-;:23;;:30;4637:5;4613:30;;;;;;;;;;;;;;;:43;4644:11;4613:43;;;;;;;;;;;;;;;;:84;;;;:::i;:::-;4588:109;;4708:42;4753:41;:39;:41::i;:::-;4708:86;;4826:8;:27;;;4809:14;:44;4805:92;;;4874:23;;;;;;;;;;;;;;4805:92;4908:20;4948:8;:27;;;4931:14;:44;;;;:::i;:::-;4908:67;;5005:8;:24;;;4990:12;:39;4986:87;;;5050:23;;;;;;;;;;;;;;4986:87;5091:12;5084:19;;;;;4432:678;;;;;:::o;2877:160:34:-;2958:18;:16;:18::i;:::-;:32;;;;;;;;;;;;2936:55;;:10;:55;;;2932:98;;3012:18;;;;;;;;;;;;;;2932:98;2877:160::o;11439:892:36:-;11617:23;11655:11;11617:50;;11677:14;11694:49;11726:4;11733:9;11694:11;:23;;;;:49;;;;;:::i;:::-;11677:66;;11782:1;11769:9;11758:8;:20;;;;:::i;:::-;:25;;;11754:190;;11799:48;11830:4;11837:9;11799:11;:22;;;;:48;;;;;:::i;:::-;;11754:190;;;11878:55;11901:9;11923;11912:8;:20;;;;:::i;:::-;11878:11;:22;;;;:55;;;;;:::i;:::-;;11754:190;12039:28;11954:14;:12;:14::i;:::-;:34;;:43;11989:7;11954:43;;;;;;;;;;;;;;;:56;11998:11;11954:56;;;;;;;;;;;;;;;:64;12011:6;11954:64;;;;;;;;;;;:82;;:113;;;;12078:20;12101:14;:12;:14::i;:::-;:34;;:43;12136:7;12101:43;;;;;;;;;;;;;;;:56;12145:11;12101:56;;;;;;;;;;;;;;;:64;12158:6;12101:64;;;;;;;;;;;:77;;;12078:100;;12296:28;12188:37;:35;:37::i;:::-;:60;;:73;12249:11;12188:73;;;;;;;;;;;;;;;:87;12262:12;12188:87;;;;;;;;;;;:105;;:136;;;;11607:724;;;11439:892;;;;;:::o;5839:1151::-;5946:7;5965:20;5995;6018:36;6035:5;6042:11;6018:16;:36::i;:::-;5995:59;;6078:16;6108:20;6142:25;6181;6234:21;6268:46;6281:5;6288:11;6301:12;6268;:46::i;:::-;6064:250;;;;;;;;;;;6327:15;6346:21;6371:76;6411:8;6421:11;6434:12;6371:39;:76::i;:::-;6324:123;;;;;;6462:16;6458:496;;;6509:1;6494:16;;6458:496;;;6566:1;6545:17;:22;6541:403;;6683:17;6663;:37;;;;:::i;:::-;6630:8;6622:17;;:79;;;;:::i;:::-;6587:114;;6541:403;;;6743:1;6726:13;:18;6722:222;;6856:17;6840:13;:33;;;;:::i;:::-;6807:8;6799:17;;:75;;;;:::i;:::-;6764:110;;6722:222;;;6928:1;6913:16;;6722:222;6541:403;6458:496;6971:12;6964:19;;;;;;;;;;;5839:1151;;;;:::o;6996:643::-;7101:4;7117:20;7140:32;7153:5;7160:11;7140:12;:32::i;:::-;7117:55;;7201:1;7186:12;:16;7182:429;;;7225:21;7250:134;7302:5;7325:11;7369:1;7354:12;:16;;;;:::i;:::-;7250:34;:134::i;:::-;7218:166;;;;;7561:1;7422:14;:12;:14::i;:::-;:42;;:49;7465:5;7422:49;;;;;;;;;;;;;;;:62;7472:11;7422:62;;;;;;;;;;;;;;;:80;7500:1;7485:12;:16;;;;:::i;:::-;7422:80;;;;;;;;;;;:119;;;:140;:178;;;;;7599:1;7582:13;:18;7422:178;7399:201;;;;;;7182:429;7627:5;7620:12;;;6996:643;;;;;:::o;9223:180::-;9326:7;9352:14;:12;:14::i;:::-;:24;;:31;9377:5;9352:31;;;;;;;;;;;;;;;:44;9384:11;9352:44;;;;;;;;;;;;;;;;9345:51;;9223:180;;;;:::o;9651:763::-;9802:7;9811;9820;9829;9838;9847:4;9888:14;:12;:14::i;:::-;:25;;:32;9914:5;9888:32;;;;;;;;;;;;;;;:45;9921:11;9888:45;;;;;;;;;;;;;;;:53;9934:6;9888:53;;;;;;;;;;;:62;;;;;;;;;;;;9964:14;:12;:14::i;:::-;:25;;:32;9990:5;9964:32;;;;;;;;;;;;;;;:45;9997:11;9964:45;;;;;;;;;;;;;;;:53;10010:6;9964:53;;;;;;;;;;;:66;;;10044:14;:12;:14::i;:::-;:38;;:45;10083:5;10044:45;;;;;;;;;;;;;;;:58;10090:11;10044:58;;;;;;;;;;;;;;;:66;10103:6;10044:66;;;;;;;;;;;:84;;;10142:14;:12;:14::i;:::-;:38;;:45;10181:5;10142:45;;;;;;;;;;;;;;;:58;10188:11;10142:58;;;;;;;;;;;;;;;:66;10201:6;10142:66;;;;;;;;;;;:84;;;10240:14;:12;:14::i;:::-;:25;;:32;10266:5;10240:32;;;;;;;;;;;;;;;:45;10273:11;10240:45;;;;;;;;;;;;;;;:53;10286:6;10240:53;;;;;;;;;;;:60;;;10314:14;:12;:14::i;:::-;:38;;:45;10353:5;10314:45;;;;;;;;;;;;;;;:58;10360:11;10314:58;;;;;;;;;;;;;;;:66;10373:6;10314:66;;;;;;;;;;;:83;;;;;;;;;;;;9867:540;;;;;;;;;;;;9651:763;;;;;;;;;;:::o;7645:1572::-;7760:4;7777:24;7803:28;7835:60;7882:12;7835:46;:60::i;:::-;7776:119;;;;7930:1;7910:16;:21;:48;;;;7957:1;7935:11;:18;:23;;7910:48;7906:66;;;7967:5;7960:12;;;;;;7906:66;7988:9;7983:1206;8007:11;:18;8003:1;:22;7983:1206;;;8046:26;8075:103;8120:12;8150:11;8162:1;8150:14;;;;;;;;:::i;:::-;;;;;;;;8075:27;:103::i;:::-;8046:132;;8198:22;8222:21;8247:171;8312:12;8346:11;8358:1;8346:14;;;;;;;;:::i;:::-;;;;;;;;8382:18;8247:43;:171::i;:::-;8193:225;;;;;;8455:16;8437:14;:34;8433:52;;8480:5;8473:12;;;;;;;;;;8433:52;8521:1;8504:13;:18;8500:36;;8531:5;8524:12;;;;;;;;;;8500:36;8551:24;8578:87;8612:7;8637:11;8649:1;8637:14;;;;;;;;:::i;:::-;;;;;;;;8578:16;:87::i;:::-;8551:114;;8698:16;8732:20;8770:25;8813;8875:55;8888:7;8897:11;8909:1;8897:14;;;;;;;;:::i;:::-;;;;;;;;8913:16;8875:12;:55::i;:::-;8680:250;;;;;;;;;;8961:12;8949:24;;:8;:24;;;8945:42;;8982:5;8975:12;;;;;;;;;;;;;;;8945:42;9022:18;9006:12;:34;9002:52;;9049:5;9042:12;;;;;;;;;;;;;;;9002:52;9093:16;9073:17;:36;9069:54;;;9118:5;9111:12;;;;;;;;;;;;;;;9069:54;9163:1;9142:17;:22;9138:40;;9173:5;9166:12;;;;;;;;;;;;;;;9138:40;8032:1157;;;;;;;;8027:3;;;;;:::i;:::-;;;;7983:1206;;;;9206:4;9199:11;;;;7645:1572;;;;;:::o;10420:182::-;10526:7;10552:14;:12;:14::i;:::-;:23;;:30;10576:5;10552:30;;;;;;;;;;;;;;;:43;10583:11;10552:43;;;;;;;;;;;;;;;;10545:50;;10420:182;;;;:::o;10608:158::-;10692:7;10718:14;:12;:14::i;:::-;:28;;:41;10747:11;10718:41;;;;;;;;;;;;;;;;10711:48;;10608:158;;;:::o;3220:149::-;3299:39;3314:10;3326:11;3299:14;:39::i;:::-;3295:67;;;3347:15;;;;;;;;;;;;;;3295:67;3220:149;:::o;2477:695::-;2669:45;2690:10;2702:11;2669:20;:45::i;:::-;2739:23;2765:14;:12;:14::i;:::-;:23;;:35;2789:10;2765:35;;;;;;;;;;;;;;;:70;2814:11;2765:70;;;;;;;;;;;;;;;;2739:96;;2868:7;2850:15;:25;2846:57;;;2884:19;;;;;;;;;;;;;;2846:57;2966:7;2914:14;:12;:14::i;:::-;:23;;:35;2938:10;2914:35;;;;;;;;;;;;;;;:48;2950:11;2914:48;;;;;;;;;;;;;;;;:59;;;;;;;:::i;:::-;;;;;;;;3028:7;2983:14;:12;:14::i;:::-;:28;;:41;3012:11;2983:41;;;;;;;;;;;;;;;;:52;;;;;;;:::i;:::-;;;;;;;;3058:11;3046:37;;;3105:4;3124:10;3148:7;3046:119;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2575:597;2477:695;;:::o;3417:953::-;3502:20;3525:36;3542:5;3549:11;3525:16;:36::i;:::-;3502:59;;3619:12;3572:14;:12;:14::i;:::-;:23;;:30;3596:5;3572:30;;;;;;;;;;;;;;;:43;3603:11;3572:43;;;;;;;;;;;;;;;;:59;;;;;;;:::i;:::-;;;;;;;;3686:12;3641:14;:12;:14::i;:::-;:28;;:41;3670:11;3641:41;;;;;;;;;;;;;;;;:57;;;;;;;:::i;:::-;;;;;;;;3759:1;3713:14;:12;:14::i;:::-;:23;;:30;3737:5;3713:30;;;;;;;;;;;;;;;:43;3744:11;3713:43;;;;;;;;;;;;;;;;:47;3709:89;;;3781:17;;;;;;;;;;;;;;3709:89;3880:1;3836:14;:12;:14::i;:::-;:28;;:41;3865:11;3836:41;;;;;;;;;;;;;;;;:45;3832:87;;;3902:17;;;;;;;;;;;;;;3832:87;3954:20;3977:32;3990:5;3997:11;3977:12;:32::i;:::-;3954:55;;4038:1;4023:12;:16;4019:151;;;4166:4;4053:14;:12;:14::i;:::-;:38;;:45;4092:5;4053:45;;;;;;;;;;;;;;;:58;4099:11;4053:58;;;;;;;;;;;;;;;:76;4127:1;4112:12;:16;;;;:::i;:::-;4053:76;;;;;;;;;;;:110;;;:117;;;;;;;;;;;;;;;;;;4019:151;3492:878;;3417:953;;:::o;3043:210:34:-;3156:18;:16;:18::i;:::-;:42;;;3130:22;:20;:22::i;:::-;:68;3113:133;;3216:30;;;;;;;;;;;;;;3113:133;3043:210::o;1292:224:37:-;1366:24;1406:16;603:23;1406:43;;1492:8;1482:18;;1468:42;1292:224;:::o;5220:242::-;5327:7;5346:13;5362:17;:15;:17::i;:::-;:30;;:37;5393:5;5362:37;;;;;;;;;;;;;;;:50;5400:11;5362:50;;;;;;;;;;;;;;;;5346:66;;5438:1;5429:5;:10;:26;;5454:1;5446:5;:9;;;;:::i;:::-;5429:26;;;5442:1;5429:26;5422:33;;;5220:242;;;;:::o;1851:187:36:-;1898:21;1931:16;738:20;1931:40;;2014:8;2004:18;;1990:42;1851:187;:::o;7530:234:35:-;7662:48;7684:11;7697:12;7662:21;:48::i;:::-;7657:100;;7731:26;;;;;;;;;;;;;;7657:100;7530:234;;:::o;5231:602:36:-;5395:7;5414:20;5437:98;5472:5;5491:11;5516:9;5437:21;:98::i;:::-;5414:121;;5546:42;5591:41;:39;:41::i;:::-;5546:86;;5688:8;:24;;;5658:8;:27;;;:54;;;;:::i;:::-;5646:9;:66;5642:114;;;5733:23;;;;;;;;;;;;;;5642:114;5787:12;5774:9;:25;;:52;;5817:9;5774:52;;;5802:12;5774:52;5767:59;;;;5231:602;;;;;;:::o;2131:224:35:-;2205:24;2245:16;876:23;2245:43;;2331:8;2321:18;;2307:42;2131:224;:::o;10814:619:36:-;10992:23;11030:11;10992:50;;11052:14;11069:49;11101:4;11108:9;11069:11;:23;;;;:49;;;;;:::i;:::-;11052:66;;11145:1;11133:8;:13;;;11129:174;;11162:44;11185:9;11196;11162:11;:22;;;;:44;;;;;:::i;:::-;;11129:174;;;11237:55;11260:9;11282;11271:8;:20;;;;:::i;:::-;11237:11;:22;;;;:55;;;;;:::i;:::-;;11129:174;11398:28;11313:14;:12;:14::i;:::-;:34;;:43;11348:7;11313:43;;;;;;;;;;;;;;;:56;11357:11;11313:56;;;;;;;;;;;;;;;:64;11370:6;11313:64;;;;;;;;;;;:82;;:113;;;;10982:451;;10814:619;;;;;:::o;4815:197:34:-;4923:12;4973:10;4994:9;4954:51;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4947:58;;4815:197;;;;:::o;777:227::-;852:25;893:16;356:24;893:44;;980:8;970:18;;956:42;777:227;:::o;11115:163:35:-;11206:4;11229:17;:15;:17::i;:::-;:29;;:42;11259:11;11229:42;;;;;;;;;;;;;;;;;;;;;;;;;11222:49;;11115:163;;;:::o;21133:262:7:-;21237:14;21270:28;21302:21;21317:5;21302:14;:21::i;:::-;21267:56;;;21352:3;:11;;;21364:5;21371:6;21379:8;21352:36;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21333:55;;;;;;;;;;;21257:138;21133:262;;;;;:::o;3607:451::-;3706:4;3727:16;3745:28;3777:29;3800:5;3777:22;:29::i;:::-;3726:80;;;;3816:4;:18;;;3848:3;3897;:14;;;3930:5;3937:6;3945:8;3965:1;3955:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3865:117;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4006:1;3996:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3816:214;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4047:4;4040:11;;;;3607:451;;;;;:::o;2241:453::-;2340:4;2361:16;2379:28;2411:29;2434:5;2411:22;:29::i;:::-;2360:80;;;;2450:4;:18;;;2482:3;2531;:14;;;2564:5;2571:8;2581;2601:1;2591:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2499:119;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2642:1;2632:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2450:216;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2683:4;2676:11;;;;2241:453;;;;;:::o;9409:236:36:-;9516:7;9535:13;9551:14;:12;:14::i;:::-;:24;;:31;9576:5;9551:31;;;;;;;;;;;;;;;:44;9583:11;9551:44;;;;;;;;;;;;;;;;9535:60;;9621:1;9612:5;:10;:26;;9637:1;9629:5;:9;;;;:::i;:::-;9612:26;;;9625:1;9612:26;9605:33;;;9409:236;;;;:::o;5747:597:37:-;5877:5;5884:6;5892:7;5901;5941:17;:15;:17::i;:::-;:44;;:51;5986:5;5941:51;;;;;;;;;;;;;;;:64;5993:11;5941:64;;;;;;;;;;;;;;;:72;6006:6;5941:72;;;;;;;;;;;:90;;;;;;;;;;;;6045:17;:15;:17::i;:::-;:44;;:51;6090:5;6045:51;;;;;;;;;;;;;;;:64;6097:11;6045:64;;;;;;;;;;;;;;;:72;6110:6;6045:72;;;;;;;;;;;:81;;;;;;;;;;;;6140:17;:15;:17::i;:::-;:44;;:51;6185:5;6140:51;;;;;;;;;;;;;;;:64;6192:11;6140:64;;;;;;;;;;;;;;;:72;6205:6;6140:72;;;;;;;;;;;:87;;;6241:17;:15;:17::i;:::-;:44;;:51;6286:5;6241:51;;;;;;;;;;;;;;;:64;6293:11;6241:64;;;;;;;;;;;;;;;:72;6306:6;6241:72;;;;;;;;;;;:86;;;5920:417;;;;;;;;5747:597;;;;;;;:::o;6350:507::-;6488:5;6495:6;6503:7;6512;6531:33;6567:22;:20;:22::i;:::-;6531:58;;6600:16;6619:5;:25;;:32;6645:5;6619:32;;;;;;;;;;;;;;;:45;6652:11;6619:45;;;;;;;;;;;;;;;:53;6665:6;6619:53;;;;;;;;;;;:62;;;;;;;;;;;;6600:81;;6691:20;6714:5;:25;;:32;6740:5;6714:32;;;;;;;;;;;;;;;:45;6747:11;6714:45;;;;;;;;;;;;;;;:53;6760:6;6714:53;;;;;;;;;;;:66;;;6691:89;;6798:52;6814:8;6824:11;6837:12;6798:15;:52::i;:::-;6791:59;;;;;;;;;;;6350:507;;;;;;;:::o;5468:273::-;5552:7;5561:16;5610:17;:15;:17::i;:::-;:32;;:39;5643:5;5610:39;;;;;;;;;;;;;;;:49;;;5673:17;:15;:17::i;:::-;:32;;:39;5706:5;5673:39;;;;;;;;;;;;;;;:51;;5589:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5468:273;;;:::o;4330:223:34:-;4385:7;4423:18;:16;:18::i;:::-;:33;;;;;;;;;;;;:50;;;4499:4;539:42;4423:123;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4404:142;;4330:223;:::o;12858:349:35:-;12975:4;12991:23;13029:11;13017:34;;;13073:4;13017:71;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12991:97;;13148:52;13174:11;13187:12;13148:25;:52::i;:::-;13118:15;:82;13099:101;;;12858:349;;;;:::o;863:453:7:-;962:4;983:16;1001:28;1033:29;1056:5;1033:22;:29::i;:::-;982:80;;;;1072:4;:18;;;1104:3;1153;:14;;;1186:5;1193:8;1203;1223:1;1213:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1121:119;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1264:1;1254:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1072:216;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1305:4;1298:11;;;;863:453;;;;;:::o;56668:917::-;56740:16;56758:28;56913:10;56907:17;56899:25;;56950:9;56944:16;56937:23;;57007:1;56983:26;;56991:3;56983:26;;;56979:511;;57139:1;57114:27;;57122:4;57114:27;;;57110:101;;57180:5;:13;;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;57161:35;;57110:101;57275:4;57263:35;;;57410:66;57263:214;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;57224:255;;56979:511;57531:1;57506:27;;57514:4;57506:27;;;57499:35;;;;:::i;:::-;;57575:1;57551:26;;57559:3;57551:26;;;57544:34;;;;:::i;:::-;;56668:917;;;:::o;54169:1150::-;54244:16;54262:28;54417:10;54411:17;54403:25;;54454:9;54448:16;54441:23;;54511:1;54487:26;;54495:3;54487:26;;;54483:741;;54632:1;54607:27;;54615:4;54607:27;;;54603:101;;54673:5;:13;;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;54654:35;;54603:101;54768:4;54756:35;;;54903:66;54756:214;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;54717:255;;55156:4;55144:10;55137:24;55196:3;55185:9;55178:22;54483:741;55265:1;55240:27;;55248:4;55240:27;;;55233:35;;;;:::i;:::-;;55309:1;55285:26;;55293:3;55285:26;;;55278:34;;;;:::i;:::-;;54169:1150;;;:::o;12293:559:35:-;12414:7;12433:23;12471:11;12433:50;;12493:23;12519:73;12570:12;12519:11;:37;;;;:73;;;;:::i;:::-;12493:99;;12602:25;12630:41;12665:4;12630:11;:26;;;;:41;;;;:::i;:::-;12602:69;;12802:17;:15;:17::i;:::-;:42;;;12769:12;12747:19;:34;;;;:::i;:::-;12732:51;;:112;;;;:::i;:::-;12701:15;:144;;;;:::i;:::-;12682:163;;;;;12293:559;;;;:::o;23687:267:7:-;23788:20;23827:28;23859:21;23874:5;23859:14;:21::i;:::-;23824:56;;;23897:3;:33;;;23931:5;23938:8;23897:50;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23890:57;;;23687:267;;;;:::o;22431:231::-;22522:14;22555:28;22587:21;22602:5;22587:14;:21::i;:::-;22552:56;;;22625:3;:14;;;22640:5;22647:7;22625:30;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22618:37;;;22431:231;;;;:::o;7:75:43:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:77::-;878:7;907:5;896:16;;841:77;;;:::o;924:122::-;997:24;1015:5;997:24;:::i;:::-;990:5;987:35;977:63;;1036:1;1033;1026:12;977:63;924:122;:::o;1052:139::-;1098:5;1136:6;1123:20;1114:29;;1152:33;1179:5;1152:33;:::i;:::-;1052:139;;;;:::o;1197:474::-;1265:6;1273;1322:2;1310:9;1301:7;1297:23;1293:32;1290:119;;;1328:79;;:::i;:::-;1290:119;1448:1;1473:53;1518:7;1509:6;1498:9;1494:22;1473:53;:::i;:::-;1463:63;;1419:117;1575:2;1601:53;1646:7;1637:6;1626:9;1622:22;1601:53;:::i;:::-;1591:63;;1546:118;1197:474;;;;;:::o;1677:91::-;1712:7;1756:5;1752:2;1741:21;1730:32;;1677:91;;;:::o;1774:118::-;1845:22;1861:5;1845:22;:::i;:::-;1838:5;1835:33;1825:61;;1882:1;1879;1872:12;1825:61;1774:118;:::o;1898:135::-;1942:5;1980:6;1967:20;1958:29;;1996:31;2021:5;1996:31;:::i;:::-;1898:135;;;;:::o;2039:615::-;2114:6;2122;2130;2179:2;2167:9;2158:7;2154:23;2150:32;2147:119;;;2185:79;;:::i;:::-;2147:119;2305:1;2330:53;2375:7;2366:6;2355:9;2351:22;2330:53;:::i;:::-;2320:63;;2276:117;2432:2;2458:53;2503:7;2494:6;2483:9;2479:22;2458:53;:::i;:::-;2448:63;;2403:118;2560:2;2586:51;2629:7;2620:6;2609:9;2605:22;2586:51;:::i;:::-;2576:61;;2531:116;2039:615;;;;;:::o;2660:118::-;2747:24;2765:5;2747:24;:::i;:::-;2742:3;2735:37;2660:118;;:::o;2784:222::-;2877:4;2915:2;2904:9;2900:18;2892:26;;2928:71;2996:1;2985:9;2981:17;2972:6;2928:71;:::i;:::-;2784:222;;;;:::o;3012:907::-;3105:6;3113;3121;3129;3137;3186:3;3174:9;3165:7;3161:23;3157:33;3154:120;;;3193:79;;:::i;:::-;3154:120;3313:1;3338:53;3383:7;3374:6;3363:9;3359:22;3338:53;:::i;:::-;3328:63;;3284:117;3440:2;3466:53;3511:7;3502:6;3491:9;3487:22;3466:53;:::i;:::-;3456:63;;3411:118;3568:2;3594:53;3639:7;3630:6;3619:9;3615:22;3594:53;:::i;:::-;3584:63;;3539:118;3696:2;3722:53;3767:7;3758:6;3747:9;3743:22;3722:53;:::i;:::-;3712:63;;3667:118;3824:3;3851:51;3894:7;3885:6;3874:9;3870:22;3851:51;:::i;:::-;3841:61;;3795:117;3012:907;;;;;;;;:::o;3925:474::-;3993:6;4001;4050:2;4038:9;4029:7;4025:23;4021:32;4018:119;;;4056:79;;:::i;:::-;4018:119;4176:1;4201:53;4246:7;4237:6;4226:9;4222:22;4201:53;:::i;:::-;4191:63;;4147:117;4303:2;4329:53;4374:7;4365:6;4354:9;4350:22;4329:53;:::i;:::-;4319:63;;4274:118;3925:474;;;;;:::o;4405:90::-;4439:7;4482:5;4475:13;4468:21;4457:32;;4405:90;;;:::o;4501:109::-;4582:21;4597:5;4582:21;:::i;:::-;4577:3;4570:34;4501:109;;:::o;4616:210::-;4703:4;4741:2;4730:9;4726:18;4718:26;;4754:65;4816:1;4805:9;4801:17;4792:6;4754:65;:::i;:::-;4616:210;;;;:::o;4832:619::-;4909:6;4917;4925;4974:2;4962:9;4953:7;4949:23;4945:32;4942:119;;;4980:79;;:::i;:::-;4942:119;5100:1;5125:53;5170:7;5161:6;5150:9;5146:22;5125:53;:::i;:::-;5115:63;;5071:117;5227:2;5253:53;5298:7;5289:6;5278:9;5274:22;5253:53;:::i;:::-;5243:63;;5198:118;5355:2;5381:53;5426:7;5417:6;5406:9;5402:22;5381:53;:::i;:::-;5371:63;;5326:118;4832:619;;;;;:::o;5457:118::-;5544:24;5562:5;5544:24;:::i;:::-;5539:3;5532:37;5457:118;;:::o;5581:77::-;5618:7;5647:5;5636:16;;5581:77;;;:::o;5664:118::-;5751:24;5769:5;5751:24;:::i;:::-;5746:3;5739:37;5664:118;;:::o;5788:763::-;6015:4;6053:3;6042:9;6038:19;6030:27;;6067:71;6135:1;6124:9;6120:17;6111:6;6067:71;:::i;:::-;6148:72;6216:2;6205:9;6201:18;6192:6;6148:72;:::i;:::-;6230;6298:2;6287:9;6283:18;6274:6;6230:72;:::i;:::-;6312;6380:2;6369:9;6365:18;6356:6;6312:72;:::i;:::-;6394:73;6462:3;6451:9;6447:19;6438:6;6394:73;:::i;:::-;6477:67;6539:3;6528:9;6524:19;6515:6;6477:67;:::i;:::-;5788:763;;;;;;;;;:::o;6557:329::-;6616:6;6665:2;6653:9;6644:7;6640:23;6636:32;6633:119;;;6671:79;;:::i;:::-;6633:119;6791:1;6816:53;6861:7;6852:6;6841:9;6837:22;6816:53;:::i;:::-;6806:63;;6762:117;6557:329;;;;:::o;6892:180::-;6940:77;6937:1;6930:88;7037:4;7034:1;7027:15;7061:4;7058:1;7051:15;7078:180;7126:77;7123:1;7116:88;7223:4;7220:1;7213:15;7247:4;7244:1;7237:15;7264:180;7312:77;7309:1;7302:88;7409:4;7406:1;7399:15;7433:4;7430:1;7423:15;7450:180;7498:77;7495:1;7488:88;7595:4;7592:1;7585:15;7619:4;7616:1;7609:15;7636:191;7676:3;7695:20;7713:1;7695:20;:::i;:::-;7690:25;;7729:20;7747:1;7729:20;:::i;:::-;7724:25;;7772:1;7769;7765:9;7758:16;;7793:3;7790:1;7787:10;7784:36;;;7800:18;;:::i;:::-;7784:36;7636:191;;;;:::o;7833:112::-;7916:22;7932:5;7916:22;:::i;:::-;7911:3;7904:35;7833:112;;:::o;7951:656::-;8152:4;8190:3;8179:9;8175:19;8167:27;;8204:71;8272:1;8261:9;8257:17;8248:6;8204:71;:::i;:::-;8285:72;8353:2;8342:9;8338:18;8329:6;8285:72;:::i;:::-;8367;8435:2;8424:9;8420:18;8411:6;8367:72;:::i;:::-;8449;8517:2;8506:9;8502:18;8493:6;8449:72;:::i;:::-;8531:69;8595:3;8584:9;8580:19;8571:6;8531:69;:::i;:::-;7951:656;;;;;;;;:::o;8613:98::-;8664:6;8698:5;8692:12;8682:22;;8613:98;;;:::o;8717:168::-;8800:11;8834:6;8829:3;8822:19;8874:4;8869:3;8865:14;8850:29;;8717:168;;;;:::o;8891:246::-;8972:1;8982:113;8996:6;8993:1;8990:13;8982:113;;;9081:1;9076:3;9072:11;9066:18;9062:1;9057:3;9053:11;9046:39;9018:2;9015:1;9011:10;9006:15;;8982:113;;;9129:1;9120:6;9115:3;9111:16;9104:27;8953:184;8891:246;;;:::o;9143:102::-;9184:6;9235:2;9231:7;9226:2;9219:5;9215:14;9211:28;9201:38;;9143:102;;;:::o;9251:373::-;9337:3;9365:38;9397:5;9365:38;:::i;:::-;9419:70;9482:6;9477:3;9419:70;:::i;:::-;9412:77;;9498:65;9556:6;9551:3;9544:4;9537:5;9533:16;9498:65;:::i;:::-;9588:29;9610:6;9588:29;:::i;:::-;9583:3;9579:39;9572:46;;9341:283;9251:373;;;;:::o;9630:126::-;9709:6;9743:5;9737:12;9727:22;;9630:126;;;:::o;9762:172::-;9849:11;9883:6;9878:3;9871:19;9923:4;9918:3;9914:14;9899:29;;9762:172;;;;:::o;9940:144::-;10019:4;10042:3;10034:11;;10072:4;10067:3;10063:14;10055:22;;9940:144;;;:::o;10090:117::-;10175:1;10168:5;10165:12;10155:46;;10181:18;;:::i;:::-;10155:46;10090:117;:::o;10213:135::-;10262:7;10291:5;10280:16;;10297:45;10336:5;10297:45;:::i;:::-;10213:135;;;:::o;10354:::-;10414:9;10447:36;10477:5;10447:36;:::i;:::-;10434:49;;10354:135;;;:::o;10495:141::-;10582:47;10623:5;10582:47;:::i;:::-;10577:3;10570:60;10495:141;;:::o;10642:199::-;10721:10;10742:56;10794:3;10786:6;10742:56;:::i;:::-;10830:4;10825:3;10821:14;10807:28;;10642:199;;;;:::o;10847:125::-;10929:4;10961;10956:3;10952:14;10944:22;;10847:125;;;:::o;11010:766::-;11129:3;11158:66;11218:5;11158:66;:::i;:::-;11240:74;11307:6;11302:3;11240:74;:::i;:::-;11233:81;;11338:68;11400:5;11338:68;:::i;:::-;11429:7;11460:1;11445:306;11470:6;11467:1;11464:13;11445:306;;;11546:6;11540:13;11573:73;11642:3;11627:13;11573:73;:::i;:::-;11566:80;;11669:72;11734:6;11669:72;:::i;:::-;11659:82;;11505:246;11492:1;11489;11485:9;11480:14;;11445:306;;;11449:14;11767:3;11760:10;;11134:642;;;11010:766;;;;:::o;11782:123::-;11858:6;11892:5;11886:12;11876:22;;11782:123;;;:::o;11911:183::-;12009:11;12043:6;12038:3;12031:19;12083:4;12078:3;12074:14;12059:29;;11911:183;;;;:::o;12100:141::-;12176:4;12199:3;12191:11;;12229:4;12224:3;12220:14;12212:22;;12100:141;;;:::o;12247:158::-;12320:11;12354:6;12349:3;12342:19;12394:4;12389:3;12385:14;12370:29;;12247:158;;;;:::o;12411:353::-;12487:3;12515:38;12547:5;12515:38;:::i;:::-;12569:60;12622:6;12617:3;12569:60;:::i;:::-;12562:67;;12638:65;12696:6;12691:3;12684:4;12677:5;12673:16;12638:65;:::i;:::-;12728:29;12750:6;12728:29;:::i;:::-;12723:3;12719:39;12712:46;;12491:273;12411:353;;;;:::o;12770:192::-;12857:10;12892:64;12952:3;12944:6;12892:64;:::i;:::-;12878:78;;12770:192;;;;:::o;12968:122::-;13047:4;13079;13074:3;13070:14;13062:22;;12968:122;;;:::o;13122:963::-;13249:3;13278:63;13335:5;13278:63;:::i;:::-;13357:85;13435:6;13430:3;13357:85;:::i;:::-;13350:92;;13468:3;13513:4;13505:6;13501:17;13496:3;13492:27;13543:65;13602:5;13543:65;:::i;:::-;13631:7;13662:1;13647:393;13672:6;13669:1;13666:13;13647:393;;;13743:9;13737:4;13733:20;13728:3;13721:33;13794:6;13788:13;13822:82;13899:4;13884:13;13822:82;:::i;:::-;13814:90;;13927:69;13989:6;13927:69;:::i;:::-;13917:79;;14025:4;14020:3;14016:14;14009:21;;13707:333;13694:1;13691;13687:9;13682:14;;13647:393;;;13651:14;14056:4;14049:11;;14076:3;14069:10;;13254:831;;;;;13122:963;;;;:::o;14137:776::-;14264:3;14300:4;14295:3;14291:14;14390:4;14383:5;14379:16;14373:23;14443:3;14437:4;14433:14;14426:4;14421:3;14417:14;14410:38;14469:113;14577:4;14563:12;14469:113;:::i;:::-;14461:121;;14315:278;14675:4;14668:5;14664:16;14658:23;14728:3;14722:4;14718:14;14711:4;14706:3;14702:14;14695:38;14754:121;14870:4;14856:12;14754:121;:::i;:::-;14746:129;;14603:283;14903:4;14896:11;;14269:644;14137:776;;;;:::o;14919:807::-;15172:4;15210:3;15199:9;15195:19;15187:27;;15224:71;15292:1;15281:9;15277:17;15268:6;15224:71;:::i;:::-;15342:9;15336:4;15332:20;15327:2;15316:9;15312:18;15305:48;15370:76;15441:4;15432:6;15370:76;:::i;:::-;15362:84;;15493:9;15487:4;15483:20;15478:2;15467:9;15463:18;15456:48;15521:116;15632:4;15623:6;15521:116;:::i;:::-;15513:124;;15647:72;15715:2;15704:9;15700:18;15691:6;15647:72;:::i;:::-;14919:807;;;;;;;:::o;15732:122::-;15805:24;15823:5;15805:24;:::i;:::-;15798:5;15795:35;15785:63;;15844:1;15841;15834:12;15785:63;15732:122;:::o;15860:143::-;15917:5;15948:6;15942:13;15933:22;;15964:33;15991:5;15964:33;:::i;:::-;15860:143;;;;:::o;16009:351::-;16079:6;16128:2;16116:9;16107:7;16103:23;16099:32;16096:119;;;16134:79;;:::i;:::-;16096:119;16254:1;16279:64;16335:7;16326:6;16315:9;16311:22;16279:64;:::i;:::-;16269:74;;16225:128;16009:351;;;;:::o;16366:222::-;16459:4;16497:2;16486:9;16482:18;16474:26;;16510:71;16578:1;16567:9;16563:17;16554:6;16510:71;:::i;:::-;16366:222;;;;:::o;16594:442::-;16743:4;16781:2;16770:9;16766:18;16758:26;;16794:71;16862:1;16851:9;16847:17;16838:6;16794:71;:::i;:::-;16875:72;16943:2;16932:9;16928:18;16919:6;16875:72;:::i;:::-;16957;17025:2;17014:9;17010:18;17001:6;16957:72;:::i;:::-;16594:442;;;;;;:::o;17042:116::-;17112:21;17127:5;17112:21;:::i;:::-;17105:5;17102:32;17092:60;;17148:1;17145;17138:12;17092:60;17042:116;:::o;17164:137::-;17218:5;17249:6;17243:13;17234:22;;17265:30;17289:5;17265:30;:::i;:::-;17164:137;;;;:::o;17307:345::-;17374:6;17423:2;17411:9;17402:7;17398:23;17394:32;17391:119;;;17429:79;;:::i;:::-;17391:119;17549:1;17574:61;17627:7;17618:6;17607:9;17603:22;17574:61;:::i;:::-;17564:71;;17520:125;17307:345;;;;:::o;17658:180::-;17706:77;17703:1;17696:88;17803:4;17800:1;17793:15;17827:4;17824:1;17817:15;17844:185;17884:1;17901:20;17919:1;17901:20;:::i;:::-;17896:25;;17935:20;17953:1;17935:20;:::i;:::-;17930:25;;17974:1;17964:35;;17979:18;;:::i;:::-;17964:35;18021:1;18018;18014:9;18009:14;;17844:185;;;;:::o;18035:194::-;18075:4;18095:20;18113:1;18095:20;:::i;:::-;18090:25;;18129:20;18147:1;18129:20;:::i;:::-;18124:25;;18173:1;18170;18166:9;18158:17;;18197:1;18191:4;18188:11;18185:37;;;18202:18;;:::i;:::-;18185:37;18035:194;;;;:::o;18235:331::-;18273:4;18293:18;18309:1;18293:18;:::i;:::-;18288:23;;18325:18;18341:1;18325:18;:::i;:::-;18320:23;;18367:1;18364;18360:9;18352:17;;18499:26;18493:4;18489:37;18408:66;18402:4;18398:77;18382:154;18379:180;;;18539:18;;:::i;:::-;18379:180;18235:331;;;;:::o;18572:410::-;18612:7;18635:20;18653:1;18635:20;:::i;:::-;18630:25;;18669:20;18687:1;18669:20;:::i;:::-;18664:25;;18724:1;18721;18717:9;18746:30;18764:11;18746:30;:::i;:::-;18735:41;;18925:1;18916:7;18912:15;18909:1;18906:22;18886:1;18879:9;18859:83;18836:139;;18955:18;;:::i;:::-;18836:139;18620:362;18572:410;;;;:::o;18988:233::-;19027:3;19050:24;19068:5;19050:24;:::i;:::-;19041:33;;19096:66;19089:5;19086:77;19083:103;;19166:18;;:::i;:::-;19083:103;19213:1;19206:5;19202:13;19195:20;;18988:233;;;:::o;19227:327::-;19265:3;19284:18;19300:1;19284:18;:::i;:::-;19279:23;;19316:18;19332:1;19316:18;:::i;:::-;19311:23;;19357:1;19354;19350:9;19343:16;;19447:66;19442:3;19438:76;19397:26;19392:3;19388:36;19372:152;19369:178;;;19527:18;;:::i;:::-;19369:178;19227:327;;;;:::o;19560:118::-;19597:7;19637:34;19630:5;19626:46;19615:57;;19560:118;;;:::o;19684:::-;19771:24;19789:5;19771:24;:::i;:::-;19766:3;19759:37;19684:118;;:::o;19808:332::-;19929:4;19967:2;19956:9;19952:18;19944:26;;19980:71;20048:1;20037:9;20033:17;20024:6;19980:71;:::i;:::-;20061:72;20129:2;20118:9;20114:18;20105:6;20061:72;:::i;:::-;19808:332;;;;;:::o;20146:60::-;20174:3;20195:5;20188:12;;20146:60;;;:::o;20212:142::-;20262:9;20295:53;20313:34;20322:24;20340:5;20322:24;:::i;:::-;20313:34;:::i;:::-;20295:53;:::i;:::-;20282:66;;20212:142;;;:::o;20360:126::-;20410:9;20443:37;20474:5;20443:37;:::i;:::-;20430:50;;20360:126;;;:::o;20492:146::-;20562:9;20595:37;20626:5;20595:37;:::i;:::-;20582:50;;20492:146;;;:::o;20644:171::-;20751:57;20802:5;20751:57;:::i;:::-;20746:3;20739:70;20644:171;;:::o;20821:482::-;20990:4;21028:2;21017:9;21013:18;21005:26;;21041:91;21129:1;21118:9;21114:17;21105:6;21041:91;:::i;:::-;21142:72;21210:2;21199:9;21195:18;21186:6;21142:72;:::i;:::-;21224;21292:2;21281:9;21277:18;21268:6;21224:72;:::i;:::-;20821:482;;;;;;:::o;21309:143::-;21366:5;21397:6;21391:13;21382:22;;21413:33;21440:5;21413:33;:::i;:::-;21309:143;;;;:::o;21458:139::-;21513:5;21544:6;21538:13;21529:22;;21560:31;21585:5;21560:31;:::i;:::-;21458:139;;;;:::o;21603:816::-;21698:6;21706;21714;21722;21771:3;21759:9;21750:7;21746:23;21742:33;21739:120;;;21778:79;;:::i;:::-;21739:120;21898:1;21923:64;21979:7;21970:6;21959:9;21955:22;21923:64;:::i;:::-;21913:74;;21869:128;22036:2;22062:62;22116:7;22107:6;22096:9;22092:22;22062:62;:::i;:::-;22052:72;;22007:127;22173:2;22199:64;22255:7;22246:6;22235:9;22231:22;22199:64;:::i;:::-;22189:74;;22144:129;22312:2;22338:64;22394:7;22385:6;22374:9;22370:22;22338:64;:::i;:::-;22328:74;;22283:129;21603:816;;;;;;;:::o;22425:680::-;22640:4;22678:3;22667:9;22663:19;22655:27;;22692:91;22780:1;22769:9;22765:17;22756:6;22692:91;:::i;:::-;22793:72;22861:2;22850:9;22846:18;22837:6;22793:72;:::i;:::-;22875;22943:2;22932:9;22928:18;22919:6;22875:72;:::i;:::-;22994:9;22988:4;22984:20;22979:2;22968:9;22964:18;22957:48;23022:76;23093:4;23084:6;23022:76;:::i;:::-;23014:84;;22425:680;;;;;;;:::o;23111:159::-;23194:9;23227:37;23258:5;23227:37;:::i;:::-;23214:50;;23111:159;;;:::o;23276:197::-;23396:70;23460:5;23396:70;:::i;:::-;23391:3;23384:83;23276:197;;:::o;23479:682::-;23697:4;23735:2;23724:9;23720:18;23712:26;;23748:104;23849:1;23838:9;23834:17;23825:6;23748:104;:::i;:::-;23899:9;23893:4;23889:20;23884:2;23873:9;23869:18;23862:48;23927:76;23998:4;23989:6;23927:76;:::i;:::-;23919:84;;24050:9;24044:4;24040:20;24035:2;24024:9;24020:18;24013:48;24078:76;24149:4;24140:6;24078:76;:::i;:::-;24070:84;;23479:682;;;;;;:::o;24167:117::-;24276:1;24273;24266:12;24290:117;24399:1;24396;24389:12;24413:281;24496:27;24518:4;24496:27;:::i;:::-;24488:6;24484:40;24626:6;24614:10;24611:22;24590:18;24578:10;24575:34;24572:62;24569:88;;;24637:18;;:::i;:::-;24569:88;24677:10;24673:2;24666:22;24456:238;24413:281;;:::o;24700:129::-;24734:6;24761:20;;:::i;:::-;24751:30;;24790:33;24818:4;24810:6;24790:33;:::i;:::-;24700:129;;;:::o;24835:307::-;24896:4;24986:18;24978:6;24975:30;24972:56;;;25008:18;;:::i;:::-;24972:56;25046:29;25068:6;25046:29;:::i;:::-;25038:37;;25130:4;25124;25120:15;25112:23;;24835:307;;;:::o;25148:432::-;25236:5;25261:65;25277:48;25318:6;25277:48;:::i;:::-;25261:65;:::i;:::-;25252:74;;25349:6;25342:5;25335:21;25387:4;25380:5;25376:16;25425:3;25416:6;25411:3;25407:16;25404:25;25401:112;;;25432:79;;:::i;:::-;25401:112;25522:52;25567:6;25562:3;25557;25522:52;:::i;:::-;25242:338;25148:432;;;;;:::o;25599:353::-;25665:5;25714:3;25707:4;25699:6;25695:17;25691:27;25681:122;;25722:79;;:::i;:::-;25681:122;25832:6;25826:13;25857:89;25942:3;25934:6;25927:4;25919:6;25915:17;25857:89;:::i;:::-;25848:98;;25671:281;25599:353;;;;:::o;25958:522::-;26037:6;26086:2;26074:9;26065:7;26061:23;26057:32;26054:119;;;26092:79;;:::i;:::-;26054:119;26233:1;26222:9;26218:17;26212:24;26263:18;26255:6;26252:30;26249:117;;;26285:79;;:::i;:::-;26249:117;26390:73;26455:7;26446:6;26435:9;26431:22;26390:73;:::i;:::-;26380:83;;26183:290;25958:522;;;;:::o;26486:672::-;26697:4;26735:3;26724:9;26720:19;26712:27;;26749:91;26837:1;26826:9;26822:17;26813:6;26749:91;:::i;:::-;26850:72;26918:2;26907:9;26903:18;26894:6;26850:72;:::i;:::-;26932:68;26996:2;26985:9;26981:18;26972:6;26932:68;:::i;:::-;27047:9;27041:4;27037:20;27032:2;27021:9;27017:18;27010:48;27075:76;27146:4;27137:6;27075:76;:::i;:::-;27067:84;;26486:672;;;;;;;:::o;27164:332::-;27285:4;27323:2;27312:9;27308:18;27300:26;;27336:71;27404:1;27393:9;27389:17;27380:6;27336:71;:::i;:::-;27417:72;27485:2;27474:9;27470:18;27461:6;27417:72;:::i;:::-;27164:332;;;;;:::o;27502:351::-;27572:6;27621:2;27609:9;27600:7;27596:23;27592:32;27589:119;;;27627:79;;:::i;:::-;27589:119;27747:1;27772:64;27828:7;27819:6;27808:9;27804:22;27772:64;:::i;:::-;27762:74;;27718:128;27502:351;;;;:::o;27859:222::-;27952:4;27990:2;27979:9;27975:18;27967:26;;28003:71;28071:1;28060:9;28056:17;28047:6;28003:71;:::i;:::-;27859:222;;;;:::o;28087:143::-;28144:5;28175:6;28169:13;28160:22;;28191:33;28218:5;28191:33;:::i;:::-;28087:143;;;;:::o;28236:351::-;28306:6;28355:2;28343:9;28334:7;28330:23;28326:32;28323:119;;;28361:79;;:::i;:::-;28323:119;28481:1;28506:64;28562:7;28553:6;28542:9;28538:22;28506:64;:::i;:::-;28496:74;;28452:128;28236:351;;;;:::o;28593:161::-;28714:7;28743:5;28732:16;;28593:161;;;:::o;28760:92::-;28792:8;28839:5;28836:1;28832:13;28811:34;;28760:92;;;:::o;28858:314::-;28992:9;29025:141;29043:122;29056:108;29158:5;29056:108;:::i;:::-;29043:122;:::i;:::-;29025:141;:::i;:::-;29012:154;;28858:314;;;:::o;29178:299::-;29349:121;29464:5;29349:121;:::i;:::-;29344:3;29337:134;29178:299;;:::o;29483:390::-;29660:4;29698:2;29687:9;29683:18;29675:26;;29711:155;29863:1;29852:9;29848:17;29839:6;29711:155;:::i;:::-;29483:390;;;;:::o;29879:120::-;29940:7;29969:24;29987:5;29969:24;:::i;:::-;29958:35;;29879:120;;;:::o;30005:170::-;30102:48;30144:5;30102:48;:::i;:::-;30095:5;30092:59;30082:87;;30165:1;30162;30155:12;30082:87;30005:170;:::o;30181:191::-;30262:5;30293:6;30287:13;30278:22;;30309:57;30360:5;30309:57;:::i;:::-;30181:191;;;;:::o;30378:399::-;30472:6;30521:2;30509:9;30500:7;30496:23;30492:32;30489:119;;;30527:79;;:::i;:::-;30489:119;30647:1;30672:88;30752:7;30743:6;30732:9;30728:22;30672:88;:::i;:::-;30662:98;;30618:152;30378:399;;;;:::o;30783:180::-;30831:77;30828:1;30821:88;30928:4;30925:1;30918:15;30952:4;30949:1;30942:15;30969:364;31106:4;31144:2;31133:9;31129:18;31121:26;;31157:91;31245:1;31234:9;31230:17;31221:6;31157:91;:::i;:::-;31258:68;31322:2;31311:9;31307:18;31298:6;31258:68;:::i;:::-;30969:364;;;;;:::o;31339:372::-;31480:4;31518:2;31507:9;31503:18;31495:26;;31531:91;31619:1;31608:9;31604:17;31595:6;31531:91;:::i;:::-;31632:72;31700:2;31689:9;31685:18;31676:6;31632:72;:::i;:::-;31339:372;;;;;:::o;31717:347::-;31785:6;31834:2;31822:9;31813:7;31809:23;31805:32;31802:119;;;31840:79;;:::i;:::-;31802:119;31960:1;31985:62;32039:7;32030:6;32019:9;32015:22;31985:62;:::i;:::-;31975:72;;31931:126;31717:347;;;;:::o"},"methodIdentifiers":{"closeFlow(address,uint256)":"e32867fc","decreaseFlow(address,address,address,uint256,int96)":"36fbb025","depositSuperToken(address,uint256)":"0197c386","getAmountFlowed(address,address)":"3870f4a0","getDepositTotal(address)":"c76474db","getDepositUser(address,address)":"a152ca6f","getFlowData(address,address,uint256)":"54bbc2ad","getNewFlowNonce(address,address)":"521d3f3c","getValidSafeLifespan(address,address,int96)":"0dfa0b82","hasActiveFlow(address,address)":"468240a9","isViewSessionAllowed(address,address)":"9a5b5f93","openFlow(address,address,uint256)":"dfc96e1b","withdrawSuperToken(address,uint256)":"dc5cd1d8"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"CallerNotAutobot\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HasActiveFlow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientAppGelatoBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientAppSTBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientFunds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientLifespan1\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientLifespan2\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientLifespan3\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidBalance1\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidBalance2\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSuperToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SessionNotStarted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TooEarly\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_nonce\",\"type\":\"uint256\"}],\"name\":\"closeFlow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_nonce\",\"type\":\"uint256\"},{\"internalType\":\"int96\",\"name\":\"_flowRate\",\"type\":\"int96\"}],\"name\":\"decreaseFlow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"depositSuperToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"}],\"name\":\"getAmountFlowed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"}],\"name\":\"getDepositTotal\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"}],\"name\":\"getDepositUser\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_nonce\",\"type\":\"uint256\"}],\"name\":\"getFlowData\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"}],\"name\":\"getNewFlowNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"},{\"internalType\":\"int96\",\"name\":\"_flowRate\",\"type\":\"int96\"}],\"name\":\"getValidSafeLifespan\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"}],\"name\":\"hasActiveFlow\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_viewer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_broadcaster\",\"type\":\"address\"}],\"name\":\"isViewSessionAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_lifespan\",\"type\":\"uint256\"}],\"name\":\"openFlow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"withdrawSuperToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"isViewSessionAllowed(address,address)\":{\"notice\":\"use `isViewSessionAllowed` to easily determine if viewer can \\\"join room\\\" or not !! NOT used to determine if can `openFlow` or not...\"},\"openFlow(address,address,uint256)\":{\"notice\":\"// TODO: need to check if you have sufficient deposits left or not SOL1: have user manually off flow SOL2: force settle blaance before open next flow (also force settle before withdraw)\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/facets/core/Flow.sol\":\"Flow\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol\":{\"keccak256\":\"0xf41ca991f30855bf80ffd11e9347856a517b977f0a6c2d52e6421a99b7840329\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2717fd2bdac99daa960a6de500754ea1b932093c946388c381da48658234b95\",\"dweb:/ipfs/QmP6QVMn6UeA3ByahyJbYQr5M6coHKBKsf3ySZSfbyA8R7\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x9b72f93be69ca894d8492c244259615c4a742afc8d63720dbc8bb81087d9b238\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5a7b96e511be78d5cdf635c784e6ab8cdd38625bb8cafb8a80914a1c89cf0f6\",\"dweb:/ipfs/QmVzTCwJxQAkjRQHboT5QrvsVJGWQHgfEjeTbvyxoKBrds\"]},\"@openzeppelin/contracts/token/ERC777/IERC777.sol\":{\"keccak256\":\"0x385a7061f1436b079d44c140dee9387d5313e94874ff9ee877dc0085c981ac3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c3fe22bb0d9527356e11f267f9187134de4d4ed1ff77468b4d73e3238697b96\",\"dweb:/ipfs/Qmc8caJctgxbzXEpxRogQMR2bnBk5U67hA7kKbUEG2PUXV\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xf96f969e24029d43d0df89e59d365f277021dac62b48e1c1e3ebe0acdd7f1ca1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec772b45a624be516f1c81970caa8a2e144301e9d0921cbc1a2789fef39a1269\",\"dweb:/ipfs/QmNyjwxCrGhQMyzLD93oUobJXVe9ceJvRvfXwbEtuxPiEj\"]},\"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol\":{\"keccak256\":\"0x1b588d76f3addfeb2f368ec534fbd8da6120c8ba3c08e95f410a9cc2204faf79\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://74e51ec8a8d50ad9c6c047a2548de4aac9e6da23f65b2d8a74e89665d26c527f\",\"dweb:/ipfs/QmS26ukRAwj9ZSHmRSbjmpmdA6EaZHAK6JvE38LkqjRYaP\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol\":{\"keccak256\":\"0xb68e122faba133422f4cbdd7e15fc913073dfa2c3682c18d6449b121e67d1104\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://da0611fda964b8356d38cb006133865b58adc6e11d3817e27daf20b02ad6880f\",\"dweb:/ipfs/QmeLbak3yiUfkGvxEZzmS4ndDwDfxtZNeKiA86G3WxzjyD\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IInstantDistributionAgreementV1.sol\":{\"keccak256\":\"0x7b088dfa11a00d2b1e6e0938978364a6918015b052a4bf3ffcc67db9b3182370\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://2437f6ea2d8c8de7613aef5de4dcf3530c2beb801f7d5f3e21ac617e73f8882b\",\"dweb:/ipfs/QmVBtqXYV25fQZ9P6xokBzgFnHCBthJSZdFo9quBY169fd\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol\":{\"keccak256\":\"0x80254971aff00fc006d70b85b7bc830bb28096789e72ff3f03aa22cc7810eb0c\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://840f9d959abfbf3919db3dca35336e360b2bbd54e677439a545c7c4f163f6d70\",\"dweb:/ipfs/QmR4CRq7dpYR4NuCSASkNrcnbSScRX8MaEvDs8L7v3xDyr\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol\":{\"keccak256\":\"0x9b4fab6dcac1337f78e04d67d8c2b48b1de8bd4bbf14b475840f9dbda7b8f21e\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://cc2f3629ad0cb46bd4f595880591ad6c9d75a82d920cb9355e462fbf8022c820\",\"dweb:/ipfs/QmXMovxK4qpWT4yffXxUVjkMNwxEfS6mtn39mLSmjaxEdW\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperApp.sol\":{\"keccak256\":\"0x6cc4b0724d977190c7441dfc3be6c6e48b43b555c3370af32ef5b6600f15f53f\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://3e89c944642772a42429f21a11017b57deb98a9198f8e4f8749f00aaee71299e\",\"dweb:/ipfs/QmaSv9GvqikcGHJ3tcwATDHSpQw6mfnHPDtcfqcZSS7LF6\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.sol\":{\"keccak256\":\"0x6860f0bf69dcc1d1ec39eefb43e0cd18b276b48ebe9efd53450e09cd2f997ab2\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://6421f80f2ff7818bd235b7bf4b911cc40edcb598507a246b4de0fa0191a9e1aa\",\"dweb:/ipfs/QmWxktXMjYhi1zt52D3JXNcxCFesXu8kQoSCJQ3j88apM3\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperTokenFactory.sol\":{\"keccak256\":\"0xe2525ef2906504e2f61775ed91bbebeea2f4e2e3fa42ce190561acf6a01187ff\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://7a9859eb432321a65cd15ca988a13776e1c31df44b4cf25f95fa04b54a8a8625\",\"dweb:/ipfs/QmQVJQoeoWemptZhbRgWJZWwMTiNtxVsc1FYmGdtdTfqcL\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol\":{\"keccak256\":\"0xab9dab941f99d0f0ef6125fb6eafde03378d7c3e94e613dd12fb7fbf594c3373\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://928c6ef915dee69058d4cfcb9f2344d4fc78d9763b47b17e5c03fbff64ba3c64\",\"dweb:/ipfs/Qmdk733ZHceatz3qbuodLCCS9TUspJJtXLoX6vWwMvrPDE\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance.sol\":{\"keccak256\":\"0x90a9259d0f0bb6b1bb6d48f051277eb75df96a9fbe684a203a3a468ad19318e2\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://9c8162a2d07ffe768920fef55292684149173afefbfba76b8fca007e55092229\",\"dweb:/ipfs/QmducLNwrzeUXEpBjUTSMu7sfmQEwVhcYXApe4brc1zQ6V\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol\":{\"keccak256\":\"0x9cad3866982902ea88df0874a563d2e4aeba5a5bcc6289c30cccf9b4099d2fb6\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://e8fd960b259331f204c7cb7dcd32b09d68f4294e3b872fad00ad467609c3ef72\",\"dweb:/ipfs/QmeZFEvsDunXQGPbXFfN5AvfKM5am1FY8Xv6e3c4tNKvgY\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo.sol\":{\"keccak256\":\"0x55be78ffb441c782f612b153d7d9049e3f0dbfd412c1f7df29c896b972b2985f\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://a223c68e38a6c9b1e363e525911bc7eda44ea517865ae53bd0d34ff858cc02ae\",\"dweb:/ipfs/QmVruGehibG6Emr2A6JHwUnhd4NzsGkE24cbGqnDpEvrKh\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.sol\":{\"keccak256\":\"0x7456cd394cc905aae7cdbd4601ce1c296c768c13c28e66efbb913cc070bad3e4\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://5a6589b428b724721ba5b4dd196c8f366a6e694ef313add093f29af64496c042\",\"dweb:/ipfs/QmSMgV6y8L6pyyzDz6kKmafVwujNWcjTqutpCBxe4uNRqg\"]},\"contracts/facets/core/Flow.sol\":{\"keccak256\":\"0xf73b7ee6e52565f14f8d09f882a67919739d3a3b04fd01dc2232ac638887f528\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c39d6f37e9171cd4dc8941227d078dd9e4c0d016fb9e458c9e9d97aa334d9527\",\"dweb:/ipfs/QmcTjUBbuwG33bqKUPZBmdMbRrnBUJdLcf3E7J5UwYFNao\"]},\"contracts/interfaces/core/IFlow.sol\":{\"keccak256\":\"0x457048a156fdd4960d1ae29d25c23e64a009b07a4d245a28baeb76ac6becbc7c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cfe189445294f1966924fac59728c7b0df24aa97d138432dc94318eca75995ad\",\"dweb:/ipfs/QmVzE173mUK78z8W1rYvwLo5e6UU6TtKdX2AhDq2wiFWkB\"]},\"contracts/libraries/core/LibAutomate.sol\":{\"keccak256\":\"0xdca80cbbdf57dfc0f76c3719a54d2da92c09e46c3844b1011d9742a16ed2eb93\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://d5b967a7f5fa571c8154fa358725e9b5cff19b6e3847ff00e0ec210c9ce7a97b\",\"dweb:/ipfs/Qma7vn262Je4WamND9fytLSFaM4tw7NcGs5pYE1Lc3iB5a\"]},\"contracts/libraries/core/LibControl.sol\":{\"keccak256\":\"0x791dd1dc0c61948e1b1a46d190f02a041abdf6e2db26f1b436b06d8116381103\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://ec9343651044d62055789d04d464545afed31f82268dfd17703763a54441e0ec\",\"dweb:/ipfs/QmWKFYUATgubBYLZCRghkenZbjJHQwdQ8ymZVK5xBFm2QJ\"]},\"contracts/libraries/core/LibFlow.sol\":{\"keccak256\":\"0xf07903d54504fd374edbd492a084b92f9b9bd6e39846ecfcb743d9ce3031e2a7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://94b205c755a9c96ec4d8f3631cf24cb255d28b3abc65c7b2580f50a0f3c23f1c\",\"dweb:/ipfs/QmVsrQ3WzkQ9PvckGaBhd2ZDMV56wsPPZcRCGi5Qv9UXmc\"]},\"contracts/libraries/core/LibSession.sol\":{\"keccak256\":\"0x5dc6cfbe8840f7d1aa3c3920c1b7c420f27f7d7c785f4ddcb0b48072aa748648\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1094bf42c4cd9d75155a03b601321fa4d0095db76fb6c0d551cc38de8cd72031\",\"dweb:/ipfs/QmNhuWZFMJvuYUNsEzBkSnZp4hrjpR32VHMkWMTon1Q31u\"]},\"contracts/libraries/utils/IterableMappingBPS.sol\":{\"keccak256\":\"0xb6ab47a53267822918fdd13e4df79bfc1e8b2bbf921c80bbc4ad2e706e3539ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://092d19ac7ce0d7ada8fbb01d3af6822d6d8260fe8b8248e54b906a9edf381dd2\",\"dweb:/ipfs/QmZ8LZ72a2sSNfwm4Fpz54ZHVcjTe1dDy4ZrBhbNztZ1Bg\"]},\"contracts/services/gelato/Types.sol\":{\"keccak256\":\"0xcb8ce40dd420fe9d1fc258beba179e7c43560616dfd045d254a15fa75e6043e8\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://27599e8fa821421f99c2ae56716b118c4f47201d20c8475f6554395a60fc00a5\",\"dweb:/ipfs/QmS7h9jcSSZTM1icDDcFjdNgK3cFJWXFEXoJBpjfjn2a89\"]}},\"version\":1}"}},"contracts/facets/core/Session.sol":{"Session":{"abi":[{"inputs":[],"name":"ArrayLengthNotMatch","type":"error"},{"inputs":[],"name":"HasActiveFlow","type":"error"},{"inputs":[],"name":"InvalidFlowRate","type":"error"},{"inputs":[],"name":"InvalidSuperToken","type":"error"},{"inputs":[],"name":"PreviousSessionStillLive","type":"error"},{"inputs":[],"name":"SessionAlreadyEnded","type":"error"},{"inputs":[],"name":"SessionNotStarted","type":"error"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getCurrentSessionData","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"address","name":"_superToken","type":"address"}],"name":"getNewSessionNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"address","name":"_superToken","type":"address"},{"internalType":"uint256","name":"_nonce","type":"uint256"}],"name":"getSessionData","outputs":[{"internalType":"int96","name":"","type":"int96"},{"internalType":"uint96","name":"","type":"uint96"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"},{"internalType":"uint96","name":"_flowRate","type":"uint96"},{"internalType":"uint256","name":"_tag","type":"uint256"}],"name":"startSession","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_superTokens","type":"address[]"},{"internalType":"uint96[]","name":"_flowRates","type":"uint96[]"},{"internalType":"uint256[]","name":"_tags","type":"uint256[]"}],"name":"startSessions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"}],"name":"stopSession","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_superTokens","type":"address[]"}],"name":"stopSessions","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50612ecb806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806392c2226e1161005b57806392c2226e146101025780639afffbf914610132578063b233bd051461014e578063f437a7a51461016a5761007d565b806353732469146100825780637fe70a27146100b35780638ff3849b146100cf575b600080fd5b61009c60048036038101906100979190612150565b610186565b6040516100aa929190612254565b60405180910390f35b6100cd60048036038101906100c891906122f4565b61019c565b005b6100e960048036038101906100e49190612347565b6102b0565b6040516100f994939291906123c5565b60405180910390f35b61011c6004803603810190610117919061240a565b6102d2565b604051610129919061244a565b60405180910390f35b61014c600480360381019061014791906125be565b6102e6565b005b61016860048036038101906101639190612150565b61038f565b005b610184600480360381019061017f919061278d565b6103fe565b005b6000606061019383610598565b91509150915091565b6101a5836106c4565b6101b0838383610706565b60006101ba610ade565b9050428160020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055508060020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b6000806000806102c1878787610b0b565b935093509350935093509350935093565b60006102de8383610daf565b905092915050565b60005b81518110156103285761031582828151811061030857610307612834565b5b6020026020010151610e3f565b808061032090612892565b9150506102e9565b50610331610ade565b60020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008082016000905560018201600061038a9190611fd5565b505050565b61039881610e3f565b6103a0610ade565b60020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000808201600090556001820160006103f99190611fd5565b505050565b8151835114158061041157508051835114155b15610448576040517fed882f7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b83518110156104e35761047784828151811061046a57610469612834565b5b60200260200101516106c4565b6104d084828151811061048d5761048c612834565b5b60200260200101518483815181106104a8576104a7612834565b5b60200260200101518484815181106104c3576104c2612834565b5b6020026020010151610706565b80806104db90612892565b91505061044b565b5060006104ee610ade565b9050428160020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550838160020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001019080519060200190610591929190611ff6565b5050505050565b600060606105a4610ade565b60020160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546105f0610ade565b60020160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101808054806020026020016040519081016040528092919081815260200182805480156106b457602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161066a575b5050505050905091509150915091565b6106cd81611103565b610703576040517f334ae3e600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6000610710610ade565b9050600061071e3386610daf565b90506000811180156107ce575060008260010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001846107ba91906128da565b815260200190815260200160002060020154145b15610805576040517f9b90a9c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61080e85611162565b600061081b3386866111a6565b9050808360010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060000160006101000a8154816bffffffffffffffffffffffff0219169083600b0b6bffffffffffffffffffffffff160217905550848360010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000848152602001908152602001600020600001600c6101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550428360010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000848152602001908152602001600020600101819055506001610a43610ade565b60000160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610acf919061290e565b92505081905550505050505050565b6000807f9cd9afe22fea86221d6e8117226b65bb0e2af8c4f5b8abf255fb0afcad4a3a9c90508091505090565b600080600080610b19610ade565b60010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600086815260200190815260200160002060000160009054906101000a9004600b0b610bc0610ade565b60010160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878152602001908152602001600020600001600c9054906101000a90046bffffffffffffffffffffffff16610c72610ade565b60010160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088815260200190815260200160002060010154610d0c610ade565b60010160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600089815260200190815260200160002060020154935093509350935093509350935093565b6000610db9610ade565b60000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000610e4b33836112d4565b90506000610e57610ade565b60010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206001015403610f20576040517f3c2779e500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610f2a610ade565b60010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206002015414610ff3576040517fe7a7ee3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000829050600061102530338473ffffffffffffffffffffffffffffffffffffffff166113859092919063ffffffff16565b9050600081600b0b1461105f5761105d30338473ffffffffffffffffffffffffffffffffffffffff166114259092919063ffffffff16565b505b42611068610ade565b60010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008581526020019081526020016000206002018190555050505050565b600061110d6115d8565b60090160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61116c3382611605565b156111a3576040517fd18923ab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b60008060006111b36115d8565b60040160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900461ffff16905060008161ffff16111561121957809150611234565b611221611705565b15611233576112308585611725565b91505b5b60008261ffff160361124a5784925050506112cd565b61271061ffff168261ffff16866112619190612942565b6bffffffffffffffffffffffff1610156112a7576040517ffe267e4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61271061ffff168261ffff16866112be9190612942565b6112c891906129ae565b925050505b9392505050565b6000806112df610ade565b60000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081146113795760018161137491906128da565b61137c565b60005b91505092915050565b600080611391856117c3565b9150508073ffffffffffffffffffffffffffffffffffffffff1663e6a1e8888686866040518463ffffffff1660e01b81526004016113d193929190612a4d565b608060405180830381865afa1580156113ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114129190612ac5565b9091925090505080925050509392505050565b600080600061143386611a04565b915091508173ffffffffffffffffffffffffffffffffffffffff166339255d5b828373ffffffffffffffffffffffffffffffffffffffff1663b4b333c68a8a8a600067ffffffffffffffff81111561148e5761148d61247b565b5b6040519080825280601f01601f1916602001820160405280156114c05781602001600182028036833780820191505090505b506040516024016114d49493929190612bab565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050600067ffffffffffffffff8111156115315761153061247b565b5b6040519080825280601f01601f1916602001820160405280156115635781602001600182028036833780820191505090505b506040518463ffffffff1660e01b815260040161158293929190612c18565b6000604051808303816000875af11580156115a1573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906115ca9190612d03565b506001925050509392505050565b6000807f2f7ed27098ecefe70183ee38ae4542dee65215b0786f6870871034402cfe2cc990508091505090565b6000806116128484611c8b565b905060008111156116f9576000611636858560018561163191906128da565b611d1b565b93505050506000611645611e9a565b60010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001856116d191906128da565b8152602001908152602001600020600401541480156116f05750600081145b925050506116ff565b60009150505b92915050565b600061170f6115d8565b60050160009054906101000a900460ff16905090565b60008060008061173485611ec7565b925092509250816bffffffffffffffffffffffff16866bffffffffffffffffffffffff1610806117805750806bffffffffffffffffffffffff16866bffffffffffffffffffffffff1610155b156117b7576040517ffe267e4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82935050505092915050565b6000807f65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea8375491507fb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a549050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361198557600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118e8578273ffffffffffffffffffffffffffffffffffffffff166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e59190612d61565b91505b8173ffffffffffffffffffffffffffffffffffffffff1663b6d200de7fa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd36040518263ffffffff1660e01b81526004016119419190612de0565b602060405180830381865afa15801561195e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119829190612e39565b90505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119c2576119c1612e66565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036119ff576119fe612e66565b5b915091565b6000807f65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea8375491507fb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a549050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c0c57600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b29578273ffffffffffffffffffffffffffffffffffffffff166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b269190612d61565b91505b8173ffffffffffffffffffffffffffffffffffffffff1663b6d200de7fa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd36040518263ffffffff1660e01b8152600401611b829190612de0565b602060405180830381865afa158015611b9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bc39190612e39565b9050817f65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea83755807fb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a555b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c4957611c48612e66565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c8657611c85612e66565b5b915091565b6000611c95611e9a565b60000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000806000806000611d2b611e9a565b905060008160010160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008260010160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000898152602001908152602001600020600201549050611e86828a83610b0b565b965096509650965050505093509350935093565b6000807f2da2adfb54fd91bfb31e0d805792077ddcd5b0427b14a56397e2f3cc190c883090508091505090565b600080600080611eea85611ed96115d8565b600001611f0990919063ffffffff16565b9050806000015181602001518260400151935093509350509193909250565b611f11612080565b8260010160008381526020019081526020016000206040518060600160405290816000820160009054906101000a900461ffff1661ffff1661ffff1681526020016000820160029054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160008201600e9054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681525050905092915050565b5080546000825590600052602060002090810190611ff391906120c1565b50565b82805482825590600052602060002090810192821561206f579160200282015b8281111561206e5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190612016565b5b50905061207c91906120c1565b5090565b6040518060600160405280600061ffff16815260200160006bffffffffffffffffffffffff16815260200160006bffffffffffffffffffffffff1681525090565b5b808211156120da5760008160009055506001016120c2565b5090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061211d826120f2565b9050919050565b61212d81612112565b811461213857600080fd5b50565b60008135905061214a81612124565b92915050565b600060208284031215612166576121656120e8565b5b60006121748482850161213b565b91505092915050565b6000819050919050565b6121908161217d565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6121cb81612112565b82525050565b60006121dd83836121c2565b60208301905092915050565b6000602082019050919050565b600061220182612196565b61220b81856121a1565b9350612216836121b2565b8060005b8381101561224757815161222e88826121d1565b9750612239836121e9565b92505060018101905061221a565b5085935050505092915050565b60006040820190506122696000830185612187565b818103602083015261227b81846121f6565b90509392505050565b60006bffffffffffffffffffffffff82169050919050565b6122a581612284565b81146122b057600080fd5b50565b6000813590506122c28161229c565b92915050565b6122d18161217d565b81146122dc57600080fd5b50565b6000813590506122ee816122c8565b92915050565b60008060006060848603121561230d5761230c6120e8565b5b600061231b8682870161213b565b935050602061232c868287016122b3565b925050604061233d868287016122df565b9150509250925092565b6000806000606084860312156123605761235f6120e8565b5b600061236e8682870161213b565b935050602061237f8682870161213b565b9250506040612390868287016122df565b9150509250925092565b600081600b0b9050919050565b6123b08161239a565b82525050565b6123bf81612284565b82525050565b60006080820190506123da60008301876123a7565b6123e760208301866123b6565b6123f46040830185612187565b6124016060830184612187565b95945050505050565b60008060408385031215612421576124206120e8565b5b600061242f8582860161213b565b92505060206124408582860161213b565b9150509250929050565b600060208201905061245f6000830184612187565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6124b38261246a565b810181811067ffffffffffffffff821117156124d2576124d161247b565b5b80604052505050565b60006124e56120de565b90506124f182826124aa565b919050565b600067ffffffffffffffff8211156125115761251061247b565b5b602082029050602081019050919050565b600080fd5b600061253a612535846124f6565b6124db565b9050808382526020820190506020840283018581111561255d5761255c612522565b5b835b818110156125865780612572888261213b565b84526020840193505060208101905061255f565b5050509392505050565b600082601f8301126125a5576125a4612465565b5b81356125b5848260208601612527565b91505092915050565b6000602082840312156125d4576125d36120e8565b5b600082013567ffffffffffffffff8111156125f2576125f16120ed565b5b6125fe84828501612590565b91505092915050565b600067ffffffffffffffff8211156126225761262161247b565b5b602082029050602081019050919050565b600061264661264184612607565b6124db565b9050808382526020820190506020840283018581111561266957612668612522565b5b835b81811015612692578061267e88826122b3565b84526020840193505060208101905061266b565b5050509392505050565b600082601f8301126126b1576126b0612465565b5b81356126c1848260208601612633565b91505092915050565b600067ffffffffffffffff8211156126e5576126e461247b565b5b602082029050602081019050919050565b6000612709612704846126ca565b6124db565b9050808382526020820190506020840283018581111561272c5761272b612522565b5b835b81811015612755578061274188826122df565b84526020840193505060208101905061272e565b5050509392505050565b600082601f83011261277457612773612465565b5b81356127848482602086016126f6565b91505092915050565b6000806000606084860312156127a6576127a56120e8565b5b600084013567ffffffffffffffff8111156127c4576127c36120ed565b5b6127d086828701612590565b935050602084013567ffffffffffffffff8111156127f1576127f06120ed565b5b6127fd8682870161269c565b925050604084013567ffffffffffffffff81111561281e5761281d6120ed565b5b61282a8682870161275f565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061289d8261217d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036128cf576128ce612863565b5b600182019050919050565b60006128e58261217d565b91506128f08361217d565b925082820390508181111561290857612907612863565b5b92915050565b60006129198261217d565b91506129248361217d565b925082820190508082111561293c5761293b612863565b5b92915050565b600061294d82612284565b915061295883612284565b925082820261296681612284565b915080821461297857612977612863565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006129b982612284565b91506129c483612284565b9250826129d4576129d361297f565b5b828204905092915050565b6000819050919050565b6000612a046129ff6129fa846120f2565b6129df565b6120f2565b9050919050565b6000612a16826129e9565b9050919050565b6000612a2882612a0b565b9050919050565b612a3881612a1d565b82525050565b612a4781612112565b82525050565b6000606082019050612a626000830186612a2f565b612a6f6020830185612a3e565b612a7c6040830184612a3e565b949350505050565b600081519050612a93816122c8565b92915050565b612aa28161239a565b8114612aad57600080fd5b50565b600081519050612abf81612a99565b92915050565b60008060008060808587031215612adf57612ade6120e8565b5b6000612aed87828801612a84565b9450506020612afe87828801612ab0565b9350506040612b0f87828801612a84565b9250506060612b2087828801612a84565b91505092959194509250565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b66578082015181840152602081019050612b4b565b60008484015250505050565b6000612b7d82612b2c565b612b878185612b37565b9350612b97818560208601612b48565b612ba08161246a565b840191505092915050565b6000608082019050612bc06000830187612a2f565b612bcd6020830186612a3e565b612bda6040830185612a3e565b8181036060830152612bec8184612b72565b905095945050505050565b6000612c0282612a0b565b9050919050565b612c1281612bf7565b82525050565b6000606082019050612c2d6000830186612c09565b8181036020830152612c3f8185612b72565b90508181036040830152612c538184612b72565b9050949350505050565b600080fd5b600067ffffffffffffffff821115612c7d57612c7c61247b565b5b612c868261246a565b9050602081019050919050565b6000612ca6612ca184612c62565b6124db565b905082815260208101848484011115612cc257612cc1612c5d565b5b612ccd848285612b48565b509392505050565b600082601f830112612cea57612ce9612465565b5b8151612cfa848260208601612c93565b91505092915050565b600060208284031215612d1957612d186120e8565b5b600082015167ffffffffffffffff811115612d3757612d366120ed565b5b612d4384828501612cd5565b91505092915050565b600081519050612d5b81612124565b92915050565b600060208284031215612d7757612d766120e8565b5b6000612d8584828501612d4c565b91505092915050565b6000819050919050565b6000819050919050565b60008160001b9050919050565b6000612dca612dc5612dc084612d8e565b612da2565b612d98565b9050919050565b612dda81612daf565b82525050565b6000602082019050612df56000830184612dd1565b92915050565b6000612e0682612112565b9050919050565b612e1681612dfb565b8114612e2157600080fd5b50565b600081519050612e3381612e0d565b92915050565b600060208284031215612e4f57612e4e6120e8565b5b6000612e5d84828501612e24565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fdfea2646970667358221220526bbb49d3cca825be942d7186eceea4b40931ece8a0d3455aa14dfb7b504c2d64736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2ECB DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x92C2226E GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x92C2226E EQ PUSH2 0x102 JUMPI DUP1 PUSH4 0x9AFFFBF9 EQ PUSH2 0x132 JUMPI DUP1 PUSH4 0xB233BD05 EQ PUSH2 0x14E JUMPI DUP1 PUSH4 0xF437A7A5 EQ PUSH2 0x16A JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x53732469 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x7FE70A27 EQ PUSH2 0xB3 JUMPI DUP1 PUSH4 0x8FF3849B EQ PUSH2 0xCF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x97 SWAP2 SWAP1 PUSH2 0x2150 JUMP JUMPDEST PUSH2 0x186 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAA SWAP3 SWAP2 SWAP1 PUSH2 0x2254 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xCD PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xC8 SWAP2 SWAP1 PUSH2 0x22F4 JUMP JUMPDEST PUSH2 0x19C JUMP JUMPDEST STOP JUMPDEST PUSH2 0xE9 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xE4 SWAP2 SWAP1 PUSH2 0x2347 JUMP JUMPDEST PUSH2 0x2B0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF9 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x23C5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x11C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x117 SWAP2 SWAP1 PUSH2 0x240A JUMP JUMPDEST PUSH2 0x2D2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x129 SWAP2 SWAP1 PUSH2 0x244A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x14C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x147 SWAP2 SWAP1 PUSH2 0x25BE JUMP JUMPDEST PUSH2 0x2E6 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x168 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x163 SWAP2 SWAP1 PUSH2 0x2150 JUMP JUMPDEST PUSH2 0x38F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x17F SWAP2 SWAP1 PUSH2 0x278D JUMP JUMPDEST PUSH2 0x3FE JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH2 0x193 DUP4 PUSH2 0x598 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH2 0x1A5 DUP4 PUSH2 0x6C4 JUMP JUMPDEST PUSH2 0x1B0 DUP4 DUP4 DUP4 PUSH2 0x706 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BA PUSH2 0xADE JUMP JUMPDEST SWAP1 POP TIMESTAMP DUP2 PUSH1 0x2 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x2 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD DUP5 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x2C1 DUP8 DUP8 DUP8 PUSH2 0xB0B JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2DE DUP4 DUP4 PUSH2 0xDAF JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x328 JUMPI PUSH2 0x315 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x308 JUMPI PUSH2 0x307 PUSH2 0x2834 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0xE3F JUMP JUMPDEST DUP1 DUP1 PUSH2 0x320 SWAP1 PUSH2 0x2892 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x2E9 JUMP JUMPDEST POP PUSH2 0x331 PUSH2 0xADE JUMP JUMPDEST PUSH1 0x2 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP1 DUP3 ADD PUSH1 0x0 SWAP1 SSTORE PUSH1 0x1 DUP3 ADD PUSH1 0x0 PUSH2 0x38A SWAP2 SWAP1 PUSH2 0x1FD5 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x398 DUP2 PUSH2 0xE3F JUMP JUMPDEST PUSH2 0x3A0 PUSH2 0xADE JUMP JUMPDEST PUSH1 0x2 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP1 DUP3 ADD PUSH1 0x0 SWAP1 SSTORE PUSH1 0x1 DUP3 ADD PUSH1 0x0 PUSH2 0x3F9 SWAP2 SWAP1 PUSH2 0x1FD5 JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP4 MLOAD EQ ISZERO DUP1 PUSH2 0x411 JUMPI POP DUP1 MLOAD DUP4 MLOAD EQ ISZERO JUMPDEST ISZERO PUSH2 0x448 JUMPI PUSH1 0x40 MLOAD PUSH32 0xED882F7100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x4E3 JUMPI PUSH2 0x477 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x46A JUMPI PUSH2 0x469 PUSH2 0x2834 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x6C4 JUMP JUMPDEST PUSH2 0x4D0 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x48D JUMPI PUSH2 0x48C PUSH2 0x2834 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x4A8 JUMPI PUSH2 0x4A7 PUSH2 0x2834 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x4C3 JUMPI PUSH2 0x4C2 PUSH2 0x2834 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x706 JUMP JUMPDEST DUP1 DUP1 PUSH2 0x4DB SWAP1 PUSH2 0x2892 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x44B JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x4EE PUSH2 0xADE JUMP JUMPDEST SWAP1 POP TIMESTAMP DUP2 PUSH1 0x2 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP2 SWAP1 SSTORE POP DUP4 DUP2 PUSH1 0x2 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x591 SWAP3 SWAP2 SWAP1 PUSH2 0x1FF6 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH2 0x5A4 PUSH2 0xADE JUMP JUMPDEST PUSH1 0x2 ADD PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD SLOAD PUSH2 0x5F0 PUSH2 0xADE JUMP JUMPDEST PUSH1 0x2 ADD PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD DUP1 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x6B4 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH2 0x66A JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 POP SWAP2 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH2 0x6CD DUP2 PUSH2 0x1103 JUMP JUMPDEST PUSH2 0x703 JUMPI PUSH1 0x40 MLOAD PUSH32 0x334AE3E600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x710 PUSH2 0xADE JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x71E CALLER DUP7 PUSH2 0xDAF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 GT DUP1 ISZERO PUSH2 0x7CE JUMPI POP PUSH1 0x0 DUP3 PUSH1 0x1 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH1 0x1 DUP5 PUSH2 0x7BA SWAP2 SWAP1 PUSH2 0x28DA JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD SLOAD EQ JUMPDEST ISZERO PUSH2 0x805 JUMPI PUSH1 0x40 MLOAD PUSH32 0x9B90A9C600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x80E DUP6 PUSH2 0x1162 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x81B CALLER DUP7 DUP7 PUSH2 0x11A6 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 PUSH1 0x1 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0xB SIGNEXTEND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP5 DUP4 PUSH1 0x1 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0xC PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP TIMESTAMP DUP4 PUSH1 0x1 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP PUSH1 0x1 PUSH2 0xA43 PUSH2 0xADE JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xACF SWAP2 SWAP1 PUSH2 0x290E JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x9CD9AFE22FEA86221D6E8117226B65BB0E2AF8C4F5B8ABF255FB0AFCAD4A3A9C SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0xB19 PUSH2 0xADE JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xB SIGNEXTEND PUSH2 0xBC0 PUSH2 0xADE JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0xC SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xC72 PUSH2 0xADE JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0xD0C PUSH2 0xADE JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDB9 PUSH2 0xADE JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE4B CALLER DUP4 PUSH2 0x12D4 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xE57 PUSH2 0xADE JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD SLOAD SUB PUSH2 0xF20 JUMPI PUSH1 0x40 MLOAD PUSH32 0x3C2779E500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xF2A PUSH2 0xADE JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD SLOAD EQ PUSH2 0xFF3 JUMPI PUSH1 0x40 MLOAD PUSH32 0xE7A7EE3800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 SWAP1 POP PUSH1 0x0 PUSH2 0x1025 ADDRESS CALLER DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1385 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0xB SIGNEXTEND EQ PUSH2 0x105F JUMPI PUSH2 0x105D ADDRESS CALLER DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1425 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP JUMPDEST TIMESTAMP PUSH2 0x1068 PUSH2 0xADE JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD DUP2 SWAP1 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x110D PUSH2 0x15D8 JUMP JUMPDEST PUSH1 0x9 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x116C CALLER DUP3 PUSH2 0x1605 JUMP JUMPDEST ISZERO PUSH2 0x11A3 JUMPI PUSH1 0x40 MLOAD PUSH32 0xD18923AB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x11B3 PUSH2 0x15D8 JUMP JUMPDEST PUSH1 0x4 ADD PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH2 0xFFFF AND SWAP1 POP PUSH1 0x0 DUP2 PUSH2 0xFFFF AND GT ISZERO PUSH2 0x1219 JUMPI DUP1 SWAP2 POP PUSH2 0x1234 JUMP JUMPDEST PUSH2 0x1221 PUSH2 0x1705 JUMP JUMPDEST ISZERO PUSH2 0x1233 JUMPI PUSH2 0x1230 DUP6 DUP6 PUSH2 0x1725 JUMP JUMPDEST SWAP2 POP JUMPDEST JUMPDEST PUSH1 0x0 DUP3 PUSH2 0xFFFF AND SUB PUSH2 0x124A JUMPI DUP5 SWAP3 POP POP POP PUSH2 0x12CD JUMP JUMPDEST PUSH2 0x2710 PUSH2 0xFFFF AND DUP3 PUSH2 0xFFFF AND DUP7 PUSH2 0x1261 SWAP2 SWAP1 PUSH2 0x2942 JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND LT ISZERO PUSH2 0x12A7 JUMPI PUSH1 0x40 MLOAD PUSH32 0xFE267E4200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2710 PUSH2 0xFFFF AND DUP3 PUSH2 0xFFFF AND DUP7 PUSH2 0x12BE SWAP2 SWAP1 PUSH2 0x2942 JUMP JUMPDEST PUSH2 0x12C8 SWAP2 SWAP1 PUSH2 0x29AE JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x12DF PUSH2 0xADE JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH1 0x0 DUP2 EQ PUSH2 0x1379 JUMPI PUSH1 0x1 DUP2 PUSH2 0x1374 SWAP2 SWAP1 PUSH2 0x28DA JUMP JUMPDEST PUSH2 0x137C JUMP JUMPDEST PUSH1 0x0 JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1391 DUP6 PUSH2 0x17C3 JUMP JUMPDEST SWAP2 POP POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xE6A1E888 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x13D1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2A4D JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x13EE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1412 SWAP2 SWAP1 PUSH2 0x2AC5 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 POP SWAP1 POP POP DUP1 SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1433 DUP7 PUSH2 0x1A04 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x39255D5B DUP3 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xB4B333C6 DUP11 DUP11 DUP11 PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x148E JUMPI PUSH2 0x148D PUSH2 0x247B JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x14C0 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x14D4 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2BAB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1531 JUMPI PUSH2 0x1530 PUSH2 0x247B JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1563 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1582 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2C18 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x15A1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x15CA SWAP2 SWAP1 PUSH2 0x2D03 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x2F7ED27098ECEFE70183EE38AE4542DEE65215B0786F6870871034402CFE2CC9 SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1612 DUP5 DUP5 PUSH2 0x1C8B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 GT ISZERO PUSH2 0x16F9 JUMPI PUSH1 0x0 PUSH2 0x1636 DUP6 DUP6 PUSH1 0x1 DUP6 PUSH2 0x1631 SWAP2 SWAP1 PUSH2 0x28DA JUMP JUMPDEST PUSH2 0x1D1B JUMP JUMPDEST SWAP4 POP POP POP POP PUSH1 0x0 PUSH2 0x1645 PUSH2 0x1E9A JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH1 0x1 DUP6 PUSH2 0x16D1 SWAP2 SWAP1 PUSH2 0x28DA JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD SLOAD EQ DUP1 ISZERO PUSH2 0x16F0 JUMPI POP PUSH1 0x0 DUP2 EQ JUMPDEST SWAP3 POP POP POP PUSH2 0x16FF JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x170F PUSH2 0x15D8 JUMP JUMPDEST PUSH1 0x5 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x1734 DUP6 PUSH2 0x1EC7 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND LT DUP1 PUSH2 0x1780 JUMPI POP DUP1 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND LT ISZERO JUMPDEST ISZERO PUSH2 0x17B7 JUMPI PUSH1 0x40 MLOAD PUSH32 0xFE267E4200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x65599BF746E17A00EA62E3610586992D88101B78EEC3CF380706621FB97EA837 SLOAD SWAP2 POP PUSH32 0xB969D79D88ACD02D04ED7EE7D43B949E7DAF093D363ABCFBBC43DFDFD1CE969A SLOAD SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1985 JUMPI PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x18E8 JUMPI DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x20BC4425 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x18C1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x18E5 SWAP2 SWAP1 PUSH2 0x2D61 JUMP JUMPDEST SWAP2 POP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xB6D200DE PUSH32 0xA9214CC96615E0085D3BB077758DB69497DC2DCE3B2B1E97BC93C3D18D83EFD3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1941 SWAP2 SWAP1 PUSH2 0x2DE0 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x195E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1982 SWAP2 SWAP1 PUSH2 0x2E39 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x19C2 JUMPI PUSH2 0x19C1 PUSH2 0x2E66 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x19FF JUMPI PUSH2 0x19FE PUSH2 0x2E66 JUMP JUMPDEST JUMPDEST SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x65599BF746E17A00EA62E3610586992D88101B78EEC3CF380706621FB97EA837 SLOAD SWAP2 POP PUSH32 0xB969D79D88ACD02D04ED7EE7D43B949E7DAF093D363ABCFBBC43DFDFD1CE969A SLOAD SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1C0C JUMPI PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1B29 JUMPI DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x20BC4425 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1B02 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1B26 SWAP2 SWAP1 PUSH2 0x2D61 JUMP JUMPDEST SWAP2 POP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xB6D200DE PUSH32 0xA9214CC96615E0085D3BB077758DB69497DC2DCE3B2B1E97BC93C3D18D83EFD3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1B82 SWAP2 SWAP1 PUSH2 0x2DE0 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1B9F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1BC3 SWAP2 SWAP1 PUSH2 0x2E39 JUMP JUMPDEST SWAP1 POP DUP2 PUSH32 0x65599BF746E17A00EA62E3610586992D88101B78EEC3CF380706621FB97EA837 SSTORE DUP1 PUSH32 0xB969D79D88ACD02D04ED7EE7D43B949E7DAF093D363ABCFBBC43DFDFD1CE969A SSTORE JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1C49 JUMPI PUSH2 0x1C48 PUSH2 0x2E66 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1C86 JUMPI PUSH2 0x1C85 PUSH2 0x2E66 JUMP JUMPDEST JUMPDEST SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C95 PUSH2 0x1E9A JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1D2B PUSH2 0x1E9A JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x1 ADD PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x1 ADD PUSH1 0x0 DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP1 POP PUSH2 0x1E86 DUP3 DUP11 DUP4 PUSH2 0xB0B JUMP JUMPDEST SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP POP POP POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x2DA2ADFB54FD91BFB31E0D805792077DDCD5B0427B14A56397E2F3CC190C8830 SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x1EEA DUP6 PUSH2 0x1ED9 PUSH2 0x15D8 JUMP JUMPDEST PUSH1 0x0 ADD PUSH2 0x1F09 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x0 ADD MLOAD DUP2 PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x40 ADD MLOAD SWAP4 POP SWAP4 POP SWAP4 POP POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH2 0x1F11 PUSH2 0x2080 JUMP JUMPDEST DUP3 PUSH1 0x1 ADD PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH2 0xFFFF AND PUSH2 0xFFFF AND PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP3 ADD PUSH1 0x2 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP3 ADD PUSH1 0xE SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST POP DUP1 SLOAD PUSH1 0x0 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1FF3 SWAP2 SWAP1 PUSH2 0x20C1 JUMP JUMPDEST POP JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x206F JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x206E JUMPI DUP3 MLOAD DUP3 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x2016 JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x207C SWAP2 SWAP1 PUSH2 0x20C1 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x20DA JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH2 0x20C2 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x211D DUP3 PUSH2 0x20F2 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x212D DUP2 PUSH2 0x2112 JUMP JUMPDEST DUP2 EQ PUSH2 0x2138 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x214A DUP2 PUSH2 0x2124 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2166 JUMPI PUSH2 0x2165 PUSH2 0x20E8 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2174 DUP5 DUP3 DUP6 ADD PUSH2 0x213B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2190 DUP2 PUSH2 0x217D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x21CB DUP2 PUSH2 0x2112 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x21DD DUP4 DUP4 PUSH2 0x21C2 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2201 DUP3 PUSH2 0x2196 JUMP JUMPDEST PUSH2 0x220B DUP2 DUP6 PUSH2 0x21A1 JUMP JUMPDEST SWAP4 POP PUSH2 0x2216 DUP4 PUSH2 0x21B2 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2247 JUMPI DUP2 MLOAD PUSH2 0x222E DUP9 DUP3 PUSH2 0x21D1 JUMP JUMPDEST SWAP8 POP PUSH2 0x2239 DUP4 PUSH2 0x21E9 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x221A JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x2269 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x2187 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x227B DUP2 DUP5 PUSH2 0x21F6 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x22A5 DUP2 PUSH2 0x2284 JUMP JUMPDEST DUP2 EQ PUSH2 0x22B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x22C2 DUP2 PUSH2 0x229C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x22D1 DUP2 PUSH2 0x217D JUMP JUMPDEST DUP2 EQ PUSH2 0x22DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x22EE DUP2 PUSH2 0x22C8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x230D JUMPI PUSH2 0x230C PUSH2 0x20E8 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x231B DUP7 DUP3 DUP8 ADD PUSH2 0x213B JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x232C DUP7 DUP3 DUP8 ADD PUSH2 0x22B3 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x233D DUP7 DUP3 DUP8 ADD PUSH2 0x22DF JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2360 JUMPI PUSH2 0x235F PUSH2 0x20E8 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x236E DUP7 DUP3 DUP8 ADD PUSH2 0x213B JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x237F DUP7 DUP3 DUP8 ADD PUSH2 0x213B JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x2390 DUP7 DUP3 DUP8 ADD PUSH2 0x22DF JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0xB SIGNEXTEND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x23B0 DUP2 PUSH2 0x239A JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x23BF DUP2 PUSH2 0x2284 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x23DA PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x23A7 JUMP JUMPDEST PUSH2 0x23E7 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x23B6 JUMP JUMPDEST PUSH2 0x23F4 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x2187 JUMP JUMPDEST PUSH2 0x2401 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x2187 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2421 JUMPI PUSH2 0x2420 PUSH2 0x20E8 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x242F DUP6 DUP3 DUP7 ADD PUSH2 0x213B JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x2440 DUP6 DUP3 DUP7 ADD PUSH2 0x213B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x245F PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2187 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x24B3 DUP3 PUSH2 0x246A JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x24D2 JUMPI PUSH2 0x24D1 PUSH2 0x247B JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x24E5 PUSH2 0x20DE JUMP JUMPDEST SWAP1 POP PUSH2 0x24F1 DUP3 DUP3 PUSH2 0x24AA JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2511 JUMPI PUSH2 0x2510 PUSH2 0x247B JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x253A PUSH2 0x2535 DUP5 PUSH2 0x24F6 JUMP JUMPDEST PUSH2 0x24DB JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x255D JUMPI PUSH2 0x255C PUSH2 0x2522 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2586 JUMPI DUP1 PUSH2 0x2572 DUP9 DUP3 PUSH2 0x213B JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x255F JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x25A5 JUMPI PUSH2 0x25A4 PUSH2 0x2465 JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x25B5 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x2527 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x25D4 JUMPI PUSH2 0x25D3 PUSH2 0x20E8 JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x25F2 JUMPI PUSH2 0x25F1 PUSH2 0x20ED JUMP JUMPDEST JUMPDEST PUSH2 0x25FE DUP5 DUP3 DUP6 ADD PUSH2 0x2590 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2622 JUMPI PUSH2 0x2621 PUSH2 0x247B JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2646 PUSH2 0x2641 DUP5 PUSH2 0x2607 JUMP JUMPDEST PUSH2 0x24DB JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x2669 JUMPI PUSH2 0x2668 PUSH2 0x2522 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2692 JUMPI DUP1 PUSH2 0x267E DUP9 DUP3 PUSH2 0x22B3 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x266B JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x26B1 JUMPI PUSH2 0x26B0 PUSH2 0x2465 JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x26C1 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x2633 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x26E5 JUMPI PUSH2 0x26E4 PUSH2 0x247B JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2709 PUSH2 0x2704 DUP5 PUSH2 0x26CA JUMP JUMPDEST PUSH2 0x24DB JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x272C JUMPI PUSH2 0x272B PUSH2 0x2522 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2755 JUMPI DUP1 PUSH2 0x2741 DUP9 DUP3 PUSH2 0x22DF JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x272E JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2774 JUMPI PUSH2 0x2773 PUSH2 0x2465 JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2784 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x26F6 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x27A6 JUMPI PUSH2 0x27A5 PUSH2 0x20E8 JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x27C4 JUMPI PUSH2 0x27C3 PUSH2 0x20ED JUMP JUMPDEST JUMPDEST PUSH2 0x27D0 DUP7 DUP3 DUP8 ADD PUSH2 0x2590 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x27F1 JUMPI PUSH2 0x27F0 PUSH2 0x20ED JUMP JUMPDEST JUMPDEST PUSH2 0x27FD DUP7 DUP3 DUP8 ADD PUSH2 0x269C JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x281E JUMPI PUSH2 0x281D PUSH2 0x20ED JUMP JUMPDEST JUMPDEST PUSH2 0x282A DUP7 DUP3 DUP8 ADD PUSH2 0x275F JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x289D DUP3 PUSH2 0x217D JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x28CF JUMPI PUSH2 0x28CE PUSH2 0x2863 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x28E5 DUP3 PUSH2 0x217D JUMP JUMPDEST SWAP2 POP PUSH2 0x28F0 DUP4 PUSH2 0x217D JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP DUP2 DUP2 GT ISZERO PUSH2 0x2908 JUMPI PUSH2 0x2907 PUSH2 0x2863 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2919 DUP3 PUSH2 0x217D JUMP JUMPDEST SWAP2 POP PUSH2 0x2924 DUP4 PUSH2 0x217D JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x293C JUMPI PUSH2 0x293B PUSH2 0x2863 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x294D DUP3 PUSH2 0x2284 JUMP JUMPDEST SWAP2 POP PUSH2 0x2958 DUP4 PUSH2 0x2284 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 MUL PUSH2 0x2966 DUP2 PUSH2 0x2284 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 EQ PUSH2 0x2978 JUMPI PUSH2 0x2977 PUSH2 0x2863 JUMP JUMPDEST JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x29B9 DUP3 PUSH2 0x2284 JUMP JUMPDEST SWAP2 POP PUSH2 0x29C4 DUP4 PUSH2 0x2284 JUMP JUMPDEST SWAP3 POP DUP3 PUSH2 0x29D4 JUMPI PUSH2 0x29D3 PUSH2 0x297F JUMP JUMPDEST JUMPDEST DUP3 DUP3 DIV SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2A04 PUSH2 0x29FF PUSH2 0x29FA DUP5 PUSH2 0x20F2 JUMP JUMPDEST PUSH2 0x29DF JUMP JUMPDEST PUSH2 0x20F2 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2A16 DUP3 PUSH2 0x29E9 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2A28 DUP3 PUSH2 0x2A0B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2A38 DUP2 PUSH2 0x2A1D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x2A47 DUP2 PUSH2 0x2112 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x2A62 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x2A2F JUMP JUMPDEST PUSH2 0x2A6F PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x2A3E JUMP JUMPDEST PUSH2 0x2A7C PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x2A3E JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x2A93 DUP2 PUSH2 0x22C8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2AA2 DUP2 PUSH2 0x239A JUMP JUMPDEST DUP2 EQ PUSH2 0x2AAD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x2ABF DUP2 PUSH2 0x2A99 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x2ADF JUMPI PUSH2 0x2ADE PUSH2 0x20E8 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2AED DUP8 DUP3 DUP9 ADD PUSH2 0x2A84 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x2AFE DUP8 DUP3 DUP9 ADD PUSH2 0x2AB0 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x2B0F DUP8 DUP3 DUP9 ADD PUSH2 0x2A84 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x2B20 DUP8 DUP3 DUP9 ADD PUSH2 0x2A84 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2B66 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x2B4B JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B7D DUP3 PUSH2 0x2B2C JUMP JUMPDEST PUSH2 0x2B87 DUP2 DUP6 PUSH2 0x2B37 JUMP JUMPDEST SWAP4 POP PUSH2 0x2B97 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x2B48 JUMP JUMPDEST PUSH2 0x2BA0 DUP2 PUSH2 0x246A JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x2BC0 PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x2A2F JUMP JUMPDEST PUSH2 0x2BCD PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x2A3E JUMP JUMPDEST PUSH2 0x2BDA PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x2A3E JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x2BEC DUP2 DUP5 PUSH2 0x2B72 JUMP JUMPDEST SWAP1 POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C02 DUP3 PUSH2 0x2A0B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2C12 DUP2 PUSH2 0x2BF7 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x2C2D PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x2C09 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x2C3F DUP2 DUP6 PUSH2 0x2B72 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x2C53 DUP2 DUP5 PUSH2 0x2B72 JUMP JUMPDEST SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2C7D JUMPI PUSH2 0x2C7C PUSH2 0x247B JUMP JUMPDEST JUMPDEST PUSH2 0x2C86 DUP3 PUSH2 0x246A JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2CA6 PUSH2 0x2CA1 DUP5 PUSH2 0x2C62 JUMP JUMPDEST PUSH2 0x24DB JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x2CC2 JUMPI PUSH2 0x2CC1 PUSH2 0x2C5D JUMP JUMPDEST JUMPDEST PUSH2 0x2CCD DUP5 DUP3 DUP6 PUSH2 0x2B48 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2CEA JUMPI PUSH2 0x2CE9 PUSH2 0x2465 JUMP JUMPDEST JUMPDEST DUP2 MLOAD PUSH2 0x2CFA DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x2C93 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2D19 JUMPI PUSH2 0x2D18 PUSH2 0x20E8 JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP3 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2D37 JUMPI PUSH2 0x2D36 PUSH2 0x20ED JUMP JUMPDEST JUMPDEST PUSH2 0x2D43 DUP5 DUP3 DUP6 ADD PUSH2 0x2CD5 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x2D5B DUP2 PUSH2 0x2124 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2D77 JUMPI PUSH2 0x2D76 PUSH2 0x20E8 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2D85 DUP5 DUP3 DUP6 ADD PUSH2 0x2D4C JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 SHL SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2DCA PUSH2 0x2DC5 PUSH2 0x2DC0 DUP5 PUSH2 0x2D8E JUMP JUMPDEST PUSH2 0x2DA2 JUMP JUMPDEST PUSH2 0x2D98 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2DDA DUP2 PUSH2 0x2DAF JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2DF5 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2DD1 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E06 DUP3 PUSH2 0x2112 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2E16 DUP2 PUSH2 0x2DFB JUMP JUMPDEST DUP2 EQ PUSH2 0x2E21 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x2E33 DUP2 PUSH2 0x2E0D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2E4F JUMPI PUSH2 0x2E4E PUSH2 0x20E8 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2E5D DUP5 DUP3 DUP6 ADD PUSH2 0x2E24 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MSTORE PUSH12 0xBB49D3CCA825BE942D7186EC 0xEE LOG4 0xB4 MULMOD BALANCE 0xEC 0xE8 LOG0 0xD3 GASLIMIT GAS LOG1 0x4D 0xFB PUSH28 0x504C2D64736F6C634300081200330000000000000000000000000000 ","sourceMap":"273:3383:24:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_getAndCacheHostAndCFA_4827":{"entryPoint":6660,"id":4827,"parameterSlots":1,"returnSlots":2},"@_getBPSData_12430":{"entryPoint":7879,"id":12430,"parameterSlots":1,"returnSlots":3},"@_getCurrentNonce_13985":{"entryPoint":4820,"id":13985,"parameterSlots":2,"returnSlots":1},"@_getCurrentSessionData_14010":{"entryPoint":1432,"id":14010,"parameterSlots":1,"returnSlots":2},"@_getEffectiveFlowRate_13938":{"entryPoint":4518,"id":13938,"parameterSlots":3,"returnSlots":1},"@_getHostAndCFA_4994":{"entryPoint":6083,"id":4994,"parameterSlots":1,"returnSlots":2},"@_getNewNonce_13258":{"entryPoint":7307,"id":13258,"parameterSlots":2,"returnSlots":1},"@_getNewNonce_13956":{"entryPoint":3503,"id":13956,"parameterSlots":2,"returnSlots":1},"@_getSessionDataFromFlow_14127":{"entryPoint":7451,"id":14127,"parameterSlots":3,"returnSlots":4},"@_getSessionData_14070":{"entryPoint":2827,"id":14070,"parameterSlots":3,"returnSlots":4},"@_getValidBPS_12400":{"entryPoint":5925,"id":12400,"parameterSlots":2,"returnSlots":1},"@_hasActiveFlow_13110":{"entryPoint":5637,"id":13110,"parameterSlots":2,"returnSlots":1},"@_isBPSEnabled_12355":{"entryPoint":5893,"id":12355,"parameterSlots":0,"returnSlots":1},"@_isSuperTokensSupported_12345":{"entryPoint":4355,"id":12345,"parameterSlots":1,"returnSlots":1},"@_requireNoActiveFlow_12763":{"entryPoint":4450,"id":12763,"parameterSlots":1,"returnSlots":0},"@_requireSuperTokenSupported_12003":{"entryPoint":1732,"id":12003,"parameterSlots":1,"returnSlots":0},"@_startSession_13762":{"entryPoint":1798,"id":13762,"parameterSlots":3,"returnSlots":0},"@_stopSession_13859":{"entryPoint":3647,"id":13859,"parameterSlots":1,"returnSlots":0},"@_storageControl_11680":{"entryPoint":5592,"id":11680,"parameterSlots":0,"returnSlots":1},"@_storageFlow_12644":{"entryPoint":7834,"id":12644,"parameterSlots":0,"returnSlots":1},"@_storageSession_13646":{"entryPoint":2782,"id":13646,"parameterSlots":0,"returnSlots":1},"@deleteFlow_2180":{"entryPoint":5157,"id":2180,"parameterSlots":3,"returnSlots":1},"@getCurrentSessionData_10564":{"entryPoint":390,"id":10564,"parameterSlots":1,"returnSlots":2},"@getFlowRate_3206":{"entryPoint":4997,"id":3206,"parameterSlots":3,"returnSlots":1},"@getNewSessionNonce_10523":{"entryPoint":722,"id":10523,"parameterSlots":2,"returnSlots":1},"@getSessionData_10548":{"entryPoint":688,"id":10548,"parameterSlots":3,"returnSlots":4},"@get_14222":{"entryPoint":7945,"id":14222,"parameterSlots":2,"returnSlots":1},"@startSession_10356":{"entryPoint":412,"id":10356,"parameterSlots":3,"returnSlots":0},"@startSessions_10470":{"entryPoint":1022,"id":10470,"parameterSlots":3,"returnSlots":0},"@stopSession_10377":{"entryPoint":911,"id":10377,"parameterSlots":1,"returnSlots":0},"@stopSessions_10507":{"entryPoint":742,"id":10507,"parameterSlots":1,"returnSlots":0},"abi_decode_available_length_t_array$_t_address_$dyn_memory_ptr":{"entryPoint":9511,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr":{"entryPoint":9974,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_available_length_t_array$_t_uint96_$dyn_memory_ptr":{"entryPoint":9779,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_available_length_t_bytes_memory_ptr_fromMemory":{"entryPoint":11411,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_t_address":{"entryPoint":8507,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_address_fromMemory":{"entryPoint":11596,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_array$_t_address_$dyn_memory_ptr":{"entryPoint":9616,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_array$_t_uint256_$dyn_memory_ptr":{"entryPoint":10079,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_array$_t_uint96_$dyn_memory_ptr":{"entryPoint":9884,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes_memory_ptr_fromMemory":{"entryPoint":11477,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_contract$_ISuperAgreement_$6395_fromMemory":{"entryPoint":11812,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_int96_fromMemory":{"entryPoint":10928,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint256":{"entryPoint":8927,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint256_fromMemory":{"entryPoint":10884,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint96":{"entryPoint":8883,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":8528,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":11617,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":9226,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":9031,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_uint96t_uint256":{"entryPoint":8948,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_array$_t_address_$dyn_memory_ptr":{"entryPoint":9662,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint96_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr":{"entryPoint":10125,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_bytes_memory_ptr_fromMemory":{"entryPoint":11523,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_ISuperAgreement_$6395_fromMemory":{"entryPoint":11833,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256t_int96t_uint256t_uint256_fromMemory":{"entryPoint":10949,"id":null,"parameterSlots":2,"returnSlots":4},"abi_encodeUpdatedPos_t_address_to_t_address":{"entryPoint":8657,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_address_to_t_address":{"entryPoint":8642,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_address_to_t_address_fromStack":{"entryPoint":10814,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_array$_t_address_$dyn_memory_ptr_to_t_array$_t_address_$dyn_memory_ptr_fromStack":{"entryPoint":8694,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack":{"entryPoint":11122,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_contract$_IConstantFlowAgreementV1_$5487_to_t_address_fromStack":{"entryPoint":11273,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_contract$_ISuperToken_$6947_to_t_address_fromStack":{"entryPoint":10799,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_int96_to_t_int96_fromStack":{"entryPoint":9127,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1_to_t_bytes32_fromStack":{"entryPoint":11729,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_uint256_to_t_uint256_fromStack":{"entryPoint":8583,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_uint96_to_t_uint96_fromStack":{"entryPoint":9142,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_tuple_t_contract$_IConstantFlowAgreementV1_$5487_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":11288,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_contract$_ISuperToken_$6947_t_address_t_address__to_t_address_t_address_t_address__fromStack_reversed":{"entryPoint":10829,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_contract$_ISuperToken_$6947_t_address_t_address_t_bytes_memory_ptr__to_t_address_t_address_t_address_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":11179,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_int96_t_uint96_t_uint256_t_uint256__to_t_int96_t_uint96_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":9157,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1__to_t_bytes32__fromStack_reversed":{"entryPoint":11744,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":9290,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint256_t_array$_t_address_$dyn_memory_ptr__to_t_uint256_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":8788,"id":null,"parameterSlots":3,"returnSlots":1},"allocate_memory":{"entryPoint":9435,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":8414,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_t_array$_t_address_$dyn_memory_ptr":{"entryPoint":9462,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr":{"entryPoint":9930,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_t_array$_t_uint96_$dyn_memory_ptr":{"entryPoint":9735,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_t_bytes_memory_ptr":{"entryPoint":11362,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_t_array$_t_address_$dyn_memory_ptr":{"entryPoint":8626,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_array$_t_address_$dyn_memory_ptr":{"entryPoint":8598,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_bytes_memory_ptr":{"entryPoint":11052,"id":null,"parameterSlots":1,"returnSlots":1},"array_nextElement_t_array$_t_address_$dyn_memory_ptr":{"entryPoint":8681,"id":null,"parameterSlots":1,"returnSlots":1},"array_storeLengthForEncoding_t_array$_t_address_$dyn_memory_ptr_fromStack":{"entryPoint":8609,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack":{"entryPoint":11063,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":10510,"id":null,"parameterSlots":2,"returnSlots":1},"checked_div_t_uint96":{"entryPoint":10670,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_t_uint96":{"entryPoint":10562,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":10458,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_t_address":{"entryPoint":8466,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_bytes32":{"entryPoint":11672,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_contract$_ISuperAgreement_$6395":{"entryPoint":11771,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_int96":{"entryPoint":9114,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1":{"entryPoint":11662,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint160":{"entryPoint":8434,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint256":{"entryPoint":8573,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint96":{"entryPoint":8836,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_contract$_IConstantFlowAgreementV1_$5487_to_t_address":{"entryPoint":11255,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_contract$_ISuperToken_$6947_to_t_address":{"entryPoint":10781,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1_to_t_bytes32":{"entryPoint":11695,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_uint160_to_t_address":{"entryPoint":10763,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_uint160_to_t_uint160":{"entryPoint":10729,"id":null,"parameterSlots":1,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":11080,"id":null,"parameterSlots":3,"returnSlots":0},"finalize_allocation":{"entryPoint":9386,"id":null,"parameterSlots":2,"returnSlots":0},"identity":{"entryPoint":10719,"id":null,"parameterSlots":1,"returnSlots":1},"increment_t_uint256":{"entryPoint":10386,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x01":{"entryPoint":11878,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x11":{"entryPoint":10339,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x12":{"entryPoint":10623,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":10292,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":9339,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":9317,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef":{"entryPoint":9506,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae":{"entryPoint":11357,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":8429,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":8424,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of_32":{"entryPoint":9322,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_0":{"entryPoint":11682,"id":null,"parameterSlots":1,"returnSlots":1},"validator_revert_t_address":{"entryPoint":8484,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_contract$_ISuperAgreement_$6395":{"entryPoint":11789,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_int96":{"entryPoint":10905,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_uint256":{"entryPoint":8904,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_uint96":{"entryPoint":8860,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:25660:43","statements":[{"body":{"nodeType":"YulBlock","src":"47:35:43","statements":[{"nodeType":"YulAssignment","src":"57:19:43","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"73:2:43","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"67:5:43"},"nodeType":"YulFunctionCall","src":"67:9:43"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"57:6:43"}]}]},"name":"allocate_unbounded","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"40:6:43","type":""}],"src":"7:75:43"},{"body":{"nodeType":"YulBlock","src":"177:28:43","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"194:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"197:1:43","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"187:6:43"},"nodeType":"YulFunctionCall","src":"187:12:43"},"nodeType":"YulExpressionStatement","src":"187:12:43"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulFunctionDefinition","src":"88:117:43"},{"body":{"nodeType":"YulBlock","src":"300:28:43","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"317:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"320:1:43","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"310:6:43"},"nodeType":"YulFunctionCall","src":"310:12:43"},"nodeType":"YulExpressionStatement","src":"310:12:43"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulFunctionDefinition","src":"211:117:43"},{"body":{"nodeType":"YulBlock","src":"379:81:43","statements":[{"nodeType":"YulAssignment","src":"389:65:43","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"404:5:43"},{"kind":"number","nodeType":"YulLiteral","src":"411:42:43","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"400:3:43"},"nodeType":"YulFunctionCall","src":"400:54:43"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"389:7:43"}]}]},"name":"cleanup_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"361:5:43","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"371:7:43","type":""}],"src":"334:126:43"},{"body":{"nodeType":"YulBlock","src":"511:51:43","statements":[{"nodeType":"YulAssignment","src":"521:35:43","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"550:5:43"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"532:17:43"},"nodeType":"YulFunctionCall","src":"532:24:43"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"521:7:43"}]}]},"name":"cleanup_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"493:5:43","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"503:7:43","type":""}],"src":"466:96:43"},{"body":{"nodeType":"YulBlock","src":"611:79:43","statements":[{"body":{"nodeType":"YulBlock","src":"668:16:43","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"677:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"680:1:43","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"670:6:43"},"nodeType":"YulFunctionCall","src":"670:12:43"},"nodeType":"YulExpressionStatement","src":"670:12:43"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"634:5:43"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"659:5:43"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"641:17:43"},"nodeType":"YulFunctionCall","src":"641:24:43"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"631:2:43"},"nodeType":"YulFunctionCall","src":"631:35:43"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"624:6:43"},"nodeType":"YulFunctionCall","src":"624:43:43"},"nodeType":"YulIf","src":"621:63:43"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"604:5:43","type":""}],"src":"568:122:43"},{"body":{"nodeType":"YulBlock","src":"748:87:43","statements":[{"nodeType":"YulAssignment","src":"758:29:43","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"780:6:43"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"767:12:43"},"nodeType":"YulFunctionCall","src":"767:20:43"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"758:5:43"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"823:5:43"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"796:26:43"},"nodeType":"YulFunctionCall","src":"796:33:43"},"nodeType":"YulExpressionStatement","src":"796:33:43"}]},"name":"abi_decode_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"726:6:43","type":""},{"name":"end","nodeType":"YulTypedName","src":"734:3:43","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"742:5:43","type":""}],"src":"696:139:43"},{"body":{"nodeType":"YulBlock","src":"907:263:43","statements":[{"body":{"nodeType":"YulBlock","src":"953:83:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"955:77:43"},"nodeType":"YulFunctionCall","src":"955:79:43"},"nodeType":"YulExpressionStatement","src":"955:79:43"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"928:7:43"},{"name":"headStart","nodeType":"YulIdentifier","src":"937:9:43"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"924:3:43"},"nodeType":"YulFunctionCall","src":"924:23:43"},{"kind":"number","nodeType":"YulLiteral","src":"949:2:43","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"920:3:43"},"nodeType":"YulFunctionCall","src":"920:32:43"},"nodeType":"YulIf","src":"917:119:43"},{"nodeType":"YulBlock","src":"1046:117:43","statements":[{"nodeType":"YulVariableDeclaration","src":"1061:15:43","value":{"kind":"number","nodeType":"YulLiteral","src":"1075:1:43","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1065:6:43","type":""}]},{"nodeType":"YulAssignment","src":"1090:63:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1125:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"1136:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1121:3:43"},"nodeType":"YulFunctionCall","src":"1121:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1145:7:43"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"1100:20:43"},"nodeType":"YulFunctionCall","src":"1100:53:43"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1090:6:43"}]}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"877:9:43","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"888:7:43","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"900:6:43","type":""}],"src":"841:329:43"},{"body":{"nodeType":"YulBlock","src":"1221:32:43","statements":[{"nodeType":"YulAssignment","src":"1231:16:43","value":{"name":"value","nodeType":"YulIdentifier","src":"1242:5:43"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"1231:7:43"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1203:5:43","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"1213:7:43","type":""}],"src":"1176:77:43"},{"body":{"nodeType":"YulBlock","src":"1324:53:43","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1341:3:43"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1364:5:43"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"1346:17:43"},"nodeType":"YulFunctionCall","src":"1346:24:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1334:6:43"},"nodeType":"YulFunctionCall","src":"1334:37:43"},"nodeType":"YulExpressionStatement","src":"1334:37:43"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1312:5:43","type":""},{"name":"pos","nodeType":"YulTypedName","src":"1319:3:43","type":""}],"src":"1259:118:43"},{"body":{"nodeType":"YulBlock","src":"1457:40:43","statements":[{"nodeType":"YulAssignment","src":"1468:22:43","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1484:5:43"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1478:5:43"},"nodeType":"YulFunctionCall","src":"1478:12:43"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"1468:6:43"}]}]},"name":"array_length_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1440:5:43","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"1450:6:43","type":""}],"src":"1383:114:43"},{"body":{"nodeType":"YulBlock","src":"1614:73:43","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1631:3:43"},{"name":"length","nodeType":"YulIdentifier","src":"1636:6:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1624:6:43"},"nodeType":"YulFunctionCall","src":"1624:19:43"},"nodeType":"YulExpressionStatement","src":"1624:19:43"},{"nodeType":"YulAssignment","src":"1652:29:43","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1671:3:43"},{"kind":"number","nodeType":"YulLiteral","src":"1676:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1667:3:43"},"nodeType":"YulFunctionCall","src":"1667:14:43"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"1652:11:43"}]}]},"name":"array_storeLengthForEncoding_t_array$_t_address_$dyn_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1586:3:43","type":""},{"name":"length","nodeType":"YulTypedName","src":"1591:6:43","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"1602:11:43","type":""}],"src":"1503:184:43"},{"body":{"nodeType":"YulBlock","src":"1765:60:43","statements":[{"nodeType":"YulAssignment","src":"1775:11:43","value":{"name":"ptr","nodeType":"YulIdentifier","src":"1783:3:43"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"1775:4:43"}]},{"nodeType":"YulAssignment","src":"1796:22:43","value":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"1808:3:43"},{"kind":"number","nodeType":"YulLiteral","src":"1813:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1804:3:43"},"nodeType":"YulFunctionCall","src":"1804:14:43"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"1796:4:43"}]}]},"name":"array_dataslot_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"1752:3:43","type":""}],"returnVariables":[{"name":"data","nodeType":"YulTypedName","src":"1760:4:43","type":""}],"src":"1693:132:43"},{"body":{"nodeType":"YulBlock","src":"1886:53:43","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1903:3:43"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1926:5:43"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"1908:17:43"},"nodeType":"YulFunctionCall","src":"1908:24:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1896:6:43"},"nodeType":"YulFunctionCall","src":"1896:37:43"},"nodeType":"YulExpressionStatement","src":"1896:37:43"}]},"name":"abi_encode_t_address_to_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1874:5:43","type":""},{"name":"pos","nodeType":"YulTypedName","src":"1881:3:43","type":""}],"src":"1831:108:43"},{"body":{"nodeType":"YulBlock","src":"2025:99:43","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2069:6:43"},{"name":"pos","nodeType":"YulIdentifier","src":"2077:3:43"}],"functionName":{"name":"abi_encode_t_address_to_t_address","nodeType":"YulIdentifier","src":"2035:33:43"},"nodeType":"YulFunctionCall","src":"2035:46:43"},"nodeType":"YulExpressionStatement","src":"2035:46:43"},{"nodeType":"YulAssignment","src":"2090:28:43","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2108:3:43"},{"kind":"number","nodeType":"YulLiteral","src":"2113:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2104:3:43"},"nodeType":"YulFunctionCall","src":"2104:14:43"},"variableNames":[{"name":"updatedPos","nodeType":"YulIdentifier","src":"2090:10:43"}]}]},"name":"abi_encodeUpdatedPos_t_address_to_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value0","nodeType":"YulTypedName","src":"1998:6:43","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2006:3:43","type":""}],"returnVariables":[{"name":"updatedPos","nodeType":"YulTypedName","src":"2014:10:43","type":""}],"src":"1945:179:43"},{"body":{"nodeType":"YulBlock","src":"2205:38:43","statements":[{"nodeType":"YulAssignment","src":"2215:22:43","value":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"2227:3:43"},{"kind":"number","nodeType":"YulLiteral","src":"2232:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2223:3:43"},"nodeType":"YulFunctionCall","src":"2223:14:43"},"variableNames":[{"name":"next","nodeType":"YulIdentifier","src":"2215:4:43"}]}]},"name":"array_nextElement_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"2192:3:43","type":""}],"returnVariables":[{"name":"next","nodeType":"YulTypedName","src":"2200:4:43","type":""}],"src":"2130:113:43"},{"body":{"nodeType":"YulBlock","src":"2403:608:43","statements":[{"nodeType":"YulVariableDeclaration","src":"2413:68:43","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2475:5:43"}],"functionName":{"name":"array_length_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"2427:47:43"},"nodeType":"YulFunctionCall","src":"2427:54:43"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"2417:6:43","type":""}]},{"nodeType":"YulAssignment","src":"2490:93:43","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2571:3:43"},{"name":"length","nodeType":"YulIdentifier","src":"2576:6:43"}],"functionName":{"name":"array_storeLengthForEncoding_t_array$_t_address_$dyn_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"2497:73:43"},"nodeType":"YulFunctionCall","src":"2497:86:43"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"2490:3:43"}]},{"nodeType":"YulVariableDeclaration","src":"2592:71:43","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2657:5:43"}],"functionName":{"name":"array_dataslot_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"2607:49:43"},"nodeType":"YulFunctionCall","src":"2607:56:43"},"variables":[{"name":"baseRef","nodeType":"YulTypedName","src":"2596:7:43","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2672:21:43","value":{"name":"baseRef","nodeType":"YulIdentifier","src":"2686:7:43"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"2676:6:43","type":""}]},{"body":{"nodeType":"YulBlock","src":"2762:224:43","statements":[{"nodeType":"YulVariableDeclaration","src":"2776:34:43","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"2803:6:43"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2797:5:43"},"nodeType":"YulFunctionCall","src":"2797:13:43"},"variables":[{"name":"elementValue0","nodeType":"YulTypedName","src":"2780:13:43","type":""}]},{"nodeType":"YulAssignment","src":"2823:70:43","value":{"arguments":[{"name":"elementValue0","nodeType":"YulIdentifier","src":"2874:13:43"},{"name":"pos","nodeType":"YulIdentifier","src":"2889:3:43"}],"functionName":{"name":"abi_encodeUpdatedPos_t_address_to_t_address","nodeType":"YulIdentifier","src":"2830:43:43"},"nodeType":"YulFunctionCall","src":"2830:63:43"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"2823:3:43"}]},{"nodeType":"YulAssignment","src":"2906:70:43","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"2969:6:43"}],"functionName":{"name":"array_nextElement_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"2916:52:43"},"nodeType":"YulFunctionCall","src":"2916:60:43"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"2906:6:43"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"2724:1:43"},{"name":"length","nodeType":"YulIdentifier","src":"2727:6:43"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2721:2:43"},"nodeType":"YulFunctionCall","src":"2721:13:43"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"2735:18:43","statements":[{"nodeType":"YulAssignment","src":"2737:14:43","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"2746:1:43"},{"kind":"number","nodeType":"YulLiteral","src":"2749:1:43","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2742:3:43"},"nodeType":"YulFunctionCall","src":"2742:9:43"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"2737:1:43"}]}]},"pre":{"nodeType":"YulBlock","src":"2706:14:43","statements":[{"nodeType":"YulVariableDeclaration","src":"2708:10:43","value":{"kind":"number","nodeType":"YulLiteral","src":"2717:1:43","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"2712:1:43","type":""}]}]},"src":"2702:284:43"},{"nodeType":"YulAssignment","src":"2995:10:43","value":{"name":"pos","nodeType":"YulIdentifier","src":"3002:3:43"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2995:3:43"}]}]},"name":"abi_encode_t_array$_t_address_$dyn_memory_ptr_to_t_array$_t_address_$dyn_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2382:5:43","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2389:3:43","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2398:3:43","type":""}],"src":"2279:732:43"},{"body":{"nodeType":"YulBlock","src":"3193:307:43","statements":[{"nodeType":"YulAssignment","src":"3203:26:43","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3215:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"3226:2:43","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3211:3:43"},"nodeType":"YulFunctionCall","src":"3211:18:43"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3203:4:43"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3283:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3296:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"3307:1:43","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3292:3:43"},"nodeType":"YulFunctionCall","src":"3292:17:43"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"3239:43:43"},"nodeType":"YulFunctionCall","src":"3239:71:43"},"nodeType":"YulExpressionStatement","src":"3239:71:43"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3331:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"3342:2:43","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3327:3:43"},"nodeType":"YulFunctionCall","src":"3327:18:43"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"3351:4:43"},{"name":"headStart","nodeType":"YulIdentifier","src":"3357:9:43"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3347:3:43"},"nodeType":"YulFunctionCall","src":"3347:20:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3320:6:43"},"nodeType":"YulFunctionCall","src":"3320:48:43"},"nodeType":"YulExpressionStatement","src":"3320:48:43"},{"nodeType":"YulAssignment","src":"3377:116:43","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"3479:6:43"},{"name":"tail","nodeType":"YulIdentifier","src":"3488:4:43"}],"functionName":{"name":"abi_encode_t_array$_t_address_$dyn_memory_ptr_to_t_array$_t_address_$dyn_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"3385:93:43"},"nodeType":"YulFunctionCall","src":"3385:108:43"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3377:4:43"}]}]},"name":"abi_encode_tuple_t_uint256_t_array$_t_address_$dyn_memory_ptr__to_t_uint256_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3157:9:43","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3169:6:43","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3177:6:43","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3188:4:43","type":""}],"src":"3017:483:43"},{"body":{"nodeType":"YulBlock","src":"3550:65:43","statements":[{"nodeType":"YulAssignment","src":"3560:49:43","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3575:5:43"},{"kind":"number","nodeType":"YulLiteral","src":"3582:26:43","type":"","value":"0xffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3571:3:43"},"nodeType":"YulFunctionCall","src":"3571:38:43"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"3560:7:43"}]}]},"name":"cleanup_t_uint96","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3532:5:43","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"3542:7:43","type":""}],"src":"3506:109:43"},{"body":{"nodeType":"YulBlock","src":"3663:78:43","statements":[{"body":{"nodeType":"YulBlock","src":"3719:16:43","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3728:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3731:1:43","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3721:6:43"},"nodeType":"YulFunctionCall","src":"3721:12:43"},"nodeType":"YulExpressionStatement","src":"3721:12:43"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3686:5:43"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3710:5:43"}],"functionName":{"name":"cleanup_t_uint96","nodeType":"YulIdentifier","src":"3693:16:43"},"nodeType":"YulFunctionCall","src":"3693:23:43"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3683:2:43"},"nodeType":"YulFunctionCall","src":"3683:34:43"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3676:6:43"},"nodeType":"YulFunctionCall","src":"3676:42:43"},"nodeType":"YulIf","src":"3673:62:43"}]},"name":"validator_revert_t_uint96","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3656:5:43","type":""}],"src":"3621:120:43"},{"body":{"nodeType":"YulBlock","src":"3798:86:43","statements":[{"nodeType":"YulAssignment","src":"3808:29:43","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3830:6:43"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3817:12:43"},"nodeType":"YulFunctionCall","src":"3817:20:43"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"3808:5:43"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3872:5:43"}],"functionName":{"name":"validator_revert_t_uint96","nodeType":"YulIdentifier","src":"3846:25:43"},"nodeType":"YulFunctionCall","src":"3846:32:43"},"nodeType":"YulExpressionStatement","src":"3846:32:43"}]},"name":"abi_decode_t_uint96","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"3776:6:43","type":""},{"name":"end","nodeType":"YulTypedName","src":"3784:3:43","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"3792:5:43","type":""}],"src":"3747:137:43"},{"body":{"nodeType":"YulBlock","src":"3933:79:43","statements":[{"body":{"nodeType":"YulBlock","src":"3990:16:43","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3999:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4002:1:43","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3992:6:43"},"nodeType":"YulFunctionCall","src":"3992:12:43"},"nodeType":"YulExpressionStatement","src":"3992:12:43"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3956:5:43"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3981:5:43"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"3963:17:43"},"nodeType":"YulFunctionCall","src":"3963:24:43"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3953:2:43"},"nodeType":"YulFunctionCall","src":"3953:35:43"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3946:6:43"},"nodeType":"YulFunctionCall","src":"3946:43:43"},"nodeType":"YulIf","src":"3943:63:43"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3926:5:43","type":""}],"src":"3890:122:43"},{"body":{"nodeType":"YulBlock","src":"4070:87:43","statements":[{"nodeType":"YulAssignment","src":"4080:29:43","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4102:6:43"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4089:12:43"},"nodeType":"YulFunctionCall","src":"4089:20:43"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"4080:5:43"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4145:5:43"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"4118:26:43"},"nodeType":"YulFunctionCall","src":"4118:33:43"},"nodeType":"YulExpressionStatement","src":"4118:33:43"}]},"name":"abi_decode_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"4048:6:43","type":""},{"name":"end","nodeType":"YulTypedName","src":"4056:3:43","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"4064:5:43","type":""}],"src":"4018:139:43"},{"body":{"nodeType":"YulBlock","src":"4262:518:43","statements":[{"body":{"nodeType":"YulBlock","src":"4308:83:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"4310:77:43"},"nodeType":"YulFunctionCall","src":"4310:79:43"},"nodeType":"YulExpressionStatement","src":"4310:79:43"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4283:7:43"},{"name":"headStart","nodeType":"YulIdentifier","src":"4292:9:43"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4279:3:43"},"nodeType":"YulFunctionCall","src":"4279:23:43"},{"kind":"number","nodeType":"YulLiteral","src":"4304:2:43","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4275:3:43"},"nodeType":"YulFunctionCall","src":"4275:32:43"},"nodeType":"YulIf","src":"4272:119:43"},{"nodeType":"YulBlock","src":"4401:117:43","statements":[{"nodeType":"YulVariableDeclaration","src":"4416:15:43","value":{"kind":"number","nodeType":"YulLiteral","src":"4430:1:43","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4420:6:43","type":""}]},{"nodeType":"YulAssignment","src":"4445:63:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4480:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"4491:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4476:3:43"},"nodeType":"YulFunctionCall","src":"4476:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4500:7:43"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"4455:20:43"},"nodeType":"YulFunctionCall","src":"4455:53:43"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4445:6:43"}]}]},{"nodeType":"YulBlock","src":"4528:117:43","statements":[{"nodeType":"YulVariableDeclaration","src":"4543:16:43","value":{"kind":"number","nodeType":"YulLiteral","src":"4557:2:43","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4547:6:43","type":""}]},{"nodeType":"YulAssignment","src":"4573:62:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4607:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"4618:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4603:3:43"},"nodeType":"YulFunctionCall","src":"4603:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4627:7:43"}],"functionName":{"name":"abi_decode_t_uint96","nodeType":"YulIdentifier","src":"4583:19:43"},"nodeType":"YulFunctionCall","src":"4583:52:43"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4573:6:43"}]}]},{"nodeType":"YulBlock","src":"4655:118:43","statements":[{"nodeType":"YulVariableDeclaration","src":"4670:16:43","value":{"kind":"number","nodeType":"YulLiteral","src":"4684:2:43","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4674:6:43","type":""}]},{"nodeType":"YulAssignment","src":"4700:63:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4735:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"4746:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4731:3:43"},"nodeType":"YulFunctionCall","src":"4731:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4755:7:43"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"4710:20:43"},"nodeType":"YulFunctionCall","src":"4710:53:43"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4700:6:43"}]}]}]},"name":"abi_decode_tuple_t_addresst_uint96t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4216:9:43","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4227:7:43","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4239:6:43","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4247:6:43","type":""},{"name":"value2","nodeType":"YulTypedName","src":"4255:6:43","type":""}],"src":"4163:617:43"},{"body":{"nodeType":"YulBlock","src":"4886:519:43","statements":[{"body":{"nodeType":"YulBlock","src":"4932:83:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"4934:77:43"},"nodeType":"YulFunctionCall","src":"4934:79:43"},"nodeType":"YulExpressionStatement","src":"4934:79:43"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4907:7:43"},{"name":"headStart","nodeType":"YulIdentifier","src":"4916:9:43"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4903:3:43"},"nodeType":"YulFunctionCall","src":"4903:23:43"},{"kind":"number","nodeType":"YulLiteral","src":"4928:2:43","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4899:3:43"},"nodeType":"YulFunctionCall","src":"4899:32:43"},"nodeType":"YulIf","src":"4896:119:43"},{"nodeType":"YulBlock","src":"5025:117:43","statements":[{"nodeType":"YulVariableDeclaration","src":"5040:15:43","value":{"kind":"number","nodeType":"YulLiteral","src":"5054:1:43","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5044:6:43","type":""}]},{"nodeType":"YulAssignment","src":"5069:63:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5104:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"5115:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5100:3:43"},"nodeType":"YulFunctionCall","src":"5100:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5124:7:43"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"5079:20:43"},"nodeType":"YulFunctionCall","src":"5079:53:43"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5069:6:43"}]}]},{"nodeType":"YulBlock","src":"5152:118:43","statements":[{"nodeType":"YulVariableDeclaration","src":"5167:16:43","value":{"kind":"number","nodeType":"YulLiteral","src":"5181:2:43","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5171:6:43","type":""}]},{"nodeType":"YulAssignment","src":"5197:63:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5232:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"5243:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5228:3:43"},"nodeType":"YulFunctionCall","src":"5228:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5252:7:43"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"5207:20:43"},"nodeType":"YulFunctionCall","src":"5207:53:43"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"5197:6:43"}]}]},{"nodeType":"YulBlock","src":"5280:118:43","statements":[{"nodeType":"YulVariableDeclaration","src":"5295:16:43","value":{"kind":"number","nodeType":"YulLiteral","src":"5309:2:43","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5299:6:43","type":""}]},{"nodeType":"YulAssignment","src":"5325:63:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5360:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"5371:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5356:3:43"},"nodeType":"YulFunctionCall","src":"5356:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5380:7:43"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"5335:20:43"},"nodeType":"YulFunctionCall","src":"5335:53:43"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"5325:6:43"}]}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4840:9:43","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4851:7:43","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4863:6:43","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4871:6:43","type":""},{"name":"value2","nodeType":"YulTypedName","src":"4879:6:43","type":""}],"src":"4786:619:43"},{"body":{"nodeType":"YulBlock","src":"5454:48:43","statements":[{"nodeType":"YulAssignment","src":"5464:32:43","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5486:2:43","type":"","value":"11"},{"name":"value","nodeType":"YulIdentifier","src":"5490:5:43"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"5475:10:43"},"nodeType":"YulFunctionCall","src":"5475:21:43"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5464:7:43"}]}]},"name":"cleanup_t_int96","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5436:5:43","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5446:7:43","type":""}],"src":"5411:91:43"},{"body":{"nodeType":"YulBlock","src":"5569:51:43","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5586:3:43"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5607:5:43"}],"functionName":{"name":"cleanup_t_int96","nodeType":"YulIdentifier","src":"5591:15:43"},"nodeType":"YulFunctionCall","src":"5591:22:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5579:6:43"},"nodeType":"YulFunctionCall","src":"5579:35:43"},"nodeType":"YulExpressionStatement","src":"5579:35:43"}]},"name":"abi_encode_t_int96_to_t_int96_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5557:5:43","type":""},{"name":"pos","nodeType":"YulTypedName","src":"5564:3:43","type":""}],"src":"5508:112:43"},{"body":{"nodeType":"YulBlock","src":"5689:52:43","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5706:3:43"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5728:5:43"}],"functionName":{"name":"cleanup_t_uint96","nodeType":"YulIdentifier","src":"5711:16:43"},"nodeType":"YulFunctionCall","src":"5711:23:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5699:6:43"},"nodeType":"YulFunctionCall","src":"5699:36:43"},"nodeType":"YulExpressionStatement","src":"5699:36:43"}]},"name":"abi_encode_t_uint96_to_t_uint96_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5677:5:43","type":""},{"name":"pos","nodeType":"YulTypedName","src":"5684:3:43","type":""}],"src":"5626:115:43"},{"body":{"nodeType":"YulBlock","src":"5923:365:43","statements":[{"nodeType":"YulAssignment","src":"5933:27:43","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5945:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"5956:3:43","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5941:3:43"},"nodeType":"YulFunctionCall","src":"5941:19:43"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5933:4:43"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6010:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6023:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"6034:1:43","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6019:3:43"},"nodeType":"YulFunctionCall","src":"6019:17:43"}],"functionName":{"name":"abi_encode_t_int96_to_t_int96_fromStack","nodeType":"YulIdentifier","src":"5970:39:43"},"nodeType":"YulFunctionCall","src":"5970:67:43"},"nodeType":"YulExpressionStatement","src":"5970:67:43"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"6089:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6102:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"6113:2:43","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6098:3:43"},"nodeType":"YulFunctionCall","src":"6098:18:43"}],"functionName":{"name":"abi_encode_t_uint96_to_t_uint96_fromStack","nodeType":"YulIdentifier","src":"6047:41:43"},"nodeType":"YulFunctionCall","src":"6047:70:43"},"nodeType":"YulExpressionStatement","src":"6047:70:43"},{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"6171:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6184:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"6195:2:43","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6180:3:43"},"nodeType":"YulFunctionCall","src":"6180:18:43"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"6127:43:43"},"nodeType":"YulFunctionCall","src":"6127:72:43"},"nodeType":"YulExpressionStatement","src":"6127:72:43"},{"expression":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"6253:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6266:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"6277:2:43","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6262:3:43"},"nodeType":"YulFunctionCall","src":"6262:18:43"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"6209:43:43"},"nodeType":"YulFunctionCall","src":"6209:72:43"},"nodeType":"YulExpressionStatement","src":"6209:72:43"}]},"name":"abi_encode_tuple_t_int96_t_uint96_t_uint256_t_uint256__to_t_int96_t_uint96_t_uint256_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5871:9:43","type":""},{"name":"value3","nodeType":"YulTypedName","src":"5883:6:43","type":""},{"name":"value2","nodeType":"YulTypedName","src":"5891:6:43","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5899:6:43","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5907:6:43","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5918:4:43","type":""}],"src":"5747:541:43"},{"body":{"nodeType":"YulBlock","src":"6377:391:43","statements":[{"body":{"nodeType":"YulBlock","src":"6423:83:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"6425:77:43"},"nodeType":"YulFunctionCall","src":"6425:79:43"},"nodeType":"YulExpressionStatement","src":"6425:79:43"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6398:7:43"},{"name":"headStart","nodeType":"YulIdentifier","src":"6407:9:43"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6394:3:43"},"nodeType":"YulFunctionCall","src":"6394:23:43"},{"kind":"number","nodeType":"YulLiteral","src":"6419:2:43","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6390:3:43"},"nodeType":"YulFunctionCall","src":"6390:32:43"},"nodeType":"YulIf","src":"6387:119:43"},{"nodeType":"YulBlock","src":"6516:117:43","statements":[{"nodeType":"YulVariableDeclaration","src":"6531:15:43","value":{"kind":"number","nodeType":"YulLiteral","src":"6545:1:43","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6535:6:43","type":""}]},{"nodeType":"YulAssignment","src":"6560:63:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6595:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"6606:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6591:3:43"},"nodeType":"YulFunctionCall","src":"6591:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6615:7:43"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"6570:20:43"},"nodeType":"YulFunctionCall","src":"6570:53:43"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6560:6:43"}]}]},{"nodeType":"YulBlock","src":"6643:118:43","statements":[{"nodeType":"YulVariableDeclaration","src":"6658:16:43","value":{"kind":"number","nodeType":"YulLiteral","src":"6672:2:43","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6662:6:43","type":""}]},{"nodeType":"YulAssignment","src":"6688:63:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6723:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"6734:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6719:3:43"},"nodeType":"YulFunctionCall","src":"6719:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6743:7:43"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"6698:20:43"},"nodeType":"YulFunctionCall","src":"6698:53:43"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"6688:6:43"}]}]}]},"name":"abi_decode_tuple_t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6339:9:43","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6350:7:43","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6362:6:43","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6370:6:43","type":""}],"src":"6294:474:43"},{"body":{"nodeType":"YulBlock","src":"6872:124:43","statements":[{"nodeType":"YulAssignment","src":"6882:26:43","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6894:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"6905:2:43","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6890:3:43"},"nodeType":"YulFunctionCall","src":"6890:18:43"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6882:4:43"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6962:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6975:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"6986:1:43","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6971:3:43"},"nodeType":"YulFunctionCall","src":"6971:17:43"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"6918:43:43"},"nodeType":"YulFunctionCall","src":"6918:71:43"},"nodeType":"YulExpressionStatement","src":"6918:71:43"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6844:9:43","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6856:6:43","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6867:4:43","type":""}],"src":"6774:222:43"},{"body":{"nodeType":"YulBlock","src":"7091:28:43","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7108:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7111:1:43","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7101:6:43"},"nodeType":"YulFunctionCall","src":"7101:12:43"},"nodeType":"YulExpressionStatement","src":"7101:12:43"}]},"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulFunctionDefinition","src":"7002:117:43"},{"body":{"nodeType":"YulBlock","src":"7173:54:43","statements":[{"nodeType":"YulAssignment","src":"7183:38:43","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7201:5:43"},{"kind":"number","nodeType":"YulLiteral","src":"7208:2:43","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7197:3:43"},"nodeType":"YulFunctionCall","src":"7197:14:43"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7217:2:43","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"7213:3:43"},"nodeType":"YulFunctionCall","src":"7213:7:43"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7193:3:43"},"nodeType":"YulFunctionCall","src":"7193:28:43"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"7183:6:43"}]}]},"name":"round_up_to_mul_of_32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7156:5:43","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"7166:6:43","type":""}],"src":"7125:102:43"},{"body":{"nodeType":"YulBlock","src":"7261:152:43","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7278:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7281:77:43","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7271:6:43"},"nodeType":"YulFunctionCall","src":"7271:88:43"},"nodeType":"YulExpressionStatement","src":"7271:88:43"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7375:1:43","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"7378:4:43","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7368:6:43"},"nodeType":"YulFunctionCall","src":"7368:15:43"},"nodeType":"YulExpressionStatement","src":"7368:15:43"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7399:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7402:4:43","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7392:6:43"},"nodeType":"YulFunctionCall","src":"7392:15:43"},"nodeType":"YulExpressionStatement","src":"7392:15:43"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"7233:180:43"},{"body":{"nodeType":"YulBlock","src":"7462:238:43","statements":[{"nodeType":"YulVariableDeclaration","src":"7472:58:43","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7494:6:43"},{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"7524:4:43"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"7502:21:43"},"nodeType":"YulFunctionCall","src":"7502:27:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7490:3:43"},"nodeType":"YulFunctionCall","src":"7490:40:43"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"7476:10:43","type":""}]},{"body":{"nodeType":"YulBlock","src":"7641:22:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"7643:16:43"},"nodeType":"YulFunctionCall","src":"7643:18:43"},"nodeType":"YulExpressionStatement","src":"7643:18:43"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7584:10:43"},{"kind":"number","nodeType":"YulLiteral","src":"7596:18:43","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7581:2:43"},"nodeType":"YulFunctionCall","src":"7581:34:43"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7620:10:43"},{"name":"memPtr","nodeType":"YulIdentifier","src":"7632:6:43"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"7617:2:43"},"nodeType":"YulFunctionCall","src":"7617:22:43"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7578:2:43"},"nodeType":"YulFunctionCall","src":"7578:62:43"},"nodeType":"YulIf","src":"7575:88:43"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7679:2:43","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7683:10:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7672:6:43"},"nodeType":"YulFunctionCall","src":"7672:22:43"},"nodeType":"YulExpressionStatement","src":"7672:22:43"}]},"name":"finalize_allocation","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"7448:6:43","type":""},{"name":"size","nodeType":"YulTypedName","src":"7456:4:43","type":""}],"src":"7419:281:43"},{"body":{"nodeType":"YulBlock","src":"7747:88:43","statements":[{"nodeType":"YulAssignment","src":"7757:30:43","value":{"arguments":[],"functionName":{"name":"allocate_unbounded","nodeType":"YulIdentifier","src":"7767:18:43"},"nodeType":"YulFunctionCall","src":"7767:20:43"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7757:6:43"}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7816:6:43"},{"name":"size","nodeType":"YulIdentifier","src":"7824:4:43"}],"functionName":{"name":"finalize_allocation","nodeType":"YulIdentifier","src":"7796:19:43"},"nodeType":"YulFunctionCall","src":"7796:33:43"},"nodeType":"YulExpressionStatement","src":"7796:33:43"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"7731:4:43","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"7740:6:43","type":""}],"src":"7706:129:43"},{"body":{"nodeType":"YulBlock","src":"7923:229:43","statements":[{"body":{"nodeType":"YulBlock","src":"8028:22:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"8030:16:43"},"nodeType":"YulFunctionCall","src":"8030:18:43"},"nodeType":"YulExpressionStatement","src":"8030:18:43"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"8000:6:43"},{"kind":"number","nodeType":"YulLiteral","src":"8008:18:43","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7997:2:43"},"nodeType":"YulFunctionCall","src":"7997:30:43"},"nodeType":"YulIf","src":"7994:56:43"},{"nodeType":"YulAssignment","src":"8060:25:43","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"8072:6:43"},{"kind":"number","nodeType":"YulLiteral","src":"8080:4:43","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"8068:3:43"},"nodeType":"YulFunctionCall","src":"8068:17:43"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"8060:4:43"}]},{"nodeType":"YulAssignment","src":"8122:23:43","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"8134:4:43"},{"kind":"number","nodeType":"YulLiteral","src":"8140:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8130:3:43"},"nodeType":"YulFunctionCall","src":"8130:15:43"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"8122:4:43"}]}]},"name":"array_allocation_size_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"7907:6:43","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"7918:4:43","type":""}],"src":"7841:311:43"},{"body":{"nodeType":"YulBlock","src":"8247:28:43","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8264:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8267:1:43","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8257:6:43"},"nodeType":"YulFunctionCall","src":"8257:12:43"},"nodeType":"YulExpressionStatement","src":"8257:12:43"}]},"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nodeType":"YulFunctionDefinition","src":"8158:117:43"},{"body":{"nodeType":"YulBlock","src":"8400:608:43","statements":[{"nodeType":"YulAssignment","src":"8410:90:43","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"8492:6:43"}],"functionName":{"name":"array_allocation_size_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"8435:56:43"},"nodeType":"YulFunctionCall","src":"8435:64:43"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"8419:15:43"},"nodeType":"YulFunctionCall","src":"8419:81:43"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"8410:5:43"}]},{"nodeType":"YulVariableDeclaration","src":"8509:16:43","value":{"name":"array","nodeType":"YulIdentifier","src":"8520:5:43"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"8513:3:43","type":""}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"8542:5:43"},{"name":"length","nodeType":"YulIdentifier","src":"8549:6:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8535:6:43"},"nodeType":"YulFunctionCall","src":"8535:21:43"},"nodeType":"YulExpressionStatement","src":"8535:21:43"},{"nodeType":"YulAssignment","src":"8565:23:43","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"8576:5:43"},{"kind":"number","nodeType":"YulLiteral","src":"8583:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8572:3:43"},"nodeType":"YulFunctionCall","src":"8572:16:43"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"8565:3:43"}]},{"nodeType":"YulVariableDeclaration","src":"8598:44:43","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"8616:6:43"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"8628:6:43"},{"kind":"number","nodeType":"YulLiteral","src":"8636:4:43","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"8624:3:43"},"nodeType":"YulFunctionCall","src":"8624:17:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8612:3:43"},"nodeType":"YulFunctionCall","src":"8612:30:43"},"variables":[{"name":"srcEnd","nodeType":"YulTypedName","src":"8602:6:43","type":""}]},{"body":{"nodeType":"YulBlock","src":"8670:103:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nodeType":"YulIdentifier","src":"8684:77:43"},"nodeType":"YulFunctionCall","src":"8684:79:43"},"nodeType":"YulExpressionStatement","src":"8684:79:43"}]},"condition":{"arguments":[{"name":"srcEnd","nodeType":"YulIdentifier","src":"8657:6:43"},{"name":"end","nodeType":"YulIdentifier","src":"8665:3:43"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8654:2:43"},"nodeType":"YulFunctionCall","src":"8654:15:43"},"nodeType":"YulIf","src":"8651:122:43"},{"body":{"nodeType":"YulBlock","src":"8858:144:43","statements":[{"nodeType":"YulVariableDeclaration","src":"8873:21:43","value":{"name":"src","nodeType":"YulIdentifier","src":"8891:3:43"},"variables":[{"name":"elementPos","nodeType":"YulTypedName","src":"8877:10:43","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"8915:3:43"},{"arguments":[{"name":"elementPos","nodeType":"YulIdentifier","src":"8941:10:43"},{"name":"end","nodeType":"YulIdentifier","src":"8953:3:43"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"8920:20:43"},"nodeType":"YulFunctionCall","src":"8920:37:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8908:6:43"},"nodeType":"YulFunctionCall","src":"8908:50:43"},"nodeType":"YulExpressionStatement","src":"8908:50:43"},{"nodeType":"YulAssignment","src":"8971:21:43","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"8982:3:43"},{"kind":"number","nodeType":"YulLiteral","src":"8987:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8978:3:43"},"nodeType":"YulFunctionCall","src":"8978:14:43"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"8971:3:43"}]}]},"condition":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"8811:3:43"},{"name":"srcEnd","nodeType":"YulIdentifier","src":"8816:6:43"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"8808:2:43"},"nodeType":"YulFunctionCall","src":"8808:15:43"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"8824:25:43","statements":[{"nodeType":"YulAssignment","src":"8826:21:43","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"8837:3:43"},{"kind":"number","nodeType":"YulLiteral","src":"8842:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8833:3:43"},"nodeType":"YulFunctionCall","src":"8833:14:43"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"8826:3:43"}]}]},"pre":{"nodeType":"YulBlock","src":"8786:21:43","statements":[{"nodeType":"YulVariableDeclaration","src":"8788:17:43","value":{"name":"offset","nodeType":"YulIdentifier","src":"8799:6:43"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"8792:3:43","type":""}]}]},"src":"8782:220:43"}]},"name":"abi_decode_available_length_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"8370:6:43","type":""},{"name":"length","nodeType":"YulTypedName","src":"8378:6:43","type":""},{"name":"end","nodeType":"YulTypedName","src":"8386:3:43","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"8394:5:43","type":""}],"src":"8298:710:43"},{"body":{"nodeType":"YulBlock","src":"9108:293:43","statements":[{"body":{"nodeType":"YulBlock","src":"9157:83:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"9159:77:43"},"nodeType":"YulFunctionCall","src":"9159:79:43"},"nodeType":"YulExpressionStatement","src":"9159:79:43"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"9136:6:43"},{"kind":"number","nodeType":"YulLiteral","src":"9144:4:43","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9132:3:43"},"nodeType":"YulFunctionCall","src":"9132:17:43"},{"name":"end","nodeType":"YulIdentifier","src":"9151:3:43"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9128:3:43"},"nodeType":"YulFunctionCall","src":"9128:27:43"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"9121:6:43"},"nodeType":"YulFunctionCall","src":"9121:35:43"},"nodeType":"YulIf","src":"9118:122:43"},{"nodeType":"YulVariableDeclaration","src":"9249:34:43","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"9276:6:43"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9263:12:43"},"nodeType":"YulFunctionCall","src":"9263:20:43"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"9253:6:43","type":""}]},{"nodeType":"YulAssignment","src":"9292:103:43","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"9368:6:43"},{"kind":"number","nodeType":"YulLiteral","src":"9376:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9364:3:43"},"nodeType":"YulFunctionCall","src":"9364:17:43"},{"name":"length","nodeType":"YulIdentifier","src":"9383:6:43"},{"name":"end","nodeType":"YulIdentifier","src":"9391:3:43"}],"functionName":{"name":"abi_decode_available_length_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"9301:62:43"},"nodeType":"YulFunctionCall","src":"9301:94:43"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"9292:5:43"}]}]},"name":"abi_decode_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"9086:6:43","type":""},{"name":"end","nodeType":"YulTypedName","src":"9094:3:43","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"9102:5:43","type":""}],"src":"9031:370:43"},{"body":{"nodeType":"YulBlock","src":"9498:448:43","statements":[{"body":{"nodeType":"YulBlock","src":"9544:83:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"9546:77:43"},"nodeType":"YulFunctionCall","src":"9546:79:43"},"nodeType":"YulExpressionStatement","src":"9546:79:43"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"9519:7:43"},{"name":"headStart","nodeType":"YulIdentifier","src":"9528:9:43"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9515:3:43"},"nodeType":"YulFunctionCall","src":"9515:23:43"},{"kind":"number","nodeType":"YulLiteral","src":"9540:2:43","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9511:3:43"},"nodeType":"YulFunctionCall","src":"9511:32:43"},"nodeType":"YulIf","src":"9508:119:43"},{"nodeType":"YulBlock","src":"9637:302:43","statements":[{"nodeType":"YulVariableDeclaration","src":"9652:45:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9683:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"9694:1:43","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9679:3:43"},"nodeType":"YulFunctionCall","src":"9679:17:43"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9666:12:43"},"nodeType":"YulFunctionCall","src":"9666:31:43"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"9656:6:43","type":""}]},{"body":{"nodeType":"YulBlock","src":"9744:83:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"9746:77:43"},"nodeType":"YulFunctionCall","src":"9746:79:43"},"nodeType":"YulExpressionStatement","src":"9746:79:43"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"9716:6:43"},{"kind":"number","nodeType":"YulLiteral","src":"9724:18:43","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"9713:2:43"},"nodeType":"YulFunctionCall","src":"9713:30:43"},"nodeType":"YulIf","src":"9710:117:43"},{"nodeType":"YulAssignment","src":"9841:88:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9901:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"9912:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9897:3:43"},"nodeType":"YulFunctionCall","src":"9897:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"9921:7:43"}],"functionName":{"name":"abi_decode_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"9851:45:43"},"nodeType":"YulFunctionCall","src":"9851:78:43"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"9841:6:43"}]}]}]},"name":"abi_decode_tuple_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9468:9:43","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"9479:7:43","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"9491:6:43","type":""}],"src":"9407:539:43"},{"body":{"nodeType":"YulBlock","src":"10033:229:43","statements":[{"body":{"nodeType":"YulBlock","src":"10138:22:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"10140:16:43"},"nodeType":"YulFunctionCall","src":"10140:18:43"},"nodeType":"YulExpressionStatement","src":"10140:18:43"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"10110:6:43"},{"kind":"number","nodeType":"YulLiteral","src":"10118:18:43","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"10107:2:43"},"nodeType":"YulFunctionCall","src":"10107:30:43"},"nodeType":"YulIf","src":"10104:56:43"},{"nodeType":"YulAssignment","src":"10170:25:43","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"10182:6:43"},{"kind":"number","nodeType":"YulLiteral","src":"10190:4:43","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"10178:3:43"},"nodeType":"YulFunctionCall","src":"10178:17:43"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"10170:4:43"}]},{"nodeType":"YulAssignment","src":"10232:23:43","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"10244:4:43"},{"kind":"number","nodeType":"YulLiteral","src":"10250:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10240:3:43"},"nodeType":"YulFunctionCall","src":"10240:15:43"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"10232:4:43"}]}]},"name":"array_allocation_size_t_array$_t_uint96_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"10017:6:43","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"10028:4:43","type":""}],"src":"9952:310:43"},{"body":{"nodeType":"YulBlock","src":"10385:606:43","statements":[{"nodeType":"YulAssignment","src":"10395:89:43","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"10476:6:43"}],"functionName":{"name":"array_allocation_size_t_array$_t_uint96_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"10420:55:43"},"nodeType":"YulFunctionCall","src":"10420:63:43"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"10404:15:43"},"nodeType":"YulFunctionCall","src":"10404:80:43"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"10395:5:43"}]},{"nodeType":"YulVariableDeclaration","src":"10493:16:43","value":{"name":"array","nodeType":"YulIdentifier","src":"10504:5:43"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"10497:3:43","type":""}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"10526:5:43"},{"name":"length","nodeType":"YulIdentifier","src":"10533:6:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10519:6:43"},"nodeType":"YulFunctionCall","src":"10519:21:43"},"nodeType":"YulExpressionStatement","src":"10519:21:43"},{"nodeType":"YulAssignment","src":"10549:23:43","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"10560:5:43"},{"kind":"number","nodeType":"YulLiteral","src":"10567:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10556:3:43"},"nodeType":"YulFunctionCall","src":"10556:16:43"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"10549:3:43"}]},{"nodeType":"YulVariableDeclaration","src":"10582:44:43","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"10600:6:43"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"10612:6:43"},{"kind":"number","nodeType":"YulLiteral","src":"10620:4:43","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"10608:3:43"},"nodeType":"YulFunctionCall","src":"10608:17:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10596:3:43"},"nodeType":"YulFunctionCall","src":"10596:30:43"},"variables":[{"name":"srcEnd","nodeType":"YulTypedName","src":"10586:6:43","type":""}]},{"body":{"nodeType":"YulBlock","src":"10654:103:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nodeType":"YulIdentifier","src":"10668:77:43"},"nodeType":"YulFunctionCall","src":"10668:79:43"},"nodeType":"YulExpressionStatement","src":"10668:79:43"}]},"condition":{"arguments":[{"name":"srcEnd","nodeType":"YulIdentifier","src":"10641:6:43"},{"name":"end","nodeType":"YulIdentifier","src":"10649:3:43"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"10638:2:43"},"nodeType":"YulFunctionCall","src":"10638:15:43"},"nodeType":"YulIf","src":"10635:122:43"},{"body":{"nodeType":"YulBlock","src":"10842:143:43","statements":[{"nodeType":"YulVariableDeclaration","src":"10857:21:43","value":{"name":"src","nodeType":"YulIdentifier","src":"10875:3:43"},"variables":[{"name":"elementPos","nodeType":"YulTypedName","src":"10861:10:43","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"10899:3:43"},{"arguments":[{"name":"elementPos","nodeType":"YulIdentifier","src":"10924:10:43"},{"name":"end","nodeType":"YulIdentifier","src":"10936:3:43"}],"functionName":{"name":"abi_decode_t_uint96","nodeType":"YulIdentifier","src":"10904:19:43"},"nodeType":"YulFunctionCall","src":"10904:36:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10892:6:43"},"nodeType":"YulFunctionCall","src":"10892:49:43"},"nodeType":"YulExpressionStatement","src":"10892:49:43"},{"nodeType":"YulAssignment","src":"10954:21:43","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"10965:3:43"},{"kind":"number","nodeType":"YulLiteral","src":"10970:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10961:3:43"},"nodeType":"YulFunctionCall","src":"10961:14:43"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"10954:3:43"}]}]},"condition":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"10795:3:43"},{"name":"srcEnd","nodeType":"YulIdentifier","src":"10800:6:43"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"10792:2:43"},"nodeType":"YulFunctionCall","src":"10792:15:43"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"10808:25:43","statements":[{"nodeType":"YulAssignment","src":"10810:21:43","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"10821:3:43"},{"kind":"number","nodeType":"YulLiteral","src":"10826:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10817:3:43"},"nodeType":"YulFunctionCall","src":"10817:14:43"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"10810:3:43"}]}]},"pre":{"nodeType":"YulBlock","src":"10770:21:43","statements":[{"nodeType":"YulVariableDeclaration","src":"10772:17:43","value":{"name":"offset","nodeType":"YulIdentifier","src":"10783:6:43"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"10776:3:43","type":""}]}]},"src":"10766:219:43"}]},"name":"abi_decode_available_length_t_array$_t_uint96_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"10355:6:43","type":""},{"name":"length","nodeType":"YulTypedName","src":"10363:6:43","type":""},{"name":"end","nodeType":"YulTypedName","src":"10371:3:43","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"10379:5:43","type":""}],"src":"10284:707:43"},{"body":{"nodeType":"YulBlock","src":"11089:292:43","statements":[{"body":{"nodeType":"YulBlock","src":"11138:83:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"11140:77:43"},"nodeType":"YulFunctionCall","src":"11140:79:43"},"nodeType":"YulExpressionStatement","src":"11140:79:43"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"11117:6:43"},{"kind":"number","nodeType":"YulLiteral","src":"11125:4:43","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11113:3:43"},"nodeType":"YulFunctionCall","src":"11113:17:43"},{"name":"end","nodeType":"YulIdentifier","src":"11132:3:43"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"11109:3:43"},"nodeType":"YulFunctionCall","src":"11109:27:43"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"11102:6:43"},"nodeType":"YulFunctionCall","src":"11102:35:43"},"nodeType":"YulIf","src":"11099:122:43"},{"nodeType":"YulVariableDeclaration","src":"11230:34:43","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"11257:6:43"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"11244:12:43"},"nodeType":"YulFunctionCall","src":"11244:20:43"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"11234:6:43","type":""}]},{"nodeType":"YulAssignment","src":"11273:102:43","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"11348:6:43"},{"kind":"number","nodeType":"YulLiteral","src":"11356:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11344:3:43"},"nodeType":"YulFunctionCall","src":"11344:17:43"},{"name":"length","nodeType":"YulIdentifier","src":"11363:6:43"},{"name":"end","nodeType":"YulIdentifier","src":"11371:3:43"}],"functionName":{"name":"abi_decode_available_length_t_array$_t_uint96_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"11282:61:43"},"nodeType":"YulFunctionCall","src":"11282:93:43"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"11273:5:43"}]}]},"name":"abi_decode_t_array$_t_uint96_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"11067:6:43","type":""},{"name":"end","nodeType":"YulTypedName","src":"11075:3:43","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"11083:5:43","type":""}],"src":"11013:368:43"},{"body":{"nodeType":"YulBlock","src":"11469:229:43","statements":[{"body":{"nodeType":"YulBlock","src":"11574:22:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"11576:16:43"},"nodeType":"YulFunctionCall","src":"11576:18:43"},"nodeType":"YulExpressionStatement","src":"11576:18:43"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"11546:6:43"},{"kind":"number","nodeType":"YulLiteral","src":"11554:18:43","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"11543:2:43"},"nodeType":"YulFunctionCall","src":"11543:30:43"},"nodeType":"YulIf","src":"11540:56:43"},{"nodeType":"YulAssignment","src":"11606:25:43","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"11618:6:43"},{"kind":"number","nodeType":"YulLiteral","src":"11626:4:43","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"11614:3:43"},"nodeType":"YulFunctionCall","src":"11614:17:43"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"11606:4:43"}]},{"nodeType":"YulAssignment","src":"11668:23:43","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"11680:4:43"},{"kind":"number","nodeType":"YulLiteral","src":"11686:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11676:3:43"},"nodeType":"YulFunctionCall","src":"11676:15:43"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"11668:4:43"}]}]},"name":"array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"11453:6:43","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"11464:4:43","type":""}],"src":"11387:311:43"},{"body":{"nodeType":"YulBlock","src":"11823:608:43","statements":[{"nodeType":"YulAssignment","src":"11833:90:43","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"11915:6:43"}],"functionName":{"name":"array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"11858:56:43"},"nodeType":"YulFunctionCall","src":"11858:64:43"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"11842:15:43"},"nodeType":"YulFunctionCall","src":"11842:81:43"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"11833:5:43"}]},{"nodeType":"YulVariableDeclaration","src":"11932:16:43","value":{"name":"array","nodeType":"YulIdentifier","src":"11943:5:43"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"11936:3:43","type":""}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"11965:5:43"},{"name":"length","nodeType":"YulIdentifier","src":"11972:6:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11958:6:43"},"nodeType":"YulFunctionCall","src":"11958:21:43"},"nodeType":"YulExpressionStatement","src":"11958:21:43"},{"nodeType":"YulAssignment","src":"11988:23:43","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"11999:5:43"},{"kind":"number","nodeType":"YulLiteral","src":"12006:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11995:3:43"},"nodeType":"YulFunctionCall","src":"11995:16:43"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"11988:3:43"}]},{"nodeType":"YulVariableDeclaration","src":"12021:44:43","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"12039:6:43"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"12051:6:43"},{"kind":"number","nodeType":"YulLiteral","src":"12059:4:43","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"12047:3:43"},"nodeType":"YulFunctionCall","src":"12047:17:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12035:3:43"},"nodeType":"YulFunctionCall","src":"12035:30:43"},"variables":[{"name":"srcEnd","nodeType":"YulTypedName","src":"12025:6:43","type":""}]},{"body":{"nodeType":"YulBlock","src":"12093:103:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nodeType":"YulIdentifier","src":"12107:77:43"},"nodeType":"YulFunctionCall","src":"12107:79:43"},"nodeType":"YulExpressionStatement","src":"12107:79:43"}]},"condition":{"arguments":[{"name":"srcEnd","nodeType":"YulIdentifier","src":"12080:6:43"},{"name":"end","nodeType":"YulIdentifier","src":"12088:3:43"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"12077:2:43"},"nodeType":"YulFunctionCall","src":"12077:15:43"},"nodeType":"YulIf","src":"12074:122:43"},{"body":{"nodeType":"YulBlock","src":"12281:144:43","statements":[{"nodeType":"YulVariableDeclaration","src":"12296:21:43","value":{"name":"src","nodeType":"YulIdentifier","src":"12314:3:43"},"variables":[{"name":"elementPos","nodeType":"YulTypedName","src":"12300:10:43","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"12338:3:43"},{"arguments":[{"name":"elementPos","nodeType":"YulIdentifier","src":"12364:10:43"},{"name":"end","nodeType":"YulIdentifier","src":"12376:3:43"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"12343:20:43"},"nodeType":"YulFunctionCall","src":"12343:37:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12331:6:43"},"nodeType":"YulFunctionCall","src":"12331:50:43"},"nodeType":"YulExpressionStatement","src":"12331:50:43"},{"nodeType":"YulAssignment","src":"12394:21:43","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"12405:3:43"},{"kind":"number","nodeType":"YulLiteral","src":"12410:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12401:3:43"},"nodeType":"YulFunctionCall","src":"12401:14:43"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"12394:3:43"}]}]},"condition":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"12234:3:43"},{"name":"srcEnd","nodeType":"YulIdentifier","src":"12239:6:43"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"12231:2:43"},"nodeType":"YulFunctionCall","src":"12231:15:43"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"12247:25:43","statements":[{"nodeType":"YulAssignment","src":"12249:21:43","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"12260:3:43"},{"kind":"number","nodeType":"YulLiteral","src":"12265:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12256:3:43"},"nodeType":"YulFunctionCall","src":"12256:14:43"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"12249:3:43"}]}]},"pre":{"nodeType":"YulBlock","src":"12209:21:43","statements":[{"nodeType":"YulVariableDeclaration","src":"12211:17:43","value":{"name":"offset","nodeType":"YulIdentifier","src":"12222:6:43"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"12215:3:43","type":""}]}]},"src":"12205:220:43"}]},"name":"abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"11793:6:43","type":""},{"name":"length","nodeType":"YulTypedName","src":"11801:6:43","type":""},{"name":"end","nodeType":"YulTypedName","src":"11809:3:43","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"11817:5:43","type":""}],"src":"11721:710:43"},{"body":{"nodeType":"YulBlock","src":"12531:293:43","statements":[{"body":{"nodeType":"YulBlock","src":"12580:83:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"12582:77:43"},"nodeType":"YulFunctionCall","src":"12582:79:43"},"nodeType":"YulExpressionStatement","src":"12582:79:43"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"12559:6:43"},{"kind":"number","nodeType":"YulLiteral","src":"12567:4:43","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12555:3:43"},"nodeType":"YulFunctionCall","src":"12555:17:43"},{"name":"end","nodeType":"YulIdentifier","src":"12574:3:43"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"12551:3:43"},"nodeType":"YulFunctionCall","src":"12551:27:43"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"12544:6:43"},"nodeType":"YulFunctionCall","src":"12544:35:43"},"nodeType":"YulIf","src":"12541:122:43"},{"nodeType":"YulVariableDeclaration","src":"12672:34:43","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"12699:6:43"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"12686:12:43"},"nodeType":"YulFunctionCall","src":"12686:20:43"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"12676:6:43","type":""}]},{"nodeType":"YulAssignment","src":"12715:103:43","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"12791:6:43"},{"kind":"number","nodeType":"YulLiteral","src":"12799:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12787:3:43"},"nodeType":"YulFunctionCall","src":"12787:17:43"},{"name":"length","nodeType":"YulIdentifier","src":"12806:6:43"},{"name":"end","nodeType":"YulIdentifier","src":"12814:3:43"}],"functionName":{"name":"abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"12724:62:43"},"nodeType":"YulFunctionCall","src":"12724:94:43"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"12715:5:43"}]}]},"name":"abi_decode_t_array$_t_uint256_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"12509:6:43","type":""},{"name":"end","nodeType":"YulTypedName","src":"12517:3:43","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"12525:5:43","type":""}],"src":"12454:370:43"},{"body":{"nodeType":"YulBlock","src":"13004:1073:43","statements":[{"body":{"nodeType":"YulBlock","src":"13050:83:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"13052:77:43"},"nodeType":"YulFunctionCall","src":"13052:79:43"},"nodeType":"YulExpressionStatement","src":"13052:79:43"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"13025:7:43"},{"name":"headStart","nodeType":"YulIdentifier","src":"13034:9:43"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"13021:3:43"},"nodeType":"YulFunctionCall","src":"13021:23:43"},{"kind":"number","nodeType":"YulLiteral","src":"13046:2:43","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"13017:3:43"},"nodeType":"YulFunctionCall","src":"13017:32:43"},"nodeType":"YulIf","src":"13014:119:43"},{"nodeType":"YulBlock","src":"13143:302:43","statements":[{"nodeType":"YulVariableDeclaration","src":"13158:45:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13189:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"13200:1:43","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13185:3:43"},"nodeType":"YulFunctionCall","src":"13185:17:43"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"13172:12:43"},"nodeType":"YulFunctionCall","src":"13172:31:43"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"13162:6:43","type":""}]},{"body":{"nodeType":"YulBlock","src":"13250:83:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"13252:77:43"},"nodeType":"YulFunctionCall","src":"13252:79:43"},"nodeType":"YulExpressionStatement","src":"13252:79:43"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"13222:6:43"},{"kind":"number","nodeType":"YulLiteral","src":"13230:18:43","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"13219:2:43"},"nodeType":"YulFunctionCall","src":"13219:30:43"},"nodeType":"YulIf","src":"13216:117:43"},{"nodeType":"YulAssignment","src":"13347:88:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13407:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"13418:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13403:3:43"},"nodeType":"YulFunctionCall","src":"13403:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"13427:7:43"}],"functionName":{"name":"abi_decode_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"13357:45:43"},"nodeType":"YulFunctionCall","src":"13357:78:43"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"13347:6:43"}]}]},{"nodeType":"YulBlock","src":"13455:302:43","statements":[{"nodeType":"YulVariableDeclaration","src":"13470:46:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13501:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"13512:2:43","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13497:3:43"},"nodeType":"YulFunctionCall","src":"13497:18:43"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"13484:12:43"},"nodeType":"YulFunctionCall","src":"13484:32:43"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"13474:6:43","type":""}]},{"body":{"nodeType":"YulBlock","src":"13563:83:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"13565:77:43"},"nodeType":"YulFunctionCall","src":"13565:79:43"},"nodeType":"YulExpressionStatement","src":"13565:79:43"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"13535:6:43"},{"kind":"number","nodeType":"YulLiteral","src":"13543:18:43","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"13532:2:43"},"nodeType":"YulFunctionCall","src":"13532:30:43"},"nodeType":"YulIf","src":"13529:117:43"},{"nodeType":"YulAssignment","src":"13660:87:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13719:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"13730:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13715:3:43"},"nodeType":"YulFunctionCall","src":"13715:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"13739:7:43"}],"functionName":{"name":"abi_decode_t_array$_t_uint96_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"13670:44:43"},"nodeType":"YulFunctionCall","src":"13670:77:43"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"13660:6:43"}]}]},{"nodeType":"YulBlock","src":"13767:303:43","statements":[{"nodeType":"YulVariableDeclaration","src":"13782:46:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13813:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"13824:2:43","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13809:3:43"},"nodeType":"YulFunctionCall","src":"13809:18:43"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"13796:12:43"},"nodeType":"YulFunctionCall","src":"13796:32:43"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"13786:6:43","type":""}]},{"body":{"nodeType":"YulBlock","src":"13875:83:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"13877:77:43"},"nodeType":"YulFunctionCall","src":"13877:79:43"},"nodeType":"YulExpressionStatement","src":"13877:79:43"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"13847:6:43"},{"kind":"number","nodeType":"YulLiteral","src":"13855:18:43","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"13844:2:43"},"nodeType":"YulFunctionCall","src":"13844:30:43"},"nodeType":"YulIf","src":"13841:117:43"},{"nodeType":"YulAssignment","src":"13972:88:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14032:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"14043:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14028:3:43"},"nodeType":"YulFunctionCall","src":"14028:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"14052:7:43"}],"functionName":{"name":"abi_decode_t_array$_t_uint256_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"13982:45:43"},"nodeType":"YulFunctionCall","src":"13982:78:43"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"13972:6:43"}]}]}]},"name":"abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint96_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12958:9:43","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"12969:7:43","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"12981:6:43","type":""},{"name":"value1","nodeType":"YulTypedName","src":"12989:6:43","type":""},{"name":"value2","nodeType":"YulTypedName","src":"12997:6:43","type":""}],"src":"12830:1247:43"},{"body":{"nodeType":"YulBlock","src":"14111:152:43","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14128:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"14131:77:43","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14121:6:43"},"nodeType":"YulFunctionCall","src":"14121:88:43"},"nodeType":"YulExpressionStatement","src":"14121:88:43"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14225:1:43","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"14228:4:43","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14218:6:43"},"nodeType":"YulFunctionCall","src":"14218:15:43"},"nodeType":"YulExpressionStatement","src":"14218:15:43"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14249:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"14252:4:43","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"14242:6:43"},"nodeType":"YulFunctionCall","src":"14242:15:43"},"nodeType":"YulExpressionStatement","src":"14242:15:43"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"14083:180:43"},{"body":{"nodeType":"YulBlock","src":"14297:152:43","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14314:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"14317:77:43","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14307:6:43"},"nodeType":"YulFunctionCall","src":"14307:88:43"},"nodeType":"YulExpressionStatement","src":"14307:88:43"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14411:1:43","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"14414:4:43","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14404:6:43"},"nodeType":"YulFunctionCall","src":"14404:15:43"},"nodeType":"YulExpressionStatement","src":"14404:15:43"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14435:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"14438:4:43","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"14428:6:43"},"nodeType":"YulFunctionCall","src":"14428:15:43"},"nodeType":"YulExpressionStatement","src":"14428:15:43"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"14269:180:43"},{"body":{"nodeType":"YulBlock","src":"14498:190:43","statements":[{"nodeType":"YulAssignment","src":"14508:33:43","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"14535:5:43"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"14517:17:43"},"nodeType":"YulFunctionCall","src":"14517:24:43"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"14508:5:43"}]},{"body":{"nodeType":"YulBlock","src":"14631:22:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"14633:16:43"},"nodeType":"YulFunctionCall","src":"14633:18:43"},"nodeType":"YulExpressionStatement","src":"14633:18:43"}]},"condition":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"14556:5:43"},{"kind":"number","nodeType":"YulLiteral","src":"14563:66:43","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"14553:2:43"},"nodeType":"YulFunctionCall","src":"14553:77:43"},"nodeType":"YulIf","src":"14550:103:43"},{"nodeType":"YulAssignment","src":"14662:20:43","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"14673:5:43"},{"kind":"number","nodeType":"YulLiteral","src":"14680:1:43","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14669:3:43"},"nodeType":"YulFunctionCall","src":"14669:13:43"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"14662:3:43"}]}]},"name":"increment_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"14484:5:43","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"14494:3:43","type":""}],"src":"14455:233:43"},{"body":{"nodeType":"YulBlock","src":"14739:149:43","statements":[{"nodeType":"YulAssignment","src":"14749:25:43","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"14772:1:43"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"14754:17:43"},"nodeType":"YulFunctionCall","src":"14754:20:43"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"14749:1:43"}]},{"nodeType":"YulAssignment","src":"14783:25:43","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"14806:1:43"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"14788:17:43"},"nodeType":"YulFunctionCall","src":"14788:20:43"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"14783:1:43"}]},{"nodeType":"YulAssignment","src":"14817:17:43","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"14829:1:43"},{"name":"y","nodeType":"YulIdentifier","src":"14832:1:43"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"14825:3:43"},"nodeType":"YulFunctionCall","src":"14825:9:43"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"14817:4:43"}]},{"body":{"nodeType":"YulBlock","src":"14859:22:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"14861:16:43"},"nodeType":"YulFunctionCall","src":"14861:18:43"},"nodeType":"YulExpressionStatement","src":"14861:18:43"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"14850:4:43"},{"name":"x","nodeType":"YulIdentifier","src":"14856:1:43"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"14847:2:43"},"nodeType":"YulFunctionCall","src":"14847:11:43"},"nodeType":"YulIf","src":"14844:37:43"}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"14725:1:43","type":""},{"name":"y","nodeType":"YulTypedName","src":"14728:1:43","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"14734:4:43","type":""}],"src":"14694:194:43"},{"body":{"nodeType":"YulBlock","src":"14938:147:43","statements":[{"nodeType":"YulAssignment","src":"14948:25:43","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"14971:1:43"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"14953:17:43"},"nodeType":"YulFunctionCall","src":"14953:20:43"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"14948:1:43"}]},{"nodeType":"YulAssignment","src":"14982:25:43","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"15005:1:43"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"14987:17:43"},"nodeType":"YulFunctionCall","src":"14987:20:43"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"14982:1:43"}]},{"nodeType":"YulAssignment","src":"15016:16:43","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"15027:1:43"},{"name":"y","nodeType":"YulIdentifier","src":"15030:1:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15023:3:43"},"nodeType":"YulFunctionCall","src":"15023:9:43"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"15016:3:43"}]},{"body":{"nodeType":"YulBlock","src":"15056:22:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"15058:16:43"},"nodeType":"YulFunctionCall","src":"15058:18:43"},"nodeType":"YulExpressionStatement","src":"15058:18:43"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"15048:1:43"},{"name":"sum","nodeType":"YulIdentifier","src":"15051:3:43"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"15045:2:43"},"nodeType":"YulFunctionCall","src":"15045:10:43"},"nodeType":"YulIf","src":"15042:36:43"}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"14925:1:43","type":""},{"name":"y","nodeType":"YulTypedName","src":"14928:1:43","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"14934:3:43","type":""}],"src":"14894:191:43"},{"body":{"nodeType":"YulBlock","src":"15138:228:43","statements":[{"nodeType":"YulAssignment","src":"15148:24:43","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"15170:1:43"}],"functionName":{"name":"cleanup_t_uint96","nodeType":"YulIdentifier","src":"15153:16:43"},"nodeType":"YulFunctionCall","src":"15153:19:43"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"15148:1:43"}]},{"nodeType":"YulAssignment","src":"15181:24:43","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"15203:1:43"}],"functionName":{"name":"cleanup_t_uint96","nodeType":"YulIdentifier","src":"15186:16:43"},"nodeType":"YulFunctionCall","src":"15186:19:43"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"15181:1:43"}]},{"nodeType":"YulVariableDeclaration","src":"15214:28:43","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"15237:1:43"},{"name":"y","nodeType":"YulIdentifier","src":"15240:1:43"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"15233:3:43"},"nodeType":"YulFunctionCall","src":"15233:9:43"},"variables":[{"name":"product_raw","nodeType":"YulTypedName","src":"15218:11:43","type":""}]},{"nodeType":"YulAssignment","src":"15251:40:43","value":{"arguments":[{"name":"product_raw","nodeType":"YulIdentifier","src":"15279:11:43"}],"functionName":{"name":"cleanup_t_uint96","nodeType":"YulIdentifier","src":"15262:16:43"},"nodeType":"YulFunctionCall","src":"15262:29:43"},"variableNames":[{"name":"product","nodeType":"YulIdentifier","src":"15251:7:43"}]},{"body":{"nodeType":"YulBlock","src":"15337:22:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"15339:16:43"},"nodeType":"YulFunctionCall","src":"15339:18:43"},"nodeType":"YulExpressionStatement","src":"15339:18:43"}]},"condition":{"arguments":[{"arguments":[{"name":"product","nodeType":"YulIdentifier","src":"15314:7:43"},{"name":"product_raw","nodeType":"YulIdentifier","src":"15323:11:43"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"15311:2:43"},"nodeType":"YulFunctionCall","src":"15311:24:43"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"15304:6:43"},"nodeType":"YulFunctionCall","src":"15304:32:43"},"nodeType":"YulIf","src":"15301:58:43"}]},"name":"checked_mul_t_uint96","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"15121:1:43","type":""},{"name":"y","nodeType":"YulTypedName","src":"15124:1:43","type":""}],"returnVariables":[{"name":"product","nodeType":"YulTypedName","src":"15130:7:43","type":""}],"src":"15091:275:43"},{"body":{"nodeType":"YulBlock","src":"15400:152:43","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15417:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"15420:77:43","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15410:6:43"},"nodeType":"YulFunctionCall","src":"15410:88:43"},"nodeType":"YulExpressionStatement","src":"15410:88:43"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15514:1:43","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"15517:4:43","type":"","value":"0x12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15507:6:43"},"nodeType":"YulFunctionCall","src":"15507:15:43"},"nodeType":"YulExpressionStatement","src":"15507:15:43"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15538:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"15541:4:43","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"15531:6:43"},"nodeType":"YulFunctionCall","src":"15531:15:43"},"nodeType":"YulExpressionStatement","src":"15531:15:43"}]},"name":"panic_error_0x12","nodeType":"YulFunctionDefinition","src":"15372:180:43"},{"body":{"nodeType":"YulBlock","src":"15599:141:43","statements":[{"nodeType":"YulAssignment","src":"15609:24:43","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"15631:1:43"}],"functionName":{"name":"cleanup_t_uint96","nodeType":"YulIdentifier","src":"15614:16:43"},"nodeType":"YulFunctionCall","src":"15614:19:43"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"15609:1:43"}]},{"nodeType":"YulAssignment","src":"15642:24:43","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"15664:1:43"}],"functionName":{"name":"cleanup_t_uint96","nodeType":"YulIdentifier","src":"15647:16:43"},"nodeType":"YulFunctionCall","src":"15647:19:43"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"15642:1:43"}]},{"body":{"nodeType":"YulBlock","src":"15688:22:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x12","nodeType":"YulIdentifier","src":"15690:16:43"},"nodeType":"YulFunctionCall","src":"15690:18:43"},"nodeType":"YulExpressionStatement","src":"15690:18:43"}]},"condition":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"15685:1:43"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"15678:6:43"},"nodeType":"YulFunctionCall","src":"15678:9:43"},"nodeType":"YulIf","src":"15675:35:43"},{"nodeType":"YulAssignment","src":"15720:14:43","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"15729:1:43"},{"name":"y","nodeType":"YulIdentifier","src":"15732:1:43"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"15725:3:43"},"nodeType":"YulFunctionCall","src":"15725:9:43"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"15720:1:43"}]}]},"name":"checked_div_t_uint96","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"15588:1:43","type":""},{"name":"y","nodeType":"YulTypedName","src":"15591:1:43","type":""}],"returnVariables":[{"name":"r","nodeType":"YulTypedName","src":"15597:1:43","type":""}],"src":"15558:182:43"},{"body":{"nodeType":"YulBlock","src":"15778:28:43","statements":[{"nodeType":"YulAssignment","src":"15788:12:43","value":{"name":"value","nodeType":"YulIdentifier","src":"15795:5:43"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"15788:3:43"}]}]},"name":"identity","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"15764:5:43","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"15774:3:43","type":""}],"src":"15746:60:43"},{"body":{"nodeType":"YulBlock","src":"15872:82:43","statements":[{"nodeType":"YulAssignment","src":"15882:66:43","value":{"arguments":[{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"15940:5:43"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"15922:17:43"},"nodeType":"YulFunctionCall","src":"15922:24:43"}],"functionName":{"name":"identity","nodeType":"YulIdentifier","src":"15913:8:43"},"nodeType":"YulFunctionCall","src":"15913:34:43"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"15895:17:43"},"nodeType":"YulFunctionCall","src":"15895:53:43"},"variableNames":[{"name":"converted","nodeType":"YulIdentifier","src":"15882:9:43"}]}]},"name":"convert_t_uint160_to_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"15852:5:43","type":""}],"returnVariables":[{"name":"converted","nodeType":"YulTypedName","src":"15862:9:43","type":""}],"src":"15812:142:43"},{"body":{"nodeType":"YulBlock","src":"16020:66:43","statements":[{"nodeType":"YulAssignment","src":"16030:50:43","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"16074:5:43"}],"functionName":{"name":"convert_t_uint160_to_t_uint160","nodeType":"YulIdentifier","src":"16043:30:43"},"nodeType":"YulFunctionCall","src":"16043:37:43"},"variableNames":[{"name":"converted","nodeType":"YulIdentifier","src":"16030:9:43"}]}]},"name":"convert_t_uint160_to_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"16000:5:43","type":""}],"returnVariables":[{"name":"converted","nodeType":"YulTypedName","src":"16010:9:43","type":""}],"src":"15960:126:43"},{"body":{"nodeType":"YulBlock","src":"16172:66:43","statements":[{"nodeType":"YulAssignment","src":"16182:50:43","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"16226:5:43"}],"functionName":{"name":"convert_t_uint160_to_t_address","nodeType":"YulIdentifier","src":"16195:30:43"},"nodeType":"YulFunctionCall","src":"16195:37:43"},"variableNames":[{"name":"converted","nodeType":"YulIdentifier","src":"16182:9:43"}]}]},"name":"convert_t_contract$_ISuperToken_$6947_to_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"16152:5:43","type":""}],"returnVariables":[{"name":"converted","nodeType":"YulTypedName","src":"16162:9:43","type":""}],"src":"16092:146:43"},{"body":{"nodeType":"YulBlock","src":"16329:86:43","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16346:3:43"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"16402:5:43"}],"functionName":{"name":"convert_t_contract$_ISuperToken_$6947_to_t_address","nodeType":"YulIdentifier","src":"16351:50:43"},"nodeType":"YulFunctionCall","src":"16351:57:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16339:6:43"},"nodeType":"YulFunctionCall","src":"16339:70:43"},"nodeType":"YulExpressionStatement","src":"16339:70:43"}]},"name":"abi_encode_t_contract$_ISuperToken_$6947_to_t_address_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"16317:5:43","type":""},{"name":"pos","nodeType":"YulTypedName","src":"16324:3:43","type":""}],"src":"16244:171:43"},{"body":{"nodeType":"YulBlock","src":"16486:53:43","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16503:3:43"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"16526:5:43"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"16508:17:43"},"nodeType":"YulFunctionCall","src":"16508:24:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16496:6:43"},"nodeType":"YulFunctionCall","src":"16496:37:43"},"nodeType":"YulExpressionStatement","src":"16496:37:43"}]},"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"16474:5:43","type":""},{"name":"pos","nodeType":"YulTypedName","src":"16481:3:43","type":""}],"src":"16421:118:43"},{"body":{"nodeType":"YulBlock","src":"16719:308:43","statements":[{"nodeType":"YulAssignment","src":"16729:26:43","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16741:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"16752:2:43","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16737:3:43"},"nodeType":"YulFunctionCall","src":"16737:18:43"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"16729:4:43"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"16829:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16842:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"16853:1:43","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16838:3:43"},"nodeType":"YulFunctionCall","src":"16838:17:43"}],"functionName":{"name":"abi_encode_t_contract$_ISuperToken_$6947_to_t_address_fromStack","nodeType":"YulIdentifier","src":"16765:63:43"},"nodeType":"YulFunctionCall","src":"16765:91:43"},"nodeType":"YulExpressionStatement","src":"16765:91:43"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"16910:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16923:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"16934:2:43","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16919:3:43"},"nodeType":"YulFunctionCall","src":"16919:18:43"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"16866:43:43"},"nodeType":"YulFunctionCall","src":"16866:72:43"},"nodeType":"YulExpressionStatement","src":"16866:72:43"},{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"16992:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17005:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"17016:2:43","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17001:3:43"},"nodeType":"YulFunctionCall","src":"17001:18:43"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"16948:43:43"},"nodeType":"YulFunctionCall","src":"16948:72:43"},"nodeType":"YulExpressionStatement","src":"16948:72:43"}]},"name":"abi_encode_tuple_t_contract$_ISuperToken_$6947_t_address_t_address__to_t_address_t_address_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"16675:9:43","type":""},{"name":"value2","nodeType":"YulTypedName","src":"16687:6:43","type":""},{"name":"value1","nodeType":"YulTypedName","src":"16695:6:43","type":""},{"name":"value0","nodeType":"YulTypedName","src":"16703:6:43","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"16714:4:43","type":""}],"src":"16545:482:43"},{"body":{"nodeType":"YulBlock","src":"17096:80:43","statements":[{"nodeType":"YulAssignment","src":"17106:22:43","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"17121:6:43"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"17115:5:43"},"nodeType":"YulFunctionCall","src":"17115:13:43"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"17106:5:43"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"17164:5:43"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"17137:26:43"},"nodeType":"YulFunctionCall","src":"17137:33:43"},"nodeType":"YulExpressionStatement","src":"17137:33:43"}]},"name":"abi_decode_t_uint256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"17074:6:43","type":""},{"name":"end","nodeType":"YulTypedName","src":"17082:3:43","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"17090:5:43","type":""}],"src":"17033:143:43"},{"body":{"nodeType":"YulBlock","src":"17223:77:43","statements":[{"body":{"nodeType":"YulBlock","src":"17278:16:43","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"17287:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"17290:1:43","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"17280:6:43"},"nodeType":"YulFunctionCall","src":"17280:12:43"},"nodeType":"YulExpressionStatement","src":"17280:12:43"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"17246:5:43"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"17269:5:43"}],"functionName":{"name":"cleanup_t_int96","nodeType":"YulIdentifier","src":"17253:15:43"},"nodeType":"YulFunctionCall","src":"17253:22:43"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"17243:2:43"},"nodeType":"YulFunctionCall","src":"17243:33:43"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"17236:6:43"},"nodeType":"YulFunctionCall","src":"17236:41:43"},"nodeType":"YulIf","src":"17233:61:43"}]},"name":"validator_revert_t_int96","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"17216:5:43","type":""}],"src":"17182:118:43"},{"body":{"nodeType":"YulBlock","src":"17367:78:43","statements":[{"nodeType":"YulAssignment","src":"17377:22:43","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"17392:6:43"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"17386:5:43"},"nodeType":"YulFunctionCall","src":"17386:13:43"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"17377:5:43"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"17433:5:43"}],"functionName":{"name":"validator_revert_t_int96","nodeType":"YulIdentifier","src":"17408:24:43"},"nodeType":"YulFunctionCall","src":"17408:31:43"},"nodeType":"YulExpressionStatement","src":"17408:31:43"}]},"name":"abi_decode_t_int96_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"17345:6:43","type":""},{"name":"end","nodeType":"YulTypedName","src":"17353:3:43","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"17361:5:43","type":""}],"src":"17306:139:43"},{"body":{"nodeType":"YulBlock","src":"17577:690:43","statements":[{"body":{"nodeType":"YulBlock","src":"17624:83:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"17626:77:43"},"nodeType":"YulFunctionCall","src":"17626:79:43"},"nodeType":"YulExpressionStatement","src":"17626:79:43"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"17598:7:43"},{"name":"headStart","nodeType":"YulIdentifier","src":"17607:9:43"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"17594:3:43"},"nodeType":"YulFunctionCall","src":"17594:23:43"},{"kind":"number","nodeType":"YulLiteral","src":"17619:3:43","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"17590:3:43"},"nodeType":"YulFunctionCall","src":"17590:33:43"},"nodeType":"YulIf","src":"17587:120:43"},{"nodeType":"YulBlock","src":"17717:128:43","statements":[{"nodeType":"YulVariableDeclaration","src":"17732:15:43","value":{"kind":"number","nodeType":"YulLiteral","src":"17746:1:43","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"17736:6:43","type":""}]},{"nodeType":"YulAssignment","src":"17761:74:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17807:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"17818:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17803:3:43"},"nodeType":"YulFunctionCall","src":"17803:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"17827:7:43"}],"functionName":{"name":"abi_decode_t_uint256_fromMemory","nodeType":"YulIdentifier","src":"17771:31:43"},"nodeType":"YulFunctionCall","src":"17771:64:43"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"17761:6:43"}]}]},{"nodeType":"YulBlock","src":"17855:127:43","statements":[{"nodeType":"YulVariableDeclaration","src":"17870:16:43","value":{"kind":"number","nodeType":"YulLiteral","src":"17884:2:43","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"17874:6:43","type":""}]},{"nodeType":"YulAssignment","src":"17900:72:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17944:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"17955:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17940:3:43"},"nodeType":"YulFunctionCall","src":"17940:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"17964:7:43"}],"functionName":{"name":"abi_decode_t_int96_fromMemory","nodeType":"YulIdentifier","src":"17910:29:43"},"nodeType":"YulFunctionCall","src":"17910:62:43"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"17900:6:43"}]}]},{"nodeType":"YulBlock","src":"17992:129:43","statements":[{"nodeType":"YulVariableDeclaration","src":"18007:16:43","value":{"kind":"number","nodeType":"YulLiteral","src":"18021:2:43","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"18011:6:43","type":""}]},{"nodeType":"YulAssignment","src":"18037:74:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18083:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"18094:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18079:3:43"},"nodeType":"YulFunctionCall","src":"18079:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"18103:7:43"}],"functionName":{"name":"abi_decode_t_uint256_fromMemory","nodeType":"YulIdentifier","src":"18047:31:43"},"nodeType":"YulFunctionCall","src":"18047:64:43"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"18037:6:43"}]}]},{"nodeType":"YulBlock","src":"18131:129:43","statements":[{"nodeType":"YulVariableDeclaration","src":"18146:16:43","value":{"kind":"number","nodeType":"YulLiteral","src":"18160:2:43","type":"","value":"96"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"18150:6:43","type":""}]},{"nodeType":"YulAssignment","src":"18176:74:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18222:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"18233:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18218:3:43"},"nodeType":"YulFunctionCall","src":"18218:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"18242:7:43"}],"functionName":{"name":"abi_decode_t_uint256_fromMemory","nodeType":"YulIdentifier","src":"18186:31:43"},"nodeType":"YulFunctionCall","src":"18186:64:43"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"18176:6:43"}]}]}]},"name":"abi_decode_tuple_t_uint256t_int96t_uint256t_uint256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"17523:9:43","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"17534:7:43","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"17546:6:43","type":""},{"name":"value1","nodeType":"YulTypedName","src":"17554:6:43","type":""},{"name":"value2","nodeType":"YulTypedName","src":"17562:6:43","type":""},{"name":"value3","nodeType":"YulTypedName","src":"17570:6:43","type":""}],"src":"17451:816:43"},{"body":{"nodeType":"YulBlock","src":"18331:40:43","statements":[{"nodeType":"YulAssignment","src":"18342:22:43","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"18358:5:43"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"18352:5:43"},"nodeType":"YulFunctionCall","src":"18352:12:43"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"18342:6:43"}]}]},"name":"array_length_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"18314:5:43","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"18324:6:43","type":""}],"src":"18273:98:43"},{"body":{"nodeType":"YulBlock","src":"18472:73:43","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18489:3:43"},{"name":"length","nodeType":"YulIdentifier","src":"18494:6:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18482:6:43"},"nodeType":"YulFunctionCall","src":"18482:19:43"},"nodeType":"YulExpressionStatement","src":"18482:19:43"},{"nodeType":"YulAssignment","src":"18510:29:43","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18529:3:43"},{"kind":"number","nodeType":"YulLiteral","src":"18534:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18525:3:43"},"nodeType":"YulFunctionCall","src":"18525:14:43"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"18510:11:43"}]}]},"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"18444:3:43","type":""},{"name":"length","nodeType":"YulTypedName","src":"18449:6:43","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"18460:11:43","type":""}],"src":"18377:168:43"},{"body":{"nodeType":"YulBlock","src":"18613:184:43","statements":[{"nodeType":"YulVariableDeclaration","src":"18623:10:43","value":{"kind":"number","nodeType":"YulLiteral","src":"18632:1:43","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"18627:1:43","type":""}]},{"body":{"nodeType":"YulBlock","src":"18692:63:43","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"18717:3:43"},{"name":"i","nodeType":"YulIdentifier","src":"18722:1:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18713:3:43"},"nodeType":"YulFunctionCall","src":"18713:11:43"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"18736:3:43"},{"name":"i","nodeType":"YulIdentifier","src":"18741:1:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18732:3:43"},"nodeType":"YulFunctionCall","src":"18732:11:43"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"18726:5:43"},"nodeType":"YulFunctionCall","src":"18726:18:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18706:6:43"},"nodeType":"YulFunctionCall","src":"18706:39:43"},"nodeType":"YulExpressionStatement","src":"18706:39:43"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"18653:1:43"},{"name":"length","nodeType":"YulIdentifier","src":"18656:6:43"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"18650:2:43"},"nodeType":"YulFunctionCall","src":"18650:13:43"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"18664:19:43","statements":[{"nodeType":"YulAssignment","src":"18666:15:43","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"18675:1:43"},{"kind":"number","nodeType":"YulLiteral","src":"18678:2:43","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18671:3:43"},"nodeType":"YulFunctionCall","src":"18671:10:43"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"18666:1:43"}]}]},"pre":{"nodeType":"YulBlock","src":"18646:3:43","statements":[]},"src":"18642:113:43"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"18775:3:43"},{"name":"length","nodeType":"YulIdentifier","src":"18780:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18771:3:43"},"nodeType":"YulFunctionCall","src":"18771:16:43"},{"kind":"number","nodeType":"YulLiteral","src":"18789:1:43","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18764:6:43"},"nodeType":"YulFunctionCall","src":"18764:27:43"},"nodeType":"YulExpressionStatement","src":"18764:27:43"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"18595:3:43","type":""},{"name":"dst","nodeType":"YulTypedName","src":"18600:3:43","type":""},{"name":"length","nodeType":"YulTypedName","src":"18605:6:43","type":""}],"src":"18551:246:43"},{"body":{"nodeType":"YulBlock","src":"18893:283:43","statements":[{"nodeType":"YulVariableDeclaration","src":"18903:52:43","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"18949:5:43"}],"functionName":{"name":"array_length_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"18917:31:43"},"nodeType":"YulFunctionCall","src":"18917:38:43"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"18907:6:43","type":""}]},{"nodeType":"YulAssignment","src":"18964:77:43","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"19029:3:43"},{"name":"length","nodeType":"YulIdentifier","src":"19034:6:43"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"18971:57:43"},"nodeType":"YulFunctionCall","src":"18971:70:43"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"18964:3:43"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"19089:5:43"},{"kind":"number","nodeType":"YulLiteral","src":"19096:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19085:3:43"},"nodeType":"YulFunctionCall","src":"19085:16:43"},{"name":"pos","nodeType":"YulIdentifier","src":"19103:3:43"},{"name":"length","nodeType":"YulIdentifier","src":"19108:6:43"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"19050:34:43"},"nodeType":"YulFunctionCall","src":"19050:65:43"},"nodeType":"YulExpressionStatement","src":"19050:65:43"},{"nodeType":"YulAssignment","src":"19124:46:43","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"19135:3:43"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"19162:6:43"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"19140:21:43"},"nodeType":"YulFunctionCall","src":"19140:29:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19131:3:43"},"nodeType":"YulFunctionCall","src":"19131:39:43"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"19124:3:43"}]}]},"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"18874:5:43","type":""},{"name":"pos","nodeType":"YulTypedName","src":"18881:3:43","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"18889:3:43","type":""}],"src":"18803:373:43"},{"body":{"nodeType":"YulBlock","src":"19402:460:43","statements":[{"nodeType":"YulAssignment","src":"19412:27:43","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19424:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"19435:3:43","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19420:3:43"},"nodeType":"YulFunctionCall","src":"19420:19:43"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"19412:4:43"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"19513:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19526:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"19537:1:43","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19522:3:43"},"nodeType":"YulFunctionCall","src":"19522:17:43"}],"functionName":{"name":"abi_encode_t_contract$_ISuperToken_$6947_to_t_address_fromStack","nodeType":"YulIdentifier","src":"19449:63:43"},"nodeType":"YulFunctionCall","src":"19449:91:43"},"nodeType":"YulExpressionStatement","src":"19449:91:43"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"19594:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19607:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"19618:2:43","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19603:3:43"},"nodeType":"YulFunctionCall","src":"19603:18:43"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"19550:43:43"},"nodeType":"YulFunctionCall","src":"19550:72:43"},"nodeType":"YulExpressionStatement","src":"19550:72:43"},{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"19676:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19689:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"19700:2:43","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19685:3:43"},"nodeType":"YulFunctionCall","src":"19685:18:43"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"19632:43:43"},"nodeType":"YulFunctionCall","src":"19632:72:43"},"nodeType":"YulExpressionStatement","src":"19632:72:43"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19725:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"19736:2:43","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19721:3:43"},"nodeType":"YulFunctionCall","src":"19721:18:43"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"19745:4:43"},{"name":"headStart","nodeType":"YulIdentifier","src":"19751:9:43"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"19741:3:43"},"nodeType":"YulFunctionCall","src":"19741:20:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19714:6:43"},"nodeType":"YulFunctionCall","src":"19714:48:43"},"nodeType":"YulExpressionStatement","src":"19714:48:43"},{"nodeType":"YulAssignment","src":"19771:84:43","value":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"19841:6:43"},{"name":"tail","nodeType":"YulIdentifier","src":"19850:4:43"}],"functionName":{"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"19779:61:43"},"nodeType":"YulFunctionCall","src":"19779:76:43"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"19771:4:43"}]}]},"name":"abi_encode_tuple_t_contract$_ISuperToken_$6947_t_address_t_address_t_bytes_memory_ptr__to_t_address_t_address_t_address_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"19350:9:43","type":""},{"name":"value3","nodeType":"YulTypedName","src":"19362:6:43","type":""},{"name":"value2","nodeType":"YulTypedName","src":"19370:6:43","type":""},{"name":"value1","nodeType":"YulTypedName","src":"19378:6:43","type":""},{"name":"value0","nodeType":"YulTypedName","src":"19386:6:43","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"19397:4:43","type":""}],"src":"19182:680:43"},{"body":{"nodeType":"YulBlock","src":"19961:66:43","statements":[{"nodeType":"YulAssignment","src":"19971:50:43","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"20015:5:43"}],"functionName":{"name":"convert_t_uint160_to_t_address","nodeType":"YulIdentifier","src":"19984:30:43"},"nodeType":"YulFunctionCall","src":"19984:37:43"},"variableNames":[{"name":"converted","nodeType":"YulIdentifier","src":"19971:9:43"}]}]},"name":"convert_t_contract$_IConstantFlowAgreementV1_$5487_to_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"19941:5:43","type":""}],"returnVariables":[{"name":"converted","nodeType":"YulTypedName","src":"19951:9:43","type":""}],"src":"19868:159:43"},{"body":{"nodeType":"YulBlock","src":"20131:99:43","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"20148:3:43"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"20217:5:43"}],"functionName":{"name":"convert_t_contract$_IConstantFlowAgreementV1_$5487_to_t_address","nodeType":"YulIdentifier","src":"20153:63:43"},"nodeType":"YulFunctionCall","src":"20153:70:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20141:6:43"},"nodeType":"YulFunctionCall","src":"20141:83:43"},"nodeType":"YulExpressionStatement","src":"20141:83:43"}]},"name":"abi_encode_t_contract$_IConstantFlowAgreementV1_$5487_to_t_address_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"20119:5:43","type":""},{"name":"pos","nodeType":"YulTypedName","src":"20126:3:43","type":""}],"src":"20033:197:43"},{"body":{"nodeType":"YulBlock","src":"20459:459:43","statements":[{"nodeType":"YulAssignment","src":"20469:26:43","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20481:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"20492:2:43","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20477:3:43"},"nodeType":"YulFunctionCall","src":"20477:18:43"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"20469:4:43"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"20582:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20595:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"20606:1:43","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20591:3:43"},"nodeType":"YulFunctionCall","src":"20591:17:43"}],"functionName":{"name":"abi_encode_t_contract$_IConstantFlowAgreementV1_$5487_to_t_address_fromStack","nodeType":"YulIdentifier","src":"20505:76:43"},"nodeType":"YulFunctionCall","src":"20505:104:43"},"nodeType":"YulExpressionStatement","src":"20505:104:43"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20630:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"20641:2:43","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20626:3:43"},"nodeType":"YulFunctionCall","src":"20626:18:43"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"20650:4:43"},{"name":"headStart","nodeType":"YulIdentifier","src":"20656:9:43"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"20646:3:43"},"nodeType":"YulFunctionCall","src":"20646:20:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20619:6:43"},"nodeType":"YulFunctionCall","src":"20619:48:43"},"nodeType":"YulExpressionStatement","src":"20619:48:43"},{"nodeType":"YulAssignment","src":"20676:84:43","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"20746:6:43"},{"name":"tail","nodeType":"YulIdentifier","src":"20755:4:43"}],"functionName":{"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"20684:61:43"},"nodeType":"YulFunctionCall","src":"20684:76:43"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"20676:4:43"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20781:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"20792:2:43","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20777:3:43"},"nodeType":"YulFunctionCall","src":"20777:18:43"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"20801:4:43"},{"name":"headStart","nodeType":"YulIdentifier","src":"20807:9:43"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"20797:3:43"},"nodeType":"YulFunctionCall","src":"20797:20:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20770:6:43"},"nodeType":"YulFunctionCall","src":"20770:48:43"},"nodeType":"YulExpressionStatement","src":"20770:48:43"},{"nodeType":"YulAssignment","src":"20827:84:43","value":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"20897:6:43"},{"name":"tail","nodeType":"YulIdentifier","src":"20906:4:43"}],"functionName":{"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"20835:61:43"},"nodeType":"YulFunctionCall","src":"20835:76:43"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"20827:4:43"}]}]},"name":"abi_encode_tuple_t_contract$_IConstantFlowAgreementV1_$5487_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"20415:9:43","type":""},{"name":"value2","nodeType":"YulTypedName","src":"20427:6:43","type":""},{"name":"value1","nodeType":"YulTypedName","src":"20435:6:43","type":""},{"name":"value0","nodeType":"YulTypedName","src":"20443:6:43","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"20454:4:43","type":""}],"src":"20236:682:43"},{"body":{"nodeType":"YulBlock","src":"21013:28:43","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"21030:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"21033:1:43","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"21023:6:43"},"nodeType":"YulFunctionCall","src":"21023:12:43"},"nodeType":"YulExpressionStatement","src":"21023:12:43"}]},"name":"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae","nodeType":"YulFunctionDefinition","src":"20924:117:43"},{"body":{"nodeType":"YulBlock","src":"21113:241:43","statements":[{"body":{"nodeType":"YulBlock","src":"21218:22:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"21220:16:43"},"nodeType":"YulFunctionCall","src":"21220:18:43"},"nodeType":"YulExpressionStatement","src":"21220:18:43"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"21190:6:43"},{"kind":"number","nodeType":"YulLiteral","src":"21198:18:43","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"21187:2:43"},"nodeType":"YulFunctionCall","src":"21187:30:43"},"nodeType":"YulIf","src":"21184:56:43"},{"nodeType":"YulAssignment","src":"21250:37:43","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"21280:6:43"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"21258:21:43"},"nodeType":"YulFunctionCall","src":"21258:29:43"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"21250:4:43"}]},{"nodeType":"YulAssignment","src":"21324:23:43","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"21336:4:43"},{"kind":"number","nodeType":"YulLiteral","src":"21342:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21332:3:43"},"nodeType":"YulFunctionCall","src":"21332:15:43"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"21324:4:43"}]}]},"name":"array_allocation_size_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"21097:6:43","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"21108:4:43","type":""}],"src":"21047:307:43"},{"body":{"nodeType":"YulBlock","src":"21454:338:43","statements":[{"nodeType":"YulAssignment","src":"21464:74:43","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"21530:6:43"}],"functionName":{"name":"array_allocation_size_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"21489:40:43"},"nodeType":"YulFunctionCall","src":"21489:48:43"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"21473:15:43"},"nodeType":"YulFunctionCall","src":"21473:65:43"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"21464:5:43"}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"21554:5:43"},{"name":"length","nodeType":"YulIdentifier","src":"21561:6:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21547:6:43"},"nodeType":"YulFunctionCall","src":"21547:21:43"},"nodeType":"YulExpressionStatement","src":"21547:21:43"},{"nodeType":"YulVariableDeclaration","src":"21577:27:43","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"21592:5:43"},{"kind":"number","nodeType":"YulLiteral","src":"21599:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21588:3:43"},"nodeType":"YulFunctionCall","src":"21588:16:43"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"21581:3:43","type":""}]},{"body":{"nodeType":"YulBlock","src":"21642:83:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae","nodeType":"YulIdentifier","src":"21644:77:43"},"nodeType":"YulFunctionCall","src":"21644:79:43"},"nodeType":"YulExpressionStatement","src":"21644:79:43"}]},"condition":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"21623:3:43"},{"name":"length","nodeType":"YulIdentifier","src":"21628:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21619:3:43"},"nodeType":"YulFunctionCall","src":"21619:16:43"},{"name":"end","nodeType":"YulIdentifier","src":"21637:3:43"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"21616:2:43"},"nodeType":"YulFunctionCall","src":"21616:25:43"},"nodeType":"YulIf","src":"21613:112:43"},{"expression":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"21769:3:43"},{"name":"dst","nodeType":"YulIdentifier","src":"21774:3:43"},{"name":"length","nodeType":"YulIdentifier","src":"21779:6:43"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"21734:34:43"},"nodeType":"YulFunctionCall","src":"21734:52:43"},"nodeType":"YulExpressionStatement","src":"21734:52:43"}]},"name":"abi_decode_available_length_t_bytes_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"21427:3:43","type":""},{"name":"length","nodeType":"YulTypedName","src":"21432:6:43","type":""},{"name":"end","nodeType":"YulTypedName","src":"21440:3:43","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"21448:5:43","type":""}],"src":"21360:432:43"},{"body":{"nodeType":"YulBlock","src":"21883:281:43","statements":[{"body":{"nodeType":"YulBlock","src":"21932:83:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"21934:77:43"},"nodeType":"YulFunctionCall","src":"21934:79:43"},"nodeType":"YulExpressionStatement","src":"21934:79:43"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"21911:6:43"},{"kind":"number","nodeType":"YulLiteral","src":"21919:4:43","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21907:3:43"},"nodeType":"YulFunctionCall","src":"21907:17:43"},{"name":"end","nodeType":"YulIdentifier","src":"21926:3:43"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"21903:3:43"},"nodeType":"YulFunctionCall","src":"21903:27:43"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"21896:6:43"},"nodeType":"YulFunctionCall","src":"21896:35:43"},"nodeType":"YulIf","src":"21893:122:43"},{"nodeType":"YulVariableDeclaration","src":"22024:27:43","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"22044:6:43"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"22038:5:43"},"nodeType":"YulFunctionCall","src":"22038:13:43"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"22028:6:43","type":""}]},{"nodeType":"YulAssignment","src":"22060:98:43","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"22131:6:43"},{"kind":"number","nodeType":"YulLiteral","src":"22139:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22127:3:43"},"nodeType":"YulFunctionCall","src":"22127:17:43"},{"name":"length","nodeType":"YulIdentifier","src":"22146:6:43"},{"name":"end","nodeType":"YulIdentifier","src":"22154:3:43"}],"functionName":{"name":"abi_decode_available_length_t_bytes_memory_ptr_fromMemory","nodeType":"YulIdentifier","src":"22069:57:43"},"nodeType":"YulFunctionCall","src":"22069:89:43"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"22060:5:43"}]}]},"name":"abi_decode_t_bytes_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"21861:6:43","type":""},{"name":"end","nodeType":"YulTypedName","src":"21869:3:43","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"21877:5:43","type":""}],"src":"21811:353:43"},{"body":{"nodeType":"YulBlock","src":"22256:436:43","statements":[{"body":{"nodeType":"YulBlock","src":"22302:83:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"22304:77:43"},"nodeType":"YulFunctionCall","src":"22304:79:43"},"nodeType":"YulExpressionStatement","src":"22304:79:43"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"22277:7:43"},{"name":"headStart","nodeType":"YulIdentifier","src":"22286:9:43"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"22273:3:43"},"nodeType":"YulFunctionCall","src":"22273:23:43"},{"kind":"number","nodeType":"YulLiteral","src":"22298:2:43","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"22269:3:43"},"nodeType":"YulFunctionCall","src":"22269:32:43"},"nodeType":"YulIf","src":"22266:119:43"},{"nodeType":"YulBlock","src":"22395:290:43","statements":[{"nodeType":"YulVariableDeclaration","src":"22410:38:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22434:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"22445:1:43","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22430:3:43"},"nodeType":"YulFunctionCall","src":"22430:17:43"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"22424:5:43"},"nodeType":"YulFunctionCall","src":"22424:24:43"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"22414:6:43","type":""}]},{"body":{"nodeType":"YulBlock","src":"22495:83:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"22497:77:43"},"nodeType":"YulFunctionCall","src":"22497:79:43"},"nodeType":"YulExpressionStatement","src":"22497:79:43"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"22467:6:43"},{"kind":"number","nodeType":"YulLiteral","src":"22475:18:43","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"22464:2:43"},"nodeType":"YulFunctionCall","src":"22464:30:43"},"nodeType":"YulIf","src":"22461:117:43"},{"nodeType":"YulAssignment","src":"22592:83:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22647:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"22658:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22643:3:43"},"nodeType":"YulFunctionCall","src":"22643:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"22667:7:43"}],"functionName":{"name":"abi_decode_t_bytes_memory_ptr_fromMemory","nodeType":"YulIdentifier","src":"22602:40:43"},"nodeType":"YulFunctionCall","src":"22602:73:43"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"22592:6:43"}]}]}]},"name":"abi_decode_tuple_t_bytes_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"22226:9:43","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"22237:7:43","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"22249:6:43","type":""}],"src":"22170:522:43"},{"body":{"nodeType":"YulBlock","src":"22761:80:43","statements":[{"nodeType":"YulAssignment","src":"22771:22:43","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"22786:6:43"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"22780:5:43"},"nodeType":"YulFunctionCall","src":"22780:13:43"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"22771:5:43"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"22829:5:43"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"22802:26:43"},"nodeType":"YulFunctionCall","src":"22802:33:43"},"nodeType":"YulExpressionStatement","src":"22802:33:43"}]},"name":"abi_decode_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"22739:6:43","type":""},{"name":"end","nodeType":"YulTypedName","src":"22747:3:43","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"22755:5:43","type":""}],"src":"22698:143:43"},{"body":{"nodeType":"YulBlock","src":"22924:274:43","statements":[{"body":{"nodeType":"YulBlock","src":"22970:83:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"22972:77:43"},"nodeType":"YulFunctionCall","src":"22972:79:43"},"nodeType":"YulExpressionStatement","src":"22972:79:43"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"22945:7:43"},{"name":"headStart","nodeType":"YulIdentifier","src":"22954:9:43"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"22941:3:43"},"nodeType":"YulFunctionCall","src":"22941:23:43"},{"kind":"number","nodeType":"YulLiteral","src":"22966:2:43","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"22937:3:43"},"nodeType":"YulFunctionCall","src":"22937:32:43"},"nodeType":"YulIf","src":"22934:119:43"},{"nodeType":"YulBlock","src":"23063:128:43","statements":[{"nodeType":"YulVariableDeclaration","src":"23078:15:43","value":{"kind":"number","nodeType":"YulLiteral","src":"23092:1:43","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"23082:6:43","type":""}]},{"nodeType":"YulAssignment","src":"23107:74:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23153:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"23164:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23149:3:43"},"nodeType":"YulFunctionCall","src":"23149:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"23173:7:43"}],"functionName":{"name":"abi_decode_t_address_fromMemory","nodeType":"YulIdentifier","src":"23117:31:43"},"nodeType":"YulFunctionCall","src":"23117:64:43"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"23107:6:43"}]}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"22894:9:43","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"22905:7:43","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"22917:6:43","type":""}],"src":"22847:351:43"},{"body":{"nodeType":"YulBlock","src":"23333:32:43","statements":[{"nodeType":"YulAssignment","src":"23343:16:43","value":{"name":"value","nodeType":"YulIdentifier","src":"23354:5:43"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"23343:7:43"}]}]},"name":"cleanup_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"23315:5:43","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"23325:7:43","type":""}],"src":"23204:161:43"},{"body":{"nodeType":"YulBlock","src":"23416:32:43","statements":[{"nodeType":"YulAssignment","src":"23426:16:43","value":{"name":"value","nodeType":"YulIdentifier","src":"23437:5:43"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"23426:7:43"}]}]},"name":"cleanup_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"23398:5:43","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"23408:7:43","type":""}],"src":"23371:77:43"},{"body":{"nodeType":"YulBlock","src":"23495:51:43","statements":[{"nodeType":"YulAssignment","src":"23505:34:43","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"23530:1:43","type":"","value":"0"},{"name":"value","nodeType":"YulIdentifier","src":"23533:5:43"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"23526:3:43"},"nodeType":"YulFunctionCall","src":"23526:13:43"},"variableNames":[{"name":"newValue","nodeType":"YulIdentifier","src":"23505:8:43"}]}]},"name":"shift_left_0","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"23476:5:43","type":""}],"returnVariables":[{"name":"newValue","nodeType":"YulTypedName","src":"23486:8:43","type":""}],"src":"23454:92:43"},{"body":{"nodeType":"YulBlock","src":"23696:170:43","statements":[{"nodeType":"YulAssignment","src":"23706:154:43","value":{"arguments":[{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"23852:5:43"}],"functionName":{"name":"cleanup_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1","nodeType":"YulIdentifier","src":"23750:101:43"},"nodeType":"YulFunctionCall","src":"23750:108:43"}],"functionName":{"name":"shift_left_0","nodeType":"YulIdentifier","src":"23737:12:43"},"nodeType":"YulFunctionCall","src":"23737:122:43"}],"functionName":{"name":"cleanup_t_bytes32","nodeType":"YulIdentifier","src":"23719:17:43"},"nodeType":"YulFunctionCall","src":"23719:141:43"},"variableNames":[{"name":"converted","nodeType":"YulIdentifier","src":"23706:9:43"}]}]},"name":"convert_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1_to_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"23676:5:43","type":""}],"returnVariables":[{"name":"converted","nodeType":"YulTypedName","src":"23686:9:43","type":""}],"src":"23552:314:43"},{"body":{"nodeType":"YulBlock","src":"24021:150:43","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"24038:3:43"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"24158:5:43"}],"functionName":{"name":"convert_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1_to_t_bytes32","nodeType":"YulIdentifier","src":"24043:114:43"},"nodeType":"YulFunctionCall","src":"24043:121:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"24031:6:43"},"nodeType":"YulFunctionCall","src":"24031:134:43"},"nodeType":"YulExpressionStatement","src":"24031:134:43"}]},"name":"abi_encode_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1_to_t_bytes32_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"24009:5:43","type":""},{"name":"pos","nodeType":"YulTypedName","src":"24016:3:43","type":""}],"src":"23872:299:43"},{"body":{"nodeType":"YulBlock","src":"24359:208:43","statements":[{"nodeType":"YulAssignment","src":"24369:26:43","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24381:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"24392:2:43","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24377:3:43"},"nodeType":"YulFunctionCall","src":"24377:18:43"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"24369:4:43"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"24533:6:43"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24546:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"24557:1:43","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24542:3:43"},"nodeType":"YulFunctionCall","src":"24542:17:43"}],"functionName":{"name":"abi_encode_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1_to_t_bytes32_fromStack","nodeType":"YulIdentifier","src":"24405:127:43"},"nodeType":"YulFunctionCall","src":"24405:155:43"},"nodeType":"YulExpressionStatement","src":"24405:155:43"}]},"name":"abi_encode_tuple_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1__to_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"24331:9:43","type":""},{"name":"value0","nodeType":"YulTypedName","src":"24343:6:43","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"24354:4:43","type":""}],"src":"24177:390:43"},{"body":{"nodeType":"YulBlock","src":"24642:51:43","statements":[{"nodeType":"YulAssignment","src":"24652:35:43","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"24681:5:43"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"24663:17:43"},"nodeType":"YulFunctionCall","src":"24663:24:43"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"24652:7:43"}]}]},"name":"cleanup_t_contract$_ISuperAgreement_$6395","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"24624:5:43","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"24634:7:43","type":""}],"src":"24573:120:43"},{"body":{"nodeType":"YulBlock","src":"24766:103:43","statements":[{"body":{"nodeType":"YulBlock","src":"24847:16:43","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"24856:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"24859:1:43","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"24849:6:43"},"nodeType":"YulFunctionCall","src":"24849:12:43"},"nodeType":"YulExpressionStatement","src":"24849:12:43"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"24789:5:43"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"24838:5:43"}],"functionName":{"name":"cleanup_t_contract$_ISuperAgreement_$6395","nodeType":"YulIdentifier","src":"24796:41:43"},"nodeType":"YulFunctionCall","src":"24796:48:43"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"24786:2:43"},"nodeType":"YulFunctionCall","src":"24786:59:43"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"24779:6:43"},"nodeType":"YulFunctionCall","src":"24779:67:43"},"nodeType":"YulIf","src":"24776:87:43"}]},"name":"validator_revert_t_contract$_ISuperAgreement_$6395","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"24759:5:43","type":""}],"src":"24699:170:43"},{"body":{"nodeType":"YulBlock","src":"24962:104:43","statements":[{"nodeType":"YulAssignment","src":"24972:22:43","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"24987:6:43"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"24981:5:43"},"nodeType":"YulFunctionCall","src":"24981:13:43"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"24972:5:43"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"25054:5:43"}],"functionName":{"name":"validator_revert_t_contract$_ISuperAgreement_$6395","nodeType":"YulIdentifier","src":"25003:50:43"},"nodeType":"YulFunctionCall","src":"25003:57:43"},"nodeType":"YulExpressionStatement","src":"25003:57:43"}]},"name":"abi_decode_t_contract$_ISuperAgreement_$6395_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"24940:6:43","type":""},{"name":"end","nodeType":"YulTypedName","src":"24948:3:43","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"24956:5:43","type":""}],"src":"24875:191:43"},{"body":{"nodeType":"YulBlock","src":"25173:298:43","statements":[{"body":{"nodeType":"YulBlock","src":"25219:83:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"25221:77:43"},"nodeType":"YulFunctionCall","src":"25221:79:43"},"nodeType":"YulExpressionStatement","src":"25221:79:43"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"25194:7:43"},{"name":"headStart","nodeType":"YulIdentifier","src":"25203:9:43"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"25190:3:43"},"nodeType":"YulFunctionCall","src":"25190:23:43"},{"kind":"number","nodeType":"YulLiteral","src":"25215:2:43","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"25186:3:43"},"nodeType":"YulFunctionCall","src":"25186:32:43"},"nodeType":"YulIf","src":"25183:119:43"},{"nodeType":"YulBlock","src":"25312:152:43","statements":[{"nodeType":"YulVariableDeclaration","src":"25327:15:43","value":{"kind":"number","nodeType":"YulLiteral","src":"25341:1:43","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"25331:6:43","type":""}]},{"nodeType":"YulAssignment","src":"25356:98:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"25426:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"25437:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"25422:3:43"},"nodeType":"YulFunctionCall","src":"25422:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"25446:7:43"}],"functionName":{"name":"abi_decode_t_contract$_ISuperAgreement_$6395_fromMemory","nodeType":"YulIdentifier","src":"25366:55:43"},"nodeType":"YulFunctionCall","src":"25366:88:43"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"25356:6:43"}]}]}]},"name":"abi_decode_tuple_t_contract$_ISuperAgreement_$6395_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"25143:9:43","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"25154:7:43","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"25166:6:43","type":""}],"src":"25072:399:43"},{"body":{"nodeType":"YulBlock","src":"25505:152:43","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"25522:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"25525:77:43","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"25515:6:43"},"nodeType":"YulFunctionCall","src":"25515:88:43"},"nodeType":"YulExpressionStatement","src":"25515:88:43"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"25619:1:43","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"25622:4:43","type":"","value":"0x01"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"25612:6:43"},"nodeType":"YulFunctionCall","src":"25612:15:43"},"nodeType":"YulExpressionStatement","src":"25612:15:43"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"25643:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"25646:4:43","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"25636:6:43"},"nodeType":"YulFunctionCall","src":"25636:15:43"},"nodeType":"YulExpressionStatement","src":"25636:15:43"}]},"name":"panic_error_0x01","nodeType":"YulFunctionDefinition","src":"25477:180:43"}]},"contents":"{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function array_length_t_array$_t_address_$dyn_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_array$_t_address_$dyn_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function array_dataslot_t_array$_t_address_$dyn_memory_ptr(ptr) -> data {\n data := ptr\n\n data := add(ptr, 0x20)\n\n }\n\n function abi_encode_t_address_to_t_address(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encodeUpdatedPos_t_address_to_t_address(value0, pos) -> updatedPos {\n abi_encode_t_address_to_t_address(value0, pos)\n updatedPos := add(pos, 0x20)\n }\n\n function array_nextElement_t_array$_t_address_$dyn_memory_ptr(ptr) -> next {\n next := add(ptr, 0x20)\n }\n\n // address[] -> address[]\n function abi_encode_t_array$_t_address_$dyn_memory_ptr_to_t_array$_t_address_$dyn_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_array$_t_address_$dyn_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_array$_t_address_$dyn_memory_ptr_fromStack(pos, length)\n let baseRef := array_dataslot_t_array$_t_address_$dyn_memory_ptr(value)\n let srcPtr := baseRef\n for { let i := 0 } lt(i, length) { i := add(i, 1) }\n {\n let elementValue0 := mload(srcPtr)\n pos := abi_encodeUpdatedPos_t_address_to_t_address(elementValue0, pos)\n srcPtr := array_nextElement_t_array$_t_address_$dyn_memory_ptr(srcPtr)\n }\n end := pos\n }\n\n function abi_encode_tuple_t_uint256_t_array$_t_address_$dyn_memory_ptr__to_t_uint256_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n mstore(add(headStart, 32), sub(tail, headStart))\n tail := abi_encode_t_array$_t_address_$dyn_memory_ptr_to_t_array$_t_address_$dyn_memory_ptr_fromStack(value1, tail)\n\n }\n\n function cleanup_t_uint96(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffff)\n }\n\n function validator_revert_t_uint96(value) {\n if iszero(eq(value, cleanup_t_uint96(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint96(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint96(value)\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_addresst_uint96t_uint256(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint96(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_int96(value) -> cleaned {\n cleaned := signextend(11, value)\n }\n\n function abi_encode_t_int96_to_t_int96_fromStack(value, pos) {\n mstore(pos, cleanup_t_int96(value))\n }\n\n function abi_encode_t_uint96_to_t_uint96_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint96(value))\n }\n\n function abi_encode_tuple_t_int96_t_uint96_t_uint256_t_uint256__to_t_int96_t_uint96_t_uint256_t_uint256__fromStack_reversed(headStart , value3, value2, value1, value0) -> tail {\n tail := add(headStart, 128)\n\n abi_encode_t_int96_to_t_int96_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint96_to_t_uint96_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value3, add(headStart, 96))\n\n }\n\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n\n function allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function array_allocation_size_t_array$_t_address_$dyn_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := mul(length, 0x20)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() {\n revert(0, 0)\n }\n\n // address[]\n function abi_decode_available_length_t_array$_t_address_$dyn_memory_ptr(offset, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_array$_t_address_$dyn_memory_ptr(length))\n let dst := array\n\n mstore(array, length)\n dst := add(array, 0x20)\n\n let srcEnd := add(offset, mul(length, 0x20))\n if gt(srcEnd, end) {\n revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef()\n }\n for { let src := offset } lt(src, srcEnd) { src := add(src, 0x20) }\n {\n\n let elementPos := src\n\n mstore(dst, abi_decode_t_address(elementPos, end))\n dst := add(dst, 0x20)\n }\n }\n\n // address[]\n function abi_decode_t_array$_t_address_$dyn_memory_ptr(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := calldataload(offset)\n array := abi_decode_available_length_t_array$_t_address_$dyn_memory_ptr(add(offset, 0x20), length, end)\n }\n\n function abi_decode_tuple_t_array$_t_address_$dyn_memory_ptr(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := calldataload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value0 := abi_decode_t_array$_t_address_$dyn_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function array_allocation_size_t_array$_t_uint96_$dyn_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := mul(length, 0x20)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n // uint96[]\n function abi_decode_available_length_t_array$_t_uint96_$dyn_memory_ptr(offset, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_array$_t_uint96_$dyn_memory_ptr(length))\n let dst := array\n\n mstore(array, length)\n dst := add(array, 0x20)\n\n let srcEnd := add(offset, mul(length, 0x20))\n if gt(srcEnd, end) {\n revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef()\n }\n for { let src := offset } lt(src, srcEnd) { src := add(src, 0x20) }\n {\n\n let elementPos := src\n\n mstore(dst, abi_decode_t_uint96(elementPos, end))\n dst := add(dst, 0x20)\n }\n }\n\n // uint96[]\n function abi_decode_t_array$_t_uint96_$dyn_memory_ptr(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := calldataload(offset)\n array := abi_decode_available_length_t_array$_t_uint96_$dyn_memory_ptr(add(offset, 0x20), length, end)\n }\n\n function array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := mul(length, 0x20)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n // uint256[]\n function abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr(offset, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr(length))\n let dst := array\n\n mstore(array, length)\n dst := add(array, 0x20)\n\n let srcEnd := add(offset, mul(length, 0x20))\n if gt(srcEnd, end) {\n revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef()\n }\n for { let src := offset } lt(src, srcEnd) { src := add(src, 0x20) }\n {\n\n let elementPos := src\n\n mstore(dst, abi_decode_t_uint256(elementPos, end))\n dst := add(dst, 0x20)\n }\n }\n\n // uint256[]\n function abi_decode_t_array$_t_uint256_$dyn_memory_ptr(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := calldataload(offset)\n array := abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr(add(offset, 0x20), length, end)\n }\n\n function abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint96_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := calldataload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value0 := abi_decode_t_array$_t_address_$dyn_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value1 := abi_decode_t_array$_t_uint96_$dyn_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value2 := abi_decode_t_array$_t_uint256_$dyn_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x32() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function increment_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n ret := add(value, 1)\n }\n\n function checked_sub_t_uint256(x, y) -> diff {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n diff := sub(x, y)\n\n if gt(diff, x) { panic_error_0x11() }\n\n }\n\n function checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n sum := add(x, y)\n\n if gt(x, sum) { panic_error_0x11() }\n\n }\n\n function checked_mul_t_uint96(x, y) -> product {\n x := cleanup_t_uint96(x)\n y := cleanup_t_uint96(y)\n let product_raw := mul(x, y)\n product := cleanup_t_uint96(product_raw)\n\n if iszero(eq(product, product_raw)) { panic_error_0x11() }\n\n }\n\n function panic_error_0x12() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n\n function checked_div_t_uint96(x, y) -> r {\n x := cleanup_t_uint96(x)\n y := cleanup_t_uint96(y)\n if iszero(y) { panic_error_0x12() }\n\n r := div(x, y)\n }\n\n function identity(value) -> ret {\n ret := value\n }\n\n function convert_t_uint160_to_t_uint160(value) -> converted {\n converted := cleanup_t_uint160(identity(cleanup_t_uint160(value)))\n }\n\n function convert_t_uint160_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_uint160(value)\n }\n\n function convert_t_contract$_ISuperToken_$6947_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_address(value)\n }\n\n function abi_encode_t_contract$_ISuperToken_$6947_to_t_address_fromStack(value, pos) {\n mstore(pos, convert_t_contract$_ISuperToken_$6947_to_t_address(value))\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_contract$_ISuperToken_$6947_t_address_t_address__to_t_address_t_address_t_address__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_contract$_ISuperToken_$6947_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_address_to_t_address_fromStack(value2, add(headStart, 64))\n\n }\n\n function abi_decode_t_uint256_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_uint256(value)\n }\n\n function validator_revert_t_int96(value) {\n if iszero(eq(value, cleanup_t_int96(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_int96_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_int96(value)\n }\n\n function abi_decode_tuple_t_uint256t_int96t_uint256t_uint256_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3 {\n if slt(sub(dataEnd, headStart), 128) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_int96_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_uint256_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function array_length_t_bytes_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function copy_memory_to_memory_with_cleanup(src, dst, length) {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n\n function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_bytes_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_contract$_ISuperToken_$6947_t_address_t_address_t_bytes_memory_ptr__to_t_address_t_address_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart , value3, value2, value1, value0) -> tail {\n tail := add(headStart, 128)\n\n abi_encode_t_contract$_ISuperToken_$6947_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_address_to_t_address_fromStack(value2, add(headStart, 64))\n\n mstore(add(headStart, 96), sub(tail, headStart))\n tail := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value3, tail)\n\n }\n\n function convert_t_contract$_IConstantFlowAgreementV1_$5487_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_address(value)\n }\n\n function abi_encode_t_contract$_IConstantFlowAgreementV1_$5487_to_t_address_fromStack(value, pos) {\n mstore(pos, convert_t_contract$_IConstantFlowAgreementV1_$5487_to_t_address(value))\n }\n\n function abi_encode_tuple_t_contract$_IConstantFlowAgreementV1_$5487_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr_t_bytes_memory_ptr__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_contract$_IConstantFlowAgreementV1_$5487_to_t_address_fromStack(value0, add(headStart, 0))\n\n mstore(add(headStart, 32), sub(tail, headStart))\n tail := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value1, tail)\n\n mstore(add(headStart, 64), sub(tail, headStart))\n tail := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value2, tail)\n\n }\n\n function revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() {\n revert(0, 0)\n }\n\n function array_allocation_size_t_bytes_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := round_up_to_mul_of_32(length)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function abi_decode_available_length_t_bytes_memory_ptr_fromMemory(src, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_bytes_memory_ptr(length))\n mstore(array, length)\n let dst := add(array, 0x20)\n if gt(add(src, length), end) { revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() }\n copy_memory_to_memory_with_cleanup(src, dst, length)\n }\n\n // bytes\n function abi_decode_t_bytes_memory_ptr_fromMemory(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := mload(offset)\n array := abi_decode_available_length_t_bytes_memory_ptr_fromMemory(add(offset, 0x20), length, end)\n }\n\n function abi_decode_tuple_t_bytes_memory_ptr_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := mload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value0 := abi_decode_t_bytes_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_t_address_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1(value) -> cleaned {\n cleaned := value\n }\n\n function cleanup_t_bytes32(value) -> cleaned {\n cleaned := value\n }\n\n function shift_left_0(value) -> newValue {\n newValue :=\n\n shl(0, value)\n\n }\n\n function convert_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1_to_t_bytes32(value) -> converted {\n converted := cleanup_t_bytes32(shift_left_0(cleanup_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1(value)))\n }\n\n function abi_encode_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1_to_t_bytes32_fromStack(value, pos) {\n mstore(pos, convert_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1_to_t_bytes32(value))\n }\n\n function abi_encode_tuple_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1__to_t_bytes32__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n }\n\n function cleanup_t_contract$_ISuperAgreement_$6395(value) -> cleaned {\n cleaned := cleanup_t_address(value)\n }\n\n function validator_revert_t_contract$_ISuperAgreement_$6395(value) {\n if iszero(eq(value, cleanup_t_contract$_ISuperAgreement_$6395(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_contract$_ISuperAgreement_$6395_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_contract$_ISuperAgreement_$6395(value)\n }\n\n function abi_decode_tuple_t_contract$_ISuperAgreement_$6395_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_ISuperAgreement_$6395_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x01() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x01)\n revert(0, 0x24)\n }\n\n}\n","id":43,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061007d5760003560e01c806392c2226e1161005b57806392c2226e146101025780639afffbf914610132578063b233bd051461014e578063f437a7a51461016a5761007d565b806353732469146100825780637fe70a27146100b35780638ff3849b146100cf575b600080fd5b61009c60048036038101906100979190612150565b610186565b6040516100aa929190612254565b60405180910390f35b6100cd60048036038101906100c891906122f4565b61019c565b005b6100e960048036038101906100e49190612347565b6102b0565b6040516100f994939291906123c5565b60405180910390f35b61011c6004803603810190610117919061240a565b6102d2565b604051610129919061244a565b60405180910390f35b61014c600480360381019061014791906125be565b6102e6565b005b61016860048036038101906101639190612150565b61038f565b005b610184600480360381019061017f919061278d565b6103fe565b005b6000606061019383610598565b91509150915091565b6101a5836106c4565b6101b0838383610706565b60006101ba610ade565b9050428160020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055508060020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b6000806000806102c1878787610b0b565b935093509350935093509350935093565b60006102de8383610daf565b905092915050565b60005b81518110156103285761031582828151811061030857610307612834565b5b6020026020010151610e3f565b808061032090612892565b9150506102e9565b50610331610ade565b60020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008082016000905560018201600061038a9190611fd5565b505050565b61039881610e3f565b6103a0610ade565b60020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000808201600090556001820160006103f99190611fd5565b505050565b8151835114158061041157508051835114155b15610448576040517fed882f7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b83518110156104e35761047784828151811061046a57610469612834565b5b60200260200101516106c4565b6104d084828151811061048d5761048c612834565b5b60200260200101518483815181106104a8576104a7612834565b5b60200260200101518484815181106104c3576104c2612834565b5b6020026020010151610706565b80806104db90612892565b91505061044b565b5060006104ee610ade565b9050428160020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550838160020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001019080519060200190610591929190611ff6565b5050505050565b600060606105a4610ade565b60020160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546105f0610ade565b60020160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101808054806020026020016040519081016040528092919081815260200182805480156106b457602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161066a575b5050505050905091509150915091565b6106cd81611103565b610703576040517f334ae3e600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6000610710610ade565b9050600061071e3386610daf565b90506000811180156107ce575060008260010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001846107ba91906128da565b815260200190815260200160002060020154145b15610805576040517f9b90a9c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61080e85611162565b600061081b3386866111a6565b9050808360010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060000160006101000a8154816bffffffffffffffffffffffff0219169083600b0b6bffffffffffffffffffffffff160217905550848360010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000848152602001908152602001600020600001600c6101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550428360010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000848152602001908152602001600020600101819055506001610a43610ade565b60000160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610acf919061290e565b92505081905550505050505050565b6000807f9cd9afe22fea86221d6e8117226b65bb0e2af8c4f5b8abf255fb0afcad4a3a9c90508091505090565b600080600080610b19610ade565b60010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600086815260200190815260200160002060000160009054906101000a9004600b0b610bc0610ade565b60010160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878152602001908152602001600020600001600c9054906101000a90046bffffffffffffffffffffffff16610c72610ade565b60010160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088815260200190815260200160002060010154610d0c610ade565b60010160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600089815260200190815260200160002060020154935093509350935093509350935093565b6000610db9610ade565b60000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000610e4b33836112d4565b90506000610e57610ade565b60010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206001015403610f20576040517f3c2779e500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610f2a610ade565b60010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206002015414610ff3576040517fe7a7ee3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000829050600061102530338473ffffffffffffffffffffffffffffffffffffffff166113859092919063ffffffff16565b9050600081600b0b1461105f5761105d30338473ffffffffffffffffffffffffffffffffffffffff166114259092919063ffffffff16565b505b42611068610ade565b60010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008581526020019081526020016000206002018190555050505050565b600061110d6115d8565b60090160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61116c3382611605565b156111a3576040517fd18923ab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b60008060006111b36115d8565b60040160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900461ffff16905060008161ffff16111561121957809150611234565b611221611705565b15611233576112308585611725565b91505b5b60008261ffff160361124a5784925050506112cd565b61271061ffff168261ffff16866112619190612942565b6bffffffffffffffffffffffff1610156112a7576040517ffe267e4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61271061ffff168261ffff16866112be9190612942565b6112c891906129ae565b925050505b9392505050565b6000806112df610ade565b60000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081146113795760018161137491906128da565b61137c565b60005b91505092915050565b600080611391856117c3565b9150508073ffffffffffffffffffffffffffffffffffffffff1663e6a1e8888686866040518463ffffffff1660e01b81526004016113d193929190612a4d565b608060405180830381865afa1580156113ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114129190612ac5565b9091925090505080925050509392505050565b600080600061143386611a04565b915091508173ffffffffffffffffffffffffffffffffffffffff166339255d5b828373ffffffffffffffffffffffffffffffffffffffff1663b4b333c68a8a8a600067ffffffffffffffff81111561148e5761148d61247b565b5b6040519080825280601f01601f1916602001820160405280156114c05781602001600182028036833780820191505090505b506040516024016114d49493929190612bab565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050600067ffffffffffffffff8111156115315761153061247b565b5b6040519080825280601f01601f1916602001820160405280156115635781602001600182028036833780820191505090505b506040518463ffffffff1660e01b815260040161158293929190612c18565b6000604051808303816000875af11580156115a1573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906115ca9190612d03565b506001925050509392505050565b6000807f2f7ed27098ecefe70183ee38ae4542dee65215b0786f6870871034402cfe2cc990508091505090565b6000806116128484611c8b565b905060008111156116f9576000611636858560018561163191906128da565b611d1b565b93505050506000611645611e9a565b60010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001856116d191906128da565b8152602001908152602001600020600401541480156116f05750600081145b925050506116ff565b60009150505b92915050565b600061170f6115d8565b60050160009054906101000a900460ff16905090565b60008060008061173485611ec7565b925092509250816bffffffffffffffffffffffff16866bffffffffffffffffffffffff1610806117805750806bffffffffffffffffffffffff16866bffffffffffffffffffffffff1610155b156117b7576040517ffe267e4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82935050505092915050565b6000807f65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea8375491507fb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a549050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361198557600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118e8578273ffffffffffffffffffffffffffffffffffffffff166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e59190612d61565b91505b8173ffffffffffffffffffffffffffffffffffffffff1663b6d200de7fa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd36040518263ffffffff1660e01b81526004016119419190612de0565b602060405180830381865afa15801561195e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119829190612e39565b90505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119c2576119c1612e66565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036119ff576119fe612e66565b5b915091565b6000807f65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea8375491507fb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a549050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c0c57600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b29578273ffffffffffffffffffffffffffffffffffffffff166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b269190612d61565b91505b8173ffffffffffffffffffffffffffffffffffffffff1663b6d200de7fa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd36040518263ffffffff1660e01b8152600401611b829190612de0565b602060405180830381865afa158015611b9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bc39190612e39565b9050817f65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea83755807fb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a555b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c4957611c48612e66565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c8657611c85612e66565b5b915091565b6000611c95611e9a565b60000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000806000806000611d2b611e9a565b905060008160010160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008260010160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000898152602001908152602001600020600201549050611e86828a83610b0b565b965096509650965050505093509350935093565b6000807f2da2adfb54fd91bfb31e0d805792077ddcd5b0427b14a56397e2f3cc190c883090508091505090565b600080600080611eea85611ed96115d8565b600001611f0990919063ffffffff16565b9050806000015181602001518260400151935093509350509193909250565b611f11612080565b8260010160008381526020019081526020016000206040518060600160405290816000820160009054906101000a900461ffff1661ffff1661ffff1681526020016000820160029054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160008201600e9054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681525050905092915050565b5080546000825590600052602060002090810190611ff391906120c1565b50565b82805482825590600052602060002090810192821561206f579160200282015b8281111561206e5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190612016565b5b50905061207c91906120c1565b5090565b6040518060600160405280600061ffff16815260200160006bffffffffffffffffffffffff16815260200160006bffffffffffffffffffffffff1681525090565b5b808211156120da5760008160009055506001016120c2565b5090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061211d826120f2565b9050919050565b61212d81612112565b811461213857600080fd5b50565b60008135905061214a81612124565b92915050565b600060208284031215612166576121656120e8565b5b60006121748482850161213b565b91505092915050565b6000819050919050565b6121908161217d565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6121cb81612112565b82525050565b60006121dd83836121c2565b60208301905092915050565b6000602082019050919050565b600061220182612196565b61220b81856121a1565b9350612216836121b2565b8060005b8381101561224757815161222e88826121d1565b9750612239836121e9565b92505060018101905061221a565b5085935050505092915050565b60006040820190506122696000830185612187565b818103602083015261227b81846121f6565b90509392505050565b60006bffffffffffffffffffffffff82169050919050565b6122a581612284565b81146122b057600080fd5b50565b6000813590506122c28161229c565b92915050565b6122d18161217d565b81146122dc57600080fd5b50565b6000813590506122ee816122c8565b92915050565b60008060006060848603121561230d5761230c6120e8565b5b600061231b8682870161213b565b935050602061232c868287016122b3565b925050604061233d868287016122df565b9150509250925092565b6000806000606084860312156123605761235f6120e8565b5b600061236e8682870161213b565b935050602061237f8682870161213b565b9250506040612390868287016122df565b9150509250925092565b600081600b0b9050919050565b6123b08161239a565b82525050565b6123bf81612284565b82525050565b60006080820190506123da60008301876123a7565b6123e760208301866123b6565b6123f46040830185612187565b6124016060830184612187565b95945050505050565b60008060408385031215612421576124206120e8565b5b600061242f8582860161213b565b92505060206124408582860161213b565b9150509250929050565b600060208201905061245f6000830184612187565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6124b38261246a565b810181811067ffffffffffffffff821117156124d2576124d161247b565b5b80604052505050565b60006124e56120de565b90506124f182826124aa565b919050565b600067ffffffffffffffff8211156125115761251061247b565b5b602082029050602081019050919050565b600080fd5b600061253a612535846124f6565b6124db565b9050808382526020820190506020840283018581111561255d5761255c612522565b5b835b818110156125865780612572888261213b565b84526020840193505060208101905061255f565b5050509392505050565b600082601f8301126125a5576125a4612465565b5b81356125b5848260208601612527565b91505092915050565b6000602082840312156125d4576125d36120e8565b5b600082013567ffffffffffffffff8111156125f2576125f16120ed565b5b6125fe84828501612590565b91505092915050565b600067ffffffffffffffff8211156126225761262161247b565b5b602082029050602081019050919050565b600061264661264184612607565b6124db565b9050808382526020820190506020840283018581111561266957612668612522565b5b835b81811015612692578061267e88826122b3565b84526020840193505060208101905061266b565b5050509392505050565b600082601f8301126126b1576126b0612465565b5b81356126c1848260208601612633565b91505092915050565b600067ffffffffffffffff8211156126e5576126e461247b565b5b602082029050602081019050919050565b6000612709612704846126ca565b6124db565b9050808382526020820190506020840283018581111561272c5761272b612522565b5b835b81811015612755578061274188826122df565b84526020840193505060208101905061272e565b5050509392505050565b600082601f83011261277457612773612465565b5b81356127848482602086016126f6565b91505092915050565b6000806000606084860312156127a6576127a56120e8565b5b600084013567ffffffffffffffff8111156127c4576127c36120ed565b5b6127d086828701612590565b935050602084013567ffffffffffffffff8111156127f1576127f06120ed565b5b6127fd8682870161269c565b925050604084013567ffffffffffffffff81111561281e5761281d6120ed565b5b61282a8682870161275f565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061289d8261217d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036128cf576128ce612863565b5b600182019050919050565b60006128e58261217d565b91506128f08361217d565b925082820390508181111561290857612907612863565b5b92915050565b60006129198261217d565b91506129248361217d565b925082820190508082111561293c5761293b612863565b5b92915050565b600061294d82612284565b915061295883612284565b925082820261296681612284565b915080821461297857612977612863565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006129b982612284565b91506129c483612284565b9250826129d4576129d361297f565b5b828204905092915050565b6000819050919050565b6000612a046129ff6129fa846120f2565b6129df565b6120f2565b9050919050565b6000612a16826129e9565b9050919050565b6000612a2882612a0b565b9050919050565b612a3881612a1d565b82525050565b612a4781612112565b82525050565b6000606082019050612a626000830186612a2f565b612a6f6020830185612a3e565b612a7c6040830184612a3e565b949350505050565b600081519050612a93816122c8565b92915050565b612aa28161239a565b8114612aad57600080fd5b50565b600081519050612abf81612a99565b92915050565b60008060008060808587031215612adf57612ade6120e8565b5b6000612aed87828801612a84565b9450506020612afe87828801612ab0565b9350506040612b0f87828801612a84565b9250506060612b2087828801612a84565b91505092959194509250565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b66578082015181840152602081019050612b4b565b60008484015250505050565b6000612b7d82612b2c565b612b878185612b37565b9350612b97818560208601612b48565b612ba08161246a565b840191505092915050565b6000608082019050612bc06000830187612a2f565b612bcd6020830186612a3e565b612bda6040830185612a3e565b8181036060830152612bec8184612b72565b905095945050505050565b6000612c0282612a0b565b9050919050565b612c1281612bf7565b82525050565b6000606082019050612c2d6000830186612c09565b8181036020830152612c3f8185612b72565b90508181036040830152612c538184612b72565b9050949350505050565b600080fd5b600067ffffffffffffffff821115612c7d57612c7c61247b565b5b612c868261246a565b9050602081019050919050565b6000612ca6612ca184612c62565b6124db565b905082815260208101848484011115612cc257612cc1612c5d565b5b612ccd848285612b48565b509392505050565b600082601f830112612cea57612ce9612465565b5b8151612cfa848260208601612c93565b91505092915050565b600060208284031215612d1957612d186120e8565b5b600082015167ffffffffffffffff811115612d3757612d366120ed565b5b612d4384828501612cd5565b91505092915050565b600081519050612d5b81612124565b92915050565b600060208284031215612d7757612d766120e8565b5b6000612d8584828501612d4c565b91505092915050565b6000819050919050565b6000819050919050565b60008160001b9050919050565b6000612dca612dc5612dc084612d8e565b612da2565b612d98565b9050919050565b612dda81612daf565b82525050565b6000602082019050612df56000830184612dd1565b92915050565b6000612e0682612112565b9050919050565b612e1681612dfb565b8114612e2157600080fd5b50565b600081519050612e3381612e0d565b92915050565b600060208284031215612e4f57612e4e6120e8565b5b6000612e5d84828501612e24565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fdfea2646970667358221220526bbb49d3cca825be942d7186eceea4b40931ece8a0d3455aa14dfb7b504c2d64736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x92C2226E GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x92C2226E EQ PUSH2 0x102 JUMPI DUP1 PUSH4 0x9AFFFBF9 EQ PUSH2 0x132 JUMPI DUP1 PUSH4 0xB233BD05 EQ PUSH2 0x14E JUMPI DUP1 PUSH4 0xF437A7A5 EQ PUSH2 0x16A JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x53732469 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x7FE70A27 EQ PUSH2 0xB3 JUMPI DUP1 PUSH4 0x8FF3849B EQ PUSH2 0xCF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x97 SWAP2 SWAP1 PUSH2 0x2150 JUMP JUMPDEST PUSH2 0x186 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAA SWAP3 SWAP2 SWAP1 PUSH2 0x2254 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xCD PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xC8 SWAP2 SWAP1 PUSH2 0x22F4 JUMP JUMPDEST PUSH2 0x19C JUMP JUMPDEST STOP JUMPDEST PUSH2 0xE9 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xE4 SWAP2 SWAP1 PUSH2 0x2347 JUMP JUMPDEST PUSH2 0x2B0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF9 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x23C5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x11C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x117 SWAP2 SWAP1 PUSH2 0x240A JUMP JUMPDEST PUSH2 0x2D2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x129 SWAP2 SWAP1 PUSH2 0x244A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x14C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x147 SWAP2 SWAP1 PUSH2 0x25BE JUMP JUMPDEST PUSH2 0x2E6 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x168 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x163 SWAP2 SWAP1 PUSH2 0x2150 JUMP JUMPDEST PUSH2 0x38F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x17F SWAP2 SWAP1 PUSH2 0x278D JUMP JUMPDEST PUSH2 0x3FE JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH2 0x193 DUP4 PUSH2 0x598 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH2 0x1A5 DUP4 PUSH2 0x6C4 JUMP JUMPDEST PUSH2 0x1B0 DUP4 DUP4 DUP4 PUSH2 0x706 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BA PUSH2 0xADE JUMP JUMPDEST SWAP1 POP TIMESTAMP DUP2 PUSH1 0x2 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x2 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD DUP5 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x2C1 DUP8 DUP8 DUP8 PUSH2 0xB0B JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2DE DUP4 DUP4 PUSH2 0xDAF JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x328 JUMPI PUSH2 0x315 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x308 JUMPI PUSH2 0x307 PUSH2 0x2834 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0xE3F JUMP JUMPDEST DUP1 DUP1 PUSH2 0x320 SWAP1 PUSH2 0x2892 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x2E9 JUMP JUMPDEST POP PUSH2 0x331 PUSH2 0xADE JUMP JUMPDEST PUSH1 0x2 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP1 DUP3 ADD PUSH1 0x0 SWAP1 SSTORE PUSH1 0x1 DUP3 ADD PUSH1 0x0 PUSH2 0x38A SWAP2 SWAP1 PUSH2 0x1FD5 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x398 DUP2 PUSH2 0xE3F JUMP JUMPDEST PUSH2 0x3A0 PUSH2 0xADE JUMP JUMPDEST PUSH1 0x2 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP1 DUP3 ADD PUSH1 0x0 SWAP1 SSTORE PUSH1 0x1 DUP3 ADD PUSH1 0x0 PUSH2 0x3F9 SWAP2 SWAP1 PUSH2 0x1FD5 JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP4 MLOAD EQ ISZERO DUP1 PUSH2 0x411 JUMPI POP DUP1 MLOAD DUP4 MLOAD EQ ISZERO JUMPDEST ISZERO PUSH2 0x448 JUMPI PUSH1 0x40 MLOAD PUSH32 0xED882F7100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x4E3 JUMPI PUSH2 0x477 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x46A JUMPI PUSH2 0x469 PUSH2 0x2834 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x6C4 JUMP JUMPDEST PUSH2 0x4D0 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x48D JUMPI PUSH2 0x48C PUSH2 0x2834 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x4A8 JUMPI PUSH2 0x4A7 PUSH2 0x2834 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x4C3 JUMPI PUSH2 0x4C2 PUSH2 0x2834 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x706 JUMP JUMPDEST DUP1 DUP1 PUSH2 0x4DB SWAP1 PUSH2 0x2892 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x44B JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x4EE PUSH2 0xADE JUMP JUMPDEST SWAP1 POP TIMESTAMP DUP2 PUSH1 0x2 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP2 SWAP1 SSTORE POP DUP4 DUP2 PUSH1 0x2 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x591 SWAP3 SWAP2 SWAP1 PUSH2 0x1FF6 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH2 0x5A4 PUSH2 0xADE JUMP JUMPDEST PUSH1 0x2 ADD PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD SLOAD PUSH2 0x5F0 PUSH2 0xADE JUMP JUMPDEST PUSH1 0x2 ADD PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD DUP1 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x6B4 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH2 0x66A JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 POP SWAP2 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH2 0x6CD DUP2 PUSH2 0x1103 JUMP JUMPDEST PUSH2 0x703 JUMPI PUSH1 0x40 MLOAD PUSH32 0x334AE3E600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x710 PUSH2 0xADE JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x71E CALLER DUP7 PUSH2 0xDAF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 GT DUP1 ISZERO PUSH2 0x7CE JUMPI POP PUSH1 0x0 DUP3 PUSH1 0x1 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH1 0x1 DUP5 PUSH2 0x7BA SWAP2 SWAP1 PUSH2 0x28DA JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD SLOAD EQ JUMPDEST ISZERO PUSH2 0x805 JUMPI PUSH1 0x40 MLOAD PUSH32 0x9B90A9C600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x80E DUP6 PUSH2 0x1162 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x81B CALLER DUP7 DUP7 PUSH2 0x11A6 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 PUSH1 0x1 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0xB SIGNEXTEND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP5 DUP4 PUSH1 0x1 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0xC PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP TIMESTAMP DUP4 PUSH1 0x1 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP PUSH1 0x1 PUSH2 0xA43 PUSH2 0xADE JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xACF SWAP2 SWAP1 PUSH2 0x290E JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x9CD9AFE22FEA86221D6E8117226B65BB0E2AF8C4F5B8ABF255FB0AFCAD4A3A9C SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0xB19 PUSH2 0xADE JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xB SIGNEXTEND PUSH2 0xBC0 PUSH2 0xADE JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0xC SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xC72 PUSH2 0xADE JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0xD0C PUSH2 0xADE JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDB9 PUSH2 0xADE JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE4B CALLER DUP4 PUSH2 0x12D4 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xE57 PUSH2 0xADE JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD SLOAD SUB PUSH2 0xF20 JUMPI PUSH1 0x40 MLOAD PUSH32 0x3C2779E500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xF2A PUSH2 0xADE JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD SLOAD EQ PUSH2 0xFF3 JUMPI PUSH1 0x40 MLOAD PUSH32 0xE7A7EE3800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 SWAP1 POP PUSH1 0x0 PUSH2 0x1025 ADDRESS CALLER DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1385 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0xB SIGNEXTEND EQ PUSH2 0x105F JUMPI PUSH2 0x105D ADDRESS CALLER DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1425 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP JUMPDEST TIMESTAMP PUSH2 0x1068 PUSH2 0xADE JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD DUP2 SWAP1 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x110D PUSH2 0x15D8 JUMP JUMPDEST PUSH1 0x9 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x116C CALLER DUP3 PUSH2 0x1605 JUMP JUMPDEST ISZERO PUSH2 0x11A3 JUMPI PUSH1 0x40 MLOAD PUSH32 0xD18923AB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x11B3 PUSH2 0x15D8 JUMP JUMPDEST PUSH1 0x4 ADD PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH2 0xFFFF AND SWAP1 POP PUSH1 0x0 DUP2 PUSH2 0xFFFF AND GT ISZERO PUSH2 0x1219 JUMPI DUP1 SWAP2 POP PUSH2 0x1234 JUMP JUMPDEST PUSH2 0x1221 PUSH2 0x1705 JUMP JUMPDEST ISZERO PUSH2 0x1233 JUMPI PUSH2 0x1230 DUP6 DUP6 PUSH2 0x1725 JUMP JUMPDEST SWAP2 POP JUMPDEST JUMPDEST PUSH1 0x0 DUP3 PUSH2 0xFFFF AND SUB PUSH2 0x124A JUMPI DUP5 SWAP3 POP POP POP PUSH2 0x12CD JUMP JUMPDEST PUSH2 0x2710 PUSH2 0xFFFF AND DUP3 PUSH2 0xFFFF AND DUP7 PUSH2 0x1261 SWAP2 SWAP1 PUSH2 0x2942 JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND LT ISZERO PUSH2 0x12A7 JUMPI PUSH1 0x40 MLOAD PUSH32 0xFE267E4200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2710 PUSH2 0xFFFF AND DUP3 PUSH2 0xFFFF AND DUP7 PUSH2 0x12BE SWAP2 SWAP1 PUSH2 0x2942 JUMP JUMPDEST PUSH2 0x12C8 SWAP2 SWAP1 PUSH2 0x29AE JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x12DF PUSH2 0xADE JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH1 0x0 DUP2 EQ PUSH2 0x1379 JUMPI PUSH1 0x1 DUP2 PUSH2 0x1374 SWAP2 SWAP1 PUSH2 0x28DA JUMP JUMPDEST PUSH2 0x137C JUMP JUMPDEST PUSH1 0x0 JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1391 DUP6 PUSH2 0x17C3 JUMP JUMPDEST SWAP2 POP POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xE6A1E888 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x13D1 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2A4D JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x13EE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1412 SWAP2 SWAP1 PUSH2 0x2AC5 JUMP JUMPDEST SWAP1 SWAP2 SWAP3 POP SWAP1 POP POP DUP1 SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1433 DUP7 PUSH2 0x1A04 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x39255D5B DUP3 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xB4B333C6 DUP11 DUP11 DUP11 PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x148E JUMPI PUSH2 0x148D PUSH2 0x247B JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x14C0 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x14D4 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2BAB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1531 JUMPI PUSH2 0x1530 PUSH2 0x247B JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1563 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1582 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2C18 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x15A1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x15CA SWAP2 SWAP1 PUSH2 0x2D03 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x2F7ED27098ECEFE70183EE38AE4542DEE65215B0786F6870871034402CFE2CC9 SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1612 DUP5 DUP5 PUSH2 0x1C8B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 GT ISZERO PUSH2 0x16F9 JUMPI PUSH1 0x0 PUSH2 0x1636 DUP6 DUP6 PUSH1 0x1 DUP6 PUSH2 0x1631 SWAP2 SWAP1 PUSH2 0x28DA JUMP JUMPDEST PUSH2 0x1D1B JUMP JUMPDEST SWAP4 POP POP POP POP PUSH1 0x0 PUSH2 0x1645 PUSH2 0x1E9A JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH1 0x1 DUP6 PUSH2 0x16D1 SWAP2 SWAP1 PUSH2 0x28DA JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD SLOAD EQ DUP1 ISZERO PUSH2 0x16F0 JUMPI POP PUSH1 0x0 DUP2 EQ JUMPDEST SWAP3 POP POP POP PUSH2 0x16FF JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x170F PUSH2 0x15D8 JUMP JUMPDEST PUSH1 0x5 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x1734 DUP6 PUSH2 0x1EC7 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND LT DUP1 PUSH2 0x1780 JUMPI POP DUP1 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND LT ISZERO JUMPDEST ISZERO PUSH2 0x17B7 JUMPI PUSH1 0x40 MLOAD PUSH32 0xFE267E4200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x65599BF746E17A00EA62E3610586992D88101B78EEC3CF380706621FB97EA837 SLOAD SWAP2 POP PUSH32 0xB969D79D88ACD02D04ED7EE7D43B949E7DAF093D363ABCFBBC43DFDFD1CE969A SLOAD SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1985 JUMPI PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x18E8 JUMPI DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x20BC4425 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x18C1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x18E5 SWAP2 SWAP1 PUSH2 0x2D61 JUMP JUMPDEST SWAP2 POP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xB6D200DE PUSH32 0xA9214CC96615E0085D3BB077758DB69497DC2DCE3B2B1E97BC93C3D18D83EFD3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1941 SWAP2 SWAP1 PUSH2 0x2DE0 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x195E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1982 SWAP2 SWAP1 PUSH2 0x2E39 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x19C2 JUMPI PUSH2 0x19C1 PUSH2 0x2E66 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x19FF JUMPI PUSH2 0x19FE PUSH2 0x2E66 JUMP JUMPDEST JUMPDEST SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x65599BF746E17A00EA62E3610586992D88101B78EEC3CF380706621FB97EA837 SLOAD SWAP2 POP PUSH32 0xB969D79D88ACD02D04ED7EE7D43B949E7DAF093D363ABCFBBC43DFDFD1CE969A SLOAD SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1C0C JUMPI PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1B29 JUMPI DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x20BC4425 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1B02 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1B26 SWAP2 SWAP1 PUSH2 0x2D61 JUMP JUMPDEST SWAP2 POP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xB6D200DE PUSH32 0xA9214CC96615E0085D3BB077758DB69497DC2DCE3B2B1E97BC93C3D18D83EFD3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1B82 SWAP2 SWAP1 PUSH2 0x2DE0 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1B9F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1BC3 SWAP2 SWAP1 PUSH2 0x2E39 JUMP JUMPDEST SWAP1 POP DUP2 PUSH32 0x65599BF746E17A00EA62E3610586992D88101B78EEC3CF380706621FB97EA837 SSTORE DUP1 PUSH32 0xB969D79D88ACD02D04ED7EE7D43B949E7DAF093D363ABCFBBC43DFDFD1CE969A SSTORE JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1C49 JUMPI PUSH2 0x1C48 PUSH2 0x2E66 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1C86 JUMPI PUSH2 0x1C85 PUSH2 0x2E66 JUMP JUMPDEST JUMPDEST SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C95 PUSH2 0x1E9A JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1D2B PUSH2 0x1E9A JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x1 ADD PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x1 ADD PUSH1 0x0 DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP1 POP PUSH2 0x1E86 DUP3 DUP11 DUP4 PUSH2 0xB0B JUMP JUMPDEST SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP POP POP POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x2DA2ADFB54FD91BFB31E0D805792077DDCD5B0427B14A56397E2F3CC190C8830 SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x1EEA DUP6 PUSH2 0x1ED9 PUSH2 0x15D8 JUMP JUMPDEST PUSH1 0x0 ADD PUSH2 0x1F09 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x0 ADD MLOAD DUP2 PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x40 ADD MLOAD SWAP4 POP SWAP4 POP SWAP4 POP POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH2 0x1F11 PUSH2 0x2080 JUMP JUMPDEST DUP3 PUSH1 0x1 ADD PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH2 0xFFFF AND PUSH2 0xFFFF AND PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP3 ADD PUSH1 0x2 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP3 ADD PUSH1 0xE SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST POP DUP1 SLOAD PUSH1 0x0 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1FF3 SWAP2 SWAP1 PUSH2 0x20C1 JUMP JUMPDEST POP JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x206F JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x206E JUMPI DUP3 MLOAD DUP3 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x2016 JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x207C SWAP2 SWAP1 PUSH2 0x20C1 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x20DA JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH2 0x20C2 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x211D DUP3 PUSH2 0x20F2 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x212D DUP2 PUSH2 0x2112 JUMP JUMPDEST DUP2 EQ PUSH2 0x2138 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x214A DUP2 PUSH2 0x2124 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2166 JUMPI PUSH2 0x2165 PUSH2 0x20E8 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2174 DUP5 DUP3 DUP6 ADD PUSH2 0x213B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2190 DUP2 PUSH2 0x217D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x21CB DUP2 PUSH2 0x2112 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x21DD DUP4 DUP4 PUSH2 0x21C2 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2201 DUP3 PUSH2 0x2196 JUMP JUMPDEST PUSH2 0x220B DUP2 DUP6 PUSH2 0x21A1 JUMP JUMPDEST SWAP4 POP PUSH2 0x2216 DUP4 PUSH2 0x21B2 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2247 JUMPI DUP2 MLOAD PUSH2 0x222E DUP9 DUP3 PUSH2 0x21D1 JUMP JUMPDEST SWAP8 POP PUSH2 0x2239 DUP4 PUSH2 0x21E9 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x221A JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x2269 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x2187 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x227B DUP2 DUP5 PUSH2 0x21F6 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x22A5 DUP2 PUSH2 0x2284 JUMP JUMPDEST DUP2 EQ PUSH2 0x22B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x22C2 DUP2 PUSH2 0x229C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x22D1 DUP2 PUSH2 0x217D JUMP JUMPDEST DUP2 EQ PUSH2 0x22DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x22EE DUP2 PUSH2 0x22C8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x230D JUMPI PUSH2 0x230C PUSH2 0x20E8 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x231B DUP7 DUP3 DUP8 ADD PUSH2 0x213B JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x232C DUP7 DUP3 DUP8 ADD PUSH2 0x22B3 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x233D DUP7 DUP3 DUP8 ADD PUSH2 0x22DF JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2360 JUMPI PUSH2 0x235F PUSH2 0x20E8 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x236E DUP7 DUP3 DUP8 ADD PUSH2 0x213B JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x237F DUP7 DUP3 DUP8 ADD PUSH2 0x213B JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x2390 DUP7 DUP3 DUP8 ADD PUSH2 0x22DF JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0xB SIGNEXTEND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x23B0 DUP2 PUSH2 0x239A JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x23BF DUP2 PUSH2 0x2284 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x23DA PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x23A7 JUMP JUMPDEST PUSH2 0x23E7 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x23B6 JUMP JUMPDEST PUSH2 0x23F4 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x2187 JUMP JUMPDEST PUSH2 0x2401 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x2187 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2421 JUMPI PUSH2 0x2420 PUSH2 0x20E8 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x242F DUP6 DUP3 DUP7 ADD PUSH2 0x213B JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x2440 DUP6 DUP3 DUP7 ADD PUSH2 0x213B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x245F PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2187 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x24B3 DUP3 PUSH2 0x246A JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x24D2 JUMPI PUSH2 0x24D1 PUSH2 0x247B JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x24E5 PUSH2 0x20DE JUMP JUMPDEST SWAP1 POP PUSH2 0x24F1 DUP3 DUP3 PUSH2 0x24AA JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2511 JUMPI PUSH2 0x2510 PUSH2 0x247B JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x253A PUSH2 0x2535 DUP5 PUSH2 0x24F6 JUMP JUMPDEST PUSH2 0x24DB JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x255D JUMPI PUSH2 0x255C PUSH2 0x2522 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2586 JUMPI DUP1 PUSH2 0x2572 DUP9 DUP3 PUSH2 0x213B JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x255F JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x25A5 JUMPI PUSH2 0x25A4 PUSH2 0x2465 JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x25B5 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x2527 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x25D4 JUMPI PUSH2 0x25D3 PUSH2 0x20E8 JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x25F2 JUMPI PUSH2 0x25F1 PUSH2 0x20ED JUMP JUMPDEST JUMPDEST PUSH2 0x25FE DUP5 DUP3 DUP6 ADD PUSH2 0x2590 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2622 JUMPI PUSH2 0x2621 PUSH2 0x247B JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2646 PUSH2 0x2641 DUP5 PUSH2 0x2607 JUMP JUMPDEST PUSH2 0x24DB JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x2669 JUMPI PUSH2 0x2668 PUSH2 0x2522 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2692 JUMPI DUP1 PUSH2 0x267E DUP9 DUP3 PUSH2 0x22B3 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x266B JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x26B1 JUMPI PUSH2 0x26B0 PUSH2 0x2465 JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x26C1 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x2633 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x26E5 JUMPI PUSH2 0x26E4 PUSH2 0x247B JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2709 PUSH2 0x2704 DUP5 PUSH2 0x26CA JUMP JUMPDEST PUSH2 0x24DB JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x272C JUMPI PUSH2 0x272B PUSH2 0x2522 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2755 JUMPI DUP1 PUSH2 0x2741 DUP9 DUP3 PUSH2 0x22DF JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x272E JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2774 JUMPI PUSH2 0x2773 PUSH2 0x2465 JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2784 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x26F6 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x27A6 JUMPI PUSH2 0x27A5 PUSH2 0x20E8 JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x27C4 JUMPI PUSH2 0x27C3 PUSH2 0x20ED JUMP JUMPDEST JUMPDEST PUSH2 0x27D0 DUP7 DUP3 DUP8 ADD PUSH2 0x2590 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x27F1 JUMPI PUSH2 0x27F0 PUSH2 0x20ED JUMP JUMPDEST JUMPDEST PUSH2 0x27FD DUP7 DUP3 DUP8 ADD PUSH2 0x269C JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x281E JUMPI PUSH2 0x281D PUSH2 0x20ED JUMP JUMPDEST JUMPDEST PUSH2 0x282A DUP7 DUP3 DUP8 ADD PUSH2 0x275F JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x289D DUP3 PUSH2 0x217D JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x28CF JUMPI PUSH2 0x28CE PUSH2 0x2863 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x28E5 DUP3 PUSH2 0x217D JUMP JUMPDEST SWAP2 POP PUSH2 0x28F0 DUP4 PUSH2 0x217D JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP DUP2 DUP2 GT ISZERO PUSH2 0x2908 JUMPI PUSH2 0x2907 PUSH2 0x2863 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2919 DUP3 PUSH2 0x217D JUMP JUMPDEST SWAP2 POP PUSH2 0x2924 DUP4 PUSH2 0x217D JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x293C JUMPI PUSH2 0x293B PUSH2 0x2863 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x294D DUP3 PUSH2 0x2284 JUMP JUMPDEST SWAP2 POP PUSH2 0x2958 DUP4 PUSH2 0x2284 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 MUL PUSH2 0x2966 DUP2 PUSH2 0x2284 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 EQ PUSH2 0x2978 JUMPI PUSH2 0x2977 PUSH2 0x2863 JUMP JUMPDEST JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x29B9 DUP3 PUSH2 0x2284 JUMP JUMPDEST SWAP2 POP PUSH2 0x29C4 DUP4 PUSH2 0x2284 JUMP JUMPDEST SWAP3 POP DUP3 PUSH2 0x29D4 JUMPI PUSH2 0x29D3 PUSH2 0x297F JUMP JUMPDEST JUMPDEST DUP3 DUP3 DIV SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2A04 PUSH2 0x29FF PUSH2 0x29FA DUP5 PUSH2 0x20F2 JUMP JUMPDEST PUSH2 0x29DF JUMP JUMPDEST PUSH2 0x20F2 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2A16 DUP3 PUSH2 0x29E9 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2A28 DUP3 PUSH2 0x2A0B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2A38 DUP2 PUSH2 0x2A1D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x2A47 DUP2 PUSH2 0x2112 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x2A62 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x2A2F JUMP JUMPDEST PUSH2 0x2A6F PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x2A3E JUMP JUMPDEST PUSH2 0x2A7C PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x2A3E JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x2A93 DUP2 PUSH2 0x22C8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2AA2 DUP2 PUSH2 0x239A JUMP JUMPDEST DUP2 EQ PUSH2 0x2AAD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x2ABF DUP2 PUSH2 0x2A99 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x2ADF JUMPI PUSH2 0x2ADE PUSH2 0x20E8 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2AED DUP8 DUP3 DUP9 ADD PUSH2 0x2A84 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x2AFE DUP8 DUP3 DUP9 ADD PUSH2 0x2AB0 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x2B0F DUP8 DUP3 DUP9 ADD PUSH2 0x2A84 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x2B20 DUP8 DUP3 DUP9 ADD PUSH2 0x2A84 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2B66 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x2B4B JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B7D DUP3 PUSH2 0x2B2C JUMP JUMPDEST PUSH2 0x2B87 DUP2 DUP6 PUSH2 0x2B37 JUMP JUMPDEST SWAP4 POP PUSH2 0x2B97 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x2B48 JUMP JUMPDEST PUSH2 0x2BA0 DUP2 PUSH2 0x246A JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x2BC0 PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x2A2F JUMP JUMPDEST PUSH2 0x2BCD PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x2A3E JUMP JUMPDEST PUSH2 0x2BDA PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x2A3E JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x2BEC DUP2 DUP5 PUSH2 0x2B72 JUMP JUMPDEST SWAP1 POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C02 DUP3 PUSH2 0x2A0B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2C12 DUP2 PUSH2 0x2BF7 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x2C2D PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x2C09 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x2C3F DUP2 DUP6 PUSH2 0x2B72 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x2C53 DUP2 DUP5 PUSH2 0x2B72 JUMP JUMPDEST SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2C7D JUMPI PUSH2 0x2C7C PUSH2 0x247B JUMP JUMPDEST JUMPDEST PUSH2 0x2C86 DUP3 PUSH2 0x246A JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2CA6 PUSH2 0x2CA1 DUP5 PUSH2 0x2C62 JUMP JUMPDEST PUSH2 0x24DB JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x2CC2 JUMPI PUSH2 0x2CC1 PUSH2 0x2C5D JUMP JUMPDEST JUMPDEST PUSH2 0x2CCD DUP5 DUP3 DUP6 PUSH2 0x2B48 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2CEA JUMPI PUSH2 0x2CE9 PUSH2 0x2465 JUMP JUMPDEST JUMPDEST DUP2 MLOAD PUSH2 0x2CFA DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x2C93 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2D19 JUMPI PUSH2 0x2D18 PUSH2 0x20E8 JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP3 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2D37 JUMPI PUSH2 0x2D36 PUSH2 0x20ED JUMP JUMPDEST JUMPDEST PUSH2 0x2D43 DUP5 DUP3 DUP6 ADD PUSH2 0x2CD5 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x2D5B DUP2 PUSH2 0x2124 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2D77 JUMPI PUSH2 0x2D76 PUSH2 0x20E8 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2D85 DUP5 DUP3 DUP6 ADD PUSH2 0x2D4C JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 SHL SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2DCA PUSH2 0x2DC5 PUSH2 0x2DC0 DUP5 PUSH2 0x2D8E JUMP JUMPDEST PUSH2 0x2DA2 JUMP JUMPDEST PUSH2 0x2D98 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2DDA DUP2 PUSH2 0x2DAF JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2DF5 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2DD1 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E06 DUP3 PUSH2 0x2112 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2E16 DUP2 PUSH2 0x2DFB JUMP JUMPDEST DUP2 EQ PUSH2 0x2E21 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x2E33 DUP2 PUSH2 0x2E0D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2E4F JUMPI PUSH2 0x2E4E PUSH2 0x20E8 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2E5D DUP5 DUP3 DUP6 ADD PUSH2 0x2E24 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MSTORE PUSH12 0xBB49D3CCA825BE942D7186EC 0xEE LOG4 0xB4 MULMOD BALANCE 0xEC 0xE8 LOG0 0xD3 GASLIMIT GAS LOG1 0x4D 0xFB PUSH28 0x504C2D64736F6C634300081200330000000000000000000000000000 ","sourceMap":"273:3383:24:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3480:174;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;308:492;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3234:240;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;3043:185;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2335:702;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;961:576;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1557:772;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3480:174;3563:7;3572:16;3607:40;3641:5;3607:33;:40::i;:::-;3600:47;;;;3480:174;;;:::o;308:492::-;432:51;471:11;432:38;:51::i;:::-;493:54;518:11;531:9;542:4;493:24;:54::i;:::-;558:42;603:41;:39;:41::i;:::-;558:86;;703:15;655:8;:23;;:35;679:10;655:35;;;;;;;;;;;;;;;:45;;:63;;;;728:8;:23;;:35;752:10;728:35;;;;;;;;;;;;;;;:47;;781:11;728:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;422:378;308:492;;;:::o;3234:240::-;3363:5;3370:6;3378:7;3387;3413:54;3440:5;3447:11;3460:6;3413:26;:54::i;:::-;3406:61;;;;;;;;3234:240;;;;;;;:::o;3043:185::-;3152:7;3178:43;3202:5;3209:11;3178:23;:43::i;:::-;3171:50;;3043:185;;;;:::o;2335:702::-;2412:9;2407:551;2431:12;:19;2427:1;:23;2407:551;;;2907:40;2931:12;2944:1;2931:15;;;;;;;;:::i;:::-;;;;;;;;2907:23;:40::i;:::-;2452:3;;;;;:::i;:::-;;;;2407:551;;;;2975:28;:26;:28::i;:::-;:43;;:55;3019:10;2975:55;;;;;;;;;;;;;;;;2968:62;;;;;;;;;;;;;;:::i;:::-;;;2335:702;:::o;961:576::-;1422:36;1446:11;1422:23;:36::i;:::-;1475:28;:26;:28::i;:::-;:43;;:55;1519:10;1475:55;;;;;;;;;;;;;;;;1468:62;;;;;;;;;;;;;;:::i;:::-;;;961:576;:::o;1557:772::-;1752:10;:17;1729:12;:19;:40;;:91;;;;1808:5;:12;1785;:19;:35;;1729:91;1712:147;;;1838:21;;;;;;;;;;;;;;1712:147;1875:9;1870:210;1894:12;:19;1890:1;:23;1870:210;;;1934:55;1973:12;1986:1;1973:15;;;;;;;;:::i;:::-;;;;;;;;1934:38;:55::i;:::-;2003:66;2028:12;2041:1;2028:15;;;;;;;;:::i;:::-;;;;;;;;2045:10;2056:1;2045:13;;;;;;;;:::i;:::-;;;;;;;;2060:5;2066:1;2060:8;;;;;;;;:::i;:::-;;;;;;;;2003:24;:66::i;:::-;1915:3;;;;;:::i;:::-;;;;1870:210;;;;2090:42;2135:41;:39;:41::i;:::-;2090:86;;2235:15;2187:8;:23;;:35;2211:10;2187:35;;;;;;;;;;;;;;;:45;;:63;;;;2310:12;2260:8;:23;;:35;2284:10;2260:35;;;;;;;;;;;;;;;:47;;:62;;;;;;;;;;;;:::i;:::-;;1702:627;1557:772;;;:::o;5468:273:37:-;5552:7;5561:16;5610:17;:15;:17::i;:::-;:32;;:39;5643:5;5610:39;;;;;;;;;;;;;;;:49;;;5673:17;:15;:17::i;:::-;:32;;:39;5706:5;5673:39;;;;;;;;;;;;;;;:51;;5589:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5468:273;;;:::o;7163:158:35:-;7250:36;7274:11;7250:23;:36::i;:::-;7245:69;;7295:19;;;;;;;;;;;;;;7245:69;7163:158;:::o;2052:1131:37:-;2177:31;2211:17;:15;:17::i;:::-;2177:51;;2238:16;2257:37;2270:10;2282:11;2257:12;:37::i;:::-;2238:56;;2333:1;2322:8;:12;:150;;;;;2471:1;2350:8;:35;;:47;2386:10;2350:47;;;;;;;;;;;;;;;:60;2398:11;2350:60;;;;;;;;;;;;;;;:74;2422:1;2411:8;:12;;;;:::i;:::-;2350:74;;;;;;;;;;;:105;;;:122;2322:150;2305:211;;;2490:26;;;;;;;;;;;;;;2305:211;2527:41;2556:11;2527:28;:41::i;:::-;2579:23;2605:96;2640:10;2664:9;2687:4;2605:21;:96::i;:::-;2579:122;;2851:17;2751:8;:31;;:43;2783:10;2751:43;;;;;;;;;;;;;;;:56;2795:11;2751:56;;;;;;;;;;;;;;;:66;2808:8;2751:66;;;;;;;;;;;:97;;;:117;;;;;;;;;;;;;;;;;;;;2956:9;2878:8;:31;;:43;2910:10;2878:43;;;;;;;;;;;;;;;:56;2922:11;2878:56;;;;;;;;;;;;;;;:66;2935:8;2878:66;;;;;;;;;;;:75;;;:87;;;;;;;;;;;;;;;;;;3059:28;2975:8;:31;;:43;3007:10;2975:43;;;;;;;;;;;;;;;:56;3019:11;2975:56;;;;;;;;;;;;;;;:66;3032:8;2975:66;;;;;;;;;;;:81;;:112;;;;3175:1;3116:17;:15;:17::i;:::-;:30;;:42;3147:10;3116:42;;;;;;;;;;;;;;;:55;3159:11;3116:55;;;;;;;;;;;;;;;;:60;;;;;;;:::i;:::-;;;;;;;;2167:1016;;;2052:1131;;;:::o;1292:224::-;1366:24;1406:16;603:23;1406:43;;1492:8;1482:18;;1468:42;1292:224;:::o;5747:597::-;5877:5;5884:6;5892:7;5901;5941:17;:15;:17::i;:::-;:44;;:51;5986:5;5941:51;;;;;;;;;;;;;;;:64;5993:11;5941:64;;;;;;;;;;;;;;;:72;6006:6;5941:72;;;;;;;;;;;:90;;;;;;;;;;;;6045:17;:15;:17::i;:::-;:44;;:51;6090:5;6045:51;;;;;;;;;;;;;;;:64;6097:11;6045:64;;;;;;;;;;;;;;;:72;6110:6;6045:72;;;;;;;;;;;:81;;;;;;;;;;;;6140:17;:15;:17::i;:::-;:44;;:51;6185:5;6140:51;;;;;;;;;;;;;;;:64;6192:11;6140:64;;;;;;;;;;;;;;;:72;6205:6;6140:72;;;;;;;;;;;:87;;;6241:17;:15;:17::i;:::-;:44;;:51;6286:5;6241:51;;;;;;;;;;;;;;;:64;6293:11;6241:64;;;;;;;;;;;;;;;:72;6306:6;6241:72;;;;;;;;;;;:86;;;5920:417;;;;;;;;5747:597;;;;;;;:::o;5028:186::-;5131:7;5157:17;:15;:17::i;:::-;:30;;:37;5188:5;5157:37;;;;;;;;;;;;;;;:50;5195:11;5157:50;;;;;;;;;;;;;;;;5150:57;;5028:186;;;;:::o;3311:867::-;3373:19;3395:41;3412:10;3424:11;3395:16;:41::i;:::-;3373:63;;3581:1;3463:17;:15;:17::i;:::-;:44;;:56;3508:10;3463:56;;;;;;;;;;;;;;;:69;3520:11;3463:69;;;;;;;;;;;;;;;:82;3533:11;3463:82;;;;;;;;;;;:114;;;:119;3446:173;;3600:19;;;;;;;;;;;;;;3446:173;3763:1;3646:17;:15;:17::i;:::-;:44;;:56;3691:10;3646:56;;;;;;;;;;;;;;;:69;3703:11;3646:69;;;;;;;;;;;;;;;:82;3716:11;3646:82;;;;;;;;;;;:113;;;:118;3629:174;;3782:21;;;;;;;;;;;;;;3629:174;3814:23;3852:11;3814:50;;3874:14;3891:50;3923:4;3930:10;3891:11;:23;;;;:50;;;;;:::i;:::-;3874:67;;3967:1;3955:8;:13;;;3951:68;;3970:49;4001:4;4008:10;3970:11;:22;;;;:49;;;;;:::i;:::-;;3951:68;4156:15;4048:17;:15;:17::i;:::-;:40;;:52;4089:10;4048:52;;;;;;;;;;;;;;;:65;4101:11;4048:65;;;;;;;;;;;;;;;:78;4114:11;4048:78;;;;;;;;;;;:105;;:123;;;;3363:815;;;3311:867;:::o;11115:163:35:-;11206:4;11229:17;:15;:17::i;:::-;:29;;:42;11259:11;11229:42;;;;;;;;;;;;;;;;;;;;;;;;;11222:49;;11115:163;;;:::o;3220:149:36:-;3299:39;3314:10;3326:11;3299:14;:39::i;:::-;3295:67;;;3347:15;;;;;;;;;;;;;;3295:67;3220:149;:::o;4361:647:37:-;4492:5;4509:10;4529:11;4543:28;:26;:28::i;:::-;:33;;:40;4577:5;4543:40;;;;;;;;;;;;;;;;;;;;;;;;;4529:54;;4604:1;4597:4;:8;;;4593:174;;;4627:4;4621:10;;4593:174;;;4666:26;:24;:26::i;:::-;4662:94;;;4716:40;4740:9;4751:4;4716:23;:40::i;:::-;4710:46;;4662:94;4593:174;4788:1;4781:3;:8;;;4777:225;;4818:9;4805:23;;;;;;4777:225;981:5:35;4863:37:37;;4876:3;4864:15;;:9;:15;;;;:::i;:::-;4863:37;;;4859:67;;;4909:17;;;;;;;;;;;;;;4859:67;981:5:35;4953:37:37;;4966:3;4954:15;;:9;:15;;;;:::i;:::-;4953:37;;;;:::i;:::-;4940:51;;;;4361:647;;;;;;:::o;5220:242::-;5327:7;5346:13;5362:17;:15;:17::i;:::-;:30;;:37;5393:5;5362:37;;;;;;;;;;;;;;;:50;5400:11;5362:50;;;;;;;;;;;;;;;;5346:66;;5438:1;5429:5;:10;:26;;5454:1;5446:5;:9;;;;:::i;:::-;5429:26;;;5442:1;5429:26;5422:33;;;5220:242;;;;:::o;21133:262:7:-;21237:14;21270:28;21302:21;21317:5;21302:14;:21::i;:::-;21267:56;;;21352:3;:11;;;21364:5;21371:6;21379:8;21352:36;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21333:55;;;;;;;;;;;21257:138;21133:262;;;;;:::o;3607:451::-;3706:4;3727:16;3745:28;3777:29;3800:5;3777:22;:29::i;:::-;3726:80;;;;3816:4;:18;;;3848:3;3897;:14;;;3930:5;3937:6;3945:8;3965:1;3955:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3865:117;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4006:1;3996:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3816:214;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4047:4;4040:11;;;;3607:451;;;;;:::o;2131:224:35:-;2205:24;2245:16;876:23;2245:43;;2331:8;2321:18;;2307:42;2131:224;:::o;6996:643:36:-;7101:4;7117:20;7140:32;7153:5;7160:11;7140:12;:32::i;:::-;7117:55;;7201:1;7186:12;:16;7182:429;;;7225:21;7250:134;7302:5;7325:11;7369:1;7354:12;:16;;;;:::i;:::-;7250:34;:134::i;:::-;7218:166;;;;;7561:1;7422:14;:12;:14::i;:::-;:42;;:49;7465:5;7422:49;;;;;;;;;;;;;;;:62;7472:11;7422:62;;;;;;;;;;;;;;;:80;7500:1;7485:12;:16;;;;:::i;:::-;7422:80;;;;;;;;;;;:119;;;:140;:178;;;;;7599:1;7582:13;:18;7422:178;7399:201;;;;;;7182:429;7627:5;7620:12;;;6996:643;;;;;:::o;11284:108:35:-;11332:4;11355:17;:15;:17::i;:::-;:30;;;;;;;;;;;;11348:37;;11284:108;:::o;11511:395::-;11610:6;11642:10;11666:25;11705;11743:17;11755:4;11743:11;:17::i;:::-;11628:132;;;;;;11787:18;11775:30;;:9;:30;;;:65;;;;11822:18;11809:31;;:9;:31;;;;11775:65;11771:107;;;11861:17;;;;;;;;;;;;;;11771:107;11896:3;11889:10;;;;;11511:395;;;;:::o;56668:917:7:-;56740:16;56758:28;56913:10;56907:17;56899:25;;56950:9;56944:16;56937:23;;57007:1;56983:26;;56991:3;56983:26;;;56979:511;;57139:1;57114:27;;57122:4;57114:27;;;57110:101;;57180:5;:13;;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;57161:35;;57110:101;57275:4;57263:35;;;57410:66;57263:214;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;57224:255;;56979:511;57531:1;57506:27;;57514:4;57506:27;;;57499:35;;;;:::i;:::-;;57575:1;57551:26;;57559:3;57551:26;;;57544:34;;;;:::i;:::-;;56668:917;;;:::o;54169:1150::-;54244:16;54262:28;54417:10;54411:17;54403:25;;54454:9;54448:16;54441:23;;54511:1;54487:26;;54495:3;54487:26;;;54483:741;;54632:1;54607:27;;54615:4;54607:27;;;54603:101;;54673:5;:13;;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;54654:35;;54603:101;54768:4;54756:35;;;54903:66;54756:214;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;54717:255;;55156:4;55144:10;55137:24;55196:3;55185:9;55178:22;54483:741;55265:1;55240:27;;55248:4;55240:27;;;55233:35;;;;:::i;:::-;;55309:1;55285:26;;55293:3;55285:26;;;55278:34;;;;:::i;:::-;;54169:1150;;;:::o;9223:180:36:-;9326:7;9352:14;:12;:14::i;:::-;:24;;:31;9377:5;9352:31;;;;;;;;;;;;;;;:44;9384:11;9352:44;;;;;;;;;;;;;;;;9345:51;;9223:180;;;;:::o;6350:507:37:-;6488:5;6495:6;6503:7;6512;6531:33;6567:22;:20;:22::i;:::-;6531:58;;6600:16;6619:5;:25;;:32;6645:5;6619:32;;;;;;;;;;;;;;;:45;6652:11;6619:45;;;;;;;;;;;;;;;:53;6665:6;6619:53;;;;;;;;;;;:62;;;;;;;;;;;;6600:81;;6691:20;6714:5;:25;;:32;6740:5;6714:32;;;;;;;;;;;;;;;:45;6747:11;6714:45;;;;;;;;;;;;;;;:53;6760:6;6714:53;;;;;;;;;;;:66;;;6691:89;;6798:52;6814:8;6824:11;6837:12;6798:15;:52::i;:::-;6791:59;;;;;;;;;;;6350:507;;;;;;;:::o;1851:187:36:-;1898:21;1931:16;738:20;1931:40;;2014:8;2004:18;;1990:42;1851:187;:::o;11912:252:35:-;11984:6;11992;12000;12018:28;12049:31;12075:4;12049:17;:15;:17::i;:::-;:21;;:25;;:31;;;;:::i;:::-;12018:62;;12098:4;:8;;;12108:4;:23;;;12133:4;:23;;;12090:67;;;;;;;11912:252;;;;;:::o;492:152:38:-;580:23;;:::i;:::-;622:3;:10;;:15;633:3;622:15;;;;;;;;;;;615:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;492:152;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:75:43:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:329::-;900:6;949:2;937:9;928:7;924:23;920:32;917:119;;;955:79;;:::i;:::-;917:119;1075:1;1100:53;1145:7;1136:6;1125:9;1121:22;1100:53;:::i;:::-;1090:63;;1046:117;841:329;;;;:::o;1176:77::-;1213:7;1242:5;1231:16;;1176:77;;;:::o;1259:118::-;1346:24;1364:5;1346:24;:::i;:::-;1341:3;1334:37;1259:118;;:::o;1383:114::-;1450:6;1484:5;1478:12;1468:22;;1383:114;;;:::o;1503:184::-;1602:11;1636:6;1631:3;1624:19;1676:4;1671:3;1667:14;1652:29;;1503:184;;;;:::o;1693:132::-;1760:4;1783:3;1775:11;;1813:4;1808:3;1804:14;1796:22;;1693:132;;;:::o;1831:108::-;1908:24;1926:5;1908:24;:::i;:::-;1903:3;1896:37;1831:108;;:::o;1945:179::-;2014:10;2035:46;2077:3;2069:6;2035:46;:::i;:::-;2113:4;2108:3;2104:14;2090:28;;1945:179;;;;:::o;2130:113::-;2200:4;2232;2227:3;2223:14;2215:22;;2130:113;;;:::o;2279:732::-;2398:3;2427:54;2475:5;2427:54;:::i;:::-;2497:86;2576:6;2571:3;2497:86;:::i;:::-;2490:93;;2607:56;2657:5;2607:56;:::i;:::-;2686:7;2717:1;2702:284;2727:6;2724:1;2721:13;2702:284;;;2803:6;2797:13;2830:63;2889:3;2874:13;2830:63;:::i;:::-;2823:70;;2916:60;2969:6;2916:60;:::i;:::-;2906:70;;2762:224;2749:1;2746;2742:9;2737:14;;2702:284;;;2706:14;3002:3;2995:10;;2403:608;;;2279:732;;;;:::o;3017:483::-;3188:4;3226:2;3215:9;3211:18;3203:26;;3239:71;3307:1;3296:9;3292:17;3283:6;3239:71;:::i;:::-;3357:9;3351:4;3347:20;3342:2;3331:9;3327:18;3320:48;3385:108;3488:4;3479:6;3385:108;:::i;:::-;3377:116;;3017:483;;;;;:::o;3506:109::-;3542:7;3582:26;3575:5;3571:38;3560:49;;3506:109;;;:::o;3621:120::-;3693:23;3710:5;3693:23;:::i;:::-;3686:5;3683:34;3673:62;;3731:1;3728;3721:12;3673:62;3621:120;:::o;3747:137::-;3792:5;3830:6;3817:20;3808:29;;3846:32;3872:5;3846:32;:::i;:::-;3747:137;;;;:::o;3890:122::-;3963:24;3981:5;3963:24;:::i;:::-;3956:5;3953:35;3943:63;;4002:1;3999;3992:12;3943:63;3890:122;:::o;4018:139::-;4064:5;4102:6;4089:20;4080:29;;4118:33;4145:5;4118:33;:::i;:::-;4018:139;;;;:::o;4163:617::-;4239:6;4247;4255;4304:2;4292:9;4283:7;4279:23;4275:32;4272:119;;;4310:79;;:::i;:::-;4272:119;4430:1;4455:53;4500:7;4491:6;4480:9;4476:22;4455:53;:::i;:::-;4445:63;;4401:117;4557:2;4583:52;4627:7;4618:6;4607:9;4603:22;4583:52;:::i;:::-;4573:62;;4528:117;4684:2;4710:53;4755:7;4746:6;4735:9;4731:22;4710:53;:::i;:::-;4700:63;;4655:118;4163:617;;;;;:::o;4786:619::-;4863:6;4871;4879;4928:2;4916:9;4907:7;4903:23;4899:32;4896:119;;;4934:79;;:::i;:::-;4896:119;5054:1;5079:53;5124:7;5115:6;5104:9;5100:22;5079:53;:::i;:::-;5069:63;;5025:117;5181:2;5207:53;5252:7;5243:6;5232:9;5228:22;5207:53;:::i;:::-;5197:63;;5152:118;5309:2;5335:53;5380:7;5371:6;5360:9;5356:22;5335:53;:::i;:::-;5325:63;;5280:118;4786:619;;;;;:::o;5411:91::-;5446:7;5490:5;5486:2;5475:21;5464:32;;5411:91;;;:::o;5508:112::-;5591:22;5607:5;5591:22;:::i;:::-;5586:3;5579:35;5508:112;;:::o;5626:115::-;5711:23;5728:5;5711:23;:::i;:::-;5706:3;5699:36;5626:115;;:::o;5747:541::-;5918:4;5956:3;5945:9;5941:19;5933:27;;5970:67;6034:1;6023:9;6019:17;6010:6;5970:67;:::i;:::-;6047:70;6113:2;6102:9;6098:18;6089:6;6047:70;:::i;:::-;6127:72;6195:2;6184:9;6180:18;6171:6;6127:72;:::i;:::-;6209;6277:2;6266:9;6262:18;6253:6;6209:72;:::i;:::-;5747:541;;;;;;;:::o;6294:474::-;6362:6;6370;6419:2;6407:9;6398:7;6394:23;6390:32;6387:119;;;6425:79;;:::i;:::-;6387:119;6545:1;6570:53;6615:7;6606:6;6595:9;6591:22;6570:53;:::i;:::-;6560:63;;6516:117;6672:2;6698:53;6743:7;6734:6;6723:9;6719:22;6698:53;:::i;:::-;6688:63;;6643:118;6294:474;;;;;:::o;6774:222::-;6867:4;6905:2;6894:9;6890:18;6882:26;;6918:71;6986:1;6975:9;6971:17;6962:6;6918:71;:::i;:::-;6774:222;;;;:::o;7002:117::-;7111:1;7108;7101:12;7125:102;7166:6;7217:2;7213:7;7208:2;7201:5;7197:14;7193:28;7183:38;;7125:102;;;:::o;7233:180::-;7281:77;7278:1;7271:88;7378:4;7375:1;7368:15;7402:4;7399:1;7392:15;7419:281;7502:27;7524:4;7502:27;:::i;:::-;7494:6;7490:40;7632:6;7620:10;7617:22;7596:18;7584:10;7581:34;7578:62;7575:88;;;7643:18;;:::i;:::-;7575:88;7683:10;7679:2;7672:22;7462:238;7419:281;;:::o;7706:129::-;7740:6;7767:20;;:::i;:::-;7757:30;;7796:33;7824:4;7816:6;7796:33;:::i;:::-;7706:129;;;:::o;7841:311::-;7918:4;8008:18;8000:6;7997:30;7994:56;;;8030:18;;:::i;:::-;7994:56;8080:4;8072:6;8068:17;8060:25;;8140:4;8134;8130:15;8122:23;;7841:311;;;:::o;8158:117::-;8267:1;8264;8257:12;8298:710;8394:5;8419:81;8435:64;8492:6;8435:64;:::i;:::-;8419:81;:::i;:::-;8410:90;;8520:5;8549:6;8542:5;8535:21;8583:4;8576:5;8572:16;8565:23;;8636:4;8628:6;8624:17;8616:6;8612:30;8665:3;8657:6;8654:15;8651:122;;;8684:79;;:::i;:::-;8651:122;8799:6;8782:220;8816:6;8811:3;8808:15;8782:220;;;8891:3;8920:37;8953:3;8941:10;8920:37;:::i;:::-;8915:3;8908:50;8987:4;8982:3;8978:14;8971:21;;8858:144;8842:4;8837:3;8833:14;8826:21;;8782:220;;;8786:21;8400:608;;8298:710;;;;;:::o;9031:370::-;9102:5;9151:3;9144:4;9136:6;9132:17;9128:27;9118:122;;9159:79;;:::i;:::-;9118:122;9276:6;9263:20;9301:94;9391:3;9383:6;9376:4;9368:6;9364:17;9301:94;:::i;:::-;9292:103;;9108:293;9031:370;;;;:::o;9407:539::-;9491:6;9540:2;9528:9;9519:7;9515:23;9511:32;9508:119;;;9546:79;;:::i;:::-;9508:119;9694:1;9683:9;9679:17;9666:31;9724:18;9716:6;9713:30;9710:117;;;9746:79;;:::i;:::-;9710:117;9851:78;9921:7;9912:6;9901:9;9897:22;9851:78;:::i;:::-;9841:88;;9637:302;9407:539;;;;:::o;9952:310::-;10028:4;10118:18;10110:6;10107:30;10104:56;;;10140:18;;:::i;:::-;10104:56;10190:4;10182:6;10178:17;10170:25;;10250:4;10244;10240:15;10232:23;;9952:310;;;:::o;10284:707::-;10379:5;10404:80;10420:63;10476:6;10420:63;:::i;:::-;10404:80;:::i;:::-;10395:89;;10504:5;10533:6;10526:5;10519:21;10567:4;10560:5;10556:16;10549:23;;10620:4;10612:6;10608:17;10600:6;10596:30;10649:3;10641:6;10638:15;10635:122;;;10668:79;;:::i;:::-;10635:122;10783:6;10766:219;10800:6;10795:3;10792:15;10766:219;;;10875:3;10904:36;10936:3;10924:10;10904:36;:::i;:::-;10899:3;10892:49;10970:4;10965:3;10961:14;10954:21;;10842:143;10826:4;10821:3;10817:14;10810:21;;10766:219;;;10770:21;10385:606;;10284:707;;;;;:::o;11013:368::-;11083:5;11132:3;11125:4;11117:6;11113:17;11109:27;11099:122;;11140:79;;:::i;:::-;11099:122;11257:6;11244:20;11282:93;11371:3;11363:6;11356:4;11348:6;11344:17;11282:93;:::i;:::-;11273:102;;11089:292;11013:368;;;;:::o;11387:311::-;11464:4;11554:18;11546:6;11543:30;11540:56;;;11576:18;;:::i;:::-;11540:56;11626:4;11618:6;11614:17;11606:25;;11686:4;11680;11676:15;11668:23;;11387:311;;;:::o;11721:710::-;11817:5;11842:81;11858:64;11915:6;11858:64;:::i;:::-;11842:81;:::i;:::-;11833:90;;11943:5;11972:6;11965:5;11958:21;12006:4;11999:5;11995:16;11988:23;;12059:4;12051:6;12047:17;12039:6;12035:30;12088:3;12080:6;12077:15;12074:122;;;12107:79;;:::i;:::-;12074:122;12222:6;12205:220;12239:6;12234:3;12231:15;12205:220;;;12314:3;12343:37;12376:3;12364:10;12343:37;:::i;:::-;12338:3;12331:50;12410:4;12405:3;12401:14;12394:21;;12281:144;12265:4;12260:3;12256:14;12249:21;;12205:220;;;12209:21;11823:608;;11721:710;;;;;:::o;12454:370::-;12525:5;12574:3;12567:4;12559:6;12555:17;12551:27;12541:122;;12582:79;;:::i;:::-;12541:122;12699:6;12686:20;12724:94;12814:3;12806:6;12799:4;12791:6;12787:17;12724:94;:::i;:::-;12715:103;;12531:293;12454:370;;;;:::o;12830:1247::-;12981:6;12989;12997;13046:2;13034:9;13025:7;13021:23;13017:32;13014:119;;;13052:79;;:::i;:::-;13014:119;13200:1;13189:9;13185:17;13172:31;13230:18;13222:6;13219:30;13216:117;;;13252:79;;:::i;:::-;13216:117;13357:78;13427:7;13418:6;13407:9;13403:22;13357:78;:::i;:::-;13347:88;;13143:302;13512:2;13501:9;13497:18;13484:32;13543:18;13535:6;13532:30;13529:117;;;13565:79;;:::i;:::-;13529:117;13670:77;13739:7;13730:6;13719:9;13715:22;13670:77;:::i;:::-;13660:87;;13455:302;13824:2;13813:9;13809:18;13796:32;13855:18;13847:6;13844:30;13841:117;;;13877:79;;:::i;:::-;13841:117;13982:78;14052:7;14043:6;14032:9;14028:22;13982:78;:::i;:::-;13972:88;;13767:303;12830:1247;;;;;:::o;14083:180::-;14131:77;14128:1;14121:88;14228:4;14225:1;14218:15;14252:4;14249:1;14242:15;14269:180;14317:77;14314:1;14307:88;14414:4;14411:1;14404:15;14438:4;14435:1;14428:15;14455:233;14494:3;14517:24;14535:5;14517:24;:::i;:::-;14508:33;;14563:66;14556:5;14553:77;14550:103;;14633:18;;:::i;:::-;14550:103;14680:1;14673:5;14669:13;14662:20;;14455:233;;;:::o;14694:194::-;14734:4;14754:20;14772:1;14754:20;:::i;:::-;14749:25;;14788:20;14806:1;14788:20;:::i;:::-;14783:25;;14832:1;14829;14825:9;14817:17;;14856:1;14850:4;14847:11;14844:37;;;14861:18;;:::i;:::-;14844:37;14694:194;;;;:::o;14894:191::-;14934:3;14953:20;14971:1;14953:20;:::i;:::-;14948:25;;14987:20;15005:1;14987:20;:::i;:::-;14982:25;;15030:1;15027;15023:9;15016:16;;15051:3;15048:1;15045:10;15042:36;;;15058:18;;:::i;:::-;15042:36;14894:191;;;;:::o;15091:275::-;15130:7;15153:19;15170:1;15153:19;:::i;:::-;15148:24;;15186:19;15203:1;15186:19;:::i;:::-;15181:24;;15240:1;15237;15233:9;15262:29;15279:11;15262:29;:::i;:::-;15251:40;;15323:11;15314:7;15311:24;15301:58;;15339:18;;:::i;:::-;15301:58;15138:228;15091:275;;;;:::o;15372:180::-;15420:77;15417:1;15410:88;15517:4;15514:1;15507:15;15541:4;15538:1;15531:15;15558:182;15597:1;15614:19;15631:1;15614:19;:::i;:::-;15609:24;;15647:19;15664:1;15647:19;:::i;:::-;15642:24;;15685:1;15675:35;;15690:18;;:::i;:::-;15675:35;15732:1;15729;15725:9;15720:14;;15558:182;;;;:::o;15746:60::-;15774:3;15795:5;15788:12;;15746:60;;;:::o;15812:142::-;15862:9;15895:53;15913:34;15922:24;15940:5;15922:24;:::i;:::-;15913:34;:::i;:::-;15895:53;:::i;:::-;15882:66;;15812:142;;;:::o;15960:126::-;16010:9;16043:37;16074:5;16043:37;:::i;:::-;16030:50;;15960:126;;;:::o;16092:146::-;16162:9;16195:37;16226:5;16195:37;:::i;:::-;16182:50;;16092:146;;;:::o;16244:171::-;16351:57;16402:5;16351:57;:::i;:::-;16346:3;16339:70;16244:171;;:::o;16421:118::-;16508:24;16526:5;16508:24;:::i;:::-;16503:3;16496:37;16421:118;;:::o;16545:482::-;16714:4;16752:2;16741:9;16737:18;16729:26;;16765:91;16853:1;16842:9;16838:17;16829:6;16765:91;:::i;:::-;16866:72;16934:2;16923:9;16919:18;16910:6;16866:72;:::i;:::-;16948;17016:2;17005:9;17001:18;16992:6;16948:72;:::i;:::-;16545:482;;;;;;:::o;17033:143::-;17090:5;17121:6;17115:13;17106:22;;17137:33;17164:5;17137:33;:::i;:::-;17033:143;;;;:::o;17182:118::-;17253:22;17269:5;17253:22;:::i;:::-;17246:5;17243:33;17233:61;;17290:1;17287;17280:12;17233:61;17182:118;:::o;17306:139::-;17361:5;17392:6;17386:13;17377:22;;17408:31;17433:5;17408:31;:::i;:::-;17306:139;;;;:::o;17451:816::-;17546:6;17554;17562;17570;17619:3;17607:9;17598:7;17594:23;17590:33;17587:120;;;17626:79;;:::i;:::-;17587:120;17746:1;17771:64;17827:7;17818:6;17807:9;17803:22;17771:64;:::i;:::-;17761:74;;17717:128;17884:2;17910:62;17964:7;17955:6;17944:9;17940:22;17910:62;:::i;:::-;17900:72;;17855:127;18021:2;18047:64;18103:7;18094:6;18083:9;18079:22;18047:64;:::i;:::-;18037:74;;17992:129;18160:2;18186:64;18242:7;18233:6;18222:9;18218:22;18186:64;:::i;:::-;18176:74;;18131:129;17451:816;;;;;;;:::o;18273:98::-;18324:6;18358:5;18352:12;18342:22;;18273:98;;;:::o;18377:168::-;18460:11;18494:6;18489:3;18482:19;18534:4;18529:3;18525:14;18510:29;;18377:168;;;;:::o;18551:246::-;18632:1;18642:113;18656:6;18653:1;18650:13;18642:113;;;18741:1;18736:3;18732:11;18726:18;18722:1;18717:3;18713:11;18706:39;18678:2;18675:1;18671:10;18666:15;;18642:113;;;18789:1;18780:6;18775:3;18771:16;18764:27;18613:184;18551:246;;;:::o;18803:373::-;18889:3;18917:38;18949:5;18917:38;:::i;:::-;18971:70;19034:6;19029:3;18971:70;:::i;:::-;18964:77;;19050:65;19108:6;19103:3;19096:4;19089:5;19085:16;19050:65;:::i;:::-;19140:29;19162:6;19140:29;:::i;:::-;19135:3;19131:39;19124:46;;18893:283;18803:373;;;;:::o;19182:680::-;19397:4;19435:3;19424:9;19420:19;19412:27;;19449:91;19537:1;19526:9;19522:17;19513:6;19449:91;:::i;:::-;19550:72;19618:2;19607:9;19603:18;19594:6;19550:72;:::i;:::-;19632;19700:2;19689:9;19685:18;19676:6;19632:72;:::i;:::-;19751:9;19745:4;19741:20;19736:2;19725:9;19721:18;19714:48;19779:76;19850:4;19841:6;19779:76;:::i;:::-;19771:84;;19182:680;;;;;;;:::o;19868:159::-;19951:9;19984:37;20015:5;19984:37;:::i;:::-;19971:50;;19868:159;;;:::o;20033:197::-;20153:70;20217:5;20153:70;:::i;:::-;20148:3;20141:83;20033:197;;:::o;20236:682::-;20454:4;20492:2;20481:9;20477:18;20469:26;;20505:104;20606:1;20595:9;20591:17;20582:6;20505:104;:::i;:::-;20656:9;20650:4;20646:20;20641:2;20630:9;20626:18;20619:48;20684:76;20755:4;20746:6;20684:76;:::i;:::-;20676:84;;20807:9;20801:4;20797:20;20792:2;20781:9;20777:18;20770:48;20835:76;20906:4;20897:6;20835:76;:::i;:::-;20827:84;;20236:682;;;;;;:::o;20924:117::-;21033:1;21030;21023:12;21047:307;21108:4;21198:18;21190:6;21187:30;21184:56;;;21220:18;;:::i;:::-;21184:56;21258:29;21280:6;21258:29;:::i;:::-;21250:37;;21342:4;21336;21332:15;21324:23;;21047:307;;;:::o;21360:432::-;21448:5;21473:65;21489:48;21530:6;21489:48;:::i;:::-;21473:65;:::i;:::-;21464:74;;21561:6;21554:5;21547:21;21599:4;21592:5;21588:16;21637:3;21628:6;21623:3;21619:16;21616:25;21613:112;;;21644:79;;:::i;:::-;21613:112;21734:52;21779:6;21774:3;21769;21734:52;:::i;:::-;21454:338;21360:432;;;;;:::o;21811:353::-;21877:5;21926:3;21919:4;21911:6;21907:17;21903:27;21893:122;;21934:79;;:::i;:::-;21893:122;22044:6;22038:13;22069:89;22154:3;22146:6;22139:4;22131:6;22127:17;22069:89;:::i;:::-;22060:98;;21883:281;21811:353;;;;:::o;22170:522::-;22249:6;22298:2;22286:9;22277:7;22273:23;22269:32;22266:119;;;22304:79;;:::i;:::-;22266:119;22445:1;22434:9;22430:17;22424:24;22475:18;22467:6;22464:30;22461:117;;;22497:79;;:::i;:::-;22461:117;22602:73;22667:7;22658:6;22647:9;22643:22;22602:73;:::i;:::-;22592:83;;22395:290;22170:522;;;;:::o;22698:143::-;22755:5;22786:6;22780:13;22771:22;;22802:33;22829:5;22802:33;:::i;:::-;22698:143;;;;:::o;22847:351::-;22917:6;22966:2;22954:9;22945:7;22941:23;22937:32;22934:119;;;22972:79;;:::i;:::-;22934:119;23092:1;23117:64;23173:7;23164:6;23153:9;23149:22;23117:64;:::i;:::-;23107:74;;23063:128;22847:351;;;;:::o;23204:161::-;23325:7;23354:5;23343:16;;23204:161;;;:::o;23371:77::-;23408:7;23437:5;23426:16;;23371:77;;;:::o;23454:92::-;23486:8;23533:5;23530:1;23526:13;23505:34;;23454:92;;;:::o;23552:314::-;23686:9;23719:141;23737:122;23750:108;23852:5;23750:108;:::i;:::-;23737:122;:::i;:::-;23719:141;:::i;:::-;23706:154;;23552:314;;;:::o;23872:299::-;24043:121;24158:5;24043:121;:::i;:::-;24038:3;24031:134;23872:299;;:::o;24177:390::-;24354:4;24392:2;24381:9;24377:18;24369:26;;24405:155;24557:1;24546:9;24542:17;24533:6;24405:155;:::i;:::-;24177:390;;;;:::o;24573:120::-;24634:7;24663:24;24681:5;24663:24;:::i;:::-;24652:35;;24573:120;;;:::o;24699:170::-;24796:48;24838:5;24796:48;:::i;:::-;24789:5;24786:59;24776:87;;24859:1;24856;24849:12;24776:87;24699:170;:::o;24875:191::-;24956:5;24987:6;24981:13;24972:22;;25003:57;25054:5;25003:57;:::i;:::-;24875:191;;;;:::o;25072:399::-;25166:6;25215:2;25203:9;25194:7;25190:23;25186:32;25183:119;;;25221:79;;:::i;:::-;25183:119;25341:1;25366:88;25446:7;25437:6;25426:9;25422:22;25366:88;:::i;:::-;25356:98;;25312:152;25072:399;;;;:::o;25477:180::-;25525:77;25522:1;25515:88;25622:4;25619:1;25612:15;25646:4;25643:1;25636:15"},"methodIdentifiers":{"getCurrentSessionData(address)":"53732469","getNewSessionNonce(address,address)":"92c2226e","getSessionData(address,address,uint256)":"8ff3849b","startSession(address,uint96,uint256)":"7fe70a27","startSessions(address[],uint96[],uint256[])":"f437a7a5","stopSession(address)":"b233bd05","stopSessions(address[])":"9afffbf9"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ArrayLengthNotMatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HasActiveFlow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidFlowRate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSuperToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PreviousSessionStillLive\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SessionAlreadyEnded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SessionNotStarted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"getCurrentSessionData\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"}],\"name\":\"getNewSessionNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_nonce\",\"type\":\"uint256\"}],\"name\":\"getSessionData\",\"outputs\":[{\"internalType\":\"int96\",\"name\":\"\",\"type\":\"int96\"},{\"internalType\":\"uint96\",\"name\":\"\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"_flowRate\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"_tag\",\"type\":\"uint256\"}],\"name\":\"startSession\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_superTokens\",\"type\":\"address[]\"},{\"internalType\":\"uint96[]\",\"name\":\"_flowRates\",\"type\":\"uint96[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_tags\",\"type\":\"uint256[]\"}],\"name\":\"startSessions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"}],\"name\":\"stopSession\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_superTokens\",\"type\":\"address[]\"}],\"name\":\"stopSessions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/facets/core/Session.sol\":\"Session\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"@openzeppelin/contracts/token/ERC777/IERC777.sol\":{\"keccak256\":\"0x385a7061f1436b079d44c140dee9387d5313e94874ff9ee877dc0085c981ac3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c3fe22bb0d9527356e11f267f9187134de4d4ed1ff77468b4d73e3238697b96\",\"dweb:/ipfs/Qmc8caJctgxbzXEpxRogQMR2bnBk5U67hA7kKbUEG2PUXV\"]},\"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol\":{\"keccak256\":\"0x1b588d76f3addfeb2f368ec534fbd8da6120c8ba3c08e95f410a9cc2204faf79\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://74e51ec8a8d50ad9c6c047a2548de4aac9e6da23f65b2d8a74e89665d26c527f\",\"dweb:/ipfs/QmS26ukRAwj9ZSHmRSbjmpmdA6EaZHAK6JvE38LkqjRYaP\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol\":{\"keccak256\":\"0xb68e122faba133422f4cbdd7e15fc913073dfa2c3682c18d6449b121e67d1104\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://da0611fda964b8356d38cb006133865b58adc6e11d3817e27daf20b02ad6880f\",\"dweb:/ipfs/QmeLbak3yiUfkGvxEZzmS4ndDwDfxtZNeKiA86G3WxzjyD\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IInstantDistributionAgreementV1.sol\":{\"keccak256\":\"0x7b088dfa11a00d2b1e6e0938978364a6918015b052a4bf3ffcc67db9b3182370\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://2437f6ea2d8c8de7613aef5de4dcf3530c2beb801f7d5f3e21ac617e73f8882b\",\"dweb:/ipfs/QmVBtqXYV25fQZ9P6xokBzgFnHCBthJSZdFo9quBY169fd\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol\":{\"keccak256\":\"0x80254971aff00fc006d70b85b7bc830bb28096789e72ff3f03aa22cc7810eb0c\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://840f9d959abfbf3919db3dca35336e360b2bbd54e677439a545c7c4f163f6d70\",\"dweb:/ipfs/QmR4CRq7dpYR4NuCSASkNrcnbSScRX8MaEvDs8L7v3xDyr\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol\":{\"keccak256\":\"0x9b4fab6dcac1337f78e04d67d8c2b48b1de8bd4bbf14b475840f9dbda7b8f21e\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://cc2f3629ad0cb46bd4f595880591ad6c9d75a82d920cb9355e462fbf8022c820\",\"dweb:/ipfs/QmXMovxK4qpWT4yffXxUVjkMNwxEfS6mtn39mLSmjaxEdW\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperApp.sol\":{\"keccak256\":\"0x6cc4b0724d977190c7441dfc3be6c6e48b43b555c3370af32ef5b6600f15f53f\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://3e89c944642772a42429f21a11017b57deb98a9198f8e4f8749f00aaee71299e\",\"dweb:/ipfs/QmaSv9GvqikcGHJ3tcwATDHSpQw6mfnHPDtcfqcZSS7LF6\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.sol\":{\"keccak256\":\"0x6860f0bf69dcc1d1ec39eefb43e0cd18b276b48ebe9efd53450e09cd2f997ab2\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://6421f80f2ff7818bd235b7bf4b911cc40edcb598507a246b4de0fa0191a9e1aa\",\"dweb:/ipfs/QmWxktXMjYhi1zt52D3JXNcxCFesXu8kQoSCJQ3j88apM3\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperTokenFactory.sol\":{\"keccak256\":\"0xe2525ef2906504e2f61775ed91bbebeea2f4e2e3fa42ce190561acf6a01187ff\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://7a9859eb432321a65cd15ca988a13776e1c31df44b4cf25f95fa04b54a8a8625\",\"dweb:/ipfs/QmQVJQoeoWemptZhbRgWJZWwMTiNtxVsc1FYmGdtdTfqcL\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol\":{\"keccak256\":\"0xab9dab941f99d0f0ef6125fb6eafde03378d7c3e94e613dd12fb7fbf594c3373\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://928c6ef915dee69058d4cfcb9f2344d4fc78d9763b47b17e5c03fbff64ba3c64\",\"dweb:/ipfs/Qmdk733ZHceatz3qbuodLCCS9TUspJJtXLoX6vWwMvrPDE\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance.sol\":{\"keccak256\":\"0x90a9259d0f0bb6b1bb6d48f051277eb75df96a9fbe684a203a3a468ad19318e2\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://9c8162a2d07ffe768920fef55292684149173afefbfba76b8fca007e55092229\",\"dweb:/ipfs/QmducLNwrzeUXEpBjUTSMu7sfmQEwVhcYXApe4brc1zQ6V\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol\":{\"keccak256\":\"0x9cad3866982902ea88df0874a563d2e4aeba5a5bcc6289c30cccf9b4099d2fb6\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://e8fd960b259331f204c7cb7dcd32b09d68f4294e3b872fad00ad467609c3ef72\",\"dweb:/ipfs/QmeZFEvsDunXQGPbXFfN5AvfKM5am1FY8Xv6e3c4tNKvgY\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo.sol\":{\"keccak256\":\"0x55be78ffb441c782f612b153d7d9049e3f0dbfd412c1f7df29c896b972b2985f\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://a223c68e38a6c9b1e363e525911bc7eda44ea517865ae53bd0d34ff858cc02ae\",\"dweb:/ipfs/QmVruGehibG6Emr2A6JHwUnhd4NzsGkE24cbGqnDpEvrKh\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.sol\":{\"keccak256\":\"0x7456cd394cc905aae7cdbd4601ce1c296c768c13c28e66efbb913cc070bad3e4\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://5a6589b428b724721ba5b4dd196c8f366a6e694ef313add093f29af64496c042\",\"dweb:/ipfs/QmSMgV6y8L6pyyzDz6kKmafVwujNWcjTqutpCBxe4uNRqg\"]},\"contracts/facets/core/Session.sol\":{\"keccak256\":\"0xef5bdf1f9526782dc8bd43123c8a25a6fb88371e6f967ad2e03259dc7730b0fe\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://031a243b28d59a7ad36daa0f625d695e0f2c8e898a3b2991b0aca0fc9b268550\",\"dweb:/ipfs/QmUMd9W3ynRkhFuPSRpKvdHwoo8GDSkwCNcEXxmnejZHva\"]},\"contracts/interfaces/core/ISession.sol\":{\"keccak256\":\"0xc618e9cd6023ef8744b2eb6211ed3465cda70c874f1297b526d00dbfcbbb70b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be1075605f777814f2c586f36c79822618ec4153c94d5dcf7ea547cdbe019414\",\"dweb:/ipfs/QmdUSV8kSgutygg2kNcn5xZfyowH7FdJnSfurNGFBZGW6A\"]},\"contracts/libraries/core/LibControl.sol\":{\"keccak256\":\"0x791dd1dc0c61948e1b1a46d190f02a041abdf6e2db26f1b436b06d8116381103\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://ec9343651044d62055789d04d464545afed31f82268dfd17703763a54441e0ec\",\"dweb:/ipfs/QmWKFYUATgubBYLZCRghkenZbjJHQwdQ8ymZVK5xBFm2QJ\"]},\"contracts/libraries/core/LibFlow.sol\":{\"keccak256\":\"0xf07903d54504fd374edbd492a084b92f9b9bd6e39846ecfcb743d9ce3031e2a7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://94b205c755a9c96ec4d8f3631cf24cb255d28b3abc65c7b2580f50a0f3c23f1c\",\"dweb:/ipfs/QmVsrQ3WzkQ9PvckGaBhd2ZDMV56wsPPZcRCGi5Qv9UXmc\"]},\"contracts/libraries/core/LibSession.sol\":{\"keccak256\":\"0x5dc6cfbe8840f7d1aa3c3920c1b7c420f27f7d7c785f4ddcb0b48072aa748648\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1094bf42c4cd9d75155a03b601321fa4d0095db76fb6c0d551cc38de8cd72031\",\"dweb:/ipfs/QmNhuWZFMJvuYUNsEzBkSnZp4hrjpR32VHMkWMTon1Q31u\"]},\"contracts/libraries/utils/IterableMappingBPS.sol\":{\"keccak256\":\"0xb6ab47a53267822918fdd13e4df79bfc1e8b2bbf921c80bbc4ad2e706e3539ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://092d19ac7ce0d7ada8fbb01d3af6822d6d8260fe8b8248e54b906a9edf381dd2\",\"dweb:/ipfs/QmZ8LZ72a2sSNfwm4Fpz54ZHVcjTe1dDy4ZrBhbNztZ1Bg\"]}},\"version\":1}"}},"contracts/interfaces/core/IAutomate.sol":{"IAutomate":{"abi":[{"inputs":[],"name":"depositGelatoFunds","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getGelatoAddresses","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMinimumAppGelatoBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_ops","type":"address"}],"name":"setGelatoContracts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"setMinimumAppGelatoBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawGelatoFunds","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"depositGelatoFunds()":"1674bc24","getGelatoAddresses()":"bb6bd765","getMinimumAppGelatoBalance()":"f24a25de","setGelatoContracts(address)":"71ebf6f4","setMinimumAppGelatoBalance(uint256)":"2e4b6945","withdrawGelatoFunds(uint256)":"a6f9223d"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"depositGelatoFunds\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGelatoAddresses\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinimumAppGelatoBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_ops\",\"type\":\"address\"}],\"name\":\"setGelatoContracts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"setMinimumAppGelatoBalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"withdrawGelatoFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/core/IAutomate.sol\":\"IAutomate\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/core/IAutomate.sol\":{\"keccak256\":\"0x21b292f16977568b93ad13329faea0112bed7e0413c441ffcf58ecca8d540ec7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0c9449f7e8725db0c2721f5a8890e58af4d69b465d1e9cecc1acfb1e3db40771\",\"dweb:/ipfs/QmR9mHTaDi8qWCq1tXzBaLgKK6tgEjk1bHEnB8GGSXLBTT\"]}},\"version\":1}"}},"contracts/interfaces/core/IControl.sol":{"IControl":{"abi":[{"inputs":[{"internalType":"address","name":"_superToken","type":"address"}],"name":"addSuperToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"clearBPS","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"depositAsset","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"}],"name":"getAssetTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"address","name":"_superToken","type":"address"}],"name":"getAssetUser","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tag","type":"uint256"}],"name":"getBPSData","outputs":[{"internalType":"uint16","name":"","type":"uint16"},{"internalType":"uint96","name":"","type":"uint96"},{"internalType":"uint96","name":"","type":"uint96"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBPSSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"},{"internalType":"uint256","name":"_nonce","type":"uint256"}],"name":"getControlData","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"}],"name":"getFeeBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMinimumEndDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMinimumLifespan","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"},{"internalType":"int96","name":"_newFlowRate","type":"int96"}],"name":"getNewBufferedAppBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"}],"name":"getNewControlNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getSBPS","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSTBufferDurationInSecond","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isBPSEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"},{"internalType":"int96","name":"_newFlowRate","type":"int96"}],"name":"isNewFlowRateAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"}],"name":"isSuperTokensSupported","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"address","name":"_superToken","type":"address"}],"name":"realizeFeeBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"}],"name":"removeSuperToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16[]","name":"_bpss","type":"uint16[]"},{"internalType":"uint96[]","name":"_flowRateLowerBounds","type":"uint96[]"},{"internalType":"uint96[]","name":"_flowRateUpperBounds","type":"uint96[]"},{"internalType":"uint256[]","name":"_tags","type":"uint256[]"}],"name":"setBPS","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_duration","type":"uint256"}],"name":"setMinimumEndDuration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_duration","type":"uint256"}],"name":"setMinimumLifespan","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_bps","type":"uint16"},{"internalType":"address","name":"_user","type":"address"}],"name":"setSBPS","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_duration","type":"uint256"}],"name":"setSTBufferAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"toggleBPS","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawAsset","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawFeeBalance","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"addSuperToken(address)":"22c3a21f","clearBPS()":"795e3425","depositAsset(address,uint256)":"46a5d043","getAssetTotal(address)":"b2419083","getAssetUser(address,address)":"be835747","getBPSData(uint256)":"6ab1c734","getBPSSize()":"a8771ab9","getControlData(address,uint256)":"0b72660d","getFeeBalance(address)":"c78f6803","getMinimumEndDuration()":"6812a173","getMinimumLifespan()":"ca70e1d5","getNewBufferedAppBalance(address,int96)":"4ee43e46","getNewControlNonce(address)":"7f69bcaf","getSBPS(address)":"2357f2cf","getSTBufferDurationInSecond()":"7ea195ad","isBPSEnabled()":"a86c8c7c","isNewFlowRateAllowed(address,int96)":"c467cddc","isSuperTokensSupported(address)":"acff4744","realizeFeeBalance(uint256,address)":"adefe35e","removeSuperToken(address)":"83807889","setBPS(uint16[],uint96[],uint96[],uint256[])":"cb857c80","setMinimumEndDuration(uint256)":"578dc59a","setMinimumLifespan(uint256)":"245b6c93","setSBPS(uint16,address)":"d99d3b69","setSTBufferAmount(uint256)":"487eb939","toggleBPS()":"703ab1b7","withdrawAsset(address,uint256)":"38e4f064","withdrawFeeBalance(address,uint256)":"ebaae661"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"}],\"name\":\"addSuperToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"clearBPS\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"depositAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"}],\"name\":\"getAssetTotal\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"}],\"name\":\"getAssetUser\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tag\",\"type\":\"uint256\"}],\"name\":\"getBPSData\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"},{\"internalType\":\"uint96\",\"name\":\"\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBPSSize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_nonce\",\"type\":\"uint256\"}],\"name\":\"getControlData\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"}],\"name\":\"getFeeBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinimumEndDuration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinimumLifespan\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"},{\"internalType\":\"int96\",\"name\":\"_newFlowRate\",\"type\":\"int96\"}],\"name\":\"getNewBufferedAppBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"}],\"name\":\"getNewControlNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"getSBPS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSTBufferDurationInSecond\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isBPSEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"},{\"internalType\":\"int96\",\"name\":\"_newFlowRate\",\"type\":\"int96\"}],\"name\":\"isNewFlowRateAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"}],\"name\":\"isSuperTokensSupported\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"}],\"name\":\"realizeFeeBalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"}],\"name\":\"removeSuperToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16[]\",\"name\":\"_bpss\",\"type\":\"uint16[]\"},{\"internalType\":\"uint96[]\",\"name\":\"_flowRateLowerBounds\",\"type\":\"uint96[]\"},{\"internalType\":\"uint96[]\",\"name\":\"_flowRateUpperBounds\",\"type\":\"uint96[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_tags\",\"type\":\"uint256[]\"}],\"name\":\"setBPS\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_duration\",\"type\":\"uint256\"}],\"name\":\"setMinimumEndDuration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_duration\",\"type\":\"uint256\"}],\"name\":\"setMinimumLifespan\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_bps\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"setSBPS\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_duration\",\"type\":\"uint256\"}],\"name\":\"setSTBufferAmount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"toggleBPS\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"withdrawAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"withdrawFeeBalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/core/IControl.sol\":\"IControl\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/core/IControl.sol\":{\"keccak256\":\"0xbe980059242de4291d9e3816f3ee0d4ad8dde4eb6a842a673315a7f82bd0b8b7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5f3f5807a1c3fd9605ca2769413d69f3e99e914a5f196fd5392cbedb3f779f3d\",\"dweb:/ipfs/QmUjmRwMjioDHcy6hLxeWDV7TgxahNwcty3HbGSywJTd46\"]}},\"version\":1}"}},"contracts/interfaces/core/IFlow.sol":{"IFlow":{"abi":[{"inputs":[{"internalType":"address","name":"_superToken","type":"address"},{"internalType":"uint256","name":"_nonce","type":"uint256"}],"name":"closeFlow","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"},{"internalType":"address","name":"_sender","type":"address"},{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"_nonce","type":"uint256"},{"internalType":"int96","name":"_flowRate","type":"int96"}],"name":"decreaseFlow","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"depositSuperToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"address","name":"_superToken","type":"address"}],"name":"getAmountFlowed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"}],"name":"getDepositTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"address","name":"_superToken","type":"address"}],"name":"getDepositUser","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"address","name":"_superToken","type":"address"},{"internalType":"uint256","name":"_nonce","type":"uint256"}],"name":"getFlowData","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"address","name":"_superToken","type":"address"}],"name":"getNewFlowNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"address","name":"_superToken","type":"address"},{"internalType":"int96","name":"_flowRate","type":"int96"}],"name":"getValidSafeLifespan","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"address","name":"_superToken","type":"address"}],"name":"hasActiveFlow","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_viewer","type":"address"},{"internalType":"address","name":"_broadcaster","type":"address"}],"name":"isViewSessionAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"address","name":"_superToken","type":"address"},{"internalType":"uint256","name":"_lifespan","type":"uint256"}],"name":"openFlow","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawSuperToken","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"closeFlow(address,uint256)":"e32867fc","decreaseFlow(address,address,address,uint256,int96)":"36fbb025","depositSuperToken(address,uint256)":"0197c386","getAmountFlowed(address,address)":"3870f4a0","getDepositTotal(address)":"c76474db","getDepositUser(address,address)":"a152ca6f","getFlowData(address,address,uint256)":"54bbc2ad","getNewFlowNonce(address,address)":"521d3f3c","getValidSafeLifespan(address,address,int96)":"0dfa0b82","hasActiveFlow(address,address)":"468240a9","isViewSessionAllowed(address,address)":"9a5b5f93","openFlow(address,address,uint256)":"dfc96e1b","withdrawSuperToken(address,uint256)":"dc5cd1d8"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_nonce\",\"type\":\"uint256\"}],\"name\":\"closeFlow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_nonce\",\"type\":\"uint256\"},{\"internalType\":\"int96\",\"name\":\"_flowRate\",\"type\":\"int96\"}],\"name\":\"decreaseFlow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"depositSuperToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"}],\"name\":\"getAmountFlowed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"}],\"name\":\"getDepositTotal\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"}],\"name\":\"getDepositUser\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_nonce\",\"type\":\"uint256\"}],\"name\":\"getFlowData\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"}],\"name\":\"getNewFlowNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"},{\"internalType\":\"int96\",\"name\":\"_flowRate\",\"type\":\"int96\"}],\"name\":\"getValidSafeLifespan\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"}],\"name\":\"hasActiveFlow\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_viewer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_broadcaster\",\"type\":\"address\"}],\"name\":\"isViewSessionAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_lifespan\",\"type\":\"uint256\"}],\"name\":\"openFlow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"withdrawSuperToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/core/IFlow.sol\":\"IFlow\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/core/IFlow.sol\":{\"keccak256\":\"0x457048a156fdd4960d1ae29d25c23e64a009b07a4d245a28baeb76ac6becbc7c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cfe189445294f1966924fac59728c7b0df24aa97d138432dc94318eca75995ad\",\"dweb:/ipfs/QmVzE173mUK78z8W1rYvwLo5e6UU6TtKdX2AhDq2wiFWkB\"]}},\"version\":1}"}},"contracts/interfaces/core/ISession.sol":{"ISession":{"abi":[{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getCurrentSessionData","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"address","name":"_superToken","type":"address"}],"name":"getNewSessionNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"address","name":"_superToken","type":"address"},{"internalType":"uint256","name":"_nonce","type":"uint256"}],"name":"getSessionData","outputs":[{"internalType":"int96","name":"","type":"int96"},{"internalType":"uint96","name":"","type":"uint96"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"},{"internalType":"uint96","name":"_flowRate","type":"uint96"},{"internalType":"uint256","name":"_tag","type":"uint256"}],"name":"startSession","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_superTokens","type":"address[]"},{"internalType":"uint96[]","name":"_flowRates","type":"uint96[]"},{"internalType":"uint256[]","name":"_tags","type":"uint256[]"}],"name":"startSessions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"}],"name":"stopSession","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_superTokens","type":"address[]"}],"name":"stopSessions","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getCurrentSessionData(address)":"53732469","getNewSessionNonce(address,address)":"92c2226e","getSessionData(address,address,uint256)":"8ff3849b","startSession(address,uint96,uint256)":"7fe70a27","startSessions(address[],uint96[],uint256[])":"f437a7a5","stopSession(address)":"b233bd05","stopSessions(address[])":"9afffbf9"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"getCurrentSessionData\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"}],\"name\":\"getNewSessionNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_nonce\",\"type\":\"uint256\"}],\"name\":\"getSessionData\",\"outputs\":[{\"internalType\":\"int96\",\"name\":\"\",\"type\":\"int96\"},{\"internalType\":\"uint96\",\"name\":\"\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"_flowRate\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"_tag\",\"type\":\"uint256\"}],\"name\":\"startSession\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_superTokens\",\"type\":\"address[]\"},{\"internalType\":\"uint96[]\",\"name\":\"_flowRates\",\"type\":\"uint96[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_tags\",\"type\":\"uint256[]\"}],\"name\":\"startSessions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"}],\"name\":\"stopSession\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_superTokens\",\"type\":\"address[]\"}],\"name\":\"stopSessions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/core/ISession.sol\":\"ISession\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/core/ISession.sol\":{\"keccak256\":\"0xc618e9cd6023ef8744b2eb6211ed3465cda70c874f1297b526d00dbfcbbb70b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be1075605f777814f2c586f36c79822618ec4153c94d5dcf7ea547cdbe019414\",\"dweb:/ipfs/QmdUSV8kSgutygg2kNcn5xZfyowH7FdJnSfurNGFBZGW6A\"]}},\"version\":1}"}},"contracts/interfaces/utils/IAccessControl.sol":{"IAccessControl":{"abi":[{"inputs":[],"name":"getDefaultAdminRole","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"_role","type":"string"}],"name":"getRole","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_role","type":"bytes32"},{"internalType":"address","name":"_account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_role","type":"bytes32"},{"internalType":"address","name":"_account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_role","type":"bytes32"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_role","type":"bytes32"},{"internalType":"address","name":"_account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getDefaultAdminRole()":"52a9c8d7","getRole(string)":"6e9067fb","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","renounceRole(bytes32)":"8bb9c5bf","revokeRole(bytes32,address)":"d547741f"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getDefaultAdminRole\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_role\",\"type\":\"string\"}],\"name\":\"getRole\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_role\",\"type\":\"bytes32\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/utils/IAccessControl.sol\":\"IAccessControl\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/utils/IAccessControl.sol\":{\"keccak256\":\"0xc5635aad433711323ec6cd473aedaca97383d910663bb74a5cda1e8e3323d86d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://404b89c843a0682fcc8fe55740ea803cc4dd85f04398c224202ec599f80d4288\",\"dweb:/ipfs/QmQgt4gNDNX3Khk1R1tTaSccvqrypibWxUjXNeE7VAAtm9\"]}},\"version\":1}"}},"contracts/interfaces/utils/ICut.sol":{"ICut":{"abi":[{"anonymous":false,"inputs":[{"components":[{"internalType":"address","name":"facetAddress","type":"address"},{"internalType":"enum ICut.FacetCutAction","name":"action","type":"uint8"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"indexed":false,"internalType":"struct ICut.FacetCut[]","name":"_diamondCut","type":"tuple[]"},{"indexed":false,"internalType":"address","name":"_init","type":"address"},{"indexed":false,"internalType":"bytes","name":"_calldata","type":"bytes"}],"name":"DiamondCut","type":"event"},{"inputs":[{"components":[{"internalType":"address","name":"facetAddress","type":"address"},{"internalType":"enum ICut.FacetCutAction","name":"action","type":"uint8"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"internalType":"struct ICut.FacetCut[]","name":"_diamondCut","type":"tuple[]"},{"internalType":"address","name":"_init","type":"address"},{"internalType":"bytes","name":"_calldata","type":"bytes"}],"name":"diamondCut","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"diamondCut((address,uint8,bytes4[])[],address,bytes)":"1f931c1c"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"facetAddress\",\"type\":\"address\"},{\"internalType\":\"enum ICut.FacetCutAction\",\"name\":\"action\",\"type\":\"uint8\"},{\"internalType\":\"bytes4[]\",\"name\":\"functionSelectors\",\"type\":\"bytes4[]\"}],\"indexed\":false,\"internalType\":\"struct ICut.FacetCut[]\",\"name\":\"_diamondCut\",\"type\":\"tuple[]\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_init\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_calldata\",\"type\":\"bytes\"}],\"name\":\"DiamondCut\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"facetAddress\",\"type\":\"address\"},{\"internalType\":\"enum ICut.FacetCutAction\",\"name\":\"action\",\"type\":\"uint8\"},{\"internalType\":\"bytes4[]\",\"name\":\"functionSelectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct ICut.FacetCut[]\",\"name\":\"_diamondCut\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"_init\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_calldata\",\"type\":\"bytes\"}],\"name\":\"diamondCut\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"diamondCut((address,uint8,bytes4[])[],address,bytes)\":{\"params\":{\"_calldata\":\"A function call, including function selector and arguments _calldata is executed with delegatecall on _init\",\"_diamondCut\":\"Contains the facet addresses and function selectors\",\"_init\":\"The address of the contract or facet to execute _calldata\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"diamondCut((address,uint8,bytes4[])[],address,bytes)\":{\"notice\":\"Add/replace/remove any number of functions and optionally execute a function with delegatecall\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/utils/ICut.sol\":\"ICut\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/utils/ICut.sol\":{\"keccak256\":\"0xeaf211b0c9da3a46171250f7cf949ffc171447c36b68451013d00a530281790a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1de62f56aba981f3430068a960272e56cbfece148d15861e410bd89f40a0f52d\",\"dweb:/ipfs/QmRw5Wrtm1NRBrnUxyKspheunoGarnkCmEYG2AFZpPeo5x\"]}},\"version\":1}"}},"contracts/interfaces/utils/IERC165.sol":{"IERC165":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Interface identification is specified in ERC-165. This function uses less than 30,000 gas.\",\"params\":{\"interfaceId\":\"The interface identifier, as specified in ERC-165\"},\"returns\":{\"_0\":\"`true` if the contract implements `interfaceID` and `interfaceID` is not 0xffffffff, `false` otherwise\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"supportsInterface(bytes4)\":{\"notice\":\"Query if a contract implements an interface\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/utils/IERC165.sol\":\"IERC165\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/utils/IERC165.sol\":{\"keccak256\":\"0x3adf1411c3cea1e9c8808e7de6f6b3d9050b3ce2f8c974b3ea36e5e774870a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c206e2bb1a3a711b9bdcb8fe22680a12dd88ba4eccb055376e5f6d06eaa393c9\",\"dweb:/ipfs/QmZEj2vabmhVmBEx39LNArRM1U4u69oU1waZ9nDUTRfRX4\"]}},\"version\":1}"}},"contracts/interfaces/utils/ILoupe.sol":{"ILoupe":{"abi":[{"inputs":[{"internalType":"bytes4","name":"_functionSelector","type":"bytes4"}],"name":"facetAddress","outputs":[{"internalType":"address","name":"facetAddress_","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"facetAddresses","outputs":[{"internalType":"address[]","name":"facetAddresses_","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_facet","type":"address"}],"name":"facetFunctionSelectors","outputs":[{"internalType":"bytes4[]","name":"facetFunctionSelectors_","type":"bytes4[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"facets","outputs":[{"components":[{"internalType":"address","name":"facetAddress","type":"address"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"internalType":"struct ILoupe.Facet[]","name":"facets_","type":"tuple[]"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"facetAddress(bytes4)":"cdffacc6","facetAddresses()":"52ef6b2c","facetFunctionSelectors(address)":"adfca15e","facets()":"7a0ed627"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_functionSelector\",\"type\":\"bytes4\"}],\"name\":\"facetAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"facetAddress_\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"facetAddresses\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"facetAddresses_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_facet\",\"type\":\"address\"}],\"name\":\"facetFunctionSelectors\",\"outputs\":[{\"internalType\":\"bytes4[]\",\"name\":\"facetFunctionSelectors_\",\"type\":\"bytes4[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"facets\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"facetAddress\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"functionSelectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct ILoupe.Facet[]\",\"name\":\"facets_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"facetAddress(bytes4)\":{\"details\":\"If facet is not found return address(0).\",\"params\":{\"_functionSelector\":\"The function selector.\"},\"returns\":{\"facetAddress_\":\"The facet address.\"}},\"facetAddresses()\":{\"returns\":{\"facetAddresses_\":\"facetAddresses_\"}},\"facetFunctionSelectors(address)\":{\"params\":{\"_facet\":\"The facet address.\"},\"returns\":{\"facetFunctionSelectors_\":\"facetFunctionSelectors_\"}},\"facets()\":{\"returns\":{\"facets_\":\"Facet\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"facetAddress(bytes4)\":{\"notice\":\"Gets the facet that supports the given selector.\"},\"facetAddresses()\":{\"notice\":\"Get all the facet addresses used by a diamond.\"},\"facetFunctionSelectors(address)\":{\"notice\":\"Gets all the function selectors supported by a specific facet.\"},\"facets()\":{\"notice\":\"Gets all facet addresses and their four byte function selectors.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/utils/ILoupe.sol\":\"ILoupe\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/utils/ILoupe.sol\":{\"keccak256\":\"0x4c5bc561178aa61cd464da8d76ac3853dbd118d8de6709273045e1580def2453\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34ca0c910c0b72d0603fc3ffc5aa28935982396a249419448199c341d8e883fe\",\"dweb:/ipfs/QmSFcJNgH9tFesJDN7W59Pj4ArwuTT1EoMDa6Pqj2Uo3zN\"]}},\"version\":1}"}},"contracts/interfaces/utils/IUtility.sol":{"IUtility":{"abi":[{"inputs":[],"name":"getNativeBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawNativeBalance","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getNativeBalance()":"88a9d554","withdrawNativeBalance(uint256)":"c9a463e2"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getNativeBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"withdrawNativeBalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/utils/IUtility.sol\":\"IUtility\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/utils/IUtility.sol\":{\"keccak256\":\"0x235180cb3af695b167f730c8e132873191d5300a6f61e3a3f9cfb0b5ea2777b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a4c12a010d8a5ba3ec9a5973525d51c0c9e4d73efb7cf7ccd80dbd2a0fd2e40\",\"dweb:/ipfs/QmSnPXS7qHd8bPRsz9uWZRbRhEbDWCjeSBkmLenbNrekYN\"]}},\"version\":1}"}},"contracts/libraries/core/LibAutomate.sol":{"LibAutomate":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209dcf8512e38e5008e0505791d77e9a8063f17eee94e2ccbd4c96ab0edaa1e14664736f6c63430008120033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP14 0xCF DUP6 SLT 0xE3 DUP15 POP ADDMOD 0xE0 POP JUMPI SWAP2 0xD7 PUSH31 0x9A8063F17EEE94E2CCBD4C96AB0EDAA1E14664736F6C634300081200330000 ","sourceMap":"252:4973:34:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209dcf8512e38e5008e0505791d77e9a8063f17eee94e2ccbd4c96ab0edaa1e14664736f6c63430008120033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP14 0xCF DUP6 SLT 0xE3 DUP15 POP ADDMOD 0xE0 POP JUMPI SWAP2 0xD7 PUSH31 0x9A8063F17EEE94E2CCBD4C96AB0EDAA1E14664736F6C634300081200330000 ","sourceMap":"252:4973:34:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/core/LibAutomate.sol\":\"LibAutomate\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol\":{\"keccak256\":\"0xf41ca991f30855bf80ffd11e9347856a517b977f0a6c2d52e6421a99b7840329\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2717fd2bdac99daa960a6de500754ea1b932093c946388c381da48658234b95\",\"dweb:/ipfs/QmP6QVMn6UeA3ByahyJbYQr5M6coHKBKsf3ySZSfbyA8R7\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x9b72f93be69ca894d8492c244259615c4a742afc8d63720dbc8bb81087d9b238\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5a7b96e511be78d5cdf635c784e6ab8cdd38625bb8cafb8a80914a1c89cf0f6\",\"dweb:/ipfs/QmVzTCwJxQAkjRQHboT5QrvsVJGWQHgfEjeTbvyxoKBrds\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xf96f969e24029d43d0df89e59d365f277021dac62b48e1c1e3ebe0acdd7f1ca1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec772b45a624be516f1c81970caa8a2e144301e9d0921cbc1a2789fef39a1269\",\"dweb:/ipfs/QmNyjwxCrGhQMyzLD93oUobJXVe9ceJvRvfXwbEtuxPiEj\"]},\"contracts/libraries/core/LibAutomate.sol\":{\"keccak256\":\"0xdca80cbbdf57dfc0f76c3719a54d2da92c09e46c3844b1011d9742a16ed2eb93\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://d5b967a7f5fa571c8154fa358725e9b5cff19b6e3847ff00e0ec210c9ce7a97b\",\"dweb:/ipfs/Qma7vn262Je4WamND9fytLSFaM4tw7NcGs5pYE1Lc3iB5a\"]},\"contracts/services/gelato/Types.sol\":{\"keccak256\":\"0xcb8ce40dd420fe9d1fc258beba179e7c43560616dfd045d254a15fa75e6043e8\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://27599e8fa821421f99c2ae56716b118c4f47201d20c8475f6554395a60fc00a5\",\"dweb:/ipfs/QmS7h9jcSSZTM1icDDcFjdNgK3cFJWXFEXoJBpjfjn2a89\"]}},\"version\":1}"}},"contracts/libraries/core/LibControl.sol":{"LibControl":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220572f78b4003bd6b28d88d2929f69b497f12f2c97f2c7495fa7a2dbb030dcc77a64736f6c63430008120033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 JUMPI 0x2F PUSH25 0xB4003BD6B28D88D2929F69B497F12F2C97F2C7495FA7A2DBB0 ADDRESS 0xDC 0xC7 PUSH27 0x64736F6C6343000812003300000000000000000000000000000000 ","sourceMap":"702:12899:35:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220572f78b4003bd6b28d88d2929f69b497f12f2c97f2c7495fa7a2dbb030dcc77a64736f6c63430008120033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 JUMPI 0x2F PUSH25 0xB4003BD6B28D88D2929F69B497F12F2C97F2C7495FA7A2DBB0 ADDRESS 0xDC 0xC7 PUSH27 0x64736F6C6343000812003300000000000000000000000000000000 ","sourceMap":"702:12899:35:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/core/LibControl.sol\":\"LibControl\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"@openzeppelin/contracts/token/ERC777/IERC777.sol\":{\"keccak256\":\"0x385a7061f1436b079d44c140dee9387d5313e94874ff9ee877dc0085c981ac3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c3fe22bb0d9527356e11f267f9187134de4d4ed1ff77468b4d73e3238697b96\",\"dweb:/ipfs/Qmc8caJctgxbzXEpxRogQMR2bnBk5U67hA7kKbUEG2PUXV\"]},\"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol\":{\"keccak256\":\"0x1b588d76f3addfeb2f368ec534fbd8da6120c8ba3c08e95f410a9cc2204faf79\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://74e51ec8a8d50ad9c6c047a2548de4aac9e6da23f65b2d8a74e89665d26c527f\",\"dweb:/ipfs/QmS26ukRAwj9ZSHmRSbjmpmdA6EaZHAK6JvE38LkqjRYaP\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol\":{\"keccak256\":\"0xb68e122faba133422f4cbdd7e15fc913073dfa2c3682c18d6449b121e67d1104\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://da0611fda964b8356d38cb006133865b58adc6e11d3817e27daf20b02ad6880f\",\"dweb:/ipfs/QmeLbak3yiUfkGvxEZzmS4ndDwDfxtZNeKiA86G3WxzjyD\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IInstantDistributionAgreementV1.sol\":{\"keccak256\":\"0x7b088dfa11a00d2b1e6e0938978364a6918015b052a4bf3ffcc67db9b3182370\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://2437f6ea2d8c8de7613aef5de4dcf3530c2beb801f7d5f3e21ac617e73f8882b\",\"dweb:/ipfs/QmVBtqXYV25fQZ9P6xokBzgFnHCBthJSZdFo9quBY169fd\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol\":{\"keccak256\":\"0x80254971aff00fc006d70b85b7bc830bb28096789e72ff3f03aa22cc7810eb0c\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://840f9d959abfbf3919db3dca35336e360b2bbd54e677439a545c7c4f163f6d70\",\"dweb:/ipfs/QmR4CRq7dpYR4NuCSASkNrcnbSScRX8MaEvDs8L7v3xDyr\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol\":{\"keccak256\":\"0x9b4fab6dcac1337f78e04d67d8c2b48b1de8bd4bbf14b475840f9dbda7b8f21e\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://cc2f3629ad0cb46bd4f595880591ad6c9d75a82d920cb9355e462fbf8022c820\",\"dweb:/ipfs/QmXMovxK4qpWT4yffXxUVjkMNwxEfS6mtn39mLSmjaxEdW\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperApp.sol\":{\"keccak256\":\"0x6cc4b0724d977190c7441dfc3be6c6e48b43b555c3370af32ef5b6600f15f53f\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://3e89c944642772a42429f21a11017b57deb98a9198f8e4f8749f00aaee71299e\",\"dweb:/ipfs/QmaSv9GvqikcGHJ3tcwATDHSpQw6mfnHPDtcfqcZSS7LF6\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.sol\":{\"keccak256\":\"0x6860f0bf69dcc1d1ec39eefb43e0cd18b276b48ebe9efd53450e09cd2f997ab2\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://6421f80f2ff7818bd235b7bf4b911cc40edcb598507a246b4de0fa0191a9e1aa\",\"dweb:/ipfs/QmWxktXMjYhi1zt52D3JXNcxCFesXu8kQoSCJQ3j88apM3\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperTokenFactory.sol\":{\"keccak256\":\"0xe2525ef2906504e2f61775ed91bbebeea2f4e2e3fa42ce190561acf6a01187ff\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://7a9859eb432321a65cd15ca988a13776e1c31df44b4cf25f95fa04b54a8a8625\",\"dweb:/ipfs/QmQVJQoeoWemptZhbRgWJZWwMTiNtxVsc1FYmGdtdTfqcL\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol\":{\"keccak256\":\"0xab9dab941f99d0f0ef6125fb6eafde03378d7c3e94e613dd12fb7fbf594c3373\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://928c6ef915dee69058d4cfcb9f2344d4fc78d9763b47b17e5c03fbff64ba3c64\",\"dweb:/ipfs/Qmdk733ZHceatz3qbuodLCCS9TUspJJtXLoX6vWwMvrPDE\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance.sol\":{\"keccak256\":\"0x90a9259d0f0bb6b1bb6d48f051277eb75df96a9fbe684a203a3a468ad19318e2\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://9c8162a2d07ffe768920fef55292684149173afefbfba76b8fca007e55092229\",\"dweb:/ipfs/QmducLNwrzeUXEpBjUTSMu7sfmQEwVhcYXApe4brc1zQ6V\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol\":{\"keccak256\":\"0x9cad3866982902ea88df0874a563d2e4aeba5a5bcc6289c30cccf9b4099d2fb6\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://e8fd960b259331f204c7cb7dcd32b09d68f4294e3b872fad00ad467609c3ef72\",\"dweb:/ipfs/QmeZFEvsDunXQGPbXFfN5AvfKM5am1FY8Xv6e3c4tNKvgY\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo.sol\":{\"keccak256\":\"0x55be78ffb441c782f612b153d7d9049e3f0dbfd412c1f7df29c896b972b2985f\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://a223c68e38a6c9b1e363e525911bc7eda44ea517865ae53bd0d34ff858cc02ae\",\"dweb:/ipfs/QmVruGehibG6Emr2A6JHwUnhd4NzsGkE24cbGqnDpEvrKh\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.sol\":{\"keccak256\":\"0x7456cd394cc905aae7cdbd4601ce1c296c768c13c28e66efbb913cc070bad3e4\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://5a6589b428b724721ba5b4dd196c8f366a6e694ef313add093f29af64496c042\",\"dweb:/ipfs/QmSMgV6y8L6pyyzDz6kKmafVwujNWcjTqutpCBxe4uNRqg\"]},\"contracts/libraries/core/LibControl.sol\":{\"keccak256\":\"0x791dd1dc0c61948e1b1a46d190f02a041abdf6e2db26f1b436b06d8116381103\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://ec9343651044d62055789d04d464545afed31f82268dfd17703763a54441e0ec\",\"dweb:/ipfs/QmWKFYUATgubBYLZCRghkenZbjJHQwdQ8ymZVK5xBFm2QJ\"]},\"contracts/libraries/core/LibFlow.sol\":{\"keccak256\":\"0xf07903d54504fd374edbd492a084b92f9b9bd6e39846ecfcb743d9ce3031e2a7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://94b205c755a9c96ec4d8f3631cf24cb255d28b3abc65c7b2580f50a0f3c23f1c\",\"dweb:/ipfs/QmVsrQ3WzkQ9PvckGaBhd2ZDMV56wsPPZcRCGi5Qv9UXmc\"]},\"contracts/libraries/core/LibSession.sol\":{\"keccak256\":\"0x5dc6cfbe8840f7d1aa3c3920c1b7c420f27f7d7c785f4ddcb0b48072aa748648\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1094bf42c4cd9d75155a03b601321fa4d0095db76fb6c0d551cc38de8cd72031\",\"dweb:/ipfs/QmNhuWZFMJvuYUNsEzBkSnZp4hrjpR32VHMkWMTon1Q31u\"]},\"contracts/libraries/utils/IterableMappingBPS.sol\":{\"keccak256\":\"0xb6ab47a53267822918fdd13e4df79bfc1e8b2bbf921c80bbc4ad2e706e3539ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://092d19ac7ce0d7ada8fbb01d3af6822d6d8260fe8b8248e54b906a9edf381dd2\",\"dweb:/ipfs/QmZ8LZ72a2sSNfwm4Fpz54ZHVcjTe1dDy4ZrBhbNztZ1Bg\"]}},\"version\":1}"}},"contracts/libraries/core/LibFlow.sol":{"LibFlow":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122073fed15c5323f721203a8f2152a8d92aa5fbedfc9d6abc936d395edad03865c664736f6c63430008120033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH20 0xFED15C5323F721203A8F2152A8D92AA5FBEDFC9D PUSH11 0xBC936D395EDAD03865C664 PUSH20 0x6F6C634300081200330000000000000000000000 ","sourceMap":"627:11706:36:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122073fed15c5323f721203a8f2152a8d92aa5fbedfc9d6abc936d395edad03865c664736f6c63430008120033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH20 0xFED15C5323F721203A8F2152A8D92AA5FBEDFC9D PUSH11 0xBC936D395EDAD03865C664 PUSH20 0x6F6C634300081200330000000000000000000000 ","sourceMap":"627:11706:36:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/core/LibFlow.sol\":\"LibFlow\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"@openzeppelin/contracts/token/ERC777/IERC777.sol\":{\"keccak256\":\"0x385a7061f1436b079d44c140dee9387d5313e94874ff9ee877dc0085c981ac3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c3fe22bb0d9527356e11f267f9187134de4d4ed1ff77468b4d73e3238697b96\",\"dweb:/ipfs/Qmc8caJctgxbzXEpxRogQMR2bnBk5U67hA7kKbUEG2PUXV\"]},\"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol\":{\"keccak256\":\"0x1b588d76f3addfeb2f368ec534fbd8da6120c8ba3c08e95f410a9cc2204faf79\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://74e51ec8a8d50ad9c6c047a2548de4aac9e6da23f65b2d8a74e89665d26c527f\",\"dweb:/ipfs/QmS26ukRAwj9ZSHmRSbjmpmdA6EaZHAK6JvE38LkqjRYaP\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol\":{\"keccak256\":\"0xb68e122faba133422f4cbdd7e15fc913073dfa2c3682c18d6449b121e67d1104\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://da0611fda964b8356d38cb006133865b58adc6e11d3817e27daf20b02ad6880f\",\"dweb:/ipfs/QmeLbak3yiUfkGvxEZzmS4ndDwDfxtZNeKiA86G3WxzjyD\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IInstantDistributionAgreementV1.sol\":{\"keccak256\":\"0x7b088dfa11a00d2b1e6e0938978364a6918015b052a4bf3ffcc67db9b3182370\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://2437f6ea2d8c8de7613aef5de4dcf3530c2beb801f7d5f3e21ac617e73f8882b\",\"dweb:/ipfs/QmVBtqXYV25fQZ9P6xokBzgFnHCBthJSZdFo9quBY169fd\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol\":{\"keccak256\":\"0x80254971aff00fc006d70b85b7bc830bb28096789e72ff3f03aa22cc7810eb0c\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://840f9d959abfbf3919db3dca35336e360b2bbd54e677439a545c7c4f163f6d70\",\"dweb:/ipfs/QmR4CRq7dpYR4NuCSASkNrcnbSScRX8MaEvDs8L7v3xDyr\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol\":{\"keccak256\":\"0x9b4fab6dcac1337f78e04d67d8c2b48b1de8bd4bbf14b475840f9dbda7b8f21e\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://cc2f3629ad0cb46bd4f595880591ad6c9d75a82d920cb9355e462fbf8022c820\",\"dweb:/ipfs/QmXMovxK4qpWT4yffXxUVjkMNwxEfS6mtn39mLSmjaxEdW\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperApp.sol\":{\"keccak256\":\"0x6cc4b0724d977190c7441dfc3be6c6e48b43b555c3370af32ef5b6600f15f53f\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://3e89c944642772a42429f21a11017b57deb98a9198f8e4f8749f00aaee71299e\",\"dweb:/ipfs/QmaSv9GvqikcGHJ3tcwATDHSpQw6mfnHPDtcfqcZSS7LF6\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.sol\":{\"keccak256\":\"0x6860f0bf69dcc1d1ec39eefb43e0cd18b276b48ebe9efd53450e09cd2f997ab2\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://6421f80f2ff7818bd235b7bf4b911cc40edcb598507a246b4de0fa0191a9e1aa\",\"dweb:/ipfs/QmWxktXMjYhi1zt52D3JXNcxCFesXu8kQoSCJQ3j88apM3\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperTokenFactory.sol\":{\"keccak256\":\"0xe2525ef2906504e2f61775ed91bbebeea2f4e2e3fa42ce190561acf6a01187ff\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://7a9859eb432321a65cd15ca988a13776e1c31df44b4cf25f95fa04b54a8a8625\",\"dweb:/ipfs/QmQVJQoeoWemptZhbRgWJZWwMTiNtxVsc1FYmGdtdTfqcL\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol\":{\"keccak256\":\"0xab9dab941f99d0f0ef6125fb6eafde03378d7c3e94e613dd12fb7fbf594c3373\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://928c6ef915dee69058d4cfcb9f2344d4fc78d9763b47b17e5c03fbff64ba3c64\",\"dweb:/ipfs/Qmdk733ZHceatz3qbuodLCCS9TUspJJtXLoX6vWwMvrPDE\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance.sol\":{\"keccak256\":\"0x90a9259d0f0bb6b1bb6d48f051277eb75df96a9fbe684a203a3a468ad19318e2\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://9c8162a2d07ffe768920fef55292684149173afefbfba76b8fca007e55092229\",\"dweb:/ipfs/QmducLNwrzeUXEpBjUTSMu7sfmQEwVhcYXApe4brc1zQ6V\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol\":{\"keccak256\":\"0x9cad3866982902ea88df0874a563d2e4aeba5a5bcc6289c30cccf9b4099d2fb6\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://e8fd960b259331f204c7cb7dcd32b09d68f4294e3b872fad00ad467609c3ef72\",\"dweb:/ipfs/QmeZFEvsDunXQGPbXFfN5AvfKM5am1FY8Xv6e3c4tNKvgY\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo.sol\":{\"keccak256\":\"0x55be78ffb441c782f612b153d7d9049e3f0dbfd412c1f7df29c896b972b2985f\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://a223c68e38a6c9b1e363e525911bc7eda44ea517865ae53bd0d34ff858cc02ae\",\"dweb:/ipfs/QmVruGehibG6Emr2A6JHwUnhd4NzsGkE24cbGqnDpEvrKh\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.sol\":{\"keccak256\":\"0x7456cd394cc905aae7cdbd4601ce1c296c768c13c28e66efbb913cc070bad3e4\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://5a6589b428b724721ba5b4dd196c8f366a6e694ef313add093f29af64496c042\",\"dweb:/ipfs/QmSMgV6y8L6pyyzDz6kKmafVwujNWcjTqutpCBxe4uNRqg\"]},\"contracts/libraries/core/LibControl.sol\":{\"keccak256\":\"0x791dd1dc0c61948e1b1a46d190f02a041abdf6e2db26f1b436b06d8116381103\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://ec9343651044d62055789d04d464545afed31f82268dfd17703763a54441e0ec\",\"dweb:/ipfs/QmWKFYUATgubBYLZCRghkenZbjJHQwdQ8ymZVK5xBFm2QJ\"]},\"contracts/libraries/core/LibFlow.sol\":{\"keccak256\":\"0xf07903d54504fd374edbd492a084b92f9b9bd6e39846ecfcb743d9ce3031e2a7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://94b205c755a9c96ec4d8f3631cf24cb255d28b3abc65c7b2580f50a0f3c23f1c\",\"dweb:/ipfs/QmVsrQ3WzkQ9PvckGaBhd2ZDMV56wsPPZcRCGi5Qv9UXmc\"]},\"contracts/libraries/core/LibSession.sol\":{\"keccak256\":\"0x5dc6cfbe8840f7d1aa3c3920c1b7c420f27f7d7c785f4ddcb0b48072aa748648\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1094bf42c4cd9d75155a03b601321fa4d0095db76fb6c0d551cc38de8cd72031\",\"dweb:/ipfs/QmNhuWZFMJvuYUNsEzBkSnZp4hrjpR32VHMkWMTon1Q31u\"]},\"contracts/libraries/utils/IterableMappingBPS.sol\":{\"keccak256\":\"0xb6ab47a53267822918fdd13e4df79bfc1e8b2bbf921c80bbc4ad2e706e3539ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://092d19ac7ce0d7ada8fbb01d3af6822d6d8260fe8b8248e54b906a9edf381dd2\",\"dweb:/ipfs/QmZ8LZ72a2sSNfwm4Fpz54ZHVcjTe1dDy4ZrBhbNztZ1Bg\"]}},\"version\":1}"}},"contracts/libraries/core/LibSession.sol":{"LibSession":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122018b0fe8237bf0878875a818294b8c586f4090a58b8df71f6e9430f28a60af89064736f6c63430008120033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 XOR 0xB0 INVALID DUP3 CALLDATACOPY 0xBF ADDMOD PUSH25 0x875A818294B8C586F4090A58B8DF71F6E9430F28A60AF89064 PUSH20 0x6F6C634300081200330000000000000000000000 ","sourceMap":"486:6925:37:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122018b0fe8237bf0878875a818294b8c586f4090a58b8df71f6e9430f28a60af89064736f6c63430008120033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 XOR 0xB0 INVALID DUP3 CALLDATACOPY 0xBF ADDMOD PUSH25 0x875A818294B8C586F4090A58B8DF71F6E9430F28A60AF89064 PUSH20 0x6F6C634300081200330000000000000000000000 ","sourceMap":"486:6925:37:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/core/LibSession.sol\":\"LibSession\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"@openzeppelin/contracts/token/ERC777/IERC777.sol\":{\"keccak256\":\"0x385a7061f1436b079d44c140dee9387d5313e94874ff9ee877dc0085c981ac3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c3fe22bb0d9527356e11f267f9187134de4d4ed1ff77468b4d73e3238697b96\",\"dweb:/ipfs/Qmc8caJctgxbzXEpxRogQMR2bnBk5U67hA7kKbUEG2PUXV\"]},\"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol\":{\"keccak256\":\"0x1b588d76f3addfeb2f368ec534fbd8da6120c8ba3c08e95f410a9cc2204faf79\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://74e51ec8a8d50ad9c6c047a2548de4aac9e6da23f65b2d8a74e89665d26c527f\",\"dweb:/ipfs/QmS26ukRAwj9ZSHmRSbjmpmdA6EaZHAK6JvE38LkqjRYaP\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol\":{\"keccak256\":\"0xb68e122faba133422f4cbdd7e15fc913073dfa2c3682c18d6449b121e67d1104\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://da0611fda964b8356d38cb006133865b58adc6e11d3817e27daf20b02ad6880f\",\"dweb:/ipfs/QmeLbak3yiUfkGvxEZzmS4ndDwDfxtZNeKiA86G3WxzjyD\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IInstantDistributionAgreementV1.sol\":{\"keccak256\":\"0x7b088dfa11a00d2b1e6e0938978364a6918015b052a4bf3ffcc67db9b3182370\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://2437f6ea2d8c8de7613aef5de4dcf3530c2beb801f7d5f3e21ac617e73f8882b\",\"dweb:/ipfs/QmVBtqXYV25fQZ9P6xokBzgFnHCBthJSZdFo9quBY169fd\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol\":{\"keccak256\":\"0x80254971aff00fc006d70b85b7bc830bb28096789e72ff3f03aa22cc7810eb0c\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://840f9d959abfbf3919db3dca35336e360b2bbd54e677439a545c7c4f163f6d70\",\"dweb:/ipfs/QmR4CRq7dpYR4NuCSASkNrcnbSScRX8MaEvDs8L7v3xDyr\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol\":{\"keccak256\":\"0x9b4fab6dcac1337f78e04d67d8c2b48b1de8bd4bbf14b475840f9dbda7b8f21e\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://cc2f3629ad0cb46bd4f595880591ad6c9d75a82d920cb9355e462fbf8022c820\",\"dweb:/ipfs/QmXMovxK4qpWT4yffXxUVjkMNwxEfS6mtn39mLSmjaxEdW\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperApp.sol\":{\"keccak256\":\"0x6cc4b0724d977190c7441dfc3be6c6e48b43b555c3370af32ef5b6600f15f53f\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://3e89c944642772a42429f21a11017b57deb98a9198f8e4f8749f00aaee71299e\",\"dweb:/ipfs/QmaSv9GvqikcGHJ3tcwATDHSpQw6mfnHPDtcfqcZSS7LF6\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.sol\":{\"keccak256\":\"0x6860f0bf69dcc1d1ec39eefb43e0cd18b276b48ebe9efd53450e09cd2f997ab2\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://6421f80f2ff7818bd235b7bf4b911cc40edcb598507a246b4de0fa0191a9e1aa\",\"dweb:/ipfs/QmWxktXMjYhi1zt52D3JXNcxCFesXu8kQoSCJQ3j88apM3\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperTokenFactory.sol\":{\"keccak256\":\"0xe2525ef2906504e2f61775ed91bbebeea2f4e2e3fa42ce190561acf6a01187ff\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://7a9859eb432321a65cd15ca988a13776e1c31df44b4cf25f95fa04b54a8a8625\",\"dweb:/ipfs/QmQVJQoeoWemptZhbRgWJZWwMTiNtxVsc1FYmGdtdTfqcL\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol\":{\"keccak256\":\"0xab9dab941f99d0f0ef6125fb6eafde03378d7c3e94e613dd12fb7fbf594c3373\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://928c6ef915dee69058d4cfcb9f2344d4fc78d9763b47b17e5c03fbff64ba3c64\",\"dweb:/ipfs/Qmdk733ZHceatz3qbuodLCCS9TUspJJtXLoX6vWwMvrPDE\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance.sol\":{\"keccak256\":\"0x90a9259d0f0bb6b1bb6d48f051277eb75df96a9fbe684a203a3a468ad19318e2\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://9c8162a2d07ffe768920fef55292684149173afefbfba76b8fca007e55092229\",\"dweb:/ipfs/QmducLNwrzeUXEpBjUTSMu7sfmQEwVhcYXApe4brc1zQ6V\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol\":{\"keccak256\":\"0x9cad3866982902ea88df0874a563d2e4aeba5a5bcc6289c30cccf9b4099d2fb6\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://e8fd960b259331f204c7cb7dcd32b09d68f4294e3b872fad00ad467609c3ef72\",\"dweb:/ipfs/QmeZFEvsDunXQGPbXFfN5AvfKM5am1FY8Xv6e3c4tNKvgY\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo.sol\":{\"keccak256\":\"0x55be78ffb441c782f612b153d7d9049e3f0dbfd412c1f7df29c896b972b2985f\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://a223c68e38a6c9b1e363e525911bc7eda44ea517865ae53bd0d34ff858cc02ae\",\"dweb:/ipfs/QmVruGehibG6Emr2A6JHwUnhd4NzsGkE24cbGqnDpEvrKh\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.sol\":{\"keccak256\":\"0x7456cd394cc905aae7cdbd4601ce1c296c768c13c28e66efbb913cc070bad3e4\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://5a6589b428b724721ba5b4dd196c8f366a6e694ef313add093f29af64496c042\",\"dweb:/ipfs/QmSMgV6y8L6pyyzDz6kKmafVwujNWcjTqutpCBxe4uNRqg\"]},\"contracts/libraries/core/LibControl.sol\":{\"keccak256\":\"0x791dd1dc0c61948e1b1a46d190f02a041abdf6e2db26f1b436b06d8116381103\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://ec9343651044d62055789d04d464545afed31f82268dfd17703763a54441e0ec\",\"dweb:/ipfs/QmWKFYUATgubBYLZCRghkenZbjJHQwdQ8ymZVK5xBFm2QJ\"]},\"contracts/libraries/core/LibFlow.sol\":{\"keccak256\":\"0xf07903d54504fd374edbd492a084b92f9b9bd6e39846ecfcb743d9ce3031e2a7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://94b205c755a9c96ec4d8f3631cf24cb255d28b3abc65c7b2580f50a0f3c23f1c\",\"dweb:/ipfs/QmVsrQ3WzkQ9PvckGaBhd2ZDMV56wsPPZcRCGi5Qv9UXmc\"]},\"contracts/libraries/core/LibSession.sol\":{\"keccak256\":\"0x5dc6cfbe8840f7d1aa3c3920c1b7c420f27f7d7c785f4ddcb0b48072aa748648\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1094bf42c4cd9d75155a03b601321fa4d0095db76fb6c0d551cc38de8cd72031\",\"dweb:/ipfs/QmNhuWZFMJvuYUNsEzBkSnZp4hrjpR32VHMkWMTon1Q31u\"]},\"contracts/libraries/utils/IterableMappingBPS.sol\":{\"keccak256\":\"0xb6ab47a53267822918fdd13e4df79bfc1e8b2bbf921c80bbc4ad2e706e3539ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://092d19ac7ce0d7ada8fbb01d3af6822d6d8260fe8b8248e54b906a9edf381dd2\",\"dweb:/ipfs/QmZ8LZ72a2sSNfwm4Fpz54ZHVcjTe1dDy4ZrBhbNztZ1Bg\"]}},\"version\":1}"}},"contracts/libraries/utils/IterableMappingBPS.sol":{"IterableMappingBPS":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200b5a63e53722c2e8c2eb94ebde8b29abb28498d455a163d6fabf3d14fcfb11c064736f6c63430008120033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SIGNEXTEND GAS PUSH4 0xE53722C2 0xE8 0xC2 0xEB SWAP5 0xEB 0xDE DUP12 0x29 0xAB 0xB2 DUP5 SWAP9 0xD4 SSTORE LOG1 PUSH4 0xD6FABF3D EQ 0xFC 0xFB GT 0xC0 PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"205:1887:38:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200b5a63e53722c2e8c2eb94ebde8b29abb28498d455a163d6fabf3d14fcfb11c064736f6c63430008120033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SIGNEXTEND GAS PUSH4 0xE53722C2 0xE8 0xC2 0xEB SWAP5 0xEB 0xDE DUP12 0x29 0xAB 0xB2 DUP5 SWAP9 0xD4 SSTORE LOG1 PUSH4 0xD6FABF3D EQ 0xFC 0xFB GT 0xC0 PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"205:1887:38:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/utils/IterableMappingBPS.sol\":\"IterableMappingBPS\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/libraries/utils/IterableMappingBPS.sol\":{\"keccak256\":\"0xb6ab47a53267822918fdd13e4df79bfc1e8b2bbf921c80bbc4ad2e706e3539ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://092d19ac7ce0d7ada8fbb01d3af6822d6d8260fe8b8248e54b906a9edf381dd2\",\"dweb:/ipfs/QmZ8LZ72a2sSNfwm4Fpz54ZHVcjTe1dDy4ZrBhbNztZ1Bg\"]}},\"version\":1}"}},"contracts/libraries/utils/LibAccessControl.sol":{"LibAccessControl":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200e6b4c12a99f2ee419c15e747c8ef5b803d0ed5bb8c945f20304e871deaff83564736f6c63430008120033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE PUSH12 0x4C12A99F2EE419C15E747C8E CREATE2 0xB8 SUB 0xD0 0xED JUMPDEST 0xB8 0xC9 GASLIMIT CALLCODE SUB DIV 0xE8 PUSH18 0xDEAFF83564736F6C63430008120033000000 ","sourceMap":"114:3253:39:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200e6b4c12a99f2ee419c15e747c8ef5b803d0ed5bb8c945f20304e871deaff83564736f6c63430008120033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE PUSH12 0x4C12A99F2EE419C15E747C8E CREATE2 0xB8 SUB 0xD0 0xED JUMPDEST 0xB8 0xC9 GASLIMIT CALLCODE SUB DIV 0xE8 PUSH18 0xDEAFF83564736F6C63430008120033000000 ","sourceMap":"114:3253:39:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/utils/LibAccessControl.sol\":\"LibAccessControl\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xa4d1d62251f8574deb032a35fc948386a9b4de74b812d4f545a1ac120486b48a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c969013129ba9e651a20735ef659fef6d8a1139ea3607bd4b26ddea2d645634\",\"dweb:/ipfs/QmVhVa6LGuzAcB8qgDtVHRkucn4ihj5UZr8xBLcJkP6ucb\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa1e8e83cd0087785df04ac79fb395d9f3684caeaf973d9e2c71caef723a3a5d6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33bbf48cc069be677705037ba7520c22b1b622c23b33e1a71495f2d36549d40b\",\"dweb:/ipfs/Qmct36zWXv3j7LZB83uwbg7TXwnZSN1fqHNDZ93GG98bGz\"]},\"contracts/libraries/utils/LibAccessControl.sol\":{\"keccak256\":\"0xebec727abd5564cc66e0b402d9ceb87168e19d73bd4853b034944b61a420f912\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://5390c191313856ad3f5d863b71d8a9d29a793c73cc6fecd9ef41abff262131a2\",\"dweb:/ipfs/QmUK83c2nwSR1L8M2rADMkJtsaBkADhYN2W3xuoxaQ2eC9\"]}},\"version\":1}"}},"contracts/libraries/utils/LibDiamond.sol":{"LibDiamond":{"abi":[{"anonymous":false,"inputs":[{"components":[{"internalType":"address","name":"facetAddress","type":"address"},{"internalType":"enum ICut.FacetCutAction","name":"action","type":"uint8"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"indexed":false,"internalType":"struct ICut.FacetCut[]","name":"_diamondCut","type":"tuple[]"},{"indexed":false,"internalType":"address","name":"_init","type":"address"},{"indexed":false,"internalType":"bytes","name":"_calldata","type":"bytes"}],"name":"DiamondCut","type":"event"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c4d0b83783de9e18dfe67224c3667bce1a0804ce1f96773d0f0ebbd4f5fa5b6f64736f6c63430008120033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC4 0xD0 0xB8 CALLDATACOPY DUP4 0xDE SWAP15 XOR 0xDF 0xE6 PUSH19 0x24C3667BCE1A0804CE1F96773D0F0EBBD4F5FA JUMPDEST PUSH16 0x64736F6C634300081200330000000000 ","sourceMap":"366:10858:40:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c4d0b83783de9e18dfe67224c3667bce1a0804ce1f96773d0f0ebbd4f5fa5b6f64736f6c63430008120033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC4 0xD0 0xB8 CALLDATACOPY DUP4 0xDE SWAP15 XOR 0xDF 0xE6 PUSH19 0x24C3667BCE1A0804CE1F96773D0F0EBBD4F5FA JUMPDEST PUSH16 0x64736F6C634300081200330000000000 ","sourceMap":"366:10858:40:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"facetAddress\",\"type\":\"address\"},{\"internalType\":\"enum ICut.FacetCutAction\",\"name\":\"action\",\"type\":\"uint8\"},{\"internalType\":\"bytes4[]\",\"name\":\"functionSelectors\",\"type\":\"bytes4[]\"}],\"indexed\":false,\"internalType\":\"struct ICut.FacetCut[]\",\"name\":\"_diamondCut\",\"type\":\"tuple[]\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_init\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_calldata\",\"type\":\"bytes\"}],\"name\":\"DiamondCut\",\"type\":\"event\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/utils/LibDiamond.sol\":\"LibDiamond\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/utils/ICut.sol\":{\"keccak256\":\"0xeaf211b0c9da3a46171250f7cf949ffc171447c36b68451013d00a530281790a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1de62f56aba981f3430068a960272e56cbfece148d15861e410bd89f40a0f52d\",\"dweb:/ipfs/QmRw5Wrtm1NRBrnUxyKspheunoGarnkCmEYG2AFZpPeo5x\"]},\"contracts/libraries/utils/LibDiamond.sol\":{\"keccak256\":\"0x79254e503c12329739379fe3900cf174268bfe2c65cf5b7c1396b17783939834\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d405043f0b78b814d17fb721b476d2ab7a9d5a0c6065f6ecd0d4007c43e6b9fe\",\"dweb:/ipfs/QmPEsvxHnZKp84ww7WnQKjGo89eiVzXxcgdGxmMCcWbkZE\"]}},\"version\":1}"}},"contracts/services/gelato/Types.sol":{"IAutomate":{"abi":[{"inputs":[{"internalType":"bytes32","name":"taskId","type":"bytes32"}],"name":"cancelTask","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"execAddress","type":"address"},{"internalType":"bytes","name":"execDataOrSelector","type":"bytes"},{"components":[{"internalType":"enum Module[]","name":"modules","type":"uint8[]"},{"internalType":"bytes[]","name":"args","type":"bytes[]"}],"internalType":"struct ModuleData","name":"moduleData","type":"tuple"},{"internalType":"address","name":"feeToken","type":"address"}],"name":"createTask","outputs":[{"internalType":"bytes32","name":"taskId","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"gelato","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFeeDetails","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taskTreasury","outputs":[{"internalType":"contract ITaskTreasuryUpgradable","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"cancelTask(bytes32)":"ee8ca3b5","createTask(address,bytes,(uint8[],bytes[]),address)":"3323b467","gelato()":"573ea575","getFeeDetails()":"b810c636","taskTreasury()":"e60a3213"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"taskId\",\"type\":\"bytes32\"}],\"name\":\"cancelTask\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"execAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"execDataOrSelector\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"enum Module[]\",\"name\":\"modules\",\"type\":\"uint8[]\"},{\"internalType\":\"bytes[]\",\"name\":\"args\",\"type\":\"bytes[]\"}],\"internalType\":\"struct ModuleData\",\"name\":\"moduleData\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"feeToken\",\"type\":\"address\"}],\"name\":\"createTask\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"taskId\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gelato\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFeeDetails\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"taskTreasury\",\"outputs\":[{\"internalType\":\"contract ITaskTreasuryUpgradable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/services/gelato/Types.sol\":\"IAutomate\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/services/gelato/Types.sol\":{\"keccak256\":\"0xcb8ce40dd420fe9d1fc258beba179e7c43560616dfd045d254a15fa75e6043e8\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://27599e8fa821421f99c2ae56716b118c4f47201d20c8475f6554395a60fc00a5\",\"dweb:/ipfs/QmS7h9jcSSZTM1icDDcFjdNgK3cFJWXFEXoJBpjfjn2a89\"]}},\"version\":1}"},"IOpsProxyFactory":{"abi":[{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getProxyOf","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getProxyOf(address)":"ded89a7c"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getProxyOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/services/gelato/Types.sol\":\"IOpsProxyFactory\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/services/gelato/Types.sol\":{\"keccak256\":\"0xcb8ce40dd420fe9d1fc258beba179e7c43560616dfd045d254a15fa75e6043e8\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://27599e8fa821421f99c2ae56716b118c4f47201d20c8475f6554395a60fc00a5\",\"dweb:/ipfs/QmS7h9jcSSZTM1icDDcFjdNgK3cFJWXFEXoJBpjfjn2a89\"]}},\"version\":1}"},"ITaskTreasuryUpgradable":{"abi":[{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"depositFunds","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"address","name":"_token","type":"address"}],"name":"userTokenBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"receiver","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawFunds","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"depositFunds(address,address,uint256)":"c1461d57","userTokenBalance(address,address)":"b47064c8","withdrawFunds(address,address,uint256)":"1c20fadd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"depositFunds\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"userTokenBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/services/gelato/Types.sol\":\"ITaskTreasuryUpgradable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/services/gelato/Types.sol\":{\"keccak256\":\"0xcb8ce40dd420fe9d1fc258beba179e7c43560616dfd045d254a15fa75e6043e8\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://27599e8fa821421f99c2ae56716b118c4f47201d20c8475f6554395a60fc00a5\",\"dweb:/ipfs/QmS7h9jcSSZTM1icDDcFjdNgK3cFJWXFEXoJBpjfjn2a89\"]}},\"version\":1}"}},"contracts/upgrades/DiamondInit.sol":{"DiamondInit":{"abi":[{"inputs":[{"internalType":"address","name":"_autobot","type":"address"},{"internalType":"uint256","name":"_minimumAppGelatoBalance","type":"uint256"},{"internalType":"uint256","name":"_minimumEndDuration","type":"uint256"},{"internalType":"uint256","name":"_minimumLifespan","type":"uint256"},{"internalType":"uint256","name":"_stBufferDurationInSecond","type":"uint256"},{"internalType":"address[]","name":"_superTokens","type":"address[]"}],"name":"init","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50610d38806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80630629b93814610030575b600080fd5b61004a60048036038101906100459190610add565b61004c565b005b60006100566105bd565b905060018160030160007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060018160030160007f1f931c1c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060018160030160007f48e2b093000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060018160030160007ff8b33b26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060018160030160007f410db6b6000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060018160030160007fa60cf313000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060018160030160007fb5879a4b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060018160030160007fed5e69e2000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060018160030160007f5e1208a1000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555061054d876105ea565b610556866107d2565b61055f856107e5565b610568846107f8565b6105718361080b565b60005b82518110156105b3576105a083828151811061059357610592610b86565b5b602002602001015161081e565b80806105ab90610be4565b915050610574565b5050505050505050565b6000807fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90508091505090565b806105f3610882565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663573ea5756040518163ffffffff1660e01b8152600401602060405180830381865afa15801561067f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a39190610c6a565b6106ab610882565b60020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506106f4610882565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e60a32136040518163ffffffff1660e01b8152600401602060405180830381865afa158015610762573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107869190610cd5565b61078e610882565b60010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b806107db610882565b6003018190555050565b806107ee6108af565b6006018190555050565b806108016108af565b6007018190555050565b806108146108af565b6008018190555050565b60016108286108af565b60090160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000807fde06769ca6d80a022439e234eebb61c3801d652175b62f912d6f8cac7b881c6590508091505090565b6000807f2f7ed27098ecefe70183ee38ae4542dee65215b0786f6870871034402cfe2cc990508091505090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061091b826108f0565b9050919050565b61092b81610910565b811461093657600080fd5b50565b60008135905061094881610922565b92915050565b6000819050919050565b6109618161094e565b811461096c57600080fd5b50565b60008135905061097e81610958565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6109d282610989565b810181811067ffffffffffffffff821117156109f1576109f061099a565b5b80604052505050565b6000610a046108dc565b9050610a1082826109c9565b919050565b600067ffffffffffffffff821115610a3057610a2f61099a565b5b602082029050602081019050919050565b600080fd5b6000610a59610a5484610a15565b6109fa565b90508083825260208201905060208402830185811115610a7c57610a7b610a41565b5b835b81811015610aa55780610a918882610939565b845260208401935050602081019050610a7e565b5050509392505050565b600082601f830112610ac457610ac3610984565b5b8135610ad4848260208601610a46565b91505092915050565b60008060008060008060c08789031215610afa57610af96108e6565b5b6000610b0889828a01610939565b9650506020610b1989828a0161096f565b9550506040610b2a89828a0161096f565b9450506060610b3b89828a0161096f565b9350506080610b4c89828a0161096f565b92505060a087013567ffffffffffffffff811115610b6d57610b6c6108eb565b5b610b7989828a01610aaf565b9150509295509295509295565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610bef8261094e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610c2157610c20610bb5565b5b600182019050919050565b6000610c37826108f0565b9050919050565b610c4781610c2c565b8114610c5257600080fd5b50565b600081519050610c6481610c3e565b92915050565b600060208284031215610c8057610c7f6108e6565b5b6000610c8e84828501610c55565b91505092915050565b6000610ca282610910565b9050919050565b610cb281610c97565b8114610cbd57600080fd5b50565b600081519050610ccf81610ca9565b92915050565b600060208284031215610ceb57610cea6108e6565b5b6000610cf984828501610cc0565b9150509291505056fea2646970667358221220b59264387b3241f6799040ab0630b31d2979d26e4f53f747c3046a0b0bdf879864736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD38 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x629B938 EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x45 SWAP2 SWAP1 PUSH2 0xADD JUMP JUMPDEST PUSH2 0x4C JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH2 0x56 PUSH2 0x5BD JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 PUSH1 0x3 ADD PUSH1 0x0 PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x1 DUP2 PUSH1 0x3 ADD PUSH1 0x0 PUSH32 0x1F931C1C00000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x1 DUP2 PUSH1 0x3 ADD PUSH1 0x0 PUSH32 0x48E2B09300000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x1 DUP2 PUSH1 0x3 ADD PUSH1 0x0 PUSH32 0xF8B33B2600000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x1 DUP2 PUSH1 0x3 ADD PUSH1 0x0 PUSH32 0x410DB6B600000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x1 DUP2 PUSH1 0x3 ADD PUSH1 0x0 PUSH32 0xA60CF31300000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x1 DUP2 PUSH1 0x3 ADD PUSH1 0x0 PUSH32 0xB5879A4B00000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x1 DUP2 PUSH1 0x3 ADD PUSH1 0x0 PUSH32 0xED5E69E200000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x1 DUP2 PUSH1 0x3 ADD PUSH1 0x0 PUSH32 0x5E1208A100000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH2 0x54D DUP8 PUSH2 0x5EA JUMP JUMPDEST PUSH2 0x556 DUP7 PUSH2 0x7D2 JUMP JUMPDEST PUSH2 0x55F DUP6 PUSH2 0x7E5 JUMP JUMPDEST PUSH2 0x568 DUP5 PUSH2 0x7F8 JUMP JUMPDEST PUSH2 0x571 DUP4 PUSH2 0x80B JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x5B3 JUMPI PUSH2 0x5A0 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x593 JUMPI PUSH2 0x592 PUSH2 0xB86 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x81E JUMP JUMPDEST DUP1 DUP1 PUSH2 0x5AB SWAP1 PUSH2 0xBE4 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x574 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131C SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x5F3 PUSH2 0x882 JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x573EA575 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x67F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x6A3 SWAP2 SWAP1 PUSH2 0xC6A JUMP JUMPDEST PUSH2 0x6AB PUSH2 0x882 JUMP JUMPDEST PUSH1 0x2 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x6F4 PUSH2 0x882 JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xE60A3213 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x762 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x786 SWAP2 SWAP1 PUSH2 0xCD5 JUMP JUMPDEST PUSH2 0x78E PUSH2 0x882 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST DUP1 PUSH2 0x7DB PUSH2 0x882 JUMP JUMPDEST PUSH1 0x3 ADD DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST DUP1 PUSH2 0x7EE PUSH2 0x8AF JUMP JUMPDEST PUSH1 0x6 ADD DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST DUP1 PUSH2 0x801 PUSH2 0x8AF JUMP JUMPDEST PUSH1 0x7 ADD DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST DUP1 PUSH2 0x814 PUSH2 0x8AF JUMP JUMPDEST PUSH1 0x8 ADD DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x1 PUSH2 0x828 PUSH2 0x8AF JUMP JUMPDEST PUSH1 0x9 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0xDE06769CA6D80A022439E234EEBB61C3801D652175B62F912D6F8CAC7B881C65 SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x2F7ED27098ECEFE70183EE38AE4542DEE65215B0786F6870871034402CFE2CC9 SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x91B DUP3 PUSH2 0x8F0 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x92B DUP2 PUSH2 0x910 JUMP JUMPDEST DUP2 EQ PUSH2 0x936 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x948 DUP2 PUSH2 0x922 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x961 DUP2 PUSH2 0x94E JUMP JUMPDEST DUP2 EQ PUSH2 0x96C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x97E DUP2 PUSH2 0x958 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x9D2 DUP3 PUSH2 0x989 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x9F1 JUMPI PUSH2 0x9F0 PUSH2 0x99A JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA04 PUSH2 0x8DC JUMP JUMPDEST SWAP1 POP PUSH2 0xA10 DUP3 DUP3 PUSH2 0x9C9 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xA30 JUMPI PUSH2 0xA2F PUSH2 0x99A JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA59 PUSH2 0xA54 DUP5 PUSH2 0xA15 JUMP JUMPDEST PUSH2 0x9FA JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0xA7C JUMPI PUSH2 0xA7B PUSH2 0xA41 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xAA5 JUMPI DUP1 PUSH2 0xA91 DUP9 DUP3 PUSH2 0x939 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xA7E JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xAC4 JUMPI PUSH2 0xAC3 PUSH2 0x984 JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0xAD4 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0xA46 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0xAFA JUMPI PUSH2 0xAF9 PUSH2 0x8E6 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xB08 DUP10 DUP3 DUP11 ADD PUSH2 0x939 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x20 PUSH2 0xB19 DUP10 DUP3 DUP11 ADD PUSH2 0x96F JUMP JUMPDEST SWAP6 POP POP PUSH1 0x40 PUSH2 0xB2A DUP10 DUP3 DUP11 ADD PUSH2 0x96F JUMP JUMPDEST SWAP5 POP POP PUSH1 0x60 PUSH2 0xB3B DUP10 DUP3 DUP11 ADD PUSH2 0x96F JUMP JUMPDEST SWAP4 POP POP PUSH1 0x80 PUSH2 0xB4C DUP10 DUP3 DUP11 ADD PUSH2 0x96F JUMP JUMPDEST SWAP3 POP POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xB6D JUMPI PUSH2 0xB6C PUSH2 0x8EB JUMP JUMPDEST JUMPDEST PUSH2 0xB79 DUP10 DUP3 DUP11 ADD PUSH2 0xAAF JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xBEF DUP3 PUSH2 0x94E JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0xC21 JUMPI PUSH2 0xC20 PUSH2 0xBB5 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC37 DUP3 PUSH2 0x8F0 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xC47 DUP2 PUSH2 0xC2C JUMP JUMPDEST DUP2 EQ PUSH2 0xC52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0xC64 DUP2 PUSH2 0xC3E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC80 JUMPI PUSH2 0xC7F PUSH2 0x8E6 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xC8E DUP5 DUP3 DUP6 ADD PUSH2 0xC55 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCA2 DUP3 PUSH2 0x910 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xCB2 DUP2 PUSH2 0xC97 JUMP JUMPDEST DUP2 EQ PUSH2 0xCBD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0xCCF DUP2 PUSH2 0xCA9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xCEB JUMPI PUSH2 0xCEA PUSH2 0x8E6 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xCF9 DUP5 DUP3 DUP6 ADD PUSH2 0xCC0 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB5 SWAP3 PUSH5 0x387B3241F6 PUSH26 0x9040AB0630B31D2979D26E4F53F747C3046A0B0BDF879864736F PUSH13 0x63430008120033000000000000 ","sourceMap":"887:1416:42:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_addSuperToken_12102":{"entryPoint":2078,"id":12102,"parameterSlots":1,"returnSlots":0},"@_setGelatoContracts_11427":{"entryPoint":1514,"id":11427,"parameterSlots":1,"returnSlots":0},"@_setMinimumAppGelatoBalance_11439":{"entryPoint":2002,"id":11439,"parameterSlots":1,"returnSlots":0},"@_setMinimumEndDuration_12064":{"entryPoint":2021,"id":12064,"parameterSlots":1,"returnSlots":0},"@_setMinimumLifespan_12076":{"entryPoint":2040,"id":12076,"parameterSlots":1,"returnSlots":0},"@_setSTBufferAmount_12088":{"entryPoint":2059,"id":12088,"parameterSlots":1,"returnSlots":0},"@_storageAutomate_11201":{"entryPoint":2178,"id":11201,"parameterSlots":0,"returnSlots":1},"@_storageControl_11680":{"entryPoint":2223,"id":11680,"parameterSlots":0,"returnSlots":1},"@_storageDiamond_14788":{"entryPoint":1469,"id":14788,"parameterSlots":0,"returnSlots":1},"@init_15776":{"entryPoint":76,"id":15776,"parameterSlots":6,"returnSlots":0},"abi_decode_available_length_t_array$_t_address_$dyn_memory_ptr":{"entryPoint":2630,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_t_address":{"entryPoint":2361,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_address_payable_fromMemory":{"entryPoint":3157,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_array$_t_address_$dyn_memory_ptr":{"entryPoint":2735,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_contract$_ITaskTreasuryUpgradable_$15562_fromMemory":{"entryPoint":3264,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint256":{"entryPoint":2415,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address_payable_fromMemory":{"entryPoint":3178,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_uint256t_uint256t_uint256t_uint256t_array$_t_address_$dyn_memory_ptr":{"entryPoint":2781,"id":null,"parameterSlots":2,"returnSlots":6},"abi_decode_tuple_t_contract$_ITaskTreasuryUpgradable_$15562_fromMemory":{"entryPoint":3285,"id":null,"parameterSlots":2,"returnSlots":1},"allocate_memory":{"entryPoint":2554,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":2268,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_t_array$_t_address_$dyn_memory_ptr":{"entryPoint":2581,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_address":{"entryPoint":2320,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_address_payable":{"entryPoint":3116,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_contract$_ITaskTreasuryUpgradable_$15562":{"entryPoint":3223,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint160":{"entryPoint":2288,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint256":{"entryPoint":2382,"id":null,"parameterSlots":1,"returnSlots":1},"finalize_allocation":{"entryPoint":2505,"id":null,"parameterSlots":2,"returnSlots":0},"increment_t_uint256":{"entryPoint":3044,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":2997,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":2950,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":2458,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":2436,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef":{"entryPoint":2625,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":2283,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":2278,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of_32":{"entryPoint":2441,"id":null,"parameterSlots":1,"returnSlots":1},"validator_revert_t_address":{"entryPoint":2338,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_address_payable":{"entryPoint":3134,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_contract$_ITaskTreasuryUpgradable_$15562":{"entryPoint":3241,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_uint256":{"entryPoint":2392,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:7242:43","statements":[{"body":{"nodeType":"YulBlock","src":"47:35:43","statements":[{"nodeType":"YulAssignment","src":"57:19:43","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"73:2:43","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"67:5:43"},"nodeType":"YulFunctionCall","src":"67:9:43"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"57:6:43"}]}]},"name":"allocate_unbounded","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"40:6:43","type":""}],"src":"7:75:43"},{"body":{"nodeType":"YulBlock","src":"177:28:43","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"194:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"197:1:43","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"187:6:43"},"nodeType":"YulFunctionCall","src":"187:12:43"},"nodeType":"YulExpressionStatement","src":"187:12:43"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulFunctionDefinition","src":"88:117:43"},{"body":{"nodeType":"YulBlock","src":"300:28:43","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"317:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"320:1:43","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"310:6:43"},"nodeType":"YulFunctionCall","src":"310:12:43"},"nodeType":"YulExpressionStatement","src":"310:12:43"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulFunctionDefinition","src":"211:117:43"},{"body":{"nodeType":"YulBlock","src":"379:81:43","statements":[{"nodeType":"YulAssignment","src":"389:65:43","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"404:5:43"},{"kind":"number","nodeType":"YulLiteral","src":"411:42:43","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"400:3:43"},"nodeType":"YulFunctionCall","src":"400:54:43"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"389:7:43"}]}]},"name":"cleanup_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"361:5:43","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"371:7:43","type":""}],"src":"334:126:43"},{"body":{"nodeType":"YulBlock","src":"511:51:43","statements":[{"nodeType":"YulAssignment","src":"521:35:43","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"550:5:43"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"532:17:43"},"nodeType":"YulFunctionCall","src":"532:24:43"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"521:7:43"}]}]},"name":"cleanup_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"493:5:43","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"503:7:43","type":""}],"src":"466:96:43"},{"body":{"nodeType":"YulBlock","src":"611:79:43","statements":[{"body":{"nodeType":"YulBlock","src":"668:16:43","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"677:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"680:1:43","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"670:6:43"},"nodeType":"YulFunctionCall","src":"670:12:43"},"nodeType":"YulExpressionStatement","src":"670:12:43"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"634:5:43"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"659:5:43"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"641:17:43"},"nodeType":"YulFunctionCall","src":"641:24:43"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"631:2:43"},"nodeType":"YulFunctionCall","src":"631:35:43"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"624:6:43"},"nodeType":"YulFunctionCall","src":"624:43:43"},"nodeType":"YulIf","src":"621:63:43"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"604:5:43","type":""}],"src":"568:122:43"},{"body":{"nodeType":"YulBlock","src":"748:87:43","statements":[{"nodeType":"YulAssignment","src":"758:29:43","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"780:6:43"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"767:12:43"},"nodeType":"YulFunctionCall","src":"767:20:43"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"758:5:43"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"823:5:43"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"796:26:43"},"nodeType":"YulFunctionCall","src":"796:33:43"},"nodeType":"YulExpressionStatement","src":"796:33:43"}]},"name":"abi_decode_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"726:6:43","type":""},{"name":"end","nodeType":"YulTypedName","src":"734:3:43","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"742:5:43","type":""}],"src":"696:139:43"},{"body":{"nodeType":"YulBlock","src":"886:32:43","statements":[{"nodeType":"YulAssignment","src":"896:16:43","value":{"name":"value","nodeType":"YulIdentifier","src":"907:5:43"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"896:7:43"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"868:5:43","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"878:7:43","type":""}],"src":"841:77:43"},{"body":{"nodeType":"YulBlock","src":"967:79:43","statements":[{"body":{"nodeType":"YulBlock","src":"1024:16:43","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1033:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1036:1:43","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1026:6:43"},"nodeType":"YulFunctionCall","src":"1026:12:43"},"nodeType":"YulExpressionStatement","src":"1026:12:43"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"990:5:43"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1015:5:43"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"997:17:43"},"nodeType":"YulFunctionCall","src":"997:24:43"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"987:2:43"},"nodeType":"YulFunctionCall","src":"987:35:43"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"980:6:43"},"nodeType":"YulFunctionCall","src":"980:43:43"},"nodeType":"YulIf","src":"977:63:43"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"960:5:43","type":""}],"src":"924:122:43"},{"body":{"nodeType":"YulBlock","src":"1104:87:43","statements":[{"nodeType":"YulAssignment","src":"1114:29:43","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1136:6:43"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1123:12:43"},"nodeType":"YulFunctionCall","src":"1123:20:43"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1114:5:43"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1179:5:43"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"1152:26:43"},"nodeType":"YulFunctionCall","src":"1152:33:43"},"nodeType":"YulExpressionStatement","src":"1152:33:43"}]},"name":"abi_decode_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1082:6:43","type":""},{"name":"end","nodeType":"YulTypedName","src":"1090:3:43","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1098:5:43","type":""}],"src":"1052:139:43"},{"body":{"nodeType":"YulBlock","src":"1286:28:43","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1303:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1306:1:43","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1296:6:43"},"nodeType":"YulFunctionCall","src":"1296:12:43"},"nodeType":"YulExpressionStatement","src":"1296:12:43"}]},"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulFunctionDefinition","src":"1197:117:43"},{"body":{"nodeType":"YulBlock","src":"1368:54:43","statements":[{"nodeType":"YulAssignment","src":"1378:38:43","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1396:5:43"},{"kind":"number","nodeType":"YulLiteral","src":"1403:2:43","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1392:3:43"},"nodeType":"YulFunctionCall","src":"1392:14:43"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1412:2:43","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"1408:3:43"},"nodeType":"YulFunctionCall","src":"1408:7:43"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1388:3:43"},"nodeType":"YulFunctionCall","src":"1388:28:43"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"1378:6:43"}]}]},"name":"round_up_to_mul_of_32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1351:5:43","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"1361:6:43","type":""}],"src":"1320:102:43"},{"body":{"nodeType":"YulBlock","src":"1456:152:43","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1473:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1476:77:43","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1466:6:43"},"nodeType":"YulFunctionCall","src":"1466:88:43"},"nodeType":"YulExpressionStatement","src":"1466:88:43"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1570:1:43","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1573:4:43","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1563:6:43"},"nodeType":"YulFunctionCall","src":"1563:15:43"},"nodeType":"YulExpressionStatement","src":"1563:15:43"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1594:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1597:4:43","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1587:6:43"},"nodeType":"YulFunctionCall","src":"1587:15:43"},"nodeType":"YulExpressionStatement","src":"1587:15:43"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"1428:180:43"},{"body":{"nodeType":"YulBlock","src":"1657:238:43","statements":[{"nodeType":"YulVariableDeclaration","src":"1667:58:43","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1689:6:43"},{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"1719:4:43"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"1697:21:43"},"nodeType":"YulFunctionCall","src":"1697:27:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1685:3:43"},"nodeType":"YulFunctionCall","src":"1685:40:43"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"1671:10:43","type":""}]},{"body":{"nodeType":"YulBlock","src":"1836:22:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"1838:16:43"},"nodeType":"YulFunctionCall","src":"1838:18:43"},"nodeType":"YulExpressionStatement","src":"1838:18:43"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1779:10:43"},{"kind":"number","nodeType":"YulLiteral","src":"1791:18:43","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1776:2:43"},"nodeType":"YulFunctionCall","src":"1776:34:43"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1815:10:43"},{"name":"memPtr","nodeType":"YulIdentifier","src":"1827:6:43"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1812:2:43"},"nodeType":"YulFunctionCall","src":"1812:22:43"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"1773:2:43"},"nodeType":"YulFunctionCall","src":"1773:62:43"},"nodeType":"YulIf","src":"1770:88:43"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1874:2:43","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1878:10:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1867:6:43"},"nodeType":"YulFunctionCall","src":"1867:22:43"},"nodeType":"YulExpressionStatement","src":"1867:22:43"}]},"name":"finalize_allocation","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"1643:6:43","type":""},{"name":"size","nodeType":"YulTypedName","src":"1651:4:43","type":""}],"src":"1614:281:43"},{"body":{"nodeType":"YulBlock","src":"1942:88:43","statements":[{"nodeType":"YulAssignment","src":"1952:30:43","value":{"arguments":[],"functionName":{"name":"allocate_unbounded","nodeType":"YulIdentifier","src":"1962:18:43"},"nodeType":"YulFunctionCall","src":"1962:20:43"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1952:6:43"}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"2011:6:43"},{"name":"size","nodeType":"YulIdentifier","src":"2019:4:43"}],"functionName":{"name":"finalize_allocation","nodeType":"YulIdentifier","src":"1991:19:43"},"nodeType":"YulFunctionCall","src":"1991:33:43"},"nodeType":"YulExpressionStatement","src":"1991:33:43"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"1926:4:43","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"1935:6:43","type":""}],"src":"1901:129:43"},{"body":{"nodeType":"YulBlock","src":"2118:229:43","statements":[{"body":{"nodeType":"YulBlock","src":"2223:22:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2225:16:43"},"nodeType":"YulFunctionCall","src":"2225:18:43"},"nodeType":"YulExpressionStatement","src":"2225:18:43"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2195:6:43"},{"kind":"number","nodeType":"YulLiteral","src":"2203:18:43","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2192:2:43"},"nodeType":"YulFunctionCall","src":"2192:30:43"},"nodeType":"YulIf","src":"2189:56:43"},{"nodeType":"YulAssignment","src":"2255:25:43","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2267:6:43"},{"kind":"number","nodeType":"YulLiteral","src":"2275:4:43","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"2263:3:43"},"nodeType":"YulFunctionCall","src":"2263:17:43"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"2255:4:43"}]},{"nodeType":"YulAssignment","src":"2317:23:43","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"2329:4:43"},{"kind":"number","nodeType":"YulLiteral","src":"2335:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2325:3:43"},"nodeType":"YulFunctionCall","src":"2325:15:43"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"2317:4:43"}]}]},"name":"array_allocation_size_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"2102:6:43","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"2113:4:43","type":""}],"src":"2036:311:43"},{"body":{"nodeType":"YulBlock","src":"2442:28:43","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2459:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2462:1:43","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2452:6:43"},"nodeType":"YulFunctionCall","src":"2452:12:43"},"nodeType":"YulExpressionStatement","src":"2452:12:43"}]},"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nodeType":"YulFunctionDefinition","src":"2353:117:43"},{"body":{"nodeType":"YulBlock","src":"2595:608:43","statements":[{"nodeType":"YulAssignment","src":"2605:90:43","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2687:6:43"}],"functionName":{"name":"array_allocation_size_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"2630:56:43"},"nodeType":"YulFunctionCall","src":"2630:64:43"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"2614:15:43"},"nodeType":"YulFunctionCall","src":"2614:81:43"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"2605:5:43"}]},{"nodeType":"YulVariableDeclaration","src":"2704:16:43","value":{"name":"array","nodeType":"YulIdentifier","src":"2715:5:43"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"2708:3:43","type":""}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"2737:5:43"},{"name":"length","nodeType":"YulIdentifier","src":"2744:6:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2730:6:43"},"nodeType":"YulFunctionCall","src":"2730:21:43"},"nodeType":"YulExpressionStatement","src":"2730:21:43"},{"nodeType":"YulAssignment","src":"2760:23:43","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"2771:5:43"},{"kind":"number","nodeType":"YulLiteral","src":"2778:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2767:3:43"},"nodeType":"YulFunctionCall","src":"2767:16:43"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"2760:3:43"}]},{"nodeType":"YulVariableDeclaration","src":"2793:44:43","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2811:6:43"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2823:6:43"},{"kind":"number","nodeType":"YulLiteral","src":"2831:4:43","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"2819:3:43"},"nodeType":"YulFunctionCall","src":"2819:17:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2807:3:43"},"nodeType":"YulFunctionCall","src":"2807:30:43"},"variables":[{"name":"srcEnd","nodeType":"YulTypedName","src":"2797:6:43","type":""}]},{"body":{"nodeType":"YulBlock","src":"2865:103:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nodeType":"YulIdentifier","src":"2879:77:43"},"nodeType":"YulFunctionCall","src":"2879:79:43"},"nodeType":"YulExpressionStatement","src":"2879:79:43"}]},"condition":{"arguments":[{"name":"srcEnd","nodeType":"YulIdentifier","src":"2852:6:43"},{"name":"end","nodeType":"YulIdentifier","src":"2860:3:43"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2849:2:43"},"nodeType":"YulFunctionCall","src":"2849:15:43"},"nodeType":"YulIf","src":"2846:122:43"},{"body":{"nodeType":"YulBlock","src":"3053:144:43","statements":[{"nodeType":"YulVariableDeclaration","src":"3068:21:43","value":{"name":"src","nodeType":"YulIdentifier","src":"3086:3:43"},"variables":[{"name":"elementPos","nodeType":"YulTypedName","src":"3072:10:43","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"3110:3:43"},{"arguments":[{"name":"elementPos","nodeType":"YulIdentifier","src":"3136:10:43"},{"name":"end","nodeType":"YulIdentifier","src":"3148:3:43"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"3115:20:43"},"nodeType":"YulFunctionCall","src":"3115:37:43"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3103:6:43"},"nodeType":"YulFunctionCall","src":"3103:50:43"},"nodeType":"YulExpressionStatement","src":"3103:50:43"},{"nodeType":"YulAssignment","src":"3166:21:43","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"3177:3:43"},{"kind":"number","nodeType":"YulLiteral","src":"3182:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3173:3:43"},"nodeType":"YulFunctionCall","src":"3173:14:43"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"3166:3:43"}]}]},"condition":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3006:3:43"},{"name":"srcEnd","nodeType":"YulIdentifier","src":"3011:6:43"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3003:2:43"},"nodeType":"YulFunctionCall","src":"3003:15:43"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3019:25:43","statements":[{"nodeType":"YulAssignment","src":"3021:21:43","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3032:3:43"},{"kind":"number","nodeType":"YulLiteral","src":"3037:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3028:3:43"},"nodeType":"YulFunctionCall","src":"3028:14:43"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"3021:3:43"}]}]},"pre":{"nodeType":"YulBlock","src":"2981:21:43","statements":[{"nodeType":"YulVariableDeclaration","src":"2983:17:43","value":{"name":"offset","nodeType":"YulIdentifier","src":"2994:6:43"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"2987:3:43","type":""}]}]},"src":"2977:220:43"}]},"name":"abi_decode_available_length_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"2565:6:43","type":""},{"name":"length","nodeType":"YulTypedName","src":"2573:6:43","type":""},{"name":"end","nodeType":"YulTypedName","src":"2581:3:43","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"2589:5:43","type":""}],"src":"2493:710:43"},{"body":{"nodeType":"YulBlock","src":"3303:293:43","statements":[{"body":{"nodeType":"YulBlock","src":"3352:83:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"3354:77:43"},"nodeType":"YulFunctionCall","src":"3354:79:43"},"nodeType":"YulExpressionStatement","src":"3354:79:43"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3331:6:43"},{"kind":"number","nodeType":"YulLiteral","src":"3339:4:43","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3327:3:43"},"nodeType":"YulFunctionCall","src":"3327:17:43"},{"name":"end","nodeType":"YulIdentifier","src":"3346:3:43"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3323:3:43"},"nodeType":"YulFunctionCall","src":"3323:27:43"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3316:6:43"},"nodeType":"YulFunctionCall","src":"3316:35:43"},"nodeType":"YulIf","src":"3313:122:43"},{"nodeType":"YulVariableDeclaration","src":"3444:34:43","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3471:6:43"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3458:12:43"},"nodeType":"YulFunctionCall","src":"3458:20:43"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"3448:6:43","type":""}]},{"nodeType":"YulAssignment","src":"3487:103:43","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3563:6:43"},{"kind":"number","nodeType":"YulLiteral","src":"3571:4:43","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3559:3:43"},"nodeType":"YulFunctionCall","src":"3559:17:43"},{"name":"length","nodeType":"YulIdentifier","src":"3578:6:43"},{"name":"end","nodeType":"YulIdentifier","src":"3586:3:43"}],"functionName":{"name":"abi_decode_available_length_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"3496:62:43"},"nodeType":"YulFunctionCall","src":"3496:94:43"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"3487:5:43"}]}]},"name":"abi_decode_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"3281:6:43","type":""},{"name":"end","nodeType":"YulTypedName","src":"3289:3:43","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"3297:5:43","type":""}],"src":"3226:370:43"},{"body":{"nodeType":"YulBlock","src":"3778:1091:43","statements":[{"body":{"nodeType":"YulBlock","src":"3825:83:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"3827:77:43"},"nodeType":"YulFunctionCall","src":"3827:79:43"},"nodeType":"YulExpressionStatement","src":"3827:79:43"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3799:7:43"},{"name":"headStart","nodeType":"YulIdentifier","src":"3808:9:43"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3795:3:43"},"nodeType":"YulFunctionCall","src":"3795:23:43"},{"kind":"number","nodeType":"YulLiteral","src":"3820:3:43","type":"","value":"192"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3791:3:43"},"nodeType":"YulFunctionCall","src":"3791:33:43"},"nodeType":"YulIf","src":"3788:120:43"},{"nodeType":"YulBlock","src":"3918:117:43","statements":[{"nodeType":"YulVariableDeclaration","src":"3933:15:43","value":{"kind":"number","nodeType":"YulLiteral","src":"3947:1:43","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3937:6:43","type":""}]},{"nodeType":"YulAssignment","src":"3962:63:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3997:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"4008:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3993:3:43"},"nodeType":"YulFunctionCall","src":"3993:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4017:7:43"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"3972:20:43"},"nodeType":"YulFunctionCall","src":"3972:53:43"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3962:6:43"}]}]},{"nodeType":"YulBlock","src":"4045:118:43","statements":[{"nodeType":"YulVariableDeclaration","src":"4060:16:43","value":{"kind":"number","nodeType":"YulLiteral","src":"4074:2:43","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4064:6:43","type":""}]},{"nodeType":"YulAssignment","src":"4090:63:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4125:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"4136:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4121:3:43"},"nodeType":"YulFunctionCall","src":"4121:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4145:7:43"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"4100:20:43"},"nodeType":"YulFunctionCall","src":"4100:53:43"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4090:6:43"}]}]},{"nodeType":"YulBlock","src":"4173:118:43","statements":[{"nodeType":"YulVariableDeclaration","src":"4188:16:43","value":{"kind":"number","nodeType":"YulLiteral","src":"4202:2:43","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4192:6:43","type":""}]},{"nodeType":"YulAssignment","src":"4218:63:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4253:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"4264:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4249:3:43"},"nodeType":"YulFunctionCall","src":"4249:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4273:7:43"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"4228:20:43"},"nodeType":"YulFunctionCall","src":"4228:53:43"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4218:6:43"}]}]},{"nodeType":"YulBlock","src":"4301:118:43","statements":[{"nodeType":"YulVariableDeclaration","src":"4316:16:43","value":{"kind":"number","nodeType":"YulLiteral","src":"4330:2:43","type":"","value":"96"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4320:6:43","type":""}]},{"nodeType":"YulAssignment","src":"4346:63:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4381:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"4392:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4377:3:43"},"nodeType":"YulFunctionCall","src":"4377:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4401:7:43"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"4356:20:43"},"nodeType":"YulFunctionCall","src":"4356:53:43"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"4346:6:43"}]}]},{"nodeType":"YulBlock","src":"4429:119:43","statements":[{"nodeType":"YulVariableDeclaration","src":"4444:17:43","value":{"kind":"number","nodeType":"YulLiteral","src":"4458:3:43","type":"","value":"128"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4448:6:43","type":""}]},{"nodeType":"YulAssignment","src":"4475:63:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4510:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"4521:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4506:3:43"},"nodeType":"YulFunctionCall","src":"4506:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4530:7:43"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"4485:20:43"},"nodeType":"YulFunctionCall","src":"4485:53:43"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"4475:6:43"}]}]},{"nodeType":"YulBlock","src":"4558:304:43","statements":[{"nodeType":"YulVariableDeclaration","src":"4573:47:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4604:9:43"},{"kind":"number","nodeType":"YulLiteral","src":"4615:3:43","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4600:3:43"},"nodeType":"YulFunctionCall","src":"4600:19:43"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4587:12:43"},"nodeType":"YulFunctionCall","src":"4587:33:43"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4577:6:43","type":""}]},{"body":{"nodeType":"YulBlock","src":"4667:83:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"4669:77:43"},"nodeType":"YulFunctionCall","src":"4669:79:43"},"nodeType":"YulExpressionStatement","src":"4669:79:43"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4639:6:43"},{"kind":"number","nodeType":"YulLiteral","src":"4647:18:43","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4636:2:43"},"nodeType":"YulFunctionCall","src":"4636:30:43"},"nodeType":"YulIf","src":"4633:117:43"},{"nodeType":"YulAssignment","src":"4764:88:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4824:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"4835:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4820:3:43"},"nodeType":"YulFunctionCall","src":"4820:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4844:7:43"}],"functionName":{"name":"abi_decode_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"4774:45:43"},"nodeType":"YulFunctionCall","src":"4774:78:43"},"variableNames":[{"name":"value5","nodeType":"YulIdentifier","src":"4764:6:43"}]}]}]},"name":"abi_decode_tuple_t_addresst_uint256t_uint256t_uint256t_uint256t_array$_t_address_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3708:9:43","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3719:7:43","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3731:6:43","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3739:6:43","type":""},{"name":"value2","nodeType":"YulTypedName","src":"3747:6:43","type":""},{"name":"value3","nodeType":"YulTypedName","src":"3755:6:43","type":""},{"name":"value4","nodeType":"YulTypedName","src":"3763:6:43","type":""},{"name":"value5","nodeType":"YulTypedName","src":"3771:6:43","type":""}],"src":"3602:1267:43"},{"body":{"nodeType":"YulBlock","src":"4903:152:43","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4920:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4923:77:43","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4913:6:43"},"nodeType":"YulFunctionCall","src":"4913:88:43"},"nodeType":"YulExpressionStatement","src":"4913:88:43"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5017:1:43","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"5020:4:43","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5010:6:43"},"nodeType":"YulFunctionCall","src":"5010:15:43"},"nodeType":"YulExpressionStatement","src":"5010:15:43"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5041:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5044:4:43","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5034:6:43"},"nodeType":"YulFunctionCall","src":"5034:15:43"},"nodeType":"YulExpressionStatement","src":"5034:15:43"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"4875:180:43"},{"body":{"nodeType":"YulBlock","src":"5089:152:43","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5106:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5109:77:43","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5099:6:43"},"nodeType":"YulFunctionCall","src":"5099:88:43"},"nodeType":"YulExpressionStatement","src":"5099:88:43"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5203:1:43","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"5206:4:43","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5196:6:43"},"nodeType":"YulFunctionCall","src":"5196:15:43"},"nodeType":"YulExpressionStatement","src":"5196:15:43"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5227:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5230:4:43","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5220:6:43"},"nodeType":"YulFunctionCall","src":"5220:15:43"},"nodeType":"YulExpressionStatement","src":"5220:15:43"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"5061:180:43"},{"body":{"nodeType":"YulBlock","src":"5290:190:43","statements":[{"nodeType":"YulAssignment","src":"5300:33:43","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5327:5:43"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"5309:17:43"},"nodeType":"YulFunctionCall","src":"5309:24:43"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"5300:5:43"}]},{"body":{"nodeType":"YulBlock","src":"5423:22:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"5425:16:43"},"nodeType":"YulFunctionCall","src":"5425:18:43"},"nodeType":"YulExpressionStatement","src":"5425:18:43"}]},"condition":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5348:5:43"},{"kind":"number","nodeType":"YulLiteral","src":"5355:66:43","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"5345:2:43"},"nodeType":"YulFunctionCall","src":"5345:77:43"},"nodeType":"YulIf","src":"5342:103:43"},{"nodeType":"YulAssignment","src":"5454:20:43","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5465:5:43"},{"kind":"number","nodeType":"YulLiteral","src":"5472:1:43","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5461:3:43"},"nodeType":"YulFunctionCall","src":"5461:13:43"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"5454:3:43"}]}]},"name":"increment_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5276:5:43","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"5286:3:43","type":""}],"src":"5247:233:43"},{"body":{"nodeType":"YulBlock","src":"5539:51:43","statements":[{"nodeType":"YulAssignment","src":"5549:35:43","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5578:5:43"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"5560:17:43"},"nodeType":"YulFunctionCall","src":"5560:24:43"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5549:7:43"}]}]},"name":"cleanup_t_address_payable","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5521:5:43","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5531:7:43","type":""}],"src":"5486:104:43"},{"body":{"nodeType":"YulBlock","src":"5647:87:43","statements":[{"body":{"nodeType":"YulBlock","src":"5712:16:43","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5721:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5724:1:43","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5714:6:43"},"nodeType":"YulFunctionCall","src":"5714:12:43"},"nodeType":"YulExpressionStatement","src":"5714:12:43"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5670:5:43"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5703:5:43"}],"functionName":{"name":"cleanup_t_address_payable","nodeType":"YulIdentifier","src":"5677:25:43"},"nodeType":"YulFunctionCall","src":"5677:32:43"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"5667:2:43"},"nodeType":"YulFunctionCall","src":"5667:43:43"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5660:6:43"},"nodeType":"YulFunctionCall","src":"5660:51:43"},"nodeType":"YulIf","src":"5657:71:43"}]},"name":"validator_revert_t_address_payable","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5640:5:43","type":""}],"src":"5596:138:43"},{"body":{"nodeType":"YulBlock","src":"5811:88:43","statements":[{"nodeType":"YulAssignment","src":"5821:22:43","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5836:6:43"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5830:5:43"},"nodeType":"YulFunctionCall","src":"5830:13:43"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"5821:5:43"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5887:5:43"}],"functionName":{"name":"validator_revert_t_address_payable","nodeType":"YulIdentifier","src":"5852:34:43"},"nodeType":"YulFunctionCall","src":"5852:41:43"},"nodeType":"YulExpressionStatement","src":"5852:41:43"}]},"name":"abi_decode_t_address_payable_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"5789:6:43","type":""},{"name":"end","nodeType":"YulTypedName","src":"5797:3:43","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"5805:5:43","type":""}],"src":"5740:159:43"},{"body":{"nodeType":"YulBlock","src":"5990:282:43","statements":[{"body":{"nodeType":"YulBlock","src":"6036:83:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"6038:77:43"},"nodeType":"YulFunctionCall","src":"6038:79:43"},"nodeType":"YulExpressionStatement","src":"6038:79:43"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6011:7:43"},{"name":"headStart","nodeType":"YulIdentifier","src":"6020:9:43"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6007:3:43"},"nodeType":"YulFunctionCall","src":"6007:23:43"},{"kind":"number","nodeType":"YulLiteral","src":"6032:2:43","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6003:3:43"},"nodeType":"YulFunctionCall","src":"6003:32:43"},"nodeType":"YulIf","src":"6000:119:43"},{"nodeType":"YulBlock","src":"6129:136:43","statements":[{"nodeType":"YulVariableDeclaration","src":"6144:15:43","value":{"kind":"number","nodeType":"YulLiteral","src":"6158:1:43","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6148:6:43","type":""}]},{"nodeType":"YulAssignment","src":"6173:82:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6227:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"6238:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6223:3:43"},"nodeType":"YulFunctionCall","src":"6223:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6247:7:43"}],"functionName":{"name":"abi_decode_t_address_payable_fromMemory","nodeType":"YulIdentifier","src":"6183:39:43"},"nodeType":"YulFunctionCall","src":"6183:72:43"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6173:6:43"}]}]}]},"name":"abi_decode_tuple_t_address_payable_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5960:9:43","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5971:7:43","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5983:6:43","type":""}],"src":"5905:367:43"},{"body":{"nodeType":"YulBlock","src":"6356:51:43","statements":[{"nodeType":"YulAssignment","src":"6366:35:43","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6395:5:43"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"6377:17:43"},"nodeType":"YulFunctionCall","src":"6377:24:43"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"6366:7:43"}]}]},"name":"cleanup_t_contract$_ITaskTreasuryUpgradable_$15562","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6338:5:43","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"6348:7:43","type":""}],"src":"6278:129:43"},{"body":{"nodeType":"YulBlock","src":"6489:112:43","statements":[{"body":{"nodeType":"YulBlock","src":"6579:16:43","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6588:1:43","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6591:1:43","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6581:6:43"},"nodeType":"YulFunctionCall","src":"6581:12:43"},"nodeType":"YulExpressionStatement","src":"6581:12:43"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6512:5:43"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6570:5:43"}],"functionName":{"name":"cleanup_t_contract$_ITaskTreasuryUpgradable_$15562","nodeType":"YulIdentifier","src":"6519:50:43"},"nodeType":"YulFunctionCall","src":"6519:57:43"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"6509:2:43"},"nodeType":"YulFunctionCall","src":"6509:68:43"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6502:6:43"},"nodeType":"YulFunctionCall","src":"6502:76:43"},"nodeType":"YulIf","src":"6499:96:43"}]},"name":"validator_revert_t_contract$_ITaskTreasuryUpgradable_$15562","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6482:5:43","type":""}],"src":"6413:188:43"},{"body":{"nodeType":"YulBlock","src":"6703:113:43","statements":[{"nodeType":"YulAssignment","src":"6713:22:43","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6728:6:43"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6722:5:43"},"nodeType":"YulFunctionCall","src":"6722:13:43"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"6713:5:43"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6804:5:43"}],"functionName":{"name":"validator_revert_t_contract$_ITaskTreasuryUpgradable_$15562","nodeType":"YulIdentifier","src":"6744:59:43"},"nodeType":"YulFunctionCall","src":"6744:66:43"},"nodeType":"YulExpressionStatement","src":"6744:66:43"}]},"name":"abi_decode_t_contract$_ITaskTreasuryUpgradable_$15562_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"6681:6:43","type":""},{"name":"end","nodeType":"YulTypedName","src":"6689:3:43","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"6697:5:43","type":""}],"src":"6607:209:43"},{"body":{"nodeType":"YulBlock","src":"6932:307:43","statements":[{"body":{"nodeType":"YulBlock","src":"6978:83:43","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"6980:77:43"},"nodeType":"YulFunctionCall","src":"6980:79:43"},"nodeType":"YulExpressionStatement","src":"6980:79:43"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6953:7:43"},{"name":"headStart","nodeType":"YulIdentifier","src":"6962:9:43"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6949:3:43"},"nodeType":"YulFunctionCall","src":"6949:23:43"},{"kind":"number","nodeType":"YulLiteral","src":"6974:2:43","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6945:3:43"},"nodeType":"YulFunctionCall","src":"6945:32:43"},"nodeType":"YulIf","src":"6942:119:43"},{"nodeType":"YulBlock","src":"7071:161:43","statements":[{"nodeType":"YulVariableDeclaration","src":"7086:15:43","value":{"kind":"number","nodeType":"YulLiteral","src":"7100:1:43","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"7090:6:43","type":""}]},{"nodeType":"YulAssignment","src":"7115:107:43","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7194:9:43"},{"name":"offset","nodeType":"YulIdentifier","src":"7205:6:43"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7190:3:43"},"nodeType":"YulFunctionCall","src":"7190:22:43"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7214:7:43"}],"functionName":{"name":"abi_decode_t_contract$_ITaskTreasuryUpgradable_$15562_fromMemory","nodeType":"YulIdentifier","src":"7125:64:43"},"nodeType":"YulFunctionCall","src":"7125:97:43"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"7115:6:43"}]}]}]},"name":"abi_decode_tuple_t_contract$_ITaskTreasuryUpgradable_$15562_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6902:9:43","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6913:7:43","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6925:6:43","type":""}],"src":"6822:417:43"}]},"contents":"{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n\n function allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function array_allocation_size_t_array$_t_address_$dyn_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := mul(length, 0x20)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() {\n revert(0, 0)\n }\n\n // address[]\n function abi_decode_available_length_t_array$_t_address_$dyn_memory_ptr(offset, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_array$_t_address_$dyn_memory_ptr(length))\n let dst := array\n\n mstore(array, length)\n dst := add(array, 0x20)\n\n let srcEnd := add(offset, mul(length, 0x20))\n if gt(srcEnd, end) {\n revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef()\n }\n for { let src := offset } lt(src, srcEnd) { src := add(src, 0x20) }\n {\n\n let elementPos := src\n\n mstore(dst, abi_decode_t_address(elementPos, end))\n dst := add(dst, 0x20)\n }\n }\n\n // address[]\n function abi_decode_t_array$_t_address_$dyn_memory_ptr(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := calldataload(offset)\n array := abi_decode_available_length_t_array$_t_address_$dyn_memory_ptr(add(offset, 0x20), length, end)\n }\n\n function abi_decode_tuple_t_addresst_uint256t_uint256t_uint256t_uint256t_array$_t_address_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5 {\n if slt(sub(dataEnd, headStart), 192) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 128\n\n value4 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 160))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value5 := abi_decode_t_array$_t_address_$dyn_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x32() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function increment_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n ret := add(value, 1)\n }\n\n function cleanup_t_address_payable(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address_payable(value) {\n if iszero(eq(value, cleanup_t_address_payable(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address_payable_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_address_payable(value)\n }\n\n function abi_decode_tuple_t_address_payable_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address_payable_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_contract$_ITaskTreasuryUpgradable_$15562(value) -> cleaned {\n cleaned := cleanup_t_address(value)\n }\n\n function validator_revert_t_contract$_ITaskTreasuryUpgradable_$15562(value) {\n if iszero(eq(value, cleanup_t_contract$_ITaskTreasuryUpgradable_$15562(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_contract$_ITaskTreasuryUpgradable_$15562_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_contract$_ITaskTreasuryUpgradable_$15562(value)\n }\n\n function abi_decode_tuple_t_contract$_ITaskTreasuryUpgradable_$15562_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_ITaskTreasuryUpgradable_$15562_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n}\n","id":43,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061002b5760003560e01c80630629b93814610030575b600080fd5b61004a60048036038101906100459190610add565b61004c565b005b60006100566105bd565b905060018160030160007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060018160030160007f1f931c1c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060018160030160007f48e2b093000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060018160030160007ff8b33b26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060018160030160007f410db6b6000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060018160030160007fa60cf313000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060018160030160007fb5879a4b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060018160030160007fed5e69e2000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060018160030160007f5e1208a1000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555061054d876105ea565b610556866107d2565b61055f856107e5565b610568846107f8565b6105718361080b565b60005b82518110156105b3576105a083828151811061059357610592610b86565b5b602002602001015161081e565b80806105ab90610be4565b915050610574565b5050505050505050565b6000807fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90508091505090565b806105f3610882565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663573ea5756040518163ffffffff1660e01b8152600401602060405180830381865afa15801561067f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a39190610c6a565b6106ab610882565b60020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506106f4610882565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e60a32136040518163ffffffff1660e01b8152600401602060405180830381865afa158015610762573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107869190610cd5565b61078e610882565b60010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b806107db610882565b6003018190555050565b806107ee6108af565b6006018190555050565b806108016108af565b6007018190555050565b806108146108af565b6008018190555050565b60016108286108af565b60090160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000807fde06769ca6d80a022439e234eebb61c3801d652175b62f912d6f8cac7b881c6590508091505090565b6000807f2f7ed27098ecefe70183ee38ae4542dee65215b0786f6870871034402cfe2cc990508091505090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061091b826108f0565b9050919050565b61092b81610910565b811461093657600080fd5b50565b60008135905061094881610922565b92915050565b6000819050919050565b6109618161094e565b811461096c57600080fd5b50565b60008135905061097e81610958565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6109d282610989565b810181811067ffffffffffffffff821117156109f1576109f061099a565b5b80604052505050565b6000610a046108dc565b9050610a1082826109c9565b919050565b600067ffffffffffffffff821115610a3057610a2f61099a565b5b602082029050602081019050919050565b600080fd5b6000610a59610a5484610a15565b6109fa565b90508083825260208201905060208402830185811115610a7c57610a7b610a41565b5b835b81811015610aa55780610a918882610939565b845260208401935050602081019050610a7e565b5050509392505050565b600082601f830112610ac457610ac3610984565b5b8135610ad4848260208601610a46565b91505092915050565b60008060008060008060c08789031215610afa57610af96108e6565b5b6000610b0889828a01610939565b9650506020610b1989828a0161096f565b9550506040610b2a89828a0161096f565b9450506060610b3b89828a0161096f565b9350506080610b4c89828a0161096f565b92505060a087013567ffffffffffffffff811115610b6d57610b6c6108eb565b5b610b7989828a01610aaf565b9150509295509295509295565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610bef8261094e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610c2157610c20610bb5565b5b600182019050919050565b6000610c37826108f0565b9050919050565b610c4781610c2c565b8114610c5257600080fd5b50565b600081519050610c6481610c3e565b92915050565b600060208284031215610c8057610c7f6108e6565b5b6000610c8e84828501610c55565b91505092915050565b6000610ca282610910565b9050919050565b610cb281610c97565b8114610cbd57600080fd5b50565b600081519050610ccf81610ca9565b92915050565b600060208284031215610ceb57610cea6108e6565b5b6000610cf984828501610cc0565b9150509291505056fea2646970667358221220b59264387b3241f6799040ab0630b31d2979d26e4f53f747c3046a0b0bdf879864736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x629B938 EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x45 SWAP2 SWAP1 PUSH2 0xADD JUMP JUMPDEST PUSH2 0x4C JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH2 0x56 PUSH2 0x5BD JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 PUSH1 0x3 ADD PUSH1 0x0 PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x1 DUP2 PUSH1 0x3 ADD PUSH1 0x0 PUSH32 0x1F931C1C00000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x1 DUP2 PUSH1 0x3 ADD PUSH1 0x0 PUSH32 0x48E2B09300000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x1 DUP2 PUSH1 0x3 ADD PUSH1 0x0 PUSH32 0xF8B33B2600000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x1 DUP2 PUSH1 0x3 ADD PUSH1 0x0 PUSH32 0x410DB6B600000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x1 DUP2 PUSH1 0x3 ADD PUSH1 0x0 PUSH32 0xA60CF31300000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x1 DUP2 PUSH1 0x3 ADD PUSH1 0x0 PUSH32 0xB5879A4B00000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x1 DUP2 PUSH1 0x3 ADD PUSH1 0x0 PUSH32 0xED5E69E200000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x1 DUP2 PUSH1 0x3 ADD PUSH1 0x0 PUSH32 0x5E1208A100000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH2 0x54D DUP8 PUSH2 0x5EA JUMP JUMPDEST PUSH2 0x556 DUP7 PUSH2 0x7D2 JUMP JUMPDEST PUSH2 0x55F DUP6 PUSH2 0x7E5 JUMP JUMPDEST PUSH2 0x568 DUP5 PUSH2 0x7F8 JUMP JUMPDEST PUSH2 0x571 DUP4 PUSH2 0x80B JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x5B3 JUMPI PUSH2 0x5A0 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x593 JUMPI PUSH2 0x592 PUSH2 0xB86 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x81E JUMP JUMPDEST DUP1 DUP1 PUSH2 0x5AB SWAP1 PUSH2 0xBE4 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x574 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131C SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x5F3 PUSH2 0x882 JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x573EA575 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x67F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x6A3 SWAP2 SWAP1 PUSH2 0xC6A JUMP JUMPDEST PUSH2 0x6AB PUSH2 0x882 JUMP JUMPDEST PUSH1 0x2 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x6F4 PUSH2 0x882 JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xE60A3213 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x762 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x786 SWAP2 SWAP1 PUSH2 0xCD5 JUMP JUMPDEST PUSH2 0x78E PUSH2 0x882 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST DUP1 PUSH2 0x7DB PUSH2 0x882 JUMP JUMPDEST PUSH1 0x3 ADD DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST DUP1 PUSH2 0x7EE PUSH2 0x8AF JUMP JUMPDEST PUSH1 0x6 ADD DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST DUP1 PUSH2 0x801 PUSH2 0x8AF JUMP JUMPDEST PUSH1 0x7 ADD DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST DUP1 PUSH2 0x814 PUSH2 0x8AF JUMP JUMPDEST PUSH1 0x8 ADD DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x1 PUSH2 0x828 PUSH2 0x8AF JUMP JUMPDEST PUSH1 0x9 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0xDE06769CA6D80A022439E234EEBB61C3801D652175B62F912D6F8CAC7B881C65 SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x2F7ED27098ECEFE70183EE38AE4542DEE65215B0786F6870871034402CFE2CC9 SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x91B DUP3 PUSH2 0x8F0 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x92B DUP2 PUSH2 0x910 JUMP JUMPDEST DUP2 EQ PUSH2 0x936 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x948 DUP2 PUSH2 0x922 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x961 DUP2 PUSH2 0x94E JUMP JUMPDEST DUP2 EQ PUSH2 0x96C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x97E DUP2 PUSH2 0x958 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x9D2 DUP3 PUSH2 0x989 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x9F1 JUMPI PUSH2 0x9F0 PUSH2 0x99A JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA04 PUSH2 0x8DC JUMP JUMPDEST SWAP1 POP PUSH2 0xA10 DUP3 DUP3 PUSH2 0x9C9 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xA30 JUMPI PUSH2 0xA2F PUSH2 0x99A JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA59 PUSH2 0xA54 DUP5 PUSH2 0xA15 JUMP JUMPDEST PUSH2 0x9FA JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0xA7C JUMPI PUSH2 0xA7B PUSH2 0xA41 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xAA5 JUMPI DUP1 PUSH2 0xA91 DUP9 DUP3 PUSH2 0x939 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xA7E JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xAC4 JUMPI PUSH2 0xAC3 PUSH2 0x984 JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0xAD4 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0xA46 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0xAFA JUMPI PUSH2 0xAF9 PUSH2 0x8E6 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xB08 DUP10 DUP3 DUP11 ADD PUSH2 0x939 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x20 PUSH2 0xB19 DUP10 DUP3 DUP11 ADD PUSH2 0x96F JUMP JUMPDEST SWAP6 POP POP PUSH1 0x40 PUSH2 0xB2A DUP10 DUP3 DUP11 ADD PUSH2 0x96F JUMP JUMPDEST SWAP5 POP POP PUSH1 0x60 PUSH2 0xB3B DUP10 DUP3 DUP11 ADD PUSH2 0x96F JUMP JUMPDEST SWAP4 POP POP PUSH1 0x80 PUSH2 0xB4C DUP10 DUP3 DUP11 ADD PUSH2 0x96F JUMP JUMPDEST SWAP3 POP POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xB6D JUMPI PUSH2 0xB6C PUSH2 0x8EB JUMP JUMPDEST JUMPDEST PUSH2 0xB79 DUP10 DUP3 DUP11 ADD PUSH2 0xAAF JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xBEF DUP3 PUSH2 0x94E JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0xC21 JUMPI PUSH2 0xC20 PUSH2 0xBB5 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC37 DUP3 PUSH2 0x8F0 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xC47 DUP2 PUSH2 0xC2C JUMP JUMPDEST DUP2 EQ PUSH2 0xC52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0xC64 DUP2 PUSH2 0xC3E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC80 JUMPI PUSH2 0xC7F PUSH2 0x8E6 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xC8E DUP5 DUP3 DUP6 ADD PUSH2 0xC55 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCA2 DUP3 PUSH2 0x910 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xCB2 DUP2 PUSH2 0xC97 JUMP JUMPDEST DUP2 EQ PUSH2 0xCBD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0xCCF DUP2 PUSH2 0xCA9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xCEB JUMPI PUSH2 0xCEA PUSH2 0x8E6 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xCF9 DUP5 DUP3 DUP6 ADD PUSH2 0xCC0 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB5 SWAP3 PUSH5 0x387B3241F6 PUSH26 0x9040AB0630B31D2979D26E4F53F747C3046A0B0BDF879864736F PUSH13 0x63430008120033000000000000 ","sourceMap":"887:1416:42:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;914:1387;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;1196:35;1234:28;:26;:28::i;:::-;1196:66;;1323:4;1272:1;:21;;:48;1294:25;1272:48;;;;;;;;;;;;;;;;;;:55;;;;;;;;;;;;;;;;;;1385:4;1337:1;:21;;:45;1359:22;1337:45;;;;;;;;;;;;;;;;;;:52;;;;;;;;;;;;;;;;;;1449:4;1399:1;:21;;:47;1421:24;1399:47;;;;;;;;;;;;;;;;;;:54;;;;;;;;;;;;;;;;;;1521:4;1463:1;:21;;:55;1485:32;1463:55;;;;;;;;;;;;;;;;;;:62;;;;;;;;;;;;;;;;;;1587:4;1535:1;:21;;:49;1557:26;1535:49;;;;;;;;;;;;;;;;;;:56;;;;;;;;;;;;;;;;;;1654:4;1601:1;:21;;:50;1623:27;1601:50;;;;;;;;;;;;;;;;;;:57;;;;;;;;;;;;;;;;;;1720:4;1668:1;:21;;:49;1690:26;1668:49;;;;;;;;;;;;;;;;;;:56;;;;;;;;;;;;;;;;;;1786:4;1734:1;:21;;:49;1756:26;1734:49;;;;;;;;;;;;;;;;;;:56;;;;;;;;;;;;;;;;;;1849:4;1800:1;:21;;:46;1822:23;1800:46;;;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;1864:41;1896:8;1864:31;:41::i;:::-;1915:65;1955:24;1915:39;:65::i;:::-;1990:54;2024:19;1990:33;:54::i;:::-;2054:48;2085:16;2054:30;:48::i;:::-;2112:56;2142:25;2112:29;:56::i;:::-;2183:9;2178:117;2202:12;:19;2198:1;:23;2178:117;;;2242:42;2268:12;2281:1;2268:15;;;;;;;;:::i;:::-;;;;;;;;2242:25;:42::i;:::-;2223:3;;;;;:::i;:::-;;;;2178:117;;;;1186:1115;914:1387;;;;;;:::o;1445:224:40:-;1519:24;1559:16;443:45;1559:43;;1645:8;1635:18;;1621:42;1445:224;:::o;3301:319:34:-;3412:8;3367:18;:16;:18::i;:::-;:32;;;:54;;;;;;;;;;;;;;;;;;3476:8;3466:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3431:18;:16;:18::i;:::-;:32;;;:63;;;;;;;;;;;;;;;;;;3540:18;:16;:18::i;:::-;:45;;;;;;;;;;;;:71;;;:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3504:18;:16;:18::i;:::-;:33;;;:109;;;;;;;;;;;;;;;;;;3301:319;:::o;3626:130::-;3743:6;3698:18;:16;:18::i;:::-;:42;;:51;;;;3626:130;:::o;8107:125:35:-;8216:9;8177:17;:15;:17::i;:::-;:36;;:48;;;;8107:125;:::o;8238:119::-;8341:9;8305:17;:15;:17::i;:::-;:33;;:45;;;;8238:119;:::o;8363:127::-;8474:9;8429:17;:15;:17::i;:::-;:42;;:54;;;;8363:127;:::o;8496:120::-;8605:4;8560:17;:15;:17::i;:::-;:29;;:42;8590:11;8560:42;;;;;;;;;;;;;;;;:49;;;;;;;;;;;;;;;;;;8496:120;:::o;777:227:34:-;852:25;893:16;356:24;893:44;;980:8;970:18;;956:42;777:227;:::o;2131:224:35:-;2205:24;2245:16;876:23;2245:43;;2331:8;2321:18;;2307:42;2131:224;:::o;7:75:43:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:77::-;878:7;907:5;896:16;;841:77;;;:::o;924:122::-;997:24;1015:5;997:24;:::i;:::-;990:5;987:35;977:63;;1036:1;1033;1026:12;977:63;924:122;:::o;1052:139::-;1098:5;1136:6;1123:20;1114:29;;1152:33;1179:5;1152:33;:::i;:::-;1052:139;;;;:::o;1197:117::-;1306:1;1303;1296:12;1320:102;1361:6;1412:2;1408:7;1403:2;1396:5;1392:14;1388:28;1378:38;;1320:102;;;:::o;1428:180::-;1476:77;1473:1;1466:88;1573:4;1570:1;1563:15;1597:4;1594:1;1587:15;1614:281;1697:27;1719:4;1697:27;:::i;:::-;1689:6;1685:40;1827:6;1815:10;1812:22;1791:18;1779:10;1776:34;1773:62;1770:88;;;1838:18;;:::i;:::-;1770:88;1878:10;1874:2;1867:22;1657:238;1614:281;;:::o;1901:129::-;1935:6;1962:20;;:::i;:::-;1952:30;;1991:33;2019:4;2011:6;1991:33;:::i;:::-;1901:129;;;:::o;2036:311::-;2113:4;2203:18;2195:6;2192:30;2189:56;;;2225:18;;:::i;:::-;2189:56;2275:4;2267:6;2263:17;2255:25;;2335:4;2329;2325:15;2317:23;;2036:311;;;:::o;2353:117::-;2462:1;2459;2452:12;2493:710;2589:5;2614:81;2630:64;2687:6;2630:64;:::i;:::-;2614:81;:::i;:::-;2605:90;;2715:5;2744:6;2737:5;2730:21;2778:4;2771:5;2767:16;2760:23;;2831:4;2823:6;2819:17;2811:6;2807:30;2860:3;2852:6;2849:15;2846:122;;;2879:79;;:::i;:::-;2846:122;2994:6;2977:220;3011:6;3006:3;3003:15;2977:220;;;3086:3;3115:37;3148:3;3136:10;3115:37;:::i;:::-;3110:3;3103:50;3182:4;3177:3;3173:14;3166:21;;3053:144;3037:4;3032:3;3028:14;3021:21;;2977:220;;;2981:21;2595:608;;2493:710;;;;;:::o;3226:370::-;3297:5;3346:3;3339:4;3331:6;3327:17;3323:27;3313:122;;3354:79;;:::i;:::-;3313:122;3471:6;3458:20;3496:94;3586:3;3578:6;3571:4;3563:6;3559:17;3496:94;:::i;:::-;3487:103;;3303:293;3226:370;;;;:::o;3602:1267::-;3731:6;3739;3747;3755;3763;3771;3820:3;3808:9;3799:7;3795:23;3791:33;3788:120;;;3827:79;;:::i;:::-;3788:120;3947:1;3972:53;4017:7;4008:6;3997:9;3993:22;3972:53;:::i;:::-;3962:63;;3918:117;4074:2;4100:53;4145:7;4136:6;4125:9;4121:22;4100:53;:::i;:::-;4090:63;;4045:118;4202:2;4228:53;4273:7;4264:6;4253:9;4249:22;4228:53;:::i;:::-;4218:63;;4173:118;4330:2;4356:53;4401:7;4392:6;4381:9;4377:22;4356:53;:::i;:::-;4346:63;;4301:118;4458:3;4485:53;4530:7;4521:6;4510:9;4506:22;4485:53;:::i;:::-;4475:63;;4429:119;4615:3;4604:9;4600:19;4587:33;4647:18;4639:6;4636:30;4633:117;;;4669:79;;:::i;:::-;4633:117;4774:78;4844:7;4835:6;4824:9;4820:22;4774:78;:::i;:::-;4764:88;;4558:304;3602:1267;;;;;;;;:::o;4875:180::-;4923:77;4920:1;4913:88;5020:4;5017:1;5010:15;5044:4;5041:1;5034:15;5061:180;5109:77;5106:1;5099:88;5206:4;5203:1;5196:15;5230:4;5227:1;5220:15;5247:233;5286:3;5309:24;5327:5;5309:24;:::i;:::-;5300:33;;5355:66;5348:5;5345:77;5342:103;;5425:18;;:::i;:::-;5342:103;5472:1;5465:5;5461:13;5454:20;;5247:233;;;:::o;5486:104::-;5531:7;5560:24;5578:5;5560:24;:::i;:::-;5549:35;;5486:104;;;:::o;5596:138::-;5677:32;5703:5;5677:32;:::i;:::-;5670:5;5667:43;5657:71;;5724:1;5721;5714:12;5657:71;5596:138;:::o;5740:159::-;5805:5;5836:6;5830:13;5821:22;;5852:41;5887:5;5852:41;:::i;:::-;5740:159;;;;:::o;5905:367::-;5983:6;6032:2;6020:9;6011:7;6007:23;6003:32;6000:119;;;6038:79;;:::i;:::-;6000:119;6158:1;6183:72;6247:7;6238:6;6227:9;6223:22;6183:72;:::i;:::-;6173:82;;6129:136;5905:367;;;;:::o;6278:129::-;6348:7;6377:24;6395:5;6377:24;:::i;:::-;6366:35;;6278:129;;;:::o;6413:188::-;6519:57;6570:5;6519:57;:::i;:::-;6512:5;6509:68;6499:96;;6591:1;6588;6581:12;6499:96;6413:188;:::o;6607:209::-;6697:5;6728:6;6722:13;6713:22;;6744:66;6804:5;6744:66;:::i;:::-;6607:209;;;;:::o;6822:417::-;6925:6;6974:2;6962:9;6953:7;6949:23;6945:32;6942:119;;;6980:79;;:::i;:::-;6942:119;7100:1;7125:97;7214:7;7205:6;7194:9;7190:22;7125:97;:::i;:::-;7115:107;;7071:161;6822:417;;;;:::o"},"methodIdentifiers":{"init(address,uint256,uint256,uint256,uint256,address[])":"0629b938"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_autobot\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_minimumAppGelatoBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minimumEndDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minimumLifespan\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_stBufferDurationInSecond\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"_superTokens\",\"type\":\"address[]\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/upgrades/DiamondInit.sol\":\"DiamondInit\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol\":{\"keccak256\":\"0xf41ca991f30855bf80ffd11e9347856a517b977f0a6c2d52e6421a99b7840329\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2717fd2bdac99daa960a6de500754ea1b932093c946388c381da48658234b95\",\"dweb:/ipfs/QmP6QVMn6UeA3ByahyJbYQr5M6coHKBKsf3ySZSfbyA8R7\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x9b72f93be69ca894d8492c244259615c4a742afc8d63720dbc8bb81087d9b238\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5a7b96e511be78d5cdf635c784e6ab8cdd38625bb8cafb8a80914a1c89cf0f6\",\"dweb:/ipfs/QmVzTCwJxQAkjRQHboT5QrvsVJGWQHgfEjeTbvyxoKBrds\"]},\"@openzeppelin/contracts/token/ERC777/IERC777.sol\":{\"keccak256\":\"0x385a7061f1436b079d44c140dee9387d5313e94874ff9ee877dc0085c981ac3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c3fe22bb0d9527356e11f267f9187134de4d4ed1ff77468b4d73e3238697b96\",\"dweb:/ipfs/Qmc8caJctgxbzXEpxRogQMR2bnBk5U67hA7kKbUEG2PUXV\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xf96f969e24029d43d0df89e59d365f277021dac62b48e1c1e3ebe0acdd7f1ca1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec772b45a624be516f1c81970caa8a2e144301e9d0921cbc1a2789fef39a1269\",\"dweb:/ipfs/QmNyjwxCrGhQMyzLD93oUobJXVe9ceJvRvfXwbEtuxPiEj\"]},\"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol\":{\"keccak256\":\"0x1b588d76f3addfeb2f368ec534fbd8da6120c8ba3c08e95f410a9cc2204faf79\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://74e51ec8a8d50ad9c6c047a2548de4aac9e6da23f65b2d8a74e89665d26c527f\",\"dweb:/ipfs/QmS26ukRAwj9ZSHmRSbjmpmdA6EaZHAK6JvE38LkqjRYaP\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol\":{\"keccak256\":\"0xb68e122faba133422f4cbdd7e15fc913073dfa2c3682c18d6449b121e67d1104\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://da0611fda964b8356d38cb006133865b58adc6e11d3817e27daf20b02ad6880f\",\"dweb:/ipfs/QmeLbak3yiUfkGvxEZzmS4ndDwDfxtZNeKiA86G3WxzjyD\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IInstantDistributionAgreementV1.sol\":{\"keccak256\":\"0x7b088dfa11a00d2b1e6e0938978364a6918015b052a4bf3ffcc67db9b3182370\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://2437f6ea2d8c8de7613aef5de4dcf3530c2beb801f7d5f3e21ac617e73f8882b\",\"dweb:/ipfs/QmVBtqXYV25fQZ9P6xokBzgFnHCBthJSZdFo9quBY169fd\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol\":{\"keccak256\":\"0x80254971aff00fc006d70b85b7bc830bb28096789e72ff3f03aa22cc7810eb0c\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://840f9d959abfbf3919db3dca35336e360b2bbd54e677439a545c7c4f163f6d70\",\"dweb:/ipfs/QmR4CRq7dpYR4NuCSASkNrcnbSScRX8MaEvDs8L7v3xDyr\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol\":{\"keccak256\":\"0x9b4fab6dcac1337f78e04d67d8c2b48b1de8bd4bbf14b475840f9dbda7b8f21e\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://cc2f3629ad0cb46bd4f595880591ad6c9d75a82d920cb9355e462fbf8022c820\",\"dweb:/ipfs/QmXMovxK4qpWT4yffXxUVjkMNwxEfS6mtn39mLSmjaxEdW\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperApp.sol\":{\"keccak256\":\"0x6cc4b0724d977190c7441dfc3be6c6e48b43b555c3370af32ef5b6600f15f53f\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://3e89c944642772a42429f21a11017b57deb98a9198f8e4f8749f00aaee71299e\",\"dweb:/ipfs/QmaSv9GvqikcGHJ3tcwATDHSpQw6mfnHPDtcfqcZSS7LF6\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.sol\":{\"keccak256\":\"0x6860f0bf69dcc1d1ec39eefb43e0cd18b276b48ebe9efd53450e09cd2f997ab2\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://6421f80f2ff7818bd235b7bf4b911cc40edcb598507a246b4de0fa0191a9e1aa\",\"dweb:/ipfs/QmWxktXMjYhi1zt52D3JXNcxCFesXu8kQoSCJQ3j88apM3\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperTokenFactory.sol\":{\"keccak256\":\"0xe2525ef2906504e2f61775ed91bbebeea2f4e2e3fa42ce190561acf6a01187ff\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://7a9859eb432321a65cd15ca988a13776e1c31df44b4cf25f95fa04b54a8a8625\",\"dweb:/ipfs/QmQVJQoeoWemptZhbRgWJZWwMTiNtxVsc1FYmGdtdTfqcL\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol\":{\"keccak256\":\"0xab9dab941f99d0f0ef6125fb6eafde03378d7c3e94e613dd12fb7fbf594c3373\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://928c6ef915dee69058d4cfcb9f2344d4fc78d9763b47b17e5c03fbff64ba3c64\",\"dweb:/ipfs/Qmdk733ZHceatz3qbuodLCCS9TUspJJtXLoX6vWwMvrPDE\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance.sol\":{\"keccak256\":\"0x90a9259d0f0bb6b1bb6d48f051277eb75df96a9fbe684a203a3a468ad19318e2\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://9c8162a2d07ffe768920fef55292684149173afefbfba76b8fca007e55092229\",\"dweb:/ipfs/QmducLNwrzeUXEpBjUTSMu7sfmQEwVhcYXApe4brc1zQ6V\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol\":{\"keccak256\":\"0x9cad3866982902ea88df0874a563d2e4aeba5a5bcc6289c30cccf9b4099d2fb6\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://e8fd960b259331f204c7cb7dcd32b09d68f4294e3b872fad00ad467609c3ef72\",\"dweb:/ipfs/QmeZFEvsDunXQGPbXFfN5AvfKM5am1FY8Xv6e3c4tNKvgY\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo.sol\":{\"keccak256\":\"0x55be78ffb441c782f612b153d7d9049e3f0dbfd412c1f7df29c896b972b2985f\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://a223c68e38a6c9b1e363e525911bc7eda44ea517865ae53bd0d34ff858cc02ae\",\"dweb:/ipfs/QmVruGehibG6Emr2A6JHwUnhd4NzsGkE24cbGqnDpEvrKh\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.sol\":{\"keccak256\":\"0x7456cd394cc905aae7cdbd4601ce1c296c768c13c28e66efbb913cc070bad3e4\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://5a6589b428b724721ba5b4dd196c8f366a6e694ef313add093f29af64496c042\",\"dweb:/ipfs/QmSMgV6y8L6pyyzDz6kKmafVwujNWcjTqutpCBxe4uNRqg\"]},\"contracts/interfaces/core/IAutomate.sol\":{\"keccak256\":\"0x21b292f16977568b93ad13329faea0112bed7e0413c441ffcf58ecca8d540ec7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0c9449f7e8725db0c2721f5a8890e58af4d69b465d1e9cecc1acfb1e3db40771\",\"dweb:/ipfs/QmR9mHTaDi8qWCq1tXzBaLgKK6tgEjk1bHEnB8GGSXLBTT\"]},\"contracts/interfaces/core/IControl.sol\":{\"keccak256\":\"0xbe980059242de4291d9e3816f3ee0d4ad8dde4eb6a842a673315a7f82bd0b8b7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5f3f5807a1c3fd9605ca2769413d69f3e99e914a5f196fd5392cbedb3f779f3d\",\"dweb:/ipfs/QmUjmRwMjioDHcy6hLxeWDV7TgxahNwcty3HbGSywJTd46\"]},\"contracts/interfaces/core/IFlow.sol\":{\"keccak256\":\"0x457048a156fdd4960d1ae29d25c23e64a009b07a4d245a28baeb76ac6becbc7c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cfe189445294f1966924fac59728c7b0df24aa97d138432dc94318eca75995ad\",\"dweb:/ipfs/QmVzE173mUK78z8W1rYvwLo5e6UU6TtKdX2AhDq2wiFWkB\"]},\"contracts/interfaces/core/ISession.sol\":{\"keccak256\":\"0xc618e9cd6023ef8744b2eb6211ed3465cda70c874f1297b526d00dbfcbbb70b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be1075605f777814f2c586f36c79822618ec4153c94d5dcf7ea547cdbe019414\",\"dweb:/ipfs/QmdUSV8kSgutygg2kNcn5xZfyowH7FdJnSfurNGFBZGW6A\"]},\"contracts/interfaces/utils/IAccessControl.sol\":{\"keccak256\":\"0xc5635aad433711323ec6cd473aedaca97383d910663bb74a5cda1e8e3323d86d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://404b89c843a0682fcc8fe55740ea803cc4dd85f04398c224202ec599f80d4288\",\"dweb:/ipfs/QmQgt4gNDNX3Khk1R1tTaSccvqrypibWxUjXNeE7VAAtm9\"]},\"contracts/interfaces/utils/ICut.sol\":{\"keccak256\":\"0xeaf211b0c9da3a46171250f7cf949ffc171447c36b68451013d00a530281790a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1de62f56aba981f3430068a960272e56cbfece148d15861e410bd89f40a0f52d\",\"dweb:/ipfs/QmRw5Wrtm1NRBrnUxyKspheunoGarnkCmEYG2AFZpPeo5x\"]},\"contracts/interfaces/utils/IERC165.sol\":{\"keccak256\":\"0x3adf1411c3cea1e9c8808e7de6f6b3d9050b3ce2f8c974b3ea36e5e774870a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c206e2bb1a3a711b9bdcb8fe22680a12dd88ba4eccb055376e5f6d06eaa393c9\",\"dweb:/ipfs/QmZEj2vabmhVmBEx39LNArRM1U4u69oU1waZ9nDUTRfRX4\"]},\"contracts/interfaces/utils/ILoupe.sol\":{\"keccak256\":\"0x4c5bc561178aa61cd464da8d76ac3853dbd118d8de6709273045e1580def2453\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34ca0c910c0b72d0603fc3ffc5aa28935982396a249419448199c341d8e883fe\",\"dweb:/ipfs/QmSFcJNgH9tFesJDN7W59Pj4ArwuTT1EoMDa6Pqj2Uo3zN\"]},\"contracts/interfaces/utils/IUtility.sol\":{\"keccak256\":\"0x235180cb3af695b167f730c8e132873191d5300a6f61e3a3f9cfb0b5ea2777b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a4c12a010d8a5ba3ec9a5973525d51c0c9e4d73efb7cf7ccd80dbd2a0fd2e40\",\"dweb:/ipfs/QmSnPXS7qHd8bPRsz9uWZRbRhEbDWCjeSBkmLenbNrekYN\"]},\"contracts/libraries/core/LibAutomate.sol\":{\"keccak256\":\"0xdca80cbbdf57dfc0f76c3719a54d2da92c09e46c3844b1011d9742a16ed2eb93\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://d5b967a7f5fa571c8154fa358725e9b5cff19b6e3847ff00e0ec210c9ce7a97b\",\"dweb:/ipfs/Qma7vn262Je4WamND9fytLSFaM4tw7NcGs5pYE1Lc3iB5a\"]},\"contracts/libraries/core/LibControl.sol\":{\"keccak256\":\"0x791dd1dc0c61948e1b1a46d190f02a041abdf6e2db26f1b436b06d8116381103\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://ec9343651044d62055789d04d464545afed31f82268dfd17703763a54441e0ec\",\"dweb:/ipfs/QmWKFYUATgubBYLZCRghkenZbjJHQwdQ8ymZVK5xBFm2QJ\"]},\"contracts/libraries/core/LibFlow.sol\":{\"keccak256\":\"0xf07903d54504fd374edbd492a084b92f9b9bd6e39846ecfcb743d9ce3031e2a7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://94b205c755a9c96ec4d8f3631cf24cb255d28b3abc65c7b2580f50a0f3c23f1c\",\"dweb:/ipfs/QmVsrQ3WzkQ9PvckGaBhd2ZDMV56wsPPZcRCGi5Qv9UXmc\"]},\"contracts/libraries/core/LibSession.sol\":{\"keccak256\":\"0x5dc6cfbe8840f7d1aa3c3920c1b7c420f27f7d7c785f4ddcb0b48072aa748648\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1094bf42c4cd9d75155a03b601321fa4d0095db76fb6c0d551cc38de8cd72031\",\"dweb:/ipfs/QmNhuWZFMJvuYUNsEzBkSnZp4hrjpR32VHMkWMTon1Q31u\"]},\"contracts/libraries/utils/IterableMappingBPS.sol\":{\"keccak256\":\"0xb6ab47a53267822918fdd13e4df79bfc1e8b2bbf921c80bbc4ad2e706e3539ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://092d19ac7ce0d7ada8fbb01d3af6822d6d8260fe8b8248e54b906a9edf381dd2\",\"dweb:/ipfs/QmZ8LZ72a2sSNfwm4Fpz54ZHVcjTe1dDy4ZrBhbNztZ1Bg\"]},\"contracts/libraries/utils/LibDiamond.sol\":{\"keccak256\":\"0x79254e503c12329739379fe3900cf174268bfe2c65cf5b7c1396b17783939834\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d405043f0b78b814d17fb721b476d2ab7a9d5a0c6065f6ecd0d4007c43e6b9fe\",\"dweb:/ipfs/QmPEsvxHnZKp84ww7WnQKjGo89eiVzXxcgdGxmMCcWbkZE\"]},\"contracts/services/gelato/Types.sol\":{\"keccak256\":\"0xcb8ce40dd420fe9d1fc258beba179e7c43560616dfd045d254a15fa75e6043e8\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://27599e8fa821421f99c2ae56716b118c4f47201d20c8475f6554395a60fc00a5\",\"dweb:/ipfs/QmS7h9jcSSZTM1icDDcFjdNgK3cFJWXFEXoJBpjfjn2a89\"]},\"contracts/upgrades/DiamondInit.sol\":{\"keccak256\":\"0x6aef360bdba4e982f4d89fccc3ec2df8d2d78c636ba91decb1f6bed42008ace2\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://188708dda7793da1e9d96fdc219733a6f0a2941bdfffdd66f0701a0fc91c12fa\",\"dweb:/ipfs/QmVEBJQRfanruJ27ESi4xELfzqonpDYoeJs9CJCW74VK4n\"]}},\"version\":1}"}}}}} \ No newline at end of file diff --git a/contracts/artifacts/build-info/ba9437438ec2715393320ce18780bccb.json b/contracts/artifacts/build-info/ba9437438ec2715393320ce18780bccb.json new file mode 100644 index 0000000..b173ec7 --- /dev/null +++ b/contracts/artifacts/build-info/ba9437438ec2715393320ce18780bccb.json @@ -0,0 +1 @@ +{"id":"ba9437438ec2715393320ce18780bccb","_format":"hh-sol-build-info-1","solcVersion":"0.8.18","solcLongVersion":"0.8.18+commit.87f61d96","input":{"language":"Solidity","sources":{"@openzeppelin/contracts/interfaces/IERC1271.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (interfaces/IERC1271.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC1271 standard signature validation method for\n * contracts as defined in https://eips.ethereum.org/EIPS/eip-1271[ERC-1271].\n *\n * _Available since v4.1._\n */\ninterface IERC1271 {\n /**\n * @dev Should return whether the signature provided is valid for the provided data\n * @param hash Hash of the data to be signed\n * @param signature Signature byte array associated with _data\n */\n function isValidSignature(bytes32 hash, bytes memory signature) external view returns (bytes4 magicValue);\n}\n"},"@openzeppelin/contracts/security/ReentrancyGuard.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.8.0) (security/ReentrancyGuard.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Contract module that helps prevent reentrant calls to a function.\n *\n * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\n * available, which can be applied to functions to make sure there are no nested\n * (reentrant) calls to them.\n *\n * Note that because there is a single `nonReentrant` guard, functions marked as\n * `nonReentrant` may not call one another. This can be worked around by making\n * those functions `private`, and then adding `external` `nonReentrant` entry\n * points to them.\n *\n * TIP: If you would like to learn more about reentrancy and alternative ways\n * to protect against it, check out our blog post\n * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\n */\nabstract contract ReentrancyGuard {\n // Booleans are more expensive than uint256 or any type that takes up a full\n // word because each write operation emits an extra SLOAD to first read the\n // slot's contents, replace the bits taken up by the boolean, and then write\n // back. This is the compiler's defense against contract upgrades and\n // pointer aliasing, and it cannot be disabled.\n\n // The values being non-zero value makes deployment a bit more expensive,\n // but in exchange the refund on every call to nonReentrant will be lower in\n // amount. Since refunds are capped to a percentage of the total\n // transaction's gas, it is best to keep them low in cases like this one, to\n // increase the likelihood of the full refund coming into effect.\n uint256 private constant _NOT_ENTERED = 1;\n uint256 private constant _ENTERED = 2;\n\n uint256 private _status;\n\n constructor() {\n _status = _NOT_ENTERED;\n }\n\n /**\n * @dev Prevents a contract from calling itself, directly or indirectly.\n * Calling a `nonReentrant` function from another `nonReentrant`\n * function is not supported. It is possible to prevent this from happening\n * by making the `nonReentrant` function external, and making it call a\n * `private` function that does the actual work.\n */\n modifier nonReentrant() {\n _nonReentrantBefore();\n _;\n _nonReentrantAfter();\n }\n\n function _nonReentrantBefore() private {\n // On the first call to nonReentrant, _status will be _NOT_ENTERED\n require(_status != _ENTERED, \"ReentrancyGuard: reentrant call\");\n\n // Any calls to nonReentrant after this point will fail\n _status = _ENTERED;\n }\n\n function _nonReentrantAfter() private {\n // By storing the original value once again, a refund is triggered (see\n // https://eips.ethereum.org/EIPS/eip-2200)\n _status = _NOT_ENTERED;\n }\n}\n"},"@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/draft-IERC20Permit.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\n * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\n *\n * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\n * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't\n * need to send a transaction, and thus is not required to hold Ether at all.\n */\ninterface IERC20Permit {\n /**\n * @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,\n * given ``owner``'s signed approval.\n *\n * IMPORTANT: The same issues {IERC20-approve} has related to transaction\n * ordering also apply here.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n * - `deadline` must be a timestamp in the future.\n * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\n * over the EIP712-formatted function arguments.\n * - the signature must use ``owner``'s current nonce (see {nonces}).\n *\n * For more information on the signature format, see the\n * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\n * section].\n */\n function permit(\n address owner,\n address spender,\n uint256 value,\n uint256 deadline,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) external;\n\n /**\n * @dev Returns the current nonce for `owner`. This value must be\n * included whenever a signature is generated for {permit}.\n *\n * Every successful call to {permit} increases ``owner``'s nonce by one. This\n * prevents a signature from being used multiple times.\n */\n function nonces(address owner) external view returns (uint256);\n\n /**\n * @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\n */\n // solhint-disable-next-line func-name-mixedcase\n function DOMAIN_SEPARATOR() external view returns (bytes32);\n}\n"},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20 {\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n\n /**\n * @dev Returns the amount of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the amount of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves `amount` tokens from the caller's account to `to`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address to, uint256 amount) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 amount) external returns (bool);\n\n /**\n * @dev Moves `amount` tokens from `from` to `to` using the\n * allowance mechanism. `amount` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(\n address from,\n address to,\n uint256 amount\n ) external returns (bool);\n}\n"},"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC20/utils/SafeERC20.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../IERC20.sol\";\nimport \"../extensions/draft-IERC20Permit.sol\";\nimport \"../../../utils/Address.sol\";\n\n/**\n * @title SafeERC20\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\n * contract returns false). Tokens that return no value (and instead revert or\n * throw on failure) are also supported, non-reverting calls are assumed to be\n * successful.\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\n */\nlibrary SafeERC20 {\n using Address for address;\n\n function safeTransfer(\n IERC20 token,\n address to,\n uint256 value\n ) internal {\n _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));\n }\n\n function safeTransferFrom(\n IERC20 token,\n address from,\n address to,\n uint256 value\n ) internal {\n _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\n }\n\n /**\n * @dev Deprecated. This function has issues similar to the ones found in\n * {IERC20-approve}, and its usage is discouraged.\n *\n * Whenever possible, use {safeIncreaseAllowance} and\n * {safeDecreaseAllowance} instead.\n */\n function safeApprove(\n IERC20 token,\n address spender,\n uint256 value\n ) internal {\n // safeApprove should only be called when setting an initial allowance,\n // or when resetting it to zero. To increase and decrease it, use\n // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'\n require(\n (value == 0) || (token.allowance(address(this), spender) == 0),\n \"SafeERC20: approve from non-zero to non-zero allowance\"\n );\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));\n }\n\n function safeIncreaseAllowance(\n IERC20 token,\n address spender,\n uint256 value\n ) internal {\n uint256 newAllowance = token.allowance(address(this), spender) + value;\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\n }\n\n function safeDecreaseAllowance(\n IERC20 token,\n address spender,\n uint256 value\n ) internal {\n unchecked {\n uint256 oldAllowance = token.allowance(address(this), spender);\n require(oldAllowance >= value, \"SafeERC20: decreased allowance below zero\");\n uint256 newAllowance = oldAllowance - value;\n _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\n }\n }\n\n function safePermit(\n IERC20Permit token,\n address owner,\n address spender,\n uint256 value,\n uint256 deadline,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) internal {\n uint256 nonceBefore = token.nonces(owner);\n token.permit(owner, spender, value, deadline, v, r, s);\n uint256 nonceAfter = token.nonces(owner);\n require(nonceAfter == nonceBefore + 1, \"SafeERC20: permit did not succeed\");\n }\n\n /**\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n * on the return value: the return value is optional (but if data is returned, it must not be false).\n * @param token The token targeted by the call.\n * @param data The call data (encoded using abi.encode or one of its variants).\n */\n function _callOptionalReturn(IERC20 token, bytes memory data) private {\n // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\n // we're implementing it ourselves. We use {Address-functionCall} to perform this call, which verifies that\n // the target address contains contract code and also asserts for success in the low-level call.\n\n bytes memory returndata = address(token).functionCall(data, \"SafeERC20: low-level call failed\");\n if (returndata.length > 0) {\n // Return data is optional\n require(abi.decode(returndata, (bool)), \"SafeERC20: ERC20 operation did not succeed\");\n }\n }\n}\n"},"@openzeppelin/contracts/token/ERC777/IERC777.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC777/IERC777.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC777Token standard as defined in the EIP.\n *\n * This contract uses the\n * https://eips.ethereum.org/EIPS/eip-1820[ERC1820 registry standard] to let\n * token holders and recipients react to token movements by using setting implementers\n * for the associated interfaces in said registry. See {IERC1820Registry} and\n * {ERC1820Implementer}.\n */\ninterface IERC777 {\n /**\n * @dev Emitted when `amount` tokens are created by `operator` and assigned to `to`.\n *\n * Note that some additional user `data` and `operatorData` can be logged in the event.\n */\n event Minted(address indexed operator, address indexed to, uint256 amount, bytes data, bytes operatorData);\n\n /**\n * @dev Emitted when `operator` destroys `amount` tokens from `account`.\n *\n * Note that some additional user `data` and `operatorData` can be logged in the event.\n */\n event Burned(address indexed operator, address indexed from, uint256 amount, bytes data, bytes operatorData);\n\n /**\n * @dev Emitted when `operator` is made operator for `tokenHolder`.\n */\n event AuthorizedOperator(address indexed operator, address indexed tokenHolder);\n\n /**\n * @dev Emitted when `operator` is revoked its operator status for `tokenHolder`.\n */\n event RevokedOperator(address indexed operator, address indexed tokenHolder);\n\n /**\n * @dev Returns the name of the token.\n */\n function name() external view returns (string memory);\n\n /**\n * @dev Returns the symbol of the token, usually a shorter version of the\n * name.\n */\n function symbol() external view returns (string memory);\n\n /**\n * @dev Returns the smallest part of the token that is not divisible. This\n * means all token operations (creation, movement and destruction) must have\n * amounts that are a multiple of this number.\n *\n * For most token contracts, this value will equal 1.\n */\n function granularity() external view returns (uint256);\n\n /**\n * @dev Returns the amount of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the amount of tokens owned by an account (`owner`).\n */\n function balanceOf(address owner) external view returns (uint256);\n\n /**\n * @dev Moves `amount` tokens from the caller's account to `recipient`.\n *\n * If send or receive hooks are registered for the caller and `recipient`,\n * the corresponding functions will be called with `data` and empty\n * `operatorData`. See {IERC777Sender} and {IERC777Recipient}.\n *\n * Emits a {Sent} event.\n *\n * Requirements\n *\n * - the caller must have at least `amount` tokens.\n * - `recipient` cannot be the zero address.\n * - if `recipient` is a contract, it must implement the {IERC777Recipient}\n * interface.\n */\n function send(\n address recipient,\n uint256 amount,\n bytes calldata data\n ) external;\n\n /**\n * @dev Destroys `amount` tokens from the caller's account, reducing the\n * total supply.\n *\n * If a send hook is registered for the caller, the corresponding function\n * will be called with `data` and empty `operatorData`. See {IERC777Sender}.\n *\n * Emits a {Burned} event.\n *\n * Requirements\n *\n * - the caller must have at least `amount` tokens.\n */\n function burn(uint256 amount, bytes calldata data) external;\n\n /**\n * @dev Returns true if an account is an operator of `tokenHolder`.\n * Operators can send and burn tokens on behalf of their owners. All\n * accounts are their own operator.\n *\n * See {operatorSend} and {operatorBurn}.\n */\n function isOperatorFor(address operator, address tokenHolder) external view returns (bool);\n\n /**\n * @dev Make an account an operator of the caller.\n *\n * See {isOperatorFor}.\n *\n * Emits an {AuthorizedOperator} event.\n *\n * Requirements\n *\n * - `operator` cannot be calling address.\n */\n function authorizeOperator(address operator) external;\n\n /**\n * @dev Revoke an account's operator status for the caller.\n *\n * See {isOperatorFor} and {defaultOperators}.\n *\n * Emits a {RevokedOperator} event.\n *\n * Requirements\n *\n * - `operator` cannot be calling address.\n */\n function revokeOperator(address operator) external;\n\n /**\n * @dev Returns the list of default operators. These accounts are operators\n * for all token holders, even if {authorizeOperator} was never called on\n * them.\n *\n * This list is immutable, but individual holders may revoke these via\n * {revokeOperator}, in which case {isOperatorFor} will return false.\n */\n function defaultOperators() external view returns (address[] memory);\n\n /**\n * @dev Moves `amount` tokens from `sender` to `recipient`. The caller must\n * be an operator of `sender`.\n *\n * If send or receive hooks are registered for `sender` and `recipient`,\n * the corresponding functions will be called with `data` and\n * `operatorData`. See {IERC777Sender} and {IERC777Recipient}.\n *\n * Emits a {Sent} event.\n *\n * Requirements\n *\n * - `sender` cannot be the zero address.\n * - `sender` must have at least `amount` tokens.\n * - the caller must be an operator for `sender`.\n * - `recipient` cannot be the zero address.\n * - if `recipient` is a contract, it must implement the {IERC777Recipient}\n * interface.\n */\n function operatorSend(\n address sender,\n address recipient,\n uint256 amount,\n bytes calldata data,\n bytes calldata operatorData\n ) external;\n\n /**\n * @dev Destroys `amount` tokens from `account`, reducing the total supply.\n * The caller must be an operator of `account`.\n *\n * If a send hook is registered for `account`, the corresponding function\n * will be called with `data` and `operatorData`. See {IERC777Sender}.\n *\n * Emits a {Burned} event.\n *\n * Requirements\n *\n * - `account` cannot be the zero address.\n * - `account` must have at least `amount` tokens.\n * - the caller must be an operator for `account`.\n */\n function operatorBurn(\n address account,\n uint256 amount,\n bytes calldata data,\n bytes calldata operatorData\n ) external;\n\n event Sent(\n address indexed operator,\n address indexed from,\n address indexed to,\n uint256 amount,\n bytes data,\n bytes operatorData\n );\n}\n"},"@openzeppelin/contracts/utils/Address.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/Address.sol)\n\npragma solidity ^0.8.1;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n /**\n * @dev Returns true if `account` is a contract.\n *\n * [IMPORTANT]\n * ====\n * It is unsafe to assume that an address for which this function returns\n * false is an externally-owned account (EOA) and not a contract.\n *\n * Among others, `isContract` will return false for the following\n * types of addresses:\n *\n * - an externally-owned account\n * - a contract in construction\n * - an address where a contract will be created\n * - an address where a contract lived, but was destroyed\n * ====\n *\n * [IMPORTANT]\n * ====\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\n *\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n * constructor.\n * ====\n */\n function isContract(address account) internal view returns (bool) {\n // This method relies on extcodesize/address.code.length, which returns 0\n // for contracts in construction, since the code is only stored at the end\n // of the constructor execution.\n\n return account.code.length > 0;\n }\n\n /**\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n * `recipient`, forwarding all available gas and reverting on errors.\n *\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\n * imposed by `transfer`, making them unable to receive funds via\n * `transfer`. {sendValue} removes this limitation.\n *\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n *\n * IMPORTANT: because control is transferred to `recipient`, care must be\n * taken to not create reentrancy vulnerabilities. Consider using\n * {ReentrancyGuard} or the\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */\n function sendValue(address payable recipient, uint256 amount) internal {\n require(address(this).balance >= amount, \"Address: insufficient balance\");\n\n (bool success, ) = recipient.call{value: amount}(\"\");\n require(success, \"Address: unable to send value, recipient may have reverted\");\n }\n\n /**\n * @dev Performs a Solidity function call using a low level `call`. A\n * plain `call` is an unsafe replacement for a function call: use this\n * function instead.\n *\n * If `target` reverts with a revert reason, it is bubbled up by this\n * function (like regular Solidity function calls).\n *\n * Returns the raw returned data. To convert to the expected return value,\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n *\n * Requirements:\n *\n * - `target` must be a contract.\n * - calling `target` with `data` must not revert.\n *\n * _Available since v3.1._\n */\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, \"Address: low-level call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n * `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but also transferring `value` wei to `target`.\n *\n * Requirements:\n *\n * - the calling contract must have an ETH balance of at least `value`.\n * - the called Solidity function must be `payable`.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(\n address target,\n bytes memory data,\n uint256 value\n ) internal returns (bytes memory) {\n return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n * with `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(\n address target,\n bytes memory data,\n uint256 value,\n string memory errorMessage\n ) internal returns (bytes memory) {\n require(address(this).balance >= value, \"Address: insufficient balance for call\");\n (bool success, bytes memory returndata) = target.call{value: value}(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n return functionStaticCall(target, data, \"Address: low-level static call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal view returns (bytes memory) {\n (bool success, bytes memory returndata) = target.staticcall(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionDelegateCall(target, data, \"Address: low-level delegate call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(\n address target,\n bytes memory data,\n string memory errorMessage\n ) internal returns (bytes memory) {\n (bool success, bytes memory returndata) = target.delegatecall(data);\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n }\n\n /**\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\n *\n * _Available since v4.8._\n */\n function verifyCallResultFromTarget(\n address target,\n bool success,\n bytes memory returndata,\n string memory errorMessage\n ) internal view returns (bytes memory) {\n if (success) {\n if (returndata.length == 0) {\n // only check isContract if the call was successful and the return data is empty\n // otherwise we already know that it was a contract\n require(isContract(target), \"Address: call to non-contract\");\n }\n return returndata;\n } else {\n _revert(returndata, errorMessage);\n }\n }\n\n /**\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\n * revert reason or using the provided one.\n *\n * _Available since v4.3._\n */\n function verifyCallResult(\n bool success,\n bytes memory returndata,\n string memory errorMessage\n ) internal pure returns (bytes memory) {\n if (success) {\n return returndata;\n } else {\n _revert(returndata, errorMessage);\n }\n }\n\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n /// @solidity memory-safe-assembly\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert(errorMessage);\n }\n }\n}\n"},"@openzeppelin/contracts/utils/math/Math.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/Math.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Standard math utilities missing in the Solidity language.\n */\nlibrary Math {\n enum Rounding {\n Down, // Toward negative infinity\n Up, // Toward infinity\n Zero // Toward zero\n }\n\n /**\n * @dev Returns the largest of two numbers.\n */\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\n return a > b ? a : b;\n }\n\n /**\n * @dev Returns the smallest of two numbers.\n */\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\n return a < b ? a : b;\n }\n\n /**\n * @dev Returns the average of two numbers. The result is rounded towards\n * zero.\n */\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\n // (a + b) / 2 can overflow.\n return (a & b) + (a ^ b) / 2;\n }\n\n /**\n * @dev Returns the ceiling of the division of two numbers.\n *\n * This differs from standard division with `/` in that it rounds up instead\n * of rounding down.\n */\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\n // (a + b - 1) / b can overflow on addition, so we distribute.\n return a == 0 ? 0 : (a - 1) / b + 1;\n }\n\n /**\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\n * with further edits by Uniswap Labs also under MIT license.\n */\n function mulDiv(\n uint256 x,\n uint256 y,\n uint256 denominator\n ) internal pure returns (uint256 result) {\n unchecked {\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\n // variables such that product = prod1 * 2^256 + prod0.\n uint256 prod0; // Least significant 256 bits of the product\n uint256 prod1; // Most significant 256 bits of the product\n assembly {\n let mm := mulmod(x, y, not(0))\n prod0 := mul(x, y)\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\n }\n\n // Handle non-overflow cases, 256 by 256 division.\n if (prod1 == 0) {\n return prod0 / denominator;\n }\n\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\n require(denominator > prod1);\n\n ///////////////////////////////////////////////\n // 512 by 256 division.\n ///////////////////////////////////////////////\n\n // Make division exact by subtracting the remainder from [prod1 prod0].\n uint256 remainder;\n assembly {\n // Compute remainder using mulmod.\n remainder := mulmod(x, y, denominator)\n\n // Subtract 256 bit number from 512 bit number.\n prod1 := sub(prod1, gt(remainder, prod0))\n prod0 := sub(prod0, remainder)\n }\n\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\n // See https://cs.stackexchange.com/q/138556/92363.\n\n // Does not overflow because the denominator cannot be zero at this stage in the function.\n uint256 twos = denominator & (~denominator + 1);\n assembly {\n // Divide denominator by twos.\n denominator := div(denominator, twos)\n\n // Divide [prod1 prod0] by twos.\n prod0 := div(prod0, twos)\n\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\n twos := add(div(sub(0, twos), twos), 1)\n }\n\n // Shift in bits from prod1 into prod0.\n prod0 |= prod1 * twos;\n\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\n // four bits. That is, denominator * inv = 1 mod 2^4.\n uint256 inverse = (3 * denominator) ^ 2;\n\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\n // in modular arithmetic, doubling the correct bits in each step.\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\n\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\n // is no longer required.\n result = prod0 * inverse;\n return result;\n }\n }\n\n /**\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\n */\n function mulDiv(\n uint256 x,\n uint256 y,\n uint256 denominator,\n Rounding rounding\n ) internal pure returns (uint256) {\n uint256 result = mulDiv(x, y, denominator);\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\n result += 1;\n }\n return result;\n }\n\n /**\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\n *\n * Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11).\n */\n function sqrt(uint256 a) internal pure returns (uint256) {\n if (a == 0) {\n return 0;\n }\n\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\n //\n // We know that the \"msb\" (most significant bit) of our target number `a` is a power of 2 such that we have\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\n //\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\n // → `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\n // → `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\n //\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\n uint256 result = 1 << (log2(a) >> 1);\n\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\n // into the expected uint128 result.\n unchecked {\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n result = (result + a / result) >> 1;\n return min(result, a / result);\n }\n }\n\n /**\n * @notice Calculates sqrt(a), following the selected rounding direction.\n */\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = sqrt(a);\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 2, rounded down, of a positive value.\n * Returns 0 if given 0.\n */\n function log2(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >> 128 > 0) {\n value >>= 128;\n result += 128;\n }\n if (value >> 64 > 0) {\n value >>= 64;\n result += 64;\n }\n if (value >> 32 > 0) {\n value >>= 32;\n result += 32;\n }\n if (value >> 16 > 0) {\n value >>= 16;\n result += 16;\n }\n if (value >> 8 > 0) {\n value >>= 8;\n result += 8;\n }\n if (value >> 4 > 0) {\n value >>= 4;\n result += 4;\n }\n if (value >> 2 > 0) {\n value >>= 2;\n result += 2;\n }\n if (value >> 1 > 0) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log2(value);\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 10, rounded down, of a positive value.\n * Returns 0 if given 0.\n */\n function log10(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >= 10**64) {\n value /= 10**64;\n result += 64;\n }\n if (value >= 10**32) {\n value /= 10**32;\n result += 32;\n }\n if (value >= 10**16) {\n value /= 10**16;\n result += 16;\n }\n if (value >= 10**8) {\n value /= 10**8;\n result += 8;\n }\n if (value >= 10**4) {\n value /= 10**4;\n result += 4;\n }\n if (value >= 10**2) {\n value /= 10**2;\n result += 2;\n }\n if (value >= 10**1) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log10(value);\n return result + (rounding == Rounding.Up && 10**result < value ? 1 : 0);\n }\n }\n\n /**\n * @dev Return the log in base 256, rounded down, of a positive value.\n * Returns 0 if given 0.\n *\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\n */\n function log256(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >> 128 > 0) {\n value >>= 128;\n result += 16;\n }\n if (value >> 64 > 0) {\n value >>= 64;\n result += 8;\n }\n if (value >> 32 > 0) {\n value >>= 32;\n result += 4;\n }\n if (value >> 16 > 0) {\n value >>= 16;\n result += 2;\n }\n if (value >> 8 > 0) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log256(value);\n return result + (rounding == Rounding.Up && 1 << (result * 8) < value ? 1 : 0);\n }\n }\n}\n"},"@openzeppelin/contracts/utils/Strings.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/Strings.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./math/Math.sol\";\n\n/**\n * @dev String operations.\n */\nlibrary Strings {\n bytes16 private constant _SYMBOLS = \"0123456789abcdef\";\n uint8 private constant _ADDRESS_LENGTH = 20;\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\n */\n function toString(uint256 value) internal pure returns (string memory) {\n unchecked {\n uint256 length = Math.log10(value) + 1;\n string memory buffer = new string(length);\n uint256 ptr;\n /// @solidity memory-safe-assembly\n assembly {\n ptr := add(buffer, add(32, length))\n }\n while (true) {\n ptr--;\n /// @solidity memory-safe-assembly\n assembly {\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\n }\n value /= 10;\n if (value == 0) break;\n }\n return buffer;\n }\n }\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\n */\n function toHexString(uint256 value) internal pure returns (string memory) {\n unchecked {\n return toHexString(value, Math.log256(value) + 1);\n }\n }\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\n */\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\n bytes memory buffer = new bytes(2 * length + 2);\n buffer[0] = \"0\";\n buffer[1] = \"x\";\n for (uint256 i = 2 * length + 1; i > 1; --i) {\n buffer[i] = _SYMBOLS[value & 0xf];\n value >>= 4;\n }\n require(value == 0, \"Strings: hex length insufficient\");\n return string(buffer);\n }\n\n /**\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\n */\n function toHexString(address addr) internal pure returns (string memory) {\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\n }\n}\n"},"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol":{"content":"// SPDX-License-Identifier: AGPLv3\npragma solidity >= 0.8.0;\n\nimport {\n ISuperfluid,\n ISuperToken\n} from \"../interfaces/superfluid/ISuperfluid.sol\";\n\nimport {\n IConstantFlowAgreementV1\n} from \"../interfaces/agreements/IConstantFlowAgreementV1.sol\";\n\nimport {\n IInstantDistributionAgreementV1\n} from \"../interfaces/agreements/IInstantDistributionAgreementV1.sol\";\n\n/**\n * @title Library for Token Centric Interface\n * @author Superfluid\n * @dev Set `using for ISuperToken` in including file, and call any of these functions on an instance\n * of ISuperToken\n */\nlibrary SuperTokenV1Library {\n\n /** CFA BASE CRUD ************************************* */\n\n /**\n * @dev Create flow without userData\n * @param token The token used in flow\n * @param receiver The receiver of the flow\n * @param flowRate The desired flowRate\n */\n function createFlow(ISuperToken token, address receiver, int96 flowRate)\n internal returns (bool)\n {\n (ISuperfluid host, IConstantFlowAgreementV1 cfa) = _getAndCacheHostAndCFA(token);\n host.callAgreement(\n cfa,\n abi.encodeCall(\n cfa.createFlow,\n (token, receiver, flowRate, new bytes(0))\n ),\n new bytes(0) // userData\n );\n return true;\n }\n\n /**\n * @dev Create flow with userData\n * @param token The token used in flow\n * @param receiver The receiver of the flow\n * @param flowRate The desired flowRate\n * @param userData The userdata passed along with call\n */\n function createFlow(ISuperToken token, address receiver, int96 flowRate, bytes memory userData)\n internal returns (bool)\n {\n (ISuperfluid host, IConstantFlowAgreementV1 cfa) = _getAndCacheHostAndCFA(token);\n host.callAgreement(\n cfa,\n abi.encodeCall(\n cfa.createFlow,\n (token, receiver, flowRate, new bytes(0))\n ),\n userData // userData\n );\n return true;\n }\n\n\n /**\n * @dev Update flow without userData\n * @param token The token used in flow\n * @param receiver The receiver of the flow\n * @param flowRate The desired flowRate\n */\n function updateFlow(ISuperToken token, address receiver, int96 flowRate)\n internal returns (bool)\n {\n (ISuperfluid host, IConstantFlowAgreementV1 cfa) = _getAndCacheHostAndCFA(token);\n host.callAgreement(\n cfa,\n abi.encodeCall(\n cfa.updateFlow,\n (token, receiver, flowRate, new bytes(0))\n ),\n new bytes(0) // userData\n );\n return true;\n }\n\n\n /**\n * @dev Update flow with userData\n * @param token The token used in flow\n * @param receiver The receiver of the flow\n * @param flowRate The desired flowRate\n * @param userData The userdata passed along with call\n */\n function updateFlow(ISuperToken token, address receiver, int96 flowRate, bytes memory userData)\n internal returns (bool)\n {\n (ISuperfluid host, IConstantFlowAgreementV1 cfa) = _getAndCacheHostAndCFA(token);\n host.callAgreement(\n cfa,\n abi.encodeCall(\n cfa.updateFlow,\n (token, receiver, flowRate, new bytes(0))\n ),\n userData\n );\n return true;\n }\n\n /**\n * @dev Delete flow without userData\n * @param token The token used in flow\n * @param sender The sender of the flow\n * @param receiver The receiver of the flow\n */\n function deleteFlow(ISuperToken token, address sender, address receiver)\n internal returns (bool)\n {\n (ISuperfluid host, IConstantFlowAgreementV1 cfa) = _getAndCacheHostAndCFA(token);\n host.callAgreement(\n cfa,\n abi.encodeCall(\n cfa.deleteFlow,\n (token, sender, receiver, new bytes(0))\n ),\n new bytes(0) // userData\n );\n return true;\n }\n\n /**\n * @dev Delete flow with userData\n * @param token The token used in flow\n * @param sender The sender of the flow\n * @param receiver The receiver of the flow\n * @param userData The userdata passed along with call\n */\n function deleteFlow(ISuperToken token, address sender, address receiver, bytes memory userData)\n internal returns (bool)\n {\n (ISuperfluid host, IConstantFlowAgreementV1 cfa) = _getAndCacheHostAndCFA(token);\n host.callAgreement(\n cfa,\n abi.encodeCall(\n cfa.deleteFlow,\n (token, sender, receiver, new bytes(0))\n ),\n userData\n );\n return true;\n }\n\n /** CFA ACL ************************************* */\n\n /**\n * @dev Update permissions for flow operator\n * @param token The token used in flow\n * @param flowOperator The address given flow permissions\n * @param allowCreate creation permissions\n * @param allowCreate update permissions\n * @param allowCreate deletion permissions\n * @param flowRateAllowance The allowance provided to flowOperator\n */\n function setFlowPermissions(\n ISuperToken token,\n address flowOperator,\n bool allowCreate,\n bool allowUpdate,\n bool allowDelete,\n int96 flowRateAllowance\n ) internal returns (bool) {\n (ISuperfluid host, IConstantFlowAgreementV1 cfa) = _getAndCacheHostAndCFA(token);\n uint8 permissionsBitmask = (allowCreate ? 1 : 0)\n | (allowUpdate ? 1 : 0) << 1\n | (allowDelete ? 1 : 0) << 2;\n host.callAgreement(\n cfa,\n abi.encodeCall(\n cfa.updateFlowOperatorPermissions,\n (token, flowOperator, permissionsBitmask, flowRateAllowance, new bytes(0))\n ),\n new bytes(0)\n );\n return true;\n }\n\n /**\n * @dev Update permissions for flow operator - give operator max permissions\n * @param token The token used in flow\n * @param flowOperator The address given flow permissions\n */\n function setMaxFlowPermissions(\n ISuperToken token,\n address flowOperator\n ) internal returns (bool) {\n (ISuperfluid host, IConstantFlowAgreementV1 cfa) = _getAndCacheHostAndCFA(token);\n host.callAgreement(\n cfa,\n abi.encodeCall(\n cfa.authorizeFlowOperatorWithFullControl,\n (token, flowOperator, new bytes(0))\n ),\n new bytes(0)\n );\n return true;\n }\n\n /**\n * @dev Update permissions for flow operator - revoke all permission\n * @param token The token used in flow\n * @param flowOperator The address given flow permissions\n */\n function revokeFlowPermissions(\n ISuperToken token,\n address flowOperator\n ) internal returns (bool) {\n (ISuperfluid host, IConstantFlowAgreementV1 cfa) = _getAndCacheHostAndCFA(token);\n host.callAgreement(\n cfa,\n abi.encodeCall(\n cfa.revokeFlowOperatorWithFullControl,\n (token, flowOperator, new bytes(0))\n ),\n new bytes(0)\n );\n return true;\n }\n\n /**\n * @dev Update permissions for flow operator in callback\n * @notice allowing userData to be a parameter here triggered stack to deep error\n * @param token The token used in flow\n * @param flowOperator The address given flow permissions\n * @param allowCreate creation permissions\n * @param allowCreate update permissions\n * @param allowCreate deletion permissions\n * @param flowRateAllowance The allowance provided to flowOperator\n * @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n */\n function setFlowPermissionsWithCtx(\n ISuperToken token,\n address flowOperator,\n bool allowCreate,\n bool allowUpdate,\n bool allowDelete,\n int96 flowRateAllowance,\n bytes memory ctx\n ) internal returns (bytes memory newCtx) {\n (ISuperfluid host, IConstantFlowAgreementV1 cfa) = _getAndCacheHostAndCFA(token);\n uint8 permissionsBitmask = (allowCreate ? 1 : 0)\n | (allowUpdate ? 1 : 0) << 1\n | (allowDelete ? 1 : 0) << 2;\n (newCtx, ) = host.callAgreementWithContext(\n cfa,\n abi.encodeCall(\n cfa.updateFlowOperatorPermissions,\n (\n token,\n flowOperator,\n permissionsBitmask,\n flowRateAllowance,\n new bytes(0)\n )\n ),\n \"0x\",\n ctx\n );\n }\n\n /**\n * @dev Update permissions for flow operator - give operator max permissions\n * @param token The token used in flow\n * @param flowOperator The address given flow permissions\n * @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n */\n function setMaxFlowPermissionsWithCtx(\n ISuperToken token,\n address flowOperator,\n bytes memory ctx\n ) internal returns (bytes memory newCtx) {\n (ISuperfluid host, IConstantFlowAgreementV1 cfa) = _getAndCacheHostAndCFA(token);\n (newCtx, ) = host.callAgreementWithContext(\n cfa,\n abi.encodeCall(\n cfa.authorizeFlowOperatorWithFullControl,\n (\n token,\n flowOperator,\n new bytes(0)\n )\n ),\n \"0x\",\n ctx\n );\n }\n\n /**\n * @dev Update permissions for flow operator - revoke all permission\n * @param token The token used in flow\n * @param flowOperator The address given flow permissions\n * @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n */\n function revokeFlowPermissionsWithCtx(\n ISuperToken token,\n address flowOperator,\n bytes memory ctx\n ) internal returns (bytes memory newCtx) {\n (ISuperfluid host, IConstantFlowAgreementV1 cfa) = _getAndCacheHostAndCFA(token);\n (newCtx, ) = host.callAgreementWithContext(\n cfa,\n abi.encodeCall(\n cfa.revokeFlowOperatorWithFullControl,\n (token, flowOperator, new bytes(0))\n ),\n \"0x\",\n ctx\n );\n }\n\n\n /**\n * @dev Creates flow as an operator without userData\n * @param token The token to flow\n * @param sender The sender of the flow\n * @param receiver The receiver of the flow\n * @param flowRate The desired flowRate\n */\n function createFlowFrom(\n ISuperToken token,\n address sender,\n address receiver,\n int96 flowRate\n ) internal returns (bool) {\n (ISuperfluid host, IConstantFlowAgreementV1 cfa) = _getAndCacheHostAndCFA(token);\n host.callAgreement(\n cfa,\n abi.encodeCall(\n cfa.createFlowByOperator,\n (token, sender, receiver, flowRate, new bytes(0))\n ),\n new bytes(0)\n );\n return true;\n }\n\n /**\n * @dev Creates flow as an operator with userData\n * @param token The token to flow\n * @param sender The sender of the flow\n * @param receiver The receiver of the flow\n * @param flowRate The desired flowRate\n * @param userData The user provided data\n */\n function createFlowFrom(\n ISuperToken token,\n address sender,\n address receiver,\n int96 flowRate,\n bytes memory userData\n ) internal returns (bool) {\n (ISuperfluid host, IConstantFlowAgreementV1 cfa) = _getAndCacheHostAndCFA(token);\n host.callAgreement(\n cfa,\n abi.encodeCall(\n cfa.createFlowByOperator,\n (token, sender, receiver, flowRate, new bytes(0))\n ),\n userData\n );\n return true;\n }\n\n\n /**\n * @dev Updates flow as an operator without userData\n * @param token The token to flow\n * @param sender The sender of the flow\n * @param receiver The receiver of the flow\n * @param flowRate The desired flowRate\n */\n function updateFlowFrom(\n ISuperToken token,\n address sender,\n address receiver,\n int96 flowRate\n ) internal returns (bool) {\n (ISuperfluid host, IConstantFlowAgreementV1 cfa) = _getAndCacheHostAndCFA(token);\n host.callAgreement(\n cfa,\n abi.encodeCall(\n cfa.updateFlowByOperator,\n (token, sender, receiver, flowRate, new bytes(0))\n ),\n new bytes(0)\n );\n return true;\n }\n\n /**\n * @dev Updates flow as an operator with userData\n * @param token The token to flow\n * @param sender The sender of the flow\n * @param receiver The receiver of the flow\n * @param flowRate The desired flowRate\n * @param userData The user provided data\n */\n function updateFlowFrom(\n ISuperToken token,\n address sender,\n address receiver,\n int96 flowRate,\n bytes memory userData\n ) internal returns (bool) {\n (ISuperfluid host, IConstantFlowAgreementV1 cfa) = _getAndCacheHostAndCFA(token);\n host.callAgreement(\n cfa,\n abi.encodeCall(\n cfa.updateFlowByOperator,\n (token, sender, receiver, flowRate, new bytes(0))\n ),\n userData\n );\n return true;\n }\n\n /**\n * @dev Deletes flow as an operator without userData\n * @param token The token to flow\n * @param sender The sender of the flow\n * @param receiver The receiver of the flow\n */\n function deleteFlowFrom(\n ISuperToken token,\n address sender,\n address receiver\n ) internal returns (bool) {\n (ISuperfluid host, IConstantFlowAgreementV1 cfa) = _getAndCacheHostAndCFA(token);\n host.callAgreement(\n cfa,\n abi.encodeCall(\n cfa.deleteFlowByOperator,\n (token, sender, receiver, new bytes(0))\n ),\n new bytes(0)\n );\n return true;\n }\n\n /**\n * @dev Deletes flow as an operator with userData\n * @param token The token to flow\n * @param sender The sender of the flow\n * @param receiver The receiver of the flow\n * @param userData The user provided data\n */\n function deleteFlowFrom(\n ISuperToken token,\n address sender,\n address receiver,\n bytes memory userData\n ) internal returns (bool) {\n (ISuperfluid host, IConstantFlowAgreementV1 cfa) = _getAndCacheHostAndCFA(token);\n host.callAgreement(\n cfa,\n abi.encodeCall(\n cfa.deleteFlowByOperator,\n (token, sender, receiver, new bytes(0))\n ),\n userData\n );\n return true;\n }\n\n\n /** CFA With CTX FUNCTIONS ************************************* */\n\n /**\n * @dev Create flow with context and userData\n * @param token The token to flow\n * @param receiver The receiver of the flow\n * @param flowRate The desired flowRate\n * @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n */\n function createFlowWithCtx(\n ISuperToken token,\n address receiver,\n int96 flowRate,\n bytes memory ctx\n ) internal returns (bytes memory newCtx) {\n (ISuperfluid host, IConstantFlowAgreementV1 cfa) = _getAndCacheHostAndCFA(token);\n (newCtx, ) = host.callAgreementWithContext(\n cfa,\n abi.encodeCall(\n cfa.createFlow,\n (\n token,\n receiver,\n flowRate,\n new bytes(0) // placeholder\n )\n ),\n \"0x\",\n ctx\n );\n }\n\n /**\n * @dev Create flow by operator with context\n * @param token The token to flow\n * @param sender The sender of the flow\n * @param receiver The receiver of the flow\n * @param flowRate The desired flowRate\n * @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n */\n function createFlowFromWithCtx(\n ISuperToken token,\n address sender,\n address receiver,\n int96 flowRate,\n bytes memory ctx\n ) internal returns (bytes memory newCtx) {\n (ISuperfluid host, IConstantFlowAgreementV1 cfa) = _getAndCacheHostAndCFA(token);\n (newCtx, ) = host.callAgreementWithContext(\n cfa,\n abi.encodeCall(\n cfa.createFlowByOperator,\n (\n token,\n sender,\n receiver,\n flowRate,\n new bytes(0) // placeholder\n )\n ),\n \"0x\",\n ctx\n );\n }\n\n /**\n * @dev Update flow with context\n * @param token The token to flow\n * @param receiver The receiver of the flow\n * @param flowRate The desired flowRate\n * @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n */\n function updateFlowWithCtx(\n ISuperToken token,\n address receiver,\n int96 flowRate,\n bytes memory ctx\n ) internal returns (bytes memory newCtx) {\n (ISuperfluid host, IConstantFlowAgreementV1 cfa) = _getAndCacheHostAndCFA(token);\n (newCtx, ) = host.callAgreementWithContext(\n cfa,\n abi.encodeCall(\n cfa.updateFlow,\n (\n token,\n receiver,\n flowRate,\n new bytes(0) // placeholder\n )\n ),\n \"0x\",\n ctx\n );\n }\n\n /**\n * @dev Update flow by operator with context\n * @param token The token to flow\n * @param sender The receiver of the flow\n * @param receiver The receiver of the flow\n * @param flowRate The desired flowRate\n * @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n */\n function updateFlowFromWithCtx(\n ISuperToken token,\n address sender,\n address receiver,\n int96 flowRate,\n bytes memory ctx\n ) internal returns (bytes memory newCtx) {\n (ISuperfluid host, IConstantFlowAgreementV1 cfa) = _getAndCacheHostAndCFA(token);\n (newCtx, ) = host.callAgreementWithContext(\n cfa,\n abi.encodeCall(\n cfa.updateFlowByOperator,\n (\n token,\n sender,\n receiver,\n flowRate,\n new bytes(0) // placeholder\n )\n ),\n \"0x\",\n ctx\n );\n }\n\n /**\n * @dev Delete flow with context\n * @param token The token to flow\n * @param sender The sender of the flow\n * @param receiver The receiver of the flow\n * @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n */\n function deleteFlowWithCtx(\n ISuperToken token,\n address sender,\n address receiver,\n bytes memory ctx\n ) internal returns (bytes memory newCtx) {\n (ISuperfluid host, IConstantFlowAgreementV1 cfa) = _getAndCacheHostAndCFA(token);\n (newCtx, ) = host.callAgreementWithContext(\n cfa,\n abi.encodeCall(\n cfa.deleteFlow,\n (\n token,\n sender,\n receiver,\n new bytes(0) // placeholder\n )\n ),\n \"0x\",\n ctx\n );\n }\n\n /**\n * @dev Delete flow by operator with context\n * @param token The token to flow\n * @param sender The sender of the flow\n * @param receiver The receiver of the flow\n * @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n */\n function deleteFlowFromWithCtx(\n ISuperToken token,\n address sender,\n address receiver,\n bytes memory ctx\n ) internal returns (bytes memory newCtx) {\n (ISuperfluid host, IConstantFlowAgreementV1 cfa) = _getAndCacheHostAndCFA(token);\n (newCtx, ) = host.callAgreementWithContext(\n cfa,\n abi.encodeCall(\n cfa.deleteFlowByOperator,\n (\n token,\n sender,\n receiver,\n new bytes(0) // placeholder\n )\n ),\n \"0x\",\n ctx\n );\n }\n\n /** CFA VIEW FUNCTIONS ************************************* */\n\n /**\n * @dev get flow rate between two accounts for given token\n * @param token The token used in flow\n * @param sender The sender of the flow\n * @param receiver The receiver of the flow\n * @return flowRate The flow rate\n */\n function getFlowRate(ISuperToken token, address sender, address receiver)\n internal view returns(int96 flowRate)\n {\n (, IConstantFlowAgreementV1 cfa) = _getHostAndCFA(token);\n (, flowRate, , ) = cfa.getFlow(token, sender, receiver);\n }\n\n /**\n * @dev get flow info between two accounts for given token\n * @param token The token used in flow\n * @param sender The sender of the flow\n * @param receiver The receiver of the flow\n * @return lastUpdated Timestamp of flow creation or last flowrate change\n * @return flowRate The flow rate\n * @return deposit The amount of deposit the flow\n * @return owedDeposit The amount of owed deposit of the flow\n */\n function getFlowInfo(ISuperToken token, address sender, address receiver)\n internal view\n returns(uint256 lastUpdated, int96 flowRate, uint256 deposit, uint256 owedDeposit)\n {\n (, IConstantFlowAgreementV1 cfa) = _getHostAndCFA(token);\n (lastUpdated, flowRate, deposit, owedDeposit) = cfa.getFlow(token, sender, receiver);\n }\n\n /**\n * @dev get net flow rate for given account for given token\n * @param token Super token address\n * @param account Account to query\n * @return flowRate The net flow rate of the account\n */\n function getNetFlowRate(ISuperToken token, address account)\n internal view returns (int96 flowRate)\n {\n (, IConstantFlowAgreementV1 cfa) = _getHostAndCFA(token);\n return cfa.getNetFlow(token, account);\n }\n\n /**\n * @dev get the aggregated flow info of the account\n * @param token Super token address\n * @param account Account to query\n * @return lastUpdated Timestamp of the last change of the net flow\n * @return flowRate The net flow rate of token for account\n * @return deposit The sum of all deposits for account's flows\n * @return owedDeposit The sum of all owed deposits for account's flows\n */\n function getNetFlowInfo(ISuperToken token, address account)\n internal view\n returns (uint256 lastUpdated, int96 flowRate, uint256 deposit, uint256 owedDeposit)\n {\n (, IConstantFlowAgreementV1 cfa) = _getHostAndCFA(token);\n return cfa.getAccountFlowInfo(token, account);\n }\n\n /**\n * @dev calculate buffer for a flow rate\n * @param token The token used in flow\n * @param flowRate The flowrate to calculate the needed buffer for\n * @return bufferAmount The buffer amount based on flowRate, liquidationPeriod and minimum deposit\n */\n function getBufferAmountByFlowRate(ISuperToken token, int96 flowRate) internal view\n returns (uint256 bufferAmount)\n {\n (, IConstantFlowAgreementV1 cfa) = _getHostAndCFA(token);\n return cfa.getDepositRequiredForFlowRate(token, flowRate);\n }\n\n /**\n * @dev get existing flow permissions\n * @param token The token used in flow\n * @param sender sender of a flow\n * @param flowOperator the address we are checking permissions of for sender & token\n * @return allowCreate is true if the flowOperator can create flows\n * @return allowUpdate is true if the flowOperator can update flows\n * @return allowDelete is true if the flowOperator can delete flows\n * @return flowRateAllowance The flow rate allowance the flowOperator is granted (only goes down)\n */\n function getFlowPermissions(ISuperToken token, address sender, address flowOperator)\n internal view\n returns (bool allowCreate, bool allowUpdate, bool allowDelete, int96 flowRateAllowance)\n {\n (, IConstantFlowAgreementV1 cfa) = _getHostAndCFA(token);\n uint8 permissionsBitmask;\n (, permissionsBitmask, flowRateAllowance) = cfa.getFlowOperatorData(token, sender, flowOperator);\n allowCreate = permissionsBitmask & 1 == 1 ? true : false;\n allowUpdate = permissionsBitmask >> 1 & 1 == 1 ? true : false;\n allowDelete = permissionsBitmask >> 2 & 1 == 1 ? true : false;\n }\n\n\n /** IDA VIEW FUNCTIONS ************************************* */\n\n\n /**\n * @dev Gets an index by its ID and publisher.\n * @param token Super token used with the index.\n * @param publisher Publisher of the index.\n * @param indexId ID of the index.\n * @return exist True if the index exists.\n * @return indexValue Total value of the index.\n * @return totalUnitsApproved Units of the index approved by subscribers.\n * @return totalUnitsPending Units of teh index not yet approved by subscribers.\n */\n function getIndex(ISuperToken token, address publisher, uint32 indexId)\n internal view\n returns (bool exist, uint128 indexValue, uint128 totalUnitsApproved, uint128 totalUnitsPending)\n {\n (, IInstantDistributionAgreementV1 ida) = _getHostAndIDA(token);\n return ida.getIndex(token, publisher, indexId);\n }\n\n /**\n * @dev Calculates the distribution amount based on the amount of tokens desired to distribute.\n * @param token Super token used with the index.\n * @param publisher Publisher of the index.\n * @param indexId ID of the index.\n * @param amount Amount of tokens desired to distribute.\n * @return actualAmount Amount to be distributed with correct rounding.\n * @return newIndexValue The index value after the distribution would be called.\n */\n function calculateDistribution(ISuperToken token, address publisher, uint32 indexId, uint256 amount)\n internal view\n returns (uint256 actualAmount, uint128 newIndexValue)\n {\n (, IInstantDistributionAgreementV1 ida) = _getHostAndIDA(token);\n return ida.calculateDistribution(token, publisher, indexId, amount);\n }\n\n /**\n * @dev List all subscriptions of an address\n * @param token Super token used in the indexes listed.\n * @param subscriber Subscriber address.\n * @return publishers Publishers of the indices.\n * @return indexIds IDs of the indices.\n * @return unitsList Units owned of the indices.\n */\n function listSubscriptions(\n ISuperToken token,\n address subscriber\n )\n internal view\n returns (\n address[] memory publishers,\n uint32[] memory indexIds,\n uint128[] memory unitsList\n )\n {\n (, IInstantDistributionAgreementV1 ida) = _getHostAndIDA(token);\n return ida.listSubscriptions(token, subscriber);\n }\n\n /**\n * @dev Gets subscription by publisher, index id, and subscriber.\n * @param token Super token used with the index.\n * @param publisher Publisher of the index.\n * @param indexId ID of the index.\n * @param subscriber Subscriber to the index.\n * @return exist True if the subscription exists.\n * @return approved True if the subscription has been approved by the subscriber.\n * @return units Units held by the subscriber\n * @return pendingDistribution If not approved, the amount to be claimed on approval.\n */\n function getSubscription(ISuperToken token, address publisher, uint32 indexId, address subscriber)\n internal view\n returns (bool exist, bool approved, uint128 units, uint256 pendingDistribution)\n {\n (, IInstantDistributionAgreementV1 ida) = _getHostAndIDA(token);\n return ida.getSubscription(token, publisher, indexId, subscriber);\n }\n\n /*\n * @dev Gets subscription by the agreement ID.\n * @param token Super Token used with the index.\n * @param agreementId Agreement ID, unique to the subscriber and index ID.\n * @return publisher Publisher of the index.\n * @return indexId ID of the index.\n * @return approved True if the subscription has been approved by the subscriber.\n * @return units Units held by the subscriber\n * @return pendingDistribution If not approved, the amount to be claimed on approval.\n */\n function getSubscriptionByID(ISuperToken token, bytes32 agreementId)\n internal view\n returns (\n address publisher,\n uint32 indexId,\n bool approved,\n uint128 units,\n uint256 pendingDistribution\n )\n {\n (, IInstantDistributionAgreementV1 ida) = _getHostAndIDA(token);\n return ida.getSubscriptionByID(token, agreementId);\n }\n\n\n /** IDA BASE FUNCTIONS ************************************* */\n\n\n /**\n * @dev Creates a new index.\n * @param token Super Token used with the index.\n * @param indexId ID of the index.\n */\n function createIndex(\n ISuperToken token,\n uint32 indexId\n ) internal returns (bool) {\n (ISuperfluid host, IInstantDistributionAgreementV1 ida) = _getAndCacheHostAndIDA(token);\n host.callAgreement(\n ida,\n abi.encodeCall(\n ida.createIndex,\n (\n token,\n indexId,\n new bytes(0) // ctx placeholder\n )\n ),\n \"0x\"\n );\n return true;\n }\n\n /**\n * @dev Creates a new index with userData.\n * @param token Super Token used with the index.\n * @param indexId ID of the index.\n * @param userData Arbitrary user data field.\n */\n function createIndex(\n ISuperToken token,\n uint32 indexId,\n bytes memory userData\n ) internal returns (bool) {\n (ISuperfluid host, IInstantDistributionAgreementV1 ida) = _getAndCacheHostAndIDA(token);\n host.callAgreement(\n ida,\n abi.encodeCall(\n ida.createIndex,\n (\n token,\n indexId,\n new bytes(0) // ctx placeholder\n )\n ),\n userData\n );\n return true;\n }\n\n /**\n * @dev Updates an index value. This distributes an amount of tokens equal to\n * `indexValue - lastIndexValue`. See `distribute` for another way to distribute.\n * @param token Super Token used with the index.\n * @param indexId ID of the index.\n * @param indexValue New TOTAL index value, this will equal the total amount distributed.\n */\n function updateIndexValue(\n ISuperToken token,\n uint32 indexId,\n uint128 indexValue\n ) internal returns (bool) {\n (ISuperfluid host, IInstantDistributionAgreementV1 ida) = _getAndCacheHostAndIDA(token);\n host.callAgreement(\n ida,\n abi.encodeCall(\n ida.updateIndex,\n (\n token,\n indexId,\n indexValue,\n new bytes(0) // ctx placeholder\n )\n ),\n \"0x\"\n );\n return true;\n }\n\n /**\n * @dev Updates an index value with userData. This distributes an amount of tokens equal to\n * `indexValue - lastIndexValue`. See `distribute` for another way to distribute.\n * @param token Super Token used with the index.\n * @param indexId ID of the index.\n * @param indexValue New TOTAL index value, this will equal the total amount distributed.\n * @param userData Arbitrary user data field.\n */\n function updateIndexValue(\n ISuperToken token,\n uint32 indexId,\n uint128 indexValue,\n bytes memory userData\n ) internal returns (bool) {\n (ISuperfluid host, IInstantDistributionAgreementV1 ida) = _getAndCacheHostAndIDA(token);\n host.callAgreement(\n ida,\n abi.encodeCall(\n ida.updateIndex,\n (\n token,\n indexId,\n indexValue,\n new bytes(0) // ctx placeholder\n )\n ),\n userData\n );\n return true;\n }\n\n /**\n * @dev Distributes tokens in a more developer friendly way than `updateIndex`. Instead of\n * passing the new total index value, this function will increase the index value by `amount`.\n * @param token Super Token used with the index.\n * @param indexId ID of the index.\n * @param amount Amount by which the index value should increase.\n */\n function distribute(\n ISuperToken token,\n uint32 indexId,\n uint256 amount\n ) internal returns (bool) {\n (ISuperfluid host, IInstantDistributionAgreementV1 ida) = _getAndCacheHostAndIDA(token);\n host.callAgreement(\n ida,\n abi.encodeCall(\n ida.distribute,\n (\n token,\n indexId,\n amount,\n new bytes(0) // ctx placeholder\n )\n ),\n \"0x\"\n );\n return true;\n }\n\n /**\n * @dev Distributes tokens in a more developer friendly way than `updateIndex` (w user data). Instead of\n * passing the new total index value, this function will increase the index value by `amount`.\n * This takes arbitrary user data.\n * @param token Super Token used with the index.\n * @param indexId ID of the index.\n * @param amount Amount by which the index value should increase.\n * @param userData Arbitrary user data field.\n */\n function distribute(\n ISuperToken token,\n uint32 indexId,\n uint256 amount,\n bytes memory userData\n ) internal returns (bool) {\n (ISuperfluid host, IInstantDistributionAgreementV1 ida) = _getAndCacheHostAndIDA(token);\n host.callAgreement(\n ida,\n abi.encodeCall(\n ida.distribute,\n (\n token,\n indexId,\n amount,\n new bytes(0) // ctx placeholder\n )\n ),\n userData\n );\n return true;\n }\n\n /**\n * @dev Approves a subscription to an index. The subscriber's real time balance will not update\n * until the subscription is approved, but once approved, the balance will be updated with\n * prior distributions.\n * @param token Super Token used with the index.\n * @param publisher Publisher of the index.\n * @param indexId ID of the index.\n */\n function approveSubscription(\n ISuperToken token,\n address publisher,\n uint32 indexId\n ) internal returns (bool) {\n (ISuperfluid host, IInstantDistributionAgreementV1 ida) = _getAndCacheHostAndIDA(token);\n host.callAgreement(\n ida,\n abi.encodeCall(\n ida.approveSubscription,\n (\n token,\n publisher,\n indexId,\n new bytes(0) // ctx placeholder\n )\n ),\n \"0x\"\n );\n return true;\n }\n\n /**\n * @dev Approves a subscription to an index with user data. The subscriber's real time balance will not update\n * until the subscription is approved, but once approved, the balance will be updated with\n * prior distributions.\n * @param token Super Token used with the index.\n * @param publisher Publisher of the index.\n * @param indexId ID of the index.\n * @param userData Arbitrary user data field.\n */\n function approveSubscription(\n ISuperToken token,\n address publisher,\n uint32 indexId,\n bytes memory userData\n ) internal returns (bool) {\n (ISuperfluid host, IInstantDistributionAgreementV1 ida) = _getAndCacheHostAndIDA(token);\n host.callAgreement(\n ida,\n abi.encodeCall(\n ida.approveSubscription,\n (\n token,\n publisher,\n indexId,\n new bytes(0) // ctx placeholder\n )\n ),\n userData\n );\n return true;\n }\n\n /**\n * @dev Revokes a previously approved subscription.\n * @param token Super Token used with the index.\n * @param publisher Publisher of the index.\n * @param indexId ID of the index.\n */\n function revokeSubscription(\n ISuperToken token,\n address publisher,\n uint32 indexId\n ) internal returns (bool) {\n (ISuperfluid host, IInstantDistributionAgreementV1 ida) = _getAndCacheHostAndIDA(token);\n host.callAgreement(\n ida,\n abi.encodeCall(\n ida.revokeSubscription,\n (\n token,\n publisher,\n indexId,\n new bytes(0) // ctx placeholder\n )\n ),\n \"0x\"\n );\n return true;\n }\n\n /**\n * @dev Revokes a previously approved subscription. This takes arbitrary user data.\n * @param token Super Token used with the index.\n * @param publisher Publisher of the index.\n * @param indexId ID of the index.\n * @param userData Arbitrary user data field.\n */\n function revokeSubscription(\n ISuperToken token,\n address publisher,\n uint32 indexId,\n bytes memory userData\n ) internal returns (bool) {\n (ISuperfluid host, IInstantDistributionAgreementV1 ida) = _getAndCacheHostAndIDA(token);\n host.callAgreement(\n ida,\n abi.encodeCall(\n ida.revokeSubscription,\n (\n token,\n publisher,\n indexId,\n new bytes(0) // ctx placeholder\n )\n ),\n userData\n );\n return true;\n }\n\n /**\n * @dev Updates the units of a subscription. This changes the number of shares the subscriber holds\n * @param token Super Token used with the index.\n * @param indexId ID of the index.\n * @param subscriber Subscriber address whose units are to be updated.\n * @param units New number of units the subscriber holds.\n */\n function updateSubscriptionUnits(\n ISuperToken token,\n uint32 indexId,\n address subscriber,\n uint128 units\n ) internal returns (bool) {\n (ISuperfluid host, IInstantDistributionAgreementV1 ida) = _getAndCacheHostAndIDA(token);\n host.callAgreement(\n ida,\n abi.encodeCall(\n ida.updateSubscription,\n (\n token,\n indexId,\n subscriber,\n units,\n new bytes(0) // ctx placeholder\n )\n ),\n \"0x\"\n );\n return true;\n }\n\n /**\n * @dev Updates the units of a subscription. This changes the number of shares the subscriber\n * holds. This takes arbitrary user data.\n * @param token Super Token used with the index.\n * @param indexId ID of the index.\n * @param subscriber Subscriber address whose units are to be updated.\n * @param units New number of units the subscriber holds.\n * @param userData Arbitrary user data field.\n */\n function updateSubscriptionUnits(\n ISuperToken token,\n uint32 indexId,\n address subscriber,\n uint128 units,\n bytes memory userData\n ) internal returns (bool) {\n (ISuperfluid host, IInstantDistributionAgreementV1 ida) = _getAndCacheHostAndIDA(token);\n host.callAgreement(\n ida,\n abi.encodeCall(\n ida.updateSubscription,\n (\n token,\n indexId,\n subscriber,\n units,\n new bytes(0) // ctx placeholder\n )\n ),\n userData\n );\n return true;\n }\n\n /**\n * @dev Deletes a subscription, setting a subcriber's units to zero\n * @param token Super Token used with the index.\n * @param publisher Publisher of the index.\n * @param indexId ID of the index.\n * @param subscriber Subscriber address whose units are to be deleted.\n */\n function deleteSubscription(\n ISuperToken token,\n address publisher,\n uint32 indexId,\n address subscriber\n ) internal returns (bool) {\n (ISuperfluid host, IInstantDistributionAgreementV1 ida) = _getAndCacheHostAndIDA(token);\n host.callAgreement(\n ida,\n abi.encodeCall(\n ida.deleteSubscription,\n (\n token,\n publisher,\n indexId,\n subscriber,\n new bytes(0) // ctx placeholder\n )\n ),\n \"0x\"\n );\n return true;\n }\n\n /**\n * @dev Deletes a subscription, setting a subcriber's units to zero. This takes arbitrary userdata.\n * @param token Super Token used with the index.\n * @param publisher Publisher of the index.\n * @param indexId ID of the index.\n * @param subscriber Subscriber address whose units are to be deleted.\n * @param userData Arbitrary user data field.\n */\n function deleteSubscription(\n ISuperToken token,\n address publisher,\n uint32 indexId,\n address subscriber,\n bytes memory userData\n ) internal returns (bool) {\n (ISuperfluid host, IInstantDistributionAgreementV1 ida) = _getAndCacheHostAndIDA(token);\n host.callAgreement(\n ida,\n abi.encodeCall(\n ida.deleteSubscription,\n (\n token,\n publisher,\n indexId,\n subscriber,\n new bytes(0) // ctx placeholder\n )\n ),\n userData\n );\n return true;\n }\n\n /**\n * @dev Claims pending distribution. Subscription should not be approved\n * @param token Super Token used with the index.\n * @param publisher Publisher of the index.\n * @param indexId ID of the index.\n * @param subscriber Subscriber address that receives the claim.\n */\n function claim(\n ISuperToken token,\n address publisher,\n uint32 indexId,\n address subscriber\n ) internal returns (bool) {\n (ISuperfluid host, IInstantDistributionAgreementV1 ida) = _getAndCacheHostAndIDA(token);\n host.callAgreement(\n ida,\n abi.encodeCall(\n ida.claim,\n (\n token,\n publisher,\n indexId,\n subscriber,\n new bytes(0) // ctx placeholder\n )\n ),\n \"0x\"\n );\n return true;\n }\n\n /**\n * @dev Claims pending distribution. Subscription should not be approved. This takes arbitrary user data.\n * @param token Super Token used with the index.\n * @param publisher Publisher of the index.\n * @param indexId ID of the index.\n * @param subscriber Subscriber address that receives the claim.\n * @param userData Arbitrary user data field.\n */\n function claim(\n ISuperToken token,\n address publisher,\n uint32 indexId,\n address subscriber,\n bytes memory userData\n ) internal returns (bool) {\n (ISuperfluid host, IInstantDistributionAgreementV1 ida) = _getAndCacheHostAndIDA(token);\n host.callAgreement(\n ida,\n abi.encodeCall(\n ida.claim,\n (\n token,\n publisher,\n indexId,\n subscriber,\n new bytes(0) // ctx placeholder\n )\n ),\n userData\n );\n return true;\n }\n\n /** IDA WITH CTX FUNCTIONS ************************************* */\n\n /**\n * @dev Creates a new index with ctx.\n * Meant for usage in super app callbacks\n * @param token Super Token used with the index.\n * @param indexId ID of the index.\n * @param ctx from super app callback\n */\n function createIndexWithCtx(\n ISuperToken token,\n uint32 indexId,\n bytes memory ctx\n ) internal returns (bytes memory newCtx) {\n (ISuperfluid host, IInstantDistributionAgreementV1 ida) = _getAndCacheHostAndIDA(token);\n (newCtx, ) = host.callAgreementWithContext(\n ida,\n abi.encodeCall(\n ida.createIndex,\n (\n token,\n indexId,\n new bytes(0) // ctx placeholder\n )\n ),\n \"0x\",\n ctx\n );\n }\n\n /**\n * @dev Updates an index value with ctx. This distributes an amount of tokens equal to\n * `indexValue - lastIndexValue`. See `distribute` for another way to distribute.\n * Meant for usage in super app callbakcs\n * @param token Super Token used with the index.\n * @param indexId ID of the index.\n * @param indexValue New TOTAL index value, this will equal the total amount distributed.\n * @param ctx from super app callback\n */\n function updateIndexValueWithCtx(\n ISuperToken token,\n uint32 indexId,\n uint128 indexValue,\n bytes memory ctx\n ) internal returns (bytes memory newCtx) {\n (ISuperfluid host, IInstantDistributionAgreementV1 ida) = _getAndCacheHostAndIDA(token);\n (newCtx, ) = host.callAgreementWithContext(\n ida,\n abi.encodeCall(\n ida.updateIndex,\n (\n token,\n indexId,\n indexValue,\n new bytes(0) // ctx placeholder\n )\n ),\n \"0x\",\n ctx\n );\n }\n\n /**\n * @dev Distributes tokens in a more developer friendly way than `updateIndex`.Instead of\n * passing the new total index value, this function will increase the index value by `amount`.\n * @param token Super Token used with the index.\n * @param indexId ID of the index.\n * @param amount Amount by which the index value should increase.\n * @param ctx from super app callback\n */\n function distributeWithCtx(\n ISuperToken token,\n uint32 indexId,\n uint256 amount,\n bytes memory ctx\n ) internal returns (bytes memory newCtx) {\n (ISuperfluid host, IInstantDistributionAgreementV1 ida) = _getAndCacheHostAndIDA(token);\n (newCtx, ) = host.callAgreementWithContext(\n ida,\n abi.encodeCall(\n ida.distribute,\n (\n token,\n indexId,\n amount,\n new bytes(0) // ctx placeholder\n )\n ),\n \"0x\",\n ctx\n );\n }\n\n /**\n * @dev Approves a subscription to an index. The subscriber's real time balance will not update\n * until the subscription is approved, but once approved, the balance will be updated with\n * prior distributions.\n * @param token Super Token used with the index.\n * @param publisher Publisher of the index.\n * @param indexId ID of the index.\n * @param ctx from super app callback\n */\n function approveSubscriptionWithCtx(\n ISuperToken token,\n address publisher,\n uint32 indexId,\n bytes memory ctx\n ) internal returns (bytes memory newCtx) {\n (ISuperfluid host, IInstantDistributionAgreementV1 ida) = _getAndCacheHostAndIDA(token);\n (newCtx, ) = host.callAgreementWithContext(\n ida,\n abi.encodeCall(\n ida.approveSubscription,\n (\n token,\n publisher,\n indexId,\n new bytes(0) // ctx placeholder\n )\n ),\n \"0x\",\n ctx\n );\n }\n\n /**\n * @dev Revokes a previously approved subscription. Meant for usage in super apps\n * @param token Super Token used with the index.\n * @param publisher Publisher of the index.\n * @param indexId ID of the index.\n * @param ctx from super app callback\n */\n function revokeSubscriptionWithCtx(\n ISuperToken token,\n address publisher,\n uint32 indexId,\n bytes memory ctx\n ) internal returns (bytes memory newCtx) {\n (ISuperfluid host, IInstantDistributionAgreementV1 ida) = _getAndCacheHostAndIDA(token);\n (newCtx, ) = host.callAgreementWithContext(\n ida,\n abi.encodeCall(\n ida.revokeSubscription,\n (\n token,\n publisher,\n indexId,\n new bytes(0) // ctx placeholder\n )\n ),\n \"0x\",\n ctx\n );\n }\n\n /**\n * @dev Updates the units of a subscription. This changes the number of shares the subscriber\n * holds. Meant for usage in super apps\n * @param token Super Token used with the index.\n * @param indexId ID of the index.\n * @param subscriber Subscriber address whose units are to be updated.\n * @param units New number of units the subscriber holds.\n * @param ctx from super app callback\n */\n function updateSubscriptionUnitsWithCtx(\n ISuperToken token,\n uint32 indexId,\n address subscriber,\n uint128 units,\n bytes memory ctx\n ) internal returns (bytes memory newCtx) {\n (ISuperfluid host, IInstantDistributionAgreementV1 ida) = _getAndCacheHostAndIDA(token);\n (newCtx, ) = host.callAgreementWithContext(\n ida,\n abi.encodeCall(\n ida.updateSubscription,\n (\n token,\n indexId,\n subscriber,\n units,\n new bytes(0) // ctx placeholder\n )\n ),\n \"0x\",\n ctx\n );\n }\n\n /**\n * @dev Deletes a subscription, setting a subcriber's units to zero.\n * Meant for usage in super apps\n * @param token Super Token used with the index.\n * @param publisher Publisher of the index.\n * @param indexId ID of the index.\n * @param subscriber Subscriber address whose units are to be deleted.\n * @param ctx from super app callback\n */\n function deleteSubscriptionWithCtx(\n ISuperToken token,\n address publisher,\n uint32 indexId,\n address subscriber,\n bytes memory ctx\n ) internal returns (bytes memory newCtx) {\n (ISuperfluid host, IInstantDistributionAgreementV1 ida) = _getAndCacheHostAndIDA(token);\n (newCtx, ) = host.callAgreementWithContext(\n ida,\n abi.encodeCall(\n ida.deleteSubscription,\n (\n token,\n publisher,\n indexId,\n subscriber,\n new bytes(0) // ctx placeholder\n )\n ),\n \"0x\",\n ctx\n );\n }\n\n /**\n * @dev Claims pending distribution. Subscription should not be approved.\n * Meant for usage in super app callbacks\n * @param token Super Token used with the index.\n * @param publisher Publisher of the index.\n * @param indexId ID of the index.\n * @param subscriber Subscriber address that receives the claim.\n * @param ctx from super app callback\n */\n function claimWithCtx(\n ISuperToken token,\n address publisher,\n uint32 indexId,\n address subscriber,\n bytes memory ctx\n ) internal returns (bytes memory newCtx) {\n (ISuperfluid host, IInstantDistributionAgreementV1 ida) = _getAndCacheHostAndIDA(token);\n (newCtx, ) = host.callAgreementWithContext(\n ida,\n abi.encodeCall(\n ida.claim,\n (\n token,\n publisher,\n indexId,\n subscriber,\n new bytes(0) // ctx placeholder\n )\n ),\n \"0x\",\n ctx\n );\n }\n\n // ************** private helpers **************\n\n // keccak256(\"org.superfluid-finance.apps.SuperTokenLibrary.v1.host\")\n bytes32 private constant _HOST_SLOT = 0x65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea837;\n // keccak256(\"org.superfluid-finance.apps.SuperTokenLibrary.v1.cfa\")\n bytes32 private constant _CFA_SLOT = 0xb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a;\n // keccak256(\"org.superfluid-finance.apps.SuperTokenLibrary.v1.ida\");\n bytes32 private constant _IDA_SLOT = 0xa832ee1924ea960211af2df07d65d166232018f613ac6708043cd8f8773eddeb;\n\n // gets the host and cfa addrs for the token and caches it in storage for gas efficiency\n // to be used in state changing methods\n function _getAndCacheHostAndCFA(ISuperToken token) private\n returns(ISuperfluid host, IConstantFlowAgreementV1 cfa)\n {\n // check if already in contract storage...\n assembly { // solium-disable-line\n host := sload(_HOST_SLOT)\n cfa := sload(_CFA_SLOT)\n }\n if (address(cfa) == address(0)) {\n // framework contract addrs not yet cached, retrieving now...\n if (address(host) == address(0)) {\n host = ISuperfluid(token.getHost());\n }\n cfa = IConstantFlowAgreementV1(address(ISuperfluid(host).getAgreementClass(\n //keccak256(\"org.superfluid-finance.agreements.ConstantFlowAgreement.v1\")\n 0xa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd3)));\n // now that we got them and are in a transaction context, persist in storage\n assembly {\n // solium-disable-line\n sstore(_HOST_SLOT, host)\n sstore(_CFA_SLOT, cfa)\n }\n }\n assert(address(host) != address(0));\n assert(address(cfa) != address(0));\n }\n\n // gets the host and ida addrs for the token and caches it in storage for gas efficiency\n // to be used in state changing methods\n function _getAndCacheHostAndIDA(ISuperToken token) private\n returns(ISuperfluid host, IInstantDistributionAgreementV1 ida)\n {\n // check if already in contract storage...\n assembly { // solium-disable-line\n host := sload(_HOST_SLOT)\n ida := sload(_IDA_SLOT)\n }\n if (address(ida) == address(0)) {\n // framework contract addrs not yet cached, retrieving now...\n if (address(host) == address(0)) {\n host = ISuperfluid(token.getHost());\n }\n ida = IInstantDistributionAgreementV1(address(ISuperfluid(host).getAgreementClass(\n keccak256(\"org.superfluid-finance.agreements.InstantDistributionAgreement.v1\"))));\n // now that we got them and are in a transaction context, persist in storage\n assembly {\n // solium-disable-line\n sstore(_HOST_SLOT, host)\n sstore(_IDA_SLOT, ida)\n }\n }\n assert(address(host) != address(0));\n assert(address(ida) != address(0));\n }\n\n // gets the host and cfa addrs for the token\n // to be used in non-state changing methods (view functions)\n function _getHostAndCFA(ISuperToken token) private view\n returns(ISuperfluid host, IConstantFlowAgreementV1 cfa)\n {\n // check if already in contract storage...\n assembly { // solium-disable-line\n host := sload(_HOST_SLOT)\n cfa := sload(_CFA_SLOT)\n }\n if (address(cfa) == address(0)) {\n // framework contract addrs not yet cached in storage, retrieving now...\n if (address(host) == address(0)) {\n host = ISuperfluid(token.getHost());\n }\n cfa = IConstantFlowAgreementV1(address(ISuperfluid(host).getAgreementClass(\n //keccak256(\"org.superfluid-finance.agreements.ConstantFlowAgreement.v1\")\n 0xa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd3)));\n }\n assert(address(host) != address(0));\n assert(address(cfa) != address(0));\n }\n\n // gets the host and ida addrs for the token\n // to be used in non-state changing methods (view functions)\n function _getHostAndIDA(ISuperToken token) private view\n returns(ISuperfluid host, IInstantDistributionAgreementV1 ida)\n {\n // check if already in contract storage...\n assembly { // solium-disable-line\n host := sload(_HOST_SLOT)\n ida := sload(_IDA_SLOT)\n }\n if (address(ida) == address(0)) {\n // framework contract addrs not yet cached in storage, retrieving now...\n if (address(host) == address(0)) {\n host = ISuperfluid(token.getHost());\n }\n ida = IInstantDistributionAgreementV1(address(ISuperfluid(host).getAgreementClass(\n //keccak256(\"org.superfluid-finance.agreements.InstantDistributionAgreement.v1\")\n 0x15609310ae3c30189a1218b7adabaf36c267255e70cf91b6cba384367d9eda32)));\n }\n assert(address(host) != address(0));\n assert(address(ida) != address(0));\n }\n}\n"},"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol":{"content":"// SPDX-License-Identifier: AGPLv3\npragma solidity >= 0.8.4;\n\nimport { ISuperAgreement } from \"../superfluid/ISuperAgreement.sol\";\nimport { ISuperfluidToken } from \"../superfluid/ISuperfluidToken.sol\";\n\n/**\n * @title Constant Flow Agreement interface\n * @author Superfluid\n */\nabstract contract IConstantFlowAgreementV1 is ISuperAgreement {\n\n /**************************************************************************\n * Errors\n *************************************************************************/\n error CFA_ACL_NO_SENDER_CREATE(); // 0x4b993136\n error CFA_ACL_NO_SENDER_UPDATE(); // 0xedfa0d3b\n error CFA_ACL_OPERATOR_NO_CREATE_PERMISSIONS(); // 0xa3eab6ac\n error CFA_ACL_OPERATOR_NO_UPDATE_PERMISSIONS(); // 0xac434b5f\n error CFA_ACL_OPERATOR_NO_DELETE_PERMISSIONS(); // 0xe30f1bff\n error CFA_ACL_FLOW_RATE_ALLOWANCE_EXCEEDED(); // 0xa0645c1f\n error CFA_ACL_UNCLEAN_PERMISSIONS(); // 0x7939d66c\n error CFA_ACL_NO_SENDER_FLOW_OPERATOR(); // 0xb0ed394d\n error CFA_ACL_NO_NEGATIVE_ALLOWANCE(); // 0x86e0377d\n error CFA_FLOW_ALREADY_EXISTS(); // 0x801b6863\n error CFA_FLOW_DOES_NOT_EXIST(); // 0x5a32bf24\n error CFA_INSUFFICIENT_BALANCE(); // 0xea76c9b3\n error CFA_ZERO_ADDRESS_SENDER(); // 0x1ce9b067\n error CFA_ZERO_ADDRESS_RECEIVER(); // 0x78e02b2a\n error CFA_HOOK_OUT_OF_GAS(); // 0x9f76430b\n error CFA_DEPOSIT_TOO_BIG(); // 0x752c2b9c\n error CFA_FLOW_RATE_TOO_BIG(); // 0x0c9c55c1\n error CFA_NON_CRITICAL_SENDER(); // 0xce11b5d1\n error CFA_INVALID_FLOW_RATE(); // 0x91acad16\n error CFA_NO_SELF_FLOW(); // 0xa47338ef\n\n /// @dev ISuperAgreement.agreementType implementation\n function agreementType() external override pure returns (bytes32) {\n return keccak256(\"org.superfluid-finance.agreements.ConstantFlowAgreement.v1\");\n }\n\n /**\n * @notice Get the maximum flow rate allowed with the deposit\n * @dev The deposit is clipped and rounded down\n * @param deposit Deposit amount used for creating the flow\n * @return flowRate The maximum flow rate\n */\n function getMaximumFlowRateFromDeposit(\n ISuperfluidToken token,\n uint256 deposit)\n external view virtual\n returns (int96 flowRate);\n\n /**\n * @notice Get the deposit required for creating the flow\n * @dev Calculates the deposit based on the liquidationPeriod and flowRate\n * @param flowRate Flow rate to be tested\n * @return deposit The deposit amount based on flowRate and liquidationPeriod\n * @custom:note \n * - if calculated deposit (flowRate * liquidationPeriod) is less\n * than the minimum deposit, we use the minimum deposit otherwise\n * we use the calculated deposit\n */\n function getDepositRequiredForFlowRate(\n ISuperfluidToken token,\n int96 flowRate)\n external view virtual\n returns (uint256 deposit);\n\n /**\n * @dev Returns whether it is the patrician period based on host.getNow()\n * @param account The account we are interested in\n * @return isCurrentlyPatricianPeriod Whether it is currently the patrician period dictated by governance\n * @return timestamp The value of host.getNow()\n */\n function isPatricianPeriodNow(\n ISuperfluidToken token,\n address account)\n external view virtual\n returns (bool isCurrentlyPatricianPeriod, uint256 timestamp);\n\n /**\n * @dev Returns whether it is the patrician period based on timestamp\n * @param account The account we are interested in\n * @param timestamp The timestamp we are interested in observing the result of isPatricianPeriod\n * @return bool Whether it is currently the patrician period dictated by governance\n */\n function isPatricianPeriod(\n ISuperfluidToken token,\n address account,\n uint256 timestamp\n )\n public view virtual\n returns (bool);\n\n /**\n * @dev msgSender from `ctx` updates permissions for the `flowOperator` with `flowRateAllowance`\n * @param token Super token address\n * @param flowOperator The permission grantee address\n * @param permissions A bitmask representation of the granted permissions\n * @param flowRateAllowance The flow rate allowance the `flowOperator` is granted (only goes down)\n * @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n */\n function updateFlowOperatorPermissions(\n ISuperfluidToken token,\n address flowOperator,\n uint8 permissions,\n int96 flowRateAllowance,\n bytes calldata ctx\n ) \n external virtual\n returns(bytes memory newCtx);\n\n /**\n * @notice msgSender from `ctx` increases flow rate allowance for the `flowOperator` by `addedFlowRateAllowance`\n * @dev if `addedFlowRateAllowance` is negative, we revert with CFA_ACL_NO_NEGATIVE_ALLOWANCE\n * @param token Super token address\n * @param flowOperator The permission grantee address\n * @param addedFlowRateAllowance The flow rate allowance delta\n * @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n * @return newCtx The new context bytes\n */\n function increaseFlowRateAllowance(\n ISuperfluidToken token,\n address flowOperator,\n int96 addedFlowRateAllowance,\n bytes calldata ctx\n ) external virtual returns(bytes memory newCtx);\n\n /**\n * @dev msgSender from `ctx` decreases flow rate allowance for the `flowOperator` by `subtractedFlowRateAllowance`\n * @dev if `subtractedFlowRateAllowance` is negative, we revert with CFA_ACL_NO_NEGATIVE_ALLOWANCE\n * @param token Super token address\n * @param flowOperator The permission grantee address\n * @param subtractedFlowRateAllowance The flow rate allowance delta\n * @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n * @return newCtx The new context bytes\n */\n function decreaseFlowRateAllowance(\n ISuperfluidToken token,\n address flowOperator,\n int96 subtractedFlowRateAllowance,\n bytes calldata ctx\n ) external virtual returns(bytes memory newCtx);\n\n /**\n * @dev msgSender from `ctx` grants `flowOperator` all permissions with flowRateAllowance as type(int96).max\n * @param token Super token address\n * @param flowOperator The permission grantee address\n * @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n */\n function authorizeFlowOperatorWithFullControl(\n ISuperfluidToken token,\n address flowOperator,\n bytes calldata ctx\n )\n external virtual\n returns(bytes memory newCtx);\n\n /**\n * @notice msgSender from `ctx` revokes `flowOperator` create/update/delete permissions\n * @dev `permissions` and `flowRateAllowance` will both be set to 0\n * @param token Super token address\n * @param flowOperator The permission grantee address\n * @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n */\n function revokeFlowOperatorWithFullControl(\n ISuperfluidToken token,\n address flowOperator,\n bytes calldata ctx\n )\n external virtual\n returns(bytes memory newCtx);\n\n /**\n * @notice Get the permissions of a flow operator between `sender` and `flowOperator` for `token`\n * @param token Super token address\n * @param sender The permission granter address\n * @param flowOperator The permission grantee address\n * @return flowOperatorId The keccak256 hash of encoded string \"flowOperator\", sender and flowOperator\n * @return permissions A bitmask representation of the granted permissions\n * @return flowRateAllowance The flow rate allowance the `flowOperator` is granted (only goes down)\n */\n function getFlowOperatorData(\n ISuperfluidToken token,\n address sender,\n address flowOperator\n )\n public view virtual\n returns (\n bytes32 flowOperatorId,\n uint8 permissions,\n int96 flowRateAllowance\n );\n\n /**\n * @notice Get flow operator using flowOperatorId\n * @param token Super token address\n * @param flowOperatorId The keccak256 hash of encoded string \"flowOperator\", sender and flowOperator\n * @return permissions A bitmask representation of the granted permissions\n * @return flowRateAllowance The flow rate allowance the `flowOperator` is granted (only goes down)\n */\n function getFlowOperatorDataByID(\n ISuperfluidToken token,\n bytes32 flowOperatorId\n )\n external view virtual\n returns (\n uint8 permissions,\n int96 flowRateAllowance\n );\n\n /**\n * @notice Create a flow betwen ctx.msgSender and receiver\n * @dev flowId (agreementId) is the keccak256 hash of encoded sender and receiver\n * @param token Super token address\n * @param receiver Flow receiver address\n * @param flowRate New flow rate in amount per second\n * @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n *\n * @custom:callbacks \n * - AgreementCreated\n * - agreementId - can be used in getFlowByID\n * - agreementData - abi.encode(address flowSender, address flowReceiver)\n *\n * @custom:note \n * - A deposit is taken as safety margin for the solvency agents\n * - A extra gas fee may be taken to pay for solvency agent liquidations\n */\n function createFlow(\n ISuperfluidToken token,\n address receiver,\n int96 flowRate,\n bytes calldata ctx\n )\n external virtual\n returns(bytes memory newCtx);\n\n /**\n * @notice Create a flow between sender and receiver\n * @dev A flow created by an approved flow operator (see above for details on callbacks)\n * @param token Super token address\n * @param sender Flow sender address (has granted permissions)\n * @param receiver Flow receiver address\n * @param flowRate New flow rate in amount per second\n * @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n */\n function createFlowByOperator(\n ISuperfluidToken token,\n address sender,\n address receiver,\n int96 flowRate,\n bytes calldata ctx\n )\n external virtual\n returns(bytes memory newCtx);\n\n /**\n * @notice Update the flow rate between ctx.msgSender and receiver\n * @dev flowId (agreementId) is the keccak256 hash of encoded sender and receiver\n * @param token Super token address\n * @param receiver Flow receiver address\n * @param flowRate New flow rate in amount per second\n * @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n *\n * @custom:callbacks \n * - AgreementUpdated\n * - agreementId - can be used in getFlowByID\n * - agreementData - abi.encode(address flowSender, address flowReceiver)\n *\n * @custom:note \n * - Only the flow sender may update the flow rate\n * - Even if the flow rate is zero, the flow is not deleted\n * from the system\n * - Deposit amount will be adjusted accordingly\n * - No new gas fee is charged\n */\n function updateFlow(\n ISuperfluidToken token,\n address receiver,\n int96 flowRate,\n bytes calldata ctx\n )\n external virtual\n returns(bytes memory newCtx);\n\n /**\n * @notice Update a flow between sender and receiver\n * @dev A flow updated by an approved flow operator (see above for details on callbacks)\n * @param token Super token address\n * @param sender Flow sender address (has granted permissions)\n * @param receiver Flow receiver address\n * @param flowRate New flow rate in amount per second\n * @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n */\n function updateFlowByOperator(\n ISuperfluidToken token,\n address sender,\n address receiver,\n int96 flowRate,\n bytes calldata ctx\n )\n external virtual\n returns(bytes memory newCtx);\n\n /**\n * @dev Get the flow data between `sender` and `receiver` of `token`\n * @param token Super token address\n * @param sender Flow receiver\n * @param receiver Flow sender\n * @return timestamp Timestamp of when the flow is updated\n * @return flowRate The flow rate\n * @return deposit The amount of deposit the flow\n * @return owedDeposit The amount of owed deposit of the flow\n */\n function getFlow(\n ISuperfluidToken token,\n address sender,\n address receiver\n )\n external view virtual\n returns (\n uint256 timestamp,\n int96 flowRate,\n uint256 deposit,\n uint256 owedDeposit\n );\n\n /**\n * @notice Get flow data using agreementId\n * @dev flowId (agreementId) is the keccak256 hash of encoded sender and receiver\n * @param token Super token address\n * @param agreementId The agreement ID\n * @return timestamp Timestamp of when the flow is updated\n * @return flowRate The flow rate\n * @return deposit The deposit amount of the flow\n * @return owedDeposit The owed deposit amount of the flow\n */\n function getFlowByID(\n ISuperfluidToken token,\n bytes32 agreementId\n )\n external view virtual\n returns (\n uint256 timestamp,\n int96 flowRate,\n uint256 deposit,\n uint256 owedDeposit\n );\n\n /**\n * @dev Get the aggregated flow info of the account\n * @param token Super token address\n * @param account Account for the query\n * @return timestamp Timestamp of when a flow was last updated for account\n * @return flowRate The net flow rate of token for account\n * @return deposit The sum of all deposits for account's flows\n * @return owedDeposit The sum of all owed deposits for account's flows\n */\n function getAccountFlowInfo(\n ISuperfluidToken token,\n address account\n )\n external view virtual\n returns (\n uint256 timestamp,\n int96 flowRate,\n uint256 deposit,\n uint256 owedDeposit);\n\n /**\n * @dev Get the net flow rate of the account\n * @param token Super token address\n * @param account Account for the query\n * @return flowRate Net flow rate\n */\n function getNetFlow(\n ISuperfluidToken token,\n address account\n )\n external view virtual\n returns (int96 flowRate);\n\n /**\n * @notice Delete the flow between sender and receiver\n * @dev flowId (agreementId) is the keccak256 hash of encoded sender and receiver\n * @param token Super token address\n * @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n * @param receiver Flow receiver address\n *\n * @custom:callbacks \n * - AgreementTerminated\n * - agreementId - can be used in getFlowByID\n * - agreementData - abi.encode(address flowSender, address flowReceiver)\n *\n * @custom:note \n * - Both flow sender and receiver may delete the flow\n * - If Sender account is insolvent or in critical state, a solvency agent may\n * also terminate the agreement\n * - Gas fee may be returned to the sender\n */\n function deleteFlow(\n ISuperfluidToken token,\n address sender,\n address receiver,\n bytes calldata ctx\n )\n external virtual\n returns(bytes memory newCtx);\n\n /**\n * @notice Delete the flow between sender and receiver\n * @dev A flow deleted by an approved flow operator (see above for details on callbacks)\n * @param token Super token address\n * @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n * @param receiver Flow receiver address\n */\n function deleteFlowByOperator(\n ISuperfluidToken token,\n address sender,\n address receiver,\n bytes calldata ctx\n )\n external virtual\n returns(bytes memory newCtx);\n \n /**\n * @dev Flow operator updated event\n * @param token Super token address\n * @param sender Flow sender address\n * @param flowOperator Flow operator address\n * @param permissions Octo bitmask representation of permissions\n * @param flowRateAllowance The flow rate allowance the `flowOperator` is granted (only goes down)\n */\n event FlowOperatorUpdated(\n ISuperfluidToken indexed token,\n address indexed sender,\n address indexed flowOperator,\n uint8 permissions,\n int96 flowRateAllowance\n );\n\n /**\n * @dev Flow updated event\n * @param token Super token address\n * @param sender Flow sender address\n * @param receiver Flow recipient address\n * @param flowRate Flow rate in amount per second for this flow\n * @param totalSenderFlowRate Total flow rate in amount per second for the sender\n * @param totalReceiverFlowRate Total flow rate in amount per second for the receiver\n * @param userData The user provided data\n *\n */\n event FlowUpdated(\n ISuperfluidToken indexed token,\n address indexed sender,\n address indexed receiver,\n int96 flowRate,\n int256 totalSenderFlowRate,\n int256 totalReceiverFlowRate,\n bytes userData\n );\n\n /**\n * @dev Flow updated extension event\n * @param flowOperator Flow operator address - the Context.msgSender\n * @param deposit The deposit amount for the stream\n */\n event FlowUpdatedExtension(\n address indexed flowOperator,\n uint256 deposit\n );\n}\n"},"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IInstantDistributionAgreementV1.sol":{"content":"// SPDX-License-Identifier: AGPLv3\npragma solidity >= 0.8.4;\n\nimport { ISuperAgreement } from \"../superfluid/ISuperAgreement.sol\";\nimport { ISuperfluidToken } from \"../superfluid/ISuperfluidToken.sol\";\n\n\n/**\n * @title Instant Distribution Agreement interface\n * @author Superfluid\n *\n * @notice \n * - A publisher can create as many as indices as possibly identifiable with `indexId`.\n * - `indexId` is deliberately limited to 32 bits, to avoid the chance for sha-3 collision.\n * Despite knowing sha-3 collision is only theoretical.\n * - A publisher can create a subscription to an index for any subscriber.\n * - A subscription consists of:\n * - The index it subscribes to.\n * - Number of units subscribed.\n * - An index consists of:\n * - Current value as `uint128 indexValue`.\n * - Total units of the approved subscriptions as `uint128 totalUnitsApproved`.\n * - Total units of the non approved subscription as `uint128 totalUnitsPending`.\n * - A publisher can update an index with a new value that doesn't decrease.\n * - A publisher can update a subscription with any number of units.\n * - A publisher or a subscriber can delete a subscription and reset its units to zero.\n * - A subscriber must approve the index in order to receive distributions from the publisher\n * each time the index is updated.\n * - The amount distributed is $$\\Delta{index} * units$$\n * - Distributions to a non approved subscription stays in the publisher's deposit until:\n * - the subscriber approves the subscription (side effect),\n * - the publisher updates the subscription (side effect),\n * - the subscriber deletes the subscription even if it is never approved (side effect),\n * - or the subscriber can explicitly claim them.\n */\nabstract contract IInstantDistributionAgreementV1 is ISuperAgreement {\n\n /**************************************************************************\n * Errors\n *************************************************************************/\n error IDA_INDEX_SHOULD_GROW(); // 0xcfdca725\n error IDA_OPERATION_NOT_ALLOWED(); // 0x92da6d17\n error IDA_INDEX_ALREADY_EXISTS(); // 0x5c02a517\n error IDA_INDEX_DOES_NOT_EXIST(); // 0xedeaa63b\n error IDA_SUBSCRIPTION_DOES_NOT_EXIST(); // 0xb6c8c980\n error IDA_SUBSCRIPTION_ALREADY_APPROVED(); // 0x3eb2f849\n error IDA_SUBSCRIPTION_IS_NOT_APPROVED(); // 0x37412573\n error IDA_INSUFFICIENT_BALANCE(); // 0x16e759bb\n error IDA_ZERO_ADDRESS_SUBSCRIBER(); // 0xc90a4674\n\n /// @dev ISuperAgreement.agreementType implementation\n function agreementType() external override pure returns (bytes32) {\n return keccak256(\"org.superfluid-finance.agreements.InstantDistributionAgreement.v1\");\n }\n\n /**************************************************************************\n * Index operations\n *************************************************************************/\n\n /**\n * @dev Create a new index for the publisher\n * @param token Super token address\n * @param indexId Id of the index\n * @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n *\n * @custom:callbacks \n * None\n */\n function createIndex(\n ISuperfluidToken token,\n uint32 indexId,\n bytes calldata ctx)\n external\n virtual\n returns(bytes memory newCtx);\n /**\n * @dev Index created event\n * @param token Super token address\n * @param publisher Index creator and publisher\n * @param indexId The specified indexId of the newly created index\n * @param userData The user provided data\n */\n event IndexCreated(\n ISuperfluidToken indexed token,\n address indexed publisher,\n uint32 indexed indexId,\n bytes userData);\n\n /**\n * @dev Query the data of a index\n * @param token Super token address\n * @param publisher The publisher of the index\n * @param indexId Id of the index\n * @return exist Does the index exist\n * @return indexValue Value of the current index\n * @return totalUnitsApproved Total units approved for the index\n * @return totalUnitsPending Total units pending approval for the index\n */\n function getIndex(\n ISuperfluidToken token,\n address publisher,\n uint32 indexId)\n external\n view\n virtual\n returns(\n bool exist,\n uint128 indexValue,\n uint128 totalUnitsApproved,\n uint128 totalUnitsPending);\n\n /**\n * @dev Calculate actual distribution amount\n * @param token Super token address\n * @param publisher The publisher of the index\n * @param indexId Id of the index\n * @param amount The amount of tokens desired to be distributed\n * @return actualAmount The amount to be distributed after ensuring no rounding errors\n * @return newIndexValue The index value given the desired amount of tokens to be distributed\n */\n function calculateDistribution(\n ISuperfluidToken token,\n address publisher,\n uint32 indexId,\n uint256 amount)\n external view\n virtual\n returns(\n uint256 actualAmount,\n uint128 newIndexValue);\n\n /**\n * @dev Update index value of an index\n * @param token Super token address\n * @param indexId Id of the index\n * @param indexValue Value of the index\n * @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n *\n * @custom:callbacks \n * None\n */\n function updateIndex(\n ISuperfluidToken token,\n uint32 indexId,\n uint128 indexValue,\n bytes calldata ctx)\n external\n virtual\n returns(bytes memory newCtx);\n /**\n * @dev Index updated event\n * @param token Super token address\n * @param publisher Index updater and publisher\n * @param indexId The specified indexId of the updated index\n * @param oldIndexValue The previous index value\n * @param newIndexValue The updated index value\n * @param totalUnitsPending The total units pending when the indexValue was updated\n * @param totalUnitsApproved The total units approved when the indexValue was updated\n * @param userData The user provided data\n */\n event IndexUpdated(\n ISuperfluidToken indexed token,\n address indexed publisher,\n uint32 indexed indexId,\n uint128 oldIndexValue,\n uint128 newIndexValue,\n uint128 totalUnitsPending,\n uint128 totalUnitsApproved,\n bytes userData);\n\n /**\n * @dev Distribute tokens through the index\n * @param token Super token address\n * @param indexId Id of the index\n * @param amount The amount of tokens desired to be distributed\n * @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n *\n * @custom:note \n * - This is a convenient version of updateIndex. It adds to the index\n * a delta that equals to `amount / totalUnits`\n * - The actual amount distributed could be obtained via\n * `calculateDistribution`. This is due to precision error with index\n * value and units data range\n *\n * @custom:callbacks \n * None\n */\n function distribute(\n ISuperfluidToken token,\n uint32 indexId,\n uint256 amount,\n bytes calldata ctx)\n external\n virtual\n returns(bytes memory newCtx);\n\n\n /**************************************************************************\n * Subscription operations\n *************************************************************************/\n\n /**\n * @dev Approve the subscription of an index\n * @param token Super token address\n * @param publisher The publisher of the index\n * @param indexId Id of the index\n * @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n *\n * @custom:callbacks \n * - if subscription exist\n * - AgreementCreated callback to the publisher:\n * - agreementId is for the subscription\n * - if subscription does not exist\n * - AgreementUpdated callback to the publisher:\n * - agreementId is for the subscription\n */\n function approveSubscription(\n ISuperfluidToken token,\n address publisher,\n uint32 indexId,\n bytes calldata ctx)\n external\n virtual\n returns(bytes memory newCtx);\n /**\n * @dev Index subscribed event\n * @param token Super token address\n * @param publisher Index publisher\n * @param indexId The specified indexId\n * @param subscriber The approved subscriber\n * @param userData The user provided data\n */\n event IndexSubscribed(\n ISuperfluidToken indexed token,\n address indexed publisher,\n uint32 indexed indexId,\n address subscriber,\n bytes userData);\n\n /**\n * @dev Subscription approved event\n * @param token Super token address\n * @param subscriber The approved subscriber\n * @param publisher Index publisher\n * @param indexId The specified indexId\n * @param userData The user provided data\n */\n event SubscriptionApproved(\n ISuperfluidToken indexed token,\n address indexed subscriber,\n address publisher,\n uint32 indexId,\n bytes userData);\n\n /**\n * @notice Revoke the subscription of an index\n * @dev \"Unapproves\" the subscription and moves approved units to pending\n * @param token Super token address\n * @param publisher The publisher of the index\n * @param indexId Id of the index\n * @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n *\n * @custom:callbacks \n * - AgreementUpdated callback to the publisher:\n * - agreementId is for the subscription\n */\n function revokeSubscription(\n ISuperfluidToken token,\n address publisher,\n uint32 indexId,\n bytes calldata ctx)\n external\n virtual\n returns(bytes memory newCtx);\n /**\n * @dev Index unsubscribed event\n * @param token Super token address\n * @param publisher Index publisher\n * @param indexId The specified indexId\n * @param subscriber The unsubscribed subscriber\n * @param userData The user provided data\n */\n event IndexUnsubscribed(\n ISuperfluidToken indexed token,\n address indexed publisher,\n uint32 indexed indexId,\n address subscriber,\n bytes userData);\n \n /**\n * @dev Subscription approved event\n * @param token Super token address\n * @param subscriber The approved subscriber\n * @param publisher Index publisher\n * @param indexId The specified indexId\n * @param userData The user provided data\n */\n event SubscriptionRevoked(\n ISuperfluidToken indexed token,\n address indexed subscriber,\n address publisher,\n uint32 indexId,\n bytes userData);\n\n /**\n * @dev Update the nuber of units of a subscription\n * @param token Super token address\n * @param indexId Id of the index\n * @param subscriber The subscriber of the index\n * @param units Number of units of the subscription\n * @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n *\n * @custom:callbacks \n * - if subscription exist\n * - AgreementCreated callback to the subscriber:\n * - agreementId is for the subscription\n * - if subscription does not exist\n * - AgreementUpdated callback to the subscriber:\n * - agreementId is for the subscription\n */\n function updateSubscription(\n ISuperfluidToken token,\n uint32 indexId,\n address subscriber,\n uint128 units,\n bytes calldata ctx)\n external\n virtual\n returns(bytes memory newCtx);\n\n /**\n * @dev Index units updated event\n * @param token Super token address\n * @param publisher Index publisher\n * @param indexId The specified indexId\n * @param subscriber The subscriber units updated\n * @param units The new units amount\n * @param userData The user provided data\n */\n event IndexUnitsUpdated(\n ISuperfluidToken indexed token,\n address indexed publisher,\n uint32 indexed indexId,\n address subscriber,\n uint128 units,\n bytes userData);\n \n /**\n * @dev Subscription units updated event\n * @param token Super token address\n * @param subscriber The subscriber units updated\n * @param indexId The specified indexId\n * @param publisher Index publisher\n * @param units The new units amount\n * @param userData The user provided data\n */\n event SubscriptionUnitsUpdated(\n ISuperfluidToken indexed token,\n address indexed subscriber,\n address publisher,\n uint32 indexId,\n uint128 units,\n bytes userData);\n\n /**\n * @dev Get data of a subscription\n * @param token Super token address\n * @param publisher The publisher of the index\n * @param indexId Id of the index\n * @param subscriber The subscriber of the index\n * @return exist Does the subscription exist?\n * @return approved Is the subscription approved?\n * @return units Units of the suscription\n * @return pendingDistribution Pending amount of tokens to be distributed for unapproved subscription\n */\n function getSubscription(\n ISuperfluidToken token,\n address publisher,\n uint32 indexId,\n address subscriber)\n external\n view\n virtual\n returns(\n bool exist,\n bool approved,\n uint128 units,\n uint256 pendingDistribution\n );\n\n /**\n * @notice Get data of a subscription by agreement ID\n * @dev indexId (agreementId) is the keccak256 hash of encodePacked(\"publisher\", publisher, indexId)\n * @param token Super token address\n * @param agreementId The agreement ID\n * @return publisher The publisher of the index\n * @return indexId Id of the index\n * @return approved Is the subscription approved?\n * @return units Units of the suscription\n * @return pendingDistribution Pending amount of tokens to be distributed for unapproved subscription\n */\n function getSubscriptionByID(\n ISuperfluidToken token,\n bytes32 agreementId)\n external\n view\n virtual\n returns(\n address publisher,\n uint32 indexId,\n bool approved,\n uint128 units,\n uint256 pendingDistribution\n );\n\n /**\n * @dev List subscriptions of an user\n * @param token Super token address\n * @param subscriber The subscriber's address\n * @return publishers Publishers of the subcriptions\n * @return indexIds Indexes of the subscriptions\n * @return unitsList Units of the subscriptions\n */\n function listSubscriptions(\n ISuperfluidToken token,\n address subscriber)\n external\n view\n virtual\n returns(\n address[] memory publishers,\n uint32[] memory indexIds,\n uint128[] memory unitsList);\n\n /**\n * @dev Delete the subscription of an user\n * @param token Super token address\n * @param publisher The publisher of the index\n * @param indexId Id of the index\n * @param subscriber The subscriber's address\n * @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n *\n * @custom:callbacks \n * - if the subscriber called it\n * - AgreementTerminated callback to the publsiher:\n * - agreementId is for the subscription\n * - if the publisher called it\n * - AgreementTerminated callback to the subscriber:\n * - agreementId is for the subscription\n */\n function deleteSubscription(\n ISuperfluidToken token,\n address publisher,\n uint32 indexId,\n address subscriber,\n bytes calldata ctx)\n external\n virtual\n returns(bytes memory newCtx);\n\n /**\n * @dev Claim pending distributions\n * @param token Super token address\n * @param publisher The publisher of the index\n * @param indexId Id of the index\n * @param subscriber The subscriber's address\n * @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n *\n * @custom:note The subscription should not be approved yet\n *\n * @custom:callbacks \n * - AgreementUpdated callback to the publisher:\n * - agreementId is for the subscription\n */\n function claim(\n ISuperfluidToken token,\n address publisher,\n uint32 indexId,\n address subscriber,\n bytes calldata ctx)\n external\n virtual\n returns(bytes memory newCtx);\n \n /**\n * @dev Index distribution claimed event\n * @param token Super token address\n * @param publisher Index publisher\n * @param indexId The specified indexId\n * @param subscriber The subscriber units updated\n * @param amount The pending amount claimed\n */\n event IndexDistributionClaimed(\n ISuperfluidToken indexed token,\n address indexed publisher,\n uint32 indexed indexId,\n address subscriber,\n uint256 amount);\n \n /**\n * @dev Subscription distribution claimed event\n * @param token Super token address\n * @param subscriber The subscriber units updated\n * @param publisher Index publisher\n * @param indexId The specified indexId\n * @param amount The pending amount claimed\n */\n event SubscriptionDistributionClaimed(\n ISuperfluidToken indexed token,\n address indexed subscriber,\n address publisher,\n uint32 indexId,\n uint256 amount);\n\n}\n"},"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol":{"content":"// SPDX-License-Identifier: AGPLv3\npragma solidity >= 0.8.4;\n\n/**\n * @title Super app definitions library\n * @author Superfluid\n */\nlibrary SuperAppDefinitions {\n\n /**************************************************************************\n / App manifest config word\n /**************************************************************************/\n\n /*\n * App level is a way to allow the app to whitelist what other app it can\n * interact with (aka. composite app feature).\n *\n * For more details, refer to the technical paper of superfluid protocol.\n */\n uint256 constant internal APP_LEVEL_MASK = 0xFF;\n\n // The app is at the final level, hence it doesn't want to interact with any other app\n uint256 constant internal APP_LEVEL_FINAL = 1 << 0;\n\n // The app is at the second level, it may interact with other final level apps if whitelisted\n uint256 constant internal APP_LEVEL_SECOND = 1 << 1;\n\n function getAppCallbackLevel(uint256 configWord) internal pure returns (uint8) {\n return uint8(configWord & APP_LEVEL_MASK);\n }\n\n uint256 constant internal APP_JAIL_BIT = 1 << 15;\n function isAppJailed(uint256 configWord) internal pure returns (bool) {\n return (configWord & SuperAppDefinitions.APP_JAIL_BIT) > 0;\n }\n\n /**************************************************************************\n / Callback implementation bit masks\n /**************************************************************************/\n uint256 constant internal AGREEMENT_CALLBACK_NOOP_BITMASKS = 0xFF << 32;\n uint256 constant internal BEFORE_AGREEMENT_CREATED_NOOP = 1 << (32 + 0);\n uint256 constant internal AFTER_AGREEMENT_CREATED_NOOP = 1 << (32 + 1);\n uint256 constant internal BEFORE_AGREEMENT_UPDATED_NOOP = 1 << (32 + 2);\n uint256 constant internal AFTER_AGREEMENT_UPDATED_NOOP = 1 << (32 + 3);\n uint256 constant internal BEFORE_AGREEMENT_TERMINATED_NOOP = 1 << (32 + 4);\n uint256 constant internal AFTER_AGREEMENT_TERMINATED_NOOP = 1 << (32 + 5);\n\n /**************************************************************************\n / App Jail Reasons\n /**************************************************************************/\n\n uint256 constant internal APP_RULE_REGISTRATION_ONLY_IN_CONSTRUCTOR = 1;\n uint256 constant internal APP_RULE_NO_REGISTRATION_FOR_EOA = 2;\n uint256 constant internal APP_RULE_NO_REVERT_ON_TERMINATION_CALLBACK = 10;\n uint256 constant internal APP_RULE_NO_CRITICAL_SENDER_ACCOUNT = 11;\n uint256 constant internal APP_RULE_NO_CRITICAL_RECEIVER_ACCOUNT = 12;\n uint256 constant internal APP_RULE_CTX_IS_READONLY = 20;\n uint256 constant internal APP_RULE_CTX_IS_NOT_CLEAN = 21;\n uint256 constant internal APP_RULE_CTX_IS_MALFORMATED = 22;\n uint256 constant internal APP_RULE_COMPOSITE_APP_IS_NOT_WHITELISTED = 30;\n uint256 constant internal APP_RULE_COMPOSITE_APP_IS_JAILED = 31;\n uint256 constant internal APP_RULE_MAX_APP_LEVEL_REACHED = 40;\n\n // Validate configWord cleaness for future compatibility, or else may introduce undefined future behavior\n function isConfigWordClean(uint256 configWord) internal pure returns (bool) {\n return (configWord & ~(APP_LEVEL_MASK | APP_JAIL_BIT | AGREEMENT_CALLBACK_NOOP_BITMASKS)) == uint256(0);\n }\n}\n\n/**\n * @title Context definitions library\n * @author Superfluid\n */\nlibrary ContextDefinitions {\n\n /**************************************************************************\n / Call info\n /**************************************************************************/\n\n // app level\n uint256 constant internal CALL_INFO_APP_LEVEL_MASK = 0xFF;\n\n // call type\n uint256 constant internal CALL_INFO_CALL_TYPE_SHIFT = 32;\n uint256 constant internal CALL_INFO_CALL_TYPE_MASK = 0xF << CALL_INFO_CALL_TYPE_SHIFT;\n uint8 constant internal CALL_INFO_CALL_TYPE_AGREEMENT = 1;\n uint8 constant internal CALL_INFO_CALL_TYPE_APP_ACTION = 2;\n uint8 constant internal CALL_INFO_CALL_TYPE_APP_CALLBACK = 3;\n\n function decodeCallInfo(uint256 callInfo)\n internal pure\n returns (uint8 appCallbackLevel, uint8 callType)\n {\n appCallbackLevel = uint8(callInfo & CALL_INFO_APP_LEVEL_MASK);\n callType = uint8((callInfo & CALL_INFO_CALL_TYPE_MASK) >> CALL_INFO_CALL_TYPE_SHIFT);\n }\n\n function encodeCallInfo(uint8 appCallbackLevel, uint8 callType)\n internal pure\n returns (uint256 callInfo)\n {\n return uint256(appCallbackLevel) | (uint256(callType) << CALL_INFO_CALL_TYPE_SHIFT);\n }\n\n}\n\n/**\n * @title Flow Operator definitions library\n * @author Superfluid\n */\n library FlowOperatorDefinitions {\n uint8 constant internal AUTHORIZE_FLOW_OPERATOR_CREATE = uint8(1) << 0;\n uint8 constant internal AUTHORIZE_FLOW_OPERATOR_UPDATE = uint8(1) << 1;\n uint8 constant internal AUTHORIZE_FLOW_OPERATOR_DELETE = uint8(1) << 2;\n uint8 constant internal AUTHORIZE_FULL_CONTROL =\n AUTHORIZE_FLOW_OPERATOR_CREATE | AUTHORIZE_FLOW_OPERATOR_UPDATE | AUTHORIZE_FLOW_OPERATOR_DELETE;\n uint8 constant internal REVOKE_FLOW_OPERATOR_CREATE = ~(uint8(1) << 0);\n uint8 constant internal REVOKE_FLOW_OPERATOR_UPDATE = ~(uint8(1) << 1);\n uint8 constant internal REVOKE_FLOW_OPERATOR_DELETE = ~(uint8(1) << 2);\n\n function isPermissionsClean(uint8 permissions) internal pure returns (bool) {\n return (\n permissions & ~(AUTHORIZE_FLOW_OPERATOR_CREATE\n | AUTHORIZE_FLOW_OPERATOR_UPDATE\n | AUTHORIZE_FLOW_OPERATOR_DELETE)\n ) == uint8(0);\n }\n }\n\n/**\n * @title Batch operation library\n * @author Superfluid\n */\nlibrary BatchOperation {\n /**\n * @dev ERC20.approve batch operation type\n *\n * Call spec:\n * ISuperToken(target).operationApprove(\n * abi.decode(data, (address spender, uint256 amount))\n * )\n */\n uint32 constant internal OPERATION_TYPE_ERC20_APPROVE = 1;\n /**\n * @dev ERC20.transferFrom batch operation type\n *\n * Call spec:\n * ISuperToken(target).operationTransferFrom(\n * abi.decode(data, (address sender, address recipient, uint256 amount)\n * )\n */\n uint32 constant internal OPERATION_TYPE_ERC20_TRANSFER_FROM = 2;\n /**\n * @dev ERC777.send batch operation type\n *\n * Call spec:\n * ISuperToken(target).operationSend(\n * abi.decode(data, (address recipient, uint256 amount, bytes userData)\n * )\n */\n uint32 constant internal OPERATION_TYPE_ERC777_SEND = 3;\n /**\n * @dev ERC20.increaseAllowance batch operation type\n *\n * Call spec:\n * ISuperToken(target).operationIncreaseAllowance(\n * abi.decode(data, (address account, address spender, uint256 addedValue))\n * )\n */\n uint32 constant internal OPERATION_TYPE_ERC20_INCREASE_ALLOWANCE = 4;\n /**\n * @dev ERC20.decreaseAllowance batch operation type\n *\n * Call spec:\n * ISuperToken(target).operationDecreaseAllowance(\n * abi.decode(data, (address account, address spender, uint256 subtractedValue))\n * )\n */\n uint32 constant internal OPERATION_TYPE_ERC20_DECREASE_ALLOWANCE = 5;\n /**\n * @dev SuperToken.upgrade batch operation type\n *\n * Call spec:\n * ISuperToken(target).operationUpgrade(\n * abi.decode(data, (uint256 amount)\n * )\n */\n uint32 constant internal OPERATION_TYPE_SUPERTOKEN_UPGRADE = 1 + 100;\n /**\n * @dev SuperToken.downgrade batch operation type\n *\n * Call spec:\n * ISuperToken(target).operationDowngrade(\n * abi.decode(data, (uint256 amount)\n * )\n */\n uint32 constant internal OPERATION_TYPE_SUPERTOKEN_DOWNGRADE = 2 + 100;\n /**\n * @dev Superfluid.callAgreement batch operation type\n *\n * Call spec:\n * callAgreement(\n * ISuperAgreement(target)),\n * abi.decode(data, (bytes callData, bytes userData)\n * )\n */\n uint32 constant internal OPERATION_TYPE_SUPERFLUID_CALL_AGREEMENT = 1 + 200;\n /**\n * @dev Superfluid.callAppAction batch operation type\n *\n * Call spec:\n * callAppAction(\n * ISuperApp(target)),\n * data\n * )\n */\n uint32 constant internal OPERATION_TYPE_SUPERFLUID_CALL_APP_ACTION = 2 + 200;\n}\n\n/**\n * @title Superfluid governance configs library\n * @author Superfluid\n */\nlibrary SuperfluidGovernanceConfigs {\n\n bytes32 constant internal SUPERFLUID_REWARD_ADDRESS_CONFIG_KEY =\n keccak256(\"org.superfluid-finance.superfluid.rewardAddress\");\n bytes32 constant internal CFAV1_PPP_CONFIG_KEY =\n keccak256(\"org.superfluid-finance.agreements.ConstantFlowAgreement.v1.PPPConfiguration\");\n bytes32 constant internal SUPERTOKEN_MINIMUM_DEPOSIT_KEY =\n keccak256(\"org.superfluid-finance.superfluid.superTokenMinimumDeposit\");\n\n function getTrustedForwarderConfigKey(address forwarder) internal pure returns (bytes32) {\n return keccak256(abi.encode(\n \"org.superfluid-finance.superfluid.trustedForwarder\",\n forwarder));\n }\n\n function getAppRegistrationConfigKey(address deployer, string memory registrationKey) internal pure returns (bytes32) {\n return keccak256(abi.encode(\n \"org.superfluid-finance.superfluid.appWhiteListing.registrationKey\",\n deployer,\n registrationKey));\n }\n\n function getAppFactoryConfigKey(address factory) internal pure returns (bytes32) {\n return keccak256(abi.encode(\n \"org.superfluid-finance.superfluid.appWhiteListing.factory\",\n factory));\n }\n\n function decodePPPConfig(uint256 pppConfig) internal pure returns (uint256 liquidationPeriod, uint256 patricianPeriod) {\n liquidationPeriod = (pppConfig >> 32) & type(uint32).max;\n patricianPeriod = pppConfig & type(uint32).max;\n }\n}\n"},"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol":{"content":"// SPDX-License-Identifier: AGPLv3\npragma solidity >= 0.8.4;\n\nimport { ISuperfluidToken } from \"./ISuperfluidToken.sol\";\n\n/**\n * @title Super agreement interface\n * @author Superfluid\n */\ninterface ISuperAgreement {\n\n /**\n * @dev Get the type of the agreement class\n */\n function agreementType() external view returns (bytes32);\n\n /**\n * @dev Calculate the real-time balance for the account of this agreement class\n * @param account Account the state belongs to\n * @param time Time used for the calculation\n * @return dynamicBalance Dynamic balance portion of real-time balance of this agreement\n * @return deposit Account deposit amount of this agreement\n * @return owedDeposit Account owed deposit amount of this agreement\n */\n function realtimeBalanceOf(\n ISuperfluidToken token,\n address account,\n uint256 time\n )\n external\n view\n returns (\n int256 dynamicBalance,\n uint256 deposit,\n uint256 owedDeposit\n );\n\n}\n"},"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperApp.sol":{"content":"// SPDX-License-Identifier: AGPLv3\npragma solidity >= 0.8.4;\n\nimport { ISuperToken } from \"./ISuperToken.sol\";\n\n/**\n * @title SuperApp interface\n * @author Superfluid\n * @dev Be aware of the app being jailed, when the word permitted is used.\n */\ninterface ISuperApp {\n\n /**\n * @dev Callback before a new agreement is created.\n * @param superToken The super token used for the agreement.\n * @param agreementClass The agreement class address.\n * @param agreementId The agreementId\n * @param agreementData The agreement data (non-compressed)\n * @param ctx The context data.\n * @return cbdata A free format in memory data the app can use to pass\n * arbitary information to the after-hook callback.\n *\n * @custom:note \n * - It will be invoked with `staticcall`, no state changes are permitted.\n * - Only revert with a \"reason\" is permitted.\n */\n function beforeAgreementCreated(\n ISuperToken superToken,\n address agreementClass,\n bytes32 agreementId,\n bytes calldata agreementData,\n bytes calldata ctx\n )\n external\n view\n returns (bytes memory cbdata);\n\n /**\n * @dev Callback after a new agreement is created.\n * @param superToken The super token used for the agreement.\n * @param agreementClass The agreement class address.\n * @param agreementId The agreementId\n * @param agreementData The agreement data (non-compressed)\n * @param cbdata The data returned from the before-hook callback.\n * @param ctx The context data.\n * @return newCtx The current context of the transaction.\n *\n * @custom:note \n * - State changes is permitted.\n * - Only revert with a \"reason\" is permitted.\n */\n function afterAgreementCreated(\n ISuperToken superToken,\n address agreementClass,\n bytes32 agreementId,\n bytes calldata agreementData,\n bytes calldata cbdata,\n bytes calldata ctx\n )\n external\n returns (bytes memory newCtx);\n\n /**\n * @dev Callback before a new agreement is updated.\n * @param superToken The super token used for the agreement.\n * @param agreementClass The agreement class address.\n * @param agreementId The agreementId\n * @param agreementData The agreement data (non-compressed)\n * @param ctx The context data.\n * @return cbdata A free format in memory data the app can use to pass\n * arbitary information to the after-hook callback.\n *\n * @custom:note \n * - It will be invoked with `staticcall`, no state changes are permitted.\n * - Only revert with a \"reason\" is permitted.\n */\n function beforeAgreementUpdated(\n ISuperToken superToken,\n address agreementClass,\n bytes32 agreementId,\n bytes calldata agreementData,\n bytes calldata ctx\n )\n external\n view\n returns (bytes memory cbdata);\n\n\n /**\n * @dev Callback after a new agreement is updated.\n * @param superToken The super token used for the agreement.\n * @param agreementClass The agreement class address.\n * @param agreementId The agreementId\n * @param agreementData The agreement data (non-compressed)\n * @param cbdata The data returned from the before-hook callback.\n * @param ctx The context data.\n * @return newCtx The current context of the transaction.\n *\n * @custom:note \n * - State changes is permitted.\n * - Only revert with a \"reason\" is permitted.\n */\n function afterAgreementUpdated(\n ISuperToken superToken,\n address agreementClass,\n bytes32 agreementId,\n bytes calldata agreementData,\n bytes calldata cbdata,\n bytes calldata ctx\n )\n external\n returns (bytes memory newCtx);\n\n /**\n * @dev Callback before a new agreement is terminated.\n * @param superToken The super token used for the agreement.\n * @param agreementClass The agreement class address.\n * @param agreementId The agreementId\n * @param agreementData The agreement data (non-compressed)\n * @param ctx The context data.\n * @return cbdata A free format in memory data the app can use to pass arbitary information to the after-hook callback.\n *\n * @custom:note \n * - It will be invoked with `staticcall`, no state changes are permitted.\n * - Revert is not permitted.\n */\n function beforeAgreementTerminated(\n ISuperToken superToken,\n address agreementClass,\n bytes32 agreementId,\n bytes calldata agreementData,\n bytes calldata ctx\n )\n external\n view\n returns (bytes memory cbdata);\n\n /**\n * @dev Callback after a new agreement is terminated.\n * @param superToken The super token used for the agreement.\n * @param agreementClass The agreement class address.\n * @param agreementId The agreementId\n * @param agreementData The agreement data (non-compressed)\n * @param cbdata The data returned from the before-hook callback.\n * @param ctx The context data.\n * @return newCtx The current context of the transaction.\n *\n * @custom:note \n * - State changes is permitted.\n * - Revert is not permitted.\n */\n function afterAgreementTerminated(\n ISuperToken superToken,\n address agreementClass,\n bytes32 agreementId,\n bytes calldata agreementData,\n bytes calldata cbdata,\n bytes calldata ctx\n )\n external\n returns (bytes memory newCtx);\n}\n"},"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol":{"content":"// SPDX-License-Identifier: AGPLv3\npragma solidity >= 0.8.4;\n\nimport { ISuperfluidGovernance } from \"./ISuperfluidGovernance.sol\";\nimport { ISuperfluidToken } from \"./ISuperfluidToken.sol\";\nimport { ISuperToken } from \"./ISuperToken.sol\";\nimport { ISuperTokenFactory } from \"./ISuperTokenFactory.sol\";\nimport { ISuperAgreement } from \"./ISuperAgreement.sol\";\nimport { ISuperApp } from \"./ISuperApp.sol\";\nimport {\n BatchOperation,\n ContextDefinitions,\n FlowOperatorDefinitions,\n SuperAppDefinitions,\n SuperfluidGovernanceConfigs\n} from \"./Definitions.sol\";\nimport { TokenInfo } from \"../tokens/TokenInfo.sol\";\nimport { IERC20 } from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport { IERC777 } from \"@openzeppelin/contracts/token/ERC777/IERC777.sol\";\n\n/**\n * @title Host interface\n * @author Superfluid\n * @notice This is the central contract of the system where super agreement, super app\n * and super token features are connected.\n *\n * The Superfluid host contract is also the entry point for the protocol users,\n * where batch call and meta transaction are provided for UX improvements.\n *\n */\ninterface ISuperfluid {\n\n /**************************************************************************\n * Errors\n *************************************************************************/\n // Superfluid Custom Errors\n error HOST_AGREEMENT_CALLBACK_IS_NOT_ACTION(); // 0xef4295f6\n error HOST_CANNOT_DOWNGRADE_TO_NON_UPGRADEABLE(); // 0x474e7641\n error HOST_CALL_AGREEMENT_WITH_CTX_FROM_WRONG_ADDRESS(); // 0x0cd0ebc2\n error HOST_CALL_APP_ACTION_WITH_CTX_FROM_WRONG_ADDRESS(); // 0x473f7bd4\n error HOST_INVALID_CONFIG_WORD(); // 0xf4c802a4\n error HOST_MAX_256_AGREEMENTS(); // 0x7c281a78\n error HOST_NON_UPGRADEABLE(); // 0x14f72c9f\n error HOST_NON_ZERO_LENGTH_PLACEHOLDER_CTX(); // 0x67e9985b\n error HOST_ONLY_GOVERNANCE(); // 0xc5d22a4e\n error HOST_UNKNOWN_BATCH_CALL_OPERATION_TYPE(); // 0xb4770115\n error HOST_AGREEMENT_ALREADY_REGISTERED(); // 0xdc9ddba8\n error HOST_AGREEMENT_IS_NOT_REGISTERED(); // 0x1c9e9bea\n error HOST_MUST_BE_CONTRACT(); // 0xd4f6b30c\n error HOST_ONLY_LISTED_AGREEMENT(); // 0x619c5359\n\n // App Related Custom Errors\n // uses SuperAppDefinitions' App Jail Reasons as _code\n error APP_RULE(uint256 _code); // 0xa85ba64f\n\n error HOST_INVALID_OR_EXPIRED_SUPER_APP_REGISTRATION_KEY(); // 0x19ab84d1\n error HOST_NOT_A_SUPER_APP(); // 0x163cbe43\n error HOST_NO_APP_REGISTRATION_PERMISSIONS(); // 0x5b93ebf0\n error HOST_RECEIVER_IS_NOT_SUPER_APP(); // 0x96aa315e\n error HOST_SENDER_IS_NOT_SUPER_APP(); // 0xbacfdc40\n error HOST_SOURCE_APP_NEEDS_HIGHER_APP_LEVEL(); // 0x44725270\n error HOST_SUPER_APP_IS_JAILED(); // 0x02384b64\n error HOST_SUPER_APP_ALREADY_REGISTERED(); // 0x01b0a935\n error HOST_UNAUTHORIZED_SUPER_APP_FACTORY(); // 0x289533c5\n\n /**************************************************************************\n * Time\n *\n * > The Oracle: You have the sight now, Neo. You are looking at the world without time.\n * > Neo: Then why can't I see what happens to her?\n * > The Oracle: We can never see past the choices we don't understand.\n * > - The Oracle and Neo conversing about the future of Trinity and the effects of Neo's choices\n *************************************************************************/\n\n function getNow() external view returns (uint256);\n\n /**************************************************************************\n * Governance\n *************************************************************************/\n\n /**\n * @dev Get the current governance address of the Superfluid host\n */\n function getGovernance() external view returns(ISuperfluidGovernance governance);\n\n /**\n * @dev Replace the current governance with a new one\n */\n function replaceGovernance(ISuperfluidGovernance newGov) external;\n /**\n * @dev Governance replaced event\n * @param oldGov Address of the old governance contract\n * @param newGov Address of the new governance contract\n */\n event GovernanceReplaced(ISuperfluidGovernance oldGov, ISuperfluidGovernance newGov);\n\n /**************************************************************************\n * Agreement Whitelisting\n *************************************************************************/\n\n /**\n * @dev Register a new agreement class to the system\n * @param agreementClassLogic Initial agreement class code\n *\n * @custom:modifiers \n * - onlyGovernance\n */\n function registerAgreementClass(ISuperAgreement agreementClassLogic) external;\n /**\n * @notice Agreement class registered event\n * @dev agreementType is the keccak256 hash of: \"org.superfluid-finance.agreements..\"\n * @param agreementType The agreement type registered\n * @param code Address of the new agreement\n */\n event AgreementClassRegistered(bytes32 agreementType, address code);\n\n /**\n * @dev Update code of an agreement class\n * @param agreementClassLogic New code for the agreement class\n *\n * @custom:modifiers \n * - onlyGovernance\n */\n function updateAgreementClass(ISuperAgreement agreementClassLogic) external;\n /**\n * @notice Agreement class updated event\n * @dev agreementType is the keccak256 hash of: \"org.superfluid-finance.agreements..\"\n * @param agreementType The agreement type updated\n * @param code Address of the new agreement\n */\n event AgreementClassUpdated(bytes32 agreementType, address code);\n\n /**\n * @notice Check if the agreement type is whitelisted\n * @dev agreementType is the keccak256 hash of: \"org.superfluid-finance.agreements..\"\n */\n function isAgreementTypeListed(bytes32 agreementType) external view returns(bool yes);\n\n /**\n * @dev Check if the agreement class is whitelisted\n */\n function isAgreementClassListed(ISuperAgreement agreementClass) external view returns(bool yes);\n\n /**\n * @notice Get agreement class\n * @dev agreementType is the keccak256 hash of: \"org.superfluid-finance.agreements..\"\n */\n function getAgreementClass(bytes32 agreementType) external view returns(ISuperAgreement agreementClass);\n\n /**\n * @dev Map list of the agreement classes using a bitmap\n * @param bitmap Agreement class bitmap\n */\n function mapAgreementClasses(uint256 bitmap)\n external view\n returns (ISuperAgreement[] memory agreementClasses);\n\n /**\n * @notice Create a new bitmask by adding a agreement class to it\n * @dev agreementType is the keccak256 hash of: \"org.superfluid-finance.agreements..\"\n * @param bitmap Agreement class bitmap\n */\n function addToAgreementClassesBitmap(uint256 bitmap, bytes32 agreementType)\n external view\n returns (uint256 newBitmap);\n\n /**\n * @notice Create a new bitmask by removing a agreement class from it\n * @dev agreementType is the keccak256 hash of: \"org.superfluid-finance.agreements..\"\n * @param bitmap Agreement class bitmap\n */\n function removeFromAgreementClassesBitmap(uint256 bitmap, bytes32 agreementType)\n external view\n returns (uint256 newBitmap);\n\n /**************************************************************************\n * Super Token Factory\n **************************************************************************/\n\n /**\n * @dev Get the super token factory\n * @return factory The factory\n */\n function getSuperTokenFactory() external view returns (ISuperTokenFactory factory);\n\n /**\n * @dev Get the super token factory logic (applicable to upgradable deployment)\n * @return logic The factory logic\n */\n function getSuperTokenFactoryLogic() external view returns (address logic);\n\n /**\n * @dev Update super token factory\n * @param newFactory New factory logic\n */\n function updateSuperTokenFactory(ISuperTokenFactory newFactory) external;\n /**\n * @dev SuperToken factory updated event\n * @param newFactory Address of the new factory\n */\n event SuperTokenFactoryUpdated(ISuperTokenFactory newFactory);\n\n /**\n * @notice Update the super token logic to the latest\n * @dev Refer to ISuperTokenFactory.Upgradability for expected behaviours\n */\n function updateSuperTokenLogic(ISuperToken token) external;\n /**\n * @dev SuperToken logic updated event\n * @param code Address of the new SuperToken logic\n */\n event SuperTokenLogicUpdated(ISuperToken indexed token, address code);\n\n /**************************************************************************\n * App Registry\n *************************************************************************/\n\n /**\n * @dev Message sender (must be a contract) declares itself as a super app.\n * @custom:deprecated you should use `registerAppWithKey` or `registerAppByFactory` instead,\n * because app registration is currently governance permissioned on mainnets.\n * @param configWord The super app manifest configuration, flags are defined in\n * `SuperAppDefinitions`\n */\n function registerApp(uint256 configWord) external;\n /**\n * @dev App registered event\n * @param app Address of jailed app\n */\n event AppRegistered(ISuperApp indexed app);\n\n /**\n * @dev Message sender declares itself as a super app.\n * @param configWord The super app manifest configuration, flags are defined in `SuperAppDefinitions`\n * @param registrationKey The registration key issued by the governance, needed to register on a mainnet.\n * @notice See https://github.com/superfluid-finance/protocol-monorepo/wiki/Super-App-White-listing-Guide\n * On testnets or in dev environment, a placeholder (e.g. empty string) can be used.\n * While the message sender must be the super app itself, the transaction sender (tx.origin)\n * must be the deployer account the registration key was issued for.\n */\n function registerAppWithKey(uint256 configWord, string calldata registrationKey) external;\n\n /**\n * @dev Message sender (must be a contract) declares app as a super app\n * @param configWord The super app manifest configuration, flags are defined in `SuperAppDefinitions`\n * @notice On mainnet deployments, only factory contracts pre-authorized by governance can use this.\n * See https://github.com/superfluid-finance/protocol-monorepo/wiki/Super-App-White-listing-Guide\n */\n function registerAppByFactory(ISuperApp app, uint256 configWord) external;\n\n /**\n * @dev Query if the app is registered\n * @param app Super app address\n */\n function isApp(ISuperApp app) external view returns(bool);\n\n /**\n * @dev Query app callbacklevel\n * @param app Super app address\n */\n function getAppCallbackLevel(ISuperApp app) external view returns(uint8 appCallbackLevel);\n\n /**\n * @dev Get the manifest of the super app\n * @param app Super app address\n */\n function getAppManifest(\n ISuperApp app\n )\n external view\n returns (\n bool isSuperApp,\n bool isJailed,\n uint256 noopMask\n );\n\n /**\n * @dev Query if the app has been jailed\n * @param app Super app address\n */\n function isAppJailed(ISuperApp app) external view returns (bool isJail);\n\n /**\n * @dev Whitelist the target app for app composition for the source app (msg.sender)\n * @param targetApp The target super app address\n */\n function allowCompositeApp(ISuperApp targetApp) external;\n\n /**\n * @dev Query if source app is allowed to call the target app as downstream app\n * @param app Super app address\n * @param targetApp The target super app address\n */\n function isCompositeAppAllowed(\n ISuperApp app,\n ISuperApp targetApp\n )\n external view\n returns (bool isAppAllowed);\n\n /**************************************************************************\n * Agreement Framework\n *\n * Agreements use these function to trigger super app callbacks, updates\n * app credit and charge gas fees.\n *\n * These functions can only be called by registered agreements.\n *************************************************************************/\n\n /**\n * @dev (For agreements) StaticCall the app before callback\n * @param app The super app.\n * @param callData The call data sending to the super app.\n * @param isTermination Is it a termination callback?\n * @param ctx Current ctx, it will be validated.\n * @return cbdata Data returned from the callback.\n */\n function callAppBeforeCallback(\n ISuperApp app,\n bytes calldata callData,\n bool isTermination,\n bytes calldata ctx\n )\n external\n // onlyAgreement\n // assertValidCtx(ctx)\n returns(bytes memory cbdata);\n\n /**\n * @dev (For agreements) Call the app after callback\n * @param app The super app.\n * @param callData The call data sending to the super app.\n * @param isTermination Is it a termination callback?\n * @param ctx Current ctx, it will be validated.\n * @return newCtx The current context of the transaction.\n */\n function callAppAfterCallback(\n ISuperApp app,\n bytes calldata callData,\n bool isTermination,\n bytes calldata ctx\n )\n external\n // onlyAgreement\n // assertValidCtx(ctx)\n returns(bytes memory newCtx);\n\n /**\n * @dev (For agreements) Create a new callback stack\n * @param ctx The current ctx, it will be validated.\n * @param app The super app.\n * @param appCreditGranted App credit granted so far.\n * @param appCreditUsed App credit used so far.\n * @return newCtx The current context of the transaction.\n */\n function appCallbackPush(\n bytes calldata ctx,\n ISuperApp app,\n uint256 appCreditGranted,\n int256 appCreditUsed,\n ISuperfluidToken appCreditToken\n )\n external\n // onlyAgreement\n // assertValidCtx(ctx)\n returns (bytes memory newCtx);\n\n /**\n * @dev (For agreements) Pop from the current app callback stack\n * @param ctx The ctx that was pushed before the callback stack.\n * @param appCreditUsedDelta App credit used by the app.\n * @return newCtx The current context of the transaction.\n *\n * @custom:security\n * - Here we cannot do assertValidCtx(ctx), since we do not really save the stack in memory.\n * - Hence there is still implicit trust that the agreement handles the callback push/pop pair correctly.\n */\n function appCallbackPop(\n bytes calldata ctx,\n int256 appCreditUsedDelta\n )\n external\n // onlyAgreement\n returns (bytes memory newCtx);\n\n /**\n * @dev (For agreements) Use app credit.\n * @param ctx The current ctx, it will be validated.\n * @param appCreditUsedMore See app credit for more details.\n * @return newCtx The current context of the transaction.\n */\n function ctxUseCredit(\n bytes calldata ctx,\n int256 appCreditUsedMore\n )\n external\n // onlyAgreement\n // assertValidCtx(ctx)\n returns (bytes memory newCtx);\n\n /**\n * @dev (For agreements) Jail the app.\n * @param app The super app.\n * @param reason Jail reason code.\n * @return newCtx The current context of the transaction.\n */\n function jailApp(\n bytes calldata ctx,\n ISuperApp app,\n uint256 reason\n )\n external\n // onlyAgreement\n // assertValidCtx(ctx)\n returns (bytes memory newCtx);\n\n /**\n * @dev Jail event for the app\n * @param app Address of jailed app\n * @param reason Reason the app is jailed (see Definitions.sol for the full list)\n */\n event Jail(ISuperApp indexed app, uint256 reason);\n\n /**************************************************************************\n * Contextless Call Proxies\n *\n * NOTE: For EOAs or non-app contracts, they are the entry points for interacting\n * with agreements or apps.\n *\n * NOTE: The contextual call data should be generated using\n * abi.encodeWithSelector. The context parameter should be set to \"0x\",\n * an empty bytes array as a placeholder to be replaced by the host\n * contract.\n *************************************************************************/\n\n /**\n * @dev Call agreement function\n * @param agreementClass The agreement address you are calling\n * @param callData The contextual call data with placeholder ctx\n * @param userData Extra user data being sent to the super app callbacks\n */\n function callAgreement(\n ISuperAgreement agreementClass,\n bytes calldata callData,\n bytes calldata userData\n )\n external\n //cleanCtx\n //isAgreement(agreementClass)\n returns(bytes memory returnedData);\n\n /**\n * @notice Call app action\n * @dev Main use case is calling app action in a batch call via the host\n * @param callData The contextual call data\n *\n * @custom:note See \"Contextless Call Proxies\" above for more about contextual call data.\n */\n function callAppAction(\n ISuperApp app,\n bytes calldata callData\n )\n external\n //cleanCtx\n //isAppActive(app)\n //isValidAppAction(callData)\n returns(bytes memory returnedData);\n\n /**************************************************************************\n * Contextual Call Proxies and Context Utilities\n *\n * For apps, they must use context they receive to interact with\n * agreements or apps.\n *\n * The context changes must be saved and returned by the apps in their\n * callbacks always, any modification to the context will be detected and\n * the violating app will be jailed.\n *************************************************************************/\n\n /**\n * @dev Context Struct\n *\n * @custom:note on backward compatibility:\n * - Non-dynamic fields are padded to 32bytes and packed\n * - Dynamic fields are referenced through a 32bytes offset to their \"parents\" field (or root)\n * - The order of the fields hence should not be rearranged in order to be backward compatible:\n * - non-dynamic fields will be parsed at the same memory location,\n * - and dynamic fields will simply have a greater offset than it was.\n * - We cannot change the structure of the Context struct because of ABI compatibility requirements\n */\n struct Context {\n //\n // Call context\n //\n // app callback level\n uint8 appCallbackLevel;\n // type of call\n uint8 callType;\n // the system timestamp\n uint256 timestamp;\n // The intended message sender for the call\n address msgSender;\n\n //\n // Callback context\n //\n // For callbacks it is used to know which agreement function selector is called\n bytes4 agreementSelector;\n // User provided data for app callbacks\n bytes userData;\n\n //\n // App context\n //\n // app credit granted\n uint256 appCreditGranted;\n // app credit wanted by the app callback\n uint256 appCreditWantedDeprecated;\n // app credit used, allowing negative values over a callback session\n // the appCreditUsed value over a callback sessions is calculated with:\n // existing flow data owed deposit + sum of the callback agreements\n // deposit deltas \n // the final value used to modify the state is determined by the\n // _adjustNewAppCreditUsed function (in AgreementLibrary.sol) which takes \n // the appCreditUsed value reached in the callback session and the app\n // credit granted\n int256 appCreditUsed;\n // app address\n address appAddress;\n // app credit in super token\n ISuperfluidToken appCreditToken;\n }\n\n function callAgreementWithContext(\n ISuperAgreement agreementClass,\n bytes calldata callData,\n bytes calldata userData,\n bytes calldata ctx\n )\n external\n // requireValidCtx(ctx)\n // onlyAgreement(agreementClass)\n returns (bytes memory newCtx, bytes memory returnedData);\n\n function callAppActionWithContext(\n ISuperApp app,\n bytes calldata callData,\n bytes calldata ctx\n )\n external\n // requireValidCtx(ctx)\n // isAppActive(app)\n returns (bytes memory newCtx);\n\n function decodeCtx(bytes memory ctx)\n external pure\n returns (Context memory context);\n\n function isCtxValid(bytes calldata ctx) external view returns (bool);\n\n /**************************************************************************\n * Batch call\n **************************************************************************/\n /**\n * @dev Batch operation data\n */\n struct Operation {\n // Operation type. Defined in BatchOperation (Definitions.sol)\n uint32 operationType;\n // Operation target\n address target;\n // Data specific to the operation\n bytes data;\n }\n\n /**\n * @dev Batch call function\n * @param operations Array of batch operations\n */\n function batchCall(Operation[] calldata operations) external;\n\n /**\n * @dev Batch call function for trusted forwarders (EIP-2771)\n * @param operations Array of batch operations\n */\n function forwardBatchCall(Operation[] calldata operations) external;\n\n /**************************************************************************\n * Function modifiers for access control and parameter validations\n *\n * While they cannot be explicitly stated in function definitions, they are\n * listed in function definition comments instead for clarity.\n *\n * TODO: turning these off because solidity-coverage doesn't like it\n *************************************************************************/\n\n /* /// @dev The current superfluid context is clean.\n modifier cleanCtx() virtual;\n\n /// @dev Require the ctx being valid.\n modifier requireValidCtx(bytes memory ctx) virtual;\n\n /// @dev Assert the ctx being valid.\n modifier assertValidCtx(bytes memory ctx) virtual;\n\n /// @dev The agreement is a listed agreement.\n modifier isAgreement(ISuperAgreement agreementClass) virtual;\n\n // onlyGovernance\n\n /// @dev The msg.sender must be a listed agreement.\n modifier onlyAgreement() virtual;\n\n /// @dev The app is registered and not jailed.\n modifier isAppActive(ISuperApp app) virtual; */\n}\n"},"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance.sol":{"content":"// SPDX-License-Identifier: AGPLv3\npragma solidity >= 0.8.4;\n\nimport { ISuperAgreement } from \"./ISuperAgreement.sol\";\nimport { ISuperToken } from \"./ISuperToken.sol\";\nimport { ISuperfluidToken } from \"./ISuperfluidToken.sol\";\nimport { ISuperfluid } from \"./ISuperfluid.sol\";\n\n\n/**\n * @title Superfluid governance interface\n * @author Superfluid\n */\ninterface ISuperfluidGovernance {\n \n /**************************************************************************\n * Errors\n *************************************************************************/\n error SF_GOV_ARRAYS_NOT_SAME_LENGTH(); // 0x27743aa6\n error SF_GOV_INVALID_LIQUIDATION_OR_PATRICIAN_PERIOD(); // 0xe171980a\n error SF_GOV_MUST_BE_CONTRACT(); // 0x80dddd73\n\n /**\n * @dev Replace the current governance with a new governance\n */\n function replaceGovernance(\n ISuperfluid host,\n address newGov) external;\n\n /**\n * @dev Register a new agreement class\n */\n function registerAgreementClass(\n ISuperfluid host,\n address agreementClass) external;\n\n /**\n * @dev Update logics of the contracts\n *\n * @custom:note \n * - Because they might have inter-dependencies, it is good to have one single function to update them all\n */\n function updateContracts(\n ISuperfluid host,\n address hostNewLogic,\n address[] calldata agreementClassNewLogics,\n address superTokenFactoryNewLogic\n ) external;\n\n /**\n * @dev Update supertoken logic contract to the latest that is managed by the super token factory\n */\n function batchUpdateSuperTokenLogic(\n ISuperfluid host,\n ISuperToken[] calldata tokens) external;\n \n /**\n * @dev Set configuration as address value\n */\n function setConfig(\n ISuperfluid host,\n ISuperfluidToken superToken,\n bytes32 key,\n address value\n ) external;\n \n /**\n * @dev Set configuration as uint256 value\n */\n function setConfig(\n ISuperfluid host,\n ISuperfluidToken superToken,\n bytes32 key,\n uint256 value\n ) external;\n\n /**\n * @dev Clear configuration\n */\n function clearConfig(\n ISuperfluid host,\n ISuperfluidToken superToken,\n bytes32 key\n ) external;\n\n /**\n * @dev Get configuration as address value\n */\n function getConfigAsAddress(\n ISuperfluid host,\n ISuperfluidToken superToken,\n bytes32 key) external view returns (address value);\n\n /**\n * @dev Get configuration as uint256 value\n */\n function getConfigAsUint256(\n ISuperfluid host,\n ISuperfluidToken superToken,\n bytes32 key) external view returns (uint256 value);\n\n}\n"},"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol":{"content":"// SPDX-License-Identifier: AGPLv3\npragma solidity >= 0.8.4;\n\nimport { ISuperAgreement } from \"./ISuperAgreement.sol\";\n\n/**\n * @title Superfluid token interface\n * @author Superfluid\n */\ninterface ISuperfluidToken {\n\n /**************************************************************************\n * Errors\n *************************************************************************/\n error SF_TOKEN_AGREEMENT_ALREADY_EXISTS(); // 0xf05521f6\n error SF_TOKEN_AGREEMENT_DOES_NOT_EXIST(); // 0xdae18809\n error SF_TOKEN_BURN_INSUFFICIENT_BALANCE(); // 0x10ecdf44\n error SF_TOKEN_MOVE_INSUFFICIENT_BALANCE(); // 0x2f4cb941\n error SF_TOKEN_ONLY_LISTED_AGREEMENT(); // 0xc9ff6644\n error SF_TOKEN_ONLY_HOST(); // 0xc51efddd\n\n /**************************************************************************\n * Basic information\n *************************************************************************/\n\n /**\n * @dev Get superfluid host contract address\n */\n function getHost() external view returns(address host);\n\n /**\n * @dev Encoded liquidation type data mainly used for handling stack to deep errors\n *\n * @custom:note \n * - version: 1\n * - liquidationType key:\n * - 0 = reward account receives reward (PIC period)\n * - 1 = liquidator account receives reward (Pleb period)\n * - 2 = liquidator account receives reward (Pirate period/bailout)\n */\n struct LiquidationTypeData {\n uint256 version;\n uint8 liquidationType;\n }\n\n /**************************************************************************\n * Real-time balance functions\n *************************************************************************/\n\n /**\n * @dev Calculate the real balance of a user, taking in consideration all agreements of the account\n * @param account for the query\n * @param timestamp Time of balance\n * @return availableBalance Real-time balance\n * @return deposit Account deposit\n * @return owedDeposit Account owed Deposit\n */\n function realtimeBalanceOf(\n address account,\n uint256 timestamp\n )\n external view\n returns (\n int256 availableBalance,\n uint256 deposit,\n uint256 owedDeposit);\n\n /**\n * @notice Calculate the realtime balance given the current host.getNow() value\n * @dev realtimeBalanceOf with timestamp equals to block timestamp\n * @param account for the query\n * @return availableBalance Real-time balance\n * @return deposit Account deposit\n * @return owedDeposit Account owed Deposit\n */\n function realtimeBalanceOfNow(\n address account\n )\n external view\n returns (\n int256 availableBalance,\n uint256 deposit,\n uint256 owedDeposit,\n uint256 timestamp);\n\n /**\n * @notice Check if account is critical\n * @dev A critical account is when availableBalance < 0\n * @param account The account to check\n * @param timestamp The time we'd like to check if the account is critical (should use future)\n * @return isCritical Whether the account is critical\n */\n function isAccountCritical(\n address account,\n uint256 timestamp\n )\n external view\n returns(bool isCritical);\n\n /**\n * @notice Check if account is critical now (current host.getNow())\n * @dev A critical account is when availableBalance < 0\n * @param account The account to check\n * @return isCritical Whether the account is critical\n */\n function isAccountCriticalNow(\n address account\n )\n external view\n returns(bool isCritical);\n\n /**\n * @notice Check if account is solvent\n * @dev An account is insolvent when the sum of deposits for a token can't cover the negative availableBalance\n * @param account The account to check\n * @param timestamp The time we'd like to check if the account is solvent (should use future)\n * @return isSolvent True if the account is solvent, false otherwise\n */\n function isAccountSolvent(\n address account,\n uint256 timestamp\n )\n external view\n returns(bool isSolvent);\n\n /**\n * @notice Check if account is solvent now\n * @dev An account is insolvent when the sum of deposits for a token can't cover the negative availableBalance\n * @param account The account to check\n * @return isSolvent True if the account is solvent, false otherwise\n */\n function isAccountSolventNow(\n address account\n )\n external view\n returns(bool isSolvent);\n\n /**\n * @notice Get a list of agreements that is active for the account\n * @dev An active agreement is one that has state for the account\n * @param account Account to query\n * @return activeAgreements List of accounts that have non-zero states for the account\n */\n function getAccountActiveAgreements(address account)\n external view\n returns(ISuperAgreement[] memory activeAgreements);\n\n\n /**************************************************************************\n * Super Agreement hosting functions\n *************************************************************************/\n\n /**\n * @dev Create a new agreement\n * @param id Agreement ID\n * @param data Agreement data\n */\n function createAgreement(\n bytes32 id,\n bytes32[] calldata data\n )\n external;\n /**\n * @dev Agreement created event\n * @param agreementClass Contract address of the agreement\n * @param id Agreement ID\n * @param data Agreement data\n */\n event AgreementCreated(\n address indexed agreementClass,\n bytes32 id,\n bytes32[] data\n );\n\n /**\n * @dev Get data of the agreement\n * @param agreementClass Contract address of the agreement\n * @param id Agreement ID\n * @return data Data of the agreement\n */\n function getAgreementData(\n address agreementClass,\n bytes32 id,\n uint dataLength\n )\n external view\n returns(bytes32[] memory data);\n\n /**\n * @dev Create a new agreement\n * @param id Agreement ID\n * @param data Agreement data\n */\n function updateAgreementData(\n bytes32 id,\n bytes32[] calldata data\n )\n external;\n /**\n * @dev Agreement updated event\n * @param agreementClass Contract address of the agreement\n * @param id Agreement ID\n * @param data Agreement data\n */\n event AgreementUpdated(\n address indexed agreementClass,\n bytes32 id,\n bytes32[] data\n );\n\n /**\n * @dev Close the agreement\n * @param id Agreement ID\n */\n function terminateAgreement(\n bytes32 id,\n uint dataLength\n )\n external;\n /**\n * @dev Agreement terminated event\n * @param agreementClass Contract address of the agreement\n * @param id Agreement ID\n */\n event AgreementTerminated(\n address indexed agreementClass,\n bytes32 id\n );\n\n /**\n * @dev Update agreement state slot\n * @param account Account to be updated\n *\n * @custom:note \n * - To clear the storage out, provide zero-ed array of intended length\n */\n function updateAgreementStateSlot(\n address account,\n uint256 slotId,\n bytes32[] calldata slotData\n )\n external;\n /**\n * @dev Agreement account state updated event\n * @param agreementClass Contract address of the agreement\n * @param account Account updated\n * @param slotId slot id of the agreement state\n */\n event AgreementStateUpdated(\n address indexed agreementClass,\n address indexed account,\n uint256 slotId\n );\n\n /**\n * @dev Get data of the slot of the state of an agreement\n * @param agreementClass Contract address of the agreement\n * @param account Account to query\n * @param slotId slot id of the state\n * @param dataLength length of the state data\n */\n function getAgreementStateSlot(\n address agreementClass,\n address account,\n uint256 slotId,\n uint dataLength\n )\n external view\n returns (bytes32[] memory slotData);\n\n /**\n * @notice Settle balance from an account by the agreement\n * @dev The agreement needs to make sure that the balance delta is balanced afterwards\n * @param account Account to query.\n * @param delta Amount of balance delta to be settled\n *\n * @custom:modifiers \n * - onlyAgreement\n */\n function settleBalance(\n address account,\n int256 delta\n )\n external;\n\n /**\n * @dev Make liquidation payouts (v2)\n * @param id Agreement ID\n * @param liquidationTypeData Data regarding the version of the liquidation schema and the type\n * @param liquidatorAccount Address of the executor of the liquidation\n * @param useDefaultRewardAccount Whether or not the default reward account receives the rewardAmount\n * @param targetAccount Account to be liquidated\n * @param rewardAmount The amount the rewarded account will receive\n * @param targetAccountBalanceDelta The delta amount the target account balance should change by\n *\n * @custom:note \n * - If a bailout is required (bailoutAmount > 0)\n * - the actual reward (single deposit) goes to the executor,\n * - while the reward account becomes the bailout account\n * - total bailout include: bailout amount + reward amount\n * - the targetAccount will be bailed out\n * - If a bailout is not required\n * - the targetAccount will pay the rewardAmount\n * - the liquidator (reward account in PIC period) will receive the rewardAmount\n *\n * @custom:modifiers \n * - onlyAgreement\n */\n function makeLiquidationPayoutsV2\n (\n bytes32 id,\n bytes memory liquidationTypeData,\n address liquidatorAccount,\n bool useDefaultRewardAccount,\n address targetAccount,\n uint256 rewardAmount,\n int256 targetAccountBalanceDelta\n ) external;\n /**\n * @dev Agreement liquidation event v2 (including agent account)\n * @param agreementClass Contract address of the agreement\n * @param id Agreement ID\n * @param liquidatorAccount Address of the executor of the liquidation\n * @param targetAccount Account of the stream sender\n * @param rewardAmountReceiver Account that collects the reward or bails out insolvent accounts\n * @param rewardAmount The amount the reward recipient account balance should change by\n * @param targetAccountBalanceDelta The amount the sender account balance should change by\n * @param liquidationTypeData The encoded liquidation type data including the version (how to decode)\n *\n * @custom:note \n * Reward account rule:\n * - if the agreement is liquidated during the PIC period\n * - the rewardAmountReceiver will get the rewardAmount (remaining deposit), regardless of the liquidatorAccount\n * - the targetAccount will pay for the rewardAmount\n * - if the agreement is liquidated after the PIC period AND the targetAccount is solvent\n * - the rewardAmountReceiver will get the rewardAmount (remaining deposit)\n * - the targetAccount will pay for the rewardAmount\n * - if the targetAccount is insolvent\n * - the liquidatorAccount will get the rewardAmount (single deposit)\n * - the default reward account (governance) will pay for both the rewardAmount and bailoutAmount\n * - the targetAccount will receive the bailoutAmount\n */\n event AgreementLiquidatedV2(\n address indexed agreementClass,\n bytes32 id,\n address indexed liquidatorAccount,\n address indexed targetAccount,\n address rewardAmountReceiver,\n uint256 rewardAmount,\n int256 targetAccountBalanceDelta,\n bytes liquidationTypeData\n );\n\n /**************************************************************************\n * Function modifiers for access control and parameter validations\n *\n * While they cannot be explicitly stated in function definitions, they are\n * listed in function definition comments instead for clarity.\n *\n * NOTE: solidity-coverage not supporting it\n *************************************************************************/\n\n /// @dev The msg.sender must be host contract\n //modifier onlyHost() virtual;\n\n /// @dev The msg.sender must be a listed agreement.\n //modifier onlyAgreement() virtual;\n\n /**************************************************************************\n * DEPRECATED\n *************************************************************************/\n\n /**\n * @dev Agreement liquidation event (DEPRECATED BY AgreementLiquidatedBy)\n * @param agreementClass Contract address of the agreement\n * @param id Agreement ID\n * @param penaltyAccount Account of the agreement to be penalized\n * @param rewardAccount Account that collect the reward\n * @param rewardAmount Amount of liquidation reward\n *\n * @custom:deprecated Use AgreementLiquidatedV2 instead\n */\n event AgreementLiquidated(\n address indexed agreementClass,\n bytes32 id,\n address indexed penaltyAccount,\n address indexed rewardAccount,\n uint256 rewardAmount\n );\n\n /**\n * @dev System bailout occurred (DEPRECATED BY AgreementLiquidatedBy)\n * @param bailoutAccount Account that bailout the penalty account\n * @param bailoutAmount Amount of account bailout\n *\n * @custom:deprecated Use AgreementLiquidatedV2 instead\n */\n event Bailout(\n address indexed bailoutAccount,\n uint256 bailoutAmount\n );\n\n /**\n * @dev Agreement liquidation event (DEPRECATED BY AgreementLiquidatedV2)\n * @param liquidatorAccount Account of the agent that performed the liquidation.\n * @param agreementClass Contract address of the agreement\n * @param id Agreement ID\n * @param penaltyAccount Account of the agreement to be penalized\n * @param bondAccount Account that collect the reward or bailout accounts\n * @param rewardAmount Amount of liquidation reward\n * @param bailoutAmount Amount of liquidation bailouot\n *\n * @custom:deprecated Use AgreementLiquidatedV2 instead\n *\n * @custom:note \n * Reward account rule:\n * - if bailout is equal to 0, then\n * - the bondAccount will get the rewardAmount,\n * - the penaltyAccount will pay for the rewardAmount.\n * - if bailout is larger than 0, then\n * - the liquidatorAccount will get the rewardAmouont,\n * - the bondAccount will pay for both the rewardAmount and bailoutAmount,\n * - the penaltyAccount will pay for the rewardAmount while get the bailoutAmount.\n */\n event AgreementLiquidatedBy(\n address liquidatorAccount,\n address indexed agreementClass,\n bytes32 id,\n address indexed penaltyAccount,\n address indexed bondAccount,\n uint256 rewardAmount,\n uint256 bailoutAmount\n );\n}\n"},"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.sol":{"content":"// SPDX-License-Identifier: AGPLv3\npragma solidity >= 0.8.4;\n\nimport { ISuperfluid } from \"./ISuperfluid.sol\";\nimport { ISuperfluidToken } from \"./ISuperfluidToken.sol\";\nimport { TokenInfo } from \"../tokens/TokenInfo.sol\";\nimport { IERC777 } from \"@openzeppelin/contracts/token/ERC777/IERC777.sol\";\nimport { IERC20 } from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\n/**\n * @title Super token (Superfluid Token + ERC20 + ERC777) interface\n * @author Superfluid\n */\ninterface ISuperToken is ISuperfluidToken, TokenInfo, IERC20, IERC777 {\n\n /**************************************************************************\n * Errors\n *************************************************************************/\n error SUPER_TOKEN_CALLER_IS_NOT_OPERATOR_FOR_HOLDER(); // 0xf7f02227\n error SUPER_TOKEN_NOT_ERC777_TOKENS_RECIPIENT(); // 0xfe737d05\n error SUPER_TOKEN_INFLATIONARY_DEFLATIONARY_NOT_SUPPORTED(); // 0xe3e13698\n error SUPER_TOKEN_NO_UNDERLYING_TOKEN(); // 0xf79cf656\n error SUPER_TOKEN_ONLY_SELF(); // 0x7ffa6648\n error SUPER_TOKEN_ONLY_HOST(); // 0x98f73704\n error SUPER_TOKEN_APPROVE_FROM_ZERO_ADDRESS(); // 0x81638627\n error SUPER_TOKEN_APPROVE_TO_ZERO_ADDRESS(); // 0xdf070274\n error SUPER_TOKEN_BURN_FROM_ZERO_ADDRESS(); // 0xba2ab184\n error SUPER_TOKEN_MINT_TO_ZERO_ADDRESS(); // 0x0d243157\n error SUPER_TOKEN_TRANSFER_FROM_ZERO_ADDRESS(); // 0xeecd6c9b\n error SUPER_TOKEN_TRANSFER_TO_ZERO_ADDRESS(); // 0xe219bd39\n\n /**\n * @dev Initialize the contract\n */\n function initialize(\n IERC20 underlyingToken,\n uint8 underlyingDecimals,\n string calldata n,\n string calldata s\n ) external;\n\n /**************************************************************************\n * TokenInfo & ERC777\n *************************************************************************/\n\n /**\n * @dev Returns the name of the token.\n */\n function name() external view override(IERC777, TokenInfo) returns (string memory);\n\n /**\n * @dev Returns the symbol of the token, usually a shorter version of the\n * name.\n */\n function symbol() external view override(IERC777, TokenInfo) returns (string memory);\n\n /**\n * @dev Returns the number of decimals used to get its user representation.\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\n * be displayed to a user as `5,05` (`505 / 10 ** 2`).\n *\n * Tokens usually opt for a value of 18, imitating the relationship between\n * Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is\n * called.\n *\n * @custom:note SuperToken always uses 18 decimals.\n *\n * This information is only used for _display_ purposes: it in\n * no way affects any of the arithmetic of the contract, including\n * {IERC20-balanceOf} and {IERC20-transfer}.\n */\n function decimals() external view override(TokenInfo) returns (uint8);\n\n /**************************************************************************\n * ERC20 & ERC777\n *************************************************************************/\n\n /**\n * @dev See {IERC20-totalSupply}.\n */\n function totalSupply() external view override(IERC777, IERC20) returns (uint256);\n\n /**\n * @dev Returns the amount of tokens owned by an account (`owner`).\n */\n function balanceOf(address account) external view override(IERC777, IERC20) returns(uint256 balance);\n\n /**************************************************************************\n * ERC20\n *************************************************************************/\n\n /**\n * @dev Moves `amount` tokens from the caller's account to `recipient`.\n *\n * @return Returns Success a boolean value indicating whether the operation succeeded.\n *\n * @custom:emits a {Transfer} event.\n */\n function transfer(address recipient, uint256 amount) external override(IERC20) returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * @notice This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external override(IERC20) view returns (uint256);\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n *\n * @return Returns Success a boolean value indicating whether the operation succeeded.\n *\n * @custom:note Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * @custom:emits an {Approval} event.\n */\n function approve(address spender, uint256 amount) external override(IERC20) returns (bool);\n\n /**\n * @dev Moves `amount` tokens from `sender` to `recipient` using the\n * allowance mechanism. `amount` is then deducted from the caller's\n * allowance.\n *\n * @return Returns Success a boolean value indicating whether the operation succeeded.\n *\n * @custom:emits a {Transfer} event.\n */\n function transferFrom(address sender, address recipient, uint256 amount) external override(IERC20) returns (bool);\n\n /**\n * @dev Atomically increases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * @custom:emits an {Approval} event indicating the updated allowance.\n *\n * @custom:requirements \n * - `spender` cannot be the zero address.\n */\n function increaseAllowance(address spender, uint256 addedValue) external returns (bool);\n\n /**\n * @dev Atomically decreases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * @custom:emits an {Approval} event indicating the updated allowance.\n *\n * @custom:requirements \n * - `spender` cannot be the zero address.\n * - `spender` must have allowance for the caller of at least\n * `subtractedValue`.\n */\n function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool);\n\n /**************************************************************************\n * ERC777\n *************************************************************************/\n\n /**\n * @dev Returns the smallest part of the token that is not divisible. This\n * means all token operations (creation, movement and destruction) must have\n * amounts that are a multiple of this number.\n *\n * @custom:note For super token contracts, this value is always 1\n */\n function granularity() external view override(IERC777) returns (uint256);\n\n /**\n * @dev Moves `amount` tokens from the caller's account to `recipient`.\n *\n * @dev If send or receive hooks are registered for the caller and `recipient`,\n * the corresponding functions will be called with `data` and empty\n * `operatorData`. See {IERC777Sender} and {IERC777Recipient}.\n *\n * @custom:emits a {Sent} event.\n *\n * @custom:requirements \n * - the caller must have at least `amount` tokens.\n * - `recipient` cannot be the zero address.\n * - if `recipient` is a contract, it must implement the {IERC777Recipient}\n * interface.\n */\n function send(address recipient, uint256 amount, bytes calldata data) external override(IERC777);\n\n /**\n * @dev Destroys `amount` tokens from the caller's account, reducing the\n * total supply and transfers the underlying token to the caller's account.\n *\n * If a send hook is registered for the caller, the corresponding function\n * will be called with `data` and empty `operatorData`. See {IERC777Sender}.\n *\n * @custom:emits a {Burned} event.\n *\n * @custom:requirements \n * - the caller must have at least `amount` tokens.\n */\n function burn(uint256 amount, bytes calldata data) external override(IERC777);\n\n /**\n * @dev Returns true if an account is an operator of `tokenHolder`.\n * Operators can send and burn tokens on behalf of their owners. All\n * accounts are their own operator.\n *\n * See {operatorSend} and {operatorBurn}.\n */\n function isOperatorFor(address operator, address tokenHolder) external override(IERC777) view returns (bool);\n\n /**\n * @dev Make an account an operator of the caller.\n *\n * See {isOperatorFor}.\n *\n * @custom:emits an {AuthorizedOperator} event.\n *\n * @custom:requirements \n * - `operator` cannot be calling address.\n */\n function authorizeOperator(address operator) external override(IERC777);\n\n /**\n * @dev Revoke an account's operator status for the caller.\n *\n * See {isOperatorFor} and {defaultOperators}.\n *\n * @custom:emits a {RevokedOperator} event.\n *\n * @custom:requirements \n * - `operator` cannot be calling address.\n */\n function revokeOperator(address operator) external override(IERC777);\n\n /**\n * @dev Returns the list of default operators. These accounts are operators\n * for all token holders, even if {authorizeOperator} was never called on\n * them.\n *\n * This list is immutable, but individual holders may revoke these via\n * {revokeOperator}, in which case {isOperatorFor} will return false.\n */\n function defaultOperators() external override(IERC777) view returns (address[] memory);\n\n /**\n * @dev Moves `amount` tokens from `sender` to `recipient`. The caller must\n * be an operator of `sender`.\n *\n * If send or receive hooks are registered for `sender` and `recipient`,\n * the corresponding functions will be called with `data` and\n * `operatorData`. See {IERC777Sender} and {IERC777Recipient}.\n *\n * @custom:emits a {Sent} event.\n *\n * @custom:requirements \n * - `sender` cannot be the zero address.\n * - `sender` must have at least `amount` tokens.\n * - the caller must be an operator for `sender`.\n * - `recipient` cannot be the zero address.\n * - if `recipient` is a contract, it must implement the {IERC777Recipient}\n * interface.\n */\n function operatorSend(\n address sender,\n address recipient,\n uint256 amount,\n bytes calldata data,\n bytes calldata operatorData\n ) external override(IERC777);\n\n /**\n * @dev Destroys `amount` tokens from `account`, reducing the total supply.\n * The caller must be an operator of `account`.\n *\n * If a send hook is registered for `account`, the corresponding function\n * will be called with `data` and `operatorData`. See {IERC777Sender}.\n *\n * @custom:emits a {Burned} event.\n *\n * @custom:requirements \n * - `account` cannot be the zero address.\n * - `account` must have at least `amount` tokens.\n * - the caller must be an operator for `account`.\n */\n function operatorBurn(\n address account,\n uint256 amount,\n bytes calldata data,\n bytes calldata operatorData\n ) external override(IERC777);\n\n /**************************************************************************\n * SuperToken custom token functions\n *************************************************************************/\n\n /**\n * @dev Mint new tokens for the account\n *\n * @custom:modifiers \n * - onlySelf\n */\n function selfMint(\n address account,\n uint256 amount,\n bytes memory userData\n ) external;\n\n /**\n * @dev Burn existing tokens for the account\n *\n * @custom:modifiers \n * - onlySelf\n */\n function selfBurn(\n address account,\n uint256 amount,\n bytes memory userData\n ) external;\n\n /**\n * @dev Transfer `amount` tokens from the `sender` to `recipient`.\n * If `spender` isn't the same as `sender`, checks if `spender` has allowance to\n * spend tokens of `sender`.\n *\n * @custom:modifiers \n * - onlySelf\n */\n function selfTransferFrom(\n address sender,\n address spender,\n address recipient,\n uint256 amount\n ) external;\n\n /**\n * @dev Give `spender`, `amount` allowance to spend the tokens of\n * `account`.\n *\n * @custom:modifiers \n * - onlySelf\n */\n function selfApproveFor(\n address account,\n address spender,\n uint256 amount\n ) external;\n\n /**************************************************************************\n * SuperToken extra functions\n *************************************************************************/\n\n /**\n * @dev Transfer all available balance from `msg.sender` to `recipient`\n */\n function transferAll(address recipient) external;\n\n /**************************************************************************\n * ERC20 wrapping\n *************************************************************************/\n\n /**\n * @dev Return the underlying token contract\n * @return tokenAddr Underlying token address\n */\n function getUnderlyingToken() external view returns(address tokenAddr);\n\n /**\n * @dev Upgrade ERC20 to SuperToken.\n * @param amount Number of tokens to be upgraded (in 18 decimals)\n *\n * @custom:note It will use `transferFrom` to get tokens. Before calling this\n * function you should `approve` this contract\n */\n function upgrade(uint256 amount) external;\n\n /**\n * @dev Upgrade ERC20 to SuperToken and transfer immediately\n * @param to The account to receive upgraded tokens\n * @param amount Number of tokens to be upgraded (in 18 decimals)\n * @param data User data for the TokensRecipient callback\n *\n * @custom:note It will use `transferFrom` to get tokens. Before calling this\n * function you should `approve` this contract\n * \n * @custom:warning\n * - there is potential of reentrancy IF the \"to\" account is a registered ERC777 recipient.\n * @custom:requirements \n * - if `data` is NOT empty AND `to` is a contract, it MUST be a registered ERC777 recipient otherwise it reverts.\n */\n function upgradeTo(address to, uint256 amount, bytes calldata data) external;\n\n /**\n * @dev Token upgrade event\n * @param account Account where tokens are upgraded to\n * @param amount Amount of tokens upgraded (in 18 decimals)\n */\n event TokenUpgraded(\n address indexed account,\n uint256 amount\n );\n\n /**\n * @dev Downgrade SuperToken to ERC20.\n * @dev It will call transfer to send tokens\n * @param amount Number of tokens to be downgraded\n */\n function downgrade(uint256 amount) external;\n\n /**\n * @dev Downgrade SuperToken to ERC20 and transfer immediately\n * @param to The account to receive downgraded tokens\n * @param amount Number of tokens to be downgraded (in 18 decimals)\n */\n function downgradeTo(address to, uint256 amount) external;\n\n /**\n * @dev Token downgrade event\n * @param account Account whose tokens are downgraded\n * @param amount Amount of tokens downgraded\n */\n event TokenDowngraded(\n address indexed account,\n uint256 amount\n );\n\n /**************************************************************************\n * Batch Operations\n *************************************************************************/\n\n /**\n * @dev Perform ERC20 approve by host contract.\n * @param account The account owner to be approved.\n * @param spender The spender of account owner's funds.\n * @param amount Number of tokens to be approved.\n *\n * @custom:modifiers \n * - onlyHost\n */\n function operationApprove(\n address account,\n address spender,\n uint256 amount\n ) external;\n\n function operationIncreaseAllowance(\n address account,\n address spender,\n uint256 addedValue\n ) external;\n\n function operationDecreaseAllowance(\n address account,\n address spender,\n uint256 subtractedValue\n ) external;\n\n /**\n * @dev Perform ERC20 transferFrom by host contract.\n * @param account The account to spend sender's funds.\n * @param spender The account where the funds is sent from.\n * @param recipient The recipient of the funds.\n * @param amount Number of tokens to be transferred.\n *\n * @custom:modifiers \n * - onlyHost\n */\n function operationTransferFrom(\n address account,\n address spender,\n address recipient,\n uint256 amount\n ) external;\n\n /**\n * @dev Perform ERC777 send by host contract.\n * @param spender The account where the funds is sent from.\n * @param recipient The recipient of the funds.\n * @param amount Number of tokens to be transferred.\n * @param data Arbitrary user inputted data\n *\n * @custom:modifiers \n * - onlyHost\n */\n function operationSend(\n address spender,\n address recipient,\n uint256 amount,\n bytes memory data\n ) external;\n\n /**\n * @dev Upgrade ERC20 to SuperToken by host contract.\n * @param account The account to be changed.\n * @param amount Number of tokens to be upgraded (in 18 decimals)\n *\n * @custom:modifiers \n * - onlyHost\n */\n function operationUpgrade(address account, uint256 amount) external;\n\n /**\n * @dev Downgrade ERC20 to SuperToken by host contract.\n * @param account The account to be changed.\n * @param amount Number of tokens to be downgraded (in 18 decimals)\n *\n * @custom:modifiers \n * - onlyHost\n */\n function operationDowngrade(address account, uint256 amount) external;\n\n\n /**************************************************************************\n * Function modifiers for access control and parameter validations\n *\n * While they cannot be explicitly stated in function definitions, they are\n * listed in function definition comments instead for clarity.\n *\n * NOTE: solidity-coverage not supporting it\n *************************************************************************/\n\n /// @dev The msg.sender must be the contract itself\n //modifier onlySelf() virtual\n\n}\n"},"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperTokenFactory.sol":{"content":"// SPDX-License-Identifier: AGPLv3\npragma solidity >= 0.8.4;\n\nimport { ISuperToken } from \"./ISuperToken.sol\";\n\nimport {\n IERC20,\n ERC20WithTokenInfo\n} from \"../tokens/ERC20WithTokenInfo.sol\";\n\n/**\n * @title Super token factory interface\n * @author Superfluid\n */\ninterface ISuperTokenFactory {\n\n /**************************************************************************\n * Errors\n *************************************************************************/\n error SUPER_TOKEN_FACTORY_ALREADY_EXISTS(); // 0x91d67972\n error SUPER_TOKEN_FACTORY_DOES_NOT_EXIST(); // 0x872cac48\n error SUPER_TOKEN_FACTORY_UNINITIALIZED(); // 0x1b39b9b4\n error SUPER_TOKEN_FACTORY_ONLY_HOST(); // 0x478b8e83\n error SUPER_TOKEN_FACTORY_NON_UPGRADEABLE_IS_DEPRECATED(); // 0x478b8e83\n error SUPER_TOKEN_FACTORY_ZERO_ADDRESS(); // 0x305c9e82\n\n /**\n * @dev Get superfluid host contract address\n */\n function getHost() external view returns(address host);\n\n /// @dev Initialize the contract\n function initialize() external;\n\n /**\n * @dev Get the current super token logic used by the factory\n */\n function getSuperTokenLogic() external view returns (ISuperToken superToken);\n\n /**\n * @dev Upgradability modes\n */\n enum Upgradability {\n /// Non upgradable super token, `host.updateSuperTokenLogic` will revert\n NON_UPGRADABLE,\n /// Upgradable through `host.updateSuperTokenLogic` operation\n SEMI_UPGRADABLE,\n /// Always using the latest super token logic\n FULL_UPGRADABLE\n }\n\n /**\n * @notice Create new super token wrapper for the underlying ERC20 token\n * @param underlyingToken Underlying ERC20 token\n * @param underlyingDecimals Underlying token decimals\n * @param upgradability Upgradability mode\n * @param name Super token name\n * @param symbol Super token symbol\n * @return superToken The deployed and initialized wrapper super token\n */\n function createERC20Wrapper(\n IERC20 underlyingToken,\n uint8 underlyingDecimals,\n Upgradability upgradability,\n string calldata name,\n string calldata symbol\n )\n external\n returns (ISuperToken superToken);\n\n /**\n * @notice Create new super token wrapper for the underlying ERC20 token with extra token info\n * @param underlyingToken Underlying ERC20 token\n * @param upgradability Upgradability mode\n * @param name Super token name\n * @param symbol Super token symbol\n * @return superToken The deployed and initialized wrapper super token\n * NOTE:\n * - It assumes token provide the .decimals() function\n */\n function createERC20Wrapper(\n ERC20WithTokenInfo underlyingToken,\n Upgradability upgradability,\n string calldata name,\n string calldata symbol\n )\n external\n returns (ISuperToken superToken);\n\n /**\n * @notice Creates a wrapper super token AND sets it in the canonical list OR reverts if it already exists\n * @dev salt for create2 is the keccak256 hash of abi.encode(address(_underlyingToken))\n * @param _underlyingToken Underlying ERC20 token\n * @return ISuperToken the created supertoken\n */\n function createCanonicalERC20Wrapper(ERC20WithTokenInfo _underlyingToken)\n external\n returns (ISuperToken);\n\n /**\n * @notice Computes/Retrieves wrapper super token address given the underlying token address\n * @dev We return from our canonical list if it already exists, otherwise we compute it\n * @dev note that this function only computes addresses for SEMI_UPGRADABLE SuperTokens\n * @param _underlyingToken Underlying ERC20 token address\n * @return superTokenAddress Super token address\n * @return isDeployed whether the super token is deployed AND set in the canonical mapping\n */\n function computeCanonicalERC20WrapperAddress(address _underlyingToken)\n external\n view\n returns (address superTokenAddress, bool isDeployed);\n\n /**\n * @notice Gets the canonical ERC20 wrapper super token address given the underlying token address\n * @dev We return the address if it exists and the zero address otherwise\n * @param _underlyingTokenAddress Underlying ERC20 token address\n * @return superTokenAddress Super token address\n */\n function getCanonicalERC20Wrapper(address _underlyingTokenAddress)\n external\n view\n returns (address superTokenAddress);\n\n /**\n * @dev Creates a new custom super token\n * @param customSuperTokenProxy address of the custom supertoken proxy\n */\n function initializeCustomSuperToken(\n address customSuperTokenProxy\n )\n external;\n\n /**\n * @dev Super token logic created event\n * @param tokenLogic Token logic address\n */\n event SuperTokenLogicCreated(ISuperToken indexed tokenLogic);\n\n /**\n * @dev Super token created event\n * @param token Newly created super token address\n */\n event SuperTokenCreated(ISuperToken indexed token);\n\n /**\n * @dev Custom super token created event\n * @param token Newly created custom super token address\n */\n event CustomSuperTokenCreated(ISuperToken indexed token);\n\n}\n"},"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo.sol":{"content":"// SPDX-License-Identifier: AGPLv3\npragma solidity >= 0.8.4;\n\nimport { IERC20 } from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport { TokenInfo } from \"./TokenInfo.sol\";\n\n/**\n * @title ERC20 token with token info interface\n * @author Superfluid\n * @dev Using abstract contract instead of interfaces because old solidity\n * does not support interface inheriting other interfaces\n * solhint-disable-next-line no-empty-blocks\n *\n */\n// solhint-disable-next-line no-empty-blocks\nabstract contract ERC20WithTokenInfo is IERC20, TokenInfo {}\n"},"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.sol":{"content":"// SPDX-License-Identifier: AGPLv3\npragma solidity >= 0.8.4;\n\n/**\n * @title ERC20 token info interface\n * @author Superfluid\n * @dev ERC20 standard interface does not specify these functions, but\n * often the token implementations have them.\n */\ninterface TokenInfo {\n /**\n * @dev Returns the name of the token.\n */\n function name() external view returns (string memory);\n\n /**\n * @dev Returns the symbol of the token, usually a shorter version of the\n * name.\n */\n function symbol() external view returns (string memory);\n\n /**\n * @dev Returns the number of decimals used to get its user representation.\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\n * be displayed to a user as `5,05` (`505 / 10 ** 2`).\n *\n * Tokens usually opt for a value of 18, imitating the relationship between\n * Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is\n * called.\n *\n * NOTE: This information is only used for _display_ purposes: it in\n * no way affects any of the arithmetic of the contract, including\n * {IERC20-balanceOf} and {IERC20-transfer}.\n */\n function decimals() external view returns (uint8);\n}\n"},"contracts/archives/OldFlow.sol":{"content":"// SPDX-License-Identifier: BUSL-1.1\npragma solidity ^0.8.9;\n\nimport {ISuperToken} from \"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol\";\nimport {SuperTokenV1Library} from \"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol\";\n\nimport {LibAutomate} from \"../libraries/core/LibAutomate.sol\";\nimport {LibControl, ArrayLengthNotMatch} from \"../libraries/core/LibControl.sol\";\nimport {LibSession, SessionNotStarted} from \"../libraries/core/LibSession.sol\";\nimport {OldLibFlow} from \"./OldLibFlow.sol\";\n\nimport \"../services/gelato/Types.sol\";\n\nerror TooEarly();\nerror UserFlowNotStopped();\n\ncontract OldFlow {\n // using SuperTokenV1Library for ISuperToken;\n // /**\n // * important:\n // * with this `openFlow` implementation, it is possible to\n // * open multiple flows with same session (cost to much to implement checks)\n // * this does not cause an\n // */\n // /**\n // * // TODO: need to check if you have sufficient deposits left or not\n // * SOL1: have user manually off flow\n // * SOL2: force settle blaance before open next flow (also force settle before withdraw)\n // */\n // function openFlow(\n // address _receiver,\n // address _superToken,\n // uint256 _lifespan\n // ) external {\n // LibFlow._setRemainingBalance(msg.sender, _superToken); // TODO: test\n // LibAutomate._requireSufficientAppGelatoBalance();\n // LibControl._requireSuperTokenSupported(_superToken);\n // LibSession.StorageSession storage sSession = LibSession\n // ._storageSession();\n // uint256 activeSessionNonce = LibSession._getCurrentNonce(\n // _receiver,\n // _superToken\n // );\n // if (\n // sSession\n // .sessionRecord[_receiver][_superToken][activeSessionNonce]\n // .timestampStart == 0\n // ) revert SessionNotStarted();\n // LibFlow.StorageFlow storage sFlow = LibFlow._storageFlow();\n // int96 flowRate = sSession\n // .sessionRecord[_receiver][_superToken][activeSessionNonce]\n // .effectiveFlowRate;\n // LibControl._requireSufficientAppSTBalance(_superToken, flowRate);\n // uint256 scheduledLifespan = LibFlow._getScheduledLifespan(\n // msg.sender,\n // _superToken,\n // _lifespan,\n // flowRate\n // ); // indirectly checks if sufficient deposit or not\n // // 1. set flow info\n // uint256 newFlowNonce = LibFlow._getNewNonce(msg.sender, _superToken);\n // LibFlow._requireSingleFlow(_superToken); // as we cannot detect when user is trying to open multiple active flows to same session, we just restrict flow opening to 1 active globally at a time\n // sFlow\n // .flowRecord[msg.sender][_superToken][newFlowNonce].receiver = _receiver;\n // sFlow\n // .flowRecord[msg.sender][_superToken][newFlowNonce]\n // .sessionNonce = activeSessionNonce;\n // LibControl.StorageControl storage sControl = LibControl\n // ._storageControl();\n // uint256 newControlNonce = sControl.controlNonce[_superToken];\n // sControl\n // .controlRecord[_superToken][newControlNonce].receiver = _receiver;\n // sControl\n // .controlRecord[_superToken][newControlNonce]\n // .sessionNonce = activeSessionNonce;\n // sControl\n // .controlRecord[_superToken][newControlNonce].timestampIncrease = block\n // .timestamp;\n // sFlow\n // .flowRecord[msg.sender][_superToken][newFlowNonce]\n // .controlNonce = newControlNonce;\n // // 2. start flow immediately\n // LibFlow._increaseFlow(\n // _superToken,\n // msg.sender,\n // _receiver,\n // newFlowNonce,\n // flowRate\n // );\n // // // 3. schedule stop flow\n // ModuleData memory moduleDataFlowStop = ModuleData({\n // modules: new Module[](2),\n // args: new bytes[](1)\n // });\n // moduleDataFlowStop.modules[0] = Module.TIME;\n // moduleDataFlowStop.modules[1] = Module.SINGLE_EXEC;\n // moduleDataFlowStop.args[0] = LibAutomate._timeModuleArg(\n // block.timestamp + scheduledLifespan,\n // scheduledLifespan\n // );\n // bytes memory execDataFlowStop = abi.encodeWithSelector(\n // this.decreaseFlow.selector,\n // _superToken,\n // msg.sender,\n // _receiver,\n // newFlowNonce,\n // flowRate\n // );\n // sFlow\n // .flowRecord[msg.sender][_superToken][newFlowNonce].taskId = LibAutomate\n // ._storageAutomate()\n // .gelatoAutobot\n // .createTask(\n // address(this),\n // execDataFlowStop,\n // moduleDataFlowStop,\n // address(0)\n // );\n // // 4. finishing\n // sFlow.flowNonce[msg.sender][_superToken] += 1;\n // sControl.controlNonce[_superToken] += 1;\n // }\n // function decreaseFlow(\n // address _superToken,\n // address _sender,\n // address _receiver,\n // uint256 _nonce,\n // int96 _flowRate\n // ) external {\n // LibAutomate._requireOnlyAutobot();\n // LibFlow._decreaseFlow(\n // _superToken,\n // _sender,\n // _receiver,\n // _nonce,\n // _flowRate\n // );\n // } // for autobot use // TODO: test frontend no one can call it !!\n // function closeFlow(address _superToken, uint256 _nonce) external {\n // LibFlow.StorageFlow storage sFlow = LibFlow._storageFlow();\n // uint256 minimumEndTimestamp = sFlow\n // .flowRecord[msg.sender][_superToken][_nonce].timestampIncrease +\n // LibControl._storageControl().minimumLifespan;\n // if (block.timestamp < minimumEndTimestamp) revert TooEarly();\n // // no need check supertoken valid or not in case it suddenly goes unsupported\n // // delete task\n // LibAutomate._storageAutomate().gelatoAutobot.cancelTask(\n // sFlow.flowRecord[msg.sender][_superToken][_nonce].taskId\n // );\n // // delete flow\n // address receiver = sFlow\n // .flowRecord[msg.sender][_superToken][_nonce].receiver;\n // uint256 sessionNonce = sFlow\n // .flowRecord[msg.sender][_superToken][_nonce].sessionNonce;\n // LibFlow._decreaseFlow(\n // _superToken,\n // msg.sender,\n // receiver,\n // _nonce,\n // LibSession\n // ._storageSession()\n // .sessionRecord[receiver][_superToken][sessionNonce]\n // .effectiveFlowRate\n // );\n // }\n // function depositSuperToken(address _superToken, uint256 _amount) external {\n // LibControl._requireSuperTokenSupported(_superToken);\n // LibFlow._depositSuperToken(_superToken, _amount);\n // }\n // function withdrawSuperToken(address _superToken, uint256 _amount) external {\n // /**\n // * don't need to check if supertoken suppported or not\n // * as there may be a chance that a supported supertoken\n // * gets removed but there is still user funds in the app\n // *\n // * in that case, just let user withdraw as will fail anyway if 0 amount\n // */\n // LibFlow.StorageFlow storage sFlow = LibFlow._storageFlow();\n // uint256 latestFlowNonce = LibFlow._getCurrentNonce(\n // msg.sender,\n // _superToken\n // );\n // uint256 timestampIncrease = sFlow\n // .flowRecord[msg.sender][_superToken][latestFlowNonce].timestampIncrease;\n // uint256 timestampDecrease = sFlow\n // .flowRecord[msg.sender][_superToken][latestFlowNonce].timestampDecrease;\n // (, , uint256 timestampStart, uint256 timestampStop) = LibSession\n // ._getSessionDataFromFlow(msg.sender, _superToken, latestFlowNonce);\n // if (\n // timestampStart != 0 && // to account for new addresses that has not started any flow yet\n // timestampIncrease >= timestampStart &&\n // timestampStop == 0 &&\n // timestampDecrease == 0\n // ) revert UserFlowNotStopped(); // TODO: standardize with \"LibFlow._hasActiveFlow\"\n // LibFlow._withdrawSuperToken(_superToken, _amount);\n // } // TODO: test\n // function withdrawSuperTokens(\n // address[] memory _superTokens,\n // uint256[] memory _amounts\n // ) external {\n // if (_superTokens.length != _amounts.length)\n // revert ArrayLengthNotMatch();\n // LibFlow.StorageFlow storage sFlow = LibFlow._storageFlow();\n // for (uint256 i = 0; i < _superTokens.length; i++) {\n // /**\n // * don't need to check if supertoken suppported or not\n // * as there may be a chance that a supported supertoken\n // * gets removed but there is still user funds in the app\n // *\n // * in that case, just let user withdraw as will fail anyway if 0 amount\n // */\n // uint256 latestFlowNonce = LibFlow._getCurrentNonce(\n // msg.sender,\n // _superTokens[i]\n // );\n // uint256 timestampIncrease = sFlow\n // .flowRecord[msg.sender][_superTokens[i]][latestFlowNonce]\n // .timestampIncrease;\n // uint256 timestampDecrease = sFlow\n // .flowRecord[msg.sender][_superTokens[i]][latestFlowNonce]\n // .timestampDecrease;\n // (, , uint256 timestampStart, uint256 timestampStop) = LibSession\n // ._getSessionDataFromFlow(\n // msg.sender,\n // _superTokens[i],\n // latestFlowNonce\n // );\n // if (\n // timestampStart != 0 && // to account for new addresses that has not started any flow yet\n // timestampIncrease >= timestampStart &&\n // timestampStop == 0 &&\n // timestampDecrease == 0\n // ) revert UserFlowNotStopped();\n // LibFlow._withdrawSuperToken(_superTokens[i], _amounts[i]);\n // }\n // }\n // function getAmountFlowed(\n // address _user,\n // address _superToken\n // ) external view returns (uint256) {\n // return LibFlow._getAmountFlowed(_user, _superToken);\n // }\n // // function getEffectiveBalanceRead(\n // // address _user,\n // // address _superToken\n // // ) external view returns (uint256) {\n // // return LibFlow._getEffectiveBalanceRead(_user, _superToken);\n // // } // TODO: this does not account for if broadcaster is still live or not !!\n // function getValidSafeLifespan(\n // address _user,\n // address _superToken,\n // int96 _flowRate\n // ) external view returns (uint256) {\n // return LibFlow._getValidSafeLifespan(_user, _superToken, _flowRate);\n // } // TODO: not so useful... remove.. ?\n // /**\n // * use `isViewSessionAllowed` to easily determine if viewer can \"join room\" or not\n // * !! NOT used to determine if can `openFlow` or not...\n // */\n // function isViewSessionAllowed(\n // address _viewer,\n // address _broadcaster\n // ) external view returns (bool) {\n // return LibFlow._isViewSessionAllowed(_viewer, _broadcaster);\n // }\n // function hasActiveFlow(\n // address _user,\n // address _superToken\n // ) external view returns (bool) {\n // return LibFlow._hasActiveFlow(_user, _superToken);\n // } // TODO: test\n // function getNewFlowNonce(\n // address _user,\n // address _superToken\n // ) external view returns (uint256) {\n // return LibFlow._getNewNonce(_user, _superToken);\n // } // TODO: test\n // function getFlowData(\n // address _user,\n // address _superToken,\n // uint256 _nonce\n // ) external view returns (address, uint256, uint256, uint256, bytes32) {\n // return LibFlow._getFlowData(_user, _superToken, _nonce);\n // }\n // function getDepositUser(\n // address _user,\n // address _superToken\n // ) external view returns (uint256) {\n // return LibFlow._getDepositUser(_user, _superToken);\n // }\n // function getDepositTotal(\n // address _superToken\n // ) external view returns (uint256) {\n // return LibFlow._getDepositTotal(_superToken);\n // }\n}\n\n// TODO: test - % take mechanism (just reduce flowrate based on % and leave cash in app contract?)\n// TODO: give broadcaster to optionally set an automated end date (do after get funding) - one reason to do this is viewer cannot withdraw if bc still live !!\n// TODO: emit events throughout (especially session & flow creation) so can track user stats eg: avg duration of flow, avg flow rate, sess vs flow count etc..\n// TODO: how to penalize broadcaster if dont end flow\n// // TODO: require checks for all fns\n"},"contracts/archives/OldLibFlow.sol":{"content":"//SPDX-License-Identifier: BUSL-1.1\npragma solidity ^0.8.9;\n\nimport {ISuperToken} from \"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol\";\nimport {SuperTokenV1Library} from \"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol\";\n\nimport {LibControl, ContractError} from \"../libraries/core/LibControl.sol\";\nimport {LibSession} from \"../libraries/core/LibSession.sol\";\n\nerror InsufficientFunds();\nerror InsufficientLifespan1();\nerror InsufficientLifespan2();\nerror InsufficientLifespan3();\nerror OnlySingleFlowAllowed();\nerror InvalidBalance1();\nerror InvalidBalance2();\n\nlibrary OldLibFlow {\n using SuperTokenV1Library for ISuperToken;\n\n bytes32 constant STORAGE_POSITION_FLOW = keccak256(\"ds.flow\");\n\n struct FlowRecord {\n uint256 controlNonce; // TODO: add to flow test\n address receiver;\n uint256 sessionNonce;\n uint256 timestampIncrease; // timestamp at which viewer opened a flow with bc\n uint256 timestampDecrease; // timestamp at which viewer closed a flow with bc // may be 0\n bytes32 taskId; // decrease flow of viewer to broadcaster\n // bool isBalanceSettled;\n }\n\n struct StorageFlow {\n // mapping(address => mapping(address => uint256)) unsettledFlowNonce; // viewer --> superToken --> nonce (counter) from this nonce count onwards is still unsettled\n mapping(address => mapping(address => uint256)) flowNonce; // viewer --> superToken --> nonce (counter)\n mapping(address => mapping(address => mapping(uint256 => FlowRecord))) flowRecord; // viewer --> superToken --> nonce --> flow record\n //\n mapping(address => mapping(address => uint256)) deposits; // viewer --> superToken --> amount deposit\n mapping(address => uint256) totalDeposits; // superToken --> total amount\n }\n\n function _storageFlow() internal pure returns (StorageFlow storage s) {\n bytes32 position = STORAGE_POSITION_FLOW;\n assembly {\n s.slot := position\n }\n }\n\n ///// ------- functions ------ /////\n\n ///// -------- mains --------- /////\n\n function _depositSuperToken(address _superToken, uint256 _amount) internal {\n ISuperToken(_superToken).transferFrom(\n msg.sender,\n address(this),\n _amount\n );\n\n _storageFlow().deposits[msg.sender][_superToken] += _amount;\n _storageFlow().totalDeposits[_superToken] += _amount;\n }\n\n function _withdrawSuperToken(\n address _superToken,\n uint256 _amount\n ) internal {\n // uint256 amountRemaining = _getEffectiveBalance(msg.sender, _superToken);\n _setRemainingBalance(msg.sender, _superToken); // TODO: test\n\n uint256 amountRemaining = _storageFlow().deposits[msg.sender][\n _superToken\n ];\n\n if (amountRemaining < _amount) revert InsufficientFunds();\n\n _storageFlow().deposits[msg.sender][_superToken] -= _amount;\n _storageFlow().totalDeposits[_superToken] -= _amount;\n\n ISuperToken(_superToken).transferFrom(\n address(this),\n msg.sender,\n _amount\n );\n }\n\n ///// ------- requires ------- /////\n\n function _requireSingleFlow(address _superToken) internal view {\n if (_hasActiveFlow(msg.sender, _superToken))\n revert OnlySingleFlowAllowed();\n }\n\n ///// ------- setters -------- /////\n\n function _setRemainingBalance(address _user, address _superToken) internal {\n uint256 amountFlowed = _getAmountFlowed(_user, _superToken);\n\n _storageFlow().deposits[_user][_superToken] -= amountFlowed;\n _storageFlow().totalDeposits[_superToken] -= amountFlowed;\n\n if (_storageFlow().deposits[_user][_superToken] < 0)\n revert InvalidBalance1(); // should never be run!\n if (_storageFlow().totalDeposits[_superToken] < 0)\n revert InvalidBalance2(); // should never be run!\n }\n\n ///// ------- getters -------- /////\n\n function _getNewNonce(\n address _user,\n address _superToken\n ) internal view returns (uint256) {\n return _storageFlow().flowNonce[_user][_superToken];\n }\n\n function _getCurrentNonce(\n address _user,\n address _superToken\n ) internal view returns (uint256) {\n uint256 nonce = _storageFlow().flowNonce[_user][_superToken];\n return nonce == 0 ? 0 : nonce - 1;\n }\n\n function _getValidSafeLifespan(\n address _user,\n address _superToken,\n int96 _flowRate\n ) internal view returns (uint256) {\n uint256 unsafeLifespan = _storageFlow().deposits[_user][_superToken] /\n uint256(uint96(_flowRate));\n\n LibControl.StorageControl storage sControl = LibControl\n ._storageControl();\n\n if (unsafeLifespan < sControl.minimumEndDuration)\n revert InsufficientLifespan1();\n\n uint256 safeLifespan = unsafeLifespan - sControl.minimumEndDuration;\n\n if (safeLifespan < sControl.minimumLifespan)\n revert InsufficientLifespan2();\n\n return safeLifespan;\n }\n\n /**\n * flowRate --> 1 sec\n * maximumFlowAmount --> maximumFlowAmount/flowRate [in sec]\n */\n function _getScheduledLifespan(\n address _user,\n address _superToken,\n uint256 _lifespan,\n int96 _flowRate\n ) internal view returns (uint256) {\n uint256 safeLifespan = _getValidSafeLifespan(\n _user,\n _superToken,\n _flowRate\n );\n\n LibControl.StorageControl storage sControl = LibControl\n ._storageControl();\n if (_lifespan < sControl.minimumEndDuration + sControl.minimumLifespan)\n revert InsufficientLifespan3();\n\n return _lifespan >= safeLifespan ? safeLifespan : _lifespan;\n }\n\n function _getAmountFlowed(\n address _user,\n address _superToken\n ) internal view returns (uint256) {\n uint256 amountFlowed;\n uint256 currentNonce = _getCurrentNonce(_user, _superToken);\n (\n address receiver,\n uint256 sessionNonce,\n uint256 timestampIncrease,\n uint256 timestampDecrease,\n\n ) = _getFlowData(_user, _superToken, currentNonce);\n (, uint96 flowRate, , uint256 timestampStop) = LibSession\n ._getSessionData(receiver, _superToken, sessionNonce);\n\n if (timestampDecrease != 0) {\n amountFlowed =\n uint256(flowRate) *\n (timestampDecrease - timestampIncrease);\n } else if (timestampStop != 0) {\n amountFlowed =\n uint256(flowRate) *\n (timestampStop - timestampIncrease);\n } else {\n amountFlowed = 0;\n }\n\n return amountFlowed;\n }\n\n // // NOTE: when edit this, edit `_getEffectiveBalanceRead` accordingly as well\n // function _getEffectiveBalance(\n // address _user,\n // address _superToken\n // ) internal returns (uint256) {\n // StorageFlow storage sFlow = _storageFlow();\n // uint256 unsettledFlowNonce = sFlow.unsettledFlowNonce[_user][\n // _superToken\n // ];\n // uint256 remainingNonces = _getNewNonce(_user, _superToken) -\n // unsettledFlowNonce; // as long as unsettledFlowNonce's state is only altered within `_getEffectiveBalance`, remainingNonces will not be negative value\n\n // uint256 amountFlow;\n // for (uint256 i = 0; i < remainingNonces; i++) {\n // // uint256 ii = unsettledFlowNonce + i;\n // // uint256 timestampIncrease = sFlow\n // // .flowRecord[_user][_superToken][ii].timestampIncrease;\n // // uint256 timestampDecrease = sFlow\n // // .flowRecord[_user][_superToken][ii].timestampDecrease;\n\n // // (, uint96 flowRate, , uint256 timestampStop) = LibSession\n // // ._getSessionDataFromFlow(_superToken, ii);\n\n // // if (timestampDecrease != 0) {\n // // amountFlow +=\n // // uint256(flowRate) *\n // // (timestampDecrease - timestampIncrease);\n // // } else if (timestampStop != 0) {\n // // amountFlow +=\n // // uint256(flowRate) *\n // // (timestampStop - timestampIncrease);\n // // } else {\n // // revert ContractError(); // for some reason ran this code when both timestampDecrease && timestampStop == 0\n // // }\n // amountFlow += _calculateAmountFlow(\n // _user,\n // _superToken,\n // unsettledFlowNonce + i\n // );\n\n // // if (_isSettle) sFlow.unsettledFlowNonce[_user][_superToken] += 1;\n // sFlow.unsettledFlowNonce[_user][_superToken] += 1;\n // }\n\n // return sFlow.deposits[_user][_superToken] - amountFlow;\n // }\n\n // function _getEffectiveBalanceRead(\n // address _user,\n // address _superToken\n // ) internal view returns (uint256) {\n // StorageFlow storage sFlow = _storageFlow();\n // uint256 unsettledFlowNonce = sFlow.unsettledFlowNonce[_user][\n // _superToken\n // ];\n // uint256 remainingNonces = _getNewNonce(_user, _superToken) -\n // unsettledFlowNonce; // as long as unsettledFlowNonce's state is only altered within `_getEffectiveBalance`, remainingNonces will not be negative value\n\n // uint256 amountFlow;\n // for (uint256 i = 0; i < remainingNonces; i++) {\n // amountFlow += _calculateAmountFlow(\n // _user,\n // _superToken,\n // unsettledFlowNonce + i\n // );\n // }\n\n // return sFlow.deposits[_user][_superToken] - amountFlow;\n // }\n\n // function _calculateAmountFlow(\n // address _user,\n // address _superToken,\n // uint256 _nonce\n // ) internal view returns (uint256) {\n // StorageFlow storage sFlow = _storageFlow();\n // uint256 timestampIncrease = sFlow\n // .flowRecord[_user][_superToken][_nonce].timestampIncrease;\n // uint256 timestampDecrease = sFlow\n // .flowRecord[_user][_superToken][_nonce].timestampDecrease;\n\n // (, uint96 flowRate, , uint256 timestampStop) = LibSession\n // ._getSessionDataFromFlow(_user, _superToken, _nonce);\n\n // if (timestampDecrease != 0) {\n // return uint256(flowRate) * (timestampDecrease - timestampIncrease);\n // } else if (timestampStop != 0) {\n // return uint256(flowRate) * (timestampStop - timestampIncrease);\n // } else {\n // revert ContractError(); // for some reason ran this code when both timestampDecrease && timestampStop == 0\n // }\n // }\n\n function _isViewSessionAllowed(\n address _viewer,\n address _broadcaster\n ) internal view returns (bool) {\n // LibSession.StorageSession storage sSession = LibSession\n // ._storageSession();\n\n // uint256 currentTimestamp = sSession\n // .sessionCurrent[_broadcaster]\n // .timestamp;\n // address[] memory superTokens = sSession\n // .sessionCurrent[_broadcaster]\n // .superTokens;\n\n (uint256 currentTimestamp, address[] memory superTokens) = LibSession\n ._getCurrentSessionData(_broadcaster);\n\n if (currentTimestamp == 0 || superTokens.length <= 0) return false;\n\n for (uint256 i = 0; i < superTokens.length; i++) {\n uint256 activeSessionNonce = LibSession._getCurrentNonce(\n _broadcaster,\n superTokens[i]\n );\n\n (, , uint256 timestampStart, uint256 timestampStop) = LibSession\n ._getSessionData(\n _broadcaster,\n superTokens[i],\n activeSessionNonce\n );\n\n if (timestampStart != currentTimestamp) return false;\n\n if (timestampStop != 0) return false;\n\n uint256 currentFlowNonce = _getCurrentNonce(\n _viewer,\n superTokens[i]\n );\n\n (\n address receiver,\n uint256 sessionNonce,\n uint256 timestampIncrease,\n uint256 timestampDecrease,\n\n ) = _getFlowData(_viewer, superTokens[i], currentFlowNonce);\n\n if (receiver != _broadcaster) return false;\n\n if (sessionNonce != activeSessionNonce) return false;\n\n if (timestampIncrease < currentTimestamp) return false;\n\n if (timestampDecrease != 0) return false;\n }\n\n return true;\n }\n\n function _hasActiveFlow(\n address _user,\n address _superToken\n ) internal view returns (bool) {\n uint256 newFlowNonce = _getNewNonce(_user, _superToken);\n if (newFlowNonce > 0) {\n (, , , uint256 timestampStop) = LibSession._getSessionDataFromFlow(\n _user,\n _superToken,\n newFlowNonce - 1\n );\n\n return\n _storageFlow()\n .flowRecord[_user][_superToken][newFlowNonce - 1]\n .timestampDecrease ==\n 0 &&\n timestampStop == 0;\n }\n return false;\n }\n\n function _getFlowData(\n address _user,\n address _superToken,\n uint256 _nonce\n ) internal view returns (address, uint256, uint256, uint256, bytes32) {\n address receiver = _storageFlow()\n .flowRecord[_user][_superToken][_nonce].receiver;\n uint256 sessionNonce = _storageFlow()\n .flowRecord[_user][_superToken][_nonce].sessionNonce;\n uint256 timestampIncrease = _storageFlow()\n .flowRecord[_user][_superToken][_nonce].timestampIncrease;\n uint256 timestampDecrease = _storageFlow()\n .flowRecord[_user][_superToken][_nonce].timestampDecrease;\n bytes32 taskId = _storageFlow()\n .flowRecord[_user][_superToken][_nonce].taskId;\n\n return (\n receiver,\n sessionNonce,\n timestampIncrease,\n timestampDecrease,\n taskId\n );\n }\n\n function _getDepositUser(\n address _user,\n address _superToken\n ) internal view returns (uint256) {\n return _storageFlow().deposits[_user][_superToken];\n }\n\n function _getDepositTotal(\n address _superToken\n ) internal view returns (uint256) {\n return _storageFlow().totalDeposits[_superToken];\n }\n\n ///// -------- utils --------- /////\n\n function _increaseFlow(\n address _superToken,\n address _sender,\n address _receiver,\n uint256 _nonce,\n int96 _flowRate\n ) internal {\n ISuperToken iSuperToken = ISuperToken(_superToken);\n int96 flowRate = iSuperToken.getFlowRate(address(this), _receiver);\n\n if (flowRate <= 0) {\n iSuperToken.createFlow(_receiver, _flowRate);\n } else {\n iSuperToken.updateFlow(_receiver, flowRate + _flowRate);\n }\n\n _storageFlow()\n .flowRecord[_sender][_superToken][_nonce].timestampIncrease = block\n .timestamp;\n }\n\n function _decreaseFlow(\n address _superToken,\n address _sender,\n address _receiver,\n uint256 _nonce,\n int96 _flowRate\n ) internal {\n ISuperToken iSuperToken = ISuperToken(_superToken);\n int96 flowRate = iSuperToken.getFlowRate(address(this), _receiver);\n\n if (flowRate - _flowRate <= 0) {\n iSuperToken.deleteFlow(address(this), _receiver);\n } else {\n iSuperToken.updateFlow(_receiver, flowRate - _flowRate);\n }\n\n _storageFlow()\n .flowRecord[_sender][_superToken][_nonce].timestampDecrease = block\n .timestamp;\n\n uint256 controlNonce = _storageFlow()\n .flowRecord[_sender][_superToken][_nonce].controlNonce;\n LibControl\n ._storageControl()\n .controlRecord[_superToken][controlNonce].timestampDecrease = block\n .timestamp;\n }\n}\n\n// TODO: a way to compute effective viewer balance without needing to withdraw (after funding)\n// TODO: (after funding) emit event in the \"withdraw fn\" of \"ControlRecord\"\n"},"contracts/Diamond.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\nimport {LibDiamond} from \"./libraries/utils/LibDiamond.sol\";\nimport {LibAccessControl} from \"./libraries/utils/LibAccessControl.sol\";\nimport {ICut} from \"./interfaces/utils/ICut.sol\";\n\ncontract Diamond {\n constructor(address _contractOwner, address _diamondCutFacet) payable {\n LibAccessControl._setupRole(\n LibAccessControl.DEFAULT_ADMIN_ROLE,\n _contractOwner\n );\n LibAccessControl._setupRole(\n LibAccessControl.MAINTAINER_ROLE,\n _contractOwner\n );\n LibAccessControl._setupRole(\n LibAccessControl.TREASURER_ROLE,\n _contractOwner\n );\n LibAccessControl._setupRole(\n LibAccessControl.STRATEGIST_ROLE,\n _contractOwner\n );\n\n // Add the diamondCut external function from the diamondCutFacet\n ICut.FacetCut[] memory cut = new ICut.FacetCut[](1);\n bytes4[] memory functionSelectors = new bytes4[](1);\n functionSelectors[0] = ICut.diamondCut.selector;\n cut[0] = ICut.FacetCut({\n facetAddress: _diamondCutFacet,\n action: ICut.FacetCutAction.Add,\n functionSelectors: functionSelectors\n });\n LibDiamond._cut(cut, address(0), \"\");\n }\n\n // Find facet for function that is called and execute the\n // function if a facet is found and return any value.\n fallback() external payable {\n LibDiamond.StorageDiamond storage s;\n bytes32 position = LibDiamond.STORAGE_POSITION_DIAMOND;\n // get diamond storage\n assembly {\n s.slot := position\n }\n // get facet from function selector\n address facet = s.selectorToFacetAndPosition[msg.sig].facetAddress;\n require(facet != address(0), \"Diamond: Function does not exist\");\n // Execute external function from facet using delegatecall and return any value.\n assembly {\n // copy function selector and any arguments\n calldatacopy(0, 0, calldatasize())\n // execute function call using the facet\n let result := delegatecall(gas(), facet, 0, calldatasize(), 0, 0)\n // get any return value\n returndatacopy(0, 0, returndatasize())\n // return any return value or error back to the caller\n switch result\n case 0 {\n revert(0, returndatasize())\n }\n default {\n return(0, returndatasize())\n }\n }\n }\n\n receive() external payable {}\n}\n"},"contracts/facets/core/Automate.sol":{"content":"// SPDX-License-Identifier: BUSL-1.1\npragma solidity ^0.8.9;\n\nimport {LibAccessControl} from \"../../libraries/utils/LibAccessControl.sol\";\nimport {LibAutomate} from \"../../libraries/core/LibAutomate.sol\";\nimport {IAutomate} from \"../../interfaces/core/IAutomate.sol\";\n\ncontract Automate is IAutomate {\n function getGelatoAddresses()\n external\n view\n returns (address, address, address, address, address)\n {\n return LibAutomate._getGelatoAddresses();\n }\n\n function getMinimumAppGelatoBalance() external view returns (uint256) {\n return LibAutomate._getMinimumAppGelatoBalance();\n }\n\n function setGelatoContracts(address _autobot) external {\n LibAccessControl._requireOnlyRole(LibAccessControl.STRATEGIST_ROLE);\n LibAutomate._setGelatoContracts(_autobot);\n }\n\n function setMinimumAppGelatoBalance(uint256 _value) external {\n LibAccessControl._requireOnlyRole(LibAccessControl.STRATEGIST_ROLE);\n LibAutomate._setMinimumAppGelatoBalance(_value);\n }\n\n function depositGelatoFunds() external payable {\n LibAutomate._depositGelatoFunds(msg.value);\n }\n\n function withdrawGelatoFunds(uint256 _amount) external {\n LibAccessControl._requireOnlyRole(LibAccessControl.TREASURER_ROLE);\n LibAutomate._withdrawGelatoFunds(_amount);\n }\n}\n"},"contracts/facets/core/Control.sol":{"content":"// SPDX-License-Identifier: BUSL-1.1\npragma solidity ^0.8.9;\n\nimport {LibAccessControl} from \"../../libraries/utils/LibAccessControl.sol\";\nimport {LibControl, ArrayLengthNotMatch, InvalidFlowRateBounds} from \"../../libraries/core/LibControl.sol\";\nimport {IControl} from \"../../interfaces/core/IControl.sol\";\n\nimport {IterableMappingBPS} from \"../../libraries/utils/IterableMappingBPS.sol\";\n\ncontract Control is IControl {\n function depositAsset(address _superToken, uint256 _amount) external {\n LibControl._requireSuperTokenSupported(_superToken);\n LibControl._depositAsset(_superToken, _amount);\n }\n\n function withdrawAsset(address _superToken, uint256 _amount) external {\n /**\n * don't need to check if supertoken suppported or not\n * as there may be a chance that a supported supertoken\n * gets removed but there is still user funds in the app\n *\n * in that case, just let user withdraw as will fail anyway if 0 amount\n */\n LibControl._withdrawAsset(_superToken, _amount);\n }\n\n function withdrawFeeBalance(address _superToken, uint256 _amount) external {\n LibAccessControl._requireOnlyRole(LibAccessControl.TREASURER_ROLE);\n LibControl._withdrawFeeBalance(_superToken, _amount);\n }\n\n /**\n * do external analysis on up to what count flow ended\n * to determine what `count` should be\n */\n function realizeFeeBalance(uint256 count, address _superToken) external {\n LibControl._realizeFeeBalance(count, _superToken);\n } // TODO: safe to allow anyone to call it?\n\n function setMinimumEndDuration(uint256 _duration) external {\n LibAccessControl._requireOnlyRole(LibAccessControl.STRATEGIST_ROLE);\n LibControl._requireNonZeroValue(_duration);\n LibControl._setMinimumEndDuration(_duration);\n }\n\n function setMinimumLifespan(uint256 _duration) external {\n LibAccessControl._requireOnlyRole(LibAccessControl.STRATEGIST_ROLE);\n LibControl._requireNonZeroValue(_duration);\n LibControl._setMinimumLifespan(_duration);\n }\n\n function setSTBufferAmount(uint256 _duration) external {\n LibAccessControl._requireOnlyRole(LibAccessControl.STRATEGIST_ROLE);\n LibControl._requireNonZeroValue(_duration);\n LibControl._setSTBufferAmount(_duration);\n }\n\n function addSuperToken(address _superToken) external {\n LibAccessControl._requireOnlyRole(LibAccessControl.STRATEGIST_ROLE);\n LibControl._addSuperToken(_superToken);\n }\n\n function removeSuperToken(address _superToken) external {\n LibAccessControl._requireOnlyRole(LibAccessControl.STRATEGIST_ROLE);\n LibControl._removeSuperToken(_superToken);\n }\n\n function toggleBPS() external {\n LibAccessControl._requireOnlyRole(LibAccessControl.STRATEGIST_ROLE);\n LibControl._toggleBPS();\n }\n\n function clearBPS() external {\n LibAccessControl._requireOnlyRole(LibAccessControl.STRATEGIST_ROLE);\n LibControl._clearBPS();\n }\n\n /**\n * - flowRate must be asc value\n * - flowRateUpperBound value of i must be equal flowRateLowerBound value of i+1\n *\n * eg:\n *\n * array | tag | bound | bps\n * index | | lower | upper |\n * ----------------------------------\n * 0 | 1 | 0.001 | 0.002 | 4000 (40%)\n * 1 | 2 | 0.002 | 0.003 | 2000 (20%)\n * 2 | 3 | 0.003 | 0.005 | 500 (5%)\n *\n * how to call (eg):\n * first call has tags related to 720p\n * second call has tags related to 1080p\n *\n */\n function setBPS(\n uint16[] memory _bpss,\n uint96[] memory _flowRateLowerBounds,\n uint96[] memory _flowRateUpperBounds,\n uint256[] memory _tags\n ) external {\n LibAccessControl._requireOnlyRole(LibAccessControl.STRATEGIST_ROLE);\n if (\n _bpss.length != _flowRateLowerBounds.length ||\n _bpss.length != _flowRateUpperBounds.length ||\n _bpss.length != _tags.length\n ) revert ArrayLengthNotMatch();\n\n for (uint256 i = 0; i < _bpss.length; i++) {\n if (i < _bpss.length - 1) {\n if (_flowRateUpperBounds[i] != _flowRateLowerBounds[i + 1])\n revert InvalidFlowRateBounds();\n }\n\n LibControl._setBPS(\n _bpss[i],\n _flowRateLowerBounds[i],\n _flowRateUpperBounds[i],\n _tags[i]\n );\n }\n }\n\n function setSBPS(uint16 _bps, address _user) external {\n LibAccessControl._requireOnlyRole(LibAccessControl.STRATEGIST_ROLE);\n LibControl._setSBPS(_bps, _user);\n }\n\n function getFeeBalance(\n address _superToken\n ) external view returns (uint256) {\n return LibControl._getFeeBalance(_superToken);\n }\n\n function getControlData(\n address _superToken,\n uint256 _nonce\n ) external view returns (address, uint256, uint256, uint256) {\n return LibControl._getControlData(_superToken, _nonce);\n }\n\n function getNewControlNonce(\n address _superToken\n ) external view returns (uint256) {\n return LibControl._getNewNonce(_superToken);\n }\n\n function getMinimumEndDuration() external view returns (uint256) {\n return LibControl._getMinimumEndDuration();\n }\n\n function getMinimumLifespan() external view returns (uint256) {\n return LibControl._getMinimumLifespan();\n }\n\n function getSTBufferDurationInSecond() external view returns (uint256) {\n return LibControl._getSTBufferDurationInSecond();\n }\n\n function isSuperTokensSupported(\n address _superToken\n ) external view returns (bool) {\n return LibControl._isSuperTokensSupported(_superToken);\n }\n\n function isBPSEnabled() external view returns (bool) {\n return LibControl._isBPSEnabled();\n }\n\n function getBPSSize() external view returns (uint256) {\n return LibControl._getBPSSize();\n }\n\n function getBPSData(\n uint256 _tag\n ) external view returns (uint16, uint96, uint96) {\n return LibControl._getBPSData(_tag);\n }\n\n function getSBPS(address _user) external view returns (uint16) {\n return LibControl._getSBPS(_user);\n }\n\n function getNewBufferedAppBalance(\n address _superToken,\n int96 _newFlowRate\n ) external view returns (uint256) {\n return LibControl._getNewBufferedAppBalance(_superToken, _newFlowRate);\n } // helper\n\n function isNewFlowRateAllowed(\n address _superToken,\n int96 _newFlowRate\n ) external view returns (bool) {\n return LibControl._isNewFlowRateAllowed(_superToken, _newFlowRate);\n } // helper\n\n function getAssetUser(\n address _user,\n address _superToken\n ) external view returns (uint256) {\n return LibControl._getAssetUser(_user, _superToken);\n }\n\n function getAssetTotal(\n address _superToken\n ) external view returns (uint256) {\n return LibControl._getAssetTotal(_superToken);\n }\n}\n"},"contracts/facets/core/Flow.sol":{"content":"// SPDX-License-Identifier: BUSL-1.1\npragma solidity ^0.8.9;\n\nimport {ISuperToken} from \"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol\";\nimport {SuperTokenV1Library} from \"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol\";\n\nimport {LibAutomate} from \"../../libraries/core/LibAutomate.sol\";\nimport {LibControl, ArrayLengthNotMatch} from \"../../libraries/core/LibControl.sol\";\nimport {LibSession, SessionNotStarted} from \"../../libraries/core/LibSession.sol\";\nimport {LibFlow} from \"../../libraries/core/LibFlow.sol\";\nimport {IFlow} from \"../../interfaces/core/IFlow.sol\";\n\nimport \"../../services/gelato/Types.sol\";\n\nerror TooEarly();\n\ncontract Flow is IFlow {\n using SuperTokenV1Library for ISuperToken;\n\n /**\n * important:\n * with this `openFlow` implementation, it is possible to\n * open multiple flows with same session (cost to much to implement checks)\n * this does not cause an\n */\n /**\n * // TODO: need to check if you have sufficient deposits left or not\n * SOL1: have user manually off flow\n * SOL2: force settle blaance before open next flow (also force settle before withdraw)\n */\n function openFlow(\n address _receiver,\n address _superToken,\n uint256 _lifespan\n ) external {\n LibFlow._requireNoActiveFlow(_superToken); // as we cannot detect when user is trying to open multiple active flows to same session, we just restrict flow opening to 1 active globally at a time\n LibFlow._setRemainingBalance(msg.sender, _superToken); // TODO: test\n\n LibAutomate._requireSufficientAppGelatoBalance();\n LibControl._requireSuperTokenSupported(_superToken);\n LibSession.StorageSession storage sSession = LibSession\n ._storageSession();\n uint256 activeSessionNonce = LibSession._getCurrentNonce(\n _receiver,\n _superToken\n );\n\n if (\n sSession\n .sessionRecord[_receiver][_superToken][activeSessionNonce]\n .timestampStart == 0\n ) revert SessionNotStarted();\n\n LibFlow.StorageFlow storage sFlow = LibFlow._storageFlow();\n int96 flowRate = sSession\n .sessionRecord[_receiver][_superToken][activeSessionNonce]\n .effectiveFlowRate;\n LibControl._requireSufficientAppSTBalance(_superToken, flowRate);\n uint256 scheduledLifespan = LibFlow._getScheduledLifespan(\n msg.sender,\n _superToken,\n _lifespan,\n flowRate\n ); // indirectly checks if sufficient deposit or not\n\n // 1. set flow info\n uint256 newFlowNonce = LibFlow._getNewNonce(msg.sender, _superToken);\n\n sFlow\n .flowRecord[msg.sender][_superToken][newFlowNonce].receiver = _receiver;\n sFlow\n .flowRecord[msg.sender][_superToken][newFlowNonce]\n .sessionNonce = activeSessionNonce;\n\n LibControl.StorageControl storage sControl = LibControl\n ._storageControl();\n uint256 newControlNonce = sControl.controlNonce[_superToken];\n sControl\n .controlRecord[_superToken][newControlNonce].receiver = _receiver;\n sControl\n .controlRecord[_superToken][newControlNonce]\n .sessionNonce = activeSessionNonce;\n sControl\n .controlRecord[_superToken][newControlNonce].timestampIncrease = block\n .timestamp;\n sFlow\n .flowRecord[msg.sender][_superToken][newFlowNonce]\n .controlNonce = newControlNonce;\n\n // 2. start flow immediately\n LibFlow._increaseFlow(\n _superToken,\n msg.sender,\n _receiver,\n newFlowNonce,\n flowRate\n );\n\n // // 3. schedule stop flow\n ModuleData memory moduleDataFlowStop = ModuleData({\n modules: new Module[](2),\n args: new bytes[](1)\n });\n\n moduleDataFlowStop.modules[0] = Module.TIME;\n moduleDataFlowStop.modules[1] = Module.SINGLE_EXEC;\n\n moduleDataFlowStop.args[0] = LibAutomate._timeModuleArg(\n block.timestamp + scheduledLifespan,\n scheduledLifespan\n );\n\n bytes memory execDataFlowStop = abi.encodeWithSelector(\n this.decreaseFlow.selector,\n _superToken,\n msg.sender,\n _receiver,\n newFlowNonce,\n flowRate\n );\n\n sFlow\n .flowRecord[msg.sender][_superToken][newFlowNonce].taskId = LibAutomate\n ._storageAutomate()\n .gelatoAutobot\n .createTask(\n address(this),\n execDataFlowStop,\n moduleDataFlowStop,\n address(0)\n );\n\n // 4. finishing\n sFlow.flowNonce[msg.sender][_superToken] += 1;\n sControl.controlNonce[_superToken] += 1;\n }\n\n function decreaseFlow(\n address _superToken,\n address _sender,\n address _receiver,\n uint256 _nonce,\n int96 _flowRate\n ) external {\n LibAutomate._requireOnlyAutobot();\n\n LibFlow._decreaseFlow(\n _superToken,\n _sender,\n _receiver,\n _nonce,\n _flowRate\n );\n } // for autobot use // TODO: test frontend no one can call it !!\n\n function closeFlow(address _superToken, uint256 _nonce) external {\n LibFlow.StorageFlow storage sFlow = LibFlow._storageFlow();\n\n uint256 minimumEndTimestamp = sFlow\n .flowRecord[msg.sender][_superToken][_nonce].timestampIncrease +\n LibControl._storageControl().minimumLifespan;\n\n if (block.timestamp < minimumEndTimestamp) revert TooEarly();\n // no need check supertoken valid or not in case it suddenly goes unsupported\n\n // delete task\n LibAutomate._storageAutomate().gelatoAutobot.cancelTask(\n sFlow.flowRecord[msg.sender][_superToken][_nonce].taskId\n );\n\n // delete flow\n address receiver = sFlow\n .flowRecord[msg.sender][_superToken][_nonce].receiver;\n uint256 sessionNonce = sFlow\n .flowRecord[msg.sender][_superToken][_nonce].sessionNonce;\n\n LibFlow._decreaseFlow(\n _superToken,\n msg.sender,\n receiver,\n _nonce,\n LibSession\n ._storageSession()\n .sessionRecord[receiver][_superToken][sessionNonce]\n .effectiveFlowRate\n );\n }\n\n function depositSuperToken(address _superToken, uint256 _amount) external {\n LibControl._requireSuperTokenSupported(_superToken);\n LibFlow._depositSuperToken(_superToken, _amount);\n }\n\n function withdrawSuperToken(address _superToken, uint256 _amount) external {\n /**\n * don't need to check if supertoken suppported or not\n * as there may be a chance that a supported supertoken\n * gets removed but there is still user funds in the app\n *\n * in that case, just let user withdraw as will fail anyway if 0 amount\n */\n LibFlow._requireNoActiveFlow(_superToken);\n\n LibFlow._withdrawSuperToken(_superToken, _amount);\n } // TODO: test\n\n function getAmountFlowed(\n address _user,\n address _superToken\n ) external view returns (uint256) {\n return LibFlow._getAmountFlowed(_user, _superToken);\n }\n\n function getValidSafeLifespan(\n address _user,\n address _superToken,\n int96 _flowRate\n ) external view returns (uint256) {\n return LibFlow._getValidSafeLifespan(_user, _superToken, _flowRate);\n } // TODO: not so useful... remove.. ?\n\n /**\n * use `isViewSessionAllowed` to easily determine if viewer can \"join room\" or not\n * !! NOT used to determine if can `openFlow` or not...\n */\n function isViewSessionAllowed(\n address _viewer,\n address _broadcaster\n ) external view returns (bool) {\n return LibFlow._isViewSessionAllowed(_viewer, _broadcaster);\n }\n\n function hasActiveFlow(\n address _user,\n address _superToken\n ) external view returns (bool) {\n return LibFlow._hasActiveFlow(_user, _superToken);\n } // TODO: test\n\n function getNewFlowNonce(\n address _user,\n address _superToken\n ) external view returns (uint256) {\n return LibFlow._getNewNonce(_user, _superToken);\n } // TODO: test\n\n function getFlowData(\n address _user,\n address _superToken,\n uint256 _nonce\n )\n external\n view\n returns (address, uint256, uint256, uint256, bytes32, bool)\n {\n return LibFlow._getFlowData(_user, _superToken, _nonce);\n }\n\n function getDepositUser(\n address _user,\n address _superToken\n ) external view returns (uint256) {\n return LibFlow._getDepositUser(_user, _superToken);\n }\n\n function getDepositTotal(\n address _superToken\n ) external view returns (uint256) {\n return LibFlow._getDepositTotal(_superToken);\n }\n}\n\n// TODO: test - % take mechanism (just reduce flowrate based on % and leave cash in app contract?)\n// TODO: give broadcaster to optionally set an automated end date (do after get funding) - one reason to do this is viewer cannot withdraw if bc still live !!\n// TODO: emit events throughout (especially session & flow creation) so can track user stats eg: avg duration of flow, avg flow rate, sess vs flow count etc..\n// TODO: how to penalize broadcaster if dont end flow\n// // TODO: require checks for all fns\n"},"contracts/facets/core/Session.sol":{"content":"// SPDX-License-Identifier: BUSL-1.1\npragma solidity ^0.8.9;\n\nimport {LibControl, ArrayLengthNotMatch} from \"../../libraries/core/LibControl.sol\";\nimport {LibSession} from \"../../libraries/core/LibSession.sol\";\nimport {ISession} from \"../../interfaces/core/ISession.sol\";\n\ncontract Session is ISession {\n function startSession(\n address _superToken,\n uint96 _flowRate,\n uint256 _tag\n ) external {\n LibControl._requireSuperTokenSupported(_superToken);\n LibSession._startSession(_superToken, _flowRate, _tag);\n\n LibSession.StorageSession storage sSession = LibSession\n ._storageSession();\n\n sSession.sessionCurrent[msg.sender].timestamp = block.timestamp;\n sSession.sessionCurrent[msg.sender].superTokens.push(_superToken);\n } // TODO: test // if want to do open 1 livestream and supp multiple token, can do externally \"batch tx\" (TODO: test this, otherwise cr8 new fn using loops)\n\n function stopSession(address _superToken) external {\n // LibControl._requireSuperTokenSupported(_superTokens[i]);\n /**\n * don't need to check if supertoken suppported or not\n * as there may be a chance that a supported supertoken\n * gets removed but there is still session active with the\n * supertoken\n *\n * in that case, just let user withdraw as will fail anyway if 0 amount\n */\n\n LibSession._stopSession(_superToken);\n delete LibSession._storageSession().sessionCurrent[msg.sender];\n } // TODO: test\n\n function startSessions(\n address[] memory _superTokens,\n uint96[] memory _flowRates,\n uint256[] memory _tags\n ) external {\n if (\n _superTokens.length != _flowRates.length ||\n _superTokens.length != _tags.length\n ) revert ArrayLengthNotMatch();\n\n for (uint256 i = 0; i < _superTokens.length; i++) {\n LibControl._requireSuperTokenSupported(_superTokens[i]);\n LibSession._startSession(_superTokens[i], _flowRates[i], _tags[i]);\n }\n\n LibSession.StorageSession storage sSession = LibSession\n ._storageSession();\n\n sSession.sessionCurrent[msg.sender].timestamp = block.timestamp;\n sSession.sessionCurrent[msg.sender].superTokens = _superTokens;\n }\n\n function stopSessions(address[] memory _superTokens) external {\n for (uint256 i = 0; i < _superTokens.length; i++) {\n // LibControl._requireSuperTokenSupported(_superTokens[i]);\n /**\n * don't need to check if supertoken suppported or not\n * as there may be a chance that a supported supertoken\n * gets removed but there is still session active with the\n * supertoken\n *\n * in that case, just let user withdraw as will fail anyway if 0 amount\n */\n\n LibSession._stopSession(_superTokens[i]);\n }\n\n delete LibSession._storageSession().sessionCurrent[msg.sender];\n }\n\n function getNewSessionNonce(\n address _user,\n address _superToken\n ) external view returns (uint256) {\n return LibSession._getNewNonce(_user, _superToken);\n }\n\n function getSessionData(\n address _user,\n address _superToken,\n uint256 _nonce\n ) external view returns (int96, uint96, uint256, uint256) {\n return LibSession._getSessionData(_user, _superToken, _nonce);\n }\n\n function getCurrentSessionData(\n address _user\n ) external view returns (uint256, address[] memory) {\n return LibSession._getCurrentSessionData(_user);\n }\n}\n"},"contracts/facets/utils/AccessControl.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\nimport {LibAccessControl} from \"../../libraries/utils/LibAccessControl.sol\";\nimport {IAccessControl} from \"../../interfaces/utils/IAccessControl.sol\";\n\ncontract AccessControl is IAccessControl {\n event RoleAdminChanged(\n bytes32 indexed role,\n bytes32 indexed previousAdminRole,\n bytes32 indexed newAdminRole\n );\n\n event RoleGranted(\n bytes32 indexed role,\n address indexed account,\n address indexed sender\n );\n\n event RoleRevoked(\n bytes32 indexed role,\n address indexed account,\n address indexed sender\n );\n\n function getDefaultAdminRole() external pure returns (bytes32) {\n return LibAccessControl.DEFAULT_ADMIN_ROLE;\n }\n\n function getRole(string memory _role) external pure returns (bytes32) {\n return keccak256(abi.encode(_role));\n }\n\n function hasRole(\n bytes32 _role,\n address _account\n ) external view returns (bool) {\n return LibAccessControl._hasRole(_role, _account);\n }\n\n function getRoleAdmin(bytes32 _role) external view returns (bytes32) {\n return LibAccessControl._getRoleAdmin(_role);\n }\n\n function grantRole(bytes32 _role, address _account) external {\n LibAccessControl._requireOnlyRole(\n LibAccessControl._getRoleAdmin(_role)\n );\n return LibAccessControl._grantRole(_role, _account);\n }\n\n function revokeRole(bytes32 _role, address _account) external {\n LibAccessControl._requireOnlyRole(\n LibAccessControl._getRoleAdmin(_role)\n );\n return LibAccessControl._revokeRole(_role, _account);\n }\n\n function renounceRole(bytes32 _role) external {\n return LibAccessControl._revokeRole(_role, msg.sender);\n }\n}\n"},"contracts/facets/utils/Cut.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\nimport {ICut} from \"../../interfaces/utils/ICut.sol\";\nimport {LibDiamond} from \"../../libraries/utils/LibDiamond.sol\";\nimport {LibAccessControl} from \"../../libraries/utils/LibAccessControl.sol\";\n\n// Remember to add the loupe functions from DiamondLoupeFacet to the diamond.\n// The loupe functions are required by the EIP2535 Diamonds standard\n\ncontract Cut is ICut {\n /// @notice Add/replace/remove any number of functions and optionally execute\n /// a function with delegatecall\n /// @param _diamondCut Contains the facet addresses and function selectors\n /// @param _init The address of the contract or facet to execute _calldata\n /// @param _calldata A function call, including function selector and arguments\n /// _calldata is executed with delegatecall on _init\n function diamondCut(\n FacetCut[] calldata _diamondCut,\n address _init,\n bytes calldata _calldata\n ) external override {\n LibAccessControl._requireOnlyRole(LibAccessControl.MAINTAINER_ROLE);\n LibDiamond._cut(_diamondCut, _init, _calldata);\n }\n}\n"},"contracts/facets/utils/Loupe.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\nimport {LibDiamond} from \"../../libraries/utils/LibDiamond.sol\";\nimport {ILoupe} from \"../../interfaces/utils/ILoupe.sol\";\nimport {IERC165} from \"../../interfaces/utils/IERC165.sol\";\n\n// The functions in DiamondLoupeFacet MUST be added to a diamond.\n// The EIP-2535 Diamond standard requires these functions.\n\ncontract Loupe is ILoupe, IERC165 {\n // Diamond Loupe Functions\n ////////////////////////////////////////////////////////////////////\n /// These functions are expected to be called frequently by tools.\n //\n // struct Facet {\n // address facetAddress;\n // bytes4[] functionSelectors;\n // }\n\n /// @notice Gets all facets and their selectors.\n /// @return facets_ Facet\n function facets() external view override returns (Facet[] memory facets_) {\n LibDiamond.StorageDiamond storage s = LibDiamond._storageDiamond();\n uint256 numFacets = s.facetAddresses.length;\n facets_ = new Facet[](numFacets);\n for (uint256 i; i < numFacets; i++) {\n address facetAddress_ = s.facetAddresses[i];\n facets_[i].facetAddress = facetAddress_;\n facets_[i].functionSelectors = s\n .facetFunctionSelectors[facetAddress_]\n .functionSelectors;\n }\n }\n\n /// @notice Gets all the function selectors provided by a facet.\n /// @param _facet The facet address.\n /// @return facetFunctionSelectors_\n function facetFunctionSelectors(\n address _facet\n ) external view override returns (bytes4[] memory facetFunctionSelectors_) {\n LibDiamond.StorageDiamond storage s = LibDiamond._storageDiamond();\n facetFunctionSelectors_ = s\n .facetFunctionSelectors[_facet]\n .functionSelectors;\n }\n\n /// @notice Get all the facet addresses used by a diamond.\n /// @return facetAddresses_\n function facetAddresses()\n external\n view\n override\n returns (address[] memory facetAddresses_)\n {\n LibDiamond.StorageDiamond storage s = LibDiamond._storageDiamond();\n facetAddresses_ = s.facetAddresses;\n }\n\n /// @notice Gets the facet that supports the given selector.\n /// @dev If facet is not found return address(0).\n /// @param _functionSelector The function selector.\n /// @return facetAddress_ The facet address.\n function facetAddress(\n bytes4 _functionSelector\n ) external view override returns (address facetAddress_) {\n LibDiamond.StorageDiamond storage s = LibDiamond._storageDiamond();\n facetAddress_ = s\n .selectorToFacetAndPosition[_functionSelector]\n .facetAddress;\n }\n\n // This implements ERC-165.\n function supportsInterface(\n bytes4 _interfaceId\n ) external view override returns (bool) {\n LibDiamond.StorageDiamond storage s = LibDiamond._storageDiamond();\n return s.supportedInterfaces[_interfaceId];\n }\n}\n"},"contracts/facets/utils/Utility.sol":{"content":"// SPDX-License-Identifier: BUSL-1.1\npragma solidity ^0.8.9;\n\nimport {ReentrancyGuard} from \"@openzeppelin/contracts/security/ReentrancyGuard.sol\";\n\nimport {LibAccessControl} from \"../../libraries/utils/LibAccessControl.sol\";\nimport {IUtility} from \"../../interfaces/utils/IUtility.sol\";\n\nerror FailedWithdrawNativeToken();\n\ncontract Utility is IUtility, ReentrancyGuard {\n function getNativeBalance() external view returns (uint256) {\n return address(this).balance;\n }\n\n function withdrawNativeBalance(uint256 _amount) external nonReentrant {\n LibAccessControl._requireOnlyRole(LibAccessControl.TREASURER_ROLE);\n\n (bool sent, ) = payable(msg.sender).call{value: _amount}(\"\");\n if (!sent) revert FailedWithdrawNativeToken();\n // require(sent, \"Withdraw funds failed\");\n }\n}\n"},"contracts/interfaces/core/IAutomate.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\ninterface IAutomate {\n function setGelatoContracts(address _ops) external;\n\n function getGelatoAddresses()\n external\n view\n returns (address, address, address, address, address);\n\n function withdrawGelatoFunds(uint256 _amount) external;\n\n function depositGelatoFunds() external payable;\n\n function setMinimumAppGelatoBalance(uint256 _value) external;\n\n function getMinimumAppGelatoBalance() external view returns (uint256);\n}\n"},"contracts/interfaces/core/IControl.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\ninterface IControl {\n function depositAsset(address _superToken, uint256 _amount) external;\n\n function withdrawAsset(address _superToken, uint256 _amount) external;\n\n function withdrawFeeBalance(address _superToken, uint256 _amount) external;\n\n function realizeFeeBalance(uint256 count, address _superToken) external;\n\n function setMinimumEndDuration(uint256 _duration) external;\n\n function setMinimumLifespan(uint256 _duration) external;\n\n function setSTBufferAmount(uint256 _duration) external;\n\n function addSuperToken(address _superToken) external;\n\n function removeSuperToken(address _superToken) external;\n\n function toggleBPS() external;\n\n function clearBPS() external;\n\n function setBPS(\n uint16[] memory _bpss,\n uint96[] memory _flowRateLowerBounds,\n uint96[] memory _flowRateUpperBounds,\n uint256[] memory _tags\n ) external;\n\n function setSBPS(uint16 _bps, address _user) external;\n\n function getFeeBalance(address _superToken) external view returns (uint256);\n\n function getControlData(\n address _superToken,\n uint256 _nonce\n ) external view returns (address, uint256, uint256, uint256);\n\n function getNewControlNonce(\n address _superToken\n ) external view returns (uint256);\n\n function getMinimumEndDuration() external view returns (uint256);\n\n function getMinimumLifespan() external view returns (uint256);\n\n function getSTBufferDurationInSecond() external view returns (uint256);\n\n function isSuperTokensSupported(\n address _superToken\n ) external view returns (bool);\n\n function isBPSEnabled() external view returns (bool);\n\n function getBPSSize() external view returns (uint256);\n\n function getBPSData(\n uint256 _tag\n ) external view returns (uint16, uint96, uint96);\n\n function getSBPS(address _user) external view returns (uint16);\n\n function getNewBufferedAppBalance(\n address _superToken,\n int96 _newFlowRate\n ) external view returns (uint256);\n\n function isNewFlowRateAllowed(\n address _superToken,\n int96 _newFlowRate\n ) external view returns (bool);\n\n function getAssetUser(\n address _user,\n address _superToken\n ) external view returns (uint256);\n\n function getAssetTotal(address _superToken) external view returns (uint256);\n}\n"},"contracts/interfaces/core/IFlow.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\n// import {ISuperToken} from \"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol\";\n\ninterface IFlow {\n function openFlow(\n address _receiver,\n address _superToken,\n uint256 _lifespan\n ) external;\n\n function decreaseFlow(\n address _superToken,\n address _sender,\n address _receiver,\n uint256 _nonce,\n int96 _flowRate\n ) external;\n\n function closeFlow(address _superToken, uint256 _nonce) external;\n\n function depositSuperToken(address _superToken, uint256 _amount) external;\n\n function withdrawSuperToken(address _superToken, uint256 _amount) external;\n\n function getAmountFlowed(\n address _user,\n address _superToken\n ) external view returns (uint256);\n\n function getValidSafeLifespan(\n address _user,\n address _superToken,\n int96 _flowRate\n ) external view returns (uint256);\n\n function isViewSessionAllowed(\n address _viewer,\n address _broadcaster\n ) external view returns (bool);\n\n function hasActiveFlow(\n address _user,\n address _superToken\n ) external view returns (bool);\n\n function getNewFlowNonce(\n address _user,\n address _superToken\n ) external view returns (uint256);\n\n function getFlowData(\n address _user,\n address _superToken,\n uint256 _nonce\n ) external view returns (address, uint256, uint256, uint256, bytes32, bool);\n\n function getDepositUser(\n address _user,\n address _superToken\n ) external view returns (uint256);\n\n function getDepositTotal(\n address _superToken\n ) external view returns (uint256);\n}\n"},"contracts/interfaces/core/ISession.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\ninterface ISession {\n function startSession(\n address _superToken,\n uint96 _flowRate,\n uint256 _tag\n ) external;\n\n function stopSession(address _superToken) external;\n\n function startSessions(\n address[] memory _superTokens,\n uint96[] memory _flowRates,\n uint256[] memory _tags\n ) external;\n\n function stopSessions(address[] memory _superTokens) external;\n\n function getNewSessionNonce(\n address _user,\n address _superToken\n ) external view returns (uint256);\n\n function getSessionData(\n address _user,\n address _superToken,\n uint256 _nonce\n ) external view returns (int96, uint96, uint256, uint256);\n\n function getCurrentSessionData(\n address _user\n ) external view returns (uint256, address[] memory);\n}\n"},"contracts/interfaces/utils/IAccessControl.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\ninterface IAccessControl {\n function getDefaultAdminRole() external pure returns (bytes32);\n\n function getRole(string memory _role) external pure returns (bytes32);\n\n function hasRole(\n bytes32 _role,\n address _account\n ) external view returns (bool);\n\n function getRoleAdmin(bytes32 _role) external view returns (bytes32);\n\n function grantRole(bytes32 _role, address _account) external;\n\n function revokeRole(bytes32 _role, address _account) external;\n\n function renounceRole(bytes32 _role) external;\n}\n"},"contracts/interfaces/utils/ICut.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\ninterface ICut {\n enum FacetCutAction {\n Add,\n Replace,\n Remove\n }\n // Add=0, Replace=1, Remove=2\n\n struct FacetCut {\n address facetAddress;\n FacetCutAction action;\n bytes4[] functionSelectors;\n }\n\n /// @notice Add/replace/remove any number of functions and optionally execute\n /// a function with delegatecall\n /// @param _diamondCut Contains the facet addresses and function selectors\n /// @param _init The address of the contract or facet to execute _calldata\n /// @param _calldata A function call, including function selector and arguments\n /// _calldata is executed with delegatecall on _init\n function diamondCut(\n FacetCut[] calldata _diamondCut,\n address _init,\n bytes calldata _calldata\n ) external;\n\n event DiamondCut(FacetCut[] _diamondCut, address _init, bytes _calldata);\n}\n"},"contracts/interfaces/utils/IERC165.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\ninterface IERC165 {\n /// @notice Query if a contract implements an interface\n /// @param interfaceId The interface identifier, as specified in ERC-165\n /// @dev Interface identification is specified in ERC-165. This function\n /// uses less than 30,000 gas.\n /// @return `true` if the contract implements `interfaceID` and\n /// `interfaceID` is not 0xffffffff, `false` otherwise\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\n}\n"},"contracts/interfaces/utils/ILoupe.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\n// A loupe is a small magnifying glass used to look at diamonds.\n// These functions look at diamonds\ninterface ILoupe {\n /// These functions are expected to be called frequently\n /// by tools.\n\n struct Facet {\n address facetAddress;\n bytes4[] functionSelectors;\n }\n\n /// @notice Gets all facet addresses and their four byte function selectors.\n /// @return facets_ Facet\n function facets() external view returns (Facet[] memory facets_);\n\n /// @notice Gets all the function selectors supported by a specific facet.\n /// @param _facet The facet address.\n /// @return facetFunctionSelectors_\n function facetFunctionSelectors(\n address _facet\n ) external view returns (bytes4[] memory facetFunctionSelectors_);\n\n /// @notice Get all the facet addresses used by a diamond.\n /// @return facetAddresses_\n function facetAddresses()\n external\n view\n returns (address[] memory facetAddresses_);\n\n /// @notice Gets the facet that supports the given selector.\n /// @dev If facet is not found return address(0).\n /// @param _functionSelector The function selector.\n /// @return facetAddress_ The facet address.\n function facetAddress(\n bytes4 _functionSelector\n ) external view returns (address facetAddress_);\n}\n"},"contracts/interfaces/utils/IUtility.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\ninterface IUtility {\n function getNativeBalance() external view returns (uint256);\n\n function withdrawNativeBalance(uint256 _amount) external;\n}\n"},"contracts/libraries/core/LibAutomate.sol":{"content":"//SPDX-License-Identifier: BUSL-1.1\npragma solidity ^0.8.9;\n\nimport \"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\";\nimport \"../../services/gelato/Types.sol\";\n\n// gelato based\n\nerror InsufficientAppGelatoBalance();\nerror CallerNotAutobot();\n\nlibrary LibAutomate {\n using SafeERC20 for IERC20;\n\n bytes32 constant STORAGE_POSITION_AUTOMATE = keccak256(\"ds.automate\");\n address internal constant AUTOBOT_PROXY_FACTORY =\n 0xC815dB16D4be6ddf2685C201937905aBf338F5D7;\n address internal constant GELATO_FEE =\n 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE;\n\n struct StorageAutomate {\n IAutomate gelatoAutobot;\n ITaskTreasuryUpgradable gelatoTreasury;\n address gelatoNetwork;\n uint256 minimumAppGelatoBalance;\n }\n\n function _storageAutomate()\n internal\n pure\n returns (StorageAutomate storage s)\n {\n bytes32 position = STORAGE_POSITION_AUTOMATE;\n assembly {\n s.slot := position\n }\n }\n\n ///// ------- functions ------ /////\n\n ///// -------- mains --------- /////\n\n function _withdrawGelatoFunds(uint256 _amount) internal {\n _storageAutomate().gelatoTreasury.withdrawFunds(\n payable(msg.sender),\n GELATO_FEE,\n _amount\n );\n } // withdrawer address restriction set in facet\n\n function _depositGelatoFunds(uint256 _amount) internal {\n _storageAutomate().gelatoTreasury.depositFunds{value: _amount}(\n address(this), // address(this) = address of diamond\n GELATO_FEE,\n _amount\n );\n }\n\n function _getModuleData(\n uint256 _durationStart,\n uint256 _durationInterval\n ) internal view returns (ModuleData memory) {\n ModuleData memory moduleData = ModuleData({\n modules: new Module[](2),\n args: new bytes[](1)\n });\n\n moduleData.modules[0] = Module.TIME;\n moduleData.modules[1] = Module.SINGLE_EXEC;\n\n moduleData.args[0] = _timeModuleArg(\n block.timestamp + _durationStart,\n _durationInterval\n );\n\n return moduleData;\n }\n\n function _transfer(uint256 _fee, address _feeToken) internal {\n if (_feeToken == GELATO_FEE) {\n (bool success, ) = _storageAutomate().gelatoNetwork.call{\n value: _fee\n }(\"\");\n require(success, \"LibAutomate: _transfer failed\");\n } else {\n SafeERC20.safeTransfer(\n IERC20(_feeToken),\n _storageAutomate().gelatoNetwork,\n _fee\n );\n }\n }\n\n function _getFeeDetails()\n internal\n view\n returns (uint256 fee, address feeToken)\n {\n (fee, feeToken) = _storageAutomate().gelatoAutobot.getFeeDetails();\n }\n\n ///// ------- requires ------- /////\n\n function _requireOnlyAutobot() internal view {\n if (msg.sender != address(_storageAutomate().gelatoAutobot))\n revert CallerNotAutobot();\n }\n\n function _requireSufficientAppGelatoBalance() internal view {\n if (\n _getAppGelatoBalance() <= _storageAutomate().minimumAppGelatoBalance\n ) revert InsufficientAppGelatoBalance();\n }\n\n ///// ------- setters -------- /////\n\n function _setGelatoContracts(address _autobot) internal {\n _storageAutomate().gelatoAutobot = IAutomate(_autobot);\n _storageAutomate().gelatoNetwork = IAutomate(_autobot).gelato();\n _storageAutomate().gelatoTreasury = _storageAutomate()\n .gelatoAutobot\n .taskTreasury();\n }\n\n function _setMinimumAppGelatoBalance(uint256 _value) internal {\n _storageAutomate().minimumAppGelatoBalance = _value;\n }\n\n ///// ------- getters -------- /////\n\n function _getGelatoAddresses()\n internal\n view\n returns (address, address, address, address, address)\n {\n return (\n address(_storageAutomate().gelatoAutobot),\n address(_storageAutomate().gelatoTreasury),\n _storageAutomate().gelatoNetwork,\n AUTOBOT_PROXY_FACTORY,\n GELATO_FEE\n );\n }\n\n function _getMinimumAppGelatoBalance() internal view returns (uint256) {\n return _storageAutomate().minimumAppGelatoBalance;\n }\n\n function _getAppGelatoBalance() internal view returns (uint256) {\n return\n _storageAutomate().gelatoTreasury.userTokenBalance(\n address(this),\n GELATO_FEE\n );\n }\n\n ///// -------- utils --------- /////\n\n function _resolverModuleArg(\n address _resolverAddress,\n bytes memory _resolverData\n ) internal pure returns (bytes memory) {\n return abi.encode(_resolverAddress, _resolverData);\n }\n\n function _timeModuleArg(\n uint256 _startTime,\n uint256 _interval\n ) internal pure returns (bytes memory) {\n return abi.encode(uint128(_startTime), uint128(_interval));\n }\n\n function _proxyModuleArg() internal pure returns (bytes memory) {\n return bytes(\"\");\n }\n\n function _singleExecModuleArg() internal pure returns (bytes memory) {\n return bytes(\"\");\n }\n}\n"},"contracts/libraries/core/LibControl.sol":{"content":"//SPDX-License-Identifier: BUSL-1.1\npragma solidity ^0.8.9;\n\nimport {ISuperToken} from \"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol\";\nimport {SuperTokenV1Library} from \"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol\";\nimport {IterableMappingBPS, BasisPointsRange} from \"../utils/IterableMappingBPS.sol\";\n\nimport {LibSession} from \"./LibSession.sol\";\n\nerror ZeroValue();\nerror ArrayLengthNotMatch();\nerror InvalidSuperToken();\nerror InsufficientAppSTBalance();\nerror InsufficientAssets();\nerror InsufficientFeeBalance();\nerror InvalidFlowRateBounds();\nerror InvalidBasisPoints();\nerror InvalidFlowRate();\nerror ContractError();\n\nlibrary LibControl {\n using SuperTokenV1Library for ISuperToken;\n using IterableMappingBPS for IterableMappingBPS.Map;\n\n bytes32 constant STORAGE_POSITION_CONTROL = keccak256(\"ds.control\");\n uint8 internal constant bpsMin = 100;\n uint16 internal constant bpsMax = 10000;\n\n struct ControlRecord {\n address receiver;\n uint256 sessionNonce;\n uint256 timestampIncrease;\n uint256 timestampDecrease;\n }\n\n struct StorageControl {\n IterableMappingBPS.Map bps; // howtouse: input tag (uint256), check if input flowRate is within range of bounds, if not revert\n mapping(address => uint16) sbps; // special\n bool isBPSEnabled;\n uint256 minimumEndDuration; // seconds\n uint256 minimumLifespan; // seconds\n uint256 stBufferDurationInSecond;\n mapping(address => bool) superTokens;\n //\n mapping(address => uint256) unsettledControlNonce;\n mapping(address => uint256) controlNonce; // superToken --> nonce\n mapping(address => mapping(uint256 => ControlRecord)) controlRecord; // superToken --> nonce --> control record\n mapping(address => uint256) feeBalance; // superToken --> amount fee balance\n //\n mapping(address => mapping(address => uint256)) assets; // investor --> superToken --> amount deposit\n mapping(address => uint256) totalAssets; // superToken --> total amount\n }\n\n function _storageControl()\n internal\n pure\n returns (StorageControl storage s)\n {\n bytes32 position = STORAGE_POSITION_CONTROL;\n assembly {\n s.slot := position\n }\n }\n\n ///// ------- functions ------ /////\n\n ///// -------- mains --------- /////\n\n function _depositAsset(address _superToken, uint256 _amount) internal {\n ISuperToken(_superToken).transferFrom(\n msg.sender,\n address(this),\n _amount\n );\n\n _storageControl().assets[msg.sender][_superToken] += _amount;\n _storageControl().totalAssets[_superToken] += _amount;\n }\n\n function _withdrawAsset(address _superToken, uint256 _amount) internal {\n if (_storageControl().assets[msg.sender][_superToken] < _amount)\n revert InsufficientAssets();\n\n _storageControl().assets[msg.sender][_superToken] -= _amount;\n _storageControl().totalAssets[_superToken] -= _amount;\n\n ISuperToken(_superToken).transfer(msg.sender, _amount);\n }\n\n function _withdrawFeeBalance(\n address _superToken,\n uint256 _amount\n ) internal {\n if (_storageControl().feeBalance[_superToken] < _amount)\n revert InsufficientFeeBalance();\n\n _storageControl().feeBalance[_superToken] -= _amount;\n\n ISuperToken(_superToken).transferFrom(\n address(this),\n msg.sender,\n _amount\n );\n }\n\n function _realizeFeeBalance(uint256 count, address _superToken) internal {\n _storageControl().feeBalance[_superToken] += _getAppFeeBalance(\n count,\n _superToken,\n true\n );\n }\n\n function _getAppFeeBalance(\n uint256 count,\n address _superToken,\n bool _isSettle\n ) internal returns (uint256) {\n StorageControl storage sControl = _storageControl();\n uint256 unsettledControlNonce = sControl.unsettledControlNonce[\n _superToken\n ];\n // uint256 remainingNonces = _getNewNonce(_superToken) -\n // unsettledControlNonce;\n\n uint256 amountFee;\n for (uint256 i = 0; i < count; i++) {\n // uint256 ii = unsettledControlNonce + i;\n // uint256 timestampIncrease = sControl\n // .controlRecord[_superToken][ii].timestampIncrease;\n // uint256 timestampDecrease = sControl\n // .controlRecord[_superToken][ii].timestampDecrease;\n\n // (\n // int96 effectiveFlowRate,\n // uint96 flowRate,\n // ,\n // uint256 timestampStop\n // ) = LibSession._getSessionDataFromControl(_superToken, ii);\n\n // uint256 feeFlowRate = flowRate - uint96(effectiveFlowRate);\n\n // if (timestampDecrease != 0) {\n // amountFee +=\n // feeFlowRate *\n // (timestampDecrease - timestampIncrease);\n // } else if (timestampStop != 0) {\n // amountFee += feeFlowRate * (timestampStop - timestampIncrease);\n // } else {\n // revert ContractError(); // for some reason ran this code when both timestampDecrease && timestampStop == 0\n // }\n\n amountFee += _calculateAmountFee(\n _superToken,\n unsettledControlNonce + i\n );\n\n if (_isSettle) sControl.unsettledControlNonce[_superToken] += 1;\n }\n\n return amountFee;\n } // TODO: as we cannot control when flow starts, do a \"nonce until\" input to set up to which record we want to calculate for\n\n // TODO: if session doesn't end, we stuck cannot withdraw as withdraw fee amount depends on both flow and sess and iterates linearly, more reason to implement sesion auto end\n\n function _calculateAmountFee(\n address _superToken,\n uint256 _nonce\n ) internal view returns (uint256) {\n StorageControl storage sControl = _storageControl();\n uint256 timestampIncrease = sControl\n .controlRecord[_superToken][_nonce].timestampIncrease;\n uint256 timestampDecrease = sControl\n .controlRecord[_superToken][_nonce].timestampDecrease;\n\n (\n int96 effectiveFlowRate,\n uint96 flowRate,\n ,\n uint256 timestampStop\n ) = LibSession._getSessionDataFromControl(_superToken, _nonce);\n\n uint256 feeFlowRate = flowRate - uint96(effectiveFlowRate);\n\n if (timestampDecrease != 0) {\n return feeFlowRate * (timestampDecrease - timestampIncrease);\n } else if (timestampStop != 0) {\n return feeFlowRate * (timestampStop - timestampIncrease);\n } else {\n revert ContractError(); // for some reason ran this code when both timestampDecrease && timestampStop == 0\n }\n }\n\n ///// ------- requires ------- /////\n\n function _requireNonZeroValue(uint256 _value) internal pure {\n if (_value <= 0) revert ZeroValue();\n }\n\n function _requireSuperTokenSupported(address _superToken) internal view {\n if (!_isSuperTokensSupported(_superToken)) revert InvalidSuperToken();\n }\n\n /**\n * guard against how long before app runs out of funds and loses its deposit\n *\n * * `STBufferDurationInSecond` is a critical parameter and should be set as large as possible\n */\n function _requireSufficientAppSTBalance(\n address _superToken,\n int96 _newFlowRate\n ) internal view {\n if (!_isNewFlowRateAllowed(_superToken, _newFlowRate))\n revert InsufficientAppSTBalance();\n }\n\n function _requireValidBasisPoints(uint16 _bps) internal pure {\n if (_bps < bpsMin || _bps > bpsMax) revert InvalidBasisPoints();\n }\n\n ///// ------- setters -------- /////\n\n function _getNewNonce(address _superToken) internal view returns (uint256) {\n return _storageControl().controlNonce[_superToken];\n }\n\n function _setMinimumEndDuration(uint256 _duration) internal {\n _storageControl().minimumEndDuration = _duration;\n }\n\n function _setMinimumLifespan(uint256 _duration) internal {\n _storageControl().minimumLifespan = _duration;\n }\n\n function _setSTBufferAmount(uint256 _duration) internal {\n _storageControl().stBufferDurationInSecond = _duration;\n }\n\n function _addSuperToken(address _superToken) internal {\n _storageControl().superTokens[_superToken] = true;\n }\n\n function _removeSuperToken(address _superToken) internal {\n delete _storageControl().superTokens[_superToken];\n }\n\n function _toggleBPS() internal {\n _storageControl().isBPSEnabled = !_storageControl().isBPSEnabled;\n }\n\n function _clearBPS() internal {\n uint256 sizeBeforeClear = _getBPSSize();\n for (uint256 i = 0; i < sizeBeforeClear; i++) {\n uint256 tag = _storageControl().bps.getKeyAtIndex(\n _getBPSSize() - 1\n );\n _storageControl().bps.remove(tag);\n }\n }\n\n function _setBPS(\n uint16 _bps,\n uint96 _flowRateLowerBound,\n uint96 _flowRateUpperBound,\n uint256 _tag\n ) internal {\n _requireValidBasisPoints(_bps);\n if (_flowRateUpperBound < _flowRateLowerBound)\n revert InvalidFlowRateBounds();\n _storageControl().bps.set(\n _tag,\n _bps,\n _flowRateLowerBound,\n _flowRateUpperBound\n );\n }\n\n function _setSBPS(uint16 _bps, address _user) internal {\n _requireValidBasisPoints(_bps);\n _storageControl().sbps[_user] = _bps;\n } // to clear, just call and set _bps to 0 value\n\n ///// ------- getters -------- /////\n\n function _getFeeBalance(\n address _superToken\n ) internal view returns (uint256) {\n return _storageControl().feeBalance[_superToken];\n }\n\n function _getControlData(\n address _superToken,\n uint256 _nonce\n ) internal view returns (address, uint256, uint256, uint256) {\n address receiver = _storageControl()\n .controlRecord[_superToken][_nonce].receiver;\n uint256 sessionNonce = _storageControl()\n .controlRecord[_superToken][_nonce].sessionNonce;\n uint256 timestampIncrease = _storageControl()\n .controlRecord[_superToken][_nonce].timestampIncrease;\n uint256 timestampDecrease = _storageControl()\n .controlRecord[_superToken][_nonce].timestampDecrease;\n\n return (receiver, sessionNonce, timestampIncrease, timestampDecrease);\n }\n\n function _getMinimumEndDuration() internal view returns (uint256) {\n return _storageControl().minimumEndDuration;\n }\n\n function _getMinimumLifespan() internal view returns (uint256) {\n return _storageControl().minimumLifespan;\n }\n\n function _getSTBufferDurationInSecond() internal view returns (uint256) {\n return _storageControl().stBufferDurationInSecond;\n }\n\n function _isSuperTokensSupported(\n address _superToken\n ) internal view returns (bool) {\n return _storageControl().superTokens[_superToken];\n }\n\n function _isBPSEnabled() internal view returns (bool) {\n return _storageControl().isBPSEnabled;\n }\n\n function _getBPSSize() internal view returns (uint256) {\n return _storageControl().bps.size();\n }\n\n function _getValidBPS(\n uint96 _flowRate,\n uint256 _tag\n ) internal view returns (uint16) {\n (\n uint16 bps,\n uint96 flowRateLowerBound,\n uint96 flowRateUpperBound\n ) = _getBPSData(_tag);\n\n if (_flowRate < flowRateLowerBound || _flowRate >= flowRateUpperBound)\n revert InvalidFlowRate();\n\n return bps;\n }\n\n function _getBPSData(\n uint256 _tag\n ) internal view returns (uint16, uint96, uint96) {\n BasisPointsRange memory data = _storageControl().bps.get(_tag);\n return (data.bps, data.flowRateLowerBound, data.flowRateUpperBound);\n }\n\n function _getSBPS(address _user) internal view returns (uint16) {\n return _storageControl().sbps[_user];\n }\n\n function _getNewBufferedAppBalance(\n address _superToken,\n int96 _newFlowRate\n ) internal view returns (uint256) {\n ISuperToken iSuperToken = ISuperToken(_superToken);\n uint256 newBufferAmount = iSuperToken.getBufferAmountByFlowRate(\n _newFlowRate\n );\n int96 contractNetFlowRate = iSuperToken.getNetFlowRate(address(this));\n\n return\n newBufferAmount +\n (uint256(uint96(contractNetFlowRate + _newFlowRate)) *\n _storageControl().stBufferDurationInSecond);\n }\n\n function _isNewFlowRateAllowed(\n address _superToken,\n int96 _newFlowRate\n ) internal view returns (bool) {\n uint256 contractBalance = ISuperToken(_superToken).balanceOf(\n address(this)\n );\n\n return\n contractBalance >\n _getNewBufferedAppBalance(_superToken, _newFlowRate);\n }\n\n function _getAssetUser(\n address _user,\n address _superToken\n ) internal view returns (uint256) {\n return _storageControl().assets[_user][_superToken];\n }\n\n function _getAssetTotal(\n address _superToken\n ) internal view returns (uint256) {\n return _storageControl().totalAssets[_superToken];\n }\n\n ///// -------- utils --------- /////\n}\n\n// TODO: a way to differentiate \"earned\" holdings from all holdings\n"},"contracts/libraries/core/LibFlow.sol":{"content":"//SPDX-License-Identifier: BUSL-1.1\npragma solidity ^0.8.9;\n\nimport {ISuperToken} from \"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol\";\nimport {SuperTokenV1Library} from \"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol\";\n\nimport {LibControl, ContractError} from \"./LibControl.sol\";\nimport {LibSession} from \"./LibSession.sol\";\n\n// import \"hardhat/console.sol\";\n\nerror InsufficientFunds();\nerror InsufficientLifespan1();\nerror InsufficientLifespan2();\nerror InsufficientLifespan3();\nerror HasActiveFlow();\nerror InvalidBalance1();\nerror InvalidBalance2();\n\nlibrary LibFlow {\n using SuperTokenV1Library for ISuperToken;\n\n bytes32 constant STORAGE_POSITION_FLOW = keccak256(\"ds.flow\");\n\n struct FlowRecord {\n uint256 controlNonce; // TODO: add to flow test\n address receiver;\n uint256 sessionNonce;\n uint256 timestampIncrease; // timestamp at which viewer opened a flow with bc\n uint256 timestampDecrease; // timestamp at which viewer closed a flow with bc // may be 0\n bytes32 taskId; // decrease flow of viewer to broadcaster\n bool isBalanceSettled;\n }\n\n struct StorageFlow {\n // mapping(address => mapping(address => uint256)) unsettledFlowNonce; // viewer --> superToken --> nonce (counter) from this nonce count onwards is still unsettled\n mapping(address => mapping(address => uint256)) flowNonce; // viewer --> superToken --> nonce (counter)\n mapping(address => mapping(address => mapping(uint256 => FlowRecord))) flowRecord; // viewer --> superToken --> nonce --> flow record\n //\n mapping(address => mapping(address => uint256)) deposits; // viewer --> superToken --> amount deposit\n mapping(address => uint256) totalDeposits; // superToken --> total amount\n }\n\n function _storageFlow() internal pure returns (StorageFlow storage s) {\n bytes32 position = STORAGE_POSITION_FLOW;\n assembly {\n s.slot := position\n }\n }\n\n ///// ------- functions ------ /////\n\n ///// -------- mains --------- /////\n\n function _depositSuperToken(address _superToken, uint256 _amount) internal {\n ISuperToken(_superToken).transferFrom(\n msg.sender,\n address(this),\n _amount\n );\n\n _storageFlow().deposits[msg.sender][_superToken] += _amount;\n _storageFlow().totalDeposits[_superToken] += _amount;\n }\n\n function _withdrawSuperToken(\n address _superToken,\n uint256 _amount\n ) internal {\n // uint256 amountRemaining = _getEffectiveBalance(msg.sender, _superToken);\n _setRemainingBalance(msg.sender, _superToken); // TODO: test\n\n uint256 amountRemaining = _storageFlow().deposits[msg.sender][\n _superToken\n ];\n\n if (amountRemaining < _amount) revert InsufficientFunds();\n\n _storageFlow().deposits[msg.sender][_superToken] -= _amount;\n _storageFlow().totalDeposits[_superToken] -= _amount;\n\n ISuperToken(_superToken).transferFrom(\n address(this),\n msg.sender,\n _amount\n );\n }\n\n ///// ------- requires ------- /////\n\n function _requireNoActiveFlow(address _superToken) internal view {\n if (_hasActiveFlow(msg.sender, _superToken)) revert HasActiveFlow();\n }\n\n ///// ------- setters -------- /////\n\n function _setRemainingBalance(address _user, address _superToken) internal {\n uint256 amountFlowed = _getAmountFlowed(_user, _superToken);\n\n _storageFlow().deposits[_user][_superToken] -= amountFlowed;\n _storageFlow().totalDeposits[_superToken] -= amountFlowed;\n\n if (_storageFlow().deposits[_user][_superToken] < 0)\n revert InvalidBalance1(); // should never be run!\n if (_storageFlow().totalDeposits[_superToken] < 0)\n revert InvalidBalance2(); // should never be run!\n\n uint256 newFlowNonce = _getNewNonce(_user, _superToken);\n if (newFlowNonce > 0)\n _storageFlow()\n .flowRecord[_user][_superToken][newFlowNonce - 1]\n .isBalanceSettled = true; // TODO: change other parts to depend on this instead of check timestamp.. etc\n // this is like, not only your previous session must be non-active, but it must have settled the balance!\n } // TODO: test\n\n ///// ------- getters -------- /////\n\n function _getValidSafeLifespan(\n address _user,\n address _superToken,\n int96 _flowRate\n ) internal view returns (uint256) {\n uint256 unsafeLifespan = _storageFlow().deposits[_user][_superToken] /\n uint256(uint96(_flowRate));\n\n LibControl.StorageControl storage sControl = LibControl\n ._storageControl();\n\n if (unsafeLifespan < sControl.minimumEndDuration)\n revert InsufficientLifespan1();\n\n uint256 safeLifespan = unsafeLifespan - sControl.minimumEndDuration;\n\n if (safeLifespan < sControl.minimumLifespan)\n revert InsufficientLifespan2();\n\n return safeLifespan;\n }\n\n /**\n * flowRate --> 1 sec\n * maximumFlowAmount --> maximumFlowAmount/flowRate [in sec]\n */\n function _getScheduledLifespan(\n address _user,\n address _superToken,\n uint256 _lifespan,\n int96 _flowRate\n ) internal view returns (uint256) {\n uint256 safeLifespan = _getValidSafeLifespan(\n _user,\n _superToken,\n _flowRate\n );\n\n LibControl.StorageControl storage sControl = LibControl\n ._storageControl();\n if (_lifespan < sControl.minimumEndDuration + sControl.minimumLifespan)\n revert InsufficientLifespan3();\n\n return _lifespan >= safeLifespan ? safeLifespan : _lifespan;\n }\n\n function _getAmountFlowed(\n address _user,\n address _superToken\n ) internal view returns (uint256) {\n uint256 amountFlowed;\n uint256 currentNonce = _getCurrentNonce(_user, _superToken);\n (\n address receiver,\n uint256 sessionNonce,\n uint256 timestampIncrease,\n uint256 timestampDecrease,\n ,\n bool isBalanceSettled\n ) = _getFlowData(_user, _superToken, currentNonce);\n (, uint96 flowRate, , uint256 timestampStop) = LibSession\n ._getSessionData(receiver, _superToken, sessionNonce);\n\n if (isBalanceSettled) {\n amountFlowed = 0;\n } else {\n if (timestampDecrease != 0) {\n amountFlowed =\n uint256(flowRate) *\n (timestampDecrease - timestampIncrease);\n } else if (timestampStop != 0) {\n amountFlowed =\n uint256(flowRate) *\n (timestampStop - timestampIncrease);\n } else {\n amountFlowed = 0;\n }\n }\n\n return amountFlowed;\n }\n\n function _hasActiveFlow(\n address _user,\n address _superToken\n ) internal view returns (bool) {\n uint256 newFlowNonce = _getNewNonce(_user, _superToken);\n if (newFlowNonce > 0) {\n (, , , uint256 timestampStop) = LibSession._getSessionDataFromFlow(\n _user,\n _superToken,\n newFlowNonce - 1\n );\n\n return\n _storageFlow()\n .flowRecord[_user][_superToken][newFlowNonce - 1]\n .timestampDecrease ==\n 0 &&\n timestampStop == 0;\n }\n return false;\n }\n\n function _isViewSessionAllowed(\n address _viewer,\n address _broadcaster\n ) internal view returns (bool) {\n (uint256 currentTimestamp, address[] memory superTokens) = LibSession\n ._getCurrentSessionData(_broadcaster);\n\n if (currentTimestamp == 0 || superTokens.length <= 0) return false;\n\n for (uint256 i = 0; i < superTokens.length; i++) {\n uint256 activeSessionNonce = LibSession._getCurrentNonce(\n _broadcaster,\n superTokens[i]\n );\n\n (, , uint256 timestampStart, uint256 timestampStop) = LibSession\n ._getSessionData(\n _broadcaster,\n superTokens[i],\n activeSessionNonce\n );\n\n if (timestampStart != currentTimestamp) return false;\n\n if (timestampStop != 0) return false;\n\n uint256 currentFlowNonce = _getCurrentNonce(\n _viewer,\n superTokens[i]\n );\n\n (\n address receiver,\n uint256 sessionNonce,\n uint256 timestampIncrease,\n uint256 timestampDecrease,\n ,\n\n ) = _getFlowData(_viewer, superTokens[i], currentFlowNonce);\n\n if (receiver != _broadcaster) return false;\n\n if (sessionNonce != activeSessionNonce) return false;\n\n if (timestampIncrease < currentTimestamp) return false;\n\n if (timestampDecrease != 0) return false;\n }\n\n return true;\n }\n\n function _getNewNonce(\n address _user,\n address _superToken\n ) internal view returns (uint256) {\n return _storageFlow().flowNonce[_user][_superToken];\n }\n\n function _getCurrentNonce(\n address _user,\n address _superToken\n ) internal view returns (uint256) {\n uint256 nonce = _storageFlow().flowNonce[_user][_superToken];\n return nonce == 0 ? 0 : nonce - 1;\n }\n\n function _getFlowData(\n address _user,\n address _superToken,\n uint256 _nonce\n )\n internal\n view\n returns (address, uint256, uint256, uint256, bytes32, bool)\n {\n return (\n _storageFlow().flowRecord[_user][_superToken][_nonce].receiver,\n _storageFlow().flowRecord[_user][_superToken][_nonce].sessionNonce,\n _storageFlow()\n .flowRecord[_user][_superToken][_nonce].timestampIncrease,\n _storageFlow()\n .flowRecord[_user][_superToken][_nonce].timestampDecrease,\n _storageFlow().flowRecord[_user][_superToken][_nonce].taskId,\n _storageFlow()\n .flowRecord[_user][_superToken][_nonce].isBalanceSettled\n );\n }\n\n function _getDepositUser(\n address _user,\n address _superToken\n ) internal view returns (uint256) {\n return _storageFlow().deposits[_user][_superToken];\n }\n\n function _getDepositTotal(\n address _superToken\n ) internal view returns (uint256) {\n return _storageFlow().totalDeposits[_superToken];\n }\n\n ///// -------- utils --------- /////\n\n function _increaseFlow(\n address _superToken,\n address _sender,\n address _receiver,\n uint256 _nonce,\n int96 _flowRate\n ) internal {\n ISuperToken iSuperToken = ISuperToken(_superToken);\n int96 flowRate = iSuperToken.getFlowRate(address(this), _receiver);\n\n if (flowRate <= 0) {\n iSuperToken.createFlow(_receiver, _flowRate);\n } else {\n iSuperToken.updateFlow(_receiver, flowRate + _flowRate);\n }\n\n _storageFlow()\n .flowRecord[_sender][_superToken][_nonce].timestampIncrease = block\n .timestamp;\n }\n\n function _decreaseFlow(\n address _superToken,\n address _sender,\n address _receiver,\n uint256 _nonce,\n int96 _flowRate\n ) internal {\n ISuperToken iSuperToken = ISuperToken(_superToken);\n int96 flowRate = iSuperToken.getFlowRate(address(this), _receiver);\n\n if (flowRate - _flowRate <= 0) {\n iSuperToken.deleteFlow(address(this), _receiver);\n } else {\n iSuperToken.updateFlow(_receiver, flowRate - _flowRate);\n }\n\n _storageFlow()\n .flowRecord[_sender][_superToken][_nonce].timestampDecrease = block\n .timestamp;\n\n uint256 controlNonce = _storageFlow()\n .flowRecord[_sender][_superToken][_nonce].controlNonce;\n LibControl\n ._storageControl()\n .controlRecord[_superToken][controlNonce].timestampDecrease = block\n .timestamp;\n }\n}\n\n// TODO: a way to compute effective viewer balance without needing to withdraw (after funding)\n// TODO: (after funding) emit event in the \"withdraw fn\" of \"ControlRecord\"\n"},"contracts/libraries/core/LibSession.sol":{"content":"//SPDX-License-Identifier: BUSL-1.1\npragma solidity ^0.8.9;\n\nimport {ISuperToken} from \"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol\";\nimport {SuperTokenV1Library} from \"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol\";\n\nimport {LibControl, InvalidFlowRate} from \"./LibControl.sol\";\nimport {LibFlow} from \"./LibFlow.sol\";\n\nerror PreviousSessionStillLive();\nerror SessionNotStarted();\nerror SessionAlreadyEnded();\n\nlibrary LibSession {\n using SuperTokenV1Library for ISuperToken;\n\n bytes32 constant STORAGE_POSITION_SESSION = keccak256(\"ds.session\");\n\n struct SessionCurrent {\n uint256 timestamp;\n address[] superTokens;\n }\n\n struct SessionRecord {\n int96 effectiveFlowRate;\n uint96 flowRate;\n uint256 timestampStart;\n uint256 timestampStop;\n }\n\n struct StorageSession {\n mapping(address => mapping(address => uint256)) sessionNonce; // broadcaster --> superToken --> nonce (counter)\n mapping(address => mapping(address => mapping(uint256 => SessionRecord))) sessionRecord; // broadcaster --> superToken --> nonce --> session history\n mapping(address => SessionCurrent) sessionCurrent; // broadcaster --> current live session\n }\n\n function _storageSession()\n internal\n pure\n returns (StorageSession storage s)\n {\n bytes32 position = STORAGE_POSITION_SESSION;\n assembly {\n s.slot := position\n }\n }\n\n ///// ------- functions ------ /////\n\n ///// -------- mains --------- /////\n\n /**\n * startSession helps with\n * 1. ensures only one supertoken session per broadcaster is open\n * (may have multiple sessionRecord but at different supertokens).\n * 2. to verify if different supertoken session belongs to the same \"livestream\",\n * for every supertoken latest nonce, `timestampStart` must equal `currentTimestamp`,\n * and currentTimestamp != 0. Do check externally (frontend/backend)\n */\n function _startSession(\n address _superToken,\n uint96 _flowRate,\n uint256 _tag\n ) internal {\n StorageSession storage sSession = _storageSession();\n uint256 newNonce = _getNewNonce(msg.sender, _superToken);\n\n if (\n newNonce > 0 &&\n sSession\n .sessionRecord[msg.sender][_superToken][newNonce - 1]\n .timestampStop ==\n 0\n ) revert PreviousSessionStillLive();\n\n int96 effectiveFlowRate = _getEffectiveFlowRate(\n msg.sender,\n _flowRate,\n _tag\n ); // TODO: test\n\n // start session\n sSession\n .sessionRecord[msg.sender][_superToken][newNonce]\n .effectiveFlowRate = effectiveFlowRate;\n sSession\n .sessionRecord[msg.sender][_superToken][newNonce].flowRate = _flowRate;\n sSession\n .sessionRecord[msg.sender][_superToken][newNonce].timestampStart = block\n .timestamp;\n\n // finish\n _storageSession().sessionNonce[msg.sender][_superToken] += 1;\n } // TODO: add require app gelato bal, after adding auto end sess functionality\n\n function _stopSession(address _superToken) internal {\n uint256 activeNonce = _getCurrentNonce(msg.sender, _superToken);\n if (\n _storageSession()\n .sessionRecord[msg.sender][_superToken][activeNonce]\n .timestampStart == 0\n ) revert SessionNotStarted();\n if (\n _storageSession()\n .sessionRecord[msg.sender][_superToken][activeNonce]\n .timestampStop != 0\n ) revert SessionAlreadyEnded();\n\n ISuperToken iSuperToken = ISuperToken(_superToken);\n int96 flowRate = iSuperToken.getFlowRate(address(this), msg.sender);\n if (flowRate != 0) iSuperToken.deleteFlow(address(this), msg.sender);\n\n // update\n _storageSession()\n .sessionRecord[msg.sender][_superToken][activeNonce]\n .timestampStop = block.timestamp;\n } // all the active taskId will just fail to execute\n\n ///// ------- requires ------- /////\n\n ///// ------- setters -------- /////\n\n ///// ------- getters -------- /////\n\n function _getEffectiveFlowRate(\n address _user,\n uint96 _flowRate,\n uint256 _tag\n ) internal view returns (int96) {\n uint16 bps;\n uint16 sbps = LibControl._storageControl().sbps[_user];\n if (sbps > 0) {\n bps = sbps;\n } else {\n if (LibControl._isBPSEnabled())\n bps = LibControl._getValidBPS(_flowRate, _tag);\n }\n\n if (bps == 0) {\n return int96(_flowRate);\n } else {\n if ((_flowRate * bps) < LibControl.bpsMax) revert InvalidFlowRate();\n return int96((_flowRate * bps) / LibControl.bpsMax);\n }\n } // TODO: test\n\n function _getNewNonce(\n address _user,\n address _superToken\n ) internal view returns (uint256) {\n return _storageSession().sessionNonce[_user][_superToken];\n }\n\n function _getCurrentNonce(\n address _user,\n address _superToken\n ) internal view returns (uint256) {\n uint256 nonce = _storageSession().sessionNonce[_user][_superToken];\n return nonce == 0 ? 0 : nonce - 1;\n }\n\n function _getCurrentSessionData(\n address _user\n ) internal view returns (uint256, address[] memory) {\n return (\n _storageSession().sessionCurrent[_user].timestamp,\n _storageSession().sessionCurrent[_user].superTokens\n );\n }\n\n function _getSessionData(\n address _user,\n address _superToken,\n uint256 _nonce\n ) internal view returns (int96, uint96, uint256, uint256) {\n return (\n _storageSession()\n .sessionRecord[_user][_superToken][_nonce].effectiveFlowRate,\n _storageSession()\n .sessionRecord[_user][_superToken][_nonce].flowRate,\n _storageSession()\n .sessionRecord[_user][_superToken][_nonce].timestampStart,\n _storageSession()\n .sessionRecord[_user][_superToken][_nonce].timestampStop\n );\n }\n\n function _getSessionDataFromFlow(\n address _user,\n address _superToken,\n uint256 _nonce\n ) internal view returns (int96, uint96, uint256, uint256) {\n LibFlow.StorageFlow storage sFlow = LibFlow._storageFlow();\n\n address receiver = sFlow\n .flowRecord[_user][_superToken][_nonce].receiver;\n uint256 sessionNonce = sFlow\n .flowRecord[_user][_superToken][_nonce].sessionNonce;\n\n return _getSessionData(receiver, _superToken, sessionNonce);\n }\n\n function _getSessionDataFromControl(\n address _superToken,\n uint256 _nonce\n ) internal view returns (int96, uint96, uint256, uint256) {\n LibControl.StorageControl storage sControl = LibControl\n ._storageControl();\n\n address receiver = sControl.controlRecord[_superToken][_nonce].receiver;\n uint256 sessionNonce = sControl\n .controlRecord[_superToken][_nonce].sessionNonce;\n\n return _getSessionData(receiver, _superToken, sessionNonce);\n }\n\n ///// -------- utils --------- /////\n}\n"},"contracts/libraries/core/LibTemplate.sol":{"content":"//SPDX-License-Identifier: BUSL-1.1\npragma solidity ^0.8.9;\n\nlibrary LibTemplate {\n ///// ------- functions ------ /////\n ///// -------- mains --------- /////\n ///// ------- requires ------- /////\n ///// ------- setters -------- /////\n ///// ------- getters -------- /////\n ///// -------- utils --------- /////\n}\n"},"contracts/libraries/utils/IterableMappingBPS.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.17;\n\nstruct BasisPointsRange {\n uint16 bps; // basis points // perc fee 1% = 100bps\n uint96 flowRateLowerBound;\n uint96 flowRateUpperBound;\n}\n\nlibrary IterableMappingBPS {\n // Iterable mapping from uint256 (tag) to BasisPointsRange;\n struct Map {\n uint256[] keys;\n mapping(uint256 => BasisPointsRange) values;\n mapping(uint256 => uint256) indexOf;\n mapping(uint256 => bool) inserted;\n }\n\n function get(\n Map storage map,\n uint256 key\n ) internal view returns (BasisPointsRange memory) {\n return map.values[key];\n }\n\n function getKeyAtIndex(\n Map storage map,\n uint256 index\n ) internal view returns (uint256) {\n return map.keys[index];\n }\n\n function size(Map storage map) internal view returns (uint256) {\n return map.keys.length;\n }\n\n function set(\n Map storage map,\n uint256 key,\n uint16 _bps,\n uint96 _flowRateLowerBound,\n uint96 _flowRateUpperBound\n ) internal {\n if (map.inserted[key]) {\n map.values[key].bps = _bps;\n map.values[key].flowRateLowerBound = _flowRateLowerBound;\n map.values[key].flowRateUpperBound = _flowRateUpperBound;\n } else {\n map.inserted[key] = true;\n\n map.values[key].bps = _bps;\n map.values[key].flowRateLowerBound = _flowRateLowerBound;\n map.values[key].flowRateUpperBound = _flowRateUpperBound;\n\n map.indexOf[key] = map.keys.length;\n map.keys.push(key);\n }\n }\n\n function remove(Map storage map, uint256 key) internal {\n if (!map.inserted[key]) {\n return;\n }\n\n delete map.inserted[key];\n delete map.values[key];\n\n uint index = map.indexOf[key];\n uint lastIndex = map.keys.length - 1;\n uint256 lastKey = map.keys[lastIndex];\n\n map.indexOf[lastKey] = index;\n delete map.indexOf[key];\n\n map.keys[index] = lastKey;\n map.keys.pop();\n }\n}\n"},"contracts/libraries/utils/LibAccessControl.sol":{"content":"//SPDX-License-Identifier: BUSL-1.1\npragma solidity ^0.8.9;\n\nimport \"@openzeppelin/contracts/utils/Strings.sol\";\n\nlibrary LibAccessControl {\n bytes32 constant STORAGE_POSITION_ACCESSCONTROL =\n keccak256(\"ds.accesscontrol\");\n\n bytes32 constant DEFAULT_ADMIN_ROLE = 0x00;\n bytes32 constant MAINTAINER_ROLE = keccak256(abi.encode(\"MAINTAINER_ROLE\"));\n bytes32 constant TREASURER_ROLE = keccak256(abi.encode(\"TREASURER_ROLE\"));\n bytes32 constant STRATEGIST_ROLE = keccak256(abi.encode(\"STRATEGIST_ROLE\"));\n bytes32 constant DEVELOPER_ROLE = keccak256(abi.encode(\"DEVELOPER_ROLE\"));\n\n struct RoleData {\n mapping(address => bool) members;\n bytes32 adminRole;\n }\n\n struct StorageAccessControl {\n mapping(bytes32 => RoleData) roles;\n }\n\n function _storageAccessControl()\n internal\n pure\n returns (StorageAccessControl storage s)\n {\n bytes32 position = STORAGE_POSITION_ACCESSCONTROL;\n assembly {\n s.slot := position\n }\n }\n\n function _requireOnlyRole(bytes32 _role) internal view {\n _checkRole(_role);\n }\n\n function _hasRole(\n bytes32 _role,\n address _account\n ) internal view returns (bool) {\n return _storageAccessControl().roles[_role].members[_account];\n }\n\n function _checkRole(bytes32 _role) internal view {\n _checkRole(_role, msg.sender);\n }\n\n function _checkRole(bytes32 _role, address _account) internal view {\n if (!_hasRole(_role, _account)) {\n revert(\n string(\n abi.encodePacked(\n \"AccessControl: account \",\n Strings.toHexString(uint160(_account), 20),\n \" is missing role \",\n Strings.toHexString(uint256(_role), 32)\n )\n )\n );\n }\n }\n\n function _getRoleAdmin(bytes32 _role) internal view returns (bytes32) {\n return _storageAccessControl().roles[_role].adminRole;\n }\n\n event RoleAdminChanged(\n bytes32 indexed role,\n bytes32 indexed previousAdminRole,\n bytes32 indexed newAdminRole\n );\n\n function _setRoleAdmin(bytes32 _role, bytes32 _adminRole) internal {\n bytes32 previousAdminRole = _getRoleAdmin(_role);\n _storageAccessControl().roles[_role].adminRole = _adminRole;\n emit RoleAdminChanged(_role, previousAdminRole, _adminRole);\n }\n\n event RoleGranted(\n bytes32 indexed role,\n address indexed account,\n address indexed sender\n );\n\n function _grantRole(bytes32 _role, address _account) internal {\n if (!_hasRole(_role, _account)) {\n _storageAccessControl().roles[_role].members[_account] = true;\n emit RoleGranted(_role, _account, msg.sender);\n }\n }\n\n event RoleRevoked(\n bytes32 indexed role,\n address indexed account,\n address indexed sender\n );\n\n function _revokeRole(bytes32 _role, address _account) internal {\n if (_hasRole(_role, _account)) {\n _storageAccessControl().roles[_role].members[_account] = false;\n emit RoleRevoked(_role, _account, msg.sender);\n }\n }\n\n function _setupRole(bytes32 _role, address _account) internal {\n _grantRole(_role, _account);\n }\n}\n"},"contracts/libraries/utils/LibDiamond.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.9;\n\nimport {ICut} from \"../../interfaces/utils/ICut.sol\";\n\n// Remember to add the loupe functions from DiamondLoupeFacet to the diamond.\n// The loupe functions are required by the EIP2535 Diamonds standard\n\nerror InitializationFunctionReverted(\n address _initializationContractAddress,\n bytes _calldata\n);\n\nlibrary LibDiamond {\n bytes32 constant STORAGE_POSITION_DIAMOND =\n keccak256(\"diamond.standard.diamond.storage\");\n\n struct FacetAddressAndPosition {\n address facetAddress;\n uint96 functionSelectorPosition; // position in facetFunctionSelectors.functionSelectors array\n }\n\n struct FacetFunctionSelectors {\n bytes4[] functionSelectors;\n uint256 facetAddressPosition; // position of facetAddress in facetAddresses array\n }\n\n struct StorageDiamond {\n // maps function selector to the facet address and\n // the position of the selector in the facetFunctionSelectors.selectors array\n mapping(bytes4 => FacetAddressAndPosition) selectorToFacetAndPosition;\n // maps facet addresses to function selectors\n mapping(address => FacetFunctionSelectors) facetFunctionSelectors;\n // facet addresses\n address[] facetAddresses;\n // Used to query if a contract implements an interface.\n // Used to implement ERC-165.\n mapping(bytes4 => bool) supportedInterfaces;\n }\n\n function _storageDiamond()\n internal\n pure\n returns (StorageDiamond storage s)\n {\n bytes32 position = STORAGE_POSITION_DIAMOND;\n assembly {\n s.slot := position\n }\n }\n\n event DiamondCut(\n ICut.FacetCut[] _diamondCut,\n address _init,\n bytes _calldata\n );\n\n // Internal function version of diamondCut\n function _cut(\n ICut.FacetCut[] memory _diamondCut,\n address _init,\n bytes memory _calldata\n ) internal {\n for (\n uint256 facetIndex;\n facetIndex < _diamondCut.length;\n facetIndex++\n ) {\n ICut.FacetCutAction action = _diamondCut[facetIndex].action;\n if (action == ICut.FacetCutAction.Add) {\n _addFunctions(\n _diamondCut[facetIndex].facetAddress,\n _diamondCut[facetIndex].functionSelectors\n );\n } else if (action == ICut.FacetCutAction.Replace) {\n _replaceFunctions(\n _diamondCut[facetIndex].facetAddress,\n _diamondCut[facetIndex].functionSelectors\n );\n } else if (action == ICut.FacetCutAction.Remove) {\n _removeFunctions(\n _diamondCut[facetIndex].facetAddress,\n _diamondCut[facetIndex].functionSelectors\n );\n } else {\n revert(\"LibDiamondCut: Incorrect FacetCutAction\");\n }\n }\n emit DiamondCut(_diamondCut, _init, _calldata);\n _initializeDiamondCut(_init, _calldata);\n }\n\n function _addFunctions(\n address _facetAddress,\n bytes4[] memory _functionSelectors\n ) internal {\n require(\n _functionSelectors.length > 0,\n \"LibDiamondCut: No selectors in facet to cut\"\n );\n StorageDiamond storage s = _storageDiamond();\n require(\n _facetAddress != address(0),\n \"LibDiamondCut: Add facet can't be address(0)\"\n );\n uint96 selectorPosition = uint96(\n s.facetFunctionSelectors[_facetAddress].functionSelectors.length\n );\n // add new facet address if it does not exist\n if (selectorPosition == 0) {\n _addFacet(s, _facetAddress);\n }\n for (\n uint256 selectorIndex;\n selectorIndex < _functionSelectors.length;\n selectorIndex++\n ) {\n bytes4 selector = _functionSelectors[selectorIndex];\n address oldFacetAddress = s\n .selectorToFacetAndPosition[selector]\n .facetAddress;\n require(\n oldFacetAddress == address(0),\n \"LibDiamondCut: Can't add function that already exists\"\n );\n _addFunction(s, selector, selectorPosition, _facetAddress);\n selectorPosition++;\n }\n }\n\n function _replaceFunctions(\n address _facetAddress,\n bytes4[] memory _functionSelectors\n ) internal {\n require(\n _functionSelectors.length > 0,\n \"LibDiamondCut: No selectors in facet to cut\"\n );\n StorageDiamond storage s = _storageDiamond();\n require(\n _facetAddress != address(0),\n \"LibDiamondCut: Add facet can't be address(0)\"\n );\n uint96 selectorPosition = uint96(\n s.facetFunctionSelectors[_facetAddress].functionSelectors.length\n );\n // add new facet address if it does not exist\n if (selectorPosition == 0) {\n _addFacet(s, _facetAddress);\n }\n for (\n uint256 selectorIndex;\n selectorIndex < _functionSelectors.length;\n selectorIndex++\n ) {\n bytes4 selector = _functionSelectors[selectorIndex];\n address oldFacetAddress = s\n .selectorToFacetAndPosition[selector]\n .facetAddress;\n require(\n oldFacetAddress != _facetAddress,\n \"LibDiamondCut: Can't replace function with same function\"\n );\n _removeFunction(s, oldFacetAddress, selector);\n _addFunction(s, selector, selectorPosition, _facetAddress);\n selectorPosition++;\n }\n }\n\n function _removeFunctions(\n address _facetAddress,\n bytes4[] memory _functionSelectors\n ) internal {\n require(\n _functionSelectors.length > 0,\n \"LibDiamondCut: No selectors in facet to cut\"\n );\n StorageDiamond storage s = _storageDiamond();\n // if function does not exist then do nothing and return\n require(\n _facetAddress == address(0),\n \"LibDiamondCut: Remove facet address must be address(0)\"\n );\n for (\n uint256 selectorIndex;\n selectorIndex < _functionSelectors.length;\n selectorIndex++\n ) {\n bytes4 selector = _functionSelectors[selectorIndex];\n address oldFacetAddress = s\n .selectorToFacetAndPosition[selector]\n .facetAddress;\n _removeFunction(s, oldFacetAddress, selector);\n }\n }\n\n function _addFacet(\n StorageDiamond storage s,\n address _facetAddress\n ) internal {\n _requireHasContractCode(\n _facetAddress,\n \"LibDiamondCut: New facet has no code\"\n );\n s.facetFunctionSelectors[_facetAddress].facetAddressPosition = s\n .facetAddresses\n .length;\n s.facetAddresses.push(_facetAddress);\n }\n\n function _addFunction(\n StorageDiamond storage s,\n bytes4 _selector,\n uint96 _selectorPosition,\n address _facetAddress\n ) internal {\n s\n .selectorToFacetAndPosition[_selector]\n .functionSelectorPosition = _selectorPosition;\n s.facetFunctionSelectors[_facetAddress].functionSelectors.push(\n _selector\n );\n s.selectorToFacetAndPosition[_selector].facetAddress = _facetAddress;\n }\n\n function _removeFunction(\n StorageDiamond storage s,\n address _facetAddress,\n bytes4 _selector\n ) internal {\n require(\n _facetAddress != address(0),\n \"LibDiamondCut: Can't remove function that doesn't exist\"\n );\n // an immutable function is a function defined directly in a diamond\n require(\n _facetAddress != address(this),\n \"LibDiamondCut: Can't remove immutable function\"\n );\n // replace selector with last selector, then delete last selector\n uint256 selectorPosition = s\n .selectorToFacetAndPosition[_selector]\n .functionSelectorPosition;\n uint256 lastSelectorPosition = s\n .facetFunctionSelectors[_facetAddress]\n .functionSelectors\n .length - 1;\n // if not the same then replace _selector with lastSelector\n if (selectorPosition != lastSelectorPosition) {\n bytes4 lastSelector = s\n .facetFunctionSelectors[_facetAddress]\n .functionSelectors[lastSelectorPosition];\n s.facetFunctionSelectors[_facetAddress].functionSelectors[\n selectorPosition\n ] = lastSelector;\n s\n .selectorToFacetAndPosition[lastSelector]\n .functionSelectorPosition = uint96(selectorPosition);\n }\n // delete the last selector\n s.facetFunctionSelectors[_facetAddress].functionSelectors.pop();\n delete s.selectorToFacetAndPosition[_selector];\n\n // if no more selectors for facet address then delete the facet address\n if (lastSelectorPosition == 0) {\n // replace facet address with last facet address and delete last facet address\n uint256 lastFacetAddressPosition = s.facetAddresses.length - 1;\n uint256 facetAddressPosition = s\n .facetFunctionSelectors[_facetAddress]\n .facetAddressPosition;\n if (facetAddressPosition != lastFacetAddressPosition) {\n address lastFacetAddress = s.facetAddresses[\n lastFacetAddressPosition\n ];\n s.facetAddresses[facetAddressPosition] = lastFacetAddress;\n s\n .facetFunctionSelectors[lastFacetAddress]\n .facetAddressPosition = facetAddressPosition;\n }\n s.facetAddresses.pop();\n delete s.facetFunctionSelectors[_facetAddress].facetAddressPosition;\n }\n }\n\n function _initializeDiamondCut(\n address _init,\n bytes memory _calldata\n ) internal {\n if (_init == address(0)) {\n return;\n }\n _requireHasContractCode(\n _init,\n \"LibDiamondCut: _init address has no code\"\n );\n (bool success, bytes memory error) = _init.delegatecall(_calldata);\n if (!success) {\n if (error.length > 0) {\n // bubble up error\n /// @solidity memory-safe-assembly\n assembly {\n let returndata_size := mload(error)\n revert(add(32, error), returndata_size)\n }\n } else {\n revert InitializationFunctionReverted(_init, _calldata);\n }\n }\n }\n\n function _requireHasContractCode(\n address _contract,\n string memory _errorMessage\n ) internal view {\n uint256 contractSize;\n assembly {\n contractSize := extcodesize(_contract)\n }\n require(contractSize > 0, _errorMessage);\n }\n}\n"},"contracts/libraries/utils/LibSecurity.sol":{"content":"//SPDX-License-Identifier: BUSL-1.1\npragma solidity ^0.8.9;\n\nimport {IERC1271} from \"@openzeppelin/contracts/interfaces/IERC1271.sol\";\n\n/**\n * // bytes4(keccak256(\"isValidSignature(bytes32,bytes)\")\n * // 0x1626ba7e\n */\n\nlibrary LibSecurity {\n function _requireValidSignature(\n address _walletAddress,\n bytes32 _hash,\n bytes memory _signature\n ) internal view {\n bytes4 result = IERC1271(_walletAddress).isValidSignature(\n _hash,\n _signature\n );\n require(result == 0x1626ba7e, \"INVALID_SIGNATURE\");\n }\n}\n"},"contracts/services/gelato/Types.sol":{"content":"// ref: https://github.com/gelatodigital/ops/blob/master/contracts/integrations/Types.sol\n\n// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.12;\n\nenum Module {\n RESOLVER,\n TIME,\n PROXY,\n SINGLE_EXEC\n}\n\nstruct ModuleData {\n Module[] modules;\n bytes[] args;\n}\n\ninterface IAutomate {\n function createTask(\n address execAddress,\n bytes calldata execDataOrSelector,\n ModuleData calldata moduleData,\n address feeToken\n ) external returns (bytes32 taskId);\n\n function cancelTask(bytes32 taskId) external;\n\n function getFeeDetails() external view returns (uint256, address);\n\n function gelato() external view returns (address payable);\n\n function taskTreasury() external view returns (ITaskTreasuryUpgradable);\n}\n\ninterface ITaskTreasuryUpgradable {\n function depositFunds(\n address receiver,\n address token,\n uint256 amount\n ) external payable;\n\n function withdrawFunds(\n address payable receiver,\n address token,\n uint256 amount\n ) external;\n\n function userTokenBalance(address _user, address _token)\n external\n view\n returns (uint256); // this is addition\n}\n\ninterface IOpsProxyFactory {\n function getProxyOf(address account) external view returns (address, bool);\n}\n"},"contracts/tests/InitTest.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport {LibTest} from \"./LibTest.sol\";\n\ncontract InitTest {\n function init(uint256 _value) external {\n LibTest._setTestValue(_value);\n }\n}\n"},"contracts/tests/LibTest.sol":{"content":"//SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nlibrary LibTest {\n bytes32 constant STORAGE_POSITION_TEST = keccak256(\"ds.test123\");\n\n struct StorageTest {\n uint256 value;\n }\n\n function _storageTest() internal pure returns (StorageTest storage s) {\n bytes32 position = STORAGE_POSITION_TEST;\n assembly {\n s.slot := position\n }\n }\n\n function _setTestValue(uint256 _value) internal {\n _storageTest().value = _value;\n }\n\n function _getTestValue() internal view returns (uint256) {\n return _storageTest().value;\n }\n}\n"},"contracts/tests/Test1Facet.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\ncontract Test1Facet {\n event TestEvent(address something);\n\n function test1Func1() external {}\n\n function test1Func2() external {}\n\n function test1Func3() external {}\n\n function test1Func4() external {}\n\n function test1Func5() external {}\n\n function test1Func6() external {}\n\n function test1Func7() external {}\n\n function test1Func8() external {}\n\n function test1Func9() external {}\n\n function test1Func10() external {}\n\n function test1Func11() external {}\n\n function test1Func12() external {}\n\n function test1Func13() external {}\n\n function test1Func14() external {}\n\n function test1Func15() external {}\n\n function test1Func16() external {}\n\n function test1Func17() external {}\n\n function test1Func18() external {}\n\n function test1Func19() external {}\n\n function test1Func20() external {}\n\n function supportsInterface(bytes4 _interfaceID)\n external\n view\n returns (bool)\n {}\n}\n"},"contracts/tests/Test2Facet.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\ncontract Test2Facet {\n function test2Func1() external {}\n\n function test2Func2() external {}\n\n function test2Func3() external {}\n\n function test2Func4() external {}\n\n function test2Func5() external {}\n\n function test2Func6() external {}\n\n function test2Func7() external {}\n\n function test2Func8() external {}\n\n function test2Func9() external {}\n\n function test2Func10() external {}\n\n function test2Func11() external {}\n\n function test2Func12() external {}\n\n function test2Func13() external {}\n\n function test2Func14() external {}\n\n function test2Func15() external {}\n\n function test2Func16() external {}\n\n function test2Func17() external {}\n\n function test2Func18() external {}\n\n function test2Func19() external {}\n\n function test2Func20() external {}\n}\n"},"contracts/tests/Test3Facet.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\ncontract Test3Facet {\n function test3Func1() external pure returns (uint256) {\n return 1;\n }\n\n function test3Func2() external {}\n}\n"},"contracts/tests/Test3Facet2.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\ncontract Test3Facet2 {\n function test3Func1() external pure returns (uint256) {\n return 2;\n }\n}\n"},"contracts/tests/Test4Facet.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\ncontract Test4Facet {\n function test4Func1() external {}\n\n function test4Func2() external {}\n}\n"},"contracts/tests/Test5Facet.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport {LibTest} from \"./LibTest.sol\";\n\ncontract Test5Facet {\n function test5Func1() external {}\n\n function test5Func2() external {}\n\n function setValue(uint256 _value) external {\n LibTest._setTestValue(_value);\n }\n\n function getValue() external view returns (uint256) {\n return LibTest._getTestValue();\n }\n}\n"},"contracts/upgrades/DiamondInit.sol":{"content":"// SPDX-License-Identifier: BUSL-1.1\npragma solidity ^0.8.9;\n\nimport {ISuperToken} from \"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol\";\n\nimport {LibDiamond} from \"../libraries/utils/LibDiamond.sol\";\nimport {LibAutomate} from \"../libraries/core/LibAutomate.sol\";\nimport {LibControl} from \"../libraries/core/LibControl.sol\";\nimport {IERC165} from \"../interfaces/utils/IERC165.sol\";\nimport {ICut} from \"../interfaces/utils/ICut.sol\";\nimport {ILoupe} from \"../interfaces/utils/ILoupe.sol\";\nimport {IAccessControl} from \"../interfaces/utils/IAccessControl.sol\";\nimport {IUtility} from \"../interfaces/utils/IUtility.sol\";\nimport {IAutomate} from \"../interfaces/core/IAutomate.sol\";\nimport {IControl} from \"../interfaces/core/IControl.sol\";\nimport {ISession} from \"../interfaces/core/ISession.sol\";\nimport {IFlow} from \"../interfaces/core/IFlow.sol\";\n\ncontract DiamondInit {\n function init(\n address _autobot,\n uint256 _minimumAppGelatoBalance,\n uint256 _minimumEndDuration, // seconds\n uint256 _minimumLifespan, // seconds\n uint256 _stBufferDurationInSecond,\n address[] memory _superTokens\n ) external {\n LibDiamond.StorageDiamond storage s = LibDiamond._storageDiamond();\n s.supportedInterfaces[type(IERC165).interfaceId] = true;\n s.supportedInterfaces[type(ICut).interfaceId] = true;\n s.supportedInterfaces[type(ILoupe).interfaceId] = true;\n s.supportedInterfaces[type(IAccessControl).interfaceId] = true;\n s.supportedInterfaces[type(IUtility).interfaceId] = true;\n s.supportedInterfaces[type(IAutomate).interfaceId] = true;\n s.supportedInterfaces[type(IControl).interfaceId] = true;\n s.supportedInterfaces[type(ISession).interfaceId] = true;\n s.supportedInterfaces[type(IFlow).interfaceId] = true;\n\n LibAutomate._setGelatoContracts(_autobot);\n LibAutomate._setMinimumAppGelatoBalance(_minimumAppGelatoBalance);\n LibControl._setMinimumEndDuration(_minimumEndDuration);\n LibControl._setMinimumLifespan(_minimumLifespan);\n LibControl._setSTBufferAmount(_stBufferDurationInSecond);\n for (uint256 i = 0; i < _superTokens.length; i++) {\n LibControl._addSuperToken(_superTokens[i]);\n }\n }\n}\n"}},"settings":{"optimizer":{"enabled":false,"runs":200},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"],"":["ast"]}}}},"output":{"sources":{"@openzeppelin/contracts/interfaces/IERC1271.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/IERC1271.sol","exportedSymbols":{"IERC1271":[13]},"id":14,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"92:23:0"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC1271","contractDependencies":[],"contractKind":"interface","documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"117:189:0","text":" @dev Interface of the ERC1271 standard signature validation method for\n contracts as defined in https://eips.ethereum.org/EIPS/eip-1271[ERC-1271].\n _Available since v4.1._"},"fullyImplemented":false,"id":13,"linearizedBaseContracts":[13],"name":"IERC1271","nameLocation":"317:8:0","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"332:220:0","text":" @dev Should return whether the signature provided is valid for the provided data\n @param hash Hash of the data to be signed\n @param signature Signature byte array associated with _data"},"functionSelector":"1626ba7e","id":12,"implemented":false,"kind":"function","modifiers":[],"name":"isValidSignature","nameLocation":"566:16:0","nodeType":"FunctionDefinition","parameters":{"id":8,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5,"mutability":"mutable","name":"hash","nameLocation":"591:4:0","nodeType":"VariableDeclaration","scope":12,"src":"583:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4,"name":"bytes32","nodeType":"ElementaryTypeName","src":"583:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":7,"mutability":"mutable","name":"signature","nameLocation":"610:9:0","nodeType":"VariableDeclaration","scope":12,"src":"597:22:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6,"name":"bytes","nodeType":"ElementaryTypeName","src":"597:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"582:38:0"},"returnParameters":{"id":11,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10,"mutability":"mutable","name":"magicValue","nameLocation":"651:10:0","nodeType":"VariableDeclaration","scope":12,"src":"644:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":9,"name":"bytes4","nodeType":"ElementaryTypeName","src":"644:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"643:19:0"},"scope":13,"src":"557:106:0","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":14,"src":"307:358:0","usedErrors":[]}],"src":"92:574:0"},"id":0},"@openzeppelin/contracts/security/ReentrancyGuard.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/security/ReentrancyGuard.sol","exportedSymbols":{"ReentrancyGuard":[67]},"id":68,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":15,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"112:23:1"},{"abstract":true,"baseContracts":[],"canonicalName":"ReentrancyGuard","contractDependencies":[],"contractKind":"contract","documentation":{"id":16,"nodeType":"StructuredDocumentation","src":"137:750:1","text":" @dev Contract module that helps prevent reentrant calls to a function.\n Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\n available, which can be applied to functions to make sure there are no nested\n (reentrant) calls to them.\n Note that because there is a single `nonReentrant` guard, functions marked as\n `nonReentrant` may not call one another. This can be worked around by making\n those functions `private`, and then adding `external` `nonReentrant` entry\n points to them.\n TIP: If you would like to learn more about reentrancy and alternative ways\n to protect against it, check out our blog post\n https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]."},"fullyImplemented":true,"id":67,"linearizedBaseContracts":[67],"name":"ReentrancyGuard","nameLocation":"906:15:1","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":19,"mutability":"constant","name":"_NOT_ENTERED","nameLocation":"1701:12:1","nodeType":"VariableDeclaration","scope":67,"src":"1676:41:1","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":17,"name":"uint256","nodeType":"ElementaryTypeName","src":"1676:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31","id":18,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1716:1:1","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"private"},{"constant":true,"id":22,"mutability":"constant","name":"_ENTERED","nameLocation":"1748:8:1","nodeType":"VariableDeclaration","scope":67,"src":"1723:37:1","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":20,"name":"uint256","nodeType":"ElementaryTypeName","src":"1723:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"32","id":21,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1759:1:1","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"private"},{"constant":false,"id":24,"mutability":"mutable","name":"_status","nameLocation":"1783:7:1","nodeType":"VariableDeclaration","scope":67,"src":"1767:23:1","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":23,"name":"uint256","nodeType":"ElementaryTypeName","src":"1767:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"body":{"id":31,"nodeType":"Block","src":"1811:39:1","statements":[{"expression":{"id":29,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":27,"name":"_status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24,"src":"1821:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":28,"name":"_NOT_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19,"src":"1831:12:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1821:22:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":30,"nodeType":"ExpressionStatement","src":"1821:22:1"}]},"id":32,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":25,"nodeType":"ParameterList","parameters":[],"src":"1808:2:1"},"returnParameters":{"id":26,"nodeType":"ParameterList","parameters":[],"src":"1811:0:1"},"scope":67,"src":"1797:53:1","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":42,"nodeType":"Block","src":"2251:79:1","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":35,"name":"_nonReentrantBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58,"src":"2261:19:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":36,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2261:21:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":37,"nodeType":"ExpressionStatement","src":"2261:21:1"},{"id":38,"nodeType":"PlaceholderStatement","src":"2292:1:1"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":39,"name":"_nonReentrantAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66,"src":"2303:18:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":40,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2303:20:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":41,"nodeType":"ExpressionStatement","src":"2303:20:1"}]},"documentation":{"id":33,"nodeType":"StructuredDocumentation","src":"1856:366:1","text":" @dev Prevents a contract from calling itself, directly or indirectly.\n Calling a `nonReentrant` function from another `nonReentrant`\n function is not supported. It is possible to prevent this from happening\n by making the `nonReentrant` function external, and making it call a\n `private` function that does the actual work."},"id":43,"name":"nonReentrant","nameLocation":"2236:12:1","nodeType":"ModifierDefinition","parameters":{"id":34,"nodeType":"ParameterList","parameters":[],"src":"2248:2:1"},"src":"2227:103:1","virtual":false,"visibility":"internal"},{"body":{"id":57,"nodeType":"Block","src":"2375:248:1","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":49,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":47,"name":"_status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24,"src":"2468:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":48,"name":"_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22,"src":"2479:8:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2468:19:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5265656e7472616e637947756172643a207265656e7472616e742063616c6c","id":50,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2489:33:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619","typeString":"literal_string \"ReentrancyGuard: reentrant call\""},"value":"ReentrancyGuard: reentrant call"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619","typeString":"literal_string \"ReentrancyGuard: reentrant call\""}],"id":46,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2460:7:1","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":51,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2460:63:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52,"nodeType":"ExpressionStatement","src":"2460:63:1"},{"expression":{"id":55,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":53,"name":"_status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24,"src":"2598:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":54,"name":"_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":22,"src":"2608:8:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2598:18:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":56,"nodeType":"ExpressionStatement","src":"2598:18:1"}]},"id":58,"implemented":true,"kind":"function","modifiers":[],"name":"_nonReentrantBefore","nameLocation":"2345:19:1","nodeType":"FunctionDefinition","parameters":{"id":44,"nodeType":"ParameterList","parameters":[],"src":"2364:2:1"},"returnParameters":{"id":45,"nodeType":"ParameterList","parameters":[],"src":"2375:0:1"},"scope":67,"src":"2336:287:1","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":65,"nodeType":"Block","src":"2667:171:1","statements":[{"expression":{"id":63,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":61,"name":"_status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24,"src":"2809:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":62,"name":"_NOT_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":19,"src":"2819:12:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2809:22:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":64,"nodeType":"ExpressionStatement","src":"2809:22:1"}]},"id":66,"implemented":true,"kind":"function","modifiers":[],"name":"_nonReentrantAfter","nameLocation":"2638:18:1","nodeType":"FunctionDefinition","parameters":{"id":59,"nodeType":"ParameterList","parameters":[],"src":"2656:2:1"},"returnParameters":{"id":60,"nodeType":"ParameterList","parameters":[],"src":"2667:0:1"},"scope":67,"src":"2629:209:1","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":68,"src":"888:1952:1","usedErrors":[]}],"src":"112:2729:1"},"id":1},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","exportedSymbols":{"IERC20":[145]},"id":146,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":69,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"106:23:2"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20","contractDependencies":[],"contractKind":"interface","documentation":{"id":70,"nodeType":"StructuredDocumentation","src":"131:70:2","text":" @dev Interface of the ERC20 standard as defined in the EIP."},"fullyImplemented":false,"id":145,"linearizedBaseContracts":[145],"name":"IERC20","nameLocation":"212:6:2","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":71,"nodeType":"StructuredDocumentation","src":"225:158:2","text":" @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":79,"name":"Transfer","nameLocation":"394:8:2","nodeType":"EventDefinition","parameters":{"id":78,"nodeType":"ParameterList","parameters":[{"constant":false,"id":73,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"419:4:2","nodeType":"VariableDeclaration","scope":79,"src":"403:20:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":72,"name":"address","nodeType":"ElementaryTypeName","src":"403:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":75,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"441:2:2","nodeType":"VariableDeclaration","scope":79,"src":"425:18:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":74,"name":"address","nodeType":"ElementaryTypeName","src":"425:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":77,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"453:5:2","nodeType":"VariableDeclaration","scope":79,"src":"445:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":76,"name":"uint256","nodeType":"ElementaryTypeName","src":"445:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"402:57:2"},"src":"388:72:2"},{"anonymous":false,"documentation":{"id":80,"nodeType":"StructuredDocumentation","src":"466:148:2","text":" @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":88,"name":"Approval","nameLocation":"625:8:2","nodeType":"EventDefinition","parameters":{"id":87,"nodeType":"ParameterList","parameters":[{"constant":false,"id":82,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"650:5:2","nodeType":"VariableDeclaration","scope":88,"src":"634:21:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":81,"name":"address","nodeType":"ElementaryTypeName","src":"634:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":84,"indexed":true,"mutability":"mutable","name":"spender","nameLocation":"673:7:2","nodeType":"VariableDeclaration","scope":88,"src":"657:23:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83,"name":"address","nodeType":"ElementaryTypeName","src":"657:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":86,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"690:5:2","nodeType":"VariableDeclaration","scope":88,"src":"682:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":85,"name":"uint256","nodeType":"ElementaryTypeName","src":"682:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"633:63:2"},"src":"619:78:2"},{"documentation":{"id":89,"nodeType":"StructuredDocumentation","src":"703:66:2","text":" @dev Returns the amount of tokens in existence."},"functionSelector":"18160ddd","id":94,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"783:11:2","nodeType":"FunctionDefinition","parameters":{"id":90,"nodeType":"ParameterList","parameters":[],"src":"794:2:2"},"returnParameters":{"id":93,"nodeType":"ParameterList","parameters":[{"constant":false,"id":92,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":94,"src":"820:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":91,"name":"uint256","nodeType":"ElementaryTypeName","src":"820:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"819:9:2"},"scope":145,"src":"774:55:2","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":95,"nodeType":"StructuredDocumentation","src":"835:72:2","text":" @dev Returns the amount of tokens owned by `account`."},"functionSelector":"70a08231","id":102,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"921:9:2","nodeType":"FunctionDefinition","parameters":{"id":98,"nodeType":"ParameterList","parameters":[{"constant":false,"id":97,"mutability":"mutable","name":"account","nameLocation":"939:7:2","nodeType":"VariableDeclaration","scope":102,"src":"931:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":96,"name":"address","nodeType":"ElementaryTypeName","src":"931:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"930:17:2"},"returnParameters":{"id":101,"nodeType":"ParameterList","parameters":[{"constant":false,"id":100,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":102,"src":"971:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":99,"name":"uint256","nodeType":"ElementaryTypeName","src":"971:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"970:9:2"},"scope":145,"src":"912:68:2","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":103,"nodeType":"StructuredDocumentation","src":"986:202:2","text":" @dev Moves `amount` tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"a9059cbb","id":112,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"1202:8:2","nodeType":"FunctionDefinition","parameters":{"id":108,"nodeType":"ParameterList","parameters":[{"constant":false,"id":105,"mutability":"mutable","name":"to","nameLocation":"1219:2:2","nodeType":"VariableDeclaration","scope":112,"src":"1211:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":104,"name":"address","nodeType":"ElementaryTypeName","src":"1211:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":107,"mutability":"mutable","name":"amount","nameLocation":"1231:6:2","nodeType":"VariableDeclaration","scope":112,"src":"1223:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":106,"name":"uint256","nodeType":"ElementaryTypeName","src":"1223:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1210:28:2"},"returnParameters":{"id":111,"nodeType":"ParameterList","parameters":[{"constant":false,"id":110,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":112,"src":"1257:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":109,"name":"bool","nodeType":"ElementaryTypeName","src":"1257:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1256:6:2"},"scope":145,"src":"1193:70:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":113,"nodeType":"StructuredDocumentation","src":"1269:264:2","text":" @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."},"functionSelector":"dd62ed3e","id":122,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"1547:9:2","nodeType":"FunctionDefinition","parameters":{"id":118,"nodeType":"ParameterList","parameters":[{"constant":false,"id":115,"mutability":"mutable","name":"owner","nameLocation":"1565:5:2","nodeType":"VariableDeclaration","scope":122,"src":"1557:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":114,"name":"address","nodeType":"ElementaryTypeName","src":"1557:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":117,"mutability":"mutable","name":"spender","nameLocation":"1580:7:2","nodeType":"VariableDeclaration","scope":122,"src":"1572:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":116,"name":"address","nodeType":"ElementaryTypeName","src":"1572:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1556:32:2"},"returnParameters":{"id":121,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":122,"src":"1612:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":119,"name":"uint256","nodeType":"ElementaryTypeName","src":"1612:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1611:9:2"},"scope":145,"src":"1538:83:2","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":123,"nodeType":"StructuredDocumentation","src":"1627:642:2","text":" @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."},"functionSelector":"095ea7b3","id":132,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"2283:7:2","nodeType":"FunctionDefinition","parameters":{"id":128,"nodeType":"ParameterList","parameters":[{"constant":false,"id":125,"mutability":"mutable","name":"spender","nameLocation":"2299:7:2","nodeType":"VariableDeclaration","scope":132,"src":"2291:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":124,"name":"address","nodeType":"ElementaryTypeName","src":"2291:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":127,"mutability":"mutable","name":"amount","nameLocation":"2316:6:2","nodeType":"VariableDeclaration","scope":132,"src":"2308:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":126,"name":"uint256","nodeType":"ElementaryTypeName","src":"2308:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2290:33:2"},"returnParameters":{"id":131,"nodeType":"ParameterList","parameters":[{"constant":false,"id":130,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":132,"src":"2342:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":129,"name":"bool","nodeType":"ElementaryTypeName","src":"2342:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2341:6:2"},"scope":145,"src":"2274:74:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":133,"nodeType":"StructuredDocumentation","src":"2354:287:2","text":" @dev Moves `amount` tokens from `from` to `to` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","id":144,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"2655:12:2","nodeType":"FunctionDefinition","parameters":{"id":140,"nodeType":"ParameterList","parameters":[{"constant":false,"id":135,"mutability":"mutable","name":"from","nameLocation":"2685:4:2","nodeType":"VariableDeclaration","scope":144,"src":"2677:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":134,"name":"address","nodeType":"ElementaryTypeName","src":"2677:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":137,"mutability":"mutable","name":"to","nameLocation":"2707:2:2","nodeType":"VariableDeclaration","scope":144,"src":"2699:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":136,"name":"address","nodeType":"ElementaryTypeName","src":"2699:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":139,"mutability":"mutable","name":"amount","nameLocation":"2727:6:2","nodeType":"VariableDeclaration","scope":144,"src":"2719:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":138,"name":"uint256","nodeType":"ElementaryTypeName","src":"2719:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2667:72:2"},"returnParameters":{"id":143,"nodeType":"ParameterList","parameters":[{"constant":false,"id":142,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":144,"src":"2758:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":141,"name":"bool","nodeType":"ElementaryTypeName","src":"2758:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2757:6:2"},"scope":145,"src":"2646:118:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":146,"src":"202:2564:2","usedErrors":[]}],"src":"106:2661:2"},"id":2},"@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol","exportedSymbols":{"IERC20Permit":[181]},"id":182,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":147,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"114:23:3"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20Permit","contractDependencies":[],"contractKind":"interface","documentation":{"id":148,"nodeType":"StructuredDocumentation","src":"139:480:3","text":" @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\n https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\n Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\n presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't\n need to send a transaction, and thus is not required to hold Ether at all."},"fullyImplemented":false,"id":181,"linearizedBaseContracts":[181],"name":"IERC20Permit","nameLocation":"630:12:3","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":149,"nodeType":"StructuredDocumentation","src":"649:792:3","text":" @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,\n given ``owner``'s signed approval.\n IMPORTANT: The same issues {IERC20-approve} has related to transaction\n ordering also apply here.\n Emits an {Approval} event.\n Requirements:\n - `spender` cannot be the zero address.\n - `deadline` must be a timestamp in the future.\n - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\n over the EIP712-formatted function arguments.\n - the signature must use ``owner``'s current nonce (see {nonces}).\n For more information on the signature format, see the\n https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\n section]."},"functionSelector":"d505accf","id":166,"implemented":false,"kind":"function","modifiers":[],"name":"permit","nameLocation":"1455:6:3","nodeType":"FunctionDefinition","parameters":{"id":164,"nodeType":"ParameterList","parameters":[{"constant":false,"id":151,"mutability":"mutable","name":"owner","nameLocation":"1479:5:3","nodeType":"VariableDeclaration","scope":166,"src":"1471:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":150,"name":"address","nodeType":"ElementaryTypeName","src":"1471:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":153,"mutability":"mutable","name":"spender","nameLocation":"1502:7:3","nodeType":"VariableDeclaration","scope":166,"src":"1494:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":152,"name":"address","nodeType":"ElementaryTypeName","src":"1494:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":155,"mutability":"mutable","name":"value","nameLocation":"1527:5:3","nodeType":"VariableDeclaration","scope":166,"src":"1519:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":154,"name":"uint256","nodeType":"ElementaryTypeName","src":"1519:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":157,"mutability":"mutable","name":"deadline","nameLocation":"1550:8:3","nodeType":"VariableDeclaration","scope":166,"src":"1542:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":156,"name":"uint256","nodeType":"ElementaryTypeName","src":"1542:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":159,"mutability":"mutable","name":"v","nameLocation":"1574:1:3","nodeType":"VariableDeclaration","scope":166,"src":"1568:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":158,"name":"uint8","nodeType":"ElementaryTypeName","src":"1568:5:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":161,"mutability":"mutable","name":"r","nameLocation":"1593:1:3","nodeType":"VariableDeclaration","scope":166,"src":"1585:9:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":160,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1585:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":163,"mutability":"mutable","name":"s","nameLocation":"1612:1:3","nodeType":"VariableDeclaration","scope":166,"src":"1604:9:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":162,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1604:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1461:158:3"},"returnParameters":{"id":165,"nodeType":"ParameterList","parameters":[],"src":"1628:0:3"},"scope":181,"src":"1446:183:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":167,"nodeType":"StructuredDocumentation","src":"1635:294:3","text":" @dev Returns the current nonce for `owner`. This value must be\n included whenever a signature is generated for {permit}.\n Every successful call to {permit} increases ``owner``'s nonce by one. This\n prevents a signature from being used multiple times."},"functionSelector":"7ecebe00","id":174,"implemented":false,"kind":"function","modifiers":[],"name":"nonces","nameLocation":"1943:6:3","nodeType":"FunctionDefinition","parameters":{"id":170,"nodeType":"ParameterList","parameters":[{"constant":false,"id":169,"mutability":"mutable","name":"owner","nameLocation":"1958:5:3","nodeType":"VariableDeclaration","scope":174,"src":"1950:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":168,"name":"address","nodeType":"ElementaryTypeName","src":"1950:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1949:15:3"},"returnParameters":{"id":173,"nodeType":"ParameterList","parameters":[{"constant":false,"id":172,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":174,"src":"1988:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":171,"name":"uint256","nodeType":"ElementaryTypeName","src":"1988:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1987:9:3"},"scope":181,"src":"1934:63:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":175,"nodeType":"StructuredDocumentation","src":"2003:128:3","text":" @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}."},"functionSelector":"3644e515","id":180,"implemented":false,"kind":"function","modifiers":[],"name":"DOMAIN_SEPARATOR","nameLocation":"2198:16:3","nodeType":"FunctionDefinition","parameters":{"id":176,"nodeType":"ParameterList","parameters":[],"src":"2214:2:3"},"returnParameters":{"id":179,"nodeType":"ParameterList","parameters":[{"constant":false,"id":178,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":180,"src":"2240:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":177,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2240:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2239:9:3"},"scope":181,"src":"2189:60:3","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":182,"src":"620:1631:3","usedErrors":[]}],"src":"114:2138:3"},"id":3},"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","exportedSymbols":{"Address":[955],"IERC20":[145],"IERC20Permit":[181],"SafeERC20":[462]},"id":463,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":183,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"115:23:4"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"../IERC20.sol","id":184,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":463,"sourceUnit":146,"src":"140:23:4","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol","file":"../extensions/draft-IERC20Permit.sol","id":185,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":463,"sourceUnit":182,"src":"164:46:4","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"../../../utils/Address.sol","id":186,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":463,"sourceUnit":956,"src":"211:36:4","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"SafeERC20","contractDependencies":[],"contractKind":"library","documentation":{"id":187,"nodeType":"StructuredDocumentation","src":"249:457:4","text":" @title SafeERC20\n @dev Wrappers around ERC20 operations that throw on failure (when the token\n contract returns false). Tokens that return no value (and instead revert or\n throw on failure) are also supported, non-reverting calls are assumed to be\n successful.\n To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n which allows you to call the safe operations as `token.safeTransfer(...)`, etc."},"fullyImplemented":true,"id":462,"linearizedBaseContracts":[462],"name":"SafeERC20","nameLocation":"715:9:4","nodeType":"ContractDefinition","nodes":[{"global":false,"id":190,"libraryName":{"id":188,"name":"Address","nameLocations":["737:7:4"],"nodeType":"IdentifierPath","referencedDeclaration":955,"src":"737:7:4"},"nodeType":"UsingForDirective","src":"731:26:4","typeName":{"id":189,"name":"address","nodeType":"ElementaryTypeName","src":"749:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"body":{"id":212,"nodeType":"Block","src":"865:103:4","statements":[{"expression":{"arguments":[{"id":201,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":193,"src":"895:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$145","typeString":"contract IERC20"}},{"arguments":[{"expression":{"expression":{"id":204,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":193,"src":"925:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$145","typeString":"contract IERC20"}},"id":205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"931:8:4","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":112,"src":"925:14:4","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":206,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"940:8:4","memberName":"selector","nodeType":"MemberAccess","src":"925:23:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":207,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":195,"src":"950:2:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":208,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":197,"src":"954:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":202,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"902:3:4","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":203,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"906:18:4","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"902:22:4","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":209,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"902:58:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$145","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":200,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":461,"src":"875:19:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$145_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20,bytes memory)"}},"id":210,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"875:86:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":211,"nodeType":"ExpressionStatement","src":"875:86:4"}]},"id":213,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransfer","nameLocation":"772:12:4","nodeType":"FunctionDefinition","parameters":{"id":198,"nodeType":"ParameterList","parameters":[{"constant":false,"id":193,"mutability":"mutable","name":"token","nameLocation":"801:5:4","nodeType":"VariableDeclaration","scope":213,"src":"794:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$145","typeString":"contract IERC20"},"typeName":{"id":192,"nodeType":"UserDefinedTypeName","pathNode":{"id":191,"name":"IERC20","nameLocations":["794:6:4"],"nodeType":"IdentifierPath","referencedDeclaration":145,"src":"794:6:4"},"referencedDeclaration":145,"src":"794:6:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$145","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":195,"mutability":"mutable","name":"to","nameLocation":"824:2:4","nodeType":"VariableDeclaration","scope":213,"src":"816:10:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":194,"name":"address","nodeType":"ElementaryTypeName","src":"816:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":197,"mutability":"mutable","name":"value","nameLocation":"844:5:4","nodeType":"VariableDeclaration","scope":213,"src":"836:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":196,"name":"uint256","nodeType":"ElementaryTypeName","src":"836:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"784:71:4"},"returnParameters":{"id":199,"nodeType":"ParameterList","parameters":[],"src":"865:0:4"},"scope":462,"src":"763:205:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":238,"nodeType":"Block","src":"1102:113:4","statements":[{"expression":{"arguments":[{"id":226,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":216,"src":"1132:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$145","typeString":"contract IERC20"}},{"arguments":[{"expression":{"expression":{"id":229,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":216,"src":"1162:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$145","typeString":"contract IERC20"}},"id":230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1168:12:4","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":144,"src":"1162:18:4","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1181:8:4","memberName":"selector","nodeType":"MemberAccess","src":"1162:27:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":232,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":218,"src":"1191:4:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":233,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":220,"src":"1197:2:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":234,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":222,"src":"1201:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":227,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1139:3:4","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":228,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1143:18:4","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"1139:22:4","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1139:68:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$145","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":225,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":461,"src":"1112:19:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$145_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20,bytes memory)"}},"id":236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1112:96:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":237,"nodeType":"ExpressionStatement","src":"1112:96:4"}]},"id":239,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"983:16:4","nodeType":"FunctionDefinition","parameters":{"id":223,"nodeType":"ParameterList","parameters":[{"constant":false,"id":216,"mutability":"mutable","name":"token","nameLocation":"1016:5:4","nodeType":"VariableDeclaration","scope":239,"src":"1009:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$145","typeString":"contract IERC20"},"typeName":{"id":215,"nodeType":"UserDefinedTypeName","pathNode":{"id":214,"name":"IERC20","nameLocations":["1009:6:4"],"nodeType":"IdentifierPath","referencedDeclaration":145,"src":"1009:6:4"},"referencedDeclaration":145,"src":"1009:6:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$145","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":218,"mutability":"mutable","name":"from","nameLocation":"1039:4:4","nodeType":"VariableDeclaration","scope":239,"src":"1031:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":217,"name":"address","nodeType":"ElementaryTypeName","src":"1031:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":220,"mutability":"mutable","name":"to","nameLocation":"1061:2:4","nodeType":"VariableDeclaration","scope":239,"src":"1053:10:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":219,"name":"address","nodeType":"ElementaryTypeName","src":"1053:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":222,"mutability":"mutable","name":"value","nameLocation":"1081:5:4","nodeType":"VariableDeclaration","scope":239,"src":"1073:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":221,"name":"uint256","nodeType":"ElementaryTypeName","src":"1073:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"999:93:4"},"returnParameters":{"id":224,"nodeType":"ParameterList","parameters":[],"src":"1102:0:4"},"scope":462,"src":"974:241:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":282,"nodeType":"Block","src":"1581:497:4","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":251,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":247,"src":"1830:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":252,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1839:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1830:10:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":254,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1829:12:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":259,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1870:4:4","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$462","typeString":"library SafeERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$462","typeString":"library SafeERC20"}],"id":258,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1862:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":257,"name":"address","nodeType":"ElementaryTypeName","src":"1862:7:4","typeDescriptions":{}}},"id":260,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1862:13:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":261,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":245,"src":"1877:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":255,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":243,"src":"1846:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$145","typeString":"contract IERC20"}},"id":256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1852:9:4","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":122,"src":"1846:15:4","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":262,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1846:39:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":263,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1889:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1846:44:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":265,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1845:46:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1829:62:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365","id":267,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1905:56:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25","typeString":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\""},"value":"SafeERC20: approve from non-zero to non-zero allowance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25","typeString":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\""}],"id":250,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1808:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":268,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1808:163:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":269,"nodeType":"ExpressionStatement","src":"1808:163:4"},{"expression":{"arguments":[{"id":271,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":243,"src":"2001:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$145","typeString":"contract IERC20"}},{"arguments":[{"expression":{"expression":{"id":274,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":243,"src":"2031:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$145","typeString":"contract IERC20"}},"id":275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2037:7:4","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":132,"src":"2031:13:4","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2045:8:4","memberName":"selector","nodeType":"MemberAccess","src":"2031:22:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":277,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":245,"src":"2055:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":278,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":247,"src":"2064:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":272,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2008:3:4","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":273,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2012:18:4","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"2008:22:4","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":279,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2008:62:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$145","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":270,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":461,"src":"1981:19:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$145_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20,bytes memory)"}},"id":280,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1981:90:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":281,"nodeType":"ExpressionStatement","src":"1981:90:4"}]},"documentation":{"id":240,"nodeType":"StructuredDocumentation","src":"1221:249:4","text":" @dev Deprecated. This function has issues similar to the ones found in\n {IERC20-approve}, and its usage is discouraged.\n Whenever possible, use {safeIncreaseAllowance} and\n {safeDecreaseAllowance} instead."},"id":283,"implemented":true,"kind":"function","modifiers":[],"name":"safeApprove","nameLocation":"1484:11:4","nodeType":"FunctionDefinition","parameters":{"id":248,"nodeType":"ParameterList","parameters":[{"constant":false,"id":243,"mutability":"mutable","name":"token","nameLocation":"1512:5:4","nodeType":"VariableDeclaration","scope":283,"src":"1505:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$145","typeString":"contract IERC20"},"typeName":{"id":242,"nodeType":"UserDefinedTypeName","pathNode":{"id":241,"name":"IERC20","nameLocations":["1505:6:4"],"nodeType":"IdentifierPath","referencedDeclaration":145,"src":"1505:6:4"},"referencedDeclaration":145,"src":"1505:6:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$145","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":245,"mutability":"mutable","name":"spender","nameLocation":"1535:7:4","nodeType":"VariableDeclaration","scope":283,"src":"1527:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":244,"name":"address","nodeType":"ElementaryTypeName","src":"1527:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":247,"mutability":"mutable","name":"value","nameLocation":"1560:5:4","nodeType":"VariableDeclaration","scope":283,"src":"1552:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":246,"name":"uint256","nodeType":"ElementaryTypeName","src":"1552:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1495:76:4"},"returnParameters":{"id":249,"nodeType":"ParameterList","parameters":[],"src":"1581:0:4"},"scope":462,"src":"1475:603:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":318,"nodeType":"Block","src":"2200:194:4","statements":[{"assignments":[294],"declarations":[{"constant":false,"id":294,"mutability":"mutable","name":"newAllowance","nameLocation":"2218:12:4","nodeType":"VariableDeclaration","scope":318,"src":"2210:20:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":293,"name":"uint256","nodeType":"ElementaryTypeName","src":"2210:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":305,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":299,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2257:4:4","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$462","typeString":"library SafeERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$462","typeString":"library SafeERC20"}],"id":298,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2249:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":297,"name":"address","nodeType":"ElementaryTypeName","src":"2249:7:4","typeDescriptions":{}}},"id":300,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2249:13:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":301,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":288,"src":"2264:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":295,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":286,"src":"2233:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$145","typeString":"contract IERC20"}},"id":296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2239:9:4","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":122,"src":"2233:15:4","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":302,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2233:39:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":303,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":290,"src":"2275:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2233:47:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2210:70:4"},{"expression":{"arguments":[{"id":307,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":286,"src":"2310:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$145","typeString":"contract IERC20"}},{"arguments":[{"expression":{"expression":{"id":310,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":286,"src":"2340:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$145","typeString":"contract IERC20"}},"id":311,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2346:7:4","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":132,"src":"2340:13:4","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":312,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2354:8:4","memberName":"selector","nodeType":"MemberAccess","src":"2340:22:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":313,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":288,"src":"2364:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":314,"name":"newAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":294,"src":"2373:12:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":308,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2317:3:4","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":309,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2321:18:4","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"2317:22:4","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":315,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2317:69:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$145","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":306,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":461,"src":"2290:19:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$145_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20,bytes memory)"}},"id":316,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2290:97:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":317,"nodeType":"ExpressionStatement","src":"2290:97:4"}]},"id":319,"implemented":true,"kind":"function","modifiers":[],"name":"safeIncreaseAllowance","nameLocation":"2093:21:4","nodeType":"FunctionDefinition","parameters":{"id":291,"nodeType":"ParameterList","parameters":[{"constant":false,"id":286,"mutability":"mutable","name":"token","nameLocation":"2131:5:4","nodeType":"VariableDeclaration","scope":319,"src":"2124:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$145","typeString":"contract IERC20"},"typeName":{"id":285,"nodeType":"UserDefinedTypeName","pathNode":{"id":284,"name":"IERC20","nameLocations":["2124:6:4"],"nodeType":"IdentifierPath","referencedDeclaration":145,"src":"2124:6:4"},"referencedDeclaration":145,"src":"2124:6:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$145","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":288,"mutability":"mutable","name":"spender","nameLocation":"2154:7:4","nodeType":"VariableDeclaration","scope":319,"src":"2146:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":287,"name":"address","nodeType":"ElementaryTypeName","src":"2146:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":290,"mutability":"mutable","name":"value","nameLocation":"2179:5:4","nodeType":"VariableDeclaration","scope":319,"src":"2171:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":289,"name":"uint256","nodeType":"ElementaryTypeName","src":"2171:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2114:76:4"},"returnParameters":{"id":292,"nodeType":"ParameterList","parameters":[],"src":"2200:0:4"},"scope":462,"src":"2084:310:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":366,"nodeType":"Block","src":"2516:370:4","statements":[{"id":365,"nodeType":"UncheckedBlock","src":"2526:354:4","statements":[{"assignments":[330],"declarations":[{"constant":false,"id":330,"mutability":"mutable","name":"oldAllowance","nameLocation":"2558:12:4","nodeType":"VariableDeclaration","scope":365,"src":"2550:20:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":329,"name":"uint256","nodeType":"ElementaryTypeName","src":"2550:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":339,"initialValue":{"arguments":[{"arguments":[{"id":335,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2597:4:4","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$462","typeString":"library SafeERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$462","typeString":"library SafeERC20"}],"id":334,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2589:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":333,"name":"address","nodeType":"ElementaryTypeName","src":"2589:7:4","typeDescriptions":{}}},"id":336,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2589:13:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":337,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":324,"src":"2604:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":331,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":322,"src":"2573:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$145","typeString":"contract IERC20"}},"id":332,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2579:9:4","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":122,"src":"2573:15:4","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":338,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2573:39:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2550:62:4"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":341,"name":"oldAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":330,"src":"2634:12:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":342,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":326,"src":"2650:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2634:21:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5361666545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f","id":344,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2657:43:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_2c3af60974a758b7e72e108c9bf0943ecc9e4f2e8af4695da5f52fbf57a63d3a","typeString":"literal_string \"SafeERC20: decreased allowance below zero\""},"value":"SafeERC20: decreased allowance below zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2c3af60974a758b7e72e108c9bf0943ecc9e4f2e8af4695da5f52fbf57a63d3a","typeString":"literal_string \"SafeERC20: decreased allowance below zero\""}],"id":340,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2626:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":345,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2626:75:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":346,"nodeType":"ExpressionStatement","src":"2626:75:4"},{"assignments":[348],"declarations":[{"constant":false,"id":348,"mutability":"mutable","name":"newAllowance","nameLocation":"2723:12:4","nodeType":"VariableDeclaration","scope":365,"src":"2715:20:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":347,"name":"uint256","nodeType":"ElementaryTypeName","src":"2715:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":352,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":349,"name":"oldAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":330,"src":"2738:12:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":350,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":326,"src":"2753:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2738:20:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2715:43:4"},{"expression":{"arguments":[{"id":354,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":322,"src":"2792:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$145","typeString":"contract IERC20"}},{"arguments":[{"expression":{"expression":{"id":357,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":322,"src":"2822:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$145","typeString":"contract IERC20"}},"id":358,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2828:7:4","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":132,"src":"2822:13:4","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2836:8:4","memberName":"selector","nodeType":"MemberAccess","src":"2822:22:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":360,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":324,"src":"2846:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":361,"name":"newAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":348,"src":"2855:12:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":355,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2799:3:4","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":356,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2803:18:4","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"2799:22:4","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":362,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2799:69:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$145","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":353,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":461,"src":"2772:19:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$145_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IERC20,bytes memory)"}},"id":363,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2772:97:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":364,"nodeType":"ExpressionStatement","src":"2772:97:4"}]}]},"id":367,"implemented":true,"kind":"function","modifiers":[],"name":"safeDecreaseAllowance","nameLocation":"2409:21:4","nodeType":"FunctionDefinition","parameters":{"id":327,"nodeType":"ParameterList","parameters":[{"constant":false,"id":322,"mutability":"mutable","name":"token","nameLocation":"2447:5:4","nodeType":"VariableDeclaration","scope":367,"src":"2440:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$145","typeString":"contract IERC20"},"typeName":{"id":321,"nodeType":"UserDefinedTypeName","pathNode":{"id":320,"name":"IERC20","nameLocations":["2440:6:4"],"nodeType":"IdentifierPath","referencedDeclaration":145,"src":"2440:6:4"},"referencedDeclaration":145,"src":"2440:6:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$145","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":324,"mutability":"mutable","name":"spender","nameLocation":"2470:7:4","nodeType":"VariableDeclaration","scope":367,"src":"2462:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":323,"name":"address","nodeType":"ElementaryTypeName","src":"2462:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":326,"mutability":"mutable","name":"value","nameLocation":"2495:5:4","nodeType":"VariableDeclaration","scope":367,"src":"2487:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":325,"name":"uint256","nodeType":"ElementaryTypeName","src":"2487:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2430:76:4"},"returnParameters":{"id":328,"nodeType":"ParameterList","parameters":[],"src":"2516:0:4"},"scope":462,"src":"2400:486:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":422,"nodeType":"Block","src":"3107:257:4","statements":[{"assignments":[388],"declarations":[{"constant":false,"id":388,"mutability":"mutable","name":"nonceBefore","nameLocation":"3125:11:4","nodeType":"VariableDeclaration","scope":422,"src":"3117:19:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":387,"name":"uint256","nodeType":"ElementaryTypeName","src":"3117:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":393,"initialValue":{"arguments":[{"id":391,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":372,"src":"3152:5:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":389,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":370,"src":"3139:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Permit_$181","typeString":"contract IERC20Permit"}},"id":390,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3145:6:4","memberName":"nonces","nodeType":"MemberAccess","referencedDeclaration":174,"src":"3139:12:4","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":392,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3139:19:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3117:41:4"},{"expression":{"arguments":[{"id":397,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":372,"src":"3181:5:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":398,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":374,"src":"3188:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":399,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":376,"src":"3197:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":400,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":378,"src":"3204:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":401,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":380,"src":"3214:1:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":402,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":382,"src":"3217:1:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":403,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":384,"src":"3220:1:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":394,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":370,"src":"3168:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Permit_$181","typeString":"contract IERC20Permit"}},"id":396,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3174:6:4","memberName":"permit","nodeType":"MemberAccess","referencedDeclaration":166,"src":"3168:12:4","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (address,address,uint256,uint256,uint8,bytes32,bytes32) external"}},"id":404,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3168:54:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":405,"nodeType":"ExpressionStatement","src":"3168:54:4"},{"assignments":[407],"declarations":[{"constant":false,"id":407,"mutability":"mutable","name":"nonceAfter","nameLocation":"3240:10:4","nodeType":"VariableDeclaration","scope":422,"src":"3232:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":406,"name":"uint256","nodeType":"ElementaryTypeName","src":"3232:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":412,"initialValue":{"arguments":[{"id":410,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":372,"src":"3266:5:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":408,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":370,"src":"3253:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Permit_$181","typeString":"contract IERC20Permit"}},"id":409,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3259:6:4","memberName":"nonces","nodeType":"MemberAccess","referencedDeclaration":174,"src":"3253:12:4","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":411,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3253:19:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3232:40:4"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":414,"name":"nonceAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":407,"src":"3290:10:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":417,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":415,"name":"nonceBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":388,"src":"3304:11:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":416,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3318:1:4","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3304:15:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3290:29:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5361666545524332303a207065726d697420646964206e6f742073756363656564","id":419,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3321:35:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_cde8e927812a7a656f8f04e89ac4f4113d47940dd2125d11fcb8e0bd36bfc59d","typeString":"literal_string \"SafeERC20: permit did not succeed\""},"value":"SafeERC20: permit did not succeed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cde8e927812a7a656f8f04e89ac4f4113d47940dd2125d11fcb8e0bd36bfc59d","typeString":"literal_string \"SafeERC20: permit did not succeed\""}],"id":413,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3282:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":420,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3282:75:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":421,"nodeType":"ExpressionStatement","src":"3282:75:4"}]},"id":423,"implemented":true,"kind":"function","modifiers":[],"name":"safePermit","nameLocation":"2901:10:4","nodeType":"FunctionDefinition","parameters":{"id":385,"nodeType":"ParameterList","parameters":[{"constant":false,"id":370,"mutability":"mutable","name":"token","nameLocation":"2934:5:4","nodeType":"VariableDeclaration","scope":423,"src":"2921:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Permit_$181","typeString":"contract IERC20Permit"},"typeName":{"id":369,"nodeType":"UserDefinedTypeName","pathNode":{"id":368,"name":"IERC20Permit","nameLocations":["2921:12:4"],"nodeType":"IdentifierPath","referencedDeclaration":181,"src":"2921:12:4"},"referencedDeclaration":181,"src":"2921:12:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Permit_$181","typeString":"contract IERC20Permit"}},"visibility":"internal"},{"constant":false,"id":372,"mutability":"mutable","name":"owner","nameLocation":"2957:5:4","nodeType":"VariableDeclaration","scope":423,"src":"2949:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":371,"name":"address","nodeType":"ElementaryTypeName","src":"2949:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":374,"mutability":"mutable","name":"spender","nameLocation":"2980:7:4","nodeType":"VariableDeclaration","scope":423,"src":"2972:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":373,"name":"address","nodeType":"ElementaryTypeName","src":"2972:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":376,"mutability":"mutable","name":"value","nameLocation":"3005:5:4","nodeType":"VariableDeclaration","scope":423,"src":"2997:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":375,"name":"uint256","nodeType":"ElementaryTypeName","src":"2997:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":378,"mutability":"mutable","name":"deadline","nameLocation":"3028:8:4","nodeType":"VariableDeclaration","scope":423,"src":"3020:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":377,"name":"uint256","nodeType":"ElementaryTypeName","src":"3020:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":380,"mutability":"mutable","name":"v","nameLocation":"3052:1:4","nodeType":"VariableDeclaration","scope":423,"src":"3046:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":379,"name":"uint8","nodeType":"ElementaryTypeName","src":"3046:5:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":382,"mutability":"mutable","name":"r","nameLocation":"3071:1:4","nodeType":"VariableDeclaration","scope":423,"src":"3063:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":381,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3063:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":384,"mutability":"mutable","name":"s","nameLocation":"3090:1:4","nodeType":"VariableDeclaration","scope":423,"src":"3082:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":383,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3082:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2911:186:4"},"returnParameters":{"id":386,"nodeType":"ParameterList","parameters":[],"src":"3107:0:4"},"scope":462,"src":"2892:472:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":460,"nodeType":"Block","src":"3817:636:4","statements":[{"assignments":[433],"declarations":[{"constant":false,"id":433,"mutability":"mutable","name":"returndata","nameLocation":"4179:10:4","nodeType":"VariableDeclaration","scope":460,"src":"4166:23:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":432,"name":"bytes","nodeType":"ElementaryTypeName","src":"4166:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":442,"initialValue":{"arguments":[{"id":439,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"4220:4:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564","id":440,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4226:34:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b","typeString":"literal_string \"SafeERC20: low-level call failed\""},"value":"SafeERC20: low-level call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b","typeString":"literal_string \"SafeERC20: low-level call failed\""}],"expression":{"arguments":[{"id":436,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":427,"src":"4200:5:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$145","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$145","typeString":"contract IERC20"}],"id":435,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4192:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":434,"name":"address","nodeType":"ElementaryTypeName","src":"4192:7:4","typeDescriptions":{}}},"id":437,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4192:14:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4207:12:4","memberName":"functionCall","nodeType":"MemberAccess","referencedDeclaration":715,"src":"4192:27:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$attached_to$_t_address_$","typeString":"function (address,bytes memory,string memory) returns (bytes memory)"}},"id":441,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4192:69:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"4166:95:4"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":443,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":433,"src":"4275:10:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4286:6:4","memberName":"length","nodeType":"MemberAccess","src":"4275:17:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":445,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4295:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4275:21:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":459,"nodeType":"IfStatement","src":"4271:176:4","trueBody":{"id":458,"nodeType":"Block","src":"4298:149:4","statements":[{"expression":{"arguments":[{"arguments":[{"id":450,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":433,"src":"4370:10:4","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":452,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4383:4:4","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"},"typeName":{"id":451,"name":"bool","nodeType":"ElementaryTypeName","src":"4383:4:4","typeDescriptions":{}}}],"id":453,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"4382:6:4","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}],"expression":{"id":448,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4359:3:4","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":449,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4363:6:4","memberName":"decode","nodeType":"MemberAccess","src":"4359:10:4","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":454,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4359:30:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564","id":455,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4391:44:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd","typeString":"literal_string \"SafeERC20: ERC20 operation did not succeed\""},"value":"SafeERC20: ERC20 operation did not succeed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd","typeString":"literal_string \"SafeERC20: ERC20 operation did not succeed\""}],"id":447,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4351:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":456,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4351:85:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":457,"nodeType":"ExpressionStatement","src":"4351:85:4"}]}}]},"documentation":{"id":424,"nodeType":"StructuredDocumentation","src":"3370:372:4","text":" @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n on the return value: the return value is optional (but if data is returned, it must not be false).\n @param token The token targeted by the call.\n @param data The call data (encoded using abi.encode or one of its variants)."},"id":461,"implemented":true,"kind":"function","modifiers":[],"name":"_callOptionalReturn","nameLocation":"3756:19:4","nodeType":"FunctionDefinition","parameters":{"id":430,"nodeType":"ParameterList","parameters":[{"constant":false,"id":427,"mutability":"mutable","name":"token","nameLocation":"3783:5:4","nodeType":"VariableDeclaration","scope":461,"src":"3776:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$145","typeString":"contract IERC20"},"typeName":{"id":426,"nodeType":"UserDefinedTypeName","pathNode":{"id":425,"name":"IERC20","nameLocations":["3776:6:4"],"nodeType":"IdentifierPath","referencedDeclaration":145,"src":"3776:6:4"},"referencedDeclaration":145,"src":"3776:6:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$145","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":429,"mutability":"mutable","name":"data","nameLocation":"3803:4:4","nodeType":"VariableDeclaration","scope":461,"src":"3790:17:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":428,"name":"bytes","nodeType":"ElementaryTypeName","src":"3790:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3775:33:4"},"returnParameters":{"id":431,"nodeType":"ParameterList","parameters":[],"src":"3817:0:4"},"scope":462,"src":"3747:706:4","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":463,"src":"707:3748:4","usedErrors":[]}],"src":"115:4341:4"},"id":4},"@openzeppelin/contracts/token/ERC777/IERC777.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC777/IERC777.sol","exportedSymbols":{"IERC777":[625]},"id":626,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":464,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"108:23:5"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC777","contractDependencies":[],"contractKind":"interface","documentation":{"id":465,"nodeType":"StructuredDocumentation","src":"133:372:5","text":" @dev Interface of the ERC777Token standard as defined in the EIP.\n This contract uses the\n https://eips.ethereum.org/EIPS/eip-1820[ERC1820 registry standard] to let\n token holders and recipients react to token movements by using setting implementers\n for the associated interfaces in said registry. See {IERC1820Registry} and\n {ERC1820Implementer}."},"fullyImplemented":false,"id":625,"linearizedBaseContracts":[625],"name":"IERC777","nameLocation":"516:7:5","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":466,"nodeType":"StructuredDocumentation","src":"530:199:5","text":" @dev Emitted when `amount` tokens are created by `operator` and assigned to `to`.\n Note that some additional user `data` and `operatorData` can be logged in the event."},"eventSelector":"2fe5be0146f74c5bce36c0b80911af6c7d86ff27e89d5cfa61fc681327954e5d","id":478,"name":"Minted","nameLocation":"740:6:5","nodeType":"EventDefinition","parameters":{"id":477,"nodeType":"ParameterList","parameters":[{"constant":false,"id":468,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"763:8:5","nodeType":"VariableDeclaration","scope":478,"src":"747:24:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":467,"name":"address","nodeType":"ElementaryTypeName","src":"747:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":470,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"789:2:5","nodeType":"VariableDeclaration","scope":478,"src":"773:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":469,"name":"address","nodeType":"ElementaryTypeName","src":"773:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":472,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"801:6:5","nodeType":"VariableDeclaration","scope":478,"src":"793:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":471,"name":"uint256","nodeType":"ElementaryTypeName","src":"793:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":474,"indexed":false,"mutability":"mutable","name":"data","nameLocation":"815:4:5","nodeType":"VariableDeclaration","scope":478,"src":"809:10:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":473,"name":"bytes","nodeType":"ElementaryTypeName","src":"809:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":476,"indexed":false,"mutability":"mutable","name":"operatorData","nameLocation":"827:12:5","nodeType":"VariableDeclaration","scope":478,"src":"821:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":475,"name":"bytes","nodeType":"ElementaryTypeName","src":"821:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"746:94:5"},"src":"734:107:5"},{"anonymous":false,"documentation":{"id":479,"nodeType":"StructuredDocumentation","src":"847:187:5","text":" @dev Emitted when `operator` destroys `amount` tokens from `account`.\n Note that some additional user `data` and `operatorData` can be logged in the event."},"eventSelector":"a78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a4098","id":491,"name":"Burned","nameLocation":"1045:6:5","nodeType":"EventDefinition","parameters":{"id":490,"nodeType":"ParameterList","parameters":[{"constant":false,"id":481,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"1068:8:5","nodeType":"VariableDeclaration","scope":491,"src":"1052:24:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":480,"name":"address","nodeType":"ElementaryTypeName","src":"1052:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":483,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"1094:4:5","nodeType":"VariableDeclaration","scope":491,"src":"1078:20:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":482,"name":"address","nodeType":"ElementaryTypeName","src":"1078:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":485,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"1108:6:5","nodeType":"VariableDeclaration","scope":491,"src":"1100:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":484,"name":"uint256","nodeType":"ElementaryTypeName","src":"1100:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":487,"indexed":false,"mutability":"mutable","name":"data","nameLocation":"1122:4:5","nodeType":"VariableDeclaration","scope":491,"src":"1116:10:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":486,"name":"bytes","nodeType":"ElementaryTypeName","src":"1116:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":489,"indexed":false,"mutability":"mutable","name":"operatorData","nameLocation":"1134:12:5","nodeType":"VariableDeclaration","scope":491,"src":"1128:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":488,"name":"bytes","nodeType":"ElementaryTypeName","src":"1128:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1051:96:5"},"src":"1039:109:5"},{"anonymous":false,"documentation":{"id":492,"nodeType":"StructuredDocumentation","src":"1154:83:5","text":" @dev Emitted when `operator` is made operator for `tokenHolder`."},"eventSelector":"f4caeb2d6ca8932a215a353d0703c326ec2d81fc68170f320eb2ab49e9df61f9","id":498,"name":"AuthorizedOperator","nameLocation":"1248:18:5","nodeType":"EventDefinition","parameters":{"id":497,"nodeType":"ParameterList","parameters":[{"constant":false,"id":494,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"1283:8:5","nodeType":"VariableDeclaration","scope":498,"src":"1267:24:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":493,"name":"address","nodeType":"ElementaryTypeName","src":"1267:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":496,"indexed":true,"mutability":"mutable","name":"tokenHolder","nameLocation":"1309:11:5","nodeType":"VariableDeclaration","scope":498,"src":"1293:27:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":495,"name":"address","nodeType":"ElementaryTypeName","src":"1293:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1266:55:5"},"src":"1242:80:5"},{"anonymous":false,"documentation":{"id":499,"nodeType":"StructuredDocumentation","src":"1328:97:5","text":" @dev Emitted when `operator` is revoked its operator status for `tokenHolder`."},"eventSelector":"50546e66e5f44d728365dc3908c63bc5cfeeab470722c1677e3073a6ac294aa1","id":505,"name":"RevokedOperator","nameLocation":"1436:15:5","nodeType":"EventDefinition","parameters":{"id":504,"nodeType":"ParameterList","parameters":[{"constant":false,"id":501,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"1468:8:5","nodeType":"VariableDeclaration","scope":505,"src":"1452:24:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":500,"name":"address","nodeType":"ElementaryTypeName","src":"1452:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":503,"indexed":true,"mutability":"mutable","name":"tokenHolder","nameLocation":"1494:11:5","nodeType":"VariableDeclaration","scope":505,"src":"1478:27:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":502,"name":"address","nodeType":"ElementaryTypeName","src":"1478:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1451:55:5"},"src":"1430:77:5"},{"documentation":{"id":506,"nodeType":"StructuredDocumentation","src":"1513:54:5","text":" @dev Returns the name of the token."},"functionSelector":"06fdde03","id":511,"implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"1581:4:5","nodeType":"FunctionDefinition","parameters":{"id":507,"nodeType":"ParameterList","parameters":[],"src":"1585:2:5"},"returnParameters":{"id":510,"nodeType":"ParameterList","parameters":[{"constant":false,"id":509,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":511,"src":"1611:13:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":508,"name":"string","nodeType":"ElementaryTypeName","src":"1611:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1610:15:5"},"scope":625,"src":"1572:54:5","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":512,"nodeType":"StructuredDocumentation","src":"1632:102:5","text":" @dev Returns the symbol of the token, usually a shorter version of the\n name."},"functionSelector":"95d89b41","id":517,"implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"1748:6:5","nodeType":"FunctionDefinition","parameters":{"id":513,"nodeType":"ParameterList","parameters":[],"src":"1754:2:5"},"returnParameters":{"id":516,"nodeType":"ParameterList","parameters":[{"constant":false,"id":515,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":517,"src":"1780:13:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":514,"name":"string","nodeType":"ElementaryTypeName","src":"1780:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1779:15:5"},"scope":625,"src":"1739:56:5","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":518,"nodeType":"StructuredDocumentation","src":"1801:287:5","text":" @dev Returns the smallest part of the token that is not divisible. This\n means all token operations (creation, movement and destruction) must have\n amounts that are a multiple of this number.\n For most token contracts, this value will equal 1."},"functionSelector":"556f0dc7","id":523,"implemented":false,"kind":"function","modifiers":[],"name":"granularity","nameLocation":"2102:11:5","nodeType":"FunctionDefinition","parameters":{"id":519,"nodeType":"ParameterList","parameters":[],"src":"2113:2:5"},"returnParameters":{"id":522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":521,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":523,"src":"2139:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":520,"name":"uint256","nodeType":"ElementaryTypeName","src":"2139:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2138:9:5"},"scope":625,"src":"2093:55:5","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":524,"nodeType":"StructuredDocumentation","src":"2154:66:5","text":" @dev Returns the amount of tokens in existence."},"functionSelector":"18160ddd","id":529,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"2234:11:5","nodeType":"FunctionDefinition","parameters":{"id":525,"nodeType":"ParameterList","parameters":[],"src":"2245:2:5"},"returnParameters":{"id":528,"nodeType":"ParameterList","parameters":[{"constant":false,"id":527,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":529,"src":"2271:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":526,"name":"uint256","nodeType":"ElementaryTypeName","src":"2271:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2270:9:5"},"scope":625,"src":"2225:55:5","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":530,"nodeType":"StructuredDocumentation","src":"2286:83:5","text":" @dev Returns the amount of tokens owned by an account (`owner`)."},"functionSelector":"70a08231","id":537,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"2383:9:5","nodeType":"FunctionDefinition","parameters":{"id":533,"nodeType":"ParameterList","parameters":[{"constant":false,"id":532,"mutability":"mutable","name":"owner","nameLocation":"2401:5:5","nodeType":"VariableDeclaration","scope":537,"src":"2393:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":531,"name":"address","nodeType":"ElementaryTypeName","src":"2393:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2392:15:5"},"returnParameters":{"id":536,"nodeType":"ParameterList","parameters":[{"constant":false,"id":535,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":537,"src":"2431:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":534,"name":"uint256","nodeType":"ElementaryTypeName","src":"2431:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2430:9:5"},"scope":625,"src":"2374:66:5","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":538,"nodeType":"StructuredDocumentation","src":"2446:585:5","text":" @dev Moves `amount` tokens from the caller's account to `recipient`.\n If send or receive hooks are registered for the caller and `recipient`,\n the corresponding functions will be called with `data` and empty\n `operatorData`. See {IERC777Sender} and {IERC777Recipient}.\n Emits a {Sent} event.\n Requirements\n - the caller must have at least `amount` tokens.\n - `recipient` cannot be the zero address.\n - if `recipient` is a contract, it must implement the {IERC777Recipient}\n interface."},"functionSelector":"9bd9bbc6","id":547,"implemented":false,"kind":"function","modifiers":[],"name":"send","nameLocation":"3045:4:5","nodeType":"FunctionDefinition","parameters":{"id":545,"nodeType":"ParameterList","parameters":[{"constant":false,"id":540,"mutability":"mutable","name":"recipient","nameLocation":"3067:9:5","nodeType":"VariableDeclaration","scope":547,"src":"3059:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":539,"name":"address","nodeType":"ElementaryTypeName","src":"3059:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":542,"mutability":"mutable","name":"amount","nameLocation":"3094:6:5","nodeType":"VariableDeclaration","scope":547,"src":"3086:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":541,"name":"uint256","nodeType":"ElementaryTypeName","src":"3086:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":544,"mutability":"mutable","name":"data","nameLocation":"3125:4:5","nodeType":"VariableDeclaration","scope":547,"src":"3110:19:5","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":543,"name":"bytes","nodeType":"ElementaryTypeName","src":"3110:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3049:86:5"},"returnParameters":{"id":546,"nodeType":"ParameterList","parameters":[],"src":"3144:0:5"},"scope":625,"src":"3036:109:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":548,"nodeType":"StructuredDocumentation","src":"3151:404:5","text":" @dev Destroys `amount` tokens from the caller's account, reducing the\n total supply.\n If a send hook is registered for the caller, the corresponding function\n will be called with `data` and empty `operatorData`. See {IERC777Sender}.\n Emits a {Burned} event.\n Requirements\n - the caller must have at least `amount` tokens."},"functionSelector":"fe9d9303","id":555,"implemented":false,"kind":"function","modifiers":[],"name":"burn","nameLocation":"3569:4:5","nodeType":"FunctionDefinition","parameters":{"id":553,"nodeType":"ParameterList","parameters":[{"constant":false,"id":550,"mutability":"mutable","name":"amount","nameLocation":"3582:6:5","nodeType":"VariableDeclaration","scope":555,"src":"3574:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":549,"name":"uint256","nodeType":"ElementaryTypeName","src":"3574:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":552,"mutability":"mutable","name":"data","nameLocation":"3605:4:5","nodeType":"VariableDeclaration","scope":555,"src":"3590:19:5","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":551,"name":"bytes","nodeType":"ElementaryTypeName","src":"3590:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3573:37:5"},"returnParameters":{"id":554,"nodeType":"ParameterList","parameters":[],"src":"3619:0:5"},"scope":625,"src":"3560:60:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":556,"nodeType":"StructuredDocumentation","src":"3626:249:5","text":" @dev Returns true if an account is an operator of `tokenHolder`.\n Operators can send and burn tokens on behalf of their owners. All\n accounts are their own operator.\n See {operatorSend} and {operatorBurn}."},"functionSelector":"d95b6371","id":565,"implemented":false,"kind":"function","modifiers":[],"name":"isOperatorFor","nameLocation":"3889:13:5","nodeType":"FunctionDefinition","parameters":{"id":561,"nodeType":"ParameterList","parameters":[{"constant":false,"id":558,"mutability":"mutable","name":"operator","nameLocation":"3911:8:5","nodeType":"VariableDeclaration","scope":565,"src":"3903:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":557,"name":"address","nodeType":"ElementaryTypeName","src":"3903:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":560,"mutability":"mutable","name":"tokenHolder","nameLocation":"3929:11:5","nodeType":"VariableDeclaration","scope":565,"src":"3921:19:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":559,"name":"address","nodeType":"ElementaryTypeName","src":"3921:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3902:39:5"},"returnParameters":{"id":564,"nodeType":"ParameterList","parameters":[{"constant":false,"id":563,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":565,"src":"3965:4:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":562,"name":"bool","nodeType":"ElementaryTypeName","src":"3965:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3964:6:5"},"scope":625,"src":"3880:91:5","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":566,"nodeType":"StructuredDocumentation","src":"3977:233:5","text":" @dev Make an account an operator of the caller.\n See {isOperatorFor}.\n Emits an {AuthorizedOperator} event.\n Requirements\n - `operator` cannot be calling address."},"functionSelector":"959b8c3f","id":571,"implemented":false,"kind":"function","modifiers":[],"name":"authorizeOperator","nameLocation":"4224:17:5","nodeType":"FunctionDefinition","parameters":{"id":569,"nodeType":"ParameterList","parameters":[{"constant":false,"id":568,"mutability":"mutable","name":"operator","nameLocation":"4250:8:5","nodeType":"VariableDeclaration","scope":571,"src":"4242:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":567,"name":"address","nodeType":"ElementaryTypeName","src":"4242:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4241:18:5"},"returnParameters":{"id":570,"nodeType":"ParameterList","parameters":[],"src":"4268:0:5"},"scope":625,"src":"4215:54:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":572,"nodeType":"StructuredDocumentation","src":"4275:261:5","text":" @dev Revoke an account's operator status for the caller.\n See {isOperatorFor} and {defaultOperators}.\n Emits a {RevokedOperator} event.\n Requirements\n - `operator` cannot be calling address."},"functionSelector":"fad8b32a","id":577,"implemented":false,"kind":"function","modifiers":[],"name":"revokeOperator","nameLocation":"4550:14:5","nodeType":"FunctionDefinition","parameters":{"id":575,"nodeType":"ParameterList","parameters":[{"constant":false,"id":574,"mutability":"mutable","name":"operator","nameLocation":"4573:8:5","nodeType":"VariableDeclaration","scope":577,"src":"4565:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":573,"name":"address","nodeType":"ElementaryTypeName","src":"4565:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4564:18:5"},"returnParameters":{"id":576,"nodeType":"ParameterList","parameters":[],"src":"4591:0:5"},"scope":625,"src":"4541:51:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":578,"nodeType":"StructuredDocumentation","src":"4598:338:5","text":" @dev Returns the list of default operators. These accounts are operators\n for all token holders, even if {authorizeOperator} was never called on\n them.\n This list is immutable, but individual holders may revoke these via\n {revokeOperator}, in which case {isOperatorFor} will return false."},"functionSelector":"06e48538","id":584,"implemented":false,"kind":"function","modifiers":[],"name":"defaultOperators","nameLocation":"4950:16:5","nodeType":"FunctionDefinition","parameters":{"id":579,"nodeType":"ParameterList","parameters":[],"src":"4966:2:5"},"returnParameters":{"id":583,"nodeType":"ParameterList","parameters":[{"constant":false,"id":582,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":584,"src":"4992:16:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":580,"name":"address","nodeType":"ElementaryTypeName","src":"4992:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":581,"nodeType":"ArrayTypeName","src":"4992:9:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"4991:18:5"},"scope":625,"src":"4941:69:5","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":585,"nodeType":"StructuredDocumentation","src":"5016:714:5","text":" @dev Moves `amount` tokens from `sender` to `recipient`. The caller must\n be an operator of `sender`.\n If send or receive hooks are registered for `sender` and `recipient`,\n the corresponding functions will be called with `data` and\n `operatorData`. See {IERC777Sender} and {IERC777Recipient}.\n Emits a {Sent} event.\n Requirements\n - `sender` cannot be the zero address.\n - `sender` must have at least `amount` tokens.\n - the caller must be an operator for `sender`.\n - `recipient` cannot be the zero address.\n - if `recipient` is a contract, it must implement the {IERC777Recipient}\n interface."},"functionSelector":"62ad1b83","id":598,"implemented":false,"kind":"function","modifiers":[],"name":"operatorSend","nameLocation":"5744:12:5","nodeType":"FunctionDefinition","parameters":{"id":596,"nodeType":"ParameterList","parameters":[{"constant":false,"id":587,"mutability":"mutable","name":"sender","nameLocation":"5774:6:5","nodeType":"VariableDeclaration","scope":598,"src":"5766:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":586,"name":"address","nodeType":"ElementaryTypeName","src":"5766:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":589,"mutability":"mutable","name":"recipient","nameLocation":"5798:9:5","nodeType":"VariableDeclaration","scope":598,"src":"5790:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":588,"name":"address","nodeType":"ElementaryTypeName","src":"5790:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":591,"mutability":"mutable","name":"amount","nameLocation":"5825:6:5","nodeType":"VariableDeclaration","scope":598,"src":"5817:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":590,"name":"uint256","nodeType":"ElementaryTypeName","src":"5817:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":593,"mutability":"mutable","name":"data","nameLocation":"5856:4:5","nodeType":"VariableDeclaration","scope":598,"src":"5841:19:5","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":592,"name":"bytes","nodeType":"ElementaryTypeName","src":"5841:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":595,"mutability":"mutable","name":"operatorData","nameLocation":"5885:12:5","nodeType":"VariableDeclaration","scope":598,"src":"5870:27:5","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":594,"name":"bytes","nodeType":"ElementaryTypeName","src":"5870:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5756:147:5"},"returnParameters":{"id":597,"nodeType":"ParameterList","parameters":[],"src":"5912:0:5"},"scope":625,"src":"5735:178:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":599,"nodeType":"StructuredDocumentation","src":"5919:532:5","text":" @dev Destroys `amount` tokens from `account`, reducing the total supply.\n The caller must be an operator of `account`.\n If a send hook is registered for `account`, the corresponding function\n will be called with `data` and `operatorData`. See {IERC777Sender}.\n Emits a {Burned} event.\n Requirements\n - `account` cannot be the zero address.\n - `account` must have at least `amount` tokens.\n - the caller must be an operator for `account`."},"functionSelector":"fc673c4f","id":610,"implemented":false,"kind":"function","modifiers":[],"name":"operatorBurn","nameLocation":"6465:12:5","nodeType":"FunctionDefinition","parameters":{"id":608,"nodeType":"ParameterList","parameters":[{"constant":false,"id":601,"mutability":"mutable","name":"account","nameLocation":"6495:7:5","nodeType":"VariableDeclaration","scope":610,"src":"6487:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":600,"name":"address","nodeType":"ElementaryTypeName","src":"6487:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":603,"mutability":"mutable","name":"amount","nameLocation":"6520:6:5","nodeType":"VariableDeclaration","scope":610,"src":"6512:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":602,"name":"uint256","nodeType":"ElementaryTypeName","src":"6512:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":605,"mutability":"mutable","name":"data","nameLocation":"6551:4:5","nodeType":"VariableDeclaration","scope":610,"src":"6536:19:5","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":604,"name":"bytes","nodeType":"ElementaryTypeName","src":"6536:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":607,"mutability":"mutable","name":"operatorData","nameLocation":"6580:12:5","nodeType":"VariableDeclaration","scope":610,"src":"6565:27:5","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":606,"name":"bytes","nodeType":"ElementaryTypeName","src":"6565:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6477:121:5"},"returnParameters":{"id":609,"nodeType":"ParameterList","parameters":[],"src":"6607:0:5"},"scope":625,"src":"6456:152:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"eventSelector":"06b541ddaa720db2b10a4d0cdac39b8d360425fc073085fac19bc82614677987","id":624,"name":"Sent","nameLocation":"6620:4:5","nodeType":"EventDefinition","parameters":{"id":623,"nodeType":"ParameterList","parameters":[{"constant":false,"id":612,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"6650:8:5","nodeType":"VariableDeclaration","scope":624,"src":"6634:24:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":611,"name":"address","nodeType":"ElementaryTypeName","src":"6634:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":614,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"6684:4:5","nodeType":"VariableDeclaration","scope":624,"src":"6668:20:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":613,"name":"address","nodeType":"ElementaryTypeName","src":"6668:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":616,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"6714:2:5","nodeType":"VariableDeclaration","scope":624,"src":"6698:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":615,"name":"address","nodeType":"ElementaryTypeName","src":"6698:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":618,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"6734:6:5","nodeType":"VariableDeclaration","scope":624,"src":"6726:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":617,"name":"uint256","nodeType":"ElementaryTypeName","src":"6726:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":620,"indexed":false,"mutability":"mutable","name":"data","nameLocation":"6756:4:5","nodeType":"VariableDeclaration","scope":624,"src":"6750:10:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":619,"name":"bytes","nodeType":"ElementaryTypeName","src":"6750:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":622,"indexed":false,"mutability":"mutable","name":"operatorData","nameLocation":"6776:12:5","nodeType":"VariableDeclaration","scope":624,"src":"6770:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":621,"name":"bytes","nodeType":"ElementaryTypeName","src":"6770:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6624:170:5"},"src":"6614:181:5"}],"scope":626,"src":"506:6291:5","usedErrors":[]}],"src":"108:6690:5"},"id":5},"@openzeppelin/contracts/utils/Address.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","exportedSymbols":{"Address":[955]},"id":956,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":627,"literals":["solidity","^","0.8",".1"],"nodeType":"PragmaDirective","src":"101:23:6"},{"abstract":false,"baseContracts":[],"canonicalName":"Address","contractDependencies":[],"contractKind":"library","documentation":{"id":628,"nodeType":"StructuredDocumentation","src":"126:67:6","text":" @dev Collection of functions related to the address type"},"fullyImplemented":true,"id":955,"linearizedBaseContracts":[955],"name":"Address","nameLocation":"202:7:6","nodeType":"ContractDefinition","nodes":[{"body":{"id":642,"nodeType":"Block","src":"1241:254:6","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":640,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":636,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":631,"src":"1465:7:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1473:4:6","memberName":"code","nodeType":"MemberAccess","src":"1465:12:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1478:6:6","memberName":"length","nodeType":"MemberAccess","src":"1465:19:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":639,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1487:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1465:23:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":635,"id":641,"nodeType":"Return","src":"1458:30:6"}]},"documentation":{"id":629,"nodeType":"StructuredDocumentation","src":"216:954:6","text":" @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n ====\n [IMPORTANT]\n ====\n You shouldn't rely on `isContract` to protect against flash loan attacks!\n Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n constructor.\n ===="},"id":643,"implemented":true,"kind":"function","modifiers":[],"name":"isContract","nameLocation":"1184:10:6","nodeType":"FunctionDefinition","parameters":{"id":632,"nodeType":"ParameterList","parameters":[{"constant":false,"id":631,"mutability":"mutable","name":"account","nameLocation":"1203:7:6","nodeType":"VariableDeclaration","scope":643,"src":"1195:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":630,"name":"address","nodeType":"ElementaryTypeName","src":"1195:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1194:17:6"},"returnParameters":{"id":635,"nodeType":"ParameterList","parameters":[{"constant":false,"id":634,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":643,"src":"1235:4:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":633,"name":"bool","nodeType":"ElementaryTypeName","src":"1235:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1234:6:6"},"scope":955,"src":"1175:320:6","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":676,"nodeType":"Block","src":"2483:241:6","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":654,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2509:4:6","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$955","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$955","typeString":"library Address"}],"id":653,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2501:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":652,"name":"address","nodeType":"ElementaryTypeName","src":"2501:7:6","typeDescriptions":{}}},"id":655,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2501:13:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2515:7:6","memberName":"balance","nodeType":"MemberAccess","src":"2501:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":657,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":648,"src":"2526:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2501:31:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e6365","id":659,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2534:31:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""},"value":"Address: insufficient balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""}],"id":651,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2493:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2493:73:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":661,"nodeType":"ExpressionStatement","src":"2493:73:6"},{"assignments":[663,null],"declarations":[{"constant":false,"id":663,"mutability":"mutable","name":"success","nameLocation":"2583:7:6","nodeType":"VariableDeclaration","scope":676,"src":"2578:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":662,"name":"bool","nodeType":"ElementaryTypeName","src":"2578:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":670,"initialValue":{"arguments":[{"hexValue":"","id":668,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2626:2:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":664,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":646,"src":"2596:9:6","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":665,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2606:4:6","memberName":"call","nodeType":"MemberAccess","src":"2596:14:6","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":666,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":648,"src":"2618:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2596:29:6","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":669,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2596:33:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2577:52:6"},{"expression":{"arguments":[{"id":672,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":663,"src":"2647:7:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564","id":673,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2656:60:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""},"value":"Address: unable to send value, recipient may have reverted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""}],"id":671,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2639:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":674,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2639:78:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":675,"nodeType":"ExpressionStatement","src":"2639:78:6"}]},"documentation":{"id":644,"nodeType":"StructuredDocumentation","src":"1501:906:6","text":" @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."},"id":677,"implemented":true,"kind":"function","modifiers":[],"name":"sendValue","nameLocation":"2421:9:6","nodeType":"FunctionDefinition","parameters":{"id":649,"nodeType":"ParameterList","parameters":[{"constant":false,"id":646,"mutability":"mutable","name":"recipient","nameLocation":"2447:9:6","nodeType":"VariableDeclaration","scope":677,"src":"2431:25:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":645,"name":"address","nodeType":"ElementaryTypeName","src":"2431:15:6","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":648,"mutability":"mutable","name":"amount","nameLocation":"2466:6:6","nodeType":"VariableDeclaration","scope":677,"src":"2458:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":647,"name":"uint256","nodeType":"ElementaryTypeName","src":"2458:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2430:43:6"},"returnParameters":{"id":650,"nodeType":"ParameterList","parameters":[],"src":"2483:0:6"},"scope":955,"src":"2412:312:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":694,"nodeType":"Block","src":"3555:96:6","statements":[{"expression":{"arguments":[{"id":688,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":680,"src":"3594:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":689,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":682,"src":"3602:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":690,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3608:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564","id":691,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3611:32:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""},"value":"Address: low-level call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""}],"id":687,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[735,779],"referencedDeclaration":779,"src":"3572:21:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":692,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3572:72:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":686,"id":693,"nodeType":"Return","src":"3565:79:6"}]},"documentation":{"id":678,"nodeType":"StructuredDocumentation","src":"2730:731:6","text":" @dev Performs a Solidity function call using a low level `call`. A\n plain `call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason, it is bubbled up by this\n function (like regular Solidity function calls).\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert.\n _Available since v3.1._"},"id":695,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"3475:12:6","nodeType":"FunctionDefinition","parameters":{"id":683,"nodeType":"ParameterList","parameters":[{"constant":false,"id":680,"mutability":"mutable","name":"target","nameLocation":"3496:6:6","nodeType":"VariableDeclaration","scope":695,"src":"3488:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":679,"name":"address","nodeType":"ElementaryTypeName","src":"3488:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":682,"mutability":"mutable","name":"data","nameLocation":"3517:4:6","nodeType":"VariableDeclaration","scope":695,"src":"3504:17:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":681,"name":"bytes","nodeType":"ElementaryTypeName","src":"3504:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3487:35:6"},"returnParameters":{"id":686,"nodeType":"ParameterList","parameters":[{"constant":false,"id":685,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":695,"src":"3541:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":684,"name":"bytes","nodeType":"ElementaryTypeName","src":"3541:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3540:14:6"},"scope":955,"src":"3466:185:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":714,"nodeType":"Block","src":"4020:76:6","statements":[{"expression":{"arguments":[{"id":708,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":698,"src":"4059:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":709,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":700,"src":"4067:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":710,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4073:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":711,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":702,"src":"4076:12:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":707,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[735,779],"referencedDeclaration":779,"src":"4037:21:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":712,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4037:52:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":706,"id":713,"nodeType":"Return","src":"4030:59:6"}]},"documentation":{"id":696,"nodeType":"StructuredDocumentation","src":"3657:211:6","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":715,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"3882:12:6","nodeType":"FunctionDefinition","parameters":{"id":703,"nodeType":"ParameterList","parameters":[{"constant":false,"id":698,"mutability":"mutable","name":"target","nameLocation":"3912:6:6","nodeType":"VariableDeclaration","scope":715,"src":"3904:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":697,"name":"address","nodeType":"ElementaryTypeName","src":"3904:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":700,"mutability":"mutable","name":"data","nameLocation":"3941:4:6","nodeType":"VariableDeclaration","scope":715,"src":"3928:17:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":699,"name":"bytes","nodeType":"ElementaryTypeName","src":"3928:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":702,"mutability":"mutable","name":"errorMessage","nameLocation":"3969:12:6","nodeType":"VariableDeclaration","scope":715,"src":"3955:26:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":701,"name":"string","nodeType":"ElementaryTypeName","src":"3955:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3894:93:6"},"returnParameters":{"id":706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":705,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":715,"src":"4006:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":704,"name":"bytes","nodeType":"ElementaryTypeName","src":"4006:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4005:14:6"},"scope":955,"src":"3873:223:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":734,"nodeType":"Block","src":"4601:111:6","statements":[{"expression":{"arguments":[{"id":728,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":718,"src":"4640:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":729,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":720,"src":"4648:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":730,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":722,"src":"4654:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564","id":731,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4661:43:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""},"value":"Address: low-level call with value failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""}],"id":727,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[735,779],"referencedDeclaration":779,"src":"4618:21:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":732,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4618:87:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":726,"id":733,"nodeType":"Return","src":"4611:94:6"}]},"documentation":{"id":716,"nodeType":"StructuredDocumentation","src":"4102:351:6","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`.\n _Available since v3.1._"},"id":735,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"4467:21:6","nodeType":"FunctionDefinition","parameters":{"id":723,"nodeType":"ParameterList","parameters":[{"constant":false,"id":718,"mutability":"mutable","name":"target","nameLocation":"4506:6:6","nodeType":"VariableDeclaration","scope":735,"src":"4498:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":717,"name":"address","nodeType":"ElementaryTypeName","src":"4498:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":720,"mutability":"mutable","name":"data","nameLocation":"4535:4:6","nodeType":"VariableDeclaration","scope":735,"src":"4522:17:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":719,"name":"bytes","nodeType":"ElementaryTypeName","src":"4522:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":722,"mutability":"mutable","name":"value","nameLocation":"4557:5:6","nodeType":"VariableDeclaration","scope":735,"src":"4549:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":721,"name":"uint256","nodeType":"ElementaryTypeName","src":"4549:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4488:80:6"},"returnParameters":{"id":726,"nodeType":"ParameterList","parameters":[{"constant":false,"id":725,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":735,"src":"4587:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":724,"name":"bytes","nodeType":"ElementaryTypeName","src":"4587:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4586:14:6"},"scope":955,"src":"4458:254:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":778,"nodeType":"Block","src":"5139:267:6","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":752,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5165:4:6","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$955","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$955","typeString":"library Address"}],"id":751,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5157:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":750,"name":"address","nodeType":"ElementaryTypeName","src":"5157:7:6","typeDescriptions":{}}},"id":753,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5157:13:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5171:7:6","memberName":"balance","nodeType":"MemberAccess","src":"5157:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":755,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":742,"src":"5182:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5157:30:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c","id":757,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5189:40:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""},"value":"Address: insufficient balance for call"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""}],"id":749,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5149:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":758,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5149:81:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":759,"nodeType":"ExpressionStatement","src":"5149:81:6"},{"assignments":[761,763],"declarations":[{"constant":false,"id":761,"mutability":"mutable","name":"success","nameLocation":"5246:7:6","nodeType":"VariableDeclaration","scope":778,"src":"5241:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":760,"name":"bool","nodeType":"ElementaryTypeName","src":"5241:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":763,"mutability":"mutable","name":"returndata","nameLocation":"5268:10:6","nodeType":"VariableDeclaration","scope":778,"src":"5255:23:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":762,"name":"bytes","nodeType":"ElementaryTypeName","src":"5255:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":770,"initialValue":{"arguments":[{"id":768,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":740,"src":"5308:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":764,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":738,"src":"5282:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":765,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5289:4:6","memberName":"call","nodeType":"MemberAccess","src":"5282:11:6","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":766,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":742,"src":"5301:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"5282:25:6","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":769,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5282:31:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"5240:73:6"},{"expression":{"arguments":[{"id":772,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":738,"src":"5357:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":773,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":761,"src":"5365:7:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":774,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":763,"src":"5374:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":775,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":744,"src":"5386:12:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":771,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":910,"src":"5330:26:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":776,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5330:69:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":748,"id":777,"nodeType":"Return","src":"5323:76:6"}]},"documentation":{"id":736,"nodeType":"StructuredDocumentation","src":"4718:237:6","text":" @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n with `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":779,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"4969:21:6","nodeType":"FunctionDefinition","parameters":{"id":745,"nodeType":"ParameterList","parameters":[{"constant":false,"id":738,"mutability":"mutable","name":"target","nameLocation":"5008:6:6","nodeType":"VariableDeclaration","scope":779,"src":"5000:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":737,"name":"address","nodeType":"ElementaryTypeName","src":"5000:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":740,"mutability":"mutable","name":"data","nameLocation":"5037:4:6","nodeType":"VariableDeclaration","scope":779,"src":"5024:17:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":739,"name":"bytes","nodeType":"ElementaryTypeName","src":"5024:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":742,"mutability":"mutable","name":"value","nameLocation":"5059:5:6","nodeType":"VariableDeclaration","scope":779,"src":"5051:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":741,"name":"uint256","nodeType":"ElementaryTypeName","src":"5051:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":744,"mutability":"mutable","name":"errorMessage","nameLocation":"5088:12:6","nodeType":"VariableDeclaration","scope":779,"src":"5074:26:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":743,"name":"string","nodeType":"ElementaryTypeName","src":"5074:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4990:116:6"},"returnParameters":{"id":748,"nodeType":"ParameterList","parameters":[{"constant":false,"id":747,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":779,"src":"5125:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":746,"name":"bytes","nodeType":"ElementaryTypeName","src":"5125:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5124:14:6"},"scope":955,"src":"4960:446:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":795,"nodeType":"Block","src":"5683:97:6","statements":[{"expression":{"arguments":[{"id":790,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":782,"src":"5719:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":791,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":784,"src":"5727:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564","id":792,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5733:39:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""},"value":"Address: low-level static call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""}],"id":789,"name":"functionStaticCall","nodeType":"Identifier","overloadedDeclarations":[796,825],"referencedDeclaration":825,"src":"5700:18:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) view returns (bytes memory)"}},"id":793,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5700:73:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":788,"id":794,"nodeType":"Return","src":"5693:80:6"}]},"documentation":{"id":780,"nodeType":"StructuredDocumentation","src":"5412:166:6","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":796,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"5592:18:6","nodeType":"FunctionDefinition","parameters":{"id":785,"nodeType":"ParameterList","parameters":[{"constant":false,"id":782,"mutability":"mutable","name":"target","nameLocation":"5619:6:6","nodeType":"VariableDeclaration","scope":796,"src":"5611:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":781,"name":"address","nodeType":"ElementaryTypeName","src":"5611:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":784,"mutability":"mutable","name":"data","nameLocation":"5640:4:6","nodeType":"VariableDeclaration","scope":796,"src":"5627:17:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":783,"name":"bytes","nodeType":"ElementaryTypeName","src":"5627:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5610:35:6"},"returnParameters":{"id":788,"nodeType":"ParameterList","parameters":[{"constant":false,"id":787,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":796,"src":"5669:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":786,"name":"bytes","nodeType":"ElementaryTypeName","src":"5669:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5668:14:6"},"scope":955,"src":"5583:197:6","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":824,"nodeType":"Block","src":"6122:168:6","statements":[{"assignments":[809,811],"declarations":[{"constant":false,"id":809,"mutability":"mutable","name":"success","nameLocation":"6138:7:6","nodeType":"VariableDeclaration","scope":824,"src":"6133:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":808,"name":"bool","nodeType":"ElementaryTypeName","src":"6133:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":811,"mutability":"mutable","name":"returndata","nameLocation":"6160:10:6","nodeType":"VariableDeclaration","scope":824,"src":"6147:23:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":810,"name":"bytes","nodeType":"ElementaryTypeName","src":"6147:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":816,"initialValue":{"arguments":[{"id":814,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":801,"src":"6192:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":812,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":799,"src":"6174:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6181:10:6","memberName":"staticcall","nodeType":"MemberAccess","src":"6174:17:6","typeDescriptions":{"typeIdentifier":"t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) view returns (bool,bytes memory)"}},"id":815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6174:23:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"6132:65:6"},{"expression":{"arguments":[{"id":818,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":799,"src":"6241:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":819,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":809,"src":"6249:7:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":820,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":811,"src":"6258:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":821,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":803,"src":"6270:12:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":817,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":910,"src":"6214:26:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":822,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6214:69:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":807,"id":823,"nodeType":"Return","src":"6207:76:6"}]},"documentation":{"id":797,"nodeType":"StructuredDocumentation","src":"5786:173:6","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":825,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"5973:18:6","nodeType":"FunctionDefinition","parameters":{"id":804,"nodeType":"ParameterList","parameters":[{"constant":false,"id":799,"mutability":"mutable","name":"target","nameLocation":"6009:6:6","nodeType":"VariableDeclaration","scope":825,"src":"6001:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":798,"name":"address","nodeType":"ElementaryTypeName","src":"6001:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":801,"mutability":"mutable","name":"data","nameLocation":"6038:4:6","nodeType":"VariableDeclaration","scope":825,"src":"6025:17:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":800,"name":"bytes","nodeType":"ElementaryTypeName","src":"6025:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":803,"mutability":"mutable","name":"errorMessage","nameLocation":"6066:12:6","nodeType":"VariableDeclaration","scope":825,"src":"6052:26:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":802,"name":"string","nodeType":"ElementaryTypeName","src":"6052:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5991:93:6"},"returnParameters":{"id":807,"nodeType":"ParameterList","parameters":[{"constant":false,"id":806,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":825,"src":"6108:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":805,"name":"bytes","nodeType":"ElementaryTypeName","src":"6108:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6107:14:6"},"scope":955,"src":"5964:326:6","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":841,"nodeType":"Block","src":"6566:101:6","statements":[{"expression":{"arguments":[{"id":836,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":828,"src":"6604:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":837,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":830,"src":"6612:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564","id":838,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6618:41:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""},"value":"Address: low-level delegate call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""}],"id":835,"name":"functionDelegateCall","nodeType":"Identifier","overloadedDeclarations":[842,871],"referencedDeclaration":871,"src":"6583:20:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) returns (bytes memory)"}},"id":839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6583:77:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":834,"id":840,"nodeType":"Return","src":"6576:84:6"}]},"documentation":{"id":826,"nodeType":"StructuredDocumentation","src":"6296:168:6","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":842,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"6478:20:6","nodeType":"FunctionDefinition","parameters":{"id":831,"nodeType":"ParameterList","parameters":[{"constant":false,"id":828,"mutability":"mutable","name":"target","nameLocation":"6507:6:6","nodeType":"VariableDeclaration","scope":842,"src":"6499:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":827,"name":"address","nodeType":"ElementaryTypeName","src":"6499:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":830,"mutability":"mutable","name":"data","nameLocation":"6528:4:6","nodeType":"VariableDeclaration","scope":842,"src":"6515:17:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":829,"name":"bytes","nodeType":"ElementaryTypeName","src":"6515:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6498:35:6"},"returnParameters":{"id":834,"nodeType":"ParameterList","parameters":[{"constant":false,"id":833,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":842,"src":"6552:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":832,"name":"bytes","nodeType":"ElementaryTypeName","src":"6552:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6551:14:6"},"scope":955,"src":"6469:198:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":870,"nodeType":"Block","src":"7008:170:6","statements":[{"assignments":[855,857],"declarations":[{"constant":false,"id":855,"mutability":"mutable","name":"success","nameLocation":"7024:7:6","nodeType":"VariableDeclaration","scope":870,"src":"7019:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":854,"name":"bool","nodeType":"ElementaryTypeName","src":"7019:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":857,"mutability":"mutable","name":"returndata","nameLocation":"7046:10:6","nodeType":"VariableDeclaration","scope":870,"src":"7033:23:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":856,"name":"bytes","nodeType":"ElementaryTypeName","src":"7033:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":862,"initialValue":{"arguments":[{"id":860,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":847,"src":"7080:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":858,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":845,"src":"7060:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7067:12:6","memberName":"delegatecall","nodeType":"MemberAccess","src":"7060:19:6","typeDescriptions":{"typeIdentifier":"t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bool,bytes memory)"}},"id":861,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7060:25:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"7018:67:6"},{"expression":{"arguments":[{"id":864,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":845,"src":"7129:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":865,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":855,"src":"7137:7:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":866,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":857,"src":"7146:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":867,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":849,"src":"7158:12:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":863,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":910,"src":"7102:26:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":868,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7102:69:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":853,"id":869,"nodeType":"Return","src":"7095:76:6"}]},"documentation":{"id":843,"nodeType":"StructuredDocumentation","src":"6673:175:6","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":871,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"6862:20:6","nodeType":"FunctionDefinition","parameters":{"id":850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":845,"mutability":"mutable","name":"target","nameLocation":"6900:6:6","nodeType":"VariableDeclaration","scope":871,"src":"6892:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":844,"name":"address","nodeType":"ElementaryTypeName","src":"6892:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":847,"mutability":"mutable","name":"data","nameLocation":"6929:4:6","nodeType":"VariableDeclaration","scope":871,"src":"6916:17:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":846,"name":"bytes","nodeType":"ElementaryTypeName","src":"6916:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":849,"mutability":"mutable","name":"errorMessage","nameLocation":"6957:12:6","nodeType":"VariableDeclaration","scope":871,"src":"6943:26:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":848,"name":"string","nodeType":"ElementaryTypeName","src":"6943:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6882:93:6"},"returnParameters":{"id":853,"nodeType":"ParameterList","parameters":[{"constant":false,"id":852,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":871,"src":"6994:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":851,"name":"bytes","nodeType":"ElementaryTypeName","src":"6994:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6993:14:6"},"scope":955,"src":"6853:325:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":909,"nodeType":"Block","src":"7660:434:6","statements":[{"condition":{"id":885,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":876,"src":"7674:7:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":907,"nodeType":"Block","src":"8030:58:6","statements":[{"expression":{"arguments":[{"id":903,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":878,"src":"8052:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":904,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":880,"src":"8064:12:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":902,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":954,"src":"8044:7:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (bytes memory,string memory) pure"}},"id":905,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8044:33:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":906,"nodeType":"ExpressionStatement","src":"8044:33:6"}]},"id":908,"nodeType":"IfStatement","src":"7670:418:6","trueBody":{"id":901,"nodeType":"Block","src":"7683:341:6","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":886,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":878,"src":"7701:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7712:6:6","memberName":"length","nodeType":"MemberAccess","src":"7701:17:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":888,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7722:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7701:22:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":898,"nodeType":"IfStatement","src":"7697:286:6","trueBody":{"id":897,"nodeType":"Block","src":"7725:258:6","statements":[{"expression":{"arguments":[{"arguments":[{"id":892,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":874,"src":"7927:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":891,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":643,"src":"7916:10:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":893,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7916:18:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","id":894,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7936:31:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""},"value":"Address: call to non-contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""}],"id":890,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7908:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":895,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7908:60:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":896,"nodeType":"ExpressionStatement","src":"7908:60:6"}]}},{"expression":{"id":899,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":878,"src":"8003:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":884,"id":900,"nodeType":"Return","src":"7996:17:6"}]}}]},"documentation":{"id":872,"nodeType":"StructuredDocumentation","src":"7184:277:6","text":" @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\n the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\n _Available since v4.8._"},"id":910,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResultFromTarget","nameLocation":"7475:26:6","nodeType":"FunctionDefinition","parameters":{"id":881,"nodeType":"ParameterList","parameters":[{"constant":false,"id":874,"mutability":"mutable","name":"target","nameLocation":"7519:6:6","nodeType":"VariableDeclaration","scope":910,"src":"7511:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":873,"name":"address","nodeType":"ElementaryTypeName","src":"7511:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":876,"mutability":"mutable","name":"success","nameLocation":"7540:7:6","nodeType":"VariableDeclaration","scope":910,"src":"7535:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":875,"name":"bool","nodeType":"ElementaryTypeName","src":"7535:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":878,"mutability":"mutable","name":"returndata","nameLocation":"7570:10:6","nodeType":"VariableDeclaration","scope":910,"src":"7557:23:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":877,"name":"bytes","nodeType":"ElementaryTypeName","src":"7557:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":880,"mutability":"mutable","name":"errorMessage","nameLocation":"7604:12:6","nodeType":"VariableDeclaration","scope":910,"src":"7590:26:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":879,"name":"string","nodeType":"ElementaryTypeName","src":"7590:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7501:121:6"},"returnParameters":{"id":884,"nodeType":"ParameterList","parameters":[{"constant":false,"id":883,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":910,"src":"7646:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":882,"name":"bytes","nodeType":"ElementaryTypeName","src":"7646:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7645:14:6"},"scope":955,"src":"7466:628:6","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":933,"nodeType":"Block","src":"8475:135:6","statements":[{"condition":{"id":922,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":913,"src":"8489:7:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":931,"nodeType":"Block","src":"8546:58:6","statements":[{"expression":{"arguments":[{"id":927,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":915,"src":"8568:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":928,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":917,"src":"8580:12:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":926,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":954,"src":"8560:7:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (bytes memory,string memory) pure"}},"id":929,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8560:33:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":930,"nodeType":"ExpressionStatement","src":"8560:33:6"}]},"id":932,"nodeType":"IfStatement","src":"8485:119:6","trueBody":{"id":925,"nodeType":"Block","src":"8498:42:6","statements":[{"expression":{"id":923,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":915,"src":"8519:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":921,"id":924,"nodeType":"Return","src":"8512:17:6"}]}}]},"documentation":{"id":911,"nodeType":"StructuredDocumentation","src":"8100:210:6","text":" @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\n revert reason or using the provided one.\n _Available since v4.3._"},"id":934,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResult","nameLocation":"8324:16:6","nodeType":"FunctionDefinition","parameters":{"id":918,"nodeType":"ParameterList","parameters":[{"constant":false,"id":913,"mutability":"mutable","name":"success","nameLocation":"8355:7:6","nodeType":"VariableDeclaration","scope":934,"src":"8350:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":912,"name":"bool","nodeType":"ElementaryTypeName","src":"8350:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":915,"mutability":"mutable","name":"returndata","nameLocation":"8385:10:6","nodeType":"VariableDeclaration","scope":934,"src":"8372:23:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":914,"name":"bytes","nodeType":"ElementaryTypeName","src":"8372:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":917,"mutability":"mutable","name":"errorMessage","nameLocation":"8419:12:6","nodeType":"VariableDeclaration","scope":934,"src":"8405:26:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":916,"name":"string","nodeType":"ElementaryTypeName","src":"8405:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8340:97:6"},"returnParameters":{"id":921,"nodeType":"ParameterList","parameters":[{"constant":false,"id":920,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":934,"src":"8461:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":919,"name":"bytes","nodeType":"ElementaryTypeName","src":"8461:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8460:14:6"},"scope":955,"src":"8315:295:6","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":953,"nodeType":"Block","src":"8699:457:6","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":941,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":936,"src":"8775:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8786:6:6","memberName":"length","nodeType":"MemberAccess","src":"8775:17:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":943,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8795:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8775:21:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":951,"nodeType":"Block","src":"9105:45:6","statements":[{"expression":{"arguments":[{"id":948,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":938,"src":"9126:12:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":947,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"9119:6:6","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":949,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9119:20:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":950,"nodeType":"ExpressionStatement","src":"9119:20:6"}]},"id":952,"nodeType":"IfStatement","src":"8771:379:6","trueBody":{"id":946,"nodeType":"Block","src":"8798:301:6","statements":[{"AST":{"nodeType":"YulBlock","src":"8956:133:6","statements":[{"nodeType":"YulVariableDeclaration","src":"8974:40:6","value":{"arguments":[{"name":"returndata","nodeType":"YulIdentifier","src":"9003:10:6"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8997:5:6"},"nodeType":"YulFunctionCall","src":"8997:17:6"},"variables":[{"name":"returndata_size","nodeType":"YulTypedName","src":"8978:15:6","type":""}]},{"expression":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9042:2:6","type":"","value":"32"},{"name":"returndata","nodeType":"YulIdentifier","src":"9046:10:6"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9038:3:6"},"nodeType":"YulFunctionCall","src":"9038:19:6"},{"name":"returndata_size","nodeType":"YulIdentifier","src":"9059:15:6"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9031:6:6"},"nodeType":"YulFunctionCall","src":"9031:44:6"},"nodeType":"YulExpressionStatement","src":"9031:44:6"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":936,"isOffset":false,"isSlot":false,"src":"9003:10:6","valueSize":1},{"declaration":936,"isOffset":false,"isSlot":false,"src":"9046:10:6","valueSize":1}],"id":945,"nodeType":"InlineAssembly","src":"8947:142:6"}]}}]},"id":954,"implemented":true,"kind":"function","modifiers":[],"name":"_revert","nameLocation":"8625:7:6","nodeType":"FunctionDefinition","parameters":{"id":939,"nodeType":"ParameterList","parameters":[{"constant":false,"id":936,"mutability":"mutable","name":"returndata","nameLocation":"8646:10:6","nodeType":"VariableDeclaration","scope":954,"src":"8633:23:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":935,"name":"bytes","nodeType":"ElementaryTypeName","src":"8633:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":938,"mutability":"mutable","name":"errorMessage","nameLocation":"8672:12:6","nodeType":"VariableDeclaration","scope":954,"src":"8658:26:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":937,"name":"string","nodeType":"ElementaryTypeName","src":"8658:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8632:53:6"},"returnParameters":{"id":940,"nodeType":"ParameterList","parameters":[],"src":"8699:0:6"},"scope":955,"src":"8616:540:6","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":956,"src":"194:8964:6","usedErrors":[]}],"src":"101:9058:6"},"id":6},"@openzeppelin/contracts/utils/Strings.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Strings.sol","exportedSymbols":{"Math":[1995],"Strings":[1130]},"id":1131,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":957,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"101:23:7"},{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","file":"./math/Math.sol","id":958,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1131,"sourceUnit":1996,"src":"126:25:7","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"Strings","contractDependencies":[],"contractKind":"library","documentation":{"id":959,"nodeType":"StructuredDocumentation","src":"153:34:7","text":" @dev String operations."},"fullyImplemented":true,"id":1130,"linearizedBaseContracts":[1130],"name":"Strings","nameLocation":"196:7:7","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":962,"mutability":"constant","name":"_SYMBOLS","nameLocation":"235:8:7","nodeType":"VariableDeclaration","scope":1130,"src":"210:54:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"typeName":{"id":960,"name":"bytes16","nodeType":"ElementaryTypeName","src":"210:7:7","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"value":{"hexValue":"30313233343536373839616263646566","id":961,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"246:18:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f","typeString":"literal_string \"0123456789abcdef\""},"value":"0123456789abcdef"},"visibility":"private"},{"constant":true,"id":965,"mutability":"constant","name":"_ADDRESS_LENGTH","nameLocation":"293:15:7","nodeType":"VariableDeclaration","scope":1130,"src":"270:43:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":963,"name":"uint8","nodeType":"ElementaryTypeName","src":"270:5:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3230","id":964,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"311:2:7","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"private"},{"body":{"id":1012,"nodeType":"Block","src":"486:625:7","statements":[{"id":1011,"nodeType":"UncheckedBlock","src":"496:609:7","statements":[{"assignments":[974],"declarations":[{"constant":false,"id":974,"mutability":"mutable","name":"length","nameLocation":"528:6:7","nodeType":"VariableDeclaration","scope":1011,"src":"520:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":973,"name":"uint256","nodeType":"ElementaryTypeName","src":"520:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":981,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":977,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":968,"src":"548:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":975,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1995,"src":"537:4:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1995_$","typeString":"type(library Math)"}},"id":976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"542:5:7","memberName":"log10","nodeType":"MemberAccess","referencedDeclaration":1832,"src":"537:10:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":978,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"537:17:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":979,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"557:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"537:21:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"520:38:7"},{"assignments":[983],"declarations":[{"constant":false,"id":983,"mutability":"mutable","name":"buffer","nameLocation":"586:6:7","nodeType":"VariableDeclaration","scope":1011,"src":"572:20:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":982,"name":"string","nodeType":"ElementaryTypeName","src":"572:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":988,"initialValue":{"arguments":[{"id":986,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":974,"src":"606:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":985,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"595:10:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"},"typeName":{"id":984,"name":"string","nodeType":"ElementaryTypeName","src":"599:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"id":987,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"595:18:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"572:41:7"},{"assignments":[990],"declarations":[{"constant":false,"id":990,"mutability":"mutable","name":"ptr","nameLocation":"635:3:7","nodeType":"VariableDeclaration","scope":1011,"src":"627:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":989,"name":"uint256","nodeType":"ElementaryTypeName","src":"627:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":991,"nodeType":"VariableDeclarationStatement","src":"627:11:7"},{"AST":{"nodeType":"YulBlock","src":"708:67:7","statements":[{"nodeType":"YulAssignment","src":"726:35:7","value":{"arguments":[{"name":"buffer","nodeType":"YulIdentifier","src":"737:6:7"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"749:2:7","type":"","value":"32"},{"name":"length","nodeType":"YulIdentifier","src":"753:6:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"745:3:7"},"nodeType":"YulFunctionCall","src":"745:15:7"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"733:3:7"},"nodeType":"YulFunctionCall","src":"733:28:7"},"variableNames":[{"name":"ptr","nodeType":"YulIdentifier","src":"726:3:7"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":983,"isOffset":false,"isSlot":false,"src":"737:6:7","valueSize":1},{"declaration":974,"isOffset":false,"isSlot":false,"src":"753:6:7","valueSize":1},{"declaration":990,"isOffset":false,"isSlot":false,"src":"726:3:7","valueSize":1}],"id":992,"nodeType":"InlineAssembly","src":"699:76:7"},{"body":{"id":1007,"nodeType":"Block","src":"801:267:7","statements":[{"expression":{"id":995,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"819:5:7","subExpression":{"id":994,"name":"ptr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":990,"src":"819:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":996,"nodeType":"ExpressionStatement","src":"819:5:7"},{"AST":{"nodeType":"YulBlock","src":"902:84:7","statements":[{"expression":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"932:3:7"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"946:5:7"},{"kind":"number","nodeType":"YulLiteral","src":"953:2:7","type":"","value":"10"}],"functionName":{"name":"mod","nodeType":"YulIdentifier","src":"942:3:7"},"nodeType":"YulFunctionCall","src":"942:14:7"},{"name":"_SYMBOLS","nodeType":"YulIdentifier","src":"958:8:7"}],"functionName":{"name":"byte","nodeType":"YulIdentifier","src":"937:4:7"},"nodeType":"YulFunctionCall","src":"937:30:7"}],"functionName":{"name":"mstore8","nodeType":"YulIdentifier","src":"924:7:7"},"nodeType":"YulFunctionCall","src":"924:44:7"},"nodeType":"YulExpressionStatement","src":"924:44:7"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":962,"isOffset":false,"isSlot":false,"src":"958:8:7","valueSize":1},{"declaration":990,"isOffset":false,"isSlot":false,"src":"932:3:7","valueSize":1},{"declaration":968,"isOffset":false,"isSlot":false,"src":"946:5:7","valueSize":1}],"id":997,"nodeType":"InlineAssembly","src":"893:93:7"},{"expression":{"id":1000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":998,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":968,"src":"1003:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":999,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1012:2:7","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"1003:11:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1001,"nodeType":"ExpressionStatement","src":"1003:11:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1002,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":968,"src":"1036:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1045:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1036:10:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1006,"nodeType":"IfStatement","src":"1032:21:7","trueBody":{"id":1005,"nodeType":"Break","src":"1048:5:7"}}]},"condition":{"hexValue":"74727565","id":993,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"795:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":1008,"nodeType":"WhileStatement","src":"788:280:7"},{"expression":{"id":1009,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":983,"src":"1088:6:7","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":972,"id":1010,"nodeType":"Return","src":"1081:13:7"}]}]},"documentation":{"id":966,"nodeType":"StructuredDocumentation","src":"320:90:7","text":" @dev Converts a `uint256` to its ASCII `string` decimal representation."},"id":1013,"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"424:8:7","nodeType":"FunctionDefinition","parameters":{"id":969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":968,"mutability":"mutable","name":"value","nameLocation":"441:5:7","nodeType":"VariableDeclaration","scope":1013,"src":"433:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":967,"name":"uint256","nodeType":"ElementaryTypeName","src":"433:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"432:15:7"},"returnParameters":{"id":972,"nodeType":"ParameterList","parameters":[{"constant":false,"id":971,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1013,"src":"471:13:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":970,"name":"string","nodeType":"ElementaryTypeName","src":"471:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"470:15:7"},"scope":1130,"src":"415:696:7","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1032,"nodeType":"Block","src":"1290:100:7","statements":[{"id":1031,"nodeType":"UncheckedBlock","src":"1300:84:7","statements":[{"expression":{"arguments":[{"id":1022,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1016,"src":"1343:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1028,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1025,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1016,"src":"1362:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1023,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1995,"src":"1350:4:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$1995_$","typeString":"type(library Math)"}},"id":1024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1355:6:7","memberName":"log256","nodeType":"MemberAccess","referencedDeclaration":1955,"src":"1350:11:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1026,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1350:18:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1027,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1371:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1350:22:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1021,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1033,1109,1129],"referencedDeclaration":1109,"src":"1331:11:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1029,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1331:42:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1020,"id":1030,"nodeType":"Return","src":"1324:49:7"}]}]},"documentation":{"id":1014,"nodeType":"StructuredDocumentation","src":"1117:94:7","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."},"id":1033,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"1225:11:7","nodeType":"FunctionDefinition","parameters":{"id":1017,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1016,"mutability":"mutable","name":"value","nameLocation":"1245:5:7","nodeType":"VariableDeclaration","scope":1033,"src":"1237:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1015,"name":"uint256","nodeType":"ElementaryTypeName","src":"1237:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1236:15:7"},"returnParameters":{"id":1020,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1019,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1033,"src":"1275:13:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1018,"name":"string","nodeType":"ElementaryTypeName","src":"1275:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1274:15:7"},"scope":1130,"src":"1216:174:7","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1108,"nodeType":"Block","src":"1603:347:7","statements":[{"assignments":[1044],"declarations":[{"constant":false,"id":1044,"mutability":"mutable","name":"buffer","nameLocation":"1626:6:7","nodeType":"VariableDeclaration","scope":1108,"src":"1613:19:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1043,"name":"bytes","nodeType":"ElementaryTypeName","src":"1613:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1053,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1049,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1047,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1645:1:7","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1048,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1038,"src":"1649:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1645:10:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":1050,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1658:1:7","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"1645:14:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1046,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1635:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":1045,"name":"bytes","nodeType":"ElementaryTypeName","src":"1639:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":1052,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1635:25:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"1613:47:7"},{"expression":{"id":1058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1054,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1044,"src":"1670:6:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1056,"indexExpression":{"hexValue":"30","id":1055,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1677:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1670:9:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":1057,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1682:3:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"src":"1670:15:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1059,"nodeType":"ExpressionStatement","src":"1670:15:7"},{"expression":{"id":1064,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1060,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1044,"src":"1695:6:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1062,"indexExpression":{"hexValue":"31","id":1061,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1702:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1695:9:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"78","id":1063,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1707:3:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83","typeString":"literal_string \"x\""},"value":"x"},"src":"1695:15:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1065,"nodeType":"ExpressionStatement","src":"1695:15:7"},{"body":{"id":1094,"nodeType":"Block","src":"1765:83:7","statements":[{"expression":{"id":1088,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1080,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1044,"src":"1779:6:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1082,"indexExpression":{"id":1081,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1067,"src":"1786:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1779:9:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":1083,"name":"_SYMBOLS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":962,"src":"1791:8:7","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":1087,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1086,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1084,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1036,"src":"1800:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":1085,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1808:3:7","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"1800:11:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1791:21:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"1779:33:7","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1089,"nodeType":"ExpressionStatement","src":"1779:33:7"},{"expression":{"id":1092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1090,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1036,"src":"1826:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":1091,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1836:1:7","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"1826:11:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1093,"nodeType":"ExpressionStatement","src":"1826:11:7"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1074,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1067,"src":"1753:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":1075,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1757:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1753:5:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1095,"initializationExpression":{"assignments":[1067],"declarations":[{"constant":false,"id":1067,"mutability":"mutable","name":"i","nameLocation":"1733:1:7","nodeType":"VariableDeclaration","scope":1095,"src":"1725:9:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1066,"name":"uint256","nodeType":"ElementaryTypeName","src":"1725:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1073,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1072,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1070,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1068,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1737:1:7","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1069,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1038,"src":"1741:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1737:10:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1750:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1737:14:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1725:26:7"},"loopExpression":{"expression":{"id":1078,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"1760:3:7","subExpression":{"id":1077,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1067,"src":"1762:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1079,"nodeType":"ExpressionStatement","src":"1760:3:7"},"nodeType":"ForStatement","src":"1720:128:7"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1099,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1097,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1036,"src":"1865:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1098,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1874:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1865:10:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"537472696e67733a20686578206c656e67746820696e73756666696369656e74","id":1100,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1877:34:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2","typeString":"literal_string \"Strings: hex length insufficient\""},"value":"Strings: hex length insufficient"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2","typeString":"literal_string \"Strings: hex length insufficient\""}],"id":1096,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1857:7:7","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1101,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1857:55:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1102,"nodeType":"ExpressionStatement","src":"1857:55:7"},{"expression":{"arguments":[{"id":1105,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1044,"src":"1936:6:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1104,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1929:6:7","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1103,"name":"string","nodeType":"ElementaryTypeName","src":"1929:6:7","typeDescriptions":{}}},"id":1106,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1929:14:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1042,"id":1107,"nodeType":"Return","src":"1922:21:7"}]},"documentation":{"id":1034,"nodeType":"StructuredDocumentation","src":"1396:112:7","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."},"id":1109,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"1522:11:7","nodeType":"FunctionDefinition","parameters":{"id":1039,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1036,"mutability":"mutable","name":"value","nameLocation":"1542:5:7","nodeType":"VariableDeclaration","scope":1109,"src":"1534:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1035,"name":"uint256","nodeType":"ElementaryTypeName","src":"1534:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1038,"mutability":"mutable","name":"length","nameLocation":"1557:6:7","nodeType":"VariableDeclaration","scope":1109,"src":"1549:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1037,"name":"uint256","nodeType":"ElementaryTypeName","src":"1549:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1533:31:7"},"returnParameters":{"id":1042,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1041,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1109,"src":"1588:13:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1040,"name":"string","nodeType":"ElementaryTypeName","src":"1588:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1587:15:7"},"scope":1130,"src":"1513:437:7","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1128,"nodeType":"Block","src":"2175:76:7","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":1122,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1112,"src":"2220:4:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1121,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2212:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":1120,"name":"uint160","nodeType":"ElementaryTypeName","src":"2212:7:7","typeDescriptions":{}}},"id":1123,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2212:13:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":1119,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2204:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1118,"name":"uint256","nodeType":"ElementaryTypeName","src":"2204:7:7","typeDescriptions":{}}},"id":1124,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2204:22:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1125,"name":"_ADDRESS_LENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":965,"src":"2228:15:7","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":1117,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1033,1109,1129],"referencedDeclaration":1109,"src":"2192:11:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1126,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2192:52:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1116,"id":1127,"nodeType":"Return","src":"2185:59:7"}]},"documentation":{"id":1110,"nodeType":"StructuredDocumentation","src":"1956:141:7","text":" @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation."},"id":1129,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"2111:11:7","nodeType":"FunctionDefinition","parameters":{"id":1113,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1112,"mutability":"mutable","name":"addr","nameLocation":"2131:4:7","nodeType":"VariableDeclaration","scope":1129,"src":"2123:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1111,"name":"address","nodeType":"ElementaryTypeName","src":"2123:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2122:14:7"},"returnParameters":{"id":1116,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1115,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1129,"src":"2160:13:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1114,"name":"string","nodeType":"ElementaryTypeName","src":"2160:6:7","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2159:15:7"},"scope":1130,"src":"2102:149:7","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":1131,"src":"188:2065:7","usedErrors":[]}],"src":"101:2153:7"},"id":7},"@openzeppelin/contracts/utils/math/Math.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","exportedSymbols":{"Math":[1995]},"id":1996,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1132,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"103:23:8"},{"abstract":false,"baseContracts":[],"canonicalName":"Math","contractDependencies":[],"contractKind":"library","documentation":{"id":1133,"nodeType":"StructuredDocumentation","src":"128:73:8","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"id":1995,"linearizedBaseContracts":[1995],"name":"Math","nameLocation":"210:4:8","nodeType":"ContractDefinition","nodes":[{"canonicalName":"Math.Rounding","id":1137,"members":[{"id":1134,"name":"Down","nameLocation":"245:4:8","nodeType":"EnumValue","src":"245:4:8"},{"id":1135,"name":"Up","nameLocation":"287:2:8","nodeType":"EnumValue","src":"287:2:8"},{"id":1136,"name":"Zero","nameLocation":"318:4:8","nodeType":"EnumValue","src":"318:4:8"}],"name":"Rounding","nameLocation":"226:8:8","nodeType":"EnumDefinition","src":"221:122:8"},{"body":{"id":1154,"nodeType":"Block","src":"480:37:8","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1147,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1140,"src":"497:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":1148,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1142,"src":"501:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"497:5:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":1151,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1142,"src":"509:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1152,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"497:13:8","trueExpression":{"id":1150,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1140,"src":"505:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1146,"id":1153,"nodeType":"Return","src":"490:20:8"}]},"documentation":{"id":1138,"nodeType":"StructuredDocumentation","src":"349:59:8","text":" @dev Returns the largest of two numbers."},"id":1155,"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"422:3:8","nodeType":"FunctionDefinition","parameters":{"id":1143,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1140,"mutability":"mutable","name":"a","nameLocation":"434:1:8","nodeType":"VariableDeclaration","scope":1155,"src":"426:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1139,"name":"uint256","nodeType":"ElementaryTypeName","src":"426:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1142,"mutability":"mutable","name":"b","nameLocation":"445:1:8","nodeType":"VariableDeclaration","scope":1155,"src":"437:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1141,"name":"uint256","nodeType":"ElementaryTypeName","src":"437:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"425:22:8"},"returnParameters":{"id":1146,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1145,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1155,"src":"471:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1144,"name":"uint256","nodeType":"ElementaryTypeName","src":"471:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"470:9:8"},"scope":1995,"src":"413:104:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1172,"nodeType":"Block","src":"655:37:8","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1165,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1158,"src":"672:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1166,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1160,"src":"676:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"672:5:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":1169,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1160,"src":"684:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1170,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"672:13:8","trueExpression":{"id":1168,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1158,"src":"680:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1164,"id":1171,"nodeType":"Return","src":"665:20:8"}]},"documentation":{"id":1156,"nodeType":"StructuredDocumentation","src":"523:60:8","text":" @dev Returns the smallest of two numbers."},"id":1173,"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"597:3:8","nodeType":"FunctionDefinition","parameters":{"id":1161,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1158,"mutability":"mutable","name":"a","nameLocation":"609:1:8","nodeType":"VariableDeclaration","scope":1173,"src":"601:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1157,"name":"uint256","nodeType":"ElementaryTypeName","src":"601:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1160,"mutability":"mutable","name":"b","nameLocation":"620:1:8","nodeType":"VariableDeclaration","scope":1173,"src":"612:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1159,"name":"uint256","nodeType":"ElementaryTypeName","src":"612:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"600:22:8"},"returnParameters":{"id":1164,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1163,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1173,"src":"646:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1162,"name":"uint256","nodeType":"ElementaryTypeName","src":"646:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"645:9:8"},"scope":1995,"src":"588:104:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1195,"nodeType":"Block","src":"876:82:8","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1183,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1176,"src":"931:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":1184,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1178,"src":"935:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"931:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1186,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"930:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1187,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1176,"src":"941:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":1188,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1178,"src":"945:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"941:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1190,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"940:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":1191,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"950:1:8","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"940:11:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"930:21:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1182,"id":1194,"nodeType":"Return","src":"923:28:8"}]},"documentation":{"id":1174,"nodeType":"StructuredDocumentation","src":"698:102:8","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"id":1196,"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"814:7:8","nodeType":"FunctionDefinition","parameters":{"id":1179,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1176,"mutability":"mutable","name":"a","nameLocation":"830:1:8","nodeType":"VariableDeclaration","scope":1196,"src":"822:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1175,"name":"uint256","nodeType":"ElementaryTypeName","src":"822:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1178,"mutability":"mutable","name":"b","nameLocation":"841:1:8","nodeType":"VariableDeclaration","scope":1196,"src":"833:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1177,"name":"uint256","nodeType":"ElementaryTypeName","src":"833:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"821:22:8"},"returnParameters":{"id":1182,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1181,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1196,"src":"867:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1180,"name":"uint256","nodeType":"ElementaryTypeName","src":"867:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"866:9:8"},"scope":1995,"src":"805:153:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1220,"nodeType":"Block","src":"1228:123:8","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1208,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1206,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1199,"src":"1316:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1207,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1321:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1316:6:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1210,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1199,"src":"1330:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1334:1:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1330:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1213,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1329:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1214,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1201,"src":"1339:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1329:11:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1216,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1343:1:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1329:15:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1316:28:8","trueExpression":{"hexValue":"30","id":1209,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1325:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1205,"id":1219,"nodeType":"Return","src":"1309:35:8"}]},"documentation":{"id":1197,"nodeType":"StructuredDocumentation","src":"964:188:8","text":" @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds up instead\n of rounding down."},"id":1221,"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"1166:7:8","nodeType":"FunctionDefinition","parameters":{"id":1202,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1199,"mutability":"mutable","name":"a","nameLocation":"1182:1:8","nodeType":"VariableDeclaration","scope":1221,"src":"1174:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1198,"name":"uint256","nodeType":"ElementaryTypeName","src":"1174:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1201,"mutability":"mutable","name":"b","nameLocation":"1193:1:8","nodeType":"VariableDeclaration","scope":1221,"src":"1185:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1200,"name":"uint256","nodeType":"ElementaryTypeName","src":"1185:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1173:22:8"},"returnParameters":{"id":1205,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1204,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1221,"src":"1219:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1203,"name":"uint256","nodeType":"ElementaryTypeName","src":"1219:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1218:9:8"},"scope":1995,"src":"1157:194:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1342,"nodeType":"Block","src":"1795:3797:8","statements":[{"id":1341,"nodeType":"UncheckedBlock","src":"1805:3781:8","statements":[{"assignments":[1234],"declarations":[{"constant":false,"id":1234,"mutability":"mutable","name":"prod0","nameLocation":"2134:5:8","nodeType":"VariableDeclaration","scope":1341,"src":"2126:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1233,"name":"uint256","nodeType":"ElementaryTypeName","src":"2126:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1235,"nodeType":"VariableDeclarationStatement","src":"2126:13:8"},{"assignments":[1237],"declarations":[{"constant":false,"id":1237,"mutability":"mutable","name":"prod1","nameLocation":"2206:5:8","nodeType":"VariableDeclaration","scope":1341,"src":"2198:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1236,"name":"uint256","nodeType":"ElementaryTypeName","src":"2198:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1238,"nodeType":"VariableDeclarationStatement","src":"2198:13:8"},{"AST":{"nodeType":"YulBlock","src":"2278:157:8","statements":[{"nodeType":"YulVariableDeclaration","src":"2296:30:8","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"2313:1:8"},{"name":"y","nodeType":"YulIdentifier","src":"2316:1:8"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2323:1:8","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2319:3:8"},"nodeType":"YulFunctionCall","src":"2319:6:8"}],"functionName":{"name":"mulmod","nodeType":"YulIdentifier","src":"2306:6:8"},"nodeType":"YulFunctionCall","src":"2306:20:8"},"variables":[{"name":"mm","nodeType":"YulTypedName","src":"2300:2:8","type":""}]},{"nodeType":"YulAssignment","src":"2343:18:8","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"2356:1:8"},{"name":"y","nodeType":"YulIdentifier","src":"2359:1:8"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"2352:3:8"},"nodeType":"YulFunctionCall","src":"2352:9:8"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"2343:5:8"}]},{"nodeType":"YulAssignment","src":"2378:43:8","value":{"arguments":[{"arguments":[{"name":"mm","nodeType":"YulIdentifier","src":"2395:2:8"},{"name":"prod0","nodeType":"YulIdentifier","src":"2399:5:8"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2391:3:8"},"nodeType":"YulFunctionCall","src":"2391:14:8"},{"arguments":[{"name":"mm","nodeType":"YulIdentifier","src":"2410:2:8"},{"name":"prod0","nodeType":"YulIdentifier","src":"2414:5:8"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2407:2:8"},"nodeType":"YulFunctionCall","src":"2407:13:8"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2387:3:8"},"nodeType":"YulFunctionCall","src":"2387:34:8"},"variableNames":[{"name":"prod1","nodeType":"YulIdentifier","src":"2378:5:8"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1234,"isOffset":false,"isSlot":false,"src":"2343:5:8","valueSize":1},{"declaration":1234,"isOffset":false,"isSlot":false,"src":"2399:5:8","valueSize":1},{"declaration":1234,"isOffset":false,"isSlot":false,"src":"2414:5:8","valueSize":1},{"declaration":1237,"isOffset":false,"isSlot":false,"src":"2378:5:8","valueSize":1},{"declaration":1224,"isOffset":false,"isSlot":false,"src":"2313:1:8","valueSize":1},{"declaration":1224,"isOffset":false,"isSlot":false,"src":"2356:1:8","valueSize":1},{"declaration":1226,"isOffset":false,"isSlot":false,"src":"2316:1:8","valueSize":1},{"declaration":1226,"isOffset":false,"isSlot":false,"src":"2359:1:8","valueSize":1}],"id":1239,"nodeType":"InlineAssembly","src":"2269:166:8"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1240,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1237,"src":"2516:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2525:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2516:10:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1248,"nodeType":"IfStatement","src":"2512:75:8","trueBody":{"id":1247,"nodeType":"Block","src":"2528:59:8","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1245,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1243,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1234,"src":"2553:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1244,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1228,"src":"2561:11:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2553:19:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1232,"id":1246,"nodeType":"Return","src":"2546:26:8"}]}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1252,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1250,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1228,"src":"2697:11:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":1251,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1237,"src":"2711:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2697:19:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1249,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2689:7:8","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":1253,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2689:28:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1254,"nodeType":"ExpressionStatement","src":"2689:28:8"},{"assignments":[1256],"declarations":[{"constant":false,"id":1256,"mutability":"mutable","name":"remainder","nameLocation":"2981:9:8","nodeType":"VariableDeclaration","scope":1341,"src":"2973:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1255,"name":"uint256","nodeType":"ElementaryTypeName","src":"2973:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1257,"nodeType":"VariableDeclarationStatement","src":"2973:17:8"},{"AST":{"nodeType":"YulBlock","src":"3013:291:8","statements":[{"nodeType":"YulAssignment","src":"3082:38:8","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"3102:1:8"},{"name":"y","nodeType":"YulIdentifier","src":"3105:1:8"},{"name":"denominator","nodeType":"YulIdentifier","src":"3108:11:8"}],"functionName":{"name":"mulmod","nodeType":"YulIdentifier","src":"3095:6:8"},"nodeType":"YulFunctionCall","src":"3095:25:8"},"variableNames":[{"name":"remainder","nodeType":"YulIdentifier","src":"3082:9:8"}]},{"nodeType":"YulAssignment","src":"3202:41:8","value":{"arguments":[{"name":"prod1","nodeType":"YulIdentifier","src":"3215:5:8"},{"arguments":[{"name":"remainder","nodeType":"YulIdentifier","src":"3225:9:8"},{"name":"prod0","nodeType":"YulIdentifier","src":"3236:5:8"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3222:2:8"},"nodeType":"YulFunctionCall","src":"3222:20:8"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3211:3:8"},"nodeType":"YulFunctionCall","src":"3211:32:8"},"variableNames":[{"name":"prod1","nodeType":"YulIdentifier","src":"3202:5:8"}]},{"nodeType":"YulAssignment","src":"3260:30:8","value":{"arguments":[{"name":"prod0","nodeType":"YulIdentifier","src":"3273:5:8"},{"name":"remainder","nodeType":"YulIdentifier","src":"3280:9:8"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3269:3:8"},"nodeType":"YulFunctionCall","src":"3269:21:8"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"3260:5:8"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1228,"isOffset":false,"isSlot":false,"src":"3108:11:8","valueSize":1},{"declaration":1234,"isOffset":false,"isSlot":false,"src":"3236:5:8","valueSize":1},{"declaration":1234,"isOffset":false,"isSlot":false,"src":"3260:5:8","valueSize":1},{"declaration":1234,"isOffset":false,"isSlot":false,"src":"3273:5:8","valueSize":1},{"declaration":1237,"isOffset":false,"isSlot":false,"src":"3202:5:8","valueSize":1},{"declaration":1237,"isOffset":false,"isSlot":false,"src":"3215:5:8","valueSize":1},{"declaration":1256,"isOffset":false,"isSlot":false,"src":"3082:9:8","valueSize":1},{"declaration":1256,"isOffset":false,"isSlot":false,"src":"3225:9:8","valueSize":1},{"declaration":1256,"isOffset":false,"isSlot":false,"src":"3280:9:8","valueSize":1},{"declaration":1224,"isOffset":false,"isSlot":false,"src":"3102:1:8","valueSize":1},{"declaration":1226,"isOffset":false,"isSlot":false,"src":"3105:1:8","valueSize":1}],"id":1258,"nodeType":"InlineAssembly","src":"3004:300:8"},{"assignments":[1260],"declarations":[{"constant":false,"id":1260,"mutability":"mutable","name":"twos","nameLocation":"3619:4:8","nodeType":"VariableDeclaration","scope":1341,"src":"3611:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1259,"name":"uint256","nodeType":"ElementaryTypeName","src":"3611:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1268,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1261,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1228,"src":"3626:11:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"3641:12:8","subExpression":{"id":1262,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1228,"src":"3642:11:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1264,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3656:1:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3641:16:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1266,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3640:18:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3626:32:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3611:47:8"},{"AST":{"nodeType":"YulBlock","src":"3681:362:8","statements":[{"nodeType":"YulAssignment","src":"3746:37:8","value":{"arguments":[{"name":"denominator","nodeType":"YulIdentifier","src":"3765:11:8"},{"name":"twos","nodeType":"YulIdentifier","src":"3778:4:8"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"3761:3:8"},"nodeType":"YulFunctionCall","src":"3761:22:8"},"variableNames":[{"name":"denominator","nodeType":"YulIdentifier","src":"3746:11:8"}]},{"nodeType":"YulAssignment","src":"3850:25:8","value":{"arguments":[{"name":"prod0","nodeType":"YulIdentifier","src":"3863:5:8"},{"name":"twos","nodeType":"YulIdentifier","src":"3870:4:8"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"3859:3:8"},"nodeType":"YulFunctionCall","src":"3859:16:8"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"3850:5:8"}]},{"nodeType":"YulAssignment","src":"3990:39:8","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4010:1:8","type":"","value":"0"},{"name":"twos","nodeType":"YulIdentifier","src":"4013:4:8"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4006:3:8"},"nodeType":"YulFunctionCall","src":"4006:12:8"},{"name":"twos","nodeType":"YulIdentifier","src":"4020:4:8"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"4002:3:8"},"nodeType":"YulFunctionCall","src":"4002:23:8"},{"kind":"number","nodeType":"YulLiteral","src":"4027:1:8","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3998:3:8"},"nodeType":"YulFunctionCall","src":"3998:31:8"},"variableNames":[{"name":"twos","nodeType":"YulIdentifier","src":"3990:4:8"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1228,"isOffset":false,"isSlot":false,"src":"3746:11:8","valueSize":1},{"declaration":1228,"isOffset":false,"isSlot":false,"src":"3765:11:8","valueSize":1},{"declaration":1234,"isOffset":false,"isSlot":false,"src":"3850:5:8","valueSize":1},{"declaration":1234,"isOffset":false,"isSlot":false,"src":"3863:5:8","valueSize":1},{"declaration":1260,"isOffset":false,"isSlot":false,"src":"3778:4:8","valueSize":1},{"declaration":1260,"isOffset":false,"isSlot":false,"src":"3870:4:8","valueSize":1},{"declaration":1260,"isOffset":false,"isSlot":false,"src":"3990:4:8","valueSize":1},{"declaration":1260,"isOffset":false,"isSlot":false,"src":"4013:4:8","valueSize":1},{"declaration":1260,"isOffset":false,"isSlot":false,"src":"4020:4:8","valueSize":1}],"id":1269,"nodeType":"InlineAssembly","src":"3672:371:8"},{"expression":{"id":1274,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1270,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1234,"src":"4109:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1271,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1237,"src":"4118:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1272,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1260,"src":"4126:4:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4118:12:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4109:21:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1275,"nodeType":"ExpressionStatement","src":"4109:21:8"},{"assignments":[1277],"declarations":[{"constant":false,"id":1277,"mutability":"mutable","name":"inverse","nameLocation":"4456:7:8","nodeType":"VariableDeclaration","scope":1341,"src":"4448:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1276,"name":"uint256","nodeType":"ElementaryTypeName","src":"4448:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1284,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":1278,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4467:1:8","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1279,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1228,"src":"4471:11:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4467:15:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1281,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4466:17:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":1282,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4486:1:8","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"4466:21:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4448:39:8"},{"expression":{"id":1291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1285,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1277,"src":"4704:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4715:1:8","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1287,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1228,"src":"4719:11:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1288,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1277,"src":"4733:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4719:21:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4715:25:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4704:36:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1292,"nodeType":"ExpressionStatement","src":"4704:36:8"},{"expression":{"id":1299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1293,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1277,"src":"4773:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1294,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4784:1:8","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1297,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1295,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1228,"src":"4788:11:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1296,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1277,"src":"4802:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4788:21:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4784:25:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4773:36:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1300,"nodeType":"ExpressionStatement","src":"4773:36:8"},{"expression":{"id":1307,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1301,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1277,"src":"4843:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1306,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4854:1:8","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1303,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1228,"src":"4858:11:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1304,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1277,"src":"4872:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4858:21:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4854:25:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4843:36:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1308,"nodeType":"ExpressionStatement","src":"4843:36:8"},{"expression":{"id":1315,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1309,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1277,"src":"4913:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1310,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4924:1:8","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1311,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1228,"src":"4928:11:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1312,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1277,"src":"4942:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4928:21:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4924:25:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4913:36:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1316,"nodeType":"ExpressionStatement","src":"4913:36:8"},{"expression":{"id":1323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1317,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1277,"src":"4983:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1318,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4994:1:8","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1319,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1228,"src":"4998:11:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1320,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1277,"src":"5012:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4998:21:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4994:25:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4983:36:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1324,"nodeType":"ExpressionStatement","src":"4983:36:8"},{"expression":{"id":1331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1325,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1277,"src":"5054:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1326,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5065:1:8","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1329,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1327,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1228,"src":"5069:11:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1328,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1277,"src":"5083:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5069:21:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5065:25:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5054:36:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1332,"nodeType":"ExpressionStatement","src":"5054:36:8"},{"expression":{"id":1337,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1333,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1231,"src":"5524:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1336,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1334,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1234,"src":"5533:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1335,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1277,"src":"5541:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5533:15:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5524:24:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1338,"nodeType":"ExpressionStatement","src":"5524:24:8"},{"expression":{"id":1339,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1231,"src":"5569:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1232,"id":1340,"nodeType":"Return","src":"5562:13:8"}]}]},"documentation":{"id":1222,"nodeType":"StructuredDocumentation","src":"1357:305:8","text":" @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\n @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\n with further edits by Uniswap Labs also under MIT license."},"id":1343,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"1676:6:8","nodeType":"FunctionDefinition","parameters":{"id":1229,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1224,"mutability":"mutable","name":"x","nameLocation":"1700:1:8","nodeType":"VariableDeclaration","scope":1343,"src":"1692:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1223,"name":"uint256","nodeType":"ElementaryTypeName","src":"1692:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1226,"mutability":"mutable","name":"y","nameLocation":"1719:1:8","nodeType":"VariableDeclaration","scope":1343,"src":"1711:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1225,"name":"uint256","nodeType":"ElementaryTypeName","src":"1711:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1228,"mutability":"mutable","name":"denominator","nameLocation":"1738:11:8","nodeType":"VariableDeclaration","scope":1343,"src":"1730:19:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1227,"name":"uint256","nodeType":"ElementaryTypeName","src":"1730:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1682:73:8"},"returnParameters":{"id":1232,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1231,"mutability":"mutable","name":"result","nameLocation":"1787:6:8","nodeType":"VariableDeclaration","scope":1343,"src":"1779:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1230,"name":"uint256","nodeType":"ElementaryTypeName","src":"1779:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1778:16:8"},"scope":1995,"src":"1667:3925:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1386,"nodeType":"Block","src":"5872:189:8","statements":[{"assignments":[1359],"declarations":[{"constant":false,"id":1359,"mutability":"mutable","name":"result","nameLocation":"5890:6:8","nodeType":"VariableDeclaration","scope":1386,"src":"5882:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1358,"name":"uint256","nodeType":"ElementaryTypeName","src":"5882:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1365,"initialValue":{"arguments":[{"id":1361,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1346,"src":"5906:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1362,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1348,"src":"5909:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1363,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1350,"src":"5912:11:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1360,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[1343,1387],"referencedDeclaration":1343,"src":"5899:6:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":1364,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5899:25:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5882:42:8"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1377,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$1137","typeString":"enum Math.Rounding"},"id":1369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1366,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1353,"src":"5938:8:8","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1137","typeString":"enum Math.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1367,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1137,"src":"5950:8:8","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$1137_$","typeString":"type(enum Math.Rounding)"}},"id":1368,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5959:2:8","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":1135,"src":"5950:11:8","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1137","typeString":"enum Math.Rounding"}},"src":"5938:23:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1371,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1346,"src":"5972:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1372,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1348,"src":"5975:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1373,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1350,"src":"5978:11:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1370,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"5965:6:8","typeDescriptions":{"typeIdentifier":"t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":1374,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5965:25:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1375,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5993:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5965:29:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5938:56:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1383,"nodeType":"IfStatement","src":"5934:98:8","trueBody":{"id":1382,"nodeType":"Block","src":"5996:36:8","statements":[{"expression":{"id":1380,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1378,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"6010:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1379,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6020:1:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6010:11:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1381,"nodeType":"ExpressionStatement","src":"6010:11:8"}]}},{"expression":{"id":1384,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1359,"src":"6048:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1357,"id":1385,"nodeType":"Return","src":"6041:13:8"}]},"documentation":{"id":1344,"nodeType":"StructuredDocumentation","src":"5598:121:8","text":" @notice Calculates x * y / denominator with full precision, following the selected rounding direction."},"id":1387,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"5733:6:8","nodeType":"FunctionDefinition","parameters":{"id":1354,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1346,"mutability":"mutable","name":"x","nameLocation":"5757:1:8","nodeType":"VariableDeclaration","scope":1387,"src":"5749:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1345,"name":"uint256","nodeType":"ElementaryTypeName","src":"5749:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1348,"mutability":"mutable","name":"y","nameLocation":"5776:1:8","nodeType":"VariableDeclaration","scope":1387,"src":"5768:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1347,"name":"uint256","nodeType":"ElementaryTypeName","src":"5768:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1350,"mutability":"mutable","name":"denominator","nameLocation":"5795:11:8","nodeType":"VariableDeclaration","scope":1387,"src":"5787:19:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1349,"name":"uint256","nodeType":"ElementaryTypeName","src":"5787:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1353,"mutability":"mutable","name":"rounding","nameLocation":"5825:8:8","nodeType":"VariableDeclaration","scope":1387,"src":"5816:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1137","typeString":"enum Math.Rounding"},"typeName":{"id":1352,"nodeType":"UserDefinedTypeName","pathNode":{"id":1351,"name":"Rounding","nameLocations":["5816:8:8"],"nodeType":"IdentifierPath","referencedDeclaration":1137,"src":"5816:8:8"},"referencedDeclaration":1137,"src":"5816:8:8","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1137","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"5739:100:8"},"returnParameters":{"id":1357,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1356,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1387,"src":"5863:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1355,"name":"uint256","nodeType":"ElementaryTypeName","src":"5863:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5862:9:8"},"scope":1995,"src":"5724:337:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1498,"nodeType":"Block","src":"6337:1585:8","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1395,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1390,"src":"6351:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6356:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6351:6:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1401,"nodeType":"IfStatement","src":"6347:45:8","trueBody":{"id":1400,"nodeType":"Block","src":"6359:33:8","statements":[{"expression":{"hexValue":"30","id":1398,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6380:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":1394,"id":1399,"nodeType":"Return","src":"6373:8:8"}]}},{"assignments":[1403],"declarations":[{"constant":false,"id":1403,"mutability":"mutable","name":"result","nameLocation":"7079:6:8","nodeType":"VariableDeclaration","scope":1498,"src":"7071:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1402,"name":"uint256","nodeType":"ElementaryTypeName","src":"7071:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1412,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1411,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1404,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7088:1:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1409,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1406,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1390,"src":"7099:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1405,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[1667,1703],"referencedDeclaration":1667,"src":"7094:4:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1407,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7094:7:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":1408,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7105:1:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7094:12:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1410,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7093:14:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7088:19:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7071:36:8"},{"id":1497,"nodeType":"UncheckedBlock","src":"7508:408:8","statements":[{"expression":{"id":1422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1413,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1403,"src":"7532:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1414,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1403,"src":"7542:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1417,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1415,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1390,"src":"7551:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1416,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1403,"src":"7555:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7551:10:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7542:19:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1419,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7541:21:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":1420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7566:1:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7541:26:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7532:35:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1423,"nodeType":"ExpressionStatement","src":"7532:35:8"},{"expression":{"id":1433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1424,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1403,"src":"7581:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1432,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1429,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1425,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1403,"src":"7591:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1426,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1390,"src":"7600:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1427,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1403,"src":"7604:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7600:10:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7591:19:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1430,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7590:21:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":1431,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7615:1:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7590:26:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7581:35:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1434,"nodeType":"ExpressionStatement","src":"7581:35:8"},{"expression":{"id":1444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1435,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1403,"src":"7630:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1436,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1403,"src":"7640:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1437,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1390,"src":"7649:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1438,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1403,"src":"7653:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7649:10:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7640:19:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1441,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7639:21:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":1442,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7664:1:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7639:26:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7630:35:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1445,"nodeType":"ExpressionStatement","src":"7630:35:8"},{"expression":{"id":1455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1446,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1403,"src":"7679:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1447,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1403,"src":"7689:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1448,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1390,"src":"7698:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1449,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1403,"src":"7702:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7698:10:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7689:19:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1452,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7688:21:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":1453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7713:1:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7688:26:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7679:35:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1456,"nodeType":"ExpressionStatement","src":"7679:35:8"},{"expression":{"id":1466,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1457,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1403,"src":"7728:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1458,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1403,"src":"7738:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1459,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1390,"src":"7747:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1460,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1403,"src":"7751:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7747:10:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7738:19:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1463,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7737:21:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":1464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7762:1:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7737:26:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7728:35:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1467,"nodeType":"ExpressionStatement","src":"7728:35:8"},{"expression":{"id":1477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1468,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1403,"src":"7777:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1476,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1469,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1403,"src":"7787:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1470,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1390,"src":"7796:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1471,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1403,"src":"7800:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7796:10:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7787:19:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1474,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7786:21:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":1475,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7811:1:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7786:26:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7777:35:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1478,"nodeType":"ExpressionStatement","src":"7777:35:8"},{"expression":{"id":1488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1479,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1403,"src":"7826:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1484,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1480,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1403,"src":"7836:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1481,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1390,"src":"7845:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1482,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1403,"src":"7849:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7845:10:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7836:19:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1485,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7835:21:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":1486,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7860:1:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7835:26:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7826:35:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1489,"nodeType":"ExpressionStatement","src":"7826:35:8"},{"expression":{"arguments":[{"id":1491,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1403,"src":"7886:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1492,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1390,"src":"7894:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1493,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1403,"src":"7898:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7894:10:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1490,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1173,"src":"7882:3:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":1495,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7882:23:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1394,"id":1496,"nodeType":"Return","src":"7875:30:8"}]}]},"documentation":{"id":1388,"nodeType":"StructuredDocumentation","src":"6067:208:8","text":" @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\n Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11)."},"id":1499,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"6289:4:8","nodeType":"FunctionDefinition","parameters":{"id":1391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1390,"mutability":"mutable","name":"a","nameLocation":"6302:1:8","nodeType":"VariableDeclaration","scope":1499,"src":"6294:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1389,"name":"uint256","nodeType":"ElementaryTypeName","src":"6294:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6293:11:8"},"returnParameters":{"id":1394,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1393,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1499,"src":"6328:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1392,"name":"uint256","nodeType":"ElementaryTypeName","src":"6328:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6327:9:8"},"scope":1995,"src":"6280:1642:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1534,"nodeType":"Block","src":"8098:161:8","statements":[{"id":1533,"nodeType":"UncheckedBlock","src":"8108:145:8","statements":[{"assignments":[1511],"declarations":[{"constant":false,"id":1511,"mutability":"mutable","name":"result","nameLocation":"8140:6:8","nodeType":"VariableDeclaration","scope":1533,"src":"8132:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1510,"name":"uint256","nodeType":"ElementaryTypeName","src":"8132:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1515,"initialValue":{"arguments":[{"id":1513,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1502,"src":"8154:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1512,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[1499,1535],"referencedDeclaration":1499,"src":"8149:4:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1514,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8149:7:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8132:24:8"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1531,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1516,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1511,"src":"8177:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$1137","typeString":"enum Math.Rounding"},"id":1520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1517,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1505,"src":"8187:8:8","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1137","typeString":"enum Math.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1518,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1137,"src":"8199:8:8","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$1137_$","typeString":"type(enum Math.Rounding)"}},"id":1519,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8208:2:8","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":1135,"src":"8199:11:8","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1137","typeString":"enum Math.Rounding"}},"src":"8187:23:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1523,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1521,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1511,"src":"8214:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1522,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1511,"src":"8223:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8214:15:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1524,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1502,"src":"8232:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8214:19:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8187:46:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1528,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8240:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8187:54:8","trueExpression":{"hexValue":"31","id":1527,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8236:1:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1530,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8186:56:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"8177:65:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1509,"id":1532,"nodeType":"Return","src":"8170:72:8"}]}]},"documentation":{"id":1500,"nodeType":"StructuredDocumentation","src":"7928:89:8","text":" @notice Calculates sqrt(a), following the selected rounding direction."},"id":1535,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"8031:4:8","nodeType":"FunctionDefinition","parameters":{"id":1506,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1502,"mutability":"mutable","name":"a","nameLocation":"8044:1:8","nodeType":"VariableDeclaration","scope":1535,"src":"8036:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1501,"name":"uint256","nodeType":"ElementaryTypeName","src":"8036:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1505,"mutability":"mutable","name":"rounding","nameLocation":"8056:8:8","nodeType":"VariableDeclaration","scope":1535,"src":"8047:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1137","typeString":"enum Math.Rounding"},"typeName":{"id":1504,"nodeType":"UserDefinedTypeName","pathNode":{"id":1503,"name":"Rounding","nameLocations":["8047:8:8"],"nodeType":"IdentifierPath","referencedDeclaration":1137,"src":"8047:8:8"},"referencedDeclaration":1137,"src":"8047:8:8","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1137","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"8035:30:8"},"returnParameters":{"id":1509,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1508,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1535,"src":"8089:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1507,"name":"uint256","nodeType":"ElementaryTypeName","src":"8089:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8088:9:8"},"scope":1995,"src":"8022:237:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1666,"nodeType":"Block","src":"8444:922:8","statements":[{"assignments":[1544],"declarations":[{"constant":false,"id":1544,"mutability":"mutable","name":"result","nameLocation":"8462:6:8","nodeType":"VariableDeclaration","scope":1666,"src":"8454:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1543,"name":"uint256","nodeType":"ElementaryTypeName","src":"8454:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1546,"initialValue":{"hexValue":"30","id":1545,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8471:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"8454:18:8"},{"id":1663,"nodeType":"UncheckedBlock","src":"8482:855:8","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1547,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1538,"src":"8510:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":1548,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8519:3:8","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"8510:12:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1550,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8525:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8510:16:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1561,"nodeType":"IfStatement","src":"8506:99:8","trueBody":{"id":1560,"nodeType":"Block","src":"8528:77:8","statements":[{"expression":{"id":1554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1552,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1538,"src":"8546:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":1553,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8556:3:8","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"8546:13:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1555,"nodeType":"ExpressionStatement","src":"8546:13:8"},{"expression":{"id":1558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1556,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1544,"src":"8577:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"313238","id":1557,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8587:3:8","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"8577:13:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1559,"nodeType":"ExpressionStatement","src":"8577:13:8"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1566,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1562,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1538,"src":"8622:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":1563,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8631:2:8","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"8622:11:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1565,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8636:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8622:15:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1576,"nodeType":"IfStatement","src":"8618:96:8","trueBody":{"id":1575,"nodeType":"Block","src":"8639:75:8","statements":[{"expression":{"id":1569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1567,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1538,"src":"8657:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":1568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8667:2:8","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"8657:12:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1570,"nodeType":"ExpressionStatement","src":"8657:12:8"},{"expression":{"id":1573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1571,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1544,"src":"8687:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":1572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8697:2:8","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"8687:12:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1574,"nodeType":"ExpressionStatement","src":"8687:12:8"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1579,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1577,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1538,"src":"8731:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":1578,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8740:2:8","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"8731:11:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1580,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8745:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8731:15:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1591,"nodeType":"IfStatement","src":"8727:96:8","trueBody":{"id":1590,"nodeType":"Block","src":"8748:75:8","statements":[{"expression":{"id":1584,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1582,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1538,"src":"8766:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":1583,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8776:2:8","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"8766:12:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1585,"nodeType":"ExpressionStatement","src":"8766:12:8"},{"expression":{"id":1588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1586,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1544,"src":"8796:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":1587,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8806:2:8","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"8796:12:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1589,"nodeType":"ExpressionStatement","src":"8796:12:8"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1594,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1592,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1538,"src":"8840:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":1593,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8849:2:8","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"8840:11:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1595,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8854:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8840:15:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1606,"nodeType":"IfStatement","src":"8836:96:8","trueBody":{"id":1605,"nodeType":"Block","src":"8857:75:8","statements":[{"expression":{"id":1599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1597,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1538,"src":"8875:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":1598,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8885:2:8","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"8875:12:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1600,"nodeType":"ExpressionStatement","src":"8875:12:8"},{"expression":{"id":1603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1601,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1544,"src":"8905:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8915:2:8","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"8905:12:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1604,"nodeType":"ExpressionStatement","src":"8905:12:8"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1611,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1607,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1538,"src":"8949:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":1608,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8958:1:8","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"8949:10:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1610,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8962:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8949:14:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1621,"nodeType":"IfStatement","src":"8945:93:8","trueBody":{"id":1620,"nodeType":"Block","src":"8965:73:8","statements":[{"expression":{"id":1614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1612,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1538,"src":"8983:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":1613,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8993:1:8","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"8983:11:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1615,"nodeType":"ExpressionStatement","src":"8983:11:8"},{"expression":{"id":1618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1616,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1544,"src":"9012:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1617,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9022:1:8","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"9012:11:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1619,"nodeType":"ExpressionStatement","src":"9012:11:8"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1624,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1622,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1538,"src":"9055:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":1623,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9064:1:8","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"9055:10:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1625,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9068:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9055:14:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1636,"nodeType":"IfStatement","src":"9051:93:8","trueBody":{"id":1635,"nodeType":"Block","src":"9071:73:8","statements":[{"expression":{"id":1629,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1627,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1538,"src":"9089:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":1628,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9099:1:8","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"9089:11:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1630,"nodeType":"ExpressionStatement","src":"9089:11:8"},{"expression":{"id":1633,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1631,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1544,"src":"9118:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1632,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9128:1:8","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"9118:11:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1634,"nodeType":"ExpressionStatement","src":"9118:11:8"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1641,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1639,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1637,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1538,"src":"9161:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":1638,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9170:1:8","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9161:10:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1640,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9174:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9161:14:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1651,"nodeType":"IfStatement","src":"9157:93:8","trueBody":{"id":1650,"nodeType":"Block","src":"9177:73:8","statements":[{"expression":{"id":1644,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1642,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1538,"src":"9195:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"32","id":1643,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9205:1:8","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9195:11:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1645,"nodeType":"ExpressionStatement","src":"9195:11:8"},{"expression":{"id":1648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1646,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1544,"src":"9224:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1647,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9234:1:8","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9224:11:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1649,"nodeType":"ExpressionStatement","src":"9224:11:8"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1652,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1538,"src":"9267:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":1653,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9276:1:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9267:10:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1655,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9280:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9267:14:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1662,"nodeType":"IfStatement","src":"9263:64:8","trueBody":{"id":1661,"nodeType":"Block","src":"9283:44:8","statements":[{"expression":{"id":1659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1657,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1544,"src":"9301:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9311:1:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9301:11:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1660,"nodeType":"ExpressionStatement","src":"9301:11:8"}]}}]},{"expression":{"id":1664,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1544,"src":"9353:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1542,"id":1665,"nodeType":"Return","src":"9346:13:8"}]},"documentation":{"id":1536,"nodeType":"StructuredDocumentation","src":"8265:113:8","text":" @dev Return the log in base 2, rounded down, of a positive value.\n Returns 0 if given 0."},"id":1667,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"8392:4:8","nodeType":"FunctionDefinition","parameters":{"id":1539,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1538,"mutability":"mutable","name":"value","nameLocation":"8405:5:8","nodeType":"VariableDeclaration","scope":1667,"src":"8397:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1537,"name":"uint256","nodeType":"ElementaryTypeName","src":"8397:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8396:15:8"},"returnParameters":{"id":1542,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1541,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1667,"src":"8435:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1540,"name":"uint256","nodeType":"ElementaryTypeName","src":"8435:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8434:9:8"},"scope":1995,"src":"8383:983:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1702,"nodeType":"Block","src":"9599:165:8","statements":[{"id":1701,"nodeType":"UncheckedBlock","src":"9609:149:8","statements":[{"assignments":[1679],"declarations":[{"constant":false,"id":1679,"mutability":"mutable","name":"result","nameLocation":"9641:6:8","nodeType":"VariableDeclaration","scope":1701,"src":"9633:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1678,"name":"uint256","nodeType":"ElementaryTypeName","src":"9633:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1683,"initialValue":{"arguments":[{"id":1681,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1670,"src":"9655:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1680,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[1667,1703],"referencedDeclaration":1667,"src":"9650:4:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1682,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9650:11:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9633:28:8"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1684,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1679,"src":"9682:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$1137","typeString":"enum Math.Rounding"},"id":1688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1685,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1673,"src":"9692:8:8","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1137","typeString":"enum Math.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1686,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1137,"src":"9704:8:8","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$1137_$","typeString":"type(enum Math.Rounding)"}},"id":1687,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9713:2:8","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":1135,"src":"9704:11:8","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1137","typeString":"enum Math.Rounding"}},"src":"9692:23:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1693,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1689,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9719:1:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":1690,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1679,"src":"9724:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9719:11:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1692,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1670,"src":"9733:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9719:19:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9692:46:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1696,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9745:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1697,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"9692:54:8","trueExpression":{"hexValue":"31","id":1695,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9741:1:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1698,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9691:56:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"9682:65:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1677,"id":1700,"nodeType":"Return","src":"9675:72:8"}]}]},"documentation":{"id":1668,"nodeType":"StructuredDocumentation","src":"9372:142:8","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":1703,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"9528:4:8","nodeType":"FunctionDefinition","parameters":{"id":1674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1670,"mutability":"mutable","name":"value","nameLocation":"9541:5:8","nodeType":"VariableDeclaration","scope":1703,"src":"9533:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1669,"name":"uint256","nodeType":"ElementaryTypeName","src":"9533:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1673,"mutability":"mutable","name":"rounding","nameLocation":"9557:8:8","nodeType":"VariableDeclaration","scope":1703,"src":"9548:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1137","typeString":"enum Math.Rounding"},"typeName":{"id":1672,"nodeType":"UserDefinedTypeName","pathNode":{"id":1671,"name":"Rounding","nameLocations":["9548:8:8"],"nodeType":"IdentifierPath","referencedDeclaration":1137,"src":"9548:8:8"},"referencedDeclaration":1137,"src":"9548:8:8","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1137","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"9532:34:8"},"returnParameters":{"id":1677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1676,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1703,"src":"9590:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1675,"name":"uint256","nodeType":"ElementaryTypeName","src":"9590:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9589:9:8"},"scope":1995,"src":"9519:245:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1831,"nodeType":"Block","src":"9951:828:8","statements":[{"assignments":[1712],"declarations":[{"constant":false,"id":1712,"mutability":"mutable","name":"result","nameLocation":"9969:6:8","nodeType":"VariableDeclaration","scope":1831,"src":"9961:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1711,"name":"uint256","nodeType":"ElementaryTypeName","src":"9961:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1714,"initialValue":{"hexValue":"30","id":1713,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9978:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"9961:18:8"},{"id":1828,"nodeType":"UncheckedBlock","src":"9989:761:8","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1715,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1706,"src":"10017:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":1718,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1716,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10026:2:8","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":1717,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10030:2:8","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10026:6:8","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"10017:15:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1731,"nodeType":"IfStatement","src":"10013:99:8","trueBody":{"id":1730,"nodeType":"Block","src":"10034:78:8","statements":[{"expression":{"id":1724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1720,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1706,"src":"10052:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":1723,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1721,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10061:2:8","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":1722,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10065:2:8","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10061:6:8","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"10052:15:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1725,"nodeType":"ExpressionStatement","src":"10052:15:8"},{"expression":{"id":1728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1726,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1712,"src":"10085:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":1727,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10095:2:8","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10085:12:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1729,"nodeType":"ExpressionStatement","src":"10085:12:8"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1732,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1706,"src":"10129:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1735,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1733,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10138:2:8","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1734,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10142:2:8","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"10138:6:8","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"10129:15:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1748,"nodeType":"IfStatement","src":"10125:99:8","trueBody":{"id":1747,"nodeType":"Block","src":"10146:78:8","statements":[{"expression":{"id":1741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1737,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1706,"src":"10164:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":1740,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1738,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10173:2:8","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":1739,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10177:2:8","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"10173:6:8","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"10164:15:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1742,"nodeType":"ExpressionStatement","src":"10164:15:8"},{"expression":{"id":1745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1743,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1712,"src":"10197:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":1744,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10207:2:8","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"10197:12:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1746,"nodeType":"ExpressionStatement","src":"10197:12:8"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1753,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1749,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1706,"src":"10241:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1752,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1750,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10250:2:8","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1751,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10254:2:8","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"10250:6:8","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"10241:15:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1765,"nodeType":"IfStatement","src":"10237:99:8","trueBody":{"id":1764,"nodeType":"Block","src":"10258:78:8","statements":[{"expression":{"id":1758,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1754,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1706,"src":"10276:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":1757,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1755,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10285:2:8","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":1756,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10289:2:8","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"10285:6:8","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"10276:15:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1759,"nodeType":"ExpressionStatement","src":"10276:15:8"},{"expression":{"id":1762,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1760,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1712,"src":"10309:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1761,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10319:2:8","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"10309:12:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1763,"nodeType":"ExpressionStatement","src":"10309:12:8"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1766,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1706,"src":"10353:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1769,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1767,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10362:2:8","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1768,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10366:1:8","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"10362:5:8","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"10353:14:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1782,"nodeType":"IfStatement","src":"10349:96:8","trueBody":{"id":1781,"nodeType":"Block","src":"10369:76:8","statements":[{"expression":{"id":1775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1771,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1706,"src":"10387:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":1774,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1772,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10396:2:8","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":1773,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10400:1:8","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"10396:5:8","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"10387:14:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1776,"nodeType":"ExpressionStatement","src":"10387:14:8"},{"expression":{"id":1779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1777,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1712,"src":"10419:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1778,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10429:1:8","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"10419:11:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1780,"nodeType":"ExpressionStatement","src":"10419:11:8"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1787,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1783,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1706,"src":"10462:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1786,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1784,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10471:2:8","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1785,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10475:1:8","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"10471:5:8","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"10462:14:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1799,"nodeType":"IfStatement","src":"10458:96:8","trueBody":{"id":1798,"nodeType":"Block","src":"10478:76:8","statements":[{"expression":{"id":1792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1788,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1706,"src":"10496:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":1791,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1789,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10505:2:8","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":1790,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10509:1:8","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"10505:5:8","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"10496:14:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1793,"nodeType":"ExpressionStatement","src":"10496:14:8"},{"expression":{"id":1796,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1794,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1712,"src":"10528:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1795,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10538:1:8","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"10528:11:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1797,"nodeType":"ExpressionStatement","src":"10528:11:8"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1800,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1706,"src":"10571:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1803,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1801,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10580:2:8","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1802,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10584:1:8","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10580:5:8","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"10571:14:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1816,"nodeType":"IfStatement","src":"10567:96:8","trueBody":{"id":1815,"nodeType":"Block","src":"10587:76:8","statements":[{"expression":{"id":1809,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1805,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1706,"src":"10605:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":1808,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1806,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10614:2:8","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":1807,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10618:1:8","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10614:5:8","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"10605:14:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1810,"nodeType":"ExpressionStatement","src":"10605:14:8"},{"expression":{"id":1813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1811,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1712,"src":"10637:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1812,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10647:1:8","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10637:11:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1814,"nodeType":"ExpressionStatement","src":"10637:11:8"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1817,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1706,"src":"10680:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":1820,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1818,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10689:2:8","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":1819,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10693:1:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10689:5:8","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"10680:14:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1827,"nodeType":"IfStatement","src":"10676:64:8","trueBody":{"id":1826,"nodeType":"Block","src":"10696:44:8","statements":[{"expression":{"id":1824,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1822,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1712,"src":"10714:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1823,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10724:1:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10714:11:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1825,"nodeType":"ExpressionStatement","src":"10714:11:8"}]}}]},{"expression":{"id":1829,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1712,"src":"10766:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1710,"id":1830,"nodeType":"Return","src":"10759:13:8"}]},"documentation":{"id":1704,"nodeType":"StructuredDocumentation","src":"9770:114:8","text":" @dev Return the log in base 10, rounded down, of a positive value.\n Returns 0 if given 0."},"id":1832,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"9898:5:8","nodeType":"FunctionDefinition","parameters":{"id":1707,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1706,"mutability":"mutable","name":"value","nameLocation":"9912:5:8","nodeType":"VariableDeclaration","scope":1832,"src":"9904:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1705,"name":"uint256","nodeType":"ElementaryTypeName","src":"9904:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9903:15:8"},"returnParameters":{"id":1710,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1709,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1832,"src":"9942:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1708,"name":"uint256","nodeType":"ElementaryTypeName","src":"9942:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9941:9:8"},"scope":1995,"src":"9889:890:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1867,"nodeType":"Block","src":"11014:165:8","statements":[{"id":1866,"nodeType":"UncheckedBlock","src":"11024:149:8","statements":[{"assignments":[1844],"declarations":[{"constant":false,"id":1844,"mutability":"mutable","name":"result","nameLocation":"11056:6:8","nodeType":"VariableDeclaration","scope":1866,"src":"11048:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1843,"name":"uint256","nodeType":"ElementaryTypeName","src":"11048:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1848,"initialValue":{"arguments":[{"id":1846,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1835,"src":"11071:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1845,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[1832,1868],"referencedDeclaration":1832,"src":"11065:5:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1847,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11065:12:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11048:29:8"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1849,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1844,"src":"11098:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$1137","typeString":"enum Math.Rounding"},"id":1853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1850,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1838,"src":"11108:8:8","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1137","typeString":"enum Math.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1851,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1137,"src":"11120:8:8","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$1137_$","typeString":"type(enum Math.Rounding)"}},"id":1852,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11129:2:8","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":1135,"src":"11120:11:8","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1137","typeString":"enum Math.Rounding"}},"src":"11108:23:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1854,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11135:2:8","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":1855,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1844,"src":"11139:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11135:10:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1857,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1835,"src":"11148:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11135:18:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11108:45:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1861,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11160:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11108:53:8","trueExpression":{"hexValue":"31","id":1860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11156:1:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1863,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11107:55:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11098:64:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1842,"id":1865,"nodeType":"Return","src":"11091:71:8"}]}]},"documentation":{"id":1833,"nodeType":"StructuredDocumentation","src":"10785:143:8","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":1868,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"10942:5:8","nodeType":"FunctionDefinition","parameters":{"id":1839,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1835,"mutability":"mutable","name":"value","nameLocation":"10956:5:8","nodeType":"VariableDeclaration","scope":1868,"src":"10948:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1834,"name":"uint256","nodeType":"ElementaryTypeName","src":"10948:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1838,"mutability":"mutable","name":"rounding","nameLocation":"10972:8:8","nodeType":"VariableDeclaration","scope":1868,"src":"10963:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1137","typeString":"enum Math.Rounding"},"typeName":{"id":1837,"nodeType":"UserDefinedTypeName","pathNode":{"id":1836,"name":"Rounding","nameLocations":["10963:8:8"],"nodeType":"IdentifierPath","referencedDeclaration":1137,"src":"10963:8:8"},"referencedDeclaration":1137,"src":"10963:8:8","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1137","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"10947:34:8"},"returnParameters":{"id":1842,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1841,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1868,"src":"11005:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1840,"name":"uint256","nodeType":"ElementaryTypeName","src":"11005:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11004:9:8"},"scope":1995,"src":"10933:246:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1954,"nodeType":"Block","src":"11493:600:8","statements":[{"assignments":[1877],"declarations":[{"constant":false,"id":1877,"mutability":"mutable","name":"result","nameLocation":"11511:6:8","nodeType":"VariableDeclaration","scope":1954,"src":"11503:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1876,"name":"uint256","nodeType":"ElementaryTypeName","src":"11503:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1879,"initialValue":{"hexValue":"30","id":1878,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11520:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"11503:18:8"},{"id":1951,"nodeType":"UncheckedBlock","src":"11531:533:8","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1882,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1880,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1871,"src":"11559:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":1881,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11568:3:8","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"11559:12:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1883,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11574:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11559:16:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1894,"nodeType":"IfStatement","src":"11555:98:8","trueBody":{"id":1893,"nodeType":"Block","src":"11577:76:8","statements":[{"expression":{"id":1887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1885,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1871,"src":"11595:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":1886,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11605:3:8","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"11595:13:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1888,"nodeType":"ExpressionStatement","src":"11595:13:8"},{"expression":{"id":1891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1889,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1877,"src":"11626:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":1890,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11636:2:8","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"11626:12:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1892,"nodeType":"ExpressionStatement","src":"11626:12:8"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1899,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1897,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1895,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1871,"src":"11670:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":1896,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11679:2:8","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"11670:11:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1898,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11684:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11670:15:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1909,"nodeType":"IfStatement","src":"11666:95:8","trueBody":{"id":1908,"nodeType":"Block","src":"11687:74:8","statements":[{"expression":{"id":1902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1900,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1871,"src":"11705:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":1901,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11715:2:8","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"11705:12:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1903,"nodeType":"ExpressionStatement","src":"11705:12:8"},{"expression":{"id":1906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1904,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1877,"src":"11735:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":1905,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11745:1:8","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"11735:11:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1907,"nodeType":"ExpressionStatement","src":"11735:11:8"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1914,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1910,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1871,"src":"11778:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":1911,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11787:2:8","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"11778:11:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1913,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11792:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11778:15:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1924,"nodeType":"IfStatement","src":"11774:95:8","trueBody":{"id":1923,"nodeType":"Block","src":"11795:74:8","statements":[{"expression":{"id":1917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1915,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1871,"src":"11813:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":1916,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11823:2:8","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"11813:12:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1918,"nodeType":"ExpressionStatement","src":"11813:12:8"},{"expression":{"id":1921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1919,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1877,"src":"11843:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":1920,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11853:1:8","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"11843:11:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1922,"nodeType":"ExpressionStatement","src":"11843:11:8"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1929,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1925,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1871,"src":"11886:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":1926,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11895:2:8","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"11886:11:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1928,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11900:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11886:15:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1939,"nodeType":"IfStatement","src":"11882:95:8","trueBody":{"id":1938,"nodeType":"Block","src":"11903:74:8","statements":[{"expression":{"id":1932,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1930,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1871,"src":"11921:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":1931,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11931:2:8","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"11921:12:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1933,"nodeType":"ExpressionStatement","src":"11921:12:8"},{"expression":{"id":1936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1934,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1877,"src":"11951:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":1935,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11961:1:8","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"11951:11:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1937,"nodeType":"ExpressionStatement","src":"11951:11:8"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1940,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1871,"src":"11994:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":1941,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12003:1:8","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"11994:10:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1943,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12007:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11994:14:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1950,"nodeType":"IfStatement","src":"11990:64:8","trueBody":{"id":1949,"nodeType":"Block","src":"12010:44:8","statements":[{"expression":{"id":1947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1945,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1877,"src":"12028:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":1946,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12038:1:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12028:11:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1948,"nodeType":"ExpressionStatement","src":"12028:11:8"}]}}]},{"expression":{"id":1952,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1877,"src":"12080:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1875,"id":1953,"nodeType":"Return","src":"12073:13:8"}]},"documentation":{"id":1869,"nodeType":"StructuredDocumentation","src":"11185:240:8","text":" @dev Return the log in base 256, rounded down, of a positive value.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string."},"id":1955,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"11439:6:8","nodeType":"FunctionDefinition","parameters":{"id":1872,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1871,"mutability":"mutable","name":"value","nameLocation":"11454:5:8","nodeType":"VariableDeclaration","scope":1955,"src":"11446:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1870,"name":"uint256","nodeType":"ElementaryTypeName","src":"11446:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11445:15:8"},"returnParameters":{"id":1875,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1874,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1955,"src":"11484:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1873,"name":"uint256","nodeType":"ElementaryTypeName","src":"11484:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11483:9:8"},"scope":1995,"src":"11430:663:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1993,"nodeType":"Block","src":"12329:173:8","statements":[{"id":1992,"nodeType":"UncheckedBlock","src":"12339:157:8","statements":[{"assignments":[1967],"declarations":[{"constant":false,"id":1967,"mutability":"mutable","name":"result","nameLocation":"12371:6:8","nodeType":"VariableDeclaration","scope":1992,"src":"12363:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1966,"name":"uint256","nodeType":"ElementaryTypeName","src":"12363:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1971,"initialValue":{"arguments":[{"id":1969,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1958,"src":"12387:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1968,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[1955,1994],"referencedDeclaration":1955,"src":"12380:6:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1970,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12380:13:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12363:30:8"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1972,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1967,"src":"12414:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1985,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$1137","typeString":"enum Math.Rounding"},"id":1976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1973,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1961,"src":"12424:8:8","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1137","typeString":"enum Math.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":1974,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1137,"src":"12436:8:8","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$1137_$","typeString":"type(enum Math.Rounding)"}},"id":1975,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12445:2:8","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":1135,"src":"12436:11:8","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1137","typeString":"enum Math.Rounding"}},"src":"12424:23:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12451:1:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1978,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1967,"src":"12457:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"38","id":1979,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12466:1:8","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12457:10:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1981,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12456:12:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12451:17:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1983,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1958,"src":"12471:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12451:25:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12424:52:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":1987,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12483:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":1988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"12424:60:8","trueExpression":{"hexValue":"31","id":1986,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12479:1:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1989,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12423:62:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"12414:71:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1965,"id":1991,"nodeType":"Return","src":"12407:78:8"}]}]},"documentation":{"id":1956,"nodeType":"StructuredDocumentation","src":"12099:143:8","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":1994,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"12256:6:8","nodeType":"FunctionDefinition","parameters":{"id":1962,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1958,"mutability":"mutable","name":"value","nameLocation":"12271:5:8","nodeType":"VariableDeclaration","scope":1994,"src":"12263:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1957,"name":"uint256","nodeType":"ElementaryTypeName","src":"12263:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1961,"mutability":"mutable","name":"rounding","nameLocation":"12287:8:8","nodeType":"VariableDeclaration","scope":1994,"src":"12278:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1137","typeString":"enum Math.Rounding"},"typeName":{"id":1960,"nodeType":"UserDefinedTypeName","pathNode":{"id":1959,"name":"Rounding","nameLocations":["12278:8:8"],"nodeType":"IdentifierPath","referencedDeclaration":1137,"src":"12278:8:8"},"referencedDeclaration":1137,"src":"12278:8:8","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$1137","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"12262:34:8"},"returnParameters":{"id":1965,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1964,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1994,"src":"12320:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1963,"name":"uint256","nodeType":"ElementaryTypeName","src":"12320:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12319:9:8"},"scope":1995,"src":"12247:255:8","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":1996,"src":"202:12302:8","usedErrors":[]}],"src":"103:12402:8"},"id":8},"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol":{"ast":{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol","exportedSymbols":{"IConstantFlowAgreementV1":[5555],"IInstantDistributionAgreementV1":[5961],"ISuperToken":[7015],"ISuperfluid":[7667],"SuperTokenV1Library":[5145]},"id":5146,"license":"AGPLv3","nodeType":"SourceUnit","nodes":[{"id":1997,"literals":["solidity",">=","0.8",".0"],"nodeType":"PragmaDirective","src":"35:25:9"},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol","file":"../interfaces/superfluid/ISuperfluid.sol","id":2000,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5146,"sourceUnit":7668,"src":"62:92:9","symbolAliases":[{"foreign":{"id":1998,"name":"ISuperfluid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7667,"src":"75:11:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":1999,"name":"ISuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7015,"src":"92:11:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol","file":"../interfaces/agreements/IConstantFlowAgreementV1.sol","id":2002,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5146,"sourceUnit":5556,"src":"156:101:9","symbolAliases":[{"foreign":{"id":2001,"name":"IConstantFlowAgreementV1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5555,"src":"169:24:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IInstantDistributionAgreementV1.sol","file":"../interfaces/agreements/IInstantDistributionAgreementV1.sol","id":2004,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5146,"sourceUnit":5962,"src":"259:115:9","symbolAliases":[{"foreign":{"id":2003,"name":"IInstantDistributionAgreementV1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5961,"src":"272:31:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"SuperTokenV1Library","contractDependencies":[],"contractKind":"library","documentation":{"id":2005,"nodeType":"StructuredDocumentation","src":"376:195:9","text":" @title Library for Token Centric Interface\n @author Superfluid\n @dev Set `using for ISuperToken` in including file, and call any of these functions on an instance\n of ISuperToken"},"fullyImplemented":true,"id":5145,"linearizedBaseContracts":[5145],"name":"SuperTokenV1Library","nameLocation":"580:19:9","nodeType":"ContractDefinition","nodes":[{"body":{"id":2053,"nodeType":"Block","src":"972:344:9","statements":[{"assignments":[2020,2023],"declarations":[{"constant":false,"id":2020,"mutability":"mutable","name":"host","nameLocation":"995:4:9","nodeType":"VariableDeclaration","scope":2053,"src":"983:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"},"typeName":{"id":2019,"nodeType":"UserDefinedTypeName","pathNode":{"id":2018,"name":"ISuperfluid","nameLocations":["983:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7667,"src":"983:11:9"},"referencedDeclaration":7667,"src":"983:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":2023,"mutability":"mutable","name":"cfa","nameLocation":"1026:3:9","nodeType":"VariableDeclaration","scope":2053,"src":"1001:28:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":2022,"nodeType":"UserDefinedTypeName","pathNode":{"id":2021,"name":"IConstantFlowAgreementV1","nameLocations":["1001:24:9"],"nodeType":"IdentifierPath","referencedDeclaration":5555,"src":"1001:24:9"},"referencedDeclaration":5555,"src":"1001:24:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"id":2027,"initialValue":{"arguments":[{"id":2025,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2009,"src":"1056:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}],"id":2024,"name":"_getAndCacheHostAndCFA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"1033:22:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$7015_$returns$_t_contract$_ISuperfluid_$7667_$_t_contract$_IConstantFlowAgreementV1_$5555_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"id":2026,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1033:29:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7667_$_t_contract$_IConstantFlowAgreementV1_$5555_$","typeString":"tuple(contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"982:80:9"},{"expression":{"arguments":[{"id":2031,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2023,"src":"1104:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},{"arguments":[{"expression":{"id":2034,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2023,"src":"1153:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"id":2035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1157:10:9","memberName":"createFlow","nodeType":"MemberAccess","referencedDeclaration":5372,"src":"1153:14:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,int96,bytes memory) external returns (bytes memory)"}},{"components":[{"id":2036,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2009,"src":"1186:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},{"id":2037,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2011,"src":"1193:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2038,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2013,"src":"1203:8:9","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},{"arguments":[{"hexValue":"30","id":2041,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1223:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2040,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1213:9:9","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2039,"name":"bytes","nodeType":"ElementaryTypeName","src":"1217:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2042,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1213:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":2043,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1185:41:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,int96,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,int96,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,int96,bytes memory)"}],"expression":{"id":2032,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1121:3:9","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1125:10:9","memberName":"encodeCall","nodeType":"MemberAccess","src":"1121:14:9","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2044,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1121:119:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"hexValue":"30","id":2047,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1264:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2046,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1254:9:9","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2045,"name":"bytes","nodeType":"ElementaryTypeName","src":"1258:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1254:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2028,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2020,"src":"1072:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"id":2030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1077:13:9","memberName":"callAgreement","nodeType":"MemberAccess","referencedDeclaration":7565,"src":"1072:18:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6463_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory) external returns (bytes memory)"}},"id":2049,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1072:216:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2050,"nodeType":"ExpressionStatement","src":"1072:216:9"},{"expression":{"hexValue":"74727565","id":2051,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1305:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":2017,"id":2052,"nodeType":"Return","src":"1298:11:9"}]},"documentation":{"id":2006,"nodeType":"StructuredDocumentation","src":"671:187:9","text":" @dev Create flow without userData\n @param token The token used in flow\n @param receiver The receiver of the flow\n @param flowRate The desired flowRate"},"id":2054,"implemented":true,"kind":"function","modifiers":[],"name":"createFlow","nameLocation":"872:10:9","nodeType":"FunctionDefinition","parameters":{"id":2014,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2009,"mutability":"mutable","name":"token","nameLocation":"895:5:9","nodeType":"VariableDeclaration","scope":2054,"src":"883:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":2008,"nodeType":"UserDefinedTypeName","pathNode":{"id":2007,"name":"ISuperToken","nameLocations":["883:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"883:11:9"},"referencedDeclaration":7015,"src":"883:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":2011,"mutability":"mutable","name":"receiver","nameLocation":"910:8:9","nodeType":"VariableDeclaration","scope":2054,"src":"902:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2010,"name":"address","nodeType":"ElementaryTypeName","src":"902:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2013,"mutability":"mutable","name":"flowRate","nameLocation":"926:8:9","nodeType":"VariableDeclaration","scope":2054,"src":"920:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":2012,"name":"int96","nodeType":"ElementaryTypeName","src":"920:5:9","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"882:53:9"},"returnParameters":{"id":2017,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2016,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2054,"src":"962:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2015,"name":"bool","nodeType":"ElementaryTypeName","src":"962:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"961:6:9"},"scope":5145,"src":"863:453:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2101,"nodeType":"Block","src":"1702:340:9","statements":[{"assignments":[2071,2074],"declarations":[{"constant":false,"id":2071,"mutability":"mutable","name":"host","nameLocation":"1725:4:9","nodeType":"VariableDeclaration","scope":2101,"src":"1713:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"},"typeName":{"id":2070,"nodeType":"UserDefinedTypeName","pathNode":{"id":2069,"name":"ISuperfluid","nameLocations":["1713:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7667,"src":"1713:11:9"},"referencedDeclaration":7667,"src":"1713:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":2074,"mutability":"mutable","name":"cfa","nameLocation":"1756:3:9","nodeType":"VariableDeclaration","scope":2101,"src":"1731:28:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":2073,"nodeType":"UserDefinedTypeName","pathNode":{"id":2072,"name":"IConstantFlowAgreementV1","nameLocations":["1731:24:9"],"nodeType":"IdentifierPath","referencedDeclaration":5555,"src":"1731:24:9"},"referencedDeclaration":5555,"src":"1731:24:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"id":2078,"initialValue":{"arguments":[{"id":2076,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2058,"src":"1786:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}],"id":2075,"name":"_getAndCacheHostAndCFA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"1763:22:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$7015_$returns$_t_contract$_ISuperfluid_$7667_$_t_contract$_IConstantFlowAgreementV1_$5555_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"id":2077,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1763:29:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7667_$_t_contract$_IConstantFlowAgreementV1_$5555_$","typeString":"tuple(contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"1712:80:9"},{"expression":{"arguments":[{"id":2082,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2074,"src":"1834:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},{"arguments":[{"expression":{"id":2085,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2074,"src":"1883:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"id":2086,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1887:10:9","memberName":"createFlow","nodeType":"MemberAccess","referencedDeclaration":5372,"src":"1883:14:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,int96,bytes memory) external returns (bytes memory)"}},{"components":[{"id":2087,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2058,"src":"1916:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},{"id":2088,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2060,"src":"1923:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2089,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2062,"src":"1933:8:9","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},{"arguments":[{"hexValue":"30","id":2092,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1953:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2091,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1943:9:9","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2090,"name":"bytes","nodeType":"ElementaryTypeName","src":"1947:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1943:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":2094,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1915:41:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,int96,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,int96,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,int96,bytes memory)"}],"expression":{"id":2083,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1851:3:9","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2084,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1855:10:9","memberName":"encodeCall","nodeType":"MemberAccess","src":"1851:14:9","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1851:119:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":2096,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2064,"src":"1984:8:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2079,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2071,"src":"1802:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"id":2081,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1807:13:9","memberName":"callAgreement","nodeType":"MemberAccess","referencedDeclaration":7565,"src":"1802:18:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6463_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory) external returns (bytes memory)"}},"id":2097,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1802:212:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2098,"nodeType":"ExpressionStatement","src":"1802:212:9"},{"expression":{"hexValue":"74727565","id":2099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2031:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":2068,"id":2100,"nodeType":"Return","src":"2024:11:9"}]},"documentation":{"id":2055,"nodeType":"StructuredDocumentation","src":"1322:243:9","text":" @dev Create flow with userData\n @param token The token used in flow\n @param receiver The receiver of the flow\n @param flowRate The desired flowRate\n @param userData The userdata passed along with call"},"id":2102,"implemented":true,"kind":"function","modifiers":[],"name":"createFlow","nameLocation":"1579:10:9","nodeType":"FunctionDefinition","parameters":{"id":2065,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2058,"mutability":"mutable","name":"token","nameLocation":"1602:5:9","nodeType":"VariableDeclaration","scope":2102,"src":"1590:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":2057,"nodeType":"UserDefinedTypeName","pathNode":{"id":2056,"name":"ISuperToken","nameLocations":["1590:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"1590:11:9"},"referencedDeclaration":7015,"src":"1590:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":2060,"mutability":"mutable","name":"receiver","nameLocation":"1617:8:9","nodeType":"VariableDeclaration","scope":2102,"src":"1609:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2059,"name":"address","nodeType":"ElementaryTypeName","src":"1609:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2062,"mutability":"mutable","name":"flowRate","nameLocation":"1633:8:9","nodeType":"VariableDeclaration","scope":2102,"src":"1627:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":2061,"name":"int96","nodeType":"ElementaryTypeName","src":"1627:5:9","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"},{"constant":false,"id":2064,"mutability":"mutable","name":"userData","nameLocation":"1656:8:9","nodeType":"VariableDeclaration","scope":2102,"src":"1643:21:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2063,"name":"bytes","nodeType":"ElementaryTypeName","src":"1643:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1589:76:9"},"returnParameters":{"id":2068,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2067,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2102,"src":"1692:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2066,"name":"bool","nodeType":"ElementaryTypeName","src":"1692:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1691:6:9"},"scope":5145,"src":"1570:472:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2150,"nodeType":"Block","src":"2350:344:9","statements":[{"assignments":[2117,2120],"declarations":[{"constant":false,"id":2117,"mutability":"mutable","name":"host","nameLocation":"2373:4:9","nodeType":"VariableDeclaration","scope":2150,"src":"2361:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"},"typeName":{"id":2116,"nodeType":"UserDefinedTypeName","pathNode":{"id":2115,"name":"ISuperfluid","nameLocations":["2361:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7667,"src":"2361:11:9"},"referencedDeclaration":7667,"src":"2361:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":2120,"mutability":"mutable","name":"cfa","nameLocation":"2404:3:9","nodeType":"VariableDeclaration","scope":2150,"src":"2379:28:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":2119,"nodeType":"UserDefinedTypeName","pathNode":{"id":2118,"name":"IConstantFlowAgreementV1","nameLocations":["2379:24:9"],"nodeType":"IdentifierPath","referencedDeclaration":5555,"src":"2379:24:9"},"referencedDeclaration":5555,"src":"2379:24:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"id":2124,"initialValue":{"arguments":[{"id":2122,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2106,"src":"2434:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}],"id":2121,"name":"_getAndCacheHostAndCFA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"2411:22:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$7015_$returns$_t_contract$_ISuperfluid_$7667_$_t_contract$_IConstantFlowAgreementV1_$5555_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"id":2123,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2411:29:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7667_$_t_contract$_IConstantFlowAgreementV1_$5555_$","typeString":"tuple(contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"2360:80:9"},{"expression":{"arguments":[{"id":2128,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2120,"src":"2482:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},{"arguments":[{"expression":{"id":2131,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2120,"src":"2531:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"id":2132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2535:10:9","memberName":"updateFlow","nodeType":"MemberAccess","referencedDeclaration":5404,"src":"2531:14:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,int96,bytes memory) external returns (bytes memory)"}},{"components":[{"id":2133,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2106,"src":"2564:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},{"id":2134,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2108,"src":"2571:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2135,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2110,"src":"2581:8:9","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},{"arguments":[{"hexValue":"30","id":2138,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2601:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2137,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2591:9:9","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2136,"name":"bytes","nodeType":"ElementaryTypeName","src":"2595:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2139,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2591:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":2140,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2563:41:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,int96,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,int96,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,int96,bytes memory)"}],"expression":{"id":2129,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2499:3:9","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2130,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2503:10:9","memberName":"encodeCall","nodeType":"MemberAccess","src":"2499:14:9","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2141,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2499:119:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"hexValue":"30","id":2144,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2642:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2143,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2632:9:9","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2142,"name":"bytes","nodeType":"ElementaryTypeName","src":"2636:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2145,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2632:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2125,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2117,"src":"2450:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"id":2127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2455:13:9","memberName":"callAgreement","nodeType":"MemberAccess","referencedDeclaration":7565,"src":"2450:18:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6463_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory) external returns (bytes memory)"}},"id":2146,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2450:216:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2147,"nodeType":"ExpressionStatement","src":"2450:216:9"},{"expression":{"hexValue":"74727565","id":2148,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2683:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":2114,"id":2149,"nodeType":"Return","src":"2676:11:9"}]},"documentation":{"id":2103,"nodeType":"StructuredDocumentation","src":"2049:187:9","text":" @dev Update flow without userData\n @param token The token used in flow\n @param receiver The receiver of the flow\n @param flowRate The desired flowRate"},"id":2151,"implemented":true,"kind":"function","modifiers":[],"name":"updateFlow","nameLocation":"2250:10:9","nodeType":"FunctionDefinition","parameters":{"id":2111,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2106,"mutability":"mutable","name":"token","nameLocation":"2273:5:9","nodeType":"VariableDeclaration","scope":2151,"src":"2261:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":2105,"nodeType":"UserDefinedTypeName","pathNode":{"id":2104,"name":"ISuperToken","nameLocations":["2261:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"2261:11:9"},"referencedDeclaration":7015,"src":"2261:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":2108,"mutability":"mutable","name":"receiver","nameLocation":"2288:8:9","nodeType":"VariableDeclaration","scope":2151,"src":"2280:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2107,"name":"address","nodeType":"ElementaryTypeName","src":"2280:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2110,"mutability":"mutable","name":"flowRate","nameLocation":"2304:8:9","nodeType":"VariableDeclaration","scope":2151,"src":"2298:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":2109,"name":"int96","nodeType":"ElementaryTypeName","src":"2298:5:9","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"2260:53:9"},"returnParameters":{"id":2114,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2113,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2151,"src":"2340:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2112,"name":"bool","nodeType":"ElementaryTypeName","src":"2340:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2339:6:9"},"scope":5145,"src":"2241:453:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2198,"nodeType":"Block","src":"3081:328:9","statements":[{"assignments":[2168,2171],"declarations":[{"constant":false,"id":2168,"mutability":"mutable","name":"host","nameLocation":"3104:4:9","nodeType":"VariableDeclaration","scope":2198,"src":"3092:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"},"typeName":{"id":2167,"nodeType":"UserDefinedTypeName","pathNode":{"id":2166,"name":"ISuperfluid","nameLocations":["3092:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7667,"src":"3092:11:9"},"referencedDeclaration":7667,"src":"3092:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":2171,"mutability":"mutable","name":"cfa","nameLocation":"3135:3:9","nodeType":"VariableDeclaration","scope":2198,"src":"3110:28:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":2170,"nodeType":"UserDefinedTypeName","pathNode":{"id":2169,"name":"IConstantFlowAgreementV1","nameLocations":["3110:24:9"],"nodeType":"IdentifierPath","referencedDeclaration":5555,"src":"3110:24:9"},"referencedDeclaration":5555,"src":"3110:24:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"id":2175,"initialValue":{"arguments":[{"id":2173,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2155,"src":"3165:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}],"id":2172,"name":"_getAndCacheHostAndCFA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"3142:22:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$7015_$returns$_t_contract$_ISuperfluid_$7667_$_t_contract$_IConstantFlowAgreementV1_$5555_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"id":2174,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3142:29:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7667_$_t_contract$_IConstantFlowAgreementV1_$5555_$","typeString":"tuple(contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"3091:80:9"},{"expression":{"arguments":[{"id":2179,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2171,"src":"3213:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},{"arguments":[{"expression":{"id":2182,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2171,"src":"3262:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"id":2183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3266:10:9","memberName":"updateFlow","nodeType":"MemberAccess","referencedDeclaration":5404,"src":"3262:14:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,int96,bytes memory) external returns (bytes memory)"}},{"components":[{"id":2184,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2155,"src":"3295:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},{"id":2185,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2157,"src":"3302:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2186,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2159,"src":"3312:8:9","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},{"arguments":[{"hexValue":"30","id":2189,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3332:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2188,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"3322:9:9","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2187,"name":"bytes","nodeType":"ElementaryTypeName","src":"3326:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2190,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3322:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":2191,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3294:41:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,int96,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,int96,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,int96,bytes memory)"}],"expression":{"id":2180,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3230:3:9","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2181,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3234:10:9","memberName":"encodeCall","nodeType":"MemberAccess","src":"3230:14:9","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2192,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3230:119:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":2193,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2161,"src":"3363:8:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2176,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2168,"src":"3181:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"id":2178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3186:13:9","memberName":"callAgreement","nodeType":"MemberAccess","referencedDeclaration":7565,"src":"3181:18:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6463_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory) external returns (bytes memory)"}},"id":2194,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3181:200:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2195,"nodeType":"ExpressionStatement","src":"3181:200:9"},{"expression":{"hexValue":"74727565","id":2196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3398:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":2165,"id":2197,"nodeType":"Return","src":"3391:11:9"}]},"documentation":{"id":2152,"nodeType":"StructuredDocumentation","src":"2701:243:9","text":" @dev Update flow with userData\n @param token The token used in flow\n @param receiver The receiver of the flow\n @param flowRate The desired flowRate\n @param userData The userdata passed along with call"},"id":2199,"implemented":true,"kind":"function","modifiers":[],"name":"updateFlow","nameLocation":"2958:10:9","nodeType":"FunctionDefinition","parameters":{"id":2162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2155,"mutability":"mutable","name":"token","nameLocation":"2981:5:9","nodeType":"VariableDeclaration","scope":2199,"src":"2969:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":2154,"nodeType":"UserDefinedTypeName","pathNode":{"id":2153,"name":"ISuperToken","nameLocations":["2969:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"2969:11:9"},"referencedDeclaration":7015,"src":"2969:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":2157,"mutability":"mutable","name":"receiver","nameLocation":"2996:8:9","nodeType":"VariableDeclaration","scope":2199,"src":"2988:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2156,"name":"address","nodeType":"ElementaryTypeName","src":"2988:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2159,"mutability":"mutable","name":"flowRate","nameLocation":"3012:8:9","nodeType":"VariableDeclaration","scope":2199,"src":"3006:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":2158,"name":"int96","nodeType":"ElementaryTypeName","src":"3006:5:9","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"},{"constant":false,"id":2161,"mutability":"mutable","name":"userData","nameLocation":"3035:8:9","nodeType":"VariableDeclaration","scope":2199,"src":"3022:21:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2160,"name":"bytes","nodeType":"ElementaryTypeName","src":"3022:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2968:76:9"},"returnParameters":{"id":2165,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2164,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2199,"src":"3071:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2163,"name":"bool","nodeType":"ElementaryTypeName","src":"3071:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3070:6:9"},"scope":5145,"src":"2949:460:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2247,"nodeType":"Block","src":"3716:342:9","statements":[{"assignments":[2214,2217],"declarations":[{"constant":false,"id":2214,"mutability":"mutable","name":"host","nameLocation":"3739:4:9","nodeType":"VariableDeclaration","scope":2247,"src":"3727:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"},"typeName":{"id":2213,"nodeType":"UserDefinedTypeName","pathNode":{"id":2212,"name":"ISuperfluid","nameLocations":["3727:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7667,"src":"3727:11:9"},"referencedDeclaration":7667,"src":"3727:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":2217,"mutability":"mutable","name":"cfa","nameLocation":"3770:3:9","nodeType":"VariableDeclaration","scope":2247,"src":"3745:28:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":2216,"nodeType":"UserDefinedTypeName","pathNode":{"id":2215,"name":"IConstantFlowAgreementV1","nameLocations":["3745:24:9"],"nodeType":"IdentifierPath","referencedDeclaration":5555,"src":"3745:24:9"},"referencedDeclaration":5555,"src":"3745:24:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"id":2221,"initialValue":{"arguments":[{"id":2219,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2203,"src":"3800:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}],"id":2218,"name":"_getAndCacheHostAndCFA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"3777:22:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$7015_$returns$_t_contract$_ISuperfluid_$7667_$_t_contract$_IConstantFlowAgreementV1_$5555_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"id":2220,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3777:29:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7667_$_t_contract$_IConstantFlowAgreementV1_$5555_$","typeString":"tuple(contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"3726:80:9"},{"expression":{"arguments":[{"id":2225,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2217,"src":"3848:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},{"arguments":[{"expression":{"id":2228,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2217,"src":"3897:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"id":2229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3901:10:9","memberName":"deleteFlow","nodeType":"MemberAccess","referencedDeclaration":5500,"src":"3897:14:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,address,bytes memory) external returns (bytes memory)"}},{"components":[{"id":2230,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2203,"src":"3930:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},{"id":2231,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2205,"src":"3937:6:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2232,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2207,"src":"3945:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":2235,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3965:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2234,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"3955:9:9","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2233,"name":"bytes","nodeType":"ElementaryTypeName","src":"3959:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2236,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3955:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":2237,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3929:39:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,address,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,address,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,address,bytes memory)"}],"expression":{"id":2226,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3865:3:9","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2227,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3869:10:9","memberName":"encodeCall","nodeType":"MemberAccess","src":"3865:14:9","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2238,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3865:117:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"hexValue":"30","id":2241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4006:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2240,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"3996:9:9","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2239,"name":"bytes","nodeType":"ElementaryTypeName","src":"4000:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3996:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2222,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2214,"src":"3816:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"id":2224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3821:13:9","memberName":"callAgreement","nodeType":"MemberAccess","referencedDeclaration":7565,"src":"3816:18:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6463_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory) external returns (bytes memory)"}},"id":2243,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3816:214:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2244,"nodeType":"ExpressionStatement","src":"3816:214:9"},{"expression":{"hexValue":"74727565","id":2245,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4047:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":2211,"id":2246,"nodeType":"Return","src":"4040:11:9"}]},"documentation":{"id":2200,"nodeType":"StructuredDocumentation","src":"3415:187:9","text":" @dev Delete flow without userData\n @param token The token used in flow\n @param sender The sender of the flow\n @param receiver The receiver of the flow"},"id":2248,"implemented":true,"kind":"function","modifiers":[],"name":"deleteFlow","nameLocation":"3616:10:9","nodeType":"FunctionDefinition","parameters":{"id":2208,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2203,"mutability":"mutable","name":"token","nameLocation":"3639:5:9","nodeType":"VariableDeclaration","scope":2248,"src":"3627:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":2202,"nodeType":"UserDefinedTypeName","pathNode":{"id":2201,"name":"ISuperToken","nameLocations":["3627:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"3627:11:9"},"referencedDeclaration":7015,"src":"3627:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":2205,"mutability":"mutable","name":"sender","nameLocation":"3654:6:9","nodeType":"VariableDeclaration","scope":2248,"src":"3646:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2204,"name":"address","nodeType":"ElementaryTypeName","src":"3646:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2207,"mutability":"mutable","name":"receiver","nameLocation":"3670:8:9","nodeType":"VariableDeclaration","scope":2248,"src":"3662:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2206,"name":"address","nodeType":"ElementaryTypeName","src":"3662:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3626:53:9"},"returnParameters":{"id":2211,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2210,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2248,"src":"3706:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2209,"name":"bool","nodeType":"ElementaryTypeName","src":"3706:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3705:6:9"},"scope":5145,"src":"3607:451:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2295,"nodeType":"Block","src":"4444:326:9","statements":[{"assignments":[2265,2268],"declarations":[{"constant":false,"id":2265,"mutability":"mutable","name":"host","nameLocation":"4467:4:9","nodeType":"VariableDeclaration","scope":2295,"src":"4455:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"},"typeName":{"id":2264,"nodeType":"UserDefinedTypeName","pathNode":{"id":2263,"name":"ISuperfluid","nameLocations":["4455:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7667,"src":"4455:11:9"},"referencedDeclaration":7667,"src":"4455:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":2268,"mutability":"mutable","name":"cfa","nameLocation":"4498:3:9","nodeType":"VariableDeclaration","scope":2295,"src":"4473:28:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":2267,"nodeType":"UserDefinedTypeName","pathNode":{"id":2266,"name":"IConstantFlowAgreementV1","nameLocations":["4473:24:9"],"nodeType":"IdentifierPath","referencedDeclaration":5555,"src":"4473:24:9"},"referencedDeclaration":5555,"src":"4473:24:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"id":2272,"initialValue":{"arguments":[{"id":2270,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2252,"src":"4528:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}],"id":2269,"name":"_getAndCacheHostAndCFA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"4505:22:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$7015_$returns$_t_contract$_ISuperfluid_$7667_$_t_contract$_IConstantFlowAgreementV1_$5555_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"id":2271,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4505:29:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7667_$_t_contract$_IConstantFlowAgreementV1_$5555_$","typeString":"tuple(contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"4454:80:9"},{"expression":{"arguments":[{"id":2276,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2268,"src":"4576:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},{"arguments":[{"expression":{"id":2279,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2268,"src":"4625:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"id":2280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4629:10:9","memberName":"deleteFlow","nodeType":"MemberAccess","referencedDeclaration":5500,"src":"4625:14:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,address,bytes memory) external returns (bytes memory)"}},{"components":[{"id":2281,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2252,"src":"4658:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},{"id":2282,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2254,"src":"4665:6:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2283,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2256,"src":"4673:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":2286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4693:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2285,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"4683:9:9","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2284,"name":"bytes","nodeType":"ElementaryTypeName","src":"4687:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2287,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4683:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":2288,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4657:39:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,address,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,address,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,address,bytes memory)"}],"expression":{"id":2277,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4593:3:9","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2278,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4597:10:9","memberName":"encodeCall","nodeType":"MemberAccess","src":"4593:14:9","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2289,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4593:117:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":2290,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2258,"src":"4724:8:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2273,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2265,"src":"4544:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"id":2275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4549:13:9","memberName":"callAgreement","nodeType":"MemberAccess","referencedDeclaration":7565,"src":"4544:18:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6463_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory) external returns (bytes memory)"}},"id":2291,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4544:198:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2292,"nodeType":"ExpressionStatement","src":"4544:198:9"},{"expression":{"hexValue":"74727565","id":2293,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4759:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":2262,"id":2294,"nodeType":"Return","src":"4752:11:9"}]},"documentation":{"id":2249,"nodeType":"StructuredDocumentation","src":"4064:243:9","text":" @dev Delete flow with userData\n @param token The token used in flow\n @param sender The sender of the flow\n @param receiver The receiver of the flow\n @param userData The userdata passed along with call"},"id":2296,"implemented":true,"kind":"function","modifiers":[],"name":"deleteFlow","nameLocation":"4321:10:9","nodeType":"FunctionDefinition","parameters":{"id":2259,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2252,"mutability":"mutable","name":"token","nameLocation":"4344:5:9","nodeType":"VariableDeclaration","scope":2296,"src":"4332:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":2251,"nodeType":"UserDefinedTypeName","pathNode":{"id":2250,"name":"ISuperToken","nameLocations":["4332:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"4332:11:9"},"referencedDeclaration":7015,"src":"4332:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":2254,"mutability":"mutable","name":"sender","nameLocation":"4359:6:9","nodeType":"VariableDeclaration","scope":2296,"src":"4351:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2253,"name":"address","nodeType":"ElementaryTypeName","src":"4351:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2256,"mutability":"mutable","name":"receiver","nameLocation":"4375:8:9","nodeType":"VariableDeclaration","scope":2296,"src":"4367:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2255,"name":"address","nodeType":"ElementaryTypeName","src":"4367:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2258,"mutability":"mutable","name":"userData","nameLocation":"4398:8:9","nodeType":"VariableDeclaration","scope":2296,"src":"4385:21:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2257,"name":"bytes","nodeType":"ElementaryTypeName","src":"4385:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4331:76:9"},"returnParameters":{"id":2262,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2261,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2296,"src":"4434:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2260,"name":"bool","nodeType":"ElementaryTypeName","src":"4434:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4433:6:9"},"scope":5145,"src":"4312:458:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2375,"nodeType":"Block","src":"5440:524:9","statements":[{"assignments":[2317,2320],"declarations":[{"constant":false,"id":2317,"mutability":"mutable","name":"host","nameLocation":"5463:4:9","nodeType":"VariableDeclaration","scope":2375,"src":"5451:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"},"typeName":{"id":2316,"nodeType":"UserDefinedTypeName","pathNode":{"id":2315,"name":"ISuperfluid","nameLocations":["5451:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7667,"src":"5451:11:9"},"referencedDeclaration":7667,"src":"5451:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":2320,"mutability":"mutable","name":"cfa","nameLocation":"5494:3:9","nodeType":"VariableDeclaration","scope":2375,"src":"5469:28:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":2319,"nodeType":"UserDefinedTypeName","pathNode":{"id":2318,"name":"IConstantFlowAgreementV1","nameLocations":["5469:24:9"],"nodeType":"IdentifierPath","referencedDeclaration":5555,"src":"5469:24:9"},"referencedDeclaration":5555,"src":"5469:24:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"id":2324,"initialValue":{"arguments":[{"id":2322,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2300,"src":"5524:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}],"id":2321,"name":"_getAndCacheHostAndCFA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"5501:22:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$7015_$returns$_t_contract$_ISuperfluid_$7667_$_t_contract$_IConstantFlowAgreementV1_$5555_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"id":2323,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5501:29:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7667_$_t_contract$_IConstantFlowAgreementV1_$5555_$","typeString":"tuple(contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"5450:80:9"},{"assignments":[2326],"declarations":[{"constant":false,"id":2326,"mutability":"mutable","name":"permissionsBitmask","nameLocation":"5546:18:9","nodeType":"VariableDeclaration","scope":2375,"src":"5540:24:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2325,"name":"uint8","nodeType":"ElementaryTypeName","src":"5540:5:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":2348,"initialValue":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":2347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":2339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"condition":{"id":2327,"name":"allowCreate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2304,"src":"5568:11:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":2329,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5586:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":2330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"5568:19:9","trueExpression":{"hexValue":"31","id":2328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5582:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":2331,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5567:21:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":2338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"condition":{"id":2332,"name":"allowUpdate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2306,"src":"5604:11:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":2334,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5622:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":2335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"5604:19:9","trueExpression":{"hexValue":"31","id":2333,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5618:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":2336,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5603:21:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"31","id":2337,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5628:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5603:26:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"5567:62:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":2346,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"condition":{"id":2340,"name":"allowDelete","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2308,"src":"5645:11:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":2342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5663:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":2343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"5645:19:9","trueExpression":{"hexValue":"31","id":2341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5659:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":2344,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5644:21:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"32","id":2345,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5669:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"5644:26:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"5567:103:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"5540:130:9"},{"expression":{"arguments":[{"id":2352,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2320,"src":"5712:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},{"arguments":[{"expression":{"id":2355,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2320,"src":"5761:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"id":2356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5765:29:9","memberName":"updateFlowOperatorPermissions","nodeType":"MemberAccess","referencedDeclaration":5271,"src":"5761:33:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_uint8_$_t_int96_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,uint8,int96,bytes memory) external returns (bytes memory)"}},{"components":[{"id":2357,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2300,"src":"5813:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},{"id":2358,"name":"flowOperator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2302,"src":"5820:12:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2359,"name":"permissionsBitmask","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2326,"src":"5834:18:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":2360,"name":"flowRateAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2310,"src":"5854:17:9","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},{"arguments":[{"hexValue":"30","id":2363,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5883:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2362,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"5873:9:9","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2361,"name":"bytes","nodeType":"ElementaryTypeName","src":"5877:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2364,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5873:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":2365,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5812:74:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_uint8_$_t_int96_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,uint8,int96,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_uint8_$_t_int96_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,uint8,int96,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_uint8_$_t_int96_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,uint8,int96,bytes memory)"}],"expression":{"id":2353,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5729:3:9","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2354,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5733:10:9","memberName":"encodeCall","nodeType":"MemberAccess","src":"5729:14:9","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2366,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5729:171:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"hexValue":"30","id":2369,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5924:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2368,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"5914:9:9","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2367,"name":"bytes","nodeType":"ElementaryTypeName","src":"5918:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5914:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2349,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2317,"src":"5680:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"id":2351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5685:13:9","memberName":"callAgreement","nodeType":"MemberAccess","referencedDeclaration":7565,"src":"5680:18:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6463_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory) external returns (bytes memory)"}},"id":2371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5680:256:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2372,"nodeType":"ExpressionStatement","src":"5680:256:9"},{"expression":{"hexValue":"74727565","id":2373,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5953:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":2314,"id":2374,"nodeType":"Return","src":"5946:11:9"}]},"documentation":{"id":2297,"nodeType":"StructuredDocumentation","src":"4834:375:9","text":" @dev Update permissions for flow operator\n @param token The token used in flow\n @param flowOperator The address given flow permissions\n @param allowCreate creation permissions\n @param allowCreate update permissions\n @param allowCreate deletion permissions\n @param flowRateAllowance The allowance provided to flowOperator"},"id":2376,"implemented":true,"kind":"function","modifiers":[],"name":"setFlowPermissions","nameLocation":"5223:18:9","nodeType":"FunctionDefinition","parameters":{"id":2311,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2300,"mutability":"mutable","name":"token","nameLocation":"5263:5:9","nodeType":"VariableDeclaration","scope":2376,"src":"5251:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":2299,"nodeType":"UserDefinedTypeName","pathNode":{"id":2298,"name":"ISuperToken","nameLocations":["5251:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"5251:11:9"},"referencedDeclaration":7015,"src":"5251:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":2302,"mutability":"mutable","name":"flowOperator","nameLocation":"5286:12:9","nodeType":"VariableDeclaration","scope":2376,"src":"5278:20:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2301,"name":"address","nodeType":"ElementaryTypeName","src":"5278:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2304,"mutability":"mutable","name":"allowCreate","nameLocation":"5313:11:9","nodeType":"VariableDeclaration","scope":2376,"src":"5308:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2303,"name":"bool","nodeType":"ElementaryTypeName","src":"5308:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2306,"mutability":"mutable","name":"allowUpdate","nameLocation":"5339:11:9","nodeType":"VariableDeclaration","scope":2376,"src":"5334:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2305,"name":"bool","nodeType":"ElementaryTypeName","src":"5334:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2308,"mutability":"mutable","name":"allowDelete","nameLocation":"5365:11:9","nodeType":"VariableDeclaration","scope":2376,"src":"5360:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2307,"name":"bool","nodeType":"ElementaryTypeName","src":"5360:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2310,"mutability":"mutable","name":"flowRateAllowance","nameLocation":"5392:17:9","nodeType":"VariableDeclaration","scope":2376,"src":"5386:23:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":2309,"name":"int96","nodeType":"ElementaryTypeName","src":"5386:5:9","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"5241:174:9"},"returnParameters":{"id":2314,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2313,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2376,"src":"5434:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2312,"name":"bool","nodeType":"ElementaryTypeName","src":"5434:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5433:6:9"},"scope":5145,"src":"5214:750:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2421,"nodeType":"Block","src":"6290:352:9","statements":[{"assignments":[2389,2392],"declarations":[{"constant":false,"id":2389,"mutability":"mutable","name":"host","nameLocation":"6313:4:9","nodeType":"VariableDeclaration","scope":2421,"src":"6301:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"},"typeName":{"id":2388,"nodeType":"UserDefinedTypeName","pathNode":{"id":2387,"name":"ISuperfluid","nameLocations":["6301:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7667,"src":"6301:11:9"},"referencedDeclaration":7667,"src":"6301:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":2392,"mutability":"mutable","name":"cfa","nameLocation":"6344:3:9","nodeType":"VariableDeclaration","scope":2421,"src":"6319:28:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":2391,"nodeType":"UserDefinedTypeName","pathNode":{"id":2390,"name":"IConstantFlowAgreementV1","nameLocations":["6319:24:9"],"nodeType":"IdentifierPath","referencedDeclaration":5555,"src":"6319:24:9"},"referencedDeclaration":5555,"src":"6319:24:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"id":2396,"initialValue":{"arguments":[{"id":2394,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"6374:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}],"id":2393,"name":"_getAndCacheHostAndCFA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"6351:22:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$7015_$returns$_t_contract$_ISuperfluid_$7667_$_t_contract$_IConstantFlowAgreementV1_$5555_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"id":2395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6351:29:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7667_$_t_contract$_IConstantFlowAgreementV1_$5555_$","typeString":"tuple(contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"6300:80:9"},{"expression":{"arguments":[{"id":2400,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2392,"src":"6422:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},{"arguments":[{"expression":{"id":2403,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2392,"src":"6471:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"id":2404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6475:36:9","memberName":"authorizeFlowOperatorWithFullControl","nodeType":"MemberAccess","referencedDeclaration":5314,"src":"6471:40:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,bytes memory) external returns (bytes memory)"}},{"components":[{"id":2405,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2380,"src":"6530:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},{"id":2406,"name":"flowOperator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2382,"src":"6537:12:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":2409,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6561:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2408,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"6551:9:9","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2407,"name":"bytes","nodeType":"ElementaryTypeName","src":"6555:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2410,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6551:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":2411,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6529:35:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,bytes memory)"}],"expression":{"id":2401,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6439:3:9","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2402,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6443:10:9","memberName":"encodeCall","nodeType":"MemberAccess","src":"6439:14:9","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2412,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6439:139:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"hexValue":"30","id":2415,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6602:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2414,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"6592:9:9","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2413,"name":"bytes","nodeType":"ElementaryTypeName","src":"6596:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2416,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6592:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2397,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2389,"src":"6390:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"id":2399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6395:13:9","memberName":"callAgreement","nodeType":"MemberAccess","referencedDeclaration":7565,"src":"6390:18:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6463_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory) external returns (bytes memory)"}},"id":2417,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6390:224:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2418,"nodeType":"ExpressionStatement","src":"6390:224:9"},{"expression":{"hexValue":"74727565","id":2419,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6631:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":2386,"id":2420,"nodeType":"Return","src":"6624:11:9"}]},"documentation":{"id":2377,"nodeType":"StructuredDocumentation","src":"5970:197:9","text":" @dev Update permissions for flow operator - give operator max permissions\n @param token The token used in flow\n @param flowOperator The address given flow permissions"},"id":2422,"implemented":true,"kind":"function","modifiers":[],"name":"setMaxFlowPermissions","nameLocation":"6181:21:9","nodeType":"FunctionDefinition","parameters":{"id":2383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2380,"mutability":"mutable","name":"token","nameLocation":"6224:5:9","nodeType":"VariableDeclaration","scope":2422,"src":"6212:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":2379,"nodeType":"UserDefinedTypeName","pathNode":{"id":2378,"name":"ISuperToken","nameLocations":["6212:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"6212:11:9"},"referencedDeclaration":7015,"src":"6212:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":2382,"mutability":"mutable","name":"flowOperator","nameLocation":"6247:12:9","nodeType":"VariableDeclaration","scope":2422,"src":"6239:20:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2381,"name":"address","nodeType":"ElementaryTypeName","src":"6239:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6202:63:9"},"returnParameters":{"id":2386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2385,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2422,"src":"6284:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2384,"name":"bool","nodeType":"ElementaryTypeName","src":"6284:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6283:6:9"},"scope":5145,"src":"6172:470:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2467,"nodeType":"Block","src":"6960:349:9","statements":[{"assignments":[2435,2438],"declarations":[{"constant":false,"id":2435,"mutability":"mutable","name":"host","nameLocation":"6983:4:9","nodeType":"VariableDeclaration","scope":2467,"src":"6971:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"},"typeName":{"id":2434,"nodeType":"UserDefinedTypeName","pathNode":{"id":2433,"name":"ISuperfluid","nameLocations":["6971:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7667,"src":"6971:11:9"},"referencedDeclaration":7667,"src":"6971:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":2438,"mutability":"mutable","name":"cfa","nameLocation":"7014:3:9","nodeType":"VariableDeclaration","scope":2467,"src":"6989:28:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":2437,"nodeType":"UserDefinedTypeName","pathNode":{"id":2436,"name":"IConstantFlowAgreementV1","nameLocations":["6989:24:9"],"nodeType":"IdentifierPath","referencedDeclaration":5555,"src":"6989:24:9"},"referencedDeclaration":5555,"src":"6989:24:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"id":2442,"initialValue":{"arguments":[{"id":2440,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2426,"src":"7044:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}],"id":2439,"name":"_getAndCacheHostAndCFA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"7021:22:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$7015_$returns$_t_contract$_ISuperfluid_$7667_$_t_contract$_IConstantFlowAgreementV1_$5555_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"id":2441,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7021:29:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7667_$_t_contract$_IConstantFlowAgreementV1_$5555_$","typeString":"tuple(contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"6970:80:9"},{"expression":{"arguments":[{"id":2446,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2438,"src":"7092:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},{"arguments":[{"expression":{"id":2449,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2438,"src":"7141:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"id":2450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7145:33:9","memberName":"revokeFlowOperatorWithFullControl","nodeType":"MemberAccess","referencedDeclaration":5327,"src":"7141:37:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,bytes memory) external returns (bytes memory)"}},{"components":[{"id":2451,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2426,"src":"7197:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},{"id":2452,"name":"flowOperator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2428,"src":"7204:12:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":2455,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7228:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2454,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"7218:9:9","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2453,"name":"bytes","nodeType":"ElementaryTypeName","src":"7222:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2456,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7218:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":2457,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7196:35:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,bytes memory)"}],"expression":{"id":2447,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7109:3:9","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2448,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7113:10:9","memberName":"encodeCall","nodeType":"MemberAccess","src":"7109:14:9","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2458,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7109:136:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"hexValue":"30","id":2461,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7269:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2460,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"7259:9:9","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2459,"name":"bytes","nodeType":"ElementaryTypeName","src":"7263:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2462,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7259:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2443,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2435,"src":"7060:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"id":2445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7065:13:9","memberName":"callAgreement","nodeType":"MemberAccess","referencedDeclaration":7565,"src":"7060:18:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6463_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory) external returns (bytes memory)"}},"id":2463,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7060:221:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2464,"nodeType":"ExpressionStatement","src":"7060:221:9"},{"expression":{"hexValue":"74727565","id":2465,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7298:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":2432,"id":2466,"nodeType":"Return","src":"7291:11:9"}]},"documentation":{"id":2423,"nodeType":"StructuredDocumentation","src":"6648:189:9","text":" @dev Update permissions for flow operator - revoke all permission\n @param token The token used in flow\n @param flowOperator The address given flow permissions"},"id":2468,"implemented":true,"kind":"function","modifiers":[],"name":"revokeFlowPermissions","nameLocation":"6851:21:9","nodeType":"FunctionDefinition","parameters":{"id":2429,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2426,"mutability":"mutable","name":"token","nameLocation":"6894:5:9","nodeType":"VariableDeclaration","scope":2468,"src":"6882:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":2425,"nodeType":"UserDefinedTypeName","pathNode":{"id":2424,"name":"ISuperToken","nameLocations":["6882:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"6882:11:9"},"referencedDeclaration":7015,"src":"6882:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":2428,"mutability":"mutable","name":"flowOperator","nameLocation":"6917:12:9","nodeType":"VariableDeclaration","scope":2468,"src":"6909:20:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2427,"name":"address","nodeType":"ElementaryTypeName","src":"6909:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6872:63:9"},"returnParameters":{"id":2432,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2431,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2468,"src":"6954:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2430,"name":"bool","nodeType":"ElementaryTypeName","src":"6954:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6953:6:9"},"scope":5145,"src":"6842:467:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2547,"nodeType":"Block","src":"8140:654:9","statements":[{"assignments":[2491,2494],"declarations":[{"constant":false,"id":2491,"mutability":"mutable","name":"host","nameLocation":"8163:4:9","nodeType":"VariableDeclaration","scope":2547,"src":"8151:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"},"typeName":{"id":2490,"nodeType":"UserDefinedTypeName","pathNode":{"id":2489,"name":"ISuperfluid","nameLocations":["8151:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7667,"src":"8151:11:9"},"referencedDeclaration":7667,"src":"8151:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":2494,"mutability":"mutable","name":"cfa","nameLocation":"8194:3:9","nodeType":"VariableDeclaration","scope":2547,"src":"8169:28:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":2493,"nodeType":"UserDefinedTypeName","pathNode":{"id":2492,"name":"IConstantFlowAgreementV1","nameLocations":["8169:24:9"],"nodeType":"IdentifierPath","referencedDeclaration":5555,"src":"8169:24:9"},"referencedDeclaration":5555,"src":"8169:24:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"id":2498,"initialValue":{"arguments":[{"id":2496,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2472,"src":"8224:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}],"id":2495,"name":"_getAndCacheHostAndCFA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"8201:22:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$7015_$returns$_t_contract$_ISuperfluid_$7667_$_t_contract$_IConstantFlowAgreementV1_$5555_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"id":2497,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8201:29:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7667_$_t_contract$_IConstantFlowAgreementV1_$5555_$","typeString":"tuple(contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"8150:80:9"},{"assignments":[2500],"declarations":[{"constant":false,"id":2500,"mutability":"mutable","name":"permissionsBitmask","nameLocation":"8246:18:9","nodeType":"VariableDeclaration","scope":2547,"src":"8240:24:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2499,"name":"uint8","nodeType":"ElementaryTypeName","src":"8240:5:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":2522,"initialValue":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":2521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":2513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"condition":{"id":2501,"name":"allowCreate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2476,"src":"8268:11:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":2503,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8286:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":2504,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8268:19:9","trueExpression":{"hexValue":"31","id":2502,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8282:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":2505,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8267:21:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":2512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"condition":{"id":2506,"name":"allowUpdate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2478,"src":"8304:11:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":2508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8322:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":2509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8304:19:9","trueExpression":{"hexValue":"31","id":2507,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8318:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":2510,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8303:21:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"31","id":2511,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8328:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8303:26:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"8267:62:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":2520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"condition":{"id":2514,"name":"allowDelete","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2480,"src":"8345:11:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":2516,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8363:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":2517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8345:19:9","trueExpression":{"hexValue":"31","id":2515,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8359:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":2518,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8344:21:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"32","id":2519,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8369:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"8344:26:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"8267:103:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"8240:130:9"},{"expression":{"id":2545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":2523,"name":"newCtx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2487,"src":"8381:6:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},null],"id":2524,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"8380:10:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$__$","typeString":"tuple(bytes memory,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2527,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2494,"src":"8436:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},{"arguments":[{"expression":{"id":2530,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2494,"src":"8485:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"id":2531,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8489:29:9","memberName":"updateFlowOperatorPermissions","nodeType":"MemberAccess","referencedDeclaration":5271,"src":"8485:33:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_uint8_$_t_int96_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,uint8,int96,bytes memory) external returns (bytes memory)"}},{"components":[{"id":2532,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2472,"src":"8558:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},{"id":2533,"name":"flowOperator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2474,"src":"8585:12:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2534,"name":"permissionsBitmask","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2500,"src":"8619:18:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":2535,"name":"flowRateAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2482,"src":"8659:17:9","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},{"arguments":[{"hexValue":"30","id":2538,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8708:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2537,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"8698:9:9","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2536,"name":"bytes","nodeType":"ElementaryTypeName","src":"8702:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2539,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8698:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":2540,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8536:192:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_uint8_$_t_int96_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,uint8,int96,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_uint8_$_t_int96_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,uint8,int96,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_uint8_$_t_int96_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,uint8,int96,bytes memory)"}],"expression":{"id":2528,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"8453:3:9","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2529,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8457:10:9","memberName":"encodeCall","nodeType":"MemberAccess","src":"8453:14:9","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2541,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8453:289:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"3078","id":2542,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8756:4:9","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"},{"id":2543,"name":"ctx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2484,"src":"8774:3:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2525,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2491,"src":"8393:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"id":2526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8398:24:9","memberName":"callAgreementWithContext","nodeType":"MemberAccess","referencedDeclaration":7616,"src":"8393:29:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6463_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory,bytes memory) external returns (bytes memory,bytes memory)"}},"id":2544,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8393:394:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(bytes memory,bytes memory)"}},"src":"8380:407:9","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2546,"nodeType":"ExpressionStatement","src":"8380:407:9"}]},"documentation":{"id":2469,"nodeType":"StructuredDocumentation","src":"7315:546:9","text":" @dev Update permissions for flow operator in callback\n @notice allowing userData to be a parameter here triggered stack to deep error\n @param token The token used in flow\n @param flowOperator The address given flow permissions\n @param allowCreate creation permissions\n @param allowCreate update permissions\n @param allowCreate deletion permissions\n @param flowRateAllowance The allowance provided to flowOperator\n @param ctx Context bytes (see ISuperfluid.sol for Context struct)"},"id":2548,"implemented":true,"kind":"function","modifiers":[],"name":"setFlowPermissionsWithCtx","nameLocation":"7875:25:9","nodeType":"FunctionDefinition","parameters":{"id":2485,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2472,"mutability":"mutable","name":"token","nameLocation":"7922:5:9","nodeType":"VariableDeclaration","scope":2548,"src":"7910:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":2471,"nodeType":"UserDefinedTypeName","pathNode":{"id":2470,"name":"ISuperToken","nameLocations":["7910:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"7910:11:9"},"referencedDeclaration":7015,"src":"7910:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":2474,"mutability":"mutable","name":"flowOperator","nameLocation":"7945:12:9","nodeType":"VariableDeclaration","scope":2548,"src":"7937:20:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2473,"name":"address","nodeType":"ElementaryTypeName","src":"7937:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2476,"mutability":"mutable","name":"allowCreate","nameLocation":"7972:11:9","nodeType":"VariableDeclaration","scope":2548,"src":"7967:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2475,"name":"bool","nodeType":"ElementaryTypeName","src":"7967:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2478,"mutability":"mutable","name":"allowUpdate","nameLocation":"7998:11:9","nodeType":"VariableDeclaration","scope":2548,"src":"7993:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2477,"name":"bool","nodeType":"ElementaryTypeName","src":"7993:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2480,"mutability":"mutable","name":"allowDelete","nameLocation":"8024:11:9","nodeType":"VariableDeclaration","scope":2548,"src":"8019:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2479,"name":"bool","nodeType":"ElementaryTypeName","src":"8019:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2482,"mutability":"mutable","name":"flowRateAllowance","nameLocation":"8051:17:9","nodeType":"VariableDeclaration","scope":2548,"src":"8045:23:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":2481,"name":"int96","nodeType":"ElementaryTypeName","src":"8045:5:9","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"},{"constant":false,"id":2484,"mutability":"mutable","name":"ctx","nameLocation":"8091:3:9","nodeType":"VariableDeclaration","scope":2548,"src":"8078:16:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2483,"name":"bytes","nodeType":"ElementaryTypeName","src":"8078:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7900:200:9"},"returnParameters":{"id":2488,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2487,"mutability":"mutable","name":"newCtx","nameLocation":"8132:6:9","nodeType":"VariableDeclaration","scope":2548,"src":"8119:19:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2486,"name":"bytes","nodeType":"ElementaryTypeName","src":"8119:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8118:21:9"},"scope":5145,"src":"7866:928:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2593,"nodeType":"Block","src":"9241:442:9","statements":[{"assignments":[2563,2566],"declarations":[{"constant":false,"id":2563,"mutability":"mutable","name":"host","nameLocation":"9264:4:9","nodeType":"VariableDeclaration","scope":2593,"src":"9252:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"},"typeName":{"id":2562,"nodeType":"UserDefinedTypeName","pathNode":{"id":2561,"name":"ISuperfluid","nameLocations":["9252:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7667,"src":"9252:11:9"},"referencedDeclaration":7667,"src":"9252:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":2566,"mutability":"mutable","name":"cfa","nameLocation":"9295:3:9","nodeType":"VariableDeclaration","scope":2593,"src":"9270:28:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":2565,"nodeType":"UserDefinedTypeName","pathNode":{"id":2564,"name":"IConstantFlowAgreementV1","nameLocations":["9270:24:9"],"nodeType":"IdentifierPath","referencedDeclaration":5555,"src":"9270:24:9"},"referencedDeclaration":5555,"src":"9270:24:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"id":2570,"initialValue":{"arguments":[{"id":2568,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2552,"src":"9325:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}],"id":2567,"name":"_getAndCacheHostAndCFA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"9302:22:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$7015_$returns$_t_contract$_ISuperfluid_$7667_$_t_contract$_IConstantFlowAgreementV1_$5555_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"id":2569,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9302:29:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7667_$_t_contract$_IConstantFlowAgreementV1_$5555_$","typeString":"tuple(contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"9251:80:9"},{"expression":{"id":2591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":2571,"name":"newCtx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"9342:6:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},null],"id":2572,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"9341:10:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$__$","typeString":"tuple(bytes memory,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2575,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2566,"src":"9397:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},{"arguments":[{"expression":{"id":2578,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2566,"src":"9446:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"id":2579,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9450:36:9","memberName":"authorizeFlowOperatorWithFullControl","nodeType":"MemberAccess","referencedDeclaration":5314,"src":"9446:40:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,bytes memory) external returns (bytes memory)"}},{"components":[{"id":2580,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2552,"src":"9526:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},{"id":2581,"name":"flowOperator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2554,"src":"9553:12:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":2584,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9597:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2583,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"9587:9:9","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2582,"name":"bytes","nodeType":"ElementaryTypeName","src":"9591:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2585,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9587:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":2586,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9504:113:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,bytes memory)"}],"expression":{"id":2576,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"9414:3:9","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2577,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9418:10:9","memberName":"encodeCall","nodeType":"MemberAccess","src":"9414:14:9","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2587,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9414:217:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"3078","id":2588,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9645:4:9","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"},{"id":2589,"name":"ctx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2556,"src":"9663:3:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2573,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"9354:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"id":2574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9359:24:9","memberName":"callAgreementWithContext","nodeType":"MemberAccess","referencedDeclaration":7616,"src":"9354:29:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6463_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory,bytes memory) external returns (bytes memory,bytes memory)"}},"id":2590,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9354:322:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(bytes memory,bytes memory)"}},"src":"9341:335:9","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2592,"nodeType":"ExpressionStatement","src":"9341:335:9"}]},"documentation":{"id":2549,"nodeType":"StructuredDocumentation","src":"8800:270:9","text":" @dev Update permissions for flow operator - give operator max permissions\n @param token The token used in flow\n @param flowOperator The address given flow permissions\n @param ctx Context bytes (see ISuperfluid.sol for Context struct)"},"id":2594,"implemented":true,"kind":"function","modifiers":[],"name":"setMaxFlowPermissionsWithCtx","nameLocation":"9084:28:9","nodeType":"FunctionDefinition","parameters":{"id":2557,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2552,"mutability":"mutable","name":"token","nameLocation":"9134:5:9","nodeType":"VariableDeclaration","scope":2594,"src":"9122:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":2551,"nodeType":"UserDefinedTypeName","pathNode":{"id":2550,"name":"ISuperToken","nameLocations":["9122:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"9122:11:9"},"referencedDeclaration":7015,"src":"9122:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":2554,"mutability":"mutable","name":"flowOperator","nameLocation":"9157:12:9","nodeType":"VariableDeclaration","scope":2594,"src":"9149:20:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2553,"name":"address","nodeType":"ElementaryTypeName","src":"9149:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2556,"mutability":"mutable","name":"ctx","nameLocation":"9192:3:9","nodeType":"VariableDeclaration","scope":2594,"src":"9179:16:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2555,"name":"bytes","nodeType":"ElementaryTypeName","src":"9179:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9112:89:9"},"returnParameters":{"id":2560,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2559,"mutability":"mutable","name":"newCtx","nameLocation":"9233:6:9","nodeType":"VariableDeclaration","scope":2594,"src":"9220:19:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2558,"name":"bytes","nodeType":"ElementaryTypeName","src":"9220:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9219:21:9"},"scope":5145,"src":"9075:608:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2639,"nodeType":"Block","src":"10121:361:9","statements":[{"assignments":[2609,2612],"declarations":[{"constant":false,"id":2609,"mutability":"mutable","name":"host","nameLocation":"10144:4:9","nodeType":"VariableDeclaration","scope":2639,"src":"10132:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"},"typeName":{"id":2608,"nodeType":"UserDefinedTypeName","pathNode":{"id":2607,"name":"ISuperfluid","nameLocations":["10132:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7667,"src":"10132:11:9"},"referencedDeclaration":7667,"src":"10132:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":2612,"mutability":"mutable","name":"cfa","nameLocation":"10175:3:9","nodeType":"VariableDeclaration","scope":2639,"src":"10150:28:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":2611,"nodeType":"UserDefinedTypeName","pathNode":{"id":2610,"name":"IConstantFlowAgreementV1","nameLocations":["10150:24:9"],"nodeType":"IdentifierPath","referencedDeclaration":5555,"src":"10150:24:9"},"referencedDeclaration":5555,"src":"10150:24:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"id":2616,"initialValue":{"arguments":[{"id":2614,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2598,"src":"10205:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}],"id":2613,"name":"_getAndCacheHostAndCFA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"10182:22:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$7015_$returns$_t_contract$_ISuperfluid_$7667_$_t_contract$_IConstantFlowAgreementV1_$5555_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"id":2615,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10182:29:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7667_$_t_contract$_IConstantFlowAgreementV1_$5555_$","typeString":"tuple(contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"10131:80:9"},{"expression":{"id":2637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":2617,"name":"newCtx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2605,"src":"10222:6:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},null],"id":2618,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"10221:10:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$__$","typeString":"tuple(bytes memory,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2621,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2612,"src":"10277:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},{"arguments":[{"expression":{"id":2624,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2612,"src":"10326:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"id":2625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10330:33:9","memberName":"revokeFlowOperatorWithFullControl","nodeType":"MemberAccess","referencedDeclaration":5327,"src":"10326:37:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,bytes memory) external returns (bytes memory)"}},{"components":[{"id":2626,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2598,"src":"10382:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},{"id":2627,"name":"flowOperator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2600,"src":"10389:12:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":2630,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10413:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2629,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"10403:9:9","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2628,"name":"bytes","nodeType":"ElementaryTypeName","src":"10407:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2631,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10403:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":2632,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10381:35:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,bytes memory)"}],"expression":{"id":2622,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"10294:3:9","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2623,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10298:10:9","memberName":"encodeCall","nodeType":"MemberAccess","src":"10294:14:9","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2633,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10294:136:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"3078","id":2634,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10444:4:9","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"},{"id":2635,"name":"ctx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2602,"src":"10462:3:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2619,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2609,"src":"10234:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"id":2620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10239:24:9","memberName":"callAgreementWithContext","nodeType":"MemberAccess","referencedDeclaration":7616,"src":"10234:29:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6463_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory,bytes memory) external returns (bytes memory,bytes memory)"}},"id":2636,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10234:241:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(bytes memory,bytes memory)"}},"src":"10221:254:9","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2638,"nodeType":"ExpressionStatement","src":"10221:254:9"}]},"documentation":{"id":2595,"nodeType":"StructuredDocumentation","src":"9689:261:9","text":" @dev Update permissions for flow operator - revoke all permission\n @param token The token used in flow\n @param flowOperator The address given flow permissions\n @param ctx Context bytes (see ISuperfluid.sol for Context struct)"},"id":2640,"implemented":true,"kind":"function","modifiers":[],"name":"revokeFlowPermissionsWithCtx","nameLocation":"9964:28:9","nodeType":"FunctionDefinition","parameters":{"id":2603,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2598,"mutability":"mutable","name":"token","nameLocation":"10014:5:9","nodeType":"VariableDeclaration","scope":2640,"src":"10002:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":2597,"nodeType":"UserDefinedTypeName","pathNode":{"id":2596,"name":"ISuperToken","nameLocations":["10002:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"10002:11:9"},"referencedDeclaration":7015,"src":"10002:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":2600,"mutability":"mutable","name":"flowOperator","nameLocation":"10037:12:9","nodeType":"VariableDeclaration","scope":2640,"src":"10029:20:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2599,"name":"address","nodeType":"ElementaryTypeName","src":"10029:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2602,"mutability":"mutable","name":"ctx","nameLocation":"10072:3:9","nodeType":"VariableDeclaration","scope":2640,"src":"10059:16:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2601,"name":"bytes","nodeType":"ElementaryTypeName","src":"10059:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9992:89:9"},"returnParameters":{"id":2606,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2605,"mutability":"mutable","name":"newCtx","nameLocation":"10113:6:9","nodeType":"VariableDeclaration","scope":2640,"src":"10100:19:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2604,"name":"bytes","nodeType":"ElementaryTypeName","src":"10100:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"10099:21:9"},"scope":5145,"src":"9955:527:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2691,"nodeType":"Block","src":"10891:350:9","statements":[{"assignments":[2657,2660],"declarations":[{"constant":false,"id":2657,"mutability":"mutable","name":"host","nameLocation":"10914:4:9","nodeType":"VariableDeclaration","scope":2691,"src":"10902:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"},"typeName":{"id":2656,"nodeType":"UserDefinedTypeName","pathNode":{"id":2655,"name":"ISuperfluid","nameLocations":["10902:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7667,"src":"10902:11:9"},"referencedDeclaration":7667,"src":"10902:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":2660,"mutability":"mutable","name":"cfa","nameLocation":"10945:3:9","nodeType":"VariableDeclaration","scope":2691,"src":"10920:28:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":2659,"nodeType":"UserDefinedTypeName","pathNode":{"id":2658,"name":"IConstantFlowAgreementV1","nameLocations":["10920:24:9"],"nodeType":"IdentifierPath","referencedDeclaration":5555,"src":"10920:24:9"},"referencedDeclaration":5555,"src":"10920:24:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"id":2664,"initialValue":{"arguments":[{"id":2662,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2644,"src":"10975:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}],"id":2661,"name":"_getAndCacheHostAndCFA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"10952:22:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$7015_$returns$_t_contract$_ISuperfluid_$7667_$_t_contract$_IConstantFlowAgreementV1_$5555_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"id":2663,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10952:29:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7667_$_t_contract$_IConstantFlowAgreementV1_$5555_$","typeString":"tuple(contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"10901:80:9"},{"expression":{"arguments":[{"id":2668,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2660,"src":"11023:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},{"arguments":[{"expression":{"id":2671,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2660,"src":"11072:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"id":2672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11076:20:9","memberName":"createFlowByOperator","nodeType":"MemberAccess","referencedDeclaration":5389,"src":"11072:24:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,address,int96,bytes memory) external returns (bytes memory)"}},{"components":[{"id":2673,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2644,"src":"11115:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},{"id":2674,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2646,"src":"11122:6:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2675,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2648,"src":"11130:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2676,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2650,"src":"11140:8:9","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},{"arguments":[{"hexValue":"30","id":2679,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11160:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2678,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"11150:9:9","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2677,"name":"bytes","nodeType":"ElementaryTypeName","src":"11154:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2680,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11150:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":2681,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11114:49:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,address,int96,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,address,int96,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,address,int96,bytes memory)"}],"expression":{"id":2669,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"11040:3:9","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2670,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11044:10:9","memberName":"encodeCall","nodeType":"MemberAccess","src":"11040:14:9","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2682,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11040:137:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"hexValue":"30","id":2685,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11201:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2684,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"11191:9:9","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2683,"name":"bytes","nodeType":"ElementaryTypeName","src":"11195:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2686,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11191:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2665,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2657,"src":"10991:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"id":2667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10996:13:9","memberName":"callAgreement","nodeType":"MemberAccess","referencedDeclaration":7565,"src":"10991:18:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6463_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory) external returns (bytes memory)"}},"id":2687,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10991:222:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2688,"nodeType":"ExpressionStatement","src":"10991:222:9"},{"expression":{"hexValue":"74727565","id":2689,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"11230:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":2654,"id":2690,"nodeType":"Return","src":"11223:11:9"}]},"documentation":{"id":2641,"nodeType":"StructuredDocumentation","src":"10489:242:9","text":" @dev Creates flow as an operator without userData\n @param token The token to flow\n @param sender The sender of the flow\n @param receiver The receiver of the flow\n @param flowRate The desired flowRate"},"id":2692,"implemented":true,"kind":"function","modifiers":[],"name":"createFlowFrom","nameLocation":"10745:14:9","nodeType":"FunctionDefinition","parameters":{"id":2651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2644,"mutability":"mutable","name":"token","nameLocation":"10781:5:9","nodeType":"VariableDeclaration","scope":2692,"src":"10769:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":2643,"nodeType":"UserDefinedTypeName","pathNode":{"id":2642,"name":"ISuperToken","nameLocations":["10769:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"10769:11:9"},"referencedDeclaration":7015,"src":"10769:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":2646,"mutability":"mutable","name":"sender","nameLocation":"10804:6:9","nodeType":"VariableDeclaration","scope":2692,"src":"10796:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2645,"name":"address","nodeType":"ElementaryTypeName","src":"10796:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2648,"mutability":"mutable","name":"receiver","nameLocation":"10828:8:9","nodeType":"VariableDeclaration","scope":2692,"src":"10820:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2647,"name":"address","nodeType":"ElementaryTypeName","src":"10820:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2650,"mutability":"mutable","name":"flowRate","nameLocation":"10852:8:9","nodeType":"VariableDeclaration","scope":2692,"src":"10846:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":2649,"name":"int96","nodeType":"ElementaryTypeName","src":"10846:5:9","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"10759:107:9"},"returnParameters":{"id":2654,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2653,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2692,"src":"10885:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2652,"name":"bool","nodeType":"ElementaryTypeName","src":"10885:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10884:6:9"},"scope":5145,"src":"10736:505:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2742,"nodeType":"Block","src":"11723:346:9","statements":[{"assignments":[2711,2714],"declarations":[{"constant":false,"id":2711,"mutability":"mutable","name":"host","nameLocation":"11746:4:9","nodeType":"VariableDeclaration","scope":2742,"src":"11734:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"},"typeName":{"id":2710,"nodeType":"UserDefinedTypeName","pathNode":{"id":2709,"name":"ISuperfluid","nameLocations":["11734:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7667,"src":"11734:11:9"},"referencedDeclaration":7667,"src":"11734:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":2714,"mutability":"mutable","name":"cfa","nameLocation":"11777:3:9","nodeType":"VariableDeclaration","scope":2742,"src":"11752:28:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":2713,"nodeType":"UserDefinedTypeName","pathNode":{"id":2712,"name":"IConstantFlowAgreementV1","nameLocations":["11752:24:9"],"nodeType":"IdentifierPath","referencedDeclaration":5555,"src":"11752:24:9"},"referencedDeclaration":5555,"src":"11752:24:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"id":2718,"initialValue":{"arguments":[{"id":2716,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2696,"src":"11807:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}],"id":2715,"name":"_getAndCacheHostAndCFA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"11784:22:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$7015_$returns$_t_contract$_ISuperfluid_$7667_$_t_contract$_IConstantFlowAgreementV1_$5555_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"id":2717,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11784:29:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7667_$_t_contract$_IConstantFlowAgreementV1_$5555_$","typeString":"tuple(contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"11733:80:9"},{"expression":{"arguments":[{"id":2722,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2714,"src":"11855:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},{"arguments":[{"expression":{"id":2725,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2714,"src":"11904:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"id":2726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11908:20:9","memberName":"createFlowByOperator","nodeType":"MemberAccess","referencedDeclaration":5389,"src":"11904:24:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,address,int96,bytes memory) external returns (bytes memory)"}},{"components":[{"id":2727,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2696,"src":"11947:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},{"id":2728,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2698,"src":"11954:6:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2729,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2700,"src":"11962:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2730,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2702,"src":"11972:8:9","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},{"arguments":[{"hexValue":"30","id":2733,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11992:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2732,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"11982:9:9","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2731,"name":"bytes","nodeType":"ElementaryTypeName","src":"11986:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2734,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11982:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":2735,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11946:49:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,address,int96,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,address,int96,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,address,int96,bytes memory)"}],"expression":{"id":2723,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"11872:3:9","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2724,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11876:10:9","memberName":"encodeCall","nodeType":"MemberAccess","src":"11872:14:9","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2736,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11872:137:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":2737,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2704,"src":"12023:8:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2719,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2711,"src":"11823:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"id":2721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11828:13:9","memberName":"callAgreement","nodeType":"MemberAccess","referencedDeclaration":7565,"src":"11823:18:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6463_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory) external returns (bytes memory)"}},"id":2738,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11823:218:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2739,"nodeType":"ExpressionStatement","src":"11823:218:9"},{"expression":{"hexValue":"74727565","id":2740,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12058:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":2708,"id":2741,"nodeType":"Return","src":"12051:11:9"}]},"documentation":{"id":2693,"nodeType":"StructuredDocumentation","src":"11247:285:9","text":" @dev Creates flow as an operator with userData\n @param token The token to flow\n @param sender The sender of the flow\n @param receiver The receiver of the flow\n @param flowRate The desired flowRate\n @param userData The user provided data"},"id":2743,"implemented":true,"kind":"function","modifiers":[],"name":"createFlowFrom","nameLocation":"11546:14:9","nodeType":"FunctionDefinition","parameters":{"id":2705,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2696,"mutability":"mutable","name":"token","nameLocation":"11582:5:9","nodeType":"VariableDeclaration","scope":2743,"src":"11570:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":2695,"nodeType":"UserDefinedTypeName","pathNode":{"id":2694,"name":"ISuperToken","nameLocations":["11570:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"11570:11:9"},"referencedDeclaration":7015,"src":"11570:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":2698,"mutability":"mutable","name":"sender","nameLocation":"11605:6:9","nodeType":"VariableDeclaration","scope":2743,"src":"11597:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2697,"name":"address","nodeType":"ElementaryTypeName","src":"11597:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2700,"mutability":"mutable","name":"receiver","nameLocation":"11629:8:9","nodeType":"VariableDeclaration","scope":2743,"src":"11621:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2699,"name":"address","nodeType":"ElementaryTypeName","src":"11621:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2702,"mutability":"mutable","name":"flowRate","nameLocation":"11653:8:9","nodeType":"VariableDeclaration","scope":2743,"src":"11647:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":2701,"name":"int96","nodeType":"ElementaryTypeName","src":"11647:5:9","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"},{"constant":false,"id":2704,"mutability":"mutable","name":"userData","nameLocation":"11684:8:9","nodeType":"VariableDeclaration","scope":2743,"src":"11671:21:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2703,"name":"bytes","nodeType":"ElementaryTypeName","src":"11671:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"11560:138:9"},"returnParameters":{"id":2708,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2707,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2743,"src":"11717:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2706,"name":"bool","nodeType":"ElementaryTypeName","src":"11717:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"11716:6:9"},"scope":5145,"src":"11537:532:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2794,"nodeType":"Block","src":"12478:350:9","statements":[{"assignments":[2760,2763],"declarations":[{"constant":false,"id":2760,"mutability":"mutable","name":"host","nameLocation":"12501:4:9","nodeType":"VariableDeclaration","scope":2794,"src":"12489:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"},"typeName":{"id":2759,"nodeType":"UserDefinedTypeName","pathNode":{"id":2758,"name":"ISuperfluid","nameLocations":["12489:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7667,"src":"12489:11:9"},"referencedDeclaration":7667,"src":"12489:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":2763,"mutability":"mutable","name":"cfa","nameLocation":"12532:3:9","nodeType":"VariableDeclaration","scope":2794,"src":"12507:28:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":2762,"nodeType":"UserDefinedTypeName","pathNode":{"id":2761,"name":"IConstantFlowAgreementV1","nameLocations":["12507:24:9"],"nodeType":"IdentifierPath","referencedDeclaration":5555,"src":"12507:24:9"},"referencedDeclaration":5555,"src":"12507:24:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"id":2767,"initialValue":{"arguments":[{"id":2765,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2747,"src":"12562:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}],"id":2764,"name":"_getAndCacheHostAndCFA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"12539:22:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$7015_$returns$_t_contract$_ISuperfluid_$7667_$_t_contract$_IConstantFlowAgreementV1_$5555_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"id":2766,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12539:29:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7667_$_t_contract$_IConstantFlowAgreementV1_$5555_$","typeString":"tuple(contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"12488:80:9"},{"expression":{"arguments":[{"id":2771,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2763,"src":"12610:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},{"arguments":[{"expression":{"id":2774,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2763,"src":"12659:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"id":2775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12663:20:9","memberName":"updateFlowByOperator","nodeType":"MemberAccess","referencedDeclaration":5421,"src":"12659:24:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,address,int96,bytes memory) external returns (bytes memory)"}},{"components":[{"id":2776,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2747,"src":"12702:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},{"id":2777,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2749,"src":"12709:6:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2778,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2751,"src":"12717:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2779,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2753,"src":"12727:8:9","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},{"arguments":[{"hexValue":"30","id":2782,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12747:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2781,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"12737:9:9","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2780,"name":"bytes","nodeType":"ElementaryTypeName","src":"12741:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2783,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12737:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":2784,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12701:49:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,address,int96,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,address,int96,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,address,int96,bytes memory)"}],"expression":{"id":2772,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"12627:3:9","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2773,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12631:10:9","memberName":"encodeCall","nodeType":"MemberAccess","src":"12627:14:9","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2785,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12627:137:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"hexValue":"30","id":2788,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12788:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2787,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"12778:9:9","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2786,"name":"bytes","nodeType":"ElementaryTypeName","src":"12782:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2789,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12778:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2768,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2760,"src":"12578:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"id":2770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12583:13:9","memberName":"callAgreement","nodeType":"MemberAccess","referencedDeclaration":7565,"src":"12578:18:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6463_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory) external returns (bytes memory)"}},"id":2790,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12578:222:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2791,"nodeType":"ExpressionStatement","src":"12578:222:9"},{"expression":{"hexValue":"74727565","id":2792,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12817:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":2757,"id":2793,"nodeType":"Return","src":"12810:11:9"}]},"documentation":{"id":2744,"nodeType":"StructuredDocumentation","src":"12076:242:9","text":" @dev Updates flow as an operator without userData\n @param token The token to flow\n @param sender The sender of the flow\n @param receiver The receiver of the flow\n @param flowRate The desired flowRate"},"id":2795,"implemented":true,"kind":"function","modifiers":[],"name":"updateFlowFrom","nameLocation":"12332:14:9","nodeType":"FunctionDefinition","parameters":{"id":2754,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2747,"mutability":"mutable","name":"token","nameLocation":"12368:5:9","nodeType":"VariableDeclaration","scope":2795,"src":"12356:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":2746,"nodeType":"UserDefinedTypeName","pathNode":{"id":2745,"name":"ISuperToken","nameLocations":["12356:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"12356:11:9"},"referencedDeclaration":7015,"src":"12356:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":2749,"mutability":"mutable","name":"sender","nameLocation":"12391:6:9","nodeType":"VariableDeclaration","scope":2795,"src":"12383:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2748,"name":"address","nodeType":"ElementaryTypeName","src":"12383:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2751,"mutability":"mutable","name":"receiver","nameLocation":"12415:8:9","nodeType":"VariableDeclaration","scope":2795,"src":"12407:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2750,"name":"address","nodeType":"ElementaryTypeName","src":"12407:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2753,"mutability":"mutable","name":"flowRate","nameLocation":"12439:8:9","nodeType":"VariableDeclaration","scope":2795,"src":"12433:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":2752,"name":"int96","nodeType":"ElementaryTypeName","src":"12433:5:9","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"12346:107:9"},"returnParameters":{"id":2757,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2756,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2795,"src":"12472:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2755,"name":"bool","nodeType":"ElementaryTypeName","src":"12472:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"12471:6:9"},"scope":5145,"src":"12323:505:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2845,"nodeType":"Block","src":"13310:346:9","statements":[{"assignments":[2814,2817],"declarations":[{"constant":false,"id":2814,"mutability":"mutable","name":"host","nameLocation":"13333:4:9","nodeType":"VariableDeclaration","scope":2845,"src":"13321:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"},"typeName":{"id":2813,"nodeType":"UserDefinedTypeName","pathNode":{"id":2812,"name":"ISuperfluid","nameLocations":["13321:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7667,"src":"13321:11:9"},"referencedDeclaration":7667,"src":"13321:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":2817,"mutability":"mutable","name":"cfa","nameLocation":"13364:3:9","nodeType":"VariableDeclaration","scope":2845,"src":"13339:28:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":2816,"nodeType":"UserDefinedTypeName","pathNode":{"id":2815,"name":"IConstantFlowAgreementV1","nameLocations":["13339:24:9"],"nodeType":"IdentifierPath","referencedDeclaration":5555,"src":"13339:24:9"},"referencedDeclaration":5555,"src":"13339:24:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"id":2821,"initialValue":{"arguments":[{"id":2819,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2799,"src":"13394:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}],"id":2818,"name":"_getAndCacheHostAndCFA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"13371:22:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$7015_$returns$_t_contract$_ISuperfluid_$7667_$_t_contract$_IConstantFlowAgreementV1_$5555_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"id":2820,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13371:29:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7667_$_t_contract$_IConstantFlowAgreementV1_$5555_$","typeString":"tuple(contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"13320:80:9"},{"expression":{"arguments":[{"id":2825,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2817,"src":"13442:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},{"arguments":[{"expression":{"id":2828,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2817,"src":"13491:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"id":2829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13495:20:9","memberName":"updateFlowByOperator","nodeType":"MemberAccess","referencedDeclaration":5421,"src":"13491:24:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,address,int96,bytes memory) external returns (bytes memory)"}},{"components":[{"id":2830,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2799,"src":"13534:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},{"id":2831,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2801,"src":"13541:6:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2832,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2803,"src":"13549:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2833,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2805,"src":"13559:8:9","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},{"arguments":[{"hexValue":"30","id":2836,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13579:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2835,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"13569:9:9","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2834,"name":"bytes","nodeType":"ElementaryTypeName","src":"13573:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2837,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13569:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":2838,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13533:49:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,address,int96,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,address,int96,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,address,int96,bytes memory)"}],"expression":{"id":2826,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"13459:3:9","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2827,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13463:10:9","memberName":"encodeCall","nodeType":"MemberAccess","src":"13459:14:9","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13459:137:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":2840,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2807,"src":"13610:8:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2822,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2814,"src":"13410:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"id":2824,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13415:13:9","memberName":"callAgreement","nodeType":"MemberAccess","referencedDeclaration":7565,"src":"13410:18:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6463_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory) external returns (bytes memory)"}},"id":2841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13410:218:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2842,"nodeType":"ExpressionStatement","src":"13410:218:9"},{"expression":{"hexValue":"74727565","id":2843,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"13645:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":2811,"id":2844,"nodeType":"Return","src":"13638:11:9"}]},"documentation":{"id":2796,"nodeType":"StructuredDocumentation","src":"12834:285:9","text":" @dev Updates flow as an operator with userData\n @param token The token to flow\n @param sender The sender of the flow\n @param receiver The receiver of the flow\n @param flowRate The desired flowRate\n @param userData The user provided data"},"id":2846,"implemented":true,"kind":"function","modifiers":[],"name":"updateFlowFrom","nameLocation":"13133:14:9","nodeType":"FunctionDefinition","parameters":{"id":2808,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2799,"mutability":"mutable","name":"token","nameLocation":"13169:5:9","nodeType":"VariableDeclaration","scope":2846,"src":"13157:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":2798,"nodeType":"UserDefinedTypeName","pathNode":{"id":2797,"name":"ISuperToken","nameLocations":["13157:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"13157:11:9"},"referencedDeclaration":7015,"src":"13157:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":2801,"mutability":"mutable","name":"sender","nameLocation":"13192:6:9","nodeType":"VariableDeclaration","scope":2846,"src":"13184:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2800,"name":"address","nodeType":"ElementaryTypeName","src":"13184:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2803,"mutability":"mutable","name":"receiver","nameLocation":"13216:8:9","nodeType":"VariableDeclaration","scope":2846,"src":"13208:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2802,"name":"address","nodeType":"ElementaryTypeName","src":"13208:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2805,"mutability":"mutable","name":"flowRate","nameLocation":"13240:8:9","nodeType":"VariableDeclaration","scope":2846,"src":"13234:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":2804,"name":"int96","nodeType":"ElementaryTypeName","src":"13234:5:9","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"},{"constant":false,"id":2807,"mutability":"mutable","name":"userData","nameLocation":"13271:8:9","nodeType":"VariableDeclaration","scope":2846,"src":"13258:21:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2806,"name":"bytes","nodeType":"ElementaryTypeName","src":"13258:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"13147:138:9"},"returnParameters":{"id":2811,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2810,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2846,"src":"13304:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2809,"name":"bool","nodeType":"ElementaryTypeName","src":"13304:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"13303:6:9"},"scope":5145,"src":"13124:532:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2894,"nodeType":"Block","src":"13997:340:9","statements":[{"assignments":[2861,2864],"declarations":[{"constant":false,"id":2861,"mutability":"mutable","name":"host","nameLocation":"14020:4:9","nodeType":"VariableDeclaration","scope":2894,"src":"14008:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"},"typeName":{"id":2860,"nodeType":"UserDefinedTypeName","pathNode":{"id":2859,"name":"ISuperfluid","nameLocations":["14008:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7667,"src":"14008:11:9"},"referencedDeclaration":7667,"src":"14008:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":2864,"mutability":"mutable","name":"cfa","nameLocation":"14051:3:9","nodeType":"VariableDeclaration","scope":2894,"src":"14026:28:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":2863,"nodeType":"UserDefinedTypeName","pathNode":{"id":2862,"name":"IConstantFlowAgreementV1","nameLocations":["14026:24:9"],"nodeType":"IdentifierPath","referencedDeclaration":5555,"src":"14026:24:9"},"referencedDeclaration":5555,"src":"14026:24:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"id":2868,"initialValue":{"arguments":[{"id":2866,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2850,"src":"14081:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}],"id":2865,"name":"_getAndCacheHostAndCFA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"14058:22:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$7015_$returns$_t_contract$_ISuperfluid_$7667_$_t_contract$_IConstantFlowAgreementV1_$5555_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"id":2867,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14058:29:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7667_$_t_contract$_IConstantFlowAgreementV1_$5555_$","typeString":"tuple(contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"14007:80:9"},{"expression":{"arguments":[{"id":2872,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2864,"src":"14129:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},{"arguments":[{"expression":{"id":2875,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2864,"src":"14178:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"id":2876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14182:20:9","memberName":"deleteFlowByOperator","nodeType":"MemberAccess","referencedDeclaration":5515,"src":"14178:24:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,address,bytes memory) external returns (bytes memory)"}},{"components":[{"id":2877,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2850,"src":"14221:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},{"id":2878,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2852,"src":"14228:6:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2879,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2854,"src":"14236:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":2882,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14256:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2881,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"14246:9:9","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2880,"name":"bytes","nodeType":"ElementaryTypeName","src":"14250:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2883,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14246:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":2884,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14220:39:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,address,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,address,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,address,bytes memory)"}],"expression":{"id":2873,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"14146:3:9","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2874,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14150:10:9","memberName":"encodeCall","nodeType":"MemberAccess","src":"14146:14:9","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2885,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14146:127:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"hexValue":"30","id":2888,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14297:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2887,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"14287:9:9","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2886,"name":"bytes","nodeType":"ElementaryTypeName","src":"14291:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2889,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14287:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2869,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2861,"src":"14097:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"id":2871,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14102:13:9","memberName":"callAgreement","nodeType":"MemberAccess","referencedDeclaration":7565,"src":"14097:18:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6463_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory) external returns (bytes memory)"}},"id":2890,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14097:212:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2891,"nodeType":"ExpressionStatement","src":"14097:212:9"},{"expression":{"hexValue":"74727565","id":2892,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"14326:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":2858,"id":2893,"nodeType":"Return","src":"14319:11:9"}]},"documentation":{"id":2847,"nodeType":"StructuredDocumentation","src":"13663:198:9","text":" @dev Deletes flow as an operator without userData\n @param token The token to flow\n @param sender The sender of the flow\n @param receiver The receiver of the flow"},"id":2895,"implemented":true,"kind":"function","modifiers":[],"name":"deleteFlowFrom","nameLocation":"13875:14:9","nodeType":"FunctionDefinition","parameters":{"id":2855,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2850,"mutability":"mutable","name":"token","nameLocation":"13911:5:9","nodeType":"VariableDeclaration","scope":2895,"src":"13899:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":2849,"nodeType":"UserDefinedTypeName","pathNode":{"id":2848,"name":"ISuperToken","nameLocations":["13899:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"13899:11:9"},"referencedDeclaration":7015,"src":"13899:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":2852,"mutability":"mutable","name":"sender","nameLocation":"13934:6:9","nodeType":"VariableDeclaration","scope":2895,"src":"13926:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2851,"name":"address","nodeType":"ElementaryTypeName","src":"13926:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2854,"mutability":"mutable","name":"receiver","nameLocation":"13958:8:9","nodeType":"VariableDeclaration","scope":2895,"src":"13950:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2853,"name":"address","nodeType":"ElementaryTypeName","src":"13950:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"13889:83:9"},"returnParameters":{"id":2858,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2857,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2895,"src":"13991:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2856,"name":"bool","nodeType":"ElementaryTypeName","src":"13991:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"13990:6:9"},"scope":5145,"src":"13866:471:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2942,"nodeType":"Block","src":"14751:336:9","statements":[{"assignments":[2912,2915],"declarations":[{"constant":false,"id":2912,"mutability":"mutable","name":"host","nameLocation":"14774:4:9","nodeType":"VariableDeclaration","scope":2942,"src":"14762:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"},"typeName":{"id":2911,"nodeType":"UserDefinedTypeName","pathNode":{"id":2910,"name":"ISuperfluid","nameLocations":["14762:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7667,"src":"14762:11:9"},"referencedDeclaration":7667,"src":"14762:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":2915,"mutability":"mutable","name":"cfa","nameLocation":"14805:3:9","nodeType":"VariableDeclaration","scope":2942,"src":"14780:28:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":2914,"nodeType":"UserDefinedTypeName","pathNode":{"id":2913,"name":"IConstantFlowAgreementV1","nameLocations":["14780:24:9"],"nodeType":"IdentifierPath","referencedDeclaration":5555,"src":"14780:24:9"},"referencedDeclaration":5555,"src":"14780:24:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"id":2919,"initialValue":{"arguments":[{"id":2917,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2899,"src":"14835:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}],"id":2916,"name":"_getAndCacheHostAndCFA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"14812:22:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$7015_$returns$_t_contract$_ISuperfluid_$7667_$_t_contract$_IConstantFlowAgreementV1_$5555_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"id":2918,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14812:29:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7667_$_t_contract$_IConstantFlowAgreementV1_$5555_$","typeString":"tuple(contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"14761:80:9"},{"expression":{"arguments":[{"id":2923,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2915,"src":"14883:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},{"arguments":[{"expression":{"id":2926,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2915,"src":"14932:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"id":2927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14936:20:9","memberName":"deleteFlowByOperator","nodeType":"MemberAccess","referencedDeclaration":5515,"src":"14932:24:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,address,bytes memory) external returns (bytes memory)"}},{"components":[{"id":2928,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2899,"src":"14975:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},{"id":2929,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2901,"src":"14982:6:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2930,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2903,"src":"14990:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":2933,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15010:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2932,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"15000:9:9","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2931,"name":"bytes","nodeType":"ElementaryTypeName","src":"15004:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2934,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15000:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":2935,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14974:39:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,address,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,address,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,address,bytes memory)"}],"expression":{"id":2924,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"14900:3:9","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2925,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14904:10:9","memberName":"encodeCall","nodeType":"MemberAccess","src":"14900:14:9","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2936,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14900:127:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":2937,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2905,"src":"15041:8:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2920,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2912,"src":"14851:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"id":2922,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14856:13:9","memberName":"callAgreement","nodeType":"MemberAccess","referencedDeclaration":7565,"src":"14851:18:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6463_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory) external returns (bytes memory)"}},"id":2938,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14851:208:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2939,"nodeType":"ExpressionStatement","src":"14851:208:9"},{"expression":{"hexValue":"74727565","id":2940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"15076:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":2909,"id":2941,"nodeType":"Return","src":"15069:11:9"}]},"documentation":{"id":2896,"nodeType":"StructuredDocumentation","src":"14343:241:9","text":" @dev Deletes flow as an operator with userData\n @param token The token to flow\n @param sender The sender of the flow\n @param receiver The receiver of the flow\n @param userData The user provided data"},"id":2943,"implemented":true,"kind":"function","modifiers":[],"name":"deleteFlowFrom","nameLocation":"14598:14:9","nodeType":"FunctionDefinition","parameters":{"id":2906,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2899,"mutability":"mutable","name":"token","nameLocation":"14634:5:9","nodeType":"VariableDeclaration","scope":2943,"src":"14622:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":2898,"nodeType":"UserDefinedTypeName","pathNode":{"id":2897,"name":"ISuperToken","nameLocations":["14622:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"14622:11:9"},"referencedDeclaration":7015,"src":"14622:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":2901,"mutability":"mutable","name":"sender","nameLocation":"14657:6:9","nodeType":"VariableDeclaration","scope":2943,"src":"14649:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2900,"name":"address","nodeType":"ElementaryTypeName","src":"14649:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2903,"mutability":"mutable","name":"receiver","nameLocation":"14681:8:9","nodeType":"VariableDeclaration","scope":2943,"src":"14673:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2902,"name":"address","nodeType":"ElementaryTypeName","src":"14673:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2905,"mutability":"mutable","name":"userData","nameLocation":"14712:8:9","nodeType":"VariableDeclaration","scope":2943,"src":"14699:21:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2904,"name":"bytes","nodeType":"ElementaryTypeName","src":"14699:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"14612:114:9"},"returnParameters":{"id":2909,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2908,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2943,"src":"14745:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2907,"name":"bool","nodeType":"ElementaryTypeName","src":"14745:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"14744:6:9"},"scope":5145,"src":"14589:498:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2991,"nodeType":"Block","src":"15611:457:9","statements":[{"assignments":[2960,2963],"declarations":[{"constant":false,"id":2960,"mutability":"mutable","name":"host","nameLocation":"15634:4:9","nodeType":"VariableDeclaration","scope":2991,"src":"15622:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"},"typeName":{"id":2959,"nodeType":"UserDefinedTypeName","pathNode":{"id":2958,"name":"ISuperfluid","nameLocations":["15622:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7667,"src":"15622:11:9"},"referencedDeclaration":7667,"src":"15622:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":2963,"mutability":"mutable","name":"cfa","nameLocation":"15665:3:9","nodeType":"VariableDeclaration","scope":2991,"src":"15640:28:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":2962,"nodeType":"UserDefinedTypeName","pathNode":{"id":2961,"name":"IConstantFlowAgreementV1","nameLocations":["15640:24:9"],"nodeType":"IdentifierPath","referencedDeclaration":5555,"src":"15640:24:9"},"referencedDeclaration":5555,"src":"15640:24:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"id":2967,"initialValue":{"arguments":[{"id":2965,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2947,"src":"15695:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}],"id":2964,"name":"_getAndCacheHostAndCFA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"15672:22:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$7015_$returns$_t_contract$_ISuperfluid_$7667_$_t_contract$_IConstantFlowAgreementV1_$5555_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"id":2966,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15672:29:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7667_$_t_contract$_IConstantFlowAgreementV1_$5555_$","typeString":"tuple(contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"15621:80:9"},{"expression":{"id":2989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":2968,"name":"newCtx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2956,"src":"15712:6:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},null],"id":2969,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"15711:10:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$__$","typeString":"tuple(bytes memory,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":2972,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2963,"src":"15767:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},{"arguments":[{"expression":{"id":2975,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2963,"src":"15816:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"id":2976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15820:10:9","memberName":"createFlow","nodeType":"MemberAccess","referencedDeclaration":5372,"src":"15816:14:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,int96,bytes memory) external returns (bytes memory)"}},{"components":[{"id":2977,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2947,"src":"15870:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},{"id":2978,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2949,"src":"15897:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2979,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2951,"src":"15927:8:9","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},{"arguments":[{"hexValue":"30","id":2982,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15967:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2981,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"15957:9:9","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2980,"name":"bytes","nodeType":"ElementaryTypeName","src":"15961:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2983,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15957:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":2984,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"15848:154:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,int96,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,int96,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,int96,bytes memory)"}],"expression":{"id":2973,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"15784:3:9","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":2974,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15788:10:9","memberName":"encodeCall","nodeType":"MemberAccess","src":"15784:14:9","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":2985,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15784:232:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"3078","id":2986,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16030:4:9","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"},{"id":2987,"name":"ctx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2953,"src":"16048:3:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":2970,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2960,"src":"15724:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"id":2971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15729:24:9","memberName":"callAgreementWithContext","nodeType":"MemberAccess","referencedDeclaration":7616,"src":"15724:29:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6463_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory,bytes memory) external returns (bytes memory,bytes memory)"}},"id":2988,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15724:337:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(bytes memory,bytes memory)"}},"src":"15711:350:9","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2990,"nodeType":"ExpressionStatement","src":"15711:350:9"}]},"documentation":{"id":2944,"nodeType":"StructuredDocumentation","src":"15167:264:9","text":" @dev Create flow with context and userData\n @param token The token to flow\n @param receiver The receiver of the flow\n @param flowRate The desired flowRate\n @param ctx Context bytes (see ISuperfluid.sol for Context struct)"},"id":2992,"implemented":true,"kind":"function","modifiers":[],"name":"createFlowWithCtx","nameLocation":"15445:17:9","nodeType":"FunctionDefinition","parameters":{"id":2954,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2947,"mutability":"mutable","name":"token","nameLocation":"15484:5:9","nodeType":"VariableDeclaration","scope":2992,"src":"15472:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":2946,"nodeType":"UserDefinedTypeName","pathNode":{"id":2945,"name":"ISuperToken","nameLocations":["15472:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"15472:11:9"},"referencedDeclaration":7015,"src":"15472:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":2949,"mutability":"mutable","name":"receiver","nameLocation":"15507:8:9","nodeType":"VariableDeclaration","scope":2992,"src":"15499:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2948,"name":"address","nodeType":"ElementaryTypeName","src":"15499:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2951,"mutability":"mutable","name":"flowRate","nameLocation":"15531:8:9","nodeType":"VariableDeclaration","scope":2992,"src":"15525:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":2950,"name":"int96","nodeType":"ElementaryTypeName","src":"15525:5:9","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"},{"constant":false,"id":2953,"mutability":"mutable","name":"ctx","nameLocation":"15562:3:9","nodeType":"VariableDeclaration","scope":2992,"src":"15549:16:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2952,"name":"bytes","nodeType":"ElementaryTypeName","src":"15549:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"15462:109:9"},"returnParameters":{"id":2957,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2956,"mutability":"mutable","name":"newCtx","nameLocation":"15603:6:9","nodeType":"VariableDeclaration","scope":2992,"src":"15590:19:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2955,"name":"bytes","nodeType":"ElementaryTypeName","src":"15590:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"15589:21:9"},"scope":5145,"src":"15436:632:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3043,"nodeType":"Block","src":"16589:495:9","statements":[{"assignments":[3011,3014],"declarations":[{"constant":false,"id":3011,"mutability":"mutable","name":"host","nameLocation":"16612:4:9","nodeType":"VariableDeclaration","scope":3043,"src":"16600:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"},"typeName":{"id":3010,"nodeType":"UserDefinedTypeName","pathNode":{"id":3009,"name":"ISuperfluid","nameLocations":["16600:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7667,"src":"16600:11:9"},"referencedDeclaration":7667,"src":"16600:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":3014,"mutability":"mutable","name":"cfa","nameLocation":"16643:3:9","nodeType":"VariableDeclaration","scope":3043,"src":"16618:28:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":3013,"nodeType":"UserDefinedTypeName","pathNode":{"id":3012,"name":"IConstantFlowAgreementV1","nameLocations":["16618:24:9"],"nodeType":"IdentifierPath","referencedDeclaration":5555,"src":"16618:24:9"},"referencedDeclaration":5555,"src":"16618:24:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"id":3018,"initialValue":{"arguments":[{"id":3016,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2996,"src":"16673:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}],"id":3015,"name":"_getAndCacheHostAndCFA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"16650:22:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$7015_$returns$_t_contract$_ISuperfluid_$7667_$_t_contract$_IConstantFlowAgreementV1_$5555_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"id":3017,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16650:29:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7667_$_t_contract$_IConstantFlowAgreementV1_$5555_$","typeString":"tuple(contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"16599:80:9"},{"expression":{"id":3041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":3019,"name":"newCtx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3007,"src":"16690:6:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},null],"id":3020,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"16689:10:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$__$","typeString":"tuple(bytes memory,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3023,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3014,"src":"16745:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},{"arguments":[{"expression":{"id":3026,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3014,"src":"16794:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"id":3027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16798:20:9","memberName":"createFlowByOperator","nodeType":"MemberAccess","referencedDeclaration":5389,"src":"16794:24:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,address,int96,bytes memory) external returns (bytes memory)"}},{"components":[{"id":3028,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2996,"src":"16858:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},{"id":3029,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2998,"src":"16885:6:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3030,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3000,"src":"16913:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3031,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3002,"src":"16943:8:9","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},{"arguments":[{"hexValue":"30","id":3034,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16983:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"16973:9:9","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":3032,"name":"bytes","nodeType":"ElementaryTypeName","src":"16977:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":3035,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16973:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":3036,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16836:182:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,address,int96,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,address,int96,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,address,int96,bytes memory)"}],"expression":{"id":3024,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"16762:3:9","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3025,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16766:10:9","memberName":"encodeCall","nodeType":"MemberAccess","src":"16762:14:9","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3037,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16762:270:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"3078","id":3038,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17046:4:9","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"},{"id":3039,"name":"ctx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3004,"src":"17064:3:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":3021,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3011,"src":"16702:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"id":3022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16707:24:9","memberName":"callAgreementWithContext","nodeType":"MemberAccess","referencedDeclaration":7616,"src":"16702:29:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6463_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory,bytes memory) external returns (bytes memory,bytes memory)"}},"id":3040,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16702:375:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(bytes memory,bytes memory)"}},"src":"16689:388:9","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3042,"nodeType":"ExpressionStatement","src":"16689:388:9"}]},"documentation":{"id":2993,"nodeType":"StructuredDocumentation","src":"16074:307:9","text":" @dev Create flow by operator with context\n @param token The token to flow\n @param sender The sender of the flow\n @param receiver The receiver of the flow\n @param flowRate The desired flowRate\n @param ctx Context bytes (see ISuperfluid.sol for Context struct)"},"id":3044,"implemented":true,"kind":"function","modifiers":[],"name":"createFlowFromWithCtx","nameLocation":"16395:21:9","nodeType":"FunctionDefinition","parameters":{"id":3005,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2996,"mutability":"mutable","name":"token","nameLocation":"16438:5:9","nodeType":"VariableDeclaration","scope":3044,"src":"16426:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":2995,"nodeType":"UserDefinedTypeName","pathNode":{"id":2994,"name":"ISuperToken","nameLocations":["16426:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"16426:11:9"},"referencedDeclaration":7015,"src":"16426:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":2998,"mutability":"mutable","name":"sender","nameLocation":"16461:6:9","nodeType":"VariableDeclaration","scope":3044,"src":"16453:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2997,"name":"address","nodeType":"ElementaryTypeName","src":"16453:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3000,"mutability":"mutable","name":"receiver","nameLocation":"16485:8:9","nodeType":"VariableDeclaration","scope":3044,"src":"16477:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2999,"name":"address","nodeType":"ElementaryTypeName","src":"16477:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3002,"mutability":"mutable","name":"flowRate","nameLocation":"16509:8:9","nodeType":"VariableDeclaration","scope":3044,"src":"16503:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":3001,"name":"int96","nodeType":"ElementaryTypeName","src":"16503:5:9","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"},{"constant":false,"id":3004,"mutability":"mutable","name":"ctx","nameLocation":"16540:3:9","nodeType":"VariableDeclaration","scope":3044,"src":"16527:16:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3003,"name":"bytes","nodeType":"ElementaryTypeName","src":"16527:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"16416:133:9"},"returnParameters":{"id":3008,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3007,"mutability":"mutable","name":"newCtx","nameLocation":"16581:6:9","nodeType":"VariableDeclaration","scope":3044,"src":"16568:19:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3006,"name":"bytes","nodeType":"ElementaryTypeName","src":"16568:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"16567:21:9"},"scope":5145,"src":"16386:698:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3092,"nodeType":"Block","src":"17521:457:9","statements":[{"assignments":[3061,3064],"declarations":[{"constant":false,"id":3061,"mutability":"mutable","name":"host","nameLocation":"17544:4:9","nodeType":"VariableDeclaration","scope":3092,"src":"17532:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"},"typeName":{"id":3060,"nodeType":"UserDefinedTypeName","pathNode":{"id":3059,"name":"ISuperfluid","nameLocations":["17532:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7667,"src":"17532:11:9"},"referencedDeclaration":7667,"src":"17532:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":3064,"mutability":"mutable","name":"cfa","nameLocation":"17575:3:9","nodeType":"VariableDeclaration","scope":3092,"src":"17550:28:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":3063,"nodeType":"UserDefinedTypeName","pathNode":{"id":3062,"name":"IConstantFlowAgreementV1","nameLocations":["17550:24:9"],"nodeType":"IdentifierPath","referencedDeclaration":5555,"src":"17550:24:9"},"referencedDeclaration":5555,"src":"17550:24:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"id":3068,"initialValue":{"arguments":[{"id":3066,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3048,"src":"17605:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}],"id":3065,"name":"_getAndCacheHostAndCFA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"17582:22:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$7015_$returns$_t_contract$_ISuperfluid_$7667_$_t_contract$_IConstantFlowAgreementV1_$5555_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"id":3067,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17582:29:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7667_$_t_contract$_IConstantFlowAgreementV1_$5555_$","typeString":"tuple(contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"17531:80:9"},{"expression":{"id":3090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":3069,"name":"newCtx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3057,"src":"17622:6:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},null],"id":3070,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"17621:10:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$__$","typeString":"tuple(bytes memory,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3073,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3064,"src":"17677:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},{"arguments":[{"expression":{"id":3076,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3064,"src":"17726:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"id":3077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17730:10:9","memberName":"updateFlow","nodeType":"MemberAccess","referencedDeclaration":5404,"src":"17726:14:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,int96,bytes memory) external returns (bytes memory)"}},{"components":[{"id":3078,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3048,"src":"17780:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},{"id":3079,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3050,"src":"17807:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3080,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3052,"src":"17837:8:9","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},{"arguments":[{"hexValue":"30","id":3083,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17877:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3082,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"17867:9:9","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":3081,"name":"bytes","nodeType":"ElementaryTypeName","src":"17871:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":3084,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17867:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":3085,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17758:154:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,int96,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,int96,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,int96,bytes memory)"}],"expression":{"id":3074,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"17694:3:9","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3075,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"17698:10:9","memberName":"encodeCall","nodeType":"MemberAccess","src":"17694:14:9","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3086,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17694:232:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"3078","id":3087,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17940:4:9","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"},{"id":3088,"name":"ctx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3054,"src":"17958:3:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":3071,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3061,"src":"17634:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"id":3072,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17639:24:9","memberName":"callAgreementWithContext","nodeType":"MemberAccess","referencedDeclaration":7616,"src":"17634:29:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6463_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory,bytes memory) external returns (bytes memory,bytes memory)"}},"id":3089,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17634:337:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(bytes memory,bytes memory)"}},"src":"17621:350:9","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3091,"nodeType":"ExpressionStatement","src":"17621:350:9"}]},"documentation":{"id":3045,"nodeType":"StructuredDocumentation","src":"17090:251:9","text":" @dev Update flow with context\n @param token The token to flow\n @param receiver The receiver of the flow\n @param flowRate The desired flowRate\n @param ctx Context bytes (see ISuperfluid.sol for Context struct)"},"id":3093,"implemented":true,"kind":"function","modifiers":[],"name":"updateFlowWithCtx","nameLocation":"17355:17:9","nodeType":"FunctionDefinition","parameters":{"id":3055,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3048,"mutability":"mutable","name":"token","nameLocation":"17394:5:9","nodeType":"VariableDeclaration","scope":3093,"src":"17382:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":3047,"nodeType":"UserDefinedTypeName","pathNode":{"id":3046,"name":"ISuperToken","nameLocations":["17382:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"17382:11:9"},"referencedDeclaration":7015,"src":"17382:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":3050,"mutability":"mutable","name":"receiver","nameLocation":"17417:8:9","nodeType":"VariableDeclaration","scope":3093,"src":"17409:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3049,"name":"address","nodeType":"ElementaryTypeName","src":"17409:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3052,"mutability":"mutable","name":"flowRate","nameLocation":"17441:8:9","nodeType":"VariableDeclaration","scope":3093,"src":"17435:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":3051,"name":"int96","nodeType":"ElementaryTypeName","src":"17435:5:9","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"},{"constant":false,"id":3054,"mutability":"mutable","name":"ctx","nameLocation":"17472:3:9","nodeType":"VariableDeclaration","scope":3093,"src":"17459:16:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3053,"name":"bytes","nodeType":"ElementaryTypeName","src":"17459:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"17372:109:9"},"returnParameters":{"id":3058,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3057,"mutability":"mutable","name":"newCtx","nameLocation":"17513:6:9","nodeType":"VariableDeclaration","scope":3093,"src":"17500:19:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3056,"name":"bytes","nodeType":"ElementaryTypeName","src":"17500:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"17499:21:9"},"scope":5145,"src":"17346:632:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3144,"nodeType":"Block","src":"18501:495:9","statements":[{"assignments":[3112,3115],"declarations":[{"constant":false,"id":3112,"mutability":"mutable","name":"host","nameLocation":"18524:4:9","nodeType":"VariableDeclaration","scope":3144,"src":"18512:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"},"typeName":{"id":3111,"nodeType":"UserDefinedTypeName","pathNode":{"id":3110,"name":"ISuperfluid","nameLocations":["18512:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7667,"src":"18512:11:9"},"referencedDeclaration":7667,"src":"18512:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":3115,"mutability":"mutable","name":"cfa","nameLocation":"18555:3:9","nodeType":"VariableDeclaration","scope":3144,"src":"18530:28:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":3114,"nodeType":"UserDefinedTypeName","pathNode":{"id":3113,"name":"IConstantFlowAgreementV1","nameLocations":["18530:24:9"],"nodeType":"IdentifierPath","referencedDeclaration":5555,"src":"18530:24:9"},"referencedDeclaration":5555,"src":"18530:24:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"id":3119,"initialValue":{"arguments":[{"id":3117,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3097,"src":"18585:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}],"id":3116,"name":"_getAndCacheHostAndCFA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"18562:22:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$7015_$returns$_t_contract$_ISuperfluid_$7667_$_t_contract$_IConstantFlowAgreementV1_$5555_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"id":3118,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18562:29:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7667_$_t_contract$_IConstantFlowAgreementV1_$5555_$","typeString":"tuple(contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"18511:80:9"},{"expression":{"id":3142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":3120,"name":"newCtx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3108,"src":"18602:6:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},null],"id":3121,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"18601:10:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$__$","typeString":"tuple(bytes memory,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3124,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3115,"src":"18657:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},{"arguments":[{"expression":{"id":3127,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3115,"src":"18706:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"id":3128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18710:20:9","memberName":"updateFlowByOperator","nodeType":"MemberAccess","referencedDeclaration":5421,"src":"18706:24:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,address,int96,bytes memory) external returns (bytes memory)"}},{"components":[{"id":3129,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3097,"src":"18770:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},{"id":3130,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3099,"src":"18797:6:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3131,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3101,"src":"18825:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3132,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3103,"src":"18855:8:9","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},{"arguments":[{"hexValue":"30","id":3135,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18895:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3134,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"18885:9:9","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":3133,"name":"bytes","nodeType":"ElementaryTypeName","src":"18889:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":3136,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18885:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":3137,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18748:182:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,address,int96,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,address,int96,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_address_$_t_int96_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,address,int96,bytes memory)"}],"expression":{"id":3125,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"18674:3:9","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3126,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"18678:10:9","memberName":"encodeCall","nodeType":"MemberAccess","src":"18674:14:9","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3138,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18674:270:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"3078","id":3139,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18958:4:9","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"},{"id":3140,"name":"ctx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3105,"src":"18976:3:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":3122,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3112,"src":"18614:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"id":3123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18619:24:9","memberName":"callAgreementWithContext","nodeType":"MemberAccess","referencedDeclaration":7616,"src":"18614:29:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6463_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory,bytes memory) external returns (bytes memory,bytes memory)"}},"id":3141,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18614:375:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(bytes memory,bytes memory)"}},"src":"18601:388:9","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3143,"nodeType":"ExpressionStatement","src":"18601:388:9"}]},"documentation":{"id":3094,"nodeType":"StructuredDocumentation","src":"17984:309:9","text":" @dev Update flow by operator with context\n @param token The token to flow\n @param sender The receiver of the flow\n @param receiver The receiver of the flow\n @param flowRate The desired flowRate\n @param ctx Context bytes (see ISuperfluid.sol for Context struct)"},"id":3145,"implemented":true,"kind":"function","modifiers":[],"name":"updateFlowFromWithCtx","nameLocation":"18307:21:9","nodeType":"FunctionDefinition","parameters":{"id":3106,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3097,"mutability":"mutable","name":"token","nameLocation":"18350:5:9","nodeType":"VariableDeclaration","scope":3145,"src":"18338:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":3096,"nodeType":"UserDefinedTypeName","pathNode":{"id":3095,"name":"ISuperToken","nameLocations":["18338:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"18338:11:9"},"referencedDeclaration":7015,"src":"18338:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":3099,"mutability":"mutable","name":"sender","nameLocation":"18373:6:9","nodeType":"VariableDeclaration","scope":3145,"src":"18365:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3098,"name":"address","nodeType":"ElementaryTypeName","src":"18365:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3101,"mutability":"mutable","name":"receiver","nameLocation":"18397:8:9","nodeType":"VariableDeclaration","scope":3145,"src":"18389:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3100,"name":"address","nodeType":"ElementaryTypeName","src":"18389:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3103,"mutability":"mutable","name":"flowRate","nameLocation":"18421:8:9","nodeType":"VariableDeclaration","scope":3145,"src":"18415:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":3102,"name":"int96","nodeType":"ElementaryTypeName","src":"18415:5:9","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"},{"constant":false,"id":3105,"mutability":"mutable","name":"ctx","nameLocation":"18452:3:9","nodeType":"VariableDeclaration","scope":3145,"src":"18439:16:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3104,"name":"bytes","nodeType":"ElementaryTypeName","src":"18439:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"18328:133:9"},"returnParameters":{"id":3109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3108,"mutability":"mutable","name":"newCtx","nameLocation":"18493:6:9","nodeType":"VariableDeclaration","scope":3145,"src":"18480:19:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3107,"name":"bytes","nodeType":"ElementaryTypeName","src":"18480:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"18479:21:9"},"scope":5145,"src":"18298:698:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3193,"nodeType":"Block","src":"19433:455:9","statements":[{"assignments":[3162,3165],"declarations":[{"constant":false,"id":3162,"mutability":"mutable","name":"host","nameLocation":"19456:4:9","nodeType":"VariableDeclaration","scope":3193,"src":"19444:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"},"typeName":{"id":3161,"nodeType":"UserDefinedTypeName","pathNode":{"id":3160,"name":"ISuperfluid","nameLocations":["19444:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7667,"src":"19444:11:9"},"referencedDeclaration":7667,"src":"19444:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":3165,"mutability":"mutable","name":"cfa","nameLocation":"19487:3:9","nodeType":"VariableDeclaration","scope":3193,"src":"19462:28:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":3164,"nodeType":"UserDefinedTypeName","pathNode":{"id":3163,"name":"IConstantFlowAgreementV1","nameLocations":["19462:24:9"],"nodeType":"IdentifierPath","referencedDeclaration":5555,"src":"19462:24:9"},"referencedDeclaration":5555,"src":"19462:24:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"id":3169,"initialValue":{"arguments":[{"id":3167,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3149,"src":"19517:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}],"id":3166,"name":"_getAndCacheHostAndCFA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"19494:22:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$7015_$returns$_t_contract$_ISuperfluid_$7667_$_t_contract$_IConstantFlowAgreementV1_$5555_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"id":3168,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19494:29:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7667_$_t_contract$_IConstantFlowAgreementV1_$5555_$","typeString":"tuple(contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"19443:80:9"},{"expression":{"id":3191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":3170,"name":"newCtx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3158,"src":"19534:6:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},null],"id":3171,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"19533:10:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$__$","typeString":"tuple(bytes memory,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3174,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3165,"src":"19589:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},{"arguments":[{"expression":{"id":3177,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3165,"src":"19638:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"id":3178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19642:10:9","memberName":"deleteFlow","nodeType":"MemberAccess","referencedDeclaration":5500,"src":"19638:14:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,address,bytes memory) external returns (bytes memory)"}},{"components":[{"id":3179,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3149,"src":"19692:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},{"id":3180,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3151,"src":"19719:6:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3181,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3153,"src":"19747:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":3184,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19787:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3183,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"19777:9:9","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":3182,"name":"bytes","nodeType":"ElementaryTypeName","src":"19781:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":3185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19777:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":3186,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19670:152:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,address,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,address,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,address,bytes memory)"}],"expression":{"id":3175,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"19606:3:9","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3176,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"19610:10:9","memberName":"encodeCall","nodeType":"MemberAccess","src":"19606:14:9","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3187,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19606:230:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"3078","id":3188,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"19850:4:9","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"},{"id":3189,"name":"ctx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3155,"src":"19868:3:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":3172,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3162,"src":"19546:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"id":3173,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19551:24:9","memberName":"callAgreementWithContext","nodeType":"MemberAccess","referencedDeclaration":7616,"src":"19546:29:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6463_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory,bytes memory) external returns (bytes memory,bytes memory)"}},"id":3190,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19546:335:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(bytes memory,bytes memory)"}},"src":"19533:348:9","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3192,"nodeType":"ExpressionStatement","src":"19533:348:9"}]},"documentation":{"id":3146,"nodeType":"StructuredDocumentation","src":"19002:251:9","text":" @dev Delete flow with context\n @param token The token to flow\n @param sender The sender of the flow\n @param receiver The receiver of the flow\n @param ctx Context bytes (see ISuperfluid.sol for Context struct)"},"id":3194,"implemented":true,"kind":"function","modifiers":[],"name":"deleteFlowWithCtx","nameLocation":"19267:17:9","nodeType":"FunctionDefinition","parameters":{"id":3156,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3149,"mutability":"mutable","name":"token","nameLocation":"19306:5:9","nodeType":"VariableDeclaration","scope":3194,"src":"19294:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":3148,"nodeType":"UserDefinedTypeName","pathNode":{"id":3147,"name":"ISuperToken","nameLocations":["19294:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"19294:11:9"},"referencedDeclaration":7015,"src":"19294:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":3151,"mutability":"mutable","name":"sender","nameLocation":"19329:6:9","nodeType":"VariableDeclaration","scope":3194,"src":"19321:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3150,"name":"address","nodeType":"ElementaryTypeName","src":"19321:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3153,"mutability":"mutable","name":"receiver","nameLocation":"19353:8:9","nodeType":"VariableDeclaration","scope":3194,"src":"19345:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3152,"name":"address","nodeType":"ElementaryTypeName","src":"19345:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3155,"mutability":"mutable","name":"ctx","nameLocation":"19384:3:9","nodeType":"VariableDeclaration","scope":3194,"src":"19371:16:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3154,"name":"bytes","nodeType":"ElementaryTypeName","src":"19371:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"19284:109:9"},"returnParameters":{"id":3159,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3158,"mutability":"mutable","name":"newCtx","nameLocation":"19425:6:9","nodeType":"VariableDeclaration","scope":3194,"src":"19412:19:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3157,"name":"bytes","nodeType":"ElementaryTypeName","src":"19412:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"19411:21:9"},"scope":5145,"src":"19258:630:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3242,"nodeType":"Block","src":"20341:465:9","statements":[{"assignments":[3211,3214],"declarations":[{"constant":false,"id":3211,"mutability":"mutable","name":"host","nameLocation":"20364:4:9","nodeType":"VariableDeclaration","scope":3242,"src":"20352:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"},"typeName":{"id":3210,"nodeType":"UserDefinedTypeName","pathNode":{"id":3209,"name":"ISuperfluid","nameLocations":["20352:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7667,"src":"20352:11:9"},"referencedDeclaration":7667,"src":"20352:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":3214,"mutability":"mutable","name":"cfa","nameLocation":"20395:3:9","nodeType":"VariableDeclaration","scope":3242,"src":"20370:28:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":3213,"nodeType":"UserDefinedTypeName","pathNode":{"id":3212,"name":"IConstantFlowAgreementV1","nameLocations":["20370:24:9"],"nodeType":"IdentifierPath","referencedDeclaration":5555,"src":"20370:24:9"},"referencedDeclaration":5555,"src":"20370:24:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"id":3218,"initialValue":{"arguments":[{"id":3216,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3198,"src":"20425:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}],"id":3215,"name":"_getAndCacheHostAndCFA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"20402:22:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$7015_$returns$_t_contract$_ISuperfluid_$7667_$_t_contract$_IConstantFlowAgreementV1_$5555_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"id":3217,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20402:29:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7667_$_t_contract$_IConstantFlowAgreementV1_$5555_$","typeString":"tuple(contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"20351:80:9"},{"expression":{"id":3240,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":3219,"name":"newCtx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3207,"src":"20442:6:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},null],"id":3220,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"20441:10:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$__$","typeString":"tuple(bytes memory,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3223,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3214,"src":"20497:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},{"arguments":[{"expression":{"id":3226,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3214,"src":"20546:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"id":3227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20550:20:9","memberName":"deleteFlowByOperator","nodeType":"MemberAccess","referencedDeclaration":5515,"src":"20546:24:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,address,bytes memory) external returns (bytes memory)"}},{"components":[{"id":3228,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3198,"src":"20610:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},{"id":3229,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3200,"src":"20637:6:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3230,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3202,"src":"20665:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":3233,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20705:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3232,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"20695:9:9","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":3231,"name":"bytes","nodeType":"ElementaryTypeName","src":"20699:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":3234,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20695:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":3235,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20588:152:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,address,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,address,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,address,bytes memory)"}],"expression":{"id":3224,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"20514:3:9","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3225,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"20518:10:9","memberName":"encodeCall","nodeType":"MemberAccess","src":"20514:14:9","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20514:240:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"3078","id":3237,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"20768:4:9","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"},{"id":3238,"name":"ctx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3204,"src":"20786:3:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":3221,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3211,"src":"20454:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"id":3222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20459:24:9","memberName":"callAgreementWithContext","nodeType":"MemberAccess","referencedDeclaration":7616,"src":"20454:29:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6463_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory,bytes memory) external returns (bytes memory,bytes memory)"}},"id":3239,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20454:345:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(bytes memory,bytes memory)"}},"src":"20441:358:9","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3241,"nodeType":"ExpressionStatement","src":"20441:358:9"}]},"documentation":{"id":3195,"nodeType":"StructuredDocumentation","src":"19894:263:9","text":" @dev Delete flow by operator with context\n @param token The token to flow\n @param sender The sender of the flow\n @param receiver The receiver of the flow\n @param ctx Context bytes (see ISuperfluid.sol for Context struct)"},"id":3243,"implemented":true,"kind":"function","modifiers":[],"name":"deleteFlowFromWithCtx","nameLocation":"20171:21:9","nodeType":"FunctionDefinition","parameters":{"id":3205,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3198,"mutability":"mutable","name":"token","nameLocation":"20214:5:9","nodeType":"VariableDeclaration","scope":3243,"src":"20202:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":3197,"nodeType":"UserDefinedTypeName","pathNode":{"id":3196,"name":"ISuperToken","nameLocations":["20202:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"20202:11:9"},"referencedDeclaration":7015,"src":"20202:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":3200,"mutability":"mutable","name":"sender","nameLocation":"20237:6:9","nodeType":"VariableDeclaration","scope":3243,"src":"20229:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3199,"name":"address","nodeType":"ElementaryTypeName","src":"20229:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3202,"mutability":"mutable","name":"receiver","nameLocation":"20261:8:9","nodeType":"VariableDeclaration","scope":3243,"src":"20253:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3201,"name":"address","nodeType":"ElementaryTypeName","src":"20253:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3204,"mutability":"mutable","name":"ctx","nameLocation":"20292:3:9","nodeType":"VariableDeclaration","scope":3243,"src":"20279:16:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3203,"name":"bytes","nodeType":"ElementaryTypeName","src":"20279:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"20192:109:9"},"returnParameters":{"id":3208,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3207,"mutability":"mutable","name":"newCtx","nameLocation":"20333:6:9","nodeType":"VariableDeclaration","scope":3243,"src":"20320:19:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3206,"name":"bytes","nodeType":"ElementaryTypeName","src":"20320:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"20319:21:9"},"scope":5145,"src":"20162:644:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3273,"nodeType":"Block","src":"21257:138:9","statements":[{"assignments":[null,3258],"declarations":[null,{"constant":false,"id":3258,"mutability":"mutable","name":"cfa","nameLocation":"21295:3:9","nodeType":"VariableDeclaration","scope":3273,"src":"21270:28:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":3257,"nodeType":"UserDefinedTypeName","pathNode":{"id":3256,"name":"IConstantFlowAgreementV1","nameLocations":["21270:24:9"],"nodeType":"IdentifierPath","referencedDeclaration":5555,"src":"21270:24:9"},"referencedDeclaration":5555,"src":"21270:24:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"id":3262,"initialValue":{"arguments":[{"id":3260,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3247,"src":"21317:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}],"id":3259,"name":"_getHostAndCFA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5062,"src":"21302:14:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_ISuperToken_$7015_$returns$_t_contract$_ISuperfluid_$7667_$_t_contract$_IConstantFlowAgreementV1_$5555_$","typeString":"function (contract ISuperToken) view returns (contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"id":3261,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21302:21:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7667_$_t_contract$_IConstantFlowAgreementV1_$5555_$","typeString":"tuple(contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"21267:56:9"},{"expression":{"id":3271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[null,{"id":3263,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3254,"src":"21336:8:9","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},null,null],"id":3264,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"21333:16:9","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_int96_$__$__$","typeString":"tuple(,int96,,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3267,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3247,"src":"21364:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},{"id":3268,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3249,"src":"21371:6:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3269,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3251,"src":"21379:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":3265,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3258,"src":"21352:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"id":3266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21356:7:9","memberName":"getFlow","nodeType":"MemberAccess","referencedDeclaration":5440,"src":"21352:11:9","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_address_$returns$_t_uint256_$_t_int96_$_t_uint256_$_t_uint256_$","typeString":"function (contract ISuperfluidToken,address,address) view external returns (uint256,int96,uint256,uint256)"}},"id":3270,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21352:36:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_int96_$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,int96,uint256,uint256)"}},"src":"21333:55:9","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3272,"nodeType":"ExpressionStatement","src":"21333:55:9"}]},"documentation":{"id":3244,"nodeType":"StructuredDocumentation","src":"20881:247:9","text":" @dev get flow rate between two accounts for given token\n @param token The token used in flow\n @param sender The sender of the flow\n @param receiver The receiver of the flow\n @return flowRate The flow rate"},"id":3274,"implemented":true,"kind":"function","modifiers":[],"name":"getFlowRate","nameLocation":"21142:11:9","nodeType":"FunctionDefinition","parameters":{"id":3252,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3247,"mutability":"mutable","name":"token","nameLocation":"21166:5:9","nodeType":"VariableDeclaration","scope":3274,"src":"21154:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":3246,"nodeType":"UserDefinedTypeName","pathNode":{"id":3245,"name":"ISuperToken","nameLocations":["21154:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"21154:11:9"},"referencedDeclaration":7015,"src":"21154:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":3249,"mutability":"mutable","name":"sender","nameLocation":"21181:6:9","nodeType":"VariableDeclaration","scope":3274,"src":"21173:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3248,"name":"address","nodeType":"ElementaryTypeName","src":"21173:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3251,"mutability":"mutable","name":"receiver","nameLocation":"21197:8:9","nodeType":"VariableDeclaration","scope":3274,"src":"21189:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3250,"name":"address","nodeType":"ElementaryTypeName","src":"21189:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"21153:53:9"},"returnParameters":{"id":3255,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3254,"mutability":"mutable","name":"flowRate","nameLocation":"21243:8:9","nodeType":"VariableDeclaration","scope":3274,"src":"21237:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":3253,"name":"int96","nodeType":"ElementaryTypeName","src":"21237:5:9","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"21236:16:9"},"scope":5145,"src":"21133:262:9","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":3313,"nodeType":"Block","src":"22042:167:9","statements":[{"assignments":[null,3295],"declarations":[null,{"constant":false,"id":3295,"mutability":"mutable","name":"cfa","nameLocation":"22080:3:9","nodeType":"VariableDeclaration","scope":3313,"src":"22055:28:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":3294,"nodeType":"UserDefinedTypeName","pathNode":{"id":3293,"name":"IConstantFlowAgreementV1","nameLocations":["22055:24:9"],"nodeType":"IdentifierPath","referencedDeclaration":5555,"src":"22055:24:9"},"referencedDeclaration":5555,"src":"22055:24:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"id":3299,"initialValue":{"arguments":[{"id":3297,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3278,"src":"22102:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}],"id":3296,"name":"_getHostAndCFA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5062,"src":"22087:14:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_ISuperToken_$7015_$returns$_t_contract$_ISuperfluid_$7667_$_t_contract$_IConstantFlowAgreementV1_$5555_$","typeString":"function (contract ISuperToken) view returns (contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"id":3298,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22087:21:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7667_$_t_contract$_IConstantFlowAgreementV1_$5555_$","typeString":"tuple(contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"22052:56:9"},{"expression":{"id":3311,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":3300,"name":"lastUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3285,"src":"22119:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3301,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3287,"src":"22132:8:9","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},{"id":3302,"name":"deposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3289,"src":"22142:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3303,"name":"owedDeposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3291,"src":"22151:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3304,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"22118:45:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_int96_$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,int96,uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3307,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3278,"src":"22178:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},{"id":3308,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3280,"src":"22185:6:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3309,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3282,"src":"22193:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":3305,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3295,"src":"22166:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"id":3306,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22170:7:9","memberName":"getFlow","nodeType":"MemberAccess","referencedDeclaration":5440,"src":"22166:11:9","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_address_$returns$_t_uint256_$_t_int96_$_t_uint256_$_t_uint256_$","typeString":"function (contract ISuperfluidToken,address,address) view external returns (uint256,int96,uint256,uint256)"}},"id":3310,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22166:36:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_int96_$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,int96,uint256,uint256)"}},"src":"22118:84:9","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3312,"nodeType":"ExpressionStatement","src":"22118:84:9"}]},"documentation":{"id":3275,"nodeType":"StructuredDocumentation","src":"21401:445:9","text":" @dev get flow info between two accounts for given token\n @param token The token used in flow\n @param sender The sender of the flow\n @param receiver The receiver of the flow\n @return lastUpdated Timestamp of flow creation or last flowrate change\n @return flowRate The flow rate\n @return deposit The amount of deposit the flow\n @return owedDeposit The amount of owed deposit of the flow"},"id":3314,"implemented":true,"kind":"function","modifiers":[],"name":"getFlowInfo","nameLocation":"21860:11:9","nodeType":"FunctionDefinition","parameters":{"id":3283,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3278,"mutability":"mutable","name":"token","nameLocation":"21884:5:9","nodeType":"VariableDeclaration","scope":3314,"src":"21872:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":3277,"nodeType":"UserDefinedTypeName","pathNode":{"id":3276,"name":"ISuperToken","nameLocations":["21872:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"21872:11:9"},"referencedDeclaration":7015,"src":"21872:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":3280,"mutability":"mutable","name":"sender","nameLocation":"21899:6:9","nodeType":"VariableDeclaration","scope":3314,"src":"21891:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3279,"name":"address","nodeType":"ElementaryTypeName","src":"21891:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3282,"mutability":"mutable","name":"receiver","nameLocation":"21915:8:9","nodeType":"VariableDeclaration","scope":3314,"src":"21907:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3281,"name":"address","nodeType":"ElementaryTypeName","src":"21907:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"21871:53:9"},"returnParameters":{"id":3292,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3285,"mutability":"mutable","name":"lastUpdated","nameLocation":"21971:11:9","nodeType":"VariableDeclaration","scope":3314,"src":"21963:19:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3284,"name":"uint256","nodeType":"ElementaryTypeName","src":"21963:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3287,"mutability":"mutable","name":"flowRate","nameLocation":"21990:8:9","nodeType":"VariableDeclaration","scope":3314,"src":"21984:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":3286,"name":"int96","nodeType":"ElementaryTypeName","src":"21984:5:9","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"},{"constant":false,"id":3289,"mutability":"mutable","name":"deposit","nameLocation":"22008:7:9","nodeType":"VariableDeclaration","scope":3314,"src":"22000:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3288,"name":"uint256","nodeType":"ElementaryTypeName","src":"22000:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3291,"mutability":"mutable","name":"owedDeposit","nameLocation":"22025:11:9","nodeType":"VariableDeclaration","scope":3314,"src":"22017:19:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3290,"name":"uint256","nodeType":"ElementaryTypeName","src":"22017:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21962:75:9"},"scope":5145,"src":"21851:358:9","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":3338,"nodeType":"Block","src":"22542:120:9","statements":[{"assignments":[null,3327],"declarations":[null,{"constant":false,"id":3327,"mutability":"mutable","name":"cfa","nameLocation":"22580:3:9","nodeType":"VariableDeclaration","scope":3338,"src":"22555:28:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":3326,"nodeType":"UserDefinedTypeName","pathNode":{"id":3325,"name":"IConstantFlowAgreementV1","nameLocations":["22555:24:9"],"nodeType":"IdentifierPath","referencedDeclaration":5555,"src":"22555:24:9"},"referencedDeclaration":5555,"src":"22555:24:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"id":3331,"initialValue":{"arguments":[{"id":3329,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3318,"src":"22602:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}],"id":3328,"name":"_getHostAndCFA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5062,"src":"22587:14:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_ISuperToken_$7015_$returns$_t_contract$_ISuperfluid_$7667_$_t_contract$_IConstantFlowAgreementV1_$5555_$","typeString":"function (contract ISuperToken) view returns (contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"id":3330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22587:21:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7667_$_t_contract$_IConstantFlowAgreementV1_$5555_$","typeString":"tuple(contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"22552:56:9"},{"expression":{"arguments":[{"id":3334,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3318,"src":"22640:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},{"id":3335,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3320,"src":"22647:7:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":3332,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3327,"src":"22625:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"id":3333,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22629:10:9","memberName":"getNetFlow","nodeType":"MemberAccess","referencedDeclaration":5485,"src":"22625:14:9","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_contract$_ISuperfluidToken_$8082_$_t_address_$returns$_t_int96_$","typeString":"function (contract ISuperfluidToken,address) view external returns (int96)"}},"id":3336,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22625:30:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"functionReturnParameters":3324,"id":3337,"nodeType":"Return","src":"22618:37:9"}]},"documentation":{"id":3315,"nodeType":"StructuredDocumentation","src":"22215:211:9","text":" @dev get net flow rate for given account for given token\n @param token Super token address\n @param account Account to query\n @return flowRate The net flow rate of the account"},"id":3339,"implemented":true,"kind":"function","modifiers":[],"name":"getNetFlowRate","nameLocation":"22440:14:9","nodeType":"FunctionDefinition","parameters":{"id":3321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3318,"mutability":"mutable","name":"token","nameLocation":"22467:5:9","nodeType":"VariableDeclaration","scope":3339,"src":"22455:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":3317,"nodeType":"UserDefinedTypeName","pathNode":{"id":3316,"name":"ISuperToken","nameLocations":["22455:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"22455:11:9"},"referencedDeclaration":7015,"src":"22455:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":3320,"mutability":"mutable","name":"account","nameLocation":"22482:7:9","nodeType":"VariableDeclaration","scope":3339,"src":"22474:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3319,"name":"address","nodeType":"ElementaryTypeName","src":"22474:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"22454:36:9"},"returnParameters":{"id":3324,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3323,"mutability":"mutable","name":"flowRate","nameLocation":"22528:8:9","nodeType":"VariableDeclaration","scope":3339,"src":"22522:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":3322,"name":"int96","nodeType":"ElementaryTypeName","src":"22522:5:9","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"22521:16:9"},"scope":5145,"src":"22431:231:9","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":3369,"nodeType":"Block","src":"23275:128:9","statements":[{"assignments":[null,3358],"declarations":[null,{"constant":false,"id":3358,"mutability":"mutable","name":"cfa","nameLocation":"23313:3:9","nodeType":"VariableDeclaration","scope":3369,"src":"23288:28:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":3357,"nodeType":"UserDefinedTypeName","pathNode":{"id":3356,"name":"IConstantFlowAgreementV1","nameLocations":["23288:24:9"],"nodeType":"IdentifierPath","referencedDeclaration":5555,"src":"23288:24:9"},"referencedDeclaration":5555,"src":"23288:24:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"id":3362,"initialValue":{"arguments":[{"id":3360,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3343,"src":"23335:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}],"id":3359,"name":"_getHostAndCFA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5062,"src":"23320:14:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_ISuperToken_$7015_$returns$_t_contract$_ISuperfluid_$7667_$_t_contract$_IConstantFlowAgreementV1_$5555_$","typeString":"function (contract ISuperToken) view returns (contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"id":3361,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23320:21:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7667_$_t_contract$_IConstantFlowAgreementV1_$5555_$","typeString":"tuple(contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"23285:56:9"},{"expression":{"arguments":[{"id":3365,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3343,"src":"23381:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},{"id":3366,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3345,"src":"23388:7:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":3363,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3358,"src":"23358:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"id":3364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23362:18:9","memberName":"getAccountFlowInfo","nodeType":"MemberAccess","referencedDeclaration":5474,"src":"23358:22:9","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_contract$_ISuperfluidToken_$8082_$_t_address_$returns$_t_uint256_$_t_int96_$_t_uint256_$_t_uint256_$","typeString":"function (contract ISuperfluidToken,address) view external returns (uint256,int96,uint256,uint256)"}},"id":3367,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23358:38:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_int96_$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,int96,uint256,uint256)"}},"functionReturnParameters":3355,"id":3368,"nodeType":"Return","src":"23351:45:9"}]},"documentation":{"id":3340,"nodeType":"StructuredDocumentation","src":"22668:424:9","text":" @dev get the aggregated flow info of the account\n @param token Super token address\n @param account Account to query\n @return lastUpdated Timestamp of the last change of the net flow\n @return flowRate The net flow rate of token for account\n @return deposit The sum of all deposits for account's flows\n @return owedDeposit The sum of all owed deposits for account's flows"},"id":3370,"implemented":true,"kind":"function","modifiers":[],"name":"getNetFlowInfo","nameLocation":"23106:14:9","nodeType":"FunctionDefinition","parameters":{"id":3346,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3343,"mutability":"mutable","name":"token","nameLocation":"23133:5:9","nodeType":"VariableDeclaration","scope":3370,"src":"23121:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":3342,"nodeType":"UserDefinedTypeName","pathNode":{"id":3341,"name":"ISuperToken","nameLocations":["23121:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"23121:11:9"},"referencedDeclaration":7015,"src":"23121:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":3345,"mutability":"mutable","name":"account","nameLocation":"23148:7:9","nodeType":"VariableDeclaration","scope":3370,"src":"23140:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3344,"name":"address","nodeType":"ElementaryTypeName","src":"23140:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"23120:36:9"},"returnParameters":{"id":3355,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3348,"mutability":"mutable","name":"lastUpdated","nameLocation":"23204:11:9","nodeType":"VariableDeclaration","scope":3370,"src":"23196:19:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3347,"name":"uint256","nodeType":"ElementaryTypeName","src":"23196:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3350,"mutability":"mutable","name":"flowRate","nameLocation":"23223:8:9","nodeType":"VariableDeclaration","scope":3370,"src":"23217:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":3349,"name":"int96","nodeType":"ElementaryTypeName","src":"23217:5:9","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"},{"constant":false,"id":3352,"mutability":"mutable","name":"deposit","nameLocation":"23241:7:9","nodeType":"VariableDeclaration","scope":3370,"src":"23233:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3351,"name":"uint256","nodeType":"ElementaryTypeName","src":"23233:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3354,"mutability":"mutable","name":"owedDeposit","nameLocation":"23258:11:9","nodeType":"VariableDeclaration","scope":3370,"src":"23250:19:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3353,"name":"uint256","nodeType":"ElementaryTypeName","src":"23250:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23195:75:9"},"scope":5145,"src":"23097:306:9","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":3394,"nodeType":"Block","src":"23814:140:9","statements":[{"assignments":[null,3383],"declarations":[null,{"constant":false,"id":3383,"mutability":"mutable","name":"cfa","nameLocation":"23852:3:9","nodeType":"VariableDeclaration","scope":3394,"src":"23827:28:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":3382,"nodeType":"UserDefinedTypeName","pathNode":{"id":3381,"name":"IConstantFlowAgreementV1","nameLocations":["23827:24:9"],"nodeType":"IdentifierPath","referencedDeclaration":5555,"src":"23827:24:9"},"referencedDeclaration":5555,"src":"23827:24:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"id":3387,"initialValue":{"arguments":[{"id":3385,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3374,"src":"23874:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}],"id":3384,"name":"_getHostAndCFA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5062,"src":"23859:14:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_ISuperToken_$7015_$returns$_t_contract$_ISuperfluid_$7667_$_t_contract$_IConstantFlowAgreementV1_$5555_$","typeString":"function (contract ISuperToken) view returns (contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"id":3386,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23859:21:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7667_$_t_contract$_IConstantFlowAgreementV1_$5555_$","typeString":"tuple(contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"23824:56:9"},{"expression":{"arguments":[{"id":3390,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3374,"src":"23931:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},{"id":3391,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3376,"src":"23938:8:9","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},{"typeIdentifier":"t_int96","typeString":"int96"}],"expression":{"id":3388,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3383,"src":"23897:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"id":3389,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23901:29:9","memberName":"getDepositRequiredForFlowRate","nodeType":"MemberAccess","referencedDeclaration":5228,"src":"23897:33:9","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_contract$_ISuperfluidToken_$8082_$_t_int96_$returns$_t_uint256_$","typeString":"function (contract ISuperfluidToken,int96) view external returns (uint256)"}},"id":3392,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23897:50:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3380,"id":3393,"nodeType":"Return","src":"23890:57:9"}]},"documentation":{"id":3371,"nodeType":"StructuredDocumentation","src":"23409:273:9","text":" @dev calculate buffer for a flow rate\n @param token The token used in flow\n @param flowRate The flowrate to calculate the needed buffer for\n @return bufferAmount The buffer amount based on flowRate, liquidationPeriod and minimum deposit"},"id":3395,"implemented":true,"kind":"function","modifiers":[],"name":"getBufferAmountByFlowRate","nameLocation":"23696:25:9","nodeType":"FunctionDefinition","parameters":{"id":3377,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3374,"mutability":"mutable","name":"token","nameLocation":"23734:5:9","nodeType":"VariableDeclaration","scope":3395,"src":"23722:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":3373,"nodeType":"UserDefinedTypeName","pathNode":{"id":3372,"name":"ISuperToken","nameLocations":["23722:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"23722:11:9"},"referencedDeclaration":7015,"src":"23722:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":3376,"mutability":"mutable","name":"flowRate","nameLocation":"23747:8:9","nodeType":"VariableDeclaration","scope":3395,"src":"23741:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":3375,"name":"int96","nodeType":"ElementaryTypeName","src":"23741:5:9","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"23721:35:9"},"returnParameters":{"id":3380,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3379,"mutability":"mutable","name":"bufferAmount","nameLocation":"23796:12:9","nodeType":"VariableDeclaration","scope":3395,"src":"23788:20:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3378,"name":"uint256","nodeType":"ElementaryTypeName","src":"23788:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23787:22:9"},"scope":5145,"src":"23687:267:9","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":3472,"nodeType":"Block","src":"24713:421:9","statements":[{"assignments":[null,3416],"declarations":[null,{"constant":false,"id":3416,"mutability":"mutable","name":"cfa","nameLocation":"24751:3:9","nodeType":"VariableDeclaration","scope":3472,"src":"24726:28:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":3415,"nodeType":"UserDefinedTypeName","pathNode":{"id":3414,"name":"IConstantFlowAgreementV1","nameLocations":["24726:24:9"],"nodeType":"IdentifierPath","referencedDeclaration":5555,"src":"24726:24:9"},"referencedDeclaration":5555,"src":"24726:24:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"id":3420,"initialValue":{"arguments":[{"id":3418,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3399,"src":"24773:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}],"id":3417,"name":"_getHostAndCFA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5062,"src":"24758:14:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_ISuperToken_$7015_$returns$_t_contract$_ISuperfluid_$7667_$_t_contract$_IConstantFlowAgreementV1_$5555_$","typeString":"function (contract ISuperToken) view returns (contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"id":3419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24758:21:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7667_$_t_contract$_IConstantFlowAgreementV1_$5555_$","typeString":"tuple(contract ISuperfluid,contract IConstantFlowAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"24723:56:9"},{"assignments":[3422],"declarations":[{"constant":false,"id":3422,"mutability":"mutable","name":"permissionsBitmask","nameLocation":"24795:18:9","nodeType":"VariableDeclaration","scope":3472,"src":"24789:24:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3421,"name":"uint8","nodeType":"ElementaryTypeName","src":"24789:5:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":3423,"nodeType":"VariableDeclarationStatement","src":"24789:24:9"},{"expression":{"id":3433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[null,{"id":3424,"name":"permissionsBitmask","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3422,"src":"24826:18:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":3425,"name":"flowRateAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3412,"src":"24846:17:9","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}}],"id":3426,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"24823:41:9","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_uint8_$_t_int96_$","typeString":"tuple(,uint8,int96)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3429,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3399,"src":"24891:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},{"id":3430,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3401,"src":"24898:6:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3431,"name":"flowOperator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3403,"src":"24906:12:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":3427,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3416,"src":"24867:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"id":3428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24871:19:9","memberName":"getFlowOperatorData","nodeType":"MemberAccess","referencedDeclaration":5344,"src":"24867:23:9","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_address_$returns$_t_bytes32_$_t_uint8_$_t_int96_$","typeString":"function (contract ISuperfluidToken,address,address) view external returns (bytes32,uint8,int96)"}},"id":3432,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24867:52:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_uint8_$_t_int96_$","typeString":"tuple(bytes32,uint8,int96)"}},"src":"24823:96:9","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3434,"nodeType":"ExpressionStatement","src":"24823:96:9"},{"expression":{"id":3444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3435,"name":"allowCreate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3406,"src":"24929:11:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":3440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":3438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3436,"name":"permissionsBitmask","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3422,"src":"24943:18:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"31","id":3437,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24964:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24943:22:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":3439,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24969:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24943:27:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"66616c7365","id":3442,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"24980:5:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"id":3443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"24943:42:9","trueExpression":{"hexValue":"74727565","id":3441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"24973:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"24929:56:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3445,"nodeType":"ExpressionStatement","src":"24929:56:9"},{"expression":{"id":3457,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3446,"name":"allowUpdate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3408,"src":"24995:11:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":3453,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":3451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":3449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3447,"name":"permissionsBitmask","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3422,"src":"25009:18:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":3448,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25031:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25009:23:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"31","id":3450,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25035:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25009:27:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":3452,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25040:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25009:32:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"66616c7365","id":3455,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"25051:5:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"id":3456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"25009:47:9","trueExpression":{"hexValue":"74727565","id":3454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"25044:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"24995:61:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3458,"nodeType":"ExpressionStatement","src":"24995:61:9"},{"expression":{"id":3470,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3459,"name":"allowDelete","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3410,"src":"25066:11:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":3466,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":3464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":3462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3460,"name":"permissionsBitmask","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3422,"src":"25080:18:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":3461,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25102:1:9","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"25080:23:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"31","id":3463,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25106:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25080:27:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":3465,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25111:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25080:32:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"66616c7365","id":3468,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"25122:5:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"id":3469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"25080:47:9","trueExpression":{"hexValue":"74727565","id":3467,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"25115:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"25066:61:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3471,"nodeType":"ExpressionStatement","src":"25066:61:9"}]},"documentation":{"id":3396,"nodeType":"StructuredDocumentation","src":"23960:541:9","text":" @dev get existing flow permissions\n @param token The token used in flow\n @param sender sender of a flow\n @param flowOperator the address we are checking permissions of for sender & token\n @return allowCreate is true if the flowOperator can create flows\n @return allowUpdate is true if the flowOperator can update flows\n @return allowDelete is true if the flowOperator can delete flows\n @return flowRateAllowance The flow rate allowance the flowOperator is granted (only goes down)"},"id":3473,"implemented":true,"kind":"function","modifiers":[],"name":"getFlowPermissions","nameLocation":"24515:18:9","nodeType":"FunctionDefinition","parameters":{"id":3404,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3399,"mutability":"mutable","name":"token","nameLocation":"24546:5:9","nodeType":"VariableDeclaration","scope":3473,"src":"24534:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":3398,"nodeType":"UserDefinedTypeName","pathNode":{"id":3397,"name":"ISuperToken","nameLocations":["24534:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"24534:11:9"},"referencedDeclaration":7015,"src":"24534:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":3401,"mutability":"mutable","name":"sender","nameLocation":"24561:6:9","nodeType":"VariableDeclaration","scope":3473,"src":"24553:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3400,"name":"address","nodeType":"ElementaryTypeName","src":"24553:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3403,"mutability":"mutable","name":"flowOperator","nameLocation":"24577:12:9","nodeType":"VariableDeclaration","scope":3473,"src":"24569:20:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3402,"name":"address","nodeType":"ElementaryTypeName","src":"24569:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"24533:57:9"},"returnParameters":{"id":3413,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3406,"mutability":"mutable","name":"allowCreate","nameLocation":"24635:11:9","nodeType":"VariableDeclaration","scope":3473,"src":"24630:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3405,"name":"bool","nodeType":"ElementaryTypeName","src":"24630:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3408,"mutability":"mutable","name":"allowUpdate","nameLocation":"24653:11:9","nodeType":"VariableDeclaration","scope":3473,"src":"24648:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3407,"name":"bool","nodeType":"ElementaryTypeName","src":"24648:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3410,"mutability":"mutable","name":"allowDelete","nameLocation":"24671:11:9","nodeType":"VariableDeclaration","scope":3473,"src":"24666:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3409,"name":"bool","nodeType":"ElementaryTypeName","src":"24666:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3412,"mutability":"mutable","name":"flowRateAllowance","nameLocation":"24690:17:9","nodeType":"VariableDeclaration","scope":3473,"src":"24684:23:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":3411,"name":"int96","nodeType":"ElementaryTypeName","src":"24684:5:9","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"24629:79:9"},"scope":5145,"src":"24506:628:9","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":3506,"nodeType":"Block","src":"25883:136:9","statements":[{"assignments":[null,3494],"declarations":[null,{"constant":false,"id":3494,"mutability":"mutable","name":"ida","nameLocation":"25928:3:9","nodeType":"VariableDeclaration","scope":3506,"src":"25896:35:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"},"typeName":{"id":3493,"nodeType":"UserDefinedTypeName","pathNode":{"id":3492,"name":"IInstantDistributionAgreementV1","nameLocations":["25896:31:9"],"nodeType":"IdentifierPath","referencedDeclaration":5961,"src":"25896:31:9"},"referencedDeclaration":5961,"src":"25896:31:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"visibility":"internal"}],"id":3498,"initialValue":{"arguments":[{"id":3496,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3477,"src":"25950:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}],"id":3495,"name":"_getHostAndIDA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5144,"src":"25935:14:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_ISuperToken_$7015_$returns$_t_contract$_ISuperfluid_$7667_$_t_contract$_IInstantDistributionAgreementV1_$5961_$","typeString":"function (contract ISuperToken) view returns (contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"id":3497,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25935:21:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7667_$_t_contract$_IInstantDistributionAgreementV1_$5961_$","typeString":"tuple(contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"25893:63:9"},{"expression":{"arguments":[{"id":3501,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3477,"src":"25986:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},{"id":3502,"name":"publisher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3479,"src":"25993:9:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3503,"name":"indexId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3481,"src":"26004:7:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"expression":{"id":3499,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3494,"src":"25973:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"id":3500,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25977:8:9","memberName":"getIndex","nodeType":"MemberAccess","referencedDeclaration":5638,"src":"25973:12:9","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_uint32_$returns$_t_bool_$_t_uint128_$_t_uint128_$_t_uint128_$","typeString":"function (contract ISuperfluidToken,address,uint32) view external returns (bool,uint128,uint128,uint128)"}},"id":3504,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25973:39:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint128_$_t_uint128_$_t_uint128_$","typeString":"tuple(bool,uint128,uint128,uint128)"}},"functionReturnParameters":3491,"id":3505,"nodeType":"Return","src":"25966:46:9"}]},"documentation":{"id":3474,"nodeType":"StructuredDocumentation","src":"25212:464:9","text":" @dev Gets an index by its ID and publisher.\n @param token Super token used with the index.\n @param publisher Publisher of the index.\n @param indexId ID of the index.\n @return exist True if the index exists.\n @return indexValue Total value of the index.\n @return totalUnitsApproved Units of the index approved by subscribers.\n @return totalUnitsPending Units of teh index not yet approved by subscribers."},"id":3507,"implemented":true,"kind":"function","modifiers":[],"name":"getIndex","nameLocation":"25690:8:9","nodeType":"FunctionDefinition","parameters":{"id":3482,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3477,"mutability":"mutable","name":"token","nameLocation":"25711:5:9","nodeType":"VariableDeclaration","scope":3507,"src":"25699:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":3476,"nodeType":"UserDefinedTypeName","pathNode":{"id":3475,"name":"ISuperToken","nameLocations":["25699:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"25699:11:9"},"referencedDeclaration":7015,"src":"25699:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":3479,"mutability":"mutable","name":"publisher","nameLocation":"25726:9:9","nodeType":"VariableDeclaration","scope":3507,"src":"25718:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3478,"name":"address","nodeType":"ElementaryTypeName","src":"25718:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3481,"mutability":"mutable","name":"indexId","nameLocation":"25744:7:9","nodeType":"VariableDeclaration","scope":3507,"src":"25737:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":3480,"name":"uint32","nodeType":"ElementaryTypeName","src":"25737:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"25698:54:9"},"returnParameters":{"id":3491,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3484,"mutability":"mutable","name":"exist","nameLocation":"25797:5:9","nodeType":"VariableDeclaration","scope":3507,"src":"25792:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3483,"name":"bool","nodeType":"ElementaryTypeName","src":"25792:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3486,"mutability":"mutable","name":"indexValue","nameLocation":"25812:10:9","nodeType":"VariableDeclaration","scope":3507,"src":"25804:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3485,"name":"uint128","nodeType":"ElementaryTypeName","src":"25804:7:9","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3488,"mutability":"mutable","name":"totalUnitsApproved","nameLocation":"25832:18:9","nodeType":"VariableDeclaration","scope":3507,"src":"25824:26:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3487,"name":"uint128","nodeType":"ElementaryTypeName","src":"25824:7:9","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3490,"mutability":"mutable","name":"totalUnitsPending","nameLocation":"25860:17:9","nodeType":"VariableDeclaration","scope":3507,"src":"25852:25:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3489,"name":"uint128","nodeType":"ElementaryTypeName","src":"25852:7:9","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"25791:87:9"},"scope":5145,"src":"25681:338:9","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":3539,"nodeType":"Block","src":"26692:157:9","statements":[{"assignments":[null,3526],"declarations":[null,{"constant":false,"id":3526,"mutability":"mutable","name":"ida","nameLocation":"26737:3:9","nodeType":"VariableDeclaration","scope":3539,"src":"26705:35:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"},"typeName":{"id":3525,"nodeType":"UserDefinedTypeName","pathNode":{"id":3524,"name":"IInstantDistributionAgreementV1","nameLocations":["26705:31:9"],"nodeType":"IdentifierPath","referencedDeclaration":5961,"src":"26705:31:9"},"referencedDeclaration":5961,"src":"26705:31:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"visibility":"internal"}],"id":3530,"initialValue":{"arguments":[{"id":3528,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3511,"src":"26759:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}],"id":3527,"name":"_getHostAndIDA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5144,"src":"26744:14:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_ISuperToken_$7015_$returns$_t_contract$_ISuperfluid_$7667_$_t_contract$_IInstantDistributionAgreementV1_$5961_$","typeString":"function (contract ISuperToken) view returns (contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"id":3529,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26744:21:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7667_$_t_contract$_IInstantDistributionAgreementV1_$5961_$","typeString":"tuple(contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"26702:63:9"},{"expression":{"arguments":[{"id":3533,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3511,"src":"26808:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},{"id":3534,"name":"publisher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3513,"src":"26815:9:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3535,"name":"indexId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3515,"src":"26826:7:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":3536,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3517,"src":"26835:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3531,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3526,"src":"26782:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"id":3532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26786:21:9","memberName":"calculateDistribution","nodeType":"MemberAccess","referencedDeclaration":5655,"src":"26782:25:9","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_uint32_$_t_uint256_$returns$_t_uint256_$_t_uint128_$","typeString":"function (contract ISuperfluidToken,address,uint32,uint256) view external returns (uint256,uint128)"}},"id":3537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26782:60:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint128_$","typeString":"tuple(uint256,uint128)"}},"functionReturnParameters":3523,"id":3538,"nodeType":"Return","src":"26775:67:9"}]},"documentation":{"id":3508,"nodeType":"StructuredDocumentation","src":"26025:473:9","text":" @dev Calculates the distribution amount based on the amount of tokens desired to distribute.\n @param token Super token used with the index.\n @param publisher Publisher of the index.\n @param indexId ID of the index.\n @param amount Amount of tokens desired to distribute.\n @return actualAmount Amount to be distributed with correct rounding.\n @return newIndexValue The index value after the distribution would be called."},"id":3540,"implemented":true,"kind":"function","modifiers":[],"name":"calculateDistribution","nameLocation":"26512:21:9","nodeType":"FunctionDefinition","parameters":{"id":3518,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3511,"mutability":"mutable","name":"token","nameLocation":"26546:5:9","nodeType":"VariableDeclaration","scope":3540,"src":"26534:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":3510,"nodeType":"UserDefinedTypeName","pathNode":{"id":3509,"name":"ISuperToken","nameLocations":["26534:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"26534:11:9"},"referencedDeclaration":7015,"src":"26534:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":3513,"mutability":"mutable","name":"publisher","nameLocation":"26561:9:9","nodeType":"VariableDeclaration","scope":3540,"src":"26553:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3512,"name":"address","nodeType":"ElementaryTypeName","src":"26553:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3515,"mutability":"mutable","name":"indexId","nameLocation":"26579:7:9","nodeType":"VariableDeclaration","scope":3540,"src":"26572:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":3514,"name":"uint32","nodeType":"ElementaryTypeName","src":"26572:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":3517,"mutability":"mutable","name":"amount","nameLocation":"26596:6:9","nodeType":"VariableDeclaration","scope":3540,"src":"26588:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3516,"name":"uint256","nodeType":"ElementaryTypeName","src":"26588:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26533:70:9"},"returnParameters":{"id":3523,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3520,"mutability":"mutable","name":"actualAmount","nameLocation":"26651:12:9","nodeType":"VariableDeclaration","scope":3540,"src":"26643:20:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3519,"name":"uint256","nodeType":"ElementaryTypeName","src":"26643:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3522,"mutability":"mutable","name":"newIndexValue","nameLocation":"26673:13:9","nodeType":"VariableDeclaration","scope":3540,"src":"26665:21:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3521,"name":"uint128","nodeType":"ElementaryTypeName","src":"26665:7:9","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"26642:45:9"},"scope":5145,"src":"26503:346:9","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":3571,"nodeType":"Block","src":"27435:137:9","statements":[{"assignments":[null,3560],"declarations":[null,{"constant":false,"id":3560,"mutability":"mutable","name":"ida","nameLocation":"27480:3:9","nodeType":"VariableDeclaration","scope":3571,"src":"27448:35:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"},"typeName":{"id":3559,"nodeType":"UserDefinedTypeName","pathNode":{"id":3558,"name":"IInstantDistributionAgreementV1","nameLocations":["27448:31:9"],"nodeType":"IdentifierPath","referencedDeclaration":5961,"src":"27448:31:9"},"referencedDeclaration":5961,"src":"27448:31:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"visibility":"internal"}],"id":3564,"initialValue":{"arguments":[{"id":3562,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3544,"src":"27502:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}],"id":3561,"name":"_getHostAndIDA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5144,"src":"27487:14:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_ISuperToken_$7015_$returns$_t_contract$_ISuperfluid_$7667_$_t_contract$_IInstantDistributionAgreementV1_$5961_$","typeString":"function (contract ISuperToken) view returns (contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"id":3563,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27487:21:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7667_$_t_contract$_IInstantDistributionAgreementV1_$5961_$","typeString":"tuple(contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"27445:63:9"},{"expression":{"arguments":[{"id":3567,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3544,"src":"27547:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},{"id":3568,"name":"subscriber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3546,"src":"27554:10:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":3565,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3560,"src":"27525:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"id":3566,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27529:17:9","memberName":"listSubscriptions","nodeType":"MemberAccess","referencedDeclaration":5898,"src":"27525:21:9","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_contract$_ISuperfluidToken_$8082_$_t_address_$returns$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint32_$dyn_memory_ptr_$_t_array$_t_uint128_$dyn_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address) view external returns (address[] memory,uint32[] memory,uint128[] memory)"}},"id":3569,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27525:40:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint32_$dyn_memory_ptr_$_t_array$_t_uint128_$dyn_memory_ptr_$","typeString":"tuple(address[] memory,uint32[] memory,uint128[] memory)"}},"functionReturnParameters":3557,"id":3570,"nodeType":"Return","src":"27518:47:9"}]},"documentation":{"id":3541,"nodeType":"StructuredDocumentation","src":"26855:315:9","text":" @dev List all subscriptions of an address\n @param token Super token used in the indexes listed.\n @param subscriber Subscriber address.\n @return publishers Publishers of the indices.\n @return indexIds IDs of the indices.\n @return unitsList Units owned of the indices."},"id":3572,"implemented":true,"kind":"function","modifiers":[],"name":"listSubscriptions","nameLocation":"27184:17:9","nodeType":"FunctionDefinition","parameters":{"id":3547,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3544,"mutability":"mutable","name":"token","nameLocation":"27223:5:9","nodeType":"VariableDeclaration","scope":3572,"src":"27211:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":3543,"nodeType":"UserDefinedTypeName","pathNode":{"id":3542,"name":"ISuperToken","nameLocations":["27211:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"27211:11:9"},"referencedDeclaration":7015,"src":"27211:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":3546,"mutability":"mutable","name":"subscriber","nameLocation":"27246:10:9","nodeType":"VariableDeclaration","scope":3572,"src":"27238:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3545,"name":"address","nodeType":"ElementaryTypeName","src":"27238:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"27201:61:9"},"returnParameters":{"id":3557,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3550,"mutability":"mutable","name":"publishers","nameLocation":"27332:10:9","nodeType":"VariableDeclaration","scope":3572,"src":"27315:27:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":3548,"name":"address","nodeType":"ElementaryTypeName","src":"27315:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3549,"nodeType":"ArrayTypeName","src":"27315:9:9","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":3553,"mutability":"mutable","name":"indexIds","nameLocation":"27372:8:9","nodeType":"VariableDeclaration","scope":3572,"src":"27356:24:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[]"},"typeName":{"baseType":{"id":3551,"name":"uint32","nodeType":"ElementaryTypeName","src":"27356:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":3552,"nodeType":"ArrayTypeName","src":"27356:8:9","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_storage_ptr","typeString":"uint32[]"}},"visibility":"internal"},{"constant":false,"id":3556,"mutability":"mutable","name":"unitsList","nameLocation":"27411:9:9","nodeType":"VariableDeclaration","scope":3572,"src":"27394:26:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint128_$dyn_memory_ptr","typeString":"uint128[]"},"typeName":{"baseType":{"id":3554,"name":"uint128","nodeType":"ElementaryTypeName","src":"27394:7:9","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":3555,"nodeType":"ArrayTypeName","src":"27394:9:9","typeDescriptions":{"typeIdentifier":"t_array$_t_uint128_$dyn_storage_ptr","typeString":"uint128[]"}},"visibility":"internal"}],"src":"27301:129:9"},"scope":5145,"src":"27175:397:9","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":3608,"nodeType":"Block","src":"28347:155:9","statements":[{"assignments":[null,3595],"declarations":[null,{"constant":false,"id":3595,"mutability":"mutable","name":"ida","nameLocation":"28392:3:9","nodeType":"VariableDeclaration","scope":3608,"src":"28360:35:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"},"typeName":{"id":3594,"nodeType":"UserDefinedTypeName","pathNode":{"id":3593,"name":"IInstantDistributionAgreementV1","nameLocations":["28360:31:9"],"nodeType":"IdentifierPath","referencedDeclaration":5961,"src":"28360:31:9"},"referencedDeclaration":5961,"src":"28360:31:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"visibility":"internal"}],"id":3599,"initialValue":{"arguments":[{"id":3597,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3576,"src":"28414:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}],"id":3596,"name":"_getHostAndIDA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5144,"src":"28399:14:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_ISuperToken_$7015_$returns$_t_contract$_ISuperfluid_$7667_$_t_contract$_IInstantDistributionAgreementV1_$5961_$","typeString":"function (contract ISuperToken) view returns (contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"id":3598,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28399:21:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7667_$_t_contract$_IInstantDistributionAgreementV1_$5961_$","typeString":"tuple(contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"28357:63:9"},{"expression":{"arguments":[{"id":3602,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3576,"src":"28457:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},{"id":3603,"name":"publisher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3578,"src":"28464:9:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3604,"name":"indexId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3580,"src":"28475:7:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":3605,"name":"subscriber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3582,"src":"28484:10:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":3600,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3595,"src":"28437:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"id":3601,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"28441:15:9","memberName":"getSubscription","nodeType":"MemberAccess","referencedDeclaration":5861,"src":"28437:19:9","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_uint32_$_t_address_$returns$_t_bool_$_t_bool_$_t_uint128_$_t_uint256_$","typeString":"function (contract ISuperfluidToken,address,uint32,address) view external returns (bool,bool,uint128,uint256)"}},"id":3606,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28437:58:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bool_$_t_uint128_$_t_uint256_$","typeString":"tuple(bool,bool,uint128,uint256)"}},"functionReturnParameters":3592,"id":3607,"nodeType":"Return","src":"28430:65:9"}]},"documentation":{"id":3573,"nodeType":"StructuredDocumentation","src":"27578:551:9","text":" @dev Gets subscription by publisher, index id, and subscriber.\n @param token Super token used with the index.\n @param publisher Publisher of the index.\n @param indexId ID of the index.\n @param subscriber Subscriber to the index.\n @return exist True if the subscription exists.\n @return approved True if the subscription has been approved by the subscriber.\n @return units Units held by the subscriber\n @return pendingDistribution If not approved, the amount to be claimed on approval."},"id":3609,"implemented":true,"kind":"function","modifiers":[],"name":"getSubscription","nameLocation":"28143:15:9","nodeType":"FunctionDefinition","parameters":{"id":3583,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3576,"mutability":"mutable","name":"token","nameLocation":"28171:5:9","nodeType":"VariableDeclaration","scope":3609,"src":"28159:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":3575,"nodeType":"UserDefinedTypeName","pathNode":{"id":3574,"name":"ISuperToken","nameLocations":["28159:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"28159:11:9"},"referencedDeclaration":7015,"src":"28159:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":3578,"mutability":"mutable","name":"publisher","nameLocation":"28186:9:9","nodeType":"VariableDeclaration","scope":3609,"src":"28178:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3577,"name":"address","nodeType":"ElementaryTypeName","src":"28178:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3580,"mutability":"mutable","name":"indexId","nameLocation":"28204:7:9","nodeType":"VariableDeclaration","scope":3609,"src":"28197:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":3579,"name":"uint32","nodeType":"ElementaryTypeName","src":"28197:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":3582,"mutability":"mutable","name":"subscriber","nameLocation":"28221:10:9","nodeType":"VariableDeclaration","scope":3609,"src":"28213:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3581,"name":"address","nodeType":"ElementaryTypeName","src":"28213:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"28158:74:9"},"returnParameters":{"id":3592,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3585,"mutability":"mutable","name":"exist","nameLocation":"28277:5:9","nodeType":"VariableDeclaration","scope":3609,"src":"28272:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3584,"name":"bool","nodeType":"ElementaryTypeName","src":"28272:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3587,"mutability":"mutable","name":"approved","nameLocation":"28289:8:9","nodeType":"VariableDeclaration","scope":3609,"src":"28284:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3586,"name":"bool","nodeType":"ElementaryTypeName","src":"28284:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3589,"mutability":"mutable","name":"units","nameLocation":"28307:5:9","nodeType":"VariableDeclaration","scope":3609,"src":"28299:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3588,"name":"uint128","nodeType":"ElementaryTypeName","src":"28299:7:9","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3591,"mutability":"mutable","name":"pendingDistribution","nameLocation":"28322:19:9","nodeType":"VariableDeclaration","scope":3609,"src":"28314:27:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3590,"name":"uint256","nodeType":"ElementaryTypeName","src":"28314:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"28271:71:9"},"scope":5145,"src":"28134:368:9","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":3640,"nodeType":"Block","src":"29297:140:9","statements":[{"assignments":[null,3629],"declarations":[null,{"constant":false,"id":3629,"mutability":"mutable","name":"ida","nameLocation":"29342:3:9","nodeType":"VariableDeclaration","scope":3640,"src":"29310:35:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"},"typeName":{"id":3628,"nodeType":"UserDefinedTypeName","pathNode":{"id":3627,"name":"IInstantDistributionAgreementV1","nameLocations":["29310:31:9"],"nodeType":"IdentifierPath","referencedDeclaration":5961,"src":"29310:31:9"},"referencedDeclaration":5961,"src":"29310:31:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"visibility":"internal"}],"id":3633,"initialValue":{"arguments":[{"id":3631,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3612,"src":"29364:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}],"id":3630,"name":"_getHostAndIDA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5144,"src":"29349:14:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_ISuperToken_$7015_$returns$_t_contract$_ISuperfluid_$7667_$_t_contract$_IInstantDistributionAgreementV1_$5961_$","typeString":"function (contract ISuperToken) view returns (contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"id":3632,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29349:21:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7667_$_t_contract$_IInstantDistributionAgreementV1_$5961_$","typeString":"tuple(contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"29307:63:9"},{"expression":{"arguments":[{"id":3636,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3612,"src":"29411:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},{"id":3637,"name":"agreementId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3614,"src":"29418:11:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":3634,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3629,"src":"29387:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"id":3635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"29391:19:9","memberName":"getSubscriptionByID","nodeType":"MemberAccess","referencedDeclaration":5880,"src":"29387:23:9","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_contract$_ISuperfluidToken_$8082_$_t_bytes32_$returns$_t_address_$_t_uint32_$_t_bool_$_t_uint128_$_t_uint256_$","typeString":"function (contract ISuperfluidToken,bytes32) view external returns (address,uint32,bool,uint128,uint256)"}},"id":3638,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29387:43:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint32_$_t_bool_$_t_uint128_$_t_uint256_$","typeString":"tuple(address,uint32,bool,uint128,uint256)"}},"functionReturnParameters":3626,"id":3639,"nodeType":"Return","src":"29380:50:9"}]},"id":3641,"implemented":true,"kind":"function","modifiers":[],"name":"getSubscriptionByID","nameLocation":"29030:19:9","nodeType":"FunctionDefinition","parameters":{"id":3615,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3612,"mutability":"mutable","name":"token","nameLocation":"29062:5:9","nodeType":"VariableDeclaration","scope":3641,"src":"29050:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":3611,"nodeType":"UserDefinedTypeName","pathNode":{"id":3610,"name":"ISuperToken","nameLocations":["29050:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"29050:11:9"},"referencedDeclaration":7015,"src":"29050:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":3614,"mutability":"mutable","name":"agreementId","nameLocation":"29077:11:9","nodeType":"VariableDeclaration","scope":3641,"src":"29069:19:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3613,"name":"bytes32","nodeType":"ElementaryTypeName","src":"29069:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"29049:40:9"},"returnParameters":{"id":3626,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3617,"mutability":"mutable","name":"publisher","nameLocation":"29150:9:9","nodeType":"VariableDeclaration","scope":3641,"src":"29142:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3616,"name":"address","nodeType":"ElementaryTypeName","src":"29142:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3619,"mutability":"mutable","name":"indexId","nameLocation":"29180:7:9","nodeType":"VariableDeclaration","scope":3641,"src":"29173:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":3618,"name":"uint32","nodeType":"ElementaryTypeName","src":"29173:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":3621,"mutability":"mutable","name":"approved","nameLocation":"29206:8:9","nodeType":"VariableDeclaration","scope":3641,"src":"29201:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3620,"name":"bool","nodeType":"ElementaryTypeName","src":"29201:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3623,"mutability":"mutable","name":"units","nameLocation":"29236:5:9","nodeType":"VariableDeclaration","scope":3641,"src":"29228:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3622,"name":"uint128","nodeType":"ElementaryTypeName","src":"29228:7:9","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3625,"mutability":"mutable","name":"pendingDistribution","nameLocation":"29263:19:9","nodeType":"VariableDeclaration","scope":3641,"src":"29255:27:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3624,"name":"uint256","nodeType":"ElementaryTypeName","src":"29255:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29128:164:9"},"scope":5145,"src":"29021:416:9","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":3683,"nodeType":"Block","src":"29757:418:9","statements":[{"assignments":[3654,3657],"declarations":[{"constant":false,"id":3654,"mutability":"mutable","name":"host","nameLocation":"29780:4:9","nodeType":"VariableDeclaration","scope":3683,"src":"29768:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"},"typeName":{"id":3653,"nodeType":"UserDefinedTypeName","pathNode":{"id":3652,"name":"ISuperfluid","nameLocations":["29768:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7667,"src":"29768:11:9"},"referencedDeclaration":7667,"src":"29768:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":3657,"mutability":"mutable","name":"ida","nameLocation":"29818:3:9","nodeType":"VariableDeclaration","scope":3683,"src":"29786:35:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"},"typeName":{"id":3656,"nodeType":"UserDefinedTypeName","pathNode":{"id":3655,"name":"IInstantDistributionAgreementV1","nameLocations":["29786:31:9"],"nodeType":"IdentifierPath","referencedDeclaration":5961,"src":"29786:31:9"},"referencedDeclaration":5961,"src":"29786:31:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"visibility":"internal"}],"id":3661,"initialValue":{"arguments":[{"id":3659,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3645,"src":"29848:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}],"id":3658,"name":"_getAndCacheHostAndIDA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4980,"src":"29825:22:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$7015_$returns$_t_contract$_ISuperfluid_$7667_$_t_contract$_IInstantDistributionAgreementV1_$5961_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"id":3660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29825:29:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7667_$_t_contract$_IInstantDistributionAgreementV1_$5961_$","typeString":"tuple(contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"29767:87:9"},{"expression":{"arguments":[{"id":3665,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3657,"src":"29896:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},{"arguments":[{"expression":{"id":3668,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3657,"src":"29945:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"id":3669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"29949:11:9","memberName":"createIndex","nodeType":"MemberAccess","referencedDeclaration":5607,"src":"29945:15:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_uint32_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,uint32,bytes memory) external returns (bytes memory)"}},{"components":[{"id":3670,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3645,"src":"30000:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},{"id":3671,"name":"indexId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3647,"src":"30027:7:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"arguments":[{"hexValue":"30","id":3674,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30066:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3673,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"30056:9:9","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":3672,"name":"bytes","nodeType":"ElementaryTypeName","src":"30060:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":3675,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30056:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":3676,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"29978:127:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_uint32_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,uint32,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_uint32_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,uint32,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_uint32_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,uint32,bytes memory)"}],"expression":{"id":3666,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"29913:3:9","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3667,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"29917:10:9","memberName":"encodeCall","nodeType":"MemberAccess","src":"29913:14:9","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3677,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29913:206:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"3078","id":3678,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"30133:4:9","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""}],"expression":{"id":3662,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3654,"src":"29864:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"id":3664,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"29869:13:9","memberName":"callAgreement","nodeType":"MemberAccess","referencedDeclaration":7565,"src":"29864:18:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6463_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory) external returns (bytes memory)"}},"id":3679,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29864:283:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3680,"nodeType":"ExpressionStatement","src":"29864:283:9"},{"expression":{"hexValue":"74727565","id":3681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"30164:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":3651,"id":3682,"nodeType":"Return","src":"30157:11:9"}]},"documentation":{"id":3642,"nodeType":"StructuredDocumentation","src":"29514:136:9","text":" @dev Creates a new index.\n @param token Super Token used with the index.\n @param indexId ID of the index."},"id":3684,"implemented":true,"kind":"function","modifiers":[],"name":"createIndex","nameLocation":"29664:11:9","nodeType":"FunctionDefinition","parameters":{"id":3648,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3645,"mutability":"mutable","name":"token","nameLocation":"29697:5:9","nodeType":"VariableDeclaration","scope":3684,"src":"29685:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":3644,"nodeType":"UserDefinedTypeName","pathNode":{"id":3643,"name":"ISuperToken","nameLocations":["29685:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"29685:11:9"},"referencedDeclaration":7015,"src":"29685:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":3647,"mutability":"mutable","name":"indexId","nameLocation":"29719:7:9","nodeType":"VariableDeclaration","scope":3684,"src":"29712:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":3646,"name":"uint32","nodeType":"ElementaryTypeName","src":"29712:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"29675:57:9"},"returnParameters":{"id":3651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3650,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3684,"src":"29751:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3649,"name":"bool","nodeType":"ElementaryTypeName","src":"29751:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"29750:6:9"},"scope":5145,"src":"29655:520:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3728,"nodeType":"Block","src":"30519:422:9","statements":[{"assignments":[3699,3702],"declarations":[{"constant":false,"id":3699,"mutability":"mutable","name":"host","nameLocation":"30542:4:9","nodeType":"VariableDeclaration","scope":3728,"src":"30530:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"},"typeName":{"id":3698,"nodeType":"UserDefinedTypeName","pathNode":{"id":3697,"name":"ISuperfluid","nameLocations":["30530:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7667,"src":"30530:11:9"},"referencedDeclaration":7667,"src":"30530:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":3702,"mutability":"mutable","name":"ida","nameLocation":"30580:3:9","nodeType":"VariableDeclaration","scope":3728,"src":"30548:35:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"},"typeName":{"id":3701,"nodeType":"UserDefinedTypeName","pathNode":{"id":3700,"name":"IInstantDistributionAgreementV1","nameLocations":["30548:31:9"],"nodeType":"IdentifierPath","referencedDeclaration":5961,"src":"30548:31:9"},"referencedDeclaration":5961,"src":"30548:31:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"visibility":"internal"}],"id":3706,"initialValue":{"arguments":[{"id":3704,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3688,"src":"30610:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}],"id":3703,"name":"_getAndCacheHostAndIDA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4980,"src":"30587:22:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$7015_$returns$_t_contract$_ISuperfluid_$7667_$_t_contract$_IInstantDistributionAgreementV1_$5961_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"id":3705,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30587:29:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7667_$_t_contract$_IInstantDistributionAgreementV1_$5961_$","typeString":"tuple(contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"30529:87:9"},{"expression":{"arguments":[{"id":3710,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3702,"src":"30658:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},{"arguments":[{"expression":{"id":3713,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3702,"src":"30707:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"id":3714,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"30711:11:9","memberName":"createIndex","nodeType":"MemberAccess","referencedDeclaration":5607,"src":"30707:15:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_uint32_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,uint32,bytes memory) external returns (bytes memory)"}},{"components":[{"id":3715,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3688,"src":"30762:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},{"id":3716,"name":"indexId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3690,"src":"30789:7:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"arguments":[{"hexValue":"30","id":3719,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30828:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3718,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"30818:9:9","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":3717,"name":"bytes","nodeType":"ElementaryTypeName","src":"30822:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":3720,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30818:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":3721,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"30740:127:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_uint32_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,uint32,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_uint32_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,uint32,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_uint32_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,uint32,bytes memory)"}],"expression":{"id":3711,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"30675:3:9","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3712,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"30679:10:9","memberName":"encodeCall","nodeType":"MemberAccess","src":"30675:14:9","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3722,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30675:206:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":3723,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3692,"src":"30895:8:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":3707,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3699,"src":"30626:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"id":3709,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"30631:13:9","memberName":"callAgreement","nodeType":"MemberAccess","referencedDeclaration":7565,"src":"30626:18:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6463_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory) external returns (bytes memory)"}},"id":3724,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30626:287:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3725,"nodeType":"ExpressionStatement","src":"30626:287:9"},{"expression":{"hexValue":"74727565","id":3726,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"30930:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":3696,"id":3727,"nodeType":"Return","src":"30923:11:9"}]},"documentation":{"id":3685,"nodeType":"StructuredDocumentation","src":"30181:200:9","text":" @dev Creates a new index with userData.\n @param token Super Token used with the index.\n @param indexId ID of the index.\n @param userData Arbitrary user data field."},"id":3729,"implemented":true,"kind":"function","modifiers":[],"name":"createIndex","nameLocation":"30395:11:9","nodeType":"FunctionDefinition","parameters":{"id":3693,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3688,"mutability":"mutable","name":"token","nameLocation":"30428:5:9","nodeType":"VariableDeclaration","scope":3729,"src":"30416:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":3687,"nodeType":"UserDefinedTypeName","pathNode":{"id":3686,"name":"ISuperToken","nameLocations":["30416:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"30416:11:9"},"referencedDeclaration":7015,"src":"30416:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":3690,"mutability":"mutable","name":"indexId","nameLocation":"30450:7:9","nodeType":"VariableDeclaration","scope":3729,"src":"30443:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":3689,"name":"uint32","nodeType":"ElementaryTypeName","src":"30443:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":3692,"mutability":"mutable","name":"userData","nameLocation":"30480:8:9","nodeType":"VariableDeclaration","scope":3729,"src":"30467:21:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3691,"name":"bytes","nodeType":"ElementaryTypeName","src":"30467:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"30406:88:9"},"returnParameters":{"id":3696,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3695,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3729,"src":"30513:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3694,"name":"bool","nodeType":"ElementaryTypeName","src":"30513:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"30512:6:9"},"scope":5145,"src":"30386:555:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3774,"nodeType":"Block","src":"31452:450:9","statements":[{"assignments":[3744,3747],"declarations":[{"constant":false,"id":3744,"mutability":"mutable","name":"host","nameLocation":"31475:4:9","nodeType":"VariableDeclaration","scope":3774,"src":"31463:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"},"typeName":{"id":3743,"nodeType":"UserDefinedTypeName","pathNode":{"id":3742,"name":"ISuperfluid","nameLocations":["31463:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7667,"src":"31463:11:9"},"referencedDeclaration":7667,"src":"31463:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":3747,"mutability":"mutable","name":"ida","nameLocation":"31513:3:9","nodeType":"VariableDeclaration","scope":3774,"src":"31481:35:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"},"typeName":{"id":3746,"nodeType":"UserDefinedTypeName","pathNode":{"id":3745,"name":"IInstantDistributionAgreementV1","nameLocations":["31481:31:9"],"nodeType":"IdentifierPath","referencedDeclaration":5961,"src":"31481:31:9"},"referencedDeclaration":5961,"src":"31481:31:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"visibility":"internal"}],"id":3751,"initialValue":{"arguments":[{"id":3749,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3733,"src":"31543:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}],"id":3748,"name":"_getAndCacheHostAndIDA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4980,"src":"31520:22:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$7015_$returns$_t_contract$_ISuperfluid_$7667_$_t_contract$_IInstantDistributionAgreementV1_$5961_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"id":3750,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31520:29:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7667_$_t_contract$_IInstantDistributionAgreementV1_$5961_$","typeString":"tuple(contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"31462:87:9"},{"expression":{"arguments":[{"id":3755,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3747,"src":"31591:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},{"arguments":[{"expression":{"id":3758,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3747,"src":"31640:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"id":3759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31644:11:9","memberName":"updateIndex","nodeType":"MemberAccess","referencedDeclaration":5670,"src":"31640:15:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_uint32_$_t_uint128_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,uint32,uint128,bytes memory) external returns (bytes memory)"}},{"components":[{"id":3760,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3733,"src":"31695:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},{"id":3761,"name":"indexId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3735,"src":"31722:7:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":3762,"name":"indexValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3737,"src":"31751:10:9","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"arguments":[{"hexValue":"30","id":3765,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31793:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3764,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"31783:9:9","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":3763,"name":"bytes","nodeType":"ElementaryTypeName","src":"31787:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":3766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31783:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":3767,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31673:159:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_uint32_$_t_uint128_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,uint32,uint128,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_uint32_$_t_uint128_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,uint32,uint128,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_uint32_$_t_uint128_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,uint32,uint128,bytes memory)"}],"expression":{"id":3756,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"31608:3:9","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3757,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"31612:10:9","memberName":"encodeCall","nodeType":"MemberAccess","src":"31608:14:9","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3768,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31608:238:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"3078","id":3769,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"31860:4:9","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""}],"expression":{"id":3752,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3744,"src":"31559:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"id":3754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31564:13:9","memberName":"callAgreement","nodeType":"MemberAccess","referencedDeclaration":7565,"src":"31559:18:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6463_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory) external returns (bytes memory)"}},"id":3770,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31559:315:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3771,"nodeType":"ExpressionStatement","src":"31559:315:9"},{"expression":{"hexValue":"74727565","id":3772,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"31891:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":3741,"id":3773,"nodeType":"Return","src":"31884:11:9"}]},"documentation":{"id":3730,"nodeType":"StructuredDocumentation","src":"30947:365:9","text":" @dev Updates an index value. This distributes an amount of tokens equal to\n `indexValue - lastIndexValue`. See `distribute` for another way to distribute.\n @param token Super Token used with the index.\n @param indexId ID of the index.\n @param indexValue New TOTAL index value, this will equal the total amount distributed."},"id":3775,"implemented":true,"kind":"function","modifiers":[],"name":"updateIndexValue","nameLocation":"31326:16:9","nodeType":"FunctionDefinition","parameters":{"id":3738,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3733,"mutability":"mutable","name":"token","nameLocation":"31364:5:9","nodeType":"VariableDeclaration","scope":3775,"src":"31352:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":3732,"nodeType":"UserDefinedTypeName","pathNode":{"id":3731,"name":"ISuperToken","nameLocations":["31352:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"31352:11:9"},"referencedDeclaration":7015,"src":"31352:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":3735,"mutability":"mutable","name":"indexId","nameLocation":"31386:7:9","nodeType":"VariableDeclaration","scope":3775,"src":"31379:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":3734,"name":"uint32","nodeType":"ElementaryTypeName","src":"31379:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":3737,"mutability":"mutable","name":"indexValue","nameLocation":"31411:10:9","nodeType":"VariableDeclaration","scope":3775,"src":"31403:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3736,"name":"uint128","nodeType":"ElementaryTypeName","src":"31403:7:9","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"31342:85:9"},"returnParameters":{"id":3741,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3740,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3775,"src":"31446:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3739,"name":"bool","nodeType":"ElementaryTypeName","src":"31446:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"31445:6:9"},"scope":5145,"src":"31317:585:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3822,"nodeType":"Block","src":"32508:454:9","statements":[{"assignments":[3792,3795],"declarations":[{"constant":false,"id":3792,"mutability":"mutable","name":"host","nameLocation":"32531:4:9","nodeType":"VariableDeclaration","scope":3822,"src":"32519:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"},"typeName":{"id":3791,"nodeType":"UserDefinedTypeName","pathNode":{"id":3790,"name":"ISuperfluid","nameLocations":["32519:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7667,"src":"32519:11:9"},"referencedDeclaration":7667,"src":"32519:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":3795,"mutability":"mutable","name":"ida","nameLocation":"32569:3:9","nodeType":"VariableDeclaration","scope":3822,"src":"32537:35:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"},"typeName":{"id":3794,"nodeType":"UserDefinedTypeName","pathNode":{"id":3793,"name":"IInstantDistributionAgreementV1","nameLocations":["32537:31:9"],"nodeType":"IdentifierPath","referencedDeclaration":5961,"src":"32537:31:9"},"referencedDeclaration":5961,"src":"32537:31:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"visibility":"internal"}],"id":3799,"initialValue":{"arguments":[{"id":3797,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3779,"src":"32599:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}],"id":3796,"name":"_getAndCacheHostAndIDA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4980,"src":"32576:22:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$7015_$returns$_t_contract$_ISuperfluid_$7667_$_t_contract$_IInstantDistributionAgreementV1_$5961_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"id":3798,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32576:29:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7667_$_t_contract$_IInstantDistributionAgreementV1_$5961_$","typeString":"tuple(contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"32518:87:9"},{"expression":{"arguments":[{"id":3803,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3795,"src":"32647:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},{"arguments":[{"expression":{"id":3806,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3795,"src":"32696:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"id":3807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"32700:11:9","memberName":"updateIndex","nodeType":"MemberAccess","referencedDeclaration":5670,"src":"32696:15:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_uint32_$_t_uint128_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,uint32,uint128,bytes memory) external returns (bytes memory)"}},{"components":[{"id":3808,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3779,"src":"32751:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},{"id":3809,"name":"indexId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3781,"src":"32778:7:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":3810,"name":"indexValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3783,"src":"32807:10:9","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"arguments":[{"hexValue":"30","id":3813,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32849:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3812,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"32839:9:9","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":3811,"name":"bytes","nodeType":"ElementaryTypeName","src":"32843:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":3814,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32839:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":3815,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"32729:159:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_uint32_$_t_uint128_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,uint32,uint128,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_uint32_$_t_uint128_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,uint32,uint128,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_uint32_$_t_uint128_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,uint32,uint128,bytes memory)"}],"expression":{"id":3804,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"32664:3:9","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3805,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"32668:10:9","memberName":"encodeCall","nodeType":"MemberAccess","src":"32664:14:9","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32664:238:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":3817,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3785,"src":"32916:8:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":3800,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3792,"src":"32615:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"id":3802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"32620:13:9","memberName":"callAgreement","nodeType":"MemberAccess","referencedDeclaration":7565,"src":"32615:18:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6463_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory) external returns (bytes memory)"}},"id":3818,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32615:319:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3819,"nodeType":"ExpressionStatement","src":"32615:319:9"},{"expression":{"hexValue":"74727565","id":3820,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"32951:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":3789,"id":3821,"nodeType":"Return","src":"32944:11:9"}]},"documentation":{"id":3776,"nodeType":"StructuredDocumentation","src":"31908:429:9","text":" @dev Updates an index value with userData. This distributes an amount of tokens equal to\n `indexValue - lastIndexValue`. See `distribute` for another way to distribute.\n @param token Super Token used with the index.\n @param indexId ID of the index.\n @param indexValue New TOTAL index value, this will equal the total amount distributed.\n @param userData Arbitrary user data field."},"id":3823,"implemented":true,"kind":"function","modifiers":[],"name":"updateIndexValue","nameLocation":"32351:16:9","nodeType":"FunctionDefinition","parameters":{"id":3786,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3779,"mutability":"mutable","name":"token","nameLocation":"32389:5:9","nodeType":"VariableDeclaration","scope":3823,"src":"32377:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":3778,"nodeType":"UserDefinedTypeName","pathNode":{"id":3777,"name":"ISuperToken","nameLocations":["32377:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"32377:11:9"},"referencedDeclaration":7015,"src":"32377:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":3781,"mutability":"mutable","name":"indexId","nameLocation":"32411:7:9","nodeType":"VariableDeclaration","scope":3823,"src":"32404:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":3780,"name":"uint32","nodeType":"ElementaryTypeName","src":"32404:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":3783,"mutability":"mutable","name":"indexValue","nameLocation":"32436:10:9","nodeType":"VariableDeclaration","scope":3823,"src":"32428:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":3782,"name":"uint128","nodeType":"ElementaryTypeName","src":"32428:7:9","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":3785,"mutability":"mutable","name":"userData","nameLocation":"32469:8:9","nodeType":"VariableDeclaration","scope":3823,"src":"32456:21:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3784,"name":"bytes","nodeType":"ElementaryTypeName","src":"32456:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"32367:116:9"},"returnParameters":{"id":3789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3788,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3823,"src":"32502:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3787,"name":"bool","nodeType":"ElementaryTypeName","src":"32502:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"32501:6:9"},"scope":5145,"src":"32342:620:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3868,"nodeType":"Block","src":"33465:445:9","statements":[{"assignments":[3838,3841],"declarations":[{"constant":false,"id":3838,"mutability":"mutable","name":"host","nameLocation":"33488:4:9","nodeType":"VariableDeclaration","scope":3868,"src":"33476:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"},"typeName":{"id":3837,"nodeType":"UserDefinedTypeName","pathNode":{"id":3836,"name":"ISuperfluid","nameLocations":["33476:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7667,"src":"33476:11:9"},"referencedDeclaration":7667,"src":"33476:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":3841,"mutability":"mutable","name":"ida","nameLocation":"33526:3:9","nodeType":"VariableDeclaration","scope":3868,"src":"33494:35:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"},"typeName":{"id":3840,"nodeType":"UserDefinedTypeName","pathNode":{"id":3839,"name":"IInstantDistributionAgreementV1","nameLocations":["33494:31:9"],"nodeType":"IdentifierPath","referencedDeclaration":5961,"src":"33494:31:9"},"referencedDeclaration":5961,"src":"33494:31:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"visibility":"internal"}],"id":3845,"initialValue":{"arguments":[{"id":3843,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3827,"src":"33556:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}],"id":3842,"name":"_getAndCacheHostAndIDA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4980,"src":"33533:22:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$7015_$returns$_t_contract$_ISuperfluid_$7667_$_t_contract$_IInstantDistributionAgreementV1_$5961_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"id":3844,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33533:29:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7667_$_t_contract$_IInstantDistributionAgreementV1_$5961_$","typeString":"tuple(contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"33475:87:9"},{"expression":{"arguments":[{"id":3849,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3841,"src":"33604:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},{"arguments":[{"expression":{"id":3852,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3841,"src":"33653:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"id":3853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"33657:10:9","memberName":"distribute","nodeType":"MemberAccess","referencedDeclaration":5705,"src":"33653:14:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_uint32_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,uint32,uint256,bytes memory) external returns (bytes memory)"}},{"components":[{"id":3854,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3827,"src":"33707:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},{"id":3855,"name":"indexId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3829,"src":"33734:7:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":3856,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3831,"src":"33763:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":3859,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"33801:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3858,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"33791:9:9","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":3857,"name":"bytes","nodeType":"ElementaryTypeName","src":"33795:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":3860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33791:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":3861,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"33685:155:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_uint32_$_t_uint256_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,uint32,uint256,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_uint32_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,uint32,uint256,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_uint32_$_t_uint256_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,uint32,uint256,bytes memory)"}],"expression":{"id":3850,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"33621:3:9","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3851,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"33625:10:9","memberName":"encodeCall","nodeType":"MemberAccess","src":"33621:14:9","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3862,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33621:233:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"3078","id":3863,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"33868:4:9","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""}],"expression":{"id":3846,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3838,"src":"33572:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"id":3848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"33577:13:9","memberName":"callAgreement","nodeType":"MemberAccess","referencedDeclaration":7565,"src":"33572:18:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6463_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory) external returns (bytes memory)"}},"id":3864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33572:310:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3865,"nodeType":"ExpressionStatement","src":"33572:310:9"},{"expression":{"hexValue":"74727565","id":3866,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"33899:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":3835,"id":3867,"nodeType":"Return","src":"33892:11:9"}]},"documentation":{"id":3824,"nodeType":"StructuredDocumentation","src":"32968:367:9","text":" @dev Distributes tokens in a more developer friendly way than `updateIndex`. Instead of\n passing the new total index value, this function will increase the index value by `amount`.\n @param token Super Token used with the index.\n @param indexId ID of the index.\n @param amount Amount by which the index value should increase."},"id":3869,"implemented":true,"kind":"function","modifiers":[],"name":"distribute","nameLocation":"33349:10:9","nodeType":"FunctionDefinition","parameters":{"id":3832,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3827,"mutability":"mutable","name":"token","nameLocation":"33381:5:9","nodeType":"VariableDeclaration","scope":3869,"src":"33369:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":3826,"nodeType":"UserDefinedTypeName","pathNode":{"id":3825,"name":"ISuperToken","nameLocations":["33369:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"33369:11:9"},"referencedDeclaration":7015,"src":"33369:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":3829,"mutability":"mutable","name":"indexId","nameLocation":"33403:7:9","nodeType":"VariableDeclaration","scope":3869,"src":"33396:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":3828,"name":"uint32","nodeType":"ElementaryTypeName","src":"33396:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":3831,"mutability":"mutable","name":"amount","nameLocation":"33428:6:9","nodeType":"VariableDeclaration","scope":3869,"src":"33420:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3830,"name":"uint256","nodeType":"ElementaryTypeName","src":"33420:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33359:81:9"},"returnParameters":{"id":3835,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3834,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3869,"src":"33459:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3833,"name":"bool","nodeType":"ElementaryTypeName","src":"33459:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"33458:6:9"},"scope":5145,"src":"33340:570:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3916,"nodeType":"Block","src":"34547:449:9","statements":[{"assignments":[3886,3889],"declarations":[{"constant":false,"id":3886,"mutability":"mutable","name":"host","nameLocation":"34570:4:9","nodeType":"VariableDeclaration","scope":3916,"src":"34558:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"},"typeName":{"id":3885,"nodeType":"UserDefinedTypeName","pathNode":{"id":3884,"name":"ISuperfluid","nameLocations":["34558:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7667,"src":"34558:11:9"},"referencedDeclaration":7667,"src":"34558:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":3889,"mutability":"mutable","name":"ida","nameLocation":"34608:3:9","nodeType":"VariableDeclaration","scope":3916,"src":"34576:35:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"},"typeName":{"id":3888,"nodeType":"UserDefinedTypeName","pathNode":{"id":3887,"name":"IInstantDistributionAgreementV1","nameLocations":["34576:31:9"],"nodeType":"IdentifierPath","referencedDeclaration":5961,"src":"34576:31:9"},"referencedDeclaration":5961,"src":"34576:31:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"visibility":"internal"}],"id":3893,"initialValue":{"arguments":[{"id":3891,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3873,"src":"34638:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}],"id":3890,"name":"_getAndCacheHostAndIDA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4980,"src":"34615:22:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$7015_$returns$_t_contract$_ISuperfluid_$7667_$_t_contract$_IInstantDistributionAgreementV1_$5961_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"id":3892,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34615:29:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7667_$_t_contract$_IInstantDistributionAgreementV1_$5961_$","typeString":"tuple(contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"34557:87:9"},{"expression":{"arguments":[{"id":3897,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3889,"src":"34686:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},{"arguments":[{"expression":{"id":3900,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3889,"src":"34735:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"id":3901,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"34739:10:9","memberName":"distribute","nodeType":"MemberAccess","referencedDeclaration":5705,"src":"34735:14:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_uint32_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,uint32,uint256,bytes memory) external returns (bytes memory)"}},{"components":[{"id":3902,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3873,"src":"34789:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},{"id":3903,"name":"indexId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3875,"src":"34816:7:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":3904,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3877,"src":"34845:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":3907,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"34883:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3906,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"34873:9:9","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":3905,"name":"bytes","nodeType":"ElementaryTypeName","src":"34877:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":3908,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34873:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":3909,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"34767:155:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_uint32_$_t_uint256_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,uint32,uint256,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_uint32_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,uint32,uint256,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_uint32_$_t_uint256_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,uint32,uint256,bytes memory)"}],"expression":{"id":3898,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"34703:3:9","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3899,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"34707:10:9","memberName":"encodeCall","nodeType":"MemberAccess","src":"34703:14:9","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3910,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34703:233:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":3911,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3879,"src":"34950:8:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":3894,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3886,"src":"34654:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"id":3896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"34659:13:9","memberName":"callAgreement","nodeType":"MemberAccess","referencedDeclaration":7565,"src":"34654:18:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6463_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory) external returns (bytes memory)"}},"id":3912,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34654:314:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3913,"nodeType":"ExpressionStatement","src":"34654:314:9"},{"expression":{"hexValue":"74727565","id":3914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"34985:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":3883,"id":3915,"nodeType":"Return","src":"34978:11:9"}]},"documentation":{"id":3870,"nodeType":"StructuredDocumentation","src":"33916:470:9","text":" @dev Distributes tokens in a more developer friendly way than `updateIndex` (w user data). Instead of\n passing the new total index value, this function will increase the index value by `amount`.\n This takes arbitrary user data.\n @param token Super Token used with the index.\n @param indexId ID of the index.\n @param amount Amount by which the index value should increase.\n @param userData Arbitrary user data field."},"id":3917,"implemented":true,"kind":"function","modifiers":[],"name":"distribute","nameLocation":"34400:10:9","nodeType":"FunctionDefinition","parameters":{"id":3880,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3873,"mutability":"mutable","name":"token","nameLocation":"34432:5:9","nodeType":"VariableDeclaration","scope":3917,"src":"34420:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":3872,"nodeType":"UserDefinedTypeName","pathNode":{"id":3871,"name":"ISuperToken","nameLocations":["34420:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"34420:11:9"},"referencedDeclaration":7015,"src":"34420:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":3875,"mutability":"mutable","name":"indexId","nameLocation":"34454:7:9","nodeType":"VariableDeclaration","scope":3917,"src":"34447:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":3874,"name":"uint32","nodeType":"ElementaryTypeName","src":"34447:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":3877,"mutability":"mutable","name":"amount","nameLocation":"34479:6:9","nodeType":"VariableDeclaration","scope":3917,"src":"34471:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3876,"name":"uint256","nodeType":"ElementaryTypeName","src":"34471:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3879,"mutability":"mutable","name":"userData","nameLocation":"34508:8:9","nodeType":"VariableDeclaration","scope":3917,"src":"34495:21:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3878,"name":"bytes","nodeType":"ElementaryTypeName","src":"34495:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"34410:112:9"},"returnParameters":{"id":3883,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3882,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3917,"src":"34541:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3881,"name":"bool","nodeType":"ElementaryTypeName","src":"34541:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34540:6:9"},"scope":5145,"src":"34391:605:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3962,"nodeType":"Block","src":"35518:457:9","statements":[{"assignments":[3932,3935],"declarations":[{"constant":false,"id":3932,"mutability":"mutable","name":"host","nameLocation":"35541:4:9","nodeType":"VariableDeclaration","scope":3962,"src":"35529:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"},"typeName":{"id":3931,"nodeType":"UserDefinedTypeName","pathNode":{"id":3930,"name":"ISuperfluid","nameLocations":["35529:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7667,"src":"35529:11:9"},"referencedDeclaration":7667,"src":"35529:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":3935,"mutability":"mutable","name":"ida","nameLocation":"35579:3:9","nodeType":"VariableDeclaration","scope":3962,"src":"35547:35:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"},"typeName":{"id":3934,"nodeType":"UserDefinedTypeName","pathNode":{"id":3933,"name":"IInstantDistributionAgreementV1","nameLocations":["35547:31:9"],"nodeType":"IdentifierPath","referencedDeclaration":5961,"src":"35547:31:9"},"referencedDeclaration":5961,"src":"35547:31:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"visibility":"internal"}],"id":3939,"initialValue":{"arguments":[{"id":3937,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3921,"src":"35609:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}],"id":3936,"name":"_getAndCacheHostAndIDA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4980,"src":"35586:22:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$7015_$returns$_t_contract$_ISuperfluid_$7667_$_t_contract$_IInstantDistributionAgreementV1_$5961_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"id":3938,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"35586:29:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7667_$_t_contract$_IInstantDistributionAgreementV1_$5961_$","typeString":"tuple(contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"35528:87:9"},{"expression":{"arguments":[{"id":3943,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3935,"src":"35657:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},{"arguments":[{"expression":{"id":3946,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3935,"src":"35706:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"id":3947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"35710:19:9","memberName":"approveSubscription","nodeType":"MemberAccess","referencedDeclaration":5720,"src":"35706:23:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_uint32_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,uint32,bytes memory) external returns (bytes memory)"}},{"components":[{"id":3948,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3921,"src":"35769:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},{"id":3949,"name":"publisher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3923,"src":"35796:9:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3950,"name":"indexId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3925,"src":"35827:7:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"arguments":[{"hexValue":"30","id":3953,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"35866:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3952,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"35856:9:9","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":3951,"name":"bytes","nodeType":"ElementaryTypeName","src":"35860:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":3954,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"35856:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":3955,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"35747:158:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_uint32_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,uint32,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_uint32_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,uint32,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_uint32_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,uint32,bytes memory)"}],"expression":{"id":3944,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"35674:3:9","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3945,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"35678:10:9","memberName":"encodeCall","nodeType":"MemberAccess","src":"35674:14:9","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3956,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"35674:245:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"3078","id":3957,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"35933:4:9","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""}],"expression":{"id":3940,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3932,"src":"35625:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"id":3942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"35630:13:9","memberName":"callAgreement","nodeType":"MemberAccess","referencedDeclaration":7565,"src":"35625:18:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6463_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory) external returns (bytes memory)"}},"id":3958,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"35625:322:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3959,"nodeType":"ExpressionStatement","src":"35625:322:9"},{"expression":{"hexValue":"74727565","id":3960,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"35964:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":3929,"id":3961,"nodeType":"Return","src":"35957:11:9"}]},"documentation":{"id":3918,"nodeType":"StructuredDocumentation","src":"35002:374:9","text":" @dev Approves a subscription to an index. The subscriber's real time balance will not update\n until the subscription is approved, but once approved, the balance will be updated with\n prior distributions.\n @param token Super Token used with the index.\n @param publisher Publisher of the index.\n @param indexId ID of the index."},"id":3963,"implemented":true,"kind":"function","modifiers":[],"name":"approveSubscription","nameLocation":"35390:19:9","nodeType":"FunctionDefinition","parameters":{"id":3926,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3921,"mutability":"mutable","name":"token","nameLocation":"35431:5:9","nodeType":"VariableDeclaration","scope":3963,"src":"35419:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":3920,"nodeType":"UserDefinedTypeName","pathNode":{"id":3919,"name":"ISuperToken","nameLocations":["35419:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"35419:11:9"},"referencedDeclaration":7015,"src":"35419:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":3923,"mutability":"mutable","name":"publisher","nameLocation":"35454:9:9","nodeType":"VariableDeclaration","scope":3963,"src":"35446:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3922,"name":"address","nodeType":"ElementaryTypeName","src":"35446:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3925,"mutability":"mutable","name":"indexId","nameLocation":"35480:7:9","nodeType":"VariableDeclaration","scope":3963,"src":"35473:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":3924,"name":"uint32","nodeType":"ElementaryTypeName","src":"35473:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"35409:84:9"},"returnParameters":{"id":3929,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3928,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3963,"src":"35512:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3927,"name":"bool","nodeType":"ElementaryTypeName","src":"35512:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"35511:6:9"},"scope":5145,"src":"35381:594:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4010,"nodeType":"Block","src":"36593:461:9","statements":[{"assignments":[3980,3983],"declarations":[{"constant":false,"id":3980,"mutability":"mutable","name":"host","nameLocation":"36616:4:9","nodeType":"VariableDeclaration","scope":4010,"src":"36604:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"},"typeName":{"id":3979,"nodeType":"UserDefinedTypeName","pathNode":{"id":3978,"name":"ISuperfluid","nameLocations":["36604:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7667,"src":"36604:11:9"},"referencedDeclaration":7667,"src":"36604:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":3983,"mutability":"mutable","name":"ida","nameLocation":"36654:3:9","nodeType":"VariableDeclaration","scope":4010,"src":"36622:35:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"},"typeName":{"id":3982,"nodeType":"UserDefinedTypeName","pathNode":{"id":3981,"name":"IInstantDistributionAgreementV1","nameLocations":["36622:31:9"],"nodeType":"IdentifierPath","referencedDeclaration":5961,"src":"36622:31:9"},"referencedDeclaration":5961,"src":"36622:31:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"visibility":"internal"}],"id":3987,"initialValue":{"arguments":[{"id":3985,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3967,"src":"36684:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}],"id":3984,"name":"_getAndCacheHostAndIDA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4980,"src":"36661:22:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$7015_$returns$_t_contract$_ISuperfluid_$7667_$_t_contract$_IInstantDistributionAgreementV1_$5961_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"id":3986,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36661:29:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7667_$_t_contract$_IInstantDistributionAgreementV1_$5961_$","typeString":"tuple(contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"36603:87:9"},{"expression":{"arguments":[{"id":3991,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3983,"src":"36732:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},{"arguments":[{"expression":{"id":3994,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3983,"src":"36781:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"id":3995,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"36785:19:9","memberName":"approveSubscription","nodeType":"MemberAccess","referencedDeclaration":5720,"src":"36781:23:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_uint32_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,uint32,bytes memory) external returns (bytes memory)"}},{"components":[{"id":3996,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3967,"src":"36844:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},{"id":3997,"name":"publisher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3969,"src":"36871:9:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3998,"name":"indexId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3971,"src":"36902:7:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"arguments":[{"hexValue":"30","id":4001,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"36941:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4000,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"36931:9:9","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":3999,"name":"bytes","nodeType":"ElementaryTypeName","src":"36935:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":4002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36931:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":4003,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"36822:158:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_uint32_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,uint32,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_uint32_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,uint32,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_uint32_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,uint32,bytes memory)"}],"expression":{"id":3992,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"36749:3:9","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3993,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"36753:10:9","memberName":"encodeCall","nodeType":"MemberAccess","src":"36749:14:9","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4004,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36749:245:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":4005,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3973,"src":"37008:8:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":3988,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3980,"src":"36700:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"id":3990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"36705:13:9","memberName":"callAgreement","nodeType":"MemberAccess","referencedDeclaration":7565,"src":"36700:18:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6463_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory) external returns (bytes memory)"}},"id":4006,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"36700:326:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4007,"nodeType":"ExpressionStatement","src":"36700:326:9"},{"expression":{"hexValue":"74727565","id":4008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"37043:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":3977,"id":4009,"nodeType":"Return","src":"37036:11:9"}]},"documentation":{"id":3964,"nodeType":"StructuredDocumentation","src":"35981:439:9","text":" @dev Approves a subscription to an index with user data. The subscriber's real time balance will not update\n until the subscription is approved, but once approved, the balance will be updated with\n prior distributions.\n @param token Super Token used with the index.\n @param publisher Publisher of the index.\n @param indexId ID of the index.\n @param userData Arbitrary user data field."},"id":4011,"implemented":true,"kind":"function","modifiers":[],"name":"approveSubscription","nameLocation":"36434:19:9","nodeType":"FunctionDefinition","parameters":{"id":3974,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3967,"mutability":"mutable","name":"token","nameLocation":"36475:5:9","nodeType":"VariableDeclaration","scope":4011,"src":"36463:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":3966,"nodeType":"UserDefinedTypeName","pathNode":{"id":3965,"name":"ISuperToken","nameLocations":["36463:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"36463:11:9"},"referencedDeclaration":7015,"src":"36463:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":3969,"mutability":"mutable","name":"publisher","nameLocation":"36498:9:9","nodeType":"VariableDeclaration","scope":4011,"src":"36490:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3968,"name":"address","nodeType":"ElementaryTypeName","src":"36490:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3971,"mutability":"mutable","name":"indexId","nameLocation":"36524:7:9","nodeType":"VariableDeclaration","scope":4011,"src":"36517:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":3970,"name":"uint32","nodeType":"ElementaryTypeName","src":"36517:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":3973,"mutability":"mutable","name":"userData","nameLocation":"36554:8:9","nodeType":"VariableDeclaration","scope":4011,"src":"36541:21:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3972,"name":"bytes","nodeType":"ElementaryTypeName","src":"36541:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"36453:115:9"},"returnParameters":{"id":3977,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3976,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4011,"src":"36587:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3975,"name":"bool","nodeType":"ElementaryTypeName","src":"36587:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"36586:6:9"},"scope":5145,"src":"36425:629:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4056,"nodeType":"Block","src":"37408:456:9","statements":[{"assignments":[4026,4029],"declarations":[{"constant":false,"id":4026,"mutability":"mutable","name":"host","nameLocation":"37431:4:9","nodeType":"VariableDeclaration","scope":4056,"src":"37419:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"},"typeName":{"id":4025,"nodeType":"UserDefinedTypeName","pathNode":{"id":4024,"name":"ISuperfluid","nameLocations":["37419:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7667,"src":"37419:11:9"},"referencedDeclaration":7667,"src":"37419:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":4029,"mutability":"mutable","name":"ida","nameLocation":"37469:3:9","nodeType":"VariableDeclaration","scope":4056,"src":"37437:35:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"},"typeName":{"id":4028,"nodeType":"UserDefinedTypeName","pathNode":{"id":4027,"name":"IInstantDistributionAgreementV1","nameLocations":["37437:31:9"],"nodeType":"IdentifierPath","referencedDeclaration":5961,"src":"37437:31:9"},"referencedDeclaration":5961,"src":"37437:31:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"visibility":"internal"}],"id":4033,"initialValue":{"arguments":[{"id":4031,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4015,"src":"37499:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}],"id":4030,"name":"_getAndCacheHostAndIDA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4980,"src":"37476:22:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$7015_$returns$_t_contract$_ISuperfluid_$7667_$_t_contract$_IInstantDistributionAgreementV1_$5961_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"id":4032,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37476:29:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7667_$_t_contract$_IInstantDistributionAgreementV1_$5961_$","typeString":"tuple(contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"37418:87:9"},{"expression":{"arguments":[{"id":4037,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4029,"src":"37547:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},{"arguments":[{"expression":{"id":4040,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4029,"src":"37596:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"id":4041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37600:18:9","memberName":"revokeSubscription","nodeType":"MemberAccess","referencedDeclaration":5763,"src":"37596:22:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_uint32_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,uint32,bytes memory) external returns (bytes memory)"}},{"components":[{"id":4042,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4015,"src":"37658:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},{"id":4043,"name":"publisher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4017,"src":"37685:9:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4044,"name":"indexId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4019,"src":"37716:7:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"arguments":[{"hexValue":"30","id":4047,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"37755:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4046,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"37745:9:9","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":4045,"name":"bytes","nodeType":"ElementaryTypeName","src":"37749:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":4048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37745:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":4049,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"37636:158:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_uint32_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,uint32,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_uint32_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,uint32,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_uint32_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,uint32,bytes memory)"}],"expression":{"id":4038,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"37564:3:9","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4039,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"37568:10:9","memberName":"encodeCall","nodeType":"MemberAccess","src":"37564:14:9","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4050,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37564:244:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"3078","id":4051,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"37822:4:9","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""}],"expression":{"id":4034,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4026,"src":"37515:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"id":4036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"37520:13:9","memberName":"callAgreement","nodeType":"MemberAccess","referencedDeclaration":7565,"src":"37515:18:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6463_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory) external returns (bytes memory)"}},"id":4052,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"37515:321:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4053,"nodeType":"ExpressionStatement","src":"37515:321:9"},{"expression":{"hexValue":"74727565","id":4054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"37853:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":4023,"id":4055,"nodeType":"Return","src":"37846:11:9"}]},"documentation":{"id":4012,"nodeType":"StructuredDocumentation","src":"37060:207:9","text":" @dev Revokes a previously approved subscription.\n @param token Super Token used with the index.\n @param publisher Publisher of the index.\n @param indexId ID of the index."},"id":4057,"implemented":true,"kind":"function","modifiers":[],"name":"revokeSubscription","nameLocation":"37281:18:9","nodeType":"FunctionDefinition","parameters":{"id":4020,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4015,"mutability":"mutable","name":"token","nameLocation":"37321:5:9","nodeType":"VariableDeclaration","scope":4057,"src":"37309:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":4014,"nodeType":"UserDefinedTypeName","pathNode":{"id":4013,"name":"ISuperToken","nameLocations":["37309:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"37309:11:9"},"referencedDeclaration":7015,"src":"37309:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":4017,"mutability":"mutable","name":"publisher","nameLocation":"37344:9:9","nodeType":"VariableDeclaration","scope":4057,"src":"37336:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4016,"name":"address","nodeType":"ElementaryTypeName","src":"37336:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4019,"mutability":"mutable","name":"indexId","nameLocation":"37370:7:9","nodeType":"VariableDeclaration","scope":4057,"src":"37363:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4018,"name":"uint32","nodeType":"ElementaryTypeName","src":"37363:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"37299:84:9"},"returnParameters":{"id":4023,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4022,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4057,"src":"37402:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4021,"name":"bool","nodeType":"ElementaryTypeName","src":"37402:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"37401:6:9"},"scope":5145,"src":"37272:592:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4104,"nodeType":"Block","src":"38331:460:9","statements":[{"assignments":[4074,4077],"declarations":[{"constant":false,"id":4074,"mutability":"mutable","name":"host","nameLocation":"38354:4:9","nodeType":"VariableDeclaration","scope":4104,"src":"38342:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"},"typeName":{"id":4073,"nodeType":"UserDefinedTypeName","pathNode":{"id":4072,"name":"ISuperfluid","nameLocations":["38342:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7667,"src":"38342:11:9"},"referencedDeclaration":7667,"src":"38342:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":4077,"mutability":"mutable","name":"ida","nameLocation":"38392:3:9","nodeType":"VariableDeclaration","scope":4104,"src":"38360:35:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"},"typeName":{"id":4076,"nodeType":"UserDefinedTypeName","pathNode":{"id":4075,"name":"IInstantDistributionAgreementV1","nameLocations":["38360:31:9"],"nodeType":"IdentifierPath","referencedDeclaration":5961,"src":"38360:31:9"},"referencedDeclaration":5961,"src":"38360:31:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"visibility":"internal"}],"id":4081,"initialValue":{"arguments":[{"id":4079,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4061,"src":"38422:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}],"id":4078,"name":"_getAndCacheHostAndIDA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4980,"src":"38399:22:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$7015_$returns$_t_contract$_ISuperfluid_$7667_$_t_contract$_IInstantDistributionAgreementV1_$5961_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"id":4080,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38399:29:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7667_$_t_contract$_IInstantDistributionAgreementV1_$5961_$","typeString":"tuple(contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"38341:87:9"},{"expression":{"arguments":[{"id":4085,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4077,"src":"38470:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},{"arguments":[{"expression":{"id":4088,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4077,"src":"38519:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"id":4089,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38523:18:9","memberName":"revokeSubscription","nodeType":"MemberAccess","referencedDeclaration":5763,"src":"38519:22:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_uint32_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,uint32,bytes memory) external returns (bytes memory)"}},{"components":[{"id":4090,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4061,"src":"38581:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},{"id":4091,"name":"publisher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4063,"src":"38608:9:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4092,"name":"indexId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4065,"src":"38639:7:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"arguments":[{"hexValue":"30","id":4095,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"38678:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4094,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"38668:9:9","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":4093,"name":"bytes","nodeType":"ElementaryTypeName","src":"38672:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":4096,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38668:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":4097,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"38559:158:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_uint32_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,uint32,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_uint32_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,uint32,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_uint32_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,uint32,bytes memory)"}],"expression":{"id":4086,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"38487:3:9","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4087,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"38491:10:9","memberName":"encodeCall","nodeType":"MemberAccess","src":"38487:14:9","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4098,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38487:244:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":4099,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4067,"src":"38745:8:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":4082,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4074,"src":"38438:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"id":4084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"38443:13:9","memberName":"callAgreement","nodeType":"MemberAccess","referencedDeclaration":7565,"src":"38438:18:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6463_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory) external returns (bytes memory)"}},"id":4100,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"38438:325:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4101,"nodeType":"ExpressionStatement","src":"38438:325:9"},{"expression":{"hexValue":"74727565","id":4102,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"38780:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":4071,"id":4103,"nodeType":"Return","src":"38773:11:9"}]},"documentation":{"id":4058,"nodeType":"StructuredDocumentation","src":"37870:289:9","text":" @dev Revokes a previously approved subscription. This takes arbitrary user data.\n @param token Super Token used with the index.\n @param publisher Publisher of the index.\n @param indexId ID of the index.\n @param userData Arbitrary user data field."},"id":4105,"implemented":true,"kind":"function","modifiers":[],"name":"revokeSubscription","nameLocation":"38173:18:9","nodeType":"FunctionDefinition","parameters":{"id":4068,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4061,"mutability":"mutable","name":"token","nameLocation":"38213:5:9","nodeType":"VariableDeclaration","scope":4105,"src":"38201:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":4060,"nodeType":"UserDefinedTypeName","pathNode":{"id":4059,"name":"ISuperToken","nameLocations":["38201:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"38201:11:9"},"referencedDeclaration":7015,"src":"38201:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":4063,"mutability":"mutable","name":"publisher","nameLocation":"38236:9:9","nodeType":"VariableDeclaration","scope":4105,"src":"38228:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4062,"name":"address","nodeType":"ElementaryTypeName","src":"38228:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4065,"mutability":"mutable","name":"indexId","nameLocation":"38262:7:9","nodeType":"VariableDeclaration","scope":4105,"src":"38255:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4064,"name":"uint32","nodeType":"ElementaryTypeName","src":"38255:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":4067,"mutability":"mutable","name":"userData","nameLocation":"38292:8:9","nodeType":"VariableDeclaration","scope":4105,"src":"38279:21:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4066,"name":"bytes","nodeType":"ElementaryTypeName","src":"38279:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"38191:115:9"},"returnParameters":{"id":4071,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4070,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4105,"src":"38325:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4069,"name":"bool","nodeType":"ElementaryTypeName","src":"38325:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"38324:6:9"},"scope":5145,"src":"38164:627:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4153,"nodeType":"Block","src":"39311:481:9","statements":[{"assignments":[4122,4125],"declarations":[{"constant":false,"id":4122,"mutability":"mutable","name":"host","nameLocation":"39334:4:9","nodeType":"VariableDeclaration","scope":4153,"src":"39322:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"},"typeName":{"id":4121,"nodeType":"UserDefinedTypeName","pathNode":{"id":4120,"name":"ISuperfluid","nameLocations":["39322:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7667,"src":"39322:11:9"},"referencedDeclaration":7667,"src":"39322:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":4125,"mutability":"mutable","name":"ida","nameLocation":"39372:3:9","nodeType":"VariableDeclaration","scope":4153,"src":"39340:35:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"},"typeName":{"id":4124,"nodeType":"UserDefinedTypeName","pathNode":{"id":4123,"name":"IInstantDistributionAgreementV1","nameLocations":["39340:31:9"],"nodeType":"IdentifierPath","referencedDeclaration":5961,"src":"39340:31:9"},"referencedDeclaration":5961,"src":"39340:31:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"visibility":"internal"}],"id":4129,"initialValue":{"arguments":[{"id":4127,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4109,"src":"39402:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}],"id":4126,"name":"_getAndCacheHostAndIDA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4980,"src":"39379:22:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$7015_$returns$_t_contract$_ISuperfluid_$7667_$_t_contract$_IInstantDistributionAgreementV1_$5961_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"id":4128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39379:29:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7667_$_t_contract$_IInstantDistributionAgreementV1_$5961_$","typeString":"tuple(contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"39321:87:9"},{"expression":{"arguments":[{"id":4133,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4125,"src":"39447:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},{"arguments":[{"expression":{"id":4136,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4125,"src":"39496:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"id":4137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"39500:18:9","memberName":"updateSubscription","nodeType":"MemberAccess","referencedDeclaration":5808,"src":"39496:22:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_uint32_$_t_address_$_t_uint128_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,uint32,address,uint128,bytes memory) external returns (bytes memory)"}},{"components":[{"id":4138,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4109,"src":"39558:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},{"id":4139,"name":"indexId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4111,"src":"39585:7:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":4140,"name":"subscriber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4113,"src":"39614:10:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4141,"name":"units","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4115,"src":"39646:5:9","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"arguments":[{"hexValue":"30","id":4144,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"39683:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4143,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"39673:9:9","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":4142,"name":"bytes","nodeType":"ElementaryTypeName","src":"39677:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":4145,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39673:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":4146,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"39536:186:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_uint32_$_t_address_$_t_uint128_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,uint32,address,uint128,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_uint32_$_t_address_$_t_uint128_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,uint32,address,uint128,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_uint32_$_t_address_$_t_uint128_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,uint32,address,uint128,bytes memory)"}],"expression":{"id":4134,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"39464:3:9","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4135,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"39468:10:9","memberName":"encodeCall","nodeType":"MemberAccess","src":"39464:14:9","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4147,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39464:272:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"3078","id":4148,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"39750:4:9","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""}],"expression":{"id":4130,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4122,"src":"39418:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"id":4132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"39423:13:9","memberName":"callAgreement","nodeType":"MemberAccess","referencedDeclaration":7565,"src":"39418:18:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6463_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory) external returns (bytes memory)"}},"id":4149,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"39418:346:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4150,"nodeType":"ExpressionStatement","src":"39418:346:9"},{"expression":{"hexValue":"74727565","id":4151,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"39781:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":4119,"id":4152,"nodeType":"Return","src":"39774:11:9"}]},"documentation":{"id":4106,"nodeType":"StructuredDocumentation","src":"38797:344:9","text":" @dev Updates the units of a subscription. This changes the number of shares the subscriber holds\n @param token Super Token used with the index.\n @param indexId ID of the index.\n @param subscriber Subscriber address whose units are to be updated.\n @param units New number of units the subscriber holds."},"id":4154,"implemented":true,"kind":"function","modifiers":[],"name":"updateSubscriptionUnits","nameLocation":"39155:23:9","nodeType":"FunctionDefinition","parameters":{"id":4116,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4109,"mutability":"mutable","name":"token","nameLocation":"39200:5:9","nodeType":"VariableDeclaration","scope":4154,"src":"39188:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":4108,"nodeType":"UserDefinedTypeName","pathNode":{"id":4107,"name":"ISuperToken","nameLocations":["39188:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"39188:11:9"},"referencedDeclaration":7015,"src":"39188:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":4111,"mutability":"mutable","name":"indexId","nameLocation":"39222:7:9","nodeType":"VariableDeclaration","scope":4154,"src":"39215:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4110,"name":"uint32","nodeType":"ElementaryTypeName","src":"39215:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":4113,"mutability":"mutable","name":"subscriber","nameLocation":"39247:10:9","nodeType":"VariableDeclaration","scope":4154,"src":"39239:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4112,"name":"address","nodeType":"ElementaryTypeName","src":"39239:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4115,"mutability":"mutable","name":"units","nameLocation":"39275:5:9","nodeType":"VariableDeclaration","scope":4154,"src":"39267:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":4114,"name":"uint128","nodeType":"ElementaryTypeName","src":"39267:7:9","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"39178:108:9"},"returnParameters":{"id":4119,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4118,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4154,"src":"39305:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4117,"name":"bool","nodeType":"ElementaryTypeName","src":"39305:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"39304:6:9"},"scope":5145,"src":"39146:646:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4204,"nodeType":"Block","src":"40433:485:9","statements":[{"assignments":[4173,4176],"declarations":[{"constant":false,"id":4173,"mutability":"mutable","name":"host","nameLocation":"40456:4:9","nodeType":"VariableDeclaration","scope":4204,"src":"40444:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"},"typeName":{"id":4172,"nodeType":"UserDefinedTypeName","pathNode":{"id":4171,"name":"ISuperfluid","nameLocations":["40444:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7667,"src":"40444:11:9"},"referencedDeclaration":7667,"src":"40444:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":4176,"mutability":"mutable","name":"ida","nameLocation":"40494:3:9","nodeType":"VariableDeclaration","scope":4204,"src":"40462:35:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"},"typeName":{"id":4175,"nodeType":"UserDefinedTypeName","pathNode":{"id":4174,"name":"IInstantDistributionAgreementV1","nameLocations":["40462:31:9"],"nodeType":"IdentifierPath","referencedDeclaration":5961,"src":"40462:31:9"},"referencedDeclaration":5961,"src":"40462:31:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"visibility":"internal"}],"id":4180,"initialValue":{"arguments":[{"id":4178,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4158,"src":"40524:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}],"id":4177,"name":"_getAndCacheHostAndIDA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4980,"src":"40501:22:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$7015_$returns$_t_contract$_ISuperfluid_$7667_$_t_contract$_IInstantDistributionAgreementV1_$5961_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"id":4179,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40501:29:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7667_$_t_contract$_IInstantDistributionAgreementV1_$5961_$","typeString":"tuple(contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"40443:87:9"},{"expression":{"arguments":[{"id":4184,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4176,"src":"40569:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},{"arguments":[{"expression":{"id":4187,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4176,"src":"40618:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"id":4188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40622:18:9","memberName":"updateSubscription","nodeType":"MemberAccess","referencedDeclaration":5808,"src":"40618:22:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_uint32_$_t_address_$_t_uint128_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,uint32,address,uint128,bytes memory) external returns (bytes memory)"}},{"components":[{"id":4189,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4158,"src":"40680:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},{"id":4190,"name":"indexId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4160,"src":"40707:7:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":4191,"name":"subscriber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4162,"src":"40736:10:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4192,"name":"units","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4164,"src":"40768:5:9","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"arguments":[{"hexValue":"30","id":4195,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"40805:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4194,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"40795:9:9","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":4193,"name":"bytes","nodeType":"ElementaryTypeName","src":"40799:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":4196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40795:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":4197,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"40658:186:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_uint32_$_t_address_$_t_uint128_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,uint32,address,uint128,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_uint32_$_t_address_$_t_uint128_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,uint32,address,uint128,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_uint32_$_t_address_$_t_uint128_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,uint32,address,uint128,bytes memory)"}],"expression":{"id":4185,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"40586:3:9","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4186,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"40590:10:9","memberName":"encodeCall","nodeType":"MemberAccess","src":"40586:14:9","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4198,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40586:272:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":4199,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4166,"src":"40872:8:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":4181,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4173,"src":"40540:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"id":4183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"40545:13:9","memberName":"callAgreement","nodeType":"MemberAccess","referencedDeclaration":7565,"src":"40540:18:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6463_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory) external returns (bytes memory)"}},"id":4200,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"40540:350:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4201,"nodeType":"ExpressionStatement","src":"40540:350:9"},{"expression":{"hexValue":"74727565","id":4202,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"40907:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":4170,"id":4203,"nodeType":"Return","src":"40900:11:9"}]},"documentation":{"id":4155,"nodeType":"StructuredDocumentation","src":"39798:434:9","text":" @dev Updates the units of a subscription. This changes the number of shares the subscriber\n holds. This takes arbitrary user data.\n @param token Super Token used with the index.\n @param indexId ID of the index.\n @param subscriber Subscriber address whose units are to be updated.\n @param units New number of units the subscriber holds.\n @param userData Arbitrary user data field."},"id":4205,"implemented":true,"kind":"function","modifiers":[],"name":"updateSubscriptionUnits","nameLocation":"40246:23:9","nodeType":"FunctionDefinition","parameters":{"id":4167,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4158,"mutability":"mutable","name":"token","nameLocation":"40291:5:9","nodeType":"VariableDeclaration","scope":4205,"src":"40279:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":4157,"nodeType":"UserDefinedTypeName","pathNode":{"id":4156,"name":"ISuperToken","nameLocations":["40279:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"40279:11:9"},"referencedDeclaration":7015,"src":"40279:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":4160,"mutability":"mutable","name":"indexId","nameLocation":"40313:7:9","nodeType":"VariableDeclaration","scope":4205,"src":"40306:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4159,"name":"uint32","nodeType":"ElementaryTypeName","src":"40306:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":4162,"mutability":"mutable","name":"subscriber","nameLocation":"40338:10:9","nodeType":"VariableDeclaration","scope":4205,"src":"40330:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4161,"name":"address","nodeType":"ElementaryTypeName","src":"40330:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4164,"mutability":"mutable","name":"units","nameLocation":"40366:5:9","nodeType":"VariableDeclaration","scope":4205,"src":"40358:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":4163,"name":"uint128","nodeType":"ElementaryTypeName","src":"40358:7:9","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":4166,"mutability":"mutable","name":"userData","nameLocation":"40394:8:9","nodeType":"VariableDeclaration","scope":4205,"src":"40381:21:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4165,"name":"bytes","nodeType":"ElementaryTypeName","src":"40381:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"40269:139:9"},"returnParameters":{"id":4170,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4169,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4205,"src":"40427:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4168,"name":"bool","nodeType":"ElementaryTypeName","src":"40427:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"40426:6:9"},"scope":5145,"src":"40237:681:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4253,"nodeType":"Block","src":"41391:488:9","statements":[{"assignments":[4222,4225],"declarations":[{"constant":false,"id":4222,"mutability":"mutable","name":"host","nameLocation":"41414:4:9","nodeType":"VariableDeclaration","scope":4253,"src":"41402:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"},"typeName":{"id":4221,"nodeType":"UserDefinedTypeName","pathNode":{"id":4220,"name":"ISuperfluid","nameLocations":["41402:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7667,"src":"41402:11:9"},"referencedDeclaration":7667,"src":"41402:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":4225,"mutability":"mutable","name":"ida","nameLocation":"41452:3:9","nodeType":"VariableDeclaration","scope":4253,"src":"41420:35:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"},"typeName":{"id":4224,"nodeType":"UserDefinedTypeName","pathNode":{"id":4223,"name":"IInstantDistributionAgreementV1","nameLocations":["41420:31:9"],"nodeType":"IdentifierPath","referencedDeclaration":5961,"src":"41420:31:9"},"referencedDeclaration":5961,"src":"41420:31:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"visibility":"internal"}],"id":4229,"initialValue":{"arguments":[{"id":4227,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4209,"src":"41482:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}],"id":4226,"name":"_getAndCacheHostAndIDA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4980,"src":"41459:22:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$7015_$returns$_t_contract$_ISuperfluid_$7667_$_t_contract$_IInstantDistributionAgreementV1_$5961_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"id":4228,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41459:29:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7667_$_t_contract$_IInstantDistributionAgreementV1_$5961_$","typeString":"tuple(contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"41401:87:9"},{"expression":{"arguments":[{"id":4233,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4225,"src":"41530:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},{"arguments":[{"expression":{"id":4236,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4225,"src":"41579:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"id":4237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41583:18:9","memberName":"deleteSubscription","nodeType":"MemberAccess","referencedDeclaration":5915,"src":"41579:22:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_uint32_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,uint32,address,bytes memory) external returns (bytes memory)"}},{"components":[{"id":4238,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4209,"src":"41641:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},{"id":4239,"name":"publisher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4211,"src":"41668:9:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4240,"name":"indexId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4213,"src":"41699:7:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":4241,"name":"subscriber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4215,"src":"41728:10:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":4244,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"41770:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4243,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"41760:9:9","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":4242,"name":"bytes","nodeType":"ElementaryTypeName","src":"41764:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":4245,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41760:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":4246,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"41619:190:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_uint32_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,uint32,address,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_uint32_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,uint32,address,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_uint32_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,uint32,address,bytes memory)"}],"expression":{"id":4234,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"41547:3:9","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4235,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"41551:10:9","memberName":"encodeCall","nodeType":"MemberAccess","src":"41547:14:9","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4247,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41547:276:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"3078","id":4248,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"41837:4:9","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""}],"expression":{"id":4230,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4222,"src":"41498:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"id":4232,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"41503:13:9","memberName":"callAgreement","nodeType":"MemberAccess","referencedDeclaration":7565,"src":"41498:18:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6463_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory) external returns (bytes memory)"}},"id":4249,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"41498:353:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4250,"nodeType":"ExpressionStatement","src":"41498:353:9"},{"expression":{"hexValue":"74727565","id":4251,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"41868:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":4219,"id":4252,"nodeType":"Return","src":"41861:11:9"}]},"documentation":{"id":4206,"nodeType":"StructuredDocumentation","src":"40924:298:9","text":" @dev Deletes a subscription, setting a subcriber's units to zero\n @param token Super Token used with the index.\n @param publisher Publisher of the index.\n @param indexId ID of the index.\n @param subscriber Subscriber address whose units are to be deleted."},"id":4254,"implemented":true,"kind":"function","modifiers":[],"name":"deleteSubscription","nameLocation":"41236:18:9","nodeType":"FunctionDefinition","parameters":{"id":4216,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4209,"mutability":"mutable","name":"token","nameLocation":"41276:5:9","nodeType":"VariableDeclaration","scope":4254,"src":"41264:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":4208,"nodeType":"UserDefinedTypeName","pathNode":{"id":4207,"name":"ISuperToken","nameLocations":["41264:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"41264:11:9"},"referencedDeclaration":7015,"src":"41264:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":4211,"mutability":"mutable","name":"publisher","nameLocation":"41299:9:9","nodeType":"VariableDeclaration","scope":4254,"src":"41291:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4210,"name":"address","nodeType":"ElementaryTypeName","src":"41291:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4213,"mutability":"mutable","name":"indexId","nameLocation":"41325:7:9","nodeType":"VariableDeclaration","scope":4254,"src":"41318:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4212,"name":"uint32","nodeType":"ElementaryTypeName","src":"41318:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":4215,"mutability":"mutable","name":"subscriber","nameLocation":"41350:10:9","nodeType":"VariableDeclaration","scope":4254,"src":"41342:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4214,"name":"address","nodeType":"ElementaryTypeName","src":"41342:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"41254:112:9"},"returnParameters":{"id":4219,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4218,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4254,"src":"41385:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4217,"name":"bool","nodeType":"ElementaryTypeName","src":"41385:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"41384:6:9"},"scope":5145,"src":"41227:652:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4304,"nodeType":"Block","src":"42465:492:9","statements":[{"assignments":[4273,4276],"declarations":[{"constant":false,"id":4273,"mutability":"mutable","name":"host","nameLocation":"42488:4:9","nodeType":"VariableDeclaration","scope":4304,"src":"42476:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"},"typeName":{"id":4272,"nodeType":"UserDefinedTypeName","pathNode":{"id":4271,"name":"ISuperfluid","nameLocations":["42476:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7667,"src":"42476:11:9"},"referencedDeclaration":7667,"src":"42476:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":4276,"mutability":"mutable","name":"ida","nameLocation":"42526:3:9","nodeType":"VariableDeclaration","scope":4304,"src":"42494:35:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"},"typeName":{"id":4275,"nodeType":"UserDefinedTypeName","pathNode":{"id":4274,"name":"IInstantDistributionAgreementV1","nameLocations":["42494:31:9"],"nodeType":"IdentifierPath","referencedDeclaration":5961,"src":"42494:31:9"},"referencedDeclaration":5961,"src":"42494:31:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"visibility":"internal"}],"id":4280,"initialValue":{"arguments":[{"id":4278,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4258,"src":"42556:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}],"id":4277,"name":"_getAndCacheHostAndIDA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4980,"src":"42533:22:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$7015_$returns$_t_contract$_ISuperfluid_$7667_$_t_contract$_IInstantDistributionAgreementV1_$5961_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"id":4279,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42533:29:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7667_$_t_contract$_IInstantDistributionAgreementV1_$5961_$","typeString":"tuple(contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"42475:87:9"},{"expression":{"arguments":[{"id":4284,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4276,"src":"42604:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},{"arguments":[{"expression":{"id":4287,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4276,"src":"42653:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"id":4288,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42657:18:9","memberName":"deleteSubscription","nodeType":"MemberAccess","referencedDeclaration":5915,"src":"42653:22:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_uint32_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,uint32,address,bytes memory) external returns (bytes memory)"}},{"components":[{"id":4289,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4258,"src":"42715:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},{"id":4290,"name":"publisher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4260,"src":"42742:9:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4291,"name":"indexId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4262,"src":"42773:7:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":4292,"name":"subscriber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4264,"src":"42802:10:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":4295,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"42844:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4294,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"42834:9:9","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":4293,"name":"bytes","nodeType":"ElementaryTypeName","src":"42838:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":4296,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42834:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":4297,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"42693:190:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_uint32_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,uint32,address,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_uint32_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,uint32,address,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_uint32_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,uint32,address,bytes memory)"}],"expression":{"id":4285,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"42621:3:9","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4286,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"42625:10:9","memberName":"encodeCall","nodeType":"MemberAccess","src":"42621:14:9","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4298,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42621:276:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":4299,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4266,"src":"42911:8:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":4281,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4273,"src":"42572:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"id":4283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"42577:13:9","memberName":"callAgreement","nodeType":"MemberAccess","referencedDeclaration":7565,"src":"42572:18:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6463_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory) external returns (bytes memory)"}},"id":4300,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"42572:357:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4301,"nodeType":"ExpressionStatement","src":"42572:357:9"},{"expression":{"hexValue":"74727565","id":4302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"42946:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":4270,"id":4303,"nodeType":"Return","src":"42939:11:9"}]},"documentation":{"id":4255,"nodeType":"StructuredDocumentation","src":"41885:380:9","text":" @dev Deletes a subscription, setting a subcriber's units to zero. This takes arbitrary userdata.\n @param token Super Token used with the index.\n @param publisher Publisher of the index.\n @param indexId ID of the index.\n @param subscriber Subscriber address whose units are to be deleted.\n @param userData Arbitrary user data field."},"id":4305,"implemented":true,"kind":"function","modifiers":[],"name":"deleteSubscription","nameLocation":"42279:18:9","nodeType":"FunctionDefinition","parameters":{"id":4267,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4258,"mutability":"mutable","name":"token","nameLocation":"42319:5:9","nodeType":"VariableDeclaration","scope":4305,"src":"42307:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":4257,"nodeType":"UserDefinedTypeName","pathNode":{"id":4256,"name":"ISuperToken","nameLocations":["42307:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"42307:11:9"},"referencedDeclaration":7015,"src":"42307:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":4260,"mutability":"mutable","name":"publisher","nameLocation":"42342:9:9","nodeType":"VariableDeclaration","scope":4305,"src":"42334:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4259,"name":"address","nodeType":"ElementaryTypeName","src":"42334:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4262,"mutability":"mutable","name":"indexId","nameLocation":"42368:7:9","nodeType":"VariableDeclaration","scope":4305,"src":"42361:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4261,"name":"uint32","nodeType":"ElementaryTypeName","src":"42361:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":4264,"mutability":"mutable","name":"subscriber","nameLocation":"42393:10:9","nodeType":"VariableDeclaration","scope":4305,"src":"42385:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4263,"name":"address","nodeType":"ElementaryTypeName","src":"42385:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4266,"mutability":"mutable","name":"userData","nameLocation":"42426:8:9","nodeType":"VariableDeclaration","scope":4305,"src":"42413:21:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4265,"name":"bytes","nodeType":"ElementaryTypeName","src":"42413:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"42297:143:9"},"returnParameters":{"id":4270,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4269,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4305,"src":"42459:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4268,"name":"bool","nodeType":"ElementaryTypeName","src":"42459:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"42458:6:9"},"scope":5145,"src":"42270:687:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4353,"nodeType":"Block","src":"43416:476:9","statements":[{"assignments":[4322,4325],"declarations":[{"constant":false,"id":4322,"mutability":"mutable","name":"host","nameLocation":"43440:4:9","nodeType":"VariableDeclaration","scope":4353,"src":"43428:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"},"typeName":{"id":4321,"nodeType":"UserDefinedTypeName","pathNode":{"id":4320,"name":"ISuperfluid","nameLocations":["43428:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7667,"src":"43428:11:9"},"referencedDeclaration":7667,"src":"43428:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":4325,"mutability":"mutable","name":"ida","nameLocation":"43478:3:9","nodeType":"VariableDeclaration","scope":4353,"src":"43446:35:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"},"typeName":{"id":4324,"nodeType":"UserDefinedTypeName","pathNode":{"id":4323,"name":"IInstantDistributionAgreementV1","nameLocations":["43446:31:9"],"nodeType":"IdentifierPath","referencedDeclaration":5961,"src":"43446:31:9"},"referencedDeclaration":5961,"src":"43446:31:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"visibility":"internal"}],"id":4329,"initialValue":{"arguments":[{"id":4327,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4309,"src":"43508:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}],"id":4326,"name":"_getAndCacheHostAndIDA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4980,"src":"43485:22:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$7015_$returns$_t_contract$_ISuperfluid_$7667_$_t_contract$_IInstantDistributionAgreementV1_$5961_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"id":4328,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"43485:29:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7667_$_t_contract$_IInstantDistributionAgreementV1_$5961_$","typeString":"tuple(contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"43427:87:9"},{"expression":{"arguments":[{"id":4333,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4325,"src":"43556:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},{"arguments":[{"expression":{"id":4336,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4325,"src":"43605:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"id":4337,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43609:5:9","memberName":"claim","nodeType":"MemberAccess","referencedDeclaration":5932,"src":"43605:9:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_uint32_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,uint32,address,bytes memory) external returns (bytes memory)"}},{"components":[{"id":4338,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4309,"src":"43654:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},{"id":4339,"name":"publisher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4311,"src":"43681:9:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4340,"name":"indexId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4313,"src":"43712:7:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":4341,"name":"subscriber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4315,"src":"43741:10:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":4344,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"43783:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4343,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"43773:9:9","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":4342,"name":"bytes","nodeType":"ElementaryTypeName","src":"43777:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":4345,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"43773:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":4346,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"43632:190:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_uint32_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,uint32,address,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_uint32_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,uint32,address,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_uint32_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,uint32,address,bytes memory)"}],"expression":{"id":4334,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"43573:3:9","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4335,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"43577:10:9","memberName":"encodeCall","nodeType":"MemberAccess","src":"43573:14:9","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4347,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"43573:263:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"3078","id":4348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"43850:4:9","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""}],"expression":{"id":4330,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4322,"src":"43524:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"id":4332,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"43529:13:9","memberName":"callAgreement","nodeType":"MemberAccess","referencedDeclaration":7565,"src":"43524:18:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6463_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory) external returns (bytes memory)"}},"id":4349,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"43524:340:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4350,"nodeType":"ExpressionStatement","src":"43524:340:9"},{"expression":{"hexValue":"74727565","id":4351,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"43881:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":4319,"id":4352,"nodeType":"Return","src":"43874:11:9"}]},"documentation":{"id":4306,"nodeType":"StructuredDocumentation","src":"42963:297:9","text":" @dev Claims pending distribution. Subscription should not be approved\n @param token Super Token used with the index.\n @param publisher Publisher of the index.\n @param indexId ID of the index.\n @param subscriber Subscriber address that receives the claim."},"id":4354,"implemented":true,"kind":"function","modifiers":[],"name":"claim","nameLocation":"43274:5:9","nodeType":"FunctionDefinition","parameters":{"id":4316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4309,"mutability":"mutable","name":"token","nameLocation":"43301:5:9","nodeType":"VariableDeclaration","scope":4354,"src":"43289:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":4308,"nodeType":"UserDefinedTypeName","pathNode":{"id":4307,"name":"ISuperToken","nameLocations":["43289:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"43289:11:9"},"referencedDeclaration":7015,"src":"43289:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":4311,"mutability":"mutable","name":"publisher","nameLocation":"43324:9:9","nodeType":"VariableDeclaration","scope":4354,"src":"43316:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4310,"name":"address","nodeType":"ElementaryTypeName","src":"43316:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4313,"mutability":"mutable","name":"indexId","nameLocation":"43350:7:9","nodeType":"VariableDeclaration","scope":4354,"src":"43343:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4312,"name":"uint32","nodeType":"ElementaryTypeName","src":"43343:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":4315,"mutability":"mutable","name":"subscriber","nameLocation":"43375:10:9","nodeType":"VariableDeclaration","scope":4354,"src":"43367:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4314,"name":"address","nodeType":"ElementaryTypeName","src":"43367:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"43279:112:9"},"returnParameters":{"id":4319,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4318,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4354,"src":"43410:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4317,"name":"bool","nodeType":"ElementaryTypeName","src":"43410:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"43409:6:9"},"scope":5145,"src":"43265:627:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4404,"nodeType":"Block","src":"44465:480:9","statements":[{"assignments":[4373,4376],"declarations":[{"constant":false,"id":4373,"mutability":"mutable","name":"host","nameLocation":"44489:4:9","nodeType":"VariableDeclaration","scope":4404,"src":"44477:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"},"typeName":{"id":4372,"nodeType":"UserDefinedTypeName","pathNode":{"id":4371,"name":"ISuperfluid","nameLocations":["44477:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7667,"src":"44477:11:9"},"referencedDeclaration":7667,"src":"44477:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":4376,"mutability":"mutable","name":"ida","nameLocation":"44527:3:9","nodeType":"VariableDeclaration","scope":4404,"src":"44495:35:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"},"typeName":{"id":4375,"nodeType":"UserDefinedTypeName","pathNode":{"id":4374,"name":"IInstantDistributionAgreementV1","nameLocations":["44495:31:9"],"nodeType":"IdentifierPath","referencedDeclaration":5961,"src":"44495:31:9"},"referencedDeclaration":5961,"src":"44495:31:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"visibility":"internal"}],"id":4380,"initialValue":{"arguments":[{"id":4378,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4358,"src":"44557:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}],"id":4377,"name":"_getAndCacheHostAndIDA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4980,"src":"44534:22:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$7015_$returns$_t_contract$_ISuperfluid_$7667_$_t_contract$_IInstantDistributionAgreementV1_$5961_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"id":4379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44534:29:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7667_$_t_contract$_IInstantDistributionAgreementV1_$5961_$","typeString":"tuple(contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"44476:87:9"},{"expression":{"arguments":[{"id":4384,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4376,"src":"44605:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},{"arguments":[{"expression":{"id":4387,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4376,"src":"44654:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"id":4388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"44658:5:9","memberName":"claim","nodeType":"MemberAccess","referencedDeclaration":5932,"src":"44654:9:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_uint32_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,uint32,address,bytes memory) external returns (bytes memory)"}},{"components":[{"id":4389,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4358,"src":"44703:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},{"id":4390,"name":"publisher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4360,"src":"44730:9:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4391,"name":"indexId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4362,"src":"44761:7:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":4392,"name":"subscriber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4364,"src":"44790:10:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":4395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"44832:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4394,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"44822:9:9","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":4393,"name":"bytes","nodeType":"ElementaryTypeName","src":"44826:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":4396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44822:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":4397,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"44681:190:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_uint32_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,uint32,address,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_uint32_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,uint32,address,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_uint32_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,uint32,address,bytes memory)"}],"expression":{"id":4385,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"44622:3:9","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4386,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"44626:10:9","memberName":"encodeCall","nodeType":"MemberAccess","src":"44622:14:9","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4398,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44622:263:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":4399,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4366,"src":"44899:8:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":4381,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4373,"src":"44573:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"id":4383,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"44578:13:9","memberName":"callAgreement","nodeType":"MemberAccess","referencedDeclaration":7565,"src":"44573:18:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6463_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory) external returns (bytes memory)"}},"id":4400,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"44573:344:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4401,"nodeType":"ExpressionStatement","src":"44573:344:9"},{"expression":{"hexValue":"74727565","id":4402,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"44934:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":4370,"id":4403,"nodeType":"Return","src":"44927:11:9"}]},"documentation":{"id":4355,"nodeType":"StructuredDocumentation","src":"43898:380:9","text":" @dev Claims pending distribution. Subscription should not be approved. This takes arbitrary user data.\n @param token Super Token used with the index.\n @param publisher Publisher of the index.\n @param indexId ID of the index.\n @param subscriber Subscriber address that receives the claim.\n @param userData Arbitrary user data field."},"id":4405,"implemented":true,"kind":"function","modifiers":[],"name":"claim","nameLocation":"44292:5:9","nodeType":"FunctionDefinition","parameters":{"id":4367,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4358,"mutability":"mutable","name":"token","nameLocation":"44319:5:9","nodeType":"VariableDeclaration","scope":4405,"src":"44307:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":4357,"nodeType":"UserDefinedTypeName","pathNode":{"id":4356,"name":"ISuperToken","nameLocations":["44307:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"44307:11:9"},"referencedDeclaration":7015,"src":"44307:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":4360,"mutability":"mutable","name":"publisher","nameLocation":"44342:9:9","nodeType":"VariableDeclaration","scope":4405,"src":"44334:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4359,"name":"address","nodeType":"ElementaryTypeName","src":"44334:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4362,"mutability":"mutable","name":"indexId","nameLocation":"44368:7:9","nodeType":"VariableDeclaration","scope":4405,"src":"44361:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4361,"name":"uint32","nodeType":"ElementaryTypeName","src":"44361:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":4364,"mutability":"mutable","name":"subscriber","nameLocation":"44393:10:9","nodeType":"VariableDeclaration","scope":4405,"src":"44385:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4363,"name":"address","nodeType":"ElementaryTypeName","src":"44385:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4366,"mutability":"mutable","name":"userData","nameLocation":"44426:8:9","nodeType":"VariableDeclaration","scope":4405,"src":"44413:21:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4365,"name":"bytes","nodeType":"ElementaryTypeName","src":"44413:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"44297:143:9"},"returnParameters":{"id":4370,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4369,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4405,"src":"44459:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4368,"name":"bool","nodeType":"ElementaryTypeName","src":"44459:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"44458:6:9"},"scope":5145,"src":"44283:662:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4450,"nodeType":"Block","src":"45412:438:9","statements":[{"assignments":[4420,4423],"declarations":[{"constant":false,"id":4420,"mutability":"mutable","name":"host","nameLocation":"45435:4:9","nodeType":"VariableDeclaration","scope":4450,"src":"45423:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"},"typeName":{"id":4419,"nodeType":"UserDefinedTypeName","pathNode":{"id":4418,"name":"ISuperfluid","nameLocations":["45423:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7667,"src":"45423:11:9"},"referencedDeclaration":7667,"src":"45423:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":4423,"mutability":"mutable","name":"ida","nameLocation":"45473:3:9","nodeType":"VariableDeclaration","scope":4450,"src":"45441:35:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"},"typeName":{"id":4422,"nodeType":"UserDefinedTypeName","pathNode":{"id":4421,"name":"IInstantDistributionAgreementV1","nameLocations":["45441:31:9"],"nodeType":"IdentifierPath","referencedDeclaration":5961,"src":"45441:31:9"},"referencedDeclaration":5961,"src":"45441:31:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"visibility":"internal"}],"id":4427,"initialValue":{"arguments":[{"id":4425,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4409,"src":"45503:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}],"id":4424,"name":"_getAndCacheHostAndIDA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4980,"src":"45480:22:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$7015_$returns$_t_contract$_ISuperfluid_$7667_$_t_contract$_IInstantDistributionAgreementV1_$5961_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"id":4426,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45480:29:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7667_$_t_contract$_IInstantDistributionAgreementV1_$5961_$","typeString":"tuple(contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"45422:87:9"},{"expression":{"id":4448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":4428,"name":"newCtx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4416,"src":"45520:6:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},null],"id":4429,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"45519:10:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$__$","typeString":"tuple(bytes memory,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4432,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4423,"src":"45575:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},{"arguments":[{"expression":{"id":4435,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4423,"src":"45624:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"id":4436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"45628:11:9","memberName":"createIndex","nodeType":"MemberAccess","referencedDeclaration":5607,"src":"45624:15:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_uint32_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,uint32,bytes memory) external returns (bytes memory)"}},{"components":[{"id":4437,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4409,"src":"45679:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},{"id":4438,"name":"indexId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4411,"src":"45706:7:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"arguments":[{"hexValue":"30","id":4441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"45745:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4440,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"45735:9:9","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":4439,"name":"bytes","nodeType":"ElementaryTypeName","src":"45739:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":4442,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45735:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":4443,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"45657:127:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_uint32_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,uint32,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_uint32_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,uint32,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_uint32_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,uint32,bytes memory)"}],"expression":{"id":4433,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"45592:3:9","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4434,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"45596:10:9","memberName":"encodeCall","nodeType":"MemberAccess","src":"45592:14:9","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4444,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45592:206:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"3078","id":4445,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"45812:4:9","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"},{"id":4446,"name":"ctx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4413,"src":"45830:3:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":4430,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4420,"src":"45532:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"id":4431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"45537:24:9","memberName":"callAgreementWithContext","nodeType":"MemberAccess","referencedDeclaration":7616,"src":"45532:29:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6463_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory,bytes memory) external returns (bytes memory,bytes memory)"}},"id":4447,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"45532:311:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(bytes memory,bytes memory)"}},"src":"45519:324:9","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4449,"nodeType":"ExpressionStatement","src":"45519:324:9"}]},"documentation":{"id":4406,"nodeType":"StructuredDocumentation","src":"45024:233:9","text":" @dev Creates a new index with ctx.\n Meant for usage in super app callbacks\n @param token Super Token used with the index.\n @param indexId ID of the index.\n @param ctx from super app callback"},"id":4451,"implemented":true,"kind":"function","modifiers":[],"name":"createIndexWithCtx","nameLocation":"45271:18:9","nodeType":"FunctionDefinition","parameters":{"id":4414,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4409,"mutability":"mutable","name":"token","nameLocation":"45311:5:9","nodeType":"VariableDeclaration","scope":4451,"src":"45299:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":4408,"nodeType":"UserDefinedTypeName","pathNode":{"id":4407,"name":"ISuperToken","nameLocations":["45299:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"45299:11:9"},"referencedDeclaration":7015,"src":"45299:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":4411,"mutability":"mutable","name":"indexId","nameLocation":"45333:7:9","nodeType":"VariableDeclaration","scope":4451,"src":"45326:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4410,"name":"uint32","nodeType":"ElementaryTypeName","src":"45326:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":4413,"mutability":"mutable","name":"ctx","nameLocation":"45363:3:9","nodeType":"VariableDeclaration","scope":4451,"src":"45350:16:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4412,"name":"bytes","nodeType":"ElementaryTypeName","src":"45350:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"45289:83:9"},"returnParameters":{"id":4417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4416,"mutability":"mutable","name":"newCtx","nameLocation":"45404:6:9","nodeType":"VariableDeclaration","scope":4451,"src":"45391:19:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4415,"name":"bytes","nodeType":"ElementaryTypeName","src":"45391:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"45390:21:9"},"scope":5145,"src":"45262:588:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4499,"nodeType":"Block","src":"46506:470:9","statements":[{"assignments":[4468,4471],"declarations":[{"constant":false,"id":4468,"mutability":"mutable","name":"host","nameLocation":"46529:4:9","nodeType":"VariableDeclaration","scope":4499,"src":"46517:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"},"typeName":{"id":4467,"nodeType":"UserDefinedTypeName","pathNode":{"id":4466,"name":"ISuperfluid","nameLocations":["46517:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7667,"src":"46517:11:9"},"referencedDeclaration":7667,"src":"46517:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":4471,"mutability":"mutable","name":"ida","nameLocation":"46567:3:9","nodeType":"VariableDeclaration","scope":4499,"src":"46535:35:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"},"typeName":{"id":4470,"nodeType":"UserDefinedTypeName","pathNode":{"id":4469,"name":"IInstantDistributionAgreementV1","nameLocations":["46535:31:9"],"nodeType":"IdentifierPath","referencedDeclaration":5961,"src":"46535:31:9"},"referencedDeclaration":5961,"src":"46535:31:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"visibility":"internal"}],"id":4475,"initialValue":{"arguments":[{"id":4473,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4455,"src":"46597:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}],"id":4472,"name":"_getAndCacheHostAndIDA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4980,"src":"46574:22:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$7015_$returns$_t_contract$_ISuperfluid_$7667_$_t_contract$_IInstantDistributionAgreementV1_$5961_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"id":4474,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46574:29:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7667_$_t_contract$_IInstantDistributionAgreementV1_$5961_$","typeString":"tuple(contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"46516:87:9"},{"expression":{"id":4497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":4476,"name":"newCtx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4464,"src":"46614:6:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},null],"id":4477,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"46613:10:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$__$","typeString":"tuple(bytes memory,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4480,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4471,"src":"46669:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},{"arguments":[{"expression":{"id":4483,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4471,"src":"46718:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"id":4484,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"46722:11:9","memberName":"updateIndex","nodeType":"MemberAccess","referencedDeclaration":5670,"src":"46718:15:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_uint32_$_t_uint128_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,uint32,uint128,bytes memory) external returns (bytes memory)"}},{"components":[{"id":4485,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4455,"src":"46773:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},{"id":4486,"name":"indexId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4457,"src":"46800:7:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":4487,"name":"indexValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4459,"src":"46829:10:9","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"arguments":[{"hexValue":"30","id":4490,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"46871:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4489,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"46861:9:9","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":4488,"name":"bytes","nodeType":"ElementaryTypeName","src":"46865:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":4491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46861:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":4492,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"46751:159:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_uint32_$_t_uint128_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,uint32,uint128,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_uint32_$_t_uint128_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,uint32,uint128,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_uint32_$_t_uint128_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,uint32,uint128,bytes memory)"}],"expression":{"id":4481,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"46686:3:9","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4482,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"46690:10:9","memberName":"encodeCall","nodeType":"MemberAccess","src":"46686:14:9","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4493,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46686:238:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"3078","id":4494,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"46938:4:9","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"},{"id":4495,"name":"ctx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4461,"src":"46956:3:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":4478,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4468,"src":"46626:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"id":4479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"46631:24:9","memberName":"callAgreementWithContext","nodeType":"MemberAccess","referencedDeclaration":7616,"src":"46626:29:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6463_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory,bytes memory) external returns (bytes memory,bytes memory)"}},"id":4496,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"46626:343:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(bytes memory,bytes memory)"}},"src":"46613:356:9","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4498,"nodeType":"ExpressionStatement","src":"46613:356:9"}]},"documentation":{"id":4452,"nodeType":"StructuredDocumentation","src":"45856:462:9","text":" @dev Updates an index value with ctx. This distributes an amount of tokens equal to\n `indexValue - lastIndexValue`. See `distribute` for another way to distribute.\n Meant for usage in super app callbakcs\n @param token Super Token used with the index.\n @param indexId ID of the index.\n @param indexValue New TOTAL index value, this will equal the total amount distributed.\n @param ctx from super app callback"},"id":4500,"implemented":true,"kind":"function","modifiers":[],"name":"updateIndexValueWithCtx","nameLocation":"46332:23:9","nodeType":"FunctionDefinition","parameters":{"id":4462,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4455,"mutability":"mutable","name":"token","nameLocation":"46377:5:9","nodeType":"VariableDeclaration","scope":4500,"src":"46365:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":4454,"nodeType":"UserDefinedTypeName","pathNode":{"id":4453,"name":"ISuperToken","nameLocations":["46365:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"46365:11:9"},"referencedDeclaration":7015,"src":"46365:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":4457,"mutability":"mutable","name":"indexId","nameLocation":"46399:7:9","nodeType":"VariableDeclaration","scope":4500,"src":"46392:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4456,"name":"uint32","nodeType":"ElementaryTypeName","src":"46392:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":4459,"mutability":"mutable","name":"indexValue","nameLocation":"46424:10:9","nodeType":"VariableDeclaration","scope":4500,"src":"46416:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":4458,"name":"uint128","nodeType":"ElementaryTypeName","src":"46416:7:9","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":4461,"mutability":"mutable","name":"ctx","nameLocation":"46457:3:9","nodeType":"VariableDeclaration","scope":4500,"src":"46444:16:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4460,"name":"bytes","nodeType":"ElementaryTypeName","src":"46444:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"46355:111:9"},"returnParameters":{"id":4465,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4464,"mutability":"mutable","name":"newCtx","nameLocation":"46498:6:9","nodeType":"VariableDeclaration","scope":4500,"src":"46485:19:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4463,"name":"bytes","nodeType":"ElementaryTypeName","src":"46485:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"46484:21:9"},"scope":5145,"src":"46323:653:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4548,"nodeType":"Block","src":"47568:465:9","statements":[{"assignments":[4517,4520],"declarations":[{"constant":false,"id":4517,"mutability":"mutable","name":"host","nameLocation":"47591:4:9","nodeType":"VariableDeclaration","scope":4548,"src":"47579:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"},"typeName":{"id":4516,"nodeType":"UserDefinedTypeName","pathNode":{"id":4515,"name":"ISuperfluid","nameLocations":["47579:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7667,"src":"47579:11:9"},"referencedDeclaration":7667,"src":"47579:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":4520,"mutability":"mutable","name":"ida","nameLocation":"47629:3:9","nodeType":"VariableDeclaration","scope":4548,"src":"47597:35:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"},"typeName":{"id":4519,"nodeType":"UserDefinedTypeName","pathNode":{"id":4518,"name":"IInstantDistributionAgreementV1","nameLocations":["47597:31:9"],"nodeType":"IdentifierPath","referencedDeclaration":5961,"src":"47597:31:9"},"referencedDeclaration":5961,"src":"47597:31:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"visibility":"internal"}],"id":4524,"initialValue":{"arguments":[{"id":4522,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4504,"src":"47659:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}],"id":4521,"name":"_getAndCacheHostAndIDA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4980,"src":"47636:22:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$7015_$returns$_t_contract$_ISuperfluid_$7667_$_t_contract$_IInstantDistributionAgreementV1_$5961_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"id":4523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47636:29:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7667_$_t_contract$_IInstantDistributionAgreementV1_$5961_$","typeString":"tuple(contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"47578:87:9"},{"expression":{"id":4546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":4525,"name":"newCtx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4513,"src":"47676:6:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},null],"id":4526,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"47675:10:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$__$","typeString":"tuple(bytes memory,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4529,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4520,"src":"47731:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},{"arguments":[{"expression":{"id":4532,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4520,"src":"47780:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"id":4533,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"47784:10:9","memberName":"distribute","nodeType":"MemberAccess","referencedDeclaration":5705,"src":"47780:14:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_uint32_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,uint32,uint256,bytes memory) external returns (bytes memory)"}},{"components":[{"id":4534,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4504,"src":"47834:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},{"id":4535,"name":"indexId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4506,"src":"47861:7:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":4536,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4508,"src":"47890:6:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"hexValue":"30","id":4539,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"47928:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4538,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"47918:9:9","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":4537,"name":"bytes","nodeType":"ElementaryTypeName","src":"47922:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":4540,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47918:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":4541,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"47812:155:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_uint32_$_t_uint256_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,uint32,uint256,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_uint32_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,uint32,uint256,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_uint32_$_t_uint256_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,uint32,uint256,bytes memory)"}],"expression":{"id":4530,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"47748:3:9","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4531,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"47752:10:9","memberName":"encodeCall","nodeType":"MemberAccess","src":"47748:14:9","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4542,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47748:233:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"3078","id":4543,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"47995:4:9","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"},{"id":4544,"name":"ctx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4510,"src":"48013:3:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":4527,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4517,"src":"47688:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"id":4528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"47693:24:9","memberName":"callAgreementWithContext","nodeType":"MemberAccess","referencedDeclaration":7616,"src":"47688:29:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6463_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory,bytes memory) external returns (bytes memory,bytes memory)"}},"id":4545,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"47688:338:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(bytes memory,bytes memory)"}},"src":"47675:351:9","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4547,"nodeType":"ExpressionStatement","src":"47675:351:9"}]},"documentation":{"id":4501,"nodeType":"StructuredDocumentation","src":"46982:408:9","text":" @dev Distributes tokens in a more developer friendly way than `updateIndex`.Instead of\n passing the new total index value, this function will increase the index value by `amount`.\n @param token Super Token used with the index.\n @param indexId ID of the index.\n @param amount Amount by which the index value should increase.\n @param ctx from super app callback"},"id":4549,"implemented":true,"kind":"function","modifiers":[],"name":"distributeWithCtx","nameLocation":"47404:17:9","nodeType":"FunctionDefinition","parameters":{"id":4511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4504,"mutability":"mutable","name":"token","nameLocation":"47443:5:9","nodeType":"VariableDeclaration","scope":4549,"src":"47431:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":4503,"nodeType":"UserDefinedTypeName","pathNode":{"id":4502,"name":"ISuperToken","nameLocations":["47431:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"47431:11:9"},"referencedDeclaration":7015,"src":"47431:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":4506,"mutability":"mutable","name":"indexId","nameLocation":"47465:7:9","nodeType":"VariableDeclaration","scope":4549,"src":"47458:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4505,"name":"uint32","nodeType":"ElementaryTypeName","src":"47458:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":4508,"mutability":"mutable","name":"amount","nameLocation":"47490:6:9","nodeType":"VariableDeclaration","scope":4549,"src":"47482:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4507,"name":"uint256","nodeType":"ElementaryTypeName","src":"47482:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4510,"mutability":"mutable","name":"ctx","nameLocation":"47519:3:9","nodeType":"VariableDeclaration","scope":4549,"src":"47506:16:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4509,"name":"bytes","nodeType":"ElementaryTypeName","src":"47506:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"47421:107:9"},"returnParameters":{"id":4514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4513,"mutability":"mutable","name":"newCtx","nameLocation":"47560:6:9","nodeType":"VariableDeclaration","scope":4549,"src":"47547:19:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4512,"name":"bytes","nodeType":"ElementaryTypeName","src":"47547:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"47546:21:9"},"scope":5145,"src":"47395:638:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4597,"nodeType":"Block","src":"48645:477:9","statements":[{"assignments":[4566,4569],"declarations":[{"constant":false,"id":4566,"mutability":"mutable","name":"host","nameLocation":"48668:4:9","nodeType":"VariableDeclaration","scope":4597,"src":"48656:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"},"typeName":{"id":4565,"nodeType":"UserDefinedTypeName","pathNode":{"id":4564,"name":"ISuperfluid","nameLocations":["48656:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7667,"src":"48656:11:9"},"referencedDeclaration":7667,"src":"48656:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":4569,"mutability":"mutable","name":"ida","nameLocation":"48706:3:9","nodeType":"VariableDeclaration","scope":4597,"src":"48674:35:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"},"typeName":{"id":4568,"nodeType":"UserDefinedTypeName","pathNode":{"id":4567,"name":"IInstantDistributionAgreementV1","nameLocations":["48674:31:9"],"nodeType":"IdentifierPath","referencedDeclaration":5961,"src":"48674:31:9"},"referencedDeclaration":5961,"src":"48674:31:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"visibility":"internal"}],"id":4573,"initialValue":{"arguments":[{"id":4571,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4553,"src":"48736:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}],"id":4570,"name":"_getAndCacheHostAndIDA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4980,"src":"48713:22:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$7015_$returns$_t_contract$_ISuperfluid_$7667_$_t_contract$_IInstantDistributionAgreementV1_$5961_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"id":4572,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"48713:29:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7667_$_t_contract$_IInstantDistributionAgreementV1_$5961_$","typeString":"tuple(contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"48655:87:9"},{"expression":{"id":4595,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":4574,"name":"newCtx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4562,"src":"48753:6:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},null],"id":4575,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"48752:10:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$__$","typeString":"tuple(bytes memory,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4578,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4569,"src":"48808:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},{"arguments":[{"expression":{"id":4581,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4569,"src":"48857:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"id":4582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"48861:19:9","memberName":"approveSubscription","nodeType":"MemberAccess","referencedDeclaration":5720,"src":"48857:23:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_uint32_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,uint32,bytes memory) external returns (bytes memory)"}},{"components":[{"id":4583,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4553,"src":"48920:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},{"id":4584,"name":"publisher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4555,"src":"48947:9:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4585,"name":"indexId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4557,"src":"48978:7:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"arguments":[{"hexValue":"30","id":4588,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"49017:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4587,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"49007:9:9","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":4586,"name":"bytes","nodeType":"ElementaryTypeName","src":"49011:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":4589,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49007:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":4590,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"48898:158:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_uint32_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,uint32,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_uint32_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,uint32,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_uint32_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,uint32,bytes memory)"}],"expression":{"id":4579,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"48825:3:9","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4580,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"48829:10:9","memberName":"encodeCall","nodeType":"MemberAccess","src":"48825:14:9","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4591,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"48825:245:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"3078","id":4592,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"49084:4:9","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"},{"id":4593,"name":"ctx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4559,"src":"49102:3:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":4576,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4566,"src":"48765:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"id":4577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"48770:24:9","memberName":"callAgreementWithContext","nodeType":"MemberAccess","referencedDeclaration":7616,"src":"48765:29:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6463_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory,bytes memory) external returns (bytes memory,bytes memory)"}},"id":4594,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"48765:350:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(bytes memory,bytes memory)"}},"src":"48752:363:9","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4596,"nodeType":"ExpressionStatement","src":"48752:363:9"}]},"documentation":{"id":4550,"nodeType":"StructuredDocumentation","src":"48039:416:9","text":" @dev Approves a subscription to an index. The subscriber's real time balance will not update\n until the subscription is approved, but once approved, the balance will be updated with\n prior distributions.\n @param token Super Token used with the index.\n @param publisher Publisher of the index.\n @param indexId ID of the index.\n @param ctx from super app callback"},"id":4598,"implemented":true,"kind":"function","modifiers":[],"name":"approveSubscriptionWithCtx","nameLocation":"48469:26:9","nodeType":"FunctionDefinition","parameters":{"id":4560,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4553,"mutability":"mutable","name":"token","nameLocation":"48517:5:9","nodeType":"VariableDeclaration","scope":4598,"src":"48505:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":4552,"nodeType":"UserDefinedTypeName","pathNode":{"id":4551,"name":"ISuperToken","nameLocations":["48505:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"48505:11:9"},"referencedDeclaration":7015,"src":"48505:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":4555,"mutability":"mutable","name":"publisher","nameLocation":"48540:9:9","nodeType":"VariableDeclaration","scope":4598,"src":"48532:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4554,"name":"address","nodeType":"ElementaryTypeName","src":"48532:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4557,"mutability":"mutable","name":"indexId","nameLocation":"48566:7:9","nodeType":"VariableDeclaration","scope":4598,"src":"48559:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4556,"name":"uint32","nodeType":"ElementaryTypeName","src":"48559:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":4559,"mutability":"mutable","name":"ctx","nameLocation":"48596:3:9","nodeType":"VariableDeclaration","scope":4598,"src":"48583:16:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4558,"name":"bytes","nodeType":"ElementaryTypeName","src":"48583:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"48495:110:9"},"returnParameters":{"id":4563,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4562,"mutability":"mutable","name":"newCtx","nameLocation":"48637:6:9","nodeType":"VariableDeclaration","scope":4598,"src":"48624:19:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4561,"name":"bytes","nodeType":"ElementaryTypeName","src":"48624:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"48623:21:9"},"scope":5145,"src":"48460:662:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4646,"nodeType":"Block","src":"49596:476:9","statements":[{"assignments":[4615,4618],"declarations":[{"constant":false,"id":4615,"mutability":"mutable","name":"host","nameLocation":"49619:4:9","nodeType":"VariableDeclaration","scope":4646,"src":"49607:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"},"typeName":{"id":4614,"nodeType":"UserDefinedTypeName","pathNode":{"id":4613,"name":"ISuperfluid","nameLocations":["49607:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7667,"src":"49607:11:9"},"referencedDeclaration":7667,"src":"49607:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":4618,"mutability":"mutable","name":"ida","nameLocation":"49657:3:9","nodeType":"VariableDeclaration","scope":4646,"src":"49625:35:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"},"typeName":{"id":4617,"nodeType":"UserDefinedTypeName","pathNode":{"id":4616,"name":"IInstantDistributionAgreementV1","nameLocations":["49625:31:9"],"nodeType":"IdentifierPath","referencedDeclaration":5961,"src":"49625:31:9"},"referencedDeclaration":5961,"src":"49625:31:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"visibility":"internal"}],"id":4622,"initialValue":{"arguments":[{"id":4620,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4602,"src":"49687:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}],"id":4619,"name":"_getAndCacheHostAndIDA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4980,"src":"49664:22:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$7015_$returns$_t_contract$_ISuperfluid_$7667_$_t_contract$_IInstantDistributionAgreementV1_$5961_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"id":4621,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49664:29:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7667_$_t_contract$_IInstantDistributionAgreementV1_$5961_$","typeString":"tuple(contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"49606:87:9"},{"expression":{"id":4644,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":4623,"name":"newCtx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4611,"src":"49704:6:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},null],"id":4624,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"49703:10:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$__$","typeString":"tuple(bytes memory,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4627,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4618,"src":"49759:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},{"arguments":[{"expression":{"id":4630,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4618,"src":"49808:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"id":4631,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"49812:18:9","memberName":"revokeSubscription","nodeType":"MemberAccess","referencedDeclaration":5763,"src":"49808:22:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_uint32_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,uint32,bytes memory) external returns (bytes memory)"}},{"components":[{"id":4632,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4602,"src":"49870:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},{"id":4633,"name":"publisher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4604,"src":"49897:9:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4634,"name":"indexId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4606,"src":"49928:7:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"arguments":[{"hexValue":"30","id":4637,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"49967:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4636,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"49957:9:9","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":4635,"name":"bytes","nodeType":"ElementaryTypeName","src":"49961:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":4638,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49957:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":4639,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"49848:158:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_uint32_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,uint32,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_uint32_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,uint32,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_uint32_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,uint32,bytes memory)"}],"expression":{"id":4628,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"49776:3:9","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4629,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"49780:10:9","memberName":"encodeCall","nodeType":"MemberAccess","src":"49776:14:9","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49776:244:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"3078","id":4641,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"50034:4:9","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"},{"id":4642,"name":"ctx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4608,"src":"50052:3:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":4625,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4615,"src":"49716:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"id":4626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"49721:24:9","memberName":"callAgreementWithContext","nodeType":"MemberAccess","referencedDeclaration":7616,"src":"49716:29:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6463_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory,bytes memory) external returns (bytes memory,bytes memory)"}},"id":4643,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"49716:349:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(bytes memory,bytes memory)"}},"src":"49703:362:9","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4645,"nodeType":"ExpressionStatement","src":"49703:362:9"}]},"documentation":{"id":4599,"nodeType":"StructuredDocumentation","src":"49128:279:9","text":" @dev Revokes a previously approved subscription. Meant for usage in super apps\n @param token Super Token used with the index.\n @param publisher Publisher of the index.\n @param indexId ID of the index.\n @param ctx from super app callback"},"id":4647,"implemented":true,"kind":"function","modifiers":[],"name":"revokeSubscriptionWithCtx","nameLocation":"49421:25:9","nodeType":"FunctionDefinition","parameters":{"id":4609,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4602,"mutability":"mutable","name":"token","nameLocation":"49468:5:9","nodeType":"VariableDeclaration","scope":4647,"src":"49456:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":4601,"nodeType":"UserDefinedTypeName","pathNode":{"id":4600,"name":"ISuperToken","nameLocations":["49456:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"49456:11:9"},"referencedDeclaration":7015,"src":"49456:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":4604,"mutability":"mutable","name":"publisher","nameLocation":"49491:9:9","nodeType":"VariableDeclaration","scope":4647,"src":"49483:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4603,"name":"address","nodeType":"ElementaryTypeName","src":"49483:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4606,"mutability":"mutable","name":"indexId","nameLocation":"49517:7:9","nodeType":"VariableDeclaration","scope":4647,"src":"49510:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4605,"name":"uint32","nodeType":"ElementaryTypeName","src":"49510:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":4608,"mutability":"mutable","name":"ctx","nameLocation":"49547:3:9","nodeType":"VariableDeclaration","scope":4647,"src":"49534:16:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4607,"name":"bytes","nodeType":"ElementaryTypeName","src":"49534:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"49446:110:9"},"returnParameters":{"id":4612,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4611,"mutability":"mutable","name":"newCtx","nameLocation":"49588:6:9","nodeType":"VariableDeclaration","scope":4647,"src":"49575:19:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4610,"name":"bytes","nodeType":"ElementaryTypeName","src":"49575:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"49574:21:9"},"scope":5145,"src":"49412:660:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4698,"nodeType":"Block","src":"50720:501:9","statements":[{"assignments":[4666,4669],"declarations":[{"constant":false,"id":4666,"mutability":"mutable","name":"host","nameLocation":"50743:4:9","nodeType":"VariableDeclaration","scope":4698,"src":"50731:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"},"typeName":{"id":4665,"nodeType":"UserDefinedTypeName","pathNode":{"id":4664,"name":"ISuperfluid","nameLocations":["50731:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7667,"src":"50731:11:9"},"referencedDeclaration":7667,"src":"50731:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":4669,"mutability":"mutable","name":"ida","nameLocation":"50781:3:9","nodeType":"VariableDeclaration","scope":4698,"src":"50749:35:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"},"typeName":{"id":4668,"nodeType":"UserDefinedTypeName","pathNode":{"id":4667,"name":"IInstantDistributionAgreementV1","nameLocations":["50749:31:9"],"nodeType":"IdentifierPath","referencedDeclaration":5961,"src":"50749:31:9"},"referencedDeclaration":5961,"src":"50749:31:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"visibility":"internal"}],"id":4673,"initialValue":{"arguments":[{"id":4671,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4651,"src":"50811:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}],"id":4670,"name":"_getAndCacheHostAndIDA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4980,"src":"50788:22:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$7015_$returns$_t_contract$_ISuperfluid_$7667_$_t_contract$_IInstantDistributionAgreementV1_$5961_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"id":4672,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50788:29:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7667_$_t_contract$_IInstantDistributionAgreementV1_$5961_$","typeString":"tuple(contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"50730:87:9"},{"expression":{"id":4696,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":4674,"name":"newCtx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4662,"src":"50828:6:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},null],"id":4675,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"50827:10:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$__$","typeString":"tuple(bytes memory,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4678,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4669,"src":"50880:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},{"arguments":[{"expression":{"id":4681,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4669,"src":"50929:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"id":4682,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"50933:18:9","memberName":"updateSubscription","nodeType":"MemberAccess","referencedDeclaration":5808,"src":"50929:22:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_uint32_$_t_address_$_t_uint128_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,uint32,address,uint128,bytes memory) external returns (bytes memory)"}},{"components":[{"id":4683,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4651,"src":"50991:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},{"id":4684,"name":"indexId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4653,"src":"51018:7:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":4685,"name":"subscriber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4655,"src":"51047:10:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4686,"name":"units","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4657,"src":"51079:5:9","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"arguments":[{"hexValue":"30","id":4689,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"51116:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4688,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"51106:9:9","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":4687,"name":"bytes","nodeType":"ElementaryTypeName","src":"51110:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":4690,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51106:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":4691,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"50969:186:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_uint32_$_t_address_$_t_uint128_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,uint32,address,uint128,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_uint32_$_t_address_$_t_uint128_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,uint32,address,uint128,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_uint32_$_t_address_$_t_uint128_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,uint32,address,uint128,bytes memory)"}],"expression":{"id":4679,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"50897:3:9","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4680,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"50901:10:9","memberName":"encodeCall","nodeType":"MemberAccess","src":"50897:14:9","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4692,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50897:272:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"3078","id":4693,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"51183:4:9","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"},{"id":4694,"name":"ctx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4659,"src":"51201:3:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":4676,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4666,"src":"50840:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"id":4677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"50845:24:9","memberName":"callAgreementWithContext","nodeType":"MemberAccess","referencedDeclaration":7616,"src":"50840:29:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6463_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory,bytes memory) external returns (bytes memory,bytes memory)"}},"id":4695,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"50840:374:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(bytes memory,bytes memory)"}},"src":"50827:387:9","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4697,"nodeType":"ExpressionStatement","src":"50827:387:9"}]},"documentation":{"id":4648,"nodeType":"StructuredDocumentation","src":"50078:424:9","text":" @dev Updates the units of a subscription. This changes the number of shares the subscriber\n holds. Meant for usage in super apps\n @param token Super Token used with the index.\n @param indexId ID of the index.\n @param subscriber Subscriber address whose units are to be updated.\n @param units New number of units the subscriber holds.\n @param ctx from super app callback"},"id":4699,"implemented":true,"kind":"function","modifiers":[],"name":"updateSubscriptionUnitsWithCtx","nameLocation":"50516:30:9","nodeType":"FunctionDefinition","parameters":{"id":4660,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4651,"mutability":"mutable","name":"token","nameLocation":"50568:5:9","nodeType":"VariableDeclaration","scope":4699,"src":"50556:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":4650,"nodeType":"UserDefinedTypeName","pathNode":{"id":4649,"name":"ISuperToken","nameLocations":["50556:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"50556:11:9"},"referencedDeclaration":7015,"src":"50556:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":4653,"mutability":"mutable","name":"indexId","nameLocation":"50590:7:9","nodeType":"VariableDeclaration","scope":4699,"src":"50583:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4652,"name":"uint32","nodeType":"ElementaryTypeName","src":"50583:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":4655,"mutability":"mutable","name":"subscriber","nameLocation":"50615:10:9","nodeType":"VariableDeclaration","scope":4699,"src":"50607:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4654,"name":"address","nodeType":"ElementaryTypeName","src":"50607:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4657,"mutability":"mutable","name":"units","nameLocation":"50643:5:9","nodeType":"VariableDeclaration","scope":4699,"src":"50635:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":4656,"name":"uint128","nodeType":"ElementaryTypeName","src":"50635:7:9","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":4659,"mutability":"mutable","name":"ctx","nameLocation":"50671:3:9","nodeType":"VariableDeclaration","scope":4699,"src":"50658:16:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4658,"name":"bytes","nodeType":"ElementaryTypeName","src":"50658:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"50546:134:9"},"returnParameters":{"id":4663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4662,"mutability":"mutable","name":"newCtx","nameLocation":"50712:6:9","nodeType":"VariableDeclaration","scope":4699,"src":"50699:19:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4661,"name":"bytes","nodeType":"ElementaryTypeName","src":"50699:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"50698:21:9"},"scope":5145,"src":"50507:714:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4750,"nodeType":"Block","src":"51822:508:9","statements":[{"assignments":[4718,4721],"declarations":[{"constant":false,"id":4718,"mutability":"mutable","name":"host","nameLocation":"51845:4:9","nodeType":"VariableDeclaration","scope":4750,"src":"51833:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"},"typeName":{"id":4717,"nodeType":"UserDefinedTypeName","pathNode":{"id":4716,"name":"ISuperfluid","nameLocations":["51833:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7667,"src":"51833:11:9"},"referencedDeclaration":7667,"src":"51833:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":4721,"mutability":"mutable","name":"ida","nameLocation":"51883:3:9","nodeType":"VariableDeclaration","scope":4750,"src":"51851:35:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"},"typeName":{"id":4720,"nodeType":"UserDefinedTypeName","pathNode":{"id":4719,"name":"IInstantDistributionAgreementV1","nameLocations":["51851:31:9"],"nodeType":"IdentifierPath","referencedDeclaration":5961,"src":"51851:31:9"},"referencedDeclaration":5961,"src":"51851:31:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"visibility":"internal"}],"id":4725,"initialValue":{"arguments":[{"id":4723,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4703,"src":"51913:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}],"id":4722,"name":"_getAndCacheHostAndIDA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4980,"src":"51890:22:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$7015_$returns$_t_contract$_ISuperfluid_$7667_$_t_contract$_IInstantDistributionAgreementV1_$5961_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"id":4724,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51890:29:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7667_$_t_contract$_IInstantDistributionAgreementV1_$5961_$","typeString":"tuple(contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"51832:87:9"},{"expression":{"id":4748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":4726,"name":"newCtx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4714,"src":"51930:6:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},null],"id":4727,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"51929:10:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$__$","typeString":"tuple(bytes memory,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4730,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4721,"src":"51985:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},{"arguments":[{"expression":{"id":4733,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4721,"src":"52034:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"id":4734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"52038:18:9","memberName":"deleteSubscription","nodeType":"MemberAccess","referencedDeclaration":5915,"src":"52034:22:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_uint32_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,uint32,address,bytes memory) external returns (bytes memory)"}},{"components":[{"id":4735,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4703,"src":"52096:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},{"id":4736,"name":"publisher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4705,"src":"52123:9:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4737,"name":"indexId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4707,"src":"52154:7:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":4738,"name":"subscriber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4709,"src":"52183:10:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":4741,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"52225:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4740,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"52215:9:9","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":4739,"name":"bytes","nodeType":"ElementaryTypeName","src":"52219:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":4742,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52215:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":4743,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"52074:190:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_uint32_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,uint32,address,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_uint32_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,uint32,address,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_uint32_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,uint32,address,bytes memory)"}],"expression":{"id":4731,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"52002:3:9","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4732,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"52006:10:9","memberName":"encodeCall","nodeType":"MemberAccess","src":"52002:14:9","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4744,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52002:276:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"3078","id":4745,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"52292:4:9","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"},{"id":4746,"name":"ctx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4711,"src":"52310:3:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":4728,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4718,"src":"51942:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"id":4729,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"51947:24:9","memberName":"callAgreementWithContext","nodeType":"MemberAccess","referencedDeclaration":7616,"src":"51942:29:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6463_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory,bytes memory) external returns (bytes memory,bytes memory)"}},"id":4747,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"51942:381:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(bytes memory,bytes memory)"}},"src":"51929:394:9","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4749,"nodeType":"ExpressionStatement","src":"51929:394:9"}]},"documentation":{"id":4700,"nodeType":"StructuredDocumentation","src":"51227:378:9","text":" @dev Deletes a subscription, setting a subcriber's units to zero.\n Meant for usage in super apps\n @param token Super Token used with the index.\n @param publisher Publisher of the index.\n @param indexId ID of the index.\n @param subscriber Subscriber address whose units are to be deleted.\n @param ctx from super app callback"},"id":4751,"implemented":true,"kind":"function","modifiers":[],"name":"deleteSubscriptionWithCtx","nameLocation":"51619:25:9","nodeType":"FunctionDefinition","parameters":{"id":4712,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4703,"mutability":"mutable","name":"token","nameLocation":"51666:5:9","nodeType":"VariableDeclaration","scope":4751,"src":"51654:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":4702,"nodeType":"UserDefinedTypeName","pathNode":{"id":4701,"name":"ISuperToken","nameLocations":["51654:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"51654:11:9"},"referencedDeclaration":7015,"src":"51654:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":4705,"mutability":"mutable","name":"publisher","nameLocation":"51689:9:9","nodeType":"VariableDeclaration","scope":4751,"src":"51681:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4704,"name":"address","nodeType":"ElementaryTypeName","src":"51681:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4707,"mutability":"mutable","name":"indexId","nameLocation":"51715:7:9","nodeType":"VariableDeclaration","scope":4751,"src":"51708:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4706,"name":"uint32","nodeType":"ElementaryTypeName","src":"51708:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":4709,"mutability":"mutable","name":"subscriber","nameLocation":"51740:10:9","nodeType":"VariableDeclaration","scope":4751,"src":"51732:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4708,"name":"address","nodeType":"ElementaryTypeName","src":"51732:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4711,"mutability":"mutable","name":"ctx","nameLocation":"51773:3:9","nodeType":"VariableDeclaration","scope":4751,"src":"51760:16:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4710,"name":"bytes","nodeType":"ElementaryTypeName","src":"51760:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"51644:138:9"},"returnParameters":{"id":4715,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4714,"mutability":"mutable","name":"newCtx","nameLocation":"51814:6:9","nodeType":"VariableDeclaration","scope":4751,"src":"51801:19:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4713,"name":"bytes","nodeType":"ElementaryTypeName","src":"51801:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"51800:21:9"},"scope":5145,"src":"51610:720:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4802,"nodeType":"Block","src":"52926:496:9","statements":[{"assignments":[4770,4773],"declarations":[{"constant":false,"id":4770,"mutability":"mutable","name":"host","nameLocation":"52950:4:9","nodeType":"VariableDeclaration","scope":4802,"src":"52938:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"},"typeName":{"id":4769,"nodeType":"UserDefinedTypeName","pathNode":{"id":4768,"name":"ISuperfluid","nameLocations":["52938:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7667,"src":"52938:11:9"},"referencedDeclaration":7667,"src":"52938:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":4773,"mutability":"mutable","name":"ida","nameLocation":"52988:3:9","nodeType":"VariableDeclaration","scope":4802,"src":"52956:35:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"},"typeName":{"id":4772,"nodeType":"UserDefinedTypeName","pathNode":{"id":4771,"name":"IInstantDistributionAgreementV1","nameLocations":["52956:31:9"],"nodeType":"IdentifierPath","referencedDeclaration":5961,"src":"52956:31:9"},"referencedDeclaration":5961,"src":"52956:31:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"visibility":"internal"}],"id":4777,"initialValue":{"arguments":[{"id":4775,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4755,"src":"53018:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}],"id":4774,"name":"_getAndCacheHostAndIDA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4980,"src":"52995:22:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$7015_$returns$_t_contract$_ISuperfluid_$7667_$_t_contract$_IInstantDistributionAgreementV1_$5961_$","typeString":"function (contract ISuperToken) returns (contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"id":4776,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"52995:29:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperfluid_$7667_$_t_contract$_IInstantDistributionAgreementV1_$5961_$","typeString":"tuple(contract ISuperfluid,contract IInstantDistributionAgreementV1)"}},"nodeType":"VariableDeclarationStatement","src":"52937:87:9"},{"expression":{"id":4800,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":4778,"name":"newCtx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4766,"src":"53035:6:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},null],"id":4779,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"53034:10:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$__$","typeString":"tuple(bytes memory,)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4782,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4773,"src":"53090:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},{"arguments":[{"expression":{"id":4785,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4773,"src":"53139:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"id":4786,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"53143:5:9","memberName":"claim","nodeType":"MemberAccess","referencedDeclaration":5932,"src":"53139:9:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_uint32_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,uint32,address,bytes memory) external returns (bytes memory)"}},{"components":[{"id":4787,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4755,"src":"53188:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},{"id":4788,"name":"publisher","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4757,"src":"53215:9:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4789,"name":"indexId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4759,"src":"53246:7:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":4790,"name":"subscriber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4761,"src":"53275:10:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":4793,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"53317:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4792,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"53307:9:9","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":4791,"name":"bytes","nodeType":"ElementaryTypeName","src":"53311:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":4794,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53307:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":4795,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"53166:190:9","typeDescriptions":{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_uint32_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,uint32,address,bytes memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperfluidToken_$8082_$_t_address_$_t_uint32_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperfluidToken,address,uint32,address,bytes memory) external returns (bytes memory)"},{"typeIdentifier":"t_tuple$_t_contract$_ISuperToken_$7015_$_t_address_$_t_uint32_$_t_address_$_t_bytes_memory_ptr_$","typeString":"tuple(contract ISuperToken,address,uint32,address,bytes memory)"}],"expression":{"id":4783,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"53107:3:9","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4784,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"53111:10:9","memberName":"encodeCall","nodeType":"MemberAccess","src":"53107:14:9","typeDescriptions":{"typeIdentifier":"t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4796,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53107:263:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"3078","id":4797,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"53384:4:9","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"},{"id":4798,"name":"ctx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4763,"src":"53402:3:9","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":4780,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4770,"src":"53047:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"id":4781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"53052:24:9","memberName":"callAgreementWithContext","nodeType":"MemberAccess","referencedDeclaration":7616,"src":"53047:29:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_ISuperAgreement_$6463_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"function (contract ISuperAgreement,bytes memory,bytes memory,bytes memory) external returns (bytes memory,bytes memory)"}},"id":4799,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"53047:368:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$","typeString":"tuple(bytes memory,bytes memory)"}},"src":"53034:381:9","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4801,"nodeType":"ExpressionStatement","src":"53034:381:9"}]},"documentation":{"id":4752,"nodeType":"StructuredDocumentation","src":"52336:386:9","text":" @dev Claims pending distribution. Subscription should not be approved.\n Meant for usage in super app callbacks\n @param token Super Token used with the index.\n @param publisher Publisher of the index.\n @param indexId ID of the index.\n @param subscriber Subscriber address that receives the claim.\n @param ctx from super app callback"},"id":4803,"implemented":true,"kind":"function","modifiers":[],"name":"claimWithCtx","nameLocation":"52736:12:9","nodeType":"FunctionDefinition","parameters":{"id":4764,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4755,"mutability":"mutable","name":"token","nameLocation":"52770:5:9","nodeType":"VariableDeclaration","scope":4803,"src":"52758:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":4754,"nodeType":"UserDefinedTypeName","pathNode":{"id":4753,"name":"ISuperToken","nameLocations":["52758:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"52758:11:9"},"referencedDeclaration":7015,"src":"52758:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":4757,"mutability":"mutable","name":"publisher","nameLocation":"52793:9:9","nodeType":"VariableDeclaration","scope":4803,"src":"52785:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4756,"name":"address","nodeType":"ElementaryTypeName","src":"52785:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4759,"mutability":"mutable","name":"indexId","nameLocation":"52819:7:9","nodeType":"VariableDeclaration","scope":4803,"src":"52812:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4758,"name":"uint32","nodeType":"ElementaryTypeName","src":"52812:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":4761,"mutability":"mutable","name":"subscriber","nameLocation":"52844:10:9","nodeType":"VariableDeclaration","scope":4803,"src":"52836:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4760,"name":"address","nodeType":"ElementaryTypeName","src":"52836:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4763,"mutability":"mutable","name":"ctx","nameLocation":"52877:3:9","nodeType":"VariableDeclaration","scope":4803,"src":"52864:16:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4762,"name":"bytes","nodeType":"ElementaryTypeName","src":"52864:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"52748:138:9"},"returnParameters":{"id":4767,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4766,"mutability":"mutable","name":"newCtx","nameLocation":"52918:6:9","nodeType":"VariableDeclaration","scope":4803,"src":"52905:19:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4765,"name":"bytes","nodeType":"ElementaryTypeName","src":"52905:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"52904:21:9"},"scope":5145,"src":"52727:695:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"constant":true,"id":4806,"mutability":"constant","name":"_HOST_SLOT","nameLocation":"53581:10:9","nodeType":"VariableDeclaration","scope":5145,"src":"53556:104:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4804,"name":"bytes32","nodeType":"ElementaryTypeName","src":"53556:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307836353539396266373436653137613030656136326533363130353836393932643838313031623738656563336366333830373036363231666239376561383337","id":4805,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"53594:66:9","typeDescriptions":{"typeIdentifier":"t_rational_45841923532930376854970590744995540846552119741516134097130102287103816542263_by_1","typeString":"int_const 4584...(69 digits omitted)...2263"},"value":"0x65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea837"},"visibility":"private"},{"constant":true,"id":4809,"mutability":"constant","name":"_CFA_SLOT","nameLocation":"53764:9:9","nodeType":"VariableDeclaration","scope":5145,"src":"53739:103:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4807,"name":"bytes32","nodeType":"ElementaryTypeName","src":"53739:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307862393639643739643838616364303264303465643765653764343362393439653764616630393364333633616263666262633433646664666431636539363961","id":4808,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"53776:66:9","typeDescriptions":{"typeIdentifier":"t_rational_83864884052275761806128162606931667685484524194840996638048501509189845030554_by_1","typeString":"int_const 8386...(69 digits omitted)...0554"},"value":"0xb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a"},"visibility":"private"},{"constant":true,"id":4812,"mutability":"constant","name":"_IDA_SLOT","nameLocation":"53947:9:9","nodeType":"VariableDeclaration","scope":5145,"src":"53922:103:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4810,"name":"bytes32","nodeType":"ElementaryTypeName","src":"53922:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307861383332656531393234656139363032313161663264663037643635643136363233323031386636313361633637303830343363643866383737336564646562","id":4811,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"53959:66:9","typeDescriptions":{"typeIdentifier":"t_rational_76078544208744620866510837364533883980946787649609488990749670216708906737131_by_1","typeString":"int_const 7607...(69 digits omitted)...7131"},"value":"0xa832ee1924ea960211af2df07d65d166232018f613ac6708043cd8f8773eddeb"},"visibility":"private"},{"body":{"id":4894,"nodeType":"Block","src":"54296:1023:9","statements":[{"AST":{"nodeType":"YulBlock","src":"54366:108:9","statements":[{"nodeType":"YulAssignment","src":"54403:25:9","value":{"arguments":[{"name":"_HOST_SLOT","nodeType":"YulIdentifier","src":"54417:10:9"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"54411:5:9"},"nodeType":"YulFunctionCall","src":"54411:17:9"},"variableNames":[{"name":"host","nodeType":"YulIdentifier","src":"54403:4:9"}]},{"nodeType":"YulAssignment","src":"54441:23:9","value":{"arguments":[{"name":"_CFA_SLOT","nodeType":"YulIdentifier","src":"54454:9:9"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"54448:5:9"},"nodeType":"YulFunctionCall","src":"54448:16:9"},"variableNames":[{"name":"cfa","nodeType":"YulIdentifier","src":"54441:3:9"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":4809,"isOffset":false,"isSlot":false,"src":"54454:9:9","valueSize":1},{"declaration":4806,"isOffset":false,"isSlot":false,"src":"54417:10:9","valueSize":1},{"declaration":4822,"isOffset":false,"isSlot":false,"src":"54441:3:9","valueSize":1},{"declaration":4819,"isOffset":false,"isSlot":false,"src":"54403:4:9","valueSize":1}],"id":4824,"nodeType":"InlineAssembly","src":"54357:117:9"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4827,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4822,"src":"54495:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}],"id":4826,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"54487:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4825,"name":"address","nodeType":"ElementaryTypeName","src":"54487:7:9","typeDescriptions":{}}},"id":4828,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"54487:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":4831,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"54511:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4830,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"54503:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4829,"name":"address","nodeType":"ElementaryTypeName","src":"54503:7:9","typeDescriptions":{}}},"id":4832,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"54503:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"54487:26:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4869,"nodeType":"IfStatement","src":"54483:741:9","trueBody":{"id":4868,"nodeType":"Block","src":"54515:709:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4836,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4819,"src":"54615:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}],"id":4835,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"54607:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4834,"name":"address","nodeType":"ElementaryTypeName","src":"54607:7:9","typeDescriptions":{}}},"id":4837,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"54607:13:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":4840,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"54632:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4839,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"54624:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4838,"name":"address","nodeType":"ElementaryTypeName","src":"54624:7:9","typeDescriptions":{}}},"id":4841,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"54624:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"54607:27:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4852,"nodeType":"IfStatement","src":"54603:101:9","trueBody":{"id":4851,"nodeType":"Block","src":"54636:68:9","statements":[{"expression":{"id":4849,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4843,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4819,"src":"54654:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":4845,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4815,"src":"54673:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"id":4846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"54679:7:9","memberName":"getHost","nodeType":"MemberAccess","referencedDeclaration":7819,"src":"54673:13:9","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":4847,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"54673:15:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4844,"name":"ISuperfluid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7667,"src":"54661:11:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISuperfluid_$7667_$","typeString":"type(contract ISuperfluid)"}},"id":4848,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"54661:28:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"src":"54654:35:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"id":4850,"nodeType":"ExpressionStatement","src":"54654:35:9"}]}},{"expression":{"id":4865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4853,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4822,"src":"54717:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[{"hexValue":"307861393231346363393636313565303038356433626230373737353864623639343937646332646365336232623165393762633933633364313864383365666433","id":4861,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"54903:66:9","typeDescriptions":{"typeIdentifier":"t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1","typeString":"int_const 7649...(69 digits omitted)...0115"},"value":"0xa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd3"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1","typeString":"int_const 7649...(69 digits omitted)...0115"}],"expression":{"arguments":[{"id":4858,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4819,"src":"54768:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}],"id":4857,"name":"ISuperfluid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7667,"src":"54756:11:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISuperfluid_$7667_$","typeString":"type(contract ISuperfluid)"}},"id":4859,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"54756:17:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"id":4860,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"54774:17:9","memberName":"getAgreementClass","nodeType":"MemberAccess","referencedDeclaration":7304,"src":"54756:35:9","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_contract$_ISuperAgreement_$6463_$","typeString":"function (bytes32) view external returns (contract ISuperAgreement)"}},"id":4862,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"54756:214:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISuperAgreement_$6463","typeString":"contract ISuperAgreement"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperAgreement_$6463","typeString":"contract ISuperAgreement"}],"id":4856,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"54748:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4855,"name":"address","nodeType":"ElementaryTypeName","src":"54748:7:9","typeDescriptions":{}}},"id":4863,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"54748:223:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4854,"name":"IConstantFlowAgreementV1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5555,"src":"54723:24:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IConstantFlowAgreementV1_$5555_$","typeString":"type(contract IConstantFlowAgreementV1)"}},"id":4864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"54723:249:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"src":"54717:255:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"id":4866,"nodeType":"ExpressionStatement","src":"54717:255:9"},{"AST":{"nodeType":"YulBlock","src":"55084:130:9","statements":[{"expression":{"arguments":[{"name":"_HOST_SLOT","nodeType":"YulIdentifier","src":"55144:10:9"},{"name":"host","nodeType":"YulIdentifier","src":"55156:4:9"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"55137:6:9"},"nodeType":"YulFunctionCall","src":"55137:24:9"},"nodeType":"YulExpressionStatement","src":"55137:24:9"},{"expression":{"arguments":[{"name":"_CFA_SLOT","nodeType":"YulIdentifier","src":"55185:9:9"},{"name":"cfa","nodeType":"YulIdentifier","src":"55196:3:9"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"55178:6:9"},"nodeType":"YulFunctionCall","src":"55178:22:9"},"nodeType":"YulExpressionStatement","src":"55178:22:9"}]},"evmVersion":"paris","externalReferences":[{"declaration":4809,"isOffset":false,"isSlot":false,"src":"55185:9:9","valueSize":1},{"declaration":4806,"isOffset":false,"isSlot":false,"src":"55144:10:9","valueSize":1},{"declaration":4822,"isOffset":false,"isSlot":false,"src":"55196:3:9","valueSize":1},{"declaration":4819,"isOffset":false,"isSlot":false,"src":"55156:4:9","valueSize":1}],"id":4867,"nodeType":"InlineAssembly","src":"55075:139:9"}]}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4873,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4819,"src":"55248:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}],"id":4872,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"55240:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4871,"name":"address","nodeType":"ElementaryTypeName","src":"55240:7:9","typeDescriptions":{}}},"id":4874,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"55240:13:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":4877,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"55265:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4876,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"55257:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4875,"name":"address","nodeType":"ElementaryTypeName","src":"55257:7:9","typeDescriptions":{}}},"id":4878,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"55257:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"55240:27:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":4870,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"55233:6:9","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":4880,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"55233:35:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4881,"nodeType":"ExpressionStatement","src":"55233:35:9"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4885,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4822,"src":"55293:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}],"id":4884,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"55285:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4883,"name":"address","nodeType":"ElementaryTypeName","src":"55285:7:9","typeDescriptions":{}}},"id":4886,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"55285:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":4889,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"55309:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4888,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"55301:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4887,"name":"address","nodeType":"ElementaryTypeName","src":"55301:7:9","typeDescriptions":{}}},"id":4890,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"55301:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"55285:26:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":4882,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"55278:6:9","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":4892,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"55278:34:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4893,"nodeType":"ExpressionStatement","src":"55278:34:9"}]},"id":4895,"implemented":true,"kind":"function","modifiers":[],"name":"_getAndCacheHostAndCFA","nameLocation":"54178:22:9","nodeType":"FunctionDefinition","parameters":{"id":4816,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4815,"mutability":"mutable","name":"token","nameLocation":"54213:5:9","nodeType":"VariableDeclaration","scope":4895,"src":"54201:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":4814,"nodeType":"UserDefinedTypeName","pathNode":{"id":4813,"name":"ISuperToken","nameLocations":["54201:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"54201:11:9"},"referencedDeclaration":7015,"src":"54201:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"}],"src":"54200:19:9"},"returnParameters":{"id":4823,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4819,"mutability":"mutable","name":"host","nameLocation":"54256:4:9","nodeType":"VariableDeclaration","scope":4895,"src":"54244:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"},"typeName":{"id":4818,"nodeType":"UserDefinedTypeName","pathNode":{"id":4817,"name":"ISuperfluid","nameLocations":["54244:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7667,"src":"54244:11:9"},"referencedDeclaration":7667,"src":"54244:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":4822,"mutability":"mutable","name":"cfa","nameLocation":"54287:3:9","nodeType":"VariableDeclaration","scope":4895,"src":"54262:28:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":4821,"nodeType":"UserDefinedTypeName","pathNode":{"id":4820,"name":"IConstantFlowAgreementV1","nameLocations":["54262:24:9"],"nodeType":"IdentifierPath","referencedDeclaration":5555,"src":"54262:24:9"},"referencedDeclaration":5555,"src":"54262:24:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"src":"54243:48:9"},"scope":5145,"src":"54169:1150:9","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":4979,"nodeType":"Block","src":"55596:952:9","statements":[{"AST":{"nodeType":"YulBlock","src":"55666:108:9","statements":[{"nodeType":"YulAssignment","src":"55703:25:9","value":{"arguments":[{"name":"_HOST_SLOT","nodeType":"YulIdentifier","src":"55717:10:9"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"55711:5:9"},"nodeType":"YulFunctionCall","src":"55711:17:9"},"variableNames":[{"name":"host","nodeType":"YulIdentifier","src":"55703:4:9"}]},{"nodeType":"YulAssignment","src":"55741:23:9","value":{"arguments":[{"name":"_IDA_SLOT","nodeType":"YulIdentifier","src":"55754:9:9"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"55748:5:9"},"nodeType":"YulFunctionCall","src":"55748:16:9"},"variableNames":[{"name":"ida","nodeType":"YulIdentifier","src":"55741:3:9"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":4806,"isOffset":false,"isSlot":false,"src":"55717:10:9","valueSize":1},{"declaration":4812,"isOffset":false,"isSlot":false,"src":"55754:9:9","valueSize":1},{"declaration":4902,"isOffset":false,"isSlot":false,"src":"55703:4:9","valueSize":1},{"declaration":4905,"isOffset":false,"isSlot":false,"src":"55741:3:9","valueSize":1}],"id":4907,"nodeType":"InlineAssembly","src":"55657:117:9"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4916,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4910,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4905,"src":"55795:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}],"id":4909,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"55787:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4908,"name":"address","nodeType":"ElementaryTypeName","src":"55787:7:9","typeDescriptions":{}}},"id":4911,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"55787:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":4914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"55811:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4913,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"55803:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4912,"name":"address","nodeType":"ElementaryTypeName","src":"55803:7:9","typeDescriptions":{}}},"id":4915,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"55803:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"55787:26:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4954,"nodeType":"IfStatement","src":"55783:670:9","trueBody":{"id":4953,"nodeType":"Block","src":"55815:638:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4919,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4902,"src":"55915:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}],"id":4918,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"55907:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4917,"name":"address","nodeType":"ElementaryTypeName","src":"55907:7:9","typeDescriptions":{}}},"id":4920,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"55907:13:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":4923,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"55932:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4922,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"55924:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4921,"name":"address","nodeType":"ElementaryTypeName","src":"55924:7:9","typeDescriptions":{}}},"id":4924,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"55924:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"55907:27:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4935,"nodeType":"IfStatement","src":"55903:101:9","trueBody":{"id":4934,"nodeType":"Block","src":"55936:68:9","statements":[{"expression":{"id":4932,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4926,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4902,"src":"55954:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":4928,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4898,"src":"55973:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"id":4929,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"55979:7:9","memberName":"getHost","nodeType":"MemberAccess","referencedDeclaration":7819,"src":"55973:13:9","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":4930,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"55973:15:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4927,"name":"ISuperfluid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7667,"src":"55961:11:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISuperfluid_$7667_$","typeString":"type(contract ISuperfluid)"}},"id":4931,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"55961:28:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"src":"55954:35:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"id":4933,"nodeType":"ExpressionStatement","src":"55954:35:9"}]}},{"expression":{"id":4950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4936,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4905,"src":"56017:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"hexValue":"6f72672e7375706572666c7569642d66696e616e63652e61677265656d656e74732e496e7374616e74446973747269627574696f6e41677265656d656e742e7631","id":4945,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"56130:67:9","typeDescriptions":{"typeIdentifier":"t_stringliteral_8aedc3b5d4bf031e11a7e2940f7251c005698405d58e02e1c247fed3b1b3a674","typeString":"literal_string \"org.superfluid-finance.agreements.InstantDistributionAgreement.v1\""},"value":"org.superfluid-finance.agreements.InstantDistributionAgreement.v1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_8aedc3b5d4bf031e11a7e2940f7251c005698405d58e02e1c247fed3b1b3a674","typeString":"literal_string \"org.superfluid-finance.agreements.InstantDistributionAgreement.v1\""}],"id":4944,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"56120:9:9","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":4946,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"56120:78:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"arguments":[{"id":4941,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4902,"src":"56075:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}],"id":4940,"name":"ISuperfluid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7667,"src":"56063:11:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISuperfluid_$7667_$","typeString":"type(contract ISuperfluid)"}},"id":4942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"56063:17:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"id":4943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"56081:17:9","memberName":"getAgreementClass","nodeType":"MemberAccess","referencedDeclaration":7304,"src":"56063:35:9","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_contract$_ISuperAgreement_$6463_$","typeString":"function (bytes32) view external returns (contract ISuperAgreement)"}},"id":4947,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"56063:136:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISuperAgreement_$6463","typeString":"contract ISuperAgreement"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperAgreement_$6463","typeString":"contract ISuperAgreement"}],"id":4939,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"56055:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4938,"name":"address","nodeType":"ElementaryTypeName","src":"56055:7:9","typeDescriptions":{}}},"id":4948,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"56055:145:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4937,"name":"IInstantDistributionAgreementV1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5961,"src":"56023:31:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IInstantDistributionAgreementV1_$5961_$","typeString":"type(contract IInstantDistributionAgreementV1)"}},"id":4949,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"56023:178:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"src":"56017:184:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"id":4951,"nodeType":"ExpressionStatement","src":"56017:184:9"},{"AST":{"nodeType":"YulBlock","src":"56313:130:9","statements":[{"expression":{"arguments":[{"name":"_HOST_SLOT","nodeType":"YulIdentifier","src":"56373:10:9"},{"name":"host","nodeType":"YulIdentifier","src":"56385:4:9"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"56366:6:9"},"nodeType":"YulFunctionCall","src":"56366:24:9"},"nodeType":"YulExpressionStatement","src":"56366:24:9"},{"expression":{"arguments":[{"name":"_IDA_SLOT","nodeType":"YulIdentifier","src":"56414:9:9"},{"name":"ida","nodeType":"YulIdentifier","src":"56425:3:9"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"56407:6:9"},"nodeType":"YulFunctionCall","src":"56407:22:9"},"nodeType":"YulExpressionStatement","src":"56407:22:9"}]},"evmVersion":"paris","externalReferences":[{"declaration":4806,"isOffset":false,"isSlot":false,"src":"56373:10:9","valueSize":1},{"declaration":4812,"isOffset":false,"isSlot":false,"src":"56414:9:9","valueSize":1},{"declaration":4902,"isOffset":false,"isSlot":false,"src":"56385:4:9","valueSize":1},{"declaration":4905,"isOffset":false,"isSlot":false,"src":"56425:3:9","valueSize":1}],"id":4952,"nodeType":"InlineAssembly","src":"56304:139:9"}]}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4964,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4958,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4902,"src":"56477:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}],"id":4957,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"56469:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4956,"name":"address","nodeType":"ElementaryTypeName","src":"56469:7:9","typeDescriptions":{}}},"id":4959,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"56469:13:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":4962,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"56494:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4961,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"56486:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4960,"name":"address","nodeType":"ElementaryTypeName","src":"56486:7:9","typeDescriptions":{}}},"id":4963,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"56486:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"56469:27:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":4955,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"56462:6:9","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":4965,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"56462:35:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4966,"nodeType":"ExpressionStatement","src":"56462:35:9"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4970,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4905,"src":"56522:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}],"id":4969,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"56514:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4968,"name":"address","nodeType":"ElementaryTypeName","src":"56514:7:9","typeDescriptions":{}}},"id":4971,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"56514:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":4974,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"56538:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4973,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"56530:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4972,"name":"address","nodeType":"ElementaryTypeName","src":"56530:7:9","typeDescriptions":{}}},"id":4975,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"56530:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"56514:26:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":4967,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"56507:6:9","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":4977,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"56507:34:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4978,"nodeType":"ExpressionStatement","src":"56507:34:9"}]},"id":4980,"implemented":true,"kind":"function","modifiers":[],"name":"_getAndCacheHostAndIDA","nameLocation":"55471:22:9","nodeType":"FunctionDefinition","parameters":{"id":4899,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4898,"mutability":"mutable","name":"token","nameLocation":"55506:5:9","nodeType":"VariableDeclaration","scope":4980,"src":"55494:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":4897,"nodeType":"UserDefinedTypeName","pathNode":{"id":4896,"name":"ISuperToken","nameLocations":["55494:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"55494:11:9"},"referencedDeclaration":7015,"src":"55494:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"}],"src":"55493:19:9"},"returnParameters":{"id":4906,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4902,"mutability":"mutable","name":"host","nameLocation":"55549:4:9","nodeType":"VariableDeclaration","scope":4980,"src":"55537:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"},"typeName":{"id":4901,"nodeType":"UserDefinedTypeName","pathNode":{"id":4900,"name":"ISuperfluid","nameLocations":["55537:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7667,"src":"55537:11:9"},"referencedDeclaration":7667,"src":"55537:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":4905,"mutability":"mutable","name":"ida","nameLocation":"55587:3:9","nodeType":"VariableDeclaration","scope":4980,"src":"55555:35:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"},"typeName":{"id":4904,"nodeType":"UserDefinedTypeName","pathNode":{"id":4903,"name":"IInstantDistributionAgreementV1","nameLocations":["55555:31:9"],"nodeType":"IdentifierPath","referencedDeclaration":5961,"src":"55555:31:9"},"referencedDeclaration":5961,"src":"55555:31:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"visibility":"internal"}],"src":"55536:55:9"},"scope":5145,"src":"55462:1086:9","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":5061,"nodeType":"Block","src":"56792:793:9","statements":[{"AST":{"nodeType":"YulBlock","src":"56862:108:9","statements":[{"nodeType":"YulAssignment","src":"56899:25:9","value":{"arguments":[{"name":"_HOST_SLOT","nodeType":"YulIdentifier","src":"56913:10:9"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"56907:5:9"},"nodeType":"YulFunctionCall","src":"56907:17:9"},"variableNames":[{"name":"host","nodeType":"YulIdentifier","src":"56899:4:9"}]},{"nodeType":"YulAssignment","src":"56937:23:9","value":{"arguments":[{"name":"_CFA_SLOT","nodeType":"YulIdentifier","src":"56950:9:9"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"56944:5:9"},"nodeType":"YulFunctionCall","src":"56944:16:9"},"variableNames":[{"name":"cfa","nodeType":"YulIdentifier","src":"56937:3:9"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":4809,"isOffset":false,"isSlot":false,"src":"56950:9:9","valueSize":1},{"declaration":4806,"isOffset":false,"isSlot":false,"src":"56913:10:9","valueSize":1},{"declaration":4990,"isOffset":false,"isSlot":false,"src":"56937:3:9","valueSize":1},{"declaration":4987,"isOffset":false,"isSlot":false,"src":"56899:4:9","valueSize":1}],"id":4992,"nodeType":"InlineAssembly","src":"56853:117:9"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5001,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4995,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4990,"src":"56991:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}],"id":4994,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"56983:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4993,"name":"address","nodeType":"ElementaryTypeName","src":"56983:7:9","typeDescriptions":{}}},"id":4996,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"56983:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":4999,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"57007:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4998,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"56999:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4997,"name":"address","nodeType":"ElementaryTypeName","src":"56999:7:9","typeDescriptions":{}}},"id":5000,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"56999:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"56983:26:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5036,"nodeType":"IfStatement","src":"56979:511:9","trueBody":{"id":5035,"nodeType":"Block","src":"57011:479:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":5004,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4987,"src":"57122:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}],"id":5003,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"57114:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5002,"name":"address","nodeType":"ElementaryTypeName","src":"57114:7:9","typeDescriptions":{}}},"id":5005,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"57114:13:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":5008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"57139:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":5007,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"57131:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5006,"name":"address","nodeType":"ElementaryTypeName","src":"57131:7:9","typeDescriptions":{}}},"id":5009,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"57131:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"57114:27:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5020,"nodeType":"IfStatement","src":"57110:101:9","trueBody":{"id":5019,"nodeType":"Block","src":"57143:68:9","statements":[{"expression":{"id":5017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5011,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4987,"src":"57161:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":5013,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4983,"src":"57180:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"id":5014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"57186:7:9","memberName":"getHost","nodeType":"MemberAccess","referencedDeclaration":7819,"src":"57180:13:9","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":5015,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"57180:15:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5012,"name":"ISuperfluid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7667,"src":"57168:11:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISuperfluid_$7667_$","typeString":"type(contract ISuperfluid)"}},"id":5016,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"57168:28:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"src":"57161:35:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"id":5018,"nodeType":"ExpressionStatement","src":"57161:35:9"}]}},{"expression":{"id":5033,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5021,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4990,"src":"57224:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[{"hexValue":"307861393231346363393636313565303038356433626230373737353864623639343937646332646365336232623165393762633933633364313864383365666433","id":5029,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"57410:66:9","typeDescriptions":{"typeIdentifier":"t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1","typeString":"int_const 7649...(69 digits omitted)...0115"},"value":"0xa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd3"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1","typeString":"int_const 7649...(69 digits omitted)...0115"}],"expression":{"arguments":[{"id":5026,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4987,"src":"57275:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}],"id":5025,"name":"ISuperfluid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7667,"src":"57263:11:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISuperfluid_$7667_$","typeString":"type(contract ISuperfluid)"}},"id":5027,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"57263:17:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"id":5028,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"57281:17:9","memberName":"getAgreementClass","nodeType":"MemberAccess","referencedDeclaration":7304,"src":"57263:35:9","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_contract$_ISuperAgreement_$6463_$","typeString":"function (bytes32) view external returns (contract ISuperAgreement)"}},"id":5030,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"57263:214:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISuperAgreement_$6463","typeString":"contract ISuperAgreement"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperAgreement_$6463","typeString":"contract ISuperAgreement"}],"id":5024,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"57255:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5023,"name":"address","nodeType":"ElementaryTypeName","src":"57255:7:9","typeDescriptions":{}}},"id":5031,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"57255:223:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5022,"name":"IConstantFlowAgreementV1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5555,"src":"57230:24:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IConstantFlowAgreementV1_$5555_$","typeString":"type(contract IConstantFlowAgreementV1)"}},"id":5032,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"57230:249:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"src":"57224:255:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"id":5034,"nodeType":"ExpressionStatement","src":"57224:255:9"}]}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5046,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":5040,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4987,"src":"57514:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}],"id":5039,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"57506:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5038,"name":"address","nodeType":"ElementaryTypeName","src":"57506:7:9","typeDescriptions":{}}},"id":5041,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"57506:13:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":5044,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"57531:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":5043,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"57523:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5042,"name":"address","nodeType":"ElementaryTypeName","src":"57523:7:9","typeDescriptions":{}}},"id":5045,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"57523:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"57506:27:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":5037,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"57499:6:9","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":5047,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"57499:35:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5048,"nodeType":"ExpressionStatement","src":"57499:35:9"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":5052,"name":"cfa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4990,"src":"57559:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}],"id":5051,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"57551:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5050,"name":"address","nodeType":"ElementaryTypeName","src":"57551:7:9","typeDescriptions":{}}},"id":5053,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"57551:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":5056,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"57575:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":5055,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"57567:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5054,"name":"address","nodeType":"ElementaryTypeName","src":"57567:7:9","typeDescriptions":{}}},"id":5057,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"57567:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"57551:26:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":5049,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"57544:6:9","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":5059,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"57544:34:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5060,"nodeType":"ExpressionStatement","src":"57544:34:9"}]},"id":5062,"implemented":true,"kind":"function","modifiers":[],"name":"_getHostAndCFA","nameLocation":"56677:14:9","nodeType":"FunctionDefinition","parameters":{"id":4984,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4983,"mutability":"mutable","name":"token","nameLocation":"56704:5:9","nodeType":"VariableDeclaration","scope":5062,"src":"56692:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":4982,"nodeType":"UserDefinedTypeName","pathNode":{"id":4981,"name":"ISuperToken","nameLocations":["56692:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"56692:11:9"},"referencedDeclaration":7015,"src":"56692:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"}],"src":"56691:19:9"},"returnParameters":{"id":4991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4987,"mutability":"mutable","name":"host","nameLocation":"56752:4:9","nodeType":"VariableDeclaration","scope":5062,"src":"56740:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"},"typeName":{"id":4986,"nodeType":"UserDefinedTypeName","pathNode":{"id":4985,"name":"ISuperfluid","nameLocations":["56740:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7667,"src":"56740:11:9"},"referencedDeclaration":7667,"src":"56740:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":4990,"mutability":"mutable","name":"cfa","nameLocation":"56783:3:9","nodeType":"VariableDeclaration","scope":5062,"src":"56758:28:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"},"typeName":{"id":4989,"nodeType":"UserDefinedTypeName","pathNode":{"id":4988,"name":"IConstantFlowAgreementV1","nameLocations":["56758:24:9"],"nodeType":"IdentifierPath","referencedDeclaration":5555,"src":"56758:24:9"},"referencedDeclaration":5555,"src":"56758:24:9","typeDescriptions":{"typeIdentifier":"t_contract$_IConstantFlowAgreementV1_$5555","typeString":"contract IConstantFlowAgreementV1"}},"visibility":"internal"}],"src":"56739:48:9"},"scope":5145,"src":"56668:917:9","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":5143,"nodeType":"Block","src":"57836:807:9","statements":[{"AST":{"nodeType":"YulBlock","src":"57906:108:9","statements":[{"nodeType":"YulAssignment","src":"57943:25:9","value":{"arguments":[{"name":"_HOST_SLOT","nodeType":"YulIdentifier","src":"57957:10:9"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"57951:5:9"},"nodeType":"YulFunctionCall","src":"57951:17:9"},"variableNames":[{"name":"host","nodeType":"YulIdentifier","src":"57943:4:9"}]},{"nodeType":"YulAssignment","src":"57981:23:9","value":{"arguments":[{"name":"_IDA_SLOT","nodeType":"YulIdentifier","src":"57994:9:9"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"57988:5:9"},"nodeType":"YulFunctionCall","src":"57988:16:9"},"variableNames":[{"name":"ida","nodeType":"YulIdentifier","src":"57981:3:9"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":4806,"isOffset":false,"isSlot":false,"src":"57957:10:9","valueSize":1},{"declaration":4812,"isOffset":false,"isSlot":false,"src":"57994:9:9","valueSize":1},{"declaration":5069,"isOffset":false,"isSlot":false,"src":"57943:4:9","valueSize":1},{"declaration":5072,"isOffset":false,"isSlot":false,"src":"57981:3:9","valueSize":1}],"id":5074,"nodeType":"InlineAssembly","src":"57897:117:9"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":5077,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5072,"src":"58035:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}],"id":5076,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"58027:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5075,"name":"address","nodeType":"ElementaryTypeName","src":"58027:7:9","typeDescriptions":{}}},"id":5078,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"58027:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":5081,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"58051:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":5080,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"58043:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5079,"name":"address","nodeType":"ElementaryTypeName","src":"58043:7:9","typeDescriptions":{}}},"id":5082,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"58043:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"58027:26:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5118,"nodeType":"IfStatement","src":"58023:525:9","trueBody":{"id":5117,"nodeType":"Block","src":"58055:493:9","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":5086,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5069,"src":"58166:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}],"id":5085,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"58158:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5084,"name":"address","nodeType":"ElementaryTypeName","src":"58158:7:9","typeDescriptions":{}}},"id":5087,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"58158:13:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":5090,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"58183:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":5089,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"58175:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5088,"name":"address","nodeType":"ElementaryTypeName","src":"58175:7:9","typeDescriptions":{}}},"id":5091,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"58175:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"58158:27:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5102,"nodeType":"IfStatement","src":"58154:101:9","trueBody":{"id":5101,"nodeType":"Block","src":"58187:68:9","statements":[{"expression":{"id":5099,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5093,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5069,"src":"58205:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":5095,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5065,"src":"58224:5:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"id":5096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"58230:7:9","memberName":"getHost","nodeType":"MemberAccess","referencedDeclaration":7819,"src":"58224:13:9","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":5097,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"58224:15:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5094,"name":"ISuperfluid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7667,"src":"58212:11:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISuperfluid_$7667_$","typeString":"type(contract ISuperfluid)"}},"id":5098,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"58212:28:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"src":"58205:35:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"id":5100,"nodeType":"ExpressionStatement","src":"58205:35:9"}]}},{"expression":{"id":5115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5103,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5072,"src":"58268:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[{"hexValue":"307831353630393331306165336333303138396131323138623761646162616633366332363732353565373063663931623663626133383433363764396564613332","id":5111,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"58468:66:9","typeDescriptions":{"typeIdentifier":"t_rational_9669202144888542544909930522822239693248535320499447278175106571457164925490_by_1","typeString":"int_const 9669...(68 digits omitted)...5490"},"value":"0x15609310ae3c30189a1218b7adabaf36c267255e70cf91b6cba384367d9eda32"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_9669202144888542544909930522822239693248535320499447278175106571457164925490_by_1","typeString":"int_const 9669...(68 digits omitted)...5490"}],"expression":{"arguments":[{"id":5108,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5069,"src":"58326:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}],"id":5107,"name":"ISuperfluid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7667,"src":"58314:11:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISuperfluid_$7667_$","typeString":"type(contract ISuperfluid)"}},"id":5109,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"58314:17:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"id":5110,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"58332:17:9","memberName":"getAgreementClass","nodeType":"MemberAccess","referencedDeclaration":7304,"src":"58314:35:9","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_contract$_ISuperAgreement_$6463_$","typeString":"function (bytes32) view external returns (contract ISuperAgreement)"}},"id":5112,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"58314:221:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISuperAgreement_$6463","typeString":"contract ISuperAgreement"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperAgreement_$6463","typeString":"contract ISuperAgreement"}],"id":5106,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"58306:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5105,"name":"address","nodeType":"ElementaryTypeName","src":"58306:7:9","typeDescriptions":{}}},"id":5113,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"58306:230:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5104,"name":"IInstantDistributionAgreementV1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5961,"src":"58274:31:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IInstantDistributionAgreementV1_$5961_$","typeString":"type(contract IInstantDistributionAgreementV1)"}},"id":5114,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"58274:263:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"src":"58268:269:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"id":5116,"nodeType":"ExpressionStatement","src":"58268:269:9"}]}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":5122,"name":"host","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5069,"src":"58572:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}],"id":5121,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"58564:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5120,"name":"address","nodeType":"ElementaryTypeName","src":"58564:7:9","typeDescriptions":{}}},"id":5123,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"58564:13:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":5126,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"58589:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":5125,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"58581:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5124,"name":"address","nodeType":"ElementaryTypeName","src":"58581:7:9","typeDescriptions":{}}},"id":5127,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"58581:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"58564:27:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":5119,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"58557:6:9","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":5129,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"58557:35:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5130,"nodeType":"ExpressionStatement","src":"58557:35:9"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5140,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":5134,"name":"ida","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5072,"src":"58617:3:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}],"id":5133,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"58609:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5132,"name":"address","nodeType":"ElementaryTypeName","src":"58609:7:9","typeDescriptions":{}}},"id":5135,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"58609:12:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":5138,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"58633:1:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":5137,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"58625:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5136,"name":"address","nodeType":"ElementaryTypeName","src":"58625:7:9","typeDescriptions":{}}},"id":5139,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"58625:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"58609:26:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":5131,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"58602:6:9","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":5141,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"58602:34:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5142,"nodeType":"ExpressionStatement","src":"58602:34:9"}]},"id":5144,"implemented":true,"kind":"function","modifiers":[],"name":"_getHostAndIDA","nameLocation":"57714:14:9","nodeType":"FunctionDefinition","parameters":{"id":5066,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5065,"mutability":"mutable","name":"token","nameLocation":"57741:5:9","nodeType":"VariableDeclaration","scope":5144,"src":"57729:17:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":5064,"nodeType":"UserDefinedTypeName","pathNode":{"id":5063,"name":"ISuperToken","nameLocations":["57729:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"57729:11:9"},"referencedDeclaration":7015,"src":"57729:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"}],"src":"57728:19:9"},"returnParameters":{"id":5073,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5069,"mutability":"mutable","name":"host","nameLocation":"57789:4:9","nodeType":"VariableDeclaration","scope":5144,"src":"57777:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"},"typeName":{"id":5068,"nodeType":"UserDefinedTypeName","pathNode":{"id":5067,"name":"ISuperfluid","nameLocations":["57777:11:9"],"nodeType":"IdentifierPath","referencedDeclaration":7667,"src":"57777:11:9"},"referencedDeclaration":7667,"src":"57777:11:9","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":5072,"mutability":"mutable","name":"ida","nameLocation":"57827:3:9","nodeType":"VariableDeclaration","scope":5144,"src":"57795:35:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"},"typeName":{"id":5071,"nodeType":"UserDefinedTypeName","pathNode":{"id":5070,"name":"IInstantDistributionAgreementV1","nameLocations":["57795:31:9"],"nodeType":"IdentifierPath","referencedDeclaration":5961,"src":"57795:31:9"},"referencedDeclaration":5961,"src":"57795:31:9","typeDescriptions":{"typeIdentifier":"t_contract$_IInstantDistributionAgreementV1_$5961","typeString":"contract IInstantDistributionAgreementV1"}},"visibility":"internal"}],"src":"57776:55:9"},"scope":5145,"src":"57705:938:9","stateMutability":"view","virtual":false,"visibility":"private"}],"scope":5146,"src":"572:58073:9","usedErrors":[]}],"src":"35:58611:9"},"id":9},"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol":{"ast":{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol","exportedSymbols":{"IConstantFlowAgreementV1":[5555],"ISuperAgreement":[6463],"ISuperfluidToken":[8082]},"id":5556,"license":"AGPLv3","nodeType":"SourceUnit","nodes":[{"id":5147,"literals":["solidity",">=","0.8",".4"],"nodeType":"PragmaDirective","src":"35:25:10"},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol","file":"../superfluid/ISuperAgreement.sol","id":5149,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5556,"sourceUnit":6464,"src":"62:68:10","symbolAliases":[{"foreign":{"id":5148,"name":"ISuperAgreement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6463,"src":"71:15:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol","file":"../superfluid/ISuperfluidToken.sol","id":5151,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5556,"sourceUnit":8083,"src":"131:70:10","symbolAliases":[{"foreign":{"id":5150,"name":"ISuperfluidToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8082,"src":"140:16:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":5153,"name":"ISuperAgreement","nameLocations":["323:15:10"],"nodeType":"IdentifierPath","referencedDeclaration":6463,"src":"323:15:10"},"id":5154,"nodeType":"InheritanceSpecifier","src":"323:15:10"}],"canonicalName":"IConstantFlowAgreementV1","contractDependencies":[],"contractKind":"contract","documentation":{"id":5152,"nodeType":"StructuredDocumentation","src":"203:73:10","text":" @title Constant Flow Agreement interface\n @author Superfluid"},"fullyImplemented":false,"id":5555,"linearizedBaseContracts":[5555,6463],"name":"IConstantFlowAgreementV1","nameLocation":"295:24:10","nodeType":"ContractDefinition","nodes":[{"errorSelector":"4b993136","id":5156,"name":"CFA_ACL_NO_SENDER_CREATE","nameLocation":"526:24:10","nodeType":"ErrorDefinition","parameters":{"id":5155,"nodeType":"ParameterList","parameters":[],"src":"550:2:10"},"src":"520:33:10"},{"errorSelector":"edfa0d3b","id":5158,"name":"CFA_ACL_NO_SENDER_UPDATE","nameLocation":"592:24:10","nodeType":"ErrorDefinition","parameters":{"id":5157,"nodeType":"ParameterList","parameters":[],"src":"616:2:10"},"src":"586:33:10"},{"errorSelector":"a3eab6ac","id":5160,"name":"CFA_ACL_OPERATOR_NO_CREATE_PERMISSIONS","nameLocation":"658:38:10","nodeType":"ErrorDefinition","parameters":{"id":5159,"nodeType":"ParameterList","parameters":[],"src":"696:2:10"},"src":"652:47:10"},{"errorSelector":"ac434b5f","id":5162,"name":"CFA_ACL_OPERATOR_NO_UPDATE_PERMISSIONS","nameLocation":"724:38:10","nodeType":"ErrorDefinition","parameters":{"id":5161,"nodeType":"ParameterList","parameters":[],"src":"762:2:10"},"src":"718:47:10"},{"errorSelector":"e30f1bff","id":5164,"name":"CFA_ACL_OPERATOR_NO_DELETE_PERMISSIONS","nameLocation":"790:38:10","nodeType":"ErrorDefinition","parameters":{"id":5163,"nodeType":"ParameterList","parameters":[],"src":"828:2:10"},"src":"784:47:10"},{"errorSelector":"a0645c1f","id":5166,"name":"CFA_ACL_FLOW_RATE_ALLOWANCE_EXCEEDED","nameLocation":"856:36:10","nodeType":"ErrorDefinition","parameters":{"id":5165,"nodeType":"ParameterList","parameters":[],"src":"892:2:10"},"src":"850:45:10"},{"errorSelector":"7939d66c","id":5168,"name":"CFA_ACL_UNCLEAN_PERMISSIONS","nameLocation":"922:27:10","nodeType":"ErrorDefinition","parameters":{"id":5167,"nodeType":"ParameterList","parameters":[],"src":"949:2:10"},"src":"916:36:10"},{"errorSelector":"b0ed394d","id":5170,"name":"CFA_ACL_NO_SENDER_FLOW_OPERATOR","nameLocation":"988:31:10","nodeType":"ErrorDefinition","parameters":{"id":5169,"nodeType":"ParameterList","parameters":[],"src":"1019:2:10"},"src":"982:40:10"},{"errorSelector":"86e0377d","id":5172,"name":"CFA_ACL_NO_NEGATIVE_ALLOWANCE","nameLocation":"1054:29:10","nodeType":"ErrorDefinition","parameters":{"id":5171,"nodeType":"ParameterList","parameters":[],"src":"1083:2:10"},"src":"1048:38:10"},{"errorSelector":"801b6863","id":5174,"name":"CFA_FLOW_ALREADY_EXISTS","nameLocation":"1120:23:10","nodeType":"ErrorDefinition","parameters":{"id":5173,"nodeType":"ParameterList","parameters":[],"src":"1143:2:10"},"src":"1114:32:10"},{"errorSelector":"5a32bf24","id":5176,"name":"CFA_FLOW_DOES_NOT_EXIST","nameLocation":"1186:23:10","nodeType":"ErrorDefinition","parameters":{"id":5175,"nodeType":"ParameterList","parameters":[],"src":"1209:2:10"},"src":"1180:32:10"},{"errorSelector":"ea76c9b3","id":5178,"name":"CFA_INSUFFICIENT_BALANCE","nameLocation":"1252:24:10","nodeType":"ErrorDefinition","parameters":{"id":5177,"nodeType":"ParameterList","parameters":[],"src":"1276:2:10"},"src":"1246:33:10"},{"errorSelector":"1ce9b067","id":5180,"name":"CFA_ZERO_ADDRESS_SENDER","nameLocation":"1318:23:10","nodeType":"ErrorDefinition","parameters":{"id":5179,"nodeType":"ParameterList","parameters":[],"src":"1341:2:10"},"src":"1312:32:10"},{"errorSelector":"78e02b2a","id":5182,"name":"CFA_ZERO_ADDRESS_RECEIVER","nameLocation":"1384:25:10","nodeType":"ErrorDefinition","parameters":{"id":5181,"nodeType":"ParameterList","parameters":[],"src":"1409:2:10"},"src":"1378:34:10"},{"errorSelector":"9f76430b","id":5184,"name":"CFA_HOOK_OUT_OF_GAS","nameLocation":"1450:19:10","nodeType":"ErrorDefinition","parameters":{"id":5183,"nodeType":"ParameterList","parameters":[],"src":"1469:2:10"},"src":"1444:28:10"},{"errorSelector":"752c2b9c","id":5186,"name":"CFA_DEPOSIT_TOO_BIG","nameLocation":"1516:19:10","nodeType":"ErrorDefinition","parameters":{"id":5185,"nodeType":"ParameterList","parameters":[],"src":"1535:2:10"},"src":"1510:28:10"},{"errorSelector":"0c9c55c1","id":5188,"name":"CFA_FLOW_RATE_TOO_BIG","nameLocation":"1582:21:10","nodeType":"ErrorDefinition","parameters":{"id":5187,"nodeType":"ParameterList","parameters":[],"src":"1603:2:10"},"src":"1576:30:10"},{"errorSelector":"ce11b5d1","id":5190,"name":"CFA_NON_CRITICAL_SENDER","nameLocation":"1648:23:10","nodeType":"ErrorDefinition","parameters":{"id":5189,"nodeType":"ParameterList","parameters":[],"src":"1671:2:10"},"src":"1642:32:10"},{"errorSelector":"91acad16","id":5192,"name":"CFA_INVALID_FLOW_RATE","nameLocation":"1714:21:10","nodeType":"ErrorDefinition","parameters":{"id":5191,"nodeType":"ParameterList","parameters":[],"src":"1735:2:10"},"src":"1708:30:10"},{"errorSelector":"a47338ef","id":5194,"name":"CFA_NO_SELF_FLOW","nameLocation":"1780:16:10","nodeType":"ErrorDefinition","parameters":{"id":5193,"nodeType":"ParameterList","parameters":[],"src":"1796:2:10"},"src":"1774:25:10"},{"baseFunctions":[6445],"body":{"id":5205,"nodeType":"Block","src":"1965:95:10","statements":[{"expression":{"arguments":[{"hexValue":"6f72672e7375706572666c7569642d66696e616e63652e61677265656d656e74732e436f6e7374616e74466c6f7741677265656d656e742e7631","id":5202,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1992:60:10","typeDescriptions":{"typeIdentifier":"t_stringliteral_a9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd3","typeString":"literal_string \"org.superfluid-finance.agreements.ConstantFlowAgreement.v1\""},"value":"org.superfluid-finance.agreements.ConstantFlowAgreement.v1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_a9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd3","typeString":"literal_string \"org.superfluid-finance.agreements.ConstantFlowAgreement.v1\""}],"id":5201,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1982:9:10","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":5203,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1982:71:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":5200,"id":5204,"nodeType":"Return","src":"1975:78:10"}]},"documentation":{"id":5195,"nodeType":"StructuredDocumentation","src":"1841:53:10","text":"@dev ISuperAgreement.agreementType implementation"},"functionSelector":"7730599e","id":5206,"implemented":true,"kind":"function","modifiers":[],"name":"agreementType","nameLocation":"1908:13:10","nodeType":"FunctionDefinition","overrides":{"id":5197,"nodeType":"OverrideSpecifier","overrides":[],"src":"1933:8:10"},"parameters":{"id":5196,"nodeType":"ParameterList","parameters":[],"src":"1921:2:10"},"returnParameters":{"id":5200,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5199,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5206,"src":"1956:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5198,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1956:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1955:9:10"},"scope":5555,"src":"1899:161:10","stateMutability":"pure","virtual":false,"visibility":"external"},{"documentation":{"id":5207,"nodeType":"StructuredDocumentation","src":"2066:239:10","text":" @notice Get the maximum flow rate allowed with the deposit\n @dev The deposit is clipped and rounded down\n @param deposit Deposit amount used for creating the flow\n @return flowRate The maximum flow rate"},"functionSelector":"0602f7db","id":5217,"implemented":false,"kind":"function","modifiers":[],"name":"getMaximumFlowRateFromDeposit","nameLocation":"2319:29:10","nodeType":"FunctionDefinition","parameters":{"id":5213,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5210,"mutability":"mutable","name":"token","nameLocation":"2375:5:10","nodeType":"VariableDeclaration","scope":5217,"src":"2358:22:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"},"typeName":{"id":5209,"nodeType":"UserDefinedTypeName","pathNode":{"id":5208,"name":"ISuperfluidToken","nameLocations":["2358:16:10"],"nodeType":"IdentifierPath","referencedDeclaration":8082,"src":"2358:16:10"},"referencedDeclaration":8082,"src":"2358:16:10","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5212,"mutability":"mutable","name":"deposit","nameLocation":"2398:7:10","nodeType":"VariableDeclaration","scope":5217,"src":"2390:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5211,"name":"uint256","nodeType":"ElementaryTypeName","src":"2390:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2348:58:10"},"returnParameters":{"id":5216,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5215,"mutability":"mutable","name":"flowRate","nameLocation":"2460:8:10","nodeType":"VariableDeclaration","scope":5217,"src":"2454:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":5214,"name":"int96","nodeType":"ElementaryTypeName","src":"2454:5:10","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"2453:16:10"},"scope":5555,"src":"2310:160:10","stateMutability":"view","virtual":true,"visibility":"external"},{"documentation":{"id":5218,"nodeType":"StructuredDocumentation","src":"2476:482:10","text":" @notice Get the deposit required for creating the flow\n @dev Calculates the deposit based on the liquidationPeriod and flowRate\n @param flowRate Flow rate to be tested\n @return deposit The deposit amount based on flowRate and liquidationPeriod\n @custom:note \n - if calculated deposit (flowRate * liquidationPeriod) is less\n than the minimum deposit, we use the minimum deposit otherwise\n we use the calculated deposit"},"functionSelector":"8d997f6e","id":5228,"implemented":false,"kind":"function","modifiers":[],"name":"getDepositRequiredForFlowRate","nameLocation":"2972:29:10","nodeType":"FunctionDefinition","parameters":{"id":5224,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5221,"mutability":"mutable","name":"token","nameLocation":"3028:5:10","nodeType":"VariableDeclaration","scope":5228,"src":"3011:22:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"},"typeName":{"id":5220,"nodeType":"UserDefinedTypeName","pathNode":{"id":5219,"name":"ISuperfluidToken","nameLocations":["3011:16:10"],"nodeType":"IdentifierPath","referencedDeclaration":8082,"src":"3011:16:10"},"referencedDeclaration":8082,"src":"3011:16:10","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5223,"mutability":"mutable","name":"flowRate","nameLocation":"3049:8:10","nodeType":"VariableDeclaration","scope":5228,"src":"3043:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":5222,"name":"int96","nodeType":"ElementaryTypeName","src":"3043:5:10","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"3001:57:10"},"returnParameters":{"id":5227,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5226,"mutability":"mutable","name":"deposit","nameLocation":"3114:7:10","nodeType":"VariableDeclaration","scope":5228,"src":"3106:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5225,"name":"uint256","nodeType":"ElementaryTypeName","src":"3106:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3105:17:10"},"scope":5555,"src":"2963:160:10","stateMutability":"view","virtual":true,"visibility":"external"},{"documentation":{"id":5229,"nodeType":"StructuredDocumentation","src":"3129:306:10","text":" @dev Returns whether it is the patrician period based on host.getNow()\n @param account The account we are interested in\n @return isCurrentlyPatricianPeriod Whether it is currently the patrician period dictated by governance\n @return timestamp The value of host.getNow()"},"functionSelector":"4fe9c291","id":5241,"implemented":false,"kind":"function","modifiers":[],"name":"isPatricianPeriodNow","nameLocation":"3449:20:10","nodeType":"FunctionDefinition","parameters":{"id":5235,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5232,"mutability":"mutable","name":"token","nameLocation":"3496:5:10","nodeType":"VariableDeclaration","scope":5241,"src":"3479:22:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"},"typeName":{"id":5231,"nodeType":"UserDefinedTypeName","pathNode":{"id":5230,"name":"ISuperfluidToken","nameLocations":["3479:16:10"],"nodeType":"IdentifierPath","referencedDeclaration":8082,"src":"3479:16:10"},"referencedDeclaration":8082,"src":"3479:16:10","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5234,"mutability":"mutable","name":"account","nameLocation":"3519:7:10","nodeType":"VariableDeclaration","scope":5241,"src":"3511:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5233,"name":"address","nodeType":"ElementaryTypeName","src":"3511:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3469:58:10"},"returnParameters":{"id":5240,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5237,"mutability":"mutable","name":"isCurrentlyPatricianPeriod","nameLocation":"3580:26:10","nodeType":"VariableDeclaration","scope":5241,"src":"3575:31:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5236,"name":"bool","nodeType":"ElementaryTypeName","src":"3575:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5239,"mutability":"mutable","name":"timestamp","nameLocation":"3616:9:10","nodeType":"VariableDeclaration","scope":5241,"src":"3608:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5238,"name":"uint256","nodeType":"ElementaryTypeName","src":"3608:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3574:52:10"},"scope":5555,"src":"3440:187:10","stateMutability":"view","virtual":true,"visibility":"external"},{"documentation":{"id":5242,"nodeType":"StructuredDocumentation","src":"3633:329:10","text":" @dev Returns whether it is the patrician period based on timestamp\n @param account The account we are interested in\n @param timestamp The timestamp we are interested in observing the result of isPatricianPeriod\n @return bool Whether it is currently the patrician period dictated by governance"},"functionSelector":"4b839e0b","id":5254,"implemented":false,"kind":"function","modifiers":[],"name":"isPatricianPeriod","nameLocation":"3976:17:10","nodeType":"FunctionDefinition","parameters":{"id":5250,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5245,"mutability":"mutable","name":"token","nameLocation":"4020:5:10","nodeType":"VariableDeclaration","scope":5254,"src":"4003:22:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"},"typeName":{"id":5244,"nodeType":"UserDefinedTypeName","pathNode":{"id":5243,"name":"ISuperfluidToken","nameLocations":["4003:16:10"],"nodeType":"IdentifierPath","referencedDeclaration":8082,"src":"4003:16:10"},"referencedDeclaration":8082,"src":"4003:16:10","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5247,"mutability":"mutable","name":"account","nameLocation":"4043:7:10","nodeType":"VariableDeclaration","scope":5254,"src":"4035:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5246,"name":"address","nodeType":"ElementaryTypeName","src":"4035:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5249,"mutability":"mutable","name":"timestamp","nameLocation":"4068:9:10","nodeType":"VariableDeclaration","scope":5254,"src":"4060:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5248,"name":"uint256","nodeType":"ElementaryTypeName","src":"4060:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3993:90:10"},"returnParameters":{"id":5253,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5252,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5254,"src":"4129:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5251,"name":"bool","nodeType":"ElementaryTypeName","src":"4129:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4128:6:10"},"scope":5555,"src":"3967:168:10","stateMutability":"view","virtual":true,"visibility":"public"},{"documentation":{"id":5255,"nodeType":"StructuredDocumentation","src":"4141:464:10","text":" @dev msgSender from `ctx` updates permissions for the `flowOperator` with `flowRateAllowance`\n @param token Super token address\n @param flowOperator The permission grantee address\n @param permissions A bitmask representation of the granted permissions\n @param flowRateAllowance The flow rate allowance the `flowOperator` is granted (only goes down)\n @param ctx Context bytes (see ISuperfluid.sol for Context struct)"},"functionSelector":"811b3d40","id":5271,"implemented":false,"kind":"function","modifiers":[],"name":"updateFlowOperatorPermissions","nameLocation":"4619:29:10","nodeType":"FunctionDefinition","parameters":{"id":5267,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5258,"mutability":"mutable","name":"token","nameLocation":"4675:5:10","nodeType":"VariableDeclaration","scope":5271,"src":"4658:22:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"},"typeName":{"id":5257,"nodeType":"UserDefinedTypeName","pathNode":{"id":5256,"name":"ISuperfluidToken","nameLocations":["4658:16:10"],"nodeType":"IdentifierPath","referencedDeclaration":8082,"src":"4658:16:10"},"referencedDeclaration":8082,"src":"4658:16:10","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5260,"mutability":"mutable","name":"flowOperator","nameLocation":"4698:12:10","nodeType":"VariableDeclaration","scope":5271,"src":"4690:20:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5259,"name":"address","nodeType":"ElementaryTypeName","src":"4690:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5262,"mutability":"mutable","name":"permissions","nameLocation":"4726:11:10","nodeType":"VariableDeclaration","scope":5271,"src":"4720:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":5261,"name":"uint8","nodeType":"ElementaryTypeName","src":"4720:5:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":5264,"mutability":"mutable","name":"flowRateAllowance","nameLocation":"4753:17:10","nodeType":"VariableDeclaration","scope":5271,"src":"4747:23:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":5263,"name":"int96","nodeType":"ElementaryTypeName","src":"4747:5:10","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"},{"constant":false,"id":5266,"mutability":"mutable","name":"ctx","nameLocation":"4795:3:10","nodeType":"VariableDeclaration","scope":5271,"src":"4780:18:10","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":5265,"name":"bytes","nodeType":"ElementaryTypeName","src":"4780:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4648:156:10"},"returnParameters":{"id":5270,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5269,"mutability":"mutable","name":"newCtx","nameLocation":"4860:6:10","nodeType":"VariableDeclaration","scope":5271,"src":"4847:19:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5268,"name":"bytes","nodeType":"ElementaryTypeName","src":"4847:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4846:21:10"},"scope":5555,"src":"4610:258:10","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"documentation":{"id":5272,"nodeType":"StructuredDocumentation","src":"4874:508:10","text":" @notice msgSender from `ctx` increases flow rate allowance for the `flowOperator` by `addedFlowRateAllowance`\n @dev if `addedFlowRateAllowance` is negative, we revert with CFA_ACL_NO_NEGATIVE_ALLOWANCE\n @param token Super token address\n @param flowOperator The permission grantee address\n @param addedFlowRateAllowance The flow rate allowance delta\n @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n @return newCtx The new context bytes"},"functionSelector":"ac5f5d00","id":5286,"implemented":false,"kind":"function","modifiers":[],"name":"increaseFlowRateAllowance","nameLocation":"5396:25:10","nodeType":"FunctionDefinition","parameters":{"id":5282,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5275,"mutability":"mutable","name":"token","nameLocation":"5448:5:10","nodeType":"VariableDeclaration","scope":5286,"src":"5431:22:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"},"typeName":{"id":5274,"nodeType":"UserDefinedTypeName","pathNode":{"id":5273,"name":"ISuperfluidToken","nameLocations":["5431:16:10"],"nodeType":"IdentifierPath","referencedDeclaration":8082,"src":"5431:16:10"},"referencedDeclaration":8082,"src":"5431:16:10","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5277,"mutability":"mutable","name":"flowOperator","nameLocation":"5471:12:10","nodeType":"VariableDeclaration","scope":5286,"src":"5463:20:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5276,"name":"address","nodeType":"ElementaryTypeName","src":"5463:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5279,"mutability":"mutable","name":"addedFlowRateAllowance","nameLocation":"5499:22:10","nodeType":"VariableDeclaration","scope":5286,"src":"5493:28:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":5278,"name":"int96","nodeType":"ElementaryTypeName","src":"5493:5:10","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"},{"constant":false,"id":5281,"mutability":"mutable","name":"ctx","nameLocation":"5546:3:10","nodeType":"VariableDeclaration","scope":5286,"src":"5531:18:10","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":5280,"name":"bytes","nodeType":"ElementaryTypeName","src":"5531:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5421:134:10"},"returnParameters":{"id":5285,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5284,"mutability":"mutable","name":"newCtx","nameLocation":"5594:6:10","nodeType":"VariableDeclaration","scope":5286,"src":"5581:19:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5283,"name":"bytes","nodeType":"ElementaryTypeName","src":"5581:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5580:21:10"},"scope":5555,"src":"5387:215:10","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"documentation":{"id":5287,"nodeType":"StructuredDocumentation","src":"5608:520:10","text":" @dev msgSender from `ctx` decreases flow rate allowance for the `flowOperator` by `subtractedFlowRateAllowance`\n @dev if `subtractedFlowRateAllowance` is negative, we revert with CFA_ACL_NO_NEGATIVE_ALLOWANCE\n @param token Super token address\n @param flowOperator The permission grantee address\n @param subtractedFlowRateAllowance The flow rate allowance delta\n @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n @return newCtx The new context bytes"},"functionSelector":"5f51fb23","id":5301,"implemented":false,"kind":"function","modifiers":[],"name":"decreaseFlowRateAllowance","nameLocation":"6142:25:10","nodeType":"FunctionDefinition","parameters":{"id":5297,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5290,"mutability":"mutable","name":"token","nameLocation":"6194:5:10","nodeType":"VariableDeclaration","scope":5301,"src":"6177:22:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"},"typeName":{"id":5289,"nodeType":"UserDefinedTypeName","pathNode":{"id":5288,"name":"ISuperfluidToken","nameLocations":["6177:16:10"],"nodeType":"IdentifierPath","referencedDeclaration":8082,"src":"6177:16:10"},"referencedDeclaration":8082,"src":"6177:16:10","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5292,"mutability":"mutable","name":"flowOperator","nameLocation":"6217:12:10","nodeType":"VariableDeclaration","scope":5301,"src":"6209:20:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5291,"name":"address","nodeType":"ElementaryTypeName","src":"6209:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5294,"mutability":"mutable","name":"subtractedFlowRateAllowance","nameLocation":"6245:27:10","nodeType":"VariableDeclaration","scope":5301,"src":"6239:33:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":5293,"name":"int96","nodeType":"ElementaryTypeName","src":"6239:5:10","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"},{"constant":false,"id":5296,"mutability":"mutable","name":"ctx","nameLocation":"6297:3:10","nodeType":"VariableDeclaration","scope":5301,"src":"6282:18:10","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":5295,"name":"bytes","nodeType":"ElementaryTypeName","src":"6282:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6167:139:10"},"returnParameters":{"id":5300,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5299,"mutability":"mutable","name":"newCtx","nameLocation":"6345:6:10","nodeType":"VariableDeclaration","scope":5301,"src":"6332:19:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5298,"name":"bytes","nodeType":"ElementaryTypeName","src":"6332:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6331:21:10"},"scope":5555,"src":"6133:220:10","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"documentation":{"id":5302,"nodeType":"StructuredDocumentation","src":"6359:295:10","text":" @dev msgSender from `ctx` grants `flowOperator` all permissions with flowRateAllowance as type(int96).max\n @param token Super token address\n @param flowOperator The permission grantee address\n @param ctx Context bytes (see ISuperfluid.sol for Context struct)"},"functionSelector":"54b770e3","id":5314,"implemented":false,"kind":"function","modifiers":[],"name":"authorizeFlowOperatorWithFullControl","nameLocation":"6668:36:10","nodeType":"FunctionDefinition","parameters":{"id":5310,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5305,"mutability":"mutable","name":"token","nameLocation":"6731:5:10","nodeType":"VariableDeclaration","scope":5314,"src":"6714:22:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"},"typeName":{"id":5304,"nodeType":"UserDefinedTypeName","pathNode":{"id":5303,"name":"ISuperfluidToken","nameLocations":["6714:16:10"],"nodeType":"IdentifierPath","referencedDeclaration":8082,"src":"6714:16:10"},"referencedDeclaration":8082,"src":"6714:16:10","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5307,"mutability":"mutable","name":"flowOperator","nameLocation":"6754:12:10","nodeType":"VariableDeclaration","scope":5314,"src":"6746:20:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5306,"name":"address","nodeType":"ElementaryTypeName","src":"6746:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5309,"mutability":"mutable","name":"ctx","nameLocation":"6791:3:10","nodeType":"VariableDeclaration","scope":5314,"src":"6776:18:10","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":5308,"name":"bytes","nodeType":"ElementaryTypeName","src":"6776:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6704:96:10"},"returnParameters":{"id":5313,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5312,"mutability":"mutable","name":"newCtx","nameLocation":"6855:6:10","nodeType":"VariableDeclaration","scope":5314,"src":"6842:19:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5311,"name":"bytes","nodeType":"ElementaryTypeName","src":"6842:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6841:21:10"},"scope":5555,"src":"6659:204:10","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"documentation":{"id":5315,"nodeType":"StructuredDocumentation","src":"6870:346:10","text":" @notice msgSender from `ctx` revokes `flowOperator` create/update/delete permissions\n @dev `permissions` and `flowRateAllowance` will both be set to 0\n @param token Super token address\n @param flowOperator The permission grantee address\n @param ctx Context bytes (see ISuperfluid.sol for Context struct)"},"functionSelector":"062e56ec","id":5327,"implemented":false,"kind":"function","modifiers":[],"name":"revokeFlowOperatorWithFullControl","nameLocation":"7230:33:10","nodeType":"FunctionDefinition","parameters":{"id":5323,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5318,"mutability":"mutable","name":"token","nameLocation":"7290:5:10","nodeType":"VariableDeclaration","scope":5327,"src":"7273:22:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"},"typeName":{"id":5317,"nodeType":"UserDefinedTypeName","pathNode":{"id":5316,"name":"ISuperfluidToken","nameLocations":["7273:16:10"],"nodeType":"IdentifierPath","referencedDeclaration":8082,"src":"7273:16:10"},"referencedDeclaration":8082,"src":"7273:16:10","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5320,"mutability":"mutable","name":"flowOperator","nameLocation":"7313:12:10","nodeType":"VariableDeclaration","scope":5327,"src":"7305:20:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5319,"name":"address","nodeType":"ElementaryTypeName","src":"7305:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5322,"mutability":"mutable","name":"ctx","nameLocation":"7350:3:10","nodeType":"VariableDeclaration","scope":5327,"src":"7335:18:10","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":5321,"name":"bytes","nodeType":"ElementaryTypeName","src":"7335:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7263:96:10"},"returnParameters":{"id":5326,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5325,"mutability":"mutable","name":"newCtx","nameLocation":"7414:6:10","nodeType":"VariableDeclaration","scope":5327,"src":"7401:19:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5324,"name":"bytes","nodeType":"ElementaryTypeName","src":"7401:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7400:21:10"},"scope":5555,"src":"7221:201:10","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"documentation":{"id":5328,"nodeType":"StructuredDocumentation","src":"7428:553:10","text":" @notice Get the permissions of a flow operator between `sender` and `flowOperator` for `token`\n @param token Super token address\n @param sender The permission granter address\n @param flowOperator The permission grantee address\n @return flowOperatorId The keccak256 hash of encoded string \"flowOperator\", sender and flowOperator\n @return permissions A bitmask representation of the granted permissions\n @return flowRateAllowance The flow rate allowance the `flowOperator` is granted (only goes down)"},"functionSelector":"00422bbe","id":5344,"implemented":false,"kind":"function","modifiers":[],"name":"getFlowOperatorData","nameLocation":"7995:19:10","nodeType":"FunctionDefinition","parameters":{"id":5336,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5331,"mutability":"mutable","name":"token","nameLocation":"8040:5:10","nodeType":"VariableDeclaration","scope":5344,"src":"8023:22:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"},"typeName":{"id":5330,"nodeType":"UserDefinedTypeName","pathNode":{"id":5329,"name":"ISuperfluidToken","nameLocations":["8023:16:10"],"nodeType":"IdentifierPath","referencedDeclaration":8082,"src":"8023:16:10"},"referencedDeclaration":8082,"src":"8023:16:10","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5333,"mutability":"mutable","name":"sender","nameLocation":"8062:6:10","nodeType":"VariableDeclaration","scope":5344,"src":"8054:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5332,"name":"address","nodeType":"ElementaryTypeName","src":"8054:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5335,"mutability":"mutable","name":"flowOperator","nameLocation":"8085:12:10","nodeType":"VariableDeclaration","scope":5344,"src":"8077:20:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5334,"name":"address","nodeType":"ElementaryTypeName","src":"8077:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8014:89:10"},"returnParameters":{"id":5343,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5338,"mutability":"mutable","name":"flowOperatorId","nameLocation":"8170:14:10","nodeType":"VariableDeclaration","scope":5344,"src":"8162:22:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5337,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8162:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":5340,"mutability":"mutable","name":"permissions","nameLocation":"8204:11:10","nodeType":"VariableDeclaration","scope":5344,"src":"8198:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":5339,"name":"uint8","nodeType":"ElementaryTypeName","src":"8198:5:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":5342,"mutability":"mutable","name":"flowRateAllowance","nameLocation":"8235:17:10","nodeType":"VariableDeclaration","scope":5344,"src":"8229:23:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":5341,"name":"int96","nodeType":"ElementaryTypeName","src":"8229:5:10","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"8148:114:10"},"scope":5555,"src":"7986:277:10","stateMutability":"view","virtual":true,"visibility":"public"},{"documentation":{"id":5345,"nodeType":"StructuredDocumentation","src":"8269:394:10","text":" @notice Get flow operator using flowOperatorId\n @param token Super token address\n @param flowOperatorId The keccak256 hash of encoded string \"flowOperator\", sender and flowOperator\n @return permissions A bitmask representation of the granted permissions\n @return flowRateAllowance The flow rate allowance the `flowOperator` is granted (only goes down)"},"functionSelector":"09d256ef","id":5357,"implemented":false,"kind":"function","modifiers":[],"name":"getFlowOperatorDataByID","nameLocation":"8677:23:10","nodeType":"FunctionDefinition","parameters":{"id":5351,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5348,"mutability":"mutable","name":"token","nameLocation":"8726:5:10","nodeType":"VariableDeclaration","scope":5357,"src":"8709:22:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"},"typeName":{"id":5347,"nodeType":"UserDefinedTypeName","pathNode":{"id":5346,"name":"ISuperfluidToken","nameLocations":["8709:16:10"],"nodeType":"IdentifierPath","referencedDeclaration":8082,"src":"8709:16:10"},"referencedDeclaration":8082,"src":"8709:16:10","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5350,"mutability":"mutable","name":"flowOperatorId","nameLocation":"8748:14:10","nodeType":"VariableDeclaration","scope":5357,"src":"8740:22:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5349,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8740:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8700:68:10"},"returnParameters":{"id":5356,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5353,"mutability":"mutable","name":"permissions","nameLocation":"8835:11:10","nodeType":"VariableDeclaration","scope":5357,"src":"8829:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":5352,"name":"uint8","nodeType":"ElementaryTypeName","src":"8829:5:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":5355,"mutability":"mutable","name":"flowRateAllowance","nameLocation":"8866:17:10","nodeType":"VariableDeclaration","scope":5357,"src":"8860:23:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":5354,"name":"int96","nodeType":"ElementaryTypeName","src":"8860:5:10","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"8815:78:10"},"scope":5555,"src":"8668:226:10","stateMutability":"view","virtual":true,"visibility":"external"},{"documentation":{"id":5358,"nodeType":"StructuredDocumentation","src":"8900:741:10","text":" @notice Create a flow betwen ctx.msgSender and receiver\n @dev flowId (agreementId) is the keccak256 hash of encoded sender and receiver\n @param token Super token address\n @param receiver Flow receiver address\n @param flowRate New flow rate in amount per second\n @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n @custom:callbacks \n - AgreementCreated\n - agreementId - can be used in getFlowByID\n - agreementData - abi.encode(address flowSender, address flowReceiver)\n @custom:note \n - A deposit is taken as safety margin for the solvency agents\n - A extra gas fee may be taken to pay for solvency agent liquidations"},"functionSelector":"62fc305e","id":5372,"implemented":false,"kind":"function","modifiers":[],"name":"createFlow","nameLocation":"9655:10:10","nodeType":"FunctionDefinition","parameters":{"id":5368,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5361,"mutability":"mutable","name":"token","nameLocation":"9692:5:10","nodeType":"VariableDeclaration","scope":5372,"src":"9675:22:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"},"typeName":{"id":5360,"nodeType":"UserDefinedTypeName","pathNode":{"id":5359,"name":"ISuperfluidToken","nameLocations":["9675:16:10"],"nodeType":"IdentifierPath","referencedDeclaration":8082,"src":"9675:16:10"},"referencedDeclaration":8082,"src":"9675:16:10","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5363,"mutability":"mutable","name":"receiver","nameLocation":"9715:8:10","nodeType":"VariableDeclaration","scope":5372,"src":"9707:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5362,"name":"address","nodeType":"ElementaryTypeName","src":"9707:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5365,"mutability":"mutable","name":"flowRate","nameLocation":"9739:8:10","nodeType":"VariableDeclaration","scope":5372,"src":"9733:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":5364,"name":"int96","nodeType":"ElementaryTypeName","src":"9733:5:10","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"},{"constant":false,"id":5367,"mutability":"mutable","name":"ctx","nameLocation":"9772:3:10","nodeType":"VariableDeclaration","scope":5372,"src":"9757:18:10","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":5366,"name":"bytes","nodeType":"ElementaryTypeName","src":"9757:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9665:116:10"},"returnParameters":{"id":5371,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5370,"mutability":"mutable","name":"newCtx","nameLocation":"9836:6:10","nodeType":"VariableDeclaration","scope":5372,"src":"9823:19:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5369,"name":"bytes","nodeType":"ElementaryTypeName","src":"9823:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9822:21:10"},"scope":5555,"src":"9646:198:10","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"documentation":{"id":5373,"nodeType":"StructuredDocumentation","src":"9850:436:10","text":" @notice Create a flow between sender and receiver\n @dev A flow created by an approved flow operator (see above for details on callbacks)\n @param token Super token address\n @param sender Flow sender address (has granted permissions)\n @param receiver Flow receiver address\n @param flowRate New flow rate in amount per second\n @param ctx Context bytes (see ISuperfluid.sol for Context struct)"},"functionSelector":"94229ecb","id":5389,"implemented":false,"kind":"function","modifiers":[],"name":"createFlowByOperator","nameLocation":"10300:20:10","nodeType":"FunctionDefinition","parameters":{"id":5385,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5376,"mutability":"mutable","name":"token","nameLocation":"10347:5:10","nodeType":"VariableDeclaration","scope":5389,"src":"10330:22:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"},"typeName":{"id":5375,"nodeType":"UserDefinedTypeName","pathNode":{"id":5374,"name":"ISuperfluidToken","nameLocations":["10330:16:10"],"nodeType":"IdentifierPath","referencedDeclaration":8082,"src":"10330:16:10"},"referencedDeclaration":8082,"src":"10330:16:10","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5378,"mutability":"mutable","name":"sender","nameLocation":"10370:6:10","nodeType":"VariableDeclaration","scope":5389,"src":"10362:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5377,"name":"address","nodeType":"ElementaryTypeName","src":"10362:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5380,"mutability":"mutable","name":"receiver","nameLocation":"10394:8:10","nodeType":"VariableDeclaration","scope":5389,"src":"10386:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5379,"name":"address","nodeType":"ElementaryTypeName","src":"10386:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5382,"mutability":"mutable","name":"flowRate","nameLocation":"10418:8:10","nodeType":"VariableDeclaration","scope":5389,"src":"10412:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":5381,"name":"int96","nodeType":"ElementaryTypeName","src":"10412:5:10","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"},{"constant":false,"id":5384,"mutability":"mutable","name":"ctx","nameLocation":"10451:3:10","nodeType":"VariableDeclaration","scope":5389,"src":"10436:18:10","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":5383,"name":"bytes","nodeType":"ElementaryTypeName","src":"10436:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"10320:140:10"},"returnParameters":{"id":5388,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5387,"mutability":"mutable","name":"newCtx","nameLocation":"10515:6:10","nodeType":"VariableDeclaration","scope":5389,"src":"10502:19:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5386,"name":"bytes","nodeType":"ElementaryTypeName","src":"10502:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"10501:21:10"},"scope":5555,"src":"10291:232:10","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"documentation":{"id":5390,"nodeType":"StructuredDocumentation","src":"10529:833:10","text":" @notice Update the flow rate between ctx.msgSender and receiver\n @dev flowId (agreementId) is the keccak256 hash of encoded sender and receiver\n @param token Super token address\n @param receiver Flow receiver address\n @param flowRate New flow rate in amount per second\n @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n @custom:callbacks \n - AgreementUpdated\n - agreementId - can be used in getFlowByID\n - agreementData - abi.encode(address flowSender, address flowReceiver)\n @custom:note \n - Only the flow sender may update the flow rate\n - Even if the flow rate is zero, the flow is not deleted\n from the system\n - Deposit amount will be adjusted accordingly\n - No new gas fee is charged"},"functionSelector":"50209a62","id":5404,"implemented":false,"kind":"function","modifiers":[],"name":"updateFlow","nameLocation":"11376:10:10","nodeType":"FunctionDefinition","parameters":{"id":5400,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5393,"mutability":"mutable","name":"token","nameLocation":"11413:5:10","nodeType":"VariableDeclaration","scope":5404,"src":"11396:22:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"},"typeName":{"id":5392,"nodeType":"UserDefinedTypeName","pathNode":{"id":5391,"name":"ISuperfluidToken","nameLocations":["11396:16:10"],"nodeType":"IdentifierPath","referencedDeclaration":8082,"src":"11396:16:10"},"referencedDeclaration":8082,"src":"11396:16:10","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5395,"mutability":"mutable","name":"receiver","nameLocation":"11436:8:10","nodeType":"VariableDeclaration","scope":5404,"src":"11428:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5394,"name":"address","nodeType":"ElementaryTypeName","src":"11428:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5397,"mutability":"mutable","name":"flowRate","nameLocation":"11460:8:10","nodeType":"VariableDeclaration","scope":5404,"src":"11454:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":5396,"name":"int96","nodeType":"ElementaryTypeName","src":"11454:5:10","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"},{"constant":false,"id":5399,"mutability":"mutable","name":"ctx","nameLocation":"11493:3:10","nodeType":"VariableDeclaration","scope":5404,"src":"11478:18:10","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":5398,"name":"bytes","nodeType":"ElementaryTypeName","src":"11478:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"11386:116:10"},"returnParameters":{"id":5403,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5402,"mutability":"mutable","name":"newCtx","nameLocation":"11557:6:10","nodeType":"VariableDeclaration","scope":5404,"src":"11544:19:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5401,"name":"bytes","nodeType":"ElementaryTypeName","src":"11544:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"11543:21:10"},"scope":5555,"src":"11367:198:10","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"documentation":{"id":5405,"nodeType":"StructuredDocumentation","src":"11571:436:10","text":" @notice Update a flow between sender and receiver\n @dev A flow updated by an approved flow operator (see above for details on callbacks)\n @param token Super token address\n @param sender Flow sender address (has granted permissions)\n @param receiver Flow receiver address\n @param flowRate New flow rate in amount per second\n @param ctx Context bytes (see ISuperfluid.sol for Context struct)"},"functionSelector":"354b9590","id":5421,"implemented":false,"kind":"function","modifiers":[],"name":"updateFlowByOperator","nameLocation":"12021:20:10","nodeType":"FunctionDefinition","parameters":{"id":5417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5408,"mutability":"mutable","name":"token","nameLocation":"12068:5:10","nodeType":"VariableDeclaration","scope":5421,"src":"12051:22:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"},"typeName":{"id":5407,"nodeType":"UserDefinedTypeName","pathNode":{"id":5406,"name":"ISuperfluidToken","nameLocations":["12051:16:10"],"nodeType":"IdentifierPath","referencedDeclaration":8082,"src":"12051:16:10"},"referencedDeclaration":8082,"src":"12051:16:10","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5410,"mutability":"mutable","name":"sender","nameLocation":"12091:6:10","nodeType":"VariableDeclaration","scope":5421,"src":"12083:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5409,"name":"address","nodeType":"ElementaryTypeName","src":"12083:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5412,"mutability":"mutable","name":"receiver","nameLocation":"12115:8:10","nodeType":"VariableDeclaration","scope":5421,"src":"12107:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5411,"name":"address","nodeType":"ElementaryTypeName","src":"12107:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5414,"mutability":"mutable","name":"flowRate","nameLocation":"12139:8:10","nodeType":"VariableDeclaration","scope":5421,"src":"12133:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":5413,"name":"int96","nodeType":"ElementaryTypeName","src":"12133:5:10","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"},{"constant":false,"id":5416,"mutability":"mutable","name":"ctx","nameLocation":"12172:3:10","nodeType":"VariableDeclaration","scope":5421,"src":"12157:18:10","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":5415,"name":"bytes","nodeType":"ElementaryTypeName","src":"12157:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"12041:140:10"},"returnParameters":{"id":5420,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5419,"mutability":"mutable","name":"newCtx","nameLocation":"12236:6:10","nodeType":"VariableDeclaration","scope":5421,"src":"12223:19:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5418,"name":"bytes","nodeType":"ElementaryTypeName","src":"12223:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"12222:21:10"},"scope":5555,"src":"12012:232:10","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"documentation":{"id":5422,"nodeType":"StructuredDocumentation","src":"12250:415:10","text":" @dev Get the flow data between `sender` and `receiver` of `token`\n @param token Super token address\n @param sender Flow receiver\n @param receiver Flow sender\n @return timestamp Timestamp of when the flow is updated\n @return flowRate The flow rate\n @return deposit The amount of deposit the flow\n @return owedDeposit The amount of owed deposit of the flow"},"functionSelector":"e6a1e888","id":5440,"implemented":false,"kind":"function","modifiers":[],"name":"getFlow","nameLocation":"12679:7:10","nodeType":"FunctionDefinition","parameters":{"id":5430,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5425,"mutability":"mutable","name":"token","nameLocation":"12713:5:10","nodeType":"VariableDeclaration","scope":5440,"src":"12696:22:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"},"typeName":{"id":5424,"nodeType":"UserDefinedTypeName","pathNode":{"id":5423,"name":"ISuperfluidToken","nameLocations":["12696:16:10"],"nodeType":"IdentifierPath","referencedDeclaration":8082,"src":"12696:16:10"},"referencedDeclaration":8082,"src":"12696:16:10","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5427,"mutability":"mutable","name":"sender","nameLocation":"12736:6:10","nodeType":"VariableDeclaration","scope":5440,"src":"12728:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5426,"name":"address","nodeType":"ElementaryTypeName","src":"12728:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5429,"mutability":"mutable","name":"receiver","nameLocation":"12760:8:10","nodeType":"VariableDeclaration","scope":5440,"src":"12752:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5428,"name":"address","nodeType":"ElementaryTypeName","src":"12752:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12686:88:10"},"returnParameters":{"id":5439,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5432,"mutability":"mutable","name":"timestamp","nameLocation":"12843:9:10","nodeType":"VariableDeclaration","scope":5440,"src":"12835:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5431,"name":"uint256","nodeType":"ElementaryTypeName","src":"12835:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5434,"mutability":"mutable","name":"flowRate","nameLocation":"12872:8:10","nodeType":"VariableDeclaration","scope":5440,"src":"12866:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":5433,"name":"int96","nodeType":"ElementaryTypeName","src":"12866:5:10","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"},{"constant":false,"id":5436,"mutability":"mutable","name":"deposit","nameLocation":"12902:7:10","nodeType":"VariableDeclaration","scope":5440,"src":"12894:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5435,"name":"uint256","nodeType":"ElementaryTypeName","src":"12894:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5438,"mutability":"mutable","name":"owedDeposit","nameLocation":"12931:11:10","nodeType":"VariableDeclaration","scope":5440,"src":"12923:19:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5437,"name":"uint256","nodeType":"ElementaryTypeName","src":"12923:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12821:131:10"},"scope":5555,"src":"12670:283:10","stateMutability":"view","virtual":true,"visibility":"external"},{"documentation":{"id":5441,"nodeType":"StructuredDocumentation","src":"12959:445:10","text":" @notice Get flow data using agreementId\n @dev flowId (agreementId) is the keccak256 hash of encoded sender and receiver\n @param token Super token address\n @param agreementId The agreement ID\n @return timestamp Timestamp of when the flow is updated\n @return flowRate The flow rate\n @return deposit The deposit amount of the flow\n @return owedDeposit The owed deposit amount of the flow"},"functionSelector":"aabd2668","id":5457,"implemented":false,"kind":"function","modifiers":[],"name":"getFlowByID","nameLocation":"13418:11:10","nodeType":"FunctionDefinition","parameters":{"id":5447,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5444,"mutability":"mutable","name":"token","nameLocation":"13455:5:10","nodeType":"VariableDeclaration","scope":5457,"src":"13438:22:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"},"typeName":{"id":5443,"nodeType":"UserDefinedTypeName","pathNode":{"id":5442,"name":"ISuperfluidToken","nameLocations":["13438:16:10"],"nodeType":"IdentifierPath","referencedDeclaration":8082,"src":"13438:16:10"},"referencedDeclaration":8082,"src":"13438:16:10","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5446,"mutability":"mutable","name":"agreementId","nameLocation":"13477:11:10","nodeType":"VariableDeclaration","scope":5457,"src":"13469:19:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5445,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13469:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"13429:65:10"},"returnParameters":{"id":5456,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5449,"mutability":"mutable","name":"timestamp","nameLocation":"13563:9:10","nodeType":"VariableDeclaration","scope":5457,"src":"13555:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5448,"name":"uint256","nodeType":"ElementaryTypeName","src":"13555:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5451,"mutability":"mutable","name":"flowRate","nameLocation":"13592:8:10","nodeType":"VariableDeclaration","scope":5457,"src":"13586:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":5450,"name":"int96","nodeType":"ElementaryTypeName","src":"13586:5:10","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"},{"constant":false,"id":5453,"mutability":"mutable","name":"deposit","nameLocation":"13622:7:10","nodeType":"VariableDeclaration","scope":5457,"src":"13614:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5452,"name":"uint256","nodeType":"ElementaryTypeName","src":"13614:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5455,"mutability":"mutable","name":"owedDeposit","nameLocation":"13651:11:10","nodeType":"VariableDeclaration","scope":5457,"src":"13643:19:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5454,"name":"uint256","nodeType":"ElementaryTypeName","src":"13643:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13541:131:10"},"scope":5555,"src":"13409:264:10","stateMutability":"view","virtual":true,"visibility":"external"},{"documentation":{"id":5458,"nodeType":"StructuredDocumentation","src":"13679:436:10","text":" @dev Get the aggregated flow info of the account\n @param token Super token address\n @param account Account for the query\n @return timestamp Timestamp of when a flow was last updated for account\n @return flowRate The net flow rate of token for account\n @return deposit The sum of all deposits for account's flows\n @return owedDeposit The sum of all owed deposits for account's flows"},"functionSelector":"0f1ac495","id":5474,"implemented":false,"kind":"function","modifiers":[],"name":"getAccountFlowInfo","nameLocation":"14129:18:10","nodeType":"FunctionDefinition","parameters":{"id":5464,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5461,"mutability":"mutable","name":"token","nameLocation":"14174:5:10","nodeType":"VariableDeclaration","scope":5474,"src":"14157:22:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"},"typeName":{"id":5460,"nodeType":"UserDefinedTypeName","pathNode":{"id":5459,"name":"ISuperfluidToken","nameLocations":["14157:16:10"],"nodeType":"IdentifierPath","referencedDeclaration":8082,"src":"14157:16:10"},"referencedDeclaration":8082,"src":"14157:16:10","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5463,"mutability":"mutable","name":"account","nameLocation":"14197:7:10","nodeType":"VariableDeclaration","scope":5474,"src":"14189:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5462,"name":"address","nodeType":"ElementaryTypeName","src":"14189:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"14147:63:10"},"returnParameters":{"id":5473,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5466,"mutability":"mutable","name":"timestamp","nameLocation":"14279:9:10","nodeType":"VariableDeclaration","scope":5474,"src":"14271:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5465,"name":"uint256","nodeType":"ElementaryTypeName","src":"14271:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5468,"mutability":"mutable","name":"flowRate","nameLocation":"14308:8:10","nodeType":"VariableDeclaration","scope":5474,"src":"14302:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":5467,"name":"int96","nodeType":"ElementaryTypeName","src":"14302:5:10","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"},{"constant":false,"id":5470,"mutability":"mutable","name":"deposit","nameLocation":"14338:7:10","nodeType":"VariableDeclaration","scope":5474,"src":"14330:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5469,"name":"uint256","nodeType":"ElementaryTypeName","src":"14330:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5472,"mutability":"mutable","name":"owedDeposit","nameLocation":"14367:11:10","nodeType":"VariableDeclaration","scope":5474,"src":"14359:19:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5471,"name":"uint256","nodeType":"ElementaryTypeName","src":"14359:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14257:122:10"},"scope":5555,"src":"14120:260:10","stateMutability":"view","virtual":true,"visibility":"external"},{"documentation":{"id":5475,"nodeType":"StructuredDocumentation","src":"14386:182:10","text":" @dev Get the net flow rate of the account\n @param token Super token address\n @param account Account for the query\n @return flowRate Net flow rate"},"functionSelector":"e8e7e2d1","id":5485,"implemented":false,"kind":"function","modifiers":[],"name":"getNetFlow","nameLocation":"14582:10:10","nodeType":"FunctionDefinition","parameters":{"id":5481,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5478,"mutability":"mutable","name":"token","nameLocation":"14619:5:10","nodeType":"VariableDeclaration","scope":5485,"src":"14602:22:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"},"typeName":{"id":5477,"nodeType":"UserDefinedTypeName","pathNode":{"id":5476,"name":"ISuperfluidToken","nameLocations":["14602:16:10"],"nodeType":"IdentifierPath","referencedDeclaration":8082,"src":"14602:16:10"},"referencedDeclaration":8082,"src":"14602:16:10","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5480,"mutability":"mutable","name":"account","nameLocation":"14642:7:10","nodeType":"VariableDeclaration","scope":5485,"src":"14634:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5479,"name":"address","nodeType":"ElementaryTypeName","src":"14634:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"14592:63:10"},"returnParameters":{"id":5484,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5483,"mutability":"mutable","name":"flowRate","nameLocation":"14709:8:10","nodeType":"VariableDeclaration","scope":5485,"src":"14703:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":5482,"name":"int96","nodeType":"ElementaryTypeName","src":"14703:5:10","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"14702:16:10"},"scope":5555,"src":"14573:146:10","stateMutability":"view","virtual":true,"visibility":"external"},{"documentation":{"id":5486,"nodeType":"StructuredDocumentation","src":"14725:763:10","text":" @notice Delete the flow between sender and receiver\n @dev flowId (agreementId) is the keccak256 hash of encoded sender and receiver\n @param token Super token address\n @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n @param receiver Flow receiver address\n @custom:callbacks \n - AgreementTerminated\n - agreementId - can be used in getFlowByID\n - agreementData - abi.encode(address flowSender, address flowReceiver)\n @custom:note \n - Both flow sender and receiver may delete the flow\n - If Sender account is insolvent or in critical state, a solvency agent may\n also terminate the agreement\n - Gas fee may be returned to the sender"},"functionSelector":"b4b333c6","id":5500,"implemented":false,"kind":"function","modifiers":[],"name":"deleteFlow","nameLocation":"15502:10:10","nodeType":"FunctionDefinition","parameters":{"id":5496,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5489,"mutability":"mutable","name":"token","nameLocation":"15539:5:10","nodeType":"VariableDeclaration","scope":5500,"src":"15522:22:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"},"typeName":{"id":5488,"nodeType":"UserDefinedTypeName","pathNode":{"id":5487,"name":"ISuperfluidToken","nameLocations":["15522:16:10"],"nodeType":"IdentifierPath","referencedDeclaration":8082,"src":"15522:16:10"},"referencedDeclaration":8082,"src":"15522:16:10","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5491,"mutability":"mutable","name":"sender","nameLocation":"15562:6:10","nodeType":"VariableDeclaration","scope":5500,"src":"15554:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5490,"name":"address","nodeType":"ElementaryTypeName","src":"15554:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5493,"mutability":"mutable","name":"receiver","nameLocation":"15586:8:10","nodeType":"VariableDeclaration","scope":5500,"src":"15578:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5492,"name":"address","nodeType":"ElementaryTypeName","src":"15578:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5495,"mutability":"mutable","name":"ctx","nameLocation":"15619:3:10","nodeType":"VariableDeclaration","scope":5500,"src":"15604:18:10","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":5494,"name":"bytes","nodeType":"ElementaryTypeName","src":"15604:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"15512:116:10"},"returnParameters":{"id":5499,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5498,"mutability":"mutable","name":"newCtx","nameLocation":"15683:6:10","nodeType":"VariableDeclaration","scope":5500,"src":"15670:19:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5497,"name":"bytes","nodeType":"ElementaryTypeName","src":"15670:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"15669:21:10"},"scope":5555,"src":"15493:198:10","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"documentation":{"id":5501,"nodeType":"StructuredDocumentation","src":"15697:321:10","text":" @notice Delete the flow between sender and receiver\n @dev A flow deleted by an approved flow operator (see above for details on callbacks)\n @param token Super token address\n @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n @param receiver Flow receiver address"},"functionSelector":"4c8b181f","id":5515,"implemented":false,"kind":"function","modifiers":[],"name":"deleteFlowByOperator","nameLocation":"16032:20:10","nodeType":"FunctionDefinition","parameters":{"id":5511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5504,"mutability":"mutable","name":"token","nameLocation":"16079:5:10","nodeType":"VariableDeclaration","scope":5515,"src":"16062:22:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"},"typeName":{"id":5503,"nodeType":"UserDefinedTypeName","pathNode":{"id":5502,"name":"ISuperfluidToken","nameLocations":["16062:16:10"],"nodeType":"IdentifierPath","referencedDeclaration":8082,"src":"16062:16:10"},"referencedDeclaration":8082,"src":"16062:16:10","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5506,"mutability":"mutable","name":"sender","nameLocation":"16102:6:10","nodeType":"VariableDeclaration","scope":5515,"src":"16094:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5505,"name":"address","nodeType":"ElementaryTypeName","src":"16094:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5508,"mutability":"mutable","name":"receiver","nameLocation":"16126:8:10","nodeType":"VariableDeclaration","scope":5515,"src":"16118:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5507,"name":"address","nodeType":"ElementaryTypeName","src":"16118:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5510,"mutability":"mutable","name":"ctx","nameLocation":"16159:3:10","nodeType":"VariableDeclaration","scope":5515,"src":"16144:18:10","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":5509,"name":"bytes","nodeType":"ElementaryTypeName","src":"16144:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"16052:116:10"},"returnParameters":{"id":5514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5513,"mutability":"mutable","name":"newCtx","nameLocation":"16223:6:10","nodeType":"VariableDeclaration","scope":5515,"src":"16210:19:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5512,"name":"bytes","nodeType":"ElementaryTypeName","src":"16210:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"16209:21:10"},"scope":5555,"src":"16023:208:10","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"anonymous":false,"documentation":{"id":5516,"nodeType":"StructuredDocumentation","src":"16242:353:10","text":" @dev Flow operator updated event\n @param token Super token address\n @param sender Flow sender address\n @param flowOperator Flow operator address\n @param permissions Octo bitmask representation of permissions\n @param flowRateAllowance The flow rate allowance the `flowOperator` is granted (only goes down)"},"eventSelector":"c0d5d3a6ac18cc1769788c925e6e7fc89cd47e4270a42884736fa9b3ec09f3a8","id":5529,"name":"FlowOperatorUpdated","nameLocation":"16606:19:10","nodeType":"EventDefinition","parameters":{"id":5528,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5519,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"16660:5:10","nodeType":"VariableDeclaration","scope":5529,"src":"16635:30:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"},"typeName":{"id":5518,"nodeType":"UserDefinedTypeName","pathNode":{"id":5517,"name":"ISuperfluidToken","nameLocations":["16635:16:10"],"nodeType":"IdentifierPath","referencedDeclaration":8082,"src":"16635:16:10"},"referencedDeclaration":8082,"src":"16635:16:10","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5521,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"16691:6:10","nodeType":"VariableDeclaration","scope":5529,"src":"16675:22:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5520,"name":"address","nodeType":"ElementaryTypeName","src":"16675:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5523,"indexed":true,"mutability":"mutable","name":"flowOperator","nameLocation":"16723:12:10","nodeType":"VariableDeclaration","scope":5529,"src":"16707:28:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5522,"name":"address","nodeType":"ElementaryTypeName","src":"16707:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5525,"indexed":false,"mutability":"mutable","name":"permissions","nameLocation":"16751:11:10","nodeType":"VariableDeclaration","scope":5529,"src":"16745:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":5524,"name":"uint8","nodeType":"ElementaryTypeName","src":"16745:5:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":5527,"indexed":false,"mutability":"mutable","name":"flowRateAllowance","nameLocation":"16778:17:10","nodeType":"VariableDeclaration","scope":5529,"src":"16772:23:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":5526,"name":"int96","nodeType":"ElementaryTypeName","src":"16772:5:10","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"16625:176:10"},"src":"16600:202:10"},{"anonymous":false,"documentation":{"id":5530,"nodeType":"StructuredDocumentation","src":"16808:466:10","text":" @dev Flow updated event\n @param token Super token address\n @param sender Flow sender address\n @param receiver Flow recipient address\n @param flowRate Flow rate in amount per second for this flow\n @param totalSenderFlowRate Total flow rate in amount per second for the sender\n @param totalReceiverFlowRate Total flow rate in amount per second for the receiver\n @param userData The user provided data"},"eventSelector":"57269d2ebcccecdcc0d9d2c0a0b80ead95f344e28ec20f50f709811f209d4e0e","id":5547,"name":"FlowUpdated","nameLocation":"17285:11:10","nodeType":"EventDefinition","parameters":{"id":5546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5533,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"17331:5:10","nodeType":"VariableDeclaration","scope":5547,"src":"17306:30:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"},"typeName":{"id":5532,"nodeType":"UserDefinedTypeName","pathNode":{"id":5531,"name":"ISuperfluidToken","nameLocations":["17306:16:10"],"nodeType":"IdentifierPath","referencedDeclaration":8082,"src":"17306:16:10"},"referencedDeclaration":8082,"src":"17306:16:10","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5535,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"17362:6:10","nodeType":"VariableDeclaration","scope":5547,"src":"17346:22:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5534,"name":"address","nodeType":"ElementaryTypeName","src":"17346:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5537,"indexed":true,"mutability":"mutable","name":"receiver","nameLocation":"17394:8:10","nodeType":"VariableDeclaration","scope":5547,"src":"17378:24:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5536,"name":"address","nodeType":"ElementaryTypeName","src":"17378:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5539,"indexed":false,"mutability":"mutable","name":"flowRate","nameLocation":"17418:8:10","nodeType":"VariableDeclaration","scope":5547,"src":"17412:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":5538,"name":"int96","nodeType":"ElementaryTypeName","src":"17412:5:10","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"},{"constant":false,"id":5541,"indexed":false,"mutability":"mutable","name":"totalSenderFlowRate","nameLocation":"17443:19:10","nodeType":"VariableDeclaration","scope":5547,"src":"17436:26:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5540,"name":"int256","nodeType":"ElementaryTypeName","src":"17436:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":5543,"indexed":false,"mutability":"mutable","name":"totalReceiverFlowRate","nameLocation":"17479:21:10","nodeType":"VariableDeclaration","scope":5547,"src":"17472:28:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5542,"name":"int256","nodeType":"ElementaryTypeName","src":"17472:6:10","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":5545,"indexed":false,"mutability":"mutable","name":"userData","nameLocation":"17516:8:10","nodeType":"VariableDeclaration","scope":5547,"src":"17510:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5544,"name":"bytes","nodeType":"ElementaryTypeName","src":"17510:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"17296:234:10"},"src":"17279:252:10"},{"anonymous":false,"documentation":{"id":5548,"nodeType":"StructuredDocumentation","src":"17537:181:10","text":" @dev Flow updated extension event\n @param flowOperator Flow operator address - the Context.msgSender\n @param deposit The deposit amount for the stream"},"eventSelector":"71e0c98e270fc3084227b473f176924d5303ece8c639e679998a2d7dc8e70f74","id":5554,"name":"FlowUpdatedExtension","nameLocation":"17729:20:10","nodeType":"EventDefinition","parameters":{"id":5553,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5550,"indexed":true,"mutability":"mutable","name":"flowOperator","nameLocation":"17775:12:10","nodeType":"VariableDeclaration","scope":5554,"src":"17759:28:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5549,"name":"address","nodeType":"ElementaryTypeName","src":"17759:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5552,"indexed":false,"mutability":"mutable","name":"deposit","nameLocation":"17805:7:10","nodeType":"VariableDeclaration","scope":5554,"src":"17797:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5551,"name":"uint256","nodeType":"ElementaryTypeName","src":"17797:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17749:69:10"},"src":"17723:96:10"}],"scope":5556,"src":"277:17544:10","usedErrors":[5156,5158,5160,5162,5164,5166,5168,5170,5172,5174,5176,5178,5180,5182,5184,5186,5188,5190,5192,5194]}],"src":"35:17787:10"},"id":10},"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IInstantDistributionAgreementV1.sol":{"ast":{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IInstantDistributionAgreementV1.sol","exportedSymbols":{"IInstantDistributionAgreementV1":[5961],"ISuperAgreement":[6463],"ISuperfluidToken":[8082]},"id":5962,"license":"AGPLv3","nodeType":"SourceUnit","nodes":[{"id":5557,"literals":["solidity",">=","0.8",".4"],"nodeType":"PragmaDirective","src":"35:25:11"},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol","file":"../superfluid/ISuperAgreement.sol","id":5559,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5962,"sourceUnit":6464,"src":"62:68:11","symbolAliases":[{"foreign":{"id":5558,"name":"ISuperAgreement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6463,"src":"71:15:11","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol","file":"../superfluid/ISuperfluidToken.sol","id":5561,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5962,"sourceUnit":8083,"src":"131:70:11","symbolAliases":[{"foreign":{"id":5560,"name":"ISuperfluidToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8082,"src":"140:16:11","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":5563,"name":"ISuperAgreement","nameLocations":["1837:15:11"],"nodeType":"IdentifierPath","referencedDeclaration":6463,"src":"1837:15:11"},"id":5564,"nodeType":"InheritanceSpecifier","src":"1837:15:11"}],"canonicalName":"IInstantDistributionAgreementV1","contractDependencies":[],"contractKind":"contract","documentation":{"id":5562,"nodeType":"StructuredDocumentation","src":"204:1579:11","text":" @title Instant Distribution Agreement interface\n @author Superfluid\n @notice \n - A publisher can create as many as indices as possibly identifiable with `indexId`.\n - `indexId` is deliberately limited to 32 bits, to avoid the chance for sha-3 collision.\n Despite knowing sha-3 collision is only theoretical.\n - A publisher can create a subscription to an index for any subscriber.\n - A subscription consists of:\n - The index it subscribes to.\n - Number of units subscribed.\n - An index consists of:\n - Current value as `uint128 indexValue`.\n - Total units of the approved subscriptions as `uint128 totalUnitsApproved`.\n - Total units of the non approved subscription as `uint128 totalUnitsPending`.\n - A publisher can update an index with a new value that doesn't decrease.\n - A publisher can update a subscription with any number of units.\n - A publisher or a subscriber can delete a subscription and reset its units to zero.\n - A subscriber must approve the index in order to receive distributions from the publisher\n each time the index is updated.\n - The amount distributed is $$\\Delta{index} * units$$\n - Distributions to a non approved subscription stays in the publisher's deposit until:\n - the subscriber approves the subscription (side effect),\n - the publisher updates the subscription (side effect),\n - the subscriber deletes the subscription even if it is never approved (side effect),\n - or the subscriber can explicitly claim them."},"fullyImplemented":false,"id":5961,"linearizedBaseContracts":[5961,6463],"name":"IInstantDistributionAgreementV1","nameLocation":"1802:31:11","nodeType":"ContractDefinition","nodes":[{"errorSelector":"cfdca725","id":5566,"name":"IDA_INDEX_SHOULD_GROW","nameLocation":"2040:21:11","nodeType":"ErrorDefinition","parameters":{"id":5565,"nodeType":"ParameterList","parameters":[],"src":"2061:2:11"},"src":"2034:30:11"},{"errorSelector":"92da6d17","id":5568,"name":"IDA_OPERATION_NOT_ALLOWED","nameLocation":"2101:25:11","nodeType":"ErrorDefinition","parameters":{"id":5567,"nodeType":"ParameterList","parameters":[],"src":"2126:2:11"},"src":"2095:34:11"},{"errorSelector":"5c02a517","id":5570,"name":"IDA_INDEX_ALREADY_EXISTS","nameLocation":"2162:24:11","nodeType":"ErrorDefinition","parameters":{"id":5569,"nodeType":"ParameterList","parameters":[],"src":"2186:2:11"},"src":"2156:33:11"},{"errorSelector":"edeaa63b","id":5572,"name":"IDA_INDEX_DOES_NOT_EXIST","nameLocation":"2223:24:11","nodeType":"ErrorDefinition","parameters":{"id":5571,"nodeType":"ParameterList","parameters":[],"src":"2247:2:11"},"src":"2217:33:11"},{"errorSelector":"b6c8c980","id":5574,"name":"IDA_SUBSCRIPTION_DOES_NOT_EXIST","nameLocation":"2284:31:11","nodeType":"ErrorDefinition","parameters":{"id":5573,"nodeType":"ParameterList","parameters":[],"src":"2315:2:11"},"src":"2278:40:11"},{"errorSelector":"3eb2f849","id":5576,"name":"IDA_SUBSCRIPTION_ALREADY_APPROVED","nameLocation":"2345:33:11","nodeType":"ErrorDefinition","parameters":{"id":5575,"nodeType":"ParameterList","parameters":[],"src":"2378:2:11"},"src":"2339:42:11"},{"errorSelector":"37412573","id":5578,"name":"IDA_SUBSCRIPTION_IS_NOT_APPROVED","nameLocation":"2406:32:11","nodeType":"ErrorDefinition","parameters":{"id":5577,"nodeType":"ParameterList","parameters":[],"src":"2438:2:11"},"src":"2400:41:11"},{"errorSelector":"16e759bb","id":5580,"name":"IDA_INSUFFICIENT_BALANCE","nameLocation":"2467:24:11","nodeType":"ErrorDefinition","parameters":{"id":5579,"nodeType":"ParameterList","parameters":[],"src":"2491:2:11"},"src":"2461:33:11"},{"errorSelector":"c90a4674","id":5582,"name":"IDA_ZERO_ADDRESS_SUBSCRIBER","nameLocation":"2528:27:11","nodeType":"ErrorDefinition","parameters":{"id":5581,"nodeType":"ParameterList","parameters":[],"src":"2555:2:11"},"src":"2522:36:11"},{"baseFunctions":[6445],"body":{"id":5593,"nodeType":"Block","src":"2708:102:11","statements":[{"expression":{"arguments":[{"hexValue":"6f72672e7375706572666c7569642d66696e616e63652e61677265656d656e74732e496e7374616e74446973747269627574696f6e41677265656d656e742e7631","id":5590,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2735:67:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_8aedc3b5d4bf031e11a7e2940f7251c005698405d58e02e1c247fed3b1b3a674","typeString":"literal_string \"org.superfluid-finance.agreements.InstantDistributionAgreement.v1\""},"value":"org.superfluid-finance.agreements.InstantDistributionAgreement.v1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_8aedc3b5d4bf031e11a7e2940f7251c005698405d58e02e1c247fed3b1b3a674","typeString":"literal_string \"org.superfluid-finance.agreements.InstantDistributionAgreement.v1\""}],"id":5589,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2725:9:11","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":5591,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2725:78:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":5588,"id":5592,"nodeType":"Return","src":"2718:85:11"}]},"documentation":{"id":5583,"nodeType":"StructuredDocumentation","src":"2584:53:11","text":"@dev ISuperAgreement.agreementType implementation"},"functionSelector":"7730599e","id":5594,"implemented":true,"kind":"function","modifiers":[],"name":"agreementType","nameLocation":"2651:13:11","nodeType":"FunctionDefinition","overrides":{"id":5585,"nodeType":"OverrideSpecifier","overrides":[],"src":"2676:8:11"},"parameters":{"id":5584,"nodeType":"ParameterList","parameters":[],"src":"2664:2:11"},"returnParameters":{"id":5588,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5587,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5594,"src":"2699:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5586,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2699:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2698:9:11"},"scope":5961,"src":"2642:168:11","stateMutability":"pure","virtual":false,"visibility":"external"},{"documentation":{"id":5595,"nodeType":"StructuredDocumentation","src":"3001:256:11","text":" @dev Create a new index for the publisher\n @param token Super token address\n @param indexId Id of the index\n @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n @custom:callbacks \n None"},"functionSelector":"d787840a","id":5607,"implemented":false,"kind":"function","modifiers":[],"name":"createIndex","nameLocation":"3271:11:11","nodeType":"FunctionDefinition","parameters":{"id":5603,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5598,"mutability":"mutable","name":"token","nameLocation":"3309:5:11","nodeType":"VariableDeclaration","scope":5607,"src":"3292:22:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"},"typeName":{"id":5597,"nodeType":"UserDefinedTypeName","pathNode":{"id":5596,"name":"ISuperfluidToken","nameLocations":["3292:16:11"],"nodeType":"IdentifierPath","referencedDeclaration":8082,"src":"3292:16:11"},"referencedDeclaration":8082,"src":"3292:16:11","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5600,"mutability":"mutable","name":"indexId","nameLocation":"3331:7:11","nodeType":"VariableDeclaration","scope":5607,"src":"3324:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5599,"name":"uint32","nodeType":"ElementaryTypeName","src":"3324:6:11","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5602,"mutability":"mutable","name":"ctx","nameLocation":"3363:3:11","nodeType":"VariableDeclaration","scope":5607,"src":"3348:18:11","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":5601,"name":"bytes","nodeType":"ElementaryTypeName","src":"3348:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3282:85:11"},"returnParameters":{"id":5606,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5605,"mutability":"mutable","name":"newCtx","nameLocation":"3442:6:11","nodeType":"VariableDeclaration","scope":5607,"src":"3429:19:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5604,"name":"bytes","nodeType":"ElementaryTypeName","src":"3429:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3428:21:11"},"scope":5961,"src":"3262:188:11","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"anonymous":false,"documentation":{"id":5608,"nodeType":"StructuredDocumentation","src":"3455:246:11","text":" @dev Index created event\n @param token Super token address\n @param publisher Index creator and publisher\n @param indexId The specified indexId of the newly created index\n @param userData The user provided data"},"eventSelector":"01ab8663165edfb7390d9e5f75d960a66dacf4f01fa9787e3a731c870d0da921","id":5619,"name":"IndexCreated","nameLocation":"3712:12:11","nodeType":"EventDefinition","parameters":{"id":5618,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5611,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"3759:5:11","nodeType":"VariableDeclaration","scope":5619,"src":"3734:30:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"},"typeName":{"id":5610,"nodeType":"UserDefinedTypeName","pathNode":{"id":5609,"name":"ISuperfluidToken","nameLocations":["3734:16:11"],"nodeType":"IdentifierPath","referencedDeclaration":8082,"src":"3734:16:11"},"referencedDeclaration":8082,"src":"3734:16:11","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5613,"indexed":true,"mutability":"mutable","name":"publisher","nameLocation":"3790:9:11","nodeType":"VariableDeclaration","scope":5619,"src":"3774:25:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5612,"name":"address","nodeType":"ElementaryTypeName","src":"3774:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5615,"indexed":true,"mutability":"mutable","name":"indexId","nameLocation":"3824:7:11","nodeType":"VariableDeclaration","scope":5619,"src":"3809:22:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5614,"name":"uint32","nodeType":"ElementaryTypeName","src":"3809:6:11","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5617,"indexed":false,"mutability":"mutable","name":"userData","nameLocation":"3847:8:11","nodeType":"VariableDeclaration","scope":5619,"src":"3841:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5616,"name":"bytes","nodeType":"ElementaryTypeName","src":"3841:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3724:132:11"},"src":"3706:151:11"},{"documentation":{"id":5620,"nodeType":"StructuredDocumentation","src":"3863:418:11","text":" @dev Query the data of a index\n @param token Super token address\n @param publisher The publisher of the index\n @param indexId Id of the index\n @return exist Does the index exist\n @return indexValue Value of the current index\n @return totalUnitsApproved Total units approved for the index\n @return totalUnitsPending Total units pending approval for the index"},"functionSelector":"23fc23f3","id":5638,"implemented":false,"kind":"function","modifiers":[],"name":"getIndex","nameLocation":"4295:8:11","nodeType":"FunctionDefinition","parameters":{"id":5628,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5623,"mutability":"mutable","name":"token","nameLocation":"4330:5:11","nodeType":"VariableDeclaration","scope":5638,"src":"4313:22:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"},"typeName":{"id":5622,"nodeType":"UserDefinedTypeName","pathNode":{"id":5621,"name":"ISuperfluidToken","nameLocations":["4313:16:11"],"nodeType":"IdentifierPath","referencedDeclaration":8082,"src":"4313:16:11"},"referencedDeclaration":8082,"src":"4313:16:11","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5625,"mutability":"mutable","name":"publisher","nameLocation":"4353:9:11","nodeType":"VariableDeclaration","scope":5638,"src":"4345:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5624,"name":"address","nodeType":"ElementaryTypeName","src":"4345:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5627,"mutability":"mutable","name":"indexId","nameLocation":"4379:7:11","nodeType":"VariableDeclaration","scope":5638,"src":"4372:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5626,"name":"uint32","nodeType":"ElementaryTypeName","src":"4372:6:11","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"4303:84:11"},"returnParameters":{"id":5637,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5630,"mutability":"mutable","name":"exist","nameLocation":"4488:5:11","nodeType":"VariableDeclaration","scope":5638,"src":"4483:10:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5629,"name":"bool","nodeType":"ElementaryTypeName","src":"4483:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5632,"mutability":"mutable","name":"indexValue","nameLocation":"4519:10:11","nodeType":"VariableDeclaration","scope":5638,"src":"4511:18:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5631,"name":"uint128","nodeType":"ElementaryTypeName","src":"4511:7:11","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":5634,"mutability":"mutable","name":"totalUnitsApproved","nameLocation":"4555:18:11","nodeType":"VariableDeclaration","scope":5638,"src":"4547:26:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5633,"name":"uint128","nodeType":"ElementaryTypeName","src":"4547:7:11","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":5636,"mutability":"mutable","name":"totalUnitsPending","nameLocation":"4599:17:11","nodeType":"VariableDeclaration","scope":5638,"src":"4591:25:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5635,"name":"uint128","nodeType":"ElementaryTypeName","src":"4591:7:11","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"4465:152:11"},"scope":5961,"src":"4286:332:11","stateMutability":"view","virtual":true,"visibility":"external"},{"documentation":{"id":5639,"nodeType":"StructuredDocumentation","src":"4624:446:11","text":" @dev Calculate actual distribution amount\n @param token Super token address\n @param publisher The publisher of the index\n @param indexId Id of the index\n @param amount The amount of tokens desired to be distributed\n @return actualAmount The amount to be distributed after ensuring no rounding errors\n @return newIndexValue The index value given the desired amount of tokens to be distributed"},"functionSelector":"899baaec","id":5655,"implemented":false,"kind":"function","modifiers":[],"name":"calculateDistribution","nameLocation":"5084:21:11","nodeType":"FunctionDefinition","parameters":{"id":5649,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5642,"mutability":"mutable","name":"token","nameLocation":"5131:5:11","nodeType":"VariableDeclaration","scope":5655,"src":"5114:22:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"},"typeName":{"id":5641,"nodeType":"UserDefinedTypeName","pathNode":{"id":5640,"name":"ISuperfluidToken","nameLocations":["5114:16:11"],"nodeType":"IdentifierPath","referencedDeclaration":8082,"src":"5114:16:11"},"referencedDeclaration":8082,"src":"5114:16:11","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5644,"mutability":"mutable","name":"publisher","nameLocation":"5153:9:11","nodeType":"VariableDeclaration","scope":5655,"src":"5145:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5643,"name":"address","nodeType":"ElementaryTypeName","src":"5145:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5646,"mutability":"mutable","name":"indexId","nameLocation":"5178:7:11","nodeType":"VariableDeclaration","scope":5655,"src":"5171:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5645,"name":"uint32","nodeType":"ElementaryTypeName","src":"5171:6:11","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5648,"mutability":"mutable","name":"amount","nameLocation":"5202:6:11","nodeType":"VariableDeclaration","scope":5655,"src":"5194:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5647,"name":"uint256","nodeType":"ElementaryTypeName","src":"5194:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5105:104:11"},"returnParameters":{"id":5654,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5651,"mutability":"mutable","name":"actualAmount","nameLocation":"5297:12:11","nodeType":"VariableDeclaration","scope":5655,"src":"5289:20:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5650,"name":"uint256","nodeType":"ElementaryTypeName","src":"5289:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5653,"mutability":"mutable","name":"newIndexValue","nameLocation":"5334:13:11","nodeType":"VariableDeclaration","scope":5655,"src":"5326:21:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5652,"name":"uint128","nodeType":"ElementaryTypeName","src":"5326:7:11","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"5272:76:11"},"scope":5961,"src":"5075:274:11","stateMutability":"view","virtual":true,"visibility":"external"},{"documentation":{"id":5656,"nodeType":"StructuredDocumentation","src":"5355:294:11","text":" @dev Update index value of an index\n @param token Super token address\n @param indexId Id of the index\n @param indexValue Value of the index\n @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n @custom:callbacks \n None"},"functionSelector":"7fbc7639","id":5670,"implemented":false,"kind":"function","modifiers":[],"name":"updateIndex","nameLocation":"5663:11:11","nodeType":"FunctionDefinition","parameters":{"id":5666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5659,"mutability":"mutable","name":"token","nameLocation":"5701:5:11","nodeType":"VariableDeclaration","scope":5670,"src":"5684:22:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"},"typeName":{"id":5658,"nodeType":"UserDefinedTypeName","pathNode":{"id":5657,"name":"ISuperfluidToken","nameLocations":["5684:16:11"],"nodeType":"IdentifierPath","referencedDeclaration":8082,"src":"5684:16:11"},"referencedDeclaration":8082,"src":"5684:16:11","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5661,"mutability":"mutable","name":"indexId","nameLocation":"5723:7:11","nodeType":"VariableDeclaration","scope":5670,"src":"5716:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5660,"name":"uint32","nodeType":"ElementaryTypeName","src":"5716:6:11","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5663,"mutability":"mutable","name":"indexValue","nameLocation":"5748:10:11","nodeType":"VariableDeclaration","scope":5670,"src":"5740:18:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5662,"name":"uint128","nodeType":"ElementaryTypeName","src":"5740:7:11","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":5665,"mutability":"mutable","name":"ctx","nameLocation":"5783:3:11","nodeType":"VariableDeclaration","scope":5670,"src":"5768:18:11","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":5664,"name":"bytes","nodeType":"ElementaryTypeName","src":"5768:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5674:113:11"},"returnParameters":{"id":5669,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5668,"mutability":"mutable","name":"newCtx","nameLocation":"5862:6:11","nodeType":"VariableDeclaration","scope":5670,"src":"5849:19:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5667,"name":"bytes","nodeType":"ElementaryTypeName","src":"5849:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5848:21:11"},"scope":5961,"src":"5654:216:11","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"anonymous":false,"documentation":{"id":5671,"nodeType":"StructuredDocumentation","src":"5875:539:11","text":" @dev Index updated event\n @param token Super token address\n @param publisher Index updater and publisher\n @param indexId The specified indexId of the updated index\n @param oldIndexValue The previous index value\n @param newIndexValue The updated index value\n @param totalUnitsPending The total units pending when the indexValue was updated\n @param totalUnitsApproved The total units approved when the indexValue was updated\n @param userData The user provided data"},"eventSelector":"81e37f3d9f16cbf29a62d6a1c21d79b23ef29b54124ec44af43a50fffb9304f3","id":5690,"name":"IndexUpdated","nameLocation":"6425:12:11","nodeType":"EventDefinition","parameters":{"id":5689,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5674,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"6472:5:11","nodeType":"VariableDeclaration","scope":5690,"src":"6447:30:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"},"typeName":{"id":5673,"nodeType":"UserDefinedTypeName","pathNode":{"id":5672,"name":"ISuperfluidToken","nameLocations":["6447:16:11"],"nodeType":"IdentifierPath","referencedDeclaration":8082,"src":"6447:16:11"},"referencedDeclaration":8082,"src":"6447:16:11","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5676,"indexed":true,"mutability":"mutable","name":"publisher","nameLocation":"6503:9:11","nodeType":"VariableDeclaration","scope":5690,"src":"6487:25:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5675,"name":"address","nodeType":"ElementaryTypeName","src":"6487:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5678,"indexed":true,"mutability":"mutable","name":"indexId","nameLocation":"6537:7:11","nodeType":"VariableDeclaration","scope":5690,"src":"6522:22:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5677,"name":"uint32","nodeType":"ElementaryTypeName","src":"6522:6:11","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5680,"indexed":false,"mutability":"mutable","name":"oldIndexValue","nameLocation":"6562:13:11","nodeType":"VariableDeclaration","scope":5690,"src":"6554:21:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5679,"name":"uint128","nodeType":"ElementaryTypeName","src":"6554:7:11","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":5682,"indexed":false,"mutability":"mutable","name":"newIndexValue","nameLocation":"6593:13:11","nodeType":"VariableDeclaration","scope":5690,"src":"6585:21:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5681,"name":"uint128","nodeType":"ElementaryTypeName","src":"6585:7:11","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":5684,"indexed":false,"mutability":"mutable","name":"totalUnitsPending","nameLocation":"6624:17:11","nodeType":"VariableDeclaration","scope":5690,"src":"6616:25:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5683,"name":"uint128","nodeType":"ElementaryTypeName","src":"6616:7:11","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":5686,"indexed":false,"mutability":"mutable","name":"totalUnitsApproved","nameLocation":"6659:18:11","nodeType":"VariableDeclaration","scope":5690,"src":"6651:26:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5685,"name":"uint128","nodeType":"ElementaryTypeName","src":"6651:7:11","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":5688,"indexed":false,"mutability":"mutable","name":"userData","nameLocation":"6693:8:11","nodeType":"VariableDeclaration","scope":5690,"src":"6687:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5687,"name":"bytes","nodeType":"ElementaryTypeName","src":"6687:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6437:265:11"},"src":"6419:284:11"},{"documentation":{"id":5691,"nodeType":"StructuredDocumentation","src":"6709:653:11","text":" @dev Distribute tokens through the index\n @param token Super token address\n @param indexId Id of the index\n @param amount The amount of tokens desired to be distributed\n @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n @custom:note \n - This is a convenient version of updateIndex. It adds to the index\n a delta that equals to `amount / totalUnits`\n - The actual amount distributed could be obtained via\n `calculateDistribution`. This is due to precision error with index\n value and units data range\n @custom:callbacks \n None"},"functionSelector":"b96731c2","id":5705,"implemented":false,"kind":"function","modifiers":[],"name":"distribute","nameLocation":"7376:10:11","nodeType":"FunctionDefinition","parameters":{"id":5701,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5694,"mutability":"mutable","name":"token","nameLocation":"7413:5:11","nodeType":"VariableDeclaration","scope":5705,"src":"7396:22:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"},"typeName":{"id":5693,"nodeType":"UserDefinedTypeName","pathNode":{"id":5692,"name":"ISuperfluidToken","nameLocations":["7396:16:11"],"nodeType":"IdentifierPath","referencedDeclaration":8082,"src":"7396:16:11"},"referencedDeclaration":8082,"src":"7396:16:11","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5696,"mutability":"mutable","name":"indexId","nameLocation":"7435:7:11","nodeType":"VariableDeclaration","scope":5705,"src":"7428:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5695,"name":"uint32","nodeType":"ElementaryTypeName","src":"7428:6:11","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5698,"mutability":"mutable","name":"amount","nameLocation":"7460:6:11","nodeType":"VariableDeclaration","scope":5705,"src":"7452:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5697,"name":"uint256","nodeType":"ElementaryTypeName","src":"7452:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5700,"mutability":"mutable","name":"ctx","nameLocation":"7491:3:11","nodeType":"VariableDeclaration","scope":5705,"src":"7476:18:11","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":5699,"name":"bytes","nodeType":"ElementaryTypeName","src":"7476:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7386:109:11"},"returnParameters":{"id":5704,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5703,"mutability":"mutable","name":"newCtx","nameLocation":"7570:6:11","nodeType":"VariableDeclaration","scope":5705,"src":"7557:19:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5702,"name":"bytes","nodeType":"ElementaryTypeName","src":"7557:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7556:21:11"},"scope":5961,"src":"7367:211:11","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"documentation":{"id":5706,"nodeType":"StructuredDocumentation","src":"7777:576:11","text":" @dev Approve the subscription of an index\n @param token Super token address\n @param publisher The publisher of the index\n @param indexId Id of the index\n @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n @custom:callbacks \n - if subscription exist\n - AgreementCreated callback to the publisher:\n - agreementId is for the subscription\n - if subscription does not exist\n - AgreementUpdated callback to the publisher:\n - agreementId is for the subscription"},"functionSelector":"acf4a6c2","id":5720,"implemented":false,"kind":"function","modifiers":[],"name":"approveSubscription","nameLocation":"8367:19:11","nodeType":"FunctionDefinition","parameters":{"id":5716,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5709,"mutability":"mutable","name":"token","nameLocation":"8413:5:11","nodeType":"VariableDeclaration","scope":5720,"src":"8396:22:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"},"typeName":{"id":5708,"nodeType":"UserDefinedTypeName","pathNode":{"id":5707,"name":"ISuperfluidToken","nameLocations":["8396:16:11"],"nodeType":"IdentifierPath","referencedDeclaration":8082,"src":"8396:16:11"},"referencedDeclaration":8082,"src":"8396:16:11","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5711,"mutability":"mutable","name":"publisher","nameLocation":"8436:9:11","nodeType":"VariableDeclaration","scope":5720,"src":"8428:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5710,"name":"address","nodeType":"ElementaryTypeName","src":"8428:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5713,"mutability":"mutable","name":"indexId","nameLocation":"8462:7:11","nodeType":"VariableDeclaration","scope":5720,"src":"8455:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5712,"name":"uint32","nodeType":"ElementaryTypeName","src":"8455:6:11","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5715,"mutability":"mutable","name":"ctx","nameLocation":"8494:3:11","nodeType":"VariableDeclaration","scope":5720,"src":"8479:18:11","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":5714,"name":"bytes","nodeType":"ElementaryTypeName","src":"8479:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8386:112:11"},"returnParameters":{"id":5719,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5718,"mutability":"mutable","name":"newCtx","nameLocation":"8573:6:11","nodeType":"VariableDeclaration","scope":5720,"src":"8560:19:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5717,"name":"bytes","nodeType":"ElementaryTypeName","src":"8560:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8559:21:11"},"scope":5961,"src":"8358:223:11","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"anonymous":false,"documentation":{"id":5721,"nodeType":"StructuredDocumentation","src":"8586:272:11","text":" @dev Index subscribed event\n @param token Super token address\n @param publisher Index publisher\n @param indexId The specified indexId\n @param subscriber The approved subscriber\n @param userData The user provided data"},"eventSelector":"492d2641617cfaf24ac7328f85bc5bdf5113537d78dc7671afa4f49a73f053c2","id":5734,"name":"IndexSubscribed","nameLocation":"8869:15:11","nodeType":"EventDefinition","parameters":{"id":5733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5724,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"8919:5:11","nodeType":"VariableDeclaration","scope":5734,"src":"8894:30:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"},"typeName":{"id":5723,"nodeType":"UserDefinedTypeName","pathNode":{"id":5722,"name":"ISuperfluidToken","nameLocations":["8894:16:11"],"nodeType":"IdentifierPath","referencedDeclaration":8082,"src":"8894:16:11"},"referencedDeclaration":8082,"src":"8894:16:11","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5726,"indexed":true,"mutability":"mutable","name":"publisher","nameLocation":"8950:9:11","nodeType":"VariableDeclaration","scope":5734,"src":"8934:25:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5725,"name":"address","nodeType":"ElementaryTypeName","src":"8934:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5728,"indexed":true,"mutability":"mutable","name":"indexId","nameLocation":"8984:7:11","nodeType":"VariableDeclaration","scope":5734,"src":"8969:22:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5727,"name":"uint32","nodeType":"ElementaryTypeName","src":"8969:6:11","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5730,"indexed":false,"mutability":"mutable","name":"subscriber","nameLocation":"9009:10:11","nodeType":"VariableDeclaration","scope":5734,"src":"9001:18:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5729,"name":"address","nodeType":"ElementaryTypeName","src":"9001:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5732,"indexed":false,"mutability":"mutable","name":"userData","nameLocation":"9035:8:11","nodeType":"VariableDeclaration","scope":5734,"src":"9029:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5731,"name":"bytes","nodeType":"ElementaryTypeName","src":"9029:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8884:160:11"},"src":"8863:182:11"},{"anonymous":false,"documentation":{"id":5735,"nodeType":"StructuredDocumentation","src":"9051:277:11","text":" @dev Subscription approved event\n @param token Super token address\n @param subscriber The approved subscriber\n @param publisher Index publisher\n @param indexId The specified indexId\n @param userData The user provided data"},"eventSelector":"c0b8396b655615cdb85fe462a9a1792480816f909cd46d9517a940b386dfbf6b","id":5748,"name":"SubscriptionApproved","nameLocation":"9339:20:11","nodeType":"EventDefinition","parameters":{"id":5747,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5738,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"9394:5:11","nodeType":"VariableDeclaration","scope":5748,"src":"9369:30:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"},"typeName":{"id":5737,"nodeType":"UserDefinedTypeName","pathNode":{"id":5736,"name":"ISuperfluidToken","nameLocations":["9369:16:11"],"nodeType":"IdentifierPath","referencedDeclaration":8082,"src":"9369:16:11"},"referencedDeclaration":8082,"src":"9369:16:11","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5740,"indexed":true,"mutability":"mutable","name":"subscriber","nameLocation":"9425:10:11","nodeType":"VariableDeclaration","scope":5748,"src":"9409:26:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5739,"name":"address","nodeType":"ElementaryTypeName","src":"9409:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5742,"indexed":false,"mutability":"mutable","name":"publisher","nameLocation":"9453:9:11","nodeType":"VariableDeclaration","scope":5748,"src":"9445:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5741,"name":"address","nodeType":"ElementaryTypeName","src":"9445:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5744,"indexed":false,"mutability":"mutable","name":"indexId","nameLocation":"9479:7:11","nodeType":"VariableDeclaration","scope":5748,"src":"9472:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5743,"name":"uint32","nodeType":"ElementaryTypeName","src":"9472:6:11","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5746,"indexed":false,"mutability":"mutable","name":"userData","nameLocation":"9502:8:11","nodeType":"VariableDeclaration","scope":5748,"src":"9496:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5745,"name":"bytes","nodeType":"ElementaryTypeName","src":"9496:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9359:152:11"},"src":"9333:179:11"},{"documentation":{"id":5749,"nodeType":"StructuredDocumentation","src":"9518:465:11","text":" @notice Revoke the subscription of an index\n @dev \"Unapproves\" the subscription and moves approved units to pending\n @param token Super token address\n @param publisher The publisher of the index\n @param indexId Id of the index\n @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n @custom:callbacks \n - AgreementUpdated callback to the publisher:\n - agreementId is for the subscription"},"functionSelector":"6041ae96","id":5763,"implemented":false,"kind":"function","modifiers":[],"name":"revokeSubscription","nameLocation":"9997:18:11","nodeType":"FunctionDefinition","parameters":{"id":5759,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5752,"mutability":"mutable","name":"token","nameLocation":"10042:5:11","nodeType":"VariableDeclaration","scope":5763,"src":"10025:22:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"},"typeName":{"id":5751,"nodeType":"UserDefinedTypeName","pathNode":{"id":5750,"name":"ISuperfluidToken","nameLocations":["10025:16:11"],"nodeType":"IdentifierPath","referencedDeclaration":8082,"src":"10025:16:11"},"referencedDeclaration":8082,"src":"10025:16:11","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5754,"mutability":"mutable","name":"publisher","nameLocation":"10065:9:11","nodeType":"VariableDeclaration","scope":5763,"src":"10057:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5753,"name":"address","nodeType":"ElementaryTypeName","src":"10057:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5756,"mutability":"mutable","name":"indexId","nameLocation":"10091:7:11","nodeType":"VariableDeclaration","scope":5763,"src":"10084:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5755,"name":"uint32","nodeType":"ElementaryTypeName","src":"10084:6:11","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5758,"mutability":"mutable","name":"ctx","nameLocation":"10123:3:11","nodeType":"VariableDeclaration","scope":5763,"src":"10108:18:11","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":5757,"name":"bytes","nodeType":"ElementaryTypeName","src":"10108:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"10015:112:11"},"returnParameters":{"id":5762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5761,"mutability":"mutable","name":"newCtx","nameLocation":"10193:6:11","nodeType":"VariableDeclaration","scope":5763,"src":"10180:19:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5760,"name":"bytes","nodeType":"ElementaryTypeName","src":"10180:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"10179:21:11"},"scope":5961,"src":"9988:213:11","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"anonymous":false,"documentation":{"id":5764,"nodeType":"StructuredDocumentation","src":"10206:278:11","text":" @dev Index unsubscribed event\n @param token Super token address\n @param publisher Index publisher\n @param indexId The specified indexId\n @param subscriber The unsubscribed subscriber\n @param userData The user provided data"},"eventSelector":"e1f8e9cd8061e5b251769965bda6ca9ef1674bc6541fb9131039fa53f024d142","id":5777,"name":"IndexUnsubscribed","nameLocation":"10495:17:11","nodeType":"EventDefinition","parameters":{"id":5776,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5767,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"10547:5:11","nodeType":"VariableDeclaration","scope":5777,"src":"10522:30:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"},"typeName":{"id":5766,"nodeType":"UserDefinedTypeName","pathNode":{"id":5765,"name":"ISuperfluidToken","nameLocations":["10522:16:11"],"nodeType":"IdentifierPath","referencedDeclaration":8082,"src":"10522:16:11"},"referencedDeclaration":8082,"src":"10522:16:11","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5769,"indexed":true,"mutability":"mutable","name":"publisher","nameLocation":"10578:9:11","nodeType":"VariableDeclaration","scope":5777,"src":"10562:25:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5768,"name":"address","nodeType":"ElementaryTypeName","src":"10562:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5771,"indexed":true,"mutability":"mutable","name":"indexId","nameLocation":"10612:7:11","nodeType":"VariableDeclaration","scope":5777,"src":"10597:22:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5770,"name":"uint32","nodeType":"ElementaryTypeName","src":"10597:6:11","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5773,"indexed":false,"mutability":"mutable","name":"subscriber","nameLocation":"10637:10:11","nodeType":"VariableDeclaration","scope":5777,"src":"10629:18:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5772,"name":"address","nodeType":"ElementaryTypeName","src":"10629:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5775,"indexed":false,"mutability":"mutable","name":"userData","nameLocation":"10663:8:11","nodeType":"VariableDeclaration","scope":5777,"src":"10657:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5774,"name":"bytes","nodeType":"ElementaryTypeName","src":"10657:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"10512:160:11"},"src":"10489:184:11"},{"anonymous":false,"documentation":{"id":5778,"nodeType":"StructuredDocumentation","src":"10683:277:11","text":" @dev Subscription approved event\n @param token Super token address\n @param subscriber The approved subscriber\n @param publisher Index publisher\n @param indexId The specified indexId\n @param userData The user provided data"},"eventSelector":"9e02127550b99adc8cc6ee332a36f31338facdbc396cebefce9a047247cd0455","id":5791,"name":"SubscriptionRevoked","nameLocation":"10971:19:11","nodeType":"EventDefinition","parameters":{"id":5790,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5781,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"11025:5:11","nodeType":"VariableDeclaration","scope":5791,"src":"11000:30:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"},"typeName":{"id":5780,"nodeType":"UserDefinedTypeName","pathNode":{"id":5779,"name":"ISuperfluidToken","nameLocations":["11000:16:11"],"nodeType":"IdentifierPath","referencedDeclaration":8082,"src":"11000:16:11"},"referencedDeclaration":8082,"src":"11000:16:11","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5783,"indexed":true,"mutability":"mutable","name":"subscriber","nameLocation":"11056:10:11","nodeType":"VariableDeclaration","scope":5791,"src":"11040:26:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5782,"name":"address","nodeType":"ElementaryTypeName","src":"11040:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5785,"indexed":false,"mutability":"mutable","name":"publisher","nameLocation":"11084:9:11","nodeType":"VariableDeclaration","scope":5791,"src":"11076:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5784,"name":"address","nodeType":"ElementaryTypeName","src":"11076:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5787,"indexed":false,"mutability":"mutable","name":"indexId","nameLocation":"11110:7:11","nodeType":"VariableDeclaration","scope":5791,"src":"11103:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5786,"name":"uint32","nodeType":"ElementaryTypeName","src":"11103:6:11","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5789,"indexed":false,"mutability":"mutable","name":"userData","nameLocation":"11133:8:11","nodeType":"VariableDeclaration","scope":5791,"src":"11127:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5788,"name":"bytes","nodeType":"ElementaryTypeName","src":"11127:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"10990:152:11"},"src":"10965:178:11"},{"documentation":{"id":5792,"nodeType":"StructuredDocumentation","src":"11149:643:11","text":" @dev Update the nuber of units of a subscription\n @param token Super token address\n @param indexId Id of the index\n @param subscriber The subscriber of the index\n @param units Number of units of the subscription\n @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n @custom:callbacks \n - if subscription exist\n - AgreementCreated callback to the subscriber:\n - agreementId is for the subscription\n - if subscription does not exist\n - AgreementUpdated callback to the subscriber:\n - agreementId is for the subscription"},"functionSelector":"232d2b58","id":5808,"implemented":false,"kind":"function","modifiers":[],"name":"updateSubscription","nameLocation":"11806:18:11","nodeType":"FunctionDefinition","parameters":{"id":5804,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5795,"mutability":"mutable","name":"token","nameLocation":"11851:5:11","nodeType":"VariableDeclaration","scope":5808,"src":"11834:22:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"},"typeName":{"id":5794,"nodeType":"UserDefinedTypeName","pathNode":{"id":5793,"name":"ISuperfluidToken","nameLocations":["11834:16:11"],"nodeType":"IdentifierPath","referencedDeclaration":8082,"src":"11834:16:11"},"referencedDeclaration":8082,"src":"11834:16:11","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5797,"mutability":"mutable","name":"indexId","nameLocation":"11873:7:11","nodeType":"VariableDeclaration","scope":5808,"src":"11866:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5796,"name":"uint32","nodeType":"ElementaryTypeName","src":"11866:6:11","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5799,"mutability":"mutable","name":"subscriber","nameLocation":"11898:10:11","nodeType":"VariableDeclaration","scope":5808,"src":"11890:18:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5798,"name":"address","nodeType":"ElementaryTypeName","src":"11890:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5801,"mutability":"mutable","name":"units","nameLocation":"11926:5:11","nodeType":"VariableDeclaration","scope":5808,"src":"11918:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5800,"name":"uint128","nodeType":"ElementaryTypeName","src":"11918:7:11","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":5803,"mutability":"mutable","name":"ctx","nameLocation":"11956:3:11","nodeType":"VariableDeclaration","scope":5808,"src":"11941:18:11","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":5802,"name":"bytes","nodeType":"ElementaryTypeName","src":"11941:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"11824:136:11"},"returnParameters":{"id":5807,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5806,"mutability":"mutable","name":"newCtx","nameLocation":"12035:6:11","nodeType":"VariableDeclaration","scope":5808,"src":"12022:19:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5805,"name":"bytes","nodeType":"ElementaryTypeName","src":"12022:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"12021:21:11"},"scope":5961,"src":"11797:246:11","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"anonymous":false,"documentation":{"id":5809,"nodeType":"StructuredDocumentation","src":"12049:322:11","text":" @dev Index units updated event\n @param token Super token address\n @param publisher Index publisher\n @param indexId The specified indexId\n @param subscriber The subscriber units updated\n @param units The new units amount\n @param userData The user provided data"},"eventSelector":"0115987243fd19d615b5ea62a80372a06a2b37fec378b148ee7a507c5c4c0a39","id":5824,"name":"IndexUnitsUpdated","nameLocation":"12382:17:11","nodeType":"EventDefinition","parameters":{"id":5823,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5812,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"12434:5:11","nodeType":"VariableDeclaration","scope":5824,"src":"12409:30:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"},"typeName":{"id":5811,"nodeType":"UserDefinedTypeName","pathNode":{"id":5810,"name":"ISuperfluidToken","nameLocations":["12409:16:11"],"nodeType":"IdentifierPath","referencedDeclaration":8082,"src":"12409:16:11"},"referencedDeclaration":8082,"src":"12409:16:11","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5814,"indexed":true,"mutability":"mutable","name":"publisher","nameLocation":"12465:9:11","nodeType":"VariableDeclaration","scope":5824,"src":"12449:25:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5813,"name":"address","nodeType":"ElementaryTypeName","src":"12449:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5816,"indexed":true,"mutability":"mutable","name":"indexId","nameLocation":"12499:7:11","nodeType":"VariableDeclaration","scope":5824,"src":"12484:22:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5815,"name":"uint32","nodeType":"ElementaryTypeName","src":"12484:6:11","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5818,"indexed":false,"mutability":"mutable","name":"subscriber","nameLocation":"12524:10:11","nodeType":"VariableDeclaration","scope":5824,"src":"12516:18:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5817,"name":"address","nodeType":"ElementaryTypeName","src":"12516:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5820,"indexed":false,"mutability":"mutable","name":"units","nameLocation":"12552:5:11","nodeType":"VariableDeclaration","scope":5824,"src":"12544:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5819,"name":"uint128","nodeType":"ElementaryTypeName","src":"12544:7:11","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":5822,"indexed":false,"mutability":"mutable","name":"userData","nameLocation":"12573:8:11","nodeType":"VariableDeclaration","scope":5824,"src":"12567:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5821,"name":"bytes","nodeType":"ElementaryTypeName","src":"12567:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"12399:183:11"},"src":"12376:207:11"},{"anonymous":false,"documentation":{"id":5825,"nodeType":"StructuredDocumentation","src":"12593:329:11","text":" @dev Subscription units updated event\n @param token Super token address\n @param subscriber The subscriber units updated\n @param indexId The specified indexId\n @param publisher Index publisher\n @param units The new units amount\n @param userData The user provided data"},"eventSelector":"e0707ac7efb8b59c22189af8d004ed17dc9e4379e71b9066119b62c182524977","id":5840,"name":"SubscriptionUnitsUpdated","nameLocation":"12933:24:11","nodeType":"EventDefinition","parameters":{"id":5839,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5828,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"12992:5:11","nodeType":"VariableDeclaration","scope":5840,"src":"12967:30:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"},"typeName":{"id":5827,"nodeType":"UserDefinedTypeName","pathNode":{"id":5826,"name":"ISuperfluidToken","nameLocations":["12967:16:11"],"nodeType":"IdentifierPath","referencedDeclaration":8082,"src":"12967:16:11"},"referencedDeclaration":8082,"src":"12967:16:11","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5830,"indexed":true,"mutability":"mutable","name":"subscriber","nameLocation":"13023:10:11","nodeType":"VariableDeclaration","scope":5840,"src":"13007:26:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5829,"name":"address","nodeType":"ElementaryTypeName","src":"13007:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5832,"indexed":false,"mutability":"mutable","name":"publisher","nameLocation":"13051:9:11","nodeType":"VariableDeclaration","scope":5840,"src":"13043:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5831,"name":"address","nodeType":"ElementaryTypeName","src":"13043:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5834,"indexed":false,"mutability":"mutable","name":"indexId","nameLocation":"13077:7:11","nodeType":"VariableDeclaration","scope":5840,"src":"13070:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5833,"name":"uint32","nodeType":"ElementaryTypeName","src":"13070:6:11","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5836,"indexed":false,"mutability":"mutable","name":"units","nameLocation":"13102:5:11","nodeType":"VariableDeclaration","scope":5840,"src":"13094:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5835,"name":"uint128","nodeType":"ElementaryTypeName","src":"13094:7:11","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":5838,"indexed":false,"mutability":"mutable","name":"userData","nameLocation":"13123:8:11","nodeType":"VariableDeclaration","scope":5840,"src":"13117:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5837,"name":"bytes","nodeType":"ElementaryTypeName","src":"13117:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"12957:175:11"},"src":"12927:206:11"},{"documentation":{"id":5841,"nodeType":"StructuredDocumentation","src":"13139:488:11","text":" @dev Get data of a subscription\n @param token Super token address\n @param publisher The publisher of the index\n @param indexId Id of the index\n @param subscriber The subscriber of the index\n @return exist Does the subscription exist?\n @return approved Is the subscription approved?\n @return units Units of the suscription\n @return pendingDistribution Pending amount of tokens to be distributed for unapproved subscription"},"functionSelector":"5b534051","id":5861,"implemented":false,"kind":"function","modifiers":[],"name":"getSubscription","nameLocation":"13641:15:11","nodeType":"FunctionDefinition","parameters":{"id":5851,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5844,"mutability":"mutable","name":"token","nameLocation":"13683:5:11","nodeType":"VariableDeclaration","scope":5861,"src":"13666:22:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"},"typeName":{"id":5843,"nodeType":"UserDefinedTypeName","pathNode":{"id":5842,"name":"ISuperfluidToken","nameLocations":["13666:16:11"],"nodeType":"IdentifierPath","referencedDeclaration":8082,"src":"13666:16:11"},"referencedDeclaration":8082,"src":"13666:16:11","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5846,"mutability":"mutable","name":"publisher","nameLocation":"13706:9:11","nodeType":"VariableDeclaration","scope":5861,"src":"13698:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5845,"name":"address","nodeType":"ElementaryTypeName","src":"13698:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5848,"mutability":"mutable","name":"indexId","nameLocation":"13732:7:11","nodeType":"VariableDeclaration","scope":5861,"src":"13725:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5847,"name":"uint32","nodeType":"ElementaryTypeName","src":"13725:6:11","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5850,"mutability":"mutable","name":"subscriber","nameLocation":"13757:10:11","nodeType":"VariableDeclaration","scope":5861,"src":"13749:18:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5849,"name":"address","nodeType":"ElementaryTypeName","src":"13749:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"13656:112:11"},"returnParameters":{"id":5860,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5853,"mutability":"mutable","name":"exist","nameLocation":"13869:5:11","nodeType":"VariableDeclaration","scope":5861,"src":"13864:10:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5852,"name":"bool","nodeType":"ElementaryTypeName","src":"13864:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5855,"mutability":"mutable","name":"approved","nameLocation":"13897:8:11","nodeType":"VariableDeclaration","scope":5861,"src":"13892:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5854,"name":"bool","nodeType":"ElementaryTypeName","src":"13892:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5857,"mutability":"mutable","name":"units","nameLocation":"13931:5:11","nodeType":"VariableDeclaration","scope":5861,"src":"13923:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5856,"name":"uint128","nodeType":"ElementaryTypeName","src":"13923:7:11","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":5859,"mutability":"mutable","name":"pendingDistribution","nameLocation":"13962:19:11","nodeType":"VariableDeclaration","scope":5861,"src":"13954:27:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5858,"name":"uint256","nodeType":"ElementaryTypeName","src":"13954:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13846:149:11"},"scope":5961,"src":"13632:364:11","stateMutability":"view","virtual":true,"visibility":"external"},{"documentation":{"id":5862,"nodeType":"StructuredDocumentation","src":"14002:554:11","text":" @notice Get data of a subscription by agreement ID\n @dev indexId (agreementId) is the keccak256 hash of encodePacked(\"publisher\", publisher, indexId)\n @param token Super token address\n @param agreementId The agreement ID\n @return publisher The publisher of the index\n @return indexId Id of the index\n @return approved Is the subscription approved?\n @return units Units of the suscription\n @return pendingDistribution Pending amount of tokens to be distributed for unapproved subscription"},"functionSelector":"cd7245c5","id":5880,"implemented":false,"kind":"function","modifiers":[],"name":"getSubscriptionByID","nameLocation":"14570:19:11","nodeType":"FunctionDefinition","parameters":{"id":5868,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5865,"mutability":"mutable","name":"token","nameLocation":"14616:5:11","nodeType":"VariableDeclaration","scope":5880,"src":"14599:22:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"},"typeName":{"id":5864,"nodeType":"UserDefinedTypeName","pathNode":{"id":5863,"name":"ISuperfluidToken","nameLocations":["14599:16:11"],"nodeType":"IdentifierPath","referencedDeclaration":8082,"src":"14599:16:11"},"referencedDeclaration":8082,"src":"14599:16:11","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5867,"mutability":"mutable","name":"agreementId","nameLocation":"14639:11:11","nodeType":"VariableDeclaration","scope":5880,"src":"14631:19:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5866,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14631:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"14589:62:11"},"returnParameters":{"id":5879,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5870,"mutability":"mutable","name":"publisher","nameLocation":"14755:9:11","nodeType":"VariableDeclaration","scope":5880,"src":"14747:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5869,"name":"address","nodeType":"ElementaryTypeName","src":"14747:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5872,"mutability":"mutable","name":"indexId","nameLocation":"14789:7:11","nodeType":"VariableDeclaration","scope":5880,"src":"14782:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5871,"name":"uint32","nodeType":"ElementaryTypeName","src":"14782:6:11","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5874,"mutability":"mutable","name":"approved","nameLocation":"14819:8:11","nodeType":"VariableDeclaration","scope":5880,"src":"14814:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5873,"name":"bool","nodeType":"ElementaryTypeName","src":"14814:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":5876,"mutability":"mutable","name":"units","nameLocation":"14853:5:11","nodeType":"VariableDeclaration","scope":5880,"src":"14845:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5875,"name":"uint128","nodeType":"ElementaryTypeName","src":"14845:7:11","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":5878,"mutability":"mutable","name":"pendingDistribution","nameLocation":"14884:19:11","nodeType":"VariableDeclaration","scope":5880,"src":"14876:27:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5877,"name":"uint256","nodeType":"ElementaryTypeName","src":"14876:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14729:188:11"},"scope":5961,"src":"14561:357:11","stateMutability":"view","virtual":true,"visibility":"external"},{"documentation":{"id":5881,"nodeType":"StructuredDocumentation","src":"14924:305:11","text":" @dev List subscriptions of an user\n @param token Super token address\n @param subscriber The subscriber's address\n @return publishers Publishers of the subcriptions\n @return indexIds Indexes of the subscriptions\n @return unitsList Units of the subscriptions"},"functionSelector":"b6dacdb8","id":5898,"implemented":false,"kind":"function","modifiers":[],"name":"listSubscriptions","nameLocation":"15243:17:11","nodeType":"FunctionDefinition","parameters":{"id":5887,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5884,"mutability":"mutable","name":"token","nameLocation":"15287:5:11","nodeType":"VariableDeclaration","scope":5898,"src":"15270:22:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"},"typeName":{"id":5883,"nodeType":"UserDefinedTypeName","pathNode":{"id":5882,"name":"ISuperfluidToken","nameLocations":["15270:16:11"],"nodeType":"IdentifierPath","referencedDeclaration":8082,"src":"15270:16:11"},"referencedDeclaration":8082,"src":"15270:16:11","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5886,"mutability":"mutable","name":"subscriber","nameLocation":"15310:10:11","nodeType":"VariableDeclaration","scope":5898,"src":"15302:18:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5885,"name":"address","nodeType":"ElementaryTypeName","src":"15302:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"15260:61:11"},"returnParameters":{"id":5897,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5890,"mutability":"mutable","name":"publishers","nameLocation":"15434:10:11","nodeType":"VariableDeclaration","scope":5898,"src":"15417:27:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":5888,"name":"address","nodeType":"ElementaryTypeName","src":"15417:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5889,"nodeType":"ArrayTypeName","src":"15417:9:11","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":5893,"mutability":"mutable","name":"indexIds","nameLocation":"15478:8:11","nodeType":"VariableDeclaration","scope":5898,"src":"15462:24:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_memory_ptr","typeString":"uint32[]"},"typeName":{"baseType":{"id":5891,"name":"uint32","nodeType":"ElementaryTypeName","src":"15462:6:11","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":5892,"nodeType":"ArrayTypeName","src":"15462:8:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint32_$dyn_storage_ptr","typeString":"uint32[]"}},"visibility":"internal"},{"constant":false,"id":5896,"mutability":"mutable","name":"unitsList","nameLocation":"15521:9:11","nodeType":"VariableDeclaration","scope":5898,"src":"15504:26:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint128_$dyn_memory_ptr","typeString":"uint128[]"},"typeName":{"baseType":{"id":5894,"name":"uint128","nodeType":"ElementaryTypeName","src":"15504:7:11","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":5895,"nodeType":"ArrayTypeName","src":"15504:9:11","typeDescriptions":{"typeIdentifier":"t_array$_t_uint128_$dyn_storage_ptr","typeString":"uint128[]"}},"visibility":"internal"}],"src":"15399:132:11"},"scope":5961,"src":"15234:298:11","stateMutability":"view","virtual":true,"visibility":"external"},{"documentation":{"id":5899,"nodeType":"StructuredDocumentation","src":"15538:633:11","text":" @dev Delete the subscription of an user\n @param token Super token address\n @param publisher The publisher of the index\n @param indexId Id of the index\n @param subscriber The subscriber's address\n @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n @custom:callbacks \n - if the subscriber called it\n - AgreementTerminated callback to the publsiher:\n - agreementId is for the subscription\n - if the publisher called it\n - AgreementTerminated callback to the subscriber:\n - agreementId is for the subscription"},"functionSelector":"2e5e74c6","id":5915,"implemented":false,"kind":"function","modifiers":[],"name":"deleteSubscription","nameLocation":"16185:18:11","nodeType":"FunctionDefinition","parameters":{"id":5911,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5902,"mutability":"mutable","name":"token","nameLocation":"16230:5:11","nodeType":"VariableDeclaration","scope":5915,"src":"16213:22:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"},"typeName":{"id":5901,"nodeType":"UserDefinedTypeName","pathNode":{"id":5900,"name":"ISuperfluidToken","nameLocations":["16213:16:11"],"nodeType":"IdentifierPath","referencedDeclaration":8082,"src":"16213:16:11"},"referencedDeclaration":8082,"src":"16213:16:11","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5904,"mutability":"mutable","name":"publisher","nameLocation":"16253:9:11","nodeType":"VariableDeclaration","scope":5915,"src":"16245:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5903,"name":"address","nodeType":"ElementaryTypeName","src":"16245:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5906,"mutability":"mutable","name":"indexId","nameLocation":"16279:7:11","nodeType":"VariableDeclaration","scope":5915,"src":"16272:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5905,"name":"uint32","nodeType":"ElementaryTypeName","src":"16272:6:11","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5908,"mutability":"mutable","name":"subscriber","nameLocation":"16304:10:11","nodeType":"VariableDeclaration","scope":5915,"src":"16296:18:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5907,"name":"address","nodeType":"ElementaryTypeName","src":"16296:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5910,"mutability":"mutable","name":"ctx","nameLocation":"16339:3:11","nodeType":"VariableDeclaration","scope":5915,"src":"16324:18:11","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":5909,"name":"bytes","nodeType":"ElementaryTypeName","src":"16324:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"16203:140:11"},"returnParameters":{"id":5914,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5913,"mutability":"mutable","name":"newCtx","nameLocation":"16418:6:11","nodeType":"VariableDeclaration","scope":5915,"src":"16405:19:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5912,"name":"bytes","nodeType":"ElementaryTypeName","src":"16405:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"16404:21:11"},"scope":5961,"src":"16176:250:11","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"documentation":{"id":5916,"nodeType":"StructuredDocumentation","src":"16432:495:11","text":" @dev Claim pending distributions\n @param token Super token address\n @param publisher The publisher of the index\n @param indexId Id of the index\n @param subscriber The subscriber's address\n @param ctx Context bytes (see ISuperfluid.sol for Context struct)\n @custom:note The subscription should not be approved yet\n @custom:callbacks \n - AgreementUpdated callback to the publisher:\n - agreementId is for the subscription"},"functionSelector":"acafa1b8","id":5932,"implemented":false,"kind":"function","modifiers":[],"name":"claim","nameLocation":"16941:5:11","nodeType":"FunctionDefinition","parameters":{"id":5928,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5919,"mutability":"mutable","name":"token","nameLocation":"16973:5:11","nodeType":"VariableDeclaration","scope":5932,"src":"16956:22:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"},"typeName":{"id":5918,"nodeType":"UserDefinedTypeName","pathNode":{"id":5917,"name":"ISuperfluidToken","nameLocations":["16956:16:11"],"nodeType":"IdentifierPath","referencedDeclaration":8082,"src":"16956:16:11"},"referencedDeclaration":8082,"src":"16956:16:11","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5921,"mutability":"mutable","name":"publisher","nameLocation":"16996:9:11","nodeType":"VariableDeclaration","scope":5932,"src":"16988:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5920,"name":"address","nodeType":"ElementaryTypeName","src":"16988:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5923,"mutability":"mutable","name":"indexId","nameLocation":"17022:7:11","nodeType":"VariableDeclaration","scope":5932,"src":"17015:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5922,"name":"uint32","nodeType":"ElementaryTypeName","src":"17015:6:11","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5925,"mutability":"mutable","name":"subscriber","nameLocation":"17047:10:11","nodeType":"VariableDeclaration","scope":5932,"src":"17039:18:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5924,"name":"address","nodeType":"ElementaryTypeName","src":"17039:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5927,"mutability":"mutable","name":"ctx","nameLocation":"17082:3:11","nodeType":"VariableDeclaration","scope":5932,"src":"17067:18:11","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":5926,"name":"bytes","nodeType":"ElementaryTypeName","src":"17067:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"16946:140:11"},"returnParameters":{"id":5931,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5930,"mutability":"mutable","name":"newCtx","nameLocation":"17149:6:11","nodeType":"VariableDeclaration","scope":5932,"src":"17136:19:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":5929,"name":"bytes","nodeType":"ElementaryTypeName","src":"17136:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"17135:21:11"},"scope":5961,"src":"16932:225:11","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"anonymous":false,"documentation":{"id":5933,"nodeType":"StructuredDocumentation","src":"17167:289:11","text":" @dev Index distribution claimed event\n @param token Super token address\n @param publisher Index publisher\n @param indexId The specified indexId\n @param subscriber The subscriber units updated\n @param amount The pending amount claimed"},"eventSelector":"467eccd248ef31c8bcef16d94856855799a8783aeef10f3759e43614059a6bb1","id":5946,"name":"IndexDistributionClaimed","nameLocation":"17467:24:11","nodeType":"EventDefinition","parameters":{"id":5945,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5936,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"17526:5:11","nodeType":"VariableDeclaration","scope":5946,"src":"17501:30:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"},"typeName":{"id":5935,"nodeType":"UserDefinedTypeName","pathNode":{"id":5934,"name":"ISuperfluidToken","nameLocations":["17501:16:11"],"nodeType":"IdentifierPath","referencedDeclaration":8082,"src":"17501:16:11"},"referencedDeclaration":8082,"src":"17501:16:11","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5938,"indexed":true,"mutability":"mutable","name":"publisher","nameLocation":"17557:9:11","nodeType":"VariableDeclaration","scope":5946,"src":"17541:25:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5937,"name":"address","nodeType":"ElementaryTypeName","src":"17541:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5940,"indexed":true,"mutability":"mutable","name":"indexId","nameLocation":"17591:7:11","nodeType":"VariableDeclaration","scope":5946,"src":"17576:22:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5939,"name":"uint32","nodeType":"ElementaryTypeName","src":"17576:6:11","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5942,"indexed":false,"mutability":"mutable","name":"subscriber","nameLocation":"17616:10:11","nodeType":"VariableDeclaration","scope":5946,"src":"17608:18:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5941,"name":"address","nodeType":"ElementaryTypeName","src":"17608:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5944,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"17644:6:11","nodeType":"VariableDeclaration","scope":5946,"src":"17636:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5943,"name":"uint256","nodeType":"ElementaryTypeName","src":"17636:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17491:160:11"},"src":"17461:191:11"},{"anonymous":false,"documentation":{"id":5947,"nodeType":"StructuredDocumentation","src":"17662:296:11","text":" @dev Subscription distribution claimed event\n @param token Super token address\n @param subscriber The subscriber units updated\n @param publisher Index publisher\n @param indexId The specified indexId\n @param amount The pending amount claimed"},"eventSelector":"48a3d91d4a07e4982b081260e24f922bd33bb965882772d6de19c922c3eabdea","id":5960,"name":"SubscriptionDistributionClaimed","nameLocation":"17969:31:11","nodeType":"EventDefinition","parameters":{"id":5959,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5950,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"18035:5:11","nodeType":"VariableDeclaration","scope":5960,"src":"18010:30:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"},"typeName":{"id":5949,"nodeType":"UserDefinedTypeName","pathNode":{"id":5948,"name":"ISuperfluidToken","nameLocations":["18010:16:11"],"nodeType":"IdentifierPath","referencedDeclaration":8082,"src":"18010:16:11"},"referencedDeclaration":8082,"src":"18010:16:11","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":5952,"indexed":true,"mutability":"mutable","name":"subscriber","nameLocation":"18066:10:11","nodeType":"VariableDeclaration","scope":5960,"src":"18050:26:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5951,"name":"address","nodeType":"ElementaryTypeName","src":"18050:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5954,"indexed":false,"mutability":"mutable","name":"publisher","nameLocation":"18094:9:11","nodeType":"VariableDeclaration","scope":5960,"src":"18086:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5953,"name":"address","nodeType":"ElementaryTypeName","src":"18086:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":5956,"indexed":false,"mutability":"mutable","name":"indexId","nameLocation":"18120:7:11","nodeType":"VariableDeclaration","scope":5960,"src":"18113:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5955,"name":"uint32","nodeType":"ElementaryTypeName","src":"18113:6:11","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":5958,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"18145:6:11","nodeType":"VariableDeclaration","scope":5960,"src":"18137:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5957,"name":"uint256","nodeType":"ElementaryTypeName","src":"18137:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18000:152:11"},"src":"17963:190:11"}],"scope":5962,"src":"1784:16372:11","usedErrors":[5566,5568,5570,5572,5574,5576,5578,5580,5582]}],"src":"35:18122:11"},"id":11},"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol":{"ast":{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol","exportedSymbols":{"BatchOperation":[6333],"ContextDefinitions":[6200],"FlowOperatorDefinitions":[6287],"SuperAppDefinitions":[6124],"SuperfluidGovernanceConfigs":[6434]},"id":6435,"license":"AGPLv3","nodeType":"SourceUnit","nodes":[{"id":5963,"literals":["solidity",">=","0.8",".4"],"nodeType":"PragmaDirective","src":"35:25:12"},{"abstract":false,"baseContracts":[],"canonicalName":"SuperAppDefinitions","contractDependencies":[],"contractKind":"library","documentation":{"id":5964,"nodeType":"StructuredDocumentation","src":"62:69:12","text":" @title Super app definitions library\n @author Superfluid"},"fullyImplemented":true,"id":6124,"linearizedBaseContracts":[6124],"name":"SuperAppDefinitions","nameLocation":"140:19:12","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":5967,"mutability":"constant","name":"APP_LEVEL_MASK","nameLocation":"615:14:12","nodeType":"VariableDeclaration","scope":6124,"src":"589:47:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5965,"name":"uint256","nodeType":"ElementaryTypeName","src":"589:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30784646","id":5966,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"632:4:12","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"0xFF"},"visibility":"internal"},{"constant":true,"id":5972,"mutability":"constant","name":"APP_LEVEL_FINAL","nameLocation":"760:15:12","nodeType":"VariableDeclaration","scope":6124,"src":"734:50:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5968,"name":"uint256","nodeType":"ElementaryTypeName","src":"734:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"id":5971,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":5969,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"778:1:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"30","id":5970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"783:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"778:6:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}},"visibility":"internal"},{"constant":true,"id":5977,"mutability":"constant","name":"APP_LEVEL_SECOND","nameLocation":"915:16:12","nodeType":"VariableDeclaration","scope":6124,"src":"889:51:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5973,"name":"uint256","nodeType":"ElementaryTypeName","src":"889:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"id":5976,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":5974,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"934:1:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"31","id":5975,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"939:1:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"934:6:12","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}},"visibility":"internal"},{"body":{"id":5991,"nodeType":"Block","src":"1026:58:12","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5986,"name":"configWord","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5979,"src":"1049:10:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":5987,"name":"APP_LEVEL_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5967,"src":"1062:14:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1049:27:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5985,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1043:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":5984,"name":"uint8","nodeType":"ElementaryTypeName","src":"1043:5:12","typeDescriptions":{}}},"id":5989,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1043:34:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":5983,"id":5990,"nodeType":"Return","src":"1036:41:12"}]},"id":5992,"implemented":true,"kind":"function","modifiers":[],"name":"getAppCallbackLevel","nameLocation":"956:19:12","nodeType":"FunctionDefinition","parameters":{"id":5980,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5979,"mutability":"mutable","name":"configWord","nameLocation":"984:10:12","nodeType":"VariableDeclaration","scope":5992,"src":"976:18:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5978,"name":"uint256","nodeType":"ElementaryTypeName","src":"976:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"975:20:12"},"returnParameters":{"id":5983,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5982,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5992,"src":"1019:5:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":5981,"name":"uint8","nodeType":"ElementaryTypeName","src":"1019:5:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"1018:7:12"},"scope":6124,"src":"947:137:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"constant":true,"id":5997,"mutability":"constant","name":"APP_JAIL_BIT","nameLocation":"1116:12:12","nodeType":"VariableDeclaration","scope":6124,"src":"1090:48:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5993,"name":"uint256","nodeType":"ElementaryTypeName","src":"1090:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_rational_32768_by_1","typeString":"int_const 32768"},"id":5996,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":5994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1131:1:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3135","id":5995,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1136:2:12","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"15"},"src":"1131:7:12","typeDescriptions":{"typeIdentifier":"t_rational_32768_by_1","typeString":"int_const 32768"}},"visibility":"internal"},{"body":{"id":6012,"nodeType":"Block","src":"1214:75:12","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6007,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6004,"name":"configWord","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5999,"src":"1232:10:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"expression":{"id":6005,"name":"SuperAppDefinitions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6124,"src":"1245:19:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SuperAppDefinitions_$6124_$","typeString":"type(library SuperAppDefinitions)"}},"id":6006,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1265:12:12","memberName":"APP_JAIL_BIT","nodeType":"MemberAccess","referencedDeclaration":5997,"src":"1245:32:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1232:45:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6008,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1231:47:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":6009,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1281:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1231:51:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6003,"id":6011,"nodeType":"Return","src":"1224:58:12"}]},"id":6013,"implemented":true,"kind":"function","modifiers":[],"name":"isAppJailed","nameLocation":"1153:11:12","nodeType":"FunctionDefinition","parameters":{"id":6000,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5999,"mutability":"mutable","name":"configWord","nameLocation":"1173:10:12","nodeType":"VariableDeclaration","scope":6013,"src":"1165:18:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5998,"name":"uint256","nodeType":"ElementaryTypeName","src":"1165:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1164:20:12"},"returnParameters":{"id":6003,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6002,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6013,"src":"1208:4:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6001,"name":"bool","nodeType":"ElementaryTypeName","src":"1208:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1207:6:12"},"scope":6124,"src":"1144:145:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"constant":true,"id":6018,"mutability":"constant","name":"AGREEMENT_CALLBACK_NOOP_BITMASKS","nameLocation":"1522:32:12","nodeType":"VariableDeclaration","scope":6124,"src":"1496:71:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6014,"name":"uint256","nodeType":"ElementaryTypeName","src":"1496:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_rational_1095216660480_by_1","typeString":"int_const 1095216660480"},"id":6017,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"30784646","id":6015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1557:4:12","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"0xFF"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3332","id":6016,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1565:2:12","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"1557:10:12","typeDescriptions":{"typeIdentifier":"t_rational_1095216660480_by_1","typeString":"int_const 1095216660480"}},"visibility":"internal"},{"constant":true,"id":6026,"mutability":"constant","name":"BEFORE_AGREEMENT_CREATED_NOOP","nameLocation":"1599:29:12","nodeType":"VariableDeclaration","scope":6124,"src":"1573:71:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6019,"name":"uint256","nodeType":"ElementaryTypeName","src":"1573:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"},"id":6025,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":6020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1631:1:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"id":6023,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3332","id":6021,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1637:2:12","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"30","id":6022,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1642:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1637:6:12","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}}],"id":6024,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1636:8:12","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}},"src":"1631:13:12","typeDescriptions":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"}},"visibility":"internal"},{"constant":true,"id":6034,"mutability":"constant","name":"AFTER_AGREEMENT_CREATED_NOOP","nameLocation":"1676:28:12","nodeType":"VariableDeclaration","scope":6124,"src":"1650:70:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6027,"name":"uint256","nodeType":"ElementaryTypeName","src":"1650:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_rational_8589934592_by_1","typeString":"int_const 8589934592"},"id":6033,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":6028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1707:1:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_33_by_1","typeString":"int_const 33"},"id":6031,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3332","id":6029,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1713:2:12","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":6030,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1718:1:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1713:6:12","typeDescriptions":{"typeIdentifier":"t_rational_33_by_1","typeString":"int_const 33"}}],"id":6032,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1712:8:12","typeDescriptions":{"typeIdentifier":"t_rational_33_by_1","typeString":"int_const 33"}},"src":"1707:13:12","typeDescriptions":{"typeIdentifier":"t_rational_8589934592_by_1","typeString":"int_const 8589934592"}},"visibility":"internal"},{"constant":true,"id":6042,"mutability":"constant","name":"BEFORE_AGREEMENT_UPDATED_NOOP","nameLocation":"1752:29:12","nodeType":"VariableDeclaration","scope":6124,"src":"1726:71:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6035,"name":"uint256","nodeType":"ElementaryTypeName","src":"1726:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_rational_17179869184_by_1","typeString":"int_const 17179869184"},"id":6041,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":6036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1784:1:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_34_by_1","typeString":"int_const 34"},"id":6039,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3332","id":6037,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1790:2:12","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":6038,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1795:1:12","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"1790:6:12","typeDescriptions":{"typeIdentifier":"t_rational_34_by_1","typeString":"int_const 34"}}],"id":6040,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1789:8:12","typeDescriptions":{"typeIdentifier":"t_rational_34_by_1","typeString":"int_const 34"}},"src":"1784:13:12","typeDescriptions":{"typeIdentifier":"t_rational_17179869184_by_1","typeString":"int_const 17179869184"}},"visibility":"internal"},{"constant":true,"id":6050,"mutability":"constant","name":"AFTER_AGREEMENT_UPDATED_NOOP","nameLocation":"1829:28:12","nodeType":"VariableDeclaration","scope":6124,"src":"1803:70:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6043,"name":"uint256","nodeType":"ElementaryTypeName","src":"1803:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_rational_34359738368_by_1","typeString":"int_const 34359738368"},"id":6049,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":6044,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1860:1:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_35_by_1","typeString":"int_const 35"},"id":6047,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3332","id":6045,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1866:2:12","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"33","id":6046,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1871:1:12","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"1866:6:12","typeDescriptions":{"typeIdentifier":"t_rational_35_by_1","typeString":"int_const 35"}}],"id":6048,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1865:8:12","typeDescriptions":{"typeIdentifier":"t_rational_35_by_1","typeString":"int_const 35"}},"src":"1860:13:12","typeDescriptions":{"typeIdentifier":"t_rational_34359738368_by_1","typeString":"int_const 34359738368"}},"visibility":"internal"},{"constant":true,"id":6058,"mutability":"constant","name":"BEFORE_AGREEMENT_TERMINATED_NOOP","nameLocation":"1905:32:12","nodeType":"VariableDeclaration","scope":6124,"src":"1879:74:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6051,"name":"uint256","nodeType":"ElementaryTypeName","src":"1879:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_rational_68719476736_by_1","typeString":"int_const 68719476736"},"id":6057,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":6052,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1940:1:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"id":6055,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3332","id":6053,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1946:2:12","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"34","id":6054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1951:1:12","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"1946:6:12","typeDescriptions":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"}}],"id":6056,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1945:8:12","typeDescriptions":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"}},"src":"1940:13:12","typeDescriptions":{"typeIdentifier":"t_rational_68719476736_by_1","typeString":"int_const 68719476736"}},"visibility":"internal"},{"constant":true,"id":6066,"mutability":"constant","name":"AFTER_AGREEMENT_TERMINATED_NOOP","nameLocation":"1985:31:12","nodeType":"VariableDeclaration","scope":6124,"src":"1959:73:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6059,"name":"uint256","nodeType":"ElementaryTypeName","src":"1959:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_rational_137438953472_by_1","typeString":"int_const 137438953472"},"id":6065,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":6060,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2019:1:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_37_by_1","typeString":"int_const 37"},"id":6063,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3332","id":6061,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2025:2:12","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"35","id":6062,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2030:1:12","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"2025:6:12","typeDescriptions":{"typeIdentifier":"t_rational_37_by_1","typeString":"int_const 37"}}],"id":6064,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2024:8:12","typeDescriptions":{"typeIdentifier":"t_rational_37_by_1","typeString":"int_const 37"}},"src":"2019:13:12","typeDescriptions":{"typeIdentifier":"t_rational_137438953472_by_1","typeString":"int_const 137438953472"}},"visibility":"internal"},{"constant":true,"id":6069,"mutability":"constant","name":"APP_RULE_REGISTRATION_ONLY_IN_CONSTRUCTOR","nameLocation":"2250:41:12","nodeType":"VariableDeclaration","scope":6124,"src":"2224:71:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6067,"name":"uint256","nodeType":"ElementaryTypeName","src":"2224:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31","id":6068,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2294:1:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"internal"},{"constant":true,"id":6072,"mutability":"constant","name":"APP_RULE_NO_REGISTRATION_FOR_EOA","nameLocation":"2327:32:12","nodeType":"VariableDeclaration","scope":6124,"src":"2301:62:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6070,"name":"uint256","nodeType":"ElementaryTypeName","src":"2301:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"32","id":6071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2362:1:12","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"internal"},{"constant":true,"id":6075,"mutability":"constant","name":"APP_RULE_NO_REVERT_ON_TERMINATION_CALLBACK","nameLocation":"2395:42:12","nodeType":"VariableDeclaration","scope":6124,"src":"2369:73:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6073,"name":"uint256","nodeType":"ElementaryTypeName","src":"2369:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3130","id":6074,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2440:2:12","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"visibility":"internal"},{"constant":true,"id":6078,"mutability":"constant","name":"APP_RULE_NO_CRITICAL_SENDER_ACCOUNT","nameLocation":"2474:35:12","nodeType":"VariableDeclaration","scope":6124,"src":"2448:66:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6076,"name":"uint256","nodeType":"ElementaryTypeName","src":"2448:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3131","id":6077,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2512:2:12","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"11"},"visibility":"internal"},{"constant":true,"id":6081,"mutability":"constant","name":"APP_RULE_NO_CRITICAL_RECEIVER_ACCOUNT","nameLocation":"2546:37:12","nodeType":"VariableDeclaration","scope":6124,"src":"2520:68:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6079,"name":"uint256","nodeType":"ElementaryTypeName","src":"2520:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3132","id":6080,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2586:2:12","typeDescriptions":{"typeIdentifier":"t_rational_12_by_1","typeString":"int_const 12"},"value":"12"},"visibility":"internal"},{"constant":true,"id":6084,"mutability":"constant","name":"APP_RULE_CTX_IS_READONLY","nameLocation":"2620:24:12","nodeType":"VariableDeclaration","scope":6124,"src":"2594:55:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6082,"name":"uint256","nodeType":"ElementaryTypeName","src":"2594:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3230","id":6083,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2647:2:12","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"internal"},{"constant":true,"id":6087,"mutability":"constant","name":"APP_RULE_CTX_IS_NOT_CLEAN","nameLocation":"2681:25:12","nodeType":"VariableDeclaration","scope":6124,"src":"2655:56:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6085,"name":"uint256","nodeType":"ElementaryTypeName","src":"2655:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3231","id":6086,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2709:2:12","typeDescriptions":{"typeIdentifier":"t_rational_21_by_1","typeString":"int_const 21"},"value":"21"},"visibility":"internal"},{"constant":true,"id":6090,"mutability":"constant","name":"APP_RULE_CTX_IS_MALFORMATED","nameLocation":"2743:27:12","nodeType":"VariableDeclaration","scope":6124,"src":"2717:58:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6088,"name":"uint256","nodeType":"ElementaryTypeName","src":"2717:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3232","id":6089,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2773:2:12","typeDescriptions":{"typeIdentifier":"t_rational_22_by_1","typeString":"int_const 22"},"value":"22"},"visibility":"internal"},{"constant":true,"id":6093,"mutability":"constant","name":"APP_RULE_COMPOSITE_APP_IS_NOT_WHITELISTED","nameLocation":"2807:41:12","nodeType":"VariableDeclaration","scope":6124,"src":"2781:72:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6091,"name":"uint256","nodeType":"ElementaryTypeName","src":"2781:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3330","id":6092,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2851:2:12","typeDescriptions":{"typeIdentifier":"t_rational_30_by_1","typeString":"int_const 30"},"value":"30"},"visibility":"internal"},{"constant":true,"id":6096,"mutability":"constant","name":"APP_RULE_COMPOSITE_APP_IS_JAILED","nameLocation":"2885:32:12","nodeType":"VariableDeclaration","scope":6124,"src":"2859:63:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6094,"name":"uint256","nodeType":"ElementaryTypeName","src":"2859:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3331","id":6095,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2920:2:12","typeDescriptions":{"typeIdentifier":"t_rational_31_by_1","typeString":"int_const 31"},"value":"31"},"visibility":"internal"},{"constant":true,"id":6099,"mutability":"constant","name":"APP_RULE_MAX_APP_LEVEL_REACHED","nameLocation":"2954:30:12","nodeType":"VariableDeclaration","scope":6124,"src":"2928:61:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6097,"name":"uint256","nodeType":"ElementaryTypeName","src":"2928:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3430","id":6098,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2987:2:12","typeDescriptions":{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},"value":"40"},"visibility":"internal"},{"body":{"id":6122,"nodeType":"Block","src":"3182:120:12","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6120,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6106,"name":"configWord","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6101,"src":"3200:10:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":6113,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"3213:67:12","subExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6111,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6109,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":6107,"name":"APP_LEVEL_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5967,"src":"3215:14:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"id":6108,"name":"APP_JAIL_BIT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5997,"src":"3232:12:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3215:29:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"id":6110,"name":"AGREEMENT_CALLBACK_NOOP_BITMASKS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6018,"src":"3247:32:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3215:64:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6112,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3214:66:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3200:80:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6115,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3199:82:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":6118,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3293:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6117,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3285:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6116,"name":"uint256","nodeType":"ElementaryTypeName","src":"3285:7:12","typeDescriptions":{}}},"id":6119,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3285:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3199:96:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6105,"id":6121,"nodeType":"Return","src":"3192:103:12"}]},"id":6123,"implemented":true,"kind":"function","modifiers":[],"name":"isConfigWordClean","nameLocation":"3115:17:12","nodeType":"FunctionDefinition","parameters":{"id":6102,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6101,"mutability":"mutable","name":"configWord","nameLocation":"3141:10:12","nodeType":"VariableDeclaration","scope":6123,"src":"3133:18:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6100,"name":"uint256","nodeType":"ElementaryTypeName","src":"3133:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3132:20:12"},"returnParameters":{"id":6105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6104,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6123,"src":"3176:4:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6103,"name":"bool","nodeType":"ElementaryTypeName","src":"3176:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3175:6:12"},"scope":6124,"src":"3106:196:12","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":6435,"src":"132:3172:12","usedErrors":[]},{"abstract":false,"baseContracts":[],"canonicalName":"ContextDefinitions","contractDependencies":[],"contractKind":"library","documentation":{"id":6125,"nodeType":"StructuredDocumentation","src":"3306:67:12","text":" @title Context definitions library\n @author Superfluid"},"fullyImplemented":true,"id":6200,"linearizedBaseContracts":[6200],"name":"ContextDefinitions","nameLocation":"3382:18:12","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":6128,"mutability":"constant","name":"CALL_INFO_APP_LEVEL_MASK","nameLocation":"3629:24:12","nodeType":"VariableDeclaration","scope":6200,"src":"3603:57:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6126,"name":"uint256","nodeType":"ElementaryTypeName","src":"3603:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30784646","id":6127,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3656:4:12","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"0xFF"},"visibility":"internal"},{"constant":true,"id":6131,"mutability":"constant","name":"CALL_INFO_CALL_TYPE_SHIFT","nameLocation":"3710:25:12","nodeType":"VariableDeclaration","scope":6200,"src":"3684:56:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6129,"name":"uint256","nodeType":"ElementaryTypeName","src":"3684:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3332","id":6130,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3738:2:12","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"visibility":"internal"},{"constant":true,"id":6136,"mutability":"constant","name":"CALL_INFO_CALL_TYPE_MASK","nameLocation":"3772:24:12","nodeType":"VariableDeclaration","scope":6200,"src":"3746:85:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6132,"name":"uint256","nodeType":"ElementaryTypeName","src":"3746:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6135,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"307846","id":6133,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3799:3:12","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xF"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":6134,"name":"CALL_INFO_CALL_TYPE_SHIFT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6131,"src":"3806:25:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3799:32:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":true,"id":6139,"mutability":"constant","name":"CALL_INFO_CALL_TYPE_AGREEMENT","nameLocation":"3861:29:12","nodeType":"VariableDeclaration","scope":6200,"src":"3837:57:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6137,"name":"uint8","nodeType":"ElementaryTypeName","src":"3837:5:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"31","id":6138,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3893:1:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"internal"},{"constant":true,"id":6142,"mutability":"constant","name":"CALL_INFO_CALL_TYPE_APP_ACTION","nameLocation":"3924:30:12","nodeType":"VariableDeclaration","scope":6200,"src":"3900:58:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6140,"name":"uint8","nodeType":"ElementaryTypeName","src":"3900:5:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"32","id":6141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3957:1:12","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"internal"},{"constant":true,"id":6145,"mutability":"constant","name":"CALL_INFO_CALL_TYPE_APP_CALLBACK","nameLocation":"3988:32:12","nodeType":"VariableDeclaration","scope":6200,"src":"3964:60:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6143,"name":"uint8","nodeType":"ElementaryTypeName","src":"3964:5:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"33","id":6144,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4023:1:12","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"visibility":"internal"},{"body":{"id":6175,"nodeType":"Block","src":"4156:172:12","statements":[{"expression":{"id":6161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6154,"name":"appCallbackLevel","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6150,"src":"4166:16:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6157,"name":"callInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6147,"src":"4191:8:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":6158,"name":"CALL_INFO_APP_LEVEL_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6128,"src":"4202:24:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4191:35:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6156,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4185:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":6155,"name":"uint8","nodeType":"ElementaryTypeName","src":"4185:5:12","typeDescriptions":{}}},"id":6160,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4185:42:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4166:61:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":6162,"nodeType":"ExpressionStatement","src":"4166:61:12"},{"expression":{"id":6173,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6163,"name":"callType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6152,"src":"4237:8:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6166,"name":"callInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6147,"src":"4255:8:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":6167,"name":"CALL_INFO_CALL_TYPE_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6136,"src":"4266:24:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4255:35:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6169,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4254:37:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":6170,"name":"CALL_INFO_CALL_TYPE_SHIFT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6131,"src":"4295:25:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4254:66:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6165,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4248:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":6164,"name":"uint8","nodeType":"ElementaryTypeName","src":"4248:5:12","typeDescriptions":{}}},"id":6172,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4248:73:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4237:84:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":6174,"nodeType":"ExpressionStatement","src":"4237:84:12"}]},"id":6176,"implemented":true,"kind":"function","modifiers":[],"name":"decodeCallInfo","nameLocation":"4040:14:12","nodeType":"FunctionDefinition","parameters":{"id":6148,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6147,"mutability":"mutable","name":"callInfo","nameLocation":"4063:8:12","nodeType":"VariableDeclaration","scope":6176,"src":"4055:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6146,"name":"uint256","nodeType":"ElementaryTypeName","src":"4055:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4054:18:12"},"returnParameters":{"id":6153,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6150,"mutability":"mutable","name":"appCallbackLevel","nameLocation":"4118:16:12","nodeType":"VariableDeclaration","scope":6176,"src":"4112:22:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6149,"name":"uint8","nodeType":"ElementaryTypeName","src":"4112:5:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":6152,"mutability":"mutable","name":"callType","nameLocation":"4142:8:12","nodeType":"VariableDeclaration","scope":6176,"src":"4136:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6151,"name":"uint8","nodeType":"ElementaryTypeName","src":"4136:5:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"4111:40:12"},"scope":6200,"src":"4031:297:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6198,"nodeType":"Block","src":"4459:100:12","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6196,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":6187,"name":"appCallbackLevel","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6178,"src":"4484:16:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":6186,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4476:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6185,"name":"uint256","nodeType":"ElementaryTypeName","src":"4476:7:12","typeDescriptions":{}}},"id":6188,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4476:25:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":6191,"name":"callType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6180,"src":"4513:8:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":6190,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4505:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6189,"name":"uint256","nodeType":"ElementaryTypeName","src":"4505:7:12","typeDescriptions":{}}},"id":6192,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4505:17:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":6193,"name":"CALL_INFO_CALL_TYPE_SHIFT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6131,"src":"4526:25:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4505:46:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6195,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4504:48:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4476:76:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6184,"id":6197,"nodeType":"Return","src":"4469:83:12"}]},"id":6199,"implemented":true,"kind":"function","modifiers":[],"name":"encodeCallInfo","nameLocation":"4343:14:12","nodeType":"FunctionDefinition","parameters":{"id":6181,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6178,"mutability":"mutable","name":"appCallbackLevel","nameLocation":"4364:16:12","nodeType":"VariableDeclaration","scope":6199,"src":"4358:22:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6177,"name":"uint8","nodeType":"ElementaryTypeName","src":"4358:5:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":6180,"mutability":"mutable","name":"callType","nameLocation":"4388:8:12","nodeType":"VariableDeclaration","scope":6199,"src":"4382:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6179,"name":"uint8","nodeType":"ElementaryTypeName","src":"4382:5:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"4357:40:12"},"returnParameters":{"id":6184,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6183,"mutability":"mutable","name":"callInfo","nameLocation":"4445:8:12","nodeType":"VariableDeclaration","scope":6199,"src":"4437:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6182,"name":"uint256","nodeType":"ElementaryTypeName","src":"4437:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4436:18:12"},"scope":6200,"src":"4334:225:12","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":6435,"src":"3374:1188:12","usedErrors":[]},{"abstract":false,"baseContracts":[],"canonicalName":"FlowOperatorDefinitions","contractDependencies":[],"contractKind":"library","documentation":{"id":6201,"nodeType":"StructuredDocumentation","src":"4564:74:12","text":" @title Flow Operator definitions library\n @author Superfluid"},"fullyImplemented":true,"id":6287,"linearizedBaseContracts":[6287],"name":"FlowOperatorDefinitions","nameLocation":"4648:23:12","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":6209,"mutability":"constant","name":"AUTHORIZE_FLOW_OPERATOR_CREATE","nameLocation":"4702:30:12","nodeType":"VariableDeclaration","scope":6287,"src":"4678:70:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6202,"name":"uint8","nodeType":"ElementaryTypeName","src":"4678:5:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":6208,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"hexValue":"31","id":6205,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4741:1:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":6204,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4735:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":6203,"name":"uint8","nodeType":"ElementaryTypeName","src":"4735:5:12","typeDescriptions":{}}},"id":6206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4735:8:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"30","id":6207,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4747:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4735:13:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":true,"id":6217,"mutability":"constant","name":"AUTHORIZE_FLOW_OPERATOR_UPDATE","nameLocation":"4778:30:12","nodeType":"VariableDeclaration","scope":6287,"src":"4754:70:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6210,"name":"uint8","nodeType":"ElementaryTypeName","src":"4754:5:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":6216,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"hexValue":"31","id":6213,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4817:1:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":6212,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4811:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":6211,"name":"uint8","nodeType":"ElementaryTypeName","src":"4811:5:12","typeDescriptions":{}}},"id":6214,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4811:8:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"31","id":6215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4823:1:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4811:13:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":true,"id":6225,"mutability":"constant","name":"AUTHORIZE_FLOW_OPERATOR_DELETE","nameLocation":"4854:30:12","nodeType":"VariableDeclaration","scope":6287,"src":"4830:70:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6218,"name":"uint8","nodeType":"ElementaryTypeName","src":"4830:5:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":6224,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"hexValue":"31","id":6221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4893:1:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":6220,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4887:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":6219,"name":"uint8","nodeType":"ElementaryTypeName","src":"4887:5:12","typeDescriptions":{}}},"id":6222,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4887:8:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"32","id":6223,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4899:1:12","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"4887:13:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":true,"id":6232,"mutability":"constant","name":"AUTHORIZE_FULL_CONTROL","nameLocation":"4930:22:12","nodeType":"VariableDeclaration","scope":6287,"src":"4906:153:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6226,"name":"uint8","nodeType":"ElementaryTypeName","src":"4906:5:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":6231,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":6229,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":6227,"name":"AUTHORIZE_FLOW_OPERATOR_CREATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6209,"src":"4963:30:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"id":6228,"name":"AUTHORIZE_FLOW_OPERATOR_UPDATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6217,"src":"4996:30:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4963:63:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"id":6230,"name":"AUTHORIZE_FLOW_OPERATOR_DELETE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6225,"src":"5029:30:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4963:96:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":true,"id":6242,"mutability":"constant","name":"REVOKE_FLOW_OPERATOR_CREATE","nameLocation":"5089:27:12","nodeType":"VariableDeclaration","scope":6287,"src":"5065:70:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6233,"name":"uint8","nodeType":"ElementaryTypeName","src":"5065:5:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"id":6241,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"5119:16:12","subExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":6239,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"hexValue":"31","id":6236,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5127:1:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":6235,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5121:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":6234,"name":"uint8","nodeType":"ElementaryTypeName","src":"5121:5:12","typeDescriptions":{}}},"id":6237,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5121:8:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"30","id":6238,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5133:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5121:13:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":6240,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5120:15:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":true,"id":6252,"mutability":"constant","name":"REVOKE_FLOW_OPERATOR_UPDATE","nameLocation":"5165:27:12","nodeType":"VariableDeclaration","scope":6287,"src":"5141:70:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6243,"name":"uint8","nodeType":"ElementaryTypeName","src":"5141:5:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"id":6251,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"5195:16:12","subExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":6249,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"hexValue":"31","id":6246,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5203:1:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":6245,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5197:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":6244,"name":"uint8","nodeType":"ElementaryTypeName","src":"5197:5:12","typeDescriptions":{}}},"id":6247,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5197:8:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"31","id":6248,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5209:1:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5197:13:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":6250,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5196:15:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":true,"id":6262,"mutability":"constant","name":"REVOKE_FLOW_OPERATOR_DELETE","nameLocation":"5241:27:12","nodeType":"VariableDeclaration","scope":6287,"src":"5217:70:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6253,"name":"uint8","nodeType":"ElementaryTypeName","src":"5217:5:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"id":6261,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"5271:16:12","subExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":6259,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"hexValue":"31","id":6256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5279:1:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":6255,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5273:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":6254,"name":"uint8","nodeType":"ElementaryTypeName","src":"5273:5:12","typeDescriptions":{}}},"id":6257,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5273:8:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"32","id":6258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5285:1:12","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"5273:13:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":6260,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5272:15:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"body":{"id":6285,"nodeType":"Block","src":"5370:209:12","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":6283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":6277,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6269,"name":"permissions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6264,"src":"5401:11:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":6276,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"5415:131:12","subExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":6274,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":6272,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":6270,"name":"AUTHORIZE_FLOW_OPERATOR_CREATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6209,"src":"5417:30:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"id":6271,"name":"AUTHORIZE_FLOW_OPERATOR_UPDATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6217,"src":"5466:30:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"5417:79:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"id":6273,"name":"AUTHORIZE_FLOW_OPERATOR_DELETE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6225,"src":"5515:30:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"5417:128:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":6275,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"5416:130:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"5401:145:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":6278,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5387:173:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":6281,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5570:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6280,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5564:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":6279,"name":"uint8","nodeType":"ElementaryTypeName","src":"5564:5:12","typeDescriptions":{}}},"id":6282,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5564:8:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"5387:185:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6268,"id":6284,"nodeType":"Return","src":"5380:192:12"}]},"id":6286,"implemented":true,"kind":"function","modifiers":[],"name":"isPermissionsClean","nameLocation":"5303:18:12","nodeType":"FunctionDefinition","parameters":{"id":6265,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6264,"mutability":"mutable","name":"permissions","nameLocation":"5328:11:12","nodeType":"VariableDeclaration","scope":6286,"src":"5322:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6263,"name":"uint8","nodeType":"ElementaryTypeName","src":"5322:5:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"5321:19:12"},"returnParameters":{"id":6268,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6267,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6286,"src":"5364:4:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6266,"name":"bool","nodeType":"ElementaryTypeName","src":"5364:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5363:6:12"},"scope":6287,"src":"5294:285:12","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":6435,"src":"4640:942:12","usedErrors":[]},{"abstract":false,"baseContracts":[],"canonicalName":"BatchOperation","contractDependencies":[],"contractKind":"library","documentation":{"id":6288,"nodeType":"StructuredDocumentation","src":"5584:63:12","text":" @title Batch operation library\n @author Superfluid"},"fullyImplemented":true,"id":6333,"linearizedBaseContracts":[6333],"name":"BatchOperation","nameLocation":"5656:14:12","nodeType":"ContractDefinition","nodes":[{"constant":true,"documentation":{"id":6289,"nodeType":"StructuredDocumentation","src":"5677:200:12","text":" @dev ERC20.approve batch operation type\n Call spec:\n ISuperToken(target).operationApprove(\n abi.decode(data, (address spender, uint256 amount))\n )"},"id":6292,"mutability":"constant","name":"OPERATION_TYPE_ERC20_APPROVE","nameLocation":"5907:28:12","nodeType":"VariableDeclaration","scope":6333,"src":"5882:57:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6290,"name":"uint32","nodeType":"ElementaryTypeName","src":"5882:6:12","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":{"hexValue":"31","id":6291,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5938:1:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"internal"},{"constant":true,"documentation":{"id":6293,"nodeType":"StructuredDocumentation","src":"5945:227:12","text":" @dev ERC20.transferFrom batch operation type\n Call spec:\n ISuperToken(target).operationTransferFrom(\n abi.decode(data, (address sender, address recipient, uint256 amount)\n )"},"id":6296,"mutability":"constant","name":"OPERATION_TYPE_ERC20_TRANSFER_FROM","nameLocation":"6202:34:12","nodeType":"VariableDeclaration","scope":6333,"src":"6177:63:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6294,"name":"uint32","nodeType":"ElementaryTypeName","src":"6177:6:12","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":{"hexValue":"32","id":6295,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6239:1:12","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"internal"},{"constant":true,"documentation":{"id":6297,"nodeType":"StructuredDocumentation","src":"6246:212:12","text":" @dev ERC777.send batch operation type\n Call spec:\n ISuperToken(target).operationSend(\n abi.decode(data, (address recipient, uint256 amount, bytes userData)\n )"},"id":6300,"mutability":"constant","name":"OPERATION_TYPE_ERC777_SEND","nameLocation":"6488:26:12","nodeType":"VariableDeclaration","scope":6333,"src":"6463:55:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6298,"name":"uint32","nodeType":"ElementaryTypeName","src":"6463:6:12","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":{"hexValue":"33","id":6299,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6517:1:12","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"visibility":"internal"},{"constant":true,"documentation":{"id":6301,"nodeType":"StructuredDocumentation","src":"6524:241:12","text":" @dev ERC20.increaseAllowance batch operation type\n Call spec:\n ISuperToken(target).operationIncreaseAllowance(\n abi.decode(data, (address account, address spender, uint256 addedValue))\n )"},"id":6304,"mutability":"constant","name":"OPERATION_TYPE_ERC20_INCREASE_ALLOWANCE","nameLocation":"6795:39:12","nodeType":"VariableDeclaration","scope":6333,"src":"6770:68:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6302,"name":"uint32","nodeType":"ElementaryTypeName","src":"6770:6:12","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":{"hexValue":"34","id":6303,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6837:1:12","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"visibility":"internal"},{"constant":true,"documentation":{"id":6305,"nodeType":"StructuredDocumentation","src":"6844:246:12","text":" @dev ERC20.decreaseAllowance batch operation type\n Call spec:\n ISuperToken(target).operationDecreaseAllowance(\n abi.decode(data, (address account, address spender, uint256 subtractedValue))\n )"},"id":6308,"mutability":"constant","name":"OPERATION_TYPE_ERC20_DECREASE_ALLOWANCE","nameLocation":"7120:39:12","nodeType":"VariableDeclaration","scope":6333,"src":"7095:68:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6306,"name":"uint32","nodeType":"ElementaryTypeName","src":"7095:6:12","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":{"hexValue":"35","id":6307,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7162:1:12","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"visibility":"internal"},{"constant":true,"documentation":{"id":6309,"nodeType":"StructuredDocumentation","src":"7169:187:12","text":" @dev SuperToken.upgrade batch operation type\n Call spec:\n ISuperToken(target).operationUpgrade(\n abi.decode(data, (uint256 amount)\n )"},"id":6314,"mutability":"constant","name":"OPERATION_TYPE_SUPERTOKEN_UPGRADE","nameLocation":"7386:33:12","nodeType":"VariableDeclaration","scope":6333,"src":"7361:68:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6310,"name":"uint32","nodeType":"ElementaryTypeName","src":"7361:6:12","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":{"commonType":{"typeIdentifier":"t_rational_101_by_1","typeString":"int_const 101"},"id":6313,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":6311,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7422:1:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"313030","id":6312,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7426:3:12","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"7422:7:12","typeDescriptions":{"typeIdentifier":"t_rational_101_by_1","typeString":"int_const 101"}},"visibility":"internal"},{"constant":true,"documentation":{"id":6315,"nodeType":"StructuredDocumentation","src":"7435:191:12","text":" @dev SuperToken.downgrade batch operation type\n Call spec:\n ISuperToken(target).operationDowngrade(\n abi.decode(data, (uint256 amount)\n )"},"id":6320,"mutability":"constant","name":"OPERATION_TYPE_SUPERTOKEN_DOWNGRADE","nameLocation":"7656:35:12","nodeType":"VariableDeclaration","scope":6333,"src":"7631:70:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6316,"name":"uint32","nodeType":"ElementaryTypeName","src":"7631:6:12","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":{"commonType":{"typeIdentifier":"t_rational_102_by_1","typeString":"int_const 102"},"id":6319,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":6317,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7694:1:12","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"313030","id":6318,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7698:3:12","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"7694:7:12","typeDescriptions":{"typeIdentifier":"t_rational_102_by_1","typeString":"int_const 102"}},"visibility":"internal"},{"constant":true,"documentation":{"id":6321,"nodeType":"StructuredDocumentation","src":"7707:223:12","text":" @dev Superfluid.callAgreement batch operation type\n Call spec:\n callAgreement(\n ISuperAgreement(target)),\n abi.decode(data, (bytes callData, bytes userData)\n )"},"id":6326,"mutability":"constant","name":"OPERATION_TYPE_SUPERFLUID_CALL_AGREEMENT","nameLocation":"7960:40:12","nodeType":"VariableDeclaration","scope":6333,"src":"7935:75:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6322,"name":"uint32","nodeType":"ElementaryTypeName","src":"7935:6:12","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":{"commonType":{"typeIdentifier":"t_rational_201_by_1","typeString":"int_const 201"},"id":6325,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":6323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8003:1:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"323030","id":6324,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8007:3:12","typeDescriptions":{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},"value":"200"},"src":"8003:7:12","typeDescriptions":{"typeIdentifier":"t_rational_201_by_1","typeString":"int_const 201"}},"visibility":"internal"},{"constant":true,"documentation":{"id":6327,"nodeType":"StructuredDocumentation","src":"8016:172:12","text":" @dev Superfluid.callAppAction batch operation type\n Call spec:\n callAppAction(\n ISuperApp(target)),\n data\n )"},"id":6332,"mutability":"constant","name":"OPERATION_TYPE_SUPERFLUID_CALL_APP_ACTION","nameLocation":"8218:41:12","nodeType":"VariableDeclaration","scope":6333,"src":"8193:76:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6328,"name":"uint32","nodeType":"ElementaryTypeName","src":"8193:6:12","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":{"commonType":{"typeIdentifier":"t_rational_202_by_1","typeString":"int_const 202"},"id":6331,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":6329,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8262:1:12","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"323030","id":6330,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8266:3:12","typeDescriptions":{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},"value":"200"},"src":"8262:7:12","typeDescriptions":{"typeIdentifier":"t_rational_202_by_1","typeString":"int_const 202"}},"visibility":"internal"}],"scope":6435,"src":"5648:2624:12","usedErrors":[]},{"abstract":false,"baseContracts":[],"canonicalName":"SuperfluidGovernanceConfigs","contractDependencies":[],"contractKind":"library","documentation":{"id":6334,"nodeType":"StructuredDocumentation","src":"8274:77:12","text":" @title Superfluid governance configs library\n @author Superfluid"},"fullyImplemented":true,"id":6434,"linearizedBaseContracts":[6434],"name":"SuperfluidGovernanceConfigs","nameLocation":"8360:27:12","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":6339,"mutability":"constant","name":"SUPERFLUID_REWARD_ADDRESS_CONFIG_KEY","nameLocation":"8421:36:12","nodeType":"VariableDeclaration","scope":6434,"src":"8395:133:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6335,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8395:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"6f72672e7375706572666c7569642d66696e616e63652e7375706572666c7569642e72657761726441646472657373","id":6337,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8478:49:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_9f60ae461adf056670e03ae602566409933242392cb06744f5747c9f38b05d09","typeString":"literal_string \"org.superfluid-finance.superfluid.rewardAddress\""},"value":"org.superfluid-finance.superfluid.rewardAddress"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_9f60ae461adf056670e03ae602566409933242392cb06744f5747c9f38b05d09","typeString":"literal_string \"org.superfluid-finance.superfluid.rewardAddress\""}],"id":6336,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"8468:9:12","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":6338,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8468:60:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":true,"id":6344,"mutability":"constant","name":"CFAV1_PPP_CONFIG_KEY","nameLocation":"8560:20:12","nodeType":"VariableDeclaration","scope":6434,"src":"8534:145:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6340,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8534:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"6f72672e7375706572666c7569642d66696e616e63652e61677265656d656e74732e436f6e7374616e74466c6f7741677265656d656e742e76312e505050436f6e66696775726174696f6e","id":6342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8601:77:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_e420d96e81cb4a6b2abb2366c4f93312d4e2ae878a7d4b22e73472fdad891f78","typeString":"literal_string \"org.superfluid-finance.agreements.ConstantFlowAgreement.v1.PPPConfiguration\""},"value":"org.superfluid-finance.agreements.ConstantFlowAgreement.v1.PPPConfiguration"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_e420d96e81cb4a6b2abb2366c4f93312d4e2ae878a7d4b22e73472fdad891f78","typeString":"literal_string \"org.superfluid-finance.agreements.ConstantFlowAgreement.v1.PPPConfiguration\""}],"id":6341,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"8591:9:12","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":6343,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8591:88:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":true,"id":6349,"mutability":"constant","name":"SUPERTOKEN_MINIMUM_DEPOSIT_KEY","nameLocation":"8711:30:12","nodeType":"VariableDeclaration","scope":6434,"src":"8685:138:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6345,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8685:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"6f72672e7375706572666c7569642d66696e616e63652e7375706572666c7569642e7375706572546f6b656e4d696e696d756d4465706f736974","id":6347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8762:60:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_eae305fa863b373417e615b1044222e2806cefc7788d169ce6748a443c3f6cc4","typeString":"literal_string \"org.superfluid-finance.superfluid.superTokenMinimumDeposit\""},"value":"org.superfluid-finance.superfluid.superTokenMinimumDeposit"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_eae305fa863b373417e615b1044222e2806cefc7788d169ce6748a443c3f6cc4","typeString":"literal_string \"org.superfluid-finance.superfluid.superTokenMinimumDeposit\""}],"id":6346,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"8752:9:12","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":6348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8752:71:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"body":{"id":6364,"nodeType":"Block","src":"8919:135:12","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"6f72672e7375706572666c7569642d66696e616e63652e7375706572666c7569642e74727573746564466f72776172646572","id":6359,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8970:52:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_5e8d8c86403ce515d0afc5f813484261c20de0e66deea95df3a7de50a4365fdd","typeString":"literal_string \"org.superfluid-finance.superfluid.trustedForwarder\""},"value":"org.superfluid-finance.superfluid.trustedForwarder"},{"id":6360,"name":"forwarder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6351,"src":"9036:9:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_5e8d8c86403ce515d0afc5f813484261c20de0e66deea95df3a7de50a4365fdd","typeString":"literal_string \"org.superfluid-finance.superfluid.trustedForwarder\""},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":6357,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"8946:3:12","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":6358,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8950:6:12","memberName":"encode","nodeType":"MemberAccess","src":"8946:10:12","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":6361,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8946:100:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6356,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"8936:9:12","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":6362,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8936:111:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":6355,"id":6363,"nodeType":"Return","src":"8929:118:12"}]},"id":6365,"implemented":true,"kind":"function","modifiers":[],"name":"getTrustedForwarderConfigKey","nameLocation":"8839:28:12","nodeType":"FunctionDefinition","parameters":{"id":6352,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6351,"mutability":"mutable","name":"forwarder","nameLocation":"8876:9:12","nodeType":"VariableDeclaration","scope":6365,"src":"8868:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6350,"name":"address","nodeType":"ElementaryTypeName","src":"8868:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8867:19:12"},"returnParameters":{"id":6355,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6354,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6365,"src":"8910:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6353,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8910:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8909:9:12"},"scope":6434,"src":"8830:224:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6383,"nodeType":"Block","src":"9178:178:12","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"6f72672e7375706572666c7569642d66696e616e63652e7375706572666c7569642e61707057686974654c697374696e672e726567697374726174696f6e4b6579","id":6377,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9229:67:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_2ac2eda5c308a51ed3bd3433d0d20fe487916751b3404fa382719429ef24259a","typeString":"literal_string \"org.superfluid-finance.superfluid.appWhiteListing.registrationKey\""},"value":"org.superfluid-finance.superfluid.appWhiteListing.registrationKey"},{"id":6378,"name":"deployer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6367,"src":"9310:8:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":6379,"name":"registrationKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6369,"src":"9332:15:12","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_2ac2eda5c308a51ed3bd3433d0d20fe487916751b3404fa382719429ef24259a","typeString":"literal_string \"org.superfluid-finance.superfluid.appWhiteListing.registrationKey\""},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":6375,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"9205:3:12","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":6376,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9209:6:12","memberName":"encode","nodeType":"MemberAccess","src":"9205:10:12","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":6380,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9205:143:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6374,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"9195:9:12","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":6381,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9195:154:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":6373,"id":6382,"nodeType":"Return","src":"9188:161:12"}]},"id":6384,"implemented":true,"kind":"function","modifiers":[],"name":"getAppRegistrationConfigKey","nameLocation":"9069:27:12","nodeType":"FunctionDefinition","parameters":{"id":6370,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6367,"mutability":"mutable","name":"deployer","nameLocation":"9105:8:12","nodeType":"VariableDeclaration","scope":6384,"src":"9097:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6366,"name":"address","nodeType":"ElementaryTypeName","src":"9097:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6369,"mutability":"mutable","name":"registrationKey","nameLocation":"9129:15:12","nodeType":"VariableDeclaration","scope":6384,"src":"9115:29:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6368,"name":"string","nodeType":"ElementaryTypeName","src":"9115:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"9096:49:12"},"returnParameters":{"id":6373,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6372,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6384,"src":"9169:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6371,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9169:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"9168:9:12"},"scope":6434,"src":"9060:296:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6399,"nodeType":"Block","src":"9443:140:12","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"6f72672e7375706572666c7569642d66696e616e63652e7375706572666c7569642e61707057686974654c697374696e672e666163746f7279","id":6394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9494:59:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_3a9ec29d76a01dd4676b43ee8f5ae7a021577f823fb495dfb5627ad6bbb890b6","typeString":"literal_string \"org.superfluid-finance.superfluid.appWhiteListing.factory\""},"value":"org.superfluid-finance.superfluid.appWhiteListing.factory"},{"id":6395,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6386,"src":"9567:7:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_3a9ec29d76a01dd4676b43ee8f5ae7a021577f823fb495dfb5627ad6bbb890b6","typeString":"literal_string \"org.superfluid-finance.superfluid.appWhiteListing.factory\""},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":6392,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"9470:3:12","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":6393,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9474:6:12","memberName":"encode","nodeType":"MemberAccess","src":"9470:10:12","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":6396,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9470:105:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6391,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"9460:9:12","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":6397,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9460:116:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":6390,"id":6398,"nodeType":"Return","src":"9453:123:12"}]},"id":6400,"implemented":true,"kind":"function","modifiers":[],"name":"getAppFactoryConfigKey","nameLocation":"9371:22:12","nodeType":"FunctionDefinition","parameters":{"id":6387,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6386,"mutability":"mutable","name":"factory","nameLocation":"9402:7:12","nodeType":"VariableDeclaration","scope":6400,"src":"9394:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6385,"name":"address","nodeType":"ElementaryTypeName","src":"9394:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9393:17:12"},"returnParameters":{"id":6390,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6389,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6400,"src":"9434:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6388,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9434:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"9433:9:12"},"scope":6434,"src":"9362:221:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6432,"nodeType":"Block","src":"9708:129:12","statements":[{"expression":{"id":6420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6409,"name":"liquidationPeriod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6405,"src":"9718:17:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6410,"name":"pppConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6402,"src":"9739:9:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":6411,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9752:2:12","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"9739:15:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6413,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9738:17:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"expression":{"arguments":[{"id":6416,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9763:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":6415,"name":"uint32","nodeType":"ElementaryTypeName","src":"9763:6:12","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"}],"id":6414,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"9758:4:12","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":6417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9758:12:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint32","typeString":"type(uint32)"}},"id":6418,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9771:3:12","memberName":"max","nodeType":"MemberAccess","src":"9758:16:12","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"9738:36:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9718:56:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6421,"nodeType":"ExpressionStatement","src":"9718:56:12"},{"expression":{"id":6430,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6422,"name":"patricianPeriod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6407,"src":"9784:15:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6429,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6423,"name":"pppConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6402,"src":"9802:9:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"expression":{"arguments":[{"id":6426,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9819:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":6425,"name":"uint32","nodeType":"ElementaryTypeName","src":"9819:6:12","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"}],"id":6424,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"9814:4:12","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":6427,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9814:12:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint32","typeString":"type(uint32)"}},"id":6428,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9827:3:12","memberName":"max","nodeType":"MemberAccess","src":"9814:16:12","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"9802:28:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9784:46:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6431,"nodeType":"ExpressionStatement","src":"9784:46:12"}]},"id":6433,"implemented":true,"kind":"function","modifiers":[],"name":"decodePPPConfig","nameLocation":"9598:15:12","nodeType":"FunctionDefinition","parameters":{"id":6403,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6402,"mutability":"mutable","name":"pppConfig","nameLocation":"9622:9:12","nodeType":"VariableDeclaration","scope":6433,"src":"9614:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6401,"name":"uint256","nodeType":"ElementaryTypeName","src":"9614:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9613:19:12"},"returnParameters":{"id":6408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6405,"mutability":"mutable","name":"liquidationPeriod","nameLocation":"9664:17:12","nodeType":"VariableDeclaration","scope":6433,"src":"9656:25:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6404,"name":"uint256","nodeType":"ElementaryTypeName","src":"9656:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6407,"mutability":"mutable","name":"patricianPeriod","nameLocation":"9691:15:12","nodeType":"VariableDeclaration","scope":6433,"src":"9683:23:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6406,"name":"uint256","nodeType":"ElementaryTypeName","src":"9683:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9655:52:12"},"scope":6434,"src":"9589:248:12","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":6435,"src":"8352:1487:12","usedErrors":[]}],"src":"35:9805:12"},"id":12},"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol":{"ast":{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol","exportedSymbols":{"ISuperAgreement":[6463],"ISuperfluidToken":[8082]},"id":6464,"license":"AGPLv3","nodeType":"SourceUnit","nodes":[{"id":6436,"literals":["solidity",">=","0.8",".4"],"nodeType":"PragmaDirective","src":"35:25:13"},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol","file":"./ISuperfluidToken.sol","id":6438,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6464,"sourceUnit":8083,"src":"62:58:13","symbolAliases":[{"foreign":{"id":6437,"name":"ISuperfluidToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8082,"src":"71:16:13","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"ISuperAgreement","contractDependencies":[],"contractKind":"interface","documentation":{"id":6439,"nodeType":"StructuredDocumentation","src":"122:65:13","text":" @title Super agreement interface\n @author Superfluid"},"fullyImplemented":false,"id":6463,"linearizedBaseContracts":[6463],"name":"ISuperAgreement","nameLocation":"198:15:13","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":6440,"nodeType":"StructuredDocumentation","src":"221:59:13","text":" @dev Get the type of the agreement class"},"functionSelector":"7730599e","id":6445,"implemented":false,"kind":"function","modifiers":[],"name":"agreementType","nameLocation":"294:13:13","nodeType":"FunctionDefinition","parameters":{"id":6441,"nodeType":"ParameterList","parameters":[],"src":"307:2:13"},"returnParameters":{"id":6444,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6443,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6445,"src":"333:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6442,"name":"bytes32","nodeType":"ElementaryTypeName","src":"333:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"332:9:13"},"scope":6463,"src":"285:57:13","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":6446,"nodeType":"StructuredDocumentation","src":"348:425:13","text":" @dev Calculate the real-time balance for the account of this agreement class\n @param account Account the state belongs to\n @param time Time used for the calculation\n @return dynamicBalance Dynamic balance portion of real-time balance of this agreement\n @return deposit Account deposit amount of this agreement\n @return owedDeposit Account owed deposit amount of this agreement"},"functionSelector":"9b2e48bc","id":6462,"implemented":false,"kind":"function","modifiers":[],"name":"realtimeBalanceOf","nameLocation":"787:17:13","nodeType":"FunctionDefinition","parameters":{"id":6454,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6449,"mutability":"mutable","name":"token","nameLocation":"831:5:13","nodeType":"VariableDeclaration","scope":6462,"src":"814:22:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"},"typeName":{"id":6448,"nodeType":"UserDefinedTypeName","pathNode":{"id":6447,"name":"ISuperfluidToken","nameLocations":["814:16:13"],"nodeType":"IdentifierPath","referencedDeclaration":8082,"src":"814:16:13"},"referencedDeclaration":8082,"src":"814:16:13","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":6451,"mutability":"mutable","name":"account","nameLocation":"854:7:13","nodeType":"VariableDeclaration","scope":6462,"src":"846:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6450,"name":"address","nodeType":"ElementaryTypeName","src":"846:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6453,"mutability":"mutable","name":"time","nameLocation":"879:4:13","nodeType":"VariableDeclaration","scope":6462,"src":"871:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6452,"name":"uint256","nodeType":"ElementaryTypeName","src":"871:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"804:85:13"},"returnParameters":{"id":6461,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6456,"mutability":"mutable","name":"dynamicBalance","nameLocation":"957:14:13","nodeType":"VariableDeclaration","scope":6462,"src":"950:21:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6455,"name":"int256","nodeType":"ElementaryTypeName","src":"950:6:13","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":6458,"mutability":"mutable","name":"deposit","nameLocation":"993:7:13","nodeType":"VariableDeclaration","scope":6462,"src":"985:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6457,"name":"uint256","nodeType":"ElementaryTypeName","src":"985:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6460,"mutability":"mutable","name":"owedDeposit","nameLocation":"1022:11:13","nodeType":"VariableDeclaration","scope":6462,"src":"1014:19:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6459,"name":"uint256","nodeType":"ElementaryTypeName","src":"1014:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"936:107:13"},"scope":6463,"src":"778:266:13","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":6464,"src":"188:859:13","usedErrors":[]}],"src":"35:1013:13"},"id":13},"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperApp.sol":{"ast":{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperApp.sol","exportedSymbols":{"ISuperApp":[6577],"ISuperToken":[7015]},"id":6578,"license":"AGPLv3","nodeType":"SourceUnit","nodes":[{"id":6465,"literals":["solidity",">=","0.8",".4"],"nodeType":"PragmaDirective","src":"35:25:14"},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.sol","file":"./ISuperToken.sol","id":6467,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":6578,"sourceUnit":7016,"src":"62:48:14","symbolAliases":[{"foreign":{"id":6466,"name":"ISuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7015,"src":"71:11:14","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"ISuperApp","contractDependencies":[],"contractKind":"interface","documentation":{"id":6468,"nodeType":"StructuredDocumentation","src":"112:133:14","text":" @title SuperApp interface\n @author Superfluid\n @dev Be aware of the app being jailed, when the word permitted is used."},"fullyImplemented":false,"id":6577,"linearizedBaseContracts":[6577],"name":"ISuperApp","nameLocation":"256:9:14","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":6469,"nodeType":"StructuredDocumentation","src":"273:630:14","text":" @dev Callback before a new agreement is created.\n @param superToken The super token used for the agreement.\n @param agreementClass The agreement class address.\n @param agreementId The agreementId\n @param agreementData The agreement data (non-compressed)\n @param ctx The context data.\n @return cbdata A free format in memory data the app can use to pass\n arbitary information to the after-hook callback.\n @custom:note \n - It will be invoked with `staticcall`, no state changes are permitted.\n - Only revert with a \"reason\" is permitted."},"functionSelector":"30d9c915","id":6485,"implemented":false,"kind":"function","modifiers":[],"name":"beforeAgreementCreated","nameLocation":"917:22:14","nodeType":"FunctionDefinition","parameters":{"id":6481,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6472,"mutability":"mutable","name":"superToken","nameLocation":"961:10:14","nodeType":"VariableDeclaration","scope":6485,"src":"949:22:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":6471,"nodeType":"UserDefinedTypeName","pathNode":{"id":6470,"name":"ISuperToken","nameLocations":["949:11:14"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"949:11:14"},"referencedDeclaration":7015,"src":"949:11:14","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":6474,"mutability":"mutable","name":"agreementClass","nameLocation":"989:14:14","nodeType":"VariableDeclaration","scope":6485,"src":"981:22:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6473,"name":"address","nodeType":"ElementaryTypeName","src":"981:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6476,"mutability":"mutable","name":"agreementId","nameLocation":"1021:11:14","nodeType":"VariableDeclaration","scope":6485,"src":"1013:19:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6475,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1013:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":6478,"mutability":"mutable","name":"agreementData","nameLocation":"1057:13:14","nodeType":"VariableDeclaration","scope":6485,"src":"1042:28:14","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6477,"name":"bytes","nodeType":"ElementaryTypeName","src":"1042:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":6480,"mutability":"mutable","name":"ctx","nameLocation":"1095:3:14","nodeType":"VariableDeclaration","scope":6485,"src":"1080:18:14","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6479,"name":"bytes","nodeType":"ElementaryTypeName","src":"1080:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"939:165:14"},"returnParameters":{"id":6484,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6483,"mutability":"mutable","name":"cbdata","nameLocation":"1165:6:14","nodeType":"VariableDeclaration","scope":6485,"src":"1152:19:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6482,"name":"bytes","nodeType":"ElementaryTypeName","src":"1152:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1151:21:14"},"scope":6577,"src":"908:265:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":6486,"nodeType":"StructuredDocumentation","src":"1179:579:14","text":" @dev Callback after a new agreement is created.\n @param superToken The super token used for the agreement.\n @param agreementClass The agreement class address.\n @param agreementId The agreementId\n @param agreementData The agreement data (non-compressed)\n @param cbdata The data returned from the before-hook callback.\n @param ctx The context data.\n @return newCtx The current context of the transaction.\n @custom:note \n - State changes is permitted.\n - Only revert with a \"reason\" is permitted."},"functionSelector":"d86ed3e5","id":6504,"implemented":false,"kind":"function","modifiers":[],"name":"afterAgreementCreated","nameLocation":"1772:21:14","nodeType":"FunctionDefinition","parameters":{"id":6500,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6489,"mutability":"mutable","name":"superToken","nameLocation":"1815:10:14","nodeType":"VariableDeclaration","scope":6504,"src":"1803:22:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":6488,"nodeType":"UserDefinedTypeName","pathNode":{"id":6487,"name":"ISuperToken","nameLocations":["1803:11:14"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"1803:11:14"},"referencedDeclaration":7015,"src":"1803:11:14","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":6491,"mutability":"mutable","name":"agreementClass","nameLocation":"1843:14:14","nodeType":"VariableDeclaration","scope":6504,"src":"1835:22:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6490,"name":"address","nodeType":"ElementaryTypeName","src":"1835:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6493,"mutability":"mutable","name":"agreementId","nameLocation":"1875:11:14","nodeType":"VariableDeclaration","scope":6504,"src":"1867:19:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6492,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1867:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":6495,"mutability":"mutable","name":"agreementData","nameLocation":"1911:13:14","nodeType":"VariableDeclaration","scope":6504,"src":"1896:28:14","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6494,"name":"bytes","nodeType":"ElementaryTypeName","src":"1896:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":6497,"mutability":"mutable","name":"cbdata","nameLocation":"1949:6:14","nodeType":"VariableDeclaration","scope":6504,"src":"1934:21:14","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6496,"name":"bytes","nodeType":"ElementaryTypeName","src":"1934:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":6499,"mutability":"mutable","name":"ctx","nameLocation":"1980:3:14","nodeType":"VariableDeclaration","scope":6504,"src":"1965:18:14","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6498,"name":"bytes","nodeType":"ElementaryTypeName","src":"1965:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1793:196:14"},"returnParameters":{"id":6503,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6502,"mutability":"mutable","name":"newCtx","nameLocation":"2037:6:14","nodeType":"VariableDeclaration","scope":6504,"src":"2024:19:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6501,"name":"bytes","nodeType":"ElementaryTypeName","src":"2024:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2023:21:14"},"scope":6577,"src":"1763:282:14","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6505,"nodeType":"StructuredDocumentation","src":"2051:630:14","text":" @dev Callback before a new agreement is updated.\n @param superToken The super token used for the agreement.\n @param agreementClass The agreement class address.\n @param agreementId The agreementId\n @param agreementData The agreement data (non-compressed)\n @param ctx The context data.\n @return cbdata A free format in memory data the app can use to pass\n arbitary information to the after-hook callback.\n @custom:note \n - It will be invoked with `staticcall`, no state changes are permitted.\n - Only revert with a \"reason\" is permitted."},"functionSelector":"884d1f40","id":6521,"implemented":false,"kind":"function","modifiers":[],"name":"beforeAgreementUpdated","nameLocation":"2695:22:14","nodeType":"FunctionDefinition","parameters":{"id":6517,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6508,"mutability":"mutable","name":"superToken","nameLocation":"2739:10:14","nodeType":"VariableDeclaration","scope":6521,"src":"2727:22:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":6507,"nodeType":"UserDefinedTypeName","pathNode":{"id":6506,"name":"ISuperToken","nameLocations":["2727:11:14"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"2727:11:14"},"referencedDeclaration":7015,"src":"2727:11:14","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":6510,"mutability":"mutable","name":"agreementClass","nameLocation":"2767:14:14","nodeType":"VariableDeclaration","scope":6521,"src":"2759:22:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6509,"name":"address","nodeType":"ElementaryTypeName","src":"2759:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6512,"mutability":"mutable","name":"agreementId","nameLocation":"2799:11:14","nodeType":"VariableDeclaration","scope":6521,"src":"2791:19:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6511,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2791:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":6514,"mutability":"mutable","name":"agreementData","nameLocation":"2835:13:14","nodeType":"VariableDeclaration","scope":6521,"src":"2820:28:14","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6513,"name":"bytes","nodeType":"ElementaryTypeName","src":"2820:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":6516,"mutability":"mutable","name":"ctx","nameLocation":"2873:3:14","nodeType":"VariableDeclaration","scope":6521,"src":"2858:18:14","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6515,"name":"bytes","nodeType":"ElementaryTypeName","src":"2858:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2717:165:14"},"returnParameters":{"id":6520,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6519,"mutability":"mutable","name":"cbdata","nameLocation":"2943:6:14","nodeType":"VariableDeclaration","scope":6521,"src":"2930:19:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6518,"name":"bytes","nodeType":"ElementaryTypeName","src":"2930:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2929:21:14"},"scope":6577,"src":"2686:265:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":6522,"nodeType":"StructuredDocumentation","src":"2958:566:14","text":" @dev Callback after a new agreement is updated.\n @param superToken The super token used for the agreement.\n @param agreementClass The agreement class address.\n @param agreementId The agreementId\n @param agreementData The agreement data (non-compressed)\n @param cbdata The data returned from the before-hook callback.\n @param ctx The context data.\n @return newCtx The current context of the transaction.\n @custom:note \n - State changes is permitted.\n - Only revert with a \"reason\" is permitted."},"functionSelector":"230dbd29","id":6540,"implemented":false,"kind":"function","modifiers":[],"name":"afterAgreementUpdated","nameLocation":"3538:21:14","nodeType":"FunctionDefinition","parameters":{"id":6536,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6525,"mutability":"mutable","name":"superToken","nameLocation":"3581:10:14","nodeType":"VariableDeclaration","scope":6540,"src":"3569:22:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":6524,"nodeType":"UserDefinedTypeName","pathNode":{"id":6523,"name":"ISuperToken","nameLocations":["3569:11:14"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"3569:11:14"},"referencedDeclaration":7015,"src":"3569:11:14","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":6527,"mutability":"mutable","name":"agreementClass","nameLocation":"3609:14:14","nodeType":"VariableDeclaration","scope":6540,"src":"3601:22:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6526,"name":"address","nodeType":"ElementaryTypeName","src":"3601:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6529,"mutability":"mutable","name":"agreementId","nameLocation":"3641:11:14","nodeType":"VariableDeclaration","scope":6540,"src":"3633:19:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6528,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3633:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":6531,"mutability":"mutable","name":"agreementData","nameLocation":"3677:13:14","nodeType":"VariableDeclaration","scope":6540,"src":"3662:28:14","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6530,"name":"bytes","nodeType":"ElementaryTypeName","src":"3662:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":6533,"mutability":"mutable","name":"cbdata","nameLocation":"3715:6:14","nodeType":"VariableDeclaration","scope":6540,"src":"3700:21:14","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6532,"name":"bytes","nodeType":"ElementaryTypeName","src":"3700:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":6535,"mutability":"mutable","name":"ctx","nameLocation":"3746:3:14","nodeType":"VariableDeclaration","scope":6540,"src":"3731:18:14","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6534,"name":"bytes","nodeType":"ElementaryTypeName","src":"3731:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3559:196:14"},"returnParameters":{"id":6539,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6538,"mutability":"mutable","name":"newCtx","nameLocation":"3803:6:14","nodeType":"VariableDeclaration","scope":6540,"src":"3790:19:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6537,"name":"bytes","nodeType":"ElementaryTypeName","src":"3790:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3789:21:14"},"scope":6577,"src":"3529:282:14","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6541,"nodeType":"StructuredDocumentation","src":"3817:588:14","text":" @dev Callback before a new agreement is terminated.\n @param superToken The super token used for the agreement.\n @param agreementClass The agreement class address.\n @param agreementId The agreementId\n @param agreementData The agreement data (non-compressed)\n @param ctx The context data.\n @return cbdata A free format in memory data the app can use to pass arbitary information to the after-hook callback.\n @custom:note \n - It will be invoked with `staticcall`, no state changes are permitted.\n - Revert is not permitted."},"functionSelector":"5f9e7d77","id":6557,"implemented":false,"kind":"function","modifiers":[],"name":"beforeAgreementTerminated","nameLocation":"4419:25:14","nodeType":"FunctionDefinition","parameters":{"id":6553,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6544,"mutability":"mutable","name":"superToken","nameLocation":"4466:10:14","nodeType":"VariableDeclaration","scope":6557,"src":"4454:22:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":6543,"nodeType":"UserDefinedTypeName","pathNode":{"id":6542,"name":"ISuperToken","nameLocations":["4454:11:14"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"4454:11:14"},"referencedDeclaration":7015,"src":"4454:11:14","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":6546,"mutability":"mutable","name":"agreementClass","nameLocation":"4494:14:14","nodeType":"VariableDeclaration","scope":6557,"src":"4486:22:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6545,"name":"address","nodeType":"ElementaryTypeName","src":"4486:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6548,"mutability":"mutable","name":"agreementId","nameLocation":"4526:11:14","nodeType":"VariableDeclaration","scope":6557,"src":"4518:19:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6547,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4518:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":6550,"mutability":"mutable","name":"agreementData","nameLocation":"4562:13:14","nodeType":"VariableDeclaration","scope":6557,"src":"4547:28:14","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6549,"name":"bytes","nodeType":"ElementaryTypeName","src":"4547:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":6552,"mutability":"mutable","name":"ctx","nameLocation":"4600:3:14","nodeType":"VariableDeclaration","scope":6557,"src":"4585:18:14","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6551,"name":"bytes","nodeType":"ElementaryTypeName","src":"4585:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4444:165:14"},"returnParameters":{"id":6556,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6555,"mutability":"mutable","name":"cbdata","nameLocation":"4670:6:14","nodeType":"VariableDeclaration","scope":6557,"src":"4657:19:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6554,"name":"bytes","nodeType":"ElementaryTypeName","src":"4657:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4656:21:14"},"scope":6577,"src":"4410:268:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":6558,"nodeType":"StructuredDocumentation","src":"4684:552:14","text":" @dev Callback after a new agreement is terminated.\n @param superToken The super token used for the agreement.\n @param agreementClass The agreement class address.\n @param agreementId The agreementId\n @param agreementData The agreement data (non-compressed)\n @param cbdata The data returned from the before-hook callback.\n @param ctx The context data.\n @return newCtx The current context of the transaction.\n @custom:note \n - State changes is permitted.\n - Revert is not permitted."},"functionSelector":"53c11f99","id":6576,"implemented":false,"kind":"function","modifiers":[],"name":"afterAgreementTerminated","nameLocation":"5250:24:14","nodeType":"FunctionDefinition","parameters":{"id":6572,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6561,"mutability":"mutable","name":"superToken","nameLocation":"5296:10:14","nodeType":"VariableDeclaration","scope":6576,"src":"5284:22:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":6560,"nodeType":"UserDefinedTypeName","pathNode":{"id":6559,"name":"ISuperToken","nameLocations":["5284:11:14"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"5284:11:14"},"referencedDeclaration":7015,"src":"5284:11:14","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":6563,"mutability":"mutable","name":"agreementClass","nameLocation":"5324:14:14","nodeType":"VariableDeclaration","scope":6576,"src":"5316:22:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6562,"name":"address","nodeType":"ElementaryTypeName","src":"5316:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6565,"mutability":"mutable","name":"agreementId","nameLocation":"5356:11:14","nodeType":"VariableDeclaration","scope":6576,"src":"5348:19:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":6564,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5348:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":6567,"mutability":"mutable","name":"agreementData","nameLocation":"5392:13:14","nodeType":"VariableDeclaration","scope":6576,"src":"5377:28:14","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6566,"name":"bytes","nodeType":"ElementaryTypeName","src":"5377:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":6569,"mutability":"mutable","name":"cbdata","nameLocation":"5430:6:14","nodeType":"VariableDeclaration","scope":6576,"src":"5415:21:14","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6568,"name":"bytes","nodeType":"ElementaryTypeName","src":"5415:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":6571,"mutability":"mutable","name":"ctx","nameLocation":"5461:3:14","nodeType":"VariableDeclaration","scope":6576,"src":"5446:18:14","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6570,"name":"bytes","nodeType":"ElementaryTypeName","src":"5446:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5274:196:14"},"returnParameters":{"id":6575,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6574,"mutability":"mutable","name":"newCtx","nameLocation":"5518:6:14","nodeType":"VariableDeclaration","scope":6576,"src":"5505:19:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6573,"name":"bytes","nodeType":"ElementaryTypeName","src":"5505:5:14","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5504:21:14"},"scope":6577,"src":"5241:285:14","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":6578,"src":"246:5282:14","usedErrors":[]}],"src":"35:5494:14"},"id":14},"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.sol":{"ast":{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.sol","exportedSymbols":{"IERC20":[145],"IERC777":[625],"ISuperToken":[7015],"ISuperfluid":[7667],"ISuperfluidToken":[8082],"TokenInfo":[8116]},"id":7016,"license":"AGPLv3","nodeType":"SourceUnit","nodes":[{"id":6579,"literals":["solidity",">=","0.8",".4"],"nodeType":"PragmaDirective","src":"35:25:15"},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol","file":"./ISuperfluid.sol","id":6581,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7016,"sourceUnit":7668,"src":"62:48:15","symbolAliases":[{"foreign":{"id":6580,"name":"ISuperfluid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7667,"src":"71:11:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol","file":"./ISuperfluidToken.sol","id":6583,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7016,"sourceUnit":8083,"src":"111:58:15","symbolAliases":[{"foreign":{"id":6582,"name":"ISuperfluidToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8082,"src":"120:16:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.sol","file":"../tokens/TokenInfo.sol","id":6585,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7016,"sourceUnit":8117,"src":"170:52:15","symbolAliases":[{"foreign":{"id":6584,"name":"TokenInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8116,"src":"179:9:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC777/IERC777.sol","file":"@openzeppelin/contracts/token/ERC777/IERC777.sol","id":6587,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7016,"sourceUnit":626,"src":"223:75:15","symbolAliases":[{"foreign":{"id":6586,"name":"IERC777","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":625,"src":"232:7:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":6589,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7016,"sourceUnit":146,"src":"299:72:15","symbolAliases":[{"foreign":{"id":6588,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":145,"src":"308:6:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":6591,"name":"ISuperfluidToken","nameLocations":["496:16:15"],"nodeType":"IdentifierPath","referencedDeclaration":8082,"src":"496:16:15"},"id":6592,"nodeType":"InheritanceSpecifier","src":"496:16:15"},{"baseName":{"id":6593,"name":"TokenInfo","nameLocations":["514:9:15"],"nodeType":"IdentifierPath","referencedDeclaration":8116,"src":"514:9:15"},"id":6594,"nodeType":"InheritanceSpecifier","src":"514:9:15"},{"baseName":{"id":6595,"name":"IERC20","nameLocations":["525:6:15"],"nodeType":"IdentifierPath","referencedDeclaration":145,"src":"525:6:15"},"id":6596,"nodeType":"InheritanceSpecifier","src":"525:6:15"},{"baseName":{"id":6597,"name":"IERC777","nameLocations":["533:7:15"],"nodeType":"IdentifierPath","referencedDeclaration":625,"src":"533:7:15"},"id":6598,"nodeType":"InheritanceSpecifier","src":"533:7:15"}],"canonicalName":"ISuperToken","contractDependencies":[],"contractKind":"interface","documentation":{"id":6590,"nodeType":"StructuredDocumentation","src":"373:97:15","text":" @title Super token (Superfluid Token + ERC20 + ERC777) interface\n @author Superfluid"},"fullyImplemented":false,"id":7015,"linearizedBaseContracts":[7015,625,145,8116,8082],"name":"ISuperToken","nameLocation":"481:11:15","nodeType":"ContractDefinition","nodes":[{"errorSelector":"f7f02227","id":6600,"name":"SUPER_TOKEN_CALLER_IS_NOT_OPERATOR_FOR_HOLDER","nameLocation":"728:45:15","nodeType":"ErrorDefinition","parameters":{"id":6599,"nodeType":"ParameterList","parameters":[],"src":"773:2:15"},"src":"722:54:15"},{"errorSelector":"fe737d05","id":6602,"name":"SUPER_TOKEN_NOT_ERC777_TOKENS_RECIPIENT","nameLocation":"807:39:15","nodeType":"ErrorDefinition","parameters":{"id":6601,"nodeType":"ParameterList","parameters":[],"src":"846:2:15"},"src":"801:48:15"},{"errorSelector":"e3e13698","id":6604,"name":"SUPER_TOKEN_INFLATIONARY_DEFLATIONARY_NOT_SUPPORTED","nameLocation":"886:51:15","nodeType":"ErrorDefinition","parameters":{"id":6603,"nodeType":"ParameterList","parameters":[],"src":"937:2:15"},"src":"880:60:15"},{"errorSelector":"f79cf656","id":6606,"name":"SUPER_TOKEN_NO_UNDERLYING_TOKEN","nameLocation":"965:31:15","nodeType":"ErrorDefinition","parameters":{"id":6605,"nodeType":"ParameterList","parameters":[],"src":"996:2:15"},"src":"959:40:15"},{"errorSelector":"7ffa6648","id":6608,"name":"SUPER_TOKEN_ONLY_SELF","nameLocation":"1044:21:15","nodeType":"ErrorDefinition","parameters":{"id":6607,"nodeType":"ParameterList","parameters":[],"src":"1065:2:15"},"src":"1038:30:15"},{"errorSelector":"98f73704","id":6610,"name":"SUPER_TOKEN_ONLY_HOST","nameLocation":"1123:21:15","nodeType":"ErrorDefinition","parameters":{"id":6609,"nodeType":"ParameterList","parameters":[],"src":"1144:2:15"},"src":"1117:30:15"},{"errorSelector":"81638627","id":6612,"name":"SUPER_TOKEN_APPROVE_FROM_ZERO_ADDRESS","nameLocation":"1202:37:15","nodeType":"ErrorDefinition","parameters":{"id":6611,"nodeType":"ParameterList","parameters":[],"src":"1239:2:15"},"src":"1196:46:15"},{"errorSelector":"df070274","id":6614,"name":"SUPER_TOKEN_APPROVE_TO_ZERO_ADDRESS","nameLocation":"1281:35:15","nodeType":"ErrorDefinition","parameters":{"id":6613,"nodeType":"ParameterList","parameters":[],"src":"1316:2:15"},"src":"1275:44:15"},{"errorSelector":"ba2ab184","id":6616,"name":"SUPER_TOKEN_BURN_FROM_ZERO_ADDRESS","nameLocation":"1360:34:15","nodeType":"ErrorDefinition","parameters":{"id":6615,"nodeType":"ParameterList","parameters":[],"src":"1394:2:15"},"src":"1354:43:15"},{"errorSelector":"0d243157","id":6618,"name":"SUPER_TOKEN_MINT_TO_ZERO_ADDRESS","nameLocation":"1439:32:15","nodeType":"ErrorDefinition","parameters":{"id":6617,"nodeType":"ParameterList","parameters":[],"src":"1471:2:15"},"src":"1433:41:15"},{"errorSelector":"eecd6c9b","id":6620,"name":"SUPER_TOKEN_TRANSFER_FROM_ZERO_ADDRESS","nameLocation":"1518:38:15","nodeType":"ErrorDefinition","parameters":{"id":6619,"nodeType":"ParameterList","parameters":[],"src":"1556:2:15"},"src":"1512:47:15"},{"errorSelector":"e219bd39","id":6622,"name":"SUPER_TOKEN_TRANSFER_TO_ZERO_ADDRESS","nameLocation":"1597:36:15","nodeType":"ErrorDefinition","parameters":{"id":6621,"nodeType":"ParameterList","parameters":[],"src":"1633:2:15"},"src":"1591:45:15"},{"documentation":{"id":6623,"nodeType":"StructuredDocumentation","src":"1671:47:15","text":" @dev Initialize the contract"},"functionSelector":"42fe0980","id":6635,"implemented":false,"kind":"function","modifiers":[],"name":"initialize","nameLocation":"1732:10:15","nodeType":"FunctionDefinition","parameters":{"id":6633,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6626,"mutability":"mutable","name":"underlyingToken","nameLocation":"1759:15:15","nodeType":"VariableDeclaration","scope":6635,"src":"1752:22:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$145","typeString":"contract IERC20"},"typeName":{"id":6625,"nodeType":"UserDefinedTypeName","pathNode":{"id":6624,"name":"IERC20","nameLocations":["1752:6:15"],"nodeType":"IdentifierPath","referencedDeclaration":145,"src":"1752:6:15"},"referencedDeclaration":145,"src":"1752:6:15","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$145","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":6628,"mutability":"mutable","name":"underlyingDecimals","nameLocation":"1790:18:15","nodeType":"VariableDeclaration","scope":6635,"src":"1784:24:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6627,"name":"uint8","nodeType":"ElementaryTypeName","src":"1784:5:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":6630,"mutability":"mutable","name":"n","nameLocation":"1834:1:15","nodeType":"VariableDeclaration","scope":6635,"src":"1818:17:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":6629,"name":"string","nodeType":"ElementaryTypeName","src":"1818:6:15","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":6632,"mutability":"mutable","name":"s","nameLocation":"1861:1:15","nodeType":"VariableDeclaration","scope":6635,"src":"1845:17:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":6631,"name":"string","nodeType":"ElementaryTypeName","src":"1845:6:15","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1742:126:15"},"returnParameters":{"id":6634,"nodeType":"ParameterList","parameters":[],"src":"1877:0:15"},"scope":7015,"src":"1723:155:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[511,8103],"documentation":{"id":6636,"nodeType":"StructuredDocumentation","src":"2069:54:15","text":" @dev Returns the name of the token."},"functionSelector":"06fdde03","id":6644,"implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"2137:4:15","nodeType":"FunctionDefinition","overrides":{"id":6640,"nodeType":"OverrideSpecifier","overrides":[{"id":6638,"name":"IERC777","nameLocations":["2167:7:15"],"nodeType":"IdentifierPath","referencedDeclaration":625,"src":"2167:7:15"},{"id":6639,"name":"TokenInfo","nameLocations":["2176:9:15"],"nodeType":"IdentifierPath","referencedDeclaration":8116,"src":"2176:9:15"}],"src":"2158:28:15"},"parameters":{"id":6637,"nodeType":"ParameterList","parameters":[],"src":"2141:2:15"},"returnParameters":{"id":6643,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6642,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6644,"src":"2196:13:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6641,"name":"string","nodeType":"ElementaryTypeName","src":"2196:6:15","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2195:15:15"},"scope":7015,"src":"2128:83:15","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[517,8109],"documentation":{"id":6645,"nodeType":"StructuredDocumentation","src":"2217:102:15","text":" @dev Returns the symbol of the token, usually a shorter version of the\n name."},"functionSelector":"95d89b41","id":6653,"implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"2333:6:15","nodeType":"FunctionDefinition","overrides":{"id":6649,"nodeType":"OverrideSpecifier","overrides":[{"id":6647,"name":"IERC777","nameLocations":["2365:7:15"],"nodeType":"IdentifierPath","referencedDeclaration":625,"src":"2365:7:15"},{"id":6648,"name":"TokenInfo","nameLocations":["2374:9:15"],"nodeType":"IdentifierPath","referencedDeclaration":8116,"src":"2374:9:15"}],"src":"2356:28:15"},"parameters":{"id":6646,"nodeType":"ParameterList","parameters":[],"src":"2339:2:15"},"returnParameters":{"id":6652,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6651,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6653,"src":"2394:13:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":6650,"name":"string","nodeType":"ElementaryTypeName","src":"2394:6:15","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2393:15:15"},"scope":7015,"src":"2324:85:15","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[8115],"documentation":{"id":6654,"nodeType":"StructuredDocumentation","src":"2415:669:15","text":" @dev Returns the number of decimals used to get its user representation.\n For example, if `decimals` equals `2`, a balance of `505` tokens should\n be displayed to a user as `5,05` (`505 / 10 ** 2`).\n Tokens usually opt for a value of 18, imitating the relationship between\n Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is\n called.\n @custom:note SuperToken always uses 18 decimals.\n This information is only used for _display_ purposes: it in\n no way affects any of the arithmetic of the contract, including\n {IERC20-balanceOf} and {IERC20-transfer}."},"functionSelector":"313ce567","id":6661,"implemented":false,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"3098:8:15","nodeType":"FunctionDefinition","overrides":{"id":6657,"nodeType":"OverrideSpecifier","overrides":[{"id":6656,"name":"TokenInfo","nameLocations":["3132:9:15"],"nodeType":"IdentifierPath","referencedDeclaration":8116,"src":"3132:9:15"}],"src":"3123:19:15"},"parameters":{"id":6655,"nodeType":"ParameterList","parameters":[],"src":"3106:2:15"},"returnParameters":{"id":6660,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6659,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6661,"src":"3152:5:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6658,"name":"uint8","nodeType":"ElementaryTypeName","src":"3152:5:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"3151:7:15"},"scope":7015,"src":"3089:70:15","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[94,529],"documentation":{"id":6662,"nodeType":"StructuredDocumentation","src":"3346:49:15","text":" @dev See {IERC20-totalSupply}."},"functionSelector":"18160ddd","id":6670,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"3409:11:15","nodeType":"FunctionDefinition","overrides":{"id":6666,"nodeType":"OverrideSpecifier","overrides":[{"id":6664,"name":"IERC777","nameLocations":["3446:7:15"],"nodeType":"IdentifierPath","referencedDeclaration":625,"src":"3446:7:15"},{"id":6665,"name":"IERC20","nameLocations":["3455:6:15"],"nodeType":"IdentifierPath","referencedDeclaration":145,"src":"3455:6:15"}],"src":"3437:25:15"},"parameters":{"id":6663,"nodeType":"ParameterList","parameters":[],"src":"3420:2:15"},"returnParameters":{"id":6669,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6668,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6670,"src":"3472:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6667,"name":"uint256","nodeType":"ElementaryTypeName","src":"3472:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3471:9:15"},"scope":7015,"src":"3400:81:15","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[102,537],"documentation":{"id":6671,"nodeType":"StructuredDocumentation","src":"3487:83:15","text":" @dev Returns the amount of tokens owned by an account (`owner`)."},"functionSelector":"70a08231","id":6681,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"3584:9:15","nodeType":"FunctionDefinition","overrides":{"id":6677,"nodeType":"OverrideSpecifier","overrides":[{"id":6675,"name":"IERC777","nameLocations":["3634:7:15"],"nodeType":"IdentifierPath","referencedDeclaration":625,"src":"3634:7:15"},{"id":6676,"name":"IERC20","nameLocations":["3643:6:15"],"nodeType":"IdentifierPath","referencedDeclaration":145,"src":"3643:6:15"}],"src":"3625:25:15"},"parameters":{"id":6674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6673,"mutability":"mutable","name":"account","nameLocation":"3602:7:15","nodeType":"VariableDeclaration","scope":6681,"src":"3594:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6672,"name":"address","nodeType":"ElementaryTypeName","src":"3594:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3593:17:15"},"returnParameters":{"id":6680,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6679,"mutability":"mutable","name":"balance","nameLocation":"3667:7:15","nodeType":"VariableDeclaration","scope":6681,"src":"3659:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6678,"name":"uint256","nodeType":"ElementaryTypeName","src":"3659:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3658:17:15"},"scope":7015,"src":"3575:101:15","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[112],"documentation":{"id":6682,"nodeType":"StructuredDocumentation","src":"3854:233:15","text":" @dev Moves `amount` tokens from the caller's account to `recipient`.\n @return Returns Success a boolean value indicating whether the operation succeeded.\n @custom:emits a {Transfer} event."},"functionSelector":"a9059cbb","id":6693,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"4101:8:15","nodeType":"FunctionDefinition","overrides":{"id":6689,"nodeType":"OverrideSpecifier","overrides":[{"id":6688,"name":"IERC20","nameLocations":["4163:6:15"],"nodeType":"IdentifierPath","referencedDeclaration":145,"src":"4163:6:15"}],"src":"4154:16:15"},"parameters":{"id":6687,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6684,"mutability":"mutable","name":"recipient","nameLocation":"4118:9:15","nodeType":"VariableDeclaration","scope":6693,"src":"4110:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6683,"name":"address","nodeType":"ElementaryTypeName","src":"4110:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6686,"mutability":"mutable","name":"amount","nameLocation":"4137:6:15","nodeType":"VariableDeclaration","scope":6693,"src":"4129:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6685,"name":"uint256","nodeType":"ElementaryTypeName","src":"4129:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4109:35:15"},"returnParameters":{"id":6692,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6691,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6693,"src":"4180:4:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6690,"name":"bool","nodeType":"ElementaryTypeName","src":"4180:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4179:6:15"},"scope":7015,"src":"4092:94:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[122],"documentation":{"id":6694,"nodeType":"StructuredDocumentation","src":"4192:288:15","text":" @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n @notice This value changes when {approve} or {transferFrom} are called."},"functionSelector":"dd62ed3e","id":6705,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"4494:9:15","nodeType":"FunctionDefinition","overrides":{"id":6701,"nodeType":"OverrideSpecifier","overrides":[{"id":6700,"name":"IERC20","nameLocations":["4554:6:15"],"nodeType":"IdentifierPath","referencedDeclaration":145,"src":"4554:6:15"}],"src":"4545:16:15"},"parameters":{"id":6699,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6696,"mutability":"mutable","name":"owner","nameLocation":"4512:5:15","nodeType":"VariableDeclaration","scope":6705,"src":"4504:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6695,"name":"address","nodeType":"ElementaryTypeName","src":"4504:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6698,"mutability":"mutable","name":"spender","nameLocation":"4527:7:15","nodeType":"VariableDeclaration","scope":6705,"src":"4519:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6697,"name":"address","nodeType":"ElementaryTypeName","src":"4519:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4503:32:15"},"returnParameters":{"id":6704,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6703,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6705,"src":"4576:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6702,"name":"uint256","nodeType":"ElementaryTypeName","src":"4576:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4575:9:15"},"scope":7015,"src":"4485:100:15","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[132],"documentation":{"id":6706,"nodeType":"StructuredDocumentation","src":"4591:668:15","text":" @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n @return Returns Success a boolean value indicating whether the operation succeeded.\n @custom:note Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n @custom:emits an {Approval} event."},"functionSelector":"095ea7b3","id":6717,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"5273:7:15","nodeType":"FunctionDefinition","overrides":{"id":6713,"nodeType":"OverrideSpecifier","overrides":[{"id":6712,"name":"IERC20","nameLocations":["5332:6:15"],"nodeType":"IdentifierPath","referencedDeclaration":145,"src":"5332:6:15"}],"src":"5323:16:15"},"parameters":{"id":6711,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6708,"mutability":"mutable","name":"spender","nameLocation":"5289:7:15","nodeType":"VariableDeclaration","scope":6717,"src":"5281:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6707,"name":"address","nodeType":"ElementaryTypeName","src":"5281:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6710,"mutability":"mutable","name":"amount","nameLocation":"5306:6:15","nodeType":"VariableDeclaration","scope":6717,"src":"5298:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6709,"name":"uint256","nodeType":"ElementaryTypeName","src":"5298:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5280:33:15"},"returnParameters":{"id":6716,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6715,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6717,"src":"5349:4:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6714,"name":"bool","nodeType":"ElementaryTypeName","src":"5349:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5348:6:15"},"scope":7015,"src":"5264:91:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[144],"documentation":{"id":6718,"nodeType":"StructuredDocumentation","src":"5361:336:15","text":" @dev Moves `amount` tokens from `sender` to `recipient` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n @return Returns Success a boolean value indicating whether the operation succeeded.\n @custom:emits a {Transfer} event."},"functionSelector":"23b872dd","id":6731,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"5711:12:15","nodeType":"FunctionDefinition","overrides":{"id":6727,"nodeType":"OverrideSpecifier","overrides":[{"id":6726,"name":"IERC20","nameLocations":["5793:6:15"],"nodeType":"IdentifierPath","referencedDeclaration":145,"src":"5793:6:15"}],"src":"5784:16:15"},"parameters":{"id":6725,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6720,"mutability":"mutable","name":"sender","nameLocation":"5732:6:15","nodeType":"VariableDeclaration","scope":6731,"src":"5724:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6719,"name":"address","nodeType":"ElementaryTypeName","src":"5724:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6722,"mutability":"mutable","name":"recipient","nameLocation":"5748:9:15","nodeType":"VariableDeclaration","scope":6731,"src":"5740:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6721,"name":"address","nodeType":"ElementaryTypeName","src":"5740:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6724,"mutability":"mutable","name":"amount","nameLocation":"5767:6:15","nodeType":"VariableDeclaration","scope":6731,"src":"5759:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6723,"name":"uint256","nodeType":"ElementaryTypeName","src":"5759:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5723:51:15"},"returnParameters":{"id":6730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6729,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6731,"src":"5810:4:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6728,"name":"bool","nodeType":"ElementaryTypeName","src":"5810:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5809:6:15"},"scope":7015,"src":"5702:114:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6732,"nodeType":"StructuredDocumentation","src":"5822:393:15","text":" @dev Atomically increases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n @custom:emits an {Approval} event indicating the updated allowance.\n @custom:requirements \n - `spender` cannot be the zero address."},"functionSelector":"39509351","id":6741,"implemented":false,"kind":"function","modifiers":[],"name":"increaseAllowance","nameLocation":"6229:17:15","nodeType":"FunctionDefinition","parameters":{"id":6737,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6734,"mutability":"mutable","name":"spender","nameLocation":"6255:7:15","nodeType":"VariableDeclaration","scope":6741,"src":"6247:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6733,"name":"address","nodeType":"ElementaryTypeName","src":"6247:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6736,"mutability":"mutable","name":"addedValue","nameLocation":"6272:10:15","nodeType":"VariableDeclaration","scope":6741,"src":"6264:18:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6735,"name":"uint256","nodeType":"ElementaryTypeName","src":"6264:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6246:37:15"},"returnParameters":{"id":6740,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6739,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6741,"src":"6302:4:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6738,"name":"bool","nodeType":"ElementaryTypeName","src":"6302:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6301:6:15"},"scope":7015,"src":"6220:88:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6742,"nodeType":"StructuredDocumentation","src":"6314:485:15","text":" @dev Atomically decreases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n @custom:emits an {Approval} event indicating the updated allowance.\n @custom:requirements \n - `spender` cannot be the zero address.\n - `spender` must have allowance for the caller of at least\n `subtractedValue`."},"functionSelector":"a457c2d7","id":6751,"implemented":false,"kind":"function","modifiers":[],"name":"decreaseAllowance","nameLocation":"6814:17:15","nodeType":"FunctionDefinition","parameters":{"id":6747,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6744,"mutability":"mutable","name":"spender","nameLocation":"6840:7:15","nodeType":"VariableDeclaration","scope":6751,"src":"6832:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6743,"name":"address","nodeType":"ElementaryTypeName","src":"6832:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6746,"mutability":"mutable","name":"subtractedValue","nameLocation":"6857:15:15","nodeType":"VariableDeclaration","scope":6751,"src":"6849:23:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6745,"name":"uint256","nodeType":"ElementaryTypeName","src":"6849:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6831:42:15"},"returnParameters":{"id":6750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6749,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6751,"src":"6892:4:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6748,"name":"bool","nodeType":"ElementaryTypeName","src":"6892:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6891:6:15"},"scope":7015,"src":"6805:93:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[523],"documentation":{"id":6752,"nodeType":"StructuredDocumentation","src":"7077:315:15","text":" @dev Returns the smallest part of the token that is not divisible. This\n means all token operations (creation, movement and destruction) must have\n amounts that are a multiple of this number.\n @custom:note For super token contracts, this value is always 1"},"functionSelector":"556f0dc7","id":6759,"implemented":false,"kind":"function","modifiers":[],"name":"granularity","nameLocation":"7406:11:15","nodeType":"FunctionDefinition","overrides":{"id":6755,"nodeType":"OverrideSpecifier","overrides":[{"id":6754,"name":"IERC777","nameLocations":["7443:7:15"],"nodeType":"IdentifierPath","referencedDeclaration":625,"src":"7443:7:15"}],"src":"7434:17:15"},"parameters":{"id":6753,"nodeType":"ParameterList","parameters":[],"src":"7417:2:15"},"returnParameters":{"id":6758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6757,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6759,"src":"7461:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6756,"name":"uint256","nodeType":"ElementaryTypeName","src":"7461:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7460:9:15"},"scope":7015,"src":"7397:73:15","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[547],"documentation":{"id":6760,"nodeType":"StructuredDocumentation","src":"7476:610:15","text":" @dev Moves `amount` tokens from the caller's account to `recipient`.\n @dev If send or receive hooks are registered for the caller and `recipient`,\n the corresponding functions will be called with `data` and empty\n `operatorData`. See {IERC777Sender} and {IERC777Recipient}.\n @custom:emits a {Sent} event.\n @custom:requirements \n - the caller must have at least `amount` tokens.\n - `recipient` cannot be the zero address.\n - if `recipient` is a contract, it must implement the {IERC777Recipient}\n interface."},"functionSelector":"9bd9bbc6","id":6771,"implemented":false,"kind":"function","modifiers":[],"name":"send","nameLocation":"8100:4:15","nodeType":"FunctionDefinition","overrides":{"id":6769,"nodeType":"OverrideSpecifier","overrides":[{"id":6768,"name":"IERC777","nameLocations":["8179:7:15"],"nodeType":"IdentifierPath","referencedDeclaration":625,"src":"8179:7:15"}],"src":"8170:17:15"},"parameters":{"id":6767,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6762,"mutability":"mutable","name":"recipient","nameLocation":"8113:9:15","nodeType":"VariableDeclaration","scope":6771,"src":"8105:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6761,"name":"address","nodeType":"ElementaryTypeName","src":"8105:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6764,"mutability":"mutable","name":"amount","nameLocation":"8132:6:15","nodeType":"VariableDeclaration","scope":6771,"src":"8124:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6763,"name":"uint256","nodeType":"ElementaryTypeName","src":"8124:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6766,"mutability":"mutable","name":"data","nameLocation":"8155:4:15","nodeType":"VariableDeclaration","scope":6771,"src":"8140:19:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6765,"name":"bytes","nodeType":"ElementaryTypeName","src":"8140:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8104:56:15"},"returnParameters":{"id":6770,"nodeType":"ParameterList","parameters":[],"src":"8187:0:15"},"scope":7015,"src":"8091:97:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[555],"documentation":{"id":6772,"nodeType":"StructuredDocumentation","src":"8194:473:15","text":" @dev Destroys `amount` tokens from the caller's account, reducing the\n total supply and transfers the underlying token to the caller's account.\n If a send hook is registered for the caller, the corresponding function\n will be called with `data` and empty `operatorData`. See {IERC777Sender}.\n @custom:emits a {Burned} event.\n @custom:requirements \n - the caller must have at least `amount` tokens."},"functionSelector":"fe9d9303","id":6781,"implemented":false,"kind":"function","modifiers":[],"name":"burn","nameLocation":"8681:4:15","nodeType":"FunctionDefinition","overrides":{"id":6779,"nodeType":"OverrideSpecifier","overrides":[{"id":6778,"name":"IERC777","nameLocations":["8741:7:15"],"nodeType":"IdentifierPath","referencedDeclaration":625,"src":"8741:7:15"}],"src":"8732:17:15"},"parameters":{"id":6777,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6774,"mutability":"mutable","name":"amount","nameLocation":"8694:6:15","nodeType":"VariableDeclaration","scope":6781,"src":"8686:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6773,"name":"uint256","nodeType":"ElementaryTypeName","src":"8686:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6776,"mutability":"mutable","name":"data","nameLocation":"8717:4:15","nodeType":"VariableDeclaration","scope":6781,"src":"8702:19:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6775,"name":"bytes","nodeType":"ElementaryTypeName","src":"8702:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8685:37:15"},"returnParameters":{"id":6780,"nodeType":"ParameterList","parameters":[],"src":"8749:0:15"},"scope":7015,"src":"8672:78:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[565],"documentation":{"id":6782,"nodeType":"StructuredDocumentation","src":"8756:249:15","text":" @dev Returns true if an account is an operator of `tokenHolder`.\n Operators can send and burn tokens on behalf of their owners. All\n accounts are their own operator.\n See {operatorSend} and {operatorBurn}."},"functionSelector":"d95b6371","id":6793,"implemented":false,"kind":"function","modifiers":[],"name":"isOperatorFor","nameLocation":"9019:13:15","nodeType":"FunctionDefinition","overrides":{"id":6789,"nodeType":"OverrideSpecifier","overrides":[{"id":6788,"name":"IERC777","nameLocations":["9090:7:15"],"nodeType":"IdentifierPath","referencedDeclaration":625,"src":"9090:7:15"}],"src":"9081:17:15"},"parameters":{"id":6787,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6784,"mutability":"mutable","name":"operator","nameLocation":"9041:8:15","nodeType":"VariableDeclaration","scope":6793,"src":"9033:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6783,"name":"address","nodeType":"ElementaryTypeName","src":"9033:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6786,"mutability":"mutable","name":"tokenHolder","nameLocation":"9059:11:15","nodeType":"VariableDeclaration","scope":6793,"src":"9051:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6785,"name":"address","nodeType":"ElementaryTypeName","src":"9051:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9032:39:15"},"returnParameters":{"id":6792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6791,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6793,"src":"9113:4:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6790,"name":"bool","nodeType":"ElementaryTypeName","src":"9113:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"9112:6:15"},"scope":7015,"src":"9010:109:15","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[571],"documentation":{"id":6794,"nodeType":"StructuredDocumentation","src":"9125:243:15","text":" @dev Make an account an operator of the caller.\n See {isOperatorFor}.\n @custom:emits an {AuthorizedOperator} event.\n @custom:requirements \n - `operator` cannot be calling address."},"functionSelector":"959b8c3f","id":6801,"implemented":false,"kind":"function","modifiers":[],"name":"authorizeOperator","nameLocation":"9382:17:15","nodeType":"FunctionDefinition","overrides":{"id":6799,"nodeType":"OverrideSpecifier","overrides":[{"id":6798,"name":"IERC777","nameLocations":["9436:7:15"],"nodeType":"IdentifierPath","referencedDeclaration":625,"src":"9436:7:15"}],"src":"9427:17:15"},"parameters":{"id":6797,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6796,"mutability":"mutable","name":"operator","nameLocation":"9408:8:15","nodeType":"VariableDeclaration","scope":6801,"src":"9400:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6795,"name":"address","nodeType":"ElementaryTypeName","src":"9400:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9399:18:15"},"returnParameters":{"id":6800,"nodeType":"ParameterList","parameters":[],"src":"9444:0:15"},"scope":7015,"src":"9373:72:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[577],"documentation":{"id":6802,"nodeType":"StructuredDocumentation","src":"9451:271:15","text":" @dev Revoke an account's operator status for the caller.\n See {isOperatorFor} and {defaultOperators}.\n @custom:emits a {RevokedOperator} event.\n @custom:requirements \n - `operator` cannot be calling address."},"functionSelector":"fad8b32a","id":6809,"implemented":false,"kind":"function","modifiers":[],"name":"revokeOperator","nameLocation":"9736:14:15","nodeType":"FunctionDefinition","overrides":{"id":6807,"nodeType":"OverrideSpecifier","overrides":[{"id":6806,"name":"IERC777","nameLocations":["9787:7:15"],"nodeType":"IdentifierPath","referencedDeclaration":625,"src":"9787:7:15"}],"src":"9778:17:15"},"parameters":{"id":6805,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6804,"mutability":"mutable","name":"operator","nameLocation":"9759:8:15","nodeType":"VariableDeclaration","scope":6809,"src":"9751:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6803,"name":"address","nodeType":"ElementaryTypeName","src":"9751:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9750:18:15"},"returnParameters":{"id":6808,"nodeType":"ParameterList","parameters":[],"src":"9795:0:15"},"scope":7015,"src":"9727:69:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[584],"documentation":{"id":6810,"nodeType":"StructuredDocumentation","src":"9802:338:15","text":" @dev Returns the list of default operators. These accounts are operators\n for all token holders, even if {authorizeOperator} was never called on\n them.\n This list is immutable, but individual holders may revoke these via\n {revokeOperator}, in which case {isOperatorFor} will return false."},"functionSelector":"06e48538","id":6818,"implemented":false,"kind":"function","modifiers":[],"name":"defaultOperators","nameLocation":"10154:16:15","nodeType":"FunctionDefinition","overrides":{"id":6813,"nodeType":"OverrideSpecifier","overrides":[{"id":6812,"name":"IERC777","nameLocations":["10191:7:15"],"nodeType":"IdentifierPath","referencedDeclaration":625,"src":"10191:7:15"}],"src":"10182:17:15"},"parameters":{"id":6811,"nodeType":"ParameterList","parameters":[],"src":"10170:2:15"},"returnParameters":{"id":6817,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6816,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6818,"src":"10214:16:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":6814,"name":"address","nodeType":"ElementaryTypeName","src":"10214:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":6815,"nodeType":"ArrayTypeName","src":"10214:9:15","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"10213:18:15"},"scope":7015,"src":"10145:87:15","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[598],"documentation":{"id":6819,"nodeType":"StructuredDocumentation","src":"10238:724:15","text":" @dev Moves `amount` tokens from `sender` to `recipient`. The caller must\n be an operator of `sender`.\n If send or receive hooks are registered for `sender` and `recipient`,\n the corresponding functions will be called with `data` and\n `operatorData`. See {IERC777Sender} and {IERC777Recipient}.\n @custom:emits a {Sent} event.\n @custom:requirements \n - `sender` cannot be the zero address.\n - `sender` must have at least `amount` tokens.\n - the caller must be an operator for `sender`.\n - `recipient` cannot be the zero address.\n - if `recipient` is a contract, it must implement the {IERC777Recipient}\n interface."},"functionSelector":"62ad1b83","id":6834,"implemented":false,"kind":"function","modifiers":[],"name":"operatorSend","nameLocation":"10976:12:15","nodeType":"FunctionDefinition","overrides":{"id":6832,"nodeType":"OverrideSpecifier","overrides":[{"id":6831,"name":"IERC777","nameLocations":["11154:7:15"],"nodeType":"IdentifierPath","referencedDeclaration":625,"src":"11154:7:15"}],"src":"11145:17:15"},"parameters":{"id":6830,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6821,"mutability":"mutable","name":"sender","nameLocation":"11006:6:15","nodeType":"VariableDeclaration","scope":6834,"src":"10998:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6820,"name":"address","nodeType":"ElementaryTypeName","src":"10998:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6823,"mutability":"mutable","name":"recipient","nameLocation":"11030:9:15","nodeType":"VariableDeclaration","scope":6834,"src":"11022:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6822,"name":"address","nodeType":"ElementaryTypeName","src":"11022:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6825,"mutability":"mutable","name":"amount","nameLocation":"11057:6:15","nodeType":"VariableDeclaration","scope":6834,"src":"11049:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6824,"name":"uint256","nodeType":"ElementaryTypeName","src":"11049:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6827,"mutability":"mutable","name":"data","nameLocation":"11088:4:15","nodeType":"VariableDeclaration","scope":6834,"src":"11073:19:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6826,"name":"bytes","nodeType":"ElementaryTypeName","src":"11073:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":6829,"mutability":"mutable","name":"operatorData","nameLocation":"11117:12:15","nodeType":"VariableDeclaration","scope":6834,"src":"11102:27:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6828,"name":"bytes","nodeType":"ElementaryTypeName","src":"11102:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"10988:147:15"},"returnParameters":{"id":6833,"nodeType":"ParameterList","parameters":[],"src":"11162:0:15"},"scope":7015,"src":"10967:196:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[610],"documentation":{"id":6835,"nodeType":"StructuredDocumentation","src":"11169:542:15","text":" @dev Destroys `amount` tokens from `account`, reducing the total supply.\n The caller must be an operator of `account`.\n If a send hook is registered for `account`, the corresponding function\n will be called with `data` and `operatorData`. See {IERC777Sender}.\n @custom:emits a {Burned} event.\n @custom:requirements \n - `account` cannot be the zero address.\n - `account` must have at least `amount` tokens.\n - the caller must be an operator for `account`."},"functionSelector":"fc673c4f","id":6848,"implemented":false,"kind":"function","modifiers":[],"name":"operatorBurn","nameLocation":"11725:12:15","nodeType":"FunctionDefinition","overrides":{"id":6846,"nodeType":"OverrideSpecifier","overrides":[{"id":6845,"name":"IERC777","nameLocations":["11877:7:15"],"nodeType":"IdentifierPath","referencedDeclaration":625,"src":"11877:7:15"}],"src":"11868:17:15"},"parameters":{"id":6844,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6837,"mutability":"mutable","name":"account","nameLocation":"11755:7:15","nodeType":"VariableDeclaration","scope":6848,"src":"11747:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6836,"name":"address","nodeType":"ElementaryTypeName","src":"11747:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6839,"mutability":"mutable","name":"amount","nameLocation":"11780:6:15","nodeType":"VariableDeclaration","scope":6848,"src":"11772:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6838,"name":"uint256","nodeType":"ElementaryTypeName","src":"11772:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6841,"mutability":"mutable","name":"data","nameLocation":"11811:4:15","nodeType":"VariableDeclaration","scope":6848,"src":"11796:19:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6840,"name":"bytes","nodeType":"ElementaryTypeName","src":"11796:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":6843,"mutability":"mutable","name":"operatorData","nameLocation":"11840:12:15","nodeType":"VariableDeclaration","scope":6848,"src":"11825:27:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6842,"name":"bytes","nodeType":"ElementaryTypeName","src":"11825:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"11737:121:15"},"returnParameters":{"id":6847,"nodeType":"ParameterList","parameters":[],"src":"11885:0:15"},"scope":7015,"src":"11716:170:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6849,"nodeType":"StructuredDocumentation","src":"12094:107:15","text":" @dev Mint new tokens for the account\n @custom:modifiers \n - onlySelf"},"functionSelector":"c68d4283","id":6858,"implemented":false,"kind":"function","modifiers":[],"name":"selfMint","nameLocation":"12215:8:15","nodeType":"FunctionDefinition","parameters":{"id":6856,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6851,"mutability":"mutable","name":"account","nameLocation":"12241:7:15","nodeType":"VariableDeclaration","scope":6858,"src":"12233:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6850,"name":"address","nodeType":"ElementaryTypeName","src":"12233:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6853,"mutability":"mutable","name":"amount","nameLocation":"12266:6:15","nodeType":"VariableDeclaration","scope":6858,"src":"12258:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6852,"name":"uint256","nodeType":"ElementaryTypeName","src":"12258:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6855,"mutability":"mutable","name":"userData","nameLocation":"12295:8:15","nodeType":"VariableDeclaration","scope":6858,"src":"12282:21:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6854,"name":"bytes","nodeType":"ElementaryTypeName","src":"12282:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"12223:86:15"},"returnParameters":{"id":6857,"nodeType":"ParameterList","parameters":[],"src":"12318:0:15"},"scope":7015,"src":"12206:113:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6859,"nodeType":"StructuredDocumentation","src":"12324:107:15","text":" @dev Burn existing tokens for the account\n @custom:modifiers \n - onlySelf"},"functionSelector":"9d876741","id":6868,"implemented":false,"kind":"function","modifiers":[],"name":"selfBurn","nameLocation":"12444:8:15","nodeType":"FunctionDefinition","parameters":{"id":6866,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6861,"mutability":"mutable","name":"account","nameLocation":"12469:7:15","nodeType":"VariableDeclaration","scope":6868,"src":"12461:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6860,"name":"address","nodeType":"ElementaryTypeName","src":"12461:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6863,"mutability":"mutable","name":"amount","nameLocation":"12493:6:15","nodeType":"VariableDeclaration","scope":6868,"src":"12485:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6862,"name":"uint256","nodeType":"ElementaryTypeName","src":"12485:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6865,"mutability":"mutable","name":"userData","nameLocation":"12521:8:15","nodeType":"VariableDeclaration","scope":6868,"src":"12508:21:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6864,"name":"bytes","nodeType":"ElementaryTypeName","src":"12508:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"12452:82:15"},"returnParameters":{"id":6867,"nodeType":"ParameterList","parameters":[],"src":"12543:0:15"},"scope":7015,"src":"12435:109:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6869,"nodeType":"StructuredDocumentation","src":"12549:245:15","text":" @dev Transfer `amount` tokens from the `sender` to `recipient`.\n If `spender` isn't the same as `sender`, checks if `spender` has allowance to\n spend tokens of `sender`.\n @custom:modifiers \n - onlySelf"},"functionSelector":"41b706be","id":6880,"implemented":false,"kind":"function","modifiers":[],"name":"selfTransferFrom","nameLocation":"12807:16:15","nodeType":"FunctionDefinition","parameters":{"id":6878,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6871,"mutability":"mutable","name":"sender","nameLocation":"12841:6:15","nodeType":"VariableDeclaration","scope":6880,"src":"12833:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6870,"name":"address","nodeType":"ElementaryTypeName","src":"12833:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6873,"mutability":"mutable","name":"spender","nameLocation":"12865:7:15","nodeType":"VariableDeclaration","scope":6880,"src":"12857:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6872,"name":"address","nodeType":"ElementaryTypeName","src":"12857:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6875,"mutability":"mutable","name":"recipient","nameLocation":"12890:9:15","nodeType":"VariableDeclaration","scope":6880,"src":"12882:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6874,"name":"address","nodeType":"ElementaryTypeName","src":"12882:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6877,"mutability":"mutable","name":"amount","nameLocation":"12917:6:15","nodeType":"VariableDeclaration","scope":6880,"src":"12909:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6876,"name":"uint256","nodeType":"ElementaryTypeName","src":"12909:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12823:105:15"},"returnParameters":{"id":6879,"nodeType":"ParameterList","parameters":[],"src":"12937:0:15"},"scope":7015,"src":"12798:140:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6881,"nodeType":"StructuredDocumentation","src":"12943:145:15","text":" @dev Give `spender`, `amount` allowance to spend the tokens of\n `account`.\n @custom:modifiers \n - onlySelf"},"functionSelector":"66a12fb6","id":6890,"implemented":false,"kind":"function","modifiers":[],"name":"selfApproveFor","nameLocation":"13101:14:15","nodeType":"FunctionDefinition","parameters":{"id":6888,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6883,"mutability":"mutable","name":"account","nameLocation":"13133:7:15","nodeType":"VariableDeclaration","scope":6890,"src":"13125:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6882,"name":"address","nodeType":"ElementaryTypeName","src":"13125:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6885,"mutability":"mutable","name":"spender","nameLocation":"13158:7:15","nodeType":"VariableDeclaration","scope":6890,"src":"13150:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6884,"name":"address","nodeType":"ElementaryTypeName","src":"13150:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6887,"mutability":"mutable","name":"amount","nameLocation":"13183:6:15","nodeType":"VariableDeclaration","scope":6890,"src":"13175:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6886,"name":"uint256","nodeType":"ElementaryTypeName","src":"13175:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13115:79:15"},"returnParameters":{"id":6889,"nodeType":"ParameterList","parameters":[],"src":"13203:0:15"},"scope":7015,"src":"13092:112:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6891,"nodeType":"StructuredDocumentation","src":"13405:87:15","text":" @dev Transfer all available balance from `msg.sender` to `recipient`"},"functionSelector":"a3a7e7f3","id":6896,"implemented":false,"kind":"function","modifiers":[],"name":"transferAll","nameLocation":"13506:11:15","nodeType":"FunctionDefinition","parameters":{"id":6894,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6893,"mutability":"mutable","name":"recipient","nameLocation":"13526:9:15","nodeType":"VariableDeclaration","scope":6896,"src":"13518:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6892,"name":"address","nodeType":"ElementaryTypeName","src":"13518:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"13517:19:15"},"returnParameters":{"id":6895,"nodeType":"ParameterList","parameters":[],"src":"13545:0:15"},"scope":7015,"src":"13497:49:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6897,"nodeType":"StructuredDocumentation","src":"13735:110:15","text":" @dev Return the underlying token contract\n @return tokenAddr Underlying token address"},"functionSelector":"ee719bc8","id":6902,"implemented":false,"kind":"function","modifiers":[],"name":"getUnderlyingToken","nameLocation":"13859:18:15","nodeType":"FunctionDefinition","parameters":{"id":6898,"nodeType":"ParameterList","parameters":[],"src":"13877:2:15"},"returnParameters":{"id":6901,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6900,"mutability":"mutable","name":"tokenAddr","nameLocation":"13910:9:15","nodeType":"VariableDeclaration","scope":6902,"src":"13902:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6899,"name":"address","nodeType":"ElementaryTypeName","src":"13902:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"13901:19:15"},"scope":7015,"src":"13850:71:15","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":6903,"nodeType":"StructuredDocumentation","src":"13927:262:15","text":" @dev Upgrade ERC20 to SuperToken.\n @param amount Number of tokens to be upgraded (in 18 decimals)\n @custom:note It will use `transferFrom` to get tokens. Before calling this\n function you should `approve` this contract"},"functionSelector":"45977d03","id":6908,"implemented":false,"kind":"function","modifiers":[],"name":"upgrade","nameLocation":"14203:7:15","nodeType":"FunctionDefinition","parameters":{"id":6906,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6905,"mutability":"mutable","name":"amount","nameLocation":"14219:6:15","nodeType":"VariableDeclaration","scope":6908,"src":"14211:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6904,"name":"uint256","nodeType":"ElementaryTypeName","src":"14211:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14210:16:15"},"returnParameters":{"id":6907,"nodeType":"ParameterList","parameters":[],"src":"14235:0:15"},"scope":7015,"src":"14194:42:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6909,"nodeType":"StructuredDocumentation","src":"14242:679:15","text":" @dev Upgrade ERC20 to SuperToken and transfer immediately\n @param to The account to receive upgraded tokens\n @param amount Number of tokens to be upgraded (in 18 decimals)\n @param data User data for the TokensRecipient callback\n @custom:note It will use `transferFrom` to get tokens. Before calling this\n function you should `approve` this contract\n \n @custom:warning\n - there is potential of reentrancy IF the \"to\" account is a registered ERC777 recipient.\n @custom:requirements \n - if `data` is NOT empty AND `to` is a contract, it MUST be a registered ERC777 recipient otherwise it reverts."},"functionSelector":"5b9d09cc","id":6918,"implemented":false,"kind":"function","modifiers":[],"name":"upgradeTo","nameLocation":"14935:9:15","nodeType":"FunctionDefinition","parameters":{"id":6916,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6911,"mutability":"mutable","name":"to","nameLocation":"14953:2:15","nodeType":"VariableDeclaration","scope":6918,"src":"14945:10:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6910,"name":"address","nodeType":"ElementaryTypeName","src":"14945:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6913,"mutability":"mutable","name":"amount","nameLocation":"14965:6:15","nodeType":"VariableDeclaration","scope":6918,"src":"14957:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6912,"name":"uint256","nodeType":"ElementaryTypeName","src":"14957:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6915,"mutability":"mutable","name":"data","nameLocation":"14988:4:15","nodeType":"VariableDeclaration","scope":6918,"src":"14973:19:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":6914,"name":"bytes","nodeType":"ElementaryTypeName","src":"14973:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"14944:49:15"},"returnParameters":{"id":6917,"nodeType":"ParameterList","parameters":[],"src":"15002:0:15"},"scope":7015,"src":"14926:77:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":6919,"nodeType":"StructuredDocumentation","src":"15009:166:15","text":" @dev Token upgrade event\n @param account Account where tokens are upgraded to\n @param amount Amount of tokens upgraded (in 18 decimals)"},"eventSelector":"25ca84076773b0455db53621c459ddc84fe40840e4932a62706a032566f399df","id":6925,"name":"TokenUpgraded","nameLocation":"15186:13:15","nodeType":"EventDefinition","parameters":{"id":6924,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6921,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"15225:7:15","nodeType":"VariableDeclaration","scope":6925,"src":"15209:23:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6920,"name":"address","nodeType":"ElementaryTypeName","src":"15209:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6923,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"15250:6:15","nodeType":"VariableDeclaration","scope":6925,"src":"15242:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6922,"name":"uint256","nodeType":"ElementaryTypeName","src":"15242:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15199:63:15"},"src":"15180:83:15"},{"documentation":{"id":6926,"nodeType":"StructuredDocumentation","src":"15269:158:15","text":" @dev Downgrade SuperToken to ERC20.\n @dev It will call transfer to send tokens\n @param amount Number of tokens to be downgraded"},"functionSelector":"11bcc81e","id":6931,"implemented":false,"kind":"function","modifiers":[],"name":"downgrade","nameLocation":"15441:9:15","nodeType":"FunctionDefinition","parameters":{"id":6929,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6928,"mutability":"mutable","name":"amount","nameLocation":"15459:6:15","nodeType":"VariableDeclaration","scope":6931,"src":"15451:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6927,"name":"uint256","nodeType":"ElementaryTypeName","src":"15451:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15450:16:15"},"returnParameters":{"id":6930,"nodeType":"ParameterList","parameters":[],"src":"15475:0:15"},"scope":7015,"src":"15432:44:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6932,"nodeType":"StructuredDocumentation","src":"15482:208:15","text":" @dev Downgrade SuperToken to ERC20 and transfer immediately\n @param to The account to receive downgraded tokens\n @param amount Number of tokens to be downgraded (in 18 decimals)"},"functionSelector":"83ba2525","id":6939,"implemented":false,"kind":"function","modifiers":[],"name":"downgradeTo","nameLocation":"15704:11:15","nodeType":"FunctionDefinition","parameters":{"id":6937,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6934,"mutability":"mutable","name":"to","nameLocation":"15724:2:15","nodeType":"VariableDeclaration","scope":6939,"src":"15716:10:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6933,"name":"address","nodeType":"ElementaryTypeName","src":"15716:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6936,"mutability":"mutable","name":"amount","nameLocation":"15736:6:15","nodeType":"VariableDeclaration","scope":6939,"src":"15728:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6935,"name":"uint256","nodeType":"ElementaryTypeName","src":"15728:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15715:28:15"},"returnParameters":{"id":6938,"nodeType":"ParameterList","parameters":[],"src":"15752:0:15"},"scope":7015,"src":"15695:58:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":6940,"nodeType":"StructuredDocumentation","src":"15759:152:15","text":" @dev Token downgrade event\n @param account Account whose tokens are downgraded\n @param amount Amount of tokens downgraded"},"eventSelector":"3bc27981aebbb57f9247dc00fde9d6cd91e4b230083fec3238fedbcba1f9ab3d","id":6946,"name":"TokenDowngraded","nameLocation":"15922:15:15","nodeType":"EventDefinition","parameters":{"id":6945,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6942,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"15963:7:15","nodeType":"VariableDeclaration","scope":6946,"src":"15947:23:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6941,"name":"address","nodeType":"ElementaryTypeName","src":"15947:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6944,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"15988:6:15","nodeType":"VariableDeclaration","scope":6946,"src":"15980:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6943,"name":"uint256","nodeType":"ElementaryTypeName","src":"15980:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15937:63:15"},"src":"15916:85:15"},{"documentation":{"id":6947,"nodeType":"StructuredDocumentation","src":"16190:277:15","text":" @dev Perform ERC20 approve by host contract.\n @param account The account owner to be approved.\n @param spender The spender of account owner's funds.\n @param amount Number of tokens to be approved.\n @custom:modifiers \n - onlyHost"},"functionSelector":"62aa5287","id":6956,"implemented":false,"kind":"function","modifiers":[],"name":"operationApprove","nameLocation":"16481:16:15","nodeType":"FunctionDefinition","parameters":{"id":6954,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6949,"mutability":"mutable","name":"account","nameLocation":"16515:7:15","nodeType":"VariableDeclaration","scope":6956,"src":"16507:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6948,"name":"address","nodeType":"ElementaryTypeName","src":"16507:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6951,"mutability":"mutable","name":"spender","nameLocation":"16540:7:15","nodeType":"VariableDeclaration","scope":6956,"src":"16532:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6950,"name":"address","nodeType":"ElementaryTypeName","src":"16532:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6953,"mutability":"mutable","name":"amount","nameLocation":"16565:6:15","nodeType":"VariableDeclaration","scope":6956,"src":"16557:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6952,"name":"uint256","nodeType":"ElementaryTypeName","src":"16557:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16497:80:15"},"returnParameters":{"id":6955,"nodeType":"ParameterList","parameters":[],"src":"16586:0:15"},"scope":7015,"src":"16472:115:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"4b2763b3","id":6965,"implemented":false,"kind":"function","modifiers":[],"name":"operationIncreaseAllowance","nameLocation":"16602:26:15","nodeType":"FunctionDefinition","parameters":{"id":6963,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6958,"mutability":"mutable","name":"account","nameLocation":"16646:7:15","nodeType":"VariableDeclaration","scope":6965,"src":"16638:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6957,"name":"address","nodeType":"ElementaryTypeName","src":"16638:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6960,"mutability":"mutable","name":"spender","nameLocation":"16671:7:15","nodeType":"VariableDeclaration","scope":6965,"src":"16663:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6959,"name":"address","nodeType":"ElementaryTypeName","src":"16663:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6962,"mutability":"mutable","name":"addedValue","nameLocation":"16696:10:15","nodeType":"VariableDeclaration","scope":6965,"src":"16688:18:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6961,"name":"uint256","nodeType":"ElementaryTypeName","src":"16688:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16628:84:15"},"returnParameters":{"id":6964,"nodeType":"ParameterList","parameters":[],"src":"16721:0:15"},"scope":7015,"src":"16593:129:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"c780fd82","id":6974,"implemented":false,"kind":"function","modifiers":[],"name":"operationDecreaseAllowance","nameLocation":"16737:26:15","nodeType":"FunctionDefinition","parameters":{"id":6972,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6967,"mutability":"mutable","name":"account","nameLocation":"16781:7:15","nodeType":"VariableDeclaration","scope":6974,"src":"16773:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6966,"name":"address","nodeType":"ElementaryTypeName","src":"16773:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6969,"mutability":"mutable","name":"spender","nameLocation":"16806:7:15","nodeType":"VariableDeclaration","scope":6974,"src":"16798:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6968,"name":"address","nodeType":"ElementaryTypeName","src":"16798:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6971,"mutability":"mutable","name":"subtractedValue","nameLocation":"16831:15:15","nodeType":"VariableDeclaration","scope":6974,"src":"16823:23:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6970,"name":"uint256","nodeType":"ElementaryTypeName","src":"16823:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16763:89:15"},"returnParameters":{"id":6973,"nodeType":"ParameterList","parameters":[],"src":"16861:0:15"},"scope":7015,"src":"16728:134:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6975,"nodeType":"StructuredDocumentation","src":"16868:343:15","text":" @dev Perform ERC20 transferFrom by host contract.\n @param account The account to spend sender's funds.\n @param spender The account where the funds is sent from.\n @param recipient The recipient of the funds.\n @param amount Number of tokens to be transferred.\n @custom:modifiers \n - onlyHost"},"functionSelector":"16d055d6","id":6986,"implemented":false,"kind":"function","modifiers":[],"name":"operationTransferFrom","nameLocation":"17225:21:15","nodeType":"FunctionDefinition","parameters":{"id":6984,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6977,"mutability":"mutable","name":"account","nameLocation":"17264:7:15","nodeType":"VariableDeclaration","scope":6986,"src":"17256:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6976,"name":"address","nodeType":"ElementaryTypeName","src":"17256:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6979,"mutability":"mutable","name":"spender","nameLocation":"17289:7:15","nodeType":"VariableDeclaration","scope":6986,"src":"17281:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6978,"name":"address","nodeType":"ElementaryTypeName","src":"17281:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6981,"mutability":"mutable","name":"recipient","nameLocation":"17314:9:15","nodeType":"VariableDeclaration","scope":6986,"src":"17306:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6980,"name":"address","nodeType":"ElementaryTypeName","src":"17306:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6983,"mutability":"mutable","name":"amount","nameLocation":"17341:6:15","nodeType":"VariableDeclaration","scope":6986,"src":"17333:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6982,"name":"uint256","nodeType":"ElementaryTypeName","src":"17333:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17246:107:15"},"returnParameters":{"id":6985,"nodeType":"ParameterList","parameters":[],"src":"17362:0:15"},"scope":7015,"src":"17216:147:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6987,"nodeType":"StructuredDocumentation","src":"17369:325:15","text":" @dev Perform ERC777 send by host contract.\n @param spender The account where the funds is sent from.\n @param recipient The recipient of the funds.\n @param amount Number of tokens to be transferred.\n @param data Arbitrary user inputted data\n @custom:modifiers \n - onlyHost"},"functionSelector":"ca0c1e7f","id":6998,"implemented":false,"kind":"function","modifiers":[],"name":"operationSend","nameLocation":"17708:13:15","nodeType":"FunctionDefinition","parameters":{"id":6996,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6989,"mutability":"mutable","name":"spender","nameLocation":"17739:7:15","nodeType":"VariableDeclaration","scope":6998,"src":"17731:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6988,"name":"address","nodeType":"ElementaryTypeName","src":"17731:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6991,"mutability":"mutable","name":"recipient","nameLocation":"17764:9:15","nodeType":"VariableDeclaration","scope":6998,"src":"17756:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6990,"name":"address","nodeType":"ElementaryTypeName","src":"17756:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6993,"mutability":"mutable","name":"amount","nameLocation":"17791:6:15","nodeType":"VariableDeclaration","scope":6998,"src":"17783:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6992,"name":"uint256","nodeType":"ElementaryTypeName","src":"17783:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6995,"mutability":"mutable","name":"data","nameLocation":"17820:4:15","nodeType":"VariableDeclaration","scope":6998,"src":"17807:17:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6994,"name":"bytes","nodeType":"ElementaryTypeName","src":"17807:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"17721:109:15"},"returnParameters":{"id":6997,"nodeType":"ParameterList","parameters":[],"src":"17839:0:15"},"scope":7015,"src":"17699:141:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":6999,"nodeType":"StructuredDocumentation","src":"17846:233:15","text":" @dev Upgrade ERC20 to SuperToken by host contract.\n @param account The account to be changed.\n @param amount Number of tokens to be upgraded (in 18 decimals)\n @custom:modifiers \n - onlyHost"},"functionSelector":"ca789464","id":7006,"implemented":false,"kind":"function","modifiers":[],"name":"operationUpgrade","nameLocation":"18093:16:15","nodeType":"FunctionDefinition","parameters":{"id":7004,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7001,"mutability":"mutable","name":"account","nameLocation":"18118:7:15","nodeType":"VariableDeclaration","scope":7006,"src":"18110:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7000,"name":"address","nodeType":"ElementaryTypeName","src":"18110:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7003,"mutability":"mutable","name":"amount","nameLocation":"18135:6:15","nodeType":"VariableDeclaration","scope":7006,"src":"18127:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7002,"name":"uint256","nodeType":"ElementaryTypeName","src":"18127:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18109:33:15"},"returnParameters":{"id":7005,"nodeType":"ParameterList","parameters":[],"src":"18151:0:15"},"scope":7015,"src":"18084:68:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7007,"nodeType":"StructuredDocumentation","src":"18158:237:15","text":" @dev Downgrade ERC20 to SuperToken by host contract.\n @param account The account to be changed.\n @param amount Number of tokens to be downgraded (in 18 decimals)\n @custom:modifiers \n - onlyHost"},"functionSelector":"245887fc","id":7014,"implemented":false,"kind":"function","modifiers":[],"name":"operationDowngrade","nameLocation":"18409:18:15","nodeType":"FunctionDefinition","parameters":{"id":7012,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7009,"mutability":"mutable","name":"account","nameLocation":"18436:7:15","nodeType":"VariableDeclaration","scope":7014,"src":"18428:15:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7008,"name":"address","nodeType":"ElementaryTypeName","src":"18428:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7011,"mutability":"mutable","name":"amount","nameLocation":"18453:6:15","nodeType":"VariableDeclaration","scope":7014,"src":"18445:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7010,"name":"uint256","nodeType":"ElementaryTypeName","src":"18445:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18427:33:15"},"returnParameters":{"id":7013,"nodeType":"ParameterList","parameters":[],"src":"18469:0:15"},"scope":7015,"src":"18400:70:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":7016,"src":"471:18529:15","usedErrors":[6600,6602,6604,6606,6608,6610,6612,6614,6616,6618,6620,6622,7803,7805,7807,7809,7811,7813]}],"src":"35:18966:15"},"id":15},"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperTokenFactory.sol":{"ast":{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperTokenFactory.sol","exportedSymbols":{"ERC20WithTokenInfo":[8094],"IERC20":[145],"ISuperToken":[7015],"ISuperTokenFactory":[7145]},"id":7146,"license":"AGPLv3","nodeType":"SourceUnit","nodes":[{"id":7017,"literals":["solidity",">=","0.8",".4"],"nodeType":"PragmaDirective","src":"35:25:16"},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.sol","file":"./ISuperToken.sol","id":7019,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7146,"sourceUnit":7016,"src":"62:48:16","symbolAliases":[{"foreign":{"id":7018,"name":"ISuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7015,"src":"71:11:16","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo.sol","file":"../tokens/ERC20WithTokenInfo.sol","id":7022,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7146,"sourceUnit":8095,"src":"112:86:16","symbolAliases":[{"foreign":{"id":7020,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":145,"src":"125:6:16","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":7021,"name":"ERC20WithTokenInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8094,"src":"137:18:16","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"ISuperTokenFactory","contractDependencies":[],"contractKind":"interface","documentation":{"id":7023,"nodeType":"StructuredDocumentation","src":"200:69:16","text":" @title Super token factory interface\n @author Superfluid"},"fullyImplemented":false,"id":7145,"linearizedBaseContracts":[7145],"name":"ISuperTokenFactory","nameLocation":"280:18:16","nodeType":"ContractDefinition","nodes":[{"errorSelector":"91d67972","id":7025,"name":"SUPER_TOKEN_FACTORY_ALREADY_EXISTS","nameLocation":"486:34:16","nodeType":"ErrorDefinition","parameters":{"id":7024,"nodeType":"ParameterList","parameters":[],"src":"520:2:16"},"src":"480:43:16"},{"errorSelector":"872cac48","id":7027,"name":"SUPER_TOKEN_FACTORY_DOES_NOT_EXIST","nameLocation":"564:34:16","nodeType":"ErrorDefinition","parameters":{"id":7026,"nodeType":"ParameterList","parameters":[],"src":"598:2:16"},"src":"558:43:16"},{"errorSelector":"1b39b9b4","id":7029,"name":"SUPER_TOKEN_FACTORY_UNINITIALIZED","nameLocation":"642:33:16","nodeType":"ErrorDefinition","parameters":{"id":7028,"nodeType":"ParameterList","parameters":[],"src":"675:2:16"},"src":"636:42:16"},{"errorSelector":"478b8e83","id":7031,"name":"SUPER_TOKEN_FACTORY_ONLY_HOST","nameLocation":"720:29:16","nodeType":"ErrorDefinition","parameters":{"id":7030,"nodeType":"ParameterList","parameters":[],"src":"749:2:16"},"src":"714:38:16"},{"errorSelector":"c4901a43","id":7033,"name":"SUPER_TOKEN_FACTORY_NON_UPGRADEABLE_IS_DEPRECATED","nameLocation":"798:49:16","nodeType":"ErrorDefinition","parameters":{"id":7032,"nodeType":"ParameterList","parameters":[],"src":"847:2:16"},"src":"792:58:16"},{"errorSelector":"305c9e82","id":7035,"name":"SUPER_TOKEN_FACTORY_ZERO_ADDRESS","nameLocation":"876:32:16","nodeType":"ErrorDefinition","parameters":{"id":7034,"nodeType":"ParameterList","parameters":[],"src":"908:2:16"},"src":"870:41:16"},{"documentation":{"id":7036,"nodeType":"StructuredDocumentation","src":"949:60:16","text":" @dev Get superfluid host contract address"},"functionSelector":"20bc4425","id":7041,"implemented":false,"kind":"function","modifiers":[],"name":"getHost","nameLocation":"1023:7:16","nodeType":"FunctionDefinition","parameters":{"id":7037,"nodeType":"ParameterList","parameters":[],"src":"1030:2:16"},"returnParameters":{"id":7040,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7039,"mutability":"mutable","name":"host","nameLocation":"1063:4:16","nodeType":"VariableDeclaration","scope":7041,"src":"1055:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7038,"name":"address","nodeType":"ElementaryTypeName","src":"1055:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1054:14:16"},"scope":7145,"src":"1014:55:16","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7042,"nodeType":"StructuredDocumentation","src":"1075:32:16","text":"@dev Initialize the contract"},"functionSelector":"8129fc1c","id":7045,"implemented":false,"kind":"function","modifiers":[],"name":"initialize","nameLocation":"1121:10:16","nodeType":"FunctionDefinition","parameters":{"id":7043,"nodeType":"ParameterList","parameters":[],"src":"1131:2:16"},"returnParameters":{"id":7044,"nodeType":"ParameterList","parameters":[],"src":"1142:0:16"},"scope":7145,"src":"1112:31:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7046,"nodeType":"StructuredDocumentation","src":"1149:77:16","text":" @dev Get the current super token logic used by the factory"},"functionSelector":"9470a5b2","id":7052,"implemented":false,"kind":"function","modifiers":[],"name":"getSuperTokenLogic","nameLocation":"1240:18:16","nodeType":"FunctionDefinition","parameters":{"id":7047,"nodeType":"ParameterList","parameters":[],"src":"1258:2:16"},"returnParameters":{"id":7051,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7050,"mutability":"mutable","name":"superToken","nameLocation":"1296:10:16","nodeType":"VariableDeclaration","scope":7052,"src":"1284:22:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":7049,"nodeType":"UserDefinedTypeName","pathNode":{"id":7048,"name":"ISuperToken","nameLocations":["1284:11:16"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"1284:11:16"},"referencedDeclaration":7015,"src":"1284:11:16","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"}],"src":"1283:24:16"},"scope":7145,"src":"1231:77:16","stateMutability":"view","virtual":false,"visibility":"external"},{"canonicalName":"ISuperTokenFactory.Upgradability","id":7056,"members":[{"id":7053,"name":"NON_UPGRADABLE","nameLocation":"1472:14:16","nodeType":"EnumValue","src":"1472:14:16"},{"id":7054,"name":"SEMI_UPGRADABLE","nameLocation":"1566:15:16","nodeType":"EnumValue","src":"1566:15:16"},{"id":7055,"name":"FULL_UPGRADABLE","nameLocation":"1645:15:16","nodeType":"EnumValue","src":"1645:15:16"}],"name":"Upgradability","nameLocation":"1367:13:16","nodeType":"EnumDefinition","src":"1362:304:16"},{"documentation":{"id":7057,"nodeType":"StructuredDocumentation","src":"1672:398:16","text":" @notice Create new super token wrapper for the underlying ERC20 token\n @param underlyingToken Underlying ERC20 token\n @param underlyingDecimals Underlying token decimals\n @param upgradability Upgradability mode\n @param name Super token name\n @param symbol Super token symbol\n @return superToken The deployed and initialized wrapper super token"},"functionSelector":"a6d0c534","id":7075,"implemented":false,"kind":"function","modifiers":[],"name":"createERC20Wrapper","nameLocation":"2084:18:16","nodeType":"FunctionDefinition","parameters":{"id":7070,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7060,"mutability":"mutable","name":"underlyingToken","nameLocation":"2119:15:16","nodeType":"VariableDeclaration","scope":7075,"src":"2112:22:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$145","typeString":"contract IERC20"},"typeName":{"id":7059,"nodeType":"UserDefinedTypeName","pathNode":{"id":7058,"name":"IERC20","nameLocations":["2112:6:16"],"nodeType":"IdentifierPath","referencedDeclaration":145,"src":"2112:6:16"},"referencedDeclaration":145,"src":"2112:6:16","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$145","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":7062,"mutability":"mutable","name":"underlyingDecimals","nameLocation":"2150:18:16","nodeType":"VariableDeclaration","scope":7075,"src":"2144:24:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":7061,"name":"uint8","nodeType":"ElementaryTypeName","src":"2144:5:16","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":7065,"mutability":"mutable","name":"upgradability","nameLocation":"2192:13:16","nodeType":"VariableDeclaration","scope":7075,"src":"2178:27:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Upgradability_$7056","typeString":"enum ISuperTokenFactory.Upgradability"},"typeName":{"id":7064,"nodeType":"UserDefinedTypeName","pathNode":{"id":7063,"name":"Upgradability","nameLocations":["2178:13:16"],"nodeType":"IdentifierPath","referencedDeclaration":7056,"src":"2178:13:16"},"referencedDeclaration":7056,"src":"2178:13:16","typeDescriptions":{"typeIdentifier":"t_enum$_Upgradability_$7056","typeString":"enum ISuperTokenFactory.Upgradability"}},"visibility":"internal"},{"constant":false,"id":7067,"mutability":"mutable","name":"name","nameLocation":"2231:4:16","nodeType":"VariableDeclaration","scope":7075,"src":"2215:20:16","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":7066,"name":"string","nodeType":"ElementaryTypeName","src":"2215:6:16","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":7069,"mutability":"mutable","name":"symbol","nameLocation":"2261:6:16","nodeType":"VariableDeclaration","scope":7075,"src":"2245:22:16","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":7068,"name":"string","nodeType":"ElementaryTypeName","src":"2245:6:16","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2102:171:16"},"returnParameters":{"id":7074,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7073,"mutability":"mutable","name":"superToken","nameLocation":"2320:10:16","nodeType":"VariableDeclaration","scope":7075,"src":"2308:22:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":7072,"nodeType":"UserDefinedTypeName","pathNode":{"id":7071,"name":"ISuperToken","nameLocations":["2308:11:16"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"2308:11:16"},"referencedDeclaration":7015,"src":"2308:11:16","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"}],"src":"2307:24:16"},"scope":7145,"src":"2075:257:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7076,"nodeType":"StructuredDocumentation","src":"2338:433:16","text":" @notice Create new super token wrapper for the underlying ERC20 token with extra token info\n @param underlyingToken Underlying ERC20 token\n @param upgradability Upgradability mode\n @param name Super token name\n @param symbol Super token symbol\n @return superToken The deployed and initialized wrapper super token\n NOTE:\n - It assumes token provide the .decimals() function"},"functionSelector":"431f1481","id":7092,"implemented":false,"kind":"function","modifiers":[],"name":"createERC20Wrapper","nameLocation":"2785:18:16","nodeType":"FunctionDefinition","parameters":{"id":7087,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7079,"mutability":"mutable","name":"underlyingToken","nameLocation":"2832:15:16","nodeType":"VariableDeclaration","scope":7092,"src":"2813:34:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20WithTokenInfo_$8094","typeString":"contract ERC20WithTokenInfo"},"typeName":{"id":7078,"nodeType":"UserDefinedTypeName","pathNode":{"id":7077,"name":"ERC20WithTokenInfo","nameLocations":["2813:18:16"],"nodeType":"IdentifierPath","referencedDeclaration":8094,"src":"2813:18:16"},"referencedDeclaration":8094,"src":"2813:18:16","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20WithTokenInfo_$8094","typeString":"contract ERC20WithTokenInfo"}},"visibility":"internal"},{"constant":false,"id":7082,"mutability":"mutable","name":"upgradability","nameLocation":"2871:13:16","nodeType":"VariableDeclaration","scope":7092,"src":"2857:27:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Upgradability_$7056","typeString":"enum ISuperTokenFactory.Upgradability"},"typeName":{"id":7081,"nodeType":"UserDefinedTypeName","pathNode":{"id":7080,"name":"Upgradability","nameLocations":["2857:13:16"],"nodeType":"IdentifierPath","referencedDeclaration":7056,"src":"2857:13:16"},"referencedDeclaration":7056,"src":"2857:13:16","typeDescriptions":{"typeIdentifier":"t_enum$_Upgradability_$7056","typeString":"enum ISuperTokenFactory.Upgradability"}},"visibility":"internal"},{"constant":false,"id":7084,"mutability":"mutable","name":"name","nameLocation":"2910:4:16","nodeType":"VariableDeclaration","scope":7092,"src":"2894:20:16","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":7083,"name":"string","nodeType":"ElementaryTypeName","src":"2894:6:16","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":7086,"mutability":"mutable","name":"symbol","nameLocation":"2940:6:16","nodeType":"VariableDeclaration","scope":7092,"src":"2924:22:16","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":7085,"name":"string","nodeType":"ElementaryTypeName","src":"2924:6:16","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2803:149:16"},"returnParameters":{"id":7091,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7090,"mutability":"mutable","name":"superToken","nameLocation":"2999:10:16","nodeType":"VariableDeclaration","scope":7092,"src":"2987:22:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":7089,"nodeType":"UserDefinedTypeName","pathNode":{"id":7088,"name":"ISuperToken","nameLocations":["2987:11:16"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"2987:11:16"},"referencedDeclaration":7015,"src":"2987:11:16","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"}],"src":"2986:24:16"},"scope":7145,"src":"2776:235:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7093,"nodeType":"StructuredDocumentation","src":"3017:318:16","text":" @notice Creates a wrapper super token AND sets it in the canonical list OR reverts if it already exists\n @dev salt for create2 is the keccak256 hash of abi.encode(address(_underlyingToken))\n @param _underlyingToken Underlying ERC20 token\n @return ISuperToken the created supertoken"},"functionSelector":"151188dc","id":7102,"implemented":false,"kind":"function","modifiers":[],"name":"createCanonicalERC20Wrapper","nameLocation":"3349:27:16","nodeType":"FunctionDefinition","parameters":{"id":7097,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7096,"mutability":"mutable","name":"_underlyingToken","nameLocation":"3396:16:16","nodeType":"VariableDeclaration","scope":7102,"src":"3377:35:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20WithTokenInfo_$8094","typeString":"contract ERC20WithTokenInfo"},"typeName":{"id":7095,"nodeType":"UserDefinedTypeName","pathNode":{"id":7094,"name":"ERC20WithTokenInfo","nameLocations":["3377:18:16"],"nodeType":"IdentifierPath","referencedDeclaration":8094,"src":"3377:18:16"},"referencedDeclaration":8094,"src":"3377:18:16","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20WithTokenInfo_$8094","typeString":"contract ERC20WithTokenInfo"}},"visibility":"internal"}],"src":"3376:37:16"},"returnParameters":{"id":7101,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7100,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7102,"src":"3448:11:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":7099,"nodeType":"UserDefinedTypeName","pathNode":{"id":7098,"name":"ISuperToken","nameLocations":["3448:11:16"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"3448:11:16"},"referencedDeclaration":7015,"src":"3448:11:16","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"}],"src":"3447:13:16"},"scope":7145,"src":"3340:121:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7103,"nodeType":"StructuredDocumentation","src":"3467:502:16","text":" @notice Computes/Retrieves wrapper super token address given the underlying token address\n @dev We return from our canonical list if it already exists, otherwise we compute it\n @dev note that this function only computes addresses for SEMI_UPGRADABLE SuperTokens\n @param _underlyingToken Underlying ERC20 token address\n @return superTokenAddress Super token address\n @return isDeployed whether the super token is deployed AND set in the canonical mapping"},"functionSelector":"bab74c89","id":7112,"implemented":false,"kind":"function","modifiers":[],"name":"computeCanonicalERC20WrapperAddress","nameLocation":"3983:35:16","nodeType":"FunctionDefinition","parameters":{"id":7106,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7105,"mutability":"mutable","name":"_underlyingToken","nameLocation":"4027:16:16","nodeType":"VariableDeclaration","scope":7112,"src":"4019:24:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7104,"name":"address","nodeType":"ElementaryTypeName","src":"4019:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4018:26:16"},"returnParameters":{"id":7111,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7108,"mutability":"mutable","name":"superTokenAddress","nameLocation":"4100:17:16","nodeType":"VariableDeclaration","scope":7112,"src":"4092:25:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7107,"name":"address","nodeType":"ElementaryTypeName","src":"4092:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7110,"mutability":"mutable","name":"isDeployed","nameLocation":"4124:10:16","nodeType":"VariableDeclaration","scope":7112,"src":"4119:15:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7109,"name":"bool","nodeType":"ElementaryTypeName","src":"4119:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4091:44:16"},"scope":7145,"src":"3974:162:16","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7113,"nodeType":"StructuredDocumentation","src":"4142:314:16","text":" @notice Gets the canonical ERC20 wrapper super token address given the underlying token address\n @dev We return the address if it exists and the zero address otherwise\n @param _underlyingTokenAddress Underlying ERC20 token address\n @return superTokenAddress Super token address"},"functionSelector":"eff0a89d","id":7120,"implemented":false,"kind":"function","modifiers":[],"name":"getCanonicalERC20Wrapper","nameLocation":"4470:24:16","nodeType":"FunctionDefinition","parameters":{"id":7116,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7115,"mutability":"mutable","name":"_underlyingTokenAddress","nameLocation":"4503:23:16","nodeType":"VariableDeclaration","scope":7120,"src":"4495:31:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7114,"name":"address","nodeType":"ElementaryTypeName","src":"4495:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4494:33:16"},"returnParameters":{"id":7119,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7118,"mutability":"mutable","name":"superTokenAddress","nameLocation":"4583:17:16","nodeType":"VariableDeclaration","scope":7120,"src":"4575:25:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7117,"name":"address","nodeType":"ElementaryTypeName","src":"4575:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4574:27:16"},"scope":7145,"src":"4461:141:16","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7121,"nodeType":"StructuredDocumentation","src":"4608:131:16","text":" @dev Creates a new custom super token\n @param customSuperTokenProxy address of the custom supertoken proxy"},"functionSelector":"d412d344","id":7126,"implemented":false,"kind":"function","modifiers":[],"name":"initializeCustomSuperToken","nameLocation":"4753:26:16","nodeType":"FunctionDefinition","parameters":{"id":7124,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7123,"mutability":"mutable","name":"customSuperTokenProxy","nameLocation":"4797:21:16","nodeType":"VariableDeclaration","scope":7126,"src":"4789:29:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7122,"name":"address","nodeType":"ElementaryTypeName","src":"4789:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4779:45:16"},"returnParameters":{"id":7125,"nodeType":"ParameterList","parameters":[],"src":"4841:0:16"},"scope":7145,"src":"4744:98:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":7127,"nodeType":"StructuredDocumentation","src":"4848:103:16","text":" @dev Super token logic created event\n @param tokenLogic Token logic address"},"eventSelector":"c13fb19d60857980e565bf5dae406b8802d3c1cec50c6156b30b12b874029783","id":7132,"name":"SuperTokenLogicCreated","nameLocation":"4962:22:16","nodeType":"EventDefinition","parameters":{"id":7131,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7130,"indexed":true,"mutability":"mutable","name":"tokenLogic","nameLocation":"5005:10:16","nodeType":"VariableDeclaration","scope":7132,"src":"4985:30:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":7129,"nodeType":"UserDefinedTypeName","pathNode":{"id":7128,"name":"ISuperToken","nameLocations":["4985:11:16"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"4985:11:16"},"referencedDeclaration":7015,"src":"4985:11:16","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"}],"src":"4984:32:16"},"src":"4956:61:16"},{"anonymous":false,"documentation":{"id":7133,"nodeType":"StructuredDocumentation","src":"5023:106:16","text":" @dev Super token created event\n @param token Newly created super token address"},"eventSelector":"b52c6d9d122e8c07769b96d7bb14e66db58ee03fdebaaa2f92547e9c7ef0e65f","id":7138,"name":"SuperTokenCreated","nameLocation":"5140:17:16","nodeType":"EventDefinition","parameters":{"id":7137,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7136,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"5178:5:16","nodeType":"VariableDeclaration","scope":7138,"src":"5158:25:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":7135,"nodeType":"UserDefinedTypeName","pathNode":{"id":7134,"name":"ISuperToken","nameLocations":["5158:11:16"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"5158:11:16"},"referencedDeclaration":7015,"src":"5158:11:16","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"}],"src":"5157:27:16"},"src":"5134:51:16"},{"anonymous":false,"documentation":{"id":7139,"nodeType":"StructuredDocumentation","src":"5191:120:16","text":" @dev Custom super token created event\n @param token Newly created custom super token address"},"eventSelector":"437790724a6e97b75d23117f28cdd4b1beeafc34f7a0911ef256e9334f4369a5","id":7144,"name":"CustomSuperTokenCreated","nameLocation":"5322:23:16","nodeType":"EventDefinition","parameters":{"id":7143,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7142,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"5366:5:16","nodeType":"VariableDeclaration","scope":7144,"src":"5346:25:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":7141,"nodeType":"UserDefinedTypeName","pathNode":{"id":7140,"name":"ISuperToken","nameLocations":["5346:11:16"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"5346:11:16"},"referencedDeclaration":7015,"src":"5346:11:16","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"}],"src":"5345:27:16"},"src":"5316:57:16"}],"scope":7146,"src":"270:5106:16","usedErrors":[7025,7027,7029,7031,7033,7035]}],"src":"35:5342:16"},"id":16},"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol":{"ast":{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol","exportedSymbols":{"BatchOperation":[6333],"ContextDefinitions":[6200],"FlowOperatorDefinitions":[6287],"IERC20":[145],"IERC777":[625],"ISuperAgreement":[6463],"ISuperApp":[6577],"ISuperToken":[7015],"ISuperTokenFactory":[7145],"ISuperfluid":[7667],"ISuperfluidGovernance":[7796],"ISuperfluidToken":[8082],"SuperAppDefinitions":[6124],"SuperfluidGovernanceConfigs":[6434],"TokenInfo":[8116]},"id":7668,"license":"AGPLv3","nodeType":"SourceUnit","nodes":[{"id":7147,"literals":["solidity",">=","0.8",".4"],"nodeType":"PragmaDirective","src":"35:25:17"},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance.sol","file":"./ISuperfluidGovernance.sol","id":7149,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7668,"sourceUnit":7797,"src":"62:68:17","symbolAliases":[{"foreign":{"id":7148,"name":"ISuperfluidGovernance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7796,"src":"71:21:17","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol","file":"./ISuperfluidToken.sol","id":7151,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7668,"sourceUnit":8083,"src":"131:58:17","symbolAliases":[{"foreign":{"id":7150,"name":"ISuperfluidToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8082,"src":"140:16:17","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.sol","file":"./ISuperToken.sol","id":7153,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7668,"sourceUnit":7016,"src":"190:48:17","symbolAliases":[{"foreign":{"id":7152,"name":"ISuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7015,"src":"199:11:17","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperTokenFactory.sol","file":"./ISuperTokenFactory.sol","id":7155,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7668,"sourceUnit":7146,"src":"239:62:17","symbolAliases":[{"foreign":{"id":7154,"name":"ISuperTokenFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7145,"src":"248:18:17","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol","file":"./ISuperAgreement.sol","id":7157,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7668,"sourceUnit":6464,"src":"302:56:17","symbolAliases":[{"foreign":{"id":7156,"name":"ISuperAgreement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6463,"src":"311:15:17","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperApp.sol","file":"./ISuperApp.sol","id":7159,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7668,"sourceUnit":6578,"src":"359:44:17","symbolAliases":[{"foreign":{"id":7158,"name":"ISuperApp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6577,"src":"368:9:17","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol","file":"./Definitions.sol","id":7165,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7668,"sourceUnit":6435,"src":"404:166:17","symbolAliases":[{"foreign":{"id":7160,"name":"BatchOperation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6333,"src":"417:14:17","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":7161,"name":"ContextDefinitions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6200,"src":"437:18:17","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":7162,"name":"FlowOperatorDefinitions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6287,"src":"461:23:17","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":7163,"name":"SuperAppDefinitions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6124,"src":"490:19:17","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":7164,"name":"SuperfluidGovernanceConfigs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6434,"src":"515:27:17","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.sol","file":"../tokens/TokenInfo.sol","id":7167,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7668,"sourceUnit":8117,"src":"571:52:17","symbolAliases":[{"foreign":{"id":7166,"name":"TokenInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8116,"src":"580:9:17","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":7169,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7668,"sourceUnit":146,"src":"624:72:17","symbolAliases":[{"foreign":{"id":7168,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":145,"src":"633:6:17","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC777/IERC777.sol","file":"@openzeppelin/contracts/token/ERC777/IERC777.sol","id":7171,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7668,"sourceUnit":626,"src":"697:75:17","symbolAliases":[{"foreign":{"id":7170,"name":"IERC777","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":625,"src":"706:7:17","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"ISuperfluid","contractDependencies":[],"contractKind":"interface","documentation":{"id":7172,"nodeType":"StructuredDocumentation","src":"774:345:17","text":" @title Host interface\n @author Superfluid\n @notice This is the central contract of the system where super agreement, super app\n and super token features are connected.\n The Superfluid host contract is also the entry point for the protocol users,\n where batch call and meta transaction are provided for UX improvements."},"fullyImplemented":false,"id":7667,"linearizedBaseContracts":[7667],"name":"ISuperfluid","nameLocation":"1130:11:17","nodeType":"ContractDefinition","nodes":[{"errorSelector":"ef4295f6","id":7174,"name":"HOST_AGREEMENT_CALLBACK_IS_NOT_ACTION","nameLocation":"1361:37:17","nodeType":"ErrorDefinition","parameters":{"id":7173,"nodeType":"ParameterList","parameters":[],"src":"1398:2:17"},"src":"1355:46:17"},{"errorSelector":"474e7641","id":7176,"name":"HOST_CANNOT_DOWNGRADE_TO_NON_UPGRADEABLE","nameLocation":"1439:40:17","nodeType":"ErrorDefinition","parameters":{"id":7175,"nodeType":"ParameterList","parameters":[],"src":"1479:2:17"},"src":"1433:49:17"},{"errorSelector":"0cd0ebc2","id":7178,"name":"HOST_CALL_AGREEMENT_WITH_CTX_FROM_WRONG_ADDRESS","nameLocation":"1517:47:17","nodeType":"ErrorDefinition","parameters":{"id":7177,"nodeType":"ParameterList","parameters":[],"src":"1564:2:17"},"src":"1511:56:17"},{"errorSelector":"473f7bd4","id":7180,"name":"HOST_CALL_APP_ACTION_WITH_CTX_FROM_WRONG_ADDRESS","nameLocation":"1595:48:17","nodeType":"ErrorDefinition","parameters":{"id":7179,"nodeType":"ParameterList","parameters":[],"src":"1643:2:17"},"src":"1589:57:17"},{"errorSelector":"f4c802a4","id":7182,"name":"HOST_INVALID_CONFIG_WORD","nameLocation":"1673:24:17","nodeType":"ErrorDefinition","parameters":{"id":7181,"nodeType":"ParameterList","parameters":[],"src":"1697:2:17"},"src":"1667:33:17"},{"errorSelector":"7c281a78","id":7184,"name":"HOST_MAX_256_AGREEMENTS","nameLocation":"1751:23:17","nodeType":"ErrorDefinition","parameters":{"id":7183,"nodeType":"ParameterList","parameters":[],"src":"1774:2:17"},"src":"1745:32:17"},{"errorSelector":"14f72c9f","id":7186,"name":"HOST_NON_UPGRADEABLE","nameLocation":"1829:20:17","nodeType":"ErrorDefinition","parameters":{"id":7185,"nodeType":"ParameterList","parameters":[],"src":"1849:2:17"},"src":"1823:29:17"},{"errorSelector":"67e9985b","id":7188,"name":"HOST_NON_ZERO_LENGTH_PLACEHOLDER_CTX","nameLocation":"1907:36:17","nodeType":"ErrorDefinition","parameters":{"id":7187,"nodeType":"ParameterList","parameters":[],"src":"1943:2:17"},"src":"1901:45:17"},{"errorSelector":"c5d22a4e","id":7190,"name":"HOST_ONLY_GOVERNANCE","nameLocation":"1985:20:17","nodeType":"ErrorDefinition","parameters":{"id":7189,"nodeType":"ParameterList","parameters":[],"src":"2005:2:17"},"src":"1979:29:17"},{"errorSelector":"b4770115","id":7192,"name":"HOST_UNKNOWN_BATCH_CALL_OPERATION_TYPE","nameLocation":"2063:38:17","nodeType":"ErrorDefinition","parameters":{"id":7191,"nodeType":"ParameterList","parameters":[],"src":"2101:2:17"},"src":"2057:47:17"},{"errorSelector":"dc9ddba8","id":7194,"name":"HOST_AGREEMENT_ALREADY_REGISTERED","nameLocation":"2141:33:17","nodeType":"ErrorDefinition","parameters":{"id":7193,"nodeType":"ParameterList","parameters":[],"src":"2174:2:17"},"src":"2135:42:17"},{"errorSelector":"1c9e9bea","id":7196,"name":"HOST_AGREEMENT_IS_NOT_REGISTERED","nameLocation":"2219:32:17","nodeType":"ErrorDefinition","parameters":{"id":7195,"nodeType":"ParameterList","parameters":[],"src":"2251:2:17"},"src":"2213:41:17"},{"errorSelector":"d4f6b30c","id":7198,"name":"HOST_MUST_BE_CONTRACT","nameLocation":"2297:21:17","nodeType":"ErrorDefinition","parameters":{"id":7197,"nodeType":"ParameterList","parameters":[],"src":"2318:2:17"},"src":"2291:30:17"},{"errorSelector":"619c5359","id":7200,"name":"HOST_ONLY_LISTED_AGREEMENT","nameLocation":"2375:26:17","nodeType":"ErrorDefinition","parameters":{"id":7199,"nodeType":"ParameterList","parameters":[],"src":"2401:2:17"},"src":"2369:35:17"},{"errorSelector":"a85ba64f","id":7204,"name":"APP_RULE","nameLocation":"2546:8:17","nodeType":"ErrorDefinition","parameters":{"id":7203,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7202,"mutability":"mutable","name":"_code","nameLocation":"2563:5:17","nodeType":"VariableDeclaration","scope":7204,"src":"2555:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7201,"name":"uint256","nodeType":"ElementaryTypeName","src":"2555:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2554:15:17"},"src":"2540:30:17"},{"errorSelector":"19ab84d1","id":7206,"name":"HOST_INVALID_OR_EXPIRED_SUPER_APP_REGISTRATION_KEY","nameLocation":"2625:50:17","nodeType":"ErrorDefinition","parameters":{"id":7205,"nodeType":"ParameterList","parameters":[],"src":"2675:2:17"},"src":"2619:59:17"},{"errorSelector":"163cbe43","id":7208,"name":"HOST_NOT_A_SUPER_APP","nameLocation":"2703:20:17","nodeType":"ErrorDefinition","parameters":{"id":7207,"nodeType":"ParameterList","parameters":[],"src":"2723:2:17"},"src":"2697:29:17"},{"errorSelector":"5b93ebf0","id":7210,"name":"HOST_NO_APP_REGISTRATION_PERMISSIONS","nameLocation":"2781:36:17","nodeType":"ErrorDefinition","parameters":{"id":7209,"nodeType":"ParameterList","parameters":[],"src":"2817:2:17"},"src":"2775:45:17"},{"errorSelector":"96aa315e","id":7212,"name":"HOST_RECEIVER_IS_NOT_SUPER_APP","nameLocation":"2859:30:17","nodeType":"ErrorDefinition","parameters":{"id":7211,"nodeType":"ParameterList","parameters":[],"src":"2889:2:17"},"src":"2853:39:17"},{"errorSelector":"bacfdc40","id":7214,"name":"HOST_SENDER_IS_NOT_SUPER_APP","nameLocation":"2937:28:17","nodeType":"ErrorDefinition","parameters":{"id":7213,"nodeType":"ParameterList","parameters":[],"src":"2965:2:17"},"src":"2931:37:17"},{"errorSelector":"44725270","id":7216,"name":"HOST_SOURCE_APP_NEEDS_HIGHER_APP_LEVEL","nameLocation":"3015:38:17","nodeType":"ErrorDefinition","parameters":{"id":7215,"nodeType":"ParameterList","parameters":[],"src":"3053:2:17"},"src":"3009:47:17"},{"errorSelector":"02384b64","id":7218,"name":"HOST_SUPER_APP_IS_JAILED","nameLocation":"3093:24:17","nodeType":"ErrorDefinition","parameters":{"id":7217,"nodeType":"ParameterList","parameters":[],"src":"3117:2:17"},"src":"3087:33:17"},{"errorSelector":"01b0a935","id":7220,"name":"HOST_SUPER_APP_ALREADY_REGISTERED","nameLocation":"3171:33:17","nodeType":"ErrorDefinition","parameters":{"id":7219,"nodeType":"ParameterList","parameters":[],"src":"3204:2:17"},"src":"3165:42:17"},{"errorSelector":"289533c5","id":7222,"name":"HOST_UNAUTHORIZED_SUPER_APP_FACTORY","nameLocation":"3249:35:17","nodeType":"ErrorDefinition","parameters":{"id":7221,"nodeType":"ParameterList","parameters":[],"src":"3284:2:17"},"src":"3243:44:17"},{"functionSelector":"bbe4fd50","id":7227,"implemented":false,"kind":"function","modifiers":[],"name":"getNow","nameLocation":"3844:6:17","nodeType":"FunctionDefinition","parameters":{"id":7223,"nodeType":"ParameterList","parameters":[],"src":"3850:2:17"},"returnParameters":{"id":7226,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7225,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7227,"src":"3876:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7224,"name":"uint256","nodeType":"ElementaryTypeName","src":"3876:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3875:9:17"},"scope":7667,"src":"3835:50:17","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7228,"nodeType":"StructuredDocumentation","src":"4070:81:17","text":" @dev Get the current governance address of the Superfluid host"},"functionSelector":"289b3c0d","id":7234,"implemented":false,"kind":"function","modifiers":[],"name":"getGovernance","nameLocation":"4165:13:17","nodeType":"FunctionDefinition","parameters":{"id":7229,"nodeType":"ParameterList","parameters":[],"src":"4178:2:17"},"returnParameters":{"id":7233,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7232,"mutability":"mutable","name":"governance","nameLocation":"4225:10:17","nodeType":"VariableDeclaration","scope":7234,"src":"4203:32:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidGovernance_$7796","typeString":"contract ISuperfluidGovernance"},"typeName":{"id":7231,"nodeType":"UserDefinedTypeName","pathNode":{"id":7230,"name":"ISuperfluidGovernance","nameLocations":["4203:21:17"],"nodeType":"IdentifierPath","referencedDeclaration":7796,"src":"4203:21:17"},"referencedDeclaration":7796,"src":"4203:21:17","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidGovernance_$7796","typeString":"contract ISuperfluidGovernance"}},"visibility":"internal"}],"src":"4202:34:17"},"scope":7667,"src":"4156:81:17","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7235,"nodeType":"StructuredDocumentation","src":"4243:69:17","text":" @dev Replace the current governance with a new one"},"functionSelector":"7283100c","id":7241,"implemented":false,"kind":"function","modifiers":[],"name":"replaceGovernance","nameLocation":"4326:17:17","nodeType":"FunctionDefinition","parameters":{"id":7239,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7238,"mutability":"mutable","name":"newGov","nameLocation":"4366:6:17","nodeType":"VariableDeclaration","scope":7241,"src":"4344:28:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidGovernance_$7796","typeString":"contract ISuperfluidGovernance"},"typeName":{"id":7237,"nodeType":"UserDefinedTypeName","pathNode":{"id":7236,"name":"ISuperfluidGovernance","nameLocations":["4344:21:17"],"nodeType":"IdentifierPath","referencedDeclaration":7796,"src":"4344:21:17"},"referencedDeclaration":7796,"src":"4344:21:17","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidGovernance_$7796","typeString":"contract ISuperfluidGovernance"}},"visibility":"internal"}],"src":"4343:30:17"},"returnParameters":{"id":7240,"nodeType":"ParameterList","parameters":[],"src":"4382:0:17"},"scope":7667,"src":"4317:66:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":7242,"nodeType":"StructuredDocumentation","src":"4388:169:17","text":" @dev Governance replaced event\n @param oldGov Address of the old governance contract\n @param newGov Address of the new governance contract"},"eventSelector":"13abda02e63c790d0e2818b251282cfe5cbe0a8abd69c54bf5d2260c0907bd2e","id":7250,"name":"GovernanceReplaced","nameLocation":"4568:18:17","nodeType":"EventDefinition","parameters":{"id":7249,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7245,"indexed":false,"mutability":"mutable","name":"oldGov","nameLocation":"4609:6:17","nodeType":"VariableDeclaration","scope":7250,"src":"4587:28:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidGovernance_$7796","typeString":"contract ISuperfluidGovernance"},"typeName":{"id":7244,"nodeType":"UserDefinedTypeName","pathNode":{"id":7243,"name":"ISuperfluidGovernance","nameLocations":["4587:21:17"],"nodeType":"IdentifierPath","referencedDeclaration":7796,"src":"4587:21:17"},"referencedDeclaration":7796,"src":"4587:21:17","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidGovernance_$7796","typeString":"contract ISuperfluidGovernance"}},"visibility":"internal"},{"constant":false,"id":7248,"indexed":false,"mutability":"mutable","name":"newGov","nameLocation":"4639:6:17","nodeType":"VariableDeclaration","scope":7250,"src":"4617:28:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidGovernance_$7796","typeString":"contract ISuperfluidGovernance"},"typeName":{"id":7247,"nodeType":"UserDefinedTypeName","pathNode":{"id":7246,"name":"ISuperfluidGovernance","nameLocations":["4617:21:17"],"nodeType":"IdentifierPath","referencedDeclaration":7796,"src":"4617:21:17"},"referencedDeclaration":7796,"src":"4617:21:17","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidGovernance_$7796","typeString":"contract ISuperfluidGovernance"}},"visibility":"internal"}],"src":"4586:60:17"},"src":"4562:85:17"},{"documentation":{"id":7251,"nodeType":"StructuredDocumentation","src":"4844:188:17","text":" @dev Register a new agreement class to the system\n @param agreementClassLogic Initial agreement class code\n @custom:modifiers \n - onlyGovernance"},"functionSelector":"15a024e1","id":7257,"implemented":false,"kind":"function","modifiers":[],"name":"registerAgreementClass","nameLocation":"5046:22:17","nodeType":"FunctionDefinition","parameters":{"id":7255,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7254,"mutability":"mutable","name":"agreementClassLogic","nameLocation":"5085:19:17","nodeType":"VariableDeclaration","scope":7257,"src":"5069:35:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperAgreement_$6463","typeString":"contract ISuperAgreement"},"typeName":{"id":7253,"nodeType":"UserDefinedTypeName","pathNode":{"id":7252,"name":"ISuperAgreement","nameLocations":["5069:15:17"],"nodeType":"IdentifierPath","referencedDeclaration":6463,"src":"5069:15:17"},"referencedDeclaration":6463,"src":"5069:15:17","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperAgreement_$6463","typeString":"contract ISuperAgreement"}},"visibility":"internal"}],"src":"5068:37:17"},"returnParameters":{"id":7256,"nodeType":"ParameterList","parameters":[],"src":"5114:0:17"},"scope":7667,"src":"5037:78:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":7258,"nodeType":"StructuredDocumentation","src":"5120:280:17","text":" @notice Agreement class registered event\n @dev agreementType is the keccak256 hash of: \"org.superfluid-finance.agreements..\"\n @param agreementType The agreement type registered\n @param code Address of the new agreement"},"eventSelector":"878135063a6cfb3bc333e534b1fdc83f4f12221cad6705c31c0567048a8bd3d1","id":7264,"name":"AgreementClassRegistered","nameLocation":"5411:24:17","nodeType":"EventDefinition","parameters":{"id":7263,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7260,"indexed":false,"mutability":"mutable","name":"agreementType","nameLocation":"5444:13:17","nodeType":"VariableDeclaration","scope":7264,"src":"5436:21:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7259,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5436:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":7262,"indexed":false,"mutability":"mutable","name":"code","nameLocation":"5467:4:17","nodeType":"VariableDeclaration","scope":7264,"src":"5459:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7261,"name":"address","nodeType":"ElementaryTypeName","src":"5459:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5435:37:17"},"src":"5405:68:17"},{"documentation":{"id":7265,"nodeType":"StructuredDocumentation","src":"5479:176:17","text":" @dev Update code of an agreement class\n @param agreementClassLogic New code for the agreement class\n @custom:modifiers \n - onlyGovernance"},"functionSelector":"06cecba8","id":7271,"implemented":false,"kind":"function","modifiers":[],"name":"updateAgreementClass","nameLocation":"5669:20:17","nodeType":"FunctionDefinition","parameters":{"id":7269,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7268,"mutability":"mutable","name":"agreementClassLogic","nameLocation":"5706:19:17","nodeType":"VariableDeclaration","scope":7271,"src":"5690:35:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperAgreement_$6463","typeString":"contract ISuperAgreement"},"typeName":{"id":7267,"nodeType":"UserDefinedTypeName","pathNode":{"id":7266,"name":"ISuperAgreement","nameLocations":["5690:15:17"],"nodeType":"IdentifierPath","referencedDeclaration":6463,"src":"5690:15:17"},"referencedDeclaration":6463,"src":"5690:15:17","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperAgreement_$6463","typeString":"contract ISuperAgreement"}},"visibility":"internal"}],"src":"5689:37:17"},"returnParameters":{"id":7270,"nodeType":"ParameterList","parameters":[],"src":"5735:0:17"},"scope":7667,"src":"5660:76:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":7272,"nodeType":"StructuredDocumentation","src":"5741:274:17","text":" @notice Agreement class updated event\n @dev agreementType is the keccak256 hash of: \"org.superfluid-finance.agreements..\"\n @param agreementType The agreement type updated\n @param code Address of the new agreement"},"eventSelector":"9279aa773f2b588996032d8de89911555039f28b13a11a7c17074330bc082d9a","id":7278,"name":"AgreementClassUpdated","nameLocation":"6026:21:17","nodeType":"EventDefinition","parameters":{"id":7277,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7274,"indexed":false,"mutability":"mutable","name":"agreementType","nameLocation":"6056:13:17","nodeType":"VariableDeclaration","scope":7278,"src":"6048:21:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7273,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6048:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":7276,"indexed":false,"mutability":"mutable","name":"code","nameLocation":"6079:4:17","nodeType":"VariableDeclaration","scope":7278,"src":"6071:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7275,"name":"address","nodeType":"ElementaryTypeName","src":"6071:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6047:37:17"},"src":"6020:65:17"},{"documentation":{"id":7279,"nodeType":"StructuredDocumentation","src":"6091:181:17","text":" @notice Check if the agreement type is whitelisted\n @dev agreementType is the keccak256 hash of: \"org.superfluid-finance.agreements..\""},"functionSelector":"e8dccb7d","id":7286,"implemented":false,"kind":"function","modifiers":[],"name":"isAgreementTypeListed","nameLocation":"6286:21:17","nodeType":"FunctionDefinition","parameters":{"id":7282,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7281,"mutability":"mutable","name":"agreementType","nameLocation":"6316:13:17","nodeType":"VariableDeclaration","scope":7286,"src":"6308:21:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7280,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6308:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6307:23:17"},"returnParameters":{"id":7285,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7284,"mutability":"mutable","name":"yes","nameLocation":"6358:3:17","nodeType":"VariableDeclaration","scope":7286,"src":"6353:8:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7283,"name":"bool","nodeType":"ElementaryTypeName","src":"6353:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6352:10:17"},"scope":7667,"src":"6277:86:17","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7287,"nodeType":"StructuredDocumentation","src":"6369:65:17","text":" @dev Check if the agreement class is whitelisted"},"functionSelector":"8ca48484","id":7295,"implemented":false,"kind":"function","modifiers":[],"name":"isAgreementClassListed","nameLocation":"6448:22:17","nodeType":"FunctionDefinition","parameters":{"id":7291,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7290,"mutability":"mutable","name":"agreementClass","nameLocation":"6487:14:17","nodeType":"VariableDeclaration","scope":7295,"src":"6471:30:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperAgreement_$6463","typeString":"contract ISuperAgreement"},"typeName":{"id":7289,"nodeType":"UserDefinedTypeName","pathNode":{"id":7288,"name":"ISuperAgreement","nameLocations":["6471:15:17"],"nodeType":"IdentifierPath","referencedDeclaration":6463,"src":"6471:15:17"},"referencedDeclaration":6463,"src":"6471:15:17","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperAgreement_$6463","typeString":"contract ISuperAgreement"}},"visibility":"internal"}],"src":"6470:32:17"},"returnParameters":{"id":7294,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7293,"mutability":"mutable","name":"yes","nameLocation":"6530:3:17","nodeType":"VariableDeclaration","scope":7295,"src":"6525:8:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7292,"name":"bool","nodeType":"ElementaryTypeName","src":"6525:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6524:10:17"},"scope":7667,"src":"6439:96:17","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7296,"nodeType":"StructuredDocumentation","src":"6541:158:17","text":" @notice Get agreement class\n @dev agreementType is the keccak256 hash of: \"org.superfluid-finance.agreements..\""},"functionSelector":"b6d200de","id":7304,"implemented":false,"kind":"function","modifiers":[],"name":"getAgreementClass","nameLocation":"6713:17:17","nodeType":"FunctionDefinition","parameters":{"id":7299,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7298,"mutability":"mutable","name":"agreementType","nameLocation":"6739:13:17","nodeType":"VariableDeclaration","scope":7304,"src":"6731:21:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7297,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6731:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6730:23:17"},"returnParameters":{"id":7303,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7302,"mutability":"mutable","name":"agreementClass","nameLocation":"6792:14:17","nodeType":"VariableDeclaration","scope":7304,"src":"6776:30:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperAgreement_$6463","typeString":"contract ISuperAgreement"},"typeName":{"id":7301,"nodeType":"UserDefinedTypeName","pathNode":{"id":7300,"name":"ISuperAgreement","nameLocations":["6776:15:17"],"nodeType":"IdentifierPath","referencedDeclaration":6463,"src":"6776:15:17"},"referencedDeclaration":6463,"src":"6776:15:17","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperAgreement_$6463","typeString":"contract ISuperAgreement"}},"visibility":"internal"}],"src":"6775:32:17"},"scope":7667,"src":"6704:104:17","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7305,"nodeType":"StructuredDocumentation","src":"6814:113:17","text":" @dev Map list of the agreement classes using a bitmap\n @param bitmap Agreement class bitmap"},"functionSelector":"c56a069d","id":7314,"implemented":false,"kind":"function","modifiers":[],"name":"mapAgreementClasses","nameLocation":"6941:19:17","nodeType":"FunctionDefinition","parameters":{"id":7308,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7307,"mutability":"mutable","name":"bitmap","nameLocation":"6969:6:17","nodeType":"VariableDeclaration","scope":7314,"src":"6961:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7306,"name":"uint256","nodeType":"ElementaryTypeName","src":"6961:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6960:16:17"},"returnParameters":{"id":7313,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7312,"mutability":"mutable","name":"agreementClasses","nameLocation":"7041:16:17","nodeType":"VariableDeclaration","scope":7314,"src":"7016:41:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_ISuperAgreement_$6463_$dyn_memory_ptr","typeString":"contract ISuperAgreement[]"},"typeName":{"baseType":{"id":7310,"nodeType":"UserDefinedTypeName","pathNode":{"id":7309,"name":"ISuperAgreement","nameLocations":["7016:15:17"],"nodeType":"IdentifierPath","referencedDeclaration":6463,"src":"7016:15:17"},"referencedDeclaration":6463,"src":"7016:15:17","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperAgreement_$6463","typeString":"contract ISuperAgreement"}},"id":7311,"nodeType":"ArrayTypeName","src":"7016:17:17","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_ISuperAgreement_$6463_$dyn_storage_ptr","typeString":"contract ISuperAgreement[]"}},"visibility":"internal"}],"src":"7015:43:17"},"scope":7667,"src":"6932:127:17","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7315,"nodeType":"StructuredDocumentation","src":"7065:236:17","text":" @notice Create a new bitmask by adding a agreement class to it\n @dev agreementType is the keccak256 hash of: \"org.superfluid-finance.agreements..\"\n @param bitmap Agreement class bitmap"},"functionSelector":"bced3ddc","id":7324,"implemented":false,"kind":"function","modifiers":[],"name":"addToAgreementClassesBitmap","nameLocation":"7315:27:17","nodeType":"FunctionDefinition","parameters":{"id":7320,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7317,"mutability":"mutable","name":"bitmap","nameLocation":"7351:6:17","nodeType":"VariableDeclaration","scope":7324,"src":"7343:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7316,"name":"uint256","nodeType":"ElementaryTypeName","src":"7343:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7319,"mutability":"mutable","name":"agreementType","nameLocation":"7367:13:17","nodeType":"VariableDeclaration","scope":7324,"src":"7359:21:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7318,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7359:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7342:39:17"},"returnParameters":{"id":7323,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7322,"mutability":"mutable","name":"newBitmap","nameLocation":"7429:9:17","nodeType":"VariableDeclaration","scope":7324,"src":"7421:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7321,"name":"uint256","nodeType":"ElementaryTypeName","src":"7421:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7420:19:17"},"scope":7667,"src":"7306:134:17","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7325,"nodeType":"StructuredDocumentation","src":"7446:240:17","text":" @notice Create a new bitmask by removing a agreement class from it\n @dev agreementType is the keccak256 hash of: \"org.superfluid-finance.agreements..\"\n @param bitmap Agreement class bitmap"},"functionSelector":"a5dbbbcd","id":7334,"implemented":false,"kind":"function","modifiers":[],"name":"removeFromAgreementClassesBitmap","nameLocation":"7700:32:17","nodeType":"FunctionDefinition","parameters":{"id":7330,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7327,"mutability":"mutable","name":"bitmap","nameLocation":"7741:6:17","nodeType":"VariableDeclaration","scope":7334,"src":"7733:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7326,"name":"uint256","nodeType":"ElementaryTypeName","src":"7733:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7329,"mutability":"mutable","name":"agreementType","nameLocation":"7757:13:17","nodeType":"VariableDeclaration","scope":7334,"src":"7749:21:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7328,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7749:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7732:39:17"},"returnParameters":{"id":7333,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7332,"mutability":"mutable","name":"newBitmap","nameLocation":"7819:9:17","nodeType":"VariableDeclaration","scope":7334,"src":"7811:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7331,"name":"uint256","nodeType":"ElementaryTypeName","src":"7811:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7810:19:17"},"scope":7667,"src":"7691:139:17","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7335,"nodeType":"StructuredDocumentation","src":"8023:86:17","text":" @dev Get the super token factory\n @return factory The factory"},"functionSelector":"731aed6e","id":7341,"implemented":false,"kind":"function","modifiers":[],"name":"getSuperTokenFactory","nameLocation":"8123:20:17","nodeType":"FunctionDefinition","parameters":{"id":7336,"nodeType":"ParameterList","parameters":[],"src":"8143:2:17"},"returnParameters":{"id":7340,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7339,"mutability":"mutable","name":"factory","nameLocation":"8188:7:17","nodeType":"VariableDeclaration","scope":7341,"src":"8169:26:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperTokenFactory_$7145","typeString":"contract ISuperTokenFactory"},"typeName":{"id":7338,"nodeType":"UserDefinedTypeName","pathNode":{"id":7337,"name":"ISuperTokenFactory","nameLocations":["8169:18:17"],"nodeType":"IdentifierPath","referencedDeclaration":7145,"src":"8169:18:17"},"referencedDeclaration":7145,"src":"8169:18:17","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperTokenFactory_$7145","typeString":"contract ISuperTokenFactory"}},"visibility":"internal"}],"src":"8168:28:17"},"scope":7667,"src":"8114:83:17","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7342,"nodeType":"StructuredDocumentation","src":"8203:134:17","text":" @dev Get the super token factory logic (applicable to upgradable deployment)\n @return logic The factory logic"},"functionSelector":"f2e55caf","id":7347,"implemented":false,"kind":"function","modifiers":[],"name":"getSuperTokenFactoryLogic","nameLocation":"8351:25:17","nodeType":"FunctionDefinition","parameters":{"id":7343,"nodeType":"ParameterList","parameters":[],"src":"8376:2:17"},"returnParameters":{"id":7346,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7345,"mutability":"mutable","name":"logic","nameLocation":"8410:5:17","nodeType":"VariableDeclaration","scope":7347,"src":"8402:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7344,"name":"address","nodeType":"ElementaryTypeName","src":"8402:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8401:15:17"},"scope":7667,"src":"8342:75:17","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7348,"nodeType":"StructuredDocumentation","src":"8423:93:17","text":" @dev Update super token factory\n @param newFactory New factory logic"},"functionSelector":"54fbc493","id":7354,"implemented":false,"kind":"function","modifiers":[],"name":"updateSuperTokenFactory","nameLocation":"8530:23:17","nodeType":"FunctionDefinition","parameters":{"id":7352,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7351,"mutability":"mutable","name":"newFactory","nameLocation":"8573:10:17","nodeType":"VariableDeclaration","scope":7354,"src":"8554:29:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperTokenFactory_$7145","typeString":"contract ISuperTokenFactory"},"typeName":{"id":7350,"nodeType":"UserDefinedTypeName","pathNode":{"id":7349,"name":"ISuperTokenFactory","nameLocations":["8554:18:17"],"nodeType":"IdentifierPath","referencedDeclaration":7145,"src":"8554:18:17"},"referencedDeclaration":7145,"src":"8554:18:17","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperTokenFactory_$7145","typeString":"contract ISuperTokenFactory"}},"visibility":"internal"}],"src":"8553:31:17"},"returnParameters":{"id":7353,"nodeType":"ParameterList","parameters":[],"src":"8593:0:17"},"scope":7667,"src":"8521:73:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":7355,"nodeType":"StructuredDocumentation","src":"8599:108:17","text":" @dev SuperToken factory updated event\n @param newFactory Address of the new factory"},"eventSelector":"ce13a9895a1719ad4493b2ac1a9bfb36070566161abab408e7ecbe586da8d499","id":7360,"name":"SuperTokenFactoryUpdated","nameLocation":"8718:24:17","nodeType":"EventDefinition","parameters":{"id":7359,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7358,"indexed":false,"mutability":"mutable","name":"newFactory","nameLocation":"8762:10:17","nodeType":"VariableDeclaration","scope":7360,"src":"8743:29:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperTokenFactory_$7145","typeString":"contract ISuperTokenFactory"},"typeName":{"id":7357,"nodeType":"UserDefinedTypeName","pathNode":{"id":7356,"name":"ISuperTokenFactory","nameLocations":["8743:18:17"],"nodeType":"IdentifierPath","referencedDeclaration":7145,"src":"8743:18:17"},"referencedDeclaration":7145,"src":"8743:18:17","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperTokenFactory_$7145","typeString":"contract ISuperTokenFactory"}},"visibility":"internal"}],"src":"8742:31:17"},"src":"8712:62:17"},{"documentation":{"id":7361,"nodeType":"StructuredDocumentation","src":"8780:147:17","text":" @notice Update the super token logic to the latest\n @dev Refer to ISuperTokenFactory.Upgradability for expected behaviours"},"functionSelector":"787afde7","id":7367,"implemented":false,"kind":"function","modifiers":[],"name":"updateSuperTokenLogic","nameLocation":"8941:21:17","nodeType":"FunctionDefinition","parameters":{"id":7365,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7364,"mutability":"mutable","name":"token","nameLocation":"8975:5:17","nodeType":"VariableDeclaration","scope":7367,"src":"8963:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":7363,"nodeType":"UserDefinedTypeName","pathNode":{"id":7362,"name":"ISuperToken","nameLocations":["8963:11:17"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"8963:11:17"},"referencedDeclaration":7015,"src":"8963:11:17","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"}],"src":"8962:19:17"},"returnParameters":{"id":7366,"nodeType":"ParameterList","parameters":[],"src":"8990:0:17"},"scope":7667,"src":"8932:59:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":7368,"nodeType":"StructuredDocumentation","src":"8996:109:17","text":" @dev SuperToken logic updated event\n @param code Address of the new SuperToken logic"},"eventSelector":"840acbd291b38534819f47f875839277e502f40e1c7bfea2c5fc2c8017442cd3","id":7375,"name":"SuperTokenLogicUpdated","nameLocation":"9116:22:17","nodeType":"EventDefinition","parameters":{"id":7374,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7371,"indexed":true,"mutability":"mutable","name":"token","nameLocation":"9159:5:17","nodeType":"VariableDeclaration","scope":7375,"src":"9139:25:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":7370,"nodeType":"UserDefinedTypeName","pathNode":{"id":7369,"name":"ISuperToken","nameLocations":["9139:11:17"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"9139:11:17"},"referencedDeclaration":7015,"src":"9139:11:17","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"},{"constant":false,"id":7373,"indexed":false,"mutability":"mutable","name":"code","nameLocation":"9174:4:17","nodeType":"VariableDeclaration","scope":7375,"src":"9166:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7372,"name":"address","nodeType":"ElementaryTypeName","src":"9166:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9138:41:17"},"src":"9110:70:17"},{"documentation":{"id":7376,"nodeType":"StructuredDocumentation","src":"9367:383:17","text":" @dev Message sender (must be a contract) declares itself as a super app.\n @custom:deprecated you should use `registerAppWithKey` or `registerAppByFactory` instead,\n because app registration is currently governance permissioned on mainnets.\n @param configWord The super app manifest configuration, flags are defined in\n `SuperAppDefinitions`"},"functionSelector":"ad3915c8","id":7381,"implemented":false,"kind":"function","modifiers":[],"name":"registerApp","nameLocation":"9764:11:17","nodeType":"FunctionDefinition","parameters":{"id":7379,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7378,"mutability":"mutable","name":"configWord","nameLocation":"9784:10:17","nodeType":"VariableDeclaration","scope":7381,"src":"9776:18:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7377,"name":"uint256","nodeType":"ElementaryTypeName","src":"9776:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9775:20:17"},"returnParameters":{"id":7380,"nodeType":"ParameterList","parameters":[],"src":"9804:0:17"},"scope":7667,"src":"9755:50:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":7382,"nodeType":"StructuredDocumentation","src":"9810:84:17","text":" @dev App registered event\n @param app Address of jailed app"},"eventSelector":"0d540ad8f39e07d19909687352b9fa017405d93c91a6760981fbae9cf28bfef7","id":7387,"name":"AppRegistered","nameLocation":"9905:13:17","nodeType":"EventDefinition","parameters":{"id":7386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7385,"indexed":true,"mutability":"mutable","name":"app","nameLocation":"9937:3:17","nodeType":"VariableDeclaration","scope":7387,"src":"9919:21:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6577","typeString":"contract ISuperApp"},"typeName":{"id":7384,"nodeType":"UserDefinedTypeName","pathNode":{"id":7383,"name":"ISuperApp","nameLocations":["9919:9:17"],"nodeType":"IdentifierPath","referencedDeclaration":6577,"src":"9919:9:17"},"referencedDeclaration":6577,"src":"9919:9:17","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6577","typeString":"contract ISuperApp"}},"visibility":"internal"}],"src":"9918:23:17"},"src":"9899:43:17"},{"documentation":{"id":7388,"nodeType":"StructuredDocumentation","src":"9948:655:17","text":" @dev Message sender declares itself as a super app.\n @param configWord The super app manifest configuration, flags are defined in `SuperAppDefinitions`\n @param registrationKey The registration key issued by the governance, needed to register on a mainnet.\n @notice See https://github.com/superfluid-finance/protocol-monorepo/wiki/Super-App-White-listing-Guide\n On testnets or in dev environment, a placeholder (e.g. empty string) can be used.\n While the message sender must be the super app itself, the transaction sender (tx.origin)\n must be the deployer account the registration key was issued for."},"functionSelector":"bd1c448b","id":7395,"implemented":false,"kind":"function","modifiers":[],"name":"registerAppWithKey","nameLocation":"10617:18:17","nodeType":"FunctionDefinition","parameters":{"id":7393,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7390,"mutability":"mutable","name":"configWord","nameLocation":"10644:10:17","nodeType":"VariableDeclaration","scope":7395,"src":"10636:18:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7389,"name":"uint256","nodeType":"ElementaryTypeName","src":"10636:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7392,"mutability":"mutable","name":"registrationKey","nameLocation":"10672:15:17","nodeType":"VariableDeclaration","scope":7395,"src":"10656:31:17","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":7391,"name":"string","nodeType":"ElementaryTypeName","src":"10656:6:17","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"10635:53:17"},"returnParameters":{"id":7394,"nodeType":"ParameterList","parameters":[],"src":"10697:0:17"},"scope":7667,"src":"10608:90:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7396,"nodeType":"StructuredDocumentation","src":"10704:400:17","text":" @dev Message sender (must be a contract) declares app as a super app\n @param configWord The super app manifest configuration, flags are defined in `SuperAppDefinitions`\n @notice On mainnet deployments, only factory contracts pre-authorized by governance can use this.\n See https://github.com/superfluid-finance/protocol-monorepo/wiki/Super-App-White-listing-Guide"},"functionSelector":"f3733052","id":7404,"implemented":false,"kind":"function","modifiers":[],"name":"registerAppByFactory","nameLocation":"11118:20:17","nodeType":"FunctionDefinition","parameters":{"id":7402,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7399,"mutability":"mutable","name":"app","nameLocation":"11149:3:17","nodeType":"VariableDeclaration","scope":7404,"src":"11139:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6577","typeString":"contract ISuperApp"},"typeName":{"id":7398,"nodeType":"UserDefinedTypeName","pathNode":{"id":7397,"name":"ISuperApp","nameLocations":["11139:9:17"],"nodeType":"IdentifierPath","referencedDeclaration":6577,"src":"11139:9:17"},"referencedDeclaration":6577,"src":"11139:9:17","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6577","typeString":"contract ISuperApp"}},"visibility":"internal"},{"constant":false,"id":7401,"mutability":"mutable","name":"configWord","nameLocation":"11162:10:17","nodeType":"VariableDeclaration","scope":7404,"src":"11154:18:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7400,"name":"uint256","nodeType":"ElementaryTypeName","src":"11154:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11138:35:17"},"returnParameters":{"id":7403,"nodeType":"ParameterList","parameters":[],"src":"11182:0:17"},"scope":7667,"src":"11109:74:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7405,"nodeType":"StructuredDocumentation","src":"11189:90:17","text":" @dev Query if the app is registered\n @param app Super app address"},"functionSelector":"3ca3ad4e","id":7413,"implemented":false,"kind":"function","modifiers":[],"name":"isApp","nameLocation":"11293:5:17","nodeType":"FunctionDefinition","parameters":{"id":7409,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7408,"mutability":"mutable","name":"app","nameLocation":"11309:3:17","nodeType":"VariableDeclaration","scope":7413,"src":"11299:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6577","typeString":"contract ISuperApp"},"typeName":{"id":7407,"nodeType":"UserDefinedTypeName","pathNode":{"id":7406,"name":"ISuperApp","nameLocations":["11299:9:17"],"nodeType":"IdentifierPath","referencedDeclaration":6577,"src":"11299:9:17"},"referencedDeclaration":6577,"src":"11299:9:17","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6577","typeString":"contract ISuperApp"}},"visibility":"internal"}],"src":"11298:15:17"},"returnParameters":{"id":7412,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7411,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7413,"src":"11336:4:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7410,"name":"bool","nodeType":"ElementaryTypeName","src":"11336:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"11335:6:17"},"scope":7667,"src":"11284:58:17","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7414,"nodeType":"StructuredDocumentation","src":"11348:83:17","text":" @dev Query app callbacklevel\n @param app Super app address"},"functionSelector":"9378fa13","id":7422,"implemented":false,"kind":"function","modifiers":[],"name":"getAppCallbackLevel","nameLocation":"11445:19:17","nodeType":"FunctionDefinition","parameters":{"id":7418,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7417,"mutability":"mutable","name":"app","nameLocation":"11475:3:17","nodeType":"VariableDeclaration","scope":7422,"src":"11465:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6577","typeString":"contract ISuperApp"},"typeName":{"id":7416,"nodeType":"UserDefinedTypeName","pathNode":{"id":7415,"name":"ISuperApp","nameLocations":["11465:9:17"],"nodeType":"IdentifierPath","referencedDeclaration":6577,"src":"11465:9:17"},"referencedDeclaration":6577,"src":"11465:9:17","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6577","typeString":"contract ISuperApp"}},"visibility":"internal"}],"src":"11464:15:17"},"returnParameters":{"id":7421,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7420,"mutability":"mutable","name":"appCallbackLevel","nameLocation":"11508:16:17","nodeType":"VariableDeclaration","scope":7422,"src":"11502:22:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":7419,"name":"uint8","nodeType":"ElementaryTypeName","src":"11502:5:17","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"11501:24:17"},"scope":7667,"src":"11436:90:17","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7423,"nodeType":"StructuredDocumentation","src":"11532:93:17","text":" @dev Get the manifest of the super app\n @param app Super app address"},"functionSelector":"f9f522f4","id":7435,"implemented":false,"kind":"function","modifiers":[],"name":"getAppManifest","nameLocation":"11639:14:17","nodeType":"FunctionDefinition","parameters":{"id":7427,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7426,"mutability":"mutable","name":"app","nameLocation":"11673:3:17","nodeType":"VariableDeclaration","scope":7435,"src":"11663:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6577","typeString":"contract ISuperApp"},"typeName":{"id":7425,"nodeType":"UserDefinedTypeName","pathNode":{"id":7424,"name":"ISuperApp","nameLocations":["11663:9:17"],"nodeType":"IdentifierPath","referencedDeclaration":6577,"src":"11663:9:17"},"referencedDeclaration":6577,"src":"11663:9:17","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6577","typeString":"contract ISuperApp"}},"visibility":"internal"}],"src":"11653:29:17"},"returnParameters":{"id":7434,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7429,"mutability":"mutable","name":"isSuperApp","nameLocation":"11740:10:17","nodeType":"VariableDeclaration","scope":7435,"src":"11735:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7428,"name":"bool","nodeType":"ElementaryTypeName","src":"11735:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":7431,"mutability":"mutable","name":"isJailed","nameLocation":"11769:8:17","nodeType":"VariableDeclaration","scope":7435,"src":"11764:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7430,"name":"bool","nodeType":"ElementaryTypeName","src":"11764:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":7433,"mutability":"mutable","name":"noopMask","nameLocation":"11799:8:17","nodeType":"VariableDeclaration","scope":7435,"src":"11791:16:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7432,"name":"uint256","nodeType":"ElementaryTypeName","src":"11791:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11721:96:17"},"scope":7667,"src":"11630:188:17","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7436,"nodeType":"StructuredDocumentation","src":"11824:92:17","text":" @dev Query if the app has been jailed\n @param app Super app address"},"functionSelector":"6b4f3335","id":7444,"implemented":false,"kind":"function","modifiers":[],"name":"isAppJailed","nameLocation":"11930:11:17","nodeType":"FunctionDefinition","parameters":{"id":7440,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7439,"mutability":"mutable","name":"app","nameLocation":"11952:3:17","nodeType":"VariableDeclaration","scope":7444,"src":"11942:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6577","typeString":"contract ISuperApp"},"typeName":{"id":7438,"nodeType":"UserDefinedTypeName","pathNode":{"id":7437,"name":"ISuperApp","nameLocations":["11942:9:17"],"nodeType":"IdentifierPath","referencedDeclaration":6577,"src":"11942:9:17"},"referencedDeclaration":6577,"src":"11942:9:17","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6577","typeString":"contract ISuperApp"}},"visibility":"internal"}],"src":"11941:15:17"},"returnParameters":{"id":7443,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7442,"mutability":"mutable","name":"isJail","nameLocation":"11985:6:17","nodeType":"VariableDeclaration","scope":7444,"src":"11980:11:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7441,"name":"bool","nodeType":"ElementaryTypeName","src":"11980:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"11979:13:17"},"scope":7667,"src":"11921:72:17","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7445,"nodeType":"StructuredDocumentation","src":"11999:153:17","text":" @dev Whitelist the target app for app composition for the source app (msg.sender)\n @param targetApp The target super app address"},"functionSelector":"57121e0c","id":7451,"implemented":false,"kind":"function","modifiers":[],"name":"allowCompositeApp","nameLocation":"12166:17:17","nodeType":"FunctionDefinition","parameters":{"id":7449,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7448,"mutability":"mutable","name":"targetApp","nameLocation":"12194:9:17","nodeType":"VariableDeclaration","scope":7451,"src":"12184:19:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6577","typeString":"contract ISuperApp"},"typeName":{"id":7447,"nodeType":"UserDefinedTypeName","pathNode":{"id":7446,"name":"ISuperApp","nameLocations":["12184:9:17"],"nodeType":"IdentifierPath","referencedDeclaration":6577,"src":"12184:9:17"},"referencedDeclaration":6577,"src":"12184:9:17","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6577","typeString":"contract ISuperApp"}},"visibility":"internal"}],"src":"12183:21:17"},"returnParameters":{"id":7450,"nodeType":"ParameterList","parameters":[],"src":"12213:0:17"},"scope":7667,"src":"12157:57:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7452,"nodeType":"StructuredDocumentation","src":"12220:184:17","text":" @dev Query if source app is allowed to call the target app as downstream app\n @param app Super app address\n @param targetApp The target super app address"},"functionSelector":"bb84cfa1","id":7463,"implemented":false,"kind":"function","modifiers":[],"name":"isCompositeAppAllowed","nameLocation":"12418:21:17","nodeType":"FunctionDefinition","parameters":{"id":7459,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7455,"mutability":"mutable","name":"app","nameLocation":"12459:3:17","nodeType":"VariableDeclaration","scope":7463,"src":"12449:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6577","typeString":"contract ISuperApp"},"typeName":{"id":7454,"nodeType":"UserDefinedTypeName","pathNode":{"id":7453,"name":"ISuperApp","nameLocations":["12449:9:17"],"nodeType":"IdentifierPath","referencedDeclaration":6577,"src":"12449:9:17"},"referencedDeclaration":6577,"src":"12449:9:17","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6577","typeString":"contract ISuperApp"}},"visibility":"internal"},{"constant":false,"id":7458,"mutability":"mutable","name":"targetApp","nameLocation":"12482:9:17","nodeType":"VariableDeclaration","scope":7463,"src":"12472:19:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6577","typeString":"contract ISuperApp"},"typeName":{"id":7457,"nodeType":"UserDefinedTypeName","pathNode":{"id":7456,"name":"ISuperApp","nameLocations":["12472:9:17"],"nodeType":"IdentifierPath","referencedDeclaration":6577,"src":"12472:9:17"},"referencedDeclaration":6577,"src":"12472:9:17","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6577","typeString":"contract ISuperApp"}},"visibility":"internal"}],"src":"12439:58:17"},"returnParameters":{"id":7462,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7461,"mutability":"mutable","name":"isAppAllowed","nameLocation":"12542:12:17","nodeType":"VariableDeclaration","scope":7463,"src":"12537:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7460,"name":"bool","nodeType":"ElementaryTypeName","src":"12537:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"12536:19:17"},"scope":7667,"src":"12409:147:17","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7464,"nodeType":"StructuredDocumentation","src":"12948:393:17","text":" @dev (For agreements) StaticCall the app before callback\n @param app The super app.\n @param callData The call data sending to the super app.\n @param isTermination Is it a termination callback?\n @param ctx Current ctx, it will be validated.\n @return cbdata Data returned from the callback."},"functionSelector":"74041e02","id":7478,"implemented":false,"kind":"function","modifiers":[],"name":"callAppBeforeCallback","nameLocation":"13355:21:17","nodeType":"FunctionDefinition","parameters":{"id":7474,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7467,"mutability":"mutable","name":"app","nameLocation":"13396:3:17","nodeType":"VariableDeclaration","scope":7478,"src":"13386:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6577","typeString":"contract ISuperApp"},"typeName":{"id":7466,"nodeType":"UserDefinedTypeName","pathNode":{"id":7465,"name":"ISuperApp","nameLocations":["13386:9:17"],"nodeType":"IdentifierPath","referencedDeclaration":6577,"src":"13386:9:17"},"referencedDeclaration":6577,"src":"13386:9:17","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6577","typeString":"contract ISuperApp"}},"visibility":"internal"},{"constant":false,"id":7469,"mutability":"mutable","name":"callData","nameLocation":"13424:8:17","nodeType":"VariableDeclaration","scope":7478,"src":"13409:23:17","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":7468,"name":"bytes","nodeType":"ElementaryTypeName","src":"13409:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":7471,"mutability":"mutable","name":"isTermination","nameLocation":"13447:13:17","nodeType":"VariableDeclaration","scope":7478,"src":"13442:18:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7470,"name":"bool","nodeType":"ElementaryTypeName","src":"13442:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":7473,"mutability":"mutable","name":"ctx","nameLocation":"13485:3:17","nodeType":"VariableDeclaration","scope":7478,"src":"13470:18:17","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":7472,"name":"bytes","nodeType":"ElementaryTypeName","src":"13470:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"13376:118:17"},"returnParameters":{"id":7477,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7476,"mutability":"mutable","name":"cbdata","nameLocation":"13597:6:17","nodeType":"VariableDeclaration","scope":7478,"src":"13584:19:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7475,"name":"bytes","nodeType":"ElementaryTypeName","src":"13584:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"13583:21:17"},"scope":7667,"src":"13346:259:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7479,"nodeType":"StructuredDocumentation","src":"13611:393:17","text":" @dev (For agreements) Call the app after callback\n @param app The super app.\n @param callData The call data sending to the super app.\n @param isTermination Is it a termination callback?\n @param ctx Current ctx, it will be validated.\n @return newCtx The current context of the transaction."},"functionSelector":"1e6d0a84","id":7493,"implemented":false,"kind":"function","modifiers":[],"name":"callAppAfterCallback","nameLocation":"14018:20:17","nodeType":"FunctionDefinition","parameters":{"id":7489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7482,"mutability":"mutable","name":"app","nameLocation":"14058:3:17","nodeType":"VariableDeclaration","scope":7493,"src":"14048:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6577","typeString":"contract ISuperApp"},"typeName":{"id":7481,"nodeType":"UserDefinedTypeName","pathNode":{"id":7480,"name":"ISuperApp","nameLocations":["14048:9:17"],"nodeType":"IdentifierPath","referencedDeclaration":6577,"src":"14048:9:17"},"referencedDeclaration":6577,"src":"14048:9:17","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6577","typeString":"contract ISuperApp"}},"visibility":"internal"},{"constant":false,"id":7484,"mutability":"mutable","name":"callData","nameLocation":"14086:8:17","nodeType":"VariableDeclaration","scope":7493,"src":"14071:23:17","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":7483,"name":"bytes","nodeType":"ElementaryTypeName","src":"14071:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":7486,"mutability":"mutable","name":"isTermination","nameLocation":"14109:13:17","nodeType":"VariableDeclaration","scope":7493,"src":"14104:18:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7485,"name":"bool","nodeType":"ElementaryTypeName","src":"14104:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":7488,"mutability":"mutable","name":"ctx","nameLocation":"14147:3:17","nodeType":"VariableDeclaration","scope":7493,"src":"14132:18:17","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":7487,"name":"bytes","nodeType":"ElementaryTypeName","src":"14132:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"14038:118:17"},"returnParameters":{"id":7492,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7491,"mutability":"mutable","name":"newCtx","nameLocation":"14259:6:17","nodeType":"VariableDeclaration","scope":7493,"src":"14246:19:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7490,"name":"bytes","nodeType":"ElementaryTypeName","src":"14246:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"14245:21:17"},"scope":7667,"src":"14009:258:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7494,"nodeType":"StructuredDocumentation","src":"14273:408:17","text":" @dev (For agreements) Create a new callback stack\n @param ctx The current ctx, it will be validated.\n @param app The super app.\n @param appCreditGranted App credit granted so far.\n @param appCreditUsed App credit used so far.\n @return newCtx The current context of the transaction."},"functionSelector":"768fabb0","id":7511,"implemented":false,"kind":"function","modifiers":[],"name":"appCallbackPush","nameLocation":"14695:15:17","nodeType":"FunctionDefinition","parameters":{"id":7507,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7496,"mutability":"mutable","name":"ctx","nameLocation":"14735:3:17","nodeType":"VariableDeclaration","scope":7511,"src":"14720:18:17","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":7495,"name":"bytes","nodeType":"ElementaryTypeName","src":"14720:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":7499,"mutability":"mutable","name":"app","nameLocation":"14758:3:17","nodeType":"VariableDeclaration","scope":7511,"src":"14748:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6577","typeString":"contract ISuperApp"},"typeName":{"id":7498,"nodeType":"UserDefinedTypeName","pathNode":{"id":7497,"name":"ISuperApp","nameLocations":["14748:9:17"],"nodeType":"IdentifierPath","referencedDeclaration":6577,"src":"14748:9:17"},"referencedDeclaration":6577,"src":"14748:9:17","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6577","typeString":"contract ISuperApp"}},"visibility":"internal"},{"constant":false,"id":7501,"mutability":"mutable","name":"appCreditGranted","nameLocation":"14779:16:17","nodeType":"VariableDeclaration","scope":7511,"src":"14771:24:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7500,"name":"uint256","nodeType":"ElementaryTypeName","src":"14771:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7503,"mutability":"mutable","name":"appCreditUsed","nameLocation":"14812:13:17","nodeType":"VariableDeclaration","scope":7511,"src":"14805:20:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7502,"name":"int256","nodeType":"ElementaryTypeName","src":"14805:6:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":7506,"mutability":"mutable","name":"appCreditToken","nameLocation":"14852:14:17","nodeType":"VariableDeclaration","scope":7511,"src":"14835:31:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"},"typeName":{"id":7505,"nodeType":"UserDefinedTypeName","pathNode":{"id":7504,"name":"ISuperfluidToken","nameLocations":["14835:16:17"],"nodeType":"IdentifierPath","referencedDeclaration":8082,"src":"14835:16:17"},"referencedDeclaration":8082,"src":"14835:16:17","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"}},"visibility":"internal"}],"src":"14710:162:17"},"returnParameters":{"id":7510,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7509,"mutability":"mutable","name":"newCtx","nameLocation":"14976:6:17","nodeType":"VariableDeclaration","scope":7511,"src":"14963:19:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7508,"name":"bytes","nodeType":"ElementaryTypeName","src":"14963:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"14962:21:17"},"scope":7667,"src":"14686:298:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7512,"nodeType":"StructuredDocumentation","src":"14990:554:17","text":" @dev (For agreements) Pop from the current app callback stack\n @param ctx The ctx that was pushed before the callback stack.\n @param appCreditUsedDelta App credit used by the app.\n @return newCtx The current context of the transaction.\n @custom:security\n - Here we cannot do assertValidCtx(ctx), since we do not really save the stack in memory.\n - Hence there is still implicit trust that the agreement handles the callback push/pop pair correctly."},"functionSelector":"989b0c3e","id":7521,"implemented":false,"kind":"function","modifiers":[],"name":"appCallbackPop","nameLocation":"15558:14:17","nodeType":"FunctionDefinition","parameters":{"id":7517,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7514,"mutability":"mutable","name":"ctx","nameLocation":"15597:3:17","nodeType":"VariableDeclaration","scope":7521,"src":"15582:18:17","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":7513,"name":"bytes","nodeType":"ElementaryTypeName","src":"15582:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":7516,"mutability":"mutable","name":"appCreditUsedDelta","nameLocation":"15617:18:17","nodeType":"VariableDeclaration","scope":7521,"src":"15610:25:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7515,"name":"int256","nodeType":"ElementaryTypeName","src":"15610:6:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"15572:69:17"},"returnParameters":{"id":7520,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7519,"mutability":"mutable","name":"newCtx","nameLocation":"15714:6:17","nodeType":"VariableDeclaration","scope":7521,"src":"15701:19:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7518,"name":"bytes","nodeType":"ElementaryTypeName","src":"15701:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"15700:21:17"},"scope":7667,"src":"15549:173:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7522,"nodeType":"StructuredDocumentation","src":"15728:288:17","text":" @dev (For agreements) Use app credit.\n @param ctx The current ctx, it will be validated.\n @param appCreditUsedMore See app credit for more details.\n @return newCtx The current context of the transaction."},"functionSelector":"59a29141","id":7531,"implemented":false,"kind":"function","modifiers":[],"name":"ctxUseCredit","nameLocation":"16030:12:17","nodeType":"FunctionDefinition","parameters":{"id":7527,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7524,"mutability":"mutable","name":"ctx","nameLocation":"16067:3:17","nodeType":"VariableDeclaration","scope":7531,"src":"16052:18:17","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":7523,"name":"bytes","nodeType":"ElementaryTypeName","src":"16052:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":7526,"mutability":"mutable","name":"appCreditUsedMore","nameLocation":"16087:17:17","nodeType":"VariableDeclaration","scope":7531,"src":"16080:24:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7525,"name":"int256","nodeType":"ElementaryTypeName","src":"16080:6:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"16042:68:17"},"returnParameters":{"id":7530,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7529,"mutability":"mutable","name":"newCtx","nameLocation":"16214:6:17","nodeType":"VariableDeclaration","scope":7531,"src":"16201:19:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7528,"name":"bytes","nodeType":"ElementaryTypeName","src":"16201:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"16200:21:17"},"scope":7667,"src":"16021:201:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7532,"nodeType":"StructuredDocumentation","src":"16228:244:17","text":" @dev (For agreements) Jail the app.\n @param app The super app.\n @param reason Jail reason code.\n @return newCtx The current context of the transaction."},"functionSelector":"b724211e","id":7544,"implemented":false,"kind":"function","modifiers":[],"name":"jailApp","nameLocation":"16486:7:17","nodeType":"FunctionDefinition","parameters":{"id":7540,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7534,"mutability":"mutable","name":"ctx","nameLocation":"16518:3:17","nodeType":"VariableDeclaration","scope":7544,"src":"16503:18:17","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":7533,"name":"bytes","nodeType":"ElementaryTypeName","src":"16503:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":7537,"mutability":"mutable","name":"app","nameLocation":"16541:3:17","nodeType":"VariableDeclaration","scope":7544,"src":"16531:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6577","typeString":"contract ISuperApp"},"typeName":{"id":7536,"nodeType":"UserDefinedTypeName","pathNode":{"id":7535,"name":"ISuperApp","nameLocations":["16531:9:17"],"nodeType":"IdentifierPath","referencedDeclaration":6577,"src":"16531:9:17"},"referencedDeclaration":6577,"src":"16531:9:17","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6577","typeString":"contract ISuperApp"}},"visibility":"internal"},{"constant":false,"id":7539,"mutability":"mutable","name":"reason","nameLocation":"16562:6:17","nodeType":"VariableDeclaration","scope":7544,"src":"16554:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7538,"name":"uint256","nodeType":"ElementaryTypeName","src":"16554:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16493:81:17"},"returnParameters":{"id":7543,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7542,"mutability":"mutable","name":"newCtx","nameLocation":"16678:6:17","nodeType":"VariableDeclaration","scope":7544,"src":"16665:19:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7541,"name":"bytes","nodeType":"ElementaryTypeName","src":"16665:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"16664:21:17"},"scope":7667,"src":"16477:209:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":7545,"nodeType":"StructuredDocumentation","src":"16692:172:17","text":" @dev Jail event for the app\n @param app Address of jailed app\n @param reason Reason the app is jailed (see Definitions.sol for the full list)"},"eventSelector":"be3aa33bd245135e4e26b223d79d14ea479a47bff09f2b03c53838af1edbb14b","id":7552,"name":"Jail","nameLocation":"16875:4:17","nodeType":"EventDefinition","parameters":{"id":7551,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7548,"indexed":true,"mutability":"mutable","name":"app","nameLocation":"16898:3:17","nodeType":"VariableDeclaration","scope":7552,"src":"16880:21:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6577","typeString":"contract ISuperApp"},"typeName":{"id":7547,"nodeType":"UserDefinedTypeName","pathNode":{"id":7546,"name":"ISuperApp","nameLocations":["16880:9:17"],"nodeType":"IdentifierPath","referencedDeclaration":6577,"src":"16880:9:17"},"referencedDeclaration":6577,"src":"16880:9:17","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6577","typeString":"contract ISuperApp"}},"visibility":"internal"},{"constant":false,"id":7550,"indexed":false,"mutability":"mutable","name":"reason","nameLocation":"16911:6:17","nodeType":"VariableDeclaration","scope":7552,"src":"16903:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7549,"name":"uint256","nodeType":"ElementaryTypeName","src":"16903:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16879:39:17"},"src":"16869:50:17"},{"documentation":{"id":7553,"nodeType":"StructuredDocumentation","src":"17480:265:17","text":" @dev Call agreement function\n @param agreementClass The agreement address you are calling\n @param callData The contextual call data with placeholder ctx\n @param userData Extra user data being sent to the super app callbacks"},"functionSelector":"39255d5b","id":7565,"implemented":false,"kind":"function","modifiers":[],"name":"callAgreement","nameLocation":"17760:13:17","nodeType":"FunctionDefinition","parameters":{"id":7561,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7556,"mutability":"mutable","name":"agreementClass","nameLocation":"17800:14:17","nodeType":"VariableDeclaration","scope":7565,"src":"17784:30:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperAgreement_$6463","typeString":"contract ISuperAgreement"},"typeName":{"id":7555,"nodeType":"UserDefinedTypeName","pathNode":{"id":7554,"name":"ISuperAgreement","nameLocations":["17784:15:17"],"nodeType":"IdentifierPath","referencedDeclaration":6463,"src":"17784:15:17"},"referencedDeclaration":6463,"src":"17784:15:17","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperAgreement_$6463","typeString":"contract ISuperAgreement"}},"visibility":"internal"},{"constant":false,"id":7558,"mutability":"mutable","name":"callData","nameLocation":"17840:8:17","nodeType":"VariableDeclaration","scope":7565,"src":"17825:23:17","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":7557,"name":"bytes","nodeType":"ElementaryTypeName","src":"17825:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":7560,"mutability":"mutable","name":"userData","nameLocation":"17874:8:17","nodeType":"VariableDeclaration","scope":7565,"src":"17859:23:17","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":7559,"name":"bytes","nodeType":"ElementaryTypeName","src":"17859:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"17773:116:17"},"returnParameters":{"id":7564,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7563,"mutability":"mutable","name":"returnedData","nameLocation":"17993:12:17","nodeType":"VariableDeclaration","scope":7565,"src":"17980:25:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7562,"name":"bytes","nodeType":"ElementaryTypeName","src":"17980:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"17979:27:17"},"scope":7667,"src":"17751:256:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7566,"nodeType":"StructuredDocumentation","src":"18013:268:17","text":" @notice Call app action\n @dev Main use case is calling app action in a batch call via the host\n @param callData The contextual call data\n @custom:note See \"Contextless Call Proxies\" above for more about contextual call data."},"functionSelector":"1e855cf3","id":7576,"implemented":false,"kind":"function","modifiers":[],"name":"callAppAction","nameLocation":"18295:13:17","nodeType":"FunctionDefinition","parameters":{"id":7572,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7569,"mutability":"mutable","name":"app","nameLocation":"18328:3:17","nodeType":"VariableDeclaration","scope":7576,"src":"18318:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6577","typeString":"contract ISuperApp"},"typeName":{"id":7568,"nodeType":"UserDefinedTypeName","pathNode":{"id":7567,"name":"ISuperApp","nameLocations":["18318:9:17"],"nodeType":"IdentifierPath","referencedDeclaration":6577,"src":"18318:9:17"},"referencedDeclaration":6577,"src":"18318:9:17","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6577","typeString":"contract ISuperApp"}},"visibility":"internal"},{"constant":false,"id":7571,"mutability":"mutable","name":"callData","nameLocation":"18356:8:17","nodeType":"VariableDeclaration","scope":7576,"src":"18341:23:17","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":7570,"name":"bytes","nodeType":"ElementaryTypeName","src":"18341:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"18308:62:17"},"returnParameters":{"id":7575,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7574,"mutability":"mutable","name":"returnedData","nameLocation":"18500:12:17","nodeType":"VariableDeclaration","scope":7576,"src":"18487:25:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7573,"name":"bytes","nodeType":"ElementaryTypeName","src":"18487:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"18486:27:17"},"scope":7667,"src":"18286:228:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"canonicalName":"ISuperfluid.Context","id":7600,"members":[{"constant":false,"id":7578,"mutability":"mutable","name":"appCallbackLevel","nameLocation":"19759:16:17","nodeType":"VariableDeclaration","scope":7600,"src":"19753:22:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":7577,"name":"uint8","nodeType":"ElementaryTypeName","src":"19753:5:17","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":7580,"mutability":"mutable","name":"callType","nameLocation":"19815:8:17","nodeType":"VariableDeclaration","scope":7600,"src":"19809:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":7579,"name":"uint8","nodeType":"ElementaryTypeName","src":"19809:5:17","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":7582,"mutability":"mutable","name":"timestamp","nameLocation":"19873:9:17","nodeType":"VariableDeclaration","scope":7600,"src":"19865:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7581,"name":"uint256","nodeType":"ElementaryTypeName","src":"19865:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7584,"mutability":"mutable","name":"msgSender","nameLocation":"19952:9:17","nodeType":"VariableDeclaration","scope":7600,"src":"19944:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7583,"name":"address","nodeType":"ElementaryTypeName","src":"19944:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7586,"mutability":"mutable","name":"agreementSelector","nameLocation":"20117:17:17","nodeType":"VariableDeclaration","scope":7600,"src":"20110:24:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":7585,"name":"bytes4","nodeType":"ElementaryTypeName","src":"20110:6:17","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"},{"constant":false,"id":7588,"mutability":"mutable","name":"userData","nameLocation":"20198:8:17","nodeType":"VariableDeclaration","scope":7600,"src":"20192:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":7587,"name":"bytes","nodeType":"ElementaryTypeName","src":"20192:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":7590,"mutability":"mutable","name":"appCreditGranted","nameLocation":"20300:16:17","nodeType":"VariableDeclaration","scope":7600,"src":"20292:24:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7589,"name":"uint256","nodeType":"ElementaryTypeName","src":"20292:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7592,"mutability":"mutable","name":"appCreditWantedDeprecated","nameLocation":"20383:25:17","nodeType":"VariableDeclaration","scope":7600,"src":"20375:33:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7591,"name":"uint256","nodeType":"ElementaryTypeName","src":"20375:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7594,"mutability":"mutable","name":"appCreditUsed","nameLocation":"20946:13:17","nodeType":"VariableDeclaration","scope":7600,"src":"20939:20:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7593,"name":"int256","nodeType":"ElementaryTypeName","src":"20939:6:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":7596,"mutability":"mutable","name":"appAddress","nameLocation":"21000:10:17","nodeType":"VariableDeclaration","scope":7600,"src":"20992:18:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7595,"name":"address","nodeType":"ElementaryTypeName","src":"20992:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7599,"mutability":"mutable","name":"appCreditToken","nameLocation":"21074:14:17","nodeType":"VariableDeclaration","scope":7600,"src":"21057:31:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"},"typeName":{"id":7598,"nodeType":"UserDefinedTypeName","pathNode":{"id":7597,"name":"ISuperfluidToken","nameLocations":["21057:16:17"],"nodeType":"IdentifierPath","referencedDeclaration":8082,"src":"21057:16:17"},"referencedDeclaration":8082,"src":"21057:16:17","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"}},"visibility":"internal"}],"name":"Context","nameLocation":"19659:7:17","nodeType":"StructDefinition","scope":7667,"src":"19652:1443:17","visibility":"public"},{"functionSelector":"4329d293","id":7616,"implemented":false,"kind":"function","modifiers":[],"name":"callAgreementWithContext","nameLocation":"21110:24:17","nodeType":"FunctionDefinition","parameters":{"id":7610,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7603,"mutability":"mutable","name":"agreementClass","nameLocation":"21160:14:17","nodeType":"VariableDeclaration","scope":7616,"src":"21144:30:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperAgreement_$6463","typeString":"contract ISuperAgreement"},"typeName":{"id":7602,"nodeType":"UserDefinedTypeName","pathNode":{"id":7601,"name":"ISuperAgreement","nameLocations":["21144:15:17"],"nodeType":"IdentifierPath","referencedDeclaration":6463,"src":"21144:15:17"},"referencedDeclaration":6463,"src":"21144:15:17","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperAgreement_$6463","typeString":"contract ISuperAgreement"}},"visibility":"internal"},{"constant":false,"id":7605,"mutability":"mutable","name":"callData","nameLocation":"21199:8:17","nodeType":"VariableDeclaration","scope":7616,"src":"21184:23:17","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":7604,"name":"bytes","nodeType":"ElementaryTypeName","src":"21184:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":7607,"mutability":"mutable","name":"userData","nameLocation":"21232:8:17","nodeType":"VariableDeclaration","scope":7616,"src":"21217:23:17","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":7606,"name":"bytes","nodeType":"ElementaryTypeName","src":"21217:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":7609,"mutability":"mutable","name":"ctx","nameLocation":"21265:3:17","nodeType":"VariableDeclaration","scope":7616,"src":"21250:18:17","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":7608,"name":"bytes","nodeType":"ElementaryTypeName","src":"21250:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"21134:140:17"},"returnParameters":{"id":7615,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7612,"mutability":"mutable","name":"newCtx","nameLocation":"21395:6:17","nodeType":"VariableDeclaration","scope":7616,"src":"21382:19:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7611,"name":"bytes","nodeType":"ElementaryTypeName","src":"21382:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":7614,"mutability":"mutable","name":"returnedData","nameLocation":"21416:12:17","nodeType":"VariableDeclaration","scope":7616,"src":"21403:25:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7613,"name":"bytes","nodeType":"ElementaryTypeName","src":"21403:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"21381:48:17"},"scope":7667,"src":"21101:329:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"ba48b5f8","id":7628,"implemented":false,"kind":"function","modifiers":[],"name":"callAppActionWithContext","nameLocation":"21445:24:17","nodeType":"FunctionDefinition","parameters":{"id":7624,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7619,"mutability":"mutable","name":"app","nameLocation":"21489:3:17","nodeType":"VariableDeclaration","scope":7628,"src":"21479:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6577","typeString":"contract ISuperApp"},"typeName":{"id":7618,"nodeType":"UserDefinedTypeName","pathNode":{"id":7617,"name":"ISuperApp","nameLocations":["21479:9:17"],"nodeType":"IdentifierPath","referencedDeclaration":6577,"src":"21479:9:17"},"referencedDeclaration":6577,"src":"21479:9:17","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperApp_$6577","typeString":"contract ISuperApp"}},"visibility":"internal"},{"constant":false,"id":7621,"mutability":"mutable","name":"callData","nameLocation":"21517:8:17","nodeType":"VariableDeclaration","scope":7628,"src":"21502:23:17","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":7620,"name":"bytes","nodeType":"ElementaryTypeName","src":"21502:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":7623,"mutability":"mutable","name":"ctx","nameLocation":"21550:3:17","nodeType":"VariableDeclaration","scope":7628,"src":"21535:18:17","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":7622,"name":"bytes","nodeType":"ElementaryTypeName","src":"21535:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"21469:90:17"},"returnParameters":{"id":7627,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7626,"mutability":"mutable","name":"newCtx","nameLocation":"21667:6:17","nodeType":"VariableDeclaration","scope":7628,"src":"21654:19:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7625,"name":"bytes","nodeType":"ElementaryTypeName","src":"21654:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"21653:21:17"},"scope":7667,"src":"21436:239:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"3f6c923a","id":7636,"implemented":false,"kind":"function","modifiers":[],"name":"decodeCtx","nameLocation":"21690:9:17","nodeType":"FunctionDefinition","parameters":{"id":7631,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7630,"mutability":"mutable","name":"ctx","nameLocation":"21713:3:17","nodeType":"VariableDeclaration","scope":7636,"src":"21700:16:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7629,"name":"bytes","nodeType":"ElementaryTypeName","src":"21700:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"21699:18:17"},"returnParameters":{"id":7635,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7634,"mutability":"mutable","name":"context","nameLocation":"21772:7:17","nodeType":"VariableDeclaration","scope":7636,"src":"21757:22:17","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Context_$7600_memory_ptr","typeString":"struct ISuperfluid.Context"},"typeName":{"id":7633,"nodeType":"UserDefinedTypeName","pathNode":{"id":7632,"name":"Context","nameLocations":["21757:7:17"],"nodeType":"IdentifierPath","referencedDeclaration":7600,"src":"21757:7:17"},"referencedDeclaration":7600,"src":"21757:7:17","typeDescriptions":{"typeIdentifier":"t_struct$_Context_$7600_storage_ptr","typeString":"struct ISuperfluid.Context"}},"visibility":"internal"}],"src":"21756:24:17"},"scope":7667,"src":"21681:100:17","stateMutability":"pure","virtual":false,"visibility":"external"},{"functionSelector":"bf428734","id":7643,"implemented":false,"kind":"function","modifiers":[],"name":"isCtxValid","nameLocation":"21796:10:17","nodeType":"FunctionDefinition","parameters":{"id":7639,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7638,"mutability":"mutable","name":"ctx","nameLocation":"21822:3:17","nodeType":"VariableDeclaration","scope":7643,"src":"21807:18:17","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":7637,"name":"bytes","nodeType":"ElementaryTypeName","src":"21807:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"21806:20:17"},"returnParameters":{"id":7642,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7641,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7643,"src":"21850:4:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7640,"name":"bool","nodeType":"ElementaryTypeName","src":"21850:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"21849:6:17"},"scope":7667,"src":"21787:69:17","stateMutability":"view","virtual":false,"visibility":"external"},{"canonicalName":"ISuperfluid.Operation","id":7650,"members":[{"constant":false,"id":7645,"mutability":"mutable","name":"operationType","nameLocation":"22193:13:17","nodeType":"VariableDeclaration","scope":7650,"src":"22186:20:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":7644,"name":"uint32","nodeType":"ElementaryTypeName","src":"22186:6:17","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":7647,"mutability":"mutable","name":"target","nameLocation":"22252:6:17","nodeType":"VariableDeclaration","scope":7650,"src":"22244:14:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7646,"name":"address","nodeType":"ElementaryTypeName","src":"22244:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7649,"mutability":"mutable","name":"data","nameLocation":"22316:4:17","nodeType":"VariableDeclaration","scope":7650,"src":"22310:10:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":7648,"name":"bytes","nodeType":"ElementaryTypeName","src":"22310:5:17","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"Operation","nameLocation":"22095:9:17","nodeType":"StructDefinition","scope":7667,"src":"22088:239:17","visibility":"public"},{"documentation":{"id":7651,"nodeType":"StructuredDocumentation","src":"22333:94:17","text":" @dev Batch call function\n @param operations Array of batch operations"},"functionSelector":"6ad3ca7d","id":7658,"implemented":false,"kind":"function","modifiers":[],"name":"batchCall","nameLocation":"22441:9:17","nodeType":"FunctionDefinition","parameters":{"id":7656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7655,"mutability":"mutable","name":"operations","nameLocation":"22472:10:17","nodeType":"VariableDeclaration","scope":7658,"src":"22451:31:17","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Operation_$7650_calldata_ptr_$dyn_calldata_ptr","typeString":"struct ISuperfluid.Operation[]"},"typeName":{"baseType":{"id":7653,"nodeType":"UserDefinedTypeName","pathNode":{"id":7652,"name":"Operation","nameLocations":["22451:9:17"],"nodeType":"IdentifierPath","referencedDeclaration":7650,"src":"22451:9:17"},"referencedDeclaration":7650,"src":"22451:9:17","typeDescriptions":{"typeIdentifier":"t_struct$_Operation_$7650_storage_ptr","typeString":"struct ISuperfluid.Operation"}},"id":7654,"nodeType":"ArrayTypeName","src":"22451:11:17","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Operation_$7650_storage_$dyn_storage_ptr","typeString":"struct ISuperfluid.Operation[]"}},"visibility":"internal"}],"src":"22450:33:17"},"returnParameters":{"id":7657,"nodeType":"ParameterList","parameters":[],"src":"22492:0:17"},"scope":7667,"src":"22432:61:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7659,"nodeType":"StructuredDocumentation","src":"22499:128:17","text":" @dev Batch call function for trusted forwarders (EIP-2771)\n @param operations Array of batch operations"},"functionSelector":"670e77e3","id":7666,"implemented":false,"kind":"function","modifiers":[],"name":"forwardBatchCall","nameLocation":"22641:16:17","nodeType":"FunctionDefinition","parameters":{"id":7664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7663,"mutability":"mutable","name":"operations","nameLocation":"22679:10:17","nodeType":"VariableDeclaration","scope":7666,"src":"22658:31:17","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Operation_$7650_calldata_ptr_$dyn_calldata_ptr","typeString":"struct ISuperfluid.Operation[]"},"typeName":{"baseType":{"id":7661,"nodeType":"UserDefinedTypeName","pathNode":{"id":7660,"name":"Operation","nameLocations":["22658:9:17"],"nodeType":"IdentifierPath","referencedDeclaration":7650,"src":"22658:9:17"},"referencedDeclaration":7650,"src":"22658:9:17","typeDescriptions":{"typeIdentifier":"t_struct$_Operation_$7650_storage_ptr","typeString":"struct ISuperfluid.Operation"}},"id":7662,"nodeType":"ArrayTypeName","src":"22658:11:17","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Operation_$7650_storage_$dyn_storage_ptr","typeString":"struct ISuperfluid.Operation[]"}},"visibility":"internal"}],"src":"22657:33:17"},"returnParameters":{"id":7665,"nodeType":"ParameterList","parameters":[],"src":"22699:0:17"},"scope":7667,"src":"22632:68:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":7668,"src":"1120:22687:17","usedErrors":[7174,7176,7178,7180,7182,7184,7186,7188,7190,7192,7194,7196,7198,7200,7204,7206,7208,7210,7212,7214,7216,7218,7220,7222]}],"src":"35:23773:17"},"id":17},"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance.sol":{"ast":{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance.sol","exportedSymbols":{"ISuperAgreement":[6463],"ISuperToken":[7015],"ISuperfluid":[7667],"ISuperfluidGovernance":[7796],"ISuperfluidToken":[8082]},"id":7797,"license":"AGPLv3","nodeType":"SourceUnit","nodes":[{"id":7669,"literals":["solidity",">=","0.8",".4"],"nodeType":"PragmaDirective","src":"35:25:18"},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol","file":"./ISuperAgreement.sol","id":7671,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7797,"sourceUnit":6464,"src":"62:56:18","symbolAliases":[{"foreign":{"id":7670,"name":"ISuperAgreement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6463,"src":"71:15:18","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.sol","file":"./ISuperToken.sol","id":7673,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7797,"sourceUnit":7016,"src":"119:48:18","symbolAliases":[{"foreign":{"id":7672,"name":"ISuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7015,"src":"128:11:18","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol","file":"./ISuperfluidToken.sol","id":7675,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7797,"sourceUnit":8083,"src":"168:59:18","symbolAliases":[{"foreign":{"id":7674,"name":"ISuperfluidToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8082,"src":"177:16:18","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol","file":"./ISuperfluid.sol","id":7677,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7797,"sourceUnit":7668,"src":"228:48:18","symbolAliases":[{"foreign":{"id":7676,"name":"ISuperfluid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7667,"src":"237:11:18","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"ISuperfluidGovernance","contractDependencies":[],"contractKind":"interface","documentation":{"id":7678,"nodeType":"StructuredDocumentation","src":"279:71:18","text":" @title Superfluid governance interface\n @author Superfluid"},"fullyImplemented":false,"id":7796,"linearizedBaseContracts":[7796],"name":"ISuperfluidGovernance","nameLocation":"361:21:18","nodeType":"ContractDefinition","nodes":[{"errorSelector":"27743aa6","id":7680,"name":"SF_GOV_ARRAYS_NOT_SAME_LENGTH","nameLocation":"574:29:18","nodeType":"ErrorDefinition","parameters":{"id":7679,"nodeType":"ParameterList","parameters":[],"src":"603:2:18"},"src":"568:38:18"},{"errorSelector":"e171980a","id":7682,"name":"SF_GOV_INVALID_LIQUIDATION_OR_PATRICIAN_PERIOD","nameLocation":"648:46:18","nodeType":"ErrorDefinition","parameters":{"id":7681,"nodeType":"ParameterList","parameters":[],"src":"694:2:18"},"src":"642:55:18"},{"errorSelector":"80dddd73","id":7684,"name":"SF_GOV_MUST_BE_CONTRACT","nameLocation":"722:23:18","nodeType":"ErrorDefinition","parameters":{"id":7683,"nodeType":"ParameterList","parameters":[],"src":"745:2:18"},"src":"716:32:18"},{"documentation":{"id":7685,"nodeType":"StructuredDocumentation","src":"791:76:18","text":" @dev Replace the current governance with a new governance"},"functionSelector":"44864b25","id":7693,"implemented":false,"kind":"function","modifiers":[],"name":"replaceGovernance","nameLocation":"881:17:18","nodeType":"FunctionDefinition","parameters":{"id":7691,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7688,"mutability":"mutable","name":"host","nameLocation":"920:4:18","nodeType":"VariableDeclaration","scope":7693,"src":"908:16:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"},"typeName":{"id":7687,"nodeType":"UserDefinedTypeName","pathNode":{"id":7686,"name":"ISuperfluid","nameLocations":["908:11:18"],"nodeType":"IdentifierPath","referencedDeclaration":7667,"src":"908:11:18"},"referencedDeclaration":7667,"src":"908:11:18","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":7690,"mutability":"mutable","name":"newGov","nameLocation":"942:6:18","nodeType":"VariableDeclaration","scope":7693,"src":"934:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7689,"name":"address","nodeType":"ElementaryTypeName","src":"934:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"898:51:18"},"returnParameters":{"id":7692,"nodeType":"ParameterList","parameters":[],"src":"958:0:18"},"scope":7796,"src":"872:87:18","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7694,"nodeType":"StructuredDocumentation","src":"965:54:18","text":" @dev Register a new agreement class"},"functionSelector":"cadf8f85","id":7702,"implemented":false,"kind":"function","modifiers":[],"name":"registerAgreementClass","nameLocation":"1033:22:18","nodeType":"FunctionDefinition","parameters":{"id":7700,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7697,"mutability":"mutable","name":"host","nameLocation":"1077:4:18","nodeType":"VariableDeclaration","scope":7702,"src":"1065:16:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"},"typeName":{"id":7696,"nodeType":"UserDefinedTypeName","pathNode":{"id":7695,"name":"ISuperfluid","nameLocations":["1065:11:18"],"nodeType":"IdentifierPath","referencedDeclaration":7667,"src":"1065:11:18"},"referencedDeclaration":7667,"src":"1065:11:18","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":7699,"mutability":"mutable","name":"agreementClass","nameLocation":"1099:14:18","nodeType":"VariableDeclaration","scope":7702,"src":"1091:22:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7698,"name":"address","nodeType":"ElementaryTypeName","src":"1091:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1055:59:18"},"returnParameters":{"id":7701,"nodeType":"ParameterList","parameters":[],"src":"1123:0:18"},"scope":7796,"src":"1024:100:18","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7703,"nodeType":"StructuredDocumentation","src":"1130:193:18","text":" @dev Update logics of the contracts\n @custom:note \n - Because they might have inter-dependencies, it is good to have one single function to update them all"},"functionSelector":"427942a4","id":7716,"implemented":false,"kind":"function","modifiers":[],"name":"updateContracts","nameLocation":"1337:15:18","nodeType":"FunctionDefinition","parameters":{"id":7714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7706,"mutability":"mutable","name":"host","nameLocation":"1374:4:18","nodeType":"VariableDeclaration","scope":7716,"src":"1362:16:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"},"typeName":{"id":7705,"nodeType":"UserDefinedTypeName","pathNode":{"id":7704,"name":"ISuperfluid","nameLocations":["1362:11:18"],"nodeType":"IdentifierPath","referencedDeclaration":7667,"src":"1362:11:18"},"referencedDeclaration":7667,"src":"1362:11:18","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":7708,"mutability":"mutable","name":"hostNewLogic","nameLocation":"1396:12:18","nodeType":"VariableDeclaration","scope":7716,"src":"1388:20:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7707,"name":"address","nodeType":"ElementaryTypeName","src":"1388:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7711,"mutability":"mutable","name":"agreementClassNewLogics","nameLocation":"1437:23:18","nodeType":"VariableDeclaration","scope":7716,"src":"1418:42:18","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":7709,"name":"address","nodeType":"ElementaryTypeName","src":"1418:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7710,"nodeType":"ArrayTypeName","src":"1418:9:18","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":7713,"mutability":"mutable","name":"superTokenFactoryNewLogic","nameLocation":"1478:25:18","nodeType":"VariableDeclaration","scope":7716,"src":"1470:33:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7712,"name":"address","nodeType":"ElementaryTypeName","src":"1470:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1352:157:18"},"returnParameters":{"id":7715,"nodeType":"ParameterList","parameters":[],"src":"1518:0:18"},"scope":7796,"src":"1328:191:18","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7717,"nodeType":"StructuredDocumentation","src":"1525:113:18","text":" @dev Update supertoken logic contract to the latest that is managed by the super token factory"},"functionSelector":"42148deb","id":7727,"implemented":false,"kind":"function","modifiers":[],"name":"batchUpdateSuperTokenLogic","nameLocation":"1652:26:18","nodeType":"FunctionDefinition","parameters":{"id":7725,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7720,"mutability":"mutable","name":"host","nameLocation":"1700:4:18","nodeType":"VariableDeclaration","scope":7727,"src":"1688:16:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"},"typeName":{"id":7719,"nodeType":"UserDefinedTypeName","pathNode":{"id":7718,"name":"ISuperfluid","nameLocations":["1688:11:18"],"nodeType":"IdentifierPath","referencedDeclaration":7667,"src":"1688:11:18"},"referencedDeclaration":7667,"src":"1688:11:18","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":7724,"mutability":"mutable","name":"tokens","nameLocation":"1737:6:18","nodeType":"VariableDeclaration","scope":7727,"src":"1714:29:18","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_ISuperToken_$7015_$dyn_calldata_ptr","typeString":"contract ISuperToken[]"},"typeName":{"baseType":{"id":7722,"nodeType":"UserDefinedTypeName","pathNode":{"id":7721,"name":"ISuperToken","nameLocations":["1714:11:18"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"1714:11:18"},"referencedDeclaration":7015,"src":"1714:11:18","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"id":7723,"nodeType":"ArrayTypeName","src":"1714:13:18","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_ISuperToken_$7015_$dyn_storage_ptr","typeString":"contract ISuperToken[]"}},"visibility":"internal"}],"src":"1678:66:18"},"returnParameters":{"id":7726,"nodeType":"ParameterList","parameters":[],"src":"1753:0:18"},"scope":7796,"src":"1643:111:18","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7728,"nodeType":"StructuredDocumentation","src":"1764:58:18","text":" @dev Set configuration as address value"},"functionSelector":"78707cb8","id":7741,"implemented":false,"kind":"function","modifiers":[],"name":"setConfig","nameLocation":"1836:9:18","nodeType":"FunctionDefinition","parameters":{"id":7739,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7731,"mutability":"mutable","name":"host","nameLocation":"1867:4:18","nodeType":"VariableDeclaration","scope":7741,"src":"1855:16:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"},"typeName":{"id":7730,"nodeType":"UserDefinedTypeName","pathNode":{"id":7729,"name":"ISuperfluid","nameLocations":["1855:11:18"],"nodeType":"IdentifierPath","referencedDeclaration":7667,"src":"1855:11:18"},"referencedDeclaration":7667,"src":"1855:11:18","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":7734,"mutability":"mutable","name":"superToken","nameLocation":"1898:10:18","nodeType":"VariableDeclaration","scope":7741,"src":"1881:27:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"},"typeName":{"id":7733,"nodeType":"UserDefinedTypeName","pathNode":{"id":7732,"name":"ISuperfluidToken","nameLocations":["1881:16:18"],"nodeType":"IdentifierPath","referencedDeclaration":8082,"src":"1881:16:18"},"referencedDeclaration":8082,"src":"1881:16:18","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":7736,"mutability":"mutable","name":"key","nameLocation":"1926:3:18","nodeType":"VariableDeclaration","scope":7741,"src":"1918:11:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7735,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1918:7:18","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":7738,"mutability":"mutable","name":"value","nameLocation":"1947:5:18","nodeType":"VariableDeclaration","scope":7741,"src":"1939:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7737,"name":"address","nodeType":"ElementaryTypeName","src":"1939:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1845:113:18"},"returnParameters":{"id":7740,"nodeType":"ParameterList","parameters":[],"src":"1967:0:18"},"scope":7796,"src":"1827:141:18","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7742,"nodeType":"StructuredDocumentation","src":"1978:58:18","text":" @dev Set configuration as uint256 value"},"functionSelector":"f79a8e63","id":7755,"implemented":false,"kind":"function","modifiers":[],"name":"setConfig","nameLocation":"2050:9:18","nodeType":"FunctionDefinition","parameters":{"id":7753,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7745,"mutability":"mutable","name":"host","nameLocation":"2081:4:18","nodeType":"VariableDeclaration","scope":7755,"src":"2069:16:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"},"typeName":{"id":7744,"nodeType":"UserDefinedTypeName","pathNode":{"id":7743,"name":"ISuperfluid","nameLocations":["2069:11:18"],"nodeType":"IdentifierPath","referencedDeclaration":7667,"src":"2069:11:18"},"referencedDeclaration":7667,"src":"2069:11:18","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":7748,"mutability":"mutable","name":"superToken","nameLocation":"2112:10:18","nodeType":"VariableDeclaration","scope":7755,"src":"2095:27:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"},"typeName":{"id":7747,"nodeType":"UserDefinedTypeName","pathNode":{"id":7746,"name":"ISuperfluidToken","nameLocations":["2095:16:18"],"nodeType":"IdentifierPath","referencedDeclaration":8082,"src":"2095:16:18"},"referencedDeclaration":8082,"src":"2095:16:18","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":7750,"mutability":"mutable","name":"key","nameLocation":"2140:3:18","nodeType":"VariableDeclaration","scope":7755,"src":"2132:11:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7749,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2132:7:18","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":7752,"mutability":"mutable","name":"value","nameLocation":"2161:5:18","nodeType":"VariableDeclaration","scope":7755,"src":"2153:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7751,"name":"uint256","nodeType":"ElementaryTypeName","src":"2153:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2059:113:18"},"returnParameters":{"id":7754,"nodeType":"ParameterList","parameters":[],"src":"2181:0:18"},"scope":7796,"src":"2041:141:18","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7756,"nodeType":"StructuredDocumentation","src":"2188:43:18","text":" @dev Clear configuration"},"functionSelector":"640b6cc9","id":7767,"implemented":false,"kind":"function","modifiers":[],"name":"clearConfig","nameLocation":"2245:11:18","nodeType":"FunctionDefinition","parameters":{"id":7765,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7759,"mutability":"mutable","name":"host","nameLocation":"2278:4:18","nodeType":"VariableDeclaration","scope":7767,"src":"2266:16:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"},"typeName":{"id":7758,"nodeType":"UserDefinedTypeName","pathNode":{"id":7757,"name":"ISuperfluid","nameLocations":["2266:11:18"],"nodeType":"IdentifierPath","referencedDeclaration":7667,"src":"2266:11:18"},"referencedDeclaration":7667,"src":"2266:11:18","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":7762,"mutability":"mutable","name":"superToken","nameLocation":"2309:10:18","nodeType":"VariableDeclaration","scope":7767,"src":"2292:27:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"},"typeName":{"id":7761,"nodeType":"UserDefinedTypeName","pathNode":{"id":7760,"name":"ISuperfluidToken","nameLocations":["2292:16:18"],"nodeType":"IdentifierPath","referencedDeclaration":8082,"src":"2292:16:18"},"referencedDeclaration":8082,"src":"2292:16:18","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":7764,"mutability":"mutable","name":"key","nameLocation":"2337:3:18","nodeType":"VariableDeclaration","scope":7767,"src":"2329:11:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7763,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2329:7:18","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2256:90:18"},"returnParameters":{"id":7766,"nodeType":"ParameterList","parameters":[],"src":"2355:0:18"},"scope":7796,"src":"2236:120:18","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":7768,"nodeType":"StructuredDocumentation","src":"2362:58:18","text":" @dev Get configuration as address value"},"functionSelector":"8369a0f1","id":7781,"implemented":false,"kind":"function","modifiers":[],"name":"getConfigAsAddress","nameLocation":"2434:18:18","nodeType":"FunctionDefinition","parameters":{"id":7777,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7771,"mutability":"mutable","name":"host","nameLocation":"2474:4:18","nodeType":"VariableDeclaration","scope":7781,"src":"2462:16:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"},"typeName":{"id":7770,"nodeType":"UserDefinedTypeName","pathNode":{"id":7769,"name":"ISuperfluid","nameLocations":["2462:11:18"],"nodeType":"IdentifierPath","referencedDeclaration":7667,"src":"2462:11:18"},"referencedDeclaration":7667,"src":"2462:11:18","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":7774,"mutability":"mutable","name":"superToken","nameLocation":"2505:10:18","nodeType":"VariableDeclaration","scope":7781,"src":"2488:27:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"},"typeName":{"id":7773,"nodeType":"UserDefinedTypeName","pathNode":{"id":7772,"name":"ISuperfluidToken","nameLocations":["2488:16:18"],"nodeType":"IdentifierPath","referencedDeclaration":8082,"src":"2488:16:18"},"referencedDeclaration":8082,"src":"2488:16:18","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":7776,"mutability":"mutable","name":"key","nameLocation":"2533:3:18","nodeType":"VariableDeclaration","scope":7781,"src":"2525:11:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7775,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2525:7:18","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2452:85:18"},"returnParameters":{"id":7780,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7779,"mutability":"mutable","name":"value","nameLocation":"2569:5:18","nodeType":"VariableDeclaration","scope":7781,"src":"2561:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7778,"name":"address","nodeType":"ElementaryTypeName","src":"2561:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2560:15:18"},"scope":7796,"src":"2425:151:18","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7782,"nodeType":"StructuredDocumentation","src":"2582:58:18","text":" @dev Get configuration as uint256 value"},"functionSelector":"80f70cba","id":7795,"implemented":false,"kind":"function","modifiers":[],"name":"getConfigAsUint256","nameLocation":"2654:18:18","nodeType":"FunctionDefinition","parameters":{"id":7791,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7785,"mutability":"mutable","name":"host","nameLocation":"2694:4:18","nodeType":"VariableDeclaration","scope":7795,"src":"2682:16:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"},"typeName":{"id":7784,"nodeType":"UserDefinedTypeName","pathNode":{"id":7783,"name":"ISuperfluid","nameLocations":["2682:11:18"],"nodeType":"IdentifierPath","referencedDeclaration":7667,"src":"2682:11:18"},"referencedDeclaration":7667,"src":"2682:11:18","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluid_$7667","typeString":"contract ISuperfluid"}},"visibility":"internal"},{"constant":false,"id":7788,"mutability":"mutable","name":"superToken","nameLocation":"2725:10:18","nodeType":"VariableDeclaration","scope":7795,"src":"2708:27:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"},"typeName":{"id":7787,"nodeType":"UserDefinedTypeName","pathNode":{"id":7786,"name":"ISuperfluidToken","nameLocations":["2708:16:18"],"nodeType":"IdentifierPath","referencedDeclaration":8082,"src":"2708:16:18"},"referencedDeclaration":8082,"src":"2708:16:18","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperfluidToken_$8082","typeString":"contract ISuperfluidToken"}},"visibility":"internal"},{"constant":false,"id":7790,"mutability":"mutable","name":"key","nameLocation":"2753:3:18","nodeType":"VariableDeclaration","scope":7795,"src":"2745:11:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7789,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2745:7:18","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2672:85:18"},"returnParameters":{"id":7794,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7793,"mutability":"mutable","name":"value","nameLocation":"2789:5:18","nodeType":"VariableDeclaration","scope":7795,"src":"2781:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7792,"name":"uint256","nodeType":"ElementaryTypeName","src":"2781:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2780:15:18"},"scope":7796,"src":"2645:151:18","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":7797,"src":"351:2448:18","usedErrors":[7680,7682,7684]}],"src":"35:2765:18"},"id":18},"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol":{"ast":{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol","exportedSymbols":{"ISuperAgreement":[6463],"ISuperfluidToken":[8082]},"id":8083,"license":"AGPLv3","nodeType":"SourceUnit","nodes":[{"id":7798,"literals":["solidity",">=","0.8",".4"],"nodeType":"PragmaDirective","src":"35:25:19"},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol","file":"./ISuperAgreement.sol","id":7800,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8083,"sourceUnit":6464,"src":"62:56:19","symbolAliases":[{"foreign":{"id":7799,"name":"ISuperAgreement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6463,"src":"71:15:19","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"ISuperfluidToken","contractDependencies":[],"contractKind":"interface","documentation":{"id":7801,"nodeType":"StructuredDocumentation","src":"120:66:19","text":" @title Superfluid token interface\n @author Superfluid"},"fullyImplemented":false,"id":8082,"linearizedBaseContracts":[8082],"name":"ISuperfluidToken","nameLocation":"197:16:19","nodeType":"ContractDefinition","nodes":[{"errorSelector":"f05521f6","id":7803,"name":"SF_TOKEN_AGREEMENT_ALREADY_EXISTS","nameLocation":"401:33:19","nodeType":"ErrorDefinition","parameters":{"id":7802,"nodeType":"ParameterList","parameters":[],"src":"434:2:19"},"src":"395:42:19"},{"errorSelector":"dae18809","id":7805,"name":"SF_TOKEN_AGREEMENT_DOES_NOT_EXIST","nameLocation":"463:33:19","nodeType":"ErrorDefinition","parameters":{"id":7804,"nodeType":"ParameterList","parameters":[],"src":"496:2:19"},"src":"457:42:19"},{"errorSelector":"10ecdf44","id":7807,"name":"SF_TOKEN_BURN_INSUFFICIENT_BALANCE","nameLocation":"525:34:19","nodeType":"ErrorDefinition","parameters":{"id":7806,"nodeType":"ParameterList","parameters":[],"src":"559:2:19"},"src":"519:43:19"},{"errorSelector":"2f4cb941","id":7809,"name":"SF_TOKEN_MOVE_INSUFFICIENT_BALANCE","nameLocation":"587:34:19","nodeType":"ErrorDefinition","parameters":{"id":7808,"nodeType":"ParameterList","parameters":[],"src":"621:2:19"},"src":"581:43:19"},{"errorSelector":"c9ff6644","id":7811,"name":"SF_TOKEN_ONLY_LISTED_AGREEMENT","nameLocation":"649:30:19","nodeType":"ErrorDefinition","parameters":{"id":7810,"nodeType":"ParameterList","parameters":[],"src":"679:2:19"},"src":"643:39:19"},{"errorSelector":"c51efddd","id":7813,"name":"SF_TOKEN_ONLY_HOST","nameLocation":"711:18:19","nodeType":"ErrorDefinition","parameters":{"id":7812,"nodeType":"ParameterList","parameters":[],"src":"729:2:19"},"src":"705:27:19"},{"documentation":{"id":7814,"nodeType":"StructuredDocumentation","src":"954:60:19","text":" @dev Get superfluid host contract address"},"functionSelector":"20bc4425","id":7819,"implemented":false,"kind":"function","modifiers":[],"name":"getHost","nameLocation":"1028:7:19","nodeType":"FunctionDefinition","parameters":{"id":7815,"nodeType":"ParameterList","parameters":[],"src":"1035:2:19"},"returnParameters":{"id":7818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7817,"mutability":"mutable","name":"host","nameLocation":"1068:4:19","nodeType":"VariableDeclaration","scope":7819,"src":"1060:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7816,"name":"address","nodeType":"ElementaryTypeName","src":"1060:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1059:14:19"},"scope":8082,"src":"1019:55:19","stateMutability":"view","virtual":false,"visibility":"external"},{"canonicalName":"ISuperfluidToken.LiquidationTypeData","id":7824,"members":[{"constant":false,"id":7821,"mutability":"mutable","name":"version","nameLocation":"1507:7:19","nodeType":"VariableDeclaration","scope":7824,"src":"1499:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7820,"name":"uint256","nodeType":"ElementaryTypeName","src":"1499:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7823,"mutability":"mutable","name":"liquidationType","nameLocation":"1530:15:19","nodeType":"VariableDeclaration","scope":7824,"src":"1524:21:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":7822,"name":"uint8","nodeType":"ElementaryTypeName","src":"1524:5:19","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"name":"LiquidationTypeData","nameLocation":"1469:19:19","nodeType":"StructDefinition","scope":8082,"src":"1462:90:19","visibility":"public"},{"documentation":{"id":7825,"nodeType":"StructuredDocumentation","src":"1754:321:19","text":" @dev Calculate the real balance of a user, taking in consideration all agreements of the account\n @param account for the query\n @param timestamp Time of balance\n @return availableBalance Real-time balance\n @return deposit Account deposit\n @return owedDeposit Account owed Deposit"},"functionSelector":"eb3537cc","id":7838,"implemented":false,"kind":"function","modifiers":[],"name":"realtimeBalanceOf","nameLocation":"2089:17:19","nodeType":"FunctionDefinition","parameters":{"id":7830,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7827,"mutability":"mutable","name":"account","nameLocation":"2123:7:19","nodeType":"VariableDeclaration","scope":7838,"src":"2115:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7826,"name":"address","nodeType":"ElementaryTypeName","src":"2115:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7829,"mutability":"mutable","name":"timestamp","nameLocation":"2147:9:19","nodeType":"VariableDeclaration","scope":7838,"src":"2139:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7828,"name":"uint256","nodeType":"ElementaryTypeName","src":"2139:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2106:56:19"},"returnParameters":{"id":7837,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7832,"mutability":"mutable","name":"availableBalance","nameLocation":"2222:16:19","nodeType":"VariableDeclaration","scope":7838,"src":"2215:23:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7831,"name":"int256","nodeType":"ElementaryTypeName","src":"2215:6:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":7834,"mutability":"mutable","name":"deposit","nameLocation":"2260:7:19","nodeType":"VariableDeclaration","scope":7838,"src":"2252:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7833,"name":"uint256","nodeType":"ElementaryTypeName","src":"2252:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7836,"mutability":"mutable","name":"owedDeposit","nameLocation":"2289:11:19","nodeType":"VariableDeclaration","scope":7838,"src":"2281:19:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7835,"name":"uint256","nodeType":"ElementaryTypeName","src":"2281:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2201:100:19"},"scope":8082,"src":"2080:222:19","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7839,"nodeType":"StructuredDocumentation","src":"2308:339:19","text":" @notice Calculate the realtime balance given the current host.getNow() value\n @dev realtimeBalanceOf with timestamp equals to block timestamp\n @param account for the query\n @return availableBalance Real-time balance\n @return deposit Account deposit\n @return owedDeposit Account owed Deposit"},"functionSelector":"2ec8eec7","id":7852,"implemented":false,"kind":"function","modifiers":[],"name":"realtimeBalanceOfNow","nameLocation":"2661:20:19","nodeType":"FunctionDefinition","parameters":{"id":7842,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7841,"mutability":"mutable","name":"account","nameLocation":"2698:7:19","nodeType":"VariableDeclaration","scope":7852,"src":"2690:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7840,"name":"address","nodeType":"ElementaryTypeName","src":"2690:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2681:30:19"},"returnParameters":{"id":7851,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7844,"mutability":"mutable","name":"availableBalance","nameLocation":"2771:16:19","nodeType":"VariableDeclaration","scope":7852,"src":"2764:23:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7843,"name":"int256","nodeType":"ElementaryTypeName","src":"2764:6:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":7846,"mutability":"mutable","name":"deposit","nameLocation":"2809:7:19","nodeType":"VariableDeclaration","scope":7852,"src":"2801:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7845,"name":"uint256","nodeType":"ElementaryTypeName","src":"2801:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7848,"mutability":"mutable","name":"owedDeposit","nameLocation":"2838:11:19","nodeType":"VariableDeclaration","scope":7852,"src":"2830:19:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7847,"name":"uint256","nodeType":"ElementaryTypeName","src":"2830:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7850,"mutability":"mutable","name":"timestamp","nameLocation":"2871:9:19","nodeType":"VariableDeclaration","scope":7852,"src":"2863:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7849,"name":"uint256","nodeType":"ElementaryTypeName","src":"2863:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2750:131:19"},"scope":8082,"src":"2652:230:19","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7853,"nodeType":"StructuredDocumentation","src":"2888:309:19","text":" @notice Check if account is critical\n @dev A critical account is when availableBalance < 0\n @param account The account to check\n @param timestamp The time we'd like to check if the account is critical (should use future)\n @return isCritical Whether the account is critical"},"functionSelector":"d9d078d6","id":7862,"implemented":false,"kind":"function","modifiers":[],"name":"isAccountCritical","nameLocation":"3211:17:19","nodeType":"FunctionDefinition","parameters":{"id":7858,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7855,"mutability":"mutable","name":"account","nameLocation":"3246:7:19","nodeType":"VariableDeclaration","scope":7862,"src":"3238:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7854,"name":"address","nodeType":"ElementaryTypeName","src":"3238:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7857,"mutability":"mutable","name":"timestamp","nameLocation":"3271:9:19","nodeType":"VariableDeclaration","scope":7862,"src":"3263:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7856,"name":"uint256","nodeType":"ElementaryTypeName","src":"3263:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3228:58:19"},"returnParameters":{"id":7861,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7860,"mutability":"mutable","name":"isCritical","nameLocation":"3330:10:19","nodeType":"VariableDeclaration","scope":7862,"src":"3325:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7859,"name":"bool","nodeType":"ElementaryTypeName","src":"3325:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3324:17:19"},"scope":8082,"src":"3202:140:19","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7863,"nodeType":"StructuredDocumentation","src":"3348:239:19","text":" @notice Check if account is critical now (current host.getNow())\n @dev A critical account is when availableBalance < 0\n @param account The account to check\n @return isCritical Whether the account is critical"},"functionSelector":"79359f6f","id":7870,"implemented":false,"kind":"function","modifiers":[],"name":"isAccountCriticalNow","nameLocation":"3601:20:19","nodeType":"FunctionDefinition","parameters":{"id":7866,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7865,"mutability":"mutable","name":"account","nameLocation":"3639:7:19","nodeType":"VariableDeclaration","scope":7870,"src":"3631:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7864,"name":"address","nodeType":"ElementaryTypeName","src":"3631:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3621:31:19"},"returnParameters":{"id":7869,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7868,"mutability":"mutable","name":"isCritical","nameLocation":"3696:10:19","nodeType":"VariableDeclaration","scope":7870,"src":"3691:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7867,"name":"bool","nodeType":"ElementaryTypeName","src":"3691:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3690:17:19"},"scope":8082,"src":"3592:116:19","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7871,"nodeType":"StructuredDocumentation","src":"3714:383:19","text":" @notice Check if account is solvent\n @dev An account is insolvent when the sum of deposits for a token can't cover the negative availableBalance\n @param account The account to check\n @param timestamp The time we'd like to check if the account is solvent (should use future)\n @return isSolvent True if the account is solvent, false otherwise"},"functionSelector":"b84cdd4a","id":7880,"implemented":false,"kind":"function","modifiers":[],"name":"isAccountSolvent","nameLocation":"4111:16:19","nodeType":"FunctionDefinition","parameters":{"id":7876,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7873,"mutability":"mutable","name":"account","nameLocation":"4145:7:19","nodeType":"VariableDeclaration","scope":7880,"src":"4137:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7872,"name":"address","nodeType":"ElementaryTypeName","src":"4137:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7875,"mutability":"mutable","name":"timestamp","nameLocation":"4170:9:19","nodeType":"VariableDeclaration","scope":7880,"src":"4162:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7874,"name":"uint256","nodeType":"ElementaryTypeName","src":"4162:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4127:58:19"},"returnParameters":{"id":7879,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7878,"mutability":"mutable","name":"isSolvent","nameLocation":"4229:9:19","nodeType":"VariableDeclaration","scope":7880,"src":"4224:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7877,"name":"bool","nodeType":"ElementaryTypeName","src":"4224:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4223:16:19"},"scope":8082,"src":"4102:138:19","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7881,"nodeType":"StructuredDocumentation","src":"4246:289:19","text":" @notice Check if account is solvent now\n @dev An account is insolvent when the sum of deposits for a token can't cover the negative availableBalance\n @param account The account to check\n @return isSolvent True if the account is solvent, false otherwise"},"functionSelector":"bb0d196e","id":7888,"implemented":false,"kind":"function","modifiers":[],"name":"isAccountSolventNow","nameLocation":"4549:19:19","nodeType":"FunctionDefinition","parameters":{"id":7884,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7883,"mutability":"mutable","name":"account","nameLocation":"4586:7:19","nodeType":"VariableDeclaration","scope":7888,"src":"4578:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7882,"name":"address","nodeType":"ElementaryTypeName","src":"4578:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4568:31:19"},"returnParameters":{"id":7887,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7886,"mutability":"mutable","name":"isSolvent","nameLocation":"4643:9:19","nodeType":"VariableDeclaration","scope":7888,"src":"4638:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7885,"name":"bool","nodeType":"ElementaryTypeName","src":"4638:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4637:16:19"},"scope":8082,"src":"4540:114:19","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7889,"nodeType":"StructuredDocumentation","src":"4660:277:19","text":" @notice Get a list of agreements that is active for the account\n @dev An active agreement is one that has state for the account\n @param account Account to query\n @return activeAgreements List of accounts that have non-zero states for the account"},"functionSelector":"386fa221","id":7898,"implemented":false,"kind":"function","modifiers":[],"name":"getAccountActiveAgreements","nameLocation":"4951:26:19","nodeType":"FunctionDefinition","parameters":{"id":7892,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7891,"mutability":"mutable","name":"account","nameLocation":"4986:7:19","nodeType":"VariableDeclaration","scope":7898,"src":"4978:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7890,"name":"address","nodeType":"ElementaryTypeName","src":"4978:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4977:17:19"},"returnParameters":{"id":7897,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7896,"mutability":"mutable","name":"activeAgreements","nameLocation":"5056:16:19","nodeType":"VariableDeclaration","scope":7898,"src":"5031:41:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_ISuperAgreement_$6463_$dyn_memory_ptr","typeString":"contract ISuperAgreement[]"},"typeName":{"baseType":{"id":7894,"nodeType":"UserDefinedTypeName","pathNode":{"id":7893,"name":"ISuperAgreement","nameLocations":["5031:15:19"],"nodeType":"IdentifierPath","referencedDeclaration":6463,"src":"5031:15:19"},"referencedDeclaration":6463,"src":"5031:15:19","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperAgreement_$6463","typeString":"contract ISuperAgreement"}},"id":7895,"nodeType":"ArrayTypeName","src":"5031:17:19","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_ISuperAgreement_$6463_$dyn_storage_ptr","typeString":"contract ISuperAgreement[]"}},"visibility":"internal"}],"src":"5030:43:19"},"scope":8082,"src":"4942:132:19","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7899,"nodeType":"StructuredDocumentation","src":"5280:110:19","text":" @dev Create a new agreement\n @param id Agreement ID\n @param data Agreement data"},"functionSelector":"12a6a3f8","id":7907,"implemented":false,"kind":"function","modifiers":[],"name":"createAgreement","nameLocation":"5404:15:19","nodeType":"FunctionDefinition","parameters":{"id":7905,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7901,"mutability":"mutable","name":"id","nameLocation":"5437:2:19","nodeType":"VariableDeclaration","scope":7907,"src":"5429:10:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7900,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5429:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":7904,"mutability":"mutable","name":"data","nameLocation":"5468:4:19","nodeType":"VariableDeclaration","scope":7907,"src":"5449:23:19","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":7902,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5449:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7903,"nodeType":"ArrayTypeName","src":"5449:9:19","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"5419:59:19"},"returnParameters":{"id":7906,"nodeType":"ParameterList","parameters":[],"src":"5495:0:19"},"scope":8082,"src":"5395:101:19","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":7908,"nodeType":"StructuredDocumentation","src":"5501:174:19","text":" @dev Agreement created event\n @param agreementClass Contract address of the agreement\n @param id Agreement ID\n @param data Agreement data"},"eventSelector":"770ea40a13a4644573ed785e5c7116890709947918747febc5add46feb531e2d","id":7917,"name":"AgreementCreated","nameLocation":"5686:16:19","nodeType":"EventDefinition","parameters":{"id":7916,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7910,"indexed":true,"mutability":"mutable","name":"agreementClass","nameLocation":"5728:14:19","nodeType":"VariableDeclaration","scope":7917,"src":"5712:30:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7909,"name":"address","nodeType":"ElementaryTypeName","src":"5712:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7912,"indexed":false,"mutability":"mutable","name":"id","nameLocation":"5760:2:19","nodeType":"VariableDeclaration","scope":7917,"src":"5752:10:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7911,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5752:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":7915,"indexed":false,"mutability":"mutable","name":"data","nameLocation":"5782:4:19","nodeType":"VariableDeclaration","scope":7917,"src":"5772:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":7913,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5772:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7914,"nodeType":"ArrayTypeName","src":"5772:9:19","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"5702:90:19"},"src":"5680:113:19"},{"documentation":{"id":7918,"nodeType":"StructuredDocumentation","src":"5799:184:19","text":" @dev Get data of the agreement\n @param agreementClass Contract address of the agreement\n @param id Agreement ID\n @return data Data of the agreement"},"functionSelector":"6c2d9f2f","id":7930,"implemented":false,"kind":"function","modifiers":[],"name":"getAgreementData","nameLocation":"5997:16:19","nodeType":"FunctionDefinition","parameters":{"id":7925,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7920,"mutability":"mutable","name":"agreementClass","nameLocation":"6031:14:19","nodeType":"VariableDeclaration","scope":7930,"src":"6023:22:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7919,"name":"address","nodeType":"ElementaryTypeName","src":"6023:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7922,"mutability":"mutable","name":"id","nameLocation":"6063:2:19","nodeType":"VariableDeclaration","scope":7930,"src":"6055:10:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7921,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6055:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":7924,"mutability":"mutable","name":"dataLength","nameLocation":"6080:10:19","nodeType":"VariableDeclaration","scope":7930,"src":"6075:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7923,"name":"uint","nodeType":"ElementaryTypeName","src":"6075:4:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6013:83:19"},"returnParameters":{"id":7929,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7928,"mutability":"mutable","name":"data","nameLocation":"6152:4:19","nodeType":"VariableDeclaration","scope":7930,"src":"6135:21:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":7926,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6135:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7927,"nodeType":"ArrayTypeName","src":"6135:9:19","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"6134:23:19"},"scope":8082,"src":"5988:170:19","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":7931,"nodeType":"StructuredDocumentation","src":"6164:110:19","text":" @dev Create a new agreement\n @param id Agreement ID\n @param data Agreement data"},"functionSelector":"a1b2bf8b","id":7939,"implemented":false,"kind":"function","modifiers":[],"name":"updateAgreementData","nameLocation":"6288:19:19","nodeType":"FunctionDefinition","parameters":{"id":7937,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7933,"mutability":"mutable","name":"id","nameLocation":"6325:2:19","nodeType":"VariableDeclaration","scope":7939,"src":"6317:10:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7932,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6317:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":7936,"mutability":"mutable","name":"data","nameLocation":"6356:4:19","nodeType":"VariableDeclaration","scope":7939,"src":"6337:23:19","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":7934,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6337:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7935,"nodeType":"ArrayTypeName","src":"6337:9:19","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"6307:59:19"},"returnParameters":{"id":7938,"nodeType":"ParameterList","parameters":[],"src":"6383:0:19"},"scope":8082,"src":"6279:105:19","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":7940,"nodeType":"StructuredDocumentation","src":"6389:174:19","text":" @dev Agreement updated event\n @param agreementClass Contract address of the agreement\n @param id Agreement ID\n @param data Agreement data"},"eventSelector":"0c4c547b3a4fcaa5be8353b3111472b124155bccc86de811d4a481c9e6e9faca","id":7949,"name":"AgreementUpdated","nameLocation":"6574:16:19","nodeType":"EventDefinition","parameters":{"id":7948,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7942,"indexed":true,"mutability":"mutable","name":"agreementClass","nameLocation":"6616:14:19","nodeType":"VariableDeclaration","scope":7949,"src":"6600:30:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7941,"name":"address","nodeType":"ElementaryTypeName","src":"6600:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7944,"indexed":false,"mutability":"mutable","name":"id","nameLocation":"6648:2:19","nodeType":"VariableDeclaration","scope":7949,"src":"6640:10:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7943,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6640:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":7947,"indexed":false,"mutability":"mutable","name":"data","nameLocation":"6670:4:19","nodeType":"VariableDeclaration","scope":7949,"src":"6660:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":7945,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6660:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7946,"nodeType":"ArrayTypeName","src":"6660:9:19","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"6590:90:19"},"src":"6568:113:19"},{"documentation":{"id":7950,"nodeType":"StructuredDocumentation","src":"6687:73:19","text":" @dev Close the agreement\n @param id Agreement ID"},"functionSelector":"27048397","id":7957,"implemented":false,"kind":"function","modifiers":[],"name":"terminateAgreement","nameLocation":"6774:18:19","nodeType":"FunctionDefinition","parameters":{"id":7955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7952,"mutability":"mutable","name":"id","nameLocation":"6810:2:19","nodeType":"VariableDeclaration","scope":7957,"src":"6802:10:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7951,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6802:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":7954,"mutability":"mutable","name":"dataLength","nameLocation":"6827:10:19","nodeType":"VariableDeclaration","scope":7957,"src":"6822:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7953,"name":"uint","nodeType":"ElementaryTypeName","src":"6822:4:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6792:51:19"},"returnParameters":{"id":7956,"nodeType":"ParameterList","parameters":[],"src":"6860:0:19"},"scope":8082,"src":"6765:96:19","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":7958,"nodeType":"StructuredDocumentation","src":"6866:143:19","text":" @dev Agreement terminated event\n @param agreementClass Contract address of the agreement\n @param id Agreement ID"},"eventSelector":"71a63dc095de07aa5512ad57a7596a39516317e316981a1cd71000057be1537b","id":7964,"name":"AgreementTerminated","nameLocation":"7020:19:19","nodeType":"EventDefinition","parameters":{"id":7963,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7960,"indexed":true,"mutability":"mutable","name":"agreementClass","nameLocation":"7065:14:19","nodeType":"VariableDeclaration","scope":7964,"src":"7049:30:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7959,"name":"address","nodeType":"ElementaryTypeName","src":"7049:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7962,"indexed":false,"mutability":"mutable","name":"id","nameLocation":"7097:2:19","nodeType":"VariableDeclaration","scope":7964,"src":"7089:10:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7961,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7089:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7039:66:19"},"src":"7014:92:19"},{"documentation":{"id":7965,"nodeType":"StructuredDocumentation","src":"7112:199:19","text":" @dev Update agreement state slot\n @param account Account to be updated\n @custom:note \n - To clear the storage out, provide zero-ed array of intended length"},"functionSelector":"090c415e","id":7975,"implemented":false,"kind":"function","modifiers":[],"name":"updateAgreementStateSlot","nameLocation":"7325:24:19","nodeType":"FunctionDefinition","parameters":{"id":7973,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7967,"mutability":"mutable","name":"account","nameLocation":"7367:7:19","nodeType":"VariableDeclaration","scope":7975,"src":"7359:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7966,"name":"address","nodeType":"ElementaryTypeName","src":"7359:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7969,"mutability":"mutable","name":"slotId","nameLocation":"7392:6:19","nodeType":"VariableDeclaration","scope":7975,"src":"7384:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7968,"name":"uint256","nodeType":"ElementaryTypeName","src":"7384:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7972,"mutability":"mutable","name":"slotData","nameLocation":"7427:8:19","nodeType":"VariableDeclaration","scope":7975,"src":"7408:27:19","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":7970,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7408:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7971,"nodeType":"ArrayTypeName","src":"7408:9:19","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"7349:92:19"},"returnParameters":{"id":7974,"nodeType":"ParameterList","parameters":[],"src":"7458:0:19"},"scope":8082,"src":"7316:143:19","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":7976,"nodeType":"StructuredDocumentation","src":"7464:214:19","text":" @dev Agreement account state updated event\n @param agreementClass Contract address of the agreement\n @param account Account updated\n @param slotId slot id of the agreement state"},"eventSelector":"30f416fa68fca014a0f334464c64b000ba53e99b6d2afdea9d5ca756372d5985","id":7984,"name":"AgreementStateUpdated","nameLocation":"7689:21:19","nodeType":"EventDefinition","parameters":{"id":7983,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7978,"indexed":true,"mutability":"mutable","name":"agreementClass","nameLocation":"7736:14:19","nodeType":"VariableDeclaration","scope":7984,"src":"7720:30:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7977,"name":"address","nodeType":"ElementaryTypeName","src":"7720:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7980,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"7776:7:19","nodeType":"VariableDeclaration","scope":7984,"src":"7760:23:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7979,"name":"address","nodeType":"ElementaryTypeName","src":"7760:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7982,"indexed":false,"mutability":"mutable","name":"slotId","nameLocation":"7801:6:19","nodeType":"VariableDeclaration","scope":7984,"src":"7793:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7981,"name":"uint256","nodeType":"ElementaryTypeName","src":"7793:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7710:103:19"},"src":"7683:131:19"},{"documentation":{"id":7985,"nodeType":"StructuredDocumentation","src":"7820:267:19","text":" @dev Get data of the slot of the state of an agreement\n @param agreementClass Contract address of the agreement\n @param account Account to query\n @param slotId slot id of the state\n @param dataLength length of the state data"},"functionSelector":"4b61cc33","id":7999,"implemented":false,"kind":"function","modifiers":[],"name":"getAgreementStateSlot","nameLocation":"8101:21:19","nodeType":"FunctionDefinition","parameters":{"id":7994,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7987,"mutability":"mutable","name":"agreementClass","nameLocation":"8140:14:19","nodeType":"VariableDeclaration","scope":7999,"src":"8132:22:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7986,"name":"address","nodeType":"ElementaryTypeName","src":"8132:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7989,"mutability":"mutable","name":"account","nameLocation":"8172:7:19","nodeType":"VariableDeclaration","scope":7999,"src":"8164:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7988,"name":"address","nodeType":"ElementaryTypeName","src":"8164:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7991,"mutability":"mutable","name":"slotId","nameLocation":"8197:6:19","nodeType":"VariableDeclaration","scope":7999,"src":"8189:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7990,"name":"uint256","nodeType":"ElementaryTypeName","src":"8189:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7993,"mutability":"mutable","name":"dataLength","nameLocation":"8218:10:19","nodeType":"VariableDeclaration","scope":7999,"src":"8213:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7992,"name":"uint","nodeType":"ElementaryTypeName","src":"8213:4:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8122:112:19"},"returnParameters":{"id":7998,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7997,"mutability":"mutable","name":"slotData","nameLocation":"8291:8:19","nodeType":"VariableDeclaration","scope":7999,"src":"8274:25:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":7995,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8274:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7996,"nodeType":"ArrayTypeName","src":"8274:9:19","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"8273:27:19"},"scope":8082,"src":"8092:209:19","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":8000,"nodeType":"StructuredDocumentation","src":"8307:320:19","text":" @notice Settle balance from an account by the agreement\n @dev The agreement needs to make sure that the balance delta is balanced afterwards\n @param account Account to query.\n @param delta Amount of balance delta to be settled\n @custom:modifiers \n - onlyAgreement"},"functionSelector":"cf97256d","id":8007,"implemented":false,"kind":"function","modifiers":[],"name":"settleBalance","nameLocation":"8641:13:19","nodeType":"FunctionDefinition","parameters":{"id":8005,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8002,"mutability":"mutable","name":"account","nameLocation":"8672:7:19","nodeType":"VariableDeclaration","scope":8007,"src":"8664:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8001,"name":"address","nodeType":"ElementaryTypeName","src":"8664:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8004,"mutability":"mutable","name":"delta","nameLocation":"8696:5:19","nodeType":"VariableDeclaration","scope":8007,"src":"8689:12:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8003,"name":"int256","nodeType":"ElementaryTypeName","src":"8689:6:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"8654:53:19"},"returnParameters":{"id":8006,"nodeType":"ParameterList","parameters":[],"src":"8724:0:19"},"scope":8082,"src":"8632:93:19","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":8008,"nodeType":"StructuredDocumentation","src":"8731:1154:19","text":" @dev Make liquidation payouts (v2)\n @param id Agreement ID\n @param liquidationTypeData Data regarding the version of the liquidation schema and the type\n @param liquidatorAccount Address of the executor of the liquidation\n @param useDefaultRewardAccount Whether or not the default reward account receives the rewardAmount\n @param targetAccount Account to be liquidated\n @param rewardAmount The amount the rewarded account will receive\n @param targetAccountBalanceDelta The delta amount the target account balance should change by\n @custom:note \n - If a bailout is required (bailoutAmount > 0)\n - the actual reward (single deposit) goes to the executor,\n - while the reward account becomes the bailout account\n - total bailout include: bailout amount + reward amount\n - the targetAccount will be bailed out\n - If a bailout is not required\n - the targetAccount will pay the rewardAmount\n - the liquidator (reward account in PIC period) will receive the rewardAmount\n @custom:modifiers \n - onlyAgreement"},"functionSelector":"1863e809","id":8025,"implemented":false,"kind":"function","modifiers":[],"name":"makeLiquidationPayoutsV2","nameLocation":"9899:24:19","nodeType":"FunctionDefinition","parameters":{"id":8023,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8010,"mutability":"mutable","name":"id","nameLocation":"9946:2:19","nodeType":"VariableDeclaration","scope":8025,"src":"9938:10:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8009,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9938:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":8012,"mutability":"mutable","name":"liquidationTypeData","nameLocation":"9971:19:19","nodeType":"VariableDeclaration","scope":8025,"src":"9958:32:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":8011,"name":"bytes","nodeType":"ElementaryTypeName","src":"9958:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":8014,"mutability":"mutable","name":"liquidatorAccount","nameLocation":"10008:17:19","nodeType":"VariableDeclaration","scope":8025,"src":"10000:25:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8013,"name":"address","nodeType":"ElementaryTypeName","src":"10000:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8016,"mutability":"mutable","name":"useDefaultRewardAccount","nameLocation":"10040:23:19","nodeType":"VariableDeclaration","scope":8025,"src":"10035:28:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8015,"name":"bool","nodeType":"ElementaryTypeName","src":"10035:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":8018,"mutability":"mutable","name":"targetAccount","nameLocation":"10081:13:19","nodeType":"VariableDeclaration","scope":8025,"src":"10073:21:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8017,"name":"address","nodeType":"ElementaryTypeName","src":"10073:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8020,"mutability":"mutable","name":"rewardAmount","nameLocation":"10112:12:19","nodeType":"VariableDeclaration","scope":8025,"src":"10104:20:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8019,"name":"uint256","nodeType":"ElementaryTypeName","src":"10104:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8022,"mutability":"mutable","name":"targetAccountBalanceDelta","nameLocation":"10141:25:19","nodeType":"VariableDeclaration","scope":8025,"src":"10134:32:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8021,"name":"int256","nodeType":"ElementaryTypeName","src":"10134:6:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"9928:244:19"},"returnParameters":{"id":8024,"nodeType":"ParameterList","parameters":[],"src":"10181:0:19"},"scope":8082,"src":"9890:292:19","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":8026,"nodeType":"StructuredDocumentation","src":"10187:1512:19","text":" @dev Agreement liquidation event v2 (including agent account)\n @param agreementClass Contract address of the agreement\n @param id Agreement ID\n @param liquidatorAccount Address of the executor of the liquidation\n @param targetAccount Account of the stream sender\n @param rewardAmountReceiver Account that collects the reward or bails out insolvent accounts\n @param rewardAmount The amount the reward recipient account balance should change by\n @param targetAccountBalanceDelta The amount the sender account balance should change by\n @param liquidationTypeData The encoded liquidation type data including the version (how to decode)\n @custom:note \n Reward account rule:\n - if the agreement is liquidated during the PIC period\n - the rewardAmountReceiver will get the rewardAmount (remaining deposit), regardless of the liquidatorAccount\n - the targetAccount will pay for the rewardAmount\n - if the agreement is liquidated after the PIC period AND the targetAccount is solvent\n - the rewardAmountReceiver will get the rewardAmount (remaining deposit)\n - the targetAccount will pay for the rewardAmount\n - if the targetAccount is insolvent\n - the liquidatorAccount will get the rewardAmount (single deposit)\n - the default reward account (governance) will pay for both the rewardAmount and bailoutAmount\n - the targetAccount will receive the bailoutAmount"},"eventSelector":"b8381a3ce157650e06186e3e8f4dd4dc29236f2688b6eed1893d0a60d7c6386f","id":8044,"name":"AgreementLiquidatedV2","nameLocation":"11710:21:19","nodeType":"EventDefinition","parameters":{"id":8043,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8028,"indexed":true,"mutability":"mutable","name":"agreementClass","nameLocation":"11757:14:19","nodeType":"VariableDeclaration","scope":8044,"src":"11741:30:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8027,"name":"address","nodeType":"ElementaryTypeName","src":"11741:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8030,"indexed":false,"mutability":"mutable","name":"id","nameLocation":"11789:2:19","nodeType":"VariableDeclaration","scope":8044,"src":"11781:10:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8029,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11781:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":8032,"indexed":true,"mutability":"mutable","name":"liquidatorAccount","nameLocation":"11817:17:19","nodeType":"VariableDeclaration","scope":8044,"src":"11801:33:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8031,"name":"address","nodeType":"ElementaryTypeName","src":"11801:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8034,"indexed":true,"mutability":"mutable","name":"targetAccount","nameLocation":"11860:13:19","nodeType":"VariableDeclaration","scope":8044,"src":"11844:29:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8033,"name":"address","nodeType":"ElementaryTypeName","src":"11844:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8036,"indexed":false,"mutability":"mutable","name":"rewardAmountReceiver","nameLocation":"11891:20:19","nodeType":"VariableDeclaration","scope":8044,"src":"11883:28:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8035,"name":"address","nodeType":"ElementaryTypeName","src":"11883:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8038,"indexed":false,"mutability":"mutable","name":"rewardAmount","nameLocation":"11929:12:19","nodeType":"VariableDeclaration","scope":8044,"src":"11921:20:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8037,"name":"uint256","nodeType":"ElementaryTypeName","src":"11921:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8040,"indexed":false,"mutability":"mutable","name":"targetAccountBalanceDelta","nameLocation":"11958:25:19","nodeType":"VariableDeclaration","scope":8044,"src":"11951:32:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8039,"name":"int256","nodeType":"ElementaryTypeName","src":"11951:6:19","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":8042,"indexed":false,"mutability":"mutable","name":"liquidationTypeData","nameLocation":"11999:19:19","nodeType":"VariableDeclaration","scope":8044,"src":"11993:25:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":8041,"name":"bytes","nodeType":"ElementaryTypeName","src":"11993:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"11731:293:19"},"src":"11704:321:19"},{"anonymous":false,"documentation":{"id":8045,"nodeType":"StructuredDocumentation","src":"12837:435:19","text":" @dev Agreement liquidation event (DEPRECATED BY AgreementLiquidatedBy)\n @param agreementClass Contract address of the agreement\n @param id Agreement ID\n @param penaltyAccount Account of the agreement to be penalized\n @param rewardAccount Account that collect the reward\n @param rewardAmount Amount of liquidation reward\n @custom:deprecated Use AgreementLiquidatedV2 instead"},"eventSelector":"8505c3d8f1f184f032cf0bc4cd80ee61c8b9d94f8907c3281bf0101a2610fe80","id":8057,"name":"AgreementLiquidated","nameLocation":"13283:19:19","nodeType":"EventDefinition","parameters":{"id":8056,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8047,"indexed":true,"mutability":"mutable","name":"agreementClass","nameLocation":"13328:14:19","nodeType":"VariableDeclaration","scope":8057,"src":"13312:30:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8046,"name":"address","nodeType":"ElementaryTypeName","src":"13312:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8049,"indexed":false,"mutability":"mutable","name":"id","nameLocation":"13360:2:19","nodeType":"VariableDeclaration","scope":8057,"src":"13352:10:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8048,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13352:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":8051,"indexed":true,"mutability":"mutable","name":"penaltyAccount","nameLocation":"13388:14:19","nodeType":"VariableDeclaration","scope":8057,"src":"13372:30:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8050,"name":"address","nodeType":"ElementaryTypeName","src":"13372:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8053,"indexed":true,"mutability":"mutable","name":"rewardAccount","nameLocation":"13428:13:19","nodeType":"VariableDeclaration","scope":8057,"src":"13412:29:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8052,"name":"address","nodeType":"ElementaryTypeName","src":"13412:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8055,"indexed":false,"mutability":"mutable","name":"rewardAmount","nameLocation":"13459:12:19","nodeType":"VariableDeclaration","scope":8057,"src":"13451:20:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8054,"name":"uint256","nodeType":"ElementaryTypeName","src":"13451:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13302:175:19"},"src":"13277:201:19"},{"anonymous":false,"documentation":{"id":8058,"nodeType":"StructuredDocumentation","src":"13484:276:19","text":" @dev System bailout occurred (DEPRECATED BY AgreementLiquidatedBy)\n @param bailoutAccount Account that bailout the penalty account\n @param bailoutAmount Amount of account bailout\n @custom:deprecated Use AgreementLiquidatedV2 instead"},"eventSelector":"d6c9a04afc81e8c614310bbee6c9e84f5abe15b82038bf8347014ce0852e6ffd","id":8064,"name":"Bailout","nameLocation":"13771:7:19","nodeType":"EventDefinition","parameters":{"id":8063,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8060,"indexed":true,"mutability":"mutable","name":"bailoutAccount","nameLocation":"13804:14:19","nodeType":"VariableDeclaration","scope":8064,"src":"13788:30:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8059,"name":"address","nodeType":"ElementaryTypeName","src":"13788:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8062,"indexed":false,"mutability":"mutable","name":"bailoutAmount","nameLocation":"13836:13:19","nodeType":"VariableDeclaration","scope":8064,"src":"13828:21:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8061,"name":"uint256","nodeType":"ElementaryTypeName","src":"13828:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13778:77:19"},"src":"13765:91:19"},{"anonymous":false,"documentation":{"id":8065,"nodeType":"StructuredDocumentation","src":"13862:1082:19","text":" @dev Agreement liquidation event (DEPRECATED BY AgreementLiquidatedV2)\n @param liquidatorAccount Account of the agent that performed the liquidation.\n @param agreementClass Contract address of the agreement\n @param id Agreement ID\n @param penaltyAccount Account of the agreement to be penalized\n @param bondAccount Account that collect the reward or bailout accounts\n @param rewardAmount Amount of liquidation reward\n @param bailoutAmount Amount of liquidation bailouot\n @custom:deprecated Use AgreementLiquidatedV2 instead\n @custom:note \n Reward account rule:\n - if bailout is equal to 0, then\n - the bondAccount will get the rewardAmount,\n - the penaltyAccount will pay for the rewardAmount.\n - if bailout is larger than 0, then\n - the liquidatorAccount will get the rewardAmouont,\n - the bondAccount will pay for both the rewardAmount and bailoutAmount,\n - the penaltyAccount will pay for the rewardAmount while get the bailoutAmount."},"eventSelector":"5f22b60e58b1d6de858bc27c48d5a4653e052da99e083c1d88bb8c58e1abc8ef","id":8081,"name":"AgreementLiquidatedBy","nameLocation":"14955:21:19","nodeType":"EventDefinition","parameters":{"id":8080,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8067,"indexed":false,"mutability":"mutable","name":"liquidatorAccount","nameLocation":"14994:17:19","nodeType":"VariableDeclaration","scope":8081,"src":"14986:25:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8066,"name":"address","nodeType":"ElementaryTypeName","src":"14986:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8069,"indexed":true,"mutability":"mutable","name":"agreementClass","nameLocation":"15037:14:19","nodeType":"VariableDeclaration","scope":8081,"src":"15021:30:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8068,"name":"address","nodeType":"ElementaryTypeName","src":"15021:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8071,"indexed":false,"mutability":"mutable","name":"id","nameLocation":"15069:2:19","nodeType":"VariableDeclaration","scope":8081,"src":"15061:10:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8070,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15061:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":8073,"indexed":true,"mutability":"mutable","name":"penaltyAccount","nameLocation":"15097:14:19","nodeType":"VariableDeclaration","scope":8081,"src":"15081:30:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8072,"name":"address","nodeType":"ElementaryTypeName","src":"15081:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8075,"indexed":true,"mutability":"mutable","name":"bondAccount","nameLocation":"15137:11:19","nodeType":"VariableDeclaration","scope":8081,"src":"15121:27:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8074,"name":"address","nodeType":"ElementaryTypeName","src":"15121:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8077,"indexed":false,"mutability":"mutable","name":"rewardAmount","nameLocation":"15166:12:19","nodeType":"VariableDeclaration","scope":8081,"src":"15158:20:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8076,"name":"uint256","nodeType":"ElementaryTypeName","src":"15158:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8079,"indexed":false,"mutability":"mutable","name":"bailoutAmount","nameLocation":"15196:13:19","nodeType":"VariableDeclaration","scope":8081,"src":"15188:21:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8078,"name":"uint256","nodeType":"ElementaryTypeName","src":"15188:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14976:239:19"},"src":"14949:267:19"}],"scope":8083,"src":"187:15031:19","usedErrors":[7803,7805,7807,7809,7811,7813]}],"src":"35:15184:19"},"id":19},"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo.sol":{"ast":{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo.sol","exportedSymbols":{"ERC20WithTokenInfo":[8094],"IERC20":[145],"TokenInfo":[8116]},"id":8095,"license":"AGPLv3","nodeType":"SourceUnit","nodes":[{"id":8084,"literals":["solidity",">=","0.8",".4"],"nodeType":"PragmaDirective","src":"35:25:20"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","id":8086,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8095,"sourceUnit":146,"src":"62:72:20","symbolAliases":[{"foreign":{"id":8085,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":145,"src":"71:6:20","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.sol","file":"./TokenInfo.sol","id":8088,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8095,"sourceUnit":8117,"src":"135:44:20","symbolAliases":[{"foreign":{"id":8087,"name":"TokenInfo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8116,"src":"144:9:20","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":8090,"name":"IERC20","nameLocations":["530:6:20"],"nodeType":"IdentifierPath","referencedDeclaration":145,"src":"530:6:20"},"id":8091,"nodeType":"InheritanceSpecifier","src":"530:6:20"},{"baseName":{"id":8092,"name":"TokenInfo","nameLocations":["538:9:20"],"nodeType":"IdentifierPath","referencedDeclaration":8116,"src":"538:9:20"},"id":8093,"nodeType":"InheritanceSpecifier","src":"538:9:20"}],"canonicalName":"ERC20WithTokenInfo","contractDependencies":[],"contractKind":"contract","documentation":{"id":8089,"nodeType":"StructuredDocumentation","src":"181:263:20","text":" @title ERC20 token with token info interface\n @author Superfluid\n @dev Using abstract contract instead of interfaces because old solidity\n does not support interface inheriting other interfaces\n solhint-disable-next-line no-empty-blocks"},"fullyImplemented":false,"id":8094,"linearizedBaseContracts":[8094,8116,145],"name":"ERC20WithTokenInfo","nameLocation":"508:18:20","nodeType":"ContractDefinition","nodes":[],"scope":8095,"src":"490:60:20","usedErrors":[]}],"src":"35:516:20"},"id":20},"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.sol":{"ast":{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.sol","exportedSymbols":{"TokenInfo":[8116]},"id":8117,"license":"AGPLv3","nodeType":"SourceUnit","nodes":[{"id":8096,"literals":["solidity",">=","0.8",".4"],"nodeType":"PragmaDirective","src":"35:25:21"},{"abstract":false,"baseContracts":[],"canonicalName":"TokenInfo","contractDependencies":[],"contractKind":"interface","documentation":{"id":8097,"nodeType":"StructuredDocumentation","src":"62:188:21","text":" @title ERC20 token info interface\n @author Superfluid\n @dev ERC20 standard interface does not specify these functions, but\n often the token implementations have them."},"fullyImplemented":false,"id":8116,"linearizedBaseContracts":[8116],"name":"TokenInfo","nameLocation":"261:9:21","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":8098,"nodeType":"StructuredDocumentation","src":"277:54:21","text":" @dev Returns the name of the token."},"functionSelector":"06fdde03","id":8103,"implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"345:4:21","nodeType":"FunctionDefinition","parameters":{"id":8099,"nodeType":"ParameterList","parameters":[],"src":"349:2:21"},"returnParameters":{"id":8102,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8101,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8103,"src":"375:13:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8100,"name":"string","nodeType":"ElementaryTypeName","src":"375:6:21","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"374:15:21"},"scope":8116,"src":"336:54:21","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":8104,"nodeType":"StructuredDocumentation","src":"396:102:21","text":" @dev Returns the symbol of the token, usually a shorter version of the\n name."},"functionSelector":"95d89b41","id":8109,"implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"512:6:21","nodeType":"FunctionDefinition","parameters":{"id":8105,"nodeType":"ParameterList","parameters":[],"src":"518:2:21"},"returnParameters":{"id":8108,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8107,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8109,"src":"544:13:21","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8106,"name":"string","nodeType":"ElementaryTypeName","src":"544:6:21","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"543:15:21"},"scope":8116,"src":"503:56:21","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":8110,"nodeType":"StructuredDocumentation","src":"565:612:21","text":" @dev Returns the number of decimals used to get its user representation.\n For example, if `decimals` equals `2`, a balance of `505` tokens should\n be displayed to a user as `5,05` (`505 / 10 ** 2`).\n Tokens usually opt for a value of 18, imitating the relationship between\n Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is\n called.\n NOTE: This information is only used for _display_ purposes: it in\n no way affects any of the arithmetic of the contract, including\n {IERC20-balanceOf} and {IERC20-transfer}."},"functionSelector":"313ce567","id":8115,"implemented":false,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"1191:8:21","nodeType":"FunctionDefinition","parameters":{"id":8111,"nodeType":"ParameterList","parameters":[],"src":"1199:2:21"},"returnParameters":{"id":8114,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8113,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8115,"src":"1225:5:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":8112,"name":"uint8","nodeType":"ElementaryTypeName","src":"1225:5:21","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"1224:7:21"},"scope":8116,"src":"1182:50:21","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":8117,"src":"251:983:21","usedErrors":[]}],"src":"35:1200:21"},"id":21},"contracts/Diamond.sol":{"ast":{"absolutePath":"contracts/Diamond.sol","exportedSymbols":{"Diamond":[8261],"ICut":[11840],"LibAccessControl":[15479],"LibDiamond":[16228]},"id":8262,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":8118,"literals":["solidity","^","0.8",".9"],"nodeType":"PragmaDirective","src":"32:23:22"},{"absolutePath":"contracts/libraries/utils/LibDiamond.sol","file":"./libraries/utils/LibDiamond.sol","id":8120,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8262,"sourceUnit":16229,"src":"57:60:22","symbolAliases":[{"foreign":{"id":8119,"name":"LibDiamond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16228,"src":"65:10:22","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/libraries/utils/LibAccessControl.sol","file":"./libraries/utils/LibAccessControl.sol","id":8122,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8262,"sourceUnit":15480,"src":"118:72:22","symbolAliases":[{"foreign":{"id":8121,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15479,"src":"126:16:22","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/utils/ICut.sol","file":"./interfaces/utils/ICut.sol","id":8124,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8262,"sourceUnit":11841,"src":"191:49:22","symbolAliases":[{"foreign":{"id":8123,"name":"ICut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11840,"src":"199:4:22","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"Diamond","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":8261,"linearizedBaseContracts":[8261],"name":"Diamond","nameLocation":"251:7:22","nodeType":"ContractDefinition","nodes":[{"body":{"id":8219,"nodeType":"Block","src":"335:975:22","statements":[{"expression":{"arguments":[{"expression":{"id":8134,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15479,"src":"386:16:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$15479_$","typeString":"type(library LibAccessControl)"}},"id":8135,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"403:18:22","memberName":"DEFAULT_ADMIN_ROLE","nodeType":"MemberAccess","referencedDeclaration":15192,"src":"386:35:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8136,"name":"_contractOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8126,"src":"435:14:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":8131,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15479,"src":"345:16:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$15479_$","typeString":"type(library LibAccessControl)"}},"id":8133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"362:10:22","memberName":"_setupRole","nodeType":"MemberAccess","referencedDeclaration":15478,"src":"345:27:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":8137,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"345:114:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8138,"nodeType":"ExpressionStatement","src":"345:114:22"},{"expression":{"arguments":[{"expression":{"id":8142,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15479,"src":"510:16:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$15479_$","typeString":"type(library LibAccessControl)"}},"id":8143,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"527:15:22","memberName":"MAINTAINER_ROLE","nodeType":"MemberAccess","referencedDeclaration":15200,"src":"510:32:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8144,"name":"_contractOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8126,"src":"556:14:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":8139,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15479,"src":"469:16:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$15479_$","typeString":"type(library LibAccessControl)"}},"id":8141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"486:10:22","memberName":"_setupRole","nodeType":"MemberAccess","referencedDeclaration":15478,"src":"469:27:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":8145,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"469:111:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8146,"nodeType":"ExpressionStatement","src":"469:111:22"},{"expression":{"arguments":[{"expression":{"id":8150,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15479,"src":"631:16:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$15479_$","typeString":"type(library LibAccessControl)"}},"id":8151,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"648:14:22","memberName":"TREASURER_ROLE","nodeType":"MemberAccess","referencedDeclaration":15208,"src":"631:31:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8152,"name":"_contractOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8126,"src":"676:14:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":8147,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15479,"src":"590:16:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$15479_$","typeString":"type(library LibAccessControl)"}},"id":8149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"607:10:22","memberName":"_setupRole","nodeType":"MemberAccess","referencedDeclaration":15478,"src":"590:27:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":8153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"590:110:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8154,"nodeType":"ExpressionStatement","src":"590:110:22"},{"expression":{"arguments":[{"expression":{"id":8158,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15479,"src":"751:16:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$15479_$","typeString":"type(library LibAccessControl)"}},"id":8159,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"768:15:22","memberName":"STRATEGIST_ROLE","nodeType":"MemberAccess","referencedDeclaration":15216,"src":"751:32:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":8160,"name":"_contractOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8126,"src":"797:14:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":8155,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15479,"src":"710:16:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$15479_$","typeString":"type(library LibAccessControl)"}},"id":8157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"727:10:22","memberName":"_setupRole","nodeType":"MemberAccess","referencedDeclaration":15478,"src":"710:27:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":8161,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"710:111:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8162,"nodeType":"ExpressionStatement","src":"710:111:22"},{"assignments":[8168],"declarations":[{"constant":false,"id":8168,"mutability":"mutable","name":"cut","nameLocation":"928:3:22","nodeType":"VariableDeclaration","scope":8219,"src":"905:26:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr","typeString":"struct ICut.FacetCut[]"},"typeName":{"baseType":{"id":8166,"nodeType":"UserDefinedTypeName","pathNode":{"id":8165,"name":"ICut.FacetCut","nameLocations":["905:4:22","910:8:22"],"nodeType":"IdentifierPath","referencedDeclaration":11817,"src":"905:13:22"},"referencedDeclaration":11817,"src":"905:13:22","typeDescriptions":{"typeIdentifier":"t_struct$_FacetCut_$11817_storage_ptr","typeString":"struct ICut.FacetCut"}},"id":8167,"nodeType":"ArrayTypeName","src":"905:15:22","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_FacetCut_$11817_storage_$dyn_storage_ptr","typeString":"struct ICut.FacetCut[]"}},"visibility":"internal"}],"id":8175,"initialValue":{"arguments":[{"hexValue":"31","id":8173,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"954:1:22","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":8172,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"934:19:22","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (struct ICut.FacetCut memory[] memory)"},"typeName":{"baseType":{"id":8170,"nodeType":"UserDefinedTypeName","pathNode":{"id":8169,"name":"ICut.FacetCut","nameLocations":["938:4:22","943:8:22"],"nodeType":"IdentifierPath","referencedDeclaration":11817,"src":"938:13:22"},"referencedDeclaration":11817,"src":"938:13:22","typeDescriptions":{"typeIdentifier":"t_struct$_FacetCut_$11817_storage_ptr","typeString":"struct ICut.FacetCut"}},"id":8171,"nodeType":"ArrayTypeName","src":"938:15:22","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_FacetCut_$11817_storage_$dyn_storage_ptr","typeString":"struct ICut.FacetCut[]"}}},"id":8174,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"934:22:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr","typeString":"struct ICut.FacetCut memory[] memory"}},"nodeType":"VariableDeclarationStatement","src":"905:51:22"},{"assignments":[8180],"declarations":[{"constant":false,"id":8180,"mutability":"mutable","name":"functionSelectors","nameLocation":"982:17:22","nodeType":"VariableDeclaration","scope":8219,"src":"966:33:22","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[]"},"typeName":{"baseType":{"id":8178,"name":"bytes4","nodeType":"ElementaryTypeName","src":"966:6:22","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":8179,"nodeType":"ArrayTypeName","src":"966:8:22","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage_ptr","typeString":"bytes4[]"}},"visibility":"internal"}],"id":8186,"initialValue":{"arguments":[{"hexValue":"31","id":8184,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1015:1:22","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":8183,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1002:12:22","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes4_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (bytes4[] memory)"},"typeName":{"baseType":{"id":8181,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1006:6:22","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":8182,"nodeType":"ArrayTypeName","src":"1006:8:22","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage_ptr","typeString":"bytes4[]"}}},"id":8185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1002:15:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}},"nodeType":"VariableDeclarationStatement","src":"966:51:22"},{"expression":{"id":8193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8187,"name":"functionSelectors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8180,"src":"1027:17:22","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}},"id":8189,"indexExpression":{"hexValue":"30","id":8188,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1045:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1027:20:22","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":8190,"name":"ICut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11840,"src":"1050:4:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ICut_$11840_$","typeString":"type(contract ICut)"}},"id":8191,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1055:10:22","memberName":"diamondCut","nodeType":"MemberAccess","referencedDeclaration":11829,"src":"1050:15:22","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_array$_t_struct$_FacetCut_$11817_calldata_ptr_$dyn_calldata_ptr_$_t_address_$_t_bytes_calldata_ptr_$returns$__$","typeString":"function ICut.diamondCut(struct ICut.FacetCut calldata[] calldata,address,bytes calldata)"}},"id":8192,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1066:8:22","memberName":"selector","nodeType":"MemberAccess","src":"1050:24:22","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1027:47:22","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":8194,"nodeType":"ExpressionStatement","src":"1027:47:22"},{"expression":{"id":8206,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8195,"name":"cut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8168,"src":"1084:3:22","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr","typeString":"struct ICut.FacetCut memory[] memory"}},"id":8197,"indexExpression":{"hexValue":"30","id":8196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1088:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1084:6:22","typeDescriptions":{"typeIdentifier":"t_struct$_FacetCut_$11817_memory_ptr","typeString":"struct ICut.FacetCut memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":8200,"name":"_diamondCutFacet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8128,"src":"1135:16:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"expression":{"id":8201,"name":"ICut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11840,"src":"1173:4:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ICut_$11840_$","typeString":"type(contract ICut)"}},"id":8202,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1178:14:22","memberName":"FacetCutAction","nodeType":"MemberAccess","referencedDeclaration":11808,"src":"1173:19:22","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FacetCutAction_$11808_$","typeString":"type(enum ICut.FacetCutAction)"}},"id":8203,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1193:3:22","memberName":"Add","nodeType":"MemberAccess","referencedDeclaration":11805,"src":"1173:23:22","typeDescriptions":{"typeIdentifier":"t_enum$_FacetCutAction_$11808","typeString":"enum ICut.FacetCutAction"}},{"id":8204,"name":"functionSelectors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8180,"src":"1229:17:22","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_enum$_FacetCutAction_$11808","typeString":"enum ICut.FacetCutAction"},{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}],"expression":{"id":8198,"name":"ICut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11840,"src":"1093:4:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ICut_$11840_$","typeString":"type(contract ICut)"}},"id":8199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1098:8:22","memberName":"FacetCut","nodeType":"MemberAccess","referencedDeclaration":11817,"src":"1093:13:22","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_FacetCut_$11817_storage_ptr_$","typeString":"type(struct ICut.FacetCut storage pointer)"}},"id":8205,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["1121:12:22","1165:6:22","1210:17:22"],"names":["facetAddress","action","functionSelectors"],"nodeType":"FunctionCall","src":"1093:164:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_FacetCut_$11817_memory_ptr","typeString":"struct ICut.FacetCut memory"}},"src":"1084:173:22","typeDescriptions":{"typeIdentifier":"t_struct$_FacetCut_$11817_memory_ptr","typeString":"struct ICut.FacetCut memory"}},"id":8207,"nodeType":"ExpressionStatement","src":"1084:173:22"},{"expression":{"arguments":[{"id":8211,"name":"cut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8168,"src":"1283:3:22","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr","typeString":"struct ICut.FacetCut memory[] memory"}},{"arguments":[{"hexValue":"30","id":8214,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1296:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":8213,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1288:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8212,"name":"address","nodeType":"ElementaryTypeName","src":"1288:7:22","typeDescriptions":{}}},"id":8215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1288:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"","id":8216,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1300:2:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr","typeString":"struct ICut.FacetCut memory[] memory"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":8208,"name":"LibDiamond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16228,"src":"1267:10:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibDiamond_$16228_$","typeString":"type(library LibDiamond)"}},"id":8210,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1278:4:22","memberName":"_cut","nodeType":"MemberAccess","referencedDeclaration":15649,"src":"1267:15:22","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (struct ICut.FacetCut memory[] memory,address,bytes memory)"}},"id":8217,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1267:36:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8218,"nodeType":"ExpressionStatement","src":"1267:36:22"}]},"id":8220,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":8129,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8126,"mutability":"mutable","name":"_contractOwner","nameLocation":"285:14:22","nodeType":"VariableDeclaration","scope":8220,"src":"277:22:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8125,"name":"address","nodeType":"ElementaryTypeName","src":"277:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8128,"mutability":"mutable","name":"_diamondCutFacet","nameLocation":"309:16:22","nodeType":"VariableDeclaration","scope":8220,"src":"301:24:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8127,"name":"address","nodeType":"ElementaryTypeName","src":"301:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"276:50:22"},"returnParameters":{"id":8130,"nodeType":"ParameterList","parameters":[],"src":"335:0:22"},"scope":8261,"src":"265:1045:22","stateMutability":"payable","virtual":false,"visibility":"public"},{"body":{"id":8255,"nodeType":"Block","src":"1464:1092:22","statements":[{"assignments":[8227],"declarations":[{"constant":false,"id":8227,"mutability":"mutable","name":"s","nameLocation":"1508:1:22","nodeType":"VariableDeclaration","scope":8255,"src":"1474:35:22","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond"},"typeName":{"id":8226,"nodeType":"UserDefinedTypeName","pathNode":{"id":8225,"name":"LibDiamond.StorageDiamond","nameLocations":["1474:10:22","1485:14:22"],"nodeType":"IdentifierPath","referencedDeclaration":15523,"src":"1474:25:22"},"referencedDeclaration":15523,"src":"1474:25:22","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond"}},"visibility":"internal"}],"id":8228,"nodeType":"VariableDeclarationStatement","src":"1474:35:22"},{"assignments":[8230],"declarations":[{"constant":false,"id":8230,"mutability":"mutable","name":"position","nameLocation":"1527:8:22","nodeType":"VariableDeclaration","scope":8255,"src":"1519:16:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8229,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1519:7:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":8233,"initialValue":{"expression":{"id":8231,"name":"LibDiamond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16228,"src":"1538:10:22","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibDiamond_$16228_$","typeString":"type(library LibDiamond)"}},"id":8232,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1549:24:22","memberName":"STORAGE_POSITION_DIAMOND","nodeType":"MemberAccess","referencedDeclaration":15494,"src":"1538:35:22","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"1519:54:22"},{"AST":{"nodeType":"YulBlock","src":"1623:42:22","statements":[{"nodeType":"YulAssignment","src":"1637:18:22","value":{"name":"position","nodeType":"YulIdentifier","src":"1647:8:22"},"variableNames":[{"name":"s.slot","nodeType":"YulIdentifier","src":"1637:6:22"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":8230,"isOffset":false,"isSlot":false,"src":"1647:8:22","valueSize":1},{"declaration":8227,"isOffset":false,"isSlot":true,"src":"1637:6:22","suffix":"slot","valueSize":1}],"id":8234,"nodeType":"InlineAssembly","src":"1614:51:22"},{"assignments":[8236],"declarations":[{"constant":false,"id":8236,"mutability":"mutable","name":"facet","nameLocation":"1726:5:22","nodeType":"VariableDeclaration","scope":8255,"src":"1718:13:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8235,"name":"address","nodeType":"ElementaryTypeName","src":"1718:7:22","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":8243,"initialValue":{"expression":{"baseExpression":{"expression":{"id":8237,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8227,"src":"1734:1:22","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":8238,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1736:26:22","memberName":"selectorToFacetAndPosition","nodeType":"MemberAccess","referencedDeclaration":15510,"src":"1734:28:22","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_struct$_FacetAddressAndPosition_$15499_storage_$","typeString":"mapping(bytes4 => struct LibDiamond.FacetAddressAndPosition storage ref)"}},"id":8241,"indexExpression":{"expression":{"id":8239,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1763:3:22","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8240,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1767:3:22","memberName":"sig","nodeType":"MemberAccess","src":"1763:7:22","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1734:37:22","typeDescriptions":{"typeIdentifier":"t_struct$_FacetAddressAndPosition_$15499_storage","typeString":"struct LibDiamond.FacetAddressAndPosition storage ref"}},"id":8242,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1772:12:22","memberName":"facetAddress","nodeType":"MemberAccess","referencedDeclaration":15496,"src":"1734:50:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1718:66:22"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8250,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8245,"name":"facet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8236,"src":"1802:5:22","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":8248,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1819:1:22","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":8247,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1811:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8246,"name":"address","nodeType":"ElementaryTypeName","src":"1811:7:22","typeDescriptions":{}}},"id":8249,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1811:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1802:19:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4469616d6f6e643a2046756e6374696f6e20646f6573206e6f74206578697374","id":8251,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1823:34:22","typeDescriptions":{"typeIdentifier":"t_stringliteral_6e6486aeb9db70da259b7171a739046119facaec2d8a6bd46f1145fe8391014a","typeString":"literal_string \"Diamond: Function does not exist\""},"value":"Diamond: Function does not exist"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6e6486aeb9db70da259b7171a739046119facaec2d8a6bd46f1145fe8391014a","typeString":"literal_string \"Diamond: Function does not exist\""}],"id":8244,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1794:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8252,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1794:64:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8253,"nodeType":"ExpressionStatement","src":"1794:64:22"},{"AST":{"nodeType":"YulBlock","src":"1966:584:22","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2049:1:22","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2052:1:22","type":"","value":"0"},{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"2055:12:22"},"nodeType":"YulFunctionCall","src":"2055:14:22"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"2036:12:22"},"nodeType":"YulFunctionCall","src":"2036:34:22"},"nodeType":"YulExpressionStatement","src":"2036:34:22"},{"nodeType":"YulVariableDeclaration","src":"2136:65:22","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nodeType":"YulIdentifier","src":"2163:3:22"},"nodeType":"YulFunctionCall","src":"2163:5:22"},{"name":"facet","nodeType":"YulIdentifier","src":"2170:5:22"},{"kind":"number","nodeType":"YulLiteral","src":"2177:1:22","type":"","value":"0"},{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"2180:12:22"},"nodeType":"YulFunctionCall","src":"2180:14:22"},{"kind":"number","nodeType":"YulLiteral","src":"2196:1:22","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2199:1:22","type":"","value":"0"}],"functionName":{"name":"delegatecall","nodeType":"YulIdentifier","src":"2150:12:22"},"nodeType":"YulFunctionCall","src":"2150:51:22"},"variables":[{"name":"result","nodeType":"YulTypedName","src":"2140:6:22","type":""}]},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2265:1:22","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2268:1:22","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"2271:14:22"},"nodeType":"YulFunctionCall","src":"2271:16:22"}],"functionName":{"name":"returndatacopy","nodeType":"YulIdentifier","src":"2250:14:22"},"nodeType":"YulFunctionCall","src":"2250:38:22"},"nodeType":"YulExpressionStatement","src":"2250:38:22"},{"cases":[{"body":{"nodeType":"YulBlock","src":"2401:59:22","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2426:1:22","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"2429:14:22"},"nodeType":"YulFunctionCall","src":"2429:16:22"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2419:6:22"},"nodeType":"YulFunctionCall","src":"2419:27:22"},"nodeType":"YulExpressionStatement","src":"2419:27:22"}]},"nodeType":"YulCase","src":"2394:66:22","value":{"kind":"number","nodeType":"YulLiteral","src":"2399:1:22","type":"","value":"0"}},{"body":{"nodeType":"YulBlock","src":"2481:59:22","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2506:1:22","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"2509:14:22"},"nodeType":"YulFunctionCall","src":"2509:16:22"}],"functionName":{"name":"return","nodeType":"YulIdentifier","src":"2499:6:22"},"nodeType":"YulFunctionCall","src":"2499:27:22"},"nodeType":"YulExpressionStatement","src":"2499:27:22"}]},"nodeType":"YulCase","src":"2473:67:22","value":"default"}],"expression":{"name":"result","nodeType":"YulIdentifier","src":"2375:6:22"},"nodeType":"YulSwitch","src":"2368:172:22"}]},"evmVersion":"paris","externalReferences":[{"declaration":8236,"isOffset":false,"isSlot":false,"src":"2170:5:22","valueSize":1}],"id":8254,"nodeType":"InlineAssembly","src":"1957:593:22"}]},"id":8256,"implemented":true,"kind":"fallback","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":8221,"nodeType":"ParameterList","parameters":[],"src":"1444:2:22"},"returnParameters":{"id":8222,"nodeType":"ParameterList","parameters":[],"src":"1464:0:22"},"scope":8261,"src":"1436:1120:22","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":8259,"nodeType":"Block","src":"2589:2:22","statements":[]},"id":8260,"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":8257,"nodeType":"ParameterList","parameters":[],"src":"2569:2:22"},"returnParameters":{"id":8258,"nodeType":"ParameterList","parameters":[],"src":"2589:0:22"},"scope":8261,"src":"2562:29:22","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":8262,"src":"242:2351:22","usedErrors":[15489]}],"src":"32:2562:22"},"id":22},"contracts/archives/OldFlow.sol":{"ast":{"absolutePath":"contracts/archives/OldFlow.sol","exportedSymbols":{"ArrayLengthNotMatch":[12325],"IAutomate":[16314],"IOpsProxyFactory":[16352],"ISuperToken":[7015],"ITaskTreasuryUpgradable":[16342],"LibAutomate":[12310],"LibControl":[13307],"LibSession":[14923],"Module":[16268],"ModuleData":[16276],"OldFlow":[8283],"OldLibFlow":[9268],"SessionNotStarted":[14337],"SuperTokenV1Library":[5145],"TooEarly":[8280],"UserFlowNotStopped":[8282]},"id":8284,"license":"BUSL-1.1","nodeType":"SourceUnit","nodes":[{"id":8263,"literals":["solidity","^","0.8",".9"],"nodeType":"PragmaDirective","src":"37:23:23"},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol","file":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol","id":8265,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8284,"sourceUnit":7668,"src":"62:115:23","symbolAliases":[{"foreign":{"id":8264,"name":"ISuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7015,"src":"70:11:23","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol","file":"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol","id":8267,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8284,"sourceUnit":5146,"src":"178:114:23","symbolAliases":[{"foreign":{"id":8266,"name":"SuperTokenV1Library","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5145,"src":"186:19:23","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/libraries/core/LibAutomate.sol","file":"../libraries/core/LibAutomate.sol","id":8269,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8284,"sourceUnit":12311,"src":"294:62:23","symbolAliases":[{"foreign":{"id":8268,"name":"LibAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12310,"src":"302:11:23","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/libraries/core/LibControl.sol","file":"../libraries/core/LibControl.sol","id":8272,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8284,"sourceUnit":13308,"src":"357:81:23","symbolAliases":[{"foreign":{"id":8270,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"365:10:23","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":8271,"name":"ArrayLengthNotMatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12325,"src":"377:19:23","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/libraries/core/LibSession.sol","file":"../libraries/core/LibSession.sol","id":8275,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8284,"sourceUnit":14924,"src":"439:79:23","symbolAliases":[{"foreign":{"id":8273,"name":"LibSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14923,"src":"447:10:23","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":8274,"name":"SessionNotStarted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14337,"src":"459:17:23","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/archives/OldLibFlow.sol","file":"./OldLibFlow.sol","id":8277,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8284,"sourceUnit":9269,"src":"519:44:23","symbolAliases":[{"foreign":{"id":8276,"name":"OldLibFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9268,"src":"527:10:23","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/services/gelato/Types.sol","file":"../services/gelato/Types.sol","id":8278,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":8284,"sourceUnit":16353,"src":"565:38:23","symbolAliases":[],"unitAlias":""},{"errorSelector":"085de625","id":8280,"name":"TooEarly","nameLocation":"611:8:23","nodeType":"ErrorDefinition","parameters":{"id":8279,"nodeType":"ParameterList","parameters":[],"src":"619:2:23"},"src":"605:17:23"},{"errorSelector":"58942936","id":8282,"name":"UserFlowNotStopped","nameLocation":"629:18:23","nodeType":"ErrorDefinition","parameters":{"id":8281,"nodeType":"ParameterList","parameters":[],"src":"647:2:23"},"src":"623:27:23"},{"abstract":false,"baseContracts":[],"canonicalName":"OldFlow","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":8283,"linearizedBaseContracts":[8283],"name":"OldFlow","nameLocation":"661:7:23","nodeType":"ContractDefinition","nodes":[],"scope":8284,"src":"652:12043:23","usedErrors":[]}],"src":"37:13170:23"},"id":23},"contracts/archives/OldLibFlow.sol":{"ast":{"absolutePath":"contracts/archives/OldLibFlow.sol","exportedSymbols":{"ContractError":[12341],"ISuperToken":[7015],"InsufficientFunds":[8296],"InsufficientLifespan1":[8298],"InsufficientLifespan2":[8300],"InsufficientLifespan3":[8302],"InvalidBalance1":[8306],"InvalidBalance2":[8308],"LibControl":[13307],"LibSession":[14923],"OldLibFlow":[9268],"OnlySingleFlowAllowed":[8304],"SuperTokenV1Library":[5145]},"id":9269,"license":"BUSL-1.1","nodeType":"SourceUnit","nodes":[{"id":8285,"literals":["solidity","^","0.8",".9"],"nodeType":"PragmaDirective","src":"36:23:24"},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol","file":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol","id":8287,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9269,"sourceUnit":7668,"src":"61:115:24","symbolAliases":[{"foreign":{"id":8286,"name":"ISuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7015,"src":"69:11:24","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol","file":"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol","id":8289,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9269,"sourceUnit":5146,"src":"177:114:24","symbolAliases":[{"foreign":{"id":8288,"name":"SuperTokenV1Library","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5145,"src":"185:19:24","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/libraries/core/LibControl.sol","file":"../libraries/core/LibControl.sol","id":8292,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9269,"sourceUnit":13308,"src":"293:75:24","symbolAliases":[{"foreign":{"id":8290,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"301:10:24","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":8291,"name":"ContractError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12341,"src":"313:13:24","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/libraries/core/LibSession.sol","file":"../libraries/core/LibSession.sol","id":8294,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9269,"sourceUnit":14924,"src":"369:60:24","symbolAliases":[{"foreign":{"id":8293,"name":"LibSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14923,"src":"377:10:24","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"errorSelector":"356680b7","id":8296,"name":"InsufficientFunds","nameLocation":"437:17:24","nodeType":"ErrorDefinition","parameters":{"id":8295,"nodeType":"ParameterList","parameters":[],"src":"454:2:24"},"src":"431:26:24"},{"errorSelector":"cdd3529e","id":8298,"name":"InsufficientLifespan1","nameLocation":"464:21:24","nodeType":"ErrorDefinition","parameters":{"id":8297,"nodeType":"ParameterList","parameters":[],"src":"485:2:24"},"src":"458:30:24"},{"errorSelector":"6c451f0c","id":8300,"name":"InsufficientLifespan2","nameLocation":"495:21:24","nodeType":"ErrorDefinition","parameters":{"id":8299,"nodeType":"ParameterList","parameters":[],"src":"516:2:24"},"src":"489:30:24"},{"errorSelector":"3661e75b","id":8302,"name":"InsufficientLifespan3","nameLocation":"526:21:24","nodeType":"ErrorDefinition","parameters":{"id":8301,"nodeType":"ParameterList","parameters":[],"src":"547:2:24"},"src":"520:30:24"},{"errorSelector":"01266b00","id":8304,"name":"OnlySingleFlowAllowed","nameLocation":"557:21:24","nodeType":"ErrorDefinition","parameters":{"id":8303,"nodeType":"ParameterList","parameters":[],"src":"578:2:24"},"src":"551:30:24"},{"errorSelector":"0a2005fa","id":8306,"name":"InvalidBalance1","nameLocation":"588:15:24","nodeType":"ErrorDefinition","parameters":{"id":8305,"nodeType":"ParameterList","parameters":[],"src":"603:2:24"},"src":"582:24:24"},{"errorSelector":"2fe0888f","id":8308,"name":"InvalidBalance2","nameLocation":"613:15:24","nodeType":"ErrorDefinition","parameters":{"id":8307,"nodeType":"ParameterList","parameters":[],"src":"628:2:24"},"src":"607:24:24"},{"abstract":false,"baseContracts":[],"canonicalName":"OldLibFlow","contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":9268,"linearizedBaseContracts":[9268],"name":"OldLibFlow","nameLocation":"641:10:24","nodeType":"ContractDefinition","nodes":[{"global":false,"id":8312,"libraryName":{"id":8309,"name":"SuperTokenV1Library","nameLocations":["664:19:24"],"nodeType":"IdentifierPath","referencedDeclaration":5145,"src":"664:19:24"},"nodeType":"UsingForDirective","src":"658:42:24","typeName":{"id":8311,"nodeType":"UserDefinedTypeName","pathNode":{"id":8310,"name":"ISuperToken","nameLocations":["688:11:24"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"688:11:24"},"referencedDeclaration":7015,"src":"688:11:24","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}},{"constant":true,"id":8317,"mutability":"constant","name":"STORAGE_POSITION_FLOW","nameLocation":"723:21:24","nodeType":"VariableDeclaration","scope":9268,"src":"706:61:24","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8313,"name":"bytes32","nodeType":"ElementaryTypeName","src":"706:7:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"64732e666c6f77","id":8315,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"757:9:24","typeDescriptions":{"typeIdentifier":"t_stringliteral_2da2adfb54fd91bfb31e0d805792077ddcd5b0427b14a56397e2f3cc190c8830","typeString":"literal_string \"ds.flow\""},"value":"ds.flow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_2da2adfb54fd91bfb31e0d805792077ddcd5b0427b14a56397e2f3cc190c8830","typeString":"literal_string \"ds.flow\""}],"id":8314,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"747:9:24","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":8316,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"747:20:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"canonicalName":"OldLibFlow.FlowRecord","id":8330,"members":[{"constant":false,"id":8319,"mutability":"mutable","name":"controlNonce","nameLocation":"810:12:24","nodeType":"VariableDeclaration","scope":8330,"src":"802:20:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8318,"name":"uint256","nodeType":"ElementaryTypeName","src":"802:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8321,"mutability":"mutable","name":"receiver","nameLocation":"866:8:24","nodeType":"VariableDeclaration","scope":8330,"src":"858:16:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8320,"name":"address","nodeType":"ElementaryTypeName","src":"858:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8323,"mutability":"mutable","name":"sessionNonce","nameLocation":"892:12:24","nodeType":"VariableDeclaration","scope":8330,"src":"884:20:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8322,"name":"uint256","nodeType":"ElementaryTypeName","src":"884:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8325,"mutability":"mutable","name":"timestampIncrease","nameLocation":"922:17:24","nodeType":"VariableDeclaration","scope":8330,"src":"914:25:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8324,"name":"uint256","nodeType":"ElementaryTypeName","src":"914:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8327,"mutability":"mutable","name":"timestampDecrease","nameLocation":"1008:17:24","nodeType":"VariableDeclaration","scope":8330,"src":"1000:25:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8326,"name":"uint256","nodeType":"ElementaryTypeName","src":"1000:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8329,"mutability":"mutable","name":"taskId","nameLocation":"1106:6:24","nodeType":"VariableDeclaration","scope":8330,"src":"1098:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8328,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1098:7:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"FlowRecord","nameLocation":"781:10:24","nodeType":"StructDefinition","scope":9268,"src":"774:421:24","visibility":"public"},{"canonicalName":"OldLibFlow.StorageFlow","id":8356,"members":[{"constant":false,"id":8336,"mutability":"mutable","name":"flowNonce","nameLocation":"1451:9:24","nodeType":"VariableDeclaration","scope":8356,"src":"1403:57:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":8335,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":8331,"name":"address","nodeType":"ElementaryTypeName","src":"1411:7:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1403:47:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":8334,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":8332,"name":"address","nodeType":"ElementaryTypeName","src":"1430:7:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1422:27:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":8333,"name":"uint256","nodeType":"ElementaryTypeName","src":"1441:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"internal"},{"constant":false,"id":8345,"mutability":"mutable","name":"flowRecord","nameLocation":"1586:10:24","nodeType":"VariableDeclaration","scope":8356,"src":"1515:81:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$8330_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct OldLibFlow.FlowRecord)))"},"typeName":{"id":8344,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":8337,"name":"address","nodeType":"ElementaryTypeName","src":"1523:7:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1515:70:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$8330_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct OldLibFlow.FlowRecord)))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":8343,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":8338,"name":"address","nodeType":"ElementaryTypeName","src":"1542:7:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1534:50:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$8330_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct OldLibFlow.FlowRecord))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":8342,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":8339,"name":"uint256","nodeType":"ElementaryTypeName","src":"1561:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1553:30:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$8330_storage_$","typeString":"mapping(uint256 => struct OldLibFlow.FlowRecord)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":8341,"nodeType":"UserDefinedTypeName","pathNode":{"id":8340,"name":"FlowRecord","nameLocations":["1572:10:24"],"nodeType":"IdentifierPath","referencedDeclaration":8330,"src":"1572:10:24"},"referencedDeclaration":8330,"src":"1572:10:24","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$8330_storage_ptr","typeString":"struct OldLibFlow.FlowRecord"}}}}},"visibility":"internal"},{"constant":false,"id":8351,"mutability":"mutable","name":"deposits","nameLocation":"1716:8:24","nodeType":"VariableDeclaration","scope":8356,"src":"1668:56:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":8350,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":8346,"name":"address","nodeType":"ElementaryTypeName","src":"1676:7:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1668:47:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":8349,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":8347,"name":"address","nodeType":"ElementaryTypeName","src":"1695:7:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1687:27:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":8348,"name":"uint256","nodeType":"ElementaryTypeName","src":"1706:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"internal"},{"constant":false,"id":8355,"mutability":"mutable","name":"totalDeposits","nameLocation":"1806:13:24","nodeType":"VariableDeclaration","scope":8356,"src":"1778:41:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":8354,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":8352,"name":"address","nodeType":"ElementaryTypeName","src":"1786:7:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1778:27:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":8353,"name":"uint256","nodeType":"ElementaryTypeName","src":"1797:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"}],"name":"StorageFlow","nameLocation":"1208:11:24","nodeType":"StructDefinition","scope":9268,"src":"1201:656:24","visibility":"public"},{"body":{"id":8367,"nodeType":"Block","src":"1933:117:24","statements":[{"assignments":[8363],"declarations":[{"constant":false,"id":8363,"mutability":"mutable","name":"position","nameLocation":"1951:8:24","nodeType":"VariableDeclaration","scope":8367,"src":"1943:16:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8362,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1943:7:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":8365,"initialValue":{"id":8364,"name":"STORAGE_POSITION_FLOW","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8317,"src":"1962:21:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"1943:40:24"},{"AST":{"nodeType":"YulBlock","src":"2002:42:24","statements":[{"nodeType":"YulAssignment","src":"2016:18:24","value":{"name":"position","nodeType":"YulIdentifier","src":"2026:8:24"},"variableNames":[{"name":"s.slot","nodeType":"YulIdentifier","src":"2016:6:24"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":8363,"isOffset":false,"isSlot":false,"src":"2026:8:24","valueSize":1},{"declaration":8360,"isOffset":false,"isSlot":true,"src":"2016:6:24","suffix":"slot","valueSize":1}],"id":8366,"nodeType":"InlineAssembly","src":"1993:51:24"}]},"id":8368,"implemented":true,"kind":"function","modifiers":[],"name":"_storageFlow","nameLocation":"1872:12:24","nodeType":"FunctionDefinition","parameters":{"id":8357,"nodeType":"ParameterList","parameters":[],"src":"1884:2:24"},"returnParameters":{"id":8361,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8360,"mutability":"mutable","name":"s","nameLocation":"1930:1:24","nodeType":"VariableDeclaration","scope":8368,"src":"1910:21:24","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$8356_storage_ptr","typeString":"struct OldLibFlow.StorageFlow"},"typeName":{"id":8359,"nodeType":"UserDefinedTypeName","pathNode":{"id":8358,"name":"StorageFlow","nameLocations":["1910:11:24"],"nodeType":"IdentifierPath","referencedDeclaration":8356,"src":"1910:11:24"},"referencedDeclaration":8356,"src":"1910:11:24","typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$8356_storage_ptr","typeString":"struct OldLibFlow.StorageFlow"}},"visibility":"internal"}],"src":"1909:23:24"},"scope":9268,"src":"1863:187:24","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8407,"nodeType":"Block","src":"2215:268:24","statements":[{"expression":{"arguments":[{"expression":{"id":8379,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2276:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8380,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2280:6:24","memberName":"sender","nodeType":"MemberAccess","src":"2276:10:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":8383,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2308:4:24","typeDescriptions":{"typeIdentifier":"t_contract$_OldLibFlow_$9268","typeString":"library OldLibFlow"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_OldLibFlow_$9268","typeString":"library OldLibFlow"}],"id":8382,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2300:7:24","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8381,"name":"address","nodeType":"ElementaryTypeName","src":"2300:7:24","typeDescriptions":{}}},"id":8384,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2300:13:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8385,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8372,"src":"2327:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":8376,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8370,"src":"2237:11:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8375,"name":"ISuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7015,"src":"2225:11:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISuperToken_$7015_$","typeString":"type(contract ISuperToken)"}},"id":8377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2225:24:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"id":8378,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2250:12:24","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":6731,"src":"2225:37:24","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":8386,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2225:119:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8387,"nodeType":"ExpressionStatement","src":"2225:119:24"},{"expression":{"id":8397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8388,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8368,"src":"2355:12:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$8356_storage_ptr_$","typeString":"function () pure returns (struct OldLibFlow.StorageFlow storage pointer)"}},"id":8389,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2355:14:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$8356_storage_ptr","typeString":"struct OldLibFlow.StorageFlow storage pointer"}},"id":8390,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2370:8:24","memberName":"deposits","nodeType":"MemberAccess","referencedDeclaration":8351,"src":"2355:23:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":8393,"indexExpression":{"expression":{"id":8391,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2379:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8392,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2383:6:24","memberName":"sender","nodeType":"MemberAccess","src":"2379:10:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2355:35:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8395,"indexExpression":{"id":8394,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8370,"src":"2391:11:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2355:48:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":8396,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8372,"src":"2407:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2355:59:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8398,"nodeType":"ExpressionStatement","src":"2355:59:24"},{"expression":{"id":8405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8399,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8368,"src":"2424:12:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$8356_storage_ptr_$","typeString":"function () pure returns (struct OldLibFlow.StorageFlow storage pointer)"}},"id":8400,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2424:14:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$8356_storage_ptr","typeString":"struct OldLibFlow.StorageFlow storage pointer"}},"id":8401,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2439:13:24","memberName":"totalDeposits","nodeType":"MemberAccess","referencedDeclaration":8355,"src":"2424:28:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8403,"indexExpression":{"id":8402,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8370,"src":"2453:11:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2424:41:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":8404,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8372,"src":"2469:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2424:52:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8406,"nodeType":"ExpressionStatement","src":"2424:52:24"}]},"id":8408,"implemented":true,"kind":"function","modifiers":[],"name":"_depositSuperToken","nameLocation":"2149:18:24","nodeType":"FunctionDefinition","parameters":{"id":8373,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8370,"mutability":"mutable","name":"_superToken","nameLocation":"2176:11:24","nodeType":"VariableDeclaration","scope":8408,"src":"2168:19:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8369,"name":"address","nodeType":"ElementaryTypeName","src":"2168:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8372,"mutability":"mutable","name":"_amount","nameLocation":"2197:7:24","nodeType":"VariableDeclaration","scope":8408,"src":"2189:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8371,"name":"uint256","nodeType":"ElementaryTypeName","src":"2189:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2167:38:24"},"returnParameters":{"id":8374,"nodeType":"ParameterList","parameters":[],"src":"2215:0:24"},"scope":9268,"src":"2140:343:24","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":8471,"nodeType":"Block","src":"2587:597:24","statements":[{"expression":{"arguments":[{"expression":{"id":8416,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2702:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8417,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2706:6:24","memberName":"sender","nodeType":"MemberAccess","src":"2702:10:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8418,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8410,"src":"2714:11:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":8415,"name":"_setRemainingBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8544,"src":"2681:20:24","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":8419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2681:45:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8420,"nodeType":"ExpressionStatement","src":"2681:45:24"},{"assignments":[8422],"declarations":[{"constant":false,"id":8422,"mutability":"mutable","name":"amountRemaining","nameLocation":"2759:15:24","nodeType":"VariableDeclaration","scope":8471,"src":"2751:23:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8421,"name":"uint256","nodeType":"ElementaryTypeName","src":"2751:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8431,"initialValue":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8423,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8368,"src":"2777:12:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$8356_storage_ptr_$","typeString":"function () pure returns (struct OldLibFlow.StorageFlow storage pointer)"}},"id":8424,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2777:14:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$8356_storage_ptr","typeString":"struct OldLibFlow.StorageFlow storage pointer"}},"id":8425,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2792:8:24","memberName":"deposits","nodeType":"MemberAccess","referencedDeclaration":8351,"src":"2777:23:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":8428,"indexExpression":{"expression":{"id":8426,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2801:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8427,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2805:6:24","memberName":"sender","nodeType":"MemberAccess","src":"2801:10:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2777:35:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8430,"indexExpression":{"id":8429,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8410,"src":"2826:11:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2777:70:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2751:96:24"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8432,"name":"amountRemaining","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8422,"src":"2862:15:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":8433,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8412,"src":"2880:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2862:25:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8438,"nodeType":"IfStatement","src":"2858:57:24","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8435,"name":"InsufficientFunds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8296,"src":"2896:17:24","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":8436,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2896:19:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8437,"nodeType":"RevertStatement","src":"2889:26:24"}},{"expression":{"id":8448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8439,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8368,"src":"2926:12:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$8356_storage_ptr_$","typeString":"function () pure returns (struct OldLibFlow.StorageFlow storage pointer)"}},"id":8440,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2926:14:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$8356_storage_ptr","typeString":"struct OldLibFlow.StorageFlow storage pointer"}},"id":8441,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2941:8:24","memberName":"deposits","nodeType":"MemberAccess","referencedDeclaration":8351,"src":"2926:23:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":8444,"indexExpression":{"expression":{"id":8442,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2950:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2954:6:24","memberName":"sender","nodeType":"MemberAccess","src":"2950:10:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2926:35:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8446,"indexExpression":{"id":8445,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8410,"src":"2962:11:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2926:48:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":8447,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8412,"src":"2978:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2926:59:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8449,"nodeType":"ExpressionStatement","src":"2926:59:24"},{"expression":{"id":8456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8450,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8368,"src":"2995:12:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$8356_storage_ptr_$","typeString":"function () pure returns (struct OldLibFlow.StorageFlow storage pointer)"}},"id":8451,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2995:14:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$8356_storage_ptr","typeString":"struct OldLibFlow.StorageFlow storage pointer"}},"id":8452,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3010:13:24","memberName":"totalDeposits","nodeType":"MemberAccess","referencedDeclaration":8355,"src":"2995:28:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8454,"indexExpression":{"id":8453,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8410,"src":"3024:11:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2995:41:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":8455,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8412,"src":"3040:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2995:52:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8457,"nodeType":"ExpressionStatement","src":"2995:52:24"},{"expression":{"arguments":[{"arguments":[{"id":8464,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3117:4:24","typeDescriptions":{"typeIdentifier":"t_contract$_OldLibFlow_$9268","typeString":"library OldLibFlow"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_OldLibFlow_$9268","typeString":"library OldLibFlow"}],"id":8463,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3109:7:24","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8462,"name":"address","nodeType":"ElementaryTypeName","src":"3109:7:24","typeDescriptions":{}}},"id":8465,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3109:13:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":8466,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3136:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3140:6:24","memberName":"sender","nodeType":"MemberAccess","src":"3136:10:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8468,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8412,"src":"3160:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":8459,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8410,"src":"3070:11:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8458,"name":"ISuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7015,"src":"3058:11:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISuperToken_$7015_$","typeString":"type(contract ISuperToken)"}},"id":8460,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3058:24:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"id":8461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3083:12:24","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":6731,"src":"3058:37:24","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":8469,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3058:119:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8470,"nodeType":"ExpressionStatement","src":"3058:119:24"}]},"id":8472,"implemented":true,"kind":"function","modifiers":[],"name":"_withdrawSuperToken","nameLocation":"2498:19:24","nodeType":"FunctionDefinition","parameters":{"id":8413,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8410,"mutability":"mutable","name":"_superToken","nameLocation":"2535:11:24","nodeType":"VariableDeclaration","scope":8472,"src":"2527:19:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8409,"name":"address","nodeType":"ElementaryTypeName","src":"2527:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8412,"mutability":"mutable","name":"_amount","nameLocation":"2564:7:24","nodeType":"VariableDeclaration","scope":8472,"src":"2556:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8411,"name":"uint256","nodeType":"ElementaryTypeName","src":"2556:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2517:60:24"},"returnParameters":{"id":8414,"nodeType":"ParameterList","parameters":[],"src":"2587:0:24"},"scope":9268,"src":"2489:695:24","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":8486,"nodeType":"Block","src":"3295:104:24","statements":[{"condition":{"arguments":[{"expression":{"id":8478,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3324:3:24","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3328:6:24","memberName":"sender","nodeType":"MemberAccess","src":"3324:10:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8480,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8474,"src":"3336:11:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":8477,"name":"_hasActiveFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8975,"src":"3309:14:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":8481,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3309:39:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8485,"nodeType":"IfStatement","src":"3305:87:24","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8482,"name":"OnlySingleFlowAllowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8304,"src":"3369:21:24","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":8483,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3369:23:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8484,"nodeType":"RevertStatement","src":"3362:30:24"}}]},"id":8487,"implemented":true,"kind":"function","modifiers":[],"name":"_requireSingleFlow","nameLocation":"3241:18:24","nodeType":"FunctionDefinition","parameters":{"id":8475,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8474,"mutability":"mutable","name":"_superToken","nameLocation":"3268:11:24","nodeType":"VariableDeclaration","scope":8487,"src":"3260:19:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8473,"name":"address","nodeType":"ElementaryTypeName","src":"3260:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3259:21:24"},"returnParameters":{"id":8476,"nodeType":"ParameterList","parameters":[],"src":"3295:0:24"},"scope":9268,"src":"3232:167:24","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":8543,"nodeType":"Block","src":"3522:458:24","statements":[{"assignments":[8495],"declarations":[{"constant":false,"id":8495,"mutability":"mutable","name":"amountFlowed","nameLocation":"3540:12:24","nodeType":"VariableDeclaration","scope":8543,"src":"3532:20:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8494,"name":"uint256","nodeType":"ElementaryTypeName","src":"3532:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8500,"initialValue":{"arguments":[{"id":8497,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8489,"src":"3572:5:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8498,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8491,"src":"3579:11:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":8496,"name":"_getAmountFlowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8791,"src":"3555:16:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":8499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3555:36:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3532:59:24"},{"expression":{"id":8509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8501,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8368,"src":"3602:12:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$8356_storage_ptr_$","typeString":"function () pure returns (struct OldLibFlow.StorageFlow storage pointer)"}},"id":8502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3602:14:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$8356_storage_ptr","typeString":"struct OldLibFlow.StorageFlow storage pointer"}},"id":8503,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3617:8:24","memberName":"deposits","nodeType":"MemberAccess","referencedDeclaration":8351,"src":"3602:23:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":8505,"indexExpression":{"id":8504,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8489,"src":"3626:5:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3602:30:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8507,"indexExpression":{"id":8506,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8491,"src":"3633:11:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3602:43:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":8508,"name":"amountFlowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8495,"src":"3649:12:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3602:59:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8510,"nodeType":"ExpressionStatement","src":"3602:59:24"},{"expression":{"id":8517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8511,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8368,"src":"3671:12:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$8356_storage_ptr_$","typeString":"function () pure returns (struct OldLibFlow.StorageFlow storage pointer)"}},"id":8512,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3671:14:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$8356_storage_ptr","typeString":"struct OldLibFlow.StorageFlow storage pointer"}},"id":8513,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3686:13:24","memberName":"totalDeposits","nodeType":"MemberAccess","referencedDeclaration":8355,"src":"3671:28:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8515,"indexExpression":{"id":8514,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8491,"src":"3700:11:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3671:41:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":8516,"name":"amountFlowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8495,"src":"3716:12:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3671:57:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8518,"nodeType":"ExpressionStatement","src":"3671:57:24"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8527,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8519,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8368,"src":"3743:12:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$8356_storage_ptr_$","typeString":"function () pure returns (struct OldLibFlow.StorageFlow storage pointer)"}},"id":8520,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3743:14:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$8356_storage_ptr","typeString":"struct OldLibFlow.StorageFlow storage pointer"}},"id":8521,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3758:8:24","memberName":"deposits","nodeType":"MemberAccess","referencedDeclaration":8351,"src":"3743:23:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":8523,"indexExpression":{"id":8522,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8489,"src":"3767:5:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3743:30:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8525,"indexExpression":{"id":8524,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8491,"src":"3774:11:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3743:43:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":8526,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3789:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3743:47:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8531,"nodeType":"IfStatement","src":"3739:89:24","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8528,"name":"InvalidBalance1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8306,"src":"3811:15:24","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":8529,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3811:17:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8530,"nodeType":"RevertStatement","src":"3804:24:24"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8532,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8368,"src":"3866:12:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$8356_storage_ptr_$","typeString":"function () pure returns (struct OldLibFlow.StorageFlow storage pointer)"}},"id":8533,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3866:14:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$8356_storage_ptr","typeString":"struct OldLibFlow.StorageFlow storage pointer"}},"id":8534,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3881:13:24","memberName":"totalDeposits","nodeType":"MemberAccess","referencedDeclaration":8355,"src":"3866:28:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8536,"indexExpression":{"id":8535,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8491,"src":"3895:11:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3866:41:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":8537,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3910:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3866:45:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8542,"nodeType":"IfStatement","src":"3862:87:24","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8539,"name":"InvalidBalance2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8308,"src":"3932:15:24","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":8540,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3932:17:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8541,"nodeType":"RevertStatement","src":"3925:24:24"}}]},"id":8544,"implemented":true,"kind":"function","modifiers":[],"name":"_setRemainingBalance","nameLocation":"3456:20:24","nodeType":"FunctionDefinition","parameters":{"id":8492,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8489,"mutability":"mutable","name":"_user","nameLocation":"3485:5:24","nodeType":"VariableDeclaration","scope":8544,"src":"3477:13:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8488,"name":"address","nodeType":"ElementaryTypeName","src":"3477:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8491,"mutability":"mutable","name":"_superToken","nameLocation":"3500:11:24","nodeType":"VariableDeclaration","scope":8544,"src":"3492:19:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8490,"name":"address","nodeType":"ElementaryTypeName","src":"3492:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3476:36:24"},"returnParameters":{"id":8493,"nodeType":"ParameterList","parameters":[],"src":"3522:0:24"},"scope":9268,"src":"3447:533:24","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":8561,"nodeType":"Block","src":"4140:68:24","statements":[{"expression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8553,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8368,"src":"4157:12:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$8356_storage_ptr_$","typeString":"function () pure returns (struct OldLibFlow.StorageFlow storage pointer)"}},"id":8554,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4157:14:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$8356_storage_ptr","typeString":"struct OldLibFlow.StorageFlow storage pointer"}},"id":8555,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4172:9:24","memberName":"flowNonce","nodeType":"MemberAccess","referencedDeclaration":8336,"src":"4157:24:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":8557,"indexExpression":{"id":8556,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8546,"src":"4182:5:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4157:31:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8559,"indexExpression":{"id":8558,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8548,"src":"4189:11:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4157:44:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8552,"id":8560,"nodeType":"Return","src":"4150:51:24"}]},"id":8562,"implemented":true,"kind":"function","modifiers":[],"name":"_getNewNonce","nameLocation":"4037:12:24","nodeType":"FunctionDefinition","parameters":{"id":8549,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8546,"mutability":"mutable","name":"_user","nameLocation":"4067:5:24","nodeType":"VariableDeclaration","scope":8562,"src":"4059:13:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8545,"name":"address","nodeType":"ElementaryTypeName","src":"4059:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8548,"mutability":"mutable","name":"_superToken","nameLocation":"4090:11:24","nodeType":"VariableDeclaration","scope":8562,"src":"4082:19:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8547,"name":"address","nodeType":"ElementaryTypeName","src":"4082:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4049:58:24"},"returnParameters":{"id":8552,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8551,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8562,"src":"4131:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8550,"name":"uint256","nodeType":"ElementaryTypeName","src":"4131:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4130:9:24"},"scope":9268,"src":"4028:180:24","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":8590,"nodeType":"Block","src":"4330:120:24","statements":[{"assignments":[8572],"declarations":[{"constant":false,"id":8572,"mutability":"mutable","name":"nonce","nameLocation":"4348:5:24","nodeType":"VariableDeclaration","scope":8590,"src":"4340:13:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8571,"name":"uint256","nodeType":"ElementaryTypeName","src":"4340:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8580,"initialValue":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8573,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8368,"src":"4356:12:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$8356_storage_ptr_$","typeString":"function () pure returns (struct OldLibFlow.StorageFlow storage pointer)"}},"id":8574,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4356:14:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$8356_storage_ptr","typeString":"struct OldLibFlow.StorageFlow storage pointer"}},"id":8575,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4371:9:24","memberName":"flowNonce","nodeType":"MemberAccess","referencedDeclaration":8336,"src":"4356:24:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":8577,"indexExpression":{"id":8576,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8564,"src":"4381:5:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4356:31:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8579,"indexExpression":{"id":8578,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8566,"src":"4388:11:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4356:44:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4340:60:24"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8581,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8572,"src":"4417:5:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8582,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4426:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4417:10:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8585,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8572,"src":"4434:5:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":8586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4442:1:24","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4434:9:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"4417:26:24","trueExpression":{"hexValue":"30","id":8584,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4430:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8570,"id":8589,"nodeType":"Return","src":"4410:33:24"}]},"id":8591,"implemented":true,"kind":"function","modifiers":[],"name":"_getCurrentNonce","nameLocation":"4223:16:24","nodeType":"FunctionDefinition","parameters":{"id":8567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8564,"mutability":"mutable","name":"_user","nameLocation":"4257:5:24","nodeType":"VariableDeclaration","scope":8591,"src":"4249:13:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8563,"name":"address","nodeType":"ElementaryTypeName","src":"4249:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8566,"mutability":"mutable","name":"_superToken","nameLocation":"4280:11:24","nodeType":"VariableDeclaration","scope":8591,"src":"4272:19:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8565,"name":"address","nodeType":"ElementaryTypeName","src":"4272:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4239:58:24"},"returnParameters":{"id":8570,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8569,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8591,"src":"4321:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8568,"name":"uint256","nodeType":"ElementaryTypeName","src":"4321:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4320:9:24"},"scope":9268,"src":"4214:236:24","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":8654,"nodeType":"Block","src":"4602:532:24","statements":[{"assignments":[8603],"declarations":[{"constant":false,"id":8603,"mutability":"mutable","name":"unsafeLifespan","nameLocation":"4620:14:24","nodeType":"VariableDeclaration","scope":8654,"src":"4612:22:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8602,"name":"uint256","nodeType":"ElementaryTypeName","src":"4612:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8619,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8604,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8368,"src":"4637:12:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$8356_storage_ptr_$","typeString":"function () pure returns (struct OldLibFlow.StorageFlow storage pointer)"}},"id":8605,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4637:14:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$8356_storage_ptr","typeString":"struct OldLibFlow.StorageFlow storage pointer"}},"id":8606,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4652:8:24","memberName":"deposits","nodeType":"MemberAccess","referencedDeclaration":8351,"src":"4637:23:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":8608,"indexExpression":{"id":8607,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8593,"src":"4661:5:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4637:30:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8610,"indexExpression":{"id":8609,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8595,"src":"4668:11:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4637:43:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[{"arguments":[{"id":8615,"name":"_flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8597,"src":"4710:9:24","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int96","typeString":"int96"}],"id":8614,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4703:6:24","typeDescriptions":{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"},"typeName":{"id":8613,"name":"uint96","nodeType":"ElementaryTypeName","src":"4703:6:24","typeDescriptions":{}}},"id":8616,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4703:17:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":8612,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4695:7:24","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":8611,"name":"uint256","nodeType":"ElementaryTypeName","src":"4695:7:24","typeDescriptions":{}}},"id":8617,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4695:26:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4637:84:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4612:109:24"},{"assignments":[8624],"declarations":[{"constant":false,"id":8624,"mutability":"mutable","name":"sControl","nameLocation":"4766:8:24","nodeType":"VariableDeclaration","scope":8654,"src":"4732:42:24","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl"},"typeName":{"id":8623,"nodeType":"UserDefinedTypeName","pathNode":{"id":8622,"name":"LibControl.StorageControl","nameLocations":["4732:10:24","4743:14:24"],"nodeType":"IdentifierPath","referencedDeclaration":12418,"src":"4732:25:24"},"referencedDeclaration":12418,"src":"4732:25:24","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl"}},"visibility":"internal"}],"id":8628,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8625,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"4777:10:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$13307_$","typeString":"type(library LibControl)"}},"id":8626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4801:15:24","memberName":"_storageControl","nodeType":"MemberAccess","referencedDeclaration":12430,"src":"4777:39:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$12418_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":8627,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4777:41:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4732:86:24"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8629,"name":"unsafeLifespan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8603,"src":"4833:14:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":8630,"name":"sControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8624,"src":"4850:8:24","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":8631,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4859:18:24","memberName":"minimumEndDuration","nodeType":"MemberAccess","referencedDeclaration":12380,"src":"4850:27:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4833:44:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8636,"nodeType":"IfStatement","src":"4829:92:24","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8633,"name":"InsufficientLifespan1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8298,"src":"4898:21:24","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":8634,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4898:23:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8635,"nodeType":"RevertStatement","src":"4891:30:24"}},{"assignments":[8638],"declarations":[{"constant":false,"id":8638,"mutability":"mutable","name":"safeLifespan","nameLocation":"4940:12:24","nodeType":"VariableDeclaration","scope":8654,"src":"4932:20:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8637,"name":"uint256","nodeType":"ElementaryTypeName","src":"4932:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8643,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8642,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8639,"name":"unsafeLifespan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8603,"src":"4955:14:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":8640,"name":"sControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8624,"src":"4972:8:24","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":8641,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4981:18:24","memberName":"minimumEndDuration","nodeType":"MemberAccess","referencedDeclaration":12380,"src":"4972:27:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4955:44:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4932:67:24"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8644,"name":"safeLifespan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8638,"src":"5014:12:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":8645,"name":"sControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8624,"src":"5029:8:24","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":8646,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5038:15:24","memberName":"minimumLifespan","nodeType":"MemberAccess","referencedDeclaration":12382,"src":"5029:24:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5014:39:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8651,"nodeType":"IfStatement","src":"5010:87:24","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8648,"name":"InsufficientLifespan2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8300,"src":"5074:21:24","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":8649,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5074:23:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8650,"nodeType":"RevertStatement","src":"5067:30:24"}},{"expression":{"id":8652,"name":"safeLifespan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8638,"src":"5115:12:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8601,"id":8653,"nodeType":"Return","src":"5108:19:24"}]},"id":8655,"implemented":true,"kind":"function","modifiers":[],"name":"_getValidSafeLifespan","nameLocation":"4465:21:24","nodeType":"FunctionDefinition","parameters":{"id":8598,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8593,"mutability":"mutable","name":"_user","nameLocation":"4504:5:24","nodeType":"VariableDeclaration","scope":8655,"src":"4496:13:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8592,"name":"address","nodeType":"ElementaryTypeName","src":"4496:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8595,"mutability":"mutable","name":"_superToken","nameLocation":"4527:11:24","nodeType":"VariableDeclaration","scope":8655,"src":"4519:19:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8594,"name":"address","nodeType":"ElementaryTypeName","src":"4519:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8597,"mutability":"mutable","name":"_flowRate","nameLocation":"4554:9:24","nodeType":"VariableDeclaration","scope":8655,"src":"4548:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":8596,"name":"int96","nodeType":"ElementaryTypeName","src":"4548:5:24","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"4486:83:24"},"returnParameters":{"id":8601,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8600,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8655,"src":"4593:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8599,"name":"uint256","nodeType":"ElementaryTypeName","src":"4593:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4592:9:24"},"scope":9268,"src":"4456:678:24","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":8704,"nodeType":"Block","src":"5428:429:24","statements":[{"assignments":[8670],"declarations":[{"constant":false,"id":8670,"mutability":"mutable","name":"safeLifespan","nameLocation":"5446:12:24","nodeType":"VariableDeclaration","scope":8704,"src":"5438:20:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8669,"name":"uint256","nodeType":"ElementaryTypeName","src":"5438:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8676,"initialValue":{"arguments":[{"id":8672,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8658,"src":"5496:5:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8673,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8660,"src":"5515:11:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8674,"name":"_flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8664,"src":"5540:9:24","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_int96","typeString":"int96"}],"id":8671,"name":"_getValidSafeLifespan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8655,"src":"5461:21:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_int96_$returns$_t_uint256_$","typeString":"function (address,address,int96) view returns (uint256)"}},"id":8675,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5461:98:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5438:121:24"},{"assignments":[8681],"declarations":[{"constant":false,"id":8681,"mutability":"mutable","name":"sControl","nameLocation":"5604:8:24","nodeType":"VariableDeclaration","scope":8704,"src":"5570:42:24","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl"},"typeName":{"id":8680,"nodeType":"UserDefinedTypeName","pathNode":{"id":8679,"name":"LibControl.StorageControl","nameLocations":["5570:10:24","5581:14:24"],"nodeType":"IdentifierPath","referencedDeclaration":12418,"src":"5570:25:24"},"referencedDeclaration":12418,"src":"5570:25:24","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl"}},"visibility":"internal"}],"id":8685,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":8682,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"5615:10:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$13307_$","typeString":"type(library LibControl)"}},"id":8683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5639:15:24","memberName":"_storageControl","nodeType":"MemberAccess","referencedDeclaration":12430,"src":"5615:39:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$12418_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":8684,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5615:41:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"5570:86:24"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8686,"name":"_lifespan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8662,"src":"5670:9:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":8687,"name":"sControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8681,"src":"5682:8:24","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":8688,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5691:18:24","memberName":"minimumEndDuration","nodeType":"MemberAccess","referencedDeclaration":12380,"src":"5682:27:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"id":8689,"name":"sControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8681,"src":"5712:8:24","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":8690,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5721:15:24","memberName":"minimumLifespan","nodeType":"MemberAccess","referencedDeclaration":12382,"src":"5712:24:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5682:54:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5670:66:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8696,"nodeType":"IfStatement","src":"5666:114:24","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":8693,"name":"InsufficientLifespan3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8302,"src":"5757:21:24","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":8694,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5757:23:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8695,"nodeType":"RevertStatement","src":"5750:30:24"}},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8697,"name":"_lifespan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8662,"src":"5798:9:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":8698,"name":"safeLifespan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8670,"src":"5811:12:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5798:25:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":8701,"name":"_lifespan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8662,"src":"5841:9:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"5798:52:24","trueExpression":{"id":8700,"name":"safeLifespan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8670,"src":"5826:12:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8668,"id":8703,"nodeType":"Return","src":"5791:59:24"}]},"documentation":{"id":8656,"nodeType":"StructuredDocumentation","src":"5140:110:24","text":" flowRate --> 1 sec\n maximumFlowAmount --> maximumFlowAmount/flowRate [in sec]"},"id":8705,"implemented":true,"kind":"function","modifiers":[],"name":"_getScheduledLifespan","nameLocation":"5264:21:24","nodeType":"FunctionDefinition","parameters":{"id":8665,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8658,"mutability":"mutable","name":"_user","nameLocation":"5303:5:24","nodeType":"VariableDeclaration","scope":8705,"src":"5295:13:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8657,"name":"address","nodeType":"ElementaryTypeName","src":"5295:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8660,"mutability":"mutable","name":"_superToken","nameLocation":"5326:11:24","nodeType":"VariableDeclaration","scope":8705,"src":"5318:19:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8659,"name":"address","nodeType":"ElementaryTypeName","src":"5318:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8662,"mutability":"mutable","name":"_lifespan","nameLocation":"5355:9:24","nodeType":"VariableDeclaration","scope":8705,"src":"5347:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8661,"name":"uint256","nodeType":"ElementaryTypeName","src":"5347:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8664,"mutability":"mutable","name":"_flowRate","nameLocation":"5380:9:24","nodeType":"VariableDeclaration","scope":8705,"src":"5374:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":8663,"name":"int96","nodeType":"ElementaryTypeName","src":"5374:5:24","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"5285:110:24"},"returnParameters":{"id":8668,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8667,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8705,"src":"5419:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8666,"name":"uint256","nodeType":"ElementaryTypeName","src":"5419:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5418:9:24"},"scope":9268,"src":"5255:602:24","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":8790,"nodeType":"Block","src":"5979:855:24","statements":[{"assignments":[8715],"declarations":[{"constant":false,"id":8715,"mutability":"mutable","name":"amountFlowed","nameLocation":"5997:12:24","nodeType":"VariableDeclaration","scope":8790,"src":"5989:20:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8714,"name":"uint256","nodeType":"ElementaryTypeName","src":"5989:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8716,"nodeType":"VariableDeclarationStatement","src":"5989:20:24"},{"assignments":[8718],"declarations":[{"constant":false,"id":8718,"mutability":"mutable","name":"currentNonce","nameLocation":"6027:12:24","nodeType":"VariableDeclaration","scope":8790,"src":"6019:20:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8717,"name":"uint256","nodeType":"ElementaryTypeName","src":"6019:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8723,"initialValue":{"arguments":[{"id":8720,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8707,"src":"6059:5:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8721,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8709,"src":"6066:11:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":8719,"name":"_getCurrentNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8591,"src":"6042:16:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":8722,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6042:36:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6019:59:24"},{"assignments":[8725,8727,8729,8731,null],"declarations":[{"constant":false,"id":8725,"mutability":"mutable","name":"receiver","nameLocation":"6110:8:24","nodeType":"VariableDeclaration","scope":8790,"src":"6102:16:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8724,"name":"address","nodeType":"ElementaryTypeName","src":"6102:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8727,"mutability":"mutable","name":"sessionNonce","nameLocation":"6140:12:24","nodeType":"VariableDeclaration","scope":8790,"src":"6132:20:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8726,"name":"uint256","nodeType":"ElementaryTypeName","src":"6132:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8729,"mutability":"mutable","name":"timestampIncrease","nameLocation":"6174:17:24","nodeType":"VariableDeclaration","scope":8790,"src":"6166:25:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8728,"name":"uint256","nodeType":"ElementaryTypeName","src":"6166:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8731,"mutability":"mutable","name":"timestampDecrease","nameLocation":"6213:17:24","nodeType":"VariableDeclaration","scope":8790,"src":"6205:25:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8730,"name":"uint256","nodeType":"ElementaryTypeName","src":"6205:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},null],"id":8737,"initialValue":{"arguments":[{"id":8733,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8707,"src":"6258:5:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8734,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8709,"src":"6265:11:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8735,"name":"currentNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8718,"src":"6278:12:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8732,"name":"_getFlowData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9067,"src":"6245:12:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes32_$","typeString":"function (address,address,uint256) view returns (address,uint256,uint256,uint256,bytes32)"}},"id":8736,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6245:46:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes32_$","typeString":"tuple(address,uint256,uint256,uint256,bytes32)"}},"nodeType":"VariableDeclarationStatement","src":"6088:203:24"},{"assignments":[null,8739,null,8741],"declarations":[null,{"constant":false,"id":8739,"mutability":"mutable","name":"flowRate","nameLocation":"6311:8:24","nodeType":"VariableDeclaration","scope":8790,"src":"6304:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":8738,"name":"uint96","nodeType":"ElementaryTypeName","src":"6304:6:24","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},null,{"constant":false,"id":8741,"mutability":"mutable","name":"timestampStop","nameLocation":"6331:13:24","nodeType":"VariableDeclaration","scope":8790,"src":"6323:21:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8740,"name":"uint256","nodeType":"ElementaryTypeName","src":"6323:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8748,"initialValue":{"arguments":[{"id":8744,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8725,"src":"6388:8:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8745,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8709,"src":"6398:11:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8746,"name":"sessionNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8727,"src":"6411:12:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8742,"name":"LibSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14923,"src":"6348:10:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibSession_$14923_$","typeString":"type(library LibSession)"}},"id":8743,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6372:15:24","memberName":"_getSessionData","nodeType":"MemberAccess","referencedDeclaration":14814,"src":"6348:39:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_int96_$_t_uint96_$_t_uint256_$_t_uint256_$","typeString":"function (address,address,uint256) view returns (int96,uint96,uint256,uint256)"}},"id":8747,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6348:76:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int96_$_t_uint96_$_t_uint256_$_t_uint256_$","typeString":"tuple(int96,uint96,uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"6301:123:24"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8749,"name":"timestampDecrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8731,"src":"6439:17:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":8750,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6460:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6439:22:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8765,"name":"timestampStop","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8741,"src":"6604:13:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":8766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6621:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6604:18:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":8785,"nodeType":"Block","src":"6757:41:24","statements":[{"expression":{"id":8783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8781,"name":"amountFlowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8715,"src":"6771:12:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":8782,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6786:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6771:16:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8784,"nodeType":"ExpressionStatement","src":"6771:16:24"}]},"id":8786,"nodeType":"IfStatement","src":"6600:198:24","trueBody":{"id":8780,"nodeType":"Block","src":"6624:127:24","statements":[{"expression":{"id":8778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8768,"name":"amountFlowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8715,"src":"6638:12:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":8771,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8739,"src":"6677:8:24","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":8770,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6669:7:24","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":8769,"name":"uint256","nodeType":"ElementaryTypeName","src":"6669:7:24","typeDescriptions":{}}},"id":8772,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6669:17:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8773,"name":"timestampStop","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8741,"src":"6706:13:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":8774,"name":"timestampIncrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8729,"src":"6722:17:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6706:33:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":8776,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6705:35:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6669:71:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6638:102:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8779,"nodeType":"ExpressionStatement","src":"6638:102:24"}]}},"id":8787,"nodeType":"IfStatement","src":"6435:363:24","trueBody":{"id":8764,"nodeType":"Block","src":"6463:131:24","statements":[{"expression":{"id":8762,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8752,"name":"amountFlowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8715,"src":"6477:12:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8761,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":8755,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8739,"src":"6516:8:24","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":8754,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6508:7:24","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":8753,"name":"uint256","nodeType":"ElementaryTypeName","src":"6508:7:24","typeDescriptions":{}}},"id":8756,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6508:17:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8757,"name":"timestampDecrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8731,"src":"6545:17:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":8758,"name":"timestampIncrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8729,"src":"6565:17:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6545:37:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":8760,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6544:39:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6508:75:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6477:106:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8763,"nodeType":"ExpressionStatement","src":"6477:106:24"}]}},{"expression":{"id":8788,"name":"amountFlowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8715,"src":"6815:12:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8713,"id":8789,"nodeType":"Return","src":"6808:19:24"}]},"id":8791,"implemented":true,"kind":"function","modifiers":[],"name":"_getAmountFlowed","nameLocation":"5872:16:24","nodeType":"FunctionDefinition","parameters":{"id":8710,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8707,"mutability":"mutable","name":"_user","nameLocation":"5906:5:24","nodeType":"VariableDeclaration","scope":8791,"src":"5898:13:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8706,"name":"address","nodeType":"ElementaryTypeName","src":"5898:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8709,"mutability":"mutable","name":"_superToken","nameLocation":"5929:11:24","nodeType":"VariableDeclaration","scope":8791,"src":"5921:19:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8708,"name":"address","nodeType":"ElementaryTypeName","src":"5921:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5888:58:24"},"returnParameters":{"id":8713,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8712,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8791,"src":"5970:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8711,"name":"uint256","nodeType":"ElementaryTypeName","src":"5970:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5969:9:24"},"scope":9268,"src":"5863:971:24","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":8920,"nodeType":"Block","src":"11006:1781:24","statements":[{"assignments":[8801,8804],"declarations":[{"constant":false,"id":8801,"mutability":"mutable","name":"currentTimestamp","nameLocation":"11373:16:24","nodeType":"VariableDeclaration","scope":8920,"src":"11365:24:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8800,"name":"uint256","nodeType":"ElementaryTypeName","src":"11365:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8804,"mutability":"mutable","name":"superTokens","nameLocation":"11408:11:24","nodeType":"VariableDeclaration","scope":8920,"src":"11391:28:24","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":8802,"name":"address","nodeType":"ElementaryTypeName","src":"11391:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8803,"nodeType":"ArrayTypeName","src":"11391:9:24","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":8809,"initialValue":{"arguments":[{"id":8807,"name":"_broadcaster","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8795,"src":"11470:12:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":8805,"name":"LibSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14923,"src":"11423:10:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibSession_$14923_$","typeString":"type(library LibSession)"}},"id":8806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11447:22:24","memberName":"_getCurrentSessionData","nodeType":"MemberAccess","referencedDeclaration":14754,"src":"11423:46:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (address) view returns (uint256,address[] memory)"}},"id":8808,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11423:60:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"tuple(uint256,address[] memory)"}},"nodeType":"VariableDeclarationStatement","src":"11364:119:24"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8812,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8810,"name":"currentTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8801,"src":"11498:16:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8811,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11518:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11498:21:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":8813,"name":"superTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8804,"src":"11523:11:24","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":8814,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11535:6:24","memberName":"length","nodeType":"MemberAccess","src":"11523:18:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"30","id":8815,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11545:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11523:23:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11498:48:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8820,"nodeType":"IfStatement","src":"11494:66:24","trueBody":{"expression":{"hexValue":"66616c7365","id":8818,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"11555:5:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":8799,"id":8819,"nodeType":"Return","src":"11548:12:24"}},{"body":{"id":8916,"nodeType":"Block","src":"11620:1139:24","statements":[{"assignments":[8833],"declarations":[{"constant":false,"id":8833,"mutability":"mutable","name":"activeSessionNonce","nameLocation":"11642:18:24","nodeType":"VariableDeclaration","scope":8916,"src":"11634:26:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8832,"name":"uint256","nodeType":"ElementaryTypeName","src":"11634:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8841,"initialValue":{"arguments":[{"id":8836,"name":"_broadcaster","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8795,"src":"11708:12:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":8837,"name":"superTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8804,"src":"11738:11:24","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":8839,"indexExpression":{"id":8838,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8822,"src":"11750:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11738:14:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":8834,"name":"LibSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14923,"src":"11663:10:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibSession_$14923_$","typeString":"type(library LibSession)"}},"id":8835,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11674:16:24","memberName":"_getCurrentNonce","nodeType":"MemberAccess","referencedDeclaration":14729,"src":"11663:27:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":8840,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11663:103:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11634:132:24"},{"assignments":[null,null,8843,8845],"declarations":[null,null,{"constant":false,"id":8843,"mutability":"mutable","name":"timestampStart","nameLocation":"11794:14:24","nodeType":"VariableDeclaration","scope":8916,"src":"11786:22:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8842,"name":"uint256","nodeType":"ElementaryTypeName","src":"11786:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8845,"mutability":"mutable","name":"timestampStop","nameLocation":"11818:13:24","nodeType":"VariableDeclaration","scope":8916,"src":"11810:21:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8844,"name":"uint256","nodeType":"ElementaryTypeName","src":"11810:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8854,"initialValue":{"arguments":[{"id":8848,"name":"_broadcaster","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8795,"src":"11900:12:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":8849,"name":"superTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8804,"src":"11934:11:24","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":8851,"indexExpression":{"id":8850,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8822,"src":"11946:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11934:14:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8852,"name":"activeSessionNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8833,"src":"11970:18:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8846,"name":"LibSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14923,"src":"11835:10:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibSession_$14923_$","typeString":"type(library LibSession)"}},"id":8847,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11863:15:24","memberName":"_getSessionData","nodeType":"MemberAccess","referencedDeclaration":14814,"src":"11835:43:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_int96_$_t_uint96_$_t_uint256_$_t_uint256_$","typeString":"function (address,address,uint256) view returns (int96,uint96,uint256,uint256)"}},"id":8853,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11835:171:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int96_$_t_uint96_$_t_uint256_$_t_uint256_$","typeString":"tuple(int96,uint96,uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"11781:225:24"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8857,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8855,"name":"timestampStart","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8843,"src":"12025:14:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":8856,"name":"currentTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8801,"src":"12043:16:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12025:34:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8860,"nodeType":"IfStatement","src":"12021:52:24","trueBody":{"expression":{"hexValue":"66616c7365","id":8858,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12068:5:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":8799,"id":8859,"nodeType":"Return","src":"12061:12:24"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8861,"name":"timestampStop","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8845,"src":"12092:13:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":8862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12109:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12092:18:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8866,"nodeType":"IfStatement","src":"12088:36:24","trueBody":{"expression":{"hexValue":"66616c7365","id":8864,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12119:5:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":8799,"id":8865,"nodeType":"Return","src":"12112:12:24"}},{"assignments":[8868],"declarations":[{"constant":false,"id":8868,"mutability":"mutable","name":"currentFlowNonce","nameLocation":"12147:16:24","nodeType":"VariableDeclaration","scope":8916,"src":"12139:24:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8867,"name":"uint256","nodeType":"ElementaryTypeName","src":"12139:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8875,"initialValue":{"arguments":[{"id":8870,"name":"_viewer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8793,"src":"12200:7:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":8871,"name":"superTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8804,"src":"12225:11:24","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":8873,"indexExpression":{"id":8872,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8822,"src":"12237:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12225:14:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":8869,"name":"_getCurrentNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8591,"src":"12166:16:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":8874,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12166:87:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12139:114:24"},{"assignments":[8877,8879,8881,8883,null],"declarations":[{"constant":false,"id":8877,"mutability":"mutable","name":"receiver","nameLocation":"12294:8:24","nodeType":"VariableDeclaration","scope":8916,"src":"12286:16:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8876,"name":"address","nodeType":"ElementaryTypeName","src":"12286:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8879,"mutability":"mutable","name":"sessionNonce","nameLocation":"12328:12:24","nodeType":"VariableDeclaration","scope":8916,"src":"12320:20:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8878,"name":"uint256","nodeType":"ElementaryTypeName","src":"12320:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8881,"mutability":"mutable","name":"timestampIncrease","nameLocation":"12366:17:24","nodeType":"VariableDeclaration","scope":8916,"src":"12358:25:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8880,"name":"uint256","nodeType":"ElementaryTypeName","src":"12358:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8883,"mutability":"mutable","name":"timestampDecrease","nameLocation":"12409:17:24","nodeType":"VariableDeclaration","scope":8916,"src":"12401:25:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8882,"name":"uint256","nodeType":"ElementaryTypeName","src":"12401:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},null],"id":8891,"initialValue":{"arguments":[{"id":8885,"name":"_viewer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8793,"src":"12458:7:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":8886,"name":"superTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8804,"src":"12467:11:24","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":8888,"indexExpression":{"id":8887,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8822,"src":"12479:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12467:14:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8889,"name":"currentFlowNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8868,"src":"12483:16:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8884,"name":"_getFlowData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9067,"src":"12445:12:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes32_$","typeString":"function (address,address,uint256) view returns (address,uint256,uint256,uint256,bytes32)"}},"id":8890,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12445:55:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes32_$","typeString":"tuple(address,uint256,uint256,uint256,bytes32)"}},"nodeType":"VariableDeclarationStatement","src":"12268:232:24"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8894,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8892,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8877,"src":"12519:8:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":8893,"name":"_broadcaster","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8795,"src":"12531:12:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12519:24:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8897,"nodeType":"IfStatement","src":"12515:42:24","trueBody":{"expression":{"hexValue":"66616c7365","id":8895,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12552:5:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":8799,"id":8896,"nodeType":"Return","src":"12545:12:24"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8898,"name":"sessionNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8879,"src":"12576:12:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":8899,"name":"activeSessionNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8833,"src":"12592:18:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12576:34:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8903,"nodeType":"IfStatement","src":"12572:52:24","trueBody":{"expression":{"hexValue":"66616c7365","id":8901,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12619:5:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":8799,"id":8902,"nodeType":"Return","src":"12612:12:24"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8904,"name":"timestampIncrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8881,"src":"12643:17:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":8905,"name":"currentTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8801,"src":"12663:16:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12643:36:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8909,"nodeType":"IfStatement","src":"12639:54:24","trueBody":{"expression":{"hexValue":"66616c7365","id":8907,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12688:5:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":8799,"id":8908,"nodeType":"Return","src":"12681:12:24"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8910,"name":"timestampDecrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8883,"src":"12712:17:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":8911,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12733:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12712:22:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8915,"nodeType":"IfStatement","src":"12708:40:24","trueBody":{"expression":{"hexValue":"66616c7365","id":8913,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12743:5:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":8799,"id":8914,"nodeType":"Return","src":"12736:12:24"}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8825,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8822,"src":"11591:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":8826,"name":"superTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8804,"src":"11595:11:24","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":8827,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11607:6:24","memberName":"length","nodeType":"MemberAccess","src":"11595:18:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11591:22:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8917,"initializationExpression":{"assignments":[8822],"declarations":[{"constant":false,"id":8822,"mutability":"mutable","name":"i","nameLocation":"11584:1:24","nodeType":"VariableDeclaration","scope":8917,"src":"11576:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8821,"name":"uint256","nodeType":"ElementaryTypeName","src":"11576:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8824,"initialValue":{"hexValue":"30","id":8823,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11588:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"11576:13:24"},"loopExpression":{"expression":{"id":8830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"11615:3:24","subExpression":{"id":8829,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8822,"src":"11615:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8831,"nodeType":"ExpressionStatement","src":"11615:3:24"},"nodeType":"ForStatement","src":"11571:1188:24"},{"expression":{"hexValue":"74727565","id":8918,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12776:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":8799,"id":8919,"nodeType":"Return","src":"12769:11:24"}]},"id":8921,"implemented":true,"kind":"function","modifiers":[],"name":"_isViewSessionAllowed","nameLocation":"10894:21:24","nodeType":"FunctionDefinition","parameters":{"id":8796,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8793,"mutability":"mutable","name":"_viewer","nameLocation":"10933:7:24","nodeType":"VariableDeclaration","scope":8921,"src":"10925:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8792,"name":"address","nodeType":"ElementaryTypeName","src":"10925:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8795,"mutability":"mutable","name":"_broadcaster","nameLocation":"10958:12:24","nodeType":"VariableDeclaration","scope":8921,"src":"10950:20:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8794,"name":"address","nodeType":"ElementaryTypeName","src":"10950:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10915:61:24"},"returnParameters":{"id":8799,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8798,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8921,"src":"11000:4:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8797,"name":"bool","nodeType":"ElementaryTypeName","src":"11000:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10999:6:24"},"scope":9268,"src":"10885:1902:24","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":8974,"nodeType":"Block","src":"12904:532:24","statements":[{"assignments":[8931],"declarations":[{"constant":false,"id":8931,"mutability":"mutable","name":"newFlowNonce","nameLocation":"12922:12:24","nodeType":"VariableDeclaration","scope":8974,"src":"12914:20:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8930,"name":"uint256","nodeType":"ElementaryTypeName","src":"12914:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8936,"initialValue":{"arguments":[{"id":8933,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8923,"src":"12950:5:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8934,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8925,"src":"12957:11:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":8932,"name":"_getNewNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8562,"src":"12937:12:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":8935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12937:32:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12914:55:24"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8937,"name":"newFlowNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8931,"src":"12983:12:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":8938,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12998:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12983:16:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8971,"nodeType":"IfStatement","src":"12979:429:24","trueBody":{"id":8970,"nodeType":"Block","src":"13001:407:24","statements":[{"assignments":[null,null,null,8941],"declarations":[null,null,null,{"constant":false,"id":8941,"mutability":"mutable","name":"timestampStop","nameLocation":"13030:13:24","nodeType":"VariableDeclaration","scope":8970,"src":"13022:21:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8940,"name":"uint256","nodeType":"ElementaryTypeName","src":"13022:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8950,"initialValue":{"arguments":[{"id":8944,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8923,"src":"13099:5:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8945,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8925,"src":"13122:11:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8948,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8946,"name":"newFlowNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8931,"src":"13151:12:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":8947,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13166:1:24","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13151:16:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8942,"name":"LibSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14923,"src":"13047:10:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibSession_$14923_$","typeString":"type(library LibSession)"}},"id":8943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13058:23:24","memberName":"_getSessionDataFromFlow","nodeType":"MemberAccess","referencedDeclaration":14871,"src":"13047:34:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_int96_$_t_uint96_$_t_uint256_$_t_uint256_$","typeString":"function (address,address,uint256) view returns (int96,uint96,uint256,uint256)"}},"id":8949,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13047:134:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int96_$_t_uint96_$_t_uint256_$_t_uint256_$","typeString":"tuple(int96,uint96,uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"13015:166:24"},{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8968,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8964,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8951,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8368,"src":"13219:12:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$8356_storage_ptr_$","typeString":"function () pure returns (struct OldLibFlow.StorageFlow storage pointer)"}},"id":8952,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13219:14:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$8356_storage_ptr","typeString":"struct OldLibFlow.StorageFlow storage pointer"}},"id":8953,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13251:10:24","memberName":"flowRecord","nodeType":"MemberAccess","referencedDeclaration":8345,"src":"13219:42:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$8330_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct OldLibFlow.FlowRecord storage ref)))"}},"id":8955,"indexExpression":{"id":8954,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8923,"src":"13262:5:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13219:49:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$8330_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct OldLibFlow.FlowRecord storage ref))"}},"id":8957,"indexExpression":{"id":8956,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8925,"src":"13269:11:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13219:62:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$8330_storage_$","typeString":"mapping(uint256 => struct OldLibFlow.FlowRecord storage ref)"}},"id":8961,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8958,"name":"newFlowNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8931,"src":"13282:12:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":8959,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13297:1:24","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13282:16:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13219:80:24","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$8330_storage","typeString":"struct OldLibFlow.FlowRecord storage ref"}},"id":8962,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13321:17:24","memberName":"timestampDecrease","nodeType":"MemberAccess","referencedDeclaration":8327,"src":"13219:119:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8963,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13358:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13219:140:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8965,"name":"timestampStop","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8941,"src":"13379:13:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8966,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13396:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13379:18:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13219:178:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":8929,"id":8969,"nodeType":"Return","src":"13196:201:24"}]}},{"expression":{"hexValue":"66616c7365","id":8972,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"13424:5:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":8929,"id":8973,"nodeType":"Return","src":"13417:12:24"}]},"id":8975,"implemented":true,"kind":"function","modifiers":[],"name":"_hasActiveFlow","nameLocation":"12802:14:24","nodeType":"FunctionDefinition","parameters":{"id":8926,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8923,"mutability":"mutable","name":"_user","nameLocation":"12834:5:24","nodeType":"VariableDeclaration","scope":8975,"src":"12826:13:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8922,"name":"address","nodeType":"ElementaryTypeName","src":"12826:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8925,"mutability":"mutable","name":"_superToken","nameLocation":"12857:11:24","nodeType":"VariableDeclaration","scope":8975,"src":"12849:19:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8924,"name":"address","nodeType":"ElementaryTypeName","src":"12849:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12816:58:24"},"returnParameters":{"id":8929,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8928,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":8975,"src":"12898:4:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8927,"name":"bool","nodeType":"ElementaryTypeName","src":"12898:4:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"12897:6:24"},"scope":9268,"src":"12793:643:24","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":9066,"nodeType":"Block","src":"13614:705:24","statements":[{"assignments":[8995],"declarations":[{"constant":false,"id":8995,"mutability":"mutable","name":"receiver","nameLocation":"13632:8:24","nodeType":"VariableDeclaration","scope":9066,"src":"13624:16:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8994,"name":"address","nodeType":"ElementaryTypeName","src":"13624:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":9006,"initialValue":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8996,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8368,"src":"13643:12:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$8356_storage_ptr_$","typeString":"function () pure returns (struct OldLibFlow.StorageFlow storage pointer)"}},"id":8997,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13643:14:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$8356_storage_ptr","typeString":"struct OldLibFlow.StorageFlow storage pointer"}},"id":8998,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13667:10:24","memberName":"flowRecord","nodeType":"MemberAccess","referencedDeclaration":8345,"src":"13643:34:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$8330_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct OldLibFlow.FlowRecord storage ref)))"}},"id":9000,"indexExpression":{"id":8999,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8977,"src":"13678:5:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13643:41:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$8330_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct OldLibFlow.FlowRecord storage ref))"}},"id":9002,"indexExpression":{"id":9001,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8979,"src":"13685:11:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13643:54:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$8330_storage_$","typeString":"mapping(uint256 => struct OldLibFlow.FlowRecord storage ref)"}},"id":9004,"indexExpression":{"id":9003,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8981,"src":"13698:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13643:62:24","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$8330_storage","typeString":"struct OldLibFlow.FlowRecord storage ref"}},"id":9005,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13706:8:24","memberName":"receiver","nodeType":"MemberAccess","referencedDeclaration":8321,"src":"13643:71:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"13624:90:24"},{"assignments":[9008],"declarations":[{"constant":false,"id":9008,"mutability":"mutable","name":"sessionNonce","nameLocation":"13732:12:24","nodeType":"VariableDeclaration","scope":9066,"src":"13724:20:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9007,"name":"uint256","nodeType":"ElementaryTypeName","src":"13724:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9019,"initialValue":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":9009,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8368,"src":"13747:12:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$8356_storage_ptr_$","typeString":"function () pure returns (struct OldLibFlow.StorageFlow storage pointer)"}},"id":9010,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13747:14:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$8356_storage_ptr","typeString":"struct OldLibFlow.StorageFlow storage pointer"}},"id":9011,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13771:10:24","memberName":"flowRecord","nodeType":"MemberAccess","referencedDeclaration":8345,"src":"13747:34:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$8330_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct OldLibFlow.FlowRecord storage ref)))"}},"id":9013,"indexExpression":{"id":9012,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8977,"src":"13782:5:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13747:41:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$8330_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct OldLibFlow.FlowRecord storage ref))"}},"id":9015,"indexExpression":{"id":9014,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8979,"src":"13789:11:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13747:54:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$8330_storage_$","typeString":"mapping(uint256 => struct OldLibFlow.FlowRecord storage ref)"}},"id":9017,"indexExpression":{"id":9016,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8981,"src":"13802:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13747:62:24","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$8330_storage","typeString":"struct OldLibFlow.FlowRecord storage ref"}},"id":9018,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13810:12:24","memberName":"sessionNonce","nodeType":"MemberAccess","referencedDeclaration":8323,"src":"13747:75:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13724:98:24"},{"assignments":[9021],"declarations":[{"constant":false,"id":9021,"mutability":"mutable","name":"timestampIncrease","nameLocation":"13840:17:24","nodeType":"VariableDeclaration","scope":9066,"src":"13832:25:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9020,"name":"uint256","nodeType":"ElementaryTypeName","src":"13832:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9032,"initialValue":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":9022,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8368,"src":"13860:12:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$8356_storage_ptr_$","typeString":"function () pure returns (struct OldLibFlow.StorageFlow storage pointer)"}},"id":9023,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13860:14:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$8356_storage_ptr","typeString":"struct OldLibFlow.StorageFlow storage pointer"}},"id":9024,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13884:10:24","memberName":"flowRecord","nodeType":"MemberAccess","referencedDeclaration":8345,"src":"13860:34:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$8330_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct OldLibFlow.FlowRecord storage ref)))"}},"id":9026,"indexExpression":{"id":9025,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8977,"src":"13895:5:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13860:41:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$8330_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct OldLibFlow.FlowRecord storage ref))"}},"id":9028,"indexExpression":{"id":9027,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8979,"src":"13902:11:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13860:54:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$8330_storage_$","typeString":"mapping(uint256 => struct OldLibFlow.FlowRecord storage ref)"}},"id":9030,"indexExpression":{"id":9029,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8981,"src":"13915:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13860:62:24","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$8330_storage","typeString":"struct OldLibFlow.FlowRecord storage ref"}},"id":9031,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13923:17:24","memberName":"timestampIncrease","nodeType":"MemberAccess","referencedDeclaration":8325,"src":"13860:80:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13832:108:24"},{"assignments":[9034],"declarations":[{"constant":false,"id":9034,"mutability":"mutable","name":"timestampDecrease","nameLocation":"13958:17:24","nodeType":"VariableDeclaration","scope":9066,"src":"13950:25:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9033,"name":"uint256","nodeType":"ElementaryTypeName","src":"13950:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9045,"initialValue":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":9035,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8368,"src":"13978:12:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$8356_storage_ptr_$","typeString":"function () pure returns (struct OldLibFlow.StorageFlow storage pointer)"}},"id":9036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13978:14:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$8356_storage_ptr","typeString":"struct OldLibFlow.StorageFlow storage pointer"}},"id":9037,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14002:10:24","memberName":"flowRecord","nodeType":"MemberAccess","referencedDeclaration":8345,"src":"13978:34:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$8330_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct OldLibFlow.FlowRecord storage ref)))"}},"id":9039,"indexExpression":{"id":9038,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8977,"src":"14013:5:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13978:41:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$8330_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct OldLibFlow.FlowRecord storage ref))"}},"id":9041,"indexExpression":{"id":9040,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8979,"src":"14020:11:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13978:54:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$8330_storage_$","typeString":"mapping(uint256 => struct OldLibFlow.FlowRecord storage ref)"}},"id":9043,"indexExpression":{"id":9042,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8981,"src":"14033:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13978:62:24","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$8330_storage","typeString":"struct OldLibFlow.FlowRecord storage ref"}},"id":9044,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14041:17:24","memberName":"timestampDecrease","nodeType":"MemberAccess","referencedDeclaration":8327,"src":"13978:80:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13950:108:24"},{"assignments":[9047],"declarations":[{"constant":false,"id":9047,"mutability":"mutable","name":"taskId","nameLocation":"14076:6:24","nodeType":"VariableDeclaration","scope":9066,"src":"14068:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9046,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14068:7:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":9058,"initialValue":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":9048,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8368,"src":"14085:12:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$8356_storage_ptr_$","typeString":"function () pure returns (struct OldLibFlow.StorageFlow storage pointer)"}},"id":9049,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14085:14:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$8356_storage_ptr","typeString":"struct OldLibFlow.StorageFlow storage pointer"}},"id":9050,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14109:10:24","memberName":"flowRecord","nodeType":"MemberAccess","referencedDeclaration":8345,"src":"14085:34:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$8330_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct OldLibFlow.FlowRecord storage ref)))"}},"id":9052,"indexExpression":{"id":9051,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8977,"src":"14120:5:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14085:41:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$8330_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct OldLibFlow.FlowRecord storage ref))"}},"id":9054,"indexExpression":{"id":9053,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8979,"src":"14127:11:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14085:54:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$8330_storage_$","typeString":"mapping(uint256 => struct OldLibFlow.FlowRecord storage ref)"}},"id":9056,"indexExpression":{"id":9055,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8981,"src":"14140:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14085:62:24","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$8330_storage","typeString":"struct OldLibFlow.FlowRecord storage ref"}},"id":9057,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14148:6:24","memberName":"taskId","nodeType":"MemberAccess","referencedDeclaration":8329,"src":"14085:69:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"14068:86:24"},{"expression":{"components":[{"id":9059,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8995,"src":"14186:8:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9060,"name":"sessionNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9008,"src":"14208:12:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9061,"name":"timestampIncrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9021,"src":"14234:17:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9062,"name":"timestampDecrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9034,"src":"14265:17:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9063,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9047,"src":"14296:6:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":9064,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14172:140:24","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes32_$","typeString":"tuple(address,uint256,uint256,uint256,bytes32)"}},"functionReturnParameters":8993,"id":9065,"nodeType":"Return","src":"14165:147:24"}]},"id":9067,"implemented":true,"kind":"function","modifiers":[],"name":"_getFlowData","nameLocation":"13451:12:24","nodeType":"FunctionDefinition","parameters":{"id":8982,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8977,"mutability":"mutable","name":"_user","nameLocation":"13481:5:24","nodeType":"VariableDeclaration","scope":9067,"src":"13473:13:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8976,"name":"address","nodeType":"ElementaryTypeName","src":"13473:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8979,"mutability":"mutable","name":"_superToken","nameLocation":"13504:11:24","nodeType":"VariableDeclaration","scope":9067,"src":"13496:19:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8978,"name":"address","nodeType":"ElementaryTypeName","src":"13496:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8981,"mutability":"mutable","name":"_nonce","nameLocation":"13533:6:24","nodeType":"VariableDeclaration","scope":9067,"src":"13525:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8980,"name":"uint256","nodeType":"ElementaryTypeName","src":"13525:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13463:82:24"},"returnParameters":{"id":8993,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8984,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9067,"src":"13569:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8983,"name":"address","nodeType":"ElementaryTypeName","src":"13569:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8986,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9067,"src":"13578:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8985,"name":"uint256","nodeType":"ElementaryTypeName","src":"13578:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8988,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9067,"src":"13587:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8987,"name":"uint256","nodeType":"ElementaryTypeName","src":"13587:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8990,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9067,"src":"13596:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8989,"name":"uint256","nodeType":"ElementaryTypeName","src":"13596:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8992,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9067,"src":"13605:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8991,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13605:7:24","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"13568:45:24"},"scope":9268,"src":"13442:877:24","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":9084,"nodeType":"Block","src":"14440:67:24","statements":[{"expression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":9076,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8368,"src":"14457:12:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$8356_storage_ptr_$","typeString":"function () pure returns (struct OldLibFlow.StorageFlow storage pointer)"}},"id":9077,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14457:14:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$8356_storage_ptr","typeString":"struct OldLibFlow.StorageFlow storage pointer"}},"id":9078,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14472:8:24","memberName":"deposits","nodeType":"MemberAccess","referencedDeclaration":8351,"src":"14457:23:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":9080,"indexExpression":{"id":9079,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9069,"src":"14481:5:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14457:30:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":9082,"indexExpression":{"id":9081,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9071,"src":"14488:11:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14457:43:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9075,"id":9083,"nodeType":"Return","src":"14450:50:24"}]},"id":9085,"implemented":true,"kind":"function","modifiers":[],"name":"_getDepositUser","nameLocation":"14334:15:24","nodeType":"FunctionDefinition","parameters":{"id":9072,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9069,"mutability":"mutable","name":"_user","nameLocation":"14367:5:24","nodeType":"VariableDeclaration","scope":9085,"src":"14359:13:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9068,"name":"address","nodeType":"ElementaryTypeName","src":"14359:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9071,"mutability":"mutable","name":"_superToken","nameLocation":"14390:11:24","nodeType":"VariableDeclaration","scope":9085,"src":"14382:19:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9070,"name":"address","nodeType":"ElementaryTypeName","src":"14382:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"14349:58:24"},"returnParameters":{"id":9075,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9074,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9085,"src":"14431:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9073,"name":"uint256","nodeType":"ElementaryTypeName","src":"14431:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14430:9:24"},"scope":9268,"src":"14325:182:24","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":9098,"nodeType":"Block","src":"14606:65:24","statements":[{"expression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":9092,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8368,"src":"14623:12:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$8356_storage_ptr_$","typeString":"function () pure returns (struct OldLibFlow.StorageFlow storage pointer)"}},"id":9093,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14623:14:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$8356_storage_ptr","typeString":"struct OldLibFlow.StorageFlow storage pointer"}},"id":9094,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14638:13:24","memberName":"totalDeposits","nodeType":"MemberAccess","referencedDeclaration":8355,"src":"14623:28:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":9096,"indexExpression":{"id":9095,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9087,"src":"14652:11:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14623:41:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9091,"id":9097,"nodeType":"Return","src":"14616:48:24"}]},"id":9099,"implemented":true,"kind":"function","modifiers":[],"name":"_getDepositTotal","nameLocation":"14522:16:24","nodeType":"FunctionDefinition","parameters":{"id":9088,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9087,"mutability":"mutable","name":"_superToken","nameLocation":"14556:11:24","nodeType":"VariableDeclaration","scope":9099,"src":"14548:19:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9086,"name":"address","nodeType":"ElementaryTypeName","src":"14548:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"14538:35:24"},"returnParameters":{"id":9091,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9090,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9099,"src":"14597:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9089,"name":"uint256","nodeType":"ElementaryTypeName","src":"14597:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14596:9:24"},"scope":9268,"src":"14513:158:24","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":9166,"nodeType":"Block","src":"14887:451:24","statements":[{"assignments":[9114],"declarations":[{"constant":false,"id":9114,"mutability":"mutable","name":"iSuperToken","nameLocation":"14909:11:24","nodeType":"VariableDeclaration","scope":9166,"src":"14897:23:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":9113,"nodeType":"UserDefinedTypeName","pathNode":{"id":9112,"name":"ISuperToken","nameLocations":["14897:11:24"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"14897:11:24"},"referencedDeclaration":7015,"src":"14897:11:24","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"}],"id":9118,"initialValue":{"arguments":[{"id":9116,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9101,"src":"14935:11:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9115,"name":"ISuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7015,"src":"14923:11:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISuperToken_$7015_$","typeString":"type(contract ISuperToken)"}},"id":9117,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14923:24:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"nodeType":"VariableDeclarationStatement","src":"14897:50:24"},{"assignments":[9120],"declarations":[{"constant":false,"id":9120,"mutability":"mutable","name":"flowRate","nameLocation":"14963:8:24","nodeType":"VariableDeclaration","scope":9166,"src":"14957:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":9119,"name":"int96","nodeType":"ElementaryTypeName","src":"14957:5:24","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"id":9129,"initialValue":{"arguments":[{"arguments":[{"id":9125,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"15006:4:24","typeDescriptions":{"typeIdentifier":"t_contract$_OldLibFlow_$9268","typeString":"library OldLibFlow"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_OldLibFlow_$9268","typeString":"library OldLibFlow"}],"id":9124,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14998:7:24","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9123,"name":"address","nodeType":"ElementaryTypeName","src":"14998:7:24","typeDescriptions":{}}},"id":9126,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14998:13:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9127,"name":"_receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9105,"src":"15013:9:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9121,"name":"iSuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9114,"src":"14974:11:24","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"id":9122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14986:11:24","memberName":"getFlowRate","nodeType":"MemberAccess","referencedDeclaration":3274,"src":"14974:23:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_ISuperToken_$7015_$_t_address_$_t_address_$returns$_t_int96_$attached_to$_t_contract$_ISuperToken_$7015_$","typeString":"function (contract ISuperToken,address,address) view returns (int96)"}},"id":9128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14974:49:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"VariableDeclarationStatement","src":"14957:66:24"},{"condition":{"commonType":{"typeIdentifier":"t_int96","typeString":"int96"},"id":9132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9130,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9120,"src":"15038:8:24","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"30","id":9131,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15050:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"15038:13:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":9150,"nodeType":"Block","src":"15128:80:24","statements":[{"expression":{"arguments":[{"id":9144,"name":"_receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9105,"src":"15165:9:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_int96","typeString":"int96"},"id":9147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9145,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9120,"src":"15176:8:24","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":9146,"name":"_flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9109,"src":"15187:9:24","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"src":"15176:20:24","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_int96","typeString":"int96"}],"expression":{"id":9141,"name":"iSuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9114,"src":"15142:11:24","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"id":9143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15154:10:24","memberName":"updateFlow","nodeType":"MemberAccess","referencedDeclaration":2151,"src":"15142:22:24","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$7015_$_t_address_$_t_int96_$returns$_t_bool_$attached_to$_t_contract$_ISuperToken_$7015_$","typeString":"function (contract ISuperToken,address,int96) returns (bool)"}},"id":9148,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15142:55:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9149,"nodeType":"ExpressionStatement","src":"15142:55:24"}]},"id":9151,"nodeType":"IfStatement","src":"15034:174:24","trueBody":{"id":9140,"nodeType":"Block","src":"15053:69:24","statements":[{"expression":{"arguments":[{"id":9136,"name":"_receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9105,"src":"15090:9:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9137,"name":"_flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9109,"src":"15101:9:24","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_int96","typeString":"int96"}],"expression":{"id":9133,"name":"iSuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9114,"src":"15067:11:24","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"id":9135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15079:10:24","memberName":"createFlow","nodeType":"MemberAccess","referencedDeclaration":2054,"src":"15067:22:24","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$7015_$_t_address_$_t_int96_$returns$_t_bool_$attached_to$_t_contract$_ISuperToken_$7015_$","typeString":"function (contract ISuperToken,address,int96) returns (bool)"}},"id":9138,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15067:44:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9139,"nodeType":"ExpressionStatement","src":"15067:44:24"}]}},{"expression":{"id":9164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":9152,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8368,"src":"15218:12:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$8356_storage_ptr_$","typeString":"function () pure returns (struct OldLibFlow.StorageFlow storage pointer)"}},"id":9153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15218:14:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$8356_storage_ptr","typeString":"struct OldLibFlow.StorageFlow storage pointer"}},"id":9154,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15242:10:24","memberName":"flowRecord","nodeType":"MemberAccess","referencedDeclaration":8345,"src":"15218:34:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$8330_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct OldLibFlow.FlowRecord storage ref)))"}},"id":9156,"indexExpression":{"id":9155,"name":"_sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9103,"src":"15253:7:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15218:43:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$8330_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct OldLibFlow.FlowRecord storage ref))"}},"id":9158,"indexExpression":{"id":9157,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9101,"src":"15262:11:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15218:56:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$8330_storage_$","typeString":"mapping(uint256 => struct OldLibFlow.FlowRecord storage ref)"}},"id":9160,"indexExpression":{"id":9159,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9107,"src":"15275:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15218:64:24","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$8330_storage","typeString":"struct OldLibFlow.FlowRecord storage ref"}},"id":9161,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"15283:17:24","memberName":"timestampIncrease","nodeType":"MemberAccess","referencedDeclaration":8325,"src":"15218:82:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":9162,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"15303:5:24","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":9163,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15322:9:24","memberName":"timestamp","nodeType":"MemberAccess","src":"15303:28:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15218:113:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9165,"nodeType":"ExpressionStatement","src":"15218:113:24"}]},"id":9167,"implemented":true,"kind":"function","modifiers":[],"name":"_increaseFlow","nameLocation":"14728:13:24","nodeType":"FunctionDefinition","parameters":{"id":9110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9101,"mutability":"mutable","name":"_superToken","nameLocation":"14759:11:24","nodeType":"VariableDeclaration","scope":9167,"src":"14751:19:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9100,"name":"address","nodeType":"ElementaryTypeName","src":"14751:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9103,"mutability":"mutable","name":"_sender","nameLocation":"14788:7:24","nodeType":"VariableDeclaration","scope":9167,"src":"14780:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9102,"name":"address","nodeType":"ElementaryTypeName","src":"14780:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9105,"mutability":"mutable","name":"_receiver","nameLocation":"14813:9:24","nodeType":"VariableDeclaration","scope":9167,"src":"14805:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9104,"name":"address","nodeType":"ElementaryTypeName","src":"14805:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9107,"mutability":"mutable","name":"_nonce","nameLocation":"14840:6:24","nodeType":"VariableDeclaration","scope":9167,"src":"14832:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9106,"name":"uint256","nodeType":"ElementaryTypeName","src":"14832:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9109,"mutability":"mutable","name":"_flowRate","nameLocation":"14862:9:24","nodeType":"VariableDeclaration","scope":9167,"src":"14856:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":9108,"name":"int96","nodeType":"ElementaryTypeName","src":"14856:5:24","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"14741:136:24"},"returnParameters":{"id":9111,"nodeType":"ParameterList","parameters":[],"src":"14887:0:24"},"scope":9268,"src":"14719:619:24","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9266,"nodeType":"Block","src":"15512:724:24","statements":[{"assignments":[9182],"declarations":[{"constant":false,"id":9182,"mutability":"mutable","name":"iSuperToken","nameLocation":"15534:11:24","nodeType":"VariableDeclaration","scope":9266,"src":"15522:23:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":9181,"nodeType":"UserDefinedTypeName","pathNode":{"id":9180,"name":"ISuperToken","nameLocations":["15522:11:24"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"15522:11:24"},"referencedDeclaration":7015,"src":"15522:11:24","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"}],"id":9186,"initialValue":{"arguments":[{"id":9184,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9169,"src":"15560:11:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9183,"name":"ISuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7015,"src":"15548:11:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISuperToken_$7015_$","typeString":"type(contract ISuperToken)"}},"id":9185,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15548:24:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"nodeType":"VariableDeclarationStatement","src":"15522:50:24"},{"assignments":[9188],"declarations":[{"constant":false,"id":9188,"mutability":"mutable","name":"flowRate","nameLocation":"15588:8:24","nodeType":"VariableDeclaration","scope":9266,"src":"15582:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":9187,"name":"int96","nodeType":"ElementaryTypeName","src":"15582:5:24","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"id":9197,"initialValue":{"arguments":[{"arguments":[{"id":9193,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"15631:4:24","typeDescriptions":{"typeIdentifier":"t_contract$_OldLibFlow_$9268","typeString":"library OldLibFlow"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_OldLibFlow_$9268","typeString":"library OldLibFlow"}],"id":9192,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15623:7:24","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9191,"name":"address","nodeType":"ElementaryTypeName","src":"15623:7:24","typeDescriptions":{}}},"id":9194,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15623:13:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9195,"name":"_receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9173,"src":"15638:9:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9189,"name":"iSuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9182,"src":"15599:11:24","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"id":9190,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15611:11:24","memberName":"getFlowRate","nodeType":"MemberAccess","referencedDeclaration":3274,"src":"15599:23:24","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_ISuperToken_$7015_$_t_address_$_t_address_$returns$_t_int96_$attached_to$_t_contract$_ISuperToken_$7015_$","typeString":"function (contract ISuperToken,address,address) view returns (int96)"}},"id":9196,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15599:49:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"VariableDeclarationStatement","src":"15582:66:24"},{"condition":{"commonType":{"typeIdentifier":"t_int96","typeString":"int96"},"id":9202,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int96","typeString":"int96"},"id":9200,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9198,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9188,"src":"15663:8:24","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":9199,"name":"_flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9177,"src":"15674:9:24","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"src":"15663:20:24","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"30","id":9201,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15687:1:24","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"15663:25:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":9223,"nodeType":"Block","src":"15769:80:24","statements":[{"expression":{"arguments":[{"id":9217,"name":"_receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9173,"src":"15806:9:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_int96","typeString":"int96"},"id":9220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9218,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9188,"src":"15817:8:24","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":9219,"name":"_flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9177,"src":"15828:9:24","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"src":"15817:20:24","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_int96","typeString":"int96"}],"expression":{"id":9214,"name":"iSuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9182,"src":"15783:11:24","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"id":9216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15795:10:24","memberName":"updateFlow","nodeType":"MemberAccess","referencedDeclaration":2151,"src":"15783:22:24","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$7015_$_t_address_$_t_int96_$returns$_t_bool_$attached_to$_t_contract$_ISuperToken_$7015_$","typeString":"function (contract ISuperToken,address,int96) returns (bool)"}},"id":9221,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15783:55:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9222,"nodeType":"ExpressionStatement","src":"15783:55:24"}]},"id":9224,"nodeType":"IfStatement","src":"15659:190:24","trueBody":{"id":9213,"nodeType":"Block","src":"15690:73:24","statements":[{"expression":{"arguments":[{"arguments":[{"id":9208,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"15735:4:24","typeDescriptions":{"typeIdentifier":"t_contract$_OldLibFlow_$9268","typeString":"library OldLibFlow"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_OldLibFlow_$9268","typeString":"library OldLibFlow"}],"id":9207,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15727:7:24","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9206,"name":"address","nodeType":"ElementaryTypeName","src":"15727:7:24","typeDescriptions":{}}},"id":9209,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15727:13:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9210,"name":"_receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9173,"src":"15742:9:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9203,"name":"iSuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9182,"src":"15704:11:24","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"id":9205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15716:10:24","memberName":"deleteFlow","nodeType":"MemberAccess","referencedDeclaration":2248,"src":"15704:22:24","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$7015_$_t_address_$_t_address_$returns$_t_bool_$attached_to$_t_contract$_ISuperToken_$7015_$","typeString":"function (contract ISuperToken,address,address) returns (bool)"}},"id":9211,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15704:48:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9212,"nodeType":"ExpressionStatement","src":"15704:48:24"}]}},{"expression":{"id":9237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":9225,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8368,"src":"15859:12:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$8356_storage_ptr_$","typeString":"function () pure returns (struct OldLibFlow.StorageFlow storage pointer)"}},"id":9226,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15859:14:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$8356_storage_ptr","typeString":"struct OldLibFlow.StorageFlow storage pointer"}},"id":9227,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15883:10:24","memberName":"flowRecord","nodeType":"MemberAccess","referencedDeclaration":8345,"src":"15859:34:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$8330_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct OldLibFlow.FlowRecord storage ref)))"}},"id":9229,"indexExpression":{"id":9228,"name":"_sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9171,"src":"15894:7:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15859:43:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$8330_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct OldLibFlow.FlowRecord storage ref))"}},"id":9231,"indexExpression":{"id":9230,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9169,"src":"15903:11:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15859:56:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$8330_storage_$","typeString":"mapping(uint256 => struct OldLibFlow.FlowRecord storage ref)"}},"id":9233,"indexExpression":{"id":9232,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9175,"src":"15916:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15859:64:24","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$8330_storage","typeString":"struct OldLibFlow.FlowRecord storage ref"}},"id":9234,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"15924:17:24","memberName":"timestampDecrease","nodeType":"MemberAccess","referencedDeclaration":8327,"src":"15859:82:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":9235,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"15944:5:24","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":9236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15963:9:24","memberName":"timestamp","nodeType":"MemberAccess","src":"15944:28:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15859:113:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9238,"nodeType":"ExpressionStatement","src":"15859:113:24"},{"assignments":[9240],"declarations":[{"constant":false,"id":9240,"mutability":"mutable","name":"controlNonce","nameLocation":"15991:12:24","nodeType":"VariableDeclaration","scope":9266,"src":"15983:20:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9239,"name":"uint256","nodeType":"ElementaryTypeName","src":"15983:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9251,"initialValue":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":9241,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8368,"src":"16006:12:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$8356_storage_ptr_$","typeString":"function () pure returns (struct OldLibFlow.StorageFlow storage pointer)"}},"id":9242,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16006:14:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$8356_storage_ptr","typeString":"struct OldLibFlow.StorageFlow storage pointer"}},"id":9243,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16030:10:24","memberName":"flowRecord","nodeType":"MemberAccess","referencedDeclaration":8345,"src":"16006:34:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$8330_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct OldLibFlow.FlowRecord storage ref)))"}},"id":9245,"indexExpression":{"id":9244,"name":"_sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9171,"src":"16041:7:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16006:43:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$8330_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct OldLibFlow.FlowRecord storage ref))"}},"id":9247,"indexExpression":{"id":9246,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9169,"src":"16050:11:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16006:56:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$8330_storage_$","typeString":"mapping(uint256 => struct OldLibFlow.FlowRecord storage ref)"}},"id":9249,"indexExpression":{"id":9248,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9175,"src":"16063:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16006:64:24","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$8330_storage","typeString":"struct OldLibFlow.FlowRecord storage ref"}},"id":9250,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16071:12:24","memberName":"controlNonce","nodeType":"MemberAccess","referencedDeclaration":8319,"src":"16006:77:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15983:100:24"},{"expression":{"id":9264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9252,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"16093:10:24","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$13307_$","typeString":"type(library LibControl)"}},"id":9254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16113:15:24","memberName":"_storageControl","nodeType":"MemberAccess","referencedDeclaration":12430,"src":"16093:35:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$12418_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":9255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16093:37:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":9256,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16140:13:24","memberName":"controlRecord","nodeType":"MemberAccess","referencedDeclaration":12403,"src":"16093:60:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_ControlRecord_$12369_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibControl.ControlRecord storage ref))"}},"id":9258,"indexExpression":{"id":9257,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9169,"src":"16154:11:24","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16093:73:24","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ControlRecord_$12369_storage_$","typeString":"mapping(uint256 => struct LibControl.ControlRecord storage ref)"}},"id":9260,"indexExpression":{"id":9259,"name":"controlNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9240,"src":"16167:12:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16093:87:24","typeDescriptions":{"typeIdentifier":"t_struct$_ControlRecord_$12369_storage","typeString":"struct LibControl.ControlRecord storage ref"}},"id":9261,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"16181:17:24","memberName":"timestampDecrease","nodeType":"MemberAccess","referencedDeclaration":12368,"src":"16093:105:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":9262,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"16201:5:24","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":9263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16220:9:24","memberName":"timestamp","nodeType":"MemberAccess","src":"16201:28:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16093:136:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9265,"nodeType":"ExpressionStatement","src":"16093:136:24"}]},"id":9267,"implemented":true,"kind":"function","modifiers":[],"name":"_decreaseFlow","nameLocation":"15353:13:24","nodeType":"FunctionDefinition","parameters":{"id":9178,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9169,"mutability":"mutable","name":"_superToken","nameLocation":"15384:11:24","nodeType":"VariableDeclaration","scope":9267,"src":"15376:19:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9168,"name":"address","nodeType":"ElementaryTypeName","src":"15376:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9171,"mutability":"mutable","name":"_sender","nameLocation":"15413:7:24","nodeType":"VariableDeclaration","scope":9267,"src":"15405:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9170,"name":"address","nodeType":"ElementaryTypeName","src":"15405:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9173,"mutability":"mutable","name":"_receiver","nameLocation":"15438:9:24","nodeType":"VariableDeclaration","scope":9267,"src":"15430:17:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9172,"name":"address","nodeType":"ElementaryTypeName","src":"15430:7:24","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9175,"mutability":"mutable","name":"_nonce","nameLocation":"15465:6:24","nodeType":"VariableDeclaration","scope":9267,"src":"15457:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9174,"name":"uint256","nodeType":"ElementaryTypeName","src":"15457:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9177,"mutability":"mutable","name":"_flowRate","nameLocation":"15487:9:24","nodeType":"VariableDeclaration","scope":9267,"src":"15481:15:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":9176,"name":"int96","nodeType":"ElementaryTypeName","src":"15481:5:24","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"15366:136:24"},"returnParameters":{"id":9179,"nodeType":"ParameterList","parameters":[],"src":"15512:0:24"},"scope":9268,"src":"15344:892:24","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":9269,"src":"633:15605:24","usedErrors":[]}],"src":"36:16375:24"},"id":24},"contracts/facets/core/Automate.sol":{"ast":{"absolutePath":"contracts/facets/core/Automate.sol","exportedSymbols":{"Automate":[9375],"IAutomate":[11354],"LibAccessControl":[15479],"LibAutomate":[12310]},"id":9376,"license":"BUSL-1.1","nodeType":"SourceUnit","nodes":[{"id":9270,"literals":["solidity","^","0.8",".9"],"nodeType":"PragmaDirective","src":"37:23:25"},{"absolutePath":"contracts/libraries/utils/LibAccessControl.sol","file":"../../libraries/utils/LibAccessControl.sol","id":9272,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9376,"sourceUnit":15480,"src":"62:76:25","symbolAliases":[{"foreign":{"id":9271,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15479,"src":"70:16:25","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/libraries/core/LibAutomate.sol","file":"../../libraries/core/LibAutomate.sol","id":9274,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9376,"sourceUnit":12311,"src":"139:65:25","symbolAliases":[{"foreign":{"id":9273,"name":"LibAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12310,"src":"147:11:25","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/core/IAutomate.sol","file":"../../interfaces/core/IAutomate.sol","id":9276,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9376,"sourceUnit":11355,"src":"205:62:25","symbolAliases":[{"foreign":{"id":9275,"name":"IAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11354,"src":"213:9:25","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":9277,"name":"IAutomate","nameLocations":["290:9:25"],"nodeType":"IdentifierPath","referencedDeclaration":11354,"src":"290:9:25"},"id":9278,"nodeType":"InheritanceSpecifier","src":"290:9:25"}],"canonicalName":"Automate","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":9375,"linearizedBaseContracts":[9375,11354],"name":"Automate","nameLocation":"278:8:25","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[11335],"body":{"id":9295,"nodeType":"Block","src":"432:57:25","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9291,"name":"LibAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12310,"src":"449:11:25","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAutomate_$12310_$","typeString":"type(library LibAutomate)"}},"id":9292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"461:19:25","memberName":"_getGelatoAddresses","nodeType":"MemberAccess","referencedDeclaration":12222,"src":"449:31:25","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$_t_address_$_t_address_$_t_address_$_t_address_$","typeString":"function () view returns (address,address,address,address,address)"}},"id":9293,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"449:33:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$_t_address_$_t_address_$_t_address_$","typeString":"tuple(address,address,address,address,address)"}},"functionReturnParameters":9290,"id":9294,"nodeType":"Return","src":"442:40:25"}]},"functionSelector":"bb6bd765","id":9296,"implemented":true,"kind":"function","modifiers":[],"name":"getGelatoAddresses","nameLocation":"315:18:25","nodeType":"FunctionDefinition","parameters":{"id":9279,"nodeType":"ParameterList","parameters":[],"src":"333:2:25"},"returnParameters":{"id":9290,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9281,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9296,"src":"383:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9280,"name":"address","nodeType":"ElementaryTypeName","src":"383:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9283,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9296,"src":"392:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9282,"name":"address","nodeType":"ElementaryTypeName","src":"392:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9285,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9296,"src":"401:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9284,"name":"address","nodeType":"ElementaryTypeName","src":"401:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9287,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9296,"src":"410:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9286,"name":"address","nodeType":"ElementaryTypeName","src":"410:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9289,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9296,"src":"419:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9288,"name":"address","nodeType":"ElementaryTypeName","src":"419:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"382:45:25"},"scope":9375,"src":"306:183:25","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[11353],"body":{"id":9305,"nodeType":"Block","src":"565:65:25","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9301,"name":"LibAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12310,"src":"582:11:25","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAutomate_$12310_$","typeString":"type(library LibAutomate)"}},"id":9302,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"594:27:25","memberName":"_getMinimumAppGelatoBalance","nodeType":"MemberAccess","referencedDeclaration":12232,"src":"582:39:25","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":9303,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"582:41:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9300,"id":9304,"nodeType":"Return","src":"575:48:25"}]},"functionSelector":"f24a25de","id":9306,"implemented":true,"kind":"function","modifiers":[],"name":"getMinimumAppGelatoBalance","nameLocation":"504:26:25","nodeType":"FunctionDefinition","parameters":{"id":9297,"nodeType":"ParameterList","parameters":[],"src":"530:2:25"},"returnParameters":{"id":9300,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9299,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9306,"src":"556:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9298,"name":"uint256","nodeType":"ElementaryTypeName","src":"556:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"555:9:25"},"scope":9375,"src":"495:135:25","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[11322],"body":{"id":9324,"nodeType":"Block","src":"691:135:25","statements":[{"expression":{"arguments":[{"expression":{"id":9314,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15479,"src":"735:16:25","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$15479_$","typeString":"type(library LibAccessControl)"}},"id":9315,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"752:15:25","memberName":"STRATEGIST_ROLE","nodeType":"MemberAccess","referencedDeclaration":15216,"src":"735:32:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":9311,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15479,"src":"701:16:25","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$15479_$","typeString":"type(library LibAccessControl)"}},"id":9313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"718:16:25","memberName":"_requireOnlyRole","nodeType":"MemberAccess","referencedDeclaration":15259,"src":"701:33:25","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$__$","typeString":"function (bytes32) view"}},"id":9316,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"701:67:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9317,"nodeType":"ExpressionStatement","src":"701:67:25"},{"expression":{"arguments":[{"id":9321,"name":"_autobot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9308,"src":"810:8:25","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9318,"name":"LibAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12310,"src":"778:11:25","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAutomate_$12310_$","typeString":"type(library LibAutomate)"}},"id":9320,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"790:19:25","memberName":"_setGelatoContracts","nodeType":"MemberAccess","referencedDeclaration":12177,"src":"778:31:25","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":9322,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"778:41:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9323,"nodeType":"ExpressionStatement","src":"778:41:25"}]},"functionSelector":"71ebf6f4","id":9325,"implemented":true,"kind":"function","modifiers":[],"name":"setGelatoContracts","nameLocation":"645:18:25","nodeType":"FunctionDefinition","parameters":{"id":9309,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9308,"mutability":"mutable","name":"_autobot","nameLocation":"672:8:25","nodeType":"VariableDeclaration","scope":9325,"src":"664:16:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9307,"name":"address","nodeType":"ElementaryTypeName","src":"664:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"663:18:25"},"returnParameters":{"id":9310,"nodeType":"ParameterList","parameters":[],"src":"691:0:25"},"scope":9375,"src":"636:190:25","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[11348],"body":{"id":9343,"nodeType":"Block","src":"893:141:25","statements":[{"expression":{"arguments":[{"expression":{"id":9333,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15479,"src":"937:16:25","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$15479_$","typeString":"type(library LibAccessControl)"}},"id":9334,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"954:15:25","memberName":"STRATEGIST_ROLE","nodeType":"MemberAccess","referencedDeclaration":15216,"src":"937:32:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":9330,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15479,"src":"903:16:25","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$15479_$","typeString":"type(library LibAccessControl)"}},"id":9332,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"920:16:25","memberName":"_requireOnlyRole","nodeType":"MemberAccess","referencedDeclaration":15259,"src":"903:33:25","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$__$","typeString":"function (bytes32) view"}},"id":9335,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"903:67:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9336,"nodeType":"ExpressionStatement","src":"903:67:25"},{"expression":{"arguments":[{"id":9340,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9327,"src":"1020:6:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9337,"name":"LibAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12310,"src":"980:11:25","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAutomate_$12310_$","typeString":"type(library LibAutomate)"}},"id":9339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"992:27:25","memberName":"_setMinimumAppGelatoBalance","nodeType":"MemberAccess","referencedDeclaration":12189,"src":"980:39:25","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":9341,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"980:47:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9342,"nodeType":"ExpressionStatement","src":"980:47:25"}]},"functionSelector":"2e4b6945","id":9344,"implemented":true,"kind":"function","modifiers":[],"name":"setMinimumAppGelatoBalance","nameLocation":"841:26:25","nodeType":"FunctionDefinition","parameters":{"id":9328,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9327,"mutability":"mutable","name":"_value","nameLocation":"876:6:25","nodeType":"VariableDeclaration","scope":9344,"src":"868:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9326,"name":"uint256","nodeType":"ElementaryTypeName","src":"868:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"867:16:25"},"returnParameters":{"id":9329,"nodeType":"ParameterList","parameters":[],"src":"893:0:25"},"scope":9375,"src":"832:202:25","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[11343],"body":{"id":9354,"nodeType":"Block","src":"1087:59:25","statements":[{"expression":{"arguments":[{"expression":{"id":9350,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1129:3:25","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1133:5:25","memberName":"value","nodeType":"MemberAccess","src":"1129:9:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9347,"name":"LibAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12310,"src":"1097:11:25","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAutomate_$12310_$","typeString":"type(library LibAutomate)"}},"id":9349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1109:19:25","memberName":"_depositGelatoFunds","nodeType":"MemberAccess","referencedDeclaration":11990,"src":"1097:31:25","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":9352,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1097:42:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9353,"nodeType":"ExpressionStatement","src":"1097:42:25"}]},"functionSelector":"1674bc24","id":9355,"implemented":true,"kind":"function","modifiers":[],"name":"depositGelatoFunds","nameLocation":"1049:18:25","nodeType":"FunctionDefinition","parameters":{"id":9345,"nodeType":"ParameterList","parameters":[],"src":"1067:2:25"},"returnParameters":{"id":9346,"nodeType":"ParameterList","parameters":[],"src":"1087:0:25"},"scope":9375,"src":"1040:106:25","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[11340],"body":{"id":9373,"nodeType":"Block","src":"1207:134:25","statements":[{"expression":{"arguments":[{"expression":{"id":9363,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15479,"src":"1251:16:25","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$15479_$","typeString":"type(library LibAccessControl)"}},"id":9364,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1268:14:25","memberName":"TREASURER_ROLE","nodeType":"MemberAccess","referencedDeclaration":15208,"src":"1251:31:25","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":9360,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15479,"src":"1217:16:25","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$15479_$","typeString":"type(library LibAccessControl)"}},"id":9362,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1234:16:25","memberName":"_requireOnlyRole","nodeType":"MemberAccess","referencedDeclaration":15259,"src":"1217:33:25","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$__$","typeString":"function (bytes32) view"}},"id":9365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1217:66:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9366,"nodeType":"ExpressionStatement","src":"1217:66:25"},{"expression":{"arguments":[{"id":9370,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9357,"src":"1326:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9367,"name":"LibAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12310,"src":"1293:11:25","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAutomate_$12310_$","typeString":"type(library LibAutomate)"}},"id":9369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1305:20:25","memberName":"_withdrawGelatoFunds","nodeType":"MemberAccess","referencedDeclaration":11970,"src":"1293:32:25","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":9371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1293:41:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9372,"nodeType":"ExpressionStatement","src":"1293:41:25"}]},"functionSelector":"a6f9223d","id":9374,"implemented":true,"kind":"function","modifiers":[],"name":"withdrawGelatoFunds","nameLocation":"1161:19:25","nodeType":"FunctionDefinition","parameters":{"id":9358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9357,"mutability":"mutable","name":"_amount","nameLocation":"1189:7:25","nodeType":"VariableDeclaration","scope":9374,"src":"1181:15:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9356,"name":"uint256","nodeType":"ElementaryTypeName","src":"1181:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1180:17:25"},"returnParameters":{"id":9359,"nodeType":"ParameterList","parameters":[],"src":"1207:0:25"},"scope":9375,"src":"1152:189:25","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":9376,"src":"269:1074:25","usedErrors":[]}],"src":"37:1307:25"},"id":25},"contracts/facets/core/Control.sol":{"ast":{"absolutePath":"contracts/facets/core/Control.sol","exportedSymbols":{"ArrayLengthNotMatch":[12325],"Control":[9929],"IControl":[11551],"InvalidFlowRateBounds":[12335],"IterableMappingBPS":[15181],"LibAccessControl":[15479],"LibControl":[13307]},"id":9930,"license":"BUSL-1.1","nodeType":"SourceUnit","nodes":[{"id":9377,"literals":["solidity","^","0.8",".9"],"nodeType":"PragmaDirective","src":"37:23:26"},{"absolutePath":"contracts/libraries/utils/LibAccessControl.sol","file":"../../libraries/utils/LibAccessControl.sol","id":9379,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9930,"sourceUnit":15480,"src":"62:76:26","symbolAliases":[{"foreign":{"id":9378,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15479,"src":"70:16:26","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/libraries/core/LibControl.sol","file":"../../libraries/core/LibControl.sol","id":9383,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9930,"sourceUnit":13308,"src":"139:107:26","symbolAliases":[{"foreign":{"id":9380,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"147:10:26","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":9381,"name":"ArrayLengthNotMatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12325,"src":"159:19:26","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":9382,"name":"InvalidFlowRateBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12335,"src":"180:21:26","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/core/IControl.sol","file":"../../interfaces/core/IControl.sol","id":9385,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9930,"sourceUnit":11552,"src":"247:60:26","symbolAliases":[{"foreign":{"id":9384,"name":"IControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11551,"src":"255:8:26","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/libraries/utils/IterableMappingBPS.sol","file":"../../libraries/utils/IterableMappingBPS.sol","id":9387,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":9930,"sourceUnit":15182,"src":"309:80:26","symbolAliases":[{"foreign":{"id":9386,"name":"IterableMappingBPS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15181,"src":"317:18:26","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":9388,"name":"IControl","nameLocations":["411:8:26"],"nodeType":"IdentifierPath","referencedDeclaration":11551,"src":"411:8:26"},"id":9389,"nodeType":"InheritanceSpecifier","src":"411:8:26"}],"canonicalName":"Control","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":9929,"linearizedBaseContracts":[9929,11551],"name":"Control","nameLocation":"400:7:26","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[11363],"body":{"id":9409,"nodeType":"Block","src":"495:124:26","statements":[{"expression":{"arguments":[{"id":9399,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9391,"src":"544:11:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9396,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"505:10:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$13307_$","typeString":"type(library LibControl)"}},"id":9398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"516:27:26","memberName":"_requireSuperTokenSupported","nodeType":"MemberAccess","referencedDeclaration":12753,"src":"505:38:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":9400,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"505:51:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9401,"nodeType":"ExpressionStatement","src":"505:51:26"},{"expression":{"arguments":[{"id":9405,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9391,"src":"591:11:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9406,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9393,"src":"604:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9402,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"566:10:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$13307_$","typeString":"type(library LibControl)"}},"id":9404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"577:13:26","memberName":"_depositAsset","nodeType":"MemberAccess","referencedDeclaration":12470,"src":"566:24:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":9407,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"566:46:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9408,"nodeType":"ExpressionStatement","src":"566:46:26"}]},"functionSelector":"46a5d043","id":9410,"implemented":true,"kind":"function","modifiers":[],"name":"depositAsset","nameLocation":"435:12:26","nodeType":"FunctionDefinition","parameters":{"id":9394,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9391,"mutability":"mutable","name":"_superToken","nameLocation":"456:11:26","nodeType":"VariableDeclaration","scope":9410,"src":"448:19:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9390,"name":"address","nodeType":"ElementaryTypeName","src":"448:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9393,"mutability":"mutable","name":"_amount","nameLocation":"477:7:26","nodeType":"VariableDeclaration","scope":9410,"src":"469:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9392,"name":"uint256","nodeType":"ElementaryTypeName","src":"469:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"447:38:26"},"returnParameters":{"id":9395,"nodeType":"ParameterList","parameters":[],"src":"495:0:26"},"scope":9929,"src":"426:193:26","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[11370],"body":{"id":9424,"nodeType":"Block","src":"695:371:26","statements":[{"documentation":" don't need to check if supertoken suppported or not\n as there may be a chance that a supported supertoken\n gets removed but there is still user funds in the app\n in that case, just let user withdraw as will fail anyway if 0 amount","expression":{"arguments":[{"id":9420,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9412,"src":"1038:11:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9421,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9414,"src":"1051:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9417,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"1012:10:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$13307_$","typeString":"type(library LibControl)"}},"id":9419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1023:14:26","memberName":"_withdrawAsset","nodeType":"MemberAccess","referencedDeclaration":12520,"src":"1012:25:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":9422,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1012:47:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9423,"nodeType":"ExpressionStatement","src":"1012:47:26"}]},"functionSelector":"38e4f064","id":9425,"implemented":true,"kind":"function","modifiers":[],"name":"withdrawAsset","nameLocation":"634:13:26","nodeType":"FunctionDefinition","parameters":{"id":9415,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9412,"mutability":"mutable","name":"_superToken","nameLocation":"656:11:26","nodeType":"VariableDeclaration","scope":9425,"src":"648:19:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9411,"name":"address","nodeType":"ElementaryTypeName","src":"648:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9414,"mutability":"mutable","name":"_amount","nameLocation":"677:7:26","nodeType":"VariableDeclaration","scope":9425,"src":"669:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9413,"name":"uint256","nodeType":"ElementaryTypeName","src":"669:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"647:38:26"},"returnParameters":{"id":9416,"nodeType":"ParameterList","parameters":[],"src":"695:0:26"},"scope":9929,"src":"625:441:26","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[11377],"body":{"id":9446,"nodeType":"Block","src":"1147:145:26","statements":[{"expression":{"arguments":[{"expression":{"id":9435,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15479,"src":"1191:16:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$15479_$","typeString":"type(library LibAccessControl)"}},"id":9436,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1208:14:26","memberName":"TREASURER_ROLE","nodeType":"MemberAccess","referencedDeclaration":15208,"src":"1191:31:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":9432,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15479,"src":"1157:16:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$15479_$","typeString":"type(library LibAccessControl)"}},"id":9434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1174:16:26","memberName":"_requireOnlyRole","nodeType":"MemberAccess","referencedDeclaration":15259,"src":"1157:33:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$__$","typeString":"function (bytes32) view"}},"id":9437,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1157:66:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9438,"nodeType":"ExpressionStatement","src":"1157:66:26"},{"expression":{"arguments":[{"id":9442,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9427,"src":"1264:11:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9443,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9429,"src":"1277:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9439,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"1233:10:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$13307_$","typeString":"type(library LibControl)"}},"id":9441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1244:19:26","memberName":"_withdrawFeeBalance","nodeType":"MemberAccess","referencedDeclaration":12560,"src":"1233:30:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":9444,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1233:52:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9445,"nodeType":"ExpressionStatement","src":"1233:52:26"}]},"functionSelector":"ebaae661","id":9447,"implemented":true,"kind":"function","modifiers":[],"name":"withdrawFeeBalance","nameLocation":"1081:18:26","nodeType":"FunctionDefinition","parameters":{"id":9430,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9427,"mutability":"mutable","name":"_superToken","nameLocation":"1108:11:26","nodeType":"VariableDeclaration","scope":9447,"src":"1100:19:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9426,"name":"address","nodeType":"ElementaryTypeName","src":"1100:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9429,"mutability":"mutable","name":"_amount","nameLocation":"1129:7:26","nodeType":"VariableDeclaration","scope":9447,"src":"1121:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9428,"name":"uint256","nodeType":"ElementaryTypeName","src":"1121:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1099:38:26"},"returnParameters":{"id":9431,"nodeType":"ParameterList","parameters":[],"src":"1147:0:26"},"scope":9929,"src":"1072:220:26","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[11384],"body":{"id":9462,"nodeType":"Block","src":"1488:66:26","statements":[{"expression":{"arguments":[{"id":9458,"name":"count","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9450,"src":"1528:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9459,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9452,"src":"1535:11:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9455,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"1498:10:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$13307_$","typeString":"type(library LibControl)"}},"id":9457,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1509:18:26","memberName":"_realizeFeeBalance","nodeType":"MemberAccess","referencedDeclaration":12580,"src":"1498:29:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_address_$returns$__$","typeString":"function (uint256,address)"}},"id":9460,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1498:49:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9461,"nodeType":"ExpressionStatement","src":"1498:49:26"}]},"documentation":{"id":9448,"nodeType":"StructuredDocumentation","src":"1298:113:26","text":" do external analysis on up to what count flow ended\n to determine what `count` should be"},"functionSelector":"adefe35e","id":9463,"implemented":true,"kind":"function","modifiers":[],"name":"realizeFeeBalance","nameLocation":"1425:17:26","nodeType":"FunctionDefinition","parameters":{"id":9453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9450,"mutability":"mutable","name":"count","nameLocation":"1451:5:26","nodeType":"VariableDeclaration","scope":9463,"src":"1443:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9449,"name":"uint256","nodeType":"ElementaryTypeName","src":"1443:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9452,"mutability":"mutable","name":"_superToken","nameLocation":"1466:11:26","nodeType":"VariableDeclaration","scope":9463,"src":"1458:19:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9451,"name":"address","nodeType":"ElementaryTypeName","src":"1458:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1442:36:26"},"returnParameters":{"id":9454,"nodeType":"ParameterList","parameters":[],"src":"1488:0:26"},"scope":9929,"src":"1416:138:26","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[11389],"body":{"id":9487,"nodeType":"Block","src":"1661:190:26","statements":[{"expression":{"arguments":[{"expression":{"id":9471,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15479,"src":"1705:16:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$15479_$","typeString":"type(library LibAccessControl)"}},"id":9472,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1722:15:26","memberName":"STRATEGIST_ROLE","nodeType":"MemberAccess","referencedDeclaration":15216,"src":"1705:32:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":9468,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15479,"src":"1671:16:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$15479_$","typeString":"type(library LibAccessControl)"}},"id":9470,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1688:16:26","memberName":"_requireOnlyRole","nodeType":"MemberAccess","referencedDeclaration":15259,"src":"1671:33:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$__$","typeString":"function (bytes32) view"}},"id":9473,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1671:67:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9474,"nodeType":"ExpressionStatement","src":"1671:67:26"},{"expression":{"arguments":[{"id":9478,"name":"_duration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9465,"src":"1780:9:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9475,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"1748:10:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$13307_$","typeString":"type(library LibControl)"}},"id":9477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1759:20:26","memberName":"_requireNonZeroValue","nodeType":"MemberAccess","referencedDeclaration":12739,"src":"1748:31:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":9479,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1748:42:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9480,"nodeType":"ExpressionStatement","src":"1748:42:26"},{"expression":{"arguments":[{"id":9484,"name":"_duration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9465,"src":"1834:9:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9481,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"1800:10:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$13307_$","typeString":"type(library LibControl)"}},"id":9483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1811:22:26","memberName":"_setMinimumEndDuration","nodeType":"MemberAccess","referencedDeclaration":12814,"src":"1800:33:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":9485,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1800:44:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9486,"nodeType":"ExpressionStatement","src":"1800:44:26"}]},"functionSelector":"578dc59a","id":9488,"implemented":true,"kind":"function","modifiers":[],"name":"setMinimumEndDuration","nameLocation":"1611:21:26","nodeType":"FunctionDefinition","parameters":{"id":9466,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9465,"mutability":"mutable","name":"_duration","nameLocation":"1641:9:26","nodeType":"VariableDeclaration","scope":9488,"src":"1633:17:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9464,"name":"uint256","nodeType":"ElementaryTypeName","src":"1633:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1632:19:26"},"returnParameters":{"id":9467,"nodeType":"ParameterList","parameters":[],"src":"1661:0:26"},"scope":9929,"src":"1602:249:26","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[11394],"body":{"id":9512,"nodeType":"Block","src":"1913:187:26","statements":[{"expression":{"arguments":[{"expression":{"id":9496,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15479,"src":"1957:16:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$15479_$","typeString":"type(library LibAccessControl)"}},"id":9497,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1974:15:26","memberName":"STRATEGIST_ROLE","nodeType":"MemberAccess","referencedDeclaration":15216,"src":"1957:32:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":9493,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15479,"src":"1923:16:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$15479_$","typeString":"type(library LibAccessControl)"}},"id":9495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1940:16:26","memberName":"_requireOnlyRole","nodeType":"MemberAccess","referencedDeclaration":15259,"src":"1923:33:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$__$","typeString":"function (bytes32) view"}},"id":9498,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1923:67:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9499,"nodeType":"ExpressionStatement","src":"1923:67:26"},{"expression":{"arguments":[{"id":9503,"name":"_duration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9490,"src":"2032:9:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9500,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"2000:10:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$13307_$","typeString":"type(library LibControl)"}},"id":9502,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2011:20:26","memberName":"_requireNonZeroValue","nodeType":"MemberAccess","referencedDeclaration":12739,"src":"2000:31:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":9504,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2000:42:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9505,"nodeType":"ExpressionStatement","src":"2000:42:26"},{"expression":{"arguments":[{"id":9509,"name":"_duration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9490,"src":"2083:9:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9506,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"2052:10:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$13307_$","typeString":"type(library LibControl)"}},"id":9508,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2063:19:26","memberName":"_setMinimumLifespan","nodeType":"MemberAccess","referencedDeclaration":12826,"src":"2052:30:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":9510,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2052:41:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9511,"nodeType":"ExpressionStatement","src":"2052:41:26"}]},"functionSelector":"245b6c93","id":9513,"implemented":true,"kind":"function","modifiers":[],"name":"setMinimumLifespan","nameLocation":"1866:18:26","nodeType":"FunctionDefinition","parameters":{"id":9491,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9490,"mutability":"mutable","name":"_duration","nameLocation":"1893:9:26","nodeType":"VariableDeclaration","scope":9513,"src":"1885:17:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9489,"name":"uint256","nodeType":"ElementaryTypeName","src":"1885:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1884:19:26"},"returnParameters":{"id":9492,"nodeType":"ParameterList","parameters":[],"src":"1913:0:26"},"scope":9929,"src":"1857:243:26","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[11399],"body":{"id":9537,"nodeType":"Block","src":"2161:186:26","statements":[{"expression":{"arguments":[{"expression":{"id":9521,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15479,"src":"2205:16:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$15479_$","typeString":"type(library LibAccessControl)"}},"id":9522,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2222:15:26","memberName":"STRATEGIST_ROLE","nodeType":"MemberAccess","referencedDeclaration":15216,"src":"2205:32:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":9518,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15479,"src":"2171:16:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$15479_$","typeString":"type(library LibAccessControl)"}},"id":9520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2188:16:26","memberName":"_requireOnlyRole","nodeType":"MemberAccess","referencedDeclaration":15259,"src":"2171:33:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$__$","typeString":"function (bytes32) view"}},"id":9523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2171:67:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9524,"nodeType":"ExpressionStatement","src":"2171:67:26"},{"expression":{"arguments":[{"id":9528,"name":"_duration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9515,"src":"2280:9:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9525,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"2248:10:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$13307_$","typeString":"type(library LibControl)"}},"id":9527,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2259:20:26","memberName":"_requireNonZeroValue","nodeType":"MemberAccess","referencedDeclaration":12739,"src":"2248:31:26","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":9529,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2248:42:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9530,"nodeType":"ExpressionStatement","src":"2248:42:26"},{"expression":{"arguments":[{"id":9534,"name":"_duration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9515,"src":"2330:9:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9531,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"2300:10:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$13307_$","typeString":"type(library LibControl)"}},"id":9533,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2311:18:26","memberName":"_setSTBufferAmount","nodeType":"MemberAccess","referencedDeclaration":12838,"src":"2300:29:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":9535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2300:40:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9536,"nodeType":"ExpressionStatement","src":"2300:40:26"}]},"functionSelector":"487eb939","id":9538,"implemented":true,"kind":"function","modifiers":[],"name":"setSTBufferAmount","nameLocation":"2115:17:26","nodeType":"FunctionDefinition","parameters":{"id":9516,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9515,"mutability":"mutable","name":"_duration","nameLocation":"2141:9:26","nodeType":"VariableDeclaration","scope":9538,"src":"2133:17:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9514,"name":"uint256","nodeType":"ElementaryTypeName","src":"2133:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2132:19:26"},"returnParameters":{"id":9517,"nodeType":"ParameterList","parameters":[],"src":"2161:0:26"},"scope":9929,"src":"2106:241:26","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[11404],"body":{"id":9556,"nodeType":"Block","src":"2406:132:26","statements":[{"expression":{"arguments":[{"expression":{"id":9546,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15479,"src":"2450:16:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$15479_$","typeString":"type(library LibAccessControl)"}},"id":9547,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2467:15:26","memberName":"STRATEGIST_ROLE","nodeType":"MemberAccess","referencedDeclaration":15216,"src":"2450:32:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":9543,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15479,"src":"2416:16:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$15479_$","typeString":"type(library LibAccessControl)"}},"id":9545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2433:16:26","memberName":"_requireOnlyRole","nodeType":"MemberAccess","referencedDeclaration":15259,"src":"2416:33:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$__$","typeString":"function (bytes32) view"}},"id":9548,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2416:67:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9549,"nodeType":"ExpressionStatement","src":"2416:67:26"},{"expression":{"arguments":[{"id":9553,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9540,"src":"2519:11:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9550,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"2493:10:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$13307_$","typeString":"type(library LibControl)"}},"id":9552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2504:14:26","memberName":"_addSuperToken","nodeType":"MemberAccess","referencedDeclaration":12852,"src":"2493:25:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":9554,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2493:38:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9555,"nodeType":"ExpressionStatement","src":"2493:38:26"}]},"functionSelector":"22c3a21f","id":9557,"implemented":true,"kind":"function","modifiers":[],"name":"addSuperToken","nameLocation":"2362:13:26","nodeType":"FunctionDefinition","parameters":{"id":9541,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9540,"mutability":"mutable","name":"_superToken","nameLocation":"2384:11:26","nodeType":"VariableDeclaration","scope":9557,"src":"2376:19:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9539,"name":"address","nodeType":"ElementaryTypeName","src":"2376:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2375:21:26"},"returnParameters":{"id":9542,"nodeType":"ParameterList","parameters":[],"src":"2406:0:26"},"scope":9929,"src":"2353:185:26","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[11409],"body":{"id":9575,"nodeType":"Block","src":"2600:135:26","statements":[{"expression":{"arguments":[{"expression":{"id":9565,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15479,"src":"2644:16:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$15479_$","typeString":"type(library LibAccessControl)"}},"id":9566,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2661:15:26","memberName":"STRATEGIST_ROLE","nodeType":"MemberAccess","referencedDeclaration":15216,"src":"2644:32:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":9562,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15479,"src":"2610:16:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$15479_$","typeString":"type(library LibAccessControl)"}},"id":9564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2627:16:26","memberName":"_requireOnlyRole","nodeType":"MemberAccess","referencedDeclaration":15259,"src":"2610:33:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$__$","typeString":"function (bytes32) view"}},"id":9567,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2610:67:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9568,"nodeType":"ExpressionStatement","src":"2610:67:26"},{"expression":{"arguments":[{"id":9572,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9559,"src":"2716:11:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9569,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"2687:10:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$13307_$","typeString":"type(library LibControl)"}},"id":9571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2698:17:26","memberName":"_removeSuperToken","nodeType":"MemberAccess","referencedDeclaration":12865,"src":"2687:28:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":9573,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2687:41:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9574,"nodeType":"ExpressionStatement","src":"2687:41:26"}]},"functionSelector":"83807889","id":9576,"implemented":true,"kind":"function","modifiers":[],"name":"removeSuperToken","nameLocation":"2553:16:26","nodeType":"FunctionDefinition","parameters":{"id":9560,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9559,"mutability":"mutable","name":"_superToken","nameLocation":"2578:11:26","nodeType":"VariableDeclaration","scope":9576,"src":"2570:19:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9558,"name":"address","nodeType":"ElementaryTypeName","src":"2570:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2569:21:26"},"returnParameters":{"id":9561,"nodeType":"ParameterList","parameters":[],"src":"2600:0:26"},"scope":9929,"src":"2544:191:26","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[11412],"body":{"id":9591,"nodeType":"Block","src":"2771:117:26","statements":[{"expression":{"arguments":[{"expression":{"id":9582,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15479,"src":"2815:16:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$15479_$","typeString":"type(library LibAccessControl)"}},"id":9583,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2832:15:26","memberName":"STRATEGIST_ROLE","nodeType":"MemberAccess","referencedDeclaration":15216,"src":"2815:32:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":9579,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15479,"src":"2781:16:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$15479_$","typeString":"type(library LibAccessControl)"}},"id":9581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2798:16:26","memberName":"_requireOnlyRole","nodeType":"MemberAccess","referencedDeclaration":15259,"src":"2781:33:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$__$","typeString":"function (bytes32) view"}},"id":9584,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2781:67:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9585,"nodeType":"ExpressionStatement","src":"2781:67:26"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9586,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"2858:10:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$13307_$","typeString":"type(library LibControl)"}},"id":9588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2869:10:26","memberName":"_toggleBPS","nodeType":"MemberAccess","referencedDeclaration":12878,"src":"2858:21:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":9589,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2858:23:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9590,"nodeType":"ExpressionStatement","src":"2858:23:26"}]},"functionSelector":"703ab1b7","id":9592,"implemented":true,"kind":"function","modifiers":[],"name":"toggleBPS","nameLocation":"2750:9:26","nodeType":"FunctionDefinition","parameters":{"id":9577,"nodeType":"ParameterList","parameters":[],"src":"2759:2:26"},"returnParameters":{"id":9578,"nodeType":"ParameterList","parameters":[],"src":"2771:0:26"},"scope":9929,"src":"2741:147:26","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[11415],"body":{"id":9607,"nodeType":"Block","src":"2923:116:26","statements":[{"expression":{"arguments":[{"expression":{"id":9598,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15479,"src":"2967:16:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$15479_$","typeString":"type(library LibAccessControl)"}},"id":9599,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2984:15:26","memberName":"STRATEGIST_ROLE","nodeType":"MemberAccess","referencedDeclaration":15216,"src":"2967:32:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":9595,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15479,"src":"2933:16:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$15479_$","typeString":"type(library LibAccessControl)"}},"id":9597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2950:16:26","memberName":"_requireOnlyRole","nodeType":"MemberAccess","referencedDeclaration":15259,"src":"2933:33:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$__$","typeString":"function (bytes32) view"}},"id":9600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2933:67:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9601,"nodeType":"ExpressionStatement","src":"2933:67:26"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9602,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"3010:10:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$13307_$","typeString":"type(library LibControl)"}},"id":9604,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3021:9:26","memberName":"_clearBPS","nodeType":"MemberAccess","referencedDeclaration":12918,"src":"3010:20:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":9605,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3010:22:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9606,"nodeType":"ExpressionStatement","src":"3010:22:26"}]},"functionSelector":"795e3425","id":9608,"implemented":true,"kind":"function","modifiers":[],"name":"clearBPS","nameLocation":"2903:8:26","nodeType":"FunctionDefinition","parameters":{"id":9593,"nodeType":"ParameterList","parameters":[],"src":"2911:2:26"},"returnParameters":{"id":9594,"nodeType":"ParameterList","parameters":[],"src":"2923:0:26"},"scope":9929,"src":"2894:145:26","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[11430],"body":{"id":9703,"nodeType":"Block","src":"3783:723:26","statements":[{"expression":{"arguments":[{"expression":{"id":9627,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15479,"src":"3827:16:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$15479_$","typeString":"type(library LibAccessControl)"}},"id":9628,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3844:15:26","memberName":"STRATEGIST_ROLE","nodeType":"MemberAccess","referencedDeclaration":15216,"src":"3827:32:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":9624,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15479,"src":"3793:16:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$15479_$","typeString":"type(library LibAccessControl)"}},"id":9626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3810:16:26","memberName":"_requireOnlyRole","nodeType":"MemberAccess","referencedDeclaration":15259,"src":"3793:33:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$__$","typeString":"function (bytes32) view"}},"id":9629,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3793:67:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9630,"nodeType":"ExpressionStatement","src":"3793:67:26"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":9647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":9641,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9631,"name":"_bpss","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9612,"src":"3887:5:26","typeDescriptions":{"typeIdentifier":"t_array$_t_uint16_$dyn_memory_ptr","typeString":"uint16[] memory"}},"id":9632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3893:6:26","memberName":"length","nodeType":"MemberAccess","src":"3887:12:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":9633,"name":"_flowRateLowerBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9615,"src":"3903:20:26","typeDescriptions":{"typeIdentifier":"t_array$_t_uint96_$dyn_memory_ptr","typeString":"uint96[] memory"}},"id":9634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3924:6:26","memberName":"length","nodeType":"MemberAccess","src":"3903:27:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3887:43:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9640,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9636,"name":"_bpss","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9612,"src":"3946:5:26","typeDescriptions":{"typeIdentifier":"t_array$_t_uint16_$dyn_memory_ptr","typeString":"uint16[] memory"}},"id":9637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3952:6:26","memberName":"length","nodeType":"MemberAccess","src":"3946:12:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":9638,"name":"_flowRateUpperBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9618,"src":"3962:20:26","typeDescriptions":{"typeIdentifier":"t_array$_t_uint96_$dyn_memory_ptr","typeString":"uint96[] memory"}},"id":9639,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3983:6:26","memberName":"length","nodeType":"MemberAccess","src":"3962:27:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3946:43:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3887:102:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9646,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9642,"name":"_bpss","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9612,"src":"4005:5:26","typeDescriptions":{"typeIdentifier":"t_array$_t_uint16_$dyn_memory_ptr","typeString":"uint16[] memory"}},"id":9643,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4011:6:26","memberName":"length","nodeType":"MemberAccess","src":"4005:12:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":9644,"name":"_tags","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9621,"src":"4021:5:26","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":9645,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4027:6:26","memberName":"length","nodeType":"MemberAccess","src":"4021:12:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4005:28:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3887:146:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9651,"nodeType":"IfStatement","src":"3870:202:26","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":9648,"name":"ArrayLengthNotMatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12325,"src":"4051:19:26","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":9649,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4051:21:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9650,"nodeType":"RevertStatement","src":"4044:28:26"}},{"body":{"id":9701,"nodeType":"Block","src":"4126:374:26","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9668,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9663,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9653,"src":"4144:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9664,"name":"_bpss","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9612,"src":"4148:5:26","typeDescriptions":{"typeIdentifier":"t_array$_t_uint16_$dyn_memory_ptr","typeString":"uint16[] memory"}},"id":9665,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4154:6:26","memberName":"length","nodeType":"MemberAccess","src":"4148:12:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":9666,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4163:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4148:16:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4144:20:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9683,"nodeType":"IfStatement","src":"4140:169:26","trueBody":{"id":9682,"nodeType":"Block","src":"4166:143:26","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint96","typeString":"uint96"},"id":9677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":9669,"name":"_flowRateUpperBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9618,"src":"4188:20:26","typeDescriptions":{"typeIdentifier":"t_array$_t_uint96_$dyn_memory_ptr","typeString":"uint96[] memory"}},"id":9671,"indexExpression":{"id":9670,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9653,"src":"4209:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4188:23:26","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"baseExpression":{"id":9672,"name":"_flowRateLowerBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9615,"src":"4215:20:26","typeDescriptions":{"typeIdentifier":"t_array$_t_uint96_$dyn_memory_ptr","typeString":"uint96[] memory"}},"id":9676,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9675,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9673,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9653,"src":"4236:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":9674,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4240:1:26","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4236:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4215:27:26","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"4188:54:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9681,"nodeType":"IfStatement","src":"4184:110:26","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":9678,"name":"InvalidFlowRateBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12335,"src":"4271:21:26","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":9679,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4271:23:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9680,"nodeType":"RevertStatement","src":"4264:30:26"}}]}},{"expression":{"arguments":[{"baseExpression":{"id":9687,"name":"_bpss","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9612,"src":"4359:5:26","typeDescriptions":{"typeIdentifier":"t_array$_t_uint16_$dyn_memory_ptr","typeString":"uint16[] memory"}},"id":9689,"indexExpression":{"id":9688,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9653,"src":"4365:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4359:8:26","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"baseExpression":{"id":9690,"name":"_flowRateLowerBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9615,"src":"4385:20:26","typeDescriptions":{"typeIdentifier":"t_array$_t_uint96_$dyn_memory_ptr","typeString":"uint96[] memory"}},"id":9692,"indexExpression":{"id":9691,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9653,"src":"4406:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4385:23:26","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"baseExpression":{"id":9693,"name":"_flowRateUpperBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9618,"src":"4426:20:26","typeDescriptions":{"typeIdentifier":"t_array$_t_uint96_$dyn_memory_ptr","typeString":"uint96[] memory"}},"id":9695,"indexExpression":{"id":9694,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9653,"src":"4447:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4426:23:26","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"baseExpression":{"id":9696,"name":"_tags","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9621,"src":"4467:5:26","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":9698,"indexExpression":{"id":9697,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9653,"src":"4473:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4467:8:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9684,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"4323:10:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$13307_$","typeString":"type(library LibControl)"}},"id":9686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4334:7:26","memberName":"_setBPS","nodeType":"MemberAccess","referencedDeclaration":12951,"src":"4323:18:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint16_$_t_uint96_$_t_uint96_$_t_uint256_$returns$__$","typeString":"function (uint16,uint96,uint96,uint256)"}},"id":9699,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4323:166:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9700,"nodeType":"ExpressionStatement","src":"4323:166:26"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9656,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9653,"src":"4103:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":9657,"name":"_bpss","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9612,"src":"4107:5:26","typeDescriptions":{"typeIdentifier":"t_array$_t_uint16_$dyn_memory_ptr","typeString":"uint16[] memory"}},"id":9658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4113:6:26","memberName":"length","nodeType":"MemberAccess","src":"4107:12:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4103:16:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9702,"initializationExpression":{"assignments":[9653],"declarations":[{"constant":false,"id":9653,"mutability":"mutable","name":"i","nameLocation":"4096:1:26","nodeType":"VariableDeclaration","scope":9702,"src":"4088:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9652,"name":"uint256","nodeType":"ElementaryTypeName","src":"4088:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9655,"initialValue":{"hexValue":"30","id":9654,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4100:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4088:13:26"},"loopExpression":{"expression":{"id":9661,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"4121:3:26","subExpression":{"id":9660,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9653,"src":"4121:1:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9662,"nodeType":"ExpressionStatement","src":"4121:3:26"},"nodeType":"ForStatement","src":"4083:417:26"}]},"documentation":{"id":9609,"nodeType":"StructuredDocumentation","src":"3045:547:26","text":" - flowRate must be asc value\n - flowRateUpperBound value of i must be equal flowRateLowerBound value of i+1\n eg:\n array | tag | bound | bps\n index | | lower | upper |\n ----------------------------------\n 0 | 1 | 0.001 | 0.002 | 4000 (40%)\n 1 | 2 | 0.002 | 0.003 | 2000 (20%)\n 2 | 3 | 0.003 | 0.005 | 500 (5%)\n how to call (eg):\n first call has tags related to 720p\n second call has tags related to 1080p"},"functionSelector":"cb857c80","id":9704,"implemented":true,"kind":"function","modifiers":[],"name":"setBPS","nameLocation":"3606:6:26","nodeType":"FunctionDefinition","parameters":{"id":9622,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9612,"mutability":"mutable","name":"_bpss","nameLocation":"3638:5:26","nodeType":"VariableDeclaration","scope":9704,"src":"3622:21:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint16_$dyn_memory_ptr","typeString":"uint16[]"},"typeName":{"baseType":{"id":9610,"name":"uint16","nodeType":"ElementaryTypeName","src":"3622:6:26","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"id":9611,"nodeType":"ArrayTypeName","src":"3622:8:26","typeDescriptions":{"typeIdentifier":"t_array$_t_uint16_$dyn_storage_ptr","typeString":"uint16[]"}},"visibility":"internal"},{"constant":false,"id":9615,"mutability":"mutable","name":"_flowRateLowerBounds","nameLocation":"3669:20:26","nodeType":"VariableDeclaration","scope":9704,"src":"3653:36:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint96_$dyn_memory_ptr","typeString":"uint96[]"},"typeName":{"baseType":{"id":9613,"name":"uint96","nodeType":"ElementaryTypeName","src":"3653:6:26","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"id":9614,"nodeType":"ArrayTypeName","src":"3653:8:26","typeDescriptions":{"typeIdentifier":"t_array$_t_uint96_$dyn_storage_ptr","typeString":"uint96[]"}},"visibility":"internal"},{"constant":false,"id":9618,"mutability":"mutable","name":"_flowRateUpperBounds","nameLocation":"3715:20:26","nodeType":"VariableDeclaration","scope":9704,"src":"3699:36:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint96_$dyn_memory_ptr","typeString":"uint96[]"},"typeName":{"baseType":{"id":9616,"name":"uint96","nodeType":"ElementaryTypeName","src":"3699:6:26","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"id":9617,"nodeType":"ArrayTypeName","src":"3699:8:26","typeDescriptions":{"typeIdentifier":"t_array$_t_uint96_$dyn_storage_ptr","typeString":"uint96[]"}},"visibility":"internal"},{"constant":false,"id":9621,"mutability":"mutable","name":"_tags","nameLocation":"3762:5:26","nodeType":"VariableDeclaration","scope":9704,"src":"3745:22:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":9619,"name":"uint256","nodeType":"ElementaryTypeName","src":"3745:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9620,"nodeType":"ArrayTypeName","src":"3745:9:26","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"3612:161:26"},"returnParameters":{"id":9623,"nodeType":"ParameterList","parameters":[],"src":"3783:0:26"},"scope":9929,"src":"3597:909:26","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[11437],"body":{"id":9725,"nodeType":"Block","src":"4566:126:26","statements":[{"expression":{"arguments":[{"expression":{"id":9714,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15479,"src":"4610:16:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$15479_$","typeString":"type(library LibAccessControl)"}},"id":9715,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4627:15:26","memberName":"STRATEGIST_ROLE","nodeType":"MemberAccess","referencedDeclaration":15216,"src":"4610:32:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":9711,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15479,"src":"4576:16:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$15479_$","typeString":"type(library LibAccessControl)"}},"id":9713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4593:16:26","memberName":"_requireOnlyRole","nodeType":"MemberAccess","referencedDeclaration":15259,"src":"4576:33:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$__$","typeString":"function (bytes32) view"}},"id":9716,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4576:67:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9717,"nodeType":"ExpressionStatement","src":"4576:67:26"},{"expression":{"arguments":[{"id":9721,"name":"_bps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9706,"src":"4673:4:26","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"id":9722,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9708,"src":"4679:5:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9718,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"4653:10:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$13307_$","typeString":"type(library LibControl)"}},"id":9720,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4664:8:26","memberName":"_setSBPS","nodeType":"MemberAccess","referencedDeclaration":12971,"src":"4653:19:26","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint16_$_t_address_$returns$__$","typeString":"function (uint16,address)"}},"id":9723,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4653:32:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9724,"nodeType":"ExpressionStatement","src":"4653:32:26"}]},"functionSelector":"d99d3b69","id":9726,"implemented":true,"kind":"function","modifiers":[],"name":"setSBPS","nameLocation":"4521:7:26","nodeType":"FunctionDefinition","parameters":{"id":9709,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9706,"mutability":"mutable","name":"_bps","nameLocation":"4536:4:26","nodeType":"VariableDeclaration","scope":9726,"src":"4529:11:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":9705,"name":"uint16","nodeType":"ElementaryTypeName","src":"4529:6:26","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":9708,"mutability":"mutable","name":"_user","nameLocation":"4550:5:26","nodeType":"VariableDeclaration","scope":9726,"src":"4542:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9707,"name":"address","nodeType":"ElementaryTypeName","src":"4542:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4528:28:26"},"returnParameters":{"id":9710,"nodeType":"ParameterList","parameters":[],"src":"4566:0:26"},"scope":9929,"src":"4512:180:26","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[11444],"body":{"id":9738,"nodeType":"Block","src":"4788:62:26","statements":[{"expression":{"arguments":[{"id":9735,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9728,"src":"4831:11:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9733,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"4805:10:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$13307_$","typeString":"type(library LibControl)"}},"id":9734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4816:14:26","memberName":"_getFeeBalance","nodeType":"MemberAccess","referencedDeclaration":12985,"src":"4805:25:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":9736,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4805:38:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9732,"id":9737,"nodeType":"Return","src":"4798:45:26"}]},"functionSelector":"c78f6803","id":9739,"implemented":true,"kind":"function","modifiers":[],"name":"getFeeBalance","nameLocation":"4707:13:26","nodeType":"FunctionDefinition","parameters":{"id":9729,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9728,"mutability":"mutable","name":"_superToken","nameLocation":"4738:11:26","nodeType":"VariableDeclaration","scope":9739,"src":"4730:19:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9727,"name":"address","nodeType":"ElementaryTypeName","src":"4730:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4720:35:26"},"returnParameters":{"id":9732,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9731,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9739,"src":"4779:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9730,"name":"uint256","nodeType":"ElementaryTypeName","src":"4779:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4778:9:26"},"scope":9929,"src":"4698:152:26","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[11459],"body":{"id":9760,"nodeType":"Block","src":"4998:71:26","statements":[{"expression":{"arguments":[{"id":9756,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9741,"src":"5042:11:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9757,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9743,"src":"5055:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9754,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"5015:10:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$13307_$","typeString":"type(library LibControl)"}},"id":9755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5026:15:26","memberName":"_getControlData","nodeType":"MemberAccess","referencedDeclaration":13051,"src":"5015:26:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$returns$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"function (address,uint256) view returns (address,uint256,uint256,uint256)"}},"id":9758,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5015:47:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"tuple(address,uint256,uint256,uint256)"}},"functionReturnParameters":9753,"id":9759,"nodeType":"Return","src":"5008:54:26"}]},"functionSelector":"0b72660d","id":9761,"implemented":true,"kind":"function","modifiers":[],"name":"getControlData","nameLocation":"4865:14:26","nodeType":"FunctionDefinition","parameters":{"id":9744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9741,"mutability":"mutable","name":"_superToken","nameLocation":"4897:11:26","nodeType":"VariableDeclaration","scope":9761,"src":"4889:19:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9740,"name":"address","nodeType":"ElementaryTypeName","src":"4889:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9743,"mutability":"mutable","name":"_nonce","nameLocation":"4926:6:26","nodeType":"VariableDeclaration","scope":9761,"src":"4918:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9742,"name":"uint256","nodeType":"ElementaryTypeName","src":"4918:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4879:59:26"},"returnParameters":{"id":9753,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9746,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9761,"src":"4962:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9745,"name":"address","nodeType":"ElementaryTypeName","src":"4962:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9748,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9761,"src":"4971:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9747,"name":"uint256","nodeType":"ElementaryTypeName","src":"4971:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9750,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9761,"src":"4980:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9749,"name":"uint256","nodeType":"ElementaryTypeName","src":"4980:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9752,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9761,"src":"4989:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9751,"name":"uint256","nodeType":"ElementaryTypeName","src":"4989:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4961:36:26"},"scope":9929,"src":"4856:213:26","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[11466],"body":{"id":9773,"nodeType":"Block","src":"5170:60:26","statements":[{"expression":{"arguments":[{"id":9770,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9763,"src":"5211:11:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9768,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"5187:10:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$13307_$","typeString":"type(library LibControl)"}},"id":9769,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5198:12:26","memberName":"_getNewNonce","nodeType":"MemberAccess","referencedDeclaration":12802,"src":"5187:23:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":9771,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5187:36:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9767,"id":9772,"nodeType":"Return","src":"5180:43:26"}]},"functionSelector":"7f69bcaf","id":9774,"implemented":true,"kind":"function","modifiers":[],"name":"getNewControlNonce","nameLocation":"5084:18:26","nodeType":"FunctionDefinition","parameters":{"id":9764,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9763,"mutability":"mutable","name":"_superToken","nameLocation":"5120:11:26","nodeType":"VariableDeclaration","scope":9774,"src":"5112:19:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9762,"name":"address","nodeType":"ElementaryTypeName","src":"5112:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5102:35:26"},"returnParameters":{"id":9767,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9766,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9774,"src":"5161:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9765,"name":"uint256","nodeType":"ElementaryTypeName","src":"5161:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5160:9:26"},"scope":9929,"src":"5075:155:26","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[11471],"body":{"id":9783,"nodeType":"Block","src":"5301:59:26","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9779,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"5318:10:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$13307_$","typeString":"type(library LibControl)"}},"id":9780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5329:22:26","memberName":"_getMinimumEndDuration","nodeType":"MemberAccess","referencedDeclaration":13061,"src":"5318:33:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":9781,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5318:35:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9778,"id":9782,"nodeType":"Return","src":"5311:42:26"}]},"functionSelector":"6812a173","id":9784,"implemented":true,"kind":"function","modifiers":[],"name":"getMinimumEndDuration","nameLocation":"5245:21:26","nodeType":"FunctionDefinition","parameters":{"id":9775,"nodeType":"ParameterList","parameters":[],"src":"5266:2:26"},"returnParameters":{"id":9778,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9777,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9784,"src":"5292:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9776,"name":"uint256","nodeType":"ElementaryTypeName","src":"5292:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5291:9:26"},"scope":9929,"src":"5236:124:26","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[11476],"body":{"id":9793,"nodeType":"Block","src":"5428:56:26","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9789,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"5445:10:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$13307_$","typeString":"type(library LibControl)"}},"id":9790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5456:19:26","memberName":"_getMinimumLifespan","nodeType":"MemberAccess","referencedDeclaration":13071,"src":"5445:30:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":9791,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5445:32:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9788,"id":9792,"nodeType":"Return","src":"5438:39:26"}]},"functionSelector":"ca70e1d5","id":9794,"implemented":true,"kind":"function","modifiers":[],"name":"getMinimumLifespan","nameLocation":"5375:18:26","nodeType":"FunctionDefinition","parameters":{"id":9785,"nodeType":"ParameterList","parameters":[],"src":"5393:2:26"},"returnParameters":{"id":9788,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9787,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9794,"src":"5419:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9786,"name":"uint256","nodeType":"ElementaryTypeName","src":"5419:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5418:9:26"},"scope":9929,"src":"5366:118:26","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[11481],"body":{"id":9803,"nodeType":"Block","src":"5561:65:26","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9799,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"5578:10:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$13307_$","typeString":"type(library LibControl)"}},"id":9800,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5589:28:26","memberName":"_getSTBufferDurationInSecond","nodeType":"MemberAccess","referencedDeclaration":13081,"src":"5578:39:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":9801,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5578:41:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9798,"id":9802,"nodeType":"Return","src":"5571:48:26"}]},"functionSelector":"7ea195ad","id":9804,"implemented":true,"kind":"function","modifiers":[],"name":"getSTBufferDurationInSecond","nameLocation":"5499:27:26","nodeType":"FunctionDefinition","parameters":{"id":9795,"nodeType":"ParameterList","parameters":[],"src":"5526:2:26"},"returnParameters":{"id":9798,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9797,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9804,"src":"5552:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9796,"name":"uint256","nodeType":"ElementaryTypeName","src":"5552:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5551:9:26"},"scope":9929,"src":"5490:136:26","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[11488],"body":{"id":9816,"nodeType":"Block","src":"5728:71:26","statements":[{"expression":{"arguments":[{"id":9813,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9806,"src":"5780:11:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9811,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"5745:10:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$13307_$","typeString":"type(library LibControl)"}},"id":9812,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5756:23:26","memberName":"_isSuperTokensSupported","nodeType":"MemberAccess","referencedDeclaration":13095,"src":"5745:34:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":9814,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5745:47:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":9810,"id":9815,"nodeType":"Return","src":"5738:54:26"}]},"functionSelector":"acff4744","id":9817,"implemented":true,"kind":"function","modifiers":[],"name":"isSuperTokensSupported","nameLocation":"5641:22:26","nodeType":"FunctionDefinition","parameters":{"id":9807,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9806,"mutability":"mutable","name":"_superToken","nameLocation":"5681:11:26","nodeType":"VariableDeclaration","scope":9817,"src":"5673:19:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9805,"name":"address","nodeType":"ElementaryTypeName","src":"5673:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5663:35:26"},"returnParameters":{"id":9810,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9809,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9817,"src":"5722:4:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9808,"name":"bool","nodeType":"ElementaryTypeName","src":"5722:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5721:6:26"},"scope":9929,"src":"5632:167:26","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[11493],"body":{"id":9826,"nodeType":"Block","src":"5858:50:26","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9822,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"5875:10:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$13307_$","typeString":"type(library LibControl)"}},"id":9823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5886:13:26","memberName":"_isBPSEnabled","nodeType":"MemberAccess","referencedDeclaration":13105,"src":"5875:24:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":9824,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5875:26:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":9821,"id":9825,"nodeType":"Return","src":"5868:33:26"}]},"functionSelector":"a86c8c7c","id":9827,"implemented":true,"kind":"function","modifiers":[],"name":"isBPSEnabled","nameLocation":"5814:12:26","nodeType":"FunctionDefinition","parameters":{"id":9818,"nodeType":"ParameterList","parameters":[],"src":"5826:2:26"},"returnParameters":{"id":9821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9820,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9827,"src":"5852:4:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9819,"name":"bool","nodeType":"ElementaryTypeName","src":"5852:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5851:6:26"},"scope":9929,"src":"5805:103:26","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[11498],"body":{"id":9836,"nodeType":"Block","src":"5968:48:26","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9832,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"5985:10:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$13307_$","typeString":"type(library LibControl)"}},"id":9833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5996:11:26","memberName":"_getBPSSize","nodeType":"MemberAccess","referencedDeclaration":13117,"src":"5985:22:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":9834,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5985:24:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9831,"id":9835,"nodeType":"Return","src":"5978:31:26"}]},"functionSelector":"a8771ab9","id":9837,"implemented":true,"kind":"function","modifiers":[],"name":"getBPSSize","nameLocation":"5923:10:26","nodeType":"FunctionDefinition","parameters":{"id":9828,"nodeType":"ParameterList","parameters":[],"src":"5933:2:26"},"returnParameters":{"id":9831,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9830,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9837,"src":"5959:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9829,"name":"uint256","nodeType":"ElementaryTypeName","src":"5959:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5958:9:26"},"scope":9929,"src":"5914:102:26","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[11509],"body":{"id":9853,"nodeType":"Block","src":"6117:52:26","statements":[{"expression":{"arguments":[{"id":9850,"name":"_tag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9839,"src":"6157:4:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9848,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"6134:10:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$13307_$","typeString":"type(library LibControl)"}},"id":9849,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6145:11:26","memberName":"_getBPSData","nodeType":"MemberAccess","referencedDeclaration":13180,"src":"6134:22:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint16_$_t_uint96_$_t_uint96_$","typeString":"function (uint256) view returns (uint16,uint96,uint96)"}},"id":9851,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6134:28:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint16_$_t_uint96_$_t_uint96_$","typeString":"tuple(uint16,uint96,uint96)"}},"functionReturnParameters":9847,"id":9852,"nodeType":"Return","src":"6127:35:26"}]},"functionSelector":"6ab1c734","id":9854,"implemented":true,"kind":"function","modifiers":[],"name":"getBPSData","nameLocation":"6031:10:26","nodeType":"FunctionDefinition","parameters":{"id":9840,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9839,"mutability":"mutable","name":"_tag","nameLocation":"6059:4:26","nodeType":"VariableDeclaration","scope":9854,"src":"6051:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9838,"name":"uint256","nodeType":"ElementaryTypeName","src":"6051:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6041:28:26"},"returnParameters":{"id":9847,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9842,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9854,"src":"6093:6:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":9841,"name":"uint16","nodeType":"ElementaryTypeName","src":"6093:6:26","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":9844,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9854,"src":"6101:6:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":9843,"name":"uint96","nodeType":"ElementaryTypeName","src":"6101:6:26","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":9846,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9854,"src":"6109:6:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":9845,"name":"uint96","nodeType":"ElementaryTypeName","src":"6109:6:26","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"src":"6092:24:26"},"scope":9929,"src":"6022:147:26","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[11516],"body":{"id":9866,"nodeType":"Block","src":"6238:50:26","statements":[{"expression":{"arguments":[{"id":9863,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9856,"src":"6275:5:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9861,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"6255:10:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$13307_$","typeString":"type(library LibControl)"}},"id":9862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6266:8:26","memberName":"_getSBPS","nodeType":"MemberAccess","referencedDeclaration":13194,"src":"6255:19:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint16_$","typeString":"function (address) view returns (uint16)"}},"id":9864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6255:26:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"functionReturnParameters":9860,"id":9865,"nodeType":"Return","src":"6248:33:26"}]},"functionSelector":"2357f2cf","id":9867,"implemented":true,"kind":"function","modifiers":[],"name":"getSBPS","nameLocation":"6184:7:26","nodeType":"FunctionDefinition","parameters":{"id":9857,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9856,"mutability":"mutable","name":"_user","nameLocation":"6200:5:26","nodeType":"VariableDeclaration","scope":9867,"src":"6192:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9855,"name":"address","nodeType":"ElementaryTypeName","src":"6192:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6191:15:26"},"returnParameters":{"id":9860,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9859,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9867,"src":"6230:6:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":9858,"name":"uint16","nodeType":"ElementaryTypeName","src":"6230:6:26","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"6229:8:26"},"scope":9929,"src":"6175:113:26","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[11525],"body":{"id":9882,"nodeType":"Block","src":"6423:87:26","statements":[{"expression":{"arguments":[{"id":9878,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9869,"src":"6477:11:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9879,"name":"_newFlowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9871,"src":"6490:12:26","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_int96","typeString":"int96"}],"expression":{"id":9876,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"6440:10:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$13307_$","typeString":"type(library LibControl)"}},"id":9877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6451:25:26","memberName":"_getNewBufferedAppBalance","nodeType":"MemberAccess","referencedDeclaration":13245,"src":"6440:36:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_int96_$returns$_t_uint256_$","typeString":"function (address,int96) view returns (uint256)"}},"id":9880,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6440:63:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9875,"id":9881,"nodeType":"Return","src":"6433:70:26"}]},"functionSelector":"4ee43e46","id":9883,"implemented":true,"kind":"function","modifiers":[],"name":"getNewBufferedAppBalance","nameLocation":"6303:24:26","nodeType":"FunctionDefinition","parameters":{"id":9872,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9869,"mutability":"mutable","name":"_superToken","nameLocation":"6345:11:26","nodeType":"VariableDeclaration","scope":9883,"src":"6337:19:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9868,"name":"address","nodeType":"ElementaryTypeName","src":"6337:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9871,"mutability":"mutable","name":"_newFlowRate","nameLocation":"6372:12:26","nodeType":"VariableDeclaration","scope":9883,"src":"6366:18:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":9870,"name":"int96","nodeType":"ElementaryTypeName","src":"6366:5:26","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"6327:63:26"},"returnParameters":{"id":9875,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9874,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9883,"src":"6414:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9873,"name":"uint256","nodeType":"ElementaryTypeName","src":"6414:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6413:9:26"},"scope":9929,"src":"6294:216:26","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[11534],"body":{"id":9898,"nodeType":"Block","src":"6648:83:26","statements":[{"expression":{"arguments":[{"id":9894,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9885,"src":"6698:11:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9895,"name":"_newFlowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9887,"src":"6711:12:26","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_int96","typeString":"int96"}],"expression":{"id":9892,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"6665:10:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$13307_$","typeString":"type(library LibControl)"}},"id":9893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6676:21:26","memberName":"_isNewFlowRateAllowed","nodeType":"MemberAccess","referencedDeclaration":13274,"src":"6665:32:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_int96_$returns$_t_bool_$","typeString":"function (address,int96) view returns (bool)"}},"id":9896,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6665:59:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":9891,"id":9897,"nodeType":"Return","src":"6658:66:26"}]},"functionSelector":"c467cddc","id":9899,"implemented":true,"kind":"function","modifiers":[],"name":"isNewFlowRateAllowed","nameLocation":"6535:20:26","nodeType":"FunctionDefinition","parameters":{"id":9888,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9885,"mutability":"mutable","name":"_superToken","nameLocation":"6573:11:26","nodeType":"VariableDeclaration","scope":9899,"src":"6565:19:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9884,"name":"address","nodeType":"ElementaryTypeName","src":"6565:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9887,"mutability":"mutable","name":"_newFlowRate","nameLocation":"6600:12:26","nodeType":"VariableDeclaration","scope":9899,"src":"6594:18:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":9886,"name":"int96","nodeType":"ElementaryTypeName","src":"6594:5:26","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"6555:63:26"},"returnParameters":{"id":9891,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9890,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9899,"src":"6642:4:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9889,"name":"bool","nodeType":"ElementaryTypeName","src":"6642:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6641:6:26"},"scope":9929,"src":"6526:205:26","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[11543],"body":{"id":9914,"nodeType":"Block","src":"6859:68:26","statements":[{"expression":{"arguments":[{"id":9910,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9901,"src":"6901:5:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9911,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9903,"src":"6908:11:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9908,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"6876:10:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$13307_$","typeString":"type(library LibControl)"}},"id":9909,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6887:13:26","memberName":"_getAssetUser","nodeType":"MemberAccess","referencedDeclaration":13292,"src":"6876:24:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":9912,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6876:44:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9907,"id":9913,"nodeType":"Return","src":"6869:51:26"}]},"functionSelector":"be835747","id":9915,"implemented":true,"kind":"function","modifiers":[],"name":"getAssetUser","nameLocation":"6756:12:26","nodeType":"FunctionDefinition","parameters":{"id":9904,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9901,"mutability":"mutable","name":"_user","nameLocation":"6786:5:26","nodeType":"VariableDeclaration","scope":9915,"src":"6778:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9900,"name":"address","nodeType":"ElementaryTypeName","src":"6778:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9903,"mutability":"mutable","name":"_superToken","nameLocation":"6809:11:26","nodeType":"VariableDeclaration","scope":9915,"src":"6801:19:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9902,"name":"address","nodeType":"ElementaryTypeName","src":"6801:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6768:58:26"},"returnParameters":{"id":9907,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9906,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9915,"src":"6850:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9905,"name":"uint256","nodeType":"ElementaryTypeName","src":"6850:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6849:9:26"},"scope":9929,"src":"6747:180:26","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[11550],"body":{"id":9927,"nodeType":"Block","src":"7023:62:26","statements":[{"expression":{"arguments":[{"id":9924,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9917,"src":"7066:11:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9922,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"7040:10:26","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$13307_$","typeString":"type(library LibControl)"}},"id":9923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7051:14:26","memberName":"_getAssetTotal","nodeType":"MemberAccess","referencedDeclaration":13306,"src":"7040:25:26","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":9925,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7040:38:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9921,"id":9926,"nodeType":"Return","src":"7033:45:26"}]},"functionSelector":"b2419083","id":9928,"implemented":true,"kind":"function","modifiers":[],"name":"getAssetTotal","nameLocation":"6942:13:26","nodeType":"FunctionDefinition","parameters":{"id":9918,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9917,"mutability":"mutable","name":"_superToken","nameLocation":"6973:11:26","nodeType":"VariableDeclaration","scope":9928,"src":"6965:19:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9916,"name":"address","nodeType":"ElementaryTypeName","src":"6965:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6955:35:26"},"returnParameters":{"id":9921,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9920,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":9928,"src":"7014:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9919,"name":"uint256","nodeType":"ElementaryTypeName","src":"7014:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7013:9:26"},"scope":9929,"src":"6933:152:26","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":9930,"src":"391:6696:26","usedErrors":[12323,12325,12327,12331,12333,12335,12337,12341]}],"src":"37:7051:26"},"id":26},"contracts/facets/core/Flow.sol":{"ast":{"absolutePath":"contracts/facets/core/Flow.sol","exportedSymbols":{"ArrayLengthNotMatch":[12325],"Flow":[10610],"IAutomate":[16314],"IFlow":[11681],"IOpsProxyFactory":[16352],"ISuperToken":[7015],"ITaskTreasuryUpgradable":[16342],"LibAutomate":[12310],"LibControl":[13307],"LibFlow":[14322],"LibSession":[14923],"Module":[16268],"ModuleData":[16276],"SessionNotStarted":[14337],"SuperTokenV1Library":[5145],"TooEarly":[9950]},"id":10611,"license":"BUSL-1.1","nodeType":"SourceUnit","nodes":[{"id":9931,"literals":["solidity","^","0.8",".9"],"nodeType":"PragmaDirective","src":"37:23:27"},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol","file":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol","id":9933,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10611,"sourceUnit":7668,"src":"62:115:27","symbolAliases":[{"foreign":{"id":9932,"name":"ISuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7015,"src":"70:11:27","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol","file":"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol","id":9935,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10611,"sourceUnit":5146,"src":"178:114:27","symbolAliases":[{"foreign":{"id":9934,"name":"SuperTokenV1Library","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5145,"src":"186:19:27","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/libraries/core/LibAutomate.sol","file":"../../libraries/core/LibAutomate.sol","id":9937,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10611,"sourceUnit":12311,"src":"294:65:27","symbolAliases":[{"foreign":{"id":9936,"name":"LibAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12310,"src":"302:11:27","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/libraries/core/LibControl.sol","file":"../../libraries/core/LibControl.sol","id":9940,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10611,"sourceUnit":13308,"src":"360:84:27","symbolAliases":[{"foreign":{"id":9938,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"368:10:27","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":9939,"name":"ArrayLengthNotMatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12325,"src":"380:19:27","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/libraries/core/LibSession.sol","file":"../../libraries/core/LibSession.sol","id":9943,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10611,"sourceUnit":14924,"src":"445:82:27","symbolAliases":[{"foreign":{"id":9941,"name":"LibSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14923,"src":"453:10:27","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":9942,"name":"SessionNotStarted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14337,"src":"465:17:27","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/libraries/core/LibFlow.sol","file":"../../libraries/core/LibFlow.sol","id":9945,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10611,"sourceUnit":14323,"src":"528:57:27","symbolAliases":[{"foreign":{"id":9944,"name":"LibFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14322,"src":"536:7:27","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/core/IFlow.sol","file":"../../interfaces/core/IFlow.sol","id":9947,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10611,"sourceUnit":11682,"src":"586:54:27","symbolAliases":[{"foreign":{"id":9946,"name":"IFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11681,"src":"594:5:27","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/services/gelato/Types.sol","file":"../../services/gelato/Types.sol","id":9948,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10611,"sourceUnit":16353,"src":"642:41:27","symbolAliases":[],"unitAlias":""},{"errorSelector":"085de625","id":9950,"name":"TooEarly","nameLocation":"691:8:27","nodeType":"ErrorDefinition","parameters":{"id":9949,"nodeType":"ParameterList","parameters":[],"src":"699:2:27"},"src":"685:17:27"},{"abstract":false,"baseContracts":[{"baseName":{"id":9951,"name":"IFlow","nameLocations":["721:5:27"],"nodeType":"IdentifierPath","referencedDeclaration":11681,"src":"721:5:27"},"id":9952,"nodeType":"InheritanceSpecifier","src":"721:5:27"}],"canonicalName":"Flow","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":10610,"linearizedBaseContracts":[10610,11681],"name":"Flow","nameLocation":"713:4:27","nodeType":"ContractDefinition","nodes":[{"global":false,"id":9956,"libraryName":{"id":9953,"name":"SuperTokenV1Library","nameLocations":["739:19:27"],"nodeType":"IdentifierPath","referencedDeclaration":5145,"src":"739:19:27"},"nodeType":"UsingForDirective","src":"733:42:27","typeName":{"id":9955,"nodeType":"UserDefinedTypeName","pathNode":{"id":9954,"name":"ISuperToken","nameLocations":["763:11:27"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"763:11:27"},"referencedDeclaration":7015,"src":"763:11:27","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}},{"baseFunctions":[11562],"body":{"id":10287,"nodeType":"Block","src":"1326:3578:27","statements":[{"expression":{"arguments":[{"id":9969,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9961,"src":"1365:11:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9966,"name":"LibFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14322,"src":"1336:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibFlow_$14322_$","typeString":"type(library LibFlow)"}},"id":9968,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1344:20:27","memberName":"_requireNoActiveFlow","nodeType":"MemberAccess","referencedDeclaration":13513,"src":"1336:28:27","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":9970,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1336:41:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9971,"nodeType":"ExpressionStatement","src":"1336:41:27"},{"expression":{"arguments":[{"expression":{"id":9975,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1567:3:27","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1571:6:27","memberName":"sender","nodeType":"MemberAccess","src":"1567:10:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9977,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9961,"src":"1579:11:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9972,"name":"LibFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14322,"src":"1538:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibFlow_$14322_$","typeString":"type(library LibFlow)"}},"id":9974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1546:20:27","memberName":"_setRemainingBalance","nodeType":"MemberAccess","referencedDeclaration":13596,"src":"1538:28:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":9978,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1538:53:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9979,"nodeType":"ExpressionStatement","src":"1538:53:27"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9980,"name":"LibAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12310,"src":"1616:11:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAutomate_$12310_$","typeString":"type(library LibAutomate)"}},"id":9982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1628:34:27","memberName":"_requireSufficientAppGelatoBalance","nodeType":"MemberAccess","referencedDeclaration":12143,"src":"1616:46:27","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":9983,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1616:48:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9984,"nodeType":"ExpressionStatement","src":"1616:48:27"},{"expression":{"arguments":[{"id":9988,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9961,"src":"1713:11:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9985,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"1674:10:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$13307_$","typeString":"type(library LibControl)"}},"id":9987,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1685:27:27","memberName":"_requireSuperTokenSupported","nodeType":"MemberAccess","referencedDeclaration":12753,"src":"1674:38:27","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":9989,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1674:51:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9990,"nodeType":"ExpressionStatement","src":"1674:51:27"},{"assignments":[9995],"declarations":[{"constant":false,"id":9995,"mutability":"mutable","name":"sSession","nameLocation":"1769:8:27","nodeType":"VariableDeclaration","scope":10287,"src":"1735:42:27","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$14384_storage_ptr","typeString":"struct LibSession.StorageSession"},"typeName":{"id":9994,"nodeType":"UserDefinedTypeName","pathNode":{"id":9993,"name":"LibSession.StorageSession","nameLocations":["1735:10:27","1746:14:27"],"nodeType":"IdentifierPath","referencedDeclaration":14384,"src":"1735:25:27"},"referencedDeclaration":14384,"src":"1735:25:27","typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$14384_storage_ptr","typeString":"struct LibSession.StorageSession"}},"visibility":"internal"}],"id":9999,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9996,"name":"LibSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14923,"src":"1780:10:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibSession_$14923_$","typeString":"type(library LibSession)"}},"id":9997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1804:15:27","memberName":"_storageSession","nodeType":"MemberAccess","referencedDeclaration":14396,"src":"1780:39:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageSession_$14384_storage_ptr_$","typeString":"function () pure returns (struct LibSession.StorageSession storage pointer)"}},"id":9998,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1780:41:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$14384_storage_ptr","typeString":"struct LibSession.StorageSession storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"1735:86:27"},{"assignments":[10001],"declarations":[{"constant":false,"id":10001,"mutability":"mutable","name":"activeSessionNonce","nameLocation":"1839:18:27","nodeType":"VariableDeclaration","scope":10287,"src":"1831:26:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10000,"name":"uint256","nodeType":"ElementaryTypeName","src":"1831:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10007,"initialValue":{"arguments":[{"id":10004,"name":"_receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9959,"src":"1901:9:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10005,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9961,"src":"1924:11:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10002,"name":"LibSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14923,"src":"1860:10:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibSession_$14923_$","typeString":"type(library LibSession)"}},"id":10003,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1871:16:27","memberName":"_getCurrentNonce","nodeType":"MemberAccess","referencedDeclaration":14729,"src":"1860:27:27","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":10006,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1860:85:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1831:114:27"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"id":10008,"name":"sSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9995,"src":"1973:8:27","typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$14384_storage_ptr","typeString":"struct LibSession.StorageSession storage pointer"}},"id":10009,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1995:13:27","memberName":"sessionRecord","nodeType":"MemberAccess","referencedDeclaration":14378,"src":"1973:35:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_SessionRecord_$14363_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibSession.SessionRecord storage ref)))"}},"id":10011,"indexExpression":{"id":10010,"name":"_receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9959,"src":"2009:9:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1973:46:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_SessionRecord_$14363_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibSession.SessionRecord storage ref))"}},"id":10013,"indexExpression":{"id":10012,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9961,"src":"2020:11:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1973:59:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_SessionRecord_$14363_storage_$","typeString":"mapping(uint256 => struct LibSession.SessionRecord storage ref)"}},"id":10015,"indexExpression":{"id":10014,"name":"activeSessionNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10001,"src":"2033:18:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1973:79:27","typeDescriptions":{"typeIdentifier":"t_struct$_SessionRecord_$14363_storage","typeString":"struct LibSession.SessionRecord storage ref"}},"id":10016,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2070:14:27","memberName":"timestampStart","nodeType":"MemberAccess","referencedDeclaration":14360,"src":"1973:111:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":10017,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2088:1:27","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1973:116:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10022,"nodeType":"IfStatement","src":"1956:170:27","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":10019,"name":"SessionNotStarted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14337,"src":"2107:17:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":10020,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2107:19:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10021,"nodeType":"RevertStatement","src":"2100:26:27"}},{"assignments":[10027],"declarations":[{"constant":false,"id":10027,"mutability":"mutable","name":"sFlow","nameLocation":"2165:5:27","nodeType":"VariableDeclaration","scope":10287,"src":"2137:33:27","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$13382_storage_ptr","typeString":"struct LibFlow.StorageFlow"},"typeName":{"id":10026,"nodeType":"UserDefinedTypeName","pathNode":{"id":10025,"name":"LibFlow.StorageFlow","nameLocations":["2137:7:27","2145:11:27"],"nodeType":"IdentifierPath","referencedDeclaration":13382,"src":"2137:19:27"},"referencedDeclaration":13382,"src":"2137:19:27","typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$13382_storage_ptr","typeString":"struct LibFlow.StorageFlow"}},"visibility":"internal"}],"id":10031,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10028,"name":"LibFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14322,"src":"2173:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibFlow_$14322_$","typeString":"type(library LibFlow)"}},"id":10029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2181:12:27","memberName":"_storageFlow","nodeType":"MemberAccess","referencedDeclaration":13394,"src":"2173:20:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$13382_storage_ptr_$","typeString":"function () pure returns (struct LibFlow.StorageFlow storage pointer)"}},"id":10030,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2173:22:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$13382_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2137:58:27"},{"assignments":[10033],"declarations":[{"constant":false,"id":10033,"mutability":"mutable","name":"flowRate","nameLocation":"2211:8:27","nodeType":"VariableDeclaration","scope":10287,"src":"2205:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":10032,"name":"int96","nodeType":"ElementaryTypeName","src":"2205:5:27","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"id":10043,"initialValue":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"id":10034,"name":"sSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9995,"src":"2222:8:27","typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$14384_storage_ptr","typeString":"struct LibSession.StorageSession storage pointer"}},"id":10035,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2240:13:27","memberName":"sessionRecord","nodeType":"MemberAccess","referencedDeclaration":14378,"src":"2222:31:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_SessionRecord_$14363_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibSession.SessionRecord storage ref)))"}},"id":10037,"indexExpression":{"id":10036,"name":"_receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9959,"src":"2254:9:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2222:42:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_SessionRecord_$14363_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibSession.SessionRecord storage ref))"}},"id":10039,"indexExpression":{"id":10038,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9961,"src":"2265:11:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2222:55:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_SessionRecord_$14363_storage_$","typeString":"mapping(uint256 => struct LibSession.SessionRecord storage ref)"}},"id":10041,"indexExpression":{"id":10040,"name":"activeSessionNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10001,"src":"2278:18:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2222:75:27","typeDescriptions":{"typeIdentifier":"t_struct$_SessionRecord_$14363_storage","typeString":"struct LibSession.SessionRecord storage ref"}},"id":10042,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2311:17:27","memberName":"effectiveFlowRate","nodeType":"MemberAccess","referencedDeclaration":14356,"src":"2222:106:27","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"VariableDeclarationStatement","src":"2205:123:27"},{"expression":{"arguments":[{"id":10047,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9961,"src":"2380:11:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10048,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10033,"src":"2393:8:27","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_int96","typeString":"int96"}],"expression":{"id":10044,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"2338:10:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$13307_$","typeString":"type(library LibControl)"}},"id":10046,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2349:30:27","memberName":"_requireSufficientAppSTBalance","nodeType":"MemberAccess","referencedDeclaration":12771,"src":"2338:41:27","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_int96_$returns$__$","typeString":"function (address,int96) view"}},"id":10049,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2338:64:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10050,"nodeType":"ExpressionStatement","src":"2338:64:27"},{"assignments":[10052],"declarations":[{"constant":false,"id":10052,"mutability":"mutable","name":"scheduledLifespan","nameLocation":"2420:17:27","nodeType":"VariableDeclaration","scope":10287,"src":"2412:25:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10051,"name":"uint256","nodeType":"ElementaryTypeName","src":"2412:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10061,"initialValue":{"arguments":[{"expression":{"id":10055,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2483:3:27","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2487:6:27","memberName":"sender","nodeType":"MemberAccess","src":"2483:10:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10057,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9961,"src":"2507:11:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10058,"name":"_lifespan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9963,"src":"2532:9:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10059,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10033,"src":"2555:8:27","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_int96","typeString":"int96"}],"expression":{"id":10053,"name":"LibFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14322,"src":"2440:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibFlow_$14322_$","typeString":"type(library LibFlow)"}},"id":10054,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2448:21:27","memberName":"_getScheduledLifespan","nodeType":"MemberAccess","referencedDeclaration":13710,"src":"2440:29:27","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$_t_int96_$returns$_t_uint256_$","typeString":"function (address,address,uint256,int96) view returns (uint256)"}},"id":10060,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2440:133:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2412:161:27"},{"assignments":[10063],"declarations":[{"constant":false,"id":10063,"mutability":"mutable","name":"newFlowNonce","nameLocation":"2670:12:27","nodeType":"VariableDeclaration","scope":10287,"src":"2662:20:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10062,"name":"uint256","nodeType":"ElementaryTypeName","src":"2662:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10070,"initialValue":{"arguments":[{"expression":{"id":10066,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2706:3:27","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2710:6:27","memberName":"sender","nodeType":"MemberAccess","src":"2706:10:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10068,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9961,"src":"2718:11:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10064,"name":"LibFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14322,"src":"2685:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibFlow_$14322_$","typeString":"type(library LibFlow)"}},"id":10065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2693:12:27","memberName":"_getNewNonce","nodeType":"MemberAccess","referencedDeclaration":14008,"src":"2685:20:27","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":10069,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2685:45:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2662:68:27"},{"expression":{"id":10083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"id":10071,"name":"sFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10027,"src":"2741:5:27","typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$13382_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":10077,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2756:10:27","memberName":"flowRecord","nodeType":"MemberAccess","referencedDeclaration":13371,"src":"2741:25:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref)))"}},"id":10078,"indexExpression":{"expression":{"id":10073,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2767:3:27","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2771:6:27","memberName":"sender","nodeType":"MemberAccess","src":"2767:10:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2741:37:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref))"}},"id":10079,"indexExpression":{"id":10075,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9961,"src":"2779:11:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2741:50:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$","typeString":"mapping(uint256 => struct LibFlow.FlowRecord storage ref)"}},"id":10080,"indexExpression":{"id":10076,"name":"newFlowNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10063,"src":"2792:12:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2741:64:27","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$13356_storage","typeString":"struct LibFlow.FlowRecord storage ref"}},"id":10081,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2806:8:27","memberName":"receiver","nodeType":"MemberAccess","referencedDeclaration":13345,"src":"2741:73:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10082,"name":"_receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9959,"src":"2817:9:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2741:85:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10084,"nodeType":"ExpressionStatement","src":"2741:85:27"},{"expression":{"id":10097,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"id":10085,"name":"sFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10027,"src":"2836:5:27","typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$13382_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":10091,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2851:10:27","memberName":"flowRecord","nodeType":"MemberAccess","referencedDeclaration":13371,"src":"2836:25:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref)))"}},"id":10092,"indexExpression":{"expression":{"id":10087,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2862:3:27","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10088,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2866:6:27","memberName":"sender","nodeType":"MemberAccess","src":"2862:10:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2836:37:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref))"}},"id":10093,"indexExpression":{"id":10089,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9961,"src":"2874:11:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2836:50:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$","typeString":"mapping(uint256 => struct LibFlow.FlowRecord storage ref)"}},"id":10094,"indexExpression":{"id":10090,"name":"newFlowNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10063,"src":"2887:12:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2836:64:27","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$13356_storage","typeString":"struct LibFlow.FlowRecord storage ref"}},"id":10095,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2914:12:27","memberName":"sessionNonce","nodeType":"MemberAccess","referencedDeclaration":13347,"src":"2836:90:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10096,"name":"activeSessionNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10001,"src":"2929:18:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2836:111:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10098,"nodeType":"ExpressionStatement","src":"2836:111:27"},{"assignments":[10103],"declarations":[{"constant":false,"id":10103,"mutability":"mutable","name":"sControl","nameLocation":"2992:8:27","nodeType":"VariableDeclaration","scope":10287,"src":"2958:42:27","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl"},"typeName":{"id":10102,"nodeType":"UserDefinedTypeName","pathNode":{"id":10101,"name":"LibControl.StorageControl","nameLocations":["2958:10:27","2969:14:27"],"nodeType":"IdentifierPath","referencedDeclaration":12418,"src":"2958:25:27"},"referencedDeclaration":12418,"src":"2958:25:27","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl"}},"visibility":"internal"}],"id":10107,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10104,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"3003:10:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$13307_$","typeString":"type(library LibControl)"}},"id":10105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3027:15:27","memberName":"_storageControl","nodeType":"MemberAccess","referencedDeclaration":12430,"src":"3003:39:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$12418_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":10106,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3003:41:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2958:86:27"},{"assignments":[10109],"declarations":[{"constant":false,"id":10109,"mutability":"mutable","name":"newControlNonce","nameLocation":"3062:15:27","nodeType":"VariableDeclaration","scope":10287,"src":"3054:23:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10108,"name":"uint256","nodeType":"ElementaryTypeName","src":"3054:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10114,"initialValue":{"baseExpression":{"expression":{"id":10110,"name":"sControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10103,"src":"3080:8:27","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":10111,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3089:12:27","memberName":"controlNonce","nodeType":"MemberAccess","referencedDeclaration":12396,"src":"3080:21:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10113,"indexExpression":{"id":10112,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9961,"src":"3102:11:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3080:34:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3054:60:27"},{"expression":{"id":10124,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"baseExpression":{"expression":{"id":10115,"name":"sControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10103,"src":"3124:8:27","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":10119,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3142:13:27","memberName":"controlRecord","nodeType":"MemberAccess","referencedDeclaration":12403,"src":"3124:31:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_ControlRecord_$12369_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibControl.ControlRecord storage ref))"}},"id":10120,"indexExpression":{"id":10117,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9961,"src":"3156:11:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3124:44:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ControlRecord_$12369_storage_$","typeString":"mapping(uint256 => struct LibControl.ControlRecord storage ref)"}},"id":10121,"indexExpression":{"id":10118,"name":"newControlNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10109,"src":"3169:15:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3124:61:27","typeDescriptions":{"typeIdentifier":"t_struct$_ControlRecord_$12369_storage","typeString":"struct LibControl.ControlRecord storage ref"}},"id":10122,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3186:8:27","memberName":"receiver","nodeType":"MemberAccess","referencedDeclaration":12362,"src":"3124:70:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10123,"name":"_receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9959,"src":"3197:9:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3124:82:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10125,"nodeType":"ExpressionStatement","src":"3124:82:27"},{"expression":{"id":10135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"baseExpression":{"expression":{"id":10126,"name":"sControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10103,"src":"3216:8:27","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":10130,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3234:13:27","memberName":"controlRecord","nodeType":"MemberAccess","referencedDeclaration":12403,"src":"3216:31:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_ControlRecord_$12369_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibControl.ControlRecord storage ref))"}},"id":10131,"indexExpression":{"id":10128,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9961,"src":"3248:11:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3216:44:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ControlRecord_$12369_storage_$","typeString":"mapping(uint256 => struct LibControl.ControlRecord storage ref)"}},"id":10132,"indexExpression":{"id":10129,"name":"newControlNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10109,"src":"3261:15:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3216:61:27","typeDescriptions":{"typeIdentifier":"t_struct$_ControlRecord_$12369_storage","typeString":"struct LibControl.ControlRecord storage ref"}},"id":10133,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3291:12:27","memberName":"sessionNonce","nodeType":"MemberAccess","referencedDeclaration":12364,"src":"3216:87:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10134,"name":"activeSessionNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10001,"src":"3306:18:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3216:108:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10136,"nodeType":"ExpressionStatement","src":"3216:108:27"},{"expression":{"id":10147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"baseExpression":{"expression":{"id":10137,"name":"sControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10103,"src":"3334:8:27","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":10141,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3352:13:27","memberName":"controlRecord","nodeType":"MemberAccess","referencedDeclaration":12403,"src":"3334:31:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_ControlRecord_$12369_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibControl.ControlRecord storage ref))"}},"id":10142,"indexExpression":{"id":10139,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9961,"src":"3366:11:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3334:44:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ControlRecord_$12369_storage_$","typeString":"mapping(uint256 => struct LibControl.ControlRecord storage ref)"}},"id":10143,"indexExpression":{"id":10140,"name":"newControlNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10109,"src":"3379:15:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3334:61:27","typeDescriptions":{"typeIdentifier":"t_struct$_ControlRecord_$12369_storage","typeString":"struct LibControl.ControlRecord storage ref"}},"id":10144,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3396:17:27","memberName":"timestampIncrease","nodeType":"MemberAccess","referencedDeclaration":12366,"src":"3334:79:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":10145,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"3416:5:27","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":10146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3435:9:27","memberName":"timestamp","nodeType":"MemberAccess","src":"3416:28:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3334:110:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10148,"nodeType":"ExpressionStatement","src":"3334:110:27"},{"expression":{"id":10161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"id":10149,"name":"sFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10027,"src":"3454:5:27","typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$13382_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":10155,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3469:10:27","memberName":"flowRecord","nodeType":"MemberAccess","referencedDeclaration":13371,"src":"3454:25:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref)))"}},"id":10156,"indexExpression":{"expression":{"id":10151,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3480:3:27","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10152,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3484:6:27","memberName":"sender","nodeType":"MemberAccess","src":"3480:10:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3454:37:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref))"}},"id":10157,"indexExpression":{"id":10153,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9961,"src":"3492:11:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3454:50:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$","typeString":"mapping(uint256 => struct LibFlow.FlowRecord storage ref)"}},"id":10158,"indexExpression":{"id":10154,"name":"newFlowNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10063,"src":"3505:12:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3454:64:27","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$13356_storage","typeString":"struct LibFlow.FlowRecord storage ref"}},"id":10159,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3532:12:27","memberName":"controlNonce","nodeType":"MemberAccess","referencedDeclaration":13343,"src":"3454:90:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10160,"name":"newControlNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10109,"src":"3547:15:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3454:108:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10162,"nodeType":"ExpressionStatement","src":"3454:108:27"},{"expression":{"arguments":[{"id":10166,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9961,"src":"3645:11:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":10167,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3670:3:27","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3674:6:27","memberName":"sender","nodeType":"MemberAccess","src":"3670:10:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10169,"name":"_receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9959,"src":"3694:9:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10170,"name":"newFlowNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10063,"src":"3717:12:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10171,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10033,"src":"3743:8:27","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_int96","typeString":"int96"}],"expression":{"id":10163,"name":"LibFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14322,"src":"3610:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibFlow_$14322_$","typeString":"type(library LibFlow)"}},"id":10165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3618:13:27","memberName":"_increaseFlow","nodeType":"MemberAccess","referencedDeclaration":14221,"src":"3610:21:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_int96_$returns$__$","typeString":"function (address,address,address,uint256,int96)"}},"id":10172,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3610:151:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10173,"nodeType":"ExpressionStatement","src":"3610:151:27"},{"assignments":[10176],"declarations":[{"constant":false,"id":10176,"mutability":"mutable","name":"moduleDataFlowStop","nameLocation":"3826:18:27","nodeType":"VariableDeclaration","scope":10287,"src":"3808:36:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ModuleData_$16276_memory_ptr","typeString":"struct ModuleData"},"typeName":{"id":10175,"nodeType":"UserDefinedTypeName","pathNode":{"id":10174,"name":"ModuleData","nameLocations":["3808:10:27"],"nodeType":"IdentifierPath","referencedDeclaration":16276,"src":"3808:10:27"},"referencedDeclaration":16276,"src":"3808:10:27","typeDescriptions":{"typeIdentifier":"t_struct$_ModuleData_$16276_storage_ptr","typeString":"struct ModuleData"}},"visibility":"internal"}],"id":10190,"initialValue":{"arguments":[{"arguments":[{"hexValue":"32","id":10182,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3894:1:27","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"id":10181,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"3881:12:27","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_enum$_Module_$16268_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (enum Module[] memory)"},"typeName":{"baseType":{"id":10179,"nodeType":"UserDefinedTypeName","pathNode":{"id":10178,"name":"Module","nameLocations":["3885:6:27"],"nodeType":"IdentifierPath","referencedDeclaration":16268,"src":"3885:6:27"},"referencedDeclaration":16268,"src":"3885:6:27","typeDescriptions":{"typeIdentifier":"t_enum$_Module_$16268","typeString":"enum Module"}},"id":10180,"nodeType":"ArrayTypeName","src":"3885:8:27","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_Module_$16268_$dyn_storage_ptr","typeString":"enum Module[]"}}},"id":10183,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3881:15:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_Module_$16268_$dyn_memory_ptr","typeString":"enum Module[] memory"}},{"arguments":[{"hexValue":"31","id":10187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3928:1:27","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":10186,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"3916:11:27","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory[] memory)"},"typeName":{"baseType":{"id":10184,"name":"bytes","nodeType":"ElementaryTypeName","src":"3920:5:27","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":10185,"nodeType":"ArrayTypeName","src":"3920:7:27","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}}},"id":10188,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3916:14:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_enum$_Module_$16268_$dyn_memory_ptr","typeString":"enum Module[] memory"},{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}],"id":10177,"name":"ModuleData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16276,"src":"3847:10:27","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_ModuleData_$16276_storage_ptr_$","typeString":"type(struct ModuleData storage pointer)"}},"id":10189,"isConstant":false,"isLValue":false,"isPure":true,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["3872:7:27","3910:4:27"],"names":["modules","args"],"nodeType":"FunctionCall","src":"3847:94:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ModuleData_$16276_memory_ptr","typeString":"struct ModuleData memory"}},"nodeType":"VariableDeclarationStatement","src":"3808:133:27"},{"expression":{"id":10198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":10191,"name":"moduleDataFlowStop","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10176,"src":"3952:18:27","typeDescriptions":{"typeIdentifier":"t_struct$_ModuleData_$16276_memory_ptr","typeString":"struct ModuleData memory"}},"id":10194,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3971:7:27","memberName":"modules","nodeType":"MemberAccess","referencedDeclaration":16272,"src":"3952:26:27","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_Module_$16268_$dyn_memory_ptr","typeString":"enum Module[] memory"}},"id":10195,"indexExpression":{"hexValue":"30","id":10193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3979:1:27","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3952:29:27","typeDescriptions":{"typeIdentifier":"t_enum$_Module_$16268","typeString":"enum Module"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":10196,"name":"Module","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16268,"src":"3984:6:27","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Module_$16268_$","typeString":"type(enum Module)"}},"id":10197,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3991:4:27","memberName":"TIME","nodeType":"MemberAccess","referencedDeclaration":16265,"src":"3984:11:27","typeDescriptions":{"typeIdentifier":"t_enum$_Module_$16268","typeString":"enum Module"}},"src":"3952:43:27","typeDescriptions":{"typeIdentifier":"t_enum$_Module_$16268","typeString":"enum Module"}},"id":10199,"nodeType":"ExpressionStatement","src":"3952:43:27"},{"expression":{"id":10207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":10200,"name":"moduleDataFlowStop","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10176,"src":"4005:18:27","typeDescriptions":{"typeIdentifier":"t_struct$_ModuleData_$16276_memory_ptr","typeString":"struct ModuleData memory"}},"id":10203,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4024:7:27","memberName":"modules","nodeType":"MemberAccess","referencedDeclaration":16272,"src":"4005:26:27","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_Module_$16268_$dyn_memory_ptr","typeString":"enum Module[] memory"}},"id":10204,"indexExpression":{"hexValue":"31","id":10202,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4032:1:27","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4005:29:27","typeDescriptions":{"typeIdentifier":"t_enum$_Module_$16268","typeString":"enum Module"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":10205,"name":"Module","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16268,"src":"4037:6:27","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Module_$16268_$","typeString":"type(enum Module)"}},"id":10206,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4044:11:27","memberName":"SINGLE_EXEC","nodeType":"MemberAccess","referencedDeclaration":16267,"src":"4037:18:27","typeDescriptions":{"typeIdentifier":"t_enum$_Module_$16268","typeString":"enum Module"}},"src":"4005:50:27","typeDescriptions":{"typeIdentifier":"t_enum$_Module_$16268","typeString":"enum Module"}},"id":10208,"nodeType":"ExpressionStatement","src":"4005:50:27"},{"expression":{"id":10222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":10209,"name":"moduleDataFlowStop","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10176,"src":"4066:18:27","typeDescriptions":{"typeIdentifier":"t_struct$_ModuleData_$16276_memory_ptr","typeString":"struct ModuleData memory"}},"id":10212,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4085:4:27","memberName":"args","nodeType":"MemberAccess","referencedDeclaration":16275,"src":"4066:23:27","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"id":10213,"indexExpression":{"hexValue":"30","id":10211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4090:1:27","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4066:26:27","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":10216,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"4135:5:27","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":10217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4141:9:27","memberName":"timestamp","nodeType":"MemberAccess","src":"4135:15:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":10218,"name":"scheduledLifespan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10052,"src":"4153:17:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4135:35:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10220,"name":"scheduledLifespan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10052,"src":"4184:17:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10214,"name":"LibAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12310,"src":"4095:11:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAutomate_$12310_$","typeString":"type(library LibAutomate)"}},"id":10215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4107:14:27","memberName":"_timeModuleArg","nodeType":"MemberAccess","referencedDeclaration":12287,"src":"4095:26:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (bytes memory)"}},"id":10221,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4095:116:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"4066:145:27","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":10223,"nodeType":"ExpressionStatement","src":"4066:145:27"},{"assignments":[10225],"declarations":[{"constant":false,"id":10225,"mutability":"mutable","name":"execDataFlowStop","nameLocation":"4235:16:27","nodeType":"VariableDeclaration","scope":10287,"src":"4222:29:27","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":10224,"name":"bytes","nodeType":"ElementaryTypeName","src":"4222:5:27","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":10238,"initialValue":{"arguments":[{"expression":{"expression":{"id":10228,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4290:4:27","typeDescriptions":{"typeIdentifier":"t_contract$_Flow_$10610","typeString":"contract Flow"}},"id":10229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4295:12:27","memberName":"decreaseFlow","nodeType":"MemberAccess","referencedDeclaration":10317,"src":"4290:17:27","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_int96_$returns$__$","typeString":"function (address,address,address,uint256,int96) external"}},"id":10230,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4308:8:27","memberName":"selector","nodeType":"MemberAccess","src":"4290:26:27","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":10231,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9961,"src":"4330:11:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":10232,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4355:3:27","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4359:6:27","memberName":"sender","nodeType":"MemberAccess","src":"4355:10:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10234,"name":"_receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9959,"src":"4379:9:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10235,"name":"newFlowNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10063,"src":"4402:12:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10236,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10033,"src":"4428:8:27","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_int96","typeString":"int96"}],"expression":{"id":10226,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4254:3:27","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":10227,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4258:18:27","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"4254:22:27","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":10237,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4254:192:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"4222:224:27"},{"expression":{"id":10266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"id":10239,"name":"sFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10027,"src":"4457:5:27","typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$13382_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":10245,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4472:10:27","memberName":"flowRecord","nodeType":"MemberAccess","referencedDeclaration":13371,"src":"4457:25:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref)))"}},"id":10246,"indexExpression":{"expression":{"id":10241,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4483:3:27","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4487:6:27","memberName":"sender","nodeType":"MemberAccess","src":"4483:10:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4457:37:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref))"}},"id":10247,"indexExpression":{"id":10243,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9961,"src":"4495:11:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4457:50:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$","typeString":"mapping(uint256 => struct LibFlow.FlowRecord storage ref)"}},"id":10248,"indexExpression":{"id":10244,"name":"newFlowNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10063,"src":"4508:12:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4457:64:27","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$13356_storage","typeString":"struct LibFlow.FlowRecord storage ref"}},"id":10249,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4522:6:27","memberName":"taskId","nodeType":"MemberAccess","referencedDeclaration":13353,"src":"4457:71:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":10257,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4651:4:27","typeDescriptions":{"typeIdentifier":"t_contract$_Flow_$10610","typeString":"contract Flow"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Flow_$10610","typeString":"contract Flow"}],"id":10256,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4643:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10255,"name":"address","nodeType":"ElementaryTypeName","src":"4643:7:27","typeDescriptions":{}}},"id":10258,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4643:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10259,"name":"execDataFlowStop","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10225,"src":"4674:16:27","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":10260,"name":"moduleDataFlowStop","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10176,"src":"4708:18:27","typeDescriptions":{"typeIdentifier":"t_struct$_ModuleData_$16276_memory_ptr","typeString":"struct ModuleData memory"}},{"arguments":[{"hexValue":"30","id":10263,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4752:1:27","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10262,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4744:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10261,"name":"address","nodeType":"ElementaryTypeName","src":"4744:7:27","typeDescriptions":{}}},"id":10264,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4744:10:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_struct$_ModuleData_$16276_memory_ptr","typeString":"struct ModuleData memory"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10250,"name":"LibAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12310,"src":"4531:11:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAutomate_$12310_$","typeString":"type(library LibAutomate)"}},"id":10251,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4556:16:27","memberName":"_storageAutomate","nodeType":"MemberAccess","referencedDeclaration":11951,"src":"4531:41:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageAutomate_$11939_storage_ptr_$","typeString":"function () pure returns (struct LibAutomate.StorageAutomate storage pointer)"}},"id":10252,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4531:43:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageAutomate_$11939_storage_ptr","typeString":"struct LibAutomate.StorageAutomate storage pointer"}},"id":10253,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4588:13:27","memberName":"gelatoAutobot","nodeType":"MemberAccess","referencedDeclaration":11931,"src":"4531:70:27","typeDescriptions":{"typeIdentifier":"t_contract$_IAutomate_$16314","typeString":"contract IAutomate"}},"id":10254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4615:10:27","memberName":"createTask","nodeType":"MemberAccess","referencedDeclaration":16290,"src":"4531:94:27","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_struct$_ModuleData_$16276_memory_ptr_$_t_address_$returns$_t_bytes32_$","typeString":"function (address,bytes memory,struct ModuleData memory,address) external returns (bytes32)"}},"id":10265,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4531:237:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"4457:311:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":10267,"nodeType":"ExpressionStatement","src":"4457:311:27"},{"expression":{"id":10277,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"id":10268,"name":"sFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10027,"src":"4803:5:27","typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$13382_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":10273,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4809:9:27","memberName":"flowNonce","nodeType":"MemberAccess","referencedDeclaration":13362,"src":"4803:15:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":10274,"indexExpression":{"expression":{"id":10270,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4819:3:27","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4823:6:27","memberName":"sender","nodeType":"MemberAccess","src":"4819:10:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4803:27:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10275,"indexExpression":{"id":10272,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9961,"src":"4831:11:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4803:40:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":10276,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4847:1:27","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4803:45:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10278,"nodeType":"ExpressionStatement","src":"4803:45:27"},{"expression":{"id":10285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":10279,"name":"sControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10103,"src":"4858:8:27","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":10282,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4867:12:27","memberName":"controlNonce","nodeType":"MemberAccess","referencedDeclaration":12396,"src":"4858:21:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":10283,"indexExpression":{"id":10281,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9961,"src":"4880:11:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4858:34:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":10284,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4896:1:27","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4858:39:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10286,"nodeType":"ExpressionStatement","src":"4858:39:27"}]},"documentation":{"id":9957,"nodeType":"StructuredDocumentation","src":"987:218:27","text":" // TODO: need to check if you have sufficient deposits left or not\n SOL1: have user manually off flow\n SOL2: force settle blaance before open next flow (also force settle before withdraw)"},"functionSelector":"dfc96e1b","id":10288,"implemented":true,"kind":"function","modifiers":[],"name":"openFlow","nameLocation":"1219:8:27","nodeType":"FunctionDefinition","parameters":{"id":9964,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9959,"mutability":"mutable","name":"_receiver","nameLocation":"1245:9:27","nodeType":"VariableDeclaration","scope":10288,"src":"1237:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9958,"name":"address","nodeType":"ElementaryTypeName","src":"1237:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9961,"mutability":"mutable","name":"_superToken","nameLocation":"1272:11:27","nodeType":"VariableDeclaration","scope":10288,"src":"1264:19:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9960,"name":"address","nodeType":"ElementaryTypeName","src":"1264:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9963,"mutability":"mutable","name":"_lifespan","nameLocation":"1301:9:27","nodeType":"VariableDeclaration","scope":10288,"src":"1293:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9962,"name":"uint256","nodeType":"ElementaryTypeName","src":"1293:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1227:89:27"},"returnParameters":{"id":9965,"nodeType":"ParameterList","parameters":[],"src":"1326:0:27"},"scope":10610,"src":"1210:3694:27","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[11575],"body":{"id":10316,"nodeType":"Block","src":"5077:204:27","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10301,"name":"LibAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12310,"src":"5087:11:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAutomate_$12310_$","typeString":"type(library LibAutomate)"}},"id":10303,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5099:19:27","memberName":"_requireOnlyAutobot","nodeType":"MemberAccess","referencedDeclaration":12129,"src":"5087:31:27","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":10304,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5087:33:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10305,"nodeType":"ExpressionStatement","src":"5087:33:27"},{"expression":{"arguments":[{"id":10309,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10290,"src":"5166:11:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10310,"name":"_sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10292,"src":"5191:7:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10311,"name":"_receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10294,"src":"5212:9:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10312,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10296,"src":"5235:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10313,"name":"_flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10298,"src":"5255:9:27","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_int96","typeString":"int96"}],"expression":{"id":10306,"name":"LibFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14322,"src":"5131:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibFlow_$14322_$","typeString":"type(library LibFlow)"}},"id":10308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5139:13:27","memberName":"_decreaseFlow","nodeType":"MemberAccess","referencedDeclaration":14321,"src":"5131:21:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_int96_$returns$__$","typeString":"function (address,address,address,uint256,int96)"}},"id":10314,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5131:143:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10315,"nodeType":"ExpressionStatement","src":"5131:143:27"}]},"functionSelector":"36fbb025","id":10317,"implemented":true,"kind":"function","modifiers":[],"name":"decreaseFlow","nameLocation":"4919:12:27","nodeType":"FunctionDefinition","parameters":{"id":10299,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10290,"mutability":"mutable","name":"_superToken","nameLocation":"4949:11:27","nodeType":"VariableDeclaration","scope":10317,"src":"4941:19:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10289,"name":"address","nodeType":"ElementaryTypeName","src":"4941:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10292,"mutability":"mutable","name":"_sender","nameLocation":"4978:7:27","nodeType":"VariableDeclaration","scope":10317,"src":"4970:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10291,"name":"address","nodeType":"ElementaryTypeName","src":"4970:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10294,"mutability":"mutable","name":"_receiver","nameLocation":"5003:9:27","nodeType":"VariableDeclaration","scope":10317,"src":"4995:17:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10293,"name":"address","nodeType":"ElementaryTypeName","src":"4995:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10296,"mutability":"mutable","name":"_nonce","nameLocation":"5030:6:27","nodeType":"VariableDeclaration","scope":10317,"src":"5022:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10295,"name":"uint256","nodeType":"ElementaryTypeName","src":"5022:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10298,"mutability":"mutable","name":"_flowRate","nameLocation":"5052:9:27","nodeType":"VariableDeclaration","scope":10317,"src":"5046:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":10297,"name":"int96","nodeType":"ElementaryTypeName","src":"5046:5:27","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"4931:136:27"},"returnParameters":{"id":10300,"nodeType":"ParameterList","parameters":[],"src":"5077:0:27"},"scope":10610,"src":"4910:371:27","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[11582],"body":{"id":10424,"nodeType":"Block","src":"5416:1088:27","statements":[{"assignments":[10328],"declarations":[{"constant":false,"id":10328,"mutability":"mutable","name":"sFlow","nameLocation":"5454:5:27","nodeType":"VariableDeclaration","scope":10424,"src":"5426:33:27","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$13382_storage_ptr","typeString":"struct LibFlow.StorageFlow"},"typeName":{"id":10327,"nodeType":"UserDefinedTypeName","pathNode":{"id":10326,"name":"LibFlow.StorageFlow","nameLocations":["5426:7:27","5434:11:27"],"nodeType":"IdentifierPath","referencedDeclaration":13382,"src":"5426:19:27"},"referencedDeclaration":13382,"src":"5426:19:27","typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$13382_storage_ptr","typeString":"struct LibFlow.StorageFlow"}},"visibility":"internal"}],"id":10332,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10329,"name":"LibFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14322,"src":"5462:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibFlow_$14322_$","typeString":"type(library LibFlow)"}},"id":10330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5470:12:27","memberName":"_storageFlow","nodeType":"MemberAccess","referencedDeclaration":13394,"src":"5462:20:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$13382_storage_ptr_$","typeString":"function () pure returns (struct LibFlow.StorageFlow storage pointer)"}},"id":10331,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5462:22:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$13382_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"5426:58:27"},{"assignments":[10334],"declarations":[{"constant":false,"id":10334,"mutability":"mutable","name":"minimumEndTimestamp","nameLocation":"5503:19:27","nodeType":"VariableDeclaration","scope":10424,"src":"5495:27:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10333,"name":"uint256","nodeType":"ElementaryTypeName","src":"5495:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10350,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"id":10335,"name":"sFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10328,"src":"5525:5:27","typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$13382_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":10336,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5540:10:27","memberName":"flowRecord","nodeType":"MemberAccess","referencedDeclaration":13371,"src":"5525:25:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref)))"}},"id":10339,"indexExpression":{"expression":{"id":10337,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5551:3:27","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5555:6:27","memberName":"sender","nodeType":"MemberAccess","src":"5551:10:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5525:37:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref))"}},"id":10341,"indexExpression":{"id":10340,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10319,"src":"5563:11:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5525:50:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$","typeString":"mapping(uint256 => struct LibFlow.FlowRecord storage ref)"}},"id":10343,"indexExpression":{"id":10342,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10321,"src":"5576:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5525:58:27","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$13356_storage","typeString":"struct LibFlow.FlowRecord storage ref"}},"id":10344,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5584:17:27","memberName":"timestampIncrease","nodeType":"MemberAccess","referencedDeclaration":13349,"src":"5525:76:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10345,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"5616:10:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$13307_$","typeString":"type(library LibControl)"}},"id":10346,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5627:15:27","memberName":"_storageControl","nodeType":"MemberAccess","referencedDeclaration":12430,"src":"5616:26:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$12418_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":10347,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5616:28:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":10348,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5645:15:27","memberName":"minimumLifespan","nodeType":"MemberAccess","referencedDeclaration":12382,"src":"5616:44:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5525:135:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5495:165:27"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10354,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":10351,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"5675:5:27","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":10352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5681:9:27","memberName":"timestamp","nodeType":"MemberAccess","src":"5675:15:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":10353,"name":"minimumEndTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10334,"src":"5693:19:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5675:37:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10358,"nodeType":"IfStatement","src":"5671:60:27","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":10355,"name":"TooEarly","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9950,"src":"5721:8:27","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":10356,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5721:10:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10357,"nodeType":"RevertStatement","src":"5714:17:27"}},{"expression":{"arguments":[{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"id":10365,"name":"sFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10328,"src":"5920:5:27","typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$13382_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":10366,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5926:10:27","memberName":"flowRecord","nodeType":"MemberAccess","referencedDeclaration":13371,"src":"5920:16:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref)))"}},"id":10369,"indexExpression":{"expression":{"id":10367,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5937:3:27","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5941:6:27","memberName":"sender","nodeType":"MemberAccess","src":"5937:10:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5920:28:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref))"}},"id":10371,"indexExpression":{"id":10370,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10319,"src":"5949:11:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5920:41:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$","typeString":"mapping(uint256 => struct LibFlow.FlowRecord storage ref)"}},"id":10373,"indexExpression":{"id":10372,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10321,"src":"5962:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5920:49:27","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$13356_storage","typeString":"struct LibFlow.FlowRecord storage ref"}},"id":10374,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5970:6:27","memberName":"taskId","nodeType":"MemberAccess","referencedDeclaration":13353,"src":"5920:56:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10359,"name":"LibAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12310,"src":"5851:11:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAutomate_$12310_$","typeString":"type(library LibAutomate)"}},"id":10361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5863:16:27","memberName":"_storageAutomate","nodeType":"MemberAccess","referencedDeclaration":11951,"src":"5851:28:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageAutomate_$11939_storage_ptr_$","typeString":"function () pure returns (struct LibAutomate.StorageAutomate storage pointer)"}},"id":10362,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5851:30:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageAutomate_$11939_storage_ptr","typeString":"struct LibAutomate.StorageAutomate storage pointer"}},"id":10363,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5882:13:27","memberName":"gelatoAutobot","nodeType":"MemberAccess","referencedDeclaration":11931,"src":"5851:44:27","typeDescriptions":{"typeIdentifier":"t_contract$_IAutomate_$16314","typeString":"contract IAutomate"}},"id":10364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5896:10:27","memberName":"cancelTask","nodeType":"MemberAccess","referencedDeclaration":16295,"src":"5851:55:27","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32) external"}},"id":10375,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5851:135:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10376,"nodeType":"ExpressionStatement","src":"5851:135:27"},{"assignments":[10378],"declarations":[{"constant":false,"id":10378,"mutability":"mutable","name":"receiver","nameLocation":"6028:8:27","nodeType":"VariableDeclaration","scope":10424,"src":"6020:16:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10377,"name":"address","nodeType":"ElementaryTypeName","src":"6020:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":10389,"initialValue":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"id":10379,"name":"sFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10328,"src":"6039:5:27","typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$13382_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":10380,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6054:10:27","memberName":"flowRecord","nodeType":"MemberAccess","referencedDeclaration":13371,"src":"6039:25:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref)))"}},"id":10383,"indexExpression":{"expression":{"id":10381,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6065:3:27","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6069:6:27","memberName":"sender","nodeType":"MemberAccess","src":"6065:10:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6039:37:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref))"}},"id":10385,"indexExpression":{"id":10384,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10319,"src":"6077:11:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6039:50:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$","typeString":"mapping(uint256 => struct LibFlow.FlowRecord storage ref)"}},"id":10387,"indexExpression":{"id":10386,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10321,"src":"6090:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6039:58:27","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$13356_storage","typeString":"struct LibFlow.FlowRecord storage ref"}},"id":10388,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6098:8:27","memberName":"receiver","nodeType":"MemberAccess","referencedDeclaration":13345,"src":"6039:67:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6020:86:27"},{"assignments":[10391],"declarations":[{"constant":false,"id":10391,"mutability":"mutable","name":"sessionNonce","nameLocation":"6124:12:27","nodeType":"VariableDeclaration","scope":10424,"src":"6116:20:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10390,"name":"uint256","nodeType":"ElementaryTypeName","src":"6116:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10402,"initialValue":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"id":10392,"name":"sFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10328,"src":"6139:5:27","typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$13382_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":10393,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6154:10:27","memberName":"flowRecord","nodeType":"MemberAccess","referencedDeclaration":13371,"src":"6139:25:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref)))"}},"id":10396,"indexExpression":{"expression":{"id":10394,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6165:3:27","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6169:6:27","memberName":"sender","nodeType":"MemberAccess","src":"6165:10:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6139:37:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref))"}},"id":10398,"indexExpression":{"id":10397,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10319,"src":"6177:11:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6139:50:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$","typeString":"mapping(uint256 => struct LibFlow.FlowRecord storage ref)"}},"id":10400,"indexExpression":{"id":10399,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10321,"src":"6190:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6139:58:27","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$13356_storage","typeString":"struct LibFlow.FlowRecord storage ref"}},"id":10401,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6198:12:27","memberName":"sessionNonce","nodeType":"MemberAccess","referencedDeclaration":13347,"src":"6139:71:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6116:94:27"},{"expression":{"arguments":[{"id":10406,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10319,"src":"6256:11:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":10407,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6281:3:27","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6285:6:27","memberName":"sender","nodeType":"MemberAccess","src":"6281:10:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10409,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10378,"src":"6305:8:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10410,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10321,"src":"6327:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10411,"name":"LibSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14923,"src":"6347:10:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibSession_$14923_$","typeString":"type(library LibSession)"}},"id":10412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6371:15:27","memberName":"_storageSession","nodeType":"MemberAccess","referencedDeclaration":14396,"src":"6347:39:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageSession_$14384_storage_ptr_$","typeString":"function () pure returns (struct LibSession.StorageSession storage pointer)"}},"id":10413,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6347:41:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$14384_storage_ptr","typeString":"struct LibSession.StorageSession storage pointer"}},"id":10414,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6402:13:27","memberName":"sessionRecord","nodeType":"MemberAccess","referencedDeclaration":14378,"src":"6347:68:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_SessionRecord_$14363_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibSession.SessionRecord storage ref)))"}},"id":10416,"indexExpression":{"id":10415,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10378,"src":"6416:8:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6347:78:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_SessionRecord_$14363_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibSession.SessionRecord storage ref))"}},"id":10418,"indexExpression":{"id":10417,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10319,"src":"6426:11:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6347:91:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_SessionRecord_$14363_storage_$","typeString":"mapping(uint256 => struct LibSession.SessionRecord storage ref)"}},"id":10420,"indexExpression":{"id":10419,"name":"sessionNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10391,"src":"6439:12:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6347:105:27","typeDescriptions":{"typeIdentifier":"t_struct$_SessionRecord_$14363_storage","typeString":"struct LibSession.SessionRecord storage ref"}},"id":10421,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6470:17:27","memberName":"effectiveFlowRate","nodeType":"MemberAccess","referencedDeclaration":14356,"src":"6347:140:27","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_int96","typeString":"int96"}],"expression":{"id":10403,"name":"LibFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14322,"src":"6221:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibFlow_$14322_$","typeString":"type(library LibFlow)"}},"id":10405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6229:13:27","memberName":"_decreaseFlow","nodeType":"MemberAccess","referencedDeclaration":14321,"src":"6221:21:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_int96_$returns$__$","typeString":"function (address,address,address,uint256,int96)"}},"id":10422,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6221:276:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10423,"nodeType":"ExpressionStatement","src":"6221:276:27"}]},"functionSelector":"e32867fc","id":10425,"implemented":true,"kind":"function","modifiers":[],"name":"closeFlow","nameLocation":"5360:9:27","nodeType":"FunctionDefinition","parameters":{"id":10322,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10319,"mutability":"mutable","name":"_superToken","nameLocation":"5378:11:27","nodeType":"VariableDeclaration","scope":10425,"src":"5370:19:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10318,"name":"address","nodeType":"ElementaryTypeName","src":"5370:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10321,"mutability":"mutable","name":"_nonce","nameLocation":"5399:6:27","nodeType":"VariableDeclaration","scope":10425,"src":"5391:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10320,"name":"uint256","nodeType":"ElementaryTypeName","src":"5391:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5369:37:27"},"returnParameters":{"id":10323,"nodeType":"ParameterList","parameters":[],"src":"5416:0:27"},"scope":10610,"src":"5351:1153:27","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[11589],"body":{"id":10445,"nodeType":"Block","src":"6584:126:27","statements":[{"expression":{"arguments":[{"id":10435,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10427,"src":"6633:11:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10432,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"6594:10:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$13307_$","typeString":"type(library LibControl)"}},"id":10434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6605:27:27","memberName":"_requireSuperTokenSupported","nodeType":"MemberAccess","referencedDeclaration":12753,"src":"6594:38:27","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":10436,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6594:51:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10437,"nodeType":"ExpressionStatement","src":"6594:51:27"},{"expression":{"arguments":[{"id":10441,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10427,"src":"6682:11:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10442,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10429,"src":"6695:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10438,"name":"LibFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14322,"src":"6655:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibFlow_$14322_$","typeString":"type(library LibFlow)"}},"id":10440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6663:18:27","memberName":"_depositSuperToken","nodeType":"MemberAccess","referencedDeclaration":13434,"src":"6655:26:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":10443,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6655:48:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10444,"nodeType":"ExpressionStatement","src":"6655:48:27"}]},"functionSelector":"0197c386","id":10446,"implemented":true,"kind":"function","modifiers":[],"name":"depositSuperToken","nameLocation":"6519:17:27","nodeType":"FunctionDefinition","parameters":{"id":10430,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10427,"mutability":"mutable","name":"_superToken","nameLocation":"6545:11:27","nodeType":"VariableDeclaration","scope":10446,"src":"6537:19:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10426,"name":"address","nodeType":"ElementaryTypeName","src":"6537:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10429,"mutability":"mutable","name":"_amount","nameLocation":"6566:7:27","nodeType":"VariableDeclaration","scope":10446,"src":"6558:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10428,"name":"uint256","nodeType":"ElementaryTypeName","src":"6558:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6536:38:27"},"returnParameters":{"id":10431,"nodeType":"ParameterList","parameters":[],"src":"6584:0:27"},"scope":10610,"src":"6510:200:27","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[11596],"body":{"id":10466,"nodeType":"Block","src":"6791:425:27","statements":[{"documentation":" don't need to check if supertoken suppported or not\n as there may be a chance that a supported supertoken\n gets removed but there is still user funds in the app\n in that case, just let user withdraw as will fail anyway if 0 amount","expression":{"arguments":[{"id":10456,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10448,"src":"7137:11:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10453,"name":"LibFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14322,"src":"7108:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibFlow_$14322_$","typeString":"type(library LibFlow)"}},"id":10455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7116:20:27","memberName":"_requireNoActiveFlow","nodeType":"MemberAccess","referencedDeclaration":13513,"src":"7108:28:27","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":10457,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7108:41:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10458,"nodeType":"ExpressionStatement","src":"7108:41:27"},{"expression":{"arguments":[{"id":10462,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10448,"src":"7188:11:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10463,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10450,"src":"7201:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10459,"name":"LibFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14322,"src":"7160:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibFlow_$14322_$","typeString":"type(library LibFlow)"}},"id":10461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7168:19:27","memberName":"_withdrawSuperToken","nodeType":"MemberAccess","referencedDeclaration":13498,"src":"7160:27:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":10464,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7160:49:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10465,"nodeType":"ExpressionStatement","src":"7160:49:27"}]},"functionSelector":"dc5cd1d8","id":10467,"implemented":true,"kind":"function","modifiers":[],"name":"withdrawSuperToken","nameLocation":"6725:18:27","nodeType":"FunctionDefinition","parameters":{"id":10451,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10448,"mutability":"mutable","name":"_superToken","nameLocation":"6752:11:27","nodeType":"VariableDeclaration","scope":10467,"src":"6744:19:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10447,"name":"address","nodeType":"ElementaryTypeName","src":"6744:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10450,"mutability":"mutable","name":"_amount","nameLocation":"6773:7:27","nodeType":"VariableDeclaration","scope":10467,"src":"6765:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10449,"name":"uint256","nodeType":"ElementaryTypeName","src":"6765:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6743:38:27"},"returnParameters":{"id":10452,"nodeType":"ParameterList","parameters":[],"src":"6791:0:27"},"scope":10610,"src":"6716:500:27","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[11605],"body":{"id":10482,"nodeType":"Block","src":"7351:68:27","statements":[{"expression":{"arguments":[{"id":10478,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10469,"src":"7393:5:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10479,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10471,"src":"7400:11:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10476,"name":"LibFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14322,"src":"7368:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibFlow_$14322_$","typeString":"type(library LibFlow)"}},"id":10477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7376:16:27","memberName":"_getAmountFlowed","nodeType":"MemberAccess","referencedDeclaration":13806,"src":"7368:24:27","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":10480,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7368:44:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10475,"id":10481,"nodeType":"Return","src":"7361:51:27"}]},"functionSelector":"3870f4a0","id":10483,"implemented":true,"kind":"function","modifiers":[],"name":"getAmountFlowed","nameLocation":"7245:15:27","nodeType":"FunctionDefinition","parameters":{"id":10472,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10469,"mutability":"mutable","name":"_user","nameLocation":"7278:5:27","nodeType":"VariableDeclaration","scope":10483,"src":"7270:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10468,"name":"address","nodeType":"ElementaryTypeName","src":"7270:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10471,"mutability":"mutable","name":"_superToken","nameLocation":"7301:11:27","nodeType":"VariableDeclaration","scope":10483,"src":"7293:19:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10470,"name":"address","nodeType":"ElementaryTypeName","src":"7293:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7260:58:27"},"returnParameters":{"id":10475,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10474,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10483,"src":"7342:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10473,"name":"uint256","nodeType":"ElementaryTypeName","src":"7342:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7341:9:27"},"scope":10610,"src":"7236:183:27","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[11616],"body":{"id":10501,"nodeType":"Block","src":"7570:84:27","statements":[{"expression":{"arguments":[{"id":10496,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10485,"src":"7617:5:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10497,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10487,"src":"7624:11:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10498,"name":"_flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10489,"src":"7637:9:27","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_int96","typeString":"int96"}],"expression":{"id":10494,"name":"LibFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14322,"src":"7587:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibFlow_$14322_$","typeString":"type(library LibFlow)"}},"id":10495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7595:21:27","memberName":"_getValidSafeLifespan","nodeType":"MemberAccess","referencedDeclaration":13660,"src":"7587:29:27","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_int96_$returns$_t_uint256_$","typeString":"function (address,address,int96) view returns (uint256)"}},"id":10499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7587:60:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10493,"id":10500,"nodeType":"Return","src":"7580:67:27"}]},"functionSelector":"0dfa0b82","id":10502,"implemented":true,"kind":"function","modifiers":[],"name":"getValidSafeLifespan","nameLocation":"7434:20:27","nodeType":"FunctionDefinition","parameters":{"id":10490,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10485,"mutability":"mutable","name":"_user","nameLocation":"7472:5:27","nodeType":"VariableDeclaration","scope":10502,"src":"7464:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10484,"name":"address","nodeType":"ElementaryTypeName","src":"7464:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10487,"mutability":"mutable","name":"_superToken","nameLocation":"7495:11:27","nodeType":"VariableDeclaration","scope":10502,"src":"7487:19:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10486,"name":"address","nodeType":"ElementaryTypeName","src":"7487:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10489,"mutability":"mutable","name":"_flowRate","nameLocation":"7522:9:27","nodeType":"VariableDeclaration","scope":10502,"src":"7516:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":10488,"name":"int96","nodeType":"ElementaryTypeName","src":"7516:5:27","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"7454:83:27"},"returnParameters":{"id":10493,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10492,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10502,"src":"7561:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10491,"name":"uint256","nodeType":"ElementaryTypeName","src":"7561:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7560:9:27"},"scope":10610,"src":"7425:229:27","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[11625],"body":{"id":10518,"nodeType":"Block","src":"7980:76:27","statements":[{"expression":{"arguments":[{"id":10514,"name":"_viewer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10505,"src":"8027:7:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10515,"name":"_broadcaster","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10507,"src":"8036:12:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10512,"name":"LibFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14322,"src":"7997:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibFlow_$14322_$","typeString":"type(library LibFlow)"}},"id":10513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8005:21:27","memberName":"_isViewSessionAllowed","nodeType":"MemberAccess","referencedDeclaration":13990,"src":"7997:29:27","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":10516,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7997:52:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":10511,"id":10517,"nodeType":"Return","src":"7990:59:27"}]},"documentation":{"id":10503,"nodeType":"StructuredDocumentation","src":"7697:158:27","text":" use `isViewSessionAllowed` to easily determine if viewer can \"join room\" or not\n !! NOT used to determine if can `openFlow` or not..."},"functionSelector":"9a5b5f93","id":10519,"implemented":true,"kind":"function","modifiers":[],"name":"isViewSessionAllowed","nameLocation":"7869:20:27","nodeType":"FunctionDefinition","parameters":{"id":10508,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10505,"mutability":"mutable","name":"_viewer","nameLocation":"7907:7:27","nodeType":"VariableDeclaration","scope":10519,"src":"7899:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10504,"name":"address","nodeType":"ElementaryTypeName","src":"7899:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10507,"mutability":"mutable","name":"_broadcaster","nameLocation":"7932:12:27","nodeType":"VariableDeclaration","scope":10519,"src":"7924:20:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10506,"name":"address","nodeType":"ElementaryTypeName","src":"7924:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7889:61:27"},"returnParameters":{"id":10511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10510,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10519,"src":"7974:4:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10509,"name":"bool","nodeType":"ElementaryTypeName","src":"7974:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7973:6:27"},"scope":10610,"src":"7860:196:27","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[11634],"body":{"id":10534,"nodeType":"Block","src":"8172:66:27","statements":[{"expression":{"arguments":[{"id":10530,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10521,"src":"8212:5:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10531,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10523,"src":"8219:11:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10528,"name":"LibFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14322,"src":"8189:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibFlow_$14322_$","typeString":"type(library LibFlow)"}},"id":10529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8197:14:27","memberName":"_hasActiveFlow","nodeType":"MemberAccess","referencedDeclaration":13860,"src":"8189:22:27","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":10532,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8189:42:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":10527,"id":10533,"nodeType":"Return","src":"8182:49:27"}]},"functionSelector":"468240a9","id":10535,"implemented":true,"kind":"function","modifiers":[],"name":"hasActiveFlow","nameLocation":"8071:13:27","nodeType":"FunctionDefinition","parameters":{"id":10524,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10521,"mutability":"mutable","name":"_user","nameLocation":"8102:5:27","nodeType":"VariableDeclaration","scope":10535,"src":"8094:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10520,"name":"address","nodeType":"ElementaryTypeName","src":"8094:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10523,"mutability":"mutable","name":"_superToken","nameLocation":"8125:11:27","nodeType":"VariableDeclaration","scope":10535,"src":"8117:19:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10522,"name":"address","nodeType":"ElementaryTypeName","src":"8117:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8084:58:27"},"returnParameters":{"id":10527,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10526,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10535,"src":"8166:4:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10525,"name":"bool","nodeType":"ElementaryTypeName","src":"8166:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8165:6:27"},"scope":10610,"src":"8062:176:27","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[11643],"body":{"id":10550,"nodeType":"Block","src":"8373:64:27","statements":[{"expression":{"arguments":[{"id":10546,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10537,"src":"8411:5:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10547,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10539,"src":"8418:11:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10544,"name":"LibFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14322,"src":"8390:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibFlow_$14322_$","typeString":"type(library LibFlow)"}},"id":10545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8398:12:27","memberName":"_getNewNonce","nodeType":"MemberAccess","referencedDeclaration":14008,"src":"8390:20:27","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":10548,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8390:40:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10543,"id":10549,"nodeType":"Return","src":"8383:47:27"}]},"functionSelector":"521d3f3c","id":10551,"implemented":true,"kind":"function","modifiers":[],"name":"getNewFlowNonce","nameLocation":"8267:15:27","nodeType":"FunctionDefinition","parameters":{"id":10540,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10537,"mutability":"mutable","name":"_user","nameLocation":"8300:5:27","nodeType":"VariableDeclaration","scope":10551,"src":"8292:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10536,"name":"address","nodeType":"ElementaryTypeName","src":"8292:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10539,"mutability":"mutable","name":"_superToken","nameLocation":"8323:11:27","nodeType":"VariableDeclaration","scope":10551,"src":"8315:19:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10538,"name":"address","nodeType":"ElementaryTypeName","src":"8315:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8282:58:27"},"returnParameters":{"id":10543,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10542,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10551,"src":"8364:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10541,"name":"uint256","nodeType":"ElementaryTypeName","src":"8364:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8363:9:27"},"scope":10610,"src":"8258:179:27","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[11664],"body":{"id":10579,"nodeType":"Block","src":"8662:72:27","statements":[{"expression":{"arguments":[{"id":10574,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10553,"src":"8700:5:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10575,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10555,"src":"8707:11:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10576,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10557,"src":"8720:6:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10572,"name":"LibFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14322,"src":"8679:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibFlow_$14322_$","typeString":"type(library LibFlow)"}},"id":10573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8687:12:27","memberName":"_getFlowData","nodeType":"MemberAccess","referencedDeclaration":14121,"src":"8679:20:27","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes32_$_t_bool_$","typeString":"function (address,address,uint256) view returns (address,uint256,uint256,uint256,bytes32,bool)"}},"id":10577,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8679:48:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes32_$_t_bool_$","typeString":"tuple(address,uint256,uint256,uint256,bytes32,bool)"}},"functionReturnParameters":10571,"id":10578,"nodeType":"Return","src":"8672:55:27"}]},"functionSelector":"54bbc2ad","id":10580,"implemented":true,"kind":"function","modifiers":[],"name":"getFlowData","nameLocation":"8466:11:27","nodeType":"FunctionDefinition","parameters":{"id":10558,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10553,"mutability":"mutable","name":"_user","nameLocation":"8495:5:27","nodeType":"VariableDeclaration","scope":10580,"src":"8487:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10552,"name":"address","nodeType":"ElementaryTypeName","src":"8487:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10555,"mutability":"mutable","name":"_superToken","nameLocation":"8518:11:27","nodeType":"VariableDeclaration","scope":10580,"src":"8510:19:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10554,"name":"address","nodeType":"ElementaryTypeName","src":"8510:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10557,"mutability":"mutable","name":"_nonce","nameLocation":"8547:6:27","nodeType":"VariableDeclaration","scope":10580,"src":"8539:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10556,"name":"uint256","nodeType":"ElementaryTypeName","src":"8539:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8477:82:27"},"returnParameters":{"id":10571,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10560,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10580,"src":"8607:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10559,"name":"address","nodeType":"ElementaryTypeName","src":"8607:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10562,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10580,"src":"8616:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10561,"name":"uint256","nodeType":"ElementaryTypeName","src":"8616:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10564,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10580,"src":"8625:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10563,"name":"uint256","nodeType":"ElementaryTypeName","src":"8625:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10566,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10580,"src":"8634:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10565,"name":"uint256","nodeType":"ElementaryTypeName","src":"8634:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10568,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10580,"src":"8643:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10567,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8643:7:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":10570,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10580,"src":"8652:4:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10569,"name":"bool","nodeType":"ElementaryTypeName","src":"8652:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8606:51:27"},"scope":10610,"src":"8457:277:27","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[11673],"body":{"id":10595,"nodeType":"Block","src":"8854:67:27","statements":[{"expression":{"arguments":[{"id":10591,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10582,"src":"8895:5:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10592,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10584,"src":"8902:11:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10589,"name":"LibFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14322,"src":"8871:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibFlow_$14322_$","typeString":"type(library LibFlow)"}},"id":10590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8879:15:27","memberName":"_getDepositUser","nodeType":"MemberAccess","referencedDeclaration":14139,"src":"8871:23:27","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":10593,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8871:43:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10588,"id":10594,"nodeType":"Return","src":"8864:50:27"}]},"functionSelector":"a152ca6f","id":10596,"implemented":true,"kind":"function","modifiers":[],"name":"getDepositUser","nameLocation":"8749:14:27","nodeType":"FunctionDefinition","parameters":{"id":10585,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10582,"mutability":"mutable","name":"_user","nameLocation":"8781:5:27","nodeType":"VariableDeclaration","scope":10596,"src":"8773:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10581,"name":"address","nodeType":"ElementaryTypeName","src":"8773:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10584,"mutability":"mutable","name":"_superToken","nameLocation":"8804:11:27","nodeType":"VariableDeclaration","scope":10596,"src":"8796:19:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10583,"name":"address","nodeType":"ElementaryTypeName","src":"8796:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8763:58:27"},"returnParameters":{"id":10588,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10587,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10596,"src":"8845:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10586,"name":"uint256","nodeType":"ElementaryTypeName","src":"8845:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8844:9:27"},"scope":10610,"src":"8740:181:27","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[11680],"body":{"id":10608,"nodeType":"Block","src":"9019:61:27","statements":[{"expression":{"arguments":[{"id":10605,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10598,"src":"9061:11:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10603,"name":"LibFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14322,"src":"9036:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibFlow_$14322_$","typeString":"type(library LibFlow)"}},"id":10604,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9044:16:27","memberName":"_getDepositTotal","nodeType":"MemberAccess","referencedDeclaration":14153,"src":"9036:24:27","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":10606,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9036:37:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10602,"id":10607,"nodeType":"Return","src":"9029:44:27"}]},"functionSelector":"c76474db","id":10609,"implemented":true,"kind":"function","modifiers":[],"name":"getDepositTotal","nameLocation":"8936:15:27","nodeType":"FunctionDefinition","parameters":{"id":10599,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10598,"mutability":"mutable","name":"_superToken","nameLocation":"8969:11:27","nodeType":"VariableDeclaration","scope":10609,"src":"8961:19:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10597,"name":"address","nodeType":"ElementaryTypeName","src":"8961:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8951:35:27"},"returnParameters":{"id":10602,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10601,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10609,"src":"9010:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10600,"name":"uint256","nodeType":"ElementaryTypeName","src":"9010:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9009:9:27"},"scope":10610,"src":"8927:153:27","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":10611,"src":"704:8378:27","usedErrors":[9950,11911,11913,12327,12329,13320,13322,13324,13326,13328,13330,13332,14337]}],"src":"37:9557:27"},"id":27},"contracts/facets/core/Session.sol":{"ast":{"absolutePath":"contracts/facets/core/Session.sol","exportedSymbols":{"ArrayLengthNotMatch":[12325],"ISession":[11752],"LibControl":[13307],"LibSession":[14923],"Session":[10885]},"id":10886,"license":"BUSL-1.1","nodeType":"SourceUnit","nodes":[{"id":10612,"literals":["solidity","^","0.8",".9"],"nodeType":"PragmaDirective","src":"37:23:28"},{"absolutePath":"contracts/libraries/core/LibControl.sol","file":"../../libraries/core/LibControl.sol","id":10615,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10886,"sourceUnit":13308,"src":"62:84:28","symbolAliases":[{"foreign":{"id":10613,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"70:10:28","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":10614,"name":"ArrayLengthNotMatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12325,"src":"82:19:28","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/libraries/core/LibSession.sol","file":"../../libraries/core/LibSession.sol","id":10617,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10886,"sourceUnit":14924,"src":"147:63:28","symbolAliases":[{"foreign":{"id":10616,"name":"LibSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14923,"src":"155:10:28","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/core/ISession.sol","file":"../../interfaces/core/ISession.sol","id":10619,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":10886,"sourceUnit":11753,"src":"211:60:28","symbolAliases":[{"foreign":{"id":10618,"name":"ISession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11752,"src":"219:8:28","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":10620,"name":"ISession","nameLocations":["293:8:28"],"nodeType":"IdentifierPath","referencedDeclaration":11752,"src":"293:8:28"},"id":10621,"nodeType":"InheritanceSpecifier","src":"293:8:28"}],"canonicalName":"Session","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":10885,"linearizedBaseContracts":[10885,11752],"name":"Session","nameLocation":"282:7:28","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[11692],"body":{"id":10675,"nodeType":"Block","src":"422:378:28","statements":[{"expression":{"arguments":[{"id":10633,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10623,"src":"471:11:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10630,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"432:10:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$13307_$","typeString":"type(library LibControl)"}},"id":10632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"443:27:28","memberName":"_requireSuperTokenSupported","nodeType":"MemberAccess","referencedDeclaration":12753,"src":"432:38:28","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":10634,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"432:51:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10635,"nodeType":"ExpressionStatement","src":"432:51:28"},{"expression":{"arguments":[{"id":10639,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10623,"src":"518:11:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10640,"name":"_flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10625,"src":"531:9:28","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"id":10641,"name":"_tag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10627,"src":"542:4:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10636,"name":"LibSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14923,"src":"493:10:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibSession_$14923_$","typeString":"type(library LibSession)"}},"id":10638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"504:13:28","memberName":"_startSession","nodeType":"MemberAccess","referencedDeclaration":14506,"src":"493:24:28","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint96_$_t_uint256_$returns$__$","typeString":"function (address,uint96,uint256)"}},"id":10642,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"493:54:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10643,"nodeType":"ExpressionStatement","src":"493:54:28"},{"assignments":[10648],"declarations":[{"constant":false,"id":10648,"mutability":"mutable","name":"sSession","nameLocation":"592:8:28","nodeType":"VariableDeclaration","scope":10675,"src":"558:42:28","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$14384_storage_ptr","typeString":"struct LibSession.StorageSession"},"typeName":{"id":10647,"nodeType":"UserDefinedTypeName","pathNode":{"id":10646,"name":"LibSession.StorageSession","nameLocations":["558:10:28","569:14:28"],"nodeType":"IdentifierPath","referencedDeclaration":14384,"src":"558:25:28"},"referencedDeclaration":14384,"src":"558:25:28","typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$14384_storage_ptr","typeString":"struct LibSession.StorageSession"}},"visibility":"internal"}],"id":10652,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10649,"name":"LibSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14923,"src":"603:10:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibSession_$14923_$","typeString":"type(library LibSession)"}},"id":10650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"627:15:28","memberName":"_storageSession","nodeType":"MemberAccess","referencedDeclaration":14396,"src":"603:39:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageSession_$14384_storage_ptr_$","typeString":"function () pure returns (struct LibSession.StorageSession storage pointer)"}},"id":10651,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"603:41:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$14384_storage_ptr","typeString":"struct LibSession.StorageSession storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"558:86:28"},{"expression":{"id":10662,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":10653,"name":"sSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10648,"src":"655:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$14384_storage_ptr","typeString":"struct LibSession.StorageSession storage pointer"}},"id":10657,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"664:14:28","memberName":"sessionCurrent","nodeType":"MemberAccess","referencedDeclaration":14383,"src":"655:23:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_SessionCurrent_$14354_storage_$","typeString":"mapping(address => struct LibSession.SessionCurrent storage ref)"}},"id":10658,"indexExpression":{"expression":{"id":10655,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"679:3:28","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"683:6:28","memberName":"sender","nodeType":"MemberAccess","src":"679:10:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"655:35:28","typeDescriptions":{"typeIdentifier":"t_struct$_SessionCurrent_$14354_storage","typeString":"struct LibSession.SessionCurrent storage ref"}},"id":10659,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"691:9:28","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":14350,"src":"655:45:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":10660,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"703:5:28","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":10661,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"709:9:28","memberName":"timestamp","nodeType":"MemberAccess","src":"703:15:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"655:63:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10663,"nodeType":"ExpressionStatement","src":"655:63:28"},{"expression":{"arguments":[{"id":10672,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10623,"src":"781:11:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"baseExpression":{"expression":{"id":10664,"name":"sSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10648,"src":"728:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$14384_storage_ptr","typeString":"struct LibSession.StorageSession storage pointer"}},"id":10668,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"737:14:28","memberName":"sessionCurrent","nodeType":"MemberAccess","referencedDeclaration":14383,"src":"728:23:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_SessionCurrent_$14354_storage_$","typeString":"mapping(address => struct LibSession.SessionCurrent storage ref)"}},"id":10669,"indexExpression":{"expression":{"id":10666,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"752:3:28","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"756:6:28","memberName":"sender","nodeType":"MemberAccess","src":"752:10:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"728:35:28","typeDescriptions":{"typeIdentifier":"t_struct$_SessionCurrent_$14354_storage","typeString":"struct LibSession.SessionCurrent storage ref"}},"id":10670,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"764:11:28","memberName":"superTokens","nodeType":"MemberAccess","referencedDeclaration":14353,"src":"728:47:28","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":10671,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"776:4:28","memberName":"push","nodeType":"MemberAccess","src":"728:52:28","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$_t_address_$returns$__$attached_to$_t_array$_t_address_$dyn_storage_ptr_$","typeString":"function (address[] storage pointer,address)"}},"id":10673,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"728:65:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10674,"nodeType":"ExpressionStatement","src":"728:65:28"}]},"functionSelector":"7fe70a27","id":10676,"implemented":true,"kind":"function","modifiers":[],"name":"startSession","nameLocation":"317:12:28","nodeType":"FunctionDefinition","parameters":{"id":10628,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10623,"mutability":"mutable","name":"_superToken","nameLocation":"347:11:28","nodeType":"VariableDeclaration","scope":10676,"src":"339:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10622,"name":"address","nodeType":"ElementaryTypeName","src":"339:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10625,"mutability":"mutable","name":"_flowRate","nameLocation":"375:9:28","nodeType":"VariableDeclaration","scope":10676,"src":"368:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":10624,"name":"uint96","nodeType":"ElementaryTypeName","src":"368:6:28","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":10627,"mutability":"mutable","name":"_tag","nameLocation":"402:4:28","nodeType":"VariableDeclaration","scope":10676,"src":"394:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10626,"name":"uint256","nodeType":"ElementaryTypeName","src":"394:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"329:83:28"},"returnParameters":{"id":10629,"nodeType":"ParameterList","parameters":[],"src":"422:0:28"},"scope":10885,"src":"308:492:28","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[11697],"body":{"id":10696,"nodeType":"Block","src":"1012:525:28","statements":[{"documentation":" don't need to check if supertoken suppported or not\n as there may be a chance that a supported supertoken\n gets removed but there is still session active with the\n supertoken\n in that case, just let user withdraw as will fail anyway if 0 amount","expression":{"arguments":[{"id":10684,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10678,"src":"1446:11:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10681,"name":"LibSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14923,"src":"1422:10:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibSession_$14923_$","typeString":"type(library LibSession)"}},"id":10683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1433:12:28","memberName":"_stopSession","nodeType":"MemberAccess","referencedDeclaration":14603,"src":"1422:23:28","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":10685,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1422:36:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10686,"nodeType":"ExpressionStatement","src":"1422:36:28"},{"expression":{"id":10694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"1468:62:28","subExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10687,"name":"LibSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14923,"src":"1475:10:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibSession_$14923_$","typeString":"type(library LibSession)"}},"id":10688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1486:15:28","memberName":"_storageSession","nodeType":"MemberAccess","referencedDeclaration":14396,"src":"1475:26:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageSession_$14384_storage_ptr_$","typeString":"function () pure returns (struct LibSession.StorageSession storage pointer)"}},"id":10689,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1475:28:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$14384_storage_ptr","typeString":"struct LibSession.StorageSession storage pointer"}},"id":10690,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1504:14:28","memberName":"sessionCurrent","nodeType":"MemberAccess","referencedDeclaration":14383,"src":"1475:43:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_SessionCurrent_$14354_storage_$","typeString":"mapping(address => struct LibSession.SessionCurrent storage ref)"}},"id":10693,"indexExpression":{"expression":{"id":10691,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1519:3:28","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1523:6:28","memberName":"sender","nodeType":"MemberAccess","src":"1519:10:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1475:55:28","typeDescriptions":{"typeIdentifier":"t_struct$_SessionCurrent_$14354_storage","typeString":"struct LibSession.SessionCurrent storage ref"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10695,"nodeType":"ExpressionStatement","src":"1468:62:28"}]},"functionSelector":"b233bd05","id":10697,"implemented":true,"kind":"function","modifiers":[],"name":"stopSession","nameLocation":"970:11:28","nodeType":"FunctionDefinition","parameters":{"id":10679,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10678,"mutability":"mutable","name":"_superToken","nameLocation":"990:11:28","nodeType":"VariableDeclaration","scope":10697,"src":"982:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10677,"name":"address","nodeType":"ElementaryTypeName","src":"982:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"981:21:28"},"returnParameters":{"id":10680,"nodeType":"ParameterList","parameters":[],"src":"1012:0:28"},"scope":10885,"src":"961:576:28","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[11709],"body":{"id":10789,"nodeType":"Block","src":"1702:627:28","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":10719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":10709,"name":"_superTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10700,"src":"1729:12:28","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":10710,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1742:6:28","memberName":"length","nodeType":"MemberAccess","src":"1729:19:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":10711,"name":"_flowRates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10703,"src":"1752:10:28","typeDescriptions":{"typeIdentifier":"t_array$_t_uint96_$dyn_memory_ptr","typeString":"uint96[] memory"}},"id":10712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1763:6:28","memberName":"length","nodeType":"MemberAccess","src":"1752:17:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1729:40:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10718,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":10714,"name":"_superTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10700,"src":"1785:12:28","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":10715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1798:6:28","memberName":"length","nodeType":"MemberAccess","src":"1785:19:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":10716,"name":"_tags","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10706,"src":"1808:5:28","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":10717,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1814:6:28","memberName":"length","nodeType":"MemberAccess","src":"1808:12:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1785:35:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1729:91:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10723,"nodeType":"IfStatement","src":"1712:147:28","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":10720,"name":"ArrayLengthNotMatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12325,"src":"1838:19:28","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":10721,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1838:21:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10722,"nodeType":"RevertStatement","src":"1831:28:28"}},{"body":{"id":10757,"nodeType":"Block","src":"1920:160:28","statements":[{"expression":{"arguments":[{"baseExpression":{"id":10738,"name":"_superTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10700,"src":"1973:12:28","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":10740,"indexExpression":{"id":10739,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10725,"src":"1986:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1973:15:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10735,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"1934:10:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$13307_$","typeString":"type(library LibControl)"}},"id":10737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1945:27:28","memberName":"_requireSuperTokenSupported","nodeType":"MemberAccess","referencedDeclaration":12753,"src":"1934:38:28","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$__$","typeString":"function (address) view"}},"id":10741,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1934:55:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10742,"nodeType":"ExpressionStatement","src":"1934:55:28"},{"expression":{"arguments":[{"baseExpression":{"id":10746,"name":"_superTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10700,"src":"2028:12:28","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":10748,"indexExpression":{"id":10747,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10725,"src":"2041:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2028:15:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":10749,"name":"_flowRates","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10703,"src":"2045:10:28","typeDescriptions":{"typeIdentifier":"t_array$_t_uint96_$dyn_memory_ptr","typeString":"uint96[] memory"}},"id":10751,"indexExpression":{"id":10750,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10725,"src":"2056:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2045:13:28","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"baseExpression":{"id":10752,"name":"_tags","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10706,"src":"2060:5:28","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":10754,"indexExpression":{"id":10753,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10725,"src":"2066:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2060:8:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10743,"name":"LibSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14923,"src":"2003:10:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibSession_$14923_$","typeString":"type(library LibSession)"}},"id":10745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2014:13:28","memberName":"_startSession","nodeType":"MemberAccess","referencedDeclaration":14506,"src":"2003:24:28","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint96_$_t_uint256_$returns$__$","typeString":"function (address,uint96,uint256)"}},"id":10755,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2003:66:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10756,"nodeType":"ExpressionStatement","src":"2003:66:28"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10728,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10725,"src":"1890:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":10729,"name":"_superTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10700,"src":"1894:12:28","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":10730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1907:6:28","memberName":"length","nodeType":"MemberAccess","src":"1894:19:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1890:23:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10758,"initializationExpression":{"assignments":[10725],"declarations":[{"constant":false,"id":10725,"mutability":"mutable","name":"i","nameLocation":"1883:1:28","nodeType":"VariableDeclaration","scope":10758,"src":"1875:9:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10724,"name":"uint256","nodeType":"ElementaryTypeName","src":"1875:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10727,"initialValue":{"hexValue":"30","id":10726,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1887:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"1875:13:28"},"loopExpression":{"expression":{"id":10733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"1915:3:28","subExpression":{"id":10732,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10725,"src":"1915:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10734,"nodeType":"ExpressionStatement","src":"1915:3:28"},"nodeType":"ForStatement","src":"1870:210:28"},{"assignments":[10763],"declarations":[{"constant":false,"id":10763,"mutability":"mutable","name":"sSession","nameLocation":"2124:8:28","nodeType":"VariableDeclaration","scope":10789,"src":"2090:42:28","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$14384_storage_ptr","typeString":"struct LibSession.StorageSession"},"typeName":{"id":10762,"nodeType":"UserDefinedTypeName","pathNode":{"id":10761,"name":"LibSession.StorageSession","nameLocations":["2090:10:28","2101:14:28"],"nodeType":"IdentifierPath","referencedDeclaration":14384,"src":"2090:25:28"},"referencedDeclaration":14384,"src":"2090:25:28","typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$14384_storage_ptr","typeString":"struct LibSession.StorageSession"}},"visibility":"internal"}],"id":10767,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10764,"name":"LibSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14923,"src":"2135:10:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibSession_$14923_$","typeString":"type(library LibSession)"}},"id":10765,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2159:15:28","memberName":"_storageSession","nodeType":"MemberAccess","referencedDeclaration":14396,"src":"2135:39:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageSession_$14384_storage_ptr_$","typeString":"function () pure returns (struct LibSession.StorageSession storage pointer)"}},"id":10766,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2135:41:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$14384_storage_ptr","typeString":"struct LibSession.StorageSession storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2090:86:28"},{"expression":{"id":10777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":10768,"name":"sSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10763,"src":"2187:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$14384_storage_ptr","typeString":"struct LibSession.StorageSession storage pointer"}},"id":10772,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2196:14:28","memberName":"sessionCurrent","nodeType":"MemberAccess","referencedDeclaration":14383,"src":"2187:23:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_SessionCurrent_$14354_storage_$","typeString":"mapping(address => struct LibSession.SessionCurrent storage ref)"}},"id":10773,"indexExpression":{"expression":{"id":10770,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2211:3:28","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2215:6:28","memberName":"sender","nodeType":"MemberAccess","src":"2211:10:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2187:35:28","typeDescriptions":{"typeIdentifier":"t_struct$_SessionCurrent_$14354_storage","typeString":"struct LibSession.SessionCurrent storage ref"}},"id":10774,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2223:9:28","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":14350,"src":"2187:45:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":10775,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"2235:5:28","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":10776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2241:9:28","memberName":"timestamp","nodeType":"MemberAccess","src":"2235:15:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2187:63:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10778,"nodeType":"ExpressionStatement","src":"2187:63:28"},{"expression":{"id":10787,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":10779,"name":"sSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10763,"src":"2260:8:28","typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$14384_storage_ptr","typeString":"struct LibSession.StorageSession storage pointer"}},"id":10783,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2269:14:28","memberName":"sessionCurrent","nodeType":"MemberAccess","referencedDeclaration":14383,"src":"2260:23:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_SessionCurrent_$14354_storage_$","typeString":"mapping(address => struct LibSession.SessionCurrent storage ref)"}},"id":10784,"indexExpression":{"expression":{"id":10781,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2284:3:28","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2288:6:28","memberName":"sender","nodeType":"MemberAccess","src":"2284:10:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2260:35:28","typeDescriptions":{"typeIdentifier":"t_struct$_SessionCurrent_$14354_storage","typeString":"struct LibSession.SessionCurrent storage ref"}},"id":10785,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2296:11:28","memberName":"superTokens","nodeType":"MemberAccess","referencedDeclaration":14353,"src":"2260:47:28","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10786,"name":"_superTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10700,"src":"2310:12:28","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"2260:62:28","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":10788,"nodeType":"ExpressionStatement","src":"2260:62:28"}]},"functionSelector":"f437a7a5","id":10790,"implemented":true,"kind":"function","modifiers":[],"name":"startSessions","nameLocation":"1566:13:28","nodeType":"FunctionDefinition","parameters":{"id":10707,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10700,"mutability":"mutable","name":"_superTokens","nameLocation":"1606:12:28","nodeType":"VariableDeclaration","scope":10790,"src":"1589:29:28","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":10698,"name":"address","nodeType":"ElementaryTypeName","src":"1589:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10699,"nodeType":"ArrayTypeName","src":"1589:9:28","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":10703,"mutability":"mutable","name":"_flowRates","nameLocation":"1644:10:28","nodeType":"VariableDeclaration","scope":10790,"src":"1628:26:28","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint96_$dyn_memory_ptr","typeString":"uint96[]"},"typeName":{"baseType":{"id":10701,"name":"uint96","nodeType":"ElementaryTypeName","src":"1628:6:28","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"id":10702,"nodeType":"ArrayTypeName","src":"1628:8:28","typeDescriptions":{"typeIdentifier":"t_array$_t_uint96_$dyn_storage_ptr","typeString":"uint96[]"}},"visibility":"internal"},{"constant":false,"id":10706,"mutability":"mutable","name":"_tags","nameLocation":"1681:5:28","nodeType":"VariableDeclaration","scope":10790,"src":"1664:22:28","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":10704,"name":"uint256","nodeType":"ElementaryTypeName","src":"1664:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10705,"nodeType":"ArrayTypeName","src":"1664:9:28","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"1579:113:28"},"returnParameters":{"id":10708,"nodeType":"ParameterList","parameters":[],"src":"1702:0:28"},"scope":10885,"src":"1557:772:28","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[11715],"body":{"id":10826,"nodeType":"Block","src":"2397:640:28","statements":[{"body":{"id":10815,"nodeType":"Block","src":"2457:501:28","statements":[{"documentation":" don't need to check if supertoken suppported or not\n as there may be a chance that a supported supertoken\n gets removed but there is still session active with the\n supertoken\n in that case, just let user withdraw as will fail anyway if 0 amount","expression":{"arguments":[{"baseExpression":{"id":10810,"name":"_superTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10793,"src":"2931:12:28","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":10812,"indexExpression":{"id":10811,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10797,"src":"2944:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2931:15:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10807,"name":"LibSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14923,"src":"2907:10:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibSession_$14923_$","typeString":"type(library LibSession)"}},"id":10809,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2918:12:28","memberName":"_stopSession","nodeType":"MemberAccess","referencedDeclaration":14603,"src":"2907:23:28","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":10813,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2907:40:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10814,"nodeType":"ExpressionStatement","src":"2907:40:28"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10803,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10800,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10797,"src":"2427:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":10801,"name":"_superTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10793,"src":"2431:12:28","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":10802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2444:6:28","memberName":"length","nodeType":"MemberAccess","src":"2431:19:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2427:23:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10816,"initializationExpression":{"assignments":[10797],"declarations":[{"constant":false,"id":10797,"mutability":"mutable","name":"i","nameLocation":"2420:1:28","nodeType":"VariableDeclaration","scope":10816,"src":"2412:9:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10796,"name":"uint256","nodeType":"ElementaryTypeName","src":"2412:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10799,"initialValue":{"hexValue":"30","id":10798,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2424:1:28","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2412:13:28"},"loopExpression":{"expression":{"id":10805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2452:3:28","subExpression":{"id":10804,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10797,"src":"2452:1:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10806,"nodeType":"ExpressionStatement","src":"2452:3:28"},"nodeType":"ForStatement","src":"2407:551:28"},{"expression":{"id":10824,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"2968:62:28","subExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10817,"name":"LibSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14923,"src":"2975:10:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibSession_$14923_$","typeString":"type(library LibSession)"}},"id":10818,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2986:15:28","memberName":"_storageSession","nodeType":"MemberAccess","referencedDeclaration":14396,"src":"2975:26:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageSession_$14384_storage_ptr_$","typeString":"function () pure returns (struct LibSession.StorageSession storage pointer)"}},"id":10819,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2975:28:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$14384_storage_ptr","typeString":"struct LibSession.StorageSession storage pointer"}},"id":10820,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3004:14:28","memberName":"sessionCurrent","nodeType":"MemberAccess","referencedDeclaration":14383,"src":"2975:43:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_SessionCurrent_$14354_storage_$","typeString":"mapping(address => struct LibSession.SessionCurrent storage ref)"}},"id":10823,"indexExpression":{"expression":{"id":10821,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3019:3:28","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10822,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3023:6:28","memberName":"sender","nodeType":"MemberAccess","src":"3019:10:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2975:55:28","typeDescriptions":{"typeIdentifier":"t_struct$_SessionCurrent_$14354_storage","typeString":"struct LibSession.SessionCurrent storage ref"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10825,"nodeType":"ExpressionStatement","src":"2968:62:28"}]},"functionSelector":"9afffbf9","id":10827,"implemented":true,"kind":"function","modifiers":[],"name":"stopSessions","nameLocation":"2344:12:28","nodeType":"FunctionDefinition","parameters":{"id":10794,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10793,"mutability":"mutable","name":"_superTokens","nameLocation":"2374:12:28","nodeType":"VariableDeclaration","scope":10827,"src":"2357:29:28","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":10791,"name":"address","nodeType":"ElementaryTypeName","src":"2357:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10792,"nodeType":"ArrayTypeName","src":"2357:9:28","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"2356:31:28"},"returnParameters":{"id":10795,"nodeType":"ParameterList","parameters":[],"src":"2397:0:28"},"scope":10885,"src":"2335:702:28","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[11724],"body":{"id":10842,"nodeType":"Block","src":"3161:67:28","statements":[{"expression":{"arguments":[{"id":10838,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10829,"src":"3202:5:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10839,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10831,"src":"3209:11:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10836,"name":"LibSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14923,"src":"3178:10:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibSession_$14923_$","typeString":"type(library LibSession)"}},"id":10837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3189:12:28","memberName":"_getNewNonce","nodeType":"MemberAccess","referencedDeclaration":14700,"src":"3178:23:28","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":10840,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3178:43:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10835,"id":10841,"nodeType":"Return","src":"3171:50:28"}]},"functionSelector":"92c2226e","id":10843,"implemented":true,"kind":"function","modifiers":[],"name":"getNewSessionNonce","nameLocation":"3052:18:28","nodeType":"FunctionDefinition","parameters":{"id":10832,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10829,"mutability":"mutable","name":"_user","nameLocation":"3088:5:28","nodeType":"VariableDeclaration","scope":10843,"src":"3080:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10828,"name":"address","nodeType":"ElementaryTypeName","src":"3080:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10831,"mutability":"mutable","name":"_superToken","nameLocation":"3111:11:28","nodeType":"VariableDeclaration","scope":10843,"src":"3103:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10830,"name":"address","nodeType":"ElementaryTypeName","src":"3103:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3070:58:28"},"returnParameters":{"id":10835,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10834,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10843,"src":"3152:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10833,"name":"uint256","nodeType":"ElementaryTypeName","src":"3152:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3151:9:28"},"scope":10885,"src":"3043:185:28","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[11741],"body":{"id":10867,"nodeType":"Block","src":"3396:78:28","statements":[{"expression":{"arguments":[{"id":10862,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10845,"src":"3440:5:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10863,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10847,"src":"3447:11:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10864,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10849,"src":"3460:6:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10860,"name":"LibSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14923,"src":"3413:10:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibSession_$14923_$","typeString":"type(library LibSession)"}},"id":10861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3424:15:28","memberName":"_getSessionData","nodeType":"MemberAccess","referencedDeclaration":14814,"src":"3413:26:28","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_int96_$_t_uint96_$_t_uint256_$_t_uint256_$","typeString":"function (address,address,uint256) view returns (int96,uint96,uint256,uint256)"}},"id":10865,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3413:54:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int96_$_t_uint96_$_t_uint256_$_t_uint256_$","typeString":"tuple(int96,uint96,uint256,uint256)"}},"functionReturnParameters":10859,"id":10866,"nodeType":"Return","src":"3406:61:28"}]},"functionSelector":"8ff3849b","id":10868,"implemented":true,"kind":"function","modifiers":[],"name":"getSessionData","nameLocation":"3243:14:28","nodeType":"FunctionDefinition","parameters":{"id":10850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10845,"mutability":"mutable","name":"_user","nameLocation":"3275:5:28","nodeType":"VariableDeclaration","scope":10868,"src":"3267:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10844,"name":"address","nodeType":"ElementaryTypeName","src":"3267:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10847,"mutability":"mutable","name":"_superToken","nameLocation":"3298:11:28","nodeType":"VariableDeclaration","scope":10868,"src":"3290:19:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10846,"name":"address","nodeType":"ElementaryTypeName","src":"3290:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10849,"mutability":"mutable","name":"_nonce","nameLocation":"3327:6:28","nodeType":"VariableDeclaration","scope":10868,"src":"3319:14:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10848,"name":"uint256","nodeType":"ElementaryTypeName","src":"3319:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3257:82:28"},"returnParameters":{"id":10859,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10852,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10868,"src":"3363:5:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":10851,"name":"int96","nodeType":"ElementaryTypeName","src":"3363:5:28","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"},{"constant":false,"id":10854,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10868,"src":"3370:6:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":10853,"name":"uint96","nodeType":"ElementaryTypeName","src":"3370:6:28","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":10856,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10868,"src":"3378:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10855,"name":"uint256","nodeType":"ElementaryTypeName","src":"3378:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10858,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10868,"src":"3387:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10857,"name":"uint256","nodeType":"ElementaryTypeName","src":"3387:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3362:33:28"},"scope":10885,"src":"3234:240:28","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[11751],"body":{"id":10883,"nodeType":"Block","src":"3590:64:28","statements":[{"expression":{"arguments":[{"id":10880,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10870,"src":"3641:5:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10878,"name":"LibSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14923,"src":"3607:10:28","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibSession_$14923_$","typeString":"type(library LibSession)"}},"id":10879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3618:22:28","memberName":"_getCurrentSessionData","nodeType":"MemberAccess","referencedDeclaration":14754,"src":"3607:33:28","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (address) view returns (uint256,address[] memory)"}},"id":10881,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3607:40:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"tuple(uint256,address[] memory)"}},"functionReturnParameters":10877,"id":10882,"nodeType":"Return","src":"3600:47:28"}]},"functionSelector":"53732469","id":10884,"implemented":true,"kind":"function","modifiers":[],"name":"getCurrentSessionData","nameLocation":"3489:21:28","nodeType":"FunctionDefinition","parameters":{"id":10871,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10870,"mutability":"mutable","name":"_user","nameLocation":"3528:5:28","nodeType":"VariableDeclaration","scope":10884,"src":"3520:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10869,"name":"address","nodeType":"ElementaryTypeName","src":"3520:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3510:29:28"},"returnParameters":{"id":10877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10873,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10884,"src":"3563:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10872,"name":"uint256","nodeType":"ElementaryTypeName","src":"3563:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10876,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10884,"src":"3572:16:28","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":10874,"name":"address","nodeType":"ElementaryTypeName","src":"3572:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10875,"nodeType":"ArrayTypeName","src":"3572:9:28","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"3562:27:28"},"scope":10885,"src":"3480:174:28","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":10886,"src":"273:3383:28","usedErrors":[12325,12327,12339,14335,14337,14339]}],"src":"37:3620:28"},"id":28},"contracts/facets/utils/AccessControl.sol":{"ast":{"absolutePath":"contracts/facets/utils/AccessControl.sol","exportedSymbols":{"AccessControl":[11030],"IAccessControl":[11802],"LibAccessControl":[15479]},"id":11031,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":10887,"literals":["solidity","^","0.8",".9"],"nodeType":"PragmaDirective","src":"32:23:29"},{"absolutePath":"contracts/libraries/utils/LibAccessControl.sol","file":"../../libraries/utils/LibAccessControl.sol","id":10889,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11031,"sourceUnit":15480,"src":"57:76:29","symbolAliases":[{"foreign":{"id":10888,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15479,"src":"65:16:29","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/utils/IAccessControl.sol","file":"../../interfaces/utils/IAccessControl.sol","id":10891,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11031,"sourceUnit":11803,"src":"134:73:29","symbolAliases":[{"foreign":{"id":10890,"name":"IAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11802,"src":"142:14:29","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":10892,"name":"IAccessControl","nameLocations":["235:14:29"],"nodeType":"IdentifierPath","referencedDeclaration":11802,"src":"235:14:29"},"id":10893,"nodeType":"InheritanceSpecifier","src":"235:14:29"}],"canonicalName":"AccessControl","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":11030,"linearizedBaseContracts":[11030,11802],"name":"AccessControl","nameLocation":"218:13:29","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"eventSelector":"bd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff","id":10901,"name":"RoleAdminChanged","nameLocation":"262:16:29","nodeType":"EventDefinition","parameters":{"id":10900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10895,"indexed":true,"mutability":"mutable","name":"role","nameLocation":"304:4:29","nodeType":"VariableDeclaration","scope":10901,"src":"288:20:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10894,"name":"bytes32","nodeType":"ElementaryTypeName","src":"288:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":10897,"indexed":true,"mutability":"mutable","name":"previousAdminRole","nameLocation":"334:17:29","nodeType":"VariableDeclaration","scope":10901,"src":"318:33:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10896,"name":"bytes32","nodeType":"ElementaryTypeName","src":"318:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":10899,"indexed":true,"mutability":"mutable","name":"newAdminRole","nameLocation":"377:12:29","nodeType":"VariableDeclaration","scope":10901,"src":"361:28:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10898,"name":"bytes32","nodeType":"ElementaryTypeName","src":"361:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"278:117:29"},"src":"256:140:29"},{"anonymous":false,"eventSelector":"2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","id":10909,"name":"RoleGranted","nameLocation":"408:11:29","nodeType":"EventDefinition","parameters":{"id":10908,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10903,"indexed":true,"mutability":"mutable","name":"role","nameLocation":"445:4:29","nodeType":"VariableDeclaration","scope":10909,"src":"429:20:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10902,"name":"bytes32","nodeType":"ElementaryTypeName","src":"429:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":10905,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"475:7:29","nodeType":"VariableDeclaration","scope":10909,"src":"459:23:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10904,"name":"address","nodeType":"ElementaryTypeName","src":"459:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10907,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"508:6:29","nodeType":"VariableDeclaration","scope":10909,"src":"492:22:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10906,"name":"address","nodeType":"ElementaryTypeName","src":"492:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"419:101:29"},"src":"402:119:29"},{"anonymous":false,"eventSelector":"f6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b","id":10917,"name":"RoleRevoked","nameLocation":"533:11:29","nodeType":"EventDefinition","parameters":{"id":10916,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10911,"indexed":true,"mutability":"mutable","name":"role","nameLocation":"570:4:29","nodeType":"VariableDeclaration","scope":10917,"src":"554:20:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10910,"name":"bytes32","nodeType":"ElementaryTypeName","src":"554:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":10913,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"600:7:29","nodeType":"VariableDeclaration","scope":10917,"src":"584:23:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10912,"name":"address","nodeType":"ElementaryTypeName","src":"584:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10915,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"633:6:29","nodeType":"VariableDeclaration","scope":10917,"src":"617:22:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10914,"name":"address","nodeType":"ElementaryTypeName","src":"617:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"544:101:29"},"src":"527:119:29"},{"baseFunctions":[11759],"body":{"id":10925,"nodeType":"Block","src":"715:59:29","statements":[{"expression":{"expression":{"id":10922,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15479,"src":"732:16:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$15479_$","typeString":"type(library LibAccessControl)"}},"id":10923,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"749:18:29","memberName":"DEFAULT_ADMIN_ROLE","nodeType":"MemberAccess","referencedDeclaration":15192,"src":"732:35:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":10921,"id":10924,"nodeType":"Return","src":"725:42:29"}]},"functionSelector":"52a9c8d7","id":10926,"implemented":true,"kind":"function","modifiers":[],"name":"getDefaultAdminRole","nameLocation":"661:19:29","nodeType":"FunctionDefinition","parameters":{"id":10918,"nodeType":"ParameterList","parameters":[],"src":"680:2:29"},"returnParameters":{"id":10921,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10920,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10926,"src":"706:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10919,"name":"bytes32","nodeType":"ElementaryTypeName","src":"706:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"705:9:29"},"scope":11030,"src":"652:122:29","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[11766],"body":{"id":10940,"nodeType":"Block","src":"850:52:29","statements":[{"expression":{"arguments":[{"arguments":[{"id":10936,"name":"_role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10928,"src":"888:5:29","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":10934,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"877:3:29","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":10935,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"881:6:29","memberName":"encode","nodeType":"MemberAccess","src":"877:10:29","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":10937,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"877:17:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":10933,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"867:9:29","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":10938,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"867:28:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":10932,"id":10939,"nodeType":"Return","src":"860:35:29"}]},"functionSelector":"6e9067fb","id":10941,"implemented":true,"kind":"function","modifiers":[],"name":"getRole","nameLocation":"789:7:29","nodeType":"FunctionDefinition","parameters":{"id":10929,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10928,"mutability":"mutable","name":"_role","nameLocation":"811:5:29","nodeType":"VariableDeclaration","scope":10941,"src":"797:19:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":10927,"name":"string","nodeType":"ElementaryTypeName","src":"797:6:29","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"796:21:29"},"returnParameters":{"id":10932,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10931,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10941,"src":"841:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10930,"name":"bytes32","nodeType":"ElementaryTypeName","src":"841:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"840:9:29"},"scope":11030,"src":"780:122:29","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[11775],"body":{"id":10956,"nodeType":"Block","src":"1009:66:29","statements":[{"expression":{"arguments":[{"id":10952,"name":"_role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10943,"src":"1052:5:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":10953,"name":"_account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10945,"src":"1059:8:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10950,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15479,"src":"1026:16:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$15479_$","typeString":"type(library LibAccessControl)"}},"id":10951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1043:8:29","memberName":"_hasRole","nodeType":"MemberAccess","referencedDeclaration":15278,"src":"1026:25:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":10954,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1026:42:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":10949,"id":10955,"nodeType":"Return","src":"1019:49:29"}]},"functionSelector":"91d14854","id":10957,"implemented":true,"kind":"function","modifiers":[],"name":"hasRole","nameLocation":"917:7:29","nodeType":"FunctionDefinition","parameters":{"id":10946,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10943,"mutability":"mutable","name":"_role","nameLocation":"942:5:29","nodeType":"VariableDeclaration","scope":10957,"src":"934:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10942,"name":"bytes32","nodeType":"ElementaryTypeName","src":"934:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":10945,"mutability":"mutable","name":"_account","nameLocation":"965:8:29","nodeType":"VariableDeclaration","scope":10957,"src":"957:16:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10944,"name":"address","nodeType":"ElementaryTypeName","src":"957:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"924:55:29"},"returnParameters":{"id":10949,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10948,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10957,"src":"1003:4:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10947,"name":"bool","nodeType":"ElementaryTypeName","src":"1003:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1002:6:29"},"scope":11030,"src":"908:167:29","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[11782],"body":{"id":10969,"nodeType":"Block","src":"1150:61:29","statements":[{"expression":{"arguments":[{"id":10966,"name":"_role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10959,"src":"1198:5:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":10964,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15479,"src":"1167:16:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$15479_$","typeString":"type(library LibAccessControl)"}},"id":10965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1184:13:29","memberName":"_getRoleAdmin","nodeType":"MemberAccess","referencedDeclaration":15347,"src":"1167:30:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":10967,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1167:37:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":10963,"id":10968,"nodeType":"Return","src":"1160:44:29"}]},"functionSelector":"248a9ca3","id":10970,"implemented":true,"kind":"function","modifiers":[],"name":"getRoleAdmin","nameLocation":"1090:12:29","nodeType":"FunctionDefinition","parameters":{"id":10960,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10959,"mutability":"mutable","name":"_role","nameLocation":"1111:5:29","nodeType":"VariableDeclaration","scope":10970,"src":"1103:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10958,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1103:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1102:15:29"},"returnParameters":{"id":10963,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10962,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":10970,"src":"1141:7:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10961,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1141:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1140:9:29"},"scope":11030,"src":"1081:130:29","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[11789],"body":{"id":10992,"nodeType":"Block","src":"1278:172:29","statements":[{"expression":{"arguments":[{"arguments":[{"id":10982,"name":"_role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10972,"src":"1366:5:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":10980,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15479,"src":"1335:16:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$15479_$","typeString":"type(library LibAccessControl)"}},"id":10981,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1352:13:29","memberName":"_getRoleAdmin","nodeType":"MemberAccess","referencedDeclaration":15347,"src":"1335:30:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":10983,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1335:37:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":10977,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15479,"src":"1288:16:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$15479_$","typeString":"type(library LibAccessControl)"}},"id":10979,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1305:16:29","memberName":"_requireOnlyRole","nodeType":"MemberAccess","referencedDeclaration":15259,"src":"1288:33:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$__$","typeString":"function (bytes32) view"}},"id":10984,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1288:94:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10985,"nodeType":"ExpressionStatement","src":"1288:94:29"},{"expression":{"arguments":[{"id":10988,"name":"_role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10972,"src":"1427:5:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":10989,"name":"_account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10974,"src":"1434:8:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10986,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15479,"src":"1399:16:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$15479_$","typeString":"type(library LibAccessControl)"}},"id":10987,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1416:10:29","memberName":"_grantRole","nodeType":"MemberAccess","referencedDeclaration":15425,"src":"1399:27:29","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":10990,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1399:44:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"functionReturnParameters":10976,"id":10991,"nodeType":"Return","src":"1392:51:29"}]},"functionSelector":"2f2ff15d","id":10993,"implemented":true,"kind":"function","modifiers":[],"name":"grantRole","nameLocation":"1226:9:29","nodeType":"FunctionDefinition","parameters":{"id":10975,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10972,"mutability":"mutable","name":"_role","nameLocation":"1244:5:29","nodeType":"VariableDeclaration","scope":10993,"src":"1236:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10971,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1236:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":10974,"mutability":"mutable","name":"_account","nameLocation":"1259:8:29","nodeType":"VariableDeclaration","scope":10993,"src":"1251:16:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10973,"name":"address","nodeType":"ElementaryTypeName","src":"1251:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1235:33:29"},"returnParameters":{"id":10976,"nodeType":"ParameterList","parameters":[],"src":"1278:0:29"},"scope":11030,"src":"1217:233:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[11796],"body":{"id":11015,"nodeType":"Block","src":"1518:173:29","statements":[{"expression":{"arguments":[{"arguments":[{"id":11005,"name":"_role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10995,"src":"1606:5:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":11003,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15479,"src":"1575:16:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$15479_$","typeString":"type(library LibAccessControl)"}},"id":11004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1592:13:29","memberName":"_getRoleAdmin","nodeType":"MemberAccess","referencedDeclaration":15347,"src":"1575:30:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":11006,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1575:37:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":11000,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15479,"src":"1528:16:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$15479_$","typeString":"type(library LibAccessControl)"}},"id":11002,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1545:16:29","memberName":"_requireOnlyRole","nodeType":"MemberAccess","referencedDeclaration":15259,"src":"1528:33:29","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$__$","typeString":"function (bytes32) view"}},"id":11007,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1528:94:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11008,"nodeType":"ExpressionStatement","src":"1528:94:29"},{"expression":{"arguments":[{"id":11011,"name":"_role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10995,"src":"1668:5:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":11012,"name":"_account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10997,"src":"1675:8:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":11009,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15479,"src":"1639:16:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$15479_$","typeString":"type(library LibAccessControl)"}},"id":11010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1656:11:29","memberName":"_revokeRole","nodeType":"MemberAccess","referencedDeclaration":15465,"src":"1639:28:29","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":11013,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1639:45:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"functionReturnParameters":10999,"id":11014,"nodeType":"Return","src":"1632:52:29"}]},"functionSelector":"d547741f","id":11016,"implemented":true,"kind":"function","modifiers":[],"name":"revokeRole","nameLocation":"1465:10:29","nodeType":"FunctionDefinition","parameters":{"id":10998,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10995,"mutability":"mutable","name":"_role","nameLocation":"1484:5:29","nodeType":"VariableDeclaration","scope":11016,"src":"1476:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10994,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1476:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":10997,"mutability":"mutable","name":"_account","nameLocation":"1499:8:29","nodeType":"VariableDeclaration","scope":11016,"src":"1491:16:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10996,"name":"address","nodeType":"ElementaryTypeName","src":"1491:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1475:33:29"},"returnParameters":{"id":10999,"nodeType":"ParameterList","parameters":[],"src":"1518:0:29"},"scope":11030,"src":"1456:235:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[11801],"body":{"id":11028,"nodeType":"Block","src":"1743:71:29","statements":[{"expression":{"arguments":[{"id":11023,"name":"_role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11018,"src":"1789:5:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":11024,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1796:3:29","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11025,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1800:6:29","memberName":"sender","nodeType":"MemberAccess","src":"1796:10:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":11021,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15479,"src":"1760:16:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$15479_$","typeString":"type(library LibAccessControl)"}},"id":11022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1777:11:29","memberName":"_revokeRole","nodeType":"MemberAccess","referencedDeclaration":15465,"src":"1760:28:29","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":11026,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1760:47:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"functionReturnParameters":11020,"id":11027,"nodeType":"Return","src":"1753:54:29"}]},"functionSelector":"8bb9c5bf","id":11029,"implemented":true,"kind":"function","modifiers":[],"name":"renounceRole","nameLocation":"1706:12:29","nodeType":"FunctionDefinition","parameters":{"id":11019,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11018,"mutability":"mutable","name":"_role","nameLocation":"1727:5:29","nodeType":"VariableDeclaration","scope":11029,"src":"1719:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11017,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1719:7:29","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1718:15:29"},"returnParameters":{"id":11020,"nodeType":"ParameterList","parameters":[],"src":"1743:0:29"},"scope":11030,"src":"1697:117:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":11031,"src":"209:1607:29","usedErrors":[]}],"src":"32:1785:29"},"id":29},"contracts/facets/utils/Cut.sol":{"ast":{"absolutePath":"contracts/facets/utils/Cut.sol","exportedSymbols":{"Cut":[11070],"ICut":[11840],"LibAccessControl":[15479],"LibDiamond":[16228]},"id":11071,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":11032,"literals":["solidity","^","0.8",".9"],"nodeType":"PragmaDirective","src":"32:23:30"},{"absolutePath":"contracts/interfaces/utils/ICut.sol","file":"../../interfaces/utils/ICut.sol","id":11034,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11071,"sourceUnit":11841,"src":"57:53:30","symbolAliases":[{"foreign":{"id":11033,"name":"ICut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11840,"src":"65:4:30","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/libraries/utils/LibDiamond.sol","file":"../../libraries/utils/LibDiamond.sol","id":11036,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11071,"sourceUnit":16229,"src":"111:64:30","symbolAliases":[{"foreign":{"id":11035,"name":"LibDiamond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16228,"src":"119:10:30","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/libraries/utils/LibAccessControl.sol","file":"../../libraries/utils/LibAccessControl.sol","id":11038,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11071,"sourceUnit":15480,"src":"176:76:30","symbolAliases":[{"foreign":{"id":11037,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15479,"src":"184:16:30","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":11039,"name":"ICut","nameLocations":["418:4:30"],"nodeType":"IdentifierPath","referencedDeclaration":11840,"src":"418:4:30"},"id":11040,"nodeType":"InheritanceSpecifier","src":"418:4:30"}],"canonicalName":"Cut","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":11070,"linearizedBaseContracts":[11070,11840],"name":"Cut","nameLocation":"411:3:30","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[11829],"body":{"id":11068,"nodeType":"Block","src":"1014:140:30","statements":[{"expression":{"arguments":[{"expression":{"id":11056,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15479,"src":"1058:16:30","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$15479_$","typeString":"type(library LibAccessControl)"}},"id":11057,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1075:15:30","memberName":"MAINTAINER_ROLE","nodeType":"MemberAccess","referencedDeclaration":15200,"src":"1058:32:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":11053,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15479,"src":"1024:16:30","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$15479_$","typeString":"type(library LibAccessControl)"}},"id":11055,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1041:16:30","memberName":"_requireOnlyRole","nodeType":"MemberAccess","referencedDeclaration":15259,"src":"1024:33:30","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$__$","typeString":"function (bytes32) view"}},"id":11058,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1024:67:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11059,"nodeType":"ExpressionStatement","src":"1024:67:30"},{"expression":{"arguments":[{"id":11063,"name":"_diamondCut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11045,"src":"1117:11:30","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_FacetCut_$11817_calldata_ptr_$dyn_calldata_ptr","typeString":"struct ICut.FacetCut calldata[] calldata"}},{"id":11064,"name":"_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11047,"src":"1130:5:30","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11065,"name":"_calldata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11049,"src":"1137:9:30","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_FacetCut_$11817_calldata_ptr_$dyn_calldata_ptr","typeString":"struct ICut.FacetCut calldata[] calldata"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":11060,"name":"LibDiamond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16228,"src":"1101:10:30","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibDiamond_$16228_$","typeString":"type(library LibDiamond)"}},"id":11062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1112:4:30","memberName":"_cut","nodeType":"MemberAccess","referencedDeclaration":15649,"src":"1101:15:30","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (struct ICut.FacetCut memory[] memory,address,bytes memory)"}},"id":11066,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1101:46:30","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11067,"nodeType":"ExpressionStatement","src":"1101:46:30"}]},"documentation":{"id":11041,"nodeType":"StructuredDocumentation","src":"429:438:30","text":"@notice Add/replace/remove any number of functions and optionally execute\n a function with delegatecall\n @param _diamondCut Contains the facet addresses and function selectors\n @param _init The address of the contract or facet to execute _calldata\n @param _calldata A function call, including function selector and arguments\n _calldata is executed with delegatecall on _init"},"functionSelector":"1f931c1c","id":11069,"implemented":true,"kind":"function","modifiers":[],"name":"diamondCut","nameLocation":"881:10:30","nodeType":"FunctionDefinition","overrides":{"id":11051,"nodeType":"OverrideSpecifier","overrides":[],"src":"1005:8:30"},"parameters":{"id":11050,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11045,"mutability":"mutable","name":"_diamondCut","nameLocation":"921:11:30","nodeType":"VariableDeclaration","scope":11069,"src":"901:31:30","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_FacetCut_$11817_calldata_ptr_$dyn_calldata_ptr","typeString":"struct ICut.FacetCut[]"},"typeName":{"baseType":{"id":11043,"nodeType":"UserDefinedTypeName","pathNode":{"id":11042,"name":"FacetCut","nameLocations":["901:8:30"],"nodeType":"IdentifierPath","referencedDeclaration":11817,"src":"901:8:30"},"referencedDeclaration":11817,"src":"901:8:30","typeDescriptions":{"typeIdentifier":"t_struct$_FacetCut_$11817_storage_ptr","typeString":"struct ICut.FacetCut"}},"id":11044,"nodeType":"ArrayTypeName","src":"901:10:30","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_FacetCut_$11817_storage_$dyn_storage_ptr","typeString":"struct ICut.FacetCut[]"}},"visibility":"internal"},{"constant":false,"id":11047,"mutability":"mutable","name":"_init","nameLocation":"950:5:30","nodeType":"VariableDeclaration","scope":11069,"src":"942:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11046,"name":"address","nodeType":"ElementaryTypeName","src":"942:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11049,"mutability":"mutable","name":"_calldata","nameLocation":"980:9:30","nodeType":"VariableDeclaration","scope":11069,"src":"965:24:30","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":11048,"name":"bytes","nodeType":"ElementaryTypeName","src":"965:5:30","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"891:104:30"},"returnParameters":{"id":11052,"nodeType":"ParameterList","parameters":[],"src":"1014:0:30"},"scope":11070,"src":"872:282:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":11071,"src":"402:754:30","usedErrors":[15489]}],"src":"32:1125:30"},"id":30},"contracts/facets/utils/Loupe.sol":{"ast":{"absolutePath":"contracts/facets/utils/Loupe.sol","exportedSymbols":{"IERC165":[11851],"ILoupe":[11892],"LibDiamond":[16228],"Loupe":[11254]},"id":11255,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":11072,"literals":["solidity","^","0.8",".9"],"nodeType":"PragmaDirective","src":"32:23:31"},{"absolutePath":"contracts/libraries/utils/LibDiamond.sol","file":"../../libraries/utils/LibDiamond.sol","id":11074,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11255,"sourceUnit":16229,"src":"57:64:31","symbolAliases":[{"foreign":{"id":11073,"name":"LibDiamond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16228,"src":"65:10:31","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/utils/ILoupe.sol","file":"../../interfaces/utils/ILoupe.sol","id":11076,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11255,"sourceUnit":11893,"src":"122:57:31","symbolAliases":[{"foreign":{"id":11075,"name":"ILoupe","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11892,"src":"130:6:31","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/utils/IERC165.sol","file":"../../interfaces/utils/IERC165.sol","id":11078,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11255,"sourceUnit":11852,"src":"180:59:31","symbolAliases":[{"foreign":{"id":11077,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11851,"src":"188:7:31","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":11079,"name":"ILoupe","nameLocations":["385:6:31"],"nodeType":"IdentifierPath","referencedDeclaration":11892,"src":"385:6:31"},"id":11080,"nodeType":"InheritanceSpecifier","src":"385:6:31"},{"baseName":{"id":11081,"name":"IERC165","nameLocations":["393:7:31"],"nodeType":"IdentifierPath","referencedDeclaration":11851,"src":"393:7:31"},"id":11082,"nodeType":"InheritanceSpecifier","src":"393:7:31"}],"canonicalName":"Loupe","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":11254,"linearizedBaseContracts":[11254,11851,11892],"name":"Loupe","nameLocation":"376:5:31","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[11867],"body":{"id":11151,"nodeType":"Block","src":"850:480:31","statements":[{"assignments":[11095],"declarations":[{"constant":false,"id":11095,"mutability":"mutable","name":"s","nameLocation":"894:1:31","nodeType":"VariableDeclaration","scope":11151,"src":"860:35:31","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond"},"typeName":{"id":11094,"nodeType":"UserDefinedTypeName","pathNode":{"id":11093,"name":"LibDiamond.StorageDiamond","nameLocations":["860:10:31","871:14:31"],"nodeType":"IdentifierPath","referencedDeclaration":15523,"src":"860:25:31"},"referencedDeclaration":15523,"src":"860:25:31","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond"}},"visibility":"internal"}],"id":11099,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11096,"name":"LibDiamond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16228,"src":"898:10:31","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibDiamond_$16228_$","typeString":"type(library LibDiamond)"}},"id":11097,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"909:15:31","memberName":"_storageDiamond","nodeType":"MemberAccess","referencedDeclaration":15535,"src":"898:26:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageDiamond_$15523_storage_ptr_$","typeString":"function () pure returns (struct LibDiamond.StorageDiamond storage pointer)"}},"id":11098,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"898:28:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"860:66:31"},{"assignments":[11101],"declarations":[{"constant":false,"id":11101,"mutability":"mutable","name":"numFacets","nameLocation":"944:9:31","nodeType":"VariableDeclaration","scope":11151,"src":"936:17:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11100,"name":"uint256","nodeType":"ElementaryTypeName","src":"936:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11105,"initialValue":{"expression":{"expression":{"id":11102,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11095,"src":"956:1:31","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":11103,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"958:14:31","memberName":"facetAddresses","nodeType":"MemberAccess","referencedDeclaration":15518,"src":"956:16:31","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":11104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"973:6:31","memberName":"length","nodeType":"MemberAccess","src":"956:23:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"936:43:31"},{"expression":{"id":11113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11106,"name":"facets_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11089,"src":"989:7:31","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Facet_$11859_memory_ptr_$dyn_memory_ptr","typeString":"struct ILoupe.Facet memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11111,"name":"numFacets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11101,"src":"1011:9:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11110,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"999:11:31","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Facet_$11859_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (struct ILoupe.Facet memory[] memory)"},"typeName":{"baseType":{"id":11108,"nodeType":"UserDefinedTypeName","pathNode":{"id":11107,"name":"Facet","nameLocations":["1003:5:31"],"nodeType":"IdentifierPath","referencedDeclaration":11859,"src":"1003:5:31"},"referencedDeclaration":11859,"src":"1003:5:31","typeDescriptions":{"typeIdentifier":"t_struct$_Facet_$11859_storage_ptr","typeString":"struct ILoupe.Facet"}},"id":11109,"nodeType":"ArrayTypeName","src":"1003:7:31","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Facet_$11859_storage_$dyn_storage_ptr","typeString":"struct ILoupe.Facet[]"}}},"id":11112,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"999:22:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Facet_$11859_memory_ptr_$dyn_memory_ptr","typeString":"struct ILoupe.Facet memory[] memory"}},"src":"989:32:31","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Facet_$11859_memory_ptr_$dyn_memory_ptr","typeString":"struct ILoupe.Facet memory[] memory"}},"id":11114,"nodeType":"ExpressionStatement","src":"989:32:31"},{"body":{"id":11149,"nodeType":"Block","src":"1067:257:31","statements":[{"assignments":[11125],"declarations":[{"constant":false,"id":11125,"mutability":"mutable","name":"facetAddress_","nameLocation":"1089:13:31","nodeType":"VariableDeclaration","scope":11149,"src":"1081:21:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11124,"name":"address","nodeType":"ElementaryTypeName","src":"1081:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":11130,"initialValue":{"baseExpression":{"expression":{"id":11126,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11095,"src":"1105:1:31","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":11127,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1107:14:31","memberName":"facetAddresses","nodeType":"MemberAccess","referencedDeclaration":15518,"src":"1105:16:31","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":11129,"indexExpression":{"id":11128,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11116,"src":"1122:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1105:19:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1081:43:31"},{"expression":{"id":11136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":11131,"name":"facets_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11089,"src":"1138:7:31","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Facet_$11859_memory_ptr_$dyn_memory_ptr","typeString":"struct ILoupe.Facet memory[] memory"}},"id":11133,"indexExpression":{"id":11132,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11116,"src":"1146:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1138:10:31","typeDescriptions":{"typeIdentifier":"t_struct$_Facet_$11859_memory_ptr","typeString":"struct ILoupe.Facet memory"}},"id":11134,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1149:12:31","memberName":"facetAddress","nodeType":"MemberAccess","referencedDeclaration":11855,"src":"1138:23:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11135,"name":"facetAddress_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11125,"src":"1164:13:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1138:39:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11137,"nodeType":"ExpressionStatement","src":"1138:39:31"},{"expression":{"id":11147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":11138,"name":"facets_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11089,"src":"1191:7:31","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Facet_$11859_memory_ptr_$dyn_memory_ptr","typeString":"struct ILoupe.Facet memory[] memory"}},"id":11140,"indexExpression":{"id":11139,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11116,"src":"1199:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1191:10:31","typeDescriptions":{"typeIdentifier":"t_struct$_Facet_$11859_memory_ptr","typeString":"struct ILoupe.Facet memory"}},"id":11141,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1202:17:31","memberName":"functionSelectors","nodeType":"MemberAccess","referencedDeclaration":11858,"src":"1191:28:31","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"baseExpression":{"expression":{"id":11142,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11095,"src":"1222:1:31","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":11143,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1241:22:31","memberName":"facetFunctionSelectors","nodeType":"MemberAccess","referencedDeclaration":15515,"src":"1222:41:31","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_FacetFunctionSelectors_$15505_storage_$","typeString":"mapping(address => struct LibDiamond.FacetFunctionSelectors storage ref)"}},"id":11145,"indexExpression":{"id":11144,"name":"facetAddress_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11125,"src":"1264:13:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1222:56:31","typeDescriptions":{"typeIdentifier":"t_struct$_FacetFunctionSelectors_$15505_storage","typeString":"struct LibDiamond.FacetFunctionSelectors storage ref"}},"id":11146,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1296:17:31","memberName":"functionSelectors","nodeType":"MemberAccess","referencedDeclaration":15502,"src":"1222:91:31","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage","typeString":"bytes4[] storage ref"}},"src":"1191:122:31","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}},"id":11148,"nodeType":"ExpressionStatement","src":"1191:122:31"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11120,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11118,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11116,"src":"1047:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":11119,"name":"numFacets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11101,"src":"1051:9:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1047:13:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11150,"initializationExpression":{"assignments":[11116],"declarations":[{"constant":false,"id":11116,"mutability":"mutable","name":"i","nameLocation":"1044:1:31","nodeType":"VariableDeclaration","scope":11150,"src":"1036:9:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11115,"name":"uint256","nodeType":"ElementaryTypeName","src":"1036:7:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11117,"nodeType":"VariableDeclarationStatement","src":"1036:9:31"},"loopExpression":{"expression":{"id":11122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"1062:3:31","subExpression":{"id":11121,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11116,"src":"1062:1:31","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11123,"nodeType":"ExpressionStatement","src":"1062:3:31"},"nodeType":"ForStatement","src":"1031:293:31"}]},"documentation":{"id":11083,"nodeType":"StructuredDocumentation","src":"693:78:31","text":"@notice Gets all facets and their selectors.\n @return facets_ Facet"},"functionSelector":"7a0ed627","id":11152,"implemented":true,"kind":"function","modifiers":[],"name":"facets","nameLocation":"785:6:31","nodeType":"FunctionDefinition","overrides":{"id":11085,"nodeType":"OverrideSpecifier","overrides":[],"src":"808:8:31"},"parameters":{"id":11084,"nodeType":"ParameterList","parameters":[],"src":"791:2:31"},"returnParameters":{"id":11090,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11089,"mutability":"mutable","name":"facets_","nameLocation":"841:7:31","nodeType":"VariableDeclaration","scope":11152,"src":"826:22:31","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Facet_$11859_memory_ptr_$dyn_memory_ptr","typeString":"struct ILoupe.Facet[]"},"typeName":{"baseType":{"id":11087,"nodeType":"UserDefinedTypeName","pathNode":{"id":11086,"name":"Facet","nameLocations":["826:5:31"],"nodeType":"IdentifierPath","referencedDeclaration":11859,"src":"826:5:31"},"referencedDeclaration":11859,"src":"826:5:31","typeDescriptions":{"typeIdentifier":"t_struct$_Facet_$11859_storage_ptr","typeString":"struct ILoupe.Facet"}},"id":11088,"nodeType":"ArrayTypeName","src":"826:7:31","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Facet_$11859_storage_$dyn_storage_ptr","typeString":"struct ILoupe.Facet[]"}},"visibility":"internal"}],"src":"825:24:31"},"scope":11254,"src":"776:554:31","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[11876],"body":{"id":11179,"nodeType":"Block","src":"1621:195:31","statements":[{"assignments":[11166],"declarations":[{"constant":false,"id":11166,"mutability":"mutable","name":"s","nameLocation":"1665:1:31","nodeType":"VariableDeclaration","scope":11179,"src":"1631:35:31","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond"},"typeName":{"id":11165,"nodeType":"UserDefinedTypeName","pathNode":{"id":11164,"name":"LibDiamond.StorageDiamond","nameLocations":["1631:10:31","1642:14:31"],"nodeType":"IdentifierPath","referencedDeclaration":15523,"src":"1631:25:31"},"referencedDeclaration":15523,"src":"1631:25:31","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond"}},"visibility":"internal"}],"id":11170,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11167,"name":"LibDiamond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16228,"src":"1669:10:31","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibDiamond_$16228_$","typeString":"type(library LibDiamond)"}},"id":11168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1680:15:31","memberName":"_storageDiamond","nodeType":"MemberAccess","referencedDeclaration":15535,"src":"1669:26:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageDiamond_$15523_storage_ptr_$","typeString":"function () pure returns (struct LibDiamond.StorageDiamond storage pointer)"}},"id":11169,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1669:28:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"1631:66:31"},{"expression":{"id":11177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11171,"name":"facetFunctionSelectors_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11160,"src":"1707:23:31","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"baseExpression":{"expression":{"id":11172,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11166,"src":"1733:1:31","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":11173,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1748:22:31","memberName":"facetFunctionSelectors","nodeType":"MemberAccess","referencedDeclaration":15515,"src":"1733:37:31","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_FacetFunctionSelectors_$15505_storage_$","typeString":"mapping(address => struct LibDiamond.FacetFunctionSelectors storage ref)"}},"id":11175,"indexExpression":{"id":11174,"name":"_facet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11155,"src":"1771:6:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1733:45:31","typeDescriptions":{"typeIdentifier":"t_struct$_FacetFunctionSelectors_$15505_storage","typeString":"struct LibDiamond.FacetFunctionSelectors storage ref"}},"id":11176,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1792:17:31","memberName":"functionSelectors","nodeType":"MemberAccess","referencedDeclaration":15502,"src":"1733:76:31","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage","typeString":"bytes4[] storage ref"}},"src":"1707:102:31","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}},"id":11178,"nodeType":"ExpressionStatement","src":"1707:102:31"}]},"documentation":{"id":11153,"nodeType":"StructuredDocumentation","src":"1336:145:31","text":"@notice Gets all the function selectors provided by a facet.\n @param _facet The facet address.\n @return facetFunctionSelectors_"},"functionSelector":"adfca15e","id":11180,"implemented":true,"kind":"function","modifiers":[],"name":"facetFunctionSelectors","nameLocation":"1495:22:31","nodeType":"FunctionDefinition","overrides":{"id":11157,"nodeType":"OverrideSpecifier","overrides":[],"src":"1562:8:31"},"parameters":{"id":11156,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11155,"mutability":"mutable","name":"_facet","nameLocation":"1535:6:31","nodeType":"VariableDeclaration","scope":11180,"src":"1527:14:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11154,"name":"address","nodeType":"ElementaryTypeName","src":"1527:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1517:30:31"},"returnParameters":{"id":11161,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11160,"mutability":"mutable","name":"facetFunctionSelectors_","nameLocation":"1596:23:31","nodeType":"VariableDeclaration","scope":11180,"src":"1580:39:31","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[]"},"typeName":{"baseType":{"id":11158,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1580:6:31","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":11159,"nodeType":"ArrayTypeName","src":"1580:8:31","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage_ptr","typeString":"bytes4[]"}},"visibility":"internal"}],"src":"1579:41:31"},"scope":11254,"src":"1486:330:31","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[11883],"body":{"id":11202,"nodeType":"Block","src":"2045:127:31","statements":[{"assignments":[11192],"declarations":[{"constant":false,"id":11192,"mutability":"mutable","name":"s","nameLocation":"2089:1:31","nodeType":"VariableDeclaration","scope":11202,"src":"2055:35:31","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond"},"typeName":{"id":11191,"nodeType":"UserDefinedTypeName","pathNode":{"id":11190,"name":"LibDiamond.StorageDiamond","nameLocations":["2055:10:31","2066:14:31"],"nodeType":"IdentifierPath","referencedDeclaration":15523,"src":"2055:25:31"},"referencedDeclaration":15523,"src":"2055:25:31","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond"}},"visibility":"internal"}],"id":11196,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11193,"name":"LibDiamond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16228,"src":"2093:10:31","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibDiamond_$16228_$","typeString":"type(library LibDiamond)"}},"id":11194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2104:15:31","memberName":"_storageDiamond","nodeType":"MemberAccess","referencedDeclaration":15535,"src":"2093:26:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageDiamond_$15523_storage_ptr_$","typeString":"function () pure returns (struct LibDiamond.StorageDiamond storage pointer)"}},"id":11195,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2093:28:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2055:66:31"},{"expression":{"id":11200,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11197,"name":"facetAddresses_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11186,"src":"2131:15:31","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":11198,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11192,"src":"2149:1:31","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":11199,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2151:14:31","memberName":"facetAddresses","nodeType":"MemberAccess","referencedDeclaration":15518,"src":"2149:16:31","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"src":"2131:34:31","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":11201,"nodeType":"ExpressionStatement","src":"2131:34:31"}]},"documentation":{"id":11181,"nodeType":"StructuredDocumentation","src":"1822:90:31","text":"@notice Get all the facet addresses used by a diamond.\n @return facetAddresses_"},"functionSelector":"52ef6b2c","id":11203,"implemented":true,"kind":"function","modifiers":[],"name":"facetAddresses","nameLocation":"1926:14:31","nodeType":"FunctionDefinition","overrides":{"id":11183,"nodeType":"OverrideSpecifier","overrides":[],"src":"1981:8:31"},"parameters":{"id":11182,"nodeType":"ParameterList","parameters":[],"src":"1940:2:31"},"returnParameters":{"id":11187,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11186,"mutability":"mutable","name":"facetAddresses_","nameLocation":"2024:15:31","nodeType":"VariableDeclaration","scope":11203,"src":"2007:32:31","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":11184,"name":"address","nodeType":"ElementaryTypeName","src":"2007:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11185,"nodeType":"ArrayTypeName","src":"2007:9:31","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"2006:34:31"},"scope":11254,"src":"1917:255:31","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[11891],"body":{"id":11229,"nodeType":"Block","src":"2519:195:31","statements":[{"assignments":[11216],"declarations":[{"constant":false,"id":11216,"mutability":"mutable","name":"s","nameLocation":"2563:1:31","nodeType":"VariableDeclaration","scope":11229,"src":"2529:35:31","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond"},"typeName":{"id":11215,"nodeType":"UserDefinedTypeName","pathNode":{"id":11214,"name":"LibDiamond.StorageDiamond","nameLocations":["2529:10:31","2540:14:31"],"nodeType":"IdentifierPath","referencedDeclaration":15523,"src":"2529:25:31"},"referencedDeclaration":15523,"src":"2529:25:31","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond"}},"visibility":"internal"}],"id":11220,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11217,"name":"LibDiamond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16228,"src":"2567:10:31","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibDiamond_$16228_$","typeString":"type(library LibDiamond)"}},"id":11218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2578:15:31","memberName":"_storageDiamond","nodeType":"MemberAccess","referencedDeclaration":15535,"src":"2567:26:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageDiamond_$15523_storage_ptr_$","typeString":"function () pure returns (struct LibDiamond.StorageDiamond storage pointer)"}},"id":11219,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2567:28:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2529:66:31"},{"expression":{"id":11227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11221,"name":"facetAddress_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11210,"src":"2605:13:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"baseExpression":{"expression":{"id":11222,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11216,"src":"2621:1:31","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":11223,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2636:26:31","memberName":"selectorToFacetAndPosition","nodeType":"MemberAccess","referencedDeclaration":15510,"src":"2621:41:31","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_struct$_FacetAddressAndPosition_$15499_storage_$","typeString":"mapping(bytes4 => struct LibDiamond.FacetAddressAndPosition storage ref)"}},"id":11225,"indexExpression":{"id":11224,"name":"_functionSelector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11206,"src":"2663:17:31","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2621:60:31","typeDescriptions":{"typeIdentifier":"t_struct$_FacetAddressAndPosition_$15499_storage","typeString":"struct LibDiamond.FacetAddressAndPosition storage ref"}},"id":11226,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2695:12:31","memberName":"facetAddress","nodeType":"MemberAccess","referencedDeclaration":15496,"src":"2621:86:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2605:102:31","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11228,"nodeType":"ExpressionStatement","src":"2605:102:31"}]},"documentation":{"id":11204,"nodeType":"StructuredDocumentation","src":"2178:219:31","text":"@notice Gets the facet that supports the given selector.\n @dev If facet is not found return address(0).\n @param _functionSelector The function selector.\n @return facetAddress_ The facet address."},"functionSelector":"cdffacc6","id":11230,"implemented":true,"kind":"function","modifiers":[],"name":"facetAddress","nameLocation":"2411:12:31","nodeType":"FunctionDefinition","overrides":{"id":11208,"nodeType":"OverrideSpecifier","overrides":[],"src":"2478:8:31"},"parameters":{"id":11207,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11206,"mutability":"mutable","name":"_functionSelector","nameLocation":"2440:17:31","nodeType":"VariableDeclaration","scope":11230,"src":"2433:24:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":11205,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2433:6:31","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"2423:40:31"},"returnParameters":{"id":11211,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11210,"mutability":"mutable","name":"facetAddress_","nameLocation":"2504:13:31","nodeType":"VariableDeclaration","scope":11230,"src":"2496:21:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11209,"name":"address","nodeType":"ElementaryTypeName","src":"2496:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2495:23:31"},"scope":11254,"src":"2402:312:31","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[11850],"body":{"id":11252,"nodeType":"Block","src":"2852:135:31","statements":[{"assignments":[11242],"declarations":[{"constant":false,"id":11242,"mutability":"mutable","name":"s","nameLocation":"2896:1:31","nodeType":"VariableDeclaration","scope":11252,"src":"2862:35:31","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond"},"typeName":{"id":11241,"nodeType":"UserDefinedTypeName","pathNode":{"id":11240,"name":"LibDiamond.StorageDiamond","nameLocations":["2862:10:31","2873:14:31"],"nodeType":"IdentifierPath","referencedDeclaration":15523,"src":"2862:25:31"},"referencedDeclaration":15523,"src":"2862:25:31","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond"}},"visibility":"internal"}],"id":11246,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11243,"name":"LibDiamond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16228,"src":"2900:10:31","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibDiamond_$16228_$","typeString":"type(library LibDiamond)"}},"id":11244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2911:15:31","memberName":"_storageDiamond","nodeType":"MemberAccess","referencedDeclaration":15535,"src":"2900:26:31","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageDiamond_$15523_storage_ptr_$","typeString":"function () pure returns (struct LibDiamond.StorageDiamond storage pointer)"}},"id":11245,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2900:28:31","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2862:66:31"},{"expression":{"baseExpression":{"expression":{"id":11247,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11242,"src":"2945:1:31","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":11248,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2947:19:31","memberName":"supportedInterfaces","nodeType":"MemberAccess","referencedDeclaration":15522,"src":"2945:21:31","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_bool_$","typeString":"mapping(bytes4 => bool)"}},"id":11250,"indexExpression":{"id":11249,"name":"_interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11232,"src":"2967:12:31","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2945:35:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":11237,"id":11251,"nodeType":"Return","src":"2938:42:31"}]},"functionSelector":"01ffc9a7","id":11253,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"2761:17:31","nodeType":"FunctionDefinition","overrides":{"id":11234,"nodeType":"OverrideSpecifier","overrides":[],"src":"2828:8:31"},"parameters":{"id":11233,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11232,"mutability":"mutable","name":"_interfaceId","nameLocation":"2795:12:31","nodeType":"VariableDeclaration","scope":11253,"src":"2788:19:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":11231,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2788:6:31","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"2778:35:31"},"returnParameters":{"id":11237,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11236,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11253,"src":"2846:4:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11235,"name":"bool","nodeType":"ElementaryTypeName","src":"2846:4:31","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2845:6:31"},"scope":11254,"src":"2752:235:31","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":11255,"src":"367:2622:31","usedErrors":[]}],"src":"32:2958:31"},"id":31},"contracts/facets/utils/Utility.sol":{"ast":{"absolutePath":"contracts/facets/utils/Utility.sol","exportedSymbols":{"FailedWithdrawNativeToken":[11264],"IUtility":[11905],"LibAccessControl":[15479],"ReentrancyGuard":[67],"Utility":[11315]},"id":11316,"license":"BUSL-1.1","nodeType":"SourceUnit","nodes":[{"id":11256,"literals":["solidity","^","0.8",".9"],"nodeType":"PragmaDirective","src":"37:23:32"},{"absolutePath":"@openzeppelin/contracts/security/ReentrancyGuard.sol","file":"@openzeppelin/contracts/security/ReentrancyGuard.sol","id":11258,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11316,"sourceUnit":68,"src":"62:85:32","symbolAliases":[{"foreign":{"id":11257,"name":"ReentrancyGuard","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":67,"src":"70:15:32","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/libraries/utils/LibAccessControl.sol","file":"../../libraries/utils/LibAccessControl.sol","id":11260,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11316,"sourceUnit":15480,"src":"149:76:32","symbolAliases":[{"foreign":{"id":11259,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15479,"src":"157:16:32","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/utils/IUtility.sol","file":"../../interfaces/utils/IUtility.sol","id":11262,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":11316,"sourceUnit":11906,"src":"226:61:32","symbolAliases":[{"foreign":{"id":11261,"name":"IUtility","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11905,"src":"234:8:32","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"errorSelector":"e6e2afc7","id":11264,"name":"FailedWithdrawNativeToken","nameLocation":"295:25:32","nodeType":"ErrorDefinition","parameters":{"id":11263,"nodeType":"ParameterList","parameters":[],"src":"320:2:32"},"src":"289:34:32"},{"abstract":false,"baseContracts":[{"baseName":{"id":11265,"name":"IUtility","nameLocations":["345:8:32"],"nodeType":"IdentifierPath","referencedDeclaration":11905,"src":"345:8:32"},"id":11266,"nodeType":"InheritanceSpecifier","src":"345:8:32"},{"baseName":{"id":11267,"name":"ReentrancyGuard","nameLocations":["355:15:32"],"nodeType":"IdentifierPath","referencedDeclaration":67,"src":"355:15:32"},"id":11268,"nodeType":"InheritanceSpecifier","src":"355:15:32"}],"canonicalName":"Utility","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":11315,"linearizedBaseContracts":[11315,67,11905],"name":"Utility","nameLocation":"334:7:32","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[11899],"body":{"id":11279,"nodeType":"Block","src":"437:45:32","statements":[{"expression":{"expression":{"arguments":[{"id":11275,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"462:4:32","typeDescriptions":{"typeIdentifier":"t_contract$_Utility_$11315","typeString":"contract Utility"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Utility_$11315","typeString":"contract Utility"}],"id":11274,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"454:7:32","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11273,"name":"address","nodeType":"ElementaryTypeName","src":"454:7:32","typeDescriptions":{}}},"id":11276,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"454:13:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11277,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"468:7:32","memberName":"balance","nodeType":"MemberAccess","src":"454:21:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11272,"id":11278,"nodeType":"Return","src":"447:28:32"}]},"functionSelector":"88a9d554","id":11280,"implemented":true,"kind":"function","modifiers":[],"name":"getNativeBalance","nameLocation":"386:16:32","nodeType":"FunctionDefinition","parameters":{"id":11269,"nodeType":"ParameterList","parameters":[],"src":"402:2:32"},"returnParameters":{"id":11272,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11271,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11280,"src":"428:7:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11270,"name":"uint256","nodeType":"ElementaryTypeName","src":"428:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"427:9:32"},"scope":11315,"src":"377:105:32","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[11904],"body":{"id":11313,"nodeType":"Block","src":"558:260:32","statements":[{"expression":{"arguments":[{"expression":{"id":11290,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15479,"src":"602:16:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$15479_$","typeString":"type(library LibAccessControl)"}},"id":11291,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"619:14:32","memberName":"TREASURER_ROLE","nodeType":"MemberAccess","referencedDeclaration":15208,"src":"602:31:32","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":11287,"name":"LibAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15479,"src":"568:16:32","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAccessControl_$15479_$","typeString":"type(library LibAccessControl)"}},"id":11289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"585:16:32","memberName":"_requireOnlyRole","nodeType":"MemberAccess","referencedDeclaration":15259,"src":"568:33:32","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$__$","typeString":"function (bytes32) view"}},"id":11292,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"568:66:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11293,"nodeType":"ExpressionStatement","src":"568:66:32"},{"assignments":[11295,null],"declarations":[{"constant":false,"id":11295,"mutability":"mutable","name":"sent","nameLocation":"651:4:32","nodeType":"VariableDeclaration","scope":11313,"src":"646:9:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11294,"name":"bool","nodeType":"ElementaryTypeName","src":"646:4:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":11306,"initialValue":{"arguments":[{"hexValue":"","id":11304,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"702:2:32","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"arguments":[{"expression":{"id":11298,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"669:3:32","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"673:6:32","memberName":"sender","nodeType":"MemberAccess","src":"669:10:32","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11297,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"661:8:32","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":11296,"name":"address","nodeType":"ElementaryTypeName","src":"661:8:32","stateMutability":"payable","typeDescriptions":{}}},"id":11300,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"661:19:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":11301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"681:4:32","memberName":"call","nodeType":"MemberAccess","src":"661:24:32","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":11303,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":11302,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11282,"src":"693:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"661:40:32","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":11305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"661:44:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"645:60:32"},{"condition":{"id":11308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"719:5:32","subExpression":{"id":11307,"name":"sent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11295,"src":"720:4:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11312,"nodeType":"IfStatement","src":"715:45:32","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":11309,"name":"FailedWithdrawNativeToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11264,"src":"733:25:32","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":11310,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"733:27:32","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11311,"nodeType":"RevertStatement","src":"726:34:32"}}]},"functionSelector":"c9a463e2","id":11314,"implemented":true,"kind":"function","modifiers":[{"id":11285,"kind":"modifierInvocation","modifierName":{"id":11284,"name":"nonReentrant","nameLocations":["545:12:32"],"nodeType":"IdentifierPath","referencedDeclaration":43,"src":"545:12:32"},"nodeType":"ModifierInvocation","src":"545:12:32"}],"name":"withdrawNativeBalance","nameLocation":"497:21:32","nodeType":"FunctionDefinition","parameters":{"id":11283,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11282,"mutability":"mutable","name":"_amount","nameLocation":"527:7:32","nodeType":"VariableDeclaration","scope":11314,"src":"519:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11281,"name":"uint256","nodeType":"ElementaryTypeName","src":"519:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"518:17:32"},"returnParameters":{"id":11286,"nodeType":"ParameterList","parameters":[],"src":"558:0:32"},"scope":11315,"src":"488:330:32","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":11316,"src":"325:495:32","usedErrors":[11264]}],"src":"37:784:32"},"id":32},"contracts/interfaces/core/IAutomate.sol":{"ast":{"absolutePath":"contracts/interfaces/core/IAutomate.sol","exportedSymbols":{"IAutomate":[11354]},"id":11355,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":11317,"literals":["solidity","^","0.8",".9"],"nodeType":"PragmaDirective","src":"32:23:33"},{"abstract":false,"baseContracts":[],"canonicalName":"IAutomate","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":11354,"linearizedBaseContracts":[11354],"name":"IAutomate","nameLocation":"67:9:33","nodeType":"ContractDefinition","nodes":[{"functionSelector":"71ebf6f4","id":11322,"implemented":false,"kind":"function","modifiers":[],"name":"setGelatoContracts","nameLocation":"92:18:33","nodeType":"FunctionDefinition","parameters":{"id":11320,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11319,"mutability":"mutable","name":"_ops","nameLocation":"119:4:33","nodeType":"VariableDeclaration","scope":11322,"src":"111:12:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11318,"name":"address","nodeType":"ElementaryTypeName","src":"111:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"110:14:33"},"returnParameters":{"id":11321,"nodeType":"ParameterList","parameters":[],"src":"133:0:33"},"scope":11354,"src":"83:51:33","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"bb6bd765","id":11335,"implemented":false,"kind":"function","modifiers":[],"name":"getGelatoAddresses","nameLocation":"149:18:33","nodeType":"FunctionDefinition","parameters":{"id":11323,"nodeType":"ParameterList","parameters":[],"src":"167:2:33"},"returnParameters":{"id":11334,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11325,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11335,"src":"217:7:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11324,"name":"address","nodeType":"ElementaryTypeName","src":"217:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11327,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11335,"src":"226:7:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11326,"name":"address","nodeType":"ElementaryTypeName","src":"226:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11329,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11335,"src":"235:7:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11328,"name":"address","nodeType":"ElementaryTypeName","src":"235:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11331,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11335,"src":"244:7:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11330,"name":"address","nodeType":"ElementaryTypeName","src":"244:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11333,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11335,"src":"253:7:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11332,"name":"address","nodeType":"ElementaryTypeName","src":"253:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"216:45:33"},"scope":11354,"src":"140:122:33","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"a6f9223d","id":11340,"implemented":false,"kind":"function","modifiers":[],"name":"withdrawGelatoFunds","nameLocation":"277:19:33","nodeType":"FunctionDefinition","parameters":{"id":11338,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11337,"mutability":"mutable","name":"_amount","nameLocation":"305:7:33","nodeType":"VariableDeclaration","scope":11340,"src":"297:15:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11336,"name":"uint256","nodeType":"ElementaryTypeName","src":"297:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"296:17:33"},"returnParameters":{"id":11339,"nodeType":"ParameterList","parameters":[],"src":"322:0:33"},"scope":11354,"src":"268:55:33","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"1674bc24","id":11343,"implemented":false,"kind":"function","modifiers":[],"name":"depositGelatoFunds","nameLocation":"338:18:33","nodeType":"FunctionDefinition","parameters":{"id":11341,"nodeType":"ParameterList","parameters":[],"src":"356:2:33"},"returnParameters":{"id":11342,"nodeType":"ParameterList","parameters":[],"src":"375:0:33"},"scope":11354,"src":"329:47:33","stateMutability":"payable","virtual":false,"visibility":"external"},{"functionSelector":"2e4b6945","id":11348,"implemented":false,"kind":"function","modifiers":[],"name":"setMinimumAppGelatoBalance","nameLocation":"391:26:33","nodeType":"FunctionDefinition","parameters":{"id":11346,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11345,"mutability":"mutable","name":"_value","nameLocation":"426:6:33","nodeType":"VariableDeclaration","scope":11348,"src":"418:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11344,"name":"uint256","nodeType":"ElementaryTypeName","src":"418:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"417:16:33"},"returnParameters":{"id":11347,"nodeType":"ParameterList","parameters":[],"src":"442:0:33"},"scope":11354,"src":"382:61:33","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"f24a25de","id":11353,"implemented":false,"kind":"function","modifiers":[],"name":"getMinimumAppGelatoBalance","nameLocation":"458:26:33","nodeType":"FunctionDefinition","parameters":{"id":11349,"nodeType":"ParameterList","parameters":[],"src":"484:2:33"},"returnParameters":{"id":11352,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11351,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11353,"src":"510:7:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11350,"name":"uint256","nodeType":"ElementaryTypeName","src":"510:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"509:9:33"},"scope":11354,"src":"449:70:33","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":11355,"src":"57:464:33","usedErrors":[]}],"src":"32:490:33"},"id":33},"contracts/interfaces/core/IControl.sol":{"ast":{"absolutePath":"contracts/interfaces/core/IControl.sol","exportedSymbols":{"IControl":[11551]},"id":11552,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":11356,"literals":["solidity","^","0.8",".9"],"nodeType":"PragmaDirective","src":"32:23:34"},{"abstract":false,"baseContracts":[],"canonicalName":"IControl","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":11551,"linearizedBaseContracts":[11551],"name":"IControl","nameLocation":"67:8:34","nodeType":"ContractDefinition","nodes":[{"functionSelector":"46a5d043","id":11363,"implemented":false,"kind":"function","modifiers":[],"name":"depositAsset","nameLocation":"91:12:34","nodeType":"FunctionDefinition","parameters":{"id":11361,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11358,"mutability":"mutable","name":"_superToken","nameLocation":"112:11:34","nodeType":"VariableDeclaration","scope":11363,"src":"104:19:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11357,"name":"address","nodeType":"ElementaryTypeName","src":"104:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11360,"mutability":"mutable","name":"_amount","nameLocation":"133:7:34","nodeType":"VariableDeclaration","scope":11363,"src":"125:15:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11359,"name":"uint256","nodeType":"ElementaryTypeName","src":"125:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"103:38:34"},"returnParameters":{"id":11362,"nodeType":"ParameterList","parameters":[],"src":"150:0:34"},"scope":11551,"src":"82:69:34","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"38e4f064","id":11370,"implemented":false,"kind":"function","modifiers":[],"name":"withdrawAsset","nameLocation":"166:13:34","nodeType":"FunctionDefinition","parameters":{"id":11368,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11365,"mutability":"mutable","name":"_superToken","nameLocation":"188:11:34","nodeType":"VariableDeclaration","scope":11370,"src":"180:19:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11364,"name":"address","nodeType":"ElementaryTypeName","src":"180:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11367,"mutability":"mutable","name":"_amount","nameLocation":"209:7:34","nodeType":"VariableDeclaration","scope":11370,"src":"201:15:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11366,"name":"uint256","nodeType":"ElementaryTypeName","src":"201:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"179:38:34"},"returnParameters":{"id":11369,"nodeType":"ParameterList","parameters":[],"src":"226:0:34"},"scope":11551,"src":"157:70:34","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"ebaae661","id":11377,"implemented":false,"kind":"function","modifiers":[],"name":"withdrawFeeBalance","nameLocation":"242:18:34","nodeType":"FunctionDefinition","parameters":{"id":11375,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11372,"mutability":"mutable","name":"_superToken","nameLocation":"269:11:34","nodeType":"VariableDeclaration","scope":11377,"src":"261:19:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11371,"name":"address","nodeType":"ElementaryTypeName","src":"261:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11374,"mutability":"mutable","name":"_amount","nameLocation":"290:7:34","nodeType":"VariableDeclaration","scope":11377,"src":"282:15:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11373,"name":"uint256","nodeType":"ElementaryTypeName","src":"282:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"260:38:34"},"returnParameters":{"id":11376,"nodeType":"ParameterList","parameters":[],"src":"307:0:34"},"scope":11551,"src":"233:75:34","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"adefe35e","id":11384,"implemented":false,"kind":"function","modifiers":[],"name":"realizeFeeBalance","nameLocation":"323:17:34","nodeType":"FunctionDefinition","parameters":{"id":11382,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11379,"mutability":"mutable","name":"count","nameLocation":"349:5:34","nodeType":"VariableDeclaration","scope":11384,"src":"341:13:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11378,"name":"uint256","nodeType":"ElementaryTypeName","src":"341:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11381,"mutability":"mutable","name":"_superToken","nameLocation":"364:11:34","nodeType":"VariableDeclaration","scope":11384,"src":"356:19:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11380,"name":"address","nodeType":"ElementaryTypeName","src":"356:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"340:36:34"},"returnParameters":{"id":11383,"nodeType":"ParameterList","parameters":[],"src":"385:0:34"},"scope":11551,"src":"314:72:34","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"578dc59a","id":11389,"implemented":false,"kind":"function","modifiers":[],"name":"setMinimumEndDuration","nameLocation":"401:21:34","nodeType":"FunctionDefinition","parameters":{"id":11387,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11386,"mutability":"mutable","name":"_duration","nameLocation":"431:9:34","nodeType":"VariableDeclaration","scope":11389,"src":"423:17:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11385,"name":"uint256","nodeType":"ElementaryTypeName","src":"423:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"422:19:34"},"returnParameters":{"id":11388,"nodeType":"ParameterList","parameters":[],"src":"450:0:34"},"scope":11551,"src":"392:59:34","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"245b6c93","id":11394,"implemented":false,"kind":"function","modifiers":[],"name":"setMinimumLifespan","nameLocation":"466:18:34","nodeType":"FunctionDefinition","parameters":{"id":11392,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11391,"mutability":"mutable","name":"_duration","nameLocation":"493:9:34","nodeType":"VariableDeclaration","scope":11394,"src":"485:17:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11390,"name":"uint256","nodeType":"ElementaryTypeName","src":"485:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"484:19:34"},"returnParameters":{"id":11393,"nodeType":"ParameterList","parameters":[],"src":"512:0:34"},"scope":11551,"src":"457:56:34","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"487eb939","id":11399,"implemented":false,"kind":"function","modifiers":[],"name":"setSTBufferAmount","nameLocation":"528:17:34","nodeType":"FunctionDefinition","parameters":{"id":11397,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11396,"mutability":"mutable","name":"_duration","nameLocation":"554:9:34","nodeType":"VariableDeclaration","scope":11399,"src":"546:17:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11395,"name":"uint256","nodeType":"ElementaryTypeName","src":"546:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"545:19:34"},"returnParameters":{"id":11398,"nodeType":"ParameterList","parameters":[],"src":"573:0:34"},"scope":11551,"src":"519:55:34","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"22c3a21f","id":11404,"implemented":false,"kind":"function","modifiers":[],"name":"addSuperToken","nameLocation":"589:13:34","nodeType":"FunctionDefinition","parameters":{"id":11402,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11401,"mutability":"mutable","name":"_superToken","nameLocation":"611:11:34","nodeType":"VariableDeclaration","scope":11404,"src":"603:19:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11400,"name":"address","nodeType":"ElementaryTypeName","src":"603:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"602:21:34"},"returnParameters":{"id":11403,"nodeType":"ParameterList","parameters":[],"src":"632:0:34"},"scope":11551,"src":"580:53:34","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"83807889","id":11409,"implemented":false,"kind":"function","modifiers":[],"name":"removeSuperToken","nameLocation":"648:16:34","nodeType":"FunctionDefinition","parameters":{"id":11407,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11406,"mutability":"mutable","name":"_superToken","nameLocation":"673:11:34","nodeType":"VariableDeclaration","scope":11409,"src":"665:19:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11405,"name":"address","nodeType":"ElementaryTypeName","src":"665:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"664:21:34"},"returnParameters":{"id":11408,"nodeType":"ParameterList","parameters":[],"src":"694:0:34"},"scope":11551,"src":"639:56:34","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"703ab1b7","id":11412,"implemented":false,"kind":"function","modifiers":[],"name":"toggleBPS","nameLocation":"710:9:34","nodeType":"FunctionDefinition","parameters":{"id":11410,"nodeType":"ParameterList","parameters":[],"src":"719:2:34"},"returnParameters":{"id":11411,"nodeType":"ParameterList","parameters":[],"src":"730:0:34"},"scope":11551,"src":"701:30:34","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"795e3425","id":11415,"implemented":false,"kind":"function","modifiers":[],"name":"clearBPS","nameLocation":"746:8:34","nodeType":"FunctionDefinition","parameters":{"id":11413,"nodeType":"ParameterList","parameters":[],"src":"754:2:34"},"returnParameters":{"id":11414,"nodeType":"ParameterList","parameters":[],"src":"765:0:34"},"scope":11551,"src":"737:29:34","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"cb857c80","id":11430,"implemented":false,"kind":"function","modifiers":[],"name":"setBPS","nameLocation":"781:6:34","nodeType":"FunctionDefinition","parameters":{"id":11428,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11418,"mutability":"mutable","name":"_bpss","nameLocation":"813:5:34","nodeType":"VariableDeclaration","scope":11430,"src":"797:21:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint16_$dyn_memory_ptr","typeString":"uint16[]"},"typeName":{"baseType":{"id":11416,"name":"uint16","nodeType":"ElementaryTypeName","src":"797:6:34","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"id":11417,"nodeType":"ArrayTypeName","src":"797:8:34","typeDescriptions":{"typeIdentifier":"t_array$_t_uint16_$dyn_storage_ptr","typeString":"uint16[]"}},"visibility":"internal"},{"constant":false,"id":11421,"mutability":"mutable","name":"_flowRateLowerBounds","nameLocation":"844:20:34","nodeType":"VariableDeclaration","scope":11430,"src":"828:36:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint96_$dyn_memory_ptr","typeString":"uint96[]"},"typeName":{"baseType":{"id":11419,"name":"uint96","nodeType":"ElementaryTypeName","src":"828:6:34","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"id":11420,"nodeType":"ArrayTypeName","src":"828:8:34","typeDescriptions":{"typeIdentifier":"t_array$_t_uint96_$dyn_storage_ptr","typeString":"uint96[]"}},"visibility":"internal"},{"constant":false,"id":11424,"mutability":"mutable","name":"_flowRateUpperBounds","nameLocation":"890:20:34","nodeType":"VariableDeclaration","scope":11430,"src":"874:36:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint96_$dyn_memory_ptr","typeString":"uint96[]"},"typeName":{"baseType":{"id":11422,"name":"uint96","nodeType":"ElementaryTypeName","src":"874:6:34","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"id":11423,"nodeType":"ArrayTypeName","src":"874:8:34","typeDescriptions":{"typeIdentifier":"t_array$_t_uint96_$dyn_storage_ptr","typeString":"uint96[]"}},"visibility":"internal"},{"constant":false,"id":11427,"mutability":"mutable","name":"_tags","nameLocation":"937:5:34","nodeType":"VariableDeclaration","scope":11430,"src":"920:22:34","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":11425,"name":"uint256","nodeType":"ElementaryTypeName","src":"920:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11426,"nodeType":"ArrayTypeName","src":"920:9:34","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"787:161:34"},"returnParameters":{"id":11429,"nodeType":"ParameterList","parameters":[],"src":"957:0:34"},"scope":11551,"src":"772:186:34","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"d99d3b69","id":11437,"implemented":false,"kind":"function","modifiers":[],"name":"setSBPS","nameLocation":"973:7:34","nodeType":"FunctionDefinition","parameters":{"id":11435,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11432,"mutability":"mutable","name":"_bps","nameLocation":"988:4:34","nodeType":"VariableDeclaration","scope":11437,"src":"981:11:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":11431,"name":"uint16","nodeType":"ElementaryTypeName","src":"981:6:34","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":11434,"mutability":"mutable","name":"_user","nameLocation":"1002:5:34","nodeType":"VariableDeclaration","scope":11437,"src":"994:13:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11433,"name":"address","nodeType":"ElementaryTypeName","src":"994:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"980:28:34"},"returnParameters":{"id":11436,"nodeType":"ParameterList","parameters":[],"src":"1017:0:34"},"scope":11551,"src":"964:54:34","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"c78f6803","id":11444,"implemented":false,"kind":"function","modifiers":[],"name":"getFeeBalance","nameLocation":"1033:13:34","nodeType":"FunctionDefinition","parameters":{"id":11440,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11439,"mutability":"mutable","name":"_superToken","nameLocation":"1055:11:34","nodeType":"VariableDeclaration","scope":11444,"src":"1047:19:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11438,"name":"address","nodeType":"ElementaryTypeName","src":"1047:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1046:21:34"},"returnParameters":{"id":11443,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11442,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11444,"src":"1091:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11441,"name":"uint256","nodeType":"ElementaryTypeName","src":"1091:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1090:9:34"},"scope":11551,"src":"1024:76:34","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"0b72660d","id":11459,"implemented":false,"kind":"function","modifiers":[],"name":"getControlData","nameLocation":"1115:14:34","nodeType":"FunctionDefinition","parameters":{"id":11449,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11446,"mutability":"mutable","name":"_superToken","nameLocation":"1147:11:34","nodeType":"VariableDeclaration","scope":11459,"src":"1139:19:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11445,"name":"address","nodeType":"ElementaryTypeName","src":"1139:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11448,"mutability":"mutable","name":"_nonce","nameLocation":"1176:6:34","nodeType":"VariableDeclaration","scope":11459,"src":"1168:14:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11447,"name":"uint256","nodeType":"ElementaryTypeName","src":"1168:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1129:59:34"},"returnParameters":{"id":11458,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11451,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11459,"src":"1212:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11450,"name":"address","nodeType":"ElementaryTypeName","src":"1212:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11453,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11459,"src":"1221:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11452,"name":"uint256","nodeType":"ElementaryTypeName","src":"1221:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11455,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11459,"src":"1230:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11454,"name":"uint256","nodeType":"ElementaryTypeName","src":"1230:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11457,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11459,"src":"1239:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11456,"name":"uint256","nodeType":"ElementaryTypeName","src":"1239:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1211:36:34"},"scope":11551,"src":"1106:142:34","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"7f69bcaf","id":11466,"implemented":false,"kind":"function","modifiers":[],"name":"getNewControlNonce","nameLocation":"1263:18:34","nodeType":"FunctionDefinition","parameters":{"id":11462,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11461,"mutability":"mutable","name":"_superToken","nameLocation":"1299:11:34","nodeType":"VariableDeclaration","scope":11466,"src":"1291:19:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11460,"name":"address","nodeType":"ElementaryTypeName","src":"1291:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1281:35:34"},"returnParameters":{"id":11465,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11464,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11466,"src":"1340:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11463,"name":"uint256","nodeType":"ElementaryTypeName","src":"1340:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1339:9:34"},"scope":11551,"src":"1254:95:34","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"6812a173","id":11471,"implemented":false,"kind":"function","modifiers":[],"name":"getMinimumEndDuration","nameLocation":"1364:21:34","nodeType":"FunctionDefinition","parameters":{"id":11467,"nodeType":"ParameterList","parameters":[],"src":"1385:2:34"},"returnParameters":{"id":11470,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11469,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11471,"src":"1411:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11468,"name":"uint256","nodeType":"ElementaryTypeName","src":"1411:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1410:9:34"},"scope":11551,"src":"1355:65:34","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"ca70e1d5","id":11476,"implemented":false,"kind":"function","modifiers":[],"name":"getMinimumLifespan","nameLocation":"1435:18:34","nodeType":"FunctionDefinition","parameters":{"id":11472,"nodeType":"ParameterList","parameters":[],"src":"1453:2:34"},"returnParameters":{"id":11475,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11474,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11476,"src":"1479:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11473,"name":"uint256","nodeType":"ElementaryTypeName","src":"1479:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1478:9:34"},"scope":11551,"src":"1426:62:34","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"7ea195ad","id":11481,"implemented":false,"kind":"function","modifiers":[],"name":"getSTBufferDurationInSecond","nameLocation":"1503:27:34","nodeType":"FunctionDefinition","parameters":{"id":11477,"nodeType":"ParameterList","parameters":[],"src":"1530:2:34"},"returnParameters":{"id":11480,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11479,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11481,"src":"1556:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11478,"name":"uint256","nodeType":"ElementaryTypeName","src":"1556:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1555:9:34"},"scope":11551,"src":"1494:71:34","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"acff4744","id":11488,"implemented":false,"kind":"function","modifiers":[],"name":"isSuperTokensSupported","nameLocation":"1580:22:34","nodeType":"FunctionDefinition","parameters":{"id":11484,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11483,"mutability":"mutable","name":"_superToken","nameLocation":"1620:11:34","nodeType":"VariableDeclaration","scope":11488,"src":"1612:19:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11482,"name":"address","nodeType":"ElementaryTypeName","src":"1612:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1602:35:34"},"returnParameters":{"id":11487,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11486,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11488,"src":"1661:4:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11485,"name":"bool","nodeType":"ElementaryTypeName","src":"1661:4:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1660:6:34"},"scope":11551,"src":"1571:96:34","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"a86c8c7c","id":11493,"implemented":false,"kind":"function","modifiers":[],"name":"isBPSEnabled","nameLocation":"1682:12:34","nodeType":"FunctionDefinition","parameters":{"id":11489,"nodeType":"ParameterList","parameters":[],"src":"1694:2:34"},"returnParameters":{"id":11492,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11491,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11493,"src":"1720:4:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11490,"name":"bool","nodeType":"ElementaryTypeName","src":"1720:4:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1719:6:34"},"scope":11551,"src":"1673:53:34","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"a8771ab9","id":11498,"implemented":false,"kind":"function","modifiers":[],"name":"getBPSSize","nameLocation":"1741:10:34","nodeType":"FunctionDefinition","parameters":{"id":11494,"nodeType":"ParameterList","parameters":[],"src":"1751:2:34"},"returnParameters":{"id":11497,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11496,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11498,"src":"1777:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11495,"name":"uint256","nodeType":"ElementaryTypeName","src":"1777:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1776:9:34"},"scope":11551,"src":"1732:54:34","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"6ab1c734","id":11509,"implemented":false,"kind":"function","modifiers":[],"name":"getBPSData","nameLocation":"1801:10:34","nodeType":"FunctionDefinition","parameters":{"id":11501,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11500,"mutability":"mutable","name":"_tag","nameLocation":"1829:4:34","nodeType":"VariableDeclaration","scope":11509,"src":"1821:12:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11499,"name":"uint256","nodeType":"ElementaryTypeName","src":"1821:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1811:28:34"},"returnParameters":{"id":11508,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11503,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11509,"src":"1863:6:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":11502,"name":"uint16","nodeType":"ElementaryTypeName","src":"1863:6:34","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":11505,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11509,"src":"1871:6:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":11504,"name":"uint96","nodeType":"ElementaryTypeName","src":"1871:6:34","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":11507,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11509,"src":"1879:6:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":11506,"name":"uint96","nodeType":"ElementaryTypeName","src":"1879:6:34","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"src":"1862:24:34"},"scope":11551,"src":"1792:95:34","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"2357f2cf","id":11516,"implemented":false,"kind":"function","modifiers":[],"name":"getSBPS","nameLocation":"1902:7:34","nodeType":"FunctionDefinition","parameters":{"id":11512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11511,"mutability":"mutable","name":"_user","nameLocation":"1918:5:34","nodeType":"VariableDeclaration","scope":11516,"src":"1910:13:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11510,"name":"address","nodeType":"ElementaryTypeName","src":"1910:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1909:15:34"},"returnParameters":{"id":11515,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11514,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11516,"src":"1948:6:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":11513,"name":"uint16","nodeType":"ElementaryTypeName","src":"1948:6:34","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"1947:8:34"},"scope":11551,"src":"1893:63:34","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"4ee43e46","id":11525,"implemented":false,"kind":"function","modifiers":[],"name":"getNewBufferedAppBalance","nameLocation":"1971:24:34","nodeType":"FunctionDefinition","parameters":{"id":11521,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11518,"mutability":"mutable","name":"_superToken","nameLocation":"2013:11:34","nodeType":"VariableDeclaration","scope":11525,"src":"2005:19:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11517,"name":"address","nodeType":"ElementaryTypeName","src":"2005:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11520,"mutability":"mutable","name":"_newFlowRate","nameLocation":"2040:12:34","nodeType":"VariableDeclaration","scope":11525,"src":"2034:18:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":11519,"name":"int96","nodeType":"ElementaryTypeName","src":"2034:5:34","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"1995:63:34"},"returnParameters":{"id":11524,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11523,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11525,"src":"2082:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11522,"name":"uint256","nodeType":"ElementaryTypeName","src":"2082:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2081:9:34"},"scope":11551,"src":"1962:129:34","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"c467cddc","id":11534,"implemented":false,"kind":"function","modifiers":[],"name":"isNewFlowRateAllowed","nameLocation":"2106:20:34","nodeType":"FunctionDefinition","parameters":{"id":11530,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11527,"mutability":"mutable","name":"_superToken","nameLocation":"2144:11:34","nodeType":"VariableDeclaration","scope":11534,"src":"2136:19:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11526,"name":"address","nodeType":"ElementaryTypeName","src":"2136:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11529,"mutability":"mutable","name":"_newFlowRate","nameLocation":"2171:12:34","nodeType":"VariableDeclaration","scope":11534,"src":"2165:18:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":11528,"name":"int96","nodeType":"ElementaryTypeName","src":"2165:5:34","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"2126:63:34"},"returnParameters":{"id":11533,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11532,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11534,"src":"2213:4:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11531,"name":"bool","nodeType":"ElementaryTypeName","src":"2213:4:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2212:6:34"},"scope":11551,"src":"2097:122:34","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"be835747","id":11543,"implemented":false,"kind":"function","modifiers":[],"name":"getAssetUser","nameLocation":"2234:12:34","nodeType":"FunctionDefinition","parameters":{"id":11539,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11536,"mutability":"mutable","name":"_user","nameLocation":"2264:5:34","nodeType":"VariableDeclaration","scope":11543,"src":"2256:13:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11535,"name":"address","nodeType":"ElementaryTypeName","src":"2256:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11538,"mutability":"mutable","name":"_superToken","nameLocation":"2287:11:34","nodeType":"VariableDeclaration","scope":11543,"src":"2279:19:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11537,"name":"address","nodeType":"ElementaryTypeName","src":"2279:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2246:58:34"},"returnParameters":{"id":11542,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11541,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11543,"src":"2328:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11540,"name":"uint256","nodeType":"ElementaryTypeName","src":"2328:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2327:9:34"},"scope":11551,"src":"2225:112:34","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"b2419083","id":11550,"implemented":false,"kind":"function","modifiers":[],"name":"getAssetTotal","nameLocation":"2352:13:34","nodeType":"FunctionDefinition","parameters":{"id":11546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11545,"mutability":"mutable","name":"_superToken","nameLocation":"2374:11:34","nodeType":"VariableDeclaration","scope":11550,"src":"2366:19:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11544,"name":"address","nodeType":"ElementaryTypeName","src":"2366:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2365:21:34"},"returnParameters":{"id":11549,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11548,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11550,"src":"2410:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11547,"name":"uint256","nodeType":"ElementaryTypeName","src":"2410:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2409:9:34"},"scope":11551,"src":"2343:76:34","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":11552,"src":"57:2364:34","usedErrors":[]}],"src":"32:2390:34"},"id":34},"contracts/interfaces/core/IFlow.sol":{"ast":{"absolutePath":"contracts/interfaces/core/IFlow.sol","exportedSymbols":{"IFlow":[11681]},"id":11682,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":11553,"literals":["solidity","^","0.8",".9"],"nodeType":"PragmaDirective","src":"32:23:35"},{"abstract":false,"baseContracts":[],"canonicalName":"IFlow","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":11681,"linearizedBaseContracts":[11681],"name":"IFlow","nameLocation":"187:5:35","nodeType":"ContractDefinition","nodes":[{"functionSelector":"dfc96e1b","id":11562,"implemented":false,"kind":"function","modifiers":[],"name":"openFlow","nameLocation":"208:8:35","nodeType":"FunctionDefinition","parameters":{"id":11560,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11555,"mutability":"mutable","name":"_receiver","nameLocation":"234:9:35","nodeType":"VariableDeclaration","scope":11562,"src":"226:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11554,"name":"address","nodeType":"ElementaryTypeName","src":"226:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11557,"mutability":"mutable","name":"_superToken","nameLocation":"261:11:35","nodeType":"VariableDeclaration","scope":11562,"src":"253:19:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11556,"name":"address","nodeType":"ElementaryTypeName","src":"253:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11559,"mutability":"mutable","name":"_lifespan","nameLocation":"290:9:35","nodeType":"VariableDeclaration","scope":11562,"src":"282:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11558,"name":"uint256","nodeType":"ElementaryTypeName","src":"282:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"216:89:35"},"returnParameters":{"id":11561,"nodeType":"ParameterList","parameters":[],"src":"314:0:35"},"scope":11681,"src":"199:116:35","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"36fbb025","id":11575,"implemented":false,"kind":"function","modifiers":[],"name":"decreaseFlow","nameLocation":"330:12:35","nodeType":"FunctionDefinition","parameters":{"id":11573,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11564,"mutability":"mutable","name":"_superToken","nameLocation":"360:11:35","nodeType":"VariableDeclaration","scope":11575,"src":"352:19:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11563,"name":"address","nodeType":"ElementaryTypeName","src":"352:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11566,"mutability":"mutable","name":"_sender","nameLocation":"389:7:35","nodeType":"VariableDeclaration","scope":11575,"src":"381:15:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11565,"name":"address","nodeType":"ElementaryTypeName","src":"381:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11568,"mutability":"mutable","name":"_receiver","nameLocation":"414:9:35","nodeType":"VariableDeclaration","scope":11575,"src":"406:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11567,"name":"address","nodeType":"ElementaryTypeName","src":"406:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11570,"mutability":"mutable","name":"_nonce","nameLocation":"441:6:35","nodeType":"VariableDeclaration","scope":11575,"src":"433:14:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11569,"name":"uint256","nodeType":"ElementaryTypeName","src":"433:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11572,"mutability":"mutable","name":"_flowRate","nameLocation":"463:9:35","nodeType":"VariableDeclaration","scope":11575,"src":"457:15:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":11571,"name":"int96","nodeType":"ElementaryTypeName","src":"457:5:35","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"342:136:35"},"returnParameters":{"id":11574,"nodeType":"ParameterList","parameters":[],"src":"487:0:35"},"scope":11681,"src":"321:167:35","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"e32867fc","id":11582,"implemented":false,"kind":"function","modifiers":[],"name":"closeFlow","nameLocation":"503:9:35","nodeType":"FunctionDefinition","parameters":{"id":11580,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11577,"mutability":"mutable","name":"_superToken","nameLocation":"521:11:35","nodeType":"VariableDeclaration","scope":11582,"src":"513:19:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11576,"name":"address","nodeType":"ElementaryTypeName","src":"513:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11579,"mutability":"mutable","name":"_nonce","nameLocation":"542:6:35","nodeType":"VariableDeclaration","scope":11582,"src":"534:14:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11578,"name":"uint256","nodeType":"ElementaryTypeName","src":"534:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"512:37:35"},"returnParameters":{"id":11581,"nodeType":"ParameterList","parameters":[],"src":"558:0:35"},"scope":11681,"src":"494:65:35","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"0197c386","id":11589,"implemented":false,"kind":"function","modifiers":[],"name":"depositSuperToken","nameLocation":"574:17:35","nodeType":"FunctionDefinition","parameters":{"id":11587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11584,"mutability":"mutable","name":"_superToken","nameLocation":"600:11:35","nodeType":"VariableDeclaration","scope":11589,"src":"592:19:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11583,"name":"address","nodeType":"ElementaryTypeName","src":"592:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11586,"mutability":"mutable","name":"_amount","nameLocation":"621:7:35","nodeType":"VariableDeclaration","scope":11589,"src":"613:15:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11585,"name":"uint256","nodeType":"ElementaryTypeName","src":"613:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"591:38:35"},"returnParameters":{"id":11588,"nodeType":"ParameterList","parameters":[],"src":"638:0:35"},"scope":11681,"src":"565:74:35","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"dc5cd1d8","id":11596,"implemented":false,"kind":"function","modifiers":[],"name":"withdrawSuperToken","nameLocation":"654:18:35","nodeType":"FunctionDefinition","parameters":{"id":11594,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11591,"mutability":"mutable","name":"_superToken","nameLocation":"681:11:35","nodeType":"VariableDeclaration","scope":11596,"src":"673:19:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11590,"name":"address","nodeType":"ElementaryTypeName","src":"673:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11593,"mutability":"mutable","name":"_amount","nameLocation":"702:7:35","nodeType":"VariableDeclaration","scope":11596,"src":"694:15:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11592,"name":"uint256","nodeType":"ElementaryTypeName","src":"694:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"672:38:35"},"returnParameters":{"id":11595,"nodeType":"ParameterList","parameters":[],"src":"719:0:35"},"scope":11681,"src":"645:75:35","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"3870f4a0","id":11605,"implemented":false,"kind":"function","modifiers":[],"name":"getAmountFlowed","nameLocation":"735:15:35","nodeType":"FunctionDefinition","parameters":{"id":11601,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11598,"mutability":"mutable","name":"_user","nameLocation":"768:5:35","nodeType":"VariableDeclaration","scope":11605,"src":"760:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11597,"name":"address","nodeType":"ElementaryTypeName","src":"760:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11600,"mutability":"mutable","name":"_superToken","nameLocation":"791:11:35","nodeType":"VariableDeclaration","scope":11605,"src":"783:19:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11599,"name":"address","nodeType":"ElementaryTypeName","src":"783:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"750:58:35"},"returnParameters":{"id":11604,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11603,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11605,"src":"832:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11602,"name":"uint256","nodeType":"ElementaryTypeName","src":"832:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"831:9:35"},"scope":11681,"src":"726:115:35","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"0dfa0b82","id":11616,"implemented":false,"kind":"function","modifiers":[],"name":"getValidSafeLifespan","nameLocation":"856:20:35","nodeType":"FunctionDefinition","parameters":{"id":11612,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11607,"mutability":"mutable","name":"_user","nameLocation":"894:5:35","nodeType":"VariableDeclaration","scope":11616,"src":"886:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11606,"name":"address","nodeType":"ElementaryTypeName","src":"886:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11609,"mutability":"mutable","name":"_superToken","nameLocation":"917:11:35","nodeType":"VariableDeclaration","scope":11616,"src":"909:19:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11608,"name":"address","nodeType":"ElementaryTypeName","src":"909:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11611,"mutability":"mutable","name":"_flowRate","nameLocation":"944:9:35","nodeType":"VariableDeclaration","scope":11616,"src":"938:15:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":11610,"name":"int96","nodeType":"ElementaryTypeName","src":"938:5:35","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"876:83:35"},"returnParameters":{"id":11615,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11614,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11616,"src":"983:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11613,"name":"uint256","nodeType":"ElementaryTypeName","src":"983:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"982:9:35"},"scope":11681,"src":"847:145:35","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"9a5b5f93","id":11625,"implemented":false,"kind":"function","modifiers":[],"name":"isViewSessionAllowed","nameLocation":"1007:20:35","nodeType":"FunctionDefinition","parameters":{"id":11621,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11618,"mutability":"mutable","name":"_viewer","nameLocation":"1045:7:35","nodeType":"VariableDeclaration","scope":11625,"src":"1037:15:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11617,"name":"address","nodeType":"ElementaryTypeName","src":"1037:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11620,"mutability":"mutable","name":"_broadcaster","nameLocation":"1070:12:35","nodeType":"VariableDeclaration","scope":11625,"src":"1062:20:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11619,"name":"address","nodeType":"ElementaryTypeName","src":"1062:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1027:61:35"},"returnParameters":{"id":11624,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11623,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11625,"src":"1112:4:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11622,"name":"bool","nodeType":"ElementaryTypeName","src":"1112:4:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1111:6:35"},"scope":11681,"src":"998:120:35","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"468240a9","id":11634,"implemented":false,"kind":"function","modifiers":[],"name":"hasActiveFlow","nameLocation":"1133:13:35","nodeType":"FunctionDefinition","parameters":{"id":11630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11627,"mutability":"mutable","name":"_user","nameLocation":"1164:5:35","nodeType":"VariableDeclaration","scope":11634,"src":"1156:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11626,"name":"address","nodeType":"ElementaryTypeName","src":"1156:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11629,"mutability":"mutable","name":"_superToken","nameLocation":"1187:11:35","nodeType":"VariableDeclaration","scope":11634,"src":"1179:19:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11628,"name":"address","nodeType":"ElementaryTypeName","src":"1179:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1146:58:35"},"returnParameters":{"id":11633,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11632,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11634,"src":"1228:4:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11631,"name":"bool","nodeType":"ElementaryTypeName","src":"1228:4:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1227:6:35"},"scope":11681,"src":"1124:110:35","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"521d3f3c","id":11643,"implemented":false,"kind":"function","modifiers":[],"name":"getNewFlowNonce","nameLocation":"1249:15:35","nodeType":"FunctionDefinition","parameters":{"id":11639,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11636,"mutability":"mutable","name":"_user","nameLocation":"1282:5:35","nodeType":"VariableDeclaration","scope":11643,"src":"1274:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11635,"name":"address","nodeType":"ElementaryTypeName","src":"1274:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11638,"mutability":"mutable","name":"_superToken","nameLocation":"1305:11:35","nodeType":"VariableDeclaration","scope":11643,"src":"1297:19:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11637,"name":"address","nodeType":"ElementaryTypeName","src":"1297:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1264:58:35"},"returnParameters":{"id":11642,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11641,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11643,"src":"1346:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11640,"name":"uint256","nodeType":"ElementaryTypeName","src":"1346:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1345:9:35"},"scope":11681,"src":"1240:115:35","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"54bbc2ad","id":11664,"implemented":false,"kind":"function","modifiers":[],"name":"getFlowData","nameLocation":"1370:11:35","nodeType":"FunctionDefinition","parameters":{"id":11650,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11645,"mutability":"mutable","name":"_user","nameLocation":"1399:5:35","nodeType":"VariableDeclaration","scope":11664,"src":"1391:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11644,"name":"address","nodeType":"ElementaryTypeName","src":"1391:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11647,"mutability":"mutable","name":"_superToken","nameLocation":"1422:11:35","nodeType":"VariableDeclaration","scope":11664,"src":"1414:19:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11646,"name":"address","nodeType":"ElementaryTypeName","src":"1414:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11649,"mutability":"mutable","name":"_nonce","nameLocation":"1451:6:35","nodeType":"VariableDeclaration","scope":11664,"src":"1443:14:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11648,"name":"uint256","nodeType":"ElementaryTypeName","src":"1443:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1381:82:35"},"returnParameters":{"id":11663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11652,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11664,"src":"1487:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11651,"name":"address","nodeType":"ElementaryTypeName","src":"1487:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11654,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11664,"src":"1496:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11653,"name":"uint256","nodeType":"ElementaryTypeName","src":"1496:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11656,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11664,"src":"1505:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11655,"name":"uint256","nodeType":"ElementaryTypeName","src":"1505:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11658,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11664,"src":"1514:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11657,"name":"uint256","nodeType":"ElementaryTypeName","src":"1514:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11660,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11664,"src":"1523:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11659,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1523:7:35","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":11662,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11664,"src":"1532:4:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11661,"name":"bool","nodeType":"ElementaryTypeName","src":"1532:4:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1486:51:35"},"scope":11681,"src":"1361:177:35","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"a152ca6f","id":11673,"implemented":false,"kind":"function","modifiers":[],"name":"getDepositUser","nameLocation":"1553:14:35","nodeType":"FunctionDefinition","parameters":{"id":11669,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11666,"mutability":"mutable","name":"_user","nameLocation":"1585:5:35","nodeType":"VariableDeclaration","scope":11673,"src":"1577:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11665,"name":"address","nodeType":"ElementaryTypeName","src":"1577:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11668,"mutability":"mutable","name":"_superToken","nameLocation":"1608:11:35","nodeType":"VariableDeclaration","scope":11673,"src":"1600:19:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11667,"name":"address","nodeType":"ElementaryTypeName","src":"1600:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1567:58:35"},"returnParameters":{"id":11672,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11671,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11673,"src":"1649:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11670,"name":"uint256","nodeType":"ElementaryTypeName","src":"1649:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1648:9:35"},"scope":11681,"src":"1544:114:35","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"c76474db","id":11680,"implemented":false,"kind":"function","modifiers":[],"name":"getDepositTotal","nameLocation":"1673:15:35","nodeType":"FunctionDefinition","parameters":{"id":11676,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11675,"mutability":"mutable","name":"_superToken","nameLocation":"1706:11:35","nodeType":"VariableDeclaration","scope":11680,"src":"1698:19:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11674,"name":"address","nodeType":"ElementaryTypeName","src":"1698:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1688:35:35"},"returnParameters":{"id":11679,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11678,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11680,"src":"1747:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11677,"name":"uint256","nodeType":"ElementaryTypeName","src":"1747:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1746:9:35"},"scope":11681,"src":"1664:92:35","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":11682,"src":"177:1581:35","usedErrors":[]}],"src":"32:1727:35"},"id":35},"contracts/interfaces/core/ISession.sol":{"ast":{"absolutePath":"contracts/interfaces/core/ISession.sol","exportedSymbols":{"ISession":[11752]},"id":11753,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":11683,"literals":["solidity","^","0.8",".9"],"nodeType":"PragmaDirective","src":"32:23:36"},{"abstract":false,"baseContracts":[],"canonicalName":"ISession","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":11752,"linearizedBaseContracts":[11752],"name":"ISession","nameLocation":"67:8:36","nodeType":"ContractDefinition","nodes":[{"functionSelector":"7fe70a27","id":11692,"implemented":false,"kind":"function","modifiers":[],"name":"startSession","nameLocation":"91:12:36","nodeType":"FunctionDefinition","parameters":{"id":11690,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11685,"mutability":"mutable","name":"_superToken","nameLocation":"121:11:36","nodeType":"VariableDeclaration","scope":11692,"src":"113:19:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11684,"name":"address","nodeType":"ElementaryTypeName","src":"113:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11687,"mutability":"mutable","name":"_flowRate","nameLocation":"149:9:36","nodeType":"VariableDeclaration","scope":11692,"src":"142:16:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":11686,"name":"uint96","nodeType":"ElementaryTypeName","src":"142:6:36","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":11689,"mutability":"mutable","name":"_tag","nameLocation":"176:4:36","nodeType":"VariableDeclaration","scope":11692,"src":"168:12:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11688,"name":"uint256","nodeType":"ElementaryTypeName","src":"168:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"103:83:36"},"returnParameters":{"id":11691,"nodeType":"ParameterList","parameters":[],"src":"195:0:36"},"scope":11752,"src":"82:114:36","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"b233bd05","id":11697,"implemented":false,"kind":"function","modifiers":[],"name":"stopSession","nameLocation":"211:11:36","nodeType":"FunctionDefinition","parameters":{"id":11695,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11694,"mutability":"mutable","name":"_superToken","nameLocation":"231:11:36","nodeType":"VariableDeclaration","scope":11697,"src":"223:19:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11693,"name":"address","nodeType":"ElementaryTypeName","src":"223:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"222:21:36"},"returnParameters":{"id":11696,"nodeType":"ParameterList","parameters":[],"src":"252:0:36"},"scope":11752,"src":"202:51:36","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"f437a7a5","id":11709,"implemented":false,"kind":"function","modifiers":[],"name":"startSessions","nameLocation":"268:13:36","nodeType":"FunctionDefinition","parameters":{"id":11707,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11700,"mutability":"mutable","name":"_superTokens","nameLocation":"308:12:36","nodeType":"VariableDeclaration","scope":11709,"src":"291:29:36","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":11698,"name":"address","nodeType":"ElementaryTypeName","src":"291:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11699,"nodeType":"ArrayTypeName","src":"291:9:36","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":11703,"mutability":"mutable","name":"_flowRates","nameLocation":"346:10:36","nodeType":"VariableDeclaration","scope":11709,"src":"330:26:36","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint96_$dyn_memory_ptr","typeString":"uint96[]"},"typeName":{"baseType":{"id":11701,"name":"uint96","nodeType":"ElementaryTypeName","src":"330:6:36","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"id":11702,"nodeType":"ArrayTypeName","src":"330:8:36","typeDescriptions":{"typeIdentifier":"t_array$_t_uint96_$dyn_storage_ptr","typeString":"uint96[]"}},"visibility":"internal"},{"constant":false,"id":11706,"mutability":"mutable","name":"_tags","nameLocation":"383:5:36","nodeType":"VariableDeclaration","scope":11709,"src":"366:22:36","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":11704,"name":"uint256","nodeType":"ElementaryTypeName","src":"366:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11705,"nodeType":"ArrayTypeName","src":"366:9:36","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"281:113:36"},"returnParameters":{"id":11708,"nodeType":"ParameterList","parameters":[],"src":"403:0:36"},"scope":11752,"src":"259:145:36","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"9afffbf9","id":11715,"implemented":false,"kind":"function","modifiers":[],"name":"stopSessions","nameLocation":"419:12:36","nodeType":"FunctionDefinition","parameters":{"id":11713,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11712,"mutability":"mutable","name":"_superTokens","nameLocation":"449:12:36","nodeType":"VariableDeclaration","scope":11715,"src":"432:29:36","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":11710,"name":"address","nodeType":"ElementaryTypeName","src":"432:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11711,"nodeType":"ArrayTypeName","src":"432:9:36","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"431:31:36"},"returnParameters":{"id":11714,"nodeType":"ParameterList","parameters":[],"src":"471:0:36"},"scope":11752,"src":"410:62:36","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"92c2226e","id":11724,"implemented":false,"kind":"function","modifiers":[],"name":"getNewSessionNonce","nameLocation":"487:18:36","nodeType":"FunctionDefinition","parameters":{"id":11720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11717,"mutability":"mutable","name":"_user","nameLocation":"523:5:36","nodeType":"VariableDeclaration","scope":11724,"src":"515:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11716,"name":"address","nodeType":"ElementaryTypeName","src":"515:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11719,"mutability":"mutable","name":"_superToken","nameLocation":"546:11:36","nodeType":"VariableDeclaration","scope":11724,"src":"538:19:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11718,"name":"address","nodeType":"ElementaryTypeName","src":"538:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"505:58:36"},"returnParameters":{"id":11723,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11722,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11724,"src":"587:7:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11721,"name":"uint256","nodeType":"ElementaryTypeName","src":"587:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"586:9:36"},"scope":11752,"src":"478:118:36","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"8ff3849b","id":11741,"implemented":false,"kind":"function","modifiers":[],"name":"getSessionData","nameLocation":"611:14:36","nodeType":"FunctionDefinition","parameters":{"id":11731,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11726,"mutability":"mutable","name":"_user","nameLocation":"643:5:36","nodeType":"VariableDeclaration","scope":11741,"src":"635:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11725,"name":"address","nodeType":"ElementaryTypeName","src":"635:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11728,"mutability":"mutable","name":"_superToken","nameLocation":"666:11:36","nodeType":"VariableDeclaration","scope":11741,"src":"658:19:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11727,"name":"address","nodeType":"ElementaryTypeName","src":"658:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11730,"mutability":"mutable","name":"_nonce","nameLocation":"695:6:36","nodeType":"VariableDeclaration","scope":11741,"src":"687:14:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11729,"name":"uint256","nodeType":"ElementaryTypeName","src":"687:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"625:82:36"},"returnParameters":{"id":11740,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11733,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11741,"src":"731:5:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":11732,"name":"int96","nodeType":"ElementaryTypeName","src":"731:5:36","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"},{"constant":false,"id":11735,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11741,"src":"738:6:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":11734,"name":"uint96","nodeType":"ElementaryTypeName","src":"738:6:36","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":11737,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11741,"src":"746:7:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11736,"name":"uint256","nodeType":"ElementaryTypeName","src":"746:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11739,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11741,"src":"755:7:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11738,"name":"uint256","nodeType":"ElementaryTypeName","src":"755:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"730:33:36"},"scope":11752,"src":"602:162:36","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"53732469","id":11751,"implemented":false,"kind":"function","modifiers":[],"name":"getCurrentSessionData","nameLocation":"779:21:36","nodeType":"FunctionDefinition","parameters":{"id":11744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11743,"mutability":"mutable","name":"_user","nameLocation":"818:5:36","nodeType":"VariableDeclaration","scope":11751,"src":"810:13:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11742,"name":"address","nodeType":"ElementaryTypeName","src":"810:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"800:29:36"},"returnParameters":{"id":11750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11746,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11751,"src":"853:7:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11745,"name":"uint256","nodeType":"ElementaryTypeName","src":"853:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11749,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11751,"src":"862:16:36","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":11747,"name":"address","nodeType":"ElementaryTypeName","src":"862:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11748,"nodeType":"ArrayTypeName","src":"862:9:36","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"852:27:36"},"scope":11752,"src":"770:110:36","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":11753,"src":"57:825:36","usedErrors":[]}],"src":"32:851:36"},"id":36},"contracts/interfaces/utils/IAccessControl.sol":{"ast":{"absolutePath":"contracts/interfaces/utils/IAccessControl.sol","exportedSymbols":{"IAccessControl":[11802]},"id":11803,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":11754,"literals":["solidity","^","0.8",".9"],"nodeType":"PragmaDirective","src":"32:23:37"},{"abstract":false,"baseContracts":[],"canonicalName":"IAccessControl","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":11802,"linearizedBaseContracts":[11802],"name":"IAccessControl","nameLocation":"67:14:37","nodeType":"ContractDefinition","nodes":[{"functionSelector":"52a9c8d7","id":11759,"implemented":false,"kind":"function","modifiers":[],"name":"getDefaultAdminRole","nameLocation":"97:19:37","nodeType":"FunctionDefinition","parameters":{"id":11755,"nodeType":"ParameterList","parameters":[],"src":"116:2:37"},"returnParameters":{"id":11758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11757,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11759,"src":"142:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11756,"name":"bytes32","nodeType":"ElementaryTypeName","src":"142:7:37","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"141:9:37"},"scope":11802,"src":"88:63:37","stateMutability":"pure","virtual":false,"visibility":"external"},{"functionSelector":"6e9067fb","id":11766,"implemented":false,"kind":"function","modifiers":[],"name":"getRole","nameLocation":"166:7:37","nodeType":"FunctionDefinition","parameters":{"id":11762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11761,"mutability":"mutable","name":"_role","nameLocation":"188:5:37","nodeType":"VariableDeclaration","scope":11766,"src":"174:19:37","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":11760,"name":"string","nodeType":"ElementaryTypeName","src":"174:6:37","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"173:21:37"},"returnParameters":{"id":11765,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11764,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11766,"src":"218:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11763,"name":"bytes32","nodeType":"ElementaryTypeName","src":"218:7:37","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"217:9:37"},"scope":11802,"src":"157:70:37","stateMutability":"pure","virtual":false,"visibility":"external"},{"functionSelector":"91d14854","id":11775,"implemented":false,"kind":"function","modifiers":[],"name":"hasRole","nameLocation":"242:7:37","nodeType":"FunctionDefinition","parameters":{"id":11771,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11768,"mutability":"mutable","name":"_role","nameLocation":"267:5:37","nodeType":"VariableDeclaration","scope":11775,"src":"259:13:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11767,"name":"bytes32","nodeType":"ElementaryTypeName","src":"259:7:37","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":11770,"mutability":"mutable","name":"_account","nameLocation":"290:8:37","nodeType":"VariableDeclaration","scope":11775,"src":"282:16:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11769,"name":"address","nodeType":"ElementaryTypeName","src":"282:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"249:55:37"},"returnParameters":{"id":11774,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11773,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11775,"src":"328:4:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11772,"name":"bool","nodeType":"ElementaryTypeName","src":"328:4:37","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"327:6:37"},"scope":11802,"src":"233:101:37","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"248a9ca3","id":11782,"implemented":false,"kind":"function","modifiers":[],"name":"getRoleAdmin","nameLocation":"349:12:37","nodeType":"FunctionDefinition","parameters":{"id":11778,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11777,"mutability":"mutable","name":"_role","nameLocation":"370:5:37","nodeType":"VariableDeclaration","scope":11782,"src":"362:13:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11776,"name":"bytes32","nodeType":"ElementaryTypeName","src":"362:7:37","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"361:15:37"},"returnParameters":{"id":11781,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11780,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11782,"src":"400:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11779,"name":"bytes32","nodeType":"ElementaryTypeName","src":"400:7:37","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"399:9:37"},"scope":11802,"src":"340:69:37","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"2f2ff15d","id":11789,"implemented":false,"kind":"function","modifiers":[],"name":"grantRole","nameLocation":"424:9:37","nodeType":"FunctionDefinition","parameters":{"id":11787,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11784,"mutability":"mutable","name":"_role","nameLocation":"442:5:37","nodeType":"VariableDeclaration","scope":11789,"src":"434:13:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11783,"name":"bytes32","nodeType":"ElementaryTypeName","src":"434:7:37","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":11786,"mutability":"mutable","name":"_account","nameLocation":"457:8:37","nodeType":"VariableDeclaration","scope":11789,"src":"449:16:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11785,"name":"address","nodeType":"ElementaryTypeName","src":"449:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"433:33:37"},"returnParameters":{"id":11788,"nodeType":"ParameterList","parameters":[],"src":"475:0:37"},"scope":11802,"src":"415:61:37","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"d547741f","id":11796,"implemented":false,"kind":"function","modifiers":[],"name":"revokeRole","nameLocation":"491:10:37","nodeType":"FunctionDefinition","parameters":{"id":11794,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11791,"mutability":"mutable","name":"_role","nameLocation":"510:5:37","nodeType":"VariableDeclaration","scope":11796,"src":"502:13:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11790,"name":"bytes32","nodeType":"ElementaryTypeName","src":"502:7:37","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":11793,"mutability":"mutable","name":"_account","nameLocation":"525:8:37","nodeType":"VariableDeclaration","scope":11796,"src":"517:16:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11792,"name":"address","nodeType":"ElementaryTypeName","src":"517:7:37","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"501:33:37"},"returnParameters":{"id":11795,"nodeType":"ParameterList","parameters":[],"src":"543:0:37"},"scope":11802,"src":"482:62:37","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"8bb9c5bf","id":11801,"implemented":false,"kind":"function","modifiers":[],"name":"renounceRole","nameLocation":"559:12:37","nodeType":"FunctionDefinition","parameters":{"id":11799,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11798,"mutability":"mutable","name":"_role","nameLocation":"580:5:37","nodeType":"VariableDeclaration","scope":11801,"src":"572:13:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11797,"name":"bytes32","nodeType":"ElementaryTypeName","src":"572:7:37","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"571:15:37"},"returnParameters":{"id":11800,"nodeType":"ParameterList","parameters":[],"src":"595:0:37"},"scope":11802,"src":"550:46:37","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":11803,"src":"57:541:37","usedErrors":[]}],"src":"32:567:37"},"id":37},"contracts/interfaces/utils/ICut.sol":{"ast":{"absolutePath":"contracts/interfaces/utils/ICut.sol","exportedSymbols":{"ICut":[11840]},"id":11841,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":11804,"literals":["solidity","^","0.8",".9"],"nodeType":"PragmaDirective","src":"32:23:38"},{"abstract":false,"baseContracts":[],"canonicalName":"ICut","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":11840,"linearizedBaseContracts":[11840],"name":"ICut","nameLocation":"67:4:38","nodeType":"ContractDefinition","nodes":[{"canonicalName":"ICut.FacetCutAction","id":11808,"members":[{"id":11805,"name":"Add","nameLocation":"108:3:38","nodeType":"EnumValue","src":"108:3:38"},{"id":11806,"name":"Replace","nameLocation":"121:7:38","nodeType":"EnumValue","src":"121:7:38"},{"id":11807,"name":"Remove","nameLocation":"138:6:38","nodeType":"EnumValue","src":"138:6:38"}],"name":"FacetCutAction","nameLocation":"83:14:38","nodeType":"EnumDefinition","src":"78:72:38"},{"canonicalName":"ICut.FacetCut","id":11817,"members":[{"constant":false,"id":11810,"mutability":"mutable","name":"facetAddress","nameLocation":"224:12:38","nodeType":"VariableDeclaration","scope":11817,"src":"216:20:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11809,"name":"address","nodeType":"ElementaryTypeName","src":"216:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11813,"mutability":"mutable","name":"action","nameLocation":"261:6:38","nodeType":"VariableDeclaration","scope":11817,"src":"246:21:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_FacetCutAction_$11808","typeString":"enum ICut.FacetCutAction"},"typeName":{"id":11812,"nodeType":"UserDefinedTypeName","pathNode":{"id":11811,"name":"FacetCutAction","nameLocations":["246:14:38"],"nodeType":"IdentifierPath","referencedDeclaration":11808,"src":"246:14:38"},"referencedDeclaration":11808,"src":"246:14:38","typeDescriptions":{"typeIdentifier":"t_enum$_FacetCutAction_$11808","typeString":"enum ICut.FacetCutAction"}},"visibility":"internal"},{"constant":false,"id":11816,"mutability":"mutable","name":"functionSelectors","nameLocation":"286:17:38","nodeType":"VariableDeclaration","scope":11817,"src":"277:26:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage_ptr","typeString":"bytes4[]"},"typeName":{"baseType":{"id":11814,"name":"bytes4","nodeType":"ElementaryTypeName","src":"277:6:38","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":11815,"nodeType":"ArrayTypeName","src":"277:8:38","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage_ptr","typeString":"bytes4[]"}},"visibility":"internal"}],"name":"FacetCut","nameLocation":"197:8:38","nodeType":"StructDefinition","scope":11840,"src":"190:120:38","visibility":"public"},{"documentation":{"id":11818,"nodeType":"StructuredDocumentation","src":"316:438:38","text":"@notice Add/replace/remove any number of functions and optionally execute\n a function with delegatecall\n @param _diamondCut Contains the facet addresses and function selectors\n @param _init The address of the contract or facet to execute _calldata\n @param _calldata A function call, including function selector and arguments\n _calldata is executed with delegatecall on _init"},"functionSelector":"1f931c1c","id":11829,"implemented":false,"kind":"function","modifiers":[],"name":"diamondCut","nameLocation":"768:10:38","nodeType":"FunctionDefinition","parameters":{"id":11827,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11822,"mutability":"mutable","name":"_diamondCut","nameLocation":"808:11:38","nodeType":"VariableDeclaration","scope":11829,"src":"788:31:38","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_FacetCut_$11817_calldata_ptr_$dyn_calldata_ptr","typeString":"struct ICut.FacetCut[]"},"typeName":{"baseType":{"id":11820,"nodeType":"UserDefinedTypeName","pathNode":{"id":11819,"name":"FacetCut","nameLocations":["788:8:38"],"nodeType":"IdentifierPath","referencedDeclaration":11817,"src":"788:8:38"},"referencedDeclaration":11817,"src":"788:8:38","typeDescriptions":{"typeIdentifier":"t_struct$_FacetCut_$11817_storage_ptr","typeString":"struct ICut.FacetCut"}},"id":11821,"nodeType":"ArrayTypeName","src":"788:10:38","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_FacetCut_$11817_storage_$dyn_storage_ptr","typeString":"struct ICut.FacetCut[]"}},"visibility":"internal"},{"constant":false,"id":11824,"mutability":"mutable","name":"_init","nameLocation":"837:5:38","nodeType":"VariableDeclaration","scope":11829,"src":"829:13:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11823,"name":"address","nodeType":"ElementaryTypeName","src":"829:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11826,"mutability":"mutable","name":"_calldata","nameLocation":"867:9:38","nodeType":"VariableDeclaration","scope":11829,"src":"852:24:38","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":11825,"name":"bytes","nodeType":"ElementaryTypeName","src":"852:5:38","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"778:104:38"},"returnParameters":{"id":11828,"nodeType":"ParameterList","parameters":[],"src":"891:0:38"},"scope":11840,"src":"759:133:38","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"eventSelector":"8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb673","id":11839,"name":"DiamondCut","nameLocation":"904:10:38","nodeType":"EventDefinition","parameters":{"id":11838,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11833,"indexed":false,"mutability":"mutable","name":"_diamondCut","nameLocation":"926:11:38","nodeType":"VariableDeclaration","scope":11839,"src":"915:22:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr","typeString":"struct ICut.FacetCut[]"},"typeName":{"baseType":{"id":11831,"nodeType":"UserDefinedTypeName","pathNode":{"id":11830,"name":"FacetCut","nameLocations":["915:8:38"],"nodeType":"IdentifierPath","referencedDeclaration":11817,"src":"915:8:38"},"referencedDeclaration":11817,"src":"915:8:38","typeDescriptions":{"typeIdentifier":"t_struct$_FacetCut_$11817_storage_ptr","typeString":"struct ICut.FacetCut"}},"id":11832,"nodeType":"ArrayTypeName","src":"915:10:38","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_FacetCut_$11817_storage_$dyn_storage_ptr","typeString":"struct ICut.FacetCut[]"}},"visibility":"internal"},{"constant":false,"id":11835,"indexed":false,"mutability":"mutable","name":"_init","nameLocation":"947:5:38","nodeType":"VariableDeclaration","scope":11839,"src":"939:13:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11834,"name":"address","nodeType":"ElementaryTypeName","src":"939:7:38","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11837,"indexed":false,"mutability":"mutable","name":"_calldata","nameLocation":"960:9:38","nodeType":"VariableDeclaration","scope":11839,"src":"954:15:38","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11836,"name":"bytes","nodeType":"ElementaryTypeName","src":"954:5:38","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"914:56:38"},"src":"898:73:38"}],"scope":11841,"src":"57:916:38","usedErrors":[]}],"src":"32:942:38"},"id":38},"contracts/interfaces/utils/IERC165.sol":{"ast":{"absolutePath":"contracts/interfaces/utils/IERC165.sol","exportedSymbols":{"IERC165":[11851]},"id":11852,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":11842,"literals":["solidity","^","0.8",".9"],"nodeType":"PragmaDirective","src":"32:23:39"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":11851,"linearizedBaseContracts":[11851],"name":"IERC165","nameLocation":"67:7:39","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":11843,"nodeType":"StructuredDocumentation","src":"81:373:39","text":"@notice Query if a contract implements an interface\n @param interfaceId The interface identifier, as specified in ERC-165\n @dev Interface identification is specified in ERC-165. This function\n uses less than 30,000 gas.\n @return `true` if the contract implements `interfaceID` and\n `interfaceID` is not 0xffffffff, `false` otherwise"},"functionSelector":"01ffc9a7","id":11850,"implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"468:17:39","nodeType":"FunctionDefinition","parameters":{"id":11846,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11845,"mutability":"mutable","name":"interfaceId","nameLocation":"493:11:39","nodeType":"VariableDeclaration","scope":11850,"src":"486:18:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":11844,"name":"bytes4","nodeType":"ElementaryTypeName","src":"486:6:39","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"485:20:39"},"returnParameters":{"id":11849,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11848,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11850,"src":"529:4:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11847,"name":"bool","nodeType":"ElementaryTypeName","src":"529:4:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"528:6:39"},"scope":11851,"src":"459:76:39","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":11852,"src":"57:480:39","usedErrors":[]}],"src":"32:506:39"},"id":39},"contracts/interfaces/utils/ILoupe.sol":{"ast":{"absolutePath":"contracts/interfaces/utils/ILoupe.sol","exportedSymbols":{"ILoupe":[11892]},"id":11893,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":11853,"literals":["solidity","^","0.8",".9"],"nodeType":"PragmaDirective","src":"32:23:40"},{"abstract":false,"baseContracts":[],"canonicalName":"ILoupe","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":11892,"linearizedBaseContracts":[11892],"name":"ILoupe","nameLocation":"168:6:40","nodeType":"ContractDefinition","nodes":[{"canonicalName":"ILoupe.Facet","id":11859,"members":[{"constant":false,"id":11855,"mutability":"mutable","name":"facetAddress","nameLocation":"292:12:40","nodeType":"VariableDeclaration","scope":11859,"src":"284:20:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11854,"name":"address","nodeType":"ElementaryTypeName","src":"284:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11858,"mutability":"mutable","name":"functionSelectors","nameLocation":"323:17:40","nodeType":"VariableDeclaration","scope":11859,"src":"314:26:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage_ptr","typeString":"bytes4[]"},"typeName":{"baseType":{"id":11856,"name":"bytes4","nodeType":"ElementaryTypeName","src":"314:6:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":11857,"nodeType":"ArrayTypeName","src":"314:8:40","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage_ptr","typeString":"bytes4[]"}},"visibility":"internal"}],"name":"Facet","nameLocation":"268:5:40","nodeType":"StructDefinition","scope":11892,"src":"261:86:40","visibility":"public"},{"documentation":{"id":11860,"nodeType":"StructuredDocumentation","src":"353:106:40","text":"@notice Gets all facet addresses and their four byte function selectors.\n @return facets_ Facet"},"functionSelector":"7a0ed627","id":11867,"implemented":false,"kind":"function","modifiers":[],"name":"facets","nameLocation":"473:6:40","nodeType":"FunctionDefinition","parameters":{"id":11861,"nodeType":"ParameterList","parameters":[],"src":"479:2:40"},"returnParameters":{"id":11866,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11865,"mutability":"mutable","name":"facets_","nameLocation":"520:7:40","nodeType":"VariableDeclaration","scope":11867,"src":"505:22:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Facet_$11859_memory_ptr_$dyn_memory_ptr","typeString":"struct ILoupe.Facet[]"},"typeName":{"baseType":{"id":11863,"nodeType":"UserDefinedTypeName","pathNode":{"id":11862,"name":"Facet","nameLocations":["505:5:40"],"nodeType":"IdentifierPath","referencedDeclaration":11859,"src":"505:5:40"},"referencedDeclaration":11859,"src":"505:5:40","typeDescriptions":{"typeIdentifier":"t_struct$_Facet_$11859_storage_ptr","typeString":"struct ILoupe.Facet"}},"id":11864,"nodeType":"ArrayTypeName","src":"505:7:40","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Facet_$11859_storage_$dyn_storage_ptr","typeString":"struct ILoupe.Facet[]"}},"visibility":"internal"}],"src":"504:24:40"},"scope":11892,"src":"464:65:40","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":11868,"nodeType":"StructuredDocumentation","src":"535:155:40","text":"@notice Gets all the function selectors supported by a specific facet.\n @param _facet The facet address.\n @return facetFunctionSelectors_"},"functionSelector":"adfca15e","id":11876,"implemented":false,"kind":"function","modifiers":[],"name":"facetFunctionSelectors","nameLocation":"704:22:40","nodeType":"FunctionDefinition","parameters":{"id":11871,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11870,"mutability":"mutable","name":"_facet","nameLocation":"744:6:40","nodeType":"VariableDeclaration","scope":11876,"src":"736:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11869,"name":"address","nodeType":"ElementaryTypeName","src":"736:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"726:30:40"},"returnParameters":{"id":11875,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11874,"mutability":"mutable","name":"facetFunctionSelectors_","nameLocation":"796:23:40","nodeType":"VariableDeclaration","scope":11876,"src":"780:39:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[]"},"typeName":{"baseType":{"id":11872,"name":"bytes4","nodeType":"ElementaryTypeName","src":"780:6:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":11873,"nodeType":"ArrayTypeName","src":"780:8:40","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage_ptr","typeString":"bytes4[]"}},"visibility":"internal"}],"src":"779:41:40"},"scope":11892,"src":"695:126:40","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":11877,"nodeType":"StructuredDocumentation","src":"827:90:40","text":"@notice Get all the facet addresses used by a diamond.\n @return facetAddresses_"},"functionSelector":"52ef6b2c","id":11883,"implemented":false,"kind":"function","modifiers":[],"name":"facetAddresses","nameLocation":"931:14:40","nodeType":"FunctionDefinition","parameters":{"id":11878,"nodeType":"ParameterList","parameters":[],"src":"945:2:40"},"returnParameters":{"id":11882,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11881,"mutability":"mutable","name":"facetAddresses_","nameLocation":"1012:15:40","nodeType":"VariableDeclaration","scope":11883,"src":"995:32:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":11879,"name":"address","nodeType":"ElementaryTypeName","src":"995:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11880,"nodeType":"ArrayTypeName","src":"995:9:40","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"994:34:40"},"scope":11892,"src":"922:107:40","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":11884,"nodeType":"StructuredDocumentation","src":"1035:219:40","text":"@notice Gets the facet that supports the given selector.\n @dev If facet is not found return address(0).\n @param _functionSelector The function selector.\n @return facetAddress_ The facet address."},"functionSelector":"cdffacc6","id":11891,"implemented":false,"kind":"function","modifiers":[],"name":"facetAddress","nameLocation":"1268:12:40","nodeType":"FunctionDefinition","parameters":{"id":11887,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11886,"mutability":"mutable","name":"_functionSelector","nameLocation":"1297:17:40","nodeType":"VariableDeclaration","scope":11891,"src":"1290:24:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":11885,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1290:6:40","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1280:40:40"},"returnParameters":{"id":11890,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11889,"mutability":"mutable","name":"facetAddress_","nameLocation":"1352:13:40","nodeType":"VariableDeclaration","scope":11891,"src":"1344:21:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11888,"name":"address","nodeType":"ElementaryTypeName","src":"1344:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1343:23:40"},"scope":11892,"src":"1259:108:40","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":11893,"src":"158:1211:40","usedErrors":[]}],"src":"32:1338:40"},"id":40},"contracts/interfaces/utils/IUtility.sol":{"ast":{"absolutePath":"contracts/interfaces/utils/IUtility.sol","exportedSymbols":{"IUtility":[11905]},"id":11906,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":11894,"literals":["solidity","^","0.8",".9"],"nodeType":"PragmaDirective","src":"32:23:41"},{"abstract":false,"baseContracts":[],"canonicalName":"IUtility","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":11905,"linearizedBaseContracts":[11905],"name":"IUtility","nameLocation":"67:8:41","nodeType":"ContractDefinition","nodes":[{"functionSelector":"88a9d554","id":11899,"implemented":false,"kind":"function","modifiers":[],"name":"getNativeBalance","nameLocation":"91:16:41","nodeType":"FunctionDefinition","parameters":{"id":11895,"nodeType":"ParameterList","parameters":[],"src":"107:2:41"},"returnParameters":{"id":11898,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11897,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":11899,"src":"133:7:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11896,"name":"uint256","nodeType":"ElementaryTypeName","src":"133:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"132:9:41"},"scope":11905,"src":"82:60:41","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"c9a463e2","id":11904,"implemented":false,"kind":"function","modifiers":[],"name":"withdrawNativeBalance","nameLocation":"157:21:41","nodeType":"FunctionDefinition","parameters":{"id":11902,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11901,"mutability":"mutable","name":"_amount","nameLocation":"187:7:41","nodeType":"VariableDeclaration","scope":11904,"src":"179:15:41","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11900,"name":"uint256","nodeType":"ElementaryTypeName","src":"179:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"178:17:41"},"returnParameters":{"id":11903,"nodeType":"ParameterList","parameters":[],"src":"204:0:41"},"scope":11905,"src":"148:57:41","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":11906,"src":"57:150:41","usedErrors":[]}],"src":"32:176:41"},"id":41},"contracts/libraries/core/LibAutomate.sol":{"ast":{"absolutePath":"contracts/libraries/core/LibAutomate.sol","exportedSymbols":{"Address":[955],"CallerNotAutobot":[11913],"IAutomate":[16314],"IERC20":[145],"IERC20Permit":[181],"IOpsProxyFactory":[16352],"ITaskTreasuryUpgradable":[16342],"InsufficientAppGelatoBalance":[11911],"LibAutomate":[12310],"Module":[16268],"ModuleData":[16276],"SafeERC20":[462]},"id":12311,"license":"BUSL-1.1","nodeType":"SourceUnit","nodes":[{"id":11907,"literals":["solidity","^","0.8",".9"],"nodeType":"PragmaDirective","src":"36:23:42"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","file":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","id":11908,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12311,"sourceUnit":463,"src":"61:65:42","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/services/gelato/Types.sol","file":"../../services/gelato/Types.sol","id":11909,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":12311,"sourceUnit":16353,"src":"127:41:42","symbolAliases":[],"unitAlias":""},{"errorSelector":"a4261199","id":11911,"name":"InsufficientAppGelatoBalance","nameLocation":"193:28:42","nodeType":"ErrorDefinition","parameters":{"id":11910,"nodeType":"ParameterList","parameters":[],"src":"221:2:42"},"src":"187:37:42"},{"errorSelector":"b5e0b292","id":11913,"name":"CallerNotAutobot","nameLocation":"231:16:42","nodeType":"ErrorDefinition","parameters":{"id":11912,"nodeType":"ParameterList","parameters":[],"src":"247:2:42"},"src":"225:25:42"},{"abstract":false,"baseContracts":[],"canonicalName":"LibAutomate","contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":12310,"linearizedBaseContracts":[12310],"name":"LibAutomate","nameLocation":"260:11:42","nodeType":"ContractDefinition","nodes":[{"global":false,"id":11917,"libraryName":{"id":11914,"name":"SafeERC20","nameLocations":["284:9:42"],"nodeType":"IdentifierPath","referencedDeclaration":462,"src":"284:9:42"},"nodeType":"UsingForDirective","src":"278:27:42","typeName":{"id":11916,"nodeType":"UserDefinedTypeName","pathNode":{"id":11915,"name":"IERC20","nameLocations":["298:6:42"],"nodeType":"IdentifierPath","referencedDeclaration":145,"src":"298:6:42"},"referencedDeclaration":145,"src":"298:6:42","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$145","typeString":"contract IERC20"}}},{"constant":true,"id":11922,"mutability":"constant","name":"STORAGE_POSITION_AUTOMATE","nameLocation":"328:25:42","nodeType":"VariableDeclaration","scope":12310,"src":"311:69:42","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11918,"name":"bytes32","nodeType":"ElementaryTypeName","src":"311:7:42","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"64732e6175746f6d617465","id":11920,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"366:13:42","typeDescriptions":{"typeIdentifier":"t_stringliteral_de06769ca6d80a022439e234eebb61c3801d652175b62f912d6f8cac7b881c65","typeString":"literal_string \"ds.automate\""},"value":"ds.automate"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_de06769ca6d80a022439e234eebb61c3801d652175b62f912d6f8cac7b881c65","typeString":"literal_string \"ds.automate\""}],"id":11919,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"356:9:42","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":11921,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"356:24:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":true,"id":11925,"mutability":"constant","name":"AUTOBOT_PROXY_FACTORY","nameLocation":"412:21:42","nodeType":"VariableDeclaration","scope":12310,"src":"386:100:42","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11923,"name":"address","nodeType":"ElementaryTypeName","src":"386:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"hexValue":"307843383135644231364434626536646466323638354332303139333739303561426633333846354437","id":11924,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"444:42:42","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"value":"0xC815dB16D4be6ddf2685C201937905aBf338F5D7"},"visibility":"internal"},{"constant":true,"id":11928,"mutability":"constant","name":"GELATO_FEE","nameLocation":"518:10:42","nodeType":"VariableDeclaration","scope":12310,"src":"492:89:42","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11926,"name":"address","nodeType":"ElementaryTypeName","src":"492:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"hexValue":"307845656565654565656545654565654565456545656545454565656565456565656565656545456545","id":11927,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"539:42:42","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"value":"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"},"visibility":"internal"},{"canonicalName":"LibAutomate.StorageAutomate","id":11939,"members":[{"constant":false,"id":11931,"mutability":"mutable","name":"gelatoAutobot","nameLocation":"631:13:42","nodeType":"VariableDeclaration","scope":11939,"src":"621:23:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAutomate_$16314","typeString":"contract IAutomate"},"typeName":{"id":11930,"nodeType":"UserDefinedTypeName","pathNode":{"id":11929,"name":"IAutomate","nameLocations":["621:9:42"],"nodeType":"IdentifierPath","referencedDeclaration":16314,"src":"621:9:42"},"referencedDeclaration":16314,"src":"621:9:42","typeDescriptions":{"typeIdentifier":"t_contract$_IAutomate_$16314","typeString":"contract IAutomate"}},"visibility":"internal"},{"constant":false,"id":11934,"mutability":"mutable","name":"gelatoTreasury","nameLocation":"678:14:42","nodeType":"VariableDeclaration","scope":11939,"src":"654:38:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ITaskTreasuryUpgradable_$16342","typeString":"contract ITaskTreasuryUpgradable"},"typeName":{"id":11933,"nodeType":"UserDefinedTypeName","pathNode":{"id":11932,"name":"ITaskTreasuryUpgradable","nameLocations":["654:23:42"],"nodeType":"IdentifierPath","referencedDeclaration":16342,"src":"654:23:42"},"referencedDeclaration":16342,"src":"654:23:42","typeDescriptions":{"typeIdentifier":"t_contract$_ITaskTreasuryUpgradable_$16342","typeString":"contract ITaskTreasuryUpgradable"}},"visibility":"internal"},{"constant":false,"id":11936,"mutability":"mutable","name":"gelatoNetwork","nameLocation":"710:13:42","nodeType":"VariableDeclaration","scope":11939,"src":"702:21:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11935,"name":"address","nodeType":"ElementaryTypeName","src":"702:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11938,"mutability":"mutable","name":"minimumAppGelatoBalance","nameLocation":"741:23:42","nodeType":"VariableDeclaration","scope":11939,"src":"733:31:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11937,"name":"uint256","nodeType":"ElementaryTypeName","src":"733:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"StorageAutomate","nameLocation":"595:15:42","nodeType":"StructDefinition","scope":12310,"src":"588:183:42","visibility":"public"},{"body":{"id":11950,"nodeType":"Block","src":"883:121:42","statements":[{"assignments":[11946],"declarations":[{"constant":false,"id":11946,"mutability":"mutable","name":"position","nameLocation":"901:8:42","nodeType":"VariableDeclaration","scope":11950,"src":"893:16:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11945,"name":"bytes32","nodeType":"ElementaryTypeName","src":"893:7:42","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":11948,"initialValue":{"id":11947,"name":"STORAGE_POSITION_AUTOMATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11922,"src":"912:25:42","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"893:44:42"},{"AST":{"nodeType":"YulBlock","src":"956:42:42","statements":[{"nodeType":"YulAssignment","src":"970:18:42","value":{"name":"position","nodeType":"YulIdentifier","src":"980:8:42"},"variableNames":[{"name":"s.slot","nodeType":"YulIdentifier","src":"970:6:42"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":11946,"isOffset":false,"isSlot":false,"src":"980:8:42","valueSize":1},{"declaration":11943,"isOffset":false,"isSlot":true,"src":"970:6:42","suffix":"slot","valueSize":1}],"id":11949,"nodeType":"InlineAssembly","src":"947:51:42"}]},"id":11951,"implemented":true,"kind":"function","modifiers":[],"name":"_storageAutomate","nameLocation":"786:16:42","nodeType":"FunctionDefinition","parameters":{"id":11940,"nodeType":"ParameterList","parameters":[],"src":"802:2:42"},"returnParameters":{"id":11944,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11943,"mutability":"mutable","name":"s","nameLocation":"876:1:42","nodeType":"VariableDeclaration","scope":11951,"src":"852:25:42","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageAutomate_$11939_storage_ptr","typeString":"struct LibAutomate.StorageAutomate"},"typeName":{"id":11942,"nodeType":"UserDefinedTypeName","pathNode":{"id":11941,"name":"StorageAutomate","nameLocations":["852:15:42"],"nodeType":"IdentifierPath","referencedDeclaration":11939,"src":"852:15:42"},"referencedDeclaration":11939,"src":"852:15:42","typeDescriptions":{"typeIdentifier":"t_struct$_StorageAutomate_$11939_storage_ptr","typeString":"struct LibAutomate.StorageAutomate"}},"visibility":"internal"}],"src":"851:27:42"},"scope":12310,"src":"777:227:42","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11969,"nodeType":"Block","src":"1150:152:42","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":11962,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1229:3:42","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1233:6:42","memberName":"sender","nodeType":"MemberAccess","src":"1229:10:42","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11961,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1221:8:42","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":11960,"name":"address","nodeType":"ElementaryTypeName","src":"1221:8:42","stateMutability":"payable","typeDescriptions":{}}},"id":11964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1221:19:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":11965,"name":"GELATO_FEE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11928,"src":"1254:10:42","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11966,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11953,"src":"1278:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11956,"name":"_storageAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11951,"src":"1160:16:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageAutomate_$11939_storage_ptr_$","typeString":"function () pure returns (struct LibAutomate.StorageAutomate storage pointer)"}},"id":11957,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1160:18:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageAutomate_$11939_storage_ptr","typeString":"struct LibAutomate.StorageAutomate storage pointer"}},"id":11958,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1179:14:42","memberName":"gelatoTreasury","nodeType":"MemberAccess","referencedDeclaration":11934,"src":"1160:33:42","typeDescriptions":{"typeIdentifier":"t_contract$_ITaskTreasuryUpgradable_$16342","typeString":"contract ITaskTreasuryUpgradable"}},"id":11959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1194:13:42","memberName":"withdrawFunds","nodeType":"MemberAccess","referencedDeclaration":16332,"src":"1160:47:42","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_payable_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address payable,address,uint256) external"}},"id":11967,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1160:135:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11968,"nodeType":"ExpressionStatement","src":"1160:135:42"}]},"id":11970,"implemented":true,"kind":"function","modifiers":[],"name":"_withdrawGelatoFunds","nameLocation":"1103:20:42","nodeType":"FunctionDefinition","parameters":{"id":11954,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11953,"mutability":"mutable","name":"_amount","nameLocation":"1132:7:42","nodeType":"VariableDeclaration","scope":11970,"src":"1124:15:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11952,"name":"uint256","nodeType":"ElementaryTypeName","src":"1124:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1123:17:42"},"returnParameters":{"id":11955,"nodeType":"ParameterList","parameters":[],"src":"1150:0:42"},"scope":12310,"src":"1094:208:42","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":11989,"nodeType":"Block","src":"1410:199:42","statements":[{"expression":{"arguments":[{"arguments":[{"id":11983,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1504:4:42","typeDescriptions":{"typeIdentifier":"t_contract$_LibAutomate_$12310","typeString":"library LibAutomate"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LibAutomate_$12310","typeString":"library LibAutomate"}],"id":11982,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1496:7:42","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11981,"name":"address","nodeType":"ElementaryTypeName","src":"1496:7:42","typeDescriptions":{}}},"id":11984,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1496:13:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11985,"name":"GELATO_FEE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11928,"src":"1561:10:42","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11986,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11972,"src":"1585:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11975,"name":"_storageAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11951,"src":"1420:16:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageAutomate_$11939_storage_ptr_$","typeString":"function () pure returns (struct LibAutomate.StorageAutomate storage pointer)"}},"id":11976,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1420:18:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageAutomate_$11939_storage_ptr","typeString":"struct LibAutomate.StorageAutomate storage pointer"}},"id":11977,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1439:14:42","memberName":"gelatoTreasury","nodeType":"MemberAccess","referencedDeclaration":11934,"src":"1420:33:42","typeDescriptions":{"typeIdentifier":"t_contract$_ITaskTreasuryUpgradable_$16342","typeString":"contract ITaskTreasuryUpgradable"}},"id":11978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1454:12:42","memberName":"depositFunds","nodeType":"MemberAccess","referencedDeclaration":16323,"src":"1420:46:42","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) payable external"}},"id":11980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":11979,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11972,"src":"1474:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"1420:62:42","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_address_$_t_uint256_$returns$__$value","typeString":"function (address,address,uint256) payable external"}},"id":11987,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1420:182:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11988,"nodeType":"ExpressionStatement","src":"1420:182:42"}]},"id":11990,"implemented":true,"kind":"function","modifiers":[],"name":"_depositGelatoFunds","nameLocation":"1364:19:42","nodeType":"FunctionDefinition","parameters":{"id":11973,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11972,"mutability":"mutable","name":"_amount","nameLocation":"1392:7:42","nodeType":"VariableDeclaration","scope":11990,"src":"1384:15:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11971,"name":"uint256","nodeType":"ElementaryTypeName","src":"1384:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1383:17:42"},"returnParameters":{"id":11974,"nodeType":"ParameterList","parameters":[],"src":"1410:0:42"},"scope":12310,"src":"1355:254:42","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":12051,"nodeType":"Block","src":"1754:401:42","statements":[{"assignments":[12002],"declarations":[{"constant":false,"id":12002,"mutability":"mutable","name":"moduleData","nameLocation":"1782:10:42","nodeType":"VariableDeclaration","scope":12051,"src":"1764:28:42","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ModuleData_$16276_memory_ptr","typeString":"struct ModuleData"},"typeName":{"id":12001,"nodeType":"UserDefinedTypeName","pathNode":{"id":12000,"name":"ModuleData","nameLocations":["1764:10:42"],"nodeType":"IdentifierPath","referencedDeclaration":16276,"src":"1764:10:42"},"referencedDeclaration":16276,"src":"1764:10:42","typeDescriptions":{"typeIdentifier":"t_struct$_ModuleData_$16276_storage_ptr","typeString":"struct ModuleData"}},"visibility":"internal"}],"id":12016,"initialValue":{"arguments":[{"arguments":[{"hexValue":"32","id":12008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1842:1:42","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"id":12007,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1829:12:42","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_enum$_Module_$16268_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (enum Module[] memory)"},"typeName":{"baseType":{"id":12005,"nodeType":"UserDefinedTypeName","pathNode":{"id":12004,"name":"Module","nameLocations":["1833:6:42"],"nodeType":"IdentifierPath","referencedDeclaration":16268,"src":"1833:6:42"},"referencedDeclaration":16268,"src":"1833:6:42","typeDescriptions":{"typeIdentifier":"t_enum$_Module_$16268","typeString":"enum Module"}},"id":12006,"nodeType":"ArrayTypeName","src":"1833:8:42","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_Module_$16268_$dyn_storage_ptr","typeString":"enum Module[]"}}},"id":12009,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1829:15:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_Module_$16268_$dyn_memory_ptr","typeString":"enum Module[] memory"}},{"arguments":[{"hexValue":"31","id":12013,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1876:1:42","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":12012,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1864:11:42","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory[] memory)"},"typeName":{"baseType":{"id":12010,"name":"bytes","nodeType":"ElementaryTypeName","src":"1868:5:42","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":12011,"nodeType":"ArrayTypeName","src":"1868:7:42","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}}},"id":12014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1864:14:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_enum$_Module_$16268_$dyn_memory_ptr","typeString":"enum Module[] memory"},{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}],"id":12003,"name":"ModuleData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16276,"src":"1795:10:42","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_ModuleData_$16276_storage_ptr_$","typeString":"type(struct ModuleData storage pointer)"}},"id":12015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["1820:7:42","1858:4:42"],"names":["modules","args"],"nodeType":"FunctionCall","src":"1795:94:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ModuleData_$16276_memory_ptr","typeString":"struct ModuleData memory"}},"nodeType":"VariableDeclarationStatement","src":"1764:125:42"},{"expression":{"id":12024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":12017,"name":"moduleData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12002,"src":"1900:10:42","typeDescriptions":{"typeIdentifier":"t_struct$_ModuleData_$16276_memory_ptr","typeString":"struct ModuleData memory"}},"id":12020,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1911:7:42","memberName":"modules","nodeType":"MemberAccess","referencedDeclaration":16272,"src":"1900:18:42","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_Module_$16268_$dyn_memory_ptr","typeString":"enum Module[] memory"}},"id":12021,"indexExpression":{"hexValue":"30","id":12019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1919:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1900:21:42","typeDescriptions":{"typeIdentifier":"t_enum$_Module_$16268","typeString":"enum Module"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":12022,"name":"Module","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16268,"src":"1924:6:42","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Module_$16268_$","typeString":"type(enum Module)"}},"id":12023,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1931:4:42","memberName":"TIME","nodeType":"MemberAccess","referencedDeclaration":16265,"src":"1924:11:42","typeDescriptions":{"typeIdentifier":"t_enum$_Module_$16268","typeString":"enum Module"}},"src":"1900:35:42","typeDescriptions":{"typeIdentifier":"t_enum$_Module_$16268","typeString":"enum Module"}},"id":12025,"nodeType":"ExpressionStatement","src":"1900:35:42"},{"expression":{"id":12033,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":12026,"name":"moduleData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12002,"src":"1945:10:42","typeDescriptions":{"typeIdentifier":"t_struct$_ModuleData_$16276_memory_ptr","typeString":"struct ModuleData memory"}},"id":12029,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1956:7:42","memberName":"modules","nodeType":"MemberAccess","referencedDeclaration":16272,"src":"1945:18:42","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_Module_$16268_$dyn_memory_ptr","typeString":"enum Module[] memory"}},"id":12030,"indexExpression":{"hexValue":"31","id":12028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1964:1:42","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1945:21:42","typeDescriptions":{"typeIdentifier":"t_enum$_Module_$16268","typeString":"enum Module"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":12031,"name":"Module","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16268,"src":"1969:6:42","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Module_$16268_$","typeString":"type(enum Module)"}},"id":12032,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1976:11:42","memberName":"SINGLE_EXEC","nodeType":"MemberAccess","referencedDeclaration":16267,"src":"1969:18:42","typeDescriptions":{"typeIdentifier":"t_enum$_Module_$16268","typeString":"enum Module"}},"src":"1945:42:42","typeDescriptions":{"typeIdentifier":"t_enum$_Module_$16268","typeString":"enum Module"}},"id":12034,"nodeType":"ExpressionStatement","src":"1945:42:42"},{"expression":{"id":12047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":12035,"name":"moduleData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12002,"src":"1998:10:42","typeDescriptions":{"typeIdentifier":"t_struct$_ModuleData_$16276_memory_ptr","typeString":"struct ModuleData memory"}},"id":12038,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2009:4:42","memberName":"args","nodeType":"MemberAccess","referencedDeclaration":16275,"src":"1998:15:42","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"id":12039,"indexExpression":{"hexValue":"30","id":12037,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2014:1:42","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1998:18:42","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":12041,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"2047:5:42","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":12042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2053:9:42","memberName":"timestamp","nodeType":"MemberAccess","src":"2047:15:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":12043,"name":"_durationStart","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11992,"src":"2065:14:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2047:32:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12045,"name":"_durationInterval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11994,"src":"2093:17:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12040,"name":"_timeModuleArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12287,"src":"2019:14:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (bytes memory)"}},"id":12046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2019:101:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"1998:122:42","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":12048,"nodeType":"ExpressionStatement","src":"1998:122:42"},{"expression":{"id":12049,"name":"moduleData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12002,"src":"2138:10:42","typeDescriptions":{"typeIdentifier":"t_struct$_ModuleData_$16276_memory_ptr","typeString":"struct ModuleData memory"}},"functionReturnParameters":11999,"id":12050,"nodeType":"Return","src":"2131:17:42"}]},"id":12052,"implemented":true,"kind":"function","modifiers":[],"name":"_getModuleData","nameLocation":"1624:14:42","nodeType":"FunctionDefinition","parameters":{"id":11995,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11992,"mutability":"mutable","name":"_durationStart","nameLocation":"1656:14:42","nodeType":"VariableDeclaration","scope":12052,"src":"1648:22:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11991,"name":"uint256","nodeType":"ElementaryTypeName","src":"1648:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11994,"mutability":"mutable","name":"_durationInterval","nameLocation":"1688:17:42","nodeType":"VariableDeclaration","scope":12052,"src":"1680:25:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11993,"name":"uint256","nodeType":"ElementaryTypeName","src":"1680:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1638:73:42"},"returnParameters":{"id":11999,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11998,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12052,"src":"1735:17:42","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ModuleData_$16276_memory_ptr","typeString":"struct ModuleData"},"typeName":{"id":11997,"nodeType":"UserDefinedTypeName","pathNode":{"id":11996,"name":"ModuleData","nameLocations":["1735:10:42"],"nodeType":"IdentifierPath","referencedDeclaration":16276,"src":"1735:10:42"},"referencedDeclaration":16276,"src":"1735:10:42","typeDescriptions":{"typeIdentifier":"t_struct$_ModuleData_$16276_storage_ptr","typeString":"struct ModuleData"}},"visibility":"internal"}],"src":"1734:19:42"},"scope":12310,"src":"1615:540:42","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":12093,"nodeType":"Block","src":"2222:410:42","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":12061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12059,"name":"_feeToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12056,"src":"2236:9:42","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":12060,"name":"GELATO_FEE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11928,"src":"2249:10:42","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2236:23:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":12091,"nodeType":"Block","src":"2458:168:42","statements":[{"expression":{"arguments":[{"arguments":[{"id":12083,"name":"_feeToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12056,"src":"2519:9:42","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12082,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":145,"src":"2512:6:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$145_$","typeString":"type(contract IERC20)"}},"id":12084,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2512:17:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$145","typeString":"contract IERC20"}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12085,"name":"_storageAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11951,"src":"2547:16:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageAutomate_$11939_storage_ptr_$","typeString":"function () pure returns (struct LibAutomate.StorageAutomate storage pointer)"}},"id":12086,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2547:18:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageAutomate_$11939_storage_ptr","typeString":"struct LibAutomate.StorageAutomate storage pointer"}},"id":12087,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2566:13:42","memberName":"gelatoNetwork","nodeType":"MemberAccess","referencedDeclaration":11936,"src":"2547:32:42","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12088,"name":"_fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12054,"src":"2597:4:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$145","typeString":"contract IERC20"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":12079,"name":"SafeERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":462,"src":"2472:9:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeERC20_$462_$","typeString":"type(library SafeERC20)"}},"id":12081,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2482:12:42","memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":213,"src":"2472:22:42","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$145_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,address,uint256)"}},"id":12089,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2472:143:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12090,"nodeType":"ExpressionStatement","src":"2472:143:42"}]},"id":12092,"nodeType":"IfStatement","src":"2232:394:42","trueBody":{"id":12078,"nodeType":"Block","src":"2261:191:42","statements":[{"assignments":[12063,null],"declarations":[{"constant":false,"id":12063,"mutability":"mutable","name":"success","nameLocation":"2281:7:42","nodeType":"VariableDeclaration","scope":12078,"src":"2276:12:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12062,"name":"bool","nodeType":"ElementaryTypeName","src":"2276:4:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":12072,"initialValue":{"arguments":[{"hexValue":"","id":12070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2375:2:42","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12064,"name":"_storageAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11951,"src":"2294:16:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageAutomate_$11939_storage_ptr_$","typeString":"function () pure returns (struct LibAutomate.StorageAutomate storage pointer)"}},"id":12065,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2294:18:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageAutomate_$11939_storage_ptr","typeString":"struct LibAutomate.StorageAutomate storage pointer"}},"id":12066,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2313:13:42","memberName":"gelatoNetwork","nodeType":"MemberAccess","referencedDeclaration":11936,"src":"2294:32:42","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":12067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2327:4:42","memberName":"call","nodeType":"MemberAccess","src":"2294:37:42","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":12069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":12068,"name":"_fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12054,"src":"2356:4:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2294:80:42","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":12071,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2294:84:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2275:103:42"},{"expression":{"arguments":[{"id":12074,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12063,"src":"2400:7:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4c69624175746f6d6174653a205f7472616e73666572206661696c6564","id":12075,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2409:31:42","typeDescriptions":{"typeIdentifier":"t_stringliteral_b24521f2acb2461b4e7257d6e06c3c0d0d7d3233139ee3ec85b64c2d7241819e","typeString":"literal_string \"LibAutomate: _transfer failed\""},"value":"LibAutomate: _transfer failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b24521f2acb2461b4e7257d6e06c3c0d0d7d3233139ee3ec85b64c2d7241819e","typeString":"literal_string \"LibAutomate: _transfer failed\""}],"id":12073,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2392:7:42","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":12076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2392:49:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12077,"nodeType":"ExpressionStatement","src":"2392:49:42"}]}}]},"id":12094,"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"2170:9:42","nodeType":"FunctionDefinition","parameters":{"id":12057,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12054,"mutability":"mutable","name":"_fee","nameLocation":"2188:4:42","nodeType":"VariableDeclaration","scope":12094,"src":"2180:12:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12053,"name":"uint256","nodeType":"ElementaryTypeName","src":"2180:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12056,"mutability":"mutable","name":"_feeToken","nameLocation":"2202:9:42","nodeType":"VariableDeclaration","scope":12094,"src":"2194:17:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12055,"name":"address","nodeType":"ElementaryTypeName","src":"2194:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2179:33:42"},"returnParameters":{"id":12058,"nodeType":"ParameterList","parameters":[],"src":"2222:0:42"},"scope":12310,"src":"2161:471:42","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":12111,"nodeType":"Block","src":"2746:83:42","statements":[{"expression":{"id":12109,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":12101,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12097,"src":"2757:3:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12102,"name":"feeToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12099,"src":"2762:8:42","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":12103,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"2756:15:42","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_address_$","typeString":"tuple(uint256,address)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12104,"name":"_storageAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11951,"src":"2774:16:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageAutomate_$11939_storage_ptr_$","typeString":"function () pure returns (struct LibAutomate.StorageAutomate storage pointer)"}},"id":12105,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2774:18:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageAutomate_$11939_storage_ptr","typeString":"struct LibAutomate.StorageAutomate storage pointer"}},"id":12106,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2793:13:42","memberName":"gelatoAutobot","nodeType":"MemberAccess","referencedDeclaration":11931,"src":"2774:32:42","typeDescriptions":{"typeIdentifier":"t_contract$_IAutomate_$16314","typeString":"contract IAutomate"}},"id":12107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2807:13:42","memberName":"getFeeDetails","nodeType":"MemberAccess","referencedDeclaration":16302,"src":"2774:46:42","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$_t_address_$","typeString":"function () view external returns (uint256,address)"}},"id":12108,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2774:48:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_address_$","typeString":"tuple(uint256,address)"}},"src":"2756:66:42","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12110,"nodeType":"ExpressionStatement","src":"2756:66:42"}]},"id":12112,"implemented":true,"kind":"function","modifiers":[],"name":"_getFeeDetails","nameLocation":"2647:14:42","nodeType":"FunctionDefinition","parameters":{"id":12095,"nodeType":"ParameterList","parameters":[],"src":"2661:2:42"},"returnParameters":{"id":12100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12097,"mutability":"mutable","name":"fee","nameLocation":"2719:3:42","nodeType":"VariableDeclaration","scope":12112,"src":"2711:11:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12096,"name":"uint256","nodeType":"ElementaryTypeName","src":"2711:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12099,"mutability":"mutable","name":"feeToken","nameLocation":"2732:8:42","nodeType":"VariableDeclaration","scope":12112,"src":"2724:16:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12098,"name":"address","nodeType":"ElementaryTypeName","src":"2724:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2710:31:42"},"scope":12310,"src":"2638:191:42","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":12128,"nodeType":"Block","src":"2922:115:42","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":12123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":12115,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2936:3:42","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2940:6:42","memberName":"sender","nodeType":"MemberAccess","src":"2936:10:42","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12119,"name":"_storageAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11951,"src":"2958:16:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageAutomate_$11939_storage_ptr_$","typeString":"function () pure returns (struct LibAutomate.StorageAutomate storage pointer)"}},"id":12120,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2958:18:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageAutomate_$11939_storage_ptr","typeString":"struct LibAutomate.StorageAutomate storage pointer"}},"id":12121,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2977:13:42","memberName":"gelatoAutobot","nodeType":"MemberAccess","referencedDeclaration":11931,"src":"2958:32:42","typeDescriptions":{"typeIdentifier":"t_contract$_IAutomate_$16314","typeString":"contract IAutomate"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IAutomate_$16314","typeString":"contract IAutomate"}],"id":12118,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2950:7:42","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12117,"name":"address","nodeType":"ElementaryTypeName","src":"2950:7:42","typeDescriptions":{}}},"id":12122,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2950:41:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2936:55:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12127,"nodeType":"IfStatement","src":"2932:98:42","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":12124,"name":"CallerNotAutobot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11913,"src":"3012:16:42","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":12125,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3012:18:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12126,"nodeType":"RevertStatement","src":"3005:25:42"}}]},"id":12129,"implemented":true,"kind":"function","modifiers":[],"name":"_requireOnlyAutobot","nameLocation":"2886:19:42","nodeType":"FunctionDefinition","parameters":{"id":12113,"nodeType":"ParameterList","parameters":[],"src":"2905:2:42"},"returnParameters":{"id":12114,"nodeType":"ParameterList","parameters":[],"src":"2922:0:42"},"scope":12310,"src":"2877:160:42","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":12142,"nodeType":"Block","src":"3103:150:42","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12137,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":12132,"name":"_getAppGelatoBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12249,"src":"3130:20:42","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":12133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3130:22:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12134,"name":"_storageAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11951,"src":"3156:16:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageAutomate_$11939_storage_ptr_$","typeString":"function () pure returns (struct LibAutomate.StorageAutomate storage pointer)"}},"id":12135,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3156:18:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageAutomate_$11939_storage_ptr","typeString":"struct LibAutomate.StorageAutomate storage pointer"}},"id":12136,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3175:23:42","memberName":"minimumAppGelatoBalance","nodeType":"MemberAccess","referencedDeclaration":11938,"src":"3156:42:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3130:68:42","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12141,"nodeType":"IfStatement","src":"3113:133:42","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":12138,"name":"InsufficientAppGelatoBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11911,"src":"3216:28:42","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":12139,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3216:30:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12140,"nodeType":"RevertStatement","src":"3209:37:42"}}]},"id":12143,"implemented":true,"kind":"function","modifiers":[],"name":"_requireSufficientAppGelatoBalance","nameLocation":"3052:34:42","nodeType":"FunctionDefinition","parameters":{"id":12130,"nodeType":"ParameterList","parameters":[],"src":"3086:2:42"},"returnParameters":{"id":12131,"nodeType":"ParameterList","parameters":[],"src":"3103:0:42"},"scope":12310,"src":"3043:210:42","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":12176,"nodeType":"Block","src":"3357:263:42","statements":[{"expression":{"id":12154,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12148,"name":"_storageAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11951,"src":"3367:16:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageAutomate_$11939_storage_ptr_$","typeString":"function () pure returns (struct LibAutomate.StorageAutomate storage pointer)"}},"id":12149,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3367:18:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageAutomate_$11939_storage_ptr","typeString":"struct LibAutomate.StorageAutomate storage pointer"}},"id":12150,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3386:13:42","memberName":"gelatoAutobot","nodeType":"MemberAccess","referencedDeclaration":11931,"src":"3367:32:42","typeDescriptions":{"typeIdentifier":"t_contract$_IAutomate_$16314","typeString":"contract IAutomate"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12152,"name":"_autobot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12145,"src":"3412:8:42","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12151,"name":"IAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16314,"src":"3402:9:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAutomate_$16314_$","typeString":"type(contract IAutomate)"}},"id":12153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3402:19:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAutomate_$16314","typeString":"contract IAutomate"}},"src":"3367:54:42","typeDescriptions":{"typeIdentifier":"t_contract$_IAutomate_$16314","typeString":"contract IAutomate"}},"id":12155,"nodeType":"ExpressionStatement","src":"3367:54:42"},{"expression":{"id":12164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12156,"name":"_storageAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11951,"src":"3431:16:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageAutomate_$11939_storage_ptr_$","typeString":"function () pure returns (struct LibAutomate.StorageAutomate storage pointer)"}},"id":12157,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3431:18:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageAutomate_$11939_storage_ptr","typeString":"struct LibAutomate.StorageAutomate storage pointer"}},"id":12158,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3450:13:42","memberName":"gelatoNetwork","nodeType":"MemberAccess","referencedDeclaration":11936,"src":"3431:32:42","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":12160,"name":"_autobot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12145,"src":"3476:8:42","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12159,"name":"IAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16314,"src":"3466:9:42","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAutomate_$16314_$","typeString":"type(contract IAutomate)"}},"id":12161,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3466:19:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAutomate_$16314","typeString":"contract IAutomate"}},"id":12162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3486:6:42","memberName":"gelato","nodeType":"MemberAccess","referencedDeclaration":16307,"src":"3466:26:42","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_payable_$","typeString":"function () view external returns (address payable)"}},"id":12163,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3466:28:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"3431:63:42","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":12165,"nodeType":"ExpressionStatement","src":"3431:63:42"},{"expression":{"id":12174,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12166,"name":"_storageAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11951,"src":"3504:16:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageAutomate_$11939_storage_ptr_$","typeString":"function () pure returns (struct LibAutomate.StorageAutomate storage pointer)"}},"id":12167,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3504:18:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageAutomate_$11939_storage_ptr","typeString":"struct LibAutomate.StorageAutomate storage pointer"}},"id":12168,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3523:14:42","memberName":"gelatoTreasury","nodeType":"MemberAccess","referencedDeclaration":11934,"src":"3504:33:42","typeDescriptions":{"typeIdentifier":"t_contract$_ITaskTreasuryUpgradable_$16342","typeString":"contract ITaskTreasuryUpgradable"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12169,"name":"_storageAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11951,"src":"3540:16:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageAutomate_$11939_storage_ptr_$","typeString":"function () pure returns (struct LibAutomate.StorageAutomate storage pointer)"}},"id":12170,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3540:18:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageAutomate_$11939_storage_ptr","typeString":"struct LibAutomate.StorageAutomate storage pointer"}},"id":12171,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3572:13:42","memberName":"gelatoAutobot","nodeType":"MemberAccess","referencedDeclaration":11931,"src":"3540:45:42","typeDescriptions":{"typeIdentifier":"t_contract$_IAutomate_$16314","typeString":"contract IAutomate"}},"id":12172,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3599:12:42","memberName":"taskTreasury","nodeType":"MemberAccess","referencedDeclaration":16313,"src":"3540:71:42","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_ITaskTreasuryUpgradable_$16342_$","typeString":"function () view external returns (contract ITaskTreasuryUpgradable)"}},"id":12173,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3540:73:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ITaskTreasuryUpgradable_$16342","typeString":"contract ITaskTreasuryUpgradable"}},"src":"3504:109:42","typeDescriptions":{"typeIdentifier":"t_contract$_ITaskTreasuryUpgradable_$16342","typeString":"contract ITaskTreasuryUpgradable"}},"id":12175,"nodeType":"ExpressionStatement","src":"3504:109:42"}]},"id":12177,"implemented":true,"kind":"function","modifiers":[],"name":"_setGelatoContracts","nameLocation":"3310:19:42","nodeType":"FunctionDefinition","parameters":{"id":12146,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12145,"mutability":"mutable","name":"_autobot","nameLocation":"3338:8:42","nodeType":"VariableDeclaration","scope":12177,"src":"3330:16:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12144,"name":"address","nodeType":"ElementaryTypeName","src":"3330:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3329:18:42"},"returnParameters":{"id":12147,"nodeType":"ParameterList","parameters":[],"src":"3357:0:42"},"scope":12310,"src":"3301:319:42","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":12188,"nodeType":"Block","src":"3688:68:42","statements":[{"expression":{"id":12186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12182,"name":"_storageAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11951,"src":"3698:16:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageAutomate_$11939_storage_ptr_$","typeString":"function () pure returns (struct LibAutomate.StorageAutomate storage pointer)"}},"id":12183,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3698:18:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageAutomate_$11939_storage_ptr","typeString":"struct LibAutomate.StorageAutomate storage pointer"}},"id":12184,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3717:23:42","memberName":"minimumAppGelatoBalance","nodeType":"MemberAccess","referencedDeclaration":11938,"src":"3698:42:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":12185,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12179,"src":"3743:6:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3698:51:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12187,"nodeType":"ExpressionStatement","src":"3698:51:42"}]},"id":12189,"implemented":true,"kind":"function","modifiers":[],"name":"_setMinimumAppGelatoBalance","nameLocation":"3635:27:42","nodeType":"FunctionDefinition","parameters":{"id":12180,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12179,"mutability":"mutable","name":"_value","nameLocation":"3671:6:42","nodeType":"VariableDeclaration","scope":12189,"src":"3663:14:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12178,"name":"uint256","nodeType":"ElementaryTypeName","src":"3663:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3662:16:42"},"returnParameters":{"id":12181,"nodeType":"ParameterList","parameters":[],"src":"3688:0:42"},"scope":12310,"src":"3626:130:42","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":12221,"nodeType":"Block","src":"3931:250:42","statements":[{"expression":{"components":[{"arguments":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12204,"name":"_storageAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11951,"src":"3970:16:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageAutomate_$11939_storage_ptr_$","typeString":"function () pure returns (struct LibAutomate.StorageAutomate storage pointer)"}},"id":12205,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3970:18:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageAutomate_$11939_storage_ptr","typeString":"struct LibAutomate.StorageAutomate storage pointer"}},"id":12206,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3989:13:42","memberName":"gelatoAutobot","nodeType":"MemberAccess","referencedDeclaration":11931,"src":"3970:32:42","typeDescriptions":{"typeIdentifier":"t_contract$_IAutomate_$16314","typeString":"contract IAutomate"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IAutomate_$16314","typeString":"contract IAutomate"}],"id":12203,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3962:7:42","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12202,"name":"address","nodeType":"ElementaryTypeName","src":"3962:7:42","typeDescriptions":{}}},"id":12207,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3962:41:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12210,"name":"_storageAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11951,"src":"4025:16:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageAutomate_$11939_storage_ptr_$","typeString":"function () pure returns (struct LibAutomate.StorageAutomate storage pointer)"}},"id":12211,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4025:18:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageAutomate_$11939_storage_ptr","typeString":"struct LibAutomate.StorageAutomate storage pointer"}},"id":12212,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4044:14:42","memberName":"gelatoTreasury","nodeType":"MemberAccess","referencedDeclaration":11934,"src":"4025:33:42","typeDescriptions":{"typeIdentifier":"t_contract$_ITaskTreasuryUpgradable_$16342","typeString":"contract ITaskTreasuryUpgradable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ITaskTreasuryUpgradable_$16342","typeString":"contract ITaskTreasuryUpgradable"}],"id":12209,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4017:7:42","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12208,"name":"address","nodeType":"ElementaryTypeName","src":"4017:7:42","typeDescriptions":{}}},"id":12213,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4017:42:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12214,"name":"_storageAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11951,"src":"4073:16:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageAutomate_$11939_storage_ptr_$","typeString":"function () pure returns (struct LibAutomate.StorageAutomate storage pointer)"}},"id":12215,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4073:18:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageAutomate_$11939_storage_ptr","typeString":"struct LibAutomate.StorageAutomate storage pointer"}},"id":12216,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4092:13:42","memberName":"gelatoNetwork","nodeType":"MemberAccess","referencedDeclaration":11936,"src":"4073:32:42","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12217,"name":"AUTOBOT_PROXY_FACTORY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11925,"src":"4119:21:42","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12218,"name":"GELATO_FEE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11928,"src":"4154:10:42","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":12219,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3948:226:42","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$_t_address_$_t_address_$_t_address_$","typeString":"tuple(address,address,address,address,address)"}},"functionReturnParameters":12201,"id":12220,"nodeType":"Return","src":"3941:233:42"}]},"id":12222,"implemented":true,"kind":"function","modifiers":[],"name":"_getGelatoAddresses","nameLocation":"3813:19:42","nodeType":"FunctionDefinition","parameters":{"id":12190,"nodeType":"ParameterList","parameters":[],"src":"3832:2:42"},"returnParameters":{"id":12201,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12192,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12222,"src":"3882:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12191,"name":"address","nodeType":"ElementaryTypeName","src":"3882:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12194,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12222,"src":"3891:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12193,"name":"address","nodeType":"ElementaryTypeName","src":"3891:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12196,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12222,"src":"3900:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12195,"name":"address","nodeType":"ElementaryTypeName","src":"3900:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12198,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12222,"src":"3909:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12197,"name":"address","nodeType":"ElementaryTypeName","src":"3909:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12200,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12222,"src":"3918:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12199,"name":"address","nodeType":"ElementaryTypeName","src":"3918:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3881:45:42"},"scope":12310,"src":"3804:377:42","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":12231,"nodeType":"Block","src":"4258:66:42","statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12227,"name":"_storageAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11951,"src":"4275:16:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageAutomate_$11939_storage_ptr_$","typeString":"function () pure returns (struct LibAutomate.StorageAutomate storage pointer)"}},"id":12228,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4275:18:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageAutomate_$11939_storage_ptr","typeString":"struct LibAutomate.StorageAutomate storage pointer"}},"id":12229,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4294:23:42","memberName":"minimumAppGelatoBalance","nodeType":"MemberAccess","referencedDeclaration":11938,"src":"4275:42:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12226,"id":12230,"nodeType":"Return","src":"4268:49:42"}]},"id":12232,"implemented":true,"kind":"function","modifiers":[],"name":"_getMinimumAppGelatoBalance","nameLocation":"4196:27:42","nodeType":"FunctionDefinition","parameters":{"id":12223,"nodeType":"ParameterList","parameters":[],"src":"4223:2:42"},"returnParameters":{"id":12226,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12225,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12232,"src":"4249:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12224,"name":"uint256","nodeType":"ElementaryTypeName","src":"4249:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4248:9:42"},"scope":12310,"src":"4187:137:42","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":12248,"nodeType":"Block","src":"4394:159:42","statements":[{"expression":{"arguments":[{"arguments":[{"id":12243,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4499:4:42","typeDescriptions":{"typeIdentifier":"t_contract$_LibAutomate_$12310","typeString":"library LibAutomate"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LibAutomate_$12310","typeString":"library LibAutomate"}],"id":12242,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4491:7:42","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12241,"name":"address","nodeType":"ElementaryTypeName","src":"4491:7:42","typeDescriptions":{}}},"id":12244,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4491:13:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12245,"name":"GELATO_FEE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11928,"src":"4522:10:42","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12237,"name":"_storageAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11951,"src":"4423:16:42","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageAutomate_$11939_storage_ptr_$","typeString":"function () pure returns (struct LibAutomate.StorageAutomate storage pointer)"}},"id":12238,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4423:18:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageAutomate_$11939_storage_ptr","typeString":"struct LibAutomate.StorageAutomate storage pointer"}},"id":12239,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4442:14:42","memberName":"gelatoTreasury","nodeType":"MemberAccess","referencedDeclaration":11934,"src":"4423:33:42","typeDescriptions":{"typeIdentifier":"t_contract$_ITaskTreasuryUpgradable_$16342","typeString":"contract ITaskTreasuryUpgradable"}},"id":12240,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4457:16:42","memberName":"userTokenBalance","nodeType":"MemberAccess","referencedDeclaration":16341,"src":"4423:50:42","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":12246,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4423:123:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12236,"id":12247,"nodeType":"Return","src":"4404:142:42"}]},"id":12249,"implemented":true,"kind":"function","modifiers":[],"name":"_getAppGelatoBalance","nameLocation":"4339:20:42","nodeType":"FunctionDefinition","parameters":{"id":12233,"nodeType":"ParameterList","parameters":[],"src":"4359:2:42"},"returnParameters":{"id":12236,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12235,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12249,"src":"4385:7:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12234,"name":"uint256","nodeType":"ElementaryTypeName","src":"4385:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4384:9:42"},"scope":12310,"src":"4330:223:42","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":12264,"nodeType":"Block","src":"4742:67:42","statements":[{"expression":{"arguments":[{"id":12260,"name":"_resolverAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12251,"src":"4770:16:42","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12261,"name":"_resolverData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12253,"src":"4788:13:42","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":12258,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4759:3:42","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":12259,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4763:6:42","memberName":"encode","nodeType":"MemberAccess","src":"4759:10:42","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":12262,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4759:43:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":12257,"id":12263,"nodeType":"Return","src":"4752:50:42"}]},"id":12265,"implemented":true,"kind":"function","modifiers":[],"name":"_resolverModuleArg","nameLocation":"4610:18:42","nodeType":"FunctionDefinition","parameters":{"id":12254,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12251,"mutability":"mutable","name":"_resolverAddress","nameLocation":"4646:16:42","nodeType":"VariableDeclaration","scope":12265,"src":"4638:24:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12250,"name":"address","nodeType":"ElementaryTypeName","src":"4638:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12253,"mutability":"mutable","name":"_resolverData","nameLocation":"4685:13:42","nodeType":"VariableDeclaration","scope":12265,"src":"4672:26:42","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":12252,"name":"bytes","nodeType":"ElementaryTypeName","src":"4672:5:42","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4628:76:42"},"returnParameters":{"id":12257,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12256,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12265,"src":"4728:12:42","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":12255,"name":"bytes","nodeType":"ElementaryTypeName","src":"4728:5:42","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4727:14:42"},"scope":12310,"src":"4601:208:42","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12286,"nodeType":"Block","src":"4937:75:42","statements":[{"expression":{"arguments":[{"arguments":[{"id":12278,"name":"_startTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12267,"src":"4973:10:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12277,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4965:7:42","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":12276,"name":"uint128","nodeType":"ElementaryTypeName","src":"4965:7:42","typeDescriptions":{}}},"id":12279,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4965:19:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"arguments":[{"id":12282,"name":"_interval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12269,"src":"4994:9:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12281,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4986:7:42","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":12280,"name":"uint128","nodeType":"ElementaryTypeName","src":"4986:7:42","typeDescriptions":{}}},"id":12283,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4986:18:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":12274,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4954:3:42","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":12275,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4958:6:42","memberName":"encode","nodeType":"MemberAccess","src":"4954:10:42","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":12284,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4954:51:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":12273,"id":12285,"nodeType":"Return","src":"4947:58:42"}]},"id":12287,"implemented":true,"kind":"function","modifiers":[],"name":"_timeModuleArg","nameLocation":"4824:14:42","nodeType":"FunctionDefinition","parameters":{"id":12270,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12267,"mutability":"mutable","name":"_startTime","nameLocation":"4856:10:42","nodeType":"VariableDeclaration","scope":12287,"src":"4848:18:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12266,"name":"uint256","nodeType":"ElementaryTypeName","src":"4848:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12269,"mutability":"mutable","name":"_interval","nameLocation":"4884:9:42","nodeType":"VariableDeclaration","scope":12287,"src":"4876:17:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12268,"name":"uint256","nodeType":"ElementaryTypeName","src":"4876:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4838:61:42"},"returnParameters":{"id":12273,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12272,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12287,"src":"4923:12:42","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":12271,"name":"bytes","nodeType":"ElementaryTypeName","src":"4923:5:42","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4922:14:42"},"scope":12310,"src":"4815:197:42","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12297,"nodeType":"Block","src":"5082:33:42","statements":[{"expression":{"arguments":[{"hexValue":"","id":12294,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5105:2:42","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":12293,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5099:5:42","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":12292,"name":"bytes","nodeType":"ElementaryTypeName","src":"5099:5:42","typeDescriptions":{}}},"id":12295,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5099:9:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":12291,"id":12296,"nodeType":"Return","src":"5092:16:42"}]},"id":12298,"implemented":true,"kind":"function","modifiers":[],"name":"_proxyModuleArg","nameLocation":"5027:15:42","nodeType":"FunctionDefinition","parameters":{"id":12288,"nodeType":"ParameterList","parameters":[],"src":"5042:2:42"},"returnParameters":{"id":12291,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12290,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12298,"src":"5068:12:42","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":12289,"name":"bytes","nodeType":"ElementaryTypeName","src":"5068:5:42","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5067:14:42"},"scope":12310,"src":"5018:97:42","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12308,"nodeType":"Block","src":"5190:33:42","statements":[{"expression":{"arguments":[{"hexValue":"","id":12305,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5213:2:42","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":12304,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5207:5:42","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":12303,"name":"bytes","nodeType":"ElementaryTypeName","src":"5207:5:42","typeDescriptions":{}}},"id":12306,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5207:9:42","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":12302,"id":12307,"nodeType":"Return","src":"5200:16:42"}]},"id":12309,"implemented":true,"kind":"function","modifiers":[],"name":"_singleExecModuleArg","nameLocation":"5130:20:42","nodeType":"FunctionDefinition","parameters":{"id":12299,"nodeType":"ParameterList","parameters":[],"src":"5150:2:42"},"returnParameters":{"id":12302,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12301,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12309,"src":"5176:12:42","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":12300,"name":"bytes","nodeType":"ElementaryTypeName","src":"5176:5:42","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5175:14:42"},"scope":12310,"src":"5121:102:42","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":12311,"src":"252:4973:42","usedErrors":[]}],"src":"36:5190:42"},"id":42},"contracts/libraries/core/LibControl.sol":{"ast":{"absolutePath":"contracts/libraries/core/LibControl.sol","exportedSymbols":{"ArrayLengthNotMatch":[12325],"BasisPointsRange":[14935],"ContractError":[12341],"ISuperToken":[7015],"InsufficientAppSTBalance":[12329],"InsufficientAssets":[12331],"InsufficientFeeBalance":[12333],"InvalidBasisPoints":[12337],"InvalidFlowRate":[12339],"InvalidFlowRateBounds":[12335],"InvalidSuperToken":[12327],"IterableMappingBPS":[15181],"LibControl":[13307],"LibSession":[14923],"SuperTokenV1Library":[5145],"ZeroValue":[12323]},"id":13308,"license":"BUSL-1.1","nodeType":"SourceUnit","nodes":[{"id":12312,"literals":["solidity","^","0.8",".9"],"nodeType":"PragmaDirective","src":"36:23:43"},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol","file":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol","id":12314,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13308,"sourceUnit":7668,"src":"61:115:43","symbolAliases":[{"foreign":{"id":12313,"name":"ISuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7015,"src":"69:11:43","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol","file":"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol","id":12316,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13308,"sourceUnit":5146,"src":"177:114:43","symbolAliases":[{"foreign":{"id":12315,"name":"SuperTokenV1Library","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5145,"src":"185:19:43","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/libraries/utils/IterableMappingBPS.sol","file":"../utils/IterableMappingBPS.sol","id":12319,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13308,"sourceUnit":15182,"src":"292:85:43","symbolAliases":[{"foreign":{"id":12317,"name":"IterableMappingBPS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15181,"src":"300:18:43","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":12318,"name":"BasisPointsRange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14935,"src":"320:16:43","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/libraries/core/LibSession.sol","file":"./LibSession.sol","id":12321,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":13308,"sourceUnit":14924,"src":"379:44:43","symbolAliases":[{"foreign":{"id":12320,"name":"LibSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14923,"src":"387:10:43","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"errorSelector":"7c946ed7","id":12323,"name":"ZeroValue","nameLocation":"431:9:43","nodeType":"ErrorDefinition","parameters":{"id":12322,"nodeType":"ParameterList","parameters":[],"src":"440:2:43"},"src":"425:18:43"},{"errorSelector":"ed882f71","id":12325,"name":"ArrayLengthNotMatch","nameLocation":"450:19:43","nodeType":"ErrorDefinition","parameters":{"id":12324,"nodeType":"ParameterList","parameters":[],"src":"469:2:43"},"src":"444:28:43"},{"errorSelector":"334ae3e6","id":12327,"name":"InvalidSuperToken","nameLocation":"479:17:43","nodeType":"ErrorDefinition","parameters":{"id":12326,"nodeType":"ParameterList","parameters":[],"src":"496:2:43"},"src":"473:26:43"},{"errorSelector":"1824866a","id":12329,"name":"InsufficientAppSTBalance","nameLocation":"506:24:43","nodeType":"ErrorDefinition","parameters":{"id":12328,"nodeType":"ParameterList","parameters":[],"src":"530:2:43"},"src":"500:33:43"},{"errorSelector":"96d80433","id":12331,"name":"InsufficientAssets","nameLocation":"540:18:43","nodeType":"ErrorDefinition","parameters":{"id":12330,"nodeType":"ParameterList","parameters":[],"src":"558:2:43"},"src":"534:27:43"},{"errorSelector":"f00d49ea","id":12333,"name":"InsufficientFeeBalance","nameLocation":"568:22:43","nodeType":"ErrorDefinition","parameters":{"id":12332,"nodeType":"ParameterList","parameters":[],"src":"590:2:43"},"src":"562:31:43"},{"errorSelector":"22450233","id":12335,"name":"InvalidFlowRateBounds","nameLocation":"600:21:43","nodeType":"ErrorDefinition","parameters":{"id":12334,"nodeType":"ParameterList","parameters":[],"src":"621:2:43"},"src":"594:30:43"},{"errorSelector":"800c7e91","id":12337,"name":"InvalidBasisPoints","nameLocation":"631:18:43","nodeType":"ErrorDefinition","parameters":{"id":12336,"nodeType":"ParameterList","parameters":[],"src":"649:2:43"},"src":"625:27:43"},{"errorSelector":"fe267e42","id":12339,"name":"InvalidFlowRate","nameLocation":"659:15:43","nodeType":"ErrorDefinition","parameters":{"id":12338,"nodeType":"ParameterList","parameters":[],"src":"674:2:43"},"src":"653:24:43"},{"errorSelector":"ae1c061f","id":12341,"name":"ContractError","nameLocation":"684:13:43","nodeType":"ErrorDefinition","parameters":{"id":12340,"nodeType":"ParameterList","parameters":[],"src":"697:2:43"},"src":"678:22:43"},{"abstract":false,"baseContracts":[],"canonicalName":"LibControl","contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":13307,"linearizedBaseContracts":[13307],"name":"LibControl","nameLocation":"710:10:43","nodeType":"ContractDefinition","nodes":[{"global":false,"id":12345,"libraryName":{"id":12342,"name":"SuperTokenV1Library","nameLocations":["733:19:43"],"nodeType":"IdentifierPath","referencedDeclaration":5145,"src":"733:19:43"},"nodeType":"UsingForDirective","src":"727:42:43","typeName":{"id":12344,"nodeType":"UserDefinedTypeName","pathNode":{"id":12343,"name":"ISuperToken","nameLocations":["757:11:43"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"757:11:43"},"referencedDeclaration":7015,"src":"757:11:43","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}},{"global":false,"id":12349,"libraryName":{"id":12346,"name":"IterableMappingBPS","nameLocations":["780:18:43"],"nodeType":"IdentifierPath","referencedDeclaration":15181,"src":"780:18:43"},"nodeType":"UsingForDirective","src":"774:52:43","typeName":{"id":12348,"nodeType":"UserDefinedTypeName","pathNode":{"id":12347,"name":"IterableMappingBPS.Map","nameLocations":["803:18:43","822:3:43"],"nodeType":"IdentifierPath","referencedDeclaration":14952,"src":"803:22:43"},"referencedDeclaration":14952,"src":"803:22:43","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14952_storage_ptr","typeString":"struct IterableMappingBPS.Map"}}},{"constant":true,"id":12354,"mutability":"constant","name":"STORAGE_POSITION_CONTROL","nameLocation":"849:24:43","nodeType":"VariableDeclaration","scope":13307,"src":"832:67:43","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":12350,"name":"bytes32","nodeType":"ElementaryTypeName","src":"832:7:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"64732e636f6e74726f6c","id":12352,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"886:12:43","typeDescriptions":{"typeIdentifier":"t_stringliteral_2f7ed27098ecefe70183ee38ae4542dee65215b0786f6870871034402cfe2cc9","typeString":"literal_string \"ds.control\""},"value":"ds.control"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_2f7ed27098ecefe70183ee38ae4542dee65215b0786f6870871034402cfe2cc9","typeString":"literal_string \"ds.control\""}],"id":12351,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"876:9:43","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":12353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"876:23:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":true,"id":12357,"mutability":"constant","name":"bpsMin","nameLocation":"929:6:43","nodeType":"VariableDeclaration","scope":13307,"src":"905:36:43","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":12355,"name":"uint8","nodeType":"ElementaryTypeName","src":"905:5:43","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"313030","id":12356,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"938:3:43","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"visibility":"internal"},{"constant":true,"id":12360,"mutability":"constant","name":"bpsMax","nameLocation":"972:6:43","nodeType":"VariableDeclaration","scope":13307,"src":"947:39:43","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":12358,"name":"uint16","nodeType":"ElementaryTypeName","src":"947:6:43","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"value":{"hexValue":"3130303030","id":12359,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"981:5:43","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"10000"},"visibility":"internal"},{"canonicalName":"LibControl.ControlRecord","id":12369,"members":[{"constant":false,"id":12362,"mutability":"mutable","name":"receiver","nameLocation":"1032:8:43","nodeType":"VariableDeclaration","scope":12369,"src":"1024:16:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12361,"name":"address","nodeType":"ElementaryTypeName","src":"1024:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12364,"mutability":"mutable","name":"sessionNonce","nameLocation":"1058:12:43","nodeType":"VariableDeclaration","scope":12369,"src":"1050:20:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12363,"name":"uint256","nodeType":"ElementaryTypeName","src":"1050:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12366,"mutability":"mutable","name":"timestampIncrease","nameLocation":"1088:17:43","nodeType":"VariableDeclaration","scope":12369,"src":"1080:25:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12365,"name":"uint256","nodeType":"ElementaryTypeName","src":"1080:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12368,"mutability":"mutable","name":"timestampDecrease","nameLocation":"1123:17:43","nodeType":"VariableDeclaration","scope":12369,"src":"1115:25:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12367,"name":"uint256","nodeType":"ElementaryTypeName","src":"1115:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"ControlRecord","nameLocation":"1000:13:43","nodeType":"StructDefinition","scope":13307,"src":"993:154:43","visibility":"public"},{"canonicalName":"LibControl.StorageControl","id":12418,"members":[{"constant":false,"id":12372,"mutability":"mutable","name":"bps","nameLocation":"1208:3:43","nodeType":"VariableDeclaration","scope":12418,"src":"1185:26:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14952_storage_ptr","typeString":"struct IterableMappingBPS.Map"},"typeName":{"id":12371,"nodeType":"UserDefinedTypeName","pathNode":{"id":12370,"name":"IterableMappingBPS.Map","nameLocations":["1185:18:43","1204:3:43"],"nodeType":"IdentifierPath","referencedDeclaration":14952,"src":"1185:22:43"},"referencedDeclaration":14952,"src":"1185:22:43","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14952_storage_ptr","typeString":"struct IterableMappingBPS.Map"}},"visibility":"internal"},{"constant":false,"id":12376,"mutability":"mutable","name":"sbps","nameLocation":"1347:4:43","nodeType":"VariableDeclaration","scope":12418,"src":"1320:31:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint16_$","typeString":"mapping(address => uint16)"},"typeName":{"id":12375,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":12373,"name":"address","nodeType":"ElementaryTypeName","src":"1328:7:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1320:26:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint16_$","typeString":"mapping(address => uint16)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":12374,"name":"uint16","nodeType":"ElementaryTypeName","src":"1339:6:43","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}},"visibility":"internal"},{"constant":false,"id":12378,"mutability":"mutable","name":"isBPSEnabled","nameLocation":"1377:12:43","nodeType":"VariableDeclaration","scope":12418,"src":"1372:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12377,"name":"bool","nodeType":"ElementaryTypeName","src":"1372:4:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":12380,"mutability":"mutable","name":"minimumEndDuration","nameLocation":"1407:18:43","nodeType":"VariableDeclaration","scope":12418,"src":"1399:26:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12379,"name":"uint256","nodeType":"ElementaryTypeName","src":"1399:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12382,"mutability":"mutable","name":"minimumLifespan","nameLocation":"1454:15:43","nodeType":"VariableDeclaration","scope":12418,"src":"1446:23:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12381,"name":"uint256","nodeType":"ElementaryTypeName","src":"1446:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12384,"mutability":"mutable","name":"stBufferDurationInSecond","nameLocation":"1498:24:43","nodeType":"VariableDeclaration","scope":12418,"src":"1490:32:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12383,"name":"uint256","nodeType":"ElementaryTypeName","src":"1490:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12388,"mutability":"mutable","name":"superTokens","nameLocation":"1557:11:43","nodeType":"VariableDeclaration","scope":12418,"src":"1532:36:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":12387,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":12385,"name":"address","nodeType":"ElementaryTypeName","src":"1540:7:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1532:24:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":12386,"name":"bool","nodeType":"ElementaryTypeName","src":"1551:4:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"internal"},{"constant":false,"id":12392,"mutability":"mutable","name":"unsettledControlNonce","nameLocation":"1617:21:43","nodeType":"VariableDeclaration","scope":12418,"src":"1589:49:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":12391,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":12389,"name":"address","nodeType":"ElementaryTypeName","src":"1597:7:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1589:27:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":12390,"name":"uint256","nodeType":"ElementaryTypeName","src":"1608:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"},{"constant":false,"id":12396,"mutability":"mutable","name":"controlNonce","nameLocation":"1676:12:43","nodeType":"VariableDeclaration","scope":12418,"src":"1648:40:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":12395,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":12393,"name":"address","nodeType":"ElementaryTypeName","src":"1656:7:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1648:27:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":12394,"name":"uint256","nodeType":"ElementaryTypeName","src":"1667:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"},{"constant":false,"id":12403,"mutability":"mutable","name":"controlRecord","nameLocation":"1776:13:43","nodeType":"VariableDeclaration","scope":12418,"src":"1722:67:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_ControlRecord_$12369_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibControl.ControlRecord))"},"typeName":{"id":12402,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":12397,"name":"address","nodeType":"ElementaryTypeName","src":"1730:7:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1722:53:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_ControlRecord_$12369_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibControl.ControlRecord))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":12401,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":12398,"name":"uint256","nodeType":"ElementaryTypeName","src":"1749:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1741:33:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ControlRecord_$12369_storage_$","typeString":"mapping(uint256 => struct LibControl.ControlRecord)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":12400,"nodeType":"UserDefinedTypeName","pathNode":{"id":12399,"name":"ControlRecord","nameLocations":["1760:13:43"],"nodeType":"IdentifierPath","referencedDeclaration":12369,"src":"1760:13:43"},"referencedDeclaration":12369,"src":"1760:13:43","typeDescriptions":{"typeIdentifier":"t_struct$_ControlRecord_$12369_storage_ptr","typeString":"struct LibControl.ControlRecord"}}}},"visibility":"internal"},{"constant":false,"id":12407,"mutability":"mutable","name":"feeBalance","nameLocation":"1870:10:43","nodeType":"VariableDeclaration","scope":12418,"src":"1842:38:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":12406,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":12404,"name":"address","nodeType":"ElementaryTypeName","src":"1850:7:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1842:27:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":12405,"name":"uint256","nodeType":"ElementaryTypeName","src":"1861:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"},{"constant":false,"id":12413,"mutability":"mutable","name":"assets","nameLocation":"1986:6:43","nodeType":"VariableDeclaration","scope":12418,"src":"1938:54:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":12412,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":12408,"name":"address","nodeType":"ElementaryTypeName","src":"1946:7:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1938:47:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":12411,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":12409,"name":"address","nodeType":"ElementaryTypeName","src":"1965:7:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1957:27:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":12410,"name":"uint256","nodeType":"ElementaryTypeName","src":"1976:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"internal"},{"constant":false,"id":12417,"mutability":"mutable","name":"totalAssets","nameLocation":"2076:11:43","nodeType":"VariableDeclaration","scope":12418,"src":"2048:39:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":12416,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":12414,"name":"address","nodeType":"ElementaryTypeName","src":"2056:7:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2048:27:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":12415,"name":"uint256","nodeType":"ElementaryTypeName","src":"2067:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"}],"name":"StorageControl","nameLocation":"1160:14:43","nodeType":"StructDefinition","scope":13307,"src":"1153:972:43","visibility":"public"},{"body":{"id":12429,"nodeType":"Block","src":"2235:120:43","statements":[{"assignments":[12425],"declarations":[{"constant":false,"id":12425,"mutability":"mutable","name":"position","nameLocation":"2253:8:43","nodeType":"VariableDeclaration","scope":12429,"src":"2245:16:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":12424,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2245:7:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":12427,"initialValue":{"id":12426,"name":"STORAGE_POSITION_CONTROL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12354,"src":"2264:24:43","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"2245:43:43"},{"AST":{"nodeType":"YulBlock","src":"2307:42:43","statements":[{"nodeType":"YulAssignment","src":"2321:18:43","value":{"name":"position","nodeType":"YulIdentifier","src":"2331:8:43"},"variableNames":[{"name":"s.slot","nodeType":"YulIdentifier","src":"2321:6:43"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":12425,"isOffset":false,"isSlot":false,"src":"2331:8:43","valueSize":1},{"declaration":12422,"isOffset":false,"isSlot":true,"src":"2321:6:43","suffix":"slot","valueSize":1}],"id":12428,"nodeType":"InlineAssembly","src":"2298:51:43"}]},"id":12430,"implemented":true,"kind":"function","modifiers":[],"name":"_storageControl","nameLocation":"2140:15:43","nodeType":"FunctionDefinition","parameters":{"id":12419,"nodeType":"ParameterList","parameters":[],"src":"2155:2:43"},"returnParameters":{"id":12423,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12422,"mutability":"mutable","name":"s","nameLocation":"2228:1:43","nodeType":"VariableDeclaration","scope":12430,"src":"2205:24:43","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl"},"typeName":{"id":12421,"nodeType":"UserDefinedTypeName","pathNode":{"id":12420,"name":"StorageControl","nameLocations":["2205:14:43"],"nodeType":"IdentifierPath","referencedDeclaration":12418,"src":"2205:14:43"},"referencedDeclaration":12418,"src":"2205:14:43","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl"}},"visibility":"internal"}],"src":"2204:26:43"},"scope":13307,"src":"2131:224:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12469,"nodeType":"Block","src":"2515:270:43","statements":[{"expression":{"arguments":[{"expression":{"id":12441,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2576:3:43","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2580:6:43","memberName":"sender","nodeType":"MemberAccess","src":"2576:10:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":12445,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2608:4:43","typeDescriptions":{"typeIdentifier":"t_contract$_LibControl_$13307","typeString":"library LibControl"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LibControl_$13307","typeString":"library LibControl"}],"id":12444,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2600:7:43","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12443,"name":"address","nodeType":"ElementaryTypeName","src":"2600:7:43","typeDescriptions":{}}},"id":12446,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2600:13:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12447,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12434,"src":"2627:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":12438,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12432,"src":"2537:11:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12437,"name":"ISuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7015,"src":"2525:11:43","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISuperToken_$7015_$","typeString":"type(contract ISuperToken)"}},"id":12439,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2525:24:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"id":12440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2550:12:43","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":6731,"src":"2525:37:43","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":12448,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2525:119:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12449,"nodeType":"ExpressionStatement","src":"2525:119:43"},{"expression":{"id":12459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12450,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12430,"src":"2655:15:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$12418_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":12451,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2655:17:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":12452,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2673:6:43","memberName":"assets","nodeType":"MemberAccess","referencedDeclaration":12413,"src":"2655:24:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":12455,"indexExpression":{"expression":{"id":12453,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2680:3:43","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2684:6:43","memberName":"sender","nodeType":"MemberAccess","src":"2680:10:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2655:36:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":12457,"indexExpression":{"id":12456,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12432,"src":"2692:11:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2655:49:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":12458,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12434,"src":"2708:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2655:60:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12460,"nodeType":"ExpressionStatement","src":"2655:60:43"},{"expression":{"id":12467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12461,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12430,"src":"2725:15:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$12418_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":12462,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2725:17:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":12463,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2743:11:43","memberName":"totalAssets","nodeType":"MemberAccess","referencedDeclaration":12417,"src":"2725:29:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":12465,"indexExpression":{"id":12464,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12432,"src":"2755:11:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2725:42:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":12466,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12434,"src":"2771:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2725:53:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12468,"nodeType":"ExpressionStatement","src":"2725:53:43"}]},"id":12470,"implemented":true,"kind":"function","modifiers":[],"name":"_depositAsset","nameLocation":"2454:13:43","nodeType":"FunctionDefinition","parameters":{"id":12435,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12432,"mutability":"mutable","name":"_superToken","nameLocation":"2476:11:43","nodeType":"VariableDeclaration","scope":12470,"src":"2468:19:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12431,"name":"address","nodeType":"ElementaryTypeName","src":"2468:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12434,"mutability":"mutable","name":"_amount","nameLocation":"2497:7:43","nodeType":"VariableDeclaration","scope":12470,"src":"2489:15:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12433,"name":"uint256","nodeType":"ElementaryTypeName","src":"2489:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2467:38:43"},"returnParameters":{"id":12436,"nodeType":"ParameterList","parameters":[],"src":"2515:0:43"},"scope":13307,"src":"2445:340:43","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":12519,"nodeType":"Block","src":"2862:320:43","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12477,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12430,"src":"2876:15:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$12418_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":12478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2876:17:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":12479,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2894:6:43","memberName":"assets","nodeType":"MemberAccess","referencedDeclaration":12413,"src":"2876:24:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":12482,"indexExpression":{"expression":{"id":12480,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2901:3:43","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2905:6:43","memberName":"sender","nodeType":"MemberAccess","src":"2901:10:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2876:36:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":12484,"indexExpression":{"id":12483,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12472,"src":"2913:11:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2876:49:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":12485,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12474,"src":"2928:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2876:59:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12490,"nodeType":"IfStatement","src":"2872:104:43","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":12487,"name":"InsufficientAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12331,"src":"2956:18:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":12488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2956:20:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12489,"nodeType":"RevertStatement","src":"2949:27:43"}},{"expression":{"id":12500,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12491,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12430,"src":"2987:15:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$12418_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":12492,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2987:17:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":12493,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3005:6:43","memberName":"assets","nodeType":"MemberAccess","referencedDeclaration":12413,"src":"2987:24:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":12496,"indexExpression":{"expression":{"id":12494,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3012:3:43","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3016:6:43","memberName":"sender","nodeType":"MemberAccess","src":"3012:10:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2987:36:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":12498,"indexExpression":{"id":12497,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12472,"src":"3024:11:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2987:49:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":12499,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12474,"src":"3040:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2987:60:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12501,"nodeType":"ExpressionStatement","src":"2987:60:43"},{"expression":{"id":12508,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12502,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12430,"src":"3057:15:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$12418_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":12503,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3057:17:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":12504,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3075:11:43","memberName":"totalAssets","nodeType":"MemberAccess","referencedDeclaration":12417,"src":"3057:29:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":12506,"indexExpression":{"id":12505,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12472,"src":"3087:11:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3057:42:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":12507,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12474,"src":"3103:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3057:53:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12509,"nodeType":"ExpressionStatement","src":"3057:53:43"},{"expression":{"arguments":[{"expression":{"id":12514,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3155:3:43","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12515,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3159:6:43","memberName":"sender","nodeType":"MemberAccess","src":"3155:10:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12516,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12474,"src":"3167:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":12511,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12472,"src":"3133:11:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12510,"name":"ISuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7015,"src":"3121:11:43","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISuperToken_$7015_$","typeString":"type(contract ISuperToken)"}},"id":12512,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3121:24:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"id":12513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3146:8:43","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":6693,"src":"3121:33:43","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":12517,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3121:54:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12518,"nodeType":"ExpressionStatement","src":"3121:54:43"}]},"id":12520,"implemented":true,"kind":"function","modifiers":[],"name":"_withdrawAsset","nameLocation":"2800:14:43","nodeType":"FunctionDefinition","parameters":{"id":12475,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12472,"mutability":"mutable","name":"_superToken","nameLocation":"2823:11:43","nodeType":"VariableDeclaration","scope":12520,"src":"2815:19:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12471,"name":"address","nodeType":"ElementaryTypeName","src":"2815:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12474,"mutability":"mutable","name":"_amount","nameLocation":"2844:7:43","nodeType":"VariableDeclaration","scope":12520,"src":"2836:15:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12473,"name":"uint256","nodeType":"ElementaryTypeName","src":"2836:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2814:38:43"},"returnParameters":{"id":12476,"nodeType":"ParameterList","parameters":[],"src":"2862:0:43"},"scope":13307,"src":"2791:391:43","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":12559,"nodeType":"Block","src":"3286:310:43","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12533,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12527,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12430,"src":"3300:15:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$12418_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":12528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3300:17:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":12529,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3318:10:43","memberName":"feeBalance","nodeType":"MemberAccess","referencedDeclaration":12407,"src":"3300:28:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":12531,"indexExpression":{"id":12530,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12522,"src":"3329:11:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3300:41:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":12532,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12524,"src":"3344:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3300:51:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12537,"nodeType":"IfStatement","src":"3296:100:43","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":12534,"name":"InsufficientFeeBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12333,"src":"3372:22:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":12535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3372:24:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12536,"nodeType":"RevertStatement","src":"3365:31:43"}},{"expression":{"id":12544,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12538,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12430,"src":"3407:15:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$12418_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":12539,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3407:17:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":12540,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3425:10:43","memberName":"feeBalance","nodeType":"MemberAccess","referencedDeclaration":12407,"src":"3407:28:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":12542,"indexExpression":{"id":12541,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12522,"src":"3436:11:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3407:41:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":12543,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12524,"src":"3452:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3407:52:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12545,"nodeType":"ExpressionStatement","src":"3407:52:43"},{"expression":{"arguments":[{"arguments":[{"id":12552,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3529:4:43","typeDescriptions":{"typeIdentifier":"t_contract$_LibControl_$13307","typeString":"library LibControl"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LibControl_$13307","typeString":"library LibControl"}],"id":12551,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3521:7:43","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12550,"name":"address","nodeType":"ElementaryTypeName","src":"3521:7:43","typeDescriptions":{}}},"id":12553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3521:13:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":12554,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3548:3:43","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3552:6:43","memberName":"sender","nodeType":"MemberAccess","src":"3548:10:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12556,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12524,"src":"3572:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":12547,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12522,"src":"3482:11:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12546,"name":"ISuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7015,"src":"3470:11:43","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISuperToken_$7015_$","typeString":"type(contract ISuperToken)"}},"id":12548,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3470:24:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"id":12549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3495:12:43","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":6731,"src":"3470:37:43","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":12557,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3470:119:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12558,"nodeType":"ExpressionStatement","src":"3470:119:43"}]},"id":12560,"implemented":true,"kind":"function","modifiers":[],"name":"_withdrawFeeBalance","nameLocation":"3197:19:43","nodeType":"FunctionDefinition","parameters":{"id":12525,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12522,"mutability":"mutable","name":"_superToken","nameLocation":"3234:11:43","nodeType":"VariableDeclaration","scope":12560,"src":"3226:19:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12521,"name":"address","nodeType":"ElementaryTypeName","src":"3226:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12524,"mutability":"mutable","name":"_amount","nameLocation":"3263:7:43","nodeType":"VariableDeclaration","scope":12560,"src":"3255:15:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12523,"name":"uint256","nodeType":"ElementaryTypeName","src":"3255:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3216:60:43"},"returnParameters":{"id":12526,"nodeType":"ParameterList","parameters":[],"src":"3286:0:43"},"scope":13307,"src":"3188:408:43","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":12579,"nodeType":"Block","src":"3675:151:43","statements":[{"expression":{"id":12577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12567,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12430,"src":"3685:15:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$12418_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":12568,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3685:17:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":12569,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3703:10:43","memberName":"feeBalance","nodeType":"MemberAccess","referencedDeclaration":12407,"src":"3685:28:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":12571,"indexExpression":{"id":12570,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12564,"src":"3714:11:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3685:41:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"id":12573,"name":"count","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12562,"src":"3761:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12574,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12564,"src":"3780:11:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"74727565","id":12575,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3805:4:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":12572,"name":"_getAppFeeBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12641,"src":"3730:17:43","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bool_$returns$_t_uint256_$","typeString":"function (uint256,address,bool) returns (uint256)"}},"id":12576,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3730:89:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3685:134:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12578,"nodeType":"ExpressionStatement","src":"3685:134:43"}]},"id":12580,"implemented":true,"kind":"function","modifiers":[],"name":"_realizeFeeBalance","nameLocation":"3611:18:43","nodeType":"FunctionDefinition","parameters":{"id":12565,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12562,"mutability":"mutable","name":"count","nameLocation":"3638:5:43","nodeType":"VariableDeclaration","scope":12580,"src":"3630:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12561,"name":"uint256","nodeType":"ElementaryTypeName","src":"3630:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12564,"mutability":"mutable","name":"_superToken","nameLocation":"3653:11:43","nodeType":"VariableDeclaration","scope":12580,"src":"3645:19:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12563,"name":"address","nodeType":"ElementaryTypeName","src":"3645:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3629:36:43"},"returnParameters":{"id":12566,"nodeType":"ParameterList","parameters":[],"src":"3675:0:43"},"scope":13307,"src":"3602:224:43","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":12640,"nodeType":"Block","src":"3968:1679:43","statements":[{"assignments":[12593],"declarations":[{"constant":false,"id":12593,"mutability":"mutable","name":"sControl","nameLocation":"4001:8:43","nodeType":"VariableDeclaration","scope":12640,"src":"3978:31:43","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl"},"typeName":{"id":12592,"nodeType":"UserDefinedTypeName","pathNode":{"id":12591,"name":"StorageControl","nameLocations":["3978:14:43"],"nodeType":"IdentifierPath","referencedDeclaration":12418,"src":"3978:14:43"},"referencedDeclaration":12418,"src":"3978:14:43","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl"}},"visibility":"internal"}],"id":12596,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":12594,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12430,"src":"4012:15:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$12418_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":12595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4012:17:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3978:51:43"},{"assignments":[12598],"declarations":[{"constant":false,"id":12598,"mutability":"mutable","name":"unsettledControlNonce","nameLocation":"4047:21:43","nodeType":"VariableDeclaration","scope":12640,"src":"4039:29:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12597,"name":"uint256","nodeType":"ElementaryTypeName","src":"4039:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12603,"initialValue":{"baseExpression":{"expression":{"id":12599,"name":"sControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12593,"src":"4071:8:43","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":12600,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4080:21:43","memberName":"unsettledControlNonce","nodeType":"MemberAccess","referencedDeclaration":12392,"src":"4071:30:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":12602,"indexExpression":{"id":12601,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12584,"src":"4115:11:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4071:65:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4039:97:43"},{"assignments":[12605],"declarations":[{"constant":false,"id":12605,"mutability":"mutable","name":"amountFee","nameLocation":"4258:9:43","nodeType":"VariableDeclaration","scope":12640,"src":"4250:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12604,"name":"uint256","nodeType":"ElementaryTypeName","src":"4250:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12606,"nodeType":"VariableDeclarationStatement","src":"4250:17:43"},{"body":{"id":12636,"nodeType":"Block","src":"4313:1301:43","statements":[{"expression":{"id":12624,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12617,"name":"amountFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12605,"src":"5407:9:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"id":12619,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12584,"src":"5457:11:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12620,"name":"unsettledControlNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12598,"src":"5486:21:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":12621,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12608,"src":"5510:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5486:25:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12618,"name":"_calculateAmountFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12726,"src":"5420:19:43","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,uint256) view returns (uint256)"}},"id":12623,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5420:105:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5407:118:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12625,"nodeType":"ExpressionStatement","src":"5407:118:43"},{"condition":{"id":12626,"name":"_isSettle","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12586,"src":"5544:9:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12635,"nodeType":"IfStatement","src":"5540:63:43","trueBody":{"expression":{"id":12633,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":12627,"name":"sControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12593,"src":"5555:8:43","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":12630,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5564:21:43","memberName":"unsettledControlNonce","nodeType":"MemberAccess","referencedDeclaration":12392,"src":"5555:30:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":12631,"indexExpression":{"id":12629,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12584,"src":"5586:11:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5555:43:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":12632,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5602:1:43","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5555:48:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12634,"nodeType":"ExpressionStatement","src":"5555:48:43"}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12611,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12608,"src":"4297:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":12612,"name":"count","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12582,"src":"4301:5:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4297:9:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12637,"initializationExpression":{"assignments":[12608],"declarations":[{"constant":false,"id":12608,"mutability":"mutable","name":"i","nameLocation":"4290:1:43","nodeType":"VariableDeclaration","scope":12637,"src":"4282:9:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12607,"name":"uint256","nodeType":"ElementaryTypeName","src":"4282:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12610,"initialValue":{"hexValue":"30","id":12609,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4294:1:43","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4282:13:43"},"loopExpression":{"expression":{"id":12615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"4308:3:43","subExpression":{"id":12614,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12608,"src":"4308:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12616,"nodeType":"ExpressionStatement","src":"4308:3:43"},"nodeType":"ForStatement","src":"4277:1337:43"},{"expression":{"id":12638,"name":"amountFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12605,"src":"5631:9:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12590,"id":12639,"nodeType":"Return","src":"5624:16:43"}]},"id":12641,"implemented":true,"kind":"function","modifiers":[],"name":"_getAppFeeBalance","nameLocation":"3841:17:43","nodeType":"FunctionDefinition","parameters":{"id":12587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12582,"mutability":"mutable","name":"count","nameLocation":"3876:5:43","nodeType":"VariableDeclaration","scope":12641,"src":"3868:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12581,"name":"uint256","nodeType":"ElementaryTypeName","src":"3868:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12584,"mutability":"mutable","name":"_superToken","nameLocation":"3899:11:43","nodeType":"VariableDeclaration","scope":12641,"src":"3891:19:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12583,"name":"address","nodeType":"ElementaryTypeName","src":"3891:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12586,"mutability":"mutable","name":"_isSettle","nameLocation":"3925:9:43","nodeType":"VariableDeclaration","scope":12641,"src":"3920:14:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12585,"name":"bool","nodeType":"ElementaryTypeName","src":"3920:4:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3858:82:43"},"returnParameters":{"id":12590,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12589,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12641,"src":"3959:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12588,"name":"uint256","nodeType":"ElementaryTypeName","src":"3959:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3958:9:43"},"scope":13307,"src":"3832:1815:43","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":12725,"nodeType":"Block","src":"6077:920:43","statements":[{"assignments":[12652],"declarations":[{"constant":false,"id":12652,"mutability":"mutable","name":"sControl","nameLocation":"6110:8:43","nodeType":"VariableDeclaration","scope":12725,"src":"6087:31:43","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl"},"typeName":{"id":12651,"nodeType":"UserDefinedTypeName","pathNode":{"id":12650,"name":"StorageControl","nameLocations":["6087:14:43"],"nodeType":"IdentifierPath","referencedDeclaration":12418,"src":"6087:14:43"},"referencedDeclaration":12418,"src":"6087:14:43","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl"}},"visibility":"internal"}],"id":12655,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":12653,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12430,"src":"6121:15:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$12418_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":12654,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6121:17:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"6087:51:43"},{"assignments":[12657],"declarations":[{"constant":false,"id":12657,"mutability":"mutable","name":"timestampIncrease","nameLocation":"6156:17:43","nodeType":"VariableDeclaration","scope":12725,"src":"6148:25:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12656,"name":"uint256","nodeType":"ElementaryTypeName","src":"6148:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12665,"initialValue":{"expression":{"baseExpression":{"baseExpression":{"expression":{"id":12658,"name":"sControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12652,"src":"6176:8:43","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":12659,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6194:13:43","memberName":"controlRecord","nodeType":"MemberAccess","referencedDeclaration":12403,"src":"6176:31:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_ControlRecord_$12369_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibControl.ControlRecord storage ref))"}},"id":12661,"indexExpression":{"id":12660,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12643,"src":"6208:11:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6176:44:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ControlRecord_$12369_storage_$","typeString":"mapping(uint256 => struct LibControl.ControlRecord storage ref)"}},"id":12663,"indexExpression":{"id":12662,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12645,"src":"6221:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6176:52:43","typeDescriptions":{"typeIdentifier":"t_struct$_ControlRecord_$12369_storage","typeString":"struct LibControl.ControlRecord storage ref"}},"id":12664,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6229:17:43","memberName":"timestampIncrease","nodeType":"MemberAccess","referencedDeclaration":12366,"src":"6176:70:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6148:98:43"},{"assignments":[12667],"declarations":[{"constant":false,"id":12667,"mutability":"mutable","name":"timestampDecrease","nameLocation":"6264:17:43","nodeType":"VariableDeclaration","scope":12725,"src":"6256:25:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12666,"name":"uint256","nodeType":"ElementaryTypeName","src":"6256:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12675,"initialValue":{"expression":{"baseExpression":{"baseExpression":{"expression":{"id":12668,"name":"sControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12652,"src":"6284:8:43","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":12669,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6302:13:43","memberName":"controlRecord","nodeType":"MemberAccess","referencedDeclaration":12403,"src":"6284:31:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_ControlRecord_$12369_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibControl.ControlRecord storage ref))"}},"id":12671,"indexExpression":{"id":12670,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12643,"src":"6316:11:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6284:44:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ControlRecord_$12369_storage_$","typeString":"mapping(uint256 => struct LibControl.ControlRecord storage ref)"}},"id":12673,"indexExpression":{"id":12672,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12645,"src":"6329:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6284:52:43","typeDescriptions":{"typeIdentifier":"t_struct$_ControlRecord_$12369_storage","typeString":"struct LibControl.ControlRecord storage ref"}},"id":12674,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6337:17:43","memberName":"timestampDecrease","nodeType":"MemberAccess","referencedDeclaration":12368,"src":"6284:70:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6256:98:43"},{"assignments":[12677,12679,null,12681],"declarations":[{"constant":false,"id":12677,"mutability":"mutable","name":"effectiveFlowRate","nameLocation":"6385:17:43","nodeType":"VariableDeclaration","scope":12725,"src":"6379:23:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":12676,"name":"int96","nodeType":"ElementaryTypeName","src":"6379:5:43","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"},{"constant":false,"id":12679,"mutability":"mutable","name":"flowRate","nameLocation":"6423:8:43","nodeType":"VariableDeclaration","scope":12725,"src":"6416:15:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":12678,"name":"uint96","nodeType":"ElementaryTypeName","src":"6416:6:43","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},null,{"constant":false,"id":12681,"mutability":"mutable","name":"timestampStop","nameLocation":"6467:13:43","nodeType":"VariableDeclaration","scope":12725,"src":"6459:21:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12680,"name":"uint256","nodeType":"ElementaryTypeName","src":"6459:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12687,"initialValue":{"arguments":[{"id":12684,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12643,"src":"6531:11:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12685,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12645,"src":"6544:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":12682,"name":"LibSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14923,"src":"6493:10:43","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibSession_$14923_$","typeString":"type(library LibSession)"}},"id":12683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6504:26:43","memberName":"_getSessionDataFromControl","nodeType":"MemberAccess","referencedDeclaration":14922,"src":"6493:37:43","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$returns$_t_int96_$_t_uint96_$_t_uint256_$_t_uint256_$","typeString":"function (address,uint256) view returns (int96,uint96,uint256,uint256)"}},"id":12686,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6493:58:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int96_$_t_uint96_$_t_uint256_$_t_uint256_$","typeString":"tuple(int96,uint96,uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"6365:186:43"},{"assignments":[12689],"declarations":[{"constant":false,"id":12689,"mutability":"mutable","name":"feeFlowRate","nameLocation":"6570:11:43","nodeType":"VariableDeclaration","scope":12725,"src":"6562:19:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12688,"name":"uint256","nodeType":"ElementaryTypeName","src":"6562:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12696,"initialValue":{"commonType":{"typeIdentifier":"t_uint96","typeString":"uint96"},"id":12695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12690,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12679,"src":"6584:8:43","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[{"id":12693,"name":"effectiveFlowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12677,"src":"6602:17:43","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int96","typeString":"int96"}],"id":12692,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6595:6:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"},"typeName":{"id":12691,"name":"uint96","nodeType":"ElementaryTypeName","src":"6595:6:43","typeDescriptions":{}}},"id":12694,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6595:25:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"6584:36:43","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"VariableDeclarationStatement","src":"6562:58:43"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12697,"name":"timestampDecrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12667,"src":"6635:17:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":12698,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6656:1:43","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6635:22:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12710,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12708,"name":"timestampStop","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12681,"src":"6754:13:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":12709,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6771:1:43","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6754:18:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":12722,"nodeType":"Block","src":"6861:130:43","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":12719,"name":"ContractError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12341,"src":"6882:13:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":12720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6882:15:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12721,"nodeType":"RevertStatement","src":"6875:22:43"}]},"id":12723,"nodeType":"IfStatement","src":"6750:241:43","trueBody":{"id":12718,"nodeType":"Block","src":"6774:81:43","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12711,"name":"feeFlowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12689,"src":"6795:11:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12714,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12712,"name":"timestampStop","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12681,"src":"6810:13:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":12713,"name":"timestampIncrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12657,"src":"6826:17:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6810:33:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":12715,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6809:35:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6795:49:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12649,"id":12717,"nodeType":"Return","src":"6788:56:43"}]}},"id":12724,"nodeType":"IfStatement","src":"6631:360:43","trueBody":{"id":12707,"nodeType":"Block","src":"6659:85:43","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12700,"name":"feeFlowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12689,"src":"6680:11:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12703,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12701,"name":"timestampDecrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12667,"src":"6695:17:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":12702,"name":"timestampIncrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12657,"src":"6715:17:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6695:37:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":12704,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6694:39:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6680:53:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12649,"id":12706,"nodeType":"Return","src":"6673:60:43"}]}}]},"id":12726,"implemented":true,"kind":"function","modifiers":[],"name":"_calculateAmountFee","nameLocation":"5966:19:43","nodeType":"FunctionDefinition","parameters":{"id":12646,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12643,"mutability":"mutable","name":"_superToken","nameLocation":"6003:11:43","nodeType":"VariableDeclaration","scope":12726,"src":"5995:19:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12642,"name":"address","nodeType":"ElementaryTypeName","src":"5995:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12645,"mutability":"mutable","name":"_nonce","nameLocation":"6032:6:43","nodeType":"VariableDeclaration","scope":12726,"src":"6024:14:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12644,"name":"uint256","nodeType":"ElementaryTypeName","src":"6024:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5985:59:43"},"returnParameters":{"id":12649,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12648,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12726,"src":"6068:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12647,"name":"uint256","nodeType":"ElementaryTypeName","src":"6068:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6067:9:43"},"scope":13307,"src":"5957:1040:43","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":12738,"nodeType":"Block","src":"7105:52:43","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12731,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12728,"src":"7119:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"30","id":12732,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7129:1:43","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7119:11:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12737,"nodeType":"IfStatement","src":"7115:35:43","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":12734,"name":"ZeroValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12323,"src":"7139:9:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":12735,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7139:11:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12736,"nodeType":"RevertStatement","src":"7132:18:43"}}]},"id":12739,"implemented":true,"kind":"function","modifiers":[],"name":"_requireNonZeroValue","nameLocation":"7054:20:43","nodeType":"FunctionDefinition","parameters":{"id":12729,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12728,"mutability":"mutable","name":"_value","nameLocation":"7083:6:43","nodeType":"VariableDeclaration","scope":12739,"src":"7075:14:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12727,"name":"uint256","nodeType":"ElementaryTypeName","src":"7075:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7074:16:43"},"returnParameters":{"id":12730,"nodeType":"ParameterList","parameters":[],"src":"7105:0:43"},"scope":13307,"src":"7045:112:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12752,"nodeType":"Block","src":"7235:86:43","statements":[{"condition":{"id":12747,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"7249:37:43","subExpression":{"arguments":[{"id":12745,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12741,"src":"7274:11:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12744,"name":"_isSuperTokensSupported","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13095,"src":"7250:23:43","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":12746,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7250:36:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12751,"nodeType":"IfStatement","src":"7245:69:43","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":12748,"name":"InvalidSuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12327,"src":"7295:17:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":12749,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7295:19:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12750,"nodeType":"RevertStatement","src":"7288:26:43"}}]},"id":12753,"implemented":true,"kind":"function","modifiers":[],"name":"_requireSuperTokenSupported","nameLocation":"7172:27:43","nodeType":"FunctionDefinition","parameters":{"id":12742,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12741,"mutability":"mutable","name":"_superToken","nameLocation":"7208:11:43","nodeType":"VariableDeclaration","scope":12753,"src":"7200:19:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12740,"name":"address","nodeType":"ElementaryTypeName","src":"7200:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7199:21:43"},"returnParameters":{"id":12743,"nodeType":"ParameterList","parameters":[],"src":"7235:0:43"},"scope":13307,"src":"7163:158:43","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":12770,"nodeType":"Block","src":"7647:117:43","statements":[{"condition":{"id":12765,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"7661:49:43","subExpression":{"arguments":[{"id":12762,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12756,"src":"7684:11:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12763,"name":"_newFlowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12758,"src":"7697:12:43","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_int96","typeString":"int96"}],"id":12761,"name":"_isNewFlowRateAllowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13274,"src":"7662:21:43","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_int96_$returns$_t_bool_$","typeString":"function (address,int96) view returns (bool)"}},"id":12764,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7662:48:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12769,"nodeType":"IfStatement","src":"7657:100:43","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":12766,"name":"InsufficientAppSTBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12329,"src":"7731:24:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":12767,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7731:26:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12768,"nodeType":"RevertStatement","src":"7724:33:43"}}]},"documentation":{"id":12754,"nodeType":"StructuredDocumentation","src":"7327:198:43","text":" guard against how long before app runs out of funds and loses its deposit\n * `STBufferDurationInSecond` is a critical parameter and should be set as large as possible"},"id":12771,"implemented":true,"kind":"function","modifiers":[],"name":"_requireSufficientAppSTBalance","nameLocation":"7539:30:43","nodeType":"FunctionDefinition","parameters":{"id":12759,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12756,"mutability":"mutable","name":"_superToken","nameLocation":"7587:11:43","nodeType":"VariableDeclaration","scope":12771,"src":"7579:19:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12755,"name":"address","nodeType":"ElementaryTypeName","src":"7579:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12758,"mutability":"mutable","name":"_newFlowRate","nameLocation":"7614:12:43","nodeType":"VariableDeclaration","scope":12771,"src":"7608:18:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":12757,"name":"int96","nodeType":"ElementaryTypeName","src":"7608:5:43","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"7569:63:43"},"returnParameters":{"id":12760,"nodeType":"ParameterList","parameters":[],"src":"7647:0:43"},"scope":13307,"src":"7530:234:43","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":12787,"nodeType":"Block","src":"7831:80:43","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":12782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":12778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12776,"name":"_bps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12773,"src":"7845:4:43","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":12777,"name":"bpsMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12357,"src":"7852:6:43","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"7845:13:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":12781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12779,"name":"_bps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12773,"src":"7862:4:43","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":12780,"name":"bpsMax","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12360,"src":"7869:6:43","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"7862:13:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7845:30:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12786,"nodeType":"IfStatement","src":"7841:63:43","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":12783,"name":"InvalidBasisPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12337,"src":"7884:18:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":12784,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7884:20:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12785,"nodeType":"RevertStatement","src":"7877:27:43"}}]},"id":12788,"implemented":true,"kind":"function","modifiers":[],"name":"_requireValidBasisPoints","nameLocation":"7779:24:43","nodeType":"FunctionDefinition","parameters":{"id":12774,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12773,"mutability":"mutable","name":"_bps","nameLocation":"7811:4:43","nodeType":"VariableDeclaration","scope":12788,"src":"7804:11:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":12772,"name":"uint16","nodeType":"ElementaryTypeName","src":"7804:6:43","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"7803:13:43"},"returnParameters":{"id":12775,"nodeType":"ParameterList","parameters":[],"src":"7831:0:43"},"scope":13307,"src":"7770:141:43","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":12801,"nodeType":"Block","src":"8034:67:43","statements":[{"expression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12795,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12430,"src":"8051:15:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$12418_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":12796,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8051:17:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":12797,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8069:12:43","memberName":"controlNonce","nodeType":"MemberAccess","referencedDeclaration":12396,"src":"8051:30:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":12799,"indexExpression":{"id":12798,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12790,"src":"8082:11:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8051:43:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12794,"id":12800,"nodeType":"Return","src":"8044:50:43"}]},"id":12802,"implemented":true,"kind":"function","modifiers":[],"name":"_getNewNonce","nameLocation":"7968:12:43","nodeType":"FunctionDefinition","parameters":{"id":12791,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12790,"mutability":"mutable","name":"_superToken","nameLocation":"7989:11:43","nodeType":"VariableDeclaration","scope":12802,"src":"7981:19:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12789,"name":"address","nodeType":"ElementaryTypeName","src":"7981:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7980:21:43"},"returnParameters":{"id":12794,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12793,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12802,"src":"8025:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12792,"name":"uint256","nodeType":"ElementaryTypeName","src":"8025:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8024:9:43"},"scope":13307,"src":"7959:142:43","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":12813,"nodeType":"Block","src":"8167:65:43","statements":[{"expression":{"id":12811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12807,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12430,"src":"8177:15:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$12418_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":12808,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8177:17:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":12809,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8195:18:43","memberName":"minimumEndDuration","nodeType":"MemberAccess","referencedDeclaration":12380,"src":"8177:36:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":12810,"name":"_duration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12804,"src":"8216:9:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8177:48:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12812,"nodeType":"ExpressionStatement","src":"8177:48:43"}]},"id":12814,"implemented":true,"kind":"function","modifiers":[],"name":"_setMinimumEndDuration","nameLocation":"8116:22:43","nodeType":"FunctionDefinition","parameters":{"id":12805,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12804,"mutability":"mutable","name":"_duration","nameLocation":"8147:9:43","nodeType":"VariableDeclaration","scope":12814,"src":"8139:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12803,"name":"uint256","nodeType":"ElementaryTypeName","src":"8139:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8138:19:43"},"returnParameters":{"id":12806,"nodeType":"ParameterList","parameters":[],"src":"8167:0:43"},"scope":13307,"src":"8107:125:43","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":12825,"nodeType":"Block","src":"8295:62:43","statements":[{"expression":{"id":12823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12819,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12430,"src":"8305:15:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$12418_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":12820,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8305:17:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":12821,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8323:15:43","memberName":"minimumLifespan","nodeType":"MemberAccess","referencedDeclaration":12382,"src":"8305:33:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":12822,"name":"_duration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12816,"src":"8341:9:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8305:45:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12824,"nodeType":"ExpressionStatement","src":"8305:45:43"}]},"id":12826,"implemented":true,"kind":"function","modifiers":[],"name":"_setMinimumLifespan","nameLocation":"8247:19:43","nodeType":"FunctionDefinition","parameters":{"id":12817,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12816,"mutability":"mutable","name":"_duration","nameLocation":"8275:9:43","nodeType":"VariableDeclaration","scope":12826,"src":"8267:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12815,"name":"uint256","nodeType":"ElementaryTypeName","src":"8267:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8266:19:43"},"returnParameters":{"id":12818,"nodeType":"ParameterList","parameters":[],"src":"8295:0:43"},"scope":13307,"src":"8238:119:43","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":12837,"nodeType":"Block","src":"8419:71:43","statements":[{"expression":{"id":12835,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12831,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12430,"src":"8429:15:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$12418_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":12832,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8429:17:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":12833,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8447:24:43","memberName":"stBufferDurationInSecond","nodeType":"MemberAccess","referencedDeclaration":12384,"src":"8429:42:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":12834,"name":"_duration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12828,"src":"8474:9:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8429:54:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12836,"nodeType":"ExpressionStatement","src":"8429:54:43"}]},"id":12838,"implemented":true,"kind":"function","modifiers":[],"name":"_setSTBufferAmount","nameLocation":"8372:18:43","nodeType":"FunctionDefinition","parameters":{"id":12829,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12828,"mutability":"mutable","name":"_duration","nameLocation":"8399:9:43","nodeType":"VariableDeclaration","scope":12838,"src":"8391:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12827,"name":"uint256","nodeType":"ElementaryTypeName","src":"8391:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8390:19:43"},"returnParameters":{"id":12830,"nodeType":"ParameterList","parameters":[],"src":"8419:0:43"},"scope":13307,"src":"8363:127:43","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":12851,"nodeType":"Block","src":"8550:66:43","statements":[{"expression":{"id":12849,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12843,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12430,"src":"8560:15:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$12418_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":12844,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8560:17:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":12845,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8578:11:43","memberName":"superTokens","nodeType":"MemberAccess","referencedDeclaration":12388,"src":"8560:29:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":12847,"indexExpression":{"id":12846,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12840,"src":"8590:11:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8560:42:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":12848,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8605:4:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"8560:49:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12850,"nodeType":"ExpressionStatement","src":"8560:49:43"}]},"id":12852,"implemented":true,"kind":"function","modifiers":[],"name":"_addSuperToken","nameLocation":"8505:14:43","nodeType":"FunctionDefinition","parameters":{"id":12841,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12840,"mutability":"mutable","name":"_superToken","nameLocation":"8528:11:43","nodeType":"VariableDeclaration","scope":12852,"src":"8520:19:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12839,"name":"address","nodeType":"ElementaryTypeName","src":"8520:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8519:21:43"},"returnParameters":{"id":12842,"nodeType":"ParameterList","parameters":[],"src":"8550:0:43"},"scope":13307,"src":"8496:120:43","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":12864,"nodeType":"Block","src":"8679:66:43","statements":[{"expression":{"id":12862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"8689:49:43","subExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12857,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12430,"src":"8696:15:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$12418_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":12858,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8696:17:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":12859,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8714:11:43","memberName":"superTokens","nodeType":"MemberAccess","referencedDeclaration":12388,"src":"8696:29:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":12861,"indexExpression":{"id":12860,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12854,"src":"8726:11:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8696:42:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12863,"nodeType":"ExpressionStatement","src":"8689:49:43"}]},"id":12865,"implemented":true,"kind":"function","modifiers":[],"name":"_removeSuperToken","nameLocation":"8631:17:43","nodeType":"FunctionDefinition","parameters":{"id":12855,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12854,"mutability":"mutable","name":"_superToken","nameLocation":"8657:11:43","nodeType":"VariableDeclaration","scope":12865,"src":"8649:19:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12853,"name":"address","nodeType":"ElementaryTypeName","src":"8649:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8648:21:43"},"returnParameters":{"id":12856,"nodeType":"ParameterList","parameters":[],"src":"8679:0:43"},"scope":13307,"src":"8622:123:43","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":12877,"nodeType":"Block","src":"8782:81:43","statements":[{"expression":{"id":12875,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12868,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12430,"src":"8792:15:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$12418_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":12869,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8792:17:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":12870,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8810:12:43","memberName":"isBPSEnabled","nodeType":"MemberAccess","referencedDeclaration":12378,"src":"8792:30:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":12874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"8825:31:43","subExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12871,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12430,"src":"8826:15:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$12418_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":12872,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8826:17:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":12873,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8844:12:43","memberName":"isBPSEnabled","nodeType":"MemberAccess","referencedDeclaration":12378,"src":"8826:30:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8792:64:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12876,"nodeType":"ExpressionStatement","src":"8792:64:43"}]},"id":12878,"implemented":true,"kind":"function","modifiers":[],"name":"_toggleBPS","nameLocation":"8760:10:43","nodeType":"FunctionDefinition","parameters":{"id":12866,"nodeType":"ParameterList","parameters":[],"src":"8770:2:43"},"returnParameters":{"id":12867,"nodeType":"ParameterList","parameters":[],"src":"8782:0:43"},"scope":13307,"src":"8751:112:43","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":12917,"nodeType":"Block","src":"8899:281:43","statements":[{"assignments":[12882],"declarations":[{"constant":false,"id":12882,"mutability":"mutable","name":"sizeBeforeClear","nameLocation":"8917:15:43","nodeType":"VariableDeclaration","scope":12917,"src":"8909:23:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12881,"name":"uint256","nodeType":"ElementaryTypeName","src":"8909:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12885,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":12883,"name":"_getBPSSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13117,"src":"8935:11:43","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":12884,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8935:13:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8909:39:43"},{"body":{"id":12915,"nodeType":"Block","src":"9004:170:43","statements":[{"assignments":[12897],"declarations":[{"constant":false,"id":12897,"mutability":"mutable","name":"tag","nameLocation":"9026:3:43","nodeType":"VariableDeclaration","scope":12915,"src":"9018:11:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12896,"name":"uint256","nodeType":"ElementaryTypeName","src":"9018:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12907,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":12902,"name":"_getBPSSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13117,"src":"9085:11:43","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":12903,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9085:13:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":12904,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9101:1:43","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9085:17:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12898,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12430,"src":"9032:15:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$12418_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":12899,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9032:17:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":12900,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9050:3:43","memberName":"bps","nodeType":"MemberAccess","referencedDeclaration":12372,"src":"9032:21:43","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14952_storage","typeString":"struct IterableMappingBPS.Map storage ref"}},"id":12901,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9054:13:43","memberName":"getKeyAtIndex","nodeType":"MemberAccess","referencedDeclaration":14985,"src":"9032:35:43","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Map_$14952_storage_ptr_$_t_uint256_$returns$_t_uint256_$attached_to$_t_struct$_Map_$14952_storage_ptr_$","typeString":"function (struct IterableMappingBPS.Map storage pointer,uint256) view returns (uint256)"}},"id":12906,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9032:84:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9018:98:43"},{"expression":{"arguments":[{"id":12912,"name":"tag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12897,"src":"9159:3:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12908,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12430,"src":"9130:15:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$12418_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":12909,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9130:17:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":12910,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9148:3:43","memberName":"bps","nodeType":"MemberAccess","referencedDeclaration":12372,"src":"9130:21:43","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14952_storage","typeString":"struct IterableMappingBPS.Map storage ref"}},"id":12911,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9152:6:43","memberName":"remove","nodeType":"MemberAccess","referencedDeclaration":15180,"src":"9130:28:43","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Map_$14952_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_struct$_Map_$14952_storage_ptr_$","typeString":"function (struct IterableMappingBPS.Map storage pointer,uint256)"}},"id":12913,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9130:33:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12914,"nodeType":"ExpressionStatement","src":"9130:33:43"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12892,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12890,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12887,"src":"8978:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":12891,"name":"sizeBeforeClear","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12882,"src":"8982:15:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8978:19:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12916,"initializationExpression":{"assignments":[12887],"declarations":[{"constant":false,"id":12887,"mutability":"mutable","name":"i","nameLocation":"8971:1:43","nodeType":"VariableDeclaration","scope":12916,"src":"8963:9:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12886,"name":"uint256","nodeType":"ElementaryTypeName","src":"8963:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12889,"initialValue":{"hexValue":"30","id":12888,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8975:1:43","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"8963:13:43"},"loopExpression":{"expression":{"id":12894,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"8999:3:43","subExpression":{"id":12893,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12887,"src":"8999:1:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12895,"nodeType":"ExpressionStatement","src":"8999:3:43"},"nodeType":"ForStatement","src":"8958:216:43"}]},"id":12918,"implemented":true,"kind":"function","modifiers":[],"name":"_clearBPS","nameLocation":"8878:9:43","nodeType":"FunctionDefinition","parameters":{"id":12879,"nodeType":"ParameterList","parameters":[],"src":"8887:2:43"},"returnParameters":{"id":12880,"nodeType":"ParameterList","parameters":[],"src":"8899:0:43"},"scope":13307,"src":"8869:311:43","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":12950,"nodeType":"Block","src":"9333:293:43","statements":[{"expression":{"arguments":[{"id":12930,"name":"_bps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12920,"src":"9368:4:43","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"id":12929,"name":"_requireValidBasisPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12788,"src":"9343:24:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint16_$returns$__$","typeString":"function (uint16) pure"}},"id":12931,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9343:30:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12932,"nodeType":"ExpressionStatement","src":"9343:30:43"},{"condition":{"commonType":{"typeIdentifier":"t_uint96","typeString":"uint96"},"id":12935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12933,"name":"_flowRateUpperBound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12924,"src":"9387:19:43","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":12934,"name":"_flowRateLowerBound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12922,"src":"9409:19:43","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"9387:41:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12939,"nodeType":"IfStatement","src":"9383:89:43","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":12936,"name":"InvalidFlowRateBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12335,"src":"9449:21:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":12937,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9449:23:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12938,"nodeType":"RevertStatement","src":"9442:30:43"}},{"expression":{"arguments":[{"id":12944,"name":"_tag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12926,"src":"9521:4:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12945,"name":"_bps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12920,"src":"9539:4:43","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"id":12946,"name":"_flowRateLowerBound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12922,"src":"9557:19:43","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"id":12947,"name":"_flowRateUpperBound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12924,"src":"9590:19:43","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_uint96","typeString":"uint96"}],"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12940,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12430,"src":"9482:15:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$12418_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":12941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9482:17:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":12942,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9500:3:43","memberName":"bps","nodeType":"MemberAccess","referencedDeclaration":12372,"src":"9482:21:43","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14952_storage","typeString":"struct IterableMappingBPS.Map storage ref"}},"id":12943,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9504:3:43","memberName":"set","nodeType":"MemberAccess","referencedDeclaration":15100,"src":"9482:25:43","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Map_$14952_storage_ptr_$_t_uint256_$_t_uint16_$_t_uint96_$_t_uint96_$returns$__$attached_to$_t_struct$_Map_$14952_storage_ptr_$","typeString":"function (struct IterableMappingBPS.Map storage pointer,uint256,uint16,uint96,uint96)"}},"id":12948,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9482:137:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12949,"nodeType":"ExpressionStatement","src":"9482:137:43"}]},"id":12951,"implemented":true,"kind":"function","modifiers":[],"name":"_setBPS","nameLocation":"9195:7:43","nodeType":"FunctionDefinition","parameters":{"id":12927,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12920,"mutability":"mutable","name":"_bps","nameLocation":"9219:4:43","nodeType":"VariableDeclaration","scope":12951,"src":"9212:11:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":12919,"name":"uint16","nodeType":"ElementaryTypeName","src":"9212:6:43","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":12922,"mutability":"mutable","name":"_flowRateLowerBound","nameLocation":"9240:19:43","nodeType":"VariableDeclaration","scope":12951,"src":"9233:26:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":12921,"name":"uint96","nodeType":"ElementaryTypeName","src":"9233:6:43","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":12924,"mutability":"mutable","name":"_flowRateUpperBound","nameLocation":"9276:19:43","nodeType":"VariableDeclaration","scope":12951,"src":"9269:26:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":12923,"name":"uint96","nodeType":"ElementaryTypeName","src":"9269:6:43","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":12926,"mutability":"mutable","name":"_tag","nameLocation":"9313:4:43","nodeType":"VariableDeclaration","scope":12951,"src":"9305:12:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12925,"name":"uint256","nodeType":"ElementaryTypeName","src":"9305:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9202:121:43"},"returnParameters":{"id":12928,"nodeType":"ParameterList","parameters":[],"src":"9333:0:43"},"scope":13307,"src":"9186:440:43","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":12970,"nodeType":"Block","src":"9687:93:43","statements":[{"expression":{"arguments":[{"id":12959,"name":"_bps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12953,"src":"9722:4:43","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"id":12958,"name":"_requireValidBasisPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12788,"src":"9697:24:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint16_$returns$__$","typeString":"function (uint16) pure"}},"id":12960,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9697:30:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12961,"nodeType":"ExpressionStatement","src":"9697:30:43"},{"expression":{"id":12968,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12962,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12430,"src":"9737:15:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$12418_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":12963,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9737:17:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":12964,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9755:4:43","memberName":"sbps","nodeType":"MemberAccess","referencedDeclaration":12376,"src":"9737:22:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint16_$","typeString":"mapping(address => uint16)"}},"id":12966,"indexExpression":{"id":12965,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12955,"src":"9760:5:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9737:29:43","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":12967,"name":"_bps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12953,"src":"9769:4:43","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"9737:36:43","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"id":12969,"nodeType":"ExpressionStatement","src":"9737:36:43"}]},"id":12971,"implemented":true,"kind":"function","modifiers":[],"name":"_setSBPS","nameLocation":"9641:8:43","nodeType":"FunctionDefinition","parameters":{"id":12956,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12953,"mutability":"mutable","name":"_bps","nameLocation":"9657:4:43","nodeType":"VariableDeclaration","scope":12971,"src":"9650:11:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":12952,"name":"uint16","nodeType":"ElementaryTypeName","src":"9650:6:43","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":12955,"mutability":"mutable","name":"_user","nameLocation":"9671:5:43","nodeType":"VariableDeclaration","scope":12971,"src":"9663:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12954,"name":"address","nodeType":"ElementaryTypeName","src":"9663:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9649:28:43"},"returnParameters":{"id":12957,"nodeType":"ParameterList","parameters":[],"src":"9687:0:43"},"scope":13307,"src":"9632:148:43","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":12984,"nodeType":"Block","src":"9966:65:43","statements":[{"expression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12978,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12430,"src":"9983:15:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$12418_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":12979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9983:17:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":12980,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10001:10:43","memberName":"feeBalance","nodeType":"MemberAccess","referencedDeclaration":12407,"src":"9983:28:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":12982,"indexExpression":{"id":12981,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12973,"src":"10012:11:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9983:41:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":12977,"id":12983,"nodeType":"Return","src":"9976:48:43"}]},"id":12985,"implemented":true,"kind":"function","modifiers":[],"name":"_getFeeBalance","nameLocation":"9884:14:43","nodeType":"FunctionDefinition","parameters":{"id":12974,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12973,"mutability":"mutable","name":"_superToken","nameLocation":"9916:11:43","nodeType":"VariableDeclaration","scope":12985,"src":"9908:19:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12972,"name":"address","nodeType":"ElementaryTypeName","src":"9908:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9898:35:43"},"returnParameters":{"id":12977,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12976,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":12985,"src":"9957:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12975,"name":"uint256","nodeType":"ElementaryTypeName","src":"9957:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9956:9:43"},"scope":13307,"src":"9875:156:43","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":13050,"nodeType":"Block","src":"10180:527:43","statements":[{"assignments":[13001],"declarations":[{"constant":false,"id":13001,"mutability":"mutable","name":"receiver","nameLocation":"10198:8:43","nodeType":"VariableDeclaration","scope":13050,"src":"10190:16:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13000,"name":"address","nodeType":"ElementaryTypeName","src":"10190:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":13010,"initialValue":{"expression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13002,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12430,"src":"10209:15:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$12418_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":13003,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10209:17:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":13004,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10236:13:43","memberName":"controlRecord","nodeType":"MemberAccess","referencedDeclaration":12403,"src":"10209:40:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_ControlRecord_$12369_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibControl.ControlRecord storage ref))"}},"id":13006,"indexExpression":{"id":13005,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12987,"src":"10250:11:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10209:53:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ControlRecord_$12369_storage_$","typeString":"mapping(uint256 => struct LibControl.ControlRecord storage ref)"}},"id":13008,"indexExpression":{"id":13007,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12989,"src":"10263:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10209:61:43","typeDescriptions":{"typeIdentifier":"t_struct$_ControlRecord_$12369_storage","typeString":"struct LibControl.ControlRecord storage ref"}},"id":13009,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10271:8:43","memberName":"receiver","nodeType":"MemberAccess","referencedDeclaration":12362,"src":"10209:70:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"10190:89:43"},{"assignments":[13012],"declarations":[{"constant":false,"id":13012,"mutability":"mutable","name":"sessionNonce","nameLocation":"10297:12:43","nodeType":"VariableDeclaration","scope":13050,"src":"10289:20:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13011,"name":"uint256","nodeType":"ElementaryTypeName","src":"10289:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13021,"initialValue":{"expression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13013,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12430,"src":"10312:15:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$12418_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":13014,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10312:17:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":13015,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10339:13:43","memberName":"controlRecord","nodeType":"MemberAccess","referencedDeclaration":12403,"src":"10312:40:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_ControlRecord_$12369_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibControl.ControlRecord storage ref))"}},"id":13017,"indexExpression":{"id":13016,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12987,"src":"10353:11:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10312:53:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ControlRecord_$12369_storage_$","typeString":"mapping(uint256 => struct LibControl.ControlRecord storage ref)"}},"id":13019,"indexExpression":{"id":13018,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12989,"src":"10366:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10312:61:43","typeDescriptions":{"typeIdentifier":"t_struct$_ControlRecord_$12369_storage","typeString":"struct LibControl.ControlRecord storage ref"}},"id":13020,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10374:12:43","memberName":"sessionNonce","nodeType":"MemberAccess","referencedDeclaration":12364,"src":"10312:74:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10289:97:43"},{"assignments":[13023],"declarations":[{"constant":false,"id":13023,"mutability":"mutable","name":"timestampIncrease","nameLocation":"10404:17:43","nodeType":"VariableDeclaration","scope":13050,"src":"10396:25:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13022,"name":"uint256","nodeType":"ElementaryTypeName","src":"10396:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13032,"initialValue":{"expression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13024,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12430,"src":"10424:15:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$12418_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":13025,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10424:17:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":13026,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10451:13:43","memberName":"controlRecord","nodeType":"MemberAccess","referencedDeclaration":12403,"src":"10424:40:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_ControlRecord_$12369_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibControl.ControlRecord storage ref))"}},"id":13028,"indexExpression":{"id":13027,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12987,"src":"10465:11:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10424:53:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ControlRecord_$12369_storage_$","typeString":"mapping(uint256 => struct LibControl.ControlRecord storage ref)"}},"id":13030,"indexExpression":{"id":13029,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12989,"src":"10478:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10424:61:43","typeDescriptions":{"typeIdentifier":"t_struct$_ControlRecord_$12369_storage","typeString":"struct LibControl.ControlRecord storage ref"}},"id":13031,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10486:17:43","memberName":"timestampIncrease","nodeType":"MemberAccess","referencedDeclaration":12366,"src":"10424:79:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10396:107:43"},{"assignments":[13034],"declarations":[{"constant":false,"id":13034,"mutability":"mutable","name":"timestampDecrease","nameLocation":"10521:17:43","nodeType":"VariableDeclaration","scope":13050,"src":"10513:25:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13033,"name":"uint256","nodeType":"ElementaryTypeName","src":"10513:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13043,"initialValue":{"expression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13035,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12430,"src":"10541:15:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$12418_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":13036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10541:17:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":13037,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10568:13:43","memberName":"controlRecord","nodeType":"MemberAccess","referencedDeclaration":12403,"src":"10541:40:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_ControlRecord_$12369_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibControl.ControlRecord storage ref))"}},"id":13039,"indexExpression":{"id":13038,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12987,"src":"10582:11:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10541:53:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ControlRecord_$12369_storage_$","typeString":"mapping(uint256 => struct LibControl.ControlRecord storage ref)"}},"id":13041,"indexExpression":{"id":13040,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12989,"src":"10595:6:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10541:61:43","typeDescriptions":{"typeIdentifier":"t_struct$_ControlRecord_$12369_storage","typeString":"struct LibControl.ControlRecord storage ref"}},"id":13042,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10603:17:43","memberName":"timestampDecrease","nodeType":"MemberAccess","referencedDeclaration":12368,"src":"10541:79:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10513:107:43"},{"expression":{"components":[{"id":13044,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13001,"src":"10639:8:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13045,"name":"sessionNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13012,"src":"10649:12:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13046,"name":"timestampIncrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13023,"src":"10663:17:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13047,"name":"timestampDecrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13034,"src":"10682:17:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":13048,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10638:62:43","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"tuple(address,uint256,uint256,uint256)"}},"functionReturnParameters":12999,"id":13049,"nodeType":"Return","src":"10631:69:43"}]},"id":13051,"implemented":true,"kind":"function","modifiers":[],"name":"_getControlData","nameLocation":"10046:15:43","nodeType":"FunctionDefinition","parameters":{"id":12990,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12987,"mutability":"mutable","name":"_superToken","nameLocation":"10079:11:43","nodeType":"VariableDeclaration","scope":13051,"src":"10071:19:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12986,"name":"address","nodeType":"ElementaryTypeName","src":"10071:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12989,"mutability":"mutable","name":"_nonce","nameLocation":"10108:6:43","nodeType":"VariableDeclaration","scope":13051,"src":"10100:14:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12988,"name":"uint256","nodeType":"ElementaryTypeName","src":"10100:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10061:59:43"},"returnParameters":{"id":12999,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12992,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13051,"src":"10144:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12991,"name":"address","nodeType":"ElementaryTypeName","src":"10144:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12994,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13051,"src":"10153:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12993,"name":"uint256","nodeType":"ElementaryTypeName","src":"10153:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12996,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13051,"src":"10162:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12995,"name":"uint256","nodeType":"ElementaryTypeName","src":"10162:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12998,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13051,"src":"10171:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12997,"name":"uint256","nodeType":"ElementaryTypeName","src":"10171:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10143:36:43"},"scope":13307,"src":"10037:670:43","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":13060,"nodeType":"Block","src":"10779:60:43","statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13056,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12430,"src":"10796:15:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$12418_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":13057,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10796:17:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":13058,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10814:18:43","memberName":"minimumEndDuration","nodeType":"MemberAccess","referencedDeclaration":12380,"src":"10796:36:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13055,"id":13059,"nodeType":"Return","src":"10789:43:43"}]},"id":13061,"implemented":true,"kind":"function","modifiers":[],"name":"_getMinimumEndDuration","nameLocation":"10722:22:43","nodeType":"FunctionDefinition","parameters":{"id":13052,"nodeType":"ParameterList","parameters":[],"src":"10744:2:43"},"returnParameters":{"id":13055,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13054,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13061,"src":"10770:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13053,"name":"uint256","nodeType":"ElementaryTypeName","src":"10770:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10769:9:43"},"scope":13307,"src":"10713:126:43","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":13070,"nodeType":"Block","src":"10908:57:43","statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13066,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12430,"src":"10925:15:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$12418_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":13067,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10925:17:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":13068,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10943:15:43","memberName":"minimumLifespan","nodeType":"MemberAccess","referencedDeclaration":12382,"src":"10925:33:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13065,"id":13069,"nodeType":"Return","src":"10918:40:43"}]},"id":13071,"implemented":true,"kind":"function","modifiers":[],"name":"_getMinimumLifespan","nameLocation":"10854:19:43","nodeType":"FunctionDefinition","parameters":{"id":13062,"nodeType":"ParameterList","parameters":[],"src":"10873:2:43"},"returnParameters":{"id":13065,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13064,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13071,"src":"10899:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13063,"name":"uint256","nodeType":"ElementaryTypeName","src":"10899:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10898:9:43"},"scope":13307,"src":"10845:120:43","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":13080,"nodeType":"Block","src":"11043:66:43","statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13076,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12430,"src":"11060:15:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$12418_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":13077,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11060:17:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":13078,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11078:24:43","memberName":"stBufferDurationInSecond","nodeType":"MemberAccess","referencedDeclaration":12384,"src":"11060:42:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13075,"id":13079,"nodeType":"Return","src":"11053:49:43"}]},"id":13081,"implemented":true,"kind":"function","modifiers":[],"name":"_getSTBufferDurationInSecond","nameLocation":"10980:28:43","nodeType":"FunctionDefinition","parameters":{"id":13072,"nodeType":"ParameterList","parameters":[],"src":"11008:2:43"},"returnParameters":{"id":13075,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13074,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13081,"src":"11034:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13073,"name":"uint256","nodeType":"ElementaryTypeName","src":"11034:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11033:9:43"},"scope":13307,"src":"10971:138:43","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":13094,"nodeType":"Block","src":"11212:66:43","statements":[{"expression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13088,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12430,"src":"11229:15:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$12418_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":13089,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11229:17:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":13090,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11247:11:43","memberName":"superTokens","nodeType":"MemberAccess","referencedDeclaration":12388,"src":"11229:29:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":13092,"indexExpression":{"id":13091,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13083,"src":"11259:11:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11229:42:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":13087,"id":13093,"nodeType":"Return","src":"11222:49:43"}]},"id":13095,"implemented":true,"kind":"function","modifiers":[],"name":"_isSuperTokensSupported","nameLocation":"11124:23:43","nodeType":"FunctionDefinition","parameters":{"id":13084,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13083,"mutability":"mutable","name":"_superToken","nameLocation":"11165:11:43","nodeType":"VariableDeclaration","scope":13095,"src":"11157:19:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13082,"name":"address","nodeType":"ElementaryTypeName","src":"11157:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11147:35:43"},"returnParameters":{"id":13087,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13086,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13095,"src":"11206:4:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13085,"name":"bool","nodeType":"ElementaryTypeName","src":"11206:4:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"11205:6:43"},"scope":13307,"src":"11115:163:43","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":13104,"nodeType":"Block","src":"11338:54:43","statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13100,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12430,"src":"11355:15:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$12418_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":13101,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11355:17:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":13102,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11373:12:43","memberName":"isBPSEnabled","nodeType":"MemberAccess","referencedDeclaration":12378,"src":"11355:30:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":13099,"id":13103,"nodeType":"Return","src":"11348:37:43"}]},"id":13105,"implemented":true,"kind":"function","modifiers":[],"name":"_isBPSEnabled","nameLocation":"11293:13:43","nodeType":"FunctionDefinition","parameters":{"id":13096,"nodeType":"ParameterList","parameters":[],"src":"11306:2:43"},"returnParameters":{"id":13099,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13098,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13105,"src":"11332:4:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13097,"name":"bool","nodeType":"ElementaryTypeName","src":"11332:4:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"11331:6:43"},"scope":13307,"src":"11284:108:43","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":13116,"nodeType":"Block","src":"11453:52:43","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13110,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12430,"src":"11470:15:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$12418_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":13111,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11470:17:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":13112,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11488:3:43","memberName":"bps","nodeType":"MemberAccess","referencedDeclaration":12372,"src":"11470:21:43","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14952_storage","typeString":"struct IterableMappingBPS.Map storage ref"}},"id":13113,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11492:4:43","memberName":"size","nodeType":"MemberAccess","referencedDeclaration":14998,"src":"11470:26:43","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Map_$14952_storage_ptr_$returns$_t_uint256_$attached_to$_t_struct$_Map_$14952_storage_ptr_$","typeString":"function (struct IterableMappingBPS.Map storage pointer) view returns (uint256)"}},"id":13114,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11470:28:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13109,"id":13115,"nodeType":"Return","src":"11463:35:43"}]},"id":13117,"implemented":true,"kind":"function","modifiers":[],"name":"_getBPSSize","nameLocation":"11407:11:43","nodeType":"FunctionDefinition","parameters":{"id":13106,"nodeType":"ParameterList","parameters":[],"src":"11418:2:43"},"returnParameters":{"id":13109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13108,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13117,"src":"11444:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13107,"name":"uint256","nodeType":"ElementaryTypeName","src":"11444:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11443:9:43"},"scope":13307,"src":"11398:107:43","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":13149,"nodeType":"Block","src":"11618:288:43","statements":[{"assignments":[13127,13129,13131],"declarations":[{"constant":false,"id":13127,"mutability":"mutable","name":"bps","nameLocation":"11649:3:43","nodeType":"VariableDeclaration","scope":13149,"src":"11642:10:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":13126,"name":"uint16","nodeType":"ElementaryTypeName","src":"11642:6:43","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":13129,"mutability":"mutable","name":"flowRateLowerBound","nameLocation":"11673:18:43","nodeType":"VariableDeclaration","scope":13149,"src":"11666:25:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":13128,"name":"uint96","nodeType":"ElementaryTypeName","src":"11666:6:43","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":13131,"mutability":"mutable","name":"flowRateUpperBound","nameLocation":"11712:18:43","nodeType":"VariableDeclaration","scope":13149,"src":"11705:25:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":13130,"name":"uint96","nodeType":"ElementaryTypeName","src":"11705:6:43","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"id":13135,"initialValue":{"arguments":[{"id":13133,"name":"_tag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13121,"src":"11755:4:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13132,"name":"_getBPSData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13180,"src":"11743:11:43","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint16_$_t_uint96_$_t_uint96_$","typeString":"function (uint256) view returns (uint16,uint96,uint96)"}},"id":13134,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11743:17:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint16_$_t_uint96_$_t_uint96_$","typeString":"tuple(uint16,uint96,uint96)"}},"nodeType":"VariableDeclarationStatement","src":"11628:132:43"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint96","typeString":"uint96"},"id":13138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13136,"name":"_flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13119,"src":"11775:9:43","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":13137,"name":"flowRateLowerBound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13129,"src":"11787:18:43","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"11775:30:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint96","typeString":"uint96"},"id":13141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13139,"name":"_flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13119,"src":"11809:9:43","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":13140,"name":"flowRateUpperBound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13131,"src":"11822:18:43","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"11809:31:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11775:65:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13146,"nodeType":"IfStatement","src":"11771:107:43","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":13143,"name":"InvalidFlowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12339,"src":"11861:15:43","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":13144,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11861:17:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13145,"nodeType":"RevertStatement","src":"11854:24:43"}},{"expression":{"id":13147,"name":"bps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13127,"src":"11896:3:43","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"functionReturnParameters":13125,"id":13148,"nodeType":"Return","src":"11889:10:43"}]},"id":13150,"implemented":true,"kind":"function","modifiers":[],"name":"_getValidBPS","nameLocation":"11520:12:43","nodeType":"FunctionDefinition","parameters":{"id":13122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13119,"mutability":"mutable","name":"_flowRate","nameLocation":"11549:9:43","nodeType":"VariableDeclaration","scope":13150,"src":"11542:16:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":13118,"name":"uint96","nodeType":"ElementaryTypeName","src":"11542:6:43","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":13121,"mutability":"mutable","name":"_tag","nameLocation":"11576:4:43","nodeType":"VariableDeclaration","scope":13150,"src":"11568:12:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13120,"name":"uint256","nodeType":"ElementaryTypeName","src":"11568:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11532:54:43"},"returnParameters":{"id":13125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13124,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13150,"src":"11610:6:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":13123,"name":"uint16","nodeType":"ElementaryTypeName","src":"11610:6:43","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"11609:8:43"},"scope":13307,"src":"11511:395:43","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":13179,"nodeType":"Block","src":"12008:156:43","statements":[{"assignments":[13163],"declarations":[{"constant":false,"id":13163,"mutability":"mutable","name":"data","nameLocation":"12042:4:43","nodeType":"VariableDeclaration","scope":13179,"src":"12018:28:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_BasisPointsRange_$14935_memory_ptr","typeString":"struct BasisPointsRange"},"typeName":{"id":13162,"nodeType":"UserDefinedTypeName","pathNode":{"id":13161,"name":"BasisPointsRange","nameLocations":["12018:16:43"],"nodeType":"IdentifierPath","referencedDeclaration":14935,"src":"12018:16:43"},"referencedDeclaration":14935,"src":"12018:16:43","typeDescriptions":{"typeIdentifier":"t_struct$_BasisPointsRange_$14935_storage_ptr","typeString":"struct BasisPointsRange"}},"visibility":"internal"}],"id":13170,"initialValue":{"arguments":[{"id":13168,"name":"_tag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13152,"src":"12075:4:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13164,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12430,"src":"12049:15:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$12418_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":13165,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12049:17:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":13166,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12067:3:43","memberName":"bps","nodeType":"MemberAccess","referencedDeclaration":12372,"src":"12049:21:43","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14952_storage","typeString":"struct IterableMappingBPS.Map storage ref"}},"id":13167,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12071:3:43","memberName":"get","nodeType":"MemberAccess","referencedDeclaration":14969,"src":"12049:25:43","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Map_$14952_storage_ptr_$_t_uint256_$returns$_t_struct$_BasisPointsRange_$14935_memory_ptr_$attached_to$_t_struct$_Map_$14952_storage_ptr_$","typeString":"function (struct IterableMappingBPS.Map storage pointer,uint256) view returns (struct BasisPointsRange memory)"}},"id":13169,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12049:31:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_BasisPointsRange_$14935_memory_ptr","typeString":"struct BasisPointsRange memory"}},"nodeType":"VariableDeclarationStatement","src":"12018:62:43"},{"expression":{"components":[{"expression":{"id":13171,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13163,"src":"12098:4:43","typeDescriptions":{"typeIdentifier":"t_struct$_BasisPointsRange_$14935_memory_ptr","typeString":"struct BasisPointsRange memory"}},"id":13172,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12103:3:43","memberName":"bps","nodeType":"MemberAccess","referencedDeclaration":14930,"src":"12098:8:43","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"expression":{"id":13173,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13163,"src":"12108:4:43","typeDescriptions":{"typeIdentifier":"t_struct$_BasisPointsRange_$14935_memory_ptr","typeString":"struct BasisPointsRange memory"}},"id":13174,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12113:18:43","memberName":"flowRateLowerBound","nodeType":"MemberAccess","referencedDeclaration":14932,"src":"12108:23:43","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"expression":{"id":13175,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13163,"src":"12133:4:43","typeDescriptions":{"typeIdentifier":"t_struct$_BasisPointsRange_$14935_memory_ptr","typeString":"struct BasisPointsRange memory"}},"id":13176,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12138:18:43","memberName":"flowRateUpperBound","nodeType":"MemberAccess","referencedDeclaration":14934,"src":"12133:23:43","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"id":13177,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12097:60:43","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint16_$_t_uint96_$_t_uint96_$","typeString":"tuple(uint16,uint96,uint96)"}},"functionReturnParameters":13160,"id":13178,"nodeType":"Return","src":"12090:67:43"}]},"id":13180,"implemented":true,"kind":"function","modifiers":[],"name":"_getBPSData","nameLocation":"11921:11:43","nodeType":"FunctionDefinition","parameters":{"id":13153,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13152,"mutability":"mutable","name":"_tag","nameLocation":"11950:4:43","nodeType":"VariableDeclaration","scope":13180,"src":"11942:12:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13151,"name":"uint256","nodeType":"ElementaryTypeName","src":"11942:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11932:28:43"},"returnParameters":{"id":13160,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13155,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13180,"src":"11984:6:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":13154,"name":"uint16","nodeType":"ElementaryTypeName","src":"11984:6:43","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":13157,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13180,"src":"11992:6:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":13156,"name":"uint96","nodeType":"ElementaryTypeName","src":"11992:6:43","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":13159,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13180,"src":"12000:6:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":13158,"name":"uint96","nodeType":"ElementaryTypeName","src":"12000:6:43","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"src":"11983:24:43"},"scope":13307,"src":"11912:252:43","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":13193,"nodeType":"Block","src":"12234:53:43","statements":[{"expression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13187,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12430,"src":"12251:15:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$12418_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":13188,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12251:17:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":13189,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12269:4:43","memberName":"sbps","nodeType":"MemberAccess","referencedDeclaration":12376,"src":"12251:22:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint16_$","typeString":"mapping(address => uint16)"}},"id":13191,"indexExpression":{"id":13190,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13182,"src":"12274:5:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12251:29:43","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"functionReturnParameters":13186,"id":13192,"nodeType":"Return","src":"12244:36:43"}]},"id":13194,"implemented":true,"kind":"function","modifiers":[],"name":"_getSBPS","nameLocation":"12179:8:43","nodeType":"FunctionDefinition","parameters":{"id":13183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13182,"mutability":"mutable","name":"_user","nameLocation":"12196:5:43","nodeType":"VariableDeclaration","scope":13194,"src":"12188:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13181,"name":"address","nodeType":"ElementaryTypeName","src":"12188:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12187:15:43"},"returnParameters":{"id":13186,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13185,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13194,"src":"12226:6:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":13184,"name":"uint16","nodeType":"ElementaryTypeName","src":"12226:6:43","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"12225:8:43"},"scope":13307,"src":"12170:117:43","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":13244,"nodeType":"Block","src":"12423:429:43","statements":[{"assignments":[13205],"declarations":[{"constant":false,"id":13205,"mutability":"mutable","name":"iSuperToken","nameLocation":"12445:11:43","nodeType":"VariableDeclaration","scope":13244,"src":"12433:23:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":13204,"nodeType":"UserDefinedTypeName","pathNode":{"id":13203,"name":"ISuperToken","nameLocations":["12433:11:43"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"12433:11:43"},"referencedDeclaration":7015,"src":"12433:11:43","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"}],"id":13209,"initialValue":{"arguments":[{"id":13207,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13196,"src":"12471:11:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13206,"name":"ISuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7015,"src":"12459:11:43","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISuperToken_$7015_$","typeString":"type(contract ISuperToken)"}},"id":13208,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12459:24:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"nodeType":"VariableDeclarationStatement","src":"12433:50:43"},{"assignments":[13211],"declarations":[{"constant":false,"id":13211,"mutability":"mutable","name":"newBufferAmount","nameLocation":"12501:15:43","nodeType":"VariableDeclaration","scope":13244,"src":"12493:23:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13210,"name":"uint256","nodeType":"ElementaryTypeName","src":"12493:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13216,"initialValue":{"arguments":[{"id":13214,"name":"_newFlowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13198,"src":"12570:12:43","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int96","typeString":"int96"}],"expression":{"id":13212,"name":"iSuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13205,"src":"12519:11:43","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"id":13213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12531:25:43","memberName":"getBufferAmountByFlowRate","nodeType":"MemberAccess","referencedDeclaration":3395,"src":"12519:37:43","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_ISuperToken_$7015_$_t_int96_$returns$_t_uint256_$attached_to$_t_contract$_ISuperToken_$7015_$","typeString":"function (contract ISuperToken,int96) view returns (uint256)"}},"id":13215,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12519:73:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12493:99:43"},{"assignments":[13218],"declarations":[{"constant":false,"id":13218,"mutability":"mutable","name":"contractNetFlowRate","nameLocation":"12608:19:43","nodeType":"VariableDeclaration","scope":13244,"src":"12602:25:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":13217,"name":"int96","nodeType":"ElementaryTypeName","src":"12602:5:43","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"id":13226,"initialValue":{"arguments":[{"arguments":[{"id":13223,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"12665:4:43","typeDescriptions":{"typeIdentifier":"t_contract$_LibControl_$13307","typeString":"library LibControl"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LibControl_$13307","typeString":"library LibControl"}],"id":13222,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12657:7:43","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13221,"name":"address","nodeType":"ElementaryTypeName","src":"12657:7:43","typeDescriptions":{}}},"id":13224,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12657:13:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":13219,"name":"iSuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13205,"src":"12630:11:43","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"id":13220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12642:14:43","memberName":"getNetFlowRate","nodeType":"MemberAccess","referencedDeclaration":3339,"src":"12630:26:43","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_ISuperToken_$7015_$_t_address_$returns$_t_int96_$attached_to$_t_contract$_ISuperToken_$7015_$","typeString":"function (contract ISuperToken,address) view returns (int96)"}},"id":13225,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12630:41:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"VariableDeclarationStatement","src":"12602:69:43"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13227,"name":"newBufferAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13211,"src":"12701:15:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13240,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_int96","typeString":"int96"},"id":13234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13232,"name":"contractNetFlowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13218,"src":"12747:19:43","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":13233,"name":"_newFlowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13198,"src":"12769:12:43","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"src":"12747:34:43","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int96","typeString":"int96"}],"id":13231,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12740:6:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"},"typeName":{"id":13230,"name":"uint96","nodeType":"ElementaryTypeName","src":"12740:6:43","typeDescriptions":{}}},"id":13235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12740:42:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":13229,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12732:7:43","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":13228,"name":"uint256","nodeType":"ElementaryTypeName","src":"12732:7:43","typeDescriptions":{}}},"id":13236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12732:51:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13237,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12430,"src":"12802:15:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$12418_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":13238,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12802:17:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":13239,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12820:24:43","memberName":"stBufferDurationInSecond","nodeType":"MemberAccess","referencedDeclaration":12384,"src":"12802:42:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12732:112:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":13241,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12731:114:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12701:144:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13202,"id":13243,"nodeType":"Return","src":"12682:163:43"}]},"id":13245,"implemented":true,"kind":"function","modifiers":[],"name":"_getNewBufferedAppBalance","nameLocation":"12302:25:43","nodeType":"FunctionDefinition","parameters":{"id":13199,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13196,"mutability":"mutable","name":"_superToken","nameLocation":"12345:11:43","nodeType":"VariableDeclaration","scope":13245,"src":"12337:19:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13195,"name":"address","nodeType":"ElementaryTypeName","src":"12337:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13198,"mutability":"mutable","name":"_newFlowRate","nameLocation":"12372:12:43","nodeType":"VariableDeclaration","scope":13245,"src":"12366:18:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":13197,"name":"int96","nodeType":"ElementaryTypeName","src":"12366:5:43","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"12327:63:43"},"returnParameters":{"id":13202,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13201,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13245,"src":"12414:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13200,"name":"uint256","nodeType":"ElementaryTypeName","src":"12414:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12413:9:43"},"scope":13307,"src":"12293:559:43","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":13273,"nodeType":"Block","src":"12981:226:43","statements":[{"assignments":[13255],"declarations":[{"constant":false,"id":13255,"mutability":"mutable","name":"contractBalance","nameLocation":"12999:15:43","nodeType":"VariableDeclaration","scope":13273,"src":"12991:23:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13254,"name":"uint256","nodeType":"ElementaryTypeName","src":"12991:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13265,"initialValue":{"arguments":[{"arguments":[{"id":13262,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"13073:4:43","typeDescriptions":{"typeIdentifier":"t_contract$_LibControl_$13307","typeString":"library LibControl"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LibControl_$13307","typeString":"library LibControl"}],"id":13261,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13065:7:43","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13260,"name":"address","nodeType":"ElementaryTypeName","src":"13065:7:43","typeDescriptions":{}}},"id":13263,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13065:13:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[{"id":13257,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13247,"src":"13029:11:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13256,"name":"ISuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7015,"src":"13017:11:43","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISuperToken_$7015_$","typeString":"type(contract ISuperToken)"}},"id":13258,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13017:24:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"id":13259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13042:9:43","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":6681,"src":"13017:34:43","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":13264,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13017:71:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12991:97:43"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13266,"name":"contractBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13255,"src":"13118:15:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"arguments":[{"id":13268,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13247,"src":"13174:11:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13269,"name":"_newFlowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13249,"src":"13187:12:43","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_int96","typeString":"int96"}],"id":13267,"name":"_getNewBufferedAppBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13245,"src":"13148:25:43","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_int96_$returns$_t_uint256_$","typeString":"function (address,int96) view returns (uint256)"}},"id":13270,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13148:52:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13118:82:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":13253,"id":13272,"nodeType":"Return","src":"13099:101:43"}]},"id":13274,"implemented":true,"kind":"function","modifiers":[],"name":"_isNewFlowRateAllowed","nameLocation":"12867:21:43","nodeType":"FunctionDefinition","parameters":{"id":13250,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13247,"mutability":"mutable","name":"_superToken","nameLocation":"12906:11:43","nodeType":"VariableDeclaration","scope":13274,"src":"12898:19:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13246,"name":"address","nodeType":"ElementaryTypeName","src":"12898:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13249,"mutability":"mutable","name":"_newFlowRate","nameLocation":"12933:12:43","nodeType":"VariableDeclaration","scope":13274,"src":"12927:18:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":13248,"name":"int96","nodeType":"ElementaryTypeName","src":"12927:5:43","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"12888:63:43"},"returnParameters":{"id":13253,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13252,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13274,"src":"12975:4:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13251,"name":"bool","nodeType":"ElementaryTypeName","src":"12975:4:43","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"12974:6:43"},"scope":13307,"src":"12858:349:43","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":13291,"nodeType":"Block","src":"13326:68:43","statements":[{"expression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13283,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12430,"src":"13343:15:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$12418_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":13284,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13343:17:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":13285,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13361:6:43","memberName":"assets","nodeType":"MemberAccess","referencedDeclaration":12413,"src":"13343:24:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":13287,"indexExpression":{"id":13286,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13276,"src":"13368:5:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13343:31:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":13289,"indexExpression":{"id":13288,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13278,"src":"13375:11:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13343:44:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13282,"id":13290,"nodeType":"Return","src":"13336:51:43"}]},"id":13292,"implemented":true,"kind":"function","modifiers":[],"name":"_getAssetUser","nameLocation":"13222:13:43","nodeType":"FunctionDefinition","parameters":{"id":13279,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13276,"mutability":"mutable","name":"_user","nameLocation":"13253:5:43","nodeType":"VariableDeclaration","scope":13292,"src":"13245:13:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13275,"name":"address","nodeType":"ElementaryTypeName","src":"13245:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13278,"mutability":"mutable","name":"_superToken","nameLocation":"13276:11:43","nodeType":"VariableDeclaration","scope":13292,"src":"13268:19:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13277,"name":"address","nodeType":"ElementaryTypeName","src":"13268:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"13235:58:43"},"returnParameters":{"id":13282,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13281,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13292,"src":"13317:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13280,"name":"uint256","nodeType":"ElementaryTypeName","src":"13317:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13316:9:43"},"scope":13307,"src":"13213:181:43","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":13305,"nodeType":"Block","src":"13491:66:43","statements":[{"expression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13299,"name":"_storageControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12430,"src":"13508:15:43","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$12418_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":13300,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13508:17:43","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":13301,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13526:11:43","memberName":"totalAssets","nodeType":"MemberAccess","referencedDeclaration":12417,"src":"13508:29:43","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":13303,"indexExpression":{"id":13302,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13294,"src":"13538:11:43","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13508:42:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13298,"id":13304,"nodeType":"Return","src":"13501:49:43"}]},"id":13306,"implemented":true,"kind":"function","modifiers":[],"name":"_getAssetTotal","nameLocation":"13409:14:43","nodeType":"FunctionDefinition","parameters":{"id":13295,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13294,"mutability":"mutable","name":"_superToken","nameLocation":"13441:11:43","nodeType":"VariableDeclaration","scope":13306,"src":"13433:19:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13293,"name":"address","nodeType":"ElementaryTypeName","src":"13433:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"13423:35:43"},"returnParameters":{"id":13298,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13297,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13306,"src":"13482:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13296,"name":"uint256","nodeType":"ElementaryTypeName","src":"13482:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13481:9:43"},"scope":13307,"src":"13400:157:43","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":13308,"src":"702:12899:43","usedErrors":[]}],"src":"36:13635:43"},"id":43},"contracts/libraries/core/LibFlow.sol":{"ast":{"absolutePath":"contracts/libraries/core/LibFlow.sol","exportedSymbols":{"ContractError":[12341],"HasActiveFlow":[13328],"ISuperToken":[7015],"InsufficientFunds":[13320],"InsufficientLifespan1":[13322],"InsufficientLifespan2":[13324],"InsufficientLifespan3":[13326],"InvalidBalance1":[13330],"InvalidBalance2":[13332],"LibControl":[13307],"LibFlow":[14322],"LibSession":[14923],"SuperTokenV1Library":[5145]},"id":14323,"license":"BUSL-1.1","nodeType":"SourceUnit","nodes":[{"id":13309,"literals":["solidity","^","0.8",".9"],"nodeType":"PragmaDirective","src":"36:23:44"},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol","file":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol","id":13311,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14323,"sourceUnit":7668,"src":"61:115:44","symbolAliases":[{"foreign":{"id":13310,"name":"ISuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7015,"src":"69:11:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol","file":"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol","id":13313,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14323,"sourceUnit":5146,"src":"177:114:44","symbolAliases":[{"foreign":{"id":13312,"name":"SuperTokenV1Library","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5145,"src":"185:19:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/libraries/core/LibControl.sol","file":"./LibControl.sol","id":13316,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14323,"sourceUnit":13308,"src":"293:59:44","symbolAliases":[{"foreign":{"id":13314,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"301:10:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":13315,"name":"ContractError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12341,"src":"313:13:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/libraries/core/LibSession.sol","file":"./LibSession.sol","id":13318,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14323,"sourceUnit":14924,"src":"353:44:44","symbolAliases":[{"foreign":{"id":13317,"name":"LibSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14923,"src":"361:10:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"errorSelector":"356680b7","id":13320,"name":"InsufficientFunds","nameLocation":"439:17:44","nodeType":"ErrorDefinition","parameters":{"id":13319,"nodeType":"ParameterList","parameters":[],"src":"456:2:44"},"src":"433:26:44"},{"errorSelector":"cdd3529e","id":13322,"name":"InsufficientLifespan1","nameLocation":"466:21:44","nodeType":"ErrorDefinition","parameters":{"id":13321,"nodeType":"ParameterList","parameters":[],"src":"487:2:44"},"src":"460:30:44"},{"errorSelector":"6c451f0c","id":13324,"name":"InsufficientLifespan2","nameLocation":"497:21:44","nodeType":"ErrorDefinition","parameters":{"id":13323,"nodeType":"ParameterList","parameters":[],"src":"518:2:44"},"src":"491:30:44"},{"errorSelector":"3661e75b","id":13326,"name":"InsufficientLifespan3","nameLocation":"528:21:44","nodeType":"ErrorDefinition","parameters":{"id":13325,"nodeType":"ParameterList","parameters":[],"src":"549:2:44"},"src":"522:30:44"},{"errorSelector":"d18923ab","id":13328,"name":"HasActiveFlow","nameLocation":"559:13:44","nodeType":"ErrorDefinition","parameters":{"id":13327,"nodeType":"ParameterList","parameters":[],"src":"572:2:44"},"src":"553:22:44"},{"errorSelector":"0a2005fa","id":13330,"name":"InvalidBalance1","nameLocation":"582:15:44","nodeType":"ErrorDefinition","parameters":{"id":13329,"nodeType":"ParameterList","parameters":[],"src":"597:2:44"},"src":"576:24:44"},{"errorSelector":"2fe0888f","id":13332,"name":"InvalidBalance2","nameLocation":"607:15:44","nodeType":"ErrorDefinition","parameters":{"id":13331,"nodeType":"ParameterList","parameters":[],"src":"622:2:44"},"src":"601:24:44"},{"abstract":false,"baseContracts":[],"canonicalName":"LibFlow","contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":14322,"linearizedBaseContracts":[14322],"name":"LibFlow","nameLocation":"635:7:44","nodeType":"ContractDefinition","nodes":[{"global":false,"id":13336,"libraryName":{"id":13333,"name":"SuperTokenV1Library","nameLocations":["655:19:44"],"nodeType":"IdentifierPath","referencedDeclaration":5145,"src":"655:19:44"},"nodeType":"UsingForDirective","src":"649:42:44","typeName":{"id":13335,"nodeType":"UserDefinedTypeName","pathNode":{"id":13334,"name":"ISuperToken","nameLocations":["679:11:44"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"679:11:44"},"referencedDeclaration":7015,"src":"679:11:44","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}},{"constant":true,"id":13341,"mutability":"constant","name":"STORAGE_POSITION_FLOW","nameLocation":"714:21:44","nodeType":"VariableDeclaration","scope":14322,"src":"697:61:44","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13337,"name":"bytes32","nodeType":"ElementaryTypeName","src":"697:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"64732e666c6f77","id":13339,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"748:9:44","typeDescriptions":{"typeIdentifier":"t_stringliteral_2da2adfb54fd91bfb31e0d805792077ddcd5b0427b14a56397e2f3cc190c8830","typeString":"literal_string \"ds.flow\""},"value":"ds.flow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_2da2adfb54fd91bfb31e0d805792077ddcd5b0427b14a56397e2f3cc190c8830","typeString":"literal_string \"ds.flow\""}],"id":13338,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"738:9:44","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":13340,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"738:20:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"canonicalName":"LibFlow.FlowRecord","id":13356,"members":[{"constant":false,"id":13343,"mutability":"mutable","name":"controlNonce","nameLocation":"801:12:44","nodeType":"VariableDeclaration","scope":13356,"src":"793:20:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13342,"name":"uint256","nodeType":"ElementaryTypeName","src":"793:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13345,"mutability":"mutable","name":"receiver","nameLocation":"857:8:44","nodeType":"VariableDeclaration","scope":13356,"src":"849:16:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13344,"name":"address","nodeType":"ElementaryTypeName","src":"849:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13347,"mutability":"mutable","name":"sessionNonce","nameLocation":"883:12:44","nodeType":"VariableDeclaration","scope":13356,"src":"875:20:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13346,"name":"uint256","nodeType":"ElementaryTypeName","src":"875:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13349,"mutability":"mutable","name":"timestampIncrease","nameLocation":"913:17:44","nodeType":"VariableDeclaration","scope":13356,"src":"905:25:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13348,"name":"uint256","nodeType":"ElementaryTypeName","src":"905:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13351,"mutability":"mutable","name":"timestampDecrease","nameLocation":"999:17:44","nodeType":"VariableDeclaration","scope":13356,"src":"991:25:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13350,"name":"uint256","nodeType":"ElementaryTypeName","src":"991:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13353,"mutability":"mutable","name":"taskId","nameLocation":"1097:6:44","nodeType":"VariableDeclaration","scope":13356,"src":"1089:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13352,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1089:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":13355,"mutability":"mutable","name":"isBalanceSettled","nameLocation":"1160:16:44","nodeType":"VariableDeclaration","scope":13356,"src":"1155:21:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13354,"name":"bool","nodeType":"ElementaryTypeName","src":"1155:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"FlowRecord","nameLocation":"772:10:44","nodeType":"StructDefinition","scope":14322,"src":"765:418:44","visibility":"public"},{"canonicalName":"LibFlow.StorageFlow","id":13382,"members":[{"constant":false,"id":13362,"mutability":"mutable","name":"flowNonce","nameLocation":"1439:9:44","nodeType":"VariableDeclaration","scope":13382,"src":"1391:57:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":13361,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":13357,"name":"address","nodeType":"ElementaryTypeName","src":"1399:7:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1391:47:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":13360,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":13358,"name":"address","nodeType":"ElementaryTypeName","src":"1418:7:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1410:27:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":13359,"name":"uint256","nodeType":"ElementaryTypeName","src":"1429:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"internal"},{"constant":false,"id":13371,"mutability":"mutable","name":"flowRecord","nameLocation":"1574:10:44","nodeType":"VariableDeclaration","scope":13382,"src":"1503:81:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibFlow.FlowRecord)))"},"typeName":{"id":13370,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":13363,"name":"address","nodeType":"ElementaryTypeName","src":"1511:7:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1503:70:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibFlow.FlowRecord)))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":13369,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":13364,"name":"address","nodeType":"ElementaryTypeName","src":"1530:7:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1522:50:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibFlow.FlowRecord))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":13368,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":13365,"name":"uint256","nodeType":"ElementaryTypeName","src":"1549:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1541:30:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$","typeString":"mapping(uint256 => struct LibFlow.FlowRecord)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":13367,"nodeType":"UserDefinedTypeName","pathNode":{"id":13366,"name":"FlowRecord","nameLocations":["1560:10:44"],"nodeType":"IdentifierPath","referencedDeclaration":13356,"src":"1560:10:44"},"referencedDeclaration":13356,"src":"1560:10:44","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$13356_storage_ptr","typeString":"struct LibFlow.FlowRecord"}}}}},"visibility":"internal"},{"constant":false,"id":13377,"mutability":"mutable","name":"deposits","nameLocation":"1704:8:44","nodeType":"VariableDeclaration","scope":13382,"src":"1656:56:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":13376,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":13372,"name":"address","nodeType":"ElementaryTypeName","src":"1664:7:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1656:47:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":13375,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":13373,"name":"address","nodeType":"ElementaryTypeName","src":"1683:7:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1675:27:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":13374,"name":"uint256","nodeType":"ElementaryTypeName","src":"1694:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"internal"},{"constant":false,"id":13381,"mutability":"mutable","name":"totalDeposits","nameLocation":"1794:13:44","nodeType":"VariableDeclaration","scope":13382,"src":"1766:41:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":13380,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":13378,"name":"address","nodeType":"ElementaryTypeName","src":"1774:7:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1766:27:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":13379,"name":"uint256","nodeType":"ElementaryTypeName","src":"1785:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"}],"name":"StorageFlow","nameLocation":"1196:11:44","nodeType":"StructDefinition","scope":14322,"src":"1189:656:44","visibility":"public"},{"body":{"id":13393,"nodeType":"Block","src":"1921:117:44","statements":[{"assignments":[13389],"declarations":[{"constant":false,"id":13389,"mutability":"mutable","name":"position","nameLocation":"1939:8:44","nodeType":"VariableDeclaration","scope":13393,"src":"1931:16:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13388,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1931:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":13391,"initialValue":{"id":13390,"name":"STORAGE_POSITION_FLOW","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13341,"src":"1950:21:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"1931:40:44"},{"AST":{"nodeType":"YulBlock","src":"1990:42:44","statements":[{"nodeType":"YulAssignment","src":"2004:18:44","value":{"name":"position","nodeType":"YulIdentifier","src":"2014:8:44"},"variableNames":[{"name":"s.slot","nodeType":"YulIdentifier","src":"2004:6:44"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":13389,"isOffset":false,"isSlot":false,"src":"2014:8:44","valueSize":1},{"declaration":13386,"isOffset":false,"isSlot":true,"src":"2004:6:44","suffix":"slot","valueSize":1}],"id":13392,"nodeType":"InlineAssembly","src":"1981:51:44"}]},"id":13394,"implemented":true,"kind":"function","modifiers":[],"name":"_storageFlow","nameLocation":"1860:12:44","nodeType":"FunctionDefinition","parameters":{"id":13383,"nodeType":"ParameterList","parameters":[],"src":"1872:2:44"},"returnParameters":{"id":13387,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13386,"mutability":"mutable","name":"s","nameLocation":"1918:1:44","nodeType":"VariableDeclaration","scope":13394,"src":"1898:21:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$13382_storage_ptr","typeString":"struct LibFlow.StorageFlow"},"typeName":{"id":13385,"nodeType":"UserDefinedTypeName","pathNode":{"id":13384,"name":"StorageFlow","nameLocations":["1898:11:44"],"nodeType":"IdentifierPath","referencedDeclaration":13382,"src":"1898:11:44"},"referencedDeclaration":13382,"src":"1898:11:44","typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$13382_storage_ptr","typeString":"struct LibFlow.StorageFlow"}},"visibility":"internal"}],"src":"1897:23:44"},"scope":14322,"src":"1851:187:44","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":13433,"nodeType":"Block","src":"2203:268:44","statements":[{"expression":{"arguments":[{"expression":{"id":13405,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2264:3:44","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2268:6:44","memberName":"sender","nodeType":"MemberAccess","src":"2264:10:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":13409,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2296:4:44","typeDescriptions":{"typeIdentifier":"t_contract$_LibFlow_$14322","typeString":"library LibFlow"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LibFlow_$14322","typeString":"library LibFlow"}],"id":13408,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2288:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13407,"name":"address","nodeType":"ElementaryTypeName","src":"2288:7:44","typeDescriptions":{}}},"id":13410,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2288:13:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13411,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13398,"src":"2315:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":13402,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13396,"src":"2225:11:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13401,"name":"ISuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7015,"src":"2213:11:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISuperToken_$7015_$","typeString":"type(contract ISuperToken)"}},"id":13403,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2213:24:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"id":13404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2238:12:44","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":6731,"src":"2213:37:44","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":13412,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2213:119:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13413,"nodeType":"ExpressionStatement","src":"2213:119:44"},{"expression":{"id":13423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13414,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13394,"src":"2343:12:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$13382_storage_ptr_$","typeString":"function () pure returns (struct LibFlow.StorageFlow storage pointer)"}},"id":13415,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2343:14:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$13382_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":13416,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2358:8:44","memberName":"deposits","nodeType":"MemberAccess","referencedDeclaration":13377,"src":"2343:23:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":13419,"indexExpression":{"expression":{"id":13417,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2367:3:44","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2371:6:44","memberName":"sender","nodeType":"MemberAccess","src":"2367:10:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2343:35:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":13421,"indexExpression":{"id":13420,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13396,"src":"2379:11:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2343:48:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":13422,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13398,"src":"2395:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2343:59:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13424,"nodeType":"ExpressionStatement","src":"2343:59:44"},{"expression":{"id":13431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13425,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13394,"src":"2412:12:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$13382_storage_ptr_$","typeString":"function () pure returns (struct LibFlow.StorageFlow storage pointer)"}},"id":13426,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2412:14:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$13382_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":13427,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2427:13:44","memberName":"totalDeposits","nodeType":"MemberAccess","referencedDeclaration":13381,"src":"2412:28:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":13429,"indexExpression":{"id":13428,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13396,"src":"2441:11:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2412:41:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":13430,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13398,"src":"2457:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2412:52:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13432,"nodeType":"ExpressionStatement","src":"2412:52:44"}]},"id":13434,"implemented":true,"kind":"function","modifiers":[],"name":"_depositSuperToken","nameLocation":"2137:18:44","nodeType":"FunctionDefinition","parameters":{"id":13399,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13396,"mutability":"mutable","name":"_superToken","nameLocation":"2164:11:44","nodeType":"VariableDeclaration","scope":13434,"src":"2156:19:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13395,"name":"address","nodeType":"ElementaryTypeName","src":"2156:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13398,"mutability":"mutable","name":"_amount","nameLocation":"2185:7:44","nodeType":"VariableDeclaration","scope":13434,"src":"2177:15:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13397,"name":"uint256","nodeType":"ElementaryTypeName","src":"2177:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2155:38:44"},"returnParameters":{"id":13400,"nodeType":"ParameterList","parameters":[],"src":"2203:0:44"},"scope":14322,"src":"2128:343:44","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":13497,"nodeType":"Block","src":"2575:597:44","statements":[{"expression":{"arguments":[{"expression":{"id":13442,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2690:3:44","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2694:6:44","memberName":"sender","nodeType":"MemberAccess","src":"2690:10:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13444,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13436,"src":"2702:11:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":13441,"name":"_setRemainingBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13596,"src":"2669:20:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":13445,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2669:45:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13446,"nodeType":"ExpressionStatement","src":"2669:45:44"},{"assignments":[13448],"declarations":[{"constant":false,"id":13448,"mutability":"mutable","name":"amountRemaining","nameLocation":"2747:15:44","nodeType":"VariableDeclaration","scope":13497,"src":"2739:23:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13447,"name":"uint256","nodeType":"ElementaryTypeName","src":"2739:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13457,"initialValue":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13449,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13394,"src":"2765:12:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$13382_storage_ptr_$","typeString":"function () pure returns (struct LibFlow.StorageFlow storage pointer)"}},"id":13450,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2765:14:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$13382_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":13451,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2780:8:44","memberName":"deposits","nodeType":"MemberAccess","referencedDeclaration":13377,"src":"2765:23:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":13454,"indexExpression":{"expression":{"id":13452,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2789:3:44","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13453,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2793:6:44","memberName":"sender","nodeType":"MemberAccess","src":"2789:10:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2765:35:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":13456,"indexExpression":{"id":13455,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13436,"src":"2814:11:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2765:70:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2739:96:44"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13458,"name":"amountRemaining","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13448,"src":"2850:15:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":13459,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13438,"src":"2868:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2850:25:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13464,"nodeType":"IfStatement","src":"2846:57:44","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":13461,"name":"InsufficientFunds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13320,"src":"2884:17:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":13462,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2884:19:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13463,"nodeType":"RevertStatement","src":"2877:26:44"}},{"expression":{"id":13474,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13465,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13394,"src":"2914:12:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$13382_storage_ptr_$","typeString":"function () pure returns (struct LibFlow.StorageFlow storage pointer)"}},"id":13466,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2914:14:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$13382_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":13467,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2929:8:44","memberName":"deposits","nodeType":"MemberAccess","referencedDeclaration":13377,"src":"2914:23:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":13470,"indexExpression":{"expression":{"id":13468,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2938:3:44","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2942:6:44","memberName":"sender","nodeType":"MemberAccess","src":"2938:10:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2914:35:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":13472,"indexExpression":{"id":13471,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13436,"src":"2950:11:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2914:48:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":13473,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13438,"src":"2966:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2914:59:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13475,"nodeType":"ExpressionStatement","src":"2914:59:44"},{"expression":{"id":13482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13476,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13394,"src":"2983:12:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$13382_storage_ptr_$","typeString":"function () pure returns (struct LibFlow.StorageFlow storage pointer)"}},"id":13477,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2983:14:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$13382_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":13478,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2998:13:44","memberName":"totalDeposits","nodeType":"MemberAccess","referencedDeclaration":13381,"src":"2983:28:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":13480,"indexExpression":{"id":13479,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13436,"src":"3012:11:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2983:41:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":13481,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13438,"src":"3028:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2983:52:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13483,"nodeType":"ExpressionStatement","src":"2983:52:44"},{"expression":{"arguments":[{"arguments":[{"id":13490,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3105:4:44","typeDescriptions":{"typeIdentifier":"t_contract$_LibFlow_$14322","typeString":"library LibFlow"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LibFlow_$14322","typeString":"library LibFlow"}],"id":13489,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3097:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13488,"name":"address","nodeType":"ElementaryTypeName","src":"3097:7:44","typeDescriptions":{}}},"id":13491,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3097:13:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":13492,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3124:3:44","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3128:6:44","memberName":"sender","nodeType":"MemberAccess","src":"3124:10:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13494,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13438,"src":"3148:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":13485,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13436,"src":"3058:11:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13484,"name":"ISuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7015,"src":"3046:11:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISuperToken_$7015_$","typeString":"type(contract ISuperToken)"}},"id":13486,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3046:24:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"id":13487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3071:12:44","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":6731,"src":"3046:37:44","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":13495,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3046:119:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13496,"nodeType":"ExpressionStatement","src":"3046:119:44"}]},"id":13498,"implemented":true,"kind":"function","modifiers":[],"name":"_withdrawSuperToken","nameLocation":"2486:19:44","nodeType":"FunctionDefinition","parameters":{"id":13439,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13436,"mutability":"mutable","name":"_superToken","nameLocation":"2523:11:44","nodeType":"VariableDeclaration","scope":13498,"src":"2515:19:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13435,"name":"address","nodeType":"ElementaryTypeName","src":"2515:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13438,"mutability":"mutable","name":"_amount","nameLocation":"2552:7:44","nodeType":"VariableDeclaration","scope":13498,"src":"2544:15:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13437,"name":"uint256","nodeType":"ElementaryTypeName","src":"2544:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2505:60:44"},"returnParameters":{"id":13440,"nodeType":"ParameterList","parameters":[],"src":"2575:0:44"},"scope":14322,"src":"2477:695:44","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":13512,"nodeType":"Block","src":"3285:84:44","statements":[{"condition":{"arguments":[{"expression":{"id":13504,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3314:3:44","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13505,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3318:6:44","memberName":"sender","nodeType":"MemberAccess","src":"3314:10:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13506,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13500,"src":"3326:11:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":13503,"name":"_hasActiveFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13860,"src":"3299:14:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":13507,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3299:39:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13511,"nodeType":"IfStatement","src":"3295:67:44","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":13508,"name":"HasActiveFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13328,"src":"3347:13:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":13509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3347:15:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13510,"nodeType":"RevertStatement","src":"3340:22:44"}}]},"id":13513,"implemented":true,"kind":"function","modifiers":[],"name":"_requireNoActiveFlow","nameLocation":"3229:20:44","nodeType":"FunctionDefinition","parameters":{"id":13501,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13500,"mutability":"mutable","name":"_superToken","nameLocation":"3258:11:44","nodeType":"VariableDeclaration","scope":13513,"src":"3250:19:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13499,"name":"address","nodeType":"ElementaryTypeName","src":"3250:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3249:21:44"},"returnParameters":{"id":13502,"nodeType":"ParameterList","parameters":[],"src":"3285:0:44"},"scope":14322,"src":"3220:149:44","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":13595,"nodeType":"Block","src":"3492:878:44","statements":[{"assignments":[13521],"declarations":[{"constant":false,"id":13521,"mutability":"mutable","name":"amountFlowed","nameLocation":"3510:12:44","nodeType":"VariableDeclaration","scope":13595,"src":"3502:20:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13520,"name":"uint256","nodeType":"ElementaryTypeName","src":"3502:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13526,"initialValue":{"arguments":[{"id":13523,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13515,"src":"3542:5:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13524,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13517,"src":"3549:11:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":13522,"name":"_getAmountFlowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13806,"src":"3525:16:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":13525,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3525:36:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3502:59:44"},{"expression":{"id":13535,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13527,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13394,"src":"3572:12:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$13382_storage_ptr_$","typeString":"function () pure returns (struct LibFlow.StorageFlow storage pointer)"}},"id":13528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3572:14:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$13382_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":13529,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3587:8:44","memberName":"deposits","nodeType":"MemberAccess","referencedDeclaration":13377,"src":"3572:23:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":13531,"indexExpression":{"id":13530,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13515,"src":"3596:5:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3572:30:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":13533,"indexExpression":{"id":13532,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13517,"src":"3603:11:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3572:43:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":13534,"name":"amountFlowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13521,"src":"3619:12:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3572:59:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13536,"nodeType":"ExpressionStatement","src":"3572:59:44"},{"expression":{"id":13543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13537,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13394,"src":"3641:12:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$13382_storage_ptr_$","typeString":"function () pure returns (struct LibFlow.StorageFlow storage pointer)"}},"id":13538,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3641:14:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$13382_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":13539,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3656:13:44","memberName":"totalDeposits","nodeType":"MemberAccess","referencedDeclaration":13381,"src":"3641:28:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":13541,"indexExpression":{"id":13540,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13517,"src":"3670:11:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3641:41:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":13542,"name":"amountFlowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13521,"src":"3686:12:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3641:57:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13544,"nodeType":"ExpressionStatement","src":"3641:57:44"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13553,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13545,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13394,"src":"3713:12:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$13382_storage_ptr_$","typeString":"function () pure returns (struct LibFlow.StorageFlow storage pointer)"}},"id":13546,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3713:14:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$13382_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":13547,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3728:8:44","memberName":"deposits","nodeType":"MemberAccess","referencedDeclaration":13377,"src":"3713:23:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":13549,"indexExpression":{"id":13548,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13515,"src":"3737:5:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3713:30:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":13551,"indexExpression":{"id":13550,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13517,"src":"3744:11:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3713:43:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":13552,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3759:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3713:47:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13557,"nodeType":"IfStatement","src":"3709:89:44","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":13554,"name":"InvalidBalance1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13330,"src":"3781:15:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":13555,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3781:17:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13556,"nodeType":"RevertStatement","src":"3774:24:44"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13558,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13394,"src":"3836:12:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$13382_storage_ptr_$","typeString":"function () pure returns (struct LibFlow.StorageFlow storage pointer)"}},"id":13559,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3836:14:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$13382_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":13560,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3851:13:44","memberName":"totalDeposits","nodeType":"MemberAccess","referencedDeclaration":13381,"src":"3836:28:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":13562,"indexExpression":{"id":13561,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13517,"src":"3865:11:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3836:41:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":13563,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3880:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3836:45:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13568,"nodeType":"IfStatement","src":"3832:87:44","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":13565,"name":"InvalidBalance2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13332,"src":"3902:15:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":13566,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3902:17:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13567,"nodeType":"RevertStatement","src":"3895:24:44"}},{"assignments":[13570],"declarations":[{"constant":false,"id":13570,"mutability":"mutable","name":"newFlowNonce","nameLocation":"3962:12:44","nodeType":"VariableDeclaration","scope":13595,"src":"3954:20:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13569,"name":"uint256","nodeType":"ElementaryTypeName","src":"3954:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13575,"initialValue":{"arguments":[{"id":13572,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13515,"src":"3990:5:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13573,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13517,"src":"3997:11:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":13571,"name":"_getNewNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14008,"src":"3977:12:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":13574,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3977:32:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3954:55:44"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13576,"name":"newFlowNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13570,"src":"4023:12:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":13577,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4038:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4023:16:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13594,"nodeType":"IfStatement","src":"4019:151:44","trueBody":{"expression":{"id":13592,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13579,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13394,"src":"4053:12:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$13382_storage_ptr_$","typeString":"function () pure returns (struct LibFlow.StorageFlow storage pointer)"}},"id":13580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4053:14:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$13382_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":13581,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4081:10:44","memberName":"flowRecord","nodeType":"MemberAccess","referencedDeclaration":13371,"src":"4053:38:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref)))"}},"id":13583,"indexExpression":{"id":13582,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13515,"src":"4092:5:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4053:45:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref))"}},"id":13585,"indexExpression":{"id":13584,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13517,"src":"4099:11:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4053:58:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$","typeString":"mapping(uint256 => struct LibFlow.FlowRecord storage ref)"}},"id":13589,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13586,"name":"newFlowNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13570,"src":"4112:12:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":13587,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4127:1:44","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4112:16:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4053:76:44","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$13356_storage","typeString":"struct LibFlow.FlowRecord storage ref"}},"id":13590,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4147:16:44","memberName":"isBalanceSettled","nodeType":"MemberAccess","referencedDeclaration":13355,"src":"4053:110:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":13591,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4166:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"4053:117:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13593,"nodeType":"ExpressionStatement","src":"4053:117:44"}}]},"id":13596,"implemented":true,"kind":"function","modifiers":[],"name":"_setRemainingBalance","nameLocation":"3426:20:44","nodeType":"FunctionDefinition","parameters":{"id":13518,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13515,"mutability":"mutable","name":"_user","nameLocation":"3455:5:44","nodeType":"VariableDeclaration","scope":13596,"src":"3447:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13514,"name":"address","nodeType":"ElementaryTypeName","src":"3447:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13517,"mutability":"mutable","name":"_superToken","nameLocation":"3470:11:44","nodeType":"VariableDeclaration","scope":13596,"src":"3462:19:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13516,"name":"address","nodeType":"ElementaryTypeName","src":"3462:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3446:36:44"},"returnParameters":{"id":13519,"nodeType":"ParameterList","parameters":[],"src":"3492:0:44"},"scope":14322,"src":"3417:953:44","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":13659,"nodeType":"Block","src":"4578:532:44","statements":[{"assignments":[13608],"declarations":[{"constant":false,"id":13608,"mutability":"mutable","name":"unsafeLifespan","nameLocation":"4596:14:44","nodeType":"VariableDeclaration","scope":13659,"src":"4588:22:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13607,"name":"uint256","nodeType":"ElementaryTypeName","src":"4588:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13624,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13623,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13609,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13394,"src":"4613:12:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$13382_storage_ptr_$","typeString":"function () pure returns (struct LibFlow.StorageFlow storage pointer)"}},"id":13610,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4613:14:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$13382_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":13611,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4628:8:44","memberName":"deposits","nodeType":"MemberAccess","referencedDeclaration":13377,"src":"4613:23:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":13613,"indexExpression":{"id":13612,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13598,"src":"4637:5:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4613:30:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":13615,"indexExpression":{"id":13614,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13600,"src":"4644:11:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4613:43:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[{"arguments":[{"id":13620,"name":"_flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13602,"src":"4686:9:44","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int96","typeString":"int96"}],"id":13619,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4679:6:44","typeDescriptions":{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"},"typeName":{"id":13618,"name":"uint96","nodeType":"ElementaryTypeName","src":"4679:6:44","typeDescriptions":{}}},"id":13621,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4679:17:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":13617,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4671:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":13616,"name":"uint256","nodeType":"ElementaryTypeName","src":"4671:7:44","typeDescriptions":{}}},"id":13622,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4671:26:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4613:84:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4588:109:44"},{"assignments":[13629],"declarations":[{"constant":false,"id":13629,"mutability":"mutable","name":"sControl","nameLocation":"4742:8:44","nodeType":"VariableDeclaration","scope":13659,"src":"4708:42:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl"},"typeName":{"id":13628,"nodeType":"UserDefinedTypeName","pathNode":{"id":13627,"name":"LibControl.StorageControl","nameLocations":["4708:10:44","4719:14:44"],"nodeType":"IdentifierPath","referencedDeclaration":12418,"src":"4708:25:44"},"referencedDeclaration":12418,"src":"4708:25:44","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl"}},"visibility":"internal"}],"id":13633,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":13630,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"4753:10:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$13307_$","typeString":"type(library LibControl)"}},"id":13631,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4777:15:44","memberName":"_storageControl","nodeType":"MemberAccess","referencedDeclaration":12430,"src":"4753:39:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$12418_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":13632,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4753:41:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4708:86:44"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13634,"name":"unsafeLifespan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13608,"src":"4809:14:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":13635,"name":"sControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13629,"src":"4826:8:44","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":13636,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4835:18:44","memberName":"minimumEndDuration","nodeType":"MemberAccess","referencedDeclaration":12380,"src":"4826:27:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4809:44:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13641,"nodeType":"IfStatement","src":"4805:92:44","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":13638,"name":"InsufficientLifespan1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13322,"src":"4874:21:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":13639,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4874:23:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13640,"nodeType":"RevertStatement","src":"4867:30:44"}},{"assignments":[13643],"declarations":[{"constant":false,"id":13643,"mutability":"mutable","name":"safeLifespan","nameLocation":"4916:12:44","nodeType":"VariableDeclaration","scope":13659,"src":"4908:20:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13642,"name":"uint256","nodeType":"ElementaryTypeName","src":"4908:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13648,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13644,"name":"unsafeLifespan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13608,"src":"4931:14:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"expression":{"id":13645,"name":"sControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13629,"src":"4948:8:44","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":13646,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4957:18:44","memberName":"minimumEndDuration","nodeType":"MemberAccess","referencedDeclaration":12380,"src":"4948:27:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4931:44:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4908:67:44"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13649,"name":"safeLifespan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13643,"src":"4990:12:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":13650,"name":"sControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13629,"src":"5005:8:44","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":13651,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5014:15:44","memberName":"minimumLifespan","nodeType":"MemberAccess","referencedDeclaration":12382,"src":"5005:24:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4990:39:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13656,"nodeType":"IfStatement","src":"4986:87:44","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":13653,"name":"InsufficientLifespan2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13324,"src":"5050:21:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":13654,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5050:23:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13655,"nodeType":"RevertStatement","src":"5043:30:44"}},{"expression":{"id":13657,"name":"safeLifespan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13643,"src":"5091:12:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13606,"id":13658,"nodeType":"Return","src":"5084:19:44"}]},"id":13660,"implemented":true,"kind":"function","modifiers":[],"name":"_getValidSafeLifespan","nameLocation":"4441:21:44","nodeType":"FunctionDefinition","parameters":{"id":13603,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13598,"mutability":"mutable","name":"_user","nameLocation":"4480:5:44","nodeType":"VariableDeclaration","scope":13660,"src":"4472:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13597,"name":"address","nodeType":"ElementaryTypeName","src":"4472:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13600,"mutability":"mutable","name":"_superToken","nameLocation":"4503:11:44","nodeType":"VariableDeclaration","scope":13660,"src":"4495:19:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13599,"name":"address","nodeType":"ElementaryTypeName","src":"4495:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13602,"mutability":"mutable","name":"_flowRate","nameLocation":"4530:9:44","nodeType":"VariableDeclaration","scope":13660,"src":"4524:15:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":13601,"name":"int96","nodeType":"ElementaryTypeName","src":"4524:5:44","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"4462:83:44"},"returnParameters":{"id":13606,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13605,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13660,"src":"4569:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13604,"name":"uint256","nodeType":"ElementaryTypeName","src":"4569:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4568:9:44"},"scope":14322,"src":"4432:678:44","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":13709,"nodeType":"Block","src":"5404:429:44","statements":[{"assignments":[13675],"declarations":[{"constant":false,"id":13675,"mutability":"mutable","name":"safeLifespan","nameLocation":"5422:12:44","nodeType":"VariableDeclaration","scope":13709,"src":"5414:20:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13674,"name":"uint256","nodeType":"ElementaryTypeName","src":"5414:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13681,"initialValue":{"arguments":[{"id":13677,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13663,"src":"5472:5:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13678,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13665,"src":"5491:11:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13679,"name":"_flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13669,"src":"5516:9:44","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_int96","typeString":"int96"}],"id":13676,"name":"_getValidSafeLifespan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13660,"src":"5437:21:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_int96_$returns$_t_uint256_$","typeString":"function (address,address,int96) view returns (uint256)"}},"id":13680,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5437:98:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5414:121:44"},{"assignments":[13686],"declarations":[{"constant":false,"id":13686,"mutability":"mutable","name":"sControl","nameLocation":"5580:8:44","nodeType":"VariableDeclaration","scope":13709,"src":"5546:42:44","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl"},"typeName":{"id":13685,"nodeType":"UserDefinedTypeName","pathNode":{"id":13684,"name":"LibControl.StorageControl","nameLocations":["5546:10:44","5557:14:44"],"nodeType":"IdentifierPath","referencedDeclaration":12418,"src":"5546:25:44"},"referencedDeclaration":12418,"src":"5546:25:44","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl"}},"visibility":"internal"}],"id":13690,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":13687,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"5591:10:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$13307_$","typeString":"type(library LibControl)"}},"id":13688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5615:15:44","memberName":"_storageControl","nodeType":"MemberAccess","referencedDeclaration":12430,"src":"5591:39:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$12418_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":13689,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5591:41:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"5546:86:44"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13697,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13691,"name":"_lifespan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13667,"src":"5646:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13696,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":13692,"name":"sControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13686,"src":"5658:8:44","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":13693,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5667:18:44","memberName":"minimumEndDuration","nodeType":"MemberAccess","referencedDeclaration":12380,"src":"5658:27:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"expression":{"id":13694,"name":"sControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13686,"src":"5688:8:44","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":13695,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5697:15:44","memberName":"minimumLifespan","nodeType":"MemberAccess","referencedDeclaration":12382,"src":"5688:24:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5658:54:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5646:66:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13701,"nodeType":"IfStatement","src":"5642:114:44","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":13698,"name":"InsufficientLifespan3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13326,"src":"5733:21:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":13699,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5733:23:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13700,"nodeType":"RevertStatement","src":"5726:30:44"}},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13702,"name":"_lifespan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13667,"src":"5774:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":13703,"name":"safeLifespan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13675,"src":"5787:12:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5774:25:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":13706,"name":"_lifespan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13667,"src":"5817:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"5774:52:44","trueExpression":{"id":13705,"name":"safeLifespan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13675,"src":"5802:12:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13673,"id":13708,"nodeType":"Return","src":"5767:59:44"}]},"documentation":{"id":13661,"nodeType":"StructuredDocumentation","src":"5116:110:44","text":" flowRate --> 1 sec\n maximumFlowAmount --> maximumFlowAmount/flowRate [in sec]"},"id":13710,"implemented":true,"kind":"function","modifiers":[],"name":"_getScheduledLifespan","nameLocation":"5240:21:44","nodeType":"FunctionDefinition","parameters":{"id":13670,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13663,"mutability":"mutable","name":"_user","nameLocation":"5279:5:44","nodeType":"VariableDeclaration","scope":13710,"src":"5271:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13662,"name":"address","nodeType":"ElementaryTypeName","src":"5271:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13665,"mutability":"mutable","name":"_superToken","nameLocation":"5302:11:44","nodeType":"VariableDeclaration","scope":13710,"src":"5294:19:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13664,"name":"address","nodeType":"ElementaryTypeName","src":"5294:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13667,"mutability":"mutable","name":"_lifespan","nameLocation":"5331:9:44","nodeType":"VariableDeclaration","scope":13710,"src":"5323:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13666,"name":"uint256","nodeType":"ElementaryTypeName","src":"5323:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13669,"mutability":"mutable","name":"_flowRate","nameLocation":"5356:9:44","nodeType":"VariableDeclaration","scope":13710,"src":"5350:15:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":13668,"name":"int96","nodeType":"ElementaryTypeName","src":"5350:5:44","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"5261:110:44"},"returnParameters":{"id":13673,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13672,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13710,"src":"5395:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13671,"name":"uint256","nodeType":"ElementaryTypeName","src":"5395:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5394:9:44"},"scope":14322,"src":"5231:602:44","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":13805,"nodeType":"Block","src":"5955:1035:44","statements":[{"assignments":[13720],"declarations":[{"constant":false,"id":13720,"mutability":"mutable","name":"amountFlowed","nameLocation":"5973:12:44","nodeType":"VariableDeclaration","scope":13805,"src":"5965:20:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13719,"name":"uint256","nodeType":"ElementaryTypeName","src":"5965:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13721,"nodeType":"VariableDeclarationStatement","src":"5965:20:44"},{"assignments":[13723],"declarations":[{"constant":false,"id":13723,"mutability":"mutable","name":"currentNonce","nameLocation":"6003:12:44","nodeType":"VariableDeclaration","scope":13805,"src":"5995:20:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13722,"name":"uint256","nodeType":"ElementaryTypeName","src":"5995:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13728,"initialValue":{"arguments":[{"id":13725,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13712,"src":"6035:5:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13726,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13714,"src":"6042:11:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":13724,"name":"_getCurrentNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14037,"src":"6018:16:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":13727,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6018:36:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5995:59:44"},{"assignments":[13730,13732,13734,13736,null,13738],"declarations":[{"constant":false,"id":13730,"mutability":"mutable","name":"receiver","nameLocation":"6086:8:44","nodeType":"VariableDeclaration","scope":13805,"src":"6078:16:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13729,"name":"address","nodeType":"ElementaryTypeName","src":"6078:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13732,"mutability":"mutable","name":"sessionNonce","nameLocation":"6116:12:44","nodeType":"VariableDeclaration","scope":13805,"src":"6108:20:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13731,"name":"uint256","nodeType":"ElementaryTypeName","src":"6108:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13734,"mutability":"mutable","name":"timestampIncrease","nameLocation":"6150:17:44","nodeType":"VariableDeclaration","scope":13805,"src":"6142:25:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13733,"name":"uint256","nodeType":"ElementaryTypeName","src":"6142:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13736,"mutability":"mutable","name":"timestampDecrease","nameLocation":"6189:17:44","nodeType":"VariableDeclaration","scope":13805,"src":"6181:25:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13735,"name":"uint256","nodeType":"ElementaryTypeName","src":"6181:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},null,{"constant":false,"id":13738,"mutability":"mutable","name":"isBalanceSettled","nameLocation":"6239:16:44","nodeType":"VariableDeclaration","scope":13805,"src":"6234:21:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13737,"name":"bool","nodeType":"ElementaryTypeName","src":"6234:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":13744,"initialValue":{"arguments":[{"id":13740,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13712,"src":"6281:5:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13741,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13714,"src":"6288:11:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13742,"name":"currentNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13723,"src":"6301:12:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13739,"name":"_getFlowData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14121,"src":"6268:12:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes32_$_t_bool_$","typeString":"function (address,address,uint256) view returns (address,uint256,uint256,uint256,bytes32,bool)"}},"id":13743,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6268:46:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes32_$_t_bool_$","typeString":"tuple(address,uint256,uint256,uint256,bytes32,bool)"}},"nodeType":"VariableDeclarationStatement","src":"6064:250:44"},{"assignments":[null,13746,null,13748],"declarations":[null,{"constant":false,"id":13746,"mutability":"mutable","name":"flowRate","nameLocation":"6334:8:44","nodeType":"VariableDeclaration","scope":13805,"src":"6327:15:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":13745,"name":"uint96","nodeType":"ElementaryTypeName","src":"6327:6:44","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},null,{"constant":false,"id":13748,"mutability":"mutable","name":"timestampStop","nameLocation":"6354:13:44","nodeType":"VariableDeclaration","scope":13805,"src":"6346:21:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13747,"name":"uint256","nodeType":"ElementaryTypeName","src":"6346:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13755,"initialValue":{"arguments":[{"id":13751,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13730,"src":"6411:8:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13752,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13714,"src":"6421:11:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13753,"name":"sessionNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13732,"src":"6434:12:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":13749,"name":"LibSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14923,"src":"6371:10:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibSession_$14923_$","typeString":"type(library LibSession)"}},"id":13750,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6395:15:44","memberName":"_getSessionData","nodeType":"MemberAccess","referencedDeclaration":14814,"src":"6371:39:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_int96_$_t_uint96_$_t_uint256_$_t_uint256_$","typeString":"function (address,address,uint256) view returns (int96,uint96,uint256,uint256)"}},"id":13754,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6371:76:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int96_$_t_uint96_$_t_uint256_$_t_uint256_$","typeString":"tuple(int96,uint96,uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"6324:123:44"},{"condition":{"id":13756,"name":"isBalanceSettled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13738,"src":"6462:16:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":13801,"nodeType":"Block","src":"6527:427:44","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13764,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13762,"name":"timestampDecrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13736,"src":"6545:17:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":13763,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6566:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6545:22:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13778,"name":"timestampStop","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13748,"src":"6726:13:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":13779,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6743:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6726:18:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":13798,"nodeType":"Block","src":"6895:49:44","statements":[{"expression":{"id":13796,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13794,"name":"amountFlowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13720,"src":"6913:12:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":13795,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6928:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6913:16:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13797,"nodeType":"ExpressionStatement","src":"6913:16:44"}]},"id":13799,"nodeType":"IfStatement","src":"6722:222:44","trueBody":{"id":13793,"nodeType":"Block","src":"6746:143:44","statements":[{"expression":{"id":13791,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13781,"name":"amountFlowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13720,"src":"6764:12:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":13784,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13746,"src":"6807:8:44","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":13783,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6799:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":13782,"name":"uint256","nodeType":"ElementaryTypeName","src":"6799:7:44","typeDescriptions":{}}},"id":13785,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6799:17:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13788,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13786,"name":"timestampStop","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13748,"src":"6840:13:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":13787,"name":"timestampIncrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13734,"src":"6856:17:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6840:33:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":13789,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6839:35:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6799:75:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6764:110:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13792,"nodeType":"ExpressionStatement","src":"6764:110:44"}]}},"id":13800,"nodeType":"IfStatement","src":"6541:403:44","trueBody":{"id":13777,"nodeType":"Block","src":"6569:147:44","statements":[{"expression":{"id":13775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13765,"name":"amountFlowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13720,"src":"6587:12:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13774,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":13768,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13746,"src":"6630:8:44","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":13767,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6622:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":13766,"name":"uint256","nodeType":"ElementaryTypeName","src":"6622:7:44","typeDescriptions":{}}},"id":13769,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6622:17:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13770,"name":"timestampDecrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13736,"src":"6663:17:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":13771,"name":"timestampIncrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13734,"src":"6683:17:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6663:37:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":13773,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6662:39:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6622:79:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6587:114:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13776,"nodeType":"ExpressionStatement","src":"6587:114:44"}]}}]},"id":13802,"nodeType":"IfStatement","src":"6458:496:44","trueBody":{"id":13761,"nodeType":"Block","src":"6480:41:44","statements":[{"expression":{"id":13759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13757,"name":"amountFlowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13720,"src":"6494:12:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":13758,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6509:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6494:16:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13760,"nodeType":"ExpressionStatement","src":"6494:16:44"}]}},{"expression":{"id":13803,"name":"amountFlowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13720,"src":"6971:12:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13718,"id":13804,"nodeType":"Return","src":"6964:19:44"}]},"id":13806,"implemented":true,"kind":"function","modifiers":[],"name":"_getAmountFlowed","nameLocation":"5848:16:44","nodeType":"FunctionDefinition","parameters":{"id":13715,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13712,"mutability":"mutable","name":"_user","nameLocation":"5882:5:44","nodeType":"VariableDeclaration","scope":13806,"src":"5874:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13711,"name":"address","nodeType":"ElementaryTypeName","src":"5874:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13714,"mutability":"mutable","name":"_superToken","nameLocation":"5905:11:44","nodeType":"VariableDeclaration","scope":13806,"src":"5897:19:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13713,"name":"address","nodeType":"ElementaryTypeName","src":"5897:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5864:58:44"},"returnParameters":{"id":13718,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13717,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13806,"src":"5946:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13716,"name":"uint256","nodeType":"ElementaryTypeName","src":"5946:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5945:9:44"},"scope":14322,"src":"5839:1151:44","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":13859,"nodeType":"Block","src":"7107:532:44","statements":[{"assignments":[13816],"declarations":[{"constant":false,"id":13816,"mutability":"mutable","name":"newFlowNonce","nameLocation":"7125:12:44","nodeType":"VariableDeclaration","scope":13859,"src":"7117:20:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13815,"name":"uint256","nodeType":"ElementaryTypeName","src":"7117:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13821,"initialValue":{"arguments":[{"id":13818,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13808,"src":"7153:5:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13819,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13810,"src":"7160:11:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":13817,"name":"_getNewNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14008,"src":"7140:12:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":13820,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7140:32:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7117:55:44"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13824,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13822,"name":"newFlowNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13816,"src":"7186:12:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":13823,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7201:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7186:16:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13856,"nodeType":"IfStatement","src":"7182:429:44","trueBody":{"id":13855,"nodeType":"Block","src":"7204:407:44","statements":[{"assignments":[null,null,null,13826],"declarations":[null,null,null,{"constant":false,"id":13826,"mutability":"mutable","name":"timestampStop","nameLocation":"7233:13:44","nodeType":"VariableDeclaration","scope":13855,"src":"7225:21:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13825,"name":"uint256","nodeType":"ElementaryTypeName","src":"7225:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13835,"initialValue":{"arguments":[{"id":13829,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13808,"src":"7302:5:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13830,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13810,"src":"7325:11:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13831,"name":"newFlowNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13816,"src":"7354:12:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":13832,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7369:1:44","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7354:16:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":13827,"name":"LibSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14923,"src":"7250:10:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibSession_$14923_$","typeString":"type(library LibSession)"}},"id":13828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7261:23:44","memberName":"_getSessionDataFromFlow","nodeType":"MemberAccess","referencedDeclaration":14871,"src":"7250:34:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_int96_$_t_uint96_$_t_uint256_$_t_uint256_$","typeString":"function (address,address,uint256) view returns (int96,uint96,uint256,uint256)"}},"id":13834,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7250:134:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int96_$_t_uint96_$_t_uint256_$_t_uint256_$","typeString":"tuple(int96,uint96,uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"7218:166:44"},{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13849,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13836,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13394,"src":"7422:12:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$13382_storage_ptr_$","typeString":"function () pure returns (struct LibFlow.StorageFlow storage pointer)"}},"id":13837,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7422:14:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$13382_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":13838,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7454:10:44","memberName":"flowRecord","nodeType":"MemberAccess","referencedDeclaration":13371,"src":"7422:42:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref)))"}},"id":13840,"indexExpression":{"id":13839,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13808,"src":"7465:5:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7422:49:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref))"}},"id":13842,"indexExpression":{"id":13841,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13810,"src":"7472:11:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7422:62:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$","typeString":"mapping(uint256 => struct LibFlow.FlowRecord storage ref)"}},"id":13846,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13845,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13843,"name":"newFlowNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13816,"src":"7485:12:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":13844,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7500:1:44","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7485:16:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7422:80:44","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$13356_storage","typeString":"struct LibFlow.FlowRecord storage ref"}},"id":13847,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7524:17:44","memberName":"timestampDecrease","nodeType":"MemberAccess","referencedDeclaration":13351,"src":"7422:119:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":13848,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7561:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7422:140:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13850,"name":"timestampStop","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13826,"src":"7582:13:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":13851,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7599:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7582:18:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7422:178:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":13814,"id":13854,"nodeType":"Return","src":"7399:201:44"}]}},{"expression":{"hexValue":"66616c7365","id":13857,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7627:5:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":13814,"id":13858,"nodeType":"Return","src":"7620:12:44"}]},"id":13860,"implemented":true,"kind":"function","modifiers":[],"name":"_hasActiveFlow","nameLocation":"7005:14:44","nodeType":"FunctionDefinition","parameters":{"id":13811,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13808,"mutability":"mutable","name":"_user","nameLocation":"7037:5:44","nodeType":"VariableDeclaration","scope":13860,"src":"7029:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13807,"name":"address","nodeType":"ElementaryTypeName","src":"7029:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13810,"mutability":"mutable","name":"_superToken","nameLocation":"7060:11:44","nodeType":"VariableDeclaration","scope":13860,"src":"7052:19:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13809,"name":"address","nodeType":"ElementaryTypeName","src":"7052:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7019:58:44"},"returnParameters":{"id":13814,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13813,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13860,"src":"7101:4:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13812,"name":"bool","nodeType":"ElementaryTypeName","src":"7101:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7100:6:44"},"scope":14322,"src":"6996:643:44","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":13989,"nodeType":"Block","src":"7766:1451:44","statements":[{"assignments":[13870,13873],"declarations":[{"constant":false,"id":13870,"mutability":"mutable","name":"currentTimestamp","nameLocation":"7785:16:44","nodeType":"VariableDeclaration","scope":13989,"src":"7777:24:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13869,"name":"uint256","nodeType":"ElementaryTypeName","src":"7777:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13873,"mutability":"mutable","name":"superTokens","nameLocation":"7820:11:44","nodeType":"VariableDeclaration","scope":13989,"src":"7803:28:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":13871,"name":"address","nodeType":"ElementaryTypeName","src":"7803:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":13872,"nodeType":"ArrayTypeName","src":"7803:9:44","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":13878,"initialValue":{"arguments":[{"id":13876,"name":"_broadcaster","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13864,"src":"7882:12:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":13874,"name":"LibSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14923,"src":"7835:10:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibSession_$14923_$","typeString":"type(library LibSession)"}},"id":13875,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7859:22:44","memberName":"_getCurrentSessionData","nodeType":"MemberAccess","referencedDeclaration":14754,"src":"7835:46:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (address) view returns (uint256,address[] memory)"}},"id":13877,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7835:60:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"tuple(uint256,address[] memory)"}},"nodeType":"VariableDeclarationStatement","src":"7776:119:44"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13886,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13879,"name":"currentTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13870,"src":"7910:16:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":13880,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7930:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7910:21:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":13882,"name":"superTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13873,"src":"7935:11:44","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":13883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7947:6:44","memberName":"length","nodeType":"MemberAccess","src":"7935:18:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"30","id":13884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7957:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7935:23:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7910:48:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13889,"nodeType":"IfStatement","src":"7906:66:44","trueBody":{"expression":{"hexValue":"66616c7365","id":13887,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7967:5:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":13868,"id":13888,"nodeType":"Return","src":"7960:12:44"}},{"body":{"id":13985,"nodeType":"Block","src":"8032:1157:44","statements":[{"assignments":[13902],"declarations":[{"constant":false,"id":13902,"mutability":"mutable","name":"activeSessionNonce","nameLocation":"8054:18:44","nodeType":"VariableDeclaration","scope":13985,"src":"8046:26:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13901,"name":"uint256","nodeType":"ElementaryTypeName","src":"8046:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13910,"initialValue":{"arguments":[{"id":13905,"name":"_broadcaster","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13864,"src":"8120:12:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":13906,"name":"superTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13873,"src":"8150:11:44","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":13908,"indexExpression":{"id":13907,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13891,"src":"8162:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8150:14:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":13903,"name":"LibSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14923,"src":"8075:10:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibSession_$14923_$","typeString":"type(library LibSession)"}},"id":13904,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8086:16:44","memberName":"_getCurrentNonce","nodeType":"MemberAccess","referencedDeclaration":14729,"src":"8075:27:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":13909,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8075:103:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8046:132:44"},{"assignments":[null,null,13912,13914],"declarations":[null,null,{"constant":false,"id":13912,"mutability":"mutable","name":"timestampStart","nameLocation":"8206:14:44","nodeType":"VariableDeclaration","scope":13985,"src":"8198:22:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13911,"name":"uint256","nodeType":"ElementaryTypeName","src":"8198:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13914,"mutability":"mutable","name":"timestampStop","nameLocation":"8230:13:44","nodeType":"VariableDeclaration","scope":13985,"src":"8222:21:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13913,"name":"uint256","nodeType":"ElementaryTypeName","src":"8222:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13923,"initialValue":{"arguments":[{"id":13917,"name":"_broadcaster","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13864,"src":"8312:12:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":13918,"name":"superTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13873,"src":"8346:11:44","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":13920,"indexExpression":{"id":13919,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13891,"src":"8358:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8346:14:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13921,"name":"activeSessionNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13902,"src":"8382:18:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":13915,"name":"LibSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14923,"src":"8247:10:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibSession_$14923_$","typeString":"type(library LibSession)"}},"id":13916,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8275:15:44","memberName":"_getSessionData","nodeType":"MemberAccess","referencedDeclaration":14814,"src":"8247:43:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_int96_$_t_uint96_$_t_uint256_$_t_uint256_$","typeString":"function (address,address,uint256) view returns (int96,uint96,uint256,uint256)"}},"id":13922,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8247:171:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int96_$_t_uint96_$_t_uint256_$_t_uint256_$","typeString":"tuple(int96,uint96,uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"8193:225:44"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13924,"name":"timestampStart","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13912,"src":"8437:14:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":13925,"name":"currentTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13870,"src":"8455:16:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8437:34:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13929,"nodeType":"IfStatement","src":"8433:52:44","trueBody":{"expression":{"hexValue":"66616c7365","id":13927,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8480:5:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":13868,"id":13928,"nodeType":"Return","src":"8473:12:44"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13932,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13930,"name":"timestampStop","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13914,"src":"8504:13:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":13931,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8521:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8504:18:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13935,"nodeType":"IfStatement","src":"8500:36:44","trueBody":{"expression":{"hexValue":"66616c7365","id":13933,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8531:5:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":13868,"id":13934,"nodeType":"Return","src":"8524:12:44"}},{"assignments":[13937],"declarations":[{"constant":false,"id":13937,"mutability":"mutable","name":"currentFlowNonce","nameLocation":"8559:16:44","nodeType":"VariableDeclaration","scope":13985,"src":"8551:24:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13936,"name":"uint256","nodeType":"ElementaryTypeName","src":"8551:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13944,"initialValue":{"arguments":[{"id":13939,"name":"_viewer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13862,"src":"8612:7:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":13940,"name":"superTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13873,"src":"8637:11:44","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":13942,"indexExpression":{"id":13941,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13891,"src":"8649:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8637:14:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":13938,"name":"_getCurrentNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14037,"src":"8578:16:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":13943,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8578:87:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8551:114:44"},{"assignments":[13946,13948,13950,13952,null,null],"declarations":[{"constant":false,"id":13946,"mutability":"mutable","name":"receiver","nameLocation":"8706:8:44","nodeType":"VariableDeclaration","scope":13985,"src":"8698:16:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13945,"name":"address","nodeType":"ElementaryTypeName","src":"8698:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13948,"mutability":"mutable","name":"sessionNonce","nameLocation":"8740:12:44","nodeType":"VariableDeclaration","scope":13985,"src":"8732:20:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13947,"name":"uint256","nodeType":"ElementaryTypeName","src":"8732:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13950,"mutability":"mutable","name":"timestampIncrease","nameLocation":"8778:17:44","nodeType":"VariableDeclaration","scope":13985,"src":"8770:25:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13949,"name":"uint256","nodeType":"ElementaryTypeName","src":"8770:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13952,"mutability":"mutable","name":"timestampDecrease","nameLocation":"8821:17:44","nodeType":"VariableDeclaration","scope":13985,"src":"8813:25:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13951,"name":"uint256","nodeType":"ElementaryTypeName","src":"8813:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},null,null],"id":13960,"initialValue":{"arguments":[{"id":13954,"name":"_viewer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13862,"src":"8888:7:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":13955,"name":"superTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13873,"src":"8897:11:44","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":13957,"indexExpression":{"id":13956,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13891,"src":"8909:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8897:14:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13958,"name":"currentFlowNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13937,"src":"8913:16:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13953,"name":"_getFlowData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14121,"src":"8875:12:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes32_$_t_bool_$","typeString":"function (address,address,uint256) view returns (address,uint256,uint256,uint256,bytes32,bool)"}},"id":13959,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8875:55:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes32_$_t_bool_$","typeString":"tuple(address,uint256,uint256,uint256,bytes32,bool)"}},"nodeType":"VariableDeclarationStatement","src":"8680:250:44"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":13963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13961,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13946,"src":"8949:8:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":13962,"name":"_broadcaster","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13864,"src":"8961:12:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8949:24:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13966,"nodeType":"IfStatement","src":"8945:42:44","trueBody":{"expression":{"hexValue":"66616c7365","id":13964,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8982:5:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":13868,"id":13965,"nodeType":"Return","src":"8975:12:44"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13967,"name":"sessionNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13948,"src":"9006:12:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":13968,"name":"activeSessionNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13902,"src":"9022:18:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9006:34:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13972,"nodeType":"IfStatement","src":"9002:52:44","trueBody":{"expression":{"hexValue":"66616c7365","id":13970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9049:5:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":13868,"id":13971,"nodeType":"Return","src":"9042:12:44"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13973,"name":"timestampIncrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13950,"src":"9073:17:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":13974,"name":"currentTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13870,"src":"9093:16:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9073:36:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13978,"nodeType":"IfStatement","src":"9069:54:44","trueBody":{"expression":{"hexValue":"66616c7365","id":13976,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9118:5:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":13868,"id":13977,"nodeType":"Return","src":"9111:12:44"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13981,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13979,"name":"timestampDecrease","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13952,"src":"9142:17:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":13980,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9163:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9142:22:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13984,"nodeType":"IfStatement","src":"9138:40:44","trueBody":{"expression":{"hexValue":"66616c7365","id":13982,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9173:5:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":13868,"id":13983,"nodeType":"Return","src":"9166:12:44"}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13897,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13894,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13891,"src":"8003:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":13895,"name":"superTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13873,"src":"8007:11:44","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":13896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8019:6:44","memberName":"length","nodeType":"MemberAccess","src":"8007:18:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8003:22:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13986,"initializationExpression":{"assignments":[13891],"declarations":[{"constant":false,"id":13891,"mutability":"mutable","name":"i","nameLocation":"7996:1:44","nodeType":"VariableDeclaration","scope":13986,"src":"7988:9:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13890,"name":"uint256","nodeType":"ElementaryTypeName","src":"7988:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13893,"initialValue":{"hexValue":"30","id":13892,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8000:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"7988:13:44"},"loopExpression":{"expression":{"id":13899,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"8027:3:44","subExpression":{"id":13898,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13891,"src":"8027:1:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13900,"nodeType":"ExpressionStatement","src":"8027:3:44"},"nodeType":"ForStatement","src":"7983:1206:44"},{"expression":{"hexValue":"74727565","id":13987,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9206:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":13868,"id":13988,"nodeType":"Return","src":"9199:11:44"}]},"id":13990,"implemented":true,"kind":"function","modifiers":[],"name":"_isViewSessionAllowed","nameLocation":"7654:21:44","nodeType":"FunctionDefinition","parameters":{"id":13865,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13862,"mutability":"mutable","name":"_viewer","nameLocation":"7693:7:44","nodeType":"VariableDeclaration","scope":13990,"src":"7685:15:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13861,"name":"address","nodeType":"ElementaryTypeName","src":"7685:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13864,"mutability":"mutable","name":"_broadcaster","nameLocation":"7718:12:44","nodeType":"VariableDeclaration","scope":13990,"src":"7710:20:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13863,"name":"address","nodeType":"ElementaryTypeName","src":"7710:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7675:61:44"},"returnParameters":{"id":13868,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13867,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":13990,"src":"7760:4:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13866,"name":"bool","nodeType":"ElementaryTypeName","src":"7760:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7759:6:44"},"scope":14322,"src":"7645:1572:44","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":14007,"nodeType":"Block","src":"9335:68:44","statements":[{"expression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13999,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13394,"src":"9352:12:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$13382_storage_ptr_$","typeString":"function () pure returns (struct LibFlow.StorageFlow storage pointer)"}},"id":14000,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9352:14:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$13382_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":14001,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9367:9:44","memberName":"flowNonce","nodeType":"MemberAccess","referencedDeclaration":13362,"src":"9352:24:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":14003,"indexExpression":{"id":14002,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13992,"src":"9377:5:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9352:31:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":14005,"indexExpression":{"id":14004,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13994,"src":"9384:11:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9352:44:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":13998,"id":14006,"nodeType":"Return","src":"9345:51:44"}]},"id":14008,"implemented":true,"kind":"function","modifiers":[],"name":"_getNewNonce","nameLocation":"9232:12:44","nodeType":"FunctionDefinition","parameters":{"id":13995,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13992,"mutability":"mutable","name":"_user","nameLocation":"9262:5:44","nodeType":"VariableDeclaration","scope":14008,"src":"9254:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13991,"name":"address","nodeType":"ElementaryTypeName","src":"9254:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13994,"mutability":"mutable","name":"_superToken","nameLocation":"9285:11:44","nodeType":"VariableDeclaration","scope":14008,"src":"9277:19:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13993,"name":"address","nodeType":"ElementaryTypeName","src":"9277:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9244:58:44"},"returnParameters":{"id":13998,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13997,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14008,"src":"9326:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13996,"name":"uint256","nodeType":"ElementaryTypeName","src":"9326:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9325:9:44"},"scope":14322,"src":"9223:180:44","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":14036,"nodeType":"Block","src":"9525:120:44","statements":[{"assignments":[14018],"declarations":[{"constant":false,"id":14018,"mutability":"mutable","name":"nonce","nameLocation":"9543:5:44","nodeType":"VariableDeclaration","scope":14036,"src":"9535:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14017,"name":"uint256","nodeType":"ElementaryTypeName","src":"9535:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14026,"initialValue":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":14019,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13394,"src":"9551:12:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$13382_storage_ptr_$","typeString":"function () pure returns (struct LibFlow.StorageFlow storage pointer)"}},"id":14020,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9551:14:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$13382_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":14021,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9566:9:44","memberName":"flowNonce","nodeType":"MemberAccess","referencedDeclaration":13362,"src":"9551:24:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":14023,"indexExpression":{"id":14022,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14010,"src":"9576:5:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9551:31:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":14025,"indexExpression":{"id":14024,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14012,"src":"9583:11:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9551:44:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9535:60:44"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14027,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14018,"src":"9612:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":14028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9621:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9612:10:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14033,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14031,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14018,"src":"9629:5:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":14032,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9637:1:44","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9629:9:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"9612:26:44","trueExpression":{"hexValue":"30","id":14030,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9625:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":14016,"id":14035,"nodeType":"Return","src":"9605:33:44"}]},"id":14037,"implemented":true,"kind":"function","modifiers":[],"name":"_getCurrentNonce","nameLocation":"9418:16:44","nodeType":"FunctionDefinition","parameters":{"id":14013,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14010,"mutability":"mutable","name":"_user","nameLocation":"9452:5:44","nodeType":"VariableDeclaration","scope":14037,"src":"9444:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14009,"name":"address","nodeType":"ElementaryTypeName","src":"9444:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14012,"mutability":"mutable","name":"_superToken","nameLocation":"9475:11:44","nodeType":"VariableDeclaration","scope":14037,"src":"9467:19:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14011,"name":"address","nodeType":"ElementaryTypeName","src":"9467:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9434:58:44"},"returnParameters":{"id":14016,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14015,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14037,"src":"9516:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14014,"name":"uint256","nodeType":"ElementaryTypeName","src":"9516:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9515:9:44"},"scope":14322,"src":"9409:236:44","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":14120,"nodeType":"Block","src":"9857:557:44","statements":[{"expression":{"components":[{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":14058,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13394,"src":"9888:12:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$13382_storage_ptr_$","typeString":"function () pure returns (struct LibFlow.StorageFlow storage pointer)"}},"id":14059,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9888:14:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$13382_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":14060,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9903:10:44","memberName":"flowRecord","nodeType":"MemberAccess","referencedDeclaration":13371,"src":"9888:25:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref)))"}},"id":14062,"indexExpression":{"id":14061,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14039,"src":"9914:5:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9888:32:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref))"}},"id":14064,"indexExpression":{"id":14063,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14041,"src":"9921:11:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9888:45:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$","typeString":"mapping(uint256 => struct LibFlow.FlowRecord storage ref)"}},"id":14066,"indexExpression":{"id":14065,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14043,"src":"9934:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9888:53:44","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$13356_storage","typeString":"struct LibFlow.FlowRecord storage ref"}},"id":14067,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9942:8:44","memberName":"receiver","nodeType":"MemberAccess","referencedDeclaration":13345,"src":"9888:62:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":14068,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13394,"src":"9964:12:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$13382_storage_ptr_$","typeString":"function () pure returns (struct LibFlow.StorageFlow storage pointer)"}},"id":14069,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9964:14:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$13382_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":14070,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9979:10:44","memberName":"flowRecord","nodeType":"MemberAccess","referencedDeclaration":13371,"src":"9964:25:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref)))"}},"id":14072,"indexExpression":{"id":14071,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14039,"src":"9990:5:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9964:32:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref))"}},"id":14074,"indexExpression":{"id":14073,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14041,"src":"9997:11:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9964:45:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$","typeString":"mapping(uint256 => struct LibFlow.FlowRecord storage ref)"}},"id":14076,"indexExpression":{"id":14075,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14043,"src":"10010:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9964:53:44","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$13356_storage","typeString":"struct LibFlow.FlowRecord storage ref"}},"id":14077,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10018:12:44","memberName":"sessionNonce","nodeType":"MemberAccess","referencedDeclaration":13347,"src":"9964:66:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":14078,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13394,"src":"10044:12:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$13382_storage_ptr_$","typeString":"function () pure returns (struct LibFlow.StorageFlow storage pointer)"}},"id":14079,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10044:14:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$13382_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":14080,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10072:10:44","memberName":"flowRecord","nodeType":"MemberAccess","referencedDeclaration":13371,"src":"10044:38:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref)))"}},"id":14082,"indexExpression":{"id":14081,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14039,"src":"10083:5:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10044:45:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref))"}},"id":14084,"indexExpression":{"id":14083,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14041,"src":"10090:11:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10044:58:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$","typeString":"mapping(uint256 => struct LibFlow.FlowRecord storage ref)"}},"id":14086,"indexExpression":{"id":14085,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14043,"src":"10103:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10044:66:44","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$13356_storage","typeString":"struct LibFlow.FlowRecord storage ref"}},"id":14087,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10111:17:44","memberName":"timestampIncrease","nodeType":"MemberAccess","referencedDeclaration":13349,"src":"10044:84:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":14088,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13394,"src":"10142:12:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$13382_storage_ptr_$","typeString":"function () pure returns (struct LibFlow.StorageFlow storage pointer)"}},"id":14089,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10142:14:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$13382_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":14090,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10170:10:44","memberName":"flowRecord","nodeType":"MemberAccess","referencedDeclaration":13371,"src":"10142:38:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref)))"}},"id":14092,"indexExpression":{"id":14091,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14039,"src":"10181:5:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10142:45:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref))"}},"id":14094,"indexExpression":{"id":14093,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14041,"src":"10188:11:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10142:58:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$","typeString":"mapping(uint256 => struct LibFlow.FlowRecord storage ref)"}},"id":14096,"indexExpression":{"id":14095,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14043,"src":"10201:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10142:66:44","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$13356_storage","typeString":"struct LibFlow.FlowRecord storage ref"}},"id":14097,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10209:17:44","memberName":"timestampDecrease","nodeType":"MemberAccess","referencedDeclaration":13351,"src":"10142:84:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":14098,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13394,"src":"10240:12:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$13382_storage_ptr_$","typeString":"function () pure returns (struct LibFlow.StorageFlow storage pointer)"}},"id":14099,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10240:14:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$13382_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":14100,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10255:10:44","memberName":"flowRecord","nodeType":"MemberAccess","referencedDeclaration":13371,"src":"10240:25:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref)))"}},"id":14102,"indexExpression":{"id":14101,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14039,"src":"10266:5:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10240:32:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref))"}},"id":14104,"indexExpression":{"id":14103,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14041,"src":"10273:11:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10240:45:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$","typeString":"mapping(uint256 => struct LibFlow.FlowRecord storage ref)"}},"id":14106,"indexExpression":{"id":14105,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14043,"src":"10286:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10240:53:44","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$13356_storage","typeString":"struct LibFlow.FlowRecord storage ref"}},"id":14107,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10294:6:44","memberName":"taskId","nodeType":"MemberAccess","referencedDeclaration":13353,"src":"10240:60:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":14108,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13394,"src":"10314:12:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$13382_storage_ptr_$","typeString":"function () pure returns (struct LibFlow.StorageFlow storage pointer)"}},"id":14109,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10314:14:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$13382_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":14110,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10342:10:44","memberName":"flowRecord","nodeType":"MemberAccess","referencedDeclaration":13371,"src":"10314:38:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref)))"}},"id":14112,"indexExpression":{"id":14111,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14039,"src":"10353:5:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10314:45:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref))"}},"id":14114,"indexExpression":{"id":14113,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14041,"src":"10360:11:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10314:58:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$","typeString":"mapping(uint256 => struct LibFlow.FlowRecord storage ref)"}},"id":14116,"indexExpression":{"id":14115,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14043,"src":"10373:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10314:66:44","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$13356_storage","typeString":"struct LibFlow.FlowRecord storage ref"}},"id":14117,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10381:16:44","memberName":"isBalanceSettled","nodeType":"MemberAccess","referencedDeclaration":13355,"src":"10314:83:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":14118,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9874:533:44","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes32_$_t_bool_$","typeString":"tuple(address,uint256,uint256,uint256,bytes32,bool)"}},"functionReturnParameters":14057,"id":14119,"nodeType":"Return","src":"9867:540:44"}]},"id":14121,"implemented":true,"kind":"function","modifiers":[],"name":"_getFlowData","nameLocation":"9660:12:44","nodeType":"FunctionDefinition","parameters":{"id":14044,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14039,"mutability":"mutable","name":"_user","nameLocation":"9690:5:44","nodeType":"VariableDeclaration","scope":14121,"src":"9682:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14038,"name":"address","nodeType":"ElementaryTypeName","src":"9682:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14041,"mutability":"mutable","name":"_superToken","nameLocation":"9713:11:44","nodeType":"VariableDeclaration","scope":14121,"src":"9705:19:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14040,"name":"address","nodeType":"ElementaryTypeName","src":"9705:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14043,"mutability":"mutable","name":"_nonce","nameLocation":"9742:6:44","nodeType":"VariableDeclaration","scope":14121,"src":"9734:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14042,"name":"uint256","nodeType":"ElementaryTypeName","src":"9734:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9672:82:44"},"returnParameters":{"id":14057,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14046,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14121,"src":"9802:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14045,"name":"address","nodeType":"ElementaryTypeName","src":"9802:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14048,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14121,"src":"9811:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14047,"name":"uint256","nodeType":"ElementaryTypeName","src":"9811:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14050,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14121,"src":"9820:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14049,"name":"uint256","nodeType":"ElementaryTypeName","src":"9820:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14052,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14121,"src":"9829:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14051,"name":"uint256","nodeType":"ElementaryTypeName","src":"9829:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14054,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14121,"src":"9838:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14053,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9838:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":14056,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14121,"src":"9847:4:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14055,"name":"bool","nodeType":"ElementaryTypeName","src":"9847:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"9801:51:44"},"scope":14322,"src":"9651:763:44","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":14138,"nodeType":"Block","src":"10535:67:44","statements":[{"expression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":14130,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13394,"src":"10552:12:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$13382_storage_ptr_$","typeString":"function () pure returns (struct LibFlow.StorageFlow storage pointer)"}},"id":14131,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10552:14:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$13382_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":14132,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10567:8:44","memberName":"deposits","nodeType":"MemberAccess","referencedDeclaration":13377,"src":"10552:23:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":14134,"indexExpression":{"id":14133,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14123,"src":"10576:5:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10552:30:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":14136,"indexExpression":{"id":14135,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14125,"src":"10583:11:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10552:43:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":14129,"id":14137,"nodeType":"Return","src":"10545:50:44"}]},"id":14139,"implemented":true,"kind":"function","modifiers":[],"name":"_getDepositUser","nameLocation":"10429:15:44","nodeType":"FunctionDefinition","parameters":{"id":14126,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14123,"mutability":"mutable","name":"_user","nameLocation":"10462:5:44","nodeType":"VariableDeclaration","scope":14139,"src":"10454:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14122,"name":"address","nodeType":"ElementaryTypeName","src":"10454:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14125,"mutability":"mutable","name":"_superToken","nameLocation":"10485:11:44","nodeType":"VariableDeclaration","scope":14139,"src":"10477:19:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14124,"name":"address","nodeType":"ElementaryTypeName","src":"10477:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10444:58:44"},"returnParameters":{"id":14129,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14128,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14139,"src":"10526:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14127,"name":"uint256","nodeType":"ElementaryTypeName","src":"10526:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10525:9:44"},"scope":14322,"src":"10420:182:44","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":14152,"nodeType":"Block","src":"10701:65:44","statements":[{"expression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":14146,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13394,"src":"10718:12:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$13382_storage_ptr_$","typeString":"function () pure returns (struct LibFlow.StorageFlow storage pointer)"}},"id":14147,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10718:14:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$13382_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":14148,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10733:13:44","memberName":"totalDeposits","nodeType":"MemberAccess","referencedDeclaration":13381,"src":"10718:28:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":14150,"indexExpression":{"id":14149,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14141,"src":"10747:11:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10718:41:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":14145,"id":14151,"nodeType":"Return","src":"10711:48:44"}]},"id":14153,"implemented":true,"kind":"function","modifiers":[],"name":"_getDepositTotal","nameLocation":"10617:16:44","nodeType":"FunctionDefinition","parameters":{"id":14142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14141,"mutability":"mutable","name":"_superToken","nameLocation":"10651:11:44","nodeType":"VariableDeclaration","scope":14153,"src":"10643:19:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14140,"name":"address","nodeType":"ElementaryTypeName","src":"10643:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10633:35:44"},"returnParameters":{"id":14145,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14144,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14153,"src":"10692:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14143,"name":"uint256","nodeType":"ElementaryTypeName","src":"10692:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10691:9:44"},"scope":14322,"src":"10608:158:44","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":14220,"nodeType":"Block","src":"10982:451:44","statements":[{"assignments":[14168],"declarations":[{"constant":false,"id":14168,"mutability":"mutable","name":"iSuperToken","nameLocation":"11004:11:44","nodeType":"VariableDeclaration","scope":14220,"src":"10992:23:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":14167,"nodeType":"UserDefinedTypeName","pathNode":{"id":14166,"name":"ISuperToken","nameLocations":["10992:11:44"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"10992:11:44"},"referencedDeclaration":7015,"src":"10992:11:44","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"}],"id":14172,"initialValue":{"arguments":[{"id":14170,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14155,"src":"11030:11:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14169,"name":"ISuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7015,"src":"11018:11:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISuperToken_$7015_$","typeString":"type(contract ISuperToken)"}},"id":14171,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11018:24:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"nodeType":"VariableDeclarationStatement","src":"10992:50:44"},{"assignments":[14174],"declarations":[{"constant":false,"id":14174,"mutability":"mutable","name":"flowRate","nameLocation":"11058:8:44","nodeType":"VariableDeclaration","scope":14220,"src":"11052:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":14173,"name":"int96","nodeType":"ElementaryTypeName","src":"11052:5:44","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"id":14183,"initialValue":{"arguments":[{"arguments":[{"id":14179,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"11101:4:44","typeDescriptions":{"typeIdentifier":"t_contract$_LibFlow_$14322","typeString":"library LibFlow"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LibFlow_$14322","typeString":"library LibFlow"}],"id":14178,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11093:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14177,"name":"address","nodeType":"ElementaryTypeName","src":"11093:7:44","typeDescriptions":{}}},"id":14180,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11093:13:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14181,"name":"_receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14159,"src":"11108:9:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":14175,"name":"iSuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14168,"src":"11069:11:44","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"id":14176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11081:11:44","memberName":"getFlowRate","nodeType":"MemberAccess","referencedDeclaration":3274,"src":"11069:23:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_ISuperToken_$7015_$_t_address_$_t_address_$returns$_t_int96_$attached_to$_t_contract$_ISuperToken_$7015_$","typeString":"function (contract ISuperToken,address,address) view returns (int96)"}},"id":14182,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11069:49:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"VariableDeclarationStatement","src":"11052:66:44"},{"condition":{"commonType":{"typeIdentifier":"t_int96","typeString":"int96"},"id":14186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14184,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14174,"src":"11133:8:44","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"30","id":14185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11145:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11133:13:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":14204,"nodeType":"Block","src":"11223:80:44","statements":[{"expression":{"arguments":[{"id":14198,"name":"_receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14159,"src":"11260:9:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_int96","typeString":"int96"},"id":14201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14199,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14174,"src":"11271:8:44","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":14200,"name":"_flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14163,"src":"11282:9:44","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"src":"11271:20:44","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_int96","typeString":"int96"}],"expression":{"id":14195,"name":"iSuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14168,"src":"11237:11:44","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"id":14197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11249:10:44","memberName":"updateFlow","nodeType":"MemberAccess","referencedDeclaration":2151,"src":"11237:22:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$7015_$_t_address_$_t_int96_$returns$_t_bool_$attached_to$_t_contract$_ISuperToken_$7015_$","typeString":"function (contract ISuperToken,address,int96) returns (bool)"}},"id":14202,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11237:55:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14203,"nodeType":"ExpressionStatement","src":"11237:55:44"}]},"id":14205,"nodeType":"IfStatement","src":"11129:174:44","trueBody":{"id":14194,"nodeType":"Block","src":"11148:69:44","statements":[{"expression":{"arguments":[{"id":14190,"name":"_receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14159,"src":"11185:9:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14191,"name":"_flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14163,"src":"11196:9:44","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_int96","typeString":"int96"}],"expression":{"id":14187,"name":"iSuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14168,"src":"11162:11:44","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"id":14189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11174:10:44","memberName":"createFlow","nodeType":"MemberAccess","referencedDeclaration":2054,"src":"11162:22:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$7015_$_t_address_$_t_int96_$returns$_t_bool_$attached_to$_t_contract$_ISuperToken_$7015_$","typeString":"function (contract ISuperToken,address,int96) returns (bool)"}},"id":14192,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11162:44:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14193,"nodeType":"ExpressionStatement","src":"11162:44:44"}]}},{"expression":{"id":14218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":14206,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13394,"src":"11313:12:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$13382_storage_ptr_$","typeString":"function () pure returns (struct LibFlow.StorageFlow storage pointer)"}},"id":14207,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11313:14:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$13382_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":14208,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11337:10:44","memberName":"flowRecord","nodeType":"MemberAccess","referencedDeclaration":13371,"src":"11313:34:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref)))"}},"id":14210,"indexExpression":{"id":14209,"name":"_sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14157,"src":"11348:7:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11313:43:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref))"}},"id":14212,"indexExpression":{"id":14211,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14155,"src":"11357:11:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11313:56:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$","typeString":"mapping(uint256 => struct LibFlow.FlowRecord storage ref)"}},"id":14214,"indexExpression":{"id":14213,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14161,"src":"11370:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11313:64:44","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$13356_storage","typeString":"struct LibFlow.FlowRecord storage ref"}},"id":14215,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"11378:17:44","memberName":"timestampIncrease","nodeType":"MemberAccess","referencedDeclaration":13349,"src":"11313:82:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":14216,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"11398:5:44","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":14217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11417:9:44","memberName":"timestamp","nodeType":"MemberAccess","src":"11398:28:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11313:113:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14219,"nodeType":"ExpressionStatement","src":"11313:113:44"}]},"id":14221,"implemented":true,"kind":"function","modifiers":[],"name":"_increaseFlow","nameLocation":"10823:13:44","nodeType":"FunctionDefinition","parameters":{"id":14164,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14155,"mutability":"mutable","name":"_superToken","nameLocation":"10854:11:44","nodeType":"VariableDeclaration","scope":14221,"src":"10846:19:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14154,"name":"address","nodeType":"ElementaryTypeName","src":"10846:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14157,"mutability":"mutable","name":"_sender","nameLocation":"10883:7:44","nodeType":"VariableDeclaration","scope":14221,"src":"10875:15:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14156,"name":"address","nodeType":"ElementaryTypeName","src":"10875:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14159,"mutability":"mutable","name":"_receiver","nameLocation":"10908:9:44","nodeType":"VariableDeclaration","scope":14221,"src":"10900:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14158,"name":"address","nodeType":"ElementaryTypeName","src":"10900:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14161,"mutability":"mutable","name":"_nonce","nameLocation":"10935:6:44","nodeType":"VariableDeclaration","scope":14221,"src":"10927:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14160,"name":"uint256","nodeType":"ElementaryTypeName","src":"10927:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14163,"mutability":"mutable","name":"_flowRate","nameLocation":"10957:9:44","nodeType":"VariableDeclaration","scope":14221,"src":"10951:15:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":14162,"name":"int96","nodeType":"ElementaryTypeName","src":"10951:5:44","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"10836:136:44"},"returnParameters":{"id":14165,"nodeType":"ParameterList","parameters":[],"src":"10982:0:44"},"scope":14322,"src":"10814:619:44","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":14320,"nodeType":"Block","src":"11607:724:44","statements":[{"assignments":[14236],"declarations":[{"constant":false,"id":14236,"mutability":"mutable","name":"iSuperToken","nameLocation":"11629:11:44","nodeType":"VariableDeclaration","scope":14320,"src":"11617:23:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":14235,"nodeType":"UserDefinedTypeName","pathNode":{"id":14234,"name":"ISuperToken","nameLocations":["11617:11:44"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"11617:11:44"},"referencedDeclaration":7015,"src":"11617:11:44","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"}],"id":14240,"initialValue":{"arguments":[{"id":14238,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14223,"src":"11655:11:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14237,"name":"ISuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7015,"src":"11643:11:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISuperToken_$7015_$","typeString":"type(contract ISuperToken)"}},"id":14239,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11643:24:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"nodeType":"VariableDeclarationStatement","src":"11617:50:44"},{"assignments":[14242],"declarations":[{"constant":false,"id":14242,"mutability":"mutable","name":"flowRate","nameLocation":"11683:8:44","nodeType":"VariableDeclaration","scope":14320,"src":"11677:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":14241,"name":"int96","nodeType":"ElementaryTypeName","src":"11677:5:44","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"id":14251,"initialValue":{"arguments":[{"arguments":[{"id":14247,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"11726:4:44","typeDescriptions":{"typeIdentifier":"t_contract$_LibFlow_$14322","typeString":"library LibFlow"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LibFlow_$14322","typeString":"library LibFlow"}],"id":14246,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11718:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14245,"name":"address","nodeType":"ElementaryTypeName","src":"11718:7:44","typeDescriptions":{}}},"id":14248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11718:13:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14249,"name":"_receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14227,"src":"11733:9:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":14243,"name":"iSuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14236,"src":"11694:11:44","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"id":14244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11706:11:44","memberName":"getFlowRate","nodeType":"MemberAccess","referencedDeclaration":3274,"src":"11694:23:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_ISuperToken_$7015_$_t_address_$_t_address_$returns$_t_int96_$attached_to$_t_contract$_ISuperToken_$7015_$","typeString":"function (contract ISuperToken,address,address) view returns (int96)"}},"id":14250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11694:49:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"VariableDeclarationStatement","src":"11677:66:44"},{"condition":{"commonType":{"typeIdentifier":"t_int96","typeString":"int96"},"id":14256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int96","typeString":"int96"},"id":14254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14252,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14242,"src":"11758:8:44","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":14253,"name":"_flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14231,"src":"11769:9:44","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"src":"11758:20:44","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"30","id":14255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11782:1:44","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11758:25:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":14277,"nodeType":"Block","src":"11864:80:44","statements":[{"expression":{"arguments":[{"id":14271,"name":"_receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14227,"src":"11901:9:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_int96","typeString":"int96"},"id":14274,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14272,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14242,"src":"11912:8:44","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":14273,"name":"_flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14231,"src":"11923:9:44","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"src":"11912:20:44","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_int96","typeString":"int96"}],"expression":{"id":14268,"name":"iSuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14236,"src":"11878:11:44","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"id":14270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11890:10:44","memberName":"updateFlow","nodeType":"MemberAccess","referencedDeclaration":2151,"src":"11878:22:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$7015_$_t_address_$_t_int96_$returns$_t_bool_$attached_to$_t_contract$_ISuperToken_$7015_$","typeString":"function (contract ISuperToken,address,int96) returns (bool)"}},"id":14275,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11878:55:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14276,"nodeType":"ExpressionStatement","src":"11878:55:44"}]},"id":14278,"nodeType":"IfStatement","src":"11754:190:44","trueBody":{"id":14267,"nodeType":"Block","src":"11785:73:44","statements":[{"expression":{"arguments":[{"arguments":[{"id":14262,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"11830:4:44","typeDescriptions":{"typeIdentifier":"t_contract$_LibFlow_$14322","typeString":"library LibFlow"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LibFlow_$14322","typeString":"library LibFlow"}],"id":14261,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11822:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14260,"name":"address","nodeType":"ElementaryTypeName","src":"11822:7:44","typeDescriptions":{}}},"id":14263,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11822:13:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14264,"name":"_receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14227,"src":"11837:9:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":14257,"name":"iSuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14236,"src":"11799:11:44","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"id":14259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11811:10:44","memberName":"deleteFlow","nodeType":"MemberAccess","referencedDeclaration":2248,"src":"11799:22:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$7015_$_t_address_$_t_address_$returns$_t_bool_$attached_to$_t_contract$_ISuperToken_$7015_$","typeString":"function (contract ISuperToken,address,address) returns (bool)"}},"id":14265,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11799:48:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14266,"nodeType":"ExpressionStatement","src":"11799:48:44"}]}},{"expression":{"id":14291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":14279,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13394,"src":"11954:12:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$13382_storage_ptr_$","typeString":"function () pure returns (struct LibFlow.StorageFlow storage pointer)"}},"id":14280,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11954:14:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$13382_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":14281,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11978:10:44","memberName":"flowRecord","nodeType":"MemberAccess","referencedDeclaration":13371,"src":"11954:34:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref)))"}},"id":14283,"indexExpression":{"id":14282,"name":"_sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14225,"src":"11989:7:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11954:43:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref))"}},"id":14285,"indexExpression":{"id":14284,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14223,"src":"11998:11:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11954:56:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$","typeString":"mapping(uint256 => struct LibFlow.FlowRecord storage ref)"}},"id":14287,"indexExpression":{"id":14286,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14229,"src":"12011:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11954:64:44","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$13356_storage","typeString":"struct LibFlow.FlowRecord storage ref"}},"id":14288,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"12019:17:44","memberName":"timestampDecrease","nodeType":"MemberAccess","referencedDeclaration":13351,"src":"11954:82:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":14289,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"12039:5:44","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":14290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12058:9:44","memberName":"timestamp","nodeType":"MemberAccess","src":"12039:28:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11954:113:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14292,"nodeType":"ExpressionStatement","src":"11954:113:44"},{"assignments":[14294],"declarations":[{"constant":false,"id":14294,"mutability":"mutable","name":"controlNonce","nameLocation":"12086:12:44","nodeType":"VariableDeclaration","scope":14320,"src":"12078:20:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14293,"name":"uint256","nodeType":"ElementaryTypeName","src":"12078:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14305,"initialValue":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":14295,"name":"_storageFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13394,"src":"12101:12:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$13382_storage_ptr_$","typeString":"function () pure returns (struct LibFlow.StorageFlow storage pointer)"}},"id":14296,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12101:14:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$13382_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":14297,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12125:10:44","memberName":"flowRecord","nodeType":"MemberAccess","referencedDeclaration":13371,"src":"12101:34:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref)))"}},"id":14299,"indexExpression":{"id":14298,"name":"_sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14225,"src":"12136:7:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12101:43:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref))"}},"id":14301,"indexExpression":{"id":14300,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14223,"src":"12145:11:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12101:56:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$","typeString":"mapping(uint256 => struct LibFlow.FlowRecord storage ref)"}},"id":14303,"indexExpression":{"id":14302,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14229,"src":"12158:6:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12101:64:44","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$13356_storage","typeString":"struct LibFlow.FlowRecord storage ref"}},"id":14304,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12166:12:44","memberName":"controlNonce","nodeType":"MemberAccess","referencedDeclaration":13343,"src":"12101:77:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12078:100:44"},{"expression":{"id":14318,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14306,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"12188:10:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$13307_$","typeString":"type(library LibControl)"}},"id":14308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12208:15:44","memberName":"_storageControl","nodeType":"MemberAccess","referencedDeclaration":12430,"src":"12188:35:44","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$12418_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":14309,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12188:37:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":14310,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12235:13:44","memberName":"controlRecord","nodeType":"MemberAccess","referencedDeclaration":12403,"src":"12188:60:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_ControlRecord_$12369_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibControl.ControlRecord storage ref))"}},"id":14312,"indexExpression":{"id":14311,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14223,"src":"12249:11:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12188:73:44","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ControlRecord_$12369_storage_$","typeString":"mapping(uint256 => struct LibControl.ControlRecord storage ref)"}},"id":14314,"indexExpression":{"id":14313,"name":"controlNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14294,"src":"12262:12:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12188:87:44","typeDescriptions":{"typeIdentifier":"t_struct$_ControlRecord_$12369_storage","typeString":"struct LibControl.ControlRecord storage ref"}},"id":14315,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"12276:17:44","memberName":"timestampDecrease","nodeType":"MemberAccess","referencedDeclaration":12368,"src":"12188:105:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":14316,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"12296:5:44","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":14317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12315:9:44","memberName":"timestamp","nodeType":"MemberAccess","src":"12296:28:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12188:136:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14319,"nodeType":"ExpressionStatement","src":"12188:136:44"}]},"id":14321,"implemented":true,"kind":"function","modifiers":[],"name":"_decreaseFlow","nameLocation":"11448:13:44","nodeType":"FunctionDefinition","parameters":{"id":14232,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14223,"mutability":"mutable","name":"_superToken","nameLocation":"11479:11:44","nodeType":"VariableDeclaration","scope":14321,"src":"11471:19:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14222,"name":"address","nodeType":"ElementaryTypeName","src":"11471:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14225,"mutability":"mutable","name":"_sender","nameLocation":"11508:7:44","nodeType":"VariableDeclaration","scope":14321,"src":"11500:15:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14224,"name":"address","nodeType":"ElementaryTypeName","src":"11500:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14227,"mutability":"mutable","name":"_receiver","nameLocation":"11533:9:44","nodeType":"VariableDeclaration","scope":14321,"src":"11525:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14226,"name":"address","nodeType":"ElementaryTypeName","src":"11525:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14229,"mutability":"mutable","name":"_nonce","nameLocation":"11560:6:44","nodeType":"VariableDeclaration","scope":14321,"src":"11552:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14228,"name":"uint256","nodeType":"ElementaryTypeName","src":"11552:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14231,"mutability":"mutable","name":"_flowRate","nameLocation":"11582:9:44","nodeType":"VariableDeclaration","scope":14321,"src":"11576:15:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":14230,"name":"int96","nodeType":"ElementaryTypeName","src":"11576:5:44","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"11461:136:44"},"returnParameters":{"id":14233,"nodeType":"ParameterList","parameters":[],"src":"11607:0:44"},"scope":14322,"src":"11439:892:44","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":14323,"src":"627:11706:44","usedErrors":[]}],"src":"36:12470:44"},"id":44},"contracts/libraries/core/LibSession.sol":{"ast":{"absolutePath":"contracts/libraries/core/LibSession.sol","exportedSymbols":{"ISuperToken":[7015],"InvalidFlowRate":[12339],"LibControl":[13307],"LibFlow":[14322],"LibSession":[14923],"PreviousSessionStillLive":[14335],"SessionAlreadyEnded":[14339],"SessionNotStarted":[14337],"SuperTokenV1Library":[5145]},"id":14924,"license":"BUSL-1.1","nodeType":"SourceUnit","nodes":[{"id":14324,"literals":["solidity","^","0.8",".9"],"nodeType":"PragmaDirective","src":"36:23:45"},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol","file":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol","id":14326,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14924,"sourceUnit":7668,"src":"61:115:45","symbolAliases":[{"foreign":{"id":14325,"name":"ISuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7015,"src":"69:11:45","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol","file":"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol","id":14328,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14924,"sourceUnit":5146,"src":"177:114:45","symbolAliases":[{"foreign":{"id":14327,"name":"SuperTokenV1Library","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5145,"src":"185:19:45","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/libraries/core/LibControl.sol","file":"./LibControl.sol","id":14331,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14924,"sourceUnit":13308,"src":"293:61:45","symbolAliases":[{"foreign":{"id":14329,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"301:10:45","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":14330,"name":"InvalidFlowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12339,"src":"313:15:45","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/libraries/core/LibFlow.sol","file":"./LibFlow.sol","id":14333,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":14924,"sourceUnit":14323,"src":"355:38:45","symbolAliases":[{"foreign":{"id":14332,"name":"LibFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14322,"src":"363:7:45","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"errorSelector":"9b90a9c6","id":14335,"name":"PreviousSessionStillLive","nameLocation":"401:24:45","nodeType":"ErrorDefinition","parameters":{"id":14334,"nodeType":"ParameterList","parameters":[],"src":"425:2:45"},"src":"395:33:45"},{"errorSelector":"3c2779e5","id":14337,"name":"SessionNotStarted","nameLocation":"435:17:45","nodeType":"ErrorDefinition","parameters":{"id":14336,"nodeType":"ParameterList","parameters":[],"src":"452:2:45"},"src":"429:26:45"},{"errorSelector":"e7a7ee38","id":14339,"name":"SessionAlreadyEnded","nameLocation":"462:19:45","nodeType":"ErrorDefinition","parameters":{"id":14338,"nodeType":"ParameterList","parameters":[],"src":"481:2:45"},"src":"456:28:45"},{"abstract":false,"baseContracts":[],"canonicalName":"LibSession","contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":14923,"linearizedBaseContracts":[14923],"name":"LibSession","nameLocation":"494:10:45","nodeType":"ContractDefinition","nodes":[{"global":false,"id":14343,"libraryName":{"id":14340,"name":"SuperTokenV1Library","nameLocations":["517:19:45"],"nodeType":"IdentifierPath","referencedDeclaration":5145,"src":"517:19:45"},"nodeType":"UsingForDirective","src":"511:42:45","typeName":{"id":14342,"nodeType":"UserDefinedTypeName","pathNode":{"id":14341,"name":"ISuperToken","nameLocations":["541:11:45"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"541:11:45"},"referencedDeclaration":7015,"src":"541:11:45","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}}},{"constant":true,"id":14348,"mutability":"constant","name":"STORAGE_POSITION_SESSION","nameLocation":"576:24:45","nodeType":"VariableDeclaration","scope":14923,"src":"559:67:45","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14344,"name":"bytes32","nodeType":"ElementaryTypeName","src":"559:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"64732e73657373696f6e","id":14346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"613:12:45","typeDescriptions":{"typeIdentifier":"t_stringliteral_9cd9afe22fea86221d6e8117226b65bb0e2af8c4f5b8abf255fb0afcad4a3a9c","typeString":"literal_string \"ds.session\""},"value":"ds.session"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_9cd9afe22fea86221d6e8117226b65bb0e2af8c4f5b8abf255fb0afcad4a3a9c","typeString":"literal_string \"ds.session\""}],"id":14345,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"603:9:45","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":14347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"603:23:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"canonicalName":"LibSession.SessionCurrent","id":14354,"members":[{"constant":false,"id":14350,"mutability":"mutable","name":"timestamp","nameLocation":"673:9:45","nodeType":"VariableDeclaration","scope":14354,"src":"665:17:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14349,"name":"uint256","nodeType":"ElementaryTypeName","src":"665:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14353,"mutability":"mutable","name":"superTokens","nameLocation":"702:11:45","nodeType":"VariableDeclaration","scope":14354,"src":"692:21:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":14351,"name":"address","nodeType":"ElementaryTypeName","src":"692:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":14352,"nodeType":"ArrayTypeName","src":"692:9:45","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"name":"SessionCurrent","nameLocation":"640:14:45","nodeType":"StructDefinition","scope":14923,"src":"633:87:45","visibility":"public"},{"canonicalName":"LibSession.SessionRecord","id":14363,"members":[{"constant":false,"id":14356,"mutability":"mutable","name":"effectiveFlowRate","nameLocation":"763:17:45","nodeType":"VariableDeclaration","scope":14363,"src":"757:23:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":14355,"name":"int96","nodeType":"ElementaryTypeName","src":"757:5:45","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"},{"constant":false,"id":14358,"mutability":"mutable","name":"flowRate","nameLocation":"797:8:45","nodeType":"VariableDeclaration","scope":14363,"src":"790:15:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":14357,"name":"uint96","nodeType":"ElementaryTypeName","src":"790:6:45","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":14360,"mutability":"mutable","name":"timestampStart","nameLocation":"823:14:45","nodeType":"VariableDeclaration","scope":14363,"src":"815:22:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14359,"name":"uint256","nodeType":"ElementaryTypeName","src":"815:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14362,"mutability":"mutable","name":"timestampStop","nameLocation":"855:13:45","nodeType":"VariableDeclaration","scope":14363,"src":"847:21:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14361,"name":"uint256","nodeType":"ElementaryTypeName","src":"847:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"SessionRecord","nameLocation":"733:13:45","nodeType":"StructDefinition","scope":14923,"src":"726:149:45","visibility":"public"},{"canonicalName":"LibSession.StorageSession","id":14384,"members":[{"constant":false,"id":14369,"mutability":"mutable","name":"sessionNonce","nameLocation":"961:12:45","nodeType":"VariableDeclaration","scope":14384,"src":"913:60:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":14368,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":14364,"name":"address","nodeType":"ElementaryTypeName","src":"921:7:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"913:47:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":14367,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":14365,"name":"address","nodeType":"ElementaryTypeName","src":"940:7:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"932:27:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":14366,"name":"uint256","nodeType":"ElementaryTypeName","src":"951:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"internal"},{"constant":false,"id":14378,"mutability":"mutable","name":"sessionRecord","nameLocation":"1107:13:45","nodeType":"VariableDeclaration","scope":14384,"src":"1033:87:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_SessionRecord_$14363_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibSession.SessionRecord)))"},"typeName":{"id":14377,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":14370,"name":"address","nodeType":"ElementaryTypeName","src":"1041:7:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1033:73:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_SessionRecord_$14363_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibSession.SessionRecord)))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":14376,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":14371,"name":"address","nodeType":"ElementaryTypeName","src":"1060:7:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1052:53:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_SessionRecord_$14363_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibSession.SessionRecord))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":14375,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":14372,"name":"uint256","nodeType":"ElementaryTypeName","src":"1079:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1071:33:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_SessionRecord_$14363_storage_$","typeString":"mapping(uint256 => struct LibSession.SessionRecord)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":14374,"nodeType":"UserDefinedTypeName","pathNode":{"id":14373,"name":"SessionRecord","nameLocations":["1090:13:45"],"nodeType":"IdentifierPath","referencedDeclaration":14363,"src":"1090:13:45"},"referencedDeclaration":14363,"src":"1090:13:45","typeDescriptions":{"typeIdentifier":"t_struct$_SessionRecord_$14363_storage_ptr","typeString":"struct LibSession.SessionRecord"}}}}},"visibility":"internal"},{"constant":false,"id":14383,"mutability":"mutable","name":"sessionCurrent","nameLocation":"1225:14:45","nodeType":"VariableDeclaration","scope":14384,"src":"1190:49:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_SessionCurrent_$14354_storage_$","typeString":"mapping(address => struct LibSession.SessionCurrent)"},"typeName":{"id":14382,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":14379,"name":"address","nodeType":"ElementaryTypeName","src":"1198:7:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1190:34:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_SessionCurrent_$14354_storage_$","typeString":"mapping(address => struct LibSession.SessionCurrent)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":14381,"nodeType":"UserDefinedTypeName","pathNode":{"id":14380,"name":"SessionCurrent","nameLocations":["1209:14:45"],"nodeType":"IdentifierPath","referencedDeclaration":14354,"src":"1209:14:45"},"referencedDeclaration":14354,"src":"1209:14:45","typeDescriptions":{"typeIdentifier":"t_struct$_SessionCurrent_$14354_storage_ptr","typeString":"struct LibSession.SessionCurrent"}}},"visibility":"internal"}],"name":"StorageSession","nameLocation":"888:14:45","nodeType":"StructDefinition","scope":14923,"src":"881:405:45","visibility":"public"},{"body":{"id":14395,"nodeType":"Block","src":"1396:120:45","statements":[{"assignments":[14391],"declarations":[{"constant":false,"id":14391,"mutability":"mutable","name":"position","nameLocation":"1414:8:45","nodeType":"VariableDeclaration","scope":14395,"src":"1406:16:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14390,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1406:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":14393,"initialValue":{"id":14392,"name":"STORAGE_POSITION_SESSION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14348,"src":"1425:24:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"1406:43:45"},{"AST":{"nodeType":"YulBlock","src":"1468:42:45","statements":[{"nodeType":"YulAssignment","src":"1482:18:45","value":{"name":"position","nodeType":"YulIdentifier","src":"1492:8:45"},"variableNames":[{"name":"s.slot","nodeType":"YulIdentifier","src":"1482:6:45"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":14391,"isOffset":false,"isSlot":false,"src":"1492:8:45","valueSize":1},{"declaration":14388,"isOffset":false,"isSlot":true,"src":"1482:6:45","suffix":"slot","valueSize":1}],"id":14394,"nodeType":"InlineAssembly","src":"1459:51:45"}]},"id":14396,"implemented":true,"kind":"function","modifiers":[],"name":"_storageSession","nameLocation":"1301:15:45","nodeType":"FunctionDefinition","parameters":{"id":14385,"nodeType":"ParameterList","parameters":[],"src":"1316:2:45"},"returnParameters":{"id":14389,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14388,"mutability":"mutable","name":"s","nameLocation":"1389:1:45","nodeType":"VariableDeclaration","scope":14396,"src":"1366:24:45","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$14384_storage_ptr","typeString":"struct LibSession.StorageSession"},"typeName":{"id":14387,"nodeType":"UserDefinedTypeName","pathNode":{"id":14386,"name":"StorageSession","nameLocations":["1366:14:45"],"nodeType":"IdentifierPath","referencedDeclaration":14384,"src":"1366:14:45"},"referencedDeclaration":14384,"src":"1366:14:45","typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$14384_storage_ptr","typeString":"struct LibSession.StorageSession"}},"visibility":"internal"}],"src":"1365:26:45"},"scope":14923,"src":"1292:224:45","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":14505,"nodeType":"Block","src":"2167:964:45","statements":[{"assignments":[14408],"declarations":[{"constant":false,"id":14408,"mutability":"mutable","name":"sSession","nameLocation":"2200:8:45","nodeType":"VariableDeclaration","scope":14505,"src":"2177:31:45","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$14384_storage_ptr","typeString":"struct LibSession.StorageSession"},"typeName":{"id":14407,"nodeType":"UserDefinedTypeName","pathNode":{"id":14406,"name":"StorageSession","nameLocations":["2177:14:45"],"nodeType":"IdentifierPath","referencedDeclaration":14384,"src":"2177:14:45"},"referencedDeclaration":14384,"src":"2177:14:45","typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$14384_storage_ptr","typeString":"struct LibSession.StorageSession"}},"visibility":"internal"}],"id":14411,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":14409,"name":"_storageSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14396,"src":"2211:15:45","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageSession_$14384_storage_ptr_$","typeString":"function () pure returns (struct LibSession.StorageSession storage pointer)"}},"id":14410,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2211:17:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$14384_storage_ptr","typeString":"struct LibSession.StorageSession storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2177:51:45"},{"assignments":[14413],"declarations":[{"constant":false,"id":14413,"mutability":"mutable","name":"newNonce","nameLocation":"2246:8:45","nodeType":"VariableDeclaration","scope":14505,"src":"2238:16:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14412,"name":"uint256","nodeType":"ElementaryTypeName","src":"2238:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14419,"initialValue":{"arguments":[{"expression":{"id":14415,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2270:3:45","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":14416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2274:6:45","memberName":"sender","nodeType":"MemberAccess","src":"2270:10:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14417,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14399,"src":"2282:11:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":14414,"name":"_getNewNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14700,"src":"2257:12:45","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":14418,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2257:37:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2238:56:45"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":14437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14420,"name":"newNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14413,"src":"2322:8:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":14421,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2333:1:45","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2322:12:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"id":14423,"name":"sSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14408,"src":"2350:8:45","typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$14384_storage_ptr","typeString":"struct LibSession.StorageSession storage pointer"}},"id":14424,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2372:13:45","memberName":"sessionRecord","nodeType":"MemberAccess","referencedDeclaration":14378,"src":"2350:35:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_SessionRecord_$14363_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibSession.SessionRecord storage ref)))"}},"id":14427,"indexExpression":{"expression":{"id":14425,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2386:3:45","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":14426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2390:6:45","memberName":"sender","nodeType":"MemberAccess","src":"2386:10:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2350:47:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_SessionRecord_$14363_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibSession.SessionRecord storage ref))"}},"id":14429,"indexExpression":{"id":14428,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14399,"src":"2398:11:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2350:60:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_SessionRecord_$14363_storage_$","typeString":"mapping(uint256 => struct LibSession.SessionRecord storage ref)"}},"id":14433,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14432,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14430,"name":"newNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14413,"src":"2411:8:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":14431,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2422:1:45","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2411:12:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2350:74:45","typeDescriptions":{"typeIdentifier":"t_struct$_SessionRecord_$14363_storage","typeString":"struct LibSession.SessionRecord storage ref"}},"id":14434,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2442:13:45","memberName":"timestampStop","nodeType":"MemberAccess","referencedDeclaration":14362,"src":"2350:105:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":14435,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2471:1:45","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2350:122:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2322:150:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14441,"nodeType":"IfStatement","src":"2305:211:45","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":14438,"name":"PreviousSessionStillLive","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14335,"src":"2490:24:45","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":14439,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2490:26:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14440,"nodeType":"RevertStatement","src":"2483:33:45"}},{"assignments":[14443],"declarations":[{"constant":false,"id":14443,"mutability":"mutable","name":"effectiveFlowRate","nameLocation":"2533:17:45","nodeType":"VariableDeclaration","scope":14505,"src":"2527:23:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":14442,"name":"int96","nodeType":"ElementaryTypeName","src":"2527:5:45","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"id":14450,"initialValue":{"arguments":[{"expression":{"id":14445,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2588:3:45","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":14446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2592:6:45","memberName":"sender","nodeType":"MemberAccess","src":"2588:10:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14447,"name":"_flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14401,"src":"2612:9:45","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"id":14448,"name":"_tag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14403,"src":"2635:4:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14444,"name":"_getEffectiveFlowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14682,"src":"2553:21:45","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint96_$_t_uint256_$returns$_t_int96_$","typeString":"function (address,uint96,uint256) view returns (int96)"}},"id":14449,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2553:96:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"VariableDeclarationStatement","src":"2527:122:45"},{"expression":{"id":14463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"id":14451,"name":"sSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14408,"src":"2699:8:45","typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$14384_storage_ptr","typeString":"struct LibSession.StorageSession storage pointer"}},"id":14457,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2717:13:45","memberName":"sessionRecord","nodeType":"MemberAccess","referencedDeclaration":14378,"src":"2699:31:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_SessionRecord_$14363_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibSession.SessionRecord storage ref)))"}},"id":14458,"indexExpression":{"expression":{"id":14453,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2731:3:45","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":14454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2735:6:45","memberName":"sender","nodeType":"MemberAccess","src":"2731:10:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2699:43:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_SessionRecord_$14363_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibSession.SessionRecord storage ref))"}},"id":14459,"indexExpression":{"id":14455,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14399,"src":"2743:11:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2699:56:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_SessionRecord_$14363_storage_$","typeString":"mapping(uint256 => struct LibSession.SessionRecord storage ref)"}},"id":14460,"indexExpression":{"id":14456,"name":"newNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14413,"src":"2756:8:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2699:66:45","typeDescriptions":{"typeIdentifier":"t_struct$_SessionRecord_$14363_storage","typeString":"struct LibSession.SessionRecord storage ref"}},"id":14461,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2779:17:45","memberName":"effectiveFlowRate","nodeType":"MemberAccess","referencedDeclaration":14356,"src":"2699:97:45","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14462,"name":"effectiveFlowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14443,"src":"2799:17:45","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"src":"2699:117:45","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"id":14464,"nodeType":"ExpressionStatement","src":"2699:117:45"},{"expression":{"id":14477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"id":14465,"name":"sSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14408,"src":"2826:8:45","typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$14384_storage_ptr","typeString":"struct LibSession.StorageSession storage pointer"}},"id":14471,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2844:13:45","memberName":"sessionRecord","nodeType":"MemberAccess","referencedDeclaration":14378,"src":"2826:31:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_SessionRecord_$14363_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibSession.SessionRecord storage ref)))"}},"id":14472,"indexExpression":{"expression":{"id":14467,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2858:3:45","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":14468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2862:6:45","memberName":"sender","nodeType":"MemberAccess","src":"2858:10:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2826:43:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_SessionRecord_$14363_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibSession.SessionRecord storage ref))"}},"id":14473,"indexExpression":{"id":14469,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14399,"src":"2870:11:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2826:56:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_SessionRecord_$14363_storage_$","typeString":"mapping(uint256 => struct LibSession.SessionRecord storage ref)"}},"id":14474,"indexExpression":{"id":14470,"name":"newNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14413,"src":"2883:8:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2826:66:45","typeDescriptions":{"typeIdentifier":"t_struct$_SessionRecord_$14363_storage","typeString":"struct LibSession.SessionRecord storage ref"}},"id":14475,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2893:8:45","memberName":"flowRate","nodeType":"MemberAccess","referencedDeclaration":14358,"src":"2826:75:45","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14476,"name":"_flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14401,"src":"2904:9:45","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"2826:87:45","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"id":14478,"nodeType":"ExpressionStatement","src":"2826:87:45"},{"expression":{"id":14492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"id":14479,"name":"sSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14408,"src":"2923:8:45","typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$14384_storage_ptr","typeString":"struct LibSession.StorageSession storage pointer"}},"id":14485,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2941:13:45","memberName":"sessionRecord","nodeType":"MemberAccess","referencedDeclaration":14378,"src":"2923:31:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_SessionRecord_$14363_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibSession.SessionRecord storage ref)))"}},"id":14486,"indexExpression":{"expression":{"id":14481,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2955:3:45","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":14482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2959:6:45","memberName":"sender","nodeType":"MemberAccess","src":"2955:10:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2923:43:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_SessionRecord_$14363_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibSession.SessionRecord storage ref))"}},"id":14487,"indexExpression":{"id":14483,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14399,"src":"2967:11:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2923:56:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_SessionRecord_$14363_storage_$","typeString":"mapping(uint256 => struct LibSession.SessionRecord storage ref)"}},"id":14488,"indexExpression":{"id":14484,"name":"newNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14413,"src":"2980:8:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2923:66:45","typeDescriptions":{"typeIdentifier":"t_struct$_SessionRecord_$14363_storage","typeString":"struct LibSession.SessionRecord storage ref"}},"id":14489,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2990:14:45","memberName":"timestampStart","nodeType":"MemberAccess","referencedDeclaration":14360,"src":"2923:81:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":14490,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"3007:5:45","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":14491,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3026:9:45","memberName":"timestamp","nodeType":"MemberAccess","src":"3007:28:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2923:112:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14493,"nodeType":"ExpressionStatement","src":"2923:112:45"},{"expression":{"id":14503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":14494,"name":"_storageSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14396,"src":"3064:15:45","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageSession_$14384_storage_ptr_$","typeString":"function () pure returns (struct LibSession.StorageSession storage pointer)"}},"id":14495,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3064:17:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$14384_storage_ptr","typeString":"struct LibSession.StorageSession storage pointer"}},"id":14496,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3082:12:45","memberName":"sessionNonce","nodeType":"MemberAccess","referencedDeclaration":14369,"src":"3064:30:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":14499,"indexExpression":{"expression":{"id":14497,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3095:3:45","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":14498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3099:6:45","memberName":"sender","nodeType":"MemberAccess","src":"3095:10:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3064:42:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":14501,"indexExpression":{"id":14500,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14399,"src":"3107:11:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3064:55:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":14502,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3123:1:45","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3064:60:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14504,"nodeType":"ExpressionStatement","src":"3064:60:45"}]},"documentation":{"id":14397,"nodeType":"StructuredDocumentation","src":"1606:441:45","text":" startSession helps with\n 1. ensures only one supertoken session per broadcaster is open\n (may have multiple sessionRecord but at different supertokens).\n 2. to verify if different supertoken session belongs to the same \"livestream\",\n for every supertoken latest nonce, `timestampStart` must equal `currentTimestamp`,\n and currentTimestamp != 0. Do check externally (frontend/backend)"},"id":14506,"implemented":true,"kind":"function","modifiers":[],"name":"_startSession","nameLocation":"2061:13:45","nodeType":"FunctionDefinition","parameters":{"id":14404,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14399,"mutability":"mutable","name":"_superToken","nameLocation":"2092:11:45","nodeType":"VariableDeclaration","scope":14506,"src":"2084:19:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14398,"name":"address","nodeType":"ElementaryTypeName","src":"2084:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14401,"mutability":"mutable","name":"_flowRate","nameLocation":"2120:9:45","nodeType":"VariableDeclaration","scope":14506,"src":"2113:16:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":14400,"name":"uint96","nodeType":"ElementaryTypeName","src":"2113:6:45","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":14403,"mutability":"mutable","name":"_tag","nameLocation":"2147:4:45","nodeType":"VariableDeclaration","scope":14506,"src":"2139:12:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14402,"name":"uint256","nodeType":"ElementaryTypeName","src":"2139:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2074:83:45"},"returnParameters":{"id":14405,"nodeType":"ParameterList","parameters":[],"src":"2167:0:45"},"scope":14923,"src":"2052:1079:45","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":14602,"nodeType":"Block","src":"3267:815:45","statements":[{"assignments":[14512],"declarations":[{"constant":false,"id":14512,"mutability":"mutable","name":"activeNonce","nameLocation":"3285:11:45","nodeType":"VariableDeclaration","scope":14602,"src":"3277:19:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14511,"name":"uint256","nodeType":"ElementaryTypeName","src":"3277:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14518,"initialValue":{"arguments":[{"expression":{"id":14514,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3316:3:45","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":14515,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3320:6:45","memberName":"sender","nodeType":"MemberAccess","src":"3316:10:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14516,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14508,"src":"3328:11:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":14513,"name":"_getCurrentNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14729,"src":"3299:16:45","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":14517,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3299:41:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3277:63:45"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14531,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":14519,"name":"_storageSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14396,"src":"3367:15:45","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageSession_$14384_storage_ptr_$","typeString":"function () pure returns (struct LibSession.StorageSession storage pointer)"}},"id":14520,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3367:17:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$14384_storage_ptr","typeString":"struct LibSession.StorageSession storage pointer"}},"id":14521,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3398:13:45","memberName":"sessionRecord","nodeType":"MemberAccess","referencedDeclaration":14378,"src":"3367:44:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_SessionRecord_$14363_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibSession.SessionRecord storage ref)))"}},"id":14524,"indexExpression":{"expression":{"id":14522,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3412:3:45","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":14523,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3416:6:45","memberName":"sender","nodeType":"MemberAccess","src":"3412:10:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3367:56:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_SessionRecord_$14363_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibSession.SessionRecord storage ref))"}},"id":14526,"indexExpression":{"id":14525,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14508,"src":"3424:11:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3367:69:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_SessionRecord_$14363_storage_$","typeString":"mapping(uint256 => struct LibSession.SessionRecord storage ref)"}},"id":14528,"indexExpression":{"id":14527,"name":"activeNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14512,"src":"3437:11:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3367:82:45","typeDescriptions":{"typeIdentifier":"t_struct$_SessionRecord_$14363_storage","typeString":"struct LibSession.SessionRecord storage ref"}},"id":14529,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3467:14:45","memberName":"timestampStart","nodeType":"MemberAccess","referencedDeclaration":14360,"src":"3367:114:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":14530,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3485:1:45","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3367:119:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14535,"nodeType":"IfStatement","src":"3350:173:45","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":14532,"name":"SessionNotStarted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14337,"src":"3504:17:45","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":14533,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3504:19:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14534,"nodeType":"RevertStatement","src":"3497:26:45"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":14536,"name":"_storageSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14396,"src":"3550:15:45","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageSession_$14384_storage_ptr_$","typeString":"function () pure returns (struct LibSession.StorageSession storage pointer)"}},"id":14537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3550:17:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$14384_storage_ptr","typeString":"struct LibSession.StorageSession storage pointer"}},"id":14538,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3581:13:45","memberName":"sessionRecord","nodeType":"MemberAccess","referencedDeclaration":14378,"src":"3550:44:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_SessionRecord_$14363_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibSession.SessionRecord storage ref)))"}},"id":14541,"indexExpression":{"expression":{"id":14539,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3595:3:45","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":14540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3599:6:45","memberName":"sender","nodeType":"MemberAccess","src":"3595:10:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3550:56:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_SessionRecord_$14363_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibSession.SessionRecord storage ref))"}},"id":14543,"indexExpression":{"id":14542,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14508,"src":"3607:11:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3550:69:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_SessionRecord_$14363_storage_$","typeString":"mapping(uint256 => struct LibSession.SessionRecord storage ref)"}},"id":14545,"indexExpression":{"id":14544,"name":"activeNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14512,"src":"3620:11:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3550:82:45","typeDescriptions":{"typeIdentifier":"t_struct$_SessionRecord_$14363_storage","typeString":"struct LibSession.SessionRecord storage ref"}},"id":14546,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3650:13:45","memberName":"timestampStop","nodeType":"MemberAccess","referencedDeclaration":14362,"src":"3550:113:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":14547,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3667:1:45","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3550:118:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14552,"nodeType":"IfStatement","src":"3533:174:45","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":14549,"name":"SessionAlreadyEnded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14339,"src":"3686:19:45","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":14550,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3686:21:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14551,"nodeType":"RevertStatement","src":"3679:28:45"}},{"assignments":[14555],"declarations":[{"constant":false,"id":14555,"mutability":"mutable","name":"iSuperToken","nameLocation":"3730:11:45","nodeType":"VariableDeclaration","scope":14602,"src":"3718:23:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"},"typeName":{"id":14554,"nodeType":"UserDefinedTypeName","pathNode":{"id":14553,"name":"ISuperToken","nameLocations":["3718:11:45"],"nodeType":"IdentifierPath","referencedDeclaration":7015,"src":"3718:11:45"},"referencedDeclaration":7015,"src":"3718:11:45","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"visibility":"internal"}],"id":14559,"initialValue":{"arguments":[{"id":14557,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14508,"src":"3756:11:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14556,"name":"ISuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7015,"src":"3744:11:45","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISuperToken_$7015_$","typeString":"type(contract ISuperToken)"}},"id":14558,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3744:24:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"nodeType":"VariableDeclarationStatement","src":"3718:50:45"},{"assignments":[14561],"declarations":[{"constant":false,"id":14561,"mutability":"mutable","name":"flowRate","nameLocation":"3784:8:45","nodeType":"VariableDeclaration","scope":14602,"src":"3778:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":14560,"name":"int96","nodeType":"ElementaryTypeName","src":"3778:5:45","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"id":14571,"initialValue":{"arguments":[{"arguments":[{"id":14566,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3827:4:45","typeDescriptions":{"typeIdentifier":"t_contract$_LibSession_$14923","typeString":"library LibSession"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LibSession_$14923","typeString":"library LibSession"}],"id":14565,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3819:7:45","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14564,"name":"address","nodeType":"ElementaryTypeName","src":"3819:7:45","typeDescriptions":{}}},"id":14567,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3819:13:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":14568,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3834:3:45","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":14569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3838:6:45","memberName":"sender","nodeType":"MemberAccess","src":"3834:10:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":14562,"name":"iSuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14555,"src":"3795:11:45","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"id":14563,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3807:11:45","memberName":"getFlowRate","nodeType":"MemberAccess","referencedDeclaration":3274,"src":"3795:23:45","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_ISuperToken_$7015_$_t_address_$_t_address_$returns$_t_int96_$attached_to$_t_contract$_ISuperToken_$7015_$","typeString":"function (contract ISuperToken,address,address) view returns (int96)"}},"id":14570,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3795:50:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"VariableDeclarationStatement","src":"3778:67:45"},{"condition":{"commonType":{"typeIdentifier":"t_int96","typeString":"int96"},"id":14574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14572,"name":"flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14561,"src":"3859:8:45","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":14573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3871:1:45","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3859:13:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14586,"nodeType":"IfStatement","src":"3855:68:45","trueBody":{"expression":{"arguments":[{"arguments":[{"id":14580,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3905:4:45","typeDescriptions":{"typeIdentifier":"t_contract$_LibSession_$14923","typeString":"library LibSession"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LibSession_$14923","typeString":"library LibSession"}],"id":14579,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3897:7:45","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14578,"name":"address","nodeType":"ElementaryTypeName","src":"3897:7:45","typeDescriptions":{}}},"id":14581,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3897:13:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":14582,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3912:3:45","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":14583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3916:6:45","memberName":"sender","nodeType":"MemberAccess","src":"3912:10:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":14575,"name":"iSuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14555,"src":"3874:11:45","typeDescriptions":{"typeIdentifier":"t_contract$_ISuperToken_$7015","typeString":"contract ISuperToken"}},"id":14577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3886:10:45","memberName":"deleteFlow","nodeType":"MemberAccess","referencedDeclaration":2248,"src":"3874:22:45","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ISuperToken_$7015_$_t_address_$_t_address_$returns$_t_bool_$attached_to$_t_contract$_ISuperToken_$7015_$","typeString":"function (contract ISuperToken,address,address) returns (bool)"}},"id":14584,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3874:49:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14585,"nodeType":"ExpressionStatement","src":"3874:49:45"}},{"expression":{"id":14600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":14587,"name":"_storageSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14396,"src":"3952:15:45","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageSession_$14384_storage_ptr_$","typeString":"function () pure returns (struct LibSession.StorageSession storage pointer)"}},"id":14588,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3952:17:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$14384_storage_ptr","typeString":"struct LibSession.StorageSession storage pointer"}},"id":14589,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3979:13:45","memberName":"sessionRecord","nodeType":"MemberAccess","referencedDeclaration":14378,"src":"3952:40:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_SessionRecord_$14363_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibSession.SessionRecord storage ref)))"}},"id":14592,"indexExpression":{"expression":{"id":14590,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3993:3:45","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":14591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3997:6:45","memberName":"sender","nodeType":"MemberAccess","src":"3993:10:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3952:52:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_SessionRecord_$14363_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibSession.SessionRecord storage ref))"}},"id":14594,"indexExpression":{"id":14593,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14508,"src":"4005:11:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3952:65:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_SessionRecord_$14363_storage_$","typeString":"mapping(uint256 => struct LibSession.SessionRecord storage ref)"}},"id":14596,"indexExpression":{"id":14595,"name":"activeNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14512,"src":"4018:11:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3952:78:45","typeDescriptions":{"typeIdentifier":"t_struct$_SessionRecord_$14363_storage","typeString":"struct LibSession.SessionRecord storage ref"}},"id":14597,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4044:13:45","memberName":"timestampStop","nodeType":"MemberAccess","referencedDeclaration":14362,"src":"3952:105:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":14598,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"4060:5:45","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":14599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4066:9:45","memberName":"timestamp","nodeType":"MemberAccess","src":"4060:15:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3952:123:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14601,"nodeType":"ExpressionStatement","src":"3952:123:45"}]},"id":14603,"implemented":true,"kind":"function","modifiers":[],"name":"_stopSession","nameLocation":"3224:12:45","nodeType":"FunctionDefinition","parameters":{"id":14509,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14508,"mutability":"mutable","name":"_superToken","nameLocation":"3245:11:45","nodeType":"VariableDeclaration","scope":14603,"src":"3237:19:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14507,"name":"address","nodeType":"ElementaryTypeName","src":"3237:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3236:21:45"},"returnParameters":{"id":14510,"nodeType":"ParameterList","parameters":[],"src":"3267:0:45"},"scope":14923,"src":"3215:867:45","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":14681,"nodeType":"Block","src":"4403:509:45","statements":[{"assignments":[14615],"declarations":[{"constant":false,"id":14615,"mutability":"mutable","name":"bps","nameLocation":"4420:3:45","nodeType":"VariableDeclaration","scope":14681,"src":"4413:10:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":14614,"name":"uint16","nodeType":"ElementaryTypeName","src":"4413:6:45","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"id":14616,"nodeType":"VariableDeclarationStatement","src":"4413:10:45"},{"assignments":[14618],"declarations":[{"constant":false,"id":14618,"mutability":"mutable","name":"sbps","nameLocation":"4440:4:45","nodeType":"VariableDeclaration","scope":14681,"src":"4433:11:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":14617,"name":"uint16","nodeType":"ElementaryTypeName","src":"4433:6:45","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"id":14625,"initialValue":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14619,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"4447:10:45","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$13307_$","typeString":"type(library LibControl)"}},"id":14620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4458:15:45","memberName":"_storageControl","nodeType":"MemberAccess","referencedDeclaration":12430,"src":"4447:26:45","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$12418_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":14621,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4447:28:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":14622,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4476:4:45","memberName":"sbps","nodeType":"MemberAccess","referencedDeclaration":12376,"src":"4447:33:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint16_$","typeString":"mapping(address => uint16)"}},"id":14624,"indexExpression":{"id":14623,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14605,"src":"4481:5:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4447:40:45","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"VariableDeclarationStatement","src":"4433:54:45"},{"condition":{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":14628,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14626,"name":"sbps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14618,"src":"4501:4:45","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":14627,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4508:1:45","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4501:8:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":14646,"nodeType":"Block","src":"4552:119:45","statements":[{"condition":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14634,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"4570:10:45","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$13307_$","typeString":"type(library LibControl)"}},"id":14635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4581:13:45","memberName":"_isBPSEnabled","nodeType":"MemberAccess","referencedDeclaration":13105,"src":"4570:24:45","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":14636,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4570:26:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14645,"nodeType":"IfStatement","src":"4566:94:45","trueBody":{"expression":{"id":14643,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14637,"name":"bps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14615,"src":"4614:3:45","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":14640,"name":"_flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14607,"src":"4644:9:45","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"id":14641,"name":"_tag","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14609,"src":"4655:4:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":14638,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"4620:10:45","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$13307_$","typeString":"type(library LibControl)"}},"id":14639,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4631:12:45","memberName":"_getValidBPS","nodeType":"MemberAccess","referencedDeclaration":13150,"src":"4620:23:45","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint96_$_t_uint256_$returns$_t_uint16_$","typeString":"function (uint96,uint256) view returns (uint16)"}},"id":14642,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4620:40:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"4614:46:45","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"id":14644,"nodeType":"ExpressionStatement","src":"4614:46:45"}}]},"id":14647,"nodeType":"IfStatement","src":"4497:174:45","trueBody":{"id":14633,"nodeType":"Block","src":"4511:35:45","statements":[{"expression":{"id":14631,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14629,"name":"bps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14615,"src":"4525:3:45","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14630,"name":"sbps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14618,"src":"4531:4:45","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"4525:10:45","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"id":14632,"nodeType":"ExpressionStatement","src":"4525:10:45"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":14650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14648,"name":"bps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14615,"src":"4685:3:45","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":14649,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4692:1:45","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4685:8:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":14679,"nodeType":"Block","src":"4749:157:45","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint96","typeString":"uint96"},"id":14663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint96","typeString":"uint96"},"id":14659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14657,"name":"_flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14607,"src":"4768:9:45","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":14658,"name":"bps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14615,"src":"4780:3:45","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"4768:15:45","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"id":14660,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4767:17:45","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":14661,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"4787:10:45","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$13307_$","typeString":"type(library LibControl)"}},"id":14662,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4798:6:45","memberName":"bpsMax","nodeType":"MemberAccess","referencedDeclaration":12360,"src":"4787:17:45","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"4767:37:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14667,"nodeType":"IfStatement","src":"4763:67:45","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":14664,"name":"InvalidFlowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12339,"src":"4813:15:45","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":14665,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4813:17:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14666,"nodeType":"RevertStatement","src":"4806:24:45"}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint96","typeString":"uint96"},"id":14676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint96","typeString":"uint96"},"id":14672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14670,"name":"_flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14607,"src":"4858:9:45","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":14671,"name":"bps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14615,"src":"4870:3:45","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"4858:15:45","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"id":14673,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4857:17:45","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"expression":{"id":14674,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"4877:10:45","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$13307_$","typeString":"type(library LibControl)"}},"id":14675,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4888:6:45","memberName":"bpsMax","nodeType":"MemberAccess","referencedDeclaration":12360,"src":"4877:17:45","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"4857:37:45","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":14669,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4851:5:45","typeDescriptions":{"typeIdentifier":"t_type$_t_int96_$","typeString":"type(int96)"},"typeName":{"id":14668,"name":"int96","nodeType":"ElementaryTypeName","src":"4851:5:45","typeDescriptions":{}}},"id":14677,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4851:44:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"functionReturnParameters":14613,"id":14678,"nodeType":"Return","src":"4844:51:45"}]},"id":14680,"nodeType":"IfStatement","src":"4681:225:45","trueBody":{"id":14656,"nodeType":"Block","src":"4695:48:45","statements":[{"expression":{"arguments":[{"id":14653,"name":"_flowRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14607,"src":"4722:9:45","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint96","typeString":"uint96"}],"id":14652,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4716:5:45","typeDescriptions":{"typeIdentifier":"t_type$_t_int96_$","typeString":"type(int96)"},"typeName":{"id":14651,"name":"int96","nodeType":"ElementaryTypeName","src":"4716:5:45","typeDescriptions":{}}},"id":14654,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4716:16:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"functionReturnParameters":14613,"id":14655,"nodeType":"Return","src":"4709:23:45"}]}}]},"id":14682,"implemented":true,"kind":"function","modifiers":[],"name":"_getEffectiveFlowRate","nameLocation":"4274:21:45","nodeType":"FunctionDefinition","parameters":{"id":14610,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14605,"mutability":"mutable","name":"_user","nameLocation":"4313:5:45","nodeType":"VariableDeclaration","scope":14682,"src":"4305:13:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14604,"name":"address","nodeType":"ElementaryTypeName","src":"4305:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14607,"mutability":"mutable","name":"_flowRate","nameLocation":"4335:9:45","nodeType":"VariableDeclaration","scope":14682,"src":"4328:16:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":14606,"name":"uint96","nodeType":"ElementaryTypeName","src":"4328:6:45","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":14609,"mutability":"mutable","name":"_tag","nameLocation":"4362:4:45","nodeType":"VariableDeclaration","scope":14682,"src":"4354:12:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14608,"name":"uint256","nodeType":"ElementaryTypeName","src":"4354:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4295:77:45"},"returnParameters":{"id":14613,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14612,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14682,"src":"4396:5:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":14611,"name":"int96","nodeType":"ElementaryTypeName","src":"4396:5:45","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"4395:7:45"},"scope":14923,"src":"4265:647:45","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":14699,"nodeType":"Block","src":"5044:74:45","statements":[{"expression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":14691,"name":"_storageSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14396,"src":"5061:15:45","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageSession_$14384_storage_ptr_$","typeString":"function () pure returns (struct LibSession.StorageSession storage pointer)"}},"id":14692,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5061:17:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$14384_storage_ptr","typeString":"struct LibSession.StorageSession storage pointer"}},"id":14693,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5079:12:45","memberName":"sessionNonce","nodeType":"MemberAccess","referencedDeclaration":14369,"src":"5061:30:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":14695,"indexExpression":{"id":14694,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14684,"src":"5092:5:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5061:37:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":14697,"indexExpression":{"id":14696,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14686,"src":"5099:11:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5061:50:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":14690,"id":14698,"nodeType":"Return","src":"5054:57:45"}]},"id":14700,"implemented":true,"kind":"function","modifiers":[],"name":"_getNewNonce","nameLocation":"4941:12:45","nodeType":"FunctionDefinition","parameters":{"id":14687,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14684,"mutability":"mutable","name":"_user","nameLocation":"4971:5:45","nodeType":"VariableDeclaration","scope":14700,"src":"4963:13:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14683,"name":"address","nodeType":"ElementaryTypeName","src":"4963:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14686,"mutability":"mutable","name":"_superToken","nameLocation":"4994:11:45","nodeType":"VariableDeclaration","scope":14700,"src":"4986:19:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14685,"name":"address","nodeType":"ElementaryTypeName","src":"4986:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4953:58:45"},"returnParameters":{"id":14690,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14689,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14700,"src":"5035:7:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14688,"name":"uint256","nodeType":"ElementaryTypeName","src":"5035:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5034:9:45"},"scope":14923,"src":"4932:186:45","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":14728,"nodeType":"Block","src":"5240:126:45","statements":[{"assignments":[14710],"declarations":[{"constant":false,"id":14710,"mutability":"mutable","name":"nonce","nameLocation":"5258:5:45","nodeType":"VariableDeclaration","scope":14728,"src":"5250:13:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14709,"name":"uint256","nodeType":"ElementaryTypeName","src":"5250:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14718,"initialValue":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":14711,"name":"_storageSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14396,"src":"5266:15:45","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageSession_$14384_storage_ptr_$","typeString":"function () pure returns (struct LibSession.StorageSession storage pointer)"}},"id":14712,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5266:17:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$14384_storage_ptr","typeString":"struct LibSession.StorageSession storage pointer"}},"id":14713,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5284:12:45","memberName":"sessionNonce","nodeType":"MemberAccess","referencedDeclaration":14369,"src":"5266:30:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":14715,"indexExpression":{"id":14714,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14702,"src":"5297:5:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5266:37:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":14717,"indexExpression":{"id":14716,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14704,"src":"5304:11:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5266:50:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5250:66:45"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14719,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14710,"src":"5333:5:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":14720,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5342:1:45","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5333:10:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":14725,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":14723,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14710,"src":"5350:5:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":14724,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5358:1:45","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5350:9:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"5333:26:45","trueExpression":{"hexValue":"30","id":14722,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5346:1:45","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":14708,"id":14727,"nodeType":"Return","src":"5326:33:45"}]},"id":14729,"implemented":true,"kind":"function","modifiers":[],"name":"_getCurrentNonce","nameLocation":"5133:16:45","nodeType":"FunctionDefinition","parameters":{"id":14705,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14702,"mutability":"mutable","name":"_user","nameLocation":"5167:5:45","nodeType":"VariableDeclaration","scope":14729,"src":"5159:13:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14701,"name":"address","nodeType":"ElementaryTypeName","src":"5159:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14704,"mutability":"mutable","name":"_superToken","nameLocation":"5190:11:45","nodeType":"VariableDeclaration","scope":14729,"src":"5182:19:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14703,"name":"address","nodeType":"ElementaryTypeName","src":"5182:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5149:58:45"},"returnParameters":{"id":14708,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14707,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14729,"src":"5231:7:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14706,"name":"uint256","nodeType":"ElementaryTypeName","src":"5231:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5230:9:45"},"scope":14923,"src":"5124:242:45","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":14753,"nodeType":"Block","src":"5483:162:45","statements":[{"expression":{"components":[{"expression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":14739,"name":"_storageSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14396,"src":"5514:15:45","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageSession_$14384_storage_ptr_$","typeString":"function () pure returns (struct LibSession.StorageSession storage pointer)"}},"id":14740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5514:17:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$14384_storage_ptr","typeString":"struct LibSession.StorageSession storage pointer"}},"id":14741,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5532:14:45","memberName":"sessionCurrent","nodeType":"MemberAccess","referencedDeclaration":14383,"src":"5514:32:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_SessionCurrent_$14354_storage_$","typeString":"mapping(address => struct LibSession.SessionCurrent storage ref)"}},"id":14743,"indexExpression":{"id":14742,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14731,"src":"5547:5:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5514:39:45","typeDescriptions":{"typeIdentifier":"t_struct$_SessionCurrent_$14354_storage","typeString":"struct LibSession.SessionCurrent storage ref"}},"id":14744,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5554:9:45","memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":14350,"src":"5514:49:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":14745,"name":"_storageSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14396,"src":"5577:15:45","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageSession_$14384_storage_ptr_$","typeString":"function () pure returns (struct LibSession.StorageSession storage pointer)"}},"id":14746,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5577:17:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$14384_storage_ptr","typeString":"struct LibSession.StorageSession storage pointer"}},"id":14747,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5595:14:45","memberName":"sessionCurrent","nodeType":"MemberAccess","referencedDeclaration":14383,"src":"5577:32:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_SessionCurrent_$14354_storage_$","typeString":"mapping(address => struct LibSession.SessionCurrent storage ref)"}},"id":14749,"indexExpression":{"id":14748,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14731,"src":"5610:5:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5577:39:45","typeDescriptions":{"typeIdentifier":"t_struct$_SessionCurrent_$14354_storage","typeString":"struct LibSession.SessionCurrent storage ref"}},"id":14750,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5617:11:45","memberName":"superTokens","nodeType":"MemberAccess","referencedDeclaration":14353,"src":"5577:51:45","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}}],"id":14751,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5500:138:45","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_address_$dyn_storage_$","typeString":"tuple(uint256,address[] storage ref)"}},"functionReturnParameters":14738,"id":14752,"nodeType":"Return","src":"5493:145:45"}]},"id":14754,"implemented":true,"kind":"function","modifiers":[],"name":"_getCurrentSessionData","nameLocation":"5381:22:45","nodeType":"FunctionDefinition","parameters":{"id":14732,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14731,"mutability":"mutable","name":"_user","nameLocation":"5421:5:45","nodeType":"VariableDeclaration","scope":14754,"src":"5413:13:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14730,"name":"address","nodeType":"ElementaryTypeName","src":"5413:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5403:29:45"},"returnParameters":{"id":14738,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14734,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14754,"src":"5456:7:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14733,"name":"uint256","nodeType":"ElementaryTypeName","src":"5456:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14737,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14754,"src":"5465:16:45","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":14735,"name":"address","nodeType":"ElementaryTypeName","src":"5465:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":14736,"nodeType":"ArrayTypeName","src":"5465:9:45","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"5455:27:45"},"scope":14923,"src":"5372:273:45","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":14813,"nodeType":"Block","src":"5814:434:45","statements":[{"expression":{"components":[{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":14771,"name":"_storageSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14396,"src":"5845:15:45","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageSession_$14384_storage_ptr_$","typeString":"function () pure returns (struct LibSession.StorageSession storage pointer)"}},"id":14772,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5845:17:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$14384_storage_ptr","typeString":"struct LibSession.StorageSession storage pointer"}},"id":14773,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5876:13:45","memberName":"sessionRecord","nodeType":"MemberAccess","referencedDeclaration":14378,"src":"5845:44:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_SessionRecord_$14363_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibSession.SessionRecord storage ref)))"}},"id":14775,"indexExpression":{"id":14774,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14756,"src":"5890:5:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5845:51:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_SessionRecord_$14363_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibSession.SessionRecord storage ref))"}},"id":14777,"indexExpression":{"id":14776,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14758,"src":"5897:11:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5845:64:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_SessionRecord_$14363_storage_$","typeString":"mapping(uint256 => struct LibSession.SessionRecord storage ref)"}},"id":14779,"indexExpression":{"id":14778,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14760,"src":"5910:6:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5845:72:45","typeDescriptions":{"typeIdentifier":"t_struct$_SessionRecord_$14363_storage","typeString":"struct LibSession.SessionRecord storage ref"}},"id":14780,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5918:17:45","memberName":"effectiveFlowRate","nodeType":"MemberAccess","referencedDeclaration":14356,"src":"5845:90:45","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":14781,"name":"_storageSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14396,"src":"5949:15:45","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageSession_$14384_storage_ptr_$","typeString":"function () pure returns (struct LibSession.StorageSession storage pointer)"}},"id":14782,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5949:17:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$14384_storage_ptr","typeString":"struct LibSession.StorageSession storage pointer"}},"id":14783,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5980:13:45","memberName":"sessionRecord","nodeType":"MemberAccess","referencedDeclaration":14378,"src":"5949:44:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_SessionRecord_$14363_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibSession.SessionRecord storage ref)))"}},"id":14785,"indexExpression":{"id":14784,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14756,"src":"5994:5:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5949:51:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_SessionRecord_$14363_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibSession.SessionRecord storage ref))"}},"id":14787,"indexExpression":{"id":14786,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14758,"src":"6001:11:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5949:64:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_SessionRecord_$14363_storage_$","typeString":"mapping(uint256 => struct LibSession.SessionRecord storage ref)"}},"id":14789,"indexExpression":{"id":14788,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14760,"src":"6014:6:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5949:72:45","typeDescriptions":{"typeIdentifier":"t_struct$_SessionRecord_$14363_storage","typeString":"struct LibSession.SessionRecord storage ref"}},"id":14790,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6022:8:45","memberName":"flowRate","nodeType":"MemberAccess","referencedDeclaration":14358,"src":"5949:81:45","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":14791,"name":"_storageSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14396,"src":"6044:15:45","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageSession_$14384_storage_ptr_$","typeString":"function () pure returns (struct LibSession.StorageSession storage pointer)"}},"id":14792,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6044:17:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$14384_storage_ptr","typeString":"struct LibSession.StorageSession storage pointer"}},"id":14793,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6075:13:45","memberName":"sessionRecord","nodeType":"MemberAccess","referencedDeclaration":14378,"src":"6044:44:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_SessionRecord_$14363_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibSession.SessionRecord storage ref)))"}},"id":14795,"indexExpression":{"id":14794,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14756,"src":"6089:5:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6044:51:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_SessionRecord_$14363_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibSession.SessionRecord storage ref))"}},"id":14797,"indexExpression":{"id":14796,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14758,"src":"6096:11:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6044:64:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_SessionRecord_$14363_storage_$","typeString":"mapping(uint256 => struct LibSession.SessionRecord storage ref)"}},"id":14799,"indexExpression":{"id":14798,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14760,"src":"6109:6:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6044:72:45","typeDescriptions":{"typeIdentifier":"t_struct$_SessionRecord_$14363_storage","typeString":"struct LibSession.SessionRecord storage ref"}},"id":14800,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6117:14:45","memberName":"timestampStart","nodeType":"MemberAccess","referencedDeclaration":14360,"src":"6044:87:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":14801,"name":"_storageSession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14396,"src":"6145:15:45","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageSession_$14384_storage_ptr_$","typeString":"function () pure returns (struct LibSession.StorageSession storage pointer)"}},"id":14802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6145:17:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageSession_$14384_storage_ptr","typeString":"struct LibSession.StorageSession storage pointer"}},"id":14803,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6176:13:45","memberName":"sessionRecord","nodeType":"MemberAccess","referencedDeclaration":14378,"src":"6145:44:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_SessionRecord_$14363_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibSession.SessionRecord storage ref)))"}},"id":14805,"indexExpression":{"id":14804,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14756,"src":"6190:5:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6145:51:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_SessionRecord_$14363_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibSession.SessionRecord storage ref))"}},"id":14807,"indexExpression":{"id":14806,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14758,"src":"6197:11:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6145:64:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_SessionRecord_$14363_storage_$","typeString":"mapping(uint256 => struct LibSession.SessionRecord storage ref)"}},"id":14809,"indexExpression":{"id":14808,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14760,"src":"6210:6:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6145:72:45","typeDescriptions":{"typeIdentifier":"t_struct$_SessionRecord_$14363_storage","typeString":"struct LibSession.SessionRecord storage ref"}},"id":14810,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6218:13:45","memberName":"timestampStop","nodeType":"MemberAccess","referencedDeclaration":14362,"src":"6145:86:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":14811,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5831:410:45","typeDescriptions":{"typeIdentifier":"t_tuple$_t_int96_$_t_uint96_$_t_uint256_$_t_uint256_$","typeString":"tuple(int96,uint96,uint256,uint256)"}},"functionReturnParameters":14770,"id":14812,"nodeType":"Return","src":"5824:417:45"}]},"id":14814,"implemented":true,"kind":"function","modifiers":[],"name":"_getSessionData","nameLocation":"5660:15:45","nodeType":"FunctionDefinition","parameters":{"id":14761,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14756,"mutability":"mutable","name":"_user","nameLocation":"5693:5:45","nodeType":"VariableDeclaration","scope":14814,"src":"5685:13:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14755,"name":"address","nodeType":"ElementaryTypeName","src":"5685:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14758,"mutability":"mutable","name":"_superToken","nameLocation":"5716:11:45","nodeType":"VariableDeclaration","scope":14814,"src":"5708:19:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14757,"name":"address","nodeType":"ElementaryTypeName","src":"5708:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14760,"mutability":"mutable","name":"_nonce","nameLocation":"5745:6:45","nodeType":"VariableDeclaration","scope":14814,"src":"5737:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14759,"name":"uint256","nodeType":"ElementaryTypeName","src":"5737:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5675:82:45"},"returnParameters":{"id":14770,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14763,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14814,"src":"5781:5:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":14762,"name":"int96","nodeType":"ElementaryTypeName","src":"5781:5:45","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"},{"constant":false,"id":14765,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14814,"src":"5788:6:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":14764,"name":"uint96","nodeType":"ElementaryTypeName","src":"5788:6:45","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":14767,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14814,"src":"5796:7:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14766,"name":"uint256","nodeType":"ElementaryTypeName","src":"5796:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14769,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14814,"src":"5805:7:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14768,"name":"uint256","nodeType":"ElementaryTypeName","src":"5805:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5780:33:45"},"scope":14923,"src":"5651:597:45","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":14870,"nodeType":"Block","src":"6425:336:45","statements":[{"assignments":[14835],"declarations":[{"constant":false,"id":14835,"mutability":"mutable","name":"sFlow","nameLocation":"6463:5:45","nodeType":"VariableDeclaration","scope":14870,"src":"6435:33:45","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$13382_storage_ptr","typeString":"struct LibFlow.StorageFlow"},"typeName":{"id":14834,"nodeType":"UserDefinedTypeName","pathNode":{"id":14833,"name":"LibFlow.StorageFlow","nameLocations":["6435:7:45","6443:11:45"],"nodeType":"IdentifierPath","referencedDeclaration":13382,"src":"6435:19:45"},"referencedDeclaration":13382,"src":"6435:19:45","typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$13382_storage_ptr","typeString":"struct LibFlow.StorageFlow"}},"visibility":"internal"}],"id":14839,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14836,"name":"LibFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14322,"src":"6471:7:45","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibFlow_$14322_$","typeString":"type(library LibFlow)"}},"id":14837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6479:12:45","memberName":"_storageFlow","nodeType":"MemberAccess","referencedDeclaration":13394,"src":"6471:20:45","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageFlow_$13382_storage_ptr_$","typeString":"function () pure returns (struct LibFlow.StorageFlow storage pointer)"}},"id":14838,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6471:22:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$13382_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"6435:58:45"},{"assignments":[14841],"declarations":[{"constant":false,"id":14841,"mutability":"mutable","name":"receiver","nameLocation":"6512:8:45","nodeType":"VariableDeclaration","scope":14870,"src":"6504:16:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14840,"name":"address","nodeType":"ElementaryTypeName","src":"6504:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":14851,"initialValue":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"id":14842,"name":"sFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14835,"src":"6523:5:45","typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$13382_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":14843,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6538:10:45","memberName":"flowRecord","nodeType":"MemberAccess","referencedDeclaration":13371,"src":"6523:25:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref)))"}},"id":14845,"indexExpression":{"id":14844,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14816,"src":"6549:5:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6523:32:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref))"}},"id":14847,"indexExpression":{"id":14846,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14818,"src":"6556:11:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6523:45:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$","typeString":"mapping(uint256 => struct LibFlow.FlowRecord storage ref)"}},"id":14849,"indexExpression":{"id":14848,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14820,"src":"6569:6:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6523:53:45","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$13356_storage","typeString":"struct LibFlow.FlowRecord storage ref"}},"id":14850,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6577:8:45","memberName":"receiver","nodeType":"MemberAccess","referencedDeclaration":13345,"src":"6523:62:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6504:81:45"},{"assignments":[14853],"declarations":[{"constant":false,"id":14853,"mutability":"mutable","name":"sessionNonce","nameLocation":"6603:12:45","nodeType":"VariableDeclaration","scope":14870,"src":"6595:20:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14852,"name":"uint256","nodeType":"ElementaryTypeName","src":"6595:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14863,"initialValue":{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"expression":{"id":14854,"name":"sFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14835,"src":"6618:5:45","typeDescriptions":{"typeIdentifier":"t_struct$_StorageFlow_$13382_storage_ptr","typeString":"struct LibFlow.StorageFlow storage pointer"}},"id":14855,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6633:10:45","memberName":"flowRecord","nodeType":"MemberAccess","referencedDeclaration":13371,"src":"6618:25:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$_$_$","typeString":"mapping(address => mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref)))"}},"id":14857,"indexExpression":{"id":14856,"name":"_user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14816,"src":"6644:5:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6618:32:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibFlow.FlowRecord storage ref))"}},"id":14859,"indexExpression":{"id":14858,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14818,"src":"6651:11:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6618:45:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FlowRecord_$13356_storage_$","typeString":"mapping(uint256 => struct LibFlow.FlowRecord storage ref)"}},"id":14861,"indexExpression":{"id":14860,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14820,"src":"6664:6:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6618:53:45","typeDescriptions":{"typeIdentifier":"t_struct$_FlowRecord_$13356_storage","typeString":"struct LibFlow.FlowRecord storage ref"}},"id":14862,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6672:12:45","memberName":"sessionNonce","nodeType":"MemberAccess","referencedDeclaration":13347,"src":"6618:66:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6595:89:45"},{"expression":{"arguments":[{"id":14865,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14841,"src":"6718:8:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14866,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14818,"src":"6728:11:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14867,"name":"sessionNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14853,"src":"6741:12:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14864,"name":"_getSessionData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14814,"src":"6702:15:45","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_int96_$_t_uint96_$_t_uint256_$_t_uint256_$","typeString":"function (address,address,uint256) view returns (int96,uint96,uint256,uint256)"}},"id":14868,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6702:52:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int96_$_t_uint96_$_t_uint256_$_t_uint256_$","typeString":"tuple(int96,uint96,uint256,uint256)"}},"functionReturnParameters":14830,"id":14869,"nodeType":"Return","src":"6695:59:45"}]},"id":14871,"implemented":true,"kind":"function","modifiers":[],"name":"_getSessionDataFromFlow","nameLocation":"6263:23:45","nodeType":"FunctionDefinition","parameters":{"id":14821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14816,"mutability":"mutable","name":"_user","nameLocation":"6304:5:45","nodeType":"VariableDeclaration","scope":14871,"src":"6296:13:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14815,"name":"address","nodeType":"ElementaryTypeName","src":"6296:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14818,"mutability":"mutable","name":"_superToken","nameLocation":"6327:11:45","nodeType":"VariableDeclaration","scope":14871,"src":"6319:19:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14817,"name":"address","nodeType":"ElementaryTypeName","src":"6319:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14820,"mutability":"mutable","name":"_nonce","nameLocation":"6356:6:45","nodeType":"VariableDeclaration","scope":14871,"src":"6348:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14819,"name":"uint256","nodeType":"ElementaryTypeName","src":"6348:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6286:82:45"},"returnParameters":{"id":14830,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14871,"src":"6392:5:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":14822,"name":"int96","nodeType":"ElementaryTypeName","src":"6392:5:45","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"},{"constant":false,"id":14825,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14871,"src":"6399:6:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":14824,"name":"uint96","nodeType":"ElementaryTypeName","src":"6399:6:45","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":14827,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14871,"src":"6407:7:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14826,"name":"uint256","nodeType":"ElementaryTypeName","src":"6407:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14829,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14871,"src":"6416:7:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14828,"name":"uint256","nodeType":"ElementaryTypeName","src":"6416:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6391:33:45"},"scope":14923,"src":"6254:507:45","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":14921,"nodeType":"Block","src":"6918:353:45","statements":[{"assignments":[14890],"declarations":[{"constant":false,"id":14890,"mutability":"mutable","name":"sControl","nameLocation":"6962:8:45","nodeType":"VariableDeclaration","scope":14921,"src":"6928:42:45","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl"},"typeName":{"id":14889,"nodeType":"UserDefinedTypeName","pathNode":{"id":14888,"name":"LibControl.StorageControl","nameLocations":["6928:10:45","6939:14:45"],"nodeType":"IdentifierPath","referencedDeclaration":12418,"src":"6928:25:45"},"referencedDeclaration":12418,"src":"6928:25:45","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl"}},"visibility":"internal"}],"id":14894,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14891,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"6973:10:45","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$13307_$","typeString":"type(library LibControl)"}},"id":14892,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6997:15:45","memberName":"_storageControl","nodeType":"MemberAccess","referencedDeclaration":12430,"src":"6973:39:45","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageControl_$12418_storage_ptr_$","typeString":"function () pure returns (struct LibControl.StorageControl storage pointer)"}},"id":14893,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6973:41:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"6928:86:45"},{"assignments":[14896],"declarations":[{"constant":false,"id":14896,"mutability":"mutable","name":"receiver","nameLocation":"7033:8:45","nodeType":"VariableDeclaration","scope":14921,"src":"7025:16:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14895,"name":"address","nodeType":"ElementaryTypeName","src":"7025:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":14904,"initialValue":{"expression":{"baseExpression":{"baseExpression":{"expression":{"id":14897,"name":"sControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14890,"src":"7044:8:45","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":14898,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7053:13:45","memberName":"controlRecord","nodeType":"MemberAccess","referencedDeclaration":12403,"src":"7044:22:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_ControlRecord_$12369_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibControl.ControlRecord storage ref))"}},"id":14900,"indexExpression":{"id":14899,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14873,"src":"7067:11:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7044:35:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ControlRecord_$12369_storage_$","typeString":"mapping(uint256 => struct LibControl.ControlRecord storage ref)"}},"id":14902,"indexExpression":{"id":14901,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14875,"src":"7080:6:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7044:43:45","typeDescriptions":{"typeIdentifier":"t_struct$_ControlRecord_$12369_storage","typeString":"struct LibControl.ControlRecord storage ref"}},"id":14903,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7088:8:45","memberName":"receiver","nodeType":"MemberAccess","referencedDeclaration":12362,"src":"7044:52:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"7025:71:45"},{"assignments":[14906],"declarations":[{"constant":false,"id":14906,"mutability":"mutable","name":"sessionNonce","nameLocation":"7114:12:45","nodeType":"VariableDeclaration","scope":14921,"src":"7106:20:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14905,"name":"uint256","nodeType":"ElementaryTypeName","src":"7106:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14914,"initialValue":{"expression":{"baseExpression":{"baseExpression":{"expression":{"id":14907,"name":"sControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14890,"src":"7129:8:45","typeDescriptions":{"typeIdentifier":"t_struct$_StorageControl_$12418_storage_ptr","typeString":"struct LibControl.StorageControl storage pointer"}},"id":14908,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7147:13:45","memberName":"controlRecord","nodeType":"MemberAccess","referencedDeclaration":12403,"src":"7129:31:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_ControlRecord_$12369_storage_$_$","typeString":"mapping(address => mapping(uint256 => struct LibControl.ControlRecord storage ref))"}},"id":14910,"indexExpression":{"id":14909,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14873,"src":"7161:11:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7129:44:45","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_ControlRecord_$12369_storage_$","typeString":"mapping(uint256 => struct LibControl.ControlRecord storage ref)"}},"id":14912,"indexExpression":{"id":14911,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14875,"src":"7174:6:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7129:52:45","typeDescriptions":{"typeIdentifier":"t_struct$_ControlRecord_$12369_storage","typeString":"struct LibControl.ControlRecord storage ref"}},"id":14913,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7182:12:45","memberName":"sessionNonce","nodeType":"MemberAccess","referencedDeclaration":12364,"src":"7129:65:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7106:88:45"},{"expression":{"arguments":[{"id":14916,"name":"receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14896,"src":"7228:8:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14917,"name":"_superToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14873,"src":"7238:11:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14918,"name":"sessionNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14906,"src":"7251:12:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14915,"name":"_getSessionData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14814,"src":"7212:15:45","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_int96_$_t_uint96_$_t_uint256_$_t_uint256_$","typeString":"function (address,address,uint256) view returns (int96,uint96,uint256,uint256)"}},"id":14919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7212:52:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_int96_$_t_uint96_$_t_uint256_$_t_uint256_$","typeString":"tuple(int96,uint96,uint256,uint256)"}},"functionReturnParameters":14885,"id":14920,"nodeType":"Return","src":"7205:59:45"}]},"id":14922,"implemented":true,"kind":"function","modifiers":[],"name":"_getSessionDataFromControl","nameLocation":"6776:26:45","nodeType":"FunctionDefinition","parameters":{"id":14876,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14873,"mutability":"mutable","name":"_superToken","nameLocation":"6820:11:45","nodeType":"VariableDeclaration","scope":14922,"src":"6812:19:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14872,"name":"address","nodeType":"ElementaryTypeName","src":"6812:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14875,"mutability":"mutable","name":"_nonce","nameLocation":"6849:6:45","nodeType":"VariableDeclaration","scope":14922,"src":"6841:14:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14874,"name":"uint256","nodeType":"ElementaryTypeName","src":"6841:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6802:59:45"},"returnParameters":{"id":14885,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14878,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14922,"src":"6885:5:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":14877,"name":"int96","nodeType":"ElementaryTypeName","src":"6885:5:45","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"},{"constant":false,"id":14880,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14922,"src":"6892:6:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":14879,"name":"uint96","nodeType":"ElementaryTypeName","src":"6892:6:45","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":14882,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14922,"src":"6900:7:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14881,"name":"uint256","nodeType":"ElementaryTypeName","src":"6900:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14884,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14922,"src":"6909:7:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14883,"name":"uint256","nodeType":"ElementaryTypeName","src":"6909:7:45","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6884:33:45"},"scope":14923,"src":"6767:504:45","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":14924,"src":"486:6829:45","usedErrors":[]}],"src":"36:7280:45"},"id":45},"contracts/libraries/core/LibTemplate.sol":{"ast":{"absolutePath":"contracts/libraries/core/LibTemplate.sol","exportedSymbols":{"LibTemplate":[14926]},"id":14927,"license":"BUSL-1.1","nodeType":"SourceUnit","nodes":[{"id":14925,"literals":["solidity","^","0.8",".9"],"nodeType":"PragmaDirective","src":"36:23:46"},{"abstract":false,"baseContracts":[],"canonicalName":"LibTemplate","contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":14926,"linearizedBaseContracts":[14926],"name":"LibTemplate","nameLocation":"69:11:46","nodeType":"ContractDefinition","nodes":[],"scope":14927,"src":"61:269:46","usedErrors":[]}],"src":"36:295:46"},"id":46},"contracts/libraries/utils/IterableMappingBPS.sol":{"ast":{"absolutePath":"contracts/libraries/utils/IterableMappingBPS.sol","exportedSymbols":{"BasisPointsRange":[14935],"IterableMappingBPS":[15181]},"id":15182,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":14928,"literals":["solidity","^","0.8",".17"],"nodeType":"PragmaDirective","src":"32:24:47"},{"canonicalName":"BasisPointsRange","id":14935,"members":[{"constant":false,"id":14930,"mutability":"mutable","name":"bps","nameLocation":"95:3:47","nodeType":"VariableDeclaration","scope":14935,"src":"88:10:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":14929,"name":"uint16","nodeType":"ElementaryTypeName","src":"88:6:47","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":14932,"mutability":"mutable","name":"flowRateLowerBound","nameLocation":"151:18:47","nodeType":"VariableDeclaration","scope":14935,"src":"144:25:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":14931,"name":"uint96","nodeType":"ElementaryTypeName","src":"144:6:47","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":14934,"mutability":"mutable","name":"flowRateUpperBound","nameLocation":"182:18:47","nodeType":"VariableDeclaration","scope":14935,"src":"175:25:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":14933,"name":"uint96","nodeType":"ElementaryTypeName","src":"175:6:47","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"name":"BasisPointsRange","nameLocation":"65:16:47","nodeType":"StructDefinition","scope":15182,"src":"58:145:47","visibility":"public"},{"abstract":false,"baseContracts":[],"canonicalName":"IterableMappingBPS","contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":15181,"linearizedBaseContracts":[15181],"name":"IterableMappingBPS","nameLocation":"213:18:47","nodeType":"ContractDefinition","nodes":[{"canonicalName":"IterableMappingBPS.Map","id":14952,"members":[{"constant":false,"id":14938,"mutability":"mutable","name":"keys","nameLocation":"334:4:47","nodeType":"VariableDeclaration","scope":14952,"src":"324:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":14936,"name":"uint256","nodeType":"ElementaryTypeName","src":"324:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14937,"nodeType":"ArrayTypeName","src":"324:9:47","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":14943,"mutability":"mutable","name":"values","nameLocation":"385:6:47","nodeType":"VariableDeclaration","scope":14952,"src":"348:43:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_BasisPointsRange_$14935_storage_$","typeString":"mapping(uint256 => struct BasisPointsRange)"},"typeName":{"id":14942,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":14939,"name":"uint256","nodeType":"ElementaryTypeName","src":"356:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"348:36:47","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_BasisPointsRange_$14935_storage_$","typeString":"mapping(uint256 => struct BasisPointsRange)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":14941,"nodeType":"UserDefinedTypeName","pathNode":{"id":14940,"name":"BasisPointsRange","nameLocations":["367:16:47"],"nodeType":"IdentifierPath","referencedDeclaration":14935,"src":"367:16:47"},"referencedDeclaration":14935,"src":"367:16:47","typeDescriptions":{"typeIdentifier":"t_struct$_BasisPointsRange_$14935_storage_ptr","typeString":"struct BasisPointsRange"}}},"visibility":"internal"},{"constant":false,"id":14947,"mutability":"mutable","name":"indexOf","nameLocation":"429:7:47","nodeType":"VariableDeclaration","scope":14952,"src":"401:35:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"typeName":{"id":14946,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":14944,"name":"uint256","nodeType":"ElementaryTypeName","src":"409:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"401:27:47","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":14945,"name":"uint256","nodeType":"ElementaryTypeName","src":"420:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"},{"constant":false,"id":14951,"mutability":"mutable","name":"inserted","nameLocation":"471:8:47","nodeType":"VariableDeclaration","scope":14952,"src":"446:33:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"typeName":{"id":14950,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":14948,"name":"uint256","nodeType":"ElementaryTypeName","src":"454:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"446:24:47","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":14949,"name":"bool","nodeType":"ElementaryTypeName","src":"465:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"internal"}],"name":"Map","nameLocation":"310:3:47","nodeType":"StructDefinition","scope":15181,"src":"303:183:47","visibility":"public"},{"body":{"id":14968,"nodeType":"Block","src":"605:39:47","statements":[{"expression":{"baseExpression":{"expression":{"id":14963,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14955,"src":"622:3:47","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14952_storage_ptr","typeString":"struct IterableMappingBPS.Map storage pointer"}},"id":14964,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"626:6:47","memberName":"values","nodeType":"MemberAccess","referencedDeclaration":14943,"src":"622:10:47","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_BasisPointsRange_$14935_storage_$","typeString":"mapping(uint256 => struct BasisPointsRange storage ref)"}},"id":14966,"indexExpression":{"id":14965,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14957,"src":"633:3:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"622:15:47","typeDescriptions":{"typeIdentifier":"t_struct$_BasisPointsRange_$14935_storage","typeString":"struct BasisPointsRange storage ref"}},"functionReturnParameters":14962,"id":14967,"nodeType":"Return","src":"615:22:47"}]},"id":14969,"implemented":true,"kind":"function","modifiers":[],"name":"get","nameLocation":"501:3:47","nodeType":"FunctionDefinition","parameters":{"id":14958,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14955,"mutability":"mutable","name":"map","nameLocation":"526:3:47","nodeType":"VariableDeclaration","scope":14969,"src":"514:15:47","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14952_storage_ptr","typeString":"struct IterableMappingBPS.Map"},"typeName":{"id":14954,"nodeType":"UserDefinedTypeName","pathNode":{"id":14953,"name":"Map","nameLocations":["514:3:47"],"nodeType":"IdentifierPath","referencedDeclaration":14952,"src":"514:3:47"},"referencedDeclaration":14952,"src":"514:3:47","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14952_storage_ptr","typeString":"struct IterableMappingBPS.Map"}},"visibility":"internal"},{"constant":false,"id":14957,"mutability":"mutable","name":"key","nameLocation":"547:3:47","nodeType":"VariableDeclaration","scope":14969,"src":"539:11:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14956,"name":"uint256","nodeType":"ElementaryTypeName","src":"539:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"504:52:47"},"returnParameters":{"id":14962,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14961,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14969,"src":"580:23:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_BasisPointsRange_$14935_memory_ptr","typeString":"struct BasisPointsRange"},"typeName":{"id":14960,"nodeType":"UserDefinedTypeName","pathNode":{"id":14959,"name":"BasisPointsRange","nameLocations":["580:16:47"],"nodeType":"IdentifierPath","referencedDeclaration":14935,"src":"580:16:47"},"referencedDeclaration":14935,"src":"580:16:47","typeDescriptions":{"typeIdentifier":"t_struct$_BasisPointsRange_$14935_storage_ptr","typeString":"struct BasisPointsRange"}},"visibility":"internal"}],"src":"579:25:47"},"scope":15181,"src":"492:152:47","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":14984,"nodeType":"Block","src":"759:39:47","statements":[{"expression":{"baseExpression":{"expression":{"id":14979,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14972,"src":"776:3:47","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14952_storage_ptr","typeString":"struct IterableMappingBPS.Map storage pointer"}},"id":14980,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"780:4:47","memberName":"keys","nodeType":"MemberAccess","referencedDeclaration":14938,"src":"776:8:47","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":14982,"indexExpression":{"id":14981,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14974,"src":"785:5:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"776:15:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":14978,"id":14983,"nodeType":"Return","src":"769:22:47"}]},"id":14985,"implemented":true,"kind":"function","modifiers":[],"name":"getKeyAtIndex","nameLocation":"659:13:47","nodeType":"FunctionDefinition","parameters":{"id":14975,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14972,"mutability":"mutable","name":"map","nameLocation":"694:3:47","nodeType":"VariableDeclaration","scope":14985,"src":"682:15:47","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14952_storage_ptr","typeString":"struct IterableMappingBPS.Map"},"typeName":{"id":14971,"nodeType":"UserDefinedTypeName","pathNode":{"id":14970,"name":"Map","nameLocations":["682:3:47"],"nodeType":"IdentifierPath","referencedDeclaration":14952,"src":"682:3:47"},"referencedDeclaration":14952,"src":"682:3:47","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14952_storage_ptr","typeString":"struct IterableMappingBPS.Map"}},"visibility":"internal"},{"constant":false,"id":14974,"mutability":"mutable","name":"index","nameLocation":"715:5:47","nodeType":"VariableDeclaration","scope":14985,"src":"707:13:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14973,"name":"uint256","nodeType":"ElementaryTypeName","src":"707:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"672:54:47"},"returnParameters":{"id":14978,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14977,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14985,"src":"750:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14976,"name":"uint256","nodeType":"ElementaryTypeName","src":"750:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"749:9:47"},"scope":15181,"src":"650:148:47","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":14997,"nodeType":"Block","src":"867:39:47","statements":[{"expression":{"expression":{"expression":{"id":14993,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14988,"src":"884:3:47","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14952_storage_ptr","typeString":"struct IterableMappingBPS.Map storage pointer"}},"id":14994,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"888:4:47","memberName":"keys","nodeType":"MemberAccess","referencedDeclaration":14938,"src":"884:8:47","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":14995,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"893:6:47","memberName":"length","nodeType":"MemberAccess","src":"884:15:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":14992,"id":14996,"nodeType":"Return","src":"877:22:47"}]},"id":14998,"implemented":true,"kind":"function","modifiers":[],"name":"size","nameLocation":"813:4:47","nodeType":"FunctionDefinition","parameters":{"id":14989,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14988,"mutability":"mutable","name":"map","nameLocation":"830:3:47","nodeType":"VariableDeclaration","scope":14998,"src":"818:15:47","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14952_storage_ptr","typeString":"struct IterableMappingBPS.Map"},"typeName":{"id":14987,"nodeType":"UserDefinedTypeName","pathNode":{"id":14986,"name":"Map","nameLocations":["818:3:47"],"nodeType":"IdentifierPath","referencedDeclaration":14952,"src":"818:3:47"},"referencedDeclaration":14952,"src":"818:3:47","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14952_storage_ptr","typeString":"struct IterableMappingBPS.Map"}},"visibility":"internal"}],"src":"817:17:47"},"returnParameters":{"id":14992,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14991,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":14998,"src":"858:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14990,"name":"uint256","nodeType":"ElementaryTypeName","src":"858:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"857:9:47"},"scope":15181,"src":"804:102:47","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":15099,"nodeType":"Block","src":"1079:547:47","statements":[{"condition":{"baseExpression":{"expression":{"id":15012,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15001,"src":"1093:3:47","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14952_storage_ptr","typeString":"struct IterableMappingBPS.Map storage pointer"}},"id":15013,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1097:8:47","memberName":"inserted","nodeType":"MemberAccess","referencedDeclaration":14951,"src":"1093:12:47","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":15015,"indexExpression":{"id":15014,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15003,"src":"1106:3:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1093:17:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":15097,"nodeType":"Block","src":"1309:311:47","statements":[{"expression":{"id":15050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":15044,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15001,"src":"1323:3:47","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14952_storage_ptr","typeString":"struct IterableMappingBPS.Map storage pointer"}},"id":15047,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1327:8:47","memberName":"inserted","nodeType":"MemberAccess","referencedDeclaration":14951,"src":"1323:12:47","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":15048,"indexExpression":{"id":15046,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15003,"src":"1336:3:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1323:17:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":15049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1343:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"1323:24:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15051,"nodeType":"ExpressionStatement","src":"1323:24:47"},{"expression":{"id":15059,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":15052,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15001,"src":"1362:3:47","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14952_storage_ptr","typeString":"struct IterableMappingBPS.Map storage pointer"}},"id":15055,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1366:6:47","memberName":"values","nodeType":"MemberAccess","referencedDeclaration":14943,"src":"1362:10:47","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_BasisPointsRange_$14935_storage_$","typeString":"mapping(uint256 => struct BasisPointsRange storage ref)"}},"id":15056,"indexExpression":{"id":15054,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15003,"src":"1373:3:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1362:15:47","typeDescriptions":{"typeIdentifier":"t_struct$_BasisPointsRange_$14935_storage","typeString":"struct BasisPointsRange storage ref"}},"id":15057,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1378:3:47","memberName":"bps","nodeType":"MemberAccess","referencedDeclaration":14930,"src":"1362:19:47","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":15058,"name":"_bps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15005,"src":"1384:4:47","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"1362:26:47","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"id":15060,"nodeType":"ExpressionStatement","src":"1362:26:47"},{"expression":{"id":15068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":15061,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15001,"src":"1402:3:47","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14952_storage_ptr","typeString":"struct IterableMappingBPS.Map storage pointer"}},"id":15064,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1406:6:47","memberName":"values","nodeType":"MemberAccess","referencedDeclaration":14943,"src":"1402:10:47","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_BasisPointsRange_$14935_storage_$","typeString":"mapping(uint256 => struct BasisPointsRange storage ref)"}},"id":15065,"indexExpression":{"id":15063,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15003,"src":"1413:3:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1402:15:47","typeDescriptions":{"typeIdentifier":"t_struct$_BasisPointsRange_$14935_storage","typeString":"struct BasisPointsRange storage ref"}},"id":15066,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1418:18:47","memberName":"flowRateLowerBound","nodeType":"MemberAccess","referencedDeclaration":14932,"src":"1402:34:47","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":15067,"name":"_flowRateLowerBound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15007,"src":"1439:19:47","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"1402:56:47","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"id":15069,"nodeType":"ExpressionStatement","src":"1402:56:47"},{"expression":{"id":15077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":15070,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15001,"src":"1472:3:47","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14952_storage_ptr","typeString":"struct IterableMappingBPS.Map storage pointer"}},"id":15073,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1476:6:47","memberName":"values","nodeType":"MemberAccess","referencedDeclaration":14943,"src":"1472:10:47","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_BasisPointsRange_$14935_storage_$","typeString":"mapping(uint256 => struct BasisPointsRange storage ref)"}},"id":15074,"indexExpression":{"id":15072,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15003,"src":"1483:3:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1472:15:47","typeDescriptions":{"typeIdentifier":"t_struct$_BasisPointsRange_$14935_storage","typeString":"struct BasisPointsRange storage ref"}},"id":15075,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1488:18:47","memberName":"flowRateUpperBound","nodeType":"MemberAccess","referencedDeclaration":14934,"src":"1472:34:47","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":15076,"name":"_flowRateUpperBound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15009,"src":"1509:19:47","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"1472:56:47","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"id":15078,"nodeType":"ExpressionStatement","src":"1472:56:47"},{"expression":{"id":15087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":15079,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15001,"src":"1543:3:47","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14952_storage_ptr","typeString":"struct IterableMappingBPS.Map storage pointer"}},"id":15082,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1547:7:47","memberName":"indexOf","nodeType":"MemberAccess","referencedDeclaration":14947,"src":"1543:11:47","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":15083,"indexExpression":{"id":15081,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15003,"src":"1555:3:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1543:16:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":15084,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15001,"src":"1562:3:47","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14952_storage_ptr","typeString":"struct IterableMappingBPS.Map storage pointer"}},"id":15085,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1566:4:47","memberName":"keys","nodeType":"MemberAccess","referencedDeclaration":14938,"src":"1562:8:47","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":15086,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1571:6:47","memberName":"length","nodeType":"MemberAccess","src":"1562:15:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1543:34:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15088,"nodeType":"ExpressionStatement","src":"1543:34:47"},{"expression":{"arguments":[{"id":15094,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15003,"src":"1605:3:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":15089,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15001,"src":"1591:3:47","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14952_storage_ptr","typeString":"struct IterableMappingBPS.Map storage pointer"}},"id":15092,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1595:4:47","memberName":"keys","nodeType":"MemberAccess","referencedDeclaration":14938,"src":"1591:8:47","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":15093,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1600:4:47","memberName":"push","nodeType":"MemberAccess","src":"1591:13:47","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$","typeString":"function (uint256[] storage pointer,uint256)"}},"id":15095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1591:18:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15096,"nodeType":"ExpressionStatement","src":"1591:18:47"}]},"id":15098,"nodeType":"IfStatement","src":"1089:531:47","trueBody":{"id":15043,"nodeType":"Block","src":"1112:191:47","statements":[{"expression":{"id":15023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":15016,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15001,"src":"1126:3:47","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14952_storage_ptr","typeString":"struct IterableMappingBPS.Map storage pointer"}},"id":15019,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1130:6:47","memberName":"values","nodeType":"MemberAccess","referencedDeclaration":14943,"src":"1126:10:47","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_BasisPointsRange_$14935_storage_$","typeString":"mapping(uint256 => struct BasisPointsRange storage ref)"}},"id":15020,"indexExpression":{"id":15018,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15003,"src":"1137:3:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1126:15:47","typeDescriptions":{"typeIdentifier":"t_struct$_BasisPointsRange_$14935_storage","typeString":"struct BasisPointsRange storage ref"}},"id":15021,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1142:3:47","memberName":"bps","nodeType":"MemberAccess","referencedDeclaration":14930,"src":"1126:19:47","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":15022,"name":"_bps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15005,"src":"1148:4:47","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"1126:26:47","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"id":15024,"nodeType":"ExpressionStatement","src":"1126:26:47"},{"expression":{"id":15032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":15025,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15001,"src":"1166:3:47","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14952_storage_ptr","typeString":"struct IterableMappingBPS.Map storage pointer"}},"id":15028,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1170:6:47","memberName":"values","nodeType":"MemberAccess","referencedDeclaration":14943,"src":"1166:10:47","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_BasisPointsRange_$14935_storage_$","typeString":"mapping(uint256 => struct BasisPointsRange storage ref)"}},"id":15029,"indexExpression":{"id":15027,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15003,"src":"1177:3:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1166:15:47","typeDescriptions":{"typeIdentifier":"t_struct$_BasisPointsRange_$14935_storage","typeString":"struct BasisPointsRange storage ref"}},"id":15030,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1182:18:47","memberName":"flowRateLowerBound","nodeType":"MemberAccess","referencedDeclaration":14932,"src":"1166:34:47","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":15031,"name":"_flowRateLowerBound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15007,"src":"1203:19:47","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"1166:56:47","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"id":15033,"nodeType":"ExpressionStatement","src":"1166:56:47"},{"expression":{"id":15041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":15034,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15001,"src":"1236:3:47","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14952_storage_ptr","typeString":"struct IterableMappingBPS.Map storage pointer"}},"id":15037,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1240:6:47","memberName":"values","nodeType":"MemberAccess","referencedDeclaration":14943,"src":"1236:10:47","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_BasisPointsRange_$14935_storage_$","typeString":"mapping(uint256 => struct BasisPointsRange storage ref)"}},"id":15038,"indexExpression":{"id":15036,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15003,"src":"1247:3:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1236:15:47","typeDescriptions":{"typeIdentifier":"t_struct$_BasisPointsRange_$14935_storage","typeString":"struct BasisPointsRange storage ref"}},"id":15039,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1252:18:47","memberName":"flowRateUpperBound","nodeType":"MemberAccess","referencedDeclaration":14934,"src":"1236:34:47","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":15040,"name":"_flowRateUpperBound","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15009,"src":"1273:19:47","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"1236:56:47","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"id":15042,"nodeType":"ExpressionStatement","src":"1236:56:47"}]}}]},"id":15100,"implemented":true,"kind":"function","modifiers":[],"name":"set","nameLocation":"921:3:47","nodeType":"FunctionDefinition","parameters":{"id":15010,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15001,"mutability":"mutable","name":"map","nameLocation":"946:3:47","nodeType":"VariableDeclaration","scope":15100,"src":"934:15:47","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14952_storage_ptr","typeString":"struct IterableMappingBPS.Map"},"typeName":{"id":15000,"nodeType":"UserDefinedTypeName","pathNode":{"id":14999,"name":"Map","nameLocations":["934:3:47"],"nodeType":"IdentifierPath","referencedDeclaration":14952,"src":"934:3:47"},"referencedDeclaration":14952,"src":"934:3:47","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14952_storage_ptr","typeString":"struct IterableMappingBPS.Map"}},"visibility":"internal"},{"constant":false,"id":15003,"mutability":"mutable","name":"key","nameLocation":"967:3:47","nodeType":"VariableDeclaration","scope":15100,"src":"959:11:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15002,"name":"uint256","nodeType":"ElementaryTypeName","src":"959:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15005,"mutability":"mutable","name":"_bps","nameLocation":"987:4:47","nodeType":"VariableDeclaration","scope":15100,"src":"980:11:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":15004,"name":"uint16","nodeType":"ElementaryTypeName","src":"980:6:47","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":15007,"mutability":"mutable","name":"_flowRateLowerBound","nameLocation":"1008:19:47","nodeType":"VariableDeclaration","scope":15100,"src":"1001:26:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":15006,"name":"uint96","nodeType":"ElementaryTypeName","src":"1001:6:47","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":15009,"mutability":"mutable","name":"_flowRateUpperBound","nameLocation":"1044:19:47","nodeType":"VariableDeclaration","scope":15100,"src":"1037:26:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":15008,"name":"uint96","nodeType":"ElementaryTypeName","src":"1037:6:47","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"src":"924:145:47"},"returnParameters":{"id":15011,"nodeType":"ParameterList","parameters":[],"src":"1079:0:47"},"scope":15181,"src":"912:714:47","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":15179,"nodeType":"Block","src":"1687:403:47","statements":[{"condition":{"id":15112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1701:18:47","subExpression":{"baseExpression":{"expression":{"id":15108,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15103,"src":"1702:3:47","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14952_storage_ptr","typeString":"struct IterableMappingBPS.Map storage pointer"}},"id":15109,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1706:8:47","memberName":"inserted","nodeType":"MemberAccess","referencedDeclaration":14951,"src":"1702:12:47","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":15111,"indexExpression":{"id":15110,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15105,"src":"1715:3:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1702:17:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15115,"nodeType":"IfStatement","src":"1697:55:47","trueBody":{"id":15114,"nodeType":"Block","src":"1721:31:47","statements":[{"functionReturnParameters":15107,"id":15113,"nodeType":"Return","src":"1735:7:47"}]}},{"expression":{"id":15120,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"1762:24:47","subExpression":{"baseExpression":{"expression":{"id":15116,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15103,"src":"1769:3:47","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14952_storage_ptr","typeString":"struct IterableMappingBPS.Map storage pointer"}},"id":15117,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1773:8:47","memberName":"inserted","nodeType":"MemberAccess","referencedDeclaration":14951,"src":"1769:12:47","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_bool_$","typeString":"mapping(uint256 => bool)"}},"id":15119,"indexExpression":{"id":15118,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15105,"src":"1782:3:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1769:17:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15121,"nodeType":"ExpressionStatement","src":"1762:24:47"},{"expression":{"id":15126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"1796:22:47","subExpression":{"baseExpression":{"expression":{"id":15122,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15103,"src":"1803:3:47","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14952_storage_ptr","typeString":"struct IterableMappingBPS.Map storage pointer"}},"id":15123,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1807:6:47","memberName":"values","nodeType":"MemberAccess","referencedDeclaration":14943,"src":"1803:10:47","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_BasisPointsRange_$14935_storage_$","typeString":"mapping(uint256 => struct BasisPointsRange storage ref)"}},"id":15125,"indexExpression":{"id":15124,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15105,"src":"1814:3:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1803:15:47","typeDescriptions":{"typeIdentifier":"t_struct$_BasisPointsRange_$14935_storage","typeString":"struct BasisPointsRange storage ref"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15127,"nodeType":"ExpressionStatement","src":"1796:22:47"},{"assignments":[15129],"declarations":[{"constant":false,"id":15129,"mutability":"mutable","name":"index","nameLocation":"1834:5:47","nodeType":"VariableDeclaration","scope":15179,"src":"1829:10:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15128,"name":"uint","nodeType":"ElementaryTypeName","src":"1829:4:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15134,"initialValue":{"baseExpression":{"expression":{"id":15130,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15103,"src":"1842:3:47","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14952_storage_ptr","typeString":"struct IterableMappingBPS.Map storage pointer"}},"id":15131,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1846:7:47","memberName":"indexOf","nodeType":"MemberAccess","referencedDeclaration":14947,"src":"1842:11:47","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":15133,"indexExpression":{"id":15132,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15105,"src":"1854:3:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1842:16:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1829:29:47"},{"assignments":[15136],"declarations":[{"constant":false,"id":15136,"mutability":"mutable","name":"lastIndex","nameLocation":"1873:9:47","nodeType":"VariableDeclaration","scope":15179,"src":"1868:14:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15135,"name":"uint","nodeType":"ElementaryTypeName","src":"1868:4:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15142,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":15137,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15103,"src":"1885:3:47","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14952_storage_ptr","typeString":"struct IterableMappingBPS.Map storage pointer"}},"id":15138,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1889:4:47","memberName":"keys","nodeType":"MemberAccess","referencedDeclaration":14938,"src":"1885:8:47","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":15139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1894:6:47","memberName":"length","nodeType":"MemberAccess","src":"1885:15:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":15140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1903:1:47","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1885:19:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1868:36:47"},{"assignments":[15144],"declarations":[{"constant":false,"id":15144,"mutability":"mutable","name":"lastKey","nameLocation":"1922:7:47","nodeType":"VariableDeclaration","scope":15179,"src":"1914:15:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15143,"name":"uint256","nodeType":"ElementaryTypeName","src":"1914:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15149,"initialValue":{"baseExpression":{"expression":{"id":15145,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15103,"src":"1932:3:47","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14952_storage_ptr","typeString":"struct IterableMappingBPS.Map storage pointer"}},"id":15146,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1936:4:47","memberName":"keys","nodeType":"MemberAccess","referencedDeclaration":14938,"src":"1932:8:47","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":15148,"indexExpression":{"id":15147,"name":"lastIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15136,"src":"1941:9:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1932:19:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1914:37:47"},{"expression":{"id":15156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":15150,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15103,"src":"1962:3:47","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14952_storage_ptr","typeString":"struct IterableMappingBPS.Map storage pointer"}},"id":15153,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1966:7:47","memberName":"indexOf","nodeType":"MemberAccess","referencedDeclaration":14947,"src":"1962:11:47","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":15154,"indexExpression":{"id":15152,"name":"lastKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15144,"src":"1974:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1962:20:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":15155,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15129,"src":"1985:5:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1962:28:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15157,"nodeType":"ExpressionStatement","src":"1962:28:47"},{"expression":{"id":15162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"2000:23:47","subExpression":{"baseExpression":{"expression":{"id":15158,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15103,"src":"2007:3:47","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14952_storage_ptr","typeString":"struct IterableMappingBPS.Map storage pointer"}},"id":15159,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2011:7:47","memberName":"indexOf","nodeType":"MemberAccess","referencedDeclaration":14947,"src":"2007:11:47","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":15161,"indexExpression":{"id":15160,"name":"key","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15105,"src":"2019:3:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2007:16:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15163,"nodeType":"ExpressionStatement","src":"2000:23:47"},{"expression":{"id":15170,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":15164,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15103,"src":"2034:3:47","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14952_storage_ptr","typeString":"struct IterableMappingBPS.Map storage pointer"}},"id":15167,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2038:4:47","memberName":"keys","nodeType":"MemberAccess","referencedDeclaration":14938,"src":"2034:8:47","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":15168,"indexExpression":{"id":15166,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15129,"src":"2043:5:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2034:15:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":15169,"name":"lastKey","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15144,"src":"2052:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2034:25:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15171,"nodeType":"ExpressionStatement","src":"2034:25:47"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":15172,"name":"map","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15103,"src":"2069:3:47","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14952_storage_ptr","typeString":"struct IterableMappingBPS.Map storage pointer"}},"id":15175,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2073:4:47","memberName":"keys","nodeType":"MemberAccess","referencedDeclaration":14938,"src":"2069:8:47","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":15176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2078:3:47","memberName":"pop","nodeType":"MemberAccess","src":"2069:12:47","typeDescriptions":{"typeIdentifier":"t_function_arraypop_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$","typeString":"function (uint256[] storage pointer)"}},"id":15177,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2069:14:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15178,"nodeType":"ExpressionStatement","src":"2069:14:47"}]},"id":15180,"implemented":true,"kind":"function","modifiers":[],"name":"remove","nameLocation":"1641:6:47","nodeType":"FunctionDefinition","parameters":{"id":15106,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15103,"mutability":"mutable","name":"map","nameLocation":"1660:3:47","nodeType":"VariableDeclaration","scope":15180,"src":"1648:15:47","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14952_storage_ptr","typeString":"struct IterableMappingBPS.Map"},"typeName":{"id":15102,"nodeType":"UserDefinedTypeName","pathNode":{"id":15101,"name":"Map","nameLocations":["1648:3:47"],"nodeType":"IdentifierPath","referencedDeclaration":14952,"src":"1648:3:47"},"referencedDeclaration":14952,"src":"1648:3:47","typeDescriptions":{"typeIdentifier":"t_struct$_Map_$14952_storage_ptr","typeString":"struct IterableMappingBPS.Map"}},"visibility":"internal"},{"constant":false,"id":15105,"mutability":"mutable","name":"key","nameLocation":"1673:3:47","nodeType":"VariableDeclaration","scope":15180,"src":"1665:11:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15104,"name":"uint256","nodeType":"ElementaryTypeName","src":"1665:7:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1647:30:47"},"returnParameters":{"id":15107,"nodeType":"ParameterList","parameters":[],"src":"1687:0:47"},"scope":15181,"src":"1632:458:47","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":15182,"src":"205:1887:47","usedErrors":[]}],"src":"32:2061:47"},"id":47},"contracts/libraries/utils/LibAccessControl.sol":{"ast":{"absolutePath":"contracts/libraries/utils/LibAccessControl.sol","exportedSymbols":{"LibAccessControl":[15479],"Math":[1995],"Strings":[1130]},"id":15480,"license":"BUSL-1.1","nodeType":"SourceUnit","nodes":[{"id":15183,"literals":["solidity","^","0.8",".9"],"nodeType":"PragmaDirective","src":"36:23:48"},{"absolutePath":"@openzeppelin/contracts/utils/Strings.sol","file":"@openzeppelin/contracts/utils/Strings.sol","id":15184,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":15480,"sourceUnit":1131,"src":"61:51:48","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"LibAccessControl","contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":15479,"linearizedBaseContracts":[15479],"name":"LibAccessControl","nameLocation":"122:16:48","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":15189,"mutability":"constant","name":"STORAGE_POSITION_ACCESSCONTROL","nameLocation":"162:30:48","nodeType":"VariableDeclaration","scope":15479,"src":"145:87:48","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15185,"name":"bytes32","nodeType":"ElementaryTypeName","src":"145:7:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"64732e616363657373636f6e74726f6c","id":15187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"213:18:48","typeDescriptions":{"typeIdentifier":"t_stringliteral_4cd15452b25e815d3f9d1a3c7edd985a178edf5eb3461a1acbf855517423d694","typeString":"literal_string \"ds.accesscontrol\""},"value":"ds.accesscontrol"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_4cd15452b25e815d3f9d1a3c7edd985a178edf5eb3461a1acbf855517423d694","typeString":"literal_string \"ds.accesscontrol\""}],"id":15186,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"203:9:48","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":15188,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"203:29:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":true,"id":15192,"mutability":"constant","name":"DEFAULT_ADMIN_ROLE","nameLocation":"256:18:48","nodeType":"VariableDeclaration","scope":15479,"src":"239:42:48","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15190,"name":"bytes32","nodeType":"ElementaryTypeName","src":"239:7:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"30783030","id":15191,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"277:4:48","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x00"},"visibility":"internal"},{"constant":true,"id":15200,"mutability":"constant","name":"MAINTAINER_ROLE","nameLocation":"304:15:48","nodeType":"VariableDeclaration","scope":15479,"src":"287:75:48","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15193,"name":"bytes32","nodeType":"ElementaryTypeName","src":"287:7:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"arguments":[{"hexValue":"4d41494e5441494e45525f524f4c45","id":15197,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"343:17:48","typeDescriptions":{"typeIdentifier":"t_stringliteral_339759585899103d2ace64958e37e18ccb0504652c81d4a1b8aa80fe2126ab95","typeString":"literal_string \"MAINTAINER_ROLE\""},"value":"MAINTAINER_ROLE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_339759585899103d2ace64958e37e18ccb0504652c81d4a1b8aa80fe2126ab95","typeString":"literal_string \"MAINTAINER_ROLE\""}],"expression":{"id":15195,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"332:3:48","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":15196,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"336:6:48","memberName":"encode","nodeType":"MemberAccess","src":"332:10:48","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":15198,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"332:29:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":15194,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"322:9:48","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":15199,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"322:40:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":true,"id":15208,"mutability":"constant","name":"TREASURER_ROLE","nameLocation":"385:14:48","nodeType":"VariableDeclaration","scope":15479,"src":"368:73:48","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15201,"name":"bytes32","nodeType":"ElementaryTypeName","src":"368:7:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"arguments":[{"hexValue":"5452454153555245525f524f4c45","id":15205,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"423:16:48","typeDescriptions":{"typeIdentifier":"t_stringliteral_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07","typeString":"literal_string \"TREASURER_ROLE\""},"value":"TREASURER_ROLE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07","typeString":"literal_string \"TREASURER_ROLE\""}],"expression":{"id":15203,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"412:3:48","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":15204,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"416:6:48","memberName":"encode","nodeType":"MemberAccess","src":"412:10:48","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":15206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"412:28:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":15202,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"402:9:48","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":15207,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"402:39:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":true,"id":15216,"mutability":"constant","name":"STRATEGIST_ROLE","nameLocation":"464:15:48","nodeType":"VariableDeclaration","scope":15479,"src":"447:75:48","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15209,"name":"bytes32","nodeType":"ElementaryTypeName","src":"447:7:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"arguments":[{"hexValue":"535452415445474953545f524f4c45","id":15213,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"503:17:48","typeDescriptions":{"typeIdentifier":"t_stringliteral_17a8e30262c1f919c33056d877a3c22b95c2f5e4dac44683c1c2323cd79fbdb0","typeString":"literal_string \"STRATEGIST_ROLE\""},"value":"STRATEGIST_ROLE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_17a8e30262c1f919c33056d877a3c22b95c2f5e4dac44683c1c2323cd79fbdb0","typeString":"literal_string \"STRATEGIST_ROLE\""}],"expression":{"id":15211,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"492:3:48","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":15212,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"496:6:48","memberName":"encode","nodeType":"MemberAccess","src":"492:10:48","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":15214,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"492:29:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":15210,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"482:9:48","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":15215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"482:40:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":true,"id":15224,"mutability":"constant","name":"DEVELOPER_ROLE","nameLocation":"545:14:48","nodeType":"VariableDeclaration","scope":15479,"src":"528:73:48","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15217,"name":"bytes32","nodeType":"ElementaryTypeName","src":"528:7:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"arguments":[{"hexValue":"444556454c4f5045525f524f4c45","id":15221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"583:16:48","typeDescriptions":{"typeIdentifier":"t_stringliteral_4504b9dfd7400a1522f49a8b4a100552da9236849581fd59b7363eb48c6a474c","typeString":"literal_string \"DEVELOPER_ROLE\""},"value":"DEVELOPER_ROLE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_4504b9dfd7400a1522f49a8b4a100552da9236849581fd59b7363eb48c6a474c","typeString":"literal_string \"DEVELOPER_ROLE\""}],"expression":{"id":15219,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"572:3:48","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":15220,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"576:6:48","memberName":"encode","nodeType":"MemberAccess","src":"572:10:48","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":15222,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"572:28:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":15218,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"562:9:48","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":15223,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"562:39:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"canonicalName":"LibAccessControl.RoleData","id":15231,"members":[{"constant":false,"id":15228,"mutability":"mutable","name":"members","nameLocation":"659:7:48","nodeType":"VariableDeclaration","scope":15231,"src":"634:32:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":15227,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":15225,"name":"address","nodeType":"ElementaryTypeName","src":"642:7:48","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"634:24:48","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":15226,"name":"bool","nodeType":"ElementaryTypeName","src":"653:4:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"internal"},{"constant":false,"id":15230,"mutability":"mutable","name":"adminRole","nameLocation":"684:9:48","nodeType":"VariableDeclaration","scope":15231,"src":"676:17:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15229,"name":"bytes32","nodeType":"ElementaryTypeName","src":"676:7:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"RoleData","nameLocation":"615:8:48","nodeType":"StructDefinition","scope":15479,"src":"608:92:48","visibility":"public"},{"canonicalName":"LibAccessControl.StorageAccessControl","id":15237,"members":[{"constant":false,"id":15236,"mutability":"mutable","name":"roles","nameLocation":"773:5:48","nodeType":"VariableDeclaration","scope":15237,"src":"744:34:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$15231_storage_$","typeString":"mapping(bytes32 => struct LibAccessControl.RoleData)"},"typeName":{"id":15235,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":15232,"name":"bytes32","nodeType":"ElementaryTypeName","src":"752:7:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"744:28:48","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$15231_storage_$","typeString":"mapping(bytes32 => struct LibAccessControl.RoleData)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":15234,"nodeType":"UserDefinedTypeName","pathNode":{"id":15233,"name":"RoleData","nameLocations":["763:8:48"],"nodeType":"IdentifierPath","referencedDeclaration":15231,"src":"763:8:48"},"referencedDeclaration":15231,"src":"763:8:48","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$15231_storage_ptr","typeString":"struct LibAccessControl.RoleData"}}},"visibility":"internal"}],"name":"StorageAccessControl","nameLocation":"713:20:48","nodeType":"StructDefinition","scope":15479,"src":"706:79:48","visibility":"public"},{"body":{"id":15248,"nodeType":"Block","src":"907:126:48","statements":[{"assignments":[15244],"declarations":[{"constant":false,"id":15244,"mutability":"mutable","name":"position","nameLocation":"925:8:48","nodeType":"VariableDeclaration","scope":15248,"src":"917:16:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15243,"name":"bytes32","nodeType":"ElementaryTypeName","src":"917:7:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":15246,"initialValue":{"id":15245,"name":"STORAGE_POSITION_ACCESSCONTROL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15189,"src":"936:30:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"917:49:48"},{"AST":{"nodeType":"YulBlock","src":"985:42:48","statements":[{"nodeType":"YulAssignment","src":"999:18:48","value":{"name":"position","nodeType":"YulIdentifier","src":"1009:8:48"},"variableNames":[{"name":"s.slot","nodeType":"YulIdentifier","src":"999:6:48"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":15244,"isOffset":false,"isSlot":false,"src":"1009:8:48","valueSize":1},{"declaration":15241,"isOffset":false,"isSlot":true,"src":"999:6:48","suffix":"slot","valueSize":1}],"id":15247,"nodeType":"InlineAssembly","src":"976:51:48"}]},"id":15249,"implemented":true,"kind":"function","modifiers":[],"name":"_storageAccessControl","nameLocation":"800:21:48","nodeType":"FunctionDefinition","parameters":{"id":15238,"nodeType":"ParameterList","parameters":[],"src":"821:2:48"},"returnParameters":{"id":15242,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15241,"mutability":"mutable","name":"s","nameLocation":"900:1:48","nodeType":"VariableDeclaration","scope":15249,"src":"871:30:48","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageAccessControl_$15237_storage_ptr","typeString":"struct LibAccessControl.StorageAccessControl"},"typeName":{"id":15240,"nodeType":"UserDefinedTypeName","pathNode":{"id":15239,"name":"StorageAccessControl","nameLocations":["871:20:48"],"nodeType":"IdentifierPath","referencedDeclaration":15237,"src":"871:20:48"},"referencedDeclaration":15237,"src":"871:20:48","typeDescriptions":{"typeIdentifier":"t_struct$_StorageAccessControl_$15237_storage_ptr","typeString":"struct LibAccessControl.StorageAccessControl"}},"visibility":"internal"}],"src":"870:32:48"},"scope":15479,"src":"791:242:48","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":15258,"nodeType":"Block","src":"1094:34:48","statements":[{"expression":{"arguments":[{"id":15255,"name":"_role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15251,"src":"1115:5:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":15254,"name":"_checkRole","nodeType":"Identifier","overloadedDeclarations":[15290,15332],"referencedDeclaration":15290,"src":"1104:10:48","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$__$","typeString":"function (bytes32) view"}},"id":15256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1104:17:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15257,"nodeType":"ExpressionStatement","src":"1104:17:48"}]},"id":15259,"implemented":true,"kind":"function","modifiers":[],"name":"_requireOnlyRole","nameLocation":"1048:16:48","nodeType":"FunctionDefinition","parameters":{"id":15252,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15251,"mutability":"mutable","name":"_role","nameLocation":"1073:5:48","nodeType":"VariableDeclaration","scope":15259,"src":"1065:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15250,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1065:7:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1064:15:48"},"returnParameters":{"id":15253,"nodeType":"ParameterList","parameters":[],"src":"1094:0:48"},"scope":15479,"src":"1039:89:48","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":15277,"nodeType":"Block","src":"1236:78:48","statements":[{"expression":{"baseExpression":{"expression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":15268,"name":"_storageAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15249,"src":"1253:21:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageAccessControl_$15237_storage_ptr_$","typeString":"function () pure returns (struct LibAccessControl.StorageAccessControl storage pointer)"}},"id":15269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1253:23:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageAccessControl_$15237_storage_ptr","typeString":"struct LibAccessControl.StorageAccessControl storage pointer"}},"id":15270,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1277:5:48","memberName":"roles","nodeType":"MemberAccess","referencedDeclaration":15236,"src":"1253:29:48","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$15231_storage_$","typeString":"mapping(bytes32 => struct LibAccessControl.RoleData storage ref)"}},"id":15272,"indexExpression":{"id":15271,"name":"_role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15261,"src":"1283:5:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1253:36:48","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$15231_storage","typeString":"struct LibAccessControl.RoleData storage ref"}},"id":15273,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1290:7:48","memberName":"members","nodeType":"MemberAccess","referencedDeclaration":15228,"src":"1253:44:48","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":15275,"indexExpression":{"id":15274,"name":"_account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15263,"src":"1298:8:48","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1253:54:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":15267,"id":15276,"nodeType":"Return","src":"1246:61:48"}]},"id":15278,"implemented":true,"kind":"function","modifiers":[],"name":"_hasRole","nameLocation":"1143:8:48","nodeType":"FunctionDefinition","parameters":{"id":15264,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15261,"mutability":"mutable","name":"_role","nameLocation":"1169:5:48","nodeType":"VariableDeclaration","scope":15278,"src":"1161:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15260,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1161:7:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":15263,"mutability":"mutable","name":"_account","nameLocation":"1192:8:48","nodeType":"VariableDeclaration","scope":15278,"src":"1184:16:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15262,"name":"address","nodeType":"ElementaryTypeName","src":"1184:7:48","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1151:55:48"},"returnParameters":{"id":15267,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15266,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15278,"src":"1230:4:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15265,"name":"bool","nodeType":"ElementaryTypeName","src":"1230:4:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1229:6:48"},"scope":15479,"src":"1134:180:48","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":15289,"nodeType":"Block","src":"1369:46:48","statements":[{"expression":{"arguments":[{"id":15284,"name":"_role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15280,"src":"1390:5:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":15285,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1397:3:48","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":15286,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1401:6:48","memberName":"sender","nodeType":"MemberAccess","src":"1397:10:48","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":15283,"name":"_checkRole","nodeType":"Identifier","overloadedDeclarations":[15290,15332],"referencedDeclaration":15332,"src":"1379:10:48","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address) view"}},"id":15287,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1379:29:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15288,"nodeType":"ExpressionStatement","src":"1379:29:48"}]},"id":15290,"implemented":true,"kind":"function","modifiers":[],"name":"_checkRole","nameLocation":"1329:10:48","nodeType":"FunctionDefinition","parameters":{"id":15281,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15280,"mutability":"mutable","name":"_role","nameLocation":"1348:5:48","nodeType":"VariableDeclaration","scope":15290,"src":"1340:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15279,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1340:7:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1339:15:48"},"returnParameters":{"id":15282,"nodeType":"ParameterList","parameters":[],"src":"1369:0:48"},"scope":15479,"src":"1320:95:48","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":15331,"nodeType":"Block","src":"1488:424:48","statements":[{"condition":{"id":15301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1502:26:48","subExpression":{"arguments":[{"id":15298,"name":"_role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15292,"src":"1512:5:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":15299,"name":"_account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15294,"src":"1519:8:48","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":15297,"name":"_hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15278,"src":"1503:8:48","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":15300,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1503:25:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15330,"nodeType":"IfStatement","src":"1498:408:48","trueBody":{"id":15329,"nodeType":"Block","src":"1530:376:48","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"hexValue":"416363657373436f6e74726f6c3a206163636f756e7420","id":15307,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1638:25:48","typeDescriptions":{"typeIdentifier":"t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874","typeString":"literal_string \"AccessControl: account \""},"value":"AccessControl: account "},{"arguments":[{"arguments":[{"id":15312,"name":"_account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15294,"src":"1717:8:48","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":15311,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1709:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":15310,"name":"uint160","nodeType":"ElementaryTypeName","src":"1709:7:48","typeDescriptions":{}}},"id":15313,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1709:17:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},{"hexValue":"3230","id":15314,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1728:2:48","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"},{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"}],"expression":{"id":15308,"name":"Strings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1130,"src":"1689:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Strings_$1130_$","typeString":"type(library Strings)"}},"id":15309,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1697:11:48","memberName":"toHexString","nodeType":"MemberAccess","referencedDeclaration":1109,"src":"1689:19:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":15315,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1689:42:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"206973206d697373696e6720726f6c6520","id":15316,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1757:19:48","typeDescriptions":{"typeIdentifier":"t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69","typeString":"literal_string \" is missing role \""},"value":" is missing role "},{"arguments":[{"arguments":[{"id":15321,"name":"_role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15292,"src":"1830:5:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":15320,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1822:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":15319,"name":"uint256","nodeType":"ElementaryTypeName","src":"1822:7:48","typeDescriptions":{}}},"id":15322,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1822:14:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"3332","id":15323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1838:2:48","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"expression":{"id":15317,"name":"Strings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1130,"src":"1802:7:48","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Strings_$1130_$","typeString":"type(library Strings)"}},"id":15318,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1810:11:48","memberName":"toHexString","nodeType":"MemberAccess","referencedDeclaration":1109,"src":"1802:19:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":15324,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1802:39:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874","typeString":"literal_string \"AccessControl: account \""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69","typeString":"literal_string \" is missing role \""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":15305,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1596:3:48","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":15306,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1600:12:48","memberName":"encodePacked","nodeType":"MemberAccess","src":"1596:16:48","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":15325,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1596:267:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":15304,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1568:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":15303,"name":"string","nodeType":"ElementaryTypeName","src":"1568:6:48","typeDescriptions":{}}},"id":15326,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1568:313:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":15302,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"1544:6:48","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":15327,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1544:351:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15328,"nodeType":"ExpressionStatement","src":"1544:351:48"}]}}]},"id":15332,"implemented":true,"kind":"function","modifiers":[],"name":"_checkRole","nameLocation":"1430:10:48","nodeType":"FunctionDefinition","parameters":{"id":15295,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15292,"mutability":"mutable","name":"_role","nameLocation":"1449:5:48","nodeType":"VariableDeclaration","scope":15332,"src":"1441:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15291,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1441:7:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":15294,"mutability":"mutable","name":"_account","nameLocation":"1464:8:48","nodeType":"VariableDeclaration","scope":15332,"src":"1456:16:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15293,"name":"address","nodeType":"ElementaryTypeName","src":"1456:7:48","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1440:33:48"},"returnParameters":{"id":15296,"nodeType":"ParameterList","parameters":[],"src":"1488:0:48"},"scope":15479,"src":"1421:491:48","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":15346,"nodeType":"Block","src":"1988:70:48","statements":[{"expression":{"expression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":15339,"name":"_storageAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15249,"src":"2005:21:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageAccessControl_$15237_storage_ptr_$","typeString":"function () pure returns (struct LibAccessControl.StorageAccessControl storage pointer)"}},"id":15340,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2005:23:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageAccessControl_$15237_storage_ptr","typeString":"struct LibAccessControl.StorageAccessControl storage pointer"}},"id":15341,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2029:5:48","memberName":"roles","nodeType":"MemberAccess","referencedDeclaration":15236,"src":"2005:29:48","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$15231_storage_$","typeString":"mapping(bytes32 => struct LibAccessControl.RoleData storage ref)"}},"id":15343,"indexExpression":{"id":15342,"name":"_role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15334,"src":"2035:5:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2005:36:48","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$15231_storage","typeString":"struct LibAccessControl.RoleData storage ref"}},"id":15344,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2042:9:48","memberName":"adminRole","nodeType":"MemberAccess","referencedDeclaration":15230,"src":"2005:46:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":15338,"id":15345,"nodeType":"Return","src":"1998:53:48"}]},"id":15347,"implemented":true,"kind":"function","modifiers":[],"name":"_getRoleAdmin","nameLocation":"1927:13:48","nodeType":"FunctionDefinition","parameters":{"id":15335,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15334,"mutability":"mutable","name":"_role","nameLocation":"1949:5:48","nodeType":"VariableDeclaration","scope":15347,"src":"1941:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15333,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1941:7:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1940:15:48"},"returnParameters":{"id":15338,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15337,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":15347,"src":"1979:7:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15336,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1979:7:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1978:9:48"},"scope":15479,"src":"1918:140:48","stateMutability":"view","virtual":false,"visibility":"internal"},{"anonymous":false,"eventSelector":"bd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff","id":15355,"name":"RoleAdminChanged","nameLocation":"2070:16:48","nodeType":"EventDefinition","parameters":{"id":15354,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15349,"indexed":true,"mutability":"mutable","name":"role","nameLocation":"2112:4:48","nodeType":"VariableDeclaration","scope":15355,"src":"2096:20:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15348,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2096:7:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":15351,"indexed":true,"mutability":"mutable","name":"previousAdminRole","nameLocation":"2142:17:48","nodeType":"VariableDeclaration","scope":15355,"src":"2126:33:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15350,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2126:7:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":15353,"indexed":true,"mutability":"mutable","name":"newAdminRole","nameLocation":"2185:12:48","nodeType":"VariableDeclaration","scope":15355,"src":"2169:28:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15352,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2169:7:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2086:117:48"},"src":"2064:140:48"},{"body":{"id":15383,"nodeType":"Block","src":"2277:203:48","statements":[{"assignments":[15363],"declarations":[{"constant":false,"id":15363,"mutability":"mutable","name":"previousAdminRole","nameLocation":"2295:17:48","nodeType":"VariableDeclaration","scope":15383,"src":"2287:25:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15362,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2287:7:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":15367,"initialValue":{"arguments":[{"id":15365,"name":"_role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15357,"src":"2329:5:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":15364,"name":"_getRoleAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15347,"src":"2315:13:48","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":15366,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2315:20:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"2287:48:48"},{"expression":{"id":15375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":15368,"name":"_storageAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15249,"src":"2345:21:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageAccessControl_$15237_storage_ptr_$","typeString":"function () pure returns (struct LibAccessControl.StorageAccessControl storage pointer)"}},"id":15369,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2345:23:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageAccessControl_$15237_storage_ptr","typeString":"struct LibAccessControl.StorageAccessControl storage pointer"}},"id":15370,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2369:5:48","memberName":"roles","nodeType":"MemberAccess","referencedDeclaration":15236,"src":"2345:29:48","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$15231_storage_$","typeString":"mapping(bytes32 => struct LibAccessControl.RoleData storage ref)"}},"id":15372,"indexExpression":{"id":15371,"name":"_role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15357,"src":"2375:5:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2345:36:48","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$15231_storage","typeString":"struct LibAccessControl.RoleData storage ref"}},"id":15373,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2382:9:48","memberName":"adminRole","nodeType":"MemberAccess","referencedDeclaration":15230,"src":"2345:46:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":15374,"name":"_adminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15359,"src":"2394:10:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2345:59:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":15376,"nodeType":"ExpressionStatement","src":"2345:59:48"},{"eventCall":{"arguments":[{"id":15378,"name":"_role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15357,"src":"2436:5:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":15379,"name":"previousAdminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15363,"src":"2443:17:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":15380,"name":"_adminRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15359,"src":"2462:10:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":15377,"name":"RoleAdminChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15355,"src":"2419:16:48","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (bytes32,bytes32,bytes32)"}},"id":15381,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2419:54:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15382,"nodeType":"EmitStatement","src":"2414:59:48"}]},"id":15384,"implemented":true,"kind":"function","modifiers":[],"name":"_setRoleAdmin","nameLocation":"2219:13:48","nodeType":"FunctionDefinition","parameters":{"id":15360,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15357,"mutability":"mutable","name":"_role","nameLocation":"2241:5:48","nodeType":"VariableDeclaration","scope":15384,"src":"2233:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15356,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2233:7:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":15359,"mutability":"mutable","name":"_adminRole","nameLocation":"2256:10:48","nodeType":"VariableDeclaration","scope":15384,"src":"2248:18:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15358,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2248:7:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2232:35:48"},"returnParameters":{"id":15361,"nodeType":"ParameterList","parameters":[],"src":"2277:0:48"},"scope":15479,"src":"2210:270:48","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"anonymous":false,"eventSelector":"2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d","id":15392,"name":"RoleGranted","nameLocation":"2492:11:48","nodeType":"EventDefinition","parameters":{"id":15391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15386,"indexed":true,"mutability":"mutable","name":"role","nameLocation":"2529:4:48","nodeType":"VariableDeclaration","scope":15392,"src":"2513:20:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15385,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2513:7:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":15388,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"2559:7:48","nodeType":"VariableDeclaration","scope":15392,"src":"2543:23:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15387,"name":"address","nodeType":"ElementaryTypeName","src":"2543:7:48","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15390,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"2592:6:48","nodeType":"VariableDeclaration","scope":15392,"src":"2576:22:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15389,"name":"address","nodeType":"ElementaryTypeName","src":"2576:7:48","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2503:101:48"},"src":"2486:119:48"},{"body":{"id":15424,"nodeType":"Block","src":"2673:193:48","statements":[{"condition":{"id":15403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"2687:26:48","subExpression":{"arguments":[{"id":15400,"name":"_role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15394,"src":"2697:5:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":15401,"name":"_account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15396,"src":"2704:8:48","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":15399,"name":"_hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15278,"src":"2688:8:48","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":15402,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2688:25:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15423,"nodeType":"IfStatement","src":"2683:177:48","trueBody":{"id":15422,"nodeType":"Block","src":"2715:145:48","statements":[{"expression":{"id":15413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":15404,"name":"_storageAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15249,"src":"2729:21:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageAccessControl_$15237_storage_ptr_$","typeString":"function () pure returns (struct LibAccessControl.StorageAccessControl storage pointer)"}},"id":15405,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2729:23:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageAccessControl_$15237_storage_ptr","typeString":"struct LibAccessControl.StorageAccessControl storage pointer"}},"id":15406,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2753:5:48","memberName":"roles","nodeType":"MemberAccess","referencedDeclaration":15236,"src":"2729:29:48","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$15231_storage_$","typeString":"mapping(bytes32 => struct LibAccessControl.RoleData storage ref)"}},"id":15408,"indexExpression":{"id":15407,"name":"_role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15394,"src":"2759:5:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2729:36:48","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$15231_storage","typeString":"struct LibAccessControl.RoleData storage ref"}},"id":15409,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2766:7:48","memberName":"members","nodeType":"MemberAccess","referencedDeclaration":15228,"src":"2729:44:48","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":15411,"indexExpression":{"id":15410,"name":"_account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15396,"src":"2774:8:48","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2729:54:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":15412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2786:4:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"2729:61:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15414,"nodeType":"ExpressionStatement","src":"2729:61:48"},{"eventCall":{"arguments":[{"id":15416,"name":"_role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15394,"src":"2821:5:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":15417,"name":"_account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15396,"src":"2828:8:48","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":15418,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2838:3:48","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":15419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2842:6:48","memberName":"sender","nodeType":"MemberAccess","src":"2838:10:48","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":15415,"name":"RoleGranted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15392,"src":"2809:11:48","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$","typeString":"function (bytes32,address,address)"}},"id":15420,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2809:40:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15421,"nodeType":"EmitStatement","src":"2804:45:48"}]}}]},"id":15425,"implemented":true,"kind":"function","modifiers":[],"name":"_grantRole","nameLocation":"2620:10:48","nodeType":"FunctionDefinition","parameters":{"id":15397,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15394,"mutability":"mutable","name":"_role","nameLocation":"2639:5:48","nodeType":"VariableDeclaration","scope":15425,"src":"2631:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15393,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2631:7:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":15396,"mutability":"mutable","name":"_account","nameLocation":"2654:8:48","nodeType":"VariableDeclaration","scope":15425,"src":"2646:16:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15395,"name":"address","nodeType":"ElementaryTypeName","src":"2646:7:48","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2630:33:48"},"returnParameters":{"id":15398,"nodeType":"ParameterList","parameters":[],"src":"2673:0:48"},"scope":15479,"src":"2611:255:48","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"anonymous":false,"eventSelector":"f6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b","id":15433,"name":"RoleRevoked","nameLocation":"2878:11:48","nodeType":"EventDefinition","parameters":{"id":15432,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15427,"indexed":true,"mutability":"mutable","name":"role","nameLocation":"2915:4:48","nodeType":"VariableDeclaration","scope":15433,"src":"2899:20:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15426,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2899:7:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":15429,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"2945:7:48","nodeType":"VariableDeclaration","scope":15433,"src":"2929:23:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15428,"name":"address","nodeType":"ElementaryTypeName","src":"2929:7:48","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15431,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"2978:6:48","nodeType":"VariableDeclaration","scope":15433,"src":"2962:22:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15430,"name":"address","nodeType":"ElementaryTypeName","src":"2962:7:48","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2889:101:48"},"src":"2872:119:48"},{"body":{"id":15464,"nodeType":"Block","src":"3060:193:48","statements":[{"condition":{"arguments":[{"id":15441,"name":"_role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15435,"src":"3083:5:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":15442,"name":"_account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15437,"src":"3090:8:48","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":15440,"name":"_hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15278,"src":"3074:8:48","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":15443,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3074:25:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15463,"nodeType":"IfStatement","src":"3070:177:48","trueBody":{"id":15462,"nodeType":"Block","src":"3101:146:48","statements":[{"expression":{"id":15453,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"baseExpression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":15444,"name":"_storageAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15249,"src":"3115:21:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageAccessControl_$15237_storage_ptr_$","typeString":"function () pure returns (struct LibAccessControl.StorageAccessControl storage pointer)"}},"id":15445,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3115:23:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageAccessControl_$15237_storage_ptr","typeString":"struct LibAccessControl.StorageAccessControl storage pointer"}},"id":15446,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3139:5:48","memberName":"roles","nodeType":"MemberAccess","referencedDeclaration":15236,"src":"3115:29:48","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RoleData_$15231_storage_$","typeString":"mapping(bytes32 => struct LibAccessControl.RoleData storage ref)"}},"id":15448,"indexExpression":{"id":15447,"name":"_role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15435,"src":"3145:5:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3115:36:48","typeDescriptions":{"typeIdentifier":"t_struct$_RoleData_$15231_storage","typeString":"struct LibAccessControl.RoleData storage ref"}},"id":15449,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3152:7:48","memberName":"members","nodeType":"MemberAccess","referencedDeclaration":15228,"src":"3115:44:48","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":15451,"indexExpression":{"id":15450,"name":"_account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15437,"src":"3160:8:48","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3115:54:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":15452,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3172:5:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"3115:62:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15454,"nodeType":"ExpressionStatement","src":"3115:62:48"},{"eventCall":{"arguments":[{"id":15456,"name":"_role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15435,"src":"3208:5:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":15457,"name":"_account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15437,"src":"3215:8:48","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":15458,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3225:3:48","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":15459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3229:6:48","memberName":"sender","nodeType":"MemberAccess","src":"3225:10:48","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":15455,"name":"RoleRevoked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15433,"src":"3196:11:48","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$","typeString":"function (bytes32,address,address)"}},"id":15460,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3196:40:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15461,"nodeType":"EmitStatement","src":"3191:45:48"}]}}]},"id":15465,"implemented":true,"kind":"function","modifiers":[],"name":"_revokeRole","nameLocation":"3006:11:48","nodeType":"FunctionDefinition","parameters":{"id":15438,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15435,"mutability":"mutable","name":"_role","nameLocation":"3026:5:48","nodeType":"VariableDeclaration","scope":15465,"src":"3018:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15434,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3018:7:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":15437,"mutability":"mutable","name":"_account","nameLocation":"3041:8:48","nodeType":"VariableDeclaration","scope":15465,"src":"3033:16:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15436,"name":"address","nodeType":"ElementaryTypeName","src":"3033:7:48","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3017:33:48"},"returnParameters":{"id":15439,"nodeType":"ParameterList","parameters":[],"src":"3060:0:48"},"scope":15479,"src":"2997:256:48","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":15477,"nodeType":"Block","src":"3321:44:48","statements":[{"expression":{"arguments":[{"id":15473,"name":"_role","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15467,"src":"3342:5:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":15474,"name":"_account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15469,"src":"3349:8:48","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":15472,"name":"_grantRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15425,"src":"3331:10:48","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":15475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3331:27:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15476,"nodeType":"ExpressionStatement","src":"3331:27:48"}]},"id":15478,"implemented":true,"kind":"function","modifiers":[],"name":"_setupRole","nameLocation":"3268:10:48","nodeType":"FunctionDefinition","parameters":{"id":15470,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15467,"mutability":"mutable","name":"_role","nameLocation":"3287:5:48","nodeType":"VariableDeclaration","scope":15478,"src":"3279:13:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15466,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3279:7:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":15469,"mutability":"mutable","name":"_account","nameLocation":"3302:8:48","nodeType":"VariableDeclaration","scope":15478,"src":"3294:16:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15468,"name":"address","nodeType":"ElementaryTypeName","src":"3294:7:48","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3278:33:48"},"returnParameters":{"id":15471,"nodeType":"ParameterList","parameters":[],"src":"3321:0:48"},"scope":15479,"src":"3259:106:48","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":15480,"src":"114:3253:48","usedErrors":[]}],"src":"36:3332:48"},"id":48},"contracts/libraries/utils/LibDiamond.sol":{"ast":{"absolutePath":"contracts/libraries/utils/LibDiamond.sol","exportedSymbols":{"ICut":[11840],"InitializationFunctionReverted":[15489],"LibDiamond":[16228]},"id":16229,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":15481,"literals":["solidity","^","0.8",".9"],"nodeType":"PragmaDirective","src":"32:23:49"},{"absolutePath":"contracts/interfaces/utils/ICut.sol","file":"../../interfaces/utils/ICut.sol","id":15483,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":16229,"sourceUnit":11841,"src":"57:53:49","symbolAliases":[{"foreign":{"id":15482,"name":"ICut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11840,"src":"65:4:49","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"errorSelector":"192105d7","id":15489,"name":"InitializationFunctionReverted","nameLocation":"266:30:49","nodeType":"ErrorDefinition","parameters":{"id":15488,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15485,"mutability":"mutable","name":"_initializationContractAddress","nameLocation":"310:30:49","nodeType":"VariableDeclaration","scope":15489,"src":"302:38:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15484,"name":"address","nodeType":"ElementaryTypeName","src":"302:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15487,"mutability":"mutable","name":"_calldata","nameLocation":"352:9:49","nodeType":"VariableDeclaration","scope":15489,"src":"346:15:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":15486,"name":"bytes","nodeType":"ElementaryTypeName","src":"346:5:49","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"296:67:49"},"src":"260:104:49"},{"abstract":false,"baseContracts":[],"canonicalName":"LibDiamond","contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":16228,"linearizedBaseContracts":[16228],"name":"LibDiamond","nameLocation":"374:10:49","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":15494,"mutability":"constant","name":"STORAGE_POSITION_DIAMOND","nameLocation":"408:24:49","nodeType":"VariableDeclaration","scope":16228,"src":"391:97:49","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15490,"name":"bytes32","nodeType":"ElementaryTypeName","src":"391:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"6469616d6f6e642e7374616e646172642e6469616d6f6e642e73746f72616765","id":15492,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"453:34:49","typeDescriptions":{"typeIdentifier":"t_stringliteral_c8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c","typeString":"literal_string \"diamond.standard.diamond.storage\""},"value":"diamond.standard.diamond.storage"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c","typeString":"literal_string \"diamond.standard.diamond.storage\""}],"id":15491,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"443:9:49","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":15493,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"443:45:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"canonicalName":"LibDiamond.FacetAddressAndPosition","id":15499,"members":[{"constant":false,"id":15496,"mutability":"mutable","name":"facetAddress","nameLocation":"544:12:49","nodeType":"VariableDeclaration","scope":15499,"src":"536:20:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15495,"name":"address","nodeType":"ElementaryTypeName","src":"536:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15498,"mutability":"mutable","name":"functionSelectorPosition","nameLocation":"573:24:49","nodeType":"VariableDeclaration","scope":15499,"src":"566:31:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":15497,"name":"uint96","nodeType":"ElementaryTypeName","src":"566:6:49","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"name":"FacetAddressAndPosition","nameLocation":"502:23:49","nodeType":"StructDefinition","scope":16228,"src":"495:171:49","visibility":"public"},{"canonicalName":"LibDiamond.FacetFunctionSelectors","id":15505,"members":[{"constant":false,"id":15502,"mutability":"mutable","name":"functionSelectors","nameLocation":"721:17:49","nodeType":"VariableDeclaration","scope":15505,"src":"712:26:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage_ptr","typeString":"bytes4[]"},"typeName":{"baseType":{"id":15500,"name":"bytes4","nodeType":"ElementaryTypeName","src":"712:6:49","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":15501,"nodeType":"ArrayTypeName","src":"712:8:49","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage_ptr","typeString":"bytes4[]"}},"visibility":"internal"},{"constant":false,"id":15504,"mutability":"mutable","name":"facetAddressPosition","nameLocation":"756:20:49","nodeType":"VariableDeclaration","scope":15505,"src":"748:28:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15503,"name":"uint256","nodeType":"ElementaryTypeName","src":"748:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"FacetFunctionSelectors","nameLocation":"679:22:49","nodeType":"StructDefinition","scope":16228,"src":"672:163:49","visibility":"public"},{"canonicalName":"LibDiamond.StorageDiamond","id":15523,"members":[{"constant":false,"id":15510,"mutability":"mutable","name":"selectorToFacetAndPosition","nameLocation":"1061:26:49","nodeType":"VariableDeclaration","scope":15523,"src":"1018:69:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_struct$_FacetAddressAndPosition_$15499_storage_$","typeString":"mapping(bytes4 => struct LibDiamond.FacetAddressAndPosition)"},"typeName":{"id":15509,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":15506,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1026:6:49","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"Mapping","src":"1018:42:49","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_struct$_FacetAddressAndPosition_$15499_storage_$","typeString":"mapping(bytes4 => struct LibDiamond.FacetAddressAndPosition)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":15508,"nodeType":"UserDefinedTypeName","pathNode":{"id":15507,"name":"FacetAddressAndPosition","nameLocations":["1036:23:49"],"nodeType":"IdentifierPath","referencedDeclaration":15499,"src":"1036:23:49"},"referencedDeclaration":15499,"src":"1036:23:49","typeDescriptions":{"typeIdentifier":"t_struct$_FacetAddressAndPosition_$15499_storage_ptr","typeString":"struct LibDiamond.FacetAddressAndPosition"}}},"visibility":"internal"},{"constant":false,"id":15515,"mutability":"mutable","name":"facetFunctionSelectors","nameLocation":"1194:22:49","nodeType":"VariableDeclaration","scope":15523,"src":"1151:65:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_FacetFunctionSelectors_$15505_storage_$","typeString":"mapping(address => struct LibDiamond.FacetFunctionSelectors)"},"typeName":{"id":15514,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":15511,"name":"address","nodeType":"ElementaryTypeName","src":"1159:7:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1151:42:49","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_FacetFunctionSelectors_$15505_storage_$","typeString":"mapping(address => struct LibDiamond.FacetFunctionSelectors)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":15513,"nodeType":"UserDefinedTypeName","pathNode":{"id":15512,"name":"FacetFunctionSelectors","nameLocations":["1170:22:49"],"nodeType":"IdentifierPath","referencedDeclaration":15505,"src":"1170:22:49"},"referencedDeclaration":15505,"src":"1170:22:49","typeDescriptions":{"typeIdentifier":"t_struct$_FacetFunctionSelectors_$15505_storage_ptr","typeString":"struct LibDiamond.FacetFunctionSelectors"}}},"visibility":"internal"},{"constant":false,"id":15518,"mutability":"mutable","name":"facetAddresses","nameLocation":"1263:14:49","nodeType":"VariableDeclaration","scope":15523,"src":"1253:24:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":15516,"name":"address","nodeType":"ElementaryTypeName","src":"1253:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":15517,"nodeType":"ArrayTypeName","src":"1253:9:49","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":15522,"mutability":"mutable","name":"supportedInterfaces","nameLocation":"1413:19:49","nodeType":"VariableDeclaration","scope":15523,"src":"1389:43:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_bool_$","typeString":"mapping(bytes4 => bool)"},"typeName":{"id":15521,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":15519,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1397:6:49","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"Mapping","src":"1389:23:49","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_bool_$","typeString":"mapping(bytes4 => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":15520,"name":"bool","nodeType":"ElementaryTypeName","src":"1407:4:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"internal"}],"name":"StorageDiamond","nameLocation":"848:14:49","nodeType":"StructDefinition","scope":16228,"src":"841:598:49","visibility":"public"},{"body":{"id":15534,"nodeType":"Block","src":"1549:120:49","statements":[{"assignments":[15530],"declarations":[{"constant":false,"id":15530,"mutability":"mutable","name":"position","nameLocation":"1567:8:49","nodeType":"VariableDeclaration","scope":15534,"src":"1559:16:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":15529,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1559:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":15532,"initialValue":{"id":15531,"name":"STORAGE_POSITION_DIAMOND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15494,"src":"1578:24:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"1559:43:49"},{"AST":{"nodeType":"YulBlock","src":"1621:42:49","statements":[{"nodeType":"YulAssignment","src":"1635:18:49","value":{"name":"position","nodeType":"YulIdentifier","src":"1645:8:49"},"variableNames":[{"name":"s.slot","nodeType":"YulIdentifier","src":"1635:6:49"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":15530,"isOffset":false,"isSlot":false,"src":"1645:8:49","valueSize":1},{"declaration":15527,"isOffset":false,"isSlot":true,"src":"1635:6:49","suffix":"slot","valueSize":1}],"id":15533,"nodeType":"InlineAssembly","src":"1612:51:49"}]},"id":15535,"implemented":true,"kind":"function","modifiers":[],"name":"_storageDiamond","nameLocation":"1454:15:49","nodeType":"FunctionDefinition","parameters":{"id":15524,"nodeType":"ParameterList","parameters":[],"src":"1469:2:49"},"returnParameters":{"id":15528,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15527,"mutability":"mutable","name":"s","nameLocation":"1542:1:49","nodeType":"VariableDeclaration","scope":15535,"src":"1519:24:49","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond"},"typeName":{"id":15526,"nodeType":"UserDefinedTypeName","pathNode":{"id":15525,"name":"StorageDiamond","nameLocations":["1519:14:49"],"nodeType":"IdentifierPath","referencedDeclaration":15523,"src":"1519:14:49"},"referencedDeclaration":15523,"src":"1519:14:49","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond"}},"visibility":"internal"}],"src":"1518:26:49"},"scope":16228,"src":"1445:224:49","stateMutability":"pure","virtual":false,"visibility":"internal"},{"anonymous":false,"eventSelector":"8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb673","id":15545,"name":"DiamondCut","nameLocation":"1681:10:49","nodeType":"EventDefinition","parameters":{"id":15544,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15539,"indexed":false,"mutability":"mutable","name":"_diamondCut","nameLocation":"1717:11:49","nodeType":"VariableDeclaration","scope":15545,"src":"1701:27:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr","typeString":"struct ICut.FacetCut[]"},"typeName":{"baseType":{"id":15537,"nodeType":"UserDefinedTypeName","pathNode":{"id":15536,"name":"ICut.FacetCut","nameLocations":["1701:4:49","1706:8:49"],"nodeType":"IdentifierPath","referencedDeclaration":11817,"src":"1701:13:49"},"referencedDeclaration":11817,"src":"1701:13:49","typeDescriptions":{"typeIdentifier":"t_struct$_FacetCut_$11817_storage_ptr","typeString":"struct ICut.FacetCut"}},"id":15538,"nodeType":"ArrayTypeName","src":"1701:15:49","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_FacetCut_$11817_storage_$dyn_storage_ptr","typeString":"struct ICut.FacetCut[]"}},"visibility":"internal"},{"constant":false,"id":15541,"indexed":false,"mutability":"mutable","name":"_init","nameLocation":"1746:5:49","nodeType":"VariableDeclaration","scope":15545,"src":"1738:13:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15540,"name":"address","nodeType":"ElementaryTypeName","src":"1738:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15543,"indexed":false,"mutability":"mutable","name":"_calldata","nameLocation":"1767:9:49","nodeType":"VariableDeclaration","scope":15545,"src":"1761:15:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":15542,"name":"bytes","nodeType":"ElementaryTypeName","src":"1761:5:49","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1691:91:49"},"src":"1675:108:49"},{"body":{"id":15648,"nodeType":"Block","src":"1964:1122:49","statements":[{"body":{"id":15635,"nodeType":"Block","src":"2092:883:49","statements":[{"assignments":[15570],"declarations":[{"constant":false,"id":15570,"mutability":"mutable","name":"action","nameLocation":"2126:6:49","nodeType":"VariableDeclaration","scope":15635,"src":"2106:26:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_FacetCutAction_$11808","typeString":"enum ICut.FacetCutAction"},"typeName":{"id":15569,"nodeType":"UserDefinedTypeName","pathNode":{"id":15568,"name":"ICut.FacetCutAction","nameLocations":["2106:4:49","2111:14:49"],"nodeType":"IdentifierPath","referencedDeclaration":11808,"src":"2106:19:49"},"referencedDeclaration":11808,"src":"2106:19:49","typeDescriptions":{"typeIdentifier":"t_enum$_FacetCutAction_$11808","typeString":"enum ICut.FacetCutAction"}},"visibility":"internal"}],"id":15575,"initialValue":{"expression":{"baseExpression":{"id":15571,"name":"_diamondCut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15549,"src":"2135:11:49","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr","typeString":"struct ICut.FacetCut memory[] memory"}},"id":15573,"indexExpression":{"id":15572,"name":"facetIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15557,"src":"2147:10:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2135:23:49","typeDescriptions":{"typeIdentifier":"t_struct$_FacetCut_$11817_memory_ptr","typeString":"struct ICut.FacetCut memory"}},"id":15574,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2159:6:49","memberName":"action","nodeType":"MemberAccess","referencedDeclaration":11813,"src":"2135:30:49","typeDescriptions":{"typeIdentifier":"t_enum$_FacetCutAction_$11808","typeString":"enum ICut.FacetCutAction"}},"nodeType":"VariableDeclarationStatement","src":"2106:59:49"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_FacetCutAction_$11808","typeString":"enum ICut.FacetCutAction"},"id":15580,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15576,"name":"action","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15570,"src":"2183:6:49","typeDescriptions":{"typeIdentifier":"t_enum$_FacetCutAction_$11808","typeString":"enum ICut.FacetCutAction"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":15577,"name":"ICut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11840,"src":"2193:4:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ICut_$11840_$","typeString":"type(contract ICut)"}},"id":15578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2198:14:49","memberName":"FacetCutAction","nodeType":"MemberAccess","referencedDeclaration":11808,"src":"2193:19:49","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FacetCutAction_$11808_$","typeString":"type(enum ICut.FacetCutAction)"}},"id":15579,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2213:3:49","memberName":"Add","nodeType":"MemberAccess","referencedDeclaration":11805,"src":"2193:23:49","typeDescriptions":{"typeIdentifier":"t_enum$_FacetCutAction_$11808","typeString":"enum ICut.FacetCutAction"}},"src":"2183:33:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_FacetCutAction_$11808","typeString":"enum ICut.FacetCutAction"},"id":15597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15593,"name":"action","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15570,"src":"2413:6:49","typeDescriptions":{"typeIdentifier":"t_enum$_FacetCutAction_$11808","typeString":"enum ICut.FacetCutAction"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":15594,"name":"ICut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11840,"src":"2423:4:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ICut_$11840_$","typeString":"type(contract ICut)"}},"id":15595,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2428:14:49","memberName":"FacetCutAction","nodeType":"MemberAccess","referencedDeclaration":11808,"src":"2423:19:49","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FacetCutAction_$11808_$","typeString":"type(enum ICut.FacetCutAction)"}},"id":15596,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2443:7:49","memberName":"Replace","nodeType":"MemberAccess","referencedDeclaration":11806,"src":"2423:27:49","typeDescriptions":{"typeIdentifier":"t_enum$_FacetCutAction_$11808","typeString":"enum ICut.FacetCutAction"}},"src":"2413:37:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_FacetCutAction_$11808","typeString":"enum ICut.FacetCutAction"},"id":15614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15610,"name":"action","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15570,"src":"2651:6:49","typeDescriptions":{"typeIdentifier":"t_enum$_FacetCutAction_$11808","typeString":"enum ICut.FacetCutAction"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":15611,"name":"ICut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11840,"src":"2661:4:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ICut_$11840_$","typeString":"type(contract ICut)"}},"id":15612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2666:14:49","memberName":"FacetCutAction","nodeType":"MemberAccess","referencedDeclaration":11808,"src":"2661:19:49","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_FacetCutAction_$11808_$","typeString":"type(enum ICut.FacetCutAction)"}},"id":15613,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2681:6:49","memberName":"Remove","nodeType":"MemberAccess","referencedDeclaration":11807,"src":"2661:26:49","typeDescriptions":{"typeIdentifier":"t_enum$_FacetCutAction_$11808","typeString":"enum ICut.FacetCutAction"}},"src":"2651:36:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":15631,"nodeType":"Block","src":"2883:82:49","statements":[{"expression":{"arguments":[{"hexValue":"4c69624469616d6f6e644375743a20496e636f7272656374204661636574437574416374696f6e","id":15628,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2908:41:49","typeDescriptions":{"typeIdentifier":"t_stringliteral_48267d8daf5ea9c6bbad1fe9c53dc4c04a2a01b2b85bad432956cf42f45b2f54","typeString":"literal_string \"LibDiamondCut: Incorrect FacetCutAction\""},"value":"LibDiamondCut: Incorrect FacetCutAction"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_48267d8daf5ea9c6bbad1fe9c53dc4c04a2a01b2b85bad432956cf42f45b2f54","typeString":"literal_string \"LibDiamondCut: Incorrect FacetCutAction\""}],"id":15627,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"2901:6:49","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":15629,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2901:49:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15630,"nodeType":"ExpressionStatement","src":"2901:49:49"}]},"id":15632,"nodeType":"IfStatement","src":"2647:318:49","trueBody":{"id":15626,"nodeType":"Block","src":"2689:188:49","statements":[{"expression":{"arguments":[{"expression":{"baseExpression":{"id":15616,"name":"_diamondCut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15549,"src":"2745:11:49","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr","typeString":"struct ICut.FacetCut memory[] memory"}},"id":15618,"indexExpression":{"id":15617,"name":"facetIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15557,"src":"2757:10:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2745:23:49","typeDescriptions":{"typeIdentifier":"t_struct$_FacetCut_$11817_memory_ptr","typeString":"struct ICut.FacetCut memory"}},"id":15619,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2769:12:49","memberName":"facetAddress","nodeType":"MemberAccess","referencedDeclaration":11810,"src":"2745:36:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"baseExpression":{"id":15620,"name":"_diamondCut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15549,"src":"2803:11:49","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr","typeString":"struct ICut.FacetCut memory[] memory"}},"id":15622,"indexExpression":{"id":15621,"name":"facetIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15557,"src":"2815:10:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2803:23:49","typeDescriptions":{"typeIdentifier":"t_struct$_FacetCut_$11817_memory_ptr","typeString":"struct ICut.FacetCut memory"}},"id":15623,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2827:17:49","memberName":"functionSelectors","nodeType":"MemberAccess","referencedDeclaration":11816,"src":"2803:41:49","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}],"id":15615,"name":"_removeFunctions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15919,"src":"2707:16:49","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_array$_t_bytes4_$dyn_memory_ptr_$returns$__$","typeString":"function (address,bytes4[] memory)"}},"id":15624,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2707:155:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15625,"nodeType":"ExpressionStatement","src":"2707:155:49"}]}},"id":15633,"nodeType":"IfStatement","src":"2409:556:49","trueBody":{"id":15609,"nodeType":"Block","src":"2452:189:49","statements":[{"expression":{"arguments":[{"expression":{"baseExpression":{"id":15599,"name":"_diamondCut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15549,"src":"2509:11:49","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr","typeString":"struct ICut.FacetCut memory[] memory"}},"id":15601,"indexExpression":{"id":15600,"name":"facetIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15557,"src":"2521:10:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2509:23:49","typeDescriptions":{"typeIdentifier":"t_struct$_FacetCut_$11817_memory_ptr","typeString":"struct ICut.FacetCut memory"}},"id":15602,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2533:12:49","memberName":"facetAddress","nodeType":"MemberAccess","referencedDeclaration":11810,"src":"2509:36:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"baseExpression":{"id":15603,"name":"_diamondCut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15549,"src":"2567:11:49","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr","typeString":"struct ICut.FacetCut memory[] memory"}},"id":15605,"indexExpression":{"id":15604,"name":"facetIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15557,"src":"2579:10:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2567:23:49","typeDescriptions":{"typeIdentifier":"t_struct$_FacetCut_$11817_memory_ptr","typeString":"struct ICut.FacetCut memory"}},"id":15606,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2591:17:49","memberName":"functionSelectors","nodeType":"MemberAccess","referencedDeclaration":11816,"src":"2567:41:49","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}],"id":15598,"name":"_replaceFunctions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15854,"src":"2470:17:49","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_array$_t_bytes4_$dyn_memory_ptr_$returns$__$","typeString":"function (address,bytes4[] memory)"}},"id":15607,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2470:156:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15608,"nodeType":"ExpressionStatement","src":"2470:156:49"}]}},"id":15634,"nodeType":"IfStatement","src":"2179:786:49","trueBody":{"id":15592,"nodeType":"Block","src":"2218:185:49","statements":[{"expression":{"arguments":[{"expression":{"baseExpression":{"id":15582,"name":"_diamondCut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15549,"src":"2271:11:49","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr","typeString":"struct ICut.FacetCut memory[] memory"}},"id":15584,"indexExpression":{"id":15583,"name":"facetIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15557,"src":"2283:10:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2271:23:49","typeDescriptions":{"typeIdentifier":"t_struct$_FacetCut_$11817_memory_ptr","typeString":"struct ICut.FacetCut memory"}},"id":15585,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2295:12:49","memberName":"facetAddress","nodeType":"MemberAccess","referencedDeclaration":11810,"src":"2271:36:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"baseExpression":{"id":15586,"name":"_diamondCut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15549,"src":"2329:11:49","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr","typeString":"struct ICut.FacetCut memory[] memory"}},"id":15588,"indexExpression":{"id":15587,"name":"facetIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15557,"src":"2341:10:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2329:23:49","typeDescriptions":{"typeIdentifier":"t_struct$_FacetCut_$11817_memory_ptr","typeString":"struct ICut.FacetCut memory"}},"id":15589,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2353:17:49","memberName":"functionSelectors","nodeType":"MemberAccess","referencedDeclaration":11816,"src":"2329:41:49","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}],"id":15581,"name":"_addFunctions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15750,"src":"2236:13:49","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_array$_t_bytes4_$dyn_memory_ptr_$returns$__$","typeString":"function (address,bytes4[] memory)"}},"id":15590,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2236:152:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15591,"nodeType":"ExpressionStatement","src":"2236:152:49"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15559,"name":"facetIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15557,"src":"2024:10:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":15560,"name":"_diamondCut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15549,"src":"2037:11:49","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr","typeString":"struct ICut.FacetCut memory[] memory"}},"id":15561,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2049:6:49","memberName":"length","nodeType":"MemberAccess","src":"2037:18:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2024:31:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15636,"initializationExpression":{"assignments":[15557],"declarations":[{"constant":false,"id":15557,"mutability":"mutable","name":"facetIndex","nameLocation":"2000:10:49","nodeType":"VariableDeclaration","scope":15636,"src":"1992:18:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15556,"name":"uint256","nodeType":"ElementaryTypeName","src":"1992:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15558,"nodeType":"VariableDeclarationStatement","src":"1992:18:49"},"loopExpression":{"expression":{"id":15564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2069:12:49","subExpression":{"id":15563,"name":"facetIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15557,"src":"2069:10:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15565,"nodeType":"ExpressionStatement","src":"2069:12:49"},"nodeType":"ForStatement","src":"1974:1001:49"},{"eventCall":{"arguments":[{"id":15638,"name":"_diamondCut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15549,"src":"3000:11:49","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr","typeString":"struct ICut.FacetCut memory[] memory"}},{"id":15639,"name":"_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15551,"src":"3013:5:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15640,"name":"_calldata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15553,"src":"3020:9:49","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr","typeString":"struct ICut.FacetCut memory[] memory"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":15637,"name":"DiamondCut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15545,"src":"2989:10:49","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (struct ICut.FacetCut memory[] memory,address,bytes memory)"}},"id":15641,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2989:41:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15642,"nodeType":"EmitStatement","src":"2984:46:49"},{"expression":{"arguments":[{"id":15644,"name":"_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15551,"src":"3062:5:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15645,"name":"_calldata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15553,"src":"3069:9:49","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":15643,"name":"_initializeDiamondCut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16208,"src":"3040:21:49","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":15646,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3040:39:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15647,"nodeType":"ExpressionStatement","src":"3040:39:49"}]},"id":15649,"implemented":true,"kind":"function","modifiers":[],"name":"_cut","nameLocation":"1845:4:49","nodeType":"FunctionDefinition","parameters":{"id":15554,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15549,"mutability":"mutable","name":"_diamondCut","nameLocation":"1882:11:49","nodeType":"VariableDeclaration","scope":15649,"src":"1859:34:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr","typeString":"struct ICut.FacetCut[]"},"typeName":{"baseType":{"id":15547,"nodeType":"UserDefinedTypeName","pathNode":{"id":15546,"name":"ICut.FacetCut","nameLocations":["1859:4:49","1864:8:49"],"nodeType":"IdentifierPath","referencedDeclaration":11817,"src":"1859:13:49"},"referencedDeclaration":11817,"src":"1859:13:49","typeDescriptions":{"typeIdentifier":"t_struct$_FacetCut_$11817_storage_ptr","typeString":"struct ICut.FacetCut"}},"id":15548,"nodeType":"ArrayTypeName","src":"1859:15:49","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_FacetCut_$11817_storage_$dyn_storage_ptr","typeString":"struct ICut.FacetCut[]"}},"visibility":"internal"},{"constant":false,"id":15551,"mutability":"mutable","name":"_init","nameLocation":"1911:5:49","nodeType":"VariableDeclaration","scope":15649,"src":"1903:13:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15550,"name":"address","nodeType":"ElementaryTypeName","src":"1903:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15553,"mutability":"mutable","name":"_calldata","nameLocation":"1939:9:49","nodeType":"VariableDeclaration","scope":15649,"src":"1926:22:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":15552,"name":"bytes","nodeType":"ElementaryTypeName","src":"1926:5:49","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1849:105:49"},"returnParameters":{"id":15555,"nodeType":"ParameterList","parameters":[],"src":"1964:0:49"},"scope":16228,"src":"1836:1250:49","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":15749,"nodeType":"Block","src":"3205:1193:49","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15661,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":15658,"name":"_functionSelectors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15654,"src":"3236:18:49","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}},"id":15659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3255:6:49","memberName":"length","nodeType":"MemberAccess","src":"3236:25:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":15660,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3264:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3236:29:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e20666163657420746f20637574","id":15662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3279:45:49","typeDescriptions":{"typeIdentifier":"t_stringliteral_1ffc682bcfedefd5e93ba9ed0c2d1bc0b18319886e3b4bd28a03a3d3729f85c0","typeString":"literal_string \"LibDiamondCut: No selectors in facet to cut\""},"value":"LibDiamondCut: No selectors in facet to cut"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1ffc682bcfedefd5e93ba9ed0c2d1bc0b18319886e3b4bd28a03a3d3729f85c0","typeString":"literal_string \"LibDiamondCut: No selectors in facet to cut\""}],"id":15657,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3215:7:49","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15663,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3215:119:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15664,"nodeType":"ExpressionStatement","src":"3215:119:49"},{"assignments":[15667],"declarations":[{"constant":false,"id":15667,"mutability":"mutable","name":"s","nameLocation":"3367:1:49","nodeType":"VariableDeclaration","scope":15749,"src":"3344:24:49","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond"},"typeName":{"id":15666,"nodeType":"UserDefinedTypeName","pathNode":{"id":15665,"name":"StorageDiamond","nameLocations":["3344:14:49"],"nodeType":"IdentifierPath","referencedDeclaration":15523,"src":"3344:14:49"},"referencedDeclaration":15523,"src":"3344:14:49","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond"}},"visibility":"internal"}],"id":15670,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":15668,"name":"_storageDiamond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15535,"src":"3371:15:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageDiamond_$15523_storage_ptr_$","typeString":"function () pure returns (struct LibDiamond.StorageDiamond storage pointer)"}},"id":15669,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3371:17:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3344:44:49"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":15677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15672,"name":"_facetAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15651,"src":"3419:13:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":15675,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3444:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":15674,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3436:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15673,"name":"address","nodeType":"ElementaryTypeName","src":"3436:7:49","typeDescriptions":{}}},"id":15676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3436:10:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3419:27:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4c69624469616d6f6e644375743a204164642066616365742063616e27742062652061646472657373283029","id":15678,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3460:46:49","typeDescriptions":{"typeIdentifier":"t_stringliteral_64609d8b93c93a06b98d7db7a87b04044cd4a52c5661d603bb9b90ad8b914a3a","typeString":"literal_string \"LibDiamondCut: Add facet can't be address(0)\""},"value":"LibDiamondCut: Add facet can't be address(0)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_64609d8b93c93a06b98d7db7a87b04044cd4a52c5661d603bb9b90ad8b914a3a","typeString":"literal_string \"LibDiamondCut: Add facet can't be address(0)\""}],"id":15671,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3398:7:49","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15679,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3398:118:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15680,"nodeType":"ExpressionStatement","src":"3398:118:49"},{"assignments":[15682],"declarations":[{"constant":false,"id":15682,"mutability":"mutable","name":"selectorPosition","nameLocation":"3533:16:49","nodeType":"VariableDeclaration","scope":15749,"src":"3526:23:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":15681,"name":"uint96","nodeType":"ElementaryTypeName","src":"3526:6:49","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"id":15692,"initialValue":{"arguments":[{"expression":{"expression":{"baseExpression":{"expression":{"id":15685,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15667,"src":"3572:1:49","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":15686,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3574:22:49","memberName":"facetFunctionSelectors","nodeType":"MemberAccess","referencedDeclaration":15515,"src":"3572:24:49","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_FacetFunctionSelectors_$15505_storage_$","typeString":"mapping(address => struct LibDiamond.FacetFunctionSelectors storage ref)"}},"id":15688,"indexExpression":{"id":15687,"name":"_facetAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15651,"src":"3597:13:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3572:39:49","typeDescriptions":{"typeIdentifier":"t_struct$_FacetFunctionSelectors_$15505_storage","typeString":"struct LibDiamond.FacetFunctionSelectors storage ref"}},"id":15689,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3612:17:49","memberName":"functionSelectors","nodeType":"MemberAccess","referencedDeclaration":15502,"src":"3572:57:49","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage","typeString":"bytes4[] storage ref"}},"id":15690,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3630:6:49","memberName":"length","nodeType":"MemberAccess","src":"3572:64:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15684,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3552:6:49","typeDescriptions":{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"},"typeName":{"id":15683,"name":"uint96","nodeType":"ElementaryTypeName","src":"3552:6:49","typeDescriptions":{}}},"id":15691,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3552:94:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"VariableDeclarationStatement","src":"3526:120:49"},{"condition":{"commonType":{"typeIdentifier":"t_uint96","typeString":"uint96"},"id":15695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15693,"name":"selectorPosition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15682,"src":"3714:16:49","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":15694,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3734:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3714:21:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15702,"nodeType":"IfStatement","src":"3710:79:49","trueBody":{"id":15701,"nodeType":"Block","src":"3737:52:49","statements":[{"expression":{"arguments":[{"id":15697,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15667,"src":"3761:1:49","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},{"id":15698,"name":"_facetAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15651,"src":"3764:13:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"},{"typeIdentifier":"t_address","typeString":"address"}],"id":15696,"name":"_addFacet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15952,"src":"3751:9:49","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_StorageDiamond_$15523_storage_ptr_$_t_address_$returns$__$","typeString":"function (struct LibDiamond.StorageDiamond storage pointer,address)"}},"id":15699,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3751:27:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15700,"nodeType":"ExpressionStatement","src":"3751:27:49"}]}},{"body":{"id":15747,"nodeType":"Block","src":"3932:460:49","statements":[{"assignments":[15714],"declarations":[{"constant":false,"id":15714,"mutability":"mutable","name":"selector","nameLocation":"3953:8:49","nodeType":"VariableDeclaration","scope":15747,"src":"3946:15:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":15713,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3946:6:49","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"id":15718,"initialValue":{"baseExpression":{"id":15715,"name":"_functionSelectors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15654,"src":"3964:18:49","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}},"id":15717,"indexExpression":{"id":15716,"name":"selectorIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15704,"src":"3983:13:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3964:33:49","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"VariableDeclarationStatement","src":"3946:51:49"},{"assignments":[15720],"declarations":[{"constant":false,"id":15720,"mutability":"mutable","name":"oldFacetAddress","nameLocation":"4019:15:49","nodeType":"VariableDeclaration","scope":15747,"src":"4011:23:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15719,"name":"address","nodeType":"ElementaryTypeName","src":"4011:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":15726,"initialValue":{"expression":{"baseExpression":{"expression":{"id":15721,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15667,"src":"4037:1:49","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":15722,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4056:26:49","memberName":"selectorToFacetAndPosition","nodeType":"MemberAccess","referencedDeclaration":15510,"src":"4037:45:49","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_struct$_FacetAddressAndPosition_$15499_storage_$","typeString":"mapping(bytes4 => struct LibDiamond.FacetAddressAndPosition storage ref)"}},"id":15724,"indexExpression":{"id":15723,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15714,"src":"4083:8:49","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4037:55:49","typeDescriptions":{"typeIdentifier":"t_struct$_FacetAddressAndPosition_$15499_storage","typeString":"struct LibDiamond.FacetAddressAndPosition storage ref"}},"id":15725,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4110:12:49","memberName":"facetAddress","nodeType":"MemberAccess","referencedDeclaration":15496,"src":"4037:85:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4011:111:49"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":15733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15728,"name":"oldFacetAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15720,"src":"4161:15:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":15731,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4188:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":15730,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4180:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15729,"name":"address","nodeType":"ElementaryTypeName","src":"4180:7:49","typeDescriptions":{}}},"id":15732,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4180:10:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4161:29:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f6e207468617420616c726561647920657869737473","id":15734,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4208:55:49","typeDescriptions":{"typeIdentifier":"t_stringliteral_99a7418ee014d613f46da44561258cdbb58064508097483a319062b99fa37700","typeString":"literal_string \"LibDiamondCut: Can't add function that already exists\""},"value":"LibDiamondCut: Can't add function that already exists"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_99a7418ee014d613f46da44561258cdbb58064508097483a319062b99fa37700","typeString":"literal_string \"LibDiamondCut: Can't add function that already exists\""}],"id":15727,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4136:7:49","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15735,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4136:141:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15736,"nodeType":"ExpressionStatement","src":"4136:141:49"},{"expression":{"arguments":[{"id":15738,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15667,"src":"4304:1:49","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},{"id":15739,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15714,"src":"4307:8:49","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":15740,"name":"selectorPosition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15682,"src":"4317:16:49","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"id":15741,"name":"_facetAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15651,"src":"4335:13:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_address","typeString":"address"}],"id":15737,"name":"_addFunction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15993,"src":"4291:12:49","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_StorageDiamond_$15523_storage_ptr_$_t_bytes4_$_t_uint96_$_t_address_$returns$__$","typeString":"function (struct LibDiamond.StorageDiamond storage pointer,bytes4,uint96,address)"}},"id":15742,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4291:58:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15743,"nodeType":"ExpressionStatement","src":"4291:58:49"},{"expression":{"id":15745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"4363:18:49","subExpression":{"id":15744,"name":"selectorPosition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15682,"src":"4363:16:49","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"id":15746,"nodeType":"ExpressionStatement","src":"4363:18:49"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15709,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15706,"name":"selectorIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15704,"src":"3851:13:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":15707,"name":"_functionSelectors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15654,"src":"3867:18:49","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}},"id":15708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3886:6:49","memberName":"length","nodeType":"MemberAccess","src":"3867:25:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3851:41:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15748,"initializationExpression":{"assignments":[15704],"declarations":[{"constant":false,"id":15704,"mutability":"mutable","name":"selectorIndex","nameLocation":"3824:13:49","nodeType":"VariableDeclaration","scope":15748,"src":"3816:21:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15703,"name":"uint256","nodeType":"ElementaryTypeName","src":"3816:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15705,"nodeType":"VariableDeclarationStatement","src":"3816:21:49"},"loopExpression":{"expression":{"id":15711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"3906:15:49","subExpression":{"id":15710,"name":"selectorIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15704,"src":"3906:13:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15712,"nodeType":"ExpressionStatement","src":"3906:15:49"},"nodeType":"ForStatement","src":"3798:594:49"}]},"id":15750,"implemented":true,"kind":"function","modifiers":[],"name":"_addFunctions","nameLocation":"3101:13:49","nodeType":"FunctionDefinition","parameters":{"id":15655,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15651,"mutability":"mutable","name":"_facetAddress","nameLocation":"3132:13:49","nodeType":"VariableDeclaration","scope":15750,"src":"3124:21:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15650,"name":"address","nodeType":"ElementaryTypeName","src":"3124:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15654,"mutability":"mutable","name":"_functionSelectors","nameLocation":"3171:18:49","nodeType":"VariableDeclaration","scope":15750,"src":"3155:34:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[]"},"typeName":{"baseType":{"id":15652,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3155:6:49","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":15653,"nodeType":"ArrayTypeName","src":"3155:8:49","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage_ptr","typeString":"bytes4[]"}},"visibility":"internal"}],"src":"3114:81:49"},"returnParameters":{"id":15656,"nodeType":"ParameterList","parameters":[],"src":"3205:0:49"},"scope":16228,"src":"3092:1306:49","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":15853,"nodeType":"Block","src":"4521:1258:49","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15762,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":15759,"name":"_functionSelectors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15755,"src":"4552:18:49","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}},"id":15760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4571:6:49","memberName":"length","nodeType":"MemberAccess","src":"4552:25:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":15761,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4580:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4552:29:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e20666163657420746f20637574","id":15763,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4595:45:49","typeDescriptions":{"typeIdentifier":"t_stringliteral_1ffc682bcfedefd5e93ba9ed0c2d1bc0b18319886e3b4bd28a03a3d3729f85c0","typeString":"literal_string \"LibDiamondCut: No selectors in facet to cut\""},"value":"LibDiamondCut: No selectors in facet to cut"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1ffc682bcfedefd5e93ba9ed0c2d1bc0b18319886e3b4bd28a03a3d3729f85c0","typeString":"literal_string \"LibDiamondCut: No selectors in facet to cut\""}],"id":15758,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4531:7:49","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15764,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4531:119:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15765,"nodeType":"ExpressionStatement","src":"4531:119:49"},{"assignments":[15768],"declarations":[{"constant":false,"id":15768,"mutability":"mutable","name":"s","nameLocation":"4683:1:49","nodeType":"VariableDeclaration","scope":15853,"src":"4660:24:49","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond"},"typeName":{"id":15767,"nodeType":"UserDefinedTypeName","pathNode":{"id":15766,"name":"StorageDiamond","nameLocations":["4660:14:49"],"nodeType":"IdentifierPath","referencedDeclaration":15523,"src":"4660:14:49"},"referencedDeclaration":15523,"src":"4660:14:49","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond"}},"visibility":"internal"}],"id":15771,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":15769,"name":"_storageDiamond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15535,"src":"4687:15:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageDiamond_$15523_storage_ptr_$","typeString":"function () pure returns (struct LibDiamond.StorageDiamond storage pointer)"}},"id":15770,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4687:17:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4660:44:49"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":15778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15773,"name":"_facetAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15752,"src":"4735:13:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":15776,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4760:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":15775,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4752:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15774,"name":"address","nodeType":"ElementaryTypeName","src":"4752:7:49","typeDescriptions":{}}},"id":15777,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4752:10:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4735:27:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4c69624469616d6f6e644375743a204164642066616365742063616e27742062652061646472657373283029","id":15779,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4776:46:49","typeDescriptions":{"typeIdentifier":"t_stringliteral_64609d8b93c93a06b98d7db7a87b04044cd4a52c5661d603bb9b90ad8b914a3a","typeString":"literal_string \"LibDiamondCut: Add facet can't be address(0)\""},"value":"LibDiamondCut: Add facet can't be address(0)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_64609d8b93c93a06b98d7db7a87b04044cd4a52c5661d603bb9b90ad8b914a3a","typeString":"literal_string \"LibDiamondCut: Add facet can't be address(0)\""}],"id":15772,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4714:7:49","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15780,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4714:118:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15781,"nodeType":"ExpressionStatement","src":"4714:118:49"},{"assignments":[15783],"declarations":[{"constant":false,"id":15783,"mutability":"mutable","name":"selectorPosition","nameLocation":"4849:16:49","nodeType":"VariableDeclaration","scope":15853,"src":"4842:23:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":15782,"name":"uint96","nodeType":"ElementaryTypeName","src":"4842:6:49","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"id":15793,"initialValue":{"arguments":[{"expression":{"expression":{"baseExpression":{"expression":{"id":15786,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15768,"src":"4888:1:49","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":15787,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4890:22:49","memberName":"facetFunctionSelectors","nodeType":"MemberAccess","referencedDeclaration":15515,"src":"4888:24:49","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_FacetFunctionSelectors_$15505_storage_$","typeString":"mapping(address => struct LibDiamond.FacetFunctionSelectors storage ref)"}},"id":15789,"indexExpression":{"id":15788,"name":"_facetAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15752,"src":"4913:13:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4888:39:49","typeDescriptions":{"typeIdentifier":"t_struct$_FacetFunctionSelectors_$15505_storage","typeString":"struct LibDiamond.FacetFunctionSelectors storage ref"}},"id":15790,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4928:17:49","memberName":"functionSelectors","nodeType":"MemberAccess","referencedDeclaration":15502,"src":"4888:57:49","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage","typeString":"bytes4[] storage ref"}},"id":15791,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4946:6:49","memberName":"length","nodeType":"MemberAccess","src":"4888:64:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15785,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4868:6:49","typeDescriptions":{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"},"typeName":{"id":15784,"name":"uint96","nodeType":"ElementaryTypeName","src":"4868:6:49","typeDescriptions":{}}},"id":15792,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4868:94:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"VariableDeclarationStatement","src":"4842:120:49"},{"condition":{"commonType":{"typeIdentifier":"t_uint96","typeString":"uint96"},"id":15796,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15794,"name":"selectorPosition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15783,"src":"5030:16:49","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":15795,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5050:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5030:21:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15803,"nodeType":"IfStatement","src":"5026:79:49","trueBody":{"id":15802,"nodeType":"Block","src":"5053:52:49","statements":[{"expression":{"arguments":[{"id":15798,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15768,"src":"5077:1:49","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},{"id":15799,"name":"_facetAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15752,"src":"5080:13:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"},{"typeIdentifier":"t_address","typeString":"address"}],"id":15797,"name":"_addFacet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15952,"src":"5067:9:49","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_StorageDiamond_$15523_storage_ptr_$_t_address_$returns$__$","typeString":"function (struct LibDiamond.StorageDiamond storage pointer,address)"}},"id":15800,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5067:27:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15801,"nodeType":"ExpressionStatement","src":"5067:27:49"}]}},{"body":{"id":15851,"nodeType":"Block","src":"5248:525:49","statements":[{"assignments":[15815],"declarations":[{"constant":false,"id":15815,"mutability":"mutable","name":"selector","nameLocation":"5269:8:49","nodeType":"VariableDeclaration","scope":15851,"src":"5262:15:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":15814,"name":"bytes4","nodeType":"ElementaryTypeName","src":"5262:6:49","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"id":15819,"initialValue":{"baseExpression":{"id":15816,"name":"_functionSelectors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15755,"src":"5280:18:49","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}},"id":15818,"indexExpression":{"id":15817,"name":"selectorIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15805,"src":"5299:13:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5280:33:49","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"VariableDeclarationStatement","src":"5262:51:49"},{"assignments":[15821],"declarations":[{"constant":false,"id":15821,"mutability":"mutable","name":"oldFacetAddress","nameLocation":"5335:15:49","nodeType":"VariableDeclaration","scope":15851,"src":"5327:23:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15820,"name":"address","nodeType":"ElementaryTypeName","src":"5327:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":15827,"initialValue":{"expression":{"baseExpression":{"expression":{"id":15822,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15768,"src":"5353:1:49","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":15823,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5372:26:49","memberName":"selectorToFacetAndPosition","nodeType":"MemberAccess","referencedDeclaration":15510,"src":"5353:45:49","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_struct$_FacetAddressAndPosition_$15499_storage_$","typeString":"mapping(bytes4 => struct LibDiamond.FacetAddressAndPosition storage ref)"}},"id":15825,"indexExpression":{"id":15824,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15815,"src":"5399:8:49","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5353:55:49","typeDescriptions":{"typeIdentifier":"t_struct$_FacetAddressAndPosition_$15499_storage","typeString":"struct LibDiamond.FacetAddressAndPosition storage ref"}},"id":15826,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5426:12:49","memberName":"facetAddress","nodeType":"MemberAccess","referencedDeclaration":15496,"src":"5353:85:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5327:111:49"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":15831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15829,"name":"oldFacetAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15821,"src":"5477:15:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":15830,"name":"_facetAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15752,"src":"5496:13:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5477:32:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e6374696f6e20776974682073616d652066756e6374696f6e","id":15832,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5527:58:49","typeDescriptions":{"typeIdentifier":"t_stringliteral_b5a7112edf707196456f338fdcc19cd849be6cb8c0d166bcd035f4cfb00e7078","typeString":"literal_string \"LibDiamondCut: Can't replace function with same function\""},"value":"LibDiamondCut: Can't replace function with same function"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b5a7112edf707196456f338fdcc19cd849be6cb8c0d166bcd035f4cfb00e7078","typeString":"literal_string \"LibDiamondCut: Can't replace function with same function\""}],"id":15828,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5452:7:49","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15833,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5452:147:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15834,"nodeType":"ExpressionStatement","src":"5452:147:49"},{"expression":{"arguments":[{"id":15836,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15768,"src":"5629:1:49","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},{"id":15837,"name":"oldFacetAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15821,"src":"5632:15:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15838,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15815,"src":"5649:8:49","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":15835,"name":"_removeFunction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16160,"src":"5613:15:49","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_StorageDiamond_$15523_storage_ptr_$_t_address_$_t_bytes4_$returns$__$","typeString":"function (struct LibDiamond.StorageDiamond storage pointer,address,bytes4)"}},"id":15839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5613:45:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15840,"nodeType":"ExpressionStatement","src":"5613:45:49"},{"expression":{"arguments":[{"id":15842,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15768,"src":"5685:1:49","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},{"id":15843,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15815,"src":"5688:8:49","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":15844,"name":"selectorPosition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15783,"src":"5698:16:49","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"id":15845,"name":"_facetAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15752,"src":"5716:13:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_uint96","typeString":"uint96"},{"typeIdentifier":"t_address","typeString":"address"}],"id":15841,"name":"_addFunction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15993,"src":"5672:12:49","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_StorageDiamond_$15523_storage_ptr_$_t_bytes4_$_t_uint96_$_t_address_$returns$__$","typeString":"function (struct LibDiamond.StorageDiamond storage pointer,bytes4,uint96,address)"}},"id":15846,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5672:58:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15847,"nodeType":"ExpressionStatement","src":"5672:58:49"},{"expression":{"id":15849,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"5744:18:49","subExpression":{"id":15848,"name":"selectorPosition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15783,"src":"5744:16:49","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"id":15850,"nodeType":"ExpressionStatement","src":"5744:18:49"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15810,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15807,"name":"selectorIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15805,"src":"5167:13:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":15808,"name":"_functionSelectors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15755,"src":"5183:18:49","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}},"id":15809,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5202:6:49","memberName":"length","nodeType":"MemberAccess","src":"5183:25:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5167:41:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15852,"initializationExpression":{"assignments":[15805],"declarations":[{"constant":false,"id":15805,"mutability":"mutable","name":"selectorIndex","nameLocation":"5140:13:49","nodeType":"VariableDeclaration","scope":15852,"src":"5132:21:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15804,"name":"uint256","nodeType":"ElementaryTypeName","src":"5132:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15806,"nodeType":"VariableDeclarationStatement","src":"5132:21:49"},"loopExpression":{"expression":{"id":15812,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"5222:15:49","subExpression":{"id":15811,"name":"selectorIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15805,"src":"5222:13:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15813,"nodeType":"ExpressionStatement","src":"5222:15:49"},"nodeType":"ForStatement","src":"5114:659:49"}]},"id":15854,"implemented":true,"kind":"function","modifiers":[],"name":"_replaceFunctions","nameLocation":"4413:17:49","nodeType":"FunctionDefinition","parameters":{"id":15756,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15752,"mutability":"mutable","name":"_facetAddress","nameLocation":"4448:13:49","nodeType":"VariableDeclaration","scope":15854,"src":"4440:21:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15751,"name":"address","nodeType":"ElementaryTypeName","src":"4440:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15755,"mutability":"mutable","name":"_functionSelectors","nameLocation":"4487:18:49","nodeType":"VariableDeclaration","scope":15854,"src":"4471:34:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[]"},"typeName":{"baseType":{"id":15753,"name":"bytes4","nodeType":"ElementaryTypeName","src":"4471:6:49","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":15754,"nodeType":"ArrayTypeName","src":"4471:8:49","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage_ptr","typeString":"bytes4[]"}},"visibility":"internal"}],"src":"4430:81:49"},"returnParameters":{"id":15757,"nodeType":"ParameterList","parameters":[],"src":"4521:0:49"},"scope":16228,"src":"4404:1375:49","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":15918,"nodeType":"Block","src":"5901:796:49","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":15863,"name":"_functionSelectors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15859,"src":"5932:18:49","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}},"id":15864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5951:6:49","memberName":"length","nodeType":"MemberAccess","src":"5932:25:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":15865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5960:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5932:29:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e20666163657420746f20637574","id":15867,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5975:45:49","typeDescriptions":{"typeIdentifier":"t_stringliteral_1ffc682bcfedefd5e93ba9ed0c2d1bc0b18319886e3b4bd28a03a3d3729f85c0","typeString":"literal_string \"LibDiamondCut: No selectors in facet to cut\""},"value":"LibDiamondCut: No selectors in facet to cut"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1ffc682bcfedefd5e93ba9ed0c2d1bc0b18319886e3b4bd28a03a3d3729f85c0","typeString":"literal_string \"LibDiamondCut: No selectors in facet to cut\""}],"id":15862,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5911:7:49","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15868,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5911:119:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15869,"nodeType":"ExpressionStatement","src":"5911:119:49"},{"assignments":[15872],"declarations":[{"constant":false,"id":15872,"mutability":"mutable","name":"s","nameLocation":"6063:1:49","nodeType":"VariableDeclaration","scope":15918,"src":"6040:24:49","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond"},"typeName":{"id":15871,"nodeType":"UserDefinedTypeName","pathNode":{"id":15870,"name":"StorageDiamond","nameLocations":["6040:14:49"],"nodeType":"IdentifierPath","referencedDeclaration":15523,"src":"6040:14:49"},"referencedDeclaration":15523,"src":"6040:14:49","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond"}},"visibility":"internal"}],"id":15875,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":15873,"name":"_storageDiamond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15535,"src":"6067:15:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageDiamond_$15523_storage_ptr_$","typeString":"function () pure returns (struct LibDiamond.StorageDiamond storage pointer)"}},"id":15874,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6067:17:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"6040:44:49"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":15882,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15877,"name":"_facetAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15856,"src":"6180:13:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":15880,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6205:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":15879,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6197:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15878,"name":"address","nodeType":"ElementaryTypeName","src":"6197:7:49","typeDescriptions":{}}},"id":15881,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6197:10:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6180:27:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4c69624469616d6f6e644375743a2052656d6f76652066616365742061646472657373206d7573742062652061646472657373283029","id":15883,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6221:56:49","typeDescriptions":{"typeIdentifier":"t_stringliteral_b739aae768f79b96e91d9f66398733516895e39eb09ee54a795b49dcc77504d4","typeString":"literal_string \"LibDiamondCut: Remove facet address must be address(0)\""},"value":"LibDiamondCut: Remove facet address must be address(0)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b739aae768f79b96e91d9f66398733516895e39eb09ee54a795b49dcc77504d4","typeString":"literal_string \"LibDiamondCut: Remove facet address must be address(0)\""}],"id":15876,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6159:7:49","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15884,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6159:128:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15885,"nodeType":"ExpressionStatement","src":"6159:128:49"},{"body":{"id":15916,"nodeType":"Block","src":"6431:260:49","statements":[{"assignments":[15897],"declarations":[{"constant":false,"id":15897,"mutability":"mutable","name":"selector","nameLocation":"6452:8:49","nodeType":"VariableDeclaration","scope":15916,"src":"6445:15:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":15896,"name":"bytes4","nodeType":"ElementaryTypeName","src":"6445:6:49","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"id":15901,"initialValue":{"baseExpression":{"id":15898,"name":"_functionSelectors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15859,"src":"6463:18:49","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}},"id":15900,"indexExpression":{"id":15899,"name":"selectorIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15887,"src":"6482:13:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6463:33:49","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"VariableDeclarationStatement","src":"6445:51:49"},{"assignments":[15903],"declarations":[{"constant":false,"id":15903,"mutability":"mutable","name":"oldFacetAddress","nameLocation":"6518:15:49","nodeType":"VariableDeclaration","scope":15916,"src":"6510:23:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15902,"name":"address","nodeType":"ElementaryTypeName","src":"6510:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":15909,"initialValue":{"expression":{"baseExpression":{"expression":{"id":15904,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15872,"src":"6536:1:49","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":15905,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6555:26:49","memberName":"selectorToFacetAndPosition","nodeType":"MemberAccess","referencedDeclaration":15510,"src":"6536:45:49","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_struct$_FacetAddressAndPosition_$15499_storage_$","typeString":"mapping(bytes4 => struct LibDiamond.FacetAddressAndPosition storage ref)"}},"id":15907,"indexExpression":{"id":15906,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15897,"src":"6582:8:49","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6536:55:49","typeDescriptions":{"typeIdentifier":"t_struct$_FacetAddressAndPosition_$15499_storage","typeString":"struct LibDiamond.FacetAddressAndPosition storage ref"}},"id":15908,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6609:12:49","memberName":"facetAddress","nodeType":"MemberAccess","referencedDeclaration":15496,"src":"6536:85:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6510:111:49"},{"expression":{"arguments":[{"id":15911,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15872,"src":"6651:1:49","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},{"id":15912,"name":"oldFacetAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15903,"src":"6654:15:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15913,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15897,"src":"6671:8:49","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":15910,"name":"_removeFunction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16160,"src":"6635:15:49","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_StorageDiamond_$15523_storage_ptr_$_t_address_$_t_bytes4_$returns$__$","typeString":"function (struct LibDiamond.StorageDiamond storage pointer,address,bytes4)"}},"id":15914,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6635:45:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15915,"nodeType":"ExpressionStatement","src":"6635:45:49"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15892,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15889,"name":"selectorIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15887,"src":"6350:13:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":15890,"name":"_functionSelectors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15859,"src":"6366:18:49","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}},"id":15891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6385:6:49","memberName":"length","nodeType":"MemberAccess","src":"6366:25:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6350:41:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15917,"initializationExpression":{"assignments":[15887],"declarations":[{"constant":false,"id":15887,"mutability":"mutable","name":"selectorIndex","nameLocation":"6323:13:49","nodeType":"VariableDeclaration","scope":15917,"src":"6315:21:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15886,"name":"uint256","nodeType":"ElementaryTypeName","src":"6315:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15888,"nodeType":"VariableDeclarationStatement","src":"6315:21:49"},"loopExpression":{"expression":{"id":15894,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"6405:15:49","subExpression":{"id":15893,"name":"selectorIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15887,"src":"6405:13:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15895,"nodeType":"ExpressionStatement","src":"6405:15:49"},"nodeType":"ForStatement","src":"6297:394:49"}]},"id":15919,"implemented":true,"kind":"function","modifiers":[],"name":"_removeFunctions","nameLocation":"5794:16:49","nodeType":"FunctionDefinition","parameters":{"id":15860,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15856,"mutability":"mutable","name":"_facetAddress","nameLocation":"5828:13:49","nodeType":"VariableDeclaration","scope":15919,"src":"5820:21:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15855,"name":"address","nodeType":"ElementaryTypeName","src":"5820:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15859,"mutability":"mutable","name":"_functionSelectors","nameLocation":"5867:18:49","nodeType":"VariableDeclaration","scope":15919,"src":"5851:34:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[]"},"typeName":{"baseType":{"id":15857,"name":"bytes4","nodeType":"ElementaryTypeName","src":"5851:6:49","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":15858,"nodeType":"ArrayTypeName","src":"5851:8:49","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage_ptr","typeString":"bytes4[]"}},"visibility":"internal"}],"src":"5810:81:49"},"returnParameters":{"id":15861,"nodeType":"ParameterList","parameters":[],"src":"5901:0:49"},"scope":16228,"src":"5785:912:49","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":15951,"nodeType":"Block","src":"6802:297:49","statements":[{"expression":{"arguments":[{"id":15928,"name":"_facetAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15924,"src":"6849:13:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"4c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465","id":15929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6876:38:49","typeDescriptions":{"typeIdentifier":"t_stringliteral_846ccbeb9c32d4d40d2c1bf991251db6ab65744a2f52b273947cee088a65504b","typeString":"literal_string \"LibDiamondCut: New facet has no code\""},"value":"LibDiamondCut: New facet has no code"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_stringliteral_846ccbeb9c32d4d40d2c1bf991251db6ab65744a2f52b273947cee088a65504b","typeString":"literal_string \"LibDiamondCut: New facet has no code\""}],"id":15927,"name":"_requireHasContractCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16227,"src":"6812:23:49","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_string_memory_ptr_$returns$__$","typeString":"function (address,string memory) view"}},"id":15930,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6812:112:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15931,"nodeType":"ExpressionStatement","src":"6812:112:49"},{"expression":{"id":15941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":15932,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15922,"src":"6934:1:49","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":15935,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6936:22:49","memberName":"facetFunctionSelectors","nodeType":"MemberAccess","referencedDeclaration":15515,"src":"6934:24:49","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_FacetFunctionSelectors_$15505_storage_$","typeString":"mapping(address => struct LibDiamond.FacetFunctionSelectors storage ref)"}},"id":15936,"indexExpression":{"id":15934,"name":"_facetAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15924,"src":"6959:13:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6934:39:49","typeDescriptions":{"typeIdentifier":"t_struct$_FacetFunctionSelectors_$15505_storage","typeString":"struct LibDiamond.FacetFunctionSelectors storage ref"}},"id":15937,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6974:20:49","memberName":"facetAddressPosition","nodeType":"MemberAccess","referencedDeclaration":15504,"src":"6934:60:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":15938,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15922,"src":"6997:1:49","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":15939,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7012:14:49","memberName":"facetAddresses","nodeType":"MemberAccess","referencedDeclaration":15518,"src":"6997:29:49","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":15940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7040:6:49","memberName":"length","nodeType":"MemberAccess","src":"6997:49:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6934:112:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15942,"nodeType":"ExpressionStatement","src":"6934:112:49"},{"expression":{"arguments":[{"id":15948,"name":"_facetAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15924,"src":"7078:13:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"id":15943,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15922,"src":"7056:1:49","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":15946,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7058:14:49","memberName":"facetAddresses","nodeType":"MemberAccess","referencedDeclaration":15518,"src":"7056:16:49","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":15947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7073:4:49","memberName":"push","nodeType":"MemberAccess","src":"7056:21:49","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$_t_address_$returns$__$attached_to$_t_array$_t_address_$dyn_storage_ptr_$","typeString":"function (address[] storage pointer,address)"}},"id":15949,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7056:36:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15950,"nodeType":"ExpressionStatement","src":"7056:36:49"}]},"id":15952,"implemented":true,"kind":"function","modifiers":[],"name":"_addFacet","nameLocation":"6712:9:49","nodeType":"FunctionDefinition","parameters":{"id":15925,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15922,"mutability":"mutable","name":"s","nameLocation":"6754:1:49","nodeType":"VariableDeclaration","scope":15952,"src":"6731:24:49","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond"},"typeName":{"id":15921,"nodeType":"UserDefinedTypeName","pathNode":{"id":15920,"name":"StorageDiamond","nameLocations":["6731:14:49"],"nodeType":"IdentifierPath","referencedDeclaration":15523,"src":"6731:14:49"},"referencedDeclaration":15523,"src":"6731:14:49","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond"}},"visibility":"internal"},{"constant":false,"id":15924,"mutability":"mutable","name":"_facetAddress","nameLocation":"6773:13:49","nodeType":"VariableDeclaration","scope":15952,"src":"6765:21:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15923,"name":"address","nodeType":"ElementaryTypeName","src":"6765:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6721:71:49"},"returnParameters":{"id":15926,"nodeType":"ParameterList","parameters":[],"src":"6802:0:49"},"scope":16228,"src":"6703:396:49","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":15992,"nodeType":"Block","src":"7267:310:49","statements":[{"expression":{"id":15971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":15964,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15955,"src":"7277:1:49","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":15967,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7292:26:49","memberName":"selectorToFacetAndPosition","nodeType":"MemberAccess","referencedDeclaration":15510,"src":"7277:41:49","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_struct$_FacetAddressAndPosition_$15499_storage_$","typeString":"mapping(bytes4 => struct LibDiamond.FacetAddressAndPosition storage ref)"}},"id":15968,"indexExpression":{"id":15966,"name":"_selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15957,"src":"7319:9:49","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7277:52:49","typeDescriptions":{"typeIdentifier":"t_struct$_FacetAddressAndPosition_$15499_storage","typeString":"struct LibDiamond.FacetAddressAndPosition storage ref"}},"id":15969,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7343:24:49","memberName":"functionSelectorPosition","nodeType":"MemberAccess","referencedDeclaration":15498,"src":"7277:90:49","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":15970,"name":"_selectorPosition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15959,"src":"7370:17:49","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"7277:110:49","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"id":15972,"nodeType":"ExpressionStatement","src":"7277:110:49"},{"expression":{"arguments":[{"id":15980,"name":"_selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15957,"src":"7473:9:49","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"expression":{"baseExpression":{"expression":{"id":15973,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15955,"src":"7397:1:49","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":15976,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7399:22:49","memberName":"facetFunctionSelectors","nodeType":"MemberAccess","referencedDeclaration":15515,"src":"7397:24:49","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_FacetFunctionSelectors_$15505_storage_$","typeString":"mapping(address => struct LibDiamond.FacetFunctionSelectors storage ref)"}},"id":15977,"indexExpression":{"id":15975,"name":"_facetAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15961,"src":"7422:13:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7397:39:49","typeDescriptions":{"typeIdentifier":"t_struct$_FacetFunctionSelectors_$15505_storage","typeString":"struct LibDiamond.FacetFunctionSelectors storage ref"}},"id":15978,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7437:17:49","memberName":"functionSelectors","nodeType":"MemberAccess","referencedDeclaration":15502,"src":"7397:57:49","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage","typeString":"bytes4[] storage ref"}},"id":15979,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7455:4:49","memberName":"push","nodeType":"MemberAccess","src":"7397:62:49","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_bytes4_$dyn_storage_ptr_$_t_bytes4_$returns$__$attached_to$_t_array$_t_bytes4_$dyn_storage_ptr_$","typeString":"function (bytes4[] storage pointer,bytes4)"}},"id":15981,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7397:95:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15982,"nodeType":"ExpressionStatement","src":"7397:95:49"},{"expression":{"id":15990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":15983,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15955,"src":"7502:1:49","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":15986,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7504:26:49","memberName":"selectorToFacetAndPosition","nodeType":"MemberAccess","referencedDeclaration":15510,"src":"7502:28:49","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_struct$_FacetAddressAndPosition_$15499_storage_$","typeString":"mapping(bytes4 => struct LibDiamond.FacetAddressAndPosition storage ref)"}},"id":15987,"indexExpression":{"id":15985,"name":"_selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15957,"src":"7531:9:49","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7502:39:49","typeDescriptions":{"typeIdentifier":"t_struct$_FacetAddressAndPosition_$15499_storage","typeString":"struct LibDiamond.FacetAddressAndPosition storage ref"}},"id":15988,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7542:12:49","memberName":"facetAddress","nodeType":"MemberAccess","referencedDeclaration":15496,"src":"7502:52:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":15989,"name":"_facetAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15961,"src":"7557:13:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7502:68:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":15991,"nodeType":"ExpressionStatement","src":"7502:68:49"}]},"id":15993,"implemented":true,"kind":"function","modifiers":[],"name":"_addFunction","nameLocation":"7114:12:49","nodeType":"FunctionDefinition","parameters":{"id":15962,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15955,"mutability":"mutable","name":"s","nameLocation":"7159:1:49","nodeType":"VariableDeclaration","scope":15993,"src":"7136:24:49","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond"},"typeName":{"id":15954,"nodeType":"UserDefinedTypeName","pathNode":{"id":15953,"name":"StorageDiamond","nameLocations":["7136:14:49"],"nodeType":"IdentifierPath","referencedDeclaration":15523,"src":"7136:14:49"},"referencedDeclaration":15523,"src":"7136:14:49","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond"}},"visibility":"internal"},{"constant":false,"id":15957,"mutability":"mutable","name":"_selector","nameLocation":"7177:9:49","nodeType":"VariableDeclaration","scope":15993,"src":"7170:16:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":15956,"name":"bytes4","nodeType":"ElementaryTypeName","src":"7170:6:49","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"},{"constant":false,"id":15959,"mutability":"mutable","name":"_selectorPosition","nameLocation":"7203:17:49","nodeType":"VariableDeclaration","scope":15993,"src":"7196:24:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":15958,"name":"uint96","nodeType":"ElementaryTypeName","src":"7196:6:49","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":15961,"mutability":"mutable","name":"_facetAddress","nameLocation":"7238:13:49","nodeType":"VariableDeclaration","scope":15993,"src":"7230:21:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15960,"name":"address","nodeType":"ElementaryTypeName","src":"7230:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7126:131:49"},"returnParameters":{"id":15963,"nodeType":"ParameterList","parameters":[],"src":"7267:0:49"},"scope":16228,"src":"7105:472:49","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":16159,"nodeType":"Block","src":"7714:2420:49","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":16009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16004,"name":"_facetAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15998,"src":"7745:13:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":16007,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7770:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":16006,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7762:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16005,"name":"address","nodeType":"ElementaryTypeName","src":"7762:7:49","typeDescriptions":{}}},"id":16008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7762:10:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7745:27:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6374696f6e207468617420646f65736e2774206578697374","id":16010,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7786:57:49","typeDescriptions":{"typeIdentifier":"t_stringliteral_2c590e498c4d56c984a7092fd5e89a68b9f4541ce9f97252fb74e44a00ffbb71","typeString":"literal_string \"LibDiamondCut: Can't remove function that doesn't exist\""},"value":"LibDiamondCut: Can't remove function that doesn't exist"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2c590e498c4d56c984a7092fd5e89a68b9f4541ce9f97252fb74e44a00ffbb71","typeString":"literal_string \"LibDiamondCut: Can't remove function that doesn't exist\""}],"id":16003,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7724:7:49","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":16011,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7724:129:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16012,"nodeType":"ExpressionStatement","src":"7724:129:49"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":16019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16014,"name":"_facetAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15998,"src":"7961:13:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":16017,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"7986:4:49","typeDescriptions":{"typeIdentifier":"t_contract$_LibDiamond_$16228","typeString":"library LibDiamond"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LibDiamond_$16228","typeString":"library LibDiamond"}],"id":16016,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7978:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16015,"name":"address","nodeType":"ElementaryTypeName","src":"7978:7:49","typeDescriptions":{}}},"id":16018,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7978:13:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7961:30:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d757461626c652066756e6374696f6e","id":16020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8005:48:49","typeDescriptions":{"typeIdentifier":"t_stringliteral_8ba063dfaa4be2d2cbe73dbb1364728b0f7031ac048441d5fad19e9541992b21","typeString":"literal_string \"LibDiamondCut: Can't remove immutable function\""},"value":"LibDiamondCut: Can't remove immutable function"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8ba063dfaa4be2d2cbe73dbb1364728b0f7031ac048441d5fad19e9541992b21","typeString":"literal_string \"LibDiamondCut: Can't remove immutable function\""}],"id":16013,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7940:7:49","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":16021,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7940:123:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16022,"nodeType":"ExpressionStatement","src":"7940:123:49"},{"assignments":[16024],"declarations":[{"constant":false,"id":16024,"mutability":"mutable","name":"selectorPosition","nameLocation":"8155:16:49","nodeType":"VariableDeclaration","scope":16159,"src":"8147:24:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16023,"name":"uint256","nodeType":"ElementaryTypeName","src":"8147:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16030,"initialValue":{"expression":{"baseExpression":{"expression":{"id":16025,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15996,"src":"8174:1:49","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":16026,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8189:26:49","memberName":"selectorToFacetAndPosition","nodeType":"MemberAccess","referencedDeclaration":15510,"src":"8174:41:49","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_struct$_FacetAddressAndPosition_$15499_storage_$","typeString":"mapping(bytes4 => struct LibDiamond.FacetAddressAndPosition storage ref)"}},"id":16028,"indexExpression":{"id":16027,"name":"_selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16000,"src":"8216:9:49","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8174:52:49","typeDescriptions":{"typeIdentifier":"t_struct$_FacetAddressAndPosition_$15499_storage","typeString":"struct LibDiamond.FacetAddressAndPosition storage ref"}},"id":16029,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8240:24:49","memberName":"functionSelectorPosition","nodeType":"MemberAccess","referencedDeclaration":15498,"src":"8174:90:49","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"VariableDeclarationStatement","src":"8147:117:49"},{"assignments":[16032],"declarations":[{"constant":false,"id":16032,"mutability":"mutable","name":"lastSelectorPosition","nameLocation":"8282:20:49","nodeType":"VariableDeclaration","scope":16159,"src":"8274:28:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16031,"name":"uint256","nodeType":"ElementaryTypeName","src":"8274:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16041,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16040,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"baseExpression":{"expression":{"id":16033,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15996,"src":"8305:1:49","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":16034,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8320:22:49","memberName":"facetFunctionSelectors","nodeType":"MemberAccess","referencedDeclaration":15515,"src":"8305:37:49","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_FacetFunctionSelectors_$15505_storage_$","typeString":"mapping(address => struct LibDiamond.FacetFunctionSelectors storage ref)"}},"id":16036,"indexExpression":{"id":16035,"name":"_facetAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15998,"src":"8343:13:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8305:52:49","typeDescriptions":{"typeIdentifier":"t_struct$_FacetFunctionSelectors_$15505_storage","typeString":"struct LibDiamond.FacetFunctionSelectors storage ref"}},"id":16037,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8371:17:49","memberName":"functionSelectors","nodeType":"MemberAccess","referencedDeclaration":15502,"src":"8305:83:49","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage","typeString":"bytes4[] storage ref"}},"id":16038,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8402:6:49","memberName":"length","nodeType":"MemberAccess","src":"8305:103:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":16039,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8411:1:49","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8305:107:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8274:138:49"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16042,"name":"selectorPosition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16024,"src":"8494:16:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":16043,"name":"lastSelectorPosition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16032,"src":"8514:20:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8494:40:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16079,"nodeType":"IfStatement","src":"8490:490:49","trueBody":{"id":16078,"nodeType":"Block","src":"8536:444:49","statements":[{"assignments":[16046],"declarations":[{"constant":false,"id":16046,"mutability":"mutable","name":"lastSelector","nameLocation":"8557:12:49","nodeType":"VariableDeclaration","scope":16078,"src":"8550:19:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":16045,"name":"bytes4","nodeType":"ElementaryTypeName","src":"8550:6:49","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"id":16054,"initialValue":{"baseExpression":{"expression":{"baseExpression":{"expression":{"id":16047,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15996,"src":"8572:1:49","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":16048,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8591:22:49","memberName":"facetFunctionSelectors","nodeType":"MemberAccess","referencedDeclaration":15515,"src":"8572:41:49","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_FacetFunctionSelectors_$15505_storage_$","typeString":"mapping(address => struct LibDiamond.FacetFunctionSelectors storage ref)"}},"id":16050,"indexExpression":{"id":16049,"name":"_facetAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15998,"src":"8614:13:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8572:56:49","typeDescriptions":{"typeIdentifier":"t_struct$_FacetFunctionSelectors_$15505_storage","typeString":"struct LibDiamond.FacetFunctionSelectors storage ref"}},"id":16051,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8646:17:49","memberName":"functionSelectors","nodeType":"MemberAccess","referencedDeclaration":15502,"src":"8572:91:49","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage","typeString":"bytes4[] storage ref"}},"id":16053,"indexExpression":{"id":16052,"name":"lastSelectorPosition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16032,"src":"8664:20:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8572:113:49","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"VariableDeclarationStatement","src":"8550:135:49"},{"expression":{"id":16064,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"baseExpression":{"expression":{"id":16055,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15996,"src":"8699:1:49","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":16058,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8701:22:49","memberName":"facetFunctionSelectors","nodeType":"MemberAccess","referencedDeclaration":15515,"src":"8699:24:49","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_FacetFunctionSelectors_$15505_storage_$","typeString":"mapping(address => struct LibDiamond.FacetFunctionSelectors storage ref)"}},"id":16059,"indexExpression":{"id":16057,"name":"_facetAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15998,"src":"8724:13:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8699:39:49","typeDescriptions":{"typeIdentifier":"t_struct$_FacetFunctionSelectors_$15505_storage","typeString":"struct LibDiamond.FacetFunctionSelectors storage ref"}},"id":16060,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8739:17:49","memberName":"functionSelectors","nodeType":"MemberAccess","referencedDeclaration":15502,"src":"8699:57:49","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage","typeString":"bytes4[] storage ref"}},"id":16062,"indexExpression":{"id":16061,"name":"selectorPosition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16024,"src":"8778:16:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8699:113:49","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":16063,"name":"lastSelector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16046,"src":"8815:12:49","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"8699:128:49","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":16065,"nodeType":"ExpressionStatement","src":"8699:128:49"},{"expression":{"id":16076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":16066,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15996,"src":"8841:1:49","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":16069,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8860:26:49","memberName":"selectorToFacetAndPosition","nodeType":"MemberAccess","referencedDeclaration":15510,"src":"8841:45:49","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_struct$_FacetAddressAndPosition_$15499_storage_$","typeString":"mapping(bytes4 => struct LibDiamond.FacetAddressAndPosition storage ref)"}},"id":16070,"indexExpression":{"id":16068,"name":"lastSelector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16046,"src":"8887:12:49","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8841:59:49","typeDescriptions":{"typeIdentifier":"t_struct$_FacetAddressAndPosition_$15499_storage","typeString":"struct LibDiamond.FacetAddressAndPosition storage ref"}},"id":16071,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8918:24:49","memberName":"functionSelectorPosition","nodeType":"MemberAccess","referencedDeclaration":15498,"src":"8841:101:49","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":16074,"name":"selectorPosition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16024,"src":"8952:16:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":16073,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8945:6:49","typeDescriptions":{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"},"typeName":{"id":16072,"name":"uint96","nodeType":"ElementaryTypeName","src":"8945:6:49","typeDescriptions":{}}},"id":16075,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8945:24:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"8841:128:49","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"id":16077,"nodeType":"ExpressionStatement","src":"8841:128:49"}]}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"baseExpression":{"expression":{"id":16080,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15996,"src":"9025:1:49","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":16083,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9027:22:49","memberName":"facetFunctionSelectors","nodeType":"MemberAccess","referencedDeclaration":15515,"src":"9025:24:49","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_FacetFunctionSelectors_$15505_storage_$","typeString":"mapping(address => struct LibDiamond.FacetFunctionSelectors storage ref)"}},"id":16084,"indexExpression":{"id":16082,"name":"_facetAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15998,"src":"9050:13:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9025:39:49","typeDescriptions":{"typeIdentifier":"t_struct$_FacetFunctionSelectors_$15505_storage","typeString":"struct LibDiamond.FacetFunctionSelectors storage ref"}},"id":16085,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9065:17:49","memberName":"functionSelectors","nodeType":"MemberAccess","referencedDeclaration":15502,"src":"9025:57:49","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage","typeString":"bytes4[] storage ref"}},"id":16086,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9083:3:49","memberName":"pop","nodeType":"MemberAccess","src":"9025:61:49","typeDescriptions":{"typeIdentifier":"t_function_arraypop_nonpayable$_t_array$_t_bytes4_$dyn_storage_ptr_$returns$__$attached_to$_t_array$_t_bytes4_$dyn_storage_ptr_$","typeString":"function (bytes4[] storage pointer)"}},"id":16087,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9025:63:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16088,"nodeType":"ExpressionStatement","src":"9025:63:49"},{"expression":{"id":16093,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"9098:46:49","subExpression":{"baseExpression":{"expression":{"id":16089,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15996,"src":"9105:1:49","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":16090,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9107:26:49","memberName":"selectorToFacetAndPosition","nodeType":"MemberAccess","referencedDeclaration":15510,"src":"9105:28:49","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_struct$_FacetAddressAndPosition_$15499_storage_$","typeString":"mapping(bytes4 => struct LibDiamond.FacetAddressAndPosition storage ref)"}},"id":16092,"indexExpression":{"id":16091,"name":"_selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16000,"src":"9134:9:49","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9105:39:49","typeDescriptions":{"typeIdentifier":"t_struct$_FacetAddressAndPosition_$15499_storage","typeString":"struct LibDiamond.FacetAddressAndPosition storage ref"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16094,"nodeType":"ExpressionStatement","src":"9098:46:49"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16097,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16095,"name":"lastSelectorPosition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16032,"src":"9239:20:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":16096,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9263:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9239:25:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16158,"nodeType":"IfStatement","src":"9235:893:49","trueBody":{"id":16157,"nodeType":"Block","src":"9266:862:49","statements":[{"assignments":[16099],"declarations":[{"constant":false,"id":16099,"mutability":"mutable","name":"lastFacetAddressPosition","nameLocation":"9379:24:49","nodeType":"VariableDeclaration","scope":16157,"src":"9371:32:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16098,"name":"uint256","nodeType":"ElementaryTypeName","src":"9371:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16105,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":16100,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15996,"src":"9406:1:49","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":16101,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9408:14:49","memberName":"facetAddresses","nodeType":"MemberAccess","referencedDeclaration":15518,"src":"9406:16:49","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":16102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9423:6:49","memberName":"length","nodeType":"MemberAccess","src":"9406:23:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":16103,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9432:1:49","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9406:27:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9371:62:49"},{"assignments":[16107],"declarations":[{"constant":false,"id":16107,"mutability":"mutable","name":"facetAddressPosition","nameLocation":"9455:20:49","nodeType":"VariableDeclaration","scope":16157,"src":"9447:28:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16106,"name":"uint256","nodeType":"ElementaryTypeName","src":"9447:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16113,"initialValue":{"expression":{"baseExpression":{"expression":{"id":16108,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15996,"src":"9478:1:49","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":16109,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9497:22:49","memberName":"facetFunctionSelectors","nodeType":"MemberAccess","referencedDeclaration":15515,"src":"9478:41:49","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_FacetFunctionSelectors_$15505_storage_$","typeString":"mapping(address => struct LibDiamond.FacetFunctionSelectors storage ref)"}},"id":16111,"indexExpression":{"id":16110,"name":"_facetAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15998,"src":"9520:13:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9478:56:49","typeDescriptions":{"typeIdentifier":"t_struct$_FacetFunctionSelectors_$15505_storage","typeString":"struct LibDiamond.FacetFunctionSelectors storage ref"}},"id":16112,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9552:20:49","memberName":"facetAddressPosition","nodeType":"MemberAccess","referencedDeclaration":15504,"src":"9478:94:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9447:125:49"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16114,"name":"facetAddressPosition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16107,"src":"9590:20:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":16115,"name":"lastFacetAddressPosition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16099,"src":"9614:24:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9590:48:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16142,"nodeType":"IfStatement","src":"9586:415:49","trueBody":{"id":16141,"nodeType":"Block","src":"9640:361:49","statements":[{"assignments":[16118],"declarations":[{"constant":false,"id":16118,"mutability":"mutable","name":"lastFacetAddress","nameLocation":"9666:16:49","nodeType":"VariableDeclaration","scope":16141,"src":"9658:24:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16117,"name":"address","nodeType":"ElementaryTypeName","src":"9658:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":16123,"initialValue":{"baseExpression":{"expression":{"id":16119,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15996,"src":"9685:1:49","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":16120,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9687:14:49","memberName":"facetAddresses","nodeType":"MemberAccess","referencedDeclaration":15518,"src":"9685:16:49","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":16122,"indexExpression":{"id":16121,"name":"lastFacetAddressPosition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16099,"src":"9723:24:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9685:80:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"9658:107:49"},{"expression":{"id":16130,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":16124,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15996,"src":"9783:1:49","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":16127,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9785:14:49","memberName":"facetAddresses","nodeType":"MemberAccess","referencedDeclaration":15518,"src":"9783:16:49","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":16128,"indexExpression":{"id":16126,"name":"facetAddressPosition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16107,"src":"9800:20:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9783:38:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":16129,"name":"lastFacetAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16118,"src":"9824:16:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9783:57:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":16131,"nodeType":"ExpressionStatement","src":"9783:57:49"},{"expression":{"id":16139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"expression":{"id":16132,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15996,"src":"9858:1:49","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":16135,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9881:22:49","memberName":"facetFunctionSelectors","nodeType":"MemberAccess","referencedDeclaration":15515,"src":"9858:45:49","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_FacetFunctionSelectors_$15505_storage_$","typeString":"mapping(address => struct LibDiamond.FacetFunctionSelectors storage ref)"}},"id":16136,"indexExpression":{"id":16134,"name":"lastFacetAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16118,"src":"9904:16:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9858:63:49","typeDescriptions":{"typeIdentifier":"t_struct$_FacetFunctionSelectors_$15505_storage","typeString":"struct LibDiamond.FacetFunctionSelectors storage ref"}},"id":16137,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"9943:20:49","memberName":"facetAddressPosition","nodeType":"MemberAccess","referencedDeclaration":15504,"src":"9858:105:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":16138,"name":"facetAddressPosition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16107,"src":"9966:20:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9858:128:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16140,"nodeType":"ExpressionStatement","src":"9858:128:49"}]}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":16143,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15996,"src":"10014:1:49","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":16146,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10016:14:49","memberName":"facetAddresses","nodeType":"MemberAccess","referencedDeclaration":15518,"src":"10014:16:49","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":16147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10031:3:49","memberName":"pop","nodeType":"MemberAccess","src":"10014:20:49","typeDescriptions":{"typeIdentifier":"t_function_arraypop_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$returns$__$attached_to$_t_array$_t_address_$dyn_storage_ptr_$","typeString":"function (address[] storage pointer)"}},"id":16148,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10014:22:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16149,"nodeType":"ExpressionStatement","src":"10014:22:49"},{"expression":{"id":16155,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"10050:67:49","subExpression":{"expression":{"baseExpression":{"expression":{"id":16150,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15996,"src":"10057:1:49","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":16151,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10059:22:49","memberName":"facetFunctionSelectors","nodeType":"MemberAccess","referencedDeclaration":15515,"src":"10057:24:49","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_FacetFunctionSelectors_$15505_storage_$","typeString":"mapping(address => struct LibDiamond.FacetFunctionSelectors storage ref)"}},"id":16153,"indexExpression":{"id":16152,"name":"_facetAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15998,"src":"10082:13:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10057:39:49","typeDescriptions":{"typeIdentifier":"t_struct$_FacetFunctionSelectors_$15505_storage","typeString":"struct LibDiamond.FacetFunctionSelectors storage ref"}},"id":16154,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"10097:20:49","memberName":"facetAddressPosition","nodeType":"MemberAccess","referencedDeclaration":15504,"src":"10057:60:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16156,"nodeType":"ExpressionStatement","src":"10050:67:49"}]}}]},"id":16160,"implemented":true,"kind":"function","modifiers":[],"name":"_removeFunction","nameLocation":"7592:15:49","nodeType":"FunctionDefinition","parameters":{"id":16001,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15996,"mutability":"mutable","name":"s","nameLocation":"7640:1:49","nodeType":"VariableDeclaration","scope":16160,"src":"7617:24:49","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond"},"typeName":{"id":15995,"nodeType":"UserDefinedTypeName","pathNode":{"id":15994,"name":"StorageDiamond","nameLocations":["7617:14:49"],"nodeType":"IdentifierPath","referencedDeclaration":15523,"src":"7617:14:49"},"referencedDeclaration":15523,"src":"7617:14:49","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond"}},"visibility":"internal"},{"constant":false,"id":15998,"mutability":"mutable","name":"_facetAddress","nameLocation":"7659:13:49","nodeType":"VariableDeclaration","scope":16160,"src":"7651:21:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15997,"name":"address","nodeType":"ElementaryTypeName","src":"7651:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16000,"mutability":"mutable","name":"_selector","nameLocation":"7689:9:49","nodeType":"VariableDeclaration","scope":16160,"src":"7682:16:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":15999,"name":"bytes4","nodeType":"ElementaryTypeName","src":"7682:6:49","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"7607:97:49"},"returnParameters":{"id":16002,"nodeType":"ParameterList","parameters":[],"src":"7714:0:49"},"scope":16228,"src":"7583:2551:49","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":16207,"nodeType":"Block","src":"10241:691:49","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":16172,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16167,"name":"_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16162,"src":"10255:5:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":16170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10272:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":16169,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10264:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":16168,"name":"address","nodeType":"ElementaryTypeName","src":"10264:7:49","typeDescriptions":{}}},"id":16171,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10264:10:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10255:19:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16175,"nodeType":"IfStatement","src":"10251:56:49","trueBody":{"id":16174,"nodeType":"Block","src":"10276:31:49","statements":[{"functionReturnParameters":16166,"id":16173,"nodeType":"Return","src":"10290:7:49"}]}},{"expression":{"arguments":[{"id":16177,"name":"_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16162,"src":"10353:5:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"4c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f6465","id":16178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10372:42:49","typeDescriptions":{"typeIdentifier":"t_stringliteral_460f8f0920c649146ef02741816b1cf9ce4f02ea288ceb73adf027cefe9069a0","typeString":"literal_string \"LibDiamondCut: _init address has no code\""},"value":"LibDiamondCut: _init address has no code"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_stringliteral_460f8f0920c649146ef02741816b1cf9ce4f02ea288ceb73adf027cefe9069a0","typeString":"literal_string \"LibDiamondCut: _init address has no code\""}],"id":16176,"name":"_requireHasContractCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16227,"src":"10316:23:49","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_string_memory_ptr_$returns$__$","typeString":"function (address,string memory) view"}},"id":16179,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10316:108:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16180,"nodeType":"ExpressionStatement","src":"10316:108:49"},{"assignments":[16182,16184],"declarations":[{"constant":false,"id":16182,"mutability":"mutable","name":"success","nameLocation":"10440:7:49","nodeType":"VariableDeclaration","scope":16207,"src":"10435:12:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16181,"name":"bool","nodeType":"ElementaryTypeName","src":"10435:4:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":16184,"mutability":"mutable","name":"error","nameLocation":"10462:5:49","nodeType":"VariableDeclaration","scope":16207,"src":"10449:18:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":16183,"name":"bytes","nodeType":"ElementaryTypeName","src":"10449:5:49","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":16189,"initialValue":{"arguments":[{"id":16187,"name":"_calldata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16164,"src":"10490:9:49","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":16185,"name":"_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16162,"src":"10471:5:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":16186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10477:12:49","memberName":"delegatecall","nodeType":"MemberAccess","src":"10471:18:49","typeDescriptions":{"typeIdentifier":"t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bool,bytes memory)"}},"id":16188,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10471:29:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"10434:66:49"},{"condition":{"id":16191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"10514:8:49","subExpression":{"id":16190,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16182,"src":"10515:7:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16206,"nodeType":"IfStatement","src":"10510:416:49","trueBody":{"id":16205,"nodeType":"Block","src":"10524:402:49","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":16192,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16184,"src":"10542:5:49","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":16193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10548:6:49","memberName":"length","nodeType":"MemberAccess","src":"10542:12:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":16194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10557:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10542:16:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":16203,"nodeType":"Block","src":"10828:88:49","statements":[{"errorCall":{"arguments":[{"id":16199,"name":"_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16162,"src":"10884:5:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":16200,"name":"_calldata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16164,"src":"10891:9:49","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":16198,"name":"InitializationFunctionReverted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15489,"src":"10853:30:49","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory) pure"}},"id":16201,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10853:48:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16202,"nodeType":"RevertStatement","src":"10846:55:49"}]},"id":16204,"nodeType":"IfStatement","src":"10538:378:49","trueBody":{"id":16197,"nodeType":"Block","src":"10560:262:49","statements":[{"AST":{"nodeType":"YulBlock","src":"10673:135:49","statements":[{"nodeType":"YulVariableDeclaration","src":"10695:35:49","value":{"arguments":[{"name":"error","nodeType":"YulIdentifier","src":"10724:5:49"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10718:5:49"},"nodeType":"YulFunctionCall","src":"10718:12:49"},"variables":[{"name":"returndata_size","nodeType":"YulTypedName","src":"10699:15:49","type":""}]},{"expression":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10762:2:49","type":"","value":"32"},{"name":"error","nodeType":"YulIdentifier","src":"10766:5:49"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10758:3:49"},"nodeType":"YulFunctionCall","src":"10758:14:49"},{"name":"returndata_size","nodeType":"YulIdentifier","src":"10774:15:49"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10751:6:49"},"nodeType":"YulFunctionCall","src":"10751:39:49"},"nodeType":"YulExpressionStatement","src":"10751:39:49"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":16184,"isOffset":false,"isSlot":false,"src":"10724:5:49","valueSize":1},{"declaration":16184,"isOffset":false,"isSlot":false,"src":"10766:5:49","valueSize":1}],"id":16196,"nodeType":"InlineAssembly","src":"10664:144:49"}]}}]}}]},"id":16208,"implemented":true,"kind":"function","modifiers":[],"name":"_initializeDiamondCut","nameLocation":"10149:21:49","nodeType":"FunctionDefinition","parameters":{"id":16165,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16162,"mutability":"mutable","name":"_init","nameLocation":"10188:5:49","nodeType":"VariableDeclaration","scope":16208,"src":"10180:13:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16161,"name":"address","nodeType":"ElementaryTypeName","src":"10180:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16164,"mutability":"mutable","name":"_calldata","nameLocation":"10216:9:49","nodeType":"VariableDeclaration","scope":16208,"src":"10203:22:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":16163,"name":"bytes","nodeType":"ElementaryTypeName","src":"10203:5:49","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"10170:61:49"},"returnParameters":{"id":16166,"nodeType":"ParameterList","parameters":[],"src":"10241:0:49"},"scope":16228,"src":"10140:792:49","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":16226,"nodeType":"Block","src":"11055:167:49","statements":[{"assignments":[16216],"declarations":[{"constant":false,"id":16216,"mutability":"mutable","name":"contractSize","nameLocation":"11073:12:49","nodeType":"VariableDeclaration","scope":16226,"src":"11065:20:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16215,"name":"uint256","nodeType":"ElementaryTypeName","src":"11065:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16217,"nodeType":"VariableDeclarationStatement","src":"11065:20:49"},{"AST":{"nodeType":"YulBlock","src":"11104:62:49","statements":[{"nodeType":"YulAssignment","src":"11118:38:49","value":{"arguments":[{"name":"_contract","nodeType":"YulIdentifier","src":"11146:9:49"}],"functionName":{"name":"extcodesize","nodeType":"YulIdentifier","src":"11134:11:49"},"nodeType":"YulFunctionCall","src":"11134:22:49"},"variableNames":[{"name":"contractSize","nodeType":"YulIdentifier","src":"11118:12:49"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":16210,"isOffset":false,"isSlot":false,"src":"11146:9:49","valueSize":1},{"declaration":16216,"isOffset":false,"isSlot":false,"src":"11118:12:49","valueSize":1}],"id":16218,"nodeType":"InlineAssembly","src":"11095:71:49"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16220,"name":"contractSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16216,"src":"11183:12:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":16221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11198:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11183:16:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":16223,"name":"_errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16212,"src":"11201:13:49","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":16219,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11175:7:49","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":16224,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11175:40:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16225,"nodeType":"ExpressionStatement","src":"11175:40:49"}]},"id":16227,"implemented":true,"kind":"function","modifiers":[],"name":"_requireHasContractCode","nameLocation":"10947:23:49","nodeType":"FunctionDefinition","parameters":{"id":16213,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16210,"mutability":"mutable","name":"_contract","nameLocation":"10988:9:49","nodeType":"VariableDeclaration","scope":16227,"src":"10980:17:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16209,"name":"address","nodeType":"ElementaryTypeName","src":"10980:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16212,"mutability":"mutable","name":"_errorMessage","nameLocation":"11021:13:49","nodeType":"VariableDeclaration","scope":16227,"src":"11007:27:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":16211,"name":"string","nodeType":"ElementaryTypeName","src":"11007:6:49","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"10970:70:49"},"returnParameters":{"id":16214,"nodeType":"ParameterList","parameters":[],"src":"11055:0:49"},"scope":16228,"src":"10938:284:49","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":16229,"src":"366:10858:49","usedErrors":[]}],"src":"32:11193:49"},"id":49},"contracts/libraries/utils/LibSecurity.sol":{"ast":{"absolutePath":"contracts/libraries/utils/LibSecurity.sol","exportedSymbols":{"IERC1271":[13],"LibSecurity":[16261]},"id":16262,"license":"BUSL-1.1","nodeType":"SourceUnit","nodes":[{"id":16230,"literals":["solidity","^","0.8",".9"],"nodeType":"PragmaDirective","src":"36:23:50"},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC1271.sol","file":"@openzeppelin/contracts/interfaces/IERC1271.sol","id":16232,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":16262,"sourceUnit":14,"src":"61:73:50","symbolAliases":[{"foreign":{"id":16231,"name":"IERC1271","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13,"src":"69:8:50","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"LibSecurity","contractDependencies":[],"contractKind":"library","documentation":{"id":16233,"nodeType":"StructuredDocumentation","src":"136:82:50","text":" // bytes4(keccak256(\"isValidSignature(bytes32,bytes)\")\n // 0x1626ba7e"},"fullyImplemented":true,"id":16261,"linearizedBaseContracts":[16261],"name":"LibSecurity","nameLocation":"228:11:50","nodeType":"ContractDefinition","nodes":[{"body":{"id":16259,"nodeType":"Block","src":"386:187:50","statements":[{"assignments":[16243],"declarations":[{"constant":false,"id":16243,"mutability":"mutable","name":"result","nameLocation":"403:6:50","nodeType":"VariableDeclaration","scope":16259,"src":"396:13:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":16242,"name":"bytes4","nodeType":"ElementaryTypeName","src":"396:6:50","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"id":16251,"initialValue":{"arguments":[{"id":16248,"name":"_hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16237,"src":"467:5:50","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":16249,"name":"_signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16239,"src":"486:10:50","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":16245,"name":"_walletAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16235,"src":"421:14:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":16244,"name":"IERC1271","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13,"src":"412:8:50","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC1271_$13_$","typeString":"type(contract IERC1271)"}},"id":16246,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"412:24:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC1271_$13","typeString":"contract IERC1271"}},"id":16247,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"437:16:50","memberName":"isValidSignature","nodeType":"MemberAccess","referencedDeclaration":12,"src":"412:41:50","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bytes4_$","typeString":"function (bytes32,bytes memory) view external returns (bytes4)"}},"id":16250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"412:94:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"VariableDeclarationStatement","src":"396:110:50"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":16255,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16253,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16243,"src":"524:6:50","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783136323662613765","id":16254,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"534:10:50","typeDescriptions":{"typeIdentifier":"t_rational_371636862_by_1","typeString":"int_const 371636862"},"value":"0x1626ba7e"},"src":"524:20:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"494e56414c49445f5349474e4154555245","id":16256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"546:19:50","typeDescriptions":{"typeIdentifier":"t_stringliteral_5e2e9eaa2d734966dea0900deacd15b20129fbce05255d633a3ce5ebca181b88","typeString":"literal_string \"INVALID_SIGNATURE\""},"value":"INVALID_SIGNATURE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5e2e9eaa2d734966dea0900deacd15b20129fbce05255d633a3ce5ebca181b88","typeString":"literal_string \"INVALID_SIGNATURE\""}],"id":16252,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"516:7:50","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":16257,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"516:50:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16258,"nodeType":"ExpressionStatement","src":"516:50:50"}]},"id":16260,"implemented":true,"kind":"function","modifiers":[],"name":"_requireValidSignature","nameLocation":"255:22:50","nodeType":"FunctionDefinition","parameters":{"id":16240,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16235,"mutability":"mutable","name":"_walletAddress","nameLocation":"295:14:50","nodeType":"VariableDeclaration","scope":16260,"src":"287:22:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16234,"name":"address","nodeType":"ElementaryTypeName","src":"287:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16237,"mutability":"mutable","name":"_hash","nameLocation":"327:5:50","nodeType":"VariableDeclaration","scope":16260,"src":"319:13:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16236,"name":"bytes32","nodeType":"ElementaryTypeName","src":"319:7:50","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":16239,"mutability":"mutable","name":"_signature","nameLocation":"355:10:50","nodeType":"VariableDeclaration","scope":16260,"src":"342:23:50","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":16238,"name":"bytes","nodeType":"ElementaryTypeName","src":"342:5:50","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"277:94:50"},"returnParameters":{"id":16241,"nodeType":"ParameterList","parameters":[],"src":"386:0:50"},"scope":16261,"src":"246:327:50","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":16262,"src":"220:355:50","usedErrors":[]}],"src":"36:540:50"},"id":50},"contracts/services/gelato/Types.sol":{"ast":{"absolutePath":"contracts/services/gelato/Types.sol","exportedSymbols":{"IAutomate":[16314],"IOpsProxyFactory":[16352],"ITaskTreasuryUpgradable":[16342],"Module":[16268],"ModuleData":[16276]},"id":16353,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":16263,"literals":["solidity","^","0.8",".12"],"nodeType":"PragmaDirective","src":"130:24:51"},{"canonicalName":"Module","id":16268,"members":[{"id":16264,"name":"RESOLVER","nameLocation":"174:8:51","nodeType":"EnumValue","src":"174:8:51"},{"id":16265,"name":"TIME","nameLocation":"188:4:51","nodeType":"EnumValue","src":"188:4:51"},{"id":16266,"name":"PROXY","nameLocation":"198:5:51","nodeType":"EnumValue","src":"198:5:51"},{"id":16267,"name":"SINGLE_EXEC","nameLocation":"209:11:51","nodeType":"EnumValue","src":"209:11:51"}],"name":"Module","nameLocation":"161:6:51","nodeType":"EnumDefinition","src":"156:66:51"},{"canonicalName":"ModuleData","id":16276,"members":[{"constant":false,"id":16272,"mutability":"mutable","name":"modules","nameLocation":"257:7:51","nodeType":"VariableDeclaration","scope":16276,"src":"248:16:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_Module_$16268_$dyn_storage_ptr","typeString":"enum Module[]"},"typeName":{"baseType":{"id":16270,"nodeType":"UserDefinedTypeName","pathNode":{"id":16269,"name":"Module","nameLocations":["248:6:51"],"nodeType":"IdentifierPath","referencedDeclaration":16268,"src":"248:6:51"},"referencedDeclaration":16268,"src":"248:6:51","typeDescriptions":{"typeIdentifier":"t_enum$_Module_$16268","typeString":"enum Module"}},"id":16271,"nodeType":"ArrayTypeName","src":"248:8:51","typeDescriptions":{"typeIdentifier":"t_array$_t_enum$_Module_$16268_$dyn_storage_ptr","typeString":"enum Module[]"}},"visibility":"internal"},{"constant":false,"id":16275,"mutability":"mutable","name":"args","nameLocation":"278:4:51","nodeType":"VariableDeclaration","scope":16276,"src":"270:12:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":16273,"name":"bytes","nodeType":"ElementaryTypeName","src":"270:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":16274,"nodeType":"ArrayTypeName","src":"270:7:51","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"name":"ModuleData","nameLocation":"231:10:51","nodeType":"StructDefinition","scope":16353,"src":"224:61:51","visibility":"public"},{"abstract":false,"baseContracts":[],"canonicalName":"IAutomate","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":16314,"linearizedBaseContracts":[16314],"name":"IAutomate","nameLocation":"297:9:51","nodeType":"ContractDefinition","nodes":[{"functionSelector":"3323b467","id":16290,"implemented":false,"kind":"function","modifiers":[],"name":"createTask","nameLocation":"322:10:51","nodeType":"FunctionDefinition","parameters":{"id":16286,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16278,"mutability":"mutable","name":"execAddress","nameLocation":"350:11:51","nodeType":"VariableDeclaration","scope":16290,"src":"342:19:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16277,"name":"address","nodeType":"ElementaryTypeName","src":"342:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16280,"mutability":"mutable","name":"execDataOrSelector","nameLocation":"386:18:51","nodeType":"VariableDeclaration","scope":16290,"src":"371:33:51","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":16279,"name":"bytes","nodeType":"ElementaryTypeName","src":"371:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":16283,"mutability":"mutable","name":"moduleData","nameLocation":"434:10:51","nodeType":"VariableDeclaration","scope":16290,"src":"414:30:51","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ModuleData_$16276_calldata_ptr","typeString":"struct ModuleData"},"typeName":{"id":16282,"nodeType":"UserDefinedTypeName","pathNode":{"id":16281,"name":"ModuleData","nameLocations":["414:10:51"],"nodeType":"IdentifierPath","referencedDeclaration":16276,"src":"414:10:51"},"referencedDeclaration":16276,"src":"414:10:51","typeDescriptions":{"typeIdentifier":"t_struct$_ModuleData_$16276_storage_ptr","typeString":"struct ModuleData"}},"visibility":"internal"},{"constant":false,"id":16285,"mutability":"mutable","name":"feeToken","nameLocation":"462:8:51","nodeType":"VariableDeclaration","scope":16290,"src":"454:16:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16284,"name":"address","nodeType":"ElementaryTypeName","src":"454:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"332:144:51"},"returnParameters":{"id":16289,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16288,"mutability":"mutable","name":"taskId","nameLocation":"503:6:51","nodeType":"VariableDeclaration","scope":16290,"src":"495:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16287,"name":"bytes32","nodeType":"ElementaryTypeName","src":"495:7:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"494:16:51"},"scope":16314,"src":"313:198:51","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"ee8ca3b5","id":16295,"implemented":false,"kind":"function","modifiers":[],"name":"cancelTask","nameLocation":"526:10:51","nodeType":"FunctionDefinition","parameters":{"id":16293,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16292,"mutability":"mutable","name":"taskId","nameLocation":"545:6:51","nodeType":"VariableDeclaration","scope":16295,"src":"537:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16291,"name":"bytes32","nodeType":"ElementaryTypeName","src":"537:7:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"536:16:51"},"returnParameters":{"id":16294,"nodeType":"ParameterList","parameters":[],"src":"561:0:51"},"scope":16314,"src":"517:45:51","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"b810c636","id":16302,"implemented":false,"kind":"function","modifiers":[],"name":"getFeeDetails","nameLocation":"577:13:51","nodeType":"FunctionDefinition","parameters":{"id":16296,"nodeType":"ParameterList","parameters":[],"src":"590:2:51"},"returnParameters":{"id":16301,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16298,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16302,"src":"616:7:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16297,"name":"uint256","nodeType":"ElementaryTypeName","src":"616:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16300,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16302,"src":"625:7:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16299,"name":"address","nodeType":"ElementaryTypeName","src":"625:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"615:18:51"},"scope":16314,"src":"568:66:51","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"573ea575","id":16307,"implemented":false,"kind":"function","modifiers":[],"name":"gelato","nameLocation":"649:6:51","nodeType":"FunctionDefinition","parameters":{"id":16303,"nodeType":"ParameterList","parameters":[],"src":"655:2:51"},"returnParameters":{"id":16306,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16305,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16307,"src":"681:15:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":16304,"name":"address","nodeType":"ElementaryTypeName","src":"681:15:51","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"}],"src":"680:17:51"},"scope":16314,"src":"640:58:51","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"e60a3213","id":16313,"implemented":false,"kind":"function","modifiers":[],"name":"taskTreasury","nameLocation":"713:12:51","nodeType":"FunctionDefinition","parameters":{"id":16308,"nodeType":"ParameterList","parameters":[],"src":"725:2:51"},"returnParameters":{"id":16312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16311,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16313,"src":"751:23:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ITaskTreasuryUpgradable_$16342","typeString":"contract ITaskTreasuryUpgradable"},"typeName":{"id":16310,"nodeType":"UserDefinedTypeName","pathNode":{"id":16309,"name":"ITaskTreasuryUpgradable","nameLocations":["751:23:51"],"nodeType":"IdentifierPath","referencedDeclaration":16342,"src":"751:23:51"},"referencedDeclaration":16342,"src":"751:23:51","typeDescriptions":{"typeIdentifier":"t_contract$_ITaskTreasuryUpgradable_$16342","typeString":"contract ITaskTreasuryUpgradable"}},"visibility":"internal"}],"src":"750:25:51"},"scope":16314,"src":"704:72:51","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":16353,"src":"287:491:51","usedErrors":[]},{"abstract":false,"baseContracts":[],"canonicalName":"ITaskTreasuryUpgradable","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":16342,"linearizedBaseContracts":[16342],"name":"ITaskTreasuryUpgradable","nameLocation":"790:23:51","nodeType":"ContractDefinition","nodes":[{"functionSelector":"c1461d57","id":16323,"implemented":false,"kind":"function","modifiers":[],"name":"depositFunds","nameLocation":"829:12:51","nodeType":"FunctionDefinition","parameters":{"id":16321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16316,"mutability":"mutable","name":"receiver","nameLocation":"859:8:51","nodeType":"VariableDeclaration","scope":16323,"src":"851:16:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16315,"name":"address","nodeType":"ElementaryTypeName","src":"851:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16318,"mutability":"mutable","name":"token","nameLocation":"885:5:51","nodeType":"VariableDeclaration","scope":16323,"src":"877:13:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16317,"name":"address","nodeType":"ElementaryTypeName","src":"877:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16320,"mutability":"mutable","name":"amount","nameLocation":"908:6:51","nodeType":"VariableDeclaration","scope":16323,"src":"900:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16319,"name":"uint256","nodeType":"ElementaryTypeName","src":"900:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"841:79:51"},"returnParameters":{"id":16322,"nodeType":"ParameterList","parameters":[],"src":"937:0:51"},"scope":16342,"src":"820:118:51","stateMutability":"payable","virtual":false,"visibility":"external"},{"functionSelector":"1c20fadd","id":16332,"implemented":false,"kind":"function","modifiers":[],"name":"withdrawFunds","nameLocation":"953:13:51","nodeType":"FunctionDefinition","parameters":{"id":16330,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16325,"mutability":"mutable","name":"receiver","nameLocation":"992:8:51","nodeType":"VariableDeclaration","scope":16332,"src":"976:24:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":16324,"name":"address","nodeType":"ElementaryTypeName","src":"976:15:51","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":16327,"mutability":"mutable","name":"token","nameLocation":"1018:5:51","nodeType":"VariableDeclaration","scope":16332,"src":"1010:13:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16326,"name":"address","nodeType":"ElementaryTypeName","src":"1010:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16329,"mutability":"mutable","name":"amount","nameLocation":"1041:6:51","nodeType":"VariableDeclaration","scope":16332,"src":"1033:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16328,"name":"uint256","nodeType":"ElementaryTypeName","src":"1033:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"966:87:51"},"returnParameters":{"id":16331,"nodeType":"ParameterList","parameters":[],"src":"1062:0:51"},"scope":16342,"src":"944:119:51","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"b47064c8","id":16341,"implemented":false,"kind":"function","modifiers":[],"name":"userTokenBalance","nameLocation":"1078:16:51","nodeType":"FunctionDefinition","parameters":{"id":16337,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16334,"mutability":"mutable","name":"_user","nameLocation":"1103:5:51","nodeType":"VariableDeclaration","scope":16341,"src":"1095:13:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16333,"name":"address","nodeType":"ElementaryTypeName","src":"1095:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16336,"mutability":"mutable","name":"_token","nameLocation":"1118:6:51","nodeType":"VariableDeclaration","scope":16341,"src":"1110:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16335,"name":"address","nodeType":"ElementaryTypeName","src":"1110:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1094:31:51"},"returnParameters":{"id":16340,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16339,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16341,"src":"1173:7:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16338,"name":"uint256","nodeType":"ElementaryTypeName","src":"1173:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1172:9:51"},"scope":16342,"src":"1069:113:51","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":16353,"src":"780:424:51","usedErrors":[]},{"abstract":false,"baseContracts":[],"canonicalName":"IOpsProxyFactory","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":16352,"linearizedBaseContracts":[16352],"name":"IOpsProxyFactory","nameLocation":"1216:16:51","nodeType":"ContractDefinition","nodes":[{"functionSelector":"ded89a7c","id":16351,"implemented":false,"kind":"function","modifiers":[],"name":"getProxyOf","nameLocation":"1248:10:51","nodeType":"FunctionDefinition","parameters":{"id":16345,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16344,"mutability":"mutable","name":"account","nameLocation":"1267:7:51","nodeType":"VariableDeclaration","scope":16351,"src":"1259:15:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16343,"name":"address","nodeType":"ElementaryTypeName","src":"1259:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1258:17:51"},"returnParameters":{"id":16350,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16347,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16351,"src":"1299:7:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16346,"name":"address","nodeType":"ElementaryTypeName","src":"1299:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16349,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16351,"src":"1308:4:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16348,"name":"bool","nodeType":"ElementaryTypeName","src":"1308:4:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1298:15:51"},"scope":16352,"src":"1239:75:51","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":16353,"src":"1206:110:51","usedErrors":[]}],"src":"130:1187:51"},"id":51},"contracts/tests/InitTest.sol":{"ast":{"absolutePath":"contracts/tests/InitTest.sol","exportedSymbols":{"InitTest":[16369],"LibTest":[16414]},"id":16370,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":16354,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:52"},{"absolutePath":"contracts/tests/LibTest.sol","file":"./LibTest.sol","id":16356,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":16370,"sourceUnit":16415,"src":"57:38:52","symbolAliases":[{"foreign":{"id":16355,"name":"LibTest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16414,"src":"65:7:52","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"InitTest","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":16369,"linearizedBaseContracts":[16369],"name":"InitTest","nameLocation":"106:8:52","nodeType":"ContractDefinition","nodes":[{"body":{"id":16367,"nodeType":"Block","src":"160:46:52","statements":[{"expression":{"arguments":[{"id":16364,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16358,"src":"192:6:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":16361,"name":"LibTest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16414,"src":"170:7:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibTest_$16414_$","typeString":"type(library LibTest)"}},"id":16363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"178:13:52","memberName":"_setTestValue","nodeType":"MemberAccess","referencedDeclaration":16403,"src":"170:21:52","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":16365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"170:29:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16366,"nodeType":"ExpressionStatement","src":"170:29:52"}]},"functionSelector":"b7b0422d","id":16368,"implemented":true,"kind":"function","modifiers":[],"name":"init","nameLocation":"130:4:52","nodeType":"FunctionDefinition","parameters":{"id":16359,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16358,"mutability":"mutable","name":"_value","nameLocation":"143:6:52","nodeType":"VariableDeclaration","scope":16368,"src":"135:14:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16357,"name":"uint256","nodeType":"ElementaryTypeName","src":"135:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"134:16:52"},"returnParameters":{"id":16360,"nodeType":"ParameterList","parameters":[],"src":"160:0:52"},"scope":16369,"src":"121:85:52","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":16370,"src":"97:111:52","usedErrors":[]}],"src":"32:177:52"},"id":52},"contracts/tests/LibTest.sol":{"ast":{"absolutePath":"contracts/tests/LibTest.sol","exportedSymbols":{"LibTest":[16414]},"id":16415,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":16371,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"31:23:53"},{"abstract":false,"baseContracts":[],"canonicalName":"LibTest","contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":16414,"linearizedBaseContracts":[16414],"name":"LibTest","nameLocation":"64:7:53","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":16376,"mutability":"constant","name":"STORAGE_POSITION_TEST","nameLocation":"95:21:53","nodeType":"VariableDeclaration","scope":16414,"src":"78:64:53","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16372,"name":"bytes32","nodeType":"ElementaryTypeName","src":"78:7:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"64732e74657374313233","id":16374,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"129:12:53","typeDescriptions":{"typeIdentifier":"t_stringliteral_7375a7f63427bb424f9e0a1d030dd6a96a0933c56047b4d71ac9da62a0b0ce29","typeString":"literal_string \"ds.test123\""},"value":"ds.test123"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_7375a7f63427bb424f9e0a1d030dd6a96a0933c56047b4d71ac9da62a0b0ce29","typeString":"literal_string \"ds.test123\""}],"id":16373,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"119:9:53","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":16375,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"119:23:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"canonicalName":"LibTest.StorageTest","id":16379,"members":[{"constant":false,"id":16378,"mutability":"mutable","name":"value","nameLocation":"186:5:53","nodeType":"VariableDeclaration","scope":16379,"src":"178:13:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16377,"name":"uint256","nodeType":"ElementaryTypeName","src":"178:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"StorageTest","nameLocation":"156:11:53","nodeType":"StructDefinition","scope":16414,"src":"149:49:53","visibility":"public"},{"body":{"id":16390,"nodeType":"Block","src":"274:117:53","statements":[{"assignments":[16386],"declarations":[{"constant":false,"id":16386,"mutability":"mutable","name":"position","nameLocation":"292:8:53","nodeType":"VariableDeclaration","scope":16390,"src":"284:16:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":16385,"name":"bytes32","nodeType":"ElementaryTypeName","src":"284:7:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":16388,"initialValue":{"id":16387,"name":"STORAGE_POSITION_TEST","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16376,"src":"303:21:53","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"284:40:53"},{"AST":{"nodeType":"YulBlock","src":"343:42:53","statements":[{"nodeType":"YulAssignment","src":"357:18:53","value":{"name":"position","nodeType":"YulIdentifier","src":"367:8:53"},"variableNames":[{"name":"s.slot","nodeType":"YulIdentifier","src":"357:6:53"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":16386,"isOffset":false,"isSlot":false,"src":"367:8:53","valueSize":1},{"declaration":16383,"isOffset":false,"isSlot":true,"src":"357:6:53","suffix":"slot","valueSize":1}],"id":16389,"nodeType":"InlineAssembly","src":"334:51:53"}]},"id":16391,"implemented":true,"kind":"function","modifiers":[],"name":"_storageTest","nameLocation":"213:12:53","nodeType":"FunctionDefinition","parameters":{"id":16380,"nodeType":"ParameterList","parameters":[],"src":"225:2:53"},"returnParameters":{"id":16384,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16383,"mutability":"mutable","name":"s","nameLocation":"271:1:53","nodeType":"VariableDeclaration","scope":16391,"src":"251:21:53","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageTest_$16379_storage_ptr","typeString":"struct LibTest.StorageTest"},"typeName":{"id":16382,"nodeType":"UserDefinedTypeName","pathNode":{"id":16381,"name":"StorageTest","nameLocations":["251:11:53"],"nodeType":"IdentifierPath","referencedDeclaration":16379,"src":"251:11:53"},"referencedDeclaration":16379,"src":"251:11:53","typeDescriptions":{"typeIdentifier":"t_struct$_StorageTest_$16379_storage_ptr","typeString":"struct LibTest.StorageTest"}},"visibility":"internal"}],"src":"250:23:53"},"scope":16414,"src":"204:187:53","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":16402,"nodeType":"Block","src":"445:46:53","statements":[{"expression":{"id":16400,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":16396,"name":"_storageTest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16391,"src":"455:12:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageTest_$16379_storage_ptr_$","typeString":"function () pure returns (struct LibTest.StorageTest storage pointer)"}},"id":16397,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"455:14:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageTest_$16379_storage_ptr","typeString":"struct LibTest.StorageTest storage pointer"}},"id":16398,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"470:5:53","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":16378,"src":"455:20:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":16399,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16393,"src":"478:6:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"455:29:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16401,"nodeType":"ExpressionStatement","src":"455:29:53"}]},"id":16403,"implemented":true,"kind":"function","modifiers":[],"name":"_setTestValue","nameLocation":"406:13:53","nodeType":"FunctionDefinition","parameters":{"id":16394,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16393,"mutability":"mutable","name":"_value","nameLocation":"428:6:53","nodeType":"VariableDeclaration","scope":16403,"src":"420:14:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16392,"name":"uint256","nodeType":"ElementaryTypeName","src":"420:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"419:16:53"},"returnParameters":{"id":16395,"nodeType":"ParameterList","parameters":[],"src":"445:0:53"},"scope":16414,"src":"397:94:53","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":16412,"nodeType":"Block","src":"554:44:53","statements":[{"expression":{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":16408,"name":"_storageTest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16391,"src":"571:12:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageTest_$16379_storage_ptr_$","typeString":"function () pure returns (struct LibTest.StorageTest storage pointer)"}},"id":16409,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"571:14:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageTest_$16379_storage_ptr","typeString":"struct LibTest.StorageTest storage pointer"}},"id":16410,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"586:5:53","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":16378,"src":"571:20:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":16407,"id":16411,"nodeType":"Return","src":"564:27:53"}]},"id":16413,"implemented":true,"kind":"function","modifiers":[],"name":"_getTestValue","nameLocation":"506:13:53","nodeType":"FunctionDefinition","parameters":{"id":16404,"nodeType":"ParameterList","parameters":[],"src":"519:2:53"},"returnParameters":{"id":16407,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16406,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16413,"src":"545:7:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16405,"name":"uint256","nodeType":"ElementaryTypeName","src":"545:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"544:9:53"},"scope":16414,"src":"497:101:53","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":16415,"src":"56:544:53","usedErrors":[]}],"src":"31:570:53"},"id":53},"contracts/tests/Test1Facet.sol":{"ast":{"absolutePath":"contracts/tests/Test1Facet.sol","exportedSymbols":{"Test1Facet":[16509]},"id":16510,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":16416,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:54"},{"abstract":false,"baseContracts":[],"canonicalName":"Test1Facet","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":16509,"linearizedBaseContracts":[16509],"name":"Test1Facet","nameLocation":"66:10:54","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"eventSelector":"ab77f9000c19702a713e62164a239e3764dde2ba5265c7551f9a49e0d304530d","id":16420,"name":"TestEvent","nameLocation":"89:9:54","nodeType":"EventDefinition","parameters":{"id":16419,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16418,"indexed":false,"mutability":"mutable","name":"something","nameLocation":"107:9:54","nodeType":"VariableDeclaration","scope":16420,"src":"99:17:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16417,"name":"address","nodeType":"ElementaryTypeName","src":"99:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"98:19:54"},"src":"83:35:54"},{"body":{"id":16423,"nodeType":"Block","src":"155:2:54","statements":[]},"functionSelector":"19e3b533","id":16424,"implemented":true,"kind":"function","modifiers":[],"name":"test1Func1","nameLocation":"133:10:54","nodeType":"FunctionDefinition","parameters":{"id":16421,"nodeType":"ParameterList","parameters":[],"src":"143:2:54"},"returnParameters":{"id":16422,"nodeType":"ParameterList","parameters":[],"src":"155:0:54"},"scope":16509,"src":"124:33:54","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":16427,"nodeType":"Block","src":"194:2:54","statements":[]},"functionSelector":"0716c2ae","id":16428,"implemented":true,"kind":"function","modifiers":[],"name":"test1Func2","nameLocation":"172:10:54","nodeType":"FunctionDefinition","parameters":{"id":16425,"nodeType":"ParameterList","parameters":[],"src":"182:2:54"},"returnParameters":{"id":16426,"nodeType":"ParameterList","parameters":[],"src":"194:0:54"},"scope":16509,"src":"163:33:54","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":16431,"nodeType":"Block","src":"233:2:54","statements":[]},"functionSelector":"11046047","id":16432,"implemented":true,"kind":"function","modifiers":[],"name":"test1Func3","nameLocation":"211:10:54","nodeType":"FunctionDefinition","parameters":{"id":16429,"nodeType":"ParameterList","parameters":[],"src":"221:2:54"},"returnParameters":{"id":16430,"nodeType":"ParameterList","parameters":[],"src":"233:0:54"},"scope":16509,"src":"202:33:54","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":16435,"nodeType":"Block","src":"272:2:54","statements":[]},"functionSelector":"cf3bbe18","id":16436,"implemented":true,"kind":"function","modifiers":[],"name":"test1Func4","nameLocation":"250:10:54","nodeType":"FunctionDefinition","parameters":{"id":16433,"nodeType":"ParameterList","parameters":[],"src":"260:2:54"},"returnParameters":{"id":16434,"nodeType":"ParameterList","parameters":[],"src":"272:0:54"},"scope":16509,"src":"241:33:54","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":16439,"nodeType":"Block","src":"311:2:54","statements":[]},"functionSelector":"24c1d5a7","id":16440,"implemented":true,"kind":"function","modifiers":[],"name":"test1Func5","nameLocation":"289:10:54","nodeType":"FunctionDefinition","parameters":{"id":16437,"nodeType":"ParameterList","parameters":[],"src":"299:2:54"},"returnParameters":{"id":16438,"nodeType":"ParameterList","parameters":[],"src":"311:0:54"},"scope":16509,"src":"280:33:54","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":16443,"nodeType":"Block","src":"350:2:54","statements":[]},"functionSelector":"cbb835f6","id":16444,"implemented":true,"kind":"function","modifiers":[],"name":"test1Func6","nameLocation":"328:10:54","nodeType":"FunctionDefinition","parameters":{"id":16441,"nodeType":"ParameterList","parameters":[],"src":"338:2:54"},"returnParameters":{"id":16442,"nodeType":"ParameterList","parameters":[],"src":"350:0:54"},"scope":16509,"src":"319:33:54","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":16447,"nodeType":"Block","src":"389:2:54","statements":[]},"functionSelector":"71a99d6f","id":16448,"implemented":true,"kind":"function","modifiers":[],"name":"test1Func7","nameLocation":"367:10:54","nodeType":"FunctionDefinition","parameters":{"id":16445,"nodeType":"ParameterList","parameters":[],"src":"377:2:54"},"returnParameters":{"id":16446,"nodeType":"ParameterList","parameters":[],"src":"389:0:54"},"scope":16509,"src":"358:33:54","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":16451,"nodeType":"Block","src":"428:2:54","statements":[]},"functionSelector":"db32da15","id":16452,"implemented":true,"kind":"function","modifiers":[],"name":"test1Func8","nameLocation":"406:10:54","nodeType":"FunctionDefinition","parameters":{"id":16449,"nodeType":"ParameterList","parameters":[],"src":"416:2:54"},"returnParameters":{"id":16450,"nodeType":"ParameterList","parameters":[],"src":"428:0:54"},"scope":16509,"src":"397:33:54","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":16455,"nodeType":"Block","src":"467:2:54","statements":[]},"functionSelector":"cd0bae09","id":16456,"implemented":true,"kind":"function","modifiers":[],"name":"test1Func9","nameLocation":"445:10:54","nodeType":"FunctionDefinition","parameters":{"id":16453,"nodeType":"ParameterList","parameters":[],"src":"455:2:54"},"returnParameters":{"id":16454,"nodeType":"ParameterList","parameters":[],"src":"467:0:54"},"scope":16509,"src":"436:33:54","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":16459,"nodeType":"Block","src":"507:2:54","statements":[]},"functionSelector":"87952d22","id":16460,"implemented":true,"kind":"function","modifiers":[],"name":"test1Func10","nameLocation":"484:11:54","nodeType":"FunctionDefinition","parameters":{"id":16457,"nodeType":"ParameterList","parameters":[],"src":"495:2:54"},"returnParameters":{"id":16458,"nodeType":"ParameterList","parameters":[],"src":"507:0:54"},"scope":16509,"src":"475:34:54","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":16463,"nodeType":"Block","src":"547:2:54","statements":[]},"functionSelector":"50eb3f43","id":16464,"implemented":true,"kind":"function","modifiers":[],"name":"test1Func11","nameLocation":"524:11:54","nodeType":"FunctionDefinition","parameters":{"id":16461,"nodeType":"ParameterList","parameters":[],"src":"535:2:54"},"returnParameters":{"id":16462,"nodeType":"ParameterList","parameters":[],"src":"547:0:54"},"scope":16509,"src":"515:34:54","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":16467,"nodeType":"Block","src":"587:2:54","statements":[]},"functionSelector":"81b5207d","id":16468,"implemented":true,"kind":"function","modifiers":[],"name":"test1Func12","nameLocation":"564:11:54","nodeType":"FunctionDefinition","parameters":{"id":16465,"nodeType":"ParameterList","parameters":[],"src":"575:2:54"},"returnParameters":{"id":16466,"nodeType":"ParameterList","parameters":[],"src":"587:0:54"},"scope":16509,"src":"555:34:54","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":16471,"nodeType":"Block","src":"627:2:54","statements":[]},"functionSelector":"19c841ab","id":16472,"implemented":true,"kind":"function","modifiers":[],"name":"test1Func13","nameLocation":"604:11:54","nodeType":"FunctionDefinition","parameters":{"id":16469,"nodeType":"ParameterList","parameters":[],"src":"615:2:54"},"returnParameters":{"id":16470,"nodeType":"ParameterList","parameters":[],"src":"627:0:54"},"scope":16509,"src":"595:34:54","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":16475,"nodeType":"Block","src":"667:2:54","statements":[]},"functionSelector":"51b68a4d","id":16476,"implemented":true,"kind":"function","modifiers":[],"name":"test1Func14","nameLocation":"644:11:54","nodeType":"FunctionDefinition","parameters":{"id":16473,"nodeType":"ParameterList","parameters":[],"src":"655:2:54"},"returnParameters":{"id":16474,"nodeType":"ParameterList","parameters":[],"src":"667:0:54"},"scope":16509,"src":"635:34:54","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":16479,"nodeType":"Block","src":"707:2:54","statements":[]},"functionSelector":"2cb83248","id":16480,"implemented":true,"kind":"function","modifiers":[],"name":"test1Func15","nameLocation":"684:11:54","nodeType":"FunctionDefinition","parameters":{"id":16477,"nodeType":"ParameterList","parameters":[],"src":"695:2:54"},"returnParameters":{"id":16478,"nodeType":"ParameterList","parameters":[],"src":"707:0:54"},"scope":16509,"src":"675:34:54","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":16483,"nodeType":"Block","src":"747:2:54","statements":[]},"functionSelector":"77e9d0d6","id":16484,"implemented":true,"kind":"function","modifiers":[],"name":"test1Func16","nameLocation":"724:11:54","nodeType":"FunctionDefinition","parameters":{"id":16481,"nodeType":"ParameterList","parameters":[],"src":"735:2:54"},"returnParameters":{"id":16482,"nodeType":"ParameterList","parameters":[],"src":"747:0:54"},"scope":16509,"src":"715:34:54","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":16487,"nodeType":"Block","src":"787:2:54","statements":[]},"functionSelector":"4484b3b9","id":16488,"implemented":true,"kind":"function","modifiers":[],"name":"test1Func17","nameLocation":"764:11:54","nodeType":"FunctionDefinition","parameters":{"id":16485,"nodeType":"ParameterList","parameters":[],"src":"775:2:54"},"returnParameters":{"id":16486,"nodeType":"ParameterList","parameters":[],"src":"787:0:54"},"scope":16509,"src":"755:34:54","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":16491,"nodeType":"Block","src":"827:2:54","statements":[]},"functionSelector":"9abf97aa","id":16492,"implemented":true,"kind":"function","modifiers":[],"name":"test1Func18","nameLocation":"804:11:54","nodeType":"FunctionDefinition","parameters":{"id":16489,"nodeType":"ParameterList","parameters":[],"src":"815:2:54"},"returnParameters":{"id":16490,"nodeType":"ParameterList","parameters":[],"src":"827:0:54"},"scope":16509,"src":"795:34:54","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":16495,"nodeType":"Block","src":"867:2:54","statements":[]},"functionSelector":"292c460d","id":16496,"implemented":true,"kind":"function","modifiers":[],"name":"test1Func19","nameLocation":"844:11:54","nodeType":"FunctionDefinition","parameters":{"id":16493,"nodeType":"ParameterList","parameters":[],"src":"855:2:54"},"returnParameters":{"id":16494,"nodeType":"ParameterList","parameters":[],"src":"867:0:54"},"scope":16509,"src":"835:34:54","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":16499,"nodeType":"Block","src":"907:2:54","statements":[]},"functionSelector":"b0e8fcc7","id":16500,"implemented":true,"kind":"function","modifiers":[],"name":"test1Func20","nameLocation":"884:11:54","nodeType":"FunctionDefinition","parameters":{"id":16497,"nodeType":"ParameterList","parameters":[],"src":"895:2:54"},"returnParameters":{"id":16498,"nodeType":"ParameterList","parameters":[],"src":"907:0:54"},"scope":16509,"src":"875:34:54","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":16507,"nodeType":"Block","src":"1020:2:54","statements":[]},"functionSelector":"01ffc9a7","id":16508,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"924:17:54","nodeType":"FunctionDefinition","parameters":{"id":16503,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16502,"mutability":"mutable","name":"_interfaceID","nameLocation":"949:12:54","nodeType":"VariableDeclaration","scope":16508,"src":"942:19:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":16501,"name":"bytes4","nodeType":"ElementaryTypeName","src":"942:6:54","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"941:21:54"},"returnParameters":{"id":16506,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16505,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16508,"src":"1010:4:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":16504,"name":"bool","nodeType":"ElementaryTypeName","src":"1010:4:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1009:6:54"},"scope":16509,"src":"915:107:54","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":16510,"src":"57:967:54","usedErrors":[]}],"src":"32:993:54"},"id":54},"contracts/tests/Test2Facet.sol":{"ast":{"absolutePath":"contracts/tests/Test2Facet.sol","exportedSymbols":{"Test2Facet":[16592]},"id":16593,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":16511,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:55"},{"abstract":false,"baseContracts":[],"canonicalName":"Test2Facet","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":16592,"linearizedBaseContracts":[16592],"name":"Test2Facet","nameLocation":"66:10:55","nodeType":"ContractDefinition","nodes":[{"body":{"id":16514,"nodeType":"Block","src":"114:2:55","statements":[]},"functionSelector":"ea36b558","id":16515,"implemented":true,"kind":"function","modifiers":[],"name":"test2Func1","nameLocation":"92:10:55","nodeType":"FunctionDefinition","parameters":{"id":16512,"nodeType":"ParameterList","parameters":[],"src":"102:2:55"},"returnParameters":{"id":16513,"nodeType":"ParameterList","parameters":[],"src":"114:0:55"},"scope":16592,"src":"83:33:55","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":16518,"nodeType":"Block","src":"153:2:55","statements":[]},"functionSelector":"e7de23a4","id":16519,"implemented":true,"kind":"function","modifiers":[],"name":"test2Func2","nameLocation":"131:10:55","nodeType":"FunctionDefinition","parameters":{"id":16516,"nodeType":"ParameterList","parameters":[],"src":"141:2:55"},"returnParameters":{"id":16517,"nodeType":"ParameterList","parameters":[],"src":"153:0:55"},"scope":16592,"src":"122:33:55","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":16522,"nodeType":"Block","src":"192:2:55","statements":[]},"functionSelector":"0e4cd7fc","id":16523,"implemented":true,"kind":"function","modifiers":[],"name":"test2Func3","nameLocation":"170:10:55","nodeType":"FunctionDefinition","parameters":{"id":16520,"nodeType":"ParameterList","parameters":[],"src":"180:2:55"},"returnParameters":{"id":16521,"nodeType":"ParameterList","parameters":[],"src":"192:0:55"},"scope":16592,"src":"161:33:55","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":16526,"nodeType":"Block","src":"231:2:55","statements":[]},"functionSelector":"c670641d","id":16527,"implemented":true,"kind":"function","modifiers":[],"name":"test2Func4","nameLocation":"209:10:55","nodeType":"FunctionDefinition","parameters":{"id":16524,"nodeType":"ParameterList","parameters":[],"src":"219:2:55"},"returnParameters":{"id":16525,"nodeType":"ParameterList","parameters":[],"src":"231:0:55"},"scope":16592,"src":"200:33:55","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":16530,"nodeType":"Block","src":"270:2:55","statements":[]},"functionSelector":"d2f0c73e","id":16531,"implemented":true,"kind":"function","modifiers":[],"name":"test2Func5","nameLocation":"248:10:55","nodeType":"FunctionDefinition","parameters":{"id":16528,"nodeType":"ParameterList","parameters":[],"src":"258:2:55"},"returnParameters":{"id":16529,"nodeType":"ParameterList","parameters":[],"src":"270:0:55"},"scope":16592,"src":"239:33:55","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":16534,"nodeType":"Block","src":"309:2:55","statements":[]},"functionSelector":"17fd06e7","id":16535,"implemented":true,"kind":"function","modifiers":[],"name":"test2Func6","nameLocation":"287:10:55","nodeType":"FunctionDefinition","parameters":{"id":16532,"nodeType":"ParameterList","parameters":[],"src":"297:2:55"},"returnParameters":{"id":16533,"nodeType":"ParameterList","parameters":[],"src":"309:0:55"},"scope":16592,"src":"278:33:55","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":16538,"nodeType":"Block","src":"348:2:55","statements":[]},"functionSelector":"ef3f4d78","id":16539,"implemented":true,"kind":"function","modifiers":[],"name":"test2Func7","nameLocation":"326:10:55","nodeType":"FunctionDefinition","parameters":{"id":16536,"nodeType":"ParameterList","parameters":[],"src":"336:2:55"},"returnParameters":{"id":16537,"nodeType":"ParameterList","parameters":[],"src":"348:0:55"},"scope":16592,"src":"317:33:55","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":16542,"nodeType":"Block","src":"387:2:55","statements":[]},"functionSelector":"e5f687b2","id":16543,"implemented":true,"kind":"function","modifiers":[],"name":"test2Func8","nameLocation":"365:10:55","nodeType":"FunctionDefinition","parameters":{"id":16540,"nodeType":"ParameterList","parameters":[],"src":"375:2:55"},"returnParameters":{"id":16541,"nodeType":"ParameterList","parameters":[],"src":"387:0:55"},"scope":16592,"src":"356:33:55","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":16546,"nodeType":"Block","src":"426:2:55","statements":[]},"functionSelector":"caae8f23","id":16547,"implemented":true,"kind":"function","modifiers":[],"name":"test2Func9","nameLocation":"404:10:55","nodeType":"FunctionDefinition","parameters":{"id":16544,"nodeType":"ParameterList","parameters":[],"src":"414:2:55"},"returnParameters":{"id":16545,"nodeType":"ParameterList","parameters":[],"src":"426:0:55"},"scope":16592,"src":"395:33:55","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":16550,"nodeType":"Block","src":"466:2:55","statements":[]},"functionSelector":"8ee8be30","id":16551,"implemented":true,"kind":"function","modifiers":[],"name":"test2Func10","nameLocation":"443:11:55","nodeType":"FunctionDefinition","parameters":{"id":16548,"nodeType":"ParameterList","parameters":[],"src":"454:2:55"},"returnParameters":{"id":16549,"nodeType":"ParameterList","parameters":[],"src":"466:0:55"},"scope":16592,"src":"434:34:55","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":16554,"nodeType":"Block","src":"506:2:55","statements":[]},"functionSelector":"884280a6","id":16555,"implemented":true,"kind":"function","modifiers":[],"name":"test2Func11","nameLocation":"483:11:55","nodeType":"FunctionDefinition","parameters":{"id":16552,"nodeType":"ParameterList","parameters":[],"src":"494:2:55"},"returnParameters":{"id":16553,"nodeType":"ParameterList","parameters":[],"src":"506:0:55"},"scope":16592,"src":"474:34:55","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":16558,"nodeType":"Block","src":"546:2:55","statements":[]},"functionSelector":"ca5fa5c0","id":16559,"implemented":true,"kind":"function","modifiers":[],"name":"test2Func12","nameLocation":"523:11:55","nodeType":"FunctionDefinition","parameters":{"id":16556,"nodeType":"ParameterList","parameters":[],"src":"534:2:55"},"returnParameters":{"id":16557,"nodeType":"ParameterList","parameters":[],"src":"546:0:55"},"scope":16592,"src":"514:34:55","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":16562,"nodeType":"Block","src":"586:2:55","statements":[]},"functionSelector":"6dc16b01","id":16563,"implemented":true,"kind":"function","modifiers":[],"name":"test2Func13","nameLocation":"563:11:55","nodeType":"FunctionDefinition","parameters":{"id":16560,"nodeType":"ParameterList","parameters":[],"src":"574:2:55"},"returnParameters":{"id":16561,"nodeType":"ParameterList","parameters":[],"src":"586:0:55"},"scope":16592,"src":"554:34:55","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":16566,"nodeType":"Block","src":"626:2:55","statements":[]},"functionSelector":"91d0396b","id":16567,"implemented":true,"kind":"function","modifiers":[],"name":"test2Func14","nameLocation":"603:11:55","nodeType":"FunctionDefinition","parameters":{"id":16564,"nodeType":"ParameterList","parameters":[],"src":"614:2:55"},"returnParameters":{"id":16565,"nodeType":"ParameterList","parameters":[],"src":"626:0:55"},"scope":16592,"src":"594:34:55","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":16570,"nodeType":"Block","src":"666:2:55","statements":[]},"functionSelector":"03feeeae","id":16571,"implemented":true,"kind":"function","modifiers":[],"name":"test2Func15","nameLocation":"643:11:55","nodeType":"FunctionDefinition","parameters":{"id":16568,"nodeType":"ParameterList","parameters":[],"src":"654:2:55"},"returnParameters":{"id":16569,"nodeType":"ParameterList","parameters":[],"src":"666:0:55"},"scope":16592,"src":"634:34:55","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":16574,"nodeType":"Block","src":"706:2:55","statements":[]},"functionSelector":"2e463958","id":16575,"implemented":true,"kind":"function","modifiers":[],"name":"test2Func16","nameLocation":"683:11:55","nodeType":"FunctionDefinition","parameters":{"id":16572,"nodeType":"ParameterList","parameters":[],"src":"694:2:55"},"returnParameters":{"id":16573,"nodeType":"ParameterList","parameters":[],"src":"706:0:55"},"scope":16592,"src":"674:34:55","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":16578,"nodeType":"Block","src":"746:2:55","statements":[]},"functionSelector":"14884309","id":16579,"implemented":true,"kind":"function","modifiers":[],"name":"test2Func17","nameLocation":"723:11:55","nodeType":"FunctionDefinition","parameters":{"id":16576,"nodeType":"ParameterList","parameters":[],"src":"734:2:55"},"returnParameters":{"id":16577,"nodeType":"ParameterList","parameters":[],"src":"746:0:55"},"scope":16592,"src":"714:34:55","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":16582,"nodeType":"Block","src":"786:2:55","statements":[]},"functionSelector":"0c103a93","id":16583,"implemented":true,"kind":"function","modifiers":[],"name":"test2Func18","nameLocation":"763:11:55","nodeType":"FunctionDefinition","parameters":{"id":16580,"nodeType":"ParameterList","parameters":[],"src":"774:2:55"},"returnParameters":{"id":16581,"nodeType":"ParameterList","parameters":[],"src":"786:0:55"},"scope":16592,"src":"754:34:55","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":16586,"nodeType":"Block","src":"826:2:55","statements":[]},"functionSelector":"5fd6312b","id":16587,"implemented":true,"kind":"function","modifiers":[],"name":"test2Func19","nameLocation":"803:11:55","nodeType":"FunctionDefinition","parameters":{"id":16584,"nodeType":"ParameterList","parameters":[],"src":"814:2:55"},"returnParameters":{"id":16585,"nodeType":"ParameterList","parameters":[],"src":"826:0:55"},"scope":16592,"src":"794:34:55","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":16590,"nodeType":"Block","src":"866:2:55","statements":[]},"functionSelector":"792a8e2e","id":16591,"implemented":true,"kind":"function","modifiers":[],"name":"test2Func20","nameLocation":"843:11:55","nodeType":"FunctionDefinition","parameters":{"id":16588,"nodeType":"ParameterList","parameters":[],"src":"854:2:55"},"returnParameters":{"id":16589,"nodeType":"ParameterList","parameters":[],"src":"866:0:55"},"scope":16592,"src":"834:34:55","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":16593,"src":"57:813:55","usedErrors":[]}],"src":"32:839:55"},"id":55},"contracts/tests/Test3Facet.sol":{"ast":{"absolutePath":"contracts/tests/Test3Facet.sol","exportedSymbols":{"Test3Facet":[16607]},"id":16608,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":16594,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:56"},{"abstract":false,"baseContracts":[],"canonicalName":"Test3Facet","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":16607,"linearizedBaseContracts":[16607],"name":"Test3Facet","nameLocation":"66:10:56","nodeType":"ContractDefinition","nodes":[{"body":{"id":16601,"nodeType":"Block","src":"137:25:56","statements":[{"expression":{"hexValue":"31","id":16599,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"154:1:56","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"functionReturnParameters":16598,"id":16600,"nodeType":"Return","src":"147:8:56"}]},"functionSelector":"ebfa4bcc","id":16602,"implemented":true,"kind":"function","modifiers":[],"name":"test3Func1","nameLocation":"92:10:56","nodeType":"FunctionDefinition","parameters":{"id":16595,"nodeType":"ParameterList","parameters":[],"src":"102:2:56"},"returnParameters":{"id":16598,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16597,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16602,"src":"128:7:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16596,"name":"uint256","nodeType":"ElementaryTypeName","src":"128:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"127:9:56"},"scope":16607,"src":"83:79:56","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":{"id":16605,"nodeType":"Block","src":"199:2:56","statements":[]},"functionSelector":"e7bf600f","id":16606,"implemented":true,"kind":"function","modifiers":[],"name":"test3Func2","nameLocation":"177:10:56","nodeType":"FunctionDefinition","parameters":{"id":16603,"nodeType":"ParameterList","parameters":[],"src":"187:2:56"},"returnParameters":{"id":16604,"nodeType":"ParameterList","parameters":[],"src":"199:0:56"},"scope":16607,"src":"168:33:56","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":16608,"src":"57:146:56","usedErrors":[]}],"src":"32:172:56"},"id":56},"contracts/tests/Test3Facet2.sol":{"ast":{"absolutePath":"contracts/tests/Test3Facet2.sol","exportedSymbols":{"Test3Facet2":[16618]},"id":16619,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":16609,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:57"},{"abstract":false,"baseContracts":[],"canonicalName":"Test3Facet2","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":16618,"linearizedBaseContracts":[16618],"name":"Test3Facet2","nameLocation":"66:11:57","nodeType":"ContractDefinition","nodes":[{"body":{"id":16616,"nodeType":"Block","src":"138:25:57","statements":[{"expression":{"hexValue":"32","id":16614,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"155:1:57","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"functionReturnParameters":16613,"id":16615,"nodeType":"Return","src":"148:8:57"}]},"functionSelector":"ebfa4bcc","id":16617,"implemented":true,"kind":"function","modifiers":[],"name":"test3Func1","nameLocation":"93:10:57","nodeType":"FunctionDefinition","parameters":{"id":16610,"nodeType":"ParameterList","parameters":[],"src":"103:2:57"},"returnParameters":{"id":16613,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16612,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16617,"src":"129:7:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16611,"name":"uint256","nodeType":"ElementaryTypeName","src":"129:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"128:9:57"},"scope":16618,"src":"84:79:57","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":16619,"src":"57:108:57","usedErrors":[]}],"src":"32:134:57"},"id":57},"contracts/tests/Test4Facet.sol":{"ast":{"absolutePath":"contracts/tests/Test4Facet.sol","exportedSymbols":{"Test4Facet":[16629]},"id":16630,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":16620,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:58"},{"abstract":false,"baseContracts":[],"canonicalName":"Test4Facet","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":16629,"linearizedBaseContracts":[16629],"name":"Test4Facet","nameLocation":"66:10:58","nodeType":"ContractDefinition","nodes":[{"body":{"id":16623,"nodeType":"Block","src":"114:2:58","statements":[]},"functionSelector":"39fcc3fd","id":16624,"implemented":true,"kind":"function","modifiers":[],"name":"test4Func1","nameLocation":"92:10:58","nodeType":"FunctionDefinition","parameters":{"id":16621,"nodeType":"ParameterList","parameters":[],"src":"102:2:58"},"returnParameters":{"id":16622,"nodeType":"ParameterList","parameters":[],"src":"114:0:58"},"scope":16629,"src":"83:33:58","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":16627,"nodeType":"Block","src":"153:2:58","statements":[]},"functionSelector":"83e12652","id":16628,"implemented":true,"kind":"function","modifiers":[],"name":"test4Func2","nameLocation":"131:10:58","nodeType":"FunctionDefinition","parameters":{"id":16625,"nodeType":"ParameterList","parameters":[],"src":"141:2:58"},"returnParameters":{"id":16626,"nodeType":"ParameterList","parameters":[],"src":"153:0:58"},"scope":16629,"src":"122:33:58","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":16630,"src":"57:100:58","usedErrors":[]}],"src":"32:126:58"},"id":58},"contracts/tests/Test5Facet.sol":{"ast":{"absolutePath":"contracts/tests/Test5Facet.sol","exportedSymbols":{"LibTest":[16414],"Test5Facet":[16664]},"id":16665,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":16631,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"32:23:59"},{"absolutePath":"contracts/tests/LibTest.sol","file":"./LibTest.sol","id":16633,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":16665,"sourceUnit":16415,"src":"57:38:59","symbolAliases":[{"foreign":{"id":16632,"name":"LibTest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16414,"src":"65:7:59","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"Test5Facet","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":16664,"linearizedBaseContracts":[16664],"name":"Test5Facet","nameLocation":"106:10:59","nodeType":"ContractDefinition","nodes":[{"body":{"id":16636,"nodeType":"Block","src":"154:2:59","statements":[]},"functionSelector":"ae9aad3e","id":16637,"implemented":true,"kind":"function","modifiers":[],"name":"test5Func1","nameLocation":"132:10:59","nodeType":"FunctionDefinition","parameters":{"id":16634,"nodeType":"ParameterList","parameters":[],"src":"142:2:59"},"returnParameters":{"id":16635,"nodeType":"ParameterList","parameters":[],"src":"154:0:59"},"scope":16664,"src":"123:33:59","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":16640,"nodeType":"Block","src":"193:2:59","statements":[]},"functionSelector":"fbf5c5aa","id":16641,"implemented":true,"kind":"function","modifiers":[],"name":"test5Func2","nameLocation":"171:10:59","nodeType":"FunctionDefinition","parameters":{"id":16638,"nodeType":"ParameterList","parameters":[],"src":"181:2:59"},"returnParameters":{"id":16639,"nodeType":"ParameterList","parameters":[],"src":"193:0:59"},"scope":16664,"src":"162:33:59","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":16652,"nodeType":"Block","src":"244:46:59","statements":[{"expression":{"arguments":[{"id":16649,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16643,"src":"276:6:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":16646,"name":"LibTest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16414,"src":"254:7:59","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibTest_$16414_$","typeString":"type(library LibTest)"}},"id":16648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"262:13:59","memberName":"_setTestValue","nodeType":"MemberAccess","referencedDeclaration":16403,"src":"254:21:59","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":16650,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"254:29:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16651,"nodeType":"ExpressionStatement","src":"254:29:59"}]},"functionSelector":"55241077","id":16653,"implemented":true,"kind":"function","modifiers":[],"name":"setValue","nameLocation":"210:8:59","nodeType":"FunctionDefinition","parameters":{"id":16644,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16643,"mutability":"mutable","name":"_value","nameLocation":"227:6:59","nodeType":"VariableDeclaration","scope":16653,"src":"219:14:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16642,"name":"uint256","nodeType":"ElementaryTypeName","src":"219:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"218:16:59"},"returnParameters":{"id":16645,"nodeType":"ParameterList","parameters":[],"src":"244:0:59"},"scope":16664,"src":"201:89:59","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":16662,"nodeType":"Block","src":"348:47:59","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":16658,"name":"LibTest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16414,"src":"365:7:59","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibTest_$16414_$","typeString":"type(library LibTest)"}},"id":16659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"373:13:59","memberName":"_getTestValue","nodeType":"MemberAccess","referencedDeclaration":16413,"src":"365:21:59","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":16660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"365:23:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":16657,"id":16661,"nodeType":"Return","src":"358:30:59"}]},"functionSelector":"20965255","id":16663,"implemented":true,"kind":"function","modifiers":[],"name":"getValue","nameLocation":"305:8:59","nodeType":"FunctionDefinition","parameters":{"id":16654,"nodeType":"ParameterList","parameters":[],"src":"313:2:59"},"returnParameters":{"id":16657,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16656,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":16663,"src":"339:7:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16655,"name":"uint256","nodeType":"ElementaryTypeName","src":"339:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"338:9:59"},"scope":16664,"src":"296:99:59","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":16665,"src":"97:300:59","usedErrors":[]}],"src":"32:366:59"},"id":59},"contracts/upgrades/DiamondInit.sol":{"ast":{"absolutePath":"contracts/upgrades/DiamondInit.sol","exportedSymbols":{"DiamondInit":[16869],"IAccessControl":[11802],"IAutomate":[11354],"IControl":[11551],"ICut":[11840],"IERC165":[11851],"IFlow":[11681],"ILoupe":[11892],"ISession":[11752],"ISuperToken":[7015],"IUtility":[11905],"LibAutomate":[12310],"LibControl":[13307],"LibDiamond":[16228]},"id":16870,"license":"BUSL-1.1","nodeType":"SourceUnit","nodes":[{"id":16666,"literals":["solidity","^","0.8",".9"],"nodeType":"PragmaDirective","src":"37:23:60"},{"absolutePath":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol","file":"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol","id":16668,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":16870,"sourceUnit":7668,"src":"62:115:60","symbolAliases":[{"foreign":{"id":16667,"name":"ISuperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7015,"src":"70:11:60","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/libraries/utils/LibDiamond.sol","file":"../libraries/utils/LibDiamond.sol","id":16670,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":16870,"sourceUnit":16229,"src":"179:61:60","symbolAliases":[{"foreign":{"id":16669,"name":"LibDiamond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16228,"src":"187:10:60","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/libraries/core/LibAutomate.sol","file":"../libraries/core/LibAutomate.sol","id":16672,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":16870,"sourceUnit":12311,"src":"241:62:60","symbolAliases":[{"foreign":{"id":16671,"name":"LibAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12310,"src":"249:11:60","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/libraries/core/LibControl.sol","file":"../libraries/core/LibControl.sol","id":16674,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":16870,"sourceUnit":13308,"src":"304:60:60","symbolAliases":[{"foreign":{"id":16673,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"312:10:60","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/utils/IERC165.sol","file":"../interfaces/utils/IERC165.sol","id":16676,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":16870,"sourceUnit":11852,"src":"365:56:60","symbolAliases":[{"foreign":{"id":16675,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11851,"src":"373:7:60","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/utils/ICut.sol","file":"../interfaces/utils/ICut.sol","id":16678,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":16870,"sourceUnit":11841,"src":"422:50:60","symbolAliases":[{"foreign":{"id":16677,"name":"ICut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11840,"src":"430:4:60","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/utils/ILoupe.sol","file":"../interfaces/utils/ILoupe.sol","id":16680,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":16870,"sourceUnit":11893,"src":"473:54:60","symbolAliases":[{"foreign":{"id":16679,"name":"ILoupe","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11892,"src":"481:6:60","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/utils/IAccessControl.sol","file":"../interfaces/utils/IAccessControl.sol","id":16682,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":16870,"sourceUnit":11803,"src":"528:70:60","symbolAliases":[{"foreign":{"id":16681,"name":"IAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11802,"src":"536:14:60","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/utils/IUtility.sol","file":"../interfaces/utils/IUtility.sol","id":16684,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":16870,"sourceUnit":11906,"src":"599:58:60","symbolAliases":[{"foreign":{"id":16683,"name":"IUtility","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11905,"src":"607:8:60","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/core/IAutomate.sol","file":"../interfaces/core/IAutomate.sol","id":16686,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":16870,"sourceUnit":11355,"src":"658:59:60","symbolAliases":[{"foreign":{"id":16685,"name":"IAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11354,"src":"666:9:60","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/core/IControl.sol","file":"../interfaces/core/IControl.sol","id":16688,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":16870,"sourceUnit":11552,"src":"718:57:60","symbolAliases":[{"foreign":{"id":16687,"name":"IControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11551,"src":"726:8:60","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/core/ISession.sol","file":"../interfaces/core/ISession.sol","id":16690,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":16870,"sourceUnit":11753,"src":"776:57:60","symbolAliases":[{"foreign":{"id":16689,"name":"ISession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11752,"src":"784:8:60","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/core/IFlow.sol","file":"../interfaces/core/IFlow.sol","id":16692,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":16870,"sourceUnit":11682,"src":"834:51:60","symbolAliases":[{"foreign":{"id":16691,"name":"IFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11681,"src":"842:5:60","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"DiamondInit","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":16869,"linearizedBaseContracts":[16869],"name":"DiamondInit","nameLocation":"896:11:60","nodeType":"ContractDefinition","nodes":[{"body":{"id":16867,"nodeType":"Block","src":"1186:1115:60","statements":[{"assignments":[16712],"declarations":[{"constant":false,"id":16712,"mutability":"mutable","name":"s","nameLocation":"1230:1:60","nodeType":"VariableDeclaration","scope":16867,"src":"1196:35:60","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond"},"typeName":{"id":16711,"nodeType":"UserDefinedTypeName","pathNode":{"id":16710,"name":"LibDiamond.StorageDiamond","nameLocations":["1196:10:60","1207:14:60"],"nodeType":"IdentifierPath","referencedDeclaration":15523,"src":"1196:25:60"},"referencedDeclaration":15523,"src":"1196:25:60","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond"}},"visibility":"internal"}],"id":16716,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":16713,"name":"LibDiamond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16228,"src":"1234:10:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibDiamond_$16228_$","typeString":"type(library LibDiamond)"}},"id":16714,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1245:15:60","memberName":"_storageDiamond","nodeType":"MemberAccess","referencedDeclaration":15535,"src":"1234:26:60","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_struct$_StorageDiamond_$15523_storage_ptr_$","typeString":"function () pure returns (struct LibDiamond.StorageDiamond storage pointer)"}},"id":16715,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1234:28:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"1196:66:60"},{"expression":{"id":16726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":16717,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16712,"src":"1272:1:60","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":16723,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1274:19:60","memberName":"supportedInterfaces","nodeType":"MemberAccess","referencedDeclaration":15522,"src":"1272:21:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_bool_$","typeString":"mapping(bytes4 => bool)"}},"id":16724,"indexExpression":{"expression":{"arguments":[{"id":16720,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11851,"src":"1299:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$11851_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$11851_$","typeString":"type(contract IERC165)"}],"id":16719,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1294:4:60","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":16721,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1294:13:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$11851","typeString":"type(contract IERC165)"}},"id":16722,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1308:11:60","memberName":"interfaceId","nodeType":"MemberAccess","src":"1294:25:60","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1272:48:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":16725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1323:4:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"1272:55:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16727,"nodeType":"ExpressionStatement","src":"1272:55:60"},{"expression":{"id":16737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":16728,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16712,"src":"1337:1:60","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":16734,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1339:19:60","memberName":"supportedInterfaces","nodeType":"MemberAccess","referencedDeclaration":15522,"src":"1337:21:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_bool_$","typeString":"mapping(bytes4 => bool)"}},"id":16735,"indexExpression":{"expression":{"arguments":[{"id":16731,"name":"ICut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11840,"src":"1364:4:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ICut_$11840_$","typeString":"type(contract ICut)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_ICut_$11840_$","typeString":"type(contract ICut)"}],"id":16730,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1359:4:60","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":16732,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1359:10:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_ICut_$11840","typeString":"type(contract ICut)"}},"id":16733,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1370:11:60","memberName":"interfaceId","nodeType":"MemberAccess","src":"1359:22:60","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1337:45:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":16736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1385:4:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"1337:52:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16738,"nodeType":"ExpressionStatement","src":"1337:52:60"},{"expression":{"id":16748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":16739,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16712,"src":"1399:1:60","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":16745,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1401:19:60","memberName":"supportedInterfaces","nodeType":"MemberAccess","referencedDeclaration":15522,"src":"1399:21:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_bool_$","typeString":"mapping(bytes4 => bool)"}},"id":16746,"indexExpression":{"expression":{"arguments":[{"id":16742,"name":"ILoupe","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11892,"src":"1426:6:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ILoupe_$11892_$","typeString":"type(contract ILoupe)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_ILoupe_$11892_$","typeString":"type(contract ILoupe)"}],"id":16741,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1421:4:60","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":16743,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1421:12:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_ILoupe_$11892","typeString":"type(contract ILoupe)"}},"id":16744,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1434:11:60","memberName":"interfaceId","nodeType":"MemberAccess","src":"1421:24:60","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1399:47:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":16747,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1449:4:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"1399:54:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16749,"nodeType":"ExpressionStatement","src":"1399:54:60"},{"expression":{"id":16759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":16750,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16712,"src":"1463:1:60","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":16756,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1465:19:60","memberName":"supportedInterfaces","nodeType":"MemberAccess","referencedDeclaration":15522,"src":"1463:21:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_bool_$","typeString":"mapping(bytes4 => bool)"}},"id":16757,"indexExpression":{"expression":{"arguments":[{"id":16753,"name":"IAccessControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11802,"src":"1490:14:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAccessControl_$11802_$","typeString":"type(contract IAccessControl)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IAccessControl_$11802_$","typeString":"type(contract IAccessControl)"}],"id":16752,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1485:4:60","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":16754,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1485:20:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IAccessControl_$11802","typeString":"type(contract IAccessControl)"}},"id":16755,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1506:11:60","memberName":"interfaceId","nodeType":"MemberAccess","src":"1485:32:60","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1463:55:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":16758,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1521:4:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"1463:62:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16760,"nodeType":"ExpressionStatement","src":"1463:62:60"},{"expression":{"id":16770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":16761,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16712,"src":"1535:1:60","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":16767,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1537:19:60","memberName":"supportedInterfaces","nodeType":"MemberAccess","referencedDeclaration":15522,"src":"1535:21:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_bool_$","typeString":"mapping(bytes4 => bool)"}},"id":16768,"indexExpression":{"expression":{"arguments":[{"id":16764,"name":"IUtility","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11905,"src":"1562:8:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IUtility_$11905_$","typeString":"type(contract IUtility)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IUtility_$11905_$","typeString":"type(contract IUtility)"}],"id":16763,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1557:4:60","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":16765,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1557:14:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IUtility_$11905","typeString":"type(contract IUtility)"}},"id":16766,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1572:11:60","memberName":"interfaceId","nodeType":"MemberAccess","src":"1557:26:60","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1535:49:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":16769,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1587:4:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"1535:56:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16771,"nodeType":"ExpressionStatement","src":"1535:56:60"},{"expression":{"id":16781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":16772,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16712,"src":"1601:1:60","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":16778,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1603:19:60","memberName":"supportedInterfaces","nodeType":"MemberAccess","referencedDeclaration":15522,"src":"1601:21:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_bool_$","typeString":"mapping(bytes4 => bool)"}},"id":16779,"indexExpression":{"expression":{"arguments":[{"id":16775,"name":"IAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11354,"src":"1628:9:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAutomate_$11354_$","typeString":"type(contract IAutomate)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IAutomate_$11354_$","typeString":"type(contract IAutomate)"}],"id":16774,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1623:4:60","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":16776,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1623:15:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IAutomate_$11354","typeString":"type(contract IAutomate)"}},"id":16777,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1639:11:60","memberName":"interfaceId","nodeType":"MemberAccess","src":"1623:27:60","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1601:50:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":16780,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1654:4:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"1601:57:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16782,"nodeType":"ExpressionStatement","src":"1601:57:60"},{"expression":{"id":16792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":16783,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16712,"src":"1668:1:60","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":16789,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1670:19:60","memberName":"supportedInterfaces","nodeType":"MemberAccess","referencedDeclaration":15522,"src":"1668:21:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_bool_$","typeString":"mapping(bytes4 => bool)"}},"id":16790,"indexExpression":{"expression":{"arguments":[{"id":16786,"name":"IControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11551,"src":"1695:8:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IControl_$11551_$","typeString":"type(contract IControl)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IControl_$11551_$","typeString":"type(contract IControl)"}],"id":16785,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1690:4:60","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":16787,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1690:14:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IControl_$11551","typeString":"type(contract IControl)"}},"id":16788,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1705:11:60","memberName":"interfaceId","nodeType":"MemberAccess","src":"1690:26:60","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1668:49:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":16791,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1720:4:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"1668:56:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16793,"nodeType":"ExpressionStatement","src":"1668:56:60"},{"expression":{"id":16803,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":16794,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16712,"src":"1734:1:60","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":16800,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1736:19:60","memberName":"supportedInterfaces","nodeType":"MemberAccess","referencedDeclaration":15522,"src":"1734:21:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_bool_$","typeString":"mapping(bytes4 => bool)"}},"id":16801,"indexExpression":{"expression":{"arguments":[{"id":16797,"name":"ISession","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11752,"src":"1761:8:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISession_$11752_$","typeString":"type(contract ISession)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_ISession_$11752_$","typeString":"type(contract ISession)"}],"id":16796,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1756:4:60","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":16798,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1756:14:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_ISession_$11752","typeString":"type(contract ISession)"}},"id":16799,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1771:11:60","memberName":"interfaceId","nodeType":"MemberAccess","src":"1756:26:60","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1734:49:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":16802,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1786:4:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"1734:56:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16804,"nodeType":"ExpressionStatement","src":"1734:56:60"},{"expression":{"id":16814,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":16805,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16712,"src":"1800:1:60","typeDescriptions":{"typeIdentifier":"t_struct$_StorageDiamond_$15523_storage_ptr","typeString":"struct LibDiamond.StorageDiamond storage pointer"}},"id":16811,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1802:19:60","memberName":"supportedInterfaces","nodeType":"MemberAccess","referencedDeclaration":15522,"src":"1800:21:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes4_$_t_bool_$","typeString":"mapping(bytes4 => bool)"}},"id":16812,"indexExpression":{"expression":{"arguments":[{"id":16808,"name":"IFlow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11681,"src":"1827:5:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IFlow_$11681_$","typeString":"type(contract IFlow)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IFlow_$11681_$","typeString":"type(contract IFlow)"}],"id":16807,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1822:4:60","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":16809,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1822:11:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IFlow_$11681","typeString":"type(contract IFlow)"}},"id":16810,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1834:11:60","memberName":"interfaceId","nodeType":"MemberAccess","src":"1822:23:60","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1800:46:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":16813,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1849:4:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"1800:53:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16815,"nodeType":"ExpressionStatement","src":"1800:53:60"},{"expression":{"arguments":[{"id":16819,"name":"_autobot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16694,"src":"1896:8:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":16816,"name":"LibAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12310,"src":"1864:11:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAutomate_$12310_$","typeString":"type(library LibAutomate)"}},"id":16818,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1876:19:60","memberName":"_setGelatoContracts","nodeType":"MemberAccess","referencedDeclaration":12177,"src":"1864:31:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":16820,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1864:41:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16821,"nodeType":"ExpressionStatement","src":"1864:41:60"},{"expression":{"arguments":[{"id":16825,"name":"_minimumAppGelatoBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16696,"src":"1955:24:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":16822,"name":"LibAutomate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12310,"src":"1915:11:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibAutomate_$12310_$","typeString":"type(library LibAutomate)"}},"id":16824,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1927:27:60","memberName":"_setMinimumAppGelatoBalance","nodeType":"MemberAccess","referencedDeclaration":12189,"src":"1915:39:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":16826,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1915:65:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16827,"nodeType":"ExpressionStatement","src":"1915:65:60"},{"expression":{"arguments":[{"id":16831,"name":"_minimumEndDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16698,"src":"2024:19:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":16828,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"1990:10:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$13307_$","typeString":"type(library LibControl)"}},"id":16830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2001:22:60","memberName":"_setMinimumEndDuration","nodeType":"MemberAccess","referencedDeclaration":12814,"src":"1990:33:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":16832,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1990:54:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16833,"nodeType":"ExpressionStatement","src":"1990:54:60"},{"expression":{"arguments":[{"id":16837,"name":"_minimumLifespan","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16700,"src":"2085:16:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":16834,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"2054:10:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$13307_$","typeString":"type(library LibControl)"}},"id":16836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2065:19:60","memberName":"_setMinimumLifespan","nodeType":"MemberAccess","referencedDeclaration":12826,"src":"2054:30:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":16838,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2054:48:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16839,"nodeType":"ExpressionStatement","src":"2054:48:60"},{"expression":{"arguments":[{"id":16843,"name":"_stBufferDurationInSecond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16702,"src":"2142:25:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":16840,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"2112:10:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$13307_$","typeString":"type(library LibControl)"}},"id":16842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2123:18:60","memberName":"_setSTBufferAmount","nodeType":"MemberAccess","referencedDeclaration":12838,"src":"2112:29:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":16844,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2112:56:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16845,"nodeType":"ExpressionStatement","src":"2112:56:60"},{"body":{"id":16865,"nodeType":"Block","src":"2228:67:60","statements":[{"expression":{"arguments":[{"baseExpression":{"id":16860,"name":"_superTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16705,"src":"2268:12:60","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":16862,"indexExpression":{"id":16861,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16847,"src":"2281:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2268:15:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":16857,"name":"LibControl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13307,"src":"2242:10:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LibControl_$13307_$","typeString":"type(library LibControl)"}},"id":16859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2253:14:60","memberName":"_addSuperToken","nodeType":"MemberAccess","referencedDeclaration":12852,"src":"2242:25:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":16863,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2242:42:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":16864,"nodeType":"ExpressionStatement","src":"2242:42:60"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":16853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":16850,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16847,"src":"2198:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":16851,"name":"_superTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16705,"src":"2202:12:60","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":16852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2215:6:60","memberName":"length","nodeType":"MemberAccess","src":"2202:19:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2198:23:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":16866,"initializationExpression":{"assignments":[16847],"declarations":[{"constant":false,"id":16847,"mutability":"mutable","name":"i","nameLocation":"2191:1:60","nodeType":"VariableDeclaration","scope":16866,"src":"2183:9:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16846,"name":"uint256","nodeType":"ElementaryTypeName","src":"2183:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":16849,"initialValue":{"hexValue":"30","id":16848,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2195:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2183:13:60"},"loopExpression":{"expression":{"id":16855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2223:3:60","subExpression":{"id":16854,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":16847,"src":"2223:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":16856,"nodeType":"ExpressionStatement","src":"2223:3:60"},"nodeType":"ForStatement","src":"2178:117:60"}]},"functionSelector":"0629b938","id":16868,"implemented":true,"kind":"function","modifiers":[],"name":"init","nameLocation":"923:4:60","nodeType":"FunctionDefinition","parameters":{"id":16706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":16694,"mutability":"mutable","name":"_autobot","nameLocation":"945:8:60","nodeType":"VariableDeclaration","scope":16868,"src":"937:16:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16693,"name":"address","nodeType":"ElementaryTypeName","src":"937:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":16696,"mutability":"mutable","name":"_minimumAppGelatoBalance","nameLocation":"971:24:60","nodeType":"VariableDeclaration","scope":16868,"src":"963:32:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16695,"name":"uint256","nodeType":"ElementaryTypeName","src":"963:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16698,"mutability":"mutable","name":"_minimumEndDuration","nameLocation":"1013:19:60","nodeType":"VariableDeclaration","scope":16868,"src":"1005:27:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16697,"name":"uint256","nodeType":"ElementaryTypeName","src":"1005:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16700,"mutability":"mutable","name":"_minimumLifespan","nameLocation":"1061:16:60","nodeType":"VariableDeclaration","scope":16868,"src":"1053:24:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16699,"name":"uint256","nodeType":"ElementaryTypeName","src":"1053:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16702,"mutability":"mutable","name":"_stBufferDurationInSecond","nameLocation":"1106:25:60","nodeType":"VariableDeclaration","scope":16868,"src":"1098:33:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":16701,"name":"uint256","nodeType":"ElementaryTypeName","src":"1098:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16705,"mutability":"mutable","name":"_superTokens","nameLocation":"1158:12:60","nodeType":"VariableDeclaration","scope":16868,"src":"1141:29:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":16703,"name":"address","nodeType":"ElementaryTypeName","src":"1141:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":16704,"nodeType":"ArrayTypeName","src":"1141:9:60","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"927:249:60"},"returnParameters":{"id":16707,"nodeType":"ParameterList","parameters":[],"src":"1186:0:60"},"scope":16869,"src":"914:1387:60","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":16870,"src":"887:1416:60","usedErrors":[]}],"src":"37:2267:60"},"id":60}},"contracts":{"@openzeppelin/contracts/interfaces/IERC1271.sol":{"IERC1271":{"abi":[{"inputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"isValidSignature","outputs":[{"internalType":"bytes4","name":"magicValue","type":"bytes4"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"isValidSignature(bytes32,bytes)":"1626ba7e"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"magicValue\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC1271 standard signature validation method for contracts as defined in https://eips.ethereum.org/EIPS/eip-1271[ERC-1271]. _Available since v4.1._\",\"kind\":\"dev\",\"methods\":{\"isValidSignature(bytes32,bytes)\":{\"details\":\"Should return whether the signature provided is valid for the provided data\",\"params\":{\"hash\":\"Hash of the data to be signed\",\"signature\":\"Signature byte array associated with _data\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/IERC1271.sol\":\"IERC1271\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1271.sol\":{\"keccak256\":\"0x0705a4b1b86d7b0bd8432118f226ba139c44b9dcaba0a6eafba2dd7d0639c544\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c45b821ef9e882e57c256697a152e108f0f2ad6997609af8904cae99c9bd422e\",\"dweb:/ipfs/QmRKCJW6jjzR5UYZcLpGnhEJ75UVbH6EHkEa49sWx2SKng\"]}},\"version\":1}"}},"@openzeppelin/contracts/security/ReentrancyGuard.sol":{"ReentrancyGuard":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Contract module that helps prevent reentrant calls to a function. Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier available, which can be applied to functions to make sure there are no nested (reentrant) calls to them. Note that because there is a single `nonReentrant` guard, functions marked as `nonReentrant` may not call one another. This can be worked around by making those functions `private`, and then adding `external` `nonReentrant` entry points to them. TIP: If you would like to learn more about reentrancy and alternative ways to protect against it, check out our blog post https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/security/ReentrancyGuard.sol\":\"ReentrancyGuard\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/security/ReentrancyGuard.sol\":{\"keccak256\":\"0x190dd6f8d592b7e4e930feb7f4313aeb8e1c4ad3154c27ce1cf6a512fc30d8cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ce8dfb62d0c4fa260d6eec8f1cd47f5f2a044e11bde5b31d18072fa6e7d9010\",\"dweb:/ipfs/QmTyFztU3tLEcEDnqqiaW4UJetqsU77LXc6pjc9oTXCK5u\"]}},\"version\":1}"}},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"IERC20":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 standard as defined in the EIP.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]}},\"version\":1}"}},"@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol":{"IERC20Permit":{"abi":[{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in https://eips.ethereum.org/EIPS/eip-2612[EIP-2612]. Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't need to send a transaction, and thus is not required to hold Ether at all.\",\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\"},\"nonces(address)\":{\"details\":\"Returns the current nonce for `owner`. This value must be included whenever a signature is generated for {permit}. Every successful call to {permit} increases ``owner``'s nonce by one. This prevents a signature from being used multiple times.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Sets `value` as the allowance of `spender` over ``owner``'s tokens, given ``owner``'s signed approval. IMPORTANT: The same issues {IERC20-approve} has related to transaction ordering also apply here. Emits an {Approval} event. Requirements: - `spender` cannot be the zero address. - `deadline` must be a timestamp in the future. - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` over the EIP712-formatted function arguments. - the signature must use ``owner``'s current nonce (see {nonces}). For more information on the signature format, see the https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section].\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol\":\"IERC20Permit\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol\":{\"keccak256\":\"0xf41ca991f30855bf80ffd11e9347856a517b977f0a6c2d52e6421a99b7840329\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2717fd2bdac99daa960a6de500754ea1b932093c946388c381da48658234b95\",\"dweb:/ipfs/QmP6QVMn6UeA3ByahyJbYQr5M6coHKBKsf3ySZSfbyA8R7\"]}},\"version\":1}"}},"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol":{"SafeERC20":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bbcb1fd435e5744a5b541c709a8f7209eca403ec3ecfbdbe7bdc2822cdbb6f3d64736f6c63430008120033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBB 0xCB 0x1F 0xD4 CALLDATALOAD 0xE5 PUSH21 0x4A5B541C709A8F7209ECA403EC3ECFBDBE7BDC2822 0xCD 0xBB PUSH16 0x3D64736F6C6343000812003300000000 ","sourceMap":"707:3748:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bbcb1fd435e5744a5b541c709a8f7209eca403ec3ecfbdbe7bdc2822cdbb6f3d64736f6c63430008120033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBB 0xCB 0x1F 0xD4 CALLDATALOAD 0xE5 PUSH21 0x4A5B541C709A8F7209ECA403EC3ECFBDBE7BDC2822 0xCD 0xBB PUSH16 0x3D64736F6C6343000812003300000000 ","sourceMap":"707:3748:4:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers around ERC20 operations that throw on failure (when the token contract returns false). Tokens that return no value (and instead revert or throw on failure) are also supported, non-reverting calls are assumed to be successful. To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"SafeERC20\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":\"SafeERC20\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol\":{\"keccak256\":\"0xf41ca991f30855bf80ffd11e9347856a517b977f0a6c2d52e6421a99b7840329\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2717fd2bdac99daa960a6de500754ea1b932093c946388c381da48658234b95\",\"dweb:/ipfs/QmP6QVMn6UeA3ByahyJbYQr5M6coHKBKsf3ySZSfbyA8R7\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x9b72f93be69ca894d8492c244259615c4a742afc8d63720dbc8bb81087d9b238\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5a7b96e511be78d5cdf635c784e6ab8cdd38625bb8cafb8a80914a1c89cf0f6\",\"dweb:/ipfs/QmVzTCwJxQAkjRQHboT5QrvsVJGWQHgfEjeTbvyxoKBrds\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xf96f969e24029d43d0df89e59d365f277021dac62b48e1c1e3ebe0acdd7f1ca1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec772b45a624be516f1c81970caa8a2e144301e9d0921cbc1a2789fef39a1269\",\"dweb:/ipfs/QmNyjwxCrGhQMyzLD93oUobJXVe9ceJvRvfXwbEtuxPiEj\"]}},\"version\":1}"}},"@openzeppelin/contracts/token/ERC777/IERC777.sol":{"IERC777":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"tokenHolder","type":"address"}],"name":"AuthorizedOperator","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"Burned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"Minted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"tokenHolder","type":"address"}],"name":"RevokedOperator","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"Sent","type":"event"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"authorizeOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"defaultOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"granularity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"tokenHolder","type":"address"}],"name":"isOperatorFor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"operatorBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"operatorSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"revokeOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"send","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"authorizeOperator(address)":"959b8c3f","balanceOf(address)":"70a08231","burn(uint256,bytes)":"fe9d9303","defaultOperators()":"06e48538","granularity()":"556f0dc7","isOperatorFor(address,address)":"d95b6371","name()":"06fdde03","operatorBurn(address,uint256,bytes,bytes)":"fc673c4f","operatorSend(address,address,uint256,bytes,bytes)":"62ad1b83","revokeOperator(address)":"fad8b32a","send(address,uint256,bytes)":"9bd9bbc6","symbol()":"95d89b41","totalSupply()":"18160ddd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenHolder\",\"type\":\"address\"}],\"name\":\"AuthorizedOperator\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"operatorData\",\"type\":\"bytes\"}],\"name\":\"Burned\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"operatorData\",\"type\":\"bytes\"}],\"name\":\"Minted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenHolder\",\"type\":\"address\"}],\"name\":\"RevokedOperator\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"operatorData\",\"type\":\"bytes\"}],\"name\":\"Sent\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"authorizeOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"granularity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenHolder\",\"type\":\"address\"}],\"name\":\"isOperatorFor\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"operatorData\",\"type\":\"bytes\"}],\"name\":\"operatorBurn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"operatorData\",\"type\":\"bytes\"}],\"name\":\"operatorSend\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"revokeOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"send\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC777Token standard as defined in the EIP. This contract uses the https://eips.ethereum.org/EIPS/eip-1820[ERC1820 registry standard] to let token holders and recipients react to token movements by using setting implementers for the associated interfaces in said registry. See {IERC1820Registry} and {ERC1820Implementer}.\",\"events\":{\"AuthorizedOperator(address,address)\":{\"details\":\"Emitted when `operator` is made operator for `tokenHolder`.\"},\"Burned(address,address,uint256,bytes,bytes)\":{\"details\":\"Emitted when `operator` destroys `amount` tokens from `account`. Note that some additional user `data` and `operatorData` can be logged in the event.\"},\"Minted(address,address,uint256,bytes,bytes)\":{\"details\":\"Emitted when `amount` tokens are created by `operator` and assigned to `to`. Note that some additional user `data` and `operatorData` can be logged in the event.\"},\"RevokedOperator(address,address)\":{\"details\":\"Emitted when `operator` is revoked its operator status for `tokenHolder`.\"}},\"kind\":\"dev\",\"methods\":{\"authorizeOperator(address)\":{\"details\":\"Make an account an operator of the caller. See {isOperatorFor}. Emits an {AuthorizedOperator} event. Requirements - `operator` cannot be calling address.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by an account (`owner`).\"},\"burn(uint256,bytes)\":{\"details\":\"Destroys `amount` tokens from the caller's account, reducing the total supply. If a send hook is registered for the caller, the corresponding function will be called with `data` and empty `operatorData`. See {IERC777Sender}. Emits a {Burned} event. Requirements - the caller must have at least `amount` tokens.\"},\"defaultOperators()\":{\"details\":\"Returns the list of default operators. These accounts are operators for all token holders, even if {authorizeOperator} was never called on them. This list is immutable, but individual holders may revoke these via {revokeOperator}, in which case {isOperatorFor} will return false.\"},\"granularity()\":{\"details\":\"Returns the smallest part of the token that is not divisible. This means all token operations (creation, movement and destruction) must have amounts that are a multiple of this number. For most token contracts, this value will equal 1.\"},\"isOperatorFor(address,address)\":{\"details\":\"Returns true if an account is an operator of `tokenHolder`. Operators can send and burn tokens on behalf of their owners. All accounts are their own operator. See {operatorSend} and {operatorBurn}.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"operatorBurn(address,uint256,bytes,bytes)\":{\"details\":\"Destroys `amount` tokens from `account`, reducing the total supply. The caller must be an operator of `account`. If a send hook is registered for `account`, the corresponding function will be called with `data` and `operatorData`. See {IERC777Sender}. Emits a {Burned} event. Requirements - `account` cannot be the zero address. - `account` must have at least `amount` tokens. - the caller must be an operator for `account`.\"},\"operatorSend(address,address,uint256,bytes,bytes)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient`. The caller must be an operator of `sender`. If send or receive hooks are registered for `sender` and `recipient`, the corresponding functions will be called with `data` and `operatorData`. See {IERC777Sender} and {IERC777Recipient}. Emits a {Sent} event. Requirements - `sender` cannot be the zero address. - `sender` must have at least `amount` tokens. - the caller must be an operator for `sender`. - `recipient` cannot be the zero address. - if `recipient` is a contract, it must implement the {IERC777Recipient} interface.\"},\"revokeOperator(address)\":{\"details\":\"Revoke an account's operator status for the caller. See {isOperatorFor} and {defaultOperators}. Emits a {RevokedOperator} event. Requirements - `operator` cannot be calling address.\"},\"send(address,uint256,bytes)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. If send or receive hooks are registered for the caller and `recipient`, the corresponding functions will be called with `data` and empty `operatorData`. See {IERC777Sender} and {IERC777Recipient}. Emits a {Sent} event. Requirements - the caller must have at least `amount` tokens. - `recipient` cannot be the zero address. - if `recipient` is a contract, it must implement the {IERC777Recipient} interface.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC777/IERC777.sol\":\"IERC777\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC777/IERC777.sol\":{\"keccak256\":\"0x385a7061f1436b079d44c140dee9387d5313e94874ff9ee877dc0085c981ac3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c3fe22bb0d9527356e11f267f9187134de4d4ed1ff77468b4d73e3238697b96\",\"dweb:/ipfs/Qmc8caJctgxbzXEpxRogQMR2bnBk5U67hA7kKbUEG2PUXV\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/Address.sol":{"Address":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122056388b4bd61a0a82b1b5642110ef2e3e47829ce58d55205c0109152159a2901a64736f6c63430008120033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 JUMP CODESIZE DUP12 0x4B 0xD6 BYTE EXP DUP3 0xB1 0xB5 PUSH5 0x2110EF2E3E SELFBALANCE DUP3 SWAP13 0xE5 DUP14 SSTORE KECCAK256 0x5C ADD MULMOD ISZERO 0x21 MSIZE LOG2 SWAP1 BYTE PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"194:8964:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122056388b4bd61a0a82b1b5642110ef2e3e47829ce58d55205c0109152159a2901a64736f6c63430008120033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 JUMP CODESIZE DUP12 0x4B 0xD6 BYTE EXP DUP3 0xB1 0xB5 PUSH5 0x2110EF2E3E SELFBALANCE DUP3 SWAP13 0xE5 DUP14 SSTORE KECCAK256 0x5C ADD MULMOD ISZERO 0x21 MSIZE LOG2 SWAP1 BYTE PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"194:8964:6:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Address.sol\":\"Address\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xf96f969e24029d43d0df89e59d365f277021dac62b48e1c1e3ebe0acdd7f1ca1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec772b45a624be516f1c81970caa8a2e144301e9d0921cbc1a2789fef39a1269\",\"dweb:/ipfs/QmNyjwxCrGhQMyzLD93oUobJXVe9ceJvRvfXwbEtuxPiEj\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/Strings.sol":{"Strings":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202be3788305d51dccf412882e015ded65d6890e38d360ee4450d98f27031c296564736f6c63430008120033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2B 0xE3 PUSH25 0x8305D51DCCF412882E015DED65D6890E38D360EE4450D98F27 SUB SHR 0x29 PUSH6 0x64736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"188:2065:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202be3788305d51dccf412882e015ded65d6890e38d360ee4450d98f27031c296564736f6c63430008120033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2B 0xE3 PUSH25 0x8305D51DCCF412882E015DED65D6890E38D360EE4450D98F27 SUB SHR 0x29 PUSH6 0x64736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"188:2065:7:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"String operations.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Strings.sol\":\"Strings\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xa4d1d62251f8574deb032a35fc948386a9b4de74b812d4f545a1ac120486b48a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c969013129ba9e651a20735ef659fef6d8a1139ea3607bd4b26ddea2d645634\",\"dweb:/ipfs/QmVhVa6LGuzAcB8qgDtVHRkucn4ihj5UZr8xBLcJkP6ucb\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa1e8e83cd0087785df04ac79fb395d9f3684caeaf973d9e2c71caef723a3a5d6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33bbf48cc069be677705037ba7520c22b1b622c23b33e1a71495f2d36549d40b\",\"dweb:/ipfs/Qmct36zWXv3j7LZB83uwbg7TXwnZSN1fqHNDZ93GG98bGz\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/math/Math.sol":{"Math":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208f63ffdaae21fc026dee9daad1bffb318e7c5b3a3259e486c6500b228f15508f64736f6c63430008120033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP16 PUSH4 0xFFDAAE21 0xFC MUL PUSH14 0xEE9DAAD1BFFB318E7C5B3A3259E4 DUP7 0xC6 POP SIGNEXTEND 0x22 DUP16 ISZERO POP DUP16 PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"202:12302:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208f63ffdaae21fc026dee9daad1bffb318e7c5b3a3259e486c6500b228f15508f64736f6c63430008120033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP16 PUSH4 0xFFDAAE21 0xFC MUL PUSH14 0xEE9DAAD1BFFB318E7C5B3A3259E4 DUP7 0xC6 POP SIGNEXTEND 0x22 DUP16 ISZERO POP DUP16 PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"202:12302:8:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/math/Math.sol\":\"Math\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa1e8e83cd0087785df04ac79fb395d9f3684caeaf973d9e2c71caef723a3a5d6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33bbf48cc069be677705037ba7520c22b1b622c23b33e1a71495f2d36549d40b\",\"dweb:/ipfs/Qmct36zWXv3j7LZB83uwbg7TXwnZSN1fqHNDZ93GG98bGz\"]}},\"version\":1}"}},"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol":{"SuperTokenV1Library":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122073d7e2aef7282b8d27140e83b7b62ce0d0675f2534eaabcab57e5e2e48e18f2364736f6c63430008120033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH20 0xD7E2AEF7282B8D27140E83B7B62CE0D0675F2534 0xEA 0xAB 0xCA 0xB5 PUSH31 0x5E2E48E18F2364736F6C634300081200330000000000000000000000000000 ","sourceMap":"572:58073:9:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122073d7e2aef7282b8d27140e83b7b62ce0d0675f2534eaabcab57e5e2e48e18f2364736f6c63430008120033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH20 0xD7E2AEF7282B8D27140E83B7B62CE0D0675F2534 0xEA 0xAB 0xCA 0xB5 PUSH31 0x5E2E48E18F2364736F6C634300081200330000000000000000000000000000 ","sourceMap":"572:58073:9:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Superfluid\",\"details\":\"Set `using for ISuperToken` in including file, and call any of these functions on an instance of ISuperToken\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Library for Token Centric Interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol\":\"SuperTokenV1Library\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"@openzeppelin/contracts/token/ERC777/IERC777.sol\":{\"keccak256\":\"0x385a7061f1436b079d44c140dee9387d5313e94874ff9ee877dc0085c981ac3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c3fe22bb0d9527356e11f267f9187134de4d4ed1ff77468b4d73e3238697b96\",\"dweb:/ipfs/Qmc8caJctgxbzXEpxRogQMR2bnBk5U67hA7kKbUEG2PUXV\"]},\"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol\":{\"keccak256\":\"0x1b588d76f3addfeb2f368ec534fbd8da6120c8ba3c08e95f410a9cc2204faf79\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://74e51ec8a8d50ad9c6c047a2548de4aac9e6da23f65b2d8a74e89665d26c527f\",\"dweb:/ipfs/QmS26ukRAwj9ZSHmRSbjmpmdA6EaZHAK6JvE38LkqjRYaP\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol\":{\"keccak256\":\"0xb68e122faba133422f4cbdd7e15fc913073dfa2c3682c18d6449b121e67d1104\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://da0611fda964b8356d38cb006133865b58adc6e11d3817e27daf20b02ad6880f\",\"dweb:/ipfs/QmeLbak3yiUfkGvxEZzmS4ndDwDfxtZNeKiA86G3WxzjyD\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IInstantDistributionAgreementV1.sol\":{\"keccak256\":\"0x7b088dfa11a00d2b1e6e0938978364a6918015b052a4bf3ffcc67db9b3182370\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://2437f6ea2d8c8de7613aef5de4dcf3530c2beb801f7d5f3e21ac617e73f8882b\",\"dweb:/ipfs/QmVBtqXYV25fQZ9P6xokBzgFnHCBthJSZdFo9quBY169fd\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol\":{\"keccak256\":\"0x80254971aff00fc006d70b85b7bc830bb28096789e72ff3f03aa22cc7810eb0c\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://840f9d959abfbf3919db3dca35336e360b2bbd54e677439a545c7c4f163f6d70\",\"dweb:/ipfs/QmR4CRq7dpYR4NuCSASkNrcnbSScRX8MaEvDs8L7v3xDyr\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol\":{\"keccak256\":\"0x9b4fab6dcac1337f78e04d67d8c2b48b1de8bd4bbf14b475840f9dbda7b8f21e\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://cc2f3629ad0cb46bd4f595880591ad6c9d75a82d920cb9355e462fbf8022c820\",\"dweb:/ipfs/QmXMovxK4qpWT4yffXxUVjkMNwxEfS6mtn39mLSmjaxEdW\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperApp.sol\":{\"keccak256\":\"0x6cc4b0724d977190c7441dfc3be6c6e48b43b555c3370af32ef5b6600f15f53f\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://3e89c944642772a42429f21a11017b57deb98a9198f8e4f8749f00aaee71299e\",\"dweb:/ipfs/QmaSv9GvqikcGHJ3tcwATDHSpQw6mfnHPDtcfqcZSS7LF6\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.sol\":{\"keccak256\":\"0x6860f0bf69dcc1d1ec39eefb43e0cd18b276b48ebe9efd53450e09cd2f997ab2\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://6421f80f2ff7818bd235b7bf4b911cc40edcb598507a246b4de0fa0191a9e1aa\",\"dweb:/ipfs/QmWxktXMjYhi1zt52D3JXNcxCFesXu8kQoSCJQ3j88apM3\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperTokenFactory.sol\":{\"keccak256\":\"0xe2525ef2906504e2f61775ed91bbebeea2f4e2e3fa42ce190561acf6a01187ff\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://7a9859eb432321a65cd15ca988a13776e1c31df44b4cf25f95fa04b54a8a8625\",\"dweb:/ipfs/QmQVJQoeoWemptZhbRgWJZWwMTiNtxVsc1FYmGdtdTfqcL\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol\":{\"keccak256\":\"0xab9dab941f99d0f0ef6125fb6eafde03378d7c3e94e613dd12fb7fbf594c3373\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://928c6ef915dee69058d4cfcb9f2344d4fc78d9763b47b17e5c03fbff64ba3c64\",\"dweb:/ipfs/Qmdk733ZHceatz3qbuodLCCS9TUspJJtXLoX6vWwMvrPDE\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance.sol\":{\"keccak256\":\"0x90a9259d0f0bb6b1bb6d48f051277eb75df96a9fbe684a203a3a468ad19318e2\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://9c8162a2d07ffe768920fef55292684149173afefbfba76b8fca007e55092229\",\"dweb:/ipfs/QmducLNwrzeUXEpBjUTSMu7sfmQEwVhcYXApe4brc1zQ6V\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol\":{\"keccak256\":\"0x9cad3866982902ea88df0874a563d2e4aeba5a5bcc6289c30cccf9b4099d2fb6\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://e8fd960b259331f204c7cb7dcd32b09d68f4294e3b872fad00ad467609c3ef72\",\"dweb:/ipfs/QmeZFEvsDunXQGPbXFfN5AvfKM5am1FY8Xv6e3c4tNKvgY\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo.sol\":{\"keccak256\":\"0x55be78ffb441c782f612b153d7d9049e3f0dbfd412c1f7df29c896b972b2985f\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://a223c68e38a6c9b1e363e525911bc7eda44ea517865ae53bd0d34ff858cc02ae\",\"dweb:/ipfs/QmVruGehibG6Emr2A6JHwUnhd4NzsGkE24cbGqnDpEvrKh\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.sol\":{\"keccak256\":\"0x7456cd394cc905aae7cdbd4601ce1c296c768c13c28e66efbb913cc070bad3e4\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://5a6589b428b724721ba5b4dd196c8f366a6e694ef313add093f29af64496c042\",\"dweb:/ipfs/QmSMgV6y8L6pyyzDz6kKmafVwujNWcjTqutpCBxe4uNRqg\"]}},\"version\":1}"}},"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol":{"IConstantFlowAgreementV1":{"abi":[{"inputs":[],"name":"CFA_ACL_FLOW_RATE_ALLOWANCE_EXCEEDED","type":"error"},{"inputs":[],"name":"CFA_ACL_NO_NEGATIVE_ALLOWANCE","type":"error"},{"inputs":[],"name":"CFA_ACL_NO_SENDER_CREATE","type":"error"},{"inputs":[],"name":"CFA_ACL_NO_SENDER_FLOW_OPERATOR","type":"error"},{"inputs":[],"name":"CFA_ACL_NO_SENDER_UPDATE","type":"error"},{"inputs":[],"name":"CFA_ACL_OPERATOR_NO_CREATE_PERMISSIONS","type":"error"},{"inputs":[],"name":"CFA_ACL_OPERATOR_NO_DELETE_PERMISSIONS","type":"error"},{"inputs":[],"name":"CFA_ACL_OPERATOR_NO_UPDATE_PERMISSIONS","type":"error"},{"inputs":[],"name":"CFA_ACL_UNCLEAN_PERMISSIONS","type":"error"},{"inputs":[],"name":"CFA_DEPOSIT_TOO_BIG","type":"error"},{"inputs":[],"name":"CFA_FLOW_ALREADY_EXISTS","type":"error"},{"inputs":[],"name":"CFA_FLOW_DOES_NOT_EXIST","type":"error"},{"inputs":[],"name":"CFA_FLOW_RATE_TOO_BIG","type":"error"},{"inputs":[],"name":"CFA_HOOK_OUT_OF_GAS","type":"error"},{"inputs":[],"name":"CFA_INSUFFICIENT_BALANCE","type":"error"},{"inputs":[],"name":"CFA_INVALID_FLOW_RATE","type":"error"},{"inputs":[],"name":"CFA_NON_CRITICAL_SENDER","type":"error"},{"inputs":[],"name":"CFA_NO_SELF_FLOW","type":"error"},{"inputs":[],"name":"CFA_ZERO_ADDRESS_RECEIVER","type":"error"},{"inputs":[],"name":"CFA_ZERO_ADDRESS_SENDER","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract ISuperfluidToken","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"flowOperator","type":"address"},{"indexed":false,"internalType":"uint8","name":"permissions","type":"uint8"},{"indexed":false,"internalType":"int96","name":"flowRateAllowance","type":"int96"}],"name":"FlowOperatorUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract ISuperfluidToken","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"int96","name":"flowRate","type":"int96"},{"indexed":false,"internalType":"int256","name":"totalSenderFlowRate","type":"int256"},{"indexed":false,"internalType":"int256","name":"totalReceiverFlowRate","type":"int256"},{"indexed":false,"internalType":"bytes","name":"userData","type":"bytes"}],"name":"FlowUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"flowOperator","type":"address"},{"indexed":false,"internalType":"uint256","name":"deposit","type":"uint256"}],"name":"FlowUpdatedExtension","type":"event"},{"inputs":[],"name":"agreementType","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"contract ISuperfluidToken","name":"token","type":"address"},{"internalType":"address","name":"flowOperator","type":"address"},{"internalType":"bytes","name":"ctx","type":"bytes"}],"name":"authorizeFlowOperatorWithFullControl","outputs":[{"internalType":"bytes","name":"newCtx","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ISuperfluidToken","name":"token","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"int96","name":"flowRate","type":"int96"},{"internalType":"bytes","name":"ctx","type":"bytes"}],"name":"createFlow","outputs":[{"internalType":"bytes","name":"newCtx","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ISuperfluidToken","name":"token","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"int96","name":"flowRate","type":"int96"},{"internalType":"bytes","name":"ctx","type":"bytes"}],"name":"createFlowByOperator","outputs":[{"internalType":"bytes","name":"newCtx","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ISuperfluidToken","name":"token","type":"address"},{"internalType":"address","name":"flowOperator","type":"address"},{"internalType":"int96","name":"subtractedFlowRateAllowance","type":"int96"},{"internalType":"bytes","name":"ctx","type":"bytes"}],"name":"decreaseFlowRateAllowance","outputs":[{"internalType":"bytes","name":"newCtx","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ISuperfluidToken","name":"token","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"bytes","name":"ctx","type":"bytes"}],"name":"deleteFlow","outputs":[{"internalType":"bytes","name":"newCtx","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ISuperfluidToken","name":"token","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"bytes","name":"ctx","type":"bytes"}],"name":"deleteFlowByOperator","outputs":[{"internalType":"bytes","name":"newCtx","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ISuperfluidToken","name":"token","type":"address"},{"internalType":"address","name":"account","type":"address"}],"name":"getAccountFlowInfo","outputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"int96","name":"flowRate","type":"int96"},{"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":"int96","name":"flowRate","type":"int96"}],"name":"getDepositRequiredForFlowRate","outputs":[{"internalType":"uint256","name":"deposit","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ISuperfluidToken","name":"token","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"receiver","type":"address"}],"name":"getFlow","outputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"int96","name":"flowRate","type":"int96"},{"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":"bytes32","name":"agreementId","type":"bytes32"}],"name":"getFlowByID","outputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"int96","name":"flowRate","type":"int96"},{"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":"sender","type":"address"},{"internalType":"address","name":"flowOperator","type":"address"}],"name":"getFlowOperatorData","outputs":[{"internalType":"bytes32","name":"flowOperatorId","type":"bytes32"},{"internalType":"uint8","name":"permissions","type":"uint8"},{"internalType":"int96","name":"flowRateAllowance","type":"int96"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ISuperfluidToken","name":"token","type":"address"},{"internalType":"bytes32","name":"flowOperatorId","type":"bytes32"}],"name":"getFlowOperatorDataByID","outputs":[{"internalType":"uint8","name":"permissions","type":"uint8"},{"internalType":"int96","name":"flowRateAllowance","type":"int96"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ISuperfluidToken","name":"token","type":"address"},{"internalType":"uint256","name":"deposit","type":"uint256"}],"name":"getMaximumFlowRateFromDeposit","outputs":[{"internalType":"int96","name":"flowRate","type":"int96"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ISuperfluidToken","name":"token","type":"address"},{"internalType":"address","name":"account","type":"address"}],"name":"getNetFlow","outputs":[{"internalType":"int96","name":"flowRate","type":"int96"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ISuperfluidToken","name":"token","type":"address"},{"internalType":"address","name":"flowOperator","type":"address"},{"internalType":"int96","name":"addedFlowRateAllowance","type":"int96"},{"internalType":"bytes","name":"ctx","type":"bytes"}],"name":"increaseFlowRateAllowance","outputs":[{"internalType":"bytes","name":"newCtx","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ISuperfluidToken","name":"token","type":"address"},{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"isPatricianPeriod","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ISuperfluidToken","name":"token","type":"address"},{"internalType":"address","name":"account","type":"address"}],"name":"isPatricianPeriodNow","outputs":[{"internalType":"bool","name":"isCurrentlyPatricianPeriod","type":"bool"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ISuperfluidToken","name":"token","type":"address"},{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"time","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":"flowOperator","type":"address"},{"internalType":"bytes","name":"ctx","type":"bytes"}],"name":"revokeFlowOperatorWithFullControl","outputs":[{"internalType":"bytes","name":"newCtx","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ISuperfluidToken","name":"token","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"int96","name":"flowRate","type":"int96"},{"internalType":"bytes","name":"ctx","type":"bytes"}],"name":"updateFlow","outputs":[{"internalType":"bytes","name":"newCtx","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ISuperfluidToken","name":"token","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"int96","name":"flowRate","type":"int96"},{"internalType":"bytes","name":"ctx","type":"bytes"}],"name":"updateFlowByOperator","outputs":[{"internalType":"bytes","name":"newCtx","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ISuperfluidToken","name":"token","type":"address"},{"internalType":"address","name":"flowOperator","type":"address"},{"internalType":"uint8","name":"permissions","type":"uint8"},{"internalType":"int96","name":"flowRateAllowance","type":"int96"},{"internalType":"bytes","name":"ctx","type":"bytes"}],"name":"updateFlowOperatorPermissions","outputs":[{"internalType":"bytes","name":"newCtx","type":"bytes"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"agreementType()":"7730599e","authorizeFlowOperatorWithFullControl(address,address,bytes)":"54b770e3","createFlow(address,address,int96,bytes)":"62fc305e","createFlowByOperator(address,address,address,int96,bytes)":"94229ecb","decreaseFlowRateAllowance(address,address,int96,bytes)":"5f51fb23","deleteFlow(address,address,address,bytes)":"b4b333c6","deleteFlowByOperator(address,address,address,bytes)":"4c8b181f","getAccountFlowInfo(address,address)":"0f1ac495","getDepositRequiredForFlowRate(address,int96)":"8d997f6e","getFlow(address,address,address)":"e6a1e888","getFlowByID(address,bytes32)":"aabd2668","getFlowOperatorData(address,address,address)":"00422bbe","getFlowOperatorDataByID(address,bytes32)":"09d256ef","getMaximumFlowRateFromDeposit(address,uint256)":"0602f7db","getNetFlow(address,address)":"e8e7e2d1","increaseFlowRateAllowance(address,address,int96,bytes)":"ac5f5d00","isPatricianPeriod(address,address,uint256)":"4b839e0b","isPatricianPeriodNow(address,address)":"4fe9c291","realtimeBalanceOf(address,address,uint256)":"9b2e48bc","revokeFlowOperatorWithFullControl(address,address,bytes)":"062e56ec","updateFlow(address,address,int96,bytes)":"50209a62","updateFlowByOperator(address,address,address,int96,bytes)":"354b9590","updateFlowOperatorPermissions(address,address,uint8,int96,bytes)":"811b3d40"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"CFA_ACL_FLOW_RATE_ALLOWANCE_EXCEEDED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CFA_ACL_NO_NEGATIVE_ALLOWANCE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CFA_ACL_NO_SENDER_CREATE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CFA_ACL_NO_SENDER_FLOW_OPERATOR\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CFA_ACL_NO_SENDER_UPDATE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CFA_ACL_OPERATOR_NO_CREATE_PERMISSIONS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CFA_ACL_OPERATOR_NO_DELETE_PERMISSIONS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CFA_ACL_OPERATOR_NO_UPDATE_PERMISSIONS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CFA_ACL_UNCLEAN_PERMISSIONS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CFA_DEPOSIT_TOO_BIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CFA_FLOW_ALREADY_EXISTS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CFA_FLOW_DOES_NOT_EXIST\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CFA_FLOW_RATE_TOO_BIG\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CFA_HOOK_OUT_OF_GAS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CFA_INSUFFICIENT_BALANCE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CFA_INVALID_FLOW_RATE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CFA_NON_CRITICAL_SENDER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CFA_NO_SELF_FLOW\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CFA_ZERO_ADDRESS_RECEIVER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CFA_ZERO_ADDRESS_SENDER\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"flowOperator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"permissions\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"int96\",\"name\":\"flowRateAllowance\",\"type\":\"int96\"}],\"name\":\"FlowOperatorUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"totalSenderFlowRate\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"totalReceiverFlowRate\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"FlowUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"flowOperator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"deposit\",\"type\":\"uint256\"}],\"name\":\"FlowUpdatedExtension\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"agreementType\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"flowOperator\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"authorizeFlowOperatorWithFullControl\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"createFlow\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"createFlowByOperator\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"flowOperator\",\"type\":\"address\"},{\"internalType\":\"int96\",\"name\":\"subtractedFlowRateAllowance\",\"type\":\"int96\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"decreaseFlowRateAllowance\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"deleteFlow\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"deleteFlowByOperator\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getAccountFlowInfo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"},{\"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\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"}],\"name\":\"getDepositRequiredForFlowRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"deposit\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"getFlow\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"},{\"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\":\"bytes32\",\"name\":\"agreementId\",\"type\":\"bytes32\"}],\"name\":\"getFlowByID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"},{\"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\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"flowOperator\",\"type\":\"address\"}],\"name\":\"getFlowOperatorData\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"flowOperatorId\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"permissions\",\"type\":\"uint8\"},{\"internalType\":\"int96\",\"name\":\"flowRateAllowance\",\"type\":\"int96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"flowOperatorId\",\"type\":\"bytes32\"}],\"name\":\"getFlowOperatorDataByID\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"permissions\",\"type\":\"uint8\"},{\"internalType\":\"int96\",\"name\":\"flowRateAllowance\",\"type\":\"int96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deposit\",\"type\":\"uint256\"}],\"name\":\"getMaximumFlowRateFromDeposit\",\"outputs\":[{\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNetFlow\",\"outputs\":[{\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"flowOperator\",\"type\":\"address\"},{\"internalType\":\"int96\",\"name\":\"addedFlowRateAllowance\",\"type\":\"int96\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"increaseFlowRateAllowance\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"isPatricianPeriod\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isPatricianPeriodNow\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isCurrentlyPatricianPeriod\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"time\",\"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\":\"flowOperator\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"revokeFlowOperatorWithFullControl\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"updateFlow\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"int96\",\"name\":\"flowRate\",\"type\":\"int96\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"updateFlowByOperator\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"flowOperator\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"permissions\",\"type\":\"uint8\"},{\"internalType\":\"int96\",\"name\":\"flowRateAllowance\",\"type\":\"int96\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"updateFlowOperatorPermissions\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Superfluid\",\"events\":{\"FlowOperatorUpdated(address,address,address,uint8,int96)\":{\"details\":\"Flow operator updated event\",\"params\":{\"flowOperator\":\"Flow operator address\",\"flowRateAllowance\":\"The flow rate allowance the `flowOperator` is granted (only goes down)\",\"permissions\":\"Octo bitmask representation of permissions\",\"sender\":\"Flow sender address\",\"token\":\"Super token address\"}},\"FlowUpdated(address,address,address,int96,int256,int256,bytes)\":{\"details\":\"Flow updated event\",\"params\":{\"flowRate\":\"Flow rate in amount per second for this flow\",\"receiver\":\"Flow recipient address\",\"sender\":\"Flow sender address\",\"token\":\"Super token address\",\"totalReceiverFlowRate\":\"Total flow rate in amount per second for the receiver\",\"totalSenderFlowRate\":\"Total flow rate in amount per second for the sender\",\"userData\":\"The user provided data\"}},\"FlowUpdatedExtension(address,uint256)\":{\"details\":\"Flow updated extension event\",\"params\":{\"deposit\":\"The deposit amount for the stream\",\"flowOperator\":\"Flow operator address - the Context.msgSender\"}}},\"kind\":\"dev\",\"methods\":{\"agreementType()\":{\"details\":\"ISuperAgreement.agreementType implementation\"},\"authorizeFlowOperatorWithFullControl(address,address,bytes)\":{\"details\":\"msgSender from `ctx` grants `flowOperator` all permissions with flowRateAllowance as type(int96).max\",\"params\":{\"ctx\":\"Context bytes (see ISuperfluid.sol for Context struct)\",\"flowOperator\":\"The permission grantee address\",\"token\":\"Super token address\"}},\"createFlow(address,address,int96,bytes)\":{\"custom:callbacks\":\" - AgreementCreated - agreementId - can be used in getFlowByID - agreementData - abi.encode(address flowSender, address flowReceiver)\",\"custom:note\":\" - A deposit is taken as safety margin for the solvency agents - A extra gas fee may be taken to pay for solvency agent liquidations\",\"details\":\"flowId (agreementId) is the keccak256 hash of encoded sender and receiver\",\"params\":{\"ctx\":\"Context bytes (see ISuperfluid.sol for Context struct)\",\"flowRate\":\"New flow rate in amount per second\",\"receiver\":\"Flow receiver address\",\"token\":\"Super token address\"}},\"createFlowByOperator(address,address,address,int96,bytes)\":{\"details\":\"A flow created by an approved flow operator (see above for details on callbacks)\",\"params\":{\"ctx\":\"Context bytes (see ISuperfluid.sol for Context struct)\",\"flowRate\":\"New flow rate in amount per second\",\"receiver\":\"Flow receiver address\",\"sender\":\"Flow sender address (has granted permissions)\",\"token\":\"Super token address\"}},\"decreaseFlowRateAllowance(address,address,int96,bytes)\":{\"details\":\"msgSender from `ctx` decreases flow rate allowance for the `flowOperator` by `subtractedFlowRateAllowance`if `subtractedFlowRateAllowance` is negative, we revert with CFA_ACL_NO_NEGATIVE_ALLOWANCE\",\"params\":{\"ctx\":\"Context bytes (see ISuperfluid.sol for Context struct)\",\"flowOperator\":\"The permission grantee address\",\"subtractedFlowRateAllowance\":\"The flow rate allowance delta\",\"token\":\"Super token address\"},\"returns\":{\"newCtx\":\"The new context bytes\"}},\"deleteFlow(address,address,address,bytes)\":{\"custom:callbacks\":\" - AgreementTerminated - agreementId - can be used in getFlowByID - agreementData - abi.encode(address flowSender, address flowReceiver)\",\"custom:note\":\" - Both flow sender and receiver may delete the flow - If Sender account is insolvent or in critical state, a solvency agent may also terminate the agreement - Gas fee may be returned to the sender\",\"details\":\"flowId (agreementId) is the keccak256 hash of encoded sender and receiver\",\"params\":{\"ctx\":\"Context bytes (see ISuperfluid.sol for Context struct)\",\"receiver\":\"Flow receiver address\",\"token\":\"Super token address\"}},\"deleteFlowByOperator(address,address,address,bytes)\":{\"details\":\"A flow deleted by an approved flow operator (see above for details on callbacks)\",\"params\":{\"ctx\":\"Context bytes (see ISuperfluid.sol for Context struct)\",\"receiver\":\"Flow receiver address\",\"token\":\"Super token address\"}},\"getAccountFlowInfo(address,address)\":{\"details\":\"Get the aggregated flow info of the account\",\"params\":{\"account\":\"Account for the query\",\"token\":\"Super token address\"},\"returns\":{\"deposit\":\"The sum of all deposits for account's flows\",\"flowRate\":\"The net flow rate of token for account\",\"owedDeposit\":\"The sum of all owed deposits for account's flows\",\"timestamp\":\"Timestamp of when a flow was last updated for account\"}},\"getDepositRequiredForFlowRate(address,int96)\":{\"custom:note\":\" - if calculated deposit (flowRate * liquidationPeriod) is less than the minimum deposit, we use the minimum deposit otherwise we use the calculated deposit\",\"details\":\"Calculates the deposit based on the liquidationPeriod and flowRate\",\"params\":{\"flowRate\":\"Flow rate to be tested\"},\"returns\":{\"deposit\":\"The deposit amount based on flowRate and liquidationPeriod\"}},\"getFlow(address,address,address)\":{\"details\":\"Get the flow data between `sender` and `receiver` of `token`\",\"params\":{\"receiver\":\"Flow sender\",\"sender\":\"Flow receiver\",\"token\":\"Super token address\"},\"returns\":{\"deposit\":\"The amount of deposit the flow\",\"flowRate\":\"The flow rate\",\"owedDeposit\":\"The amount of owed deposit of the flow\",\"timestamp\":\"Timestamp of when the flow is updated\"}},\"getFlowByID(address,bytes32)\":{\"details\":\"flowId (agreementId) is the keccak256 hash of encoded sender and receiver\",\"params\":{\"agreementId\":\"The agreement ID\",\"token\":\"Super token address\"},\"returns\":{\"deposit\":\"The deposit amount of the flow\",\"flowRate\":\"The flow rate\",\"owedDeposit\":\"The owed deposit amount of the flow\",\"timestamp\":\"Timestamp of when the flow is updated\"}},\"getFlowOperatorData(address,address,address)\":{\"params\":{\"flowOperator\":\"The permission grantee address\",\"sender\":\"The permission granter address\",\"token\":\"Super token address\"},\"returns\":{\"flowOperatorId\":\"The keccak256 hash of encoded string \\\"flowOperator\\\", sender and flowOperator\",\"flowRateAllowance\":\"The flow rate allowance the `flowOperator` is granted (only goes down)\",\"permissions\":\"A bitmask representation of the granted permissions\"}},\"getFlowOperatorDataByID(address,bytes32)\":{\"params\":{\"flowOperatorId\":\"The keccak256 hash of encoded string \\\"flowOperator\\\", sender and flowOperator\",\"token\":\"Super token address\"},\"returns\":{\"flowRateAllowance\":\"The flow rate allowance the `flowOperator` is granted (only goes down)\",\"permissions\":\"A bitmask representation of the granted permissions\"}},\"getMaximumFlowRateFromDeposit(address,uint256)\":{\"details\":\"The deposit is clipped and rounded down\",\"params\":{\"deposit\":\"Deposit amount used for creating the flow\"},\"returns\":{\"flowRate\":\"The maximum flow rate\"}},\"getNetFlow(address,address)\":{\"details\":\"Get the net flow rate of the account\",\"params\":{\"account\":\"Account for the query\",\"token\":\"Super token address\"},\"returns\":{\"flowRate\":\"Net flow rate\"}},\"increaseFlowRateAllowance(address,address,int96,bytes)\":{\"details\":\"if `addedFlowRateAllowance` is negative, we revert with CFA_ACL_NO_NEGATIVE_ALLOWANCE\",\"params\":{\"addedFlowRateAllowance\":\"The flow rate allowance delta\",\"ctx\":\"Context bytes (see ISuperfluid.sol for Context struct)\",\"flowOperator\":\"The permission grantee address\",\"token\":\"Super token address\"},\"returns\":{\"newCtx\":\"The new context bytes\"}},\"isPatricianPeriod(address,address,uint256)\":{\"details\":\"Returns whether it is the patrician period based on timestamp\",\"params\":{\"account\":\"The account we are interested in\",\"timestamp\":\"The timestamp we are interested in observing the result of isPatricianPeriod\"},\"returns\":{\"_0\":\"bool Whether it is currently the patrician period dictated by governance\"}},\"isPatricianPeriodNow(address,address)\":{\"details\":\"Returns whether it is the patrician period based on host.getNow()\",\"params\":{\"account\":\"The account we are interested in\"},\"returns\":{\"isCurrentlyPatricianPeriod\":\"Whether it is currently the patrician period dictated by governance\",\"timestamp\":\"The value of host.getNow()\"}},\"realtimeBalanceOf(address,address,uint256)\":{\"details\":\"Calculate the real-time balance for the account of this agreement class\",\"params\":{\"account\":\"Account the state belongs to\",\"time\":\"Time used for the calculation\"},\"returns\":{\"deposit\":\"Account deposit amount of this agreement\",\"dynamicBalance\":\"Dynamic balance portion of real-time balance of this agreement\",\"owedDeposit\":\"Account owed deposit amount of this agreement\"}},\"revokeFlowOperatorWithFullControl(address,address,bytes)\":{\"details\":\"`permissions` and `flowRateAllowance` will both be set to 0\",\"params\":{\"ctx\":\"Context bytes (see ISuperfluid.sol for Context struct)\",\"flowOperator\":\"The permission grantee address\",\"token\":\"Super token address\"}},\"updateFlow(address,address,int96,bytes)\":{\"custom:callbacks\":\" - AgreementUpdated - agreementId - can be used in getFlowByID - agreementData - abi.encode(address flowSender, address flowReceiver)\",\"custom:note\":\" - Only the flow sender may update the flow rate - Even if the flow rate is zero, the flow is not deleted from the system - Deposit amount will be adjusted accordingly - No new gas fee is charged\",\"details\":\"flowId (agreementId) is the keccak256 hash of encoded sender and receiver\",\"params\":{\"ctx\":\"Context bytes (see ISuperfluid.sol for Context struct)\",\"flowRate\":\"New flow rate in amount per second\",\"receiver\":\"Flow receiver address\",\"token\":\"Super token address\"}},\"updateFlowByOperator(address,address,address,int96,bytes)\":{\"details\":\"A flow updated by an approved flow operator (see above for details on callbacks)\",\"params\":{\"ctx\":\"Context bytes (see ISuperfluid.sol for Context struct)\",\"flowRate\":\"New flow rate in amount per second\",\"receiver\":\"Flow receiver address\",\"sender\":\"Flow sender address (has granted permissions)\",\"token\":\"Super token address\"}},\"updateFlowOperatorPermissions(address,address,uint8,int96,bytes)\":{\"details\":\"msgSender from `ctx` updates permissions for the `flowOperator` with `flowRateAllowance`\",\"params\":{\"ctx\":\"Context bytes (see ISuperfluid.sol for Context struct)\",\"flowOperator\":\"The permission grantee address\",\"flowRateAllowance\":\"The flow rate allowance the `flowOperator` is granted (only goes down)\",\"permissions\":\"A bitmask representation of the granted permissions\",\"token\":\"Super token address\"}}},\"title\":\"Constant Flow Agreement interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"createFlow(address,address,int96,bytes)\":{\"notice\":\"Create a flow betwen ctx.msgSender and receiver\"},\"createFlowByOperator(address,address,address,int96,bytes)\":{\"notice\":\"Create a flow between sender and receiver\"},\"deleteFlow(address,address,address,bytes)\":{\"notice\":\"Delete the flow between sender and receiver\"},\"deleteFlowByOperator(address,address,address,bytes)\":{\"notice\":\"Delete the flow between sender and receiver\"},\"getDepositRequiredForFlowRate(address,int96)\":{\"notice\":\"Get the deposit required for creating the flow\"},\"getFlowByID(address,bytes32)\":{\"notice\":\"Get flow data using agreementId\"},\"getFlowOperatorData(address,address,address)\":{\"notice\":\"Get the permissions of a flow operator between `sender` and `flowOperator` for `token`\"},\"getFlowOperatorDataByID(address,bytes32)\":{\"notice\":\"Get flow operator using flowOperatorId\"},\"getMaximumFlowRateFromDeposit(address,uint256)\":{\"notice\":\"Get the maximum flow rate allowed with the deposit\"},\"increaseFlowRateAllowance(address,address,int96,bytes)\":{\"notice\":\"msgSender from `ctx` increases flow rate allowance for the `flowOperator` by `addedFlowRateAllowance`\"},\"revokeFlowOperatorWithFullControl(address,address,bytes)\":{\"notice\":\"msgSender from `ctx` revokes `flowOperator` create/update/delete permissions\"},\"updateFlow(address,address,int96,bytes)\":{\"notice\":\"Update the flow rate between ctx.msgSender and receiver\"},\"updateFlowByOperator(address,address,address,int96,bytes)\":{\"notice\":\"Update a flow between sender and receiver\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol\":\"IConstantFlowAgreementV1\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol\":{\"keccak256\":\"0xb68e122faba133422f4cbdd7e15fc913073dfa2c3682c18d6449b121e67d1104\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://da0611fda964b8356d38cb006133865b58adc6e11d3817e27daf20b02ad6880f\",\"dweb:/ipfs/QmeLbak3yiUfkGvxEZzmS4ndDwDfxtZNeKiA86G3WxzjyD\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol\":{\"keccak256\":\"0x9b4fab6dcac1337f78e04d67d8c2b48b1de8bd4bbf14b475840f9dbda7b8f21e\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://cc2f3629ad0cb46bd4f595880591ad6c9d75a82d920cb9355e462fbf8022c820\",\"dweb:/ipfs/QmXMovxK4qpWT4yffXxUVjkMNwxEfS6mtn39mLSmjaxEdW\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol\":{\"keccak256\":\"0x9cad3866982902ea88df0874a563d2e4aeba5a5bcc6289c30cccf9b4099d2fb6\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://e8fd960b259331f204c7cb7dcd32b09d68f4294e3b872fad00ad467609c3ef72\",\"dweb:/ipfs/QmeZFEvsDunXQGPbXFfN5AvfKM5am1FY8Xv6e3c4tNKvgY\"]}},\"version\":1}"}},"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IInstantDistributionAgreementV1.sol":{"IInstantDistributionAgreementV1":{"abi":[{"inputs":[],"name":"IDA_INDEX_ALREADY_EXISTS","type":"error"},{"inputs":[],"name":"IDA_INDEX_DOES_NOT_EXIST","type":"error"},{"inputs":[],"name":"IDA_INDEX_SHOULD_GROW","type":"error"},{"inputs":[],"name":"IDA_INSUFFICIENT_BALANCE","type":"error"},{"inputs":[],"name":"IDA_OPERATION_NOT_ALLOWED","type":"error"},{"inputs":[],"name":"IDA_SUBSCRIPTION_ALREADY_APPROVED","type":"error"},{"inputs":[],"name":"IDA_SUBSCRIPTION_DOES_NOT_EXIST","type":"error"},{"inputs":[],"name":"IDA_SUBSCRIPTION_IS_NOT_APPROVED","type":"error"},{"inputs":[],"name":"IDA_ZERO_ADDRESS_SUBSCRIBER","type":"error"},{"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":"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":[{"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":[{"internalType":"contract ISuperfluidToken","name":"token","type":"address"},{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"time","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":"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"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"agreementType()":"7730599e","approveSubscription(address,address,uint32,bytes)":"acf4a6c2","calculateDistribution(address,address,uint32,uint256)":"899baaec","claim(address,address,uint32,address,bytes)":"acafa1b8","createIndex(address,uint32,bytes)":"d787840a","deleteSubscription(address,address,uint32,address,bytes)":"2e5e74c6","distribute(address,uint32,uint256,bytes)":"b96731c2","getIndex(address,address,uint32)":"23fc23f3","getSubscription(address,address,uint32,address)":"5b534051","getSubscriptionByID(address,bytes32)":"cd7245c5","listSubscriptions(address,address)":"b6dacdb8","realtimeBalanceOf(address,address,uint256)":"9b2e48bc","revokeSubscription(address,address,uint32,bytes)":"6041ae96","updateIndex(address,uint32,uint128,bytes)":"7fbc7639","updateSubscription(address,uint32,address,uint128,bytes)":"232d2b58"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"IDA_INDEX_ALREADY_EXISTS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IDA_INDEX_DOES_NOT_EXIST\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IDA_INDEX_SHOULD_GROW\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IDA_INSUFFICIENT_BALANCE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IDA_OPERATION_NOT_ALLOWED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IDA_SUBSCRIPTION_ALREADY_APPROVED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IDA_SUBSCRIPTION_DOES_NOT_EXIST\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IDA_SUBSCRIPTION_IS_NOT_APPROVED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IDA_ZERO_ADDRESS_SUBSCRIBER\",\"type\":\"error\"},{\"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\":\"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\":[{\"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\":[{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"time\",\"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\":\"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\",\"events\":{\"IndexCreated(address,address,uint32,bytes)\":{\"details\":\"Index created event\",\"params\":{\"indexId\":\"The specified indexId of the newly created index\",\"publisher\":\"Index creator and publisher\",\"token\":\"Super token address\",\"userData\":\"The user provided data\"}},\"IndexDistributionClaimed(address,address,uint32,address,uint256)\":{\"details\":\"Index distribution claimed event\",\"params\":{\"amount\":\"The pending amount claimed\",\"indexId\":\"The specified indexId\",\"publisher\":\"Index publisher\",\"subscriber\":\"The subscriber units updated\",\"token\":\"Super token address\"}},\"IndexSubscribed(address,address,uint32,address,bytes)\":{\"details\":\"Index subscribed event\",\"params\":{\"indexId\":\"The specified indexId\",\"publisher\":\"Index publisher\",\"subscriber\":\"The approved subscriber\",\"token\":\"Super token address\",\"userData\":\"The user provided data\"}},\"IndexUnitsUpdated(address,address,uint32,address,uint128,bytes)\":{\"details\":\"Index units updated event\",\"params\":{\"indexId\":\"The specified indexId\",\"publisher\":\"Index publisher\",\"subscriber\":\"The subscriber units updated\",\"token\":\"Super token address\",\"units\":\"The new units amount\",\"userData\":\"The user provided data\"}},\"IndexUnsubscribed(address,address,uint32,address,bytes)\":{\"details\":\"Index unsubscribed event\",\"params\":{\"indexId\":\"The specified indexId\",\"publisher\":\"Index publisher\",\"subscriber\":\"The unsubscribed subscriber\",\"token\":\"Super token address\",\"userData\":\"The user provided data\"}},\"IndexUpdated(address,address,uint32,uint128,uint128,uint128,uint128,bytes)\":{\"details\":\"Index updated event\",\"params\":{\"indexId\":\"The specified indexId of the updated index\",\"newIndexValue\":\"The updated index value\",\"oldIndexValue\":\"The previous index value\",\"publisher\":\"Index updater and publisher\",\"token\":\"Super token address\",\"totalUnitsApproved\":\"The total units approved when the indexValue was updated\",\"totalUnitsPending\":\"The total units pending when the indexValue was updated\",\"userData\":\"The user provided data\"}},\"SubscriptionApproved(address,address,address,uint32,bytes)\":{\"details\":\"Subscription approved event\",\"params\":{\"indexId\":\"The specified indexId\",\"publisher\":\"Index publisher\",\"subscriber\":\"The approved subscriber\",\"token\":\"Super token address\",\"userData\":\"The user provided data\"}},\"SubscriptionDistributionClaimed(address,address,address,uint32,uint256)\":{\"details\":\"Subscription distribution claimed event\",\"params\":{\"amount\":\"The pending amount claimed\",\"indexId\":\"The specified indexId\",\"publisher\":\"Index publisher\",\"subscriber\":\"The subscriber units updated\",\"token\":\"Super token address\"}},\"SubscriptionRevoked(address,address,address,uint32,bytes)\":{\"details\":\"Subscription approved event\",\"params\":{\"indexId\":\"The specified indexId\",\"publisher\":\"Index publisher\",\"subscriber\":\"The approved subscriber\",\"token\":\"Super token address\",\"userData\":\"The user provided data\"}},\"SubscriptionUnitsUpdated(address,address,address,uint32,uint128,bytes)\":{\"details\":\"Subscription units updated event\",\"params\":{\"indexId\":\"The specified indexId\",\"publisher\":\"Index publisher\",\"subscriber\":\"The subscriber units updated\",\"token\":\"Super token address\",\"units\":\"The new units amount\",\"userData\":\"The user provided data\"}}},\"kind\":\"dev\",\"methods\":{\"agreementType()\":{\"details\":\"ISuperAgreement.agreementType implementation\"},\"approveSubscription(address,address,uint32,bytes)\":{\"custom:callbacks\":\" - if subscription exist - AgreementCreated callback to the publisher: - agreementId is for the subscription - if subscription does not exist - AgreementUpdated callback to the publisher: - agreementId is for the subscription\",\"details\":\"Approve the subscription of an index\",\"params\":{\"ctx\":\"Context bytes (see ISuperfluid.sol for Context struct)\",\"indexId\":\"Id of the index\",\"publisher\":\"The publisher of the index\",\"token\":\"Super token address\"}},\"calculateDistribution(address,address,uint32,uint256)\":{\"details\":\"Calculate actual distribution amount\",\"params\":{\"amount\":\"The amount of tokens desired to be distributed\",\"indexId\":\"Id of the index\",\"publisher\":\"The publisher of the index\",\"token\":\"Super token address\"},\"returns\":{\"actualAmount\":\"The amount to be distributed after ensuring no rounding errors\",\"newIndexValue\":\"The index value given the desired amount of tokens to be distributed\"}},\"claim(address,address,uint32,address,bytes)\":{\"custom:callbacks\":\" - AgreementUpdated callback to the publisher: - agreementId is for the subscription\",\"custom:note\":\"The subscription should not be approved yet\",\"details\":\"Claim pending distributions\",\"params\":{\"ctx\":\"Context bytes (see ISuperfluid.sol for Context struct)\",\"indexId\":\"Id of the index\",\"publisher\":\"The publisher of the index\",\"subscriber\":\"The subscriber's address\",\"token\":\"Super token address\"}},\"createIndex(address,uint32,bytes)\":{\"custom:callbacks\":\" None\",\"details\":\"Create a new index for the publisher\",\"params\":{\"ctx\":\"Context bytes (see ISuperfluid.sol for Context struct)\",\"indexId\":\"Id of the index\",\"token\":\"Super token address\"}},\"deleteSubscription(address,address,uint32,address,bytes)\":{\"custom:callbacks\":\" - if the subscriber called it - AgreementTerminated callback to the publsiher: - agreementId is for the subscription - if the publisher called it - AgreementTerminated callback to the subscriber: - agreementId is for the subscription\",\"details\":\"Delete the subscription of an user\",\"params\":{\"ctx\":\"Context bytes (see ISuperfluid.sol for Context struct)\",\"indexId\":\"Id of the index\",\"publisher\":\"The publisher of the index\",\"subscriber\":\"The subscriber's address\",\"token\":\"Super token address\"}},\"distribute(address,uint32,uint256,bytes)\":{\"custom:callbacks\":\" None\",\"custom:note\":\" - This is a convenient version of updateIndex. It adds to the index a delta that equals to `amount / totalUnits` - The actual amount distributed could be obtained via `calculateDistribution`. This is due to precision error with index value and units data range\",\"details\":\"Distribute tokens through the index\",\"params\":{\"amount\":\"The amount of tokens desired to be distributed\",\"ctx\":\"Context bytes (see ISuperfluid.sol for Context struct)\",\"indexId\":\"Id of the index\",\"token\":\"Super token address\"}},\"getIndex(address,address,uint32)\":{\"details\":\"Query the data of a index\",\"params\":{\"indexId\":\"Id of the index\",\"publisher\":\"The publisher of the index\",\"token\":\"Super token address\"},\"returns\":{\"exist\":\"Does the index exist\",\"indexValue\":\"Value of the current index\",\"totalUnitsApproved\":\"Total units approved for the index\",\"totalUnitsPending\":\"Total units pending approval for the index\"}},\"getSubscription(address,address,uint32,address)\":{\"details\":\"Get data of a subscription\",\"params\":{\"indexId\":\"Id of the index\",\"publisher\":\"The publisher of the index\",\"subscriber\":\"The subscriber of the index\",\"token\":\"Super token address\"},\"returns\":{\"approved\":\"Is the subscription approved?\",\"exist\":\"Does the subscription exist?\",\"pendingDistribution\":\"Pending amount of tokens to be distributed for unapproved subscription\",\"units\":\"Units of the suscription\"}},\"getSubscriptionByID(address,bytes32)\":{\"details\":\"indexId (agreementId) is the keccak256 hash of encodePacked(\\\"publisher\\\", publisher, indexId)\",\"params\":{\"agreementId\":\"The agreement ID\",\"token\":\"Super token address\"},\"returns\":{\"approved\":\"Is the subscription approved?\",\"indexId\":\"Id of the index\",\"pendingDistribution\":\"Pending amount of tokens to be distributed for unapproved subscription\",\"publisher\":\"The publisher of the index\",\"units\":\"Units of the suscription\"}},\"listSubscriptions(address,address)\":{\"details\":\"List subscriptions of an user\",\"params\":{\"subscriber\":\"The subscriber's address\",\"token\":\"Super token address\"},\"returns\":{\"indexIds\":\"Indexes of the subscriptions\",\"publishers\":\"Publishers of the subcriptions\",\"unitsList\":\"Units of the subscriptions\"}},\"realtimeBalanceOf(address,address,uint256)\":{\"details\":\"Calculate the real-time balance for the account of this agreement class\",\"params\":{\"account\":\"Account the state belongs to\",\"time\":\"Time used for the calculation\"},\"returns\":{\"deposit\":\"Account deposit amount of this agreement\",\"dynamicBalance\":\"Dynamic balance portion of real-time balance of this agreement\",\"owedDeposit\":\"Account owed deposit amount of this agreement\"}},\"revokeSubscription(address,address,uint32,bytes)\":{\"custom:callbacks\":\" - AgreementUpdated callback to the publisher: - agreementId is for the subscription\",\"details\":\"\\\"Unapproves\\\" the subscription and moves approved units to pending\",\"params\":{\"ctx\":\"Context bytes (see ISuperfluid.sol for Context struct)\",\"indexId\":\"Id of the index\",\"publisher\":\"The publisher of the index\",\"token\":\"Super token address\"}},\"updateIndex(address,uint32,uint128,bytes)\":{\"custom:callbacks\":\" None\",\"details\":\"Update index value of an index\",\"params\":{\"ctx\":\"Context bytes (see ISuperfluid.sol for Context struct)\",\"indexId\":\"Id of the index\",\"indexValue\":\"Value of the index\",\"token\":\"Super token address\"}},\"updateSubscription(address,uint32,address,uint128,bytes)\":{\"custom:callbacks\":\" - if subscription exist - AgreementCreated callback to the subscriber: - agreementId is for the subscription - if subscription does not exist - AgreementUpdated callback to the subscriber: - agreementId is for the subscription\",\"details\":\"Update the nuber of units of a subscription\",\"params\":{\"ctx\":\"Context bytes (see ISuperfluid.sol for Context struct)\",\"indexId\":\"Id of the index\",\"subscriber\":\"The subscriber of the index\",\"token\":\"Super token address\",\"units\":\"Number of units of the subscription\"}}},\"title\":\"Instant Distribution Agreement interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getSubscriptionByID(address,bytes32)\":{\"notice\":\"Get data of a subscription by agreement ID\"},\"revokeSubscription(address,address,uint32,bytes)\":{\"notice\":\"Revoke the subscription of an index\"}},\"notice\":\" - A publisher can create as many as indices as possibly identifiable with `indexId`. - `indexId` is deliberately limited to 32 bits, to avoid the chance for sha-3 collision. Despite knowing sha-3 collision is only theoretical. - A publisher can create a subscription to an index for any subscriber. - A subscription consists of: - The index it subscribes to. - Number of units subscribed. - An index consists of: - Current value as `uint128 indexValue`. - Total units of the approved subscriptions as `uint128 totalUnitsApproved`. - Total units of the non approved subscription as `uint128 totalUnitsPending`. - A publisher can update an index with a new value that doesn't decrease. - A publisher can update a subscription with any number of units. - A publisher or a subscriber can delete a subscription and reset its units to zero. - A subscriber must approve the index in order to receive distributions from the publisher each time the index is updated. - The amount distributed is $$\\\\Delta{index} * units$$ - Distributions to a non approved subscription stays in the publisher's deposit until: - the subscriber approves the subscription (side effect), - the publisher updates the subscription (side effect), - the subscriber deletes the subscription even if it is never approved (side effect), - or the subscriber can explicitly claim them.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IInstantDistributionAgreementV1.sol\":\"IInstantDistributionAgreementV1\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IInstantDistributionAgreementV1.sol\":{\"keccak256\":\"0x7b088dfa11a00d2b1e6e0938978364a6918015b052a4bf3ffcc67db9b3182370\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://2437f6ea2d8c8de7613aef5de4dcf3530c2beb801f7d5f3e21ac617e73f8882b\",\"dweb:/ipfs/QmVBtqXYV25fQZ9P6xokBzgFnHCBthJSZdFo9quBY169fd\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol\":{\"keccak256\":\"0x9b4fab6dcac1337f78e04d67d8c2b48b1de8bd4bbf14b475840f9dbda7b8f21e\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://cc2f3629ad0cb46bd4f595880591ad6c9d75a82d920cb9355e462fbf8022c820\",\"dweb:/ipfs/QmXMovxK4qpWT4yffXxUVjkMNwxEfS6mtn39mLSmjaxEdW\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol\":{\"keccak256\":\"0x9cad3866982902ea88df0874a563d2e4aeba5a5bcc6289c30cccf9b4099d2fb6\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://e8fd960b259331f204c7cb7dcd32b09d68f4294e3b872fad00ad467609c3ef72\",\"dweb:/ipfs/QmeZFEvsDunXQGPbXFfN5AvfKM5am1FY8Xv6e3c4tNKvgY\"]}},\"version\":1}"}},"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol":{"BatchOperation":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220da5dd631c35b8847b86cab213313b194f2dd118eb04af90b21bb711f915f469664736f6c63430008120033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDA 0x5D 0xD6 BALANCE 0xC3 JUMPDEST DUP9 SELFBALANCE 0xB8 PUSH13 0xAB213313B194F2DD118EB04AF9 SIGNEXTEND 0x21 0xBB PUSH18 0x1F915F469664736F6C634300081200330000 ","sourceMap":"5648:2624:12:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220da5dd631c35b8847b86cab213313b194f2dd118eb04af90b21bb711f915f469664736f6c63430008120033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDA 0x5D 0xD6 BALANCE 0xC3 JUMPDEST DUP9 SELFBALANCE 0xB8 PUSH13 0xAB213313B194F2DD118EB04AF9 SIGNEXTEND 0x21 0xBB PUSH18 0x1F915F469664736F6C634300081200330000 ","sourceMap":"5648:2624:12:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Superfluid\",\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"OPERATION_TYPE_ERC20_APPROVE\":{\"details\":\"ERC20.approve batch operation type Call spec: ISuperToken(target).operationApprove( abi.decode(data, (address spender, uint256 amount)) )\"},\"OPERATION_TYPE_ERC20_DECREASE_ALLOWANCE\":{\"details\":\"ERC20.decreaseAllowance batch operation type Call spec: ISuperToken(target).operationDecreaseAllowance( abi.decode(data, (address account, address spender, uint256 subtractedValue)) )\"},\"OPERATION_TYPE_ERC20_INCREASE_ALLOWANCE\":{\"details\":\"ERC20.increaseAllowance batch operation type Call spec: ISuperToken(target).operationIncreaseAllowance( abi.decode(data, (address account, address spender, uint256 addedValue)) )\"},\"OPERATION_TYPE_ERC20_TRANSFER_FROM\":{\"details\":\"ERC20.transferFrom batch operation type Call spec: ISuperToken(target).operationTransferFrom( abi.decode(data, (address sender, address recipient, uint256 amount) )\"},\"OPERATION_TYPE_ERC777_SEND\":{\"details\":\"ERC777.send batch operation type Call spec: ISuperToken(target).operationSend( abi.decode(data, (address recipient, uint256 amount, bytes userData) )\"},\"OPERATION_TYPE_SUPERFLUID_CALL_AGREEMENT\":{\"details\":\"Superfluid.callAgreement batch operation type Call spec: callAgreement( ISuperAgreement(target)), abi.decode(data, (bytes callData, bytes userData) )\"},\"OPERATION_TYPE_SUPERFLUID_CALL_APP_ACTION\":{\"details\":\"Superfluid.callAppAction batch operation type Call spec: callAppAction( ISuperApp(target)), data )\"},\"OPERATION_TYPE_SUPERTOKEN_DOWNGRADE\":{\"details\":\"SuperToken.downgrade batch operation type Call spec: ISuperToken(target).operationDowngrade( abi.decode(data, (uint256 amount) )\"},\"OPERATION_TYPE_SUPERTOKEN_UPGRADE\":{\"details\":\"SuperToken.upgrade batch operation type Call spec: ISuperToken(target).operationUpgrade( abi.decode(data, (uint256 amount) )\"}},\"title\":\"Batch operation library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol\":\"BatchOperation\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol\":{\"keccak256\":\"0x80254971aff00fc006d70b85b7bc830bb28096789e72ff3f03aa22cc7810eb0c\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://840f9d959abfbf3919db3dca35336e360b2bbd54e677439a545c7c4f163f6d70\",\"dweb:/ipfs/QmR4CRq7dpYR4NuCSASkNrcnbSScRX8MaEvDs8L7v3xDyr\"]}},\"version\":1}"},"ContextDefinitions":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f6ee11acd8841f1e4cf8ab047c4dd32929a35fd9506eae81223b6bf42284265464736f6c63430008120033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF6 0xEE GT 0xAC 0xD8 DUP5 0x1F 0x1E 0x4C 0xF8 0xAB DIV PUSH29 0x4DD32929A35FD9506EAE81223B6BF42284265464736F6C634300081200 CALLER ","sourceMap":"3374:1188:12:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f6ee11acd8841f1e4cf8ab047c4dd32929a35fd9506eae81223b6bf42284265464736f6c63430008120033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF6 0xEE GT 0xAC 0xD8 DUP5 0x1F 0x1E 0x4C 0xF8 0xAB DIV PUSH29 0x4DD32929A35FD9506EAE81223B6BF42284265464736F6C634300081200 CALLER ","sourceMap":"3374:1188:12:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Superfluid\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Context definitions library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol\":\"ContextDefinitions\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol\":{\"keccak256\":\"0x80254971aff00fc006d70b85b7bc830bb28096789e72ff3f03aa22cc7810eb0c\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://840f9d959abfbf3919db3dca35336e360b2bbd54e677439a545c7c4f163f6d70\",\"dweb:/ipfs/QmR4CRq7dpYR4NuCSASkNrcnbSScRX8MaEvDs8L7v3xDyr\"]}},\"version\":1}"},"FlowOperatorDefinitions":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f4996d1d63aa3ee379ec5128889b3674ee0678764a9bda09f457d432155d961164736f6c63430008120033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DELEGATECALL SWAP10 PUSH14 0x1D63AA3EE379EC5128889B3674EE MOD PUSH25 0x764A9BDA09F457D432155D961164736F6C6343000812003300 ","sourceMap":"4640:942:12:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f4996d1d63aa3ee379ec5128889b3674ee0678764a9bda09f457d432155d961164736f6c63430008120033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DELEGATECALL SWAP10 PUSH14 0x1D63AA3EE379EC5128889B3674EE MOD PUSH25 0x764A9BDA09F457D432155D961164736F6C6343000812003300 ","sourceMap":"4640:942:12:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Superfluid\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Flow Operator definitions library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol\":\"FlowOperatorDefinitions\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol\":{\"keccak256\":\"0x80254971aff00fc006d70b85b7bc830bb28096789e72ff3f03aa22cc7810eb0c\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://840f9d959abfbf3919db3dca35336e360b2bbd54e677439a545c7c4f163f6d70\",\"dweb:/ipfs/QmR4CRq7dpYR4NuCSASkNrcnbSScRX8MaEvDs8L7v3xDyr\"]}},\"version\":1}"},"SuperAppDefinitions":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207d609f4baa33a55d18a8788405fffaeb6b88aaccb0749e127c74ff80c2f3948164736f6c63430008120033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH30 0x609F4BAA33A55D18A8788405FFFAEB6B88AACCB0749E127C74FF80C2F394 DUP2 PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"132:3172:12:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207d609f4baa33a55d18a8788405fffaeb6b88aaccb0749e127c74ff80c2f3948164736f6c63430008120033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH30 0x609F4BAA33A55D18A8788405FFFAEB6B88AACCB0749E127C74FF80C2F394 DUP2 PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"132:3172:12:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Superfluid\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Super app definitions library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol\":\"SuperAppDefinitions\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol\":{\"keccak256\":\"0x80254971aff00fc006d70b85b7bc830bb28096789e72ff3f03aa22cc7810eb0c\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://840f9d959abfbf3919db3dca35336e360b2bbd54e677439a545c7c4f163f6d70\",\"dweb:/ipfs/QmR4CRq7dpYR4NuCSASkNrcnbSScRX8MaEvDs8L7v3xDyr\"]}},\"version\":1}"},"SuperfluidGovernanceConfigs":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ca46d43e9b19dd1e2c46d531f4015b90dd1db589ba0f2db0dd1e89a9d497470064736f6c63430008120033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCA CHAINID 0xD4 RETURNDATACOPY SWAP12 NOT 0xDD 0x1E 0x2C CHAINID 0xD5 BALANCE DELEGATECALL ADD JUMPDEST SWAP1 0xDD SAR 0xB5 DUP10 0xBA 0xF 0x2D 0xB0 0xDD 0x1E DUP10 0xA9 0xD4 SWAP8 SELFBALANCE STOP PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"8352:1487:12:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ca46d43e9b19dd1e2c46d531f4015b90dd1db589ba0f2db0dd1e89a9d497470064736f6c63430008120033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCA CHAINID 0xD4 RETURNDATACOPY SWAP12 NOT 0xDD 0x1E 0x2C CHAINID 0xD5 BALANCE DELEGATECALL ADD JUMPDEST SWAP1 0xDD SAR 0xB5 DUP10 0xBA 0xF 0x2D 0xB0 0xDD 0x1E DUP10 0xA9 0xD4 SWAP8 SELFBALANCE STOP PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"8352:1487:12:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Superfluid\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Superfluid governance configs library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol\":\"SuperfluidGovernanceConfigs\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol\":{\"keccak256\":\"0x80254971aff00fc006d70b85b7bc830bb28096789e72ff3f03aa22cc7810eb0c\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://840f9d959abfbf3919db3dca35336e360b2bbd54e677439a545c7c4f163f6d70\",\"dweb:/ipfs/QmR4CRq7dpYR4NuCSASkNrcnbSScRX8MaEvDs8L7v3xDyr\"]}},\"version\":1}"}},"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol":{"ISuperAgreement":{"abi":[{"inputs":[],"name":"agreementType","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":"time","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"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"agreementType()":"7730599e","realtimeBalanceOf(address,address,uint256)":"9b2e48bc"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"agreementType\",\"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\":\"time\",\"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\"}],\"devdoc\":{\"author\":\"Superfluid\",\"kind\":\"dev\",\"methods\":{\"agreementType()\":{\"details\":\"Get the type of the agreement class\"},\"realtimeBalanceOf(address,address,uint256)\":{\"details\":\"Calculate the real-time balance for the account of this agreement class\",\"params\":{\"account\":\"Account the state belongs to\",\"time\":\"Time used for the calculation\"},\"returns\":{\"deposit\":\"Account deposit amount of this agreement\",\"dynamicBalance\":\"Dynamic balance portion of real-time balance of this agreement\",\"owedDeposit\":\"Account owed deposit amount of this agreement\"}}},\"title\":\"Super agreement interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol\":\"ISuperAgreement\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol\":{\"keccak256\":\"0x9b4fab6dcac1337f78e04d67d8c2b48b1de8bd4bbf14b475840f9dbda7b8f21e\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://cc2f3629ad0cb46bd4f595880591ad6c9d75a82d920cb9355e462fbf8022c820\",\"dweb:/ipfs/QmXMovxK4qpWT4yffXxUVjkMNwxEfS6mtn39mLSmjaxEdW\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol\":{\"keccak256\":\"0x9cad3866982902ea88df0874a563d2e4aeba5a5bcc6289c30cccf9b4099d2fb6\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://e8fd960b259331f204c7cb7dcd32b09d68f4294e3b872fad00ad467609c3ef72\",\"dweb:/ipfs/QmeZFEvsDunXQGPbXFfN5AvfKM5am1FY8Xv6e3c4tNKvgY\"]}},\"version\":1}"}},"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperApp.sol":{"ISuperApp":{"abi":[{"inputs":[{"internalType":"contract ISuperToken","name":"superToken","type":"address"},{"internalType":"address","name":"agreementClass","type":"address"},{"internalType":"bytes32","name":"agreementId","type":"bytes32"},{"internalType":"bytes","name":"agreementData","type":"bytes"},{"internalType":"bytes","name":"cbdata","type":"bytes"},{"internalType":"bytes","name":"ctx","type":"bytes"}],"name":"afterAgreementCreated","outputs":[{"internalType":"bytes","name":"newCtx","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ISuperToken","name":"superToken","type":"address"},{"internalType":"address","name":"agreementClass","type":"address"},{"internalType":"bytes32","name":"agreementId","type":"bytes32"},{"internalType":"bytes","name":"agreementData","type":"bytes"},{"internalType":"bytes","name":"cbdata","type":"bytes"},{"internalType":"bytes","name":"ctx","type":"bytes"}],"name":"afterAgreementTerminated","outputs":[{"internalType":"bytes","name":"newCtx","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ISuperToken","name":"superToken","type":"address"},{"internalType":"address","name":"agreementClass","type":"address"},{"internalType":"bytes32","name":"agreementId","type":"bytes32"},{"internalType":"bytes","name":"agreementData","type":"bytes"},{"internalType":"bytes","name":"cbdata","type":"bytes"},{"internalType":"bytes","name":"ctx","type":"bytes"}],"name":"afterAgreementUpdated","outputs":[{"internalType":"bytes","name":"newCtx","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ISuperToken","name":"superToken","type":"address"},{"internalType":"address","name":"agreementClass","type":"address"},{"internalType":"bytes32","name":"agreementId","type":"bytes32"},{"internalType":"bytes","name":"agreementData","type":"bytes"},{"internalType":"bytes","name":"ctx","type":"bytes"}],"name":"beforeAgreementCreated","outputs":[{"internalType":"bytes","name":"cbdata","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ISuperToken","name":"superToken","type":"address"},{"internalType":"address","name":"agreementClass","type":"address"},{"internalType":"bytes32","name":"agreementId","type":"bytes32"},{"internalType":"bytes","name":"agreementData","type":"bytes"},{"internalType":"bytes","name":"ctx","type":"bytes"}],"name":"beforeAgreementTerminated","outputs":[{"internalType":"bytes","name":"cbdata","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ISuperToken","name":"superToken","type":"address"},{"internalType":"address","name":"agreementClass","type":"address"},{"internalType":"bytes32","name":"agreementId","type":"bytes32"},{"internalType":"bytes","name":"agreementData","type":"bytes"},{"internalType":"bytes","name":"ctx","type":"bytes"}],"name":"beforeAgreementUpdated","outputs":[{"internalType":"bytes","name":"cbdata","type":"bytes"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"afterAgreementCreated(address,address,bytes32,bytes,bytes,bytes)":"d86ed3e5","afterAgreementTerminated(address,address,bytes32,bytes,bytes,bytes)":"53c11f99","afterAgreementUpdated(address,address,bytes32,bytes,bytes,bytes)":"230dbd29","beforeAgreementCreated(address,address,bytes32,bytes,bytes)":"30d9c915","beforeAgreementTerminated(address,address,bytes32,bytes,bytes)":"5f9e7d77","beforeAgreementUpdated(address,address,bytes32,bytes,bytes)":"884d1f40"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract ISuperToken\",\"name\":\"superToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"agreementId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"agreementData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"cbdata\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"afterAgreementCreated\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperToken\",\"name\":\"superToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"agreementId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"agreementData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"cbdata\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"afterAgreementTerminated\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperToken\",\"name\":\"superToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"agreementId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"agreementData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"cbdata\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"afterAgreementUpdated\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperToken\",\"name\":\"superToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"agreementId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"agreementData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"beforeAgreementCreated\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"cbdata\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperToken\",\"name\":\"superToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"agreementId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"agreementData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"beforeAgreementTerminated\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"cbdata\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperToken\",\"name\":\"superToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"agreementId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"agreementData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"beforeAgreementUpdated\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"cbdata\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Superfluid\",\"details\":\"Be aware of the app being jailed, when the word permitted is used.\",\"kind\":\"dev\",\"methods\":{\"afterAgreementCreated(address,address,bytes32,bytes,bytes,bytes)\":{\"custom:note\":\" - State changes is permitted. - Only revert with a \\\"reason\\\" is permitted.\",\"details\":\"Callback after a new agreement is created.\",\"params\":{\"agreementClass\":\"The agreement class address.\",\"agreementData\":\"The agreement data (non-compressed)\",\"agreementId\":\"The agreementId\",\"cbdata\":\"The data returned from the before-hook callback.\",\"ctx\":\"The context data.\",\"superToken\":\"The super token used for the agreement.\"},\"returns\":{\"newCtx\":\"The current context of the transaction.\"}},\"afterAgreementTerminated(address,address,bytes32,bytes,bytes,bytes)\":{\"custom:note\":\" - State changes is permitted. - Revert is not permitted.\",\"details\":\"Callback after a new agreement is terminated.\",\"params\":{\"agreementClass\":\"The agreement class address.\",\"agreementData\":\"The agreement data (non-compressed)\",\"agreementId\":\"The agreementId\",\"cbdata\":\"The data returned from the before-hook callback.\",\"ctx\":\"The context data.\",\"superToken\":\"The super token used for the agreement.\"},\"returns\":{\"newCtx\":\"The current context of the transaction.\"}},\"afterAgreementUpdated(address,address,bytes32,bytes,bytes,bytes)\":{\"custom:note\":\" - State changes is permitted. - Only revert with a \\\"reason\\\" is permitted.\",\"details\":\"Callback after a new agreement is updated.\",\"params\":{\"agreementClass\":\"The agreement class address.\",\"agreementData\":\"The agreement data (non-compressed)\",\"agreementId\":\"The agreementId\",\"cbdata\":\"The data returned from the before-hook callback.\",\"ctx\":\"The context data.\",\"superToken\":\"The super token used for the agreement.\"},\"returns\":{\"newCtx\":\"The current context of the transaction.\"}},\"beforeAgreementCreated(address,address,bytes32,bytes,bytes)\":{\"custom:note\":\" - It will be invoked with `staticcall`, no state changes are permitted. - Only revert with a \\\"reason\\\" is permitted.\",\"details\":\"Callback before a new agreement is created.\",\"params\":{\"agreementClass\":\"The agreement class address.\",\"agreementData\":\"The agreement data (non-compressed)\",\"agreementId\":\"The agreementId\",\"ctx\":\"The context data.\",\"superToken\":\"The super token used for the agreement.\"},\"returns\":{\"cbdata\":\"A free format in memory data the app can use to pass arbitary information to the after-hook callback.\"}},\"beforeAgreementTerminated(address,address,bytes32,bytes,bytes)\":{\"custom:note\":\" - It will be invoked with `staticcall`, no state changes are permitted. - Revert is not permitted.\",\"details\":\"Callback before a new agreement is terminated.\",\"params\":{\"agreementClass\":\"The agreement class address.\",\"agreementData\":\"The agreement data (non-compressed)\",\"agreementId\":\"The agreementId\",\"ctx\":\"The context data.\",\"superToken\":\"The super token used for the agreement.\"},\"returns\":{\"cbdata\":\"A free format in memory data the app can use to pass arbitary information to the after-hook callback.\"}},\"beforeAgreementUpdated(address,address,bytes32,bytes,bytes)\":{\"custom:note\":\" - It will be invoked with `staticcall`, no state changes are permitted. - Only revert with a \\\"reason\\\" is permitted.\",\"details\":\"Callback before a new agreement is updated.\",\"params\":{\"agreementClass\":\"The agreement class address.\",\"agreementData\":\"The agreement data (non-compressed)\",\"agreementId\":\"The agreementId\",\"ctx\":\"The context data.\",\"superToken\":\"The super token used for the agreement.\"},\"returns\":{\"cbdata\":\"A free format in memory data the app can use to pass arbitary information to the after-hook callback.\"}}},\"title\":\"SuperApp interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperApp.sol\":\"ISuperApp\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"@openzeppelin/contracts/token/ERC777/IERC777.sol\":{\"keccak256\":\"0x385a7061f1436b079d44c140dee9387d5313e94874ff9ee877dc0085c981ac3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c3fe22bb0d9527356e11f267f9187134de4d4ed1ff77468b4d73e3238697b96\",\"dweb:/ipfs/Qmc8caJctgxbzXEpxRogQMR2bnBk5U67hA7kKbUEG2PUXV\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol\":{\"keccak256\":\"0x80254971aff00fc006d70b85b7bc830bb28096789e72ff3f03aa22cc7810eb0c\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://840f9d959abfbf3919db3dca35336e360b2bbd54e677439a545c7c4f163f6d70\",\"dweb:/ipfs/QmR4CRq7dpYR4NuCSASkNrcnbSScRX8MaEvDs8L7v3xDyr\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol\":{\"keccak256\":\"0x9b4fab6dcac1337f78e04d67d8c2b48b1de8bd4bbf14b475840f9dbda7b8f21e\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://cc2f3629ad0cb46bd4f595880591ad6c9d75a82d920cb9355e462fbf8022c820\",\"dweb:/ipfs/QmXMovxK4qpWT4yffXxUVjkMNwxEfS6mtn39mLSmjaxEdW\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperApp.sol\":{\"keccak256\":\"0x6cc4b0724d977190c7441dfc3be6c6e48b43b555c3370af32ef5b6600f15f53f\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://3e89c944642772a42429f21a11017b57deb98a9198f8e4f8749f00aaee71299e\",\"dweb:/ipfs/QmaSv9GvqikcGHJ3tcwATDHSpQw6mfnHPDtcfqcZSS7LF6\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.sol\":{\"keccak256\":\"0x6860f0bf69dcc1d1ec39eefb43e0cd18b276b48ebe9efd53450e09cd2f997ab2\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://6421f80f2ff7818bd235b7bf4b911cc40edcb598507a246b4de0fa0191a9e1aa\",\"dweb:/ipfs/QmWxktXMjYhi1zt52D3JXNcxCFesXu8kQoSCJQ3j88apM3\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperTokenFactory.sol\":{\"keccak256\":\"0xe2525ef2906504e2f61775ed91bbebeea2f4e2e3fa42ce190561acf6a01187ff\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://7a9859eb432321a65cd15ca988a13776e1c31df44b4cf25f95fa04b54a8a8625\",\"dweb:/ipfs/QmQVJQoeoWemptZhbRgWJZWwMTiNtxVsc1FYmGdtdTfqcL\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol\":{\"keccak256\":\"0xab9dab941f99d0f0ef6125fb6eafde03378d7c3e94e613dd12fb7fbf594c3373\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://928c6ef915dee69058d4cfcb9f2344d4fc78d9763b47b17e5c03fbff64ba3c64\",\"dweb:/ipfs/Qmdk733ZHceatz3qbuodLCCS9TUspJJtXLoX6vWwMvrPDE\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance.sol\":{\"keccak256\":\"0x90a9259d0f0bb6b1bb6d48f051277eb75df96a9fbe684a203a3a468ad19318e2\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://9c8162a2d07ffe768920fef55292684149173afefbfba76b8fca007e55092229\",\"dweb:/ipfs/QmducLNwrzeUXEpBjUTSMu7sfmQEwVhcYXApe4brc1zQ6V\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol\":{\"keccak256\":\"0x9cad3866982902ea88df0874a563d2e4aeba5a5bcc6289c30cccf9b4099d2fb6\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://e8fd960b259331f204c7cb7dcd32b09d68f4294e3b872fad00ad467609c3ef72\",\"dweb:/ipfs/QmeZFEvsDunXQGPbXFfN5AvfKM5am1FY8Xv6e3c4tNKvgY\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo.sol\":{\"keccak256\":\"0x55be78ffb441c782f612b153d7d9049e3f0dbfd412c1f7df29c896b972b2985f\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://a223c68e38a6c9b1e363e525911bc7eda44ea517865ae53bd0d34ff858cc02ae\",\"dweb:/ipfs/QmVruGehibG6Emr2A6JHwUnhd4NzsGkE24cbGqnDpEvrKh\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.sol\":{\"keccak256\":\"0x7456cd394cc905aae7cdbd4601ce1c296c768c13c28e66efbb913cc070bad3e4\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://5a6589b428b724721ba5b4dd196c8f366a6e694ef313add093f29af64496c042\",\"dweb:/ipfs/QmSMgV6y8L6pyyzDz6kKmafVwujNWcjTqutpCBxe4uNRqg\"]}},\"version\":1}"}},"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.sol":{"ISuperToken":{"abi":[{"inputs":[],"name":"SF_TOKEN_AGREEMENT_ALREADY_EXISTS","type":"error"},{"inputs":[],"name":"SF_TOKEN_AGREEMENT_DOES_NOT_EXIST","type":"error"},{"inputs":[],"name":"SF_TOKEN_BURN_INSUFFICIENT_BALANCE","type":"error"},{"inputs":[],"name":"SF_TOKEN_MOVE_INSUFFICIENT_BALANCE","type":"error"},{"inputs":[],"name":"SF_TOKEN_ONLY_HOST","type":"error"},{"inputs":[],"name":"SF_TOKEN_ONLY_LISTED_AGREEMENT","type":"error"},{"inputs":[],"name":"SUPER_TOKEN_APPROVE_FROM_ZERO_ADDRESS","type":"error"},{"inputs":[],"name":"SUPER_TOKEN_APPROVE_TO_ZERO_ADDRESS","type":"error"},{"inputs":[],"name":"SUPER_TOKEN_BURN_FROM_ZERO_ADDRESS","type":"error"},{"inputs":[],"name":"SUPER_TOKEN_CALLER_IS_NOT_OPERATOR_FOR_HOLDER","type":"error"},{"inputs":[],"name":"SUPER_TOKEN_INFLATIONARY_DEFLATIONARY_NOT_SUPPORTED","type":"error"},{"inputs":[],"name":"SUPER_TOKEN_MINT_TO_ZERO_ADDRESS","type":"error"},{"inputs":[],"name":"SUPER_TOKEN_NOT_ERC777_TOKENS_RECIPIENT","type":"error"},{"inputs":[],"name":"SUPER_TOKEN_NO_UNDERLYING_TOKEN","type":"error"},{"inputs":[],"name":"SUPER_TOKEN_ONLY_HOST","type":"error"},{"inputs":[],"name":"SUPER_TOKEN_ONLY_SELF","type":"error"},{"inputs":[],"name":"SUPER_TOKEN_TRANSFER_FROM_ZERO_ADDRESS","type":"error"},{"inputs":[],"name":"SUPER_TOKEN_TRANSFER_TO_ZERO_ADDRESS","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"agreementClass","type":"address"},{"indexed":false,"internalType":"bytes32","name":"id","type":"bytes32"},{"indexed":false,"internalType":"bytes32[]","name":"data","type":"bytes32[]"}],"name":"AgreementCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"agreementClass","type":"address"},{"indexed":false,"internalType":"bytes32","name":"id","type":"bytes32"},{"indexed":true,"internalType":"address","name":"penaltyAccount","type":"address"},{"indexed":true,"internalType":"address","name":"rewardAccount","type":"address"},{"indexed":false,"internalType":"uint256","name":"rewardAmount","type":"uint256"}],"name":"AgreementLiquidated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"liquidatorAccount","type":"address"},{"indexed":true,"internalType":"address","name":"agreementClass","type":"address"},{"indexed":false,"internalType":"bytes32","name":"id","type":"bytes32"},{"indexed":true,"internalType":"address","name":"penaltyAccount","type":"address"},{"indexed":true,"internalType":"address","name":"bondAccount","type":"address"},{"indexed":false,"internalType":"uint256","name":"rewardAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bailoutAmount","type":"uint256"}],"name":"AgreementLiquidatedBy","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"agreementClass","type":"address"},{"indexed":false,"internalType":"bytes32","name":"id","type":"bytes32"},{"indexed":true,"internalType":"address","name":"liquidatorAccount","type":"address"},{"indexed":true,"internalType":"address","name":"targetAccount","type":"address"},{"indexed":false,"internalType":"address","name":"rewardAmountReceiver","type":"address"},{"indexed":false,"internalType":"uint256","name":"rewardAmount","type":"uint256"},{"indexed":false,"internalType":"int256","name":"targetAccountBalanceDelta","type":"int256"},{"indexed":false,"internalType":"bytes","name":"liquidationTypeData","type":"bytes"}],"name":"AgreementLiquidatedV2","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"agreementClass","type":"address"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"slotId","type":"uint256"}],"name":"AgreementStateUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"agreementClass","type":"address"},{"indexed":false,"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"AgreementTerminated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"agreementClass","type":"address"},{"indexed":false,"internalType":"bytes32","name":"id","type":"bytes32"},{"indexed":false,"internalType":"bytes32[]","name":"data","type":"bytes32[]"}],"name":"AgreementUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"tokenHolder","type":"address"}],"name":"AuthorizedOperator","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"bailoutAccount","type":"address"},{"indexed":false,"internalType":"uint256","name":"bailoutAmount","type":"uint256"}],"name":"Bailout","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"Burned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"Minted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"tokenHolder","type":"address"}],"name":"RevokedOperator","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"Sent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokenDowngraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokenUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"authorizeOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"bytes32[]","name":"data","type":"bytes32[]"}],"name":"createAgreement","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"defaultOperators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"downgrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"downgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getAccountActiveAgreements","outputs":[{"internalType":"contract ISuperAgreement[]","name":"activeAgreements","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"agreementClass","type":"address"},{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"uint256","name":"dataLength","type":"uint256"}],"name":"getAgreementData","outputs":[{"internalType":"bytes32[]","name":"data","type":"bytes32[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"agreementClass","type":"address"},{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"slotId","type":"uint256"},{"internalType":"uint256","name":"dataLength","type":"uint256"}],"name":"getAgreementStateSlot","outputs":[{"internalType":"bytes32[]","name":"slotData","type":"bytes32[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getHost","outputs":[{"internalType":"address","name":"host","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUnderlyingToken","outputs":[{"internalType":"address","name":"tokenAddr","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"granularity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"underlyingToken","type":"address"},{"internalType":"uint8","name":"underlyingDecimals","type":"uint8"},{"internalType":"string","name":"n","type":"string"},{"internalType":"string","name":"s","type":"string"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"isAccountCritical","outputs":[{"internalType":"bool","name":"isCritical","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isAccountCriticalNow","outputs":[{"internalType":"bool","name":"isCritical","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"isAccountSolvent","outputs":[{"internalType":"bool","name":"isSolvent","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isAccountSolventNow","outputs":[{"internalType":"bool","name":"isSolvent","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"tokenHolder","type":"address"}],"name":"isOperatorFor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"bytes","name":"liquidationTypeData","type":"bytes"},{"internalType":"address","name":"liquidatorAccount","type":"address"},{"internalType":"bool","name":"useDefaultRewardAccount","type":"bool"},{"internalType":"address","name":"targetAccount","type":"address"},{"internalType":"uint256","name":"rewardAmount","type":"uint256"},{"internalType":"int256","name":"targetAccountBalanceDelta","type":"int256"}],"name":"makeLiquidationPayoutsV2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"operationApprove","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"operationDecreaseAllowance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"operationDowngrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"operationIncreaseAllowance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"operationSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"operationTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"operationUpgrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"operatorBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"operatorData","type":"bytes"}],"name":"operatorSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"realtimeBalanceOf","outputs":[{"internalType":"int256","name":"availableBalance","type":"int256"},{"internalType":"uint256","name":"deposit","type":"uint256"},{"internalType":"uint256","name":"owedDeposit","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"realtimeBalanceOfNow","outputs":[{"internalType":"int256","name":"availableBalance","type":"int256"},{"internalType":"uint256","name":"deposit","type":"uint256"},{"internalType":"uint256","name":"owedDeposit","type":"uint256"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"name":"revokeOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"selfApproveFor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"selfBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"selfMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"selfTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"send","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"int256","name":"delta","type":"int256"}],"name":"settleBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"uint256","name":"dataLength","type":"uint256"}],"name":"terminateAgreement","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"}],"name":"transferAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"bytes32[]","name":"data","type":"bytes32[]"}],"name":"updateAgreementData","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"slotId","type":"uint256"},{"internalType":"bytes32[]","name":"slotData","type":"bytes32[]"}],"name":"updateAgreementStateSlot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"upgrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","authorizeOperator(address)":"959b8c3f","balanceOf(address)":"70a08231","burn(uint256,bytes)":"fe9d9303","createAgreement(bytes32,bytes32[])":"12a6a3f8","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","defaultOperators()":"06e48538","downgrade(uint256)":"11bcc81e","downgradeTo(address,uint256)":"83ba2525","getAccountActiveAgreements(address)":"386fa221","getAgreementData(address,bytes32,uint256)":"6c2d9f2f","getAgreementStateSlot(address,address,uint256,uint256)":"4b61cc33","getHost()":"20bc4425","getUnderlyingToken()":"ee719bc8","granularity()":"556f0dc7","increaseAllowance(address,uint256)":"39509351","initialize(address,uint8,string,string)":"42fe0980","isAccountCritical(address,uint256)":"d9d078d6","isAccountCriticalNow(address)":"79359f6f","isAccountSolvent(address,uint256)":"b84cdd4a","isAccountSolventNow(address)":"bb0d196e","isOperatorFor(address,address)":"d95b6371","makeLiquidationPayoutsV2(bytes32,bytes,address,bool,address,uint256,int256)":"1863e809","name()":"06fdde03","operationApprove(address,address,uint256)":"62aa5287","operationDecreaseAllowance(address,address,uint256)":"c780fd82","operationDowngrade(address,uint256)":"245887fc","operationIncreaseAllowance(address,address,uint256)":"4b2763b3","operationSend(address,address,uint256,bytes)":"ca0c1e7f","operationTransferFrom(address,address,address,uint256)":"16d055d6","operationUpgrade(address,uint256)":"ca789464","operatorBurn(address,uint256,bytes,bytes)":"fc673c4f","operatorSend(address,address,uint256,bytes,bytes)":"62ad1b83","realtimeBalanceOf(address,uint256)":"eb3537cc","realtimeBalanceOfNow(address)":"2ec8eec7","revokeOperator(address)":"fad8b32a","selfApproveFor(address,address,uint256)":"66a12fb6","selfBurn(address,uint256,bytes)":"9d876741","selfMint(address,uint256,bytes)":"c68d4283","selfTransferFrom(address,address,address,uint256)":"41b706be","send(address,uint256,bytes)":"9bd9bbc6","settleBalance(address,int256)":"cf97256d","symbol()":"95d89b41","terminateAgreement(bytes32,uint256)":"27048397","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferAll(address)":"a3a7e7f3","transferFrom(address,address,uint256)":"23b872dd","updateAgreementData(bytes32,bytes32[])":"a1b2bf8b","updateAgreementStateSlot(address,uint256,bytes32[])":"090c415e","upgrade(uint256)":"45977d03","upgradeTo(address,uint256,bytes)":"5b9d09cc"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"SF_TOKEN_AGREEMENT_ALREADY_EXISTS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SF_TOKEN_AGREEMENT_DOES_NOT_EXIST\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SF_TOKEN_BURN_INSUFFICIENT_BALANCE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SF_TOKEN_MOVE_INSUFFICIENT_BALANCE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SF_TOKEN_ONLY_HOST\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SF_TOKEN_ONLY_LISTED_AGREEMENT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SUPER_TOKEN_APPROVE_FROM_ZERO_ADDRESS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SUPER_TOKEN_APPROVE_TO_ZERO_ADDRESS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SUPER_TOKEN_BURN_FROM_ZERO_ADDRESS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SUPER_TOKEN_CALLER_IS_NOT_OPERATOR_FOR_HOLDER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SUPER_TOKEN_INFLATIONARY_DEFLATIONARY_NOT_SUPPORTED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SUPER_TOKEN_MINT_TO_ZERO_ADDRESS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SUPER_TOKEN_NOT_ERC777_TOKENS_RECIPIENT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SUPER_TOKEN_NO_UNDERLYING_TOKEN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SUPER_TOKEN_ONLY_HOST\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SUPER_TOKEN_ONLY_SELF\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SUPER_TOKEN_TRANSFER_FROM_ZERO_ADDRESS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SUPER_TOKEN_TRANSFER_TO_ZERO_ADDRESS\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32[]\",\"name\":\"data\",\"type\":\"bytes32[]\"}],\"name\":\"AgreementCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"penaltyAccount\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"rewardAccount\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewardAmount\",\"type\":\"uint256\"}],\"name\":\"AgreementLiquidated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"liquidatorAccount\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"penaltyAccount\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"bondAccount\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewardAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bailoutAmount\",\"type\":\"uint256\"}],\"name\":\"AgreementLiquidatedBy\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"liquidatorAccount\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"targetAccount\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"rewardAmountReceiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewardAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"targetAccountBalanceDelta\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"liquidationTypeData\",\"type\":\"bytes\"}],\"name\":\"AgreementLiquidatedV2\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slotId\",\"type\":\"uint256\"}],\"name\":\"AgreementStateUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"AgreementTerminated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32[]\",\"name\":\"data\",\"type\":\"bytes32[]\"}],\"name\":\"AgreementUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenHolder\",\"type\":\"address\"}],\"name\":\"AuthorizedOperator\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"bailoutAccount\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bailoutAmount\",\"type\":\"uint256\"}],\"name\":\"Bailout\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"operatorData\",\"type\":\"bytes\"}],\"name\":\"Burned\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"operatorData\",\"type\":\"bytes\"}],\"name\":\"Minted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenHolder\",\"type\":\"address\"}],\"name\":\"RevokedOperator\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"operatorData\",\"type\":\"bytes\"}],\"name\":\"Sent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenDowngraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"authorizeOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"data\",\"type\":\"bytes32[]\"}],\"name\":\"createAgreement\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultOperators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"downgrade\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"downgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getAccountActiveAgreements\",\"outputs\":[{\"internalType\":\"contract ISuperAgreement[]\",\"name\":\"activeAgreements\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"dataLength\",\"type\":\"uint256\"}],\"name\":\"getAgreementData\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"data\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"slotId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"dataLength\",\"type\":\"uint256\"}],\"name\":\"getAgreementStateSlot\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"slotData\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getHost\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"host\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUnderlyingToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"granularity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"underlyingToken\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"underlyingDecimals\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"n\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"s\",\"type\":\"string\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"isAccountCritical\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isCritical\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isAccountCriticalNow\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isCritical\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"isAccountSolvent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isSolvent\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isAccountSolventNow\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isSolvent\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenHolder\",\"type\":\"address\"}],\"name\":\"isOperatorFor\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"liquidationTypeData\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"liquidatorAccount\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"useDefaultRewardAccount\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"targetAccount\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"rewardAmount\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"targetAccountBalanceDelta\",\"type\":\"int256\"}],\"name\":\"makeLiquidationPayoutsV2\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"operationApprove\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"operationDecreaseAllowance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"operationDowngrade\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"operationIncreaseAllowance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"operationSend\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"operationTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"operationUpgrade\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"operatorData\",\"type\":\"bytes\"}],\"name\":\"operatorBurn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"operatorData\",\"type\":\"bytes\"}],\"name\":\"operatorSend\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"realtimeBalanceOf\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"availableBalance\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"deposit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"owedDeposit\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"realtimeBalanceOfNow\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"availableBalance\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"deposit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"owedDeposit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"revokeOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"selfApproveFor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"selfBurn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"selfMint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"selfTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"send\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"int256\",\"name\":\"delta\",\"type\":\"int256\"}],\"name\":\"settleBalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"dataLength\",\"type\":\"uint256\"}],\"name\":\"terminateAgreement\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"transferAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"data\",\"type\":\"bytes32[]\"}],\"name\":\"updateAgreementData\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"slotId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"slotData\",\"type\":\"bytes32[]\"}],\"name\":\"updateAgreementStateSlot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"upgrade\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Superfluid\",\"events\":{\"AgreementCreated(address,bytes32,bytes32[])\":{\"details\":\"Agreement created event\",\"params\":{\"agreementClass\":\"Contract address of the agreement\",\"data\":\"Agreement data\",\"id\":\"Agreement ID\"}},\"AgreementLiquidated(address,bytes32,address,address,uint256)\":{\"custom:deprecated\":\"Use AgreementLiquidatedV2 instead\",\"details\":\"Agreement liquidation event (DEPRECATED BY AgreementLiquidatedBy)\",\"params\":{\"agreementClass\":\"Contract address of the agreement\",\"id\":\"Agreement ID\",\"penaltyAccount\":\"Account of the agreement to be penalized\",\"rewardAccount\":\"Account that collect the reward\",\"rewardAmount\":\"Amount of liquidation reward\"}},\"AgreementLiquidatedBy(address,address,bytes32,address,address,uint256,uint256)\":{\"custom:deprecated\":\"Use AgreementLiquidatedV2 instead\",\"custom:note\":\" Reward account rule: - if bailout is equal to 0, then - the bondAccount will get the rewardAmount, - the penaltyAccount will pay for the rewardAmount. - if bailout is larger than 0, then - the liquidatorAccount will get the rewardAmouont, - the bondAccount will pay for both the rewardAmount and bailoutAmount, - the penaltyAccount will pay for the rewardAmount while get the bailoutAmount.\",\"details\":\"Agreement liquidation event (DEPRECATED BY AgreementLiquidatedV2)\",\"params\":{\"agreementClass\":\"Contract address of the agreement\",\"bailoutAmount\":\"Amount of liquidation bailouot\",\"bondAccount\":\"Account that collect the reward or bailout accounts\",\"id\":\"Agreement ID\",\"liquidatorAccount\":\"Account of the agent that performed the liquidation.\",\"penaltyAccount\":\"Account of the agreement to be penalized\",\"rewardAmount\":\"Amount of liquidation reward\"}},\"AgreementLiquidatedV2(address,bytes32,address,address,address,uint256,int256,bytes)\":{\"custom:note\":\" Reward account rule: - if the agreement is liquidated during the PIC period - the rewardAmountReceiver will get the rewardAmount (remaining deposit), regardless of the liquidatorAccount - the targetAccount will pay for the rewardAmount - if the agreement is liquidated after the PIC period AND the targetAccount is solvent - the rewardAmountReceiver will get the rewardAmount (remaining deposit) - the targetAccount will pay for the rewardAmount - if the targetAccount is insolvent - the liquidatorAccount will get the rewardAmount (single deposit) - the default reward account (governance) will pay for both the rewardAmount and bailoutAmount - the targetAccount will receive the bailoutAmount\",\"details\":\"Agreement liquidation event v2 (including agent account)\",\"params\":{\"agreementClass\":\"Contract address of the agreement\",\"id\":\"Agreement ID\",\"liquidationTypeData\":\"The encoded liquidation type data including the version (how to decode)\",\"liquidatorAccount\":\"Address of the executor of the liquidation\",\"rewardAmount\":\"The amount the reward recipient account balance should change by\",\"rewardAmountReceiver\":\"Account that collects the reward or bails out insolvent accounts\",\"targetAccount\":\"Account of the stream sender\",\"targetAccountBalanceDelta\":\"The amount the sender account balance should change by\"}},\"AgreementStateUpdated(address,address,uint256)\":{\"details\":\"Agreement account state updated event\",\"params\":{\"account\":\"Account updated\",\"agreementClass\":\"Contract address of the agreement\",\"slotId\":\"slot id of the agreement state\"}},\"AgreementTerminated(address,bytes32)\":{\"details\":\"Agreement terminated event\",\"params\":{\"agreementClass\":\"Contract address of the agreement\",\"id\":\"Agreement ID\"}},\"AgreementUpdated(address,bytes32,bytes32[])\":{\"details\":\"Agreement updated event\",\"params\":{\"agreementClass\":\"Contract address of the agreement\",\"data\":\"Agreement data\",\"id\":\"Agreement ID\"}},\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"AuthorizedOperator(address,address)\":{\"details\":\"Emitted when `operator` is made operator for `tokenHolder`.\"},\"Bailout(address,uint256)\":{\"custom:deprecated\":\"Use AgreementLiquidatedV2 instead\",\"details\":\"System bailout occurred (DEPRECATED BY AgreementLiquidatedBy)\",\"params\":{\"bailoutAccount\":\"Account that bailout the penalty account\",\"bailoutAmount\":\"Amount of account bailout\"}},\"Burned(address,address,uint256,bytes,bytes)\":{\"details\":\"Emitted when `operator` destroys `amount` tokens from `account`. Note that some additional user `data` and `operatorData` can be logged in the event.\"},\"Minted(address,address,uint256,bytes,bytes)\":{\"details\":\"Emitted when `amount` tokens are created by `operator` and assigned to `to`. Note that some additional user `data` and `operatorData` can be logged in the event.\"},\"RevokedOperator(address,address)\":{\"details\":\"Emitted when `operator` is revoked its operator status for `tokenHolder`.\"},\"TokenDowngraded(address,uint256)\":{\"details\":\"Token downgrade event\",\"params\":{\"account\":\"Account whose tokens are downgraded\",\"amount\":\"Amount of tokens downgraded\"}},\"TokenUpgraded(address,uint256)\":{\"details\":\"Token upgrade event\",\"params\":{\"account\":\"Account where tokens are upgraded to\",\"amount\":\"Amount of tokens upgraded (in 18 decimals)\"}},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default.\"},\"approve(address,uint256)\":{\"custom:emits\":\"an {Approval} event.\",\"custom:note\":\"Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\",\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens.\",\"returns\":{\"_0\":\"Returns Success a boolean value indicating whether the operation succeeded.\"}},\"authorizeOperator(address)\":{\"custom:emits\":\"an {AuthorizedOperator} event.\",\"custom:requirements\":\" - `operator` cannot be calling address.\",\"details\":\"Make an account an operator of the caller. See {isOperatorFor}.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by an account (`owner`).\"},\"burn(uint256,bytes)\":{\"custom:emits\":\"a {Burned} event.\",\"custom:requirements\":\" - the caller must have at least `amount` tokens.\",\"details\":\"Destroys `amount` tokens from the caller's account, reducing the total supply and transfers the underlying token to the caller's account. If a send hook is registered for the caller, the corresponding function will be called with `data` and empty `operatorData`. See {IERC777Sender}.\"},\"createAgreement(bytes32,bytes32[])\":{\"details\":\"Create a new agreement\",\"params\":{\"data\":\"Agreement data\",\"id\":\"Agreement ID\"}},\"decimals()\":{\"custom:note\":\"SuperToken always uses 18 decimals. This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\",\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called.\"},\"decreaseAllowance(address,uint256)\":{\"custom:emits\":\"an {Approval} event indicating the updated allowance.\",\"custom:requirements\":\" - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\",\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}.\"},\"defaultOperators()\":{\"details\":\"Returns the list of default operators. These accounts are operators for all token holders, even if {authorizeOperator} was never called on them. This list is immutable, but individual holders may revoke these via {revokeOperator}, in which case {isOperatorFor} will return false.\"},\"downgrade(uint256)\":{\"details\":\"Downgrade SuperToken to ERC20.It will call transfer to send tokens\",\"params\":{\"amount\":\"Number of tokens to be downgraded\"}},\"downgradeTo(address,uint256)\":{\"details\":\"Downgrade SuperToken to ERC20 and transfer immediately\",\"params\":{\"amount\":\"Number of tokens to be downgraded (in 18 decimals)\",\"to\":\"The account to receive downgraded tokens\"}},\"getAccountActiveAgreements(address)\":{\"details\":\"An active agreement is one that has state for the account\",\"params\":{\"account\":\"Account to query\"},\"returns\":{\"activeAgreements\":\"List of accounts that have non-zero states for the account\"}},\"getAgreementData(address,bytes32,uint256)\":{\"details\":\"Get data of the agreement\",\"params\":{\"agreementClass\":\"Contract address of the agreement\",\"id\":\"Agreement ID\"},\"returns\":{\"data\":\"Data of the agreement\"}},\"getAgreementStateSlot(address,address,uint256,uint256)\":{\"details\":\"Get data of the slot of the state of an agreement\",\"params\":{\"account\":\"Account to query\",\"agreementClass\":\"Contract address of the agreement\",\"dataLength\":\"length of the state data\",\"slotId\":\"slot id of the state\"}},\"getHost()\":{\"details\":\"Get superfluid host contract address\"},\"getUnderlyingToken()\":{\"details\":\"Return the underlying token contract\",\"returns\":{\"tokenAddr\":\"Underlying token address\"}},\"granularity()\":{\"custom:note\":\"For super token contracts, this value is always 1\",\"details\":\"Returns the smallest part of the token that is not divisible. This means all token operations (creation, movement and destruction) must have amounts that are a multiple of this number.\"},\"increaseAllowance(address,uint256)\":{\"custom:emits\":\"an {Approval} event indicating the updated allowance.\",\"custom:requirements\":\" - `spender` cannot be the zero address.\",\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}.\"},\"initialize(address,uint8,string,string)\":{\"details\":\"Initialize the contract\"},\"isAccountCritical(address,uint256)\":{\"details\":\"A critical account is when availableBalance < 0\",\"params\":{\"account\":\"The account to check\",\"timestamp\":\"The time we'd like to check if the account is critical (should use future)\"},\"returns\":{\"isCritical\":\"Whether the account is critical\"}},\"isAccountCriticalNow(address)\":{\"details\":\"A critical account is when availableBalance < 0\",\"params\":{\"account\":\"The account to check\"},\"returns\":{\"isCritical\":\"Whether the account is critical\"}},\"isAccountSolvent(address,uint256)\":{\"details\":\"An account is insolvent when the sum of deposits for a token can't cover the negative availableBalance\",\"params\":{\"account\":\"The account to check\",\"timestamp\":\"The time we'd like to check if the account is solvent (should use future)\"},\"returns\":{\"isSolvent\":\"True if the account is solvent, false otherwise\"}},\"isAccountSolventNow(address)\":{\"details\":\"An account is insolvent when the sum of deposits for a token can't cover the negative availableBalance\",\"params\":{\"account\":\"The account to check\"},\"returns\":{\"isSolvent\":\"True if the account is solvent, false otherwise\"}},\"isOperatorFor(address,address)\":{\"details\":\"Returns true if an account is an operator of `tokenHolder`. Operators can send and burn tokens on behalf of their owners. All accounts are their own operator. See {operatorSend} and {operatorBurn}.\"},\"makeLiquidationPayoutsV2(bytes32,bytes,address,bool,address,uint256,int256)\":{\"custom:modifiers\":\" - onlyAgreement\",\"custom:note\":\" - If a bailout is required (bailoutAmount > 0) - the actual reward (single deposit) goes to the executor, - while the reward account becomes the bailout account - total bailout include: bailout amount + reward amount - the targetAccount will be bailed out - If a bailout is not required - the targetAccount will pay the rewardAmount - the liquidator (reward account in PIC period) will receive the rewardAmount\",\"details\":\"Make liquidation payouts (v2)\",\"params\":{\"id\":\"Agreement ID\",\"liquidationTypeData\":\"Data regarding the version of the liquidation schema and the type\",\"liquidatorAccount\":\"Address of the executor of the liquidation\",\"rewardAmount\":\"The amount the rewarded account will receive\",\"targetAccount\":\"Account to be liquidated\",\"targetAccountBalanceDelta\":\"The delta amount the target account balance should change by\",\"useDefaultRewardAccount\":\"Whether or not the default reward account receives the rewardAmount\"}},\"name()\":{\"details\":\"Returns the name of the token.\"},\"operationApprove(address,address,uint256)\":{\"custom:modifiers\":\" - onlyHost\",\"details\":\"Perform ERC20 approve by host contract.\",\"params\":{\"account\":\"The account owner to be approved.\",\"amount\":\"Number of tokens to be approved.\",\"spender\":\"The spender of account owner's funds.\"}},\"operationDowngrade(address,uint256)\":{\"custom:modifiers\":\" - onlyHost\",\"details\":\"Downgrade ERC20 to SuperToken by host contract.\",\"params\":{\"account\":\"The account to be changed.\",\"amount\":\"Number of tokens to be downgraded (in 18 decimals)\"}},\"operationSend(address,address,uint256,bytes)\":{\"custom:modifiers\":\" - onlyHost\",\"details\":\"Perform ERC777 send by host contract.\",\"params\":{\"amount\":\"Number of tokens to be transferred.\",\"data\":\"Arbitrary user inputted data\",\"recipient\":\"The recipient of the funds.\",\"spender\":\"The account where the funds is sent from.\"}},\"operationTransferFrom(address,address,address,uint256)\":{\"custom:modifiers\":\" - onlyHost\",\"details\":\"Perform ERC20 transferFrom by host contract.\",\"params\":{\"account\":\"The account to spend sender's funds.\",\"amount\":\"Number of tokens to be transferred.\",\"recipient\":\"The recipient of the funds.\",\"spender\":\"The account where the funds is sent from.\"}},\"operationUpgrade(address,uint256)\":{\"custom:modifiers\":\" - onlyHost\",\"details\":\"Upgrade ERC20 to SuperToken by host contract.\",\"params\":{\"account\":\"The account to be changed.\",\"amount\":\"Number of tokens to be upgraded (in 18 decimals)\"}},\"operatorBurn(address,uint256,bytes,bytes)\":{\"custom:emits\":\"a {Burned} event.\",\"custom:requirements\":\" - `account` cannot be the zero address. - `account` must have at least `amount` tokens. - the caller must be an operator for `account`.\",\"details\":\"Destroys `amount` tokens from `account`, reducing the total supply. The caller must be an operator of `account`. If a send hook is registered for `account`, the corresponding function will be called with `data` and `operatorData`. See {IERC777Sender}.\"},\"operatorSend(address,address,uint256,bytes,bytes)\":{\"custom:emits\":\"a {Sent} event.\",\"custom:requirements\":\" - `sender` cannot be the zero address. - `sender` must have at least `amount` tokens. - the caller must be an operator for `sender`. - `recipient` cannot be the zero address. - if `recipient` is a contract, it must implement the {IERC777Recipient} interface.\",\"details\":\"Moves `amount` tokens from `sender` to `recipient`. The caller must be an operator of `sender`. If send or receive hooks are registered for `sender` and `recipient`, the corresponding functions will be called with `data` and `operatorData`. See {IERC777Sender} and {IERC777Recipient}.\"},\"realtimeBalanceOf(address,uint256)\":{\"details\":\"Calculate the real balance of a user, taking in consideration all agreements of the account\",\"params\":{\"account\":\"for the query\",\"timestamp\":\"Time of balance\"},\"returns\":{\"availableBalance\":\"Real-time balance\",\"deposit\":\"Account deposit\",\"owedDeposit\":\"Account owed Deposit\"}},\"realtimeBalanceOfNow(address)\":{\"details\":\"realtimeBalanceOf with timestamp equals to block timestamp\",\"params\":{\"account\":\"for the query\"},\"returns\":{\"availableBalance\":\"Real-time balance\",\"deposit\":\"Account deposit\",\"owedDeposit\":\"Account owed Deposit\"}},\"revokeOperator(address)\":{\"custom:emits\":\"a {RevokedOperator} event.\",\"custom:requirements\":\" - `operator` cannot be calling address.\",\"details\":\"Revoke an account's operator status for the caller. See {isOperatorFor} and {defaultOperators}.\"},\"selfApproveFor(address,address,uint256)\":{\"custom:modifiers\":\" - onlySelf\",\"details\":\"Give `spender`, `amount` allowance to spend the tokens of `account`.\"},\"selfBurn(address,uint256,bytes)\":{\"custom:modifiers\":\" - onlySelf\",\"details\":\"Burn existing tokens for the account\"},\"selfMint(address,uint256,bytes)\":{\"custom:modifiers\":\" - onlySelf\",\"details\":\"Mint new tokens for the account\"},\"selfTransferFrom(address,address,address,uint256)\":{\"custom:modifiers\":\" - onlySelf\",\"details\":\"Transfer `amount` tokens from the `sender` to `recipient`. If `spender` isn't the same as `sender`, checks if `spender` has allowance to spend tokens of `sender`.\"},\"send(address,uint256,bytes)\":{\"custom:emits\":\"a {Sent} event.\",\"custom:requirements\":\" - the caller must have at least `amount` tokens. - `recipient` cannot be the zero address. - if `recipient` is a contract, it must implement the {IERC777Recipient} interface.\",\"details\":\"Moves `amount` tokens from the caller's account to `recipient`.If send or receive hooks are registered for the caller and `recipient`, the corresponding functions will be called with `data` and empty `operatorData`. See {IERC777Sender} and {IERC777Recipient}.\"},\"settleBalance(address,int256)\":{\"custom:modifiers\":\" - onlyAgreement\",\"details\":\"The agreement needs to make sure that the balance delta is balanced afterwards\",\"params\":{\"account\":\"Account to query.\",\"delta\":\"Amount of balance delta to be settled\"}},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"terminateAgreement(bytes32,uint256)\":{\"details\":\"Close the agreement\",\"params\":{\"id\":\"Agreement ID\"}},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"custom:emits\":\"a {Transfer} event.\",\"details\":\"Moves `amount` tokens from the caller's account to `recipient`.\",\"returns\":{\"_0\":\"Returns Success a boolean value indicating whether the operation succeeded.\"}},\"transferAll(address)\":{\"details\":\"Transfer all available balance from `msg.sender` to `recipient`\"},\"transferFrom(address,address,uint256)\":{\"custom:emits\":\"a {Transfer} event.\",\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance.\",\"returns\":{\"_0\":\"Returns Success a boolean value indicating whether the operation succeeded.\"}},\"updateAgreementData(bytes32,bytes32[])\":{\"details\":\"Create a new agreement\",\"params\":{\"data\":\"Agreement data\",\"id\":\"Agreement ID\"}},\"updateAgreementStateSlot(address,uint256,bytes32[])\":{\"custom:note\":\" - To clear the storage out, provide zero-ed array of intended length\",\"details\":\"Update agreement state slot\",\"params\":{\"account\":\"Account to be updated\"}},\"upgrade(uint256)\":{\"custom:note\":\"It will use `transferFrom` to get tokens. Before calling this function you should `approve` this contract\",\"details\":\"Upgrade ERC20 to SuperToken.\",\"params\":{\"amount\":\"Number of tokens to be upgraded (in 18 decimals)\"}},\"upgradeTo(address,uint256,bytes)\":{\"custom:note\":\"It will use `transferFrom` to get tokens. Before calling this function you should `approve` this contract \",\"custom:requirements\":\" - if `data` is NOT empty AND `to` is a contract, it MUST be a registered ERC777 recipient otherwise it reverts.\",\"custom:warning\":\"- there is potential of reentrancy IF the \\\"to\\\" account is a registered ERC777 recipient.\",\"details\":\"Upgrade ERC20 to SuperToken and transfer immediately\",\"params\":{\"amount\":\"Number of tokens to be upgraded (in 18 decimals)\",\"data\":\"User data for the TokensRecipient callback\",\"to\":\"The account to receive upgraded tokens\"}}},\"title\":\"Super token (Superfluid Token + ERC20 + ERC777) interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"allowance(address,address)\":{\"notice\":\"This value changes when {approve} or {transferFrom} are called.\"},\"getAccountActiveAgreements(address)\":{\"notice\":\"Get a list of agreements that is active for the account\"},\"isAccountCritical(address,uint256)\":{\"notice\":\"Check if account is critical\"},\"isAccountCriticalNow(address)\":{\"notice\":\"Check if account is critical now (current host.getNow())\"},\"isAccountSolvent(address,uint256)\":{\"notice\":\"Check if account is solvent\"},\"isAccountSolventNow(address)\":{\"notice\":\"Check if account is solvent now\"},\"realtimeBalanceOfNow(address)\":{\"notice\":\"Calculate the realtime balance given the current host.getNow() value\"},\"settleBalance(address,int256)\":{\"notice\":\"Settle balance from an account by the agreement\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.sol\":\"ISuperToken\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"@openzeppelin/contracts/token/ERC777/IERC777.sol\":{\"keccak256\":\"0x385a7061f1436b079d44c140dee9387d5313e94874ff9ee877dc0085c981ac3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c3fe22bb0d9527356e11f267f9187134de4d4ed1ff77468b4d73e3238697b96\",\"dweb:/ipfs/Qmc8caJctgxbzXEpxRogQMR2bnBk5U67hA7kKbUEG2PUXV\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol\":{\"keccak256\":\"0x80254971aff00fc006d70b85b7bc830bb28096789e72ff3f03aa22cc7810eb0c\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://840f9d959abfbf3919db3dca35336e360b2bbd54e677439a545c7c4f163f6d70\",\"dweb:/ipfs/QmR4CRq7dpYR4NuCSASkNrcnbSScRX8MaEvDs8L7v3xDyr\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol\":{\"keccak256\":\"0x9b4fab6dcac1337f78e04d67d8c2b48b1de8bd4bbf14b475840f9dbda7b8f21e\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://cc2f3629ad0cb46bd4f595880591ad6c9d75a82d920cb9355e462fbf8022c820\",\"dweb:/ipfs/QmXMovxK4qpWT4yffXxUVjkMNwxEfS6mtn39mLSmjaxEdW\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperApp.sol\":{\"keccak256\":\"0x6cc4b0724d977190c7441dfc3be6c6e48b43b555c3370af32ef5b6600f15f53f\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://3e89c944642772a42429f21a11017b57deb98a9198f8e4f8749f00aaee71299e\",\"dweb:/ipfs/QmaSv9GvqikcGHJ3tcwATDHSpQw6mfnHPDtcfqcZSS7LF6\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.sol\":{\"keccak256\":\"0x6860f0bf69dcc1d1ec39eefb43e0cd18b276b48ebe9efd53450e09cd2f997ab2\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://6421f80f2ff7818bd235b7bf4b911cc40edcb598507a246b4de0fa0191a9e1aa\",\"dweb:/ipfs/QmWxktXMjYhi1zt52D3JXNcxCFesXu8kQoSCJQ3j88apM3\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperTokenFactory.sol\":{\"keccak256\":\"0xe2525ef2906504e2f61775ed91bbebeea2f4e2e3fa42ce190561acf6a01187ff\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://7a9859eb432321a65cd15ca988a13776e1c31df44b4cf25f95fa04b54a8a8625\",\"dweb:/ipfs/QmQVJQoeoWemptZhbRgWJZWwMTiNtxVsc1FYmGdtdTfqcL\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol\":{\"keccak256\":\"0xab9dab941f99d0f0ef6125fb6eafde03378d7c3e94e613dd12fb7fbf594c3373\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://928c6ef915dee69058d4cfcb9f2344d4fc78d9763b47b17e5c03fbff64ba3c64\",\"dweb:/ipfs/Qmdk733ZHceatz3qbuodLCCS9TUspJJtXLoX6vWwMvrPDE\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance.sol\":{\"keccak256\":\"0x90a9259d0f0bb6b1bb6d48f051277eb75df96a9fbe684a203a3a468ad19318e2\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://9c8162a2d07ffe768920fef55292684149173afefbfba76b8fca007e55092229\",\"dweb:/ipfs/QmducLNwrzeUXEpBjUTSMu7sfmQEwVhcYXApe4brc1zQ6V\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol\":{\"keccak256\":\"0x9cad3866982902ea88df0874a563d2e4aeba5a5bcc6289c30cccf9b4099d2fb6\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://e8fd960b259331f204c7cb7dcd32b09d68f4294e3b872fad00ad467609c3ef72\",\"dweb:/ipfs/QmeZFEvsDunXQGPbXFfN5AvfKM5am1FY8Xv6e3c4tNKvgY\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo.sol\":{\"keccak256\":\"0x55be78ffb441c782f612b153d7d9049e3f0dbfd412c1f7df29c896b972b2985f\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://a223c68e38a6c9b1e363e525911bc7eda44ea517865ae53bd0d34ff858cc02ae\",\"dweb:/ipfs/QmVruGehibG6Emr2A6JHwUnhd4NzsGkE24cbGqnDpEvrKh\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.sol\":{\"keccak256\":\"0x7456cd394cc905aae7cdbd4601ce1c296c768c13c28e66efbb913cc070bad3e4\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://5a6589b428b724721ba5b4dd196c8f366a6e694ef313add093f29af64496c042\",\"dweb:/ipfs/QmSMgV6y8L6pyyzDz6kKmafVwujNWcjTqutpCBxe4uNRqg\"]}},\"version\":1}"}},"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperTokenFactory.sol":{"ISuperTokenFactory":{"abi":[{"inputs":[],"name":"SUPER_TOKEN_FACTORY_ALREADY_EXISTS","type":"error"},{"inputs":[],"name":"SUPER_TOKEN_FACTORY_DOES_NOT_EXIST","type":"error"},{"inputs":[],"name":"SUPER_TOKEN_FACTORY_NON_UPGRADEABLE_IS_DEPRECATED","type":"error"},{"inputs":[],"name":"SUPER_TOKEN_FACTORY_ONLY_HOST","type":"error"},{"inputs":[],"name":"SUPER_TOKEN_FACTORY_UNINITIALIZED","type":"error"},{"inputs":[],"name":"SUPER_TOKEN_FACTORY_ZERO_ADDRESS","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract ISuperToken","name":"token","type":"address"}],"name":"CustomSuperTokenCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract ISuperToken","name":"token","type":"address"}],"name":"SuperTokenCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract ISuperToken","name":"tokenLogic","type":"address"}],"name":"SuperTokenLogicCreated","type":"event"},{"inputs":[{"internalType":"address","name":"_underlyingToken","type":"address"}],"name":"computeCanonicalERC20WrapperAddress","outputs":[{"internalType":"address","name":"superTokenAddress","type":"address"},{"internalType":"bool","name":"isDeployed","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ERC20WithTokenInfo","name":"_underlyingToken","type":"address"}],"name":"createCanonicalERC20Wrapper","outputs":[{"internalType":"contract ISuperToken","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ERC20WithTokenInfo","name":"underlyingToken","type":"address"},{"internalType":"enum ISuperTokenFactory.Upgradability","name":"upgradability","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"}],"name":"createERC20Wrapper","outputs":[{"internalType":"contract ISuperToken","name":"superToken","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"underlyingToken","type":"address"},{"internalType":"uint8","name":"underlyingDecimals","type":"uint8"},{"internalType":"enum ISuperTokenFactory.Upgradability","name":"upgradability","type":"uint8"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"}],"name":"createERC20Wrapper","outputs":[{"internalType":"contract ISuperToken","name":"superToken","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_underlyingTokenAddress","type":"address"}],"name":"getCanonicalERC20Wrapper","outputs":[{"internalType":"address","name":"superTokenAddress","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getHost","outputs":[{"internalType":"address","name":"host","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSuperTokenLogic","outputs":[{"internalType":"contract ISuperToken","name":"superToken","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"customSuperTokenProxy","type":"address"}],"name":"initializeCustomSuperToken","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"computeCanonicalERC20WrapperAddress(address)":"bab74c89","createCanonicalERC20Wrapper(address)":"151188dc","createERC20Wrapper(address,uint8,string,string)":"431f1481","createERC20Wrapper(address,uint8,uint8,string,string)":"a6d0c534","getCanonicalERC20Wrapper(address)":"eff0a89d","getHost()":"20bc4425","getSuperTokenLogic()":"9470a5b2","initialize()":"8129fc1c","initializeCustomSuperToken(address)":"d412d344"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"SUPER_TOKEN_FACTORY_ALREADY_EXISTS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SUPER_TOKEN_FACTORY_DOES_NOT_EXIST\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SUPER_TOKEN_FACTORY_NON_UPGRADEABLE_IS_DEPRECATED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SUPER_TOKEN_FACTORY_ONLY_HOST\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SUPER_TOKEN_FACTORY_UNINITIALIZED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SUPER_TOKEN_FACTORY_ZERO_ADDRESS\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ISuperToken\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"CustomSuperTokenCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ISuperToken\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SuperTokenCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ISuperToken\",\"name\":\"tokenLogic\",\"type\":\"address\"}],\"name\":\"SuperTokenLogicCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_underlyingToken\",\"type\":\"address\"}],\"name\":\"computeCanonicalERC20WrapperAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"superTokenAddress\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isDeployed\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ERC20WithTokenInfo\",\"name\":\"_underlyingToken\",\"type\":\"address\"}],\"name\":\"createCanonicalERC20Wrapper\",\"outputs\":[{\"internalType\":\"contract ISuperToken\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ERC20WithTokenInfo\",\"name\":\"underlyingToken\",\"type\":\"address\"},{\"internalType\":\"enum ISuperTokenFactory.Upgradability\",\"name\":\"upgradability\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"}],\"name\":\"createERC20Wrapper\",\"outputs\":[{\"internalType\":\"contract ISuperToken\",\"name\":\"superToken\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"underlyingToken\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"underlyingDecimals\",\"type\":\"uint8\"},{\"internalType\":\"enum ISuperTokenFactory.Upgradability\",\"name\":\"upgradability\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"}],\"name\":\"createERC20Wrapper\",\"outputs\":[{\"internalType\":\"contract ISuperToken\",\"name\":\"superToken\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_underlyingTokenAddress\",\"type\":\"address\"}],\"name\":\"getCanonicalERC20Wrapper\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"superTokenAddress\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getHost\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"host\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSuperTokenLogic\",\"outputs\":[{\"internalType\":\"contract ISuperToken\",\"name\":\"superToken\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"customSuperTokenProxy\",\"type\":\"address\"}],\"name\":\"initializeCustomSuperToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Superfluid\",\"events\":{\"CustomSuperTokenCreated(address)\":{\"details\":\"Custom super token created event\",\"params\":{\"token\":\"Newly created custom super token address\"}},\"SuperTokenCreated(address)\":{\"details\":\"Super token created event\",\"params\":{\"token\":\"Newly created super token address\"}},\"SuperTokenLogicCreated(address)\":{\"details\":\"Super token logic created event\",\"params\":{\"tokenLogic\":\"Token logic address\"}}},\"kind\":\"dev\",\"methods\":{\"computeCanonicalERC20WrapperAddress(address)\":{\"details\":\"We return from our canonical list if it already exists, otherwise we compute itnote that this function only computes addresses for SEMI_UPGRADABLE SuperTokens\",\"params\":{\"_underlyingToken\":\"Underlying ERC20 token address\"},\"returns\":{\"isDeployed\":\"whether the super token is deployed AND set in the canonical mapping\",\"superTokenAddress\":\"Super token address\"}},\"createCanonicalERC20Wrapper(address)\":{\"details\":\"salt for create2 is the keccak256 hash of abi.encode(address(_underlyingToken))\",\"params\":{\"_underlyingToken\":\"Underlying ERC20 token\"},\"returns\":{\"_0\":\"ISuperToken the created supertoken\"}},\"createERC20Wrapper(address,uint8,string,string)\":{\"params\":{\"name\":\"Super token name\",\"symbol\":\"Super token symbol\",\"underlyingToken\":\"Underlying ERC20 token\",\"upgradability\":\"Upgradability mode\"},\"returns\":{\"superToken\":\"The deployed and initialized wrapper super token NOTE: - It assumes token provide the .decimals() function\"}},\"createERC20Wrapper(address,uint8,uint8,string,string)\":{\"params\":{\"name\":\"Super token name\",\"symbol\":\"Super token symbol\",\"underlyingDecimals\":\"Underlying token decimals\",\"underlyingToken\":\"Underlying ERC20 token\",\"upgradability\":\"Upgradability mode\"},\"returns\":{\"superToken\":\"The deployed and initialized wrapper super token\"}},\"getCanonicalERC20Wrapper(address)\":{\"details\":\"We return the address if it exists and the zero address otherwise\",\"params\":{\"_underlyingTokenAddress\":\"Underlying ERC20 token address\"},\"returns\":{\"superTokenAddress\":\"Super token address\"}},\"getHost()\":{\"details\":\"Get superfluid host contract address\"},\"getSuperTokenLogic()\":{\"details\":\"Get the current super token logic used by the factory\"},\"initialize()\":{\"details\":\"Initialize the contract\"},\"initializeCustomSuperToken(address)\":{\"details\":\"Creates a new custom super token\",\"params\":{\"customSuperTokenProxy\":\"address of the custom supertoken proxy\"}}},\"title\":\"Super token factory interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"computeCanonicalERC20WrapperAddress(address)\":{\"notice\":\"Computes/Retrieves wrapper super token address given the underlying token address\"},\"createCanonicalERC20Wrapper(address)\":{\"notice\":\"Creates a wrapper super token AND sets it in the canonical list OR reverts if it already exists\"},\"createERC20Wrapper(address,uint8,string,string)\":{\"notice\":\"Create new super token wrapper for the underlying ERC20 token with extra token info\"},\"createERC20Wrapper(address,uint8,uint8,string,string)\":{\"notice\":\"Create new super token wrapper for the underlying ERC20 token\"},\"getCanonicalERC20Wrapper(address)\":{\"notice\":\"Gets the canonical ERC20 wrapper super token address given the underlying token address\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperTokenFactory.sol\":\"ISuperTokenFactory\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"@openzeppelin/contracts/token/ERC777/IERC777.sol\":{\"keccak256\":\"0x385a7061f1436b079d44c140dee9387d5313e94874ff9ee877dc0085c981ac3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c3fe22bb0d9527356e11f267f9187134de4d4ed1ff77468b4d73e3238697b96\",\"dweb:/ipfs/Qmc8caJctgxbzXEpxRogQMR2bnBk5U67hA7kKbUEG2PUXV\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol\":{\"keccak256\":\"0x80254971aff00fc006d70b85b7bc830bb28096789e72ff3f03aa22cc7810eb0c\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://840f9d959abfbf3919db3dca35336e360b2bbd54e677439a545c7c4f163f6d70\",\"dweb:/ipfs/QmR4CRq7dpYR4NuCSASkNrcnbSScRX8MaEvDs8L7v3xDyr\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol\":{\"keccak256\":\"0x9b4fab6dcac1337f78e04d67d8c2b48b1de8bd4bbf14b475840f9dbda7b8f21e\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://cc2f3629ad0cb46bd4f595880591ad6c9d75a82d920cb9355e462fbf8022c820\",\"dweb:/ipfs/QmXMovxK4qpWT4yffXxUVjkMNwxEfS6mtn39mLSmjaxEdW\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperApp.sol\":{\"keccak256\":\"0x6cc4b0724d977190c7441dfc3be6c6e48b43b555c3370af32ef5b6600f15f53f\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://3e89c944642772a42429f21a11017b57deb98a9198f8e4f8749f00aaee71299e\",\"dweb:/ipfs/QmaSv9GvqikcGHJ3tcwATDHSpQw6mfnHPDtcfqcZSS7LF6\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.sol\":{\"keccak256\":\"0x6860f0bf69dcc1d1ec39eefb43e0cd18b276b48ebe9efd53450e09cd2f997ab2\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://6421f80f2ff7818bd235b7bf4b911cc40edcb598507a246b4de0fa0191a9e1aa\",\"dweb:/ipfs/QmWxktXMjYhi1zt52D3JXNcxCFesXu8kQoSCJQ3j88apM3\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperTokenFactory.sol\":{\"keccak256\":\"0xe2525ef2906504e2f61775ed91bbebeea2f4e2e3fa42ce190561acf6a01187ff\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://7a9859eb432321a65cd15ca988a13776e1c31df44b4cf25f95fa04b54a8a8625\",\"dweb:/ipfs/QmQVJQoeoWemptZhbRgWJZWwMTiNtxVsc1FYmGdtdTfqcL\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol\":{\"keccak256\":\"0xab9dab941f99d0f0ef6125fb6eafde03378d7c3e94e613dd12fb7fbf594c3373\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://928c6ef915dee69058d4cfcb9f2344d4fc78d9763b47b17e5c03fbff64ba3c64\",\"dweb:/ipfs/Qmdk733ZHceatz3qbuodLCCS9TUspJJtXLoX6vWwMvrPDE\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance.sol\":{\"keccak256\":\"0x90a9259d0f0bb6b1bb6d48f051277eb75df96a9fbe684a203a3a468ad19318e2\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://9c8162a2d07ffe768920fef55292684149173afefbfba76b8fca007e55092229\",\"dweb:/ipfs/QmducLNwrzeUXEpBjUTSMu7sfmQEwVhcYXApe4brc1zQ6V\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol\":{\"keccak256\":\"0x9cad3866982902ea88df0874a563d2e4aeba5a5bcc6289c30cccf9b4099d2fb6\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://e8fd960b259331f204c7cb7dcd32b09d68f4294e3b872fad00ad467609c3ef72\",\"dweb:/ipfs/QmeZFEvsDunXQGPbXFfN5AvfKM5am1FY8Xv6e3c4tNKvgY\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo.sol\":{\"keccak256\":\"0x55be78ffb441c782f612b153d7d9049e3f0dbfd412c1f7df29c896b972b2985f\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://a223c68e38a6c9b1e363e525911bc7eda44ea517865ae53bd0d34ff858cc02ae\",\"dweb:/ipfs/QmVruGehibG6Emr2A6JHwUnhd4NzsGkE24cbGqnDpEvrKh\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.sol\":{\"keccak256\":\"0x7456cd394cc905aae7cdbd4601ce1c296c768c13c28e66efbb913cc070bad3e4\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://5a6589b428b724721ba5b4dd196c8f366a6e694ef313add093f29af64496c042\",\"dweb:/ipfs/QmSMgV6y8L6pyyzDz6kKmafVwujNWcjTqutpCBxe4uNRqg\"]}},\"version\":1}"}},"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol":{"ISuperfluid":{"abi":[{"inputs":[{"internalType":"uint256","name":"_code","type":"uint256"}],"name":"APP_RULE","type":"error"},{"inputs":[],"name":"HOST_AGREEMENT_ALREADY_REGISTERED","type":"error"},{"inputs":[],"name":"HOST_AGREEMENT_CALLBACK_IS_NOT_ACTION","type":"error"},{"inputs":[],"name":"HOST_AGREEMENT_IS_NOT_REGISTERED","type":"error"},{"inputs":[],"name":"HOST_CALL_AGREEMENT_WITH_CTX_FROM_WRONG_ADDRESS","type":"error"},{"inputs":[],"name":"HOST_CALL_APP_ACTION_WITH_CTX_FROM_WRONG_ADDRESS","type":"error"},{"inputs":[],"name":"HOST_CANNOT_DOWNGRADE_TO_NON_UPGRADEABLE","type":"error"},{"inputs":[],"name":"HOST_INVALID_CONFIG_WORD","type":"error"},{"inputs":[],"name":"HOST_INVALID_OR_EXPIRED_SUPER_APP_REGISTRATION_KEY","type":"error"},{"inputs":[],"name":"HOST_MAX_256_AGREEMENTS","type":"error"},{"inputs":[],"name":"HOST_MUST_BE_CONTRACT","type":"error"},{"inputs":[],"name":"HOST_NON_UPGRADEABLE","type":"error"},{"inputs":[],"name":"HOST_NON_ZERO_LENGTH_PLACEHOLDER_CTX","type":"error"},{"inputs":[],"name":"HOST_NOT_A_SUPER_APP","type":"error"},{"inputs":[],"name":"HOST_NO_APP_REGISTRATION_PERMISSIONS","type":"error"},{"inputs":[],"name":"HOST_ONLY_GOVERNANCE","type":"error"},{"inputs":[],"name":"HOST_ONLY_LISTED_AGREEMENT","type":"error"},{"inputs":[],"name":"HOST_RECEIVER_IS_NOT_SUPER_APP","type":"error"},{"inputs":[],"name":"HOST_SENDER_IS_NOT_SUPER_APP","type":"error"},{"inputs":[],"name":"HOST_SOURCE_APP_NEEDS_HIGHER_APP_LEVEL","type":"error"},{"inputs":[],"name":"HOST_SUPER_APP_ALREADY_REGISTERED","type":"error"},{"inputs":[],"name":"HOST_SUPER_APP_IS_JAILED","type":"error"},{"inputs":[],"name":"HOST_UNAUTHORIZED_SUPER_APP_FACTORY","type":"error"},{"inputs":[],"name":"HOST_UNKNOWN_BATCH_CALL_OPERATION_TYPE","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"agreementType","type":"bytes32"},{"indexed":false,"internalType":"address","name":"code","type":"address"}],"name":"AgreementClassRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"agreementType","type":"bytes32"},{"indexed":false,"internalType":"address","name":"code","type":"address"}],"name":"AgreementClassUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract ISuperApp","name":"app","type":"address"}],"name":"AppRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract ISuperfluidGovernance","name":"oldGov","type":"address"},{"indexed":false,"internalType":"contract ISuperfluidGovernance","name":"newGov","type":"address"}],"name":"GovernanceReplaced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract ISuperApp","name":"app","type":"address"},{"indexed":false,"internalType":"uint256","name":"reason","type":"uint256"}],"name":"Jail","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract ISuperTokenFactory","name":"newFactory","type":"address"}],"name":"SuperTokenFactoryUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract ISuperToken","name":"token","type":"address"},{"indexed":false,"internalType":"address","name":"code","type":"address"}],"name":"SuperTokenLogicUpdated","type":"event"},{"inputs":[{"internalType":"uint256","name":"bitmap","type":"uint256"},{"internalType":"bytes32","name":"agreementType","type":"bytes32"}],"name":"addToAgreementClassesBitmap","outputs":[{"internalType":"uint256","name":"newBitmap","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ISuperApp","name":"targetApp","type":"address"}],"name":"allowCompositeApp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"ctx","type":"bytes"},{"internalType":"int256","name":"appCreditUsedDelta","type":"int256"}],"name":"appCallbackPop","outputs":[{"internalType":"bytes","name":"newCtx","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"ctx","type":"bytes"},{"internalType":"contract ISuperApp","name":"app","type":"address"},{"internalType":"uint256","name":"appCreditGranted","type":"uint256"},{"internalType":"int256","name":"appCreditUsed","type":"int256"},{"internalType":"contract ISuperfluidToken","name":"appCreditToken","type":"address"}],"name":"appCallbackPush","outputs":[{"internalType":"bytes","name":"newCtx","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"operationType","type":"uint32"},{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct ISuperfluid.Operation[]","name":"operations","type":"tuple[]"}],"name":"batchCall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ISuperAgreement","name":"agreementClass","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"callAgreement","outputs":[{"internalType":"bytes","name":"returnedData","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ISuperAgreement","name":"agreementClass","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"},{"internalType":"bytes","name":"userData","type":"bytes"},{"internalType":"bytes","name":"ctx","type":"bytes"}],"name":"callAgreementWithContext","outputs":[{"internalType":"bytes","name":"newCtx","type":"bytes"},{"internalType":"bytes","name":"returnedData","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ISuperApp","name":"app","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"}],"name":"callAppAction","outputs":[{"internalType":"bytes","name":"returnedData","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ISuperApp","name":"app","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"},{"internalType":"bytes","name":"ctx","type":"bytes"}],"name":"callAppActionWithContext","outputs":[{"internalType":"bytes","name":"newCtx","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ISuperApp","name":"app","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"},{"internalType":"bool","name":"isTermination","type":"bool"},{"internalType":"bytes","name":"ctx","type":"bytes"}],"name":"callAppAfterCallback","outputs":[{"internalType":"bytes","name":"newCtx","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ISuperApp","name":"app","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"},{"internalType":"bool","name":"isTermination","type":"bool"},{"internalType":"bytes","name":"ctx","type":"bytes"}],"name":"callAppBeforeCallback","outputs":[{"internalType":"bytes","name":"cbdata","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"ctx","type":"bytes"},{"internalType":"int256","name":"appCreditUsedMore","type":"int256"}],"name":"ctxUseCredit","outputs":[{"internalType":"bytes","name":"newCtx","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"ctx","type":"bytes"}],"name":"decodeCtx","outputs":[{"components":[{"internalType":"uint8","name":"appCallbackLevel","type":"uint8"},{"internalType":"uint8","name":"callType","type":"uint8"},{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"address","name":"msgSender","type":"address"},{"internalType":"bytes4","name":"agreementSelector","type":"bytes4"},{"internalType":"bytes","name":"userData","type":"bytes"},{"internalType":"uint256","name":"appCreditGranted","type":"uint256"},{"internalType":"uint256","name":"appCreditWantedDeprecated","type":"uint256"},{"internalType":"int256","name":"appCreditUsed","type":"int256"},{"internalType":"address","name":"appAddress","type":"address"},{"internalType":"contract ISuperfluidToken","name":"appCreditToken","type":"address"}],"internalType":"struct ISuperfluid.Context","name":"context","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"operationType","type":"uint32"},{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"internalType":"struct ISuperfluid.Operation[]","name":"operations","type":"tuple[]"}],"name":"forwardBatchCall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"agreementType","type":"bytes32"}],"name":"getAgreementClass","outputs":[{"internalType":"contract ISuperAgreement","name":"agreementClass","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ISuperApp","name":"app","type":"address"}],"name":"getAppCallbackLevel","outputs":[{"internalType":"uint8","name":"appCallbackLevel","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ISuperApp","name":"app","type":"address"}],"name":"getAppManifest","outputs":[{"internalType":"bool","name":"isSuperApp","type":"bool"},{"internalType":"bool","name":"isJailed","type":"bool"},{"internalType":"uint256","name":"noopMask","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGovernance","outputs":[{"internalType":"contract ISuperfluidGovernance","name":"governance","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNow","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSuperTokenFactory","outputs":[{"internalType":"contract ISuperTokenFactory","name":"factory","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSuperTokenFactoryLogic","outputs":[{"internalType":"address","name":"logic","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ISuperAgreement","name":"agreementClass","type":"address"}],"name":"isAgreementClassListed","outputs":[{"internalType":"bool","name":"yes","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"agreementType","type":"bytes32"}],"name":"isAgreementTypeListed","outputs":[{"internalType":"bool","name":"yes","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ISuperApp","name":"app","type":"address"}],"name":"isApp","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ISuperApp","name":"app","type":"address"}],"name":"isAppJailed","outputs":[{"internalType":"bool","name":"isJail","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ISuperApp","name":"app","type":"address"},{"internalType":"contract ISuperApp","name":"targetApp","type":"address"}],"name":"isCompositeAppAllowed","outputs":[{"internalType":"bool","name":"isAppAllowed","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"ctx","type":"bytes"}],"name":"isCtxValid","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"ctx","type":"bytes"},{"internalType":"contract ISuperApp","name":"app","type":"address"},{"internalType":"uint256","name":"reason","type":"uint256"}],"name":"jailApp","outputs":[{"internalType":"bytes","name":"newCtx","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"bitmap","type":"uint256"}],"name":"mapAgreementClasses","outputs":[{"internalType":"contract ISuperAgreement[]","name":"agreementClasses","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ISuperAgreement","name":"agreementClassLogic","type":"address"}],"name":"registerAgreementClass","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"configWord","type":"uint256"}],"name":"registerApp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ISuperApp","name":"app","type":"address"},{"internalType":"uint256","name":"configWord","type":"uint256"}],"name":"registerAppByFactory","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"configWord","type":"uint256"},{"internalType":"string","name":"registrationKey","type":"string"}],"name":"registerAppWithKey","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"bitmap","type":"uint256"},{"internalType":"bytes32","name":"agreementType","type":"bytes32"}],"name":"removeFromAgreementClassesBitmap","outputs":[{"internalType":"uint256","name":"newBitmap","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ISuperfluidGovernance","name":"newGov","type":"address"}],"name":"replaceGovernance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ISuperAgreement","name":"agreementClassLogic","type":"address"}],"name":"updateAgreementClass","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ISuperTokenFactory","name":"newFactory","type":"address"}],"name":"updateSuperTokenFactory","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ISuperToken","name":"token","type":"address"}],"name":"updateSuperTokenLogic","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"addToAgreementClassesBitmap(uint256,bytes32)":"bced3ddc","allowCompositeApp(address)":"57121e0c","appCallbackPop(bytes,int256)":"989b0c3e","appCallbackPush(bytes,address,uint256,int256,address)":"768fabb0","batchCall((uint32,address,bytes)[])":"6ad3ca7d","callAgreement(address,bytes,bytes)":"39255d5b","callAgreementWithContext(address,bytes,bytes,bytes)":"4329d293","callAppAction(address,bytes)":"1e855cf3","callAppActionWithContext(address,bytes,bytes)":"ba48b5f8","callAppAfterCallback(address,bytes,bool,bytes)":"1e6d0a84","callAppBeforeCallback(address,bytes,bool,bytes)":"74041e02","ctxUseCredit(bytes,int256)":"59a29141","decodeCtx(bytes)":"3f6c923a","forwardBatchCall((uint32,address,bytes)[])":"670e77e3","getAgreementClass(bytes32)":"b6d200de","getAppCallbackLevel(address)":"9378fa13","getAppManifest(address)":"f9f522f4","getGovernance()":"289b3c0d","getNow()":"bbe4fd50","getSuperTokenFactory()":"731aed6e","getSuperTokenFactoryLogic()":"f2e55caf","isAgreementClassListed(address)":"8ca48484","isAgreementTypeListed(bytes32)":"e8dccb7d","isApp(address)":"3ca3ad4e","isAppJailed(address)":"6b4f3335","isCompositeAppAllowed(address,address)":"bb84cfa1","isCtxValid(bytes)":"bf428734","jailApp(bytes,address,uint256)":"b724211e","mapAgreementClasses(uint256)":"c56a069d","registerAgreementClass(address)":"15a024e1","registerApp(uint256)":"ad3915c8","registerAppByFactory(address,uint256)":"f3733052","registerAppWithKey(uint256,string)":"bd1c448b","removeFromAgreementClassesBitmap(uint256,bytes32)":"a5dbbbcd","replaceGovernance(address)":"7283100c","updateAgreementClass(address)":"06cecba8","updateSuperTokenFactory(address)":"54fbc493","updateSuperTokenLogic(address)":"787afde7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_code\",\"type\":\"uint256\"}],\"name\":\"APP_RULE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HOST_AGREEMENT_ALREADY_REGISTERED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HOST_AGREEMENT_CALLBACK_IS_NOT_ACTION\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HOST_AGREEMENT_IS_NOT_REGISTERED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HOST_CALL_AGREEMENT_WITH_CTX_FROM_WRONG_ADDRESS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HOST_CALL_APP_ACTION_WITH_CTX_FROM_WRONG_ADDRESS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HOST_CANNOT_DOWNGRADE_TO_NON_UPGRADEABLE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HOST_INVALID_CONFIG_WORD\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HOST_INVALID_OR_EXPIRED_SUPER_APP_REGISTRATION_KEY\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HOST_MAX_256_AGREEMENTS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HOST_MUST_BE_CONTRACT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HOST_NON_UPGRADEABLE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HOST_NON_ZERO_LENGTH_PLACEHOLDER_CTX\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HOST_NOT_A_SUPER_APP\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HOST_NO_APP_REGISTRATION_PERMISSIONS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HOST_ONLY_GOVERNANCE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HOST_ONLY_LISTED_AGREEMENT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HOST_RECEIVER_IS_NOT_SUPER_APP\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HOST_SENDER_IS_NOT_SUPER_APP\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HOST_SOURCE_APP_NEEDS_HIGHER_APP_LEVEL\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HOST_SUPER_APP_ALREADY_REGISTERED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HOST_SUPER_APP_IS_JAILED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HOST_UNAUTHORIZED_SUPER_APP_FACTORY\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HOST_UNKNOWN_BATCH_CALL_OPERATION_TYPE\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"agreementType\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"code\",\"type\":\"address\"}],\"name\":\"AgreementClassRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"agreementType\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"code\",\"type\":\"address\"}],\"name\":\"AgreementClassUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ISuperApp\",\"name\":\"app\",\"type\":\"address\"}],\"name\":\"AppRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract ISuperfluidGovernance\",\"name\":\"oldGov\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract ISuperfluidGovernance\",\"name\":\"newGov\",\"type\":\"address\"}],\"name\":\"GovernanceReplaced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ISuperApp\",\"name\":\"app\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reason\",\"type\":\"uint256\"}],\"name\":\"Jail\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract ISuperTokenFactory\",\"name\":\"newFactory\",\"type\":\"address\"}],\"name\":\"SuperTokenFactoryUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract ISuperToken\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"code\",\"type\":\"address\"}],\"name\":\"SuperTokenLogicUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"bitmap\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"agreementType\",\"type\":\"bytes32\"}],\"name\":\"addToAgreementClassesBitmap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"newBitmap\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperApp\",\"name\":\"targetApp\",\"type\":\"address\"}],\"name\":\"allowCompositeApp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"},{\"internalType\":\"int256\",\"name\":\"appCreditUsedDelta\",\"type\":\"int256\"}],\"name\":\"appCallbackPop\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"},{\"internalType\":\"contract ISuperApp\",\"name\":\"app\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"appCreditGranted\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"appCreditUsed\",\"type\":\"int256\"},{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"appCreditToken\",\"type\":\"address\"}],\"name\":\"appCallbackPush\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"operationType\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct ISuperfluid.Operation[]\",\"name\":\"operations\",\"type\":\"tuple[]\"}],\"name\":\"batchCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperAgreement\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"callAgreement\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"returnedData\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperAgreement\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"callAgreementWithContext\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"returnedData\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperApp\",\"name\":\"app\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"name\":\"callAppAction\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"returnedData\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperApp\",\"name\":\"app\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"callAppActionWithContext\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperApp\",\"name\":\"app\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"isTermination\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"callAppAfterCallback\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperApp\",\"name\":\"app\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"isTermination\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"callAppBeforeCallback\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"cbdata\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"},{\"internalType\":\"int256\",\"name\":\"appCreditUsedMore\",\"type\":\"int256\"}],\"name\":\"ctxUseCredit\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"decodeCtx\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"appCallbackLevel\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"callType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"msgSender\",\"type\":\"address\"},{\"internalType\":\"bytes4\",\"name\":\"agreementSelector\",\"type\":\"bytes4\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"appCreditGranted\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"appCreditWantedDeprecated\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"appCreditUsed\",\"type\":\"int256\"},{\"internalType\":\"address\",\"name\":\"appAddress\",\"type\":\"address\"},{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"appCreditToken\",\"type\":\"address\"}],\"internalType\":\"struct ISuperfluid.Context\",\"name\":\"context\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"operationType\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct ISuperfluid.Operation[]\",\"name\":\"operations\",\"type\":\"tuple[]\"}],\"name\":\"forwardBatchCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"agreementType\",\"type\":\"bytes32\"}],\"name\":\"getAgreementClass\",\"outputs\":[{\"internalType\":\"contract ISuperAgreement\",\"name\":\"agreementClass\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperApp\",\"name\":\"app\",\"type\":\"address\"}],\"name\":\"getAppCallbackLevel\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"appCallbackLevel\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperApp\",\"name\":\"app\",\"type\":\"address\"}],\"name\":\"getAppManifest\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isSuperApp\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isJailed\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"noopMask\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGovernance\",\"outputs\":[{\"internalType\":\"contract ISuperfluidGovernance\",\"name\":\"governance\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNow\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSuperTokenFactory\",\"outputs\":[{\"internalType\":\"contract ISuperTokenFactory\",\"name\":\"factory\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSuperTokenFactoryLogic\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"logic\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperAgreement\",\"name\":\"agreementClass\",\"type\":\"address\"}],\"name\":\"isAgreementClassListed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"yes\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"agreementType\",\"type\":\"bytes32\"}],\"name\":\"isAgreementTypeListed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"yes\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperApp\",\"name\":\"app\",\"type\":\"address\"}],\"name\":\"isApp\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperApp\",\"name\":\"app\",\"type\":\"address\"}],\"name\":\"isAppJailed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isJail\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperApp\",\"name\":\"app\",\"type\":\"address\"},{\"internalType\":\"contract ISuperApp\",\"name\":\"targetApp\",\"type\":\"address\"}],\"name\":\"isCompositeAppAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isAppAllowed\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"}],\"name\":\"isCtxValid\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"ctx\",\"type\":\"bytes\"},{\"internalType\":\"contract ISuperApp\",\"name\":\"app\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"reason\",\"type\":\"uint256\"}],\"name\":\"jailApp\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"newCtx\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"bitmap\",\"type\":\"uint256\"}],\"name\":\"mapAgreementClasses\",\"outputs\":[{\"internalType\":\"contract ISuperAgreement[]\",\"name\":\"agreementClasses\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperAgreement\",\"name\":\"agreementClassLogic\",\"type\":\"address\"}],\"name\":\"registerAgreementClass\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"configWord\",\"type\":\"uint256\"}],\"name\":\"registerApp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperApp\",\"name\":\"app\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"configWord\",\"type\":\"uint256\"}],\"name\":\"registerAppByFactory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"configWord\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"registrationKey\",\"type\":\"string\"}],\"name\":\"registerAppWithKey\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"bitmap\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"agreementType\",\"type\":\"bytes32\"}],\"name\":\"removeFromAgreementClassesBitmap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"newBitmap\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluidGovernance\",\"name\":\"newGov\",\"type\":\"address\"}],\"name\":\"replaceGovernance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperAgreement\",\"name\":\"agreementClassLogic\",\"type\":\"address\"}],\"name\":\"updateAgreementClass\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperTokenFactory\",\"name\":\"newFactory\",\"type\":\"address\"}],\"name\":\"updateSuperTokenFactory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperToken\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"updateSuperTokenLogic\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Superfluid\",\"events\":{\"AgreementClassRegistered(bytes32,address)\":{\"details\":\"agreementType is the keccak256 hash of: \\\"org.superfluid-finance.agreements..\\\"\",\"params\":{\"agreementType\":\"The agreement type registered\",\"code\":\"Address of the new agreement\"}},\"AgreementClassUpdated(bytes32,address)\":{\"details\":\"agreementType is the keccak256 hash of: \\\"org.superfluid-finance.agreements..\\\"\",\"params\":{\"agreementType\":\"The agreement type updated\",\"code\":\"Address of the new agreement\"}},\"AppRegistered(address)\":{\"details\":\"App registered event\",\"params\":{\"app\":\"Address of jailed app\"}},\"GovernanceReplaced(address,address)\":{\"details\":\"Governance replaced event\",\"params\":{\"newGov\":\"Address of the new governance contract\",\"oldGov\":\"Address of the old governance contract\"}},\"Jail(address,uint256)\":{\"details\":\"Jail event for the app\",\"params\":{\"app\":\"Address of jailed app\",\"reason\":\"Reason the app is jailed (see Definitions.sol for the full list)\"}},\"SuperTokenFactoryUpdated(address)\":{\"details\":\"SuperToken factory updated event\",\"params\":{\"newFactory\":\"Address of the new factory\"}},\"SuperTokenLogicUpdated(address,address)\":{\"details\":\"SuperToken logic updated event\",\"params\":{\"code\":\"Address of the new SuperToken logic\"}}},\"kind\":\"dev\",\"methods\":{\"addToAgreementClassesBitmap(uint256,bytes32)\":{\"details\":\"agreementType is the keccak256 hash of: \\\"org.superfluid-finance.agreements..\\\"\",\"params\":{\"bitmap\":\"Agreement class bitmap\"}},\"allowCompositeApp(address)\":{\"details\":\"Whitelist the target app for app composition for the source app (msg.sender)\",\"params\":{\"targetApp\":\"The target super app address\"}},\"appCallbackPop(bytes,int256)\":{\"custom:security\":\"- Here we cannot do assertValidCtx(ctx), since we do not really save the stack in memory. - Hence there is still implicit trust that the agreement handles the callback push/pop pair correctly.\",\"details\":\"(For agreements) Pop from the current app callback stack\",\"params\":{\"appCreditUsedDelta\":\"App credit used by the app.\",\"ctx\":\"The ctx that was pushed before the callback stack.\"},\"returns\":{\"newCtx\":\" The current context of the transaction.\"}},\"appCallbackPush(bytes,address,uint256,int256,address)\":{\"details\":\"(For agreements) Create a new callback stack\",\"params\":{\"app\":\"The super app.\",\"appCreditGranted\":\"App credit granted so far.\",\"appCreditUsed\":\"App credit used so far.\",\"ctx\":\"The current ctx, it will be validated.\"},\"returns\":{\"newCtx\":\" The current context of the transaction.\"}},\"batchCall((uint32,address,bytes)[])\":{\"details\":\"Batch call function\",\"params\":{\"operations\":\"Array of batch operations\"}},\"callAgreement(address,bytes,bytes)\":{\"details\":\"Call agreement function\",\"params\":{\"agreementClass\":\"The agreement address you are calling\",\"callData\":\"The contextual call data with placeholder ctx\",\"userData\":\"Extra user data being sent to the super app callbacks\"}},\"callAppAction(address,bytes)\":{\"custom:note\":\"See \\\"Contextless Call Proxies\\\" above for more about contextual call data.\",\"details\":\"Main use case is calling app action in a batch call via the host\",\"params\":{\"callData\":\"The contextual call data\"}},\"callAppAfterCallback(address,bytes,bool,bytes)\":{\"details\":\"(For agreements) Call the app after callback\",\"params\":{\"app\":\"The super app.\",\"callData\":\"The call data sending to the super app.\",\"ctx\":\"Current ctx, it will be validated.\",\"isTermination\":\"Is it a termination callback?\"},\"returns\":{\"newCtx\":\" The current context of the transaction.\"}},\"callAppBeforeCallback(address,bytes,bool,bytes)\":{\"details\":\"(For agreements) StaticCall the app before callback\",\"params\":{\"app\":\"The super app.\",\"callData\":\"The call data sending to the super app.\",\"ctx\":\"Current ctx, it will be validated.\",\"isTermination\":\"Is it a termination callback?\"},\"returns\":{\"cbdata\":\" Data returned from the callback.\"}},\"ctxUseCredit(bytes,int256)\":{\"details\":\"(For agreements) Use app credit.\",\"params\":{\"appCreditUsedMore\":\"See app credit for more details.\",\"ctx\":\"The current ctx, it will be validated.\"},\"returns\":{\"newCtx\":\" The current context of the transaction.\"}},\"forwardBatchCall((uint32,address,bytes)[])\":{\"details\":\"Batch call function for trusted forwarders (EIP-2771)\",\"params\":{\"operations\":\"Array of batch operations\"}},\"getAgreementClass(bytes32)\":{\"details\":\"agreementType is the keccak256 hash of: \\\"org.superfluid-finance.agreements..\\\"\"},\"getAppCallbackLevel(address)\":{\"details\":\"Query app callbacklevel\",\"params\":{\"app\":\"Super app address\"}},\"getAppManifest(address)\":{\"details\":\"Get the manifest of the super app\",\"params\":{\"app\":\"Super app address\"}},\"getGovernance()\":{\"details\":\"Get the current governance address of the Superfluid host\"},\"getSuperTokenFactory()\":{\"details\":\"Get the super token factory\",\"returns\":{\"factory\":\"The factory\"}},\"getSuperTokenFactoryLogic()\":{\"details\":\"Get the super token factory logic (applicable to upgradable deployment)\",\"returns\":{\"logic\":\"The factory logic\"}},\"isAgreementClassListed(address)\":{\"details\":\"Check if the agreement class is whitelisted\"},\"isAgreementTypeListed(bytes32)\":{\"details\":\"agreementType is the keccak256 hash of: \\\"org.superfluid-finance.agreements..\\\"\"},\"isApp(address)\":{\"details\":\"Query if the app is registered\",\"params\":{\"app\":\"Super app address\"}},\"isAppJailed(address)\":{\"details\":\"Query if the app has been jailed\",\"params\":{\"app\":\"Super app address\"}},\"isCompositeAppAllowed(address,address)\":{\"details\":\"Query if source app is allowed to call the target app as downstream app\",\"params\":{\"app\":\"Super app address\",\"targetApp\":\"The target super app address\"}},\"jailApp(bytes,address,uint256)\":{\"details\":\"(For agreements) Jail the app.\",\"params\":{\"app\":\"The super app.\",\"reason\":\"Jail reason code.\"},\"returns\":{\"newCtx\":\" The current context of the transaction.\"}},\"mapAgreementClasses(uint256)\":{\"details\":\"Map list of the agreement classes using a bitmap\",\"params\":{\"bitmap\":\"Agreement class bitmap\"}},\"registerAgreementClass(address)\":{\"custom:modifiers\":\" - onlyGovernance\",\"details\":\"Register a new agreement class to the system\",\"params\":{\"agreementClassLogic\":\"Initial agreement class code\"}},\"registerApp(uint256)\":{\"custom:deprecated\":\"you should use `registerAppWithKey` or `registerAppByFactory` instead, because app registration is currently governance permissioned on mainnets.\",\"details\":\"Message sender (must be a contract) declares itself as a super app.\",\"params\":{\"configWord\":\"The super app manifest configuration, flags are defined in `SuperAppDefinitions`\"}},\"registerAppByFactory(address,uint256)\":{\"details\":\"Message sender (must be a contract) declares app as a super app\",\"params\":{\"configWord\":\"The super app manifest configuration, flags are defined in `SuperAppDefinitions`\"}},\"registerAppWithKey(uint256,string)\":{\"details\":\"Message sender declares itself as a super app.\",\"params\":{\"configWord\":\"The super app manifest configuration, flags are defined in `SuperAppDefinitions`\",\"registrationKey\":\"The registration key issued by the governance, needed to register on a mainnet.\"}},\"removeFromAgreementClassesBitmap(uint256,bytes32)\":{\"details\":\"agreementType is the keccak256 hash of: \\\"org.superfluid-finance.agreements..\\\"\",\"params\":{\"bitmap\":\"Agreement class bitmap\"}},\"replaceGovernance(address)\":{\"details\":\"Replace the current governance with a new one\"},\"updateAgreementClass(address)\":{\"custom:modifiers\":\" - onlyGovernance\",\"details\":\"Update code of an agreement class\",\"params\":{\"agreementClassLogic\":\"New code for the agreement class\"}},\"updateSuperTokenFactory(address)\":{\"details\":\"Update super token factory\",\"params\":{\"newFactory\":\"New factory logic\"}},\"updateSuperTokenLogic(address)\":{\"details\":\"Refer to ISuperTokenFactory.Upgradability for expected behaviours\"}},\"title\":\"Host interface\",\"version\":1},\"userdoc\":{\"events\":{\"AgreementClassRegistered(bytes32,address)\":{\"notice\":\"Agreement class registered event\"},\"AgreementClassUpdated(bytes32,address)\":{\"notice\":\"Agreement class updated event\"}},\"kind\":\"user\",\"methods\":{\"addToAgreementClassesBitmap(uint256,bytes32)\":{\"notice\":\"Create a new bitmask by adding a agreement class to it\"},\"callAppAction(address,bytes)\":{\"notice\":\"Call app action\"},\"getAgreementClass(bytes32)\":{\"notice\":\"Get agreement class\"},\"isAgreementTypeListed(bytes32)\":{\"notice\":\"Check if the agreement type is whitelisted\"},\"registerAppByFactory(address,uint256)\":{\"notice\":\"On mainnet deployments, only factory contracts pre-authorized by governance can use this. See https://github.com/superfluid-finance/protocol-monorepo/wiki/Super-App-White-listing-Guide\"},\"registerAppWithKey(uint256,string)\":{\"notice\":\"See https://github.com/superfluid-finance/protocol-monorepo/wiki/Super-App-White-listing-Guide On testnets or in dev environment, a placeholder (e.g. empty string) can be used. While the message sender must be the super app itself, the transaction sender (tx.origin) must be the deployer account the registration key was issued for.\"},\"removeFromAgreementClassesBitmap(uint256,bytes32)\":{\"notice\":\"Create a new bitmask by removing a agreement class from it\"},\"updateSuperTokenLogic(address)\":{\"notice\":\"Update the super token logic to the latest\"}},\"notice\":\"This is the central contract of the system where super agreement, super app and super token features are connected. The Superfluid host contract is also the entry point for the protocol users, where batch call and meta transaction are provided for UX improvements.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol\":\"ISuperfluid\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"@openzeppelin/contracts/token/ERC777/IERC777.sol\":{\"keccak256\":\"0x385a7061f1436b079d44c140dee9387d5313e94874ff9ee877dc0085c981ac3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c3fe22bb0d9527356e11f267f9187134de4d4ed1ff77468b4d73e3238697b96\",\"dweb:/ipfs/Qmc8caJctgxbzXEpxRogQMR2bnBk5U67hA7kKbUEG2PUXV\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol\":{\"keccak256\":\"0x80254971aff00fc006d70b85b7bc830bb28096789e72ff3f03aa22cc7810eb0c\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://840f9d959abfbf3919db3dca35336e360b2bbd54e677439a545c7c4f163f6d70\",\"dweb:/ipfs/QmR4CRq7dpYR4NuCSASkNrcnbSScRX8MaEvDs8L7v3xDyr\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol\":{\"keccak256\":\"0x9b4fab6dcac1337f78e04d67d8c2b48b1de8bd4bbf14b475840f9dbda7b8f21e\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://cc2f3629ad0cb46bd4f595880591ad6c9d75a82d920cb9355e462fbf8022c820\",\"dweb:/ipfs/QmXMovxK4qpWT4yffXxUVjkMNwxEfS6mtn39mLSmjaxEdW\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperApp.sol\":{\"keccak256\":\"0x6cc4b0724d977190c7441dfc3be6c6e48b43b555c3370af32ef5b6600f15f53f\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://3e89c944642772a42429f21a11017b57deb98a9198f8e4f8749f00aaee71299e\",\"dweb:/ipfs/QmaSv9GvqikcGHJ3tcwATDHSpQw6mfnHPDtcfqcZSS7LF6\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.sol\":{\"keccak256\":\"0x6860f0bf69dcc1d1ec39eefb43e0cd18b276b48ebe9efd53450e09cd2f997ab2\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://6421f80f2ff7818bd235b7bf4b911cc40edcb598507a246b4de0fa0191a9e1aa\",\"dweb:/ipfs/QmWxktXMjYhi1zt52D3JXNcxCFesXu8kQoSCJQ3j88apM3\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperTokenFactory.sol\":{\"keccak256\":\"0xe2525ef2906504e2f61775ed91bbebeea2f4e2e3fa42ce190561acf6a01187ff\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://7a9859eb432321a65cd15ca988a13776e1c31df44b4cf25f95fa04b54a8a8625\",\"dweb:/ipfs/QmQVJQoeoWemptZhbRgWJZWwMTiNtxVsc1FYmGdtdTfqcL\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol\":{\"keccak256\":\"0xab9dab941f99d0f0ef6125fb6eafde03378d7c3e94e613dd12fb7fbf594c3373\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://928c6ef915dee69058d4cfcb9f2344d4fc78d9763b47b17e5c03fbff64ba3c64\",\"dweb:/ipfs/Qmdk733ZHceatz3qbuodLCCS9TUspJJtXLoX6vWwMvrPDE\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance.sol\":{\"keccak256\":\"0x90a9259d0f0bb6b1bb6d48f051277eb75df96a9fbe684a203a3a468ad19318e2\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://9c8162a2d07ffe768920fef55292684149173afefbfba76b8fca007e55092229\",\"dweb:/ipfs/QmducLNwrzeUXEpBjUTSMu7sfmQEwVhcYXApe4brc1zQ6V\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol\":{\"keccak256\":\"0x9cad3866982902ea88df0874a563d2e4aeba5a5bcc6289c30cccf9b4099d2fb6\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://e8fd960b259331f204c7cb7dcd32b09d68f4294e3b872fad00ad467609c3ef72\",\"dweb:/ipfs/QmeZFEvsDunXQGPbXFfN5AvfKM5am1FY8Xv6e3c4tNKvgY\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo.sol\":{\"keccak256\":\"0x55be78ffb441c782f612b153d7d9049e3f0dbfd412c1f7df29c896b972b2985f\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://a223c68e38a6c9b1e363e525911bc7eda44ea517865ae53bd0d34ff858cc02ae\",\"dweb:/ipfs/QmVruGehibG6Emr2A6JHwUnhd4NzsGkE24cbGqnDpEvrKh\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.sol\":{\"keccak256\":\"0x7456cd394cc905aae7cdbd4601ce1c296c768c13c28e66efbb913cc070bad3e4\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://5a6589b428b724721ba5b4dd196c8f366a6e694ef313add093f29af64496c042\",\"dweb:/ipfs/QmSMgV6y8L6pyyzDz6kKmafVwujNWcjTqutpCBxe4uNRqg\"]}},\"version\":1}"}},"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance.sol":{"ISuperfluidGovernance":{"abi":[{"inputs":[],"name":"SF_GOV_ARRAYS_NOT_SAME_LENGTH","type":"error"},{"inputs":[],"name":"SF_GOV_INVALID_LIQUIDATION_OR_PATRICIAN_PERIOD","type":"error"},{"inputs":[],"name":"SF_GOV_MUST_BE_CONTRACT","type":"error"},{"inputs":[{"internalType":"contract ISuperfluid","name":"host","type":"address"},{"internalType":"contract ISuperToken[]","name":"tokens","type":"address[]"}],"name":"batchUpdateSuperTokenLogic","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ISuperfluid","name":"host","type":"address"},{"internalType":"contract ISuperfluidToken","name":"superToken","type":"address"},{"internalType":"bytes32","name":"key","type":"bytes32"}],"name":"clearConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ISuperfluid","name":"host","type":"address"},{"internalType":"contract ISuperfluidToken","name":"superToken","type":"address"},{"internalType":"bytes32","name":"key","type":"bytes32"}],"name":"getConfigAsAddress","outputs":[{"internalType":"address","name":"value","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ISuperfluid","name":"host","type":"address"},{"internalType":"contract ISuperfluidToken","name":"superToken","type":"address"},{"internalType":"bytes32","name":"key","type":"bytes32"}],"name":"getConfigAsUint256","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ISuperfluid","name":"host","type":"address"},{"internalType":"address","name":"agreementClass","type":"address"}],"name":"registerAgreementClass","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ISuperfluid","name":"host","type":"address"},{"internalType":"address","name":"newGov","type":"address"}],"name":"replaceGovernance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ISuperfluid","name":"host","type":"address"},{"internalType":"contract ISuperfluidToken","name":"superToken","type":"address"},{"internalType":"bytes32","name":"key","type":"bytes32"},{"internalType":"address","name":"value","type":"address"}],"name":"setConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ISuperfluid","name":"host","type":"address"},{"internalType":"contract ISuperfluidToken","name":"superToken","type":"address"},{"internalType":"bytes32","name":"key","type":"bytes32"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ISuperfluid","name":"host","type":"address"},{"internalType":"address","name":"hostNewLogic","type":"address"},{"internalType":"address[]","name":"agreementClassNewLogics","type":"address[]"},{"internalType":"address","name":"superTokenFactoryNewLogic","type":"address"}],"name":"updateContracts","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"batchUpdateSuperTokenLogic(address,address[])":"42148deb","clearConfig(address,address,bytes32)":"640b6cc9","getConfigAsAddress(address,address,bytes32)":"8369a0f1","getConfigAsUint256(address,address,bytes32)":"80f70cba","registerAgreementClass(address,address)":"cadf8f85","replaceGovernance(address,address)":"44864b25","setConfig(address,address,bytes32,address)":"78707cb8","setConfig(address,address,bytes32,uint256)":"f79a8e63","updateContracts(address,address,address[],address)":"427942a4"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"SF_GOV_ARRAYS_NOT_SAME_LENGTH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SF_GOV_INVALID_LIQUIDATION_OR_PATRICIAN_PERIOD\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SF_GOV_MUST_BE_CONTRACT\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"contract ISuperToken[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"batchUpdateSuperTokenLogic\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"superToken\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"}],\"name\":\"clearConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"superToken\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"}],\"name\":\"getConfigAsAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"superToken\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"}],\"name\":\"getConfigAsUint256\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"}],\"name\":\"registerAgreementClass\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newGov\",\"type\":\"address\"}],\"name\":\"replaceGovernance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"superToken\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"name\":\"setConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"contract ISuperfluidToken\",\"name\":\"superToken\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"setConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"hostNewLogic\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"agreementClassNewLogics\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"superTokenFactoryNewLogic\",\"type\":\"address\"}],\"name\":\"updateContracts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Superfluid\",\"kind\":\"dev\",\"methods\":{\"batchUpdateSuperTokenLogic(address,address[])\":{\"details\":\"Update supertoken logic contract to the latest that is managed by the super token factory\"},\"clearConfig(address,address,bytes32)\":{\"details\":\"Clear configuration\"},\"getConfigAsAddress(address,address,bytes32)\":{\"details\":\"Get configuration as address value\"},\"getConfigAsUint256(address,address,bytes32)\":{\"details\":\"Get configuration as uint256 value\"},\"registerAgreementClass(address,address)\":{\"details\":\"Register a new agreement class\"},\"replaceGovernance(address,address)\":{\"details\":\"Replace the current governance with a new governance\"},\"setConfig(address,address,bytes32,address)\":{\"details\":\"Set configuration as address value\"},\"setConfig(address,address,bytes32,uint256)\":{\"details\":\"Set configuration as uint256 value\"},\"updateContracts(address,address,address[],address)\":{\"custom:note\":\" - Because they might have inter-dependencies, it is good to have one single function to update them all\",\"details\":\"Update logics of the contracts\"}},\"title\":\"Superfluid governance interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance.sol\":\"ISuperfluidGovernance\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"@openzeppelin/contracts/token/ERC777/IERC777.sol\":{\"keccak256\":\"0x385a7061f1436b079d44c140dee9387d5313e94874ff9ee877dc0085c981ac3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c3fe22bb0d9527356e11f267f9187134de4d4ed1ff77468b4d73e3238697b96\",\"dweb:/ipfs/Qmc8caJctgxbzXEpxRogQMR2bnBk5U67hA7kKbUEG2PUXV\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol\":{\"keccak256\":\"0x80254971aff00fc006d70b85b7bc830bb28096789e72ff3f03aa22cc7810eb0c\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://840f9d959abfbf3919db3dca35336e360b2bbd54e677439a545c7c4f163f6d70\",\"dweb:/ipfs/QmR4CRq7dpYR4NuCSASkNrcnbSScRX8MaEvDs8L7v3xDyr\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol\":{\"keccak256\":\"0x9b4fab6dcac1337f78e04d67d8c2b48b1de8bd4bbf14b475840f9dbda7b8f21e\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://cc2f3629ad0cb46bd4f595880591ad6c9d75a82d920cb9355e462fbf8022c820\",\"dweb:/ipfs/QmXMovxK4qpWT4yffXxUVjkMNwxEfS6mtn39mLSmjaxEdW\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperApp.sol\":{\"keccak256\":\"0x6cc4b0724d977190c7441dfc3be6c6e48b43b555c3370af32ef5b6600f15f53f\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://3e89c944642772a42429f21a11017b57deb98a9198f8e4f8749f00aaee71299e\",\"dweb:/ipfs/QmaSv9GvqikcGHJ3tcwATDHSpQw6mfnHPDtcfqcZSS7LF6\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.sol\":{\"keccak256\":\"0x6860f0bf69dcc1d1ec39eefb43e0cd18b276b48ebe9efd53450e09cd2f997ab2\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://6421f80f2ff7818bd235b7bf4b911cc40edcb598507a246b4de0fa0191a9e1aa\",\"dweb:/ipfs/QmWxktXMjYhi1zt52D3JXNcxCFesXu8kQoSCJQ3j88apM3\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperTokenFactory.sol\":{\"keccak256\":\"0xe2525ef2906504e2f61775ed91bbebeea2f4e2e3fa42ce190561acf6a01187ff\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://7a9859eb432321a65cd15ca988a13776e1c31df44b4cf25f95fa04b54a8a8625\",\"dweb:/ipfs/QmQVJQoeoWemptZhbRgWJZWwMTiNtxVsc1FYmGdtdTfqcL\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol\":{\"keccak256\":\"0xab9dab941f99d0f0ef6125fb6eafde03378d7c3e94e613dd12fb7fbf594c3373\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://928c6ef915dee69058d4cfcb9f2344d4fc78d9763b47b17e5c03fbff64ba3c64\",\"dweb:/ipfs/Qmdk733ZHceatz3qbuodLCCS9TUspJJtXLoX6vWwMvrPDE\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance.sol\":{\"keccak256\":\"0x90a9259d0f0bb6b1bb6d48f051277eb75df96a9fbe684a203a3a468ad19318e2\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://9c8162a2d07ffe768920fef55292684149173afefbfba76b8fca007e55092229\",\"dweb:/ipfs/QmducLNwrzeUXEpBjUTSMu7sfmQEwVhcYXApe4brc1zQ6V\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol\":{\"keccak256\":\"0x9cad3866982902ea88df0874a563d2e4aeba5a5bcc6289c30cccf9b4099d2fb6\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://e8fd960b259331f204c7cb7dcd32b09d68f4294e3b872fad00ad467609c3ef72\",\"dweb:/ipfs/QmeZFEvsDunXQGPbXFfN5AvfKM5am1FY8Xv6e3c4tNKvgY\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo.sol\":{\"keccak256\":\"0x55be78ffb441c782f612b153d7d9049e3f0dbfd412c1f7df29c896b972b2985f\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://a223c68e38a6c9b1e363e525911bc7eda44ea517865ae53bd0d34ff858cc02ae\",\"dweb:/ipfs/QmVruGehibG6Emr2A6JHwUnhd4NzsGkE24cbGqnDpEvrKh\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.sol\":{\"keccak256\":\"0x7456cd394cc905aae7cdbd4601ce1c296c768c13c28e66efbb913cc070bad3e4\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://5a6589b428b724721ba5b4dd196c8f366a6e694ef313add093f29af64496c042\",\"dweb:/ipfs/QmSMgV6y8L6pyyzDz6kKmafVwujNWcjTqutpCBxe4uNRqg\"]}},\"version\":1}"}},"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol":{"ISuperfluidToken":{"abi":[{"inputs":[],"name":"SF_TOKEN_AGREEMENT_ALREADY_EXISTS","type":"error"},{"inputs":[],"name":"SF_TOKEN_AGREEMENT_DOES_NOT_EXIST","type":"error"},{"inputs":[],"name":"SF_TOKEN_BURN_INSUFFICIENT_BALANCE","type":"error"},{"inputs":[],"name":"SF_TOKEN_MOVE_INSUFFICIENT_BALANCE","type":"error"},{"inputs":[],"name":"SF_TOKEN_ONLY_HOST","type":"error"},{"inputs":[],"name":"SF_TOKEN_ONLY_LISTED_AGREEMENT","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"agreementClass","type":"address"},{"indexed":false,"internalType":"bytes32","name":"id","type":"bytes32"},{"indexed":false,"internalType":"bytes32[]","name":"data","type":"bytes32[]"}],"name":"AgreementCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"agreementClass","type":"address"},{"indexed":false,"internalType":"bytes32","name":"id","type":"bytes32"},{"indexed":true,"internalType":"address","name":"penaltyAccount","type":"address"},{"indexed":true,"internalType":"address","name":"rewardAccount","type":"address"},{"indexed":false,"internalType":"uint256","name":"rewardAmount","type":"uint256"}],"name":"AgreementLiquidated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"liquidatorAccount","type":"address"},{"indexed":true,"internalType":"address","name":"agreementClass","type":"address"},{"indexed":false,"internalType":"bytes32","name":"id","type":"bytes32"},{"indexed":true,"internalType":"address","name":"penaltyAccount","type":"address"},{"indexed":true,"internalType":"address","name":"bondAccount","type":"address"},{"indexed":false,"internalType":"uint256","name":"rewardAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bailoutAmount","type":"uint256"}],"name":"AgreementLiquidatedBy","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"agreementClass","type":"address"},{"indexed":false,"internalType":"bytes32","name":"id","type":"bytes32"},{"indexed":true,"internalType":"address","name":"liquidatorAccount","type":"address"},{"indexed":true,"internalType":"address","name":"targetAccount","type":"address"},{"indexed":false,"internalType":"address","name":"rewardAmountReceiver","type":"address"},{"indexed":false,"internalType":"uint256","name":"rewardAmount","type":"uint256"},{"indexed":false,"internalType":"int256","name":"targetAccountBalanceDelta","type":"int256"},{"indexed":false,"internalType":"bytes","name":"liquidationTypeData","type":"bytes"}],"name":"AgreementLiquidatedV2","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"agreementClass","type":"address"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"slotId","type":"uint256"}],"name":"AgreementStateUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"agreementClass","type":"address"},{"indexed":false,"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"AgreementTerminated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"agreementClass","type":"address"},{"indexed":false,"internalType":"bytes32","name":"id","type":"bytes32"},{"indexed":false,"internalType":"bytes32[]","name":"data","type":"bytes32[]"}],"name":"AgreementUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"bailoutAccount","type":"address"},{"indexed":false,"internalType":"uint256","name":"bailoutAmount","type":"uint256"}],"name":"Bailout","type":"event"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"bytes32[]","name":"data","type":"bytes32[]"}],"name":"createAgreement","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getAccountActiveAgreements","outputs":[{"internalType":"contract ISuperAgreement[]","name":"activeAgreements","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"agreementClass","type":"address"},{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"uint256","name":"dataLength","type":"uint256"}],"name":"getAgreementData","outputs":[{"internalType":"bytes32[]","name":"data","type":"bytes32[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"agreementClass","type":"address"},{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"slotId","type":"uint256"},{"internalType":"uint256","name":"dataLength","type":"uint256"}],"name":"getAgreementStateSlot","outputs":[{"internalType":"bytes32[]","name":"slotData","type":"bytes32[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getHost","outputs":[{"internalType":"address","name":"host","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"isAccountCritical","outputs":[{"internalType":"bool","name":"isCritical","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isAccountCriticalNow","outputs":[{"internalType":"bool","name":"isCritical","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"isAccountSolvent","outputs":[{"internalType":"bool","name":"isSolvent","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isAccountSolventNow","outputs":[{"internalType":"bool","name":"isSolvent","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"bytes","name":"liquidationTypeData","type":"bytes"},{"internalType":"address","name":"liquidatorAccount","type":"address"},{"internalType":"bool","name":"useDefaultRewardAccount","type":"bool"},{"internalType":"address","name":"targetAccount","type":"address"},{"internalType":"uint256","name":"rewardAmount","type":"uint256"},{"internalType":"int256","name":"targetAccountBalanceDelta","type":"int256"}],"name":"makeLiquidationPayoutsV2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"realtimeBalanceOf","outputs":[{"internalType":"int256","name":"availableBalance","type":"int256"},{"internalType":"uint256","name":"deposit","type":"uint256"},{"internalType":"uint256","name":"owedDeposit","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"realtimeBalanceOfNow","outputs":[{"internalType":"int256","name":"availableBalance","type":"int256"},{"internalType":"uint256","name":"deposit","type":"uint256"},{"internalType":"uint256","name":"owedDeposit","type":"uint256"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"int256","name":"delta","type":"int256"}],"name":"settleBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"uint256","name":"dataLength","type":"uint256"}],"name":"terminateAgreement","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"bytes32[]","name":"data","type":"bytes32[]"}],"name":"updateAgreementData","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"slotId","type":"uint256"},{"internalType":"bytes32[]","name":"slotData","type":"bytes32[]"}],"name":"updateAgreementStateSlot","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"createAgreement(bytes32,bytes32[])":"12a6a3f8","getAccountActiveAgreements(address)":"386fa221","getAgreementData(address,bytes32,uint256)":"6c2d9f2f","getAgreementStateSlot(address,address,uint256,uint256)":"4b61cc33","getHost()":"20bc4425","isAccountCritical(address,uint256)":"d9d078d6","isAccountCriticalNow(address)":"79359f6f","isAccountSolvent(address,uint256)":"b84cdd4a","isAccountSolventNow(address)":"bb0d196e","makeLiquidationPayoutsV2(bytes32,bytes,address,bool,address,uint256,int256)":"1863e809","realtimeBalanceOf(address,uint256)":"eb3537cc","realtimeBalanceOfNow(address)":"2ec8eec7","settleBalance(address,int256)":"cf97256d","terminateAgreement(bytes32,uint256)":"27048397","updateAgreementData(bytes32,bytes32[])":"a1b2bf8b","updateAgreementStateSlot(address,uint256,bytes32[])":"090c415e"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"SF_TOKEN_AGREEMENT_ALREADY_EXISTS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SF_TOKEN_AGREEMENT_DOES_NOT_EXIST\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SF_TOKEN_BURN_INSUFFICIENT_BALANCE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SF_TOKEN_MOVE_INSUFFICIENT_BALANCE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SF_TOKEN_ONLY_HOST\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SF_TOKEN_ONLY_LISTED_AGREEMENT\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32[]\",\"name\":\"data\",\"type\":\"bytes32[]\"}],\"name\":\"AgreementCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"penaltyAccount\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"rewardAccount\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewardAmount\",\"type\":\"uint256\"}],\"name\":\"AgreementLiquidated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"liquidatorAccount\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"penaltyAccount\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"bondAccount\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewardAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bailoutAmount\",\"type\":\"uint256\"}],\"name\":\"AgreementLiquidatedBy\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"liquidatorAccount\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"targetAccount\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"rewardAmountReceiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewardAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"targetAccountBalanceDelta\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"liquidationTypeData\",\"type\":\"bytes\"}],\"name\":\"AgreementLiquidatedV2\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"slotId\",\"type\":\"uint256\"}],\"name\":\"AgreementStateUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"AgreementTerminated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32[]\",\"name\":\"data\",\"type\":\"bytes32[]\"}],\"name\":\"AgreementUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"bailoutAccount\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bailoutAmount\",\"type\":\"uint256\"}],\"name\":\"Bailout\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"data\",\"type\":\"bytes32[]\"}],\"name\":\"createAgreement\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getAccountActiveAgreements\",\"outputs\":[{\"internalType\":\"contract ISuperAgreement[]\",\"name\":\"activeAgreements\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"dataLength\",\"type\":\"uint256\"}],\"name\":\"getAgreementData\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"data\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"agreementClass\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"slotId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"dataLength\",\"type\":\"uint256\"}],\"name\":\"getAgreementStateSlot\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"slotData\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getHost\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"host\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"isAccountCritical\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isCritical\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isAccountCriticalNow\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isCritical\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"isAccountSolvent\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isSolvent\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isAccountSolventNow\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isSolvent\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"liquidationTypeData\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"liquidatorAccount\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"useDefaultRewardAccount\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"targetAccount\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"rewardAmount\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"targetAccountBalanceDelta\",\"type\":\"int256\"}],\"name\":\"makeLiquidationPayoutsV2\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"realtimeBalanceOf\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"availableBalance\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"deposit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"owedDeposit\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"realtimeBalanceOfNow\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"availableBalance\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"deposit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"owedDeposit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"int256\",\"name\":\"delta\",\"type\":\"int256\"}],\"name\":\"settleBalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"dataLength\",\"type\":\"uint256\"}],\"name\":\"terminateAgreement\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"data\",\"type\":\"bytes32[]\"}],\"name\":\"updateAgreementData\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"slotId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"slotData\",\"type\":\"bytes32[]\"}],\"name\":\"updateAgreementStateSlot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Superfluid\",\"events\":{\"AgreementCreated(address,bytes32,bytes32[])\":{\"details\":\"Agreement created event\",\"params\":{\"agreementClass\":\"Contract address of the agreement\",\"data\":\"Agreement data\",\"id\":\"Agreement ID\"}},\"AgreementLiquidated(address,bytes32,address,address,uint256)\":{\"custom:deprecated\":\"Use AgreementLiquidatedV2 instead\",\"details\":\"Agreement liquidation event (DEPRECATED BY AgreementLiquidatedBy)\",\"params\":{\"agreementClass\":\"Contract address of the agreement\",\"id\":\"Agreement ID\",\"penaltyAccount\":\"Account of the agreement to be penalized\",\"rewardAccount\":\"Account that collect the reward\",\"rewardAmount\":\"Amount of liquidation reward\"}},\"AgreementLiquidatedBy(address,address,bytes32,address,address,uint256,uint256)\":{\"custom:deprecated\":\"Use AgreementLiquidatedV2 instead\",\"custom:note\":\" Reward account rule: - if bailout is equal to 0, then - the bondAccount will get the rewardAmount, - the penaltyAccount will pay for the rewardAmount. - if bailout is larger than 0, then - the liquidatorAccount will get the rewardAmouont, - the bondAccount will pay for both the rewardAmount and bailoutAmount, - the penaltyAccount will pay for the rewardAmount while get the bailoutAmount.\",\"details\":\"Agreement liquidation event (DEPRECATED BY AgreementLiquidatedV2)\",\"params\":{\"agreementClass\":\"Contract address of the agreement\",\"bailoutAmount\":\"Amount of liquidation bailouot\",\"bondAccount\":\"Account that collect the reward or bailout accounts\",\"id\":\"Agreement ID\",\"liquidatorAccount\":\"Account of the agent that performed the liquidation.\",\"penaltyAccount\":\"Account of the agreement to be penalized\",\"rewardAmount\":\"Amount of liquidation reward\"}},\"AgreementLiquidatedV2(address,bytes32,address,address,address,uint256,int256,bytes)\":{\"custom:note\":\" Reward account rule: - if the agreement is liquidated during the PIC period - the rewardAmountReceiver will get the rewardAmount (remaining deposit), regardless of the liquidatorAccount - the targetAccount will pay for the rewardAmount - if the agreement is liquidated after the PIC period AND the targetAccount is solvent - the rewardAmountReceiver will get the rewardAmount (remaining deposit) - the targetAccount will pay for the rewardAmount - if the targetAccount is insolvent - the liquidatorAccount will get the rewardAmount (single deposit) - the default reward account (governance) will pay for both the rewardAmount and bailoutAmount - the targetAccount will receive the bailoutAmount\",\"details\":\"Agreement liquidation event v2 (including agent account)\",\"params\":{\"agreementClass\":\"Contract address of the agreement\",\"id\":\"Agreement ID\",\"liquidationTypeData\":\"The encoded liquidation type data including the version (how to decode)\",\"liquidatorAccount\":\"Address of the executor of the liquidation\",\"rewardAmount\":\"The amount the reward recipient account balance should change by\",\"rewardAmountReceiver\":\"Account that collects the reward or bails out insolvent accounts\",\"targetAccount\":\"Account of the stream sender\",\"targetAccountBalanceDelta\":\"The amount the sender account balance should change by\"}},\"AgreementStateUpdated(address,address,uint256)\":{\"details\":\"Agreement account state updated event\",\"params\":{\"account\":\"Account updated\",\"agreementClass\":\"Contract address of the agreement\",\"slotId\":\"slot id of the agreement state\"}},\"AgreementTerminated(address,bytes32)\":{\"details\":\"Agreement terminated event\",\"params\":{\"agreementClass\":\"Contract address of the agreement\",\"id\":\"Agreement ID\"}},\"AgreementUpdated(address,bytes32,bytes32[])\":{\"details\":\"Agreement updated event\",\"params\":{\"agreementClass\":\"Contract address of the agreement\",\"data\":\"Agreement data\",\"id\":\"Agreement ID\"}},\"Bailout(address,uint256)\":{\"custom:deprecated\":\"Use AgreementLiquidatedV2 instead\",\"details\":\"System bailout occurred (DEPRECATED BY AgreementLiquidatedBy)\",\"params\":{\"bailoutAccount\":\"Account that bailout the penalty account\",\"bailoutAmount\":\"Amount of account bailout\"}}},\"kind\":\"dev\",\"methods\":{\"createAgreement(bytes32,bytes32[])\":{\"details\":\"Create a new agreement\",\"params\":{\"data\":\"Agreement data\",\"id\":\"Agreement ID\"}},\"getAccountActiveAgreements(address)\":{\"details\":\"An active agreement is one that has state for the account\",\"params\":{\"account\":\"Account to query\"},\"returns\":{\"activeAgreements\":\"List of accounts that have non-zero states for the account\"}},\"getAgreementData(address,bytes32,uint256)\":{\"details\":\"Get data of the agreement\",\"params\":{\"agreementClass\":\"Contract address of the agreement\",\"id\":\"Agreement ID\"},\"returns\":{\"data\":\"Data of the agreement\"}},\"getAgreementStateSlot(address,address,uint256,uint256)\":{\"details\":\"Get data of the slot of the state of an agreement\",\"params\":{\"account\":\"Account to query\",\"agreementClass\":\"Contract address of the agreement\",\"dataLength\":\"length of the state data\",\"slotId\":\"slot id of the state\"}},\"getHost()\":{\"details\":\"Get superfluid host contract address\"},\"isAccountCritical(address,uint256)\":{\"details\":\"A critical account is when availableBalance < 0\",\"params\":{\"account\":\"The account to check\",\"timestamp\":\"The time we'd like to check if the account is critical (should use future)\"},\"returns\":{\"isCritical\":\"Whether the account is critical\"}},\"isAccountCriticalNow(address)\":{\"details\":\"A critical account is when availableBalance < 0\",\"params\":{\"account\":\"The account to check\"},\"returns\":{\"isCritical\":\"Whether the account is critical\"}},\"isAccountSolvent(address,uint256)\":{\"details\":\"An account is insolvent when the sum of deposits for a token can't cover the negative availableBalance\",\"params\":{\"account\":\"The account to check\",\"timestamp\":\"The time we'd like to check if the account is solvent (should use future)\"},\"returns\":{\"isSolvent\":\"True if the account is solvent, false otherwise\"}},\"isAccountSolventNow(address)\":{\"details\":\"An account is insolvent when the sum of deposits for a token can't cover the negative availableBalance\",\"params\":{\"account\":\"The account to check\"},\"returns\":{\"isSolvent\":\"True if the account is solvent, false otherwise\"}},\"makeLiquidationPayoutsV2(bytes32,bytes,address,bool,address,uint256,int256)\":{\"custom:modifiers\":\" - onlyAgreement\",\"custom:note\":\" - If a bailout is required (bailoutAmount > 0) - the actual reward (single deposit) goes to the executor, - while the reward account becomes the bailout account - total bailout include: bailout amount + reward amount - the targetAccount will be bailed out - If a bailout is not required - the targetAccount will pay the rewardAmount - the liquidator (reward account in PIC period) will receive the rewardAmount\",\"details\":\"Make liquidation payouts (v2)\",\"params\":{\"id\":\"Agreement ID\",\"liquidationTypeData\":\"Data regarding the version of the liquidation schema and the type\",\"liquidatorAccount\":\"Address of the executor of the liquidation\",\"rewardAmount\":\"The amount the rewarded account will receive\",\"targetAccount\":\"Account to be liquidated\",\"targetAccountBalanceDelta\":\"The delta amount the target account balance should change by\",\"useDefaultRewardAccount\":\"Whether or not the default reward account receives the rewardAmount\"}},\"realtimeBalanceOf(address,uint256)\":{\"details\":\"Calculate the real balance of a user, taking in consideration all agreements of the account\",\"params\":{\"account\":\"for the query\",\"timestamp\":\"Time of balance\"},\"returns\":{\"availableBalance\":\"Real-time balance\",\"deposit\":\"Account deposit\",\"owedDeposit\":\"Account owed Deposit\"}},\"realtimeBalanceOfNow(address)\":{\"details\":\"realtimeBalanceOf with timestamp equals to block timestamp\",\"params\":{\"account\":\"for the query\"},\"returns\":{\"availableBalance\":\"Real-time balance\",\"deposit\":\"Account deposit\",\"owedDeposit\":\"Account owed Deposit\"}},\"settleBalance(address,int256)\":{\"custom:modifiers\":\" - onlyAgreement\",\"details\":\"The agreement needs to make sure that the balance delta is balanced afterwards\",\"params\":{\"account\":\"Account to query.\",\"delta\":\"Amount of balance delta to be settled\"}},\"terminateAgreement(bytes32,uint256)\":{\"details\":\"Close the agreement\",\"params\":{\"id\":\"Agreement ID\"}},\"updateAgreementData(bytes32,bytes32[])\":{\"details\":\"Create a new agreement\",\"params\":{\"data\":\"Agreement data\",\"id\":\"Agreement ID\"}},\"updateAgreementStateSlot(address,uint256,bytes32[])\":{\"custom:note\":\" - To clear the storage out, provide zero-ed array of intended length\",\"details\":\"Update agreement state slot\",\"params\":{\"account\":\"Account to be updated\"}}},\"title\":\"Superfluid token interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getAccountActiveAgreements(address)\":{\"notice\":\"Get a list of agreements that is active for the account\"},\"isAccountCritical(address,uint256)\":{\"notice\":\"Check if account is critical\"},\"isAccountCriticalNow(address)\":{\"notice\":\"Check if account is critical now (current host.getNow())\"},\"isAccountSolvent(address,uint256)\":{\"notice\":\"Check if account is solvent\"},\"isAccountSolventNow(address)\":{\"notice\":\"Check if account is solvent now\"},\"realtimeBalanceOfNow(address)\":{\"notice\":\"Calculate the realtime balance given the current host.getNow() value\"},\"settleBalance(address,int256)\":{\"notice\":\"Settle balance from an account by the agreement\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol\":\"ISuperfluidToken\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol\":{\"keccak256\":\"0x9b4fab6dcac1337f78e04d67d8c2b48b1de8bd4bbf14b475840f9dbda7b8f21e\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://cc2f3629ad0cb46bd4f595880591ad6c9d75a82d920cb9355e462fbf8022c820\",\"dweb:/ipfs/QmXMovxK4qpWT4yffXxUVjkMNwxEfS6mtn39mLSmjaxEdW\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol\":{\"keccak256\":\"0x9cad3866982902ea88df0874a563d2e4aeba5a5bcc6289c30cccf9b4099d2fb6\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://e8fd960b259331f204c7cb7dcd32b09d68f4294e3b872fad00ad467609c3ef72\",\"dweb:/ipfs/QmeZFEvsDunXQGPbXFfN5AvfKM5am1FY8Xv6e3c4tNKvgY\"]}},\"version\":1}"}},"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo.sol":{"ERC20WithTokenInfo":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Superfluid\",\"details\":\"Using abstract contract instead of interfaces because old solidity does not support interface inheriting other interfaces solhint-disable-next-line no-empty-blocks\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"title\":\"ERC20 token with token info interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo.sol\":\"ERC20WithTokenInfo\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo.sol\":{\"keccak256\":\"0x55be78ffb441c782f612b153d7d9049e3f0dbfd412c1f7df29c896b972b2985f\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://a223c68e38a6c9b1e363e525911bc7eda44ea517865ae53bd0d34ff858cc02ae\",\"dweb:/ipfs/QmVruGehibG6Emr2A6JHwUnhd4NzsGkE24cbGqnDpEvrKh\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.sol\":{\"keccak256\":\"0x7456cd394cc905aae7cdbd4601ce1c296c768c13c28e66efbb913cc070bad3e4\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://5a6589b428b724721ba5b4dd196c8f366a6e694ef313add093f29af64496c042\",\"dweb:/ipfs/QmSMgV6y8L6pyyzDz6kKmafVwujNWcjTqutpCBxe4uNRqg\"]}},\"version\":1}"}},"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.sol":{"TokenInfo":{"abi":[{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"decimals()":"313ce567","name()":"06fdde03","symbol()":"95d89b41"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Superfluid\",\"details\":\"ERC20 standard interface does not specify these functions, but often the token implementations have them.\",\"kind\":\"dev\",\"methods\":{\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"}},\"title\":\"ERC20 token info interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.sol\":\"TokenInfo\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.sol\":{\"keccak256\":\"0x7456cd394cc905aae7cdbd4601ce1c296c768c13c28e66efbb913cc070bad3e4\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://5a6589b428b724721ba5b4dd196c8f366a6e694ef313add093f29af64496c042\",\"dweb:/ipfs/QmSMgV6y8L6pyyzDz6kKmafVwujNWcjTqutpCBxe4uNRqg\"]}},\"version\":1}"}},"contracts/Diamond.sol":{"Diamond":{"abi":[{"inputs":[{"internalType":"address","name":"_contractOwner","type":"address"},{"internalType":"address","name":"_diamondCutFacet","type":"address"}],"stateMutability":"payable","type":"constructor"},{"inputs":[{"internalType":"address","name":"_initializationContractAddress","type":"address"},{"internalType":"bytes","name":"_calldata","type":"bytes"}],"name":"InitializationFunctionReverted","type":"error"},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}],"evm":{"bytecode":{"functionDebugData":{"@_8220":{"entryPoint":null,"id":8220,"parameterSlots":2,"returnSlots":0},"@_addFacet_15952":{"entryPoint":3912,"id":15952,"parameterSlots":2,"returnSlots":0},"@_addFunction_15993":{"entryPoint":4140,"id":15993,"parameterSlots":4,"returnSlots":0},"@_addFunctions_15750":{"entryPoint":1600,"id":15750,"parameterSlots":2,"returnSlots":0},"@_cut_15649":{"entryPoint":712,"id":15649,"parameterSlots":3,"returnSlots":0},"@_grantRole_15425":{"entryPoint":1356,"id":15425,"parameterSlots":2,"returnSlots":0},"@_hasRole_15278":{"entryPoint":3698,"id":15278,"parameterSlots":2,"returnSlots":1},"@_initializeDiamondCut_16208":{"entryPoint":3390,"id":16208,"parameterSlots":2,"returnSlots":0},"@_removeFunction_16160":{"entryPoint":4569,"id":16160,"parameterSlots":3,"returnSlots":0},"@_removeFunctions_15919":{"entryPoint":2966,"id":15919,"parameterSlots":2,"returnSlots":0},"@_replaceFunctions_15854":{"entryPoint":2274,"id":15854,"parameterSlots":2,"returnSlots":0},"@_requireHasContractCode_16227":{"entryPoint":6234,"id":16227,"parameterSlots":2,"returnSlots":0},"@_setupRole_15478":{"entryPoint":690,"id":15478,"parameterSlots":2,"returnSlots":0},"@_storageAccessControl_15249":{"entryPoint":3822,"id":15249,"parameterSlots":0,"returnSlots":1},"@_storageDiamond_15535":{"entryPoint":3867,"id":15535,"parameterSlots":0,"returnSlots":1},"abi_decode_t_address_fromMemory":{"entryPoint":6478,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address_fromMemory":{"entryPoint":6501,"id":null,"parameterSlots":2,"returnSlots":2},"abi_encodeUpdatedPos_t_bytes4_to_t_bytes4":{"entryPoint":7605,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_t_struct$_FacetCut_$11817_memory_ptr_to_t_struct$_FacetCut_$11817_memory_ptr":{"entryPoint":7836,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_address_to_t_address":{"entryPoint":7402,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_address_to_t_address_fromStack":{"entryPoint":8000,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_array$_t_bytes4_$dyn_memory_ptr_to_t_array$_t_bytes4_$dyn_memory_ptr":{"entryPoint":7644,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_fromStack":{"entryPoint":7871,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_bytes4_to_t_bytes4":{"entryPoint":7588,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack":{"entryPoint":8106,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":9098,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_enum$_FacetCutAction_$11808_to_t_uint8":{"entryPoint":7483,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack":{"entryPoint":9651,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_stringliteral_17a8e30262c1f919c33056d877a3c22b95c2f5e4dac44683c1c2323cd79fbdb0_to_t_string_memory_ptr_fromStack":{"entryPoint":6858,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_1ffc682bcfedefd5e93ba9ed0c2d1bc0b18319886e3b4bd28a03a3d3729f85c0_to_t_string_memory_ptr_fromStack":{"entryPoint":8325,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_2c590e498c4d56c984a7092fd5e89a68b9f4541ce9f97252fb74e44a00ffbb71_to_t_string_memory_ptr_fromStack":{"entryPoint":9309,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_339759585899103d2ace64958e37e18ccb0504652c81d4a1b8aa80fe2126ab95_to_t_string_memory_ptr_fromStack":{"entryPoint":6630,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07_to_t_string_memory_ptr_fromStack":{"entryPoint":6744,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_48267d8daf5ea9c6bbad1fe9c53dc4c04a2a01b2b85bad432956cf42f45b2f54_to_t_string_memory_ptr_fromStack":{"entryPoint":7151,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_64609d8b93c93a06b98d7db7a87b04044cd4a52c5661d603bb9b90ad8b914a3a_to_t_string_memory_ptr_fromStack":{"entryPoint":8477,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_8ba063dfaa4be2d2cbe73dbb1364728b0f7031ac048441d5fad19e9541992b21_to_t_string_memory_ptr_fromStack":{"entryPoint":9461,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_99a7418ee014d613f46da44561258cdbb58064508097483a319062b99fa37700_to_t_string_memory_ptr_fromStack":{"entryPoint":8629,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_b5a7112edf707196456f338fdcc19cd849be6cb8c0d166bcd035f4cfb00e7078_to_t_string_memory_ptr_fromStack":{"entryPoint":8862,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_b739aae768f79b96e91d9f66398733516895e39eb09ee54a795b49dcc77504d4_to_t_string_memory_ptr_fromStack":{"entryPoint":9014,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_struct$_FacetCut_$11817_memory_ptr_to_t_struct$_FacetCut_$11817_memory_ptr":{"entryPoint":7750,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":9153,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":9178,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_t_address_t_bytes_memory_ptr__to_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_t_address_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":8171,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":9716,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_17a8e30262c1f919c33056d877a3c22b95c2f5e4dac44683c1c2323cd79fbdb0__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":6897,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_1ffc682bcfedefd5e93ba9ed0c2d1bc0b18319886e3b4bd28a03a3d3729f85c0__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":8364,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_2c590e498c4d56c984a7092fd5e89a68b9f4541ce9f97252fb74e44a00ffbb71__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":9348,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_339759585899103d2ace64958e37e18ccb0504652c81d4a1b8aa80fe2126ab95__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":6669,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":6783,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_48267d8daf5ea9c6bbad1fe9c53dc4c04a2a01b2b85bad432956cf42f45b2f54__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":7190,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_64609d8b93c93a06b98d7db7a87b04044cd4a52c5661d603bb9b90ad8b914a3a__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":8516,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_8ba063dfaa4be2d2cbe73dbb1364728b0f7031ac048441d5fad19e9541992b21__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":9500,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_99a7418ee014d613f46da44561258cdbb58064508097483a319062b99fa37700__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":8668,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b5a7112edf707196456f338fdcc19cd849be6cb8c0d166bcd035f4cfb00e7078__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":8901,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b739aae768f79b96e91d9f66398733516895e39eb09ee54a795b49dcc77504d4__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":9053,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"array_dataslot_t_array$_t_bytes4_$dyn_memory_ptr":{"entryPoint":7528,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr":{"entryPoint":7386,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_array$_t_bytes4_$dyn_memory_ptr":{"entryPoint":7500,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr":{"entryPoint":7358,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_bytes_memory_ptr":{"entryPoint":8017,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_string_memory_ptr":{"entryPoint":9640,"id":null,"parameterSlots":1,"returnSlots":1},"array_nextElement_t_array$_t_bytes4_$dyn_memory_ptr":{"entryPoint":7631,"id":null,"parameterSlots":1,"returnSlots":1},"array_nextElement_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr":{"entryPoint":7858,"id":null,"parameterSlots":1,"returnSlots":1},"array_storeLengthForEncoding_t_array$_t_bytes4_$dyn_memory_ptr":{"entryPoint":7511,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_fromStack":{"entryPoint":7369,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack":{"entryPoint":8028,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":9087,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_fromStack":{"entryPoint":6572,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":9534,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_t_address":{"entryPoint":6432,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_bytes4":{"entryPoint":7544,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_enum$_FacetCutAction_$11808":{"entryPoint":7442,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint160":{"entryPoint":6400,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint256":{"entryPoint":7271,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint96":{"entryPoint":8702,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_enum$_FacetCutAction_$11808_to_t_uint8":{"entryPoint":7463,"id":null,"parameterSlots":1,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":8045,"id":null,"parameterSlots":3,"returnSlots":0},"increment_t_uint256":{"entryPoint":7281,"id":null,"parameterSlots":1,"returnSlots":1},"increment_t_uint96":{"entryPoint":8726,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":7224,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":7025,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x31":{"entryPoint":9593,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":6978,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":6931,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":6395,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of_32":{"entryPoint":8089,"id":null,"parameterSlots":1,"returnSlots":1},"store_literal_in_memory_17a8e30262c1f919c33056d877a3c22b95c2f5e4dac44683c1c2323cd79fbdb0":{"entryPoint":6817,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_1ffc682bcfedefd5e93ba9ed0c2d1bc0b18319886e3b4bd28a03a3d3729f85c0":{"entryPoint":8246,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_2c590e498c4d56c984a7092fd5e89a68b9f4541ce9f97252fb74e44a00ffbb71":{"entryPoint":9230,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_339759585899103d2ace64958e37e18ccb0504652c81d4a1b8aa80fe2126ab95":{"entryPoint":6589,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07":{"entryPoint":6703,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_48267d8daf5ea9c6bbad1fe9c53dc4c04a2a01b2b85bad432956cf42f45b2f54":{"entryPoint":7072,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_64609d8b93c93a06b98d7db7a87b04044cd4a52c5661d603bb9b90ad8b914a3a":{"entryPoint":8398,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_8ba063dfaa4be2d2cbe73dbb1364728b0f7031ac048441d5fad19e9541992b21":{"entryPoint":9382,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_99a7418ee014d613f46da44561258cdbb58064508097483a319062b99fa37700":{"entryPoint":8550,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_b5a7112edf707196456f338fdcc19cd849be6cb8c0d166bcd035f4cfb00e7078":{"entryPoint":8783,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_b739aae768f79b96e91d9f66398733516895e39eb09ee54a795b49dcc77504d4":{"entryPoint":8935,"id":null,"parameterSlots":1,"returnSlots":0},"validator_assert_t_enum$_FacetCutAction_$11808":{"entryPoint":7419,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_address":{"entryPoint":6452,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:23991:61","statements":[{"body":{"nodeType":"YulBlock","src":"47:35:61","statements":[{"nodeType":"YulAssignment","src":"57:19:61","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"73:2:61","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"67:5:61"},"nodeType":"YulFunctionCall","src":"67:9:61"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"57:6:61"}]}]},"name":"allocate_unbounded","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"40:6:61","type":""}],"src":"7:75:61"},{"body":{"nodeType":"YulBlock","src":"177:28:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"194:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"197:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"187:6:61"},"nodeType":"YulFunctionCall","src":"187:12:61"},"nodeType":"YulExpressionStatement","src":"187:12:61"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulFunctionDefinition","src":"88:117:61"},{"body":{"nodeType":"YulBlock","src":"300:28:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"317:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"320:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"310:6:61"},"nodeType":"YulFunctionCall","src":"310:12:61"},"nodeType":"YulExpressionStatement","src":"310:12:61"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulFunctionDefinition","src":"211:117:61"},{"body":{"nodeType":"YulBlock","src":"379:81:61","statements":[{"nodeType":"YulAssignment","src":"389:65:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"404:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"411:42:61","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"400:3:61"},"nodeType":"YulFunctionCall","src":"400:54:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"389:7:61"}]}]},"name":"cleanup_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"361:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"371:7:61","type":""}],"src":"334:126:61"},{"body":{"nodeType":"YulBlock","src":"511:51:61","statements":[{"nodeType":"YulAssignment","src":"521:35:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"550:5:61"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"532:17:61"},"nodeType":"YulFunctionCall","src":"532:24:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"521:7:61"}]}]},"name":"cleanup_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"493:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"503:7:61","type":""}],"src":"466:96:61"},{"body":{"nodeType":"YulBlock","src":"611:79:61","statements":[{"body":{"nodeType":"YulBlock","src":"668:16:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"677:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"680:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"670:6:61"},"nodeType":"YulFunctionCall","src":"670:12:61"},"nodeType":"YulExpressionStatement","src":"670:12:61"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"634:5:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"659:5:61"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"641:17:61"},"nodeType":"YulFunctionCall","src":"641:24:61"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"631:2:61"},"nodeType":"YulFunctionCall","src":"631:35:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"624:6:61"},"nodeType":"YulFunctionCall","src":"624:43:61"},"nodeType":"YulIf","src":"621:63:61"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"604:5:61","type":""}],"src":"568:122:61"},{"body":{"nodeType":"YulBlock","src":"759:80:61","statements":[{"nodeType":"YulAssignment","src":"769:22:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"784:6:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"778:5:61"},"nodeType":"YulFunctionCall","src":"778:13:61"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"769:5:61"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"827:5:61"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"800:26:61"},"nodeType":"YulFunctionCall","src":"800:33:61"},"nodeType":"YulExpressionStatement","src":"800:33:61"}]},"name":"abi_decode_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"737:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"745:3:61","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"753:5:61","type":""}],"src":"696:143:61"},{"body":{"nodeType":"YulBlock","src":"939:413:61","statements":[{"body":{"nodeType":"YulBlock","src":"985:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"987:77:61"},"nodeType":"YulFunctionCall","src":"987:79:61"},"nodeType":"YulExpressionStatement","src":"987:79:61"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"960:7:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"969:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"956:3:61"},"nodeType":"YulFunctionCall","src":"956:23:61"},{"kind":"number","nodeType":"YulLiteral","src":"981:2:61","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"952:3:61"},"nodeType":"YulFunctionCall","src":"952:32:61"},"nodeType":"YulIf","src":"949:119:61"},{"nodeType":"YulBlock","src":"1078:128:61","statements":[{"nodeType":"YulVariableDeclaration","src":"1093:15:61","value":{"kind":"number","nodeType":"YulLiteral","src":"1107:1:61","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1097:6:61","type":""}]},{"nodeType":"YulAssignment","src":"1122:74:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1168:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"1179:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1164:3:61"},"nodeType":"YulFunctionCall","src":"1164:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1188:7:61"}],"functionName":{"name":"abi_decode_t_address_fromMemory","nodeType":"YulIdentifier","src":"1132:31:61"},"nodeType":"YulFunctionCall","src":"1132:64:61"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1122:6:61"}]}]},{"nodeType":"YulBlock","src":"1216:129:61","statements":[{"nodeType":"YulVariableDeclaration","src":"1231:16:61","value":{"kind":"number","nodeType":"YulLiteral","src":"1245:2:61","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1235:6:61","type":""}]},{"nodeType":"YulAssignment","src":"1261:74:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1307:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"1318:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1303:3:61"},"nodeType":"YulFunctionCall","src":"1303:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1327:7:61"}],"functionName":{"name":"abi_decode_t_address_fromMemory","nodeType":"YulIdentifier","src":"1271:31:61"},"nodeType":"YulFunctionCall","src":"1271:64:61"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1261:6:61"}]}]}]},"name":"abi_decode_tuple_t_addresst_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"901:9:61","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"912:7:61","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"924:6:61","type":""},{"name":"value1","nodeType":"YulTypedName","src":"932:6:61","type":""}],"src":"845:507:61"},{"body":{"nodeType":"YulBlock","src":"1454:73:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1471:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"1476:6:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1464:6:61"},"nodeType":"YulFunctionCall","src":"1464:19:61"},"nodeType":"YulExpressionStatement","src":"1464:19:61"},{"nodeType":"YulAssignment","src":"1492:29:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1511:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"1516:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1507:3:61"},"nodeType":"YulFunctionCall","src":"1507:14:61"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"1492:11:61"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1426:3:61","type":""},{"name":"length","nodeType":"YulTypedName","src":"1431:6:61","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"1442:11:61","type":""}],"src":"1358:169:61"},{"body":{"nodeType":"YulBlock","src":"1639:59:61","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1661:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"1669:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1657:3:61"},"nodeType":"YulFunctionCall","src":"1657:14:61"},{"hexValue":"4d41494e5441494e45525f524f4c45","kind":"string","nodeType":"YulLiteral","src":"1673:17:61","type":"","value":"MAINTAINER_ROLE"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1650:6:61"},"nodeType":"YulFunctionCall","src":"1650:41:61"},"nodeType":"YulExpressionStatement","src":"1650:41:61"}]},"name":"store_literal_in_memory_339759585899103d2ace64958e37e18ccb0504652c81d4a1b8aa80fe2126ab95","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"1631:6:61","type":""}],"src":"1533:165:61"},{"body":{"nodeType":"YulBlock","src":"1850:220:61","statements":[{"nodeType":"YulAssignment","src":"1860:74:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1926:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"1931:2:61","type":"","value":"15"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"1867:58:61"},"nodeType":"YulFunctionCall","src":"1867:67:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"1860:3:61"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2032:3:61"}],"functionName":{"name":"store_literal_in_memory_339759585899103d2ace64958e37e18ccb0504652c81d4a1b8aa80fe2126ab95","nodeType":"YulIdentifier","src":"1943:88:61"},"nodeType":"YulFunctionCall","src":"1943:93:61"},"nodeType":"YulExpressionStatement","src":"1943:93:61"},{"nodeType":"YulAssignment","src":"2045:19:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2056:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"2061:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2052:3:61"},"nodeType":"YulFunctionCall","src":"2052:12:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2045:3:61"}]}]},"name":"abi_encode_t_stringliteral_339759585899103d2ace64958e37e18ccb0504652c81d4a1b8aa80fe2126ab95_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1838:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1846:3:61","type":""}],"src":"1704:366:61"},{"body":{"nodeType":"YulBlock","src":"2247:248:61","statements":[{"nodeType":"YulAssignment","src":"2257:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2269:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"2280:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2265:3:61"},"nodeType":"YulFunctionCall","src":"2265:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2257:4:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2304:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"2315:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2300:3:61"},"nodeType":"YulFunctionCall","src":"2300:17:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"2323:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"2329:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2319:3:61"},"nodeType":"YulFunctionCall","src":"2319:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2293:6:61"},"nodeType":"YulFunctionCall","src":"2293:47:61"},"nodeType":"YulExpressionStatement","src":"2293:47:61"},{"nodeType":"YulAssignment","src":"2349:139:61","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"2483:4:61"}],"functionName":{"name":"abi_encode_t_stringliteral_339759585899103d2ace64958e37e18ccb0504652c81d4a1b8aa80fe2126ab95_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"2357:124:61"},"nodeType":"YulFunctionCall","src":"2357:131:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2349:4:61"}]}]},"name":"abi_encode_tuple_t_stringliteral_339759585899103d2ace64958e37e18ccb0504652c81d4a1b8aa80fe2126ab95__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2227:9:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2242:4:61","type":""}],"src":"2076:419:61"},{"body":{"nodeType":"YulBlock","src":"2607:58:61","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"2629:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"2637:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2625:3:61"},"nodeType":"YulFunctionCall","src":"2625:14:61"},{"hexValue":"5452454153555245525f524f4c45","kind":"string","nodeType":"YulLiteral","src":"2641:16:61","type":"","value":"TREASURER_ROLE"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2618:6:61"},"nodeType":"YulFunctionCall","src":"2618:40:61"},"nodeType":"YulExpressionStatement","src":"2618:40:61"}]},"name":"store_literal_in_memory_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"2599:6:61","type":""}],"src":"2501:164:61"},{"body":{"nodeType":"YulBlock","src":"2817:220:61","statements":[{"nodeType":"YulAssignment","src":"2827:74:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2893:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"2898:2:61","type":"","value":"14"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"2834:58:61"},"nodeType":"YulFunctionCall","src":"2834:67:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"2827:3:61"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2999:3:61"}],"functionName":{"name":"store_literal_in_memory_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07","nodeType":"YulIdentifier","src":"2910:88:61"},"nodeType":"YulFunctionCall","src":"2910:93:61"},"nodeType":"YulExpressionStatement","src":"2910:93:61"},{"nodeType":"YulAssignment","src":"3012:19:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3023:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"3028:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3019:3:61"},"nodeType":"YulFunctionCall","src":"3019:12:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"3012:3:61"}]}]},"name":"abi_encode_t_stringliteral_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"2805:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2813:3:61","type":""}],"src":"2671:366:61"},{"body":{"nodeType":"YulBlock","src":"3214:248:61","statements":[{"nodeType":"YulAssignment","src":"3224:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3236:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"3247:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3232:3:61"},"nodeType":"YulFunctionCall","src":"3232:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3224:4:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3271:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"3282:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3267:3:61"},"nodeType":"YulFunctionCall","src":"3267:17:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"3290:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"3296:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3286:3:61"},"nodeType":"YulFunctionCall","src":"3286:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3260:6:61"},"nodeType":"YulFunctionCall","src":"3260:47:61"},"nodeType":"YulExpressionStatement","src":"3260:47:61"},{"nodeType":"YulAssignment","src":"3316:139:61","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"3450:4:61"}],"functionName":{"name":"abi_encode_t_stringliteral_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"3324:124:61"},"nodeType":"YulFunctionCall","src":"3324:131:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3316:4:61"}]}]},"name":"abi_encode_tuple_t_stringliteral_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3194:9:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3209:4:61","type":""}],"src":"3043:419:61"},{"body":{"nodeType":"YulBlock","src":"3574:59:61","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3596:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"3604:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3592:3:61"},"nodeType":"YulFunctionCall","src":"3592:14:61"},{"hexValue":"535452415445474953545f524f4c45","kind":"string","nodeType":"YulLiteral","src":"3608:17:61","type":"","value":"STRATEGIST_ROLE"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3585:6:61"},"nodeType":"YulFunctionCall","src":"3585:41:61"},"nodeType":"YulExpressionStatement","src":"3585:41:61"}]},"name":"store_literal_in_memory_17a8e30262c1f919c33056d877a3c22b95c2f5e4dac44683c1c2323cd79fbdb0","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"3566:6:61","type":""}],"src":"3468:165:61"},{"body":{"nodeType":"YulBlock","src":"3785:220:61","statements":[{"nodeType":"YulAssignment","src":"3795:74:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3861:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"3866:2:61","type":"","value":"15"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"3802:58:61"},"nodeType":"YulFunctionCall","src":"3802:67:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3795:3:61"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3967:3:61"}],"functionName":{"name":"store_literal_in_memory_17a8e30262c1f919c33056d877a3c22b95c2f5e4dac44683c1c2323cd79fbdb0","nodeType":"YulIdentifier","src":"3878:88:61"},"nodeType":"YulFunctionCall","src":"3878:93:61"},"nodeType":"YulExpressionStatement","src":"3878:93:61"},{"nodeType":"YulAssignment","src":"3980:19:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3991:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"3996:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3987:3:61"},"nodeType":"YulFunctionCall","src":"3987:12:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"3980:3:61"}]}]},"name":"abi_encode_t_stringliteral_17a8e30262c1f919c33056d877a3c22b95c2f5e4dac44683c1c2323cd79fbdb0_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"3773:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"3781:3:61","type":""}],"src":"3639:366:61"},{"body":{"nodeType":"YulBlock","src":"4182:248:61","statements":[{"nodeType":"YulAssignment","src":"4192:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4204:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"4215:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4200:3:61"},"nodeType":"YulFunctionCall","src":"4200:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4192:4:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4239:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"4250:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4235:3:61"},"nodeType":"YulFunctionCall","src":"4235:17:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4258:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"4264:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4254:3:61"},"nodeType":"YulFunctionCall","src":"4254:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4228:6:61"},"nodeType":"YulFunctionCall","src":"4228:47:61"},"nodeType":"YulExpressionStatement","src":"4228:47:61"},{"nodeType":"YulAssignment","src":"4284:139:61","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4418:4:61"}],"functionName":{"name":"abi_encode_t_stringliteral_17a8e30262c1f919c33056d877a3c22b95c2f5e4dac44683c1c2323cd79fbdb0_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"4292:124:61"},"nodeType":"YulFunctionCall","src":"4292:131:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4284:4:61"}]}]},"name":"abi_encode_tuple_t_stringliteral_17a8e30262c1f919c33056d877a3c22b95c2f5e4dac44683c1c2323cd79fbdb0__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4162:9:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4177:4:61","type":""}],"src":"4011:419:61"},{"body":{"nodeType":"YulBlock","src":"4464:152:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4481:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4484:77:61","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4474:6:61"},"nodeType":"YulFunctionCall","src":"4474:88:61"},"nodeType":"YulExpressionStatement","src":"4474:88:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4578:1:61","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"4581:4:61","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4571:6:61"},"nodeType":"YulFunctionCall","src":"4571:15:61"},"nodeType":"YulExpressionStatement","src":"4571:15:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4602:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4605:4:61","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4595:6:61"},"nodeType":"YulFunctionCall","src":"4595:15:61"},"nodeType":"YulExpressionStatement","src":"4595:15:61"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"4436:180:61"},{"body":{"nodeType":"YulBlock","src":"4650:152:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4667:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4670:77:61","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4660:6:61"},"nodeType":"YulFunctionCall","src":"4660:88:61"},"nodeType":"YulExpressionStatement","src":"4660:88:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4764:1:61","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"4767:4:61","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4757:6:61"},"nodeType":"YulFunctionCall","src":"4757:15:61"},"nodeType":"YulExpressionStatement","src":"4757:15:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4788:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4791:4:61","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4781:6:61"},"nodeType":"YulFunctionCall","src":"4781:15:61"},"nodeType":"YulExpressionStatement","src":"4781:15:61"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"4622:180:61"},{"body":{"nodeType":"YulBlock","src":"4836:152:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4853:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4856:77:61","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4846:6:61"},"nodeType":"YulFunctionCall","src":"4846:88:61"},"nodeType":"YulExpressionStatement","src":"4846:88:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4950:1:61","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"4953:4:61","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4943:6:61"},"nodeType":"YulFunctionCall","src":"4943:15:61"},"nodeType":"YulExpressionStatement","src":"4943:15:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4974:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4977:4:61","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4967:6:61"},"nodeType":"YulFunctionCall","src":"4967:15:61"},"nodeType":"YulExpressionStatement","src":"4967:15:61"}]},"name":"panic_error_0x21","nodeType":"YulFunctionDefinition","src":"4808:180:61"},{"body":{"nodeType":"YulBlock","src":"5100:120:61","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"5122:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"5130:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5118:3:61"},"nodeType":"YulFunctionCall","src":"5118:14:61"},{"hexValue":"4c69624469616d6f6e644375743a20496e636f72726563742046616365744375","kind":"string","nodeType":"YulLiteral","src":"5134:34:61","type":"","value":"LibDiamondCut: Incorrect FacetCu"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5111:6:61"},"nodeType":"YulFunctionCall","src":"5111:58:61"},"nodeType":"YulExpressionStatement","src":"5111:58:61"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"5190:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"5198:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5186:3:61"},"nodeType":"YulFunctionCall","src":"5186:15:61"},{"hexValue":"74416374696f6e","kind":"string","nodeType":"YulLiteral","src":"5203:9:61","type":"","value":"tAction"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5179:6:61"},"nodeType":"YulFunctionCall","src":"5179:34:61"},"nodeType":"YulExpressionStatement","src":"5179:34:61"}]},"name":"store_literal_in_memory_48267d8daf5ea9c6bbad1fe9c53dc4c04a2a01b2b85bad432956cf42f45b2f54","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"5092:6:61","type":""}],"src":"4994:226:61"},{"body":{"nodeType":"YulBlock","src":"5372:220:61","statements":[{"nodeType":"YulAssignment","src":"5382:74:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5448:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"5453:2:61","type":"","value":"39"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"5389:58:61"},"nodeType":"YulFunctionCall","src":"5389:67:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"5382:3:61"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5554:3:61"}],"functionName":{"name":"store_literal_in_memory_48267d8daf5ea9c6bbad1fe9c53dc4c04a2a01b2b85bad432956cf42f45b2f54","nodeType":"YulIdentifier","src":"5465:88:61"},"nodeType":"YulFunctionCall","src":"5465:93:61"},"nodeType":"YulExpressionStatement","src":"5465:93:61"},{"nodeType":"YulAssignment","src":"5567:19:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5578:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"5583:2:61","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5574:3:61"},"nodeType":"YulFunctionCall","src":"5574:12:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"5567:3:61"}]}]},"name":"abi_encode_t_stringliteral_48267d8daf5ea9c6bbad1fe9c53dc4c04a2a01b2b85bad432956cf42f45b2f54_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"5360:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"5368:3:61","type":""}],"src":"5226:366:61"},{"body":{"nodeType":"YulBlock","src":"5769:248:61","statements":[{"nodeType":"YulAssignment","src":"5779:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5791:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"5802:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5787:3:61"},"nodeType":"YulFunctionCall","src":"5787:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5779:4:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5826:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"5837:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5822:3:61"},"nodeType":"YulFunctionCall","src":"5822:17:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"5845:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"5851:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5841:3:61"},"nodeType":"YulFunctionCall","src":"5841:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5815:6:61"},"nodeType":"YulFunctionCall","src":"5815:47:61"},"nodeType":"YulExpressionStatement","src":"5815:47:61"},{"nodeType":"YulAssignment","src":"5871:139:61","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"6005:4:61"}],"functionName":{"name":"abi_encode_t_stringliteral_48267d8daf5ea9c6bbad1fe9c53dc4c04a2a01b2b85bad432956cf42f45b2f54_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"5879:124:61"},"nodeType":"YulFunctionCall","src":"5879:131:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5871:4:61"}]}]},"name":"abi_encode_tuple_t_stringliteral_48267d8daf5ea9c6bbad1fe9c53dc4c04a2a01b2b85bad432956cf42f45b2f54__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5749:9:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5764:4:61","type":""}],"src":"5598:419:61"},{"body":{"nodeType":"YulBlock","src":"6051:152:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6068:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6071:77:61","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6061:6:61"},"nodeType":"YulFunctionCall","src":"6061:88:61"},"nodeType":"YulExpressionStatement","src":"6061:88:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6165:1:61","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"6168:4:61","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6158:6:61"},"nodeType":"YulFunctionCall","src":"6158:15:61"},"nodeType":"YulExpressionStatement","src":"6158:15:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6189:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6192:4:61","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6182:6:61"},"nodeType":"YulFunctionCall","src":"6182:15:61"},"nodeType":"YulExpressionStatement","src":"6182:15:61"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"6023:180:61"},{"body":{"nodeType":"YulBlock","src":"6254:32:61","statements":[{"nodeType":"YulAssignment","src":"6264:16:61","value":{"name":"value","nodeType":"YulIdentifier","src":"6275:5:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"6264:7:61"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6236:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"6246:7:61","type":""}],"src":"6209:77:61"},{"body":{"nodeType":"YulBlock","src":"6335:190:61","statements":[{"nodeType":"YulAssignment","src":"6345:33:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6372:5:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"6354:17:61"},"nodeType":"YulFunctionCall","src":"6354:24:61"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"6345:5:61"}]},{"body":{"nodeType":"YulBlock","src":"6468:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"6470:16:61"},"nodeType":"YulFunctionCall","src":"6470:18:61"},"nodeType":"YulExpressionStatement","src":"6470:18:61"}]},"condition":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6393:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"6400:66:61","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"6390:2:61"},"nodeType":"YulFunctionCall","src":"6390:77:61"},"nodeType":"YulIf","src":"6387:103:61"},{"nodeType":"YulAssignment","src":"6499:20:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6510:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"6517:1:61","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6506:3:61"},"nodeType":"YulFunctionCall","src":"6506:13:61"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"6499:3:61"}]}]},"name":"increment_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6321:5:61","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"6331:3:61","type":""}],"src":"6292:233:61"},{"body":{"nodeType":"YulBlock","src":"6632:40:61","statements":[{"nodeType":"YulAssignment","src":"6643:22:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6659:5:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6653:5:61"},"nodeType":"YulFunctionCall","src":"6653:12:61"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"6643:6:61"}]}]},"name":"array_length_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6615:5:61","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"6625:6:61","type":""}],"src":"6531:141:61"},{"body":{"nodeType":"YulBlock","src":"6816:73:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6833:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"6838:6:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6826:6:61"},"nodeType":"YulFunctionCall","src":"6826:19:61"},"nodeType":"YulExpressionStatement","src":"6826:19:61"},{"nodeType":"YulAssignment","src":"6854:29:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6873:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"6878:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6869:3:61"},"nodeType":"YulFunctionCall","src":"6869:14:61"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"6854:11:61"}]}]},"name":"array_storeLengthForEncoding_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"6788:3:61","type":""},{"name":"length","nodeType":"YulTypedName","src":"6793:6:61","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"6804:11:61","type":""}],"src":"6678:211:61"},{"body":{"nodeType":"YulBlock","src":"6994:60:61","statements":[{"nodeType":"YulAssignment","src":"7004:11:61","value":{"name":"ptr","nodeType":"YulIdentifier","src":"7012:3:61"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"7004:4:61"}]},{"nodeType":"YulAssignment","src":"7025:22:61","value":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"7037:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"7042:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7033:3:61"},"nodeType":"YulFunctionCall","src":"7033:14:61"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"7025:4:61"}]}]},"name":"array_dataslot_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"6981:3:61","type":""}],"returnVariables":[{"name":"data","nodeType":"YulTypedName","src":"6989:4:61","type":""}],"src":"6895:159:61"},{"body":{"nodeType":"YulBlock","src":"7115:53:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"7132:3:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7155:5:61"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"7137:17:61"},"nodeType":"YulFunctionCall","src":"7137:24:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7125:6:61"},"nodeType":"YulFunctionCall","src":"7125:37:61"},"nodeType":"YulExpressionStatement","src":"7125:37:61"}]},"name":"abi_encode_t_address_to_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7103:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"7110:3:61","type":""}],"src":"7060:108:61"},{"body":{"nodeType":"YulBlock","src":"7237:62:61","statements":[{"body":{"nodeType":"YulBlock","src":"7271:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x21","nodeType":"YulIdentifier","src":"7273:16:61"},"nodeType":"YulFunctionCall","src":"7273:18:61"},"nodeType":"YulExpressionStatement","src":"7273:18:61"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7260:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"7267:1:61","type":"","value":"3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"7257:2:61"},"nodeType":"YulFunctionCall","src":"7257:12:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7250:6:61"},"nodeType":"YulFunctionCall","src":"7250:20:61"},"nodeType":"YulIf","src":"7247:46:61"}]},"name":"validator_assert_t_enum$_FacetCutAction_$11808","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7230:5:61","type":""}],"src":"7174:125:61"},{"body":{"nodeType":"YulBlock","src":"7370:86:61","statements":[{"nodeType":"YulAssignment","src":"7380:16:61","value":{"name":"value","nodeType":"YulIdentifier","src":"7391:5:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"7380:7:61"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7444:5:61"}],"functionName":{"name":"validator_assert_t_enum$_FacetCutAction_$11808","nodeType":"YulIdentifier","src":"7397:46:61"},"nodeType":"YulFunctionCall","src":"7397:53:61"},"nodeType":"YulExpressionStatement","src":"7397:53:61"}]},"name":"cleanup_t_enum$_FacetCutAction_$11808","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7352:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"7362:7:61","type":""}],"src":"7305:151:61"},{"body":{"nodeType":"YulBlock","src":"7540:73:61","statements":[{"nodeType":"YulAssignment","src":"7550:57:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7601:5:61"}],"functionName":{"name":"cleanup_t_enum$_FacetCutAction_$11808","nodeType":"YulIdentifier","src":"7563:37:61"},"nodeType":"YulFunctionCall","src":"7563:44:61"},"variableNames":[{"name":"converted","nodeType":"YulIdentifier","src":"7550:9:61"}]}]},"name":"convert_t_enum$_FacetCutAction_$11808_to_t_uint8","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7520:5:61","type":""}],"returnVariables":[{"name":"converted","nodeType":"YulTypedName","src":"7530:9:61","type":""}],"src":"7462:151:61"},{"body":{"nodeType":"YulBlock","src":"7692:84:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"7709:3:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7763:5:61"}],"functionName":{"name":"convert_t_enum$_FacetCutAction_$11808_to_t_uint8","nodeType":"YulIdentifier","src":"7714:48:61"},"nodeType":"YulFunctionCall","src":"7714:55:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7702:6:61"},"nodeType":"YulFunctionCall","src":"7702:68:61"},"nodeType":"YulExpressionStatement","src":"7702:68:61"}]},"name":"abi_encode_t_enum$_FacetCutAction_$11808_to_t_uint8","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7680:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"7687:3:61","type":""}],"src":"7619:157:61"},{"body":{"nodeType":"YulBlock","src":"7855:40:61","statements":[{"nodeType":"YulAssignment","src":"7866:22:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7882:5:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7876:5:61"},"nodeType":"YulFunctionCall","src":"7876:12:61"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"7866:6:61"}]}]},"name":"array_length_t_array$_t_bytes4_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7838:5:61","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"7848:6:61","type":""}],"src":"7782:113:61"},{"body":{"nodeType":"YulBlock","src":"8001:73:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8018:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"8023:6:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8011:6:61"},"nodeType":"YulFunctionCall","src":"8011:19:61"},"nodeType":"YulExpressionStatement","src":"8011:19:61"},{"nodeType":"YulAssignment","src":"8039:29:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8058:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"8063:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8054:3:61"},"nodeType":"YulFunctionCall","src":"8054:14:61"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"8039:11:61"}]}]},"name":"array_storeLengthForEncoding_t_array$_t_bytes4_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"7973:3:61","type":""},{"name":"length","nodeType":"YulTypedName","src":"7978:6:61","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"7989:11:61","type":""}],"src":"7901:173:61"},{"body":{"nodeType":"YulBlock","src":"8151:60:61","statements":[{"nodeType":"YulAssignment","src":"8161:11:61","value":{"name":"ptr","nodeType":"YulIdentifier","src":"8169:3:61"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"8161:4:61"}]},{"nodeType":"YulAssignment","src":"8182:22:61","value":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"8194:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"8199:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8190:3:61"},"nodeType":"YulFunctionCall","src":"8190:14:61"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"8182:4:61"}]}]},"name":"array_dataslot_t_array$_t_bytes4_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"8138:3:61","type":""}],"returnVariables":[{"name":"data","nodeType":"YulTypedName","src":"8146:4:61","type":""}],"src":"8080:131:61"},{"body":{"nodeType":"YulBlock","src":"8261:105:61","statements":[{"nodeType":"YulAssignment","src":"8271:89:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8286:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"8293:66:61","type":"","value":"0xffffffff00000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8282:3:61"},"nodeType":"YulFunctionCall","src":"8282:78:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"8271:7:61"}]}]},"name":"cleanup_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8243:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"8253:7:61","type":""}],"src":"8217:149:61"},{"body":{"nodeType":"YulBlock","src":"8425:52:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8442:3:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8464:5:61"}],"functionName":{"name":"cleanup_t_bytes4","nodeType":"YulIdentifier","src":"8447:16:61"},"nodeType":"YulFunctionCall","src":"8447:23:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8435:6:61"},"nodeType":"YulFunctionCall","src":"8435:36:61"},"nodeType":"YulExpressionStatement","src":"8435:36:61"}]},"name":"abi_encode_t_bytes4_to_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8413:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"8420:3:61","type":""}],"src":"8372:105:61"},{"body":{"nodeType":"YulBlock","src":"8561:97:61","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8603:6:61"},{"name":"pos","nodeType":"YulIdentifier","src":"8611:3:61"}],"functionName":{"name":"abi_encode_t_bytes4_to_t_bytes4","nodeType":"YulIdentifier","src":"8571:31:61"},"nodeType":"YulFunctionCall","src":"8571:44:61"},"nodeType":"YulExpressionStatement","src":"8571:44:61"},{"nodeType":"YulAssignment","src":"8624:28:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8642:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"8647:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8638:3:61"},"nodeType":"YulFunctionCall","src":"8638:14:61"},"variableNames":[{"name":"updatedPos","nodeType":"YulIdentifier","src":"8624:10:61"}]}]},"name":"abi_encodeUpdatedPos_t_bytes4_to_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"value0","nodeType":"YulTypedName","src":"8534:6:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"8542:3:61","type":""}],"returnVariables":[{"name":"updatedPos","nodeType":"YulTypedName","src":"8550:10:61","type":""}],"src":"8483:175:61"},{"body":{"nodeType":"YulBlock","src":"8738:38:61","statements":[{"nodeType":"YulAssignment","src":"8748:22:61","value":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"8760:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"8765:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8756:3:61"},"nodeType":"YulFunctionCall","src":"8756:14:61"},"variableNames":[{"name":"next","nodeType":"YulIdentifier","src":"8748:4:61"}]}]},"name":"array_nextElement_t_array$_t_bytes4_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"8725:3:61","type":""}],"returnVariables":[{"name":"next","nodeType":"YulTypedName","src":"8733:4:61","type":""}],"src":"8664:112:61"},{"body":{"nodeType":"YulBlock","src":"8922:592:61","statements":[{"nodeType":"YulVariableDeclaration","src":"8932:67:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8993:5:61"}],"functionName":{"name":"array_length_t_array$_t_bytes4_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"8946:46:61"},"nodeType":"YulFunctionCall","src":"8946:53:61"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"8936:6:61","type":""}]},{"nodeType":"YulAssignment","src":"9008:82:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9078:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"9083:6:61"}],"functionName":{"name":"array_storeLengthForEncoding_t_array$_t_bytes4_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"9015:62:61"},"nodeType":"YulFunctionCall","src":"9015:75:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"9008:3:61"}]},{"nodeType":"YulVariableDeclaration","src":"9099:70:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9163:5:61"}],"functionName":{"name":"array_dataslot_t_array$_t_bytes4_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"9114:48:61"},"nodeType":"YulFunctionCall","src":"9114:55:61"},"variables":[{"name":"baseRef","nodeType":"YulTypedName","src":"9103:7:61","type":""}]},{"nodeType":"YulVariableDeclaration","src":"9178:21:61","value":{"name":"baseRef","nodeType":"YulIdentifier","src":"9192:7:61"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"9182:6:61","type":""}]},{"body":{"nodeType":"YulBlock","src":"9268:221:61","statements":[{"nodeType":"YulVariableDeclaration","src":"9282:34:61","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"9309:6:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9303:5:61"},"nodeType":"YulFunctionCall","src":"9303:13:61"},"variables":[{"name":"elementValue0","nodeType":"YulTypedName","src":"9286:13:61","type":""}]},{"nodeType":"YulAssignment","src":"9329:68:61","value":{"arguments":[{"name":"elementValue0","nodeType":"YulIdentifier","src":"9378:13:61"},{"name":"pos","nodeType":"YulIdentifier","src":"9393:3:61"}],"functionName":{"name":"abi_encodeUpdatedPos_t_bytes4_to_t_bytes4","nodeType":"YulIdentifier","src":"9336:41:61"},"nodeType":"YulFunctionCall","src":"9336:61:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"9329:3:61"}]},{"nodeType":"YulAssignment","src":"9410:69:61","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"9472:6:61"}],"functionName":{"name":"array_nextElement_t_array$_t_bytes4_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"9420:51:61"},"nodeType":"YulFunctionCall","src":"9420:59:61"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"9410:6:61"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"9230:1:61"},{"name":"length","nodeType":"YulIdentifier","src":"9233:6:61"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"9227:2:61"},"nodeType":"YulFunctionCall","src":"9227:13:61"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"9241:18:61","statements":[{"nodeType":"YulAssignment","src":"9243:14:61","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"9252:1:61"},{"kind":"number","nodeType":"YulLiteral","src":"9255:1:61","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9248:3:61"},"nodeType":"YulFunctionCall","src":"9248:9:61"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"9243:1:61"}]}]},"pre":{"nodeType":"YulBlock","src":"9212:14:61","statements":[{"nodeType":"YulVariableDeclaration","src":"9214:10:61","value":{"kind":"number","nodeType":"YulLiteral","src":"9223:1:61","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"9218:1:61","type":""}]}]},"src":"9208:281:61"},{"nodeType":"YulAssignment","src":"9498:10:61","value":{"name":"pos","nodeType":"YulIdentifier","src":"9505:3:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"9498:3:61"}]}]},"name":"abi_encode_t_array$_t_bytes4_$dyn_memory_ptr_to_t_array$_t_bytes4_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8901:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"8908:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"8917:3:61","type":""}],"src":"8810:704:61"},{"body":{"nodeType":"YulBlock","src":"9690:725:61","statements":[{"nodeType":"YulVariableDeclaration","src":"9700:26:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9716:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"9721:4:61","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9712:3:61"},"nodeType":"YulFunctionCall","src":"9712:14:61"},"variables":[{"name":"tail","nodeType":"YulTypedName","src":"9704:4:61","type":""}]},{"nodeType":"YulBlock","src":"9736:172:61","statements":[{"nodeType":"YulVariableDeclaration","src":"9779:43:61","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9809:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"9816:4:61","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9805:3:61"},"nodeType":"YulFunctionCall","src":"9805:16:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9799:5:61"},"nodeType":"YulFunctionCall","src":"9799:23:61"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"9783:12:61","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"9869:12:61"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9887:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"9892:4:61","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9883:3:61"},"nodeType":"YulFunctionCall","src":"9883:14:61"}],"functionName":{"name":"abi_encode_t_address_to_t_address","nodeType":"YulIdentifier","src":"9835:33:61"},"nodeType":"YulFunctionCall","src":"9835:63:61"},"nodeType":"YulExpressionStatement","src":"9835:63:61"}]},{"nodeType":"YulBlock","src":"9918:184:61","statements":[{"nodeType":"YulVariableDeclaration","src":"9955:43:61","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9985:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"9992:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9981:3:61"},"nodeType":"YulFunctionCall","src":"9981:16:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9975:5:61"},"nodeType":"YulFunctionCall","src":"9975:23:61"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"9959:12:61","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"10063:12:61"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10081:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"10086:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10077:3:61"},"nodeType":"YulFunctionCall","src":"10077:14:61"}],"functionName":{"name":"abi_encode_t_enum$_FacetCutAction_$11808_to_t_uint8","nodeType":"YulIdentifier","src":"10011:51:61"},"nodeType":"YulFunctionCall","src":"10011:81:61"},"nodeType":"YulExpressionStatement","src":"10011:81:61"}]},{"nodeType":"YulBlock","src":"10112:276:61","statements":[{"nodeType":"YulVariableDeclaration","src":"10160:43:61","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10190:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"10197:4:61","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10186:3:61"},"nodeType":"YulFunctionCall","src":"10186:16:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10180:5:61"},"nodeType":"YulFunctionCall","src":"10180:23:61"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"10164:12:61","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10228:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"10233:4:61","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10224:3:61"},"nodeType":"YulFunctionCall","src":"10224:14:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"10244:4:61"},{"name":"pos","nodeType":"YulIdentifier","src":"10250:3:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10240:3:61"},"nodeType":"YulFunctionCall","src":"10240:14:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10217:6:61"},"nodeType":"YulFunctionCall","src":"10217:38:61"},"nodeType":"YulExpressionStatement","src":"10217:38:61"},{"nodeType":"YulAssignment","src":"10268:109:61","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"10358:12:61"},{"name":"tail","nodeType":"YulIdentifier","src":"10372:4:61"}],"functionName":{"name":"abi_encode_t_array$_t_bytes4_$dyn_memory_ptr_to_t_array$_t_bytes4_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"10276:81:61"},"nodeType":"YulFunctionCall","src":"10276:101:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10268:4:61"}]}]},{"nodeType":"YulAssignment","src":"10398:11:61","value":{"name":"tail","nodeType":"YulIdentifier","src":"10405:4:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"10398:3:61"}]}]},"name":"abi_encode_t_struct$_FacetCut_$11817_memory_ptr_to_t_struct$_FacetCut_$11817_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"9669:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"9676:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"9685:3:61","type":""}],"src":"9572:843:61"},{"body":{"nodeType":"YulBlock","src":"10555:130:61","statements":[{"nodeType":"YulAssignment","src":"10565:114:61","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10667:6:61"},{"name":"pos","nodeType":"YulIdentifier","src":"10675:3:61"}],"functionName":{"name":"abi_encode_t_struct$_FacetCut_$11817_memory_ptr_to_t_struct$_FacetCut_$11817_memory_ptr","nodeType":"YulIdentifier","src":"10579:87:61"},"nodeType":"YulFunctionCall","src":"10579:100:61"},"variableNames":[{"name":"updatedPos","nodeType":"YulIdentifier","src":"10565:10:61"}]}]},"name":"abi_encodeUpdatedPos_t_struct$_FacetCut_$11817_memory_ptr_to_t_struct$_FacetCut_$11817_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value0","nodeType":"YulTypedName","src":"10528:6:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"10536:3:61","type":""}],"returnVariables":[{"name":"updatedPos","nodeType":"YulTypedName","src":"10544:10:61","type":""}],"src":"10421:264:61"},{"body":{"nodeType":"YulBlock","src":"10793:38:61","statements":[{"nodeType":"YulAssignment","src":"10803:22:61","value":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"10815:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"10820:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10811:3:61"},"nodeType":"YulFunctionCall","src":"10811:14:61"},"variableNames":[{"name":"next","nodeType":"YulIdentifier","src":"10803:4:61"}]}]},"name":"array_nextElement_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"10780:3:61","type":""}],"returnVariables":[{"name":"next","nodeType":"YulTypedName","src":"10788:4:61","type":""}],"src":"10691:140:61"},{"body":{"nodeType":"YulBlock","src":"11071:949:61","statements":[{"nodeType":"YulVariableDeclaration","src":"11081:95:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11170:5:61"}],"functionName":{"name":"array_length_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"11095:74:61"},"nodeType":"YulFunctionCall","src":"11095:81:61"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"11085:6:61","type":""}]},{"nodeType":"YulAssignment","src":"11185:120:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"11293:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"11298:6:61"}],"functionName":{"name":"array_storeLengthForEncoding_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"11192:100:61"},"nodeType":"YulFunctionCall","src":"11192:113:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"11185:3:61"}]},{"nodeType":"YulVariableDeclaration","src":"11314:20:61","value":{"name":"pos","nodeType":"YulIdentifier","src":"11331:3:61"},"variables":[{"name":"headStart","nodeType":"YulTypedName","src":"11318:9:61","type":""}]},{"nodeType":"YulVariableDeclaration","src":"11343:39:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"11359:3:61"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"11368:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"11376:4:61","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"11364:3:61"},"nodeType":"YulFunctionCall","src":"11364:17:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11355:3:61"},"nodeType":"YulFunctionCall","src":"11355:27:61"},"variables":[{"name":"tail","nodeType":"YulTypedName","src":"11347:4:61","type":""}]},{"nodeType":"YulVariableDeclaration","src":"11391:98:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11483:5:61"}],"functionName":{"name":"array_dataslot_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"11406:76:61"},"nodeType":"YulFunctionCall","src":"11406:83:61"},"variables":[{"name":"baseRef","nodeType":"YulTypedName","src":"11395:7:61","type":""}]},{"nodeType":"YulVariableDeclaration","src":"11498:21:61","value":{"name":"baseRef","nodeType":"YulIdentifier","src":"11512:7:61"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"11502:6:61","type":""}]},{"body":{"nodeType":"YulBlock","src":"11588:387:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"11609:3:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"11618:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"11624:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"11614:3:61"},"nodeType":"YulFunctionCall","src":"11614:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11602:6:61"},"nodeType":"YulFunctionCall","src":"11602:33:61"},"nodeType":"YulExpressionStatement","src":"11602:33:61"},{"nodeType":"YulVariableDeclaration","src":"11648:34:61","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"11675:6:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"11669:5:61"},"nodeType":"YulFunctionCall","src":"11669:13:61"},"variables":[{"name":"elementValue0","nodeType":"YulTypedName","src":"11652:13:61","type":""}]},{"nodeType":"YulAssignment","src":"11695:126:61","value":{"arguments":[{"name":"elementValue0","nodeType":"YulIdentifier","src":"11801:13:61"},{"name":"tail","nodeType":"YulIdentifier","src":"11816:4:61"}],"functionName":{"name":"abi_encodeUpdatedPos_t_struct$_FacetCut_$11817_memory_ptr_to_t_struct$_FacetCut_$11817_memory_ptr","nodeType":"YulIdentifier","src":"11703:97:61"},"nodeType":"YulFunctionCall","src":"11703:118:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11695:4:61"}]},{"nodeType":"YulAssignment","src":"11834:97:61","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"11924:6:61"}],"functionName":{"name":"array_nextElement_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"11844:79:61"},"nodeType":"YulFunctionCall","src":"11844:87:61"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"11834:6:61"}]},{"nodeType":"YulAssignment","src":"11944:21:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"11955:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"11960:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11951:3:61"},"nodeType":"YulFunctionCall","src":"11951:14:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"11944:3:61"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"11550:1:61"},{"name":"length","nodeType":"YulIdentifier","src":"11553:6:61"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"11547:2:61"},"nodeType":"YulFunctionCall","src":"11547:13:61"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"11561:18:61","statements":[{"nodeType":"YulAssignment","src":"11563:14:61","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"11572:1:61"},{"kind":"number","nodeType":"YulLiteral","src":"11575:1:61","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11568:3:61"},"nodeType":"YulFunctionCall","src":"11568:9:61"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"11563:1:61"}]}]},"pre":{"nodeType":"YulBlock","src":"11532:14:61","statements":[{"nodeType":"YulVariableDeclaration","src":"11534:10:61","value":{"kind":"number","nodeType":"YulLiteral","src":"11543:1:61","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"11538:1:61","type":""}]}]},"src":"11528:447:61"},{"nodeType":"YulAssignment","src":"11984:11:61","value":{"name":"tail","nodeType":"YulIdentifier","src":"11991:4:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"11984:3:61"}]},{"nodeType":"YulAssignment","src":"12004:10:61","value":{"name":"pos","nodeType":"YulIdentifier","src":"12011:3:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"12004:3:61"}]}]},"name":"abi_encode_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"11050:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"11057:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"11066:3:61","type":""}],"src":"10893:1127:61"},{"body":{"nodeType":"YulBlock","src":"12091:53:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12108:3:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"12131:5:61"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"12113:17:61"},"nodeType":"YulFunctionCall","src":"12113:24:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12101:6:61"},"nodeType":"YulFunctionCall","src":"12101:37:61"},"nodeType":"YulExpressionStatement","src":"12101:37:61"}]},"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"12079:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"12086:3:61","type":""}],"src":"12026:118:61"},{"body":{"nodeType":"YulBlock","src":"12208:40:61","statements":[{"nodeType":"YulAssignment","src":"12219:22:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"12235:5:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"12229:5:61"},"nodeType":"YulFunctionCall","src":"12229:12:61"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"12219:6:61"}]}]},"name":"array_length_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"12191:5:61","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"12201:6:61","type":""}],"src":"12150:98:61"},{"body":{"nodeType":"YulBlock","src":"12349:73:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12366:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"12371:6:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12359:6:61"},"nodeType":"YulFunctionCall","src":"12359:19:61"},"nodeType":"YulExpressionStatement","src":"12359:19:61"},{"nodeType":"YulAssignment","src":"12387:29:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12406:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"12411:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12402:3:61"},"nodeType":"YulFunctionCall","src":"12402:14:61"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"12387:11:61"}]}]},"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"12321:3:61","type":""},{"name":"length","nodeType":"YulTypedName","src":"12326:6:61","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"12337:11:61","type":""}],"src":"12254:168:61"},{"body":{"nodeType":"YulBlock","src":"12490:184:61","statements":[{"nodeType":"YulVariableDeclaration","src":"12500:10:61","value":{"kind":"number","nodeType":"YulLiteral","src":"12509:1:61","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"12504:1:61","type":""}]},{"body":{"nodeType":"YulBlock","src":"12569:63:61","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"12594:3:61"},{"name":"i","nodeType":"YulIdentifier","src":"12599:1:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12590:3:61"},"nodeType":"YulFunctionCall","src":"12590:11:61"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"12613:3:61"},{"name":"i","nodeType":"YulIdentifier","src":"12618:1:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12609:3:61"},"nodeType":"YulFunctionCall","src":"12609:11:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"12603:5:61"},"nodeType":"YulFunctionCall","src":"12603:18:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12583:6:61"},"nodeType":"YulFunctionCall","src":"12583:39:61"},"nodeType":"YulExpressionStatement","src":"12583:39:61"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"12530:1:61"},{"name":"length","nodeType":"YulIdentifier","src":"12533:6:61"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"12527:2:61"},"nodeType":"YulFunctionCall","src":"12527:13:61"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"12541:19:61","statements":[{"nodeType":"YulAssignment","src":"12543:15:61","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"12552:1:61"},{"kind":"number","nodeType":"YulLiteral","src":"12555:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12548:3:61"},"nodeType":"YulFunctionCall","src":"12548:10:61"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"12543:1:61"}]}]},"pre":{"nodeType":"YulBlock","src":"12523:3:61","statements":[]},"src":"12519:113:61"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"12652:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"12657:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12648:3:61"},"nodeType":"YulFunctionCall","src":"12648:16:61"},{"kind":"number","nodeType":"YulLiteral","src":"12666:1:61","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12641:6:61"},"nodeType":"YulFunctionCall","src":"12641:27:61"},"nodeType":"YulExpressionStatement","src":"12641:27:61"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"12472:3:61","type":""},{"name":"dst","nodeType":"YulTypedName","src":"12477:3:61","type":""},{"name":"length","nodeType":"YulTypedName","src":"12482:6:61","type":""}],"src":"12428:246:61"},{"body":{"nodeType":"YulBlock","src":"12728:54:61","statements":[{"nodeType":"YulAssignment","src":"12738:38:61","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"12756:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"12763:2:61","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12752:3:61"},"nodeType":"YulFunctionCall","src":"12752:14:61"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12772:2:61","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"12768:3:61"},"nodeType":"YulFunctionCall","src":"12768:7:61"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"12748:3:61"},"nodeType":"YulFunctionCall","src":"12748:28:61"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"12738:6:61"}]}]},"name":"round_up_to_mul_of_32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"12711:5:61","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"12721:6:61","type":""}],"src":"12680:102:61"},{"body":{"nodeType":"YulBlock","src":"12878:283:61","statements":[{"nodeType":"YulVariableDeclaration","src":"12888:52:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"12934:5:61"}],"functionName":{"name":"array_length_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"12902:31:61"},"nodeType":"YulFunctionCall","src":"12902:38:61"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"12892:6:61","type":""}]},{"nodeType":"YulAssignment","src":"12949:77:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13014:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"13019:6:61"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"12956:57:61"},"nodeType":"YulFunctionCall","src":"12956:70:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"12949:3:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"13074:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"13081:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13070:3:61"},"nodeType":"YulFunctionCall","src":"13070:16:61"},{"name":"pos","nodeType":"YulIdentifier","src":"13088:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"13093:6:61"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"13035:34:61"},"nodeType":"YulFunctionCall","src":"13035:65:61"},"nodeType":"YulExpressionStatement","src":"13035:65:61"},{"nodeType":"YulAssignment","src":"13109:46:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13120:3:61"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"13147:6:61"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"13125:21:61"},"nodeType":"YulFunctionCall","src":"13125:29:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13116:3:61"},"nodeType":"YulFunctionCall","src":"13116:39:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"13109:3:61"}]}]},"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"12859:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"12866:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"12874:3:61","type":""}],"src":"12788:373:61"},{"body":{"nodeType":"YulBlock","src":"13443:512:61","statements":[{"nodeType":"YulAssignment","src":"13453:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13465:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"13476:2:61","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13461:3:61"},"nodeType":"YulFunctionCall","src":"13461:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13453:4:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13500:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"13511:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13496:3:61"},"nodeType":"YulFunctionCall","src":"13496:17:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"13519:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"13525:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"13515:3:61"},"nodeType":"YulFunctionCall","src":"13515:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13489:6:61"},"nodeType":"YulFunctionCall","src":"13489:47:61"},"nodeType":"YulExpressionStatement","src":"13489:47:61"},{"nodeType":"YulAssignment","src":"13545:170:61","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"13701:6:61"},{"name":"tail","nodeType":"YulIdentifier","src":"13710:4:61"}],"functionName":{"name":"abi_encode_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"13553:147:61"},"nodeType":"YulFunctionCall","src":"13553:162:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13545:4:61"}]},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"13769:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13782:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"13793:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13778:3:61"},"nodeType":"YulFunctionCall","src":"13778:18:61"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"13725:43:61"},"nodeType":"YulFunctionCall","src":"13725:72:61"},"nodeType":"YulExpressionStatement","src":"13725:72:61"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13818:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"13829:2:61","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13814:3:61"},"nodeType":"YulFunctionCall","src":"13814:18:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"13838:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"13844:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"13834:3:61"},"nodeType":"YulFunctionCall","src":"13834:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13807:6:61"},"nodeType":"YulFunctionCall","src":"13807:48:61"},"nodeType":"YulExpressionStatement","src":"13807:48:61"},{"nodeType":"YulAssignment","src":"13864:84:61","value":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"13934:6:61"},{"name":"tail","nodeType":"YulIdentifier","src":"13943:4:61"}],"functionName":{"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"13872:61:61"},"nodeType":"YulFunctionCall","src":"13872:76:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13864:4:61"}]}]},"name":"abi_encode_tuple_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_t_address_t_bytes_memory_ptr__to_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_t_address_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13399:9:61","type":""},{"name":"value2","nodeType":"YulTypedName","src":"13411:6:61","type":""},{"name":"value1","nodeType":"YulTypedName","src":"13419:6:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"13427:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"13438:4:61","type":""}],"src":"13167:788:61"},{"body":{"nodeType":"YulBlock","src":"14067:124:61","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"14089:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"14097:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14085:3:61"},"nodeType":"YulFunctionCall","src":"14085:14:61"},{"hexValue":"4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e2066","kind":"string","nodeType":"YulLiteral","src":"14101:34:61","type":"","value":"LibDiamondCut: No selectors in f"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14078:6:61"},"nodeType":"YulFunctionCall","src":"14078:58:61"},"nodeType":"YulExpressionStatement","src":"14078:58:61"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"14157:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"14165:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14153:3:61"},"nodeType":"YulFunctionCall","src":"14153:15:61"},{"hexValue":"6163657420746f20637574","kind":"string","nodeType":"YulLiteral","src":"14170:13:61","type":"","value":"acet to cut"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14146:6:61"},"nodeType":"YulFunctionCall","src":"14146:38:61"},"nodeType":"YulExpressionStatement","src":"14146:38:61"}]},"name":"store_literal_in_memory_1ffc682bcfedefd5e93ba9ed0c2d1bc0b18319886e3b4bd28a03a3d3729f85c0","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"14059:6:61","type":""}],"src":"13961:230:61"},{"body":{"nodeType":"YulBlock","src":"14343:220:61","statements":[{"nodeType":"YulAssignment","src":"14353:74:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14419:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"14424:2:61","type":"","value":"43"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"14360:58:61"},"nodeType":"YulFunctionCall","src":"14360:67:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"14353:3:61"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14525:3:61"}],"functionName":{"name":"store_literal_in_memory_1ffc682bcfedefd5e93ba9ed0c2d1bc0b18319886e3b4bd28a03a3d3729f85c0","nodeType":"YulIdentifier","src":"14436:88:61"},"nodeType":"YulFunctionCall","src":"14436:93:61"},"nodeType":"YulExpressionStatement","src":"14436:93:61"},{"nodeType":"YulAssignment","src":"14538:19:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14549:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"14554:2:61","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14545:3:61"},"nodeType":"YulFunctionCall","src":"14545:12:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"14538:3:61"}]}]},"name":"abi_encode_t_stringliteral_1ffc682bcfedefd5e93ba9ed0c2d1bc0b18319886e3b4bd28a03a3d3729f85c0_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"14331:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"14339:3:61","type":""}],"src":"14197:366:61"},{"body":{"nodeType":"YulBlock","src":"14740:248:61","statements":[{"nodeType":"YulAssignment","src":"14750:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14762:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"14773:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14758:3:61"},"nodeType":"YulFunctionCall","src":"14758:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"14750:4:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14797:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"14808:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14793:3:61"},"nodeType":"YulFunctionCall","src":"14793:17:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"14816:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"14822:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"14812:3:61"},"nodeType":"YulFunctionCall","src":"14812:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14786:6:61"},"nodeType":"YulFunctionCall","src":"14786:47:61"},"nodeType":"YulExpressionStatement","src":"14786:47:61"},{"nodeType":"YulAssignment","src":"14842:139:61","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"14976:4:61"}],"functionName":{"name":"abi_encode_t_stringliteral_1ffc682bcfedefd5e93ba9ed0c2d1bc0b18319886e3b4bd28a03a3d3729f85c0_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"14850:124:61"},"nodeType":"YulFunctionCall","src":"14850:131:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"14842:4:61"}]}]},"name":"abi_encode_tuple_t_stringliteral_1ffc682bcfedefd5e93ba9ed0c2d1bc0b18319886e3b4bd28a03a3d3729f85c0__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"14720:9:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"14735:4:61","type":""}],"src":"14569:419:61"},{"body":{"nodeType":"YulBlock","src":"15100:125:61","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"15122:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"15130:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15118:3:61"},"nodeType":"YulFunctionCall","src":"15118:14:61"},{"hexValue":"4c69624469616d6f6e644375743a204164642066616365742063616e27742062","kind":"string","nodeType":"YulLiteral","src":"15134:34:61","type":"","value":"LibDiamondCut: Add facet can't b"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15111:6:61"},"nodeType":"YulFunctionCall","src":"15111:58:61"},"nodeType":"YulExpressionStatement","src":"15111:58:61"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"15190:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"15198:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15186:3:61"},"nodeType":"YulFunctionCall","src":"15186:15:61"},{"hexValue":"652061646472657373283029","kind":"string","nodeType":"YulLiteral","src":"15203:14:61","type":"","value":"e address(0)"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15179:6:61"},"nodeType":"YulFunctionCall","src":"15179:39:61"},"nodeType":"YulExpressionStatement","src":"15179:39:61"}]},"name":"store_literal_in_memory_64609d8b93c93a06b98d7db7a87b04044cd4a52c5661d603bb9b90ad8b914a3a","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"15092:6:61","type":""}],"src":"14994:231:61"},{"body":{"nodeType":"YulBlock","src":"15377:220:61","statements":[{"nodeType":"YulAssignment","src":"15387:74:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"15453:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"15458:2:61","type":"","value":"44"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"15394:58:61"},"nodeType":"YulFunctionCall","src":"15394:67:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"15387:3:61"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"15559:3:61"}],"functionName":{"name":"store_literal_in_memory_64609d8b93c93a06b98d7db7a87b04044cd4a52c5661d603bb9b90ad8b914a3a","nodeType":"YulIdentifier","src":"15470:88:61"},"nodeType":"YulFunctionCall","src":"15470:93:61"},"nodeType":"YulExpressionStatement","src":"15470:93:61"},{"nodeType":"YulAssignment","src":"15572:19:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"15583:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"15588:2:61","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15579:3:61"},"nodeType":"YulFunctionCall","src":"15579:12:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"15572:3:61"}]}]},"name":"abi_encode_t_stringliteral_64609d8b93c93a06b98d7db7a87b04044cd4a52c5661d603bb9b90ad8b914a3a_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"15365:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"15373:3:61","type":""}],"src":"15231:366:61"},{"body":{"nodeType":"YulBlock","src":"15774:248:61","statements":[{"nodeType":"YulAssignment","src":"15784:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15796:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"15807:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15792:3:61"},"nodeType":"YulFunctionCall","src":"15792:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"15784:4:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15831:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"15842:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15827:3:61"},"nodeType":"YulFunctionCall","src":"15827:17:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"15850:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"15856:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"15846:3:61"},"nodeType":"YulFunctionCall","src":"15846:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15820:6:61"},"nodeType":"YulFunctionCall","src":"15820:47:61"},"nodeType":"YulExpressionStatement","src":"15820:47:61"},{"nodeType":"YulAssignment","src":"15876:139:61","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"16010:4:61"}],"functionName":{"name":"abi_encode_t_stringliteral_64609d8b93c93a06b98d7db7a87b04044cd4a52c5661d603bb9b90ad8b914a3a_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"15884:124:61"},"nodeType":"YulFunctionCall","src":"15884:131:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"15876:4:61"}]}]},"name":"abi_encode_tuple_t_stringliteral_64609d8b93c93a06b98d7db7a87b04044cd4a52c5661d603bb9b90ad8b914a3a__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"15754:9:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"15769:4:61","type":""}],"src":"15603:419:61"},{"body":{"nodeType":"YulBlock","src":"16134:134:61","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"16156:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"16164:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16152:3:61"},"nodeType":"YulFunctionCall","src":"16152:14:61"},{"hexValue":"4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f","kind":"string","nodeType":"YulLiteral","src":"16168:34:61","type":"","value":"LibDiamondCut: Can't add functio"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16145:6:61"},"nodeType":"YulFunctionCall","src":"16145:58:61"},"nodeType":"YulExpressionStatement","src":"16145:58:61"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"16224:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"16232:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16220:3:61"},"nodeType":"YulFunctionCall","src":"16220:15:61"},{"hexValue":"6e207468617420616c726561647920657869737473","kind":"string","nodeType":"YulLiteral","src":"16237:23:61","type":"","value":"n that already exists"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16213:6:61"},"nodeType":"YulFunctionCall","src":"16213:48:61"},"nodeType":"YulExpressionStatement","src":"16213:48:61"}]},"name":"store_literal_in_memory_99a7418ee014d613f46da44561258cdbb58064508097483a319062b99fa37700","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"16126:6:61","type":""}],"src":"16028:240:61"},{"body":{"nodeType":"YulBlock","src":"16420:220:61","statements":[{"nodeType":"YulAssignment","src":"16430:74:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16496:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"16501:2:61","type":"","value":"53"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"16437:58:61"},"nodeType":"YulFunctionCall","src":"16437:67:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"16430:3:61"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16602:3:61"}],"functionName":{"name":"store_literal_in_memory_99a7418ee014d613f46da44561258cdbb58064508097483a319062b99fa37700","nodeType":"YulIdentifier","src":"16513:88:61"},"nodeType":"YulFunctionCall","src":"16513:93:61"},"nodeType":"YulExpressionStatement","src":"16513:93:61"},{"nodeType":"YulAssignment","src":"16615:19:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16626:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"16631:2:61","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16622:3:61"},"nodeType":"YulFunctionCall","src":"16622:12:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"16615:3:61"}]}]},"name":"abi_encode_t_stringliteral_99a7418ee014d613f46da44561258cdbb58064508097483a319062b99fa37700_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"16408:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"16416:3:61","type":""}],"src":"16274:366:61"},{"body":{"nodeType":"YulBlock","src":"16817:248:61","statements":[{"nodeType":"YulAssignment","src":"16827:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16839:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"16850:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16835:3:61"},"nodeType":"YulFunctionCall","src":"16835:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"16827:4:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16874:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"16885:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16870:3:61"},"nodeType":"YulFunctionCall","src":"16870:17:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"16893:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"16899:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"16889:3:61"},"nodeType":"YulFunctionCall","src":"16889:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16863:6:61"},"nodeType":"YulFunctionCall","src":"16863:47:61"},"nodeType":"YulExpressionStatement","src":"16863:47:61"},{"nodeType":"YulAssignment","src":"16919:139:61","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"17053:4:61"}],"functionName":{"name":"abi_encode_t_stringliteral_99a7418ee014d613f46da44561258cdbb58064508097483a319062b99fa37700_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"16927:124:61"},"nodeType":"YulFunctionCall","src":"16927:131:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"16919:4:61"}]}]},"name":"abi_encode_tuple_t_stringliteral_99a7418ee014d613f46da44561258cdbb58064508097483a319062b99fa37700__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"16797:9:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"16812:4:61","type":""}],"src":"16646:419:61"},{"body":{"nodeType":"YulBlock","src":"17115:65:61","statements":[{"nodeType":"YulAssignment","src":"17125:49:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"17140:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"17147:26:61","type":"","value":"0xffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"17136:3:61"},"nodeType":"YulFunctionCall","src":"17136:38:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"17125:7:61"}]}]},"name":"cleanup_t_uint96","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"17097:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"17107:7:61","type":""}],"src":"17071:109:61"},{"body":{"nodeType":"YulBlock","src":"17228:149:61","statements":[{"nodeType":"YulAssignment","src":"17238:32:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"17264:5:61"}],"functionName":{"name":"cleanup_t_uint96","nodeType":"YulIdentifier","src":"17247:16:61"},"nodeType":"YulFunctionCall","src":"17247:23:61"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"17238:5:61"}]},{"body":{"nodeType":"YulBlock","src":"17320:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"17322:16:61"},"nodeType":"YulFunctionCall","src":"17322:18:61"},"nodeType":"YulExpressionStatement","src":"17322:18:61"}]},"condition":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"17285:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"17292:26:61","type":"","value":"0xffffffffffffffffffffffff"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"17282:2:61"},"nodeType":"YulFunctionCall","src":"17282:37:61"},"nodeType":"YulIf","src":"17279:63:61"},{"nodeType":"YulAssignment","src":"17351:20:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"17362:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"17369:1:61","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17358:3:61"},"nodeType":"YulFunctionCall","src":"17358:13:61"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"17351:3:61"}]}]},"name":"increment_t_uint96","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"17214:5:61","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"17224:3:61","type":""}],"src":"17186:191:61"},{"body":{"nodeType":"YulBlock","src":"17489:137:61","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"17511:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"17519:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17507:3:61"},"nodeType":"YulFunctionCall","src":"17507:14:61"},{"hexValue":"4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e","kind":"string","nodeType":"YulLiteral","src":"17523:34:61","type":"","value":"LibDiamondCut: Can't replace fun"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17500:6:61"},"nodeType":"YulFunctionCall","src":"17500:58:61"},"nodeType":"YulExpressionStatement","src":"17500:58:61"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"17579:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"17587:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17575:3:61"},"nodeType":"YulFunctionCall","src":"17575:15:61"},{"hexValue":"6374696f6e20776974682073616d652066756e6374696f6e","kind":"string","nodeType":"YulLiteral","src":"17592:26:61","type":"","value":"ction with same function"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17568:6:61"},"nodeType":"YulFunctionCall","src":"17568:51:61"},"nodeType":"YulExpressionStatement","src":"17568:51:61"}]},"name":"store_literal_in_memory_b5a7112edf707196456f338fdcc19cd849be6cb8c0d166bcd035f4cfb00e7078","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"17481:6:61","type":""}],"src":"17383:243:61"},{"body":{"nodeType":"YulBlock","src":"17778:220:61","statements":[{"nodeType":"YulAssignment","src":"17788:74:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17854:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"17859:2:61","type":"","value":"56"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"17795:58:61"},"nodeType":"YulFunctionCall","src":"17795:67:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"17788:3:61"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17960:3:61"}],"functionName":{"name":"store_literal_in_memory_b5a7112edf707196456f338fdcc19cd849be6cb8c0d166bcd035f4cfb00e7078","nodeType":"YulIdentifier","src":"17871:88:61"},"nodeType":"YulFunctionCall","src":"17871:93:61"},"nodeType":"YulExpressionStatement","src":"17871:93:61"},{"nodeType":"YulAssignment","src":"17973:19:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17984:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"17989:2:61","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17980:3:61"},"nodeType":"YulFunctionCall","src":"17980:12:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"17973:3:61"}]}]},"name":"abi_encode_t_stringliteral_b5a7112edf707196456f338fdcc19cd849be6cb8c0d166bcd035f4cfb00e7078_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"17766:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"17774:3:61","type":""}],"src":"17632:366:61"},{"body":{"nodeType":"YulBlock","src":"18175:248:61","statements":[{"nodeType":"YulAssignment","src":"18185:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18197:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"18208:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18193:3:61"},"nodeType":"YulFunctionCall","src":"18193:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"18185:4:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18232:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"18243:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18228:3:61"},"nodeType":"YulFunctionCall","src":"18228:17:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"18251:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"18257:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"18247:3:61"},"nodeType":"YulFunctionCall","src":"18247:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18221:6:61"},"nodeType":"YulFunctionCall","src":"18221:47:61"},"nodeType":"YulExpressionStatement","src":"18221:47:61"},{"nodeType":"YulAssignment","src":"18277:139:61","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"18411:4:61"}],"functionName":{"name":"abi_encode_t_stringliteral_b5a7112edf707196456f338fdcc19cd849be6cb8c0d166bcd035f4cfb00e7078_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"18285:124:61"},"nodeType":"YulFunctionCall","src":"18285:131:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"18277:4:61"}]}]},"name":"abi_encode_tuple_t_stringliteral_b5a7112edf707196456f338fdcc19cd849be6cb8c0d166bcd035f4cfb00e7078__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"18155:9:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"18170:4:61","type":""}],"src":"18004:419:61"},{"body":{"nodeType":"YulBlock","src":"18535:135:61","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"18557:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"18565:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18553:3:61"},"nodeType":"YulFunctionCall","src":"18553:14:61"},{"hexValue":"4c69624469616d6f6e644375743a2052656d6f76652066616365742061646472","kind":"string","nodeType":"YulLiteral","src":"18569:34:61","type":"","value":"LibDiamondCut: Remove facet addr"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18546:6:61"},"nodeType":"YulFunctionCall","src":"18546:58:61"},"nodeType":"YulExpressionStatement","src":"18546:58:61"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"18625:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"18633:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18621:3:61"},"nodeType":"YulFunctionCall","src":"18621:15:61"},{"hexValue":"657373206d7573742062652061646472657373283029","kind":"string","nodeType":"YulLiteral","src":"18638:24:61","type":"","value":"ess must be address(0)"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18614:6:61"},"nodeType":"YulFunctionCall","src":"18614:49:61"},"nodeType":"YulExpressionStatement","src":"18614:49:61"}]},"name":"store_literal_in_memory_b739aae768f79b96e91d9f66398733516895e39eb09ee54a795b49dcc77504d4","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"18527:6:61","type":""}],"src":"18429:241:61"},{"body":{"nodeType":"YulBlock","src":"18822:220:61","statements":[{"nodeType":"YulAssignment","src":"18832:74:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18898:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"18903:2:61","type":"","value":"54"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"18839:58:61"},"nodeType":"YulFunctionCall","src":"18839:67:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"18832:3:61"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"19004:3:61"}],"functionName":{"name":"store_literal_in_memory_b739aae768f79b96e91d9f66398733516895e39eb09ee54a795b49dcc77504d4","nodeType":"YulIdentifier","src":"18915:88:61"},"nodeType":"YulFunctionCall","src":"18915:93:61"},"nodeType":"YulExpressionStatement","src":"18915:93:61"},{"nodeType":"YulAssignment","src":"19017:19:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"19028:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"19033:2:61","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19024:3:61"},"nodeType":"YulFunctionCall","src":"19024:12:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"19017:3:61"}]}]},"name":"abi_encode_t_stringliteral_b739aae768f79b96e91d9f66398733516895e39eb09ee54a795b49dcc77504d4_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"18810:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"18818:3:61","type":""}],"src":"18676:366:61"},{"body":{"nodeType":"YulBlock","src":"19219:248:61","statements":[{"nodeType":"YulAssignment","src":"19229:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19241:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"19252:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19237:3:61"},"nodeType":"YulFunctionCall","src":"19237:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"19229:4:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19276:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"19287:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19272:3:61"},"nodeType":"YulFunctionCall","src":"19272:17:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"19295:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"19301:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"19291:3:61"},"nodeType":"YulFunctionCall","src":"19291:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19265:6:61"},"nodeType":"YulFunctionCall","src":"19265:47:61"},"nodeType":"YulExpressionStatement","src":"19265:47:61"},{"nodeType":"YulAssignment","src":"19321:139:61","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"19455:4:61"}],"functionName":{"name":"abi_encode_t_stringliteral_b739aae768f79b96e91d9f66398733516895e39eb09ee54a795b49dcc77504d4_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"19329:124:61"},"nodeType":"YulFunctionCall","src":"19329:131:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"19321:4:61"}]}]},"name":"abi_encode_tuple_t_stringliteral_b739aae768f79b96e91d9f66398733516895e39eb09ee54a795b49dcc77504d4__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"19199:9:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"19214:4:61","type":""}],"src":"19048:419:61"},{"body":{"nodeType":"YulBlock","src":"19586:34:61","statements":[{"nodeType":"YulAssignment","src":"19596:18:61","value":{"name":"pos","nodeType":"YulIdentifier","src":"19611:3:61"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"19596:11:61"}]}]},"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"19558:3:61","type":""},{"name":"length","nodeType":"YulTypedName","src":"19563:6:61","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"19574:11:61","type":""}],"src":"19473:147:61"},{"body":{"nodeType":"YulBlock","src":"19734:278:61","statements":[{"nodeType":"YulVariableDeclaration","src":"19744:52:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"19790:5:61"}],"functionName":{"name":"array_length_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"19758:31:61"},"nodeType":"YulFunctionCall","src":"19758:38:61"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"19748:6:61","type":""}]},{"nodeType":"YulAssignment","src":"19805:95:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"19888:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"19893:6:61"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"19812:75:61"},"nodeType":"YulFunctionCall","src":"19812:88:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"19805:3:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"19948:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"19955:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19944:3:61"},"nodeType":"YulFunctionCall","src":"19944:16:61"},{"name":"pos","nodeType":"YulIdentifier","src":"19962:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"19967:6:61"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"19909:34:61"},"nodeType":"YulFunctionCall","src":"19909:65:61"},"nodeType":"YulExpressionStatement","src":"19909:65:61"},{"nodeType":"YulAssignment","src":"19983:23:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"19994:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"19999:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19990:3:61"},"nodeType":"YulFunctionCall","src":"19990:16:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"19983:3:61"}]}]},"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"19715:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"19722:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"19730:3:61","type":""}],"src":"19626:386:61"},{"body":{"nodeType":"YulBlock","src":"20152:137:61","statements":[{"nodeType":"YulAssignment","src":"20163:100:61","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"20250:6:61"},{"name":"pos","nodeType":"YulIdentifier","src":"20259:3:61"}],"functionName":{"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"20170:79:61"},"nodeType":"YulFunctionCall","src":"20170:93:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"20163:3:61"}]},{"nodeType":"YulAssignment","src":"20273:10:61","value":{"name":"pos","nodeType":"YulIdentifier","src":"20280:3:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"20273:3:61"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"20131:3:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"20137:6:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"20148:3:61","type":""}],"src":"20018:271:61"},{"body":{"nodeType":"YulBlock","src":"20439:275:61","statements":[{"nodeType":"YulAssignment","src":"20449:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20461:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"20472:2:61","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20457:3:61"},"nodeType":"YulFunctionCall","src":"20457:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"20449:4:61"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"20529:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20542:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"20553:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20538:3:61"},"nodeType":"YulFunctionCall","src":"20538:17:61"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"20485:43:61"},"nodeType":"YulFunctionCall","src":"20485:71:61"},"nodeType":"YulExpressionStatement","src":"20485:71:61"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20577:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"20588:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20573:3:61"},"nodeType":"YulFunctionCall","src":"20573:18:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"20597:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"20603:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"20593:3:61"},"nodeType":"YulFunctionCall","src":"20593:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20566:6:61"},"nodeType":"YulFunctionCall","src":"20566:48:61"},"nodeType":"YulExpressionStatement","src":"20566:48:61"},{"nodeType":"YulAssignment","src":"20623:84:61","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"20693:6:61"},{"name":"tail","nodeType":"YulIdentifier","src":"20702:4:61"}],"functionName":{"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"20631:61:61"},"nodeType":"YulFunctionCall","src":"20631:76:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"20623:4:61"}]}]},"name":"abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"20403:9:61","type":""},{"name":"value1","nodeType":"YulTypedName","src":"20415:6:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"20423:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"20434:4:61","type":""}],"src":"20295:419:61"},{"body":{"nodeType":"YulBlock","src":"20826:136:61","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"20848:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"20856:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20844:3:61"},"nodeType":"YulFunctionCall","src":"20844:14:61"},{"hexValue":"4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e63","kind":"string","nodeType":"YulLiteral","src":"20860:34:61","type":"","value":"LibDiamondCut: Can't remove func"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20837:6:61"},"nodeType":"YulFunctionCall","src":"20837:58:61"},"nodeType":"YulExpressionStatement","src":"20837:58:61"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"20916:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"20924:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20912:3:61"},"nodeType":"YulFunctionCall","src":"20912:15:61"},{"hexValue":"74696f6e207468617420646f65736e2774206578697374","kind":"string","nodeType":"YulLiteral","src":"20929:25:61","type":"","value":"tion that doesn't exist"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20905:6:61"},"nodeType":"YulFunctionCall","src":"20905:50:61"},"nodeType":"YulExpressionStatement","src":"20905:50:61"}]},"name":"store_literal_in_memory_2c590e498c4d56c984a7092fd5e89a68b9f4541ce9f97252fb74e44a00ffbb71","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"20818:6:61","type":""}],"src":"20720:242:61"},{"body":{"nodeType":"YulBlock","src":"21114:220:61","statements":[{"nodeType":"YulAssignment","src":"21124:74:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"21190:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"21195:2:61","type":"","value":"55"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"21131:58:61"},"nodeType":"YulFunctionCall","src":"21131:67:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"21124:3:61"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"21296:3:61"}],"functionName":{"name":"store_literal_in_memory_2c590e498c4d56c984a7092fd5e89a68b9f4541ce9f97252fb74e44a00ffbb71","nodeType":"YulIdentifier","src":"21207:88:61"},"nodeType":"YulFunctionCall","src":"21207:93:61"},"nodeType":"YulExpressionStatement","src":"21207:93:61"},{"nodeType":"YulAssignment","src":"21309:19:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"21320:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"21325:2:61","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21316:3:61"},"nodeType":"YulFunctionCall","src":"21316:12:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"21309:3:61"}]}]},"name":"abi_encode_t_stringliteral_2c590e498c4d56c984a7092fd5e89a68b9f4541ce9f97252fb74e44a00ffbb71_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"21102:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"21110:3:61","type":""}],"src":"20968:366:61"},{"body":{"nodeType":"YulBlock","src":"21511:248:61","statements":[{"nodeType":"YulAssignment","src":"21521:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21533:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"21544:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21529:3:61"},"nodeType":"YulFunctionCall","src":"21529:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"21521:4:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21568:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"21579:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21564:3:61"},"nodeType":"YulFunctionCall","src":"21564:17:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"21587:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"21593:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"21583:3:61"},"nodeType":"YulFunctionCall","src":"21583:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21557:6:61"},"nodeType":"YulFunctionCall","src":"21557:47:61"},"nodeType":"YulExpressionStatement","src":"21557:47:61"},{"nodeType":"YulAssignment","src":"21613:139:61","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"21747:4:61"}],"functionName":{"name":"abi_encode_t_stringliteral_2c590e498c4d56c984a7092fd5e89a68b9f4541ce9f97252fb74e44a00ffbb71_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"21621:124:61"},"nodeType":"YulFunctionCall","src":"21621:131:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"21613:4:61"}]}]},"name":"abi_encode_tuple_t_stringliteral_2c590e498c4d56c984a7092fd5e89a68b9f4541ce9f97252fb74e44a00ffbb71__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"21491:9:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"21506:4:61","type":""}],"src":"21340:419:61"},{"body":{"nodeType":"YulBlock","src":"21871:127:61","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"21893:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"21901:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21889:3:61"},"nodeType":"YulFunctionCall","src":"21889:14:61"},{"hexValue":"4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d75","kind":"string","nodeType":"YulLiteral","src":"21905:34:61","type":"","value":"LibDiamondCut: Can't remove immu"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21882:6:61"},"nodeType":"YulFunctionCall","src":"21882:58:61"},"nodeType":"YulExpressionStatement","src":"21882:58:61"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"21961:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"21969:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21957:3:61"},"nodeType":"YulFunctionCall","src":"21957:15:61"},{"hexValue":"7461626c652066756e6374696f6e","kind":"string","nodeType":"YulLiteral","src":"21974:16:61","type":"","value":"table function"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21950:6:61"},"nodeType":"YulFunctionCall","src":"21950:41:61"},"nodeType":"YulExpressionStatement","src":"21950:41:61"}]},"name":"store_literal_in_memory_8ba063dfaa4be2d2cbe73dbb1364728b0f7031ac048441d5fad19e9541992b21","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"21863:6:61","type":""}],"src":"21765:233:61"},{"body":{"nodeType":"YulBlock","src":"22150:220:61","statements":[{"nodeType":"YulAssignment","src":"22160:74:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"22226:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"22231:2:61","type":"","value":"46"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"22167:58:61"},"nodeType":"YulFunctionCall","src":"22167:67:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"22160:3:61"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"22332:3:61"}],"functionName":{"name":"store_literal_in_memory_8ba063dfaa4be2d2cbe73dbb1364728b0f7031ac048441d5fad19e9541992b21","nodeType":"YulIdentifier","src":"22243:88:61"},"nodeType":"YulFunctionCall","src":"22243:93:61"},"nodeType":"YulExpressionStatement","src":"22243:93:61"},{"nodeType":"YulAssignment","src":"22345:19:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"22356:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"22361:2:61","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22352:3:61"},"nodeType":"YulFunctionCall","src":"22352:12:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"22345:3:61"}]}]},"name":"abi_encode_t_stringliteral_8ba063dfaa4be2d2cbe73dbb1364728b0f7031ac048441d5fad19e9541992b21_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"22138:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"22146:3:61","type":""}],"src":"22004:366:61"},{"body":{"nodeType":"YulBlock","src":"22547:248:61","statements":[{"nodeType":"YulAssignment","src":"22557:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22569:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"22580:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22565:3:61"},"nodeType":"YulFunctionCall","src":"22565:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"22557:4:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22604:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"22615:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22600:3:61"},"nodeType":"YulFunctionCall","src":"22600:17:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"22623:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"22629:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"22619:3:61"},"nodeType":"YulFunctionCall","src":"22619:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22593:6:61"},"nodeType":"YulFunctionCall","src":"22593:47:61"},"nodeType":"YulExpressionStatement","src":"22593:47:61"},{"nodeType":"YulAssignment","src":"22649:139:61","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"22783:4:61"}],"functionName":{"name":"abi_encode_t_stringliteral_8ba063dfaa4be2d2cbe73dbb1364728b0f7031ac048441d5fad19e9541992b21_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"22657:124:61"},"nodeType":"YulFunctionCall","src":"22657:131:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"22649:4:61"}]}]},"name":"abi_encode_tuple_t_stringliteral_8ba063dfaa4be2d2cbe73dbb1364728b0f7031ac048441d5fad19e9541992b21__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"22527:9:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"22542:4:61","type":""}],"src":"22376:419:61"},{"body":{"nodeType":"YulBlock","src":"22846:149:61","statements":[{"nodeType":"YulAssignment","src":"22856:25:61","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"22879:1:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"22861:17:61"},"nodeType":"YulFunctionCall","src":"22861:20:61"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"22856:1:61"}]},{"nodeType":"YulAssignment","src":"22890:25:61","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"22913:1:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"22895:17:61"},"nodeType":"YulFunctionCall","src":"22895:20:61"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"22890:1:61"}]},{"nodeType":"YulAssignment","src":"22924:17:61","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"22936:1:61"},{"name":"y","nodeType":"YulIdentifier","src":"22939:1:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"22932:3:61"},"nodeType":"YulFunctionCall","src":"22932:9:61"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"22924:4:61"}]},{"body":{"nodeType":"YulBlock","src":"22966:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"22968:16:61"},"nodeType":"YulFunctionCall","src":"22968:18:61"},"nodeType":"YulExpressionStatement","src":"22968:18:61"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"22957:4:61"},{"name":"x","nodeType":"YulIdentifier","src":"22963:1:61"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"22954:2:61"},"nodeType":"YulFunctionCall","src":"22954:11:61"},"nodeType":"YulIf","src":"22951:37:61"}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"22832:1:61","type":""},{"name":"y","nodeType":"YulTypedName","src":"22835:1:61","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"22841:4:61","type":""}],"src":"22801:194:61"},{"body":{"nodeType":"YulBlock","src":"23029:152:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"23046:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"23049:77:61","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"23039:6:61"},"nodeType":"YulFunctionCall","src":"23039:88:61"},"nodeType":"YulExpressionStatement","src":"23039:88:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"23143:1:61","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"23146:4:61","type":"","value":"0x31"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"23136:6:61"},"nodeType":"YulFunctionCall","src":"23136:15:61"},"nodeType":"YulExpressionStatement","src":"23136:15:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"23167:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"23170:4:61","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"23160:6:61"},"nodeType":"YulFunctionCall","src":"23160:15:61"},"nodeType":"YulExpressionStatement","src":"23160:15:61"}]},"name":"panic_error_0x31","nodeType":"YulFunctionDefinition","src":"23001:180:61"},{"body":{"nodeType":"YulBlock","src":"23246:40:61","statements":[{"nodeType":"YulAssignment","src":"23257:22:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"23273:5:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"23267:5:61"},"nodeType":"YulFunctionCall","src":"23267:12:61"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"23257:6:61"}]}]},"name":"array_length_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"23229:5:61","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"23239:6:61","type":""}],"src":"23187:99:61"},{"body":{"nodeType":"YulBlock","src":"23384:285:61","statements":[{"nodeType":"YulVariableDeclaration","src":"23394:53:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"23441:5:61"}],"functionName":{"name":"array_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"23408:32:61"},"nodeType":"YulFunctionCall","src":"23408:39:61"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"23398:6:61","type":""}]},{"nodeType":"YulAssignment","src":"23456:78:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"23522:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"23527:6:61"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"23463:58:61"},"nodeType":"YulFunctionCall","src":"23463:71:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"23456:3:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"23582:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"23589:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23578:3:61"},"nodeType":"YulFunctionCall","src":"23578:16:61"},{"name":"pos","nodeType":"YulIdentifier","src":"23596:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"23601:6:61"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"23543:34:61"},"nodeType":"YulFunctionCall","src":"23543:65:61"},"nodeType":"YulExpressionStatement","src":"23543:65:61"},{"nodeType":"YulAssignment","src":"23617:46:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"23628:3:61"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"23655:6:61"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"23633:21:61"},"nodeType":"YulFunctionCall","src":"23633:29:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23624:3:61"},"nodeType":"YulFunctionCall","src":"23624:39:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"23617:3:61"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"23365:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"23372:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"23380:3:61","type":""}],"src":"23292:377:61"},{"body":{"nodeType":"YulBlock","src":"23793:195:61","statements":[{"nodeType":"YulAssignment","src":"23803:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23815:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"23826:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23811:3:61"},"nodeType":"YulFunctionCall","src":"23811:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"23803:4:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23850:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"23861:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23846:3:61"},"nodeType":"YulFunctionCall","src":"23846:17:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"23869:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"23875:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"23865:3:61"},"nodeType":"YulFunctionCall","src":"23865:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"23839:6:61"},"nodeType":"YulFunctionCall","src":"23839:47:61"},"nodeType":"YulExpressionStatement","src":"23839:47:61"},{"nodeType":"YulAssignment","src":"23895:86:61","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"23967:6:61"},{"name":"tail","nodeType":"YulIdentifier","src":"23976:4:61"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"23903:63:61"},"nodeType":"YulFunctionCall","src":"23903:78:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"23895:4:61"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"23765:9:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"23777:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"23788:4:61","type":""}],"src":"23675:313:61"}]},"contents":"{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_addresst_address_fromMemory(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function store_literal_in_memory_339759585899103d2ace64958e37e18ccb0504652c81d4a1b8aa80fe2126ab95(memPtr) {\n\n mstore(add(memPtr, 0), \"MAINTAINER_ROLE\")\n\n }\n\n function abi_encode_t_stringliteral_339759585899103d2ace64958e37e18ccb0504652c81d4a1b8aa80fe2126ab95_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 15)\n store_literal_in_memory_339759585899103d2ace64958e37e18ccb0504652c81d4a1b8aa80fe2126ab95(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_339759585899103d2ace64958e37e18ccb0504652c81d4a1b8aa80fe2126ab95__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_339759585899103d2ace64958e37e18ccb0504652c81d4a1b8aa80fe2126ab95_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07(memPtr) {\n\n mstore(add(memPtr, 0), \"TREASURER_ROLE\")\n\n }\n\n function abi_encode_t_stringliteral_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 14)\n store_literal_in_memory_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_17a8e30262c1f919c33056d877a3c22b95c2f5e4dac44683c1c2323cd79fbdb0(memPtr) {\n\n mstore(add(memPtr, 0), \"STRATEGIST_ROLE\")\n\n }\n\n function abi_encode_t_stringliteral_17a8e30262c1f919c33056d877a3c22b95c2f5e4dac44683c1c2323cd79fbdb0_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 15)\n store_literal_in_memory_17a8e30262c1f919c33056d877a3c22b95c2f5e4dac44683c1c2323cd79fbdb0(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_17a8e30262c1f919c33056d877a3c22b95c2f5e4dac44683c1c2323cd79fbdb0__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_17a8e30262c1f919c33056d877a3c22b95c2f5e4dac44683c1c2323cd79fbdb0_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function panic_error_0x32() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n\n function panic_error_0x21() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n\n function store_literal_in_memory_48267d8daf5ea9c6bbad1fe9c53dc4c04a2a01b2b85bad432956cf42f45b2f54(memPtr) {\n\n mstore(add(memPtr, 0), \"LibDiamondCut: Incorrect FacetCu\")\n\n mstore(add(memPtr, 32), \"tAction\")\n\n }\n\n function abi_encode_t_stringliteral_48267d8daf5ea9c6bbad1fe9c53dc4c04a2a01b2b85bad432956cf42f45b2f54_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 39)\n store_literal_in_memory_48267d8daf5ea9c6bbad1fe9c53dc4c04a2a01b2b85bad432956cf42f45b2f54(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_48267d8daf5ea9c6bbad1fe9c53dc4c04a2a01b2b85bad432956cf42f45b2f54__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_48267d8daf5ea9c6bbad1fe9c53dc4c04a2a01b2b85bad432956cf42f45b2f54_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function increment_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n ret := add(value, 1)\n }\n\n function array_length_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function array_dataslot_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr(ptr) -> data {\n data := ptr\n\n data := add(ptr, 0x20)\n\n }\n\n function abi_encode_t_address_to_t_address(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function validator_assert_t_enum$_FacetCutAction_$11808(value) {\n if iszero(lt(value, 3)) { panic_error_0x21() }\n }\n\n function cleanup_t_enum$_FacetCutAction_$11808(value) -> cleaned {\n cleaned := value validator_assert_t_enum$_FacetCutAction_$11808(value)\n }\n\n function convert_t_enum$_FacetCutAction_$11808_to_t_uint8(value) -> converted {\n converted := cleanup_t_enum$_FacetCutAction_$11808(value)\n }\n\n function abi_encode_t_enum$_FacetCutAction_$11808_to_t_uint8(value, pos) {\n mstore(pos, convert_t_enum$_FacetCutAction_$11808_to_t_uint8(value))\n }\n\n function array_length_t_array$_t_bytes4_$dyn_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_array$_t_bytes4_$dyn_memory_ptr(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function array_dataslot_t_array$_t_bytes4_$dyn_memory_ptr(ptr) -> data {\n data := ptr\n\n data := add(ptr, 0x20)\n\n }\n\n function cleanup_t_bytes4(value) -> cleaned {\n cleaned := and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000)\n }\n\n function abi_encode_t_bytes4_to_t_bytes4(value, pos) {\n mstore(pos, cleanup_t_bytes4(value))\n }\n\n function abi_encodeUpdatedPos_t_bytes4_to_t_bytes4(value0, pos) -> updatedPos {\n abi_encode_t_bytes4_to_t_bytes4(value0, pos)\n updatedPos := add(pos, 0x20)\n }\n\n function array_nextElement_t_array$_t_bytes4_$dyn_memory_ptr(ptr) -> next {\n next := add(ptr, 0x20)\n }\n\n // bytes4[] -> bytes4[]\n function abi_encode_t_array$_t_bytes4_$dyn_memory_ptr_to_t_array$_t_bytes4_$dyn_memory_ptr(value, pos) -> end {\n let length := array_length_t_array$_t_bytes4_$dyn_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_array$_t_bytes4_$dyn_memory_ptr(pos, length)\n let baseRef := array_dataslot_t_array$_t_bytes4_$dyn_memory_ptr(value)\n let srcPtr := baseRef\n for { let i := 0 } lt(i, length) { i := add(i, 1) }\n {\n let elementValue0 := mload(srcPtr)\n pos := abi_encodeUpdatedPos_t_bytes4_to_t_bytes4(elementValue0, pos)\n srcPtr := array_nextElement_t_array$_t_bytes4_$dyn_memory_ptr(srcPtr)\n }\n end := pos\n }\n\n // struct ICut.FacetCut -> struct ICut.FacetCut\n function abi_encode_t_struct$_FacetCut_$11817_memory_ptr_to_t_struct$_FacetCut_$11817_memory_ptr(value, pos) -> end {\n let tail := add(pos, 0x60)\n\n {\n // facetAddress\n\n let memberValue0 := mload(add(value, 0x00))\n abi_encode_t_address_to_t_address(memberValue0, add(pos, 0x00))\n }\n\n {\n // action\n\n let memberValue0 := mload(add(value, 0x20))\n abi_encode_t_enum$_FacetCutAction_$11808_to_t_uint8(memberValue0, add(pos, 0x20))\n }\n\n {\n // functionSelectors\n\n let memberValue0 := mload(add(value, 0x40))\n\n mstore(add(pos, 0x40), sub(tail, pos))\n tail := abi_encode_t_array$_t_bytes4_$dyn_memory_ptr_to_t_array$_t_bytes4_$dyn_memory_ptr(memberValue0, tail)\n\n }\n\n end := tail\n }\n\n function abi_encodeUpdatedPos_t_struct$_FacetCut_$11817_memory_ptr_to_t_struct$_FacetCut_$11817_memory_ptr(value0, pos) -> updatedPos {\n updatedPos := abi_encode_t_struct$_FacetCut_$11817_memory_ptr_to_t_struct$_FacetCut_$11817_memory_ptr(value0, pos)\n }\n\n function array_nextElement_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr(ptr) -> next {\n next := add(ptr, 0x20)\n }\n\n // struct ICut.FacetCut[] -> struct ICut.FacetCut[]\n function abi_encode_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_fromStack(pos, length)\n let headStart := pos\n let tail := add(pos, mul(length, 0x20))\n let baseRef := array_dataslot_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr(value)\n let srcPtr := baseRef\n for { let i := 0 } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, sub(tail, headStart))\n let elementValue0 := mload(srcPtr)\n tail := abi_encodeUpdatedPos_t_struct$_FacetCut_$11817_memory_ptr_to_t_struct$_FacetCut_$11817_memory_ptr(elementValue0, tail)\n srcPtr := array_nextElement_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr(srcPtr)\n pos := add(pos, 0x20)\n }\n pos := tail\n end := pos\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function array_length_t_bytes_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function copy_memory_to_memory_with_cleanup(src, dst, length) {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_bytes_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_t_address_t_bytes_memory_ptr__to_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_fromStack(value0, tail)\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n mstore(add(headStart, 64), sub(tail, headStart))\n tail := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value2, tail)\n\n }\n\n function store_literal_in_memory_1ffc682bcfedefd5e93ba9ed0c2d1bc0b18319886e3b4bd28a03a3d3729f85c0(memPtr) {\n\n mstore(add(memPtr, 0), \"LibDiamondCut: No selectors in f\")\n\n mstore(add(memPtr, 32), \"acet to cut\")\n\n }\n\n function abi_encode_t_stringliteral_1ffc682bcfedefd5e93ba9ed0c2d1bc0b18319886e3b4bd28a03a3d3729f85c0_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 43)\n store_literal_in_memory_1ffc682bcfedefd5e93ba9ed0c2d1bc0b18319886e3b4bd28a03a3d3729f85c0(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_1ffc682bcfedefd5e93ba9ed0c2d1bc0b18319886e3b4bd28a03a3d3729f85c0__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_1ffc682bcfedefd5e93ba9ed0c2d1bc0b18319886e3b4bd28a03a3d3729f85c0_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_64609d8b93c93a06b98d7db7a87b04044cd4a52c5661d603bb9b90ad8b914a3a(memPtr) {\n\n mstore(add(memPtr, 0), \"LibDiamondCut: Add facet can't b\")\n\n mstore(add(memPtr, 32), \"e address(0)\")\n\n }\n\n function abi_encode_t_stringliteral_64609d8b93c93a06b98d7db7a87b04044cd4a52c5661d603bb9b90ad8b914a3a_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 44)\n store_literal_in_memory_64609d8b93c93a06b98d7db7a87b04044cd4a52c5661d603bb9b90ad8b914a3a(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_64609d8b93c93a06b98d7db7a87b04044cd4a52c5661d603bb9b90ad8b914a3a__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_64609d8b93c93a06b98d7db7a87b04044cd4a52c5661d603bb9b90ad8b914a3a_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_99a7418ee014d613f46da44561258cdbb58064508097483a319062b99fa37700(memPtr) {\n\n mstore(add(memPtr, 0), \"LibDiamondCut: Can't add functio\")\n\n mstore(add(memPtr, 32), \"n that already exists\")\n\n }\n\n function abi_encode_t_stringliteral_99a7418ee014d613f46da44561258cdbb58064508097483a319062b99fa37700_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 53)\n store_literal_in_memory_99a7418ee014d613f46da44561258cdbb58064508097483a319062b99fa37700(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_99a7418ee014d613f46da44561258cdbb58064508097483a319062b99fa37700__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_99a7418ee014d613f46da44561258cdbb58064508097483a319062b99fa37700_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function cleanup_t_uint96(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffff)\n }\n\n function increment_t_uint96(value) -> ret {\n value := cleanup_t_uint96(value)\n if eq(value, 0xffffffffffffffffffffffff) { panic_error_0x11() }\n ret := add(value, 1)\n }\n\n function store_literal_in_memory_b5a7112edf707196456f338fdcc19cd849be6cb8c0d166bcd035f4cfb00e7078(memPtr) {\n\n mstore(add(memPtr, 0), \"LibDiamondCut: Can't replace fun\")\n\n mstore(add(memPtr, 32), \"ction with same function\")\n\n }\n\n function abi_encode_t_stringliteral_b5a7112edf707196456f338fdcc19cd849be6cb8c0d166bcd035f4cfb00e7078_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 56)\n store_literal_in_memory_b5a7112edf707196456f338fdcc19cd849be6cb8c0d166bcd035f4cfb00e7078(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_b5a7112edf707196456f338fdcc19cd849be6cb8c0d166bcd035f4cfb00e7078__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_b5a7112edf707196456f338fdcc19cd849be6cb8c0d166bcd035f4cfb00e7078_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_b739aae768f79b96e91d9f66398733516895e39eb09ee54a795b49dcc77504d4(memPtr) {\n\n mstore(add(memPtr, 0), \"LibDiamondCut: Remove facet addr\")\n\n mstore(add(memPtr, 32), \"ess must be address(0)\")\n\n }\n\n function abi_encode_t_stringliteral_b739aae768f79b96e91d9f66398733516895e39eb09ee54a795b49dcc77504d4_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 54)\n store_literal_in_memory_b739aae768f79b96e91d9f66398733516895e39eb09ee54a795b49dcc77504d4(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_b739aae768f79b96e91d9f66398733516895e39eb09ee54a795b49dcc77504d4__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_b739aae768f79b96e91d9f66398733516895e39eb09ee54a795b49dcc77504d4_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(value, pos) -> end {\n let length := array_length_t_bytes_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, length)\n }\n\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value0) -> end {\n\n pos := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(value0, pos)\n\n end := pos\n }\n\n function abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n mstore(add(headStart, 32), sub(tail, headStart))\n tail := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value1, tail)\n\n }\n\n function store_literal_in_memory_2c590e498c4d56c984a7092fd5e89a68b9f4541ce9f97252fb74e44a00ffbb71(memPtr) {\n\n mstore(add(memPtr, 0), \"LibDiamondCut: Can't remove func\")\n\n mstore(add(memPtr, 32), \"tion that doesn't exist\")\n\n }\n\n function abi_encode_t_stringliteral_2c590e498c4d56c984a7092fd5e89a68b9f4541ce9f97252fb74e44a00ffbb71_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 55)\n store_literal_in_memory_2c590e498c4d56c984a7092fd5e89a68b9f4541ce9f97252fb74e44a00ffbb71(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_2c590e498c4d56c984a7092fd5e89a68b9f4541ce9f97252fb74e44a00ffbb71__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_2c590e498c4d56c984a7092fd5e89a68b9f4541ce9f97252fb74e44a00ffbb71_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_8ba063dfaa4be2d2cbe73dbb1364728b0f7031ac048441d5fad19e9541992b21(memPtr) {\n\n mstore(add(memPtr, 0), \"LibDiamondCut: Can't remove immu\")\n\n mstore(add(memPtr, 32), \"table function\")\n\n }\n\n function abi_encode_t_stringliteral_8ba063dfaa4be2d2cbe73dbb1364728b0f7031ac048441d5fad19e9541992b21_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 46)\n store_literal_in_memory_8ba063dfaa4be2d2cbe73dbb1364728b0f7031ac048441d5fad19e9541992b21(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_8ba063dfaa4be2d2cbe73dbb1364728b0f7031ac048441d5fad19e9541992b21__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_8ba063dfaa4be2d2cbe73dbb1364728b0f7031ac048441d5fad19e9541992b21_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function checked_sub_t_uint256(x, y) -> diff {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n diff := sub(x, y)\n\n if gt(diff, x) { panic_error_0x11() }\n\n }\n\n function panic_error_0x31() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x31)\n revert(0, 0x24)\n }\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value0, tail)\n\n }\n\n}\n","id":61,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60806040526040516200481938038062004819833981810160405281019062000029919062001965565b620000436000801b83620002b260201b620001671760201c565b62000080604051602001620000589062001a0d565b6040516020818303038152906040528051906020012083620002b260201b620001671760201c565b620000bd604051602001620000959062001a7f565b6040516020818303038152906040528051906020012083620002b260201b620001671760201c565b620000fa604051602001620000d29062001af1565b6040516020818303038152906040528051906020012083620002b260201b620001671760201c565b6000600167ffffffffffffffff8111156200011a576200011962001b13565b5b6040519080825280602002602001820160405280156200015757816020015b62000143620018af565b815260200190600190039081620001395790505b5090506000600167ffffffffffffffff8111156200017a576200017962001b13565b5b604051908082528060200260200182016040528015620001a95781602001602082028036833780820191505090505b509050631f931c1c60e01b81600081518110620001cb57620001ca62001b42565b5b60200260200101907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152505060405180606001604052808473ffffffffffffffffffffffffffffffffffffffff1681526020016000600281111562000255576200025462001b71565b5b8152602001828152508260008151811062000275576200027462001b42565b5b6020026020010181905250620002a882600060405180602001604052806000815250620002c860201b620001751760201c565b5050505062002618565b620002c482826200054c60201b60201c565b5050565b60005b8351811015620004f7576000848281518110620002ed57620002ec62001b42565b5b60200260200101516020015190506000600281111562000312576200031162001b71565b5b81600281111562000328576200032762001b71565b5b0362000388576200038285838151811062000348576200034762001b42565b5b6020026020010151600001518684815181106200036a576200036962001b42565b5b6020026020010151604001516200064060201b60201c565b620004e0565b600160028111156200039f576200039e62001b71565b5b816002811115620003b557620003b462001b71565b5b0362000415576200040f858381518110620003d557620003d462001b42565b5b602002602001015160000151868481518110620003f757620003f662001b42565b5b602002602001015160400151620008e260201b60201c565b620004df565b6002808111156200042b576200042a62001b71565b5b81600281111562000441576200044062001b71565b5b03620004a1576200049b85838151811062000461576200046062001b42565b5b60200260200101516000015186848151811062000483576200048262001b42565b5b60200260200101516040015162000b9660201b60201c565b620004de565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004d59062001c16565b60405180910390fd5b5b5b508080620004ee9062001c71565b915050620002cb565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb6738383836040516200052d9392919062001feb565b60405180910390a162000547828262000d3e60201b60201c565b505050565b6200055e828262000e7260201b60201c565b6200063c5760016200057562000eee60201b60201c565b600001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600081511162000687576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200067e90620020ac565b60405180910390fd5b60006200069962000f1b60201b60201c565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036200070d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007049062002144565b60405180910390fd5b60008160010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054905090506000816bffffffffffffffffffffffff1603620007835762000782828562000f4860201b60201c565b5b60005b8351811015620008db576000848281518110620007a857620007a762001b42565b5b602002602001015190506000846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146200089f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200089690620021dc565b60405180910390fd5b620008b38583868a6200102c60201b60201c565b8380620008c09062002216565b94505050508080620008d29062001c71565b91505062000786565b5050505050565b600081511162000929576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200092090620020ac565b60405180910390fd5b60006200093b62000f1b60201b60201c565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620009af576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009a69062002144565b60405180910390fd5b60008160010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054905090506000816bffffffffffffffffffffffff160362000a255762000a24828562000f4860201b60201c565b5b60005b835181101562000b8f57600084828151811062000a4a5762000a4962001b42565b5b602002602001015190506000846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000b40576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b3790620022c5565b60405180910390fd5b62000b53858284620011d960201b60201c565b62000b678583868a6200102c60201b60201c565b838062000b749062002216565b9450505050808062000b869062001c71565b91505062000a28565b5050505050565b600081511162000bdd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000bd490620020ac565b60405180910390fd5b600062000bef62000f1b60201b60201c565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161462000c63576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c5a906200235d565b60405180910390fd5b60005b825181101562000d3857600083828151811062000c885762000c8762001b42565b5b602002602001015190506000836000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905062000d20848284620011d960201b60201c565b5050808062000d2f9062001c71565b91505062000c66565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16031562000e6e5762000d9f82604051806060016040528060288152602001620047cd602891396200185a60201b60201c565b6000808373ffffffffffffffffffffffffffffffffffffffff168360405162000dc99190620023c1565b600060405180830381855af49150503d806000811462000e06576040519150601f19603f3d011682016040523d82523d6000602084013e62000e0b565b606091505b50915091508162000e6b5760008151111562000e2a5780518082602001fd5b83836040517f192105d700000000000000000000000000000000000000000000000000000000815260040162000e62929190620023da565b60405180910390fd5b50505b5050565b600062000e8462000eee60201b60201c565b600001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000807f4cd15452b25e815d3f9d1a3c7edd985a178edf5eb3461a1acbf855517423d69490508091505090565b6000807fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90508091505090565b62000f7381604051806060016040528060248152602001620047f5602491396200185a60201b60201c565b81600201805490508260010160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555081600201819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b81846000016000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508360010160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018390806001815401808255809150506001900390600052602060002090600891828204019190066004029091909190916101000a81548163ffffffff021916908360e01c021790555080846000016000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200124b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620012429062002484565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620012bc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620012b3906200251c565b60405180910390fd5b6000836000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff169050600060018560010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001805490506200139591906200253e565b9050808214620015305760008560010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018281548110620013fa57620013f962001b42565b5b90600052602060002090600891828204019190066004029054906101000a900460e01b9050808660010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001848154811062001479576200147862001b42565b5b90600052602060002090600891828204019190066004026101000a81548163ffffffff021916908360e01c021790555082866000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550505b8460010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000180548062001587576200158662002579565b5b60019003818190600052602060002090600891828204019190066004026101000a81549063ffffffff02191690559055846000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a8154906bffffffffffffffffffffffff021916905550506000810362001853576000600186600201805490506200167491906200253e565b905060008660010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050818114620017bc576000876002018381548110620016e257620016e162001b42565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508088600201838154811062001729576200172862001b42565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818860010160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550505b86600201805480620017d357620017d262002579565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590558660010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000905550505b5050505050565b6000823b9050600081118290620018a9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620018a09190620025f4565b60405180910390fd5b50505050565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160006002811115620018ee57620018ed62001b71565b5b8152602001606081525090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200192d8262001900565b9050919050565b6200193f8162001920565b81146200194b57600080fd5b50565b6000815190506200195f8162001934565b92915050565b600080604083850312156200197f576200197e620018fb565b5b60006200198f858286016200194e565b9250506020620019a2858286016200194e565b9150509250929050565b600082825260208201905092915050565b7f4d41494e5441494e45525f524f4c450000000000000000000000000000000000600082015250565b6000620019f5600f83620019ac565b915062001a0282620019bd565b602082019050919050565b6000602082019050818103600083015262001a2881620019e6565b9050919050565b7f5452454153555245525f524f4c45000000000000000000000000000000000000600082015250565b600062001a67600e83620019ac565b915062001a748262001a2f565b602082019050919050565b6000602082019050818103600083015262001a9a8162001a58565b9050919050565b7f535452415445474953545f524f4c450000000000000000000000000000000000600082015250565b600062001ad9600f83620019ac565b915062001ae68262001aa1565b602082019050919050565b6000602082019050818103600083015262001b0c8162001aca565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4c69624469616d6f6e644375743a20496e636f7272656374204661636574437560008201527f74416374696f6e00000000000000000000000000000000000000000000000000602082015250565b600062001bfe602783620019ac565b915062001c0b8262001ba0565b604082019050919050565b6000602082019050818103600083015262001c318162001bef565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000819050919050565b600062001c7e8262001c67565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820362001cb35762001cb262001c38565b5b600182019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b62001cf58162001920565b82525050565b6003811062001d0f5762001d0e62001b71565b5b50565b600081905062001d228262001cfb565b919050565b600062001d348262001d12565b9050919050565b62001d468162001d27565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b62001daf8162001d78565b82525050565b600062001dc3838362001da4565b60208301905092915050565b6000602082019050919050565b600062001de98262001d4c565b62001df5818562001d57565b935062001e028362001d68565b8060005b8381101562001e3957815162001e1d888262001db5565b975062001e2a8362001dcf565b92505060018101905062001e06565b5085935050505092915050565b600060608301600083015162001e60600086018262001cea565b50602083015162001e75602086018262001d3b565b506040830151848203604086015262001e8f828262001ddc565b9150508091505092915050565b600062001eaa838362001e46565b905092915050565b6000602082019050919050565b600062001ecc8262001cbe565b62001ed8818562001cc9565b93508360208202850162001eec8562001cda565b8060005b8581101562001f2e578484038952815162001f0c858262001e9c565b945062001f198362001eb2565b925060208a0199505060018101905062001ef0565b50829750879550505050505092915050565b62001f4b8162001920565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b8381101562001f8d57808201518184015260208101905062001f70565b60008484015250505050565b6000601f19601f8301169050919050565b600062001fb78262001f51565b62001fc3818562001f5c565b935062001fd581856020860162001f6d565b62001fe08162001f99565b840191505092915050565b6000606082019050818103600083015262002007818662001ebf565b905062002018602083018562001f40565b81810360408301526200202c818462001faa565b9050949350505050565b7f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660008201527f6163657420746f20637574000000000000000000000000000000000000000000602082015250565b600062002094602b83620019ac565b9150620020a18262002036565b604082019050919050565b60006020820190508181036000830152620020c78162002085565b9050919050565b7f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260008201527f6520616464726573732830290000000000000000000000000000000000000000602082015250565b60006200212c602c83620019ac565b91506200213982620020ce565b604082019050919050565b600060208201905081810360008301526200215f816200211d565b9050919050565b7f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f60008201527f6e207468617420616c7265616479206578697374730000000000000000000000602082015250565b6000620021c4603583620019ac565b9150620021d18262002166565b604082019050919050565b60006020820190508181036000830152620021f781620021b5565b9050919050565b60006bffffffffffffffffffffffff82169050919050565b60006200222382620021fe565b91506bffffffffffffffffffffffff820362002244576200224362001c38565b5b600182019050919050565b7f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60008201527f6374696f6e20776974682073616d652066756e6374696f6e0000000000000000602082015250565b6000620022ad603883620019ac565b9150620022ba826200224f565b604082019050919050565b60006020820190508181036000830152620022e0816200229e565b9050919050565b7f4c69624469616d6f6e644375743a2052656d6f7665206661636574206164647260008201527f657373206d757374206265206164647265737328302900000000000000000000602082015250565b600062002345603683620019ac565b91506200235282620022e7565b604082019050919050565b60006020820190508181036000830152620023788162002336565b9050919050565b600081905092915050565b6000620023978262001f51565b620023a381856200237f565b9350620023b581856020860162001f6d565b80840191505092915050565b6000620023cf82846200238a565b915081905092915050565b6000604082019050620023f1600083018562001f40565b818103602083015262002405818462001faa565b90509392505050565b7f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360008201527f74696f6e207468617420646f65736e2774206578697374000000000000000000602082015250565b60006200246c603783620019ac565b915062002479826200240e565b604082019050919050565b600060208201905081810360008301526200249f816200245d565b9050919050565b7f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560008201527f7461626c652066756e6374696f6e000000000000000000000000000000000000602082015250565b600062002504602e83620019ac565b91506200251182620024a6565b604082019050919050565b600060208201905081810360008301526200253781620024f5565b9050919050565b60006200254b8262001c67565b9150620025588362001c67565b925082820390508181111562002573576200257262001c38565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600081519050919050565b6000620025c082620025a8565b620025cc8185620019ac565b9350620025de81856020860162001f6d565b620025e98162001f99565b840191505092915050565b60006020820190508181036000830152620026108184620025b3565b905092915050565b6121a580620026286000396000f3fe60806040523661000b57005b6000807fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c9050809150600082600001600080357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610141576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161013890611693565b60405180910390fd5b3660008037600080366000845af43d6000803e8060008114610162573d6000f35b3d6000fd5b61017182826103a4565b5050565b60005b8351811015610359576000848281518110610196576101956116b3565b5b6020026020010151602001519050600060028111156101b8576101b76116e2565b5b8160028111156101cb576101ca6116e2565b5b0361021b576102168583815181106101e6576101e56116b3565b5b602002602001015160000151868481518110610205576102046116b3565b5b602002602001015160400151610487565b610345565b6001600281111561022f5761022e6116e2565b5b816002811115610242576102416116e2565b5b036102925761028d85838151811061025d5761025c6116b3565b5b60200260200101516000015186848151811061027c5761027b6116b3565b5b6020026020010151604001516106fe565b610344565b6002808111156102a5576102a46116e2565b5b8160028111156102b8576102b76116e2565b5b03610308576103038583815181106102d3576102d26116b3565b5b6020026020010151600001518684815181106102f2576102f16116b3565b5b60200260200101516040015161097f565b610343565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161033a90611783565b60405180910390fd5b5b5b508080610351906117dc565b915050610178565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb67383838360405161038d93929190611b48565b60405180910390a161039f8282610b0a565b505050565b6103ae8282610c2c565b6104835760016103bc610ca0565b600001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b60008151116104cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104c290611bff565b60405180910390fd5b60006104d5610ccd565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610546576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053d90611c91565b60405180910390fd5b60008160010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054905090506000816bffffffffffffffffffffffff16036105b3576105b28285610cfa565b5b60005b83518110156106f75760008482815181106105d4576105d36116b3565b5b602002602001015190506000846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146106c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106bf90611d23565b60405180910390fd5b6106d48583868a610dd5565b83806106df90611d5b565b945050505080806106ef906117dc565b9150506105b6565b5050505050565b6000815111610742576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073990611bff565b60405180910390fd5b600061074c610ccd565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036107bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b490611c91565b60405180910390fd5b60008160010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054905090506000816bffffffffffffffffffffffff160361082a576108298285610cfa565b5b60005b835181101561097857600084828151811061084b5761084a6116b3565b5b602002602001015190506000846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361093e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093590611e01565b60405180910390fd5b610949858284610f82565b6109558583868a610dd5565b838061096090611d5b565b94505050508080610970906117dc565b91505061082d565b5050505050565b60008151116109c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ba90611bff565b60405180910390fd5b60006109cd610ccd565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610a3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3590611e93565b60405180910390fd5b60005b8251811015610b04576000838281518110610a5f57610a5e6116b3565b5b602002602001015190506000836000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050610aef848284610f82565b50508080610afc906117dc565b915050610a41565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160315610c2857610b6182604051806060016040528060288152602001612124602891396115e4565b6000808373ffffffffffffffffffffffffffffffffffffffff1683604051610b899190611eef565b600060405180830381855af49150503d8060008114610bc4576040519150601f19603f3d011682016040523d82523d6000602084013e610bc9565b606091505b509150915081610c2557600081511115610be65780518082602001fd5b83836040517f192105d7000000000000000000000000000000000000000000000000000000008152600401610c1c929190611f06565b60405180910390fd5b50505b5050565b6000610c36610ca0565b600001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000807f4cd15452b25e815d3f9d1a3c7edd985a178edf5eb3461a1acbf855517423d69490508091505090565b6000807fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90508091505090565b610d1c8160405180606001604052806024815260200161214c602491396115e4565b81600201805490508260010160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555081600201819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b81846000016000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508360010160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018390806001815401808255809150506001900390600052602060002090600891828204019190066004029091909190916101000a81548163ffffffff021916908360e01c021790555080846000016000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ff1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe890611fa8565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361105f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110569061203a565b60405180910390fd5b6000836000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff169050600060018560010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000180549050611136919061205a565b90508082146112ca5760008560010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018281548110611197576111966116b3565b5b90600052602060002090600891828204019190066004029054906101000a900460e01b9050808660010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018481548110611213576112126116b3565b5b90600052602060002090600891828204019190066004026101000a81548163ffffffff021916908360e01c021790555082866000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550505b8460010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000180548061131e5761131d61208e565b5b60019003818190600052602060002090600891828204019190066004026101000a81549063ffffffff02191690559055846000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a8154906bffffffffffffffffffffffff02191690555050600081036115dd57600060018660020180549050611408919061205a565b905060008660010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050818114611549576000876002018381548110611472576114716116b3565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050808860020183815481106114b6576114b56116b3565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818860010160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550505b8660020180548061155d5761155c61208e565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590558660010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000905550505b5050505050565b6000823b9050600081118290611630576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116279190612101565b60405180910390fd5b50505050565b600082825260208201905092915050565b7f4469616d6f6e643a2046756e6374696f6e20646f6573206e6f74206578697374600082015250565b600061167d602083611636565b915061168882611647565b602082019050919050565b600060208201905081810360008301526116ac81611670565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4c69624469616d6f6e644375743a20496e636f7272656374204661636574437560008201527f74416374696f6e00000000000000000000000000000000000000000000000000602082015250565b600061176d602783611636565b915061177882611711565b604082019050919050565b6000602082019050818103600083015261179c81611760565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000819050919050565b60006117e7826117d2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611819576118186117a3565b5b600182019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061187b82611850565b9050919050565b61188b81611870565b82525050565b600381106118a2576118a16116e2565b5b50565b60008190506118b382611891565b919050565b60006118c3826118a5565b9050919050565b6118d3816118b8565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61193a81611905565b82525050565b600061194c8383611931565b60208301905092915050565b6000602082019050919050565b6000611970826118d9565b61197a81856118e4565b9350611985836118f5565b8060005b838110156119b657815161199d8882611940565b97506119a883611958565b925050600181019050611989565b5085935050505092915050565b60006060830160008301516119db6000860182611882565b5060208301516119ee60208601826118ca565b5060408301518482036040860152611a068282611965565b9150508091505092915050565b6000611a1f83836119c3565b905092915050565b6000602082019050919050565b6000611a3f82611824565b611a49818561182f565b935083602082028501611a5b85611840565b8060005b85811015611a975784840389528151611a788582611a13565b9450611a8383611a27565b925060208a01995050600181019050611a5f565b50829750879550505050505092915050565b611ab281611870565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611af2578082015181840152602081019050611ad7565b60008484015250505050565b6000601f19601f8301169050919050565b6000611b1a82611ab8565b611b248185611ac3565b9350611b34818560208601611ad4565b611b3d81611afe565b840191505092915050565b60006060820190508181036000830152611b628186611a34565b9050611b716020830185611aa9565b8181036040830152611b838184611b0f565b9050949350505050565b7f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660008201527f6163657420746f20637574000000000000000000000000000000000000000000602082015250565b6000611be9602b83611636565b9150611bf482611b8d565b604082019050919050565b60006020820190508181036000830152611c1881611bdc565b9050919050565b7f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260008201527f6520616464726573732830290000000000000000000000000000000000000000602082015250565b6000611c7b602c83611636565b9150611c8682611c1f565b604082019050919050565b60006020820190508181036000830152611caa81611c6e565b9050919050565b7f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f60008201527f6e207468617420616c7265616479206578697374730000000000000000000000602082015250565b6000611d0d603583611636565b9150611d1882611cb1565b604082019050919050565b60006020820190508181036000830152611d3c81611d00565b9050919050565b60006bffffffffffffffffffffffff82169050919050565b6000611d6682611d43565b91506bffffffffffffffffffffffff8203611d8457611d836117a3565b5b600182019050919050565b7f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60008201527f6374696f6e20776974682073616d652066756e6374696f6e0000000000000000602082015250565b6000611deb603883611636565b9150611df682611d8f565b604082019050919050565b60006020820190508181036000830152611e1a81611dde565b9050919050565b7f4c69624469616d6f6e644375743a2052656d6f7665206661636574206164647260008201527f657373206d757374206265206164647265737328302900000000000000000000602082015250565b6000611e7d603683611636565b9150611e8882611e21565b604082019050919050565b60006020820190508181036000830152611eac81611e70565b9050919050565b600081905092915050565b6000611ec982611ab8565b611ed38185611eb3565b9350611ee3818560208601611ad4565b80840191505092915050565b6000611efb8284611ebe565b915081905092915050565b6000604082019050611f1b6000830185611aa9565b8181036020830152611f2d8184611b0f565b90509392505050565b7f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360008201527f74696f6e207468617420646f65736e2774206578697374000000000000000000602082015250565b6000611f92603783611636565b9150611f9d82611f36565b604082019050919050565b60006020820190508181036000830152611fc181611f85565b9050919050565b7f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560008201527f7461626c652066756e6374696f6e000000000000000000000000000000000000602082015250565b6000612024602e83611636565b915061202f82611fc8565b604082019050919050565b6000602082019050818103600083015261205381612017565b9050919050565b6000612065826117d2565b9150612070836117d2565b9250828203905081811115612088576120876117a3565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600081519050919050565b60006120d3826120bd565b6120dd8185611636565b93506120ed818560208601611ad4565b6120f681611afe565b840191505092915050565b6000602082019050818103600083015261211b81846120c8565b90509291505056fe4c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465a26469706673582212208b3b1a3b53acb7515ca97eae4d2b5b80bb4c46a44c8880c0968a1955e7fe61db64736f6c634300081200334c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH3 0x4819 CODESIZE SUB DUP1 PUSH3 0x4819 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE DUP2 ADD SWAP1 PUSH3 0x29 SWAP2 SWAP1 PUSH3 0x1965 JUMP JUMPDEST PUSH3 0x43 PUSH1 0x0 DUP1 SHL DUP4 PUSH3 0x2B2 PUSH1 0x20 SHL PUSH3 0x167 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x80 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x58 SWAP1 PUSH3 0x1A0D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP4 PUSH3 0x2B2 PUSH1 0x20 SHL PUSH3 0x167 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0xBD PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x95 SWAP1 PUSH3 0x1A7F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP4 PUSH3 0x2B2 PUSH1 0x20 SHL PUSH3 0x167 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0xFA PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0xD2 SWAP1 PUSH3 0x1AF1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP4 PUSH3 0x2B2 PUSH1 0x20 SHL PUSH3 0x167 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x11A JUMPI PUSH3 0x119 PUSH3 0x1B13 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x157 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH3 0x143 PUSH3 0x18AF JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH3 0x139 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x17A JUMPI PUSH3 0x179 PUSH3 0x1B13 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x1A9 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP PUSH4 0x1F931C1C PUSH1 0xE0 SHL DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH3 0x1CB JUMPI PUSH3 0x1CA PUSH3 0x1B42 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE POP POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x2 DUP2 GT ISZERO PUSH3 0x255 JUMPI PUSH3 0x254 PUSH3 0x1B71 JUMP JUMPDEST JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE POP DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH3 0x275 JUMPI PUSH3 0x274 PUSH3 0x1B42 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP PUSH3 0x2A8 DUP3 PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH3 0x2C8 PUSH1 0x20 SHL PUSH3 0x175 OR PUSH1 0x20 SHR JUMP JUMPDEST POP POP POP POP PUSH3 0x2618 JUMP JUMPDEST PUSH3 0x2C4 DUP3 DUP3 PUSH3 0x54C PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH3 0x4F7 JUMPI PUSH1 0x0 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0x2ED JUMPI PUSH3 0x2EC PUSH3 0x1B42 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH1 0x2 DUP2 GT ISZERO PUSH3 0x312 JUMPI PUSH3 0x311 PUSH3 0x1B71 JUMP JUMPDEST JUMPDEST DUP2 PUSH1 0x2 DUP2 GT ISZERO PUSH3 0x328 JUMPI PUSH3 0x327 PUSH3 0x1B71 JUMP JUMPDEST JUMPDEST SUB PUSH3 0x388 JUMPI PUSH3 0x382 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH3 0x348 JUMPI PUSH3 0x347 PUSH3 0x1B42 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH3 0x36A JUMPI PUSH3 0x369 PUSH3 0x1B42 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD PUSH3 0x640 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x4E0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x2 DUP2 GT ISZERO PUSH3 0x39F JUMPI PUSH3 0x39E PUSH3 0x1B71 JUMP JUMPDEST JUMPDEST DUP2 PUSH1 0x2 DUP2 GT ISZERO PUSH3 0x3B5 JUMPI PUSH3 0x3B4 PUSH3 0x1B71 JUMP JUMPDEST JUMPDEST SUB PUSH3 0x415 JUMPI PUSH3 0x40F DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH3 0x3D5 JUMPI PUSH3 0x3D4 PUSH3 0x1B42 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH3 0x3F7 JUMPI PUSH3 0x3F6 PUSH3 0x1B42 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD PUSH3 0x8E2 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x4DF JUMP JUMPDEST PUSH1 0x2 DUP1 DUP2 GT ISZERO PUSH3 0x42B JUMPI PUSH3 0x42A PUSH3 0x1B71 JUMP JUMPDEST JUMPDEST DUP2 PUSH1 0x2 DUP2 GT ISZERO PUSH3 0x441 JUMPI PUSH3 0x440 PUSH3 0x1B71 JUMP JUMPDEST JUMPDEST SUB PUSH3 0x4A1 JUMPI PUSH3 0x49B DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH3 0x461 JUMPI PUSH3 0x460 PUSH3 0x1B42 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH3 0x483 JUMPI PUSH3 0x482 PUSH3 0x1B42 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD PUSH3 0xB96 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x4DE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x4D5 SWAP1 PUSH3 0x1C16 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMPDEST JUMPDEST POP DUP1 DUP1 PUSH3 0x4EE SWAP1 PUSH3 0x1C71 JUMP JUMPDEST SWAP2 POP POP PUSH3 0x2CB JUMP JUMPDEST POP PUSH32 0x8FAA70878671CCD212D20771B795C50AF8FD3FF6CF27F4BDE57E5D4DE0AEB673 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH3 0x52D SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0x1FEB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH3 0x547 DUP3 DUP3 PUSH3 0xD3E PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH3 0x55E DUP3 DUP3 PUSH3 0xE72 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x63C JUMPI PUSH1 0x1 PUSH3 0x575 PUSH3 0xEEE PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD GT PUSH3 0x687 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x67E SWAP1 PUSH3 0x20AC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x699 PUSH3 0xF1B PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH3 0x70D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x704 SWAP1 PUSH3 0x2144 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 ADD PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP1 SLOAD SWAP1 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH3 0x783 JUMPI PUSH3 0x782 DUP3 DUP6 PUSH3 0xF48 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST JUMPDEST PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH3 0x8DB JUMPI PUSH1 0x0 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0x7A8 JUMPI PUSH3 0x7A7 PUSH3 0x1B42 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP5 PUSH1 0x0 ADD PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH3 0x89F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x896 SWAP1 PUSH3 0x21DC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x8B3 DUP6 DUP4 DUP7 DUP11 PUSH3 0x102C PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST DUP4 DUP1 PUSH3 0x8C0 SWAP1 PUSH3 0x2216 JUMP JUMPDEST SWAP5 POP POP POP POP DUP1 DUP1 PUSH3 0x8D2 SWAP1 PUSH3 0x1C71 JUMP JUMPDEST SWAP2 POP POP PUSH3 0x786 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD GT PUSH3 0x929 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x920 SWAP1 PUSH3 0x20AC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x93B PUSH3 0xF1B PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH3 0x9AF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x9A6 SWAP1 PUSH3 0x2144 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 ADD PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP1 SLOAD SWAP1 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH3 0xA25 JUMPI PUSH3 0xA24 DUP3 DUP6 PUSH3 0xF48 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST JUMPDEST PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH3 0xB8F JUMPI PUSH1 0x0 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0xA4A JUMPI PUSH3 0xA49 PUSH3 0x1B42 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP5 PUSH1 0x0 ADD PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH3 0xB40 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xB37 SWAP1 PUSH3 0x22C5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0xB53 DUP6 DUP3 DUP5 PUSH3 0x11D9 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0xB67 DUP6 DUP4 DUP7 DUP11 PUSH3 0x102C PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST DUP4 DUP1 PUSH3 0xB74 SWAP1 PUSH3 0x2216 JUMP JUMPDEST SWAP5 POP POP POP POP DUP1 DUP1 PUSH3 0xB86 SWAP1 PUSH3 0x1C71 JUMP JUMPDEST SWAP2 POP POP PUSH3 0xA28 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD GT PUSH3 0xBDD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xBD4 SWAP1 PUSH3 0x20AC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0xBEF PUSH3 0xF1B PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH3 0xC63 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xC5A SWAP1 PUSH3 0x235D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH3 0xD38 JUMPI PUSH1 0x0 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0xC88 JUMPI PUSH3 0xC87 PUSH3 0x1B42 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x0 ADD PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH3 0xD20 DUP5 DUP3 DUP5 PUSH3 0x11D9 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP POP DUP1 DUP1 PUSH3 0xD2F SWAP1 PUSH3 0x1C71 JUMP JUMPDEST SWAP2 POP POP PUSH3 0xC66 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB ISZERO PUSH3 0xE6E JUMPI PUSH3 0xD9F DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x47CD PUSH1 0x28 SWAP2 CODECOPY PUSH3 0x185A PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD PUSH3 0xDC9 SWAP2 SWAP1 PUSH3 0x23C1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH3 0xE06 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0xE0B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH3 0xE6B JUMPI PUSH1 0x0 DUP2 MLOAD GT ISZERO PUSH3 0xE2A JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST DUP4 DUP4 PUSH1 0x40 MLOAD PUSH32 0x192105D700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xE62 SWAP3 SWAP2 SWAP1 PUSH3 0x23DA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0xE84 PUSH3 0xEEE PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x4CD15452B25E815D3F9D1A3C7EDD985A178EDF5EB3461A1ACBF855517423D694 SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131C SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH3 0xF73 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x47F5 PUSH1 0x24 SWAP2 CODECOPY PUSH3 0x185A PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST DUP2 PUSH1 0x2 ADD DUP1 SLOAD SWAP1 POP DUP3 PUSH1 0x1 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 ADD DUP2 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP POP JUMP JUMPDEST DUP2 DUP5 PUSH1 0x0 ADD PUSH1 0x0 DUP6 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP4 PUSH1 0x1 ADD PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP4 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x8 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x4 MUL SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0xE0 SHR MUL OR SWAP1 SSTORE POP DUP1 DUP5 PUSH1 0x0 ADD PUSH1 0x0 DUP6 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH3 0x124B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x1242 SWAP1 PUSH3 0x2484 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH3 0x12BC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x12B3 SWAP1 PUSH3 0x251C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x0 ADD PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP6 PUSH1 0x1 ADD PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP1 SLOAD SWAP1 POP PUSH3 0x1395 SWAP2 SWAP1 PUSH3 0x253E JUMP JUMPDEST SWAP1 POP DUP1 DUP3 EQ PUSH3 0x1530 JUMPI PUSH1 0x0 DUP6 PUSH1 0x1 ADD PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH3 0x13FA JUMPI PUSH3 0x13F9 PUSH3 0x1B42 JUMP JUMPDEST JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x8 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x4 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xE0 SHL SWAP1 POP DUP1 DUP7 PUSH1 0x1 ADD PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH3 0x1479 JUMPI PUSH3 0x1478 PUSH3 0x1B42 JUMP JUMPDEST JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x8 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x4 MUL PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0xE0 SHR MUL OR SWAP1 SSTORE POP DUP3 DUP7 PUSH1 0x0 ADD PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP JUMPDEST DUP5 PUSH1 0x1 ADD PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP1 SLOAD DUP1 PUSH3 0x1587 JUMPI PUSH3 0x1586 PUSH3 0x2579 JUMP JUMPDEST JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x8 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x4 MUL PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 SSTORE SWAP1 SSTORE DUP5 PUSH1 0x0 ADD PUSH1 0x0 DUP5 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP1 DUP3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x0 DUP3 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE POP POP PUSH1 0x0 DUP2 SUB PUSH3 0x1853 JUMPI PUSH1 0x0 PUSH1 0x1 DUP7 PUSH1 0x2 ADD DUP1 SLOAD SWAP1 POP PUSH3 0x1674 SWAP2 SWAP1 PUSH3 0x253E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 PUSH1 0x1 ADD PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 POP DUP2 DUP2 EQ PUSH3 0x17BC JUMPI PUSH1 0x0 DUP8 PUSH1 0x2 ADD DUP4 DUP2 SLOAD DUP2 LT PUSH3 0x16E2 JUMPI PUSH3 0x16E1 PUSH3 0x1B42 JUMP JUMPDEST JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP1 DUP9 PUSH1 0x2 ADD DUP4 DUP2 SLOAD DUP2 LT PUSH3 0x1729 JUMPI PUSH3 0x1728 PUSH3 0x1B42 JUMP JUMPDEST JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 DUP9 PUSH1 0x1 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP POP JUMPDEST DUP7 PUSH1 0x2 ADD DUP1 SLOAD DUP1 PUSH3 0x17D3 JUMPI PUSH3 0x17D2 PUSH3 0x2579 JUMP JUMPDEST JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE SWAP1 SSTORE DUP7 PUSH1 0x1 ADD PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SSTORE POP POP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 EXTCODESIZE SWAP1 POP PUSH1 0x0 DUP2 GT DUP3 SWAP1 PUSH3 0x18A9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x18A0 SWAP2 SWAP1 PUSH3 0x25F4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x2 DUP2 GT ISZERO PUSH3 0x18EE JUMPI PUSH3 0x18ED PUSH3 0x1B71 JUMP JUMPDEST JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x192D DUP3 PUSH3 0x1900 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x193F DUP2 PUSH3 0x1920 JUMP JUMPDEST DUP2 EQ PUSH3 0x194B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH3 0x195F DUP2 PUSH3 0x1934 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x197F JUMPI PUSH3 0x197E PUSH3 0x18FB JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH3 0x198F DUP6 DUP3 DUP7 ADD PUSH3 0x194E JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH3 0x19A2 DUP6 DUP3 DUP7 ADD PUSH3 0x194E JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4D41494E5441494E45525F524F4C450000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x19F5 PUSH1 0xF DUP4 PUSH3 0x19AC JUMP JUMPDEST SWAP2 POP PUSH3 0x1A02 DUP3 PUSH3 0x19BD JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH3 0x1A28 DUP2 PUSH3 0x19E6 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x5452454153555245525F524F4C45000000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1A67 PUSH1 0xE DUP4 PUSH3 0x19AC JUMP JUMPDEST SWAP2 POP PUSH3 0x1A74 DUP3 PUSH3 0x1A2F JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH3 0x1A9A DUP2 PUSH3 0x1A58 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x535452415445474953545F524F4C450000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1AD9 PUSH1 0xF DUP4 PUSH3 0x19AC JUMP JUMPDEST SWAP2 POP PUSH3 0x1AE6 DUP3 PUSH3 0x1AA1 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH3 0x1B0C DUP2 PUSH3 0x1ACA JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4C69624469616D6F6E644375743A20496E636F72726563742046616365744375 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x74416374696F6E00000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1BFE PUSH1 0x27 DUP4 PUSH3 0x19AC JUMP JUMPDEST SWAP2 POP PUSH3 0x1C0B DUP3 PUSH3 0x1BA0 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH3 0x1C31 DUP2 PUSH3 0x1BEF JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1C7E DUP3 PUSH3 0x1C67 JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH3 0x1CB3 JUMPI PUSH3 0x1CB2 PUSH3 0x1C38 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x1CF5 DUP2 PUSH3 0x1920 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x3 DUP2 LT PUSH3 0x1D0F JUMPI PUSH3 0x1D0E PUSH3 0x1B71 JUMP JUMPDEST JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH3 0x1D22 DUP3 PUSH3 0x1CFB JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1D34 DUP3 PUSH3 0x1D12 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x1D46 DUP2 PUSH3 0x1D27 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x1DAF DUP2 PUSH3 0x1D78 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1DC3 DUP4 DUP4 PUSH3 0x1DA4 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1DE9 DUP3 PUSH3 0x1D4C JUMP JUMPDEST PUSH3 0x1DF5 DUP2 DUP6 PUSH3 0x1D57 JUMP JUMPDEST SWAP4 POP PUSH3 0x1E02 DUP4 PUSH3 0x1D68 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x1E39 JUMPI DUP2 MLOAD PUSH3 0x1E1D DUP9 DUP3 PUSH3 0x1DB5 JUMP JUMPDEST SWAP8 POP PUSH3 0x1E2A DUP4 PUSH3 0x1DCF JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH3 0x1E06 JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 ADD PUSH1 0x0 DUP4 ADD MLOAD PUSH3 0x1E60 PUSH1 0x0 DUP7 ADD DUP3 PUSH3 0x1CEA JUMP JUMPDEST POP PUSH1 0x20 DUP4 ADD MLOAD PUSH3 0x1E75 PUSH1 0x20 DUP7 ADD DUP3 PUSH3 0x1D3B JUMP JUMPDEST POP PUSH1 0x40 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH1 0x40 DUP7 ADD MSTORE PUSH3 0x1E8F DUP3 DUP3 PUSH3 0x1DDC JUMP JUMPDEST SWAP2 POP POP DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1EAA DUP4 DUP4 PUSH3 0x1E46 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1ECC DUP3 PUSH3 0x1CBE JUMP JUMPDEST PUSH3 0x1ED8 DUP2 DUP6 PUSH3 0x1CC9 JUMP JUMPDEST SWAP4 POP DUP4 PUSH1 0x20 DUP3 MUL DUP6 ADD PUSH3 0x1EEC DUP6 PUSH3 0x1CDA JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH3 0x1F2E JUMPI DUP5 DUP5 SUB DUP10 MSTORE DUP2 MLOAD PUSH3 0x1F0C DUP6 DUP3 PUSH3 0x1E9C JUMP JUMPDEST SWAP5 POP PUSH3 0x1F19 DUP4 PUSH3 0x1EB2 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP11 ADD SWAP10 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH3 0x1EF0 JUMP JUMPDEST POP DUP3 SWAP8 POP DUP8 SWAP6 POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x1F4B DUP2 PUSH3 0x1920 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x1F8D JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH3 0x1F70 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1FB7 DUP3 PUSH3 0x1F51 JUMP JUMPDEST PUSH3 0x1FC3 DUP2 DUP6 PUSH3 0x1F5C JUMP JUMPDEST SWAP4 POP PUSH3 0x1FD5 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH3 0x1F6D JUMP JUMPDEST PUSH3 0x1FE0 DUP2 PUSH3 0x1F99 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH3 0x2007 DUP2 DUP7 PUSH3 0x1EBF JUMP JUMPDEST SWAP1 POP PUSH3 0x2018 PUSH1 0x20 DUP4 ADD DUP6 PUSH3 0x1F40 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH3 0x202C DUP2 DUP5 PUSH3 0x1FAA JUMP JUMPDEST SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x4C69624469616D6F6E644375743A204E6F2073656C6563746F727320696E2066 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6163657420746F20637574000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x2094 PUSH1 0x2B DUP4 PUSH3 0x19AC JUMP JUMPDEST SWAP2 POP PUSH3 0x20A1 DUP3 PUSH3 0x2036 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH3 0x20C7 DUP2 PUSH3 0x2085 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4C69624469616D6F6E644375743A204164642066616365742063616E27742062 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6520616464726573732830290000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x212C PUSH1 0x2C DUP4 PUSH3 0x19AC JUMP JUMPDEST SWAP2 POP PUSH3 0x2139 DUP3 PUSH3 0x20CE JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH3 0x215F DUP2 PUSH3 0x211D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4C69624469616D6F6E644375743A2043616E2774206164642066756E6374696F PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6E207468617420616C7265616479206578697374730000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x21C4 PUSH1 0x35 DUP4 PUSH3 0x19AC JUMP JUMPDEST SWAP2 POP PUSH3 0x21D1 DUP3 PUSH3 0x2166 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH3 0x21F7 DUP2 PUSH3 0x21B5 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x2223 DUP3 PUSH3 0x21FE JUMP JUMPDEST SWAP2 POP PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH3 0x2244 JUMPI PUSH3 0x2243 PUSH3 0x1C38 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4C69624469616D6F6E644375743A2043616E2774207265706C6163652066756E PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6374696F6E20776974682073616D652066756E6374696F6E0000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x22AD PUSH1 0x38 DUP4 PUSH3 0x19AC JUMP JUMPDEST SWAP2 POP PUSH3 0x22BA DUP3 PUSH3 0x224F JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH3 0x22E0 DUP2 PUSH3 0x229E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4C69624469616D6F6E644375743A2052656D6F76652066616365742061646472 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x657373206D757374206265206164647265737328302900000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x2345 PUSH1 0x36 DUP4 PUSH3 0x19AC JUMP JUMPDEST SWAP2 POP PUSH3 0x2352 DUP3 PUSH3 0x22E7 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH3 0x2378 DUP2 PUSH3 0x2336 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x2397 DUP3 PUSH3 0x1F51 JUMP JUMPDEST PUSH3 0x23A3 DUP2 DUP6 PUSH3 0x237F JUMP JUMPDEST SWAP4 POP PUSH3 0x23B5 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH3 0x1F6D JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x23CF DUP3 DUP5 PUSH3 0x238A JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH3 0x23F1 PUSH1 0x0 DUP4 ADD DUP6 PUSH3 0x1F40 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH3 0x2405 DUP2 DUP5 PUSH3 0x1FAA JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4C69624469616D6F6E644375743A2043616E27742072656D6F76652066756E63 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x74696F6E207468617420646F65736E2774206578697374000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x246C PUSH1 0x37 DUP4 PUSH3 0x19AC JUMP JUMPDEST SWAP2 POP PUSH3 0x2479 DUP3 PUSH3 0x240E JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH3 0x249F DUP2 PUSH3 0x245D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4C69624469616D6F6E644375743A2043616E27742072656D6F766520696D6D75 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7461626C652066756E6374696F6E000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x2504 PUSH1 0x2E DUP4 PUSH3 0x19AC JUMP JUMPDEST SWAP2 POP PUSH3 0x2511 DUP3 PUSH3 0x24A6 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH3 0x2537 DUP2 PUSH3 0x24F5 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x254B DUP3 PUSH3 0x1C67 JUMP JUMPDEST SWAP2 POP PUSH3 0x2558 DUP4 PUSH3 0x1C67 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP DUP2 DUP2 GT ISZERO PUSH3 0x2573 JUMPI PUSH3 0x2572 PUSH3 0x1C38 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x25C0 DUP3 PUSH3 0x25A8 JUMP JUMPDEST PUSH3 0x25CC DUP2 DUP6 PUSH3 0x19AC JUMP JUMPDEST SWAP4 POP PUSH3 0x25DE DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH3 0x1F6D JUMP JUMPDEST PUSH3 0x25E9 DUP2 PUSH3 0x1F99 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH3 0x2610 DUP2 DUP5 PUSH3 0x25B3 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x21A5 DUP1 PUSH3 0x2628 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH2 0xB JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131C SWAP1 POP DUP1 SWAP2 POP PUSH1 0x0 DUP3 PUSH1 0x0 ADD PUSH1 0x0 DUP1 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x141 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x138 SWAP1 PUSH2 0x1693 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x162 JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x171 DUP3 DUP3 PUSH2 0x3A4 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x359 JUMPI PUSH1 0x0 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x196 JUMPI PUSH2 0x195 PUSH2 0x16B3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x1B8 JUMPI PUSH2 0x1B7 PUSH2 0x16E2 JUMP JUMPDEST JUMPDEST DUP2 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x1CB JUMPI PUSH2 0x1CA PUSH2 0x16E2 JUMP JUMPDEST JUMPDEST SUB PUSH2 0x21B JUMPI PUSH2 0x216 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1E6 JUMPI PUSH2 0x1E5 PUSH2 0x16B3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x205 JUMPI PUSH2 0x204 PUSH2 0x16B3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD PUSH2 0x487 JUMP JUMPDEST PUSH2 0x345 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x22F JUMPI PUSH2 0x22E PUSH2 0x16E2 JUMP JUMPDEST JUMPDEST DUP2 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x242 JUMPI PUSH2 0x241 PUSH2 0x16E2 JUMP JUMPDEST JUMPDEST SUB PUSH2 0x292 JUMPI PUSH2 0x28D DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x25D JUMPI PUSH2 0x25C PUSH2 0x16B3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x27C JUMPI PUSH2 0x27B PUSH2 0x16B3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD PUSH2 0x6FE JUMP JUMPDEST PUSH2 0x344 JUMP JUMPDEST PUSH1 0x2 DUP1 DUP2 GT ISZERO PUSH2 0x2A5 JUMPI PUSH2 0x2A4 PUSH2 0x16E2 JUMP JUMPDEST JUMPDEST DUP2 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x2B8 JUMPI PUSH2 0x2B7 PUSH2 0x16E2 JUMP JUMPDEST JUMPDEST SUB PUSH2 0x308 JUMPI PUSH2 0x303 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2D3 JUMPI PUSH2 0x2D2 PUSH2 0x16B3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x2F2 JUMPI PUSH2 0x2F1 PUSH2 0x16B3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD PUSH2 0x97F JUMP JUMPDEST PUSH2 0x343 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x33A SWAP1 PUSH2 0x1783 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMPDEST JUMPDEST POP DUP1 DUP1 PUSH2 0x351 SWAP1 PUSH2 0x17DC JUMP JUMPDEST SWAP2 POP POP PUSH2 0x178 JUMP JUMPDEST POP PUSH32 0x8FAA70878671CCD212D20771B795C50AF8FD3FF6CF27F4BDE57E5D4DE0AEB673 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH2 0x38D SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1B48 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH2 0x39F DUP3 DUP3 PUSH2 0xB0A JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x3AE DUP3 DUP3 PUSH2 0xC2C JUMP JUMPDEST PUSH2 0x483 JUMPI PUSH1 0x1 PUSH2 0x3BC PUSH2 0xCA0 JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD GT PUSH2 0x4CB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C2 SWAP1 PUSH2 0x1BFF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4D5 PUSH2 0xCCD JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x546 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x53D SWAP1 PUSH2 0x1C91 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 ADD PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP1 SLOAD SWAP1 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x5B3 JUMPI PUSH2 0x5B2 DUP3 DUP6 PUSH2 0xCFA JUMP JUMPDEST JUMPDEST PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x6F7 JUMPI PUSH1 0x0 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x5D4 JUMPI PUSH2 0x5D3 PUSH2 0x16B3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP5 PUSH1 0x0 ADD PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x6C8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6BF SWAP1 PUSH2 0x1D23 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x6D4 DUP6 DUP4 DUP7 DUP11 PUSH2 0xDD5 JUMP JUMPDEST DUP4 DUP1 PUSH2 0x6DF SWAP1 PUSH2 0x1D5B JUMP JUMPDEST SWAP5 POP POP POP POP DUP1 DUP1 PUSH2 0x6EF SWAP1 PUSH2 0x17DC JUMP JUMPDEST SWAP2 POP POP PUSH2 0x5B6 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD GT PUSH2 0x742 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x739 SWAP1 PUSH2 0x1BFF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x74C PUSH2 0xCCD JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x7BD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7B4 SWAP1 PUSH2 0x1C91 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 ADD PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP1 SLOAD SWAP1 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x82A JUMPI PUSH2 0x829 DUP3 DUP6 PUSH2 0xCFA JUMP JUMPDEST JUMPDEST PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x978 JUMPI PUSH1 0x0 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x84B JUMPI PUSH2 0x84A PUSH2 0x16B3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP5 PUSH1 0x0 ADD PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x93E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x935 SWAP1 PUSH2 0x1E01 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x949 DUP6 DUP3 DUP5 PUSH2 0xF82 JUMP JUMPDEST PUSH2 0x955 DUP6 DUP4 DUP7 DUP11 PUSH2 0xDD5 JUMP JUMPDEST DUP4 DUP1 PUSH2 0x960 SWAP1 PUSH2 0x1D5B JUMP JUMPDEST SWAP5 POP POP POP POP DUP1 DUP1 PUSH2 0x970 SWAP1 PUSH2 0x17DC JUMP JUMPDEST SWAP2 POP POP PUSH2 0x82D JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD GT PUSH2 0x9C3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9BA SWAP1 PUSH2 0x1BFF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x9CD PUSH2 0xCCD JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xA3E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA35 SWAP1 PUSH2 0x1E93 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0xB04 JUMPI PUSH1 0x0 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xA5F JUMPI PUSH2 0xA5E PUSH2 0x16B3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x0 ADD PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH2 0xAEF DUP5 DUP3 DUP5 PUSH2 0xF82 JUMP JUMPDEST POP POP DUP1 DUP1 PUSH2 0xAFC SWAP1 PUSH2 0x17DC JUMP JUMPDEST SWAP2 POP POP PUSH2 0xA41 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB ISZERO PUSH2 0xC28 JUMPI PUSH2 0xB61 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2124 PUSH1 0x28 SWAP2 CODECOPY PUSH2 0x15E4 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD PUSH2 0xB89 SWAP2 SWAP1 PUSH2 0x1EEF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xBC4 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xBC9 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0xC25 JUMPI PUSH1 0x0 DUP2 MLOAD GT ISZERO PUSH2 0xBE6 JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST DUP4 DUP4 PUSH1 0x40 MLOAD PUSH32 0x192105D700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC1C SWAP3 SWAP2 SWAP1 PUSH2 0x1F06 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC36 PUSH2 0xCA0 JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x4CD15452B25E815D3F9D1A3C7EDD985A178EDF5EB3461A1ACBF855517423D694 SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131C SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH2 0xD1C DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x214C PUSH1 0x24 SWAP2 CODECOPY PUSH2 0x15E4 JUMP JUMPDEST DUP2 PUSH1 0x2 ADD DUP1 SLOAD SWAP1 POP DUP3 PUSH1 0x1 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 ADD DUP2 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP POP JUMP JUMPDEST DUP2 DUP5 PUSH1 0x0 ADD PUSH1 0x0 DUP6 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP4 PUSH1 0x1 ADD PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP4 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x8 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x4 MUL SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0xE0 SHR MUL OR SWAP1 SSTORE POP DUP1 DUP5 PUSH1 0x0 ADD PUSH1 0x0 DUP6 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xFF1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xFE8 SWAP1 PUSH2 0x1FA8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x105F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1056 SWAP1 PUSH2 0x203A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x0 ADD PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP6 PUSH1 0x1 ADD PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP1 SLOAD SWAP1 POP PUSH2 0x1136 SWAP2 SWAP1 PUSH2 0x205A JUMP JUMPDEST SWAP1 POP DUP1 DUP3 EQ PUSH2 0x12CA JUMPI PUSH1 0x0 DUP6 PUSH1 0x1 ADD PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1197 JUMPI PUSH2 0x1196 PUSH2 0x16B3 JUMP JUMPDEST JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x8 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x4 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xE0 SHL SWAP1 POP DUP1 DUP7 PUSH1 0x1 ADD PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x1213 JUMPI PUSH2 0x1212 PUSH2 0x16B3 JUMP JUMPDEST JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x8 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x4 MUL PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0xE0 SHR MUL OR SWAP1 SSTORE POP DUP3 DUP7 PUSH1 0x0 ADD PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP JUMPDEST DUP5 PUSH1 0x1 ADD PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP1 SLOAD DUP1 PUSH2 0x131E JUMPI PUSH2 0x131D PUSH2 0x208E JUMP JUMPDEST JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x8 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x4 MUL PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 SSTORE SWAP1 SSTORE DUP5 PUSH1 0x0 ADD PUSH1 0x0 DUP5 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP1 DUP3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x0 DUP3 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE POP POP PUSH1 0x0 DUP2 SUB PUSH2 0x15DD JUMPI PUSH1 0x0 PUSH1 0x1 DUP7 PUSH1 0x2 ADD DUP1 SLOAD SWAP1 POP PUSH2 0x1408 SWAP2 SWAP1 PUSH2 0x205A JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 PUSH1 0x1 ADD PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 POP DUP2 DUP2 EQ PUSH2 0x1549 JUMPI PUSH1 0x0 DUP8 PUSH1 0x2 ADD DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x1472 JUMPI PUSH2 0x1471 PUSH2 0x16B3 JUMP JUMPDEST JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP1 DUP9 PUSH1 0x2 ADD DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x14B6 JUMPI PUSH2 0x14B5 PUSH2 0x16B3 JUMP JUMPDEST JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 DUP9 PUSH1 0x1 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP POP JUMPDEST DUP7 PUSH1 0x2 ADD DUP1 SLOAD DUP1 PUSH2 0x155D JUMPI PUSH2 0x155C PUSH2 0x208E JUMP JUMPDEST JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE SWAP1 SSTORE DUP7 PUSH1 0x1 ADD PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SSTORE POP POP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 EXTCODESIZE SWAP1 POP PUSH1 0x0 DUP2 GT DUP3 SWAP1 PUSH2 0x1630 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1627 SWAP2 SWAP1 PUSH2 0x2101 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4469616D6F6E643A2046756E6374696F6E20646F6573206E6F74206578697374 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x167D PUSH1 0x20 DUP4 PUSH2 0x1636 JUMP JUMPDEST SWAP2 POP PUSH2 0x1688 DUP3 PUSH2 0x1647 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x16AC DUP2 PUSH2 0x1670 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4C69624469616D6F6E644375743A20496E636F72726563742046616365744375 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x74416374696F6E00000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x176D PUSH1 0x27 DUP4 PUSH2 0x1636 JUMP JUMPDEST SWAP2 POP PUSH2 0x1778 DUP3 PUSH2 0x1711 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x179C DUP2 PUSH2 0x1760 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x17E7 DUP3 PUSH2 0x17D2 JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x1819 JUMPI PUSH2 0x1818 PUSH2 0x17A3 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x187B DUP3 PUSH2 0x1850 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x188B DUP2 PUSH2 0x1870 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x3 DUP2 LT PUSH2 0x18A2 JUMPI PUSH2 0x18A1 PUSH2 0x16E2 JUMP JUMPDEST JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH2 0x18B3 DUP3 PUSH2 0x1891 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x18C3 DUP3 PUSH2 0x18A5 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x18D3 DUP2 PUSH2 0x18B8 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x193A DUP2 PUSH2 0x1905 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x194C DUP4 DUP4 PUSH2 0x1931 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1970 DUP3 PUSH2 0x18D9 JUMP JUMPDEST PUSH2 0x197A DUP2 DUP6 PUSH2 0x18E4 JUMP JUMPDEST SWAP4 POP PUSH2 0x1985 DUP4 PUSH2 0x18F5 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x19B6 JUMPI DUP2 MLOAD PUSH2 0x199D DUP9 DUP3 PUSH2 0x1940 JUMP JUMPDEST SWAP8 POP PUSH2 0x19A8 DUP4 PUSH2 0x1958 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x1989 JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 ADD PUSH1 0x0 DUP4 ADD MLOAD PUSH2 0x19DB PUSH1 0x0 DUP7 ADD DUP3 PUSH2 0x1882 JUMP JUMPDEST POP PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x19EE PUSH1 0x20 DUP7 ADD DUP3 PUSH2 0x18CA JUMP JUMPDEST POP PUSH1 0x40 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0x1A06 DUP3 DUP3 PUSH2 0x1965 JUMP JUMPDEST SWAP2 POP POP DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A1F DUP4 DUP4 PUSH2 0x19C3 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A3F DUP3 PUSH2 0x1824 JUMP JUMPDEST PUSH2 0x1A49 DUP2 DUP6 PUSH2 0x182F JUMP JUMPDEST SWAP4 POP DUP4 PUSH1 0x20 DUP3 MUL DUP6 ADD PUSH2 0x1A5B DUP6 PUSH2 0x1840 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x1A97 JUMPI DUP5 DUP5 SUB DUP10 MSTORE DUP2 MLOAD PUSH2 0x1A78 DUP6 DUP3 PUSH2 0x1A13 JUMP JUMPDEST SWAP5 POP PUSH2 0x1A83 DUP4 PUSH2 0x1A27 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP11 ADD SWAP10 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x1A5F JUMP JUMPDEST POP DUP3 SWAP8 POP DUP8 SWAP6 POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1AB2 DUP2 PUSH2 0x1870 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1AF2 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x1AD7 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B1A DUP3 PUSH2 0x1AB8 JUMP JUMPDEST PUSH2 0x1B24 DUP2 DUP6 PUSH2 0x1AC3 JUMP JUMPDEST SWAP4 POP PUSH2 0x1B34 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1AD4 JUMP JUMPDEST PUSH2 0x1B3D DUP2 PUSH2 0x1AFE JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1B62 DUP2 DUP7 PUSH2 0x1A34 JUMP JUMPDEST SWAP1 POP PUSH2 0x1B71 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x1AA9 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x1B83 DUP2 DUP5 PUSH2 0x1B0F JUMP JUMPDEST SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x4C69624469616D6F6E644375743A204E6F2073656C6563746F727320696E2066 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6163657420746F20637574000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BE9 PUSH1 0x2B DUP4 PUSH2 0x1636 JUMP JUMPDEST SWAP2 POP PUSH2 0x1BF4 DUP3 PUSH2 0x1B8D JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1C18 DUP2 PUSH2 0x1BDC JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4C69624469616D6F6E644375743A204164642066616365742063616E27742062 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6520616464726573732830290000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C7B PUSH1 0x2C DUP4 PUSH2 0x1636 JUMP JUMPDEST SWAP2 POP PUSH2 0x1C86 DUP3 PUSH2 0x1C1F JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1CAA DUP2 PUSH2 0x1C6E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4C69624469616D6F6E644375743A2043616E2774206164642066756E6374696F PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6E207468617420616C7265616479206578697374730000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D0D PUSH1 0x35 DUP4 PUSH2 0x1636 JUMP JUMPDEST SWAP2 POP PUSH2 0x1D18 DUP3 PUSH2 0x1CB1 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1D3C DUP2 PUSH2 0x1D00 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D66 DUP3 PUSH2 0x1D43 JUMP JUMPDEST SWAP2 POP PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x1D84 JUMPI PUSH2 0x1D83 PUSH2 0x17A3 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4C69624469616D6F6E644375743A2043616E2774207265706C6163652066756E PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6374696F6E20776974682073616D652066756E6374696F6E0000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1DEB PUSH1 0x38 DUP4 PUSH2 0x1636 JUMP JUMPDEST SWAP2 POP PUSH2 0x1DF6 DUP3 PUSH2 0x1D8F JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1E1A DUP2 PUSH2 0x1DDE JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4C69624469616D6F6E644375743A2052656D6F76652066616365742061646472 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x657373206D757374206265206164647265737328302900000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E7D PUSH1 0x36 DUP4 PUSH2 0x1636 JUMP JUMPDEST SWAP2 POP PUSH2 0x1E88 DUP3 PUSH2 0x1E21 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1EAC DUP2 PUSH2 0x1E70 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1EC9 DUP3 PUSH2 0x1AB8 JUMP JUMPDEST PUSH2 0x1ED3 DUP2 DUP6 PUSH2 0x1EB3 JUMP JUMPDEST SWAP4 POP PUSH2 0x1EE3 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1AD4 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1EFB DUP3 DUP5 PUSH2 0x1EBE JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x1F1B PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x1AA9 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x1F2D DUP2 DUP5 PUSH2 0x1B0F JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4C69624469616D6F6E644375743A2043616E27742072656D6F76652066756E63 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x74696F6E207468617420646F65736E2774206578697374000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F92 PUSH1 0x37 DUP4 PUSH2 0x1636 JUMP JUMPDEST SWAP2 POP PUSH2 0x1F9D DUP3 PUSH2 0x1F36 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1FC1 DUP2 PUSH2 0x1F85 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4C69624469616D6F6E644375743A2043616E27742072656D6F766520696D6D75 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7461626C652066756E6374696F6E000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2024 PUSH1 0x2E DUP4 PUSH2 0x1636 JUMP JUMPDEST SWAP2 POP PUSH2 0x202F DUP3 PUSH2 0x1FC8 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2053 DUP2 PUSH2 0x2017 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2065 DUP3 PUSH2 0x17D2 JUMP JUMPDEST SWAP2 POP PUSH2 0x2070 DUP4 PUSH2 0x17D2 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP DUP2 DUP2 GT ISZERO PUSH2 0x2088 JUMPI PUSH2 0x2087 PUSH2 0x17A3 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x20D3 DUP3 PUSH2 0x20BD JUMP JUMPDEST PUSH2 0x20DD DUP2 DUP6 PUSH2 0x1636 JUMP JUMPDEST SWAP4 POP PUSH2 0x20ED DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1AD4 JUMP JUMPDEST PUSH2 0x20F6 DUP2 PUSH2 0x1AFE JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x211B DUP2 DUP5 PUSH2 0x20C8 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP INVALID 0x4C PUSH10 0x624469616D6F6E644375 PUSH21 0x3A205F696E6974206164647265737320686173206E PUSH16 0x20636F64654C69624469616D6F6E6443 PUSH22 0x743A204E657720666163657420686173206E6F20636F PUSH5 0x65A2646970 PUSH7 0x73582212208B3B BYTE EXTCODESIZE MSTORE8 0xAC 0xB7 MLOAD 0x5C 0xA9 PUSH31 0xAE4D2B5B80BB4C46A44C8880C0968A1955E7FE61DB64736F6C634300081200 CALLER 0x4C PUSH10 0x624469616D6F6E644375 PUSH21 0x3A205F696E6974206164647265737320686173206E PUSH16 0x20636F64654C69624469616D6F6E6443 PUSH22 0x743A204E657720666163657420686173206E6F20636F PUSH5 0x6500000000 ","sourceMap":"242:2351:22:-:0;;;265:1045;;;;;;;;;;;;;;;;;;;;;:::i;:::-;345:114;277:4:48;386:35:22;;435:14;345:27;;;;;:114;;:::i;:::-;469:111;332:29:48;;;;;;;:::i;:::-;;;;;;;;;;;;;322:40;;;;;;556:14:22;469:27;;;;;:111;;:::i;:::-;590:110;412:28:48;;;;;;;:::i;:::-;;;;;;;;;;;;;402:39;;;;;;676:14:22;590:27;;;;;:110;;:::i;:::-;710:111;492:29:48;;;;;;;:::i;:::-;;;;;;;;;;;;;482:40;;;;;;797:14:22;710:27;;;;;:111;;:::i;:::-;905:26;954:1;934:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;905:51;;966:33;1015:1;1002:15;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;966:51;;1050:24;;;1027:17;1045:1;1027:20;;;;;;;;:::i;:::-;;;;;;;:47;;;;;;;;;;;;;1093:164;;;;;;;;1135:16;1093:164;;;;;;1173:23;1093:164;;;;;;;;:::i;:::-;;;;;;1229:17;1093:164;;;1084:3;1088:1;1084:6;;;;;;;;:::i;:::-;;;;;;;:173;;;;1267:36;1283:3;1296:1;1267:36;;;;;;;;;;;;:15;;;;;:36;;:::i;:::-;335:975;;265:1045;;242:2351;;3259:106:48;3331:27;3342:5;3349:8;3331:10;;;:27;;:::i;:::-;3259:106;;:::o;1836:1250:49:-;1992:18;1974:1001;2037:11;:18;2024:10;:31;1974:1001;;;2106:26;2135:11;2147:10;2135:23;;;;;;;;:::i;:::-;;;;;;;;:30;;;2106:59;;2193:23;2183:33;;;;;;;;:::i;:::-;;:6;:33;;;;;;;;:::i;:::-;;;2179:786;;2236:152;2271:11;2283:10;2271:23;;;;;;;;:::i;:::-;;;;;;;;:36;;;2329:11;2341:10;2329:23;;;;;;;;:::i;:::-;;;;;;;;:41;;;2236:13;;;:152;;:::i;:::-;2179:786;;;2423:27;2413:37;;;;;;;;:::i;:::-;;:6;:37;;;;;;;;:::i;:::-;;;2409:556;;2470:156;2509:11;2521:10;2509:23;;;;;;;;:::i;:::-;;;;;;;;:36;;;2567:11;2579:10;2567:23;;;;;;;;:::i;:::-;;;;;;;;:41;;;2470:17;;;:156;;:::i;:::-;2409:556;;;2661:26;2651:36;;;;;;;;:::i;:::-;;:6;:36;;;;;;;;:::i;:::-;;;2647:318;;2707:155;2745:11;2757:10;2745:23;;;;;;;;:::i;:::-;;;;;;;;:36;;;2803:11;2815:10;2803:23;;;;;;;;:::i;:::-;;;;;;;;:41;;;2707:16;;;:155;;:::i;:::-;2647:318;;;2901:49;;;;;;;;;;:::i;:::-;;;;;;;;2647:318;2409:556;2179:786;2092:883;2069:12;;;;;:::i;:::-;;;;1974:1001;;;;2989:41;3000:11;3013:5;3020:9;2989:41;;;;;;;;:::i;:::-;;;;;;;;3040:39;3062:5;3069:9;3040:21;;;:39;;:::i;:::-;1836:1250;;;:::o;2611:255:48:-;2688:25;2697:5;2704:8;2688;;;:25;;:::i;:::-;2683:177;;2786:4;2729:23;:21;;;:23;;:::i;:::-;:29;;:36;2759:5;2729:36;;;;;;;;;;;:44;;:54;2774:8;2729:54;;;;;;;;;;;;;;;;:61;;;;;;;;;;;;;;;;;;2838:10;2809:40;;2828:8;2809:40;;2821:5;2809:40;;;;;;;;;;2683:177;2611:255;;:::o;3092:1306:49:-;3264:1;3236:18;:25;:29;3215:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;3344:24;3371:17;:15;;;:17;;:::i;:::-;3344:44;;3444:1;3419:27;;:13;:27;;;3398:118;;;;;;;;;;;;:::i;:::-;;;;;;;;;3526:23;3572:1;:24;;:39;3597:13;3572:39;;;;;;;;;;;;;;;:57;;:64;;;;3526:120;;3734:1;3714:16;:21;;;3710:79;;3751:27;3761:1;3764:13;3751:9;;;:27;;:::i;:::-;3710:79;3816:21;3798:594;3867:18;:25;3851:13;:41;3798:594;;;3946:15;3964:18;3983:13;3964:33;;;;;;;;:::i;:::-;;;;;;;;3946:51;;4011:23;4037:1;:45;;:55;4083:8;4037:55;;;;;;;;;;;;;;;;;:85;;;;;;;;;;;;4011:111;;4188:1;4161:29;;:15;:29;;;4136:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;4291:58;4304:1;4307:8;4317:16;4335:13;4291:12;;;:58;;:::i;:::-;4363:18;;;;;:::i;:::-;;;;3932:460;;3906:15;;;;;:::i;:::-;;;;3798:594;;;;3205:1193;;3092:1306;;:::o;4404:1375::-;4580:1;4552:18;:25;:29;4531:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;4660:24;4687:17;:15;;;:17;;:::i;:::-;4660:44;;4760:1;4735:27;;:13;:27;;;4714:118;;;;;;;;;;;;:::i;:::-;;;;;;;;;4842:23;4888:1;:24;;:39;4913:13;4888:39;;;;;;;;;;;;;;;:57;;:64;;;;4842:120;;5050:1;5030:16;:21;;;5026:79;;5067:27;5077:1;5080:13;5067:9;;;:27;;:::i;:::-;5026:79;5132:21;5114:659;5183:18;:25;5167:13;:41;5114:659;;;5262:15;5280:18;5299:13;5280:33;;;;;;;;:::i;:::-;;;;;;;;5262:51;;5327:23;5353:1;:45;;:55;5399:8;5353:55;;;;;;;;;;;;;;;;;:85;;;;;;;;;;;;5327:111;;5496:13;5477:32;;:15;:32;;;5452:147;;;;;;;;;;;;:::i;:::-;;;;;;;;;5613:45;5629:1;5632:15;5649:8;5613:15;;;:45;;:::i;:::-;5672:58;5685:1;5688:8;5698:16;5716:13;5672:12;;;:58;;:::i;:::-;5744:18;;;;;:::i;:::-;;;;5248:525;;5222:15;;;;;:::i;:::-;;;;5114:659;;;;4521:1258;;4404:1375;;:::o;5785:912::-;5960:1;5932:18;:25;:29;5911:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;6040:24;6067:17;:15;;;:17;;:::i;:::-;6040:44;;6205:1;6180:27;;:13;:27;;;6159:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;6315:21;6297:394;6366:18;:25;6350:13;:41;6297:394;;;6445:15;6463:18;6482:13;6463:33;;;;;;;;:::i;:::-;;;;;;;;6445:51;;6510:23;6536:1;:45;;:55;6582:8;6536:55;;;;;;;;;;;;;;;;;:85;;;;;;;;;;;;6510:111;;6635:45;6651:1;6654:15;6671:8;6635:15;;;:45;;:::i;:::-;6431:260;;6405:15;;;;;:::i;:::-;;;;6297:394;;;;5901:796;5785:912;;:::o;10140:792::-;10272:1;10255:19;;:5;:19;;;10251:56;10290:7;10251:56;10316:108;10353:5;10316:108;;;;;;;;;;;;;;;;;:23;;;:108;;:::i;:::-;10435:12;10449:18;10471:5;:18;;10490:9;10471:29;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10434:66;;;;10515:7;10510:416;;10557:1;10542:5;:12;:16;10538:378;;;10724:5;10718:12;10774:15;10766:5;10762:2;10758:14;10751:39;10538:378;10884:5;10891:9;10853:48;;;;;;;;;;;;:::i;:::-;;;;;;;;10510:416;10241:691;;10140:792;;;:::o;1134:180:48:-;1230:4;1253:23;:21;;;:23;;:::i;:::-;:29;;:36;1283:5;1253:36;;;;;;;;;;;:44;;:54;1298:8;1253:54;;;;;;;;;;;;;;;;;;;;;;;;;1246:61;;1134:180;;;;:::o;791:242::-;871:30;917:16;203:29;917:49;;1009:8;999:18;;985:42;791:242;:::o;1445:224:49:-;1519:24;1559:16;443:45;1559:43;;1645:8;1635:18;;1621:42;1445:224;:::o;6703:396::-;6812:112;6849:13;6812:112;;;;;;;;;;;;;;;;;:23;;;:112;;:::i;:::-;6997:1;:29;;:49;;;;6934:1;:24;;:39;6959:13;6934:39;;;;;;;;;;;;;;;:60;;:112;;;;7056:1;:16;;7078:13;7056:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6703:396;;:::o;7105:472::-;7370:17;7277:1;:41;;:52;7319:9;7277:52;;;;;;;;;;;;;;;;;:90;;;:110;;;;;;;;;;;;;;;;;;7397:1;:24;;:39;7422:13;7397:39;;;;;;;;;;;;;;;:57;;7473:9;7397:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7557:13;7502:1;:28;;:39;7531:9;7502:39;;;;;;;;;;;;;;;;;:52;;;:68;;;;;;;;;;;;;;;;;;7105:472;;;;:::o;7583:2551::-;7770:1;7745:27;;:13;:27;;;7724:129;;;;;;;;;;;;:::i;:::-;;;;;;;;;7986:4;7961:30;;:13;:30;;;7940:123;;;;;;;;;;;;:::i;:::-;;;;;;;;;8147:24;8174:1;:41;;:52;8216:9;8174:52;;;;;;;;;;;;;;;;;:90;;;;;;;;;;;;8147:117;;;;8274:28;8411:1;8305;:37;;:52;8343:13;8305:52;;;;;;;;;;;;;;;:83;;:103;;;;:107;;;;:::i;:::-;8274:138;;8514:20;8494:16;:40;8490:490;;8550:19;8572:1;:41;;:56;8614:13;8572:56;;;;;;;;;;;;;;;:91;;8664:20;8572:113;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8550:135;;8815:12;8699:1;:24;;:39;8724:13;8699:39;;;;;;;;;;;;;;;:57;;8778:16;8699:113;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:128;;;;;;;;;;;;;;;;;;8952:16;8841:1;:45;;:59;8887:12;8841:59;;;;;;;;;;;;;;;;;:101;;;:128;;;;;;;;;;;;;;;;;;8536:444;8490:490;9025:1;:24;;:39;9050:13;9025:39;;;;;;;;;;;;;;;:57;;:63;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9105:1;:28;;:39;9134:9;9105:39;;;;;;;;;;;;;;;;;;9098:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9263:1;9239:20;:25;9235:893;;9371:32;9432:1;9406;:16;;:23;;;;:27;;;;:::i;:::-;9371:62;;9447:28;9478:1;:41;;:56;9520:13;9478:56;;;;;;;;;;;;;;;:94;;;9447:125;;9614:24;9590:20;:48;9586:415;;9658:24;9685:1;:16;;9723:24;9685:80;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9658:107;;9824:16;9783:1;:16;;9800:20;9783:38;;;;;;;;:::i;:::-;;;;;;;;;;:57;;;;;;;;;;;;;;;;;;9966:20;9858:1;:45;;:63;9904:16;9858:63;;;;;;;;;;;;;;;:105;;:128;;;;9640:361;9586:415;10014:1;:16;;:22;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;10057:1;:24;;:39;10082:13;10057:39;;;;;;;;;;;;;;;:60;;10050:67;;;9266:862;;9235:893;7714:2420;;7583:2551;;;:::o;10938:284::-;11065:20;11146:9;11134:22;11118:38;;11198:1;11183:12;:16;11201:13;11175:40;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;11055:167;10938:284;;:::o;242:2351:22:-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::o;88:117:61:-;197:1;194;187:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:143::-;753:5;784:6;778:13;769:22;;800:33;827:5;800:33;:::i;:::-;696:143;;;;:::o;845:507::-;924:6;932;981:2;969:9;960:7;956:23;952:32;949:119;;;987:79;;:::i;:::-;949:119;1107:1;1132:64;1188:7;1179:6;1168:9;1164:22;1132:64;:::i;:::-;1122:74;;1078:128;1245:2;1271:64;1327:7;1318:6;1307:9;1303:22;1271:64;:::i;:::-;1261:74;;1216:129;845:507;;;;;:::o;1358:169::-;1442:11;1476:6;1471:3;1464:19;1516:4;1511:3;1507:14;1492:29;;1358:169;;;;:::o;1533:165::-;1673:17;1669:1;1661:6;1657:14;1650:41;1533:165;:::o;1704:366::-;1846:3;1867:67;1931:2;1926:3;1867:67;:::i;:::-;1860:74;;1943:93;2032:3;1943:93;:::i;:::-;2061:2;2056:3;2052:12;2045:19;;1704:366;;;:::o;2076:419::-;2242:4;2280:2;2269:9;2265:18;2257:26;;2329:9;2323:4;2319:20;2315:1;2304:9;2300:17;2293:47;2357:131;2483:4;2357:131;:::i;:::-;2349:139;;2076:419;;;:::o;2501:164::-;2641:16;2637:1;2629:6;2625:14;2618:40;2501:164;:::o;2671:366::-;2813:3;2834:67;2898:2;2893:3;2834:67;:::i;:::-;2827:74;;2910:93;2999:3;2910:93;:::i;:::-;3028:2;3023:3;3019:12;3012:19;;2671:366;;;:::o;3043:419::-;3209:4;3247:2;3236:9;3232:18;3224:26;;3296:9;3290:4;3286:20;3282:1;3271:9;3267:17;3260:47;3324:131;3450:4;3324:131;:::i;:::-;3316:139;;3043:419;;;:::o;3468:165::-;3608:17;3604:1;3596:6;3592:14;3585:41;3468:165;:::o;3639:366::-;3781:3;3802:67;3866:2;3861:3;3802:67;:::i;:::-;3795:74;;3878:93;3967:3;3878:93;:::i;:::-;3996:2;3991:3;3987:12;3980:19;;3639:366;;;:::o;4011:419::-;4177:4;4215:2;4204:9;4200:18;4192:26;;4264:9;4258:4;4254:20;4250:1;4239:9;4235:17;4228:47;4292:131;4418:4;4292:131;:::i;:::-;4284:139;;4011:419;;;:::o;4436:180::-;4484:77;4481:1;4474:88;4581:4;4578:1;4571:15;4605:4;4602:1;4595:15;4622:180;4670:77;4667:1;4660:88;4767:4;4764:1;4757:15;4791:4;4788:1;4781:15;4808:180;4856:77;4853:1;4846:88;4953:4;4950:1;4943:15;4977:4;4974:1;4967:15;4994:226;5134:34;5130:1;5122:6;5118:14;5111:58;5203:9;5198:2;5190:6;5186:15;5179:34;4994:226;:::o;5226:366::-;5368:3;5389:67;5453:2;5448:3;5389:67;:::i;:::-;5382:74;;5465:93;5554:3;5465:93;:::i;:::-;5583:2;5578:3;5574:12;5567:19;;5226:366;;;:::o;5598:419::-;5764:4;5802:2;5791:9;5787:18;5779:26;;5851:9;5845:4;5841:20;5837:1;5826:9;5822:17;5815:47;5879:131;6005:4;5879:131;:::i;:::-;5871:139;;5598:419;;;:::o;6023:180::-;6071:77;6068:1;6061:88;6168:4;6165:1;6158:15;6192:4;6189:1;6182:15;6209:77;6246:7;6275:5;6264:16;;6209:77;;;:::o;6292:233::-;6331:3;6354:24;6372:5;6354:24;:::i;:::-;6345:33;;6400:66;6393:5;6390:77;6387:103;;6470:18;;:::i;:::-;6387:103;6517:1;6510:5;6506:13;6499:20;;6292:233;;;:::o;6531:141::-;6625:6;6659:5;6653:12;6643:22;;6531:141;;;:::o;6678:211::-;6804:11;6838:6;6833:3;6826:19;6878:4;6873:3;6869:14;6854:29;;6678:211;;;;:::o;6895:159::-;6989:4;7012:3;7004:11;;7042:4;7037:3;7033:14;7025:22;;6895:159;;;:::o;7060:108::-;7137:24;7155:5;7137:24;:::i;:::-;7132:3;7125:37;7060:108;;:::o;7174:125::-;7267:1;7260:5;7257:12;7247:46;;7273:18;;:::i;:::-;7247:46;7174:125;:::o;7305:151::-;7362:7;7391:5;7380:16;;7397:53;7444:5;7397:53;:::i;:::-;7305:151;;;:::o;7462:::-;7530:9;7563:44;7601:5;7563:44;:::i;:::-;7550:57;;7462:151;;;:::o;7619:157::-;7714:55;7763:5;7714:55;:::i;:::-;7709:3;7702:68;7619:157;;:::o;7782:113::-;7848:6;7882:5;7876:12;7866:22;;7782:113;;;:::o;7901:173::-;7989:11;8023:6;8018:3;8011:19;8063:4;8058:3;8054:14;8039:29;;7901:173;;;;:::o;8080:131::-;8146:4;8169:3;8161:11;;8199:4;8194:3;8190:14;8182:22;;8080:131;;;:::o;8217:149::-;8253:7;8293:66;8286:5;8282:78;8271:89;;8217:149;;;:::o;8372:105::-;8447:23;8464:5;8447:23;:::i;:::-;8442:3;8435:36;8372:105;;:::o;8483:175::-;8550:10;8571:44;8611:3;8603:6;8571:44;:::i;:::-;8647:4;8642:3;8638:14;8624:28;;8483:175;;;;:::o;8664:112::-;8733:4;8765;8760:3;8756:14;8748:22;;8664:112;;;:::o;8810:704::-;8917:3;8946:53;8993:5;8946:53;:::i;:::-;9015:75;9083:6;9078:3;9015:75;:::i;:::-;9008:82;;9114:55;9163:5;9114:55;:::i;:::-;9192:7;9223:1;9208:281;9233:6;9230:1;9227:13;9208:281;;;9309:6;9303:13;9336:61;9393:3;9378:13;9336:61;:::i;:::-;9329:68;;9420:59;9472:6;9420:59;:::i;:::-;9410:69;;9268:221;9255:1;9252;9248:9;9243:14;;9208:281;;;9212:14;9505:3;9498:10;;8922:592;;;8810:704;;;;:::o;9572:843::-;9685:3;9721:4;9716:3;9712:14;9816:4;9809:5;9805:16;9799:23;9835:63;9892:4;9887:3;9883:14;9869:12;9835:63;:::i;:::-;9736:172;9992:4;9985:5;9981:16;9975:23;10011:81;10086:4;10081:3;10077:14;10063:12;10011:81;:::i;:::-;9918:184;10197:4;10190:5;10186:16;10180:23;10250:3;10244:4;10240:14;10233:4;10228:3;10224:14;10217:38;10276:101;10372:4;10358:12;10276:101;:::i;:::-;10268:109;;10112:276;10405:4;10398:11;;9690:725;9572:843;;;;:::o;10421:264::-;10544:10;10579:100;10675:3;10667:6;10579:100;:::i;:::-;10565:114;;10421:264;;;;:::o;10691:140::-;10788:4;10820;10815:3;10811:14;10803:22;;10691:140;;;:::o;10893:1127::-;11066:3;11095:81;11170:5;11095:81;:::i;:::-;11192:113;11298:6;11293:3;11192:113;:::i;:::-;11185:120;;11331:3;11376:4;11368:6;11364:17;11359:3;11355:27;11406:83;11483:5;11406:83;:::i;:::-;11512:7;11543:1;11528:447;11553:6;11550:1;11547:13;11528:447;;;11624:9;11618:4;11614:20;11609:3;11602:33;11675:6;11669:13;11703:118;11816:4;11801:13;11703:118;:::i;:::-;11695:126;;11844:87;11924:6;11844:87;:::i;:::-;11834:97;;11960:4;11955:3;11951:14;11944:21;;11588:387;11575:1;11572;11568:9;11563:14;;11528:447;;;11532:14;11991:4;11984:11;;12011:3;12004:10;;11071:949;;;;;10893:1127;;;;:::o;12026:118::-;12113:24;12131:5;12113:24;:::i;:::-;12108:3;12101:37;12026:118;;:::o;12150:98::-;12201:6;12235:5;12229:12;12219:22;;12150:98;;;:::o;12254:168::-;12337:11;12371:6;12366:3;12359:19;12411:4;12406:3;12402:14;12387:29;;12254:168;;;;:::o;12428:246::-;12509:1;12519:113;12533:6;12530:1;12527:13;12519:113;;;12618:1;12613:3;12609:11;12603:18;12599:1;12594:3;12590:11;12583:39;12555:2;12552:1;12548:10;12543:15;;12519:113;;;12666:1;12657:6;12652:3;12648:16;12641:27;12490:184;12428:246;;;:::o;12680:102::-;12721:6;12772:2;12768:7;12763:2;12756:5;12752:14;12748:28;12738:38;;12680:102;;;:::o;12788:373::-;12874:3;12902:38;12934:5;12902:38;:::i;:::-;12956:70;13019:6;13014:3;12956:70;:::i;:::-;12949:77;;13035:65;13093:6;13088:3;13081:4;13074:5;13070:16;13035:65;:::i;:::-;13125:29;13147:6;13125:29;:::i;:::-;13120:3;13116:39;13109:46;;12878:283;12788:373;;;;:::o;13167:788::-;13438:4;13476:2;13465:9;13461:18;13453:26;;13525:9;13519:4;13515:20;13511:1;13500:9;13496:17;13489:47;13553:162;13710:4;13701:6;13553:162;:::i;:::-;13545:170;;13725:72;13793:2;13782:9;13778:18;13769:6;13725:72;:::i;:::-;13844:9;13838:4;13834:20;13829:2;13818:9;13814:18;13807:48;13872:76;13943:4;13934:6;13872:76;:::i;:::-;13864:84;;13167:788;;;;;;:::o;13961:230::-;14101:34;14097:1;14089:6;14085:14;14078:58;14170:13;14165:2;14157:6;14153:15;14146:38;13961:230;:::o;14197:366::-;14339:3;14360:67;14424:2;14419:3;14360:67;:::i;:::-;14353:74;;14436:93;14525:3;14436:93;:::i;:::-;14554:2;14549:3;14545:12;14538:19;;14197:366;;;:::o;14569:419::-;14735:4;14773:2;14762:9;14758:18;14750:26;;14822:9;14816:4;14812:20;14808:1;14797:9;14793:17;14786:47;14850:131;14976:4;14850:131;:::i;:::-;14842:139;;14569:419;;;:::o;14994:231::-;15134:34;15130:1;15122:6;15118:14;15111:58;15203:14;15198:2;15190:6;15186:15;15179:39;14994:231;:::o;15231:366::-;15373:3;15394:67;15458:2;15453:3;15394:67;:::i;:::-;15387:74;;15470:93;15559:3;15470:93;:::i;:::-;15588:2;15583:3;15579:12;15572:19;;15231:366;;;:::o;15603:419::-;15769:4;15807:2;15796:9;15792:18;15784:26;;15856:9;15850:4;15846:20;15842:1;15831:9;15827:17;15820:47;15884:131;16010:4;15884:131;:::i;:::-;15876:139;;15603:419;;;:::o;16028:240::-;16168:34;16164:1;16156:6;16152:14;16145:58;16237:23;16232:2;16224:6;16220:15;16213:48;16028:240;:::o;16274:366::-;16416:3;16437:67;16501:2;16496:3;16437:67;:::i;:::-;16430:74;;16513:93;16602:3;16513:93;:::i;:::-;16631:2;16626:3;16622:12;16615:19;;16274:366;;;:::o;16646:419::-;16812:4;16850:2;16839:9;16835:18;16827:26;;16899:9;16893:4;16889:20;16885:1;16874:9;16870:17;16863:47;16927:131;17053:4;16927:131;:::i;:::-;16919:139;;16646:419;;;:::o;17071:109::-;17107:7;17147:26;17140:5;17136:38;17125:49;;17071:109;;;:::o;17186:191::-;17224:3;17247:23;17264:5;17247:23;:::i;:::-;17238:32;;17292:26;17285:5;17282:37;17279:63;;17322:18;;:::i;:::-;17279:63;17369:1;17362:5;17358:13;17351:20;;17186:191;;;:::o;17383:243::-;17523:34;17519:1;17511:6;17507:14;17500:58;17592:26;17587:2;17579:6;17575:15;17568:51;17383:243;:::o;17632:366::-;17774:3;17795:67;17859:2;17854:3;17795:67;:::i;:::-;17788:74;;17871:93;17960:3;17871:93;:::i;:::-;17989:2;17984:3;17980:12;17973:19;;17632:366;;;:::o;18004:419::-;18170:4;18208:2;18197:9;18193:18;18185:26;;18257:9;18251:4;18247:20;18243:1;18232:9;18228:17;18221:47;18285:131;18411:4;18285:131;:::i;:::-;18277:139;;18004:419;;;:::o;18429:241::-;18569:34;18565:1;18557:6;18553:14;18546:58;18638:24;18633:2;18625:6;18621:15;18614:49;18429:241;:::o;18676:366::-;18818:3;18839:67;18903:2;18898:3;18839:67;:::i;:::-;18832:74;;18915:93;19004:3;18915:93;:::i;:::-;19033:2;19028:3;19024:12;19017:19;;18676:366;;;:::o;19048:419::-;19214:4;19252:2;19241:9;19237:18;19229:26;;19301:9;19295:4;19291:20;19287:1;19276:9;19272:17;19265:47;19329:131;19455:4;19329:131;:::i;:::-;19321:139;;19048:419;;;:::o;19473:147::-;19574:11;19611:3;19596:18;;19473:147;;;;:::o;19626:386::-;19730:3;19758:38;19790:5;19758:38;:::i;:::-;19812:88;19893:6;19888:3;19812:88;:::i;:::-;19805:95;;19909:65;19967:6;19962:3;19955:4;19948:5;19944:16;19909:65;:::i;:::-;19999:6;19994:3;19990:16;19983:23;;19734:278;19626:386;;;;:::o;20018:271::-;20148:3;20170:93;20259:3;20250:6;20170:93;:::i;:::-;20163:100;;20280:3;20273:10;;20018:271;;;;:::o;20295:419::-;20434:4;20472:2;20461:9;20457:18;20449:26;;20485:71;20553:1;20542:9;20538:17;20529:6;20485:71;:::i;:::-;20603:9;20597:4;20593:20;20588:2;20577:9;20573:18;20566:48;20631:76;20702:4;20693:6;20631:76;:::i;:::-;20623:84;;20295:419;;;;;:::o;20720:242::-;20860:34;20856:1;20848:6;20844:14;20837:58;20929:25;20924:2;20916:6;20912:15;20905:50;20720:242;:::o;20968:366::-;21110:3;21131:67;21195:2;21190:3;21131:67;:::i;:::-;21124:74;;21207:93;21296:3;21207:93;:::i;:::-;21325:2;21320:3;21316:12;21309:19;;20968:366;;;:::o;21340:419::-;21506:4;21544:2;21533:9;21529:18;21521:26;;21593:9;21587:4;21583:20;21579:1;21568:9;21564:17;21557:47;21621:131;21747:4;21621:131;:::i;:::-;21613:139;;21340:419;;;:::o;21765:233::-;21905:34;21901:1;21893:6;21889:14;21882:58;21974:16;21969:2;21961:6;21957:15;21950:41;21765:233;:::o;22004:366::-;22146:3;22167:67;22231:2;22226:3;22167:67;:::i;:::-;22160:74;;22243:93;22332:3;22243:93;:::i;:::-;22361:2;22356:3;22352:12;22345:19;;22004:366;;;:::o;22376:419::-;22542:4;22580:2;22569:9;22565:18;22557:26;;22629:9;22623:4;22619:20;22615:1;22604:9;22600:17;22593:47;22657:131;22783:4;22657:131;:::i;:::-;22649:139;;22376:419;;;:::o;22801:194::-;22841:4;22861:20;22879:1;22861:20;:::i;:::-;22856:25;;22895:20;22913:1;22895:20;:::i;:::-;22890:25;;22939:1;22936;22932:9;22924:17;;22963:1;22957:4;22954:11;22951:37;;;22968:18;;:::i;:::-;22951:37;22801:194;;;;:::o;23001:180::-;23049:77;23046:1;23039:88;23146:4;23143:1;23136:15;23170:4;23167:1;23160:15;23187:99;23239:6;23273:5;23267:12;23257:22;;23187:99;;;:::o;23292:377::-;23380:3;23408:39;23441:5;23408:39;:::i;:::-;23463:71;23527:6;23522:3;23463:71;:::i;:::-;23456:78;;23543:65;23601:6;23596:3;23589:4;23582:5;23578:16;23543:65;:::i;:::-;23633:29;23655:6;23633:29;:::i;:::-;23628:3;23624:39;23617:46;;23384:285;23292:377;;;;:::o;23675:313::-;23788:4;23826:2;23815:9;23811:18;23803:26;;23875:9;23869:4;23865:20;23861:1;23850:9;23846:17;23839:47;23903:78;23976:4;23967:6;23903:78;:::i;:::-;23895:86;;23675:313;;;;:::o;242:2351:22:-;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_8256":{"entryPoint":null,"id":8256,"parameterSlots":0,"returnSlots":0},"@_8260":{"entryPoint":null,"id":8260,"parameterSlots":0,"returnSlots":0},"@_addFacet_15952":{"entryPoint":3322,"id":15952,"parameterSlots":2,"returnSlots":0},"@_addFunction_15993":{"entryPoint":3541,"id":15993,"parameterSlots":4,"returnSlots":0},"@_addFunctions_15750":{"entryPoint":1159,"id":15750,"parameterSlots":2,"returnSlots":0},"@_cut_15649":{"entryPoint":373,"id":15649,"parameterSlots":3,"returnSlots":0},"@_grantRole_15425":{"entryPoint":932,"id":15425,"parameterSlots":2,"returnSlots":0},"@_hasRole_15278":{"entryPoint":3116,"id":15278,"parameterSlots":2,"returnSlots":1},"@_initializeDiamondCut_16208":{"entryPoint":2826,"id":16208,"parameterSlots":2,"returnSlots":0},"@_removeFunction_16160":{"entryPoint":3970,"id":16160,"parameterSlots":3,"returnSlots":0},"@_removeFunctions_15919":{"entryPoint":2431,"id":15919,"parameterSlots":2,"returnSlots":0},"@_replaceFunctions_15854":{"entryPoint":1790,"id":15854,"parameterSlots":2,"returnSlots":0},"@_requireHasContractCode_16227":{"entryPoint":5604,"id":16227,"parameterSlots":2,"returnSlots":0},"@_setupRole_15478":{"entryPoint":359,"id":15478,"parameterSlots":2,"returnSlots":0},"@_storageAccessControl_15249":{"entryPoint":3232,"id":15249,"parameterSlots":0,"returnSlots":1},"@_storageDiamond_15535":{"entryPoint":3277,"id":15535,"parameterSlots":0,"returnSlots":1},"abi_encodeUpdatedPos_t_bytes4_to_t_bytes4":{"entryPoint":6464,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_t_struct$_FacetCut_$11817_memory_ptr_to_t_struct$_FacetCut_$11817_memory_ptr":{"entryPoint":6675,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_address_to_t_address":{"entryPoint":6274,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_address_to_t_address_fromStack":{"entryPoint":6825,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_array$_t_bytes4_$dyn_memory_ptr_to_t_array$_t_bytes4_$dyn_memory_ptr":{"entryPoint":6501,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_fromStack":{"entryPoint":6708,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_bytes4_to_t_bytes4":{"entryPoint":6449,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack":{"entryPoint":6927,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":7870,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_enum$_FacetCutAction_$11808_to_t_uint8":{"entryPoint":6346,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack":{"entryPoint":8392,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_stringliteral_1ffc682bcfedefd5e93ba9ed0c2d1bc0b18319886e3b4bd28a03a3d3729f85c0_to_t_string_memory_ptr_fromStack":{"entryPoint":7132,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_2c590e498c4d56c984a7092fd5e89a68b9f4541ce9f97252fb74e44a00ffbb71_to_t_string_memory_ptr_fromStack":{"entryPoint":8069,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_48267d8daf5ea9c6bbad1fe9c53dc4c04a2a01b2b85bad432956cf42f45b2f54_to_t_string_memory_ptr_fromStack":{"entryPoint":5984,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_64609d8b93c93a06b98d7db7a87b04044cd4a52c5661d603bb9b90ad8b914a3a_to_t_string_memory_ptr_fromStack":{"entryPoint":7278,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_6e6486aeb9db70da259b7171a739046119facaec2d8a6bd46f1145fe8391014a_to_t_string_memory_ptr_fromStack":{"entryPoint":5744,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_8ba063dfaa4be2d2cbe73dbb1364728b0f7031ac048441d5fad19e9541992b21_to_t_string_memory_ptr_fromStack":{"entryPoint":8215,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_99a7418ee014d613f46da44561258cdbb58064508097483a319062b99fa37700_to_t_string_memory_ptr_fromStack":{"entryPoint":7424,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_b5a7112edf707196456f338fdcc19cd849be6cb8c0d166bcd035f4cfb00e7078_to_t_string_memory_ptr_fromStack":{"entryPoint":7646,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_b739aae768f79b96e91d9f66398733516895e39eb09ee54a795b49dcc77504d4_to_t_string_memory_ptr_fromStack":{"entryPoint":7792,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_struct$_FacetCut_$11817_memory_ptr_to_t_struct$_FacetCut_$11817_memory_ptr":{"entryPoint":6595,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":7919,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":7942,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_t_address_t_bytes_memory_ptr__to_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_t_address_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":6984,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":8449,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_1ffc682bcfedefd5e93ba9ed0c2d1bc0b18319886e3b4bd28a03a3d3729f85c0__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":7167,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_2c590e498c4d56c984a7092fd5e89a68b9f4541ce9f97252fb74e44a00ffbb71__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":8104,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_48267d8daf5ea9c6bbad1fe9c53dc4c04a2a01b2b85bad432956cf42f45b2f54__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":6019,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_64609d8b93c93a06b98d7db7a87b04044cd4a52c5661d603bb9b90ad8b914a3a__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":7313,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_6e6486aeb9db70da259b7171a739046119facaec2d8a6bd46f1145fe8391014a__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":5779,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_8ba063dfaa4be2d2cbe73dbb1364728b0f7031ac048441d5fad19e9541992b21__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":8250,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_99a7418ee014d613f46da44561258cdbb58064508097483a319062b99fa37700__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":7459,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b5a7112edf707196456f338fdcc19cd849be6cb8c0d166bcd035f4cfb00e7078__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":7681,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b739aae768f79b96e91d9f66398733516895e39eb09ee54a795b49dcc77504d4__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":7827,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_t_array$_t_bytes4_$dyn_memory_ptr":{"entryPoint":6389,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr":{"entryPoint":6208,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_array$_t_bytes4_$dyn_memory_ptr":{"entryPoint":6361,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr":{"entryPoint":6180,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_bytes_memory_ptr":{"entryPoint":6840,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_string_memory_ptr":{"entryPoint":8381,"id":null,"parameterSlots":1,"returnSlots":1},"array_nextElement_t_array$_t_bytes4_$dyn_memory_ptr":{"entryPoint":6488,"id":null,"parameterSlots":1,"returnSlots":1},"array_nextElement_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr":{"entryPoint":6695,"id":null,"parameterSlots":1,"returnSlots":1},"array_storeLengthForEncoding_t_array$_t_bytes4_$dyn_memory_ptr":{"entryPoint":6372,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_fromStack":{"entryPoint":6191,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack":{"entryPoint":6851,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":7859,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_fromStack":{"entryPoint":5686,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":8282,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_t_address":{"entryPoint":6256,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_bytes4":{"entryPoint":6405,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_enum$_FacetCutAction_$11808":{"entryPoint":6309,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint160":{"entryPoint":6224,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint256":{"entryPoint":6098,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint96":{"entryPoint":7491,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_enum$_FacetCutAction_$11808_to_t_uint8":{"entryPoint":6328,"id":null,"parameterSlots":1,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":6868,"id":null,"parameterSlots":3,"returnSlots":0},"increment_t_uint256":{"entryPoint":6108,"id":null,"parameterSlots":1,"returnSlots":1},"increment_t_uint96":{"entryPoint":7515,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":6051,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":5858,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x31":{"entryPoint":8334,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":5811,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of_32":{"entryPoint":6910,"id":null,"parameterSlots":1,"returnSlots":1},"store_literal_in_memory_1ffc682bcfedefd5e93ba9ed0c2d1bc0b18319886e3b4bd28a03a3d3729f85c0":{"entryPoint":7053,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_2c590e498c4d56c984a7092fd5e89a68b9f4541ce9f97252fb74e44a00ffbb71":{"entryPoint":7990,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_48267d8daf5ea9c6bbad1fe9c53dc4c04a2a01b2b85bad432956cf42f45b2f54":{"entryPoint":5905,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_64609d8b93c93a06b98d7db7a87b04044cd4a52c5661d603bb9b90ad8b914a3a":{"entryPoint":7199,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_6e6486aeb9db70da259b7171a739046119facaec2d8a6bd46f1145fe8391014a":{"entryPoint":5703,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_8ba063dfaa4be2d2cbe73dbb1364728b0f7031ac048441d5fad19e9541992b21":{"entryPoint":8136,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_99a7418ee014d613f46da44561258cdbb58064508097483a319062b99fa37700":{"entryPoint":7345,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_b5a7112edf707196456f338fdcc19cd849be6cb8c0d166bcd035f4cfb00e7078":{"entryPoint":7567,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_b739aae768f79b96e91d9f66398733516895e39eb09ee54a795b49dcc77504d4":{"entryPoint":7713,"id":null,"parameterSlots":1,"returnSlots":0},"validator_assert_t_enum$_FacetCutAction_$11808":{"entryPoint":6289,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:20770:61","statements":[{"body":{"nodeType":"YulBlock","src":"103:73:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"120:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"125:6:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"113:6:61"},"nodeType":"YulFunctionCall","src":"113:19:61"},"nodeType":"YulExpressionStatement","src":"113:19:61"},{"nodeType":"YulAssignment","src":"141:29:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"160:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"165:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"156:3:61"},"nodeType":"YulFunctionCall","src":"156:14:61"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"141:11:61"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"75:3:61","type":""},{"name":"length","nodeType":"YulTypedName","src":"80:6:61","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"91:11:61","type":""}],"src":"7:169:61"},{"body":{"nodeType":"YulBlock","src":"288:76:61","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"310:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"318:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"306:3:61"},"nodeType":"YulFunctionCall","src":"306:14:61"},{"hexValue":"4469616d6f6e643a2046756e6374696f6e20646f6573206e6f74206578697374","kind":"string","nodeType":"YulLiteral","src":"322:34:61","type":"","value":"Diamond: Function does not exist"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"299:6:61"},"nodeType":"YulFunctionCall","src":"299:58:61"},"nodeType":"YulExpressionStatement","src":"299:58:61"}]},"name":"store_literal_in_memory_6e6486aeb9db70da259b7171a739046119facaec2d8a6bd46f1145fe8391014a","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"280:6:61","type":""}],"src":"182:182:61"},{"body":{"nodeType":"YulBlock","src":"516:220:61","statements":[{"nodeType":"YulAssignment","src":"526:74:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"592:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"597:2:61","type":"","value":"32"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"533:58:61"},"nodeType":"YulFunctionCall","src":"533:67:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"526:3:61"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"698:3:61"}],"functionName":{"name":"store_literal_in_memory_6e6486aeb9db70da259b7171a739046119facaec2d8a6bd46f1145fe8391014a","nodeType":"YulIdentifier","src":"609:88:61"},"nodeType":"YulFunctionCall","src":"609:93:61"},"nodeType":"YulExpressionStatement","src":"609:93:61"},{"nodeType":"YulAssignment","src":"711:19:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"722:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"727:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"718:3:61"},"nodeType":"YulFunctionCall","src":"718:12:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"711:3:61"}]}]},"name":"abi_encode_t_stringliteral_6e6486aeb9db70da259b7171a739046119facaec2d8a6bd46f1145fe8391014a_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"504:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"512:3:61","type":""}],"src":"370:366:61"},{"body":{"nodeType":"YulBlock","src":"913:248:61","statements":[{"nodeType":"YulAssignment","src":"923:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"935:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"946:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"931:3:61"},"nodeType":"YulFunctionCall","src":"931:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"923:4:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"970:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"981:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"966:3:61"},"nodeType":"YulFunctionCall","src":"966:17:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"989:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"995:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"985:3:61"},"nodeType":"YulFunctionCall","src":"985:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"959:6:61"},"nodeType":"YulFunctionCall","src":"959:47:61"},"nodeType":"YulExpressionStatement","src":"959:47:61"},{"nodeType":"YulAssignment","src":"1015:139:61","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"1149:4:61"}],"functionName":{"name":"abi_encode_t_stringliteral_6e6486aeb9db70da259b7171a739046119facaec2d8a6bd46f1145fe8391014a_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"1023:124:61"},"nodeType":"YulFunctionCall","src":"1023:131:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1015:4:61"}]}]},"name":"abi_encode_tuple_t_stringliteral_6e6486aeb9db70da259b7171a739046119facaec2d8a6bd46f1145fe8391014a__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"893:9:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"908:4:61","type":""}],"src":"742:419:61"},{"body":{"nodeType":"YulBlock","src":"1195:152:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1212:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1215:77:61","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1205:6:61"},"nodeType":"YulFunctionCall","src":"1205:88:61"},"nodeType":"YulExpressionStatement","src":"1205:88:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1309:1:61","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1312:4:61","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1302:6:61"},"nodeType":"YulFunctionCall","src":"1302:15:61"},"nodeType":"YulExpressionStatement","src":"1302:15:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1333:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1336:4:61","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1326:6:61"},"nodeType":"YulFunctionCall","src":"1326:15:61"},"nodeType":"YulExpressionStatement","src":"1326:15:61"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"1167:180:61"},{"body":{"nodeType":"YulBlock","src":"1381:152:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1398:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1401:77:61","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1391:6:61"},"nodeType":"YulFunctionCall","src":"1391:88:61"},"nodeType":"YulExpressionStatement","src":"1391:88:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1495:1:61","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1498:4:61","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1488:6:61"},"nodeType":"YulFunctionCall","src":"1488:15:61"},"nodeType":"YulExpressionStatement","src":"1488:15:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1519:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1522:4:61","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1512:6:61"},"nodeType":"YulFunctionCall","src":"1512:15:61"},"nodeType":"YulExpressionStatement","src":"1512:15:61"}]},"name":"panic_error_0x21","nodeType":"YulFunctionDefinition","src":"1353:180:61"},{"body":{"nodeType":"YulBlock","src":"1645:120:61","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1667:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"1675:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1663:3:61"},"nodeType":"YulFunctionCall","src":"1663:14:61"},{"hexValue":"4c69624469616d6f6e644375743a20496e636f72726563742046616365744375","kind":"string","nodeType":"YulLiteral","src":"1679:34:61","type":"","value":"LibDiamondCut: Incorrect FacetCu"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1656:6:61"},"nodeType":"YulFunctionCall","src":"1656:58:61"},"nodeType":"YulExpressionStatement","src":"1656:58:61"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1735:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"1743:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1731:3:61"},"nodeType":"YulFunctionCall","src":"1731:15:61"},{"hexValue":"74416374696f6e","kind":"string","nodeType":"YulLiteral","src":"1748:9:61","type":"","value":"tAction"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1724:6:61"},"nodeType":"YulFunctionCall","src":"1724:34:61"},"nodeType":"YulExpressionStatement","src":"1724:34:61"}]},"name":"store_literal_in_memory_48267d8daf5ea9c6bbad1fe9c53dc4c04a2a01b2b85bad432956cf42f45b2f54","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"1637:6:61","type":""}],"src":"1539:226:61"},{"body":{"nodeType":"YulBlock","src":"1917:220:61","statements":[{"nodeType":"YulAssignment","src":"1927:74:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1993:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"1998:2:61","type":"","value":"39"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"1934:58:61"},"nodeType":"YulFunctionCall","src":"1934:67:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"1927:3:61"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2099:3:61"}],"functionName":{"name":"store_literal_in_memory_48267d8daf5ea9c6bbad1fe9c53dc4c04a2a01b2b85bad432956cf42f45b2f54","nodeType":"YulIdentifier","src":"2010:88:61"},"nodeType":"YulFunctionCall","src":"2010:93:61"},"nodeType":"YulExpressionStatement","src":"2010:93:61"},{"nodeType":"YulAssignment","src":"2112:19:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2123:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"2128:2:61","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2119:3:61"},"nodeType":"YulFunctionCall","src":"2119:12:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2112:3:61"}]}]},"name":"abi_encode_t_stringliteral_48267d8daf5ea9c6bbad1fe9c53dc4c04a2a01b2b85bad432956cf42f45b2f54_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1905:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1913:3:61","type":""}],"src":"1771:366:61"},{"body":{"nodeType":"YulBlock","src":"2314:248:61","statements":[{"nodeType":"YulAssignment","src":"2324:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2336:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"2347:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2332:3:61"},"nodeType":"YulFunctionCall","src":"2332:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2324:4:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2371:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"2382:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2367:3:61"},"nodeType":"YulFunctionCall","src":"2367:17:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"2390:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"2396:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2386:3:61"},"nodeType":"YulFunctionCall","src":"2386:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2360:6:61"},"nodeType":"YulFunctionCall","src":"2360:47:61"},"nodeType":"YulExpressionStatement","src":"2360:47:61"},{"nodeType":"YulAssignment","src":"2416:139:61","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"2550:4:61"}],"functionName":{"name":"abi_encode_t_stringliteral_48267d8daf5ea9c6bbad1fe9c53dc4c04a2a01b2b85bad432956cf42f45b2f54_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"2424:124:61"},"nodeType":"YulFunctionCall","src":"2424:131:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2416:4:61"}]}]},"name":"abi_encode_tuple_t_stringliteral_48267d8daf5ea9c6bbad1fe9c53dc4c04a2a01b2b85bad432956cf42f45b2f54__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2294:9:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2309:4:61","type":""}],"src":"2143:419:61"},{"body":{"nodeType":"YulBlock","src":"2596:152:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2613:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2616:77:61","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2606:6:61"},"nodeType":"YulFunctionCall","src":"2606:88:61"},"nodeType":"YulExpressionStatement","src":"2606:88:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2710:1:61","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2713:4:61","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2703:6:61"},"nodeType":"YulFunctionCall","src":"2703:15:61"},"nodeType":"YulExpressionStatement","src":"2703:15:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2734:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2737:4:61","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2727:6:61"},"nodeType":"YulFunctionCall","src":"2727:15:61"},"nodeType":"YulExpressionStatement","src":"2727:15:61"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"2568:180:61"},{"body":{"nodeType":"YulBlock","src":"2799:32:61","statements":[{"nodeType":"YulAssignment","src":"2809:16:61","value":{"name":"value","nodeType":"YulIdentifier","src":"2820:5:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"2809:7:61"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2781:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"2791:7:61","type":""}],"src":"2754:77:61"},{"body":{"nodeType":"YulBlock","src":"2880:190:61","statements":[{"nodeType":"YulAssignment","src":"2890:33:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2917:5:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"2899:17:61"},"nodeType":"YulFunctionCall","src":"2899:24:61"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"2890:5:61"}]},{"body":{"nodeType":"YulBlock","src":"3013:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"3015:16:61"},"nodeType":"YulFunctionCall","src":"3015:18:61"},"nodeType":"YulExpressionStatement","src":"3015:18:61"}]},"condition":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2938:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"2945:66:61","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"2935:2:61"},"nodeType":"YulFunctionCall","src":"2935:77:61"},"nodeType":"YulIf","src":"2932:103:61"},{"nodeType":"YulAssignment","src":"3044:20:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3055:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"3062:1:61","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3051:3:61"},"nodeType":"YulFunctionCall","src":"3051:13:61"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"3044:3:61"}]}]},"name":"increment_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2866:5:61","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"2876:3:61","type":""}],"src":"2837:233:61"},{"body":{"nodeType":"YulBlock","src":"3177:40:61","statements":[{"nodeType":"YulAssignment","src":"3188:22:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3204:5:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3198:5:61"},"nodeType":"YulFunctionCall","src":"3198:12:61"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"3188:6:61"}]}]},"name":"array_length_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3160:5:61","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"3170:6:61","type":""}],"src":"3076:141:61"},{"body":{"nodeType":"YulBlock","src":"3361:73:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3378:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"3383:6:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3371:6:61"},"nodeType":"YulFunctionCall","src":"3371:19:61"},"nodeType":"YulExpressionStatement","src":"3371:19:61"},{"nodeType":"YulAssignment","src":"3399:29:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3418:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"3423:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3414:3:61"},"nodeType":"YulFunctionCall","src":"3414:14:61"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"3399:11:61"}]}]},"name":"array_storeLengthForEncoding_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"3333:3:61","type":""},{"name":"length","nodeType":"YulTypedName","src":"3338:6:61","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"3349:11:61","type":""}],"src":"3223:211:61"},{"body":{"nodeType":"YulBlock","src":"3539:60:61","statements":[{"nodeType":"YulAssignment","src":"3549:11:61","value":{"name":"ptr","nodeType":"YulIdentifier","src":"3557:3:61"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"3549:4:61"}]},{"nodeType":"YulAssignment","src":"3570:22:61","value":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"3582:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"3587:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3578:3:61"},"nodeType":"YulFunctionCall","src":"3578:14:61"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"3570:4:61"}]}]},"name":"array_dataslot_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"3526:3:61","type":""}],"returnVariables":[{"name":"data","nodeType":"YulTypedName","src":"3534:4:61","type":""}],"src":"3440:159:61"},{"body":{"nodeType":"YulBlock","src":"3650:81:61","statements":[{"nodeType":"YulAssignment","src":"3660:65:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3675:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"3682:42:61","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3671:3:61"},"nodeType":"YulFunctionCall","src":"3671:54:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"3660:7:61"}]}]},"name":"cleanup_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3632:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"3642:7:61","type":""}],"src":"3605:126:61"},{"body":{"nodeType":"YulBlock","src":"3782:51:61","statements":[{"nodeType":"YulAssignment","src":"3792:35:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3821:5:61"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"3803:17:61"},"nodeType":"YulFunctionCall","src":"3803:24:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"3792:7:61"}]}]},"name":"cleanup_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3764:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"3774:7:61","type":""}],"src":"3737:96:61"},{"body":{"nodeType":"YulBlock","src":"3894:53:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3911:3:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3934:5:61"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"3916:17:61"},"nodeType":"YulFunctionCall","src":"3916:24:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3904:6:61"},"nodeType":"YulFunctionCall","src":"3904:37:61"},"nodeType":"YulExpressionStatement","src":"3904:37:61"}]},"name":"abi_encode_t_address_to_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3882:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"3889:3:61","type":""}],"src":"3839:108:61"},{"body":{"nodeType":"YulBlock","src":"4016:62:61","statements":[{"body":{"nodeType":"YulBlock","src":"4050:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x21","nodeType":"YulIdentifier","src":"4052:16:61"},"nodeType":"YulFunctionCall","src":"4052:18:61"},"nodeType":"YulExpressionStatement","src":"4052:18:61"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4039:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"4046:1:61","type":"","value":"3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4036:2:61"},"nodeType":"YulFunctionCall","src":"4036:12:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4029:6:61"},"nodeType":"YulFunctionCall","src":"4029:20:61"},"nodeType":"YulIf","src":"4026:46:61"}]},"name":"validator_assert_t_enum$_FacetCutAction_$11808","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4009:5:61","type":""}],"src":"3953:125:61"},{"body":{"nodeType":"YulBlock","src":"4149:86:61","statements":[{"nodeType":"YulAssignment","src":"4159:16:61","value":{"name":"value","nodeType":"YulIdentifier","src":"4170:5:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"4159:7:61"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4223:5:61"}],"functionName":{"name":"validator_assert_t_enum$_FacetCutAction_$11808","nodeType":"YulIdentifier","src":"4176:46:61"},"nodeType":"YulFunctionCall","src":"4176:53:61"},"nodeType":"YulExpressionStatement","src":"4176:53:61"}]},"name":"cleanup_t_enum$_FacetCutAction_$11808","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4131:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"4141:7:61","type":""}],"src":"4084:151:61"},{"body":{"nodeType":"YulBlock","src":"4319:73:61","statements":[{"nodeType":"YulAssignment","src":"4329:57:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4380:5:61"}],"functionName":{"name":"cleanup_t_enum$_FacetCutAction_$11808","nodeType":"YulIdentifier","src":"4342:37:61"},"nodeType":"YulFunctionCall","src":"4342:44:61"},"variableNames":[{"name":"converted","nodeType":"YulIdentifier","src":"4329:9:61"}]}]},"name":"convert_t_enum$_FacetCutAction_$11808_to_t_uint8","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4299:5:61","type":""}],"returnVariables":[{"name":"converted","nodeType":"YulTypedName","src":"4309:9:61","type":""}],"src":"4241:151:61"},{"body":{"nodeType":"YulBlock","src":"4471:84:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4488:3:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4542:5:61"}],"functionName":{"name":"convert_t_enum$_FacetCutAction_$11808_to_t_uint8","nodeType":"YulIdentifier","src":"4493:48:61"},"nodeType":"YulFunctionCall","src":"4493:55:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4481:6:61"},"nodeType":"YulFunctionCall","src":"4481:68:61"},"nodeType":"YulExpressionStatement","src":"4481:68:61"}]},"name":"abi_encode_t_enum$_FacetCutAction_$11808_to_t_uint8","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4459:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4466:3:61","type":""}],"src":"4398:157:61"},{"body":{"nodeType":"YulBlock","src":"4634:40:61","statements":[{"nodeType":"YulAssignment","src":"4645:22:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4661:5:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4655:5:61"},"nodeType":"YulFunctionCall","src":"4655:12:61"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"4645:6:61"}]}]},"name":"array_length_t_array$_t_bytes4_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4617:5:61","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"4627:6:61","type":""}],"src":"4561:113:61"},{"body":{"nodeType":"YulBlock","src":"4780:73:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4797:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"4802:6:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4790:6:61"},"nodeType":"YulFunctionCall","src":"4790:19:61"},"nodeType":"YulExpressionStatement","src":"4790:19:61"},{"nodeType":"YulAssignment","src":"4818:29:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4837:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"4842:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4833:3:61"},"nodeType":"YulFunctionCall","src":"4833:14:61"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"4818:11:61"}]}]},"name":"array_storeLengthForEncoding_t_array$_t_bytes4_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"4752:3:61","type":""},{"name":"length","nodeType":"YulTypedName","src":"4757:6:61","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"4768:11:61","type":""}],"src":"4680:173:61"},{"body":{"nodeType":"YulBlock","src":"4930:60:61","statements":[{"nodeType":"YulAssignment","src":"4940:11:61","value":{"name":"ptr","nodeType":"YulIdentifier","src":"4948:3:61"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"4940:4:61"}]},{"nodeType":"YulAssignment","src":"4961:22:61","value":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"4973:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"4978:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4969:3:61"},"nodeType":"YulFunctionCall","src":"4969:14:61"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"4961:4:61"}]}]},"name":"array_dataslot_t_array$_t_bytes4_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"4917:3:61","type":""}],"returnVariables":[{"name":"data","nodeType":"YulTypedName","src":"4925:4:61","type":""}],"src":"4859:131:61"},{"body":{"nodeType":"YulBlock","src":"5040:105:61","statements":[{"nodeType":"YulAssignment","src":"5050:89:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5065:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"5072:66:61","type":"","value":"0xffffffff00000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5061:3:61"},"nodeType":"YulFunctionCall","src":"5061:78:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5050:7:61"}]}]},"name":"cleanup_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5022:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5032:7:61","type":""}],"src":"4996:149:61"},{"body":{"nodeType":"YulBlock","src":"5204:52:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5221:3:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5243:5:61"}],"functionName":{"name":"cleanup_t_bytes4","nodeType":"YulIdentifier","src":"5226:16:61"},"nodeType":"YulFunctionCall","src":"5226:23:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5214:6:61"},"nodeType":"YulFunctionCall","src":"5214:36:61"},"nodeType":"YulExpressionStatement","src":"5214:36:61"}]},"name":"abi_encode_t_bytes4_to_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5192:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"5199:3:61","type":""}],"src":"5151:105:61"},{"body":{"nodeType":"YulBlock","src":"5340:97:61","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5382:6:61"},{"name":"pos","nodeType":"YulIdentifier","src":"5390:3:61"}],"functionName":{"name":"abi_encode_t_bytes4_to_t_bytes4","nodeType":"YulIdentifier","src":"5350:31:61"},"nodeType":"YulFunctionCall","src":"5350:44:61"},"nodeType":"YulExpressionStatement","src":"5350:44:61"},{"nodeType":"YulAssignment","src":"5403:28:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5421:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"5426:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5417:3:61"},"nodeType":"YulFunctionCall","src":"5417:14:61"},"variableNames":[{"name":"updatedPos","nodeType":"YulIdentifier","src":"5403:10:61"}]}]},"name":"abi_encodeUpdatedPos_t_bytes4_to_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"value0","nodeType":"YulTypedName","src":"5313:6:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"5321:3:61","type":""}],"returnVariables":[{"name":"updatedPos","nodeType":"YulTypedName","src":"5329:10:61","type":""}],"src":"5262:175:61"},{"body":{"nodeType":"YulBlock","src":"5517:38:61","statements":[{"nodeType":"YulAssignment","src":"5527:22:61","value":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"5539:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"5544:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5535:3:61"},"nodeType":"YulFunctionCall","src":"5535:14:61"},"variableNames":[{"name":"next","nodeType":"YulIdentifier","src":"5527:4:61"}]}]},"name":"array_nextElement_t_array$_t_bytes4_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"5504:3:61","type":""}],"returnVariables":[{"name":"next","nodeType":"YulTypedName","src":"5512:4:61","type":""}],"src":"5443:112:61"},{"body":{"nodeType":"YulBlock","src":"5701:592:61","statements":[{"nodeType":"YulVariableDeclaration","src":"5711:67:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5772:5:61"}],"functionName":{"name":"array_length_t_array$_t_bytes4_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"5725:46:61"},"nodeType":"YulFunctionCall","src":"5725:53:61"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"5715:6:61","type":""}]},{"nodeType":"YulAssignment","src":"5787:82:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5857:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"5862:6:61"}],"functionName":{"name":"array_storeLengthForEncoding_t_array$_t_bytes4_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"5794:62:61"},"nodeType":"YulFunctionCall","src":"5794:75:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"5787:3:61"}]},{"nodeType":"YulVariableDeclaration","src":"5878:70:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5942:5:61"}],"functionName":{"name":"array_dataslot_t_array$_t_bytes4_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"5893:48:61"},"nodeType":"YulFunctionCall","src":"5893:55:61"},"variables":[{"name":"baseRef","nodeType":"YulTypedName","src":"5882:7:61","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5957:21:61","value":{"name":"baseRef","nodeType":"YulIdentifier","src":"5971:7:61"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"5961:6:61","type":""}]},{"body":{"nodeType":"YulBlock","src":"6047:221:61","statements":[{"nodeType":"YulVariableDeclaration","src":"6061:34:61","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"6088:6:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6082:5:61"},"nodeType":"YulFunctionCall","src":"6082:13:61"},"variables":[{"name":"elementValue0","nodeType":"YulTypedName","src":"6065:13:61","type":""}]},{"nodeType":"YulAssignment","src":"6108:68:61","value":{"arguments":[{"name":"elementValue0","nodeType":"YulIdentifier","src":"6157:13:61"},{"name":"pos","nodeType":"YulIdentifier","src":"6172:3:61"}],"functionName":{"name":"abi_encodeUpdatedPos_t_bytes4_to_t_bytes4","nodeType":"YulIdentifier","src":"6115:41:61"},"nodeType":"YulFunctionCall","src":"6115:61:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"6108:3:61"}]},{"nodeType":"YulAssignment","src":"6189:69:61","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"6251:6:61"}],"functionName":{"name":"array_nextElement_t_array$_t_bytes4_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"6199:51:61"},"nodeType":"YulFunctionCall","src":"6199:59:61"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"6189:6:61"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6009:1:61"},{"name":"length","nodeType":"YulIdentifier","src":"6012:6:61"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"6006:2:61"},"nodeType":"YulFunctionCall","src":"6006:13:61"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"6020:18:61","statements":[{"nodeType":"YulAssignment","src":"6022:14:61","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"6031:1:61"},{"kind":"number","nodeType":"YulLiteral","src":"6034:1:61","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6027:3:61"},"nodeType":"YulFunctionCall","src":"6027:9:61"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"6022:1:61"}]}]},"pre":{"nodeType":"YulBlock","src":"5991:14:61","statements":[{"nodeType":"YulVariableDeclaration","src":"5993:10:61","value":{"kind":"number","nodeType":"YulLiteral","src":"6002:1:61","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"5997:1:61","type":""}]}]},"src":"5987:281:61"},{"nodeType":"YulAssignment","src":"6277:10:61","value":{"name":"pos","nodeType":"YulIdentifier","src":"6284:3:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"6277:3:61"}]}]},"name":"abi_encode_t_array$_t_bytes4_$dyn_memory_ptr_to_t_array$_t_bytes4_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5680:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"5687:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"5696:3:61","type":""}],"src":"5589:704:61"},{"body":{"nodeType":"YulBlock","src":"6469:725:61","statements":[{"nodeType":"YulVariableDeclaration","src":"6479:26:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6495:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"6500:4:61","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6491:3:61"},"nodeType":"YulFunctionCall","src":"6491:14:61"},"variables":[{"name":"tail","nodeType":"YulTypedName","src":"6483:4:61","type":""}]},{"nodeType":"YulBlock","src":"6515:172:61","statements":[{"nodeType":"YulVariableDeclaration","src":"6558:43:61","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6588:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"6595:4:61","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6584:3:61"},"nodeType":"YulFunctionCall","src":"6584:16:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6578:5:61"},"nodeType":"YulFunctionCall","src":"6578:23:61"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"6562:12:61","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"6648:12:61"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6666:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"6671:4:61","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6662:3:61"},"nodeType":"YulFunctionCall","src":"6662:14:61"}],"functionName":{"name":"abi_encode_t_address_to_t_address","nodeType":"YulIdentifier","src":"6614:33:61"},"nodeType":"YulFunctionCall","src":"6614:63:61"},"nodeType":"YulExpressionStatement","src":"6614:63:61"}]},{"nodeType":"YulBlock","src":"6697:184:61","statements":[{"nodeType":"YulVariableDeclaration","src":"6734:43:61","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6764:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"6771:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6760:3:61"},"nodeType":"YulFunctionCall","src":"6760:16:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6754:5:61"},"nodeType":"YulFunctionCall","src":"6754:23:61"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"6738:12:61","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"6842:12:61"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6860:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"6865:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6856:3:61"},"nodeType":"YulFunctionCall","src":"6856:14:61"}],"functionName":{"name":"abi_encode_t_enum$_FacetCutAction_$11808_to_t_uint8","nodeType":"YulIdentifier","src":"6790:51:61"},"nodeType":"YulFunctionCall","src":"6790:81:61"},"nodeType":"YulExpressionStatement","src":"6790:81:61"}]},{"nodeType":"YulBlock","src":"6891:276:61","statements":[{"nodeType":"YulVariableDeclaration","src":"6939:43:61","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6969:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"6976:4:61","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6965:3:61"},"nodeType":"YulFunctionCall","src":"6965:16:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6959:5:61"},"nodeType":"YulFunctionCall","src":"6959:23:61"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"6943:12:61","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"7007:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"7012:4:61","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7003:3:61"},"nodeType":"YulFunctionCall","src":"7003:14:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"7023:4:61"},{"name":"pos","nodeType":"YulIdentifier","src":"7029:3:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7019:3:61"},"nodeType":"YulFunctionCall","src":"7019:14:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6996:6:61"},"nodeType":"YulFunctionCall","src":"6996:38:61"},"nodeType":"YulExpressionStatement","src":"6996:38:61"},{"nodeType":"YulAssignment","src":"7047:109:61","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"7137:12:61"},{"name":"tail","nodeType":"YulIdentifier","src":"7151:4:61"}],"functionName":{"name":"abi_encode_t_array$_t_bytes4_$dyn_memory_ptr_to_t_array$_t_bytes4_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"7055:81:61"},"nodeType":"YulFunctionCall","src":"7055:101:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7047:4:61"}]}]},{"nodeType":"YulAssignment","src":"7177:11:61","value":{"name":"tail","nodeType":"YulIdentifier","src":"7184:4:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"7177:3:61"}]}]},"name":"abi_encode_t_struct$_FacetCut_$11817_memory_ptr_to_t_struct$_FacetCut_$11817_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6448:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"6455:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"6464:3:61","type":""}],"src":"6351:843:61"},{"body":{"nodeType":"YulBlock","src":"7334:130:61","statements":[{"nodeType":"YulAssignment","src":"7344:114:61","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7446:6:61"},{"name":"pos","nodeType":"YulIdentifier","src":"7454:3:61"}],"functionName":{"name":"abi_encode_t_struct$_FacetCut_$11817_memory_ptr_to_t_struct$_FacetCut_$11817_memory_ptr","nodeType":"YulIdentifier","src":"7358:87:61"},"nodeType":"YulFunctionCall","src":"7358:100:61"},"variableNames":[{"name":"updatedPos","nodeType":"YulIdentifier","src":"7344:10:61"}]}]},"name":"abi_encodeUpdatedPos_t_struct$_FacetCut_$11817_memory_ptr_to_t_struct$_FacetCut_$11817_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value0","nodeType":"YulTypedName","src":"7307:6:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"7315:3:61","type":""}],"returnVariables":[{"name":"updatedPos","nodeType":"YulTypedName","src":"7323:10:61","type":""}],"src":"7200:264:61"},{"body":{"nodeType":"YulBlock","src":"7572:38:61","statements":[{"nodeType":"YulAssignment","src":"7582:22:61","value":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"7594:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"7599:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7590:3:61"},"nodeType":"YulFunctionCall","src":"7590:14:61"},"variableNames":[{"name":"next","nodeType":"YulIdentifier","src":"7582:4:61"}]}]},"name":"array_nextElement_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"7559:3:61","type":""}],"returnVariables":[{"name":"next","nodeType":"YulTypedName","src":"7567:4:61","type":""}],"src":"7470:140:61"},{"body":{"nodeType":"YulBlock","src":"7850:949:61","statements":[{"nodeType":"YulVariableDeclaration","src":"7860:95:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7949:5:61"}],"functionName":{"name":"array_length_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"7874:74:61"},"nodeType":"YulFunctionCall","src":"7874:81:61"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"7864:6:61","type":""}]},{"nodeType":"YulAssignment","src":"7964:120:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8072:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"8077:6:61"}],"functionName":{"name":"array_storeLengthForEncoding_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"7971:100:61"},"nodeType":"YulFunctionCall","src":"7971:113:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"7964:3:61"}]},{"nodeType":"YulVariableDeclaration","src":"8093:20:61","value":{"name":"pos","nodeType":"YulIdentifier","src":"8110:3:61"},"variables":[{"name":"headStart","nodeType":"YulTypedName","src":"8097:9:61","type":""}]},{"nodeType":"YulVariableDeclaration","src":"8122:39:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8138:3:61"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"8147:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"8155:4:61","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"8143:3:61"},"nodeType":"YulFunctionCall","src":"8143:17:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8134:3:61"},"nodeType":"YulFunctionCall","src":"8134:27:61"},"variables":[{"name":"tail","nodeType":"YulTypedName","src":"8126:4:61","type":""}]},{"nodeType":"YulVariableDeclaration","src":"8170:98:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8262:5:61"}],"functionName":{"name":"array_dataslot_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"8185:76:61"},"nodeType":"YulFunctionCall","src":"8185:83:61"},"variables":[{"name":"baseRef","nodeType":"YulTypedName","src":"8174:7:61","type":""}]},{"nodeType":"YulVariableDeclaration","src":"8277:21:61","value":{"name":"baseRef","nodeType":"YulIdentifier","src":"8291:7:61"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"8281:6:61","type":""}]},{"body":{"nodeType":"YulBlock","src":"8367:387:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8388:3:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"8397:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"8403:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8393:3:61"},"nodeType":"YulFunctionCall","src":"8393:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8381:6:61"},"nodeType":"YulFunctionCall","src":"8381:33:61"},"nodeType":"YulExpressionStatement","src":"8381:33:61"},{"nodeType":"YulVariableDeclaration","src":"8427:34:61","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"8454:6:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8448:5:61"},"nodeType":"YulFunctionCall","src":"8448:13:61"},"variables":[{"name":"elementValue0","nodeType":"YulTypedName","src":"8431:13:61","type":""}]},{"nodeType":"YulAssignment","src":"8474:126:61","value":{"arguments":[{"name":"elementValue0","nodeType":"YulIdentifier","src":"8580:13:61"},{"name":"tail","nodeType":"YulIdentifier","src":"8595:4:61"}],"functionName":{"name":"abi_encodeUpdatedPos_t_struct$_FacetCut_$11817_memory_ptr_to_t_struct$_FacetCut_$11817_memory_ptr","nodeType":"YulIdentifier","src":"8482:97:61"},"nodeType":"YulFunctionCall","src":"8482:118:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8474:4:61"}]},{"nodeType":"YulAssignment","src":"8613:97:61","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"8703:6:61"}],"functionName":{"name":"array_nextElement_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"8623:79:61"},"nodeType":"YulFunctionCall","src":"8623:87:61"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"8613:6:61"}]},{"nodeType":"YulAssignment","src":"8723:21:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8734:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"8739:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8730:3:61"},"nodeType":"YulFunctionCall","src":"8730:14:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"8723:3:61"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"8329:1:61"},{"name":"length","nodeType":"YulIdentifier","src":"8332:6:61"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"8326:2:61"},"nodeType":"YulFunctionCall","src":"8326:13:61"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"8340:18:61","statements":[{"nodeType":"YulAssignment","src":"8342:14:61","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"8351:1:61"},{"kind":"number","nodeType":"YulLiteral","src":"8354:1:61","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8347:3:61"},"nodeType":"YulFunctionCall","src":"8347:9:61"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"8342:1:61"}]}]},"pre":{"nodeType":"YulBlock","src":"8311:14:61","statements":[{"nodeType":"YulVariableDeclaration","src":"8313:10:61","value":{"kind":"number","nodeType":"YulLiteral","src":"8322:1:61","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"8317:1:61","type":""}]}]},"src":"8307:447:61"},{"nodeType":"YulAssignment","src":"8763:11:61","value":{"name":"tail","nodeType":"YulIdentifier","src":"8770:4:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"8763:3:61"}]},{"nodeType":"YulAssignment","src":"8783:10:61","value":{"name":"pos","nodeType":"YulIdentifier","src":"8790:3:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"8783:3:61"}]}]},"name":"abi_encode_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7829:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"7836:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"7845:3:61","type":""}],"src":"7672:1127:61"},{"body":{"nodeType":"YulBlock","src":"8870:53:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8887:3:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8910:5:61"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"8892:17:61"},"nodeType":"YulFunctionCall","src":"8892:24:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8880:6:61"},"nodeType":"YulFunctionCall","src":"8880:37:61"},"nodeType":"YulExpressionStatement","src":"8880:37:61"}]},"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8858:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"8865:3:61","type":""}],"src":"8805:118:61"},{"body":{"nodeType":"YulBlock","src":"8987:40:61","statements":[{"nodeType":"YulAssignment","src":"8998:22:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9014:5:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9008:5:61"},"nodeType":"YulFunctionCall","src":"9008:12:61"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"8998:6:61"}]}]},"name":"array_length_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8970:5:61","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"8980:6:61","type":""}],"src":"8929:98:61"},{"body":{"nodeType":"YulBlock","src":"9128:73:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9145:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"9150:6:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9138:6:61"},"nodeType":"YulFunctionCall","src":"9138:19:61"},"nodeType":"YulExpressionStatement","src":"9138:19:61"},{"nodeType":"YulAssignment","src":"9166:29:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9185:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"9190:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9181:3:61"},"nodeType":"YulFunctionCall","src":"9181:14:61"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"9166:11:61"}]}]},"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"9100:3:61","type":""},{"name":"length","nodeType":"YulTypedName","src":"9105:6:61","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"9116:11:61","type":""}],"src":"9033:168:61"},{"body":{"nodeType":"YulBlock","src":"9269:184:61","statements":[{"nodeType":"YulVariableDeclaration","src":"9279:10:61","value":{"kind":"number","nodeType":"YulLiteral","src":"9288:1:61","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"9283:1:61","type":""}]},{"body":{"nodeType":"YulBlock","src":"9348:63:61","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"9373:3:61"},{"name":"i","nodeType":"YulIdentifier","src":"9378:1:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9369:3:61"},"nodeType":"YulFunctionCall","src":"9369:11:61"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"9392:3:61"},{"name":"i","nodeType":"YulIdentifier","src":"9397:1:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9388:3:61"},"nodeType":"YulFunctionCall","src":"9388:11:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9382:5:61"},"nodeType":"YulFunctionCall","src":"9382:18:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9362:6:61"},"nodeType":"YulFunctionCall","src":"9362:39:61"},"nodeType":"YulExpressionStatement","src":"9362:39:61"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"9309:1:61"},{"name":"length","nodeType":"YulIdentifier","src":"9312:6:61"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"9306:2:61"},"nodeType":"YulFunctionCall","src":"9306:13:61"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"9320:19:61","statements":[{"nodeType":"YulAssignment","src":"9322:15:61","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"9331:1:61"},{"kind":"number","nodeType":"YulLiteral","src":"9334:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9327:3:61"},"nodeType":"YulFunctionCall","src":"9327:10:61"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"9322:1:61"}]}]},"pre":{"nodeType":"YulBlock","src":"9302:3:61","statements":[]},"src":"9298:113:61"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"9431:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"9436:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9427:3:61"},"nodeType":"YulFunctionCall","src":"9427:16:61"},{"kind":"number","nodeType":"YulLiteral","src":"9445:1:61","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9420:6:61"},"nodeType":"YulFunctionCall","src":"9420:27:61"},"nodeType":"YulExpressionStatement","src":"9420:27:61"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"9251:3:61","type":""},{"name":"dst","nodeType":"YulTypedName","src":"9256:3:61","type":""},{"name":"length","nodeType":"YulTypedName","src":"9261:6:61","type":""}],"src":"9207:246:61"},{"body":{"nodeType":"YulBlock","src":"9507:54:61","statements":[{"nodeType":"YulAssignment","src":"9517:38:61","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9535:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"9542:2:61","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9531:3:61"},"nodeType":"YulFunctionCall","src":"9531:14:61"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9551:2:61","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"9547:3:61"},"nodeType":"YulFunctionCall","src":"9547:7:61"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"9527:3:61"},"nodeType":"YulFunctionCall","src":"9527:28:61"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"9517:6:61"}]}]},"name":"round_up_to_mul_of_32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"9490:5:61","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"9500:6:61","type":""}],"src":"9459:102:61"},{"body":{"nodeType":"YulBlock","src":"9657:283:61","statements":[{"nodeType":"YulVariableDeclaration","src":"9667:52:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9713:5:61"}],"functionName":{"name":"array_length_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"9681:31:61"},"nodeType":"YulFunctionCall","src":"9681:38:61"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"9671:6:61","type":""}]},{"nodeType":"YulAssignment","src":"9728:77:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9793:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"9798:6:61"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"9735:57:61"},"nodeType":"YulFunctionCall","src":"9735:70:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"9728:3:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9853:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"9860:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9849:3:61"},"nodeType":"YulFunctionCall","src":"9849:16:61"},{"name":"pos","nodeType":"YulIdentifier","src":"9867:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"9872:6:61"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"9814:34:61"},"nodeType":"YulFunctionCall","src":"9814:65:61"},"nodeType":"YulExpressionStatement","src":"9814:65:61"},{"nodeType":"YulAssignment","src":"9888:46:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9899:3:61"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"9926:6:61"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"9904:21:61"},"nodeType":"YulFunctionCall","src":"9904:29:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9895:3:61"},"nodeType":"YulFunctionCall","src":"9895:39:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"9888:3:61"}]}]},"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"9638:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"9645:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"9653:3:61","type":""}],"src":"9567:373:61"},{"body":{"nodeType":"YulBlock","src":"10222:512:61","statements":[{"nodeType":"YulAssignment","src":"10232:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10244:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"10255:2:61","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10240:3:61"},"nodeType":"YulFunctionCall","src":"10240:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10232:4:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10279:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"10290:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10275:3:61"},"nodeType":"YulFunctionCall","src":"10275:17:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"10298:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"10304:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10294:3:61"},"nodeType":"YulFunctionCall","src":"10294:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10268:6:61"},"nodeType":"YulFunctionCall","src":"10268:47:61"},"nodeType":"YulExpressionStatement","src":"10268:47:61"},{"nodeType":"YulAssignment","src":"10324:170:61","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10480:6:61"},{"name":"tail","nodeType":"YulIdentifier","src":"10489:4:61"}],"functionName":{"name":"abi_encode_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"10332:147:61"},"nodeType":"YulFunctionCall","src":"10332:162:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10324:4:61"}]},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"10548:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10561:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"10572:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10557:3:61"},"nodeType":"YulFunctionCall","src":"10557:18:61"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"10504:43:61"},"nodeType":"YulFunctionCall","src":"10504:72:61"},"nodeType":"YulExpressionStatement","src":"10504:72:61"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10597:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"10608:2:61","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10593:3:61"},"nodeType":"YulFunctionCall","src":"10593:18:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"10617:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"10623:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10613:3:61"},"nodeType":"YulFunctionCall","src":"10613:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10586:6:61"},"nodeType":"YulFunctionCall","src":"10586:48:61"},"nodeType":"YulExpressionStatement","src":"10586:48:61"},{"nodeType":"YulAssignment","src":"10643:84:61","value":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"10713:6:61"},{"name":"tail","nodeType":"YulIdentifier","src":"10722:4:61"}],"functionName":{"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"10651:61:61"},"nodeType":"YulFunctionCall","src":"10651:76:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10643:4:61"}]}]},"name":"abi_encode_tuple_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_t_address_t_bytes_memory_ptr__to_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_t_address_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10178:9:61","type":""},{"name":"value2","nodeType":"YulTypedName","src":"10190:6:61","type":""},{"name":"value1","nodeType":"YulTypedName","src":"10198:6:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"10206:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10217:4:61","type":""}],"src":"9946:788:61"},{"body":{"nodeType":"YulBlock","src":"10846:124:61","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"10868:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"10876:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10864:3:61"},"nodeType":"YulFunctionCall","src":"10864:14:61"},{"hexValue":"4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e2066","kind":"string","nodeType":"YulLiteral","src":"10880:34:61","type":"","value":"LibDiamondCut: No selectors in f"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10857:6:61"},"nodeType":"YulFunctionCall","src":"10857:58:61"},"nodeType":"YulExpressionStatement","src":"10857:58:61"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"10936:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"10944:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10932:3:61"},"nodeType":"YulFunctionCall","src":"10932:15:61"},{"hexValue":"6163657420746f20637574","kind":"string","nodeType":"YulLiteral","src":"10949:13:61","type":"","value":"acet to cut"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10925:6:61"},"nodeType":"YulFunctionCall","src":"10925:38:61"},"nodeType":"YulExpressionStatement","src":"10925:38:61"}]},"name":"store_literal_in_memory_1ffc682bcfedefd5e93ba9ed0c2d1bc0b18319886e3b4bd28a03a3d3729f85c0","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"10838:6:61","type":""}],"src":"10740:230:61"},{"body":{"nodeType":"YulBlock","src":"11122:220:61","statements":[{"nodeType":"YulAssignment","src":"11132:74:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"11198:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"11203:2:61","type":"","value":"43"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"11139:58:61"},"nodeType":"YulFunctionCall","src":"11139:67:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"11132:3:61"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"11304:3:61"}],"functionName":{"name":"store_literal_in_memory_1ffc682bcfedefd5e93ba9ed0c2d1bc0b18319886e3b4bd28a03a3d3729f85c0","nodeType":"YulIdentifier","src":"11215:88:61"},"nodeType":"YulFunctionCall","src":"11215:93:61"},"nodeType":"YulExpressionStatement","src":"11215:93:61"},{"nodeType":"YulAssignment","src":"11317:19:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"11328:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"11333:2:61","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11324:3:61"},"nodeType":"YulFunctionCall","src":"11324:12:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"11317:3:61"}]}]},"name":"abi_encode_t_stringliteral_1ffc682bcfedefd5e93ba9ed0c2d1bc0b18319886e3b4bd28a03a3d3729f85c0_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"11110:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"11118:3:61","type":""}],"src":"10976:366:61"},{"body":{"nodeType":"YulBlock","src":"11519:248:61","statements":[{"nodeType":"YulAssignment","src":"11529:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11541:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"11552:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11537:3:61"},"nodeType":"YulFunctionCall","src":"11537:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11529:4:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11576:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"11587:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11572:3:61"},"nodeType":"YulFunctionCall","src":"11572:17:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"11595:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"11601:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"11591:3:61"},"nodeType":"YulFunctionCall","src":"11591:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11565:6:61"},"nodeType":"YulFunctionCall","src":"11565:47:61"},"nodeType":"YulExpressionStatement","src":"11565:47:61"},{"nodeType":"YulAssignment","src":"11621:139:61","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"11755:4:61"}],"functionName":{"name":"abi_encode_t_stringliteral_1ffc682bcfedefd5e93ba9ed0c2d1bc0b18319886e3b4bd28a03a3d3729f85c0_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"11629:124:61"},"nodeType":"YulFunctionCall","src":"11629:131:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11621:4:61"}]}]},"name":"abi_encode_tuple_t_stringliteral_1ffc682bcfedefd5e93ba9ed0c2d1bc0b18319886e3b4bd28a03a3d3729f85c0__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11499:9:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11514:4:61","type":""}],"src":"11348:419:61"},{"body":{"nodeType":"YulBlock","src":"11879:125:61","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"11901:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"11909:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11897:3:61"},"nodeType":"YulFunctionCall","src":"11897:14:61"},{"hexValue":"4c69624469616d6f6e644375743a204164642066616365742063616e27742062","kind":"string","nodeType":"YulLiteral","src":"11913:34:61","type":"","value":"LibDiamondCut: Add facet can't b"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11890:6:61"},"nodeType":"YulFunctionCall","src":"11890:58:61"},"nodeType":"YulExpressionStatement","src":"11890:58:61"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"11969:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"11977:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11965:3:61"},"nodeType":"YulFunctionCall","src":"11965:15:61"},{"hexValue":"652061646472657373283029","kind":"string","nodeType":"YulLiteral","src":"11982:14:61","type":"","value":"e address(0)"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11958:6:61"},"nodeType":"YulFunctionCall","src":"11958:39:61"},"nodeType":"YulExpressionStatement","src":"11958:39:61"}]},"name":"store_literal_in_memory_64609d8b93c93a06b98d7db7a87b04044cd4a52c5661d603bb9b90ad8b914a3a","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"11871:6:61","type":""}],"src":"11773:231:61"},{"body":{"nodeType":"YulBlock","src":"12156:220:61","statements":[{"nodeType":"YulAssignment","src":"12166:74:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12232:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"12237:2:61","type":"","value":"44"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"12173:58:61"},"nodeType":"YulFunctionCall","src":"12173:67:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"12166:3:61"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12338:3:61"}],"functionName":{"name":"store_literal_in_memory_64609d8b93c93a06b98d7db7a87b04044cd4a52c5661d603bb9b90ad8b914a3a","nodeType":"YulIdentifier","src":"12249:88:61"},"nodeType":"YulFunctionCall","src":"12249:93:61"},"nodeType":"YulExpressionStatement","src":"12249:93:61"},{"nodeType":"YulAssignment","src":"12351:19:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12362:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"12367:2:61","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12358:3:61"},"nodeType":"YulFunctionCall","src":"12358:12:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"12351:3:61"}]}]},"name":"abi_encode_t_stringliteral_64609d8b93c93a06b98d7db7a87b04044cd4a52c5661d603bb9b90ad8b914a3a_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"12144:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"12152:3:61","type":""}],"src":"12010:366:61"},{"body":{"nodeType":"YulBlock","src":"12553:248:61","statements":[{"nodeType":"YulAssignment","src":"12563:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12575:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"12586:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12571:3:61"},"nodeType":"YulFunctionCall","src":"12571:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12563:4:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12610:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"12621:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12606:3:61"},"nodeType":"YulFunctionCall","src":"12606:17:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"12629:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"12635:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12625:3:61"},"nodeType":"YulFunctionCall","src":"12625:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12599:6:61"},"nodeType":"YulFunctionCall","src":"12599:47:61"},"nodeType":"YulExpressionStatement","src":"12599:47:61"},{"nodeType":"YulAssignment","src":"12655:139:61","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"12789:4:61"}],"functionName":{"name":"abi_encode_t_stringliteral_64609d8b93c93a06b98d7db7a87b04044cd4a52c5661d603bb9b90ad8b914a3a_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"12663:124:61"},"nodeType":"YulFunctionCall","src":"12663:131:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"12655:4:61"}]}]},"name":"abi_encode_tuple_t_stringliteral_64609d8b93c93a06b98d7db7a87b04044cd4a52c5661d603bb9b90ad8b914a3a__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12533:9:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"12548:4:61","type":""}],"src":"12382:419:61"},{"body":{"nodeType":"YulBlock","src":"12913:134:61","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"12935:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"12943:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12931:3:61"},"nodeType":"YulFunctionCall","src":"12931:14:61"},{"hexValue":"4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f","kind":"string","nodeType":"YulLiteral","src":"12947:34:61","type":"","value":"LibDiamondCut: Can't add functio"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12924:6:61"},"nodeType":"YulFunctionCall","src":"12924:58:61"},"nodeType":"YulExpressionStatement","src":"12924:58:61"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"13003:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"13011:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12999:3:61"},"nodeType":"YulFunctionCall","src":"12999:15:61"},{"hexValue":"6e207468617420616c726561647920657869737473","kind":"string","nodeType":"YulLiteral","src":"13016:23:61","type":"","value":"n that already exists"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12992:6:61"},"nodeType":"YulFunctionCall","src":"12992:48:61"},"nodeType":"YulExpressionStatement","src":"12992:48:61"}]},"name":"store_literal_in_memory_99a7418ee014d613f46da44561258cdbb58064508097483a319062b99fa37700","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"12905:6:61","type":""}],"src":"12807:240:61"},{"body":{"nodeType":"YulBlock","src":"13199:220:61","statements":[{"nodeType":"YulAssignment","src":"13209:74:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13275:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"13280:2:61","type":"","value":"53"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"13216:58:61"},"nodeType":"YulFunctionCall","src":"13216:67:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"13209:3:61"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13381:3:61"}],"functionName":{"name":"store_literal_in_memory_99a7418ee014d613f46da44561258cdbb58064508097483a319062b99fa37700","nodeType":"YulIdentifier","src":"13292:88:61"},"nodeType":"YulFunctionCall","src":"13292:93:61"},"nodeType":"YulExpressionStatement","src":"13292:93:61"},{"nodeType":"YulAssignment","src":"13394:19:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13405:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"13410:2:61","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13401:3:61"},"nodeType":"YulFunctionCall","src":"13401:12:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"13394:3:61"}]}]},"name":"abi_encode_t_stringliteral_99a7418ee014d613f46da44561258cdbb58064508097483a319062b99fa37700_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"13187:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"13195:3:61","type":""}],"src":"13053:366:61"},{"body":{"nodeType":"YulBlock","src":"13596:248:61","statements":[{"nodeType":"YulAssignment","src":"13606:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13618:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"13629:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13614:3:61"},"nodeType":"YulFunctionCall","src":"13614:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13606:4:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13653:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"13664:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13649:3:61"},"nodeType":"YulFunctionCall","src":"13649:17:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"13672:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"13678:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"13668:3:61"},"nodeType":"YulFunctionCall","src":"13668:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13642:6:61"},"nodeType":"YulFunctionCall","src":"13642:47:61"},"nodeType":"YulExpressionStatement","src":"13642:47:61"},{"nodeType":"YulAssignment","src":"13698:139:61","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"13832:4:61"}],"functionName":{"name":"abi_encode_t_stringliteral_99a7418ee014d613f46da44561258cdbb58064508097483a319062b99fa37700_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"13706:124:61"},"nodeType":"YulFunctionCall","src":"13706:131:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13698:4:61"}]}]},"name":"abi_encode_tuple_t_stringliteral_99a7418ee014d613f46da44561258cdbb58064508097483a319062b99fa37700__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13576:9:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"13591:4:61","type":""}],"src":"13425:419:61"},{"body":{"nodeType":"YulBlock","src":"13894:65:61","statements":[{"nodeType":"YulAssignment","src":"13904:49:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"13919:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"13926:26:61","type":"","value":"0xffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"13915:3:61"},"nodeType":"YulFunctionCall","src":"13915:38:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"13904:7:61"}]}]},"name":"cleanup_t_uint96","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"13876:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"13886:7:61","type":""}],"src":"13850:109:61"},{"body":{"nodeType":"YulBlock","src":"14007:149:61","statements":[{"nodeType":"YulAssignment","src":"14017:32:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"14043:5:61"}],"functionName":{"name":"cleanup_t_uint96","nodeType":"YulIdentifier","src":"14026:16:61"},"nodeType":"YulFunctionCall","src":"14026:23:61"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"14017:5:61"}]},{"body":{"nodeType":"YulBlock","src":"14099:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"14101:16:61"},"nodeType":"YulFunctionCall","src":"14101:18:61"},"nodeType":"YulExpressionStatement","src":"14101:18:61"}]},"condition":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"14064:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"14071:26:61","type":"","value":"0xffffffffffffffffffffffff"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"14061:2:61"},"nodeType":"YulFunctionCall","src":"14061:37:61"},"nodeType":"YulIf","src":"14058:63:61"},{"nodeType":"YulAssignment","src":"14130:20:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"14141:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"14148:1:61","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14137:3:61"},"nodeType":"YulFunctionCall","src":"14137:13:61"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"14130:3:61"}]}]},"name":"increment_t_uint96","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"13993:5:61","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"14003:3:61","type":""}],"src":"13965:191:61"},{"body":{"nodeType":"YulBlock","src":"14268:137:61","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"14290:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"14298:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14286:3:61"},"nodeType":"YulFunctionCall","src":"14286:14:61"},{"hexValue":"4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e","kind":"string","nodeType":"YulLiteral","src":"14302:34:61","type":"","value":"LibDiamondCut: Can't replace fun"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14279:6:61"},"nodeType":"YulFunctionCall","src":"14279:58:61"},"nodeType":"YulExpressionStatement","src":"14279:58:61"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"14358:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"14366:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14354:3:61"},"nodeType":"YulFunctionCall","src":"14354:15:61"},{"hexValue":"6374696f6e20776974682073616d652066756e6374696f6e","kind":"string","nodeType":"YulLiteral","src":"14371:26:61","type":"","value":"ction with same function"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14347:6:61"},"nodeType":"YulFunctionCall","src":"14347:51:61"},"nodeType":"YulExpressionStatement","src":"14347:51:61"}]},"name":"store_literal_in_memory_b5a7112edf707196456f338fdcc19cd849be6cb8c0d166bcd035f4cfb00e7078","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"14260:6:61","type":""}],"src":"14162:243:61"},{"body":{"nodeType":"YulBlock","src":"14557:220:61","statements":[{"nodeType":"YulAssignment","src":"14567:74:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14633:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"14638:2:61","type":"","value":"56"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"14574:58:61"},"nodeType":"YulFunctionCall","src":"14574:67:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"14567:3:61"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14739:3:61"}],"functionName":{"name":"store_literal_in_memory_b5a7112edf707196456f338fdcc19cd849be6cb8c0d166bcd035f4cfb00e7078","nodeType":"YulIdentifier","src":"14650:88:61"},"nodeType":"YulFunctionCall","src":"14650:93:61"},"nodeType":"YulExpressionStatement","src":"14650:93:61"},{"nodeType":"YulAssignment","src":"14752:19:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14763:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"14768:2:61","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14759:3:61"},"nodeType":"YulFunctionCall","src":"14759:12:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"14752:3:61"}]}]},"name":"abi_encode_t_stringliteral_b5a7112edf707196456f338fdcc19cd849be6cb8c0d166bcd035f4cfb00e7078_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"14545:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"14553:3:61","type":""}],"src":"14411:366:61"},{"body":{"nodeType":"YulBlock","src":"14954:248:61","statements":[{"nodeType":"YulAssignment","src":"14964:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14976:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"14987:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14972:3:61"},"nodeType":"YulFunctionCall","src":"14972:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"14964:4:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15011:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"15022:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15007:3:61"},"nodeType":"YulFunctionCall","src":"15007:17:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"15030:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"15036:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"15026:3:61"},"nodeType":"YulFunctionCall","src":"15026:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15000:6:61"},"nodeType":"YulFunctionCall","src":"15000:47:61"},"nodeType":"YulExpressionStatement","src":"15000:47:61"},{"nodeType":"YulAssignment","src":"15056:139:61","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"15190:4:61"}],"functionName":{"name":"abi_encode_t_stringliteral_b5a7112edf707196456f338fdcc19cd849be6cb8c0d166bcd035f4cfb00e7078_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"15064:124:61"},"nodeType":"YulFunctionCall","src":"15064:131:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"15056:4:61"}]}]},"name":"abi_encode_tuple_t_stringliteral_b5a7112edf707196456f338fdcc19cd849be6cb8c0d166bcd035f4cfb00e7078__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"14934:9:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"14949:4:61","type":""}],"src":"14783:419:61"},{"body":{"nodeType":"YulBlock","src":"15314:135:61","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"15336:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"15344:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15332:3:61"},"nodeType":"YulFunctionCall","src":"15332:14:61"},{"hexValue":"4c69624469616d6f6e644375743a2052656d6f76652066616365742061646472","kind":"string","nodeType":"YulLiteral","src":"15348:34:61","type":"","value":"LibDiamondCut: Remove facet addr"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15325:6:61"},"nodeType":"YulFunctionCall","src":"15325:58:61"},"nodeType":"YulExpressionStatement","src":"15325:58:61"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"15404:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"15412:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15400:3:61"},"nodeType":"YulFunctionCall","src":"15400:15:61"},{"hexValue":"657373206d7573742062652061646472657373283029","kind":"string","nodeType":"YulLiteral","src":"15417:24:61","type":"","value":"ess must be address(0)"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15393:6:61"},"nodeType":"YulFunctionCall","src":"15393:49:61"},"nodeType":"YulExpressionStatement","src":"15393:49:61"}]},"name":"store_literal_in_memory_b739aae768f79b96e91d9f66398733516895e39eb09ee54a795b49dcc77504d4","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"15306:6:61","type":""}],"src":"15208:241:61"},{"body":{"nodeType":"YulBlock","src":"15601:220:61","statements":[{"nodeType":"YulAssignment","src":"15611:74:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"15677:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"15682:2:61","type":"","value":"54"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"15618:58:61"},"nodeType":"YulFunctionCall","src":"15618:67:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"15611:3:61"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"15783:3:61"}],"functionName":{"name":"store_literal_in_memory_b739aae768f79b96e91d9f66398733516895e39eb09ee54a795b49dcc77504d4","nodeType":"YulIdentifier","src":"15694:88:61"},"nodeType":"YulFunctionCall","src":"15694:93:61"},"nodeType":"YulExpressionStatement","src":"15694:93:61"},{"nodeType":"YulAssignment","src":"15796:19:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"15807:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"15812:2:61","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15803:3:61"},"nodeType":"YulFunctionCall","src":"15803:12:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"15796:3:61"}]}]},"name":"abi_encode_t_stringliteral_b739aae768f79b96e91d9f66398733516895e39eb09ee54a795b49dcc77504d4_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"15589:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"15597:3:61","type":""}],"src":"15455:366:61"},{"body":{"nodeType":"YulBlock","src":"15998:248:61","statements":[{"nodeType":"YulAssignment","src":"16008:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16020:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"16031:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16016:3:61"},"nodeType":"YulFunctionCall","src":"16016:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"16008:4:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16055:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"16066:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16051:3:61"},"nodeType":"YulFunctionCall","src":"16051:17:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"16074:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"16080:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"16070:3:61"},"nodeType":"YulFunctionCall","src":"16070:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16044:6:61"},"nodeType":"YulFunctionCall","src":"16044:47:61"},"nodeType":"YulExpressionStatement","src":"16044:47:61"},{"nodeType":"YulAssignment","src":"16100:139:61","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"16234:4:61"}],"functionName":{"name":"abi_encode_t_stringliteral_b739aae768f79b96e91d9f66398733516895e39eb09ee54a795b49dcc77504d4_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"16108:124:61"},"nodeType":"YulFunctionCall","src":"16108:131:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"16100:4:61"}]}]},"name":"abi_encode_tuple_t_stringliteral_b739aae768f79b96e91d9f66398733516895e39eb09ee54a795b49dcc77504d4__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"15978:9:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"15993:4:61","type":""}],"src":"15827:419:61"},{"body":{"nodeType":"YulBlock","src":"16365:34:61","statements":[{"nodeType":"YulAssignment","src":"16375:18:61","value":{"name":"pos","nodeType":"YulIdentifier","src":"16390:3:61"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"16375:11:61"}]}]},"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"16337:3:61","type":""},{"name":"length","nodeType":"YulTypedName","src":"16342:6:61","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"16353:11:61","type":""}],"src":"16252:147:61"},{"body":{"nodeType":"YulBlock","src":"16513:278:61","statements":[{"nodeType":"YulVariableDeclaration","src":"16523:52:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"16569:5:61"}],"functionName":{"name":"array_length_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"16537:31:61"},"nodeType":"YulFunctionCall","src":"16537:38:61"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"16527:6:61","type":""}]},{"nodeType":"YulAssignment","src":"16584:95:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16667:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"16672:6:61"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"16591:75:61"},"nodeType":"YulFunctionCall","src":"16591:88:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"16584:3:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"16727:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"16734:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16723:3:61"},"nodeType":"YulFunctionCall","src":"16723:16:61"},{"name":"pos","nodeType":"YulIdentifier","src":"16741:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"16746:6:61"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"16688:34:61"},"nodeType":"YulFunctionCall","src":"16688:65:61"},"nodeType":"YulExpressionStatement","src":"16688:65:61"},{"nodeType":"YulAssignment","src":"16762:23:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16773:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"16778:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16769:3:61"},"nodeType":"YulFunctionCall","src":"16769:16:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"16762:3:61"}]}]},"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"16494:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"16501:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"16509:3:61","type":""}],"src":"16405:386:61"},{"body":{"nodeType":"YulBlock","src":"16931:137:61","statements":[{"nodeType":"YulAssignment","src":"16942:100:61","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"17029:6:61"},{"name":"pos","nodeType":"YulIdentifier","src":"17038:3:61"}],"functionName":{"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"16949:79:61"},"nodeType":"YulFunctionCall","src":"16949:93:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"16942:3:61"}]},{"nodeType":"YulAssignment","src":"17052:10:61","value":{"name":"pos","nodeType":"YulIdentifier","src":"17059:3:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"17052:3:61"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"16910:3:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"16916:6:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"16927:3:61","type":""}],"src":"16797:271:61"},{"body":{"nodeType":"YulBlock","src":"17218:275:61","statements":[{"nodeType":"YulAssignment","src":"17228:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17240:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"17251:2:61","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17236:3:61"},"nodeType":"YulFunctionCall","src":"17236:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"17228:4:61"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"17308:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17321:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"17332:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17317:3:61"},"nodeType":"YulFunctionCall","src":"17317:17:61"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"17264:43:61"},"nodeType":"YulFunctionCall","src":"17264:71:61"},"nodeType":"YulExpressionStatement","src":"17264:71:61"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17356:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"17367:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17352:3:61"},"nodeType":"YulFunctionCall","src":"17352:18:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"17376:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"17382:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"17372:3:61"},"nodeType":"YulFunctionCall","src":"17372:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17345:6:61"},"nodeType":"YulFunctionCall","src":"17345:48:61"},"nodeType":"YulExpressionStatement","src":"17345:48:61"},{"nodeType":"YulAssignment","src":"17402:84:61","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"17472:6:61"},{"name":"tail","nodeType":"YulIdentifier","src":"17481:4:61"}],"functionName":{"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"17410:61:61"},"nodeType":"YulFunctionCall","src":"17410:76:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"17402:4:61"}]}]},"name":"abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"17182:9:61","type":""},{"name":"value1","nodeType":"YulTypedName","src":"17194:6:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"17202:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"17213:4:61","type":""}],"src":"17074:419:61"},{"body":{"nodeType":"YulBlock","src":"17605:136:61","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"17627:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"17635:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17623:3:61"},"nodeType":"YulFunctionCall","src":"17623:14:61"},{"hexValue":"4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e63","kind":"string","nodeType":"YulLiteral","src":"17639:34:61","type":"","value":"LibDiamondCut: Can't remove func"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17616:6:61"},"nodeType":"YulFunctionCall","src":"17616:58:61"},"nodeType":"YulExpressionStatement","src":"17616:58:61"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"17695:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"17703:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17691:3:61"},"nodeType":"YulFunctionCall","src":"17691:15:61"},{"hexValue":"74696f6e207468617420646f65736e2774206578697374","kind":"string","nodeType":"YulLiteral","src":"17708:25:61","type":"","value":"tion that doesn't exist"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17684:6:61"},"nodeType":"YulFunctionCall","src":"17684:50:61"},"nodeType":"YulExpressionStatement","src":"17684:50:61"}]},"name":"store_literal_in_memory_2c590e498c4d56c984a7092fd5e89a68b9f4541ce9f97252fb74e44a00ffbb71","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"17597:6:61","type":""}],"src":"17499:242:61"},{"body":{"nodeType":"YulBlock","src":"17893:220:61","statements":[{"nodeType":"YulAssignment","src":"17903:74:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17969:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"17974:2:61","type":"","value":"55"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"17910:58:61"},"nodeType":"YulFunctionCall","src":"17910:67:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"17903:3:61"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18075:3:61"}],"functionName":{"name":"store_literal_in_memory_2c590e498c4d56c984a7092fd5e89a68b9f4541ce9f97252fb74e44a00ffbb71","nodeType":"YulIdentifier","src":"17986:88:61"},"nodeType":"YulFunctionCall","src":"17986:93:61"},"nodeType":"YulExpressionStatement","src":"17986:93:61"},{"nodeType":"YulAssignment","src":"18088:19:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18099:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"18104:2:61","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18095:3:61"},"nodeType":"YulFunctionCall","src":"18095:12:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"18088:3:61"}]}]},"name":"abi_encode_t_stringliteral_2c590e498c4d56c984a7092fd5e89a68b9f4541ce9f97252fb74e44a00ffbb71_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"17881:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"17889:3:61","type":""}],"src":"17747:366:61"},{"body":{"nodeType":"YulBlock","src":"18290:248:61","statements":[{"nodeType":"YulAssignment","src":"18300:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18312:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"18323:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18308:3:61"},"nodeType":"YulFunctionCall","src":"18308:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"18300:4:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18347:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"18358:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18343:3:61"},"nodeType":"YulFunctionCall","src":"18343:17:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"18366:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"18372:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"18362:3:61"},"nodeType":"YulFunctionCall","src":"18362:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18336:6:61"},"nodeType":"YulFunctionCall","src":"18336:47:61"},"nodeType":"YulExpressionStatement","src":"18336:47:61"},{"nodeType":"YulAssignment","src":"18392:139:61","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"18526:4:61"}],"functionName":{"name":"abi_encode_t_stringliteral_2c590e498c4d56c984a7092fd5e89a68b9f4541ce9f97252fb74e44a00ffbb71_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"18400:124:61"},"nodeType":"YulFunctionCall","src":"18400:131:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"18392:4:61"}]}]},"name":"abi_encode_tuple_t_stringliteral_2c590e498c4d56c984a7092fd5e89a68b9f4541ce9f97252fb74e44a00ffbb71__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"18270:9:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"18285:4:61","type":""}],"src":"18119:419:61"},{"body":{"nodeType":"YulBlock","src":"18650:127:61","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"18672:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"18680:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18668:3:61"},"nodeType":"YulFunctionCall","src":"18668:14:61"},{"hexValue":"4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d75","kind":"string","nodeType":"YulLiteral","src":"18684:34:61","type":"","value":"LibDiamondCut: Can't remove immu"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18661:6:61"},"nodeType":"YulFunctionCall","src":"18661:58:61"},"nodeType":"YulExpressionStatement","src":"18661:58:61"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"18740:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"18748:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18736:3:61"},"nodeType":"YulFunctionCall","src":"18736:15:61"},{"hexValue":"7461626c652066756e6374696f6e","kind":"string","nodeType":"YulLiteral","src":"18753:16:61","type":"","value":"table function"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18729:6:61"},"nodeType":"YulFunctionCall","src":"18729:41:61"},"nodeType":"YulExpressionStatement","src":"18729:41:61"}]},"name":"store_literal_in_memory_8ba063dfaa4be2d2cbe73dbb1364728b0f7031ac048441d5fad19e9541992b21","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"18642:6:61","type":""}],"src":"18544:233:61"},{"body":{"nodeType":"YulBlock","src":"18929:220:61","statements":[{"nodeType":"YulAssignment","src":"18939:74:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"19005:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"19010:2:61","type":"","value":"46"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"18946:58:61"},"nodeType":"YulFunctionCall","src":"18946:67:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"18939:3:61"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"19111:3:61"}],"functionName":{"name":"store_literal_in_memory_8ba063dfaa4be2d2cbe73dbb1364728b0f7031ac048441d5fad19e9541992b21","nodeType":"YulIdentifier","src":"19022:88:61"},"nodeType":"YulFunctionCall","src":"19022:93:61"},"nodeType":"YulExpressionStatement","src":"19022:93:61"},{"nodeType":"YulAssignment","src":"19124:19:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"19135:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"19140:2:61","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19131:3:61"},"nodeType":"YulFunctionCall","src":"19131:12:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"19124:3:61"}]}]},"name":"abi_encode_t_stringliteral_8ba063dfaa4be2d2cbe73dbb1364728b0f7031ac048441d5fad19e9541992b21_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"18917:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"18925:3:61","type":""}],"src":"18783:366:61"},{"body":{"nodeType":"YulBlock","src":"19326:248:61","statements":[{"nodeType":"YulAssignment","src":"19336:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19348:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"19359:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19344:3:61"},"nodeType":"YulFunctionCall","src":"19344:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"19336:4:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19383:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"19394:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19379:3:61"},"nodeType":"YulFunctionCall","src":"19379:17:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"19402:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"19408:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"19398:3:61"},"nodeType":"YulFunctionCall","src":"19398:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19372:6:61"},"nodeType":"YulFunctionCall","src":"19372:47:61"},"nodeType":"YulExpressionStatement","src":"19372:47:61"},{"nodeType":"YulAssignment","src":"19428:139:61","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"19562:4:61"}],"functionName":{"name":"abi_encode_t_stringliteral_8ba063dfaa4be2d2cbe73dbb1364728b0f7031ac048441d5fad19e9541992b21_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"19436:124:61"},"nodeType":"YulFunctionCall","src":"19436:131:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"19428:4:61"}]}]},"name":"abi_encode_tuple_t_stringliteral_8ba063dfaa4be2d2cbe73dbb1364728b0f7031ac048441d5fad19e9541992b21__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"19306:9:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"19321:4:61","type":""}],"src":"19155:419:61"},{"body":{"nodeType":"YulBlock","src":"19625:149:61","statements":[{"nodeType":"YulAssignment","src":"19635:25:61","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"19658:1:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"19640:17:61"},"nodeType":"YulFunctionCall","src":"19640:20:61"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"19635:1:61"}]},{"nodeType":"YulAssignment","src":"19669:25:61","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"19692:1:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"19674:17:61"},"nodeType":"YulFunctionCall","src":"19674:20:61"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"19669:1:61"}]},{"nodeType":"YulAssignment","src":"19703:17:61","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"19715:1:61"},{"name":"y","nodeType":"YulIdentifier","src":"19718:1:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"19711:3:61"},"nodeType":"YulFunctionCall","src":"19711:9:61"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"19703:4:61"}]},{"body":{"nodeType":"YulBlock","src":"19745:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"19747:16:61"},"nodeType":"YulFunctionCall","src":"19747:18:61"},"nodeType":"YulExpressionStatement","src":"19747:18:61"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"19736:4:61"},{"name":"x","nodeType":"YulIdentifier","src":"19742:1:61"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"19733:2:61"},"nodeType":"YulFunctionCall","src":"19733:11:61"},"nodeType":"YulIf","src":"19730:37:61"}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"19611:1:61","type":""},{"name":"y","nodeType":"YulTypedName","src":"19614:1:61","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"19620:4:61","type":""}],"src":"19580:194:61"},{"body":{"nodeType":"YulBlock","src":"19808:152:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"19825:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"19828:77:61","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19818:6:61"},"nodeType":"YulFunctionCall","src":"19818:88:61"},"nodeType":"YulExpressionStatement","src":"19818:88:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"19922:1:61","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"19925:4:61","type":"","value":"0x31"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19915:6:61"},"nodeType":"YulFunctionCall","src":"19915:15:61"},"nodeType":"YulExpressionStatement","src":"19915:15:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"19946:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"19949:4:61","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"19939:6:61"},"nodeType":"YulFunctionCall","src":"19939:15:61"},"nodeType":"YulExpressionStatement","src":"19939:15:61"}]},"name":"panic_error_0x31","nodeType":"YulFunctionDefinition","src":"19780:180:61"},{"body":{"nodeType":"YulBlock","src":"20025:40:61","statements":[{"nodeType":"YulAssignment","src":"20036:22:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"20052:5:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"20046:5:61"},"nodeType":"YulFunctionCall","src":"20046:12:61"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"20036:6:61"}]}]},"name":"array_length_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"20008:5:61","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"20018:6:61","type":""}],"src":"19966:99:61"},{"body":{"nodeType":"YulBlock","src":"20163:285:61","statements":[{"nodeType":"YulVariableDeclaration","src":"20173:53:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"20220:5:61"}],"functionName":{"name":"array_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"20187:32:61"},"nodeType":"YulFunctionCall","src":"20187:39:61"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"20177:6:61","type":""}]},{"nodeType":"YulAssignment","src":"20235:78:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"20301:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"20306:6:61"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"20242:58:61"},"nodeType":"YulFunctionCall","src":"20242:71:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"20235:3:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"20361:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"20368:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20357:3:61"},"nodeType":"YulFunctionCall","src":"20357:16:61"},{"name":"pos","nodeType":"YulIdentifier","src":"20375:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"20380:6:61"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"20322:34:61"},"nodeType":"YulFunctionCall","src":"20322:65:61"},"nodeType":"YulExpressionStatement","src":"20322:65:61"},{"nodeType":"YulAssignment","src":"20396:46:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"20407:3:61"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"20434:6:61"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"20412:21:61"},"nodeType":"YulFunctionCall","src":"20412:29:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20403:3:61"},"nodeType":"YulFunctionCall","src":"20403:39:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"20396:3:61"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"20144:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"20151:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"20159:3:61","type":""}],"src":"20071:377:61"},{"body":{"nodeType":"YulBlock","src":"20572:195:61","statements":[{"nodeType":"YulAssignment","src":"20582:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20594:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"20605:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20590:3:61"},"nodeType":"YulFunctionCall","src":"20590:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"20582:4:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20629:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"20640:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20625:3:61"},"nodeType":"YulFunctionCall","src":"20625:17:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"20648:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"20654:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"20644:3:61"},"nodeType":"YulFunctionCall","src":"20644:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20618:6:61"},"nodeType":"YulFunctionCall","src":"20618:47:61"},"nodeType":"YulExpressionStatement","src":"20618:47:61"},{"nodeType":"YulAssignment","src":"20674:86:61","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"20746:6:61"},{"name":"tail","nodeType":"YulIdentifier","src":"20755:4:61"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"20682:63:61"},"nodeType":"YulFunctionCall","src":"20682:78:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"20674:4:61"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"20544:9:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"20556:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"20567:4:61","type":""}],"src":"20454:313:61"}]},"contents":"{\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function store_literal_in_memory_6e6486aeb9db70da259b7171a739046119facaec2d8a6bd46f1145fe8391014a(memPtr) {\n\n mstore(add(memPtr, 0), \"Diamond: Function does not exist\")\n\n }\n\n function abi_encode_t_stringliteral_6e6486aeb9db70da259b7171a739046119facaec2d8a6bd46f1145fe8391014a_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 32)\n store_literal_in_memory_6e6486aeb9db70da259b7171a739046119facaec2d8a6bd46f1145fe8391014a(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_6e6486aeb9db70da259b7171a739046119facaec2d8a6bd46f1145fe8391014a__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_6e6486aeb9db70da259b7171a739046119facaec2d8a6bd46f1145fe8391014a_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function panic_error_0x32() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n\n function panic_error_0x21() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n\n function store_literal_in_memory_48267d8daf5ea9c6bbad1fe9c53dc4c04a2a01b2b85bad432956cf42f45b2f54(memPtr) {\n\n mstore(add(memPtr, 0), \"LibDiamondCut: Incorrect FacetCu\")\n\n mstore(add(memPtr, 32), \"tAction\")\n\n }\n\n function abi_encode_t_stringliteral_48267d8daf5ea9c6bbad1fe9c53dc4c04a2a01b2b85bad432956cf42f45b2f54_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 39)\n store_literal_in_memory_48267d8daf5ea9c6bbad1fe9c53dc4c04a2a01b2b85bad432956cf42f45b2f54(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_48267d8daf5ea9c6bbad1fe9c53dc4c04a2a01b2b85bad432956cf42f45b2f54__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_48267d8daf5ea9c6bbad1fe9c53dc4c04a2a01b2b85bad432956cf42f45b2f54_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function increment_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n ret := add(value, 1)\n }\n\n function array_length_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function array_dataslot_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr(ptr) -> data {\n data := ptr\n\n data := add(ptr, 0x20)\n\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function abi_encode_t_address_to_t_address(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function validator_assert_t_enum$_FacetCutAction_$11808(value) {\n if iszero(lt(value, 3)) { panic_error_0x21() }\n }\n\n function cleanup_t_enum$_FacetCutAction_$11808(value) -> cleaned {\n cleaned := value validator_assert_t_enum$_FacetCutAction_$11808(value)\n }\n\n function convert_t_enum$_FacetCutAction_$11808_to_t_uint8(value) -> converted {\n converted := cleanup_t_enum$_FacetCutAction_$11808(value)\n }\n\n function abi_encode_t_enum$_FacetCutAction_$11808_to_t_uint8(value, pos) {\n mstore(pos, convert_t_enum$_FacetCutAction_$11808_to_t_uint8(value))\n }\n\n function array_length_t_array$_t_bytes4_$dyn_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_array$_t_bytes4_$dyn_memory_ptr(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function array_dataslot_t_array$_t_bytes4_$dyn_memory_ptr(ptr) -> data {\n data := ptr\n\n data := add(ptr, 0x20)\n\n }\n\n function cleanup_t_bytes4(value) -> cleaned {\n cleaned := and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000)\n }\n\n function abi_encode_t_bytes4_to_t_bytes4(value, pos) {\n mstore(pos, cleanup_t_bytes4(value))\n }\n\n function abi_encodeUpdatedPos_t_bytes4_to_t_bytes4(value0, pos) -> updatedPos {\n abi_encode_t_bytes4_to_t_bytes4(value0, pos)\n updatedPos := add(pos, 0x20)\n }\n\n function array_nextElement_t_array$_t_bytes4_$dyn_memory_ptr(ptr) -> next {\n next := add(ptr, 0x20)\n }\n\n // bytes4[] -> bytes4[]\n function abi_encode_t_array$_t_bytes4_$dyn_memory_ptr_to_t_array$_t_bytes4_$dyn_memory_ptr(value, pos) -> end {\n let length := array_length_t_array$_t_bytes4_$dyn_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_array$_t_bytes4_$dyn_memory_ptr(pos, length)\n let baseRef := array_dataslot_t_array$_t_bytes4_$dyn_memory_ptr(value)\n let srcPtr := baseRef\n for { let i := 0 } lt(i, length) { i := add(i, 1) }\n {\n let elementValue0 := mload(srcPtr)\n pos := abi_encodeUpdatedPos_t_bytes4_to_t_bytes4(elementValue0, pos)\n srcPtr := array_nextElement_t_array$_t_bytes4_$dyn_memory_ptr(srcPtr)\n }\n end := pos\n }\n\n // struct ICut.FacetCut -> struct ICut.FacetCut\n function abi_encode_t_struct$_FacetCut_$11817_memory_ptr_to_t_struct$_FacetCut_$11817_memory_ptr(value, pos) -> end {\n let tail := add(pos, 0x60)\n\n {\n // facetAddress\n\n let memberValue0 := mload(add(value, 0x00))\n abi_encode_t_address_to_t_address(memberValue0, add(pos, 0x00))\n }\n\n {\n // action\n\n let memberValue0 := mload(add(value, 0x20))\n abi_encode_t_enum$_FacetCutAction_$11808_to_t_uint8(memberValue0, add(pos, 0x20))\n }\n\n {\n // functionSelectors\n\n let memberValue0 := mload(add(value, 0x40))\n\n mstore(add(pos, 0x40), sub(tail, pos))\n tail := abi_encode_t_array$_t_bytes4_$dyn_memory_ptr_to_t_array$_t_bytes4_$dyn_memory_ptr(memberValue0, tail)\n\n }\n\n end := tail\n }\n\n function abi_encodeUpdatedPos_t_struct$_FacetCut_$11817_memory_ptr_to_t_struct$_FacetCut_$11817_memory_ptr(value0, pos) -> updatedPos {\n updatedPos := abi_encode_t_struct$_FacetCut_$11817_memory_ptr_to_t_struct$_FacetCut_$11817_memory_ptr(value0, pos)\n }\n\n function array_nextElement_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr(ptr) -> next {\n next := add(ptr, 0x20)\n }\n\n // struct ICut.FacetCut[] -> struct ICut.FacetCut[]\n function abi_encode_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_fromStack(pos, length)\n let headStart := pos\n let tail := add(pos, mul(length, 0x20))\n let baseRef := array_dataslot_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr(value)\n let srcPtr := baseRef\n for { let i := 0 } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, sub(tail, headStart))\n let elementValue0 := mload(srcPtr)\n tail := abi_encodeUpdatedPos_t_struct$_FacetCut_$11817_memory_ptr_to_t_struct$_FacetCut_$11817_memory_ptr(elementValue0, tail)\n srcPtr := array_nextElement_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr(srcPtr)\n pos := add(pos, 0x20)\n }\n pos := tail\n end := pos\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function array_length_t_bytes_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function copy_memory_to_memory_with_cleanup(src, dst, length) {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_bytes_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_t_address_t_bytes_memory_ptr__to_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_fromStack(value0, tail)\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n mstore(add(headStart, 64), sub(tail, headStart))\n tail := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value2, tail)\n\n }\n\n function store_literal_in_memory_1ffc682bcfedefd5e93ba9ed0c2d1bc0b18319886e3b4bd28a03a3d3729f85c0(memPtr) {\n\n mstore(add(memPtr, 0), \"LibDiamondCut: No selectors in f\")\n\n mstore(add(memPtr, 32), \"acet to cut\")\n\n }\n\n function abi_encode_t_stringliteral_1ffc682bcfedefd5e93ba9ed0c2d1bc0b18319886e3b4bd28a03a3d3729f85c0_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 43)\n store_literal_in_memory_1ffc682bcfedefd5e93ba9ed0c2d1bc0b18319886e3b4bd28a03a3d3729f85c0(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_1ffc682bcfedefd5e93ba9ed0c2d1bc0b18319886e3b4bd28a03a3d3729f85c0__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_1ffc682bcfedefd5e93ba9ed0c2d1bc0b18319886e3b4bd28a03a3d3729f85c0_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_64609d8b93c93a06b98d7db7a87b04044cd4a52c5661d603bb9b90ad8b914a3a(memPtr) {\n\n mstore(add(memPtr, 0), \"LibDiamondCut: Add facet can't b\")\n\n mstore(add(memPtr, 32), \"e address(0)\")\n\n }\n\n function abi_encode_t_stringliteral_64609d8b93c93a06b98d7db7a87b04044cd4a52c5661d603bb9b90ad8b914a3a_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 44)\n store_literal_in_memory_64609d8b93c93a06b98d7db7a87b04044cd4a52c5661d603bb9b90ad8b914a3a(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_64609d8b93c93a06b98d7db7a87b04044cd4a52c5661d603bb9b90ad8b914a3a__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_64609d8b93c93a06b98d7db7a87b04044cd4a52c5661d603bb9b90ad8b914a3a_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_99a7418ee014d613f46da44561258cdbb58064508097483a319062b99fa37700(memPtr) {\n\n mstore(add(memPtr, 0), \"LibDiamondCut: Can't add functio\")\n\n mstore(add(memPtr, 32), \"n that already exists\")\n\n }\n\n function abi_encode_t_stringliteral_99a7418ee014d613f46da44561258cdbb58064508097483a319062b99fa37700_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 53)\n store_literal_in_memory_99a7418ee014d613f46da44561258cdbb58064508097483a319062b99fa37700(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_99a7418ee014d613f46da44561258cdbb58064508097483a319062b99fa37700__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_99a7418ee014d613f46da44561258cdbb58064508097483a319062b99fa37700_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function cleanup_t_uint96(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffff)\n }\n\n function increment_t_uint96(value) -> ret {\n value := cleanup_t_uint96(value)\n if eq(value, 0xffffffffffffffffffffffff) { panic_error_0x11() }\n ret := add(value, 1)\n }\n\n function store_literal_in_memory_b5a7112edf707196456f338fdcc19cd849be6cb8c0d166bcd035f4cfb00e7078(memPtr) {\n\n mstore(add(memPtr, 0), \"LibDiamondCut: Can't replace fun\")\n\n mstore(add(memPtr, 32), \"ction with same function\")\n\n }\n\n function abi_encode_t_stringliteral_b5a7112edf707196456f338fdcc19cd849be6cb8c0d166bcd035f4cfb00e7078_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 56)\n store_literal_in_memory_b5a7112edf707196456f338fdcc19cd849be6cb8c0d166bcd035f4cfb00e7078(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_b5a7112edf707196456f338fdcc19cd849be6cb8c0d166bcd035f4cfb00e7078__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_b5a7112edf707196456f338fdcc19cd849be6cb8c0d166bcd035f4cfb00e7078_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_b739aae768f79b96e91d9f66398733516895e39eb09ee54a795b49dcc77504d4(memPtr) {\n\n mstore(add(memPtr, 0), \"LibDiamondCut: Remove facet addr\")\n\n mstore(add(memPtr, 32), \"ess must be address(0)\")\n\n }\n\n function abi_encode_t_stringliteral_b739aae768f79b96e91d9f66398733516895e39eb09ee54a795b49dcc77504d4_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 54)\n store_literal_in_memory_b739aae768f79b96e91d9f66398733516895e39eb09ee54a795b49dcc77504d4(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_b739aae768f79b96e91d9f66398733516895e39eb09ee54a795b49dcc77504d4__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_b739aae768f79b96e91d9f66398733516895e39eb09ee54a795b49dcc77504d4_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(value, pos) -> end {\n let length := array_length_t_bytes_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, length)\n }\n\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value0) -> end {\n\n pos := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(value0, pos)\n\n end := pos\n }\n\n function abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n mstore(add(headStart, 32), sub(tail, headStart))\n tail := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value1, tail)\n\n }\n\n function store_literal_in_memory_2c590e498c4d56c984a7092fd5e89a68b9f4541ce9f97252fb74e44a00ffbb71(memPtr) {\n\n mstore(add(memPtr, 0), \"LibDiamondCut: Can't remove func\")\n\n mstore(add(memPtr, 32), \"tion that doesn't exist\")\n\n }\n\n function abi_encode_t_stringliteral_2c590e498c4d56c984a7092fd5e89a68b9f4541ce9f97252fb74e44a00ffbb71_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 55)\n store_literal_in_memory_2c590e498c4d56c984a7092fd5e89a68b9f4541ce9f97252fb74e44a00ffbb71(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_2c590e498c4d56c984a7092fd5e89a68b9f4541ce9f97252fb74e44a00ffbb71__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_2c590e498c4d56c984a7092fd5e89a68b9f4541ce9f97252fb74e44a00ffbb71_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_8ba063dfaa4be2d2cbe73dbb1364728b0f7031ac048441d5fad19e9541992b21(memPtr) {\n\n mstore(add(memPtr, 0), \"LibDiamondCut: Can't remove immu\")\n\n mstore(add(memPtr, 32), \"table function\")\n\n }\n\n function abi_encode_t_stringliteral_8ba063dfaa4be2d2cbe73dbb1364728b0f7031ac048441d5fad19e9541992b21_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 46)\n store_literal_in_memory_8ba063dfaa4be2d2cbe73dbb1364728b0f7031ac048441d5fad19e9541992b21(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_8ba063dfaa4be2d2cbe73dbb1364728b0f7031ac048441d5fad19e9541992b21__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_8ba063dfaa4be2d2cbe73dbb1364728b0f7031ac048441d5fad19e9541992b21_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function checked_sub_t_uint256(x, y) -> diff {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n diff := sub(x, y)\n\n if gt(diff, x) { panic_error_0x11() }\n\n }\n\n function panic_error_0x31() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x31)\n revert(0, 0x24)\n }\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value0, tail)\n\n }\n\n}\n","id":61,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"60806040523661000b57005b6000807fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c9050809150600082600001600080357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610141576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161013890611693565b60405180910390fd5b3660008037600080366000845af43d6000803e8060008114610162573d6000f35b3d6000fd5b61017182826103a4565b5050565b60005b8351811015610359576000848281518110610196576101956116b3565b5b6020026020010151602001519050600060028111156101b8576101b76116e2565b5b8160028111156101cb576101ca6116e2565b5b0361021b576102168583815181106101e6576101e56116b3565b5b602002602001015160000151868481518110610205576102046116b3565b5b602002602001015160400151610487565b610345565b6001600281111561022f5761022e6116e2565b5b816002811115610242576102416116e2565b5b036102925761028d85838151811061025d5761025c6116b3565b5b60200260200101516000015186848151811061027c5761027b6116b3565b5b6020026020010151604001516106fe565b610344565b6002808111156102a5576102a46116e2565b5b8160028111156102b8576102b76116e2565b5b03610308576103038583815181106102d3576102d26116b3565b5b6020026020010151600001518684815181106102f2576102f16116b3565b5b60200260200101516040015161097f565b610343565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161033a90611783565b60405180910390fd5b5b5b508080610351906117dc565b915050610178565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb67383838360405161038d93929190611b48565b60405180910390a161039f8282610b0a565b505050565b6103ae8282610c2c565b6104835760016103bc610ca0565b600001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b60008151116104cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104c290611bff565b60405180910390fd5b60006104d5610ccd565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610546576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053d90611c91565b60405180910390fd5b60008160010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054905090506000816bffffffffffffffffffffffff16036105b3576105b28285610cfa565b5b60005b83518110156106f75760008482815181106105d4576105d36116b3565b5b602002602001015190506000846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146106c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106bf90611d23565b60405180910390fd5b6106d48583868a610dd5565b83806106df90611d5b565b945050505080806106ef906117dc565b9150506105b6565b5050505050565b6000815111610742576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073990611bff565b60405180910390fd5b600061074c610ccd565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036107bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b490611c91565b60405180910390fd5b60008160010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054905090506000816bffffffffffffffffffffffff160361082a576108298285610cfa565b5b60005b835181101561097857600084828151811061084b5761084a6116b3565b5b602002602001015190506000846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361093e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093590611e01565b60405180910390fd5b610949858284610f82565b6109558583868a610dd5565b838061096090611d5b565b94505050508080610970906117dc565b91505061082d565b5050505050565b60008151116109c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ba90611bff565b60405180910390fd5b60006109cd610ccd565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610a3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3590611e93565b60405180910390fd5b60005b8251811015610b04576000838281518110610a5f57610a5e6116b3565b5b602002602001015190506000836000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050610aef848284610f82565b50508080610afc906117dc565b915050610a41565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160315610c2857610b6182604051806060016040528060288152602001612124602891396115e4565b6000808373ffffffffffffffffffffffffffffffffffffffff1683604051610b899190611eef565b600060405180830381855af49150503d8060008114610bc4576040519150601f19603f3d011682016040523d82523d6000602084013e610bc9565b606091505b509150915081610c2557600081511115610be65780518082602001fd5b83836040517f192105d7000000000000000000000000000000000000000000000000000000008152600401610c1c929190611f06565b60405180910390fd5b50505b5050565b6000610c36610ca0565b600001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000807f4cd15452b25e815d3f9d1a3c7edd985a178edf5eb3461a1acbf855517423d69490508091505090565b6000807fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90508091505090565b610d1c8160405180606001604052806024815260200161214c602491396115e4565b81600201805490508260010160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555081600201819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b81846000016000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508360010160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018390806001815401808255809150506001900390600052602060002090600891828204019190066004029091909190916101000a81548163ffffffff021916908360e01c021790555080846000016000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ff1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe890611fa8565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361105f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110569061203a565b60405180910390fd5b6000836000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff169050600060018560010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000180549050611136919061205a565b90508082146112ca5760008560010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018281548110611197576111966116b3565b5b90600052602060002090600891828204019190066004029054906101000a900460e01b9050808660010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018481548110611213576112126116b3565b5b90600052602060002090600891828204019190066004026101000a81548163ffffffff021916908360e01c021790555082866000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550505b8460010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000180548061131e5761131d61208e565b5b60019003818190600052602060002090600891828204019190066004026101000a81549063ffffffff02191690559055846000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a8154906bffffffffffffffffffffffff02191690555050600081036115dd57600060018660020180549050611408919061205a565b905060008660010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050818114611549576000876002018381548110611472576114716116b3565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050808860020183815481106114b6576114b56116b3565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818860010160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550505b8660020180548061155d5761155c61208e565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590558660010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000905550505b5050505050565b6000823b9050600081118290611630576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116279190612101565b60405180910390fd5b50505050565b600082825260208201905092915050565b7f4469616d6f6e643a2046756e6374696f6e20646f6573206e6f74206578697374600082015250565b600061167d602083611636565b915061168882611647565b602082019050919050565b600060208201905081810360008301526116ac81611670565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4c69624469616d6f6e644375743a20496e636f7272656374204661636574437560008201527f74416374696f6e00000000000000000000000000000000000000000000000000602082015250565b600061176d602783611636565b915061177882611711565b604082019050919050565b6000602082019050818103600083015261179c81611760565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000819050919050565b60006117e7826117d2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611819576118186117a3565b5b600182019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061187b82611850565b9050919050565b61188b81611870565b82525050565b600381106118a2576118a16116e2565b5b50565b60008190506118b382611891565b919050565b60006118c3826118a5565b9050919050565b6118d3816118b8565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61193a81611905565b82525050565b600061194c8383611931565b60208301905092915050565b6000602082019050919050565b6000611970826118d9565b61197a81856118e4565b9350611985836118f5565b8060005b838110156119b657815161199d8882611940565b97506119a883611958565b925050600181019050611989565b5085935050505092915050565b60006060830160008301516119db6000860182611882565b5060208301516119ee60208601826118ca565b5060408301518482036040860152611a068282611965565b9150508091505092915050565b6000611a1f83836119c3565b905092915050565b6000602082019050919050565b6000611a3f82611824565b611a49818561182f565b935083602082028501611a5b85611840565b8060005b85811015611a975784840389528151611a788582611a13565b9450611a8383611a27565b925060208a01995050600181019050611a5f565b50829750879550505050505092915050565b611ab281611870565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611af2578082015181840152602081019050611ad7565b60008484015250505050565b6000601f19601f8301169050919050565b6000611b1a82611ab8565b611b248185611ac3565b9350611b34818560208601611ad4565b611b3d81611afe565b840191505092915050565b60006060820190508181036000830152611b628186611a34565b9050611b716020830185611aa9565b8181036040830152611b838184611b0f565b9050949350505050565b7f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660008201527f6163657420746f20637574000000000000000000000000000000000000000000602082015250565b6000611be9602b83611636565b9150611bf482611b8d565b604082019050919050565b60006020820190508181036000830152611c1881611bdc565b9050919050565b7f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260008201527f6520616464726573732830290000000000000000000000000000000000000000602082015250565b6000611c7b602c83611636565b9150611c8682611c1f565b604082019050919050565b60006020820190508181036000830152611caa81611c6e565b9050919050565b7f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f60008201527f6e207468617420616c7265616479206578697374730000000000000000000000602082015250565b6000611d0d603583611636565b9150611d1882611cb1565b604082019050919050565b60006020820190508181036000830152611d3c81611d00565b9050919050565b60006bffffffffffffffffffffffff82169050919050565b6000611d6682611d43565b91506bffffffffffffffffffffffff8203611d8457611d836117a3565b5b600182019050919050565b7f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60008201527f6374696f6e20776974682073616d652066756e6374696f6e0000000000000000602082015250565b6000611deb603883611636565b9150611df682611d8f565b604082019050919050565b60006020820190508181036000830152611e1a81611dde565b9050919050565b7f4c69624469616d6f6e644375743a2052656d6f7665206661636574206164647260008201527f657373206d757374206265206164647265737328302900000000000000000000602082015250565b6000611e7d603683611636565b9150611e8882611e21565b604082019050919050565b60006020820190508181036000830152611eac81611e70565b9050919050565b600081905092915050565b6000611ec982611ab8565b611ed38185611eb3565b9350611ee3818560208601611ad4565b80840191505092915050565b6000611efb8284611ebe565b915081905092915050565b6000604082019050611f1b6000830185611aa9565b8181036020830152611f2d8184611b0f565b90509392505050565b7f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360008201527f74696f6e207468617420646f65736e2774206578697374000000000000000000602082015250565b6000611f92603783611636565b9150611f9d82611f36565b604082019050919050565b60006020820190508181036000830152611fc181611f85565b9050919050565b7f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560008201527f7461626c652066756e6374696f6e000000000000000000000000000000000000602082015250565b6000612024602e83611636565b915061202f82611fc8565b604082019050919050565b6000602082019050818103600083015261205381612017565b9050919050565b6000612065826117d2565b9150612070836117d2565b9250828203905081811115612088576120876117a3565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600081519050919050565b60006120d3826120bd565b6120dd8185611636565b93506120ed818560208601611ad4565b6120f681611afe565b840191505092915050565b6000602082019050818103600083015261211b81846120c8565b90509291505056fe4c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465a26469706673582212208b3b1a3b53acb7515ca97eae4d2b5b80bb4c46a44c8880c0968a1955e7fe61db64736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLDATASIZE PUSH2 0xB JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131C SWAP1 POP DUP1 SWAP2 POP PUSH1 0x0 DUP3 PUSH1 0x0 ADD PUSH1 0x0 DUP1 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x141 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x138 SWAP1 PUSH2 0x1693 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x162 JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x171 DUP3 DUP3 PUSH2 0x3A4 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x359 JUMPI PUSH1 0x0 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x196 JUMPI PUSH2 0x195 PUSH2 0x16B3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x1B8 JUMPI PUSH2 0x1B7 PUSH2 0x16E2 JUMP JUMPDEST JUMPDEST DUP2 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x1CB JUMPI PUSH2 0x1CA PUSH2 0x16E2 JUMP JUMPDEST JUMPDEST SUB PUSH2 0x21B JUMPI PUSH2 0x216 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1E6 JUMPI PUSH2 0x1E5 PUSH2 0x16B3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x205 JUMPI PUSH2 0x204 PUSH2 0x16B3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD PUSH2 0x487 JUMP JUMPDEST PUSH2 0x345 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x22F JUMPI PUSH2 0x22E PUSH2 0x16E2 JUMP JUMPDEST JUMPDEST DUP2 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x242 JUMPI PUSH2 0x241 PUSH2 0x16E2 JUMP JUMPDEST JUMPDEST SUB PUSH2 0x292 JUMPI PUSH2 0x28D DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x25D JUMPI PUSH2 0x25C PUSH2 0x16B3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x27C JUMPI PUSH2 0x27B PUSH2 0x16B3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD PUSH2 0x6FE JUMP JUMPDEST PUSH2 0x344 JUMP JUMPDEST PUSH1 0x2 DUP1 DUP2 GT ISZERO PUSH2 0x2A5 JUMPI PUSH2 0x2A4 PUSH2 0x16E2 JUMP JUMPDEST JUMPDEST DUP2 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x2B8 JUMPI PUSH2 0x2B7 PUSH2 0x16E2 JUMP JUMPDEST JUMPDEST SUB PUSH2 0x308 JUMPI PUSH2 0x303 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2D3 JUMPI PUSH2 0x2D2 PUSH2 0x16B3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x2F2 JUMPI PUSH2 0x2F1 PUSH2 0x16B3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD PUSH2 0x97F JUMP JUMPDEST PUSH2 0x343 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x33A SWAP1 PUSH2 0x1783 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMPDEST JUMPDEST POP DUP1 DUP1 PUSH2 0x351 SWAP1 PUSH2 0x17DC JUMP JUMPDEST SWAP2 POP POP PUSH2 0x178 JUMP JUMPDEST POP PUSH32 0x8FAA70878671CCD212D20771B795C50AF8FD3FF6CF27F4BDE57E5D4DE0AEB673 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH2 0x38D SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1B48 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH2 0x39F DUP3 DUP3 PUSH2 0xB0A JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x3AE DUP3 DUP3 PUSH2 0xC2C JUMP JUMPDEST PUSH2 0x483 JUMPI PUSH1 0x1 PUSH2 0x3BC PUSH2 0xCA0 JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD GT PUSH2 0x4CB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4C2 SWAP1 PUSH2 0x1BFF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4D5 PUSH2 0xCCD JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x546 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x53D SWAP1 PUSH2 0x1C91 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 ADD PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP1 SLOAD SWAP1 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x5B3 JUMPI PUSH2 0x5B2 DUP3 DUP6 PUSH2 0xCFA JUMP JUMPDEST JUMPDEST PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x6F7 JUMPI PUSH1 0x0 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x5D4 JUMPI PUSH2 0x5D3 PUSH2 0x16B3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP5 PUSH1 0x0 ADD PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x6C8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6BF SWAP1 PUSH2 0x1D23 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x6D4 DUP6 DUP4 DUP7 DUP11 PUSH2 0xDD5 JUMP JUMPDEST DUP4 DUP1 PUSH2 0x6DF SWAP1 PUSH2 0x1D5B JUMP JUMPDEST SWAP5 POP POP POP POP DUP1 DUP1 PUSH2 0x6EF SWAP1 PUSH2 0x17DC JUMP JUMPDEST SWAP2 POP POP PUSH2 0x5B6 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD GT PUSH2 0x742 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x739 SWAP1 PUSH2 0x1BFF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x74C PUSH2 0xCCD JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x7BD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7B4 SWAP1 PUSH2 0x1C91 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 ADD PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP1 SLOAD SWAP1 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x82A JUMPI PUSH2 0x829 DUP3 DUP6 PUSH2 0xCFA JUMP JUMPDEST JUMPDEST PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x978 JUMPI PUSH1 0x0 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x84B JUMPI PUSH2 0x84A PUSH2 0x16B3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP5 PUSH1 0x0 ADD PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x93E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x935 SWAP1 PUSH2 0x1E01 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x949 DUP6 DUP3 DUP5 PUSH2 0xF82 JUMP JUMPDEST PUSH2 0x955 DUP6 DUP4 DUP7 DUP11 PUSH2 0xDD5 JUMP JUMPDEST DUP4 DUP1 PUSH2 0x960 SWAP1 PUSH2 0x1D5B JUMP JUMPDEST SWAP5 POP POP POP POP DUP1 DUP1 PUSH2 0x970 SWAP1 PUSH2 0x17DC JUMP JUMPDEST SWAP2 POP POP PUSH2 0x82D JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD GT PUSH2 0x9C3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9BA SWAP1 PUSH2 0x1BFF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x9CD PUSH2 0xCCD JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xA3E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA35 SWAP1 PUSH2 0x1E93 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0xB04 JUMPI PUSH1 0x0 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xA5F JUMPI PUSH2 0xA5E PUSH2 0x16B3 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x0 ADD PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH2 0xAEF DUP5 DUP3 DUP5 PUSH2 0xF82 JUMP JUMPDEST POP POP DUP1 DUP1 PUSH2 0xAFC SWAP1 PUSH2 0x17DC JUMP JUMPDEST SWAP2 POP POP PUSH2 0xA41 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB ISZERO PUSH2 0xC28 JUMPI PUSH2 0xB61 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2124 PUSH1 0x28 SWAP2 CODECOPY PUSH2 0x15E4 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD PUSH2 0xB89 SWAP2 SWAP1 PUSH2 0x1EEF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xBC4 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xBC9 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0xC25 JUMPI PUSH1 0x0 DUP2 MLOAD GT ISZERO PUSH2 0xBE6 JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST DUP4 DUP4 PUSH1 0x40 MLOAD PUSH32 0x192105D700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC1C SWAP3 SWAP2 SWAP1 PUSH2 0x1F06 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC36 PUSH2 0xCA0 JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x4CD15452B25E815D3F9D1A3C7EDD985A178EDF5EB3461A1ACBF855517423D694 SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131C SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH2 0xD1C DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x214C PUSH1 0x24 SWAP2 CODECOPY PUSH2 0x15E4 JUMP JUMPDEST DUP2 PUSH1 0x2 ADD DUP1 SLOAD SWAP1 POP DUP3 PUSH1 0x1 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 ADD DUP2 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP POP JUMP JUMPDEST DUP2 DUP5 PUSH1 0x0 ADD PUSH1 0x0 DUP6 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP4 PUSH1 0x1 ADD PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP4 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x8 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x4 MUL SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0xE0 SHR MUL OR SWAP1 SSTORE POP DUP1 DUP5 PUSH1 0x0 ADD PUSH1 0x0 DUP6 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xFF1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xFE8 SWAP1 PUSH2 0x1FA8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x105F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1056 SWAP1 PUSH2 0x203A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x0 ADD PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP6 PUSH1 0x1 ADD PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP1 SLOAD SWAP1 POP PUSH2 0x1136 SWAP2 SWAP1 PUSH2 0x205A JUMP JUMPDEST SWAP1 POP DUP1 DUP3 EQ PUSH2 0x12CA JUMPI PUSH1 0x0 DUP6 PUSH1 0x1 ADD PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1197 JUMPI PUSH2 0x1196 PUSH2 0x16B3 JUMP JUMPDEST JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x8 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x4 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xE0 SHL SWAP1 POP DUP1 DUP7 PUSH1 0x1 ADD PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x1213 JUMPI PUSH2 0x1212 PUSH2 0x16B3 JUMP JUMPDEST JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x8 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x4 MUL PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0xE0 SHR MUL OR SWAP1 SSTORE POP DUP3 DUP7 PUSH1 0x0 ADD PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP JUMPDEST DUP5 PUSH1 0x1 ADD PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP1 SLOAD DUP1 PUSH2 0x131E JUMPI PUSH2 0x131D PUSH2 0x208E JUMP JUMPDEST JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x8 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x4 MUL PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 SSTORE SWAP1 SSTORE DUP5 PUSH1 0x0 ADD PUSH1 0x0 DUP5 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP1 DUP3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x0 DUP3 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE POP POP PUSH1 0x0 DUP2 SUB PUSH2 0x15DD JUMPI PUSH1 0x0 PUSH1 0x1 DUP7 PUSH1 0x2 ADD DUP1 SLOAD SWAP1 POP PUSH2 0x1408 SWAP2 SWAP1 PUSH2 0x205A JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 PUSH1 0x1 ADD PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 POP DUP2 DUP2 EQ PUSH2 0x1549 JUMPI PUSH1 0x0 DUP8 PUSH1 0x2 ADD DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x1472 JUMPI PUSH2 0x1471 PUSH2 0x16B3 JUMP JUMPDEST JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP1 DUP9 PUSH1 0x2 ADD DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x14B6 JUMPI PUSH2 0x14B5 PUSH2 0x16B3 JUMP JUMPDEST JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 DUP9 PUSH1 0x1 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP POP JUMPDEST DUP7 PUSH1 0x2 ADD DUP1 SLOAD DUP1 PUSH2 0x155D JUMPI PUSH2 0x155C PUSH2 0x208E JUMP JUMPDEST JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE SWAP1 SSTORE DUP7 PUSH1 0x1 ADD PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SSTORE POP POP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 EXTCODESIZE SWAP1 POP PUSH1 0x0 DUP2 GT DUP3 SWAP1 PUSH2 0x1630 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1627 SWAP2 SWAP1 PUSH2 0x2101 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4469616D6F6E643A2046756E6374696F6E20646F6573206E6F74206578697374 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x167D PUSH1 0x20 DUP4 PUSH2 0x1636 JUMP JUMPDEST SWAP2 POP PUSH2 0x1688 DUP3 PUSH2 0x1647 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x16AC DUP2 PUSH2 0x1670 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4C69624469616D6F6E644375743A20496E636F72726563742046616365744375 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x74416374696F6E00000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x176D PUSH1 0x27 DUP4 PUSH2 0x1636 JUMP JUMPDEST SWAP2 POP PUSH2 0x1778 DUP3 PUSH2 0x1711 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x179C DUP2 PUSH2 0x1760 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x17E7 DUP3 PUSH2 0x17D2 JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x1819 JUMPI PUSH2 0x1818 PUSH2 0x17A3 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x187B DUP3 PUSH2 0x1850 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x188B DUP2 PUSH2 0x1870 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x3 DUP2 LT PUSH2 0x18A2 JUMPI PUSH2 0x18A1 PUSH2 0x16E2 JUMP JUMPDEST JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH2 0x18B3 DUP3 PUSH2 0x1891 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x18C3 DUP3 PUSH2 0x18A5 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x18D3 DUP2 PUSH2 0x18B8 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x193A DUP2 PUSH2 0x1905 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x194C DUP4 DUP4 PUSH2 0x1931 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1970 DUP3 PUSH2 0x18D9 JUMP JUMPDEST PUSH2 0x197A DUP2 DUP6 PUSH2 0x18E4 JUMP JUMPDEST SWAP4 POP PUSH2 0x1985 DUP4 PUSH2 0x18F5 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x19B6 JUMPI DUP2 MLOAD PUSH2 0x199D DUP9 DUP3 PUSH2 0x1940 JUMP JUMPDEST SWAP8 POP PUSH2 0x19A8 DUP4 PUSH2 0x1958 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x1989 JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 ADD PUSH1 0x0 DUP4 ADD MLOAD PUSH2 0x19DB PUSH1 0x0 DUP7 ADD DUP3 PUSH2 0x1882 JUMP JUMPDEST POP PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x19EE PUSH1 0x20 DUP7 ADD DUP3 PUSH2 0x18CA JUMP JUMPDEST POP PUSH1 0x40 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0x1A06 DUP3 DUP3 PUSH2 0x1965 JUMP JUMPDEST SWAP2 POP POP DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A1F DUP4 DUP4 PUSH2 0x19C3 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A3F DUP3 PUSH2 0x1824 JUMP JUMPDEST PUSH2 0x1A49 DUP2 DUP6 PUSH2 0x182F JUMP JUMPDEST SWAP4 POP DUP4 PUSH1 0x20 DUP3 MUL DUP6 ADD PUSH2 0x1A5B DUP6 PUSH2 0x1840 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x1A97 JUMPI DUP5 DUP5 SUB DUP10 MSTORE DUP2 MLOAD PUSH2 0x1A78 DUP6 DUP3 PUSH2 0x1A13 JUMP JUMPDEST SWAP5 POP PUSH2 0x1A83 DUP4 PUSH2 0x1A27 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP11 ADD SWAP10 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x1A5F JUMP JUMPDEST POP DUP3 SWAP8 POP DUP8 SWAP6 POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1AB2 DUP2 PUSH2 0x1870 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1AF2 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x1AD7 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B1A DUP3 PUSH2 0x1AB8 JUMP JUMPDEST PUSH2 0x1B24 DUP2 DUP6 PUSH2 0x1AC3 JUMP JUMPDEST SWAP4 POP PUSH2 0x1B34 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1AD4 JUMP JUMPDEST PUSH2 0x1B3D DUP2 PUSH2 0x1AFE JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1B62 DUP2 DUP7 PUSH2 0x1A34 JUMP JUMPDEST SWAP1 POP PUSH2 0x1B71 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x1AA9 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x1B83 DUP2 DUP5 PUSH2 0x1B0F JUMP JUMPDEST SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x4C69624469616D6F6E644375743A204E6F2073656C6563746F727320696E2066 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6163657420746F20637574000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BE9 PUSH1 0x2B DUP4 PUSH2 0x1636 JUMP JUMPDEST SWAP2 POP PUSH2 0x1BF4 DUP3 PUSH2 0x1B8D JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1C18 DUP2 PUSH2 0x1BDC JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4C69624469616D6F6E644375743A204164642066616365742063616E27742062 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6520616464726573732830290000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C7B PUSH1 0x2C DUP4 PUSH2 0x1636 JUMP JUMPDEST SWAP2 POP PUSH2 0x1C86 DUP3 PUSH2 0x1C1F JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1CAA DUP2 PUSH2 0x1C6E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4C69624469616D6F6E644375743A2043616E2774206164642066756E6374696F PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6E207468617420616C7265616479206578697374730000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D0D PUSH1 0x35 DUP4 PUSH2 0x1636 JUMP JUMPDEST SWAP2 POP PUSH2 0x1D18 DUP3 PUSH2 0x1CB1 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1D3C DUP2 PUSH2 0x1D00 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D66 DUP3 PUSH2 0x1D43 JUMP JUMPDEST SWAP2 POP PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x1D84 JUMPI PUSH2 0x1D83 PUSH2 0x17A3 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4C69624469616D6F6E644375743A2043616E2774207265706C6163652066756E PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6374696F6E20776974682073616D652066756E6374696F6E0000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1DEB PUSH1 0x38 DUP4 PUSH2 0x1636 JUMP JUMPDEST SWAP2 POP PUSH2 0x1DF6 DUP3 PUSH2 0x1D8F JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1E1A DUP2 PUSH2 0x1DDE JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4C69624469616D6F6E644375743A2052656D6F76652066616365742061646472 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x657373206D757374206265206164647265737328302900000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E7D PUSH1 0x36 DUP4 PUSH2 0x1636 JUMP JUMPDEST SWAP2 POP PUSH2 0x1E88 DUP3 PUSH2 0x1E21 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1EAC DUP2 PUSH2 0x1E70 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1EC9 DUP3 PUSH2 0x1AB8 JUMP JUMPDEST PUSH2 0x1ED3 DUP2 DUP6 PUSH2 0x1EB3 JUMP JUMPDEST SWAP4 POP PUSH2 0x1EE3 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1AD4 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1EFB DUP3 DUP5 PUSH2 0x1EBE JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x1F1B PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x1AA9 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x1F2D DUP2 DUP5 PUSH2 0x1B0F JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x4C69624469616D6F6E644375743A2043616E27742072656D6F76652066756E63 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x74696F6E207468617420646F65736E2774206578697374000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F92 PUSH1 0x37 DUP4 PUSH2 0x1636 JUMP JUMPDEST SWAP2 POP PUSH2 0x1F9D DUP3 PUSH2 0x1F36 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1FC1 DUP2 PUSH2 0x1F85 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4C69624469616D6F6E644375743A2043616E27742072656D6F766520696D6D75 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7461626C652066756E6374696F6E000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2024 PUSH1 0x2E DUP4 PUSH2 0x1636 JUMP JUMPDEST SWAP2 POP PUSH2 0x202F DUP3 PUSH2 0x1FC8 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2053 DUP2 PUSH2 0x2017 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2065 DUP3 PUSH2 0x17D2 JUMP JUMPDEST SWAP2 POP PUSH2 0x2070 DUP4 PUSH2 0x17D2 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP DUP2 DUP2 GT ISZERO PUSH2 0x2088 JUMPI PUSH2 0x2087 PUSH2 0x17A3 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x20D3 DUP3 PUSH2 0x20BD JUMP JUMPDEST PUSH2 0x20DD DUP2 DUP6 PUSH2 0x1636 JUMP JUMPDEST SWAP4 POP PUSH2 0x20ED DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x1AD4 JUMP JUMPDEST PUSH2 0x20F6 DUP2 PUSH2 0x1AFE JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x211B DUP2 DUP5 PUSH2 0x20C8 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP INVALID 0x4C PUSH10 0x624469616D6F6E644375 PUSH21 0x3A205F696E6974206164647265737320686173206E PUSH16 0x20636F64654C69624469616D6F6E6443 PUSH22 0x743A204E657720666163657420686173206E6F20636F PUSH5 0x65A2646970 PUSH7 0x73582212208B3B BYTE EXTCODESIZE MSTORE8 0xAC 0xB7 MLOAD 0x5C 0xA9 PUSH31 0xAE4D2B5B80BB4C46A44C8880C0968A1955E7FE61DB64736F6C634300081200 CALLER ","sourceMap":"242:2351:22:-:0;;;;;;;;1474:35;1519:16;443:45:49;1519:54:22;;1647:8;1637:18;;1718:13;1734:1;:28;;:37;1763:7;;;;1734:37;;;;;;;;;;;;;;;;;:50;;;;;;;;;;;;1718:66;;1819:1;1802:19;;:5;:19;;;1794:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;2055:14;2052:1;2049;2036:34;2199:1;2196;2180:14;2177:1;2170:5;2163;2150:51;2271:16;2268:1;2265;2250:38;2375:6;2399:1;2394:66;;;;2509:16;2506:1;2499:27;2394:66;2429:16;2426:1;2419:27;3259:106:48;3331:27;3342:5;3349:8;3331:10;:27::i;:::-;3259:106;;:::o;1836:1250:49:-;1992:18;1974:1001;2037:11;:18;2024:10;:31;1974:1001;;;2106:26;2135:11;2147:10;2135:23;;;;;;;;:::i;:::-;;;;;;;;:30;;;2106:59;;2193:23;2183:33;;;;;;;;:::i;:::-;;:6;:33;;;;;;;;:::i;:::-;;;2179:786;;2236:152;2271:11;2283:10;2271:23;;;;;;;;:::i;:::-;;;;;;;;:36;;;2329:11;2341:10;2329:23;;;;;;;;:::i;:::-;;;;;;;;:41;;;2236:13;:152::i;:::-;2179:786;;;2423:27;2413:37;;;;;;;;:::i;:::-;;:6;:37;;;;;;;;:::i;:::-;;;2409:556;;2470:156;2509:11;2521:10;2509:23;;;;;;;;:::i;:::-;;;;;;;;:36;;;2567:11;2579:10;2567:23;;;;;;;;:::i;:::-;;;;;;;;:41;;;2470:17;:156::i;:::-;2409:556;;;2661:26;2651:36;;;;;;;;:::i;:::-;;:6;:36;;;;;;;;:::i;:::-;;;2647:318;;2707:155;2745:11;2757:10;2745:23;;;;;;;;:::i;:::-;;;;;;;;:36;;;2803:11;2815:10;2803:23;;;;;;;;:::i;:::-;;;;;;;;:41;;;2707:16;:155::i;:::-;2647:318;;;2901:49;;;;;;;;;;:::i;:::-;;;;;;;;2647:318;2409:556;2179:786;2092:883;2069:12;;;;;:::i;:::-;;;;1974:1001;;;;2989:41;3000:11;3013:5;3020:9;2989:41;;;;;;;;:::i;:::-;;;;;;;;3040:39;3062:5;3069:9;3040:21;:39::i;:::-;1836:1250;;;:::o;2611:255:48:-;2688:25;2697:5;2704:8;2688;:25::i;:::-;2683:177;;2786:4;2729:23;:21;:23::i;:::-;:29;;:36;2759:5;2729:36;;;;;;;;;;;:44;;:54;2774:8;2729:54;;;;;;;;;;;;;;;;:61;;;;;;;;;;;;;;;;;;2838:10;2809:40;;2828:8;2809:40;;2821:5;2809:40;;;;;;;;;;2683:177;2611:255;;:::o;3092:1306:49:-;3264:1;3236:18;:25;:29;3215:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;3344:24;3371:17;:15;:17::i;:::-;3344:44;;3444:1;3419:27;;:13;:27;;;3398:118;;;;;;;;;;;;:::i;:::-;;;;;;;;;3526:23;3572:1;:24;;:39;3597:13;3572:39;;;;;;;;;;;;;;;:57;;:64;;;;3526:120;;3734:1;3714:16;:21;;;3710:79;;3751:27;3761:1;3764:13;3751:9;:27::i;:::-;3710:79;3816:21;3798:594;3867:18;:25;3851:13;:41;3798:594;;;3946:15;3964:18;3983:13;3964:33;;;;;;;;:::i;:::-;;;;;;;;3946:51;;4011:23;4037:1;:45;;:55;4083:8;4037:55;;;;;;;;;;;;;;;;;:85;;;;;;;;;;;;4011:111;;4188:1;4161:29;;:15;:29;;;4136:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;4291:58;4304:1;4307:8;4317:16;4335:13;4291:12;:58::i;:::-;4363:18;;;;;:::i;:::-;;;;3932:460;;3906:15;;;;;:::i;:::-;;;;3798:594;;;;3205:1193;;3092:1306;;:::o;4404:1375::-;4580:1;4552:18;:25;:29;4531:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;4660:24;4687:17;:15;:17::i;:::-;4660:44;;4760:1;4735:27;;:13;:27;;;4714:118;;;;;;;;;;;;:::i;:::-;;;;;;;;;4842:23;4888:1;:24;;:39;4913:13;4888:39;;;;;;;;;;;;;;;:57;;:64;;;;4842:120;;5050:1;5030:16;:21;;;5026:79;;5067:27;5077:1;5080:13;5067:9;:27::i;:::-;5026:79;5132:21;5114:659;5183:18;:25;5167:13;:41;5114:659;;;5262:15;5280:18;5299:13;5280:33;;;;;;;;:::i;:::-;;;;;;;;5262:51;;5327:23;5353:1;:45;;:55;5399:8;5353:55;;;;;;;;;;;;;;;;;:85;;;;;;;;;;;;5327:111;;5496:13;5477:32;;:15;:32;;;5452:147;;;;;;;;;;;;:::i;:::-;;;;;;;;;5613:45;5629:1;5632:15;5649:8;5613:15;:45::i;:::-;5672:58;5685:1;5688:8;5698:16;5716:13;5672:12;:58::i;:::-;5744:18;;;;;:::i;:::-;;;;5248:525;;5222:15;;;;;:::i;:::-;;;;5114:659;;;;4521:1258;;4404:1375;;:::o;5785:912::-;5960:1;5932:18;:25;:29;5911:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;6040:24;6067:17;:15;:17::i;:::-;6040:44;;6205:1;6180:27;;:13;:27;;;6159:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;6315:21;6297:394;6366:18;:25;6350:13;:41;6297:394;;;6445:15;6463:18;6482:13;6463:33;;;;;;;;:::i;:::-;;;;;;;;6445:51;;6510:23;6536:1;:45;;:55;6582:8;6536:55;;;;;;;;;;;;;;;;;:85;;;;;;;;;;;;6510:111;;6635:45;6651:1;6654:15;6671:8;6635:15;:45::i;:::-;6431:260;;6405:15;;;;;:::i;:::-;;;;6297:394;;;;5901:796;5785:912;;:::o;10140:792::-;10272:1;10255:19;;:5;:19;;;10251:56;10290:7;10251:56;10316:108;10353:5;10316:108;;;;;;;;;;;;;;;;;:23;:108::i;:::-;10435:12;10449:18;10471:5;:18;;10490:9;10471:29;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10434:66;;;;10515:7;10510:416;;10557:1;10542:5;:12;:16;10538:378;;;10724:5;10718:12;10774:15;10766:5;10762:2;10758:14;10751:39;10538:378;10884:5;10891:9;10853:48;;;;;;;;;;;;:::i;:::-;;;;;;;;10510:416;10241:691;;10140:792;;;:::o;1134:180:48:-;1230:4;1253:23;:21;:23::i;:::-;:29;;:36;1283:5;1253:36;;;;;;;;;;;:44;;:54;1298:8;1253:54;;;;;;;;;;;;;;;;;;;;;;;;;1246:61;;1134:180;;;;:::o;791:242::-;871:30;917:16;203:29;917:49;;1009:8;999:18;;985:42;791:242;:::o;1445:224:49:-;1519:24;1559:16;443:45;1559:43;;1645:8;1635:18;;1621:42;1445:224;:::o;6703:396::-;6812:112;6849:13;6812:112;;;;;;;;;;;;;;;;;:23;:112::i;:::-;6997:1;:29;;:49;;;;6934:1;:24;;:39;6959:13;6934:39;;;;;;;;;;;;;;;:60;;:112;;;;7056:1;:16;;7078:13;7056:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6703:396;;:::o;7105:472::-;7370:17;7277:1;:41;;:52;7319:9;7277:52;;;;;;;;;;;;;;;;;:90;;;:110;;;;;;;;;;;;;;;;;;7397:1;:24;;:39;7422:13;7397:39;;;;;;;;;;;;;;;:57;;7473:9;7397:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7557:13;7502:1;:28;;:39;7531:9;7502:39;;;;;;;;;;;;;;;;;:52;;;:68;;;;;;;;;;;;;;;;;;7105:472;;;;:::o;7583:2551::-;7770:1;7745:27;;:13;:27;;;7724:129;;;;;;;;;;;;:::i;:::-;;;;;;;;;7986:4;7961:30;;:13;:30;;;7940:123;;;;;;;;;;;;:::i;:::-;;;;;;;;;8147:24;8174:1;:41;;:52;8216:9;8174:52;;;;;;;;;;;;;;;;;:90;;;;;;;;;;;;8147:117;;;;8274:28;8411:1;8305;:37;;:52;8343:13;8305:52;;;;;;;;;;;;;;;:83;;:103;;;;:107;;;;:::i;:::-;8274:138;;8514:20;8494:16;:40;8490:490;;8550:19;8572:1;:41;;:56;8614:13;8572:56;;;;;;;;;;;;;;;:91;;8664:20;8572:113;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8550:135;;8815:12;8699:1;:24;;:39;8724:13;8699:39;;;;;;;;;;;;;;;:57;;8778:16;8699:113;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:128;;;;;;;;;;;;;;;;;;8952:16;8841:1;:45;;:59;8887:12;8841:59;;;;;;;;;;;;;;;;;:101;;;:128;;;;;;;;;;;;;;;;;;8536:444;8490:490;9025:1;:24;;:39;9050:13;9025:39;;;;;;;;;;;;;;;:57;;:63;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9105:1;:28;;:39;9134:9;9105:39;;;;;;;;;;;;;;;;;;9098:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9263:1;9239:20;:25;9235:893;;9371:32;9432:1;9406;:16;;:23;;;;:27;;;;:::i;:::-;9371:62;;9447:28;9478:1;:41;;:56;9520:13;9478:56;;;;;;;;;;;;;;;:94;;;9447:125;;9614:24;9590:20;:48;9586:415;;9658:24;9685:1;:16;;9723:24;9685:80;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9658:107;;9824:16;9783:1;:16;;9800:20;9783:38;;;;;;;;:::i;:::-;;;;;;;;;;:57;;;;;;;;;;;;;;;;;;9966:20;9858:1;:45;;:63;9904:16;9858:63;;;;;;;;;;;;;;;:105;;:128;;;;9640:361;9586:415;10014:1;:16;;:22;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;10057:1;:24;;:39;10082:13;10057:39;;;;;;;;;;;;;;;:60;;10050:67;;;9266:862;;9235:893;7714:2420;;7583:2551;;;:::o;10938:284::-;11065:20;11146:9;11134:22;11118:38;;11198:1;11183:12;:16;11201:13;11175:40;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;11055:167;10938:284;;:::o;7:169:61:-;91:11;125:6;120:3;113:19;165:4;160:3;156:14;141:29;;7:169;;;;:::o;182:182::-;322:34;318:1;310:6;306:14;299:58;182:182;:::o;370:366::-;512:3;533:67;597:2;592:3;533:67;:::i;:::-;526:74;;609:93;698:3;609:93;:::i;:::-;727:2;722:3;718:12;711:19;;370:366;;;:::o;742:419::-;908:4;946:2;935:9;931:18;923:26;;995:9;989:4;985:20;981:1;970:9;966:17;959:47;1023:131;1149:4;1023:131;:::i;:::-;1015:139;;742:419;;;:::o;1167:180::-;1215:77;1212:1;1205:88;1312:4;1309:1;1302:15;1336:4;1333:1;1326:15;1353:180;1401:77;1398:1;1391:88;1498:4;1495:1;1488:15;1522:4;1519:1;1512:15;1539:226;1679:34;1675:1;1667:6;1663:14;1656:58;1748:9;1743:2;1735:6;1731:15;1724:34;1539:226;:::o;1771:366::-;1913:3;1934:67;1998:2;1993:3;1934:67;:::i;:::-;1927:74;;2010:93;2099:3;2010:93;:::i;:::-;2128:2;2123:3;2119:12;2112:19;;1771:366;;;:::o;2143:419::-;2309:4;2347:2;2336:9;2332:18;2324:26;;2396:9;2390:4;2386:20;2382:1;2371:9;2367:17;2360:47;2424:131;2550:4;2424:131;:::i;:::-;2416:139;;2143:419;;;:::o;2568:180::-;2616:77;2613:1;2606:88;2713:4;2710:1;2703:15;2737:4;2734:1;2727:15;2754:77;2791:7;2820:5;2809:16;;2754:77;;;:::o;2837:233::-;2876:3;2899:24;2917:5;2899:24;:::i;:::-;2890:33;;2945:66;2938:5;2935:77;2932:103;;3015:18;;:::i;:::-;2932:103;3062:1;3055:5;3051:13;3044:20;;2837:233;;;:::o;3076:141::-;3170:6;3204:5;3198:12;3188:22;;3076:141;;;:::o;3223:211::-;3349:11;3383:6;3378:3;3371:19;3423:4;3418:3;3414:14;3399:29;;3223:211;;;;:::o;3440:159::-;3534:4;3557:3;3549:11;;3587:4;3582:3;3578:14;3570:22;;3440:159;;;:::o;3605:126::-;3642:7;3682:42;3675:5;3671:54;3660:65;;3605:126;;;:::o;3737:96::-;3774:7;3803:24;3821:5;3803:24;:::i;:::-;3792:35;;3737:96;;;:::o;3839:108::-;3916:24;3934:5;3916:24;:::i;:::-;3911:3;3904:37;3839:108;;:::o;3953:125::-;4046:1;4039:5;4036:12;4026:46;;4052:18;;:::i;:::-;4026:46;3953:125;:::o;4084:151::-;4141:7;4170:5;4159:16;;4176:53;4223:5;4176:53;:::i;:::-;4084:151;;;:::o;4241:::-;4309:9;4342:44;4380:5;4342:44;:::i;:::-;4329:57;;4241:151;;;:::o;4398:157::-;4493:55;4542:5;4493:55;:::i;:::-;4488:3;4481:68;4398:157;;:::o;4561:113::-;4627:6;4661:5;4655:12;4645:22;;4561:113;;;:::o;4680:173::-;4768:11;4802:6;4797:3;4790:19;4842:4;4837:3;4833:14;4818:29;;4680:173;;;;:::o;4859:131::-;4925:4;4948:3;4940:11;;4978:4;4973:3;4969:14;4961:22;;4859:131;;;:::o;4996:149::-;5032:7;5072:66;5065:5;5061:78;5050:89;;4996:149;;;:::o;5151:105::-;5226:23;5243:5;5226:23;:::i;:::-;5221:3;5214:36;5151:105;;:::o;5262:175::-;5329:10;5350:44;5390:3;5382:6;5350:44;:::i;:::-;5426:4;5421:3;5417:14;5403:28;;5262:175;;;;:::o;5443:112::-;5512:4;5544;5539:3;5535:14;5527:22;;5443:112;;;:::o;5589:704::-;5696:3;5725:53;5772:5;5725:53;:::i;:::-;5794:75;5862:6;5857:3;5794:75;:::i;:::-;5787:82;;5893:55;5942:5;5893:55;:::i;:::-;5971:7;6002:1;5987:281;6012:6;6009:1;6006:13;5987:281;;;6088:6;6082:13;6115:61;6172:3;6157:13;6115:61;:::i;:::-;6108:68;;6199:59;6251:6;6199:59;:::i;:::-;6189:69;;6047:221;6034:1;6031;6027:9;6022:14;;5987:281;;;5991:14;6284:3;6277:10;;5701:592;;;5589:704;;;;:::o;6351:843::-;6464:3;6500:4;6495:3;6491:14;6595:4;6588:5;6584:16;6578:23;6614:63;6671:4;6666:3;6662:14;6648:12;6614:63;:::i;:::-;6515:172;6771:4;6764:5;6760:16;6754:23;6790:81;6865:4;6860:3;6856:14;6842:12;6790:81;:::i;:::-;6697:184;6976:4;6969:5;6965:16;6959:23;7029:3;7023:4;7019:14;7012:4;7007:3;7003:14;6996:38;7055:101;7151:4;7137:12;7055:101;:::i;:::-;7047:109;;6891:276;7184:4;7177:11;;6469:725;6351:843;;;;:::o;7200:264::-;7323:10;7358:100;7454:3;7446:6;7358:100;:::i;:::-;7344:114;;7200:264;;;;:::o;7470:140::-;7567:4;7599;7594:3;7590:14;7582:22;;7470:140;;;:::o;7672:1127::-;7845:3;7874:81;7949:5;7874:81;:::i;:::-;7971:113;8077:6;8072:3;7971:113;:::i;:::-;7964:120;;8110:3;8155:4;8147:6;8143:17;8138:3;8134:27;8185:83;8262:5;8185:83;:::i;:::-;8291:7;8322:1;8307:447;8332:6;8329:1;8326:13;8307:447;;;8403:9;8397:4;8393:20;8388:3;8381:33;8454:6;8448:13;8482:118;8595:4;8580:13;8482:118;:::i;:::-;8474:126;;8623:87;8703:6;8623:87;:::i;:::-;8613:97;;8739:4;8734:3;8730:14;8723:21;;8367:387;8354:1;8351;8347:9;8342:14;;8307:447;;;8311:14;8770:4;8763:11;;8790:3;8783:10;;7850:949;;;;;7672:1127;;;;:::o;8805:118::-;8892:24;8910:5;8892:24;:::i;:::-;8887:3;8880:37;8805:118;;:::o;8929:98::-;8980:6;9014:5;9008:12;8998:22;;8929:98;;;:::o;9033:168::-;9116:11;9150:6;9145:3;9138:19;9190:4;9185:3;9181:14;9166:29;;9033:168;;;;:::o;9207:246::-;9288:1;9298:113;9312:6;9309:1;9306:13;9298:113;;;9397:1;9392:3;9388:11;9382:18;9378:1;9373:3;9369:11;9362:39;9334:2;9331:1;9327:10;9322:15;;9298:113;;;9445:1;9436:6;9431:3;9427:16;9420:27;9269:184;9207:246;;;:::o;9459:102::-;9500:6;9551:2;9547:7;9542:2;9535:5;9531:14;9527:28;9517:38;;9459:102;;;:::o;9567:373::-;9653:3;9681:38;9713:5;9681:38;:::i;:::-;9735:70;9798:6;9793:3;9735:70;:::i;:::-;9728:77;;9814:65;9872:6;9867:3;9860:4;9853:5;9849:16;9814:65;:::i;:::-;9904:29;9926:6;9904:29;:::i;:::-;9899:3;9895:39;9888:46;;9657:283;9567:373;;;;:::o;9946:788::-;10217:4;10255:2;10244:9;10240:18;10232:26;;10304:9;10298:4;10294:20;10290:1;10279:9;10275:17;10268:47;10332:162;10489:4;10480:6;10332:162;:::i;:::-;10324:170;;10504:72;10572:2;10561:9;10557:18;10548:6;10504:72;:::i;:::-;10623:9;10617:4;10613:20;10608:2;10597:9;10593:18;10586:48;10651:76;10722:4;10713:6;10651:76;:::i;:::-;10643:84;;9946:788;;;;;;:::o;10740:230::-;10880:34;10876:1;10868:6;10864:14;10857:58;10949:13;10944:2;10936:6;10932:15;10925:38;10740:230;:::o;10976:366::-;11118:3;11139:67;11203:2;11198:3;11139:67;:::i;:::-;11132:74;;11215:93;11304:3;11215:93;:::i;:::-;11333:2;11328:3;11324:12;11317:19;;10976:366;;;:::o;11348:419::-;11514:4;11552:2;11541:9;11537:18;11529:26;;11601:9;11595:4;11591:20;11587:1;11576:9;11572:17;11565:47;11629:131;11755:4;11629:131;:::i;:::-;11621:139;;11348:419;;;:::o;11773:231::-;11913:34;11909:1;11901:6;11897:14;11890:58;11982:14;11977:2;11969:6;11965:15;11958:39;11773:231;:::o;12010:366::-;12152:3;12173:67;12237:2;12232:3;12173:67;:::i;:::-;12166:74;;12249:93;12338:3;12249:93;:::i;:::-;12367:2;12362:3;12358:12;12351:19;;12010:366;;;:::o;12382:419::-;12548:4;12586:2;12575:9;12571:18;12563:26;;12635:9;12629:4;12625:20;12621:1;12610:9;12606:17;12599:47;12663:131;12789:4;12663:131;:::i;:::-;12655:139;;12382:419;;;:::o;12807:240::-;12947:34;12943:1;12935:6;12931:14;12924:58;13016:23;13011:2;13003:6;12999:15;12992:48;12807:240;:::o;13053:366::-;13195:3;13216:67;13280:2;13275:3;13216:67;:::i;:::-;13209:74;;13292:93;13381:3;13292:93;:::i;:::-;13410:2;13405:3;13401:12;13394:19;;13053:366;;;:::o;13425:419::-;13591:4;13629:2;13618:9;13614:18;13606:26;;13678:9;13672:4;13668:20;13664:1;13653:9;13649:17;13642:47;13706:131;13832:4;13706:131;:::i;:::-;13698:139;;13425:419;;;:::o;13850:109::-;13886:7;13926:26;13919:5;13915:38;13904:49;;13850:109;;;:::o;13965:191::-;14003:3;14026:23;14043:5;14026:23;:::i;:::-;14017:32;;14071:26;14064:5;14061:37;14058:63;;14101:18;;:::i;:::-;14058:63;14148:1;14141:5;14137:13;14130:20;;13965:191;;;:::o;14162:243::-;14302:34;14298:1;14290:6;14286:14;14279:58;14371:26;14366:2;14358:6;14354:15;14347:51;14162:243;:::o;14411:366::-;14553:3;14574:67;14638:2;14633:3;14574:67;:::i;:::-;14567:74;;14650:93;14739:3;14650:93;:::i;:::-;14768:2;14763:3;14759:12;14752:19;;14411:366;;;:::o;14783:419::-;14949:4;14987:2;14976:9;14972:18;14964:26;;15036:9;15030:4;15026:20;15022:1;15011:9;15007:17;15000:47;15064:131;15190:4;15064:131;:::i;:::-;15056:139;;14783:419;;;:::o;15208:241::-;15348:34;15344:1;15336:6;15332:14;15325:58;15417:24;15412:2;15404:6;15400:15;15393:49;15208:241;:::o;15455:366::-;15597:3;15618:67;15682:2;15677:3;15618:67;:::i;:::-;15611:74;;15694:93;15783:3;15694:93;:::i;:::-;15812:2;15807:3;15803:12;15796:19;;15455:366;;;:::o;15827:419::-;15993:4;16031:2;16020:9;16016:18;16008:26;;16080:9;16074:4;16070:20;16066:1;16055:9;16051:17;16044:47;16108:131;16234:4;16108:131;:::i;:::-;16100:139;;15827:419;;;:::o;16252:147::-;16353:11;16390:3;16375:18;;16252:147;;;;:::o;16405:386::-;16509:3;16537:38;16569:5;16537:38;:::i;:::-;16591:88;16672:6;16667:3;16591:88;:::i;:::-;16584:95;;16688:65;16746:6;16741:3;16734:4;16727:5;16723:16;16688:65;:::i;:::-;16778:6;16773:3;16769:16;16762:23;;16513:278;16405:386;;;;:::o;16797:271::-;16927:3;16949:93;17038:3;17029:6;16949:93;:::i;:::-;16942:100;;17059:3;17052:10;;16797:271;;;;:::o;17074:419::-;17213:4;17251:2;17240:9;17236:18;17228:26;;17264:71;17332:1;17321:9;17317:17;17308:6;17264:71;:::i;:::-;17382:9;17376:4;17372:20;17367:2;17356:9;17352:18;17345:48;17410:76;17481:4;17472:6;17410:76;:::i;:::-;17402:84;;17074:419;;;;;:::o;17499:242::-;17639:34;17635:1;17627:6;17623:14;17616:58;17708:25;17703:2;17695:6;17691:15;17684:50;17499:242;:::o;17747:366::-;17889:3;17910:67;17974:2;17969:3;17910:67;:::i;:::-;17903:74;;17986:93;18075:3;17986:93;:::i;:::-;18104:2;18099:3;18095:12;18088:19;;17747:366;;;:::o;18119:419::-;18285:4;18323:2;18312:9;18308:18;18300:26;;18372:9;18366:4;18362:20;18358:1;18347:9;18343:17;18336:47;18400:131;18526:4;18400:131;:::i;:::-;18392:139;;18119:419;;;:::o;18544:233::-;18684:34;18680:1;18672:6;18668:14;18661:58;18753:16;18748:2;18740:6;18736:15;18729:41;18544:233;:::o;18783:366::-;18925:3;18946:67;19010:2;19005:3;18946:67;:::i;:::-;18939:74;;19022:93;19111:3;19022:93;:::i;:::-;19140:2;19135:3;19131:12;19124:19;;18783:366;;;:::o;19155:419::-;19321:4;19359:2;19348:9;19344:18;19336:26;;19408:9;19402:4;19398:20;19394:1;19383:9;19379:17;19372:47;19436:131;19562:4;19436:131;:::i;:::-;19428:139;;19155:419;;;:::o;19580:194::-;19620:4;19640:20;19658:1;19640:20;:::i;:::-;19635:25;;19674:20;19692:1;19674:20;:::i;:::-;19669:25;;19718:1;19715;19711:9;19703:17;;19742:1;19736:4;19733:11;19730:37;;;19747:18;;:::i;:::-;19730:37;19580:194;;;;:::o;19780:180::-;19828:77;19825:1;19818:88;19925:4;19922:1;19915:15;19949:4;19946:1;19939:15;19966:99;20018:6;20052:5;20046:12;20036:22;;19966:99;;;:::o;20071:377::-;20159:3;20187:39;20220:5;20187:39;:::i;:::-;20242:71;20306:6;20301:3;20242:71;:::i;:::-;20235:78;;20322:65;20380:6;20375:3;20368:4;20361:5;20357:16;20322:65;:::i;:::-;20412:29;20434:6;20412:29;:::i;:::-;20407:3;20403:39;20396:46;;20163:285;20071:377;;;;:::o;20454:313::-;20567:4;20605:2;20594:9;20590:18;20582:26;;20654:9;20648:4;20644:20;20640:1;20629:9;20625:17;20618:47;20682:78;20755:4;20746:6;20682:78;:::i;:::-;20674:86;;20454:313;;;;:::o"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contractOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_diamondCutFacet\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_initializationContractAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_calldata\",\"type\":\"bytes\"}],\"name\":\"InitializationFunctionReverted\",\"type\":\"error\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Diamond.sol\":\"Diamond\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xa4d1d62251f8574deb032a35fc948386a9b4de74b812d4f545a1ac120486b48a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c969013129ba9e651a20735ef659fef6d8a1139ea3607bd4b26ddea2d645634\",\"dweb:/ipfs/QmVhVa6LGuzAcB8qgDtVHRkucn4ihj5UZr8xBLcJkP6ucb\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa1e8e83cd0087785df04ac79fb395d9f3684caeaf973d9e2c71caef723a3a5d6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33bbf48cc069be677705037ba7520c22b1b622c23b33e1a71495f2d36549d40b\",\"dweb:/ipfs/Qmct36zWXv3j7LZB83uwbg7TXwnZSN1fqHNDZ93GG98bGz\"]},\"contracts/Diamond.sol\":{\"keccak256\":\"0x5117e996cd9a8ff3fad2e2d3cdbdf6619f6b2b04eb697cf8b587a9042887ca6f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://97949be8343d044c49fc80d673704579ca0c2eec93e0acc39b2c695856e1df0c\",\"dweb:/ipfs/QmcUAGj1yvu5u7kSdW9kK1ja28swJacrnEbh4FE5wGvGbX\"]},\"contracts/interfaces/utils/ICut.sol\":{\"keccak256\":\"0xeaf211b0c9da3a46171250f7cf949ffc171447c36b68451013d00a530281790a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1de62f56aba981f3430068a960272e56cbfece148d15861e410bd89f40a0f52d\",\"dweb:/ipfs/QmRw5Wrtm1NRBrnUxyKspheunoGarnkCmEYG2AFZpPeo5x\"]},\"contracts/libraries/utils/LibAccessControl.sol\":{\"keccak256\":\"0xebec727abd5564cc66e0b402d9ceb87168e19d73bd4853b034944b61a420f912\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://5390c191313856ad3f5d863b71d8a9d29a793c73cc6fecd9ef41abff262131a2\",\"dweb:/ipfs/QmUK83c2nwSR1L8M2rADMkJtsaBkADhYN2W3xuoxaQ2eC9\"]},\"contracts/libraries/utils/LibDiamond.sol\":{\"keccak256\":\"0x79254e503c12329739379fe3900cf174268bfe2c65cf5b7c1396b17783939834\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d405043f0b78b814d17fb721b476d2ab7a9d5a0c6065f6ecd0d4007c43e6b9fe\",\"dweb:/ipfs/QmPEsvxHnZKp84ww7WnQKjGo89eiVzXxcgdGxmMCcWbkZE\"]}},\"version\":1}"}},"contracts/archives/OldFlow.sol":{"OldFlow":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea2646970667358221220b95299040902017a32e488c1366d8827f144fe49981de69433bd653c5c7286a464736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3F DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB9 MSTORE SWAP10 DIV MULMOD MUL ADD PUSH27 0x32E488C1366D8827F144FE49981DE69433BD653C5C7286A464736F PUSH13 0x63430008120033000000000000 ","sourceMap":"652:12043:23:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"6080604052600080fdfea2646970667358221220b95299040902017a32e488c1366d8827f144fe49981de69433bd653c5c7286a464736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB9 MSTORE SWAP10 DIV MULMOD MUL ADD PUSH27 0x32E488C1366D8827F144FE49981DE69433BD653C5C7286A464736F PUSH13 0x63430008120033000000000000 ","sourceMap":"652:12043:23:-:0;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/archives/OldFlow.sol\":\"OldFlow\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol\":{\"keccak256\":\"0xf41ca991f30855bf80ffd11e9347856a517b977f0a6c2d52e6421a99b7840329\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2717fd2bdac99daa960a6de500754ea1b932093c946388c381da48658234b95\",\"dweb:/ipfs/QmP6QVMn6UeA3ByahyJbYQr5M6coHKBKsf3ySZSfbyA8R7\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x9b72f93be69ca894d8492c244259615c4a742afc8d63720dbc8bb81087d9b238\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5a7b96e511be78d5cdf635c784e6ab8cdd38625bb8cafb8a80914a1c89cf0f6\",\"dweb:/ipfs/QmVzTCwJxQAkjRQHboT5QrvsVJGWQHgfEjeTbvyxoKBrds\"]},\"@openzeppelin/contracts/token/ERC777/IERC777.sol\":{\"keccak256\":\"0x385a7061f1436b079d44c140dee9387d5313e94874ff9ee877dc0085c981ac3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c3fe22bb0d9527356e11f267f9187134de4d4ed1ff77468b4d73e3238697b96\",\"dweb:/ipfs/Qmc8caJctgxbzXEpxRogQMR2bnBk5U67hA7kKbUEG2PUXV\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xf96f969e24029d43d0df89e59d365f277021dac62b48e1c1e3ebe0acdd7f1ca1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec772b45a624be516f1c81970caa8a2e144301e9d0921cbc1a2789fef39a1269\",\"dweb:/ipfs/QmNyjwxCrGhQMyzLD93oUobJXVe9ceJvRvfXwbEtuxPiEj\"]},\"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol\":{\"keccak256\":\"0x1b588d76f3addfeb2f368ec534fbd8da6120c8ba3c08e95f410a9cc2204faf79\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://74e51ec8a8d50ad9c6c047a2548de4aac9e6da23f65b2d8a74e89665d26c527f\",\"dweb:/ipfs/QmS26ukRAwj9ZSHmRSbjmpmdA6EaZHAK6JvE38LkqjRYaP\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol\":{\"keccak256\":\"0xb68e122faba133422f4cbdd7e15fc913073dfa2c3682c18d6449b121e67d1104\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://da0611fda964b8356d38cb006133865b58adc6e11d3817e27daf20b02ad6880f\",\"dweb:/ipfs/QmeLbak3yiUfkGvxEZzmS4ndDwDfxtZNeKiA86G3WxzjyD\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IInstantDistributionAgreementV1.sol\":{\"keccak256\":\"0x7b088dfa11a00d2b1e6e0938978364a6918015b052a4bf3ffcc67db9b3182370\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://2437f6ea2d8c8de7613aef5de4dcf3530c2beb801f7d5f3e21ac617e73f8882b\",\"dweb:/ipfs/QmVBtqXYV25fQZ9P6xokBzgFnHCBthJSZdFo9quBY169fd\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol\":{\"keccak256\":\"0x80254971aff00fc006d70b85b7bc830bb28096789e72ff3f03aa22cc7810eb0c\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://840f9d959abfbf3919db3dca35336e360b2bbd54e677439a545c7c4f163f6d70\",\"dweb:/ipfs/QmR4CRq7dpYR4NuCSASkNrcnbSScRX8MaEvDs8L7v3xDyr\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol\":{\"keccak256\":\"0x9b4fab6dcac1337f78e04d67d8c2b48b1de8bd4bbf14b475840f9dbda7b8f21e\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://cc2f3629ad0cb46bd4f595880591ad6c9d75a82d920cb9355e462fbf8022c820\",\"dweb:/ipfs/QmXMovxK4qpWT4yffXxUVjkMNwxEfS6mtn39mLSmjaxEdW\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperApp.sol\":{\"keccak256\":\"0x6cc4b0724d977190c7441dfc3be6c6e48b43b555c3370af32ef5b6600f15f53f\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://3e89c944642772a42429f21a11017b57deb98a9198f8e4f8749f00aaee71299e\",\"dweb:/ipfs/QmaSv9GvqikcGHJ3tcwATDHSpQw6mfnHPDtcfqcZSS7LF6\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.sol\":{\"keccak256\":\"0x6860f0bf69dcc1d1ec39eefb43e0cd18b276b48ebe9efd53450e09cd2f997ab2\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://6421f80f2ff7818bd235b7bf4b911cc40edcb598507a246b4de0fa0191a9e1aa\",\"dweb:/ipfs/QmWxktXMjYhi1zt52D3JXNcxCFesXu8kQoSCJQ3j88apM3\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperTokenFactory.sol\":{\"keccak256\":\"0xe2525ef2906504e2f61775ed91bbebeea2f4e2e3fa42ce190561acf6a01187ff\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://7a9859eb432321a65cd15ca988a13776e1c31df44b4cf25f95fa04b54a8a8625\",\"dweb:/ipfs/QmQVJQoeoWemptZhbRgWJZWwMTiNtxVsc1FYmGdtdTfqcL\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol\":{\"keccak256\":\"0xab9dab941f99d0f0ef6125fb6eafde03378d7c3e94e613dd12fb7fbf594c3373\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://928c6ef915dee69058d4cfcb9f2344d4fc78d9763b47b17e5c03fbff64ba3c64\",\"dweb:/ipfs/Qmdk733ZHceatz3qbuodLCCS9TUspJJtXLoX6vWwMvrPDE\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance.sol\":{\"keccak256\":\"0x90a9259d0f0bb6b1bb6d48f051277eb75df96a9fbe684a203a3a468ad19318e2\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://9c8162a2d07ffe768920fef55292684149173afefbfba76b8fca007e55092229\",\"dweb:/ipfs/QmducLNwrzeUXEpBjUTSMu7sfmQEwVhcYXApe4brc1zQ6V\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol\":{\"keccak256\":\"0x9cad3866982902ea88df0874a563d2e4aeba5a5bcc6289c30cccf9b4099d2fb6\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://e8fd960b259331f204c7cb7dcd32b09d68f4294e3b872fad00ad467609c3ef72\",\"dweb:/ipfs/QmeZFEvsDunXQGPbXFfN5AvfKM5am1FY8Xv6e3c4tNKvgY\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo.sol\":{\"keccak256\":\"0x55be78ffb441c782f612b153d7d9049e3f0dbfd412c1f7df29c896b972b2985f\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://a223c68e38a6c9b1e363e525911bc7eda44ea517865ae53bd0d34ff858cc02ae\",\"dweb:/ipfs/QmVruGehibG6Emr2A6JHwUnhd4NzsGkE24cbGqnDpEvrKh\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.sol\":{\"keccak256\":\"0x7456cd394cc905aae7cdbd4601ce1c296c768c13c28e66efbb913cc070bad3e4\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://5a6589b428b724721ba5b4dd196c8f366a6e694ef313add093f29af64496c042\",\"dweb:/ipfs/QmSMgV6y8L6pyyzDz6kKmafVwujNWcjTqutpCBxe4uNRqg\"]},\"contracts/archives/OldFlow.sol\":{\"keccak256\":\"0xc2a20725569fa7eb3ae7e0ddc2ab081561110e946d754b012c17c68eade0f434\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://a6c58496a95908303a313563a8ea0fd604dd176758472c09196c97917064df94\",\"dweb:/ipfs/QmZDaJdsnu59YQx9rrbX1oyzTT2A1ATjtCxkM25xsuqPHV\"]},\"contracts/archives/OldLibFlow.sol\":{\"keccak256\":\"0x41a38a3595da8ca29d214887535559720c2236a54afd431e99973d53a9a41445\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://9421bf4f3329ebbcc33b2b8e551929953fe366d4240a321e67973ed175f5ebdb\",\"dweb:/ipfs/QmYb9dsEqRe4ELvu9ZaQrq5j5GPFFqGWDav7kAe14vVf22\"]},\"contracts/libraries/core/LibAutomate.sol\":{\"keccak256\":\"0xdca80cbbdf57dfc0f76c3719a54d2da92c09e46c3844b1011d9742a16ed2eb93\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://d5b967a7f5fa571c8154fa358725e9b5cff19b6e3847ff00e0ec210c9ce7a97b\",\"dweb:/ipfs/Qma7vn262Je4WamND9fytLSFaM4tw7NcGs5pYE1Lc3iB5a\"]},\"contracts/libraries/core/LibControl.sol\":{\"keccak256\":\"0x791dd1dc0c61948e1b1a46d190f02a041abdf6e2db26f1b436b06d8116381103\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://ec9343651044d62055789d04d464545afed31f82268dfd17703763a54441e0ec\",\"dweb:/ipfs/QmWKFYUATgubBYLZCRghkenZbjJHQwdQ8ymZVK5xBFm2QJ\"]},\"contracts/libraries/core/LibFlow.sol\":{\"keccak256\":\"0xf07903d54504fd374edbd492a084b92f9b9bd6e39846ecfcb743d9ce3031e2a7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://94b205c755a9c96ec4d8f3631cf24cb255d28b3abc65c7b2580f50a0f3c23f1c\",\"dweb:/ipfs/QmVsrQ3WzkQ9PvckGaBhd2ZDMV56wsPPZcRCGi5Qv9UXmc\"]},\"contracts/libraries/core/LibSession.sol\":{\"keccak256\":\"0xce48bf158372890e3075e07cab5747d373a3a6cf219ba85bef08691a49b96303\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7b8b013d5426d0ba0f4c9657e0ddc06ee0cecbf91679f4cb06a9bf2214cce17e\",\"dweb:/ipfs/QmXTPcBsdSanj4RM3xPrqNNMXk3eG8H7h47zSXj4ZVwTC9\"]},\"contracts/libraries/utils/IterableMappingBPS.sol\":{\"keccak256\":\"0xb6ab47a53267822918fdd13e4df79bfc1e8b2bbf921c80bbc4ad2e706e3539ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://092d19ac7ce0d7ada8fbb01d3af6822d6d8260fe8b8248e54b906a9edf381dd2\",\"dweb:/ipfs/QmZ8LZ72a2sSNfwm4Fpz54ZHVcjTe1dDy4ZrBhbNztZ1Bg\"]},\"contracts/services/gelato/Types.sol\":{\"keccak256\":\"0xcb8ce40dd420fe9d1fc258beba179e7c43560616dfd045d254a15fa75e6043e8\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://27599e8fa821421f99c2ae56716b118c4f47201d20c8475f6554395a60fc00a5\",\"dweb:/ipfs/QmS7h9jcSSZTM1icDDcFjdNgK3cFJWXFEXoJBpjfjn2a89\"]}},\"version\":1}"}},"contracts/archives/OldLibFlow.sol":{"OldLibFlow":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122059b7ec761c8621cdd1157679e35e5800f1deb3ab7ccea60bf6591e9a7c76fefd64736f6c63430008120033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MSIZE 0xB7 0xEC PUSH23 0x1C8621CDD1157679E35E5800F1DEB3AB7CCEA60BF6591E SWAP11 PUSH29 0x76FEFD64736F6C63430008120033000000000000000000000000000000 ","sourceMap":"633:15605:24:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122059b7ec761c8621cdd1157679e35e5800f1deb3ab7ccea60bf6591e9a7c76fefd64736f6c63430008120033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MSIZE 0xB7 0xEC PUSH23 0x1C8621CDD1157679E35E5800F1DEB3AB7CCEA60BF6591E SWAP11 PUSH29 0x76FEFD64736F6C63430008120033000000000000000000000000000000 ","sourceMap":"633:15605:24:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/archives/OldLibFlow.sol\":\"OldLibFlow\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"@openzeppelin/contracts/token/ERC777/IERC777.sol\":{\"keccak256\":\"0x385a7061f1436b079d44c140dee9387d5313e94874ff9ee877dc0085c981ac3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c3fe22bb0d9527356e11f267f9187134de4d4ed1ff77468b4d73e3238697b96\",\"dweb:/ipfs/Qmc8caJctgxbzXEpxRogQMR2bnBk5U67hA7kKbUEG2PUXV\"]},\"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol\":{\"keccak256\":\"0x1b588d76f3addfeb2f368ec534fbd8da6120c8ba3c08e95f410a9cc2204faf79\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://74e51ec8a8d50ad9c6c047a2548de4aac9e6da23f65b2d8a74e89665d26c527f\",\"dweb:/ipfs/QmS26ukRAwj9ZSHmRSbjmpmdA6EaZHAK6JvE38LkqjRYaP\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol\":{\"keccak256\":\"0xb68e122faba133422f4cbdd7e15fc913073dfa2c3682c18d6449b121e67d1104\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://da0611fda964b8356d38cb006133865b58adc6e11d3817e27daf20b02ad6880f\",\"dweb:/ipfs/QmeLbak3yiUfkGvxEZzmS4ndDwDfxtZNeKiA86G3WxzjyD\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IInstantDistributionAgreementV1.sol\":{\"keccak256\":\"0x7b088dfa11a00d2b1e6e0938978364a6918015b052a4bf3ffcc67db9b3182370\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://2437f6ea2d8c8de7613aef5de4dcf3530c2beb801f7d5f3e21ac617e73f8882b\",\"dweb:/ipfs/QmVBtqXYV25fQZ9P6xokBzgFnHCBthJSZdFo9quBY169fd\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol\":{\"keccak256\":\"0x80254971aff00fc006d70b85b7bc830bb28096789e72ff3f03aa22cc7810eb0c\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://840f9d959abfbf3919db3dca35336e360b2bbd54e677439a545c7c4f163f6d70\",\"dweb:/ipfs/QmR4CRq7dpYR4NuCSASkNrcnbSScRX8MaEvDs8L7v3xDyr\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol\":{\"keccak256\":\"0x9b4fab6dcac1337f78e04d67d8c2b48b1de8bd4bbf14b475840f9dbda7b8f21e\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://cc2f3629ad0cb46bd4f595880591ad6c9d75a82d920cb9355e462fbf8022c820\",\"dweb:/ipfs/QmXMovxK4qpWT4yffXxUVjkMNwxEfS6mtn39mLSmjaxEdW\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperApp.sol\":{\"keccak256\":\"0x6cc4b0724d977190c7441dfc3be6c6e48b43b555c3370af32ef5b6600f15f53f\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://3e89c944642772a42429f21a11017b57deb98a9198f8e4f8749f00aaee71299e\",\"dweb:/ipfs/QmaSv9GvqikcGHJ3tcwATDHSpQw6mfnHPDtcfqcZSS7LF6\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.sol\":{\"keccak256\":\"0x6860f0bf69dcc1d1ec39eefb43e0cd18b276b48ebe9efd53450e09cd2f997ab2\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://6421f80f2ff7818bd235b7bf4b911cc40edcb598507a246b4de0fa0191a9e1aa\",\"dweb:/ipfs/QmWxktXMjYhi1zt52D3JXNcxCFesXu8kQoSCJQ3j88apM3\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperTokenFactory.sol\":{\"keccak256\":\"0xe2525ef2906504e2f61775ed91bbebeea2f4e2e3fa42ce190561acf6a01187ff\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://7a9859eb432321a65cd15ca988a13776e1c31df44b4cf25f95fa04b54a8a8625\",\"dweb:/ipfs/QmQVJQoeoWemptZhbRgWJZWwMTiNtxVsc1FYmGdtdTfqcL\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol\":{\"keccak256\":\"0xab9dab941f99d0f0ef6125fb6eafde03378d7c3e94e613dd12fb7fbf594c3373\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://928c6ef915dee69058d4cfcb9f2344d4fc78d9763b47b17e5c03fbff64ba3c64\",\"dweb:/ipfs/Qmdk733ZHceatz3qbuodLCCS9TUspJJtXLoX6vWwMvrPDE\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance.sol\":{\"keccak256\":\"0x90a9259d0f0bb6b1bb6d48f051277eb75df96a9fbe684a203a3a468ad19318e2\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://9c8162a2d07ffe768920fef55292684149173afefbfba76b8fca007e55092229\",\"dweb:/ipfs/QmducLNwrzeUXEpBjUTSMu7sfmQEwVhcYXApe4brc1zQ6V\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol\":{\"keccak256\":\"0x9cad3866982902ea88df0874a563d2e4aeba5a5bcc6289c30cccf9b4099d2fb6\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://e8fd960b259331f204c7cb7dcd32b09d68f4294e3b872fad00ad467609c3ef72\",\"dweb:/ipfs/QmeZFEvsDunXQGPbXFfN5AvfKM5am1FY8Xv6e3c4tNKvgY\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo.sol\":{\"keccak256\":\"0x55be78ffb441c782f612b153d7d9049e3f0dbfd412c1f7df29c896b972b2985f\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://a223c68e38a6c9b1e363e525911bc7eda44ea517865ae53bd0d34ff858cc02ae\",\"dweb:/ipfs/QmVruGehibG6Emr2A6JHwUnhd4NzsGkE24cbGqnDpEvrKh\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.sol\":{\"keccak256\":\"0x7456cd394cc905aae7cdbd4601ce1c296c768c13c28e66efbb913cc070bad3e4\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://5a6589b428b724721ba5b4dd196c8f366a6e694ef313add093f29af64496c042\",\"dweb:/ipfs/QmSMgV6y8L6pyyzDz6kKmafVwujNWcjTqutpCBxe4uNRqg\"]},\"contracts/archives/OldLibFlow.sol\":{\"keccak256\":\"0x41a38a3595da8ca29d214887535559720c2236a54afd431e99973d53a9a41445\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://9421bf4f3329ebbcc33b2b8e551929953fe366d4240a321e67973ed175f5ebdb\",\"dweb:/ipfs/QmYb9dsEqRe4ELvu9ZaQrq5j5GPFFqGWDav7kAe14vVf22\"]},\"contracts/libraries/core/LibControl.sol\":{\"keccak256\":\"0x791dd1dc0c61948e1b1a46d190f02a041abdf6e2db26f1b436b06d8116381103\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://ec9343651044d62055789d04d464545afed31f82268dfd17703763a54441e0ec\",\"dweb:/ipfs/QmWKFYUATgubBYLZCRghkenZbjJHQwdQ8ymZVK5xBFm2QJ\"]},\"contracts/libraries/core/LibFlow.sol\":{\"keccak256\":\"0xf07903d54504fd374edbd492a084b92f9b9bd6e39846ecfcb743d9ce3031e2a7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://94b205c755a9c96ec4d8f3631cf24cb255d28b3abc65c7b2580f50a0f3c23f1c\",\"dweb:/ipfs/QmVsrQ3WzkQ9PvckGaBhd2ZDMV56wsPPZcRCGi5Qv9UXmc\"]},\"contracts/libraries/core/LibSession.sol\":{\"keccak256\":\"0xce48bf158372890e3075e07cab5747d373a3a6cf219ba85bef08691a49b96303\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7b8b013d5426d0ba0f4c9657e0ddc06ee0cecbf91679f4cb06a9bf2214cce17e\",\"dweb:/ipfs/QmXTPcBsdSanj4RM3xPrqNNMXk3eG8H7h47zSXj4ZVwTC9\"]},\"contracts/libraries/utils/IterableMappingBPS.sol\":{\"keccak256\":\"0xb6ab47a53267822918fdd13e4df79bfc1e8b2bbf921c80bbc4ad2e706e3539ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://092d19ac7ce0d7ada8fbb01d3af6822d6d8260fe8b8248e54b906a9edf381dd2\",\"dweb:/ipfs/QmZ8LZ72a2sSNfwm4Fpz54ZHVcjTe1dDy4ZrBhbNztZ1Bg\"]}},\"version\":1}"}},"contracts/facets/core/Automate.sol":{"Automate":{"abi":[{"inputs":[],"name":"depositGelatoFunds","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getGelatoAddresses","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMinimumAppGelatoBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_autobot","type":"address"}],"name":"setGelatoContracts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"setMinimumAppGelatoBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawGelatoFunds","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b5061114f806100206000396000f3fe6080604052600436106100555760003560e01c80631674bc241461005a5780632e4b69451461006457806371ebf6f41461008d578063a6f9223d146100b6578063bb6bd765146100df578063f24a25de1461010e575b600080fd5b610062610139565b005b34801561007057600080fd5b5061008b60048036038101906100869190610a52565b610144565b005b34801561009957600080fd5b506100b460048036038101906100af9190610add565b61017d565b005b3480156100c257600080fd5b506100dd60048036038101906100d89190610a52565b6101b6565b005b3480156100eb57600080fd5b506100f46101ef565b604051610105959493929190610b19565b60405180910390f35b34801561011a57600080fd5b50610123610210565b6040516101309190610b7b565b60405180910390f35b6101423461021f565b565b61017160405160200161015690610bf3565b604051602081830303815290604052805190602001206102d1565b61017a816102dd565b50565b6101aa60405160200161018f90610bf3565b604051602081830303815290604052805190602001206102d1565b6101b3816102f0565b50565b6101e36040516020016101c890610c5f565b604051602081830303815290604052805190602001206102d1565b6101ec816104d8565b50565b60008060008060006101ff610589565b945094509450945094509091929394565b600061021a610650565b905090565b610227610663565b60010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c1461d57823073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee856040518563ffffffff1660e01b815260040161029c93929190610c7f565b6000604051808303818588803b1580156102b557600080fd5b505af11580156102c9573d6000803e3d6000fd5b505050505050565b6102da81610690565b50565b806102e6610663565b6003018190555050565b806102f9610663565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663573ea5756040518163ffffffff1660e01b8152600401602060405180830381865afa158015610385573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a99190610cf4565b6103b1610663565b60020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506103fa610663565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e60a32136040518163ffffffff1660e01b8152600401602060405180830381865afa158015610468573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061048c9190610d5f565b610494610663565b60010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6104e0610663565b60010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631c20fadd3373eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee846040518463ffffffff1660e01b815260040161055493929190610d9b565b600060405180830381600087803b15801561056e57600080fd5b505af1158015610582573d6000803e3d6000fd5b5050505050565b6000806000806000610599610663565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166105c5610663565b60010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166105f1610663565b60020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673c815db16d4be6ddf2685c201937905abf338f5d773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee945094509450945094509091929394565b600061065a610663565b60030154905090565b6000807fde06769ca6d80a022439e234eebb61c3801d652175b62f912d6f8cac7b881c6590508091505090565b61069a813361069d565b50565b6106a7828261073a565b610736576106cc8173ffffffffffffffffffffffffffffffffffffffff1660146107ae565b6106da8360001c60206107ae565b6040516020016106eb929190610edb565b6040516020818303038152906040526040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072d9190610f5f565b60405180910390fd5b5050565b60006107446109ea565b600001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6060600060028360026107c19190610fb0565b6107cb9190610ff2565b67ffffffffffffffff8111156107e4576107e3611026565b5b6040519080825280601f01601f1916602001820160405280156108165781602001600182028036833780820191505090505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061084e5761084d611055565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106108b2576108b1611055565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026108f29190610fb0565b6108fc9190610ff2565b90505b600181111561099c577f3031323334353637383961626364656600000000000000000000000000000000600f86166010811061093e5761093d611055565b5b1a60f81b82828151811061095557610954611055565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c94508061099590611084565b90506108ff565b50600084146109e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d7906110f9565b60405180910390fd5b8091505092915050565b6000807f4cd15452b25e815d3f9d1a3c7edd985a178edf5eb3461a1acbf855517423d69490508091505090565b600080fd5b6000819050919050565b610a2f81610a1c565b8114610a3a57600080fd5b50565b600081359050610a4c81610a26565b92915050565b600060208284031215610a6857610a67610a17565b5b6000610a7684828501610a3d565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610aaa82610a7f565b9050919050565b610aba81610a9f565b8114610ac557600080fd5b50565b600081359050610ad781610ab1565b92915050565b600060208284031215610af357610af2610a17565b5b6000610b0184828501610ac8565b91505092915050565b610b1381610a9f565b82525050565b600060a082019050610b2e6000830188610b0a565b610b3b6020830187610b0a565b610b486040830186610b0a565b610b556060830185610b0a565b610b626080830184610b0a565b9695505050505050565b610b7581610a1c565b82525050565b6000602082019050610b906000830184610b6c565b92915050565b600082825260208201905092915050565b7f535452415445474953545f524f4c450000000000000000000000000000000000600082015250565b6000610bdd600f83610b96565b9150610be882610ba7565b602082019050919050565b60006020820190508181036000830152610c0c81610bd0565b9050919050565b7f5452454153555245525f524f4c45000000000000000000000000000000000000600082015250565b6000610c49600e83610b96565b9150610c5482610c13565b602082019050919050565b60006020820190508181036000830152610c7881610c3c565b9050919050565b6000606082019050610c946000830186610b0a565b610ca16020830185610b0a565b610cae6040830184610b6c565b949350505050565b6000610cc182610a7f565b9050919050565b610cd181610cb6565b8114610cdc57600080fd5b50565b600081519050610cee81610cc8565b92915050565b600060208284031215610d0a57610d09610a17565b5b6000610d1884828501610cdf565b91505092915050565b6000610d2c82610a9f565b9050919050565b610d3c81610d21565b8114610d4757600080fd5b50565b600081519050610d5981610d33565b92915050565b600060208284031215610d7557610d74610a17565b5b6000610d8384828501610d4a565b91505092915050565b610d9581610cb6565b82525050565b6000606082019050610db06000830186610d8c565b610dbd6020830185610b0a565b610dca6040830184610b6c565b949350505050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000610e13601783610dd2565b9150610e1e82610ddd565b601782019050919050565b600081519050919050565b60005b83811015610e52578082015181840152602081019050610e37565b60008484015250505050565b6000610e6982610e29565b610e738185610dd2565b9350610e83818560208601610e34565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000610ec5601183610dd2565b9150610ed082610e8f565b601182019050919050565b6000610ee682610e06565b9150610ef28285610e5e565b9150610efd82610eb8565b9150610f098284610e5e565b91508190509392505050565b6000601f19601f8301169050919050565b6000610f3182610e29565b610f3b8185610b96565b9350610f4b818560208601610e34565b610f5481610f15565b840191505092915050565b60006020820190508181036000830152610f798184610f26565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610fbb82610a1c565b9150610fc683610a1c565b9250828202610fd481610a1c565b91508282048414831517610feb57610fea610f81565b5b5092915050565b6000610ffd82610a1c565b915061100883610a1c565b92508282019050808211156110205761101f610f81565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061108f82610a1c565b9150600082036110a2576110a1610f81565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b60006110e3602083610b96565b91506110ee826110ad565b602082019050919050565b60006020820190508181036000830152611112816110d6565b905091905056fea2646970667358221220a8e3bdc4351e1596162105b3ee5523910e922fd558df7c9a6af4ab9af898ea5b64736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x114F DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x55 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1674BC24 EQ PUSH2 0x5A JUMPI DUP1 PUSH4 0x2E4B6945 EQ PUSH2 0x64 JUMPI DUP1 PUSH4 0x71EBF6F4 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0xA6F9223D EQ PUSH2 0xB6 JUMPI DUP1 PUSH4 0xBB6BD765 EQ PUSH2 0xDF JUMPI DUP1 PUSH4 0xF24A25DE EQ PUSH2 0x10E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x62 PUSH2 0x139 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x86 SWAP2 SWAP1 PUSH2 0xA52 JUMP JUMPDEST PUSH2 0x144 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB4 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xAF SWAP2 SWAP1 PUSH2 0xADD JUMP JUMPDEST PUSH2 0x17D JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xDD PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xD8 SWAP2 SWAP1 PUSH2 0xA52 JUMP JUMPDEST PUSH2 0x1B6 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF4 PUSH2 0x1EF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x105 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xB19 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x11A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x123 PUSH2 0x210 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x130 SWAP2 SWAP1 PUSH2 0xB7B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x142 CALLVALUE PUSH2 0x21F JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x171 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x156 SWAP1 PUSH2 0xBF3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0x2D1 JUMP JUMPDEST PUSH2 0x17A DUP2 PUSH2 0x2DD JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x1AA PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x18F SWAP1 PUSH2 0xBF3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0x2D1 JUMP JUMPDEST PUSH2 0x1B3 DUP2 PUSH2 0x2F0 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x1E3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1C8 SWAP1 PUSH2 0xC5F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0x2D1 JUMP JUMPDEST PUSH2 0x1EC DUP2 PUSH2 0x4D8 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1FF PUSH2 0x589 JUMP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x21A PUSH2 0x650 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x227 PUSH2 0x663 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xC1461D57 DUP3 ADDRESS PUSH20 0xEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE DUP6 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x29C SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xC7F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2C9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2DA DUP2 PUSH2 0x690 JUMP JUMPDEST POP JUMP JUMPDEST DUP1 PUSH2 0x2E6 PUSH2 0x663 JUMP JUMPDEST PUSH1 0x3 ADD DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST DUP1 PUSH2 0x2F9 PUSH2 0x663 JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x573EA575 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x385 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3A9 SWAP2 SWAP1 PUSH2 0xCF4 JUMP JUMPDEST PUSH2 0x3B1 PUSH2 0x663 JUMP JUMPDEST PUSH1 0x2 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x3FA PUSH2 0x663 JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xE60A3213 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x468 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x48C SWAP2 SWAP1 PUSH2 0xD5F JUMP JUMPDEST PUSH2 0x494 PUSH2 0x663 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH2 0x4E0 PUSH2 0x663 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x1C20FADD CALLER PUSH20 0xEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE DUP5 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x554 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xD9B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x56E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x582 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x599 PUSH2 0x663 JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x5C5 PUSH2 0x663 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x5F1 PUSH2 0x663 JUMP JUMPDEST PUSH1 0x2 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xC815DB16D4BE6DDF2685C201937905ABF338F5D7 PUSH20 0xEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x65A PUSH2 0x663 JUMP JUMPDEST PUSH1 0x3 ADD SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0xDE06769CA6D80A022439E234EEBB61C3801D652175B62F912D6F8CAC7B881C65 SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH2 0x69A DUP2 CALLER PUSH2 0x69D JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x6A7 DUP3 DUP3 PUSH2 0x73A JUMP JUMPDEST PUSH2 0x736 JUMPI PUSH2 0x6CC DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x14 PUSH2 0x7AE JUMP JUMPDEST PUSH2 0x6DA DUP4 PUSH1 0x0 SHR PUSH1 0x20 PUSH2 0x7AE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x6EB SWAP3 SWAP2 SWAP1 PUSH2 0xEDB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x72D SWAP2 SWAP1 PUSH2 0xF5F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x744 PUSH2 0x9EA JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x2 DUP4 PUSH1 0x2 PUSH2 0x7C1 SWAP2 SWAP1 PUSH2 0xFB0 JUMP JUMPDEST PUSH2 0x7CB SWAP2 SWAP1 PUSH2 0xFF2 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x7E4 JUMPI PUSH2 0x7E3 PUSH2 0x1026 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x816 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x84E JUMPI PUSH2 0x84D PUSH2 0x1055 JUMP JUMPDEST JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH32 0x7800000000000000000000000000000000000000000000000000000000000000 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x8B2 JUMPI PUSH2 0x8B1 PUSH2 0x1055 JUMP JUMPDEST JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x0 PUSH1 0x1 DUP5 PUSH1 0x2 PUSH2 0x8F2 SWAP2 SWAP1 PUSH2 0xFB0 JUMP JUMPDEST PUSH2 0x8FC SWAP2 SWAP1 PUSH2 0xFF2 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x99C JUMPI PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 PUSH1 0xF DUP7 AND PUSH1 0x10 DUP2 LT PUSH2 0x93E JUMPI PUSH2 0x93D PUSH2 0x1055 JUMP JUMPDEST JUMPDEST BYTE PUSH1 0xF8 SHL DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x955 JUMPI PUSH2 0x954 PUSH2 0x1055 JUMP JUMPDEST JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x4 DUP6 SWAP1 SHR SWAP5 POP DUP1 PUSH2 0x995 SWAP1 PUSH2 0x1084 JUMP JUMPDEST SWAP1 POP PUSH2 0x8FF JUMP JUMPDEST POP PUSH1 0x0 DUP5 EQ PUSH2 0x9E0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9D7 SWAP1 PUSH2 0x10F9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x4CD15452B25E815D3F9D1A3C7EDD985A178EDF5EB3461A1ACBF855517423D694 SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xA2F DUP2 PUSH2 0xA1C JUMP JUMPDEST DUP2 EQ PUSH2 0xA3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xA4C DUP2 PUSH2 0xA26 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA68 JUMPI PUSH2 0xA67 PUSH2 0xA17 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xA76 DUP5 DUP3 DUP6 ADD PUSH2 0xA3D JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAAA DUP3 PUSH2 0xA7F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xABA DUP2 PUSH2 0xA9F JUMP JUMPDEST DUP2 EQ PUSH2 0xAC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xAD7 DUP2 PUSH2 0xAB1 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xAF3 JUMPI PUSH2 0xAF2 PUSH2 0xA17 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xB01 DUP5 DUP3 DUP6 ADD PUSH2 0xAC8 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xB13 DUP2 PUSH2 0xA9F JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 ADD SWAP1 POP PUSH2 0xB2E PUSH1 0x0 DUP4 ADD DUP9 PUSH2 0xB0A JUMP JUMPDEST PUSH2 0xB3B PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0xB0A JUMP JUMPDEST PUSH2 0xB48 PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0xB0A JUMP JUMPDEST PUSH2 0xB55 PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0xB0A JUMP JUMPDEST PUSH2 0xB62 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0xB0A JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xB75 DUP2 PUSH2 0xA1C JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xB90 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xB6C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x535452415445474953545F524F4C450000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBDD PUSH1 0xF DUP4 PUSH2 0xB96 JUMP JUMPDEST SWAP2 POP PUSH2 0xBE8 DUP3 PUSH2 0xBA7 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xC0C DUP2 PUSH2 0xBD0 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x5452454153555245525F524F4C45000000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC49 PUSH1 0xE DUP4 PUSH2 0xB96 JUMP JUMPDEST SWAP2 POP PUSH2 0xC54 DUP3 PUSH2 0xC13 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xC78 DUP2 PUSH2 0xC3C JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0xC94 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0xB0A JUMP JUMPDEST PUSH2 0xCA1 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0xB0A JUMP JUMPDEST PUSH2 0xCAE PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0xB6C JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCC1 DUP3 PUSH2 0xA7F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xCD1 DUP2 PUSH2 0xCB6 JUMP JUMPDEST DUP2 EQ PUSH2 0xCDC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0xCEE DUP2 PUSH2 0xCC8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD0A JUMPI PUSH2 0xD09 PUSH2 0xA17 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xD18 DUP5 DUP3 DUP6 ADD PUSH2 0xCDF JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD2C DUP3 PUSH2 0xA9F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xD3C DUP2 PUSH2 0xD21 JUMP JUMPDEST DUP2 EQ PUSH2 0xD47 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0xD59 DUP2 PUSH2 0xD33 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD75 JUMPI PUSH2 0xD74 PUSH2 0xA17 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xD83 DUP5 DUP3 DUP6 ADD PUSH2 0xD4A JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xD95 DUP2 PUSH2 0xCB6 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0xDB0 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0xD8C JUMP JUMPDEST PUSH2 0xDBD PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0xB0A JUMP JUMPDEST PUSH2 0xDCA PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0xB6C JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x416363657373436F6E74726F6C3A206163636F756E7420000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE13 PUSH1 0x17 DUP4 PUSH2 0xDD2 JUMP JUMPDEST SWAP2 POP PUSH2 0xE1E DUP3 PUSH2 0xDDD JUMP JUMPDEST PUSH1 0x17 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE52 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xE37 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE69 DUP3 PUSH2 0xE29 JUMP JUMPDEST PUSH2 0xE73 DUP2 DUP6 PUSH2 0xDD2 JUMP JUMPDEST SWAP4 POP PUSH2 0xE83 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xE34 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x206973206D697373696E6720726F6C6520000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEC5 PUSH1 0x11 DUP4 PUSH2 0xDD2 JUMP JUMPDEST SWAP2 POP PUSH2 0xED0 DUP3 PUSH2 0xE8F JUMP JUMPDEST PUSH1 0x11 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEE6 DUP3 PUSH2 0xE06 JUMP JUMPDEST SWAP2 POP PUSH2 0xEF2 DUP3 DUP6 PUSH2 0xE5E JUMP JUMPDEST SWAP2 POP PUSH2 0xEFD DUP3 PUSH2 0xEB8 JUMP JUMPDEST SWAP2 POP PUSH2 0xF09 DUP3 DUP5 PUSH2 0xE5E JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF31 DUP3 PUSH2 0xE29 JUMP JUMPDEST PUSH2 0xF3B DUP2 DUP6 PUSH2 0xB96 JUMP JUMPDEST SWAP4 POP PUSH2 0xF4B DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xE34 JUMP JUMPDEST PUSH2 0xF54 DUP2 PUSH2 0xF15 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xF79 DUP2 DUP5 PUSH2 0xF26 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xFBB DUP3 PUSH2 0xA1C JUMP JUMPDEST SWAP2 POP PUSH2 0xFC6 DUP4 PUSH2 0xA1C JUMP JUMPDEST SWAP3 POP DUP3 DUP3 MUL PUSH2 0xFD4 DUP2 PUSH2 0xA1C JUMP JUMPDEST SWAP2 POP DUP3 DUP3 DIV DUP5 EQ DUP4 ISZERO OR PUSH2 0xFEB JUMPI PUSH2 0xFEA PUSH2 0xF81 JUMP JUMPDEST JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFFD DUP3 PUSH2 0xA1C JUMP JUMPDEST SWAP2 POP PUSH2 0x1008 DUP4 PUSH2 0xA1C JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x1020 JUMPI PUSH2 0x101F PUSH2 0xF81 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x108F DUP3 PUSH2 0xA1C JUMP JUMPDEST SWAP2 POP PUSH1 0x0 DUP3 SUB PUSH2 0x10A2 JUMPI PUSH2 0x10A1 PUSH2 0xF81 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 SUB SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x537472696E67733A20686578206C656E67746820696E73756666696369656E74 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10E3 PUSH1 0x20 DUP4 PUSH2 0xB96 JUMP JUMPDEST SWAP2 POP PUSH2 0x10EE DUP3 PUSH2 0x10AD JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1112 DUP2 PUSH2 0x10D6 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA8 0xE3 0xBD 0xC4 CALLDATALOAD 0x1E ISZERO SWAP7 AND 0x21 SDIV 0xB3 0xEE SSTORE 0x23 SWAP2 0xE SWAP3 0x2F 0xD5 PC 0xDF PUSH29 0x9A6AF4AB9AF898EA5B64736F6C63430008120033000000000000000000 ","sourceMap":"269:1074:25:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_checkRole_15290":{"entryPoint":1680,"id":15290,"parameterSlots":1,"returnSlots":0},"@_checkRole_15332":{"entryPoint":1693,"id":15332,"parameterSlots":2,"returnSlots":0},"@_depositGelatoFunds_11990":{"entryPoint":543,"id":11990,"parameterSlots":1,"returnSlots":0},"@_getGelatoAddresses_12222":{"entryPoint":1417,"id":12222,"parameterSlots":0,"returnSlots":5},"@_getMinimumAppGelatoBalance_12232":{"entryPoint":1616,"id":12232,"parameterSlots":0,"returnSlots":1},"@_hasRole_15278":{"entryPoint":1850,"id":15278,"parameterSlots":2,"returnSlots":1},"@_requireOnlyRole_15259":{"entryPoint":721,"id":15259,"parameterSlots":1,"returnSlots":0},"@_setGelatoContracts_12177":{"entryPoint":752,"id":12177,"parameterSlots":1,"returnSlots":0},"@_setMinimumAppGelatoBalance_12189":{"entryPoint":733,"id":12189,"parameterSlots":1,"returnSlots":0},"@_storageAccessControl_15249":{"entryPoint":2538,"id":15249,"parameterSlots":0,"returnSlots":1},"@_storageAutomate_11951":{"entryPoint":1635,"id":11951,"parameterSlots":0,"returnSlots":1},"@_withdrawGelatoFunds_11970":{"entryPoint":1240,"id":11970,"parameterSlots":1,"returnSlots":0},"@depositGelatoFunds_9355":{"entryPoint":313,"id":9355,"parameterSlots":0,"returnSlots":0},"@getGelatoAddresses_9296":{"entryPoint":495,"id":9296,"parameterSlots":0,"returnSlots":5},"@getMinimumAppGelatoBalance_9306":{"entryPoint":528,"id":9306,"parameterSlots":0,"returnSlots":1},"@setGelatoContracts_9325":{"entryPoint":381,"id":9325,"parameterSlots":1,"returnSlots":0},"@setMinimumAppGelatoBalance_9344":{"entryPoint":324,"id":9344,"parameterSlots":1,"returnSlots":0},"@toHexString_1109":{"entryPoint":1966,"id":1109,"parameterSlots":2,"returnSlots":1},"@withdrawGelatoFunds_9374":{"entryPoint":438,"id":9374,"parameterSlots":1,"returnSlots":0},"abi_decode_t_address":{"entryPoint":2760,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_address_payable_fromMemory":{"entryPoint":3295,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_contract$_ITaskTreasuryUpgradable_$16342_fromMemory":{"entryPoint":3402,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint256":{"entryPoint":2621,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":2781,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address_payable_fromMemory":{"entryPoint":3316,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_ITaskTreasuryUpgradable_$16342_fromMemory":{"entryPoint":3423,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256":{"entryPoint":2642,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_address_payable_to_t_address_payable_fromStack":{"entryPoint":3468,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_address_to_t_address_fromStack":{"entryPoint":2826,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack":{"entryPoint":3878,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":3678,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2_to_t_string_memory_ptr_fromStack":{"entryPoint":4310,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_17a8e30262c1f919c33056d877a3c22b95c2f5e4dac44683c1c2323cd79fbdb0_to_t_string_memory_ptr_fromStack":{"entryPoint":3024,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07_to_t_string_memory_ptr_fromStack":{"entryPoint":3132,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_to_t_string_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":3590,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_to_t_string_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":3768,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_uint256_to_t_uint256_fromStack":{"entryPoint":2924,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_tuple_packed_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_t_string_memory_ptr_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":3803,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address_payable_t_address_t_uint256__to_t_address_payable_t_address_t_uint256__fromStack_reversed":{"entryPoint":3483,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_address_t_address_t_address__to_t_address_t_address_t_address_t_address_t_address__fromStack_reversed":{"entryPoint":2841,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed":{"entryPoint":3199,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":3935,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":4345,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_17a8e30262c1f919c33056d877a3c22b95c2f5e4dac44683c1c2323cd79fbdb0__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":3059,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":3167,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":2939,"id":null,"parameterSlots":2,"returnSlots":1},"allocate_unbounded":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"array_length_t_string_memory_ptr":{"entryPoint":3625,"id":null,"parameterSlots":1,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_fromStack":{"entryPoint":2966,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":3538,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":4082,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_t_uint256":{"entryPoint":4016,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_t_address":{"entryPoint":2719,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_address_payable":{"entryPoint":3254,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_contract$_ITaskTreasuryUpgradable_$16342":{"entryPoint":3361,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint160":{"entryPoint":2687,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint256":{"entryPoint":2588,"id":null,"parameterSlots":1,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":3636,"id":null,"parameterSlots":3,"returnSlots":0},"decrement_t_uint256":{"entryPoint":4228,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":3969,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":4181,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":4134,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":2583,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of_32":{"entryPoint":3861,"id":null,"parameterSlots":1,"returnSlots":1},"store_literal_in_memory_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2":{"entryPoint":4269,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_17a8e30262c1f919c33056d877a3c22b95c2f5e4dac44683c1c2323cd79fbdb0":{"entryPoint":2983,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07":{"entryPoint":3091,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874":{"entryPoint":3549,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69":{"entryPoint":3727,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_address":{"entryPoint":2737,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_address_payable":{"entryPoint":3272,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_contract$_ITaskTreasuryUpgradable_$16342":{"entryPoint":3379,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_uint256":{"entryPoint":2598,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:14146:61","statements":[{"body":{"nodeType":"YulBlock","src":"47:35:61","statements":[{"nodeType":"YulAssignment","src":"57:19:61","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"73:2:61","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"67:5:61"},"nodeType":"YulFunctionCall","src":"67:9:61"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"57:6:61"}]}]},"name":"allocate_unbounded","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"40:6:61","type":""}],"src":"7:75:61"},{"body":{"nodeType":"YulBlock","src":"177:28:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"194:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"197:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"187:6:61"},"nodeType":"YulFunctionCall","src":"187:12:61"},"nodeType":"YulExpressionStatement","src":"187:12:61"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulFunctionDefinition","src":"88:117:61"},{"body":{"nodeType":"YulBlock","src":"300:28:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"317:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"320:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"310:6:61"},"nodeType":"YulFunctionCall","src":"310:12:61"},"nodeType":"YulExpressionStatement","src":"310:12:61"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulFunctionDefinition","src":"211:117:61"},{"body":{"nodeType":"YulBlock","src":"379:32:61","statements":[{"nodeType":"YulAssignment","src":"389:16:61","value":{"name":"value","nodeType":"YulIdentifier","src":"400:5:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"389:7:61"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"361:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"371:7:61","type":""}],"src":"334:77:61"},{"body":{"nodeType":"YulBlock","src":"460:79:61","statements":[{"body":{"nodeType":"YulBlock","src":"517:16:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"526:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"529:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"519:6:61"},"nodeType":"YulFunctionCall","src":"519:12:61"},"nodeType":"YulExpressionStatement","src":"519:12:61"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"483:5:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"508:5:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"490:17:61"},"nodeType":"YulFunctionCall","src":"490:24:61"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"480:2:61"},"nodeType":"YulFunctionCall","src":"480:35:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"473:6:61"},"nodeType":"YulFunctionCall","src":"473:43:61"},"nodeType":"YulIf","src":"470:63:61"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"453:5:61","type":""}],"src":"417:122:61"},{"body":{"nodeType":"YulBlock","src":"597:87:61","statements":[{"nodeType":"YulAssignment","src":"607:29:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"629:6:61"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"616:12:61"},"nodeType":"YulFunctionCall","src":"616:20:61"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"607:5:61"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"672:5:61"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"645:26:61"},"nodeType":"YulFunctionCall","src":"645:33:61"},"nodeType":"YulExpressionStatement","src":"645:33:61"}]},"name":"abi_decode_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"575:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"583:3:61","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"591:5:61","type":""}],"src":"545:139:61"},{"body":{"nodeType":"YulBlock","src":"756:263:61","statements":[{"body":{"nodeType":"YulBlock","src":"802:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"804:77:61"},"nodeType":"YulFunctionCall","src":"804:79:61"},"nodeType":"YulExpressionStatement","src":"804:79:61"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"777:7:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"786:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"773:3:61"},"nodeType":"YulFunctionCall","src":"773:23:61"},{"kind":"number","nodeType":"YulLiteral","src":"798:2:61","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"769:3:61"},"nodeType":"YulFunctionCall","src":"769:32:61"},"nodeType":"YulIf","src":"766:119:61"},{"nodeType":"YulBlock","src":"895:117:61","statements":[{"nodeType":"YulVariableDeclaration","src":"910:15:61","value":{"kind":"number","nodeType":"YulLiteral","src":"924:1:61","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"914:6:61","type":""}]},{"nodeType":"YulAssignment","src":"939:63:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"974:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"985:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"970:3:61"},"nodeType":"YulFunctionCall","src":"970:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"994:7:61"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"949:20:61"},"nodeType":"YulFunctionCall","src":"949:53:61"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"939:6:61"}]}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"726:9:61","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"737:7:61","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"749:6:61","type":""}],"src":"690:329:61"},{"body":{"nodeType":"YulBlock","src":"1070:81:61","statements":[{"nodeType":"YulAssignment","src":"1080:65:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1095:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"1102:42:61","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1091:3:61"},"nodeType":"YulFunctionCall","src":"1091:54:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"1080:7:61"}]}]},"name":"cleanup_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1052:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"1062:7:61","type":""}],"src":"1025:126:61"},{"body":{"nodeType":"YulBlock","src":"1202:51:61","statements":[{"nodeType":"YulAssignment","src":"1212:35:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1241:5:61"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"1223:17:61"},"nodeType":"YulFunctionCall","src":"1223:24:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"1212:7:61"}]}]},"name":"cleanup_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1184:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"1194:7:61","type":""}],"src":"1157:96:61"},{"body":{"nodeType":"YulBlock","src":"1302:79:61","statements":[{"body":{"nodeType":"YulBlock","src":"1359:16:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1368:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1371:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1361:6:61"},"nodeType":"YulFunctionCall","src":"1361:12:61"},"nodeType":"YulExpressionStatement","src":"1361:12:61"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1325:5:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1350:5:61"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"1332:17:61"},"nodeType":"YulFunctionCall","src":"1332:24:61"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1322:2:61"},"nodeType":"YulFunctionCall","src":"1322:35:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1315:6:61"},"nodeType":"YulFunctionCall","src":"1315:43:61"},"nodeType":"YulIf","src":"1312:63:61"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1295:5:61","type":""}],"src":"1259:122:61"},{"body":{"nodeType":"YulBlock","src":"1439:87:61","statements":[{"nodeType":"YulAssignment","src":"1449:29:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1471:6:61"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1458:12:61"},"nodeType":"YulFunctionCall","src":"1458:20:61"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1449:5:61"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1514:5:61"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"1487:26:61"},"nodeType":"YulFunctionCall","src":"1487:33:61"},"nodeType":"YulExpressionStatement","src":"1487:33:61"}]},"name":"abi_decode_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1417:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"1425:3:61","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1433:5:61","type":""}],"src":"1387:139:61"},{"body":{"nodeType":"YulBlock","src":"1598:263:61","statements":[{"body":{"nodeType":"YulBlock","src":"1644:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"1646:77:61"},"nodeType":"YulFunctionCall","src":"1646:79:61"},"nodeType":"YulExpressionStatement","src":"1646:79:61"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1619:7:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"1628:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1615:3:61"},"nodeType":"YulFunctionCall","src":"1615:23:61"},{"kind":"number","nodeType":"YulLiteral","src":"1640:2:61","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1611:3:61"},"nodeType":"YulFunctionCall","src":"1611:32:61"},"nodeType":"YulIf","src":"1608:119:61"},{"nodeType":"YulBlock","src":"1737:117:61","statements":[{"nodeType":"YulVariableDeclaration","src":"1752:15:61","value":{"kind":"number","nodeType":"YulLiteral","src":"1766:1:61","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1756:6:61","type":""}]},{"nodeType":"YulAssignment","src":"1781:63:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1816:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"1827:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1812:3:61"},"nodeType":"YulFunctionCall","src":"1812:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1836:7:61"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"1791:20:61"},"nodeType":"YulFunctionCall","src":"1791:53:61"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1781:6:61"}]}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1568:9:61","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1579:7:61","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1591:6:61","type":""}],"src":"1532:329:61"},{"body":{"nodeType":"YulBlock","src":"1932:53:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1949:3:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1972:5:61"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"1954:17:61"},"nodeType":"YulFunctionCall","src":"1954:24:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1942:6:61"},"nodeType":"YulFunctionCall","src":"1942:37:61"},"nodeType":"YulExpressionStatement","src":"1942:37:61"}]},"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1920:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"1927:3:61","type":""}],"src":"1867:118:61"},{"body":{"nodeType":"YulBlock","src":"2201:454:61","statements":[{"nodeType":"YulAssignment","src":"2211:27:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2223:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"2234:3:61","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2219:3:61"},"nodeType":"YulFunctionCall","src":"2219:19:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2211:4:61"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2292:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2305:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"2316:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2301:3:61"},"nodeType":"YulFunctionCall","src":"2301:17:61"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"2248:43:61"},"nodeType":"YulFunctionCall","src":"2248:71:61"},"nodeType":"YulExpressionStatement","src":"2248:71:61"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"2373:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2386:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"2397:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2382:3:61"},"nodeType":"YulFunctionCall","src":"2382:18:61"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"2329:43:61"},"nodeType":"YulFunctionCall","src":"2329:72:61"},"nodeType":"YulExpressionStatement","src":"2329:72:61"},{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"2455:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2468:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"2479:2:61","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2464:3:61"},"nodeType":"YulFunctionCall","src":"2464:18:61"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"2411:43:61"},"nodeType":"YulFunctionCall","src":"2411:72:61"},"nodeType":"YulExpressionStatement","src":"2411:72:61"},{"expression":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"2537:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2550:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"2561:2:61","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2546:3:61"},"nodeType":"YulFunctionCall","src":"2546:18:61"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"2493:43:61"},"nodeType":"YulFunctionCall","src":"2493:72:61"},"nodeType":"YulExpressionStatement","src":"2493:72:61"},{"expression":{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"2619:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2632:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"2643:3:61","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2628:3:61"},"nodeType":"YulFunctionCall","src":"2628:19:61"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"2575:43:61"},"nodeType":"YulFunctionCall","src":"2575:73:61"},"nodeType":"YulExpressionStatement","src":"2575:73:61"}]},"name":"abi_encode_tuple_t_address_t_address_t_address_t_address_t_address__to_t_address_t_address_t_address_t_address_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2141:9:61","type":""},{"name":"value4","nodeType":"YulTypedName","src":"2153:6:61","type":""},{"name":"value3","nodeType":"YulTypedName","src":"2161:6:61","type":""},{"name":"value2","nodeType":"YulTypedName","src":"2169:6:61","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2177:6:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2185:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2196:4:61","type":""}],"src":"1991:664:61"},{"body":{"nodeType":"YulBlock","src":"2726:53:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2743:3:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2766:5:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"2748:17:61"},"nodeType":"YulFunctionCall","src":"2748:24:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2736:6:61"},"nodeType":"YulFunctionCall","src":"2736:37:61"},"nodeType":"YulExpressionStatement","src":"2736:37:61"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2714:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2721:3:61","type":""}],"src":"2661:118:61"},{"body":{"nodeType":"YulBlock","src":"2883:124:61","statements":[{"nodeType":"YulAssignment","src":"2893:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2905:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"2916:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2901:3:61"},"nodeType":"YulFunctionCall","src":"2901:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2893:4:61"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2973:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2986:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"2997:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2982:3:61"},"nodeType":"YulFunctionCall","src":"2982:17:61"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"2929:43:61"},"nodeType":"YulFunctionCall","src":"2929:71:61"},"nodeType":"YulExpressionStatement","src":"2929:71:61"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2855:9:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2867:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2878:4:61","type":""}],"src":"2785:222:61"},{"body":{"nodeType":"YulBlock","src":"3109:73:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3126:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"3131:6:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3119:6:61"},"nodeType":"YulFunctionCall","src":"3119:19:61"},"nodeType":"YulExpressionStatement","src":"3119:19:61"},{"nodeType":"YulAssignment","src":"3147:29:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3166:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"3171:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3162:3:61"},"nodeType":"YulFunctionCall","src":"3162:14:61"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"3147:11:61"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"3081:3:61","type":""},{"name":"length","nodeType":"YulTypedName","src":"3086:6:61","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"3097:11:61","type":""}],"src":"3013:169:61"},{"body":{"nodeType":"YulBlock","src":"3294:59:61","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3316:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"3324:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3312:3:61"},"nodeType":"YulFunctionCall","src":"3312:14:61"},{"hexValue":"535452415445474953545f524f4c45","kind":"string","nodeType":"YulLiteral","src":"3328:17:61","type":"","value":"STRATEGIST_ROLE"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3305:6:61"},"nodeType":"YulFunctionCall","src":"3305:41:61"},"nodeType":"YulExpressionStatement","src":"3305:41:61"}]},"name":"store_literal_in_memory_17a8e30262c1f919c33056d877a3c22b95c2f5e4dac44683c1c2323cd79fbdb0","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"3286:6:61","type":""}],"src":"3188:165:61"},{"body":{"nodeType":"YulBlock","src":"3505:220:61","statements":[{"nodeType":"YulAssignment","src":"3515:74:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3581:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"3586:2:61","type":"","value":"15"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"3522:58:61"},"nodeType":"YulFunctionCall","src":"3522:67:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3515:3:61"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3687:3:61"}],"functionName":{"name":"store_literal_in_memory_17a8e30262c1f919c33056d877a3c22b95c2f5e4dac44683c1c2323cd79fbdb0","nodeType":"YulIdentifier","src":"3598:88:61"},"nodeType":"YulFunctionCall","src":"3598:93:61"},"nodeType":"YulExpressionStatement","src":"3598:93:61"},{"nodeType":"YulAssignment","src":"3700:19:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3711:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"3716:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3707:3:61"},"nodeType":"YulFunctionCall","src":"3707:12:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"3700:3:61"}]}]},"name":"abi_encode_t_stringliteral_17a8e30262c1f919c33056d877a3c22b95c2f5e4dac44683c1c2323cd79fbdb0_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"3493:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"3501:3:61","type":""}],"src":"3359:366:61"},{"body":{"nodeType":"YulBlock","src":"3902:248:61","statements":[{"nodeType":"YulAssignment","src":"3912:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3924:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"3935:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3920:3:61"},"nodeType":"YulFunctionCall","src":"3920:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3912:4:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3959:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"3970:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3955:3:61"},"nodeType":"YulFunctionCall","src":"3955:17:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"3978:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"3984:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3974:3:61"},"nodeType":"YulFunctionCall","src":"3974:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3948:6:61"},"nodeType":"YulFunctionCall","src":"3948:47:61"},"nodeType":"YulExpressionStatement","src":"3948:47:61"},{"nodeType":"YulAssignment","src":"4004:139:61","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4138:4:61"}],"functionName":{"name":"abi_encode_t_stringliteral_17a8e30262c1f919c33056d877a3c22b95c2f5e4dac44683c1c2323cd79fbdb0_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"4012:124:61"},"nodeType":"YulFunctionCall","src":"4012:131:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4004:4:61"}]}]},"name":"abi_encode_tuple_t_stringliteral_17a8e30262c1f919c33056d877a3c22b95c2f5e4dac44683c1c2323cd79fbdb0__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3882:9:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3897:4:61","type":""}],"src":"3731:419:61"},{"body":{"nodeType":"YulBlock","src":"4262:58:61","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4284:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"4292:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4280:3:61"},"nodeType":"YulFunctionCall","src":"4280:14:61"},{"hexValue":"5452454153555245525f524f4c45","kind":"string","nodeType":"YulLiteral","src":"4296:16:61","type":"","value":"TREASURER_ROLE"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4273:6:61"},"nodeType":"YulFunctionCall","src":"4273:40:61"},"nodeType":"YulExpressionStatement","src":"4273:40:61"}]},"name":"store_literal_in_memory_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"4254:6:61","type":""}],"src":"4156:164:61"},{"body":{"nodeType":"YulBlock","src":"4472:220:61","statements":[{"nodeType":"YulAssignment","src":"4482:74:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4548:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"4553:2:61","type":"","value":"14"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"4489:58:61"},"nodeType":"YulFunctionCall","src":"4489:67:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"4482:3:61"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4654:3:61"}],"functionName":{"name":"store_literal_in_memory_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07","nodeType":"YulIdentifier","src":"4565:88:61"},"nodeType":"YulFunctionCall","src":"4565:93:61"},"nodeType":"YulExpressionStatement","src":"4565:93:61"},{"nodeType":"YulAssignment","src":"4667:19:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4678:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"4683:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4674:3:61"},"nodeType":"YulFunctionCall","src":"4674:12:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"4667:3:61"}]}]},"name":"abi_encode_t_stringliteral_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"4460:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4468:3:61","type":""}],"src":"4326:366:61"},{"body":{"nodeType":"YulBlock","src":"4869:248:61","statements":[{"nodeType":"YulAssignment","src":"4879:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4891:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"4902:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4887:3:61"},"nodeType":"YulFunctionCall","src":"4887:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4879:4:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4926:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"4937:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4922:3:61"},"nodeType":"YulFunctionCall","src":"4922:17:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4945:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"4951:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4941:3:61"},"nodeType":"YulFunctionCall","src":"4941:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4915:6:61"},"nodeType":"YulFunctionCall","src":"4915:47:61"},"nodeType":"YulExpressionStatement","src":"4915:47:61"},{"nodeType":"YulAssignment","src":"4971:139:61","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"5105:4:61"}],"functionName":{"name":"abi_encode_t_stringliteral_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"4979:124:61"},"nodeType":"YulFunctionCall","src":"4979:131:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4971:4:61"}]}]},"name":"abi_encode_tuple_t_stringliteral_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4849:9:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4864:4:61","type":""}],"src":"4698:419:61"},{"body":{"nodeType":"YulBlock","src":"5277:288:61","statements":[{"nodeType":"YulAssignment","src":"5287:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5299:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"5310:2:61","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5295:3:61"},"nodeType":"YulFunctionCall","src":"5295:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5287:4:61"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5367:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5380:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"5391:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5376:3:61"},"nodeType":"YulFunctionCall","src":"5376:17:61"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"5323:43:61"},"nodeType":"YulFunctionCall","src":"5323:71:61"},"nodeType":"YulExpressionStatement","src":"5323:71:61"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"5448:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5461:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"5472:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5457:3:61"},"nodeType":"YulFunctionCall","src":"5457:18:61"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"5404:43:61"},"nodeType":"YulFunctionCall","src":"5404:72:61"},"nodeType":"YulExpressionStatement","src":"5404:72:61"},{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"5530:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5543:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"5554:2:61","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5539:3:61"},"nodeType":"YulFunctionCall","src":"5539:18:61"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"5486:43:61"},"nodeType":"YulFunctionCall","src":"5486:72:61"},"nodeType":"YulExpressionStatement","src":"5486:72:61"}]},"name":"abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5233:9:61","type":""},{"name":"value2","nodeType":"YulTypedName","src":"5245:6:61","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5253:6:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5261:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5272:4:61","type":""}],"src":"5123:442:61"},{"body":{"nodeType":"YulBlock","src":"5624:51:61","statements":[{"nodeType":"YulAssignment","src":"5634:35:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5663:5:61"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"5645:17:61"},"nodeType":"YulFunctionCall","src":"5645:24:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5634:7:61"}]}]},"name":"cleanup_t_address_payable","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5606:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5616:7:61","type":""}],"src":"5571:104:61"},{"body":{"nodeType":"YulBlock","src":"5732:87:61","statements":[{"body":{"nodeType":"YulBlock","src":"5797:16:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5806:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5809:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5799:6:61"},"nodeType":"YulFunctionCall","src":"5799:12:61"},"nodeType":"YulExpressionStatement","src":"5799:12:61"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5755:5:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5788:5:61"}],"functionName":{"name":"cleanup_t_address_payable","nodeType":"YulIdentifier","src":"5762:25:61"},"nodeType":"YulFunctionCall","src":"5762:32:61"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"5752:2:61"},"nodeType":"YulFunctionCall","src":"5752:43:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5745:6:61"},"nodeType":"YulFunctionCall","src":"5745:51:61"},"nodeType":"YulIf","src":"5742:71:61"}]},"name":"validator_revert_t_address_payable","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5725:5:61","type":""}],"src":"5681:138:61"},{"body":{"nodeType":"YulBlock","src":"5896:88:61","statements":[{"nodeType":"YulAssignment","src":"5906:22:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5921:6:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5915:5:61"},"nodeType":"YulFunctionCall","src":"5915:13:61"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"5906:5:61"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5972:5:61"}],"functionName":{"name":"validator_revert_t_address_payable","nodeType":"YulIdentifier","src":"5937:34:61"},"nodeType":"YulFunctionCall","src":"5937:41:61"},"nodeType":"YulExpressionStatement","src":"5937:41:61"}]},"name":"abi_decode_t_address_payable_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"5874:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"5882:3:61","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"5890:5:61","type":""}],"src":"5825:159:61"},{"body":{"nodeType":"YulBlock","src":"6075:282:61","statements":[{"body":{"nodeType":"YulBlock","src":"6121:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"6123:77:61"},"nodeType":"YulFunctionCall","src":"6123:79:61"},"nodeType":"YulExpressionStatement","src":"6123:79:61"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6096:7:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"6105:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6092:3:61"},"nodeType":"YulFunctionCall","src":"6092:23:61"},{"kind":"number","nodeType":"YulLiteral","src":"6117:2:61","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6088:3:61"},"nodeType":"YulFunctionCall","src":"6088:32:61"},"nodeType":"YulIf","src":"6085:119:61"},{"nodeType":"YulBlock","src":"6214:136:61","statements":[{"nodeType":"YulVariableDeclaration","src":"6229:15:61","value":{"kind":"number","nodeType":"YulLiteral","src":"6243:1:61","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6233:6:61","type":""}]},{"nodeType":"YulAssignment","src":"6258:82:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6312:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"6323:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6308:3:61"},"nodeType":"YulFunctionCall","src":"6308:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6332:7:61"}],"functionName":{"name":"abi_decode_t_address_payable_fromMemory","nodeType":"YulIdentifier","src":"6268:39:61"},"nodeType":"YulFunctionCall","src":"6268:72:61"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6258:6:61"}]}]}]},"name":"abi_decode_tuple_t_address_payable_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6045:9:61","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6056:7:61","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6068:6:61","type":""}],"src":"5990:367:61"},{"body":{"nodeType":"YulBlock","src":"6441:51:61","statements":[{"nodeType":"YulAssignment","src":"6451:35:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6480:5:61"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"6462:17:61"},"nodeType":"YulFunctionCall","src":"6462:24:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"6451:7:61"}]}]},"name":"cleanup_t_contract$_ITaskTreasuryUpgradable_$16342","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6423:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"6433:7:61","type":""}],"src":"6363:129:61"},{"body":{"nodeType":"YulBlock","src":"6574:112:61","statements":[{"body":{"nodeType":"YulBlock","src":"6664:16:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6673:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6676:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6666:6:61"},"nodeType":"YulFunctionCall","src":"6666:12:61"},"nodeType":"YulExpressionStatement","src":"6666:12:61"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6597:5:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6655:5:61"}],"functionName":{"name":"cleanup_t_contract$_ITaskTreasuryUpgradable_$16342","nodeType":"YulIdentifier","src":"6604:50:61"},"nodeType":"YulFunctionCall","src":"6604:57:61"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"6594:2:61"},"nodeType":"YulFunctionCall","src":"6594:68:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6587:6:61"},"nodeType":"YulFunctionCall","src":"6587:76:61"},"nodeType":"YulIf","src":"6584:96:61"}]},"name":"validator_revert_t_contract$_ITaskTreasuryUpgradable_$16342","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6567:5:61","type":""}],"src":"6498:188:61"},{"body":{"nodeType":"YulBlock","src":"6788:113:61","statements":[{"nodeType":"YulAssignment","src":"6798:22:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6813:6:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6807:5:61"},"nodeType":"YulFunctionCall","src":"6807:13:61"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"6798:5:61"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6889:5:61"}],"functionName":{"name":"validator_revert_t_contract$_ITaskTreasuryUpgradable_$16342","nodeType":"YulIdentifier","src":"6829:59:61"},"nodeType":"YulFunctionCall","src":"6829:66:61"},"nodeType":"YulExpressionStatement","src":"6829:66:61"}]},"name":"abi_decode_t_contract$_ITaskTreasuryUpgradable_$16342_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"6766:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"6774:3:61","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"6782:5:61","type":""}],"src":"6692:209:61"},{"body":{"nodeType":"YulBlock","src":"7017:307:61","statements":[{"body":{"nodeType":"YulBlock","src":"7063:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"7065:77:61"},"nodeType":"YulFunctionCall","src":"7065:79:61"},"nodeType":"YulExpressionStatement","src":"7065:79:61"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"7038:7:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"7047:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7034:3:61"},"nodeType":"YulFunctionCall","src":"7034:23:61"},{"kind":"number","nodeType":"YulLiteral","src":"7059:2:61","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7030:3:61"},"nodeType":"YulFunctionCall","src":"7030:32:61"},"nodeType":"YulIf","src":"7027:119:61"},{"nodeType":"YulBlock","src":"7156:161:61","statements":[{"nodeType":"YulVariableDeclaration","src":"7171:15:61","value":{"kind":"number","nodeType":"YulLiteral","src":"7185:1:61","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"7175:6:61","type":""}]},{"nodeType":"YulAssignment","src":"7200:107:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7279:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"7290:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7275:3:61"},"nodeType":"YulFunctionCall","src":"7275:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7299:7:61"}],"functionName":{"name":"abi_decode_t_contract$_ITaskTreasuryUpgradable_$16342_fromMemory","nodeType":"YulIdentifier","src":"7210:64:61"},"nodeType":"YulFunctionCall","src":"7210:97:61"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"7200:6:61"}]}]}]},"name":"abi_decode_tuple_t_contract$_ITaskTreasuryUpgradable_$16342_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6987:9:61","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6998:7:61","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"7010:6:61","type":""}],"src":"6907:417:61"},{"body":{"nodeType":"YulBlock","src":"7411:61:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"7428:3:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7459:5:61"}],"functionName":{"name":"cleanup_t_address_payable","nodeType":"YulIdentifier","src":"7433:25:61"},"nodeType":"YulFunctionCall","src":"7433:32:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7421:6:61"},"nodeType":"YulFunctionCall","src":"7421:45:61"},"nodeType":"YulExpressionStatement","src":"7421:45:61"}]},"name":"abi_encode_t_address_payable_to_t_address_payable_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7399:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"7406:3:61","type":""}],"src":"7330:142:61"},{"body":{"nodeType":"YulBlock","src":"7648:304:61","statements":[{"nodeType":"YulAssignment","src":"7658:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7670:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"7681:2:61","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7666:3:61"},"nodeType":"YulFunctionCall","src":"7666:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7658:4:61"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7754:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7767:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"7778:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7763:3:61"},"nodeType":"YulFunctionCall","src":"7763:17:61"}],"functionName":{"name":"abi_encode_t_address_payable_to_t_address_payable_fromStack","nodeType":"YulIdentifier","src":"7694:59:61"},"nodeType":"YulFunctionCall","src":"7694:87:61"},"nodeType":"YulExpressionStatement","src":"7694:87:61"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7835:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7848:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"7859:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7844:3:61"},"nodeType":"YulFunctionCall","src":"7844:18:61"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"7791:43:61"},"nodeType":"YulFunctionCall","src":"7791:72:61"},"nodeType":"YulExpressionStatement","src":"7791:72:61"},{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"7917:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7930:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"7941:2:61","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7926:3:61"},"nodeType":"YulFunctionCall","src":"7926:18:61"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"7873:43:61"},"nodeType":"YulFunctionCall","src":"7873:72:61"},"nodeType":"YulExpressionStatement","src":"7873:72:61"}]},"name":"abi_encode_tuple_t_address_payable_t_address_t_uint256__to_t_address_payable_t_address_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7604:9:61","type":""},{"name":"value2","nodeType":"YulTypedName","src":"7616:6:61","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7624:6:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7632:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7643:4:61","type":""}],"src":"7478:474:61"},{"body":{"nodeType":"YulBlock","src":"8072:34:61","statements":[{"nodeType":"YulAssignment","src":"8082:18:61","value":{"name":"pos","nodeType":"YulIdentifier","src":"8097:3:61"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"8082:11:61"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"8044:3:61","type":""},{"name":"length","nodeType":"YulTypedName","src":"8049:6:61","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"8060:11:61","type":""}],"src":"7958:148:61"},{"body":{"nodeType":"YulBlock","src":"8218:67:61","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"8240:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"8248:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8236:3:61"},"nodeType":"YulFunctionCall","src":"8236:14:61"},{"hexValue":"416363657373436f6e74726f6c3a206163636f756e7420","kind":"string","nodeType":"YulLiteral","src":"8252:25:61","type":"","value":"AccessControl: account "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8229:6:61"},"nodeType":"YulFunctionCall","src":"8229:49:61"},"nodeType":"YulExpressionStatement","src":"8229:49:61"}]},"name":"store_literal_in_memory_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"8210:6:61","type":""}],"src":"8112:173:61"},{"body":{"nodeType":"YulBlock","src":"8455:238:61","statements":[{"nodeType":"YulAssignment","src":"8465:92:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8549:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"8554:2:61","type":"","value":"23"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"8472:76:61"},"nodeType":"YulFunctionCall","src":"8472:85:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"8465:3:61"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8655:3:61"}],"functionName":{"name":"store_literal_in_memory_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874","nodeType":"YulIdentifier","src":"8566:88:61"},"nodeType":"YulFunctionCall","src":"8566:93:61"},"nodeType":"YulExpressionStatement","src":"8566:93:61"},{"nodeType":"YulAssignment","src":"8668:19:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8679:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"8684:2:61","type":"","value":"23"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8675:3:61"},"nodeType":"YulFunctionCall","src":"8675:12:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"8668:3:61"}]}]},"name":"abi_encode_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"8443:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"8451:3:61","type":""}],"src":"8291:402:61"},{"body":{"nodeType":"YulBlock","src":"8758:40:61","statements":[{"nodeType":"YulAssignment","src":"8769:22:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8785:5:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8779:5:61"},"nodeType":"YulFunctionCall","src":"8779:12:61"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"8769:6:61"}]}]},"name":"array_length_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8741:5:61","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"8751:6:61","type":""}],"src":"8699:99:61"},{"body":{"nodeType":"YulBlock","src":"8866:184:61","statements":[{"nodeType":"YulVariableDeclaration","src":"8876:10:61","value":{"kind":"number","nodeType":"YulLiteral","src":"8885:1:61","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"8880:1:61","type":""}]},{"body":{"nodeType":"YulBlock","src":"8945:63:61","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"8970:3:61"},{"name":"i","nodeType":"YulIdentifier","src":"8975:1:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8966:3:61"},"nodeType":"YulFunctionCall","src":"8966:11:61"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"8989:3:61"},{"name":"i","nodeType":"YulIdentifier","src":"8994:1:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8985:3:61"},"nodeType":"YulFunctionCall","src":"8985:11:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8979:5:61"},"nodeType":"YulFunctionCall","src":"8979:18:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8959:6:61"},"nodeType":"YulFunctionCall","src":"8959:39:61"},"nodeType":"YulExpressionStatement","src":"8959:39:61"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"8906:1:61"},{"name":"length","nodeType":"YulIdentifier","src":"8909:6:61"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"8903:2:61"},"nodeType":"YulFunctionCall","src":"8903:13:61"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"8917:19:61","statements":[{"nodeType":"YulAssignment","src":"8919:15:61","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"8928:1:61"},{"kind":"number","nodeType":"YulLiteral","src":"8931:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8924:3:61"},"nodeType":"YulFunctionCall","src":"8924:10:61"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"8919:1:61"}]}]},"pre":{"nodeType":"YulBlock","src":"8899:3:61","statements":[]},"src":"8895:113:61"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"9028:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"9033:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9024:3:61"},"nodeType":"YulFunctionCall","src":"9024:16:61"},{"kind":"number","nodeType":"YulLiteral","src":"9042:1:61","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9017:6:61"},"nodeType":"YulFunctionCall","src":"9017:27:61"},"nodeType":"YulExpressionStatement","src":"9017:27:61"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"8848:3:61","type":""},{"name":"dst","nodeType":"YulTypedName","src":"8853:3:61","type":""},{"name":"length","nodeType":"YulTypedName","src":"8858:6:61","type":""}],"src":"8804:246:61"},{"body":{"nodeType":"YulBlock","src":"9166:280:61","statements":[{"nodeType":"YulVariableDeclaration","src":"9176:53:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9223:5:61"}],"functionName":{"name":"array_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"9190:32:61"},"nodeType":"YulFunctionCall","src":"9190:39:61"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"9180:6:61","type":""}]},{"nodeType":"YulAssignment","src":"9238:96:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9322:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"9327:6:61"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"9245:76:61"},"nodeType":"YulFunctionCall","src":"9245:89:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"9238:3:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9382:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"9389:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9378:3:61"},"nodeType":"YulFunctionCall","src":"9378:16:61"},{"name":"pos","nodeType":"YulIdentifier","src":"9396:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"9401:6:61"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"9343:34:61"},"nodeType":"YulFunctionCall","src":"9343:65:61"},"nodeType":"YulExpressionStatement","src":"9343:65:61"},{"nodeType":"YulAssignment","src":"9417:23:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9428:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"9433:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9424:3:61"},"nodeType":"YulFunctionCall","src":"9424:16:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"9417:3:61"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"9147:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"9154:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"9162:3:61","type":""}],"src":"9056:390:61"},{"body":{"nodeType":"YulBlock","src":"9558:61:61","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"9580:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"9588:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9576:3:61"},"nodeType":"YulFunctionCall","src":"9576:14:61"},{"hexValue":"206973206d697373696e6720726f6c6520","kind":"string","nodeType":"YulLiteral","src":"9592:19:61","type":"","value":" is missing role "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9569:6:61"},"nodeType":"YulFunctionCall","src":"9569:43:61"},"nodeType":"YulExpressionStatement","src":"9569:43:61"}]},"name":"store_literal_in_memory_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"9550:6:61","type":""}],"src":"9452:167:61"},{"body":{"nodeType":"YulBlock","src":"9789:238:61","statements":[{"nodeType":"YulAssignment","src":"9799:92:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9883:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"9888:2:61","type":"","value":"17"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"9806:76:61"},"nodeType":"YulFunctionCall","src":"9806:85:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"9799:3:61"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9989:3:61"}],"functionName":{"name":"store_literal_in_memory_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69","nodeType":"YulIdentifier","src":"9900:88:61"},"nodeType":"YulFunctionCall","src":"9900:93:61"},"nodeType":"YulExpressionStatement","src":"9900:93:61"},{"nodeType":"YulAssignment","src":"10002:19:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10013:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"10018:2:61","type":"","value":"17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10009:3:61"},"nodeType":"YulFunctionCall","src":"10009:12:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"10002:3:61"}]}]},"name":"abi_encode_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"9777:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"9785:3:61","type":""}],"src":"9625:402:61"},{"body":{"nodeType":"YulBlock","src":"10419:581:61","statements":[{"nodeType":"YulAssignment","src":"10430:155:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10581:3:61"}],"functionName":{"name":"abi_encode_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"10437:142:61"},"nodeType":"YulFunctionCall","src":"10437:148:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"10430:3:61"}]},{"nodeType":"YulAssignment","src":"10595:102:61","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10684:6:61"},{"name":"pos","nodeType":"YulIdentifier","src":"10693:3:61"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"10602:81:61"},"nodeType":"YulFunctionCall","src":"10602:95:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"10595:3:61"}]},{"nodeType":"YulAssignment","src":"10707:155:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10858:3:61"}],"functionName":{"name":"abi_encode_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"10714:142:61"},"nodeType":"YulFunctionCall","src":"10714:148:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"10707:3:61"}]},{"nodeType":"YulAssignment","src":"10872:102:61","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"10961:6:61"},{"name":"pos","nodeType":"YulIdentifier","src":"10970:3:61"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"10879:81:61"},"nodeType":"YulFunctionCall","src":"10879:95:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"10872:3:61"}]},{"nodeType":"YulAssignment","src":"10984:10:61","value":{"name":"pos","nodeType":"YulIdentifier","src":"10991:3:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"10984:3:61"}]}]},"name":"abi_encode_tuple_packed_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_t_string_memory_ptr_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"10390:3:61","type":""},{"name":"value1","nodeType":"YulTypedName","src":"10396:6:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"10404:6:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"10415:3:61","type":""}],"src":"10033:967:61"},{"body":{"nodeType":"YulBlock","src":"11054:54:61","statements":[{"nodeType":"YulAssignment","src":"11064:38:61","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11082:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"11089:2:61","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11078:3:61"},"nodeType":"YulFunctionCall","src":"11078:14:61"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11098:2:61","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"11094:3:61"},"nodeType":"YulFunctionCall","src":"11094:7:61"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"11074:3:61"},"nodeType":"YulFunctionCall","src":"11074:28:61"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"11064:6:61"}]}]},"name":"round_up_to_mul_of_32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"11037:5:61","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"11047:6:61","type":""}],"src":"11006:102:61"},{"body":{"nodeType":"YulBlock","src":"11206:285:61","statements":[{"nodeType":"YulVariableDeclaration","src":"11216:53:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11263:5:61"}],"functionName":{"name":"array_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"11230:32:61"},"nodeType":"YulFunctionCall","src":"11230:39:61"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"11220:6:61","type":""}]},{"nodeType":"YulAssignment","src":"11278:78:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"11344:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"11349:6:61"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"11285:58:61"},"nodeType":"YulFunctionCall","src":"11285:71:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"11278:3:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11404:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"11411:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11400:3:61"},"nodeType":"YulFunctionCall","src":"11400:16:61"},{"name":"pos","nodeType":"YulIdentifier","src":"11418:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"11423:6:61"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"11365:34:61"},"nodeType":"YulFunctionCall","src":"11365:65:61"},"nodeType":"YulExpressionStatement","src":"11365:65:61"},{"nodeType":"YulAssignment","src":"11439:46:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"11450:3:61"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"11477:6:61"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"11455:21:61"},"nodeType":"YulFunctionCall","src":"11455:29:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11446:3:61"},"nodeType":"YulFunctionCall","src":"11446:39:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"11439:3:61"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"11187:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"11194:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"11202:3:61","type":""}],"src":"11114:377:61"},{"body":{"nodeType":"YulBlock","src":"11615:195:61","statements":[{"nodeType":"YulAssignment","src":"11625:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11637:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"11648:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11633:3:61"},"nodeType":"YulFunctionCall","src":"11633:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11625:4:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11672:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"11683:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11668:3:61"},"nodeType":"YulFunctionCall","src":"11668:17:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"11691:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"11697:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"11687:3:61"},"nodeType":"YulFunctionCall","src":"11687:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11661:6:61"},"nodeType":"YulFunctionCall","src":"11661:47:61"},"nodeType":"YulExpressionStatement","src":"11661:47:61"},{"nodeType":"YulAssignment","src":"11717:86:61","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"11789:6:61"},{"name":"tail","nodeType":"YulIdentifier","src":"11798:4:61"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"11725:63:61"},"nodeType":"YulFunctionCall","src":"11725:78:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11717:4:61"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11587:9:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"11599:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11610:4:61","type":""}],"src":"11497:313:61"},{"body":{"nodeType":"YulBlock","src":"11844:152:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11861:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"11864:77:61","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11854:6:61"},"nodeType":"YulFunctionCall","src":"11854:88:61"},"nodeType":"YulExpressionStatement","src":"11854:88:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11958:1:61","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"11961:4:61","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11951:6:61"},"nodeType":"YulFunctionCall","src":"11951:15:61"},"nodeType":"YulExpressionStatement","src":"11951:15:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11982:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"11985:4:61","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"11975:6:61"},"nodeType":"YulFunctionCall","src":"11975:15:61"},"nodeType":"YulExpressionStatement","src":"11975:15:61"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"11816:180:61"},{"body":{"nodeType":"YulBlock","src":"12050:362:61","statements":[{"nodeType":"YulAssignment","src":"12060:25:61","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"12083:1:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"12065:17:61"},"nodeType":"YulFunctionCall","src":"12065:20:61"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"12060:1:61"}]},{"nodeType":"YulAssignment","src":"12094:25:61","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"12117:1:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"12099:17:61"},"nodeType":"YulFunctionCall","src":"12099:20:61"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"12094:1:61"}]},{"nodeType":"YulVariableDeclaration","src":"12128:28:61","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"12151:1:61"},{"name":"y","nodeType":"YulIdentifier","src":"12154:1:61"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"12147:3:61"},"nodeType":"YulFunctionCall","src":"12147:9:61"},"variables":[{"name":"product_raw","nodeType":"YulTypedName","src":"12132:11:61","type":""}]},{"nodeType":"YulAssignment","src":"12165:41:61","value":{"arguments":[{"name":"product_raw","nodeType":"YulIdentifier","src":"12194:11:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"12176:17:61"},"nodeType":"YulFunctionCall","src":"12176:30:61"},"variableNames":[{"name":"product","nodeType":"YulIdentifier","src":"12165:7:61"}]},{"body":{"nodeType":"YulBlock","src":"12383:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"12385:16:61"},"nodeType":"YulFunctionCall","src":"12385:18:61"},"nodeType":"YulExpressionStatement","src":"12385:18:61"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"12316:1:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"12309:6:61"},"nodeType":"YulFunctionCall","src":"12309:9:61"},{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"12339:1:61"},{"arguments":[{"name":"product","nodeType":"YulIdentifier","src":"12346:7:61"},{"name":"x","nodeType":"YulIdentifier","src":"12355:1:61"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"12342:3:61"},"nodeType":"YulFunctionCall","src":"12342:15:61"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"12336:2:61"},"nodeType":"YulFunctionCall","src":"12336:22:61"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"12289:2:61"},"nodeType":"YulFunctionCall","src":"12289:83:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"12269:6:61"},"nodeType":"YulFunctionCall","src":"12269:113:61"},"nodeType":"YulIf","src":"12266:139:61"}]},"name":"checked_mul_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"12033:1:61","type":""},{"name":"y","nodeType":"YulTypedName","src":"12036:1:61","type":""}],"returnVariables":[{"name":"product","nodeType":"YulTypedName","src":"12042:7:61","type":""}],"src":"12002:410:61"},{"body":{"nodeType":"YulBlock","src":"12462:147:61","statements":[{"nodeType":"YulAssignment","src":"12472:25:61","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"12495:1:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"12477:17:61"},"nodeType":"YulFunctionCall","src":"12477:20:61"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"12472:1:61"}]},{"nodeType":"YulAssignment","src":"12506:25:61","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"12529:1:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"12511:17:61"},"nodeType":"YulFunctionCall","src":"12511:20:61"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"12506:1:61"}]},{"nodeType":"YulAssignment","src":"12540:16:61","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"12551:1:61"},{"name":"y","nodeType":"YulIdentifier","src":"12554:1:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12547:3:61"},"nodeType":"YulFunctionCall","src":"12547:9:61"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"12540:3:61"}]},{"body":{"nodeType":"YulBlock","src":"12580:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"12582:16:61"},"nodeType":"YulFunctionCall","src":"12582:18:61"},"nodeType":"YulExpressionStatement","src":"12582:18:61"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"12572:1:61"},{"name":"sum","nodeType":"YulIdentifier","src":"12575:3:61"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"12569:2:61"},"nodeType":"YulFunctionCall","src":"12569:10:61"},"nodeType":"YulIf","src":"12566:36:61"}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"12449:1:61","type":""},{"name":"y","nodeType":"YulTypedName","src":"12452:1:61","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"12458:3:61","type":""}],"src":"12418:191:61"},{"body":{"nodeType":"YulBlock","src":"12643:152:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12660:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"12663:77:61","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12653:6:61"},"nodeType":"YulFunctionCall","src":"12653:88:61"},"nodeType":"YulExpressionStatement","src":"12653:88:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12757:1:61","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"12760:4:61","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12750:6:61"},"nodeType":"YulFunctionCall","src":"12750:15:61"},"nodeType":"YulExpressionStatement","src":"12750:15:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12781:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"12784:4:61","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"12774:6:61"},"nodeType":"YulFunctionCall","src":"12774:15:61"},"nodeType":"YulExpressionStatement","src":"12774:15:61"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"12615:180:61"},{"body":{"nodeType":"YulBlock","src":"12829:152:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12846:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"12849:77:61","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12839:6:61"},"nodeType":"YulFunctionCall","src":"12839:88:61"},"nodeType":"YulExpressionStatement","src":"12839:88:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12943:1:61","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"12946:4:61","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12936:6:61"},"nodeType":"YulFunctionCall","src":"12936:15:61"},"nodeType":"YulExpressionStatement","src":"12936:15:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12967:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"12970:4:61","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"12960:6:61"},"nodeType":"YulFunctionCall","src":"12960:15:61"},"nodeType":"YulExpressionStatement","src":"12960:15:61"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"12801:180:61"},{"body":{"nodeType":"YulBlock","src":"13030:128:61","statements":[{"nodeType":"YulAssignment","src":"13040:33:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"13067:5:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"13049:17:61"},"nodeType":"YulFunctionCall","src":"13049:24:61"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"13040:5:61"}]},{"body":{"nodeType":"YulBlock","src":"13101:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"13103:16:61"},"nodeType":"YulFunctionCall","src":"13103:18:61"},"nodeType":"YulExpressionStatement","src":"13103:18:61"}]},"condition":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"13088:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"13095:4:61","type":"","value":"0x00"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"13085:2:61"},"nodeType":"YulFunctionCall","src":"13085:15:61"},"nodeType":"YulIf","src":"13082:41:61"},{"nodeType":"YulAssignment","src":"13132:20:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"13143:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"13150:1:61","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"13139:3:61"},"nodeType":"YulFunctionCall","src":"13139:13:61"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"13132:3:61"}]}]},"name":"decrement_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"13016:5:61","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"13026:3:61","type":""}],"src":"12987:171:61"},{"body":{"nodeType":"YulBlock","src":"13270:76:61","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"13292:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"13300:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13288:3:61"},"nodeType":"YulFunctionCall","src":"13288:14:61"},{"hexValue":"537472696e67733a20686578206c656e67746820696e73756666696369656e74","kind":"string","nodeType":"YulLiteral","src":"13304:34:61","type":"","value":"Strings: hex length insufficient"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13281:6:61"},"nodeType":"YulFunctionCall","src":"13281:58:61"},"nodeType":"YulExpressionStatement","src":"13281:58:61"}]},"name":"store_literal_in_memory_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"13262:6:61","type":""}],"src":"13164:182:61"},{"body":{"nodeType":"YulBlock","src":"13498:220:61","statements":[{"nodeType":"YulAssignment","src":"13508:74:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13574:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"13579:2:61","type":"","value":"32"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"13515:58:61"},"nodeType":"YulFunctionCall","src":"13515:67:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"13508:3:61"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13680:3:61"}],"functionName":{"name":"store_literal_in_memory_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2","nodeType":"YulIdentifier","src":"13591:88:61"},"nodeType":"YulFunctionCall","src":"13591:93:61"},"nodeType":"YulExpressionStatement","src":"13591:93:61"},{"nodeType":"YulAssignment","src":"13693:19:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13704:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"13709:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13700:3:61"},"nodeType":"YulFunctionCall","src":"13700:12:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"13693:3:61"}]}]},"name":"abi_encode_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"13486:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"13494:3:61","type":""}],"src":"13352:366:61"},{"body":{"nodeType":"YulBlock","src":"13895:248:61","statements":[{"nodeType":"YulAssignment","src":"13905:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13917:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"13928:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13913:3:61"},"nodeType":"YulFunctionCall","src":"13913:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13905:4:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13952:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"13963:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13948:3:61"},"nodeType":"YulFunctionCall","src":"13948:17:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"13971:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"13977:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"13967:3:61"},"nodeType":"YulFunctionCall","src":"13967:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13941:6:61"},"nodeType":"YulFunctionCall","src":"13941:47:61"},"nodeType":"YulExpressionStatement","src":"13941:47:61"},{"nodeType":"YulAssignment","src":"13997:139:61","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"14131:4:61"}],"functionName":{"name":"abi_encode_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"14005:124:61"},"nodeType":"YulFunctionCall","src":"14005:131:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13997:4:61"}]}]},"name":"abi_encode_tuple_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"13875:9:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"13890:4:61","type":""}],"src":"13724:419:61"}]},"contents":"{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_address_t_address_t_address_t_address_t_address__to_t_address_t_address_t_address_t_address_t_address__fromStack_reversed(headStart , value4, value3, value2, value1, value0) -> tail {\n tail := add(headStart, 160)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_address_to_t_address_fromStack(value2, add(headStart, 64))\n\n abi_encode_t_address_to_t_address_fromStack(value3, add(headStart, 96))\n\n abi_encode_t_address_to_t_address_fromStack(value4, add(headStart, 128))\n\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function store_literal_in_memory_17a8e30262c1f919c33056d877a3c22b95c2f5e4dac44683c1c2323cd79fbdb0(memPtr) {\n\n mstore(add(memPtr, 0), \"STRATEGIST_ROLE\")\n\n }\n\n function abi_encode_t_stringliteral_17a8e30262c1f919c33056d877a3c22b95c2f5e4dac44683c1c2323cd79fbdb0_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 15)\n store_literal_in_memory_17a8e30262c1f919c33056d877a3c22b95c2f5e4dac44683c1c2323cd79fbdb0(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_17a8e30262c1f919c33056d877a3c22b95c2f5e4dac44683c1c2323cd79fbdb0__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_17a8e30262c1f919c33056d877a3c22b95c2f5e4dac44683c1c2323cd79fbdb0_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07(memPtr) {\n\n mstore(add(memPtr, 0), \"TREASURER_ROLE\")\n\n }\n\n function abi_encode_t_stringliteral_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 14)\n store_literal_in_memory_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n }\n\n function cleanup_t_address_payable(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address_payable(value) {\n if iszero(eq(value, cleanup_t_address_payable(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address_payable_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_address_payable(value)\n }\n\n function abi_decode_tuple_t_address_payable_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address_payable_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_contract$_ITaskTreasuryUpgradable_$16342(value) -> cleaned {\n cleaned := cleanup_t_address(value)\n }\n\n function validator_revert_t_contract$_ITaskTreasuryUpgradable_$16342(value) {\n if iszero(eq(value, cleanup_t_contract$_ITaskTreasuryUpgradable_$16342(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_contract$_ITaskTreasuryUpgradable_$16342_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_contract$_ITaskTreasuryUpgradable_$16342(value)\n }\n\n function abi_decode_tuple_t_contract$_ITaskTreasuryUpgradable_$16342_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_ITaskTreasuryUpgradable_$16342_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_address_payable_to_t_address_payable_fromStack(value, pos) {\n mstore(pos, cleanup_t_address_payable(value))\n }\n\n function abi_encode_tuple_t_address_payable_t_address_t_uint256__to_t_address_payable_t_address_t_uint256__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_address_payable_to_t_address_payable_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function store_literal_in_memory_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874(memPtr) {\n\n mstore(add(memPtr, 0), \"AccessControl: account \")\n\n }\n\n function abi_encode_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_to_t_string_memory_ptr_nonPadded_inplace_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, 23)\n store_literal_in_memory_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874(pos)\n end := add(pos, 23)\n }\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function copy_memory_to_memory_with_cleanup(src, dst, length) {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, length)\n }\n\n function store_literal_in_memory_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69(memPtr) {\n\n mstore(add(memPtr, 0), \" is missing role \")\n\n }\n\n function abi_encode_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_to_t_string_memory_ptr_nonPadded_inplace_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, 17)\n store_literal_in_memory_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69(pos)\n end := add(pos, 17)\n }\n\n function abi_encode_tuple_packed_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_t_string_memory_ptr_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value1, value0) -> end {\n\n pos := abi_encode_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_to_t_string_memory_ptr_nonPadded_inplace_fromStack( pos)\n\n pos := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value0, pos)\n\n pos := abi_encode_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_to_t_string_memory_ptr_nonPadded_inplace_fromStack( pos)\n\n pos := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value1, pos)\n\n end := pos\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value0, tail)\n\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function checked_mul_t_uint256(x, y) -> product {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n let product_raw := mul(x, y)\n product := cleanup_t_uint256(product_raw)\n\n // overflow, if x != 0 and y != product/x\n if iszero(\n or(\n iszero(x),\n eq(y, div(product, x))\n )\n ) { panic_error_0x11() }\n\n }\n\n function checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n sum := add(x, y)\n\n if gt(x, sum) { panic_error_0x11() }\n\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function panic_error_0x32() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n\n function decrement_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0x00) { panic_error_0x11() }\n ret := sub(value, 1)\n }\n\n function store_literal_in_memory_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2(memPtr) {\n\n mstore(add(memPtr, 0), \"Strings: hex length insufficient\")\n\n }\n\n function abi_encode_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 32)\n store_literal_in_memory_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n}\n","id":61,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"6080604052600436106100555760003560e01c80631674bc241461005a5780632e4b69451461006457806371ebf6f41461008d578063a6f9223d146100b6578063bb6bd765146100df578063f24a25de1461010e575b600080fd5b610062610139565b005b34801561007057600080fd5b5061008b60048036038101906100869190610a52565b610144565b005b34801561009957600080fd5b506100b460048036038101906100af9190610add565b61017d565b005b3480156100c257600080fd5b506100dd60048036038101906100d89190610a52565b6101b6565b005b3480156100eb57600080fd5b506100f46101ef565b604051610105959493929190610b19565b60405180910390f35b34801561011a57600080fd5b50610123610210565b6040516101309190610b7b565b60405180910390f35b6101423461021f565b565b61017160405160200161015690610bf3565b604051602081830303815290604052805190602001206102d1565b61017a816102dd565b50565b6101aa60405160200161018f90610bf3565b604051602081830303815290604052805190602001206102d1565b6101b3816102f0565b50565b6101e36040516020016101c890610c5f565b604051602081830303815290604052805190602001206102d1565b6101ec816104d8565b50565b60008060008060006101ff610589565b945094509450945094509091929394565b600061021a610650565b905090565b610227610663565b60010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c1461d57823073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee856040518563ffffffff1660e01b815260040161029c93929190610c7f565b6000604051808303818588803b1580156102b557600080fd5b505af11580156102c9573d6000803e3d6000fd5b505050505050565b6102da81610690565b50565b806102e6610663565b6003018190555050565b806102f9610663565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663573ea5756040518163ffffffff1660e01b8152600401602060405180830381865afa158015610385573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a99190610cf4565b6103b1610663565b60020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506103fa610663565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e60a32136040518163ffffffff1660e01b8152600401602060405180830381865afa158015610468573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061048c9190610d5f565b610494610663565b60010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6104e0610663565b60010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631c20fadd3373eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee846040518463ffffffff1660e01b815260040161055493929190610d9b565b600060405180830381600087803b15801561056e57600080fd5b505af1158015610582573d6000803e3d6000fd5b5050505050565b6000806000806000610599610663565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166105c5610663565b60010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166105f1610663565b60020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673c815db16d4be6ddf2685c201937905abf338f5d773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee945094509450945094509091929394565b600061065a610663565b60030154905090565b6000807fde06769ca6d80a022439e234eebb61c3801d652175b62f912d6f8cac7b881c6590508091505090565b61069a813361069d565b50565b6106a7828261073a565b610736576106cc8173ffffffffffffffffffffffffffffffffffffffff1660146107ae565b6106da8360001c60206107ae565b6040516020016106eb929190610edb565b6040516020818303038152906040526040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072d9190610f5f565b60405180910390fd5b5050565b60006107446109ea565b600001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6060600060028360026107c19190610fb0565b6107cb9190610ff2565b67ffffffffffffffff8111156107e4576107e3611026565b5b6040519080825280601f01601f1916602001820160405280156108165781602001600182028036833780820191505090505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061084e5761084d611055565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106108b2576108b1611055565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026108f29190610fb0565b6108fc9190610ff2565b90505b600181111561099c577f3031323334353637383961626364656600000000000000000000000000000000600f86166010811061093e5761093d611055565b5b1a60f81b82828151811061095557610954611055565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c94508061099590611084565b90506108ff565b50600084146109e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d7906110f9565b60405180910390fd5b8091505092915050565b6000807f4cd15452b25e815d3f9d1a3c7edd985a178edf5eb3461a1acbf855517423d69490508091505090565b600080fd5b6000819050919050565b610a2f81610a1c565b8114610a3a57600080fd5b50565b600081359050610a4c81610a26565b92915050565b600060208284031215610a6857610a67610a17565b5b6000610a7684828501610a3d565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610aaa82610a7f565b9050919050565b610aba81610a9f565b8114610ac557600080fd5b50565b600081359050610ad781610ab1565b92915050565b600060208284031215610af357610af2610a17565b5b6000610b0184828501610ac8565b91505092915050565b610b1381610a9f565b82525050565b600060a082019050610b2e6000830188610b0a565b610b3b6020830187610b0a565b610b486040830186610b0a565b610b556060830185610b0a565b610b626080830184610b0a565b9695505050505050565b610b7581610a1c565b82525050565b6000602082019050610b906000830184610b6c565b92915050565b600082825260208201905092915050565b7f535452415445474953545f524f4c450000000000000000000000000000000000600082015250565b6000610bdd600f83610b96565b9150610be882610ba7565b602082019050919050565b60006020820190508181036000830152610c0c81610bd0565b9050919050565b7f5452454153555245525f524f4c45000000000000000000000000000000000000600082015250565b6000610c49600e83610b96565b9150610c5482610c13565b602082019050919050565b60006020820190508181036000830152610c7881610c3c565b9050919050565b6000606082019050610c946000830186610b0a565b610ca16020830185610b0a565b610cae6040830184610b6c565b949350505050565b6000610cc182610a7f565b9050919050565b610cd181610cb6565b8114610cdc57600080fd5b50565b600081519050610cee81610cc8565b92915050565b600060208284031215610d0a57610d09610a17565b5b6000610d1884828501610cdf565b91505092915050565b6000610d2c82610a9f565b9050919050565b610d3c81610d21565b8114610d4757600080fd5b50565b600081519050610d5981610d33565b92915050565b600060208284031215610d7557610d74610a17565b5b6000610d8384828501610d4a565b91505092915050565b610d9581610cb6565b82525050565b6000606082019050610db06000830186610d8c565b610dbd6020830185610b0a565b610dca6040830184610b6c565b949350505050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000610e13601783610dd2565b9150610e1e82610ddd565b601782019050919050565b600081519050919050565b60005b83811015610e52578082015181840152602081019050610e37565b60008484015250505050565b6000610e6982610e29565b610e738185610dd2565b9350610e83818560208601610e34565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000610ec5601183610dd2565b9150610ed082610e8f565b601182019050919050565b6000610ee682610e06565b9150610ef28285610e5e565b9150610efd82610eb8565b9150610f098284610e5e565b91508190509392505050565b6000601f19601f8301169050919050565b6000610f3182610e29565b610f3b8185610b96565b9350610f4b818560208601610e34565b610f5481610f15565b840191505092915050565b60006020820190508181036000830152610f798184610f26565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610fbb82610a1c565b9150610fc683610a1c565b9250828202610fd481610a1c565b91508282048414831517610feb57610fea610f81565b5b5092915050565b6000610ffd82610a1c565b915061100883610a1c565b92508282019050808211156110205761101f610f81565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061108f82610a1c565b9150600082036110a2576110a1610f81565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b60006110e3602083610b96565b91506110ee826110ad565b602082019050919050565b60006020820190508181036000830152611112816110d6565b905091905056fea2646970667358221220a8e3bdc4351e1596162105b3ee5523910e922fd558df7c9a6af4ab9af898ea5b64736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x55 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1674BC24 EQ PUSH2 0x5A JUMPI DUP1 PUSH4 0x2E4B6945 EQ PUSH2 0x64 JUMPI DUP1 PUSH4 0x71EBF6F4 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0xA6F9223D EQ PUSH2 0xB6 JUMPI DUP1 PUSH4 0xBB6BD765 EQ PUSH2 0xDF JUMPI DUP1 PUSH4 0xF24A25DE EQ PUSH2 0x10E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x62 PUSH2 0x139 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x86 SWAP2 SWAP1 PUSH2 0xA52 JUMP JUMPDEST PUSH2 0x144 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB4 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xAF SWAP2 SWAP1 PUSH2 0xADD JUMP JUMPDEST PUSH2 0x17D JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xDD PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xD8 SWAP2 SWAP1 PUSH2 0xA52 JUMP JUMPDEST PUSH2 0x1B6 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF4 PUSH2 0x1EF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x105 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xB19 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x11A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x123 PUSH2 0x210 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x130 SWAP2 SWAP1 PUSH2 0xB7B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x142 CALLVALUE PUSH2 0x21F JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x171 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x156 SWAP1 PUSH2 0xBF3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0x2D1 JUMP JUMPDEST PUSH2 0x17A DUP2 PUSH2 0x2DD JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x1AA PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x18F SWAP1 PUSH2 0xBF3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0x2D1 JUMP JUMPDEST PUSH2 0x1B3 DUP2 PUSH2 0x2F0 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x1E3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1C8 SWAP1 PUSH2 0xC5F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0x2D1 JUMP JUMPDEST PUSH2 0x1EC DUP2 PUSH2 0x4D8 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1FF PUSH2 0x589 JUMP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x21A PUSH2 0x650 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x227 PUSH2 0x663 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xC1461D57 DUP3 ADDRESS PUSH20 0xEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE DUP6 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x29C SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xC7F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2C9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2DA DUP2 PUSH2 0x690 JUMP JUMPDEST POP JUMP JUMPDEST DUP1 PUSH2 0x2E6 PUSH2 0x663 JUMP JUMPDEST PUSH1 0x3 ADD DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST DUP1 PUSH2 0x2F9 PUSH2 0x663 JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x573EA575 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x385 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3A9 SWAP2 SWAP1 PUSH2 0xCF4 JUMP JUMPDEST PUSH2 0x3B1 PUSH2 0x663 JUMP JUMPDEST PUSH1 0x2 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x3FA PUSH2 0x663 JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xE60A3213 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x468 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x48C SWAP2 SWAP1 PUSH2 0xD5F JUMP JUMPDEST PUSH2 0x494 PUSH2 0x663 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH2 0x4E0 PUSH2 0x663 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x1C20FADD CALLER PUSH20 0xEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE DUP5 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x554 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xD9B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x56E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x582 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x599 PUSH2 0x663 JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x5C5 PUSH2 0x663 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x5F1 PUSH2 0x663 JUMP JUMPDEST PUSH1 0x2 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xC815DB16D4BE6DDF2685C201937905ABF338F5D7 PUSH20 0xEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x65A PUSH2 0x663 JUMP JUMPDEST PUSH1 0x3 ADD SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0xDE06769CA6D80A022439E234EEBB61C3801D652175B62F912D6F8CAC7B881C65 SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH2 0x69A DUP2 CALLER PUSH2 0x69D JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x6A7 DUP3 DUP3 PUSH2 0x73A JUMP JUMPDEST PUSH2 0x736 JUMPI PUSH2 0x6CC DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x14 PUSH2 0x7AE JUMP JUMPDEST PUSH2 0x6DA DUP4 PUSH1 0x0 SHR PUSH1 0x20 PUSH2 0x7AE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x6EB SWAP3 SWAP2 SWAP1 PUSH2 0xEDB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x72D SWAP2 SWAP1 PUSH2 0xF5F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x744 PUSH2 0x9EA JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x2 DUP4 PUSH1 0x2 PUSH2 0x7C1 SWAP2 SWAP1 PUSH2 0xFB0 JUMP JUMPDEST PUSH2 0x7CB SWAP2 SWAP1 PUSH2 0xFF2 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x7E4 JUMPI PUSH2 0x7E3 PUSH2 0x1026 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x816 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x84E JUMPI PUSH2 0x84D PUSH2 0x1055 JUMP JUMPDEST JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH32 0x7800000000000000000000000000000000000000000000000000000000000000 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x8B2 JUMPI PUSH2 0x8B1 PUSH2 0x1055 JUMP JUMPDEST JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x0 PUSH1 0x1 DUP5 PUSH1 0x2 PUSH2 0x8F2 SWAP2 SWAP1 PUSH2 0xFB0 JUMP JUMPDEST PUSH2 0x8FC SWAP2 SWAP1 PUSH2 0xFF2 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x99C JUMPI PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 PUSH1 0xF DUP7 AND PUSH1 0x10 DUP2 LT PUSH2 0x93E JUMPI PUSH2 0x93D PUSH2 0x1055 JUMP JUMPDEST JUMPDEST BYTE PUSH1 0xF8 SHL DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x955 JUMPI PUSH2 0x954 PUSH2 0x1055 JUMP JUMPDEST JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x4 DUP6 SWAP1 SHR SWAP5 POP DUP1 PUSH2 0x995 SWAP1 PUSH2 0x1084 JUMP JUMPDEST SWAP1 POP PUSH2 0x8FF JUMP JUMPDEST POP PUSH1 0x0 DUP5 EQ PUSH2 0x9E0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9D7 SWAP1 PUSH2 0x10F9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x4CD15452B25E815D3F9D1A3C7EDD985A178EDF5EB3461A1ACBF855517423D694 SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xA2F DUP2 PUSH2 0xA1C JUMP JUMPDEST DUP2 EQ PUSH2 0xA3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xA4C DUP2 PUSH2 0xA26 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA68 JUMPI PUSH2 0xA67 PUSH2 0xA17 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xA76 DUP5 DUP3 DUP6 ADD PUSH2 0xA3D JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAAA DUP3 PUSH2 0xA7F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xABA DUP2 PUSH2 0xA9F JUMP JUMPDEST DUP2 EQ PUSH2 0xAC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xAD7 DUP2 PUSH2 0xAB1 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xAF3 JUMPI PUSH2 0xAF2 PUSH2 0xA17 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xB01 DUP5 DUP3 DUP6 ADD PUSH2 0xAC8 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xB13 DUP2 PUSH2 0xA9F JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 ADD SWAP1 POP PUSH2 0xB2E PUSH1 0x0 DUP4 ADD DUP9 PUSH2 0xB0A JUMP JUMPDEST PUSH2 0xB3B PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0xB0A JUMP JUMPDEST PUSH2 0xB48 PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0xB0A JUMP JUMPDEST PUSH2 0xB55 PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0xB0A JUMP JUMPDEST PUSH2 0xB62 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0xB0A JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xB75 DUP2 PUSH2 0xA1C JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xB90 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xB6C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x535452415445474953545F524F4C450000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBDD PUSH1 0xF DUP4 PUSH2 0xB96 JUMP JUMPDEST SWAP2 POP PUSH2 0xBE8 DUP3 PUSH2 0xBA7 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xC0C DUP2 PUSH2 0xBD0 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x5452454153555245525F524F4C45000000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC49 PUSH1 0xE DUP4 PUSH2 0xB96 JUMP JUMPDEST SWAP2 POP PUSH2 0xC54 DUP3 PUSH2 0xC13 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xC78 DUP2 PUSH2 0xC3C JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0xC94 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0xB0A JUMP JUMPDEST PUSH2 0xCA1 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0xB0A JUMP JUMPDEST PUSH2 0xCAE PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0xB6C JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCC1 DUP3 PUSH2 0xA7F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xCD1 DUP2 PUSH2 0xCB6 JUMP JUMPDEST DUP2 EQ PUSH2 0xCDC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0xCEE DUP2 PUSH2 0xCC8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD0A JUMPI PUSH2 0xD09 PUSH2 0xA17 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xD18 DUP5 DUP3 DUP6 ADD PUSH2 0xCDF JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD2C DUP3 PUSH2 0xA9F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xD3C DUP2 PUSH2 0xD21 JUMP JUMPDEST DUP2 EQ PUSH2 0xD47 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0xD59 DUP2 PUSH2 0xD33 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD75 JUMPI PUSH2 0xD74 PUSH2 0xA17 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xD83 DUP5 DUP3 DUP6 ADD PUSH2 0xD4A JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xD95 DUP2 PUSH2 0xCB6 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0xDB0 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0xD8C JUMP JUMPDEST PUSH2 0xDBD PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0xB0A JUMP JUMPDEST PUSH2 0xDCA PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0xB6C JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x416363657373436F6E74726F6C3A206163636F756E7420000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE13 PUSH1 0x17 DUP4 PUSH2 0xDD2 JUMP JUMPDEST SWAP2 POP PUSH2 0xE1E DUP3 PUSH2 0xDDD JUMP JUMPDEST PUSH1 0x17 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE52 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xE37 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE69 DUP3 PUSH2 0xE29 JUMP JUMPDEST PUSH2 0xE73 DUP2 DUP6 PUSH2 0xDD2 JUMP JUMPDEST SWAP4 POP PUSH2 0xE83 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xE34 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x206973206D697373696E6720726F6C6520000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEC5 PUSH1 0x11 DUP4 PUSH2 0xDD2 JUMP JUMPDEST SWAP2 POP PUSH2 0xED0 DUP3 PUSH2 0xE8F JUMP JUMPDEST PUSH1 0x11 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEE6 DUP3 PUSH2 0xE06 JUMP JUMPDEST SWAP2 POP PUSH2 0xEF2 DUP3 DUP6 PUSH2 0xE5E JUMP JUMPDEST SWAP2 POP PUSH2 0xEFD DUP3 PUSH2 0xEB8 JUMP JUMPDEST SWAP2 POP PUSH2 0xF09 DUP3 DUP5 PUSH2 0xE5E JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF31 DUP3 PUSH2 0xE29 JUMP JUMPDEST PUSH2 0xF3B DUP2 DUP6 PUSH2 0xB96 JUMP JUMPDEST SWAP4 POP PUSH2 0xF4B DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xE34 JUMP JUMPDEST PUSH2 0xF54 DUP2 PUSH2 0xF15 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xF79 DUP2 DUP5 PUSH2 0xF26 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xFBB DUP3 PUSH2 0xA1C JUMP JUMPDEST SWAP2 POP PUSH2 0xFC6 DUP4 PUSH2 0xA1C JUMP JUMPDEST SWAP3 POP DUP3 DUP3 MUL PUSH2 0xFD4 DUP2 PUSH2 0xA1C JUMP JUMPDEST SWAP2 POP DUP3 DUP3 DIV DUP5 EQ DUP4 ISZERO OR PUSH2 0xFEB JUMPI PUSH2 0xFEA PUSH2 0xF81 JUMP JUMPDEST JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFFD DUP3 PUSH2 0xA1C JUMP JUMPDEST SWAP2 POP PUSH2 0x1008 DUP4 PUSH2 0xA1C JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x1020 JUMPI PUSH2 0x101F PUSH2 0xF81 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x108F DUP3 PUSH2 0xA1C JUMP JUMPDEST SWAP2 POP PUSH1 0x0 DUP3 SUB PUSH2 0x10A2 JUMPI PUSH2 0x10A1 PUSH2 0xF81 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 SUB SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x537472696E67733A20686578206C656E67746820696E73756666696369656E74 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10E3 PUSH1 0x20 DUP4 PUSH2 0xB96 JUMP JUMPDEST SWAP2 POP PUSH2 0x10EE DUP3 PUSH2 0x10AD JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1112 DUP2 PUSH2 0x10D6 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA8 0xE3 0xBD 0xC4 CALLDATALOAD 0x1E ISZERO SWAP7 AND 0x21 SDIV 0xB3 0xEE SSTORE 0x23 SWAP2 0xE SWAP3 0x2F 0xD5 PC 0xDF PUSH29 0x9A6AF4AB9AF898EA5B64736F6C63430008120033000000000000000000 ","sourceMap":"269:1074:25:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1040:106;;;:::i;:::-;;832:202;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;636:190;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1152:189;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;306:183;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;495:135;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1040:106;1097:42;1129:9;1097:31;:42::i;:::-;1040:106::o;832:202::-;903:67;492:29:48;;;;;;;:::i;:::-;;;;;;;;;;;;;482:40;;;;;;903:33:25;:67::i;:::-;980:47;1020:6;980:39;:47::i;:::-;832:202;:::o;636:190::-;701:67;492:29:48;;;;;;;:::i;:::-;;;;;;;;;;;;;482:40;;;;;;701:33:25;:67::i;:::-;778:41;810:8;778:31;:41::i;:::-;636:190;:::o;1152:189::-;1217:66;412:28:48;;;;;;;:::i;:::-;;;;;;;;;;;;;402:39;;;;;;1217:33:25;:66::i;:::-;1293:41;1326:7;1293:32;:41::i;:::-;1152:189;:::o;306:183::-;383:7;392;401;410;419;449:33;:31;:33::i;:::-;442:40;;;;;;;;;;306:183;;;;;:::o;495:135::-;556:7;582:41;:39;:41::i;:::-;575:48;;495:135;:::o;1355:254:42:-;1420:18;:16;:18::i;:::-;:33;;;;;;;;;;;;:46;;;1474:7;1504:4;539:42;1585:7;1420:182;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1355:254;:::o;1039:89:48:-;1104:17;1115:5;1104:10;:17::i;:::-;1039:89;:::o;3626:130:42:-;3743:6;3698:18;:16;:18::i;:::-;:42;;:51;;;;3626:130;:::o;3301:319::-;3412:8;3367:18;:16;:18::i;:::-;:32;;;:54;;;;;;;;;;;;;;;;;;3476:8;3466:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3431:18;:16;:18::i;:::-;:32;;;:63;;;;;;;;;;;;;;;;;;3540:18;:16;:18::i;:::-;:45;;;;;;;;;;;;:71;;;:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3504:18;:16;:18::i;:::-;:33;;;:109;;;;;;;;;;;;;;;;;;3301:319;:::o;1094:208::-;1160:18;:16;:18::i;:::-;:33;;;;;;;;;;;;:47;;;1229:10;539:42;1278:7;1160:135;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1094:208;:::o;3804:377::-;3882:7;3891;3900;3909;3918;3970:18;:16;:18::i;:::-;:32;;;;;;;;;;;;4025:18;:16;:18::i;:::-;:33;;;;;;;;;;;;4073:18;:16;:18::i;:::-;:32;;;;;;;;;;;;444:42;539;3941:233;;;;;;;;;;3804:377;;;;;:::o;4187:137::-;4249:7;4275:18;:16;:18::i;:::-;:42;;;4268:49;;4187:137;:::o;777:227::-;852:25;893:16;356:24;893:44;;980:8;970:18;;956:42;777:227;:::o;1320:95:48:-;1379:29;1390:5;1397:10;1379;:29::i;:::-;1320:95;:::o;1421:491::-;1503:25;1512:5;1519:8;1503;:25::i;:::-;1498:408;;1689:42;1717:8;1689:42;;1728:2;1689:19;:42::i;:::-;1802:39;1830:5;1822:14;;1838:2;1802:19;:39::i;:::-;1596:267;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1544:351;;;;;;;;;;;:::i;:::-;;;;;;;;1498:408;1421:491;;:::o;1134:180::-;1230:4;1253:23;:21;:23::i;:::-;:29;;:36;1283:5;1253:36;;;;;;;;;;;:44;;:54;1298:8;1253:54;;;;;;;;;;;;;;;;;;;;;;;;;1246:61;;1134:180;;;;:::o;1513:437:7:-;1588:13;1613:19;1658:1;1649:6;1645:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;1635:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1613:47;;1670:15;:6;1677:1;1670:9;;;;;;;;:::i;:::-;;;;;:15;;;;;;;;;;;1695;:6;1702:1;1695:9;;;;;;;;:::i;:::-;;;;;:15;;;;;;;;;;;1725:9;1750:1;1741:6;1737:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;1725:26;;1720:128;1757:1;1753;:5;1720:128;;;1791:8;1808:3;1800:5;:11;1791:21;;;;;;;:::i;:::-;;;;;1779:6;1786:1;1779:9;;;;;;;;:::i;:::-;;;;;:33;;;;;;;;;;;1836:1;1826:11;;;;;1760:3;;;;:::i;:::-;;;1720:128;;;;1874:1;1865:5;:10;1857:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;1936:6;1922:21;;;1513:437;;;;:::o;791:242:48:-;871:30;917:16;203:29;917:49;;1009:8;999:18;;985:42;791:242;:::o;88:117:61:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:126::-;1062:7;1102:42;1095:5;1091:54;1080:65;;1025:126;;;:::o;1157:96::-;1194:7;1223:24;1241:5;1223:24;:::i;:::-;1212:35;;1157:96;;;:::o;1259:122::-;1332:24;1350:5;1332:24;:::i;:::-;1325:5;1322:35;1312:63;;1371:1;1368;1361:12;1312:63;1259:122;:::o;1387:139::-;1433:5;1471:6;1458:20;1449:29;;1487:33;1514:5;1487:33;:::i;:::-;1387:139;;;;:::o;1532:329::-;1591:6;1640:2;1628:9;1619:7;1615:23;1611:32;1608:119;;;1646:79;;:::i;:::-;1608:119;1766:1;1791:53;1836:7;1827:6;1816:9;1812:22;1791:53;:::i;:::-;1781:63;;1737:117;1532:329;;;;:::o;1867:118::-;1954:24;1972:5;1954:24;:::i;:::-;1949:3;1942:37;1867:118;;:::o;1991:664::-;2196:4;2234:3;2223:9;2219:19;2211:27;;2248:71;2316:1;2305:9;2301:17;2292:6;2248:71;:::i;:::-;2329:72;2397:2;2386:9;2382:18;2373:6;2329:72;:::i;:::-;2411;2479:2;2468:9;2464:18;2455:6;2411:72;:::i;:::-;2493;2561:2;2550:9;2546:18;2537:6;2493:72;:::i;:::-;2575:73;2643:3;2632:9;2628:19;2619:6;2575:73;:::i;:::-;1991:664;;;;;;;;:::o;2661:118::-;2748:24;2766:5;2748:24;:::i;:::-;2743:3;2736:37;2661:118;;:::o;2785:222::-;2878:4;2916:2;2905:9;2901:18;2893:26;;2929:71;2997:1;2986:9;2982:17;2973:6;2929:71;:::i;:::-;2785:222;;;;:::o;3013:169::-;3097:11;3131:6;3126:3;3119:19;3171:4;3166:3;3162:14;3147:29;;3013:169;;;;:::o;3188:165::-;3328:17;3324:1;3316:6;3312:14;3305:41;3188:165;:::o;3359:366::-;3501:3;3522:67;3586:2;3581:3;3522:67;:::i;:::-;3515:74;;3598:93;3687:3;3598:93;:::i;:::-;3716:2;3711:3;3707:12;3700:19;;3359:366;;;:::o;3731:419::-;3897:4;3935:2;3924:9;3920:18;3912:26;;3984:9;3978:4;3974:20;3970:1;3959:9;3955:17;3948:47;4012:131;4138:4;4012:131;:::i;:::-;4004:139;;3731:419;;;:::o;4156:164::-;4296:16;4292:1;4284:6;4280:14;4273:40;4156:164;:::o;4326:366::-;4468:3;4489:67;4553:2;4548:3;4489:67;:::i;:::-;4482:74;;4565:93;4654:3;4565:93;:::i;:::-;4683:2;4678:3;4674:12;4667:19;;4326:366;;;:::o;4698:419::-;4864:4;4902:2;4891:9;4887:18;4879:26;;4951:9;4945:4;4941:20;4937:1;4926:9;4922:17;4915:47;4979:131;5105:4;4979:131;:::i;:::-;4971:139;;4698:419;;;:::o;5123:442::-;5272:4;5310:2;5299:9;5295:18;5287:26;;5323:71;5391:1;5380:9;5376:17;5367:6;5323:71;:::i;:::-;5404:72;5472:2;5461:9;5457:18;5448:6;5404:72;:::i;:::-;5486;5554:2;5543:9;5539:18;5530:6;5486:72;:::i;:::-;5123:442;;;;;;:::o;5571:104::-;5616:7;5645:24;5663:5;5645:24;:::i;:::-;5634:35;;5571:104;;;:::o;5681:138::-;5762:32;5788:5;5762:32;:::i;:::-;5755:5;5752:43;5742:71;;5809:1;5806;5799:12;5742:71;5681:138;:::o;5825:159::-;5890:5;5921:6;5915:13;5906:22;;5937:41;5972:5;5937:41;:::i;:::-;5825:159;;;;:::o;5990:367::-;6068:6;6117:2;6105:9;6096:7;6092:23;6088:32;6085:119;;;6123:79;;:::i;:::-;6085:119;6243:1;6268:72;6332:7;6323:6;6312:9;6308:22;6268:72;:::i;:::-;6258:82;;6214:136;5990:367;;;;:::o;6363:129::-;6433:7;6462:24;6480:5;6462:24;:::i;:::-;6451:35;;6363:129;;;:::o;6498:188::-;6604:57;6655:5;6604:57;:::i;:::-;6597:5;6594:68;6584:96;;6676:1;6673;6666:12;6584:96;6498:188;:::o;6692:209::-;6782:5;6813:6;6807:13;6798:22;;6829:66;6889:5;6829:66;:::i;:::-;6692:209;;;;:::o;6907:417::-;7010:6;7059:2;7047:9;7038:7;7034:23;7030:32;7027:119;;;7065:79;;:::i;:::-;7027:119;7185:1;7210:97;7299:7;7290:6;7279:9;7275:22;7210:97;:::i;:::-;7200:107;;7156:161;6907:417;;;;:::o;7330:142::-;7433:32;7459:5;7433:32;:::i;:::-;7428:3;7421:45;7330:142;;:::o;7478:474::-;7643:4;7681:2;7670:9;7666:18;7658:26;;7694:87;7778:1;7767:9;7763:17;7754:6;7694:87;:::i;:::-;7791:72;7859:2;7848:9;7844:18;7835:6;7791:72;:::i;:::-;7873;7941:2;7930:9;7926:18;7917:6;7873:72;:::i;:::-;7478:474;;;;;;:::o;7958:148::-;8060:11;8097:3;8082:18;;7958:148;;;;:::o;8112:173::-;8252:25;8248:1;8240:6;8236:14;8229:49;8112:173;:::o;8291:402::-;8451:3;8472:85;8554:2;8549:3;8472:85;:::i;:::-;8465:92;;8566:93;8655:3;8566:93;:::i;:::-;8684:2;8679:3;8675:12;8668:19;;8291:402;;;:::o;8699:99::-;8751:6;8785:5;8779:12;8769:22;;8699:99;;;:::o;8804:246::-;8885:1;8895:113;8909:6;8906:1;8903:13;8895:113;;;8994:1;8989:3;8985:11;8979:18;8975:1;8970:3;8966:11;8959:39;8931:2;8928:1;8924:10;8919:15;;8895:113;;;9042:1;9033:6;9028:3;9024:16;9017:27;8866:184;8804:246;;;:::o;9056:390::-;9162:3;9190:39;9223:5;9190:39;:::i;:::-;9245:89;9327:6;9322:3;9245:89;:::i;:::-;9238:96;;9343:65;9401:6;9396:3;9389:4;9382:5;9378:16;9343:65;:::i;:::-;9433:6;9428:3;9424:16;9417:23;;9166:280;9056:390;;;;:::o;9452:167::-;9592:19;9588:1;9580:6;9576:14;9569:43;9452:167;:::o;9625:402::-;9785:3;9806:85;9888:2;9883:3;9806:85;:::i;:::-;9799:92;;9900:93;9989:3;9900:93;:::i;:::-;10018:2;10013:3;10009:12;10002:19;;9625:402;;;:::o;10033:967::-;10415:3;10437:148;10581:3;10437:148;:::i;:::-;10430:155;;10602:95;10693:3;10684:6;10602:95;:::i;:::-;10595:102;;10714:148;10858:3;10714:148;:::i;:::-;10707:155;;10879:95;10970:3;10961:6;10879:95;:::i;:::-;10872:102;;10991:3;10984:10;;10033:967;;;;;:::o;11006:102::-;11047:6;11098:2;11094:7;11089:2;11082:5;11078:14;11074:28;11064:38;;11006:102;;;:::o;11114:377::-;11202:3;11230:39;11263:5;11230:39;:::i;:::-;11285:71;11349:6;11344:3;11285:71;:::i;:::-;11278:78;;11365:65;11423:6;11418:3;11411:4;11404:5;11400:16;11365:65;:::i;:::-;11455:29;11477:6;11455:29;:::i;:::-;11450:3;11446:39;11439:46;;11206:285;11114:377;;;;:::o;11497:313::-;11610:4;11648:2;11637:9;11633:18;11625:26;;11697:9;11691:4;11687:20;11683:1;11672:9;11668:17;11661:47;11725:78;11798:4;11789:6;11725:78;:::i;:::-;11717:86;;11497:313;;;;:::o;11816:180::-;11864:77;11861:1;11854:88;11961:4;11958:1;11951:15;11985:4;11982:1;11975:15;12002:410;12042:7;12065:20;12083:1;12065:20;:::i;:::-;12060:25;;12099:20;12117:1;12099:20;:::i;:::-;12094:25;;12154:1;12151;12147:9;12176:30;12194:11;12176:30;:::i;:::-;12165:41;;12355:1;12346:7;12342:15;12339:1;12336:22;12316:1;12309:9;12289:83;12266:139;;12385:18;;:::i;:::-;12266:139;12050:362;12002:410;;;;:::o;12418:191::-;12458:3;12477:20;12495:1;12477:20;:::i;:::-;12472:25;;12511:20;12529:1;12511:20;:::i;:::-;12506:25;;12554:1;12551;12547:9;12540:16;;12575:3;12572:1;12569:10;12566:36;;;12582:18;;:::i;:::-;12566:36;12418:191;;;;:::o;12615:180::-;12663:77;12660:1;12653:88;12760:4;12757:1;12750:15;12784:4;12781:1;12774:15;12801:180;12849:77;12846:1;12839:88;12946:4;12943:1;12936:15;12970:4;12967:1;12960:15;12987:171;13026:3;13049:24;13067:5;13049:24;:::i;:::-;13040:33;;13095:4;13088:5;13085:15;13082:41;;13103:18;;:::i;:::-;13082:41;13150:1;13143:5;13139:13;13132:20;;12987:171;;;:::o;13164:182::-;13304:34;13300:1;13292:6;13288:14;13281:58;13164:182;:::o;13352:366::-;13494:3;13515:67;13579:2;13574:3;13515:67;:::i;:::-;13508:74;;13591:93;13680:3;13591:93;:::i;:::-;13709:2;13704:3;13700:12;13693:19;;13352:366;;;:::o;13724:419::-;13890:4;13928:2;13917:9;13913:18;13905:26;;13977:9;13971:4;13967:20;13963:1;13952:9;13948:17;13941:47;14005:131;14131:4;14005:131;:::i;:::-;13997:139;;13724:419;;;:::o"},"methodIdentifiers":{"depositGelatoFunds()":"1674bc24","getGelatoAddresses()":"bb6bd765","getMinimumAppGelatoBalance()":"f24a25de","setGelatoContracts(address)":"71ebf6f4","setMinimumAppGelatoBalance(uint256)":"2e4b6945","withdrawGelatoFunds(uint256)":"a6f9223d"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"depositGelatoFunds\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGelatoAddresses\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinimumAppGelatoBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_autobot\",\"type\":\"address\"}],\"name\":\"setGelatoContracts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"setMinimumAppGelatoBalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"withdrawGelatoFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/facets/core/Automate.sol\":\"Automate\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol\":{\"keccak256\":\"0xf41ca991f30855bf80ffd11e9347856a517b977f0a6c2d52e6421a99b7840329\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2717fd2bdac99daa960a6de500754ea1b932093c946388c381da48658234b95\",\"dweb:/ipfs/QmP6QVMn6UeA3ByahyJbYQr5M6coHKBKsf3ySZSfbyA8R7\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x9b72f93be69ca894d8492c244259615c4a742afc8d63720dbc8bb81087d9b238\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5a7b96e511be78d5cdf635c784e6ab8cdd38625bb8cafb8a80914a1c89cf0f6\",\"dweb:/ipfs/QmVzTCwJxQAkjRQHboT5QrvsVJGWQHgfEjeTbvyxoKBrds\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xf96f969e24029d43d0df89e59d365f277021dac62b48e1c1e3ebe0acdd7f1ca1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec772b45a624be516f1c81970caa8a2e144301e9d0921cbc1a2789fef39a1269\",\"dweb:/ipfs/QmNyjwxCrGhQMyzLD93oUobJXVe9ceJvRvfXwbEtuxPiEj\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xa4d1d62251f8574deb032a35fc948386a9b4de74b812d4f545a1ac120486b48a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c969013129ba9e651a20735ef659fef6d8a1139ea3607bd4b26ddea2d645634\",\"dweb:/ipfs/QmVhVa6LGuzAcB8qgDtVHRkucn4ihj5UZr8xBLcJkP6ucb\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa1e8e83cd0087785df04ac79fb395d9f3684caeaf973d9e2c71caef723a3a5d6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33bbf48cc069be677705037ba7520c22b1b622c23b33e1a71495f2d36549d40b\",\"dweb:/ipfs/Qmct36zWXv3j7LZB83uwbg7TXwnZSN1fqHNDZ93GG98bGz\"]},\"contracts/facets/core/Automate.sol\":{\"keccak256\":\"0xf93580135b6cdb8887c8838523d78a09ba05e8db7ff42d118cf6c7eabe1ce437\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://a0e3f5384c3e6086ad2495c4ddb86753557b40c522c8611d2b52279d0bad049e\",\"dweb:/ipfs/QmdzNrJfZzqyC6hLW5tgZdzA4D7xEbRMidXr6JnKqLi91J\"]},\"contracts/interfaces/core/IAutomate.sol\":{\"keccak256\":\"0x21b292f16977568b93ad13329faea0112bed7e0413c441ffcf58ecca8d540ec7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0c9449f7e8725db0c2721f5a8890e58af4d69b465d1e9cecc1acfb1e3db40771\",\"dweb:/ipfs/QmR9mHTaDi8qWCq1tXzBaLgKK6tgEjk1bHEnB8GGSXLBTT\"]},\"contracts/libraries/core/LibAutomate.sol\":{\"keccak256\":\"0xdca80cbbdf57dfc0f76c3719a54d2da92c09e46c3844b1011d9742a16ed2eb93\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://d5b967a7f5fa571c8154fa358725e9b5cff19b6e3847ff00e0ec210c9ce7a97b\",\"dweb:/ipfs/Qma7vn262Je4WamND9fytLSFaM4tw7NcGs5pYE1Lc3iB5a\"]},\"contracts/libraries/utils/LibAccessControl.sol\":{\"keccak256\":\"0xebec727abd5564cc66e0b402d9ceb87168e19d73bd4853b034944b61a420f912\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://5390c191313856ad3f5d863b71d8a9d29a793c73cc6fecd9ef41abff262131a2\",\"dweb:/ipfs/QmUK83c2nwSR1L8M2rADMkJtsaBkADhYN2W3xuoxaQ2eC9\"]},\"contracts/services/gelato/Types.sol\":{\"keccak256\":\"0xcb8ce40dd420fe9d1fc258beba179e7c43560616dfd045d254a15fa75e6043e8\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://27599e8fa821421f99c2ae56716b118c4f47201d20c8475f6554395a60fc00a5\",\"dweb:/ipfs/QmS7h9jcSSZTM1icDDcFjdNgK3cFJWXFEXoJBpjfjn2a89\"]}},\"version\":1}"}},"contracts/facets/core/Control.sol":{"Control":{"abi":[{"inputs":[],"name":"ArrayLengthNotMatch","type":"error"},{"inputs":[],"name":"ContractError","type":"error"},{"inputs":[],"name":"InsufficientAssets","type":"error"},{"inputs":[],"name":"InsufficientFeeBalance","type":"error"},{"inputs":[],"name":"InvalidBasisPoints","type":"error"},{"inputs":[],"name":"InvalidFlowRateBounds","type":"error"},{"inputs":[],"name":"InvalidSuperToken","type":"error"},{"inputs":[],"name":"ZeroValue","type":"error"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"}],"name":"addSuperToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"clearBPS","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"depositAsset","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"}],"name":"getAssetTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"address","name":"_superToken","type":"address"}],"name":"getAssetUser","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tag","type":"uint256"}],"name":"getBPSData","outputs":[{"internalType":"uint16","name":"","type":"uint16"},{"internalType":"uint96","name":"","type":"uint96"},{"internalType":"uint96","name":"","type":"uint96"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBPSSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"},{"internalType":"uint256","name":"_nonce","type":"uint256"}],"name":"getControlData","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"}],"name":"getFeeBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMinimumEndDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMinimumLifespan","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"},{"internalType":"int96","name":"_newFlowRate","type":"int96"}],"name":"getNewBufferedAppBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"}],"name":"getNewControlNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getSBPS","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSTBufferDurationInSecond","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isBPSEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"},{"internalType":"int96","name":"_newFlowRate","type":"int96"}],"name":"isNewFlowRateAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"}],"name":"isSuperTokensSupported","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"address","name":"_superToken","type":"address"}],"name":"realizeFeeBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"}],"name":"removeSuperToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16[]","name":"_bpss","type":"uint16[]"},{"internalType":"uint96[]","name":"_flowRateLowerBounds","type":"uint96[]"},{"internalType":"uint96[]","name":"_flowRateUpperBounds","type":"uint96[]"},{"internalType":"uint256[]","name":"_tags","type":"uint256[]"}],"name":"setBPS","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_duration","type":"uint256"}],"name":"setMinimumEndDuration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_duration","type":"uint256"}],"name":"setMinimumLifespan","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_bps","type":"uint16"},{"internalType":"address","name":"_user","type":"address"}],"name":"setSBPS","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_duration","type":"uint256"}],"name":"setSTBufferAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"toggleBPS","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawAsset","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawFeeBalance","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50613d17806100206000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c80637f69bcaf116100f9578063be83574711610097578063ca70e1d511610071578063ca70e1d51461051a578063cb857c8014610538578063d99d3b6914610554578063ebaae66114610570576101c4565b8063be8357471461048a578063c467cddc146104ba578063c78f6803146104ea576101c4565b8063a8771ab9116100d3578063a8771ab9146103f0578063acff47441461040e578063adefe35e1461043e578063b24190831461045a576101c4565b80637f69bcaf1461038657806383807889146103b6578063a86c8c7c146103d2576101c4565b80634ee43e46116101665780636ab1c734116101405780636ab1c73414610322578063703ab1b714610354578063795e34251461035e5780637ea195ad14610368576101c4565b80634ee43e46146102b8578063578dc59a146102e85780636812a17314610304576101c4565b8063245b6c93116101a2578063245b6c931461024857806338e4f0641461026457806346a5d04314610280578063487eb9391461029c576101c4565b80630b72660d146101c957806322c3a21f146101fc5780632357f2cf14610218575b600080fd5b6101e360048036038101906101de9190612d16565b61058c565b6040516101f39493929190612d74565b60405180910390f35b61021660048036038101906102119190612db9565b6105ad565b005b610232600480360381019061022d9190612db9565b6105e6565b60405161023f9190612e03565b60405180910390f35b610262600480360381019061025d9190612e1e565b6105f8565b005b61027e60048036038101906102799190612d16565b61063a565b005b61029a60048036038101906102959190612d16565b610648565b005b6102b660048036038101906102b19190612e1e565b61065f565b005b6102d260048036038101906102cd9190612e84565b6106a1565b6040516102df9190612ec4565b60405180910390f35b61030260048036038101906102fd9190612e1e565b6106b5565b005b61030c6106f7565b6040516103199190612ec4565b60405180910390f35b61033c60048036038101906103379190612e1e565b610706565b60405161034b93929190612f06565b60405180910390f35b61035c610721565b005b610366610758565b005b61037061078f565b60405161037d9190612ec4565b60405180910390f35b6103a0600480360381019061039b9190612db9565b61079e565b6040516103ad9190612ec4565b60405180910390f35b6103d060048036038101906103cb9190612db9565b6107b0565b005b6103da6107e9565b6040516103e79190612f58565b60405180910390f35b6103f86107f8565b6040516104059190612ec4565b60405180910390f35b61042860048036038101906104239190612db9565b610807565b6040516104359190612f58565b60405180910390f35b61045860048036038101906104539190612f73565b610819565b005b610474600480360381019061046f9190612db9565b610827565b6040516104819190612ec4565b60405180910390f35b6104a4600480360381019061049f9190612fb3565b610839565b6040516104b19190612ec4565b60405180910390f35b6104d460048036038101906104cf9190612e84565b61084d565b6040516104e19190612f58565b60405180910390f35b61050460048036038101906104ff9190612db9565b610861565b6040516105119190612ec4565b60405180910390f35b610522610873565b60405161052f9190612ec4565b60405180910390f35b610552600480360381019061054d919061332a565b610882565b005b61056e60048036038101906105699190613401565b610a4b565b005b61058a60048036038101906105859190612d16565b610a86565b005b60008060008061059c8686610ac1565b935093509350935092959194509250565b6105da6040516020016105bf9061349e565b60405160208183030381529060405280519060200120610c84565b6105e381610c90565b50565b60006105f182610cf4565b9050919050565b61062560405160200161060a9061349e565b60405160208183030381529060405280519060200120610c84565b61062e81610d54565b61063781610d91565b50565b6106448282610da4565b5050565b61065182610fe1565b61065b8282611023565b5050565b61068c6040516020016106719061349e565b60405160208183030381529060405280519060200120610c84565b61069581610d54565b61069e816111a3565b50565b60006106ad83836111b6565b905092915050565b6106e26040516020016106c79061349e565b60405160208183030381529060405280519060200120610c84565b6106eb81610d54565b6106f48161125c565b50565b600061070161126f565b905090565b600080600061071484611282565b9250925092509193909250565b61074e6040516020016107339061349e565b60405160208183030381529060405280519060200120610c84565b6107566112c4565b565b61078560405160200161076a9061349e565b60405160208183030381529060405280519060200120610c84565b61078d611302565b565b6000610799611382565b905090565b60006107a982611395565b9050919050565b6107dd6040516020016107c29061349e565b60405160208183030381529060405280519060200120610c84565b6107e6816113e7565b50565b60006107f3611442565b905090565b6000610802611462565b905090565b60006108128261147c565b9050919050565b61082382826114db565b5050565b600061083282611549565b9050919050565b6000610845838361159b565b905092915050565b6000610859838361162b565b905092915050565b600061086c826116bf565b9050919050565b600061087d611711565b905090565b6108af6040516020016108949061349e565b60405160208183030381529060405280519060200120610c84565b825184511415806108c257508151845114155b806108cf57508051845114155b15610906576040517fed882f7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8451811015610a44576001855161092091906134ed565b8110156109bd57836001826109359190613521565b8151811061094657610945613555565b5b60200260200101516bffffffffffffffffffffffff1683828151811061096f5761096e613555565b5b60200260200101516bffffffffffffffffffffffff16146109bc576040517f2245023300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b610a318582815181106109d3576109d2613555565b5b60200260200101518583815181106109ee576109ed613555565b5b6020026020010151858481518110610a0957610a08613555565b5b6020026020010151858581518110610a2457610a23613555565b5b6020026020010151611724565b8080610a3c90613584565b915050610909565b5050505050565b610a78604051602001610a5d9061349e565b60405160208183030381529060405280519060200120610c84565b610a8282826117ac565b5050565b610ab3604051602001610a9890613618565b60405160208183030381529060405280519060200120610c84565b610abd828261181c565b5050565b6000806000806000610ad1611982565b600c0160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000610b52611982565b600c0160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008881526020019081526020016000206001015490506000610bb3611982565b600c0160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008981526020019081526020016000206002015490506000610c14611982565b600c0160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a81526020019081526020016000206003015490508383838397509750975097505050505092959194509250565b610c8d816119af565b50565b6001610c9a611982565b60090160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000610cfe611982565b60040160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900461ffff169050919050565b60008111610d8e576040517f7c946ed700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b80610d9a611982565b6007018190555050565b80610dad611982565b600e0160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610e63576040517f96d8043300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80610e6c611982565b600e0160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ef891906134ed565b9250508190555080610f08611982565b600f0160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610f5791906134ed565b925050819055508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610f99929190613638565b6020604051808303816000875af1158015610fb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fdc919061368d565b505050565b610fea8161147c565b611020576040517f334ae3e600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b8173ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401611060939291906136ba565b6020604051808303816000875af115801561107f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a3919061368d565b50806110ad611982565b600e0160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546111399190613521565b9250508190555080611149611982565b600f0160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546111989190613521565b925050819055505050565b806111ac611982565b6008018190555050565b60008083905060006111e7848373ffffffffffffffffffffffffffffffffffffffff166119bc90919063ffffffff16565b90506000611214308473ffffffffffffffffffffffffffffffffffffffff16611a5090919063ffffffff16565b905061121e611982565b60080154858261122e91906136f1565b6bffffffffffffffffffffffff166112469190613755565b826112519190613521565b935050505092915050565b80611265611982565b6006018190555050565b6000611279611982565b60060154905090565b6000806000806112a585611294611982565b600001611ae490919063ffffffff16565b9050806000015181602001518260400151935093509350509193909250565b6112cc611982565b60050160009054906101000a900460ff16156112e6611982565b60050160006101000a81548160ff021916908315150217905550565b600061130c611462565b905060005b8181101561137e57600061134b6001611328611462565b61133291906134ed565b61133a611982565b600001611bb090919063ffffffff16565b905061136a81611359611982565b600001611bdb90919063ffffffff16565b50808061137690613584565b915050611311565b5050565b600061138c611982565b60080154905090565b600061139f611982565b600b0160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6113ef611982565b60090160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff021916905550565b600061144c611982565b60050160009054906101000a900460ff16905090565b600061147761146f611982565b600001611d74565b905090565b6000611486611982565b60090160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6114e782826001611d85565b6114ef611982565b600d0160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461153e9190613521565b925050819055505050565b6000611553611982565b600f0160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006115a5611982565b600e0160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000808373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016116679190613797565b602060405180830381865afa158015611684573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a891906137c7565b90506116b484846111b6565b811191505092915050565b60006116c9611982565b600d0160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600061171b611982565b60070154905090565b61172d84611e8b565b826bffffffffffffffffffffffff16826bffffffffffffffffffffffff161015611783576040517f2245023300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117a681858585611792611982565b600001611ee490949392919063ffffffff16565b50505050565b6117b582611e8b565b816117be611982565b60040160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548161ffff021916908361ffff1602179055505050565b80611825611982565b600d0160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561189e576040517ff00d49ea00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806118a7611982565b600d0160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118f691906134ed565b925050819055508173ffffffffffffffffffffffffffffffffffffffff166323b872dd3033846040518463ffffffff1660e01b815260040161193a939291906136ba565b6020604051808303816000875af1158015611959573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061197d919061368d565b505050565b6000807f2f7ed27098ecefe70183ee38ae4542dee65215b0786f6870871034402cfe2cc990508091505090565b6119b98133612115565b50565b6000806119c8846121b2565b9150508073ffffffffffffffffffffffffffffffffffffffff16638d997f6e85856040518363ffffffff1660e01b8152600401611a06929190613862565b602060405180830381865afa158015611a23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4791906137c7565b91505092915050565b600080611a5c846121b2565b9150508073ffffffffffffffffffffffffffffffffffffffff1663e8e7e2d185856040518363ffffffff1660e01b8152600401611a9a92919061388b565b602060405180830381865afa158015611ab7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611adb91906138c9565b91505092915050565b611aec612c2d565b8260010160008381526020019081526020016000206040518060600160405290816000820160009054906101000a900461ffff1661ffff1661ffff1681526020016000820160029054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160008201600e9054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681525050905092915050565b6000826000018281548110611bc857611bc7613555565b5b9060005260206000200154905092915050565b81600301600082815260200190815260200160002060009054906101000a900460ff1615611d705781600301600082815260200190815260200160002060006101000a81549060ff0219169055816001016000828152602001908152602001600020600080820160006101000a81549061ffff02191690556000820160026101000a8154906bffffffffffffffffffffffff021916905560008201600e6101000a8154906bffffffffffffffffffffffff021916905550506000826002016000838152602001908152602001600020549050600060018460000180549050611cc391906134ed565b90506000846000018281548110611cdd57611cdc613555565b5b9060005260206000200154905082856002016000838152602001908152602001600020819055508460020160008581526020019081526020016000206000905580856000018481548110611d3457611d33613555565b5b906000526020600020018190555084600001805480611d5657611d556138f6565b5b600190038181906000526020600020016000905590555050505b5050565b600081600001805490509050919050565b600080611d90611982565b9050600081600a0160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600080600090505b87811015611e7d57611dfd878285611df89190613521565b6123f3565b82611e089190613521565b91508515611e6a57600184600a0160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611e629190613521565b925050819055505b8080611e7590613584565b915050611de0565b508093505050509392505050565b606460ff168161ffff161080611eaa575061271061ffff168161ffff16115b15611ee1576040517f800c7e9100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b84600301600085815260200190815260200160002060009054906101000a900460ff1615611fd2578285600101600086815260200190815260200160002060000160006101000a81548161ffff021916908361ffff1602179055508185600101600086815260200190815260200160002060000160026101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555080856001016000868152602001908152602001600020600001600e6101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555061210e565b600185600301600086815260200190815260200160002060006101000a81548160ff0219169083151502179055508285600101600086815260200190815260200160002060000160006101000a81548161ffff021916908361ffff1602179055508185600101600086815260200190815260200160002060000160026101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555080856001016000868152602001908152602001600020600001600e6101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550846000018054905085600201600086815260200190815260200160002081905550846000018490806001815401808255809150506001900390600052602060002001600090919091909150555b5050505050565b61211f828261257a565b6121ae576121448173ffffffffffffffffffffffffffffffffffffffff1660146125ee565b6121528360001c60206125ee565b604051602001612163929190613a2e565b6040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a59190613aa1565b60405180910390fd5b5050565b6000807f65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea8375491507fb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a549050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361237457600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122d7578273ffffffffffffffffffffffffffffffffffffffff166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d49190613ad8565b91505b8173ffffffffffffffffffffffffffffffffffffffff1663b6d200de7fa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd36040518263ffffffff1660e01b81526004016123309190613b57565b602060405180830381865afa15801561234d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123719190613bb0565b90505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036123b1576123b0613bdd565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036123ee576123ed613bdd565b5b915091565b6000806123fe611982565b9050600081600c0160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000858152602001908152602001600020600201549050600082600c0160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600086815260200190815260200160002060030154905060008060006124c3898961282a565b93505092509250600083836124d89190613c0c565b6bffffffffffffffffffffffff169050600085146125155785856124fc91906134ed565b816125079190613755565b975050505050505050612574565b6000821461254257858261252991906134ed565b816125349190613755565b975050505050505050612574565b6040517fae1c061f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b92915050565b600061258461292f565b600001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6060600060028360026126019190613755565b61260b9190613521565b67ffffffffffffffff81111561262457612623613009565b5b6040519080825280601f01601f1916602001820160405280156126565781602001600182028036833780820191505090505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061268e5761268d613555565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106126f2576126f1613555565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026127329190613755565b61273c9190613521565b90505b60018111156127dc577f3031323334353637383961626364656600000000000000000000000000000000600f86166010811061277e5761277d613555565b5b1a60f81b82828151811061279557612794613555565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c9450806127d590613c4c565b905061273f565b5060008414612820576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281790613cc1565b60405180910390fd5b8091505092915050565b600080600080600061283a611982565b9050600081600c0160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600082600c0160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600089815260200190815260200160002060010154905061291b828a8361295c565b965096509650965050505092959194509250565b6000807f4cd15452b25e815d3f9d1a3c7edd985a178edf5eb3461a1acbf855517423d69490508091505090565b60008060008061296a612c00565b60010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600086815260200190815260200160002060000160009054906101000a9004600b0b612a11612c00565b60010160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878152602001908152602001600020600001600c9054906101000a90046bffffffffffffffffffffffff16612ac3612c00565b60010160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088815260200190815260200160002060010154612b5d612c00565b60010160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600089815260200190815260200160002060020154935093509350935093509350935093565b6000807f9cd9afe22fea86221d6e8117226b65bb0e2af8c4f5b8abf255fb0afcad4a3a9c90508091505090565b6040518060600160405280600061ffff16815260200160006bffffffffffffffffffffffff16815260200160006bffffffffffffffffffffffff1681525090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612cad82612c82565b9050919050565b612cbd81612ca2565b8114612cc857600080fd5b50565b600081359050612cda81612cb4565b92915050565b6000819050919050565b612cf381612ce0565b8114612cfe57600080fd5b50565b600081359050612d1081612cea565b92915050565b60008060408385031215612d2d57612d2c612c78565b5b6000612d3b85828601612ccb565b9250506020612d4c85828601612d01565b9150509250929050565b612d5f81612ca2565b82525050565b612d6e81612ce0565b82525050565b6000608082019050612d896000830187612d56565b612d966020830186612d65565b612da36040830185612d65565b612db06060830184612d65565b95945050505050565b600060208284031215612dcf57612dce612c78565b5b6000612ddd84828501612ccb565b91505092915050565b600061ffff82169050919050565b612dfd81612de6565b82525050565b6000602082019050612e186000830184612df4565b92915050565b600060208284031215612e3457612e33612c78565b5b6000612e4284828501612d01565b91505092915050565b600081600b0b9050919050565b612e6181612e4b565b8114612e6c57600080fd5b50565b600081359050612e7e81612e58565b92915050565b60008060408385031215612e9b57612e9a612c78565b5b6000612ea985828601612ccb565b9250506020612eba85828601612e6f565b9150509250929050565b6000602082019050612ed96000830184612d65565b92915050565b60006bffffffffffffffffffffffff82169050919050565b612f0081612edf565b82525050565b6000606082019050612f1b6000830186612df4565b612f286020830185612ef7565b612f356040830184612ef7565b949350505050565b60008115159050919050565b612f5281612f3d565b82525050565b6000602082019050612f6d6000830184612f49565b92915050565b60008060408385031215612f8a57612f89612c78565b5b6000612f9885828601612d01565b9250506020612fa985828601612ccb565b9150509250929050565b60008060408385031215612fca57612fc9612c78565b5b6000612fd885828601612ccb565b9250506020612fe985828601612ccb565b9150509250929050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61304182612ff8565b810181811067ffffffffffffffff821117156130605761305f613009565b5b80604052505050565b6000613073612c6e565b905061307f8282613038565b919050565b600067ffffffffffffffff82111561309f5761309e613009565b5b602082029050602081019050919050565b600080fd5b6130be81612de6565b81146130c957600080fd5b50565b6000813590506130db816130b5565b92915050565b60006130f46130ef84613084565b613069565b90508083825260208201905060208402830185811115613117576131166130b0565b5b835b81811015613140578061312c88826130cc565b845260208401935050602081019050613119565b5050509392505050565b600082601f83011261315f5761315e612ff3565b5b813561316f8482602086016130e1565b91505092915050565b600067ffffffffffffffff82111561319357613192613009565b5b602082029050602081019050919050565b6131ad81612edf565b81146131b857600080fd5b50565b6000813590506131ca816131a4565b92915050565b60006131e36131de84613178565b613069565b90508083825260208201905060208402830185811115613206576132056130b0565b5b835b8181101561322f578061321b88826131bb565b845260208401935050602081019050613208565b5050509392505050565b600082601f83011261324e5761324d612ff3565b5b813561325e8482602086016131d0565b91505092915050565b600067ffffffffffffffff82111561328257613281613009565b5b602082029050602081019050919050565b60006132a66132a184613267565b613069565b905080838252602082019050602084028301858111156132c9576132c86130b0565b5b835b818110156132f257806132de8882612d01565b8452602084019350506020810190506132cb565b5050509392505050565b600082601f83011261331157613310612ff3565b5b8135613321848260208601613293565b91505092915050565b6000806000806080858703121561334457613343612c78565b5b600085013567ffffffffffffffff81111561336257613361612c7d565b5b61336e8782880161314a565b945050602085013567ffffffffffffffff81111561338f5761338e612c7d565b5b61339b87828801613239565b935050604085013567ffffffffffffffff8111156133bc576133bb612c7d565b5b6133c887828801613239565b925050606085013567ffffffffffffffff8111156133e9576133e8612c7d565b5b6133f5878288016132fc565b91505092959194509250565b6000806040838503121561341857613417612c78565b5b6000613426858286016130cc565b925050602061343785828601612ccb565b9150509250929050565b600082825260208201905092915050565b7f535452415445474953545f524f4c450000000000000000000000000000000000600082015250565b6000613488600f83613441565b915061349382613452565b602082019050919050565b600060208201905081810360008301526134b78161347b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006134f882612ce0565b915061350383612ce0565b925082820390508181111561351b5761351a6134be565b5b92915050565b600061352c82612ce0565b915061353783612ce0565b925082820190508082111561354f5761354e6134be565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061358f82612ce0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036135c1576135c06134be565b5b600182019050919050565b7f5452454153555245525f524f4c45000000000000000000000000000000000000600082015250565b6000613602600e83613441565b915061360d826135cc565b602082019050919050565b60006020820190508181036000830152613631816135f5565b9050919050565b600060408201905061364d6000830185612d56565b61365a6020830184612d65565b9392505050565b61366a81612f3d565b811461367557600080fd5b50565b60008151905061368781613661565b92915050565b6000602082840312156136a3576136a2612c78565b5b60006136b184828501613678565b91505092915050565b60006060820190506136cf6000830186612d56565b6136dc6020830185612d56565b6136e96040830184612d65565b949350505050565b60006136fc82612e4b565b915061370783612e4b565b925082820190507fffffffffffffffffffffffffffffffffffffffff80000000000000000000000081126b7fffffffffffffffffffffff8213171561374f5761374e6134be565b5b92915050565b600061376082612ce0565b915061376b83612ce0565b925082820261377981612ce0565b915082820484148315176137905761378f6134be565b5b5092915050565b60006020820190506137ac6000830184612d56565b92915050565b6000815190506137c181612cea565b92915050565b6000602082840312156137dd576137dc612c78565b5b60006137eb848285016137b2565b91505092915050565b6000819050919050565b600061381961381461380f84612c82565b6137f4565b612c82565b9050919050565b600061382b826137fe565b9050919050565b600061383d82613820565b9050919050565b61384d81613832565b82525050565b61385c81612e4b565b82525050565b60006040820190506138776000830185613844565b6138846020830184613853565b9392505050565b60006040820190506138a06000830185613844565b6138ad6020830184612d56565b9392505050565b6000815190506138c381612e58565b92915050565b6000602082840312156138df576138de612c78565b5b60006138ed848285016138b4565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000613966601783613925565b915061397182613930565b601782019050919050565b600081519050919050565b60005b838110156139a557808201518184015260208101905061398a565b60008484015250505050565b60006139bc8261397c565b6139c68185613925565b93506139d6818560208601613987565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000613a18601183613925565b9150613a23826139e2565b601182019050919050565b6000613a3982613959565b9150613a4582856139b1565b9150613a5082613a0b565b9150613a5c82846139b1565b91508190509392505050565b6000613a738261397c565b613a7d8185613441565b9350613a8d818560208601613987565b613a9681612ff8565b840191505092915050565b60006020820190508181036000830152613abb8184613a68565b905092915050565b600081519050613ad281612cb4565b92915050565b600060208284031215613aee57613aed612c78565b5b6000613afc84828501613ac3565b91505092915050565b6000819050919050565b6000819050919050565b60008160001b9050919050565b6000613b41613b3c613b3784613b05565b613b19565b613b0f565b9050919050565b613b5181613b26565b82525050565b6000602082019050613b6c6000830184613b48565b92915050565b6000613b7d82612ca2565b9050919050565b613b8d81613b72565b8114613b9857600080fd5b50565b600081519050613baa81613b84565b92915050565b600060208284031215613bc657613bc5612c78565b5b6000613bd484828501613b9b565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000613c1782612edf565b9150613c2283612edf565b925082820390506bffffffffffffffffffffffff811115613c4657613c456134be565b5b92915050565b6000613c5782612ce0565b915060008203613c6a57613c696134be565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b6000613cab602083613441565b9150613cb682613c75565b602082019050919050565b60006020820190508181036000830152613cda81613c9e565b905091905056fea2646970667358221220f916c5dbccf5ceca861487c05ea2e48b82bb0e3ae46f943844ba41385030217464736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3D17 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1C4 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7F69BCAF GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0xBE835747 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xCA70E1D5 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xCA70E1D5 EQ PUSH2 0x51A JUMPI DUP1 PUSH4 0xCB857C80 EQ PUSH2 0x538 JUMPI DUP1 PUSH4 0xD99D3B69 EQ PUSH2 0x554 JUMPI DUP1 PUSH4 0xEBAAE661 EQ PUSH2 0x570 JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0xBE835747 EQ PUSH2 0x48A JUMPI DUP1 PUSH4 0xC467CDDC EQ PUSH2 0x4BA JUMPI DUP1 PUSH4 0xC78F6803 EQ PUSH2 0x4EA JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0xA8771AB9 GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0xA8771AB9 EQ PUSH2 0x3F0 JUMPI DUP1 PUSH4 0xACFF4744 EQ PUSH2 0x40E JUMPI DUP1 PUSH4 0xADEFE35E EQ PUSH2 0x43E JUMPI DUP1 PUSH4 0xB2419083 EQ PUSH2 0x45A JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x7F69BCAF EQ PUSH2 0x386 JUMPI DUP1 PUSH4 0x83807889 EQ PUSH2 0x3B6 JUMPI DUP1 PUSH4 0xA86C8C7C EQ PUSH2 0x3D2 JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x4EE43E46 GT PUSH2 0x166 JUMPI DUP1 PUSH4 0x6AB1C734 GT PUSH2 0x140 JUMPI DUP1 PUSH4 0x6AB1C734 EQ PUSH2 0x322 JUMPI DUP1 PUSH4 0x703AB1B7 EQ PUSH2 0x354 JUMPI DUP1 PUSH4 0x795E3425 EQ PUSH2 0x35E JUMPI DUP1 PUSH4 0x7EA195AD EQ PUSH2 0x368 JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x4EE43E46 EQ PUSH2 0x2B8 JUMPI DUP1 PUSH4 0x578DC59A EQ PUSH2 0x2E8 JUMPI DUP1 PUSH4 0x6812A173 EQ PUSH2 0x304 JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x245B6C93 GT PUSH2 0x1A2 JUMPI DUP1 PUSH4 0x245B6C93 EQ PUSH2 0x248 JUMPI DUP1 PUSH4 0x38E4F064 EQ PUSH2 0x264 JUMPI DUP1 PUSH4 0x46A5D043 EQ PUSH2 0x280 JUMPI DUP1 PUSH4 0x487EB939 EQ PUSH2 0x29C JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0xB72660D EQ PUSH2 0x1C9 JUMPI DUP1 PUSH4 0x22C3A21F EQ PUSH2 0x1FC JUMPI DUP1 PUSH4 0x2357F2CF EQ PUSH2 0x218 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1E3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1DE SWAP2 SWAP1 PUSH2 0x2D16 JUMP JUMPDEST PUSH2 0x58C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1F3 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2D74 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x216 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x211 SWAP2 SWAP1 PUSH2 0x2DB9 JUMP JUMPDEST PUSH2 0x5AD JUMP JUMPDEST STOP JUMPDEST PUSH2 0x232 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x22D SWAP2 SWAP1 PUSH2 0x2DB9 JUMP JUMPDEST PUSH2 0x5E6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x23F SWAP2 SWAP1 PUSH2 0x2E03 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x262 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x25D SWAP2 SWAP1 PUSH2 0x2E1E JUMP JUMPDEST PUSH2 0x5F8 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x27E PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x279 SWAP2 SWAP1 PUSH2 0x2D16 JUMP JUMPDEST PUSH2 0x63A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x29A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x295 SWAP2 SWAP1 PUSH2 0x2D16 JUMP JUMPDEST PUSH2 0x648 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2B1 SWAP2 SWAP1 PUSH2 0x2E1E JUMP JUMPDEST PUSH2 0x65F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2D2 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2CD SWAP2 SWAP1 PUSH2 0x2E84 JUMP JUMPDEST PUSH2 0x6A1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2DF SWAP2 SWAP1 PUSH2 0x2EC4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x302 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2FD SWAP2 SWAP1 PUSH2 0x2E1E JUMP JUMPDEST PUSH2 0x6B5 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x30C PUSH2 0x6F7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x319 SWAP2 SWAP1 PUSH2 0x2EC4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x33C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x337 SWAP2 SWAP1 PUSH2 0x2E1E JUMP JUMPDEST PUSH2 0x706 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x34B SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2F06 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x35C PUSH2 0x721 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x366 PUSH2 0x758 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x370 PUSH2 0x78F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x37D SWAP2 SWAP1 PUSH2 0x2EC4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x39B SWAP2 SWAP1 PUSH2 0x2DB9 JUMP JUMPDEST PUSH2 0x79E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3AD SWAP2 SWAP1 PUSH2 0x2EC4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3D0 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3CB SWAP2 SWAP1 PUSH2 0x2DB9 JUMP JUMPDEST PUSH2 0x7B0 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3DA PUSH2 0x7E9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3E7 SWAP2 SWAP1 PUSH2 0x2F58 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3F8 PUSH2 0x7F8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x405 SWAP2 SWAP1 PUSH2 0x2EC4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x428 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x423 SWAP2 SWAP1 PUSH2 0x2DB9 JUMP JUMPDEST PUSH2 0x807 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x435 SWAP2 SWAP1 PUSH2 0x2F58 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x458 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x453 SWAP2 SWAP1 PUSH2 0x2F73 JUMP JUMPDEST PUSH2 0x819 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x474 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x46F SWAP2 SWAP1 PUSH2 0x2DB9 JUMP JUMPDEST PUSH2 0x827 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x481 SWAP2 SWAP1 PUSH2 0x2EC4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x4A4 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x49F SWAP2 SWAP1 PUSH2 0x2FB3 JUMP JUMPDEST PUSH2 0x839 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4B1 SWAP2 SWAP1 PUSH2 0x2EC4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x4D4 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x4CF SWAP2 SWAP1 PUSH2 0x2E84 JUMP JUMPDEST PUSH2 0x84D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4E1 SWAP2 SWAP1 PUSH2 0x2F58 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x504 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x4FF SWAP2 SWAP1 PUSH2 0x2DB9 JUMP JUMPDEST PUSH2 0x861 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x511 SWAP2 SWAP1 PUSH2 0x2EC4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x522 PUSH2 0x873 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x52F SWAP2 SWAP1 PUSH2 0x2EC4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x552 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x54D SWAP2 SWAP1 PUSH2 0x332A JUMP JUMPDEST PUSH2 0x882 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x56E PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x569 SWAP2 SWAP1 PUSH2 0x3401 JUMP JUMPDEST PUSH2 0xA4B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x58A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x585 SWAP2 SWAP1 PUSH2 0x2D16 JUMP JUMPDEST PUSH2 0xA86 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x59C DUP7 DUP7 PUSH2 0xAC1 JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH2 0x5DA PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x5BF SWAP1 PUSH2 0x349E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0xC84 JUMP JUMPDEST PUSH2 0x5E3 DUP2 PUSH2 0xC90 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5F1 DUP3 PUSH2 0xCF4 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x625 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x60A SWAP1 PUSH2 0x349E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0xC84 JUMP JUMPDEST PUSH2 0x62E DUP2 PUSH2 0xD54 JUMP JUMPDEST PUSH2 0x637 DUP2 PUSH2 0xD91 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x644 DUP3 DUP3 PUSH2 0xDA4 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x651 DUP3 PUSH2 0xFE1 JUMP JUMPDEST PUSH2 0x65B DUP3 DUP3 PUSH2 0x1023 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x68C PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x671 SWAP1 PUSH2 0x349E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0xC84 JUMP JUMPDEST PUSH2 0x695 DUP2 PUSH2 0xD54 JUMP JUMPDEST PUSH2 0x69E DUP2 PUSH2 0x11A3 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6AD DUP4 DUP4 PUSH2 0x11B6 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x6E2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x6C7 SWAP1 PUSH2 0x349E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0xC84 JUMP JUMPDEST PUSH2 0x6EB DUP2 PUSH2 0xD54 JUMP JUMPDEST PUSH2 0x6F4 DUP2 PUSH2 0x125C JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x701 PUSH2 0x126F JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x714 DUP5 PUSH2 0x1282 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH2 0x74E PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x733 SWAP1 PUSH2 0x349E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0xC84 JUMP JUMPDEST PUSH2 0x756 PUSH2 0x12C4 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x785 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x76A SWAP1 PUSH2 0x349E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0xC84 JUMP JUMPDEST PUSH2 0x78D PUSH2 0x1302 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH2 0x799 PUSH2 0x1382 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7A9 DUP3 PUSH2 0x1395 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x7DD PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x7C2 SWAP1 PUSH2 0x349E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0xC84 JUMP JUMPDEST PUSH2 0x7E6 DUP2 PUSH2 0x13E7 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7F3 PUSH2 0x1442 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x802 PUSH2 0x1462 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x812 DUP3 PUSH2 0x147C JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x823 DUP3 DUP3 PUSH2 0x14DB JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x832 DUP3 PUSH2 0x1549 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x845 DUP4 DUP4 PUSH2 0x159B JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x859 DUP4 DUP4 PUSH2 0x162B JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x86C DUP3 PUSH2 0x16BF JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x87D PUSH2 0x1711 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x8AF PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x894 SWAP1 PUSH2 0x349E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0xC84 JUMP JUMPDEST DUP3 MLOAD DUP5 MLOAD EQ ISZERO DUP1 PUSH2 0x8C2 JUMPI POP DUP2 MLOAD DUP5 MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x8CF JUMPI POP DUP1 MLOAD DUP5 MLOAD EQ ISZERO JUMPDEST ISZERO PUSH2 0x906 JUMPI PUSH1 0x40 MLOAD PUSH32 0xED882F7100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0xA44 JUMPI PUSH1 0x1 DUP6 MLOAD PUSH2 0x920 SWAP2 SWAP1 PUSH2 0x34ED JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0x9BD JUMPI DUP4 PUSH1 0x1 DUP3 PUSH2 0x935 SWAP2 SWAP1 PUSH2 0x3521 JUMP JUMPDEST DUP2 MLOAD DUP2 LT PUSH2 0x946 JUMPI PUSH2 0x945 PUSH2 0x3555 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x96F JUMPI PUSH2 0x96E PUSH2 0x3555 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x9BC JUMPI PUSH1 0x40 MLOAD PUSH32 0x2245023300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMPDEST PUSH2 0xA31 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x9D3 JUMPI PUSH2 0x9D2 PUSH2 0x3555 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x9EE JUMPI PUSH2 0x9ED PUSH2 0x3555 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xA09 JUMPI PUSH2 0xA08 PUSH2 0x3555 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0xA24 JUMPI PUSH2 0xA23 PUSH2 0x3555 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x1724 JUMP JUMPDEST DUP1 DUP1 PUSH2 0xA3C SWAP1 PUSH2 0x3584 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x909 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0xA78 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xA5D SWAP1 PUSH2 0x349E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0xC84 JUMP JUMPDEST PUSH2 0xA82 DUP3 DUP3 PUSH2 0x17AC JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0xAB3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xA98 SWAP1 PUSH2 0x3618 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0xC84 JUMP JUMPDEST PUSH2 0xABD DUP3 DUP3 PUSH2 0x181C JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xAD1 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xC ADD PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH2 0xB52 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xC ADD PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 POP PUSH1 0x0 PUSH2 0xBB3 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xC ADD PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP1 POP PUSH1 0x0 PUSH2 0xC14 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xC ADD PUSH1 0x0 DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP11 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD SLOAD SWAP1 POP DUP4 DUP4 DUP4 DUP4 SWAP8 POP SWAP8 POP SWAP8 POP SWAP8 POP POP POP POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH2 0xC8D DUP2 PUSH2 0x19AF JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH2 0xC9A PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x9 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCFE PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x4 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH2 0xFFFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0xD8E JUMPI PUSH1 0x40 MLOAD PUSH32 0x7C946ED700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 PUSH2 0xD9A PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x7 ADD DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST DUP1 PUSH2 0xDAD PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xE ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD LT ISZERO PUSH2 0xE63 JUMPI PUSH1 0x40 MLOAD PUSH32 0x96D8043300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0xE6C PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xE ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xEF8 SWAP2 SWAP1 PUSH2 0x34ED JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 PUSH2 0xF08 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xF ADD PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xF57 SWAP2 SWAP1 PUSH2 0x34ED JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB CALLER DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF99 SWAP3 SWAP2 SWAP1 PUSH2 0x3638 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFB8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xFDC SWAP2 SWAP1 PUSH2 0x368D JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0xFEA DUP2 PUSH2 0x147C JUMP JUMPDEST PUSH2 0x1020 JUMPI PUSH1 0x40 MLOAD PUSH32 0x334AE3E600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x23B872DD CALLER ADDRESS DUP5 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1060 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x36BA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x107F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x10A3 SWAP2 SWAP1 PUSH2 0x368D JUMP JUMPDEST POP DUP1 PUSH2 0x10AD PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xE ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1139 SWAP2 SWAP1 PUSH2 0x3521 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 PUSH2 0x1149 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xF ADD PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1198 SWAP2 SWAP1 PUSH2 0x3521 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP JUMP JUMPDEST DUP1 PUSH2 0x11AC PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x8 ADD DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 SWAP1 POP PUSH1 0x0 PUSH2 0x11E7 DUP5 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x19BC SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1214 ADDRESS DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1A50 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x121E PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x8 ADD SLOAD DUP6 DUP3 PUSH2 0x122E SWAP2 SWAP1 PUSH2 0x36F1 JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1246 SWAP2 SWAP1 PUSH2 0x3755 JUMP JUMPDEST DUP3 PUSH2 0x1251 SWAP2 SWAP1 PUSH2 0x3521 JUMP JUMPDEST SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 PUSH2 0x1265 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x6 ADD DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1279 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x6 ADD SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x12A5 DUP6 PUSH2 0x1294 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x0 ADD PUSH2 0x1AE4 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x0 ADD MLOAD DUP2 PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x40 ADD MLOAD SWAP4 POP SWAP4 POP SWAP4 POP POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH2 0x12CC PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x5 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x12E6 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x5 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x130C PUSH2 0x1462 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x137E JUMPI PUSH1 0x0 PUSH2 0x134B PUSH1 0x1 PUSH2 0x1328 PUSH2 0x1462 JUMP JUMPDEST PUSH2 0x1332 SWAP2 SWAP1 PUSH2 0x34ED JUMP JUMPDEST PUSH2 0x133A PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x0 ADD PUSH2 0x1BB0 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x136A DUP2 PUSH2 0x1359 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x0 ADD PUSH2 0x1BDB SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP DUP1 DUP1 PUSH2 0x1376 SWAP1 PUSH2 0x3584 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1311 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x138C PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x8 ADD SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x139F PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xB ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x13EF PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x9 ADD PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH1 0xFF MUL NOT AND SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x144C PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x5 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1477 PUSH2 0x146F PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x0 ADD PUSH2 0x1D74 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1486 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x9 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x14E7 DUP3 DUP3 PUSH1 0x1 PUSH2 0x1D85 JUMP JUMPDEST PUSH2 0x14EF PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xD ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x153E SWAP2 SWAP1 PUSH2 0x3521 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1553 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xF ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15A5 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xE ADD PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1667 SWAP2 SWAP1 PUSH2 0x3797 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1684 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x16A8 SWAP2 SWAP1 PUSH2 0x37C7 JUMP JUMPDEST SWAP1 POP PUSH2 0x16B4 DUP5 DUP5 PUSH2 0x11B6 JUMP JUMPDEST DUP2 GT SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16C9 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xD ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x171B PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x7 ADD SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x172D DUP5 PUSH2 0x1E8B JUMP JUMPDEST DUP3 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND LT ISZERO PUSH2 0x1783 JUMPI PUSH1 0x40 MLOAD PUSH32 0x2245023300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x17A6 DUP2 DUP6 DUP6 DUP6 PUSH2 0x1792 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x0 ADD PUSH2 0x1EE4 SWAP1 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x17B5 DUP3 PUSH2 0x1E8B JUMP JUMPDEST DUP2 PUSH2 0x17BE PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x4 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH2 0xFFFF MUL NOT AND SWAP1 DUP4 PUSH2 0xFFFF AND MUL OR SWAP1 SSTORE POP POP POP JUMP JUMPDEST DUP1 PUSH2 0x1825 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xD ADD PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD LT ISZERO PUSH2 0x189E JUMPI PUSH1 0x40 MLOAD PUSH32 0xF00D49EA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x18A7 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xD ADD PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x18F6 SWAP2 SWAP1 PUSH2 0x34ED JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x23B872DD ADDRESS CALLER DUP5 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x193A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x36BA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1959 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x197D SWAP2 SWAP1 PUSH2 0x368D JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x2F7ED27098ECEFE70183EE38AE4542DEE65215B0786F6870871034402CFE2CC9 SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH2 0x19B9 DUP2 CALLER PUSH2 0x2115 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x19C8 DUP5 PUSH2 0x21B2 JUMP JUMPDEST SWAP2 POP POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x8D997F6E DUP6 DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1A06 SWAP3 SWAP2 SWAP1 PUSH2 0x3862 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1A23 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1A47 SWAP2 SWAP1 PUSH2 0x37C7 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1A5C DUP5 PUSH2 0x21B2 JUMP JUMPDEST SWAP2 POP POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xE8E7E2D1 DUP6 DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1A9A SWAP3 SWAP2 SWAP1 PUSH2 0x388B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1AB7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1ADB SWAP2 SWAP1 PUSH2 0x38C9 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1AEC PUSH2 0x2C2D JUMP JUMPDEST DUP3 PUSH1 0x1 ADD PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH2 0xFFFF AND PUSH2 0xFFFF AND PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP3 ADD PUSH1 0x2 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP3 ADD PUSH1 0xE SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1BC8 JUMPI PUSH2 0x1BC7 PUSH2 0x3555 JUMP JUMPDEST JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 PUSH1 0x3 ADD PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x1D70 JUMPI DUP2 PUSH1 0x3 ADD PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH1 0xFF MUL NOT AND SWAP1 SSTORE DUP2 PUSH1 0x1 ADD PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP1 DUP3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH2 0xFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x0 DUP3 ADD PUSH1 0x2 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x0 DUP3 ADD PUSH1 0xE PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE POP POP PUSH1 0x0 DUP3 PUSH1 0x2 ADD PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP5 PUSH1 0x0 ADD DUP1 SLOAD SWAP1 POP PUSH2 0x1CC3 SWAP2 SWAP1 PUSH2 0x34ED JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP5 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1CDD JUMPI PUSH2 0x1CDC PUSH2 0x3555 JUMP JUMPDEST JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP3 DUP6 PUSH1 0x2 ADD PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP5 PUSH1 0x2 ADD PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SSTORE DUP1 DUP6 PUSH1 0x0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x1D34 JUMPI PUSH2 0x1D33 PUSH2 0x3555 JUMP JUMPDEST JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP2 SWAP1 SSTORE POP DUP5 PUSH1 0x0 ADD DUP1 SLOAD DUP1 PUSH2 0x1D56 JUMPI PUSH2 0x1D55 PUSH2 0x38F6 JUMP JUMPDEST JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE SWAP1 SSTORE POP POP POP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 ADD DUP1 SLOAD SWAP1 POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1D90 PUSH2 0x1982 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0xA ADD PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 POP JUMPDEST DUP8 DUP2 LT ISZERO PUSH2 0x1E7D JUMPI PUSH2 0x1DFD DUP8 DUP3 DUP6 PUSH2 0x1DF8 SWAP2 SWAP1 PUSH2 0x3521 JUMP JUMPDEST PUSH2 0x23F3 JUMP JUMPDEST DUP3 PUSH2 0x1E08 SWAP2 SWAP1 PUSH2 0x3521 JUMP JUMPDEST SWAP2 POP DUP6 ISZERO PUSH2 0x1E6A JUMPI PUSH1 0x1 DUP5 PUSH1 0xA ADD PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1E62 SWAP2 SWAP1 PUSH2 0x3521 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP JUMPDEST DUP1 DUP1 PUSH2 0x1E75 SWAP1 PUSH2 0x3584 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1DE0 JUMP JUMPDEST POP DUP1 SWAP4 POP POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x64 PUSH1 0xFF AND DUP2 PUSH2 0xFFFF AND LT DUP1 PUSH2 0x1EAA JUMPI POP PUSH2 0x2710 PUSH2 0xFFFF AND DUP2 PUSH2 0xFFFF AND GT JUMPDEST ISZERO PUSH2 0x1EE1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x800C7E9100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP5 PUSH1 0x3 ADD PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x1FD2 JUMPI DUP3 DUP6 PUSH1 0x1 ADD PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH2 0xFFFF MUL NOT AND SWAP1 DUP4 PUSH2 0xFFFF AND MUL OR SWAP1 SSTORE POP DUP2 DUP6 PUSH1 0x1 ADD PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x2 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 DUP6 PUSH1 0x1 ADD PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0xE PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x210E JUMP JUMPDEST PUSH1 0x1 DUP6 PUSH1 0x3 ADD PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP3 DUP6 PUSH1 0x1 ADD PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH2 0xFFFF MUL NOT AND SWAP1 DUP4 PUSH2 0xFFFF AND MUL OR SWAP1 SSTORE POP DUP2 DUP6 PUSH1 0x1 ADD PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x2 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 DUP6 PUSH1 0x1 ADD PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0xE PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP5 PUSH1 0x0 ADD DUP1 SLOAD SWAP1 POP DUP6 PUSH1 0x2 ADD PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP5 PUSH1 0x0 ADD DUP5 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 POP SSTORE JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x211F DUP3 DUP3 PUSH2 0x257A JUMP JUMPDEST PUSH2 0x21AE JUMPI PUSH2 0x2144 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x14 PUSH2 0x25EE JUMP JUMPDEST PUSH2 0x2152 DUP4 PUSH1 0x0 SHR PUSH1 0x20 PUSH2 0x25EE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2163 SWAP3 SWAP2 SWAP1 PUSH2 0x3A2E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x21A5 SWAP2 SWAP1 PUSH2 0x3AA1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x65599BF746E17A00EA62E3610586992D88101B78EEC3CF380706621FB97EA837 SLOAD SWAP2 POP PUSH32 0xB969D79D88ACD02D04ED7EE7D43B949E7DAF093D363ABCFBBC43DFDFD1CE969A SLOAD SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x2374 JUMPI PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x22D7 JUMPI DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x20BC4425 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x22B0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x22D4 SWAP2 SWAP1 PUSH2 0x3AD8 JUMP JUMPDEST SWAP2 POP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xB6D200DE PUSH32 0xA9214CC96615E0085D3BB077758DB69497DC2DCE3B2B1E97BC93C3D18D83EFD3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2330 SWAP2 SWAP1 PUSH2 0x3B57 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x234D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2371 SWAP2 SWAP1 PUSH2 0x3BB0 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x23B1 JUMPI PUSH2 0x23B0 PUSH2 0x3BDD JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x23EE JUMPI PUSH2 0x23ED PUSH2 0x3BDD JUMP JUMPDEST JUMPDEST SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x23FE PUSH2 0x1982 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0xC ADD PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0xC ADD PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD SLOAD SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x24C3 DUP10 DUP10 PUSH2 0x282A JUMP JUMPDEST SWAP4 POP POP SWAP3 POP SWAP3 POP PUSH1 0x0 DUP4 DUP4 PUSH2 0x24D8 SWAP2 SWAP1 PUSH2 0x3C0C JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 DUP6 EQ PUSH2 0x2515 JUMPI DUP6 DUP6 PUSH2 0x24FC SWAP2 SWAP1 PUSH2 0x34ED JUMP JUMPDEST DUP2 PUSH2 0x2507 SWAP2 SWAP1 PUSH2 0x3755 JUMP JUMPDEST SWAP8 POP POP POP POP POP POP POP POP PUSH2 0x2574 JUMP JUMPDEST PUSH1 0x0 DUP3 EQ PUSH2 0x2542 JUMPI DUP6 DUP3 PUSH2 0x2529 SWAP2 SWAP1 PUSH2 0x34ED JUMP JUMPDEST DUP2 PUSH2 0x2534 SWAP2 SWAP1 PUSH2 0x3755 JUMP JUMPDEST SWAP8 POP POP POP POP POP POP POP POP PUSH2 0x2574 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xAE1C061F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2584 PUSH2 0x292F JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x2 DUP4 PUSH1 0x2 PUSH2 0x2601 SWAP2 SWAP1 PUSH2 0x3755 JUMP JUMPDEST PUSH2 0x260B SWAP2 SWAP1 PUSH2 0x3521 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2624 JUMPI PUSH2 0x2623 PUSH2 0x3009 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2656 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x268E JUMPI PUSH2 0x268D PUSH2 0x3555 JUMP JUMPDEST JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH32 0x7800000000000000000000000000000000000000000000000000000000000000 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x26F2 JUMPI PUSH2 0x26F1 PUSH2 0x3555 JUMP JUMPDEST JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x0 PUSH1 0x1 DUP5 PUSH1 0x2 PUSH2 0x2732 SWAP2 SWAP1 PUSH2 0x3755 JUMP JUMPDEST PUSH2 0x273C SWAP2 SWAP1 PUSH2 0x3521 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x27DC JUMPI PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 PUSH1 0xF DUP7 AND PUSH1 0x10 DUP2 LT PUSH2 0x277E JUMPI PUSH2 0x277D PUSH2 0x3555 JUMP JUMPDEST JUMPDEST BYTE PUSH1 0xF8 SHL DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2795 JUMPI PUSH2 0x2794 PUSH2 0x3555 JUMP JUMPDEST JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x4 DUP6 SWAP1 SHR SWAP5 POP DUP1 PUSH2 0x27D5 SWAP1 PUSH2 0x3C4C JUMP JUMPDEST SWAP1 POP PUSH2 0x273F JUMP JUMPDEST POP PUSH1 0x0 DUP5 EQ PUSH2 0x2820 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2817 SWAP1 PUSH2 0x3CC1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x283A PUSH2 0x1982 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0xC ADD PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0xC ADD PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 POP PUSH2 0x291B DUP3 DUP11 DUP4 PUSH2 0x295C JUMP JUMPDEST SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP POP POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x4CD15452B25E815D3F9D1A3C7EDD985A178EDF5EB3461A1ACBF855517423D694 SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x296A PUSH2 0x2C00 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xB SIGNEXTEND PUSH2 0x2A11 PUSH2 0x2C00 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0xC SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2AC3 PUSH2 0x2C00 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0x2B5D PUSH2 0x2C00 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x9CD9AFE22FEA86221D6E8117226B65BB0E2AF8C4F5B8ABF255FB0AFCAD4A3A9C SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2CAD DUP3 PUSH2 0x2C82 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2CBD DUP2 PUSH2 0x2CA2 JUMP JUMPDEST DUP2 EQ PUSH2 0x2CC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x2CDA DUP2 PUSH2 0x2CB4 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2CF3 DUP2 PUSH2 0x2CE0 JUMP JUMPDEST DUP2 EQ PUSH2 0x2CFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x2D10 DUP2 PUSH2 0x2CEA JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2D2D JUMPI PUSH2 0x2D2C PUSH2 0x2C78 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2D3B DUP6 DUP3 DUP7 ADD PUSH2 0x2CCB JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x2D4C DUP6 DUP3 DUP7 ADD PUSH2 0x2D01 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x2D5F DUP2 PUSH2 0x2CA2 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x2D6E DUP2 PUSH2 0x2CE0 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x2D89 PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x2D56 JUMP JUMPDEST PUSH2 0x2D96 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x2D65 JUMP JUMPDEST PUSH2 0x2DA3 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x2D65 JUMP JUMPDEST PUSH2 0x2DB0 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x2D65 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2DCF JUMPI PUSH2 0x2DCE PUSH2 0x2C78 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2DDD DUP5 DUP3 DUP6 ADD PUSH2 0x2CCB JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2DFD DUP2 PUSH2 0x2DE6 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2E18 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2DF4 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2E34 JUMPI PUSH2 0x2E33 PUSH2 0x2C78 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2E42 DUP5 DUP3 DUP6 ADD PUSH2 0x2D01 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0xB SIGNEXTEND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2E61 DUP2 PUSH2 0x2E4B JUMP JUMPDEST DUP2 EQ PUSH2 0x2E6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x2E7E DUP2 PUSH2 0x2E58 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2E9B JUMPI PUSH2 0x2E9A PUSH2 0x2C78 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2EA9 DUP6 DUP3 DUP7 ADD PUSH2 0x2CCB JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x2EBA DUP6 DUP3 DUP7 ADD PUSH2 0x2E6F JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2ED9 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2D65 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2F00 DUP2 PUSH2 0x2EDF JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x2F1B PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x2DF4 JUMP JUMPDEST PUSH2 0x2F28 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x2EF7 JUMP JUMPDEST PUSH2 0x2F35 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x2EF7 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2F52 DUP2 PUSH2 0x2F3D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2F6D PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2F49 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2F8A JUMPI PUSH2 0x2F89 PUSH2 0x2C78 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2F98 DUP6 DUP3 DUP7 ADD PUSH2 0x2D01 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x2FA9 DUP6 DUP3 DUP7 ADD PUSH2 0x2CCB JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2FCA JUMPI PUSH2 0x2FC9 PUSH2 0x2C78 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2FD8 DUP6 DUP3 DUP7 ADD PUSH2 0x2CCB JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x2FE9 DUP6 DUP3 DUP7 ADD PUSH2 0x2CCB JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x3041 DUP3 PUSH2 0x2FF8 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x3060 JUMPI PUSH2 0x305F PUSH2 0x3009 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3073 PUSH2 0x2C6E JUMP JUMPDEST SWAP1 POP PUSH2 0x307F DUP3 DUP3 PUSH2 0x3038 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x309F JUMPI PUSH2 0x309E PUSH2 0x3009 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x30BE DUP2 PUSH2 0x2DE6 JUMP JUMPDEST DUP2 EQ PUSH2 0x30C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x30DB DUP2 PUSH2 0x30B5 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x30F4 PUSH2 0x30EF DUP5 PUSH2 0x3084 JUMP JUMPDEST PUSH2 0x3069 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x3117 JUMPI PUSH2 0x3116 PUSH2 0x30B0 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3140 JUMPI DUP1 PUSH2 0x312C DUP9 DUP3 PUSH2 0x30CC JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x3119 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x315F JUMPI PUSH2 0x315E PUSH2 0x2FF3 JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x316F DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x30E1 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x3193 JUMPI PUSH2 0x3192 PUSH2 0x3009 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x31AD DUP2 PUSH2 0x2EDF JUMP JUMPDEST DUP2 EQ PUSH2 0x31B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x31CA DUP2 PUSH2 0x31A4 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x31E3 PUSH2 0x31DE DUP5 PUSH2 0x3178 JUMP JUMPDEST PUSH2 0x3069 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x3206 JUMPI PUSH2 0x3205 PUSH2 0x30B0 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x322F JUMPI DUP1 PUSH2 0x321B DUP9 DUP3 PUSH2 0x31BB JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x3208 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x324E JUMPI PUSH2 0x324D PUSH2 0x2FF3 JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x325E DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x31D0 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x3282 JUMPI PUSH2 0x3281 PUSH2 0x3009 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x32A6 PUSH2 0x32A1 DUP5 PUSH2 0x3267 JUMP JUMPDEST PUSH2 0x3069 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x32C9 JUMPI PUSH2 0x32C8 PUSH2 0x30B0 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x32F2 JUMPI DUP1 PUSH2 0x32DE DUP9 DUP3 PUSH2 0x2D01 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x32CB JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3311 JUMPI PUSH2 0x3310 PUSH2 0x2FF3 JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3321 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x3293 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3344 JUMPI PUSH2 0x3343 PUSH2 0x2C78 JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3362 JUMPI PUSH2 0x3361 PUSH2 0x2C7D JUMP JUMPDEST JUMPDEST PUSH2 0x336E DUP8 DUP3 DUP9 ADD PUSH2 0x314A JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x338F JUMPI PUSH2 0x338E PUSH2 0x2C7D JUMP JUMPDEST JUMPDEST PUSH2 0x339B DUP8 DUP3 DUP9 ADD PUSH2 0x3239 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x33BC JUMPI PUSH2 0x33BB PUSH2 0x2C7D JUMP JUMPDEST JUMPDEST PUSH2 0x33C8 DUP8 DUP3 DUP9 ADD PUSH2 0x3239 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x33E9 JUMPI PUSH2 0x33E8 PUSH2 0x2C7D JUMP JUMPDEST JUMPDEST PUSH2 0x33F5 DUP8 DUP3 DUP9 ADD PUSH2 0x32FC JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3418 JUMPI PUSH2 0x3417 PUSH2 0x2C78 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x3426 DUP6 DUP3 DUP7 ADD PUSH2 0x30CC JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x3437 DUP6 DUP3 DUP7 ADD PUSH2 0x2CCB JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x535452415445474953545F524F4C450000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3488 PUSH1 0xF DUP4 PUSH2 0x3441 JUMP JUMPDEST SWAP2 POP PUSH2 0x3493 DUP3 PUSH2 0x3452 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x34B7 DUP2 PUSH2 0x347B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x34F8 DUP3 PUSH2 0x2CE0 JUMP JUMPDEST SWAP2 POP PUSH2 0x3503 DUP4 PUSH2 0x2CE0 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP DUP2 DUP2 GT ISZERO PUSH2 0x351B JUMPI PUSH2 0x351A PUSH2 0x34BE JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x352C DUP3 PUSH2 0x2CE0 JUMP JUMPDEST SWAP2 POP PUSH2 0x3537 DUP4 PUSH2 0x2CE0 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x354F JUMPI PUSH2 0x354E PUSH2 0x34BE JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x358F DUP3 PUSH2 0x2CE0 JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x35C1 JUMPI PUSH2 0x35C0 PUSH2 0x34BE JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x5452454153555245525F524F4C45000000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3602 PUSH1 0xE DUP4 PUSH2 0x3441 JUMP JUMPDEST SWAP2 POP PUSH2 0x360D DUP3 PUSH2 0x35CC JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3631 DUP2 PUSH2 0x35F5 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x364D PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x2D56 JUMP JUMPDEST PUSH2 0x365A PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2D65 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x366A DUP2 PUSH2 0x2F3D JUMP JUMPDEST DUP2 EQ PUSH2 0x3675 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x3687 DUP2 PUSH2 0x3661 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x36A3 JUMPI PUSH2 0x36A2 PUSH2 0x2C78 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x36B1 DUP5 DUP3 DUP6 ADD PUSH2 0x3678 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x36CF PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x2D56 JUMP JUMPDEST PUSH2 0x36DC PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x2D56 JUMP JUMPDEST PUSH2 0x36E9 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x2D65 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x36FC DUP3 PUSH2 0x2E4B JUMP JUMPDEST SWAP2 POP PUSH2 0x3707 DUP4 PUSH2 0x2E4B JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800000000000000000000000 DUP2 SLT PUSH12 0x7FFFFFFFFFFFFFFFFFFFFFFF DUP3 SGT OR ISZERO PUSH2 0x374F JUMPI PUSH2 0x374E PUSH2 0x34BE JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3760 DUP3 PUSH2 0x2CE0 JUMP JUMPDEST SWAP2 POP PUSH2 0x376B DUP4 PUSH2 0x2CE0 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 MUL PUSH2 0x3779 DUP2 PUSH2 0x2CE0 JUMP JUMPDEST SWAP2 POP DUP3 DUP3 DIV DUP5 EQ DUP4 ISZERO OR PUSH2 0x3790 JUMPI PUSH2 0x378F PUSH2 0x34BE JUMP JUMPDEST JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x37AC PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2D56 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x37C1 DUP2 PUSH2 0x2CEA JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x37DD JUMPI PUSH2 0x37DC PUSH2 0x2C78 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x37EB DUP5 DUP3 DUP6 ADD PUSH2 0x37B2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3819 PUSH2 0x3814 PUSH2 0x380F DUP5 PUSH2 0x2C82 JUMP JUMPDEST PUSH2 0x37F4 JUMP JUMPDEST PUSH2 0x2C82 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x382B DUP3 PUSH2 0x37FE JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x383D DUP3 PUSH2 0x3820 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x384D DUP2 PUSH2 0x3832 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x385C DUP2 PUSH2 0x2E4B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x3877 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x3844 JUMP JUMPDEST PUSH2 0x3884 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3853 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x38A0 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x3844 JUMP JUMPDEST PUSH2 0x38AD PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2D56 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x38C3 DUP2 PUSH2 0x2E58 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x38DF JUMPI PUSH2 0x38DE PUSH2 0x2C78 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x38ED DUP5 DUP3 DUP6 ADD PUSH2 0x38B4 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x416363657373436F6E74726F6C3A206163636F756E7420000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3966 PUSH1 0x17 DUP4 PUSH2 0x3925 JUMP JUMPDEST SWAP2 POP PUSH2 0x3971 DUP3 PUSH2 0x3930 JUMP JUMPDEST PUSH1 0x17 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x39A5 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x398A JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x39BC DUP3 PUSH2 0x397C JUMP JUMPDEST PUSH2 0x39C6 DUP2 DUP6 PUSH2 0x3925 JUMP JUMPDEST SWAP4 POP PUSH2 0x39D6 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x3987 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x206973206D697373696E6720726F6C6520000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A18 PUSH1 0x11 DUP4 PUSH2 0x3925 JUMP JUMPDEST SWAP2 POP PUSH2 0x3A23 DUP3 PUSH2 0x39E2 JUMP JUMPDEST PUSH1 0x11 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A39 DUP3 PUSH2 0x3959 JUMP JUMPDEST SWAP2 POP PUSH2 0x3A45 DUP3 DUP6 PUSH2 0x39B1 JUMP JUMPDEST SWAP2 POP PUSH2 0x3A50 DUP3 PUSH2 0x3A0B JUMP JUMPDEST SWAP2 POP PUSH2 0x3A5C DUP3 DUP5 PUSH2 0x39B1 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A73 DUP3 PUSH2 0x397C JUMP JUMPDEST PUSH2 0x3A7D DUP2 DUP6 PUSH2 0x3441 JUMP JUMPDEST SWAP4 POP PUSH2 0x3A8D DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x3987 JUMP JUMPDEST PUSH2 0x3A96 DUP2 PUSH2 0x2FF8 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3ABB DUP2 DUP5 PUSH2 0x3A68 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x3AD2 DUP2 PUSH2 0x2CB4 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3AEE JUMPI PUSH2 0x3AED PUSH2 0x2C78 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x3AFC DUP5 DUP3 DUP6 ADD PUSH2 0x3AC3 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 SHL SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B41 PUSH2 0x3B3C PUSH2 0x3B37 DUP5 PUSH2 0x3B05 JUMP JUMPDEST PUSH2 0x3B19 JUMP JUMPDEST PUSH2 0x3B0F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3B51 DUP2 PUSH2 0x3B26 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x3B6C PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x3B48 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B7D DUP3 PUSH2 0x2CA2 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3B8D DUP2 PUSH2 0x3B72 JUMP JUMPDEST DUP2 EQ PUSH2 0x3B98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x3BAA DUP2 PUSH2 0x3B84 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3BC6 JUMPI PUSH2 0x3BC5 PUSH2 0x2C78 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x3BD4 DUP5 DUP3 DUP6 ADD PUSH2 0x3B9B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3C17 DUP3 PUSH2 0x2EDF JUMP JUMPDEST SWAP2 POP PUSH2 0x3C22 DUP4 PUSH2 0x2EDF JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3C46 JUMPI PUSH2 0x3C45 PUSH2 0x34BE JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C57 DUP3 PUSH2 0x2CE0 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 DUP3 SUB PUSH2 0x3C6A JUMPI PUSH2 0x3C69 PUSH2 0x34BE JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 SUB SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x537472696E67733A20686578206C656E67746820696E73756666696369656E74 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3CAB PUSH1 0x20 DUP4 PUSH2 0x3441 JUMP JUMPDEST SWAP2 POP PUSH2 0x3CB6 DUP3 PUSH2 0x3C75 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3CDA DUP2 PUSH2 0x3C9E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF9 AND 0xC5 0xDB 0xCC CREATE2 0xCE 0xCA DUP7 EQ DUP8 0xC0 0x5E LOG2 0xE4 DUP12 DUP3 0xBB 0xE GASPRICE 0xE4 PUSH16 0x943844BA41385030217464736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"391:6696:26:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_addSuperToken_12852":{"entryPoint":3216,"id":12852,"parameterSlots":1,"returnSlots":0},"@_calculateAmountFee_12726":{"entryPoint":9203,"id":12726,"parameterSlots":2,"returnSlots":1},"@_checkRole_15290":{"entryPoint":6575,"id":15290,"parameterSlots":1,"returnSlots":0},"@_checkRole_15332":{"entryPoint":8469,"id":15332,"parameterSlots":2,"returnSlots":0},"@_clearBPS_12918":{"entryPoint":4866,"id":12918,"parameterSlots":0,"returnSlots":0},"@_depositAsset_12470":{"entryPoint":4131,"id":12470,"parameterSlots":2,"returnSlots":0},"@_getAppFeeBalance_12641":{"entryPoint":7557,"id":12641,"parameterSlots":3,"returnSlots":1},"@_getAssetTotal_13306":{"entryPoint":5449,"id":13306,"parameterSlots":1,"returnSlots":1},"@_getAssetUser_13292":{"entryPoint":5531,"id":13292,"parameterSlots":2,"returnSlots":1},"@_getBPSData_13180":{"entryPoint":4738,"id":13180,"parameterSlots":1,"returnSlots":3},"@_getBPSSize_13117":{"entryPoint":5218,"id":13117,"parameterSlots":0,"returnSlots":1},"@_getControlData_13051":{"entryPoint":2753,"id":13051,"parameterSlots":2,"returnSlots":4},"@_getFeeBalance_12985":{"entryPoint":5823,"id":12985,"parameterSlots":1,"returnSlots":1},"@_getHostAndCFA_5062":{"entryPoint":8626,"id":5062,"parameterSlots":1,"returnSlots":2},"@_getMinimumEndDuration_13061":{"entryPoint":4719,"id":13061,"parameterSlots":0,"returnSlots":1},"@_getMinimumLifespan_13071":{"entryPoint":5905,"id":13071,"parameterSlots":0,"returnSlots":1},"@_getNewBufferedAppBalance_13245":{"entryPoint":4534,"id":13245,"parameterSlots":2,"returnSlots":1},"@_getNewNonce_12802":{"entryPoint":5013,"id":12802,"parameterSlots":1,"returnSlots":1},"@_getSBPS_13194":{"entryPoint":3316,"id":13194,"parameterSlots":1,"returnSlots":1},"@_getSTBufferDurationInSecond_13081":{"entryPoint":4994,"id":13081,"parameterSlots":0,"returnSlots":1},"@_getSessionDataFromControl_14922":{"entryPoint":10282,"id":14922,"parameterSlots":2,"returnSlots":4},"@_getSessionData_14814":{"entryPoint":10588,"id":14814,"parameterSlots":3,"returnSlots":4},"@_hasRole_15278":{"entryPoint":9594,"id":15278,"parameterSlots":2,"returnSlots":1},"@_isBPSEnabled_13105":{"entryPoint":5186,"id":13105,"parameterSlots":0,"returnSlots":1},"@_isNewFlowRateAllowed_13274":{"entryPoint":5675,"id":13274,"parameterSlots":2,"returnSlots":1},"@_isSuperTokensSupported_13095":{"entryPoint":5244,"id":13095,"parameterSlots":1,"returnSlots":1},"@_realizeFeeBalance_12580":{"entryPoint":5339,"id":12580,"parameterSlots":2,"returnSlots":0},"@_removeSuperToken_12865":{"entryPoint":5095,"id":12865,"parameterSlots":1,"returnSlots":0},"@_requireNonZeroValue_12739":{"entryPoint":3412,"id":12739,"parameterSlots":1,"returnSlots":0},"@_requireOnlyRole_15259":{"entryPoint":3204,"id":15259,"parameterSlots":1,"returnSlots":0},"@_requireSuperTokenSupported_12753":{"entryPoint":4065,"id":12753,"parameterSlots":1,"returnSlots":0},"@_requireValidBasisPoints_12788":{"entryPoint":7819,"id":12788,"parameterSlots":1,"returnSlots":0},"@_setBPS_12951":{"entryPoint":5924,"id":12951,"parameterSlots":4,"returnSlots":0},"@_setMinimumEndDuration_12814":{"entryPoint":4700,"id":12814,"parameterSlots":1,"returnSlots":0},"@_setMinimumLifespan_12826":{"entryPoint":3473,"id":12826,"parameterSlots":1,"returnSlots":0},"@_setSBPS_12971":{"entryPoint":6060,"id":12971,"parameterSlots":2,"returnSlots":0},"@_setSTBufferAmount_12838":{"entryPoint":4515,"id":12838,"parameterSlots":1,"returnSlots":0},"@_storageAccessControl_15249":{"entryPoint":10543,"id":15249,"parameterSlots":0,"returnSlots":1},"@_storageControl_12430":{"entryPoint":6530,"id":12430,"parameterSlots":0,"returnSlots":1},"@_storageSession_14396":{"entryPoint":11264,"id":14396,"parameterSlots":0,"returnSlots":1},"@_toggleBPS_12878":{"entryPoint":4804,"id":12878,"parameterSlots":0,"returnSlots":0},"@_withdrawAsset_12520":{"entryPoint":3492,"id":12520,"parameterSlots":2,"returnSlots":0},"@_withdrawFeeBalance_12560":{"entryPoint":6172,"id":12560,"parameterSlots":2,"returnSlots":0},"@addSuperToken_9557":{"entryPoint":1453,"id":9557,"parameterSlots":1,"returnSlots":0},"@clearBPS_9608":{"entryPoint":1880,"id":9608,"parameterSlots":0,"returnSlots":0},"@depositAsset_9410":{"entryPoint":1608,"id":9410,"parameterSlots":2,"returnSlots":0},"@getAssetTotal_9928":{"entryPoint":2087,"id":9928,"parameterSlots":1,"returnSlots":1},"@getAssetUser_9915":{"entryPoint":2105,"id":9915,"parameterSlots":2,"returnSlots":1},"@getBPSData_9854":{"entryPoint":1798,"id":9854,"parameterSlots":1,"returnSlots":3},"@getBPSSize_9837":{"entryPoint":2040,"id":9837,"parameterSlots":0,"returnSlots":1},"@getBufferAmountByFlowRate_3395":{"entryPoint":6588,"id":3395,"parameterSlots":2,"returnSlots":1},"@getControlData_9761":{"entryPoint":1420,"id":9761,"parameterSlots":2,"returnSlots":4},"@getFeeBalance_9739":{"entryPoint":2145,"id":9739,"parameterSlots":1,"returnSlots":1},"@getKeyAtIndex_14985":{"entryPoint":7088,"id":14985,"parameterSlots":2,"returnSlots":1},"@getMinimumEndDuration_9784":{"entryPoint":1783,"id":9784,"parameterSlots":0,"returnSlots":1},"@getMinimumLifespan_9794":{"entryPoint":2163,"id":9794,"parameterSlots":0,"returnSlots":1},"@getNetFlowRate_3339":{"entryPoint":6736,"id":3339,"parameterSlots":2,"returnSlots":1},"@getNewBufferedAppBalance_9883":{"entryPoint":1697,"id":9883,"parameterSlots":2,"returnSlots":1},"@getNewControlNonce_9774":{"entryPoint":1950,"id":9774,"parameterSlots":1,"returnSlots":1},"@getSBPS_9867":{"entryPoint":1510,"id":9867,"parameterSlots":1,"returnSlots":1},"@getSTBufferDurationInSecond_9804":{"entryPoint":1935,"id":9804,"parameterSlots":0,"returnSlots":1},"@get_14969":{"entryPoint":6884,"id":14969,"parameterSlots":2,"returnSlots":1},"@isBPSEnabled_9827":{"entryPoint":2025,"id":9827,"parameterSlots":0,"returnSlots":1},"@isNewFlowRateAllowed_9899":{"entryPoint":2125,"id":9899,"parameterSlots":2,"returnSlots":1},"@isSuperTokensSupported_9817":{"entryPoint":2055,"id":9817,"parameterSlots":1,"returnSlots":1},"@realizeFeeBalance_9463":{"entryPoint":2073,"id":9463,"parameterSlots":2,"returnSlots":0},"@removeSuperToken_9576":{"entryPoint":1968,"id":9576,"parameterSlots":1,"returnSlots":0},"@remove_15180":{"entryPoint":7131,"id":15180,"parameterSlots":2,"returnSlots":0},"@setBPS_9704":{"entryPoint":2178,"id":9704,"parameterSlots":4,"returnSlots":0},"@setMinimumEndDuration_9488":{"entryPoint":1717,"id":9488,"parameterSlots":1,"returnSlots":0},"@setMinimumLifespan_9513":{"entryPoint":1528,"id":9513,"parameterSlots":1,"returnSlots":0},"@setSBPS_9726":{"entryPoint":2635,"id":9726,"parameterSlots":2,"returnSlots":0},"@setSTBufferAmount_9538":{"entryPoint":1631,"id":9538,"parameterSlots":1,"returnSlots":0},"@set_15100":{"entryPoint":7908,"id":15100,"parameterSlots":5,"returnSlots":0},"@size_14998":{"entryPoint":7540,"id":14998,"parameterSlots":1,"returnSlots":1},"@toHexString_1109":{"entryPoint":9710,"id":1109,"parameterSlots":2,"returnSlots":1},"@toggleBPS_9592":{"entryPoint":1825,"id":9592,"parameterSlots":0,"returnSlots":0},"@withdrawAsset_9425":{"entryPoint":1594,"id":9425,"parameterSlots":2,"returnSlots":0},"@withdrawFeeBalance_9447":{"entryPoint":2694,"id":9447,"parameterSlots":2,"returnSlots":0},"abi_decode_available_length_t_array$_t_uint16_$dyn_memory_ptr":{"entryPoint":12513,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr":{"entryPoint":12947,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_available_length_t_array$_t_uint96_$dyn_memory_ptr":{"entryPoint":12752,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_t_address":{"entryPoint":11467,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_address_fromMemory":{"entryPoint":15043,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_array$_t_uint16_$dyn_memory_ptr":{"entryPoint":12618,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_array$_t_uint256_$dyn_memory_ptr":{"entryPoint":13052,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_array$_t_uint96_$dyn_memory_ptr":{"entryPoint":12857,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bool_fromMemory":{"entryPoint":13944,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_contract$_ISuperAgreement_$6463_fromMemory":{"entryPoint":15259,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_int96":{"entryPoint":11887,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_int96_fromMemory":{"entryPoint":14516,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint16":{"entryPoint":12492,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint256":{"entryPoint":11521,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint256_fromMemory":{"entryPoint":14258,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint96":{"entryPoint":12731,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":11705,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":15064,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":12211,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_int96":{"entryPoint":11908,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":11542,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_array$_t_uint16_$dyn_memory_ptrt_array$_t_uint96_$dyn_memory_ptrt_array$_t_uint96_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr":{"entryPoint":13098,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_bool_fromMemory":{"entryPoint":13965,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_ISuperAgreement_$6463_fromMemory":{"entryPoint":15280,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_int96_fromMemory":{"entryPoint":14537,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint16t_address":{"entryPoint":13313,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_uint256":{"entryPoint":11806,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256_fromMemory":{"entryPoint":14279,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256t_address":{"entryPoint":12147,"id":null,"parameterSlots":2,"returnSlots":2},"abi_encode_t_address_to_t_address_fromStack":{"entryPoint":11606,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bool_to_t_bool_fromStack":{"entryPoint":12105,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_contract$_ISuperToken_$7015_to_t_address_fromStack":{"entryPoint":14404,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_int96_to_t_int96_fromStack":{"entryPoint":14419,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1_to_t_bytes32_fromStack":{"entryPoint":15176,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack":{"entryPoint":14952,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":14769,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2_to_t_string_memory_ptr_fromStack":{"entryPoint":15518,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_17a8e30262c1f919c33056d877a3c22b95c2f5e4dac44683c1c2323cd79fbdb0_to_t_string_memory_ptr_fromStack":{"entryPoint":13435,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07_to_t_string_memory_ptr_fromStack":{"entryPoint":13813,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_to_t_string_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":14681,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_to_t_string_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":14859,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_uint16_to_t_uint16_fromStack":{"entryPoint":11764,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_uint256_to_t_uint256_fromStack":{"entryPoint":11621,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_uint96_to_t_uint96_fromStack":{"entryPoint":12023,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_tuple_packed_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_t_string_memory_ptr_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":14894,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":14231,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed":{"entryPoint":14010,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed":{"entryPoint":13880,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address_t_uint256_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":11636,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":12120,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_ISuperToken_$7015_t_address__to_t_address_t_address__fromStack_reversed":{"entryPoint":14475,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_contract$_ISuperToken_$7015_t_int96__to_t_address_t_int96__fromStack_reversed":{"entryPoint":14434,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1__to_t_bytes32__fromStack_reversed":{"entryPoint":15191,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":15009,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":15553,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_17a8e30262c1f919c33056d877a3c22b95c2f5e4dac44683c1c2323cd79fbdb0__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":13470,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":13848,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint16__to_t_uint16__fromStack_reversed":{"entryPoint":11779,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint16_t_uint96_t_uint96__to_t_uint16_t_uint96_t_uint96__fromStack_reversed":{"entryPoint":12038,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":11972,"id":null,"parameterSlots":2,"returnSlots":1},"allocate_memory":{"entryPoint":12393,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":11374,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_t_array$_t_uint16_$dyn_memory_ptr":{"entryPoint":12420,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr":{"entryPoint":12903,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_t_array$_t_uint96_$dyn_memory_ptr":{"entryPoint":12664,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_string_memory_ptr":{"entryPoint":14716,"id":null,"parameterSlots":1,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_fromStack":{"entryPoint":13377,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":14629,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_int96":{"entryPoint":14065,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":13601,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_t_uint256":{"entryPoint":14165,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":13549,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint96":{"entryPoint":15372,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_t_address":{"entryPoint":11426,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_bool":{"entryPoint":12093,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_bytes32":{"entryPoint":15119,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_contract$_ISuperAgreement_$6463":{"entryPoint":15218,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_int96":{"entryPoint":11851,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1":{"entryPoint":15109,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint16":{"entryPoint":11750,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint160":{"entryPoint":11394,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint256":{"entryPoint":11488,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint96":{"entryPoint":11999,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_contract$_ISuperToken_$7015_to_t_address":{"entryPoint":14386,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1_to_t_bytes32":{"entryPoint":15142,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_uint160_to_t_address":{"entryPoint":14368,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_uint160_to_t_uint160":{"entryPoint":14334,"id":null,"parameterSlots":1,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":14727,"id":null,"parameterSlots":3,"returnSlots":0},"decrement_t_uint256":{"entryPoint":15436,"id":null,"parameterSlots":1,"returnSlots":1},"finalize_allocation":{"entryPoint":12344,"id":null,"parameterSlots":2,"returnSlots":0},"identity":{"entryPoint":14324,"id":null,"parameterSlots":1,"returnSlots":1},"increment_t_uint256":{"entryPoint":13700,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x01":{"entryPoint":15325,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x11":{"entryPoint":13502,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x31":{"entryPoint":14582,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":13653,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":12297,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":12275,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef":{"entryPoint":12464,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":11389,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":11384,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of_32":{"entryPoint":12280,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_0":{"entryPoint":15129,"id":null,"parameterSlots":1,"returnSlots":1},"store_literal_in_memory_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2":{"entryPoint":15477,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_17a8e30262c1f919c33056d877a3c22b95c2f5e4dac44683c1c2323cd79fbdb0":{"entryPoint":13394,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07":{"entryPoint":13772,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874":{"entryPoint":14640,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69":{"entryPoint":14818,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_address":{"entryPoint":11444,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_bool":{"entryPoint":13921,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_contract$_ISuperAgreement_$6463":{"entryPoint":15236,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_int96":{"entryPoint":11864,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_uint16":{"entryPoint":12469,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_uint256":{"entryPoint":11498,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_uint96":{"entryPoint":12708,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:30939:61","statements":[{"body":{"nodeType":"YulBlock","src":"47:35:61","statements":[{"nodeType":"YulAssignment","src":"57:19:61","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"73:2:61","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"67:5:61"},"nodeType":"YulFunctionCall","src":"67:9:61"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"57:6:61"}]}]},"name":"allocate_unbounded","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"40:6:61","type":""}],"src":"7:75:61"},{"body":{"nodeType":"YulBlock","src":"177:28:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"194:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"197:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"187:6:61"},"nodeType":"YulFunctionCall","src":"187:12:61"},"nodeType":"YulExpressionStatement","src":"187:12:61"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulFunctionDefinition","src":"88:117:61"},{"body":{"nodeType":"YulBlock","src":"300:28:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"317:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"320:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"310:6:61"},"nodeType":"YulFunctionCall","src":"310:12:61"},"nodeType":"YulExpressionStatement","src":"310:12:61"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulFunctionDefinition","src":"211:117:61"},{"body":{"nodeType":"YulBlock","src":"379:81:61","statements":[{"nodeType":"YulAssignment","src":"389:65:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"404:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"411:42:61","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"400:3:61"},"nodeType":"YulFunctionCall","src":"400:54:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"389:7:61"}]}]},"name":"cleanup_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"361:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"371:7:61","type":""}],"src":"334:126:61"},{"body":{"nodeType":"YulBlock","src":"511:51:61","statements":[{"nodeType":"YulAssignment","src":"521:35:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"550:5:61"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"532:17:61"},"nodeType":"YulFunctionCall","src":"532:24:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"521:7:61"}]}]},"name":"cleanup_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"493:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"503:7:61","type":""}],"src":"466:96:61"},{"body":{"nodeType":"YulBlock","src":"611:79:61","statements":[{"body":{"nodeType":"YulBlock","src":"668:16:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"677:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"680:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"670:6:61"},"nodeType":"YulFunctionCall","src":"670:12:61"},"nodeType":"YulExpressionStatement","src":"670:12:61"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"634:5:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"659:5:61"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"641:17:61"},"nodeType":"YulFunctionCall","src":"641:24:61"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"631:2:61"},"nodeType":"YulFunctionCall","src":"631:35:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"624:6:61"},"nodeType":"YulFunctionCall","src":"624:43:61"},"nodeType":"YulIf","src":"621:63:61"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"604:5:61","type":""}],"src":"568:122:61"},{"body":{"nodeType":"YulBlock","src":"748:87:61","statements":[{"nodeType":"YulAssignment","src":"758:29:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"780:6:61"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"767:12:61"},"nodeType":"YulFunctionCall","src":"767:20:61"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"758:5:61"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"823:5:61"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"796:26:61"},"nodeType":"YulFunctionCall","src":"796:33:61"},"nodeType":"YulExpressionStatement","src":"796:33:61"}]},"name":"abi_decode_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"726:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"734:3:61","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"742:5:61","type":""}],"src":"696:139:61"},{"body":{"nodeType":"YulBlock","src":"886:32:61","statements":[{"nodeType":"YulAssignment","src":"896:16:61","value":{"name":"value","nodeType":"YulIdentifier","src":"907:5:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"896:7:61"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"868:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"878:7:61","type":""}],"src":"841:77:61"},{"body":{"nodeType":"YulBlock","src":"967:79:61","statements":[{"body":{"nodeType":"YulBlock","src":"1024:16:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1033:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1036:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1026:6:61"},"nodeType":"YulFunctionCall","src":"1026:12:61"},"nodeType":"YulExpressionStatement","src":"1026:12:61"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"990:5:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1015:5:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"997:17:61"},"nodeType":"YulFunctionCall","src":"997:24:61"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"987:2:61"},"nodeType":"YulFunctionCall","src":"987:35:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"980:6:61"},"nodeType":"YulFunctionCall","src":"980:43:61"},"nodeType":"YulIf","src":"977:63:61"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"960:5:61","type":""}],"src":"924:122:61"},{"body":{"nodeType":"YulBlock","src":"1104:87:61","statements":[{"nodeType":"YulAssignment","src":"1114:29:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1136:6:61"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1123:12:61"},"nodeType":"YulFunctionCall","src":"1123:20:61"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1114:5:61"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1179:5:61"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"1152:26:61"},"nodeType":"YulFunctionCall","src":"1152:33:61"},"nodeType":"YulExpressionStatement","src":"1152:33:61"}]},"name":"abi_decode_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1082:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"1090:3:61","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1098:5:61","type":""}],"src":"1052:139:61"},{"body":{"nodeType":"YulBlock","src":"1280:391:61","statements":[{"body":{"nodeType":"YulBlock","src":"1326:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"1328:77:61"},"nodeType":"YulFunctionCall","src":"1328:79:61"},"nodeType":"YulExpressionStatement","src":"1328:79:61"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1301:7:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"1310:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1297:3:61"},"nodeType":"YulFunctionCall","src":"1297:23:61"},{"kind":"number","nodeType":"YulLiteral","src":"1322:2:61","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1293:3:61"},"nodeType":"YulFunctionCall","src":"1293:32:61"},"nodeType":"YulIf","src":"1290:119:61"},{"nodeType":"YulBlock","src":"1419:117:61","statements":[{"nodeType":"YulVariableDeclaration","src":"1434:15:61","value":{"kind":"number","nodeType":"YulLiteral","src":"1448:1:61","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1438:6:61","type":""}]},{"nodeType":"YulAssignment","src":"1463:63:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1498:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"1509:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1494:3:61"},"nodeType":"YulFunctionCall","src":"1494:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1518:7:61"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"1473:20:61"},"nodeType":"YulFunctionCall","src":"1473:53:61"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1463:6:61"}]}]},{"nodeType":"YulBlock","src":"1546:118:61","statements":[{"nodeType":"YulVariableDeclaration","src":"1561:16:61","value":{"kind":"number","nodeType":"YulLiteral","src":"1575:2:61","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1565:6:61","type":""}]},{"nodeType":"YulAssignment","src":"1591:63:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1626:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"1637:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1622:3:61"},"nodeType":"YulFunctionCall","src":"1622:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1646:7:61"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"1601:20:61"},"nodeType":"YulFunctionCall","src":"1601:53:61"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1591:6:61"}]}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1242:9:61","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1253:7:61","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1265:6:61","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1273:6:61","type":""}],"src":"1197:474:61"},{"body":{"nodeType":"YulBlock","src":"1742:53:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1759:3:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1782:5:61"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"1764:17:61"},"nodeType":"YulFunctionCall","src":"1764:24:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1752:6:61"},"nodeType":"YulFunctionCall","src":"1752:37:61"},"nodeType":"YulExpressionStatement","src":"1752:37:61"}]},"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1730:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"1737:3:61","type":""}],"src":"1677:118:61"},{"body":{"nodeType":"YulBlock","src":"1866:53:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1883:3:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1906:5:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"1888:17:61"},"nodeType":"YulFunctionCall","src":"1888:24:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1876:6:61"},"nodeType":"YulFunctionCall","src":"1876:37:61"},"nodeType":"YulExpressionStatement","src":"1876:37:61"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1854:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"1861:3:61","type":""}],"src":"1801:118:61"},{"body":{"nodeType":"YulBlock","src":"2107:371:61","statements":[{"nodeType":"YulAssignment","src":"2117:27:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2129:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"2140:3:61","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2125:3:61"},"nodeType":"YulFunctionCall","src":"2125:19:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2117:4:61"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2198:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2211:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"2222:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2207:3:61"},"nodeType":"YulFunctionCall","src":"2207:17:61"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"2154:43:61"},"nodeType":"YulFunctionCall","src":"2154:71:61"},"nodeType":"YulExpressionStatement","src":"2154:71:61"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"2279:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2292:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"2303:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2288:3:61"},"nodeType":"YulFunctionCall","src":"2288:18:61"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"2235:43:61"},"nodeType":"YulFunctionCall","src":"2235:72:61"},"nodeType":"YulExpressionStatement","src":"2235:72:61"},{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"2361:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2374:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"2385:2:61","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2370:3:61"},"nodeType":"YulFunctionCall","src":"2370:18:61"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"2317:43:61"},"nodeType":"YulFunctionCall","src":"2317:72:61"},"nodeType":"YulExpressionStatement","src":"2317:72:61"},{"expression":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"2443:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2456:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"2467:2:61","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2452:3:61"},"nodeType":"YulFunctionCall","src":"2452:18:61"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"2399:43:61"},"nodeType":"YulFunctionCall","src":"2399:72:61"},"nodeType":"YulExpressionStatement","src":"2399:72:61"}]},"name":"abi_encode_tuple_t_address_t_uint256_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2055:9:61","type":""},{"name":"value3","nodeType":"YulTypedName","src":"2067:6:61","type":""},{"name":"value2","nodeType":"YulTypedName","src":"2075:6:61","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2083:6:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2091:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2102:4:61","type":""}],"src":"1925:553:61"},{"body":{"nodeType":"YulBlock","src":"2550:263:61","statements":[{"body":{"nodeType":"YulBlock","src":"2596:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"2598:77:61"},"nodeType":"YulFunctionCall","src":"2598:79:61"},"nodeType":"YulExpressionStatement","src":"2598:79:61"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2571:7:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"2580:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2567:3:61"},"nodeType":"YulFunctionCall","src":"2567:23:61"},{"kind":"number","nodeType":"YulLiteral","src":"2592:2:61","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2563:3:61"},"nodeType":"YulFunctionCall","src":"2563:32:61"},"nodeType":"YulIf","src":"2560:119:61"},{"nodeType":"YulBlock","src":"2689:117:61","statements":[{"nodeType":"YulVariableDeclaration","src":"2704:15:61","value":{"kind":"number","nodeType":"YulLiteral","src":"2718:1:61","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2708:6:61","type":""}]},{"nodeType":"YulAssignment","src":"2733:63:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2768:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"2779:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2764:3:61"},"nodeType":"YulFunctionCall","src":"2764:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2788:7:61"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"2743:20:61"},"nodeType":"YulFunctionCall","src":"2743:53:61"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2733:6:61"}]}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2520:9:61","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2531:7:61","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2543:6:61","type":""}],"src":"2484:329:61"},{"body":{"nodeType":"YulBlock","src":"2863:45:61","statements":[{"nodeType":"YulAssignment","src":"2873:29:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2888:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"2895:6:61","type":"","value":"0xffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2884:3:61"},"nodeType":"YulFunctionCall","src":"2884:18:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"2873:7:61"}]}]},"name":"cleanup_t_uint16","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2845:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"2855:7:61","type":""}],"src":"2819:89:61"},{"body":{"nodeType":"YulBlock","src":"2977:52:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2994:3:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3016:5:61"}],"functionName":{"name":"cleanup_t_uint16","nodeType":"YulIdentifier","src":"2999:16:61"},"nodeType":"YulFunctionCall","src":"2999:23:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2987:6:61"},"nodeType":"YulFunctionCall","src":"2987:36:61"},"nodeType":"YulExpressionStatement","src":"2987:36:61"}]},"name":"abi_encode_t_uint16_to_t_uint16_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2965:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2972:3:61","type":""}],"src":"2914:115:61"},{"body":{"nodeType":"YulBlock","src":"3131:122:61","statements":[{"nodeType":"YulAssignment","src":"3141:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3153:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"3164:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3149:3:61"},"nodeType":"YulFunctionCall","src":"3149:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3141:4:61"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3219:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3232:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"3243:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3228:3:61"},"nodeType":"YulFunctionCall","src":"3228:17:61"}],"functionName":{"name":"abi_encode_t_uint16_to_t_uint16_fromStack","nodeType":"YulIdentifier","src":"3177:41:61"},"nodeType":"YulFunctionCall","src":"3177:69:61"},"nodeType":"YulExpressionStatement","src":"3177:69:61"}]},"name":"abi_encode_tuple_t_uint16__to_t_uint16__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3103:9:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3115:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3126:4:61","type":""}],"src":"3035:218:61"},{"body":{"nodeType":"YulBlock","src":"3325:263:61","statements":[{"body":{"nodeType":"YulBlock","src":"3371:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"3373:77:61"},"nodeType":"YulFunctionCall","src":"3373:79:61"},"nodeType":"YulExpressionStatement","src":"3373:79:61"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3346:7:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"3355:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3342:3:61"},"nodeType":"YulFunctionCall","src":"3342:23:61"},{"kind":"number","nodeType":"YulLiteral","src":"3367:2:61","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3338:3:61"},"nodeType":"YulFunctionCall","src":"3338:32:61"},"nodeType":"YulIf","src":"3335:119:61"},{"nodeType":"YulBlock","src":"3464:117:61","statements":[{"nodeType":"YulVariableDeclaration","src":"3479:15:61","value":{"kind":"number","nodeType":"YulLiteral","src":"3493:1:61","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3483:6:61","type":""}]},{"nodeType":"YulAssignment","src":"3508:63:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3543:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"3554:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3539:3:61"},"nodeType":"YulFunctionCall","src":"3539:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3563:7:61"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"3518:20:61"},"nodeType":"YulFunctionCall","src":"3518:53:61"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3508:6:61"}]}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3295:9:61","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3306:7:61","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3318:6:61","type":""}],"src":"3259:329:61"},{"body":{"nodeType":"YulBlock","src":"3637:48:61","statements":[{"nodeType":"YulAssignment","src":"3647:32:61","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3669:2:61","type":"","value":"11"},{"name":"value","nodeType":"YulIdentifier","src":"3673:5:61"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"3658:10:61"},"nodeType":"YulFunctionCall","src":"3658:21:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"3647:7:61"}]}]},"name":"cleanup_t_int96","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3619:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"3629:7:61","type":""}],"src":"3594:91:61"},{"body":{"nodeType":"YulBlock","src":"3732:77:61","statements":[{"body":{"nodeType":"YulBlock","src":"3787:16:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3796:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3799:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3789:6:61"},"nodeType":"YulFunctionCall","src":"3789:12:61"},"nodeType":"YulExpressionStatement","src":"3789:12:61"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3755:5:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3778:5:61"}],"functionName":{"name":"cleanup_t_int96","nodeType":"YulIdentifier","src":"3762:15:61"},"nodeType":"YulFunctionCall","src":"3762:22:61"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3752:2:61"},"nodeType":"YulFunctionCall","src":"3752:33:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3745:6:61"},"nodeType":"YulFunctionCall","src":"3745:41:61"},"nodeType":"YulIf","src":"3742:61:61"}]},"name":"validator_revert_t_int96","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3725:5:61","type":""}],"src":"3691:118:61"},{"body":{"nodeType":"YulBlock","src":"3865:85:61","statements":[{"nodeType":"YulAssignment","src":"3875:29:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3897:6:61"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3884:12:61"},"nodeType":"YulFunctionCall","src":"3884:20:61"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"3875:5:61"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3938:5:61"}],"functionName":{"name":"validator_revert_t_int96","nodeType":"YulIdentifier","src":"3913:24:61"},"nodeType":"YulFunctionCall","src":"3913:31:61"},"nodeType":"YulExpressionStatement","src":"3913:31:61"}]},"name":"abi_decode_t_int96","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"3843:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"3851:3:61","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"3859:5:61","type":""}],"src":"3815:135:61"},{"body":{"nodeType":"YulBlock","src":"4037:389:61","statements":[{"body":{"nodeType":"YulBlock","src":"4083:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"4085:77:61"},"nodeType":"YulFunctionCall","src":"4085:79:61"},"nodeType":"YulExpressionStatement","src":"4085:79:61"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4058:7:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"4067:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4054:3:61"},"nodeType":"YulFunctionCall","src":"4054:23:61"},{"kind":"number","nodeType":"YulLiteral","src":"4079:2:61","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4050:3:61"},"nodeType":"YulFunctionCall","src":"4050:32:61"},"nodeType":"YulIf","src":"4047:119:61"},{"nodeType":"YulBlock","src":"4176:117:61","statements":[{"nodeType":"YulVariableDeclaration","src":"4191:15:61","value":{"kind":"number","nodeType":"YulLiteral","src":"4205:1:61","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4195:6:61","type":""}]},{"nodeType":"YulAssignment","src":"4220:63:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4255:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"4266:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4251:3:61"},"nodeType":"YulFunctionCall","src":"4251:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4275:7:61"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"4230:20:61"},"nodeType":"YulFunctionCall","src":"4230:53:61"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4220:6:61"}]}]},{"nodeType":"YulBlock","src":"4303:116:61","statements":[{"nodeType":"YulVariableDeclaration","src":"4318:16:61","value":{"kind":"number","nodeType":"YulLiteral","src":"4332:2:61","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4322:6:61","type":""}]},{"nodeType":"YulAssignment","src":"4348:61:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4381:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"4392:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4377:3:61"},"nodeType":"YulFunctionCall","src":"4377:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4401:7:61"}],"functionName":{"name":"abi_decode_t_int96","nodeType":"YulIdentifier","src":"4358:18:61"},"nodeType":"YulFunctionCall","src":"4358:51:61"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4348:6:61"}]}]}]},"name":"abi_decode_tuple_t_addresst_int96","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3999:9:61","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4010:7:61","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4022:6:61","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4030:6:61","type":""}],"src":"3956:470:61"},{"body":{"nodeType":"YulBlock","src":"4530:124:61","statements":[{"nodeType":"YulAssignment","src":"4540:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4552:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"4563:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4548:3:61"},"nodeType":"YulFunctionCall","src":"4548:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4540:4:61"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4620:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4633:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"4644:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4629:3:61"},"nodeType":"YulFunctionCall","src":"4629:17:61"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"4576:43:61"},"nodeType":"YulFunctionCall","src":"4576:71:61"},"nodeType":"YulExpressionStatement","src":"4576:71:61"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4502:9:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4514:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4525:4:61","type":""}],"src":"4432:222:61"},{"body":{"nodeType":"YulBlock","src":"4704:65:61","statements":[{"nodeType":"YulAssignment","src":"4714:49:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4729:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"4736:26:61","type":"","value":"0xffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4725:3:61"},"nodeType":"YulFunctionCall","src":"4725:38:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"4714:7:61"}]}]},"name":"cleanup_t_uint96","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4686:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"4696:7:61","type":""}],"src":"4660:109:61"},{"body":{"nodeType":"YulBlock","src":"4838:52:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4855:3:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4877:5:61"}],"functionName":{"name":"cleanup_t_uint96","nodeType":"YulIdentifier","src":"4860:16:61"},"nodeType":"YulFunctionCall","src":"4860:23:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4848:6:61"},"nodeType":"YulFunctionCall","src":"4848:36:61"},"nodeType":"YulExpressionStatement","src":"4848:36:61"}]},"name":"abi_encode_t_uint96_to_t_uint96_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4826:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4833:3:61","type":""}],"src":"4775:115:61"},{"body":{"nodeType":"YulBlock","src":"5044:282:61","statements":[{"nodeType":"YulAssignment","src":"5054:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5066:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"5077:2:61","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5062:3:61"},"nodeType":"YulFunctionCall","src":"5062:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5054:4:61"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5132:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5145:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"5156:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5141:3:61"},"nodeType":"YulFunctionCall","src":"5141:17:61"}],"functionName":{"name":"abi_encode_t_uint16_to_t_uint16_fromStack","nodeType":"YulIdentifier","src":"5090:41:61"},"nodeType":"YulFunctionCall","src":"5090:69:61"},"nodeType":"YulExpressionStatement","src":"5090:69:61"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"5211:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5224:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"5235:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5220:3:61"},"nodeType":"YulFunctionCall","src":"5220:18:61"}],"functionName":{"name":"abi_encode_t_uint96_to_t_uint96_fromStack","nodeType":"YulIdentifier","src":"5169:41:61"},"nodeType":"YulFunctionCall","src":"5169:70:61"},"nodeType":"YulExpressionStatement","src":"5169:70:61"},{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"5291:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5304:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"5315:2:61","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5300:3:61"},"nodeType":"YulFunctionCall","src":"5300:18:61"}],"functionName":{"name":"abi_encode_t_uint96_to_t_uint96_fromStack","nodeType":"YulIdentifier","src":"5249:41:61"},"nodeType":"YulFunctionCall","src":"5249:70:61"},"nodeType":"YulExpressionStatement","src":"5249:70:61"}]},"name":"abi_encode_tuple_t_uint16_t_uint96_t_uint96__to_t_uint16_t_uint96_t_uint96__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5000:9:61","type":""},{"name":"value2","nodeType":"YulTypedName","src":"5012:6:61","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5020:6:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5028:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5039:4:61","type":""}],"src":"4896:430:61"},{"body":{"nodeType":"YulBlock","src":"5374:48:61","statements":[{"nodeType":"YulAssignment","src":"5384:32:61","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5409:5:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5402:6:61"},"nodeType":"YulFunctionCall","src":"5402:13:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5395:6:61"},"nodeType":"YulFunctionCall","src":"5395:21:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5384:7:61"}]}]},"name":"cleanup_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5356:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5366:7:61","type":""}],"src":"5332:90:61"},{"body":{"nodeType":"YulBlock","src":"5487:50:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5504:3:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5524:5:61"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"5509:14:61"},"nodeType":"YulFunctionCall","src":"5509:21:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5497:6:61"},"nodeType":"YulFunctionCall","src":"5497:34:61"},"nodeType":"YulExpressionStatement","src":"5497:34:61"}]},"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5475:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"5482:3:61","type":""}],"src":"5428:109:61"},{"body":{"nodeType":"YulBlock","src":"5635:118:61","statements":[{"nodeType":"YulAssignment","src":"5645:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5657:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"5668:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5653:3:61"},"nodeType":"YulFunctionCall","src":"5653:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5645:4:61"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5719:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5732:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"5743:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5728:3:61"},"nodeType":"YulFunctionCall","src":"5728:17:61"}],"functionName":{"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulIdentifier","src":"5681:37:61"},"nodeType":"YulFunctionCall","src":"5681:65:61"},"nodeType":"YulExpressionStatement","src":"5681:65:61"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5607:9:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5619:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5630:4:61","type":""}],"src":"5543:210:61"},{"body":{"nodeType":"YulBlock","src":"5842:391:61","statements":[{"body":{"nodeType":"YulBlock","src":"5888:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"5890:77:61"},"nodeType":"YulFunctionCall","src":"5890:79:61"},"nodeType":"YulExpressionStatement","src":"5890:79:61"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5863:7:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"5872:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5859:3:61"},"nodeType":"YulFunctionCall","src":"5859:23:61"},{"kind":"number","nodeType":"YulLiteral","src":"5884:2:61","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5855:3:61"},"nodeType":"YulFunctionCall","src":"5855:32:61"},"nodeType":"YulIf","src":"5852:119:61"},{"nodeType":"YulBlock","src":"5981:117:61","statements":[{"nodeType":"YulVariableDeclaration","src":"5996:15:61","value":{"kind":"number","nodeType":"YulLiteral","src":"6010:1:61","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6000:6:61","type":""}]},{"nodeType":"YulAssignment","src":"6025:63:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6060:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"6071:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6056:3:61"},"nodeType":"YulFunctionCall","src":"6056:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6080:7:61"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"6035:20:61"},"nodeType":"YulFunctionCall","src":"6035:53:61"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6025:6:61"}]}]},{"nodeType":"YulBlock","src":"6108:118:61","statements":[{"nodeType":"YulVariableDeclaration","src":"6123:16:61","value":{"kind":"number","nodeType":"YulLiteral","src":"6137:2:61","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6127:6:61","type":""}]},{"nodeType":"YulAssignment","src":"6153:63:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6188:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"6199:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6184:3:61"},"nodeType":"YulFunctionCall","src":"6184:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6208:7:61"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"6163:20:61"},"nodeType":"YulFunctionCall","src":"6163:53:61"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"6153:6:61"}]}]}]},"name":"abi_decode_tuple_t_uint256t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5804:9:61","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5815:7:61","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5827:6:61","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5835:6:61","type":""}],"src":"5759:474:61"},{"body":{"nodeType":"YulBlock","src":"6322:391:61","statements":[{"body":{"nodeType":"YulBlock","src":"6368:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"6370:77:61"},"nodeType":"YulFunctionCall","src":"6370:79:61"},"nodeType":"YulExpressionStatement","src":"6370:79:61"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6343:7:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"6352:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6339:3:61"},"nodeType":"YulFunctionCall","src":"6339:23:61"},{"kind":"number","nodeType":"YulLiteral","src":"6364:2:61","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6335:3:61"},"nodeType":"YulFunctionCall","src":"6335:32:61"},"nodeType":"YulIf","src":"6332:119:61"},{"nodeType":"YulBlock","src":"6461:117:61","statements":[{"nodeType":"YulVariableDeclaration","src":"6476:15:61","value":{"kind":"number","nodeType":"YulLiteral","src":"6490:1:61","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6480:6:61","type":""}]},{"nodeType":"YulAssignment","src":"6505:63:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6540:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"6551:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6536:3:61"},"nodeType":"YulFunctionCall","src":"6536:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6560:7:61"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"6515:20:61"},"nodeType":"YulFunctionCall","src":"6515:53:61"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6505:6:61"}]}]},{"nodeType":"YulBlock","src":"6588:118:61","statements":[{"nodeType":"YulVariableDeclaration","src":"6603:16:61","value":{"kind":"number","nodeType":"YulLiteral","src":"6617:2:61","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6607:6:61","type":""}]},{"nodeType":"YulAssignment","src":"6633:63:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6668:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"6679:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6664:3:61"},"nodeType":"YulFunctionCall","src":"6664:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6688:7:61"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"6643:20:61"},"nodeType":"YulFunctionCall","src":"6643:53:61"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"6633:6:61"}]}]}]},"name":"abi_decode_tuple_t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6284:9:61","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6295:7:61","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6307:6:61","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6315:6:61","type":""}],"src":"6239:474:61"},{"body":{"nodeType":"YulBlock","src":"6808:28:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6825:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6828:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6818:6:61"},"nodeType":"YulFunctionCall","src":"6818:12:61"},"nodeType":"YulExpressionStatement","src":"6818:12:61"}]},"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulFunctionDefinition","src":"6719:117:61"},{"body":{"nodeType":"YulBlock","src":"6890:54:61","statements":[{"nodeType":"YulAssignment","src":"6900:38:61","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6918:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"6925:2:61","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6914:3:61"},"nodeType":"YulFunctionCall","src":"6914:14:61"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6934:2:61","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"6930:3:61"},"nodeType":"YulFunctionCall","src":"6930:7:61"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6910:3:61"},"nodeType":"YulFunctionCall","src":"6910:28:61"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"6900:6:61"}]}]},"name":"round_up_to_mul_of_32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6873:5:61","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"6883:6:61","type":""}],"src":"6842:102:61"},{"body":{"nodeType":"YulBlock","src":"6978:152:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6995:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6998:77:61","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6988:6:61"},"nodeType":"YulFunctionCall","src":"6988:88:61"},"nodeType":"YulExpressionStatement","src":"6988:88:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7092:1:61","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"7095:4:61","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7085:6:61"},"nodeType":"YulFunctionCall","src":"7085:15:61"},"nodeType":"YulExpressionStatement","src":"7085:15:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7116:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7119:4:61","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7109:6:61"},"nodeType":"YulFunctionCall","src":"7109:15:61"},"nodeType":"YulExpressionStatement","src":"7109:15:61"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"6950:180:61"},{"body":{"nodeType":"YulBlock","src":"7179:238:61","statements":[{"nodeType":"YulVariableDeclaration","src":"7189:58:61","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7211:6:61"},{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"7241:4:61"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"7219:21:61"},"nodeType":"YulFunctionCall","src":"7219:27:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7207:3:61"},"nodeType":"YulFunctionCall","src":"7207:40:61"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"7193:10:61","type":""}]},{"body":{"nodeType":"YulBlock","src":"7358:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"7360:16:61"},"nodeType":"YulFunctionCall","src":"7360:18:61"},"nodeType":"YulExpressionStatement","src":"7360:18:61"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7301:10:61"},{"kind":"number","nodeType":"YulLiteral","src":"7313:18:61","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7298:2:61"},"nodeType":"YulFunctionCall","src":"7298:34:61"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7337:10:61"},{"name":"memPtr","nodeType":"YulIdentifier","src":"7349:6:61"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"7334:2:61"},"nodeType":"YulFunctionCall","src":"7334:22:61"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7295:2:61"},"nodeType":"YulFunctionCall","src":"7295:62:61"},"nodeType":"YulIf","src":"7292:88:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7396:2:61","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7400:10:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7389:6:61"},"nodeType":"YulFunctionCall","src":"7389:22:61"},"nodeType":"YulExpressionStatement","src":"7389:22:61"}]},"name":"finalize_allocation","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"7165:6:61","type":""},{"name":"size","nodeType":"YulTypedName","src":"7173:4:61","type":""}],"src":"7136:281:61"},{"body":{"nodeType":"YulBlock","src":"7464:88:61","statements":[{"nodeType":"YulAssignment","src":"7474:30:61","value":{"arguments":[],"functionName":{"name":"allocate_unbounded","nodeType":"YulIdentifier","src":"7484:18:61"},"nodeType":"YulFunctionCall","src":"7484:20:61"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7474:6:61"}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7533:6:61"},{"name":"size","nodeType":"YulIdentifier","src":"7541:4:61"}],"functionName":{"name":"finalize_allocation","nodeType":"YulIdentifier","src":"7513:19:61"},"nodeType":"YulFunctionCall","src":"7513:33:61"},"nodeType":"YulExpressionStatement","src":"7513:33:61"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"7448:4:61","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"7457:6:61","type":""}],"src":"7423:129:61"},{"body":{"nodeType":"YulBlock","src":"7639:229:61","statements":[{"body":{"nodeType":"YulBlock","src":"7744:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"7746:16:61"},"nodeType":"YulFunctionCall","src":"7746:18:61"},"nodeType":"YulExpressionStatement","src":"7746:18:61"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"7716:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"7724:18:61","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7713:2:61"},"nodeType":"YulFunctionCall","src":"7713:30:61"},"nodeType":"YulIf","src":"7710:56:61"},{"nodeType":"YulAssignment","src":"7776:25:61","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"7788:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"7796:4:61","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"7784:3:61"},"nodeType":"YulFunctionCall","src":"7784:17:61"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"7776:4:61"}]},{"nodeType":"YulAssignment","src":"7838:23:61","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"7850:4:61"},{"kind":"number","nodeType":"YulLiteral","src":"7856:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7846:3:61"},"nodeType":"YulFunctionCall","src":"7846:15:61"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"7838:4:61"}]}]},"name":"array_allocation_size_t_array$_t_uint16_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"7623:6:61","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"7634:4:61","type":""}],"src":"7558:310:61"},{"body":{"nodeType":"YulBlock","src":"7963:28:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7980:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7983:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7973:6:61"},"nodeType":"YulFunctionCall","src":"7973:12:61"},"nodeType":"YulExpressionStatement","src":"7973:12:61"}]},"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nodeType":"YulFunctionDefinition","src":"7874:117:61"},{"body":{"nodeType":"YulBlock","src":"8039:78:61","statements":[{"body":{"nodeType":"YulBlock","src":"8095:16:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8104:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8107:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8097:6:61"},"nodeType":"YulFunctionCall","src":"8097:12:61"},"nodeType":"YulExpressionStatement","src":"8097:12:61"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8062:5:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8086:5:61"}],"functionName":{"name":"cleanup_t_uint16","nodeType":"YulIdentifier","src":"8069:16:61"},"nodeType":"YulFunctionCall","src":"8069:23:61"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8059:2:61"},"nodeType":"YulFunctionCall","src":"8059:34:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8052:6:61"},"nodeType":"YulFunctionCall","src":"8052:42:61"},"nodeType":"YulIf","src":"8049:62:61"}]},"name":"validator_revert_t_uint16","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8032:5:61","type":""}],"src":"7997:120:61"},{"body":{"nodeType":"YulBlock","src":"8174:86:61","statements":[{"nodeType":"YulAssignment","src":"8184:29:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"8206:6:61"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8193:12:61"},"nodeType":"YulFunctionCall","src":"8193:20:61"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"8184:5:61"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8248:5:61"}],"functionName":{"name":"validator_revert_t_uint16","nodeType":"YulIdentifier","src":"8222:25:61"},"nodeType":"YulFunctionCall","src":"8222:32:61"},"nodeType":"YulExpressionStatement","src":"8222:32:61"}]},"name":"abi_decode_t_uint16","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"8152:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"8160:3:61","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"8168:5:61","type":""}],"src":"8123:137:61"},{"body":{"nodeType":"YulBlock","src":"8383:606:61","statements":[{"nodeType":"YulAssignment","src":"8393:89:61","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"8474:6:61"}],"functionName":{"name":"array_allocation_size_t_array$_t_uint16_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"8418:55:61"},"nodeType":"YulFunctionCall","src":"8418:63:61"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"8402:15:61"},"nodeType":"YulFunctionCall","src":"8402:80:61"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"8393:5:61"}]},{"nodeType":"YulVariableDeclaration","src":"8491:16:61","value":{"name":"array","nodeType":"YulIdentifier","src":"8502:5:61"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"8495:3:61","type":""}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"8524:5:61"},{"name":"length","nodeType":"YulIdentifier","src":"8531:6:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8517:6:61"},"nodeType":"YulFunctionCall","src":"8517:21:61"},"nodeType":"YulExpressionStatement","src":"8517:21:61"},{"nodeType":"YulAssignment","src":"8547:23:61","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"8558:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"8565:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8554:3:61"},"nodeType":"YulFunctionCall","src":"8554:16:61"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"8547:3:61"}]},{"nodeType":"YulVariableDeclaration","src":"8580:44:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"8598:6:61"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"8610:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"8618:4:61","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"8606:3:61"},"nodeType":"YulFunctionCall","src":"8606:17:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8594:3:61"},"nodeType":"YulFunctionCall","src":"8594:30:61"},"variables":[{"name":"srcEnd","nodeType":"YulTypedName","src":"8584:6:61","type":""}]},{"body":{"nodeType":"YulBlock","src":"8652:103:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nodeType":"YulIdentifier","src":"8666:77:61"},"nodeType":"YulFunctionCall","src":"8666:79:61"},"nodeType":"YulExpressionStatement","src":"8666:79:61"}]},"condition":{"arguments":[{"name":"srcEnd","nodeType":"YulIdentifier","src":"8639:6:61"},{"name":"end","nodeType":"YulIdentifier","src":"8647:3:61"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8636:2:61"},"nodeType":"YulFunctionCall","src":"8636:15:61"},"nodeType":"YulIf","src":"8633:122:61"},{"body":{"nodeType":"YulBlock","src":"8840:143:61","statements":[{"nodeType":"YulVariableDeclaration","src":"8855:21:61","value":{"name":"src","nodeType":"YulIdentifier","src":"8873:3:61"},"variables":[{"name":"elementPos","nodeType":"YulTypedName","src":"8859:10:61","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"8897:3:61"},{"arguments":[{"name":"elementPos","nodeType":"YulIdentifier","src":"8922:10:61"},{"name":"end","nodeType":"YulIdentifier","src":"8934:3:61"}],"functionName":{"name":"abi_decode_t_uint16","nodeType":"YulIdentifier","src":"8902:19:61"},"nodeType":"YulFunctionCall","src":"8902:36:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8890:6:61"},"nodeType":"YulFunctionCall","src":"8890:49:61"},"nodeType":"YulExpressionStatement","src":"8890:49:61"},{"nodeType":"YulAssignment","src":"8952:21:61","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"8963:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"8968:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8959:3:61"},"nodeType":"YulFunctionCall","src":"8959:14:61"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"8952:3:61"}]}]},"condition":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"8793:3:61"},{"name":"srcEnd","nodeType":"YulIdentifier","src":"8798:6:61"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"8790:2:61"},"nodeType":"YulFunctionCall","src":"8790:15:61"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"8806:25:61","statements":[{"nodeType":"YulAssignment","src":"8808:21:61","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"8819:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"8824:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8815:3:61"},"nodeType":"YulFunctionCall","src":"8815:14:61"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"8808:3:61"}]}]},"pre":{"nodeType":"YulBlock","src":"8768:21:61","statements":[{"nodeType":"YulVariableDeclaration","src":"8770:17:61","value":{"name":"offset","nodeType":"YulIdentifier","src":"8781:6:61"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"8774:3:61","type":""}]}]},"src":"8764:219:61"}]},"name":"abi_decode_available_length_t_array$_t_uint16_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"8353:6:61","type":""},{"name":"length","nodeType":"YulTypedName","src":"8361:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"8369:3:61","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"8377:5:61","type":""}],"src":"8282:707:61"},{"body":{"nodeType":"YulBlock","src":"9087:292:61","statements":[{"body":{"nodeType":"YulBlock","src":"9136:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"9138:77:61"},"nodeType":"YulFunctionCall","src":"9138:79:61"},"nodeType":"YulExpressionStatement","src":"9138:79:61"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"9115:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"9123:4:61","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9111:3:61"},"nodeType":"YulFunctionCall","src":"9111:17:61"},{"name":"end","nodeType":"YulIdentifier","src":"9130:3:61"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9107:3:61"},"nodeType":"YulFunctionCall","src":"9107:27:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"9100:6:61"},"nodeType":"YulFunctionCall","src":"9100:35:61"},"nodeType":"YulIf","src":"9097:122:61"},{"nodeType":"YulVariableDeclaration","src":"9228:34:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"9255:6:61"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9242:12:61"},"nodeType":"YulFunctionCall","src":"9242:20:61"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"9232:6:61","type":""}]},{"nodeType":"YulAssignment","src":"9271:102:61","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"9346:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"9354:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9342:3:61"},"nodeType":"YulFunctionCall","src":"9342:17:61"},{"name":"length","nodeType":"YulIdentifier","src":"9361:6:61"},{"name":"end","nodeType":"YulIdentifier","src":"9369:3:61"}],"functionName":{"name":"abi_decode_available_length_t_array$_t_uint16_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"9280:61:61"},"nodeType":"YulFunctionCall","src":"9280:93:61"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"9271:5:61"}]}]},"name":"abi_decode_t_array$_t_uint16_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"9065:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"9073:3:61","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"9081:5:61","type":""}],"src":"9011:368:61"},{"body":{"nodeType":"YulBlock","src":"9466:229:61","statements":[{"body":{"nodeType":"YulBlock","src":"9571:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"9573:16:61"},"nodeType":"YulFunctionCall","src":"9573:18:61"},"nodeType":"YulExpressionStatement","src":"9573:18:61"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"9543:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"9551:18:61","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"9540:2:61"},"nodeType":"YulFunctionCall","src":"9540:30:61"},"nodeType":"YulIf","src":"9537:56:61"},{"nodeType":"YulAssignment","src":"9603:25:61","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"9615:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"9623:4:61","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"9611:3:61"},"nodeType":"YulFunctionCall","src":"9611:17:61"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"9603:4:61"}]},{"nodeType":"YulAssignment","src":"9665:23:61","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"9677:4:61"},{"kind":"number","nodeType":"YulLiteral","src":"9683:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9673:3:61"},"nodeType":"YulFunctionCall","src":"9673:15:61"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"9665:4:61"}]}]},"name":"array_allocation_size_t_array$_t_uint96_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"9450:6:61","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"9461:4:61","type":""}],"src":"9385:310:61"},{"body":{"nodeType":"YulBlock","src":"9743:78:61","statements":[{"body":{"nodeType":"YulBlock","src":"9799:16:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9808:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9811:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9801:6:61"},"nodeType":"YulFunctionCall","src":"9801:12:61"},"nodeType":"YulExpressionStatement","src":"9801:12:61"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9766:5:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9790:5:61"}],"functionName":{"name":"cleanup_t_uint96","nodeType":"YulIdentifier","src":"9773:16:61"},"nodeType":"YulFunctionCall","src":"9773:23:61"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"9763:2:61"},"nodeType":"YulFunctionCall","src":"9763:34:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"9756:6:61"},"nodeType":"YulFunctionCall","src":"9756:42:61"},"nodeType":"YulIf","src":"9753:62:61"}]},"name":"validator_revert_t_uint96","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"9736:5:61","type":""}],"src":"9701:120:61"},{"body":{"nodeType":"YulBlock","src":"9878:86:61","statements":[{"nodeType":"YulAssignment","src":"9888:29:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"9910:6:61"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9897:12:61"},"nodeType":"YulFunctionCall","src":"9897:20:61"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"9888:5:61"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9952:5:61"}],"functionName":{"name":"validator_revert_t_uint96","nodeType":"YulIdentifier","src":"9926:25:61"},"nodeType":"YulFunctionCall","src":"9926:32:61"},"nodeType":"YulExpressionStatement","src":"9926:32:61"}]},"name":"abi_decode_t_uint96","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"9856:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"9864:3:61","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"9872:5:61","type":""}],"src":"9827:137:61"},{"body":{"nodeType":"YulBlock","src":"10087:606:61","statements":[{"nodeType":"YulAssignment","src":"10097:89:61","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"10178:6:61"}],"functionName":{"name":"array_allocation_size_t_array$_t_uint96_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"10122:55:61"},"nodeType":"YulFunctionCall","src":"10122:63:61"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"10106:15:61"},"nodeType":"YulFunctionCall","src":"10106:80:61"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"10097:5:61"}]},{"nodeType":"YulVariableDeclaration","src":"10195:16:61","value":{"name":"array","nodeType":"YulIdentifier","src":"10206:5:61"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"10199:3:61","type":""}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"10228:5:61"},{"name":"length","nodeType":"YulIdentifier","src":"10235:6:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10221:6:61"},"nodeType":"YulFunctionCall","src":"10221:21:61"},"nodeType":"YulExpressionStatement","src":"10221:21:61"},{"nodeType":"YulAssignment","src":"10251:23:61","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"10262:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"10269:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10258:3:61"},"nodeType":"YulFunctionCall","src":"10258:16:61"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"10251:3:61"}]},{"nodeType":"YulVariableDeclaration","src":"10284:44:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"10302:6:61"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"10314:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"10322:4:61","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"10310:3:61"},"nodeType":"YulFunctionCall","src":"10310:17:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10298:3:61"},"nodeType":"YulFunctionCall","src":"10298:30:61"},"variables":[{"name":"srcEnd","nodeType":"YulTypedName","src":"10288:6:61","type":""}]},{"body":{"nodeType":"YulBlock","src":"10356:103:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nodeType":"YulIdentifier","src":"10370:77:61"},"nodeType":"YulFunctionCall","src":"10370:79:61"},"nodeType":"YulExpressionStatement","src":"10370:79:61"}]},"condition":{"arguments":[{"name":"srcEnd","nodeType":"YulIdentifier","src":"10343:6:61"},{"name":"end","nodeType":"YulIdentifier","src":"10351:3:61"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"10340:2:61"},"nodeType":"YulFunctionCall","src":"10340:15:61"},"nodeType":"YulIf","src":"10337:122:61"},{"body":{"nodeType":"YulBlock","src":"10544:143:61","statements":[{"nodeType":"YulVariableDeclaration","src":"10559:21:61","value":{"name":"src","nodeType":"YulIdentifier","src":"10577:3:61"},"variables":[{"name":"elementPos","nodeType":"YulTypedName","src":"10563:10:61","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"10601:3:61"},{"arguments":[{"name":"elementPos","nodeType":"YulIdentifier","src":"10626:10:61"},{"name":"end","nodeType":"YulIdentifier","src":"10638:3:61"}],"functionName":{"name":"abi_decode_t_uint96","nodeType":"YulIdentifier","src":"10606:19:61"},"nodeType":"YulFunctionCall","src":"10606:36:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10594:6:61"},"nodeType":"YulFunctionCall","src":"10594:49:61"},"nodeType":"YulExpressionStatement","src":"10594:49:61"},{"nodeType":"YulAssignment","src":"10656:21:61","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"10667:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"10672:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10663:3:61"},"nodeType":"YulFunctionCall","src":"10663:14:61"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"10656:3:61"}]}]},"condition":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"10497:3:61"},{"name":"srcEnd","nodeType":"YulIdentifier","src":"10502:6:61"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"10494:2:61"},"nodeType":"YulFunctionCall","src":"10494:15:61"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"10510:25:61","statements":[{"nodeType":"YulAssignment","src":"10512:21:61","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"10523:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"10528:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10519:3:61"},"nodeType":"YulFunctionCall","src":"10519:14:61"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"10512:3:61"}]}]},"pre":{"nodeType":"YulBlock","src":"10472:21:61","statements":[{"nodeType":"YulVariableDeclaration","src":"10474:17:61","value":{"name":"offset","nodeType":"YulIdentifier","src":"10485:6:61"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"10478:3:61","type":""}]}]},"src":"10468:219:61"}]},"name":"abi_decode_available_length_t_array$_t_uint96_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"10057:6:61","type":""},{"name":"length","nodeType":"YulTypedName","src":"10065:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"10073:3:61","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"10081:5:61","type":""}],"src":"9986:707:61"},{"body":{"nodeType":"YulBlock","src":"10791:292:61","statements":[{"body":{"nodeType":"YulBlock","src":"10840:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"10842:77:61"},"nodeType":"YulFunctionCall","src":"10842:79:61"},"nodeType":"YulExpressionStatement","src":"10842:79:61"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"10819:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"10827:4:61","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10815:3:61"},"nodeType":"YulFunctionCall","src":"10815:17:61"},{"name":"end","nodeType":"YulIdentifier","src":"10834:3:61"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"10811:3:61"},"nodeType":"YulFunctionCall","src":"10811:27:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"10804:6:61"},"nodeType":"YulFunctionCall","src":"10804:35:61"},"nodeType":"YulIf","src":"10801:122:61"},{"nodeType":"YulVariableDeclaration","src":"10932:34:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"10959:6:61"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"10946:12:61"},"nodeType":"YulFunctionCall","src":"10946:20:61"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"10936:6:61","type":""}]},{"nodeType":"YulAssignment","src":"10975:102:61","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"11050:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"11058:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11046:3:61"},"nodeType":"YulFunctionCall","src":"11046:17:61"},{"name":"length","nodeType":"YulIdentifier","src":"11065:6:61"},{"name":"end","nodeType":"YulIdentifier","src":"11073:3:61"}],"functionName":{"name":"abi_decode_available_length_t_array$_t_uint96_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"10984:61:61"},"nodeType":"YulFunctionCall","src":"10984:93:61"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"10975:5:61"}]}]},"name":"abi_decode_t_array$_t_uint96_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"10769:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"10777:3:61","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"10785:5:61","type":""}],"src":"10715:368:61"},{"body":{"nodeType":"YulBlock","src":"11171:229:61","statements":[{"body":{"nodeType":"YulBlock","src":"11276:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"11278:16:61"},"nodeType":"YulFunctionCall","src":"11278:18:61"},"nodeType":"YulExpressionStatement","src":"11278:18:61"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"11248:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"11256:18:61","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"11245:2:61"},"nodeType":"YulFunctionCall","src":"11245:30:61"},"nodeType":"YulIf","src":"11242:56:61"},{"nodeType":"YulAssignment","src":"11308:25:61","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"11320:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"11328:4:61","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"11316:3:61"},"nodeType":"YulFunctionCall","src":"11316:17:61"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"11308:4:61"}]},{"nodeType":"YulAssignment","src":"11370:23:61","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"11382:4:61"},{"kind":"number","nodeType":"YulLiteral","src":"11388:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11378:3:61"},"nodeType":"YulFunctionCall","src":"11378:15:61"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"11370:4:61"}]}]},"name":"array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"11155:6:61","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"11166:4:61","type":""}],"src":"11089:311:61"},{"body":{"nodeType":"YulBlock","src":"11525:608:61","statements":[{"nodeType":"YulAssignment","src":"11535:90:61","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"11617:6:61"}],"functionName":{"name":"array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"11560:56:61"},"nodeType":"YulFunctionCall","src":"11560:64:61"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"11544:15:61"},"nodeType":"YulFunctionCall","src":"11544:81:61"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"11535:5:61"}]},{"nodeType":"YulVariableDeclaration","src":"11634:16:61","value":{"name":"array","nodeType":"YulIdentifier","src":"11645:5:61"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"11638:3:61","type":""}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"11667:5:61"},{"name":"length","nodeType":"YulIdentifier","src":"11674:6:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11660:6:61"},"nodeType":"YulFunctionCall","src":"11660:21:61"},"nodeType":"YulExpressionStatement","src":"11660:21:61"},{"nodeType":"YulAssignment","src":"11690:23:61","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"11701:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"11708:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11697:3:61"},"nodeType":"YulFunctionCall","src":"11697:16:61"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"11690:3:61"}]},{"nodeType":"YulVariableDeclaration","src":"11723:44:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"11741:6:61"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"11753:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"11761:4:61","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"11749:3:61"},"nodeType":"YulFunctionCall","src":"11749:17:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11737:3:61"},"nodeType":"YulFunctionCall","src":"11737:30:61"},"variables":[{"name":"srcEnd","nodeType":"YulTypedName","src":"11727:6:61","type":""}]},{"body":{"nodeType":"YulBlock","src":"11795:103:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nodeType":"YulIdentifier","src":"11809:77:61"},"nodeType":"YulFunctionCall","src":"11809:79:61"},"nodeType":"YulExpressionStatement","src":"11809:79:61"}]},"condition":{"arguments":[{"name":"srcEnd","nodeType":"YulIdentifier","src":"11782:6:61"},{"name":"end","nodeType":"YulIdentifier","src":"11790:3:61"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"11779:2:61"},"nodeType":"YulFunctionCall","src":"11779:15:61"},"nodeType":"YulIf","src":"11776:122:61"},{"body":{"nodeType":"YulBlock","src":"11983:144:61","statements":[{"nodeType":"YulVariableDeclaration","src":"11998:21:61","value":{"name":"src","nodeType":"YulIdentifier","src":"12016:3:61"},"variables":[{"name":"elementPos","nodeType":"YulTypedName","src":"12002:10:61","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"12040:3:61"},{"arguments":[{"name":"elementPos","nodeType":"YulIdentifier","src":"12066:10:61"},{"name":"end","nodeType":"YulIdentifier","src":"12078:3:61"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"12045:20:61"},"nodeType":"YulFunctionCall","src":"12045:37:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12033:6:61"},"nodeType":"YulFunctionCall","src":"12033:50:61"},"nodeType":"YulExpressionStatement","src":"12033:50:61"},{"nodeType":"YulAssignment","src":"12096:21:61","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"12107:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"12112:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12103:3:61"},"nodeType":"YulFunctionCall","src":"12103:14:61"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"12096:3:61"}]}]},"condition":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"11936:3:61"},{"name":"srcEnd","nodeType":"YulIdentifier","src":"11941:6:61"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"11933:2:61"},"nodeType":"YulFunctionCall","src":"11933:15:61"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"11949:25:61","statements":[{"nodeType":"YulAssignment","src":"11951:21:61","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"11962:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"11967:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11958:3:61"},"nodeType":"YulFunctionCall","src":"11958:14:61"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"11951:3:61"}]}]},"pre":{"nodeType":"YulBlock","src":"11911:21:61","statements":[{"nodeType":"YulVariableDeclaration","src":"11913:17:61","value":{"name":"offset","nodeType":"YulIdentifier","src":"11924:6:61"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"11917:3:61","type":""}]}]},"src":"11907:220:61"}]},"name":"abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"11495:6:61","type":""},{"name":"length","nodeType":"YulTypedName","src":"11503:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"11511:3:61","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"11519:5:61","type":""}],"src":"11423:710:61"},{"body":{"nodeType":"YulBlock","src":"12233:293:61","statements":[{"body":{"nodeType":"YulBlock","src":"12282:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"12284:77:61"},"nodeType":"YulFunctionCall","src":"12284:79:61"},"nodeType":"YulExpressionStatement","src":"12284:79:61"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"12261:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"12269:4:61","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12257:3:61"},"nodeType":"YulFunctionCall","src":"12257:17:61"},{"name":"end","nodeType":"YulIdentifier","src":"12276:3:61"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"12253:3:61"},"nodeType":"YulFunctionCall","src":"12253:27:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"12246:6:61"},"nodeType":"YulFunctionCall","src":"12246:35:61"},"nodeType":"YulIf","src":"12243:122:61"},{"nodeType":"YulVariableDeclaration","src":"12374:34:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"12401:6:61"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"12388:12:61"},"nodeType":"YulFunctionCall","src":"12388:20:61"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"12378:6:61","type":""}]},{"nodeType":"YulAssignment","src":"12417:103:61","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"12493:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"12501:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12489:3:61"},"nodeType":"YulFunctionCall","src":"12489:17:61"},{"name":"length","nodeType":"YulIdentifier","src":"12508:6:61"},{"name":"end","nodeType":"YulIdentifier","src":"12516:3:61"}],"functionName":{"name":"abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"12426:62:61"},"nodeType":"YulFunctionCall","src":"12426:94:61"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"12417:5:61"}]}]},"name":"abi_decode_t_array$_t_uint256_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"12211:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"12219:3:61","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"12227:5:61","type":""}],"src":"12156:370:61"},{"body":{"nodeType":"YulBlock","src":"12746:1385:61","statements":[{"body":{"nodeType":"YulBlock","src":"12793:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"12795:77:61"},"nodeType":"YulFunctionCall","src":"12795:79:61"},"nodeType":"YulExpressionStatement","src":"12795:79:61"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"12767:7:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"12776:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"12763:3:61"},"nodeType":"YulFunctionCall","src":"12763:23:61"},{"kind":"number","nodeType":"YulLiteral","src":"12788:3:61","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"12759:3:61"},"nodeType":"YulFunctionCall","src":"12759:33:61"},"nodeType":"YulIf","src":"12756:120:61"},{"nodeType":"YulBlock","src":"12886:301:61","statements":[{"nodeType":"YulVariableDeclaration","src":"12901:45:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"12932:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"12943:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12928:3:61"},"nodeType":"YulFunctionCall","src":"12928:17:61"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"12915:12:61"},"nodeType":"YulFunctionCall","src":"12915:31:61"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"12905:6:61","type":""}]},{"body":{"nodeType":"YulBlock","src":"12993:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"12995:77:61"},"nodeType":"YulFunctionCall","src":"12995:79:61"},"nodeType":"YulExpressionStatement","src":"12995:79:61"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"12965:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"12973:18:61","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"12962:2:61"},"nodeType":"YulFunctionCall","src":"12962:30:61"},"nodeType":"YulIf","src":"12959:117:61"},{"nodeType":"YulAssignment","src":"13090:87:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13149:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"13160:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13145:3:61"},"nodeType":"YulFunctionCall","src":"13145:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"13169:7:61"}],"functionName":{"name":"abi_decode_t_array$_t_uint16_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"13100:44:61"},"nodeType":"YulFunctionCall","src":"13100:77:61"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"13090:6:61"}]}]},{"nodeType":"YulBlock","src":"13197:302:61","statements":[{"nodeType":"YulVariableDeclaration","src":"13212:46:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13243:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"13254:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13239:3:61"},"nodeType":"YulFunctionCall","src":"13239:18:61"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"13226:12:61"},"nodeType":"YulFunctionCall","src":"13226:32:61"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"13216:6:61","type":""}]},{"body":{"nodeType":"YulBlock","src":"13305:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"13307:77:61"},"nodeType":"YulFunctionCall","src":"13307:79:61"},"nodeType":"YulExpressionStatement","src":"13307:79:61"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"13277:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"13285:18:61","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"13274:2:61"},"nodeType":"YulFunctionCall","src":"13274:30:61"},"nodeType":"YulIf","src":"13271:117:61"},{"nodeType":"YulAssignment","src":"13402:87:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13461:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"13472:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13457:3:61"},"nodeType":"YulFunctionCall","src":"13457:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"13481:7:61"}],"functionName":{"name":"abi_decode_t_array$_t_uint96_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"13412:44:61"},"nodeType":"YulFunctionCall","src":"13412:77:61"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"13402:6:61"}]}]},{"nodeType":"YulBlock","src":"13509:302:61","statements":[{"nodeType":"YulVariableDeclaration","src":"13524:46:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13555:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"13566:2:61","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13551:3:61"},"nodeType":"YulFunctionCall","src":"13551:18:61"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"13538:12:61"},"nodeType":"YulFunctionCall","src":"13538:32:61"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"13528:6:61","type":""}]},{"body":{"nodeType":"YulBlock","src":"13617:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"13619:77:61"},"nodeType":"YulFunctionCall","src":"13619:79:61"},"nodeType":"YulExpressionStatement","src":"13619:79:61"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"13589:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"13597:18:61","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"13586:2:61"},"nodeType":"YulFunctionCall","src":"13586:30:61"},"nodeType":"YulIf","src":"13583:117:61"},{"nodeType":"YulAssignment","src":"13714:87:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13773:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"13784:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13769:3:61"},"nodeType":"YulFunctionCall","src":"13769:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"13793:7:61"}],"functionName":{"name":"abi_decode_t_array$_t_uint96_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"13724:44:61"},"nodeType":"YulFunctionCall","src":"13724:77:61"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"13714:6:61"}]}]},{"nodeType":"YulBlock","src":"13821:303:61","statements":[{"nodeType":"YulVariableDeclaration","src":"13836:46:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13867:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"13878:2:61","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13863:3:61"},"nodeType":"YulFunctionCall","src":"13863:18:61"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"13850:12:61"},"nodeType":"YulFunctionCall","src":"13850:32:61"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"13840:6:61","type":""}]},{"body":{"nodeType":"YulBlock","src":"13929:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"13931:77:61"},"nodeType":"YulFunctionCall","src":"13931:79:61"},"nodeType":"YulExpressionStatement","src":"13931:79:61"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"13901:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"13909:18:61","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"13898:2:61"},"nodeType":"YulFunctionCall","src":"13898:30:61"},"nodeType":"YulIf","src":"13895:117:61"},{"nodeType":"YulAssignment","src":"14026:88:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14086:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"14097:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14082:3:61"},"nodeType":"YulFunctionCall","src":"14082:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"14106:7:61"}],"functionName":{"name":"abi_decode_t_array$_t_uint256_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"14036:45:61"},"nodeType":"YulFunctionCall","src":"14036:78:61"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"14026:6:61"}]}]}]},"name":"abi_decode_tuple_t_array$_t_uint16_$dyn_memory_ptrt_array$_t_uint96_$dyn_memory_ptrt_array$_t_uint96_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12692:9:61","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"12703:7:61","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"12715:6:61","type":""},{"name":"value1","nodeType":"YulTypedName","src":"12723:6:61","type":""},{"name":"value2","nodeType":"YulTypedName","src":"12731:6:61","type":""},{"name":"value3","nodeType":"YulTypedName","src":"12739:6:61","type":""}],"src":"12532:1599:61"},{"body":{"nodeType":"YulBlock","src":"14219:390:61","statements":[{"body":{"nodeType":"YulBlock","src":"14265:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"14267:77:61"},"nodeType":"YulFunctionCall","src":"14267:79:61"},"nodeType":"YulExpressionStatement","src":"14267:79:61"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"14240:7:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"14249:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"14236:3:61"},"nodeType":"YulFunctionCall","src":"14236:23:61"},{"kind":"number","nodeType":"YulLiteral","src":"14261:2:61","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"14232:3:61"},"nodeType":"YulFunctionCall","src":"14232:32:61"},"nodeType":"YulIf","src":"14229:119:61"},{"nodeType":"YulBlock","src":"14358:116:61","statements":[{"nodeType":"YulVariableDeclaration","src":"14373:15:61","value":{"kind":"number","nodeType":"YulLiteral","src":"14387:1:61","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"14377:6:61","type":""}]},{"nodeType":"YulAssignment","src":"14402:62:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14436:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"14447:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14432:3:61"},"nodeType":"YulFunctionCall","src":"14432:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"14456:7:61"}],"functionName":{"name":"abi_decode_t_uint16","nodeType":"YulIdentifier","src":"14412:19:61"},"nodeType":"YulFunctionCall","src":"14412:52:61"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"14402:6:61"}]}]},{"nodeType":"YulBlock","src":"14484:118:61","statements":[{"nodeType":"YulVariableDeclaration","src":"14499:16:61","value":{"kind":"number","nodeType":"YulLiteral","src":"14513:2:61","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"14503:6:61","type":""}]},{"nodeType":"YulAssignment","src":"14529:63:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14564:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"14575:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14560:3:61"},"nodeType":"YulFunctionCall","src":"14560:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"14584:7:61"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"14539:20:61"},"nodeType":"YulFunctionCall","src":"14539:53:61"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"14529:6:61"}]}]}]},"name":"abi_decode_tuple_t_uint16t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"14181:9:61","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"14192:7:61","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"14204:6:61","type":""},{"name":"value1","nodeType":"YulTypedName","src":"14212:6:61","type":""}],"src":"14137:472:61"},{"body":{"nodeType":"YulBlock","src":"14711:73:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14728:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"14733:6:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14721:6:61"},"nodeType":"YulFunctionCall","src":"14721:19:61"},"nodeType":"YulExpressionStatement","src":"14721:19:61"},{"nodeType":"YulAssignment","src":"14749:29:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14768:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"14773:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14764:3:61"},"nodeType":"YulFunctionCall","src":"14764:14:61"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"14749:11:61"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"14683:3:61","type":""},{"name":"length","nodeType":"YulTypedName","src":"14688:6:61","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"14699:11:61","type":""}],"src":"14615:169:61"},{"body":{"nodeType":"YulBlock","src":"14896:59:61","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"14918:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"14926:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14914:3:61"},"nodeType":"YulFunctionCall","src":"14914:14:61"},{"hexValue":"535452415445474953545f524f4c45","kind":"string","nodeType":"YulLiteral","src":"14930:17:61","type":"","value":"STRATEGIST_ROLE"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14907:6:61"},"nodeType":"YulFunctionCall","src":"14907:41:61"},"nodeType":"YulExpressionStatement","src":"14907:41:61"}]},"name":"store_literal_in_memory_17a8e30262c1f919c33056d877a3c22b95c2f5e4dac44683c1c2323cd79fbdb0","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"14888:6:61","type":""}],"src":"14790:165:61"},{"body":{"nodeType":"YulBlock","src":"15107:220:61","statements":[{"nodeType":"YulAssignment","src":"15117:74:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"15183:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"15188:2:61","type":"","value":"15"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"15124:58:61"},"nodeType":"YulFunctionCall","src":"15124:67:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"15117:3:61"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"15289:3:61"}],"functionName":{"name":"store_literal_in_memory_17a8e30262c1f919c33056d877a3c22b95c2f5e4dac44683c1c2323cd79fbdb0","nodeType":"YulIdentifier","src":"15200:88:61"},"nodeType":"YulFunctionCall","src":"15200:93:61"},"nodeType":"YulExpressionStatement","src":"15200:93:61"},{"nodeType":"YulAssignment","src":"15302:19:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"15313:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"15318:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15309:3:61"},"nodeType":"YulFunctionCall","src":"15309:12:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"15302:3:61"}]}]},"name":"abi_encode_t_stringliteral_17a8e30262c1f919c33056d877a3c22b95c2f5e4dac44683c1c2323cd79fbdb0_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"15095:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"15103:3:61","type":""}],"src":"14961:366:61"},{"body":{"nodeType":"YulBlock","src":"15504:248:61","statements":[{"nodeType":"YulAssignment","src":"15514:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15526:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"15537:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15522:3:61"},"nodeType":"YulFunctionCall","src":"15522:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"15514:4:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15561:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"15572:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15557:3:61"},"nodeType":"YulFunctionCall","src":"15557:17:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"15580:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"15586:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"15576:3:61"},"nodeType":"YulFunctionCall","src":"15576:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15550:6:61"},"nodeType":"YulFunctionCall","src":"15550:47:61"},"nodeType":"YulExpressionStatement","src":"15550:47:61"},{"nodeType":"YulAssignment","src":"15606:139:61","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"15740:4:61"}],"functionName":{"name":"abi_encode_t_stringliteral_17a8e30262c1f919c33056d877a3c22b95c2f5e4dac44683c1c2323cd79fbdb0_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"15614:124:61"},"nodeType":"YulFunctionCall","src":"15614:131:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"15606:4:61"}]}]},"name":"abi_encode_tuple_t_stringliteral_17a8e30262c1f919c33056d877a3c22b95c2f5e4dac44683c1c2323cd79fbdb0__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"15484:9:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"15499:4:61","type":""}],"src":"15333:419:61"},{"body":{"nodeType":"YulBlock","src":"15786:152:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15803:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"15806:77:61","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15796:6:61"},"nodeType":"YulFunctionCall","src":"15796:88:61"},"nodeType":"YulExpressionStatement","src":"15796:88:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15900:1:61","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"15903:4:61","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15893:6:61"},"nodeType":"YulFunctionCall","src":"15893:15:61"},"nodeType":"YulExpressionStatement","src":"15893:15:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15924:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"15927:4:61","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"15917:6:61"},"nodeType":"YulFunctionCall","src":"15917:15:61"},"nodeType":"YulExpressionStatement","src":"15917:15:61"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"15758:180:61"},{"body":{"nodeType":"YulBlock","src":"15989:149:61","statements":[{"nodeType":"YulAssignment","src":"15999:25:61","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"16022:1:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"16004:17:61"},"nodeType":"YulFunctionCall","src":"16004:20:61"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"15999:1:61"}]},{"nodeType":"YulAssignment","src":"16033:25:61","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"16056:1:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"16038:17:61"},"nodeType":"YulFunctionCall","src":"16038:20:61"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"16033:1:61"}]},{"nodeType":"YulAssignment","src":"16067:17:61","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"16079:1:61"},{"name":"y","nodeType":"YulIdentifier","src":"16082:1:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"16075:3:61"},"nodeType":"YulFunctionCall","src":"16075:9:61"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"16067:4:61"}]},{"body":{"nodeType":"YulBlock","src":"16109:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"16111:16:61"},"nodeType":"YulFunctionCall","src":"16111:18:61"},"nodeType":"YulExpressionStatement","src":"16111:18:61"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"16100:4:61"},{"name":"x","nodeType":"YulIdentifier","src":"16106:1:61"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"16097:2:61"},"nodeType":"YulFunctionCall","src":"16097:11:61"},"nodeType":"YulIf","src":"16094:37:61"}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"15975:1:61","type":""},{"name":"y","nodeType":"YulTypedName","src":"15978:1:61","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"15984:4:61","type":""}],"src":"15944:194:61"},{"body":{"nodeType":"YulBlock","src":"16188:147:61","statements":[{"nodeType":"YulAssignment","src":"16198:25:61","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"16221:1:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"16203:17:61"},"nodeType":"YulFunctionCall","src":"16203:20:61"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"16198:1:61"}]},{"nodeType":"YulAssignment","src":"16232:25:61","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"16255:1:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"16237:17:61"},"nodeType":"YulFunctionCall","src":"16237:20:61"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"16232:1:61"}]},{"nodeType":"YulAssignment","src":"16266:16:61","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"16277:1:61"},{"name":"y","nodeType":"YulIdentifier","src":"16280:1:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16273:3:61"},"nodeType":"YulFunctionCall","src":"16273:9:61"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"16266:3:61"}]},{"body":{"nodeType":"YulBlock","src":"16306:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"16308:16:61"},"nodeType":"YulFunctionCall","src":"16308:18:61"},"nodeType":"YulExpressionStatement","src":"16308:18:61"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"16298:1:61"},{"name":"sum","nodeType":"YulIdentifier","src":"16301:3:61"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"16295:2:61"},"nodeType":"YulFunctionCall","src":"16295:10:61"},"nodeType":"YulIf","src":"16292:36:61"}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"16175:1:61","type":""},{"name":"y","nodeType":"YulTypedName","src":"16178:1:61","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"16184:3:61","type":""}],"src":"16144:191:61"},{"body":{"nodeType":"YulBlock","src":"16369:152:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"16386:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"16389:77:61","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16379:6:61"},"nodeType":"YulFunctionCall","src":"16379:88:61"},"nodeType":"YulExpressionStatement","src":"16379:88:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"16483:1:61","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"16486:4:61","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16476:6:61"},"nodeType":"YulFunctionCall","src":"16476:15:61"},"nodeType":"YulExpressionStatement","src":"16476:15:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"16507:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"16510:4:61","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"16500:6:61"},"nodeType":"YulFunctionCall","src":"16500:15:61"},"nodeType":"YulExpressionStatement","src":"16500:15:61"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"16341:180:61"},{"body":{"nodeType":"YulBlock","src":"16570:190:61","statements":[{"nodeType":"YulAssignment","src":"16580:33:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"16607:5:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"16589:17:61"},"nodeType":"YulFunctionCall","src":"16589:24:61"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"16580:5:61"}]},{"body":{"nodeType":"YulBlock","src":"16703:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"16705:16:61"},"nodeType":"YulFunctionCall","src":"16705:18:61"},"nodeType":"YulExpressionStatement","src":"16705:18:61"}]},"condition":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"16628:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"16635:66:61","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"16625:2:61"},"nodeType":"YulFunctionCall","src":"16625:77:61"},"nodeType":"YulIf","src":"16622:103:61"},{"nodeType":"YulAssignment","src":"16734:20:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"16745:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"16752:1:61","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16741:3:61"},"nodeType":"YulFunctionCall","src":"16741:13:61"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"16734:3:61"}]}]},"name":"increment_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"16556:5:61","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"16566:3:61","type":""}],"src":"16527:233:61"},{"body":{"nodeType":"YulBlock","src":"16872:58:61","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"16894:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"16902:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16890:3:61"},"nodeType":"YulFunctionCall","src":"16890:14:61"},{"hexValue":"5452454153555245525f524f4c45","kind":"string","nodeType":"YulLiteral","src":"16906:16:61","type":"","value":"TREASURER_ROLE"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16883:6:61"},"nodeType":"YulFunctionCall","src":"16883:40:61"},"nodeType":"YulExpressionStatement","src":"16883:40:61"}]},"name":"store_literal_in_memory_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"16864:6:61","type":""}],"src":"16766:164:61"},{"body":{"nodeType":"YulBlock","src":"17082:220:61","statements":[{"nodeType":"YulAssignment","src":"17092:74:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17158:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"17163:2:61","type":"","value":"14"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"17099:58:61"},"nodeType":"YulFunctionCall","src":"17099:67:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"17092:3:61"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17264:3:61"}],"functionName":{"name":"store_literal_in_memory_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07","nodeType":"YulIdentifier","src":"17175:88:61"},"nodeType":"YulFunctionCall","src":"17175:93:61"},"nodeType":"YulExpressionStatement","src":"17175:93:61"},{"nodeType":"YulAssignment","src":"17277:19:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17288:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"17293:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17284:3:61"},"nodeType":"YulFunctionCall","src":"17284:12:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"17277:3:61"}]}]},"name":"abi_encode_t_stringliteral_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"17070:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"17078:3:61","type":""}],"src":"16936:366:61"},{"body":{"nodeType":"YulBlock","src":"17479:248:61","statements":[{"nodeType":"YulAssignment","src":"17489:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17501:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"17512:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17497:3:61"},"nodeType":"YulFunctionCall","src":"17497:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"17489:4:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17536:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"17547:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17532:3:61"},"nodeType":"YulFunctionCall","src":"17532:17:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"17555:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"17561:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"17551:3:61"},"nodeType":"YulFunctionCall","src":"17551:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17525:6:61"},"nodeType":"YulFunctionCall","src":"17525:47:61"},"nodeType":"YulExpressionStatement","src":"17525:47:61"},{"nodeType":"YulAssignment","src":"17581:139:61","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"17715:4:61"}],"functionName":{"name":"abi_encode_t_stringliteral_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"17589:124:61"},"nodeType":"YulFunctionCall","src":"17589:131:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"17581:4:61"}]}]},"name":"abi_encode_tuple_t_stringliteral_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"17459:9:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"17474:4:61","type":""}],"src":"17308:419:61"},{"body":{"nodeType":"YulBlock","src":"17859:206:61","statements":[{"nodeType":"YulAssignment","src":"17869:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17881:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"17892:2:61","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17877:3:61"},"nodeType":"YulFunctionCall","src":"17877:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"17869:4:61"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"17949:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17962:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"17973:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17958:3:61"},"nodeType":"YulFunctionCall","src":"17958:17:61"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"17905:43:61"},"nodeType":"YulFunctionCall","src":"17905:71:61"},"nodeType":"YulExpressionStatement","src":"17905:71:61"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"18030:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18043:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"18054:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18039:3:61"},"nodeType":"YulFunctionCall","src":"18039:18:61"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"17986:43:61"},"nodeType":"YulFunctionCall","src":"17986:72:61"},"nodeType":"YulExpressionStatement","src":"17986:72:61"}]},"name":"abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"17823:9:61","type":""},{"name":"value1","nodeType":"YulTypedName","src":"17835:6:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"17843:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"17854:4:61","type":""}],"src":"17733:332:61"},{"body":{"nodeType":"YulBlock","src":"18111:76:61","statements":[{"body":{"nodeType":"YulBlock","src":"18165:16:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"18174:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"18177:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"18167:6:61"},"nodeType":"YulFunctionCall","src":"18167:12:61"},"nodeType":"YulExpressionStatement","src":"18167:12:61"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"18134:5:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"18156:5:61"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"18141:14:61"},"nodeType":"YulFunctionCall","src":"18141:21:61"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"18131:2:61"},"nodeType":"YulFunctionCall","src":"18131:32:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"18124:6:61"},"nodeType":"YulFunctionCall","src":"18124:40:61"},"nodeType":"YulIf","src":"18121:60:61"}]},"name":"validator_revert_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"18104:5:61","type":""}],"src":"18071:116:61"},{"body":{"nodeType":"YulBlock","src":"18253:77:61","statements":[{"nodeType":"YulAssignment","src":"18263:22:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"18278:6:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"18272:5:61"},"nodeType":"YulFunctionCall","src":"18272:13:61"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"18263:5:61"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"18318:5:61"}],"functionName":{"name":"validator_revert_t_bool","nodeType":"YulIdentifier","src":"18294:23:61"},"nodeType":"YulFunctionCall","src":"18294:30:61"},"nodeType":"YulExpressionStatement","src":"18294:30:61"}]},"name":"abi_decode_t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"18231:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"18239:3:61","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"18247:5:61","type":""}],"src":"18193:137:61"},{"body":{"nodeType":"YulBlock","src":"18410:271:61","statements":[{"body":{"nodeType":"YulBlock","src":"18456:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"18458:77:61"},"nodeType":"YulFunctionCall","src":"18458:79:61"},"nodeType":"YulExpressionStatement","src":"18458:79:61"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"18431:7:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"18440:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"18427:3:61"},"nodeType":"YulFunctionCall","src":"18427:23:61"},{"kind":"number","nodeType":"YulLiteral","src":"18452:2:61","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"18423:3:61"},"nodeType":"YulFunctionCall","src":"18423:32:61"},"nodeType":"YulIf","src":"18420:119:61"},{"nodeType":"YulBlock","src":"18549:125:61","statements":[{"nodeType":"YulVariableDeclaration","src":"18564:15:61","value":{"kind":"number","nodeType":"YulLiteral","src":"18578:1:61","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"18568:6:61","type":""}]},{"nodeType":"YulAssignment","src":"18593:71:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18636:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"18647:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18632:3:61"},"nodeType":"YulFunctionCall","src":"18632:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"18656:7:61"}],"functionName":{"name":"abi_decode_t_bool_fromMemory","nodeType":"YulIdentifier","src":"18603:28:61"},"nodeType":"YulFunctionCall","src":"18603:61:61"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"18593:6:61"}]}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"18380:9:61","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"18391:7:61","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"18403:6:61","type":""}],"src":"18336:345:61"},{"body":{"nodeType":"YulBlock","src":"18841:288:61","statements":[{"nodeType":"YulAssignment","src":"18851:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18863:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"18874:2:61","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18859:3:61"},"nodeType":"YulFunctionCall","src":"18859:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"18851:4:61"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"18931:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18944:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"18955:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18940:3:61"},"nodeType":"YulFunctionCall","src":"18940:17:61"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"18887:43:61"},"nodeType":"YulFunctionCall","src":"18887:71:61"},"nodeType":"YulExpressionStatement","src":"18887:71:61"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"19012:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19025:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"19036:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19021:3:61"},"nodeType":"YulFunctionCall","src":"19021:18:61"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"18968:43:61"},"nodeType":"YulFunctionCall","src":"18968:72:61"},"nodeType":"YulExpressionStatement","src":"18968:72:61"},{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"19094:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19107:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"19118:2:61","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19103:3:61"},"nodeType":"YulFunctionCall","src":"19103:18:61"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"19050:43:61"},"nodeType":"YulFunctionCall","src":"19050:72:61"},"nodeType":"YulExpressionStatement","src":"19050:72:61"}]},"name":"abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"18797:9:61","type":""},{"name":"value2","nodeType":"YulTypedName","src":"18809:6:61","type":""},{"name":"value1","nodeType":"YulTypedName","src":"18817:6:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"18825:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"18836:4:61","type":""}],"src":"18687:442:61"},{"body":{"nodeType":"YulBlock","src":"19177:285:61","statements":[{"nodeType":"YulAssignment","src":"19187:23:61","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"19208:1:61"}],"functionName":{"name":"cleanup_t_int96","nodeType":"YulIdentifier","src":"19192:15:61"},"nodeType":"YulFunctionCall","src":"19192:18:61"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"19187:1:61"}]},{"nodeType":"YulAssignment","src":"19219:23:61","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"19240:1:61"}],"functionName":{"name":"cleanup_t_int96","nodeType":"YulIdentifier","src":"19224:15:61"},"nodeType":"YulFunctionCall","src":"19224:18:61"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"19219:1:61"}]},{"nodeType":"YulAssignment","src":"19251:16:61","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"19262:1:61"},{"name":"y","nodeType":"YulIdentifier","src":"19265:1:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19258:3:61"},"nodeType":"YulFunctionCall","src":"19258:9:61"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"19251:3:61"}]},{"body":{"nodeType":"YulBlock","src":"19433:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"19435:16:61"},"nodeType":"YulFunctionCall","src":"19435:18:61"},"nodeType":"YulExpressionStatement","src":"19435:18:61"}]},"condition":{"arguments":[{"arguments":[{"name":"sum","nodeType":"YulIdentifier","src":"19300:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"19305:26:61","type":"","value":"0x7fffffffffffffffffffffff"}],"functionName":{"name":"sgt","nodeType":"YulIdentifier","src":"19296:3:61"},"nodeType":"YulFunctionCall","src":"19296:36:61"},{"arguments":[{"name":"sum","nodeType":"YulIdentifier","src":"19350:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"19355:66:61","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff800000000000000000000000"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"19346:3:61"},"nodeType":"YulFunctionCall","src":"19346:76:61"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"19280:2:61"},"nodeType":"YulFunctionCall","src":"19280:152:61"},"nodeType":"YulIf","src":"19277:178:61"}]},"name":"checked_add_t_int96","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"19164:1:61","type":""},{"name":"y","nodeType":"YulTypedName","src":"19167:1:61","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"19173:3:61","type":""}],"src":"19135:327:61"},{"body":{"nodeType":"YulBlock","src":"19516:362:61","statements":[{"nodeType":"YulAssignment","src":"19526:25:61","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"19549:1:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"19531:17:61"},"nodeType":"YulFunctionCall","src":"19531:20:61"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"19526:1:61"}]},{"nodeType":"YulAssignment","src":"19560:25:61","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"19583:1:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"19565:17:61"},"nodeType":"YulFunctionCall","src":"19565:20:61"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"19560:1:61"}]},{"nodeType":"YulVariableDeclaration","src":"19594:28:61","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"19617:1:61"},{"name":"y","nodeType":"YulIdentifier","src":"19620:1:61"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"19613:3:61"},"nodeType":"YulFunctionCall","src":"19613:9:61"},"variables":[{"name":"product_raw","nodeType":"YulTypedName","src":"19598:11:61","type":""}]},{"nodeType":"YulAssignment","src":"19631:41:61","value":{"arguments":[{"name":"product_raw","nodeType":"YulIdentifier","src":"19660:11:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"19642:17:61"},"nodeType":"YulFunctionCall","src":"19642:30:61"},"variableNames":[{"name":"product","nodeType":"YulIdentifier","src":"19631:7:61"}]},{"body":{"nodeType":"YulBlock","src":"19849:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"19851:16:61"},"nodeType":"YulFunctionCall","src":"19851:18:61"},"nodeType":"YulExpressionStatement","src":"19851:18:61"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"19782:1:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"19775:6:61"},"nodeType":"YulFunctionCall","src":"19775:9:61"},{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"19805:1:61"},{"arguments":[{"name":"product","nodeType":"YulIdentifier","src":"19812:7:61"},{"name":"x","nodeType":"YulIdentifier","src":"19821:1:61"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"19808:3:61"},"nodeType":"YulFunctionCall","src":"19808:15:61"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"19802:2:61"},"nodeType":"YulFunctionCall","src":"19802:22:61"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"19755:2:61"},"nodeType":"YulFunctionCall","src":"19755:83:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"19735:6:61"},"nodeType":"YulFunctionCall","src":"19735:113:61"},"nodeType":"YulIf","src":"19732:139:61"}]},"name":"checked_mul_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"19499:1:61","type":""},{"name":"y","nodeType":"YulTypedName","src":"19502:1:61","type":""}],"returnVariables":[{"name":"product","nodeType":"YulTypedName","src":"19508:7:61","type":""}],"src":"19468:410:61"},{"body":{"nodeType":"YulBlock","src":"19982:124:61","statements":[{"nodeType":"YulAssignment","src":"19992:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20004:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"20015:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20000:3:61"},"nodeType":"YulFunctionCall","src":"20000:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"19992:4:61"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"20072:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20085:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"20096:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20081:3:61"},"nodeType":"YulFunctionCall","src":"20081:17:61"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"20028:43:61"},"nodeType":"YulFunctionCall","src":"20028:71:61"},"nodeType":"YulExpressionStatement","src":"20028:71:61"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"19954:9:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"19966:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"19977:4:61","type":""}],"src":"19884:222:61"},{"body":{"nodeType":"YulBlock","src":"20175:80:61","statements":[{"nodeType":"YulAssignment","src":"20185:22:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"20200:6:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"20194:5:61"},"nodeType":"YulFunctionCall","src":"20194:13:61"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"20185:5:61"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"20243:5:61"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"20216:26:61"},"nodeType":"YulFunctionCall","src":"20216:33:61"},"nodeType":"YulExpressionStatement","src":"20216:33:61"}]},"name":"abi_decode_t_uint256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"20153:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"20161:3:61","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"20169:5:61","type":""}],"src":"20112:143:61"},{"body":{"nodeType":"YulBlock","src":"20338:274:61","statements":[{"body":{"nodeType":"YulBlock","src":"20384:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"20386:77:61"},"nodeType":"YulFunctionCall","src":"20386:79:61"},"nodeType":"YulExpressionStatement","src":"20386:79:61"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"20359:7:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"20368:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"20355:3:61"},"nodeType":"YulFunctionCall","src":"20355:23:61"},{"kind":"number","nodeType":"YulLiteral","src":"20380:2:61","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"20351:3:61"},"nodeType":"YulFunctionCall","src":"20351:32:61"},"nodeType":"YulIf","src":"20348:119:61"},{"nodeType":"YulBlock","src":"20477:128:61","statements":[{"nodeType":"YulVariableDeclaration","src":"20492:15:61","value":{"kind":"number","nodeType":"YulLiteral","src":"20506:1:61","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"20496:6:61","type":""}]},{"nodeType":"YulAssignment","src":"20521:74:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20567:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"20578:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20563:3:61"},"nodeType":"YulFunctionCall","src":"20563:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"20587:7:61"}],"functionName":{"name":"abi_decode_t_uint256_fromMemory","nodeType":"YulIdentifier","src":"20531:31:61"},"nodeType":"YulFunctionCall","src":"20531:64:61"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"20521:6:61"}]}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"20308:9:61","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"20319:7:61","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"20331:6:61","type":""}],"src":"20261:351:61"},{"body":{"nodeType":"YulBlock","src":"20650:28:61","statements":[{"nodeType":"YulAssignment","src":"20660:12:61","value":{"name":"value","nodeType":"YulIdentifier","src":"20667:5:61"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"20660:3:61"}]}]},"name":"identity","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"20636:5:61","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"20646:3:61","type":""}],"src":"20618:60:61"},{"body":{"nodeType":"YulBlock","src":"20744:82:61","statements":[{"nodeType":"YulAssignment","src":"20754:66:61","value":{"arguments":[{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"20812:5:61"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"20794:17:61"},"nodeType":"YulFunctionCall","src":"20794:24:61"}],"functionName":{"name":"identity","nodeType":"YulIdentifier","src":"20785:8:61"},"nodeType":"YulFunctionCall","src":"20785:34:61"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"20767:17:61"},"nodeType":"YulFunctionCall","src":"20767:53:61"},"variableNames":[{"name":"converted","nodeType":"YulIdentifier","src":"20754:9:61"}]}]},"name":"convert_t_uint160_to_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"20724:5:61","type":""}],"returnVariables":[{"name":"converted","nodeType":"YulTypedName","src":"20734:9:61","type":""}],"src":"20684:142:61"},{"body":{"nodeType":"YulBlock","src":"20892:66:61","statements":[{"nodeType":"YulAssignment","src":"20902:50:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"20946:5:61"}],"functionName":{"name":"convert_t_uint160_to_t_uint160","nodeType":"YulIdentifier","src":"20915:30:61"},"nodeType":"YulFunctionCall","src":"20915:37:61"},"variableNames":[{"name":"converted","nodeType":"YulIdentifier","src":"20902:9:61"}]}]},"name":"convert_t_uint160_to_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"20872:5:61","type":""}],"returnVariables":[{"name":"converted","nodeType":"YulTypedName","src":"20882:9:61","type":""}],"src":"20832:126:61"},{"body":{"nodeType":"YulBlock","src":"21044:66:61","statements":[{"nodeType":"YulAssignment","src":"21054:50:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"21098:5:61"}],"functionName":{"name":"convert_t_uint160_to_t_address","nodeType":"YulIdentifier","src":"21067:30:61"},"nodeType":"YulFunctionCall","src":"21067:37:61"},"variableNames":[{"name":"converted","nodeType":"YulIdentifier","src":"21054:9:61"}]}]},"name":"convert_t_contract$_ISuperToken_$7015_to_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"21024:5:61","type":""}],"returnVariables":[{"name":"converted","nodeType":"YulTypedName","src":"21034:9:61","type":""}],"src":"20964:146:61"},{"body":{"nodeType":"YulBlock","src":"21201:86:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"21218:3:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"21274:5:61"}],"functionName":{"name":"convert_t_contract$_ISuperToken_$7015_to_t_address","nodeType":"YulIdentifier","src":"21223:50:61"},"nodeType":"YulFunctionCall","src":"21223:57:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21211:6:61"},"nodeType":"YulFunctionCall","src":"21211:70:61"},"nodeType":"YulExpressionStatement","src":"21211:70:61"}]},"name":"abi_encode_t_contract$_ISuperToken_$7015_to_t_address_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"21189:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"21196:3:61","type":""}],"src":"21116:171:61"},{"body":{"nodeType":"YulBlock","src":"21354:51:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"21371:3:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"21392:5:61"}],"functionName":{"name":"cleanup_t_int96","nodeType":"YulIdentifier","src":"21376:15:61"},"nodeType":"YulFunctionCall","src":"21376:22:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21364:6:61"},"nodeType":"YulFunctionCall","src":"21364:35:61"},"nodeType":"YulExpressionStatement","src":"21364:35:61"}]},"name":"abi_encode_t_int96_to_t_int96_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"21342:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"21349:3:61","type":""}],"src":"21293:112:61"},{"body":{"nodeType":"YulBlock","src":"21553:222:61","statements":[{"nodeType":"YulAssignment","src":"21563:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21575:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"21586:2:61","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21571:3:61"},"nodeType":"YulFunctionCall","src":"21571:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"21563:4:61"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"21663:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21676:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"21687:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21672:3:61"},"nodeType":"YulFunctionCall","src":"21672:17:61"}],"functionName":{"name":"abi_encode_t_contract$_ISuperToken_$7015_to_t_address_fromStack","nodeType":"YulIdentifier","src":"21599:63:61"},"nodeType":"YulFunctionCall","src":"21599:91:61"},"nodeType":"YulExpressionStatement","src":"21599:91:61"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"21740:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21753:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"21764:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21749:3:61"},"nodeType":"YulFunctionCall","src":"21749:18:61"}],"functionName":{"name":"abi_encode_t_int96_to_t_int96_fromStack","nodeType":"YulIdentifier","src":"21700:39:61"},"nodeType":"YulFunctionCall","src":"21700:68:61"},"nodeType":"YulExpressionStatement","src":"21700:68:61"}]},"name":"abi_encode_tuple_t_contract$_ISuperToken_$7015_t_int96__to_t_address_t_int96__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"21517:9:61","type":""},{"name":"value1","nodeType":"YulTypedName","src":"21529:6:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"21537:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"21548:4:61","type":""}],"src":"21411:364:61"},{"body":{"nodeType":"YulBlock","src":"21927:226:61","statements":[{"nodeType":"YulAssignment","src":"21937:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21949:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"21960:2:61","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21945:3:61"},"nodeType":"YulFunctionCall","src":"21945:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"21937:4:61"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"22037:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22050:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"22061:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22046:3:61"},"nodeType":"YulFunctionCall","src":"22046:17:61"}],"functionName":{"name":"abi_encode_t_contract$_ISuperToken_$7015_to_t_address_fromStack","nodeType":"YulIdentifier","src":"21973:63:61"},"nodeType":"YulFunctionCall","src":"21973:91:61"},"nodeType":"YulExpressionStatement","src":"21973:91:61"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"22118:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22131:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"22142:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22127:3:61"},"nodeType":"YulFunctionCall","src":"22127:18:61"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"22074:43:61"},"nodeType":"YulFunctionCall","src":"22074:72:61"},"nodeType":"YulExpressionStatement","src":"22074:72:61"}]},"name":"abi_encode_tuple_t_contract$_ISuperToken_$7015_t_address__to_t_address_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"21891:9:61","type":""},{"name":"value1","nodeType":"YulTypedName","src":"21903:6:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"21911:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"21922:4:61","type":""}],"src":"21781:372:61"},{"body":{"nodeType":"YulBlock","src":"22220:78:61","statements":[{"nodeType":"YulAssignment","src":"22230:22:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"22245:6:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"22239:5:61"},"nodeType":"YulFunctionCall","src":"22239:13:61"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"22230:5:61"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"22286:5:61"}],"functionName":{"name":"validator_revert_t_int96","nodeType":"YulIdentifier","src":"22261:24:61"},"nodeType":"YulFunctionCall","src":"22261:31:61"},"nodeType":"YulExpressionStatement","src":"22261:31:61"}]},"name":"abi_decode_t_int96_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"22198:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"22206:3:61","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"22214:5:61","type":""}],"src":"22159:139:61"},{"body":{"nodeType":"YulBlock","src":"22379:272:61","statements":[{"body":{"nodeType":"YulBlock","src":"22425:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"22427:77:61"},"nodeType":"YulFunctionCall","src":"22427:79:61"},"nodeType":"YulExpressionStatement","src":"22427:79:61"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"22400:7:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"22409:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"22396:3:61"},"nodeType":"YulFunctionCall","src":"22396:23:61"},{"kind":"number","nodeType":"YulLiteral","src":"22421:2:61","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"22392:3:61"},"nodeType":"YulFunctionCall","src":"22392:32:61"},"nodeType":"YulIf","src":"22389:119:61"},{"nodeType":"YulBlock","src":"22518:126:61","statements":[{"nodeType":"YulVariableDeclaration","src":"22533:15:61","value":{"kind":"number","nodeType":"YulLiteral","src":"22547:1:61","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"22537:6:61","type":""}]},{"nodeType":"YulAssignment","src":"22562:72:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22606:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"22617:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22602:3:61"},"nodeType":"YulFunctionCall","src":"22602:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"22626:7:61"}],"functionName":{"name":"abi_decode_t_int96_fromMemory","nodeType":"YulIdentifier","src":"22572:29:61"},"nodeType":"YulFunctionCall","src":"22572:62:61"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"22562:6:61"}]}]}]},"name":"abi_decode_tuple_t_int96_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"22349:9:61","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"22360:7:61","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"22372:6:61","type":""}],"src":"22304:347:61"},{"body":{"nodeType":"YulBlock","src":"22685:152:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"22702:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"22705:77:61","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22695:6:61"},"nodeType":"YulFunctionCall","src":"22695:88:61"},"nodeType":"YulExpressionStatement","src":"22695:88:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"22799:1:61","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"22802:4:61","type":"","value":"0x31"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22792:6:61"},"nodeType":"YulFunctionCall","src":"22792:15:61"},"nodeType":"YulExpressionStatement","src":"22792:15:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"22823:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"22826:4:61","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"22816:6:61"},"nodeType":"YulFunctionCall","src":"22816:15:61"},"nodeType":"YulExpressionStatement","src":"22816:15:61"}]},"name":"panic_error_0x31","nodeType":"YulFunctionDefinition","src":"22657:180:61"},{"body":{"nodeType":"YulBlock","src":"22957:34:61","statements":[{"nodeType":"YulAssignment","src":"22967:18:61","value":{"name":"pos","nodeType":"YulIdentifier","src":"22982:3:61"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"22967:11:61"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"22929:3:61","type":""},{"name":"length","nodeType":"YulTypedName","src":"22934:6:61","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"22945:11:61","type":""}],"src":"22843:148:61"},{"body":{"nodeType":"YulBlock","src":"23103:67:61","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"23125:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"23133:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23121:3:61"},"nodeType":"YulFunctionCall","src":"23121:14:61"},{"hexValue":"416363657373436f6e74726f6c3a206163636f756e7420","kind":"string","nodeType":"YulLiteral","src":"23137:25:61","type":"","value":"AccessControl: account "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"23114:6:61"},"nodeType":"YulFunctionCall","src":"23114:49:61"},"nodeType":"YulExpressionStatement","src":"23114:49:61"}]},"name":"store_literal_in_memory_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"23095:6:61","type":""}],"src":"22997:173:61"},{"body":{"nodeType":"YulBlock","src":"23340:238:61","statements":[{"nodeType":"YulAssignment","src":"23350:92:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"23434:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"23439:2:61","type":"","value":"23"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"23357:76:61"},"nodeType":"YulFunctionCall","src":"23357:85:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"23350:3:61"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"23540:3:61"}],"functionName":{"name":"store_literal_in_memory_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874","nodeType":"YulIdentifier","src":"23451:88:61"},"nodeType":"YulFunctionCall","src":"23451:93:61"},"nodeType":"YulExpressionStatement","src":"23451:93:61"},{"nodeType":"YulAssignment","src":"23553:19:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"23564:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"23569:2:61","type":"","value":"23"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23560:3:61"},"nodeType":"YulFunctionCall","src":"23560:12:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"23553:3:61"}]}]},"name":"abi_encode_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"23328:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"23336:3:61","type":""}],"src":"23176:402:61"},{"body":{"nodeType":"YulBlock","src":"23643:40:61","statements":[{"nodeType":"YulAssignment","src":"23654:22:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"23670:5:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"23664:5:61"},"nodeType":"YulFunctionCall","src":"23664:12:61"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"23654:6:61"}]}]},"name":"array_length_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"23626:5:61","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"23636:6:61","type":""}],"src":"23584:99:61"},{"body":{"nodeType":"YulBlock","src":"23751:184:61","statements":[{"nodeType":"YulVariableDeclaration","src":"23761:10:61","value":{"kind":"number","nodeType":"YulLiteral","src":"23770:1:61","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"23765:1:61","type":""}]},{"body":{"nodeType":"YulBlock","src":"23830:63:61","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"23855:3:61"},{"name":"i","nodeType":"YulIdentifier","src":"23860:1:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23851:3:61"},"nodeType":"YulFunctionCall","src":"23851:11:61"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"23874:3:61"},{"name":"i","nodeType":"YulIdentifier","src":"23879:1:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23870:3:61"},"nodeType":"YulFunctionCall","src":"23870:11:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"23864:5:61"},"nodeType":"YulFunctionCall","src":"23864:18:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"23844:6:61"},"nodeType":"YulFunctionCall","src":"23844:39:61"},"nodeType":"YulExpressionStatement","src":"23844:39:61"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"23791:1:61"},{"name":"length","nodeType":"YulIdentifier","src":"23794:6:61"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"23788:2:61"},"nodeType":"YulFunctionCall","src":"23788:13:61"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"23802:19:61","statements":[{"nodeType":"YulAssignment","src":"23804:15:61","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"23813:1:61"},{"kind":"number","nodeType":"YulLiteral","src":"23816:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23809:3:61"},"nodeType":"YulFunctionCall","src":"23809:10:61"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"23804:1:61"}]}]},"pre":{"nodeType":"YulBlock","src":"23784:3:61","statements":[]},"src":"23780:113:61"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"23913:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"23918:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23909:3:61"},"nodeType":"YulFunctionCall","src":"23909:16:61"},{"kind":"number","nodeType":"YulLiteral","src":"23927:1:61","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"23902:6:61"},"nodeType":"YulFunctionCall","src":"23902:27:61"},"nodeType":"YulExpressionStatement","src":"23902:27:61"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"23733:3:61","type":""},{"name":"dst","nodeType":"YulTypedName","src":"23738:3:61","type":""},{"name":"length","nodeType":"YulTypedName","src":"23743:6:61","type":""}],"src":"23689:246:61"},{"body":{"nodeType":"YulBlock","src":"24051:280:61","statements":[{"nodeType":"YulVariableDeclaration","src":"24061:53:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"24108:5:61"}],"functionName":{"name":"array_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"24075:32:61"},"nodeType":"YulFunctionCall","src":"24075:39:61"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"24065:6:61","type":""}]},{"nodeType":"YulAssignment","src":"24123:96:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"24207:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"24212:6:61"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"24130:76:61"},"nodeType":"YulFunctionCall","src":"24130:89:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"24123:3:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"24267:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"24274:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24263:3:61"},"nodeType":"YulFunctionCall","src":"24263:16:61"},{"name":"pos","nodeType":"YulIdentifier","src":"24281:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"24286:6:61"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"24228:34:61"},"nodeType":"YulFunctionCall","src":"24228:65:61"},"nodeType":"YulExpressionStatement","src":"24228:65:61"},{"nodeType":"YulAssignment","src":"24302:23:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"24313:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"24318:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24309:3:61"},"nodeType":"YulFunctionCall","src":"24309:16:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"24302:3:61"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"24032:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"24039:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"24047:3:61","type":""}],"src":"23941:390:61"},{"body":{"nodeType":"YulBlock","src":"24443:61:61","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"24465:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"24473:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24461:3:61"},"nodeType":"YulFunctionCall","src":"24461:14:61"},{"hexValue":"206973206d697373696e6720726f6c6520","kind":"string","nodeType":"YulLiteral","src":"24477:19:61","type":"","value":" is missing role "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"24454:6:61"},"nodeType":"YulFunctionCall","src":"24454:43:61"},"nodeType":"YulExpressionStatement","src":"24454:43:61"}]},"name":"store_literal_in_memory_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"24435:6:61","type":""}],"src":"24337:167:61"},{"body":{"nodeType":"YulBlock","src":"24674:238:61","statements":[{"nodeType":"YulAssignment","src":"24684:92:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"24768:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"24773:2:61","type":"","value":"17"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"24691:76:61"},"nodeType":"YulFunctionCall","src":"24691:85:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"24684:3:61"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"24874:3:61"}],"functionName":{"name":"store_literal_in_memory_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69","nodeType":"YulIdentifier","src":"24785:88:61"},"nodeType":"YulFunctionCall","src":"24785:93:61"},"nodeType":"YulExpressionStatement","src":"24785:93:61"},{"nodeType":"YulAssignment","src":"24887:19:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"24898:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"24903:2:61","type":"","value":"17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24894:3:61"},"nodeType":"YulFunctionCall","src":"24894:12:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"24887:3:61"}]}]},"name":"abi_encode_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"24662:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"24670:3:61","type":""}],"src":"24510:402:61"},{"body":{"nodeType":"YulBlock","src":"25304:581:61","statements":[{"nodeType":"YulAssignment","src":"25315:155:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"25466:3:61"}],"functionName":{"name":"abi_encode_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"25322:142:61"},"nodeType":"YulFunctionCall","src":"25322:148:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"25315:3:61"}]},{"nodeType":"YulAssignment","src":"25480:102:61","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"25569:6:61"},{"name":"pos","nodeType":"YulIdentifier","src":"25578:3:61"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"25487:81:61"},"nodeType":"YulFunctionCall","src":"25487:95:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"25480:3:61"}]},{"nodeType":"YulAssignment","src":"25592:155:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"25743:3:61"}],"functionName":{"name":"abi_encode_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"25599:142:61"},"nodeType":"YulFunctionCall","src":"25599:148:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"25592:3:61"}]},{"nodeType":"YulAssignment","src":"25757:102:61","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"25846:6:61"},{"name":"pos","nodeType":"YulIdentifier","src":"25855:3:61"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"25764:81:61"},"nodeType":"YulFunctionCall","src":"25764:95:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"25757:3:61"}]},{"nodeType":"YulAssignment","src":"25869:10:61","value":{"name":"pos","nodeType":"YulIdentifier","src":"25876:3:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"25869:3:61"}]}]},"name":"abi_encode_tuple_packed_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_t_string_memory_ptr_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"25275:3:61","type":""},{"name":"value1","nodeType":"YulTypedName","src":"25281:6:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"25289:6:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"25300:3:61","type":""}],"src":"24918:967:61"},{"body":{"nodeType":"YulBlock","src":"25983:285:61","statements":[{"nodeType":"YulVariableDeclaration","src":"25993:53:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"26040:5:61"}],"functionName":{"name":"array_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"26007:32:61"},"nodeType":"YulFunctionCall","src":"26007:39:61"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"25997:6:61","type":""}]},{"nodeType":"YulAssignment","src":"26055:78:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"26121:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"26126:6:61"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"26062:58:61"},"nodeType":"YulFunctionCall","src":"26062:71:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"26055:3:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"26181:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"26188:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26177:3:61"},"nodeType":"YulFunctionCall","src":"26177:16:61"},{"name":"pos","nodeType":"YulIdentifier","src":"26195:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"26200:6:61"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"26142:34:61"},"nodeType":"YulFunctionCall","src":"26142:65:61"},"nodeType":"YulExpressionStatement","src":"26142:65:61"},{"nodeType":"YulAssignment","src":"26216:46:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"26227:3:61"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"26254:6:61"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"26232:21:61"},"nodeType":"YulFunctionCall","src":"26232:29:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26223:3:61"},"nodeType":"YulFunctionCall","src":"26223:39:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"26216:3:61"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"25964:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"25971:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"25979:3:61","type":""}],"src":"25891:377:61"},{"body":{"nodeType":"YulBlock","src":"26392:195:61","statements":[{"nodeType":"YulAssignment","src":"26402:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"26414:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"26425:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26410:3:61"},"nodeType":"YulFunctionCall","src":"26410:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"26402:4:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"26449:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"26460:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26445:3:61"},"nodeType":"YulFunctionCall","src":"26445:17:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"26468:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"26474:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"26464:3:61"},"nodeType":"YulFunctionCall","src":"26464:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"26438:6:61"},"nodeType":"YulFunctionCall","src":"26438:47:61"},"nodeType":"YulExpressionStatement","src":"26438:47:61"},{"nodeType":"YulAssignment","src":"26494:86:61","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"26566:6:61"},{"name":"tail","nodeType":"YulIdentifier","src":"26575:4:61"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"26502:63:61"},"nodeType":"YulFunctionCall","src":"26502:78:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"26494:4:61"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"26364:9:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"26376:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"26387:4:61","type":""}],"src":"26274:313:61"},{"body":{"nodeType":"YulBlock","src":"26656:80:61","statements":[{"nodeType":"YulAssignment","src":"26666:22:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"26681:6:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"26675:5:61"},"nodeType":"YulFunctionCall","src":"26675:13:61"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"26666:5:61"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"26724:5:61"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"26697:26:61"},"nodeType":"YulFunctionCall","src":"26697:33:61"},"nodeType":"YulExpressionStatement","src":"26697:33:61"}]},"name":"abi_decode_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"26634:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"26642:3:61","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"26650:5:61","type":""}],"src":"26593:143:61"},{"body":{"nodeType":"YulBlock","src":"26819:274:61","statements":[{"body":{"nodeType":"YulBlock","src":"26865:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"26867:77:61"},"nodeType":"YulFunctionCall","src":"26867:79:61"},"nodeType":"YulExpressionStatement","src":"26867:79:61"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"26840:7:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"26849:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"26836:3:61"},"nodeType":"YulFunctionCall","src":"26836:23:61"},{"kind":"number","nodeType":"YulLiteral","src":"26861:2:61","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"26832:3:61"},"nodeType":"YulFunctionCall","src":"26832:32:61"},"nodeType":"YulIf","src":"26829:119:61"},{"nodeType":"YulBlock","src":"26958:128:61","statements":[{"nodeType":"YulVariableDeclaration","src":"26973:15:61","value":{"kind":"number","nodeType":"YulLiteral","src":"26987:1:61","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"26977:6:61","type":""}]},{"nodeType":"YulAssignment","src":"27002:74:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"27048:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"27059:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"27044:3:61"},"nodeType":"YulFunctionCall","src":"27044:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"27068:7:61"}],"functionName":{"name":"abi_decode_t_address_fromMemory","nodeType":"YulIdentifier","src":"27012:31:61"},"nodeType":"YulFunctionCall","src":"27012:64:61"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"27002:6:61"}]}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"26789:9:61","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"26800:7:61","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"26812:6:61","type":""}],"src":"26742:351:61"},{"body":{"nodeType":"YulBlock","src":"27228:32:61","statements":[{"nodeType":"YulAssignment","src":"27238:16:61","value":{"name":"value","nodeType":"YulIdentifier","src":"27249:5:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"27238:7:61"}]}]},"name":"cleanup_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"27210:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"27220:7:61","type":""}],"src":"27099:161:61"},{"body":{"nodeType":"YulBlock","src":"27311:32:61","statements":[{"nodeType":"YulAssignment","src":"27321:16:61","value":{"name":"value","nodeType":"YulIdentifier","src":"27332:5:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"27321:7:61"}]}]},"name":"cleanup_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"27293:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"27303:7:61","type":""}],"src":"27266:77:61"},{"body":{"nodeType":"YulBlock","src":"27390:51:61","statements":[{"nodeType":"YulAssignment","src":"27400:34:61","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"27425:1:61","type":"","value":"0"},{"name":"value","nodeType":"YulIdentifier","src":"27428:5:61"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"27421:3:61"},"nodeType":"YulFunctionCall","src":"27421:13:61"},"variableNames":[{"name":"newValue","nodeType":"YulIdentifier","src":"27400:8:61"}]}]},"name":"shift_left_0","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"27371:5:61","type":""}],"returnVariables":[{"name":"newValue","nodeType":"YulTypedName","src":"27381:8:61","type":""}],"src":"27349:92:61"},{"body":{"nodeType":"YulBlock","src":"27591:170:61","statements":[{"nodeType":"YulAssignment","src":"27601:154:61","value":{"arguments":[{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"27747:5:61"}],"functionName":{"name":"cleanup_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1","nodeType":"YulIdentifier","src":"27645:101:61"},"nodeType":"YulFunctionCall","src":"27645:108:61"}],"functionName":{"name":"shift_left_0","nodeType":"YulIdentifier","src":"27632:12:61"},"nodeType":"YulFunctionCall","src":"27632:122:61"}],"functionName":{"name":"cleanup_t_bytes32","nodeType":"YulIdentifier","src":"27614:17:61"},"nodeType":"YulFunctionCall","src":"27614:141:61"},"variableNames":[{"name":"converted","nodeType":"YulIdentifier","src":"27601:9:61"}]}]},"name":"convert_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1_to_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"27571:5:61","type":""}],"returnVariables":[{"name":"converted","nodeType":"YulTypedName","src":"27581:9:61","type":""}],"src":"27447:314:61"},{"body":{"nodeType":"YulBlock","src":"27916:150:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"27933:3:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"28053:5:61"}],"functionName":{"name":"convert_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1_to_t_bytes32","nodeType":"YulIdentifier","src":"27938:114:61"},"nodeType":"YulFunctionCall","src":"27938:121:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"27926:6:61"},"nodeType":"YulFunctionCall","src":"27926:134:61"},"nodeType":"YulExpressionStatement","src":"27926:134:61"}]},"name":"abi_encode_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1_to_t_bytes32_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"27904:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"27911:3:61","type":""}],"src":"27767:299:61"},{"body":{"nodeType":"YulBlock","src":"28254:208:61","statements":[{"nodeType":"YulAssignment","src":"28264:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"28276:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"28287:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"28272:3:61"},"nodeType":"YulFunctionCall","src":"28272:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"28264:4:61"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"28428:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"28441:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"28452:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"28437:3:61"},"nodeType":"YulFunctionCall","src":"28437:17:61"}],"functionName":{"name":"abi_encode_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1_to_t_bytes32_fromStack","nodeType":"YulIdentifier","src":"28300:127:61"},"nodeType":"YulFunctionCall","src":"28300:155:61"},"nodeType":"YulExpressionStatement","src":"28300:155:61"}]},"name":"abi_encode_tuple_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1__to_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"28226:9:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"28238:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"28249:4:61","type":""}],"src":"28072:390:61"},{"body":{"nodeType":"YulBlock","src":"28537:51:61","statements":[{"nodeType":"YulAssignment","src":"28547:35:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"28576:5:61"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"28558:17:61"},"nodeType":"YulFunctionCall","src":"28558:24:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"28547:7:61"}]}]},"name":"cleanup_t_contract$_ISuperAgreement_$6463","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"28519:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"28529:7:61","type":""}],"src":"28468:120:61"},{"body":{"nodeType":"YulBlock","src":"28661:103:61","statements":[{"body":{"nodeType":"YulBlock","src":"28742:16:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"28751:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"28754:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"28744:6:61"},"nodeType":"YulFunctionCall","src":"28744:12:61"},"nodeType":"YulExpressionStatement","src":"28744:12:61"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"28684:5:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"28733:5:61"}],"functionName":{"name":"cleanup_t_contract$_ISuperAgreement_$6463","nodeType":"YulIdentifier","src":"28691:41:61"},"nodeType":"YulFunctionCall","src":"28691:48:61"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"28681:2:61"},"nodeType":"YulFunctionCall","src":"28681:59:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"28674:6:61"},"nodeType":"YulFunctionCall","src":"28674:67:61"},"nodeType":"YulIf","src":"28671:87:61"}]},"name":"validator_revert_t_contract$_ISuperAgreement_$6463","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"28654:5:61","type":""}],"src":"28594:170:61"},{"body":{"nodeType":"YulBlock","src":"28857:104:61","statements":[{"nodeType":"YulAssignment","src":"28867:22:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"28882:6:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"28876:5:61"},"nodeType":"YulFunctionCall","src":"28876:13:61"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"28867:5:61"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"28949:5:61"}],"functionName":{"name":"validator_revert_t_contract$_ISuperAgreement_$6463","nodeType":"YulIdentifier","src":"28898:50:61"},"nodeType":"YulFunctionCall","src":"28898:57:61"},"nodeType":"YulExpressionStatement","src":"28898:57:61"}]},"name":"abi_decode_t_contract$_ISuperAgreement_$6463_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"28835:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"28843:3:61","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"28851:5:61","type":""}],"src":"28770:191:61"},{"body":{"nodeType":"YulBlock","src":"29068:298:61","statements":[{"body":{"nodeType":"YulBlock","src":"29114:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"29116:77:61"},"nodeType":"YulFunctionCall","src":"29116:79:61"},"nodeType":"YulExpressionStatement","src":"29116:79:61"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"29089:7:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"29098:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"29085:3:61"},"nodeType":"YulFunctionCall","src":"29085:23:61"},{"kind":"number","nodeType":"YulLiteral","src":"29110:2:61","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"29081:3:61"},"nodeType":"YulFunctionCall","src":"29081:32:61"},"nodeType":"YulIf","src":"29078:119:61"},{"nodeType":"YulBlock","src":"29207:152:61","statements":[{"nodeType":"YulVariableDeclaration","src":"29222:15:61","value":{"kind":"number","nodeType":"YulLiteral","src":"29236:1:61","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"29226:6:61","type":""}]},{"nodeType":"YulAssignment","src":"29251:98:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"29321:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"29332:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"29317:3:61"},"nodeType":"YulFunctionCall","src":"29317:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"29341:7:61"}],"functionName":{"name":"abi_decode_t_contract$_ISuperAgreement_$6463_fromMemory","nodeType":"YulIdentifier","src":"29261:55:61"},"nodeType":"YulFunctionCall","src":"29261:88:61"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"29251:6:61"}]}]}]},"name":"abi_decode_tuple_t_contract$_ISuperAgreement_$6463_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"29038:9:61","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"29049:7:61","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"29061:6:61","type":""}],"src":"28967:399:61"},{"body":{"nodeType":"YulBlock","src":"29400:152:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"29417:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"29420:77:61","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"29410:6:61"},"nodeType":"YulFunctionCall","src":"29410:88:61"},"nodeType":"YulExpressionStatement","src":"29410:88:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"29514:1:61","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"29517:4:61","type":"","value":"0x01"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"29507:6:61"},"nodeType":"YulFunctionCall","src":"29507:15:61"},"nodeType":"YulExpressionStatement","src":"29507:15:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"29538:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"29541:4:61","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"29531:6:61"},"nodeType":"YulFunctionCall","src":"29531:15:61"},"nodeType":"YulExpressionStatement","src":"29531:15:61"}]},"name":"panic_error_0x01","nodeType":"YulFunctionDefinition","src":"29372:180:61"},{"body":{"nodeType":"YulBlock","src":"29602:172:61","statements":[{"nodeType":"YulAssignment","src":"29612:24:61","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"29634:1:61"}],"functionName":{"name":"cleanup_t_uint96","nodeType":"YulIdentifier","src":"29617:16:61"},"nodeType":"YulFunctionCall","src":"29617:19:61"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"29612:1:61"}]},{"nodeType":"YulAssignment","src":"29645:24:61","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"29667:1:61"}],"functionName":{"name":"cleanup_t_uint96","nodeType":"YulIdentifier","src":"29650:16:61"},"nodeType":"YulFunctionCall","src":"29650:19:61"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"29645:1:61"}]},{"nodeType":"YulAssignment","src":"29678:17:61","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"29690:1:61"},{"name":"y","nodeType":"YulIdentifier","src":"29693:1:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"29686:3:61"},"nodeType":"YulFunctionCall","src":"29686:9:61"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"29678:4:61"}]},{"body":{"nodeType":"YulBlock","src":"29745:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"29747:16:61"},"nodeType":"YulFunctionCall","src":"29747:18:61"},"nodeType":"YulExpressionStatement","src":"29747:18:61"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"29711:4:61"},{"kind":"number","nodeType":"YulLiteral","src":"29717:26:61","type":"","value":"0xffffffffffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"29708:2:61"},"nodeType":"YulFunctionCall","src":"29708:36:61"},"nodeType":"YulIf","src":"29705:62:61"}]},"name":"checked_sub_t_uint96","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"29588:1:61","type":""},{"name":"y","nodeType":"YulTypedName","src":"29591:1:61","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"29597:4:61","type":""}],"src":"29558:216:61"},{"body":{"nodeType":"YulBlock","src":"29823:128:61","statements":[{"nodeType":"YulAssignment","src":"29833:33:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"29860:5:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"29842:17:61"},"nodeType":"YulFunctionCall","src":"29842:24:61"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"29833:5:61"}]},{"body":{"nodeType":"YulBlock","src":"29894:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"29896:16:61"},"nodeType":"YulFunctionCall","src":"29896:18:61"},"nodeType":"YulExpressionStatement","src":"29896:18:61"}]},"condition":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"29881:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"29888:4:61","type":"","value":"0x00"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"29878:2:61"},"nodeType":"YulFunctionCall","src":"29878:15:61"},"nodeType":"YulIf","src":"29875:41:61"},{"nodeType":"YulAssignment","src":"29925:20:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"29936:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"29943:1:61","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"29932:3:61"},"nodeType":"YulFunctionCall","src":"29932:13:61"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"29925:3:61"}]}]},"name":"decrement_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"29809:5:61","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"29819:3:61","type":""}],"src":"29780:171:61"},{"body":{"nodeType":"YulBlock","src":"30063:76:61","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"30085:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"30093:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"30081:3:61"},"nodeType":"YulFunctionCall","src":"30081:14:61"},{"hexValue":"537472696e67733a20686578206c656e67746820696e73756666696369656e74","kind":"string","nodeType":"YulLiteral","src":"30097:34:61","type":"","value":"Strings: hex length insufficient"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"30074:6:61"},"nodeType":"YulFunctionCall","src":"30074:58:61"},"nodeType":"YulExpressionStatement","src":"30074:58:61"}]},"name":"store_literal_in_memory_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"30055:6:61","type":""}],"src":"29957:182:61"},{"body":{"nodeType":"YulBlock","src":"30291:220:61","statements":[{"nodeType":"YulAssignment","src":"30301:74:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"30367:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"30372:2:61","type":"","value":"32"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"30308:58:61"},"nodeType":"YulFunctionCall","src":"30308:67:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"30301:3:61"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"30473:3:61"}],"functionName":{"name":"store_literal_in_memory_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2","nodeType":"YulIdentifier","src":"30384:88:61"},"nodeType":"YulFunctionCall","src":"30384:93:61"},"nodeType":"YulExpressionStatement","src":"30384:93:61"},{"nodeType":"YulAssignment","src":"30486:19:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"30497:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"30502:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"30493:3:61"},"nodeType":"YulFunctionCall","src":"30493:12:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"30486:3:61"}]}]},"name":"abi_encode_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"30279:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"30287:3:61","type":""}],"src":"30145:366:61"},{"body":{"nodeType":"YulBlock","src":"30688:248:61","statements":[{"nodeType":"YulAssignment","src":"30698:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"30710:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"30721:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"30706:3:61"},"nodeType":"YulFunctionCall","src":"30706:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"30698:4:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"30745:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"30756:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"30741:3:61"},"nodeType":"YulFunctionCall","src":"30741:17:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"30764:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"30770:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"30760:3:61"},"nodeType":"YulFunctionCall","src":"30760:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"30734:6:61"},"nodeType":"YulFunctionCall","src":"30734:47:61"},"nodeType":"YulExpressionStatement","src":"30734:47:61"},{"nodeType":"YulAssignment","src":"30790:139:61","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"30924:4:61"}],"functionName":{"name":"abi_encode_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"30798:124:61"},"nodeType":"YulFunctionCall","src":"30798:131:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"30790:4:61"}]}]},"name":"abi_encode_tuple_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"30668:9:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"30683:4:61","type":""}],"src":"30517:419:61"}]},"contents":"{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_address_t_uint256_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart , value3, value2, value1, value0) -> tail {\n tail := add(headStart, 128)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value3, add(headStart, 96))\n\n }\n\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_uint16(value) -> cleaned {\n cleaned := and(value, 0xffff)\n }\n\n function abi_encode_t_uint16_to_t_uint16_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint16(value))\n }\n\n function abi_encode_tuple_t_uint16__to_t_uint16__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint16_to_t_uint16_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_int96(value) -> cleaned {\n cleaned := signextend(11, value)\n }\n\n function validator_revert_t_int96(value) {\n if iszero(eq(value, cleanup_t_int96(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_int96(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_int96(value)\n }\n\n function abi_decode_tuple_t_addresst_int96(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_int96(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function cleanup_t_uint96(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffff)\n }\n\n function abi_encode_t_uint96_to_t_uint96_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint96(value))\n }\n\n function abi_encode_tuple_t_uint16_t_uint96_t_uint96__to_t_uint16_t_uint96_t_uint96__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_uint16_to_t_uint16_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint96_to_t_uint96_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint96_to_t_uint96_fromStack(value2, add(headStart, 64))\n\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bool_to_t_bool_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_uint256t_address(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n\n function allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function array_allocation_size_t_array$_t_uint16_$dyn_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := mul(length, 0x20)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() {\n revert(0, 0)\n }\n\n function validator_revert_t_uint16(value) {\n if iszero(eq(value, cleanup_t_uint16(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint16(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint16(value)\n }\n\n // uint16[]\n function abi_decode_available_length_t_array$_t_uint16_$dyn_memory_ptr(offset, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_array$_t_uint16_$dyn_memory_ptr(length))\n let dst := array\n\n mstore(array, length)\n dst := add(array, 0x20)\n\n let srcEnd := add(offset, mul(length, 0x20))\n if gt(srcEnd, end) {\n revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef()\n }\n for { let src := offset } lt(src, srcEnd) { src := add(src, 0x20) }\n {\n\n let elementPos := src\n\n mstore(dst, abi_decode_t_uint16(elementPos, end))\n dst := add(dst, 0x20)\n }\n }\n\n // uint16[]\n function abi_decode_t_array$_t_uint16_$dyn_memory_ptr(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := calldataload(offset)\n array := abi_decode_available_length_t_array$_t_uint16_$dyn_memory_ptr(add(offset, 0x20), length, end)\n }\n\n function array_allocation_size_t_array$_t_uint96_$dyn_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := mul(length, 0x20)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function validator_revert_t_uint96(value) {\n if iszero(eq(value, cleanup_t_uint96(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint96(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint96(value)\n }\n\n // uint96[]\n function abi_decode_available_length_t_array$_t_uint96_$dyn_memory_ptr(offset, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_array$_t_uint96_$dyn_memory_ptr(length))\n let dst := array\n\n mstore(array, length)\n dst := add(array, 0x20)\n\n let srcEnd := add(offset, mul(length, 0x20))\n if gt(srcEnd, end) {\n revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef()\n }\n for { let src := offset } lt(src, srcEnd) { src := add(src, 0x20) }\n {\n\n let elementPos := src\n\n mstore(dst, abi_decode_t_uint96(elementPos, end))\n dst := add(dst, 0x20)\n }\n }\n\n // uint96[]\n function abi_decode_t_array$_t_uint96_$dyn_memory_ptr(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := calldataload(offset)\n array := abi_decode_available_length_t_array$_t_uint96_$dyn_memory_ptr(add(offset, 0x20), length, end)\n }\n\n function array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := mul(length, 0x20)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n // uint256[]\n function abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr(offset, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr(length))\n let dst := array\n\n mstore(array, length)\n dst := add(array, 0x20)\n\n let srcEnd := add(offset, mul(length, 0x20))\n if gt(srcEnd, end) {\n revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef()\n }\n for { let src := offset } lt(src, srcEnd) { src := add(src, 0x20) }\n {\n\n let elementPos := src\n\n mstore(dst, abi_decode_t_uint256(elementPos, end))\n dst := add(dst, 0x20)\n }\n }\n\n // uint256[]\n function abi_decode_t_array$_t_uint256_$dyn_memory_ptr(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := calldataload(offset)\n array := abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr(add(offset, 0x20), length, end)\n }\n\n function abi_decode_tuple_t_array$_t_uint16_$dyn_memory_ptrt_array$_t_uint96_$dyn_memory_ptrt_array$_t_uint96_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3 {\n if slt(sub(dataEnd, headStart), 128) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := calldataload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value0 := abi_decode_t_array$_t_uint16_$dyn_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value1 := abi_decode_t_array$_t_uint96_$dyn_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value2 := abi_decode_t_array$_t_uint96_$dyn_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 96))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value3 := abi_decode_t_array$_t_uint256_$dyn_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_uint16t_address(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint16(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function store_literal_in_memory_17a8e30262c1f919c33056d877a3c22b95c2f5e4dac44683c1c2323cd79fbdb0(memPtr) {\n\n mstore(add(memPtr, 0), \"STRATEGIST_ROLE\")\n\n }\n\n function abi_encode_t_stringliteral_17a8e30262c1f919c33056d877a3c22b95c2f5e4dac44683c1c2323cd79fbdb0_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 15)\n store_literal_in_memory_17a8e30262c1f919c33056d877a3c22b95c2f5e4dac44683c1c2323cd79fbdb0(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_17a8e30262c1f919c33056d877a3c22b95c2f5e4dac44683c1c2323cd79fbdb0__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_17a8e30262c1f919c33056d877a3c22b95c2f5e4dac44683c1c2323cd79fbdb0_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function checked_sub_t_uint256(x, y) -> diff {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n diff := sub(x, y)\n\n if gt(diff, x) { panic_error_0x11() }\n\n }\n\n function checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n sum := add(x, y)\n\n if gt(x, sum) { panic_error_0x11() }\n\n }\n\n function panic_error_0x32() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n\n function increment_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n ret := add(value, 1)\n }\n\n function store_literal_in_memory_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07(memPtr) {\n\n mstore(add(memPtr, 0), \"TREASURER_ROLE\")\n\n }\n\n function abi_encode_t_stringliteral_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 14)\n store_literal_in_memory_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n }\n\n function validator_revert_t_bool(value) {\n if iszero(eq(value, cleanup_t_bool(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bool_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_bool(value)\n }\n\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bool_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n }\n\n function checked_add_t_int96(x, y) -> sum {\n x := cleanup_t_int96(x)\n y := cleanup_t_int96(y)\n sum := add(x, y)\n\n if or(\n sgt(sum, 0x7fffffffffffffffffffffff),\n slt(sum, 0xffffffffffffffffffffffffffffffffffffffff800000000000000000000000)\n ) { panic_error_0x11() }\n\n }\n\n function checked_mul_t_uint256(x, y) -> product {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n let product_raw := mul(x, y)\n product := cleanup_t_uint256(product_raw)\n\n // overflow, if x != 0 and y != product/x\n if iszero(\n or(\n iszero(x),\n eq(y, div(product, x))\n )\n ) { panic_error_0x11() }\n\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_t_uint256_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function identity(value) -> ret {\n ret := value\n }\n\n function convert_t_uint160_to_t_uint160(value) -> converted {\n converted := cleanup_t_uint160(identity(cleanup_t_uint160(value)))\n }\n\n function convert_t_uint160_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_uint160(value)\n }\n\n function convert_t_contract$_ISuperToken_$7015_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_address(value)\n }\n\n function abi_encode_t_contract$_ISuperToken_$7015_to_t_address_fromStack(value, pos) {\n mstore(pos, convert_t_contract$_ISuperToken_$7015_to_t_address(value))\n }\n\n function abi_encode_t_int96_to_t_int96_fromStack(value, pos) {\n mstore(pos, cleanup_t_int96(value))\n }\n\n function abi_encode_tuple_t_contract$_ISuperToken_$7015_t_int96__to_t_address_t_int96__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_contract$_ISuperToken_$7015_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_int96_to_t_int96_fromStack(value1, add(headStart, 32))\n\n }\n\n function abi_encode_tuple_t_contract$_ISuperToken_$7015_t_address__to_t_address_t_address__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_contract$_ISuperToken_$7015_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n }\n\n function abi_decode_t_int96_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_int96(value)\n }\n\n function abi_decode_tuple_t_int96_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_int96_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x31() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x31)\n revert(0, 0x24)\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function store_literal_in_memory_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874(memPtr) {\n\n mstore(add(memPtr, 0), \"AccessControl: account \")\n\n }\n\n function abi_encode_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_to_t_string_memory_ptr_nonPadded_inplace_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, 23)\n store_literal_in_memory_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874(pos)\n end := add(pos, 23)\n }\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function copy_memory_to_memory_with_cleanup(src, dst, length) {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, length)\n }\n\n function store_literal_in_memory_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69(memPtr) {\n\n mstore(add(memPtr, 0), \" is missing role \")\n\n }\n\n function abi_encode_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_to_t_string_memory_ptr_nonPadded_inplace_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, 17)\n store_literal_in_memory_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69(pos)\n end := add(pos, 17)\n }\n\n function abi_encode_tuple_packed_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_t_string_memory_ptr_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value1, value0) -> end {\n\n pos := abi_encode_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_to_t_string_memory_ptr_nonPadded_inplace_fromStack( pos)\n\n pos := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value0, pos)\n\n pos := abi_encode_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_to_t_string_memory_ptr_nonPadded_inplace_fromStack( pos)\n\n pos := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value1, pos)\n\n end := pos\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value0, tail)\n\n }\n\n function abi_decode_t_address_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1(value) -> cleaned {\n cleaned := value\n }\n\n function cleanup_t_bytes32(value) -> cleaned {\n cleaned := value\n }\n\n function shift_left_0(value) -> newValue {\n newValue :=\n\n shl(0, value)\n\n }\n\n function convert_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1_to_t_bytes32(value) -> converted {\n converted := cleanup_t_bytes32(shift_left_0(cleanup_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1(value)))\n }\n\n function abi_encode_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1_to_t_bytes32_fromStack(value, pos) {\n mstore(pos, convert_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1_to_t_bytes32(value))\n }\n\n function abi_encode_tuple_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1__to_t_bytes32__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n }\n\n function cleanup_t_contract$_ISuperAgreement_$6463(value) -> cleaned {\n cleaned := cleanup_t_address(value)\n }\n\n function validator_revert_t_contract$_ISuperAgreement_$6463(value) {\n if iszero(eq(value, cleanup_t_contract$_ISuperAgreement_$6463(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_contract$_ISuperAgreement_$6463_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_contract$_ISuperAgreement_$6463(value)\n }\n\n function abi_decode_tuple_t_contract$_ISuperAgreement_$6463_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_ISuperAgreement_$6463_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x01() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x01)\n revert(0, 0x24)\n }\n\n function checked_sub_t_uint96(x, y) -> diff {\n x := cleanup_t_uint96(x)\n y := cleanup_t_uint96(y)\n diff := sub(x, y)\n\n if gt(diff, 0xffffffffffffffffffffffff) { panic_error_0x11() }\n\n }\n\n function decrement_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0x00) { panic_error_0x11() }\n ret := sub(value, 1)\n }\n\n function store_literal_in_memory_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2(memPtr) {\n\n mstore(add(memPtr, 0), \"Strings: hex length insufficient\")\n\n }\n\n function abi_encode_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 32)\n store_literal_in_memory_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n}\n","id":61,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106101c45760003560e01c80637f69bcaf116100f9578063be83574711610097578063ca70e1d511610071578063ca70e1d51461051a578063cb857c8014610538578063d99d3b6914610554578063ebaae66114610570576101c4565b8063be8357471461048a578063c467cddc146104ba578063c78f6803146104ea576101c4565b8063a8771ab9116100d3578063a8771ab9146103f0578063acff47441461040e578063adefe35e1461043e578063b24190831461045a576101c4565b80637f69bcaf1461038657806383807889146103b6578063a86c8c7c146103d2576101c4565b80634ee43e46116101665780636ab1c734116101405780636ab1c73414610322578063703ab1b714610354578063795e34251461035e5780637ea195ad14610368576101c4565b80634ee43e46146102b8578063578dc59a146102e85780636812a17314610304576101c4565b8063245b6c93116101a2578063245b6c931461024857806338e4f0641461026457806346a5d04314610280578063487eb9391461029c576101c4565b80630b72660d146101c957806322c3a21f146101fc5780632357f2cf14610218575b600080fd5b6101e360048036038101906101de9190612d16565b61058c565b6040516101f39493929190612d74565b60405180910390f35b61021660048036038101906102119190612db9565b6105ad565b005b610232600480360381019061022d9190612db9565b6105e6565b60405161023f9190612e03565b60405180910390f35b610262600480360381019061025d9190612e1e565b6105f8565b005b61027e60048036038101906102799190612d16565b61063a565b005b61029a60048036038101906102959190612d16565b610648565b005b6102b660048036038101906102b19190612e1e565b61065f565b005b6102d260048036038101906102cd9190612e84565b6106a1565b6040516102df9190612ec4565b60405180910390f35b61030260048036038101906102fd9190612e1e565b6106b5565b005b61030c6106f7565b6040516103199190612ec4565b60405180910390f35b61033c60048036038101906103379190612e1e565b610706565b60405161034b93929190612f06565b60405180910390f35b61035c610721565b005b610366610758565b005b61037061078f565b60405161037d9190612ec4565b60405180910390f35b6103a0600480360381019061039b9190612db9565b61079e565b6040516103ad9190612ec4565b60405180910390f35b6103d060048036038101906103cb9190612db9565b6107b0565b005b6103da6107e9565b6040516103e79190612f58565b60405180910390f35b6103f86107f8565b6040516104059190612ec4565b60405180910390f35b61042860048036038101906104239190612db9565b610807565b6040516104359190612f58565b60405180910390f35b61045860048036038101906104539190612f73565b610819565b005b610474600480360381019061046f9190612db9565b610827565b6040516104819190612ec4565b60405180910390f35b6104a4600480360381019061049f9190612fb3565b610839565b6040516104b19190612ec4565b60405180910390f35b6104d460048036038101906104cf9190612e84565b61084d565b6040516104e19190612f58565b60405180910390f35b61050460048036038101906104ff9190612db9565b610861565b6040516105119190612ec4565b60405180910390f35b610522610873565b60405161052f9190612ec4565b60405180910390f35b610552600480360381019061054d919061332a565b610882565b005b61056e60048036038101906105699190613401565b610a4b565b005b61058a60048036038101906105859190612d16565b610a86565b005b60008060008061059c8686610ac1565b935093509350935092959194509250565b6105da6040516020016105bf9061349e565b60405160208183030381529060405280519060200120610c84565b6105e381610c90565b50565b60006105f182610cf4565b9050919050565b61062560405160200161060a9061349e565b60405160208183030381529060405280519060200120610c84565b61062e81610d54565b61063781610d91565b50565b6106448282610da4565b5050565b61065182610fe1565b61065b8282611023565b5050565b61068c6040516020016106719061349e565b60405160208183030381529060405280519060200120610c84565b61069581610d54565b61069e816111a3565b50565b60006106ad83836111b6565b905092915050565b6106e26040516020016106c79061349e565b60405160208183030381529060405280519060200120610c84565b6106eb81610d54565b6106f48161125c565b50565b600061070161126f565b905090565b600080600061071484611282565b9250925092509193909250565b61074e6040516020016107339061349e565b60405160208183030381529060405280519060200120610c84565b6107566112c4565b565b61078560405160200161076a9061349e565b60405160208183030381529060405280519060200120610c84565b61078d611302565b565b6000610799611382565b905090565b60006107a982611395565b9050919050565b6107dd6040516020016107c29061349e565b60405160208183030381529060405280519060200120610c84565b6107e6816113e7565b50565b60006107f3611442565b905090565b6000610802611462565b905090565b60006108128261147c565b9050919050565b61082382826114db565b5050565b600061083282611549565b9050919050565b6000610845838361159b565b905092915050565b6000610859838361162b565b905092915050565b600061086c826116bf565b9050919050565b600061087d611711565b905090565b6108af6040516020016108949061349e565b60405160208183030381529060405280519060200120610c84565b825184511415806108c257508151845114155b806108cf57508051845114155b15610906576040517fed882f7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8451811015610a44576001855161092091906134ed565b8110156109bd57836001826109359190613521565b8151811061094657610945613555565b5b60200260200101516bffffffffffffffffffffffff1683828151811061096f5761096e613555565b5b60200260200101516bffffffffffffffffffffffff16146109bc576040517f2245023300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b610a318582815181106109d3576109d2613555565b5b60200260200101518583815181106109ee576109ed613555565b5b6020026020010151858481518110610a0957610a08613555565b5b6020026020010151858581518110610a2457610a23613555565b5b6020026020010151611724565b8080610a3c90613584565b915050610909565b5050505050565b610a78604051602001610a5d9061349e565b60405160208183030381529060405280519060200120610c84565b610a8282826117ac565b5050565b610ab3604051602001610a9890613618565b60405160208183030381529060405280519060200120610c84565b610abd828261181c565b5050565b6000806000806000610ad1611982565b600c0160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000610b52611982565b600c0160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008881526020019081526020016000206001015490506000610bb3611982565b600c0160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008981526020019081526020016000206002015490506000610c14611982565b600c0160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a81526020019081526020016000206003015490508383838397509750975097505050505092959194509250565b610c8d816119af565b50565b6001610c9a611982565b60090160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000610cfe611982565b60040160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900461ffff169050919050565b60008111610d8e576040517f7c946ed700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b80610d9a611982565b6007018190555050565b80610dad611982565b600e0160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610e63576040517f96d8043300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80610e6c611982565b600e0160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ef891906134ed565b9250508190555080610f08611982565b600f0160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610f5791906134ed565b925050819055508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610f99929190613638565b6020604051808303816000875af1158015610fb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fdc919061368d565b505050565b610fea8161147c565b611020576040517f334ae3e600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b8173ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401611060939291906136ba565b6020604051808303816000875af115801561107f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a3919061368d565b50806110ad611982565b600e0160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546111399190613521565b9250508190555080611149611982565b600f0160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546111989190613521565b925050819055505050565b806111ac611982565b6008018190555050565b60008083905060006111e7848373ffffffffffffffffffffffffffffffffffffffff166119bc90919063ffffffff16565b90506000611214308473ffffffffffffffffffffffffffffffffffffffff16611a5090919063ffffffff16565b905061121e611982565b60080154858261122e91906136f1565b6bffffffffffffffffffffffff166112469190613755565b826112519190613521565b935050505092915050565b80611265611982565b6006018190555050565b6000611279611982565b60060154905090565b6000806000806112a585611294611982565b600001611ae490919063ffffffff16565b9050806000015181602001518260400151935093509350509193909250565b6112cc611982565b60050160009054906101000a900460ff16156112e6611982565b60050160006101000a81548160ff021916908315150217905550565b600061130c611462565b905060005b8181101561137e57600061134b6001611328611462565b61133291906134ed565b61133a611982565b600001611bb090919063ffffffff16565b905061136a81611359611982565b600001611bdb90919063ffffffff16565b50808061137690613584565b915050611311565b5050565b600061138c611982565b60080154905090565b600061139f611982565b600b0160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6113ef611982565b60090160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff021916905550565b600061144c611982565b60050160009054906101000a900460ff16905090565b600061147761146f611982565b600001611d74565b905090565b6000611486611982565b60090160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6114e782826001611d85565b6114ef611982565b600d0160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461153e9190613521565b925050819055505050565b6000611553611982565b600f0160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006115a5611982565b600e0160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000808373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016116679190613797565b602060405180830381865afa158015611684573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a891906137c7565b90506116b484846111b6565b811191505092915050565b60006116c9611982565b600d0160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600061171b611982565b60070154905090565b61172d84611e8b565b826bffffffffffffffffffffffff16826bffffffffffffffffffffffff161015611783576040517f2245023300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117a681858585611792611982565b600001611ee490949392919063ffffffff16565b50505050565b6117b582611e8b565b816117be611982565b60040160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548161ffff021916908361ffff1602179055505050565b80611825611982565b600d0160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561189e576040517ff00d49ea00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806118a7611982565b600d0160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118f691906134ed565b925050819055508173ffffffffffffffffffffffffffffffffffffffff166323b872dd3033846040518463ffffffff1660e01b815260040161193a939291906136ba565b6020604051808303816000875af1158015611959573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061197d919061368d565b505050565b6000807f2f7ed27098ecefe70183ee38ae4542dee65215b0786f6870871034402cfe2cc990508091505090565b6119b98133612115565b50565b6000806119c8846121b2565b9150508073ffffffffffffffffffffffffffffffffffffffff16638d997f6e85856040518363ffffffff1660e01b8152600401611a06929190613862565b602060405180830381865afa158015611a23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4791906137c7565b91505092915050565b600080611a5c846121b2565b9150508073ffffffffffffffffffffffffffffffffffffffff1663e8e7e2d185856040518363ffffffff1660e01b8152600401611a9a92919061388b565b602060405180830381865afa158015611ab7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611adb91906138c9565b91505092915050565b611aec612c2d565b8260010160008381526020019081526020016000206040518060600160405290816000820160009054906101000a900461ffff1661ffff1661ffff1681526020016000820160029054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160008201600e9054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681525050905092915050565b6000826000018281548110611bc857611bc7613555565b5b9060005260206000200154905092915050565b81600301600082815260200190815260200160002060009054906101000a900460ff1615611d705781600301600082815260200190815260200160002060006101000a81549060ff0219169055816001016000828152602001908152602001600020600080820160006101000a81549061ffff02191690556000820160026101000a8154906bffffffffffffffffffffffff021916905560008201600e6101000a8154906bffffffffffffffffffffffff021916905550506000826002016000838152602001908152602001600020549050600060018460000180549050611cc391906134ed565b90506000846000018281548110611cdd57611cdc613555565b5b9060005260206000200154905082856002016000838152602001908152602001600020819055508460020160008581526020019081526020016000206000905580856000018481548110611d3457611d33613555565b5b906000526020600020018190555084600001805480611d5657611d556138f6565b5b600190038181906000526020600020016000905590555050505b5050565b600081600001805490509050919050565b600080611d90611982565b9050600081600a0160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600080600090505b87811015611e7d57611dfd878285611df89190613521565b6123f3565b82611e089190613521565b91508515611e6a57600184600a0160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611e629190613521565b925050819055505b8080611e7590613584565b915050611de0565b508093505050509392505050565b606460ff168161ffff161080611eaa575061271061ffff168161ffff16115b15611ee1576040517f800c7e9100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b84600301600085815260200190815260200160002060009054906101000a900460ff1615611fd2578285600101600086815260200190815260200160002060000160006101000a81548161ffff021916908361ffff1602179055508185600101600086815260200190815260200160002060000160026101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555080856001016000868152602001908152602001600020600001600e6101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555061210e565b600185600301600086815260200190815260200160002060006101000a81548160ff0219169083151502179055508285600101600086815260200190815260200160002060000160006101000a81548161ffff021916908361ffff1602179055508185600101600086815260200190815260200160002060000160026101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555080856001016000868152602001908152602001600020600001600e6101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550846000018054905085600201600086815260200190815260200160002081905550846000018490806001815401808255809150506001900390600052602060002001600090919091909150555b5050505050565b61211f828261257a565b6121ae576121448173ffffffffffffffffffffffffffffffffffffffff1660146125ee565b6121528360001c60206125ee565b604051602001612163929190613a2e565b6040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a59190613aa1565b60405180910390fd5b5050565b6000807f65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea8375491507fb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a549050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361237457600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122d7578273ffffffffffffffffffffffffffffffffffffffff166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d49190613ad8565b91505b8173ffffffffffffffffffffffffffffffffffffffff1663b6d200de7fa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd36040518263ffffffff1660e01b81526004016123309190613b57565b602060405180830381865afa15801561234d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123719190613bb0565b90505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036123b1576123b0613bdd565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036123ee576123ed613bdd565b5b915091565b6000806123fe611982565b9050600081600c0160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000858152602001908152602001600020600201549050600082600c0160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600086815260200190815260200160002060030154905060008060006124c3898961282a565b93505092509250600083836124d89190613c0c565b6bffffffffffffffffffffffff169050600085146125155785856124fc91906134ed565b816125079190613755565b975050505050505050612574565b6000821461254257858261252991906134ed565b816125349190613755565b975050505050505050612574565b6040517fae1c061f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b92915050565b600061258461292f565b600001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6060600060028360026126019190613755565b61260b9190613521565b67ffffffffffffffff81111561262457612623613009565b5b6040519080825280601f01601f1916602001820160405280156126565781602001600182028036833780820191505090505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061268e5761268d613555565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106126f2576126f1613555565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026127329190613755565b61273c9190613521565b90505b60018111156127dc577f3031323334353637383961626364656600000000000000000000000000000000600f86166010811061277e5761277d613555565b5b1a60f81b82828151811061279557612794613555565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c9450806127d590613c4c565b905061273f565b5060008414612820576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281790613cc1565b60405180910390fd5b8091505092915050565b600080600080600061283a611982565b9050600081600c0160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600082600c0160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600089815260200190815260200160002060010154905061291b828a8361295c565b965096509650965050505092959194509250565b6000807f4cd15452b25e815d3f9d1a3c7edd985a178edf5eb3461a1acbf855517423d69490508091505090565b60008060008061296a612c00565b60010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600086815260200190815260200160002060000160009054906101000a9004600b0b612a11612c00565b60010160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878152602001908152602001600020600001600c9054906101000a90046bffffffffffffffffffffffff16612ac3612c00565b60010160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088815260200190815260200160002060010154612b5d612c00565b60010160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600089815260200190815260200160002060020154935093509350935093509350935093565b6000807f9cd9afe22fea86221d6e8117226b65bb0e2af8c4f5b8abf255fb0afcad4a3a9c90508091505090565b6040518060600160405280600061ffff16815260200160006bffffffffffffffffffffffff16815260200160006bffffffffffffffffffffffff1681525090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612cad82612c82565b9050919050565b612cbd81612ca2565b8114612cc857600080fd5b50565b600081359050612cda81612cb4565b92915050565b6000819050919050565b612cf381612ce0565b8114612cfe57600080fd5b50565b600081359050612d1081612cea565b92915050565b60008060408385031215612d2d57612d2c612c78565b5b6000612d3b85828601612ccb565b9250506020612d4c85828601612d01565b9150509250929050565b612d5f81612ca2565b82525050565b612d6e81612ce0565b82525050565b6000608082019050612d896000830187612d56565b612d966020830186612d65565b612da36040830185612d65565b612db06060830184612d65565b95945050505050565b600060208284031215612dcf57612dce612c78565b5b6000612ddd84828501612ccb565b91505092915050565b600061ffff82169050919050565b612dfd81612de6565b82525050565b6000602082019050612e186000830184612df4565b92915050565b600060208284031215612e3457612e33612c78565b5b6000612e4284828501612d01565b91505092915050565b600081600b0b9050919050565b612e6181612e4b565b8114612e6c57600080fd5b50565b600081359050612e7e81612e58565b92915050565b60008060408385031215612e9b57612e9a612c78565b5b6000612ea985828601612ccb565b9250506020612eba85828601612e6f565b9150509250929050565b6000602082019050612ed96000830184612d65565b92915050565b60006bffffffffffffffffffffffff82169050919050565b612f0081612edf565b82525050565b6000606082019050612f1b6000830186612df4565b612f286020830185612ef7565b612f356040830184612ef7565b949350505050565b60008115159050919050565b612f5281612f3d565b82525050565b6000602082019050612f6d6000830184612f49565b92915050565b60008060408385031215612f8a57612f89612c78565b5b6000612f9885828601612d01565b9250506020612fa985828601612ccb565b9150509250929050565b60008060408385031215612fca57612fc9612c78565b5b6000612fd885828601612ccb565b9250506020612fe985828601612ccb565b9150509250929050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61304182612ff8565b810181811067ffffffffffffffff821117156130605761305f613009565b5b80604052505050565b6000613073612c6e565b905061307f8282613038565b919050565b600067ffffffffffffffff82111561309f5761309e613009565b5b602082029050602081019050919050565b600080fd5b6130be81612de6565b81146130c957600080fd5b50565b6000813590506130db816130b5565b92915050565b60006130f46130ef84613084565b613069565b90508083825260208201905060208402830185811115613117576131166130b0565b5b835b81811015613140578061312c88826130cc565b845260208401935050602081019050613119565b5050509392505050565b600082601f83011261315f5761315e612ff3565b5b813561316f8482602086016130e1565b91505092915050565b600067ffffffffffffffff82111561319357613192613009565b5b602082029050602081019050919050565b6131ad81612edf565b81146131b857600080fd5b50565b6000813590506131ca816131a4565b92915050565b60006131e36131de84613178565b613069565b90508083825260208201905060208402830185811115613206576132056130b0565b5b835b8181101561322f578061321b88826131bb565b845260208401935050602081019050613208565b5050509392505050565b600082601f83011261324e5761324d612ff3565b5b813561325e8482602086016131d0565b91505092915050565b600067ffffffffffffffff82111561328257613281613009565b5b602082029050602081019050919050565b60006132a66132a184613267565b613069565b905080838252602082019050602084028301858111156132c9576132c86130b0565b5b835b818110156132f257806132de8882612d01565b8452602084019350506020810190506132cb565b5050509392505050565b600082601f83011261331157613310612ff3565b5b8135613321848260208601613293565b91505092915050565b6000806000806080858703121561334457613343612c78565b5b600085013567ffffffffffffffff81111561336257613361612c7d565b5b61336e8782880161314a565b945050602085013567ffffffffffffffff81111561338f5761338e612c7d565b5b61339b87828801613239565b935050604085013567ffffffffffffffff8111156133bc576133bb612c7d565b5b6133c887828801613239565b925050606085013567ffffffffffffffff8111156133e9576133e8612c7d565b5b6133f5878288016132fc565b91505092959194509250565b6000806040838503121561341857613417612c78565b5b6000613426858286016130cc565b925050602061343785828601612ccb565b9150509250929050565b600082825260208201905092915050565b7f535452415445474953545f524f4c450000000000000000000000000000000000600082015250565b6000613488600f83613441565b915061349382613452565b602082019050919050565b600060208201905081810360008301526134b78161347b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006134f882612ce0565b915061350383612ce0565b925082820390508181111561351b5761351a6134be565b5b92915050565b600061352c82612ce0565b915061353783612ce0565b925082820190508082111561354f5761354e6134be565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061358f82612ce0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036135c1576135c06134be565b5b600182019050919050565b7f5452454153555245525f524f4c45000000000000000000000000000000000000600082015250565b6000613602600e83613441565b915061360d826135cc565b602082019050919050565b60006020820190508181036000830152613631816135f5565b9050919050565b600060408201905061364d6000830185612d56565b61365a6020830184612d65565b9392505050565b61366a81612f3d565b811461367557600080fd5b50565b60008151905061368781613661565b92915050565b6000602082840312156136a3576136a2612c78565b5b60006136b184828501613678565b91505092915050565b60006060820190506136cf6000830186612d56565b6136dc6020830185612d56565b6136e96040830184612d65565b949350505050565b60006136fc82612e4b565b915061370783612e4b565b925082820190507fffffffffffffffffffffffffffffffffffffffff80000000000000000000000081126b7fffffffffffffffffffffff8213171561374f5761374e6134be565b5b92915050565b600061376082612ce0565b915061376b83612ce0565b925082820261377981612ce0565b915082820484148315176137905761378f6134be565b5b5092915050565b60006020820190506137ac6000830184612d56565b92915050565b6000815190506137c181612cea565b92915050565b6000602082840312156137dd576137dc612c78565b5b60006137eb848285016137b2565b91505092915050565b6000819050919050565b600061381961381461380f84612c82565b6137f4565b612c82565b9050919050565b600061382b826137fe565b9050919050565b600061383d82613820565b9050919050565b61384d81613832565b82525050565b61385c81612e4b565b82525050565b60006040820190506138776000830185613844565b6138846020830184613853565b9392505050565b60006040820190506138a06000830185613844565b6138ad6020830184612d56565b9392505050565b6000815190506138c381612e58565b92915050565b6000602082840312156138df576138de612c78565b5b60006138ed848285016138b4565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000613966601783613925565b915061397182613930565b601782019050919050565b600081519050919050565b60005b838110156139a557808201518184015260208101905061398a565b60008484015250505050565b60006139bc8261397c565b6139c68185613925565b93506139d6818560208601613987565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000613a18601183613925565b9150613a23826139e2565b601182019050919050565b6000613a3982613959565b9150613a4582856139b1565b9150613a5082613a0b565b9150613a5c82846139b1565b91508190509392505050565b6000613a738261397c565b613a7d8185613441565b9350613a8d818560208601613987565b613a9681612ff8565b840191505092915050565b60006020820190508181036000830152613abb8184613a68565b905092915050565b600081519050613ad281612cb4565b92915050565b600060208284031215613aee57613aed612c78565b5b6000613afc84828501613ac3565b91505092915050565b6000819050919050565b6000819050919050565b60008160001b9050919050565b6000613b41613b3c613b3784613b05565b613b19565b613b0f565b9050919050565b613b5181613b26565b82525050565b6000602082019050613b6c6000830184613b48565b92915050565b6000613b7d82612ca2565b9050919050565b613b8d81613b72565b8114613b9857600080fd5b50565b600081519050613baa81613b84565b92915050565b600060208284031215613bc657613bc5612c78565b5b6000613bd484828501613b9b565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000613c1782612edf565b9150613c2283612edf565b925082820390506bffffffffffffffffffffffff811115613c4657613c456134be565b5b92915050565b6000613c5782612ce0565b915060008203613c6a57613c696134be565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b6000613cab602083613441565b9150613cb682613c75565b602082019050919050565b60006020820190508181036000830152613cda81613c9e565b905091905056fea2646970667358221220f916c5dbccf5ceca861487c05ea2e48b82bb0e3ae46f943844ba41385030217464736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1C4 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7F69BCAF GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0xBE835747 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xCA70E1D5 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xCA70E1D5 EQ PUSH2 0x51A JUMPI DUP1 PUSH4 0xCB857C80 EQ PUSH2 0x538 JUMPI DUP1 PUSH4 0xD99D3B69 EQ PUSH2 0x554 JUMPI DUP1 PUSH4 0xEBAAE661 EQ PUSH2 0x570 JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0xBE835747 EQ PUSH2 0x48A JUMPI DUP1 PUSH4 0xC467CDDC EQ PUSH2 0x4BA JUMPI DUP1 PUSH4 0xC78F6803 EQ PUSH2 0x4EA JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0xA8771AB9 GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0xA8771AB9 EQ PUSH2 0x3F0 JUMPI DUP1 PUSH4 0xACFF4744 EQ PUSH2 0x40E JUMPI DUP1 PUSH4 0xADEFE35E EQ PUSH2 0x43E JUMPI DUP1 PUSH4 0xB2419083 EQ PUSH2 0x45A JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x7F69BCAF EQ PUSH2 0x386 JUMPI DUP1 PUSH4 0x83807889 EQ PUSH2 0x3B6 JUMPI DUP1 PUSH4 0xA86C8C7C EQ PUSH2 0x3D2 JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x4EE43E46 GT PUSH2 0x166 JUMPI DUP1 PUSH4 0x6AB1C734 GT PUSH2 0x140 JUMPI DUP1 PUSH4 0x6AB1C734 EQ PUSH2 0x322 JUMPI DUP1 PUSH4 0x703AB1B7 EQ PUSH2 0x354 JUMPI DUP1 PUSH4 0x795E3425 EQ PUSH2 0x35E JUMPI DUP1 PUSH4 0x7EA195AD EQ PUSH2 0x368 JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x4EE43E46 EQ PUSH2 0x2B8 JUMPI DUP1 PUSH4 0x578DC59A EQ PUSH2 0x2E8 JUMPI DUP1 PUSH4 0x6812A173 EQ PUSH2 0x304 JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0x245B6C93 GT PUSH2 0x1A2 JUMPI DUP1 PUSH4 0x245B6C93 EQ PUSH2 0x248 JUMPI DUP1 PUSH4 0x38E4F064 EQ PUSH2 0x264 JUMPI DUP1 PUSH4 0x46A5D043 EQ PUSH2 0x280 JUMPI DUP1 PUSH4 0x487EB939 EQ PUSH2 0x29C JUMPI PUSH2 0x1C4 JUMP JUMPDEST DUP1 PUSH4 0xB72660D EQ PUSH2 0x1C9 JUMPI DUP1 PUSH4 0x22C3A21F EQ PUSH2 0x1FC JUMPI DUP1 PUSH4 0x2357F2CF EQ PUSH2 0x218 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1E3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1DE SWAP2 SWAP1 PUSH2 0x2D16 JUMP JUMPDEST PUSH2 0x58C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1F3 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2D74 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x216 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x211 SWAP2 SWAP1 PUSH2 0x2DB9 JUMP JUMPDEST PUSH2 0x5AD JUMP JUMPDEST STOP JUMPDEST PUSH2 0x232 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x22D SWAP2 SWAP1 PUSH2 0x2DB9 JUMP JUMPDEST PUSH2 0x5E6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x23F SWAP2 SWAP1 PUSH2 0x2E03 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x262 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x25D SWAP2 SWAP1 PUSH2 0x2E1E JUMP JUMPDEST PUSH2 0x5F8 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x27E PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x279 SWAP2 SWAP1 PUSH2 0x2D16 JUMP JUMPDEST PUSH2 0x63A JUMP JUMPDEST STOP JUMPDEST PUSH2 0x29A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x295 SWAP2 SWAP1 PUSH2 0x2D16 JUMP JUMPDEST PUSH2 0x648 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2B1 SWAP2 SWAP1 PUSH2 0x2E1E JUMP JUMPDEST PUSH2 0x65F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2D2 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2CD SWAP2 SWAP1 PUSH2 0x2E84 JUMP JUMPDEST PUSH2 0x6A1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2DF SWAP2 SWAP1 PUSH2 0x2EC4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x302 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2FD SWAP2 SWAP1 PUSH2 0x2E1E JUMP JUMPDEST PUSH2 0x6B5 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x30C PUSH2 0x6F7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x319 SWAP2 SWAP1 PUSH2 0x2EC4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x33C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x337 SWAP2 SWAP1 PUSH2 0x2E1E JUMP JUMPDEST PUSH2 0x706 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x34B SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2F06 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x35C PUSH2 0x721 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x366 PUSH2 0x758 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x370 PUSH2 0x78F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x37D SWAP2 SWAP1 PUSH2 0x2EC4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x39B SWAP2 SWAP1 PUSH2 0x2DB9 JUMP JUMPDEST PUSH2 0x79E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3AD SWAP2 SWAP1 PUSH2 0x2EC4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3D0 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3CB SWAP2 SWAP1 PUSH2 0x2DB9 JUMP JUMPDEST PUSH2 0x7B0 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3DA PUSH2 0x7E9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3E7 SWAP2 SWAP1 PUSH2 0x2F58 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3F8 PUSH2 0x7F8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x405 SWAP2 SWAP1 PUSH2 0x2EC4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x428 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x423 SWAP2 SWAP1 PUSH2 0x2DB9 JUMP JUMPDEST PUSH2 0x807 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x435 SWAP2 SWAP1 PUSH2 0x2F58 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x458 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x453 SWAP2 SWAP1 PUSH2 0x2F73 JUMP JUMPDEST PUSH2 0x819 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x474 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x46F SWAP2 SWAP1 PUSH2 0x2DB9 JUMP JUMPDEST PUSH2 0x827 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x481 SWAP2 SWAP1 PUSH2 0x2EC4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x4A4 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x49F SWAP2 SWAP1 PUSH2 0x2FB3 JUMP JUMPDEST PUSH2 0x839 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4B1 SWAP2 SWAP1 PUSH2 0x2EC4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x4D4 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x4CF SWAP2 SWAP1 PUSH2 0x2E84 JUMP JUMPDEST PUSH2 0x84D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4E1 SWAP2 SWAP1 PUSH2 0x2F58 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x504 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x4FF SWAP2 SWAP1 PUSH2 0x2DB9 JUMP JUMPDEST PUSH2 0x861 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x511 SWAP2 SWAP1 PUSH2 0x2EC4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x522 PUSH2 0x873 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x52F SWAP2 SWAP1 PUSH2 0x2EC4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x552 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x54D SWAP2 SWAP1 PUSH2 0x332A JUMP JUMPDEST PUSH2 0x882 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x56E PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x569 SWAP2 SWAP1 PUSH2 0x3401 JUMP JUMPDEST PUSH2 0xA4B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x58A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x585 SWAP2 SWAP1 PUSH2 0x2D16 JUMP JUMPDEST PUSH2 0xA86 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x59C DUP7 DUP7 PUSH2 0xAC1 JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH2 0x5DA PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x5BF SWAP1 PUSH2 0x349E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0xC84 JUMP JUMPDEST PUSH2 0x5E3 DUP2 PUSH2 0xC90 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5F1 DUP3 PUSH2 0xCF4 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x625 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x60A SWAP1 PUSH2 0x349E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0xC84 JUMP JUMPDEST PUSH2 0x62E DUP2 PUSH2 0xD54 JUMP JUMPDEST PUSH2 0x637 DUP2 PUSH2 0xD91 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x644 DUP3 DUP3 PUSH2 0xDA4 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x651 DUP3 PUSH2 0xFE1 JUMP JUMPDEST PUSH2 0x65B DUP3 DUP3 PUSH2 0x1023 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x68C PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x671 SWAP1 PUSH2 0x349E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0xC84 JUMP JUMPDEST PUSH2 0x695 DUP2 PUSH2 0xD54 JUMP JUMPDEST PUSH2 0x69E DUP2 PUSH2 0x11A3 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6AD DUP4 DUP4 PUSH2 0x11B6 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x6E2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x6C7 SWAP1 PUSH2 0x349E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0xC84 JUMP JUMPDEST PUSH2 0x6EB DUP2 PUSH2 0xD54 JUMP JUMPDEST PUSH2 0x6F4 DUP2 PUSH2 0x125C JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x701 PUSH2 0x126F JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x714 DUP5 PUSH2 0x1282 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH2 0x74E PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x733 SWAP1 PUSH2 0x349E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0xC84 JUMP JUMPDEST PUSH2 0x756 PUSH2 0x12C4 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x785 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x76A SWAP1 PUSH2 0x349E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0xC84 JUMP JUMPDEST PUSH2 0x78D PUSH2 0x1302 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH2 0x799 PUSH2 0x1382 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7A9 DUP3 PUSH2 0x1395 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x7DD PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x7C2 SWAP1 PUSH2 0x349E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0xC84 JUMP JUMPDEST PUSH2 0x7E6 DUP2 PUSH2 0x13E7 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7F3 PUSH2 0x1442 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x802 PUSH2 0x1462 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x812 DUP3 PUSH2 0x147C JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x823 DUP3 DUP3 PUSH2 0x14DB JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x832 DUP3 PUSH2 0x1549 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x845 DUP4 DUP4 PUSH2 0x159B JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x859 DUP4 DUP4 PUSH2 0x162B JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x86C DUP3 PUSH2 0x16BF JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x87D PUSH2 0x1711 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x8AF PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x894 SWAP1 PUSH2 0x349E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0xC84 JUMP JUMPDEST DUP3 MLOAD DUP5 MLOAD EQ ISZERO DUP1 PUSH2 0x8C2 JUMPI POP DUP2 MLOAD DUP5 MLOAD EQ ISZERO JUMPDEST DUP1 PUSH2 0x8CF JUMPI POP DUP1 MLOAD DUP5 MLOAD EQ ISZERO JUMPDEST ISZERO PUSH2 0x906 JUMPI PUSH1 0x40 MLOAD PUSH32 0xED882F7100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0xA44 JUMPI PUSH1 0x1 DUP6 MLOAD PUSH2 0x920 SWAP2 SWAP1 PUSH2 0x34ED JUMP JUMPDEST DUP2 LT ISZERO PUSH2 0x9BD JUMPI DUP4 PUSH1 0x1 DUP3 PUSH2 0x935 SWAP2 SWAP1 PUSH2 0x3521 JUMP JUMPDEST DUP2 MLOAD DUP2 LT PUSH2 0x946 JUMPI PUSH2 0x945 PUSH2 0x3555 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x96F JUMPI PUSH2 0x96E PUSH2 0x3555 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x9BC JUMPI PUSH1 0x40 MLOAD PUSH32 0x2245023300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMPDEST PUSH2 0xA31 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x9D3 JUMPI PUSH2 0x9D2 PUSH2 0x3555 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x9EE JUMPI PUSH2 0x9ED PUSH2 0x3555 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xA09 JUMPI PUSH2 0xA08 PUSH2 0x3555 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0xA24 JUMPI PUSH2 0xA23 PUSH2 0x3555 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x1724 JUMP JUMPDEST DUP1 DUP1 PUSH2 0xA3C SWAP1 PUSH2 0x3584 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x909 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0xA78 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xA5D SWAP1 PUSH2 0x349E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0xC84 JUMP JUMPDEST PUSH2 0xA82 DUP3 DUP3 PUSH2 0x17AC JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0xAB3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xA98 SWAP1 PUSH2 0x3618 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0xC84 JUMP JUMPDEST PUSH2 0xABD DUP3 DUP3 PUSH2 0x181C JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xAD1 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xC ADD PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH2 0xB52 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xC ADD PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 POP PUSH1 0x0 PUSH2 0xBB3 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xC ADD PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP1 POP PUSH1 0x0 PUSH2 0xC14 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xC ADD PUSH1 0x0 DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP11 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD SLOAD SWAP1 POP DUP4 DUP4 DUP4 DUP4 SWAP8 POP SWAP8 POP SWAP8 POP SWAP8 POP POP POP POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH2 0xC8D DUP2 PUSH2 0x19AF JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH2 0xC9A PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x9 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCFE PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x4 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH2 0xFFFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0xD8E JUMPI PUSH1 0x40 MLOAD PUSH32 0x7C946ED700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 PUSH2 0xD9A PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x7 ADD DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST DUP1 PUSH2 0xDAD PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xE ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD LT ISZERO PUSH2 0xE63 JUMPI PUSH1 0x40 MLOAD PUSH32 0x96D8043300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0xE6C PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xE ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xEF8 SWAP2 SWAP1 PUSH2 0x34ED JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 PUSH2 0xF08 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xF ADD PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xF57 SWAP2 SWAP1 PUSH2 0x34ED JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB CALLER DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF99 SWAP3 SWAP2 SWAP1 PUSH2 0x3638 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFB8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xFDC SWAP2 SWAP1 PUSH2 0x368D JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0xFEA DUP2 PUSH2 0x147C JUMP JUMPDEST PUSH2 0x1020 JUMPI PUSH1 0x40 MLOAD PUSH32 0x334AE3E600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x23B872DD CALLER ADDRESS DUP5 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1060 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x36BA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x107F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x10A3 SWAP2 SWAP1 PUSH2 0x368D JUMP JUMPDEST POP DUP1 PUSH2 0x10AD PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xE ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1139 SWAP2 SWAP1 PUSH2 0x3521 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 PUSH2 0x1149 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xF ADD PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1198 SWAP2 SWAP1 PUSH2 0x3521 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP JUMP JUMPDEST DUP1 PUSH2 0x11AC PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x8 ADD DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 SWAP1 POP PUSH1 0x0 PUSH2 0x11E7 DUP5 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x19BC SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1214 ADDRESS DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1A50 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x121E PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x8 ADD SLOAD DUP6 DUP3 PUSH2 0x122E SWAP2 SWAP1 PUSH2 0x36F1 JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1246 SWAP2 SWAP1 PUSH2 0x3755 JUMP JUMPDEST DUP3 PUSH2 0x1251 SWAP2 SWAP1 PUSH2 0x3521 JUMP JUMPDEST SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 PUSH2 0x1265 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x6 ADD DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1279 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x6 ADD SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x12A5 DUP6 PUSH2 0x1294 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x0 ADD PUSH2 0x1AE4 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x0 ADD MLOAD DUP2 PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x40 ADD MLOAD SWAP4 POP SWAP4 POP SWAP4 POP POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH2 0x12CC PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x5 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x12E6 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x5 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x130C PUSH2 0x1462 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x137E JUMPI PUSH1 0x0 PUSH2 0x134B PUSH1 0x1 PUSH2 0x1328 PUSH2 0x1462 JUMP JUMPDEST PUSH2 0x1332 SWAP2 SWAP1 PUSH2 0x34ED JUMP JUMPDEST PUSH2 0x133A PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x0 ADD PUSH2 0x1BB0 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x136A DUP2 PUSH2 0x1359 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x0 ADD PUSH2 0x1BDB SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP DUP1 DUP1 PUSH2 0x1376 SWAP1 PUSH2 0x3584 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1311 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x138C PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x8 ADD SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x139F PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xB ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x13EF PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x9 ADD PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH1 0xFF MUL NOT AND SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x144C PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x5 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1477 PUSH2 0x146F PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x0 ADD PUSH2 0x1D74 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1486 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x9 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x14E7 DUP3 DUP3 PUSH1 0x1 PUSH2 0x1D85 JUMP JUMPDEST PUSH2 0x14EF PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xD ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x153E SWAP2 SWAP1 PUSH2 0x3521 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1553 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xF ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15A5 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xE ADD PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1667 SWAP2 SWAP1 PUSH2 0x3797 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1684 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x16A8 SWAP2 SWAP1 PUSH2 0x37C7 JUMP JUMPDEST SWAP1 POP PUSH2 0x16B4 DUP5 DUP5 PUSH2 0x11B6 JUMP JUMPDEST DUP2 GT SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16C9 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xD ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x171B PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x7 ADD SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x172D DUP5 PUSH2 0x1E8B JUMP JUMPDEST DUP3 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND LT ISZERO PUSH2 0x1783 JUMPI PUSH1 0x40 MLOAD PUSH32 0x2245023300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x17A6 DUP2 DUP6 DUP6 DUP6 PUSH2 0x1792 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x0 ADD PUSH2 0x1EE4 SWAP1 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x17B5 DUP3 PUSH2 0x1E8B JUMP JUMPDEST DUP2 PUSH2 0x17BE PUSH2 0x1982 JUMP JUMPDEST PUSH1 0x4 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH2 0xFFFF MUL NOT AND SWAP1 DUP4 PUSH2 0xFFFF AND MUL OR SWAP1 SSTORE POP POP POP JUMP JUMPDEST DUP1 PUSH2 0x1825 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xD ADD PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD LT ISZERO PUSH2 0x189E JUMPI PUSH1 0x40 MLOAD PUSH32 0xF00D49EA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x18A7 PUSH2 0x1982 JUMP JUMPDEST PUSH1 0xD ADD PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x18F6 SWAP2 SWAP1 PUSH2 0x34ED JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x23B872DD ADDRESS CALLER DUP5 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x193A SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x36BA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1959 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x197D SWAP2 SWAP1 PUSH2 0x368D JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x2F7ED27098ECEFE70183EE38AE4542DEE65215B0786F6870871034402CFE2CC9 SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH2 0x19B9 DUP2 CALLER PUSH2 0x2115 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x19C8 DUP5 PUSH2 0x21B2 JUMP JUMPDEST SWAP2 POP POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x8D997F6E DUP6 DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1A06 SWAP3 SWAP2 SWAP1 PUSH2 0x3862 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1A23 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1A47 SWAP2 SWAP1 PUSH2 0x37C7 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1A5C DUP5 PUSH2 0x21B2 JUMP JUMPDEST SWAP2 POP POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xE8E7E2D1 DUP6 DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1A9A SWAP3 SWAP2 SWAP1 PUSH2 0x388B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1AB7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1ADB SWAP2 SWAP1 PUSH2 0x38C9 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1AEC PUSH2 0x2C2D JUMP JUMPDEST DUP3 PUSH1 0x1 ADD PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH2 0xFFFF AND PUSH2 0xFFFF AND PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP3 ADD PUSH1 0x2 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP3 ADD PUSH1 0xE SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1BC8 JUMPI PUSH2 0x1BC7 PUSH2 0x3555 JUMP JUMPDEST JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 PUSH1 0x3 ADD PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x1D70 JUMPI DUP2 PUSH1 0x3 ADD PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH1 0xFF MUL NOT AND SWAP1 SSTORE DUP2 PUSH1 0x1 ADD PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP1 DUP3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH2 0xFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x0 DUP3 ADD PUSH1 0x2 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x0 DUP3 ADD PUSH1 0xE PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE POP POP PUSH1 0x0 DUP3 PUSH1 0x2 ADD PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP5 PUSH1 0x0 ADD DUP1 SLOAD SWAP1 POP PUSH2 0x1CC3 SWAP2 SWAP1 PUSH2 0x34ED JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP5 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1CDD JUMPI PUSH2 0x1CDC PUSH2 0x3555 JUMP JUMPDEST JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP3 DUP6 PUSH1 0x2 ADD PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP5 PUSH1 0x2 ADD PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SSTORE DUP1 DUP6 PUSH1 0x0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x1D34 JUMPI PUSH2 0x1D33 PUSH2 0x3555 JUMP JUMPDEST JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP2 SWAP1 SSTORE POP DUP5 PUSH1 0x0 ADD DUP1 SLOAD DUP1 PUSH2 0x1D56 JUMPI PUSH2 0x1D55 PUSH2 0x38F6 JUMP JUMPDEST JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE SWAP1 SSTORE POP POP POP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 ADD DUP1 SLOAD SWAP1 POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1D90 PUSH2 0x1982 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0xA ADD PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 POP JUMPDEST DUP8 DUP2 LT ISZERO PUSH2 0x1E7D JUMPI PUSH2 0x1DFD DUP8 DUP3 DUP6 PUSH2 0x1DF8 SWAP2 SWAP1 PUSH2 0x3521 JUMP JUMPDEST PUSH2 0x23F3 JUMP JUMPDEST DUP3 PUSH2 0x1E08 SWAP2 SWAP1 PUSH2 0x3521 JUMP JUMPDEST SWAP2 POP DUP6 ISZERO PUSH2 0x1E6A JUMPI PUSH1 0x1 DUP5 PUSH1 0xA ADD PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1E62 SWAP2 SWAP1 PUSH2 0x3521 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP JUMPDEST DUP1 DUP1 PUSH2 0x1E75 SWAP1 PUSH2 0x3584 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1DE0 JUMP JUMPDEST POP DUP1 SWAP4 POP POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x64 PUSH1 0xFF AND DUP2 PUSH2 0xFFFF AND LT DUP1 PUSH2 0x1EAA JUMPI POP PUSH2 0x2710 PUSH2 0xFFFF AND DUP2 PUSH2 0xFFFF AND GT JUMPDEST ISZERO PUSH2 0x1EE1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x800C7E9100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP5 PUSH1 0x3 ADD PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x1FD2 JUMPI DUP3 DUP6 PUSH1 0x1 ADD PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH2 0xFFFF MUL NOT AND SWAP1 DUP4 PUSH2 0xFFFF AND MUL OR SWAP1 SSTORE POP DUP2 DUP6 PUSH1 0x1 ADD PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x2 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 DUP6 PUSH1 0x1 ADD PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0xE PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x210E JUMP JUMPDEST PUSH1 0x1 DUP6 PUSH1 0x3 ADD PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP3 DUP6 PUSH1 0x1 ADD PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH2 0xFFFF MUL NOT AND SWAP1 DUP4 PUSH2 0xFFFF AND MUL OR SWAP1 SSTORE POP DUP2 DUP6 PUSH1 0x1 ADD PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x2 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 DUP6 PUSH1 0x1 ADD PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0xE PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP5 PUSH1 0x0 ADD DUP1 SLOAD SWAP1 POP DUP6 PUSH1 0x2 ADD PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP5 PUSH1 0x0 ADD DUP5 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 POP SSTORE JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x211F DUP3 DUP3 PUSH2 0x257A JUMP JUMPDEST PUSH2 0x21AE JUMPI PUSH2 0x2144 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x14 PUSH2 0x25EE JUMP JUMPDEST PUSH2 0x2152 DUP4 PUSH1 0x0 SHR PUSH1 0x20 PUSH2 0x25EE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2163 SWAP3 SWAP2 SWAP1 PUSH2 0x3A2E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x21A5 SWAP2 SWAP1 PUSH2 0x3AA1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x65599BF746E17A00EA62E3610586992D88101B78EEC3CF380706621FB97EA837 SLOAD SWAP2 POP PUSH32 0xB969D79D88ACD02D04ED7EE7D43B949E7DAF093D363ABCFBBC43DFDFD1CE969A SLOAD SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x2374 JUMPI PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x22D7 JUMPI DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x20BC4425 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x22B0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x22D4 SWAP2 SWAP1 PUSH2 0x3AD8 JUMP JUMPDEST SWAP2 POP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xB6D200DE PUSH32 0xA9214CC96615E0085D3BB077758DB69497DC2DCE3B2B1E97BC93C3D18D83EFD3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2330 SWAP2 SWAP1 PUSH2 0x3B57 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x234D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2371 SWAP2 SWAP1 PUSH2 0x3BB0 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x23B1 JUMPI PUSH2 0x23B0 PUSH2 0x3BDD JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x23EE JUMPI PUSH2 0x23ED PUSH2 0x3BDD JUMP JUMPDEST JUMPDEST SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x23FE PUSH2 0x1982 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0xC ADD PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0xC ADD PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD SLOAD SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x24C3 DUP10 DUP10 PUSH2 0x282A JUMP JUMPDEST SWAP4 POP POP SWAP3 POP SWAP3 POP PUSH1 0x0 DUP4 DUP4 PUSH2 0x24D8 SWAP2 SWAP1 PUSH2 0x3C0C JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 DUP6 EQ PUSH2 0x2515 JUMPI DUP6 DUP6 PUSH2 0x24FC SWAP2 SWAP1 PUSH2 0x34ED JUMP JUMPDEST DUP2 PUSH2 0x2507 SWAP2 SWAP1 PUSH2 0x3755 JUMP JUMPDEST SWAP8 POP POP POP POP POP POP POP POP PUSH2 0x2574 JUMP JUMPDEST PUSH1 0x0 DUP3 EQ PUSH2 0x2542 JUMPI DUP6 DUP3 PUSH2 0x2529 SWAP2 SWAP1 PUSH2 0x34ED JUMP JUMPDEST DUP2 PUSH2 0x2534 SWAP2 SWAP1 PUSH2 0x3755 JUMP JUMPDEST SWAP8 POP POP POP POP POP POP POP POP PUSH2 0x2574 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xAE1C061F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2584 PUSH2 0x292F JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x2 DUP4 PUSH1 0x2 PUSH2 0x2601 SWAP2 SWAP1 PUSH2 0x3755 JUMP JUMPDEST PUSH2 0x260B SWAP2 SWAP1 PUSH2 0x3521 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2624 JUMPI PUSH2 0x2623 PUSH2 0x3009 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2656 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x268E JUMPI PUSH2 0x268D PUSH2 0x3555 JUMP JUMPDEST JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH32 0x7800000000000000000000000000000000000000000000000000000000000000 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x26F2 JUMPI PUSH2 0x26F1 PUSH2 0x3555 JUMP JUMPDEST JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x0 PUSH1 0x1 DUP5 PUSH1 0x2 PUSH2 0x2732 SWAP2 SWAP1 PUSH2 0x3755 JUMP JUMPDEST PUSH2 0x273C SWAP2 SWAP1 PUSH2 0x3521 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x27DC JUMPI PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 PUSH1 0xF DUP7 AND PUSH1 0x10 DUP2 LT PUSH2 0x277E JUMPI PUSH2 0x277D PUSH2 0x3555 JUMP JUMPDEST JUMPDEST BYTE PUSH1 0xF8 SHL DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2795 JUMPI PUSH2 0x2794 PUSH2 0x3555 JUMP JUMPDEST JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x4 DUP6 SWAP1 SHR SWAP5 POP DUP1 PUSH2 0x27D5 SWAP1 PUSH2 0x3C4C JUMP JUMPDEST SWAP1 POP PUSH2 0x273F JUMP JUMPDEST POP PUSH1 0x0 DUP5 EQ PUSH2 0x2820 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2817 SWAP1 PUSH2 0x3CC1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x283A PUSH2 0x1982 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0xC ADD PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0xC ADD PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 POP PUSH2 0x291B DUP3 DUP11 DUP4 PUSH2 0x295C JUMP JUMPDEST SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP POP POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x4CD15452B25E815D3F9D1A3C7EDD985A178EDF5EB3461A1ACBF855517423D694 SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x296A PUSH2 0x2C00 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xB SIGNEXTEND PUSH2 0x2A11 PUSH2 0x2C00 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0xC SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2AC3 PUSH2 0x2C00 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0x2B5D PUSH2 0x2C00 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x9CD9AFE22FEA86221D6E8117226B65BB0E2AF8C4F5B8ABF255FB0AFCAD4A3A9C SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2CAD DUP3 PUSH2 0x2C82 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2CBD DUP2 PUSH2 0x2CA2 JUMP JUMPDEST DUP2 EQ PUSH2 0x2CC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x2CDA DUP2 PUSH2 0x2CB4 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2CF3 DUP2 PUSH2 0x2CE0 JUMP JUMPDEST DUP2 EQ PUSH2 0x2CFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x2D10 DUP2 PUSH2 0x2CEA JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2D2D JUMPI PUSH2 0x2D2C PUSH2 0x2C78 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2D3B DUP6 DUP3 DUP7 ADD PUSH2 0x2CCB JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x2D4C DUP6 DUP3 DUP7 ADD PUSH2 0x2D01 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x2D5F DUP2 PUSH2 0x2CA2 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x2D6E DUP2 PUSH2 0x2CE0 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x2D89 PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x2D56 JUMP JUMPDEST PUSH2 0x2D96 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x2D65 JUMP JUMPDEST PUSH2 0x2DA3 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x2D65 JUMP JUMPDEST PUSH2 0x2DB0 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x2D65 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2DCF JUMPI PUSH2 0x2DCE PUSH2 0x2C78 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2DDD DUP5 DUP3 DUP6 ADD PUSH2 0x2CCB JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2DFD DUP2 PUSH2 0x2DE6 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2E18 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2DF4 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2E34 JUMPI PUSH2 0x2E33 PUSH2 0x2C78 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2E42 DUP5 DUP3 DUP6 ADD PUSH2 0x2D01 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0xB SIGNEXTEND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2E61 DUP2 PUSH2 0x2E4B JUMP JUMPDEST DUP2 EQ PUSH2 0x2E6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x2E7E DUP2 PUSH2 0x2E58 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2E9B JUMPI PUSH2 0x2E9A PUSH2 0x2C78 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2EA9 DUP6 DUP3 DUP7 ADD PUSH2 0x2CCB JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x2EBA DUP6 DUP3 DUP7 ADD PUSH2 0x2E6F JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2ED9 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2D65 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2F00 DUP2 PUSH2 0x2EDF JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x2F1B PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x2DF4 JUMP JUMPDEST PUSH2 0x2F28 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x2EF7 JUMP JUMPDEST PUSH2 0x2F35 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x2EF7 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2F52 DUP2 PUSH2 0x2F3D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2F6D PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2F49 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2F8A JUMPI PUSH2 0x2F89 PUSH2 0x2C78 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2F98 DUP6 DUP3 DUP7 ADD PUSH2 0x2D01 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x2FA9 DUP6 DUP3 DUP7 ADD PUSH2 0x2CCB JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2FCA JUMPI PUSH2 0x2FC9 PUSH2 0x2C78 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2FD8 DUP6 DUP3 DUP7 ADD PUSH2 0x2CCB JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x2FE9 DUP6 DUP3 DUP7 ADD PUSH2 0x2CCB JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x3041 DUP3 PUSH2 0x2FF8 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x3060 JUMPI PUSH2 0x305F PUSH2 0x3009 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3073 PUSH2 0x2C6E JUMP JUMPDEST SWAP1 POP PUSH2 0x307F DUP3 DUP3 PUSH2 0x3038 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x309F JUMPI PUSH2 0x309E PUSH2 0x3009 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x30BE DUP2 PUSH2 0x2DE6 JUMP JUMPDEST DUP2 EQ PUSH2 0x30C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x30DB DUP2 PUSH2 0x30B5 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x30F4 PUSH2 0x30EF DUP5 PUSH2 0x3084 JUMP JUMPDEST PUSH2 0x3069 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x3117 JUMPI PUSH2 0x3116 PUSH2 0x30B0 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3140 JUMPI DUP1 PUSH2 0x312C DUP9 DUP3 PUSH2 0x30CC JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x3119 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x315F JUMPI PUSH2 0x315E PUSH2 0x2FF3 JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x316F DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x30E1 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x3193 JUMPI PUSH2 0x3192 PUSH2 0x3009 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x31AD DUP2 PUSH2 0x2EDF JUMP JUMPDEST DUP2 EQ PUSH2 0x31B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x31CA DUP2 PUSH2 0x31A4 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x31E3 PUSH2 0x31DE DUP5 PUSH2 0x3178 JUMP JUMPDEST PUSH2 0x3069 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x3206 JUMPI PUSH2 0x3205 PUSH2 0x30B0 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x322F JUMPI DUP1 PUSH2 0x321B DUP9 DUP3 PUSH2 0x31BB JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x3208 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x324E JUMPI PUSH2 0x324D PUSH2 0x2FF3 JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x325E DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x31D0 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x3282 JUMPI PUSH2 0x3281 PUSH2 0x3009 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x32A6 PUSH2 0x32A1 DUP5 PUSH2 0x3267 JUMP JUMPDEST PUSH2 0x3069 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x32C9 JUMPI PUSH2 0x32C8 PUSH2 0x30B0 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x32F2 JUMPI DUP1 PUSH2 0x32DE DUP9 DUP3 PUSH2 0x2D01 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x32CB JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3311 JUMPI PUSH2 0x3310 PUSH2 0x2FF3 JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3321 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x3293 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3344 JUMPI PUSH2 0x3343 PUSH2 0x2C78 JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3362 JUMPI PUSH2 0x3361 PUSH2 0x2C7D JUMP JUMPDEST JUMPDEST PUSH2 0x336E DUP8 DUP3 DUP9 ADD PUSH2 0x314A JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x338F JUMPI PUSH2 0x338E PUSH2 0x2C7D JUMP JUMPDEST JUMPDEST PUSH2 0x339B DUP8 DUP3 DUP9 ADD PUSH2 0x3239 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x33BC JUMPI PUSH2 0x33BB PUSH2 0x2C7D JUMP JUMPDEST JUMPDEST PUSH2 0x33C8 DUP8 DUP3 DUP9 ADD PUSH2 0x3239 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x33E9 JUMPI PUSH2 0x33E8 PUSH2 0x2C7D JUMP JUMPDEST JUMPDEST PUSH2 0x33F5 DUP8 DUP3 DUP9 ADD PUSH2 0x32FC JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3418 JUMPI PUSH2 0x3417 PUSH2 0x2C78 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x3426 DUP6 DUP3 DUP7 ADD PUSH2 0x30CC JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x3437 DUP6 DUP3 DUP7 ADD PUSH2 0x2CCB JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x535452415445474953545F524F4C450000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3488 PUSH1 0xF DUP4 PUSH2 0x3441 JUMP JUMPDEST SWAP2 POP PUSH2 0x3493 DUP3 PUSH2 0x3452 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x34B7 DUP2 PUSH2 0x347B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x34F8 DUP3 PUSH2 0x2CE0 JUMP JUMPDEST SWAP2 POP PUSH2 0x3503 DUP4 PUSH2 0x2CE0 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP DUP2 DUP2 GT ISZERO PUSH2 0x351B JUMPI PUSH2 0x351A PUSH2 0x34BE JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x352C DUP3 PUSH2 0x2CE0 JUMP JUMPDEST SWAP2 POP PUSH2 0x3537 DUP4 PUSH2 0x2CE0 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x354F JUMPI PUSH2 0x354E PUSH2 0x34BE JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x358F DUP3 PUSH2 0x2CE0 JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x35C1 JUMPI PUSH2 0x35C0 PUSH2 0x34BE JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x5452454153555245525F524F4C45000000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3602 PUSH1 0xE DUP4 PUSH2 0x3441 JUMP JUMPDEST SWAP2 POP PUSH2 0x360D DUP3 PUSH2 0x35CC JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3631 DUP2 PUSH2 0x35F5 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x364D PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x2D56 JUMP JUMPDEST PUSH2 0x365A PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2D65 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x366A DUP2 PUSH2 0x2F3D JUMP JUMPDEST DUP2 EQ PUSH2 0x3675 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x3687 DUP2 PUSH2 0x3661 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x36A3 JUMPI PUSH2 0x36A2 PUSH2 0x2C78 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x36B1 DUP5 DUP3 DUP6 ADD PUSH2 0x3678 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x36CF PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x2D56 JUMP JUMPDEST PUSH2 0x36DC PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x2D56 JUMP JUMPDEST PUSH2 0x36E9 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x2D65 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x36FC DUP3 PUSH2 0x2E4B JUMP JUMPDEST SWAP2 POP PUSH2 0x3707 DUP4 PUSH2 0x2E4B JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800000000000000000000000 DUP2 SLT PUSH12 0x7FFFFFFFFFFFFFFFFFFFFFFF DUP3 SGT OR ISZERO PUSH2 0x374F JUMPI PUSH2 0x374E PUSH2 0x34BE JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3760 DUP3 PUSH2 0x2CE0 JUMP JUMPDEST SWAP2 POP PUSH2 0x376B DUP4 PUSH2 0x2CE0 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 MUL PUSH2 0x3779 DUP2 PUSH2 0x2CE0 JUMP JUMPDEST SWAP2 POP DUP3 DUP3 DIV DUP5 EQ DUP4 ISZERO OR PUSH2 0x3790 JUMPI PUSH2 0x378F PUSH2 0x34BE JUMP JUMPDEST JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x37AC PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2D56 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x37C1 DUP2 PUSH2 0x2CEA JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x37DD JUMPI PUSH2 0x37DC PUSH2 0x2C78 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x37EB DUP5 DUP3 DUP6 ADD PUSH2 0x37B2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3819 PUSH2 0x3814 PUSH2 0x380F DUP5 PUSH2 0x2C82 JUMP JUMPDEST PUSH2 0x37F4 JUMP JUMPDEST PUSH2 0x2C82 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x382B DUP3 PUSH2 0x37FE JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x383D DUP3 PUSH2 0x3820 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x384D DUP2 PUSH2 0x3832 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x385C DUP2 PUSH2 0x2E4B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x3877 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x3844 JUMP JUMPDEST PUSH2 0x3884 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3853 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x38A0 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x3844 JUMP JUMPDEST PUSH2 0x38AD PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2D56 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x38C3 DUP2 PUSH2 0x2E58 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x38DF JUMPI PUSH2 0x38DE PUSH2 0x2C78 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x38ED DUP5 DUP3 DUP6 ADD PUSH2 0x38B4 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x416363657373436F6E74726F6C3A206163636F756E7420000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3966 PUSH1 0x17 DUP4 PUSH2 0x3925 JUMP JUMPDEST SWAP2 POP PUSH2 0x3971 DUP3 PUSH2 0x3930 JUMP JUMPDEST PUSH1 0x17 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x39A5 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x398A JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x39BC DUP3 PUSH2 0x397C JUMP JUMPDEST PUSH2 0x39C6 DUP2 DUP6 PUSH2 0x3925 JUMP JUMPDEST SWAP4 POP PUSH2 0x39D6 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x3987 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x206973206D697373696E6720726F6C6520000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A18 PUSH1 0x11 DUP4 PUSH2 0x3925 JUMP JUMPDEST SWAP2 POP PUSH2 0x3A23 DUP3 PUSH2 0x39E2 JUMP JUMPDEST PUSH1 0x11 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A39 DUP3 PUSH2 0x3959 JUMP JUMPDEST SWAP2 POP PUSH2 0x3A45 DUP3 DUP6 PUSH2 0x39B1 JUMP JUMPDEST SWAP2 POP PUSH2 0x3A50 DUP3 PUSH2 0x3A0B JUMP JUMPDEST SWAP2 POP PUSH2 0x3A5C DUP3 DUP5 PUSH2 0x39B1 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A73 DUP3 PUSH2 0x397C JUMP JUMPDEST PUSH2 0x3A7D DUP2 DUP6 PUSH2 0x3441 JUMP JUMPDEST SWAP4 POP PUSH2 0x3A8D DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x3987 JUMP JUMPDEST PUSH2 0x3A96 DUP2 PUSH2 0x2FF8 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3ABB DUP2 DUP5 PUSH2 0x3A68 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x3AD2 DUP2 PUSH2 0x2CB4 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3AEE JUMPI PUSH2 0x3AED PUSH2 0x2C78 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x3AFC DUP5 DUP3 DUP6 ADD PUSH2 0x3AC3 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 SHL SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B41 PUSH2 0x3B3C PUSH2 0x3B37 DUP5 PUSH2 0x3B05 JUMP JUMPDEST PUSH2 0x3B19 JUMP JUMPDEST PUSH2 0x3B0F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3B51 DUP2 PUSH2 0x3B26 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x3B6C PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x3B48 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B7D DUP3 PUSH2 0x2CA2 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3B8D DUP2 PUSH2 0x3B72 JUMP JUMPDEST DUP2 EQ PUSH2 0x3B98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x3BAA DUP2 PUSH2 0x3B84 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3BC6 JUMPI PUSH2 0x3BC5 PUSH2 0x2C78 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x3BD4 DUP5 DUP3 DUP6 ADD PUSH2 0x3B9B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3C17 DUP3 PUSH2 0x2EDF JUMP JUMPDEST SWAP2 POP PUSH2 0x3C22 DUP4 PUSH2 0x2EDF JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3C46 JUMPI PUSH2 0x3C45 PUSH2 0x34BE JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C57 DUP3 PUSH2 0x2CE0 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 DUP3 SUB PUSH2 0x3C6A JUMPI PUSH2 0x3C69 PUSH2 0x34BE JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 SUB SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x537472696E67733A20686578206C656E67746820696E73756666696369656E74 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3CAB PUSH1 0x20 DUP4 PUSH2 0x3441 JUMP JUMPDEST SWAP2 POP PUSH2 0x3CB6 DUP3 PUSH2 0x3C75 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x3CDA DUP2 PUSH2 0x3C9E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF9 AND 0xC5 0xDB 0xCC CREATE2 0xCE 0xCA DUP7 EQ DUP8 0xC0 0x5E LOG2 0xE4 DUP12 DUP3 0xBB 0xE GASPRICE 0xE4 PUSH16 0x943844BA41385030217464736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"391:6696:26:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4856:213;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;2353:185;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6175:113;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1857:243;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;625:441;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;426:193;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2106:241;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6294:216;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1602:249;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5236:124;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6022:147;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;2741;;;:::i;:::-;;2894:145;;;:::i;:::-;;5490:136;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5075:155;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2544:191;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5805:103;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5914:102;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5632:167;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1416:138;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6933:152;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6747:180;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6526:205;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4698:152;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5366:118;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3597:909;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4512:180;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1072:220;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4856:213;4962:7;4971;4980;4989;5015:47;5042:11;5055:6;5015:26;:47::i;:::-;5008:54;;;;;;;;4856:213;;;;;;;:::o;2353:185::-;2416:67;492:29:48;;;;;;;:::i;:::-;;;;;;;;;;;;;482:40;;;;;;2416:33:26;:67::i;:::-;2493:38;2519:11;2493:25;:38::i;:::-;2353:185;:::o;6175:113::-;6230:6;6255:26;6275:5;6255:19;:26::i;:::-;6248:33;;6175:113;;;:::o;1857:243::-;1923:67;492:29:48;;;;;;;:::i;:::-;;;;;;;;;;;;;482:40;;;;;;1923:33:26;:67::i;:::-;2000:42;2032:9;2000:31;:42::i;:::-;2052:41;2083:9;2052:30;:41::i;:::-;1857:243;:::o;625:441::-;1012:47;1038:11;1051:7;1012:25;:47::i;:::-;625:441;;:::o;426:193::-;505:51;544:11;505:38;:51::i;:::-;566:46;591:11;604:7;566:24;:46::i;:::-;426:193;;:::o;2106:241::-;2171:67;492:29:48;;;;;;;:::i;:::-;;;;;;;;;;;;;482:40;;;;;;2171:33:26;:67::i;:::-;2248:42;2280:9;2248:31;:42::i;:::-;2300:40;2330:9;2300:29;:40::i;:::-;2106:241;:::o;6294:216::-;6414:7;6440:63;6477:11;6490:12;6440:36;:63::i;:::-;6433:70;;6294:216;;;;:::o;1602:249::-;1671:67;492:29:48;;;;;;;:::i;:::-;;;;;;;;;;;;;482:40;;;;;;1671:33:26;:67::i;:::-;1748:42;1780:9;1748:31;:42::i;:::-;1800:44;1834:9;1800:33;:44::i;:::-;1602:249;:::o;5236:124::-;5292:7;5318:35;:33;:35::i;:::-;5311:42;;5236:124;:::o;6022:147::-;6093:6;6101;6109;6134:28;6157:4;6134:22;:28::i;:::-;6127:35;;;;;;6022:147;;;;;:::o;2741:::-;2781:67;492:29:48;;;;;;;:::i;:::-;;;;;;;;;;;;;482:40;;;;;;2781:33:26;:67::i;:::-;2858:23;:21;:23::i;:::-;2741:147::o;2894:145::-;2933:67;492:29:48;;;;;;;:::i;:::-;;;;;;;;;;;;;482:40;;;;;;2933:33:26;:67::i;:::-;3010:22;:20;:22::i;:::-;2894:145::o;5490:136::-;5552:7;5578:41;:39;:41::i;:::-;5571:48;;5490:136;:::o;5075:155::-;5161:7;5187:36;5211:11;5187:23;:36::i;:::-;5180:43;;5075:155;;;:::o;2544:191::-;2610:67;492:29:48;;;;;;;:::i;:::-;;;;;;;;;;;;;482:40;;;;;;2610:33:26;:67::i;:::-;2687:41;2716:11;2687:28;:41::i;:::-;2544:191;:::o;5805:103::-;5852:4;5875:26;:24;:26::i;:::-;5868:33;;5805:103;:::o;5914:102::-;5959:7;5985:24;:22;:24::i;:::-;5978:31;;5914:102;:::o;5632:167::-;5722:4;5745:47;5780:11;5745:34;:47::i;:::-;5738:54;;5632:167;;;:::o;1416:138::-;1498:49;1528:5;1535:11;1498:29;:49::i;:::-;1416:138;;:::o;6933:152::-;7014:7;7040:38;7066:11;7040:25;:38::i;:::-;7033:45;;6933:152;;;:::o;6747:180::-;6850:7;6876:44;6901:5;6908:11;6876:24;:44::i;:::-;6869:51;;6747:180;;;;:::o;6526:205::-;6642:4;6665:59;6698:11;6711:12;6665:32;:59::i;:::-;6658:66;;6526:205;;;;:::o;4698:152::-;4779:7;4805:38;4831:11;4805:25;:38::i;:::-;4798:45;;4698:152;;;:::o;5366:118::-;5419:7;5445:32;:30;:32::i;:::-;5438:39;;5366:118;:::o;3597:909::-;3793:67;492:29:48;;;;;;;:::i;:::-;;;;;;;;;;;;;482:40;;;;;;3793:33:26;:67::i;:::-;3903:20;:27;3887:5;:12;:43;;:102;;;;3962:20;:27;3946:5;:12;:43;;3887:102;:146;;;;4021:5;:12;4005:5;:12;:28;;3887:146;3870:202;;;4051:21;;;;;;;;;;;;;;3870:202;4088:9;4083:417;4107:5;:12;4103:1;:16;4083:417;;;4163:1;4148:5;:12;:16;;;;:::i;:::-;4144:1;:20;4140:169;;;4215:20;4240:1;4236;:5;;;;:::i;:::-;4215:27;;;;;;;;:::i;:::-;;;;;;;;4188:54;;:20;4209:1;4188:23;;;;;;;;:::i;:::-;;;;;;;;:54;;;4184:110;;4271:23;;;;;;;;;;;;;;4184:110;4140:169;4323:166;4359:5;4365:1;4359:8;;;;;;;;:::i;:::-;;;;;;;;4385:20;4406:1;4385:23;;;;;;;;:::i;:::-;;;;;;;;4426:20;4447:1;4426:23;;;;;;;;:::i;:::-;;;;;;;;4467:5;4473:1;4467:8;;;;;;;;:::i;:::-;;;;;;;;4323:18;:166::i;:::-;4121:3;;;;;:::i;:::-;;;;4083:417;;;;3597:909;;;;:::o;4512:180::-;4576:67;492:29:48;;;;;;;:::i;:::-;;;;;;;;;;;;;482:40;;;;;;4576:33:26;:67::i;:::-;4653:32;4673:4;4679:5;4653:19;:32::i;:::-;4512:180;;:::o;1072:220::-;1157:66;412:28:48;;;;;;;:::i;:::-;;;;;;;;;;;;;402:39;;;;;;1157:33:26;:66::i;:::-;1233:52;1264:11;1277:7;1233:30;:52::i;:::-;1072:220;;:::o;10037:670:43:-;10144:7;10153;10162;10171;10190:16;10209:17;:15;:17::i;:::-;:40;;:53;10250:11;10209:53;;;;;;;;;;;;;;;:61;10263:6;10209:61;;;;;;;;;;;:70;;;;;;;;;;;;10190:89;;10289:20;10312:17;:15;:17::i;:::-;:40;;:53;10353:11;10312:53;;;;;;;;;;;;;;;:61;10366:6;10312:61;;;;;;;;;;;:74;;;10289:97;;10396:25;10424:17;:15;:17::i;:::-;:40;;:53;10465:11;10424:53;;;;;;;;;;;;;;;:61;10478:6;10424:61;;;;;;;;;;;:79;;;10396:107;;10513:25;10541:17;:15;:17::i;:::-;:40;;:53;10582:11;10541:53;;;;;;;;;;;;;;;:61;10595:6;10541:61;;;;;;;;;;;:79;;;10513:107;;10639:8;10649:12;10663:17;10682;10631:69;;;;;;;;;;;;10037:670;;;;;;;:::o;1039:89:48:-;1104:17;1115:5;1104:10;:17::i;:::-;1039:89;:::o;8496:120:43:-;8605:4;8560:17;:15;:17::i;:::-;:29;;:42;8590:11;8560:42;;;;;;;;;;;;;;;;:49;;;;;;;;;;;;;;;;;;8496:120;:::o;12170:117::-;12226:6;12251:17;:15;:17::i;:::-;:22;;:29;12274:5;12251:29;;;;;;;;;;;;;;;;;;;;;;;;;12244:36;;12170:117;;;:::o;7045:112::-;7129:1;7119:6;:11;7115:35;;7139:11;;;;;;;;;;;;;;7115:35;7045:112;:::o;8238:119::-;8341:9;8305:17;:15;:17::i;:::-;:33;;:45;;;;8238:119;:::o;2791:391::-;2928:7;2876:17;:15;:17::i;:::-;:24;;:36;2901:10;2876:36;;;;;;;;;;;;;;;:49;2913:11;2876:49;;;;;;;;;;;;;;;;:59;2872:104;;;2956:20;;;;;;;;;;;;;;2872:104;3040:7;2987:17;:15;:17::i;:::-;:24;;:36;3012:10;2987:36;;;;;;;;;;;;;;;:49;3024:11;2987:49;;;;;;;;;;;;;;;;:60;;;;;;;:::i;:::-;;;;;;;;3103:7;3057:17;:15;:17::i;:::-;:29;;:42;3087:11;3057:42;;;;;;;;;;;;;;;;:53;;;;;;;:::i;:::-;;;;;;;;3133:11;3121:33;;;3155:10;3167:7;3121:54;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2791:391;;:::o;7163:158::-;7250:36;7274:11;7250:23;:36::i;:::-;7245:69;;7295:19;;;;;;;;;;;;;;7245:69;7163:158;:::o;2445:340::-;2537:11;2525:37;;;2576:10;2608:4;2627:7;2525:119;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2708:7;2655:17;:15;:17::i;:::-;:24;;:36;2680:10;2655:36;;;;;;;;;;;;;;;:49;2692:11;2655:49;;;;;;;;;;;;;;;;:60;;;;;;;:::i;:::-;;;;;;;;2771:7;2725:17;:15;:17::i;:::-;:29;;:42;2755:11;2725:42;;;;;;;;;;;;;;;;:53;;;;;;;:::i;:::-;;;;;;;;2445:340;;:::o;8363:127::-;8474:9;8429:17;:15;:17::i;:::-;:42;;:54;;;;8363:127;:::o;12293:559::-;12414:7;12433:23;12471:11;12433:50;;12493:23;12519:73;12570:12;12519:11;:37;;;;:73;;;;:::i;:::-;12493:99;;12602:25;12630:41;12665:4;12630:11;:26;;;;:41;;;;:::i;:::-;12602:69;;12802:17;:15;:17::i;:::-;:42;;;12769:12;12747:19;:34;;;;:::i;:::-;12732:51;;:112;;;;:::i;:::-;12701:15;:144;;;;:::i;:::-;12682:163;;;;;12293:559;;;;:::o;8107:125::-;8216:9;8177:17;:15;:17::i;:::-;:36;;:48;;;;8107:125;:::o;10713:126::-;10770:7;10796:17;:15;:17::i;:::-;:36;;;10789:43;;10713:126;:::o;11912:252::-;11984:6;11992;12000;12018:28;12049:31;12075:4;12049:17;:15;:17::i;:::-;:21;;:25;;:31;;;;:::i;:::-;12018:62;;12098:4;:8;;;12108:4;:23;;;12133:4;:23;;;12090:67;;;;;;;11912:252;;;;;:::o;8751:112::-;8826:17;:15;:17::i;:::-;:30;;;;;;;;;;;;8825:31;8792:17;:15;:17::i;:::-;:30;;;:64;;;;;;;;;;;;;;;;;;8751:112::o;8869:311::-;8909:23;8935:13;:11;:13::i;:::-;8909:39;;8963:9;8958:216;8982:15;8978:1;:19;8958:216;;;9018:11;9032:84;9101:1;9085:13;:11;:13::i;:::-;:17;;;;:::i;:::-;9032;:15;:17::i;:::-;:21;;:35;;:84;;;;:::i;:::-;9018:98;;9130:33;9159:3;9130:17;:15;:17::i;:::-;:21;;:28;;:33;;;;:::i;:::-;9004:170;8999:3;;;;;:::i;:::-;;;;8958:216;;;;8899:281;8869:311::o;10971:138::-;11034:7;11060:17;:15;:17::i;:::-;:42;;;11053:49;;10971:138;:::o;7959:142::-;8025:7;8051:17;:15;:17::i;:::-;:30;;:43;8082:11;8051:43;;;;;;;;;;;;;;;;8044:50;;7959:142;;;:::o;8622:123::-;8696:17;:15;:17::i;:::-;:29;;:42;8726:11;8696:42;;;;;;;;;;;;;;;;8689:49;;;;;;;;;;;8622:123;:::o;11284:108::-;11332:4;11355:17;:15;:17::i;:::-;:30;;;;;;;;;;;;11348:37;;11284:108;:::o;11398:107::-;11444:7;11470:28;:17;:15;:17::i;:::-;:21;;:26;:28::i;:::-;11463:35;;11398:107;:::o;11115:163::-;11206:4;11229:17;:15;:17::i;:::-;:29;;:42;11259:11;11229:42;;;;;;;;;;;;;;;;;;;;;;;;;11222:49;;11115:163;;;:::o;3602:224::-;3730:89;3761:5;3780:11;3805:4;3730:17;:89::i;:::-;3685:17;:15;:17::i;:::-;:28;;:41;3714:11;3685:41;;;;;;;;;;;;;;;;:134;;;;;;;:::i;:::-;;;;;;;;3602:224;;:::o;13400:157::-;13482:7;13508:17;:15;:17::i;:::-;:29;;:42;13538:11;13508:42;;;;;;;;;;;;;;;;13501:49;;13400:157;;;:::o;13213:181::-;13317:7;13343:17;:15;:17::i;:::-;:24;;:31;13368:5;13343:31;;;;;;;;;;;;;;;:44;13375:11;13343:44;;;;;;;;;;;;;;;;13336:51;;13213:181;;;;:::o;12858:349::-;12975:4;12991:23;13029:11;13017:34;;;13073:4;13017:71;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12991:97;;13148:52;13174:11;13187:12;13148:25;:52::i;:::-;13118:15;:82;13099:101;;;12858:349;;;;:::o;9875:156::-;9957:7;9983:17;:15;:17::i;:::-;:28;;:41;10012:11;9983:41;;;;;;;;;;;;;;;;9976:48;;9875:156;;;:::o;10845:120::-;10899:7;10925:17;:15;:17::i;:::-;:33;;;10918:40;;10845:120;:::o;9186:440::-;9343:30;9368:4;9343:24;:30::i;:::-;9409:19;9387:41;;:19;:41;;;9383:89;;;9449:23;;;;;;;;;;;;;;9383:89;9482:137;9521:4;9539;9557:19;9590;9482:17;:15;:17::i;:::-;:21;;:25;;:137;;;;;;;:::i;:::-;9186:440;;;;:::o;9632:148::-;9697:30;9722:4;9697:24;:30::i;:::-;9769:4;9737:17;:15;:17::i;:::-;:22;;:29;9760:5;9737:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;9632:148;;:::o;3188:408::-;3344:7;3300:17;:15;:17::i;:::-;:28;;:41;3329:11;3300:41;;;;;;;;;;;;;;;;:51;3296:100;;;3372:24;;;;;;;;;;;;;;3296:100;3452:7;3407:17;:15;:17::i;:::-;:28;;:41;3436:11;3407:41;;;;;;;;;;;;;;;;:52;;;;;;;:::i;:::-;;;;;;;;3482:11;3470:37;;;3529:4;3548:10;3572:7;3470:119;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3188:408;;:::o;2131:224::-;2205:24;2245:16;876:23;2245:43;;2331:8;2321:18;;2307:42;2131:224;:::o;1320:95:48:-;1379:29;1390:5;1397:10;1379;:29::i;:::-;1320:95;:::o;23687:267:9:-;23788:20;23827:28;23859:21;23874:5;23859:14;:21::i;:::-;23824:56;;;23897:3;:33;;;23931:5;23938:8;23897:50;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23890:57;;;23687:267;;;;:::o;22431:231::-;22522:14;22555:28;22587:21;22602:5;22587:14;:21::i;:::-;22552:56;;;22625:3;:14;;;22640:5;22647:7;22625:30;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22618:37;;;22431:231;;;;:::o;492:152:47:-;580:23;;:::i;:::-;622:3;:10;;:15;633:3;622:15;;;;;;;;;;;615:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;492:152;;;;:::o;650:148::-;750:7;776:3;:8;;785:5;776:15;;;;;;;;:::i;:::-;;;;;;;;;;769:22;;650:148;;;;:::o;1632:458::-;1702:3;:12;;:17;1715:3;1702:17;;;;;;;;;;;;;;;;;;;;;1697:55;1735:7;1697:55;1769:3;:12;;:17;1782:3;1769:17;;;;;;;;;;;;1762:24;;;;;;;;;;;1803:3;:10;;:15;1814:3;1803:15;;;;;;;;;;;;1796:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1829:10;1842:3;:11;;:16;1854:3;1842:16;;;;;;;;;;;;1829:29;;1868:14;1903:1;1885:3;:8;;:15;;;;:19;;;;:::i;:::-;1868:36;;1914:15;1932:3;:8;;1941:9;1932:19;;;;;;;;:::i;:::-;;;;;;;;;;1914:37;;1985:5;1962:3;:11;;:20;1974:7;1962:20;;;;;;;;;;;:28;;;;2007:3;:11;;:16;2019:3;2007:16;;;;;;;;;;;2000:23;;;2052:7;2034:3;:8;;2043:5;2034:15;;;;;;;;:::i;:::-;;;;;;;;;:25;;;;2069:3;:8;;:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1687:403;;;1632:458;;;:::o;804:102::-;858:7;884:3;:8;;:15;;;;877:22;;804:102;;;:::o;3832:1815:43:-;3959:7;3978:31;4012:17;:15;:17::i;:::-;3978:51;;4039:29;4071:8;:30;;:65;4115:11;4071:65;;;;;;;;;;;;;;;;4039:97;;4250:17;4282:9;4294:1;4282:13;;4277:1337;4301:5;4297:1;:9;4277:1337;;;5420:105;5457:11;5510:1;5486:21;:25;;;;:::i;:::-;5420:19;:105::i;:::-;5407:118;;;;;:::i;:::-;;;5544:9;5540:63;;;5602:1;5555:8;:30;;:43;5586:11;5555:43;;;;;;;;;;;;;;;;:48;;;;;;;:::i;:::-;;;;;;;;5540:63;4308:3;;;;;:::i;:::-;;;;4277:1337;;;;5631:9;5624:16;;;;;3832:1815;;;;;:::o;7770:141::-;938:3;7845:13;;:4;:13;;;:30;;;;981:5;7862:13;;:4;:13;;;7845:30;7841:63;;;7884:20;;;;;;;;;;;;;;7841:63;7770:141;:::o;912:714:47:-;1093:3;:12;;:17;1106:3;1093:17;;;;;;;;;;;;;;;;;;;;;1089:531;;;1148:4;1126:3;:10;;:15;1137:3;1126:15;;;;;;;;;;;:19;;;:26;;;;;;;;;;;;;;;;;;1203:19;1166:3;:10;;:15;1177:3;1166:15;;;;;;;;;;;:34;;;:56;;;;;;;;;;;;;;;;;;1273:19;1236:3;:10;;:15;1247:3;1236:15;;;;;;;;;;;:34;;;:56;;;;;;;;;;;;;;;;;;1089:531;;;1343:4;1323:3;:12;;:17;1336:3;1323:17;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;1384:4;1362:3;:10;;:15;1373:3;1362:15;;;;;;;;;;;:19;;;:26;;;;;;;;;;;;;;;;;;1439:19;1402:3;:10;;:15;1413:3;1402:15;;;;;;;;;;;:34;;;:56;;;;;;;;;;;;;;;;;;1509:19;1472:3;:10;;:15;1483:3;1472:15;;;;;;;;;;;:34;;;:56;;;;;;;;;;;;;;;;;;1562:3;:8;;:15;;;;1543:3;:11;;:16;1555:3;1543:16;;;;;;;;;;;:34;;;;1591:3;:8;;1605:3;1591:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1089:531;912:714;;;;;:::o;1421:491:48:-;1503:25;1512:5;1519:8;1503;:25::i;:::-;1498:408;;1689:42;1717:8;1689:42;;1728:2;1689:19;:42::i;:::-;1802:39;1830:5;1822:14;;1838:2;1802:19;:39::i;:::-;1596:267;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1544:351;;;;;;;;;;;:::i;:::-;;;;;;;;1498:408;1421:491;;:::o;56668:917:9:-;56740:16;56758:28;56913:10;56907:17;56899:25;;56950:9;56944:16;56937:23;;57007:1;56983:26;;56991:3;56983:26;;;56979:511;;57139:1;57114:27;;57122:4;57114:27;;;57110:101;;57180:5;:13;;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;57161:35;;57110:101;57275:4;57263:35;;;57410:66;57263:214;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;57224:255;;56979:511;57531:1;57506:27;;57514:4;57506:27;;;57499:35;;;;:::i;:::-;;57575:1;57551:26;;57559:3;57551:26;;;57544:34;;;;:::i;:::-;;56668:917;;;:::o;5957:1040:43:-;6068:7;6087:31;6121:17;:15;:17::i;:::-;6087:51;;6148:25;6176:8;:31;;:44;6208:11;6176:44;;;;;;;;;;;;;;;:52;6221:6;6176:52;;;;;;;;;;;:70;;;6148:98;;6256:25;6284:8;:31;;:44;6316:11;6284:44;;;;;;;;;;;;;;;:52;6329:6;6284:52;;;;;;;;;;;:70;;;6256:98;;6379:23;6416:15;6459:21;6493:58;6531:11;6544:6;6493:37;:58::i;:::-;6365:186;;;;;;;6562:19;6602:17;6584:8;:36;;;;:::i;:::-;6562:58;;;;6656:1;6635:17;:22;6631:360;;6715:17;6695;:37;;;;:::i;:::-;6680:11;:53;;;;:::i;:::-;6673:60;;;;;;;;;;;6631:360;6771:1;6754:13;:18;6750:241;;6826:17;6810:13;:33;;;;:::i;:::-;6795:11;:49;;;;:::i;:::-;6788:56;;;;;;;;;;;6750:241;6882:15;;;;;;;;;;;;;;5957:1040;;;;;:::o;1134:180:48:-;1230:4;1253:23;:21;:23::i;:::-;:29;;:36;1283:5;1253:36;;;;;;;;;;;:44;;:54;1298:8;1253:54;;;;;;;;;;;;;;;;;;;;;;;;;1246:61;;1134:180;;;;:::o;1513:437:7:-;1588:13;1613:19;1658:1;1649:6;1645:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;1635:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1613:47;;1670:15;:6;1677:1;1670:9;;;;;;;;:::i;:::-;;;;;:15;;;;;;;;;;;1695;:6;1702:1;1695:9;;;;;;;;:::i;:::-;;;;;:15;;;;;;;;;;;1725:9;1750:1;1741:6;1737:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;1725:26;;1720:128;1757:1;1753;:5;1720:128;;;1791:8;1808:3;1800:5;:11;1791:21;;;;;;;:::i;:::-;;;;;1779:6;1786:1;1779:9;;;;;;;;:::i;:::-;;;;;:33;;;;;;;;;;;1836:1;1826:11;;;;;1760:3;;;;:::i;:::-;;;1720:128;;;;1874:1;1865:5;:10;1857:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;1936:6;1922:21;;;1513:437;;;;:::o;6767:504:45:-;6885:5;6892:6;6900:7;6909;6928:42;6973:41;:39;:41::i;:::-;6928:86;;7025:16;7044:8;:22;;:35;7067:11;7044:35;;;;;;;;;;;;;;;:43;7080:6;7044:43;;;;;;;;;;;:52;;;;;;;;;;;;7025:71;;7106:20;7129:8;:31;;:44;7161:11;7129:44;;;;;;;;;;;;;;;:52;7174:6;7129:52;;;;;;;;;;;:65;;;7106:88;;7212:52;7228:8;7238:11;7251:12;7212:15;:52::i;:::-;7205:59;;;;;;;;;;;6767:504;;;;;;;:::o;791:242:48:-;871:30;917:16;203:29;917:49;;1009:8;999:18;;985:42;791:242;:::o;5651:597:45:-;5781:5;5788:6;5796:7;5805;5845:17;:15;:17::i;:::-;:44;;:51;5890:5;5845:51;;;;;;;;;;;;;;;:64;5897:11;5845:64;;;;;;;;;;;;;;;:72;5910:6;5845:72;;;;;;;;;;;:90;;;;;;;;;;;;5949:17;:15;:17::i;:::-;:44;;:51;5994:5;5949:51;;;;;;;;;;;;;;;:64;6001:11;5949:64;;;;;;;;;;;;;;;:72;6014:6;5949:72;;;;;;;;;;;:81;;;;;;;;;;;;6044:17;:15;:17::i;:::-;:44;;:51;6089:5;6044:51;;;;;;;;;;;;;;;:64;6096:11;6044:64;;;;;;;;;;;;;;;:72;6109:6;6044:72;;;;;;;;;;;:87;;;6145:17;:15;:17::i;:::-;:44;;:51;6190:5;6145:51;;;;;;;;;;;;;;;:64;6197:11;6145:64;;;;;;;;;;;;;;;:72;6210:6;6145:72;;;;;;;;;;;:86;;;5824:417;;;;;;;;5651:597;;;;;;;:::o;1292:224::-;1366:24;1406:16;603:23;1406:43;;1492:8;1482:18;;1468:42;1292:224;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7:75:61:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:77::-;878:7;907:5;896:16;;841:77;;;:::o;924:122::-;997:24;1015:5;997:24;:::i;:::-;990:5;987:35;977:63;;1036:1;1033;1026:12;977:63;924:122;:::o;1052:139::-;1098:5;1136:6;1123:20;1114:29;;1152:33;1179:5;1152:33;:::i;:::-;1052:139;;;;:::o;1197:474::-;1265:6;1273;1322:2;1310:9;1301:7;1297:23;1293:32;1290:119;;;1328:79;;:::i;:::-;1290:119;1448:1;1473:53;1518:7;1509:6;1498:9;1494:22;1473:53;:::i;:::-;1463:63;;1419:117;1575:2;1601:53;1646:7;1637:6;1626:9;1622:22;1601:53;:::i;:::-;1591:63;;1546:118;1197:474;;;;;:::o;1677:118::-;1764:24;1782:5;1764:24;:::i;:::-;1759:3;1752:37;1677:118;;:::o;1801:::-;1888:24;1906:5;1888:24;:::i;:::-;1883:3;1876:37;1801:118;;:::o;1925:553::-;2102:4;2140:3;2129:9;2125:19;2117:27;;2154:71;2222:1;2211:9;2207:17;2198:6;2154:71;:::i;:::-;2235:72;2303:2;2292:9;2288:18;2279:6;2235:72;:::i;:::-;2317;2385:2;2374:9;2370:18;2361:6;2317:72;:::i;:::-;2399;2467:2;2456:9;2452:18;2443:6;2399:72;:::i;:::-;1925:553;;;;;;;:::o;2484:329::-;2543:6;2592:2;2580:9;2571:7;2567:23;2563:32;2560:119;;;2598:79;;:::i;:::-;2560:119;2718:1;2743:53;2788:7;2779:6;2768:9;2764:22;2743:53;:::i;:::-;2733:63;;2689:117;2484:329;;;;:::o;2819:89::-;2855:7;2895:6;2888:5;2884:18;2873:29;;2819:89;;;:::o;2914:115::-;2999:23;3016:5;2999:23;:::i;:::-;2994:3;2987:36;2914:115;;:::o;3035:218::-;3126:4;3164:2;3153:9;3149:18;3141:26;;3177:69;3243:1;3232:9;3228:17;3219:6;3177:69;:::i;:::-;3035:218;;;;:::o;3259:329::-;3318:6;3367:2;3355:9;3346:7;3342:23;3338:32;3335:119;;;3373:79;;:::i;:::-;3335:119;3493:1;3518:53;3563:7;3554:6;3543:9;3539:22;3518:53;:::i;:::-;3508:63;;3464:117;3259:329;;;;:::o;3594:91::-;3629:7;3673:5;3669:2;3658:21;3647:32;;3594:91;;;:::o;3691:118::-;3762:22;3778:5;3762:22;:::i;:::-;3755:5;3752:33;3742:61;;3799:1;3796;3789:12;3742:61;3691:118;:::o;3815:135::-;3859:5;3897:6;3884:20;3875:29;;3913:31;3938:5;3913:31;:::i;:::-;3815:135;;;;:::o;3956:470::-;4022:6;4030;4079:2;4067:9;4058:7;4054:23;4050:32;4047:119;;;4085:79;;:::i;:::-;4047:119;4205:1;4230:53;4275:7;4266:6;4255:9;4251:22;4230:53;:::i;:::-;4220:63;;4176:117;4332:2;4358:51;4401:7;4392:6;4381:9;4377:22;4358:51;:::i;:::-;4348:61;;4303:116;3956:470;;;;;:::o;4432:222::-;4525:4;4563:2;4552:9;4548:18;4540:26;;4576:71;4644:1;4633:9;4629:17;4620:6;4576:71;:::i;:::-;4432:222;;;;:::o;4660:109::-;4696:7;4736:26;4729:5;4725:38;4714:49;;4660:109;;;:::o;4775:115::-;4860:23;4877:5;4860:23;:::i;:::-;4855:3;4848:36;4775:115;;:::o;4896:430::-;5039:4;5077:2;5066:9;5062:18;5054:26;;5090:69;5156:1;5145:9;5141:17;5132:6;5090:69;:::i;:::-;5169:70;5235:2;5224:9;5220:18;5211:6;5169:70;:::i;:::-;5249;5315:2;5304:9;5300:18;5291:6;5249:70;:::i;:::-;4896:430;;;;;;:::o;5332:90::-;5366:7;5409:5;5402:13;5395:21;5384:32;;5332:90;;;:::o;5428:109::-;5509:21;5524:5;5509:21;:::i;:::-;5504:3;5497:34;5428:109;;:::o;5543:210::-;5630:4;5668:2;5657:9;5653:18;5645:26;;5681:65;5743:1;5732:9;5728:17;5719:6;5681:65;:::i;:::-;5543:210;;;;:::o;5759:474::-;5827:6;5835;5884:2;5872:9;5863:7;5859:23;5855:32;5852:119;;;5890:79;;:::i;:::-;5852:119;6010:1;6035:53;6080:7;6071:6;6060:9;6056:22;6035:53;:::i;:::-;6025:63;;5981:117;6137:2;6163:53;6208:7;6199:6;6188:9;6184:22;6163:53;:::i;:::-;6153:63;;6108:118;5759:474;;;;;:::o;6239:::-;6307:6;6315;6364:2;6352:9;6343:7;6339:23;6335:32;6332:119;;;6370:79;;:::i;:::-;6332:119;6490:1;6515:53;6560:7;6551:6;6540:9;6536:22;6515:53;:::i;:::-;6505:63;;6461:117;6617:2;6643:53;6688:7;6679:6;6668:9;6664:22;6643:53;:::i;:::-;6633:63;;6588:118;6239:474;;;;;:::o;6719:117::-;6828:1;6825;6818:12;6842:102;6883:6;6934:2;6930:7;6925:2;6918:5;6914:14;6910:28;6900:38;;6842:102;;;:::o;6950:180::-;6998:77;6995:1;6988:88;7095:4;7092:1;7085:15;7119:4;7116:1;7109:15;7136:281;7219:27;7241:4;7219:27;:::i;:::-;7211:6;7207:40;7349:6;7337:10;7334:22;7313:18;7301:10;7298:34;7295:62;7292:88;;;7360:18;;:::i;:::-;7292:88;7400:10;7396:2;7389:22;7179:238;7136:281;;:::o;7423:129::-;7457:6;7484:20;;:::i;:::-;7474:30;;7513:33;7541:4;7533:6;7513:33;:::i;:::-;7423:129;;;:::o;7558:310::-;7634:4;7724:18;7716:6;7713:30;7710:56;;;7746:18;;:::i;:::-;7710:56;7796:4;7788:6;7784:17;7776:25;;7856:4;7850;7846:15;7838:23;;7558:310;;;:::o;7874:117::-;7983:1;7980;7973:12;7997:120;8069:23;8086:5;8069:23;:::i;:::-;8062:5;8059:34;8049:62;;8107:1;8104;8097:12;8049:62;7997:120;:::o;8123:137::-;8168:5;8206:6;8193:20;8184:29;;8222:32;8248:5;8222:32;:::i;:::-;8123:137;;;;:::o;8282:707::-;8377:5;8402:80;8418:63;8474:6;8418:63;:::i;:::-;8402:80;:::i;:::-;8393:89;;8502:5;8531:6;8524:5;8517:21;8565:4;8558:5;8554:16;8547:23;;8618:4;8610:6;8606:17;8598:6;8594:30;8647:3;8639:6;8636:15;8633:122;;;8666:79;;:::i;:::-;8633:122;8781:6;8764:219;8798:6;8793:3;8790:15;8764:219;;;8873:3;8902:36;8934:3;8922:10;8902:36;:::i;:::-;8897:3;8890:49;8968:4;8963:3;8959:14;8952:21;;8840:143;8824:4;8819:3;8815:14;8808:21;;8764:219;;;8768:21;8383:606;;8282:707;;;;;:::o;9011:368::-;9081:5;9130:3;9123:4;9115:6;9111:17;9107:27;9097:122;;9138:79;;:::i;:::-;9097:122;9255:6;9242:20;9280:93;9369:3;9361:6;9354:4;9346:6;9342:17;9280:93;:::i;:::-;9271:102;;9087:292;9011:368;;;;:::o;9385:310::-;9461:4;9551:18;9543:6;9540:30;9537:56;;;9573:18;;:::i;:::-;9537:56;9623:4;9615:6;9611:17;9603:25;;9683:4;9677;9673:15;9665:23;;9385:310;;;:::o;9701:120::-;9773:23;9790:5;9773:23;:::i;:::-;9766:5;9763:34;9753:62;;9811:1;9808;9801:12;9753:62;9701:120;:::o;9827:137::-;9872:5;9910:6;9897:20;9888:29;;9926:32;9952:5;9926:32;:::i;:::-;9827:137;;;;:::o;9986:707::-;10081:5;10106:80;10122:63;10178:6;10122:63;:::i;:::-;10106:80;:::i;:::-;10097:89;;10206:5;10235:6;10228:5;10221:21;10269:4;10262:5;10258:16;10251:23;;10322:4;10314:6;10310:17;10302:6;10298:30;10351:3;10343:6;10340:15;10337:122;;;10370:79;;:::i;:::-;10337:122;10485:6;10468:219;10502:6;10497:3;10494:15;10468:219;;;10577:3;10606:36;10638:3;10626:10;10606:36;:::i;:::-;10601:3;10594:49;10672:4;10667:3;10663:14;10656:21;;10544:143;10528:4;10523:3;10519:14;10512:21;;10468:219;;;10472:21;10087:606;;9986:707;;;;;:::o;10715:368::-;10785:5;10834:3;10827:4;10819:6;10815:17;10811:27;10801:122;;10842:79;;:::i;:::-;10801:122;10959:6;10946:20;10984:93;11073:3;11065:6;11058:4;11050:6;11046:17;10984:93;:::i;:::-;10975:102;;10791:292;10715:368;;;;:::o;11089:311::-;11166:4;11256:18;11248:6;11245:30;11242:56;;;11278:18;;:::i;:::-;11242:56;11328:4;11320:6;11316:17;11308:25;;11388:4;11382;11378:15;11370:23;;11089:311;;;:::o;11423:710::-;11519:5;11544:81;11560:64;11617:6;11560:64;:::i;:::-;11544:81;:::i;:::-;11535:90;;11645:5;11674:6;11667:5;11660:21;11708:4;11701:5;11697:16;11690:23;;11761:4;11753:6;11749:17;11741:6;11737:30;11790:3;11782:6;11779:15;11776:122;;;11809:79;;:::i;:::-;11776:122;11924:6;11907:220;11941:6;11936:3;11933:15;11907:220;;;12016:3;12045:37;12078:3;12066:10;12045:37;:::i;:::-;12040:3;12033:50;12112:4;12107:3;12103:14;12096:21;;11983:144;11967:4;11962:3;11958:14;11951:21;;11907:220;;;11911:21;11525:608;;11423:710;;;;;:::o;12156:370::-;12227:5;12276:3;12269:4;12261:6;12257:17;12253:27;12243:122;;12284:79;;:::i;:::-;12243:122;12401:6;12388:20;12426:94;12516:3;12508:6;12501:4;12493:6;12489:17;12426:94;:::i;:::-;12417:103;;12233:293;12156:370;;;;:::o;12532:1599::-;12715:6;12723;12731;12739;12788:3;12776:9;12767:7;12763:23;12759:33;12756:120;;;12795:79;;:::i;:::-;12756:120;12943:1;12932:9;12928:17;12915:31;12973:18;12965:6;12962:30;12959:117;;;12995:79;;:::i;:::-;12959:117;13100:77;13169:7;13160:6;13149:9;13145:22;13100:77;:::i;:::-;13090:87;;12886:301;13254:2;13243:9;13239:18;13226:32;13285:18;13277:6;13274:30;13271:117;;;13307:79;;:::i;:::-;13271:117;13412:77;13481:7;13472:6;13461:9;13457:22;13412:77;:::i;:::-;13402:87;;13197:302;13566:2;13555:9;13551:18;13538:32;13597:18;13589:6;13586:30;13583:117;;;13619:79;;:::i;:::-;13583:117;13724:77;13793:7;13784:6;13773:9;13769:22;13724:77;:::i;:::-;13714:87;;13509:302;13878:2;13867:9;13863:18;13850:32;13909:18;13901:6;13898:30;13895:117;;;13931:79;;:::i;:::-;13895:117;14036:78;14106:7;14097:6;14086:9;14082:22;14036:78;:::i;:::-;14026:88;;13821:303;12532:1599;;;;;;;:::o;14137:472::-;14204:6;14212;14261:2;14249:9;14240:7;14236:23;14232:32;14229:119;;;14267:79;;:::i;:::-;14229:119;14387:1;14412:52;14456:7;14447:6;14436:9;14432:22;14412:52;:::i;:::-;14402:62;;14358:116;14513:2;14539:53;14584:7;14575:6;14564:9;14560:22;14539:53;:::i;:::-;14529:63;;14484:118;14137:472;;;;;:::o;14615:169::-;14699:11;14733:6;14728:3;14721:19;14773:4;14768:3;14764:14;14749:29;;14615:169;;;;:::o;14790:165::-;14930:17;14926:1;14918:6;14914:14;14907:41;14790:165;:::o;14961:366::-;15103:3;15124:67;15188:2;15183:3;15124:67;:::i;:::-;15117:74;;15200:93;15289:3;15200:93;:::i;:::-;15318:2;15313:3;15309:12;15302:19;;14961:366;;;:::o;15333:419::-;15499:4;15537:2;15526:9;15522:18;15514:26;;15586:9;15580:4;15576:20;15572:1;15561:9;15557:17;15550:47;15614:131;15740:4;15614:131;:::i;:::-;15606:139;;15333:419;;;:::o;15758:180::-;15806:77;15803:1;15796:88;15903:4;15900:1;15893:15;15927:4;15924:1;15917:15;15944:194;15984:4;16004:20;16022:1;16004:20;:::i;:::-;15999:25;;16038:20;16056:1;16038:20;:::i;:::-;16033:25;;16082:1;16079;16075:9;16067:17;;16106:1;16100:4;16097:11;16094:37;;;16111:18;;:::i;:::-;16094:37;15944:194;;;;:::o;16144:191::-;16184:3;16203:20;16221:1;16203:20;:::i;:::-;16198:25;;16237:20;16255:1;16237:20;:::i;:::-;16232:25;;16280:1;16277;16273:9;16266:16;;16301:3;16298:1;16295:10;16292:36;;;16308:18;;:::i;:::-;16292:36;16144:191;;;;:::o;16341:180::-;16389:77;16386:1;16379:88;16486:4;16483:1;16476:15;16510:4;16507:1;16500:15;16527:233;16566:3;16589:24;16607:5;16589:24;:::i;:::-;16580:33;;16635:66;16628:5;16625:77;16622:103;;16705:18;;:::i;:::-;16622:103;16752:1;16745:5;16741:13;16734:20;;16527:233;;;:::o;16766:164::-;16906:16;16902:1;16894:6;16890:14;16883:40;16766:164;:::o;16936:366::-;17078:3;17099:67;17163:2;17158:3;17099:67;:::i;:::-;17092:74;;17175:93;17264:3;17175:93;:::i;:::-;17293:2;17288:3;17284:12;17277:19;;16936:366;;;:::o;17308:419::-;17474:4;17512:2;17501:9;17497:18;17489:26;;17561:9;17555:4;17551:20;17547:1;17536:9;17532:17;17525:47;17589:131;17715:4;17589:131;:::i;:::-;17581:139;;17308:419;;;:::o;17733:332::-;17854:4;17892:2;17881:9;17877:18;17869:26;;17905:71;17973:1;17962:9;17958:17;17949:6;17905:71;:::i;:::-;17986:72;18054:2;18043:9;18039:18;18030:6;17986:72;:::i;:::-;17733:332;;;;;:::o;18071:116::-;18141:21;18156:5;18141:21;:::i;:::-;18134:5;18131:32;18121:60;;18177:1;18174;18167:12;18121:60;18071:116;:::o;18193:137::-;18247:5;18278:6;18272:13;18263:22;;18294:30;18318:5;18294:30;:::i;:::-;18193:137;;;;:::o;18336:345::-;18403:6;18452:2;18440:9;18431:7;18427:23;18423:32;18420:119;;;18458:79;;:::i;:::-;18420:119;18578:1;18603:61;18656:7;18647:6;18636:9;18632:22;18603:61;:::i;:::-;18593:71;;18549:125;18336:345;;;;:::o;18687:442::-;18836:4;18874:2;18863:9;18859:18;18851:26;;18887:71;18955:1;18944:9;18940:17;18931:6;18887:71;:::i;:::-;18968:72;19036:2;19025:9;19021:18;19012:6;18968:72;:::i;:::-;19050;19118:2;19107:9;19103:18;19094:6;19050:72;:::i;:::-;18687:442;;;;;;:::o;19135:327::-;19173:3;19192:18;19208:1;19192:18;:::i;:::-;19187:23;;19224:18;19240:1;19224:18;:::i;:::-;19219:23;;19265:1;19262;19258:9;19251:16;;19355:66;19350:3;19346:76;19305:26;19300:3;19296:36;19280:152;19277:178;;;19435:18;;:::i;:::-;19277:178;19135:327;;;;:::o;19468:410::-;19508:7;19531:20;19549:1;19531:20;:::i;:::-;19526:25;;19565:20;19583:1;19565:20;:::i;:::-;19560:25;;19620:1;19617;19613:9;19642:30;19660:11;19642:30;:::i;:::-;19631:41;;19821:1;19812:7;19808:15;19805:1;19802:22;19782:1;19775:9;19755:83;19732:139;;19851:18;;:::i;:::-;19732:139;19516:362;19468:410;;;;:::o;19884:222::-;19977:4;20015:2;20004:9;20000:18;19992:26;;20028:71;20096:1;20085:9;20081:17;20072:6;20028:71;:::i;:::-;19884:222;;;;:::o;20112:143::-;20169:5;20200:6;20194:13;20185:22;;20216:33;20243:5;20216:33;:::i;:::-;20112:143;;;;:::o;20261:351::-;20331:6;20380:2;20368:9;20359:7;20355:23;20351:32;20348:119;;;20386:79;;:::i;:::-;20348:119;20506:1;20531:64;20587:7;20578:6;20567:9;20563:22;20531:64;:::i;:::-;20521:74;;20477:128;20261:351;;;;:::o;20618:60::-;20646:3;20667:5;20660:12;;20618:60;;;:::o;20684:142::-;20734:9;20767:53;20785:34;20794:24;20812:5;20794:24;:::i;:::-;20785:34;:::i;:::-;20767:53;:::i;:::-;20754:66;;20684:142;;;:::o;20832:126::-;20882:9;20915:37;20946:5;20915:37;:::i;:::-;20902:50;;20832:126;;;:::o;20964:146::-;21034:9;21067:37;21098:5;21067:37;:::i;:::-;21054:50;;20964:146;;;:::o;21116:171::-;21223:57;21274:5;21223:57;:::i;:::-;21218:3;21211:70;21116:171;;:::o;21293:112::-;21376:22;21392:5;21376:22;:::i;:::-;21371:3;21364:35;21293:112;;:::o;21411:364::-;21548:4;21586:2;21575:9;21571:18;21563:26;;21599:91;21687:1;21676:9;21672:17;21663:6;21599:91;:::i;:::-;21700:68;21764:2;21753:9;21749:18;21740:6;21700:68;:::i;:::-;21411:364;;;;;:::o;21781:372::-;21922:4;21960:2;21949:9;21945:18;21937:26;;21973:91;22061:1;22050:9;22046:17;22037:6;21973:91;:::i;:::-;22074:72;22142:2;22131:9;22127:18;22118:6;22074:72;:::i;:::-;21781:372;;;;;:::o;22159:139::-;22214:5;22245:6;22239:13;22230:22;;22261:31;22286:5;22261:31;:::i;:::-;22159:139;;;;:::o;22304:347::-;22372:6;22421:2;22409:9;22400:7;22396:23;22392:32;22389:119;;;22427:79;;:::i;:::-;22389:119;22547:1;22572:62;22626:7;22617:6;22606:9;22602:22;22572:62;:::i;:::-;22562:72;;22518:126;22304:347;;;;:::o;22657:180::-;22705:77;22702:1;22695:88;22802:4;22799:1;22792:15;22826:4;22823:1;22816:15;22843:148;22945:11;22982:3;22967:18;;22843:148;;;;:::o;22997:173::-;23137:25;23133:1;23125:6;23121:14;23114:49;22997:173;:::o;23176:402::-;23336:3;23357:85;23439:2;23434:3;23357:85;:::i;:::-;23350:92;;23451:93;23540:3;23451:93;:::i;:::-;23569:2;23564:3;23560:12;23553:19;;23176:402;;;:::o;23584:99::-;23636:6;23670:5;23664:12;23654:22;;23584:99;;;:::o;23689:246::-;23770:1;23780:113;23794:6;23791:1;23788:13;23780:113;;;23879:1;23874:3;23870:11;23864:18;23860:1;23855:3;23851:11;23844:39;23816:2;23813:1;23809:10;23804:15;;23780:113;;;23927:1;23918:6;23913:3;23909:16;23902:27;23751:184;23689:246;;;:::o;23941:390::-;24047:3;24075:39;24108:5;24075:39;:::i;:::-;24130:89;24212:6;24207:3;24130:89;:::i;:::-;24123:96;;24228:65;24286:6;24281:3;24274:4;24267:5;24263:16;24228:65;:::i;:::-;24318:6;24313:3;24309:16;24302:23;;24051:280;23941:390;;;;:::o;24337:167::-;24477:19;24473:1;24465:6;24461:14;24454:43;24337:167;:::o;24510:402::-;24670:3;24691:85;24773:2;24768:3;24691:85;:::i;:::-;24684:92;;24785:93;24874:3;24785:93;:::i;:::-;24903:2;24898:3;24894:12;24887:19;;24510:402;;;:::o;24918:967::-;25300:3;25322:148;25466:3;25322:148;:::i;:::-;25315:155;;25487:95;25578:3;25569:6;25487:95;:::i;:::-;25480:102;;25599:148;25743:3;25599:148;:::i;:::-;25592:155;;25764:95;25855:3;25846:6;25764:95;:::i;:::-;25757:102;;25876:3;25869:10;;24918:967;;;;;:::o;25891:377::-;25979:3;26007:39;26040:5;26007:39;:::i;:::-;26062:71;26126:6;26121:3;26062:71;:::i;:::-;26055:78;;26142:65;26200:6;26195:3;26188:4;26181:5;26177:16;26142:65;:::i;:::-;26232:29;26254:6;26232:29;:::i;:::-;26227:3;26223:39;26216:46;;25983:285;25891:377;;;;:::o;26274:313::-;26387:4;26425:2;26414:9;26410:18;26402:26;;26474:9;26468:4;26464:20;26460:1;26449:9;26445:17;26438:47;26502:78;26575:4;26566:6;26502:78;:::i;:::-;26494:86;;26274:313;;;;:::o;26593:143::-;26650:5;26681:6;26675:13;26666:22;;26697:33;26724:5;26697:33;:::i;:::-;26593:143;;;;:::o;26742:351::-;26812:6;26861:2;26849:9;26840:7;26836:23;26832:32;26829:119;;;26867:79;;:::i;:::-;26829:119;26987:1;27012:64;27068:7;27059:6;27048:9;27044:22;27012:64;:::i;:::-;27002:74;;26958:128;26742:351;;;;:::o;27099:161::-;27220:7;27249:5;27238:16;;27099:161;;;:::o;27266:77::-;27303:7;27332:5;27321:16;;27266:77;;;:::o;27349:92::-;27381:8;27428:5;27425:1;27421:13;27400:34;;27349:92;;;:::o;27447:314::-;27581:9;27614:141;27632:122;27645:108;27747:5;27645:108;:::i;:::-;27632:122;:::i;:::-;27614:141;:::i;:::-;27601:154;;27447:314;;;:::o;27767:299::-;27938:121;28053:5;27938:121;:::i;:::-;27933:3;27926:134;27767:299;;:::o;28072:390::-;28249:4;28287:2;28276:9;28272:18;28264:26;;28300:155;28452:1;28441:9;28437:17;28428:6;28300:155;:::i;:::-;28072:390;;;;:::o;28468:120::-;28529:7;28558:24;28576:5;28558:24;:::i;:::-;28547:35;;28468:120;;;:::o;28594:170::-;28691:48;28733:5;28691:48;:::i;:::-;28684:5;28681:59;28671:87;;28754:1;28751;28744:12;28671:87;28594:170;:::o;28770:191::-;28851:5;28882:6;28876:13;28867:22;;28898:57;28949:5;28898:57;:::i;:::-;28770:191;;;;:::o;28967:399::-;29061:6;29110:2;29098:9;29089:7;29085:23;29081:32;29078:119;;;29116:79;;:::i;:::-;29078:119;29236:1;29261:88;29341:7;29332:6;29321:9;29317:22;29261:88;:::i;:::-;29251:98;;29207:152;28967:399;;;;:::o;29372:180::-;29420:77;29417:1;29410:88;29517:4;29514:1;29507:15;29541:4;29538:1;29531:15;29558:216;29597:4;29617:19;29634:1;29617:19;:::i;:::-;29612:24;;29650:19;29667:1;29650:19;:::i;:::-;29645:24;;29693:1;29690;29686:9;29678:17;;29717:26;29711:4;29708:36;29705:62;;;29747:18;;:::i;:::-;29705:62;29558:216;;;;:::o;29780:171::-;29819:3;29842:24;29860:5;29842:24;:::i;:::-;29833:33;;29888:4;29881:5;29878:15;29875:41;;29896:18;;:::i;:::-;29875:41;29943:1;29936:5;29932:13;29925:20;;29780:171;;;:::o;29957:182::-;30097:34;30093:1;30085:6;30081:14;30074:58;29957:182;:::o;30145:366::-;30287:3;30308:67;30372:2;30367:3;30308:67;:::i;:::-;30301:74;;30384:93;30473:3;30384:93;:::i;:::-;30502:2;30497:3;30493:12;30486:19;;30145:366;;;:::o;30517:419::-;30683:4;30721:2;30710:9;30706:18;30698:26;;30770:9;30764:4;30760:20;30756:1;30745:9;30741:17;30734:47;30798:131;30924:4;30798:131;:::i;:::-;30790:139;;30517:419;;;:::o"},"methodIdentifiers":{"addSuperToken(address)":"22c3a21f","clearBPS()":"795e3425","depositAsset(address,uint256)":"46a5d043","getAssetTotal(address)":"b2419083","getAssetUser(address,address)":"be835747","getBPSData(uint256)":"6ab1c734","getBPSSize()":"a8771ab9","getControlData(address,uint256)":"0b72660d","getFeeBalance(address)":"c78f6803","getMinimumEndDuration()":"6812a173","getMinimumLifespan()":"ca70e1d5","getNewBufferedAppBalance(address,int96)":"4ee43e46","getNewControlNonce(address)":"7f69bcaf","getSBPS(address)":"2357f2cf","getSTBufferDurationInSecond()":"7ea195ad","isBPSEnabled()":"a86c8c7c","isNewFlowRateAllowed(address,int96)":"c467cddc","isSuperTokensSupported(address)":"acff4744","realizeFeeBalance(uint256,address)":"adefe35e","removeSuperToken(address)":"83807889","setBPS(uint16[],uint96[],uint96[],uint256[])":"cb857c80","setMinimumEndDuration(uint256)":"578dc59a","setMinimumLifespan(uint256)":"245b6c93","setSBPS(uint16,address)":"d99d3b69","setSTBufferAmount(uint256)":"487eb939","toggleBPS()":"703ab1b7","withdrawAsset(address,uint256)":"38e4f064","withdrawFeeBalance(address,uint256)":"ebaae661"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ArrayLengthNotMatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractError\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientAssets\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientFeeBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidBasisPoints\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidFlowRateBounds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSuperToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroValue\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"}],\"name\":\"addSuperToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"clearBPS\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"depositAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"}],\"name\":\"getAssetTotal\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"}],\"name\":\"getAssetUser\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tag\",\"type\":\"uint256\"}],\"name\":\"getBPSData\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"},{\"internalType\":\"uint96\",\"name\":\"\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBPSSize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_nonce\",\"type\":\"uint256\"}],\"name\":\"getControlData\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"}],\"name\":\"getFeeBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinimumEndDuration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinimumLifespan\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"},{\"internalType\":\"int96\",\"name\":\"_newFlowRate\",\"type\":\"int96\"}],\"name\":\"getNewBufferedAppBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"}],\"name\":\"getNewControlNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"getSBPS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSTBufferDurationInSecond\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isBPSEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"},{\"internalType\":\"int96\",\"name\":\"_newFlowRate\",\"type\":\"int96\"}],\"name\":\"isNewFlowRateAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"}],\"name\":\"isSuperTokensSupported\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"}],\"name\":\"realizeFeeBalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"}],\"name\":\"removeSuperToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16[]\",\"name\":\"_bpss\",\"type\":\"uint16[]\"},{\"internalType\":\"uint96[]\",\"name\":\"_flowRateLowerBounds\",\"type\":\"uint96[]\"},{\"internalType\":\"uint96[]\",\"name\":\"_flowRateUpperBounds\",\"type\":\"uint96[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_tags\",\"type\":\"uint256[]\"}],\"name\":\"setBPS\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_duration\",\"type\":\"uint256\"}],\"name\":\"setMinimumEndDuration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_duration\",\"type\":\"uint256\"}],\"name\":\"setMinimumLifespan\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_bps\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"setSBPS\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_duration\",\"type\":\"uint256\"}],\"name\":\"setSTBufferAmount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"toggleBPS\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"withdrawAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"withdrawFeeBalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"realizeFeeBalance(uint256,address)\":{\"notice\":\"do external analysis on up to what count flow ended to determine what `count` should be\"},\"setBPS(uint16[],uint96[],uint96[],uint256[])\":{\"notice\":\"- flowRate must be asc value - flowRateUpperBound value of i must be equal flowRateLowerBound value of i+1 eg: array | tag | bound | bps index | | lower | upper | ---------------------------------- 0 | 1 | 0.001 | 0.002 | 4000 (40%) 1 | 2 | 0.002 | 0.003 | 2000 (20%) 2 | 3 | 0.003 | 0.005 | 500 (5%) how to call (eg): first call has tags related to 720p second call has tags related to 1080p\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/facets/core/Control.sol\":\"Control\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"@openzeppelin/contracts/token/ERC777/IERC777.sol\":{\"keccak256\":\"0x385a7061f1436b079d44c140dee9387d5313e94874ff9ee877dc0085c981ac3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c3fe22bb0d9527356e11f267f9187134de4d4ed1ff77468b4d73e3238697b96\",\"dweb:/ipfs/Qmc8caJctgxbzXEpxRogQMR2bnBk5U67hA7kKbUEG2PUXV\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xa4d1d62251f8574deb032a35fc948386a9b4de74b812d4f545a1ac120486b48a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c969013129ba9e651a20735ef659fef6d8a1139ea3607bd4b26ddea2d645634\",\"dweb:/ipfs/QmVhVa6LGuzAcB8qgDtVHRkucn4ihj5UZr8xBLcJkP6ucb\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa1e8e83cd0087785df04ac79fb395d9f3684caeaf973d9e2c71caef723a3a5d6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33bbf48cc069be677705037ba7520c22b1b622c23b33e1a71495f2d36549d40b\",\"dweb:/ipfs/Qmct36zWXv3j7LZB83uwbg7TXwnZSN1fqHNDZ93GG98bGz\"]},\"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol\":{\"keccak256\":\"0x1b588d76f3addfeb2f368ec534fbd8da6120c8ba3c08e95f410a9cc2204faf79\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://74e51ec8a8d50ad9c6c047a2548de4aac9e6da23f65b2d8a74e89665d26c527f\",\"dweb:/ipfs/QmS26ukRAwj9ZSHmRSbjmpmdA6EaZHAK6JvE38LkqjRYaP\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol\":{\"keccak256\":\"0xb68e122faba133422f4cbdd7e15fc913073dfa2c3682c18d6449b121e67d1104\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://da0611fda964b8356d38cb006133865b58adc6e11d3817e27daf20b02ad6880f\",\"dweb:/ipfs/QmeLbak3yiUfkGvxEZzmS4ndDwDfxtZNeKiA86G3WxzjyD\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IInstantDistributionAgreementV1.sol\":{\"keccak256\":\"0x7b088dfa11a00d2b1e6e0938978364a6918015b052a4bf3ffcc67db9b3182370\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://2437f6ea2d8c8de7613aef5de4dcf3530c2beb801f7d5f3e21ac617e73f8882b\",\"dweb:/ipfs/QmVBtqXYV25fQZ9P6xokBzgFnHCBthJSZdFo9quBY169fd\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol\":{\"keccak256\":\"0x80254971aff00fc006d70b85b7bc830bb28096789e72ff3f03aa22cc7810eb0c\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://840f9d959abfbf3919db3dca35336e360b2bbd54e677439a545c7c4f163f6d70\",\"dweb:/ipfs/QmR4CRq7dpYR4NuCSASkNrcnbSScRX8MaEvDs8L7v3xDyr\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol\":{\"keccak256\":\"0x9b4fab6dcac1337f78e04d67d8c2b48b1de8bd4bbf14b475840f9dbda7b8f21e\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://cc2f3629ad0cb46bd4f595880591ad6c9d75a82d920cb9355e462fbf8022c820\",\"dweb:/ipfs/QmXMovxK4qpWT4yffXxUVjkMNwxEfS6mtn39mLSmjaxEdW\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperApp.sol\":{\"keccak256\":\"0x6cc4b0724d977190c7441dfc3be6c6e48b43b555c3370af32ef5b6600f15f53f\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://3e89c944642772a42429f21a11017b57deb98a9198f8e4f8749f00aaee71299e\",\"dweb:/ipfs/QmaSv9GvqikcGHJ3tcwATDHSpQw6mfnHPDtcfqcZSS7LF6\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.sol\":{\"keccak256\":\"0x6860f0bf69dcc1d1ec39eefb43e0cd18b276b48ebe9efd53450e09cd2f997ab2\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://6421f80f2ff7818bd235b7bf4b911cc40edcb598507a246b4de0fa0191a9e1aa\",\"dweb:/ipfs/QmWxktXMjYhi1zt52D3JXNcxCFesXu8kQoSCJQ3j88apM3\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperTokenFactory.sol\":{\"keccak256\":\"0xe2525ef2906504e2f61775ed91bbebeea2f4e2e3fa42ce190561acf6a01187ff\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://7a9859eb432321a65cd15ca988a13776e1c31df44b4cf25f95fa04b54a8a8625\",\"dweb:/ipfs/QmQVJQoeoWemptZhbRgWJZWwMTiNtxVsc1FYmGdtdTfqcL\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol\":{\"keccak256\":\"0xab9dab941f99d0f0ef6125fb6eafde03378d7c3e94e613dd12fb7fbf594c3373\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://928c6ef915dee69058d4cfcb9f2344d4fc78d9763b47b17e5c03fbff64ba3c64\",\"dweb:/ipfs/Qmdk733ZHceatz3qbuodLCCS9TUspJJtXLoX6vWwMvrPDE\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance.sol\":{\"keccak256\":\"0x90a9259d0f0bb6b1bb6d48f051277eb75df96a9fbe684a203a3a468ad19318e2\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://9c8162a2d07ffe768920fef55292684149173afefbfba76b8fca007e55092229\",\"dweb:/ipfs/QmducLNwrzeUXEpBjUTSMu7sfmQEwVhcYXApe4brc1zQ6V\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol\":{\"keccak256\":\"0x9cad3866982902ea88df0874a563d2e4aeba5a5bcc6289c30cccf9b4099d2fb6\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://e8fd960b259331f204c7cb7dcd32b09d68f4294e3b872fad00ad467609c3ef72\",\"dweb:/ipfs/QmeZFEvsDunXQGPbXFfN5AvfKM5am1FY8Xv6e3c4tNKvgY\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo.sol\":{\"keccak256\":\"0x55be78ffb441c782f612b153d7d9049e3f0dbfd412c1f7df29c896b972b2985f\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://a223c68e38a6c9b1e363e525911bc7eda44ea517865ae53bd0d34ff858cc02ae\",\"dweb:/ipfs/QmVruGehibG6Emr2A6JHwUnhd4NzsGkE24cbGqnDpEvrKh\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.sol\":{\"keccak256\":\"0x7456cd394cc905aae7cdbd4601ce1c296c768c13c28e66efbb913cc070bad3e4\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://5a6589b428b724721ba5b4dd196c8f366a6e694ef313add093f29af64496c042\",\"dweb:/ipfs/QmSMgV6y8L6pyyzDz6kKmafVwujNWcjTqutpCBxe4uNRqg\"]},\"contracts/facets/core/Control.sol\":{\"keccak256\":\"0x945c13b2ec3c077ed5cd53e2239126141f0de0955c3c034060c2dc2fd120edc7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://44fcd7b2a8b11abcfc01c58812e0f1b64dcafb320002f639f9f67aca2706436d\",\"dweb:/ipfs/QmZPgtNdSiF4xHM57CxaHj5JjHAJjVfGuSFbJF6jjyLwFV\"]},\"contracts/interfaces/core/IControl.sol\":{\"keccak256\":\"0xbe980059242de4291d9e3816f3ee0d4ad8dde4eb6a842a673315a7f82bd0b8b7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5f3f5807a1c3fd9605ca2769413d69f3e99e914a5f196fd5392cbedb3f779f3d\",\"dweb:/ipfs/QmUjmRwMjioDHcy6hLxeWDV7TgxahNwcty3HbGSywJTd46\"]},\"contracts/libraries/core/LibControl.sol\":{\"keccak256\":\"0x791dd1dc0c61948e1b1a46d190f02a041abdf6e2db26f1b436b06d8116381103\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://ec9343651044d62055789d04d464545afed31f82268dfd17703763a54441e0ec\",\"dweb:/ipfs/QmWKFYUATgubBYLZCRghkenZbjJHQwdQ8ymZVK5xBFm2QJ\"]},\"contracts/libraries/core/LibFlow.sol\":{\"keccak256\":\"0xf07903d54504fd374edbd492a084b92f9b9bd6e39846ecfcb743d9ce3031e2a7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://94b205c755a9c96ec4d8f3631cf24cb255d28b3abc65c7b2580f50a0f3c23f1c\",\"dweb:/ipfs/QmVsrQ3WzkQ9PvckGaBhd2ZDMV56wsPPZcRCGi5Qv9UXmc\"]},\"contracts/libraries/core/LibSession.sol\":{\"keccak256\":\"0xce48bf158372890e3075e07cab5747d373a3a6cf219ba85bef08691a49b96303\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7b8b013d5426d0ba0f4c9657e0ddc06ee0cecbf91679f4cb06a9bf2214cce17e\",\"dweb:/ipfs/QmXTPcBsdSanj4RM3xPrqNNMXk3eG8H7h47zSXj4ZVwTC9\"]},\"contracts/libraries/utils/IterableMappingBPS.sol\":{\"keccak256\":\"0xb6ab47a53267822918fdd13e4df79bfc1e8b2bbf921c80bbc4ad2e706e3539ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://092d19ac7ce0d7ada8fbb01d3af6822d6d8260fe8b8248e54b906a9edf381dd2\",\"dweb:/ipfs/QmZ8LZ72a2sSNfwm4Fpz54ZHVcjTe1dDy4ZrBhbNztZ1Bg\"]},\"contracts/libraries/utils/LibAccessControl.sol\":{\"keccak256\":\"0xebec727abd5564cc66e0b402d9ceb87168e19d73bd4853b034944b61a420f912\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://5390c191313856ad3f5d863b71d8a9d29a793c73cc6fecd9ef41abff262131a2\",\"dweb:/ipfs/QmUK83c2nwSR1L8M2rADMkJtsaBkADhYN2W3xuoxaQ2eC9\"]}},\"version\":1}"}},"contracts/facets/core/Flow.sol":{"Flow":{"abi":[{"inputs":[],"name":"CallerNotAutobot","type":"error"},{"inputs":[],"name":"HasActiveFlow","type":"error"},{"inputs":[],"name":"InsufficientAppGelatoBalance","type":"error"},{"inputs":[],"name":"InsufficientAppSTBalance","type":"error"},{"inputs":[],"name":"InsufficientFunds","type":"error"},{"inputs":[],"name":"InsufficientLifespan1","type":"error"},{"inputs":[],"name":"InsufficientLifespan2","type":"error"},{"inputs":[],"name":"InsufficientLifespan3","type":"error"},{"inputs":[],"name":"InvalidBalance1","type":"error"},{"inputs":[],"name":"InvalidBalance2","type":"error"},{"inputs":[],"name":"InvalidSuperToken","type":"error"},{"inputs":[],"name":"SessionNotStarted","type":"error"},{"inputs":[],"name":"TooEarly","type":"error"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"},{"internalType":"uint256","name":"_nonce","type":"uint256"}],"name":"closeFlow","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"},{"internalType":"address","name":"_sender","type":"address"},{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"_nonce","type":"uint256"},{"internalType":"int96","name":"_flowRate","type":"int96"}],"name":"decreaseFlow","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"depositSuperToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"address","name":"_superToken","type":"address"}],"name":"getAmountFlowed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"}],"name":"getDepositTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"address","name":"_superToken","type":"address"}],"name":"getDepositUser","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"address","name":"_superToken","type":"address"},{"internalType":"uint256","name":"_nonce","type":"uint256"}],"name":"getFlowData","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"address","name":"_superToken","type":"address"}],"name":"getNewFlowNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"address","name":"_superToken","type":"address"},{"internalType":"int96","name":"_flowRate","type":"int96"}],"name":"getValidSafeLifespan","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"address","name":"_superToken","type":"address"}],"name":"hasActiveFlow","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_viewer","type":"address"},{"internalType":"address","name":"_broadcaster","type":"address"}],"name":"isViewSessionAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"address","name":"_superToken","type":"address"},{"internalType":"uint256","name":"_lifespan","type":"uint256"}],"name":"openFlow","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawSuperToken","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50614fb4806100206000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806354bbc2ad1161008c578063c76474db11610066578063c76474db14610261578063dc5cd1d814610291578063dfc96e1b146102ad578063e32867fc146102c9576100cf565b806354bbc2ad146101cc5780639a5b5f9314610201578063a152ca6f14610231576100cf565b80630197c386146100d45780630dfa0b82146100f057806336fbb025146101205780633870f4a01461013c578063468240a91461016c578063521d3f3c1461019c575b600080fd5b6100ee60048036038101906100e99190613f40565b6102e5565b005b61010a60048036038101906101059190613fb9565b6102fc565b604051610117919061401b565b60405180910390f35b61013a60048036038101906101359190614036565b610312565b005b610156600480360381019061015191906140b1565b61032e565b604051610163919061401b565b60405180910390f35b610186600480360381019061018191906140b1565b610342565b604051610193919061410c565b60405180910390f35b6101b660048036038101906101b191906140b1565b610356565b6040516101c3919061401b565b60405180910390f35b6101e660048036038101906101e19190614127565b61036a565b6040516101f8969594939291906141a2565b60405180910390f35b61021b600480360381019061021691906140b1565b610396565b604051610228919061410c565b60405180910390f35b61024b600480360381019061024691906140b1565b6103aa565b604051610258919061401b565b60405180910390f35b61027b60048036038101906102769190614203565b6103be565b604051610288919061401b565b60405180910390f35b6102ab60048036038101906102a69190613f40565b6103d0565b005b6102c760048036038101906102c29190614127565b6103e7565b005b6102e360048036038101906102de9190613f40565b610db3565b005b6102ee826111d7565b6102f88282611219565b5050565b6000610309848484611399565b90509392505050565b61031a6114e6565b6103278585858585611578565b5050505050565b600061033a83836117d2565b905092915050565b600061034e83836118a5565b905092915050565b600061036283836119a5565b905092915050565b60008060008060008061037e898989611a35565b95509550955095509550955093975093979195509350565b60006103a28383611e1f565b905092915050565b60006103b68383612001565b905092915050565b60006103c982612091565b9050919050565b6103d9826120e3565b6103e38282612127565b5050565b6103f0826120e3565b6103fa3383612376565b61040261269e565b61040b826111d7565b60006104156126eb565b905060006104238585612718565b905060008260010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060010154036104f1576040517f3c2779e500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006104fb6127c9565b905060008360010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060000160009054906101000a9004600b0b90506105ab86826127f6565b60006105b93388888561283a565b905060006105c733896119a5565b9050888460010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550848460010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060020181905550600061073b6128bf565b9050600081600b0160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508a82600c0160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508682600c0160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000838152602001908152602001600020600101819055504282600c0160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060020181905550808660010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008581526020019081526020016000206000018190555061096f8a338d86896128ec565b60006040518060400160405280600267ffffffffffffffff81111561099757610996614230565b5b6040519080825280602002602001820160405280156109c55781602001602082028036833780820191505090505b508152602001600167ffffffffffffffff8111156109e6576109e5614230565b5b604051908082528060200260200182016040528015610a1957816020015b6060815260200190600190039081610a045790505b50815250905060018160000151600081518110610a3957610a3861425f565b5b60200260200101906003811115610a5357610a5261428e565b5b90816003811115610a6757610a6661428e565b5b8152505060038160000151600181518110610a8557610a8461425f565b5b60200260200101906003811115610a9f57610a9e61428e565b5b90816003811115610ab357610ab261428e565b5b81525050610acc8542610ac691906142ec565b86612a3b565b8160200151600081518110610ae457610ae361425f565b5b602002602001018190525060006336fbb02560e01b8c338f888b604051602401610b1295949392919061432f565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050610b79612a67565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633323b46730838560006040518563ffffffff1660e01b8152600401610bdc9493929190614659565b6020604051808303816000875af1158015610bfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1f91906146d8565b8860010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008781526020019081526020016000206005018190555060018860000160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d4491906142ec565b92505081905550600184600b0160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d9d91906142ec565b9250508190555050505050505050505050505050565b6000610dbd6127c9565b90506000610dc96128bf565b600701548260010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085815260200190815260200160002060030154610e6a91906142ec565b905080421015610ea6576040517f085de62500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610eae612a67565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ee8ca3b58360010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000868152602001908152602001600020600501546040518263ffffffff1660e01b8152600401610f9c9190614705565b600060405180830381600087803b158015610fb657600080fd5b505af1158015610fca573d6000803e3d6000fd5b5050505060008260010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008360010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008681526020019081526020016000206002015490506111cf8633848861112b6126eb565b60010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087815260200190815260200160002060000160009054906101000a9004600b0b611578565b505050505050565b6111e081612a94565b611216576040517f334ae3e600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b8173ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b815260040161125693929190614720565b6020604051808303816000875af1158015611275573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112999190614783565b50806112a36127c9565b60020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461132f91906142ec565b925050819055508061133f6127c9565b60030160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461138e91906142ec565b925050819055505050565b600080826bffffffffffffffffffffffff166113b36127c9565b60020160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461143b91906147df565b905060006114476128bf565b90508060060154821015611487576040517fcdd3529e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008160060154836114999190614810565b905081600701548110156114d9576040517f6c451f0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8093505050509392505050565b6114ee612a67565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611576576040517fb5e0b29200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600085905060006115aa30868473ffffffffffffffffffffffffffffffffffffffff16612af39092919063ffffffff16565b9050600083826115ba9190614844565b600b0b136115f3576115ed30868473ffffffffffffffffffffffffffffffffffffffff16612b939092919063ffffffff16565b5061162b565b6116298584836116039190614844565b8473ffffffffffffffffffffffffffffffffffffffff16612d469092919063ffffffff16565b505b426116346127c9565b60010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008681526020019081526020016000206004018190555060006116d36127c9565b60010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000868152602001908152602001600020600001549050426117706128bf565b600c0160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000838152602001908152602001600020600301819055505050505050505050565b60008060006117e18585612ef9565b905060008060008060006117f68a8a88611a35565b955050945094509450945060008061180f878c88612faa565b93505092505082156118245760009850611893565b600084146118585784846118389190614810565b826bffffffffffffffffffffffff1661185191906148a8565b9850611892565b6000811461188c57848161186c9190614810565b826bffffffffffffffffffffffff1661188591906148a8565b9850611891565b600098505b5b5b88995050505050505050505092915050565b6000806118b284846119a5565b905060008111156119995760006118d685856001856118d19190614810565b61324e565b935050505060006118e56127c9565b60010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001856119719190614810565b8152602001908152602001600020600401541480156119905750600081145b9250505061199f565b60009150505b92915050565b60006119af6127c9565b60000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600080600080600080611a466127c9565b60010160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611b006127c9565b60010160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600089815260200190815260200160002060020154611b9a6127c9565b60010160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a815260200190815260200160002060030154611c346127c9565b60010160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008b815260200190815260200160002060040154611cce6127c9565b60010160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c815260200190815260200160002060050154611d686127c9565b60010160008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d815260200190815260200160002060060160009054906101000a900460ff1695509550955095509550955093975093979195509350565b6000806000611e2d846133cd565b915091506000821480611e4257506000815111155b15611e5257600092505050611ffb565b60005b8151811015611ff3576000611e8486848481518110611e7757611e7661425f565b5b6020026020010151612718565b9050600080611eae88868681518110611ea057611e9f61425f565b5b602002602001015185612faa565b935093505050858214611eca5760009650505050505050611ffb565b60008114611ee15760009650505050505050611ffb565b6000611f078a878781518110611efa57611ef961425f565b5b6020026020010151612ef9565b9050600080600080611f348e8b8b81518110611f2657611f2561425f565b5b602002602001015187611a35565b505093509350935093508c73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611f855760009b505050505050505050505050611ffb565b878314611fa05760009b505050505050505050505050611ffb565b8a821015611fbc5760009b505050505050505050505050611ffb565b60008114611fd85760009b505050505050505050505050611ffb565b50505050505050508080611feb906148ea565b915050611e55565b506001925050505b92915050565b600061200b6127c9565b60020160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600061209b6127c9565b60030160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6120ed33826118a5565b15612124576040517fd18923ab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6121313383612376565b600061213b6127c9565b60020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156121f5576040517f356680b700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816121fe6127c9565b60020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461228a9190614810565b925050819055508161229a6127c9565b60030160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546122e99190614810565b925050819055508273ffffffffffffffffffffffffffffffffffffffff166323b872dd3033856040518463ffffffff1660e01b815260040161232d93929190614720565b6020604051808303816000875af115801561234c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123709190614783565b50505050565b600061238283836117d2565b90508061238d6127c9565b60020160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124199190614810565b92505081905550806124296127c9565b60030160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124789190614810565b9250508190555060006124896127c9565b60020160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561253f576040517f0a2005fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006125496127c9565b60030160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156125c2576040517f2fe0888f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006125ce84846119a5565b905060008111156126985760016125e36127c9565b60010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060018461266f9190614810565b815260200190815260200160002060060160006101000a81548160ff0219169083151502179055505b50505050565b6126a6612a67565b600301546126b26134f9565b116126e9576040517fa426119900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6000807f9cd9afe22fea86221d6e8117226b65bb0e2af8c4f5b8abf255fb0afcad4a3a9c90508091505090565b6000806127236126eb565b60000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081146127bd576001816127b89190614810565b6127c0565b60005b91505092915050565b6000807f2da2adfb54fd91bfb31e0d805792077ddcd5b0427b14a56397e2f3cc190c883090508091505090565b61280082826135bb565b612836576040517f1824866a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b600080612848868685611399565b905060006128546128bf565b90508060070154816006015461286a91906142ec565b8510156128a3576040517f3661e75b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818510156128b157846128b3565b815b92505050949350505050565b6000807f2f7ed27098ecefe70183ee38ae4542dee65215b0786f6870871034402cfe2cc990508091505090565b6000859050600061291e30868473ffffffffffffffffffffffffffffffffffffffff16612af39092919063ffffffff16565b9050600081600b0b1361295c5761295685848473ffffffffffffffffffffffffffffffffffffffff1661364f9092919063ffffffff16565b50612994565b61299285848361296c9190614932565b8473ffffffffffffffffffffffffffffffffffffffff16612d469092919063ffffffff16565b505b4261299d6127c9565b60010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008681526020019081526020016000206003018190555050505050505050565b60608282604051602001612a509291906149c1565b604051602081830303815290604052905092915050565b6000807fde06769ca6d80a022439e234eebb61c3801d652175b62f912d6f8cac7b881c6590508091505090565b6000612a9e6128bf565b60090160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080612aff85613802565b9150508073ffffffffffffffffffffffffffffffffffffffff1663e6a1e8888686866040518463ffffffff1660e01b8152600401612b3f93929190614a49565b608060405180830381865afa158015612b5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b809190614aaa565b9091925090505080925050509392505050565b6000806000612ba186613a43565b915091508173ffffffffffffffffffffffffffffffffffffffff166339255d5b828373ffffffffffffffffffffffffffffffffffffffff1663b4b333c68a8a8a600067ffffffffffffffff811115612bfc57612bfb614230565b5b6040519080825280601f01601f191660200182016040528015612c2e5781602001600182028036833780820191505090505b50604051602401612c429493929190614b11565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050600067ffffffffffffffff811115612c9f57612c9e614230565b5b6040519080825280601f01601f191660200182016040528015612cd15781602001600182028036833780820191505090505b506040518463ffffffff1660e01b8152600401612cf093929190614b7e565b6000604051808303816000875af1158015612d0f573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190612d389190614cba565b506001925050509392505050565b6000806000612d5486613a43565b915091508173ffffffffffffffffffffffffffffffffffffffff166339255d5b828373ffffffffffffffffffffffffffffffffffffffff166350209a628a8a8a600067ffffffffffffffff811115612daf57612dae614230565b5b6040519080825280601f01601f191660200182016040528015612de15781602001600182028036833780820191505090505b50604051602401612df59493929190614d03565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050600067ffffffffffffffff811115612e5257612e51614230565b5b6040519080825280601f01601f191660200182016040528015612e845781602001600182028036833780820191505090505b506040518463ffffffff1660e01b8152600401612ea393929190614b7e565b6000604051808303816000875af1158015612ec2573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190612eeb9190614cba565b506001925050509392505050565b600080612f046127c9565b60000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008114612f9e57600181612f999190614810565b612fa1565b60005b91505092915050565b600080600080612fb86126eb565b60010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600086815260200190815260200160002060000160009054906101000a9004600b0b61305f6126eb565b60010160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878152602001908152602001600020600001600c9054906101000a90046bffffffffffffffffffffffff166131116126eb565b60010160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000888152602001908152602001600020600101546131ab6126eb565b60010160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600089815260200190815260200160002060020154935093509350935093509350935093565b600080600080600061325e6127c9565b905060008160010160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008260010160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008981526020019081526020016000206002015490506133b9828a83612faa565b965096509650965050505093509350935093565b600060606133d96126eb565b60020160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546134256126eb565b60020160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101808054806020026020016040519081016040528092919081815260200182805480156134e957602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161349f575b5050505050905091509150915091565b6000613503612a67565b60010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b47064c83073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6040518363ffffffff1660e01b8152600401613575929190614d4f565b602060405180830381865afa158015613592573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135b69190614d78565b905090565b6000808373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016135f79190614da5565b602060405180830381865afa158015613614573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136389190614d78565b90506136448484613cca565b811191505092915050565b600080600061365d86613a43565b915091508173ffffffffffffffffffffffffffffffffffffffff166339255d5b828373ffffffffffffffffffffffffffffffffffffffff166362fc305e8a8a8a600067ffffffffffffffff8111156136b8576136b7614230565b5b6040519080825280601f01601f1916602001820160405280156136ea5781602001600182028036833780820191505090505b506040516024016136fe9493929190614d03565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050600067ffffffffffffffff81111561375b5761375a614230565b5b6040519080825280601f01601f19166020018201604052801561378d5781602001600182028036833780820191505090505b506040518463ffffffff1660e01b81526004016137ac93929190614b7e565b6000604051808303816000875af11580156137cb573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906137f49190614cba565b506001925050509392505050565b6000807f65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea8375491507fb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a549050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036139c457600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613927578273ffffffffffffffffffffffffffffffffffffffff166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015613900573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139249190614dd5565b91505b8173ffffffffffffffffffffffffffffffffffffffff1663b6d200de7fa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd36040518263ffffffff1660e01b81526004016139809190614e4a565b602060405180830381865afa15801561399d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139c19190614ea3565b90505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613a0157613a00614ed0565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613a3e57613a3d614ed0565b5b915091565b6000807f65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea8375491507fb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a549050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613c4b57600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613b68578273ffffffffffffffffffffffffffffffffffffffff166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b659190614dd5565b91505b8173ffffffffffffffffffffffffffffffffffffffff1663b6d200de7fa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd36040518263ffffffff1660e01b8152600401613bc19190614e4a565b602060405180830381865afa158015613bde573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c029190614ea3565b9050817f65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea83755807fb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a555b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613c8857613c87614ed0565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613cc557613cc4614ed0565b5b915091565b6000808390506000613cfb848373ffffffffffffffffffffffffffffffffffffffff16613d7090919063ffffffff16565b90506000613d28308473ffffffffffffffffffffffffffffffffffffffff16613e0490919063ffffffff16565b9050613d326128bf565b600801548582613d429190614932565b6bffffffffffffffffffffffff16613d5a91906148a8565b82613d6591906142ec565b935050505092915050565b600080613d7c84613802565b9150508073ffffffffffffffffffffffffffffffffffffffff16638d997f6e85856040518363ffffffff1660e01b8152600401613dba929190614eff565b602060405180830381865afa158015613dd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dfb9190614d78565b91505092915050565b600080613e1084613802565b9150508073ffffffffffffffffffffffffffffffffffffffff1663e8e7e2d185856040518363ffffffff1660e01b8152600401613e4e929190614f28565b602060405180830381865afa158015613e6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e8f9190614f51565b91505092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613ed782613eac565b9050919050565b613ee781613ecc565b8114613ef257600080fd5b50565b600081359050613f0481613ede565b92915050565b6000819050919050565b613f1d81613f0a565b8114613f2857600080fd5b50565b600081359050613f3a81613f14565b92915050565b60008060408385031215613f5757613f56613ea2565b5b6000613f6585828601613ef5565b9250506020613f7685828601613f2b565b9150509250929050565b600081600b0b9050919050565b613f9681613f80565b8114613fa157600080fd5b50565b600081359050613fb381613f8d565b92915050565b600080600060608486031215613fd257613fd1613ea2565b5b6000613fe086828701613ef5565b9350506020613ff186828701613ef5565b925050604061400286828701613fa4565b9150509250925092565b61401581613f0a565b82525050565b6000602082019050614030600083018461400c565b92915050565b600080600080600060a0868803121561405257614051613ea2565b5b600061406088828901613ef5565b955050602061407188828901613ef5565b945050604061408288828901613ef5565b935050606061409388828901613f2b565b92505060806140a488828901613fa4565b9150509295509295909350565b600080604083850312156140c8576140c7613ea2565b5b60006140d685828601613ef5565b92505060206140e785828601613ef5565b9150509250929050565b60008115159050919050565b614106816140f1565b82525050565b600060208201905061412160008301846140fd565b92915050565b6000806000606084860312156141405761413f613ea2565b5b600061414e86828701613ef5565b935050602061415f86828701613ef5565b925050604061417086828701613f2b565b9150509250925092565b61418381613ecc565b82525050565b6000819050919050565b61419c81614189565b82525050565b600060c0820190506141b7600083018961417a565b6141c4602083018861400c565b6141d1604083018761400c565b6141de606083018661400c565b6141eb6080830185614193565b6141f860a08301846140fd565b979650505050505050565b60006020828403121561421957614218613ea2565b5b600061422784828501613ef5565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006142f782613f0a565b915061430283613f0a565b925082820190508082111561431a576143196142bd565b5b92915050565b61432981613f80565b82525050565b600060a082019050614344600083018861417a565b614351602083018761417a565b61435e604083018661417a565b61436b606083018561400c565b6143786080830184614320565b9695505050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156143bc5780820151818401526020810190506143a1565b60008484015250505050565b6000601f19601f8301169050919050565b60006143e482614382565b6143ee818561438d565b93506143fe81856020860161439e565b614407816143c8565b840191505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6004811061444f5761444e61428e565b5b50565b60008190506144608261443e565b919050565b600061447082614452565b9050919050565b61448081614465565b82525050565b60006144928383614477565b60208301905092915050565b6000602082019050919050565b60006144b682614412565b6144c0818561441d565b93506144cb8361442e565b8060005b838110156144fc5781516144e38882614486565b97506144ee8361449e565b9250506001810190506144cf565b5085935050505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600082825260208201905092915050565b600061455182614382565b61455b8185614535565b935061456b81856020860161439e565b614574816143c8565b840191505092915050565b600061458b8383614546565b905092915050565b6000602082019050919050565b60006145ab82614509565b6145b58185614514565b9350836020820285016145c785614525565b8060005b8581101561460357848403895281516145e4858261457f565b94506145ef83614593565b925060208a019950506001810190506145cb565b50829750879550505050505092915050565b6000604083016000830151848203600086015261463282826144ab565b9150506020830151848203602086015261464c82826145a0565b9150508091505092915050565b600060808201905061466e600083018761417a565b818103602083015261468081866143d9565b905081810360408301526146948185614615565b90506146a3606083018461417a565b95945050505050565b6146b581614189565b81146146c057600080fd5b50565b6000815190506146d2816146ac565b92915050565b6000602082840312156146ee576146ed613ea2565b5b60006146fc848285016146c3565b91505092915050565b600060208201905061471a6000830184614193565b92915050565b6000606082019050614735600083018661417a565b614742602083018561417a565b61474f604083018461400c565b949350505050565b614760816140f1565b811461476b57600080fd5b50565b60008151905061477d81614757565b92915050565b60006020828403121561479957614798613ea2565b5b60006147a78482850161476e565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006147ea82613f0a565b91506147f583613f0a565b925082614805576148046147b0565b5b828204905092915050565b600061481b82613f0a565b915061482683613f0a565b925082820390508181111561483e5761483d6142bd565b5b92915050565b600061484f82613f80565b915061485a83613f80565b925082820390506b7fffffffffffffffffffffff81137fffffffffffffffffffffffffffffffffffffffff800000000000000000000000821217156148a2576148a16142bd565b5b92915050565b60006148b382613f0a565b91506148be83613f0a565b92508282026148cc81613f0a565b915082820484148315176148e3576148e26142bd565b5b5092915050565b60006148f582613f0a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614927576149266142bd565b5b600182019050919050565b600061493d82613f80565b915061494883613f80565b925082820190507fffffffffffffffffffffffffffffffffffffffff80000000000000000000000081126b7fffffffffffffffffffffff821317156149905761498f6142bd565b5b92915050565b60006fffffffffffffffffffffffffffffffff82169050919050565b6149bb81614996565b82525050565b60006040820190506149d660008301856149b2565b6149e360208301846149b2565b9392505050565b6000819050919050565b6000614a0f614a0a614a0584613eac565b6149ea565b613eac565b9050919050565b6000614a21826149f4565b9050919050565b6000614a3382614a16565b9050919050565b614a4381614a28565b82525050565b6000606082019050614a5e6000830186614a3a565b614a6b602083018561417a565b614a78604083018461417a565b949350505050565b600081519050614a8f81613f14565b92915050565b600081519050614aa481613f8d565b92915050565b60008060008060808587031215614ac457614ac3613ea2565b5b6000614ad287828801614a80565b9450506020614ae387828801614a95565b9350506040614af487828801614a80565b9250506060614b0587828801614a80565b91505092959194509250565b6000608082019050614b266000830187614a3a565b614b33602083018661417a565b614b40604083018561417a565b8181036060830152614b5281846143d9565b905095945050505050565b6000614b6882614a16565b9050919050565b614b7881614b5d565b82525050565b6000606082019050614b936000830186614b6f565b8181036020830152614ba581856143d9565b90508181036040830152614bb981846143d9565b9050949350505050565b600080fd5b600080fd5b614bd6826143c8565b810181811067ffffffffffffffff82111715614bf557614bf4614230565b5b80604052505050565b6000614c08613e98565b9050614c148282614bcd565b919050565b600067ffffffffffffffff821115614c3457614c33614230565b5b614c3d826143c8565b9050602081019050919050565b6000614c5d614c5884614c19565b614bfe565b905082815260208101848484011115614c7957614c78614bc8565b5b614c8484828561439e565b509392505050565b600082601f830112614ca157614ca0614bc3565b5b8151614cb1848260208601614c4a565b91505092915050565b600060208284031215614cd057614ccf613ea2565b5b600082015167ffffffffffffffff811115614cee57614ced613ea7565b5b614cfa84828501614c8c565b91505092915050565b6000608082019050614d186000830187614a3a565b614d25602083018661417a565b614d326040830185614320565b8181036060830152614d4481846143d9565b905095945050505050565b6000604082019050614d64600083018561417a565b614d71602083018461417a565b9392505050565b600060208284031215614d8e57614d8d613ea2565b5b6000614d9c84828501614a80565b91505092915050565b6000602082019050614dba600083018461417a565b92915050565b600081519050614dcf81613ede565b92915050565b600060208284031215614deb57614dea613ea2565b5b6000614df984828501614dc0565b91505092915050565b6000819050919050565b60008160001b9050919050565b6000614e34614e2f614e2a84614e02565b614e0c565b614189565b9050919050565b614e4481614e19565b82525050565b6000602082019050614e5f6000830184614e3b565b92915050565b6000614e7082613ecc565b9050919050565b614e8081614e65565b8114614e8b57600080fd5b50565b600081519050614e9d81614e77565b92915050565b600060208284031215614eb957614eb8613ea2565b5b6000614ec784828501614e8e565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000604082019050614f146000830185614a3a565b614f216020830184614320565b9392505050565b6000604082019050614f3d6000830185614a3a565b614f4a602083018461417a565b9392505050565b600060208284031215614f6757614f66613ea2565b5b6000614f7584828501614a95565b9150509291505056fea264697066735822122061d239e0a07ccefface3bc906c97115321134c0696501951366dda0b6f82d91a64736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4FB4 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xCF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x54BBC2AD GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xC76474DB GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xC76474DB EQ PUSH2 0x261 JUMPI DUP1 PUSH4 0xDC5CD1D8 EQ PUSH2 0x291 JUMPI DUP1 PUSH4 0xDFC96E1B EQ PUSH2 0x2AD JUMPI DUP1 PUSH4 0xE32867FC EQ PUSH2 0x2C9 JUMPI PUSH2 0xCF JUMP JUMPDEST DUP1 PUSH4 0x54BBC2AD EQ PUSH2 0x1CC JUMPI DUP1 PUSH4 0x9A5B5F93 EQ PUSH2 0x201 JUMPI DUP1 PUSH4 0xA152CA6F EQ PUSH2 0x231 JUMPI PUSH2 0xCF JUMP JUMPDEST DUP1 PUSH4 0x197C386 EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0xDFA0B82 EQ PUSH2 0xF0 JUMPI DUP1 PUSH4 0x36FBB025 EQ PUSH2 0x120 JUMPI DUP1 PUSH4 0x3870F4A0 EQ PUSH2 0x13C JUMPI DUP1 PUSH4 0x468240A9 EQ PUSH2 0x16C JUMPI DUP1 PUSH4 0x521D3F3C EQ PUSH2 0x19C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEE PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xE9 SWAP2 SWAP1 PUSH2 0x3F40 JUMP JUMPDEST PUSH2 0x2E5 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x10A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x105 SWAP2 SWAP1 PUSH2 0x3FB9 JUMP JUMPDEST PUSH2 0x2FC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x117 SWAP2 SWAP1 PUSH2 0x401B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x13A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x135 SWAP2 SWAP1 PUSH2 0x4036 JUMP JUMPDEST PUSH2 0x312 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x156 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x151 SWAP2 SWAP1 PUSH2 0x40B1 JUMP JUMPDEST PUSH2 0x32E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x163 SWAP2 SWAP1 PUSH2 0x401B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x186 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x181 SWAP2 SWAP1 PUSH2 0x40B1 JUMP JUMPDEST PUSH2 0x342 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x193 SWAP2 SWAP1 PUSH2 0x410C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1B1 SWAP2 SWAP1 PUSH2 0x40B1 JUMP JUMPDEST PUSH2 0x356 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1C3 SWAP2 SWAP1 PUSH2 0x401B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1E6 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1E1 SWAP2 SWAP1 PUSH2 0x4127 JUMP JUMPDEST PUSH2 0x36A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1F8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x41A2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x21B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x216 SWAP2 SWAP1 PUSH2 0x40B1 JUMP JUMPDEST PUSH2 0x396 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x228 SWAP2 SWAP1 PUSH2 0x410C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x24B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x246 SWAP2 SWAP1 PUSH2 0x40B1 JUMP JUMPDEST PUSH2 0x3AA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x258 SWAP2 SWAP1 PUSH2 0x401B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x27B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x276 SWAP2 SWAP1 PUSH2 0x4203 JUMP JUMPDEST PUSH2 0x3BE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x288 SWAP2 SWAP1 PUSH2 0x401B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2AB PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2A6 SWAP2 SWAP1 PUSH2 0x3F40 JUMP JUMPDEST PUSH2 0x3D0 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2C7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2C2 SWAP2 SWAP1 PUSH2 0x4127 JUMP JUMPDEST PUSH2 0x3E7 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2E3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2DE SWAP2 SWAP1 PUSH2 0x3F40 JUMP JUMPDEST PUSH2 0xDB3 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2EE DUP3 PUSH2 0x11D7 JUMP JUMPDEST PUSH2 0x2F8 DUP3 DUP3 PUSH2 0x1219 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x309 DUP5 DUP5 DUP5 PUSH2 0x1399 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x31A PUSH2 0x14E6 JUMP JUMPDEST PUSH2 0x327 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x1578 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x33A DUP4 DUP4 PUSH2 0x17D2 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x34E DUP4 DUP4 PUSH2 0x18A5 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x362 DUP4 DUP4 PUSH2 0x19A5 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x37E DUP10 DUP10 DUP10 PUSH2 0x1A35 JUMP JUMPDEST SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 POP SWAP4 SWAP8 POP SWAP4 SWAP8 SWAP2 SWAP6 POP SWAP4 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A2 DUP4 DUP4 PUSH2 0x1E1F JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B6 DUP4 DUP4 PUSH2 0x2001 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C9 DUP3 PUSH2 0x2091 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3D9 DUP3 PUSH2 0x20E3 JUMP JUMPDEST PUSH2 0x3E3 DUP3 DUP3 PUSH2 0x2127 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x3F0 DUP3 PUSH2 0x20E3 JUMP JUMPDEST PUSH2 0x3FA CALLER DUP4 PUSH2 0x2376 JUMP JUMPDEST PUSH2 0x402 PUSH2 0x269E JUMP JUMPDEST PUSH2 0x40B DUP3 PUSH2 0x11D7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x415 PUSH2 0x26EB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x423 DUP6 DUP6 PUSH2 0x2718 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x1 ADD PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD SLOAD SUB PUSH2 0x4F1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x3C2779E500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4FB PUSH2 0x27C9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x1 ADD PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xB SIGNEXTEND SWAP1 POP PUSH2 0x5AB DUP7 DUP3 PUSH2 0x27F6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5B9 CALLER DUP9 DUP9 DUP6 PUSH2 0x283A JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x5C7 CALLER DUP10 PUSH2 0x19A5 JUMP JUMPDEST SWAP1 POP DUP9 DUP5 PUSH1 0x1 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP5 DUP5 PUSH1 0x1 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD DUP2 SWAP1 SSTORE POP PUSH1 0x0 PUSH2 0x73B PUSH2 0x28BF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0xB ADD PUSH1 0x0 DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP11 DUP3 PUSH1 0xC ADD PUSH1 0x0 DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP7 DUP3 PUSH1 0xC ADD PUSH1 0x0 DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP TIMESTAMP DUP3 PUSH1 0xC ADD PUSH1 0x0 DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD DUP2 SWAP1 SSTORE POP DUP1 DUP7 PUSH1 0x1 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP2 SWAP1 SSTORE POP PUSH2 0x96F DUP11 CALLER DUP14 DUP7 DUP10 PUSH2 0x28EC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x997 JUMPI PUSH2 0x996 PUSH2 0x4230 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x9C5 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x9E6 JUMPI PUSH2 0x9E5 PUSH2 0x4230 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xA19 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xA04 JUMPI SWAP1 POP JUMPDEST POP DUP2 MSTORE POP SWAP1 POP PUSH1 0x1 DUP2 PUSH1 0x0 ADD MLOAD PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xA39 JUMPI PUSH2 0xA38 PUSH2 0x425F JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xA53 JUMPI PUSH2 0xA52 PUSH2 0x428E JUMP JUMPDEST JUMPDEST SWAP1 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xA67 JUMPI PUSH2 0xA66 PUSH2 0x428E JUMP JUMPDEST JUMPDEST DUP2 MSTORE POP POP PUSH1 0x3 DUP2 PUSH1 0x0 ADD MLOAD PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0xA85 JUMPI PUSH2 0xA84 PUSH2 0x425F JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xA9F JUMPI PUSH2 0xA9E PUSH2 0x428E JUMP JUMPDEST JUMPDEST SWAP1 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xAB3 JUMPI PUSH2 0xAB2 PUSH2 0x428E JUMP JUMPDEST JUMPDEST DUP2 MSTORE POP POP PUSH2 0xACC DUP6 TIMESTAMP PUSH2 0xAC6 SWAP2 SWAP1 PUSH2 0x42EC JUMP JUMPDEST DUP7 PUSH2 0x2A3B JUMP JUMPDEST DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xAE4 JUMPI PUSH2 0xAE3 PUSH2 0x425F JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP PUSH1 0x0 PUSH4 0x36FBB025 PUSH1 0xE0 SHL DUP13 CALLER DUP16 DUP9 DUP12 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0xB12 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x432F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP SWAP1 POP PUSH2 0xB79 PUSH2 0x2A67 JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x3323B467 ADDRESS DUP4 DUP6 PUSH1 0x0 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBDC SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4659 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0xBFB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC1F SWAP2 SWAP1 PUSH2 0x46D8 JUMP JUMPDEST DUP9 PUSH1 0x1 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP15 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x5 ADD DUP2 SWAP1 SSTORE POP PUSH1 0x1 DUP9 PUSH1 0x0 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP15 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xD44 SWAP2 SWAP1 PUSH2 0x42EC JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 DUP5 PUSH1 0xB ADD PUSH1 0x0 DUP15 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xD9D SWAP2 SWAP1 PUSH2 0x42EC JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDBD PUSH2 0x27C9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xDC9 PUSH2 0x28BF JUMP JUMPDEST PUSH1 0x7 ADD SLOAD DUP3 PUSH1 0x1 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD SLOAD PUSH2 0xE6A SWAP2 SWAP1 PUSH2 0x42EC JUMP JUMPDEST SWAP1 POP DUP1 TIMESTAMP LT ISZERO PUSH2 0xEA6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x85DE62500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xEAE PUSH2 0x2A67 JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xEE8CA3B5 DUP4 PUSH1 0x1 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x5 ADD SLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF9C SWAP2 SWAP1 PUSH2 0x4705 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFCA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 DUP3 PUSH1 0x1 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x1 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP1 POP PUSH2 0x11CF DUP7 CALLER DUP5 DUP9 PUSH2 0x112B PUSH2 0x26EB JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xB SIGNEXTEND PUSH2 0x1578 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x11E0 DUP2 PUSH2 0x2A94 JUMP JUMPDEST PUSH2 0x1216 JUMPI PUSH1 0x40 MLOAD PUSH32 0x334AE3E600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x23B872DD CALLER ADDRESS DUP5 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1256 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4720 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1275 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1299 SWAP2 SWAP1 PUSH2 0x4783 JUMP JUMPDEST POP DUP1 PUSH2 0x12A3 PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x2 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x132F SWAP2 SWAP1 PUSH2 0x42EC JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 PUSH2 0x133F PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x3 ADD PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x138E SWAP2 SWAP1 PUSH2 0x42EC JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x13B3 PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x2 ADD PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x143B SWAP2 SWAP1 PUSH2 0x47DF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1447 PUSH2 0x28BF JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x6 ADD SLOAD DUP3 LT ISZERO PUSH2 0x1487 JUMPI PUSH1 0x40 MLOAD PUSH32 0xCDD3529E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x6 ADD SLOAD DUP4 PUSH2 0x1499 SWAP2 SWAP1 PUSH2 0x4810 JUMP JUMPDEST SWAP1 POP DUP2 PUSH1 0x7 ADD SLOAD DUP2 LT ISZERO PUSH2 0x14D9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x6C451F0C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP4 POP POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x14EE PUSH2 0x2A67 JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1576 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB5E0B29200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP6 SWAP1 POP PUSH1 0x0 PUSH2 0x15AA ADDRESS DUP7 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2AF3 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 DUP3 PUSH2 0x15BA SWAP2 SWAP1 PUSH2 0x4844 JUMP JUMPDEST PUSH1 0xB SIGNEXTEND SGT PUSH2 0x15F3 JUMPI PUSH2 0x15ED ADDRESS DUP7 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2B93 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP PUSH2 0x162B JUMP JUMPDEST PUSH2 0x1629 DUP6 DUP5 DUP4 PUSH2 0x1603 SWAP2 SWAP1 PUSH2 0x4844 JUMP JUMPDEST DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2D46 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP JUMPDEST TIMESTAMP PUSH2 0x1634 PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD DUP2 SWAP1 SSTORE POP PUSH1 0x0 PUSH2 0x16D3 PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD SLOAD SWAP1 POP TIMESTAMP PUSH2 0x1770 PUSH2 0x28BF JUMP JUMPDEST PUSH1 0xC ADD PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD DUP2 SWAP1 SSTORE POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x17E1 DUP6 DUP6 PUSH2 0x2EF9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x17F6 DUP11 DUP11 DUP9 PUSH2 0x1A35 JUMP JUMPDEST SWAP6 POP POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP PUSH1 0x0 DUP1 PUSH2 0x180F DUP8 DUP13 DUP9 PUSH2 0x2FAA JUMP JUMPDEST SWAP4 POP POP SWAP3 POP POP DUP3 ISZERO PUSH2 0x1824 JUMPI PUSH1 0x0 SWAP9 POP PUSH2 0x1893 JUMP JUMPDEST PUSH1 0x0 DUP5 EQ PUSH2 0x1858 JUMPI DUP5 DUP5 PUSH2 0x1838 SWAP2 SWAP1 PUSH2 0x4810 JUMP JUMPDEST DUP3 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1851 SWAP2 SWAP1 PUSH2 0x48A8 JUMP JUMPDEST SWAP9 POP PUSH2 0x1892 JUMP JUMPDEST PUSH1 0x0 DUP2 EQ PUSH2 0x188C JUMPI DUP5 DUP2 PUSH2 0x186C SWAP2 SWAP1 PUSH2 0x4810 JUMP JUMPDEST DUP3 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1885 SWAP2 SWAP1 PUSH2 0x48A8 JUMP JUMPDEST SWAP9 POP PUSH2 0x1891 JUMP JUMPDEST PUSH1 0x0 SWAP9 POP JUMPDEST JUMPDEST JUMPDEST DUP9 SWAP10 POP POP POP POP POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x18B2 DUP5 DUP5 PUSH2 0x19A5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 GT ISZERO PUSH2 0x1999 JUMPI PUSH1 0x0 PUSH2 0x18D6 DUP6 DUP6 PUSH1 0x1 DUP6 PUSH2 0x18D1 SWAP2 SWAP1 PUSH2 0x4810 JUMP JUMPDEST PUSH2 0x324E JUMP JUMPDEST SWAP4 POP POP POP POP PUSH1 0x0 PUSH2 0x18E5 PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH1 0x1 DUP6 PUSH2 0x1971 SWAP2 SWAP1 PUSH2 0x4810 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD SLOAD EQ DUP1 ISZERO PUSH2 0x1990 JUMPI POP PUSH1 0x0 DUP2 EQ JUMPDEST SWAP3 POP POP POP PUSH2 0x199F JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x19AF PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x1A46 PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1B00 PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH2 0x1B9A PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP11 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD SLOAD PUSH2 0x1C34 PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP14 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP12 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD SLOAD PUSH2 0x1CCE PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP15 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP14 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP13 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x5 ADD SLOAD PUSH2 0x1D68 PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP16 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP15 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP14 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x6 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 POP SWAP4 SWAP8 POP SWAP4 SWAP8 SWAP2 SWAP6 POP SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1E2D DUP5 PUSH2 0x33CD JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ DUP1 PUSH2 0x1E42 JUMPI POP PUSH1 0x0 DUP2 MLOAD GT ISZERO JUMPDEST ISZERO PUSH2 0x1E52 JUMPI PUSH1 0x0 SWAP3 POP POP POP PUSH2 0x1FFB JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x1FF3 JUMPI PUSH1 0x0 PUSH2 0x1E84 DUP7 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1E77 JUMPI PUSH2 0x1E76 PUSH2 0x425F JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x2718 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x1EAE DUP9 DUP7 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x1EA0 JUMPI PUSH2 0x1E9F PUSH2 0x425F JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 PUSH2 0x2FAA JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP DUP6 DUP3 EQ PUSH2 0x1ECA JUMPI PUSH1 0x0 SWAP7 POP POP POP POP POP POP POP PUSH2 0x1FFB JUMP JUMPDEST PUSH1 0x0 DUP2 EQ PUSH2 0x1EE1 JUMPI PUSH1 0x0 SWAP7 POP POP POP POP POP POP POP PUSH2 0x1FFB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F07 DUP11 DUP8 DUP8 DUP2 MLOAD DUP2 LT PUSH2 0x1EFA JUMPI PUSH2 0x1EF9 PUSH2 0x425F JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x2EF9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x1F34 DUP15 DUP12 DUP12 DUP2 MLOAD DUP2 LT PUSH2 0x1F26 JUMPI PUSH2 0x1F25 PUSH2 0x425F JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 PUSH2 0x1A35 JUMP JUMPDEST POP POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1F85 JUMPI PUSH1 0x0 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP PUSH2 0x1FFB JUMP JUMPDEST DUP8 DUP4 EQ PUSH2 0x1FA0 JUMPI PUSH1 0x0 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP PUSH2 0x1FFB JUMP JUMPDEST DUP11 DUP3 LT ISZERO PUSH2 0x1FBC JUMPI PUSH1 0x0 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP PUSH2 0x1FFB JUMP JUMPDEST PUSH1 0x0 DUP2 EQ PUSH2 0x1FD8 JUMPI PUSH1 0x0 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP PUSH2 0x1FFB JUMP JUMPDEST POP POP POP POP POP POP POP POP DUP1 DUP1 PUSH2 0x1FEB SWAP1 PUSH2 0x48EA JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1E55 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x200B PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x2 ADD PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x209B PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x3 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x20ED CALLER DUP3 PUSH2 0x18A5 JUMP JUMPDEST ISZERO PUSH2 0x2124 JUMPI PUSH1 0x40 MLOAD PUSH32 0xD18923AB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x2131 CALLER DUP4 PUSH2 0x2376 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x213B PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x2 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0x21F5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x356680B700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH2 0x21FE PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x2 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x228A SWAP2 SWAP1 PUSH2 0x4810 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH2 0x229A PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x3 ADD PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x22E9 SWAP2 SWAP1 PUSH2 0x4810 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x23B872DD ADDRESS CALLER DUP6 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x232D SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4720 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x234C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2370 SWAP2 SWAP1 PUSH2 0x4783 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2382 DUP4 DUP4 PUSH2 0x17D2 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x238D PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x2 ADD PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x2419 SWAP2 SWAP1 PUSH2 0x4810 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 PUSH2 0x2429 PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x3 ADD PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x2478 SWAP2 SWAP1 PUSH2 0x4810 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x0 PUSH2 0x2489 PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x2 ADD PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD LT ISZERO PUSH2 0x253F JUMPI PUSH1 0x40 MLOAD PUSH32 0xA2005FA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2549 PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x3 ADD PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD LT ISZERO PUSH2 0x25C2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x2FE0888F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x25CE DUP5 DUP5 PUSH2 0x19A5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 GT ISZERO PUSH2 0x2698 JUMPI PUSH1 0x1 PUSH2 0x25E3 PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH1 0x1 DUP5 PUSH2 0x266F SWAP2 SWAP1 PUSH2 0x4810 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x6 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x26A6 PUSH2 0x2A67 JUMP JUMPDEST PUSH1 0x3 ADD SLOAD PUSH2 0x26B2 PUSH2 0x34F9 JUMP JUMPDEST GT PUSH2 0x26E9 JUMPI PUSH1 0x40 MLOAD PUSH32 0xA426119900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x9CD9AFE22FEA86221D6E8117226B65BB0E2AF8C4F5B8ABF255FB0AFCAD4A3A9C SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2723 PUSH2 0x26EB JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH1 0x0 DUP2 EQ PUSH2 0x27BD JUMPI PUSH1 0x1 DUP2 PUSH2 0x27B8 SWAP2 SWAP1 PUSH2 0x4810 JUMP JUMPDEST PUSH2 0x27C0 JUMP JUMPDEST PUSH1 0x0 JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x2DA2ADFB54FD91BFB31E0D805792077DDCD5B0427B14A56397E2F3CC190C8830 SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH2 0x2800 DUP3 DUP3 PUSH2 0x35BB JUMP JUMPDEST PUSH2 0x2836 JUMPI PUSH1 0x40 MLOAD PUSH32 0x1824866A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2848 DUP7 DUP7 DUP6 PUSH2 0x1399 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2854 PUSH2 0x28BF JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x7 ADD SLOAD DUP2 PUSH1 0x6 ADD SLOAD PUSH2 0x286A SWAP2 SWAP1 PUSH2 0x42EC JUMP JUMPDEST DUP6 LT ISZERO PUSH2 0x28A3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x3661E75B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 DUP6 LT ISZERO PUSH2 0x28B1 JUMPI DUP5 PUSH2 0x28B3 JUMP JUMPDEST DUP2 JUMPDEST SWAP3 POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x2F7ED27098ECEFE70183EE38AE4542DEE65215B0786F6870871034402CFE2CC9 SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP6 SWAP1 POP PUSH1 0x0 PUSH2 0x291E ADDRESS DUP7 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2AF3 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0xB SIGNEXTEND SGT PUSH2 0x295C JUMPI PUSH2 0x2956 DUP6 DUP5 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x364F SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP PUSH2 0x2994 JUMP JUMPDEST PUSH2 0x2992 DUP6 DUP5 DUP4 PUSH2 0x296C SWAP2 SWAP1 PUSH2 0x4932 JUMP JUMPDEST DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2D46 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP JUMPDEST TIMESTAMP PUSH2 0x299D PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD DUP2 SWAP1 SSTORE POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2A50 SWAP3 SWAP2 SWAP1 PUSH2 0x49C1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0xDE06769CA6D80A022439E234EEBB61C3801D652175B62F912D6F8CAC7B881C65 SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2A9E PUSH2 0x28BF JUMP JUMPDEST PUSH1 0x9 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2AFF DUP6 PUSH2 0x3802 JUMP JUMPDEST SWAP2 POP POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xE6A1E888 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2B3F SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4A49 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2B5C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2B80 SWAP2 SWAP1 PUSH2 0x4AAA JUMP JUMPDEST SWAP1 SWAP2 SWAP3 POP SWAP1 POP POP DUP1 SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2BA1 DUP7 PUSH2 0x3A43 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x39255D5B DUP3 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xB4B333C6 DUP11 DUP11 DUP11 PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2BFC JUMPI PUSH2 0x2BFB PUSH2 0x4230 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2C2E JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2C42 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4B11 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2C9F JUMPI PUSH2 0x2C9E PUSH2 0x4230 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2CD1 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2CF0 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4B7E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2D0F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2D38 SWAP2 SWAP1 PUSH2 0x4CBA JUMP JUMPDEST POP PUSH1 0x1 SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2D54 DUP7 PUSH2 0x3A43 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x39255D5B DUP3 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x50209A62 DUP11 DUP11 DUP11 PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2DAF JUMPI PUSH2 0x2DAE PUSH2 0x4230 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2DE1 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2DF5 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4D03 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2E52 JUMPI PUSH2 0x2E51 PUSH2 0x4230 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2E84 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2EA3 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4B7E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2EC2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2EEB SWAP2 SWAP1 PUSH2 0x4CBA JUMP JUMPDEST POP PUSH1 0x1 SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2F04 PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH1 0x0 DUP2 EQ PUSH2 0x2F9E JUMPI PUSH1 0x1 DUP2 PUSH2 0x2F99 SWAP2 SWAP1 PUSH2 0x4810 JUMP JUMPDEST PUSH2 0x2FA1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x2FB8 PUSH2 0x26EB JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xB SIGNEXTEND PUSH2 0x305F PUSH2 0x26EB JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0xC SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3111 PUSH2 0x26EB JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0x31AB PUSH2 0x26EB JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x325E PUSH2 0x27C9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x1 ADD PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x1 ADD PUSH1 0x0 DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP1 POP PUSH2 0x33B9 DUP3 DUP11 DUP4 PUSH2 0x2FAA JUMP JUMPDEST SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP POP POP POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH2 0x33D9 PUSH2 0x26EB JUMP JUMPDEST PUSH1 0x2 ADD PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD SLOAD PUSH2 0x3425 PUSH2 0x26EB JUMP JUMPDEST PUSH1 0x2 ADD PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD DUP1 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x34E9 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH2 0x349F JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 POP SWAP2 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3503 PUSH2 0x2A67 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xB47064C8 ADDRESS PUSH20 0xEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3575 SWAP3 SWAP2 SWAP1 PUSH2 0x4D4F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3592 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x35B6 SWAP2 SWAP1 PUSH2 0x4D78 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x35F7 SWAP2 SWAP1 PUSH2 0x4DA5 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3614 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3638 SWAP2 SWAP1 PUSH2 0x4D78 JUMP JUMPDEST SWAP1 POP PUSH2 0x3644 DUP5 DUP5 PUSH2 0x3CCA JUMP JUMPDEST DUP2 GT SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x365D DUP7 PUSH2 0x3A43 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x39255D5B DUP3 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x62FC305E DUP11 DUP11 DUP11 PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x36B8 JUMPI PUSH2 0x36B7 PUSH2 0x4230 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x36EA JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x36FE SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4D03 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x375B JUMPI PUSH2 0x375A PUSH2 0x4230 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x378D JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x37AC SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4B7E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x37CB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x37F4 SWAP2 SWAP1 PUSH2 0x4CBA JUMP JUMPDEST POP PUSH1 0x1 SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x65599BF746E17A00EA62E3610586992D88101B78EEC3CF380706621FB97EA837 SLOAD SWAP2 POP PUSH32 0xB969D79D88ACD02D04ED7EE7D43B949E7DAF093D363ABCFBBC43DFDFD1CE969A SLOAD SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x39C4 JUMPI PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x3927 JUMPI DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x20BC4425 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3900 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3924 SWAP2 SWAP1 PUSH2 0x4DD5 JUMP JUMPDEST SWAP2 POP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xB6D200DE PUSH32 0xA9214CC96615E0085D3BB077758DB69497DC2DCE3B2B1E97BC93C3D18D83EFD3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3980 SWAP2 SWAP1 PUSH2 0x4E4A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x399D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x39C1 SWAP2 SWAP1 PUSH2 0x4EA3 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x3A01 JUMPI PUSH2 0x3A00 PUSH2 0x4ED0 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x3A3E JUMPI PUSH2 0x3A3D PUSH2 0x4ED0 JUMP JUMPDEST JUMPDEST SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x65599BF746E17A00EA62E3610586992D88101B78EEC3CF380706621FB97EA837 SLOAD SWAP2 POP PUSH32 0xB969D79D88ACD02D04ED7EE7D43B949E7DAF093D363ABCFBBC43DFDFD1CE969A SLOAD SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x3C4B JUMPI PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x3B68 JUMPI DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x20BC4425 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3B41 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3B65 SWAP2 SWAP1 PUSH2 0x4DD5 JUMP JUMPDEST SWAP2 POP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xB6D200DE PUSH32 0xA9214CC96615E0085D3BB077758DB69497DC2DCE3B2B1E97BC93C3D18D83EFD3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3BC1 SWAP2 SWAP1 PUSH2 0x4E4A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3BDE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3C02 SWAP2 SWAP1 PUSH2 0x4EA3 JUMP JUMPDEST SWAP1 POP DUP2 PUSH32 0x65599BF746E17A00EA62E3610586992D88101B78EEC3CF380706621FB97EA837 SSTORE DUP1 PUSH32 0xB969D79D88ACD02D04ED7EE7D43B949E7DAF093D363ABCFBBC43DFDFD1CE969A SSTORE JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x3C88 JUMPI PUSH2 0x3C87 PUSH2 0x4ED0 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x3CC5 JUMPI PUSH2 0x3CC4 PUSH2 0x4ED0 JUMP JUMPDEST JUMPDEST SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 SWAP1 POP PUSH1 0x0 PUSH2 0x3CFB DUP5 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3D70 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3D28 ADDRESS DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3E04 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x3D32 PUSH2 0x28BF JUMP JUMPDEST PUSH1 0x8 ADD SLOAD DUP6 DUP3 PUSH2 0x3D42 SWAP2 SWAP1 PUSH2 0x4932 JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3D5A SWAP2 SWAP1 PUSH2 0x48A8 JUMP JUMPDEST DUP3 PUSH2 0x3D65 SWAP2 SWAP1 PUSH2 0x42EC JUMP JUMPDEST SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3D7C DUP5 PUSH2 0x3802 JUMP JUMPDEST SWAP2 POP POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x8D997F6E DUP6 DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DBA SWAP3 SWAP2 SWAP1 PUSH2 0x4EFF JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3DD7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3DFB SWAP2 SWAP1 PUSH2 0x4D78 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3E10 DUP5 PUSH2 0x3802 JUMP JUMPDEST SWAP2 POP POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xE8E7E2D1 DUP6 DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3E4E SWAP3 SWAP2 SWAP1 PUSH2 0x4F28 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3E6B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3E8F SWAP2 SWAP1 PUSH2 0x4F51 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3ED7 DUP3 PUSH2 0x3EAC JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3EE7 DUP2 PUSH2 0x3ECC JUMP JUMPDEST DUP2 EQ PUSH2 0x3EF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x3F04 DUP2 PUSH2 0x3EDE JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3F1D DUP2 PUSH2 0x3F0A JUMP JUMPDEST DUP2 EQ PUSH2 0x3F28 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x3F3A DUP2 PUSH2 0x3F14 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3F57 JUMPI PUSH2 0x3F56 PUSH2 0x3EA2 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x3F65 DUP6 DUP3 DUP7 ADD PUSH2 0x3EF5 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x3F76 DUP6 DUP3 DUP7 ADD PUSH2 0x3F2B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0xB SIGNEXTEND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3F96 DUP2 PUSH2 0x3F80 JUMP JUMPDEST DUP2 EQ PUSH2 0x3FA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x3FB3 DUP2 PUSH2 0x3F8D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3FD2 JUMPI PUSH2 0x3FD1 PUSH2 0x3EA2 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x3FE0 DUP7 DUP3 DUP8 ADD PUSH2 0x3EF5 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x3FF1 DUP7 DUP3 DUP8 ADD PUSH2 0x3EF5 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x4002 DUP7 DUP3 DUP8 ADD PUSH2 0x3FA4 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH2 0x4015 DUP2 PUSH2 0x3F0A JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x4030 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x400C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x4052 JUMPI PUSH2 0x4051 PUSH2 0x3EA2 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x4060 DUP9 DUP3 DUP10 ADD PUSH2 0x3EF5 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH2 0x4071 DUP9 DUP3 DUP10 ADD PUSH2 0x3EF5 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 PUSH2 0x4082 DUP9 DUP3 DUP10 ADD PUSH2 0x3EF5 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 PUSH2 0x4093 DUP9 DUP3 DUP10 ADD PUSH2 0x3F2B JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 PUSH2 0x40A4 DUP9 DUP3 DUP10 ADD PUSH2 0x3FA4 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x40C8 JUMPI PUSH2 0x40C7 PUSH2 0x3EA2 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x40D6 DUP6 DUP3 DUP7 ADD PUSH2 0x3EF5 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x40E7 DUP6 DUP3 DUP7 ADD PUSH2 0x3EF5 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x4106 DUP2 PUSH2 0x40F1 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x4121 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x40FD JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4140 JUMPI PUSH2 0x413F PUSH2 0x3EA2 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x414E DUP7 DUP3 DUP8 ADD PUSH2 0x3EF5 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x415F DUP7 DUP3 DUP8 ADD PUSH2 0x3EF5 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x4170 DUP7 DUP3 DUP8 ADD PUSH2 0x3F2B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH2 0x4183 DUP2 PUSH2 0x3ECC JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x419C DUP2 PUSH2 0x4189 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC0 DUP3 ADD SWAP1 POP PUSH2 0x41B7 PUSH1 0x0 DUP4 ADD DUP10 PUSH2 0x417A JUMP JUMPDEST PUSH2 0x41C4 PUSH1 0x20 DUP4 ADD DUP9 PUSH2 0x400C JUMP JUMPDEST PUSH2 0x41D1 PUSH1 0x40 DUP4 ADD DUP8 PUSH2 0x400C JUMP JUMPDEST PUSH2 0x41DE PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x400C JUMP JUMPDEST PUSH2 0x41EB PUSH1 0x80 DUP4 ADD DUP6 PUSH2 0x4193 JUMP JUMPDEST PUSH2 0x41F8 PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x40FD JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4219 JUMPI PUSH2 0x4218 PUSH2 0x3EA2 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x4227 DUP5 DUP3 DUP6 ADD PUSH2 0x3EF5 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x42F7 DUP3 PUSH2 0x3F0A JUMP JUMPDEST SWAP2 POP PUSH2 0x4302 DUP4 PUSH2 0x3F0A JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x431A JUMPI PUSH2 0x4319 PUSH2 0x42BD JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x4329 DUP2 PUSH2 0x3F80 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 ADD SWAP1 POP PUSH2 0x4344 PUSH1 0x0 DUP4 ADD DUP9 PUSH2 0x417A JUMP JUMPDEST PUSH2 0x4351 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x417A JUMP JUMPDEST PUSH2 0x435E PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x417A JUMP JUMPDEST PUSH2 0x436B PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x400C JUMP JUMPDEST PUSH2 0x4378 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x4320 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x43BC JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x43A1 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x43E4 DUP3 PUSH2 0x4382 JUMP JUMPDEST PUSH2 0x43EE DUP2 DUP6 PUSH2 0x438D JUMP JUMPDEST SWAP4 POP PUSH2 0x43FE DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x439E JUMP JUMPDEST PUSH2 0x4407 DUP2 PUSH2 0x43C8 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x4 DUP2 LT PUSH2 0x444F JUMPI PUSH2 0x444E PUSH2 0x428E JUMP JUMPDEST JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH2 0x4460 DUP3 PUSH2 0x443E JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4470 DUP3 PUSH2 0x4452 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x4480 DUP2 PUSH2 0x4465 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4492 DUP4 DUP4 PUSH2 0x4477 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x44B6 DUP3 PUSH2 0x4412 JUMP JUMPDEST PUSH2 0x44C0 DUP2 DUP6 PUSH2 0x441D JUMP JUMPDEST SWAP4 POP PUSH2 0x44CB DUP4 PUSH2 0x442E JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x44FC JUMPI DUP2 MLOAD PUSH2 0x44E3 DUP9 DUP3 PUSH2 0x4486 JUMP JUMPDEST SWAP8 POP PUSH2 0x44EE DUP4 PUSH2 0x449E JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x44CF JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4551 DUP3 PUSH2 0x4382 JUMP JUMPDEST PUSH2 0x455B DUP2 DUP6 PUSH2 0x4535 JUMP JUMPDEST SWAP4 POP PUSH2 0x456B DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x439E JUMP JUMPDEST PUSH2 0x4574 DUP2 PUSH2 0x43C8 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x458B DUP4 DUP4 PUSH2 0x4546 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x45AB DUP3 PUSH2 0x4509 JUMP JUMPDEST PUSH2 0x45B5 DUP2 DUP6 PUSH2 0x4514 JUMP JUMPDEST SWAP4 POP DUP4 PUSH1 0x20 DUP3 MUL DUP6 ADD PUSH2 0x45C7 DUP6 PUSH2 0x4525 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x4603 JUMPI DUP5 DUP5 SUB DUP10 MSTORE DUP2 MLOAD PUSH2 0x45E4 DUP6 DUP3 PUSH2 0x457F JUMP JUMPDEST SWAP5 POP PUSH2 0x45EF DUP4 PUSH2 0x4593 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP11 ADD SWAP10 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x45CB JUMP JUMPDEST POP DUP3 SWAP8 POP DUP8 SWAP6 POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP4 ADD PUSH1 0x0 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH1 0x0 DUP7 ADD MSTORE PUSH2 0x4632 DUP3 DUP3 PUSH2 0x44AB JUMP JUMPDEST SWAP2 POP POP PUSH1 0x20 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH1 0x20 DUP7 ADD MSTORE PUSH2 0x464C DUP3 DUP3 PUSH2 0x45A0 JUMP JUMPDEST SWAP2 POP POP DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x466E PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x417A JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x4680 DUP2 DUP7 PUSH2 0x43D9 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x4694 DUP2 DUP6 PUSH2 0x4615 JUMP JUMPDEST SWAP1 POP PUSH2 0x46A3 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x417A JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x46B5 DUP2 PUSH2 0x4189 JUMP JUMPDEST DUP2 EQ PUSH2 0x46C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x46D2 DUP2 PUSH2 0x46AC JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x46EE JUMPI PUSH2 0x46ED PUSH2 0x3EA2 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x46FC DUP5 DUP3 DUP6 ADD PUSH2 0x46C3 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x471A PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x4193 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x4735 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x417A JUMP JUMPDEST PUSH2 0x4742 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x417A JUMP JUMPDEST PUSH2 0x474F PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x400C JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x4760 DUP2 PUSH2 0x40F1 JUMP JUMPDEST DUP2 EQ PUSH2 0x476B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x477D DUP2 PUSH2 0x4757 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4799 JUMPI PUSH2 0x4798 PUSH2 0x3EA2 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x47A7 DUP5 DUP3 DUP6 ADD PUSH2 0x476E JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x47EA DUP3 PUSH2 0x3F0A JUMP JUMPDEST SWAP2 POP PUSH2 0x47F5 DUP4 PUSH2 0x3F0A JUMP JUMPDEST SWAP3 POP DUP3 PUSH2 0x4805 JUMPI PUSH2 0x4804 PUSH2 0x47B0 JUMP JUMPDEST JUMPDEST DUP3 DUP3 DIV SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x481B DUP3 PUSH2 0x3F0A JUMP JUMPDEST SWAP2 POP PUSH2 0x4826 DUP4 PUSH2 0x3F0A JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP DUP2 DUP2 GT ISZERO PUSH2 0x483E JUMPI PUSH2 0x483D PUSH2 0x42BD JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x484F DUP3 PUSH2 0x3F80 JUMP JUMPDEST SWAP2 POP PUSH2 0x485A DUP4 PUSH2 0x3F80 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP PUSH12 0x7FFFFFFFFFFFFFFFFFFFFFFF DUP2 SGT PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800000000000000000000000 DUP3 SLT OR ISZERO PUSH2 0x48A2 JUMPI PUSH2 0x48A1 PUSH2 0x42BD JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x48B3 DUP3 PUSH2 0x3F0A JUMP JUMPDEST SWAP2 POP PUSH2 0x48BE DUP4 PUSH2 0x3F0A JUMP JUMPDEST SWAP3 POP DUP3 DUP3 MUL PUSH2 0x48CC DUP2 PUSH2 0x3F0A JUMP JUMPDEST SWAP2 POP DUP3 DUP3 DIV DUP5 EQ DUP4 ISZERO OR PUSH2 0x48E3 JUMPI PUSH2 0x48E2 PUSH2 0x42BD JUMP JUMPDEST JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x48F5 DUP3 PUSH2 0x3F0A JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x4927 JUMPI PUSH2 0x4926 PUSH2 0x42BD JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x493D DUP3 PUSH2 0x3F80 JUMP JUMPDEST SWAP2 POP PUSH2 0x4948 DUP4 PUSH2 0x3F80 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800000000000000000000000 DUP2 SLT PUSH12 0x7FFFFFFFFFFFFFFFFFFFFFFF DUP3 SGT OR ISZERO PUSH2 0x4990 JUMPI PUSH2 0x498F PUSH2 0x42BD JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x49BB DUP2 PUSH2 0x4996 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x49D6 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x49B2 JUMP JUMPDEST PUSH2 0x49E3 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x49B2 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4A0F PUSH2 0x4A0A PUSH2 0x4A05 DUP5 PUSH2 0x3EAC JUMP JUMPDEST PUSH2 0x49EA JUMP JUMPDEST PUSH2 0x3EAC JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4A21 DUP3 PUSH2 0x49F4 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4A33 DUP3 PUSH2 0x4A16 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x4A43 DUP2 PUSH2 0x4A28 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x4A5E PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x4A3A JUMP JUMPDEST PUSH2 0x4A6B PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x417A JUMP JUMPDEST PUSH2 0x4A78 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x417A JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x4A8F DUP2 PUSH2 0x3F14 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x4AA4 DUP2 PUSH2 0x3F8D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4AC4 JUMPI PUSH2 0x4AC3 PUSH2 0x3EA2 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x4AD2 DUP8 DUP3 DUP9 ADD PUSH2 0x4A80 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x4AE3 DUP8 DUP3 DUP9 ADD PUSH2 0x4A95 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x4AF4 DUP8 DUP3 DUP9 ADD PUSH2 0x4A80 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x4B05 DUP8 DUP3 DUP9 ADD PUSH2 0x4A80 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x4B26 PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x4A3A JUMP JUMPDEST PUSH2 0x4B33 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x417A JUMP JUMPDEST PUSH2 0x4B40 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x417A JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x4B52 DUP2 DUP5 PUSH2 0x43D9 JUMP JUMPDEST SWAP1 POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4B68 DUP3 PUSH2 0x4A16 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x4B78 DUP2 PUSH2 0x4B5D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x4B93 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x4B6F JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x4BA5 DUP2 DUP6 PUSH2 0x43D9 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x4BB9 DUP2 DUP5 PUSH2 0x43D9 JUMP JUMPDEST SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4BD6 DUP3 PUSH2 0x43C8 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x4BF5 JUMPI PUSH2 0x4BF4 PUSH2 0x4230 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4C08 PUSH2 0x3E98 JUMP JUMPDEST SWAP1 POP PUSH2 0x4C14 DUP3 DUP3 PUSH2 0x4BCD JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x4C34 JUMPI PUSH2 0x4C33 PUSH2 0x4230 JUMP JUMPDEST JUMPDEST PUSH2 0x4C3D DUP3 PUSH2 0x43C8 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4C5D PUSH2 0x4C58 DUP5 PUSH2 0x4C19 JUMP JUMPDEST PUSH2 0x4BFE JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x4C79 JUMPI PUSH2 0x4C78 PUSH2 0x4BC8 JUMP JUMPDEST JUMPDEST PUSH2 0x4C84 DUP5 DUP3 DUP6 PUSH2 0x439E JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4CA1 JUMPI PUSH2 0x4CA0 PUSH2 0x4BC3 JUMP JUMPDEST JUMPDEST DUP2 MLOAD PUSH2 0x4CB1 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x4C4A JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4CD0 JUMPI PUSH2 0x4CCF PUSH2 0x3EA2 JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP3 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4CEE JUMPI PUSH2 0x4CED PUSH2 0x3EA7 JUMP JUMPDEST JUMPDEST PUSH2 0x4CFA DUP5 DUP3 DUP6 ADD PUSH2 0x4C8C JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x4D18 PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x4A3A JUMP JUMPDEST PUSH2 0x4D25 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x417A JUMP JUMPDEST PUSH2 0x4D32 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x4320 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x4D44 DUP2 DUP5 PUSH2 0x43D9 JUMP JUMPDEST SWAP1 POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x4D64 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x417A JUMP JUMPDEST PUSH2 0x4D71 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x417A JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4D8E JUMPI PUSH2 0x4D8D PUSH2 0x3EA2 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x4D9C DUP5 DUP3 DUP6 ADD PUSH2 0x4A80 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x4DBA PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x417A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x4DCF DUP2 PUSH2 0x3EDE JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4DEB JUMPI PUSH2 0x4DEA PUSH2 0x3EA2 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x4DF9 DUP5 DUP3 DUP6 ADD PUSH2 0x4DC0 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 SHL SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4E34 PUSH2 0x4E2F PUSH2 0x4E2A DUP5 PUSH2 0x4E02 JUMP JUMPDEST PUSH2 0x4E0C JUMP JUMPDEST PUSH2 0x4189 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x4E44 DUP2 PUSH2 0x4E19 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x4E5F PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x4E3B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4E70 DUP3 PUSH2 0x3ECC JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x4E80 DUP2 PUSH2 0x4E65 JUMP JUMPDEST DUP2 EQ PUSH2 0x4E8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x4E9D DUP2 PUSH2 0x4E77 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4EB9 JUMPI PUSH2 0x4EB8 PUSH2 0x3EA2 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x4EC7 DUP5 DUP3 DUP6 ADD PUSH2 0x4E8E JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x4F14 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x4A3A JUMP JUMPDEST PUSH2 0x4F21 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4320 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x4F3D PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x4A3A JUMP JUMPDEST PUSH2 0x4F4A PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x417A JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4F67 JUMPI PUSH2 0x4F66 PUSH2 0x3EA2 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x4F75 DUP5 DUP3 DUP6 ADD PUSH2 0x4A95 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH2 0xD239 0xE0 LOG0 PUSH29 0xCEFFACE3BC906C97115321134C0696501951366DDA0B6F82D91A64736F PUSH13 0x63430008120033000000000000 ","sourceMap":"704:8378:27:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_decreaseFlow_14321":{"entryPoint":5496,"id":14321,"parameterSlots":5,"returnSlots":0},"@_depositSuperToken_13434":{"entryPoint":4633,"id":13434,"parameterSlots":2,"returnSlots":0},"@_getAmountFlowed_13806":{"entryPoint":6098,"id":13806,"parameterSlots":2,"returnSlots":1},"@_getAndCacheHostAndCFA_4895":{"entryPoint":14915,"id":4895,"parameterSlots":1,"returnSlots":2},"@_getAppGelatoBalance_12249":{"entryPoint":13561,"id":12249,"parameterSlots":0,"returnSlots":1},"@_getCurrentNonce_14037":{"entryPoint":12025,"id":14037,"parameterSlots":2,"returnSlots":1},"@_getCurrentNonce_14729":{"entryPoint":10008,"id":14729,"parameterSlots":2,"returnSlots":1},"@_getCurrentSessionData_14754":{"entryPoint":13261,"id":14754,"parameterSlots":1,"returnSlots":2},"@_getDepositTotal_14153":{"entryPoint":8337,"id":14153,"parameterSlots":1,"returnSlots":1},"@_getDepositUser_14139":{"entryPoint":8193,"id":14139,"parameterSlots":2,"returnSlots":1},"@_getFlowData_14121":{"entryPoint":6709,"id":14121,"parameterSlots":3,"returnSlots":6},"@_getHostAndCFA_5062":{"entryPoint":14338,"id":5062,"parameterSlots":1,"returnSlots":2},"@_getNewBufferedAppBalance_13245":{"entryPoint":15562,"id":13245,"parameterSlots":2,"returnSlots":1},"@_getNewNonce_14008":{"entryPoint":6565,"id":14008,"parameterSlots":2,"returnSlots":1},"@_getScheduledLifespan_13710":{"entryPoint":10298,"id":13710,"parameterSlots":4,"returnSlots":1},"@_getSessionDataFromFlow_14871":{"entryPoint":12878,"id":14871,"parameterSlots":3,"returnSlots":4},"@_getSessionData_14814":{"entryPoint":12202,"id":14814,"parameterSlots":3,"returnSlots":4},"@_getValidSafeLifespan_13660":{"entryPoint":5017,"id":13660,"parameterSlots":3,"returnSlots":1},"@_hasActiveFlow_13860":{"entryPoint":6309,"id":13860,"parameterSlots":2,"returnSlots":1},"@_increaseFlow_14221":{"entryPoint":10476,"id":14221,"parameterSlots":5,"returnSlots":0},"@_isNewFlowRateAllowed_13274":{"entryPoint":13755,"id":13274,"parameterSlots":2,"returnSlots":1},"@_isSuperTokensSupported_13095":{"entryPoint":10900,"id":13095,"parameterSlots":1,"returnSlots":1},"@_isViewSessionAllowed_13990":{"entryPoint":7711,"id":13990,"parameterSlots":2,"returnSlots":1},"@_requireNoActiveFlow_13513":{"entryPoint":8419,"id":13513,"parameterSlots":1,"returnSlots":0},"@_requireOnlyAutobot_12129":{"entryPoint":5350,"id":12129,"parameterSlots":0,"returnSlots":0},"@_requireSufficientAppGelatoBalance_12143":{"entryPoint":9886,"id":12143,"parameterSlots":0,"returnSlots":0},"@_requireSufficientAppSTBalance_12771":{"entryPoint":10230,"id":12771,"parameterSlots":2,"returnSlots":0},"@_requireSuperTokenSupported_12753":{"entryPoint":4567,"id":12753,"parameterSlots":1,"returnSlots":0},"@_setRemainingBalance_13596":{"entryPoint":9078,"id":13596,"parameterSlots":2,"returnSlots":0},"@_storageAutomate_11951":{"entryPoint":10855,"id":11951,"parameterSlots":0,"returnSlots":1},"@_storageControl_12430":{"entryPoint":10431,"id":12430,"parameterSlots":0,"returnSlots":1},"@_storageFlow_13394":{"entryPoint":10185,"id":13394,"parameterSlots":0,"returnSlots":1},"@_storageSession_14396":{"entryPoint":9963,"id":14396,"parameterSlots":0,"returnSlots":1},"@_timeModuleArg_12287":{"entryPoint":10811,"id":12287,"parameterSlots":2,"returnSlots":1},"@_withdrawSuperToken_13498":{"entryPoint":8487,"id":13498,"parameterSlots":2,"returnSlots":0},"@closeFlow_10425":{"entryPoint":3507,"id":10425,"parameterSlots":2,"returnSlots":0},"@createFlow_2054":{"entryPoint":13903,"id":2054,"parameterSlots":3,"returnSlots":1},"@decreaseFlow_10317":{"entryPoint":786,"id":10317,"parameterSlots":5,"returnSlots":0},"@deleteFlow_2248":{"entryPoint":11155,"id":2248,"parameterSlots":3,"returnSlots":1},"@depositSuperToken_10446":{"entryPoint":741,"id":10446,"parameterSlots":2,"returnSlots":0},"@getAmountFlowed_10483":{"entryPoint":814,"id":10483,"parameterSlots":2,"returnSlots":1},"@getBufferAmountByFlowRate_3395":{"entryPoint":15728,"id":3395,"parameterSlots":2,"returnSlots":1},"@getDepositTotal_10609":{"entryPoint":958,"id":10609,"parameterSlots":1,"returnSlots":1},"@getDepositUser_10596":{"entryPoint":938,"id":10596,"parameterSlots":2,"returnSlots":1},"@getFlowData_10580":{"entryPoint":874,"id":10580,"parameterSlots":3,"returnSlots":6},"@getFlowRate_3274":{"entryPoint":10995,"id":3274,"parameterSlots":3,"returnSlots":1},"@getNetFlowRate_3339":{"entryPoint":15876,"id":3339,"parameterSlots":2,"returnSlots":1},"@getNewFlowNonce_10551":{"entryPoint":854,"id":10551,"parameterSlots":2,"returnSlots":1},"@getValidSafeLifespan_10502":{"entryPoint":764,"id":10502,"parameterSlots":3,"returnSlots":1},"@hasActiveFlow_10535":{"entryPoint":834,"id":10535,"parameterSlots":2,"returnSlots":1},"@isViewSessionAllowed_10519":{"entryPoint":918,"id":10519,"parameterSlots":2,"returnSlots":1},"@openFlow_10288":{"entryPoint":999,"id":10288,"parameterSlots":3,"returnSlots":0},"@updateFlow_2151":{"entryPoint":11590,"id":2151,"parameterSlots":3,"returnSlots":1},"@withdrawSuperToken_10467":{"entryPoint":976,"id":10467,"parameterSlots":2,"returnSlots":0},"abi_decode_available_length_t_bytes_memory_ptr_fromMemory":{"entryPoint":19530,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_t_address":{"entryPoint":16117,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_address_fromMemory":{"entryPoint":19904,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bool_fromMemory":{"entryPoint":18286,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes32_fromMemory":{"entryPoint":18115,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes_memory_ptr_fromMemory":{"entryPoint":19596,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_contract$_ISuperAgreement_$6463_fromMemory":{"entryPoint":20110,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_int96":{"entryPoint":16292,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_int96_fromMemory":{"entryPoint":19093,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint256":{"entryPoint":16171,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint256_fromMemory":{"entryPoint":19072,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":16899,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":19925,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":16561,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_addresst_uint256t_int96":{"entryPoint":16438,"id":null,"parameterSlots":2,"returnSlots":5},"abi_decode_tuple_t_addresst_addresst_int96":{"entryPoint":16313,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":16679,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":16192,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bool_fromMemory":{"entryPoint":18307,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32_fromMemory":{"entryPoint":18136,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes_memory_ptr_fromMemory":{"entryPoint":19642,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_ISuperAgreement_$6463_fromMemory":{"entryPoint":20131,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_int96_fromMemory":{"entryPoint":20305,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256_fromMemory":{"entryPoint":19832,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256t_int96t_uint256t_uint256_fromMemory":{"entryPoint":19114,"id":null,"parameterSlots":2,"returnSlots":4},"abi_encodeUpdatedPos_t_bytes_memory_ptr_to_t_bytes_memory_ptr":{"entryPoint":17791,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_t_enum$_Module_$16268_to_t_uint8":{"entryPoint":17542,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_address_to_t_address_fromStack":{"entryPoint":16762,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr":{"entryPoint":17824,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_array$_t_enum$_Module_$16268_$dyn_memory_ptr_to_t_array$_t_uint8_$dyn_memory_ptr":{"entryPoint":17579,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_bool_to_t_bool_fromStack":{"entryPoint":16637,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bytes32_to_t_bytes32_fromStack":{"entryPoint":16787,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr":{"entryPoint":17734,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack":{"entryPoint":17369,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_contract$_IConstantFlowAgreementV1_$5555_to_t_address_fromStack":{"entryPoint":19311,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_contract$_ISuperToken_$7015_to_t_address_fromStack":{"entryPoint":19002,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_enum$_Module_$16268_to_t_uint8":{"entryPoint":17527,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_int96_to_t_int96_fromStack":{"entryPoint":17184,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1_to_t_bytes32_fromStack":{"entryPoint":20027,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_struct$_ModuleData_$16276_memory_ptr_to_t_struct$_ModuleData_$16276_memory_ptr_fromStack":{"entryPoint":17941,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_uint128_to_t_uint128_fromStack":{"entryPoint":18866,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_uint256_to_t_uint256_fromStack":{"entryPoint":16396,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":19877,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed":{"entryPoint":19791,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_address_t_uint256_t_int96__to_t_address_t_address_t_address_t_uint256_t_int96__fromStack_reversed":{"entryPoint":17199,"id":null,"parameterSlots":6,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed":{"entryPoint":18208,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_address_t_bytes_memory_ptr_t_struct$_ModuleData_$16276_memory_ptr_t_address__to_t_address_t_bytes_memory_ptr_t_struct$_ModuleData_$16276_memory_ptr_t_address__fromStack_reversed":{"entryPoint":18009,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_address_t_uint256_t_uint256_t_uint256_t_bytes32_t_bool__to_t_address_t_uint256_t_uint256_t_uint256_t_bytes32_t_bool__fromStack_reversed":{"entryPoint":16802,"id":null,"parameterSlots":7,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":16652,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed":{"entryPoint":18181,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_contract$_IConstantFlowAgreementV1_$5555_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":19326,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_contract$_ISuperToken_$7015_t_address__to_t_address_t_address__fromStack_reversed":{"entryPoint":20264,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_contract$_ISuperToken_$7015_t_address_t_address__to_t_address_t_address_t_address__fromStack_reversed":{"entryPoint":19017,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_contract$_ISuperToken_$7015_t_address_t_address_t_bytes_memory_ptr__to_t_address_t_address_t_address_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":19217,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_contract$_ISuperToken_$7015_t_address_t_int96_t_bytes_memory_ptr__to_t_address_t_address_t_int96_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":19715,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_contract$_ISuperToken_$7015_t_int96__to_t_address_t_int96__fromStack_reversed":{"entryPoint":20223,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1__to_t_bytes32__fromStack_reversed":{"entryPoint":20042,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint128_t_uint128__to_t_uint128_t_uint128__fromStack_reversed":{"entryPoint":18881,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":16411,"id":null,"parameterSlots":2,"returnSlots":1},"allocate_memory":{"entryPoint":19454,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":16024,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_t_bytes_memory_ptr":{"entryPoint":19481,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr":{"entryPoint":17701,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_t_array$_t_enum$_Module_$16268_$dyn_memory_ptr":{"entryPoint":17454,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr":{"entryPoint":17673,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_array$_t_enum$_Module_$16268_$dyn_memory_ptr":{"entryPoint":17426,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_bytes_memory_ptr":{"entryPoint":17282,"id":null,"parameterSlots":1,"returnSlots":1},"array_nextElement_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr":{"entryPoint":17811,"id":null,"parameterSlots":1,"returnSlots":1},"array_nextElement_t_array$_t_enum$_Module_$16268_$dyn_memory_ptr":{"entryPoint":17566,"id":null,"parameterSlots":1,"returnSlots":1},"array_storeLengthForEncoding_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr":{"entryPoint":17684,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_array$_t_uint8_$dyn_memory_ptr":{"entryPoint":17437,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_bytes_memory_ptr":{"entryPoint":17717,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack":{"entryPoint":17293,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_int96":{"entryPoint":18738,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":17132,"id":null,"parameterSlots":2,"returnSlots":1},"checked_div_t_uint256":{"entryPoint":18399,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_t_uint256":{"entryPoint":18600,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_int96":{"entryPoint":18500,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":18448,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_t_address":{"entryPoint":16076,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_bool":{"entryPoint":16625,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_bytes32":{"entryPoint":16777,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_contract$_ISuperAgreement_$6463":{"entryPoint":20069,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_enum$_Module_$16268":{"entryPoint":17490,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_int96":{"entryPoint":16256,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1":{"entryPoint":19970,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint128":{"entryPoint":18838,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint160":{"entryPoint":16044,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint256":{"entryPoint":16138,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_contract$_IConstantFlowAgreementV1_$5555_to_t_address":{"entryPoint":19293,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_contract$_ISuperToken_$7015_to_t_address":{"entryPoint":18984,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_enum$_Module_$16268_to_t_uint8":{"entryPoint":17509,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1_to_t_bytes32":{"entryPoint":19993,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_uint160_to_t_address":{"entryPoint":18966,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_uint160_to_t_uint160":{"entryPoint":18932,"id":null,"parameterSlots":1,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":17310,"id":null,"parameterSlots":3,"returnSlots":0},"finalize_allocation":{"entryPoint":19405,"id":null,"parameterSlots":2,"returnSlots":0},"identity":{"entryPoint":18922,"id":null,"parameterSlots":1,"returnSlots":1},"increment_t_uint256":{"entryPoint":18666,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x01":{"entryPoint":20176,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x11":{"entryPoint":17085,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x12":{"entryPoint":18352,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":17038,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":16991,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":16944,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":19395,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae":{"entryPoint":19400,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":16039,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":16034,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of_32":{"entryPoint":17352,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_0":{"entryPoint":19980,"id":null,"parameterSlots":1,"returnSlots":1},"validator_assert_t_enum$_Module_$16268":{"entryPoint":17470,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_address":{"entryPoint":16094,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_bool":{"entryPoint":18263,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_bytes32":{"entryPoint":18092,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_contract$_ISuperAgreement_$6463":{"entryPoint":20087,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_int96":{"entryPoint":16269,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_uint256":{"entryPoint":16148,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:32067:61","statements":[{"body":{"nodeType":"YulBlock","src":"47:35:61","statements":[{"nodeType":"YulAssignment","src":"57:19:61","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"73:2:61","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"67:5:61"},"nodeType":"YulFunctionCall","src":"67:9:61"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"57:6:61"}]}]},"name":"allocate_unbounded","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"40:6:61","type":""}],"src":"7:75:61"},{"body":{"nodeType":"YulBlock","src":"177:28:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"194:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"197:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"187:6:61"},"nodeType":"YulFunctionCall","src":"187:12:61"},"nodeType":"YulExpressionStatement","src":"187:12:61"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulFunctionDefinition","src":"88:117:61"},{"body":{"nodeType":"YulBlock","src":"300:28:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"317:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"320:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"310:6:61"},"nodeType":"YulFunctionCall","src":"310:12:61"},"nodeType":"YulExpressionStatement","src":"310:12:61"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulFunctionDefinition","src":"211:117:61"},{"body":{"nodeType":"YulBlock","src":"379:81:61","statements":[{"nodeType":"YulAssignment","src":"389:65:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"404:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"411:42:61","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"400:3:61"},"nodeType":"YulFunctionCall","src":"400:54:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"389:7:61"}]}]},"name":"cleanup_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"361:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"371:7:61","type":""}],"src":"334:126:61"},{"body":{"nodeType":"YulBlock","src":"511:51:61","statements":[{"nodeType":"YulAssignment","src":"521:35:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"550:5:61"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"532:17:61"},"nodeType":"YulFunctionCall","src":"532:24:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"521:7:61"}]}]},"name":"cleanup_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"493:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"503:7:61","type":""}],"src":"466:96:61"},{"body":{"nodeType":"YulBlock","src":"611:79:61","statements":[{"body":{"nodeType":"YulBlock","src":"668:16:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"677:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"680:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"670:6:61"},"nodeType":"YulFunctionCall","src":"670:12:61"},"nodeType":"YulExpressionStatement","src":"670:12:61"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"634:5:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"659:5:61"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"641:17:61"},"nodeType":"YulFunctionCall","src":"641:24:61"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"631:2:61"},"nodeType":"YulFunctionCall","src":"631:35:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"624:6:61"},"nodeType":"YulFunctionCall","src":"624:43:61"},"nodeType":"YulIf","src":"621:63:61"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"604:5:61","type":""}],"src":"568:122:61"},{"body":{"nodeType":"YulBlock","src":"748:87:61","statements":[{"nodeType":"YulAssignment","src":"758:29:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"780:6:61"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"767:12:61"},"nodeType":"YulFunctionCall","src":"767:20:61"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"758:5:61"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"823:5:61"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"796:26:61"},"nodeType":"YulFunctionCall","src":"796:33:61"},"nodeType":"YulExpressionStatement","src":"796:33:61"}]},"name":"abi_decode_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"726:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"734:3:61","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"742:5:61","type":""}],"src":"696:139:61"},{"body":{"nodeType":"YulBlock","src":"886:32:61","statements":[{"nodeType":"YulAssignment","src":"896:16:61","value":{"name":"value","nodeType":"YulIdentifier","src":"907:5:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"896:7:61"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"868:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"878:7:61","type":""}],"src":"841:77:61"},{"body":{"nodeType":"YulBlock","src":"967:79:61","statements":[{"body":{"nodeType":"YulBlock","src":"1024:16:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1033:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1036:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1026:6:61"},"nodeType":"YulFunctionCall","src":"1026:12:61"},"nodeType":"YulExpressionStatement","src":"1026:12:61"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"990:5:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1015:5:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"997:17:61"},"nodeType":"YulFunctionCall","src":"997:24:61"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"987:2:61"},"nodeType":"YulFunctionCall","src":"987:35:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"980:6:61"},"nodeType":"YulFunctionCall","src":"980:43:61"},"nodeType":"YulIf","src":"977:63:61"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"960:5:61","type":""}],"src":"924:122:61"},{"body":{"nodeType":"YulBlock","src":"1104:87:61","statements":[{"nodeType":"YulAssignment","src":"1114:29:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1136:6:61"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1123:12:61"},"nodeType":"YulFunctionCall","src":"1123:20:61"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1114:5:61"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1179:5:61"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"1152:26:61"},"nodeType":"YulFunctionCall","src":"1152:33:61"},"nodeType":"YulExpressionStatement","src":"1152:33:61"}]},"name":"abi_decode_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1082:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"1090:3:61","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1098:5:61","type":""}],"src":"1052:139:61"},{"body":{"nodeType":"YulBlock","src":"1280:391:61","statements":[{"body":{"nodeType":"YulBlock","src":"1326:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"1328:77:61"},"nodeType":"YulFunctionCall","src":"1328:79:61"},"nodeType":"YulExpressionStatement","src":"1328:79:61"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1301:7:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"1310:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1297:3:61"},"nodeType":"YulFunctionCall","src":"1297:23:61"},{"kind":"number","nodeType":"YulLiteral","src":"1322:2:61","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1293:3:61"},"nodeType":"YulFunctionCall","src":"1293:32:61"},"nodeType":"YulIf","src":"1290:119:61"},{"nodeType":"YulBlock","src":"1419:117:61","statements":[{"nodeType":"YulVariableDeclaration","src":"1434:15:61","value":{"kind":"number","nodeType":"YulLiteral","src":"1448:1:61","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1438:6:61","type":""}]},{"nodeType":"YulAssignment","src":"1463:63:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1498:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"1509:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1494:3:61"},"nodeType":"YulFunctionCall","src":"1494:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1518:7:61"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"1473:20:61"},"nodeType":"YulFunctionCall","src":"1473:53:61"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1463:6:61"}]}]},{"nodeType":"YulBlock","src":"1546:118:61","statements":[{"nodeType":"YulVariableDeclaration","src":"1561:16:61","value":{"kind":"number","nodeType":"YulLiteral","src":"1575:2:61","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1565:6:61","type":""}]},{"nodeType":"YulAssignment","src":"1591:63:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1626:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"1637:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1622:3:61"},"nodeType":"YulFunctionCall","src":"1622:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1646:7:61"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"1601:20:61"},"nodeType":"YulFunctionCall","src":"1601:53:61"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1591:6:61"}]}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1242:9:61","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1253:7:61","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1265:6:61","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1273:6:61","type":""}],"src":"1197:474:61"},{"body":{"nodeType":"YulBlock","src":"1720:48:61","statements":[{"nodeType":"YulAssignment","src":"1730:32:61","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1752:2:61","type":"","value":"11"},{"name":"value","nodeType":"YulIdentifier","src":"1756:5:61"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"1741:10:61"},"nodeType":"YulFunctionCall","src":"1741:21:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"1730:7:61"}]}]},"name":"cleanup_t_int96","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1702:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"1712:7:61","type":""}],"src":"1677:91:61"},{"body":{"nodeType":"YulBlock","src":"1815:77:61","statements":[{"body":{"nodeType":"YulBlock","src":"1870:16:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1879:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1882:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1872:6:61"},"nodeType":"YulFunctionCall","src":"1872:12:61"},"nodeType":"YulExpressionStatement","src":"1872:12:61"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1838:5:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1861:5:61"}],"functionName":{"name":"cleanup_t_int96","nodeType":"YulIdentifier","src":"1845:15:61"},"nodeType":"YulFunctionCall","src":"1845:22:61"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1835:2:61"},"nodeType":"YulFunctionCall","src":"1835:33:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1828:6:61"},"nodeType":"YulFunctionCall","src":"1828:41:61"},"nodeType":"YulIf","src":"1825:61:61"}]},"name":"validator_revert_t_int96","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1808:5:61","type":""}],"src":"1774:118:61"},{"body":{"nodeType":"YulBlock","src":"1948:85:61","statements":[{"nodeType":"YulAssignment","src":"1958:29:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1980:6:61"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1967:12:61"},"nodeType":"YulFunctionCall","src":"1967:20:61"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1958:5:61"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2021:5:61"}],"functionName":{"name":"validator_revert_t_int96","nodeType":"YulIdentifier","src":"1996:24:61"},"nodeType":"YulFunctionCall","src":"1996:31:61"},"nodeType":"YulExpressionStatement","src":"1996:31:61"}]},"name":"abi_decode_t_int96","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1926:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"1934:3:61","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1942:5:61","type":""}],"src":"1898:135:61"},{"body":{"nodeType":"YulBlock","src":"2137:517:61","statements":[{"body":{"nodeType":"YulBlock","src":"2183:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"2185:77:61"},"nodeType":"YulFunctionCall","src":"2185:79:61"},"nodeType":"YulExpressionStatement","src":"2185:79:61"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2158:7:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"2167:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2154:3:61"},"nodeType":"YulFunctionCall","src":"2154:23:61"},{"kind":"number","nodeType":"YulLiteral","src":"2179:2:61","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2150:3:61"},"nodeType":"YulFunctionCall","src":"2150:32:61"},"nodeType":"YulIf","src":"2147:119:61"},{"nodeType":"YulBlock","src":"2276:117:61","statements":[{"nodeType":"YulVariableDeclaration","src":"2291:15:61","value":{"kind":"number","nodeType":"YulLiteral","src":"2305:1:61","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2295:6:61","type":""}]},{"nodeType":"YulAssignment","src":"2320:63:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2355:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"2366:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2351:3:61"},"nodeType":"YulFunctionCall","src":"2351:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2375:7:61"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"2330:20:61"},"nodeType":"YulFunctionCall","src":"2330:53:61"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2320:6:61"}]}]},{"nodeType":"YulBlock","src":"2403:118:61","statements":[{"nodeType":"YulVariableDeclaration","src":"2418:16:61","value":{"kind":"number","nodeType":"YulLiteral","src":"2432:2:61","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2422:6:61","type":""}]},{"nodeType":"YulAssignment","src":"2448:63:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2483:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"2494:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2479:3:61"},"nodeType":"YulFunctionCall","src":"2479:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2503:7:61"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"2458:20:61"},"nodeType":"YulFunctionCall","src":"2458:53:61"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2448:6:61"}]}]},{"nodeType":"YulBlock","src":"2531:116:61","statements":[{"nodeType":"YulVariableDeclaration","src":"2546:16:61","value":{"kind":"number","nodeType":"YulLiteral","src":"2560:2:61","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2550:6:61","type":""}]},{"nodeType":"YulAssignment","src":"2576:61:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2609:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"2620:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2605:3:61"},"nodeType":"YulFunctionCall","src":"2605:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2629:7:61"}],"functionName":{"name":"abi_decode_t_int96","nodeType":"YulIdentifier","src":"2586:18:61"},"nodeType":"YulFunctionCall","src":"2586:51:61"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"2576:6:61"}]}]}]},"name":"abi_decode_tuple_t_addresst_addresst_int96","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2091:9:61","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2102:7:61","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2114:6:61","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2122:6:61","type":""},{"name":"value2","nodeType":"YulTypedName","src":"2130:6:61","type":""}],"src":"2039:615:61"},{"body":{"nodeType":"YulBlock","src":"2725:53:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2742:3:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2765:5:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"2747:17:61"},"nodeType":"YulFunctionCall","src":"2747:24:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2735:6:61"},"nodeType":"YulFunctionCall","src":"2735:37:61"},"nodeType":"YulExpressionStatement","src":"2735:37:61"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2713:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2720:3:61","type":""}],"src":"2660:118:61"},{"body":{"nodeType":"YulBlock","src":"2882:124:61","statements":[{"nodeType":"YulAssignment","src":"2892:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2904:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"2915:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2900:3:61"},"nodeType":"YulFunctionCall","src":"2900:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2892:4:61"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2972:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2985:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"2996:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2981:3:61"},"nodeType":"YulFunctionCall","src":"2981:17:61"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"2928:43:61"},"nodeType":"YulFunctionCall","src":"2928:71:61"},"nodeType":"YulExpressionStatement","src":"2928:71:61"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2854:9:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2866:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2877:4:61","type":""}],"src":"2784:222:61"},{"body":{"nodeType":"YulBlock","src":"3144:775:61","statements":[{"body":{"nodeType":"YulBlock","src":"3191:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"3193:77:61"},"nodeType":"YulFunctionCall","src":"3193:79:61"},"nodeType":"YulExpressionStatement","src":"3193:79:61"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3165:7:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"3174:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3161:3:61"},"nodeType":"YulFunctionCall","src":"3161:23:61"},{"kind":"number","nodeType":"YulLiteral","src":"3186:3:61","type":"","value":"160"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3157:3:61"},"nodeType":"YulFunctionCall","src":"3157:33:61"},"nodeType":"YulIf","src":"3154:120:61"},{"nodeType":"YulBlock","src":"3284:117:61","statements":[{"nodeType":"YulVariableDeclaration","src":"3299:15:61","value":{"kind":"number","nodeType":"YulLiteral","src":"3313:1:61","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3303:6:61","type":""}]},{"nodeType":"YulAssignment","src":"3328:63:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3363:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"3374:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3359:3:61"},"nodeType":"YulFunctionCall","src":"3359:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3383:7:61"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"3338:20:61"},"nodeType":"YulFunctionCall","src":"3338:53:61"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3328:6:61"}]}]},{"nodeType":"YulBlock","src":"3411:118:61","statements":[{"nodeType":"YulVariableDeclaration","src":"3426:16:61","value":{"kind":"number","nodeType":"YulLiteral","src":"3440:2:61","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3430:6:61","type":""}]},{"nodeType":"YulAssignment","src":"3456:63:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3491:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"3502:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3487:3:61"},"nodeType":"YulFunctionCall","src":"3487:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3511:7:61"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"3466:20:61"},"nodeType":"YulFunctionCall","src":"3466:53:61"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3456:6:61"}]}]},{"nodeType":"YulBlock","src":"3539:118:61","statements":[{"nodeType":"YulVariableDeclaration","src":"3554:16:61","value":{"kind":"number","nodeType":"YulLiteral","src":"3568:2:61","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3558:6:61","type":""}]},{"nodeType":"YulAssignment","src":"3584:63:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3619:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"3630:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3615:3:61"},"nodeType":"YulFunctionCall","src":"3615:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3639:7:61"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"3594:20:61"},"nodeType":"YulFunctionCall","src":"3594:53:61"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"3584:6:61"}]}]},{"nodeType":"YulBlock","src":"3667:118:61","statements":[{"nodeType":"YulVariableDeclaration","src":"3682:16:61","value":{"kind":"number","nodeType":"YulLiteral","src":"3696:2:61","type":"","value":"96"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3686:6:61","type":""}]},{"nodeType":"YulAssignment","src":"3712:63:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3747:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"3758:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3743:3:61"},"nodeType":"YulFunctionCall","src":"3743:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3767:7:61"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"3722:20:61"},"nodeType":"YulFunctionCall","src":"3722:53:61"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"3712:6:61"}]}]},{"nodeType":"YulBlock","src":"3795:117:61","statements":[{"nodeType":"YulVariableDeclaration","src":"3810:17:61","value":{"kind":"number","nodeType":"YulLiteral","src":"3824:3:61","type":"","value":"128"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3814:6:61","type":""}]},{"nodeType":"YulAssignment","src":"3841:61:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3874:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"3885:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3870:3:61"},"nodeType":"YulFunctionCall","src":"3870:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3894:7:61"}],"functionName":{"name":"abi_decode_t_int96","nodeType":"YulIdentifier","src":"3851:18:61"},"nodeType":"YulFunctionCall","src":"3851:51:61"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"3841:6:61"}]}]}]},"name":"abi_decode_tuple_t_addresst_addresst_addresst_uint256t_int96","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3082:9:61","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3093:7:61","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3105:6:61","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3113:6:61","type":""},{"name":"value2","nodeType":"YulTypedName","src":"3121:6:61","type":""},{"name":"value3","nodeType":"YulTypedName","src":"3129:6:61","type":""},{"name":"value4","nodeType":"YulTypedName","src":"3137:6:61","type":""}],"src":"3012:907:61"},{"body":{"nodeType":"YulBlock","src":"4008:391:61","statements":[{"body":{"nodeType":"YulBlock","src":"4054:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"4056:77:61"},"nodeType":"YulFunctionCall","src":"4056:79:61"},"nodeType":"YulExpressionStatement","src":"4056:79:61"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4029:7:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"4038:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4025:3:61"},"nodeType":"YulFunctionCall","src":"4025:23:61"},{"kind":"number","nodeType":"YulLiteral","src":"4050:2:61","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4021:3:61"},"nodeType":"YulFunctionCall","src":"4021:32:61"},"nodeType":"YulIf","src":"4018:119:61"},{"nodeType":"YulBlock","src":"4147:117:61","statements":[{"nodeType":"YulVariableDeclaration","src":"4162:15:61","value":{"kind":"number","nodeType":"YulLiteral","src":"4176:1:61","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4166:6:61","type":""}]},{"nodeType":"YulAssignment","src":"4191:63:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4226:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"4237:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4222:3:61"},"nodeType":"YulFunctionCall","src":"4222:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4246:7:61"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"4201:20:61"},"nodeType":"YulFunctionCall","src":"4201:53:61"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4191:6:61"}]}]},{"nodeType":"YulBlock","src":"4274:118:61","statements":[{"nodeType":"YulVariableDeclaration","src":"4289:16:61","value":{"kind":"number","nodeType":"YulLiteral","src":"4303:2:61","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4293:6:61","type":""}]},{"nodeType":"YulAssignment","src":"4319:63:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4354:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"4365:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4350:3:61"},"nodeType":"YulFunctionCall","src":"4350:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4374:7:61"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"4329:20:61"},"nodeType":"YulFunctionCall","src":"4329:53:61"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4319:6:61"}]}]}]},"name":"abi_decode_tuple_t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3970:9:61","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3981:7:61","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3993:6:61","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4001:6:61","type":""}],"src":"3925:474:61"},{"body":{"nodeType":"YulBlock","src":"4447:48:61","statements":[{"nodeType":"YulAssignment","src":"4457:32:61","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4482:5:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4475:6:61"},"nodeType":"YulFunctionCall","src":"4475:13:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4468:6:61"},"nodeType":"YulFunctionCall","src":"4468:21:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"4457:7:61"}]}]},"name":"cleanup_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4429:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"4439:7:61","type":""}],"src":"4405:90:61"},{"body":{"nodeType":"YulBlock","src":"4560:50:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4577:3:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4597:5:61"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"4582:14:61"},"nodeType":"YulFunctionCall","src":"4582:21:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4570:6:61"},"nodeType":"YulFunctionCall","src":"4570:34:61"},"nodeType":"YulExpressionStatement","src":"4570:34:61"}]},"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4548:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4555:3:61","type":""}],"src":"4501:109:61"},{"body":{"nodeType":"YulBlock","src":"4708:118:61","statements":[{"nodeType":"YulAssignment","src":"4718:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4730:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"4741:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4726:3:61"},"nodeType":"YulFunctionCall","src":"4726:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4718:4:61"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4792:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4805:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"4816:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4801:3:61"},"nodeType":"YulFunctionCall","src":"4801:17:61"}],"functionName":{"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulIdentifier","src":"4754:37:61"},"nodeType":"YulFunctionCall","src":"4754:65:61"},"nodeType":"YulExpressionStatement","src":"4754:65:61"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4680:9:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4692:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4703:4:61","type":""}],"src":"4616:210:61"},{"body":{"nodeType":"YulBlock","src":"4932:519:61","statements":[{"body":{"nodeType":"YulBlock","src":"4978:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"4980:77:61"},"nodeType":"YulFunctionCall","src":"4980:79:61"},"nodeType":"YulExpressionStatement","src":"4980:79:61"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4953:7:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"4962:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4949:3:61"},"nodeType":"YulFunctionCall","src":"4949:23:61"},{"kind":"number","nodeType":"YulLiteral","src":"4974:2:61","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4945:3:61"},"nodeType":"YulFunctionCall","src":"4945:32:61"},"nodeType":"YulIf","src":"4942:119:61"},{"nodeType":"YulBlock","src":"5071:117:61","statements":[{"nodeType":"YulVariableDeclaration","src":"5086:15:61","value":{"kind":"number","nodeType":"YulLiteral","src":"5100:1:61","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5090:6:61","type":""}]},{"nodeType":"YulAssignment","src":"5115:63:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5150:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"5161:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5146:3:61"},"nodeType":"YulFunctionCall","src":"5146:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5170:7:61"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"5125:20:61"},"nodeType":"YulFunctionCall","src":"5125:53:61"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5115:6:61"}]}]},{"nodeType":"YulBlock","src":"5198:118:61","statements":[{"nodeType":"YulVariableDeclaration","src":"5213:16:61","value":{"kind":"number","nodeType":"YulLiteral","src":"5227:2:61","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5217:6:61","type":""}]},{"nodeType":"YulAssignment","src":"5243:63:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5278:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"5289:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5274:3:61"},"nodeType":"YulFunctionCall","src":"5274:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5298:7:61"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"5253:20:61"},"nodeType":"YulFunctionCall","src":"5253:53:61"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"5243:6:61"}]}]},{"nodeType":"YulBlock","src":"5326:118:61","statements":[{"nodeType":"YulVariableDeclaration","src":"5341:16:61","value":{"kind":"number","nodeType":"YulLiteral","src":"5355:2:61","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5345:6:61","type":""}]},{"nodeType":"YulAssignment","src":"5371:63:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5406:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"5417:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5402:3:61"},"nodeType":"YulFunctionCall","src":"5402:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5426:7:61"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"5381:20:61"},"nodeType":"YulFunctionCall","src":"5381:53:61"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"5371:6:61"}]}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4886:9:61","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4897:7:61","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4909:6:61","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4917:6:61","type":""},{"name":"value2","nodeType":"YulTypedName","src":"4925:6:61","type":""}],"src":"4832:619:61"},{"body":{"nodeType":"YulBlock","src":"5522:53:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5539:3:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5562:5:61"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"5544:17:61"},"nodeType":"YulFunctionCall","src":"5544:24:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5532:6:61"},"nodeType":"YulFunctionCall","src":"5532:37:61"},"nodeType":"YulExpressionStatement","src":"5532:37:61"}]},"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5510:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"5517:3:61","type":""}],"src":"5457:118:61"},{"body":{"nodeType":"YulBlock","src":"5626:32:61","statements":[{"nodeType":"YulAssignment","src":"5636:16:61","value":{"name":"value","nodeType":"YulIdentifier","src":"5647:5:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5636:7:61"}]}]},"name":"cleanup_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5608:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5618:7:61","type":""}],"src":"5581:77:61"},{"body":{"nodeType":"YulBlock","src":"5729:53:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5746:3:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5769:5:61"}],"functionName":{"name":"cleanup_t_bytes32","nodeType":"YulIdentifier","src":"5751:17:61"},"nodeType":"YulFunctionCall","src":"5751:24:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5739:6:61"},"nodeType":"YulFunctionCall","src":"5739:37:61"},"nodeType":"YulExpressionStatement","src":"5739:37:61"}]},"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5717:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"5724:3:61","type":""}],"src":"5664:118:61"},{"body":{"nodeType":"YulBlock","src":"6020:531:61","statements":[{"nodeType":"YulAssignment","src":"6030:27:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6042:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"6053:3:61","type":"","value":"192"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6038:3:61"},"nodeType":"YulFunctionCall","src":"6038:19:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6030:4:61"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6111:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6124:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"6135:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6120:3:61"},"nodeType":"YulFunctionCall","src":"6120:17:61"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"6067:43:61"},"nodeType":"YulFunctionCall","src":"6067:71:61"},"nodeType":"YulExpressionStatement","src":"6067:71:61"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"6192:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6205:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"6216:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6201:3:61"},"nodeType":"YulFunctionCall","src":"6201:18:61"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"6148:43:61"},"nodeType":"YulFunctionCall","src":"6148:72:61"},"nodeType":"YulExpressionStatement","src":"6148:72:61"},{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"6274:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6287:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"6298:2:61","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6283:3:61"},"nodeType":"YulFunctionCall","src":"6283:18:61"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"6230:43:61"},"nodeType":"YulFunctionCall","src":"6230:72:61"},"nodeType":"YulExpressionStatement","src":"6230:72:61"},{"expression":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"6356:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6369:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"6380:2:61","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6365:3:61"},"nodeType":"YulFunctionCall","src":"6365:18:61"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"6312:43:61"},"nodeType":"YulFunctionCall","src":"6312:72:61"},"nodeType":"YulExpressionStatement","src":"6312:72:61"},{"expression":{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"6438:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6451:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"6462:3:61","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6447:3:61"},"nodeType":"YulFunctionCall","src":"6447:19:61"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nodeType":"YulIdentifier","src":"6394:43:61"},"nodeType":"YulFunctionCall","src":"6394:73:61"},"nodeType":"YulExpressionStatement","src":"6394:73:61"},{"expression":{"arguments":[{"name":"value5","nodeType":"YulIdentifier","src":"6515:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6528:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"6539:3:61","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6524:3:61"},"nodeType":"YulFunctionCall","src":"6524:19:61"}],"functionName":{"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulIdentifier","src":"6477:37:61"},"nodeType":"YulFunctionCall","src":"6477:67:61"},"nodeType":"YulExpressionStatement","src":"6477:67:61"}]},"name":"abi_encode_tuple_t_address_t_uint256_t_uint256_t_uint256_t_bytes32_t_bool__to_t_address_t_uint256_t_uint256_t_uint256_t_bytes32_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5952:9:61","type":""},{"name":"value5","nodeType":"YulTypedName","src":"5964:6:61","type":""},{"name":"value4","nodeType":"YulTypedName","src":"5972:6:61","type":""},{"name":"value3","nodeType":"YulTypedName","src":"5980:6:61","type":""},{"name":"value2","nodeType":"YulTypedName","src":"5988:6:61","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5996:6:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6004:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6015:4:61","type":""}],"src":"5788:763:61"},{"body":{"nodeType":"YulBlock","src":"6623:263:61","statements":[{"body":{"nodeType":"YulBlock","src":"6669:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"6671:77:61"},"nodeType":"YulFunctionCall","src":"6671:79:61"},"nodeType":"YulExpressionStatement","src":"6671:79:61"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6644:7:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"6653:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6640:3:61"},"nodeType":"YulFunctionCall","src":"6640:23:61"},{"kind":"number","nodeType":"YulLiteral","src":"6665:2:61","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6636:3:61"},"nodeType":"YulFunctionCall","src":"6636:32:61"},"nodeType":"YulIf","src":"6633:119:61"},{"nodeType":"YulBlock","src":"6762:117:61","statements":[{"nodeType":"YulVariableDeclaration","src":"6777:15:61","value":{"kind":"number","nodeType":"YulLiteral","src":"6791:1:61","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6781:6:61","type":""}]},{"nodeType":"YulAssignment","src":"6806:63:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6841:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"6852:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6837:3:61"},"nodeType":"YulFunctionCall","src":"6837:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6861:7:61"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"6816:20:61"},"nodeType":"YulFunctionCall","src":"6816:53:61"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6806:6:61"}]}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6593:9:61","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6604:7:61","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6616:6:61","type":""}],"src":"6557:329:61"},{"body":{"nodeType":"YulBlock","src":"6920:152:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6937:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6940:77:61","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6930:6:61"},"nodeType":"YulFunctionCall","src":"6930:88:61"},"nodeType":"YulExpressionStatement","src":"6930:88:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7034:1:61","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"7037:4:61","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7027:6:61"},"nodeType":"YulFunctionCall","src":"7027:15:61"},"nodeType":"YulExpressionStatement","src":"7027:15:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7058:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7061:4:61","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7051:6:61"},"nodeType":"YulFunctionCall","src":"7051:15:61"},"nodeType":"YulExpressionStatement","src":"7051:15:61"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"6892:180:61"},{"body":{"nodeType":"YulBlock","src":"7106:152:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7123:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7126:77:61","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7116:6:61"},"nodeType":"YulFunctionCall","src":"7116:88:61"},"nodeType":"YulExpressionStatement","src":"7116:88:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7220:1:61","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"7223:4:61","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7213:6:61"},"nodeType":"YulFunctionCall","src":"7213:15:61"},"nodeType":"YulExpressionStatement","src":"7213:15:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7244:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7247:4:61","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7237:6:61"},"nodeType":"YulFunctionCall","src":"7237:15:61"},"nodeType":"YulExpressionStatement","src":"7237:15:61"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"7078:180:61"},{"body":{"nodeType":"YulBlock","src":"7292:152:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7309:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7312:77:61","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7302:6:61"},"nodeType":"YulFunctionCall","src":"7302:88:61"},"nodeType":"YulExpressionStatement","src":"7302:88:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7406:1:61","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"7409:4:61","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7399:6:61"},"nodeType":"YulFunctionCall","src":"7399:15:61"},"nodeType":"YulExpressionStatement","src":"7399:15:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7430:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7433:4:61","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7423:6:61"},"nodeType":"YulFunctionCall","src":"7423:15:61"},"nodeType":"YulExpressionStatement","src":"7423:15:61"}]},"name":"panic_error_0x21","nodeType":"YulFunctionDefinition","src":"7264:180:61"},{"body":{"nodeType":"YulBlock","src":"7478:152:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7495:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7498:77:61","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7488:6:61"},"nodeType":"YulFunctionCall","src":"7488:88:61"},"nodeType":"YulExpressionStatement","src":"7488:88:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7592:1:61","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"7595:4:61","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7585:6:61"},"nodeType":"YulFunctionCall","src":"7585:15:61"},"nodeType":"YulExpressionStatement","src":"7585:15:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7616:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7619:4:61","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7609:6:61"},"nodeType":"YulFunctionCall","src":"7609:15:61"},"nodeType":"YulExpressionStatement","src":"7609:15:61"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"7450:180:61"},{"body":{"nodeType":"YulBlock","src":"7680:147:61","statements":[{"nodeType":"YulAssignment","src":"7690:25:61","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"7713:1:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"7695:17:61"},"nodeType":"YulFunctionCall","src":"7695:20:61"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"7690:1:61"}]},{"nodeType":"YulAssignment","src":"7724:25:61","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"7747:1:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"7729:17:61"},"nodeType":"YulFunctionCall","src":"7729:20:61"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"7724:1:61"}]},{"nodeType":"YulAssignment","src":"7758:16:61","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"7769:1:61"},{"name":"y","nodeType":"YulIdentifier","src":"7772:1:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7765:3:61"},"nodeType":"YulFunctionCall","src":"7765:9:61"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"7758:3:61"}]},{"body":{"nodeType":"YulBlock","src":"7798:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"7800:16:61"},"nodeType":"YulFunctionCall","src":"7800:18:61"},"nodeType":"YulExpressionStatement","src":"7800:18:61"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"7790:1:61"},{"name":"sum","nodeType":"YulIdentifier","src":"7793:3:61"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7787:2:61"},"nodeType":"YulFunctionCall","src":"7787:10:61"},"nodeType":"YulIf","src":"7784:36:61"}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"7667:1:61","type":""},{"name":"y","nodeType":"YulTypedName","src":"7670:1:61","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"7676:3:61","type":""}],"src":"7636:191:61"},{"body":{"nodeType":"YulBlock","src":"7894:51:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"7911:3:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7932:5:61"}],"functionName":{"name":"cleanup_t_int96","nodeType":"YulIdentifier","src":"7916:15:61"},"nodeType":"YulFunctionCall","src":"7916:22:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7904:6:61"},"nodeType":"YulFunctionCall","src":"7904:35:61"},"nodeType":"YulExpressionStatement","src":"7904:35:61"}]},"name":"abi_encode_t_int96_to_t_int96_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7882:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"7889:3:61","type":""}],"src":"7833:112:61"},{"body":{"nodeType":"YulBlock","src":"8157:450:61","statements":[{"nodeType":"YulAssignment","src":"8167:27:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8179:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"8190:3:61","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8175:3:61"},"nodeType":"YulFunctionCall","src":"8175:19:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8167:4:61"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8248:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8261:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"8272:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8257:3:61"},"nodeType":"YulFunctionCall","src":"8257:17:61"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"8204:43:61"},"nodeType":"YulFunctionCall","src":"8204:71:61"},"nodeType":"YulExpressionStatement","src":"8204:71:61"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"8329:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8342:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"8353:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8338:3:61"},"nodeType":"YulFunctionCall","src":"8338:18:61"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"8285:43:61"},"nodeType":"YulFunctionCall","src":"8285:72:61"},"nodeType":"YulExpressionStatement","src":"8285:72:61"},{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"8411:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8424:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"8435:2:61","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8420:3:61"},"nodeType":"YulFunctionCall","src":"8420:18:61"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"8367:43:61"},"nodeType":"YulFunctionCall","src":"8367:72:61"},"nodeType":"YulExpressionStatement","src":"8367:72:61"},{"expression":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"8493:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8506:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"8517:2:61","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8502:3:61"},"nodeType":"YulFunctionCall","src":"8502:18:61"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"8449:43:61"},"nodeType":"YulFunctionCall","src":"8449:72:61"},"nodeType":"YulExpressionStatement","src":"8449:72:61"},{"expression":{"arguments":[{"name":"value4","nodeType":"YulIdentifier","src":"8571:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8584:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"8595:3:61","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8580:3:61"},"nodeType":"YulFunctionCall","src":"8580:19:61"}],"functionName":{"name":"abi_encode_t_int96_to_t_int96_fromStack","nodeType":"YulIdentifier","src":"8531:39:61"},"nodeType":"YulFunctionCall","src":"8531:69:61"},"nodeType":"YulExpressionStatement","src":"8531:69:61"}]},"name":"abi_encode_tuple_t_address_t_address_t_address_t_uint256_t_int96__to_t_address_t_address_t_address_t_uint256_t_int96__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8097:9:61","type":""},{"name":"value4","nodeType":"YulTypedName","src":"8109:6:61","type":""},{"name":"value3","nodeType":"YulTypedName","src":"8117:6:61","type":""},{"name":"value2","nodeType":"YulTypedName","src":"8125:6:61","type":""},{"name":"value1","nodeType":"YulTypedName","src":"8133:6:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8141:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8152:4:61","type":""}],"src":"7951:656:61"},{"body":{"nodeType":"YulBlock","src":"8671:40:61","statements":[{"nodeType":"YulAssignment","src":"8682:22:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8698:5:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8692:5:61"},"nodeType":"YulFunctionCall","src":"8692:12:61"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"8682:6:61"}]}]},"name":"array_length_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8654:5:61","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"8664:6:61","type":""}],"src":"8613:98:61"},{"body":{"nodeType":"YulBlock","src":"8812:73:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8829:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"8834:6:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8822:6:61"},"nodeType":"YulFunctionCall","src":"8822:19:61"},"nodeType":"YulExpressionStatement","src":"8822:19:61"},{"nodeType":"YulAssignment","src":"8850:29:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8869:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"8874:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8865:3:61"},"nodeType":"YulFunctionCall","src":"8865:14:61"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"8850:11:61"}]}]},"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"8784:3:61","type":""},{"name":"length","nodeType":"YulTypedName","src":"8789:6:61","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"8800:11:61","type":""}],"src":"8717:168:61"},{"body":{"nodeType":"YulBlock","src":"8953:184:61","statements":[{"nodeType":"YulVariableDeclaration","src":"8963:10:61","value":{"kind":"number","nodeType":"YulLiteral","src":"8972:1:61","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"8967:1:61","type":""}]},{"body":{"nodeType":"YulBlock","src":"9032:63:61","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"9057:3:61"},{"name":"i","nodeType":"YulIdentifier","src":"9062:1:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9053:3:61"},"nodeType":"YulFunctionCall","src":"9053:11:61"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"9076:3:61"},{"name":"i","nodeType":"YulIdentifier","src":"9081:1:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9072:3:61"},"nodeType":"YulFunctionCall","src":"9072:11:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9066:5:61"},"nodeType":"YulFunctionCall","src":"9066:18:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9046:6:61"},"nodeType":"YulFunctionCall","src":"9046:39:61"},"nodeType":"YulExpressionStatement","src":"9046:39:61"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"8993:1:61"},{"name":"length","nodeType":"YulIdentifier","src":"8996:6:61"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"8990:2:61"},"nodeType":"YulFunctionCall","src":"8990:13:61"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"9004:19:61","statements":[{"nodeType":"YulAssignment","src":"9006:15:61","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"9015:1:61"},{"kind":"number","nodeType":"YulLiteral","src":"9018:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9011:3:61"},"nodeType":"YulFunctionCall","src":"9011:10:61"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"9006:1:61"}]}]},"pre":{"nodeType":"YulBlock","src":"8986:3:61","statements":[]},"src":"8982:113:61"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"9115:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"9120:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9111:3:61"},"nodeType":"YulFunctionCall","src":"9111:16:61"},{"kind":"number","nodeType":"YulLiteral","src":"9129:1:61","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9104:6:61"},"nodeType":"YulFunctionCall","src":"9104:27:61"},"nodeType":"YulExpressionStatement","src":"9104:27:61"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"8935:3:61","type":""},{"name":"dst","nodeType":"YulTypedName","src":"8940:3:61","type":""},{"name":"length","nodeType":"YulTypedName","src":"8945:6:61","type":""}],"src":"8891:246:61"},{"body":{"nodeType":"YulBlock","src":"9191:54:61","statements":[{"nodeType":"YulAssignment","src":"9201:38:61","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9219:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"9226:2:61","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9215:3:61"},"nodeType":"YulFunctionCall","src":"9215:14:61"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9235:2:61","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"9231:3:61"},"nodeType":"YulFunctionCall","src":"9231:7:61"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"9211:3:61"},"nodeType":"YulFunctionCall","src":"9211:28:61"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"9201:6:61"}]}]},"name":"round_up_to_mul_of_32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"9174:5:61","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"9184:6:61","type":""}],"src":"9143:102:61"},{"body":{"nodeType":"YulBlock","src":"9341:283:61","statements":[{"nodeType":"YulVariableDeclaration","src":"9351:52:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9397:5:61"}],"functionName":{"name":"array_length_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"9365:31:61"},"nodeType":"YulFunctionCall","src":"9365:38:61"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"9355:6:61","type":""}]},{"nodeType":"YulAssignment","src":"9412:77:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9477:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"9482:6:61"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"9419:57:61"},"nodeType":"YulFunctionCall","src":"9419:70:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"9412:3:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9537:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"9544:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9533:3:61"},"nodeType":"YulFunctionCall","src":"9533:16:61"},{"name":"pos","nodeType":"YulIdentifier","src":"9551:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"9556:6:61"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"9498:34:61"},"nodeType":"YulFunctionCall","src":"9498:65:61"},"nodeType":"YulExpressionStatement","src":"9498:65:61"},{"nodeType":"YulAssignment","src":"9572:46:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9583:3:61"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"9610:6:61"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"9588:21:61"},"nodeType":"YulFunctionCall","src":"9588:29:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9579:3:61"},"nodeType":"YulFunctionCall","src":"9579:39:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"9572:3:61"}]}]},"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"9322:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"9329:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"9337:3:61","type":""}],"src":"9251:373:61"},{"body":{"nodeType":"YulBlock","src":"9716:40:61","statements":[{"nodeType":"YulAssignment","src":"9727:22:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9743:5:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9737:5:61"},"nodeType":"YulFunctionCall","src":"9737:12:61"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"9727:6:61"}]}]},"name":"array_length_t_array$_t_enum$_Module_$16268_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"9699:5:61","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"9709:6:61","type":""}],"src":"9630:126:61"},{"body":{"nodeType":"YulBlock","src":"9861:73:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9878:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"9883:6:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9871:6:61"},"nodeType":"YulFunctionCall","src":"9871:19:61"},"nodeType":"YulExpressionStatement","src":"9871:19:61"},{"nodeType":"YulAssignment","src":"9899:29:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9918:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"9923:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9914:3:61"},"nodeType":"YulFunctionCall","src":"9914:14:61"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"9899:11:61"}]}]},"name":"array_storeLengthForEncoding_t_array$_t_uint8_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"9833:3:61","type":""},{"name":"length","nodeType":"YulTypedName","src":"9838:6:61","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"9849:11:61","type":""}],"src":"9762:172:61"},{"body":{"nodeType":"YulBlock","src":"10024:60:61","statements":[{"nodeType":"YulAssignment","src":"10034:11:61","value":{"name":"ptr","nodeType":"YulIdentifier","src":"10042:3:61"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"10034:4:61"}]},{"nodeType":"YulAssignment","src":"10055:22:61","value":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"10067:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"10072:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10063:3:61"},"nodeType":"YulFunctionCall","src":"10063:14:61"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"10055:4:61"}]}]},"name":"array_dataslot_t_array$_t_enum$_Module_$16268_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"10011:3:61","type":""}],"returnVariables":[{"name":"data","nodeType":"YulTypedName","src":"10019:4:61","type":""}],"src":"9940:144:61"},{"body":{"nodeType":"YulBlock","src":"10145:62:61","statements":[{"body":{"nodeType":"YulBlock","src":"10179:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x21","nodeType":"YulIdentifier","src":"10181:16:61"},"nodeType":"YulFunctionCall","src":"10181:18:61"},"nodeType":"YulExpressionStatement","src":"10181:18:61"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10168:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"10175:1:61","type":"","value":"4"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"10165:2:61"},"nodeType":"YulFunctionCall","src":"10165:12:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"10158:6:61"},"nodeType":"YulFunctionCall","src":"10158:20:61"},"nodeType":"YulIf","src":"10155:46:61"}]},"name":"validator_assert_t_enum$_Module_$16268","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"10138:5:61","type":""}],"src":"10090:117:61"},{"body":{"nodeType":"YulBlock","src":"10270:78:61","statements":[{"nodeType":"YulAssignment","src":"10280:16:61","value":{"name":"value","nodeType":"YulIdentifier","src":"10291:5:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"10280:7:61"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10336:5:61"}],"functionName":{"name":"validator_assert_t_enum$_Module_$16268","nodeType":"YulIdentifier","src":"10297:38:61"},"nodeType":"YulFunctionCall","src":"10297:45:61"},"nodeType":"YulExpressionStatement","src":"10297:45:61"}]},"name":"cleanup_t_enum$_Module_$16268","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"10252:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"10262:7:61","type":""}],"src":"10213:135:61"},{"body":{"nodeType":"YulBlock","src":"10424:65:61","statements":[{"nodeType":"YulAssignment","src":"10434:49:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10477:5:61"}],"functionName":{"name":"cleanup_t_enum$_Module_$16268","nodeType":"YulIdentifier","src":"10447:29:61"},"nodeType":"YulFunctionCall","src":"10447:36:61"},"variableNames":[{"name":"converted","nodeType":"YulIdentifier","src":"10434:9:61"}]}]},"name":"convert_t_enum$_Module_$16268_to_t_uint8","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"10404:5:61","type":""}],"returnVariables":[{"name":"converted","nodeType":"YulTypedName","src":"10414:9:61","type":""}],"src":"10354:135:61"},{"body":{"nodeType":"YulBlock","src":"10560:76:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10577:3:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10623:5:61"}],"functionName":{"name":"convert_t_enum$_Module_$16268_to_t_uint8","nodeType":"YulIdentifier","src":"10582:40:61"},"nodeType":"YulFunctionCall","src":"10582:47:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10570:6:61"},"nodeType":"YulFunctionCall","src":"10570:60:61"},"nodeType":"YulExpressionStatement","src":"10570:60:61"}]},"name":"abi_encode_t_enum$_Module_$16268_to_t_uint8","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"10548:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"10555:3:61","type":""}],"src":"10495:141:61"},{"body":{"nodeType":"YulBlock","src":"10732:109:61","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10786:6:61"},{"name":"pos","nodeType":"YulIdentifier","src":"10794:3:61"}],"functionName":{"name":"abi_encode_t_enum$_Module_$16268_to_t_uint8","nodeType":"YulIdentifier","src":"10742:43:61"},"nodeType":"YulFunctionCall","src":"10742:56:61"},"nodeType":"YulExpressionStatement","src":"10742:56:61"},{"nodeType":"YulAssignment","src":"10807:28:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10825:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"10830:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10821:3:61"},"nodeType":"YulFunctionCall","src":"10821:14:61"},"variableNames":[{"name":"updatedPos","nodeType":"YulIdentifier","src":"10807:10:61"}]}]},"name":"abi_encodeUpdatedPos_t_enum$_Module_$16268_to_t_uint8","nodeType":"YulFunctionDefinition","parameters":[{"name":"value0","nodeType":"YulTypedName","src":"10705:6:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"10713:3:61","type":""}],"returnVariables":[{"name":"updatedPos","nodeType":"YulTypedName","src":"10721:10:61","type":""}],"src":"10642:199:61"},{"body":{"nodeType":"YulBlock","src":"10934:38:61","statements":[{"nodeType":"YulAssignment","src":"10944:22:61","value":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"10956:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"10961:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10952:3:61"},"nodeType":"YulFunctionCall","src":"10952:14:61"},"variableNames":[{"name":"next","nodeType":"YulIdentifier","src":"10944:4:61"}]}]},"name":"array_nextElement_t_array$_t_enum$_Module_$16268_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"10921:3:61","type":""}],"returnVariables":[{"name":"next","nodeType":"YulTypedName","src":"10929:4:61","type":""}],"src":"10847:125:61"},{"body":{"nodeType":"YulBlock","src":"11134:642:61","statements":[{"nodeType":"YulVariableDeclaration","src":"11144:80:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11218:5:61"}],"functionName":{"name":"array_length_t_array$_t_enum$_Module_$16268_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"11158:59:61"},"nodeType":"YulFunctionCall","src":"11158:66:61"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"11148:6:61","type":""}]},{"nodeType":"YulAssignment","src":"11233:81:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"11302:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"11307:6:61"}],"functionName":{"name":"array_storeLengthForEncoding_t_array$_t_uint8_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"11240:61:61"},"nodeType":"YulFunctionCall","src":"11240:74:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"11233:3:61"}]},{"nodeType":"YulVariableDeclaration","src":"11323:83:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11400:5:61"}],"functionName":{"name":"array_dataslot_t_array$_t_enum$_Module_$16268_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"11338:61:61"},"nodeType":"YulFunctionCall","src":"11338:68:61"},"variables":[{"name":"baseRef","nodeType":"YulTypedName","src":"11327:7:61","type":""}]},{"nodeType":"YulVariableDeclaration","src":"11415:21:61","value":{"name":"baseRef","nodeType":"YulIdentifier","src":"11429:7:61"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"11419:6:61","type":""}]},{"body":{"nodeType":"YulBlock","src":"11505:246:61","statements":[{"nodeType":"YulVariableDeclaration","src":"11519:34:61","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"11546:6:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"11540:5:61"},"nodeType":"YulFunctionCall","src":"11540:13:61"},"variables":[{"name":"elementValue0","nodeType":"YulTypedName","src":"11523:13:61","type":""}]},{"nodeType":"YulAssignment","src":"11566:80:61","value":{"arguments":[{"name":"elementValue0","nodeType":"YulIdentifier","src":"11627:13:61"},{"name":"pos","nodeType":"YulIdentifier","src":"11642:3:61"}],"functionName":{"name":"abi_encodeUpdatedPos_t_enum$_Module_$16268_to_t_uint8","nodeType":"YulIdentifier","src":"11573:53:61"},"nodeType":"YulFunctionCall","src":"11573:73:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"11566:3:61"}]},{"nodeType":"YulAssignment","src":"11659:82:61","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"11734:6:61"}],"functionName":{"name":"array_nextElement_t_array$_t_enum$_Module_$16268_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"11669:64:61"},"nodeType":"YulFunctionCall","src":"11669:72:61"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"11659:6:61"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"11467:1:61"},{"name":"length","nodeType":"YulIdentifier","src":"11470:6:61"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"11464:2:61"},"nodeType":"YulFunctionCall","src":"11464:13:61"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"11478:18:61","statements":[{"nodeType":"YulAssignment","src":"11480:14:61","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"11489:1:61"},{"kind":"number","nodeType":"YulLiteral","src":"11492:1:61","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11485:3:61"},"nodeType":"YulFunctionCall","src":"11485:9:61"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"11480:1:61"}]}]},"pre":{"nodeType":"YulBlock","src":"11449:14:61","statements":[{"nodeType":"YulVariableDeclaration","src":"11451:10:61","value":{"kind":"number","nodeType":"YulLiteral","src":"11460:1:61","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"11455:1:61","type":""}]}]},"src":"11445:306:61"},{"nodeType":"YulAssignment","src":"11760:10:61","value":{"name":"pos","nodeType":"YulIdentifier","src":"11767:3:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"11760:3:61"}]}]},"name":"abi_encode_t_array$_t_enum$_Module_$16268_$dyn_memory_ptr_to_t_array$_t_uint8_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"11113:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"11120:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"11129:3:61","type":""}],"src":"11010:766:61"},{"body":{"nodeType":"YulBlock","src":"11865:40:61","statements":[{"nodeType":"YulAssignment","src":"11876:22:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11892:5:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"11886:5:61"},"nodeType":"YulFunctionCall","src":"11886:12:61"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"11876:6:61"}]}]},"name":"array_length_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"11848:5:61","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"11858:6:61","type":""}],"src":"11782:123:61"},{"body":{"nodeType":"YulBlock","src":"12021:73:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12038:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"12043:6:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12031:6:61"},"nodeType":"YulFunctionCall","src":"12031:19:61"},"nodeType":"YulExpressionStatement","src":"12031:19:61"},{"nodeType":"YulAssignment","src":"12059:29:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12078:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"12083:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12074:3:61"},"nodeType":"YulFunctionCall","src":"12074:14:61"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"12059:11:61"}]}]},"name":"array_storeLengthForEncoding_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"11993:3:61","type":""},{"name":"length","nodeType":"YulTypedName","src":"11998:6:61","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"12009:11:61","type":""}],"src":"11911:183:61"},{"body":{"nodeType":"YulBlock","src":"12181:60:61","statements":[{"nodeType":"YulAssignment","src":"12191:11:61","value":{"name":"ptr","nodeType":"YulIdentifier","src":"12199:3:61"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"12191:4:61"}]},{"nodeType":"YulAssignment","src":"12212:22:61","value":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"12224:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"12229:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12220:3:61"},"nodeType":"YulFunctionCall","src":"12220:14:61"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"12212:4:61"}]}]},"name":"array_dataslot_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"12168:3:61","type":""}],"returnVariables":[{"name":"data","nodeType":"YulTypedName","src":"12176:4:61","type":""}],"src":"12100:141:61"},{"body":{"nodeType":"YulBlock","src":"12332:73:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12349:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"12354:6:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12342:6:61"},"nodeType":"YulFunctionCall","src":"12342:19:61"},"nodeType":"YulExpressionStatement","src":"12342:19:61"},{"nodeType":"YulAssignment","src":"12370:29:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12389:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"12394:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12385:3:61"},"nodeType":"YulFunctionCall","src":"12385:14:61"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"12370:11:61"}]}]},"name":"array_storeLengthForEncoding_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"12304:3:61","type":""},{"name":"length","nodeType":"YulTypedName","src":"12309:6:61","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"12320:11:61","type":""}],"src":"12247:158:61"},{"body":{"nodeType":"YulBlock","src":"12491:273:61","statements":[{"nodeType":"YulVariableDeclaration","src":"12501:52:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"12547:5:61"}],"functionName":{"name":"array_length_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"12515:31:61"},"nodeType":"YulFunctionCall","src":"12515:38:61"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"12505:6:61","type":""}]},{"nodeType":"YulAssignment","src":"12562:67:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12617:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"12622:6:61"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"12569:47:61"},"nodeType":"YulFunctionCall","src":"12569:60:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"12562:3:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"12677:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"12684:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12673:3:61"},"nodeType":"YulFunctionCall","src":"12673:16:61"},{"name":"pos","nodeType":"YulIdentifier","src":"12691:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"12696:6:61"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"12638:34:61"},"nodeType":"YulFunctionCall","src":"12638:65:61"},"nodeType":"YulExpressionStatement","src":"12638:65:61"},{"nodeType":"YulAssignment","src":"12712:46:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12723:3:61"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"12750:6:61"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"12728:21:61"},"nodeType":"YulFunctionCall","src":"12728:29:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12719:3:61"},"nodeType":"YulFunctionCall","src":"12719:39:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"12712:3:61"}]}]},"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"12472:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"12479:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"12487:3:61","type":""}],"src":"12411:353:61"},{"body":{"nodeType":"YulBlock","src":"12868:94:61","statements":[{"nodeType":"YulAssignment","src":"12878:78:61","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"12944:6:61"},{"name":"pos","nodeType":"YulIdentifier","src":"12952:3:61"}],"functionName":{"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"12892:51:61"},"nodeType":"YulFunctionCall","src":"12892:64:61"},"variableNames":[{"name":"updatedPos","nodeType":"YulIdentifier","src":"12878:10:61"}]}]},"name":"abi_encodeUpdatedPos_t_bytes_memory_ptr_to_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value0","nodeType":"YulTypedName","src":"12841:6:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"12849:3:61","type":""}],"returnVariables":[{"name":"updatedPos","nodeType":"YulTypedName","src":"12857:10:61","type":""}],"src":"12770:192:61"},{"body":{"nodeType":"YulBlock","src":"13052:38:61","statements":[{"nodeType":"YulAssignment","src":"13062:22:61","value":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"13074:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"13079:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13070:3:61"},"nodeType":"YulFunctionCall","src":"13070:14:61"},"variableNames":[{"name":"next","nodeType":"YulIdentifier","src":"13062:4:61"}]}]},"name":"array_nextElement_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"13039:3:61","type":""}],"returnVariables":[{"name":"next","nodeType":"YulTypedName","src":"13047:4:61","type":""}],"src":"12968:122:61"},{"body":{"nodeType":"YulBlock","src":"13254:831:61","statements":[{"nodeType":"YulVariableDeclaration","src":"13264:77:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"13335:5:61"}],"functionName":{"name":"array_length_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"13278:56:61"},"nodeType":"YulFunctionCall","src":"13278:63:61"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"13268:6:61","type":""}]},{"nodeType":"YulAssignment","src":"13350:92:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13430:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"13435:6:61"}],"functionName":{"name":"array_storeLengthForEncoding_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"13357:72:61"},"nodeType":"YulFunctionCall","src":"13357:85:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"13350:3:61"}]},{"nodeType":"YulVariableDeclaration","src":"13451:20:61","value":{"name":"pos","nodeType":"YulIdentifier","src":"13468:3:61"},"variables":[{"name":"headStart","nodeType":"YulTypedName","src":"13455:9:61","type":""}]},{"nodeType":"YulVariableDeclaration","src":"13480:39:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13496:3:61"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"13505:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"13513:4:61","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"13501:3:61"},"nodeType":"YulFunctionCall","src":"13501:17:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13492:3:61"},"nodeType":"YulFunctionCall","src":"13492:27:61"},"variables":[{"name":"tail","nodeType":"YulTypedName","src":"13484:4:61","type":""}]},{"nodeType":"YulVariableDeclaration","src":"13528:80:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"13602:5:61"}],"functionName":{"name":"array_dataslot_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"13543:58:61"},"nodeType":"YulFunctionCall","src":"13543:65:61"},"variables":[{"name":"baseRef","nodeType":"YulTypedName","src":"13532:7:61","type":""}]},{"nodeType":"YulVariableDeclaration","src":"13617:21:61","value":{"name":"baseRef","nodeType":"YulIdentifier","src":"13631:7:61"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"13621:6:61","type":""}]},{"body":{"nodeType":"YulBlock","src":"13707:333:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13728:3:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"13737:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"13743:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"13733:3:61"},"nodeType":"YulFunctionCall","src":"13733:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13721:6:61"},"nodeType":"YulFunctionCall","src":"13721:33:61"},"nodeType":"YulExpressionStatement","src":"13721:33:61"},{"nodeType":"YulVariableDeclaration","src":"13767:34:61","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"13794:6:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"13788:5:61"},"nodeType":"YulFunctionCall","src":"13788:13:61"},"variables":[{"name":"elementValue0","nodeType":"YulTypedName","src":"13771:13:61","type":""}]},{"nodeType":"YulAssignment","src":"13814:90:61","value":{"arguments":[{"name":"elementValue0","nodeType":"YulIdentifier","src":"13884:13:61"},{"name":"tail","nodeType":"YulIdentifier","src":"13899:4:61"}],"functionName":{"name":"abi_encodeUpdatedPos_t_bytes_memory_ptr_to_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"13822:61:61"},"nodeType":"YulFunctionCall","src":"13822:82:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"13814:4:61"}]},{"nodeType":"YulAssignment","src":"13917:79:61","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"13989:6:61"}],"functionName":{"name":"array_nextElement_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"13927:61:61"},"nodeType":"YulFunctionCall","src":"13927:69:61"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"13917:6:61"}]},{"nodeType":"YulAssignment","src":"14009:21:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14020:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"14025:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14016:3:61"},"nodeType":"YulFunctionCall","src":"14016:14:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"14009:3:61"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"13669:1:61"},{"name":"length","nodeType":"YulIdentifier","src":"13672:6:61"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"13666:2:61"},"nodeType":"YulFunctionCall","src":"13666:13:61"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"13680:18:61","statements":[{"nodeType":"YulAssignment","src":"13682:14:61","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"13691:1:61"},{"kind":"number","nodeType":"YulLiteral","src":"13694:1:61","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13687:3:61"},"nodeType":"YulFunctionCall","src":"13687:9:61"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"13682:1:61"}]}]},"pre":{"nodeType":"YulBlock","src":"13651:14:61","statements":[{"nodeType":"YulVariableDeclaration","src":"13653:10:61","value":{"kind":"number","nodeType":"YulLiteral","src":"13662:1:61","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"13657:1:61","type":""}]}]},"src":"13647:393:61"},{"nodeType":"YulAssignment","src":"14049:11:61","value":{"name":"tail","nodeType":"YulIdentifier","src":"14056:4:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"14049:3:61"}]},{"nodeType":"YulAssignment","src":"14069:10:61","value":{"name":"pos","nodeType":"YulIdentifier","src":"14076:3:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"14069:3:61"}]}]},"name":"abi_encode_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"13233:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"13240:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"13249:3:61","type":""}],"src":"13122:963:61"},{"body":{"nodeType":"YulBlock","src":"14269:644:61","statements":[{"nodeType":"YulVariableDeclaration","src":"14279:26:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14295:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"14300:4:61","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14291:3:61"},"nodeType":"YulFunctionCall","src":"14291:14:61"},"variables":[{"name":"tail","nodeType":"YulTypedName","src":"14283:4:61","type":""}]},{"nodeType":"YulBlock","src":"14315:278:61","statements":[{"nodeType":"YulVariableDeclaration","src":"14353:43:61","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"14383:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"14390:4:61","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14379:3:61"},"nodeType":"YulFunctionCall","src":"14379:16:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"14373:5:61"},"nodeType":"YulFunctionCall","src":"14373:23:61"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"14357:12:61","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14421:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"14426:4:61","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14417:3:61"},"nodeType":"YulFunctionCall","src":"14417:14:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"14437:4:61"},{"name":"pos","nodeType":"YulIdentifier","src":"14443:3:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"14433:3:61"},"nodeType":"YulFunctionCall","src":"14433:14:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14410:6:61"},"nodeType":"YulFunctionCall","src":"14410:38:61"},"nodeType":"YulExpressionStatement","src":"14410:38:61"},{"nodeType":"YulAssignment","src":"14461:121:61","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"14563:12:61"},{"name":"tail","nodeType":"YulIdentifier","src":"14577:4:61"}],"functionName":{"name":"abi_encode_t_array$_t_enum$_Module_$16268_$dyn_memory_ptr_to_t_array$_t_uint8_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"14469:93:61"},"nodeType":"YulFunctionCall","src":"14469:113:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"14461:4:61"}]}]},{"nodeType":"YulBlock","src":"14603:283:61","statements":[{"nodeType":"YulVariableDeclaration","src":"14638:43:61","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"14668:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"14675:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14664:3:61"},"nodeType":"YulFunctionCall","src":"14664:16:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"14658:5:61"},"nodeType":"YulFunctionCall","src":"14658:23:61"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"14642:12:61","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14706:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"14711:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14702:3:61"},"nodeType":"YulFunctionCall","src":"14702:14:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"14722:4:61"},{"name":"pos","nodeType":"YulIdentifier","src":"14728:3:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"14718:3:61"},"nodeType":"YulFunctionCall","src":"14718:14:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14695:6:61"},"nodeType":"YulFunctionCall","src":"14695:38:61"},"nodeType":"YulExpressionStatement","src":"14695:38:61"},{"nodeType":"YulAssignment","src":"14746:129:61","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"14856:12:61"},{"name":"tail","nodeType":"YulIdentifier","src":"14870:4:61"}],"functionName":{"name":"abi_encode_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"14754:101:61"},"nodeType":"YulFunctionCall","src":"14754:121:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"14746:4:61"}]}]},{"nodeType":"YulAssignment","src":"14896:11:61","value":{"name":"tail","nodeType":"YulIdentifier","src":"14903:4:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"14896:3:61"}]}]},"name":"abi_encode_t_struct$_ModuleData_$16276_memory_ptr_to_t_struct$_ModuleData_$16276_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"14248:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"14255:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"14264:3:61","type":""}],"src":"14137:776:61"},{"body":{"nodeType":"YulBlock","src":"15177:549:61","statements":[{"nodeType":"YulAssignment","src":"15187:27:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15199:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"15210:3:61","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15195:3:61"},"nodeType":"YulFunctionCall","src":"15195:19:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"15187:4:61"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"15268:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15281:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"15292:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15277:3:61"},"nodeType":"YulFunctionCall","src":"15277:17:61"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"15224:43:61"},"nodeType":"YulFunctionCall","src":"15224:71:61"},"nodeType":"YulExpressionStatement","src":"15224:71:61"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15316:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"15327:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15312:3:61"},"nodeType":"YulFunctionCall","src":"15312:18:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"15336:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"15342:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"15332:3:61"},"nodeType":"YulFunctionCall","src":"15332:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15305:6:61"},"nodeType":"YulFunctionCall","src":"15305:48:61"},"nodeType":"YulExpressionStatement","src":"15305:48:61"},{"nodeType":"YulAssignment","src":"15362:84:61","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"15432:6:61"},{"name":"tail","nodeType":"YulIdentifier","src":"15441:4:61"}],"functionName":{"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"15370:61:61"},"nodeType":"YulFunctionCall","src":"15370:76:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"15362:4:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15467:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"15478:2:61","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15463:3:61"},"nodeType":"YulFunctionCall","src":"15463:18:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"15487:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"15493:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"15483:3:61"},"nodeType":"YulFunctionCall","src":"15483:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15456:6:61"},"nodeType":"YulFunctionCall","src":"15456:48:61"},"nodeType":"YulExpressionStatement","src":"15456:48:61"},{"nodeType":"YulAssignment","src":"15513:124:61","value":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"15623:6:61"},{"name":"tail","nodeType":"YulIdentifier","src":"15632:4:61"}],"functionName":{"name":"abi_encode_t_struct$_ModuleData_$16276_memory_ptr_to_t_struct$_ModuleData_$16276_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"15521:101:61"},"nodeType":"YulFunctionCall","src":"15521:116:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"15513:4:61"}]},{"expression":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"15691:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"15704:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"15715:2:61","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15700:3:61"},"nodeType":"YulFunctionCall","src":"15700:18:61"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"15647:43:61"},"nodeType":"YulFunctionCall","src":"15647:72:61"},"nodeType":"YulExpressionStatement","src":"15647:72:61"}]},"name":"abi_encode_tuple_t_address_t_bytes_memory_ptr_t_struct$_ModuleData_$16276_memory_ptr_t_address__to_t_address_t_bytes_memory_ptr_t_struct$_ModuleData_$16276_memory_ptr_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"15125:9:61","type":""},{"name":"value3","nodeType":"YulTypedName","src":"15137:6:61","type":""},{"name":"value2","nodeType":"YulTypedName","src":"15145:6:61","type":""},{"name":"value1","nodeType":"YulTypedName","src":"15153:6:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"15161:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"15172:4:61","type":""}],"src":"14919:807:61"},{"body":{"nodeType":"YulBlock","src":"15775:79:61","statements":[{"body":{"nodeType":"YulBlock","src":"15832:16:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15841:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"15844:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"15834:6:61"},"nodeType":"YulFunctionCall","src":"15834:12:61"},"nodeType":"YulExpressionStatement","src":"15834:12:61"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"15798:5:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"15823:5:61"}],"functionName":{"name":"cleanup_t_bytes32","nodeType":"YulIdentifier","src":"15805:17:61"},"nodeType":"YulFunctionCall","src":"15805:24:61"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"15795:2:61"},"nodeType":"YulFunctionCall","src":"15795:35:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"15788:6:61"},"nodeType":"YulFunctionCall","src":"15788:43:61"},"nodeType":"YulIf","src":"15785:63:61"}]},"name":"validator_revert_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"15768:5:61","type":""}],"src":"15732:122:61"},{"body":{"nodeType":"YulBlock","src":"15923:80:61","statements":[{"nodeType":"YulAssignment","src":"15933:22:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"15948:6:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"15942:5:61"},"nodeType":"YulFunctionCall","src":"15942:13:61"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"15933:5:61"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"15991:5:61"}],"functionName":{"name":"validator_revert_t_bytes32","nodeType":"YulIdentifier","src":"15964:26:61"},"nodeType":"YulFunctionCall","src":"15964:33:61"},"nodeType":"YulExpressionStatement","src":"15964:33:61"}]},"name":"abi_decode_t_bytes32_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"15901:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"15909:3:61","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"15917:5:61","type":""}],"src":"15860:143:61"},{"body":{"nodeType":"YulBlock","src":"16086:274:61","statements":[{"body":{"nodeType":"YulBlock","src":"16132:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"16134:77:61"},"nodeType":"YulFunctionCall","src":"16134:79:61"},"nodeType":"YulExpressionStatement","src":"16134:79:61"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"16107:7:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"16116:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"16103:3:61"},"nodeType":"YulFunctionCall","src":"16103:23:61"},{"kind":"number","nodeType":"YulLiteral","src":"16128:2:61","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"16099:3:61"},"nodeType":"YulFunctionCall","src":"16099:32:61"},"nodeType":"YulIf","src":"16096:119:61"},{"nodeType":"YulBlock","src":"16225:128:61","statements":[{"nodeType":"YulVariableDeclaration","src":"16240:15:61","value":{"kind":"number","nodeType":"YulLiteral","src":"16254:1:61","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"16244:6:61","type":""}]},{"nodeType":"YulAssignment","src":"16269:74:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16315:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"16326:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16311:3:61"},"nodeType":"YulFunctionCall","src":"16311:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"16335:7:61"}],"functionName":{"name":"abi_decode_t_bytes32_fromMemory","nodeType":"YulIdentifier","src":"16279:31:61"},"nodeType":"YulFunctionCall","src":"16279:64:61"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"16269:6:61"}]}]}]},"name":"abi_decode_tuple_t_bytes32_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"16056:9:61","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"16067:7:61","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"16079:6:61","type":""}],"src":"16009:351:61"},{"body":{"nodeType":"YulBlock","src":"16464:124:61","statements":[{"nodeType":"YulAssignment","src":"16474:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16486:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"16497:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16482:3:61"},"nodeType":"YulFunctionCall","src":"16482:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"16474:4:61"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"16554:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16567:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"16578:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16563:3:61"},"nodeType":"YulFunctionCall","src":"16563:17:61"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nodeType":"YulIdentifier","src":"16510:43:61"},"nodeType":"YulFunctionCall","src":"16510:71:61"},"nodeType":"YulExpressionStatement","src":"16510:71:61"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"16436:9:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"16448:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"16459:4:61","type":""}],"src":"16366:222:61"},{"body":{"nodeType":"YulBlock","src":"16748:288:61","statements":[{"nodeType":"YulAssignment","src":"16758:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16770:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"16781:2:61","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16766:3:61"},"nodeType":"YulFunctionCall","src":"16766:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"16758:4:61"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"16838:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16851:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"16862:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16847:3:61"},"nodeType":"YulFunctionCall","src":"16847:17:61"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"16794:43:61"},"nodeType":"YulFunctionCall","src":"16794:71:61"},"nodeType":"YulExpressionStatement","src":"16794:71:61"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"16919:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16932:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"16943:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16928:3:61"},"nodeType":"YulFunctionCall","src":"16928:18:61"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"16875:43:61"},"nodeType":"YulFunctionCall","src":"16875:72:61"},"nodeType":"YulExpressionStatement","src":"16875:72:61"},{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"17001:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17014:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"17025:2:61","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17010:3:61"},"nodeType":"YulFunctionCall","src":"17010:18:61"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"16957:43:61"},"nodeType":"YulFunctionCall","src":"16957:72:61"},"nodeType":"YulExpressionStatement","src":"16957:72:61"}]},"name":"abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"16704:9:61","type":""},{"name":"value2","nodeType":"YulTypedName","src":"16716:6:61","type":""},{"name":"value1","nodeType":"YulTypedName","src":"16724:6:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"16732:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"16743:4:61","type":""}],"src":"16594:442:61"},{"body":{"nodeType":"YulBlock","src":"17082:76:61","statements":[{"body":{"nodeType":"YulBlock","src":"17136:16:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"17145:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"17148:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"17138:6:61"},"nodeType":"YulFunctionCall","src":"17138:12:61"},"nodeType":"YulExpressionStatement","src":"17138:12:61"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"17105:5:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"17127:5:61"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"17112:14:61"},"nodeType":"YulFunctionCall","src":"17112:21:61"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"17102:2:61"},"nodeType":"YulFunctionCall","src":"17102:32:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"17095:6:61"},"nodeType":"YulFunctionCall","src":"17095:40:61"},"nodeType":"YulIf","src":"17092:60:61"}]},"name":"validator_revert_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"17075:5:61","type":""}],"src":"17042:116:61"},{"body":{"nodeType":"YulBlock","src":"17224:77:61","statements":[{"nodeType":"YulAssignment","src":"17234:22:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"17249:6:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"17243:5:61"},"nodeType":"YulFunctionCall","src":"17243:13:61"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"17234:5:61"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"17289:5:61"}],"functionName":{"name":"validator_revert_t_bool","nodeType":"YulIdentifier","src":"17265:23:61"},"nodeType":"YulFunctionCall","src":"17265:30:61"},"nodeType":"YulExpressionStatement","src":"17265:30:61"}]},"name":"abi_decode_t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"17202:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"17210:3:61","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"17218:5:61","type":""}],"src":"17164:137:61"},{"body":{"nodeType":"YulBlock","src":"17381:271:61","statements":[{"body":{"nodeType":"YulBlock","src":"17427:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"17429:77:61"},"nodeType":"YulFunctionCall","src":"17429:79:61"},"nodeType":"YulExpressionStatement","src":"17429:79:61"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"17402:7:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"17411:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"17398:3:61"},"nodeType":"YulFunctionCall","src":"17398:23:61"},{"kind":"number","nodeType":"YulLiteral","src":"17423:2:61","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"17394:3:61"},"nodeType":"YulFunctionCall","src":"17394:32:61"},"nodeType":"YulIf","src":"17391:119:61"},{"nodeType":"YulBlock","src":"17520:125:61","statements":[{"nodeType":"YulVariableDeclaration","src":"17535:15:61","value":{"kind":"number","nodeType":"YulLiteral","src":"17549:1:61","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"17539:6:61","type":""}]},{"nodeType":"YulAssignment","src":"17564:71:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17607:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"17618:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17603:3:61"},"nodeType":"YulFunctionCall","src":"17603:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"17627:7:61"}],"functionName":{"name":"abi_decode_t_bool_fromMemory","nodeType":"YulIdentifier","src":"17574:28:61"},"nodeType":"YulFunctionCall","src":"17574:61:61"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"17564:6:61"}]}]}]},"name":"abi_decode_tuple_t_bool_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"17351:9:61","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"17362:7:61","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"17374:6:61","type":""}],"src":"17307:345:61"},{"body":{"nodeType":"YulBlock","src":"17686:152:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"17703:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"17706:77:61","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17696:6:61"},"nodeType":"YulFunctionCall","src":"17696:88:61"},"nodeType":"YulExpressionStatement","src":"17696:88:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"17800:1:61","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"17803:4:61","type":"","value":"0x12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17793:6:61"},"nodeType":"YulFunctionCall","src":"17793:15:61"},"nodeType":"YulExpressionStatement","src":"17793:15:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"17824:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"17827:4:61","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"17817:6:61"},"nodeType":"YulFunctionCall","src":"17817:15:61"},"nodeType":"YulExpressionStatement","src":"17817:15:61"}]},"name":"panic_error_0x12","nodeType":"YulFunctionDefinition","src":"17658:180:61"},{"body":{"nodeType":"YulBlock","src":"17886:143:61","statements":[{"nodeType":"YulAssignment","src":"17896:25:61","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"17919:1:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"17901:17:61"},"nodeType":"YulFunctionCall","src":"17901:20:61"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"17896:1:61"}]},{"nodeType":"YulAssignment","src":"17930:25:61","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"17953:1:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"17935:17:61"},"nodeType":"YulFunctionCall","src":"17935:20:61"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"17930:1:61"}]},{"body":{"nodeType":"YulBlock","src":"17977:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x12","nodeType":"YulIdentifier","src":"17979:16:61"},"nodeType":"YulFunctionCall","src":"17979:18:61"},"nodeType":"YulExpressionStatement","src":"17979:18:61"}]},"condition":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"17974:1:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"17967:6:61"},"nodeType":"YulFunctionCall","src":"17967:9:61"},"nodeType":"YulIf","src":"17964:35:61"},{"nodeType":"YulAssignment","src":"18009:14:61","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"18018:1:61"},{"name":"y","nodeType":"YulIdentifier","src":"18021:1:61"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"18014:3:61"},"nodeType":"YulFunctionCall","src":"18014:9:61"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"18009:1:61"}]}]},"name":"checked_div_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"17875:1:61","type":""},{"name":"y","nodeType":"YulTypedName","src":"17878:1:61","type":""}],"returnVariables":[{"name":"r","nodeType":"YulTypedName","src":"17884:1:61","type":""}],"src":"17844:185:61"},{"body":{"nodeType":"YulBlock","src":"18080:149:61","statements":[{"nodeType":"YulAssignment","src":"18090:25:61","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"18113:1:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"18095:17:61"},"nodeType":"YulFunctionCall","src":"18095:20:61"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"18090:1:61"}]},{"nodeType":"YulAssignment","src":"18124:25:61","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"18147:1:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"18129:17:61"},"nodeType":"YulFunctionCall","src":"18129:20:61"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"18124:1:61"}]},{"nodeType":"YulAssignment","src":"18158:17:61","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"18170:1:61"},{"name":"y","nodeType":"YulIdentifier","src":"18173:1:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"18166:3:61"},"nodeType":"YulFunctionCall","src":"18166:9:61"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"18158:4:61"}]},{"body":{"nodeType":"YulBlock","src":"18200:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"18202:16:61"},"nodeType":"YulFunctionCall","src":"18202:18:61"},"nodeType":"YulExpressionStatement","src":"18202:18:61"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"18191:4:61"},{"name":"x","nodeType":"YulIdentifier","src":"18197:1:61"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"18188:2:61"},"nodeType":"YulFunctionCall","src":"18188:11:61"},"nodeType":"YulIf","src":"18185:37:61"}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"18066:1:61","type":""},{"name":"y","nodeType":"YulTypedName","src":"18069:1:61","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"18075:4:61","type":""}],"src":"18035:194:61"},{"body":{"nodeType":"YulBlock","src":"18278:288:61","statements":[{"nodeType":"YulAssignment","src":"18288:23:61","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"18309:1:61"}],"functionName":{"name":"cleanup_t_int96","nodeType":"YulIdentifier","src":"18293:15:61"},"nodeType":"YulFunctionCall","src":"18293:18:61"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"18288:1:61"}]},{"nodeType":"YulAssignment","src":"18320:23:61","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"18341:1:61"}],"functionName":{"name":"cleanup_t_int96","nodeType":"YulIdentifier","src":"18325:15:61"},"nodeType":"YulFunctionCall","src":"18325:18:61"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"18320:1:61"}]},{"nodeType":"YulAssignment","src":"18352:17:61","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"18364:1:61"},{"name":"y","nodeType":"YulIdentifier","src":"18367:1:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"18360:3:61"},"nodeType":"YulFunctionCall","src":"18360:9:61"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"18352:4:61"}]},{"body":{"nodeType":"YulBlock","src":"18537:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"18539:16:61"},"nodeType":"YulFunctionCall","src":"18539:18:61"},"nodeType":"YulExpressionStatement","src":"18539:18:61"}]},"condition":{"arguments":[{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"18402:4:61"},{"kind":"number","nodeType":"YulLiteral","src":"18408:66:61","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff800000000000000000000000"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"18398:3:61"},"nodeType":"YulFunctionCall","src":"18398:77:61"},{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"18493:4:61"},{"kind":"number","nodeType":"YulLiteral","src":"18499:26:61","type":"","value":"0x7fffffffffffffffffffffff"}],"functionName":{"name":"sgt","nodeType":"YulIdentifier","src":"18489:3:61"},"nodeType":"YulFunctionCall","src":"18489:37:61"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"18382:2:61"},"nodeType":"YulFunctionCall","src":"18382:154:61"},"nodeType":"YulIf","src":"18379:180:61"}]},"name":"checked_sub_t_int96","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"18264:1:61","type":""},{"name":"y","nodeType":"YulTypedName","src":"18267:1:61","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"18273:4:61","type":""}],"src":"18235:331:61"},{"body":{"nodeType":"YulBlock","src":"18620:362:61","statements":[{"nodeType":"YulAssignment","src":"18630:25:61","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"18653:1:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"18635:17:61"},"nodeType":"YulFunctionCall","src":"18635:20:61"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"18630:1:61"}]},{"nodeType":"YulAssignment","src":"18664:25:61","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"18687:1:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"18669:17:61"},"nodeType":"YulFunctionCall","src":"18669:20:61"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"18664:1:61"}]},{"nodeType":"YulVariableDeclaration","src":"18698:28:61","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"18721:1:61"},{"name":"y","nodeType":"YulIdentifier","src":"18724:1:61"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"18717:3:61"},"nodeType":"YulFunctionCall","src":"18717:9:61"},"variables":[{"name":"product_raw","nodeType":"YulTypedName","src":"18702:11:61","type":""}]},{"nodeType":"YulAssignment","src":"18735:41:61","value":{"arguments":[{"name":"product_raw","nodeType":"YulIdentifier","src":"18764:11:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"18746:17:61"},"nodeType":"YulFunctionCall","src":"18746:30:61"},"variableNames":[{"name":"product","nodeType":"YulIdentifier","src":"18735:7:61"}]},{"body":{"nodeType":"YulBlock","src":"18953:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"18955:16:61"},"nodeType":"YulFunctionCall","src":"18955:18:61"},"nodeType":"YulExpressionStatement","src":"18955:18:61"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"18886:1:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"18879:6:61"},"nodeType":"YulFunctionCall","src":"18879:9:61"},{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"18909:1:61"},{"arguments":[{"name":"product","nodeType":"YulIdentifier","src":"18916:7:61"},{"name":"x","nodeType":"YulIdentifier","src":"18925:1:61"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"18912:3:61"},"nodeType":"YulFunctionCall","src":"18912:15:61"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"18906:2:61"},"nodeType":"YulFunctionCall","src":"18906:22:61"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"18859:2:61"},"nodeType":"YulFunctionCall","src":"18859:83:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"18839:6:61"},"nodeType":"YulFunctionCall","src":"18839:113:61"},"nodeType":"YulIf","src":"18836:139:61"}]},"name":"checked_mul_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"18603:1:61","type":""},{"name":"y","nodeType":"YulTypedName","src":"18606:1:61","type":""}],"returnVariables":[{"name":"product","nodeType":"YulTypedName","src":"18612:7:61","type":""}],"src":"18572:410:61"},{"body":{"nodeType":"YulBlock","src":"19031:190:61","statements":[{"nodeType":"YulAssignment","src":"19041:33:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"19068:5:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"19050:17:61"},"nodeType":"YulFunctionCall","src":"19050:24:61"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"19041:5:61"}]},{"body":{"nodeType":"YulBlock","src":"19164:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"19166:16:61"},"nodeType":"YulFunctionCall","src":"19166:18:61"},"nodeType":"YulExpressionStatement","src":"19166:18:61"}]},"condition":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"19089:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"19096:66:61","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"19086:2:61"},"nodeType":"YulFunctionCall","src":"19086:77:61"},"nodeType":"YulIf","src":"19083:103:61"},{"nodeType":"YulAssignment","src":"19195:20:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"19206:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"19213:1:61","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19202:3:61"},"nodeType":"YulFunctionCall","src":"19202:13:61"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"19195:3:61"}]}]},"name":"increment_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"19017:5:61","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"19027:3:61","type":""}],"src":"18988:233:61"},{"body":{"nodeType":"YulBlock","src":"19269:285:61","statements":[{"nodeType":"YulAssignment","src":"19279:23:61","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"19300:1:61"}],"functionName":{"name":"cleanup_t_int96","nodeType":"YulIdentifier","src":"19284:15:61"},"nodeType":"YulFunctionCall","src":"19284:18:61"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"19279:1:61"}]},{"nodeType":"YulAssignment","src":"19311:23:61","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"19332:1:61"}],"functionName":{"name":"cleanup_t_int96","nodeType":"YulIdentifier","src":"19316:15:61"},"nodeType":"YulFunctionCall","src":"19316:18:61"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"19311:1:61"}]},{"nodeType":"YulAssignment","src":"19343:16:61","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"19354:1:61"},{"name":"y","nodeType":"YulIdentifier","src":"19357:1:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19350:3:61"},"nodeType":"YulFunctionCall","src":"19350:9:61"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"19343:3:61"}]},{"body":{"nodeType":"YulBlock","src":"19525:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"19527:16:61"},"nodeType":"YulFunctionCall","src":"19527:18:61"},"nodeType":"YulExpressionStatement","src":"19527:18:61"}]},"condition":{"arguments":[{"arguments":[{"name":"sum","nodeType":"YulIdentifier","src":"19392:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"19397:26:61","type":"","value":"0x7fffffffffffffffffffffff"}],"functionName":{"name":"sgt","nodeType":"YulIdentifier","src":"19388:3:61"},"nodeType":"YulFunctionCall","src":"19388:36:61"},{"arguments":[{"name":"sum","nodeType":"YulIdentifier","src":"19442:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"19447:66:61","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff800000000000000000000000"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"19438:3:61"},"nodeType":"YulFunctionCall","src":"19438:76:61"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"19372:2:61"},"nodeType":"YulFunctionCall","src":"19372:152:61"},"nodeType":"YulIf","src":"19369:178:61"}]},"name":"checked_add_t_int96","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"19256:1:61","type":""},{"name":"y","nodeType":"YulTypedName","src":"19259:1:61","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"19265:3:61","type":""}],"src":"19227:327:61"},{"body":{"nodeType":"YulBlock","src":"19605:73:61","statements":[{"nodeType":"YulAssignment","src":"19615:57:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"19630:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"19637:34:61","type":"","value":"0xffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"19626:3:61"},"nodeType":"YulFunctionCall","src":"19626:46:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"19615:7:61"}]}]},"name":"cleanup_t_uint128","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"19587:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"19597:7:61","type":""}],"src":"19560:118:61"},{"body":{"nodeType":"YulBlock","src":"19749:53:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"19766:3:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"19789:5:61"}],"functionName":{"name":"cleanup_t_uint128","nodeType":"YulIdentifier","src":"19771:17:61"},"nodeType":"YulFunctionCall","src":"19771:24:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19759:6:61"},"nodeType":"YulFunctionCall","src":"19759:37:61"},"nodeType":"YulExpressionStatement","src":"19759:37:61"}]},"name":"abi_encode_t_uint128_to_t_uint128_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"19737:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"19744:3:61","type":""}],"src":"19684:118:61"},{"body":{"nodeType":"YulBlock","src":"19934:206:61","statements":[{"nodeType":"YulAssignment","src":"19944:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19956:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"19967:2:61","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19952:3:61"},"nodeType":"YulFunctionCall","src":"19952:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"19944:4:61"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"20024:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20037:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"20048:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20033:3:61"},"nodeType":"YulFunctionCall","src":"20033:17:61"}],"functionName":{"name":"abi_encode_t_uint128_to_t_uint128_fromStack","nodeType":"YulIdentifier","src":"19980:43:61"},"nodeType":"YulFunctionCall","src":"19980:71:61"},"nodeType":"YulExpressionStatement","src":"19980:71:61"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"20105:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20118:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"20129:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20114:3:61"},"nodeType":"YulFunctionCall","src":"20114:18:61"}],"functionName":{"name":"abi_encode_t_uint128_to_t_uint128_fromStack","nodeType":"YulIdentifier","src":"20061:43:61"},"nodeType":"YulFunctionCall","src":"20061:72:61"},"nodeType":"YulExpressionStatement","src":"20061:72:61"}]},"name":"abi_encode_tuple_t_uint128_t_uint128__to_t_uint128_t_uint128__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"19898:9:61","type":""},{"name":"value1","nodeType":"YulTypedName","src":"19910:6:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"19918:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"19929:4:61","type":""}],"src":"19808:332:61"},{"body":{"nodeType":"YulBlock","src":"20178:28:61","statements":[{"nodeType":"YulAssignment","src":"20188:12:61","value":{"name":"value","nodeType":"YulIdentifier","src":"20195:5:61"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"20188:3:61"}]}]},"name":"identity","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"20164:5:61","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"20174:3:61","type":""}],"src":"20146:60:61"},{"body":{"nodeType":"YulBlock","src":"20272:82:61","statements":[{"nodeType":"YulAssignment","src":"20282:66:61","value":{"arguments":[{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"20340:5:61"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"20322:17:61"},"nodeType":"YulFunctionCall","src":"20322:24:61"}],"functionName":{"name":"identity","nodeType":"YulIdentifier","src":"20313:8:61"},"nodeType":"YulFunctionCall","src":"20313:34:61"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"20295:17:61"},"nodeType":"YulFunctionCall","src":"20295:53:61"},"variableNames":[{"name":"converted","nodeType":"YulIdentifier","src":"20282:9:61"}]}]},"name":"convert_t_uint160_to_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"20252:5:61","type":""}],"returnVariables":[{"name":"converted","nodeType":"YulTypedName","src":"20262:9:61","type":""}],"src":"20212:142:61"},{"body":{"nodeType":"YulBlock","src":"20420:66:61","statements":[{"nodeType":"YulAssignment","src":"20430:50:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"20474:5:61"}],"functionName":{"name":"convert_t_uint160_to_t_uint160","nodeType":"YulIdentifier","src":"20443:30:61"},"nodeType":"YulFunctionCall","src":"20443:37:61"},"variableNames":[{"name":"converted","nodeType":"YulIdentifier","src":"20430:9:61"}]}]},"name":"convert_t_uint160_to_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"20400:5:61","type":""}],"returnVariables":[{"name":"converted","nodeType":"YulTypedName","src":"20410:9:61","type":""}],"src":"20360:126:61"},{"body":{"nodeType":"YulBlock","src":"20572:66:61","statements":[{"nodeType":"YulAssignment","src":"20582:50:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"20626:5:61"}],"functionName":{"name":"convert_t_uint160_to_t_address","nodeType":"YulIdentifier","src":"20595:30:61"},"nodeType":"YulFunctionCall","src":"20595:37:61"},"variableNames":[{"name":"converted","nodeType":"YulIdentifier","src":"20582:9:61"}]}]},"name":"convert_t_contract$_ISuperToken_$7015_to_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"20552:5:61","type":""}],"returnVariables":[{"name":"converted","nodeType":"YulTypedName","src":"20562:9:61","type":""}],"src":"20492:146:61"},{"body":{"nodeType":"YulBlock","src":"20729:86:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"20746:3:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"20802:5:61"}],"functionName":{"name":"convert_t_contract$_ISuperToken_$7015_to_t_address","nodeType":"YulIdentifier","src":"20751:50:61"},"nodeType":"YulFunctionCall","src":"20751:57:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20739:6:61"},"nodeType":"YulFunctionCall","src":"20739:70:61"},"nodeType":"YulExpressionStatement","src":"20739:70:61"}]},"name":"abi_encode_t_contract$_ISuperToken_$7015_to_t_address_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"20717:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"20724:3:61","type":""}],"src":"20644:171:61"},{"body":{"nodeType":"YulBlock","src":"20995:308:61","statements":[{"nodeType":"YulAssignment","src":"21005:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21017:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"21028:2:61","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21013:3:61"},"nodeType":"YulFunctionCall","src":"21013:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"21005:4:61"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"21105:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21118:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"21129:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21114:3:61"},"nodeType":"YulFunctionCall","src":"21114:17:61"}],"functionName":{"name":"abi_encode_t_contract$_ISuperToken_$7015_to_t_address_fromStack","nodeType":"YulIdentifier","src":"21041:63:61"},"nodeType":"YulFunctionCall","src":"21041:91:61"},"nodeType":"YulExpressionStatement","src":"21041:91:61"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"21186:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21199:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"21210:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21195:3:61"},"nodeType":"YulFunctionCall","src":"21195:18:61"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"21142:43:61"},"nodeType":"YulFunctionCall","src":"21142:72:61"},"nodeType":"YulExpressionStatement","src":"21142:72:61"},{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"21268:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21281:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"21292:2:61","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21277:3:61"},"nodeType":"YulFunctionCall","src":"21277:18:61"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"21224:43:61"},"nodeType":"YulFunctionCall","src":"21224:72:61"},"nodeType":"YulExpressionStatement","src":"21224:72:61"}]},"name":"abi_encode_tuple_t_contract$_ISuperToken_$7015_t_address_t_address__to_t_address_t_address_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"20951:9:61","type":""},{"name":"value2","nodeType":"YulTypedName","src":"20963:6:61","type":""},{"name":"value1","nodeType":"YulTypedName","src":"20971:6:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"20979:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"20990:4:61","type":""}],"src":"20821:482:61"},{"body":{"nodeType":"YulBlock","src":"21372:80:61","statements":[{"nodeType":"YulAssignment","src":"21382:22:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"21397:6:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"21391:5:61"},"nodeType":"YulFunctionCall","src":"21391:13:61"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"21382:5:61"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"21440:5:61"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"21413:26:61"},"nodeType":"YulFunctionCall","src":"21413:33:61"},"nodeType":"YulExpressionStatement","src":"21413:33:61"}]},"name":"abi_decode_t_uint256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"21350:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"21358:3:61","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"21366:5:61","type":""}],"src":"21309:143:61"},{"body":{"nodeType":"YulBlock","src":"21519:78:61","statements":[{"nodeType":"YulAssignment","src":"21529:22:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"21544:6:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"21538:5:61"},"nodeType":"YulFunctionCall","src":"21538:13:61"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"21529:5:61"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"21585:5:61"}],"functionName":{"name":"validator_revert_t_int96","nodeType":"YulIdentifier","src":"21560:24:61"},"nodeType":"YulFunctionCall","src":"21560:31:61"},"nodeType":"YulExpressionStatement","src":"21560:31:61"}]},"name":"abi_decode_t_int96_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"21497:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"21505:3:61","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"21513:5:61","type":""}],"src":"21458:139:61"},{"body":{"nodeType":"YulBlock","src":"21729:690:61","statements":[{"body":{"nodeType":"YulBlock","src":"21776:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"21778:77:61"},"nodeType":"YulFunctionCall","src":"21778:79:61"},"nodeType":"YulExpressionStatement","src":"21778:79:61"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"21750:7:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"21759:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"21746:3:61"},"nodeType":"YulFunctionCall","src":"21746:23:61"},{"kind":"number","nodeType":"YulLiteral","src":"21771:3:61","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"21742:3:61"},"nodeType":"YulFunctionCall","src":"21742:33:61"},"nodeType":"YulIf","src":"21739:120:61"},{"nodeType":"YulBlock","src":"21869:128:61","statements":[{"nodeType":"YulVariableDeclaration","src":"21884:15:61","value":{"kind":"number","nodeType":"YulLiteral","src":"21898:1:61","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"21888:6:61","type":""}]},{"nodeType":"YulAssignment","src":"21913:74:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21959:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"21970:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21955:3:61"},"nodeType":"YulFunctionCall","src":"21955:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"21979:7:61"}],"functionName":{"name":"abi_decode_t_uint256_fromMemory","nodeType":"YulIdentifier","src":"21923:31:61"},"nodeType":"YulFunctionCall","src":"21923:64:61"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"21913:6:61"}]}]},{"nodeType":"YulBlock","src":"22007:127:61","statements":[{"nodeType":"YulVariableDeclaration","src":"22022:16:61","value":{"kind":"number","nodeType":"YulLiteral","src":"22036:2:61","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"22026:6:61","type":""}]},{"nodeType":"YulAssignment","src":"22052:72:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22096:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"22107:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22092:3:61"},"nodeType":"YulFunctionCall","src":"22092:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"22116:7:61"}],"functionName":{"name":"abi_decode_t_int96_fromMemory","nodeType":"YulIdentifier","src":"22062:29:61"},"nodeType":"YulFunctionCall","src":"22062:62:61"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"22052:6:61"}]}]},{"nodeType":"YulBlock","src":"22144:129:61","statements":[{"nodeType":"YulVariableDeclaration","src":"22159:16:61","value":{"kind":"number","nodeType":"YulLiteral","src":"22173:2:61","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"22163:6:61","type":""}]},{"nodeType":"YulAssignment","src":"22189:74:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22235:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"22246:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22231:3:61"},"nodeType":"YulFunctionCall","src":"22231:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"22255:7:61"}],"functionName":{"name":"abi_decode_t_uint256_fromMemory","nodeType":"YulIdentifier","src":"22199:31:61"},"nodeType":"YulFunctionCall","src":"22199:64:61"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"22189:6:61"}]}]},{"nodeType":"YulBlock","src":"22283:129:61","statements":[{"nodeType":"YulVariableDeclaration","src":"22298:16:61","value":{"kind":"number","nodeType":"YulLiteral","src":"22312:2:61","type":"","value":"96"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"22302:6:61","type":""}]},{"nodeType":"YulAssignment","src":"22328:74:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22374:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"22385:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22370:3:61"},"nodeType":"YulFunctionCall","src":"22370:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"22394:7:61"}],"functionName":{"name":"abi_decode_t_uint256_fromMemory","nodeType":"YulIdentifier","src":"22338:31:61"},"nodeType":"YulFunctionCall","src":"22338:64:61"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"22328:6:61"}]}]}]},"name":"abi_decode_tuple_t_uint256t_int96t_uint256t_uint256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"21675:9:61","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"21686:7:61","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"21698:6:61","type":""},{"name":"value1","nodeType":"YulTypedName","src":"21706:6:61","type":""},{"name":"value2","nodeType":"YulTypedName","src":"21714:6:61","type":""},{"name":"value3","nodeType":"YulTypedName","src":"21722:6:61","type":""}],"src":"21603:816:61"},{"body":{"nodeType":"YulBlock","src":"22645:460:61","statements":[{"nodeType":"YulAssignment","src":"22655:27:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22667:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"22678:3:61","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22663:3:61"},"nodeType":"YulFunctionCall","src":"22663:19:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"22655:4:61"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"22756:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22769:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"22780:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22765:3:61"},"nodeType":"YulFunctionCall","src":"22765:17:61"}],"functionName":{"name":"abi_encode_t_contract$_ISuperToken_$7015_to_t_address_fromStack","nodeType":"YulIdentifier","src":"22692:63:61"},"nodeType":"YulFunctionCall","src":"22692:91:61"},"nodeType":"YulExpressionStatement","src":"22692:91:61"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"22837:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22850:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"22861:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22846:3:61"},"nodeType":"YulFunctionCall","src":"22846:18:61"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"22793:43:61"},"nodeType":"YulFunctionCall","src":"22793:72:61"},"nodeType":"YulExpressionStatement","src":"22793:72:61"},{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"22919:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22932:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"22943:2:61","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22928:3:61"},"nodeType":"YulFunctionCall","src":"22928:18:61"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"22875:43:61"},"nodeType":"YulFunctionCall","src":"22875:72:61"},"nodeType":"YulExpressionStatement","src":"22875:72:61"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22968:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"22979:2:61","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22964:3:61"},"nodeType":"YulFunctionCall","src":"22964:18:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"22988:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"22994:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"22984:3:61"},"nodeType":"YulFunctionCall","src":"22984:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22957:6:61"},"nodeType":"YulFunctionCall","src":"22957:48:61"},"nodeType":"YulExpressionStatement","src":"22957:48:61"},{"nodeType":"YulAssignment","src":"23014:84:61","value":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"23084:6:61"},{"name":"tail","nodeType":"YulIdentifier","src":"23093:4:61"}],"functionName":{"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"23022:61:61"},"nodeType":"YulFunctionCall","src":"23022:76:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"23014:4:61"}]}]},"name":"abi_encode_tuple_t_contract$_ISuperToken_$7015_t_address_t_address_t_bytes_memory_ptr__to_t_address_t_address_t_address_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"22593:9:61","type":""},{"name":"value3","nodeType":"YulTypedName","src":"22605:6:61","type":""},{"name":"value2","nodeType":"YulTypedName","src":"22613:6:61","type":""},{"name":"value1","nodeType":"YulTypedName","src":"22621:6:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"22629:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"22640:4:61","type":""}],"src":"22425:680:61"},{"body":{"nodeType":"YulBlock","src":"23204:66:61","statements":[{"nodeType":"YulAssignment","src":"23214:50:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"23258:5:61"}],"functionName":{"name":"convert_t_uint160_to_t_address","nodeType":"YulIdentifier","src":"23227:30:61"},"nodeType":"YulFunctionCall","src":"23227:37:61"},"variableNames":[{"name":"converted","nodeType":"YulIdentifier","src":"23214:9:61"}]}]},"name":"convert_t_contract$_IConstantFlowAgreementV1_$5555_to_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"23184:5:61","type":""}],"returnVariables":[{"name":"converted","nodeType":"YulTypedName","src":"23194:9:61","type":""}],"src":"23111:159:61"},{"body":{"nodeType":"YulBlock","src":"23374:99:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"23391:3:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"23460:5:61"}],"functionName":{"name":"convert_t_contract$_IConstantFlowAgreementV1_$5555_to_t_address","nodeType":"YulIdentifier","src":"23396:63:61"},"nodeType":"YulFunctionCall","src":"23396:70:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"23384:6:61"},"nodeType":"YulFunctionCall","src":"23384:83:61"},"nodeType":"YulExpressionStatement","src":"23384:83:61"}]},"name":"abi_encode_t_contract$_IConstantFlowAgreementV1_$5555_to_t_address_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"23362:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"23369:3:61","type":""}],"src":"23276:197:61"},{"body":{"nodeType":"YulBlock","src":"23702:459:61","statements":[{"nodeType":"YulAssignment","src":"23712:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23724:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"23735:2:61","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23720:3:61"},"nodeType":"YulFunctionCall","src":"23720:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"23712:4:61"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"23825:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23838:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"23849:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23834:3:61"},"nodeType":"YulFunctionCall","src":"23834:17:61"}],"functionName":{"name":"abi_encode_t_contract$_IConstantFlowAgreementV1_$5555_to_t_address_fromStack","nodeType":"YulIdentifier","src":"23748:76:61"},"nodeType":"YulFunctionCall","src":"23748:104:61"},"nodeType":"YulExpressionStatement","src":"23748:104:61"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23873:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"23884:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23869:3:61"},"nodeType":"YulFunctionCall","src":"23869:18:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"23893:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"23899:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"23889:3:61"},"nodeType":"YulFunctionCall","src":"23889:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"23862:6:61"},"nodeType":"YulFunctionCall","src":"23862:48:61"},"nodeType":"YulExpressionStatement","src":"23862:48:61"},{"nodeType":"YulAssignment","src":"23919:84:61","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"23989:6:61"},{"name":"tail","nodeType":"YulIdentifier","src":"23998:4:61"}],"functionName":{"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"23927:61:61"},"nodeType":"YulFunctionCall","src":"23927:76:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"23919:4:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24024:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"24035:2:61","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24020:3:61"},"nodeType":"YulFunctionCall","src":"24020:18:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"24044:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"24050:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"24040:3:61"},"nodeType":"YulFunctionCall","src":"24040:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"24013:6:61"},"nodeType":"YulFunctionCall","src":"24013:48:61"},"nodeType":"YulExpressionStatement","src":"24013:48:61"},{"nodeType":"YulAssignment","src":"24070:84:61","value":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"24140:6:61"},{"name":"tail","nodeType":"YulIdentifier","src":"24149:4:61"}],"functionName":{"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"24078:61:61"},"nodeType":"YulFunctionCall","src":"24078:76:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"24070:4:61"}]}]},"name":"abi_encode_tuple_t_contract$_IConstantFlowAgreementV1_$5555_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"23658:9:61","type":""},{"name":"value2","nodeType":"YulTypedName","src":"23670:6:61","type":""},{"name":"value1","nodeType":"YulTypedName","src":"23678:6:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"23686:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"23697:4:61","type":""}],"src":"23479:682:61"},{"body":{"nodeType":"YulBlock","src":"24256:28:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"24273:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"24276:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"24266:6:61"},"nodeType":"YulFunctionCall","src":"24266:12:61"},"nodeType":"YulExpressionStatement","src":"24266:12:61"}]},"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulFunctionDefinition","src":"24167:117:61"},{"body":{"nodeType":"YulBlock","src":"24379:28:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"24396:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"24399:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"24389:6:61"},"nodeType":"YulFunctionCall","src":"24389:12:61"},"nodeType":"YulExpressionStatement","src":"24389:12:61"}]},"name":"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae","nodeType":"YulFunctionDefinition","src":"24290:117:61"},{"body":{"nodeType":"YulBlock","src":"24456:238:61","statements":[{"nodeType":"YulVariableDeclaration","src":"24466:58:61","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"24488:6:61"},{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"24518:4:61"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"24496:21:61"},"nodeType":"YulFunctionCall","src":"24496:27:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24484:3:61"},"nodeType":"YulFunctionCall","src":"24484:40:61"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"24470:10:61","type":""}]},{"body":{"nodeType":"YulBlock","src":"24635:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"24637:16:61"},"nodeType":"YulFunctionCall","src":"24637:18:61"},"nodeType":"YulExpressionStatement","src":"24637:18:61"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"24578:10:61"},{"kind":"number","nodeType":"YulLiteral","src":"24590:18:61","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"24575:2:61"},"nodeType":"YulFunctionCall","src":"24575:34:61"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"24614:10:61"},{"name":"memPtr","nodeType":"YulIdentifier","src":"24626:6:61"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"24611:2:61"},"nodeType":"YulFunctionCall","src":"24611:22:61"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"24572:2:61"},"nodeType":"YulFunctionCall","src":"24572:62:61"},"nodeType":"YulIf","src":"24569:88:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"24673:2:61","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"24677:10:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"24666:6:61"},"nodeType":"YulFunctionCall","src":"24666:22:61"},"nodeType":"YulExpressionStatement","src":"24666:22:61"}]},"name":"finalize_allocation","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"24442:6:61","type":""},{"name":"size","nodeType":"YulTypedName","src":"24450:4:61","type":""}],"src":"24413:281:61"},{"body":{"nodeType":"YulBlock","src":"24741:88:61","statements":[{"nodeType":"YulAssignment","src":"24751:30:61","value":{"arguments":[],"functionName":{"name":"allocate_unbounded","nodeType":"YulIdentifier","src":"24761:18:61"},"nodeType":"YulFunctionCall","src":"24761:20:61"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"24751:6:61"}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"24810:6:61"},{"name":"size","nodeType":"YulIdentifier","src":"24818:4:61"}],"functionName":{"name":"finalize_allocation","nodeType":"YulIdentifier","src":"24790:19:61"},"nodeType":"YulFunctionCall","src":"24790:33:61"},"nodeType":"YulExpressionStatement","src":"24790:33:61"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"24725:4:61","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"24734:6:61","type":""}],"src":"24700:129:61"},{"body":{"nodeType":"YulBlock","src":"24901:241:61","statements":[{"body":{"nodeType":"YulBlock","src":"25006:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"25008:16:61"},"nodeType":"YulFunctionCall","src":"25008:18:61"},"nodeType":"YulExpressionStatement","src":"25008:18:61"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"24978:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"24986:18:61","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"24975:2:61"},"nodeType":"YulFunctionCall","src":"24975:30:61"},"nodeType":"YulIf","src":"24972:56:61"},{"nodeType":"YulAssignment","src":"25038:37:61","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"25068:6:61"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"25046:21:61"},"nodeType":"YulFunctionCall","src":"25046:29:61"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"25038:4:61"}]},{"nodeType":"YulAssignment","src":"25112:23:61","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"25124:4:61"},{"kind":"number","nodeType":"YulLiteral","src":"25130:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"25120:3:61"},"nodeType":"YulFunctionCall","src":"25120:15:61"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"25112:4:61"}]}]},"name":"array_allocation_size_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"24885:6:61","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"24896:4:61","type":""}],"src":"24835:307:61"},{"body":{"nodeType":"YulBlock","src":"25242:338:61","statements":[{"nodeType":"YulAssignment","src":"25252:74:61","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"25318:6:61"}],"functionName":{"name":"array_allocation_size_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"25277:40:61"},"nodeType":"YulFunctionCall","src":"25277:48:61"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"25261:15:61"},"nodeType":"YulFunctionCall","src":"25261:65:61"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"25252:5:61"}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"25342:5:61"},{"name":"length","nodeType":"YulIdentifier","src":"25349:6:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"25335:6:61"},"nodeType":"YulFunctionCall","src":"25335:21:61"},"nodeType":"YulExpressionStatement","src":"25335:21:61"},{"nodeType":"YulVariableDeclaration","src":"25365:27:61","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"25380:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"25387:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"25376:3:61"},"nodeType":"YulFunctionCall","src":"25376:16:61"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"25369:3:61","type":""}]},{"body":{"nodeType":"YulBlock","src":"25430:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae","nodeType":"YulIdentifier","src":"25432:77:61"},"nodeType":"YulFunctionCall","src":"25432:79:61"},"nodeType":"YulExpressionStatement","src":"25432:79:61"}]},"condition":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"25411:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"25416:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"25407:3:61"},"nodeType":"YulFunctionCall","src":"25407:16:61"},{"name":"end","nodeType":"YulIdentifier","src":"25425:3:61"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"25404:2:61"},"nodeType":"YulFunctionCall","src":"25404:25:61"},"nodeType":"YulIf","src":"25401:112:61"},{"expression":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"25557:3:61"},{"name":"dst","nodeType":"YulIdentifier","src":"25562:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"25567:6:61"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"25522:34:61"},"nodeType":"YulFunctionCall","src":"25522:52:61"},"nodeType":"YulExpressionStatement","src":"25522:52:61"}]},"name":"abi_decode_available_length_t_bytes_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"25215:3:61","type":""},{"name":"length","nodeType":"YulTypedName","src":"25220:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"25228:3:61","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"25236:5:61","type":""}],"src":"25148:432:61"},{"body":{"nodeType":"YulBlock","src":"25671:281:61","statements":[{"body":{"nodeType":"YulBlock","src":"25720:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"25722:77:61"},"nodeType":"YulFunctionCall","src":"25722:79:61"},"nodeType":"YulExpressionStatement","src":"25722:79:61"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"25699:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"25707:4:61","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"25695:3:61"},"nodeType":"YulFunctionCall","src":"25695:17:61"},{"name":"end","nodeType":"YulIdentifier","src":"25714:3:61"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"25691:3:61"},"nodeType":"YulFunctionCall","src":"25691:27:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"25684:6:61"},"nodeType":"YulFunctionCall","src":"25684:35:61"},"nodeType":"YulIf","src":"25681:122:61"},{"nodeType":"YulVariableDeclaration","src":"25812:27:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"25832:6:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"25826:5:61"},"nodeType":"YulFunctionCall","src":"25826:13:61"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"25816:6:61","type":""}]},{"nodeType":"YulAssignment","src":"25848:98:61","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"25919:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"25927:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"25915:3:61"},"nodeType":"YulFunctionCall","src":"25915:17:61"},{"name":"length","nodeType":"YulIdentifier","src":"25934:6:61"},{"name":"end","nodeType":"YulIdentifier","src":"25942:3:61"}],"functionName":{"name":"abi_decode_available_length_t_bytes_memory_ptr_fromMemory","nodeType":"YulIdentifier","src":"25857:57:61"},"nodeType":"YulFunctionCall","src":"25857:89:61"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"25848:5:61"}]}]},"name":"abi_decode_t_bytes_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"25649:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"25657:3:61","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"25665:5:61","type":""}],"src":"25599:353:61"},{"body":{"nodeType":"YulBlock","src":"26044:436:61","statements":[{"body":{"nodeType":"YulBlock","src":"26090:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"26092:77:61"},"nodeType":"YulFunctionCall","src":"26092:79:61"},"nodeType":"YulExpressionStatement","src":"26092:79:61"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"26065:7:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"26074:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"26061:3:61"},"nodeType":"YulFunctionCall","src":"26061:23:61"},{"kind":"number","nodeType":"YulLiteral","src":"26086:2:61","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"26057:3:61"},"nodeType":"YulFunctionCall","src":"26057:32:61"},"nodeType":"YulIf","src":"26054:119:61"},{"nodeType":"YulBlock","src":"26183:290:61","statements":[{"nodeType":"YulVariableDeclaration","src":"26198:38:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"26222:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"26233:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26218:3:61"},"nodeType":"YulFunctionCall","src":"26218:17:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"26212:5:61"},"nodeType":"YulFunctionCall","src":"26212:24:61"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"26202:6:61","type":""}]},{"body":{"nodeType":"YulBlock","src":"26283:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"26285:77:61"},"nodeType":"YulFunctionCall","src":"26285:79:61"},"nodeType":"YulExpressionStatement","src":"26285:79:61"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"26255:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"26263:18:61","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"26252:2:61"},"nodeType":"YulFunctionCall","src":"26252:30:61"},"nodeType":"YulIf","src":"26249:117:61"},{"nodeType":"YulAssignment","src":"26380:83:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"26435:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"26446:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26431:3:61"},"nodeType":"YulFunctionCall","src":"26431:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"26455:7:61"}],"functionName":{"name":"abi_decode_t_bytes_memory_ptr_fromMemory","nodeType":"YulIdentifier","src":"26390:40:61"},"nodeType":"YulFunctionCall","src":"26390:73:61"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"26380:6:61"}]}]}]},"name":"abi_decode_tuple_t_bytes_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"26014:9:61","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"26025:7:61","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"26037:6:61","type":""}],"src":"25958:522:61"},{"body":{"nodeType":"YulBlock","src":"26702:456:61","statements":[{"nodeType":"YulAssignment","src":"26712:27:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"26724:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"26735:3:61","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26720:3:61"},"nodeType":"YulFunctionCall","src":"26720:19:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"26712:4:61"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"26813:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"26826:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"26837:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26822:3:61"},"nodeType":"YulFunctionCall","src":"26822:17:61"}],"functionName":{"name":"abi_encode_t_contract$_ISuperToken_$7015_to_t_address_fromStack","nodeType":"YulIdentifier","src":"26749:63:61"},"nodeType":"YulFunctionCall","src":"26749:91:61"},"nodeType":"YulExpressionStatement","src":"26749:91:61"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"26894:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"26907:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"26918:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26903:3:61"},"nodeType":"YulFunctionCall","src":"26903:18:61"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"26850:43:61"},"nodeType":"YulFunctionCall","src":"26850:72:61"},"nodeType":"YulExpressionStatement","src":"26850:72:61"},{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"26972:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"26985:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"26996:2:61","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26981:3:61"},"nodeType":"YulFunctionCall","src":"26981:18:61"}],"functionName":{"name":"abi_encode_t_int96_to_t_int96_fromStack","nodeType":"YulIdentifier","src":"26932:39:61"},"nodeType":"YulFunctionCall","src":"26932:68:61"},"nodeType":"YulExpressionStatement","src":"26932:68:61"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"27021:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"27032:2:61","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"27017:3:61"},"nodeType":"YulFunctionCall","src":"27017:18:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"27041:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"27047:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"27037:3:61"},"nodeType":"YulFunctionCall","src":"27037:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"27010:6:61"},"nodeType":"YulFunctionCall","src":"27010:48:61"},"nodeType":"YulExpressionStatement","src":"27010:48:61"},{"nodeType":"YulAssignment","src":"27067:84:61","value":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"27137:6:61"},{"name":"tail","nodeType":"YulIdentifier","src":"27146:4:61"}],"functionName":{"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"27075:61:61"},"nodeType":"YulFunctionCall","src":"27075:76:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"27067:4:61"}]}]},"name":"abi_encode_tuple_t_contract$_ISuperToken_$7015_t_address_t_int96_t_bytes_memory_ptr__to_t_address_t_address_t_int96_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"26650:9:61","type":""},{"name":"value3","nodeType":"YulTypedName","src":"26662:6:61","type":""},{"name":"value2","nodeType":"YulTypedName","src":"26670:6:61","type":""},{"name":"value1","nodeType":"YulTypedName","src":"26678:6:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"26686:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"26697:4:61","type":""}],"src":"26486:672:61"},{"body":{"nodeType":"YulBlock","src":"27290:206:61","statements":[{"nodeType":"YulAssignment","src":"27300:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"27312:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"27323:2:61","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"27308:3:61"},"nodeType":"YulFunctionCall","src":"27308:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"27300:4:61"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"27380:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"27393:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"27404:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"27389:3:61"},"nodeType":"YulFunctionCall","src":"27389:17:61"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"27336:43:61"},"nodeType":"YulFunctionCall","src":"27336:71:61"},"nodeType":"YulExpressionStatement","src":"27336:71:61"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"27461:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"27474:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"27485:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"27470:3:61"},"nodeType":"YulFunctionCall","src":"27470:18:61"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"27417:43:61"},"nodeType":"YulFunctionCall","src":"27417:72:61"},"nodeType":"YulExpressionStatement","src":"27417:72:61"}]},"name":"abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"27254:9:61","type":""},{"name":"value1","nodeType":"YulTypedName","src":"27266:6:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"27274:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"27285:4:61","type":""}],"src":"27164:332:61"},{"body":{"nodeType":"YulBlock","src":"27579:274:61","statements":[{"body":{"nodeType":"YulBlock","src":"27625:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"27627:77:61"},"nodeType":"YulFunctionCall","src":"27627:79:61"},"nodeType":"YulExpressionStatement","src":"27627:79:61"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"27600:7:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"27609:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"27596:3:61"},"nodeType":"YulFunctionCall","src":"27596:23:61"},{"kind":"number","nodeType":"YulLiteral","src":"27621:2:61","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"27592:3:61"},"nodeType":"YulFunctionCall","src":"27592:32:61"},"nodeType":"YulIf","src":"27589:119:61"},{"nodeType":"YulBlock","src":"27718:128:61","statements":[{"nodeType":"YulVariableDeclaration","src":"27733:15:61","value":{"kind":"number","nodeType":"YulLiteral","src":"27747:1:61","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"27737:6:61","type":""}]},{"nodeType":"YulAssignment","src":"27762:74:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"27808:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"27819:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"27804:3:61"},"nodeType":"YulFunctionCall","src":"27804:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"27828:7:61"}],"functionName":{"name":"abi_decode_t_uint256_fromMemory","nodeType":"YulIdentifier","src":"27772:31:61"},"nodeType":"YulFunctionCall","src":"27772:64:61"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"27762:6:61"}]}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"27549:9:61","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"27560:7:61","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"27572:6:61","type":""}],"src":"27502:351:61"},{"body":{"nodeType":"YulBlock","src":"27957:124:61","statements":[{"nodeType":"YulAssignment","src":"27967:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"27979:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"27990:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"27975:3:61"},"nodeType":"YulFunctionCall","src":"27975:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"27967:4:61"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"28047:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"28060:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"28071:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"28056:3:61"},"nodeType":"YulFunctionCall","src":"28056:17:61"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"28003:43:61"},"nodeType":"YulFunctionCall","src":"28003:71:61"},"nodeType":"YulExpressionStatement","src":"28003:71:61"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"27929:9:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"27941:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"27952:4:61","type":""}],"src":"27859:222:61"},{"body":{"nodeType":"YulBlock","src":"28150:80:61","statements":[{"nodeType":"YulAssignment","src":"28160:22:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"28175:6:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"28169:5:61"},"nodeType":"YulFunctionCall","src":"28169:13:61"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"28160:5:61"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"28218:5:61"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"28191:26:61"},"nodeType":"YulFunctionCall","src":"28191:33:61"},"nodeType":"YulExpressionStatement","src":"28191:33:61"}]},"name":"abi_decode_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"28128:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"28136:3:61","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"28144:5:61","type":""}],"src":"28087:143:61"},{"body":{"nodeType":"YulBlock","src":"28313:274:61","statements":[{"body":{"nodeType":"YulBlock","src":"28359:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"28361:77:61"},"nodeType":"YulFunctionCall","src":"28361:79:61"},"nodeType":"YulExpressionStatement","src":"28361:79:61"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"28334:7:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"28343:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"28330:3:61"},"nodeType":"YulFunctionCall","src":"28330:23:61"},{"kind":"number","nodeType":"YulLiteral","src":"28355:2:61","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"28326:3:61"},"nodeType":"YulFunctionCall","src":"28326:32:61"},"nodeType":"YulIf","src":"28323:119:61"},{"nodeType":"YulBlock","src":"28452:128:61","statements":[{"nodeType":"YulVariableDeclaration","src":"28467:15:61","value":{"kind":"number","nodeType":"YulLiteral","src":"28481:1:61","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"28471:6:61","type":""}]},{"nodeType":"YulAssignment","src":"28496:74:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"28542:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"28553:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"28538:3:61"},"nodeType":"YulFunctionCall","src":"28538:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"28562:7:61"}],"functionName":{"name":"abi_decode_t_address_fromMemory","nodeType":"YulIdentifier","src":"28506:31:61"},"nodeType":"YulFunctionCall","src":"28506:64:61"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"28496:6:61"}]}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"28283:9:61","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"28294:7:61","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"28306:6:61","type":""}],"src":"28236:351:61"},{"body":{"nodeType":"YulBlock","src":"28722:32:61","statements":[{"nodeType":"YulAssignment","src":"28732:16:61","value":{"name":"value","nodeType":"YulIdentifier","src":"28743:5:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"28732:7:61"}]}]},"name":"cleanup_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"28704:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"28714:7:61","type":""}],"src":"28593:161:61"},{"body":{"nodeType":"YulBlock","src":"28801:51:61","statements":[{"nodeType":"YulAssignment","src":"28811:34:61","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"28836:1:61","type":"","value":"0"},{"name":"value","nodeType":"YulIdentifier","src":"28839:5:61"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"28832:3:61"},"nodeType":"YulFunctionCall","src":"28832:13:61"},"variableNames":[{"name":"newValue","nodeType":"YulIdentifier","src":"28811:8:61"}]}]},"name":"shift_left_0","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"28782:5:61","type":""}],"returnVariables":[{"name":"newValue","nodeType":"YulTypedName","src":"28792:8:61","type":""}],"src":"28760:92:61"},{"body":{"nodeType":"YulBlock","src":"29002:170:61","statements":[{"nodeType":"YulAssignment","src":"29012:154:61","value":{"arguments":[{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"29158:5:61"}],"functionName":{"name":"cleanup_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1","nodeType":"YulIdentifier","src":"29056:101:61"},"nodeType":"YulFunctionCall","src":"29056:108:61"}],"functionName":{"name":"shift_left_0","nodeType":"YulIdentifier","src":"29043:12:61"},"nodeType":"YulFunctionCall","src":"29043:122:61"}],"functionName":{"name":"cleanup_t_bytes32","nodeType":"YulIdentifier","src":"29025:17:61"},"nodeType":"YulFunctionCall","src":"29025:141:61"},"variableNames":[{"name":"converted","nodeType":"YulIdentifier","src":"29012:9:61"}]}]},"name":"convert_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1_to_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"28982:5:61","type":""}],"returnVariables":[{"name":"converted","nodeType":"YulTypedName","src":"28992:9:61","type":""}],"src":"28858:314:61"},{"body":{"nodeType":"YulBlock","src":"29327:150:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"29344:3:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"29464:5:61"}],"functionName":{"name":"convert_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1_to_t_bytes32","nodeType":"YulIdentifier","src":"29349:114:61"},"nodeType":"YulFunctionCall","src":"29349:121:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"29337:6:61"},"nodeType":"YulFunctionCall","src":"29337:134:61"},"nodeType":"YulExpressionStatement","src":"29337:134:61"}]},"name":"abi_encode_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1_to_t_bytes32_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"29315:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"29322:3:61","type":""}],"src":"29178:299:61"},{"body":{"nodeType":"YulBlock","src":"29665:208:61","statements":[{"nodeType":"YulAssignment","src":"29675:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"29687:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"29698:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"29683:3:61"},"nodeType":"YulFunctionCall","src":"29683:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"29675:4:61"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"29839:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"29852:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"29863:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"29848:3:61"},"nodeType":"YulFunctionCall","src":"29848:17:61"}],"functionName":{"name":"abi_encode_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1_to_t_bytes32_fromStack","nodeType":"YulIdentifier","src":"29711:127:61"},"nodeType":"YulFunctionCall","src":"29711:155:61"},"nodeType":"YulExpressionStatement","src":"29711:155:61"}]},"name":"abi_encode_tuple_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1__to_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"29637:9:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"29649:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"29660:4:61","type":""}],"src":"29483:390:61"},{"body":{"nodeType":"YulBlock","src":"29948:51:61","statements":[{"nodeType":"YulAssignment","src":"29958:35:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"29987:5:61"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"29969:17:61"},"nodeType":"YulFunctionCall","src":"29969:24:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"29958:7:61"}]}]},"name":"cleanup_t_contract$_ISuperAgreement_$6463","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"29930:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"29940:7:61","type":""}],"src":"29879:120:61"},{"body":{"nodeType":"YulBlock","src":"30072:103:61","statements":[{"body":{"nodeType":"YulBlock","src":"30153:16:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"30162:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"30165:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"30155:6:61"},"nodeType":"YulFunctionCall","src":"30155:12:61"},"nodeType":"YulExpressionStatement","src":"30155:12:61"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"30095:5:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"30144:5:61"}],"functionName":{"name":"cleanup_t_contract$_ISuperAgreement_$6463","nodeType":"YulIdentifier","src":"30102:41:61"},"nodeType":"YulFunctionCall","src":"30102:48:61"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"30092:2:61"},"nodeType":"YulFunctionCall","src":"30092:59:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"30085:6:61"},"nodeType":"YulFunctionCall","src":"30085:67:61"},"nodeType":"YulIf","src":"30082:87:61"}]},"name":"validator_revert_t_contract$_ISuperAgreement_$6463","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"30065:5:61","type":""}],"src":"30005:170:61"},{"body":{"nodeType":"YulBlock","src":"30268:104:61","statements":[{"nodeType":"YulAssignment","src":"30278:22:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"30293:6:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"30287:5:61"},"nodeType":"YulFunctionCall","src":"30287:13:61"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"30278:5:61"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"30360:5:61"}],"functionName":{"name":"validator_revert_t_contract$_ISuperAgreement_$6463","nodeType":"YulIdentifier","src":"30309:50:61"},"nodeType":"YulFunctionCall","src":"30309:57:61"},"nodeType":"YulExpressionStatement","src":"30309:57:61"}]},"name":"abi_decode_t_contract$_ISuperAgreement_$6463_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"30246:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"30254:3:61","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"30262:5:61","type":""}],"src":"30181:191:61"},{"body":{"nodeType":"YulBlock","src":"30479:298:61","statements":[{"body":{"nodeType":"YulBlock","src":"30525:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"30527:77:61"},"nodeType":"YulFunctionCall","src":"30527:79:61"},"nodeType":"YulExpressionStatement","src":"30527:79:61"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"30500:7:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"30509:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"30496:3:61"},"nodeType":"YulFunctionCall","src":"30496:23:61"},{"kind":"number","nodeType":"YulLiteral","src":"30521:2:61","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"30492:3:61"},"nodeType":"YulFunctionCall","src":"30492:32:61"},"nodeType":"YulIf","src":"30489:119:61"},{"nodeType":"YulBlock","src":"30618:152:61","statements":[{"nodeType":"YulVariableDeclaration","src":"30633:15:61","value":{"kind":"number","nodeType":"YulLiteral","src":"30647:1:61","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"30637:6:61","type":""}]},{"nodeType":"YulAssignment","src":"30662:98:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"30732:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"30743:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"30728:3:61"},"nodeType":"YulFunctionCall","src":"30728:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"30752:7:61"}],"functionName":{"name":"abi_decode_t_contract$_ISuperAgreement_$6463_fromMemory","nodeType":"YulIdentifier","src":"30672:55:61"},"nodeType":"YulFunctionCall","src":"30672:88:61"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"30662:6:61"}]}]}]},"name":"abi_decode_tuple_t_contract$_ISuperAgreement_$6463_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"30449:9:61","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"30460:7:61","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"30472:6:61","type":""}],"src":"30378:399:61"},{"body":{"nodeType":"YulBlock","src":"30811:152:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"30828:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"30831:77:61","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"30821:6:61"},"nodeType":"YulFunctionCall","src":"30821:88:61"},"nodeType":"YulExpressionStatement","src":"30821:88:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"30925:1:61","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"30928:4:61","type":"","value":"0x01"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"30918:6:61"},"nodeType":"YulFunctionCall","src":"30918:15:61"},"nodeType":"YulExpressionStatement","src":"30918:15:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"30949:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"30952:4:61","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"30942:6:61"},"nodeType":"YulFunctionCall","src":"30942:15:61"},"nodeType":"YulExpressionStatement","src":"30942:15:61"}]},"name":"panic_error_0x01","nodeType":"YulFunctionDefinition","src":"30783:180:61"},{"body":{"nodeType":"YulBlock","src":"31111:222:61","statements":[{"nodeType":"YulAssignment","src":"31121:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"31133:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"31144:2:61","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"31129:3:61"},"nodeType":"YulFunctionCall","src":"31129:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"31121:4:61"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"31221:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"31234:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"31245:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"31230:3:61"},"nodeType":"YulFunctionCall","src":"31230:17:61"}],"functionName":{"name":"abi_encode_t_contract$_ISuperToken_$7015_to_t_address_fromStack","nodeType":"YulIdentifier","src":"31157:63:61"},"nodeType":"YulFunctionCall","src":"31157:91:61"},"nodeType":"YulExpressionStatement","src":"31157:91:61"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"31298:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"31311:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"31322:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"31307:3:61"},"nodeType":"YulFunctionCall","src":"31307:18:61"}],"functionName":{"name":"abi_encode_t_int96_to_t_int96_fromStack","nodeType":"YulIdentifier","src":"31258:39:61"},"nodeType":"YulFunctionCall","src":"31258:68:61"},"nodeType":"YulExpressionStatement","src":"31258:68:61"}]},"name":"abi_encode_tuple_t_contract$_ISuperToken_$7015_t_int96__to_t_address_t_int96__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"31075:9:61","type":""},{"name":"value1","nodeType":"YulTypedName","src":"31087:6:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"31095:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"31106:4:61","type":""}],"src":"30969:364:61"},{"body":{"nodeType":"YulBlock","src":"31485:226:61","statements":[{"nodeType":"YulAssignment","src":"31495:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"31507:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"31518:2:61","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"31503:3:61"},"nodeType":"YulFunctionCall","src":"31503:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"31495:4:61"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"31595:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"31608:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"31619:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"31604:3:61"},"nodeType":"YulFunctionCall","src":"31604:17:61"}],"functionName":{"name":"abi_encode_t_contract$_ISuperToken_$7015_to_t_address_fromStack","nodeType":"YulIdentifier","src":"31531:63:61"},"nodeType":"YulFunctionCall","src":"31531:91:61"},"nodeType":"YulExpressionStatement","src":"31531:91:61"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"31676:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"31689:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"31700:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"31685:3:61"},"nodeType":"YulFunctionCall","src":"31685:18:61"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"31632:43:61"},"nodeType":"YulFunctionCall","src":"31632:72:61"},"nodeType":"YulExpressionStatement","src":"31632:72:61"}]},"name":"abi_encode_tuple_t_contract$_ISuperToken_$7015_t_address__to_t_address_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"31449:9:61","type":""},{"name":"value1","nodeType":"YulTypedName","src":"31461:6:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"31469:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"31480:4:61","type":""}],"src":"31339:372:61"},{"body":{"nodeType":"YulBlock","src":"31792:272:61","statements":[{"body":{"nodeType":"YulBlock","src":"31838:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"31840:77:61"},"nodeType":"YulFunctionCall","src":"31840:79:61"},"nodeType":"YulExpressionStatement","src":"31840:79:61"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"31813:7:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"31822:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"31809:3:61"},"nodeType":"YulFunctionCall","src":"31809:23:61"},{"kind":"number","nodeType":"YulLiteral","src":"31834:2:61","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"31805:3:61"},"nodeType":"YulFunctionCall","src":"31805:32:61"},"nodeType":"YulIf","src":"31802:119:61"},{"nodeType":"YulBlock","src":"31931:126:61","statements":[{"nodeType":"YulVariableDeclaration","src":"31946:15:61","value":{"kind":"number","nodeType":"YulLiteral","src":"31960:1:61","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"31950:6:61","type":""}]},{"nodeType":"YulAssignment","src":"31975:72:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"32019:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"32030:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"32015:3:61"},"nodeType":"YulFunctionCall","src":"32015:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"32039:7:61"}],"functionName":{"name":"abi_decode_t_int96_fromMemory","nodeType":"YulIdentifier","src":"31985:29:61"},"nodeType":"YulFunctionCall","src":"31985:62:61"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"31975:6:61"}]}]}]},"name":"abi_decode_tuple_t_int96_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"31762:9:61","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"31773:7:61","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"31785:6:61","type":""}],"src":"31717:347:61"}]},"contents":"{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_int96(value) -> cleaned {\n cleaned := signextend(11, value)\n }\n\n function validator_revert_t_int96(value) {\n if iszero(eq(value, cleanup_t_int96(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_int96(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_int96(value)\n }\n\n function abi_decode_tuple_t_addresst_addresst_int96(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_int96(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_addresst_addresst_addresst_uint256t_int96(headStart, dataEnd) -> value0, value1, value2, value3, value4 {\n if slt(sub(dataEnd, headStart), 160) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 128\n\n value4 := abi_decode_t_int96(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bool_to_t_bool_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function cleanup_t_bytes32(value) -> cleaned {\n cleaned := value\n }\n\n function abi_encode_t_bytes32_to_t_bytes32_fromStack(value, pos) {\n mstore(pos, cleanup_t_bytes32(value))\n }\n\n function abi_encode_tuple_t_address_t_uint256_t_uint256_t_uint256_t_bytes32_t_bool__to_t_address_t_uint256_t_uint256_t_uint256_t_bytes32_t_bool__fromStack_reversed(headStart , value5, value4, value3, value2, value1, value0) -> tail {\n tail := add(headStart, 192)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value3, add(headStart, 96))\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value4, add(headStart, 128))\n\n abi_encode_t_bool_to_t_bool_fromStack(value5, add(headStart, 160))\n\n }\n\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function panic_error_0x32() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n\n function panic_error_0x21() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n sum := add(x, y)\n\n if gt(x, sum) { panic_error_0x11() }\n\n }\n\n function abi_encode_t_int96_to_t_int96_fromStack(value, pos) {\n mstore(pos, cleanup_t_int96(value))\n }\n\n function abi_encode_tuple_t_address_t_address_t_address_t_uint256_t_int96__to_t_address_t_address_t_address_t_uint256_t_int96__fromStack_reversed(headStart , value4, value3, value2, value1, value0) -> tail {\n tail := add(headStart, 160)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_address_to_t_address_fromStack(value2, add(headStart, 64))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value3, add(headStart, 96))\n\n abi_encode_t_int96_to_t_int96_fromStack(value4, add(headStart, 128))\n\n }\n\n function array_length_t_bytes_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function copy_memory_to_memory_with_cleanup(src, dst, length) {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_bytes_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function array_length_t_array$_t_enum$_Module_$16268_$dyn_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_array$_t_uint8_$dyn_memory_ptr(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function array_dataslot_t_array$_t_enum$_Module_$16268_$dyn_memory_ptr(ptr) -> data {\n data := ptr\n\n data := add(ptr, 0x20)\n\n }\n\n function validator_assert_t_enum$_Module_$16268(value) {\n if iszero(lt(value, 4)) { panic_error_0x21() }\n }\n\n function cleanup_t_enum$_Module_$16268(value) -> cleaned {\n cleaned := value validator_assert_t_enum$_Module_$16268(value)\n }\n\n function convert_t_enum$_Module_$16268_to_t_uint8(value) -> converted {\n converted := cleanup_t_enum$_Module_$16268(value)\n }\n\n function abi_encode_t_enum$_Module_$16268_to_t_uint8(value, pos) {\n mstore(pos, convert_t_enum$_Module_$16268_to_t_uint8(value))\n }\n\n function abi_encodeUpdatedPos_t_enum$_Module_$16268_to_t_uint8(value0, pos) -> updatedPos {\n abi_encode_t_enum$_Module_$16268_to_t_uint8(value0, pos)\n updatedPos := add(pos, 0x20)\n }\n\n function array_nextElement_t_array$_t_enum$_Module_$16268_$dyn_memory_ptr(ptr) -> next {\n next := add(ptr, 0x20)\n }\n\n // enum Module[] -> uint8[]\n function abi_encode_t_array$_t_enum$_Module_$16268_$dyn_memory_ptr_to_t_array$_t_uint8_$dyn_memory_ptr(value, pos) -> end {\n let length := array_length_t_array$_t_enum$_Module_$16268_$dyn_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_array$_t_uint8_$dyn_memory_ptr(pos, length)\n let baseRef := array_dataslot_t_array$_t_enum$_Module_$16268_$dyn_memory_ptr(value)\n let srcPtr := baseRef\n for { let i := 0 } lt(i, length) { i := add(i, 1) }\n {\n let elementValue0 := mload(srcPtr)\n pos := abi_encodeUpdatedPos_t_enum$_Module_$16268_to_t_uint8(elementValue0, pos)\n srcPtr := array_nextElement_t_array$_t_enum$_Module_$16268_$dyn_memory_ptr(srcPtr)\n }\n end := pos\n }\n\n function array_length_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function array_dataslot_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr(ptr) -> data {\n data := ptr\n\n data := add(ptr, 0x20)\n\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr(value, pos) -> end {\n let length := array_length_t_bytes_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encodeUpdatedPos_t_bytes_memory_ptr_to_t_bytes_memory_ptr(value0, pos) -> updatedPos {\n updatedPos := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr(value0, pos)\n }\n\n function array_nextElement_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr(ptr) -> next {\n next := add(ptr, 0x20)\n }\n\n // bytes[] -> bytes[]\n function abi_encode_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr(value, pos) -> end {\n let length := array_length_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr(pos, length)\n let headStart := pos\n let tail := add(pos, mul(length, 0x20))\n let baseRef := array_dataslot_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr(value)\n let srcPtr := baseRef\n for { let i := 0 } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, sub(tail, headStart))\n let elementValue0 := mload(srcPtr)\n tail := abi_encodeUpdatedPos_t_bytes_memory_ptr_to_t_bytes_memory_ptr(elementValue0, tail)\n srcPtr := array_nextElement_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr(srcPtr)\n pos := add(pos, 0x20)\n }\n pos := tail\n end := pos\n }\n\n // struct ModuleData -> struct ModuleData\n function abi_encode_t_struct$_ModuleData_$16276_memory_ptr_to_t_struct$_ModuleData_$16276_memory_ptr_fromStack(value, pos) -> end {\n let tail := add(pos, 0x40)\n\n {\n // modules\n\n let memberValue0 := mload(add(value, 0x00))\n\n mstore(add(pos, 0x00), sub(tail, pos))\n tail := abi_encode_t_array$_t_enum$_Module_$16268_$dyn_memory_ptr_to_t_array$_t_uint8_$dyn_memory_ptr(memberValue0, tail)\n\n }\n\n {\n // args\n\n let memberValue0 := mload(add(value, 0x20))\n\n mstore(add(pos, 0x20), sub(tail, pos))\n tail := abi_encode_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr(memberValue0, tail)\n\n }\n\n end := tail\n }\n\n function abi_encode_tuple_t_address_t_bytes_memory_ptr_t_struct$_ModuleData_$16276_memory_ptr_t_address__to_t_address_t_bytes_memory_ptr_t_struct$_ModuleData_$16276_memory_ptr_t_address__fromStack_reversed(headStart , value3, value2, value1, value0) -> tail {\n tail := add(headStart, 128)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n mstore(add(headStart, 32), sub(tail, headStart))\n tail := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value1, tail)\n\n mstore(add(headStart, 64), sub(tail, headStart))\n tail := abi_encode_t_struct$_ModuleData_$16276_memory_ptr_to_t_struct$_ModuleData_$16276_memory_ptr_fromStack(value2, tail)\n\n abi_encode_t_address_to_t_address_fromStack(value3, add(headStart, 96))\n\n }\n\n function validator_revert_t_bytes32(value) {\n if iszero(eq(value, cleanup_t_bytes32(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bytes32_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_bytes32(value)\n }\n\n function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n }\n\n function validator_revert_t_bool(value) {\n if iszero(eq(value, cleanup_t_bool(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bool_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_bool(value)\n }\n\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bool_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x12() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n\n function checked_div_t_uint256(x, y) -> r {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n if iszero(y) { panic_error_0x12() }\n\n r := div(x, y)\n }\n\n function checked_sub_t_uint256(x, y) -> diff {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n diff := sub(x, y)\n\n if gt(diff, x) { panic_error_0x11() }\n\n }\n\n function checked_sub_t_int96(x, y) -> diff {\n x := cleanup_t_int96(x)\n y := cleanup_t_int96(y)\n diff := sub(x, y)\n\n if or(\n slt(diff, 0xffffffffffffffffffffffffffffffffffffffff800000000000000000000000),\n sgt(diff, 0x7fffffffffffffffffffffff)\n ) { panic_error_0x11() }\n\n }\n\n function checked_mul_t_uint256(x, y) -> product {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n let product_raw := mul(x, y)\n product := cleanup_t_uint256(product_raw)\n\n // overflow, if x != 0 and y != product/x\n if iszero(\n or(\n iszero(x),\n eq(y, div(product, x))\n )\n ) { panic_error_0x11() }\n\n }\n\n function increment_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n ret := add(value, 1)\n }\n\n function checked_add_t_int96(x, y) -> sum {\n x := cleanup_t_int96(x)\n y := cleanup_t_int96(y)\n sum := add(x, y)\n\n if or(\n sgt(sum, 0x7fffffffffffffffffffffff),\n slt(sum, 0xffffffffffffffffffffffffffffffffffffffff800000000000000000000000)\n ) { panic_error_0x11() }\n\n }\n\n function cleanup_t_uint128(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffff)\n }\n\n function abi_encode_t_uint128_to_t_uint128_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint128(value))\n }\n\n function abi_encode_tuple_t_uint128_t_uint128__to_t_uint128_t_uint128__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_uint128_to_t_uint128_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint128_to_t_uint128_fromStack(value1, add(headStart, 32))\n\n }\n\n function identity(value) -> ret {\n ret := value\n }\n\n function convert_t_uint160_to_t_uint160(value) -> converted {\n converted := cleanup_t_uint160(identity(cleanup_t_uint160(value)))\n }\n\n function convert_t_uint160_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_uint160(value)\n }\n\n function convert_t_contract$_ISuperToken_$7015_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_address(value)\n }\n\n function abi_encode_t_contract$_ISuperToken_$7015_to_t_address_fromStack(value, pos) {\n mstore(pos, convert_t_contract$_ISuperToken_$7015_to_t_address(value))\n }\n\n function abi_encode_tuple_t_contract$_ISuperToken_$7015_t_address_t_address__to_t_address_t_address_t_address__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_contract$_ISuperToken_$7015_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_address_to_t_address_fromStack(value2, add(headStart, 64))\n\n }\n\n function abi_decode_t_uint256_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_t_int96_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_int96(value)\n }\n\n function abi_decode_tuple_t_uint256t_int96t_uint256t_uint256_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3 {\n if slt(sub(dataEnd, headStart), 128) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_int96_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_uint256_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_tuple_t_contract$_ISuperToken_$7015_t_address_t_address_t_bytes_memory_ptr__to_t_address_t_address_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart , value3, value2, value1, value0) -> tail {\n tail := add(headStart, 128)\n\n abi_encode_t_contract$_ISuperToken_$7015_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_address_to_t_address_fromStack(value2, add(headStart, 64))\n\n mstore(add(headStart, 96), sub(tail, headStart))\n tail := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value3, tail)\n\n }\n\n function convert_t_contract$_IConstantFlowAgreementV1_$5555_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_address(value)\n }\n\n function abi_encode_t_contract$_IConstantFlowAgreementV1_$5555_to_t_address_fromStack(value, pos) {\n mstore(pos, convert_t_contract$_IConstantFlowAgreementV1_$5555_to_t_address(value))\n }\n\n function abi_encode_tuple_t_contract$_IConstantFlowAgreementV1_$5555_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr_t_bytes_memory_ptr__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_contract$_IConstantFlowAgreementV1_$5555_to_t_address_fromStack(value0, add(headStart, 0))\n\n mstore(add(headStart, 32), sub(tail, headStart))\n tail := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value1, tail)\n\n mstore(add(headStart, 64), sub(tail, headStart))\n tail := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value2, tail)\n\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() {\n revert(0, 0)\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n\n function allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function array_allocation_size_t_bytes_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := round_up_to_mul_of_32(length)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function abi_decode_available_length_t_bytes_memory_ptr_fromMemory(src, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_bytes_memory_ptr(length))\n mstore(array, length)\n let dst := add(array, 0x20)\n if gt(add(src, length), end) { revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() }\n copy_memory_to_memory_with_cleanup(src, dst, length)\n }\n\n // bytes\n function abi_decode_t_bytes_memory_ptr_fromMemory(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := mload(offset)\n array := abi_decode_available_length_t_bytes_memory_ptr_fromMemory(add(offset, 0x20), length, end)\n }\n\n function abi_decode_tuple_t_bytes_memory_ptr_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := mload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value0 := abi_decode_t_bytes_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_tuple_t_contract$_ISuperToken_$7015_t_address_t_int96_t_bytes_memory_ptr__to_t_address_t_address_t_int96_t_bytes_memory_ptr__fromStack_reversed(headStart , value3, value2, value1, value0) -> tail {\n tail := add(headStart, 128)\n\n abi_encode_t_contract$_ISuperToken_$7015_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_int96_to_t_int96_fromStack(value2, add(headStart, 64))\n\n mstore(add(headStart, 96), sub(tail, headStart))\n tail := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value3, tail)\n\n }\n\n function abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n }\n\n function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_t_address_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1(value) -> cleaned {\n cleaned := value\n }\n\n function shift_left_0(value) -> newValue {\n newValue :=\n\n shl(0, value)\n\n }\n\n function convert_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1_to_t_bytes32(value) -> converted {\n converted := cleanup_t_bytes32(shift_left_0(cleanup_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1(value)))\n }\n\n function abi_encode_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1_to_t_bytes32_fromStack(value, pos) {\n mstore(pos, convert_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1_to_t_bytes32(value))\n }\n\n function abi_encode_tuple_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1__to_t_bytes32__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n }\n\n function cleanup_t_contract$_ISuperAgreement_$6463(value) -> cleaned {\n cleaned := cleanup_t_address(value)\n }\n\n function validator_revert_t_contract$_ISuperAgreement_$6463(value) {\n if iszero(eq(value, cleanup_t_contract$_ISuperAgreement_$6463(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_contract$_ISuperAgreement_$6463_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_contract$_ISuperAgreement_$6463(value)\n }\n\n function abi_decode_tuple_t_contract$_ISuperAgreement_$6463_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_ISuperAgreement_$6463_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x01() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x01)\n revert(0, 0x24)\n }\n\n function abi_encode_tuple_t_contract$_ISuperToken_$7015_t_int96__to_t_address_t_int96__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_contract$_ISuperToken_$7015_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_int96_to_t_int96_fromStack(value1, add(headStart, 32))\n\n }\n\n function abi_encode_tuple_t_contract$_ISuperToken_$7015_t_address__to_t_address_t_address__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_contract$_ISuperToken_$7015_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n }\n\n function abi_decode_tuple_t_int96_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_int96_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n}\n","id":61,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100cf5760003560e01c806354bbc2ad1161008c578063c76474db11610066578063c76474db14610261578063dc5cd1d814610291578063dfc96e1b146102ad578063e32867fc146102c9576100cf565b806354bbc2ad146101cc5780639a5b5f9314610201578063a152ca6f14610231576100cf565b80630197c386146100d45780630dfa0b82146100f057806336fbb025146101205780633870f4a01461013c578063468240a91461016c578063521d3f3c1461019c575b600080fd5b6100ee60048036038101906100e99190613f40565b6102e5565b005b61010a60048036038101906101059190613fb9565b6102fc565b604051610117919061401b565b60405180910390f35b61013a60048036038101906101359190614036565b610312565b005b610156600480360381019061015191906140b1565b61032e565b604051610163919061401b565b60405180910390f35b610186600480360381019061018191906140b1565b610342565b604051610193919061410c565b60405180910390f35b6101b660048036038101906101b191906140b1565b610356565b6040516101c3919061401b565b60405180910390f35b6101e660048036038101906101e19190614127565b61036a565b6040516101f8969594939291906141a2565b60405180910390f35b61021b600480360381019061021691906140b1565b610396565b604051610228919061410c565b60405180910390f35b61024b600480360381019061024691906140b1565b6103aa565b604051610258919061401b565b60405180910390f35b61027b60048036038101906102769190614203565b6103be565b604051610288919061401b565b60405180910390f35b6102ab60048036038101906102a69190613f40565b6103d0565b005b6102c760048036038101906102c29190614127565b6103e7565b005b6102e360048036038101906102de9190613f40565b610db3565b005b6102ee826111d7565b6102f88282611219565b5050565b6000610309848484611399565b90509392505050565b61031a6114e6565b6103278585858585611578565b5050505050565b600061033a83836117d2565b905092915050565b600061034e83836118a5565b905092915050565b600061036283836119a5565b905092915050565b60008060008060008061037e898989611a35565b95509550955095509550955093975093979195509350565b60006103a28383611e1f565b905092915050565b60006103b68383612001565b905092915050565b60006103c982612091565b9050919050565b6103d9826120e3565b6103e38282612127565b5050565b6103f0826120e3565b6103fa3383612376565b61040261269e565b61040b826111d7565b60006104156126eb565b905060006104238585612718565b905060008260010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060010154036104f1576040517f3c2779e500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006104fb6127c9565b905060008360010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060000160009054906101000a9004600b0b90506105ab86826127f6565b60006105b93388888561283a565b905060006105c733896119a5565b9050888460010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550848460010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060020181905550600061073b6128bf565b9050600081600b0160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508a82600c0160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508682600c0160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000838152602001908152602001600020600101819055504282600c0160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060020181905550808660010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008581526020019081526020016000206000018190555061096f8a338d86896128ec565b60006040518060400160405280600267ffffffffffffffff81111561099757610996614230565b5b6040519080825280602002602001820160405280156109c55781602001602082028036833780820191505090505b508152602001600167ffffffffffffffff8111156109e6576109e5614230565b5b604051908082528060200260200182016040528015610a1957816020015b6060815260200190600190039081610a045790505b50815250905060018160000151600081518110610a3957610a3861425f565b5b60200260200101906003811115610a5357610a5261428e565b5b90816003811115610a6757610a6661428e565b5b8152505060038160000151600181518110610a8557610a8461425f565b5b60200260200101906003811115610a9f57610a9e61428e565b5b90816003811115610ab357610ab261428e565b5b81525050610acc8542610ac691906142ec565b86612a3b565b8160200151600081518110610ae457610ae361425f565b5b602002602001018190525060006336fbb02560e01b8c338f888b604051602401610b1295949392919061432f565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050610b79612a67565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633323b46730838560006040518563ffffffff1660e01b8152600401610bdc9493929190614659565b6020604051808303816000875af1158015610bfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1f91906146d8565b8860010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008781526020019081526020016000206005018190555060018860000160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d4491906142ec565b92505081905550600184600b0160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d9d91906142ec565b9250508190555050505050505050505050505050565b6000610dbd6127c9565b90506000610dc96128bf565b600701548260010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085815260200190815260200160002060030154610e6a91906142ec565b905080421015610ea6576040517f085de62500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610eae612a67565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ee8ca3b58360010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000868152602001908152602001600020600501546040518263ffffffff1660e01b8152600401610f9c9190614705565b600060405180830381600087803b158015610fb657600080fd5b505af1158015610fca573d6000803e3d6000fd5b5050505060008260010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008360010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008681526020019081526020016000206002015490506111cf8633848861112b6126eb565b60010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087815260200190815260200160002060000160009054906101000a9004600b0b611578565b505050505050565b6111e081612a94565b611216576040517f334ae3e600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b8173ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b815260040161125693929190614720565b6020604051808303816000875af1158015611275573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112999190614783565b50806112a36127c9565b60020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461132f91906142ec565b925050819055508061133f6127c9565b60030160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461138e91906142ec565b925050819055505050565b600080826bffffffffffffffffffffffff166113b36127c9565b60020160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461143b91906147df565b905060006114476128bf565b90508060060154821015611487576040517fcdd3529e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008160060154836114999190614810565b905081600701548110156114d9576040517f6c451f0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8093505050509392505050565b6114ee612a67565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611576576040517fb5e0b29200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600085905060006115aa30868473ffffffffffffffffffffffffffffffffffffffff16612af39092919063ffffffff16565b9050600083826115ba9190614844565b600b0b136115f3576115ed30868473ffffffffffffffffffffffffffffffffffffffff16612b939092919063ffffffff16565b5061162b565b6116298584836116039190614844565b8473ffffffffffffffffffffffffffffffffffffffff16612d469092919063ffffffff16565b505b426116346127c9565b60010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008681526020019081526020016000206004018190555060006116d36127c9565b60010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000868152602001908152602001600020600001549050426117706128bf565b600c0160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000838152602001908152602001600020600301819055505050505050505050565b60008060006117e18585612ef9565b905060008060008060006117f68a8a88611a35565b955050945094509450945060008061180f878c88612faa565b93505092505082156118245760009850611893565b600084146118585784846118389190614810565b826bffffffffffffffffffffffff1661185191906148a8565b9850611892565b6000811461188c57848161186c9190614810565b826bffffffffffffffffffffffff1661188591906148a8565b9850611891565b600098505b5b5b88995050505050505050505092915050565b6000806118b284846119a5565b905060008111156119995760006118d685856001856118d19190614810565b61324e565b935050505060006118e56127c9565b60010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001856119719190614810565b8152602001908152602001600020600401541480156119905750600081145b9250505061199f565b60009150505b92915050565b60006119af6127c9565b60000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600080600080600080611a466127c9565b60010160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611b006127c9565b60010160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600089815260200190815260200160002060020154611b9a6127c9565b60010160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a815260200190815260200160002060030154611c346127c9565b60010160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008b815260200190815260200160002060040154611cce6127c9565b60010160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c815260200190815260200160002060050154611d686127c9565b60010160008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d815260200190815260200160002060060160009054906101000a900460ff1695509550955095509550955093975093979195509350565b6000806000611e2d846133cd565b915091506000821480611e4257506000815111155b15611e5257600092505050611ffb565b60005b8151811015611ff3576000611e8486848481518110611e7757611e7661425f565b5b6020026020010151612718565b9050600080611eae88868681518110611ea057611e9f61425f565b5b602002602001015185612faa565b935093505050858214611eca5760009650505050505050611ffb565b60008114611ee15760009650505050505050611ffb565b6000611f078a878781518110611efa57611ef961425f565b5b6020026020010151612ef9565b9050600080600080611f348e8b8b81518110611f2657611f2561425f565b5b602002602001015187611a35565b505093509350935093508c73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611f855760009b505050505050505050505050611ffb565b878314611fa05760009b505050505050505050505050611ffb565b8a821015611fbc5760009b505050505050505050505050611ffb565b60008114611fd85760009b505050505050505050505050611ffb565b50505050505050508080611feb906148ea565b915050611e55565b506001925050505b92915050565b600061200b6127c9565b60020160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600061209b6127c9565b60030160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6120ed33826118a5565b15612124576040517fd18923ab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6121313383612376565b600061213b6127c9565b60020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156121f5576040517f356680b700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816121fe6127c9565b60020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461228a9190614810565b925050819055508161229a6127c9565b60030160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546122e99190614810565b925050819055508273ffffffffffffffffffffffffffffffffffffffff166323b872dd3033856040518463ffffffff1660e01b815260040161232d93929190614720565b6020604051808303816000875af115801561234c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123709190614783565b50505050565b600061238283836117d2565b90508061238d6127c9565b60020160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124199190614810565b92505081905550806124296127c9565b60030160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124789190614810565b9250508190555060006124896127c9565b60020160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561253f576040517f0a2005fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006125496127c9565b60030160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156125c2576040517f2fe0888f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006125ce84846119a5565b905060008111156126985760016125e36127c9565b60010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060018461266f9190614810565b815260200190815260200160002060060160006101000a81548160ff0219169083151502179055505b50505050565b6126a6612a67565b600301546126b26134f9565b116126e9576040517fa426119900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6000807f9cd9afe22fea86221d6e8117226b65bb0e2af8c4f5b8abf255fb0afcad4a3a9c90508091505090565b6000806127236126eb565b60000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081146127bd576001816127b89190614810565b6127c0565b60005b91505092915050565b6000807f2da2adfb54fd91bfb31e0d805792077ddcd5b0427b14a56397e2f3cc190c883090508091505090565b61280082826135bb565b612836576040517f1824866a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b600080612848868685611399565b905060006128546128bf565b90508060070154816006015461286a91906142ec565b8510156128a3576040517f3661e75b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818510156128b157846128b3565b815b92505050949350505050565b6000807f2f7ed27098ecefe70183ee38ae4542dee65215b0786f6870871034402cfe2cc990508091505090565b6000859050600061291e30868473ffffffffffffffffffffffffffffffffffffffff16612af39092919063ffffffff16565b9050600081600b0b1361295c5761295685848473ffffffffffffffffffffffffffffffffffffffff1661364f9092919063ffffffff16565b50612994565b61299285848361296c9190614932565b8473ffffffffffffffffffffffffffffffffffffffff16612d469092919063ffffffff16565b505b4261299d6127c9565b60010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008681526020019081526020016000206003018190555050505050505050565b60608282604051602001612a509291906149c1565b604051602081830303815290604052905092915050565b6000807fde06769ca6d80a022439e234eebb61c3801d652175b62f912d6f8cac7b881c6590508091505090565b6000612a9e6128bf565b60090160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080612aff85613802565b9150508073ffffffffffffffffffffffffffffffffffffffff1663e6a1e8888686866040518463ffffffff1660e01b8152600401612b3f93929190614a49565b608060405180830381865afa158015612b5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b809190614aaa565b9091925090505080925050509392505050565b6000806000612ba186613a43565b915091508173ffffffffffffffffffffffffffffffffffffffff166339255d5b828373ffffffffffffffffffffffffffffffffffffffff1663b4b333c68a8a8a600067ffffffffffffffff811115612bfc57612bfb614230565b5b6040519080825280601f01601f191660200182016040528015612c2e5781602001600182028036833780820191505090505b50604051602401612c429493929190614b11565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050600067ffffffffffffffff811115612c9f57612c9e614230565b5b6040519080825280601f01601f191660200182016040528015612cd15781602001600182028036833780820191505090505b506040518463ffffffff1660e01b8152600401612cf093929190614b7e565b6000604051808303816000875af1158015612d0f573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190612d389190614cba565b506001925050509392505050565b6000806000612d5486613a43565b915091508173ffffffffffffffffffffffffffffffffffffffff166339255d5b828373ffffffffffffffffffffffffffffffffffffffff166350209a628a8a8a600067ffffffffffffffff811115612daf57612dae614230565b5b6040519080825280601f01601f191660200182016040528015612de15781602001600182028036833780820191505090505b50604051602401612df59493929190614d03565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050600067ffffffffffffffff811115612e5257612e51614230565b5b6040519080825280601f01601f191660200182016040528015612e845781602001600182028036833780820191505090505b506040518463ffffffff1660e01b8152600401612ea393929190614b7e565b6000604051808303816000875af1158015612ec2573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190612eeb9190614cba565b506001925050509392505050565b600080612f046127c9565b60000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008114612f9e57600181612f999190614810565b612fa1565b60005b91505092915050565b600080600080612fb86126eb565b60010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600086815260200190815260200160002060000160009054906101000a9004600b0b61305f6126eb565b60010160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878152602001908152602001600020600001600c9054906101000a90046bffffffffffffffffffffffff166131116126eb565b60010160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000888152602001908152602001600020600101546131ab6126eb565b60010160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600089815260200190815260200160002060020154935093509350935093509350935093565b600080600080600061325e6127c9565b905060008160010160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008260010160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008981526020019081526020016000206002015490506133b9828a83612faa565b965096509650965050505093509350935093565b600060606133d96126eb565b60020160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546134256126eb565b60020160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101808054806020026020016040519081016040528092919081815260200182805480156134e957602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161349f575b5050505050905091509150915091565b6000613503612a67565b60010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b47064c83073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6040518363ffffffff1660e01b8152600401613575929190614d4f565b602060405180830381865afa158015613592573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135b69190614d78565b905090565b6000808373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016135f79190614da5565b602060405180830381865afa158015613614573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136389190614d78565b90506136448484613cca565b811191505092915050565b600080600061365d86613a43565b915091508173ffffffffffffffffffffffffffffffffffffffff166339255d5b828373ffffffffffffffffffffffffffffffffffffffff166362fc305e8a8a8a600067ffffffffffffffff8111156136b8576136b7614230565b5b6040519080825280601f01601f1916602001820160405280156136ea5781602001600182028036833780820191505090505b506040516024016136fe9493929190614d03565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050600067ffffffffffffffff81111561375b5761375a614230565b5b6040519080825280601f01601f19166020018201604052801561378d5781602001600182028036833780820191505090505b506040518463ffffffff1660e01b81526004016137ac93929190614b7e565b6000604051808303816000875af11580156137cb573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906137f49190614cba565b506001925050509392505050565b6000807f65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea8375491507fb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a549050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036139c457600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613927578273ffffffffffffffffffffffffffffffffffffffff166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015613900573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139249190614dd5565b91505b8173ffffffffffffffffffffffffffffffffffffffff1663b6d200de7fa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd36040518263ffffffff1660e01b81526004016139809190614e4a565b602060405180830381865afa15801561399d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139c19190614ea3565b90505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613a0157613a00614ed0565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613a3e57613a3d614ed0565b5b915091565b6000807f65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea8375491507fb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a549050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613c4b57600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613b68578273ffffffffffffffffffffffffffffffffffffffff166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b659190614dd5565b91505b8173ffffffffffffffffffffffffffffffffffffffff1663b6d200de7fa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd36040518263ffffffff1660e01b8152600401613bc19190614e4a565b602060405180830381865afa158015613bde573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c029190614ea3565b9050817f65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea83755807fb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a555b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613c8857613c87614ed0565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613cc557613cc4614ed0565b5b915091565b6000808390506000613cfb848373ffffffffffffffffffffffffffffffffffffffff16613d7090919063ffffffff16565b90506000613d28308473ffffffffffffffffffffffffffffffffffffffff16613e0490919063ffffffff16565b9050613d326128bf565b600801548582613d429190614932565b6bffffffffffffffffffffffff16613d5a91906148a8565b82613d6591906142ec565b935050505092915050565b600080613d7c84613802565b9150508073ffffffffffffffffffffffffffffffffffffffff16638d997f6e85856040518363ffffffff1660e01b8152600401613dba929190614eff565b602060405180830381865afa158015613dd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dfb9190614d78565b91505092915050565b600080613e1084613802565b9150508073ffffffffffffffffffffffffffffffffffffffff1663e8e7e2d185856040518363ffffffff1660e01b8152600401613e4e929190614f28565b602060405180830381865afa158015613e6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e8f9190614f51565b91505092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613ed782613eac565b9050919050565b613ee781613ecc565b8114613ef257600080fd5b50565b600081359050613f0481613ede565b92915050565b6000819050919050565b613f1d81613f0a565b8114613f2857600080fd5b50565b600081359050613f3a81613f14565b92915050565b60008060408385031215613f5757613f56613ea2565b5b6000613f6585828601613ef5565b9250506020613f7685828601613f2b565b9150509250929050565b600081600b0b9050919050565b613f9681613f80565b8114613fa157600080fd5b50565b600081359050613fb381613f8d565b92915050565b600080600060608486031215613fd257613fd1613ea2565b5b6000613fe086828701613ef5565b9350506020613ff186828701613ef5565b925050604061400286828701613fa4565b9150509250925092565b61401581613f0a565b82525050565b6000602082019050614030600083018461400c565b92915050565b600080600080600060a0868803121561405257614051613ea2565b5b600061406088828901613ef5565b955050602061407188828901613ef5565b945050604061408288828901613ef5565b935050606061409388828901613f2b565b92505060806140a488828901613fa4565b9150509295509295909350565b600080604083850312156140c8576140c7613ea2565b5b60006140d685828601613ef5565b92505060206140e785828601613ef5565b9150509250929050565b60008115159050919050565b614106816140f1565b82525050565b600060208201905061412160008301846140fd565b92915050565b6000806000606084860312156141405761413f613ea2565b5b600061414e86828701613ef5565b935050602061415f86828701613ef5565b925050604061417086828701613f2b565b9150509250925092565b61418381613ecc565b82525050565b6000819050919050565b61419c81614189565b82525050565b600060c0820190506141b7600083018961417a565b6141c4602083018861400c565b6141d1604083018761400c565b6141de606083018661400c565b6141eb6080830185614193565b6141f860a08301846140fd565b979650505050505050565b60006020828403121561421957614218613ea2565b5b600061422784828501613ef5565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006142f782613f0a565b915061430283613f0a565b925082820190508082111561431a576143196142bd565b5b92915050565b61432981613f80565b82525050565b600060a082019050614344600083018861417a565b614351602083018761417a565b61435e604083018661417a565b61436b606083018561400c565b6143786080830184614320565b9695505050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156143bc5780820151818401526020810190506143a1565b60008484015250505050565b6000601f19601f8301169050919050565b60006143e482614382565b6143ee818561438d565b93506143fe81856020860161439e565b614407816143c8565b840191505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6004811061444f5761444e61428e565b5b50565b60008190506144608261443e565b919050565b600061447082614452565b9050919050565b61448081614465565b82525050565b60006144928383614477565b60208301905092915050565b6000602082019050919050565b60006144b682614412565b6144c0818561441d565b93506144cb8361442e565b8060005b838110156144fc5781516144e38882614486565b97506144ee8361449e565b9250506001810190506144cf565b5085935050505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600082825260208201905092915050565b600061455182614382565b61455b8185614535565b935061456b81856020860161439e565b614574816143c8565b840191505092915050565b600061458b8383614546565b905092915050565b6000602082019050919050565b60006145ab82614509565b6145b58185614514565b9350836020820285016145c785614525565b8060005b8581101561460357848403895281516145e4858261457f565b94506145ef83614593565b925060208a019950506001810190506145cb565b50829750879550505050505092915050565b6000604083016000830151848203600086015261463282826144ab565b9150506020830151848203602086015261464c82826145a0565b9150508091505092915050565b600060808201905061466e600083018761417a565b818103602083015261468081866143d9565b905081810360408301526146948185614615565b90506146a3606083018461417a565b95945050505050565b6146b581614189565b81146146c057600080fd5b50565b6000815190506146d2816146ac565b92915050565b6000602082840312156146ee576146ed613ea2565b5b60006146fc848285016146c3565b91505092915050565b600060208201905061471a6000830184614193565b92915050565b6000606082019050614735600083018661417a565b614742602083018561417a565b61474f604083018461400c565b949350505050565b614760816140f1565b811461476b57600080fd5b50565b60008151905061477d81614757565b92915050565b60006020828403121561479957614798613ea2565b5b60006147a78482850161476e565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006147ea82613f0a565b91506147f583613f0a565b925082614805576148046147b0565b5b828204905092915050565b600061481b82613f0a565b915061482683613f0a565b925082820390508181111561483e5761483d6142bd565b5b92915050565b600061484f82613f80565b915061485a83613f80565b925082820390506b7fffffffffffffffffffffff81137fffffffffffffffffffffffffffffffffffffffff800000000000000000000000821217156148a2576148a16142bd565b5b92915050565b60006148b382613f0a565b91506148be83613f0a565b92508282026148cc81613f0a565b915082820484148315176148e3576148e26142bd565b5b5092915050565b60006148f582613f0a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614927576149266142bd565b5b600182019050919050565b600061493d82613f80565b915061494883613f80565b925082820190507fffffffffffffffffffffffffffffffffffffffff80000000000000000000000081126b7fffffffffffffffffffffff821317156149905761498f6142bd565b5b92915050565b60006fffffffffffffffffffffffffffffffff82169050919050565b6149bb81614996565b82525050565b60006040820190506149d660008301856149b2565b6149e360208301846149b2565b9392505050565b6000819050919050565b6000614a0f614a0a614a0584613eac565b6149ea565b613eac565b9050919050565b6000614a21826149f4565b9050919050565b6000614a3382614a16565b9050919050565b614a4381614a28565b82525050565b6000606082019050614a5e6000830186614a3a565b614a6b602083018561417a565b614a78604083018461417a565b949350505050565b600081519050614a8f81613f14565b92915050565b600081519050614aa481613f8d565b92915050565b60008060008060808587031215614ac457614ac3613ea2565b5b6000614ad287828801614a80565b9450506020614ae387828801614a95565b9350506040614af487828801614a80565b9250506060614b0587828801614a80565b91505092959194509250565b6000608082019050614b266000830187614a3a565b614b33602083018661417a565b614b40604083018561417a565b8181036060830152614b5281846143d9565b905095945050505050565b6000614b6882614a16565b9050919050565b614b7881614b5d565b82525050565b6000606082019050614b936000830186614b6f565b8181036020830152614ba581856143d9565b90508181036040830152614bb981846143d9565b9050949350505050565b600080fd5b600080fd5b614bd6826143c8565b810181811067ffffffffffffffff82111715614bf557614bf4614230565b5b80604052505050565b6000614c08613e98565b9050614c148282614bcd565b919050565b600067ffffffffffffffff821115614c3457614c33614230565b5b614c3d826143c8565b9050602081019050919050565b6000614c5d614c5884614c19565b614bfe565b905082815260208101848484011115614c7957614c78614bc8565b5b614c8484828561439e565b509392505050565b600082601f830112614ca157614ca0614bc3565b5b8151614cb1848260208601614c4a565b91505092915050565b600060208284031215614cd057614ccf613ea2565b5b600082015167ffffffffffffffff811115614cee57614ced613ea7565b5b614cfa84828501614c8c565b91505092915050565b6000608082019050614d186000830187614a3a565b614d25602083018661417a565b614d326040830185614320565b8181036060830152614d4481846143d9565b905095945050505050565b6000604082019050614d64600083018561417a565b614d71602083018461417a565b9392505050565b600060208284031215614d8e57614d8d613ea2565b5b6000614d9c84828501614a80565b91505092915050565b6000602082019050614dba600083018461417a565b92915050565b600081519050614dcf81613ede565b92915050565b600060208284031215614deb57614dea613ea2565b5b6000614df984828501614dc0565b91505092915050565b6000819050919050565b60008160001b9050919050565b6000614e34614e2f614e2a84614e02565b614e0c565b614189565b9050919050565b614e4481614e19565b82525050565b6000602082019050614e5f6000830184614e3b565b92915050565b6000614e7082613ecc565b9050919050565b614e8081614e65565b8114614e8b57600080fd5b50565b600081519050614e9d81614e77565b92915050565b600060208284031215614eb957614eb8613ea2565b5b6000614ec784828501614e8e565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000604082019050614f146000830185614a3a565b614f216020830184614320565b9392505050565b6000604082019050614f3d6000830185614a3a565b614f4a602083018461417a565b9392505050565b600060208284031215614f6757614f66613ea2565b5b6000614f7584828501614a95565b9150509291505056fea264697066735822122061d239e0a07ccefface3bc906c97115321134c0696501951366dda0b6f82d91a64736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xCF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x54BBC2AD GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xC76474DB GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xC76474DB EQ PUSH2 0x261 JUMPI DUP1 PUSH4 0xDC5CD1D8 EQ PUSH2 0x291 JUMPI DUP1 PUSH4 0xDFC96E1B EQ PUSH2 0x2AD JUMPI DUP1 PUSH4 0xE32867FC EQ PUSH2 0x2C9 JUMPI PUSH2 0xCF JUMP JUMPDEST DUP1 PUSH4 0x54BBC2AD EQ PUSH2 0x1CC JUMPI DUP1 PUSH4 0x9A5B5F93 EQ PUSH2 0x201 JUMPI DUP1 PUSH4 0xA152CA6F EQ PUSH2 0x231 JUMPI PUSH2 0xCF JUMP JUMPDEST DUP1 PUSH4 0x197C386 EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0xDFA0B82 EQ PUSH2 0xF0 JUMPI DUP1 PUSH4 0x36FBB025 EQ PUSH2 0x120 JUMPI DUP1 PUSH4 0x3870F4A0 EQ PUSH2 0x13C JUMPI DUP1 PUSH4 0x468240A9 EQ PUSH2 0x16C JUMPI DUP1 PUSH4 0x521D3F3C EQ PUSH2 0x19C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEE PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xE9 SWAP2 SWAP1 PUSH2 0x3F40 JUMP JUMPDEST PUSH2 0x2E5 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x10A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x105 SWAP2 SWAP1 PUSH2 0x3FB9 JUMP JUMPDEST PUSH2 0x2FC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x117 SWAP2 SWAP1 PUSH2 0x401B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x13A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x135 SWAP2 SWAP1 PUSH2 0x4036 JUMP JUMPDEST PUSH2 0x312 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x156 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x151 SWAP2 SWAP1 PUSH2 0x40B1 JUMP JUMPDEST PUSH2 0x32E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x163 SWAP2 SWAP1 PUSH2 0x401B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x186 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x181 SWAP2 SWAP1 PUSH2 0x40B1 JUMP JUMPDEST PUSH2 0x342 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x193 SWAP2 SWAP1 PUSH2 0x410C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1B1 SWAP2 SWAP1 PUSH2 0x40B1 JUMP JUMPDEST PUSH2 0x356 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1C3 SWAP2 SWAP1 PUSH2 0x401B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1E6 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1E1 SWAP2 SWAP1 PUSH2 0x4127 JUMP JUMPDEST PUSH2 0x36A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1F8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x41A2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x21B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x216 SWAP2 SWAP1 PUSH2 0x40B1 JUMP JUMPDEST PUSH2 0x396 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x228 SWAP2 SWAP1 PUSH2 0x410C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x24B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x246 SWAP2 SWAP1 PUSH2 0x40B1 JUMP JUMPDEST PUSH2 0x3AA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x258 SWAP2 SWAP1 PUSH2 0x401B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x27B PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x276 SWAP2 SWAP1 PUSH2 0x4203 JUMP JUMPDEST PUSH2 0x3BE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x288 SWAP2 SWAP1 PUSH2 0x401B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2AB PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2A6 SWAP2 SWAP1 PUSH2 0x3F40 JUMP JUMPDEST PUSH2 0x3D0 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2C7 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2C2 SWAP2 SWAP1 PUSH2 0x4127 JUMP JUMPDEST PUSH2 0x3E7 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2E3 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2DE SWAP2 SWAP1 PUSH2 0x3F40 JUMP JUMPDEST PUSH2 0xDB3 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2EE DUP3 PUSH2 0x11D7 JUMP JUMPDEST PUSH2 0x2F8 DUP3 DUP3 PUSH2 0x1219 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x309 DUP5 DUP5 DUP5 PUSH2 0x1399 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x31A PUSH2 0x14E6 JUMP JUMPDEST PUSH2 0x327 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x1578 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x33A DUP4 DUP4 PUSH2 0x17D2 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x34E DUP4 DUP4 PUSH2 0x18A5 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x362 DUP4 DUP4 PUSH2 0x19A5 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x37E DUP10 DUP10 DUP10 PUSH2 0x1A35 JUMP JUMPDEST SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 POP SWAP4 SWAP8 POP SWAP4 SWAP8 SWAP2 SWAP6 POP SWAP4 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A2 DUP4 DUP4 PUSH2 0x1E1F JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B6 DUP4 DUP4 PUSH2 0x2001 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C9 DUP3 PUSH2 0x2091 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3D9 DUP3 PUSH2 0x20E3 JUMP JUMPDEST PUSH2 0x3E3 DUP3 DUP3 PUSH2 0x2127 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x3F0 DUP3 PUSH2 0x20E3 JUMP JUMPDEST PUSH2 0x3FA CALLER DUP4 PUSH2 0x2376 JUMP JUMPDEST PUSH2 0x402 PUSH2 0x269E JUMP JUMPDEST PUSH2 0x40B DUP3 PUSH2 0x11D7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x415 PUSH2 0x26EB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x423 DUP6 DUP6 PUSH2 0x2718 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x1 ADD PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD SLOAD SUB PUSH2 0x4F1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x3C2779E500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x4FB PUSH2 0x27C9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x1 ADD PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xB SIGNEXTEND SWAP1 POP PUSH2 0x5AB DUP7 DUP3 PUSH2 0x27F6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5B9 CALLER DUP9 DUP9 DUP6 PUSH2 0x283A JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x5C7 CALLER DUP10 PUSH2 0x19A5 JUMP JUMPDEST SWAP1 POP DUP9 DUP5 PUSH1 0x1 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP5 DUP5 PUSH1 0x1 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD DUP2 SWAP1 SSTORE POP PUSH1 0x0 PUSH2 0x73B PUSH2 0x28BF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0xB ADD PUSH1 0x0 DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP11 DUP3 PUSH1 0xC ADD PUSH1 0x0 DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP7 DUP3 PUSH1 0xC ADD PUSH1 0x0 DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP TIMESTAMP DUP3 PUSH1 0xC ADD PUSH1 0x0 DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD DUP2 SWAP1 SSTORE POP DUP1 DUP7 PUSH1 0x1 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP2 SWAP1 SSTORE POP PUSH2 0x96F DUP11 CALLER DUP14 DUP7 DUP10 PUSH2 0x28EC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x997 JUMPI PUSH2 0x996 PUSH2 0x4230 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x9C5 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x9E6 JUMPI PUSH2 0x9E5 PUSH2 0x4230 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xA19 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xA04 JUMPI SWAP1 POP JUMPDEST POP DUP2 MSTORE POP SWAP1 POP PUSH1 0x1 DUP2 PUSH1 0x0 ADD MLOAD PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xA39 JUMPI PUSH2 0xA38 PUSH2 0x425F JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xA53 JUMPI PUSH2 0xA52 PUSH2 0x428E JUMP JUMPDEST JUMPDEST SWAP1 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xA67 JUMPI PUSH2 0xA66 PUSH2 0x428E JUMP JUMPDEST JUMPDEST DUP2 MSTORE POP POP PUSH1 0x3 DUP2 PUSH1 0x0 ADD MLOAD PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0xA85 JUMPI PUSH2 0xA84 PUSH2 0x425F JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xA9F JUMPI PUSH2 0xA9E PUSH2 0x428E JUMP JUMPDEST JUMPDEST SWAP1 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0xAB3 JUMPI PUSH2 0xAB2 PUSH2 0x428E JUMP JUMPDEST JUMPDEST DUP2 MSTORE POP POP PUSH2 0xACC DUP6 TIMESTAMP PUSH2 0xAC6 SWAP2 SWAP1 PUSH2 0x42EC JUMP JUMPDEST DUP7 PUSH2 0x2A3B JUMP JUMPDEST DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xAE4 JUMPI PUSH2 0xAE3 PUSH2 0x425F JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP PUSH1 0x0 PUSH4 0x36FBB025 PUSH1 0xE0 SHL DUP13 CALLER DUP16 DUP9 DUP12 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0xB12 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x432F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP SWAP1 POP PUSH2 0xB79 PUSH2 0x2A67 JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x3323B467 ADDRESS DUP4 DUP6 PUSH1 0x0 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBDC SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4659 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0xBFB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC1F SWAP2 SWAP1 PUSH2 0x46D8 JUMP JUMPDEST DUP9 PUSH1 0x1 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP15 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x5 ADD DUP2 SWAP1 SSTORE POP PUSH1 0x1 DUP9 PUSH1 0x0 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP15 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xD44 SWAP2 SWAP1 PUSH2 0x42EC JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x1 DUP5 PUSH1 0xB ADD PUSH1 0x0 DUP15 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xD9D SWAP2 SWAP1 PUSH2 0x42EC JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDBD PUSH2 0x27C9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xDC9 PUSH2 0x28BF JUMP JUMPDEST PUSH1 0x7 ADD SLOAD DUP3 PUSH1 0x1 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD SLOAD PUSH2 0xE6A SWAP2 SWAP1 PUSH2 0x42EC JUMP JUMPDEST SWAP1 POP DUP1 TIMESTAMP LT ISZERO PUSH2 0xEA6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x85DE62500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xEAE PUSH2 0x2A67 JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xEE8CA3B5 DUP4 PUSH1 0x1 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x5 ADD SLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF9C SWAP2 SWAP1 PUSH2 0x4705 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFCA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 DUP3 PUSH1 0x1 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x1 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP1 POP PUSH2 0x11CF DUP7 CALLER DUP5 DUP9 PUSH2 0x112B PUSH2 0x26EB JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xB SIGNEXTEND PUSH2 0x1578 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x11E0 DUP2 PUSH2 0x2A94 JUMP JUMPDEST PUSH2 0x1216 JUMPI PUSH1 0x40 MLOAD PUSH32 0x334AE3E600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x23B872DD CALLER ADDRESS DUP5 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1256 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4720 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1275 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1299 SWAP2 SWAP1 PUSH2 0x4783 JUMP JUMPDEST POP DUP1 PUSH2 0x12A3 PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x2 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x132F SWAP2 SWAP1 PUSH2 0x42EC JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 PUSH2 0x133F PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x3 ADD PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x138E SWAP2 SWAP1 PUSH2 0x42EC JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x13B3 PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x2 ADD PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x143B SWAP2 SWAP1 PUSH2 0x47DF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1447 PUSH2 0x28BF JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x6 ADD SLOAD DUP3 LT ISZERO PUSH2 0x1487 JUMPI PUSH1 0x40 MLOAD PUSH32 0xCDD3529E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x6 ADD SLOAD DUP4 PUSH2 0x1499 SWAP2 SWAP1 PUSH2 0x4810 JUMP JUMPDEST SWAP1 POP DUP2 PUSH1 0x7 ADD SLOAD DUP2 LT ISZERO PUSH2 0x14D9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x6C451F0C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP4 POP POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x14EE PUSH2 0x2A67 JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1576 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB5E0B29200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP6 SWAP1 POP PUSH1 0x0 PUSH2 0x15AA ADDRESS DUP7 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2AF3 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 DUP3 PUSH2 0x15BA SWAP2 SWAP1 PUSH2 0x4844 JUMP JUMPDEST PUSH1 0xB SIGNEXTEND SGT PUSH2 0x15F3 JUMPI PUSH2 0x15ED ADDRESS DUP7 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2B93 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP PUSH2 0x162B JUMP JUMPDEST PUSH2 0x1629 DUP6 DUP5 DUP4 PUSH2 0x1603 SWAP2 SWAP1 PUSH2 0x4844 JUMP JUMPDEST DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2D46 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP JUMPDEST TIMESTAMP PUSH2 0x1634 PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD DUP2 SWAP1 SSTORE POP PUSH1 0x0 PUSH2 0x16D3 PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD SLOAD SWAP1 POP TIMESTAMP PUSH2 0x1770 PUSH2 0x28BF JUMP JUMPDEST PUSH1 0xC ADD PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD DUP2 SWAP1 SSTORE POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x17E1 DUP6 DUP6 PUSH2 0x2EF9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x17F6 DUP11 DUP11 DUP9 PUSH2 0x1A35 JUMP JUMPDEST SWAP6 POP POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP PUSH1 0x0 DUP1 PUSH2 0x180F DUP8 DUP13 DUP9 PUSH2 0x2FAA JUMP JUMPDEST SWAP4 POP POP SWAP3 POP POP DUP3 ISZERO PUSH2 0x1824 JUMPI PUSH1 0x0 SWAP9 POP PUSH2 0x1893 JUMP JUMPDEST PUSH1 0x0 DUP5 EQ PUSH2 0x1858 JUMPI DUP5 DUP5 PUSH2 0x1838 SWAP2 SWAP1 PUSH2 0x4810 JUMP JUMPDEST DUP3 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1851 SWAP2 SWAP1 PUSH2 0x48A8 JUMP JUMPDEST SWAP9 POP PUSH2 0x1892 JUMP JUMPDEST PUSH1 0x0 DUP2 EQ PUSH2 0x188C JUMPI DUP5 DUP2 PUSH2 0x186C SWAP2 SWAP1 PUSH2 0x4810 JUMP JUMPDEST DUP3 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1885 SWAP2 SWAP1 PUSH2 0x48A8 JUMP JUMPDEST SWAP9 POP PUSH2 0x1891 JUMP JUMPDEST PUSH1 0x0 SWAP9 POP JUMPDEST JUMPDEST JUMPDEST DUP9 SWAP10 POP POP POP POP POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x18B2 DUP5 DUP5 PUSH2 0x19A5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 GT ISZERO PUSH2 0x1999 JUMPI PUSH1 0x0 PUSH2 0x18D6 DUP6 DUP6 PUSH1 0x1 DUP6 PUSH2 0x18D1 SWAP2 SWAP1 PUSH2 0x4810 JUMP JUMPDEST PUSH2 0x324E JUMP JUMPDEST SWAP4 POP POP POP POP PUSH1 0x0 PUSH2 0x18E5 PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH1 0x1 DUP6 PUSH2 0x1971 SWAP2 SWAP1 PUSH2 0x4810 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD SLOAD EQ DUP1 ISZERO PUSH2 0x1990 JUMPI POP PUSH1 0x0 DUP2 EQ JUMPDEST SWAP3 POP POP POP PUSH2 0x199F JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x19AF PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x1A46 PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1B00 PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH2 0x1B9A PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP11 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD SLOAD PUSH2 0x1C34 PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP14 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP12 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x4 ADD SLOAD PUSH2 0x1CCE PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP15 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP14 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP13 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x5 ADD SLOAD PUSH2 0x1D68 PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP16 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP15 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP14 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x6 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 POP SWAP4 SWAP8 POP SWAP4 SWAP8 SWAP2 SWAP6 POP SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1E2D DUP5 PUSH2 0x33CD JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ DUP1 PUSH2 0x1E42 JUMPI POP PUSH1 0x0 DUP2 MLOAD GT ISZERO JUMPDEST ISZERO PUSH2 0x1E52 JUMPI PUSH1 0x0 SWAP3 POP POP POP PUSH2 0x1FFB JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x1FF3 JUMPI PUSH1 0x0 PUSH2 0x1E84 DUP7 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1E77 JUMPI PUSH2 0x1E76 PUSH2 0x425F JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x2718 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x1EAE DUP9 DUP7 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x1EA0 JUMPI PUSH2 0x1E9F PUSH2 0x425F JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 PUSH2 0x2FAA JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP DUP6 DUP3 EQ PUSH2 0x1ECA JUMPI PUSH1 0x0 SWAP7 POP POP POP POP POP POP POP PUSH2 0x1FFB JUMP JUMPDEST PUSH1 0x0 DUP2 EQ PUSH2 0x1EE1 JUMPI PUSH1 0x0 SWAP7 POP POP POP POP POP POP POP PUSH2 0x1FFB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F07 DUP11 DUP8 DUP8 DUP2 MLOAD DUP2 LT PUSH2 0x1EFA JUMPI PUSH2 0x1EF9 PUSH2 0x425F JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x2EF9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x1F34 DUP15 DUP12 DUP12 DUP2 MLOAD DUP2 LT PUSH2 0x1F26 JUMPI PUSH2 0x1F25 PUSH2 0x425F JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 PUSH2 0x1A35 JUMP JUMPDEST POP POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1F85 JUMPI PUSH1 0x0 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP PUSH2 0x1FFB JUMP JUMPDEST DUP8 DUP4 EQ PUSH2 0x1FA0 JUMPI PUSH1 0x0 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP PUSH2 0x1FFB JUMP JUMPDEST DUP11 DUP3 LT ISZERO PUSH2 0x1FBC JUMPI PUSH1 0x0 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP PUSH2 0x1FFB JUMP JUMPDEST PUSH1 0x0 DUP2 EQ PUSH2 0x1FD8 JUMPI PUSH1 0x0 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP PUSH2 0x1FFB JUMP JUMPDEST POP POP POP POP POP POP POP POP DUP1 DUP1 PUSH2 0x1FEB SWAP1 PUSH2 0x48EA JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1E55 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x200B PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x2 ADD PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x209B PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x3 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x20ED CALLER DUP3 PUSH2 0x18A5 JUMP JUMPDEST ISZERO PUSH2 0x2124 JUMPI PUSH1 0x40 MLOAD PUSH32 0xD18923AB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x2131 CALLER DUP4 PUSH2 0x2376 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x213B PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x2 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0x21F5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x356680B700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH2 0x21FE PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x2 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x228A SWAP2 SWAP1 PUSH2 0x4810 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH2 0x229A PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x3 ADD PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x22E9 SWAP2 SWAP1 PUSH2 0x4810 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x23B872DD ADDRESS CALLER DUP6 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x232D SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4720 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x234C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2370 SWAP2 SWAP1 PUSH2 0x4783 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2382 DUP4 DUP4 PUSH2 0x17D2 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x238D PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x2 ADD PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x2419 SWAP2 SWAP1 PUSH2 0x4810 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 PUSH2 0x2429 PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x3 ADD PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x2478 SWAP2 SWAP1 PUSH2 0x4810 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP PUSH1 0x0 PUSH2 0x2489 PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x2 ADD PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD LT ISZERO PUSH2 0x253F JUMPI PUSH1 0x40 MLOAD PUSH32 0xA2005FA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2549 PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x3 ADD PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD LT ISZERO PUSH2 0x25C2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x2FE0888F00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x25CE DUP5 DUP5 PUSH2 0x19A5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 GT ISZERO PUSH2 0x2698 JUMPI PUSH1 0x1 PUSH2 0x25E3 PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH1 0x1 DUP5 PUSH2 0x266F SWAP2 SWAP1 PUSH2 0x4810 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x6 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x26A6 PUSH2 0x2A67 JUMP JUMPDEST PUSH1 0x3 ADD SLOAD PUSH2 0x26B2 PUSH2 0x34F9 JUMP JUMPDEST GT PUSH2 0x26E9 JUMPI PUSH1 0x40 MLOAD PUSH32 0xA426119900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x9CD9AFE22FEA86221D6E8117226B65BB0E2AF8C4F5B8ABF255FB0AFCAD4A3A9C SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2723 PUSH2 0x26EB JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH1 0x0 DUP2 EQ PUSH2 0x27BD JUMPI PUSH1 0x1 DUP2 PUSH2 0x27B8 SWAP2 SWAP1 PUSH2 0x4810 JUMP JUMPDEST PUSH2 0x27C0 JUMP JUMPDEST PUSH1 0x0 JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x2DA2ADFB54FD91BFB31E0D805792077DDCD5B0427B14A56397E2F3CC190C8830 SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH2 0x2800 DUP3 DUP3 PUSH2 0x35BB JUMP JUMPDEST PUSH2 0x2836 JUMPI PUSH1 0x40 MLOAD PUSH32 0x1824866A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2848 DUP7 DUP7 DUP6 PUSH2 0x1399 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2854 PUSH2 0x28BF JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x7 ADD SLOAD DUP2 PUSH1 0x6 ADD SLOAD PUSH2 0x286A SWAP2 SWAP1 PUSH2 0x42EC JUMP JUMPDEST DUP6 LT ISZERO PUSH2 0x28A3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x3661E75B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 DUP6 LT ISZERO PUSH2 0x28B1 JUMPI DUP5 PUSH2 0x28B3 JUMP JUMPDEST DUP2 JUMPDEST SWAP3 POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x2F7ED27098ECEFE70183EE38AE4542DEE65215B0786F6870871034402CFE2CC9 SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP6 SWAP1 POP PUSH1 0x0 PUSH2 0x291E ADDRESS DUP7 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2AF3 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0xB SIGNEXTEND SGT PUSH2 0x295C JUMPI PUSH2 0x2956 DUP6 DUP5 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x364F SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP PUSH2 0x2994 JUMP JUMPDEST PUSH2 0x2992 DUP6 DUP5 DUP4 PUSH2 0x296C SWAP2 SWAP1 PUSH2 0x4932 JUMP JUMPDEST DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2D46 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP JUMPDEST TIMESTAMP PUSH2 0x299D PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD DUP2 SWAP1 SSTORE POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2A50 SWAP3 SWAP2 SWAP1 PUSH2 0x49C1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0xDE06769CA6D80A022439E234EEBB61C3801D652175B62F912D6F8CAC7B881C65 SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2A9E PUSH2 0x28BF JUMP JUMPDEST PUSH1 0x9 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2AFF DUP6 PUSH2 0x3802 JUMP JUMPDEST SWAP2 POP POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xE6A1E888 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2B3F SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4A49 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2B5C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2B80 SWAP2 SWAP1 PUSH2 0x4AAA JUMP JUMPDEST SWAP1 SWAP2 SWAP3 POP SWAP1 POP POP DUP1 SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2BA1 DUP7 PUSH2 0x3A43 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x39255D5B DUP3 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xB4B333C6 DUP11 DUP11 DUP11 PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2BFC JUMPI PUSH2 0x2BFB PUSH2 0x4230 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2C2E JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2C42 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4B11 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2C9F JUMPI PUSH2 0x2C9E PUSH2 0x4230 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2CD1 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2CF0 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4B7E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2D0F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2D38 SWAP2 SWAP1 PUSH2 0x4CBA JUMP JUMPDEST POP PUSH1 0x1 SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2D54 DUP7 PUSH2 0x3A43 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x39255D5B DUP3 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x50209A62 DUP11 DUP11 DUP11 PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2DAF JUMPI PUSH2 0x2DAE PUSH2 0x4230 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2DE1 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2DF5 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4D03 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2E52 JUMPI PUSH2 0x2E51 PUSH2 0x4230 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2E84 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2EA3 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4B7E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2EC2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2EEB SWAP2 SWAP1 PUSH2 0x4CBA JUMP JUMPDEST POP PUSH1 0x1 SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2F04 PUSH2 0x27C9 JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH1 0x0 DUP2 EQ PUSH2 0x2F9E JUMPI PUSH1 0x1 DUP2 PUSH2 0x2F99 SWAP2 SWAP1 PUSH2 0x4810 JUMP JUMPDEST PUSH2 0x2FA1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x2FB8 PUSH2 0x26EB JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xB SIGNEXTEND PUSH2 0x305F PUSH2 0x26EB JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0xC SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3111 PUSH2 0x26EB JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0x31AB PUSH2 0x26EB JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x325E PUSH2 0x27C9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x1 ADD PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x1 ADD PUSH1 0x0 DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP1 POP PUSH2 0x33B9 DUP3 DUP11 DUP4 PUSH2 0x2FAA JUMP JUMPDEST SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP POP POP POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH2 0x33D9 PUSH2 0x26EB JUMP JUMPDEST PUSH1 0x2 ADD PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD SLOAD PUSH2 0x3425 PUSH2 0x26EB JUMP JUMPDEST PUSH1 0x2 ADD PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD DUP1 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x34E9 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH2 0x349F JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 POP SWAP2 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3503 PUSH2 0x2A67 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xB47064C8 ADDRESS PUSH20 0xEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3575 SWAP3 SWAP2 SWAP1 PUSH2 0x4D4F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3592 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x35B6 SWAP2 SWAP1 PUSH2 0x4D78 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x35F7 SWAP2 SWAP1 PUSH2 0x4DA5 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3614 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3638 SWAP2 SWAP1 PUSH2 0x4D78 JUMP JUMPDEST SWAP1 POP PUSH2 0x3644 DUP5 DUP5 PUSH2 0x3CCA JUMP JUMPDEST DUP2 GT SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x365D DUP7 PUSH2 0x3A43 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x39255D5B DUP3 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x62FC305E DUP11 DUP11 DUP11 PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x36B8 JUMPI PUSH2 0x36B7 PUSH2 0x4230 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x36EA JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x36FE SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4D03 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x375B JUMPI PUSH2 0x375A PUSH2 0x4230 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x378D JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x37AC SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4B7E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x37CB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x37F4 SWAP2 SWAP1 PUSH2 0x4CBA JUMP JUMPDEST POP PUSH1 0x1 SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x65599BF746E17A00EA62E3610586992D88101B78EEC3CF380706621FB97EA837 SLOAD SWAP2 POP PUSH32 0xB969D79D88ACD02D04ED7EE7D43B949E7DAF093D363ABCFBBC43DFDFD1CE969A SLOAD SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x39C4 JUMPI PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x3927 JUMPI DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x20BC4425 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3900 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3924 SWAP2 SWAP1 PUSH2 0x4DD5 JUMP JUMPDEST SWAP2 POP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xB6D200DE PUSH32 0xA9214CC96615E0085D3BB077758DB69497DC2DCE3B2B1E97BC93C3D18D83EFD3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3980 SWAP2 SWAP1 PUSH2 0x4E4A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x399D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x39C1 SWAP2 SWAP1 PUSH2 0x4EA3 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x3A01 JUMPI PUSH2 0x3A00 PUSH2 0x4ED0 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x3A3E JUMPI PUSH2 0x3A3D PUSH2 0x4ED0 JUMP JUMPDEST JUMPDEST SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x65599BF746E17A00EA62E3610586992D88101B78EEC3CF380706621FB97EA837 SLOAD SWAP2 POP PUSH32 0xB969D79D88ACD02D04ED7EE7D43B949E7DAF093D363ABCFBBC43DFDFD1CE969A SLOAD SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x3C4B JUMPI PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x3B68 JUMPI DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x20BC4425 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3B41 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3B65 SWAP2 SWAP1 PUSH2 0x4DD5 JUMP JUMPDEST SWAP2 POP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xB6D200DE PUSH32 0xA9214CC96615E0085D3BB077758DB69497DC2DCE3B2B1E97BC93C3D18D83EFD3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3BC1 SWAP2 SWAP1 PUSH2 0x4E4A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3BDE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3C02 SWAP2 SWAP1 PUSH2 0x4EA3 JUMP JUMPDEST SWAP1 POP DUP2 PUSH32 0x65599BF746E17A00EA62E3610586992D88101B78EEC3CF380706621FB97EA837 SSTORE DUP1 PUSH32 0xB969D79D88ACD02D04ED7EE7D43B949E7DAF093D363ABCFBBC43DFDFD1CE969A SSTORE JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x3C88 JUMPI PUSH2 0x3C87 PUSH2 0x4ED0 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x3CC5 JUMPI PUSH2 0x3CC4 PUSH2 0x4ED0 JUMP JUMPDEST JUMPDEST SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 SWAP1 POP PUSH1 0x0 PUSH2 0x3CFB DUP5 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3D70 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3D28 ADDRESS DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3E04 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x3D32 PUSH2 0x28BF JUMP JUMPDEST PUSH1 0x8 ADD SLOAD DUP6 DUP3 PUSH2 0x3D42 SWAP2 SWAP1 PUSH2 0x4932 JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3D5A SWAP2 SWAP1 PUSH2 0x48A8 JUMP JUMPDEST DUP3 PUSH2 0x3D65 SWAP2 SWAP1 PUSH2 0x42EC JUMP JUMPDEST SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3D7C DUP5 PUSH2 0x3802 JUMP JUMPDEST SWAP2 POP POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x8D997F6E DUP6 DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3DBA SWAP3 SWAP2 SWAP1 PUSH2 0x4EFF JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3DD7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3DFB SWAP2 SWAP1 PUSH2 0x4D78 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3E10 DUP5 PUSH2 0x3802 JUMP JUMPDEST SWAP2 POP POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xE8E7E2D1 DUP6 DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3E4E SWAP3 SWAP2 SWAP1 PUSH2 0x4F28 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3E6B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3E8F SWAP2 SWAP1 PUSH2 0x4F51 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3ED7 DUP3 PUSH2 0x3EAC JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3EE7 DUP2 PUSH2 0x3ECC JUMP JUMPDEST DUP2 EQ PUSH2 0x3EF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x3F04 DUP2 PUSH2 0x3EDE JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3F1D DUP2 PUSH2 0x3F0A JUMP JUMPDEST DUP2 EQ PUSH2 0x3F28 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x3F3A DUP2 PUSH2 0x3F14 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3F57 JUMPI PUSH2 0x3F56 PUSH2 0x3EA2 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x3F65 DUP6 DUP3 DUP7 ADD PUSH2 0x3EF5 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x3F76 DUP6 DUP3 DUP7 ADD PUSH2 0x3F2B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0xB SIGNEXTEND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3F96 DUP2 PUSH2 0x3F80 JUMP JUMPDEST DUP2 EQ PUSH2 0x3FA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x3FB3 DUP2 PUSH2 0x3F8D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3FD2 JUMPI PUSH2 0x3FD1 PUSH2 0x3EA2 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x3FE0 DUP7 DUP3 DUP8 ADD PUSH2 0x3EF5 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x3FF1 DUP7 DUP3 DUP8 ADD PUSH2 0x3EF5 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x4002 DUP7 DUP3 DUP8 ADD PUSH2 0x3FA4 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH2 0x4015 DUP2 PUSH2 0x3F0A JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x4030 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x400C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x4052 JUMPI PUSH2 0x4051 PUSH2 0x3EA2 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x4060 DUP9 DUP3 DUP10 ADD PUSH2 0x3EF5 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH2 0x4071 DUP9 DUP3 DUP10 ADD PUSH2 0x3EF5 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 PUSH2 0x4082 DUP9 DUP3 DUP10 ADD PUSH2 0x3EF5 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 PUSH2 0x4093 DUP9 DUP3 DUP10 ADD PUSH2 0x3F2B JUMP JUMPDEST SWAP3 POP POP PUSH1 0x80 PUSH2 0x40A4 DUP9 DUP3 DUP10 ADD PUSH2 0x3FA4 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x40C8 JUMPI PUSH2 0x40C7 PUSH2 0x3EA2 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x40D6 DUP6 DUP3 DUP7 ADD PUSH2 0x3EF5 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x40E7 DUP6 DUP3 DUP7 ADD PUSH2 0x3EF5 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x4106 DUP2 PUSH2 0x40F1 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x4121 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x40FD JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4140 JUMPI PUSH2 0x413F PUSH2 0x3EA2 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x414E DUP7 DUP3 DUP8 ADD PUSH2 0x3EF5 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x415F DUP7 DUP3 DUP8 ADD PUSH2 0x3EF5 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x4170 DUP7 DUP3 DUP8 ADD PUSH2 0x3F2B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH2 0x4183 DUP2 PUSH2 0x3ECC JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x419C DUP2 PUSH2 0x4189 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC0 DUP3 ADD SWAP1 POP PUSH2 0x41B7 PUSH1 0x0 DUP4 ADD DUP10 PUSH2 0x417A JUMP JUMPDEST PUSH2 0x41C4 PUSH1 0x20 DUP4 ADD DUP9 PUSH2 0x400C JUMP JUMPDEST PUSH2 0x41D1 PUSH1 0x40 DUP4 ADD DUP8 PUSH2 0x400C JUMP JUMPDEST PUSH2 0x41DE PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x400C JUMP JUMPDEST PUSH2 0x41EB PUSH1 0x80 DUP4 ADD DUP6 PUSH2 0x4193 JUMP JUMPDEST PUSH2 0x41F8 PUSH1 0xA0 DUP4 ADD DUP5 PUSH2 0x40FD JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4219 JUMPI PUSH2 0x4218 PUSH2 0x3EA2 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x4227 DUP5 DUP3 DUP6 ADD PUSH2 0x3EF5 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x42F7 DUP3 PUSH2 0x3F0A JUMP JUMPDEST SWAP2 POP PUSH2 0x4302 DUP4 PUSH2 0x3F0A JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x431A JUMPI PUSH2 0x4319 PUSH2 0x42BD JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x4329 DUP2 PUSH2 0x3F80 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 ADD SWAP1 POP PUSH2 0x4344 PUSH1 0x0 DUP4 ADD DUP9 PUSH2 0x417A JUMP JUMPDEST PUSH2 0x4351 PUSH1 0x20 DUP4 ADD DUP8 PUSH2 0x417A JUMP JUMPDEST PUSH2 0x435E PUSH1 0x40 DUP4 ADD DUP7 PUSH2 0x417A JUMP JUMPDEST PUSH2 0x436B PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x400C JUMP JUMPDEST PUSH2 0x4378 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x4320 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x43BC JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x43A1 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x43E4 DUP3 PUSH2 0x4382 JUMP JUMPDEST PUSH2 0x43EE DUP2 DUP6 PUSH2 0x438D JUMP JUMPDEST SWAP4 POP PUSH2 0x43FE DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x439E JUMP JUMPDEST PUSH2 0x4407 DUP2 PUSH2 0x43C8 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x4 DUP2 LT PUSH2 0x444F JUMPI PUSH2 0x444E PUSH2 0x428E JUMP JUMPDEST JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH2 0x4460 DUP3 PUSH2 0x443E JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4470 DUP3 PUSH2 0x4452 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x4480 DUP2 PUSH2 0x4465 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4492 DUP4 DUP4 PUSH2 0x4477 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x44B6 DUP3 PUSH2 0x4412 JUMP JUMPDEST PUSH2 0x44C0 DUP2 DUP6 PUSH2 0x441D JUMP JUMPDEST SWAP4 POP PUSH2 0x44CB DUP4 PUSH2 0x442E JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x44FC JUMPI DUP2 MLOAD PUSH2 0x44E3 DUP9 DUP3 PUSH2 0x4486 JUMP JUMPDEST SWAP8 POP PUSH2 0x44EE DUP4 PUSH2 0x449E JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x44CF JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4551 DUP3 PUSH2 0x4382 JUMP JUMPDEST PUSH2 0x455B DUP2 DUP6 PUSH2 0x4535 JUMP JUMPDEST SWAP4 POP PUSH2 0x456B DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x439E JUMP JUMPDEST PUSH2 0x4574 DUP2 PUSH2 0x43C8 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x458B DUP4 DUP4 PUSH2 0x4546 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x45AB DUP3 PUSH2 0x4509 JUMP JUMPDEST PUSH2 0x45B5 DUP2 DUP6 PUSH2 0x4514 JUMP JUMPDEST SWAP4 POP DUP4 PUSH1 0x20 DUP3 MUL DUP6 ADD PUSH2 0x45C7 DUP6 PUSH2 0x4525 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x4603 JUMPI DUP5 DUP5 SUB DUP10 MSTORE DUP2 MLOAD PUSH2 0x45E4 DUP6 DUP3 PUSH2 0x457F JUMP JUMPDEST SWAP5 POP PUSH2 0x45EF DUP4 PUSH2 0x4593 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP11 ADD SWAP10 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x45CB JUMP JUMPDEST POP DUP3 SWAP8 POP DUP8 SWAP6 POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP4 ADD PUSH1 0x0 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH1 0x0 DUP7 ADD MSTORE PUSH2 0x4632 DUP3 DUP3 PUSH2 0x44AB JUMP JUMPDEST SWAP2 POP POP PUSH1 0x20 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH1 0x20 DUP7 ADD MSTORE PUSH2 0x464C DUP3 DUP3 PUSH2 0x45A0 JUMP JUMPDEST SWAP2 POP POP DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x466E PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x417A JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x4680 DUP2 DUP7 PUSH2 0x43D9 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x4694 DUP2 DUP6 PUSH2 0x4615 JUMP JUMPDEST SWAP1 POP PUSH2 0x46A3 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x417A JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x46B5 DUP2 PUSH2 0x4189 JUMP JUMPDEST DUP2 EQ PUSH2 0x46C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x46D2 DUP2 PUSH2 0x46AC JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x46EE JUMPI PUSH2 0x46ED PUSH2 0x3EA2 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x46FC DUP5 DUP3 DUP6 ADD PUSH2 0x46C3 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x471A PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x4193 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x4735 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x417A JUMP JUMPDEST PUSH2 0x4742 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x417A JUMP JUMPDEST PUSH2 0x474F PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x400C JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x4760 DUP2 PUSH2 0x40F1 JUMP JUMPDEST DUP2 EQ PUSH2 0x476B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x477D DUP2 PUSH2 0x4757 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4799 JUMPI PUSH2 0x4798 PUSH2 0x3EA2 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x47A7 DUP5 DUP3 DUP6 ADD PUSH2 0x476E JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x47EA DUP3 PUSH2 0x3F0A JUMP JUMPDEST SWAP2 POP PUSH2 0x47F5 DUP4 PUSH2 0x3F0A JUMP JUMPDEST SWAP3 POP DUP3 PUSH2 0x4805 JUMPI PUSH2 0x4804 PUSH2 0x47B0 JUMP JUMPDEST JUMPDEST DUP3 DUP3 DIV SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x481B DUP3 PUSH2 0x3F0A JUMP JUMPDEST SWAP2 POP PUSH2 0x4826 DUP4 PUSH2 0x3F0A JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP DUP2 DUP2 GT ISZERO PUSH2 0x483E JUMPI PUSH2 0x483D PUSH2 0x42BD JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x484F DUP3 PUSH2 0x3F80 JUMP JUMPDEST SWAP2 POP PUSH2 0x485A DUP4 PUSH2 0x3F80 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP PUSH12 0x7FFFFFFFFFFFFFFFFFFFFFFF DUP2 SGT PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800000000000000000000000 DUP3 SLT OR ISZERO PUSH2 0x48A2 JUMPI PUSH2 0x48A1 PUSH2 0x42BD JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x48B3 DUP3 PUSH2 0x3F0A JUMP JUMPDEST SWAP2 POP PUSH2 0x48BE DUP4 PUSH2 0x3F0A JUMP JUMPDEST SWAP3 POP DUP3 DUP3 MUL PUSH2 0x48CC DUP2 PUSH2 0x3F0A JUMP JUMPDEST SWAP2 POP DUP3 DUP3 DIV DUP5 EQ DUP4 ISZERO OR PUSH2 0x48E3 JUMPI PUSH2 0x48E2 PUSH2 0x42BD JUMP JUMPDEST JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x48F5 DUP3 PUSH2 0x3F0A JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x4927 JUMPI PUSH2 0x4926 PUSH2 0x42BD JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x493D DUP3 PUSH2 0x3F80 JUMP JUMPDEST SWAP2 POP PUSH2 0x4948 DUP4 PUSH2 0x3F80 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800000000000000000000000 DUP2 SLT PUSH12 0x7FFFFFFFFFFFFFFFFFFFFFFF DUP3 SGT OR ISZERO PUSH2 0x4990 JUMPI PUSH2 0x498F PUSH2 0x42BD JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x49BB DUP2 PUSH2 0x4996 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x49D6 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x49B2 JUMP JUMPDEST PUSH2 0x49E3 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x49B2 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4A0F PUSH2 0x4A0A PUSH2 0x4A05 DUP5 PUSH2 0x3EAC JUMP JUMPDEST PUSH2 0x49EA JUMP JUMPDEST PUSH2 0x3EAC JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4A21 DUP3 PUSH2 0x49F4 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4A33 DUP3 PUSH2 0x4A16 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x4A43 DUP2 PUSH2 0x4A28 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x4A5E PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x4A3A JUMP JUMPDEST PUSH2 0x4A6B PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x417A JUMP JUMPDEST PUSH2 0x4A78 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x417A JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x4A8F DUP2 PUSH2 0x3F14 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x4AA4 DUP2 PUSH2 0x3F8D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4AC4 JUMPI PUSH2 0x4AC3 PUSH2 0x3EA2 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x4AD2 DUP8 DUP3 DUP9 ADD PUSH2 0x4A80 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x4AE3 DUP8 DUP3 DUP9 ADD PUSH2 0x4A95 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x4AF4 DUP8 DUP3 DUP9 ADD PUSH2 0x4A80 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x4B05 DUP8 DUP3 DUP9 ADD PUSH2 0x4A80 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x4B26 PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x4A3A JUMP JUMPDEST PUSH2 0x4B33 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x417A JUMP JUMPDEST PUSH2 0x4B40 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x417A JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x4B52 DUP2 DUP5 PUSH2 0x43D9 JUMP JUMPDEST SWAP1 POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4B68 DUP3 PUSH2 0x4A16 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x4B78 DUP2 PUSH2 0x4B5D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x4B93 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x4B6F JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x4BA5 DUP2 DUP6 PUSH2 0x43D9 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x4BB9 DUP2 DUP5 PUSH2 0x43D9 JUMP JUMPDEST SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4BD6 DUP3 PUSH2 0x43C8 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x4BF5 JUMPI PUSH2 0x4BF4 PUSH2 0x4230 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4C08 PUSH2 0x3E98 JUMP JUMPDEST SWAP1 POP PUSH2 0x4C14 DUP3 DUP3 PUSH2 0x4BCD JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x4C34 JUMPI PUSH2 0x4C33 PUSH2 0x4230 JUMP JUMPDEST JUMPDEST PUSH2 0x4C3D DUP3 PUSH2 0x43C8 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4C5D PUSH2 0x4C58 DUP5 PUSH2 0x4C19 JUMP JUMPDEST PUSH2 0x4BFE JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x4C79 JUMPI PUSH2 0x4C78 PUSH2 0x4BC8 JUMP JUMPDEST JUMPDEST PUSH2 0x4C84 DUP5 DUP3 DUP6 PUSH2 0x439E JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4CA1 JUMPI PUSH2 0x4CA0 PUSH2 0x4BC3 JUMP JUMPDEST JUMPDEST DUP2 MLOAD PUSH2 0x4CB1 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x4C4A JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4CD0 JUMPI PUSH2 0x4CCF PUSH2 0x3EA2 JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP3 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4CEE JUMPI PUSH2 0x4CED PUSH2 0x3EA7 JUMP JUMPDEST JUMPDEST PUSH2 0x4CFA DUP5 DUP3 DUP6 ADD PUSH2 0x4C8C JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x4D18 PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x4A3A JUMP JUMPDEST PUSH2 0x4D25 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x417A JUMP JUMPDEST PUSH2 0x4D32 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x4320 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x4D44 DUP2 DUP5 PUSH2 0x43D9 JUMP JUMPDEST SWAP1 POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x4D64 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x417A JUMP JUMPDEST PUSH2 0x4D71 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x417A JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4D8E JUMPI PUSH2 0x4D8D PUSH2 0x3EA2 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x4D9C DUP5 DUP3 DUP6 ADD PUSH2 0x4A80 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x4DBA PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x417A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x4DCF DUP2 PUSH2 0x3EDE JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4DEB JUMPI PUSH2 0x4DEA PUSH2 0x3EA2 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x4DF9 DUP5 DUP3 DUP6 ADD PUSH2 0x4DC0 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 SHL SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4E34 PUSH2 0x4E2F PUSH2 0x4E2A DUP5 PUSH2 0x4E02 JUMP JUMPDEST PUSH2 0x4E0C JUMP JUMPDEST PUSH2 0x4189 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x4E44 DUP2 PUSH2 0x4E19 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x4E5F PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x4E3B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4E70 DUP3 PUSH2 0x3ECC JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x4E80 DUP2 PUSH2 0x4E65 JUMP JUMPDEST DUP2 EQ PUSH2 0x4E8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x4E9D DUP2 PUSH2 0x4E77 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4EB9 JUMPI PUSH2 0x4EB8 PUSH2 0x3EA2 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x4EC7 DUP5 DUP3 DUP6 ADD PUSH2 0x4E8E JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x4F14 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x4A3A JUMP JUMPDEST PUSH2 0x4F21 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4320 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x4F3D PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x4A3A JUMP JUMPDEST PUSH2 0x4F4A PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x417A JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4F67 JUMPI PUSH2 0x4F66 PUSH2 0x3EA2 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x4F75 DUP5 DUP3 DUP6 ADD PUSH2 0x4A95 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH2 0xD239 0xE0 LOG0 PUSH29 0xCEFFACE3BC906C97115321134C0696501951366DDA0B6F82D91A64736F PUSH13 0x63430008120033000000000000 ","sourceMap":"704:8378:27:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6510:200;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7425:229;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4910:371;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7236:183;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8062:176;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8258:179;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8457:277;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;7860:196;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8740:181;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8927:153;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6716:500;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1210:3694;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5351:1153;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6510:200;6594:51;6633:11;6594:38;:51::i;:::-;6655:48;6682:11;6695:7;6655:26;:48::i;:::-;6510:200;;:::o;7425:229::-;7561:7;7587:60;7617:5;7624:11;7637:9;7587:29;:60::i;:::-;7580:67;;7425:229;;;;;:::o;4910:371::-;5087:33;:31;:33::i;:::-;5131:143;5166:11;5191:7;5212:9;5235:6;5255:9;5131:21;:143::i;:::-;4910:371;;;;;:::o;7236:183::-;7342:7;7368:44;7393:5;7400:11;7368:24;:44::i;:::-;7361:51;;7236:183;;;;:::o;8062:176::-;8166:4;8189:42;8212:5;8219:11;8189:22;:42::i;:::-;8182:49;;8062:176;;;;:::o;8258:179::-;8364:7;8390:40;8411:5;8418:11;8390:20;:40::i;:::-;8383:47;;8258:179;;;;:::o;8457:277::-;8607:7;8616;8625;8634;8643;8652:4;8679:48;8700:5;8707:11;8720:6;8679:20;:48::i;:::-;8672:55;;;;;;;;;;;;8457:277;;;;;;;;;;:::o;7860:196::-;7974:4;7997:52;8027:7;8036:12;7997:29;:52::i;:::-;7990:59;;7860:196;;;;:::o;8740:181::-;8845:7;8871:43;8895:5;8902:11;8871:23;:43::i;:::-;8864:50;;8740:181;;;;:::o;8927:153::-;9010:7;9036:37;9061:11;9036:24;:37::i;:::-;9029:44;;8927:153;;;:::o;6716:500::-;7108:41;7137:11;7108:28;:41::i;:::-;7160:49;7188:11;7201:7;7160:27;:49::i;:::-;6716:500;;:::o;1210:3694::-;1336:41;1365:11;1336:28;:41::i;:::-;1538:53;1567:10;1579:11;1538:28;:53::i;:::-;1616:48;:46;:48::i;:::-;1674:51;1713:11;1674:38;:51::i;:::-;1735:42;1780:41;:39;:41::i;:::-;1735:86;;1831:26;1860:85;1901:9;1924:11;1860:27;:85::i;:::-;1831:114;;2088:1;1973:8;:35;;:46;2009:9;1973:46;;;;;;;;;;;;;;;:59;2020:11;1973:59;;;;;;;;;;;;;;;:79;2033:18;1973:79;;;;;;;;;;;:111;;;:116;1956:170;;2107:19;;;;;;;;;;;;;;1956:170;2137:33;2173:22;:20;:22::i;:::-;2137:58;;2205:14;2222:8;:31;;:42;2254:9;2222:42;;;;;;;;;;;;;;;:55;2265:11;2222:55;;;;;;;;;;;;;;;:75;2278:18;2222:75;;;;;;;;;;;:106;;;;;;;;;;;;2205:123;;2338:64;2380:11;2393:8;2338:41;:64::i;:::-;2412:25;2440:133;2483:10;2507:11;2532:9;2555:8;2440:29;:133::i;:::-;2412:161;;2662:20;2685:45;2706:10;2718:11;2685:20;:45::i;:::-;2662:68;;2817:9;2741:5;:25;;:37;2767:10;2741:37;;;;;;;;;;;;;;;:50;2779:11;2741:50;;;;;;;;;;;;;;;:64;2792:12;2741:64;;;;;;;;;;;:73;;;:85;;;;;;;;;;;;;;;;;;2929:18;2836:5;:25;;:37;2862:10;2836:37;;;;;;;;;;;;;;;:50;2874:11;2836:50;;;;;;;;;;;;;;;:64;2887:12;2836:64;;;;;;;;;;;:90;;:111;;;;2958:42;3003:41;:39;:41::i;:::-;2958:86;;3054:23;3080:8;:21;;:34;3102:11;3080:34;;;;;;;;;;;;;;;;3054:60;;3197:9;3124:8;:31;;:44;3156:11;3124:44;;;;;;;;;;;;;;;:61;3169:15;3124:61;;;;;;;;;;;:70;;;:82;;;;;;;;;;;;;;;;;;3306:18;3216:8;:31;;:44;3248:11;3216:44;;;;;;;;;;;;;;;:61;3261:15;3216:61;;;;;;;;;;;:87;;:108;;;;3416:28;3334:8;:31;;:44;3366:11;3334:44;;;;;;;;;;;;;;;:61;3379:15;3334:61;;;;;;;;;;;:79;;:110;;;;3547:15;3454:5;:25;;:37;3480:10;3454:37;;;;;;;;;;;;;;;:50;3492:11;3454:50;;;;;;;;;;;;;;;:64;3505:12;3454:64;;;;;;;;;;;:90;;:108;;;;3610:151;3645:11;3670:10;3694:9;3717:12;3743:8;3610:21;:151::i;:::-;3808:36;3847:94;;;;;;;;3894:1;3881:15;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3847:94;;;;3928:1;3916:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3847:94;;;3808:133;;3984:11;3952:18;:26;;;3979:1;3952:29;;;;;;;;:::i;:::-;;;;;;;:43;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;4037:18;4005;:26;;;4032:1;4005:29;;;;;;;;:::i;:::-;;;;;;;:50;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;4095:116;4153:17;4135:15;:35;;;;:::i;:::-;4184:17;4095:26;:116::i;:::-;4066:18;:23;;;4090:1;4066:26;;;;;;;;:::i;:::-;;;;;;;:145;;;;4222:29;4290:26;;;4330:11;4355:10;4379:9;4402:12;4428:8;4254:192;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4222:224;;4531:43;:41;:43::i;:::-;:70;;;;;;;;;;;;:94;;;4651:4;4674:16;4708:18;4752:1;4531:237;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4457:5;:25;;:37;4483:10;4457:37;;;;;;;;;;;;;;;:50;4495:11;4457:50;;;;;;;;;;;;;;;:64;4508:12;4457:64;;;;;;;;;;;:71;;:311;;;;4847:1;4803:5;:15;;:27;4819:10;4803:27;;;;;;;;;;;;;;;:40;4831:11;4803:40;;;;;;;;;;;;;;;;:45;;;;;;;:::i;:::-;;;;;;;;4896:1;4858:8;:21;;:34;4880:11;4858:34;;;;;;;;;;;;;;;;:39;;;;;;;:::i;:::-;;;;;;;;1326:3578;;;;;;;;;;1210:3694;;;:::o;5351:1153::-;5426:33;5462:22;:20;:22::i;:::-;5426:58;;5495:27;5616:28;:26;:28::i;:::-;:44;;;5525:5;:25;;:37;5551:10;5525:37;;;;;;;;;;;;;;;:50;5563:11;5525:50;;;;;;;;;;;;;;;:58;5576:6;5525:58;;;;;;;;;;;:76;;;:135;;;;:::i;:::-;5495:165;;5693:19;5675:15;:37;5671:60;;;5721:10;;;;;;;;;;;;;;5671:60;5851:30;:28;:30::i;:::-;:44;;;;;;;;;;;;:55;;;5920:5;:16;;:28;5937:10;5920:28;;;;;;;;;;;;;;;:41;5949:11;5920:41;;;;;;;;;;;;;;;:49;5962:6;5920:49;;;;;;;;;;;:56;;;5851:135;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6020:16;6039:5;:25;;:37;6065:10;6039:37;;;;;;;;;;;;;;;:50;6077:11;6039:50;;;;;;;;;;;;;;;:58;6090:6;6039:58;;;;;;;;;;;:67;;;;;;;;;;;;6020:86;;6116:20;6139:5;:25;;:37;6165:10;6139:37;;;;;;;;;;;;;;;:50;6177:11;6139:50;;;;;;;;;;;;;;;:58;6190:6;6139:58;;;;;;;;;;;:71;;;6116:94;;6221:276;6256:11;6281:10;6305:8;6327:6;6347:41;:39;:41::i;:::-;:68;;:78;6416:8;6347:78;;;;;;;;;;;;;;;:91;6426:11;6347:91;;;;;;;;;;;;;;;:105;6439:12;6347:105;;;;;;;;;;;:140;;;;;;;;;;;;6221:21;:276::i;:::-;5416:1088;;;;5351:1153;;:::o;7163:158:43:-;7250:36;7274:11;7250:23;:36::i;:::-;7245:69;;7295:19;;;;;;;;;;;;;;7245:69;7163:158;:::o;2128:343:44:-;2225:11;2213:37;;;2264:10;2296:4;2315:7;2213:119;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2395:7;2343:14;:12;:14::i;:::-;:23;;:35;2367:10;2343:35;;;;;;;;;;;;;;;:48;2379:11;2343:48;;;;;;;;;;;;;;;;:59;;;;;;;:::i;:::-;;;;;;;;2457:7;2412:14;:12;:14::i;:::-;:28;;:41;2441:11;2412:41;;;;;;;;;;;;;;;;:52;;;;;;;:::i;:::-;;;;;;;;2128:343;;:::o;4432:678::-;4569:7;4588:22;4686:9;4671:26;;4613:14;:12;:14::i;:::-;:23;;:30;4637:5;4613:30;;;;;;;;;;;;;;;:43;4644:11;4613:43;;;;;;;;;;;;;;;;:84;;;;:::i;:::-;4588:109;;4708:42;4753:41;:39;:41::i;:::-;4708:86;;4826:8;:27;;;4809:14;:44;4805:92;;;4874:23;;;;;;;;;;;;;;4805:92;4908:20;4948:8;:27;;;4931:14;:44;;;;:::i;:::-;4908:67;;5005:8;:24;;;4990:12;:39;4986:87;;;5050:23;;;;;;;;;;;;;;4986:87;5091:12;5084:19;;;;;4432:678;;;;;:::o;2877:160:42:-;2958:18;:16;:18::i;:::-;:32;;;;;;;;;;;;2936:55;;:10;:55;;;2932:98;;3012:18;;;;;;;;;;;;;;2932:98;2877:160::o;11439:892:44:-;11617:23;11655:11;11617:50;;11677:14;11694:49;11726:4;11733:9;11694:11;:23;;;;:49;;;;;:::i;:::-;11677:66;;11782:1;11769:9;11758:8;:20;;;;:::i;:::-;:25;;;11754:190;;11799:48;11830:4;11837:9;11799:11;:22;;;;:48;;;;;:::i;:::-;;11754:190;;;11878:55;11901:9;11923;11912:8;:20;;;;:::i;:::-;11878:11;:22;;;;:55;;;;;:::i;:::-;;11754:190;12039:28;11954:14;:12;:14::i;:::-;:34;;:43;11989:7;11954:43;;;;;;;;;;;;;;;:56;11998:11;11954:56;;;;;;;;;;;;;;;:64;12011:6;11954:64;;;;;;;;;;;:82;;:113;;;;12078:20;12101:14;:12;:14::i;:::-;:34;;:43;12136:7;12101:43;;;;;;;;;;;;;;;:56;12145:11;12101:56;;;;;;;;;;;;;;;:64;12158:6;12101:64;;;;;;;;;;;:77;;;12078:100;;12296:28;12188:37;:35;:37::i;:::-;:60;;:73;12249:11;12188:73;;;;;;;;;;;;;;;:87;12262:12;12188:87;;;;;;;;;;;:105;;:136;;;;11607:724;;;11439:892;;;;;:::o;5839:1151::-;5946:7;5965:20;5995;6018:36;6035:5;6042:11;6018:16;:36::i;:::-;5995:59;;6078:16;6108:20;6142:25;6181;6234:21;6268:46;6281:5;6288:11;6301:12;6268;:46::i;:::-;6064:250;;;;;;;;;;;6327:15;6346:21;6371:76;6411:8;6421:11;6434:12;6371:39;:76::i;:::-;6324:123;;;;;;6462:16;6458:496;;;6509:1;6494:16;;6458:496;;;6566:1;6545:17;:22;6541:403;;6683:17;6663;:37;;;;:::i;:::-;6630:8;6622:17;;:79;;;;:::i;:::-;6587:114;;6541:403;;;6743:1;6726:13;:18;6722:222;;6856:17;6840:13;:33;;;;:::i;:::-;6807:8;6799:17;;:75;;;;:::i;:::-;6764:110;;6722:222;;;6928:1;6913:16;;6722:222;6541:403;6458:496;6971:12;6964:19;;;;;;;;;;;5839:1151;;;;:::o;6996:643::-;7101:4;7117:20;7140:32;7153:5;7160:11;7140:12;:32::i;:::-;7117:55;;7201:1;7186:12;:16;7182:429;;;7225:21;7250:134;7302:5;7325:11;7369:1;7354:12;:16;;;;:::i;:::-;7250:34;:134::i;:::-;7218:166;;;;;7561:1;7422:14;:12;:14::i;:::-;:42;;:49;7465:5;7422:49;;;;;;;;;;;;;;;:62;7472:11;7422:62;;;;;;;;;;;;;;;:80;7500:1;7485:12;:16;;;;:::i;:::-;7422:80;;;;;;;;;;;:119;;;:140;:178;;;;;7599:1;7582:13;:18;7422:178;7399:201;;;;;;7182:429;7627:5;7620:12;;;6996:643;;;;;:::o;9223:180::-;9326:7;9352:14;:12;:14::i;:::-;:24;;:31;9377:5;9352:31;;;;;;;;;;;;;;;:44;9384:11;9352:44;;;;;;;;;;;;;;;;9345:51;;9223:180;;;;:::o;9651:763::-;9802:7;9811;9820;9829;9838;9847:4;9888:14;:12;:14::i;:::-;:25;;:32;9914:5;9888:32;;;;;;;;;;;;;;;:45;9921:11;9888:45;;;;;;;;;;;;;;;:53;9934:6;9888:53;;;;;;;;;;;:62;;;;;;;;;;;;9964:14;:12;:14::i;:::-;:25;;:32;9990:5;9964:32;;;;;;;;;;;;;;;:45;9997:11;9964:45;;;;;;;;;;;;;;;:53;10010:6;9964:53;;;;;;;;;;;:66;;;10044:14;:12;:14::i;:::-;:38;;:45;10083:5;10044:45;;;;;;;;;;;;;;;:58;10090:11;10044:58;;;;;;;;;;;;;;;:66;10103:6;10044:66;;;;;;;;;;;:84;;;10142:14;:12;:14::i;:::-;:38;;:45;10181:5;10142:45;;;;;;;;;;;;;;;:58;10188:11;10142:58;;;;;;;;;;;;;;;:66;10201:6;10142:66;;;;;;;;;;;:84;;;10240:14;:12;:14::i;:::-;:25;;:32;10266:5;10240:32;;;;;;;;;;;;;;;:45;10273:11;10240:45;;;;;;;;;;;;;;;:53;10286:6;10240:53;;;;;;;;;;;:60;;;10314:14;:12;:14::i;:::-;:38;;:45;10353:5;10314:45;;;;;;;;;;;;;;;:58;10360:11;10314:58;;;;;;;;;;;;;;;:66;10373:6;10314:66;;;;;;;;;;;:83;;;;;;;;;;;;9867:540;;;;;;;;;;;;9651:763;;;;;;;;;;:::o;7645:1572::-;7760:4;7777:24;7803:28;7835:60;7882:12;7835:46;:60::i;:::-;7776:119;;;;7930:1;7910:16;:21;:48;;;;7957:1;7935:11;:18;:23;;7910:48;7906:66;;;7967:5;7960:12;;;;;;7906:66;7988:9;7983:1206;8007:11;:18;8003:1;:22;7983:1206;;;8046:26;8075:103;8120:12;8150:11;8162:1;8150:14;;;;;;;;:::i;:::-;;;;;;;;8075:27;:103::i;:::-;8046:132;;8198:22;8222:21;8247:171;8312:12;8346:11;8358:1;8346:14;;;;;;;;:::i;:::-;;;;;;;;8382:18;8247:43;:171::i;:::-;8193:225;;;;;;8455:16;8437:14;:34;8433:52;;8480:5;8473:12;;;;;;;;;;8433:52;8521:1;8504:13;:18;8500:36;;8531:5;8524:12;;;;;;;;;;8500:36;8551:24;8578:87;8612:7;8637:11;8649:1;8637:14;;;;;;;;:::i;:::-;;;;;;;;8578:16;:87::i;:::-;8551:114;;8698:16;8732:20;8770:25;8813;8875:55;8888:7;8897:11;8909:1;8897:14;;;;;;;;:::i;:::-;;;;;;;;8913:16;8875:12;:55::i;:::-;8680:250;;;;;;;;;;8961:12;8949:24;;:8;:24;;;8945:42;;8982:5;8975:12;;;;;;;;;;;;;;;8945:42;9022:18;9006:12;:34;9002:52;;9049:5;9042:12;;;;;;;;;;;;;;;9002:52;9093:16;9073:17;:36;9069:54;;;9118:5;9111:12;;;;;;;;;;;;;;;9069:54;9163:1;9142:17;:22;9138:40;;9173:5;9166:12;;;;;;;;;;;;;;;9138:40;8032:1157;;;;;;;;8027:3;;;;;:::i;:::-;;;;7983:1206;;;;9206:4;9199:11;;;;7645:1572;;;;;:::o;10420:182::-;10526:7;10552:14;:12;:14::i;:::-;:23;;:30;10576:5;10552:30;;;;;;;;;;;;;;;:43;10583:11;10552:43;;;;;;;;;;;;;;;;10545:50;;10420:182;;;;:::o;10608:158::-;10692:7;10718:14;:12;:14::i;:::-;:28;;:41;10747:11;10718:41;;;;;;;;;;;;;;;;10711:48;;10608:158;;;:::o;3220:149::-;3299:39;3314:10;3326:11;3299:14;:39::i;:::-;3295:67;;;3347:15;;;;;;;;;;;;;;3295:67;3220:149;:::o;2477:695::-;2669:45;2690:10;2702:11;2669:20;:45::i;:::-;2739:23;2765:14;:12;:14::i;:::-;:23;;:35;2789:10;2765:35;;;;;;;;;;;;;;;:70;2814:11;2765:70;;;;;;;;;;;;;;;;2739:96;;2868:7;2850:15;:25;2846:57;;;2884:19;;;;;;;;;;;;;;2846:57;2966:7;2914:14;:12;:14::i;:::-;:23;;:35;2938:10;2914:35;;;;;;;;;;;;;;;:48;2950:11;2914:48;;;;;;;;;;;;;;;;:59;;;;;;;:::i;:::-;;;;;;;;3028:7;2983:14;:12;:14::i;:::-;:28;;:41;3012:11;2983:41;;;;;;;;;;;;;;;;:52;;;;;;;:::i;:::-;;;;;;;;3058:11;3046:37;;;3105:4;3124:10;3148:7;3046:119;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2575:597;2477:695;;:::o;3417:953::-;3502:20;3525:36;3542:5;3549:11;3525:16;:36::i;:::-;3502:59;;3619:12;3572:14;:12;:14::i;:::-;:23;;:30;3596:5;3572:30;;;;;;;;;;;;;;;:43;3603:11;3572:43;;;;;;;;;;;;;;;;:59;;;;;;;:::i;:::-;;;;;;;;3686:12;3641:14;:12;:14::i;:::-;:28;;:41;3670:11;3641:41;;;;;;;;;;;;;;;;:57;;;;;;;:::i;:::-;;;;;;;;3759:1;3713:14;:12;:14::i;:::-;:23;;:30;3737:5;3713:30;;;;;;;;;;;;;;;:43;3744:11;3713:43;;;;;;;;;;;;;;;;:47;3709:89;;;3781:17;;;;;;;;;;;;;;3709:89;3880:1;3836:14;:12;:14::i;:::-;:28;;:41;3865:11;3836:41;;;;;;;;;;;;;;;;:45;3832:87;;;3902:17;;;;;;;;;;;;;;3832:87;3954:20;3977:32;3990:5;3997:11;3977:12;:32::i;:::-;3954:55;;4038:1;4023:12;:16;4019:151;;;4166:4;4053:14;:12;:14::i;:::-;:38;;:45;4092:5;4053:45;;;;;;;;;;;;;;;:58;4099:11;4053:58;;;;;;;;;;;;;;;:76;4127:1;4112:12;:16;;;;:::i;:::-;4053:76;;;;;;;;;;;:110;;;:117;;;;;;;;;;;;;;;;;;4019:151;3492:878;;3417:953;;:::o;3043:210:42:-;3156:18;:16;:18::i;:::-;:42;;;3130:22;:20;:22::i;:::-;:68;3113:133;;3216:30;;;;;;;;;;;;;;3113:133;3043:210::o;1292:224:45:-;1366:24;1406:16;603:23;1406:43;;1492:8;1482:18;;1468:42;1292:224;:::o;5124:242::-;5231:7;5250:13;5266:17;:15;:17::i;:::-;:30;;:37;5297:5;5266:37;;;;;;;;;;;;;;;:50;5304:11;5266:50;;;;;;;;;;;;;;;;5250:66;;5342:1;5333:5;:10;:26;;5358:1;5350:5;:9;;;;:::i;:::-;5333:26;;;5346:1;5333:26;5326:33;;;5124:242;;;;:::o;1851:187:44:-;1898:21;1931:16;738:20;1931:40;;2014:8;2004:18;;1990:42;1851:187;:::o;7530:234:43:-;7662:48;7684:11;7697:12;7662:21;:48::i;:::-;7657:100;;7731:26;;;;;;;;;;;;;;7657:100;7530:234;;:::o;5231:602:44:-;5395:7;5414:20;5437:98;5472:5;5491:11;5516:9;5437:21;:98::i;:::-;5414:121;;5546:42;5591:41;:39;:41::i;:::-;5546:86;;5688:8;:24;;;5658:8;:27;;;:54;;;;:::i;:::-;5646:9;:66;5642:114;;;5733:23;;;;;;;;;;;;;;5642:114;5787:12;5774:9;:25;;:52;;5817:9;5774:52;;;5802:12;5774:52;5767:59;;;;5231:602;;;;;;:::o;2131:224:43:-;2205:24;2245:16;876:23;2245:43;;2331:8;2321:18;;2307:42;2131:224;:::o;10814:619:44:-;10992:23;11030:11;10992:50;;11052:14;11069:49;11101:4;11108:9;11069:11;:23;;;;:49;;;;;:::i;:::-;11052:66;;11145:1;11133:8;:13;;;11129:174;;11162:44;11185:9;11196;11162:11;:22;;;;:44;;;;;:::i;:::-;;11129:174;;;11237:55;11260:9;11282;11271:8;:20;;;;:::i;:::-;11237:11;:22;;;;:55;;;;;:::i;:::-;;11129:174;11398:28;11313:14;:12;:14::i;:::-;:34;;:43;11348:7;11313:43;;;;;;;;;;;;;;;:56;11357:11;11313:56;;;;;;;;;;;;;;;:64;11370:6;11313:64;;;;;;;;;;;:82;;:113;;;;10982:451;;10814:619;;;;;:::o;4815:197:42:-;4923:12;4973:10;4994:9;4954:51;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4947:58;;4815:197;;;;:::o;777:227::-;852:25;893:16;356:24;893:44;;980:8;970:18;;956:42;777:227;:::o;11115:163:43:-;11206:4;11229:17;:15;:17::i;:::-;:29;;:42;11259:11;11229:42;;;;;;;;;;;;;;;;;;;;;;;;;11222:49;;11115:163;;;:::o;21133:262:9:-;21237:14;21270:28;21302:21;21317:5;21302:14;:21::i;:::-;21267:56;;;21352:3;:11;;;21364:5;21371:6;21379:8;21352:36;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21333:55;;;;;;;;;;;21257:138;21133:262;;;;;:::o;3607:451::-;3706:4;3727:16;3745:28;3777:29;3800:5;3777:22;:29::i;:::-;3726:80;;;;3816:4;:18;;;3848:3;3897;:14;;;3930:5;3937:6;3945:8;3965:1;3955:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3865:117;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4006:1;3996:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3816:214;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4047:4;4040:11;;;;3607:451;;;;;:::o;2241:453::-;2340:4;2361:16;2379:28;2411:29;2434:5;2411:22;:29::i;:::-;2360:80;;;;2450:4;:18;;;2482:3;2531;:14;;;2564:5;2571:8;2581;2601:1;2591:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2499:119;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2642:1;2632:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2450:216;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2683:4;2676:11;;;;2241:453;;;;;:::o;9409:236:44:-;9516:7;9535:13;9551:14;:12;:14::i;:::-;:24;;:31;9576:5;9551:31;;;;;;;;;;;;;;;:44;9583:11;9551:44;;;;;;;;;;;;;;;;9535:60;;9621:1;9612:5;:10;:26;;9637:1;9629:5;:9;;;;:::i;:::-;9612:26;;;9625:1;9612:26;9605:33;;;9409:236;;;;:::o;5651:597:45:-;5781:5;5788:6;5796:7;5805;5845:17;:15;:17::i;:::-;:44;;:51;5890:5;5845:51;;;;;;;;;;;;;;;:64;5897:11;5845:64;;;;;;;;;;;;;;;:72;5910:6;5845:72;;;;;;;;;;;:90;;;;;;;;;;;;5949:17;:15;:17::i;:::-;:44;;:51;5994:5;5949:51;;;;;;;;;;;;;;;:64;6001:11;5949:64;;;;;;;;;;;;;;;:72;6014:6;5949:72;;;;;;;;;;;:81;;;;;;;;;;;;6044:17;:15;:17::i;:::-;:44;;:51;6089:5;6044:51;;;;;;;;;;;;;;;:64;6096:11;6044:64;;;;;;;;;;;;;;;:72;6109:6;6044:72;;;;;;;;;;;:87;;;6145:17;:15;:17::i;:::-;:44;;:51;6190:5;6145:51;;;;;;;;;;;;;;;:64;6197:11;6145:64;;;;;;;;;;;;;;;:72;6210:6;6145:72;;;;;;;;;;;:86;;;5824:417;;;;;;;;5651:597;;;;;;;:::o;6254:507::-;6392:5;6399:6;6407:7;6416;6435:33;6471:22;:20;:22::i;:::-;6435:58;;6504:16;6523:5;:25;;:32;6549:5;6523:32;;;;;;;;;;;;;;;:45;6556:11;6523:45;;;;;;;;;;;;;;;:53;6569:6;6523:53;;;;;;;;;;;:62;;;;;;;;;;;;6504:81;;6595:20;6618:5;:25;;:32;6644:5;6618:32;;;;;;;;;;;;;;;:45;6651:11;6618:45;;;;;;;;;;;;;;;:53;6664:6;6618:53;;;;;;;;;;;:66;;;6595:89;;6702:52;6718:8;6728:11;6741:12;6702:15;:52::i;:::-;6695:59;;;;;;;;;;;6254:507;;;;;;;:::o;5372:273::-;5456:7;5465:16;5514:17;:15;:17::i;:::-;:32;;:39;5547:5;5514:39;;;;;;;;;;;;;;;:49;;;5577:17;:15;:17::i;:::-;:32;;:39;5610:5;5577:39;;;;;;;;;;;;;;;:51;;5493:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5372:273;;;:::o;4330:223:42:-;4385:7;4423:18;:16;:18::i;:::-;:33;;;;;;;;;;;;:50;;;4499:4;539:42;4423:123;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4404:142;;4330:223;:::o;12858:349:43:-;12975:4;12991:23;13029:11;13017:34;;;13073:4;13017:71;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12991:97;;13148:52;13174:11;13187:12;13148:25;:52::i;:::-;13118:15;:82;13099:101;;;12858:349;;;;:::o;863:453:9:-;962:4;983:16;1001:28;1033:29;1056:5;1033:22;:29::i;:::-;982:80;;;;1072:4;:18;;;1104:3;1153;:14;;;1186:5;1193:8;1203;1223:1;1213:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1121:119;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1264:1;1254:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1072:216;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1305:4;1298:11;;;;863:453;;;;;:::o;56668:917::-;56740:16;56758:28;56913:10;56907:17;56899:25;;56950:9;56944:16;56937:23;;57007:1;56983:26;;56991:3;56983:26;;;56979:511;;57139:1;57114:27;;57122:4;57114:27;;;57110:101;;57180:5;:13;;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;57161:35;;57110:101;57275:4;57263:35;;;57410:66;57263:214;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;57224:255;;56979:511;57531:1;57506:27;;57514:4;57506:27;;;57499:35;;;;:::i;:::-;;57575:1;57551:26;;57559:3;57551:26;;;57544:34;;;;:::i;:::-;;56668:917;;;:::o;54169:1150::-;54244:16;54262:28;54417:10;54411:17;54403:25;;54454:9;54448:16;54441:23;;54511:1;54487:26;;54495:3;54487:26;;;54483:741;;54632:1;54607:27;;54615:4;54607:27;;;54603:101;;54673:5;:13;;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;54654:35;;54603:101;54768:4;54756:35;;;54903:66;54756:214;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;54717:255;;55156:4;55144:10;55137:24;55196:3;55185:9;55178:22;54483:741;55265:1;55240:27;;55248:4;55240:27;;;55233:35;;;;:::i;:::-;;55309:1;55285:26;;55293:3;55285:26;;;55278:34;;;;:::i;:::-;;54169:1150;;;:::o;12293:559:43:-;12414:7;12433:23;12471:11;12433:50;;12493:23;12519:73;12570:12;12519:11;:37;;;;:73;;;;:::i;:::-;12493:99;;12602:25;12630:41;12665:4;12630:11;:26;;;;:41;;;;:::i;:::-;12602:69;;12802:17;:15;:17::i;:::-;:42;;;12769:12;12747:19;:34;;;;:::i;:::-;12732:51;;:112;;;;:::i;:::-;12701:15;:144;;;;:::i;:::-;12682:163;;;;;12293:559;;;;:::o;23687:267:9:-;23788:20;23827:28;23859:21;23874:5;23859:14;:21::i;:::-;23824:56;;;23897:3;:33;;;23931:5;23938:8;23897:50;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23890:57;;;23687:267;;;;:::o;22431:231::-;22522:14;22555:28;22587:21;22602:5;22587:14;:21::i;:::-;22552:56;;;22625:3;:14;;;22640:5;22647:7;22625:30;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22618:37;;;22431:231;;;;:::o;7:75:61:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:77::-;878:7;907:5;896:16;;841:77;;;:::o;924:122::-;997:24;1015:5;997:24;:::i;:::-;990:5;987:35;977:63;;1036:1;1033;1026:12;977:63;924:122;:::o;1052:139::-;1098:5;1136:6;1123:20;1114:29;;1152:33;1179:5;1152:33;:::i;:::-;1052:139;;;;:::o;1197:474::-;1265:6;1273;1322:2;1310:9;1301:7;1297:23;1293:32;1290:119;;;1328:79;;:::i;:::-;1290:119;1448:1;1473:53;1518:7;1509:6;1498:9;1494:22;1473:53;:::i;:::-;1463:63;;1419:117;1575:2;1601:53;1646:7;1637:6;1626:9;1622:22;1601:53;:::i;:::-;1591:63;;1546:118;1197:474;;;;;:::o;1677:91::-;1712:7;1756:5;1752:2;1741:21;1730:32;;1677:91;;;:::o;1774:118::-;1845:22;1861:5;1845:22;:::i;:::-;1838:5;1835:33;1825:61;;1882:1;1879;1872:12;1825:61;1774:118;:::o;1898:135::-;1942:5;1980:6;1967:20;1958:29;;1996:31;2021:5;1996:31;:::i;:::-;1898:135;;;;:::o;2039:615::-;2114:6;2122;2130;2179:2;2167:9;2158:7;2154:23;2150:32;2147:119;;;2185:79;;:::i;:::-;2147:119;2305:1;2330:53;2375:7;2366:6;2355:9;2351:22;2330:53;:::i;:::-;2320:63;;2276:117;2432:2;2458:53;2503:7;2494:6;2483:9;2479:22;2458:53;:::i;:::-;2448:63;;2403:118;2560:2;2586:51;2629:7;2620:6;2609:9;2605:22;2586:51;:::i;:::-;2576:61;;2531:116;2039:615;;;;;:::o;2660:118::-;2747:24;2765:5;2747:24;:::i;:::-;2742:3;2735:37;2660:118;;:::o;2784:222::-;2877:4;2915:2;2904:9;2900:18;2892:26;;2928:71;2996:1;2985:9;2981:17;2972:6;2928:71;:::i;:::-;2784:222;;;;:::o;3012:907::-;3105:6;3113;3121;3129;3137;3186:3;3174:9;3165:7;3161:23;3157:33;3154:120;;;3193:79;;:::i;:::-;3154:120;3313:1;3338:53;3383:7;3374:6;3363:9;3359:22;3338:53;:::i;:::-;3328:63;;3284:117;3440:2;3466:53;3511:7;3502:6;3491:9;3487:22;3466:53;:::i;:::-;3456:63;;3411:118;3568:2;3594:53;3639:7;3630:6;3619:9;3615:22;3594:53;:::i;:::-;3584:63;;3539:118;3696:2;3722:53;3767:7;3758:6;3747:9;3743:22;3722:53;:::i;:::-;3712:63;;3667:118;3824:3;3851:51;3894:7;3885:6;3874:9;3870:22;3851:51;:::i;:::-;3841:61;;3795:117;3012:907;;;;;;;;:::o;3925:474::-;3993:6;4001;4050:2;4038:9;4029:7;4025:23;4021:32;4018:119;;;4056:79;;:::i;:::-;4018:119;4176:1;4201:53;4246:7;4237:6;4226:9;4222:22;4201:53;:::i;:::-;4191:63;;4147:117;4303:2;4329:53;4374:7;4365:6;4354:9;4350:22;4329:53;:::i;:::-;4319:63;;4274:118;3925:474;;;;;:::o;4405:90::-;4439:7;4482:5;4475:13;4468:21;4457:32;;4405:90;;;:::o;4501:109::-;4582:21;4597:5;4582:21;:::i;:::-;4577:3;4570:34;4501:109;;:::o;4616:210::-;4703:4;4741:2;4730:9;4726:18;4718:26;;4754:65;4816:1;4805:9;4801:17;4792:6;4754:65;:::i;:::-;4616:210;;;;:::o;4832:619::-;4909:6;4917;4925;4974:2;4962:9;4953:7;4949:23;4945:32;4942:119;;;4980:79;;:::i;:::-;4942:119;5100:1;5125:53;5170:7;5161:6;5150:9;5146:22;5125:53;:::i;:::-;5115:63;;5071:117;5227:2;5253:53;5298:7;5289:6;5278:9;5274:22;5253:53;:::i;:::-;5243:63;;5198:118;5355:2;5381:53;5426:7;5417:6;5406:9;5402:22;5381:53;:::i;:::-;5371:63;;5326:118;4832:619;;;;;:::o;5457:118::-;5544:24;5562:5;5544:24;:::i;:::-;5539:3;5532:37;5457:118;;:::o;5581:77::-;5618:7;5647:5;5636:16;;5581:77;;;:::o;5664:118::-;5751:24;5769:5;5751:24;:::i;:::-;5746:3;5739:37;5664:118;;:::o;5788:763::-;6015:4;6053:3;6042:9;6038:19;6030:27;;6067:71;6135:1;6124:9;6120:17;6111:6;6067:71;:::i;:::-;6148:72;6216:2;6205:9;6201:18;6192:6;6148:72;:::i;:::-;6230;6298:2;6287:9;6283:18;6274:6;6230:72;:::i;:::-;6312;6380:2;6369:9;6365:18;6356:6;6312:72;:::i;:::-;6394:73;6462:3;6451:9;6447:19;6438:6;6394:73;:::i;:::-;6477:67;6539:3;6528:9;6524:19;6515:6;6477:67;:::i;:::-;5788:763;;;;;;;;;:::o;6557:329::-;6616:6;6665:2;6653:9;6644:7;6640:23;6636:32;6633:119;;;6671:79;;:::i;:::-;6633:119;6791:1;6816:53;6861:7;6852:6;6841:9;6837:22;6816:53;:::i;:::-;6806:63;;6762:117;6557:329;;;;:::o;6892:180::-;6940:77;6937:1;6930:88;7037:4;7034:1;7027:15;7061:4;7058:1;7051:15;7078:180;7126:77;7123:1;7116:88;7223:4;7220:1;7213:15;7247:4;7244:1;7237:15;7264:180;7312:77;7309:1;7302:88;7409:4;7406:1;7399:15;7433:4;7430:1;7423:15;7450:180;7498:77;7495:1;7488:88;7595:4;7592:1;7585:15;7619:4;7616:1;7609:15;7636:191;7676:3;7695:20;7713:1;7695:20;:::i;:::-;7690:25;;7729:20;7747:1;7729:20;:::i;:::-;7724:25;;7772:1;7769;7765:9;7758:16;;7793:3;7790:1;7787:10;7784:36;;;7800:18;;:::i;:::-;7784:36;7636:191;;;;:::o;7833:112::-;7916:22;7932:5;7916:22;:::i;:::-;7911:3;7904:35;7833:112;;:::o;7951:656::-;8152:4;8190:3;8179:9;8175:19;8167:27;;8204:71;8272:1;8261:9;8257:17;8248:6;8204:71;:::i;:::-;8285:72;8353:2;8342:9;8338:18;8329:6;8285:72;:::i;:::-;8367;8435:2;8424:9;8420:18;8411:6;8367:72;:::i;:::-;8449;8517:2;8506:9;8502:18;8493:6;8449:72;:::i;:::-;8531:69;8595:3;8584:9;8580:19;8571:6;8531:69;:::i;:::-;7951:656;;;;;;;;:::o;8613:98::-;8664:6;8698:5;8692:12;8682:22;;8613:98;;;:::o;8717:168::-;8800:11;8834:6;8829:3;8822:19;8874:4;8869:3;8865:14;8850:29;;8717:168;;;;:::o;8891:246::-;8972:1;8982:113;8996:6;8993:1;8990:13;8982:113;;;9081:1;9076:3;9072:11;9066:18;9062:1;9057:3;9053:11;9046:39;9018:2;9015:1;9011:10;9006:15;;8982:113;;;9129:1;9120:6;9115:3;9111:16;9104:27;8953:184;8891:246;;;:::o;9143:102::-;9184:6;9235:2;9231:7;9226:2;9219:5;9215:14;9211:28;9201:38;;9143:102;;;:::o;9251:373::-;9337:3;9365:38;9397:5;9365:38;:::i;:::-;9419:70;9482:6;9477:3;9419:70;:::i;:::-;9412:77;;9498:65;9556:6;9551:3;9544:4;9537:5;9533:16;9498:65;:::i;:::-;9588:29;9610:6;9588:29;:::i;:::-;9583:3;9579:39;9572:46;;9341:283;9251:373;;;;:::o;9630:126::-;9709:6;9743:5;9737:12;9727:22;;9630:126;;;:::o;9762:172::-;9849:11;9883:6;9878:3;9871:19;9923:4;9918:3;9914:14;9899:29;;9762:172;;;;:::o;9940:144::-;10019:4;10042:3;10034:11;;10072:4;10067:3;10063:14;10055:22;;9940:144;;;:::o;10090:117::-;10175:1;10168:5;10165:12;10155:46;;10181:18;;:::i;:::-;10155:46;10090:117;:::o;10213:135::-;10262:7;10291:5;10280:16;;10297:45;10336:5;10297:45;:::i;:::-;10213:135;;;:::o;10354:::-;10414:9;10447:36;10477:5;10447:36;:::i;:::-;10434:49;;10354:135;;;:::o;10495:141::-;10582:47;10623:5;10582:47;:::i;:::-;10577:3;10570:60;10495:141;;:::o;10642:199::-;10721:10;10742:56;10794:3;10786:6;10742:56;:::i;:::-;10830:4;10825:3;10821:14;10807:28;;10642:199;;;;:::o;10847:125::-;10929:4;10961;10956:3;10952:14;10944:22;;10847:125;;;:::o;11010:766::-;11129:3;11158:66;11218:5;11158:66;:::i;:::-;11240:74;11307:6;11302:3;11240:74;:::i;:::-;11233:81;;11338:68;11400:5;11338:68;:::i;:::-;11429:7;11460:1;11445:306;11470:6;11467:1;11464:13;11445:306;;;11546:6;11540:13;11573:73;11642:3;11627:13;11573:73;:::i;:::-;11566:80;;11669:72;11734:6;11669:72;:::i;:::-;11659:82;;11505:246;11492:1;11489;11485:9;11480:14;;11445:306;;;11449:14;11767:3;11760:10;;11134:642;;;11010:766;;;;:::o;11782:123::-;11858:6;11892:5;11886:12;11876:22;;11782:123;;;:::o;11911:183::-;12009:11;12043:6;12038:3;12031:19;12083:4;12078:3;12074:14;12059:29;;11911:183;;;;:::o;12100:141::-;12176:4;12199:3;12191:11;;12229:4;12224:3;12220:14;12212:22;;12100:141;;;:::o;12247:158::-;12320:11;12354:6;12349:3;12342:19;12394:4;12389:3;12385:14;12370:29;;12247:158;;;;:::o;12411:353::-;12487:3;12515:38;12547:5;12515:38;:::i;:::-;12569:60;12622:6;12617:3;12569:60;:::i;:::-;12562:67;;12638:65;12696:6;12691:3;12684:4;12677:5;12673:16;12638:65;:::i;:::-;12728:29;12750:6;12728:29;:::i;:::-;12723:3;12719:39;12712:46;;12491:273;12411:353;;;;:::o;12770:192::-;12857:10;12892:64;12952:3;12944:6;12892:64;:::i;:::-;12878:78;;12770:192;;;;:::o;12968:122::-;13047:4;13079;13074:3;13070:14;13062:22;;12968:122;;;:::o;13122:963::-;13249:3;13278:63;13335:5;13278:63;:::i;:::-;13357:85;13435:6;13430:3;13357:85;:::i;:::-;13350:92;;13468:3;13513:4;13505:6;13501:17;13496:3;13492:27;13543:65;13602:5;13543:65;:::i;:::-;13631:7;13662:1;13647:393;13672:6;13669:1;13666:13;13647:393;;;13743:9;13737:4;13733:20;13728:3;13721:33;13794:6;13788:13;13822:82;13899:4;13884:13;13822:82;:::i;:::-;13814:90;;13927:69;13989:6;13927:69;:::i;:::-;13917:79;;14025:4;14020:3;14016:14;14009:21;;13707:333;13694:1;13691;13687:9;13682:14;;13647:393;;;13651:14;14056:4;14049:11;;14076:3;14069:10;;13254:831;;;;;13122:963;;;;:::o;14137:776::-;14264:3;14300:4;14295:3;14291:14;14390:4;14383:5;14379:16;14373:23;14443:3;14437:4;14433:14;14426:4;14421:3;14417:14;14410:38;14469:113;14577:4;14563:12;14469:113;:::i;:::-;14461:121;;14315:278;14675:4;14668:5;14664:16;14658:23;14728:3;14722:4;14718:14;14711:4;14706:3;14702:14;14695:38;14754:121;14870:4;14856:12;14754:121;:::i;:::-;14746:129;;14603:283;14903:4;14896:11;;14269:644;14137:776;;;;:::o;14919:807::-;15172:4;15210:3;15199:9;15195:19;15187:27;;15224:71;15292:1;15281:9;15277:17;15268:6;15224:71;:::i;:::-;15342:9;15336:4;15332:20;15327:2;15316:9;15312:18;15305:48;15370:76;15441:4;15432:6;15370:76;:::i;:::-;15362:84;;15493:9;15487:4;15483:20;15478:2;15467:9;15463:18;15456:48;15521:116;15632:4;15623:6;15521:116;:::i;:::-;15513:124;;15647:72;15715:2;15704:9;15700:18;15691:6;15647:72;:::i;:::-;14919:807;;;;;;;:::o;15732:122::-;15805:24;15823:5;15805:24;:::i;:::-;15798:5;15795:35;15785:63;;15844:1;15841;15834:12;15785:63;15732:122;:::o;15860:143::-;15917:5;15948:6;15942:13;15933:22;;15964:33;15991:5;15964:33;:::i;:::-;15860:143;;;;:::o;16009:351::-;16079:6;16128:2;16116:9;16107:7;16103:23;16099:32;16096:119;;;16134:79;;:::i;:::-;16096:119;16254:1;16279:64;16335:7;16326:6;16315:9;16311:22;16279:64;:::i;:::-;16269:74;;16225:128;16009:351;;;;:::o;16366:222::-;16459:4;16497:2;16486:9;16482:18;16474:26;;16510:71;16578:1;16567:9;16563:17;16554:6;16510:71;:::i;:::-;16366:222;;;;:::o;16594:442::-;16743:4;16781:2;16770:9;16766:18;16758:26;;16794:71;16862:1;16851:9;16847:17;16838:6;16794:71;:::i;:::-;16875:72;16943:2;16932:9;16928:18;16919:6;16875:72;:::i;:::-;16957;17025:2;17014:9;17010:18;17001:6;16957:72;:::i;:::-;16594:442;;;;;;:::o;17042:116::-;17112:21;17127:5;17112:21;:::i;:::-;17105:5;17102:32;17092:60;;17148:1;17145;17138:12;17092:60;17042:116;:::o;17164:137::-;17218:5;17249:6;17243:13;17234:22;;17265:30;17289:5;17265:30;:::i;:::-;17164:137;;;;:::o;17307:345::-;17374:6;17423:2;17411:9;17402:7;17398:23;17394:32;17391:119;;;17429:79;;:::i;:::-;17391:119;17549:1;17574:61;17627:7;17618:6;17607:9;17603:22;17574:61;:::i;:::-;17564:71;;17520:125;17307:345;;;;:::o;17658:180::-;17706:77;17703:1;17696:88;17803:4;17800:1;17793:15;17827:4;17824:1;17817:15;17844:185;17884:1;17901:20;17919:1;17901:20;:::i;:::-;17896:25;;17935:20;17953:1;17935:20;:::i;:::-;17930:25;;17974:1;17964:35;;17979:18;;:::i;:::-;17964:35;18021:1;18018;18014:9;18009:14;;17844:185;;;;:::o;18035:194::-;18075:4;18095:20;18113:1;18095:20;:::i;:::-;18090:25;;18129:20;18147:1;18129:20;:::i;:::-;18124:25;;18173:1;18170;18166:9;18158:17;;18197:1;18191:4;18188:11;18185:37;;;18202:18;;:::i;:::-;18185:37;18035:194;;;;:::o;18235:331::-;18273:4;18293:18;18309:1;18293:18;:::i;:::-;18288:23;;18325:18;18341:1;18325:18;:::i;:::-;18320:23;;18367:1;18364;18360:9;18352:17;;18499:26;18493:4;18489:37;18408:66;18402:4;18398:77;18382:154;18379:180;;;18539:18;;:::i;:::-;18379:180;18235:331;;;;:::o;18572:410::-;18612:7;18635:20;18653:1;18635:20;:::i;:::-;18630:25;;18669:20;18687:1;18669:20;:::i;:::-;18664:25;;18724:1;18721;18717:9;18746:30;18764:11;18746:30;:::i;:::-;18735:41;;18925:1;18916:7;18912:15;18909:1;18906:22;18886:1;18879:9;18859:83;18836:139;;18955:18;;:::i;:::-;18836:139;18620:362;18572:410;;;;:::o;18988:233::-;19027:3;19050:24;19068:5;19050:24;:::i;:::-;19041:33;;19096:66;19089:5;19086:77;19083:103;;19166:18;;:::i;:::-;19083:103;19213:1;19206:5;19202:13;19195:20;;18988:233;;;:::o;19227:327::-;19265:3;19284:18;19300:1;19284:18;:::i;:::-;19279:23;;19316:18;19332:1;19316:18;:::i;:::-;19311:23;;19357:1;19354;19350:9;19343:16;;19447:66;19442:3;19438:76;19397:26;19392:3;19388:36;19372:152;19369:178;;;19527:18;;:::i;:::-;19369:178;19227:327;;;;:::o;19560:118::-;19597:7;19637:34;19630:5;19626:46;19615:57;;19560:118;;;:::o;19684:::-;19771:24;19789:5;19771:24;:::i;:::-;19766:3;19759:37;19684:118;;:::o;19808:332::-;19929:4;19967:2;19956:9;19952:18;19944:26;;19980:71;20048:1;20037:9;20033:17;20024:6;19980:71;:::i;:::-;20061:72;20129:2;20118:9;20114:18;20105:6;20061:72;:::i;:::-;19808:332;;;;;:::o;20146:60::-;20174:3;20195:5;20188:12;;20146:60;;;:::o;20212:142::-;20262:9;20295:53;20313:34;20322:24;20340:5;20322:24;:::i;:::-;20313:34;:::i;:::-;20295:53;:::i;:::-;20282:66;;20212:142;;;:::o;20360:126::-;20410:9;20443:37;20474:5;20443:37;:::i;:::-;20430:50;;20360:126;;;:::o;20492:146::-;20562:9;20595:37;20626:5;20595:37;:::i;:::-;20582:50;;20492:146;;;:::o;20644:171::-;20751:57;20802:5;20751:57;:::i;:::-;20746:3;20739:70;20644:171;;:::o;20821:482::-;20990:4;21028:2;21017:9;21013:18;21005:26;;21041:91;21129:1;21118:9;21114:17;21105:6;21041:91;:::i;:::-;21142:72;21210:2;21199:9;21195:18;21186:6;21142:72;:::i;:::-;21224;21292:2;21281:9;21277:18;21268:6;21224:72;:::i;:::-;20821:482;;;;;;:::o;21309:143::-;21366:5;21397:6;21391:13;21382:22;;21413:33;21440:5;21413:33;:::i;:::-;21309:143;;;;:::o;21458:139::-;21513:5;21544:6;21538:13;21529:22;;21560:31;21585:5;21560:31;:::i;:::-;21458:139;;;;:::o;21603:816::-;21698:6;21706;21714;21722;21771:3;21759:9;21750:7;21746:23;21742:33;21739:120;;;21778:79;;:::i;:::-;21739:120;21898:1;21923:64;21979:7;21970:6;21959:9;21955:22;21923:64;:::i;:::-;21913:74;;21869:128;22036:2;22062:62;22116:7;22107:6;22096:9;22092:22;22062:62;:::i;:::-;22052:72;;22007:127;22173:2;22199:64;22255:7;22246:6;22235:9;22231:22;22199:64;:::i;:::-;22189:74;;22144:129;22312:2;22338:64;22394:7;22385:6;22374:9;22370:22;22338:64;:::i;:::-;22328:74;;22283:129;21603:816;;;;;;;:::o;22425:680::-;22640:4;22678:3;22667:9;22663:19;22655:27;;22692:91;22780:1;22769:9;22765:17;22756:6;22692:91;:::i;:::-;22793:72;22861:2;22850:9;22846:18;22837:6;22793:72;:::i;:::-;22875;22943:2;22932:9;22928:18;22919:6;22875:72;:::i;:::-;22994:9;22988:4;22984:20;22979:2;22968:9;22964:18;22957:48;23022:76;23093:4;23084:6;23022:76;:::i;:::-;23014:84;;22425:680;;;;;;;:::o;23111:159::-;23194:9;23227:37;23258:5;23227:37;:::i;:::-;23214:50;;23111:159;;;:::o;23276:197::-;23396:70;23460:5;23396:70;:::i;:::-;23391:3;23384:83;23276:197;;:::o;23479:682::-;23697:4;23735:2;23724:9;23720:18;23712:26;;23748:104;23849:1;23838:9;23834:17;23825:6;23748:104;:::i;:::-;23899:9;23893:4;23889:20;23884:2;23873:9;23869:18;23862:48;23927:76;23998:4;23989:6;23927:76;:::i;:::-;23919:84;;24050:9;24044:4;24040:20;24035:2;24024:9;24020:18;24013:48;24078:76;24149:4;24140:6;24078:76;:::i;:::-;24070:84;;23479:682;;;;;;:::o;24167:117::-;24276:1;24273;24266:12;24290:117;24399:1;24396;24389:12;24413:281;24496:27;24518:4;24496:27;:::i;:::-;24488:6;24484:40;24626:6;24614:10;24611:22;24590:18;24578:10;24575:34;24572:62;24569:88;;;24637:18;;:::i;:::-;24569:88;24677:10;24673:2;24666:22;24456:238;24413:281;;:::o;24700:129::-;24734:6;24761:20;;:::i;:::-;24751:30;;24790:33;24818:4;24810:6;24790:33;:::i;:::-;24700:129;;;:::o;24835:307::-;24896:4;24986:18;24978:6;24975:30;24972:56;;;25008:18;;:::i;:::-;24972:56;25046:29;25068:6;25046:29;:::i;:::-;25038:37;;25130:4;25124;25120:15;25112:23;;24835:307;;;:::o;25148:432::-;25236:5;25261:65;25277:48;25318:6;25277:48;:::i;:::-;25261:65;:::i;:::-;25252:74;;25349:6;25342:5;25335:21;25387:4;25380:5;25376:16;25425:3;25416:6;25411:3;25407:16;25404:25;25401:112;;;25432:79;;:::i;:::-;25401:112;25522:52;25567:6;25562:3;25557;25522:52;:::i;:::-;25242:338;25148:432;;;;;:::o;25599:353::-;25665:5;25714:3;25707:4;25699:6;25695:17;25691:27;25681:122;;25722:79;;:::i;:::-;25681:122;25832:6;25826:13;25857:89;25942:3;25934:6;25927:4;25919:6;25915:17;25857:89;:::i;:::-;25848:98;;25671:281;25599:353;;;;:::o;25958:522::-;26037:6;26086:2;26074:9;26065:7;26061:23;26057:32;26054:119;;;26092:79;;:::i;:::-;26054:119;26233:1;26222:9;26218:17;26212:24;26263:18;26255:6;26252:30;26249:117;;;26285:79;;:::i;:::-;26249:117;26390:73;26455:7;26446:6;26435:9;26431:22;26390:73;:::i;:::-;26380:83;;26183:290;25958:522;;;;:::o;26486:672::-;26697:4;26735:3;26724:9;26720:19;26712:27;;26749:91;26837:1;26826:9;26822:17;26813:6;26749:91;:::i;:::-;26850:72;26918:2;26907:9;26903:18;26894:6;26850:72;:::i;:::-;26932:68;26996:2;26985:9;26981:18;26972:6;26932:68;:::i;:::-;27047:9;27041:4;27037:20;27032:2;27021:9;27017:18;27010:48;27075:76;27146:4;27137:6;27075:76;:::i;:::-;27067:84;;26486:672;;;;;;;:::o;27164:332::-;27285:4;27323:2;27312:9;27308:18;27300:26;;27336:71;27404:1;27393:9;27389:17;27380:6;27336:71;:::i;:::-;27417:72;27485:2;27474:9;27470:18;27461:6;27417:72;:::i;:::-;27164:332;;;;;:::o;27502:351::-;27572:6;27621:2;27609:9;27600:7;27596:23;27592:32;27589:119;;;27627:79;;:::i;:::-;27589:119;27747:1;27772:64;27828:7;27819:6;27808:9;27804:22;27772:64;:::i;:::-;27762:74;;27718:128;27502:351;;;;:::o;27859:222::-;27952:4;27990:2;27979:9;27975:18;27967:26;;28003:71;28071:1;28060:9;28056:17;28047:6;28003:71;:::i;:::-;27859:222;;;;:::o;28087:143::-;28144:5;28175:6;28169:13;28160:22;;28191:33;28218:5;28191:33;:::i;:::-;28087:143;;;;:::o;28236:351::-;28306:6;28355:2;28343:9;28334:7;28330:23;28326:32;28323:119;;;28361:79;;:::i;:::-;28323:119;28481:1;28506:64;28562:7;28553:6;28542:9;28538:22;28506:64;:::i;:::-;28496:74;;28452:128;28236:351;;;;:::o;28593:161::-;28714:7;28743:5;28732:16;;28593:161;;;:::o;28760:92::-;28792:8;28839:5;28836:1;28832:13;28811:34;;28760:92;;;:::o;28858:314::-;28992:9;29025:141;29043:122;29056:108;29158:5;29056:108;:::i;:::-;29043:122;:::i;:::-;29025:141;:::i;:::-;29012:154;;28858:314;;;:::o;29178:299::-;29349:121;29464:5;29349:121;:::i;:::-;29344:3;29337:134;29178:299;;:::o;29483:390::-;29660:4;29698:2;29687:9;29683:18;29675:26;;29711:155;29863:1;29852:9;29848:17;29839:6;29711:155;:::i;:::-;29483:390;;;;:::o;29879:120::-;29940:7;29969:24;29987:5;29969:24;:::i;:::-;29958:35;;29879:120;;;:::o;30005:170::-;30102:48;30144:5;30102:48;:::i;:::-;30095:5;30092:59;30082:87;;30165:1;30162;30155:12;30082:87;30005:170;:::o;30181:191::-;30262:5;30293:6;30287:13;30278:22;;30309:57;30360:5;30309:57;:::i;:::-;30181:191;;;;:::o;30378:399::-;30472:6;30521:2;30509:9;30500:7;30496:23;30492:32;30489:119;;;30527:79;;:::i;:::-;30489:119;30647:1;30672:88;30752:7;30743:6;30732:9;30728:22;30672:88;:::i;:::-;30662:98;;30618:152;30378:399;;;;:::o;30783:180::-;30831:77;30828:1;30821:88;30928:4;30925:1;30918:15;30952:4;30949:1;30942:15;30969:364;31106:4;31144:2;31133:9;31129:18;31121:26;;31157:91;31245:1;31234:9;31230:17;31221:6;31157:91;:::i;:::-;31258:68;31322:2;31311:9;31307:18;31298:6;31258:68;:::i;:::-;30969:364;;;;;:::o;31339:372::-;31480:4;31518:2;31507:9;31503:18;31495:26;;31531:91;31619:1;31608:9;31604:17;31595:6;31531:91;:::i;:::-;31632:72;31700:2;31689:9;31685:18;31676:6;31632:72;:::i;:::-;31339:372;;;;;:::o;31717:347::-;31785:6;31834:2;31822:9;31813:7;31809:23;31805:32;31802:119;;;31840:79;;:::i;:::-;31802:119;31960:1;31985:62;32039:7;32030:6;32019:9;32015:22;31985:62;:::i;:::-;31975:72;;31931:126;31717:347;;;;:::o"},"methodIdentifiers":{"closeFlow(address,uint256)":"e32867fc","decreaseFlow(address,address,address,uint256,int96)":"36fbb025","depositSuperToken(address,uint256)":"0197c386","getAmountFlowed(address,address)":"3870f4a0","getDepositTotal(address)":"c76474db","getDepositUser(address,address)":"a152ca6f","getFlowData(address,address,uint256)":"54bbc2ad","getNewFlowNonce(address,address)":"521d3f3c","getValidSafeLifespan(address,address,int96)":"0dfa0b82","hasActiveFlow(address,address)":"468240a9","isViewSessionAllowed(address,address)":"9a5b5f93","openFlow(address,address,uint256)":"dfc96e1b","withdrawSuperToken(address,uint256)":"dc5cd1d8"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"CallerNotAutobot\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"HasActiveFlow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientAppGelatoBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientAppSTBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientFunds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientLifespan1\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientLifespan2\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientLifespan3\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidBalance1\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidBalance2\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSuperToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SessionNotStarted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TooEarly\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_nonce\",\"type\":\"uint256\"}],\"name\":\"closeFlow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_nonce\",\"type\":\"uint256\"},{\"internalType\":\"int96\",\"name\":\"_flowRate\",\"type\":\"int96\"}],\"name\":\"decreaseFlow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"depositSuperToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"}],\"name\":\"getAmountFlowed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"}],\"name\":\"getDepositTotal\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"}],\"name\":\"getDepositUser\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_nonce\",\"type\":\"uint256\"}],\"name\":\"getFlowData\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"}],\"name\":\"getNewFlowNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"},{\"internalType\":\"int96\",\"name\":\"_flowRate\",\"type\":\"int96\"}],\"name\":\"getValidSafeLifespan\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"}],\"name\":\"hasActiveFlow\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_viewer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_broadcaster\",\"type\":\"address\"}],\"name\":\"isViewSessionAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_lifespan\",\"type\":\"uint256\"}],\"name\":\"openFlow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"withdrawSuperToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"isViewSessionAllowed(address,address)\":{\"notice\":\"use `isViewSessionAllowed` to easily determine if viewer can \\\"join room\\\" or not !! NOT used to determine if can `openFlow` or not...\"},\"openFlow(address,address,uint256)\":{\"notice\":\"// TODO: need to check if you have sufficient deposits left or not SOL1: have user manually off flow SOL2: force settle blaance before open next flow (also force settle before withdraw)\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/facets/core/Flow.sol\":\"Flow\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol\":{\"keccak256\":\"0xf41ca991f30855bf80ffd11e9347856a517b977f0a6c2d52e6421a99b7840329\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2717fd2bdac99daa960a6de500754ea1b932093c946388c381da48658234b95\",\"dweb:/ipfs/QmP6QVMn6UeA3ByahyJbYQr5M6coHKBKsf3ySZSfbyA8R7\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x9b72f93be69ca894d8492c244259615c4a742afc8d63720dbc8bb81087d9b238\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5a7b96e511be78d5cdf635c784e6ab8cdd38625bb8cafb8a80914a1c89cf0f6\",\"dweb:/ipfs/QmVzTCwJxQAkjRQHboT5QrvsVJGWQHgfEjeTbvyxoKBrds\"]},\"@openzeppelin/contracts/token/ERC777/IERC777.sol\":{\"keccak256\":\"0x385a7061f1436b079d44c140dee9387d5313e94874ff9ee877dc0085c981ac3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c3fe22bb0d9527356e11f267f9187134de4d4ed1ff77468b4d73e3238697b96\",\"dweb:/ipfs/Qmc8caJctgxbzXEpxRogQMR2bnBk5U67hA7kKbUEG2PUXV\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xf96f969e24029d43d0df89e59d365f277021dac62b48e1c1e3ebe0acdd7f1ca1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec772b45a624be516f1c81970caa8a2e144301e9d0921cbc1a2789fef39a1269\",\"dweb:/ipfs/QmNyjwxCrGhQMyzLD93oUobJXVe9ceJvRvfXwbEtuxPiEj\"]},\"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol\":{\"keccak256\":\"0x1b588d76f3addfeb2f368ec534fbd8da6120c8ba3c08e95f410a9cc2204faf79\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://74e51ec8a8d50ad9c6c047a2548de4aac9e6da23f65b2d8a74e89665d26c527f\",\"dweb:/ipfs/QmS26ukRAwj9ZSHmRSbjmpmdA6EaZHAK6JvE38LkqjRYaP\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol\":{\"keccak256\":\"0xb68e122faba133422f4cbdd7e15fc913073dfa2c3682c18d6449b121e67d1104\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://da0611fda964b8356d38cb006133865b58adc6e11d3817e27daf20b02ad6880f\",\"dweb:/ipfs/QmeLbak3yiUfkGvxEZzmS4ndDwDfxtZNeKiA86G3WxzjyD\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IInstantDistributionAgreementV1.sol\":{\"keccak256\":\"0x7b088dfa11a00d2b1e6e0938978364a6918015b052a4bf3ffcc67db9b3182370\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://2437f6ea2d8c8de7613aef5de4dcf3530c2beb801f7d5f3e21ac617e73f8882b\",\"dweb:/ipfs/QmVBtqXYV25fQZ9P6xokBzgFnHCBthJSZdFo9quBY169fd\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol\":{\"keccak256\":\"0x80254971aff00fc006d70b85b7bc830bb28096789e72ff3f03aa22cc7810eb0c\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://840f9d959abfbf3919db3dca35336e360b2bbd54e677439a545c7c4f163f6d70\",\"dweb:/ipfs/QmR4CRq7dpYR4NuCSASkNrcnbSScRX8MaEvDs8L7v3xDyr\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol\":{\"keccak256\":\"0x9b4fab6dcac1337f78e04d67d8c2b48b1de8bd4bbf14b475840f9dbda7b8f21e\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://cc2f3629ad0cb46bd4f595880591ad6c9d75a82d920cb9355e462fbf8022c820\",\"dweb:/ipfs/QmXMovxK4qpWT4yffXxUVjkMNwxEfS6mtn39mLSmjaxEdW\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperApp.sol\":{\"keccak256\":\"0x6cc4b0724d977190c7441dfc3be6c6e48b43b555c3370af32ef5b6600f15f53f\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://3e89c944642772a42429f21a11017b57deb98a9198f8e4f8749f00aaee71299e\",\"dweb:/ipfs/QmaSv9GvqikcGHJ3tcwATDHSpQw6mfnHPDtcfqcZSS7LF6\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.sol\":{\"keccak256\":\"0x6860f0bf69dcc1d1ec39eefb43e0cd18b276b48ebe9efd53450e09cd2f997ab2\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://6421f80f2ff7818bd235b7bf4b911cc40edcb598507a246b4de0fa0191a9e1aa\",\"dweb:/ipfs/QmWxktXMjYhi1zt52D3JXNcxCFesXu8kQoSCJQ3j88apM3\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperTokenFactory.sol\":{\"keccak256\":\"0xe2525ef2906504e2f61775ed91bbebeea2f4e2e3fa42ce190561acf6a01187ff\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://7a9859eb432321a65cd15ca988a13776e1c31df44b4cf25f95fa04b54a8a8625\",\"dweb:/ipfs/QmQVJQoeoWemptZhbRgWJZWwMTiNtxVsc1FYmGdtdTfqcL\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol\":{\"keccak256\":\"0xab9dab941f99d0f0ef6125fb6eafde03378d7c3e94e613dd12fb7fbf594c3373\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://928c6ef915dee69058d4cfcb9f2344d4fc78d9763b47b17e5c03fbff64ba3c64\",\"dweb:/ipfs/Qmdk733ZHceatz3qbuodLCCS9TUspJJtXLoX6vWwMvrPDE\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance.sol\":{\"keccak256\":\"0x90a9259d0f0bb6b1bb6d48f051277eb75df96a9fbe684a203a3a468ad19318e2\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://9c8162a2d07ffe768920fef55292684149173afefbfba76b8fca007e55092229\",\"dweb:/ipfs/QmducLNwrzeUXEpBjUTSMu7sfmQEwVhcYXApe4brc1zQ6V\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol\":{\"keccak256\":\"0x9cad3866982902ea88df0874a563d2e4aeba5a5bcc6289c30cccf9b4099d2fb6\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://e8fd960b259331f204c7cb7dcd32b09d68f4294e3b872fad00ad467609c3ef72\",\"dweb:/ipfs/QmeZFEvsDunXQGPbXFfN5AvfKM5am1FY8Xv6e3c4tNKvgY\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo.sol\":{\"keccak256\":\"0x55be78ffb441c782f612b153d7d9049e3f0dbfd412c1f7df29c896b972b2985f\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://a223c68e38a6c9b1e363e525911bc7eda44ea517865ae53bd0d34ff858cc02ae\",\"dweb:/ipfs/QmVruGehibG6Emr2A6JHwUnhd4NzsGkE24cbGqnDpEvrKh\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.sol\":{\"keccak256\":\"0x7456cd394cc905aae7cdbd4601ce1c296c768c13c28e66efbb913cc070bad3e4\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://5a6589b428b724721ba5b4dd196c8f366a6e694ef313add093f29af64496c042\",\"dweb:/ipfs/QmSMgV6y8L6pyyzDz6kKmafVwujNWcjTqutpCBxe4uNRqg\"]},\"contracts/facets/core/Flow.sol\":{\"keccak256\":\"0xf73b7ee6e52565f14f8d09f882a67919739d3a3b04fd01dc2232ac638887f528\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c39d6f37e9171cd4dc8941227d078dd9e4c0d016fb9e458c9e9d97aa334d9527\",\"dweb:/ipfs/QmcTjUBbuwG33bqKUPZBmdMbRrnBUJdLcf3E7J5UwYFNao\"]},\"contracts/interfaces/core/IFlow.sol\":{\"keccak256\":\"0x457048a156fdd4960d1ae29d25c23e64a009b07a4d245a28baeb76ac6becbc7c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cfe189445294f1966924fac59728c7b0df24aa97d138432dc94318eca75995ad\",\"dweb:/ipfs/QmVzE173mUK78z8W1rYvwLo5e6UU6TtKdX2AhDq2wiFWkB\"]},\"contracts/libraries/core/LibAutomate.sol\":{\"keccak256\":\"0xdca80cbbdf57dfc0f76c3719a54d2da92c09e46c3844b1011d9742a16ed2eb93\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://d5b967a7f5fa571c8154fa358725e9b5cff19b6e3847ff00e0ec210c9ce7a97b\",\"dweb:/ipfs/Qma7vn262Je4WamND9fytLSFaM4tw7NcGs5pYE1Lc3iB5a\"]},\"contracts/libraries/core/LibControl.sol\":{\"keccak256\":\"0x791dd1dc0c61948e1b1a46d190f02a041abdf6e2db26f1b436b06d8116381103\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://ec9343651044d62055789d04d464545afed31f82268dfd17703763a54441e0ec\",\"dweb:/ipfs/QmWKFYUATgubBYLZCRghkenZbjJHQwdQ8ymZVK5xBFm2QJ\"]},\"contracts/libraries/core/LibFlow.sol\":{\"keccak256\":\"0xf07903d54504fd374edbd492a084b92f9b9bd6e39846ecfcb743d9ce3031e2a7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://94b205c755a9c96ec4d8f3631cf24cb255d28b3abc65c7b2580f50a0f3c23f1c\",\"dweb:/ipfs/QmVsrQ3WzkQ9PvckGaBhd2ZDMV56wsPPZcRCGi5Qv9UXmc\"]},\"contracts/libraries/core/LibSession.sol\":{\"keccak256\":\"0xce48bf158372890e3075e07cab5747d373a3a6cf219ba85bef08691a49b96303\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7b8b013d5426d0ba0f4c9657e0ddc06ee0cecbf91679f4cb06a9bf2214cce17e\",\"dweb:/ipfs/QmXTPcBsdSanj4RM3xPrqNNMXk3eG8H7h47zSXj4ZVwTC9\"]},\"contracts/libraries/utils/IterableMappingBPS.sol\":{\"keccak256\":\"0xb6ab47a53267822918fdd13e4df79bfc1e8b2bbf921c80bbc4ad2e706e3539ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://092d19ac7ce0d7ada8fbb01d3af6822d6d8260fe8b8248e54b906a9edf381dd2\",\"dweb:/ipfs/QmZ8LZ72a2sSNfwm4Fpz54ZHVcjTe1dDy4ZrBhbNztZ1Bg\"]},\"contracts/services/gelato/Types.sol\":{\"keccak256\":\"0xcb8ce40dd420fe9d1fc258beba179e7c43560616dfd045d254a15fa75e6043e8\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://27599e8fa821421f99c2ae56716b118c4f47201d20c8475f6554395a60fc00a5\",\"dweb:/ipfs/QmS7h9jcSSZTM1icDDcFjdNgK3cFJWXFEXoJBpjfjn2a89\"]}},\"version\":1}"}},"contracts/facets/core/Session.sol":{"Session":{"abi":[{"inputs":[],"name":"ArrayLengthNotMatch","type":"error"},{"inputs":[],"name":"InvalidFlowRate","type":"error"},{"inputs":[],"name":"InvalidSuperToken","type":"error"},{"inputs":[],"name":"PreviousSessionStillLive","type":"error"},{"inputs":[],"name":"SessionAlreadyEnded","type":"error"},{"inputs":[],"name":"SessionNotStarted","type":"error"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getCurrentSessionData","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"address","name":"_superToken","type":"address"}],"name":"getNewSessionNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"address","name":"_superToken","type":"address"},{"internalType":"uint256","name":"_nonce","type":"uint256"}],"name":"getSessionData","outputs":[{"internalType":"int96","name":"","type":"int96"},{"internalType":"uint96","name":"","type":"uint96"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"},{"internalType":"uint96","name":"_flowRate","type":"uint96"},{"internalType":"uint256","name":"_tag","type":"uint256"}],"name":"startSession","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_superTokens","type":"address[]"},{"internalType":"uint96[]","name":"_flowRates","type":"uint96[]"},{"internalType":"uint256[]","name":"_tags","type":"uint256[]"}],"name":"startSessions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"}],"name":"stopSession","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_superTokens","type":"address[]"}],"name":"stopSessions","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50612b42806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806392c2226e1161005b57806392c2226e146101025780639afffbf914610132578063b233bd051461014e578063f437a7a51461016a5761007d565b806353732469146100825780637fe70a27146100b35780638ff3849b146100cf575b600080fd5b61009c60048036038101906100979190611dc7565b610186565b6040516100aa929190611ecb565b60405180910390f35b6100cd60048036038101906100c89190611f6b565b61019c565b005b6100e960048036038101906100e49190611fbe565b6102b0565b6040516100f9949392919061203c565b60405180910390f35b61011c60048036038101906101179190612081565b6102d2565b60405161012991906120c1565b60405180910390f35b61014c60048036038101906101479190612235565b6102e6565b005b61016860048036038101906101639190611dc7565b61038f565b005b610184600480360381019061017f9190612404565b6103fe565b005b6000606061019383610598565b91509150915091565b6101a5836106c4565b6101b0838383610706565b60006101ba610ad5565b9050428160020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055508060020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b6000806000806102c1878787610b02565b935093509350935093509350935093565b60006102de8383610da6565b905092915050565b60005b815181101561032857610315828281518110610308576103076124ab565b5b6020026020010151610e36565b808061032090612509565b9150506102e9565b50610331610ad5565b60020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008082016000905560018201600061038a9190611c4c565b505050565b61039881610e36565b6103a0610ad5565b60020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000808201600090556001820160006103f99190611c4c565b505050565b8151835114158061041157508051835114155b15610448576040517fed882f7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b83518110156104e35761047784828151811061046a576104696124ab565b5b60200260200101516106c4565b6104d084828151811061048d5761048c6124ab565b5b60200260200101518483815181106104a8576104a76124ab565b5b60200260200101518484815181106104c3576104c26124ab565b5b6020026020010151610706565b80806104db90612509565b91505061044b565b5060006104ee610ad5565b9050428160020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550838160020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001019080519060200190610591929190611c6d565b5050505050565b600060606105a4610ad5565b60020160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546105f0610ad5565b60020160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101808054806020026020016040519081016040528092919081815260200182805480156106b457602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161066a575b5050505050905091509150915091565b6106cd816110fa565b610703576040517f334ae3e600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6000610710610ad5565b9050600061071e3386610da6565b90506000811180156107ce575060008260010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001846107ba9190612551565b815260200190815260200160002060020154145b15610805576040517f9b90a9c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610812338686611159565b9050808360010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060000160006101000a8154816bffffffffffffffffffffffff0219169083600b0b6bffffffffffffffffffffffff160217905550848360010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000848152602001908152602001600020600001600c6101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550428360010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000848152602001908152602001600020600101819055506001610a3a610ad5565b60000160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ac69190612585565b92505081905550505050505050565b6000807f9cd9afe22fea86221d6e8117226b65bb0e2af8c4f5b8abf255fb0afcad4a3a9c90508091505090565b600080600080610b10610ad5565b60010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600086815260200190815260200160002060000160009054906101000a9004600b0b610bb7610ad5565b60010160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878152602001908152602001600020600001600c9054906101000a90046bffffffffffffffffffffffff16610c69610ad5565b60010160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088815260200190815260200160002060010154610d03610ad5565b60010160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600089815260200190815260200160002060020154935093509350935093509350935093565b6000610db0610ad5565b60000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000610e423383611287565b90506000610e4e610ad5565b60010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206001015403610f17576040517f3c2779e500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610f21610ad5565b60010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206002015414610fea576040517fe7a7ee3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000829050600061101c30338473ffffffffffffffffffffffffffffffffffffffff166113389092919063ffffffff16565b9050600081600b0b146110565761105430338473ffffffffffffffffffffffffffffffffffffffff166113d89092919063ffffffff16565b505b4261105f610ad5565b60010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008581526020019081526020016000206002018190555050505050565b600061110461158b565b60090160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080600061116661158b565b60040160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900461ffff16905060008161ffff1611156111cc578091506111e7565b6111d46115b8565b156111e6576111e385856115d8565b91505b5b60008261ffff16036111fd578492505050611280565b61271061ffff168261ffff168661121491906125b9565b6bffffffffffffffffffffffff16101561125a576040517ffe267e4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61271061ffff168261ffff168661127191906125b9565b61127b9190612625565b925050505b9392505050565b600080611292610ad5565b60000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811461132c576001816113279190612551565b61132f565b60005b91505092915050565b60008061134485611676565b9150508073ffffffffffffffffffffffffffffffffffffffff1663e6a1e8888686866040518463ffffffff1660e01b8152600401611384939291906126c4565b608060405180830381865afa1580156113a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c5919061273c565b9091925090505080925050509392505050565b60008060006113e6866118b7565b915091508173ffffffffffffffffffffffffffffffffffffffff166339255d5b828373ffffffffffffffffffffffffffffffffffffffff1663b4b333c68a8a8a600067ffffffffffffffff811115611441576114406120f2565b5b6040519080825280601f01601f1916602001820160405280156114735781602001600182028036833780820191505090505b506040516024016114879493929190612822565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050600067ffffffffffffffff8111156114e4576114e36120f2565b5b6040519080825280601f01601f1916602001820160405280156115165781602001600182028036833780820191505090505b506040518463ffffffff1660e01b81526004016115359392919061288f565b6000604051808303816000875af1158015611554573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061157d919061297a565b506001925050509392505050565b6000807f2f7ed27098ecefe70183ee38ae4542dee65215b0786f6870871034402cfe2cc990508091505090565b60006115c261158b565b60050160009054906101000a900460ff16905090565b6000806000806115e785611b3e565b925092509250816bffffffffffffffffffffffff16866bffffffffffffffffffffffff1610806116335750806bffffffffffffffffffffffff16866bffffffffffffffffffffffff1610155b1561166a576040517ffe267e4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82935050505092915050565b6000807f65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea8375491507fb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a549050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361183857600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361179b578273ffffffffffffffffffffffffffffffffffffffff166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015611774573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061179891906129d8565b91505b8173ffffffffffffffffffffffffffffffffffffffff1663b6d200de7fa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd36040518263ffffffff1660e01b81526004016117f49190612a57565b602060405180830381865afa158015611811573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118359190612ab0565b90505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361187557611874612add565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036118b2576118b1612add565b5b915091565b6000807f65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea8375491507fb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a549050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611abf57600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119dc578273ffffffffffffffffffffffffffffffffffffffff166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d991906129d8565b91505b8173ffffffffffffffffffffffffffffffffffffffff1663b6d200de7fa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd36040518263ffffffff1660e01b8152600401611a359190612a57565b602060405180830381865afa158015611a52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a769190612ab0565b9050817f65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea83755807fb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a555b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611afc57611afb612add565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b3957611b38612add565b5b915091565b600080600080611b6185611b5061158b565b600001611b8090919063ffffffff16565b9050806000015181602001518260400151935093509350509193909250565b611b88611cf7565b8260010160008381526020019081526020016000206040518060600160405290816000820160009054906101000a900461ffff1661ffff1661ffff1681526020016000820160029054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160008201600e9054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681525050905092915050565b5080546000825590600052602060002090810190611c6a9190611d38565b50565b828054828255906000526020600020908101928215611ce6579160200282015b82811115611ce55782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190611c8d565b5b509050611cf39190611d38565b5090565b6040518060600160405280600061ffff16815260200160006bffffffffffffffffffffffff16815260200160006bffffffffffffffffffffffff1681525090565b5b80821115611d51576000816000905550600101611d39565b5090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611d9482611d69565b9050919050565b611da481611d89565b8114611daf57600080fd5b50565b600081359050611dc181611d9b565b92915050565b600060208284031215611ddd57611ddc611d5f565b5b6000611deb84828501611db2565b91505092915050565b6000819050919050565b611e0781611df4565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b611e4281611d89565b82525050565b6000611e548383611e39565b60208301905092915050565b6000602082019050919050565b6000611e7882611e0d565b611e828185611e18565b9350611e8d83611e29565b8060005b83811015611ebe578151611ea58882611e48565b9750611eb083611e60565b925050600181019050611e91565b5085935050505092915050565b6000604082019050611ee06000830185611dfe565b8181036020830152611ef28184611e6d565b90509392505050565b60006bffffffffffffffffffffffff82169050919050565b611f1c81611efb565b8114611f2757600080fd5b50565b600081359050611f3981611f13565b92915050565b611f4881611df4565b8114611f5357600080fd5b50565b600081359050611f6581611f3f565b92915050565b600080600060608486031215611f8457611f83611d5f565b5b6000611f9286828701611db2565b9350506020611fa386828701611f2a565b9250506040611fb486828701611f56565b9150509250925092565b600080600060608486031215611fd757611fd6611d5f565b5b6000611fe586828701611db2565b9350506020611ff686828701611db2565b925050604061200786828701611f56565b9150509250925092565b600081600b0b9050919050565b61202781612011565b82525050565b61203681611efb565b82525050565b6000608082019050612051600083018761201e565b61205e602083018661202d565b61206b6040830185611dfe565b6120786060830184611dfe565b95945050505050565b6000806040838503121561209857612097611d5f565b5b60006120a685828601611db2565b92505060206120b785828601611db2565b9150509250929050565b60006020820190506120d66000830184611dfe565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61212a826120e1565b810181811067ffffffffffffffff82111715612149576121486120f2565b5b80604052505050565b600061215c611d55565b90506121688282612121565b919050565b600067ffffffffffffffff821115612188576121876120f2565b5b602082029050602081019050919050565b600080fd5b60006121b16121ac8461216d565b612152565b905080838252602082019050602084028301858111156121d4576121d3612199565b5b835b818110156121fd57806121e98882611db2565b8452602084019350506020810190506121d6565b5050509392505050565b600082601f83011261221c5761221b6120dc565b5b813561222c84826020860161219e565b91505092915050565b60006020828403121561224b5761224a611d5f565b5b600082013567ffffffffffffffff81111561226957612268611d64565b5b61227584828501612207565b91505092915050565b600067ffffffffffffffff821115612299576122986120f2565b5b602082029050602081019050919050565b60006122bd6122b88461227e565b612152565b905080838252602082019050602084028301858111156122e0576122df612199565b5b835b8181101561230957806122f58882611f2a565b8452602084019350506020810190506122e2565b5050509392505050565b600082601f830112612328576123276120dc565b5b81356123388482602086016122aa565b91505092915050565b600067ffffffffffffffff82111561235c5761235b6120f2565b5b602082029050602081019050919050565b600061238061237b84612341565b612152565b905080838252602082019050602084028301858111156123a3576123a2612199565b5b835b818110156123cc57806123b88882611f56565b8452602084019350506020810190506123a5565b5050509392505050565b600082601f8301126123eb576123ea6120dc565b5b81356123fb84826020860161236d565b91505092915050565b60008060006060848603121561241d5761241c611d5f565b5b600084013567ffffffffffffffff81111561243b5761243a611d64565b5b61244786828701612207565b935050602084013567ffffffffffffffff81111561246857612467611d64565b5b61247486828701612313565b925050604084013567ffffffffffffffff81111561249557612494611d64565b5b6124a1868287016123d6565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061251482611df4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612546576125456124da565b5b600182019050919050565b600061255c82611df4565b915061256783611df4565b925082820390508181111561257f5761257e6124da565b5b92915050565b600061259082611df4565b915061259b83611df4565b92508282019050808211156125b3576125b26124da565b5b92915050565b60006125c482611efb565b91506125cf83611efb565b92508282026125dd81611efb565b91508082146125ef576125ee6124da565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061263082611efb565b915061263b83611efb565b92508261264b5761264a6125f6565b5b828204905092915050565b6000819050919050565b600061267b61267661267184611d69565b612656565b611d69565b9050919050565b600061268d82612660565b9050919050565b600061269f82612682565b9050919050565b6126af81612694565b82525050565b6126be81611d89565b82525050565b60006060820190506126d960008301866126a6565b6126e660208301856126b5565b6126f360408301846126b5565b949350505050565b60008151905061270a81611f3f565b92915050565b61271981612011565b811461272457600080fd5b50565b60008151905061273681612710565b92915050565b6000806000806080858703121561275657612755611d5f565b5b6000612764878288016126fb565b945050602061277587828801612727565b9350506040612786878288016126fb565b9250506060612797878288016126fb565b91505092959194509250565b600081519050919050565b600082825260208201905092915050565b60005b838110156127dd5780820151818401526020810190506127c2565b60008484015250505050565b60006127f4826127a3565b6127fe81856127ae565b935061280e8185602086016127bf565b612817816120e1565b840191505092915050565b600060808201905061283760008301876126a6565b61284460208301866126b5565b61285160408301856126b5565b818103606083015261286381846127e9565b905095945050505050565b600061287982612682565b9050919050565b6128898161286e565b82525050565b60006060820190506128a46000830186612880565b81810360208301526128b681856127e9565b905081810360408301526128ca81846127e9565b9050949350505050565b600080fd5b600067ffffffffffffffff8211156128f4576128f36120f2565b5b6128fd826120e1565b9050602081019050919050565b600061291d612918846128d9565b612152565b905082815260208101848484011115612939576129386128d4565b5b6129448482856127bf565b509392505050565b600082601f830112612961576129606120dc565b5b815161297184826020860161290a565b91505092915050565b6000602082840312156129905761298f611d5f565b5b600082015167ffffffffffffffff8111156129ae576129ad611d64565b5b6129ba8482850161294c565b91505092915050565b6000815190506129d281611d9b565b92915050565b6000602082840312156129ee576129ed611d5f565b5b60006129fc848285016129c3565b91505092915050565b6000819050919050565b6000819050919050565b60008160001b9050919050565b6000612a41612a3c612a3784612a05565b612a19565b612a0f565b9050919050565b612a5181612a26565b82525050565b6000602082019050612a6c6000830184612a48565b92915050565b6000612a7d82611d89565b9050919050565b612a8d81612a72565b8114612a9857600080fd5b50565b600081519050612aaa81612a84565b92915050565b600060208284031215612ac657612ac5611d5f565b5b6000612ad484828501612a9b565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fdfea26469706673582212204a2ae86f674caf2c8d8326187f3355ce651aa34cbaff0459f5457490ec0d71fc64736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2B42 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x92C2226E GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x92C2226E EQ PUSH2 0x102 JUMPI DUP1 PUSH4 0x9AFFFBF9 EQ PUSH2 0x132 JUMPI DUP1 PUSH4 0xB233BD05 EQ PUSH2 0x14E JUMPI DUP1 PUSH4 0xF437A7A5 EQ PUSH2 0x16A JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x53732469 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x7FE70A27 EQ PUSH2 0xB3 JUMPI DUP1 PUSH4 0x8FF3849B EQ PUSH2 0xCF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x97 SWAP2 SWAP1 PUSH2 0x1DC7 JUMP JUMPDEST PUSH2 0x186 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAA SWAP3 SWAP2 SWAP1 PUSH2 0x1ECB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xCD PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xC8 SWAP2 SWAP1 PUSH2 0x1F6B JUMP JUMPDEST PUSH2 0x19C JUMP JUMPDEST STOP JUMPDEST PUSH2 0xE9 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xE4 SWAP2 SWAP1 PUSH2 0x1FBE JUMP JUMPDEST PUSH2 0x2B0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF9 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x203C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x11C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x117 SWAP2 SWAP1 PUSH2 0x2081 JUMP JUMPDEST PUSH2 0x2D2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x129 SWAP2 SWAP1 PUSH2 0x20C1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x14C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x147 SWAP2 SWAP1 PUSH2 0x2235 JUMP JUMPDEST PUSH2 0x2E6 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x168 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x163 SWAP2 SWAP1 PUSH2 0x1DC7 JUMP JUMPDEST PUSH2 0x38F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x17F SWAP2 SWAP1 PUSH2 0x2404 JUMP JUMPDEST PUSH2 0x3FE JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH2 0x193 DUP4 PUSH2 0x598 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH2 0x1A5 DUP4 PUSH2 0x6C4 JUMP JUMPDEST PUSH2 0x1B0 DUP4 DUP4 DUP4 PUSH2 0x706 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BA PUSH2 0xAD5 JUMP JUMPDEST SWAP1 POP TIMESTAMP DUP2 PUSH1 0x2 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x2 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD DUP5 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x2C1 DUP8 DUP8 DUP8 PUSH2 0xB02 JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2DE DUP4 DUP4 PUSH2 0xDA6 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x328 JUMPI PUSH2 0x315 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x308 JUMPI PUSH2 0x307 PUSH2 0x24AB JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0xE36 JUMP JUMPDEST DUP1 DUP1 PUSH2 0x320 SWAP1 PUSH2 0x2509 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x2E9 JUMP JUMPDEST POP PUSH2 0x331 PUSH2 0xAD5 JUMP JUMPDEST PUSH1 0x2 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP1 DUP3 ADD PUSH1 0x0 SWAP1 SSTORE PUSH1 0x1 DUP3 ADD PUSH1 0x0 PUSH2 0x38A SWAP2 SWAP1 PUSH2 0x1C4C JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x398 DUP2 PUSH2 0xE36 JUMP JUMPDEST PUSH2 0x3A0 PUSH2 0xAD5 JUMP JUMPDEST PUSH1 0x2 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP1 DUP3 ADD PUSH1 0x0 SWAP1 SSTORE PUSH1 0x1 DUP3 ADD PUSH1 0x0 PUSH2 0x3F9 SWAP2 SWAP1 PUSH2 0x1C4C JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP4 MLOAD EQ ISZERO DUP1 PUSH2 0x411 JUMPI POP DUP1 MLOAD DUP4 MLOAD EQ ISZERO JUMPDEST ISZERO PUSH2 0x448 JUMPI PUSH1 0x40 MLOAD PUSH32 0xED882F7100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x4E3 JUMPI PUSH2 0x477 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x46A JUMPI PUSH2 0x469 PUSH2 0x24AB JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x6C4 JUMP JUMPDEST PUSH2 0x4D0 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x48D JUMPI PUSH2 0x48C PUSH2 0x24AB JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x4A8 JUMPI PUSH2 0x4A7 PUSH2 0x24AB JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x4C3 JUMPI PUSH2 0x4C2 PUSH2 0x24AB JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x706 JUMP JUMPDEST DUP1 DUP1 PUSH2 0x4DB SWAP1 PUSH2 0x2509 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x44B JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x4EE PUSH2 0xAD5 JUMP JUMPDEST SWAP1 POP TIMESTAMP DUP2 PUSH1 0x2 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP2 SWAP1 SSTORE POP DUP4 DUP2 PUSH1 0x2 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x591 SWAP3 SWAP2 SWAP1 PUSH2 0x1C6D JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH2 0x5A4 PUSH2 0xAD5 JUMP JUMPDEST PUSH1 0x2 ADD PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD SLOAD PUSH2 0x5F0 PUSH2 0xAD5 JUMP JUMPDEST PUSH1 0x2 ADD PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD DUP1 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x6B4 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH2 0x66A JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 POP SWAP2 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH2 0x6CD DUP2 PUSH2 0x10FA JUMP JUMPDEST PUSH2 0x703 JUMPI PUSH1 0x40 MLOAD PUSH32 0x334AE3E600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x710 PUSH2 0xAD5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x71E CALLER DUP7 PUSH2 0xDA6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 GT DUP1 ISZERO PUSH2 0x7CE JUMPI POP PUSH1 0x0 DUP3 PUSH1 0x1 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH1 0x1 DUP5 PUSH2 0x7BA SWAP2 SWAP1 PUSH2 0x2551 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD SLOAD EQ JUMPDEST ISZERO PUSH2 0x805 JUMPI PUSH1 0x40 MLOAD PUSH32 0x9B90A9C600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x812 CALLER DUP7 DUP7 PUSH2 0x1159 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 PUSH1 0x1 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0xB SIGNEXTEND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP5 DUP4 PUSH1 0x1 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0xC PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP TIMESTAMP DUP4 PUSH1 0x1 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP PUSH1 0x1 PUSH2 0xA3A PUSH2 0xAD5 JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xAC6 SWAP2 SWAP1 PUSH2 0x2585 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x9CD9AFE22FEA86221D6E8117226B65BB0E2AF8C4F5B8ABF255FB0AFCAD4A3A9C SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0xB10 PUSH2 0xAD5 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xB SIGNEXTEND PUSH2 0xBB7 PUSH2 0xAD5 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0xC SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xC69 PUSH2 0xAD5 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0xD03 PUSH2 0xAD5 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDB0 PUSH2 0xAD5 JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE42 CALLER DUP4 PUSH2 0x1287 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xE4E PUSH2 0xAD5 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD SLOAD SUB PUSH2 0xF17 JUMPI PUSH1 0x40 MLOAD PUSH32 0x3C2779E500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xF21 PUSH2 0xAD5 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD SLOAD EQ PUSH2 0xFEA JUMPI PUSH1 0x40 MLOAD PUSH32 0xE7A7EE3800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 SWAP1 POP PUSH1 0x0 PUSH2 0x101C ADDRESS CALLER DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1338 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0xB SIGNEXTEND EQ PUSH2 0x1056 JUMPI PUSH2 0x1054 ADDRESS CALLER DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x13D8 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP JUMPDEST TIMESTAMP PUSH2 0x105F PUSH2 0xAD5 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD DUP2 SWAP1 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1104 PUSH2 0x158B JUMP JUMPDEST PUSH1 0x9 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1166 PUSH2 0x158B JUMP JUMPDEST PUSH1 0x4 ADD PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH2 0xFFFF AND SWAP1 POP PUSH1 0x0 DUP2 PUSH2 0xFFFF AND GT ISZERO PUSH2 0x11CC JUMPI DUP1 SWAP2 POP PUSH2 0x11E7 JUMP JUMPDEST PUSH2 0x11D4 PUSH2 0x15B8 JUMP JUMPDEST ISZERO PUSH2 0x11E6 JUMPI PUSH2 0x11E3 DUP6 DUP6 PUSH2 0x15D8 JUMP JUMPDEST SWAP2 POP JUMPDEST JUMPDEST PUSH1 0x0 DUP3 PUSH2 0xFFFF AND SUB PUSH2 0x11FD JUMPI DUP5 SWAP3 POP POP POP PUSH2 0x1280 JUMP JUMPDEST PUSH2 0x2710 PUSH2 0xFFFF AND DUP3 PUSH2 0xFFFF AND DUP7 PUSH2 0x1214 SWAP2 SWAP1 PUSH2 0x25B9 JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND LT ISZERO PUSH2 0x125A JUMPI PUSH1 0x40 MLOAD PUSH32 0xFE267E4200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2710 PUSH2 0xFFFF AND DUP3 PUSH2 0xFFFF AND DUP7 PUSH2 0x1271 SWAP2 SWAP1 PUSH2 0x25B9 JUMP JUMPDEST PUSH2 0x127B SWAP2 SWAP1 PUSH2 0x2625 JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1292 PUSH2 0xAD5 JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH1 0x0 DUP2 EQ PUSH2 0x132C JUMPI PUSH1 0x1 DUP2 PUSH2 0x1327 SWAP2 SWAP1 PUSH2 0x2551 JUMP JUMPDEST PUSH2 0x132F JUMP JUMPDEST PUSH1 0x0 JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1344 DUP6 PUSH2 0x1676 JUMP JUMPDEST SWAP2 POP POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xE6A1E888 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1384 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x26C4 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x13A1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x13C5 SWAP2 SWAP1 PUSH2 0x273C JUMP JUMPDEST SWAP1 SWAP2 SWAP3 POP SWAP1 POP POP DUP1 SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x13E6 DUP7 PUSH2 0x18B7 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x39255D5B DUP3 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xB4B333C6 DUP11 DUP11 DUP11 PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1441 JUMPI PUSH2 0x1440 PUSH2 0x20F2 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1473 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1487 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2822 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x14E4 JUMPI PUSH2 0x14E3 PUSH2 0x20F2 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1516 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1535 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x288F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1554 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x157D SWAP2 SWAP1 PUSH2 0x297A JUMP JUMPDEST POP PUSH1 0x1 SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x2F7ED27098ECEFE70183EE38AE4542DEE65215B0786F6870871034402CFE2CC9 SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15C2 PUSH2 0x158B JUMP JUMPDEST PUSH1 0x5 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x15E7 DUP6 PUSH2 0x1B3E JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND LT DUP1 PUSH2 0x1633 JUMPI POP DUP1 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND LT ISZERO JUMPDEST ISZERO PUSH2 0x166A JUMPI PUSH1 0x40 MLOAD PUSH32 0xFE267E4200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x65599BF746E17A00EA62E3610586992D88101B78EEC3CF380706621FB97EA837 SLOAD SWAP2 POP PUSH32 0xB969D79D88ACD02D04ED7EE7D43B949E7DAF093D363ABCFBBC43DFDFD1CE969A SLOAD SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1838 JUMPI PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x179B JUMPI DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x20BC4425 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1774 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1798 SWAP2 SWAP1 PUSH2 0x29D8 JUMP JUMPDEST SWAP2 POP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xB6D200DE PUSH32 0xA9214CC96615E0085D3BB077758DB69497DC2DCE3B2B1E97BC93C3D18D83EFD3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x17F4 SWAP2 SWAP1 PUSH2 0x2A57 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1811 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1835 SWAP2 SWAP1 PUSH2 0x2AB0 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1875 JUMPI PUSH2 0x1874 PUSH2 0x2ADD JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x18B2 JUMPI PUSH2 0x18B1 PUSH2 0x2ADD JUMP JUMPDEST JUMPDEST SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x65599BF746E17A00EA62E3610586992D88101B78EEC3CF380706621FB97EA837 SLOAD SWAP2 POP PUSH32 0xB969D79D88ACD02D04ED7EE7D43B949E7DAF093D363ABCFBBC43DFDFD1CE969A SLOAD SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1ABF JUMPI PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x19DC JUMPI DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x20BC4425 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x19B5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x19D9 SWAP2 SWAP1 PUSH2 0x29D8 JUMP JUMPDEST SWAP2 POP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xB6D200DE PUSH32 0xA9214CC96615E0085D3BB077758DB69497DC2DCE3B2B1E97BC93C3D18D83EFD3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1A35 SWAP2 SWAP1 PUSH2 0x2A57 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1A52 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1A76 SWAP2 SWAP1 PUSH2 0x2AB0 JUMP JUMPDEST SWAP1 POP DUP2 PUSH32 0x65599BF746E17A00EA62E3610586992D88101B78EEC3CF380706621FB97EA837 SSTORE DUP1 PUSH32 0xB969D79D88ACD02D04ED7EE7D43B949E7DAF093D363ABCFBBC43DFDFD1CE969A SSTORE JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1AFC JUMPI PUSH2 0x1AFB PUSH2 0x2ADD JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1B39 JUMPI PUSH2 0x1B38 PUSH2 0x2ADD JUMP JUMPDEST JUMPDEST SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x1B61 DUP6 PUSH2 0x1B50 PUSH2 0x158B JUMP JUMPDEST PUSH1 0x0 ADD PUSH2 0x1B80 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x0 ADD MLOAD DUP2 PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x40 ADD MLOAD SWAP4 POP SWAP4 POP SWAP4 POP POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH2 0x1B88 PUSH2 0x1CF7 JUMP JUMPDEST DUP3 PUSH1 0x1 ADD PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH2 0xFFFF AND PUSH2 0xFFFF AND PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP3 ADD PUSH1 0x2 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP3 ADD PUSH1 0xE SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST POP DUP1 SLOAD PUSH1 0x0 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1C6A SWAP2 SWAP1 PUSH2 0x1D38 JUMP JUMPDEST POP JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x1CE6 JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x1CE5 JUMPI DUP3 MLOAD DUP3 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x1C8D JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x1CF3 SWAP2 SWAP1 PUSH2 0x1D38 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1D51 JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH2 0x1D39 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D94 DUP3 PUSH2 0x1D69 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1DA4 DUP2 PUSH2 0x1D89 JUMP JUMPDEST DUP2 EQ PUSH2 0x1DAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1DC1 DUP2 PUSH2 0x1D9B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1DDD JUMPI PUSH2 0x1DDC PUSH2 0x1D5F JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1DEB DUP5 DUP3 DUP6 ADD PUSH2 0x1DB2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1E07 DUP2 PUSH2 0x1DF4 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1E42 DUP2 PUSH2 0x1D89 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E54 DUP4 DUP4 PUSH2 0x1E39 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E78 DUP3 PUSH2 0x1E0D JUMP JUMPDEST PUSH2 0x1E82 DUP2 DUP6 PUSH2 0x1E18 JUMP JUMPDEST SWAP4 POP PUSH2 0x1E8D DUP4 PUSH2 0x1E29 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1EBE JUMPI DUP2 MLOAD PUSH2 0x1EA5 DUP9 DUP3 PUSH2 0x1E48 JUMP JUMPDEST SWAP8 POP PUSH2 0x1EB0 DUP4 PUSH2 0x1E60 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x1E91 JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x1EE0 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x1DFE JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x1EF2 DUP2 DUP5 PUSH2 0x1E6D JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1F1C DUP2 PUSH2 0x1EFB JUMP JUMPDEST DUP2 EQ PUSH2 0x1F27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1F39 DUP2 PUSH2 0x1F13 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1F48 DUP2 PUSH2 0x1DF4 JUMP JUMPDEST DUP2 EQ PUSH2 0x1F53 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1F65 DUP2 PUSH2 0x1F3F JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1F84 JUMPI PUSH2 0x1F83 PUSH2 0x1D5F JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1F92 DUP7 DUP3 DUP8 ADD PUSH2 0x1DB2 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x1FA3 DUP7 DUP3 DUP8 ADD PUSH2 0x1F2A JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x1FB4 DUP7 DUP3 DUP8 ADD PUSH2 0x1F56 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1FD7 JUMPI PUSH2 0x1FD6 PUSH2 0x1D5F JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1FE5 DUP7 DUP3 DUP8 ADD PUSH2 0x1DB2 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x1FF6 DUP7 DUP3 DUP8 ADD PUSH2 0x1DB2 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x2007 DUP7 DUP3 DUP8 ADD PUSH2 0x1F56 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0xB SIGNEXTEND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2027 DUP2 PUSH2 0x2011 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x2036 DUP2 PUSH2 0x1EFB JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x2051 PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x201E JUMP JUMPDEST PUSH2 0x205E PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x202D JUMP JUMPDEST PUSH2 0x206B PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x1DFE JUMP JUMPDEST PUSH2 0x2078 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x1DFE JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2098 JUMPI PUSH2 0x2097 PUSH2 0x1D5F JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x20A6 DUP6 DUP3 DUP7 ADD PUSH2 0x1DB2 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x20B7 DUP6 DUP3 DUP7 ADD PUSH2 0x1DB2 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x20D6 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1DFE JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x212A DUP3 PUSH2 0x20E1 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x2149 JUMPI PUSH2 0x2148 PUSH2 0x20F2 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x215C PUSH2 0x1D55 JUMP JUMPDEST SWAP1 POP PUSH2 0x2168 DUP3 DUP3 PUSH2 0x2121 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2188 JUMPI PUSH2 0x2187 PUSH2 0x20F2 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x21B1 PUSH2 0x21AC DUP5 PUSH2 0x216D JUMP JUMPDEST PUSH2 0x2152 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x21D4 JUMPI PUSH2 0x21D3 PUSH2 0x2199 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x21FD JUMPI DUP1 PUSH2 0x21E9 DUP9 DUP3 PUSH2 0x1DB2 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x21D6 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x221C JUMPI PUSH2 0x221B PUSH2 0x20DC JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x222C DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x219E JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x224B JUMPI PUSH2 0x224A PUSH2 0x1D5F JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2269 JUMPI PUSH2 0x2268 PUSH2 0x1D64 JUMP JUMPDEST JUMPDEST PUSH2 0x2275 DUP5 DUP3 DUP6 ADD PUSH2 0x2207 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2299 JUMPI PUSH2 0x2298 PUSH2 0x20F2 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x22BD PUSH2 0x22B8 DUP5 PUSH2 0x227E JUMP JUMPDEST PUSH2 0x2152 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x22E0 JUMPI PUSH2 0x22DF PUSH2 0x2199 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2309 JUMPI DUP1 PUSH2 0x22F5 DUP9 DUP3 PUSH2 0x1F2A JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x22E2 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2328 JUMPI PUSH2 0x2327 PUSH2 0x20DC JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2338 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x22AA JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x235C JUMPI PUSH2 0x235B PUSH2 0x20F2 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2380 PUSH2 0x237B DUP5 PUSH2 0x2341 JUMP JUMPDEST PUSH2 0x2152 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x23A3 JUMPI PUSH2 0x23A2 PUSH2 0x2199 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x23CC JUMPI DUP1 PUSH2 0x23B8 DUP9 DUP3 PUSH2 0x1F56 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x23A5 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x23EB JUMPI PUSH2 0x23EA PUSH2 0x20DC JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x23FB DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x236D JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x241D JUMPI PUSH2 0x241C PUSH2 0x1D5F JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x243B JUMPI PUSH2 0x243A PUSH2 0x1D64 JUMP JUMPDEST JUMPDEST PUSH2 0x2447 DUP7 DUP3 DUP8 ADD PUSH2 0x2207 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2468 JUMPI PUSH2 0x2467 PUSH2 0x1D64 JUMP JUMPDEST JUMPDEST PUSH2 0x2474 DUP7 DUP3 DUP8 ADD PUSH2 0x2313 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2495 JUMPI PUSH2 0x2494 PUSH2 0x1D64 JUMP JUMPDEST JUMPDEST PUSH2 0x24A1 DUP7 DUP3 DUP8 ADD PUSH2 0x23D6 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2514 DUP3 PUSH2 0x1DF4 JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x2546 JUMPI PUSH2 0x2545 PUSH2 0x24DA JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x255C DUP3 PUSH2 0x1DF4 JUMP JUMPDEST SWAP2 POP PUSH2 0x2567 DUP4 PUSH2 0x1DF4 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP DUP2 DUP2 GT ISZERO PUSH2 0x257F JUMPI PUSH2 0x257E PUSH2 0x24DA JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2590 DUP3 PUSH2 0x1DF4 JUMP JUMPDEST SWAP2 POP PUSH2 0x259B DUP4 PUSH2 0x1DF4 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x25B3 JUMPI PUSH2 0x25B2 PUSH2 0x24DA JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x25C4 DUP3 PUSH2 0x1EFB JUMP JUMPDEST SWAP2 POP PUSH2 0x25CF DUP4 PUSH2 0x1EFB JUMP JUMPDEST SWAP3 POP DUP3 DUP3 MUL PUSH2 0x25DD DUP2 PUSH2 0x1EFB JUMP JUMPDEST SWAP2 POP DUP1 DUP3 EQ PUSH2 0x25EF JUMPI PUSH2 0x25EE PUSH2 0x24DA JUMP JUMPDEST JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2630 DUP3 PUSH2 0x1EFB JUMP JUMPDEST SWAP2 POP PUSH2 0x263B DUP4 PUSH2 0x1EFB JUMP JUMPDEST SWAP3 POP DUP3 PUSH2 0x264B JUMPI PUSH2 0x264A PUSH2 0x25F6 JUMP JUMPDEST JUMPDEST DUP3 DUP3 DIV SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x267B PUSH2 0x2676 PUSH2 0x2671 DUP5 PUSH2 0x1D69 JUMP JUMPDEST PUSH2 0x2656 JUMP JUMPDEST PUSH2 0x1D69 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x268D DUP3 PUSH2 0x2660 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x269F DUP3 PUSH2 0x2682 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x26AF DUP2 PUSH2 0x2694 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x26BE DUP2 PUSH2 0x1D89 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x26D9 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x26A6 JUMP JUMPDEST PUSH2 0x26E6 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x26B5 JUMP JUMPDEST PUSH2 0x26F3 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x26B5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x270A DUP2 PUSH2 0x1F3F JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2719 DUP2 PUSH2 0x2011 JUMP JUMPDEST DUP2 EQ PUSH2 0x2724 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x2736 DUP2 PUSH2 0x2710 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x2756 JUMPI PUSH2 0x2755 PUSH2 0x1D5F JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2764 DUP8 DUP3 DUP9 ADD PUSH2 0x26FB JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x2775 DUP8 DUP3 DUP9 ADD PUSH2 0x2727 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x2786 DUP8 DUP3 DUP9 ADD PUSH2 0x26FB JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x2797 DUP8 DUP3 DUP9 ADD PUSH2 0x26FB JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x27DD JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x27C2 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27F4 DUP3 PUSH2 0x27A3 JUMP JUMPDEST PUSH2 0x27FE DUP2 DUP6 PUSH2 0x27AE JUMP JUMPDEST SWAP4 POP PUSH2 0x280E DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x27BF JUMP JUMPDEST PUSH2 0x2817 DUP2 PUSH2 0x20E1 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x2837 PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x26A6 JUMP JUMPDEST PUSH2 0x2844 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x26B5 JUMP JUMPDEST PUSH2 0x2851 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x26B5 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x2863 DUP2 DUP5 PUSH2 0x27E9 JUMP JUMPDEST SWAP1 POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2879 DUP3 PUSH2 0x2682 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2889 DUP2 PUSH2 0x286E JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x28A4 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x2880 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x28B6 DUP2 DUP6 PUSH2 0x27E9 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x28CA DUP2 DUP5 PUSH2 0x27E9 JUMP JUMPDEST SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x28F4 JUMPI PUSH2 0x28F3 PUSH2 0x20F2 JUMP JUMPDEST JUMPDEST PUSH2 0x28FD DUP3 PUSH2 0x20E1 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x291D PUSH2 0x2918 DUP5 PUSH2 0x28D9 JUMP JUMPDEST PUSH2 0x2152 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x2939 JUMPI PUSH2 0x2938 PUSH2 0x28D4 JUMP JUMPDEST JUMPDEST PUSH2 0x2944 DUP5 DUP3 DUP6 PUSH2 0x27BF JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2961 JUMPI PUSH2 0x2960 PUSH2 0x20DC JUMP JUMPDEST JUMPDEST DUP2 MLOAD PUSH2 0x2971 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x290A JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2990 JUMPI PUSH2 0x298F PUSH2 0x1D5F JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP3 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x29AE JUMPI PUSH2 0x29AD PUSH2 0x1D64 JUMP JUMPDEST JUMPDEST PUSH2 0x29BA DUP5 DUP3 DUP6 ADD PUSH2 0x294C JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x29D2 DUP2 PUSH2 0x1D9B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x29EE JUMPI PUSH2 0x29ED PUSH2 0x1D5F JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x29FC DUP5 DUP3 DUP6 ADD PUSH2 0x29C3 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 SHL SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2A41 PUSH2 0x2A3C PUSH2 0x2A37 DUP5 PUSH2 0x2A05 JUMP JUMPDEST PUSH2 0x2A19 JUMP JUMPDEST PUSH2 0x2A0F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2A51 DUP2 PUSH2 0x2A26 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2A6C PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2A48 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2A7D DUP3 PUSH2 0x1D89 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2A8D DUP2 PUSH2 0x2A72 JUMP JUMPDEST DUP2 EQ PUSH2 0x2A98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x2AAA DUP2 PUSH2 0x2A84 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2AC6 JUMPI PUSH2 0x2AC5 PUSH2 0x1D5F JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2AD4 DUP5 DUP3 DUP6 ADD PUSH2 0x2A9B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4A 0x2A 0xE8 PUSH16 0x674CAF2C8D8326187F3355CE651AA34C 0xBA SELFDESTRUCT DIV MSIZE CREATE2 GASLIMIT PUSH21 0x90EC0D71FC64736F6C634300081200330000000000 ","sourceMap":"273:3383:28:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_getAndCacheHostAndCFA_4895":{"entryPoint":6327,"id":4895,"parameterSlots":1,"returnSlots":2},"@_getBPSData_13180":{"entryPoint":6974,"id":13180,"parameterSlots":1,"returnSlots":3},"@_getCurrentNonce_14729":{"entryPoint":4743,"id":14729,"parameterSlots":2,"returnSlots":1},"@_getCurrentSessionData_14754":{"entryPoint":1432,"id":14754,"parameterSlots":1,"returnSlots":2},"@_getEffectiveFlowRate_14682":{"entryPoint":4441,"id":14682,"parameterSlots":3,"returnSlots":1},"@_getHostAndCFA_5062":{"entryPoint":5750,"id":5062,"parameterSlots":1,"returnSlots":2},"@_getNewNonce_14700":{"entryPoint":3494,"id":14700,"parameterSlots":2,"returnSlots":1},"@_getSessionData_14814":{"entryPoint":2818,"id":14814,"parameterSlots":3,"returnSlots":4},"@_getValidBPS_13150":{"entryPoint":5592,"id":13150,"parameterSlots":2,"returnSlots":1},"@_isBPSEnabled_13105":{"entryPoint":5560,"id":13105,"parameterSlots":0,"returnSlots":1},"@_isSuperTokensSupported_13095":{"entryPoint":4346,"id":13095,"parameterSlots":1,"returnSlots":1},"@_requireSuperTokenSupported_12753":{"entryPoint":1732,"id":12753,"parameterSlots":1,"returnSlots":0},"@_startSession_14506":{"entryPoint":1798,"id":14506,"parameterSlots":3,"returnSlots":0},"@_stopSession_14603":{"entryPoint":3638,"id":14603,"parameterSlots":1,"returnSlots":0},"@_storageControl_12430":{"entryPoint":5515,"id":12430,"parameterSlots":0,"returnSlots":1},"@_storageSession_14396":{"entryPoint":2773,"id":14396,"parameterSlots":0,"returnSlots":1},"@deleteFlow_2248":{"entryPoint":5080,"id":2248,"parameterSlots":3,"returnSlots":1},"@getCurrentSessionData_10884":{"entryPoint":390,"id":10884,"parameterSlots":1,"returnSlots":2},"@getFlowRate_3274":{"entryPoint":4920,"id":3274,"parameterSlots":3,"returnSlots":1},"@getNewSessionNonce_10843":{"entryPoint":722,"id":10843,"parameterSlots":2,"returnSlots":1},"@getSessionData_10868":{"entryPoint":688,"id":10868,"parameterSlots":3,"returnSlots":4},"@get_14969":{"entryPoint":7040,"id":14969,"parameterSlots":2,"returnSlots":1},"@startSession_10676":{"entryPoint":412,"id":10676,"parameterSlots":3,"returnSlots":0},"@startSessions_10790":{"entryPoint":1022,"id":10790,"parameterSlots":3,"returnSlots":0},"@stopSession_10697":{"entryPoint":911,"id":10697,"parameterSlots":1,"returnSlots":0},"@stopSessions_10827":{"entryPoint":742,"id":10827,"parameterSlots":1,"returnSlots":0},"abi_decode_available_length_t_array$_t_address_$dyn_memory_ptr":{"entryPoint":8606,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr":{"entryPoint":9069,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_available_length_t_array$_t_uint96_$dyn_memory_ptr":{"entryPoint":8874,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_available_length_t_bytes_memory_ptr_fromMemory":{"entryPoint":10506,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_t_address":{"entryPoint":7602,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_address_fromMemory":{"entryPoint":10691,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_array$_t_address_$dyn_memory_ptr":{"entryPoint":8711,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_array$_t_uint256_$dyn_memory_ptr":{"entryPoint":9174,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_array$_t_uint96_$dyn_memory_ptr":{"entryPoint":8979,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes_memory_ptr_fromMemory":{"entryPoint":10572,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_contract$_ISuperAgreement_$6463_fromMemory":{"entryPoint":10907,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_int96_fromMemory":{"entryPoint":10023,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint256":{"entryPoint":8022,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint256_fromMemory":{"entryPoint":9979,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint96":{"entryPoint":7978,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":7623,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":10712,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":8321,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":8126,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_uint96t_uint256":{"entryPoint":8043,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_array$_t_address_$dyn_memory_ptr":{"entryPoint":8757,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint96_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr":{"entryPoint":9220,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_bytes_memory_ptr_fromMemory":{"entryPoint":10618,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_contract$_ISuperAgreement_$6463_fromMemory":{"entryPoint":10928,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256t_int96t_uint256t_uint256_fromMemory":{"entryPoint":10044,"id":null,"parameterSlots":2,"returnSlots":4},"abi_encodeUpdatedPos_t_address_to_t_address":{"entryPoint":7752,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_address_to_t_address":{"entryPoint":7737,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_address_to_t_address_fromStack":{"entryPoint":9909,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_array$_t_address_$dyn_memory_ptr_to_t_array$_t_address_$dyn_memory_ptr_fromStack":{"entryPoint":7789,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack":{"entryPoint":10217,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_contract$_IConstantFlowAgreementV1_$5555_to_t_address_fromStack":{"entryPoint":10368,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_contract$_ISuperToken_$7015_to_t_address_fromStack":{"entryPoint":9894,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_int96_to_t_int96_fromStack":{"entryPoint":8222,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1_to_t_bytes32_fromStack":{"entryPoint":10824,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_uint256_to_t_uint256_fromStack":{"entryPoint":7678,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_uint96_to_t_uint96_fromStack":{"entryPoint":8237,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_tuple_t_contract$_IConstantFlowAgreementV1_$5555_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":10383,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_contract$_ISuperToken_$7015_t_address_t_address__to_t_address_t_address_t_address__fromStack_reversed":{"entryPoint":9924,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_contract$_ISuperToken_$7015_t_address_t_address_t_bytes_memory_ptr__to_t_address_t_address_t_address_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":10274,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_int96_t_uint96_t_uint256_t_uint256__to_t_int96_t_uint96_t_uint256_t_uint256__fromStack_reversed":{"entryPoint":8252,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1__to_t_bytes32__fromStack_reversed":{"entryPoint":10839,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":8385,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_uint256_t_array$_t_address_$dyn_memory_ptr__to_t_uint256_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":7883,"id":null,"parameterSlots":3,"returnSlots":1},"allocate_memory":{"entryPoint":8530,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":7509,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_t_array$_t_address_$dyn_memory_ptr":{"entryPoint":8557,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr":{"entryPoint":9025,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_t_array$_t_uint96_$dyn_memory_ptr":{"entryPoint":8830,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_t_bytes_memory_ptr":{"entryPoint":10457,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_t_array$_t_address_$dyn_memory_ptr":{"entryPoint":7721,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_array$_t_address_$dyn_memory_ptr":{"entryPoint":7693,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_bytes_memory_ptr":{"entryPoint":10147,"id":null,"parameterSlots":1,"returnSlots":1},"array_nextElement_t_array$_t_address_$dyn_memory_ptr":{"entryPoint":7776,"id":null,"parameterSlots":1,"returnSlots":1},"array_storeLengthForEncoding_t_array$_t_address_$dyn_memory_ptr_fromStack":{"entryPoint":7704,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack":{"entryPoint":10158,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":9605,"id":null,"parameterSlots":2,"returnSlots":1},"checked_div_t_uint96":{"entryPoint":9765,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_t_uint96":{"entryPoint":9657,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":9553,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_t_address":{"entryPoint":7561,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_bytes32":{"entryPoint":10767,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_contract$_ISuperAgreement_$6463":{"entryPoint":10866,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_int96":{"entryPoint":8209,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1":{"entryPoint":10757,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint160":{"entryPoint":7529,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint256":{"entryPoint":7668,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint96":{"entryPoint":7931,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_contract$_IConstantFlowAgreementV1_$5555_to_t_address":{"entryPoint":10350,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_contract$_ISuperToken_$7015_to_t_address":{"entryPoint":9876,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1_to_t_bytes32":{"entryPoint":10790,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_uint160_to_t_address":{"entryPoint":9858,"id":null,"parameterSlots":1,"returnSlots":1},"convert_t_uint160_to_t_uint160":{"entryPoint":9824,"id":null,"parameterSlots":1,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":10175,"id":null,"parameterSlots":3,"returnSlots":0},"finalize_allocation":{"entryPoint":8481,"id":null,"parameterSlots":2,"returnSlots":0},"identity":{"entryPoint":9814,"id":null,"parameterSlots":1,"returnSlots":1},"increment_t_uint256":{"entryPoint":9481,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x01":{"entryPoint":10973,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x11":{"entryPoint":9434,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x12":{"entryPoint":9718,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":9387,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":8434,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":8412,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef":{"entryPoint":8601,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae":{"entryPoint":10452,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":7524,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":7519,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of_32":{"entryPoint":8417,"id":null,"parameterSlots":1,"returnSlots":1},"shift_left_0":{"entryPoint":10777,"id":null,"parameterSlots":1,"returnSlots":1},"validator_revert_t_address":{"entryPoint":7579,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_contract$_ISuperAgreement_$6463":{"entryPoint":10884,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_int96":{"entryPoint":10000,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_uint256":{"entryPoint":7999,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_uint96":{"entryPoint":7955,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:25660:61","statements":[{"body":{"nodeType":"YulBlock","src":"47:35:61","statements":[{"nodeType":"YulAssignment","src":"57:19:61","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"73:2:61","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"67:5:61"},"nodeType":"YulFunctionCall","src":"67:9:61"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"57:6:61"}]}]},"name":"allocate_unbounded","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"40:6:61","type":""}],"src":"7:75:61"},{"body":{"nodeType":"YulBlock","src":"177:28:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"194:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"197:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"187:6:61"},"nodeType":"YulFunctionCall","src":"187:12:61"},"nodeType":"YulExpressionStatement","src":"187:12:61"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulFunctionDefinition","src":"88:117:61"},{"body":{"nodeType":"YulBlock","src":"300:28:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"317:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"320:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"310:6:61"},"nodeType":"YulFunctionCall","src":"310:12:61"},"nodeType":"YulExpressionStatement","src":"310:12:61"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulFunctionDefinition","src":"211:117:61"},{"body":{"nodeType":"YulBlock","src":"379:81:61","statements":[{"nodeType":"YulAssignment","src":"389:65:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"404:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"411:42:61","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"400:3:61"},"nodeType":"YulFunctionCall","src":"400:54:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"389:7:61"}]}]},"name":"cleanup_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"361:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"371:7:61","type":""}],"src":"334:126:61"},{"body":{"nodeType":"YulBlock","src":"511:51:61","statements":[{"nodeType":"YulAssignment","src":"521:35:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"550:5:61"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"532:17:61"},"nodeType":"YulFunctionCall","src":"532:24:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"521:7:61"}]}]},"name":"cleanup_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"493:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"503:7:61","type":""}],"src":"466:96:61"},{"body":{"nodeType":"YulBlock","src":"611:79:61","statements":[{"body":{"nodeType":"YulBlock","src":"668:16:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"677:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"680:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"670:6:61"},"nodeType":"YulFunctionCall","src":"670:12:61"},"nodeType":"YulExpressionStatement","src":"670:12:61"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"634:5:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"659:5:61"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"641:17:61"},"nodeType":"YulFunctionCall","src":"641:24:61"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"631:2:61"},"nodeType":"YulFunctionCall","src":"631:35:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"624:6:61"},"nodeType":"YulFunctionCall","src":"624:43:61"},"nodeType":"YulIf","src":"621:63:61"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"604:5:61","type":""}],"src":"568:122:61"},{"body":{"nodeType":"YulBlock","src":"748:87:61","statements":[{"nodeType":"YulAssignment","src":"758:29:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"780:6:61"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"767:12:61"},"nodeType":"YulFunctionCall","src":"767:20:61"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"758:5:61"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"823:5:61"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"796:26:61"},"nodeType":"YulFunctionCall","src":"796:33:61"},"nodeType":"YulExpressionStatement","src":"796:33:61"}]},"name":"abi_decode_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"726:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"734:3:61","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"742:5:61","type":""}],"src":"696:139:61"},{"body":{"nodeType":"YulBlock","src":"907:263:61","statements":[{"body":{"nodeType":"YulBlock","src":"953:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"955:77:61"},"nodeType":"YulFunctionCall","src":"955:79:61"},"nodeType":"YulExpressionStatement","src":"955:79:61"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"928:7:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"937:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"924:3:61"},"nodeType":"YulFunctionCall","src":"924:23:61"},{"kind":"number","nodeType":"YulLiteral","src":"949:2:61","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"920:3:61"},"nodeType":"YulFunctionCall","src":"920:32:61"},"nodeType":"YulIf","src":"917:119:61"},{"nodeType":"YulBlock","src":"1046:117:61","statements":[{"nodeType":"YulVariableDeclaration","src":"1061:15:61","value":{"kind":"number","nodeType":"YulLiteral","src":"1075:1:61","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1065:6:61","type":""}]},{"nodeType":"YulAssignment","src":"1090:63:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1125:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"1136:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1121:3:61"},"nodeType":"YulFunctionCall","src":"1121:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1145:7:61"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"1100:20:61"},"nodeType":"YulFunctionCall","src":"1100:53:61"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1090:6:61"}]}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"877:9:61","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"888:7:61","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"900:6:61","type":""}],"src":"841:329:61"},{"body":{"nodeType":"YulBlock","src":"1221:32:61","statements":[{"nodeType":"YulAssignment","src":"1231:16:61","value":{"name":"value","nodeType":"YulIdentifier","src":"1242:5:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"1231:7:61"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1203:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"1213:7:61","type":""}],"src":"1176:77:61"},{"body":{"nodeType":"YulBlock","src":"1324:53:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1341:3:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1364:5:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"1346:17:61"},"nodeType":"YulFunctionCall","src":"1346:24:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1334:6:61"},"nodeType":"YulFunctionCall","src":"1334:37:61"},"nodeType":"YulExpressionStatement","src":"1334:37:61"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1312:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"1319:3:61","type":""}],"src":"1259:118:61"},{"body":{"nodeType":"YulBlock","src":"1457:40:61","statements":[{"nodeType":"YulAssignment","src":"1468:22:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1484:5:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1478:5:61"},"nodeType":"YulFunctionCall","src":"1478:12:61"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"1468:6:61"}]}]},"name":"array_length_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1440:5:61","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"1450:6:61","type":""}],"src":"1383:114:61"},{"body":{"nodeType":"YulBlock","src":"1614:73:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1631:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"1636:6:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1624:6:61"},"nodeType":"YulFunctionCall","src":"1624:19:61"},"nodeType":"YulExpressionStatement","src":"1624:19:61"},{"nodeType":"YulAssignment","src":"1652:29:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1671:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"1676:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1667:3:61"},"nodeType":"YulFunctionCall","src":"1667:14:61"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"1652:11:61"}]}]},"name":"array_storeLengthForEncoding_t_array$_t_address_$dyn_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1586:3:61","type":""},{"name":"length","nodeType":"YulTypedName","src":"1591:6:61","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"1602:11:61","type":""}],"src":"1503:184:61"},{"body":{"nodeType":"YulBlock","src":"1765:60:61","statements":[{"nodeType":"YulAssignment","src":"1775:11:61","value":{"name":"ptr","nodeType":"YulIdentifier","src":"1783:3:61"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"1775:4:61"}]},{"nodeType":"YulAssignment","src":"1796:22:61","value":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"1808:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"1813:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1804:3:61"},"nodeType":"YulFunctionCall","src":"1804:14:61"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"1796:4:61"}]}]},"name":"array_dataslot_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"1752:3:61","type":""}],"returnVariables":[{"name":"data","nodeType":"YulTypedName","src":"1760:4:61","type":""}],"src":"1693:132:61"},{"body":{"nodeType":"YulBlock","src":"1886:53:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1903:3:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1926:5:61"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"1908:17:61"},"nodeType":"YulFunctionCall","src":"1908:24:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1896:6:61"},"nodeType":"YulFunctionCall","src":"1896:37:61"},"nodeType":"YulExpressionStatement","src":"1896:37:61"}]},"name":"abi_encode_t_address_to_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1874:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"1881:3:61","type":""}],"src":"1831:108:61"},{"body":{"nodeType":"YulBlock","src":"2025:99:61","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2069:6:61"},{"name":"pos","nodeType":"YulIdentifier","src":"2077:3:61"}],"functionName":{"name":"abi_encode_t_address_to_t_address","nodeType":"YulIdentifier","src":"2035:33:61"},"nodeType":"YulFunctionCall","src":"2035:46:61"},"nodeType":"YulExpressionStatement","src":"2035:46:61"},{"nodeType":"YulAssignment","src":"2090:28:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2108:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"2113:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2104:3:61"},"nodeType":"YulFunctionCall","src":"2104:14:61"},"variableNames":[{"name":"updatedPos","nodeType":"YulIdentifier","src":"2090:10:61"}]}]},"name":"abi_encodeUpdatedPos_t_address_to_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value0","nodeType":"YulTypedName","src":"1998:6:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2006:3:61","type":""}],"returnVariables":[{"name":"updatedPos","nodeType":"YulTypedName","src":"2014:10:61","type":""}],"src":"1945:179:61"},{"body":{"nodeType":"YulBlock","src":"2205:38:61","statements":[{"nodeType":"YulAssignment","src":"2215:22:61","value":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"2227:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"2232:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2223:3:61"},"nodeType":"YulFunctionCall","src":"2223:14:61"},"variableNames":[{"name":"next","nodeType":"YulIdentifier","src":"2215:4:61"}]}]},"name":"array_nextElement_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"2192:3:61","type":""}],"returnVariables":[{"name":"next","nodeType":"YulTypedName","src":"2200:4:61","type":""}],"src":"2130:113:61"},{"body":{"nodeType":"YulBlock","src":"2403:608:61","statements":[{"nodeType":"YulVariableDeclaration","src":"2413:68:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2475:5:61"}],"functionName":{"name":"array_length_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"2427:47:61"},"nodeType":"YulFunctionCall","src":"2427:54:61"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"2417:6:61","type":""}]},{"nodeType":"YulAssignment","src":"2490:93:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2571:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"2576:6:61"}],"functionName":{"name":"array_storeLengthForEncoding_t_array$_t_address_$dyn_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"2497:73:61"},"nodeType":"YulFunctionCall","src":"2497:86:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"2490:3:61"}]},{"nodeType":"YulVariableDeclaration","src":"2592:71:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2657:5:61"}],"functionName":{"name":"array_dataslot_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"2607:49:61"},"nodeType":"YulFunctionCall","src":"2607:56:61"},"variables":[{"name":"baseRef","nodeType":"YulTypedName","src":"2596:7:61","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2672:21:61","value":{"name":"baseRef","nodeType":"YulIdentifier","src":"2686:7:61"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"2676:6:61","type":""}]},{"body":{"nodeType":"YulBlock","src":"2762:224:61","statements":[{"nodeType":"YulVariableDeclaration","src":"2776:34:61","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"2803:6:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2797:5:61"},"nodeType":"YulFunctionCall","src":"2797:13:61"},"variables":[{"name":"elementValue0","nodeType":"YulTypedName","src":"2780:13:61","type":""}]},{"nodeType":"YulAssignment","src":"2823:70:61","value":{"arguments":[{"name":"elementValue0","nodeType":"YulIdentifier","src":"2874:13:61"},{"name":"pos","nodeType":"YulIdentifier","src":"2889:3:61"}],"functionName":{"name":"abi_encodeUpdatedPos_t_address_to_t_address","nodeType":"YulIdentifier","src":"2830:43:61"},"nodeType":"YulFunctionCall","src":"2830:63:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"2823:3:61"}]},{"nodeType":"YulAssignment","src":"2906:70:61","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"2969:6:61"}],"functionName":{"name":"array_nextElement_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"2916:52:61"},"nodeType":"YulFunctionCall","src":"2916:60:61"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"2906:6:61"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"2724:1:61"},{"name":"length","nodeType":"YulIdentifier","src":"2727:6:61"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2721:2:61"},"nodeType":"YulFunctionCall","src":"2721:13:61"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"2735:18:61","statements":[{"nodeType":"YulAssignment","src":"2737:14:61","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"2746:1:61"},{"kind":"number","nodeType":"YulLiteral","src":"2749:1:61","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2742:3:61"},"nodeType":"YulFunctionCall","src":"2742:9:61"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"2737:1:61"}]}]},"pre":{"nodeType":"YulBlock","src":"2706:14:61","statements":[{"nodeType":"YulVariableDeclaration","src":"2708:10:61","value":{"kind":"number","nodeType":"YulLiteral","src":"2717:1:61","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"2712:1:61","type":""}]}]},"src":"2702:284:61"},{"nodeType":"YulAssignment","src":"2995:10:61","value":{"name":"pos","nodeType":"YulIdentifier","src":"3002:3:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2995:3:61"}]}]},"name":"abi_encode_t_array$_t_address_$dyn_memory_ptr_to_t_array$_t_address_$dyn_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2382:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2389:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2398:3:61","type":""}],"src":"2279:732:61"},{"body":{"nodeType":"YulBlock","src":"3193:307:61","statements":[{"nodeType":"YulAssignment","src":"3203:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3215:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"3226:2:61","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3211:3:61"},"nodeType":"YulFunctionCall","src":"3211:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3203:4:61"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3283:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3296:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"3307:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3292:3:61"},"nodeType":"YulFunctionCall","src":"3292:17:61"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"3239:43:61"},"nodeType":"YulFunctionCall","src":"3239:71:61"},"nodeType":"YulExpressionStatement","src":"3239:71:61"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3331:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"3342:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3327:3:61"},"nodeType":"YulFunctionCall","src":"3327:18:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"3351:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"3357:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3347:3:61"},"nodeType":"YulFunctionCall","src":"3347:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3320:6:61"},"nodeType":"YulFunctionCall","src":"3320:48:61"},"nodeType":"YulExpressionStatement","src":"3320:48:61"},{"nodeType":"YulAssignment","src":"3377:116:61","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"3479:6:61"},{"name":"tail","nodeType":"YulIdentifier","src":"3488:4:61"}],"functionName":{"name":"abi_encode_t_array$_t_address_$dyn_memory_ptr_to_t_array$_t_address_$dyn_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"3385:93:61"},"nodeType":"YulFunctionCall","src":"3385:108:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3377:4:61"}]}]},"name":"abi_encode_tuple_t_uint256_t_array$_t_address_$dyn_memory_ptr__to_t_uint256_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3157:9:61","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3169:6:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3177:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3188:4:61","type":""}],"src":"3017:483:61"},{"body":{"nodeType":"YulBlock","src":"3550:65:61","statements":[{"nodeType":"YulAssignment","src":"3560:49:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3575:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"3582:26:61","type":"","value":"0xffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3571:3:61"},"nodeType":"YulFunctionCall","src":"3571:38:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"3560:7:61"}]}]},"name":"cleanup_t_uint96","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3532:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"3542:7:61","type":""}],"src":"3506:109:61"},{"body":{"nodeType":"YulBlock","src":"3663:78:61","statements":[{"body":{"nodeType":"YulBlock","src":"3719:16:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3728:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3731:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3721:6:61"},"nodeType":"YulFunctionCall","src":"3721:12:61"},"nodeType":"YulExpressionStatement","src":"3721:12:61"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3686:5:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3710:5:61"}],"functionName":{"name":"cleanup_t_uint96","nodeType":"YulIdentifier","src":"3693:16:61"},"nodeType":"YulFunctionCall","src":"3693:23:61"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3683:2:61"},"nodeType":"YulFunctionCall","src":"3683:34:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3676:6:61"},"nodeType":"YulFunctionCall","src":"3676:42:61"},"nodeType":"YulIf","src":"3673:62:61"}]},"name":"validator_revert_t_uint96","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3656:5:61","type":""}],"src":"3621:120:61"},{"body":{"nodeType":"YulBlock","src":"3798:86:61","statements":[{"nodeType":"YulAssignment","src":"3808:29:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3830:6:61"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3817:12:61"},"nodeType":"YulFunctionCall","src":"3817:20:61"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"3808:5:61"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3872:5:61"}],"functionName":{"name":"validator_revert_t_uint96","nodeType":"YulIdentifier","src":"3846:25:61"},"nodeType":"YulFunctionCall","src":"3846:32:61"},"nodeType":"YulExpressionStatement","src":"3846:32:61"}]},"name":"abi_decode_t_uint96","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"3776:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"3784:3:61","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"3792:5:61","type":""}],"src":"3747:137:61"},{"body":{"nodeType":"YulBlock","src":"3933:79:61","statements":[{"body":{"nodeType":"YulBlock","src":"3990:16:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3999:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4002:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3992:6:61"},"nodeType":"YulFunctionCall","src":"3992:12:61"},"nodeType":"YulExpressionStatement","src":"3992:12:61"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3956:5:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3981:5:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"3963:17:61"},"nodeType":"YulFunctionCall","src":"3963:24:61"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3953:2:61"},"nodeType":"YulFunctionCall","src":"3953:35:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3946:6:61"},"nodeType":"YulFunctionCall","src":"3946:43:61"},"nodeType":"YulIf","src":"3943:63:61"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3926:5:61","type":""}],"src":"3890:122:61"},{"body":{"nodeType":"YulBlock","src":"4070:87:61","statements":[{"nodeType":"YulAssignment","src":"4080:29:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4102:6:61"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4089:12:61"},"nodeType":"YulFunctionCall","src":"4089:20:61"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"4080:5:61"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4145:5:61"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"4118:26:61"},"nodeType":"YulFunctionCall","src":"4118:33:61"},"nodeType":"YulExpressionStatement","src":"4118:33:61"}]},"name":"abi_decode_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"4048:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"4056:3:61","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"4064:5:61","type":""}],"src":"4018:139:61"},{"body":{"nodeType":"YulBlock","src":"4262:518:61","statements":[{"body":{"nodeType":"YulBlock","src":"4308:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"4310:77:61"},"nodeType":"YulFunctionCall","src":"4310:79:61"},"nodeType":"YulExpressionStatement","src":"4310:79:61"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4283:7:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"4292:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4279:3:61"},"nodeType":"YulFunctionCall","src":"4279:23:61"},{"kind":"number","nodeType":"YulLiteral","src":"4304:2:61","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4275:3:61"},"nodeType":"YulFunctionCall","src":"4275:32:61"},"nodeType":"YulIf","src":"4272:119:61"},{"nodeType":"YulBlock","src":"4401:117:61","statements":[{"nodeType":"YulVariableDeclaration","src":"4416:15:61","value":{"kind":"number","nodeType":"YulLiteral","src":"4430:1:61","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4420:6:61","type":""}]},{"nodeType":"YulAssignment","src":"4445:63:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4480:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"4491:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4476:3:61"},"nodeType":"YulFunctionCall","src":"4476:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4500:7:61"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"4455:20:61"},"nodeType":"YulFunctionCall","src":"4455:53:61"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4445:6:61"}]}]},{"nodeType":"YulBlock","src":"4528:117:61","statements":[{"nodeType":"YulVariableDeclaration","src":"4543:16:61","value":{"kind":"number","nodeType":"YulLiteral","src":"4557:2:61","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4547:6:61","type":""}]},{"nodeType":"YulAssignment","src":"4573:62:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4607:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"4618:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4603:3:61"},"nodeType":"YulFunctionCall","src":"4603:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4627:7:61"}],"functionName":{"name":"abi_decode_t_uint96","nodeType":"YulIdentifier","src":"4583:19:61"},"nodeType":"YulFunctionCall","src":"4583:52:61"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4573:6:61"}]}]},{"nodeType":"YulBlock","src":"4655:118:61","statements":[{"nodeType":"YulVariableDeclaration","src":"4670:16:61","value":{"kind":"number","nodeType":"YulLiteral","src":"4684:2:61","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4674:6:61","type":""}]},{"nodeType":"YulAssignment","src":"4700:63:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4735:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"4746:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4731:3:61"},"nodeType":"YulFunctionCall","src":"4731:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4755:7:61"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"4710:20:61"},"nodeType":"YulFunctionCall","src":"4710:53:61"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4700:6:61"}]}]}]},"name":"abi_decode_tuple_t_addresst_uint96t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4216:9:61","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4227:7:61","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4239:6:61","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4247:6:61","type":""},{"name":"value2","nodeType":"YulTypedName","src":"4255:6:61","type":""}],"src":"4163:617:61"},{"body":{"nodeType":"YulBlock","src":"4886:519:61","statements":[{"body":{"nodeType":"YulBlock","src":"4932:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"4934:77:61"},"nodeType":"YulFunctionCall","src":"4934:79:61"},"nodeType":"YulExpressionStatement","src":"4934:79:61"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4907:7:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"4916:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4903:3:61"},"nodeType":"YulFunctionCall","src":"4903:23:61"},{"kind":"number","nodeType":"YulLiteral","src":"4928:2:61","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4899:3:61"},"nodeType":"YulFunctionCall","src":"4899:32:61"},"nodeType":"YulIf","src":"4896:119:61"},{"nodeType":"YulBlock","src":"5025:117:61","statements":[{"nodeType":"YulVariableDeclaration","src":"5040:15:61","value":{"kind":"number","nodeType":"YulLiteral","src":"5054:1:61","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5044:6:61","type":""}]},{"nodeType":"YulAssignment","src":"5069:63:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5104:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"5115:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5100:3:61"},"nodeType":"YulFunctionCall","src":"5100:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5124:7:61"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"5079:20:61"},"nodeType":"YulFunctionCall","src":"5079:53:61"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5069:6:61"}]}]},{"nodeType":"YulBlock","src":"5152:118:61","statements":[{"nodeType":"YulVariableDeclaration","src":"5167:16:61","value":{"kind":"number","nodeType":"YulLiteral","src":"5181:2:61","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5171:6:61","type":""}]},{"nodeType":"YulAssignment","src":"5197:63:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5232:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"5243:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5228:3:61"},"nodeType":"YulFunctionCall","src":"5228:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5252:7:61"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"5207:20:61"},"nodeType":"YulFunctionCall","src":"5207:53:61"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"5197:6:61"}]}]},{"nodeType":"YulBlock","src":"5280:118:61","statements":[{"nodeType":"YulVariableDeclaration","src":"5295:16:61","value":{"kind":"number","nodeType":"YulLiteral","src":"5309:2:61","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"5299:6:61","type":""}]},{"nodeType":"YulAssignment","src":"5325:63:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5360:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"5371:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5356:3:61"},"nodeType":"YulFunctionCall","src":"5356:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5380:7:61"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"5335:20:61"},"nodeType":"YulFunctionCall","src":"5335:53:61"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"5325:6:61"}]}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4840:9:61","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4851:7:61","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4863:6:61","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4871:6:61","type":""},{"name":"value2","nodeType":"YulTypedName","src":"4879:6:61","type":""}],"src":"4786:619:61"},{"body":{"nodeType":"YulBlock","src":"5454:48:61","statements":[{"nodeType":"YulAssignment","src":"5464:32:61","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5486:2:61","type":"","value":"11"},{"name":"value","nodeType":"YulIdentifier","src":"5490:5:61"}],"functionName":{"name":"signextend","nodeType":"YulIdentifier","src":"5475:10:61"},"nodeType":"YulFunctionCall","src":"5475:21:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5464:7:61"}]}]},"name":"cleanup_t_int96","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5436:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5446:7:61","type":""}],"src":"5411:91:61"},{"body":{"nodeType":"YulBlock","src":"5569:51:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5586:3:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5607:5:61"}],"functionName":{"name":"cleanup_t_int96","nodeType":"YulIdentifier","src":"5591:15:61"},"nodeType":"YulFunctionCall","src":"5591:22:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5579:6:61"},"nodeType":"YulFunctionCall","src":"5579:35:61"},"nodeType":"YulExpressionStatement","src":"5579:35:61"}]},"name":"abi_encode_t_int96_to_t_int96_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5557:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"5564:3:61","type":""}],"src":"5508:112:61"},{"body":{"nodeType":"YulBlock","src":"5689:52:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5706:3:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5728:5:61"}],"functionName":{"name":"cleanup_t_uint96","nodeType":"YulIdentifier","src":"5711:16:61"},"nodeType":"YulFunctionCall","src":"5711:23:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5699:6:61"},"nodeType":"YulFunctionCall","src":"5699:36:61"},"nodeType":"YulExpressionStatement","src":"5699:36:61"}]},"name":"abi_encode_t_uint96_to_t_uint96_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5677:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"5684:3:61","type":""}],"src":"5626:115:61"},{"body":{"nodeType":"YulBlock","src":"5923:365:61","statements":[{"nodeType":"YulAssignment","src":"5933:27:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5945:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"5956:3:61","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5941:3:61"},"nodeType":"YulFunctionCall","src":"5941:19:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5933:4:61"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6010:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6023:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"6034:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6019:3:61"},"nodeType":"YulFunctionCall","src":"6019:17:61"}],"functionName":{"name":"abi_encode_t_int96_to_t_int96_fromStack","nodeType":"YulIdentifier","src":"5970:39:61"},"nodeType":"YulFunctionCall","src":"5970:67:61"},"nodeType":"YulExpressionStatement","src":"5970:67:61"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"6089:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6102:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"6113:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6098:3:61"},"nodeType":"YulFunctionCall","src":"6098:18:61"}],"functionName":{"name":"abi_encode_t_uint96_to_t_uint96_fromStack","nodeType":"YulIdentifier","src":"6047:41:61"},"nodeType":"YulFunctionCall","src":"6047:70:61"},"nodeType":"YulExpressionStatement","src":"6047:70:61"},{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"6171:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6184:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"6195:2:61","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6180:3:61"},"nodeType":"YulFunctionCall","src":"6180:18:61"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"6127:43:61"},"nodeType":"YulFunctionCall","src":"6127:72:61"},"nodeType":"YulExpressionStatement","src":"6127:72:61"},{"expression":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"6253:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6266:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"6277:2:61","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6262:3:61"},"nodeType":"YulFunctionCall","src":"6262:18:61"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"6209:43:61"},"nodeType":"YulFunctionCall","src":"6209:72:61"},"nodeType":"YulExpressionStatement","src":"6209:72:61"}]},"name":"abi_encode_tuple_t_int96_t_uint96_t_uint256_t_uint256__to_t_int96_t_uint96_t_uint256_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5871:9:61","type":""},{"name":"value3","nodeType":"YulTypedName","src":"5883:6:61","type":""},{"name":"value2","nodeType":"YulTypedName","src":"5891:6:61","type":""},{"name":"value1","nodeType":"YulTypedName","src":"5899:6:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5907:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5918:4:61","type":""}],"src":"5747:541:61"},{"body":{"nodeType":"YulBlock","src":"6377:391:61","statements":[{"body":{"nodeType":"YulBlock","src":"6423:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"6425:77:61"},"nodeType":"YulFunctionCall","src":"6425:79:61"},"nodeType":"YulExpressionStatement","src":"6425:79:61"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6398:7:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"6407:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6394:3:61"},"nodeType":"YulFunctionCall","src":"6394:23:61"},{"kind":"number","nodeType":"YulLiteral","src":"6419:2:61","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6390:3:61"},"nodeType":"YulFunctionCall","src":"6390:32:61"},"nodeType":"YulIf","src":"6387:119:61"},{"nodeType":"YulBlock","src":"6516:117:61","statements":[{"nodeType":"YulVariableDeclaration","src":"6531:15:61","value":{"kind":"number","nodeType":"YulLiteral","src":"6545:1:61","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6535:6:61","type":""}]},{"nodeType":"YulAssignment","src":"6560:63:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6595:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"6606:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6591:3:61"},"nodeType":"YulFunctionCall","src":"6591:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6615:7:61"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"6570:20:61"},"nodeType":"YulFunctionCall","src":"6570:53:61"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6560:6:61"}]}]},{"nodeType":"YulBlock","src":"6643:118:61","statements":[{"nodeType":"YulVariableDeclaration","src":"6658:16:61","value":{"kind":"number","nodeType":"YulLiteral","src":"6672:2:61","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6662:6:61","type":""}]},{"nodeType":"YulAssignment","src":"6688:63:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6723:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"6734:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6719:3:61"},"nodeType":"YulFunctionCall","src":"6719:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6743:7:61"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"6698:20:61"},"nodeType":"YulFunctionCall","src":"6698:53:61"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"6688:6:61"}]}]}]},"name":"abi_decode_tuple_t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6339:9:61","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6350:7:61","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6362:6:61","type":""},{"name":"value1","nodeType":"YulTypedName","src":"6370:6:61","type":""}],"src":"6294:474:61"},{"body":{"nodeType":"YulBlock","src":"6872:124:61","statements":[{"nodeType":"YulAssignment","src":"6882:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6894:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"6905:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6890:3:61"},"nodeType":"YulFunctionCall","src":"6890:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6882:4:61"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6962:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6975:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"6986:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6971:3:61"},"nodeType":"YulFunctionCall","src":"6971:17:61"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"6918:43:61"},"nodeType":"YulFunctionCall","src":"6918:71:61"},"nodeType":"YulExpressionStatement","src":"6918:71:61"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6844:9:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6856:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6867:4:61","type":""}],"src":"6774:222:61"},{"body":{"nodeType":"YulBlock","src":"7091:28:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7108:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7111:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7101:6:61"},"nodeType":"YulFunctionCall","src":"7101:12:61"},"nodeType":"YulExpressionStatement","src":"7101:12:61"}]},"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulFunctionDefinition","src":"7002:117:61"},{"body":{"nodeType":"YulBlock","src":"7173:54:61","statements":[{"nodeType":"YulAssignment","src":"7183:38:61","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7201:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"7208:2:61","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7197:3:61"},"nodeType":"YulFunctionCall","src":"7197:14:61"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7217:2:61","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"7213:3:61"},"nodeType":"YulFunctionCall","src":"7213:7:61"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7193:3:61"},"nodeType":"YulFunctionCall","src":"7193:28:61"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"7183:6:61"}]}]},"name":"round_up_to_mul_of_32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7156:5:61","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"7166:6:61","type":""}],"src":"7125:102:61"},{"body":{"nodeType":"YulBlock","src":"7261:152:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7278:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7281:77:61","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7271:6:61"},"nodeType":"YulFunctionCall","src":"7271:88:61"},"nodeType":"YulExpressionStatement","src":"7271:88:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7375:1:61","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"7378:4:61","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7368:6:61"},"nodeType":"YulFunctionCall","src":"7368:15:61"},"nodeType":"YulExpressionStatement","src":"7368:15:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7399:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"7402:4:61","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"7392:6:61"},"nodeType":"YulFunctionCall","src":"7392:15:61"},"nodeType":"YulExpressionStatement","src":"7392:15:61"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"7233:180:61"},{"body":{"nodeType":"YulBlock","src":"7462:238:61","statements":[{"nodeType":"YulVariableDeclaration","src":"7472:58:61","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7494:6:61"},{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"7524:4:61"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"7502:21:61"},"nodeType":"YulFunctionCall","src":"7502:27:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7490:3:61"},"nodeType":"YulFunctionCall","src":"7490:40:61"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"7476:10:61","type":""}]},{"body":{"nodeType":"YulBlock","src":"7641:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"7643:16:61"},"nodeType":"YulFunctionCall","src":"7643:18:61"},"nodeType":"YulExpressionStatement","src":"7643:18:61"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7584:10:61"},{"kind":"number","nodeType":"YulLiteral","src":"7596:18:61","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7581:2:61"},"nodeType":"YulFunctionCall","src":"7581:34:61"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7620:10:61"},{"name":"memPtr","nodeType":"YulIdentifier","src":"7632:6:61"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"7617:2:61"},"nodeType":"YulFunctionCall","src":"7617:22:61"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"7578:2:61"},"nodeType":"YulFunctionCall","src":"7578:62:61"},"nodeType":"YulIf","src":"7575:88:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7679:2:61","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"7683:10:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7672:6:61"},"nodeType":"YulFunctionCall","src":"7672:22:61"},"nodeType":"YulExpressionStatement","src":"7672:22:61"}]},"name":"finalize_allocation","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"7448:6:61","type":""},{"name":"size","nodeType":"YulTypedName","src":"7456:4:61","type":""}],"src":"7419:281:61"},{"body":{"nodeType":"YulBlock","src":"7747:88:61","statements":[{"nodeType":"YulAssignment","src":"7757:30:61","value":{"arguments":[],"functionName":{"name":"allocate_unbounded","nodeType":"YulIdentifier","src":"7767:18:61"},"nodeType":"YulFunctionCall","src":"7767:20:61"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7757:6:61"}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7816:6:61"},{"name":"size","nodeType":"YulIdentifier","src":"7824:4:61"}],"functionName":{"name":"finalize_allocation","nodeType":"YulIdentifier","src":"7796:19:61"},"nodeType":"YulFunctionCall","src":"7796:33:61"},"nodeType":"YulExpressionStatement","src":"7796:33:61"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"7731:4:61","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"7740:6:61","type":""}],"src":"7706:129:61"},{"body":{"nodeType":"YulBlock","src":"7923:229:61","statements":[{"body":{"nodeType":"YulBlock","src":"8028:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"8030:16:61"},"nodeType":"YulFunctionCall","src":"8030:18:61"},"nodeType":"YulExpressionStatement","src":"8030:18:61"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"8000:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"8008:18:61","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7997:2:61"},"nodeType":"YulFunctionCall","src":"7997:30:61"},"nodeType":"YulIf","src":"7994:56:61"},{"nodeType":"YulAssignment","src":"8060:25:61","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"8072:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"8080:4:61","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"8068:3:61"},"nodeType":"YulFunctionCall","src":"8068:17:61"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"8060:4:61"}]},{"nodeType":"YulAssignment","src":"8122:23:61","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"8134:4:61"},{"kind":"number","nodeType":"YulLiteral","src":"8140:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8130:3:61"},"nodeType":"YulFunctionCall","src":"8130:15:61"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"8122:4:61"}]}]},"name":"array_allocation_size_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"7907:6:61","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"7918:4:61","type":""}],"src":"7841:311:61"},{"body":{"nodeType":"YulBlock","src":"8247:28:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8264:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8267:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8257:6:61"},"nodeType":"YulFunctionCall","src":"8257:12:61"},"nodeType":"YulExpressionStatement","src":"8257:12:61"}]},"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nodeType":"YulFunctionDefinition","src":"8158:117:61"},{"body":{"nodeType":"YulBlock","src":"8400:608:61","statements":[{"nodeType":"YulAssignment","src":"8410:90:61","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"8492:6:61"}],"functionName":{"name":"array_allocation_size_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"8435:56:61"},"nodeType":"YulFunctionCall","src":"8435:64:61"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"8419:15:61"},"nodeType":"YulFunctionCall","src":"8419:81:61"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"8410:5:61"}]},{"nodeType":"YulVariableDeclaration","src":"8509:16:61","value":{"name":"array","nodeType":"YulIdentifier","src":"8520:5:61"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"8513:3:61","type":""}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"8542:5:61"},{"name":"length","nodeType":"YulIdentifier","src":"8549:6:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8535:6:61"},"nodeType":"YulFunctionCall","src":"8535:21:61"},"nodeType":"YulExpressionStatement","src":"8535:21:61"},{"nodeType":"YulAssignment","src":"8565:23:61","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"8576:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"8583:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8572:3:61"},"nodeType":"YulFunctionCall","src":"8572:16:61"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"8565:3:61"}]},{"nodeType":"YulVariableDeclaration","src":"8598:44:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"8616:6:61"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"8628:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"8636:4:61","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"8624:3:61"},"nodeType":"YulFunctionCall","src":"8624:17:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8612:3:61"},"nodeType":"YulFunctionCall","src":"8612:30:61"},"variables":[{"name":"srcEnd","nodeType":"YulTypedName","src":"8602:6:61","type":""}]},{"body":{"nodeType":"YulBlock","src":"8670:103:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nodeType":"YulIdentifier","src":"8684:77:61"},"nodeType":"YulFunctionCall","src":"8684:79:61"},"nodeType":"YulExpressionStatement","src":"8684:79:61"}]},"condition":{"arguments":[{"name":"srcEnd","nodeType":"YulIdentifier","src":"8657:6:61"},{"name":"end","nodeType":"YulIdentifier","src":"8665:3:61"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8654:2:61"},"nodeType":"YulFunctionCall","src":"8654:15:61"},"nodeType":"YulIf","src":"8651:122:61"},{"body":{"nodeType":"YulBlock","src":"8858:144:61","statements":[{"nodeType":"YulVariableDeclaration","src":"8873:21:61","value":{"name":"src","nodeType":"YulIdentifier","src":"8891:3:61"},"variables":[{"name":"elementPos","nodeType":"YulTypedName","src":"8877:10:61","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"8915:3:61"},{"arguments":[{"name":"elementPos","nodeType":"YulIdentifier","src":"8941:10:61"},{"name":"end","nodeType":"YulIdentifier","src":"8953:3:61"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"8920:20:61"},"nodeType":"YulFunctionCall","src":"8920:37:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8908:6:61"},"nodeType":"YulFunctionCall","src":"8908:50:61"},"nodeType":"YulExpressionStatement","src":"8908:50:61"},{"nodeType":"YulAssignment","src":"8971:21:61","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"8982:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"8987:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8978:3:61"},"nodeType":"YulFunctionCall","src":"8978:14:61"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"8971:3:61"}]}]},"condition":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"8811:3:61"},{"name":"srcEnd","nodeType":"YulIdentifier","src":"8816:6:61"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"8808:2:61"},"nodeType":"YulFunctionCall","src":"8808:15:61"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"8824:25:61","statements":[{"nodeType":"YulAssignment","src":"8826:21:61","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"8837:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"8842:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8833:3:61"},"nodeType":"YulFunctionCall","src":"8833:14:61"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"8826:3:61"}]}]},"pre":{"nodeType":"YulBlock","src":"8786:21:61","statements":[{"nodeType":"YulVariableDeclaration","src":"8788:17:61","value":{"name":"offset","nodeType":"YulIdentifier","src":"8799:6:61"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"8792:3:61","type":""}]}]},"src":"8782:220:61"}]},"name":"abi_decode_available_length_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"8370:6:61","type":""},{"name":"length","nodeType":"YulTypedName","src":"8378:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"8386:3:61","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"8394:5:61","type":""}],"src":"8298:710:61"},{"body":{"nodeType":"YulBlock","src":"9108:293:61","statements":[{"body":{"nodeType":"YulBlock","src":"9157:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"9159:77:61"},"nodeType":"YulFunctionCall","src":"9159:79:61"},"nodeType":"YulExpressionStatement","src":"9159:79:61"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"9136:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"9144:4:61","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9132:3:61"},"nodeType":"YulFunctionCall","src":"9132:17:61"},{"name":"end","nodeType":"YulIdentifier","src":"9151:3:61"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9128:3:61"},"nodeType":"YulFunctionCall","src":"9128:27:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"9121:6:61"},"nodeType":"YulFunctionCall","src":"9121:35:61"},"nodeType":"YulIf","src":"9118:122:61"},{"nodeType":"YulVariableDeclaration","src":"9249:34:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"9276:6:61"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9263:12:61"},"nodeType":"YulFunctionCall","src":"9263:20:61"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"9253:6:61","type":""}]},{"nodeType":"YulAssignment","src":"9292:103:61","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"9368:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"9376:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9364:3:61"},"nodeType":"YulFunctionCall","src":"9364:17:61"},{"name":"length","nodeType":"YulIdentifier","src":"9383:6:61"},{"name":"end","nodeType":"YulIdentifier","src":"9391:3:61"}],"functionName":{"name":"abi_decode_available_length_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"9301:62:61"},"nodeType":"YulFunctionCall","src":"9301:94:61"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"9292:5:61"}]}]},"name":"abi_decode_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"9086:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"9094:3:61","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"9102:5:61","type":""}],"src":"9031:370:61"},{"body":{"nodeType":"YulBlock","src":"9498:448:61","statements":[{"body":{"nodeType":"YulBlock","src":"9544:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"9546:77:61"},"nodeType":"YulFunctionCall","src":"9546:79:61"},"nodeType":"YulExpressionStatement","src":"9546:79:61"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"9519:7:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"9528:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9515:3:61"},"nodeType":"YulFunctionCall","src":"9515:23:61"},{"kind":"number","nodeType":"YulLiteral","src":"9540:2:61","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"9511:3:61"},"nodeType":"YulFunctionCall","src":"9511:32:61"},"nodeType":"YulIf","src":"9508:119:61"},{"nodeType":"YulBlock","src":"9637:302:61","statements":[{"nodeType":"YulVariableDeclaration","src":"9652:45:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9683:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"9694:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9679:3:61"},"nodeType":"YulFunctionCall","src":"9679:17:61"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9666:12:61"},"nodeType":"YulFunctionCall","src":"9666:31:61"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"9656:6:61","type":""}]},{"body":{"nodeType":"YulBlock","src":"9744:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"9746:77:61"},"nodeType":"YulFunctionCall","src":"9746:79:61"},"nodeType":"YulExpressionStatement","src":"9746:79:61"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"9716:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"9724:18:61","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"9713:2:61"},"nodeType":"YulFunctionCall","src":"9713:30:61"},"nodeType":"YulIf","src":"9710:117:61"},{"nodeType":"YulAssignment","src":"9841:88:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9901:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"9912:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9897:3:61"},"nodeType":"YulFunctionCall","src":"9897:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"9921:7:61"}],"functionName":{"name":"abi_decode_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"9851:45:61"},"nodeType":"YulFunctionCall","src":"9851:78:61"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"9841:6:61"}]}]}]},"name":"abi_decode_tuple_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9468:9:61","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"9479:7:61","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"9491:6:61","type":""}],"src":"9407:539:61"},{"body":{"nodeType":"YulBlock","src":"10033:229:61","statements":[{"body":{"nodeType":"YulBlock","src":"10138:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"10140:16:61"},"nodeType":"YulFunctionCall","src":"10140:18:61"},"nodeType":"YulExpressionStatement","src":"10140:18:61"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"10110:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"10118:18:61","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"10107:2:61"},"nodeType":"YulFunctionCall","src":"10107:30:61"},"nodeType":"YulIf","src":"10104:56:61"},{"nodeType":"YulAssignment","src":"10170:25:61","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"10182:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"10190:4:61","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"10178:3:61"},"nodeType":"YulFunctionCall","src":"10178:17:61"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"10170:4:61"}]},{"nodeType":"YulAssignment","src":"10232:23:61","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"10244:4:61"},{"kind":"number","nodeType":"YulLiteral","src":"10250:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10240:3:61"},"nodeType":"YulFunctionCall","src":"10240:15:61"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"10232:4:61"}]}]},"name":"array_allocation_size_t_array$_t_uint96_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"10017:6:61","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"10028:4:61","type":""}],"src":"9952:310:61"},{"body":{"nodeType":"YulBlock","src":"10385:606:61","statements":[{"nodeType":"YulAssignment","src":"10395:89:61","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"10476:6:61"}],"functionName":{"name":"array_allocation_size_t_array$_t_uint96_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"10420:55:61"},"nodeType":"YulFunctionCall","src":"10420:63:61"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"10404:15:61"},"nodeType":"YulFunctionCall","src":"10404:80:61"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"10395:5:61"}]},{"nodeType":"YulVariableDeclaration","src":"10493:16:61","value":{"name":"array","nodeType":"YulIdentifier","src":"10504:5:61"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"10497:3:61","type":""}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"10526:5:61"},{"name":"length","nodeType":"YulIdentifier","src":"10533:6:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10519:6:61"},"nodeType":"YulFunctionCall","src":"10519:21:61"},"nodeType":"YulExpressionStatement","src":"10519:21:61"},{"nodeType":"YulAssignment","src":"10549:23:61","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"10560:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"10567:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10556:3:61"},"nodeType":"YulFunctionCall","src":"10556:16:61"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"10549:3:61"}]},{"nodeType":"YulVariableDeclaration","src":"10582:44:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"10600:6:61"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"10612:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"10620:4:61","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"10608:3:61"},"nodeType":"YulFunctionCall","src":"10608:17:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10596:3:61"},"nodeType":"YulFunctionCall","src":"10596:30:61"},"variables":[{"name":"srcEnd","nodeType":"YulTypedName","src":"10586:6:61","type":""}]},{"body":{"nodeType":"YulBlock","src":"10654:103:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nodeType":"YulIdentifier","src":"10668:77:61"},"nodeType":"YulFunctionCall","src":"10668:79:61"},"nodeType":"YulExpressionStatement","src":"10668:79:61"}]},"condition":{"arguments":[{"name":"srcEnd","nodeType":"YulIdentifier","src":"10641:6:61"},{"name":"end","nodeType":"YulIdentifier","src":"10649:3:61"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"10638:2:61"},"nodeType":"YulFunctionCall","src":"10638:15:61"},"nodeType":"YulIf","src":"10635:122:61"},{"body":{"nodeType":"YulBlock","src":"10842:143:61","statements":[{"nodeType":"YulVariableDeclaration","src":"10857:21:61","value":{"name":"src","nodeType":"YulIdentifier","src":"10875:3:61"},"variables":[{"name":"elementPos","nodeType":"YulTypedName","src":"10861:10:61","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"10899:3:61"},{"arguments":[{"name":"elementPos","nodeType":"YulIdentifier","src":"10924:10:61"},{"name":"end","nodeType":"YulIdentifier","src":"10936:3:61"}],"functionName":{"name":"abi_decode_t_uint96","nodeType":"YulIdentifier","src":"10904:19:61"},"nodeType":"YulFunctionCall","src":"10904:36:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10892:6:61"},"nodeType":"YulFunctionCall","src":"10892:49:61"},"nodeType":"YulExpressionStatement","src":"10892:49:61"},{"nodeType":"YulAssignment","src":"10954:21:61","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"10965:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"10970:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10961:3:61"},"nodeType":"YulFunctionCall","src":"10961:14:61"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"10954:3:61"}]}]},"condition":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"10795:3:61"},{"name":"srcEnd","nodeType":"YulIdentifier","src":"10800:6:61"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"10792:2:61"},"nodeType":"YulFunctionCall","src":"10792:15:61"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"10808:25:61","statements":[{"nodeType":"YulAssignment","src":"10810:21:61","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"10821:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"10826:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10817:3:61"},"nodeType":"YulFunctionCall","src":"10817:14:61"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"10810:3:61"}]}]},"pre":{"nodeType":"YulBlock","src":"10770:21:61","statements":[{"nodeType":"YulVariableDeclaration","src":"10772:17:61","value":{"name":"offset","nodeType":"YulIdentifier","src":"10783:6:61"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"10776:3:61","type":""}]}]},"src":"10766:219:61"}]},"name":"abi_decode_available_length_t_array$_t_uint96_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"10355:6:61","type":""},{"name":"length","nodeType":"YulTypedName","src":"10363:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"10371:3:61","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"10379:5:61","type":""}],"src":"10284:707:61"},{"body":{"nodeType":"YulBlock","src":"11089:292:61","statements":[{"body":{"nodeType":"YulBlock","src":"11138:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"11140:77:61"},"nodeType":"YulFunctionCall","src":"11140:79:61"},"nodeType":"YulExpressionStatement","src":"11140:79:61"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"11117:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"11125:4:61","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11113:3:61"},"nodeType":"YulFunctionCall","src":"11113:17:61"},{"name":"end","nodeType":"YulIdentifier","src":"11132:3:61"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"11109:3:61"},"nodeType":"YulFunctionCall","src":"11109:27:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"11102:6:61"},"nodeType":"YulFunctionCall","src":"11102:35:61"},"nodeType":"YulIf","src":"11099:122:61"},{"nodeType":"YulVariableDeclaration","src":"11230:34:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"11257:6:61"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"11244:12:61"},"nodeType":"YulFunctionCall","src":"11244:20:61"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"11234:6:61","type":""}]},{"nodeType":"YulAssignment","src":"11273:102:61","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"11348:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"11356:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11344:3:61"},"nodeType":"YulFunctionCall","src":"11344:17:61"},{"name":"length","nodeType":"YulIdentifier","src":"11363:6:61"},{"name":"end","nodeType":"YulIdentifier","src":"11371:3:61"}],"functionName":{"name":"abi_decode_available_length_t_array$_t_uint96_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"11282:61:61"},"nodeType":"YulFunctionCall","src":"11282:93:61"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"11273:5:61"}]}]},"name":"abi_decode_t_array$_t_uint96_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"11067:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"11075:3:61","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"11083:5:61","type":""}],"src":"11013:368:61"},{"body":{"nodeType":"YulBlock","src":"11469:229:61","statements":[{"body":{"nodeType":"YulBlock","src":"11574:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"11576:16:61"},"nodeType":"YulFunctionCall","src":"11576:18:61"},"nodeType":"YulExpressionStatement","src":"11576:18:61"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"11546:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"11554:18:61","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"11543:2:61"},"nodeType":"YulFunctionCall","src":"11543:30:61"},"nodeType":"YulIf","src":"11540:56:61"},{"nodeType":"YulAssignment","src":"11606:25:61","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"11618:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"11626:4:61","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"11614:3:61"},"nodeType":"YulFunctionCall","src":"11614:17:61"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"11606:4:61"}]},{"nodeType":"YulAssignment","src":"11668:23:61","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"11680:4:61"},{"kind":"number","nodeType":"YulLiteral","src":"11686:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11676:3:61"},"nodeType":"YulFunctionCall","src":"11676:15:61"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"11668:4:61"}]}]},"name":"array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"11453:6:61","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"11464:4:61","type":""}],"src":"11387:311:61"},{"body":{"nodeType":"YulBlock","src":"11823:608:61","statements":[{"nodeType":"YulAssignment","src":"11833:90:61","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"11915:6:61"}],"functionName":{"name":"array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"11858:56:61"},"nodeType":"YulFunctionCall","src":"11858:64:61"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"11842:15:61"},"nodeType":"YulFunctionCall","src":"11842:81:61"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"11833:5:61"}]},{"nodeType":"YulVariableDeclaration","src":"11932:16:61","value":{"name":"array","nodeType":"YulIdentifier","src":"11943:5:61"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"11936:3:61","type":""}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"11965:5:61"},{"name":"length","nodeType":"YulIdentifier","src":"11972:6:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11958:6:61"},"nodeType":"YulFunctionCall","src":"11958:21:61"},"nodeType":"YulExpressionStatement","src":"11958:21:61"},{"nodeType":"YulAssignment","src":"11988:23:61","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"11999:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"12006:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11995:3:61"},"nodeType":"YulFunctionCall","src":"11995:16:61"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"11988:3:61"}]},{"nodeType":"YulVariableDeclaration","src":"12021:44:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"12039:6:61"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"12051:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"12059:4:61","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"12047:3:61"},"nodeType":"YulFunctionCall","src":"12047:17:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12035:3:61"},"nodeType":"YulFunctionCall","src":"12035:30:61"},"variables":[{"name":"srcEnd","nodeType":"YulTypedName","src":"12025:6:61","type":""}]},{"body":{"nodeType":"YulBlock","src":"12093:103:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nodeType":"YulIdentifier","src":"12107:77:61"},"nodeType":"YulFunctionCall","src":"12107:79:61"},"nodeType":"YulExpressionStatement","src":"12107:79:61"}]},"condition":{"arguments":[{"name":"srcEnd","nodeType":"YulIdentifier","src":"12080:6:61"},{"name":"end","nodeType":"YulIdentifier","src":"12088:3:61"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"12077:2:61"},"nodeType":"YulFunctionCall","src":"12077:15:61"},"nodeType":"YulIf","src":"12074:122:61"},{"body":{"nodeType":"YulBlock","src":"12281:144:61","statements":[{"nodeType":"YulVariableDeclaration","src":"12296:21:61","value":{"name":"src","nodeType":"YulIdentifier","src":"12314:3:61"},"variables":[{"name":"elementPos","nodeType":"YulTypedName","src":"12300:10:61","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"12338:3:61"},{"arguments":[{"name":"elementPos","nodeType":"YulIdentifier","src":"12364:10:61"},{"name":"end","nodeType":"YulIdentifier","src":"12376:3:61"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"12343:20:61"},"nodeType":"YulFunctionCall","src":"12343:37:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12331:6:61"},"nodeType":"YulFunctionCall","src":"12331:50:61"},"nodeType":"YulExpressionStatement","src":"12331:50:61"},{"nodeType":"YulAssignment","src":"12394:21:61","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"12405:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"12410:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12401:3:61"},"nodeType":"YulFunctionCall","src":"12401:14:61"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"12394:3:61"}]}]},"condition":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"12234:3:61"},{"name":"srcEnd","nodeType":"YulIdentifier","src":"12239:6:61"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"12231:2:61"},"nodeType":"YulFunctionCall","src":"12231:15:61"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"12247:25:61","statements":[{"nodeType":"YulAssignment","src":"12249:21:61","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"12260:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"12265:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12256:3:61"},"nodeType":"YulFunctionCall","src":"12256:14:61"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"12249:3:61"}]}]},"pre":{"nodeType":"YulBlock","src":"12209:21:61","statements":[{"nodeType":"YulVariableDeclaration","src":"12211:17:61","value":{"name":"offset","nodeType":"YulIdentifier","src":"12222:6:61"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"12215:3:61","type":""}]}]},"src":"12205:220:61"}]},"name":"abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"11793:6:61","type":""},{"name":"length","nodeType":"YulTypedName","src":"11801:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"11809:3:61","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"11817:5:61","type":""}],"src":"11721:710:61"},{"body":{"nodeType":"YulBlock","src":"12531:293:61","statements":[{"body":{"nodeType":"YulBlock","src":"12580:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"12582:77:61"},"nodeType":"YulFunctionCall","src":"12582:79:61"},"nodeType":"YulExpressionStatement","src":"12582:79:61"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"12559:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"12567:4:61","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12555:3:61"},"nodeType":"YulFunctionCall","src":"12555:17:61"},{"name":"end","nodeType":"YulIdentifier","src":"12574:3:61"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"12551:3:61"},"nodeType":"YulFunctionCall","src":"12551:27:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"12544:6:61"},"nodeType":"YulFunctionCall","src":"12544:35:61"},"nodeType":"YulIf","src":"12541:122:61"},{"nodeType":"YulVariableDeclaration","src":"12672:34:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"12699:6:61"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"12686:12:61"},"nodeType":"YulFunctionCall","src":"12686:20:61"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"12676:6:61","type":""}]},{"nodeType":"YulAssignment","src":"12715:103:61","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"12791:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"12799:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12787:3:61"},"nodeType":"YulFunctionCall","src":"12787:17:61"},{"name":"length","nodeType":"YulIdentifier","src":"12806:6:61"},{"name":"end","nodeType":"YulIdentifier","src":"12814:3:61"}],"functionName":{"name":"abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"12724:62:61"},"nodeType":"YulFunctionCall","src":"12724:94:61"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"12715:5:61"}]}]},"name":"abi_decode_t_array$_t_uint256_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"12509:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"12517:3:61","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"12525:5:61","type":""}],"src":"12454:370:61"},{"body":{"nodeType":"YulBlock","src":"13004:1073:61","statements":[{"body":{"nodeType":"YulBlock","src":"13050:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"13052:77:61"},"nodeType":"YulFunctionCall","src":"13052:79:61"},"nodeType":"YulExpressionStatement","src":"13052:79:61"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"13025:7:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"13034:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"13021:3:61"},"nodeType":"YulFunctionCall","src":"13021:23:61"},{"kind":"number","nodeType":"YulLiteral","src":"13046:2:61","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"13017:3:61"},"nodeType":"YulFunctionCall","src":"13017:32:61"},"nodeType":"YulIf","src":"13014:119:61"},{"nodeType":"YulBlock","src":"13143:302:61","statements":[{"nodeType":"YulVariableDeclaration","src":"13158:45:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13189:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"13200:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13185:3:61"},"nodeType":"YulFunctionCall","src":"13185:17:61"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"13172:12:61"},"nodeType":"YulFunctionCall","src":"13172:31:61"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"13162:6:61","type":""}]},{"body":{"nodeType":"YulBlock","src":"13250:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"13252:77:61"},"nodeType":"YulFunctionCall","src":"13252:79:61"},"nodeType":"YulExpressionStatement","src":"13252:79:61"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"13222:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"13230:18:61","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"13219:2:61"},"nodeType":"YulFunctionCall","src":"13219:30:61"},"nodeType":"YulIf","src":"13216:117:61"},{"nodeType":"YulAssignment","src":"13347:88:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13407:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"13418:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13403:3:61"},"nodeType":"YulFunctionCall","src":"13403:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"13427:7:61"}],"functionName":{"name":"abi_decode_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"13357:45:61"},"nodeType":"YulFunctionCall","src":"13357:78:61"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"13347:6:61"}]}]},{"nodeType":"YulBlock","src":"13455:302:61","statements":[{"nodeType":"YulVariableDeclaration","src":"13470:46:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13501:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"13512:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13497:3:61"},"nodeType":"YulFunctionCall","src":"13497:18:61"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"13484:12:61"},"nodeType":"YulFunctionCall","src":"13484:32:61"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"13474:6:61","type":""}]},{"body":{"nodeType":"YulBlock","src":"13563:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"13565:77:61"},"nodeType":"YulFunctionCall","src":"13565:79:61"},"nodeType":"YulExpressionStatement","src":"13565:79:61"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"13535:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"13543:18:61","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"13532:2:61"},"nodeType":"YulFunctionCall","src":"13532:30:61"},"nodeType":"YulIf","src":"13529:117:61"},{"nodeType":"YulAssignment","src":"13660:87:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13719:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"13730:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13715:3:61"},"nodeType":"YulFunctionCall","src":"13715:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"13739:7:61"}],"functionName":{"name":"abi_decode_t_array$_t_uint96_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"13670:44:61"},"nodeType":"YulFunctionCall","src":"13670:77:61"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"13660:6:61"}]}]},{"nodeType":"YulBlock","src":"13767:303:61","statements":[{"nodeType":"YulVariableDeclaration","src":"13782:46:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"13813:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"13824:2:61","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"13809:3:61"},"nodeType":"YulFunctionCall","src":"13809:18:61"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"13796:12:61"},"nodeType":"YulFunctionCall","src":"13796:32:61"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"13786:6:61","type":""}]},{"body":{"nodeType":"YulBlock","src":"13875:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"13877:77:61"},"nodeType":"YulFunctionCall","src":"13877:79:61"},"nodeType":"YulExpressionStatement","src":"13877:79:61"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"13847:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"13855:18:61","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"13844:2:61"},"nodeType":"YulFunctionCall","src":"13844:30:61"},"nodeType":"YulIf","src":"13841:117:61"},{"nodeType":"YulAssignment","src":"13972:88:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"14032:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"14043:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14028:3:61"},"nodeType":"YulFunctionCall","src":"14028:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"14052:7:61"}],"functionName":{"name":"abi_decode_t_array$_t_uint256_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"13982:45:61"},"nodeType":"YulFunctionCall","src":"13982:78:61"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"13972:6:61"}]}]}]},"name":"abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint96_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"12958:9:61","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"12969:7:61","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"12981:6:61","type":""},{"name":"value1","nodeType":"YulTypedName","src":"12989:6:61","type":""},{"name":"value2","nodeType":"YulTypedName","src":"12997:6:61","type":""}],"src":"12830:1247:61"},{"body":{"nodeType":"YulBlock","src":"14111:152:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14128:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"14131:77:61","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14121:6:61"},"nodeType":"YulFunctionCall","src":"14121:88:61"},"nodeType":"YulExpressionStatement","src":"14121:88:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14225:1:61","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"14228:4:61","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14218:6:61"},"nodeType":"YulFunctionCall","src":"14218:15:61"},"nodeType":"YulExpressionStatement","src":"14218:15:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14249:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"14252:4:61","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"14242:6:61"},"nodeType":"YulFunctionCall","src":"14242:15:61"},"nodeType":"YulExpressionStatement","src":"14242:15:61"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"14083:180:61"},{"body":{"nodeType":"YulBlock","src":"14297:152:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14314:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"14317:77:61","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14307:6:61"},"nodeType":"YulFunctionCall","src":"14307:88:61"},"nodeType":"YulExpressionStatement","src":"14307:88:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14411:1:61","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"14414:4:61","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14404:6:61"},"nodeType":"YulFunctionCall","src":"14404:15:61"},"nodeType":"YulExpressionStatement","src":"14404:15:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14435:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"14438:4:61","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"14428:6:61"},"nodeType":"YulFunctionCall","src":"14428:15:61"},"nodeType":"YulExpressionStatement","src":"14428:15:61"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"14269:180:61"},{"body":{"nodeType":"YulBlock","src":"14498:190:61","statements":[{"nodeType":"YulAssignment","src":"14508:33:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"14535:5:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"14517:17:61"},"nodeType":"YulFunctionCall","src":"14517:24:61"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"14508:5:61"}]},{"body":{"nodeType":"YulBlock","src":"14631:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"14633:16:61"},"nodeType":"YulFunctionCall","src":"14633:18:61"},"nodeType":"YulExpressionStatement","src":"14633:18:61"}]},"condition":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"14556:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"14563:66:61","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"14553:2:61"},"nodeType":"YulFunctionCall","src":"14553:77:61"},"nodeType":"YulIf","src":"14550:103:61"},{"nodeType":"YulAssignment","src":"14662:20:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"14673:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"14680:1:61","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14669:3:61"},"nodeType":"YulFunctionCall","src":"14669:13:61"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"14662:3:61"}]}]},"name":"increment_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"14484:5:61","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"14494:3:61","type":""}],"src":"14455:233:61"},{"body":{"nodeType":"YulBlock","src":"14739:149:61","statements":[{"nodeType":"YulAssignment","src":"14749:25:61","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"14772:1:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"14754:17:61"},"nodeType":"YulFunctionCall","src":"14754:20:61"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"14749:1:61"}]},{"nodeType":"YulAssignment","src":"14783:25:61","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"14806:1:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"14788:17:61"},"nodeType":"YulFunctionCall","src":"14788:20:61"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"14783:1:61"}]},{"nodeType":"YulAssignment","src":"14817:17:61","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"14829:1:61"},{"name":"y","nodeType":"YulIdentifier","src":"14832:1:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"14825:3:61"},"nodeType":"YulFunctionCall","src":"14825:9:61"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"14817:4:61"}]},{"body":{"nodeType":"YulBlock","src":"14859:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"14861:16:61"},"nodeType":"YulFunctionCall","src":"14861:18:61"},"nodeType":"YulExpressionStatement","src":"14861:18:61"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"14850:4:61"},{"name":"x","nodeType":"YulIdentifier","src":"14856:1:61"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"14847:2:61"},"nodeType":"YulFunctionCall","src":"14847:11:61"},"nodeType":"YulIf","src":"14844:37:61"}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"14725:1:61","type":""},{"name":"y","nodeType":"YulTypedName","src":"14728:1:61","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"14734:4:61","type":""}],"src":"14694:194:61"},{"body":{"nodeType":"YulBlock","src":"14938:147:61","statements":[{"nodeType":"YulAssignment","src":"14948:25:61","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"14971:1:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"14953:17:61"},"nodeType":"YulFunctionCall","src":"14953:20:61"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"14948:1:61"}]},{"nodeType":"YulAssignment","src":"14982:25:61","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"15005:1:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"14987:17:61"},"nodeType":"YulFunctionCall","src":"14987:20:61"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"14982:1:61"}]},{"nodeType":"YulAssignment","src":"15016:16:61","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"15027:1:61"},{"name":"y","nodeType":"YulIdentifier","src":"15030:1:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15023:3:61"},"nodeType":"YulFunctionCall","src":"15023:9:61"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"15016:3:61"}]},{"body":{"nodeType":"YulBlock","src":"15056:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"15058:16:61"},"nodeType":"YulFunctionCall","src":"15058:18:61"},"nodeType":"YulExpressionStatement","src":"15058:18:61"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"15048:1:61"},{"name":"sum","nodeType":"YulIdentifier","src":"15051:3:61"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"15045:2:61"},"nodeType":"YulFunctionCall","src":"15045:10:61"},"nodeType":"YulIf","src":"15042:36:61"}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"14925:1:61","type":""},{"name":"y","nodeType":"YulTypedName","src":"14928:1:61","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"14934:3:61","type":""}],"src":"14894:191:61"},{"body":{"nodeType":"YulBlock","src":"15138:228:61","statements":[{"nodeType":"YulAssignment","src":"15148:24:61","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"15170:1:61"}],"functionName":{"name":"cleanup_t_uint96","nodeType":"YulIdentifier","src":"15153:16:61"},"nodeType":"YulFunctionCall","src":"15153:19:61"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"15148:1:61"}]},{"nodeType":"YulAssignment","src":"15181:24:61","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"15203:1:61"}],"functionName":{"name":"cleanup_t_uint96","nodeType":"YulIdentifier","src":"15186:16:61"},"nodeType":"YulFunctionCall","src":"15186:19:61"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"15181:1:61"}]},{"nodeType":"YulVariableDeclaration","src":"15214:28:61","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"15237:1:61"},{"name":"y","nodeType":"YulIdentifier","src":"15240:1:61"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"15233:3:61"},"nodeType":"YulFunctionCall","src":"15233:9:61"},"variables":[{"name":"product_raw","nodeType":"YulTypedName","src":"15218:11:61","type":""}]},{"nodeType":"YulAssignment","src":"15251:40:61","value":{"arguments":[{"name":"product_raw","nodeType":"YulIdentifier","src":"15279:11:61"}],"functionName":{"name":"cleanup_t_uint96","nodeType":"YulIdentifier","src":"15262:16:61"},"nodeType":"YulFunctionCall","src":"15262:29:61"},"variableNames":[{"name":"product","nodeType":"YulIdentifier","src":"15251:7:61"}]},{"body":{"nodeType":"YulBlock","src":"15337:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"15339:16:61"},"nodeType":"YulFunctionCall","src":"15339:18:61"},"nodeType":"YulExpressionStatement","src":"15339:18:61"}]},"condition":{"arguments":[{"arguments":[{"name":"product","nodeType":"YulIdentifier","src":"15314:7:61"},{"name":"product_raw","nodeType":"YulIdentifier","src":"15323:11:61"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"15311:2:61"},"nodeType":"YulFunctionCall","src":"15311:24:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"15304:6:61"},"nodeType":"YulFunctionCall","src":"15304:32:61"},"nodeType":"YulIf","src":"15301:58:61"}]},"name":"checked_mul_t_uint96","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"15121:1:61","type":""},{"name":"y","nodeType":"YulTypedName","src":"15124:1:61","type":""}],"returnVariables":[{"name":"product","nodeType":"YulTypedName","src":"15130:7:61","type":""}],"src":"15091:275:61"},{"body":{"nodeType":"YulBlock","src":"15400:152:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15417:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"15420:77:61","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15410:6:61"},"nodeType":"YulFunctionCall","src":"15410:88:61"},"nodeType":"YulExpressionStatement","src":"15410:88:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15514:1:61","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"15517:4:61","type":"","value":"0x12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"15507:6:61"},"nodeType":"YulFunctionCall","src":"15507:15:61"},"nodeType":"YulExpressionStatement","src":"15507:15:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"15538:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"15541:4:61","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"15531:6:61"},"nodeType":"YulFunctionCall","src":"15531:15:61"},"nodeType":"YulExpressionStatement","src":"15531:15:61"}]},"name":"panic_error_0x12","nodeType":"YulFunctionDefinition","src":"15372:180:61"},{"body":{"nodeType":"YulBlock","src":"15599:141:61","statements":[{"nodeType":"YulAssignment","src":"15609:24:61","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"15631:1:61"}],"functionName":{"name":"cleanup_t_uint96","nodeType":"YulIdentifier","src":"15614:16:61"},"nodeType":"YulFunctionCall","src":"15614:19:61"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"15609:1:61"}]},{"nodeType":"YulAssignment","src":"15642:24:61","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"15664:1:61"}],"functionName":{"name":"cleanup_t_uint96","nodeType":"YulIdentifier","src":"15647:16:61"},"nodeType":"YulFunctionCall","src":"15647:19:61"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"15642:1:61"}]},{"body":{"nodeType":"YulBlock","src":"15688:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x12","nodeType":"YulIdentifier","src":"15690:16:61"},"nodeType":"YulFunctionCall","src":"15690:18:61"},"nodeType":"YulExpressionStatement","src":"15690:18:61"}]},"condition":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"15685:1:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"15678:6:61"},"nodeType":"YulFunctionCall","src":"15678:9:61"},"nodeType":"YulIf","src":"15675:35:61"},{"nodeType":"YulAssignment","src":"15720:14:61","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"15729:1:61"},{"name":"y","nodeType":"YulIdentifier","src":"15732:1:61"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"15725:3:61"},"nodeType":"YulFunctionCall","src":"15725:9:61"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"15720:1:61"}]}]},"name":"checked_div_t_uint96","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"15588:1:61","type":""},{"name":"y","nodeType":"YulTypedName","src":"15591:1:61","type":""}],"returnVariables":[{"name":"r","nodeType":"YulTypedName","src":"15597:1:61","type":""}],"src":"15558:182:61"},{"body":{"nodeType":"YulBlock","src":"15778:28:61","statements":[{"nodeType":"YulAssignment","src":"15788:12:61","value":{"name":"value","nodeType":"YulIdentifier","src":"15795:5:61"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"15788:3:61"}]}]},"name":"identity","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"15764:5:61","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"15774:3:61","type":""}],"src":"15746:60:61"},{"body":{"nodeType":"YulBlock","src":"15872:82:61","statements":[{"nodeType":"YulAssignment","src":"15882:66:61","value":{"arguments":[{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"15940:5:61"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"15922:17:61"},"nodeType":"YulFunctionCall","src":"15922:24:61"}],"functionName":{"name":"identity","nodeType":"YulIdentifier","src":"15913:8:61"},"nodeType":"YulFunctionCall","src":"15913:34:61"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"15895:17:61"},"nodeType":"YulFunctionCall","src":"15895:53:61"},"variableNames":[{"name":"converted","nodeType":"YulIdentifier","src":"15882:9:61"}]}]},"name":"convert_t_uint160_to_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"15852:5:61","type":""}],"returnVariables":[{"name":"converted","nodeType":"YulTypedName","src":"15862:9:61","type":""}],"src":"15812:142:61"},{"body":{"nodeType":"YulBlock","src":"16020:66:61","statements":[{"nodeType":"YulAssignment","src":"16030:50:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"16074:5:61"}],"functionName":{"name":"convert_t_uint160_to_t_uint160","nodeType":"YulIdentifier","src":"16043:30:61"},"nodeType":"YulFunctionCall","src":"16043:37:61"},"variableNames":[{"name":"converted","nodeType":"YulIdentifier","src":"16030:9:61"}]}]},"name":"convert_t_uint160_to_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"16000:5:61","type":""}],"returnVariables":[{"name":"converted","nodeType":"YulTypedName","src":"16010:9:61","type":""}],"src":"15960:126:61"},{"body":{"nodeType":"YulBlock","src":"16172:66:61","statements":[{"nodeType":"YulAssignment","src":"16182:50:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"16226:5:61"}],"functionName":{"name":"convert_t_uint160_to_t_address","nodeType":"YulIdentifier","src":"16195:30:61"},"nodeType":"YulFunctionCall","src":"16195:37:61"},"variableNames":[{"name":"converted","nodeType":"YulIdentifier","src":"16182:9:61"}]}]},"name":"convert_t_contract$_ISuperToken_$7015_to_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"16152:5:61","type":""}],"returnVariables":[{"name":"converted","nodeType":"YulTypedName","src":"16162:9:61","type":""}],"src":"16092:146:61"},{"body":{"nodeType":"YulBlock","src":"16329:86:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16346:3:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"16402:5:61"}],"functionName":{"name":"convert_t_contract$_ISuperToken_$7015_to_t_address","nodeType":"YulIdentifier","src":"16351:50:61"},"nodeType":"YulFunctionCall","src":"16351:57:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16339:6:61"},"nodeType":"YulFunctionCall","src":"16339:70:61"},"nodeType":"YulExpressionStatement","src":"16339:70:61"}]},"name":"abi_encode_t_contract$_ISuperToken_$7015_to_t_address_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"16317:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"16324:3:61","type":""}],"src":"16244:171:61"},{"body":{"nodeType":"YulBlock","src":"16486:53:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16503:3:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"16526:5:61"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"16508:17:61"},"nodeType":"YulFunctionCall","src":"16508:24:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16496:6:61"},"nodeType":"YulFunctionCall","src":"16496:37:61"},"nodeType":"YulExpressionStatement","src":"16496:37:61"}]},"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"16474:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"16481:3:61","type":""}],"src":"16421:118:61"},{"body":{"nodeType":"YulBlock","src":"16719:308:61","statements":[{"nodeType":"YulAssignment","src":"16729:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16741:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"16752:2:61","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16737:3:61"},"nodeType":"YulFunctionCall","src":"16737:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"16729:4:61"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"16829:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16842:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"16853:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16838:3:61"},"nodeType":"YulFunctionCall","src":"16838:17:61"}],"functionName":{"name":"abi_encode_t_contract$_ISuperToken_$7015_to_t_address_fromStack","nodeType":"YulIdentifier","src":"16765:63:61"},"nodeType":"YulFunctionCall","src":"16765:91:61"},"nodeType":"YulExpressionStatement","src":"16765:91:61"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"16910:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"16923:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"16934:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16919:3:61"},"nodeType":"YulFunctionCall","src":"16919:18:61"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"16866:43:61"},"nodeType":"YulFunctionCall","src":"16866:72:61"},"nodeType":"YulExpressionStatement","src":"16866:72:61"},{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"16992:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17005:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"17016:2:61","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17001:3:61"},"nodeType":"YulFunctionCall","src":"17001:18:61"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"16948:43:61"},"nodeType":"YulFunctionCall","src":"16948:72:61"},"nodeType":"YulExpressionStatement","src":"16948:72:61"}]},"name":"abi_encode_tuple_t_contract$_ISuperToken_$7015_t_address_t_address__to_t_address_t_address_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"16675:9:61","type":""},{"name":"value2","nodeType":"YulTypedName","src":"16687:6:61","type":""},{"name":"value1","nodeType":"YulTypedName","src":"16695:6:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"16703:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"16714:4:61","type":""}],"src":"16545:482:61"},{"body":{"nodeType":"YulBlock","src":"17096:80:61","statements":[{"nodeType":"YulAssignment","src":"17106:22:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"17121:6:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"17115:5:61"},"nodeType":"YulFunctionCall","src":"17115:13:61"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"17106:5:61"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"17164:5:61"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"17137:26:61"},"nodeType":"YulFunctionCall","src":"17137:33:61"},"nodeType":"YulExpressionStatement","src":"17137:33:61"}]},"name":"abi_decode_t_uint256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"17074:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"17082:3:61","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"17090:5:61","type":""}],"src":"17033:143:61"},{"body":{"nodeType":"YulBlock","src":"17223:77:61","statements":[{"body":{"nodeType":"YulBlock","src":"17278:16:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"17287:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"17290:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"17280:6:61"},"nodeType":"YulFunctionCall","src":"17280:12:61"},"nodeType":"YulExpressionStatement","src":"17280:12:61"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"17246:5:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"17269:5:61"}],"functionName":{"name":"cleanup_t_int96","nodeType":"YulIdentifier","src":"17253:15:61"},"nodeType":"YulFunctionCall","src":"17253:22:61"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"17243:2:61"},"nodeType":"YulFunctionCall","src":"17243:33:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"17236:6:61"},"nodeType":"YulFunctionCall","src":"17236:41:61"},"nodeType":"YulIf","src":"17233:61:61"}]},"name":"validator_revert_t_int96","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"17216:5:61","type":""}],"src":"17182:118:61"},{"body":{"nodeType":"YulBlock","src":"17367:78:61","statements":[{"nodeType":"YulAssignment","src":"17377:22:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"17392:6:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"17386:5:61"},"nodeType":"YulFunctionCall","src":"17386:13:61"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"17377:5:61"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"17433:5:61"}],"functionName":{"name":"validator_revert_t_int96","nodeType":"YulIdentifier","src":"17408:24:61"},"nodeType":"YulFunctionCall","src":"17408:31:61"},"nodeType":"YulExpressionStatement","src":"17408:31:61"}]},"name":"abi_decode_t_int96_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"17345:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"17353:3:61","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"17361:5:61","type":""}],"src":"17306:139:61"},{"body":{"nodeType":"YulBlock","src":"17577:690:61","statements":[{"body":{"nodeType":"YulBlock","src":"17624:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"17626:77:61"},"nodeType":"YulFunctionCall","src":"17626:79:61"},"nodeType":"YulExpressionStatement","src":"17626:79:61"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"17598:7:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"17607:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"17594:3:61"},"nodeType":"YulFunctionCall","src":"17594:23:61"},{"kind":"number","nodeType":"YulLiteral","src":"17619:3:61","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"17590:3:61"},"nodeType":"YulFunctionCall","src":"17590:33:61"},"nodeType":"YulIf","src":"17587:120:61"},{"nodeType":"YulBlock","src":"17717:128:61","statements":[{"nodeType":"YulVariableDeclaration","src":"17732:15:61","value":{"kind":"number","nodeType":"YulLiteral","src":"17746:1:61","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"17736:6:61","type":""}]},{"nodeType":"YulAssignment","src":"17761:74:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17807:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"17818:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17803:3:61"},"nodeType":"YulFunctionCall","src":"17803:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"17827:7:61"}],"functionName":{"name":"abi_decode_t_uint256_fromMemory","nodeType":"YulIdentifier","src":"17771:31:61"},"nodeType":"YulFunctionCall","src":"17771:64:61"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"17761:6:61"}]}]},{"nodeType":"YulBlock","src":"17855:127:61","statements":[{"nodeType":"YulVariableDeclaration","src":"17870:16:61","value":{"kind":"number","nodeType":"YulLiteral","src":"17884:2:61","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"17874:6:61","type":""}]},{"nodeType":"YulAssignment","src":"17900:72:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"17944:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"17955:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17940:3:61"},"nodeType":"YulFunctionCall","src":"17940:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"17964:7:61"}],"functionName":{"name":"abi_decode_t_int96_fromMemory","nodeType":"YulIdentifier","src":"17910:29:61"},"nodeType":"YulFunctionCall","src":"17910:62:61"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"17900:6:61"}]}]},{"nodeType":"YulBlock","src":"17992:129:61","statements":[{"nodeType":"YulVariableDeclaration","src":"18007:16:61","value":{"kind":"number","nodeType":"YulLiteral","src":"18021:2:61","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"18011:6:61","type":""}]},{"nodeType":"YulAssignment","src":"18037:74:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18083:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"18094:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18079:3:61"},"nodeType":"YulFunctionCall","src":"18079:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"18103:7:61"}],"functionName":{"name":"abi_decode_t_uint256_fromMemory","nodeType":"YulIdentifier","src":"18047:31:61"},"nodeType":"YulFunctionCall","src":"18047:64:61"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"18037:6:61"}]}]},{"nodeType":"YulBlock","src":"18131:129:61","statements":[{"nodeType":"YulVariableDeclaration","src":"18146:16:61","value":{"kind":"number","nodeType":"YulLiteral","src":"18160:2:61","type":"","value":"96"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"18150:6:61","type":""}]},{"nodeType":"YulAssignment","src":"18176:74:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"18222:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"18233:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18218:3:61"},"nodeType":"YulFunctionCall","src":"18218:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"18242:7:61"}],"functionName":{"name":"abi_decode_t_uint256_fromMemory","nodeType":"YulIdentifier","src":"18186:31:61"},"nodeType":"YulFunctionCall","src":"18186:64:61"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"18176:6:61"}]}]}]},"name":"abi_decode_tuple_t_uint256t_int96t_uint256t_uint256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"17523:9:61","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"17534:7:61","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"17546:6:61","type":""},{"name":"value1","nodeType":"YulTypedName","src":"17554:6:61","type":""},{"name":"value2","nodeType":"YulTypedName","src":"17562:6:61","type":""},{"name":"value3","nodeType":"YulTypedName","src":"17570:6:61","type":""}],"src":"17451:816:61"},{"body":{"nodeType":"YulBlock","src":"18331:40:61","statements":[{"nodeType":"YulAssignment","src":"18342:22:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"18358:5:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"18352:5:61"},"nodeType":"YulFunctionCall","src":"18352:12:61"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"18342:6:61"}]}]},"name":"array_length_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"18314:5:61","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"18324:6:61","type":""}],"src":"18273:98:61"},{"body":{"nodeType":"YulBlock","src":"18472:73:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18489:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"18494:6:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18482:6:61"},"nodeType":"YulFunctionCall","src":"18482:19:61"},"nodeType":"YulExpressionStatement","src":"18482:19:61"},{"nodeType":"YulAssignment","src":"18510:29:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18529:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"18534:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18525:3:61"},"nodeType":"YulFunctionCall","src":"18525:14:61"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"18510:11:61"}]}]},"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"18444:3:61","type":""},{"name":"length","nodeType":"YulTypedName","src":"18449:6:61","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"18460:11:61","type":""}],"src":"18377:168:61"},{"body":{"nodeType":"YulBlock","src":"18613:184:61","statements":[{"nodeType":"YulVariableDeclaration","src":"18623:10:61","value":{"kind":"number","nodeType":"YulLiteral","src":"18632:1:61","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"18627:1:61","type":""}]},{"body":{"nodeType":"YulBlock","src":"18692:63:61","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"18717:3:61"},{"name":"i","nodeType":"YulIdentifier","src":"18722:1:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18713:3:61"},"nodeType":"YulFunctionCall","src":"18713:11:61"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"18736:3:61"},{"name":"i","nodeType":"YulIdentifier","src":"18741:1:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18732:3:61"},"nodeType":"YulFunctionCall","src":"18732:11:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"18726:5:61"},"nodeType":"YulFunctionCall","src":"18726:18:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18706:6:61"},"nodeType":"YulFunctionCall","src":"18706:39:61"},"nodeType":"YulExpressionStatement","src":"18706:39:61"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"18653:1:61"},{"name":"length","nodeType":"YulIdentifier","src":"18656:6:61"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"18650:2:61"},"nodeType":"YulFunctionCall","src":"18650:13:61"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"18664:19:61","statements":[{"nodeType":"YulAssignment","src":"18666:15:61","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"18675:1:61"},{"kind":"number","nodeType":"YulLiteral","src":"18678:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18671:3:61"},"nodeType":"YulFunctionCall","src":"18671:10:61"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"18666:1:61"}]}]},"pre":{"nodeType":"YulBlock","src":"18646:3:61","statements":[]},"src":"18642:113:61"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"18775:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"18780:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18771:3:61"},"nodeType":"YulFunctionCall","src":"18771:16:61"},{"kind":"number","nodeType":"YulLiteral","src":"18789:1:61","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18764:6:61"},"nodeType":"YulFunctionCall","src":"18764:27:61"},"nodeType":"YulExpressionStatement","src":"18764:27:61"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"18595:3:61","type":""},{"name":"dst","nodeType":"YulTypedName","src":"18600:3:61","type":""},{"name":"length","nodeType":"YulTypedName","src":"18605:6:61","type":""}],"src":"18551:246:61"},{"body":{"nodeType":"YulBlock","src":"18893:283:61","statements":[{"nodeType":"YulVariableDeclaration","src":"18903:52:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"18949:5:61"}],"functionName":{"name":"array_length_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"18917:31:61"},"nodeType":"YulFunctionCall","src":"18917:38:61"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"18907:6:61","type":""}]},{"nodeType":"YulAssignment","src":"18964:77:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"19029:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"19034:6:61"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"18971:57:61"},"nodeType":"YulFunctionCall","src":"18971:70:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"18964:3:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"19089:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"19096:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19085:3:61"},"nodeType":"YulFunctionCall","src":"19085:16:61"},{"name":"pos","nodeType":"YulIdentifier","src":"19103:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"19108:6:61"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"19050:34:61"},"nodeType":"YulFunctionCall","src":"19050:65:61"},"nodeType":"YulExpressionStatement","src":"19050:65:61"},{"nodeType":"YulAssignment","src":"19124:46:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"19135:3:61"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"19162:6:61"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"19140:21:61"},"nodeType":"YulFunctionCall","src":"19140:29:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19131:3:61"},"nodeType":"YulFunctionCall","src":"19131:39:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"19124:3:61"}]}]},"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"18874:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"18881:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"18889:3:61","type":""}],"src":"18803:373:61"},{"body":{"nodeType":"YulBlock","src":"19402:460:61","statements":[{"nodeType":"YulAssignment","src":"19412:27:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19424:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"19435:3:61","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19420:3:61"},"nodeType":"YulFunctionCall","src":"19420:19:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"19412:4:61"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"19513:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19526:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"19537:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19522:3:61"},"nodeType":"YulFunctionCall","src":"19522:17:61"}],"functionName":{"name":"abi_encode_t_contract$_ISuperToken_$7015_to_t_address_fromStack","nodeType":"YulIdentifier","src":"19449:63:61"},"nodeType":"YulFunctionCall","src":"19449:91:61"},"nodeType":"YulExpressionStatement","src":"19449:91:61"},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"19594:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19607:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"19618:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19603:3:61"},"nodeType":"YulFunctionCall","src":"19603:18:61"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"19550:43:61"},"nodeType":"YulFunctionCall","src":"19550:72:61"},"nodeType":"YulExpressionStatement","src":"19550:72:61"},{"expression":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"19676:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19689:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"19700:2:61","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19685:3:61"},"nodeType":"YulFunctionCall","src":"19685:18:61"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"19632:43:61"},"nodeType":"YulFunctionCall","src":"19632:72:61"},"nodeType":"YulExpressionStatement","src":"19632:72:61"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19725:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"19736:2:61","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19721:3:61"},"nodeType":"YulFunctionCall","src":"19721:18:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"19745:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"19751:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"19741:3:61"},"nodeType":"YulFunctionCall","src":"19741:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19714:6:61"},"nodeType":"YulFunctionCall","src":"19714:48:61"},"nodeType":"YulExpressionStatement","src":"19714:48:61"},{"nodeType":"YulAssignment","src":"19771:84:61","value":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"19841:6:61"},{"name":"tail","nodeType":"YulIdentifier","src":"19850:4:61"}],"functionName":{"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"19779:61:61"},"nodeType":"YulFunctionCall","src":"19779:76:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"19771:4:61"}]}]},"name":"abi_encode_tuple_t_contract$_ISuperToken_$7015_t_address_t_address_t_bytes_memory_ptr__to_t_address_t_address_t_address_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"19350:9:61","type":""},{"name":"value3","nodeType":"YulTypedName","src":"19362:6:61","type":""},{"name":"value2","nodeType":"YulTypedName","src":"19370:6:61","type":""},{"name":"value1","nodeType":"YulTypedName","src":"19378:6:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"19386:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"19397:4:61","type":""}],"src":"19182:680:61"},{"body":{"nodeType":"YulBlock","src":"19961:66:61","statements":[{"nodeType":"YulAssignment","src":"19971:50:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"20015:5:61"}],"functionName":{"name":"convert_t_uint160_to_t_address","nodeType":"YulIdentifier","src":"19984:30:61"},"nodeType":"YulFunctionCall","src":"19984:37:61"},"variableNames":[{"name":"converted","nodeType":"YulIdentifier","src":"19971:9:61"}]}]},"name":"convert_t_contract$_IConstantFlowAgreementV1_$5555_to_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"19941:5:61","type":""}],"returnVariables":[{"name":"converted","nodeType":"YulTypedName","src":"19951:9:61","type":""}],"src":"19868:159:61"},{"body":{"nodeType":"YulBlock","src":"20131:99:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"20148:3:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"20217:5:61"}],"functionName":{"name":"convert_t_contract$_IConstantFlowAgreementV1_$5555_to_t_address","nodeType":"YulIdentifier","src":"20153:63:61"},"nodeType":"YulFunctionCall","src":"20153:70:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20141:6:61"},"nodeType":"YulFunctionCall","src":"20141:83:61"},"nodeType":"YulExpressionStatement","src":"20141:83:61"}]},"name":"abi_encode_t_contract$_IConstantFlowAgreementV1_$5555_to_t_address_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"20119:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"20126:3:61","type":""}],"src":"20033:197:61"},{"body":{"nodeType":"YulBlock","src":"20459:459:61","statements":[{"nodeType":"YulAssignment","src":"20469:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20481:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"20492:2:61","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20477:3:61"},"nodeType":"YulFunctionCall","src":"20477:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"20469:4:61"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"20582:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20595:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"20606:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20591:3:61"},"nodeType":"YulFunctionCall","src":"20591:17:61"}],"functionName":{"name":"abi_encode_t_contract$_IConstantFlowAgreementV1_$5555_to_t_address_fromStack","nodeType":"YulIdentifier","src":"20505:76:61"},"nodeType":"YulFunctionCall","src":"20505:104:61"},"nodeType":"YulExpressionStatement","src":"20505:104:61"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20630:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"20641:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20626:3:61"},"nodeType":"YulFunctionCall","src":"20626:18:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"20650:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"20656:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"20646:3:61"},"nodeType":"YulFunctionCall","src":"20646:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20619:6:61"},"nodeType":"YulFunctionCall","src":"20619:48:61"},"nodeType":"YulExpressionStatement","src":"20619:48:61"},{"nodeType":"YulAssignment","src":"20676:84:61","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"20746:6:61"},{"name":"tail","nodeType":"YulIdentifier","src":"20755:4:61"}],"functionName":{"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"20684:61:61"},"nodeType":"YulFunctionCall","src":"20684:76:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"20676:4:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20781:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"20792:2:61","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20777:3:61"},"nodeType":"YulFunctionCall","src":"20777:18:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"20801:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"20807:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"20797:3:61"},"nodeType":"YulFunctionCall","src":"20797:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20770:6:61"},"nodeType":"YulFunctionCall","src":"20770:48:61"},"nodeType":"YulExpressionStatement","src":"20770:48:61"},{"nodeType":"YulAssignment","src":"20827:84:61","value":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"20897:6:61"},{"name":"tail","nodeType":"YulIdentifier","src":"20906:4:61"}],"functionName":{"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"20835:61:61"},"nodeType":"YulFunctionCall","src":"20835:76:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"20827:4:61"}]}]},"name":"abi_encode_tuple_t_contract$_IConstantFlowAgreementV1_$5555_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"20415:9:61","type":""},{"name":"value2","nodeType":"YulTypedName","src":"20427:6:61","type":""},{"name":"value1","nodeType":"YulTypedName","src":"20435:6:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"20443:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"20454:4:61","type":""}],"src":"20236:682:61"},{"body":{"nodeType":"YulBlock","src":"21013:28:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"21030:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"21033:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"21023:6:61"},"nodeType":"YulFunctionCall","src":"21023:12:61"},"nodeType":"YulExpressionStatement","src":"21023:12:61"}]},"name":"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae","nodeType":"YulFunctionDefinition","src":"20924:117:61"},{"body":{"nodeType":"YulBlock","src":"21113:241:61","statements":[{"body":{"nodeType":"YulBlock","src":"21218:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"21220:16:61"},"nodeType":"YulFunctionCall","src":"21220:18:61"},"nodeType":"YulExpressionStatement","src":"21220:18:61"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"21190:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"21198:18:61","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"21187:2:61"},"nodeType":"YulFunctionCall","src":"21187:30:61"},"nodeType":"YulIf","src":"21184:56:61"},{"nodeType":"YulAssignment","src":"21250:37:61","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"21280:6:61"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"21258:21:61"},"nodeType":"YulFunctionCall","src":"21258:29:61"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"21250:4:61"}]},{"nodeType":"YulAssignment","src":"21324:23:61","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"21336:4:61"},{"kind":"number","nodeType":"YulLiteral","src":"21342:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21332:3:61"},"nodeType":"YulFunctionCall","src":"21332:15:61"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"21324:4:61"}]}]},"name":"array_allocation_size_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"21097:6:61","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"21108:4:61","type":""}],"src":"21047:307:61"},{"body":{"nodeType":"YulBlock","src":"21454:338:61","statements":[{"nodeType":"YulAssignment","src":"21464:74:61","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"21530:6:61"}],"functionName":{"name":"array_allocation_size_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"21489:40:61"},"nodeType":"YulFunctionCall","src":"21489:48:61"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"21473:15:61"},"nodeType":"YulFunctionCall","src":"21473:65:61"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"21464:5:61"}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"21554:5:61"},{"name":"length","nodeType":"YulIdentifier","src":"21561:6:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21547:6:61"},"nodeType":"YulFunctionCall","src":"21547:21:61"},"nodeType":"YulExpressionStatement","src":"21547:21:61"},{"nodeType":"YulVariableDeclaration","src":"21577:27:61","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"21592:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"21599:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21588:3:61"},"nodeType":"YulFunctionCall","src":"21588:16:61"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"21581:3:61","type":""}]},{"body":{"nodeType":"YulBlock","src":"21642:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae","nodeType":"YulIdentifier","src":"21644:77:61"},"nodeType":"YulFunctionCall","src":"21644:79:61"},"nodeType":"YulExpressionStatement","src":"21644:79:61"}]},"condition":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"21623:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"21628:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21619:3:61"},"nodeType":"YulFunctionCall","src":"21619:16:61"},{"name":"end","nodeType":"YulIdentifier","src":"21637:3:61"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"21616:2:61"},"nodeType":"YulFunctionCall","src":"21616:25:61"},"nodeType":"YulIf","src":"21613:112:61"},{"expression":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"21769:3:61"},{"name":"dst","nodeType":"YulIdentifier","src":"21774:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"21779:6:61"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"21734:34:61"},"nodeType":"YulFunctionCall","src":"21734:52:61"},"nodeType":"YulExpressionStatement","src":"21734:52:61"}]},"name":"abi_decode_available_length_t_bytes_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"21427:3:61","type":""},{"name":"length","nodeType":"YulTypedName","src":"21432:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"21440:3:61","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"21448:5:61","type":""}],"src":"21360:432:61"},{"body":{"nodeType":"YulBlock","src":"21883:281:61","statements":[{"body":{"nodeType":"YulBlock","src":"21932:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"21934:77:61"},"nodeType":"YulFunctionCall","src":"21934:79:61"},"nodeType":"YulExpressionStatement","src":"21934:79:61"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"21911:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"21919:4:61","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21907:3:61"},"nodeType":"YulFunctionCall","src":"21907:17:61"},{"name":"end","nodeType":"YulIdentifier","src":"21926:3:61"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"21903:3:61"},"nodeType":"YulFunctionCall","src":"21903:27:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"21896:6:61"},"nodeType":"YulFunctionCall","src":"21896:35:61"},"nodeType":"YulIf","src":"21893:122:61"},{"nodeType":"YulVariableDeclaration","src":"22024:27:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"22044:6:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"22038:5:61"},"nodeType":"YulFunctionCall","src":"22038:13:61"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"22028:6:61","type":""}]},{"nodeType":"YulAssignment","src":"22060:98:61","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"22131:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"22139:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22127:3:61"},"nodeType":"YulFunctionCall","src":"22127:17:61"},{"name":"length","nodeType":"YulIdentifier","src":"22146:6:61"},{"name":"end","nodeType":"YulIdentifier","src":"22154:3:61"}],"functionName":{"name":"abi_decode_available_length_t_bytes_memory_ptr_fromMemory","nodeType":"YulIdentifier","src":"22069:57:61"},"nodeType":"YulFunctionCall","src":"22069:89:61"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"22060:5:61"}]}]},"name":"abi_decode_t_bytes_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"21861:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"21869:3:61","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"21877:5:61","type":""}],"src":"21811:353:61"},{"body":{"nodeType":"YulBlock","src":"22256:436:61","statements":[{"body":{"nodeType":"YulBlock","src":"22302:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"22304:77:61"},"nodeType":"YulFunctionCall","src":"22304:79:61"},"nodeType":"YulExpressionStatement","src":"22304:79:61"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"22277:7:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"22286:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"22273:3:61"},"nodeType":"YulFunctionCall","src":"22273:23:61"},{"kind":"number","nodeType":"YulLiteral","src":"22298:2:61","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"22269:3:61"},"nodeType":"YulFunctionCall","src":"22269:32:61"},"nodeType":"YulIf","src":"22266:119:61"},{"nodeType":"YulBlock","src":"22395:290:61","statements":[{"nodeType":"YulVariableDeclaration","src":"22410:38:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22434:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"22445:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22430:3:61"},"nodeType":"YulFunctionCall","src":"22430:17:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"22424:5:61"},"nodeType":"YulFunctionCall","src":"22424:24:61"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"22414:6:61","type":""}]},{"body":{"nodeType":"YulBlock","src":"22495:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"22497:77:61"},"nodeType":"YulFunctionCall","src":"22497:79:61"},"nodeType":"YulExpressionStatement","src":"22497:79:61"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"22467:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"22475:18:61","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"22464:2:61"},"nodeType":"YulFunctionCall","src":"22464:30:61"},"nodeType":"YulIf","src":"22461:117:61"},{"nodeType":"YulAssignment","src":"22592:83:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22647:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"22658:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22643:3:61"},"nodeType":"YulFunctionCall","src":"22643:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"22667:7:61"}],"functionName":{"name":"abi_decode_t_bytes_memory_ptr_fromMemory","nodeType":"YulIdentifier","src":"22602:40:61"},"nodeType":"YulFunctionCall","src":"22602:73:61"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"22592:6:61"}]}]}]},"name":"abi_decode_tuple_t_bytes_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"22226:9:61","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"22237:7:61","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"22249:6:61","type":""}],"src":"22170:522:61"},{"body":{"nodeType":"YulBlock","src":"22761:80:61","statements":[{"nodeType":"YulAssignment","src":"22771:22:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"22786:6:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"22780:5:61"},"nodeType":"YulFunctionCall","src":"22780:13:61"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"22771:5:61"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"22829:5:61"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"22802:26:61"},"nodeType":"YulFunctionCall","src":"22802:33:61"},"nodeType":"YulExpressionStatement","src":"22802:33:61"}]},"name":"abi_decode_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"22739:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"22747:3:61","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"22755:5:61","type":""}],"src":"22698:143:61"},{"body":{"nodeType":"YulBlock","src":"22924:274:61","statements":[{"body":{"nodeType":"YulBlock","src":"22970:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"22972:77:61"},"nodeType":"YulFunctionCall","src":"22972:79:61"},"nodeType":"YulExpressionStatement","src":"22972:79:61"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"22945:7:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"22954:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"22941:3:61"},"nodeType":"YulFunctionCall","src":"22941:23:61"},{"kind":"number","nodeType":"YulLiteral","src":"22966:2:61","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"22937:3:61"},"nodeType":"YulFunctionCall","src":"22937:32:61"},"nodeType":"YulIf","src":"22934:119:61"},{"nodeType":"YulBlock","src":"23063:128:61","statements":[{"nodeType":"YulVariableDeclaration","src":"23078:15:61","value":{"kind":"number","nodeType":"YulLiteral","src":"23092:1:61","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"23082:6:61","type":""}]},{"nodeType":"YulAssignment","src":"23107:74:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23153:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"23164:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23149:3:61"},"nodeType":"YulFunctionCall","src":"23149:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"23173:7:61"}],"functionName":{"name":"abi_decode_t_address_fromMemory","nodeType":"YulIdentifier","src":"23117:31:61"},"nodeType":"YulFunctionCall","src":"23117:64:61"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"23107:6:61"}]}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"22894:9:61","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"22905:7:61","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"22917:6:61","type":""}],"src":"22847:351:61"},{"body":{"nodeType":"YulBlock","src":"23333:32:61","statements":[{"nodeType":"YulAssignment","src":"23343:16:61","value":{"name":"value","nodeType":"YulIdentifier","src":"23354:5:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"23343:7:61"}]}]},"name":"cleanup_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"23315:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"23325:7:61","type":""}],"src":"23204:161:61"},{"body":{"nodeType":"YulBlock","src":"23416:32:61","statements":[{"nodeType":"YulAssignment","src":"23426:16:61","value":{"name":"value","nodeType":"YulIdentifier","src":"23437:5:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"23426:7:61"}]}]},"name":"cleanup_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"23398:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"23408:7:61","type":""}],"src":"23371:77:61"},{"body":{"nodeType":"YulBlock","src":"23495:51:61","statements":[{"nodeType":"YulAssignment","src":"23505:34:61","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"23530:1:61","type":"","value":"0"},{"name":"value","nodeType":"YulIdentifier","src":"23533:5:61"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"23526:3:61"},"nodeType":"YulFunctionCall","src":"23526:13:61"},"variableNames":[{"name":"newValue","nodeType":"YulIdentifier","src":"23505:8:61"}]}]},"name":"shift_left_0","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"23476:5:61","type":""}],"returnVariables":[{"name":"newValue","nodeType":"YulTypedName","src":"23486:8:61","type":""}],"src":"23454:92:61"},{"body":{"nodeType":"YulBlock","src":"23696:170:61","statements":[{"nodeType":"YulAssignment","src":"23706:154:61","value":{"arguments":[{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"23852:5:61"}],"functionName":{"name":"cleanup_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1","nodeType":"YulIdentifier","src":"23750:101:61"},"nodeType":"YulFunctionCall","src":"23750:108:61"}],"functionName":{"name":"shift_left_0","nodeType":"YulIdentifier","src":"23737:12:61"},"nodeType":"YulFunctionCall","src":"23737:122:61"}],"functionName":{"name":"cleanup_t_bytes32","nodeType":"YulIdentifier","src":"23719:17:61"},"nodeType":"YulFunctionCall","src":"23719:141:61"},"variableNames":[{"name":"converted","nodeType":"YulIdentifier","src":"23706:9:61"}]}]},"name":"convert_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1_to_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"23676:5:61","type":""}],"returnVariables":[{"name":"converted","nodeType":"YulTypedName","src":"23686:9:61","type":""}],"src":"23552:314:61"},{"body":{"nodeType":"YulBlock","src":"24021:150:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"24038:3:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"24158:5:61"}],"functionName":{"name":"convert_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1_to_t_bytes32","nodeType":"YulIdentifier","src":"24043:114:61"},"nodeType":"YulFunctionCall","src":"24043:121:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"24031:6:61"},"nodeType":"YulFunctionCall","src":"24031:134:61"},"nodeType":"YulExpressionStatement","src":"24031:134:61"}]},"name":"abi_encode_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1_to_t_bytes32_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"24009:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"24016:3:61","type":""}],"src":"23872:299:61"},{"body":{"nodeType":"YulBlock","src":"24359:208:61","statements":[{"nodeType":"YulAssignment","src":"24369:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24381:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"24392:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24377:3:61"},"nodeType":"YulFunctionCall","src":"24377:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"24369:4:61"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"24533:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24546:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"24557:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24542:3:61"},"nodeType":"YulFunctionCall","src":"24542:17:61"}],"functionName":{"name":"abi_encode_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1_to_t_bytes32_fromStack","nodeType":"YulIdentifier","src":"24405:127:61"},"nodeType":"YulFunctionCall","src":"24405:155:61"},"nodeType":"YulExpressionStatement","src":"24405:155:61"}]},"name":"abi_encode_tuple_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1__to_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"24331:9:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"24343:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"24354:4:61","type":""}],"src":"24177:390:61"},{"body":{"nodeType":"YulBlock","src":"24642:51:61","statements":[{"nodeType":"YulAssignment","src":"24652:35:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"24681:5:61"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"24663:17:61"},"nodeType":"YulFunctionCall","src":"24663:24:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"24652:7:61"}]}]},"name":"cleanup_t_contract$_ISuperAgreement_$6463","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"24624:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"24634:7:61","type":""}],"src":"24573:120:61"},{"body":{"nodeType":"YulBlock","src":"24766:103:61","statements":[{"body":{"nodeType":"YulBlock","src":"24847:16:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"24856:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"24859:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"24849:6:61"},"nodeType":"YulFunctionCall","src":"24849:12:61"},"nodeType":"YulExpressionStatement","src":"24849:12:61"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"24789:5:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"24838:5:61"}],"functionName":{"name":"cleanup_t_contract$_ISuperAgreement_$6463","nodeType":"YulIdentifier","src":"24796:41:61"},"nodeType":"YulFunctionCall","src":"24796:48:61"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"24786:2:61"},"nodeType":"YulFunctionCall","src":"24786:59:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"24779:6:61"},"nodeType":"YulFunctionCall","src":"24779:67:61"},"nodeType":"YulIf","src":"24776:87:61"}]},"name":"validator_revert_t_contract$_ISuperAgreement_$6463","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"24759:5:61","type":""}],"src":"24699:170:61"},{"body":{"nodeType":"YulBlock","src":"24962:104:61","statements":[{"nodeType":"YulAssignment","src":"24972:22:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"24987:6:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"24981:5:61"},"nodeType":"YulFunctionCall","src":"24981:13:61"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"24972:5:61"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"25054:5:61"}],"functionName":{"name":"validator_revert_t_contract$_ISuperAgreement_$6463","nodeType":"YulIdentifier","src":"25003:50:61"},"nodeType":"YulFunctionCall","src":"25003:57:61"},"nodeType":"YulExpressionStatement","src":"25003:57:61"}]},"name":"abi_decode_t_contract$_ISuperAgreement_$6463_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"24940:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"24948:3:61","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"24956:5:61","type":""}],"src":"24875:191:61"},{"body":{"nodeType":"YulBlock","src":"25173:298:61","statements":[{"body":{"nodeType":"YulBlock","src":"25219:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"25221:77:61"},"nodeType":"YulFunctionCall","src":"25221:79:61"},"nodeType":"YulExpressionStatement","src":"25221:79:61"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"25194:7:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"25203:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"25190:3:61"},"nodeType":"YulFunctionCall","src":"25190:23:61"},{"kind":"number","nodeType":"YulLiteral","src":"25215:2:61","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"25186:3:61"},"nodeType":"YulFunctionCall","src":"25186:32:61"},"nodeType":"YulIf","src":"25183:119:61"},{"nodeType":"YulBlock","src":"25312:152:61","statements":[{"nodeType":"YulVariableDeclaration","src":"25327:15:61","value":{"kind":"number","nodeType":"YulLiteral","src":"25341:1:61","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"25331:6:61","type":""}]},{"nodeType":"YulAssignment","src":"25356:98:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"25426:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"25437:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"25422:3:61"},"nodeType":"YulFunctionCall","src":"25422:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"25446:7:61"}],"functionName":{"name":"abi_decode_t_contract$_ISuperAgreement_$6463_fromMemory","nodeType":"YulIdentifier","src":"25366:55:61"},"nodeType":"YulFunctionCall","src":"25366:88:61"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"25356:6:61"}]}]}]},"name":"abi_decode_tuple_t_contract$_ISuperAgreement_$6463_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"25143:9:61","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"25154:7:61","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"25166:6:61","type":""}],"src":"25072:399:61"},{"body":{"nodeType":"YulBlock","src":"25505:152:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"25522:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"25525:77:61","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"25515:6:61"},"nodeType":"YulFunctionCall","src":"25515:88:61"},"nodeType":"YulExpressionStatement","src":"25515:88:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"25619:1:61","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"25622:4:61","type":"","value":"0x01"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"25612:6:61"},"nodeType":"YulFunctionCall","src":"25612:15:61"},"nodeType":"YulExpressionStatement","src":"25612:15:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"25643:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"25646:4:61","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"25636:6:61"},"nodeType":"YulFunctionCall","src":"25636:15:61"},"nodeType":"YulExpressionStatement","src":"25636:15:61"}]},"name":"panic_error_0x01","nodeType":"YulFunctionDefinition","src":"25477:180:61"}]},"contents":"{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function array_length_t_array$_t_address_$dyn_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_array$_t_address_$dyn_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function array_dataslot_t_array$_t_address_$dyn_memory_ptr(ptr) -> data {\n data := ptr\n\n data := add(ptr, 0x20)\n\n }\n\n function abi_encode_t_address_to_t_address(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encodeUpdatedPos_t_address_to_t_address(value0, pos) -> updatedPos {\n abi_encode_t_address_to_t_address(value0, pos)\n updatedPos := add(pos, 0x20)\n }\n\n function array_nextElement_t_array$_t_address_$dyn_memory_ptr(ptr) -> next {\n next := add(ptr, 0x20)\n }\n\n // address[] -> address[]\n function abi_encode_t_array$_t_address_$dyn_memory_ptr_to_t_array$_t_address_$dyn_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_array$_t_address_$dyn_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_array$_t_address_$dyn_memory_ptr_fromStack(pos, length)\n let baseRef := array_dataslot_t_array$_t_address_$dyn_memory_ptr(value)\n let srcPtr := baseRef\n for { let i := 0 } lt(i, length) { i := add(i, 1) }\n {\n let elementValue0 := mload(srcPtr)\n pos := abi_encodeUpdatedPos_t_address_to_t_address(elementValue0, pos)\n srcPtr := array_nextElement_t_array$_t_address_$dyn_memory_ptr(srcPtr)\n }\n end := pos\n }\n\n function abi_encode_tuple_t_uint256_t_array$_t_address_$dyn_memory_ptr__to_t_uint256_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n mstore(add(headStart, 32), sub(tail, headStart))\n tail := abi_encode_t_array$_t_address_$dyn_memory_ptr_to_t_array$_t_address_$dyn_memory_ptr_fromStack(value1, tail)\n\n }\n\n function cleanup_t_uint96(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffff)\n }\n\n function validator_revert_t_uint96(value) {\n if iszero(eq(value, cleanup_t_uint96(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint96(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint96(value)\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_addresst_uint96t_uint256(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint96(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_int96(value) -> cleaned {\n cleaned := signextend(11, value)\n }\n\n function abi_encode_t_int96_to_t_int96_fromStack(value, pos) {\n mstore(pos, cleanup_t_int96(value))\n }\n\n function abi_encode_t_uint96_to_t_uint96_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint96(value))\n }\n\n function abi_encode_tuple_t_int96_t_uint96_t_uint256_t_uint256__to_t_int96_t_uint96_t_uint256_t_uint256__fromStack_reversed(headStart , value3, value2, value1, value0) -> tail {\n tail := add(headStart, 128)\n\n abi_encode_t_int96_to_t_int96_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint96_to_t_uint96_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value3, add(headStart, 96))\n\n }\n\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n\n function allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function array_allocation_size_t_array$_t_address_$dyn_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := mul(length, 0x20)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() {\n revert(0, 0)\n }\n\n // address[]\n function abi_decode_available_length_t_array$_t_address_$dyn_memory_ptr(offset, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_array$_t_address_$dyn_memory_ptr(length))\n let dst := array\n\n mstore(array, length)\n dst := add(array, 0x20)\n\n let srcEnd := add(offset, mul(length, 0x20))\n if gt(srcEnd, end) {\n revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef()\n }\n for { let src := offset } lt(src, srcEnd) { src := add(src, 0x20) }\n {\n\n let elementPos := src\n\n mstore(dst, abi_decode_t_address(elementPos, end))\n dst := add(dst, 0x20)\n }\n }\n\n // address[]\n function abi_decode_t_array$_t_address_$dyn_memory_ptr(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := calldataload(offset)\n array := abi_decode_available_length_t_array$_t_address_$dyn_memory_ptr(add(offset, 0x20), length, end)\n }\n\n function abi_decode_tuple_t_array$_t_address_$dyn_memory_ptr(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := calldataload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value0 := abi_decode_t_array$_t_address_$dyn_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function array_allocation_size_t_array$_t_uint96_$dyn_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := mul(length, 0x20)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n // uint96[]\n function abi_decode_available_length_t_array$_t_uint96_$dyn_memory_ptr(offset, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_array$_t_uint96_$dyn_memory_ptr(length))\n let dst := array\n\n mstore(array, length)\n dst := add(array, 0x20)\n\n let srcEnd := add(offset, mul(length, 0x20))\n if gt(srcEnd, end) {\n revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef()\n }\n for { let src := offset } lt(src, srcEnd) { src := add(src, 0x20) }\n {\n\n let elementPos := src\n\n mstore(dst, abi_decode_t_uint96(elementPos, end))\n dst := add(dst, 0x20)\n }\n }\n\n // uint96[]\n function abi_decode_t_array$_t_uint96_$dyn_memory_ptr(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := calldataload(offset)\n array := abi_decode_available_length_t_array$_t_uint96_$dyn_memory_ptr(add(offset, 0x20), length, end)\n }\n\n function array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := mul(length, 0x20)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n // uint256[]\n function abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr(offset, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_array$_t_uint256_$dyn_memory_ptr(length))\n let dst := array\n\n mstore(array, length)\n dst := add(array, 0x20)\n\n let srcEnd := add(offset, mul(length, 0x20))\n if gt(srcEnd, end) {\n revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef()\n }\n for { let src := offset } lt(src, srcEnd) { src := add(src, 0x20) }\n {\n\n let elementPos := src\n\n mstore(dst, abi_decode_t_uint256(elementPos, end))\n dst := add(dst, 0x20)\n }\n }\n\n // uint256[]\n function abi_decode_t_array$_t_uint256_$dyn_memory_ptr(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := calldataload(offset)\n array := abi_decode_available_length_t_array$_t_uint256_$dyn_memory_ptr(add(offset, 0x20), length, end)\n }\n\n function abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint96_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := calldataload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value0 := abi_decode_t_array$_t_address_$dyn_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 32))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value1 := abi_decode_t_array$_t_uint96_$dyn_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value2 := abi_decode_t_array$_t_uint256_$dyn_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x32() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function increment_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n ret := add(value, 1)\n }\n\n function checked_sub_t_uint256(x, y) -> diff {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n diff := sub(x, y)\n\n if gt(diff, x) { panic_error_0x11() }\n\n }\n\n function checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n sum := add(x, y)\n\n if gt(x, sum) { panic_error_0x11() }\n\n }\n\n function checked_mul_t_uint96(x, y) -> product {\n x := cleanup_t_uint96(x)\n y := cleanup_t_uint96(y)\n let product_raw := mul(x, y)\n product := cleanup_t_uint96(product_raw)\n\n if iszero(eq(product, product_raw)) { panic_error_0x11() }\n\n }\n\n function panic_error_0x12() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n\n function checked_div_t_uint96(x, y) -> r {\n x := cleanup_t_uint96(x)\n y := cleanup_t_uint96(y)\n if iszero(y) { panic_error_0x12() }\n\n r := div(x, y)\n }\n\n function identity(value) -> ret {\n ret := value\n }\n\n function convert_t_uint160_to_t_uint160(value) -> converted {\n converted := cleanup_t_uint160(identity(cleanup_t_uint160(value)))\n }\n\n function convert_t_uint160_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_uint160(value)\n }\n\n function convert_t_contract$_ISuperToken_$7015_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_address(value)\n }\n\n function abi_encode_t_contract$_ISuperToken_$7015_to_t_address_fromStack(value, pos) {\n mstore(pos, convert_t_contract$_ISuperToken_$7015_to_t_address(value))\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_contract$_ISuperToken_$7015_t_address_t_address__to_t_address_t_address_t_address__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_contract$_ISuperToken_$7015_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_address_to_t_address_fromStack(value2, add(headStart, 64))\n\n }\n\n function abi_decode_t_uint256_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_uint256(value)\n }\n\n function validator_revert_t_int96(value) {\n if iszero(eq(value, cleanup_t_int96(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_int96_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_int96(value)\n }\n\n function abi_decode_tuple_t_uint256t_int96t_uint256t_uint256_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3 {\n if slt(sub(dataEnd, headStart), 128) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_int96_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_uint256_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function array_length_t_bytes_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function copy_memory_to_memory_with_cleanup(src, dst, length) {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n\n function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_bytes_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_contract$_ISuperToken_$7015_t_address_t_address_t_bytes_memory_ptr__to_t_address_t_address_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart , value3, value2, value1, value0) -> tail {\n tail := add(headStart, 128)\n\n abi_encode_t_contract$_ISuperToken_$7015_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_address_to_t_address_fromStack(value2, add(headStart, 64))\n\n mstore(add(headStart, 96), sub(tail, headStart))\n tail := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value3, tail)\n\n }\n\n function convert_t_contract$_IConstantFlowAgreementV1_$5555_to_t_address(value) -> converted {\n converted := convert_t_uint160_to_t_address(value)\n }\n\n function abi_encode_t_contract$_IConstantFlowAgreementV1_$5555_to_t_address_fromStack(value, pos) {\n mstore(pos, convert_t_contract$_IConstantFlowAgreementV1_$5555_to_t_address(value))\n }\n\n function abi_encode_tuple_t_contract$_IConstantFlowAgreementV1_$5555_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr_t_bytes_memory_ptr__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n abi_encode_t_contract$_IConstantFlowAgreementV1_$5555_to_t_address_fromStack(value0, add(headStart, 0))\n\n mstore(add(headStart, 32), sub(tail, headStart))\n tail := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value1, tail)\n\n mstore(add(headStart, 64), sub(tail, headStart))\n tail := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value2, tail)\n\n }\n\n function revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() {\n revert(0, 0)\n }\n\n function array_allocation_size_t_bytes_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := round_up_to_mul_of_32(length)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function abi_decode_available_length_t_bytes_memory_ptr_fromMemory(src, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_bytes_memory_ptr(length))\n mstore(array, length)\n let dst := add(array, 0x20)\n if gt(add(src, length), end) { revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() }\n copy_memory_to_memory_with_cleanup(src, dst, length)\n }\n\n // bytes\n function abi_decode_t_bytes_memory_ptr_fromMemory(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := mload(offset)\n array := abi_decode_available_length_t_bytes_memory_ptr_fromMemory(add(offset, 0x20), length, end)\n }\n\n function abi_decode_tuple_t_bytes_memory_ptr_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := mload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value0 := abi_decode_t_bytes_memory_ptr_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_t_address_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1(value) -> cleaned {\n cleaned := value\n }\n\n function cleanup_t_bytes32(value) -> cleaned {\n cleaned := value\n }\n\n function shift_left_0(value) -> newValue {\n newValue :=\n\n shl(0, value)\n\n }\n\n function convert_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1_to_t_bytes32(value) -> converted {\n converted := cleanup_t_bytes32(shift_left_0(cleanup_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1(value)))\n }\n\n function abi_encode_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1_to_t_bytes32_fromStack(value, pos) {\n mstore(pos, convert_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1_to_t_bytes32(value))\n }\n\n function abi_encode_tuple_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1__to_t_bytes32__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_rational_76499707326132195153838043397128792687001347182241100087807248915608855900115_by_1_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n }\n\n function cleanup_t_contract$_ISuperAgreement_$6463(value) -> cleaned {\n cleaned := cleanup_t_address(value)\n }\n\n function validator_revert_t_contract$_ISuperAgreement_$6463(value) {\n if iszero(eq(value, cleanup_t_contract$_ISuperAgreement_$6463(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_contract$_ISuperAgreement_$6463_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_contract$_ISuperAgreement_$6463(value)\n }\n\n function abi_decode_tuple_t_contract$_ISuperAgreement_$6463_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_ISuperAgreement_$6463_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x01() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x01)\n revert(0, 0x24)\n }\n\n}\n","id":61,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061007d5760003560e01c806392c2226e1161005b57806392c2226e146101025780639afffbf914610132578063b233bd051461014e578063f437a7a51461016a5761007d565b806353732469146100825780637fe70a27146100b35780638ff3849b146100cf575b600080fd5b61009c60048036038101906100979190611dc7565b610186565b6040516100aa929190611ecb565b60405180910390f35b6100cd60048036038101906100c89190611f6b565b61019c565b005b6100e960048036038101906100e49190611fbe565b6102b0565b6040516100f9949392919061203c565b60405180910390f35b61011c60048036038101906101179190612081565b6102d2565b60405161012991906120c1565b60405180910390f35b61014c60048036038101906101479190612235565b6102e6565b005b61016860048036038101906101639190611dc7565b61038f565b005b610184600480360381019061017f9190612404565b6103fe565b005b6000606061019383610598565b91509150915091565b6101a5836106c4565b6101b0838383610706565b60006101ba610ad5565b9050428160020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055508060020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b6000806000806102c1878787610b02565b935093509350935093509350935093565b60006102de8383610da6565b905092915050565b60005b815181101561032857610315828281518110610308576103076124ab565b5b6020026020010151610e36565b808061032090612509565b9150506102e9565b50610331610ad5565b60020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008082016000905560018201600061038a9190611c4c565b505050565b61039881610e36565b6103a0610ad5565b60020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000808201600090556001820160006103f99190611c4c565b505050565b8151835114158061041157508051835114155b15610448576040517fed882f7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b83518110156104e35761047784828151811061046a576104696124ab565b5b60200260200101516106c4565b6104d084828151811061048d5761048c6124ab565b5b60200260200101518483815181106104a8576104a76124ab565b5b60200260200101518484815181106104c3576104c26124ab565b5b6020026020010151610706565b80806104db90612509565b91505061044b565b5060006104ee610ad5565b9050428160020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550838160020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001019080519060200190610591929190611c6d565b5050505050565b600060606105a4610ad5565b60020160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546105f0610ad5565b60020160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101808054806020026020016040519081016040528092919081815260200182805480156106b457602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161066a575b5050505050905091509150915091565b6106cd816110fa565b610703576040517f334ae3e600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6000610710610ad5565b9050600061071e3386610da6565b90506000811180156107ce575060008260010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001846107ba9190612551565b815260200190815260200160002060020154145b15610805576040517f9b90a9c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610812338686611159565b9050808360010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060000160006101000a8154816bffffffffffffffffffffffff0219169083600b0b6bffffffffffffffffffffffff160217905550848360010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000848152602001908152602001600020600001600c6101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550428360010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000848152602001908152602001600020600101819055506001610a3a610ad5565b60000160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ac69190612585565b92505081905550505050505050565b6000807f9cd9afe22fea86221d6e8117226b65bb0e2af8c4f5b8abf255fb0afcad4a3a9c90508091505090565b600080600080610b10610ad5565b60010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600086815260200190815260200160002060000160009054906101000a9004600b0b610bb7610ad5565b60010160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878152602001908152602001600020600001600c9054906101000a90046bffffffffffffffffffffffff16610c69610ad5565b60010160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088815260200190815260200160002060010154610d03610ad5565b60010160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600089815260200190815260200160002060020154935093509350935093509350935093565b6000610db0610ad5565b60000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000610e423383611287565b90506000610e4e610ad5565b60010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206001015403610f17576040517f3c2779e500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610f21610ad5565b60010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206002015414610fea576040517fe7a7ee3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000829050600061101c30338473ffffffffffffffffffffffffffffffffffffffff166113389092919063ffffffff16565b9050600081600b0b146110565761105430338473ffffffffffffffffffffffffffffffffffffffff166113d89092919063ffffffff16565b505b4261105f610ad5565b60010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008581526020019081526020016000206002018190555050505050565b600061110461158b565b60090160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080600061116661158b565b60040160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900461ffff16905060008161ffff1611156111cc578091506111e7565b6111d46115b8565b156111e6576111e385856115d8565b91505b5b60008261ffff16036111fd578492505050611280565b61271061ffff168261ffff168661121491906125b9565b6bffffffffffffffffffffffff16101561125a576040517ffe267e4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61271061ffff168261ffff168661127191906125b9565b61127b9190612625565b925050505b9392505050565b600080611292610ad5565b60000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811461132c576001816113279190612551565b61132f565b60005b91505092915050565b60008061134485611676565b9150508073ffffffffffffffffffffffffffffffffffffffff1663e6a1e8888686866040518463ffffffff1660e01b8152600401611384939291906126c4565b608060405180830381865afa1580156113a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c5919061273c565b9091925090505080925050509392505050565b60008060006113e6866118b7565b915091508173ffffffffffffffffffffffffffffffffffffffff166339255d5b828373ffffffffffffffffffffffffffffffffffffffff1663b4b333c68a8a8a600067ffffffffffffffff811115611441576114406120f2565b5b6040519080825280601f01601f1916602001820160405280156114735781602001600182028036833780820191505090505b506040516024016114879493929190612822565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050600067ffffffffffffffff8111156114e4576114e36120f2565b5b6040519080825280601f01601f1916602001820160405280156115165781602001600182028036833780820191505090505b506040518463ffffffff1660e01b81526004016115359392919061288f565b6000604051808303816000875af1158015611554573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061157d919061297a565b506001925050509392505050565b6000807f2f7ed27098ecefe70183ee38ae4542dee65215b0786f6870871034402cfe2cc990508091505090565b60006115c261158b565b60050160009054906101000a900460ff16905090565b6000806000806115e785611b3e565b925092509250816bffffffffffffffffffffffff16866bffffffffffffffffffffffff1610806116335750806bffffffffffffffffffffffff16866bffffffffffffffffffffffff1610155b1561166a576040517ffe267e4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82935050505092915050565b6000807f65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea8375491507fb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a549050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361183857600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361179b578273ffffffffffffffffffffffffffffffffffffffff166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015611774573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061179891906129d8565b91505b8173ffffffffffffffffffffffffffffffffffffffff1663b6d200de7fa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd36040518263ffffffff1660e01b81526004016117f49190612a57565b602060405180830381865afa158015611811573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118359190612ab0565b90505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361187557611874612add565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036118b2576118b1612add565b5b915091565b6000807f65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea8375491507fb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a549050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611abf57600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119dc578273ffffffffffffffffffffffffffffffffffffffff166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d991906129d8565b91505b8173ffffffffffffffffffffffffffffffffffffffff1663b6d200de7fa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd36040518263ffffffff1660e01b8152600401611a359190612a57565b602060405180830381865afa158015611a52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a769190612ab0565b9050817f65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea83755807fb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a555b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611afc57611afb612add565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b3957611b38612add565b5b915091565b600080600080611b6185611b5061158b565b600001611b8090919063ffffffff16565b9050806000015181602001518260400151935093509350509193909250565b611b88611cf7565b8260010160008381526020019081526020016000206040518060600160405290816000820160009054906101000a900461ffff1661ffff1661ffff1681526020016000820160029054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160008201600e9054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681525050905092915050565b5080546000825590600052602060002090810190611c6a9190611d38565b50565b828054828255906000526020600020908101928215611ce6579160200282015b82811115611ce55782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190611c8d565b5b509050611cf39190611d38565b5090565b6040518060600160405280600061ffff16815260200160006bffffffffffffffffffffffff16815260200160006bffffffffffffffffffffffff1681525090565b5b80821115611d51576000816000905550600101611d39565b5090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611d9482611d69565b9050919050565b611da481611d89565b8114611daf57600080fd5b50565b600081359050611dc181611d9b565b92915050565b600060208284031215611ddd57611ddc611d5f565b5b6000611deb84828501611db2565b91505092915050565b6000819050919050565b611e0781611df4565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b611e4281611d89565b82525050565b6000611e548383611e39565b60208301905092915050565b6000602082019050919050565b6000611e7882611e0d565b611e828185611e18565b9350611e8d83611e29565b8060005b83811015611ebe578151611ea58882611e48565b9750611eb083611e60565b925050600181019050611e91565b5085935050505092915050565b6000604082019050611ee06000830185611dfe565b8181036020830152611ef28184611e6d565b90509392505050565b60006bffffffffffffffffffffffff82169050919050565b611f1c81611efb565b8114611f2757600080fd5b50565b600081359050611f3981611f13565b92915050565b611f4881611df4565b8114611f5357600080fd5b50565b600081359050611f6581611f3f565b92915050565b600080600060608486031215611f8457611f83611d5f565b5b6000611f9286828701611db2565b9350506020611fa386828701611f2a565b9250506040611fb486828701611f56565b9150509250925092565b600080600060608486031215611fd757611fd6611d5f565b5b6000611fe586828701611db2565b9350506020611ff686828701611db2565b925050604061200786828701611f56565b9150509250925092565b600081600b0b9050919050565b61202781612011565b82525050565b61203681611efb565b82525050565b6000608082019050612051600083018761201e565b61205e602083018661202d565b61206b6040830185611dfe565b6120786060830184611dfe565b95945050505050565b6000806040838503121561209857612097611d5f565b5b60006120a685828601611db2565b92505060206120b785828601611db2565b9150509250929050565b60006020820190506120d66000830184611dfe565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61212a826120e1565b810181811067ffffffffffffffff82111715612149576121486120f2565b5b80604052505050565b600061215c611d55565b90506121688282612121565b919050565b600067ffffffffffffffff821115612188576121876120f2565b5b602082029050602081019050919050565b600080fd5b60006121b16121ac8461216d565b612152565b905080838252602082019050602084028301858111156121d4576121d3612199565b5b835b818110156121fd57806121e98882611db2565b8452602084019350506020810190506121d6565b5050509392505050565b600082601f83011261221c5761221b6120dc565b5b813561222c84826020860161219e565b91505092915050565b60006020828403121561224b5761224a611d5f565b5b600082013567ffffffffffffffff81111561226957612268611d64565b5b61227584828501612207565b91505092915050565b600067ffffffffffffffff821115612299576122986120f2565b5b602082029050602081019050919050565b60006122bd6122b88461227e565b612152565b905080838252602082019050602084028301858111156122e0576122df612199565b5b835b8181101561230957806122f58882611f2a565b8452602084019350506020810190506122e2565b5050509392505050565b600082601f830112612328576123276120dc565b5b81356123388482602086016122aa565b91505092915050565b600067ffffffffffffffff82111561235c5761235b6120f2565b5b602082029050602081019050919050565b600061238061237b84612341565b612152565b905080838252602082019050602084028301858111156123a3576123a2612199565b5b835b818110156123cc57806123b88882611f56565b8452602084019350506020810190506123a5565b5050509392505050565b600082601f8301126123eb576123ea6120dc565b5b81356123fb84826020860161236d565b91505092915050565b60008060006060848603121561241d5761241c611d5f565b5b600084013567ffffffffffffffff81111561243b5761243a611d64565b5b61244786828701612207565b935050602084013567ffffffffffffffff81111561246857612467611d64565b5b61247486828701612313565b925050604084013567ffffffffffffffff81111561249557612494611d64565b5b6124a1868287016123d6565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061251482611df4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612546576125456124da565b5b600182019050919050565b600061255c82611df4565b915061256783611df4565b925082820390508181111561257f5761257e6124da565b5b92915050565b600061259082611df4565b915061259b83611df4565b92508282019050808211156125b3576125b26124da565b5b92915050565b60006125c482611efb565b91506125cf83611efb565b92508282026125dd81611efb565b91508082146125ef576125ee6124da565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061263082611efb565b915061263b83611efb565b92508261264b5761264a6125f6565b5b828204905092915050565b6000819050919050565b600061267b61267661267184611d69565b612656565b611d69565b9050919050565b600061268d82612660565b9050919050565b600061269f82612682565b9050919050565b6126af81612694565b82525050565b6126be81611d89565b82525050565b60006060820190506126d960008301866126a6565b6126e660208301856126b5565b6126f360408301846126b5565b949350505050565b60008151905061270a81611f3f565b92915050565b61271981612011565b811461272457600080fd5b50565b60008151905061273681612710565b92915050565b6000806000806080858703121561275657612755611d5f565b5b6000612764878288016126fb565b945050602061277587828801612727565b9350506040612786878288016126fb565b9250506060612797878288016126fb565b91505092959194509250565b600081519050919050565b600082825260208201905092915050565b60005b838110156127dd5780820151818401526020810190506127c2565b60008484015250505050565b60006127f4826127a3565b6127fe81856127ae565b935061280e8185602086016127bf565b612817816120e1565b840191505092915050565b600060808201905061283760008301876126a6565b61284460208301866126b5565b61285160408301856126b5565b818103606083015261286381846127e9565b905095945050505050565b600061287982612682565b9050919050565b6128898161286e565b82525050565b60006060820190506128a46000830186612880565b81810360208301526128b681856127e9565b905081810360408301526128ca81846127e9565b9050949350505050565b600080fd5b600067ffffffffffffffff8211156128f4576128f36120f2565b5b6128fd826120e1565b9050602081019050919050565b600061291d612918846128d9565b612152565b905082815260208101848484011115612939576129386128d4565b5b6129448482856127bf565b509392505050565b600082601f830112612961576129606120dc565b5b815161297184826020860161290a565b91505092915050565b6000602082840312156129905761298f611d5f565b5b600082015167ffffffffffffffff8111156129ae576129ad611d64565b5b6129ba8482850161294c565b91505092915050565b6000815190506129d281611d9b565b92915050565b6000602082840312156129ee576129ed611d5f565b5b60006129fc848285016129c3565b91505092915050565b6000819050919050565b6000819050919050565b60008160001b9050919050565b6000612a41612a3c612a3784612a05565b612a19565b612a0f565b9050919050565b612a5181612a26565b82525050565b6000602082019050612a6c6000830184612a48565b92915050565b6000612a7d82611d89565b9050919050565b612a8d81612a72565b8114612a9857600080fd5b50565b600081519050612aaa81612a84565b92915050565b600060208284031215612ac657612ac5611d5f565b5b6000612ad484828501612a9b565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fdfea26469706673582212204a2ae86f674caf2c8d8326187f3355ce651aa34cbaff0459f5457490ec0d71fc64736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x92C2226E GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x92C2226E EQ PUSH2 0x102 JUMPI DUP1 PUSH4 0x9AFFFBF9 EQ PUSH2 0x132 JUMPI DUP1 PUSH4 0xB233BD05 EQ PUSH2 0x14E JUMPI DUP1 PUSH4 0xF437A7A5 EQ PUSH2 0x16A JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x53732469 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x7FE70A27 EQ PUSH2 0xB3 JUMPI DUP1 PUSH4 0x8FF3849B EQ PUSH2 0xCF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x97 SWAP2 SWAP1 PUSH2 0x1DC7 JUMP JUMPDEST PUSH2 0x186 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAA SWAP3 SWAP2 SWAP1 PUSH2 0x1ECB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xCD PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xC8 SWAP2 SWAP1 PUSH2 0x1F6B JUMP JUMPDEST PUSH2 0x19C JUMP JUMPDEST STOP JUMPDEST PUSH2 0xE9 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xE4 SWAP2 SWAP1 PUSH2 0x1FBE JUMP JUMPDEST PUSH2 0x2B0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF9 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x203C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x11C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x117 SWAP2 SWAP1 PUSH2 0x2081 JUMP JUMPDEST PUSH2 0x2D2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x129 SWAP2 SWAP1 PUSH2 0x20C1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x14C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x147 SWAP2 SWAP1 PUSH2 0x2235 JUMP JUMPDEST PUSH2 0x2E6 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x168 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x163 SWAP2 SWAP1 PUSH2 0x1DC7 JUMP JUMPDEST PUSH2 0x38F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x17F SWAP2 SWAP1 PUSH2 0x2404 JUMP JUMPDEST PUSH2 0x3FE JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH2 0x193 DUP4 PUSH2 0x598 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH2 0x1A5 DUP4 PUSH2 0x6C4 JUMP JUMPDEST PUSH2 0x1B0 DUP4 DUP4 DUP4 PUSH2 0x706 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BA PUSH2 0xAD5 JUMP JUMPDEST SWAP1 POP TIMESTAMP DUP2 PUSH1 0x2 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x2 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD DUP5 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x2C1 DUP8 DUP8 DUP8 PUSH2 0xB02 JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2DE DUP4 DUP4 PUSH2 0xDA6 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x328 JUMPI PUSH2 0x315 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x308 JUMPI PUSH2 0x307 PUSH2 0x24AB JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0xE36 JUMP JUMPDEST DUP1 DUP1 PUSH2 0x320 SWAP1 PUSH2 0x2509 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x2E9 JUMP JUMPDEST POP PUSH2 0x331 PUSH2 0xAD5 JUMP JUMPDEST PUSH1 0x2 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP1 DUP3 ADD PUSH1 0x0 SWAP1 SSTORE PUSH1 0x1 DUP3 ADD PUSH1 0x0 PUSH2 0x38A SWAP2 SWAP1 PUSH2 0x1C4C JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x398 DUP2 PUSH2 0xE36 JUMP JUMPDEST PUSH2 0x3A0 PUSH2 0xAD5 JUMP JUMPDEST PUSH1 0x2 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP1 DUP3 ADD PUSH1 0x0 SWAP1 SSTORE PUSH1 0x1 DUP3 ADD PUSH1 0x0 PUSH2 0x3F9 SWAP2 SWAP1 PUSH2 0x1C4C JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP4 MLOAD EQ ISZERO DUP1 PUSH2 0x411 JUMPI POP DUP1 MLOAD DUP4 MLOAD EQ ISZERO JUMPDEST ISZERO PUSH2 0x448 JUMPI PUSH1 0x40 MLOAD PUSH32 0xED882F7100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x4E3 JUMPI PUSH2 0x477 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x46A JUMPI PUSH2 0x469 PUSH2 0x24AB JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x6C4 JUMP JUMPDEST PUSH2 0x4D0 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x48D JUMPI PUSH2 0x48C PUSH2 0x24AB JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x4A8 JUMPI PUSH2 0x4A7 PUSH2 0x24AB JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x4C3 JUMPI PUSH2 0x4C2 PUSH2 0x24AB JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x706 JUMP JUMPDEST DUP1 DUP1 PUSH2 0x4DB SWAP1 PUSH2 0x2509 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x44B JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x4EE PUSH2 0xAD5 JUMP JUMPDEST SWAP1 POP TIMESTAMP DUP2 PUSH1 0x2 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP2 SWAP1 SSTORE POP DUP4 DUP2 PUSH1 0x2 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x591 SWAP3 SWAP2 SWAP1 PUSH2 0x1C6D JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH2 0x5A4 PUSH2 0xAD5 JUMP JUMPDEST PUSH1 0x2 ADD PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD SLOAD PUSH2 0x5F0 PUSH2 0xAD5 JUMP JUMPDEST PUSH1 0x2 ADD PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD DUP1 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x6B4 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH2 0x66A JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 POP SWAP2 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH2 0x6CD DUP2 PUSH2 0x10FA JUMP JUMPDEST PUSH2 0x703 JUMPI PUSH1 0x40 MLOAD PUSH32 0x334AE3E600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x710 PUSH2 0xAD5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x71E CALLER DUP7 PUSH2 0xDA6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 GT DUP1 ISZERO PUSH2 0x7CE JUMPI POP PUSH1 0x0 DUP3 PUSH1 0x1 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH1 0x1 DUP5 PUSH2 0x7BA SWAP2 SWAP1 PUSH2 0x2551 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD SLOAD EQ JUMPDEST ISZERO PUSH2 0x805 JUMPI PUSH1 0x40 MLOAD PUSH32 0x9B90A9C600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x812 CALLER DUP7 DUP7 PUSH2 0x1159 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 PUSH1 0x1 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0xB SIGNEXTEND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP5 DUP4 PUSH1 0x1 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0xC PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP TIMESTAMP DUP4 PUSH1 0x1 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP PUSH1 0x1 PUSH2 0xA3A PUSH2 0xAD5 JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xAC6 SWAP2 SWAP1 PUSH2 0x2585 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x9CD9AFE22FEA86221D6E8117226B65BB0E2AF8C4F5B8ABF255FB0AFCAD4A3A9C SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0xB10 PUSH2 0xAD5 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xB SIGNEXTEND PUSH2 0xBB7 PUSH2 0xAD5 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0xC SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xC69 PUSH2 0xAD5 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0xD03 PUSH2 0xAD5 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDB0 PUSH2 0xAD5 JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE42 CALLER DUP4 PUSH2 0x1287 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xE4E PUSH2 0xAD5 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD SLOAD SUB PUSH2 0xF17 JUMPI PUSH1 0x40 MLOAD PUSH32 0x3C2779E500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xF21 PUSH2 0xAD5 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD SLOAD EQ PUSH2 0xFEA JUMPI PUSH1 0x40 MLOAD PUSH32 0xE7A7EE3800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 SWAP1 POP PUSH1 0x0 PUSH2 0x101C ADDRESS CALLER DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1338 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0xB SIGNEXTEND EQ PUSH2 0x1056 JUMPI PUSH2 0x1054 ADDRESS CALLER DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x13D8 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP JUMPDEST TIMESTAMP PUSH2 0x105F PUSH2 0xAD5 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD DUP2 SWAP1 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1104 PUSH2 0x158B JUMP JUMPDEST PUSH1 0x9 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1166 PUSH2 0x158B JUMP JUMPDEST PUSH1 0x4 ADD PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH2 0xFFFF AND SWAP1 POP PUSH1 0x0 DUP2 PUSH2 0xFFFF AND GT ISZERO PUSH2 0x11CC JUMPI DUP1 SWAP2 POP PUSH2 0x11E7 JUMP JUMPDEST PUSH2 0x11D4 PUSH2 0x15B8 JUMP JUMPDEST ISZERO PUSH2 0x11E6 JUMPI PUSH2 0x11E3 DUP6 DUP6 PUSH2 0x15D8 JUMP JUMPDEST SWAP2 POP JUMPDEST JUMPDEST PUSH1 0x0 DUP3 PUSH2 0xFFFF AND SUB PUSH2 0x11FD JUMPI DUP5 SWAP3 POP POP POP PUSH2 0x1280 JUMP JUMPDEST PUSH2 0x2710 PUSH2 0xFFFF AND DUP3 PUSH2 0xFFFF AND DUP7 PUSH2 0x1214 SWAP2 SWAP1 PUSH2 0x25B9 JUMP JUMPDEST PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND LT ISZERO PUSH2 0x125A JUMPI PUSH1 0x40 MLOAD PUSH32 0xFE267E4200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2710 PUSH2 0xFFFF AND DUP3 PUSH2 0xFFFF AND DUP7 PUSH2 0x1271 SWAP2 SWAP1 PUSH2 0x25B9 JUMP JUMPDEST PUSH2 0x127B SWAP2 SWAP1 PUSH2 0x2625 JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1292 PUSH2 0xAD5 JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH1 0x0 DUP2 EQ PUSH2 0x132C JUMPI PUSH1 0x1 DUP2 PUSH2 0x1327 SWAP2 SWAP1 PUSH2 0x2551 JUMP JUMPDEST PUSH2 0x132F JUMP JUMPDEST PUSH1 0x0 JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1344 DUP6 PUSH2 0x1676 JUMP JUMPDEST SWAP2 POP POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xE6A1E888 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1384 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x26C4 JUMP JUMPDEST PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x13A1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x13C5 SWAP2 SWAP1 PUSH2 0x273C JUMP JUMPDEST SWAP1 SWAP2 SWAP3 POP SWAP1 POP POP DUP1 SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x13E6 DUP7 PUSH2 0x18B7 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x39255D5B DUP3 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xB4B333C6 DUP11 DUP11 DUP11 PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1441 JUMPI PUSH2 0x1440 PUSH2 0x20F2 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1473 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1487 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2822 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x14E4 JUMPI PUSH2 0x14E3 PUSH2 0x20F2 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1516 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1535 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x288F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1554 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x157D SWAP2 SWAP1 PUSH2 0x297A JUMP JUMPDEST POP PUSH1 0x1 SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x2F7ED27098ECEFE70183EE38AE4542DEE65215B0786F6870871034402CFE2CC9 SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x15C2 PUSH2 0x158B JUMP JUMPDEST PUSH1 0x5 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x15E7 DUP6 PUSH2 0x1B3E JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND LT DUP1 PUSH2 0x1633 JUMPI POP DUP1 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND LT ISZERO JUMPDEST ISZERO PUSH2 0x166A JUMPI PUSH1 0x40 MLOAD PUSH32 0xFE267E4200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x65599BF746E17A00EA62E3610586992D88101B78EEC3CF380706621FB97EA837 SLOAD SWAP2 POP PUSH32 0xB969D79D88ACD02D04ED7EE7D43B949E7DAF093D363ABCFBBC43DFDFD1CE969A SLOAD SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1838 JUMPI PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x179B JUMPI DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x20BC4425 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1774 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1798 SWAP2 SWAP1 PUSH2 0x29D8 JUMP JUMPDEST SWAP2 POP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xB6D200DE PUSH32 0xA9214CC96615E0085D3BB077758DB69497DC2DCE3B2B1E97BC93C3D18D83EFD3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x17F4 SWAP2 SWAP1 PUSH2 0x2A57 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1811 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1835 SWAP2 SWAP1 PUSH2 0x2AB0 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1875 JUMPI PUSH2 0x1874 PUSH2 0x2ADD JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x18B2 JUMPI PUSH2 0x18B1 PUSH2 0x2ADD JUMP JUMPDEST JUMPDEST SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x65599BF746E17A00EA62E3610586992D88101B78EEC3CF380706621FB97EA837 SLOAD SWAP2 POP PUSH32 0xB969D79D88ACD02D04ED7EE7D43B949E7DAF093D363ABCFBBC43DFDFD1CE969A SLOAD SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1ABF JUMPI PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x19DC JUMPI DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x20BC4425 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x19B5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x19D9 SWAP2 SWAP1 PUSH2 0x29D8 JUMP JUMPDEST SWAP2 POP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xB6D200DE PUSH32 0xA9214CC96615E0085D3BB077758DB69497DC2DCE3B2B1E97BC93C3D18D83EFD3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1A35 SWAP2 SWAP1 PUSH2 0x2A57 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1A52 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1A76 SWAP2 SWAP1 PUSH2 0x2AB0 JUMP JUMPDEST SWAP1 POP DUP2 PUSH32 0x65599BF746E17A00EA62E3610586992D88101B78EEC3CF380706621FB97EA837 SSTORE DUP1 PUSH32 0xB969D79D88ACD02D04ED7EE7D43B949E7DAF093D363ABCFBBC43DFDFD1CE969A SSTORE JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1AFC JUMPI PUSH2 0x1AFB PUSH2 0x2ADD JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x1B39 JUMPI PUSH2 0x1B38 PUSH2 0x2ADD JUMP JUMPDEST JUMPDEST SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x1B61 DUP6 PUSH2 0x1B50 PUSH2 0x158B JUMP JUMPDEST PUSH1 0x0 ADD PUSH2 0x1B80 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x0 ADD MLOAD DUP2 PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x40 ADD MLOAD SWAP4 POP SWAP4 POP SWAP4 POP POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH2 0x1B88 PUSH2 0x1CF7 JUMP JUMPDEST DUP3 PUSH1 0x1 ADD PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH2 0xFFFF AND PUSH2 0xFFFF AND PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP3 ADD PUSH1 0x2 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP3 ADD PUSH1 0xE SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST POP DUP1 SLOAD PUSH1 0x0 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1C6A SWAP2 SWAP1 PUSH2 0x1D38 JUMP JUMPDEST POP JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x1CE6 JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x1CE5 JUMPI DUP3 MLOAD DUP3 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x1C8D JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x1CF3 SWAP2 SWAP1 PUSH2 0x1D38 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH2 0xFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1D51 JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH2 0x1D39 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D94 DUP3 PUSH2 0x1D69 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1DA4 DUP2 PUSH2 0x1D89 JUMP JUMPDEST DUP2 EQ PUSH2 0x1DAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1DC1 DUP2 PUSH2 0x1D9B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1DDD JUMPI PUSH2 0x1DDC PUSH2 0x1D5F JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1DEB DUP5 DUP3 DUP6 ADD PUSH2 0x1DB2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1E07 DUP2 PUSH2 0x1DF4 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1E42 DUP2 PUSH2 0x1D89 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E54 DUP4 DUP4 PUSH2 0x1E39 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E78 DUP3 PUSH2 0x1E0D JUMP JUMPDEST PUSH2 0x1E82 DUP2 DUP6 PUSH2 0x1E18 JUMP JUMPDEST SWAP4 POP PUSH2 0x1E8D DUP4 PUSH2 0x1E29 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1EBE JUMPI DUP2 MLOAD PUSH2 0x1EA5 DUP9 DUP3 PUSH2 0x1E48 JUMP JUMPDEST SWAP8 POP PUSH2 0x1EB0 DUP4 PUSH2 0x1E60 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x1E91 JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x1EE0 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x1DFE JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x1EF2 DUP2 DUP5 PUSH2 0x1E6D JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1F1C DUP2 PUSH2 0x1EFB JUMP JUMPDEST DUP2 EQ PUSH2 0x1F27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1F39 DUP2 PUSH2 0x1F13 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1F48 DUP2 PUSH2 0x1DF4 JUMP JUMPDEST DUP2 EQ PUSH2 0x1F53 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1F65 DUP2 PUSH2 0x1F3F JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1F84 JUMPI PUSH2 0x1F83 PUSH2 0x1D5F JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1F92 DUP7 DUP3 DUP8 ADD PUSH2 0x1DB2 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x1FA3 DUP7 DUP3 DUP8 ADD PUSH2 0x1F2A JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x1FB4 DUP7 DUP3 DUP8 ADD PUSH2 0x1F56 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1FD7 JUMPI PUSH2 0x1FD6 PUSH2 0x1D5F JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1FE5 DUP7 DUP3 DUP8 ADD PUSH2 0x1DB2 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x1FF6 DUP7 DUP3 DUP8 ADD PUSH2 0x1DB2 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x2007 DUP7 DUP3 DUP8 ADD PUSH2 0x1F56 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0xB SIGNEXTEND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2027 DUP2 PUSH2 0x2011 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x2036 DUP2 PUSH2 0x1EFB JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x2051 PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x201E JUMP JUMPDEST PUSH2 0x205E PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x202D JUMP JUMPDEST PUSH2 0x206B PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x1DFE JUMP JUMPDEST PUSH2 0x2078 PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x1DFE JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2098 JUMPI PUSH2 0x2097 PUSH2 0x1D5F JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x20A6 DUP6 DUP3 DUP7 ADD PUSH2 0x1DB2 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x20B7 DUP6 DUP3 DUP7 ADD PUSH2 0x1DB2 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x20D6 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1DFE JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x212A DUP3 PUSH2 0x20E1 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x2149 JUMPI PUSH2 0x2148 PUSH2 0x20F2 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x215C PUSH2 0x1D55 JUMP JUMPDEST SWAP1 POP PUSH2 0x2168 DUP3 DUP3 PUSH2 0x2121 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2188 JUMPI PUSH2 0x2187 PUSH2 0x20F2 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x21B1 PUSH2 0x21AC DUP5 PUSH2 0x216D JUMP JUMPDEST PUSH2 0x2152 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x21D4 JUMPI PUSH2 0x21D3 PUSH2 0x2199 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x21FD JUMPI DUP1 PUSH2 0x21E9 DUP9 DUP3 PUSH2 0x1DB2 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x21D6 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x221C JUMPI PUSH2 0x221B PUSH2 0x20DC JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x222C DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x219E JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x224B JUMPI PUSH2 0x224A PUSH2 0x1D5F JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2269 JUMPI PUSH2 0x2268 PUSH2 0x1D64 JUMP JUMPDEST JUMPDEST PUSH2 0x2275 DUP5 DUP3 DUP6 ADD PUSH2 0x2207 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2299 JUMPI PUSH2 0x2298 PUSH2 0x20F2 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x22BD PUSH2 0x22B8 DUP5 PUSH2 0x227E JUMP JUMPDEST PUSH2 0x2152 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x22E0 JUMPI PUSH2 0x22DF PUSH2 0x2199 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2309 JUMPI DUP1 PUSH2 0x22F5 DUP9 DUP3 PUSH2 0x1F2A JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x22E2 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2328 JUMPI PUSH2 0x2327 PUSH2 0x20DC JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2338 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x22AA JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x235C JUMPI PUSH2 0x235B PUSH2 0x20F2 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2380 PUSH2 0x237B DUP5 PUSH2 0x2341 JUMP JUMPDEST PUSH2 0x2152 JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x23A3 JUMPI PUSH2 0x23A2 PUSH2 0x2199 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x23CC JUMPI DUP1 PUSH2 0x23B8 DUP9 DUP3 PUSH2 0x1F56 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x23A5 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x23EB JUMPI PUSH2 0x23EA PUSH2 0x20DC JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x23FB DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x236D JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x241D JUMPI PUSH2 0x241C PUSH2 0x1D5F JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x243B JUMPI PUSH2 0x243A PUSH2 0x1D64 JUMP JUMPDEST JUMPDEST PUSH2 0x2447 DUP7 DUP3 DUP8 ADD PUSH2 0x2207 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2468 JUMPI PUSH2 0x2467 PUSH2 0x1D64 JUMP JUMPDEST JUMPDEST PUSH2 0x2474 DUP7 DUP3 DUP8 ADD PUSH2 0x2313 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2495 JUMPI PUSH2 0x2494 PUSH2 0x1D64 JUMP JUMPDEST JUMPDEST PUSH2 0x24A1 DUP7 DUP3 DUP8 ADD PUSH2 0x23D6 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2514 DUP3 PUSH2 0x1DF4 JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x2546 JUMPI PUSH2 0x2545 PUSH2 0x24DA JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x255C DUP3 PUSH2 0x1DF4 JUMP JUMPDEST SWAP2 POP PUSH2 0x2567 DUP4 PUSH2 0x1DF4 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP DUP2 DUP2 GT ISZERO PUSH2 0x257F JUMPI PUSH2 0x257E PUSH2 0x24DA JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2590 DUP3 PUSH2 0x1DF4 JUMP JUMPDEST SWAP2 POP PUSH2 0x259B DUP4 PUSH2 0x1DF4 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x25B3 JUMPI PUSH2 0x25B2 PUSH2 0x24DA JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x25C4 DUP3 PUSH2 0x1EFB JUMP JUMPDEST SWAP2 POP PUSH2 0x25CF DUP4 PUSH2 0x1EFB JUMP JUMPDEST SWAP3 POP DUP3 DUP3 MUL PUSH2 0x25DD DUP2 PUSH2 0x1EFB JUMP JUMPDEST SWAP2 POP DUP1 DUP3 EQ PUSH2 0x25EF JUMPI PUSH2 0x25EE PUSH2 0x24DA JUMP JUMPDEST JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2630 DUP3 PUSH2 0x1EFB JUMP JUMPDEST SWAP2 POP PUSH2 0x263B DUP4 PUSH2 0x1EFB JUMP JUMPDEST SWAP3 POP DUP3 PUSH2 0x264B JUMPI PUSH2 0x264A PUSH2 0x25F6 JUMP JUMPDEST JUMPDEST DUP3 DUP3 DIV SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x267B PUSH2 0x2676 PUSH2 0x2671 DUP5 PUSH2 0x1D69 JUMP JUMPDEST PUSH2 0x2656 JUMP JUMPDEST PUSH2 0x1D69 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x268D DUP3 PUSH2 0x2660 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x269F DUP3 PUSH2 0x2682 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x26AF DUP2 PUSH2 0x2694 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x26BE DUP2 PUSH2 0x1D89 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x26D9 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x26A6 JUMP JUMPDEST PUSH2 0x26E6 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x26B5 JUMP JUMPDEST PUSH2 0x26F3 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x26B5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x270A DUP2 PUSH2 0x1F3F JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2719 DUP2 PUSH2 0x2011 JUMP JUMPDEST DUP2 EQ PUSH2 0x2724 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x2736 DUP2 PUSH2 0x2710 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x2756 JUMPI PUSH2 0x2755 PUSH2 0x1D5F JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2764 DUP8 DUP3 DUP9 ADD PUSH2 0x26FB JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x2775 DUP8 DUP3 DUP9 ADD PUSH2 0x2727 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x2786 DUP8 DUP3 DUP9 ADD PUSH2 0x26FB JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x2797 DUP8 DUP3 DUP9 ADD PUSH2 0x26FB JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x27DD JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x27C2 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27F4 DUP3 PUSH2 0x27A3 JUMP JUMPDEST PUSH2 0x27FE DUP2 DUP6 PUSH2 0x27AE JUMP JUMPDEST SWAP4 POP PUSH2 0x280E DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x27BF JUMP JUMPDEST PUSH2 0x2817 DUP2 PUSH2 0x20E1 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 ADD SWAP1 POP PUSH2 0x2837 PUSH1 0x0 DUP4 ADD DUP8 PUSH2 0x26A6 JUMP JUMPDEST PUSH2 0x2844 PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x26B5 JUMP JUMPDEST PUSH2 0x2851 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x26B5 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x2863 DUP2 DUP5 PUSH2 0x27E9 JUMP JUMPDEST SWAP1 POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2879 DUP3 PUSH2 0x2682 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2889 DUP2 PUSH2 0x286E JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x28A4 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x2880 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x28B6 DUP2 DUP6 PUSH2 0x27E9 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x28CA DUP2 DUP5 PUSH2 0x27E9 JUMP JUMPDEST SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x28F4 JUMPI PUSH2 0x28F3 PUSH2 0x20F2 JUMP JUMPDEST JUMPDEST PUSH2 0x28FD DUP3 PUSH2 0x20E1 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x291D PUSH2 0x2918 DUP5 PUSH2 0x28D9 JUMP JUMPDEST PUSH2 0x2152 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x2939 JUMPI PUSH2 0x2938 PUSH2 0x28D4 JUMP JUMPDEST JUMPDEST PUSH2 0x2944 DUP5 DUP3 DUP6 PUSH2 0x27BF JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2961 JUMPI PUSH2 0x2960 PUSH2 0x20DC JUMP JUMPDEST JUMPDEST DUP2 MLOAD PUSH2 0x2971 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x290A JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2990 JUMPI PUSH2 0x298F PUSH2 0x1D5F JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP3 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x29AE JUMPI PUSH2 0x29AD PUSH2 0x1D64 JUMP JUMPDEST JUMPDEST PUSH2 0x29BA DUP5 DUP3 DUP6 ADD PUSH2 0x294C JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x29D2 DUP2 PUSH2 0x1D9B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x29EE JUMPI PUSH2 0x29ED PUSH2 0x1D5F JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x29FC DUP5 DUP3 DUP6 ADD PUSH2 0x29C3 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 SHL SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2A41 PUSH2 0x2A3C PUSH2 0x2A37 DUP5 PUSH2 0x2A05 JUMP JUMPDEST PUSH2 0x2A19 JUMP JUMPDEST PUSH2 0x2A0F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2A51 DUP2 PUSH2 0x2A26 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2A6C PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2A48 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2A7D DUP3 PUSH2 0x1D89 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2A8D DUP2 PUSH2 0x2A72 JUMP JUMPDEST DUP2 EQ PUSH2 0x2A98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x2AAA DUP2 PUSH2 0x2A84 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2AC6 JUMPI PUSH2 0x2AC5 PUSH2 0x1D5F JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2AD4 DUP5 DUP3 DUP6 ADD PUSH2 0x2A9B JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4A 0x2A 0xE8 PUSH16 0x674CAF2C8D8326187F3355CE651AA34C 0xBA SELFDESTRUCT DIV MSIZE CREATE2 GASLIMIT PUSH21 0x90EC0D71FC64736F6C634300081200330000000000 ","sourceMap":"273:3383:28:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3480:174;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;308:492;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3234:240;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;3043:185;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2335:702;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;961:576;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1557:772;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3480:174;3563:7;3572:16;3607:40;3641:5;3607:33;:40::i;:::-;3600:47;;;;3480:174;;;:::o;308:492::-;432:51;471:11;432:38;:51::i;:::-;493:54;518:11;531:9;542:4;493:24;:54::i;:::-;558:42;603:41;:39;:41::i;:::-;558:86;;703:15;655:8;:23;;:35;679:10;655:35;;;;;;;;;;;;;;;:45;;:63;;;;728:8;:23;;:35;752:10;728:35;;;;;;;;;;;;;;;:47;;781:11;728:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;422:378;308:492;;;:::o;3234:240::-;3363:5;3370:6;3378:7;3387;3413:54;3440:5;3447:11;3460:6;3413:26;:54::i;:::-;3406:61;;;;;;;;3234:240;;;;;;;:::o;3043:185::-;3152:7;3178:43;3202:5;3209:11;3178:23;:43::i;:::-;3171:50;;3043:185;;;;:::o;2335:702::-;2412:9;2407:551;2431:12;:19;2427:1;:23;2407:551;;;2907:40;2931:12;2944:1;2931:15;;;;;;;;:::i;:::-;;;;;;;;2907:23;:40::i;:::-;2452:3;;;;;:::i;:::-;;;;2407:551;;;;2975:28;:26;:28::i;:::-;:43;;:55;3019:10;2975:55;;;;;;;;;;;;;;;;2968:62;;;;;;;;;;;;;;:::i;:::-;;;2335:702;:::o;961:576::-;1422:36;1446:11;1422:23;:36::i;:::-;1475:28;:26;:28::i;:::-;:43;;:55;1519:10;1475:55;;;;;;;;;;;;;;;;1468:62;;;;;;;;;;;;;;:::i;:::-;;;961:576;:::o;1557:772::-;1752:10;:17;1729:12;:19;:40;;:91;;;;1808:5;:12;1785;:19;:35;;1729:91;1712:147;;;1838:21;;;;;;;;;;;;;;1712:147;1875:9;1870:210;1894:12;:19;1890:1;:23;1870:210;;;1934:55;1973:12;1986:1;1973:15;;;;;;;;:::i;:::-;;;;;;;;1934:38;:55::i;:::-;2003:66;2028:12;2041:1;2028:15;;;;;;;;:::i;:::-;;;;;;;;2045:10;2056:1;2045:13;;;;;;;;:::i;:::-;;;;;;;;2060:5;2066:1;2060:8;;;;;;;;:::i;:::-;;;;;;;;2003:24;:66::i;:::-;1915:3;;;;;:::i;:::-;;;;1870:210;;;;2090:42;2135:41;:39;:41::i;:::-;2090:86;;2235:15;2187:8;:23;;:35;2211:10;2187:35;;;;;;;;;;;;;;;:45;;:63;;;;2310:12;2260:8;:23;;:35;2284:10;2260:35;;;;;;;;;;;;;;;:47;;:62;;;;;;;;;;;;:::i;:::-;;1702:627;1557:772;;;:::o;5372:273:45:-;5456:7;5465:16;5514:17;:15;:17::i;:::-;:32;;:39;5547:5;5514:39;;;;;;;;;;;;;;;:49;;;5577:17;:15;:17::i;:::-;:32;;:39;5610:5;5577:39;;;;;;;;;;;;;;;:51;;5493:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5372:273;;;:::o;7163:158:43:-;7250:36;7274:11;7250:23;:36::i;:::-;7245:69;;7295:19;;;;;;;;;;;;;;7245:69;7163:158;:::o;2052:1079:45:-;2177:31;2211:17;:15;:17::i;:::-;2177:51;;2238:16;2257:37;2270:10;2282:11;2257:12;:37::i;:::-;2238:56;;2333:1;2322:8;:12;:150;;;;;2471:1;2350:8;:35;;:47;2386:10;2350:47;;;;;;;;;;;;;;;:60;2398:11;2350:60;;;;;;;;;;;;;;;:74;2422:1;2411:8;:12;;;;:::i;:::-;2350:74;;;;;;;;;;;:105;;;:122;2322:150;2305:211;;;2490:26;;;;;;;;;;;;;;2305:211;2527:23;2553:96;2588:10;2612:9;2635:4;2553:21;:96::i;:::-;2527:122;;2799:17;2699:8;:31;;:43;2731:10;2699:43;;;;;;;;;;;;;;;:56;2743:11;2699:56;;;;;;;;;;;;;;;:66;2756:8;2699:66;;;;;;;;;;;:97;;;:117;;;;;;;;;;;;;;;;;;;;2904:9;2826:8;:31;;:43;2858:10;2826:43;;;;;;;;;;;;;;;:56;2870:11;2826:56;;;;;;;;;;;;;;;:66;2883:8;2826:66;;;;;;;;;;;:75;;;:87;;;;;;;;;;;;;;;;;;3007:28;2923:8;:31;;:43;2955:10;2923:43;;;;;;;;;;;;;;;:56;2967:11;2923:56;;;;;;;;;;;;;;;:66;2980:8;2923:66;;;;;;;;;;;:81;;:112;;;;3123:1;3064:17;:15;:17::i;:::-;:30;;:42;3095:10;3064:42;;;;;;;;;;;;;;;:55;3107:11;3064:55;;;;;;;;;;;;;;;;:60;;;;;;;:::i;:::-;;;;;;;;2167:964;;;2052:1079;;;:::o;1292:224::-;1366:24;1406:16;603:23;1406:43;;1492:8;1482:18;;1468:42;1292:224;:::o;5651:597::-;5781:5;5788:6;5796:7;5805;5845:17;:15;:17::i;:::-;:44;;:51;5890:5;5845:51;;;;;;;;;;;;;;;:64;5897:11;5845:64;;;;;;;;;;;;;;;:72;5910:6;5845:72;;;;;;;;;;;:90;;;;;;;;;;;;5949:17;:15;:17::i;:::-;:44;;:51;5994:5;5949:51;;;;;;;;;;;;;;;:64;6001:11;5949:64;;;;;;;;;;;;;;;:72;6014:6;5949:72;;;;;;;;;;;:81;;;;;;;;;;;;6044:17;:15;:17::i;:::-;:44;;:51;6089:5;6044:51;;;;;;;;;;;;;;;:64;6096:11;6044:64;;;;;;;;;;;;;;;:72;6109:6;6044:72;;;;;;;;;;;:87;;;6145:17;:15;:17::i;:::-;:44;;:51;6190:5;6145:51;;;;;;;;;;;;;;;:64;6197:11;6145:64;;;;;;;;;;;;;;;:72;6210:6;6145:72;;;;;;;;;;;:86;;;5824:417;;;;;;;;5651:597;;;;;;;:::o;4932:186::-;5035:7;5061:17;:15;:17::i;:::-;:30;;:37;5092:5;5061:37;;;;;;;;;;;;;;;:50;5099:11;5061:50;;;;;;;;;;;;;;;;5054:57;;4932:186;;;;:::o;3215:867::-;3277:19;3299:41;3316:10;3328:11;3299:16;:41::i;:::-;3277:63;;3485:1;3367:17;:15;:17::i;:::-;:44;;:56;3412:10;3367:56;;;;;;;;;;;;;;;:69;3424:11;3367:69;;;;;;;;;;;;;;;:82;3437:11;3367:82;;;;;;;;;;;:114;;;:119;3350:173;;3504:19;;;;;;;;;;;;;;3350:173;3667:1;3550:17;:15;:17::i;:::-;:44;;:56;3595:10;3550:56;;;;;;;;;;;;;;;:69;3607:11;3550:69;;;;;;;;;;;;;;;:82;3620:11;3550:82;;;;;;;;;;;:113;;;:118;3533:174;;3686:21;;;;;;;;;;;;;;3533:174;3718:23;3756:11;3718:50;;3778:14;3795:50;3827:4;3834:10;3795:11;:23;;;;:50;;;;;:::i;:::-;3778:67;;3871:1;3859:8;:13;;;3855:68;;3874:49;3905:4;3912:10;3874:11;:22;;;;:49;;;;;:::i;:::-;;3855:68;4060:15;3952:17;:15;:17::i;:::-;:40;;:52;3993:10;3952:52;;;;;;;;;;;;;;;:65;4005:11;3952:65;;;;;;;;;;;;;;;:78;4018:11;3952:78;;;;;;;;;;;:105;;:123;;;;3267:815;;;3215:867;:::o;11115:163:43:-;11206:4;11229:17;:15;:17::i;:::-;:29;;:42;11259:11;11229:42;;;;;;;;;;;;;;;;;;;;;;;;;11222:49;;11115:163;;;:::o;4265:647:45:-;4396:5;4413:10;4433:11;4447:28;:26;:28::i;:::-;:33;;:40;4481:5;4447:40;;;;;;;;;;;;;;;;;;;;;;;;;4433:54;;4508:1;4501:4;:8;;;4497:174;;;4531:4;4525:10;;4497:174;;;4570:26;:24;:26::i;:::-;4566:94;;;4620:40;4644:9;4655:4;4620:23;:40::i;:::-;4614:46;;4566:94;4497:174;4692:1;4685:3;:8;;;4681:225;;4722:9;4709:23;;;;;;4681:225;981:5:43;4767:37:45;;4780:3;4768:15;;:9;:15;;;;:::i;:::-;4767:37;;;4763:67;;;4813:17;;;;;;;;;;;;;;4763:67;981:5:43;4857:37:45;;4870:3;4858:15;;:9;:15;;;;:::i;:::-;4857:37;;;;:::i;:::-;4844:51;;;;4265:647;;;;;;:::o;5124:242::-;5231:7;5250:13;5266:17;:15;:17::i;:::-;:30;;:37;5297:5;5266:37;;;;;;;;;;;;;;;:50;5304:11;5266:50;;;;;;;;;;;;;;;;5250:66;;5342:1;5333:5;:10;:26;;5358:1;5350:5;:9;;;;:::i;:::-;5333:26;;;5346:1;5333:26;5326:33;;;5124:242;;;;:::o;21133:262:9:-;21237:14;21270:28;21302:21;21317:5;21302:14;:21::i;:::-;21267:56;;;21352:3;:11;;;21364:5;21371:6;21379:8;21352:36;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21333:55;;;;;;;;;;;21257:138;21133:262;;;;;:::o;3607:451::-;3706:4;3727:16;3745:28;3777:29;3800:5;3777:22;:29::i;:::-;3726:80;;;;3816:4;:18;;;3848:3;3897;:14;;;3930:5;3937:6;3945:8;3965:1;3955:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3865:117;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4006:1;3996:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3816:214;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4047:4;4040:11;;;;3607:451;;;;;:::o;2131:224:43:-;2205:24;2245:16;876:23;2245:43;;2331:8;2321:18;;2307:42;2131:224;:::o;11284:108::-;11332:4;11355:17;:15;:17::i;:::-;:30;;;;;;;;;;;;11348:37;;11284:108;:::o;11511:395::-;11610:6;11642:10;11666:25;11705;11743:17;11755:4;11743:11;:17::i;:::-;11628:132;;;;;;11787:18;11775:30;;:9;:30;;;:65;;;;11822:18;11809:31;;:9;:31;;;;11775:65;11771:107;;;11861:17;;;;;;;;;;;;;;11771:107;11896:3;11889:10;;;;;11511:395;;;;:::o;56668:917:9:-;56740:16;56758:28;56913:10;56907:17;56899:25;;56950:9;56944:16;56937:23;;57007:1;56983:26;;56991:3;56983:26;;;56979:511;;57139:1;57114:27;;57122:4;57114:27;;;57110:101;;57180:5;:13;;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;57161:35;;57110:101;57275:4;57263:35;;;57410:66;57263:214;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;57224:255;;56979:511;57531:1;57506:27;;57514:4;57506:27;;;57499:35;;;;:::i;:::-;;57575:1;57551:26;;57559:3;57551:26;;;57544:34;;;;:::i;:::-;;56668:917;;;:::o;54169:1150::-;54244:16;54262:28;54417:10;54411:17;54403:25;;54454:9;54448:16;54441:23;;54511:1;54487:26;;54495:3;54487:26;;;54483:741;;54632:1;54607:27;;54615:4;54607:27;;;54603:101;;54673:5;:13;;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;54654:35;;54603:101;54768:4;54756:35;;;54903:66;54756:214;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;54717:255;;55156:4;55144:10;55137:24;55196:3;55185:9;55178:22;54483:741;55265:1;55240:27;;55248:4;55240:27;;;55233:35;;;;:::i;:::-;;55309:1;55285:26;;55293:3;55285:26;;;55278:34;;;;:::i;:::-;;54169:1150;;;:::o;11912:252:43:-;11984:6;11992;12000;12018:28;12049:31;12075:4;12049:17;:15;:17::i;:::-;:21;;:25;;:31;;;;:::i;:::-;12018:62;;12098:4;:8;;;12108:4;:23;;;12133:4;:23;;;12090:67;;;;;;;11912:252;;;;;:::o;492:152:47:-;580:23;;:::i;:::-;622:3;:10;;:15;633:3;622:15;;;;;;;;;;;615:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;492:152;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:75:61:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:329::-;900:6;949:2;937:9;928:7;924:23;920:32;917:119;;;955:79;;:::i;:::-;917:119;1075:1;1100:53;1145:7;1136:6;1125:9;1121:22;1100:53;:::i;:::-;1090:63;;1046:117;841:329;;;;:::o;1176:77::-;1213:7;1242:5;1231:16;;1176:77;;;:::o;1259:118::-;1346:24;1364:5;1346:24;:::i;:::-;1341:3;1334:37;1259:118;;:::o;1383:114::-;1450:6;1484:5;1478:12;1468:22;;1383:114;;;:::o;1503:184::-;1602:11;1636:6;1631:3;1624:19;1676:4;1671:3;1667:14;1652:29;;1503:184;;;;:::o;1693:132::-;1760:4;1783:3;1775:11;;1813:4;1808:3;1804:14;1796:22;;1693:132;;;:::o;1831:108::-;1908:24;1926:5;1908:24;:::i;:::-;1903:3;1896:37;1831:108;;:::o;1945:179::-;2014:10;2035:46;2077:3;2069:6;2035:46;:::i;:::-;2113:4;2108:3;2104:14;2090:28;;1945:179;;;;:::o;2130:113::-;2200:4;2232;2227:3;2223:14;2215:22;;2130:113;;;:::o;2279:732::-;2398:3;2427:54;2475:5;2427:54;:::i;:::-;2497:86;2576:6;2571:3;2497:86;:::i;:::-;2490:93;;2607:56;2657:5;2607:56;:::i;:::-;2686:7;2717:1;2702:284;2727:6;2724:1;2721:13;2702:284;;;2803:6;2797:13;2830:63;2889:3;2874:13;2830:63;:::i;:::-;2823:70;;2916:60;2969:6;2916:60;:::i;:::-;2906:70;;2762:224;2749:1;2746;2742:9;2737:14;;2702:284;;;2706:14;3002:3;2995:10;;2403:608;;;2279:732;;;;:::o;3017:483::-;3188:4;3226:2;3215:9;3211:18;3203:26;;3239:71;3307:1;3296:9;3292:17;3283:6;3239:71;:::i;:::-;3357:9;3351:4;3347:20;3342:2;3331:9;3327:18;3320:48;3385:108;3488:4;3479:6;3385:108;:::i;:::-;3377:116;;3017:483;;;;;:::o;3506:109::-;3542:7;3582:26;3575:5;3571:38;3560:49;;3506:109;;;:::o;3621:120::-;3693:23;3710:5;3693:23;:::i;:::-;3686:5;3683:34;3673:62;;3731:1;3728;3721:12;3673:62;3621:120;:::o;3747:137::-;3792:5;3830:6;3817:20;3808:29;;3846:32;3872:5;3846:32;:::i;:::-;3747:137;;;;:::o;3890:122::-;3963:24;3981:5;3963:24;:::i;:::-;3956:5;3953:35;3943:63;;4002:1;3999;3992:12;3943:63;3890:122;:::o;4018:139::-;4064:5;4102:6;4089:20;4080:29;;4118:33;4145:5;4118:33;:::i;:::-;4018:139;;;;:::o;4163:617::-;4239:6;4247;4255;4304:2;4292:9;4283:7;4279:23;4275:32;4272:119;;;4310:79;;:::i;:::-;4272:119;4430:1;4455:53;4500:7;4491:6;4480:9;4476:22;4455:53;:::i;:::-;4445:63;;4401:117;4557:2;4583:52;4627:7;4618:6;4607:9;4603:22;4583:52;:::i;:::-;4573:62;;4528:117;4684:2;4710:53;4755:7;4746:6;4735:9;4731:22;4710:53;:::i;:::-;4700:63;;4655:118;4163:617;;;;;:::o;4786:619::-;4863:6;4871;4879;4928:2;4916:9;4907:7;4903:23;4899:32;4896:119;;;4934:79;;:::i;:::-;4896:119;5054:1;5079:53;5124:7;5115:6;5104:9;5100:22;5079:53;:::i;:::-;5069:63;;5025:117;5181:2;5207:53;5252:7;5243:6;5232:9;5228:22;5207:53;:::i;:::-;5197:63;;5152:118;5309:2;5335:53;5380:7;5371:6;5360:9;5356:22;5335:53;:::i;:::-;5325:63;;5280:118;4786:619;;;;;:::o;5411:91::-;5446:7;5490:5;5486:2;5475:21;5464:32;;5411:91;;;:::o;5508:112::-;5591:22;5607:5;5591:22;:::i;:::-;5586:3;5579:35;5508:112;;:::o;5626:115::-;5711:23;5728:5;5711:23;:::i;:::-;5706:3;5699:36;5626:115;;:::o;5747:541::-;5918:4;5956:3;5945:9;5941:19;5933:27;;5970:67;6034:1;6023:9;6019:17;6010:6;5970:67;:::i;:::-;6047:70;6113:2;6102:9;6098:18;6089:6;6047:70;:::i;:::-;6127:72;6195:2;6184:9;6180:18;6171:6;6127:72;:::i;:::-;6209;6277:2;6266:9;6262:18;6253:6;6209:72;:::i;:::-;5747:541;;;;;;;:::o;6294:474::-;6362:6;6370;6419:2;6407:9;6398:7;6394:23;6390:32;6387:119;;;6425:79;;:::i;:::-;6387:119;6545:1;6570:53;6615:7;6606:6;6595:9;6591:22;6570:53;:::i;:::-;6560:63;;6516:117;6672:2;6698:53;6743:7;6734:6;6723:9;6719:22;6698:53;:::i;:::-;6688:63;;6643:118;6294:474;;;;;:::o;6774:222::-;6867:4;6905:2;6894:9;6890:18;6882:26;;6918:71;6986:1;6975:9;6971:17;6962:6;6918:71;:::i;:::-;6774:222;;;;:::o;7002:117::-;7111:1;7108;7101:12;7125:102;7166:6;7217:2;7213:7;7208:2;7201:5;7197:14;7193:28;7183:38;;7125:102;;;:::o;7233:180::-;7281:77;7278:1;7271:88;7378:4;7375:1;7368:15;7402:4;7399:1;7392:15;7419:281;7502:27;7524:4;7502:27;:::i;:::-;7494:6;7490:40;7632:6;7620:10;7617:22;7596:18;7584:10;7581:34;7578:62;7575:88;;;7643:18;;:::i;:::-;7575:88;7683:10;7679:2;7672:22;7462:238;7419:281;;:::o;7706:129::-;7740:6;7767:20;;:::i;:::-;7757:30;;7796:33;7824:4;7816:6;7796:33;:::i;:::-;7706:129;;;:::o;7841:311::-;7918:4;8008:18;8000:6;7997:30;7994:56;;;8030:18;;:::i;:::-;7994:56;8080:4;8072:6;8068:17;8060:25;;8140:4;8134;8130:15;8122:23;;7841:311;;;:::o;8158:117::-;8267:1;8264;8257:12;8298:710;8394:5;8419:81;8435:64;8492:6;8435:64;:::i;:::-;8419:81;:::i;:::-;8410:90;;8520:5;8549:6;8542:5;8535:21;8583:4;8576:5;8572:16;8565:23;;8636:4;8628:6;8624:17;8616:6;8612:30;8665:3;8657:6;8654:15;8651:122;;;8684:79;;:::i;:::-;8651:122;8799:6;8782:220;8816:6;8811:3;8808:15;8782:220;;;8891:3;8920:37;8953:3;8941:10;8920:37;:::i;:::-;8915:3;8908:50;8987:4;8982:3;8978:14;8971:21;;8858:144;8842:4;8837:3;8833:14;8826:21;;8782:220;;;8786:21;8400:608;;8298:710;;;;;:::o;9031:370::-;9102:5;9151:3;9144:4;9136:6;9132:17;9128:27;9118:122;;9159:79;;:::i;:::-;9118:122;9276:6;9263:20;9301:94;9391:3;9383:6;9376:4;9368:6;9364:17;9301:94;:::i;:::-;9292:103;;9108:293;9031:370;;;;:::o;9407:539::-;9491:6;9540:2;9528:9;9519:7;9515:23;9511:32;9508:119;;;9546:79;;:::i;:::-;9508:119;9694:1;9683:9;9679:17;9666:31;9724:18;9716:6;9713:30;9710:117;;;9746:79;;:::i;:::-;9710:117;9851:78;9921:7;9912:6;9901:9;9897:22;9851:78;:::i;:::-;9841:88;;9637:302;9407:539;;;;:::o;9952:310::-;10028:4;10118:18;10110:6;10107:30;10104:56;;;10140:18;;:::i;:::-;10104:56;10190:4;10182:6;10178:17;10170:25;;10250:4;10244;10240:15;10232:23;;9952:310;;;:::o;10284:707::-;10379:5;10404:80;10420:63;10476:6;10420:63;:::i;:::-;10404:80;:::i;:::-;10395:89;;10504:5;10533:6;10526:5;10519:21;10567:4;10560:5;10556:16;10549:23;;10620:4;10612:6;10608:17;10600:6;10596:30;10649:3;10641:6;10638:15;10635:122;;;10668:79;;:::i;:::-;10635:122;10783:6;10766:219;10800:6;10795:3;10792:15;10766:219;;;10875:3;10904:36;10936:3;10924:10;10904:36;:::i;:::-;10899:3;10892:49;10970:4;10965:3;10961:14;10954:21;;10842:143;10826:4;10821:3;10817:14;10810:21;;10766:219;;;10770:21;10385:606;;10284:707;;;;;:::o;11013:368::-;11083:5;11132:3;11125:4;11117:6;11113:17;11109:27;11099:122;;11140:79;;:::i;:::-;11099:122;11257:6;11244:20;11282:93;11371:3;11363:6;11356:4;11348:6;11344:17;11282:93;:::i;:::-;11273:102;;11089:292;11013:368;;;;:::o;11387:311::-;11464:4;11554:18;11546:6;11543:30;11540:56;;;11576:18;;:::i;:::-;11540:56;11626:4;11618:6;11614:17;11606:25;;11686:4;11680;11676:15;11668:23;;11387:311;;;:::o;11721:710::-;11817:5;11842:81;11858:64;11915:6;11858:64;:::i;:::-;11842:81;:::i;:::-;11833:90;;11943:5;11972:6;11965:5;11958:21;12006:4;11999:5;11995:16;11988:23;;12059:4;12051:6;12047:17;12039:6;12035:30;12088:3;12080:6;12077:15;12074:122;;;12107:79;;:::i;:::-;12074:122;12222:6;12205:220;12239:6;12234:3;12231:15;12205:220;;;12314:3;12343:37;12376:3;12364:10;12343:37;:::i;:::-;12338:3;12331:50;12410:4;12405:3;12401:14;12394:21;;12281:144;12265:4;12260:3;12256:14;12249:21;;12205:220;;;12209:21;11823:608;;11721:710;;;;;:::o;12454:370::-;12525:5;12574:3;12567:4;12559:6;12555:17;12551:27;12541:122;;12582:79;;:::i;:::-;12541:122;12699:6;12686:20;12724:94;12814:3;12806:6;12799:4;12791:6;12787:17;12724:94;:::i;:::-;12715:103;;12531:293;12454:370;;;;:::o;12830:1247::-;12981:6;12989;12997;13046:2;13034:9;13025:7;13021:23;13017:32;13014:119;;;13052:79;;:::i;:::-;13014:119;13200:1;13189:9;13185:17;13172:31;13230:18;13222:6;13219:30;13216:117;;;13252:79;;:::i;:::-;13216:117;13357:78;13427:7;13418:6;13407:9;13403:22;13357:78;:::i;:::-;13347:88;;13143:302;13512:2;13501:9;13497:18;13484:32;13543:18;13535:6;13532:30;13529:117;;;13565:79;;:::i;:::-;13529:117;13670:77;13739:7;13730:6;13719:9;13715:22;13670:77;:::i;:::-;13660:87;;13455:302;13824:2;13813:9;13809:18;13796:32;13855:18;13847:6;13844:30;13841:117;;;13877:79;;:::i;:::-;13841:117;13982:78;14052:7;14043:6;14032:9;14028:22;13982:78;:::i;:::-;13972:88;;13767:303;12830:1247;;;;;:::o;14083:180::-;14131:77;14128:1;14121:88;14228:4;14225:1;14218:15;14252:4;14249:1;14242:15;14269:180;14317:77;14314:1;14307:88;14414:4;14411:1;14404:15;14438:4;14435:1;14428:15;14455:233;14494:3;14517:24;14535:5;14517:24;:::i;:::-;14508:33;;14563:66;14556:5;14553:77;14550:103;;14633:18;;:::i;:::-;14550:103;14680:1;14673:5;14669:13;14662:20;;14455:233;;;:::o;14694:194::-;14734:4;14754:20;14772:1;14754:20;:::i;:::-;14749:25;;14788:20;14806:1;14788:20;:::i;:::-;14783:25;;14832:1;14829;14825:9;14817:17;;14856:1;14850:4;14847:11;14844:37;;;14861:18;;:::i;:::-;14844:37;14694:194;;;;:::o;14894:191::-;14934:3;14953:20;14971:1;14953:20;:::i;:::-;14948:25;;14987:20;15005:1;14987:20;:::i;:::-;14982:25;;15030:1;15027;15023:9;15016:16;;15051:3;15048:1;15045:10;15042:36;;;15058:18;;:::i;:::-;15042:36;14894:191;;;;:::o;15091:275::-;15130:7;15153:19;15170:1;15153:19;:::i;:::-;15148:24;;15186:19;15203:1;15186:19;:::i;:::-;15181:24;;15240:1;15237;15233:9;15262:29;15279:11;15262:29;:::i;:::-;15251:40;;15323:11;15314:7;15311:24;15301:58;;15339:18;;:::i;:::-;15301:58;15138:228;15091:275;;;;:::o;15372:180::-;15420:77;15417:1;15410:88;15517:4;15514:1;15507:15;15541:4;15538:1;15531:15;15558:182;15597:1;15614:19;15631:1;15614:19;:::i;:::-;15609:24;;15647:19;15664:1;15647:19;:::i;:::-;15642:24;;15685:1;15675:35;;15690:18;;:::i;:::-;15675:35;15732:1;15729;15725:9;15720:14;;15558:182;;;;:::o;15746:60::-;15774:3;15795:5;15788:12;;15746:60;;;:::o;15812:142::-;15862:9;15895:53;15913:34;15922:24;15940:5;15922:24;:::i;:::-;15913:34;:::i;:::-;15895:53;:::i;:::-;15882:66;;15812:142;;;:::o;15960:126::-;16010:9;16043:37;16074:5;16043:37;:::i;:::-;16030:50;;15960:126;;;:::o;16092:146::-;16162:9;16195:37;16226:5;16195:37;:::i;:::-;16182:50;;16092:146;;;:::o;16244:171::-;16351:57;16402:5;16351:57;:::i;:::-;16346:3;16339:70;16244:171;;:::o;16421:118::-;16508:24;16526:5;16508:24;:::i;:::-;16503:3;16496:37;16421:118;;:::o;16545:482::-;16714:4;16752:2;16741:9;16737:18;16729:26;;16765:91;16853:1;16842:9;16838:17;16829:6;16765:91;:::i;:::-;16866:72;16934:2;16923:9;16919:18;16910:6;16866:72;:::i;:::-;16948;17016:2;17005:9;17001:18;16992:6;16948:72;:::i;:::-;16545:482;;;;;;:::o;17033:143::-;17090:5;17121:6;17115:13;17106:22;;17137:33;17164:5;17137:33;:::i;:::-;17033:143;;;;:::o;17182:118::-;17253:22;17269:5;17253:22;:::i;:::-;17246:5;17243:33;17233:61;;17290:1;17287;17280:12;17233:61;17182:118;:::o;17306:139::-;17361:5;17392:6;17386:13;17377:22;;17408:31;17433:5;17408:31;:::i;:::-;17306:139;;;;:::o;17451:816::-;17546:6;17554;17562;17570;17619:3;17607:9;17598:7;17594:23;17590:33;17587:120;;;17626:79;;:::i;:::-;17587:120;17746:1;17771:64;17827:7;17818:6;17807:9;17803:22;17771:64;:::i;:::-;17761:74;;17717:128;17884:2;17910:62;17964:7;17955:6;17944:9;17940:22;17910:62;:::i;:::-;17900:72;;17855:127;18021:2;18047:64;18103:7;18094:6;18083:9;18079:22;18047:64;:::i;:::-;18037:74;;17992:129;18160:2;18186:64;18242:7;18233:6;18222:9;18218:22;18186:64;:::i;:::-;18176:74;;18131:129;17451:816;;;;;;;:::o;18273:98::-;18324:6;18358:5;18352:12;18342:22;;18273:98;;;:::o;18377:168::-;18460:11;18494:6;18489:3;18482:19;18534:4;18529:3;18525:14;18510:29;;18377:168;;;;:::o;18551:246::-;18632:1;18642:113;18656:6;18653:1;18650:13;18642:113;;;18741:1;18736:3;18732:11;18726:18;18722:1;18717:3;18713:11;18706:39;18678:2;18675:1;18671:10;18666:15;;18642:113;;;18789:1;18780:6;18775:3;18771:16;18764:27;18613:184;18551:246;;;:::o;18803:373::-;18889:3;18917:38;18949:5;18917:38;:::i;:::-;18971:70;19034:6;19029:3;18971:70;:::i;:::-;18964:77;;19050:65;19108:6;19103:3;19096:4;19089:5;19085:16;19050:65;:::i;:::-;19140:29;19162:6;19140:29;:::i;:::-;19135:3;19131:39;19124:46;;18893:283;18803:373;;;;:::o;19182:680::-;19397:4;19435:3;19424:9;19420:19;19412:27;;19449:91;19537:1;19526:9;19522:17;19513:6;19449:91;:::i;:::-;19550:72;19618:2;19607:9;19603:18;19594:6;19550:72;:::i;:::-;19632;19700:2;19689:9;19685:18;19676:6;19632:72;:::i;:::-;19751:9;19745:4;19741:20;19736:2;19725:9;19721:18;19714:48;19779:76;19850:4;19841:6;19779:76;:::i;:::-;19771:84;;19182:680;;;;;;;:::o;19868:159::-;19951:9;19984:37;20015:5;19984:37;:::i;:::-;19971:50;;19868:159;;;:::o;20033:197::-;20153:70;20217:5;20153:70;:::i;:::-;20148:3;20141:83;20033:197;;:::o;20236:682::-;20454:4;20492:2;20481:9;20477:18;20469:26;;20505:104;20606:1;20595:9;20591:17;20582:6;20505:104;:::i;:::-;20656:9;20650:4;20646:20;20641:2;20630:9;20626:18;20619:48;20684:76;20755:4;20746:6;20684:76;:::i;:::-;20676:84;;20807:9;20801:4;20797:20;20792:2;20781:9;20777:18;20770:48;20835:76;20906:4;20897:6;20835:76;:::i;:::-;20827:84;;20236:682;;;;;;:::o;20924:117::-;21033:1;21030;21023:12;21047:307;21108:4;21198:18;21190:6;21187:30;21184:56;;;21220:18;;:::i;:::-;21184:56;21258:29;21280:6;21258:29;:::i;:::-;21250:37;;21342:4;21336;21332:15;21324:23;;21047:307;;;:::o;21360:432::-;21448:5;21473:65;21489:48;21530:6;21489:48;:::i;:::-;21473:65;:::i;:::-;21464:74;;21561:6;21554:5;21547:21;21599:4;21592:5;21588:16;21637:3;21628:6;21623:3;21619:16;21616:25;21613:112;;;21644:79;;:::i;:::-;21613:112;21734:52;21779:6;21774:3;21769;21734:52;:::i;:::-;21454:338;21360:432;;;;;:::o;21811:353::-;21877:5;21926:3;21919:4;21911:6;21907:17;21903:27;21893:122;;21934:79;;:::i;:::-;21893:122;22044:6;22038:13;22069:89;22154:3;22146:6;22139:4;22131:6;22127:17;22069:89;:::i;:::-;22060:98;;21883:281;21811:353;;;;:::o;22170:522::-;22249:6;22298:2;22286:9;22277:7;22273:23;22269:32;22266:119;;;22304:79;;:::i;:::-;22266:119;22445:1;22434:9;22430:17;22424:24;22475:18;22467:6;22464:30;22461:117;;;22497:79;;:::i;:::-;22461:117;22602:73;22667:7;22658:6;22647:9;22643:22;22602:73;:::i;:::-;22592:83;;22395:290;22170:522;;;;:::o;22698:143::-;22755:5;22786:6;22780:13;22771:22;;22802:33;22829:5;22802:33;:::i;:::-;22698:143;;;;:::o;22847:351::-;22917:6;22966:2;22954:9;22945:7;22941:23;22937:32;22934:119;;;22972:79;;:::i;:::-;22934:119;23092:1;23117:64;23173:7;23164:6;23153:9;23149:22;23117:64;:::i;:::-;23107:74;;23063:128;22847:351;;;;:::o;23204:161::-;23325:7;23354:5;23343:16;;23204:161;;;:::o;23371:77::-;23408:7;23437:5;23426:16;;23371:77;;;:::o;23454:92::-;23486:8;23533:5;23530:1;23526:13;23505:34;;23454:92;;;:::o;23552:314::-;23686:9;23719:141;23737:122;23750:108;23852:5;23750:108;:::i;:::-;23737:122;:::i;:::-;23719:141;:::i;:::-;23706:154;;23552:314;;;:::o;23872:299::-;24043:121;24158:5;24043:121;:::i;:::-;24038:3;24031:134;23872:299;;:::o;24177:390::-;24354:4;24392:2;24381:9;24377:18;24369:26;;24405:155;24557:1;24546:9;24542:17;24533:6;24405:155;:::i;:::-;24177:390;;;;:::o;24573:120::-;24634:7;24663:24;24681:5;24663:24;:::i;:::-;24652:35;;24573:120;;;:::o;24699:170::-;24796:48;24838:5;24796:48;:::i;:::-;24789:5;24786:59;24776:87;;24859:1;24856;24849:12;24776:87;24699:170;:::o;24875:191::-;24956:5;24987:6;24981:13;24972:22;;25003:57;25054:5;25003:57;:::i;:::-;24875:191;;;;:::o;25072:399::-;25166:6;25215:2;25203:9;25194:7;25190:23;25186:32;25183:119;;;25221:79;;:::i;:::-;25183:119;25341:1;25366:88;25446:7;25437:6;25426:9;25422:22;25366:88;:::i;:::-;25356:98;;25312:152;25072:399;;;;:::o;25477:180::-;25525:77;25522:1;25515:88;25622:4;25619:1;25612:15;25646:4;25643:1;25636:15"},"methodIdentifiers":{"getCurrentSessionData(address)":"53732469","getNewSessionNonce(address,address)":"92c2226e","getSessionData(address,address,uint256)":"8ff3849b","startSession(address,uint96,uint256)":"7fe70a27","startSessions(address[],uint96[],uint256[])":"f437a7a5","stopSession(address)":"b233bd05","stopSessions(address[])":"9afffbf9"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ArrayLengthNotMatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidFlowRate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSuperToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PreviousSessionStillLive\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SessionAlreadyEnded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SessionNotStarted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"getCurrentSessionData\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"}],\"name\":\"getNewSessionNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_nonce\",\"type\":\"uint256\"}],\"name\":\"getSessionData\",\"outputs\":[{\"internalType\":\"int96\",\"name\":\"\",\"type\":\"int96\"},{\"internalType\":\"uint96\",\"name\":\"\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"_flowRate\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"_tag\",\"type\":\"uint256\"}],\"name\":\"startSession\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_superTokens\",\"type\":\"address[]\"},{\"internalType\":\"uint96[]\",\"name\":\"_flowRates\",\"type\":\"uint96[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_tags\",\"type\":\"uint256[]\"}],\"name\":\"startSessions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"}],\"name\":\"stopSession\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_superTokens\",\"type\":\"address[]\"}],\"name\":\"stopSessions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/facets/core/Session.sol\":\"Session\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"@openzeppelin/contracts/token/ERC777/IERC777.sol\":{\"keccak256\":\"0x385a7061f1436b079d44c140dee9387d5313e94874ff9ee877dc0085c981ac3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c3fe22bb0d9527356e11f267f9187134de4d4ed1ff77468b4d73e3238697b96\",\"dweb:/ipfs/Qmc8caJctgxbzXEpxRogQMR2bnBk5U67hA7kKbUEG2PUXV\"]},\"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol\":{\"keccak256\":\"0x1b588d76f3addfeb2f368ec534fbd8da6120c8ba3c08e95f410a9cc2204faf79\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://74e51ec8a8d50ad9c6c047a2548de4aac9e6da23f65b2d8a74e89665d26c527f\",\"dweb:/ipfs/QmS26ukRAwj9ZSHmRSbjmpmdA6EaZHAK6JvE38LkqjRYaP\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol\":{\"keccak256\":\"0xb68e122faba133422f4cbdd7e15fc913073dfa2c3682c18d6449b121e67d1104\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://da0611fda964b8356d38cb006133865b58adc6e11d3817e27daf20b02ad6880f\",\"dweb:/ipfs/QmeLbak3yiUfkGvxEZzmS4ndDwDfxtZNeKiA86G3WxzjyD\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IInstantDistributionAgreementV1.sol\":{\"keccak256\":\"0x7b088dfa11a00d2b1e6e0938978364a6918015b052a4bf3ffcc67db9b3182370\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://2437f6ea2d8c8de7613aef5de4dcf3530c2beb801f7d5f3e21ac617e73f8882b\",\"dweb:/ipfs/QmVBtqXYV25fQZ9P6xokBzgFnHCBthJSZdFo9quBY169fd\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol\":{\"keccak256\":\"0x80254971aff00fc006d70b85b7bc830bb28096789e72ff3f03aa22cc7810eb0c\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://840f9d959abfbf3919db3dca35336e360b2bbd54e677439a545c7c4f163f6d70\",\"dweb:/ipfs/QmR4CRq7dpYR4NuCSASkNrcnbSScRX8MaEvDs8L7v3xDyr\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol\":{\"keccak256\":\"0x9b4fab6dcac1337f78e04d67d8c2b48b1de8bd4bbf14b475840f9dbda7b8f21e\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://cc2f3629ad0cb46bd4f595880591ad6c9d75a82d920cb9355e462fbf8022c820\",\"dweb:/ipfs/QmXMovxK4qpWT4yffXxUVjkMNwxEfS6mtn39mLSmjaxEdW\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperApp.sol\":{\"keccak256\":\"0x6cc4b0724d977190c7441dfc3be6c6e48b43b555c3370af32ef5b6600f15f53f\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://3e89c944642772a42429f21a11017b57deb98a9198f8e4f8749f00aaee71299e\",\"dweb:/ipfs/QmaSv9GvqikcGHJ3tcwATDHSpQw6mfnHPDtcfqcZSS7LF6\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.sol\":{\"keccak256\":\"0x6860f0bf69dcc1d1ec39eefb43e0cd18b276b48ebe9efd53450e09cd2f997ab2\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://6421f80f2ff7818bd235b7bf4b911cc40edcb598507a246b4de0fa0191a9e1aa\",\"dweb:/ipfs/QmWxktXMjYhi1zt52D3JXNcxCFesXu8kQoSCJQ3j88apM3\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperTokenFactory.sol\":{\"keccak256\":\"0xe2525ef2906504e2f61775ed91bbebeea2f4e2e3fa42ce190561acf6a01187ff\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://7a9859eb432321a65cd15ca988a13776e1c31df44b4cf25f95fa04b54a8a8625\",\"dweb:/ipfs/QmQVJQoeoWemptZhbRgWJZWwMTiNtxVsc1FYmGdtdTfqcL\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol\":{\"keccak256\":\"0xab9dab941f99d0f0ef6125fb6eafde03378d7c3e94e613dd12fb7fbf594c3373\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://928c6ef915dee69058d4cfcb9f2344d4fc78d9763b47b17e5c03fbff64ba3c64\",\"dweb:/ipfs/Qmdk733ZHceatz3qbuodLCCS9TUspJJtXLoX6vWwMvrPDE\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance.sol\":{\"keccak256\":\"0x90a9259d0f0bb6b1bb6d48f051277eb75df96a9fbe684a203a3a468ad19318e2\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://9c8162a2d07ffe768920fef55292684149173afefbfba76b8fca007e55092229\",\"dweb:/ipfs/QmducLNwrzeUXEpBjUTSMu7sfmQEwVhcYXApe4brc1zQ6V\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol\":{\"keccak256\":\"0x9cad3866982902ea88df0874a563d2e4aeba5a5bcc6289c30cccf9b4099d2fb6\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://e8fd960b259331f204c7cb7dcd32b09d68f4294e3b872fad00ad467609c3ef72\",\"dweb:/ipfs/QmeZFEvsDunXQGPbXFfN5AvfKM5am1FY8Xv6e3c4tNKvgY\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo.sol\":{\"keccak256\":\"0x55be78ffb441c782f612b153d7d9049e3f0dbfd412c1f7df29c896b972b2985f\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://a223c68e38a6c9b1e363e525911bc7eda44ea517865ae53bd0d34ff858cc02ae\",\"dweb:/ipfs/QmVruGehibG6Emr2A6JHwUnhd4NzsGkE24cbGqnDpEvrKh\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.sol\":{\"keccak256\":\"0x7456cd394cc905aae7cdbd4601ce1c296c768c13c28e66efbb913cc070bad3e4\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://5a6589b428b724721ba5b4dd196c8f366a6e694ef313add093f29af64496c042\",\"dweb:/ipfs/QmSMgV6y8L6pyyzDz6kKmafVwujNWcjTqutpCBxe4uNRqg\"]},\"contracts/facets/core/Session.sol\":{\"keccak256\":\"0xef5bdf1f9526782dc8bd43123c8a25a6fb88371e6f967ad2e03259dc7730b0fe\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://031a243b28d59a7ad36daa0f625d695e0f2c8e898a3b2991b0aca0fc9b268550\",\"dweb:/ipfs/QmUMd9W3ynRkhFuPSRpKvdHwoo8GDSkwCNcEXxmnejZHva\"]},\"contracts/interfaces/core/ISession.sol\":{\"keccak256\":\"0xc618e9cd6023ef8744b2eb6211ed3465cda70c874f1297b526d00dbfcbbb70b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be1075605f777814f2c586f36c79822618ec4153c94d5dcf7ea547cdbe019414\",\"dweb:/ipfs/QmdUSV8kSgutygg2kNcn5xZfyowH7FdJnSfurNGFBZGW6A\"]},\"contracts/libraries/core/LibControl.sol\":{\"keccak256\":\"0x791dd1dc0c61948e1b1a46d190f02a041abdf6e2db26f1b436b06d8116381103\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://ec9343651044d62055789d04d464545afed31f82268dfd17703763a54441e0ec\",\"dweb:/ipfs/QmWKFYUATgubBYLZCRghkenZbjJHQwdQ8ymZVK5xBFm2QJ\"]},\"contracts/libraries/core/LibFlow.sol\":{\"keccak256\":\"0xf07903d54504fd374edbd492a084b92f9b9bd6e39846ecfcb743d9ce3031e2a7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://94b205c755a9c96ec4d8f3631cf24cb255d28b3abc65c7b2580f50a0f3c23f1c\",\"dweb:/ipfs/QmVsrQ3WzkQ9PvckGaBhd2ZDMV56wsPPZcRCGi5Qv9UXmc\"]},\"contracts/libraries/core/LibSession.sol\":{\"keccak256\":\"0xce48bf158372890e3075e07cab5747d373a3a6cf219ba85bef08691a49b96303\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7b8b013d5426d0ba0f4c9657e0ddc06ee0cecbf91679f4cb06a9bf2214cce17e\",\"dweb:/ipfs/QmXTPcBsdSanj4RM3xPrqNNMXk3eG8H7h47zSXj4ZVwTC9\"]},\"contracts/libraries/utils/IterableMappingBPS.sol\":{\"keccak256\":\"0xb6ab47a53267822918fdd13e4df79bfc1e8b2bbf921c80bbc4ad2e706e3539ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://092d19ac7ce0d7ada8fbb01d3af6822d6d8260fe8b8248e54b906a9edf381dd2\",\"dweb:/ipfs/QmZ8LZ72a2sSNfwm4Fpz54ZHVcjTe1dDy4ZrBhbNztZ1Bg\"]}},\"version\":1}"}},"contracts/facets/utils/AccessControl.sol":{"AccessControl":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"inputs":[],"name":"getDefaultAdminRole","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"_role","type":"string"}],"name":"getRole","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_role","type":"bytes32"},{"internalType":"address","name":"_account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_role","type":"bytes32"},{"internalType":"address","name":"_account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_role","type":"bytes32"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_role","type":"bytes32"},{"internalType":"address","name":"_account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50610e0f806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80636e9067fb1161005b5780636e9067fb146100ec5780638bb9c5bf1461011c57806391d1485414610138578063d547741f146101685761007d565b8063248a9ca3146100825780632f2ff15d146100b257806352a9c8d7146100ce575b600080fd5b61009c600480360381019061009791906107fd565b610184565b6040516100a99190610839565b60405180910390f35b6100cc60048036038101906100c791906108b2565b610196565b005b6100d66101b5565b6040516100e39190610839565b60405180910390f35b61010660048036038101906101019190610a38565b6101c0565b6040516101139190610839565b60405180910390f35b610136600480360381019061013191906107fd565b6101f0565b005b610152600480360381019061014d91906108b2565b6101fd565b60405161015f9190610a9c565b60405180910390f35b610182600480360381019061017d91906108b2565b610211565b005b600061018f82610230565b9050919050565b6101a76101a283610230565b610259565b6101b18282610265565b5050565b60008060001b905090565b6000816040516020016101d39190610b36565b604051602081830303815290604052805190602001209050919050565b6101fa8133610348565b50565b6000610209838361042c565b905092915050565b61022261021d83610230565b610259565b61022c8282610348565b5050565b600061023a6104a0565b6000016000838152602001908152602001600020600101549050919050565b610262816104cd565b50565b61026f828261042c565b61034457600161027d6104a0565b600001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b610352828261042c565b156104285760006103616104a0565b600001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b60006104366104a0565b600001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000807f4cd15452b25e815d3f9d1a3c7edd985a178edf5eb3461a1acbf855517423d69490508091505090565b6104d781336104da565b50565b6104e4828261042c565b610573576105098173ffffffffffffffffffffffffffffffffffffffff166014610577565b6105178360001c6020610577565b604051602001610528929190610c2c565b6040516020818303038152906040526040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161056a9190610b36565b60405180910390fd5b5050565b60606000600283600261058a9190610c9f565b6105949190610ce1565b67ffffffffffffffff8111156105ad576105ac61090d565b5b6040519080825280601f01601f1916602001820160405280156105df5781602001600182028036833780820191505090505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061061757610616610d15565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061067b5761067a610d15565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026106bb9190610c9f565b6106c59190610ce1565b90505b6001811115610765577f3031323334353637383961626364656600000000000000000000000000000000600f86166010811061070757610706610d15565b5b1a60f81b82828151811061071e5761071d610d15565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c94508061075e90610d44565b90506106c8565b50600084146107a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a090610db9565b60405180910390fd5b8091505092915050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6107da816107c7565b81146107e557600080fd5b50565b6000813590506107f7816107d1565b92915050565b600060208284031215610813576108126107bd565b5b6000610821848285016107e8565b91505092915050565b610833816107c7565b82525050565b600060208201905061084e600083018461082a565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061087f82610854565b9050919050565b61088f81610874565b811461089a57600080fd5b50565b6000813590506108ac81610886565b92915050565b600080604083850312156108c9576108c86107bd565b5b60006108d7858286016107e8565b92505060206108e88582860161089d565b9150509250929050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610945826108fc565b810181811067ffffffffffffffff821117156109645761096361090d565b5b80604052505050565b60006109776107b3565b9050610983828261093c565b919050565b600067ffffffffffffffff8211156109a3576109a261090d565b5b6109ac826108fc565b9050602081019050919050565b82818337600083830152505050565b60006109db6109d684610988565b61096d565b9050828152602081018484840111156109f7576109f66108f7565b5b610a028482856109b9565b509392505050565b600082601f830112610a1f57610a1e6108f2565b5b8135610a2f8482602086016109c8565b91505092915050565b600060208284031215610a4e57610a4d6107bd565b5b600082013567ffffffffffffffff811115610a6c57610a6b6107c2565b5b610a7884828501610a0a565b91505092915050565b60008115159050919050565b610a9681610a81565b82525050565b6000602082019050610ab16000830184610a8d565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610af1578082015181840152602081019050610ad6565b60008484015250505050565b6000610b0882610ab7565b610b128185610ac2565b9350610b22818560208601610ad3565b610b2b816108fc565b840191505092915050565b60006020820190508181036000830152610b508184610afd565b905092915050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000610b99601783610b58565b9150610ba482610b63565b601782019050919050565b6000610bba82610ab7565b610bc48185610b58565b9350610bd4818560208601610ad3565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000610c16601183610b58565b9150610c2182610be0565b601182019050919050565b6000610c3782610b8c565b9150610c438285610baf565b9150610c4e82610c09565b9150610c5a8284610baf565b91508190509392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610caa82610c66565b9150610cb583610c66565b9250828202610cc381610c66565b91508282048414831517610cda57610cd9610c70565b5b5092915050565b6000610cec82610c66565b9150610cf783610c66565b9250828201905080821115610d0f57610d0e610c70565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000610d4f82610c66565b915060008203610d6257610d61610c70565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b6000610da3602083610ac2565b9150610dae82610d6d565b602082019050919050565b60006020820190508181036000830152610dd281610d96565b905091905056fea264697066735822122042ac622ea83961c316d077ee2232dd2ad760e3427df26bce6fe111d4109a0f0e64736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE0F DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6E9067FB GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x6E9067FB EQ PUSH2 0xEC JUMPI DUP1 PUSH4 0x8BB9C5BF EQ PUSH2 0x11C JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x138 JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x168 JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0xB2 JUMPI DUP1 PUSH4 0x52A9C8D7 EQ PUSH2 0xCE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x97 SWAP2 SWAP1 PUSH2 0x7FD JUMP JUMPDEST PUSH2 0x184 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA9 SWAP2 SWAP1 PUSH2 0x839 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xCC PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xC7 SWAP2 SWAP1 PUSH2 0x8B2 JUMP JUMPDEST PUSH2 0x196 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xD6 PUSH2 0x1B5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE3 SWAP2 SWAP1 PUSH2 0x839 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x106 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x101 SWAP2 SWAP1 PUSH2 0xA38 JUMP JUMPDEST PUSH2 0x1C0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x113 SWAP2 SWAP1 PUSH2 0x839 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x136 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x131 SWAP2 SWAP1 PUSH2 0x7FD JUMP JUMPDEST PUSH2 0x1F0 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x152 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x14D SWAP2 SWAP1 PUSH2 0x8B2 JUMP JUMPDEST PUSH2 0x1FD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x15F SWAP2 SWAP1 PUSH2 0xA9C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x182 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x17D SWAP2 SWAP1 PUSH2 0x8B2 JUMP JUMPDEST PUSH2 0x211 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH2 0x18F DUP3 PUSH2 0x230 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1A7 PUSH2 0x1A2 DUP4 PUSH2 0x230 JUMP JUMPDEST PUSH2 0x259 JUMP JUMPDEST PUSH2 0x1B1 DUP3 DUP3 PUSH2 0x265 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SHL SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1D3 SWAP2 SWAP1 PUSH2 0xB36 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1FA DUP2 CALLER PUSH2 0x348 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x209 DUP4 DUP4 PUSH2 0x42C JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x222 PUSH2 0x21D DUP4 PUSH2 0x230 JUMP JUMPDEST PUSH2 0x259 JUMP JUMPDEST PUSH2 0x22C DUP3 DUP3 PUSH2 0x348 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x23A PUSH2 0x4A0 JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x262 DUP2 PUSH2 0x4CD JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x26F DUP3 DUP3 PUSH2 0x42C JUMP JUMPDEST PUSH2 0x344 JUMPI PUSH1 0x1 PUSH2 0x27D PUSH2 0x4A0 JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x352 DUP3 DUP3 PUSH2 0x42C JUMP JUMPDEST ISZERO PUSH2 0x428 JUMPI PUSH1 0x0 PUSH2 0x361 PUSH2 0x4A0 JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x436 PUSH2 0x4A0 JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x4CD15452B25E815D3F9D1A3C7EDD985A178EDF5EB3461A1ACBF855517423D694 SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH2 0x4D7 DUP2 CALLER PUSH2 0x4DA JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x4E4 DUP3 DUP3 PUSH2 0x42C JUMP JUMPDEST PUSH2 0x573 JUMPI PUSH2 0x509 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x14 PUSH2 0x577 JUMP JUMPDEST PUSH2 0x517 DUP4 PUSH1 0x0 SHR PUSH1 0x20 PUSH2 0x577 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x528 SWAP3 SWAP2 SWAP1 PUSH2 0xC2C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56A SWAP2 SWAP1 PUSH2 0xB36 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x2 DUP4 PUSH1 0x2 PUSH2 0x58A SWAP2 SWAP1 PUSH2 0xC9F JUMP JUMPDEST PUSH2 0x594 SWAP2 SWAP1 PUSH2 0xCE1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5AD JUMPI PUSH2 0x5AC PUSH2 0x90D JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x5DF JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x617 JUMPI PUSH2 0x616 PUSH2 0xD15 JUMP JUMPDEST JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH32 0x7800000000000000000000000000000000000000000000000000000000000000 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x67B JUMPI PUSH2 0x67A PUSH2 0xD15 JUMP JUMPDEST JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x0 PUSH1 0x1 DUP5 PUSH1 0x2 PUSH2 0x6BB SWAP2 SWAP1 PUSH2 0xC9F JUMP JUMPDEST PUSH2 0x6C5 SWAP2 SWAP1 PUSH2 0xCE1 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x765 JUMPI PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 PUSH1 0xF DUP7 AND PUSH1 0x10 DUP2 LT PUSH2 0x707 JUMPI PUSH2 0x706 PUSH2 0xD15 JUMP JUMPDEST JUMPDEST BYTE PUSH1 0xF8 SHL DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x71E JUMPI PUSH2 0x71D PUSH2 0xD15 JUMP JUMPDEST JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x4 DUP6 SWAP1 SHR SWAP5 POP DUP1 PUSH2 0x75E SWAP1 PUSH2 0xD44 JUMP JUMPDEST SWAP1 POP PUSH2 0x6C8 JUMP JUMPDEST POP PUSH1 0x0 DUP5 EQ PUSH2 0x7A9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7A0 SWAP1 PUSH2 0xDB9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x7DA DUP2 PUSH2 0x7C7 JUMP JUMPDEST DUP2 EQ PUSH2 0x7E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x7F7 DUP2 PUSH2 0x7D1 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x813 JUMPI PUSH2 0x812 PUSH2 0x7BD JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x821 DUP5 DUP3 DUP6 ADD PUSH2 0x7E8 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x833 DUP2 PUSH2 0x7C7 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x84E PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x82A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x87F DUP3 PUSH2 0x854 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x88F DUP2 PUSH2 0x874 JUMP JUMPDEST DUP2 EQ PUSH2 0x89A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x8AC DUP2 PUSH2 0x886 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x8C9 JUMPI PUSH2 0x8C8 PUSH2 0x7BD JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x8D7 DUP6 DUP3 DUP7 ADD PUSH2 0x7E8 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x8E8 DUP6 DUP3 DUP7 ADD PUSH2 0x89D JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x945 DUP3 PUSH2 0x8FC JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x964 JUMPI PUSH2 0x963 PUSH2 0x90D JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x977 PUSH2 0x7B3 JUMP JUMPDEST SWAP1 POP PUSH2 0x983 DUP3 DUP3 PUSH2 0x93C JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x9A3 JUMPI PUSH2 0x9A2 PUSH2 0x90D JUMP JUMPDEST JUMPDEST PUSH2 0x9AC DUP3 PUSH2 0x8FC JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9DB PUSH2 0x9D6 DUP5 PUSH2 0x988 JUMP JUMPDEST PUSH2 0x96D JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x9F7 JUMPI PUSH2 0x9F6 PUSH2 0x8F7 JUMP JUMPDEST JUMPDEST PUSH2 0xA02 DUP5 DUP3 DUP6 PUSH2 0x9B9 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xA1F JUMPI PUSH2 0xA1E PUSH2 0x8F2 JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0xA2F DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x9C8 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA4E JUMPI PUSH2 0xA4D PUSH2 0x7BD JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xA6C JUMPI PUSH2 0xA6B PUSH2 0x7C2 JUMP JUMPDEST JUMPDEST PUSH2 0xA78 DUP5 DUP3 DUP6 ADD PUSH2 0xA0A JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xA96 DUP2 PUSH2 0xA81 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xAB1 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xA8D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xAF1 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xAD6 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB08 DUP3 PUSH2 0xAB7 JUMP JUMPDEST PUSH2 0xB12 DUP2 DUP6 PUSH2 0xAC2 JUMP JUMPDEST SWAP4 POP PUSH2 0xB22 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xAD3 JUMP JUMPDEST PUSH2 0xB2B DUP2 PUSH2 0x8FC JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xB50 DUP2 DUP5 PUSH2 0xAFD JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x416363657373436F6E74726F6C3A206163636F756E7420000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB99 PUSH1 0x17 DUP4 PUSH2 0xB58 JUMP JUMPDEST SWAP2 POP PUSH2 0xBA4 DUP3 PUSH2 0xB63 JUMP JUMPDEST PUSH1 0x17 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBBA DUP3 PUSH2 0xAB7 JUMP JUMPDEST PUSH2 0xBC4 DUP2 DUP6 PUSH2 0xB58 JUMP JUMPDEST SWAP4 POP PUSH2 0xBD4 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xAD3 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x206973206D697373696E6720726F6C6520000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC16 PUSH1 0x11 DUP4 PUSH2 0xB58 JUMP JUMPDEST SWAP2 POP PUSH2 0xC21 DUP3 PUSH2 0xBE0 JUMP JUMPDEST PUSH1 0x11 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC37 DUP3 PUSH2 0xB8C JUMP JUMPDEST SWAP2 POP PUSH2 0xC43 DUP3 DUP6 PUSH2 0xBAF JUMP JUMPDEST SWAP2 POP PUSH2 0xC4E DUP3 PUSH2 0xC09 JUMP JUMPDEST SWAP2 POP PUSH2 0xC5A DUP3 DUP5 PUSH2 0xBAF JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xCAA DUP3 PUSH2 0xC66 JUMP JUMPDEST SWAP2 POP PUSH2 0xCB5 DUP4 PUSH2 0xC66 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 MUL PUSH2 0xCC3 DUP2 PUSH2 0xC66 JUMP JUMPDEST SWAP2 POP DUP3 DUP3 DIV DUP5 EQ DUP4 ISZERO OR PUSH2 0xCDA JUMPI PUSH2 0xCD9 PUSH2 0xC70 JUMP JUMPDEST JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCEC DUP3 PUSH2 0xC66 JUMP JUMPDEST SWAP2 POP PUSH2 0xCF7 DUP4 PUSH2 0xC66 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0xD0F JUMPI PUSH2 0xD0E PUSH2 0xC70 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xD4F DUP3 PUSH2 0xC66 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 DUP3 SUB PUSH2 0xD62 JUMPI PUSH2 0xD61 PUSH2 0xC70 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 SUB SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x537472696E67733A20686578206C656E67746820696E73756666696369656E74 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDA3 PUSH1 0x20 DUP4 PUSH2 0xAC2 JUMP JUMPDEST SWAP2 POP PUSH2 0xDAE DUP3 PUSH2 0xD6D JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xDD2 DUP2 PUSH2 0xD96 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 TIMESTAMP 0xAC PUSH3 0x2EA839 PUSH2 0xC316 0xD0 PUSH24 0xEE2232DD2AD760E3427DF26BCE6FE111D4109A0F0E64736F PUSH13 0x63430008120033000000000000 ","sourceMap":"209:1607:29:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_checkRole_15290":{"entryPoint":1229,"id":15290,"parameterSlots":1,"returnSlots":0},"@_checkRole_15332":{"entryPoint":1242,"id":15332,"parameterSlots":2,"returnSlots":0},"@_getRoleAdmin_15347":{"entryPoint":560,"id":15347,"parameterSlots":1,"returnSlots":1},"@_grantRole_15425":{"entryPoint":613,"id":15425,"parameterSlots":2,"returnSlots":0},"@_hasRole_15278":{"entryPoint":1068,"id":15278,"parameterSlots":2,"returnSlots":1},"@_requireOnlyRole_15259":{"entryPoint":601,"id":15259,"parameterSlots":1,"returnSlots":0},"@_revokeRole_15465":{"entryPoint":840,"id":15465,"parameterSlots":2,"returnSlots":0},"@_storageAccessControl_15249":{"entryPoint":1184,"id":15249,"parameterSlots":0,"returnSlots":1},"@getDefaultAdminRole_10926":{"entryPoint":437,"id":10926,"parameterSlots":0,"returnSlots":1},"@getRoleAdmin_10970":{"entryPoint":388,"id":10970,"parameterSlots":1,"returnSlots":1},"@getRole_10941":{"entryPoint":448,"id":10941,"parameterSlots":1,"returnSlots":1},"@grantRole_10993":{"entryPoint":406,"id":10993,"parameterSlots":2,"returnSlots":0},"@hasRole_10957":{"entryPoint":509,"id":10957,"parameterSlots":2,"returnSlots":1},"@renounceRole_11029":{"entryPoint":496,"id":11029,"parameterSlots":1,"returnSlots":0},"@revokeRole_11016":{"entryPoint":529,"id":11016,"parameterSlots":2,"returnSlots":0},"@toHexString_1109":{"entryPoint":1399,"id":1109,"parameterSlots":2,"returnSlots":1},"abi_decode_available_length_t_string_memory_ptr":{"entryPoint":2504,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_t_address":{"entryPoint":2205,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes32":{"entryPoint":2024,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_string_memory_ptr":{"entryPoint":2570,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32":{"entryPoint":2045,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes32t_address":{"entryPoint":2226,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_string_memory_ptr":{"entryPoint":2616,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_bool_to_t_bool_fromStack":{"entryPoint":2701,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bytes32_to_t_bytes32_fromStack":{"entryPoint":2090,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack":{"entryPoint":2813,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":2991,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2_to_t_string_memory_ptr_fromStack":{"entryPoint":3478,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_to_t_string_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":2956,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_to_t_string_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":3081,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_packed_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_t_string_memory_ptr_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":3116,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":2716,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed":{"entryPoint":2105,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":2870,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":3513,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory":{"entryPoint":2413,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":1971,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_t_string_memory_ptr":{"entryPoint":2440,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_string_memory_ptr":{"entryPoint":2743,"id":null,"parameterSlots":1,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_fromStack":{"entryPoint":2754,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":2904,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":3297,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_t_uint256":{"entryPoint":3231,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_t_address":{"entryPoint":2164,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_bool":{"entryPoint":2689,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_bytes32":{"entryPoint":1991,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint160":{"entryPoint":2132,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint256":{"entryPoint":3174,"id":null,"parameterSlots":1,"returnSlots":1},"copy_calldata_to_memory_with_cleanup":{"entryPoint":2489,"id":null,"parameterSlots":3,"returnSlots":0},"copy_memory_to_memory_with_cleanup":{"entryPoint":2771,"id":null,"parameterSlots":3,"returnSlots":0},"decrement_t_uint256":{"entryPoint":3396,"id":null,"parameterSlots":1,"returnSlots":1},"finalize_allocation":{"entryPoint":2364,"id":null,"parameterSlots":2,"returnSlots":0},"panic_error_0x11":{"entryPoint":3184,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":3349,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":2317,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":2290,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae":{"entryPoint":2295,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":1986,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":1981,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of_32":{"entryPoint":2300,"id":null,"parameterSlots":1,"returnSlots":1},"store_literal_in_memory_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2":{"entryPoint":3437,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874":{"entryPoint":2915,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69":{"entryPoint":3040,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_address":{"entryPoint":2182,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_bytes32":{"entryPoint":2001,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:11677:61","statements":[{"body":{"nodeType":"YulBlock","src":"47:35:61","statements":[{"nodeType":"YulAssignment","src":"57:19:61","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"73:2:61","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"67:5:61"},"nodeType":"YulFunctionCall","src":"67:9:61"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"57:6:61"}]}]},"name":"allocate_unbounded","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"40:6:61","type":""}],"src":"7:75:61"},{"body":{"nodeType":"YulBlock","src":"177:28:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"194:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"197:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"187:6:61"},"nodeType":"YulFunctionCall","src":"187:12:61"},"nodeType":"YulExpressionStatement","src":"187:12:61"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulFunctionDefinition","src":"88:117:61"},{"body":{"nodeType":"YulBlock","src":"300:28:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"317:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"320:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"310:6:61"},"nodeType":"YulFunctionCall","src":"310:12:61"},"nodeType":"YulExpressionStatement","src":"310:12:61"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulFunctionDefinition","src":"211:117:61"},{"body":{"nodeType":"YulBlock","src":"379:32:61","statements":[{"nodeType":"YulAssignment","src":"389:16:61","value":{"name":"value","nodeType":"YulIdentifier","src":"400:5:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"389:7:61"}]}]},"name":"cleanup_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"361:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"371:7:61","type":""}],"src":"334:77:61"},{"body":{"nodeType":"YulBlock","src":"460:79:61","statements":[{"body":{"nodeType":"YulBlock","src":"517:16:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"526:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"529:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"519:6:61"},"nodeType":"YulFunctionCall","src":"519:12:61"},"nodeType":"YulExpressionStatement","src":"519:12:61"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"483:5:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"508:5:61"}],"functionName":{"name":"cleanup_t_bytes32","nodeType":"YulIdentifier","src":"490:17:61"},"nodeType":"YulFunctionCall","src":"490:24:61"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"480:2:61"},"nodeType":"YulFunctionCall","src":"480:35:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"473:6:61"},"nodeType":"YulFunctionCall","src":"473:43:61"},"nodeType":"YulIf","src":"470:63:61"}]},"name":"validator_revert_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"453:5:61","type":""}],"src":"417:122:61"},{"body":{"nodeType":"YulBlock","src":"597:87:61","statements":[{"nodeType":"YulAssignment","src":"607:29:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"629:6:61"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"616:12:61"},"nodeType":"YulFunctionCall","src":"616:20:61"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"607:5:61"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"672:5:61"}],"functionName":{"name":"validator_revert_t_bytes32","nodeType":"YulIdentifier","src":"645:26:61"},"nodeType":"YulFunctionCall","src":"645:33:61"},"nodeType":"YulExpressionStatement","src":"645:33:61"}]},"name":"abi_decode_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"575:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"583:3:61","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"591:5:61","type":""}],"src":"545:139:61"},{"body":{"nodeType":"YulBlock","src":"756:263:61","statements":[{"body":{"nodeType":"YulBlock","src":"802:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"804:77:61"},"nodeType":"YulFunctionCall","src":"804:79:61"},"nodeType":"YulExpressionStatement","src":"804:79:61"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"777:7:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"786:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"773:3:61"},"nodeType":"YulFunctionCall","src":"773:23:61"},{"kind":"number","nodeType":"YulLiteral","src":"798:2:61","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"769:3:61"},"nodeType":"YulFunctionCall","src":"769:32:61"},"nodeType":"YulIf","src":"766:119:61"},{"nodeType":"YulBlock","src":"895:117:61","statements":[{"nodeType":"YulVariableDeclaration","src":"910:15:61","value":{"kind":"number","nodeType":"YulLiteral","src":"924:1:61","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"914:6:61","type":""}]},{"nodeType":"YulAssignment","src":"939:63:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"974:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"985:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"970:3:61"},"nodeType":"YulFunctionCall","src":"970:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"994:7:61"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"949:20:61"},"nodeType":"YulFunctionCall","src":"949:53:61"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"939:6:61"}]}]}]},"name":"abi_decode_tuple_t_bytes32","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"726:9:61","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"737:7:61","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"749:6:61","type":""}],"src":"690:329:61"},{"body":{"nodeType":"YulBlock","src":"1090:53:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1107:3:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1130:5:61"}],"functionName":{"name":"cleanup_t_bytes32","nodeType":"YulIdentifier","src":"1112:17:61"},"nodeType":"YulFunctionCall","src":"1112:24:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1100:6:61"},"nodeType":"YulFunctionCall","src":"1100:37:61"},"nodeType":"YulExpressionStatement","src":"1100:37:61"}]},"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1078:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"1085:3:61","type":""}],"src":"1025:118:61"},{"body":{"nodeType":"YulBlock","src":"1247:124:61","statements":[{"nodeType":"YulAssignment","src":"1257:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1269:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"1280:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1265:3:61"},"nodeType":"YulFunctionCall","src":"1265:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1257:4:61"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1337:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1350:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"1361:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1346:3:61"},"nodeType":"YulFunctionCall","src":"1346:17:61"}],"functionName":{"name":"abi_encode_t_bytes32_to_t_bytes32_fromStack","nodeType":"YulIdentifier","src":"1293:43:61"},"nodeType":"YulFunctionCall","src":"1293:71:61"},"nodeType":"YulExpressionStatement","src":"1293:71:61"}]},"name":"abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1219:9:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1231:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1242:4:61","type":""}],"src":"1149:222:61"},{"body":{"nodeType":"YulBlock","src":"1422:81:61","statements":[{"nodeType":"YulAssignment","src":"1432:65:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1447:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"1454:42:61","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1443:3:61"},"nodeType":"YulFunctionCall","src":"1443:54:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"1432:7:61"}]}]},"name":"cleanup_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1404:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"1414:7:61","type":""}],"src":"1377:126:61"},{"body":{"nodeType":"YulBlock","src":"1554:51:61","statements":[{"nodeType":"YulAssignment","src":"1564:35:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1593:5:61"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"1575:17:61"},"nodeType":"YulFunctionCall","src":"1575:24:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"1564:7:61"}]}]},"name":"cleanup_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1536:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"1546:7:61","type":""}],"src":"1509:96:61"},{"body":{"nodeType":"YulBlock","src":"1654:79:61","statements":[{"body":{"nodeType":"YulBlock","src":"1711:16:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1720:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1723:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1713:6:61"},"nodeType":"YulFunctionCall","src":"1713:12:61"},"nodeType":"YulExpressionStatement","src":"1713:12:61"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1677:5:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1702:5:61"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"1684:17:61"},"nodeType":"YulFunctionCall","src":"1684:24:61"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1674:2:61"},"nodeType":"YulFunctionCall","src":"1674:35:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1667:6:61"},"nodeType":"YulFunctionCall","src":"1667:43:61"},"nodeType":"YulIf","src":"1664:63:61"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1647:5:61","type":""}],"src":"1611:122:61"},{"body":{"nodeType":"YulBlock","src":"1791:87:61","statements":[{"nodeType":"YulAssignment","src":"1801:29:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1823:6:61"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1810:12:61"},"nodeType":"YulFunctionCall","src":"1810:20:61"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1801:5:61"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1866:5:61"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"1839:26:61"},"nodeType":"YulFunctionCall","src":"1839:33:61"},"nodeType":"YulExpressionStatement","src":"1839:33:61"}]},"name":"abi_decode_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1769:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"1777:3:61","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1785:5:61","type":""}],"src":"1739:139:61"},{"body":{"nodeType":"YulBlock","src":"1967:391:61","statements":[{"body":{"nodeType":"YulBlock","src":"2013:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"2015:77:61"},"nodeType":"YulFunctionCall","src":"2015:79:61"},"nodeType":"YulExpressionStatement","src":"2015:79:61"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1988:7:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"1997:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1984:3:61"},"nodeType":"YulFunctionCall","src":"1984:23:61"},{"kind":"number","nodeType":"YulLiteral","src":"2009:2:61","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1980:3:61"},"nodeType":"YulFunctionCall","src":"1980:32:61"},"nodeType":"YulIf","src":"1977:119:61"},{"nodeType":"YulBlock","src":"2106:117:61","statements":[{"nodeType":"YulVariableDeclaration","src":"2121:15:61","value":{"kind":"number","nodeType":"YulLiteral","src":"2135:1:61","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2125:6:61","type":""}]},{"nodeType":"YulAssignment","src":"2150:63:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2185:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"2196:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2181:3:61"},"nodeType":"YulFunctionCall","src":"2181:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2205:7:61"}],"functionName":{"name":"abi_decode_t_bytes32","nodeType":"YulIdentifier","src":"2160:20:61"},"nodeType":"YulFunctionCall","src":"2160:53:61"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2150:6:61"}]}]},{"nodeType":"YulBlock","src":"2233:118:61","statements":[{"nodeType":"YulVariableDeclaration","src":"2248:16:61","value":{"kind":"number","nodeType":"YulLiteral","src":"2262:2:61","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2252:6:61","type":""}]},{"nodeType":"YulAssignment","src":"2278:63:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2313:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"2324:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2309:3:61"},"nodeType":"YulFunctionCall","src":"2309:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"2333:7:61"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"2288:20:61"},"nodeType":"YulFunctionCall","src":"2288:53:61"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2278:6:61"}]}]}]},"name":"abi_decode_tuple_t_bytes32t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1929:9:61","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1940:7:61","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1952:6:61","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1960:6:61","type":""}],"src":"1884:474:61"},{"body":{"nodeType":"YulBlock","src":"2453:28:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2470:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2473:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2463:6:61"},"nodeType":"YulFunctionCall","src":"2463:12:61"},"nodeType":"YulExpressionStatement","src":"2463:12:61"}]},"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulFunctionDefinition","src":"2364:117:61"},{"body":{"nodeType":"YulBlock","src":"2576:28:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2593:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2596:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2586:6:61"},"nodeType":"YulFunctionCall","src":"2586:12:61"},"nodeType":"YulExpressionStatement","src":"2586:12:61"}]},"name":"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae","nodeType":"YulFunctionDefinition","src":"2487:117:61"},{"body":{"nodeType":"YulBlock","src":"2658:54:61","statements":[{"nodeType":"YulAssignment","src":"2668:38:61","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2686:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"2693:2:61","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2682:3:61"},"nodeType":"YulFunctionCall","src":"2682:14:61"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2702:2:61","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2698:3:61"},"nodeType":"YulFunctionCall","src":"2698:7:61"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2678:3:61"},"nodeType":"YulFunctionCall","src":"2678:28:61"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"2668:6:61"}]}]},"name":"round_up_to_mul_of_32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2641:5:61","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"2651:6:61","type":""}],"src":"2610:102:61"},{"body":{"nodeType":"YulBlock","src":"2746:152:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2763:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2766:77:61","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2756:6:61"},"nodeType":"YulFunctionCall","src":"2756:88:61"},"nodeType":"YulExpressionStatement","src":"2756:88:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2860:1:61","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2863:4:61","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2853:6:61"},"nodeType":"YulFunctionCall","src":"2853:15:61"},"nodeType":"YulExpressionStatement","src":"2853:15:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2884:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2887:4:61","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2877:6:61"},"nodeType":"YulFunctionCall","src":"2877:15:61"},"nodeType":"YulExpressionStatement","src":"2877:15:61"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"2718:180:61"},{"body":{"nodeType":"YulBlock","src":"2947:238:61","statements":[{"nodeType":"YulVariableDeclaration","src":"2957:58:61","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"2979:6:61"},{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"3009:4:61"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"2987:21:61"},"nodeType":"YulFunctionCall","src":"2987:27:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2975:3:61"},"nodeType":"YulFunctionCall","src":"2975:40:61"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"2961:10:61","type":""}]},{"body":{"nodeType":"YulBlock","src":"3126:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"3128:16:61"},"nodeType":"YulFunctionCall","src":"3128:18:61"},"nodeType":"YulExpressionStatement","src":"3128:18:61"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"3069:10:61"},{"kind":"number","nodeType":"YulLiteral","src":"3081:18:61","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3066:2:61"},"nodeType":"YulFunctionCall","src":"3066:34:61"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"3105:10:61"},{"name":"memPtr","nodeType":"YulIdentifier","src":"3117:6:61"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3102:2:61"},"nodeType":"YulFunctionCall","src":"3102:22:61"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"3063:2:61"},"nodeType":"YulFunctionCall","src":"3063:62:61"},"nodeType":"YulIf","src":"3060:88:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3164:2:61","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"3168:10:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3157:6:61"},"nodeType":"YulFunctionCall","src":"3157:22:61"},"nodeType":"YulExpressionStatement","src":"3157:22:61"}]},"name":"finalize_allocation","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"2933:6:61","type":""},{"name":"size","nodeType":"YulTypedName","src":"2941:4:61","type":""}],"src":"2904:281:61"},{"body":{"nodeType":"YulBlock","src":"3232:88:61","statements":[{"nodeType":"YulAssignment","src":"3242:30:61","value":{"arguments":[],"functionName":{"name":"allocate_unbounded","nodeType":"YulIdentifier","src":"3252:18:61"},"nodeType":"YulFunctionCall","src":"3252:20:61"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3242:6:61"}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3301:6:61"},{"name":"size","nodeType":"YulIdentifier","src":"3309:4:61"}],"functionName":{"name":"finalize_allocation","nodeType":"YulIdentifier","src":"3281:19:61"},"nodeType":"YulFunctionCall","src":"3281:33:61"},"nodeType":"YulExpressionStatement","src":"3281:33:61"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"3216:4:61","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"3225:6:61","type":""}],"src":"3191:129:61"},{"body":{"nodeType":"YulBlock","src":"3393:241:61","statements":[{"body":{"nodeType":"YulBlock","src":"3498:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"3500:16:61"},"nodeType":"YulFunctionCall","src":"3500:18:61"},"nodeType":"YulExpressionStatement","src":"3500:18:61"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"3470:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"3478:18:61","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3467:2:61"},"nodeType":"YulFunctionCall","src":"3467:30:61"},"nodeType":"YulIf","src":"3464:56:61"},{"nodeType":"YulAssignment","src":"3530:37:61","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"3560:6:61"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"3538:21:61"},"nodeType":"YulFunctionCall","src":"3538:29:61"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"3530:4:61"}]},{"nodeType":"YulAssignment","src":"3604:23:61","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"3616:4:61"},{"kind":"number","nodeType":"YulLiteral","src":"3622:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3612:3:61"},"nodeType":"YulFunctionCall","src":"3612:15:61"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"3604:4:61"}]}]},"name":"array_allocation_size_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"3377:6:61","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"3388:4:61","type":""}],"src":"3326:308:61"},{"body":{"nodeType":"YulBlock","src":"3704:82:61","statements":[{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"3727:3:61"},{"name":"src","nodeType":"YulIdentifier","src":"3732:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"3737:6:61"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"3714:12:61"},"nodeType":"YulFunctionCall","src":"3714:30:61"},"nodeType":"YulExpressionStatement","src":"3714:30:61"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"3764:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"3769:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3760:3:61"},"nodeType":"YulFunctionCall","src":"3760:16:61"},{"kind":"number","nodeType":"YulLiteral","src":"3778:1:61","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3753:6:61"},"nodeType":"YulFunctionCall","src":"3753:27:61"},"nodeType":"YulExpressionStatement","src":"3753:27:61"}]},"name":"copy_calldata_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"3686:3:61","type":""},{"name":"dst","nodeType":"YulTypedName","src":"3691:3:61","type":""},{"name":"length","nodeType":"YulTypedName","src":"3696:6:61","type":""}],"src":"3640:146:61"},{"body":{"nodeType":"YulBlock","src":"3876:341:61","statements":[{"nodeType":"YulAssignment","src":"3886:75:61","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"3953:6:61"}],"functionName":{"name":"array_allocation_size_t_string_memory_ptr","nodeType":"YulIdentifier","src":"3911:41:61"},"nodeType":"YulFunctionCall","src":"3911:49:61"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"3895:15:61"},"nodeType":"YulFunctionCall","src":"3895:66:61"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"3886:5:61"}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"3977:5:61"},{"name":"length","nodeType":"YulIdentifier","src":"3984:6:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3970:6:61"},"nodeType":"YulFunctionCall","src":"3970:21:61"},"nodeType":"YulExpressionStatement","src":"3970:21:61"},{"nodeType":"YulVariableDeclaration","src":"4000:27:61","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"4015:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"4022:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4011:3:61"},"nodeType":"YulFunctionCall","src":"4011:16:61"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"4004:3:61","type":""}]},{"body":{"nodeType":"YulBlock","src":"4065:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae","nodeType":"YulIdentifier","src":"4067:77:61"},"nodeType":"YulFunctionCall","src":"4067:79:61"},"nodeType":"YulExpressionStatement","src":"4067:79:61"}]},"condition":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"4046:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"4051:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4042:3:61"},"nodeType":"YulFunctionCall","src":"4042:16:61"},{"name":"end","nodeType":"YulIdentifier","src":"4060:3:61"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4039:2:61"},"nodeType":"YulFunctionCall","src":"4039:25:61"},"nodeType":"YulIf","src":"4036:112:61"},{"expression":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"4194:3:61"},{"name":"dst","nodeType":"YulIdentifier","src":"4199:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"4204:6:61"}],"functionName":{"name":"copy_calldata_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"4157:36:61"},"nodeType":"YulFunctionCall","src":"4157:54:61"},"nodeType":"YulExpressionStatement","src":"4157:54:61"}]},"name":"abi_decode_available_length_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"3849:3:61","type":""},{"name":"length","nodeType":"YulTypedName","src":"3854:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"3862:3:61","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"3870:5:61","type":""}],"src":"3792:425:61"},{"body":{"nodeType":"YulBlock","src":"4299:278:61","statements":[{"body":{"nodeType":"YulBlock","src":"4348:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"4350:77:61"},"nodeType":"YulFunctionCall","src":"4350:79:61"},"nodeType":"YulExpressionStatement","src":"4350:79:61"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4327:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"4335:4:61","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4323:3:61"},"nodeType":"YulFunctionCall","src":"4323:17:61"},{"name":"end","nodeType":"YulIdentifier","src":"4342:3:61"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4319:3:61"},"nodeType":"YulFunctionCall","src":"4319:27:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4312:6:61"},"nodeType":"YulFunctionCall","src":"4312:35:61"},"nodeType":"YulIf","src":"4309:122:61"},{"nodeType":"YulVariableDeclaration","src":"4440:34:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4467:6:61"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4454:12:61"},"nodeType":"YulFunctionCall","src":"4454:20:61"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4444:6:61","type":""}]},{"nodeType":"YulAssignment","src":"4483:88:61","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4544:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"4552:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4540:3:61"},"nodeType":"YulFunctionCall","src":"4540:17:61"},{"name":"length","nodeType":"YulIdentifier","src":"4559:6:61"},{"name":"end","nodeType":"YulIdentifier","src":"4567:3:61"}],"functionName":{"name":"abi_decode_available_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"4492:47:61"},"nodeType":"YulFunctionCall","src":"4492:79:61"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"4483:5:61"}]}]},"name":"abi_decode_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"4277:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"4285:3:61","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"4293:5:61","type":""}],"src":"4237:340:61"},{"body":{"nodeType":"YulBlock","src":"4659:433:61","statements":[{"body":{"nodeType":"YulBlock","src":"4705:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"4707:77:61"},"nodeType":"YulFunctionCall","src":"4707:79:61"},"nodeType":"YulExpressionStatement","src":"4707:79:61"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4680:7:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"4689:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4676:3:61"},"nodeType":"YulFunctionCall","src":"4676:23:61"},{"kind":"number","nodeType":"YulLiteral","src":"4701:2:61","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4672:3:61"},"nodeType":"YulFunctionCall","src":"4672:32:61"},"nodeType":"YulIf","src":"4669:119:61"},{"nodeType":"YulBlock","src":"4798:287:61","statements":[{"nodeType":"YulVariableDeclaration","src":"4813:45:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4844:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"4855:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4840:3:61"},"nodeType":"YulFunctionCall","src":"4840:17:61"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4827:12:61"},"nodeType":"YulFunctionCall","src":"4827:31:61"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4817:6:61","type":""}]},{"body":{"nodeType":"YulBlock","src":"4905:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"4907:77:61"},"nodeType":"YulFunctionCall","src":"4907:79:61"},"nodeType":"YulExpressionStatement","src":"4907:79:61"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4877:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"4885:18:61","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4874:2:61"},"nodeType":"YulFunctionCall","src":"4874:30:61"},"nodeType":"YulIf","src":"4871:117:61"},{"nodeType":"YulAssignment","src":"5002:73:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5047:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"5058:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5043:3:61"},"nodeType":"YulFunctionCall","src":"5043:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"5067:7:61"}],"functionName":{"name":"abi_decode_t_string_memory_ptr","nodeType":"YulIdentifier","src":"5012:30:61"},"nodeType":"YulFunctionCall","src":"5012:63:61"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5002:6:61"}]}]}]},"name":"abi_decode_tuple_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4629:9:61","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4640:7:61","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4652:6:61","type":""}],"src":"4583:509:61"},{"body":{"nodeType":"YulBlock","src":"5140:48:61","statements":[{"nodeType":"YulAssignment","src":"5150:32:61","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5175:5:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5168:6:61"},"nodeType":"YulFunctionCall","src":"5168:13:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5161:6:61"},"nodeType":"YulFunctionCall","src":"5161:21:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5150:7:61"}]}]},"name":"cleanup_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5122:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5132:7:61","type":""}],"src":"5098:90:61"},{"body":{"nodeType":"YulBlock","src":"5253:50:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5270:3:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5290:5:61"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"5275:14:61"},"nodeType":"YulFunctionCall","src":"5275:21:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5263:6:61"},"nodeType":"YulFunctionCall","src":"5263:34:61"},"nodeType":"YulExpressionStatement","src":"5263:34:61"}]},"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5241:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"5248:3:61","type":""}],"src":"5194:109:61"},{"body":{"nodeType":"YulBlock","src":"5401:118:61","statements":[{"nodeType":"YulAssignment","src":"5411:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5423:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"5434:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5419:3:61"},"nodeType":"YulFunctionCall","src":"5419:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5411:4:61"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5485:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5498:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"5509:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5494:3:61"},"nodeType":"YulFunctionCall","src":"5494:17:61"}],"functionName":{"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulIdentifier","src":"5447:37:61"},"nodeType":"YulFunctionCall","src":"5447:65:61"},"nodeType":"YulExpressionStatement","src":"5447:65:61"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5373:9:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5385:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5396:4:61","type":""}],"src":"5309:210:61"},{"body":{"nodeType":"YulBlock","src":"5584:40:61","statements":[{"nodeType":"YulAssignment","src":"5595:22:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5611:5:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5605:5:61"},"nodeType":"YulFunctionCall","src":"5605:12:61"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"5595:6:61"}]}]},"name":"array_length_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5567:5:61","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"5577:6:61","type":""}],"src":"5525:99:61"},{"body":{"nodeType":"YulBlock","src":"5726:73:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5743:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"5748:6:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5736:6:61"},"nodeType":"YulFunctionCall","src":"5736:19:61"},"nodeType":"YulExpressionStatement","src":"5736:19:61"},{"nodeType":"YulAssignment","src":"5764:29:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5783:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"5788:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5779:3:61"},"nodeType":"YulFunctionCall","src":"5779:14:61"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"5764:11:61"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"5698:3:61","type":""},{"name":"length","nodeType":"YulTypedName","src":"5703:6:61","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"5714:11:61","type":""}],"src":"5630:169:61"},{"body":{"nodeType":"YulBlock","src":"5867:184:61","statements":[{"nodeType":"YulVariableDeclaration","src":"5877:10:61","value":{"kind":"number","nodeType":"YulLiteral","src":"5886:1:61","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"5881:1:61","type":""}]},{"body":{"nodeType":"YulBlock","src":"5946:63:61","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"5971:3:61"},{"name":"i","nodeType":"YulIdentifier","src":"5976:1:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5967:3:61"},"nodeType":"YulFunctionCall","src":"5967:11:61"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"5990:3:61"},{"name":"i","nodeType":"YulIdentifier","src":"5995:1:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5986:3:61"},"nodeType":"YulFunctionCall","src":"5986:11:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5980:5:61"},"nodeType":"YulFunctionCall","src":"5980:18:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5960:6:61"},"nodeType":"YulFunctionCall","src":"5960:39:61"},"nodeType":"YulExpressionStatement","src":"5960:39:61"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5907:1:61"},{"name":"length","nodeType":"YulIdentifier","src":"5910:6:61"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5904:2:61"},"nodeType":"YulFunctionCall","src":"5904:13:61"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5918:19:61","statements":[{"nodeType":"YulAssignment","src":"5920:15:61","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5929:1:61"},{"kind":"number","nodeType":"YulLiteral","src":"5932:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5925:3:61"},"nodeType":"YulFunctionCall","src":"5925:10:61"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"5920:1:61"}]}]},"pre":{"nodeType":"YulBlock","src":"5900:3:61","statements":[]},"src":"5896:113:61"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"6029:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"6034:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6025:3:61"},"nodeType":"YulFunctionCall","src":"6025:16:61"},{"kind":"number","nodeType":"YulLiteral","src":"6043:1:61","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6018:6:61"},"nodeType":"YulFunctionCall","src":"6018:27:61"},"nodeType":"YulExpressionStatement","src":"6018:27:61"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"5849:3:61","type":""},{"name":"dst","nodeType":"YulTypedName","src":"5854:3:61","type":""},{"name":"length","nodeType":"YulTypedName","src":"5859:6:61","type":""}],"src":"5805:246:61"},{"body":{"nodeType":"YulBlock","src":"6149:285:61","statements":[{"nodeType":"YulVariableDeclaration","src":"6159:53:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6206:5:61"}],"functionName":{"name":"array_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"6173:32:61"},"nodeType":"YulFunctionCall","src":"6173:39:61"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"6163:6:61","type":""}]},{"nodeType":"YulAssignment","src":"6221:78:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6287:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"6292:6:61"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"6228:58:61"},"nodeType":"YulFunctionCall","src":"6228:71:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"6221:3:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6347:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"6354:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6343:3:61"},"nodeType":"YulFunctionCall","src":"6343:16:61"},{"name":"pos","nodeType":"YulIdentifier","src":"6361:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"6366:6:61"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"6308:34:61"},"nodeType":"YulFunctionCall","src":"6308:65:61"},"nodeType":"YulExpressionStatement","src":"6308:65:61"},{"nodeType":"YulAssignment","src":"6382:46:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6393:3:61"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"6420:6:61"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"6398:21:61"},"nodeType":"YulFunctionCall","src":"6398:29:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6389:3:61"},"nodeType":"YulFunctionCall","src":"6389:39:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"6382:3:61"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6130:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"6137:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"6145:3:61","type":""}],"src":"6057:377:61"},{"body":{"nodeType":"YulBlock","src":"6558:195:61","statements":[{"nodeType":"YulAssignment","src":"6568:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6580:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"6591:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6576:3:61"},"nodeType":"YulFunctionCall","src":"6576:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6568:4:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6615:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"6626:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6611:3:61"},"nodeType":"YulFunctionCall","src":"6611:17:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"6634:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"6640:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6630:3:61"},"nodeType":"YulFunctionCall","src":"6630:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6604:6:61"},"nodeType":"YulFunctionCall","src":"6604:47:61"},"nodeType":"YulExpressionStatement","src":"6604:47:61"},{"nodeType":"YulAssignment","src":"6660:86:61","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6732:6:61"},{"name":"tail","nodeType":"YulIdentifier","src":"6741:4:61"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"6668:63:61"},"nodeType":"YulFunctionCall","src":"6668:78:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6660:4:61"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6530:9:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6542:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6553:4:61","type":""}],"src":"6440:313:61"},{"body":{"nodeType":"YulBlock","src":"6873:34:61","statements":[{"nodeType":"YulAssignment","src":"6883:18:61","value":{"name":"pos","nodeType":"YulIdentifier","src":"6898:3:61"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"6883:11:61"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"6845:3:61","type":""},{"name":"length","nodeType":"YulTypedName","src":"6850:6:61","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"6861:11:61","type":""}],"src":"6759:148:61"},{"body":{"nodeType":"YulBlock","src":"7019:67:61","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"7041:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"7049:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7037:3:61"},"nodeType":"YulFunctionCall","src":"7037:14:61"},{"hexValue":"416363657373436f6e74726f6c3a206163636f756e7420","kind":"string","nodeType":"YulLiteral","src":"7053:25:61","type":"","value":"AccessControl: account "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7030:6:61"},"nodeType":"YulFunctionCall","src":"7030:49:61"},"nodeType":"YulExpressionStatement","src":"7030:49:61"}]},"name":"store_literal_in_memory_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"7011:6:61","type":""}],"src":"6913:173:61"},{"body":{"nodeType":"YulBlock","src":"7256:238:61","statements":[{"nodeType":"YulAssignment","src":"7266:92:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"7350:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"7355:2:61","type":"","value":"23"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"7273:76:61"},"nodeType":"YulFunctionCall","src":"7273:85:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"7266:3:61"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"7456:3:61"}],"functionName":{"name":"store_literal_in_memory_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874","nodeType":"YulIdentifier","src":"7367:88:61"},"nodeType":"YulFunctionCall","src":"7367:93:61"},"nodeType":"YulExpressionStatement","src":"7367:93:61"},{"nodeType":"YulAssignment","src":"7469:19:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"7480:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"7485:2:61","type":"","value":"23"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7476:3:61"},"nodeType":"YulFunctionCall","src":"7476:12:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"7469:3:61"}]}]},"name":"abi_encode_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"7244:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"7252:3:61","type":""}],"src":"7092:402:61"},{"body":{"nodeType":"YulBlock","src":"7610:280:61","statements":[{"nodeType":"YulVariableDeclaration","src":"7620:53:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7667:5:61"}],"functionName":{"name":"array_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"7634:32:61"},"nodeType":"YulFunctionCall","src":"7634:39:61"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"7624:6:61","type":""}]},{"nodeType":"YulAssignment","src":"7682:96:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"7766:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"7771:6:61"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"7689:76:61"},"nodeType":"YulFunctionCall","src":"7689:89:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"7682:3:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7826:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"7833:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7822:3:61"},"nodeType":"YulFunctionCall","src":"7822:16:61"},{"name":"pos","nodeType":"YulIdentifier","src":"7840:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"7845:6:61"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"7787:34:61"},"nodeType":"YulFunctionCall","src":"7787:65:61"},"nodeType":"YulExpressionStatement","src":"7787:65:61"},{"nodeType":"YulAssignment","src":"7861:23:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"7872:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"7877:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7868:3:61"},"nodeType":"YulFunctionCall","src":"7868:16:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"7861:3:61"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7591:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"7598:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"7606:3:61","type":""}],"src":"7500:390:61"},{"body":{"nodeType":"YulBlock","src":"8002:61:61","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"8024:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"8032:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8020:3:61"},"nodeType":"YulFunctionCall","src":"8020:14:61"},{"hexValue":"206973206d697373696e6720726f6c6520","kind":"string","nodeType":"YulLiteral","src":"8036:19:61","type":"","value":" is missing role "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8013:6:61"},"nodeType":"YulFunctionCall","src":"8013:43:61"},"nodeType":"YulExpressionStatement","src":"8013:43:61"}]},"name":"store_literal_in_memory_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"7994:6:61","type":""}],"src":"7896:167:61"},{"body":{"nodeType":"YulBlock","src":"8233:238:61","statements":[{"nodeType":"YulAssignment","src":"8243:92:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8327:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"8332:2:61","type":"","value":"17"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"8250:76:61"},"nodeType":"YulFunctionCall","src":"8250:85:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"8243:3:61"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8433:3:61"}],"functionName":{"name":"store_literal_in_memory_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69","nodeType":"YulIdentifier","src":"8344:88:61"},"nodeType":"YulFunctionCall","src":"8344:93:61"},"nodeType":"YulExpressionStatement","src":"8344:93:61"},{"nodeType":"YulAssignment","src":"8446:19:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8457:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"8462:2:61","type":"","value":"17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8453:3:61"},"nodeType":"YulFunctionCall","src":"8453:12:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"8446:3:61"}]}]},"name":"abi_encode_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"8221:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"8229:3:61","type":""}],"src":"8069:402:61"},{"body":{"nodeType":"YulBlock","src":"8863:581:61","statements":[{"nodeType":"YulAssignment","src":"8874:155:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9025:3:61"}],"functionName":{"name":"abi_encode_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"8881:142:61"},"nodeType":"YulFunctionCall","src":"8881:148:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"8874:3:61"}]},{"nodeType":"YulAssignment","src":"9039:102:61","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"9128:6:61"},{"name":"pos","nodeType":"YulIdentifier","src":"9137:3:61"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"9046:81:61"},"nodeType":"YulFunctionCall","src":"9046:95:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"9039:3:61"}]},{"nodeType":"YulAssignment","src":"9151:155:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9302:3:61"}],"functionName":{"name":"abi_encode_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"9158:142:61"},"nodeType":"YulFunctionCall","src":"9158:148:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"9151:3:61"}]},{"nodeType":"YulAssignment","src":"9316:102:61","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"9405:6:61"},{"name":"pos","nodeType":"YulIdentifier","src":"9414:3:61"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"9323:81:61"},"nodeType":"YulFunctionCall","src":"9323:95:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"9316:3:61"}]},{"nodeType":"YulAssignment","src":"9428:10:61","value":{"name":"pos","nodeType":"YulIdentifier","src":"9435:3:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"9428:3:61"}]}]},"name":"abi_encode_tuple_packed_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_t_string_memory_ptr_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"8834:3:61","type":""},{"name":"value1","nodeType":"YulTypedName","src":"8840:6:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8848:6:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"8859:3:61","type":""}],"src":"8477:967:61"},{"body":{"nodeType":"YulBlock","src":"9495:32:61","statements":[{"nodeType":"YulAssignment","src":"9505:16:61","value":{"name":"value","nodeType":"YulIdentifier","src":"9516:5:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"9505:7:61"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"9477:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"9487:7:61","type":""}],"src":"9450:77:61"},{"body":{"nodeType":"YulBlock","src":"9561:152:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9578:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9581:77:61","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9571:6:61"},"nodeType":"YulFunctionCall","src":"9571:88:61"},"nodeType":"YulExpressionStatement","src":"9571:88:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9675:1:61","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"9678:4:61","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9668:6:61"},"nodeType":"YulFunctionCall","src":"9668:15:61"},"nodeType":"YulExpressionStatement","src":"9668:15:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9699:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9702:4:61","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9692:6:61"},"nodeType":"YulFunctionCall","src":"9692:15:61"},"nodeType":"YulExpressionStatement","src":"9692:15:61"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"9533:180:61"},{"body":{"nodeType":"YulBlock","src":"9767:362:61","statements":[{"nodeType":"YulAssignment","src":"9777:25:61","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"9800:1:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"9782:17:61"},"nodeType":"YulFunctionCall","src":"9782:20:61"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"9777:1:61"}]},{"nodeType":"YulAssignment","src":"9811:25:61","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"9834:1:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"9816:17:61"},"nodeType":"YulFunctionCall","src":"9816:20:61"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"9811:1:61"}]},{"nodeType":"YulVariableDeclaration","src":"9845:28:61","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"9868:1:61"},{"name":"y","nodeType":"YulIdentifier","src":"9871:1:61"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"9864:3:61"},"nodeType":"YulFunctionCall","src":"9864:9:61"},"variables":[{"name":"product_raw","nodeType":"YulTypedName","src":"9849:11:61","type":""}]},{"nodeType":"YulAssignment","src":"9882:41:61","value":{"arguments":[{"name":"product_raw","nodeType":"YulIdentifier","src":"9911:11:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"9893:17:61"},"nodeType":"YulFunctionCall","src":"9893:30:61"},"variableNames":[{"name":"product","nodeType":"YulIdentifier","src":"9882:7:61"}]},{"body":{"nodeType":"YulBlock","src":"10100:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"10102:16:61"},"nodeType":"YulFunctionCall","src":"10102:18:61"},"nodeType":"YulExpressionStatement","src":"10102:18:61"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"10033:1:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"10026:6:61"},"nodeType":"YulFunctionCall","src":"10026:9:61"},{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"10056:1:61"},{"arguments":[{"name":"product","nodeType":"YulIdentifier","src":"10063:7:61"},{"name":"x","nodeType":"YulIdentifier","src":"10072:1:61"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"10059:3:61"},"nodeType":"YulFunctionCall","src":"10059:15:61"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"10053:2:61"},"nodeType":"YulFunctionCall","src":"10053:22:61"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"10006:2:61"},"nodeType":"YulFunctionCall","src":"10006:83:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"9986:6:61"},"nodeType":"YulFunctionCall","src":"9986:113:61"},"nodeType":"YulIf","src":"9983:139:61"}]},"name":"checked_mul_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"9750:1:61","type":""},{"name":"y","nodeType":"YulTypedName","src":"9753:1:61","type":""}],"returnVariables":[{"name":"product","nodeType":"YulTypedName","src":"9759:7:61","type":""}],"src":"9719:410:61"},{"body":{"nodeType":"YulBlock","src":"10179:147:61","statements":[{"nodeType":"YulAssignment","src":"10189:25:61","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"10212:1:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"10194:17:61"},"nodeType":"YulFunctionCall","src":"10194:20:61"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"10189:1:61"}]},{"nodeType":"YulAssignment","src":"10223:25:61","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"10246:1:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"10228:17:61"},"nodeType":"YulFunctionCall","src":"10228:20:61"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"10223:1:61"}]},{"nodeType":"YulAssignment","src":"10257:16:61","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"10268:1:61"},{"name":"y","nodeType":"YulIdentifier","src":"10271:1:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10264:3:61"},"nodeType":"YulFunctionCall","src":"10264:9:61"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"10257:3:61"}]},{"body":{"nodeType":"YulBlock","src":"10297:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"10299:16:61"},"nodeType":"YulFunctionCall","src":"10299:18:61"},"nodeType":"YulExpressionStatement","src":"10299:18:61"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"10289:1:61"},{"name":"sum","nodeType":"YulIdentifier","src":"10292:3:61"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"10286:2:61"},"nodeType":"YulFunctionCall","src":"10286:10:61"},"nodeType":"YulIf","src":"10283:36:61"}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"10166:1:61","type":""},{"name":"y","nodeType":"YulTypedName","src":"10169:1:61","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"10175:3:61","type":""}],"src":"10135:191:61"},{"body":{"nodeType":"YulBlock","src":"10360:152:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10377:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10380:77:61","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10370:6:61"},"nodeType":"YulFunctionCall","src":"10370:88:61"},"nodeType":"YulExpressionStatement","src":"10370:88:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10474:1:61","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"10477:4:61","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10467:6:61"},"nodeType":"YulFunctionCall","src":"10467:15:61"},"nodeType":"YulExpressionStatement","src":"10467:15:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10498:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10501:4:61","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10491:6:61"},"nodeType":"YulFunctionCall","src":"10491:15:61"},"nodeType":"YulExpressionStatement","src":"10491:15:61"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"10332:180:61"},{"body":{"nodeType":"YulBlock","src":"10561:128:61","statements":[{"nodeType":"YulAssignment","src":"10571:33:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10598:5:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"10580:17:61"},"nodeType":"YulFunctionCall","src":"10580:24:61"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"10571:5:61"}]},{"body":{"nodeType":"YulBlock","src":"10632:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"10634:16:61"},"nodeType":"YulFunctionCall","src":"10634:18:61"},"nodeType":"YulExpressionStatement","src":"10634:18:61"}]},"condition":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10619:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"10626:4:61","type":"","value":"0x00"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"10616:2:61"},"nodeType":"YulFunctionCall","src":"10616:15:61"},"nodeType":"YulIf","src":"10613:41:61"},{"nodeType":"YulAssignment","src":"10663:20:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10674:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"10681:1:61","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10670:3:61"},"nodeType":"YulFunctionCall","src":"10670:13:61"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"10663:3:61"}]}]},"name":"decrement_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"10547:5:61","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"10557:3:61","type":""}],"src":"10518:171:61"},{"body":{"nodeType":"YulBlock","src":"10801:76:61","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"10823:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"10831:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10819:3:61"},"nodeType":"YulFunctionCall","src":"10819:14:61"},{"hexValue":"537472696e67733a20686578206c656e67746820696e73756666696369656e74","kind":"string","nodeType":"YulLiteral","src":"10835:34:61","type":"","value":"Strings: hex length insufficient"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10812:6:61"},"nodeType":"YulFunctionCall","src":"10812:58:61"},"nodeType":"YulExpressionStatement","src":"10812:58:61"}]},"name":"store_literal_in_memory_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"10793:6:61","type":""}],"src":"10695:182:61"},{"body":{"nodeType":"YulBlock","src":"11029:220:61","statements":[{"nodeType":"YulAssignment","src":"11039:74:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"11105:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"11110:2:61","type":"","value":"32"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"11046:58:61"},"nodeType":"YulFunctionCall","src":"11046:67:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"11039:3:61"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"11211:3:61"}],"functionName":{"name":"store_literal_in_memory_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2","nodeType":"YulIdentifier","src":"11122:88:61"},"nodeType":"YulFunctionCall","src":"11122:93:61"},"nodeType":"YulExpressionStatement","src":"11122:93:61"},{"nodeType":"YulAssignment","src":"11224:19:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"11235:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"11240:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11231:3:61"},"nodeType":"YulFunctionCall","src":"11231:12:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"11224:3:61"}]}]},"name":"abi_encode_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"11017:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"11025:3:61","type":""}],"src":"10883:366:61"},{"body":{"nodeType":"YulBlock","src":"11426:248:61","statements":[{"nodeType":"YulAssignment","src":"11436:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11448:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"11459:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11444:3:61"},"nodeType":"YulFunctionCall","src":"11444:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11436:4:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11483:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"11494:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11479:3:61"},"nodeType":"YulFunctionCall","src":"11479:17:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"11502:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"11508:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"11498:3:61"},"nodeType":"YulFunctionCall","src":"11498:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11472:6:61"},"nodeType":"YulFunctionCall","src":"11472:47:61"},"nodeType":"YulExpressionStatement","src":"11472:47:61"},{"nodeType":"YulAssignment","src":"11528:139:61","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"11662:4:61"}],"functionName":{"name":"abi_encode_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"11536:124:61"},"nodeType":"YulFunctionCall","src":"11536:131:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11528:4:61"}]}]},"name":"abi_encode_tuple_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11406:9:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11421:4:61","type":""}],"src":"11255:419:61"}]},"contents":"{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_bytes32(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_bytes32(value) {\n if iszero(eq(value, cleanup_t_bytes32(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bytes32(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bytes32(value)\n }\n\n function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_bytes32_to_t_bytes32_fromStack(value, pos) {\n mstore(pos, cleanup_t_bytes32(value))\n }\n\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bytes32_to_t_bytes32_fromStack(value0, add(headStart, 0))\n\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes32(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() {\n revert(0, 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n\n function allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function array_allocation_size_t_string_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := round_up_to_mul_of_32(length)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function copy_calldata_to_memory_with_cleanup(src, dst, length) {\n calldatacopy(dst, src, length)\n mstore(add(dst, length), 0)\n }\n\n function abi_decode_available_length_t_string_memory_ptr(src, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_string_memory_ptr(length))\n mstore(array, length)\n let dst := add(array, 0x20)\n if gt(add(src, length), end) { revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() }\n copy_calldata_to_memory_with_cleanup(src, dst, length)\n }\n\n // string\n function abi_decode_t_string_memory_ptr(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := calldataload(offset)\n array := abi_decode_available_length_t_string_memory_ptr(add(offset, 0x20), length, end)\n }\n\n function abi_decode_tuple_t_string_memory_ptr(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := calldataload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value0 := abi_decode_t_string_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bool_to_t_bool_fromStack(value0, add(headStart, 0))\n\n }\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function copy_memory_to_memory_with_cleanup(src, dst, length) {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value0, tail)\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function store_literal_in_memory_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874(memPtr) {\n\n mstore(add(memPtr, 0), \"AccessControl: account \")\n\n }\n\n function abi_encode_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_to_t_string_memory_ptr_nonPadded_inplace_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, 23)\n store_literal_in_memory_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874(pos)\n end := add(pos, 23)\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, length)\n }\n\n function store_literal_in_memory_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69(memPtr) {\n\n mstore(add(memPtr, 0), \" is missing role \")\n\n }\n\n function abi_encode_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_to_t_string_memory_ptr_nonPadded_inplace_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, 17)\n store_literal_in_memory_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69(pos)\n end := add(pos, 17)\n }\n\n function abi_encode_tuple_packed_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_t_string_memory_ptr_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value1, value0) -> end {\n\n pos := abi_encode_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_to_t_string_memory_ptr_nonPadded_inplace_fromStack( pos)\n\n pos := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value0, pos)\n\n pos := abi_encode_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_to_t_string_memory_ptr_nonPadded_inplace_fromStack( pos)\n\n pos := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value1, pos)\n\n end := pos\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function checked_mul_t_uint256(x, y) -> product {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n let product_raw := mul(x, y)\n product := cleanup_t_uint256(product_raw)\n\n // overflow, if x != 0 and y != product/x\n if iszero(\n or(\n iszero(x),\n eq(y, div(product, x))\n )\n ) { panic_error_0x11() }\n\n }\n\n function checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n sum := add(x, y)\n\n if gt(x, sum) { panic_error_0x11() }\n\n }\n\n function panic_error_0x32() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n\n function decrement_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0x00) { panic_error_0x11() }\n ret := sub(value, 1)\n }\n\n function store_literal_in_memory_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2(memPtr) {\n\n mstore(add(memPtr, 0), \"Strings: hex length insufficient\")\n\n }\n\n function abi_encode_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 32)\n store_literal_in_memory_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n}\n","id":61,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061007d5760003560e01c80636e9067fb1161005b5780636e9067fb146100ec5780638bb9c5bf1461011c57806391d1485414610138578063d547741f146101685761007d565b8063248a9ca3146100825780632f2ff15d146100b257806352a9c8d7146100ce575b600080fd5b61009c600480360381019061009791906107fd565b610184565b6040516100a99190610839565b60405180910390f35b6100cc60048036038101906100c791906108b2565b610196565b005b6100d66101b5565b6040516100e39190610839565b60405180910390f35b61010660048036038101906101019190610a38565b6101c0565b6040516101139190610839565b60405180910390f35b610136600480360381019061013191906107fd565b6101f0565b005b610152600480360381019061014d91906108b2565b6101fd565b60405161015f9190610a9c565b60405180910390f35b610182600480360381019061017d91906108b2565b610211565b005b600061018f82610230565b9050919050565b6101a76101a283610230565b610259565b6101b18282610265565b5050565b60008060001b905090565b6000816040516020016101d39190610b36565b604051602081830303815290604052805190602001209050919050565b6101fa8133610348565b50565b6000610209838361042c565b905092915050565b61022261021d83610230565b610259565b61022c8282610348565b5050565b600061023a6104a0565b6000016000838152602001908152602001600020600101549050919050565b610262816104cd565b50565b61026f828261042c565b61034457600161027d6104a0565b600001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b610352828261042c565b156104285760006103616104a0565b600001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b60006104366104a0565b600001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000807f4cd15452b25e815d3f9d1a3c7edd985a178edf5eb3461a1acbf855517423d69490508091505090565b6104d781336104da565b50565b6104e4828261042c565b610573576105098173ffffffffffffffffffffffffffffffffffffffff166014610577565b6105178360001c6020610577565b604051602001610528929190610c2c565b6040516020818303038152906040526040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161056a9190610b36565b60405180910390fd5b5050565b60606000600283600261058a9190610c9f565b6105949190610ce1565b67ffffffffffffffff8111156105ad576105ac61090d565b5b6040519080825280601f01601f1916602001820160405280156105df5781602001600182028036833780820191505090505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061061757610616610d15565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061067b5761067a610d15565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026106bb9190610c9f565b6106c59190610ce1565b90505b6001811115610765577f3031323334353637383961626364656600000000000000000000000000000000600f86166010811061070757610706610d15565b5b1a60f81b82828151811061071e5761071d610d15565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c94508061075e90610d44565b90506106c8565b50600084146107a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a090610db9565b60405180910390fd5b8091505092915050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6107da816107c7565b81146107e557600080fd5b50565b6000813590506107f7816107d1565b92915050565b600060208284031215610813576108126107bd565b5b6000610821848285016107e8565b91505092915050565b610833816107c7565b82525050565b600060208201905061084e600083018461082a565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061087f82610854565b9050919050565b61088f81610874565b811461089a57600080fd5b50565b6000813590506108ac81610886565b92915050565b600080604083850312156108c9576108c86107bd565b5b60006108d7858286016107e8565b92505060206108e88582860161089d565b9150509250929050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610945826108fc565b810181811067ffffffffffffffff821117156109645761096361090d565b5b80604052505050565b60006109776107b3565b9050610983828261093c565b919050565b600067ffffffffffffffff8211156109a3576109a261090d565b5b6109ac826108fc565b9050602081019050919050565b82818337600083830152505050565b60006109db6109d684610988565b61096d565b9050828152602081018484840111156109f7576109f66108f7565b5b610a028482856109b9565b509392505050565b600082601f830112610a1f57610a1e6108f2565b5b8135610a2f8482602086016109c8565b91505092915050565b600060208284031215610a4e57610a4d6107bd565b5b600082013567ffffffffffffffff811115610a6c57610a6b6107c2565b5b610a7884828501610a0a565b91505092915050565b60008115159050919050565b610a9681610a81565b82525050565b6000602082019050610ab16000830184610a8d565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610af1578082015181840152602081019050610ad6565b60008484015250505050565b6000610b0882610ab7565b610b128185610ac2565b9350610b22818560208601610ad3565b610b2b816108fc565b840191505092915050565b60006020820190508181036000830152610b508184610afd565b905092915050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000610b99601783610b58565b9150610ba482610b63565b601782019050919050565b6000610bba82610ab7565b610bc48185610b58565b9350610bd4818560208601610ad3565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000610c16601183610b58565b9150610c2182610be0565b601182019050919050565b6000610c3782610b8c565b9150610c438285610baf565b9150610c4e82610c09565b9150610c5a8284610baf565b91508190509392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610caa82610c66565b9150610cb583610c66565b9250828202610cc381610c66565b91508282048414831517610cda57610cd9610c70565b5b5092915050565b6000610cec82610c66565b9150610cf783610c66565b9250828201905080821115610d0f57610d0e610c70565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000610d4f82610c66565b915060008203610d6257610d61610c70565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b6000610da3602083610ac2565b9150610dae82610d6d565b602082019050919050565b60006020820190508181036000830152610dd281610d96565b905091905056fea264697066735822122042ac622ea83961c316d077ee2232dd2ad760e3427df26bce6fe111d4109a0f0e64736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6E9067FB GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x6E9067FB EQ PUSH2 0xEC JUMPI DUP1 PUSH4 0x8BB9C5BF EQ PUSH2 0x11C JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x138 JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x168 JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0xB2 JUMPI DUP1 PUSH4 0x52A9C8D7 EQ PUSH2 0xCE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x97 SWAP2 SWAP1 PUSH2 0x7FD JUMP JUMPDEST PUSH2 0x184 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA9 SWAP2 SWAP1 PUSH2 0x839 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xCC PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xC7 SWAP2 SWAP1 PUSH2 0x8B2 JUMP JUMPDEST PUSH2 0x196 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xD6 PUSH2 0x1B5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE3 SWAP2 SWAP1 PUSH2 0x839 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x106 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x101 SWAP2 SWAP1 PUSH2 0xA38 JUMP JUMPDEST PUSH2 0x1C0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x113 SWAP2 SWAP1 PUSH2 0x839 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x136 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x131 SWAP2 SWAP1 PUSH2 0x7FD JUMP JUMPDEST PUSH2 0x1F0 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x152 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x14D SWAP2 SWAP1 PUSH2 0x8B2 JUMP JUMPDEST PUSH2 0x1FD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x15F SWAP2 SWAP1 PUSH2 0xA9C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x182 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x17D SWAP2 SWAP1 PUSH2 0x8B2 JUMP JUMPDEST PUSH2 0x211 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH2 0x18F DUP3 PUSH2 0x230 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1A7 PUSH2 0x1A2 DUP4 PUSH2 0x230 JUMP JUMPDEST PUSH2 0x259 JUMP JUMPDEST PUSH2 0x1B1 DUP3 DUP3 PUSH2 0x265 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SHL SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1D3 SWAP2 SWAP1 PUSH2 0xB36 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1FA DUP2 CALLER PUSH2 0x348 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x209 DUP4 DUP4 PUSH2 0x42C JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x222 PUSH2 0x21D DUP4 PUSH2 0x230 JUMP JUMPDEST PUSH2 0x259 JUMP JUMPDEST PUSH2 0x22C DUP3 DUP3 PUSH2 0x348 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x23A PUSH2 0x4A0 JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x262 DUP2 PUSH2 0x4CD JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x26F DUP3 DUP3 PUSH2 0x42C JUMP JUMPDEST PUSH2 0x344 JUMPI PUSH1 0x1 PUSH2 0x27D PUSH2 0x4A0 JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x352 DUP3 DUP3 PUSH2 0x42C JUMP JUMPDEST ISZERO PUSH2 0x428 JUMPI PUSH1 0x0 PUSH2 0x361 PUSH2 0x4A0 JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x436 PUSH2 0x4A0 JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x4CD15452B25E815D3F9D1A3C7EDD985A178EDF5EB3461A1ACBF855517423D694 SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH2 0x4D7 DUP2 CALLER PUSH2 0x4DA JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x4E4 DUP3 DUP3 PUSH2 0x42C JUMP JUMPDEST PUSH2 0x573 JUMPI PUSH2 0x509 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x14 PUSH2 0x577 JUMP JUMPDEST PUSH2 0x517 DUP4 PUSH1 0x0 SHR PUSH1 0x20 PUSH2 0x577 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x528 SWAP3 SWAP2 SWAP1 PUSH2 0xC2C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x56A SWAP2 SWAP1 PUSH2 0xB36 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x2 DUP4 PUSH1 0x2 PUSH2 0x58A SWAP2 SWAP1 PUSH2 0xC9F JUMP JUMPDEST PUSH2 0x594 SWAP2 SWAP1 PUSH2 0xCE1 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5AD JUMPI PUSH2 0x5AC PUSH2 0x90D JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x5DF JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x617 JUMPI PUSH2 0x616 PUSH2 0xD15 JUMP JUMPDEST JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH32 0x7800000000000000000000000000000000000000000000000000000000000000 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x67B JUMPI PUSH2 0x67A PUSH2 0xD15 JUMP JUMPDEST JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x0 PUSH1 0x1 DUP5 PUSH1 0x2 PUSH2 0x6BB SWAP2 SWAP1 PUSH2 0xC9F JUMP JUMPDEST PUSH2 0x6C5 SWAP2 SWAP1 PUSH2 0xCE1 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x765 JUMPI PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 PUSH1 0xF DUP7 AND PUSH1 0x10 DUP2 LT PUSH2 0x707 JUMPI PUSH2 0x706 PUSH2 0xD15 JUMP JUMPDEST JUMPDEST BYTE PUSH1 0xF8 SHL DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x71E JUMPI PUSH2 0x71D PUSH2 0xD15 JUMP JUMPDEST JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x4 DUP6 SWAP1 SHR SWAP5 POP DUP1 PUSH2 0x75E SWAP1 PUSH2 0xD44 JUMP JUMPDEST SWAP1 POP PUSH2 0x6C8 JUMP JUMPDEST POP PUSH1 0x0 DUP5 EQ PUSH2 0x7A9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7A0 SWAP1 PUSH2 0xDB9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x7DA DUP2 PUSH2 0x7C7 JUMP JUMPDEST DUP2 EQ PUSH2 0x7E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x7F7 DUP2 PUSH2 0x7D1 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x813 JUMPI PUSH2 0x812 PUSH2 0x7BD JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x821 DUP5 DUP3 DUP6 ADD PUSH2 0x7E8 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x833 DUP2 PUSH2 0x7C7 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x84E PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x82A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x87F DUP3 PUSH2 0x854 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x88F DUP2 PUSH2 0x874 JUMP JUMPDEST DUP2 EQ PUSH2 0x89A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x8AC DUP2 PUSH2 0x886 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x8C9 JUMPI PUSH2 0x8C8 PUSH2 0x7BD JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x8D7 DUP6 DUP3 DUP7 ADD PUSH2 0x7E8 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x8E8 DUP6 DUP3 DUP7 ADD PUSH2 0x89D JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x945 DUP3 PUSH2 0x8FC JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x964 JUMPI PUSH2 0x963 PUSH2 0x90D JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x977 PUSH2 0x7B3 JUMP JUMPDEST SWAP1 POP PUSH2 0x983 DUP3 DUP3 PUSH2 0x93C JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x9A3 JUMPI PUSH2 0x9A2 PUSH2 0x90D JUMP JUMPDEST JUMPDEST PUSH2 0x9AC DUP3 PUSH2 0x8FC JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9DB PUSH2 0x9D6 DUP5 PUSH2 0x988 JUMP JUMPDEST PUSH2 0x96D JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x9F7 JUMPI PUSH2 0x9F6 PUSH2 0x8F7 JUMP JUMPDEST JUMPDEST PUSH2 0xA02 DUP5 DUP3 DUP6 PUSH2 0x9B9 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xA1F JUMPI PUSH2 0xA1E PUSH2 0x8F2 JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0xA2F DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x9C8 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA4E JUMPI PUSH2 0xA4D PUSH2 0x7BD JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xA6C JUMPI PUSH2 0xA6B PUSH2 0x7C2 JUMP JUMPDEST JUMPDEST PUSH2 0xA78 DUP5 DUP3 DUP6 ADD PUSH2 0xA0A JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xA96 DUP2 PUSH2 0xA81 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xAB1 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xA8D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xAF1 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xAD6 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB08 DUP3 PUSH2 0xAB7 JUMP JUMPDEST PUSH2 0xB12 DUP2 DUP6 PUSH2 0xAC2 JUMP JUMPDEST SWAP4 POP PUSH2 0xB22 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xAD3 JUMP JUMPDEST PUSH2 0xB2B DUP2 PUSH2 0x8FC JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xB50 DUP2 DUP5 PUSH2 0xAFD JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x416363657373436F6E74726F6C3A206163636F756E7420000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB99 PUSH1 0x17 DUP4 PUSH2 0xB58 JUMP JUMPDEST SWAP2 POP PUSH2 0xBA4 DUP3 PUSH2 0xB63 JUMP JUMPDEST PUSH1 0x17 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBBA DUP3 PUSH2 0xAB7 JUMP JUMPDEST PUSH2 0xBC4 DUP2 DUP6 PUSH2 0xB58 JUMP JUMPDEST SWAP4 POP PUSH2 0xBD4 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xAD3 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x206973206D697373696E6720726F6C6520000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC16 PUSH1 0x11 DUP4 PUSH2 0xB58 JUMP JUMPDEST SWAP2 POP PUSH2 0xC21 DUP3 PUSH2 0xBE0 JUMP JUMPDEST PUSH1 0x11 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC37 DUP3 PUSH2 0xB8C JUMP JUMPDEST SWAP2 POP PUSH2 0xC43 DUP3 DUP6 PUSH2 0xBAF JUMP JUMPDEST SWAP2 POP PUSH2 0xC4E DUP3 PUSH2 0xC09 JUMP JUMPDEST SWAP2 POP PUSH2 0xC5A DUP3 DUP5 PUSH2 0xBAF JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xCAA DUP3 PUSH2 0xC66 JUMP JUMPDEST SWAP2 POP PUSH2 0xCB5 DUP4 PUSH2 0xC66 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 MUL PUSH2 0xCC3 DUP2 PUSH2 0xC66 JUMP JUMPDEST SWAP2 POP DUP3 DUP3 DIV DUP5 EQ DUP4 ISZERO OR PUSH2 0xCDA JUMPI PUSH2 0xCD9 PUSH2 0xC70 JUMP JUMPDEST JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCEC DUP3 PUSH2 0xC66 JUMP JUMPDEST SWAP2 POP PUSH2 0xCF7 DUP4 PUSH2 0xC66 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0xD0F JUMPI PUSH2 0xD0E PUSH2 0xC70 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xD4F DUP3 PUSH2 0xC66 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 DUP3 SUB PUSH2 0xD62 JUMPI PUSH2 0xD61 PUSH2 0xC70 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 SUB SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x537472696E67733A20686578206C656E67746820696E73756666696369656E74 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDA3 PUSH1 0x20 DUP4 PUSH2 0xAC2 JUMP JUMPDEST SWAP2 POP PUSH2 0xDAE DUP3 PUSH2 0xD6D JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xDD2 DUP2 PUSH2 0xD96 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 TIMESTAMP 0xAC PUSH3 0x2EA839 PUSH2 0xC316 0xD0 PUSH24 0xEE2232DD2AD760E3427DF26BCE6FE111D4109A0F0E64736F PUSH13 0x63430008120033000000000000 ","sourceMap":"209:1607:29:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1081:130;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1217:233;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;652:122;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;780;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1697:117;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;908:167;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1456:235;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1081:130;1141:7;1167:37;1198:5;1167:30;:37::i;:::-;1160:44;;1081:130;;;:::o;1217:233::-;1288:94;1335:37;1366:5;1335:30;:37::i;:::-;1288:33;:94::i;:::-;1399:44;1427:5;1434:8;1399:27;:44::i;:::-;1217:233;;:::o;652:122::-;706:7;277:4:48;732:35:29;;725:42;;652:122;:::o;780:::-;841:7;888:5;877:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;867:28;;;;;;860:35;;780:122;;;:::o;1697:117::-;1760:47;1789:5;1796:10;1760:28;:47::i;:::-;1697:117;:::o;908:167::-;1003:4;1026:42;1052:5;1059:8;1026:25;:42::i;:::-;1019:49;;908:167;;;;:::o;1456:235::-;1528:94;1575:37;1606:5;1575:30;:37::i;:::-;1528:33;:94::i;:::-;1639:45;1668:5;1675:8;1639:28;:45::i;:::-;1456:235;;:::o;1918:140:48:-;1979:7;2005:23;:21;:23::i;:::-;:29;;:36;2035:5;2005:36;;;;;;;;;;;:46;;;1998:53;;1918:140;;;:::o;1039:89::-;1104:17;1115:5;1104:10;:17::i;:::-;1039:89;:::o;2611:255::-;2688:25;2697:5;2704:8;2688;:25::i;:::-;2683:177;;2786:4;2729:23;:21;:23::i;:::-;:29;;:36;2759:5;2729:36;;;;;;;;;;;:44;;:54;2774:8;2729:54;;;;;;;;;;;;;;;;:61;;;;;;;;;;;;;;;;;;2838:10;2809:40;;2828:8;2809:40;;2821:5;2809:40;;;;;;;;;;2683:177;2611:255;;:::o;2997:256::-;3074:25;3083:5;3090:8;3074;:25::i;:::-;3070:177;;;3172:5;3115:23;:21;:23::i;:::-;:29;;:36;3145:5;3115:36;;;;;;;;;;;:44;;:54;3160:8;3115:54;;;;;;;;;;;;;;;;:62;;;;;;;;;;;;;;;;;;3225:10;3196:40;;3215:8;3196:40;;3208:5;3196:40;;;;;;;;;;3070:177;2997:256;;:::o;1134:180::-;1230:4;1253:23;:21;:23::i;:::-;:29;;:36;1283:5;1253:36;;;;;;;;;;;:44;;:54;1298:8;1253:54;;;;;;;;;;;;;;;;;;;;;;;;;1246:61;;1134:180;;;;:::o;791:242::-;871:30;917:16;203:29;917:49;;1009:8;999:18;;985:42;791:242;:::o;1320:95::-;1379:29;1390:5;1397:10;1379;:29::i;:::-;1320:95;:::o;1421:491::-;1503:25;1512:5;1519:8;1503;:25::i;:::-;1498:408;;1689:42;1717:8;1689:42;;1728:2;1689:19;:42::i;:::-;1802:39;1830:5;1822:14;;1838:2;1802:19;:39::i;:::-;1596:267;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1544:351;;;;;;;;;;;:::i;:::-;;;;;;;;1498:408;1421:491;;:::o;1513:437:7:-;1588:13;1613:19;1658:1;1649:6;1645:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;1635:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1613:47;;1670:15;:6;1677:1;1670:9;;;;;;;;:::i;:::-;;;;;:15;;;;;;;;;;;1695;:6;1702:1;1695:9;;;;;;;;:::i;:::-;;;;;:15;;;;;;;;;;;1725:9;1750:1;1741:6;1737:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;1725:26;;1720:128;1757:1;1753;:5;1720:128;;;1791:8;1808:3;1800:5;:11;1791:21;;;;;;;:::i;:::-;;;;;1779:6;1786:1;1779:9;;;;;;;;:::i;:::-;;;;;:33;;;;;;;;;;;1836:1;1826:11;;;;;1760:3;;;;:::i;:::-;;;1720:128;;;;1874:1;1865:5;:10;1857:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;1936:6;1922:21;;;1513:437;;;;:::o;7:75:61:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:118::-;1112:24;1130:5;1112:24;:::i;:::-;1107:3;1100:37;1025:118;;:::o;1149:222::-;1242:4;1280:2;1269:9;1265:18;1257:26;;1293:71;1361:1;1350:9;1346:17;1337:6;1293:71;:::i;:::-;1149:222;;;;:::o;1377:126::-;1414:7;1454:42;1447:5;1443:54;1432:65;;1377:126;;;:::o;1509:96::-;1546:7;1575:24;1593:5;1575:24;:::i;:::-;1564:35;;1509:96;;;:::o;1611:122::-;1684:24;1702:5;1684:24;:::i;:::-;1677:5;1674:35;1664:63;;1723:1;1720;1713:12;1664:63;1611:122;:::o;1739:139::-;1785:5;1823:6;1810:20;1801:29;;1839:33;1866:5;1839:33;:::i;:::-;1739:139;;;;:::o;1884:474::-;1952:6;1960;2009:2;1997:9;1988:7;1984:23;1980:32;1977:119;;;2015:79;;:::i;:::-;1977:119;2135:1;2160:53;2205:7;2196:6;2185:9;2181:22;2160:53;:::i;:::-;2150:63;;2106:117;2262:2;2288:53;2333:7;2324:6;2313:9;2309:22;2288:53;:::i;:::-;2278:63;;2233:118;1884:474;;;;;:::o;2364:117::-;2473:1;2470;2463:12;2487:117;2596:1;2593;2586:12;2610:102;2651:6;2702:2;2698:7;2693:2;2686:5;2682:14;2678:28;2668:38;;2610:102;;;:::o;2718:180::-;2766:77;2763:1;2756:88;2863:4;2860:1;2853:15;2887:4;2884:1;2877:15;2904:281;2987:27;3009:4;2987:27;:::i;:::-;2979:6;2975:40;3117:6;3105:10;3102:22;3081:18;3069:10;3066:34;3063:62;3060:88;;;3128:18;;:::i;:::-;3060:88;3168:10;3164:2;3157:22;2947:238;2904:281;;:::o;3191:129::-;3225:6;3252:20;;:::i;:::-;3242:30;;3281:33;3309:4;3301:6;3281:33;:::i;:::-;3191:129;;;:::o;3326:308::-;3388:4;3478:18;3470:6;3467:30;3464:56;;;3500:18;;:::i;:::-;3464:56;3538:29;3560:6;3538:29;:::i;:::-;3530:37;;3622:4;3616;3612:15;3604:23;;3326:308;;;:::o;3640:146::-;3737:6;3732:3;3727;3714:30;3778:1;3769:6;3764:3;3760:16;3753:27;3640:146;;;:::o;3792:425::-;3870:5;3895:66;3911:49;3953:6;3911:49;:::i;:::-;3895:66;:::i;:::-;3886:75;;3984:6;3977:5;3970:21;4022:4;4015:5;4011:16;4060:3;4051:6;4046:3;4042:16;4039:25;4036:112;;;4067:79;;:::i;:::-;4036:112;4157:54;4204:6;4199:3;4194;4157:54;:::i;:::-;3876:341;3792:425;;;;;:::o;4237:340::-;4293:5;4342:3;4335:4;4327:6;4323:17;4319:27;4309:122;;4350:79;;:::i;:::-;4309:122;4467:6;4454:20;4492:79;4567:3;4559:6;4552:4;4544:6;4540:17;4492:79;:::i;:::-;4483:88;;4299:278;4237:340;;;;:::o;4583:509::-;4652:6;4701:2;4689:9;4680:7;4676:23;4672:32;4669:119;;;4707:79;;:::i;:::-;4669:119;4855:1;4844:9;4840:17;4827:31;4885:18;4877:6;4874:30;4871:117;;;4907:79;;:::i;:::-;4871:117;5012:63;5067:7;5058:6;5047:9;5043:22;5012:63;:::i;:::-;5002:73;;4798:287;4583:509;;;;:::o;5098:90::-;5132:7;5175:5;5168:13;5161:21;5150:32;;5098:90;;;:::o;5194:109::-;5275:21;5290:5;5275:21;:::i;:::-;5270:3;5263:34;5194:109;;:::o;5309:210::-;5396:4;5434:2;5423:9;5419:18;5411:26;;5447:65;5509:1;5498:9;5494:17;5485:6;5447:65;:::i;:::-;5309:210;;;;:::o;5525:99::-;5577:6;5611:5;5605:12;5595:22;;5525:99;;;:::o;5630:169::-;5714:11;5748:6;5743:3;5736:19;5788:4;5783:3;5779:14;5764:29;;5630:169;;;;:::o;5805:246::-;5886:1;5896:113;5910:6;5907:1;5904:13;5896:113;;;5995:1;5990:3;5986:11;5980:18;5976:1;5971:3;5967:11;5960:39;5932:2;5929:1;5925:10;5920:15;;5896:113;;;6043:1;6034:6;6029:3;6025:16;6018:27;5867:184;5805:246;;;:::o;6057:377::-;6145:3;6173:39;6206:5;6173:39;:::i;:::-;6228:71;6292:6;6287:3;6228:71;:::i;:::-;6221:78;;6308:65;6366:6;6361:3;6354:4;6347:5;6343:16;6308:65;:::i;:::-;6398:29;6420:6;6398:29;:::i;:::-;6393:3;6389:39;6382:46;;6149:285;6057:377;;;;:::o;6440:313::-;6553:4;6591:2;6580:9;6576:18;6568:26;;6640:9;6634:4;6630:20;6626:1;6615:9;6611:17;6604:47;6668:78;6741:4;6732:6;6668:78;:::i;:::-;6660:86;;6440:313;;;;:::o;6759:148::-;6861:11;6898:3;6883:18;;6759:148;;;;:::o;6913:173::-;7053:25;7049:1;7041:6;7037:14;7030:49;6913:173;:::o;7092:402::-;7252:3;7273:85;7355:2;7350:3;7273:85;:::i;:::-;7266:92;;7367:93;7456:3;7367:93;:::i;:::-;7485:2;7480:3;7476:12;7469:19;;7092:402;;;:::o;7500:390::-;7606:3;7634:39;7667:5;7634:39;:::i;:::-;7689:89;7771:6;7766:3;7689:89;:::i;:::-;7682:96;;7787:65;7845:6;7840:3;7833:4;7826:5;7822:16;7787:65;:::i;:::-;7877:6;7872:3;7868:16;7861:23;;7610:280;7500:390;;;;:::o;7896:167::-;8036:19;8032:1;8024:6;8020:14;8013:43;7896:167;:::o;8069:402::-;8229:3;8250:85;8332:2;8327:3;8250:85;:::i;:::-;8243:92;;8344:93;8433:3;8344:93;:::i;:::-;8462:2;8457:3;8453:12;8446:19;;8069:402;;;:::o;8477:967::-;8859:3;8881:148;9025:3;8881:148;:::i;:::-;8874:155;;9046:95;9137:3;9128:6;9046:95;:::i;:::-;9039:102;;9158:148;9302:3;9158:148;:::i;:::-;9151:155;;9323:95;9414:3;9405:6;9323:95;:::i;:::-;9316:102;;9435:3;9428:10;;8477:967;;;;;:::o;9450:77::-;9487:7;9516:5;9505:16;;9450:77;;;:::o;9533:180::-;9581:77;9578:1;9571:88;9678:4;9675:1;9668:15;9702:4;9699:1;9692:15;9719:410;9759:7;9782:20;9800:1;9782:20;:::i;:::-;9777:25;;9816:20;9834:1;9816:20;:::i;:::-;9811:25;;9871:1;9868;9864:9;9893:30;9911:11;9893:30;:::i;:::-;9882:41;;10072:1;10063:7;10059:15;10056:1;10053:22;10033:1;10026:9;10006:83;9983:139;;10102:18;;:::i;:::-;9983:139;9767:362;9719:410;;;;:::o;10135:191::-;10175:3;10194:20;10212:1;10194:20;:::i;:::-;10189:25;;10228:20;10246:1;10228:20;:::i;:::-;10223:25;;10271:1;10268;10264:9;10257:16;;10292:3;10289:1;10286:10;10283:36;;;10299:18;;:::i;:::-;10283:36;10135:191;;;;:::o;10332:180::-;10380:77;10377:1;10370:88;10477:4;10474:1;10467:15;10501:4;10498:1;10491:15;10518:171;10557:3;10580:24;10598:5;10580:24;:::i;:::-;10571:33;;10626:4;10619:5;10616:15;10613:41;;10634:18;;:::i;:::-;10613:41;10681:1;10674:5;10670:13;10663:20;;10518:171;;;:::o;10695:182::-;10835:34;10831:1;10823:6;10819:14;10812:58;10695:182;:::o;10883:366::-;11025:3;11046:67;11110:2;11105:3;11046:67;:::i;:::-;11039:74;;11122:93;11211:3;11122:93;:::i;:::-;11240:2;11235:3;11231:12;11224:19;;10883:366;;;:::o;11255:419::-;11421:4;11459:2;11448:9;11444:18;11436:26;;11508:9;11502:4;11498:20;11494:1;11483:9;11479:17;11472:47;11536:131;11662:4;11536:131;:::i;:::-;11528:139;;11255:419;;;:::o"},"methodIdentifiers":{"getDefaultAdminRole()":"52a9c8d7","getRole(string)":"6e9067fb","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","renounceRole(bytes32)":"8bb9c5bf","revokeRole(bytes32,address)":"d547741f"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getDefaultAdminRole\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_role\",\"type\":\"string\"}],\"name\":\"getRole\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_role\",\"type\":\"bytes32\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/facets/utils/AccessControl.sol\":\"AccessControl\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xa4d1d62251f8574deb032a35fc948386a9b4de74b812d4f545a1ac120486b48a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c969013129ba9e651a20735ef659fef6d8a1139ea3607bd4b26ddea2d645634\",\"dweb:/ipfs/QmVhVa6LGuzAcB8qgDtVHRkucn4ihj5UZr8xBLcJkP6ucb\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa1e8e83cd0087785df04ac79fb395d9f3684caeaf973d9e2c71caef723a3a5d6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33bbf48cc069be677705037ba7520c22b1b622c23b33e1a71495f2d36549d40b\",\"dweb:/ipfs/Qmct36zWXv3j7LZB83uwbg7TXwnZSN1fqHNDZ93GG98bGz\"]},\"contracts/facets/utils/AccessControl.sol\":{\"keccak256\":\"0xb31b4e6c810781cd45c00a5e2caf1747a322da20313bb0af404035957effdad6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d5d7118e9d0822db75f20c73e3c18b0c8fc169e61bbbbd90b9667b0248355cc7\",\"dweb:/ipfs/QmYCyDTDxVZ83BgD3MLhzTUgNd7YxPvSiATfutwpCxiGjM\"]},\"contracts/interfaces/utils/IAccessControl.sol\":{\"keccak256\":\"0xc5635aad433711323ec6cd473aedaca97383d910663bb74a5cda1e8e3323d86d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://404b89c843a0682fcc8fe55740ea803cc4dd85f04398c224202ec599f80d4288\",\"dweb:/ipfs/QmQgt4gNDNX3Khk1R1tTaSccvqrypibWxUjXNeE7VAAtm9\"]},\"contracts/libraries/utils/LibAccessControl.sol\":{\"keccak256\":\"0xebec727abd5564cc66e0b402d9ceb87168e19d73bd4853b034944b61a420f912\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://5390c191313856ad3f5d863b71d8a9d29a793c73cc6fecd9ef41abff262131a2\",\"dweb:/ipfs/QmUK83c2nwSR1L8M2rADMkJtsaBkADhYN2W3xuoxaQ2eC9\"]}},\"version\":1}"}},"contracts/facets/utils/Cut.sol":{"Cut":{"abi":[{"inputs":[{"internalType":"address","name":"_initializationContractAddress","type":"address"},{"internalType":"bytes","name":"_calldata","type":"bytes"}],"name":"InitializationFunctionReverted","type":"error"},{"anonymous":false,"inputs":[{"components":[{"internalType":"address","name":"facetAddress","type":"address"},{"internalType":"enum ICut.FacetCutAction","name":"action","type":"uint8"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"indexed":false,"internalType":"struct ICut.FacetCut[]","name":"_diamondCut","type":"tuple[]"},{"indexed":false,"internalType":"address","name":"_init","type":"address"},{"indexed":false,"internalType":"bytes","name":"_calldata","type":"bytes"}],"name":"DiamondCut","type":"event"},{"inputs":[{"components":[{"internalType":"address","name":"facetAddress","type":"address"},{"internalType":"enum ICut.FacetCutAction","name":"action","type":"uint8"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"internalType":"struct ICut.FacetCut[]","name":"_diamondCut","type":"tuple[]"},{"internalType":"address","name":"_init","type":"address"},{"internalType":"bytes","name":"_calldata","type":"bytes"}],"name":"diamondCut","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b506129a4806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80631f931c1c14610030575b600080fd5b61004a600480360381019061004591906118d8565b61004c565b005b61007960405160200161005e906119ca565b604051602081830303815290604052805190602001206100db565b6100d48585906100899190611cf3565b8484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506100e7565b5050505050565b6100e481610316565b50565b60005b83518110156102cb57600084828151811061010857610107611d08565b5b60200260200101516020015190506000600281111561012a57610129611d37565b5b81600281111561013d5761013c611d37565b5b0361018d5761018885838151811061015857610157611d08565b5b60200260200101516000015186848151811061017757610176611d08565b5b602002602001015160400151610323565b6102b7565b600160028111156101a1576101a0611d37565b5b8160028111156101b4576101b3611d37565b5b03610204576101ff8583815181106101cf576101ce611d08565b5b6020026020010151600001518684815181106101ee576101ed611d08565b5b60200260200101516040015161059a565b6102b6565b60028081111561021757610216611d37565b5b81600281111561022a57610229611d37565b5b0361027a5761027585838151811061024557610244611d08565b5b60200260200101516000015186848151811061026457610263611d08565b5b60200260200101516040015161081b565b6102b5565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102ac90611dd8565b60405180910390fd5b5b5b5080806102c390611e31565b9150506100ea565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb6738383836040516102ff9392919061212e565b60405180910390a161031182826109a6565b505050565b6103208133610ac8565b50565b6000815111610367576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035e906121e5565b60405180910390fd5b6000610371610b65565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036103e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d990612277565b60405180910390fd5b60008160010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054905090506000816bffffffffffffffffffffffff160361044f5761044e8285610b92565b5b60005b83518110156105935760008482815181106104705761046f611d08565b5b602002602001015190506000846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610564576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055b90612309565b60405180910390fd5b6105708583868a610c6d565b838061057b90612341565b9450505050808061058b90611e31565b915050610452565b5050505050565b60008151116105de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d5906121e5565b60405180910390fd5b60006105e8610b65565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610659576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065090612277565b60405180910390fd5b60008160010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054905090506000816bffffffffffffffffffffffff16036106c6576106c58285610b92565b5b60005b83518110156108145760008482815181106106e7576106e6611d08565b5b602002602001015190506000846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036107da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d1906123e7565b60405180910390fd5b6107e5858284610e1a565b6107f18583868a610c6d565b83806107fc90612341565b9450505050808061080c90611e31565b9150506106c9565b5050505050565b600081511161085f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610856906121e5565b60405180910390fd5b6000610869610b65565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146108da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d190612479565b60405180910390fd5b60005b82518110156109a05760008382815181106108fb576108fa611d08565b5b602002602001015190506000836000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061098b848284610e1a565b5050808061099890611e31565b9150506108dd565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160315610ac4576109fd826040518060600160405280602881526020016129236028913961147c565b6000808373ffffffffffffffffffffffffffffffffffffffff1683604051610a2591906124d5565b600060405180830381855af49150503d8060008114610a60576040519150601f19603f3d011682016040523d82523d6000602084013e610a65565b606091505b509150915081610ac157600081511115610a825780518082602001fd5b83836040517f192105d7000000000000000000000000000000000000000000000000000000008152600401610ab89291906124ec565b60405180910390fd5b50505b5050565b610ad282826114ce565b610b6157610af78173ffffffffffffffffffffffffffffffffffffffff166014611542565b610b058360001c6020611542565b604051602001610b169291906125fb565b6040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b58919061266e565b60405180910390fd5b5050565b6000807fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90508091505090565b610bb48160405180606001604052806024815260200161294b6024913961147c565b81600201805490508260010160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555081600201819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b81846000016000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508360010160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018390806001815401808255809150506001900390600052602060002090600891828204019190066004029091909190916101000a81548163ffffffff021916908360e01c021790555080846000016000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8090612702565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ef7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eee90612794565b60405180910390fd5b6000836000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff169050600060018560010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000180549050610fce91906127b4565b90508082146111625760008560010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001828154811061102f5761102e611d08565b5b90600052602060002090600891828204019190066004029054906101000a900460e01b9050808660010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000184815481106110ab576110aa611d08565b5b90600052602060002090600891828204019190066004026101000a81548163ffffffff021916908360e01c021790555082866000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550505b8460010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054806111b6576111b56127e8565b5b60019003818190600052602060002090600891828204019190066004026101000a81549063ffffffff02191690559055846000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a8154906bffffffffffffffffffffffff0219169055505060008103611475576000600186600201805490506112a091906127b4565b905060008660010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490508181146113e157600087600201838154811061130a57611309611d08565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508088600201838154811061134e5761134d611d08565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818860010160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550505b866002018054806113f5576113f46127e8565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590558660010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000905550505b5050505050565b6000823b90506000811182906114c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bf919061266e565b60405180910390fd5b50505050565b60006114d861177e565b600001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6060600060028360026115559190612817565b61155f9190612859565b67ffffffffffffffff811115611578576115776119fb565b5b6040519080825280601f01601f1916602001820160405280156115aa5781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106115e2576115e1611d08565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061164657611645611d08565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026116869190612817565b6116909190612859565b90505b6001811115611730577f3031323334353637383961626364656600000000000000000000000000000000600f8616601081106116d2576116d1611d08565b5b1a60f81b8282815181106116e9576116e8611d08565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c9450806117299061288d565b9050611693565b5060008414611774576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176b90612902565b60405180910390fd5b8091505092915050565b6000807f4cd15452b25e815d3f9d1a3c7edd985a178edf5eb3461a1acbf855517423d69490508091505090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f8401126117e4576117e36117bf565b5b8235905067ffffffffffffffff811115611801576118006117c4565b5b60208301915083602082028301111561181d5761181c6117c9565b5b9250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061184f82611824565b9050919050565b61185f81611844565b811461186a57600080fd5b50565b60008135905061187c81611856565b92915050565b60008083601f840112611898576118976117bf565b5b8235905067ffffffffffffffff8111156118b5576118b46117c4565b5b6020830191508360018202830111156118d1576118d06117c9565b5b9250929050565b6000806000806000606086880312156118f4576118f36117b5565b5b600086013567ffffffffffffffff811115611912576119116117ba565b5b61191e888289016117ce565b955095505060206119318882890161186d565b935050604086013567ffffffffffffffff811115611952576119516117ba565b5b61195e88828901611882565b92509250509295509295909350565b600082825260208201905092915050565b7f4d41494e5441494e45525f524f4c450000000000000000000000000000000000600082015250565b60006119b4600f8361196d565b91506119bf8261197e565b602082019050919050565b600060208201905081810360008301526119e3816119a7565b9050919050565b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611a33826119ea565b810181811067ffffffffffffffff82111715611a5257611a516119fb565b5b80604052505050565b6000611a656117ab565b9050611a718282611a2a565b919050565b600067ffffffffffffffff821115611a9157611a906119fb565b5b602082029050602081019050919050565b600080fd5b600080fd5b60038110611ab957600080fd5b50565b600081359050611acb81611aac565b92915050565b600067ffffffffffffffff821115611aec57611aeb6119fb565b5b602082029050602081019050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611b3281611afd565b8114611b3d57600080fd5b50565b600081359050611b4f81611b29565b92915050565b6000611b68611b6384611ad1565b611a5b565b90508083825260208201905060208402830185811115611b8b57611b8a6117c9565b5b835b81811015611bb45780611ba08882611b40565b845260208401935050602081019050611b8d565b5050509392505050565b600082601f830112611bd357611bd26117bf565b5b8135611be3848260208601611b55565b91505092915050565b600060608284031215611c0257611c01611aa2565b5b611c0c6060611a5b565b90506000611c1c8482850161186d565b6000830152506020611c3084828501611abc565b602083015250604082013567ffffffffffffffff811115611c5457611c53611aa7565b5b611c6084828501611bbe565b60408301525092915050565b6000611c7f611c7a84611a76565b611a5b565b90508083825260208201905060208402830185811115611ca257611ca16117c9565b5b835b81811015611ce957803567ffffffffffffffff811115611cc757611cc66117bf565b5b808601611cd48982611bec565b85526020850194505050602081019050611ca4565b5050509392505050565b6000611d00368484611c6c565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4c69624469616d6f6e644375743a20496e636f7272656374204661636574437560008201527f74416374696f6e00000000000000000000000000000000000000000000000000602082015250565b6000611dc260278361196d565b9150611dcd82611d66565b604082019050919050565b60006020820190508181036000830152611df181611db5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000819050919050565b6000611e3c82611e27565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611e6e57611e6d611df8565b5b600182019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b611eae81611844565b82525050565b60038110611ec557611ec4611d37565b5b50565b6000819050611ed682611eb4565b919050565b6000611ee682611ec8565b9050919050565b611ef681611edb565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b611f3181611afd565b82525050565b6000611f438383611f28565b60208301905092915050565b6000602082019050919050565b6000611f6782611efc565b611f718185611f07565b9350611f7c83611f18565b8060005b83811015611fad578151611f948882611f37565b9750611f9f83611f4f565b925050600181019050611f80565b5085935050505092915050565b6000606083016000830151611fd26000860182611ea5565b506020830151611fe56020860182611eed565b5060408301518482036040860152611ffd8282611f5c565b9150508091505092915050565b60006120168383611fba565b905092915050565b6000602082019050919050565b600061203682611e79565b6120408185611e84565b93508360208202850161205285611e95565b8060005b8581101561208e578484038952815161206f858261200a565b945061207a8361201e565b925060208a01995050600181019050612056565b50829750879550505050505092915050565b6120a981611844565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b838110156120e95780820151818401526020810190506120ce565b60008484015250505050565b6000612100826120af565b61210a81856120ba565b935061211a8185602086016120cb565b612123816119ea565b840191505092915050565b60006060820190508181036000830152612148818661202b565b905061215760208301856120a0565b818103604083015261216981846120f5565b9050949350505050565b7f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660008201527f6163657420746f20637574000000000000000000000000000000000000000000602082015250565b60006121cf602b8361196d565b91506121da82612173565b604082019050919050565b600060208201905081810360008301526121fe816121c2565b9050919050565b7f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260008201527f6520616464726573732830290000000000000000000000000000000000000000602082015250565b6000612261602c8361196d565b915061226c82612205565b604082019050919050565b6000602082019050818103600083015261229081612254565b9050919050565b7f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f60008201527f6e207468617420616c7265616479206578697374730000000000000000000000602082015250565b60006122f360358361196d565b91506122fe82612297565b604082019050919050565b60006020820190508181036000830152612322816122e6565b9050919050565b60006bffffffffffffffffffffffff82169050919050565b600061234c82612329565b91506bffffffffffffffffffffffff820361236a57612369611df8565b5b600182019050919050565b7f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60008201527f6374696f6e20776974682073616d652066756e6374696f6e0000000000000000602082015250565b60006123d160388361196d565b91506123dc82612375565b604082019050919050565b60006020820190508181036000830152612400816123c4565b9050919050565b7f4c69624469616d6f6e644375743a2052656d6f7665206661636574206164647260008201527f657373206d757374206265206164647265737328302900000000000000000000602082015250565b600061246360368361196d565b915061246e82612407565b604082019050919050565b6000602082019050818103600083015261249281612456565b9050919050565b600081905092915050565b60006124af826120af565b6124b98185612499565b93506124c98185602086016120cb565b80840191505092915050565b60006124e182846124a4565b915081905092915050565b600060408201905061250160008301856120a0565b818103602083015261251381846120f5565b90509392505050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b600061255d60178361251c565b915061256882612527565b601782019050919050565b600081519050919050565b600061258982612573565b612593818561251c565b93506125a38185602086016120cb565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b60006125e560118361251c565b91506125f0826125af565b601182019050919050565b600061260682612550565b9150612612828561257e565b915061261d826125d8565b9150612629828461257e565b91508190509392505050565b600061264082612573565b61264a818561196d565b935061265a8185602086016120cb565b612663816119ea565b840191505092915050565b600060208201905081810360008301526126888184612635565b905092915050565b7f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360008201527f74696f6e207468617420646f65736e2774206578697374000000000000000000602082015250565b60006126ec60378361196d565b91506126f782612690565b604082019050919050565b6000602082019050818103600083015261271b816126df565b9050919050565b7f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560008201527f7461626c652066756e6374696f6e000000000000000000000000000000000000602082015250565b600061277e602e8361196d565b915061278982612722565b604082019050919050565b600060208201905081810360008301526127ad81612771565b9050919050565b60006127bf82611e27565b91506127ca83611e27565b92508282039050818111156127e2576127e1611df8565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600061282282611e27565b915061282d83611e27565b925082820261283b81611e27565b9150828204841483151761285257612851611df8565b5b5092915050565b600061286482611e27565b915061286f83611e27565b925082820190508082111561288757612886611df8565b5b92915050565b600061289882611e27565b9150600082036128ab576128aa611df8565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b60006128ec60208361196d565b91506128f7826128b6565b602082019050919050565b6000602082019050818103600083015261291b816128df565b905091905056fe4c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465a2646970667358221220fc93d6581ef88c003694ad3b7847e83e3748d87f743d9a64c8f96766c27475c564736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x29A4 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1F931C1C EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x45 SWAP2 SWAP1 PUSH2 0x18D8 JUMP JUMPDEST PUSH2 0x4C JUMP JUMPDEST STOP JUMPDEST PUSH2 0x79 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x5E SWAP1 PUSH2 0x19CA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0xDB JUMP JUMPDEST PUSH2 0xD4 DUP6 DUP6 SWAP1 PUSH2 0x89 SWAP2 SWAP1 PUSH2 0x1CF3 JUMP JUMPDEST DUP5 DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP PUSH2 0xE7 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0xE4 DUP2 PUSH2 0x316 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x2CB JUMPI PUSH1 0x0 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x108 JUMPI PUSH2 0x107 PUSH2 0x1D08 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x12A JUMPI PUSH2 0x129 PUSH2 0x1D37 JUMP JUMPDEST JUMPDEST DUP2 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x13D JUMPI PUSH2 0x13C PUSH2 0x1D37 JUMP JUMPDEST JUMPDEST SUB PUSH2 0x18D JUMPI PUSH2 0x188 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x158 JUMPI PUSH2 0x157 PUSH2 0x1D08 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x177 JUMPI PUSH2 0x176 PUSH2 0x1D08 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD PUSH2 0x323 JUMP JUMPDEST PUSH2 0x2B7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x1A1 JUMPI PUSH2 0x1A0 PUSH2 0x1D37 JUMP JUMPDEST JUMPDEST DUP2 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x1B4 JUMPI PUSH2 0x1B3 PUSH2 0x1D37 JUMP JUMPDEST JUMPDEST SUB PUSH2 0x204 JUMPI PUSH2 0x1FF DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1CF JUMPI PUSH2 0x1CE PUSH2 0x1D08 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1EE JUMPI PUSH2 0x1ED PUSH2 0x1D08 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD PUSH2 0x59A JUMP JUMPDEST PUSH2 0x2B6 JUMP JUMPDEST PUSH1 0x2 DUP1 DUP2 GT ISZERO PUSH2 0x217 JUMPI PUSH2 0x216 PUSH2 0x1D37 JUMP JUMPDEST JUMPDEST DUP2 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x22A JUMPI PUSH2 0x229 PUSH2 0x1D37 JUMP JUMPDEST JUMPDEST SUB PUSH2 0x27A JUMPI PUSH2 0x275 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x245 JUMPI PUSH2 0x244 PUSH2 0x1D08 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x264 JUMPI PUSH2 0x263 PUSH2 0x1D08 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD PUSH2 0x81B JUMP JUMPDEST PUSH2 0x2B5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AC SWAP1 PUSH2 0x1DD8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMPDEST JUMPDEST POP DUP1 DUP1 PUSH2 0x2C3 SWAP1 PUSH2 0x1E31 JUMP JUMPDEST SWAP2 POP POP PUSH2 0xEA JUMP JUMPDEST POP PUSH32 0x8FAA70878671CCD212D20771B795C50AF8FD3FF6CF27F4BDE57E5D4DE0AEB673 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH2 0x2FF SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x212E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH2 0x311 DUP3 DUP3 PUSH2 0x9A6 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x320 DUP2 CALLER PUSH2 0xAC8 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD GT PUSH2 0x367 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x35E SWAP1 PUSH2 0x21E5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x371 PUSH2 0xB65 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x3E2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3D9 SWAP1 PUSH2 0x2277 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 ADD PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP1 SLOAD SWAP1 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x44F JUMPI PUSH2 0x44E DUP3 DUP6 PUSH2 0xB92 JUMP JUMPDEST JUMPDEST PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x593 JUMPI PUSH1 0x0 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x470 JUMPI PUSH2 0x46F PUSH2 0x1D08 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP5 PUSH1 0x0 ADD PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x564 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP1 PUSH2 0x2309 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x570 DUP6 DUP4 DUP7 DUP11 PUSH2 0xC6D JUMP JUMPDEST DUP4 DUP1 PUSH2 0x57B SWAP1 PUSH2 0x2341 JUMP JUMPDEST SWAP5 POP POP POP POP DUP1 DUP1 PUSH2 0x58B SWAP1 PUSH2 0x1E31 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x452 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD GT PUSH2 0x5DE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5D5 SWAP1 PUSH2 0x21E5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x5E8 PUSH2 0xB65 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x659 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x650 SWAP1 PUSH2 0x2277 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 ADD PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP1 SLOAD SWAP1 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x6C6 JUMPI PUSH2 0x6C5 DUP3 DUP6 PUSH2 0xB92 JUMP JUMPDEST JUMPDEST PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x814 JUMPI PUSH1 0x0 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x6E7 JUMPI PUSH2 0x6E6 PUSH2 0x1D08 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP5 PUSH1 0x0 ADD PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x7DA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7D1 SWAP1 PUSH2 0x23E7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x7E5 DUP6 DUP3 DUP5 PUSH2 0xE1A JUMP JUMPDEST PUSH2 0x7F1 DUP6 DUP4 DUP7 DUP11 PUSH2 0xC6D JUMP JUMPDEST DUP4 DUP1 PUSH2 0x7FC SWAP1 PUSH2 0x2341 JUMP JUMPDEST SWAP5 POP POP POP POP DUP1 DUP1 PUSH2 0x80C SWAP1 PUSH2 0x1E31 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x6C9 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD GT PUSH2 0x85F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x856 SWAP1 PUSH2 0x21E5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x869 PUSH2 0xB65 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x8DA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8D1 SWAP1 PUSH2 0x2479 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x9A0 JUMPI PUSH1 0x0 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x8FB JUMPI PUSH2 0x8FA PUSH2 0x1D08 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x0 ADD PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH2 0x98B DUP5 DUP3 DUP5 PUSH2 0xE1A JUMP JUMPDEST POP POP DUP1 DUP1 PUSH2 0x998 SWAP1 PUSH2 0x1E31 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x8DD JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB ISZERO PUSH2 0xAC4 JUMPI PUSH2 0x9FD DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2923 PUSH1 0x28 SWAP2 CODECOPY PUSH2 0x147C JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD PUSH2 0xA25 SWAP2 SWAP1 PUSH2 0x24D5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xA60 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xA65 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0xAC1 JUMPI PUSH1 0x0 DUP2 MLOAD GT ISZERO PUSH2 0xA82 JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST DUP4 DUP4 PUSH1 0x40 MLOAD PUSH32 0x192105D700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xAB8 SWAP3 SWAP2 SWAP1 PUSH2 0x24EC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0xAD2 DUP3 DUP3 PUSH2 0x14CE JUMP JUMPDEST PUSH2 0xB61 JUMPI PUSH2 0xAF7 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x14 PUSH2 0x1542 JUMP JUMPDEST PUSH2 0xB05 DUP4 PUSH1 0x0 SHR PUSH1 0x20 PUSH2 0x1542 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xB16 SWAP3 SWAP2 SWAP1 PUSH2 0x25FB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB58 SWAP2 SWAP1 PUSH2 0x266E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131C SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH2 0xBB4 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x294B PUSH1 0x24 SWAP2 CODECOPY PUSH2 0x147C JUMP JUMPDEST DUP2 PUSH1 0x2 ADD DUP1 SLOAD SWAP1 POP DUP3 PUSH1 0x1 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 ADD DUP2 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP POP JUMP JUMPDEST DUP2 DUP5 PUSH1 0x0 ADD PUSH1 0x0 DUP6 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP4 PUSH1 0x1 ADD PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP4 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x8 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x4 MUL SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0xE0 SHR MUL OR SWAP1 SSTORE POP DUP1 DUP5 PUSH1 0x0 ADD PUSH1 0x0 DUP6 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xE89 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE80 SWAP1 PUSH2 0x2702 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xEF7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xEEE SWAP1 PUSH2 0x2794 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x0 ADD PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP6 PUSH1 0x1 ADD PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP1 SLOAD SWAP1 POP PUSH2 0xFCE SWAP2 SWAP1 PUSH2 0x27B4 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 EQ PUSH2 0x1162 JUMPI PUSH1 0x0 DUP6 PUSH1 0x1 ADD PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x102F JUMPI PUSH2 0x102E PUSH2 0x1D08 JUMP JUMPDEST JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x8 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x4 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xE0 SHL SWAP1 POP DUP1 DUP7 PUSH1 0x1 ADD PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x10AB JUMPI PUSH2 0x10AA PUSH2 0x1D08 JUMP JUMPDEST JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x8 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x4 MUL PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0xE0 SHR MUL OR SWAP1 SSTORE POP DUP3 DUP7 PUSH1 0x0 ADD PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP JUMPDEST DUP5 PUSH1 0x1 ADD PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP1 SLOAD DUP1 PUSH2 0x11B6 JUMPI PUSH2 0x11B5 PUSH2 0x27E8 JUMP JUMPDEST JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x8 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x4 MUL PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 SSTORE SWAP1 SSTORE DUP5 PUSH1 0x0 ADD PUSH1 0x0 DUP5 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP1 DUP3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x0 DUP3 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE POP POP PUSH1 0x0 DUP2 SUB PUSH2 0x1475 JUMPI PUSH1 0x0 PUSH1 0x1 DUP7 PUSH1 0x2 ADD DUP1 SLOAD SWAP1 POP PUSH2 0x12A0 SWAP2 SWAP1 PUSH2 0x27B4 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 PUSH1 0x1 ADD PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 POP DUP2 DUP2 EQ PUSH2 0x13E1 JUMPI PUSH1 0x0 DUP8 PUSH1 0x2 ADD DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x130A JUMPI PUSH2 0x1309 PUSH2 0x1D08 JUMP JUMPDEST JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP1 DUP9 PUSH1 0x2 ADD DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x134E JUMPI PUSH2 0x134D PUSH2 0x1D08 JUMP JUMPDEST JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 DUP9 PUSH1 0x1 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP POP JUMPDEST DUP7 PUSH1 0x2 ADD DUP1 SLOAD DUP1 PUSH2 0x13F5 JUMPI PUSH2 0x13F4 PUSH2 0x27E8 JUMP JUMPDEST JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE SWAP1 SSTORE DUP7 PUSH1 0x1 ADD PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SSTORE POP POP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 EXTCODESIZE SWAP1 POP PUSH1 0x0 DUP2 GT DUP3 SWAP1 PUSH2 0x14C8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x14BF SWAP2 SWAP1 PUSH2 0x266E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14D8 PUSH2 0x177E JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x2 DUP4 PUSH1 0x2 PUSH2 0x1555 SWAP2 SWAP1 PUSH2 0x2817 JUMP JUMPDEST PUSH2 0x155F SWAP2 SWAP1 PUSH2 0x2859 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1578 JUMPI PUSH2 0x1577 PUSH2 0x19FB JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x15AA JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x15E2 JUMPI PUSH2 0x15E1 PUSH2 0x1D08 JUMP JUMPDEST JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH32 0x7800000000000000000000000000000000000000000000000000000000000000 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x1646 JUMPI PUSH2 0x1645 PUSH2 0x1D08 JUMP JUMPDEST JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x0 PUSH1 0x1 DUP5 PUSH1 0x2 PUSH2 0x1686 SWAP2 SWAP1 PUSH2 0x2817 JUMP JUMPDEST PUSH2 0x1690 SWAP2 SWAP1 PUSH2 0x2859 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x1730 JUMPI PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 PUSH1 0xF DUP7 AND PUSH1 0x10 DUP2 LT PUSH2 0x16D2 JUMPI PUSH2 0x16D1 PUSH2 0x1D08 JUMP JUMPDEST JUMPDEST BYTE PUSH1 0xF8 SHL DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x16E9 JUMPI PUSH2 0x16E8 PUSH2 0x1D08 JUMP JUMPDEST JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x4 DUP6 SWAP1 SHR SWAP5 POP DUP1 PUSH2 0x1729 SWAP1 PUSH2 0x288D JUMP JUMPDEST SWAP1 POP PUSH2 0x1693 JUMP JUMPDEST POP PUSH1 0x0 DUP5 EQ PUSH2 0x1774 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x176B SWAP1 PUSH2 0x2902 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x4CD15452B25E815D3F9D1A3C7EDD985A178EDF5EB3461A1ACBF855517423D694 SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x17E4 JUMPI PUSH2 0x17E3 PUSH2 0x17BF JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1801 JUMPI PUSH2 0x1800 PUSH2 0x17C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x181D JUMPI PUSH2 0x181C PUSH2 0x17C9 JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x184F DUP3 PUSH2 0x1824 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x185F DUP2 PUSH2 0x1844 JUMP JUMPDEST DUP2 EQ PUSH2 0x186A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x187C DUP2 PUSH2 0x1856 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x1898 JUMPI PUSH2 0x1897 PUSH2 0x17BF JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x18B5 JUMPI PUSH2 0x18B4 PUSH2 0x17C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x18D1 JUMPI PUSH2 0x18D0 PUSH2 0x17C9 JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x18F4 JUMPI PUSH2 0x18F3 PUSH2 0x17B5 JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1912 JUMPI PUSH2 0x1911 PUSH2 0x17BA JUMP JUMPDEST JUMPDEST PUSH2 0x191E DUP9 DUP3 DUP10 ADD PUSH2 0x17CE JUMP JUMPDEST SWAP6 POP SWAP6 POP POP PUSH1 0x20 PUSH2 0x1931 DUP9 DUP3 DUP10 ADD PUSH2 0x186D JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1952 JUMPI PUSH2 0x1951 PUSH2 0x17BA JUMP JUMPDEST JUMPDEST PUSH2 0x195E DUP9 DUP3 DUP10 ADD PUSH2 0x1882 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4D41494E5441494E45525F524F4C450000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x19B4 PUSH1 0xF DUP4 PUSH2 0x196D JUMP JUMPDEST SWAP2 POP PUSH2 0x19BF DUP3 PUSH2 0x197E JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x19E3 DUP2 PUSH2 0x19A7 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x1A33 DUP3 PUSH2 0x19EA JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x1A52 JUMPI PUSH2 0x1A51 PUSH2 0x19FB JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A65 PUSH2 0x17AB JUMP JUMPDEST SWAP1 POP PUSH2 0x1A71 DUP3 DUP3 PUSH2 0x1A2A JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1A91 JUMPI PUSH2 0x1A90 PUSH2 0x19FB JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 DUP2 LT PUSH2 0x1AB9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1ACB DUP2 PUSH2 0x1AAC JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1AEC JUMPI PUSH2 0x1AEB PUSH2 0x19FB JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1B32 DUP2 PUSH2 0x1AFD JUMP JUMPDEST DUP2 EQ PUSH2 0x1B3D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1B4F DUP2 PUSH2 0x1B29 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B68 PUSH2 0x1B63 DUP5 PUSH2 0x1AD1 JUMP JUMPDEST PUSH2 0x1A5B JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x1B8B JUMPI PUSH2 0x1B8A PUSH2 0x17C9 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1BB4 JUMPI DUP1 PUSH2 0x1BA0 DUP9 DUP3 PUSH2 0x1B40 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x1B8D JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1BD3 JUMPI PUSH2 0x1BD2 PUSH2 0x17BF JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1BE3 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x1B55 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1C02 JUMPI PUSH2 0x1C01 PUSH2 0x1AA2 JUMP JUMPDEST JUMPDEST PUSH2 0x1C0C PUSH1 0x60 PUSH2 0x1A5B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1C1C DUP5 DUP3 DUP6 ADD PUSH2 0x186D JUMP JUMPDEST PUSH1 0x0 DUP4 ADD MSTORE POP PUSH1 0x20 PUSH2 0x1C30 DUP5 DUP3 DUP6 ADD PUSH2 0x1ABC JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1C54 JUMPI PUSH2 0x1C53 PUSH2 0x1AA7 JUMP JUMPDEST JUMPDEST PUSH2 0x1C60 DUP5 DUP3 DUP6 ADD PUSH2 0x1BBE JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C7F PUSH2 0x1C7A DUP5 PUSH2 0x1A76 JUMP JUMPDEST PUSH2 0x1A5B JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x1CA2 JUMPI PUSH2 0x1CA1 PUSH2 0x17C9 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1CE9 JUMPI DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1CC7 JUMPI PUSH2 0x1CC6 PUSH2 0x17BF JUMP JUMPDEST JUMPDEST DUP1 DUP7 ADD PUSH2 0x1CD4 DUP10 DUP3 PUSH2 0x1BEC JUMP JUMPDEST DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP5 POP POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x1CA4 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D00 CALLDATASIZE DUP5 DUP5 PUSH2 0x1C6C JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4C69624469616D6F6E644375743A20496E636F72726563742046616365744375 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x74416374696F6E00000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1DC2 PUSH1 0x27 DUP4 PUSH2 0x196D JUMP JUMPDEST SWAP2 POP PUSH2 0x1DCD DUP3 PUSH2 0x1D66 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1DF1 DUP2 PUSH2 0x1DB5 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E3C DUP3 PUSH2 0x1E27 JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x1E6E JUMPI PUSH2 0x1E6D PUSH2 0x1DF8 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1EAE DUP2 PUSH2 0x1844 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x3 DUP2 LT PUSH2 0x1EC5 JUMPI PUSH2 0x1EC4 PUSH2 0x1D37 JUMP JUMPDEST JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH2 0x1ED6 DUP3 PUSH2 0x1EB4 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1EE6 DUP3 PUSH2 0x1EC8 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1EF6 DUP2 PUSH2 0x1EDB JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1F31 DUP2 PUSH2 0x1AFD JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F43 DUP4 DUP4 PUSH2 0x1F28 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F67 DUP3 PUSH2 0x1EFC JUMP JUMPDEST PUSH2 0x1F71 DUP2 DUP6 PUSH2 0x1F07 JUMP JUMPDEST SWAP4 POP PUSH2 0x1F7C DUP4 PUSH2 0x1F18 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1FAD JUMPI DUP2 MLOAD PUSH2 0x1F94 DUP9 DUP3 PUSH2 0x1F37 JUMP JUMPDEST SWAP8 POP PUSH2 0x1F9F DUP4 PUSH2 0x1F4F JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x1F80 JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 ADD PUSH1 0x0 DUP4 ADD MLOAD PUSH2 0x1FD2 PUSH1 0x0 DUP7 ADD DUP3 PUSH2 0x1EA5 JUMP JUMPDEST POP PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x1FE5 PUSH1 0x20 DUP7 ADD DUP3 PUSH2 0x1EED JUMP JUMPDEST POP PUSH1 0x40 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0x1FFD DUP3 DUP3 PUSH2 0x1F5C JUMP JUMPDEST SWAP2 POP POP DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2016 DUP4 DUP4 PUSH2 0x1FBA JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2036 DUP3 PUSH2 0x1E79 JUMP JUMPDEST PUSH2 0x2040 DUP2 DUP6 PUSH2 0x1E84 JUMP JUMPDEST SWAP4 POP DUP4 PUSH1 0x20 DUP3 MUL DUP6 ADD PUSH2 0x2052 DUP6 PUSH2 0x1E95 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x208E JUMPI DUP5 DUP5 SUB DUP10 MSTORE DUP2 MLOAD PUSH2 0x206F DUP6 DUP3 PUSH2 0x200A JUMP JUMPDEST SWAP5 POP PUSH2 0x207A DUP4 PUSH2 0x201E JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP11 ADD SWAP10 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x2056 JUMP JUMPDEST POP DUP3 SWAP8 POP DUP8 SWAP6 POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x20A9 DUP2 PUSH2 0x1844 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x20E9 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x20CE JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2100 DUP3 PUSH2 0x20AF JUMP JUMPDEST PUSH2 0x210A DUP2 DUP6 PUSH2 0x20BA JUMP JUMPDEST SWAP4 POP PUSH2 0x211A DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x20CB JUMP JUMPDEST PUSH2 0x2123 DUP2 PUSH2 0x19EA JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2148 DUP2 DUP7 PUSH2 0x202B JUMP JUMPDEST SWAP1 POP PUSH2 0x2157 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x20A0 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x2169 DUP2 DUP5 PUSH2 0x20F5 JUMP JUMPDEST SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x4C69624469616D6F6E644375743A204E6F2073656C6563746F727320696E2066 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6163657420746F20637574000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x21CF PUSH1 0x2B DUP4 PUSH2 0x196D JUMP JUMPDEST SWAP2 POP PUSH2 0x21DA DUP3 PUSH2 0x2173 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x21FE DUP2 PUSH2 0x21C2 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4C69624469616D6F6E644375743A204164642066616365742063616E27742062 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6520616464726573732830290000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2261 PUSH1 0x2C DUP4 PUSH2 0x196D JUMP JUMPDEST SWAP2 POP PUSH2 0x226C DUP3 PUSH2 0x2205 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2290 DUP2 PUSH2 0x2254 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4C69624469616D6F6E644375743A2043616E2774206164642066756E6374696F PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6E207468617420616C7265616479206578697374730000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x22F3 PUSH1 0x35 DUP4 PUSH2 0x196D JUMP JUMPDEST SWAP2 POP PUSH2 0x22FE DUP3 PUSH2 0x2297 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2322 DUP2 PUSH2 0x22E6 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x234C DUP3 PUSH2 0x2329 JUMP JUMPDEST SWAP2 POP PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x236A JUMPI PUSH2 0x2369 PUSH2 0x1DF8 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4C69624469616D6F6E644375743A2043616E2774207265706C6163652066756E PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6374696F6E20776974682073616D652066756E6374696F6E0000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x23D1 PUSH1 0x38 DUP4 PUSH2 0x196D JUMP JUMPDEST SWAP2 POP PUSH2 0x23DC DUP3 PUSH2 0x2375 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2400 DUP2 PUSH2 0x23C4 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4C69624469616D6F6E644375743A2052656D6F76652066616365742061646472 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x657373206D757374206265206164647265737328302900000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2463 PUSH1 0x36 DUP4 PUSH2 0x196D JUMP JUMPDEST SWAP2 POP PUSH2 0x246E DUP3 PUSH2 0x2407 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2492 DUP2 PUSH2 0x2456 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x24AF DUP3 PUSH2 0x20AF JUMP JUMPDEST PUSH2 0x24B9 DUP2 DUP6 PUSH2 0x2499 JUMP JUMPDEST SWAP4 POP PUSH2 0x24C9 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x20CB JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x24E1 DUP3 DUP5 PUSH2 0x24A4 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x2501 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x20A0 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x2513 DUP2 DUP5 PUSH2 0x20F5 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x416363657373436F6E74726F6C3A206163636F756E7420000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x255D PUSH1 0x17 DUP4 PUSH2 0x251C JUMP JUMPDEST SWAP2 POP PUSH2 0x2568 DUP3 PUSH2 0x2527 JUMP JUMPDEST PUSH1 0x17 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2589 DUP3 PUSH2 0x2573 JUMP JUMPDEST PUSH2 0x2593 DUP2 DUP6 PUSH2 0x251C JUMP JUMPDEST SWAP4 POP PUSH2 0x25A3 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x20CB JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x206973206D697373696E6720726F6C6520000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x25E5 PUSH1 0x11 DUP4 PUSH2 0x251C JUMP JUMPDEST SWAP2 POP PUSH2 0x25F0 DUP3 PUSH2 0x25AF JUMP JUMPDEST PUSH1 0x11 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2606 DUP3 PUSH2 0x2550 JUMP JUMPDEST SWAP2 POP PUSH2 0x2612 DUP3 DUP6 PUSH2 0x257E JUMP JUMPDEST SWAP2 POP PUSH2 0x261D DUP3 PUSH2 0x25D8 JUMP JUMPDEST SWAP2 POP PUSH2 0x2629 DUP3 DUP5 PUSH2 0x257E JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2640 DUP3 PUSH2 0x2573 JUMP JUMPDEST PUSH2 0x264A DUP2 DUP6 PUSH2 0x196D JUMP JUMPDEST SWAP4 POP PUSH2 0x265A DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x20CB JUMP JUMPDEST PUSH2 0x2663 DUP2 PUSH2 0x19EA JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2688 DUP2 DUP5 PUSH2 0x2635 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4C69624469616D6F6E644375743A2043616E27742072656D6F76652066756E63 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x74696F6E207468617420646F65736E2774206578697374000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x26EC PUSH1 0x37 DUP4 PUSH2 0x196D JUMP JUMPDEST SWAP2 POP PUSH2 0x26F7 DUP3 PUSH2 0x2690 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x271B DUP2 PUSH2 0x26DF JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4C69624469616D6F6E644375743A2043616E27742072656D6F766520696D6D75 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7461626C652066756E6374696F6E000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x277E PUSH1 0x2E DUP4 PUSH2 0x196D JUMP JUMPDEST SWAP2 POP PUSH2 0x2789 DUP3 PUSH2 0x2722 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x27AD DUP2 PUSH2 0x2771 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27BF DUP3 PUSH2 0x1E27 JUMP JUMPDEST SWAP2 POP PUSH2 0x27CA DUP4 PUSH2 0x1E27 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP DUP2 DUP2 GT ISZERO PUSH2 0x27E2 JUMPI PUSH2 0x27E1 PUSH2 0x1DF8 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2822 DUP3 PUSH2 0x1E27 JUMP JUMPDEST SWAP2 POP PUSH2 0x282D DUP4 PUSH2 0x1E27 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 MUL PUSH2 0x283B DUP2 PUSH2 0x1E27 JUMP JUMPDEST SWAP2 POP DUP3 DUP3 DIV DUP5 EQ DUP4 ISZERO OR PUSH2 0x2852 JUMPI PUSH2 0x2851 PUSH2 0x1DF8 JUMP JUMPDEST JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2864 DUP3 PUSH2 0x1E27 JUMP JUMPDEST SWAP2 POP PUSH2 0x286F DUP4 PUSH2 0x1E27 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x2887 JUMPI PUSH2 0x2886 PUSH2 0x1DF8 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2898 DUP3 PUSH2 0x1E27 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 DUP3 SUB PUSH2 0x28AB JUMPI PUSH2 0x28AA PUSH2 0x1DF8 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 SUB SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x537472696E67733A20686578206C656E67746820696E73756666696369656E74 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x28EC PUSH1 0x20 DUP4 PUSH2 0x196D JUMP JUMPDEST SWAP2 POP PUSH2 0x28F7 DUP3 PUSH2 0x28B6 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x291B DUP2 PUSH2 0x28DF JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP INVALID 0x4C PUSH10 0x624469616D6F6E644375 PUSH21 0x3A205F696E6974206164647265737320686173206E PUSH16 0x20636F64654C69624469616D6F6E6443 PUSH22 0x743A204E657720666163657420686173206E6F20636F PUSH5 0x65A2646970 PUSH7 0x7358221220FC93 0xD6 PC 0x1E 0xF8 DUP13 STOP CALLDATASIZE SWAP5 0xAD EXTCODESIZE PUSH25 0x47E83E3748D87F743D9A64C8F96766C27475C564736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"402:754:30:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_addFacet_15952":{"entryPoint":2962,"id":15952,"parameterSlots":2,"returnSlots":0},"@_addFunction_15993":{"entryPoint":3181,"id":15993,"parameterSlots":4,"returnSlots":0},"@_addFunctions_15750":{"entryPoint":803,"id":15750,"parameterSlots":2,"returnSlots":0},"@_checkRole_15290":{"entryPoint":790,"id":15290,"parameterSlots":1,"returnSlots":0},"@_checkRole_15332":{"entryPoint":2760,"id":15332,"parameterSlots":2,"returnSlots":0},"@_cut_15649":{"entryPoint":231,"id":15649,"parameterSlots":3,"returnSlots":0},"@_hasRole_15278":{"entryPoint":5326,"id":15278,"parameterSlots":2,"returnSlots":1},"@_initializeDiamondCut_16208":{"entryPoint":2470,"id":16208,"parameterSlots":2,"returnSlots":0},"@_removeFunction_16160":{"entryPoint":3610,"id":16160,"parameterSlots":3,"returnSlots":0},"@_removeFunctions_15919":{"entryPoint":2075,"id":15919,"parameterSlots":2,"returnSlots":0},"@_replaceFunctions_15854":{"entryPoint":1434,"id":15854,"parameterSlots":2,"returnSlots":0},"@_requireHasContractCode_16227":{"entryPoint":5244,"id":16227,"parameterSlots":2,"returnSlots":0},"@_requireOnlyRole_15259":{"entryPoint":219,"id":15259,"parameterSlots":1,"returnSlots":0},"@_storageAccessControl_15249":{"entryPoint":6014,"id":15249,"parameterSlots":0,"returnSlots":1},"@_storageDiamond_15535":{"entryPoint":2917,"id":15535,"parameterSlots":0,"returnSlots":1},"@diamondCut_11069":{"entryPoint":76,"id":11069,"parameterSlots":5,"returnSlots":0},"@toHexString_1109":{"entryPoint":5442,"id":1109,"parameterSlots":2,"returnSlots":1},"abi_decode_available_length_t_array$_t_bytes4_$dyn_memory_ptr":{"entryPoint":6997,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_available_length_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr":{"entryPoint":7276,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_t_address":{"entryPoint":6253,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_array$_t_bytes4_$dyn_memory_ptr":{"entryPoint":7102,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_array$_t_struct$_FacetCut_$11817_calldata_ptr_$dyn_calldata_ptr":{"entryPoint":6094,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_t_bytes4":{"entryPoint":6976,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes_calldata_ptr":{"entryPoint":6274,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_t_enum$_FacetCutAction_$11808":{"entryPoint":6844,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_struct$_FacetCut_$11817_memory_ptr":{"entryPoint":7148,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_array$_t_struct$_FacetCut_$11817_calldata_ptr_$dyn_calldata_ptrt_addresst_bytes_calldata_ptr":{"entryPoint":6360,"id":null,"parameterSlots":2,"returnSlots":5},"abi_encodeUpdatedPos_t_bytes4_to_t_bytes4":{"entryPoint":7991,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_t_struct$_FacetCut_$11817_memory_ptr_to_t_struct$_FacetCut_$11817_memory_ptr":{"entryPoint":8202,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_address_to_t_address":{"entryPoint":7845,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_address_to_t_address_fromStack":{"entryPoint":8352,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_array$_t_bytes4_$dyn_memory_ptr_to_t_array$_t_bytes4_$dyn_memory_ptr":{"entryPoint":8028,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_fromStack":{"entryPoint":8235,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_bytes4_to_t_bytes4":{"entryPoint":7976,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack":{"entryPoint":8437,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":9380,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_enum$_FacetCutAction_$11808_to_t_uint8":{"entryPoint":7917,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack":{"entryPoint":9781,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":9598,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2_to_t_string_memory_ptr_fromStack":{"entryPoint":10463,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_1ffc682bcfedefd5e93ba9ed0c2d1bc0b18319886e3b4bd28a03a3d3729f85c0_to_t_string_memory_ptr_fromStack":{"entryPoint":8642,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_2c590e498c4d56c984a7092fd5e89a68b9f4541ce9f97252fb74e44a00ffbb71_to_t_string_memory_ptr_fromStack":{"entryPoint":9951,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_339759585899103d2ace64958e37e18ccb0504652c81d4a1b8aa80fe2126ab95_to_t_string_memory_ptr_fromStack":{"entryPoint":6567,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_48267d8daf5ea9c6bbad1fe9c53dc4c04a2a01b2b85bad432956cf42f45b2f54_to_t_string_memory_ptr_fromStack":{"entryPoint":7605,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_64609d8b93c93a06b98d7db7a87b04044cd4a52c5661d603bb9b90ad8b914a3a_to_t_string_memory_ptr_fromStack":{"entryPoint":8788,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_8ba063dfaa4be2d2cbe73dbb1364728b0f7031ac048441d5fad19e9541992b21_to_t_string_memory_ptr_fromStack":{"entryPoint":10097,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_99a7418ee014d613f46da44561258cdbb58064508097483a319062b99fa37700_to_t_string_memory_ptr_fromStack":{"entryPoint":8934,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_b5a7112edf707196456f338fdcc19cd849be6cb8c0d166bcd035f4cfb00e7078_to_t_string_memory_ptr_fromStack":{"entryPoint":9156,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_b739aae768f79b96e91d9f66398733516895e39eb09ee54a795b49dcc77504d4_to_t_string_memory_ptr_fromStack":{"entryPoint":9302,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_to_t_string_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":9552,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_to_t_string_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":9688,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_struct$_FacetCut_$11817_memory_ptr_to_t_struct$_FacetCut_$11817_memory_ptr":{"entryPoint":8122,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":9429,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_t_string_memory_ptr_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":9723,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":9452,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_t_address_t_bytes_memory_ptr__to_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_t_address_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":8494,"id":null,"parameterSlots":4,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":9838,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":10498,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_1ffc682bcfedefd5e93ba9ed0c2d1bc0b18319886e3b4bd28a03a3d3729f85c0__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":8677,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_2c590e498c4d56c984a7092fd5e89a68b9f4541ce9f97252fb74e44a00ffbb71__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":9986,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_339759585899103d2ace64958e37e18ccb0504652c81d4a1b8aa80fe2126ab95__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":6602,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_48267d8daf5ea9c6bbad1fe9c53dc4c04a2a01b2b85bad432956cf42f45b2f54__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":7640,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_64609d8b93c93a06b98d7db7a87b04044cd4a52c5661d603bb9b90ad8b914a3a__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":8823,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_8ba063dfaa4be2d2cbe73dbb1364728b0f7031ac048441d5fad19e9541992b21__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":10132,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_99a7418ee014d613f46da44561258cdbb58064508097483a319062b99fa37700__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":8969,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b5a7112edf707196456f338fdcc19cd849be6cb8c0d166bcd035f4cfb00e7078__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":9191,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b739aae768f79b96e91d9f66398733516895e39eb09ee54a795b49dcc77504d4__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":9337,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_memory":{"entryPoint":6747,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":6059,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_t_array$_t_bytes4_$dyn_memory_ptr":{"entryPoint":6865,"id":null,"parameterSlots":1,"returnSlots":1},"array_allocation_size_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr":{"entryPoint":6774,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_t_array$_t_bytes4_$dyn_memory_ptr":{"entryPoint":7960,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr":{"entryPoint":7829,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_array$_t_bytes4_$dyn_memory_ptr":{"entryPoint":7932,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr":{"entryPoint":7801,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_bytes_memory_ptr":{"entryPoint":8367,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_string_memory_ptr":{"entryPoint":9587,"id":null,"parameterSlots":1,"returnSlots":1},"array_nextElement_t_array$_t_bytes4_$dyn_memory_ptr":{"entryPoint":8015,"id":null,"parameterSlots":1,"returnSlots":1},"array_nextElement_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr":{"entryPoint":8222,"id":null,"parameterSlots":1,"returnSlots":1},"array_storeLengthForEncoding_t_array$_t_bytes4_$dyn_memory_ptr":{"entryPoint":7943,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_fromStack":{"entryPoint":7812,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack":{"entryPoint":8378,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":9369,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_fromStack":{"entryPoint":6509,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":9500,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":10329,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_t_uint256":{"entryPoint":10263,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":10164,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_t_address":{"entryPoint":6212,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_bytes4":{"entryPoint":6909,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_enum$_FacetCutAction_$11808":{"entryPoint":7880,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint160":{"entryPoint":6180,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint256":{"entryPoint":7719,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint96":{"entryPoint":9001,"id":null,"parameterSlots":1,"returnSlots":1},"convert_array_t_array$_t_struct$_FacetCut_$11817_calldata_ptr_$dyn_calldata_ptr_to_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr":{"entryPoint":7411,"id":null,"parameterSlots":2,"returnSlots":1},"convert_t_enum$_FacetCutAction_$11808_to_t_uint8":{"entryPoint":7899,"id":null,"parameterSlots":1,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":8395,"id":null,"parameterSlots":3,"returnSlots":0},"decrement_t_uint256":{"entryPoint":10381,"id":null,"parameterSlots":1,"returnSlots":1},"finalize_allocation":{"entryPoint":6698,"id":null,"parameterSlots":2,"returnSlots":0},"increment_t_uint256":{"entryPoint":7729,"id":null,"parameterSlots":1,"returnSlots":1},"increment_t_uint96":{"entryPoint":9025,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":7672,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x21":{"entryPoint":7479,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x31":{"entryPoint":10216,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":7432,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":6651,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490":{"entryPoint":6084,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":6079,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f":{"entryPoint":6818,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421":{"entryPoint":6823,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef":{"entryPoint":6089,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":6074,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":6069,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of_32":{"entryPoint":6634,"id":null,"parameterSlots":1,"returnSlots":1},"store_literal_in_memory_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2":{"entryPoint":10422,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_1ffc682bcfedefd5e93ba9ed0c2d1bc0b18319886e3b4bd28a03a3d3729f85c0":{"entryPoint":8563,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_2c590e498c4d56c984a7092fd5e89a68b9f4541ce9f97252fb74e44a00ffbb71":{"entryPoint":9872,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_339759585899103d2ace64958e37e18ccb0504652c81d4a1b8aa80fe2126ab95":{"entryPoint":6526,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_48267d8daf5ea9c6bbad1fe9c53dc4c04a2a01b2b85bad432956cf42f45b2f54":{"entryPoint":7526,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_64609d8b93c93a06b98d7db7a87b04044cd4a52c5661d603bb9b90ad8b914a3a":{"entryPoint":8709,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_8ba063dfaa4be2d2cbe73dbb1364728b0f7031ac048441d5fad19e9541992b21":{"entryPoint":10018,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_99a7418ee014d613f46da44561258cdbb58064508097483a319062b99fa37700":{"entryPoint":8855,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_b5a7112edf707196456f338fdcc19cd849be6cb8c0d166bcd035f4cfb00e7078":{"entryPoint":9077,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_b739aae768f79b96e91d9f66398733516895e39eb09ee54a795b49dcc77504d4":{"entryPoint":9223,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874":{"entryPoint":9511,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69":{"entryPoint":9647,"id":null,"parameterSlots":1,"returnSlots":0},"validator_assert_t_enum$_FacetCutAction_$11808":{"entryPoint":7860,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_address":{"entryPoint":6230,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_bytes4":{"entryPoint":6953,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_enum$_FacetCutAction_$11808":{"entryPoint":6828,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:34149:61","statements":[{"body":{"nodeType":"YulBlock","src":"47:35:61","statements":[{"nodeType":"YulAssignment","src":"57:19:61","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"73:2:61","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"67:5:61"},"nodeType":"YulFunctionCall","src":"67:9:61"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"57:6:61"}]}]},"name":"allocate_unbounded","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"40:6:61","type":""}],"src":"7:75:61"},{"body":{"nodeType":"YulBlock","src":"177:28:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"194:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"197:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"187:6:61"},"nodeType":"YulFunctionCall","src":"187:12:61"},"nodeType":"YulExpressionStatement","src":"187:12:61"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulFunctionDefinition","src":"88:117:61"},{"body":{"nodeType":"YulBlock","src":"300:28:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"317:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"320:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"310:6:61"},"nodeType":"YulFunctionCall","src":"310:12:61"},"nodeType":"YulExpressionStatement","src":"310:12:61"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulFunctionDefinition","src":"211:117:61"},{"body":{"nodeType":"YulBlock","src":"423:28:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"440:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"443:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"433:6:61"},"nodeType":"YulFunctionCall","src":"433:12:61"},"nodeType":"YulExpressionStatement","src":"433:12:61"}]},"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulFunctionDefinition","src":"334:117:61"},{"body":{"nodeType":"YulBlock","src":"546:28:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"563:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"566:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"556:6:61"},"nodeType":"YulFunctionCall","src":"556:12:61"},"nodeType":"YulExpressionStatement","src":"556:12:61"}]},"name":"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490","nodeType":"YulFunctionDefinition","src":"457:117:61"},{"body":{"nodeType":"YulBlock","src":"669:28:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"686:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"689:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"679:6:61"},"nodeType":"YulFunctionCall","src":"679:12:61"},"nodeType":"YulExpressionStatement","src":"679:12:61"}]},"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nodeType":"YulFunctionDefinition","src":"580:117:61"},{"body":{"nodeType":"YulBlock","src":"852:478:61","statements":[{"body":{"nodeType":"YulBlock","src":"901:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"903:77:61"},"nodeType":"YulFunctionCall","src":"903:79:61"},"nodeType":"YulExpressionStatement","src":"903:79:61"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"880:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"888:4:61","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"876:3:61"},"nodeType":"YulFunctionCall","src":"876:17:61"},{"name":"end","nodeType":"YulIdentifier","src":"895:3:61"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"872:3:61"},"nodeType":"YulFunctionCall","src":"872:27:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"865:6:61"},"nodeType":"YulFunctionCall","src":"865:35:61"},"nodeType":"YulIf","src":"862:122:61"},{"nodeType":"YulAssignment","src":"993:30:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1016:6:61"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1003:12:61"},"nodeType":"YulFunctionCall","src":"1003:20:61"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"993:6:61"}]},{"body":{"nodeType":"YulBlock","src":"1066:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490","nodeType":"YulIdentifier","src":"1068:77:61"},"nodeType":"YulFunctionCall","src":"1068:79:61"},"nodeType":"YulExpressionStatement","src":"1068:79:61"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1038:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"1046:18:61","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1035:2:61"},"nodeType":"YulFunctionCall","src":"1035:30:61"},"nodeType":"YulIf","src":"1032:117:61"},{"nodeType":"YulAssignment","src":"1158:29:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1174:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"1182:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1170:3:61"},"nodeType":"YulFunctionCall","src":"1170:17:61"},"variableNames":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"1158:8:61"}]},{"body":{"nodeType":"YulBlock","src":"1241:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nodeType":"YulIdentifier","src":"1243:77:61"},"nodeType":"YulFunctionCall","src":"1243:79:61"},"nodeType":"YulExpressionStatement","src":"1243:79:61"}]},"condition":{"arguments":[{"arguments":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"1206:8:61"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1220:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"1228:4:61","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"1216:3:61"},"nodeType":"YulFunctionCall","src":"1216:17:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1202:3:61"},"nodeType":"YulFunctionCall","src":"1202:32:61"},{"name":"end","nodeType":"YulIdentifier","src":"1236:3:61"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1199:2:61"},"nodeType":"YulFunctionCall","src":"1199:41:61"},"nodeType":"YulIf","src":"1196:128:61"}]},"name":"abi_decode_t_array$_t_struct$_FacetCut_$11817_calldata_ptr_$dyn_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"819:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"827:3:61","type":""}],"returnVariables":[{"name":"arrayPos","nodeType":"YulTypedName","src":"835:8:61","type":""},{"name":"length","nodeType":"YulTypedName","src":"845:6:61","type":""}],"src":"733:597:61"},{"body":{"nodeType":"YulBlock","src":"1381:81:61","statements":[{"nodeType":"YulAssignment","src":"1391:65:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1406:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"1413:42:61","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1402:3:61"},"nodeType":"YulFunctionCall","src":"1402:54:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"1391:7:61"}]}]},"name":"cleanup_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1363:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"1373:7:61","type":""}],"src":"1336:126:61"},{"body":{"nodeType":"YulBlock","src":"1513:51:61","statements":[{"nodeType":"YulAssignment","src":"1523:35:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1552:5:61"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"1534:17:61"},"nodeType":"YulFunctionCall","src":"1534:24:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"1523:7:61"}]}]},"name":"cleanup_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1495:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"1505:7:61","type":""}],"src":"1468:96:61"},{"body":{"nodeType":"YulBlock","src":"1613:79:61","statements":[{"body":{"nodeType":"YulBlock","src":"1670:16:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1679:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1682:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1672:6:61"},"nodeType":"YulFunctionCall","src":"1672:12:61"},"nodeType":"YulExpressionStatement","src":"1672:12:61"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1636:5:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1661:5:61"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"1643:17:61"},"nodeType":"YulFunctionCall","src":"1643:24:61"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1633:2:61"},"nodeType":"YulFunctionCall","src":"1633:35:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1626:6:61"},"nodeType":"YulFunctionCall","src":"1626:43:61"},"nodeType":"YulIf","src":"1623:63:61"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1606:5:61","type":""}],"src":"1570:122:61"},{"body":{"nodeType":"YulBlock","src":"1750:87:61","statements":[{"nodeType":"YulAssignment","src":"1760:29:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1782:6:61"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1769:12:61"},"nodeType":"YulFunctionCall","src":"1769:20:61"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1760:5:61"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1825:5:61"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"1798:26:61"},"nodeType":"YulFunctionCall","src":"1798:33:61"},"nodeType":"YulExpressionStatement","src":"1798:33:61"}]},"name":"abi_decode_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1728:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"1736:3:61","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1744:5:61","type":""}],"src":"1698:139:61"},{"body":{"nodeType":"YulBlock","src":"1930:478:61","statements":[{"body":{"nodeType":"YulBlock","src":"1979:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"1981:77:61"},"nodeType":"YulFunctionCall","src":"1981:79:61"},"nodeType":"YulExpressionStatement","src":"1981:79:61"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1958:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"1966:4:61","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1954:3:61"},"nodeType":"YulFunctionCall","src":"1954:17:61"},{"name":"end","nodeType":"YulIdentifier","src":"1973:3:61"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1950:3:61"},"nodeType":"YulFunctionCall","src":"1950:27:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1943:6:61"},"nodeType":"YulFunctionCall","src":"1943:35:61"},"nodeType":"YulIf","src":"1940:122:61"},{"nodeType":"YulAssignment","src":"2071:30:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2094:6:61"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2081:12:61"},"nodeType":"YulFunctionCall","src":"2081:20:61"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"2071:6:61"}]},{"body":{"nodeType":"YulBlock","src":"2144:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490","nodeType":"YulIdentifier","src":"2146:77:61"},"nodeType":"YulFunctionCall","src":"2146:79:61"},"nodeType":"YulExpressionStatement","src":"2146:79:61"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2116:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"2124:18:61","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2113:2:61"},"nodeType":"YulFunctionCall","src":"2113:30:61"},"nodeType":"YulIf","src":"2110:117:61"},{"nodeType":"YulAssignment","src":"2236:29:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2252:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"2260:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2248:3:61"},"nodeType":"YulFunctionCall","src":"2248:17:61"},"variableNames":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"2236:8:61"}]},{"body":{"nodeType":"YulBlock","src":"2319:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nodeType":"YulIdentifier","src":"2321:77:61"},"nodeType":"YulFunctionCall","src":"2321:79:61"},"nodeType":"YulExpressionStatement","src":"2321:79:61"}]},"condition":{"arguments":[{"arguments":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"2284:8:61"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2298:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"2306:4:61","type":"","value":"0x01"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"2294:3:61"},"nodeType":"YulFunctionCall","src":"2294:17:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2280:3:61"},"nodeType":"YulFunctionCall","src":"2280:32:61"},{"name":"end","nodeType":"YulIdentifier","src":"2314:3:61"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2277:2:61"},"nodeType":"YulFunctionCall","src":"2277:41:61"},"nodeType":"YulIf","src":"2274:128:61"}]},"name":"abi_decode_t_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1897:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"1905:3:61","type":""}],"returnVariables":[{"name":"arrayPos","nodeType":"YulTypedName","src":"1913:8:61","type":""},{"name":"length","nodeType":"YulTypedName","src":"1923:6:61","type":""}],"src":"1856:552:61"},{"body":{"nodeType":"YulBlock","src":"2597:922:61","statements":[{"body":{"nodeType":"YulBlock","src":"2643:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"2645:77:61"},"nodeType":"YulFunctionCall","src":"2645:79:61"},"nodeType":"YulExpressionStatement","src":"2645:79:61"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2618:7:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"2627:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2614:3:61"},"nodeType":"YulFunctionCall","src":"2614:23:61"},{"kind":"number","nodeType":"YulLiteral","src":"2639:2:61","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2610:3:61"},"nodeType":"YulFunctionCall","src":"2610:32:61"},"nodeType":"YulIf","src":"2607:119:61"},{"nodeType":"YulBlock","src":"2736:341:61","statements":[{"nodeType":"YulVariableDeclaration","src":"2751:45:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2782:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"2793:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2778:3:61"},"nodeType":"YulFunctionCall","src":"2778:17:61"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2765:12:61"},"nodeType":"YulFunctionCall","src":"2765:31:61"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"2755:6:61","type":""}]},{"body":{"nodeType":"YulBlock","src":"2843:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"2845:77:61"},"nodeType":"YulFunctionCall","src":"2845:79:61"},"nodeType":"YulExpressionStatement","src":"2845:79:61"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2815:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"2823:18:61","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2812:2:61"},"nodeType":"YulFunctionCall","src":"2812:30:61"},"nodeType":"YulIf","src":"2809:117:61"},{"nodeType":"YulAssignment","src":"2940:127:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3039:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"3050:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3035:3:61"},"nodeType":"YulFunctionCall","src":"3035:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3059:7:61"}],"functionName":{"name":"abi_decode_t_array$_t_struct$_FacetCut_$11817_calldata_ptr_$dyn_calldata_ptr","nodeType":"YulIdentifier","src":"2958:76:61"},"nodeType":"YulFunctionCall","src":"2958:109:61"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2940:6:61"},{"name":"value1","nodeType":"YulIdentifier","src":"2948:6:61"}]}]},{"nodeType":"YulBlock","src":"3087:118:61","statements":[{"nodeType":"YulVariableDeclaration","src":"3102:16:61","value":{"kind":"number","nodeType":"YulLiteral","src":"3116:2:61","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3106:6:61","type":""}]},{"nodeType":"YulAssignment","src":"3132:63:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3167:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"3178:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3163:3:61"},"nodeType":"YulFunctionCall","src":"3163:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3187:7:61"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"3142:20:61"},"nodeType":"YulFunctionCall","src":"3142:53:61"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"3132:6:61"}]}]},{"nodeType":"YulBlock","src":"3215:297:61","statements":[{"nodeType":"YulVariableDeclaration","src":"3230:46:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3261:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"3272:2:61","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3257:3:61"},"nodeType":"YulFunctionCall","src":"3257:18:61"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3244:12:61"},"nodeType":"YulFunctionCall","src":"3244:32:61"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3234:6:61","type":""}]},{"body":{"nodeType":"YulBlock","src":"3323:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"3325:77:61"},"nodeType":"YulFunctionCall","src":"3325:79:61"},"nodeType":"YulExpressionStatement","src":"3325:79:61"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3295:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"3303:18:61","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3292:2:61"},"nodeType":"YulFunctionCall","src":"3292:30:61"},"nodeType":"YulIf","src":"3289:117:61"},{"nodeType":"YulAssignment","src":"3420:82:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3474:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"3485:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3470:3:61"},"nodeType":"YulFunctionCall","src":"3470:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"3494:7:61"}],"functionName":{"name":"abi_decode_t_bytes_calldata_ptr","nodeType":"YulIdentifier","src":"3438:31:61"},"nodeType":"YulFunctionCall","src":"3438:64:61"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"3420:6:61"},{"name":"value4","nodeType":"YulIdentifier","src":"3428:6:61"}]}]}]},"name":"abi_decode_tuple_t_array$_t_struct$_FacetCut_$11817_calldata_ptr_$dyn_calldata_ptrt_addresst_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2535:9:61","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2546:7:61","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2558:6:61","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2566:6:61","type":""},{"name":"value2","nodeType":"YulTypedName","src":"2574:6:61","type":""},{"name":"value3","nodeType":"YulTypedName","src":"2582:6:61","type":""},{"name":"value4","nodeType":"YulTypedName","src":"2590:6:61","type":""}],"src":"2414:1105:61"},{"body":{"nodeType":"YulBlock","src":"3621:73:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3638:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"3643:6:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3631:6:61"},"nodeType":"YulFunctionCall","src":"3631:19:61"},"nodeType":"YulExpressionStatement","src":"3631:19:61"},{"nodeType":"YulAssignment","src":"3659:29:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3678:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"3683:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3674:3:61"},"nodeType":"YulFunctionCall","src":"3674:14:61"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"3659:11:61"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"3593:3:61","type":""},{"name":"length","nodeType":"YulTypedName","src":"3598:6:61","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"3609:11:61","type":""}],"src":"3525:169:61"},{"body":{"nodeType":"YulBlock","src":"3806:59:61","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3828:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"3836:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3824:3:61"},"nodeType":"YulFunctionCall","src":"3824:14:61"},{"hexValue":"4d41494e5441494e45525f524f4c45","kind":"string","nodeType":"YulLiteral","src":"3840:17:61","type":"","value":"MAINTAINER_ROLE"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3817:6:61"},"nodeType":"YulFunctionCall","src":"3817:41:61"},"nodeType":"YulExpressionStatement","src":"3817:41:61"}]},"name":"store_literal_in_memory_339759585899103d2ace64958e37e18ccb0504652c81d4a1b8aa80fe2126ab95","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"3798:6:61","type":""}],"src":"3700:165:61"},{"body":{"nodeType":"YulBlock","src":"4017:220:61","statements":[{"nodeType":"YulAssignment","src":"4027:74:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4093:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"4098:2:61","type":"","value":"15"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"4034:58:61"},"nodeType":"YulFunctionCall","src":"4034:67:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"4027:3:61"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4199:3:61"}],"functionName":{"name":"store_literal_in_memory_339759585899103d2ace64958e37e18ccb0504652c81d4a1b8aa80fe2126ab95","nodeType":"YulIdentifier","src":"4110:88:61"},"nodeType":"YulFunctionCall","src":"4110:93:61"},"nodeType":"YulExpressionStatement","src":"4110:93:61"},{"nodeType":"YulAssignment","src":"4212:19:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4223:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"4228:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4219:3:61"},"nodeType":"YulFunctionCall","src":"4219:12:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"4212:3:61"}]}]},"name":"abi_encode_t_stringliteral_339759585899103d2ace64958e37e18ccb0504652c81d4a1b8aa80fe2126ab95_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"4005:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4013:3:61","type":""}],"src":"3871:366:61"},{"body":{"nodeType":"YulBlock","src":"4414:248:61","statements":[{"nodeType":"YulAssignment","src":"4424:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4436:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"4447:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4432:3:61"},"nodeType":"YulFunctionCall","src":"4432:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4424:4:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4471:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"4482:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4467:3:61"},"nodeType":"YulFunctionCall","src":"4467:17:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4490:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"4496:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4486:3:61"},"nodeType":"YulFunctionCall","src":"4486:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4460:6:61"},"nodeType":"YulFunctionCall","src":"4460:47:61"},"nodeType":"YulExpressionStatement","src":"4460:47:61"},{"nodeType":"YulAssignment","src":"4516:139:61","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4650:4:61"}],"functionName":{"name":"abi_encode_t_stringliteral_339759585899103d2ace64958e37e18ccb0504652c81d4a1b8aa80fe2126ab95_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"4524:124:61"},"nodeType":"YulFunctionCall","src":"4524:131:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4516:4:61"}]}]},"name":"abi_encode_tuple_t_stringliteral_339759585899103d2ace64958e37e18ccb0504652c81d4a1b8aa80fe2126ab95__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4394:9:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4409:4:61","type":""}],"src":"4243:419:61"},{"body":{"nodeType":"YulBlock","src":"4716:54:61","statements":[{"nodeType":"YulAssignment","src":"4726:38:61","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4744:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"4751:2:61","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4740:3:61"},"nodeType":"YulFunctionCall","src":"4740:14:61"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4760:2:61","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"4756:3:61"},"nodeType":"YulFunctionCall","src":"4756:7:61"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4736:3:61"},"nodeType":"YulFunctionCall","src":"4736:28:61"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"4726:6:61"}]}]},"name":"round_up_to_mul_of_32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4699:5:61","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"4709:6:61","type":""}],"src":"4668:102:61"},{"body":{"nodeType":"YulBlock","src":"4804:152:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4821:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4824:77:61","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4814:6:61"},"nodeType":"YulFunctionCall","src":"4814:88:61"},"nodeType":"YulExpressionStatement","src":"4814:88:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4918:1:61","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"4921:4:61","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4911:6:61"},"nodeType":"YulFunctionCall","src":"4911:15:61"},"nodeType":"YulExpressionStatement","src":"4911:15:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4942:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4945:4:61","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4935:6:61"},"nodeType":"YulFunctionCall","src":"4935:15:61"},"nodeType":"YulExpressionStatement","src":"4935:15:61"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"4776:180:61"},{"body":{"nodeType":"YulBlock","src":"5005:238:61","statements":[{"nodeType":"YulVariableDeclaration","src":"5015:58:61","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"5037:6:61"},{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"5067:4:61"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"5045:21:61"},"nodeType":"YulFunctionCall","src":"5045:27:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5033:3:61"},"nodeType":"YulFunctionCall","src":"5033:40:61"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"5019:10:61","type":""}]},{"body":{"nodeType":"YulBlock","src":"5184:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"5186:16:61"},"nodeType":"YulFunctionCall","src":"5186:18:61"},"nodeType":"YulExpressionStatement","src":"5186:18:61"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"5127:10:61"},{"kind":"number","nodeType":"YulLiteral","src":"5139:18:61","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5124:2:61"},"nodeType":"YulFunctionCall","src":"5124:34:61"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"5163:10:61"},{"name":"memPtr","nodeType":"YulIdentifier","src":"5175:6:61"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5160:2:61"},"nodeType":"YulFunctionCall","src":"5160:22:61"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"5121:2:61"},"nodeType":"YulFunctionCall","src":"5121:62:61"},"nodeType":"YulIf","src":"5118:88:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5222:2:61","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"5226:10:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5215:6:61"},"nodeType":"YulFunctionCall","src":"5215:22:61"},"nodeType":"YulExpressionStatement","src":"5215:22:61"}]},"name":"finalize_allocation","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"4991:6:61","type":""},{"name":"size","nodeType":"YulTypedName","src":"4999:4:61","type":""}],"src":"4962:281:61"},{"body":{"nodeType":"YulBlock","src":"5290:88:61","statements":[{"nodeType":"YulAssignment","src":"5300:30:61","value":{"arguments":[],"functionName":{"name":"allocate_unbounded","nodeType":"YulIdentifier","src":"5310:18:61"},"nodeType":"YulFunctionCall","src":"5310:20:61"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"5300:6:61"}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"5359:6:61"},{"name":"size","nodeType":"YulIdentifier","src":"5367:4:61"}],"functionName":{"name":"finalize_allocation","nodeType":"YulIdentifier","src":"5339:19:61"},"nodeType":"YulFunctionCall","src":"5339:33:61"},"nodeType":"YulExpressionStatement","src":"5339:33:61"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"5274:4:61","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"5283:6:61","type":""}],"src":"5249:129:61"},{"body":{"nodeType":"YulBlock","src":"5493:229:61","statements":[{"body":{"nodeType":"YulBlock","src":"5598:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"5600:16:61"},"nodeType":"YulFunctionCall","src":"5600:18:61"},"nodeType":"YulExpressionStatement","src":"5600:18:61"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5570:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"5578:18:61","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"5567:2:61"},"nodeType":"YulFunctionCall","src":"5567:30:61"},"nodeType":"YulIf","src":"5564:56:61"},{"nodeType":"YulAssignment","src":"5630:25:61","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5642:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"5650:4:61","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"5638:3:61"},"nodeType":"YulFunctionCall","src":"5638:17:61"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"5630:4:61"}]},{"nodeType":"YulAssignment","src":"5692:23:61","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"5704:4:61"},{"kind":"number","nodeType":"YulLiteral","src":"5710:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5700:3:61"},"nodeType":"YulFunctionCall","src":"5700:15:61"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"5692:4:61"}]}]},"name":"array_allocation_size_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"5477:6:61","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"5488:4:61","type":""}],"src":"5384:338:61"},{"body":{"nodeType":"YulBlock","src":"5817:28:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5834:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5837:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5827:6:61"},"nodeType":"YulFunctionCall","src":"5827:12:61"},"nodeType":"YulExpressionStatement","src":"5827:12:61"}]},"name":"revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f","nodeType":"YulFunctionDefinition","src":"5728:117:61"},{"body":{"nodeType":"YulBlock","src":"5940:28:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5957:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5960:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5950:6:61"},"nodeType":"YulFunctionCall","src":"5950:12:61"},"nodeType":"YulExpressionStatement","src":"5950:12:61"}]},"name":"revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421","nodeType":"YulFunctionDefinition","src":"5851:117:61"},{"body":{"nodeType":"YulBlock","src":"6037:56:61","statements":[{"body":{"nodeType":"YulBlock","src":"6071:16:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6080:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6083:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6073:6:61"},"nodeType":"YulFunctionCall","src":"6073:12:61"},"nodeType":"YulExpressionStatement","src":"6073:12:61"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6060:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"6067:1:61","type":"","value":"3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"6057:2:61"},"nodeType":"YulFunctionCall","src":"6057:12:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6050:6:61"},"nodeType":"YulFunctionCall","src":"6050:20:61"},"nodeType":"YulIf","src":"6047:40:61"}]},"name":"validator_revert_t_enum$_FacetCutAction_$11808","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6030:5:61","type":""}],"src":"5974:119:61"},{"body":{"nodeType":"YulBlock","src":"6171:107:61","statements":[{"nodeType":"YulAssignment","src":"6181:29:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6203:6:61"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6190:12:61"},"nodeType":"YulFunctionCall","src":"6190:20:61"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"6181:5:61"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6266:5:61"}],"functionName":{"name":"validator_revert_t_enum$_FacetCutAction_$11808","nodeType":"YulIdentifier","src":"6219:46:61"},"nodeType":"YulFunctionCall","src":"6219:53:61"},"nodeType":"YulExpressionStatement","src":"6219:53:61"}]},"name":"abi_decode_t_enum$_FacetCutAction_$11808","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"6149:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"6157:3:61","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"6165:5:61","type":""}],"src":"6099:179:61"},{"body":{"nodeType":"YulBlock","src":"6365:229:61","statements":[{"body":{"nodeType":"YulBlock","src":"6470:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"6472:16:61"},"nodeType":"YulFunctionCall","src":"6472:18:61"},"nodeType":"YulExpressionStatement","src":"6472:18:61"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"6442:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"6450:18:61","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"6439:2:61"},"nodeType":"YulFunctionCall","src":"6439:30:61"},"nodeType":"YulIf","src":"6436:56:61"},{"nodeType":"YulAssignment","src":"6502:25:61","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"6514:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"6522:4:61","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"6510:3:61"},"nodeType":"YulFunctionCall","src":"6510:17:61"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"6502:4:61"}]},{"nodeType":"YulAssignment","src":"6564:23:61","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"6576:4:61"},{"kind":"number","nodeType":"YulLiteral","src":"6582:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6572:3:61"},"nodeType":"YulFunctionCall","src":"6572:15:61"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"6564:4:61"}]}]},"name":"array_allocation_size_t_array$_t_bytes4_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"6349:6:61","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"6360:4:61","type":""}],"src":"6284:310:61"},{"body":{"nodeType":"YulBlock","src":"6644:105:61","statements":[{"nodeType":"YulAssignment","src":"6654:89:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6669:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"6676:66:61","type":"","value":"0xffffffff00000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6665:3:61"},"nodeType":"YulFunctionCall","src":"6665:78:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"6654:7:61"}]}]},"name":"cleanup_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6626:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"6636:7:61","type":""}],"src":"6600:149:61"},{"body":{"nodeType":"YulBlock","src":"6797:78:61","statements":[{"body":{"nodeType":"YulBlock","src":"6853:16:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6862:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6865:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6855:6:61"},"nodeType":"YulFunctionCall","src":"6855:12:61"},"nodeType":"YulExpressionStatement","src":"6855:12:61"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6820:5:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6844:5:61"}],"functionName":{"name":"cleanup_t_bytes4","nodeType":"YulIdentifier","src":"6827:16:61"},"nodeType":"YulFunctionCall","src":"6827:23:61"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"6817:2:61"},"nodeType":"YulFunctionCall","src":"6817:34:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6810:6:61"},"nodeType":"YulFunctionCall","src":"6810:42:61"},"nodeType":"YulIf","src":"6807:62:61"}]},"name":"validator_revert_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6790:5:61","type":""}],"src":"6755:120:61"},{"body":{"nodeType":"YulBlock","src":"6932:86:61","statements":[{"nodeType":"YulAssignment","src":"6942:29:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6964:6:61"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"6951:12:61"},"nodeType":"YulFunctionCall","src":"6951:20:61"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"6942:5:61"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7006:5:61"}],"functionName":{"name":"validator_revert_t_bytes4","nodeType":"YulIdentifier","src":"6980:25:61"},"nodeType":"YulFunctionCall","src":"6980:32:61"},"nodeType":"YulExpressionStatement","src":"6980:32:61"}]},"name":"abi_decode_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"6910:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"6918:3:61","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"6926:5:61","type":""}],"src":"6881:137:61"},{"body":{"nodeType":"YulBlock","src":"7141:606:61","statements":[{"nodeType":"YulAssignment","src":"7151:89:61","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"7232:6:61"}],"functionName":{"name":"array_allocation_size_t_array$_t_bytes4_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"7176:55:61"},"nodeType":"YulFunctionCall","src":"7176:63:61"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"7160:15:61"},"nodeType":"YulFunctionCall","src":"7160:80:61"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"7151:5:61"}]},{"nodeType":"YulVariableDeclaration","src":"7249:16:61","value":{"name":"array","nodeType":"YulIdentifier","src":"7260:5:61"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"7253:3:61","type":""}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"7282:5:61"},{"name":"length","nodeType":"YulIdentifier","src":"7289:6:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7275:6:61"},"nodeType":"YulFunctionCall","src":"7275:21:61"},"nodeType":"YulExpressionStatement","src":"7275:21:61"},{"nodeType":"YulAssignment","src":"7305:23:61","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"7316:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"7323:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7312:3:61"},"nodeType":"YulFunctionCall","src":"7312:16:61"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"7305:3:61"}]},{"nodeType":"YulVariableDeclaration","src":"7338:44:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"7356:6:61"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"7368:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"7376:4:61","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"7364:3:61"},"nodeType":"YulFunctionCall","src":"7364:17:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7352:3:61"},"nodeType":"YulFunctionCall","src":"7352:30:61"},"variables":[{"name":"srcEnd","nodeType":"YulTypedName","src":"7342:6:61","type":""}]},{"body":{"nodeType":"YulBlock","src":"7410:103:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nodeType":"YulIdentifier","src":"7424:77:61"},"nodeType":"YulFunctionCall","src":"7424:79:61"},"nodeType":"YulExpressionStatement","src":"7424:79:61"}]},"condition":{"arguments":[{"name":"srcEnd","nodeType":"YulIdentifier","src":"7397:6:61"},{"name":"end","nodeType":"YulIdentifier","src":"7405:3:61"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"7394:2:61"},"nodeType":"YulFunctionCall","src":"7394:15:61"},"nodeType":"YulIf","src":"7391:122:61"},{"body":{"nodeType":"YulBlock","src":"7598:143:61","statements":[{"nodeType":"YulVariableDeclaration","src":"7613:21:61","value":{"name":"src","nodeType":"YulIdentifier","src":"7631:3:61"},"variables":[{"name":"elementPos","nodeType":"YulTypedName","src":"7617:10:61","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"7655:3:61"},{"arguments":[{"name":"elementPos","nodeType":"YulIdentifier","src":"7680:10:61"},{"name":"end","nodeType":"YulIdentifier","src":"7692:3:61"}],"functionName":{"name":"abi_decode_t_bytes4","nodeType":"YulIdentifier","src":"7660:19:61"},"nodeType":"YulFunctionCall","src":"7660:36:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7648:6:61"},"nodeType":"YulFunctionCall","src":"7648:49:61"},"nodeType":"YulExpressionStatement","src":"7648:49:61"},{"nodeType":"YulAssignment","src":"7710:21:61","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"7721:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"7726:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7717:3:61"},"nodeType":"YulFunctionCall","src":"7717:14:61"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"7710:3:61"}]}]},"condition":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"7551:3:61"},{"name":"srcEnd","nodeType":"YulIdentifier","src":"7556:6:61"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"7548:2:61"},"nodeType":"YulFunctionCall","src":"7548:15:61"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"7564:25:61","statements":[{"nodeType":"YulAssignment","src":"7566:21:61","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"7577:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"7582:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7573:3:61"},"nodeType":"YulFunctionCall","src":"7573:14:61"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"7566:3:61"}]}]},"pre":{"nodeType":"YulBlock","src":"7526:21:61","statements":[{"nodeType":"YulVariableDeclaration","src":"7528:17:61","value":{"name":"offset","nodeType":"YulIdentifier","src":"7539:6:61"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"7532:3:61","type":""}]}]},"src":"7522:219:61"}]},"name":"abi_decode_available_length_t_array$_t_bytes4_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"7111:6:61","type":""},{"name":"length","nodeType":"YulTypedName","src":"7119:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"7127:3:61","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"7135:5:61","type":""}],"src":"7040:707:61"},{"body":{"nodeType":"YulBlock","src":"7845:292:61","statements":[{"body":{"nodeType":"YulBlock","src":"7894:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"7896:77:61"},"nodeType":"YulFunctionCall","src":"7896:79:61"},"nodeType":"YulExpressionStatement","src":"7896:79:61"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"7873:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"7881:4:61","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7869:3:61"},"nodeType":"YulFunctionCall","src":"7869:17:61"},{"name":"end","nodeType":"YulIdentifier","src":"7888:3:61"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"7865:3:61"},"nodeType":"YulFunctionCall","src":"7865:27:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"7858:6:61"},"nodeType":"YulFunctionCall","src":"7858:35:61"},"nodeType":"YulIf","src":"7855:122:61"},{"nodeType":"YulVariableDeclaration","src":"7986:34:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"8013:6:61"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8000:12:61"},"nodeType":"YulFunctionCall","src":"8000:20:61"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"7990:6:61","type":""}]},{"nodeType":"YulAssignment","src":"8029:102:61","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"8104:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"8112:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8100:3:61"},"nodeType":"YulFunctionCall","src":"8100:17:61"},{"name":"length","nodeType":"YulIdentifier","src":"8119:6:61"},{"name":"end","nodeType":"YulIdentifier","src":"8127:3:61"}],"functionName":{"name":"abi_decode_available_length_t_array$_t_bytes4_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"8038:61:61"},"nodeType":"YulFunctionCall","src":"8038:93:61"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"8029:5:61"}]}]},"name":"abi_decode_t_array$_t_bytes4_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"7823:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"7831:3:61","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"7839:5:61","type":""}],"src":"7769:368:61"},{"body":{"nodeType":"YulBlock","src":"8253:882:61","statements":[{"body":{"nodeType":"YulBlock","src":"8297:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f","nodeType":"YulIdentifier","src":"8299:77:61"},"nodeType":"YulFunctionCall","src":"8299:79:61"},"nodeType":"YulExpressionStatement","src":"8299:79:61"}]},"condition":{"arguments":[{"arguments":[{"name":"end","nodeType":"YulIdentifier","src":"8274:3:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"8279:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8270:3:61"},"nodeType":"YulFunctionCall","src":"8270:19:61"},{"kind":"number","nodeType":"YulLiteral","src":"8291:4:61","type":"","value":"0x60"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8266:3:61"},"nodeType":"YulFunctionCall","src":"8266:30:61"},"nodeType":"YulIf","src":"8263:117:61"},{"nodeType":"YulAssignment","src":"8389:30:61","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8414:4:61","type":"","value":"0x60"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"8398:15:61"},"nodeType":"YulFunctionCall","src":"8398:21:61"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"8389:5:61"}]},{"nodeType":"YulBlock","src":"8429:158:61","statements":[{"nodeType":"YulVariableDeclaration","src":"8472:15:61","value":{"kind":"number","nodeType":"YulLiteral","src":"8486:1:61","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"8476:6:61","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8512:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"8519:4:61","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8508:3:61"},"nodeType":"YulFunctionCall","src":"8508:16:61"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8551:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"8562:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8547:3:61"},"nodeType":"YulFunctionCall","src":"8547:22:61"},{"name":"end","nodeType":"YulIdentifier","src":"8571:3:61"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"8526:20:61"},"nodeType":"YulFunctionCall","src":"8526:49:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8501:6:61"},"nodeType":"YulFunctionCall","src":"8501:75:61"},"nodeType":"YulExpressionStatement","src":"8501:75:61"}]},{"nodeType":"YulBlock","src":"8597:173:61","statements":[{"nodeType":"YulVariableDeclaration","src":"8634:16:61","value":{"kind":"number","nodeType":"YulLiteral","src":"8648:2:61","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"8638:6:61","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8675:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"8682:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8671:3:61"},"nodeType":"YulFunctionCall","src":"8671:16:61"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8734:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"8745:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8730:3:61"},"nodeType":"YulFunctionCall","src":"8730:22:61"},{"name":"end","nodeType":"YulIdentifier","src":"8754:3:61"}],"functionName":{"name":"abi_decode_t_enum$_FacetCutAction_$11808","nodeType":"YulIdentifier","src":"8689:40:61"},"nodeType":"YulFunctionCall","src":"8689:69:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8664:6:61"},"nodeType":"YulFunctionCall","src":"8664:95:61"},"nodeType":"YulExpressionStatement","src":"8664:95:61"}]},{"nodeType":"YulBlock","src":"8780:348:61","statements":[{"nodeType":"YulVariableDeclaration","src":"8828:46:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8859:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"8870:2:61","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8855:3:61"},"nodeType":"YulFunctionCall","src":"8855:18:61"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8842:12:61"},"nodeType":"YulFunctionCall","src":"8842:32:61"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"8832:6:61","type":""}]},{"body":{"nodeType":"YulBlock","src":"8921:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421","nodeType":"YulIdentifier","src":"8923:77:61"},"nodeType":"YulFunctionCall","src":"8923:79:61"},"nodeType":"YulExpressionStatement","src":"8923:79:61"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"8893:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"8901:18:61","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"8890:2:61"},"nodeType":"YulFunctionCall","src":"8890:30:61"},"nodeType":"YulIf","src":"8887:117:61"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9029:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"9036:4:61","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9025:3:61"},"nodeType":"YulFunctionCall","src":"9025:16:61"},{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9092:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"9103:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9088:3:61"},"nodeType":"YulFunctionCall","src":"9088:22:61"},{"name":"end","nodeType":"YulIdentifier","src":"9112:3:61"}],"functionName":{"name":"abi_decode_t_array$_t_bytes4_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"9043:44:61"},"nodeType":"YulFunctionCall","src":"9043:73:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9018:6:61"},"nodeType":"YulFunctionCall","src":"9018:99:61"},"nodeType":"YulExpressionStatement","src":"9018:99:61"}]}]},"name":"abi_decode_t_struct$_FacetCut_$11817_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8228:9:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"8239:3:61","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"8247:5:61","type":""}],"src":"8171:964:61"},{"body":{"nodeType":"YulBlock","src":"9300:867:61","statements":[{"nodeType":"YulAssignment","src":"9310:117:61","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"9419:6:61"}],"functionName":{"name":"array_allocation_size_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"9335:83:61"},"nodeType":"YulFunctionCall","src":"9335:91:61"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"9319:15:61"},"nodeType":"YulFunctionCall","src":"9319:108:61"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"9310:5:61"}]},{"nodeType":"YulVariableDeclaration","src":"9436:16:61","value":{"name":"array","nodeType":"YulIdentifier","src":"9447:5:61"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"9440:3:61","type":""}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"9469:5:61"},{"name":"length","nodeType":"YulIdentifier","src":"9476:6:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9462:6:61"},"nodeType":"YulFunctionCall","src":"9462:21:61"},"nodeType":"YulExpressionStatement","src":"9462:21:61"},{"nodeType":"YulAssignment","src":"9492:23:61","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"9503:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"9510:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9499:3:61"},"nodeType":"YulFunctionCall","src":"9499:16:61"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"9492:3:61"}]},{"nodeType":"YulVariableDeclaration","src":"9525:44:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"9543:6:61"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"9555:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"9563:4:61","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"9551:3:61"},"nodeType":"YulFunctionCall","src":"9551:17:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9539:3:61"},"nodeType":"YulFunctionCall","src":"9539:30:61"},"variables":[{"name":"srcEnd","nodeType":"YulTypedName","src":"9529:6:61","type":""}]},{"body":{"nodeType":"YulBlock","src":"9597:103:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nodeType":"YulIdentifier","src":"9611:77:61"},"nodeType":"YulFunctionCall","src":"9611:79:61"},"nodeType":"YulExpressionStatement","src":"9611:79:61"}]},"condition":{"arguments":[{"name":"srcEnd","nodeType":"YulIdentifier","src":"9584:6:61"},{"name":"end","nodeType":"YulIdentifier","src":"9592:3:61"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"9581:2:61"},"nodeType":"YulFunctionCall","src":"9581:15:61"},"nodeType":"YulIf","src":"9578:122:61"},{"body":{"nodeType":"YulBlock","src":"9785:376:61","statements":[{"nodeType":"YulVariableDeclaration","src":"9800:36:61","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"9832:3:61"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"9819:12:61"},"nodeType":"YulFunctionCall","src":"9819:17:61"},"variables":[{"name":"innerOffset","nodeType":"YulTypedName","src":"9804:11:61","type":""}]},{"body":{"nodeType":"YulBlock","src":"9888:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"9890:77:61"},"nodeType":"YulFunctionCall","src":"9890:79:61"},"nodeType":"YulExpressionStatement","src":"9890:79:61"}]},"condition":{"arguments":[{"name":"innerOffset","nodeType":"YulIdentifier","src":"9855:11:61"},{"kind":"number","nodeType":"YulLiteral","src":"9868:18:61","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"9852:2:61"},"nodeType":"YulFunctionCall","src":"9852:35:61"},"nodeType":"YulIf","src":"9849:122:61"},{"nodeType":"YulVariableDeclaration","src":"9984:42:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"10006:6:61"},{"name":"innerOffset","nodeType":"YulIdentifier","src":"10014:11:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10002:3:61"},"nodeType":"YulFunctionCall","src":"10002:24:61"},"variables":[{"name":"elementPos","nodeType":"YulTypedName","src":"9988:10:61","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"10047:3:61"},{"arguments":[{"name":"elementPos","nodeType":"YulIdentifier","src":"10100:10:61"},{"name":"end","nodeType":"YulIdentifier","src":"10112:3:61"}],"functionName":{"name":"abi_decode_t_struct$_FacetCut_$11817_memory_ptr","nodeType":"YulIdentifier","src":"10052:47:61"},"nodeType":"YulFunctionCall","src":"10052:64:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10040:6:61"},"nodeType":"YulFunctionCall","src":"10040:77:61"},"nodeType":"YulExpressionStatement","src":"10040:77:61"},{"nodeType":"YulAssignment","src":"10130:21:61","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"10141:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"10146:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10137:3:61"},"nodeType":"YulFunctionCall","src":"10137:14:61"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"10130:3:61"}]}]},"condition":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"9738:3:61"},{"name":"srcEnd","nodeType":"YulIdentifier","src":"9743:6:61"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"9735:2:61"},"nodeType":"YulFunctionCall","src":"9735:15:61"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"9751:25:61","statements":[{"nodeType":"YulAssignment","src":"9753:21:61","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"9764:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"9769:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9760:3:61"},"nodeType":"YulFunctionCall","src":"9760:14:61"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"9753:3:61"}]}]},"pre":{"nodeType":"YulBlock","src":"9713:21:61","statements":[{"nodeType":"YulVariableDeclaration","src":"9715:17:61","value":{"name":"offset","nodeType":"YulIdentifier","src":"9726:6:61"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"9719:3:61","type":""}]}]},"src":"9709:452:61"}]},"name":"abi_decode_available_length_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"9270:6:61","type":""},{"name":"length","nodeType":"YulTypedName","src":"9278:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"9286:3:61","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"9294:5:61","type":""}],"src":"9171:996:61"},{"body":{"nodeType":"YulBlock","src":"10356:215:61","statements":[{"nodeType":"YulAssignment","src":"10422:142:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10534:5:61"},{"name":"length","nodeType":"YulIdentifier","src":"10541:6:61"},{"arguments":[],"functionName":{"name":"calldatasize","nodeType":"YulIdentifier","src":"10549:12:61"},"nodeType":"YulFunctionCall","src":"10549:14:61"}],"functionName":{"name":"abi_decode_available_length_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"10444:89:61"},"nodeType":"YulFunctionCall","src":"10444:120:61"},"variableNames":[{"name":"converted","nodeType":"YulIdentifier","src":"10422:9:61"}]}]},"name":"convert_array_t_array$_t_struct$_FacetCut_$11817_calldata_ptr_$dyn_calldata_ptr_to_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"10327:5:61","type":""},{"name":"length","nodeType":"YulTypedName","src":"10334:6:61","type":""}],"returnVariables":[{"name":"converted","nodeType":"YulTypedName","src":"10345:9:61","type":""}],"src":"10173:398:61"},{"body":{"nodeType":"YulBlock","src":"10605:152:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10622:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10625:77:61","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10615:6:61"},"nodeType":"YulFunctionCall","src":"10615:88:61"},"nodeType":"YulExpressionStatement","src":"10615:88:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10719:1:61","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"10722:4:61","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10712:6:61"},"nodeType":"YulFunctionCall","src":"10712:15:61"},"nodeType":"YulExpressionStatement","src":"10712:15:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10743:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10746:4:61","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10736:6:61"},"nodeType":"YulFunctionCall","src":"10736:15:61"},"nodeType":"YulExpressionStatement","src":"10736:15:61"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"10577:180:61"},{"body":{"nodeType":"YulBlock","src":"10791:152:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10808:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10811:77:61","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10801:6:61"},"nodeType":"YulFunctionCall","src":"10801:88:61"},"nodeType":"YulExpressionStatement","src":"10801:88:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10905:1:61","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"10908:4:61","type":"","value":"0x21"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10898:6:61"},"nodeType":"YulFunctionCall","src":"10898:15:61"},"nodeType":"YulExpressionStatement","src":"10898:15:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10929:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10932:4:61","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10922:6:61"},"nodeType":"YulFunctionCall","src":"10922:15:61"},"nodeType":"YulExpressionStatement","src":"10922:15:61"}]},"name":"panic_error_0x21","nodeType":"YulFunctionDefinition","src":"10763:180:61"},{"body":{"nodeType":"YulBlock","src":"11055:120:61","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"11077:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"11085:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11073:3:61"},"nodeType":"YulFunctionCall","src":"11073:14:61"},{"hexValue":"4c69624469616d6f6e644375743a20496e636f72726563742046616365744375","kind":"string","nodeType":"YulLiteral","src":"11089:34:61","type":"","value":"LibDiamondCut: Incorrect FacetCu"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11066:6:61"},"nodeType":"YulFunctionCall","src":"11066:58:61"},"nodeType":"YulExpressionStatement","src":"11066:58:61"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"11145:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"11153:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11141:3:61"},"nodeType":"YulFunctionCall","src":"11141:15:61"},{"hexValue":"74416374696f6e","kind":"string","nodeType":"YulLiteral","src":"11158:9:61","type":"","value":"tAction"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11134:6:61"},"nodeType":"YulFunctionCall","src":"11134:34:61"},"nodeType":"YulExpressionStatement","src":"11134:34:61"}]},"name":"store_literal_in_memory_48267d8daf5ea9c6bbad1fe9c53dc4c04a2a01b2b85bad432956cf42f45b2f54","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"11047:6:61","type":""}],"src":"10949:226:61"},{"body":{"nodeType":"YulBlock","src":"11327:220:61","statements":[{"nodeType":"YulAssignment","src":"11337:74:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"11403:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"11408:2:61","type":"","value":"39"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"11344:58:61"},"nodeType":"YulFunctionCall","src":"11344:67:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"11337:3:61"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"11509:3:61"}],"functionName":{"name":"store_literal_in_memory_48267d8daf5ea9c6bbad1fe9c53dc4c04a2a01b2b85bad432956cf42f45b2f54","nodeType":"YulIdentifier","src":"11420:88:61"},"nodeType":"YulFunctionCall","src":"11420:93:61"},"nodeType":"YulExpressionStatement","src":"11420:93:61"},{"nodeType":"YulAssignment","src":"11522:19:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"11533:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"11538:2:61","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11529:3:61"},"nodeType":"YulFunctionCall","src":"11529:12:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"11522:3:61"}]}]},"name":"abi_encode_t_stringliteral_48267d8daf5ea9c6bbad1fe9c53dc4c04a2a01b2b85bad432956cf42f45b2f54_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"11315:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"11323:3:61","type":""}],"src":"11181:366:61"},{"body":{"nodeType":"YulBlock","src":"11724:248:61","statements":[{"nodeType":"YulAssignment","src":"11734:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11746:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"11757:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11742:3:61"},"nodeType":"YulFunctionCall","src":"11742:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11734:4:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"11781:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"11792:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11777:3:61"},"nodeType":"YulFunctionCall","src":"11777:17:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"11800:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"11806:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"11796:3:61"},"nodeType":"YulFunctionCall","src":"11796:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11770:6:61"},"nodeType":"YulFunctionCall","src":"11770:47:61"},"nodeType":"YulExpressionStatement","src":"11770:47:61"},{"nodeType":"YulAssignment","src":"11826:139:61","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"11960:4:61"}],"functionName":{"name":"abi_encode_t_stringliteral_48267d8daf5ea9c6bbad1fe9c53dc4c04a2a01b2b85bad432956cf42f45b2f54_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"11834:124:61"},"nodeType":"YulFunctionCall","src":"11834:131:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"11826:4:61"}]}]},"name":"abi_encode_tuple_t_stringliteral_48267d8daf5ea9c6bbad1fe9c53dc4c04a2a01b2b85bad432956cf42f45b2f54__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"11704:9:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"11719:4:61","type":""}],"src":"11553:419:61"},{"body":{"nodeType":"YulBlock","src":"12006:152:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12023:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"12026:77:61","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12016:6:61"},"nodeType":"YulFunctionCall","src":"12016:88:61"},"nodeType":"YulExpressionStatement","src":"12016:88:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12120:1:61","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"12123:4:61","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12113:6:61"},"nodeType":"YulFunctionCall","src":"12113:15:61"},"nodeType":"YulExpressionStatement","src":"12113:15:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"12144:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"12147:4:61","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"12137:6:61"},"nodeType":"YulFunctionCall","src":"12137:15:61"},"nodeType":"YulExpressionStatement","src":"12137:15:61"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"11978:180:61"},{"body":{"nodeType":"YulBlock","src":"12209:32:61","statements":[{"nodeType":"YulAssignment","src":"12219:16:61","value":{"name":"value","nodeType":"YulIdentifier","src":"12230:5:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"12219:7:61"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"12191:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"12201:7:61","type":""}],"src":"12164:77:61"},{"body":{"nodeType":"YulBlock","src":"12290:190:61","statements":[{"nodeType":"YulAssignment","src":"12300:33:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"12327:5:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"12309:17:61"},"nodeType":"YulFunctionCall","src":"12309:24:61"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"12300:5:61"}]},{"body":{"nodeType":"YulBlock","src":"12423:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"12425:16:61"},"nodeType":"YulFunctionCall","src":"12425:18:61"},"nodeType":"YulExpressionStatement","src":"12425:18:61"}]},"condition":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"12348:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"12355:66:61","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"12345:2:61"},"nodeType":"YulFunctionCall","src":"12345:77:61"},"nodeType":"YulIf","src":"12342:103:61"},{"nodeType":"YulAssignment","src":"12454:20:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"12465:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"12472:1:61","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12461:3:61"},"nodeType":"YulFunctionCall","src":"12461:13:61"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"12454:3:61"}]}]},"name":"increment_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"12276:5:61","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"12286:3:61","type":""}],"src":"12247:233:61"},{"body":{"nodeType":"YulBlock","src":"12587:40:61","statements":[{"nodeType":"YulAssignment","src":"12598:22:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"12614:5:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"12608:5:61"},"nodeType":"YulFunctionCall","src":"12608:12:61"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"12598:6:61"}]}]},"name":"array_length_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"12570:5:61","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"12580:6:61","type":""}],"src":"12486:141:61"},{"body":{"nodeType":"YulBlock","src":"12771:73:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12788:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"12793:6:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"12781:6:61"},"nodeType":"YulFunctionCall","src":"12781:19:61"},"nodeType":"YulExpressionStatement","src":"12781:19:61"},{"nodeType":"YulAssignment","src":"12809:29:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"12828:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"12833:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12824:3:61"},"nodeType":"YulFunctionCall","src":"12824:14:61"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"12809:11:61"}]}]},"name":"array_storeLengthForEncoding_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"12743:3:61","type":""},{"name":"length","nodeType":"YulTypedName","src":"12748:6:61","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"12759:11:61","type":""}],"src":"12633:211:61"},{"body":{"nodeType":"YulBlock","src":"12949:60:61","statements":[{"nodeType":"YulAssignment","src":"12959:11:61","value":{"name":"ptr","nodeType":"YulIdentifier","src":"12967:3:61"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"12959:4:61"}]},{"nodeType":"YulAssignment","src":"12980:22:61","value":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"12992:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"12997:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"12988:3:61"},"nodeType":"YulFunctionCall","src":"12988:14:61"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"12980:4:61"}]}]},"name":"array_dataslot_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"12936:3:61","type":""}],"returnVariables":[{"name":"data","nodeType":"YulTypedName","src":"12944:4:61","type":""}],"src":"12850:159:61"},{"body":{"nodeType":"YulBlock","src":"13070:53:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13087:3:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"13110:5:61"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"13092:17:61"},"nodeType":"YulFunctionCall","src":"13092:24:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13080:6:61"},"nodeType":"YulFunctionCall","src":"13080:37:61"},"nodeType":"YulExpressionStatement","src":"13080:37:61"}]},"name":"abi_encode_t_address_to_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"13058:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"13065:3:61","type":""}],"src":"13015:108:61"},{"body":{"nodeType":"YulBlock","src":"13192:62:61","statements":[{"body":{"nodeType":"YulBlock","src":"13226:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x21","nodeType":"YulIdentifier","src":"13228:16:61"},"nodeType":"YulFunctionCall","src":"13228:18:61"},"nodeType":"YulExpressionStatement","src":"13228:18:61"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"13215:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"13222:1:61","type":"","value":"3"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"13212:2:61"},"nodeType":"YulFunctionCall","src":"13212:12:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"13205:6:61"},"nodeType":"YulFunctionCall","src":"13205:20:61"},"nodeType":"YulIf","src":"13202:46:61"}]},"name":"validator_assert_t_enum$_FacetCutAction_$11808","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"13185:5:61","type":""}],"src":"13129:125:61"},{"body":{"nodeType":"YulBlock","src":"13325:86:61","statements":[{"nodeType":"YulAssignment","src":"13335:16:61","value":{"name":"value","nodeType":"YulIdentifier","src":"13346:5:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"13335:7:61"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"13399:5:61"}],"functionName":{"name":"validator_assert_t_enum$_FacetCutAction_$11808","nodeType":"YulIdentifier","src":"13352:46:61"},"nodeType":"YulFunctionCall","src":"13352:53:61"},"nodeType":"YulExpressionStatement","src":"13352:53:61"}]},"name":"cleanup_t_enum$_FacetCutAction_$11808","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"13307:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"13317:7:61","type":""}],"src":"13260:151:61"},{"body":{"nodeType":"YulBlock","src":"13495:73:61","statements":[{"nodeType":"YulAssignment","src":"13505:57:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"13556:5:61"}],"functionName":{"name":"cleanup_t_enum$_FacetCutAction_$11808","nodeType":"YulIdentifier","src":"13518:37:61"},"nodeType":"YulFunctionCall","src":"13518:44:61"},"variableNames":[{"name":"converted","nodeType":"YulIdentifier","src":"13505:9:61"}]}]},"name":"convert_t_enum$_FacetCutAction_$11808_to_t_uint8","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"13475:5:61","type":""}],"returnVariables":[{"name":"converted","nodeType":"YulTypedName","src":"13485:9:61","type":""}],"src":"13417:151:61"},{"body":{"nodeType":"YulBlock","src":"13647:84:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13664:3:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"13718:5:61"}],"functionName":{"name":"convert_t_enum$_FacetCutAction_$11808_to_t_uint8","nodeType":"YulIdentifier","src":"13669:48:61"},"nodeType":"YulFunctionCall","src":"13669:55:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13657:6:61"},"nodeType":"YulFunctionCall","src":"13657:68:61"},"nodeType":"YulExpressionStatement","src":"13657:68:61"}]},"name":"abi_encode_t_enum$_FacetCutAction_$11808_to_t_uint8","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"13635:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"13642:3:61","type":""}],"src":"13574:157:61"},{"body":{"nodeType":"YulBlock","src":"13810:40:61","statements":[{"nodeType":"YulAssignment","src":"13821:22:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"13837:5:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"13831:5:61"},"nodeType":"YulFunctionCall","src":"13831:12:61"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"13821:6:61"}]}]},"name":"array_length_t_array$_t_bytes4_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"13793:5:61","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"13803:6:61","type":""}],"src":"13737:113:61"},{"body":{"nodeType":"YulBlock","src":"13956:73:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"13973:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"13978:6:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"13966:6:61"},"nodeType":"YulFunctionCall","src":"13966:19:61"},"nodeType":"YulExpressionStatement","src":"13966:19:61"},{"nodeType":"YulAssignment","src":"13994:29:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14013:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"14018:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14009:3:61"},"nodeType":"YulFunctionCall","src":"14009:14:61"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"13994:11:61"}]}]},"name":"array_storeLengthForEncoding_t_array$_t_bytes4_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"13928:3:61","type":""},{"name":"length","nodeType":"YulTypedName","src":"13933:6:61","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"13944:11:61","type":""}],"src":"13856:173:61"},{"body":{"nodeType":"YulBlock","src":"14106:60:61","statements":[{"nodeType":"YulAssignment","src":"14116:11:61","value":{"name":"ptr","nodeType":"YulIdentifier","src":"14124:3:61"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"14116:4:61"}]},{"nodeType":"YulAssignment","src":"14137:22:61","value":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"14149:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"14154:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14145:3:61"},"nodeType":"YulFunctionCall","src":"14145:14:61"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"14137:4:61"}]}]},"name":"array_dataslot_t_array$_t_bytes4_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"14093:3:61","type":""}],"returnVariables":[{"name":"data","nodeType":"YulTypedName","src":"14101:4:61","type":""}],"src":"14035:131:61"},{"body":{"nodeType":"YulBlock","src":"14225:52:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14242:3:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"14264:5:61"}],"functionName":{"name":"cleanup_t_bytes4","nodeType":"YulIdentifier","src":"14247:16:61"},"nodeType":"YulFunctionCall","src":"14247:23:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"14235:6:61"},"nodeType":"YulFunctionCall","src":"14235:36:61"},"nodeType":"YulExpressionStatement","src":"14235:36:61"}]},"name":"abi_encode_t_bytes4_to_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"14213:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"14220:3:61","type":""}],"src":"14172:105:61"},{"body":{"nodeType":"YulBlock","src":"14361:97:61","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"14403:6:61"},{"name":"pos","nodeType":"YulIdentifier","src":"14411:3:61"}],"functionName":{"name":"abi_encode_t_bytes4_to_t_bytes4","nodeType":"YulIdentifier","src":"14371:31:61"},"nodeType":"YulFunctionCall","src":"14371:44:61"},"nodeType":"YulExpressionStatement","src":"14371:44:61"},{"nodeType":"YulAssignment","src":"14424:28:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14442:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"14447:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14438:3:61"},"nodeType":"YulFunctionCall","src":"14438:14:61"},"variableNames":[{"name":"updatedPos","nodeType":"YulIdentifier","src":"14424:10:61"}]}]},"name":"abi_encodeUpdatedPos_t_bytes4_to_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"value0","nodeType":"YulTypedName","src":"14334:6:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"14342:3:61","type":""}],"returnVariables":[{"name":"updatedPos","nodeType":"YulTypedName","src":"14350:10:61","type":""}],"src":"14283:175:61"},{"body":{"nodeType":"YulBlock","src":"14538:38:61","statements":[{"nodeType":"YulAssignment","src":"14548:22:61","value":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"14560:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"14565:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14556:3:61"},"nodeType":"YulFunctionCall","src":"14556:14:61"},"variableNames":[{"name":"next","nodeType":"YulIdentifier","src":"14548:4:61"}]}]},"name":"array_nextElement_t_array$_t_bytes4_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"14525:3:61","type":""}],"returnVariables":[{"name":"next","nodeType":"YulTypedName","src":"14533:4:61","type":""}],"src":"14464:112:61"},{"body":{"nodeType":"YulBlock","src":"14722:592:61","statements":[{"nodeType":"YulVariableDeclaration","src":"14732:67:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"14793:5:61"}],"functionName":{"name":"array_length_t_array$_t_bytes4_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"14746:46:61"},"nodeType":"YulFunctionCall","src":"14746:53:61"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"14736:6:61","type":""}]},{"nodeType":"YulAssignment","src":"14808:82:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"14878:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"14883:6:61"}],"functionName":{"name":"array_storeLengthForEncoding_t_array$_t_bytes4_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"14815:62:61"},"nodeType":"YulFunctionCall","src":"14815:75:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"14808:3:61"}]},{"nodeType":"YulVariableDeclaration","src":"14899:70:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"14963:5:61"}],"functionName":{"name":"array_dataslot_t_array$_t_bytes4_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"14914:48:61"},"nodeType":"YulFunctionCall","src":"14914:55:61"},"variables":[{"name":"baseRef","nodeType":"YulTypedName","src":"14903:7:61","type":""}]},{"nodeType":"YulVariableDeclaration","src":"14978:21:61","value":{"name":"baseRef","nodeType":"YulIdentifier","src":"14992:7:61"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"14982:6:61","type":""}]},{"body":{"nodeType":"YulBlock","src":"15068:221:61","statements":[{"nodeType":"YulVariableDeclaration","src":"15082:34:61","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"15109:6:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"15103:5:61"},"nodeType":"YulFunctionCall","src":"15103:13:61"},"variables":[{"name":"elementValue0","nodeType":"YulTypedName","src":"15086:13:61","type":""}]},{"nodeType":"YulAssignment","src":"15129:68:61","value":{"arguments":[{"name":"elementValue0","nodeType":"YulIdentifier","src":"15178:13:61"},{"name":"pos","nodeType":"YulIdentifier","src":"15193:3:61"}],"functionName":{"name":"abi_encodeUpdatedPos_t_bytes4_to_t_bytes4","nodeType":"YulIdentifier","src":"15136:41:61"},"nodeType":"YulFunctionCall","src":"15136:61:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"15129:3:61"}]},{"nodeType":"YulAssignment","src":"15210:69:61","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"15272:6:61"}],"functionName":{"name":"array_nextElement_t_array$_t_bytes4_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"15220:51:61"},"nodeType":"YulFunctionCall","src":"15220:59:61"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"15210:6:61"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"15030:1:61"},{"name":"length","nodeType":"YulIdentifier","src":"15033:6:61"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"15027:2:61"},"nodeType":"YulFunctionCall","src":"15027:13:61"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"15041:18:61","statements":[{"nodeType":"YulAssignment","src":"15043:14:61","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"15052:1:61"},{"kind":"number","nodeType":"YulLiteral","src":"15055:1:61","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15048:3:61"},"nodeType":"YulFunctionCall","src":"15048:9:61"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"15043:1:61"}]}]},"pre":{"nodeType":"YulBlock","src":"15012:14:61","statements":[{"nodeType":"YulVariableDeclaration","src":"15014:10:61","value":{"kind":"number","nodeType":"YulLiteral","src":"15023:1:61","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"15018:1:61","type":""}]}]},"src":"15008:281:61"},{"nodeType":"YulAssignment","src":"15298:10:61","value":{"name":"pos","nodeType":"YulIdentifier","src":"15305:3:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"15298:3:61"}]}]},"name":"abi_encode_t_array$_t_bytes4_$dyn_memory_ptr_to_t_array$_t_bytes4_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"14701:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"14708:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"14717:3:61","type":""}],"src":"14610:704:61"},{"body":{"nodeType":"YulBlock","src":"15490:725:61","statements":[{"nodeType":"YulVariableDeclaration","src":"15500:26:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"15516:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"15521:4:61","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15512:3:61"},"nodeType":"YulFunctionCall","src":"15512:14:61"},"variables":[{"name":"tail","nodeType":"YulTypedName","src":"15504:4:61","type":""}]},{"nodeType":"YulBlock","src":"15536:172:61","statements":[{"nodeType":"YulVariableDeclaration","src":"15579:43:61","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"15609:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"15616:4:61","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15605:3:61"},"nodeType":"YulFunctionCall","src":"15605:16:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"15599:5:61"},"nodeType":"YulFunctionCall","src":"15599:23:61"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"15583:12:61","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"15669:12:61"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"15687:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"15692:4:61","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15683:3:61"},"nodeType":"YulFunctionCall","src":"15683:14:61"}],"functionName":{"name":"abi_encode_t_address_to_t_address","nodeType":"YulIdentifier","src":"15635:33:61"},"nodeType":"YulFunctionCall","src":"15635:63:61"},"nodeType":"YulExpressionStatement","src":"15635:63:61"}]},{"nodeType":"YulBlock","src":"15718:184:61","statements":[{"nodeType":"YulVariableDeclaration","src":"15755:43:61","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"15785:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"15792:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15781:3:61"},"nodeType":"YulFunctionCall","src":"15781:16:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"15775:5:61"},"nodeType":"YulFunctionCall","src":"15775:23:61"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"15759:12:61","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"15863:12:61"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"15881:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"15886:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15877:3:61"},"nodeType":"YulFunctionCall","src":"15877:14:61"}],"functionName":{"name":"abi_encode_t_enum$_FacetCutAction_$11808_to_t_uint8","nodeType":"YulIdentifier","src":"15811:51:61"},"nodeType":"YulFunctionCall","src":"15811:81:61"},"nodeType":"YulExpressionStatement","src":"15811:81:61"}]},{"nodeType":"YulBlock","src":"15912:276:61","statements":[{"nodeType":"YulVariableDeclaration","src":"15960:43:61","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"15990:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"15997:4:61","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"15986:3:61"},"nodeType":"YulFunctionCall","src":"15986:16:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"15980:5:61"},"nodeType":"YulFunctionCall","src":"15980:23:61"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"15964:12:61","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"16028:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"16033:4:61","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16024:3:61"},"nodeType":"YulFunctionCall","src":"16024:14:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"16044:4:61"},{"name":"pos","nodeType":"YulIdentifier","src":"16050:3:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"16040:3:61"},"nodeType":"YulFunctionCall","src":"16040:14:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"16017:6:61"},"nodeType":"YulFunctionCall","src":"16017:38:61"},"nodeType":"YulExpressionStatement","src":"16017:38:61"},{"nodeType":"YulAssignment","src":"16068:109:61","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"16158:12:61"},{"name":"tail","nodeType":"YulIdentifier","src":"16172:4:61"}],"functionName":{"name":"abi_encode_t_array$_t_bytes4_$dyn_memory_ptr_to_t_array$_t_bytes4_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"16076:81:61"},"nodeType":"YulFunctionCall","src":"16076:101:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"16068:4:61"}]}]},{"nodeType":"YulAssignment","src":"16198:11:61","value":{"name":"tail","nodeType":"YulIdentifier","src":"16205:4:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"16198:3:61"}]}]},"name":"abi_encode_t_struct$_FacetCut_$11817_memory_ptr_to_t_struct$_FacetCut_$11817_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"15469:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"15476:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"15485:3:61","type":""}],"src":"15372:843:61"},{"body":{"nodeType":"YulBlock","src":"16355:130:61","statements":[{"nodeType":"YulAssignment","src":"16365:114:61","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"16467:6:61"},{"name":"pos","nodeType":"YulIdentifier","src":"16475:3:61"}],"functionName":{"name":"abi_encode_t_struct$_FacetCut_$11817_memory_ptr_to_t_struct$_FacetCut_$11817_memory_ptr","nodeType":"YulIdentifier","src":"16379:87:61"},"nodeType":"YulFunctionCall","src":"16379:100:61"},"variableNames":[{"name":"updatedPos","nodeType":"YulIdentifier","src":"16365:10:61"}]}]},"name":"abi_encodeUpdatedPos_t_struct$_FacetCut_$11817_memory_ptr_to_t_struct$_FacetCut_$11817_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value0","nodeType":"YulTypedName","src":"16328:6:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"16336:3:61","type":""}],"returnVariables":[{"name":"updatedPos","nodeType":"YulTypedName","src":"16344:10:61","type":""}],"src":"16221:264:61"},{"body":{"nodeType":"YulBlock","src":"16593:38:61","statements":[{"nodeType":"YulAssignment","src":"16603:22:61","value":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"16615:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"16620:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"16611:3:61"},"nodeType":"YulFunctionCall","src":"16611:14:61"},"variableNames":[{"name":"next","nodeType":"YulIdentifier","src":"16603:4:61"}]}]},"name":"array_nextElement_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"16580:3:61","type":""}],"returnVariables":[{"name":"next","nodeType":"YulTypedName","src":"16588:4:61","type":""}],"src":"16491:140:61"},{"body":{"nodeType":"YulBlock","src":"16871:949:61","statements":[{"nodeType":"YulVariableDeclaration","src":"16881:95:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"16970:5:61"}],"functionName":{"name":"array_length_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"16895:74:61"},"nodeType":"YulFunctionCall","src":"16895:81:61"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"16885:6:61","type":""}]},{"nodeType":"YulAssignment","src":"16985:120:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17093:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"17098:6:61"}],"functionName":{"name":"array_storeLengthForEncoding_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"16992:100:61"},"nodeType":"YulFunctionCall","src":"16992:113:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"16985:3:61"}]},{"nodeType":"YulVariableDeclaration","src":"17114:20:61","value":{"name":"pos","nodeType":"YulIdentifier","src":"17131:3:61"},"variables":[{"name":"headStart","nodeType":"YulTypedName","src":"17118:9:61","type":""}]},{"nodeType":"YulVariableDeclaration","src":"17143:39:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17159:3:61"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"17168:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"17176:4:61","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"17164:3:61"},"nodeType":"YulFunctionCall","src":"17164:17:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17155:3:61"},"nodeType":"YulFunctionCall","src":"17155:27:61"},"variables":[{"name":"tail","nodeType":"YulTypedName","src":"17147:4:61","type":""}]},{"nodeType":"YulVariableDeclaration","src":"17191:98:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"17283:5:61"}],"functionName":{"name":"array_dataslot_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"17206:76:61"},"nodeType":"YulFunctionCall","src":"17206:83:61"},"variables":[{"name":"baseRef","nodeType":"YulTypedName","src":"17195:7:61","type":""}]},{"nodeType":"YulVariableDeclaration","src":"17298:21:61","value":{"name":"baseRef","nodeType":"YulIdentifier","src":"17312:7:61"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"17302:6:61","type":""}]},{"body":{"nodeType":"YulBlock","src":"17388:387:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17409:3:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"17418:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"17424:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"17414:3:61"},"nodeType":"YulFunctionCall","src":"17414:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17402:6:61"},"nodeType":"YulFunctionCall","src":"17402:33:61"},"nodeType":"YulExpressionStatement","src":"17402:33:61"},{"nodeType":"YulVariableDeclaration","src":"17448:34:61","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"17475:6:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"17469:5:61"},"nodeType":"YulFunctionCall","src":"17469:13:61"},"variables":[{"name":"elementValue0","nodeType":"YulTypedName","src":"17452:13:61","type":""}]},{"nodeType":"YulAssignment","src":"17495:126:61","value":{"arguments":[{"name":"elementValue0","nodeType":"YulIdentifier","src":"17601:13:61"},{"name":"tail","nodeType":"YulIdentifier","src":"17616:4:61"}],"functionName":{"name":"abi_encodeUpdatedPos_t_struct$_FacetCut_$11817_memory_ptr_to_t_struct$_FacetCut_$11817_memory_ptr","nodeType":"YulIdentifier","src":"17503:97:61"},"nodeType":"YulFunctionCall","src":"17503:118:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"17495:4:61"}]},{"nodeType":"YulAssignment","src":"17634:97:61","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"17724:6:61"}],"functionName":{"name":"array_nextElement_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"17644:79:61"},"nodeType":"YulFunctionCall","src":"17644:87:61"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"17634:6:61"}]},{"nodeType":"YulAssignment","src":"17744:21:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17755:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"17760:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17751:3:61"},"nodeType":"YulFunctionCall","src":"17751:14:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"17744:3:61"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"17350:1:61"},{"name":"length","nodeType":"YulIdentifier","src":"17353:6:61"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"17347:2:61"},"nodeType":"YulFunctionCall","src":"17347:13:61"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"17361:18:61","statements":[{"nodeType":"YulAssignment","src":"17363:14:61","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"17372:1:61"},{"kind":"number","nodeType":"YulLiteral","src":"17375:1:61","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"17368:3:61"},"nodeType":"YulFunctionCall","src":"17368:9:61"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"17363:1:61"}]}]},"pre":{"nodeType":"YulBlock","src":"17332:14:61","statements":[{"nodeType":"YulVariableDeclaration","src":"17334:10:61","value":{"kind":"number","nodeType":"YulLiteral","src":"17343:1:61","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"17338:1:61","type":""}]}]},"src":"17328:447:61"},{"nodeType":"YulAssignment","src":"17784:11:61","value":{"name":"tail","nodeType":"YulIdentifier","src":"17791:4:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"17784:3:61"}]},{"nodeType":"YulAssignment","src":"17804:10:61","value":{"name":"pos","nodeType":"YulIdentifier","src":"17811:3:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"17804:3:61"}]}]},"name":"abi_encode_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"16850:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"16857:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"16866:3:61","type":""}],"src":"16693:1127:61"},{"body":{"nodeType":"YulBlock","src":"17891:53:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"17908:3:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"17931:5:61"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"17913:17:61"},"nodeType":"YulFunctionCall","src":"17913:24:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"17901:6:61"},"nodeType":"YulFunctionCall","src":"17901:37:61"},"nodeType":"YulExpressionStatement","src":"17901:37:61"}]},"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"17879:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"17886:3:61","type":""}],"src":"17826:118:61"},{"body":{"nodeType":"YulBlock","src":"18008:40:61","statements":[{"nodeType":"YulAssignment","src":"18019:22:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"18035:5:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"18029:5:61"},"nodeType":"YulFunctionCall","src":"18029:12:61"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"18019:6:61"}]}]},"name":"array_length_t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"17991:5:61","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"18001:6:61","type":""}],"src":"17950:98:61"},{"body":{"nodeType":"YulBlock","src":"18149:73:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18166:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"18171:6:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18159:6:61"},"nodeType":"YulFunctionCall","src":"18159:19:61"},"nodeType":"YulExpressionStatement","src":"18159:19:61"},{"nodeType":"YulAssignment","src":"18187:29:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18206:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"18211:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18202:3:61"},"nodeType":"YulFunctionCall","src":"18202:14:61"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"18187:11:61"}]}]},"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"18121:3:61","type":""},{"name":"length","nodeType":"YulTypedName","src":"18126:6:61","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"18137:11:61","type":""}],"src":"18054:168:61"},{"body":{"nodeType":"YulBlock","src":"18290:184:61","statements":[{"nodeType":"YulVariableDeclaration","src":"18300:10:61","value":{"kind":"number","nodeType":"YulLiteral","src":"18309:1:61","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"18304:1:61","type":""}]},{"body":{"nodeType":"YulBlock","src":"18369:63:61","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"18394:3:61"},{"name":"i","nodeType":"YulIdentifier","src":"18399:1:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18390:3:61"},"nodeType":"YulFunctionCall","src":"18390:11:61"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"18413:3:61"},{"name":"i","nodeType":"YulIdentifier","src":"18418:1:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18409:3:61"},"nodeType":"YulFunctionCall","src":"18409:11:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"18403:5:61"},"nodeType":"YulFunctionCall","src":"18403:18:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18383:6:61"},"nodeType":"YulFunctionCall","src":"18383:39:61"},"nodeType":"YulExpressionStatement","src":"18383:39:61"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"18330:1:61"},{"name":"length","nodeType":"YulIdentifier","src":"18333:6:61"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"18327:2:61"},"nodeType":"YulFunctionCall","src":"18327:13:61"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"18341:19:61","statements":[{"nodeType":"YulAssignment","src":"18343:15:61","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"18352:1:61"},{"kind":"number","nodeType":"YulLiteral","src":"18355:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18348:3:61"},"nodeType":"YulFunctionCall","src":"18348:10:61"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"18343:1:61"}]}]},"pre":{"nodeType":"YulBlock","src":"18323:3:61","statements":[]},"src":"18319:113:61"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"18452:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"18457:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18448:3:61"},"nodeType":"YulFunctionCall","src":"18448:16:61"},{"kind":"number","nodeType":"YulLiteral","src":"18466:1:61","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"18441:6:61"},"nodeType":"YulFunctionCall","src":"18441:27:61"},"nodeType":"YulExpressionStatement","src":"18441:27:61"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"18272:3:61","type":""},{"name":"dst","nodeType":"YulTypedName","src":"18277:3:61","type":""},{"name":"length","nodeType":"YulTypedName","src":"18282:6:61","type":""}],"src":"18228:246:61"},{"body":{"nodeType":"YulBlock","src":"18570:283:61","statements":[{"nodeType":"YulVariableDeclaration","src":"18580:52:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"18626:5:61"}],"functionName":{"name":"array_length_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"18594:31:61"},"nodeType":"YulFunctionCall","src":"18594:38:61"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"18584:6:61","type":""}]},{"nodeType":"YulAssignment","src":"18641:77:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18706:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"18711:6:61"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"18648:57:61"},"nodeType":"YulFunctionCall","src":"18648:70:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"18641:3:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"18766:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"18773:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18762:3:61"},"nodeType":"YulFunctionCall","src":"18762:16:61"},{"name":"pos","nodeType":"YulIdentifier","src":"18780:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"18785:6:61"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"18727:34:61"},"nodeType":"YulFunctionCall","src":"18727:65:61"},"nodeType":"YulExpressionStatement","src":"18727:65:61"},{"nodeType":"YulAssignment","src":"18801:46:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"18812:3:61"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"18839:6:61"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"18817:21:61"},"nodeType":"YulFunctionCall","src":"18817:29:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"18808:3:61"},"nodeType":"YulFunctionCall","src":"18808:39:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"18801:3:61"}]}]},"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"18551:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"18558:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"18566:3:61","type":""}],"src":"18480:373:61"},{"body":{"nodeType":"YulBlock","src":"19135:512:61","statements":[{"nodeType":"YulAssignment","src":"19145:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19157:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"19168:2:61","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19153:3:61"},"nodeType":"YulFunctionCall","src":"19153:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"19145:4:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19192:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"19203:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19188:3:61"},"nodeType":"YulFunctionCall","src":"19188:17:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"19211:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"19217:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"19207:3:61"},"nodeType":"YulFunctionCall","src":"19207:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19181:6:61"},"nodeType":"YulFunctionCall","src":"19181:47:61"},"nodeType":"YulExpressionStatement","src":"19181:47:61"},{"nodeType":"YulAssignment","src":"19237:170:61","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"19393:6:61"},{"name":"tail","nodeType":"YulIdentifier","src":"19402:4:61"}],"functionName":{"name":"abi_encode_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"19245:147:61"},"nodeType":"YulFunctionCall","src":"19245:162:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"19237:4:61"}]},{"expression":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"19461:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19474:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"19485:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19470:3:61"},"nodeType":"YulFunctionCall","src":"19470:18:61"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"19417:43:61"},"nodeType":"YulFunctionCall","src":"19417:72:61"},"nodeType":"YulExpressionStatement","src":"19417:72:61"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"19510:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"19521:2:61","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19506:3:61"},"nodeType":"YulFunctionCall","src":"19506:18:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"19530:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"19536:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"19526:3:61"},"nodeType":"YulFunctionCall","src":"19526:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19499:6:61"},"nodeType":"YulFunctionCall","src":"19499:48:61"},"nodeType":"YulExpressionStatement","src":"19499:48:61"},{"nodeType":"YulAssignment","src":"19556:84:61","value":{"arguments":[{"name":"value2","nodeType":"YulIdentifier","src":"19626:6:61"},{"name":"tail","nodeType":"YulIdentifier","src":"19635:4:61"}],"functionName":{"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"19564:61:61"},"nodeType":"YulFunctionCall","src":"19564:76:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"19556:4:61"}]}]},"name":"abi_encode_tuple_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_t_address_t_bytes_memory_ptr__to_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_t_address_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"19091:9:61","type":""},{"name":"value2","nodeType":"YulTypedName","src":"19103:6:61","type":""},{"name":"value1","nodeType":"YulTypedName","src":"19111:6:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"19119:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"19130:4:61","type":""}],"src":"18859:788:61"},{"body":{"nodeType":"YulBlock","src":"19759:124:61","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"19781:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"19789:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19777:3:61"},"nodeType":"YulFunctionCall","src":"19777:14:61"},{"hexValue":"4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e2066","kind":"string","nodeType":"YulLiteral","src":"19793:34:61","type":"","value":"LibDiamondCut: No selectors in f"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19770:6:61"},"nodeType":"YulFunctionCall","src":"19770:58:61"},"nodeType":"YulExpressionStatement","src":"19770:58:61"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"19849:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"19857:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"19845:3:61"},"nodeType":"YulFunctionCall","src":"19845:15:61"},{"hexValue":"6163657420746f20637574","kind":"string","nodeType":"YulLiteral","src":"19862:13:61","type":"","value":"acet to cut"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"19838:6:61"},"nodeType":"YulFunctionCall","src":"19838:38:61"},"nodeType":"YulExpressionStatement","src":"19838:38:61"}]},"name":"store_literal_in_memory_1ffc682bcfedefd5e93ba9ed0c2d1bc0b18319886e3b4bd28a03a3d3729f85c0","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"19751:6:61","type":""}],"src":"19653:230:61"},{"body":{"nodeType":"YulBlock","src":"20035:220:61","statements":[{"nodeType":"YulAssignment","src":"20045:74:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"20111:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"20116:2:61","type":"","value":"43"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"20052:58:61"},"nodeType":"YulFunctionCall","src":"20052:67:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"20045:3:61"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"20217:3:61"}],"functionName":{"name":"store_literal_in_memory_1ffc682bcfedefd5e93ba9ed0c2d1bc0b18319886e3b4bd28a03a3d3729f85c0","nodeType":"YulIdentifier","src":"20128:88:61"},"nodeType":"YulFunctionCall","src":"20128:93:61"},"nodeType":"YulExpressionStatement","src":"20128:93:61"},{"nodeType":"YulAssignment","src":"20230:19:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"20241:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"20246:2:61","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20237:3:61"},"nodeType":"YulFunctionCall","src":"20237:12:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"20230:3:61"}]}]},"name":"abi_encode_t_stringliteral_1ffc682bcfedefd5e93ba9ed0c2d1bc0b18319886e3b4bd28a03a3d3729f85c0_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"20023:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"20031:3:61","type":""}],"src":"19889:366:61"},{"body":{"nodeType":"YulBlock","src":"20432:248:61","statements":[{"nodeType":"YulAssignment","src":"20442:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20454:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"20465:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20450:3:61"},"nodeType":"YulFunctionCall","src":"20450:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"20442:4:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"20489:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"20500:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20485:3:61"},"nodeType":"YulFunctionCall","src":"20485:17:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"20508:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"20514:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"20504:3:61"},"nodeType":"YulFunctionCall","src":"20504:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20478:6:61"},"nodeType":"YulFunctionCall","src":"20478:47:61"},"nodeType":"YulExpressionStatement","src":"20478:47:61"},{"nodeType":"YulAssignment","src":"20534:139:61","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"20668:4:61"}],"functionName":{"name":"abi_encode_t_stringliteral_1ffc682bcfedefd5e93ba9ed0c2d1bc0b18319886e3b4bd28a03a3d3729f85c0_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"20542:124:61"},"nodeType":"YulFunctionCall","src":"20542:131:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"20534:4:61"}]}]},"name":"abi_encode_tuple_t_stringliteral_1ffc682bcfedefd5e93ba9ed0c2d1bc0b18319886e3b4bd28a03a3d3729f85c0__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"20412:9:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"20427:4:61","type":""}],"src":"20261:419:61"},{"body":{"nodeType":"YulBlock","src":"20792:125:61","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"20814:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"20822:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20810:3:61"},"nodeType":"YulFunctionCall","src":"20810:14:61"},{"hexValue":"4c69624469616d6f6e644375743a204164642066616365742063616e27742062","kind":"string","nodeType":"YulLiteral","src":"20826:34:61","type":"","value":"LibDiamondCut: Add facet can't b"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20803:6:61"},"nodeType":"YulFunctionCall","src":"20803:58:61"},"nodeType":"YulExpressionStatement","src":"20803:58:61"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"20882:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"20890:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"20878:3:61"},"nodeType":"YulFunctionCall","src":"20878:15:61"},{"hexValue":"652061646472657373283029","kind":"string","nodeType":"YulLiteral","src":"20895:14:61","type":"","value":"e address(0)"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"20871:6:61"},"nodeType":"YulFunctionCall","src":"20871:39:61"},"nodeType":"YulExpressionStatement","src":"20871:39:61"}]},"name":"store_literal_in_memory_64609d8b93c93a06b98d7db7a87b04044cd4a52c5661d603bb9b90ad8b914a3a","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"20784:6:61","type":""}],"src":"20686:231:61"},{"body":{"nodeType":"YulBlock","src":"21069:220:61","statements":[{"nodeType":"YulAssignment","src":"21079:74:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"21145:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"21150:2:61","type":"","value":"44"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"21086:58:61"},"nodeType":"YulFunctionCall","src":"21086:67:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"21079:3:61"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"21251:3:61"}],"functionName":{"name":"store_literal_in_memory_64609d8b93c93a06b98d7db7a87b04044cd4a52c5661d603bb9b90ad8b914a3a","nodeType":"YulIdentifier","src":"21162:88:61"},"nodeType":"YulFunctionCall","src":"21162:93:61"},"nodeType":"YulExpressionStatement","src":"21162:93:61"},{"nodeType":"YulAssignment","src":"21264:19:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"21275:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"21280:2:61","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21271:3:61"},"nodeType":"YulFunctionCall","src":"21271:12:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"21264:3:61"}]}]},"name":"abi_encode_t_stringliteral_64609d8b93c93a06b98d7db7a87b04044cd4a52c5661d603bb9b90ad8b914a3a_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"21057:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"21065:3:61","type":""}],"src":"20923:366:61"},{"body":{"nodeType":"YulBlock","src":"21466:248:61","statements":[{"nodeType":"YulAssignment","src":"21476:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21488:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"21499:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21484:3:61"},"nodeType":"YulFunctionCall","src":"21484:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"21476:4:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"21523:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"21534:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21519:3:61"},"nodeType":"YulFunctionCall","src":"21519:17:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"21542:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"21548:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"21538:3:61"},"nodeType":"YulFunctionCall","src":"21538:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21512:6:61"},"nodeType":"YulFunctionCall","src":"21512:47:61"},"nodeType":"YulExpressionStatement","src":"21512:47:61"},{"nodeType":"YulAssignment","src":"21568:139:61","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"21702:4:61"}],"functionName":{"name":"abi_encode_t_stringliteral_64609d8b93c93a06b98d7db7a87b04044cd4a52c5661d603bb9b90ad8b914a3a_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"21576:124:61"},"nodeType":"YulFunctionCall","src":"21576:131:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"21568:4:61"}]}]},"name":"abi_encode_tuple_t_stringliteral_64609d8b93c93a06b98d7db7a87b04044cd4a52c5661d603bb9b90ad8b914a3a__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"21446:9:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"21461:4:61","type":""}],"src":"21295:419:61"},{"body":{"nodeType":"YulBlock","src":"21826:134:61","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"21848:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"21856:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21844:3:61"},"nodeType":"YulFunctionCall","src":"21844:14:61"},{"hexValue":"4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f","kind":"string","nodeType":"YulLiteral","src":"21860:34:61","type":"","value":"LibDiamondCut: Can't add functio"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21837:6:61"},"nodeType":"YulFunctionCall","src":"21837:58:61"},"nodeType":"YulExpressionStatement","src":"21837:58:61"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"21916:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"21924:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"21912:3:61"},"nodeType":"YulFunctionCall","src":"21912:15:61"},{"hexValue":"6e207468617420616c726561647920657869737473","kind":"string","nodeType":"YulLiteral","src":"21929:23:61","type":"","value":"n that already exists"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"21905:6:61"},"nodeType":"YulFunctionCall","src":"21905:48:61"},"nodeType":"YulExpressionStatement","src":"21905:48:61"}]},"name":"store_literal_in_memory_99a7418ee014d613f46da44561258cdbb58064508097483a319062b99fa37700","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"21818:6:61","type":""}],"src":"21720:240:61"},{"body":{"nodeType":"YulBlock","src":"22112:220:61","statements":[{"nodeType":"YulAssignment","src":"22122:74:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"22188:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"22193:2:61","type":"","value":"53"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"22129:58:61"},"nodeType":"YulFunctionCall","src":"22129:67:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"22122:3:61"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"22294:3:61"}],"functionName":{"name":"store_literal_in_memory_99a7418ee014d613f46da44561258cdbb58064508097483a319062b99fa37700","nodeType":"YulIdentifier","src":"22205:88:61"},"nodeType":"YulFunctionCall","src":"22205:93:61"},"nodeType":"YulExpressionStatement","src":"22205:93:61"},{"nodeType":"YulAssignment","src":"22307:19:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"22318:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"22323:2:61","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22314:3:61"},"nodeType":"YulFunctionCall","src":"22314:12:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"22307:3:61"}]}]},"name":"abi_encode_t_stringliteral_99a7418ee014d613f46da44561258cdbb58064508097483a319062b99fa37700_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"22100:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"22108:3:61","type":""}],"src":"21966:366:61"},{"body":{"nodeType":"YulBlock","src":"22509:248:61","statements":[{"nodeType":"YulAssignment","src":"22519:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22531:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"22542:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22527:3:61"},"nodeType":"YulFunctionCall","src":"22527:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"22519:4:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"22566:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"22577:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"22562:3:61"},"nodeType":"YulFunctionCall","src":"22562:17:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"22585:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"22591:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"22581:3:61"},"nodeType":"YulFunctionCall","src":"22581:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"22555:6:61"},"nodeType":"YulFunctionCall","src":"22555:47:61"},"nodeType":"YulExpressionStatement","src":"22555:47:61"},{"nodeType":"YulAssignment","src":"22611:139:61","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"22745:4:61"}],"functionName":{"name":"abi_encode_t_stringliteral_99a7418ee014d613f46da44561258cdbb58064508097483a319062b99fa37700_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"22619:124:61"},"nodeType":"YulFunctionCall","src":"22619:131:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"22611:4:61"}]}]},"name":"abi_encode_tuple_t_stringliteral_99a7418ee014d613f46da44561258cdbb58064508097483a319062b99fa37700__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"22489:9:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"22504:4:61","type":""}],"src":"22338:419:61"},{"body":{"nodeType":"YulBlock","src":"22807:65:61","statements":[{"nodeType":"YulAssignment","src":"22817:49:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"22832:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"22839:26:61","type":"","value":"0xffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"22828:3:61"},"nodeType":"YulFunctionCall","src":"22828:38:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"22817:7:61"}]}]},"name":"cleanup_t_uint96","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"22789:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"22799:7:61","type":""}],"src":"22763:109:61"},{"body":{"nodeType":"YulBlock","src":"22920:149:61","statements":[{"nodeType":"YulAssignment","src":"22930:32:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"22956:5:61"}],"functionName":{"name":"cleanup_t_uint96","nodeType":"YulIdentifier","src":"22939:16:61"},"nodeType":"YulFunctionCall","src":"22939:23:61"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"22930:5:61"}]},{"body":{"nodeType":"YulBlock","src":"23012:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"23014:16:61"},"nodeType":"YulFunctionCall","src":"23014:18:61"},"nodeType":"YulExpressionStatement","src":"23014:18:61"}]},"condition":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"22977:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"22984:26:61","type":"","value":"0xffffffffffffffffffffffff"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"22974:2:61"},"nodeType":"YulFunctionCall","src":"22974:37:61"},"nodeType":"YulIf","src":"22971:63:61"},{"nodeType":"YulAssignment","src":"23043:20:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"23054:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"23061:1:61","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23050:3:61"},"nodeType":"YulFunctionCall","src":"23050:13:61"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"23043:3:61"}]}]},"name":"increment_t_uint96","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"22906:5:61","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"22916:3:61","type":""}],"src":"22878:191:61"},{"body":{"nodeType":"YulBlock","src":"23181:137:61","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"23203:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"23211:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23199:3:61"},"nodeType":"YulFunctionCall","src":"23199:14:61"},{"hexValue":"4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e","kind":"string","nodeType":"YulLiteral","src":"23215:34:61","type":"","value":"LibDiamondCut: Can't replace fun"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"23192:6:61"},"nodeType":"YulFunctionCall","src":"23192:58:61"},"nodeType":"YulExpressionStatement","src":"23192:58:61"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"23271:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"23279:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23267:3:61"},"nodeType":"YulFunctionCall","src":"23267:15:61"},{"hexValue":"6374696f6e20776974682073616d652066756e6374696f6e","kind":"string","nodeType":"YulLiteral","src":"23284:26:61","type":"","value":"ction with same function"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"23260:6:61"},"nodeType":"YulFunctionCall","src":"23260:51:61"},"nodeType":"YulExpressionStatement","src":"23260:51:61"}]},"name":"store_literal_in_memory_b5a7112edf707196456f338fdcc19cd849be6cb8c0d166bcd035f4cfb00e7078","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"23173:6:61","type":""}],"src":"23075:243:61"},{"body":{"nodeType":"YulBlock","src":"23470:220:61","statements":[{"nodeType":"YulAssignment","src":"23480:74:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"23546:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"23551:2:61","type":"","value":"56"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"23487:58:61"},"nodeType":"YulFunctionCall","src":"23487:67:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"23480:3:61"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"23652:3:61"}],"functionName":{"name":"store_literal_in_memory_b5a7112edf707196456f338fdcc19cd849be6cb8c0d166bcd035f4cfb00e7078","nodeType":"YulIdentifier","src":"23563:88:61"},"nodeType":"YulFunctionCall","src":"23563:93:61"},"nodeType":"YulExpressionStatement","src":"23563:93:61"},{"nodeType":"YulAssignment","src":"23665:19:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"23676:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"23681:2:61","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23672:3:61"},"nodeType":"YulFunctionCall","src":"23672:12:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"23665:3:61"}]}]},"name":"abi_encode_t_stringliteral_b5a7112edf707196456f338fdcc19cd849be6cb8c0d166bcd035f4cfb00e7078_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"23458:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"23466:3:61","type":""}],"src":"23324:366:61"},{"body":{"nodeType":"YulBlock","src":"23867:248:61","statements":[{"nodeType":"YulAssignment","src":"23877:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23889:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"23900:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23885:3:61"},"nodeType":"YulFunctionCall","src":"23885:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"23877:4:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"23924:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"23935:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"23920:3:61"},"nodeType":"YulFunctionCall","src":"23920:17:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"23943:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"23949:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"23939:3:61"},"nodeType":"YulFunctionCall","src":"23939:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"23913:6:61"},"nodeType":"YulFunctionCall","src":"23913:47:61"},"nodeType":"YulExpressionStatement","src":"23913:47:61"},{"nodeType":"YulAssignment","src":"23969:139:61","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"24103:4:61"}],"functionName":{"name":"abi_encode_t_stringliteral_b5a7112edf707196456f338fdcc19cd849be6cb8c0d166bcd035f4cfb00e7078_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"23977:124:61"},"nodeType":"YulFunctionCall","src":"23977:131:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"23969:4:61"}]}]},"name":"abi_encode_tuple_t_stringliteral_b5a7112edf707196456f338fdcc19cd849be6cb8c0d166bcd035f4cfb00e7078__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"23847:9:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"23862:4:61","type":""}],"src":"23696:419:61"},{"body":{"nodeType":"YulBlock","src":"24227:135:61","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"24249:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"24257:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24245:3:61"},"nodeType":"YulFunctionCall","src":"24245:14:61"},{"hexValue":"4c69624469616d6f6e644375743a2052656d6f76652066616365742061646472","kind":"string","nodeType":"YulLiteral","src":"24261:34:61","type":"","value":"LibDiamondCut: Remove facet addr"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"24238:6:61"},"nodeType":"YulFunctionCall","src":"24238:58:61"},"nodeType":"YulExpressionStatement","src":"24238:58:61"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"24317:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"24325:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24313:3:61"},"nodeType":"YulFunctionCall","src":"24313:15:61"},{"hexValue":"657373206d7573742062652061646472657373283029","kind":"string","nodeType":"YulLiteral","src":"24330:24:61","type":"","value":"ess must be address(0)"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"24306:6:61"},"nodeType":"YulFunctionCall","src":"24306:49:61"},"nodeType":"YulExpressionStatement","src":"24306:49:61"}]},"name":"store_literal_in_memory_b739aae768f79b96e91d9f66398733516895e39eb09ee54a795b49dcc77504d4","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"24219:6:61","type":""}],"src":"24121:241:61"},{"body":{"nodeType":"YulBlock","src":"24514:220:61","statements":[{"nodeType":"YulAssignment","src":"24524:74:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"24590:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"24595:2:61","type":"","value":"54"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"24531:58:61"},"nodeType":"YulFunctionCall","src":"24531:67:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"24524:3:61"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"24696:3:61"}],"functionName":{"name":"store_literal_in_memory_b739aae768f79b96e91d9f66398733516895e39eb09ee54a795b49dcc77504d4","nodeType":"YulIdentifier","src":"24607:88:61"},"nodeType":"YulFunctionCall","src":"24607:93:61"},"nodeType":"YulExpressionStatement","src":"24607:93:61"},{"nodeType":"YulAssignment","src":"24709:19:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"24720:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"24725:2:61","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24716:3:61"},"nodeType":"YulFunctionCall","src":"24716:12:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"24709:3:61"}]}]},"name":"abi_encode_t_stringliteral_b739aae768f79b96e91d9f66398733516895e39eb09ee54a795b49dcc77504d4_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"24502:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"24510:3:61","type":""}],"src":"24368:366:61"},{"body":{"nodeType":"YulBlock","src":"24911:248:61","statements":[{"nodeType":"YulAssignment","src":"24921:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24933:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"24944:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24929:3:61"},"nodeType":"YulFunctionCall","src":"24929:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"24921:4:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"24968:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"24979:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"24964:3:61"},"nodeType":"YulFunctionCall","src":"24964:17:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"24987:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"24993:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"24983:3:61"},"nodeType":"YulFunctionCall","src":"24983:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"24957:6:61"},"nodeType":"YulFunctionCall","src":"24957:47:61"},"nodeType":"YulExpressionStatement","src":"24957:47:61"},{"nodeType":"YulAssignment","src":"25013:139:61","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"25147:4:61"}],"functionName":{"name":"abi_encode_t_stringliteral_b739aae768f79b96e91d9f66398733516895e39eb09ee54a795b49dcc77504d4_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"25021:124:61"},"nodeType":"YulFunctionCall","src":"25021:131:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"25013:4:61"}]}]},"name":"abi_encode_tuple_t_stringliteral_b739aae768f79b96e91d9f66398733516895e39eb09ee54a795b49dcc77504d4__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"24891:9:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"24906:4:61","type":""}],"src":"24740:419:61"},{"body":{"nodeType":"YulBlock","src":"25278:34:61","statements":[{"nodeType":"YulAssignment","src":"25288:18:61","value":{"name":"pos","nodeType":"YulIdentifier","src":"25303:3:61"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"25288:11:61"}]}]},"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"25250:3:61","type":""},{"name":"length","nodeType":"YulTypedName","src":"25255:6:61","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"25266:11:61","type":""}],"src":"25165:147:61"},{"body":{"nodeType":"YulBlock","src":"25426:278:61","statements":[{"nodeType":"YulVariableDeclaration","src":"25436:52:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"25482:5:61"}],"functionName":{"name":"array_length_t_bytes_memory_ptr","nodeType":"YulIdentifier","src":"25450:31:61"},"nodeType":"YulFunctionCall","src":"25450:38:61"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"25440:6:61","type":""}]},{"nodeType":"YulAssignment","src":"25497:95:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"25580:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"25585:6:61"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"25504:75:61"},"nodeType":"YulFunctionCall","src":"25504:88:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"25497:3:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"25640:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"25647:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"25636:3:61"},"nodeType":"YulFunctionCall","src":"25636:16:61"},{"name":"pos","nodeType":"YulIdentifier","src":"25654:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"25659:6:61"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"25601:34:61"},"nodeType":"YulFunctionCall","src":"25601:65:61"},"nodeType":"YulExpressionStatement","src":"25601:65:61"},{"nodeType":"YulAssignment","src":"25675:23:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"25686:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"25691:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"25682:3:61"},"nodeType":"YulFunctionCall","src":"25682:16:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"25675:3:61"}]}]},"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"25407:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"25414:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"25422:3:61","type":""}],"src":"25318:386:61"},{"body":{"nodeType":"YulBlock","src":"25844:137:61","statements":[{"nodeType":"YulAssignment","src":"25855:100:61","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"25942:6:61"},{"name":"pos","nodeType":"YulIdentifier","src":"25951:3:61"}],"functionName":{"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"25862:79:61"},"nodeType":"YulFunctionCall","src":"25862:93:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"25855:3:61"}]},{"nodeType":"YulAssignment","src":"25965:10:61","value":{"name":"pos","nodeType":"YulIdentifier","src":"25972:3:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"25965:3:61"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"25823:3:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"25829:6:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"25840:3:61","type":""}],"src":"25710:271:61"},{"body":{"nodeType":"YulBlock","src":"26131:275:61","statements":[{"nodeType":"YulAssignment","src":"26141:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"26153:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"26164:2:61","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26149:3:61"},"nodeType":"YulFunctionCall","src":"26149:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"26141:4:61"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"26221:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"26234:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"26245:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26230:3:61"},"nodeType":"YulFunctionCall","src":"26230:17:61"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"26177:43:61"},"nodeType":"YulFunctionCall","src":"26177:71:61"},"nodeType":"YulExpressionStatement","src":"26177:71:61"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"26269:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"26280:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26265:3:61"},"nodeType":"YulFunctionCall","src":"26265:18:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"26289:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"26295:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"26285:3:61"},"nodeType":"YulFunctionCall","src":"26285:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"26258:6:61"},"nodeType":"YulFunctionCall","src":"26258:48:61"},"nodeType":"YulExpressionStatement","src":"26258:48:61"},{"nodeType":"YulAssignment","src":"26315:84:61","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"26385:6:61"},{"name":"tail","nodeType":"YulIdentifier","src":"26394:4:61"}],"functionName":{"name":"abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"26323:61:61"},"nodeType":"YulFunctionCall","src":"26323:76:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"26315:4:61"}]}]},"name":"abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"26095:9:61","type":""},{"name":"value1","nodeType":"YulTypedName","src":"26107:6:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"26115:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"26126:4:61","type":""}],"src":"25987:419:61"},{"body":{"nodeType":"YulBlock","src":"26526:34:61","statements":[{"nodeType":"YulAssignment","src":"26536:18:61","value":{"name":"pos","nodeType":"YulIdentifier","src":"26551:3:61"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"26536:11:61"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"26498:3:61","type":""},{"name":"length","nodeType":"YulTypedName","src":"26503:6:61","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"26514:11:61","type":""}],"src":"26412:148:61"},{"body":{"nodeType":"YulBlock","src":"26672:67:61","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"26694:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"26702:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"26690:3:61"},"nodeType":"YulFunctionCall","src":"26690:14:61"},{"hexValue":"416363657373436f6e74726f6c3a206163636f756e7420","kind":"string","nodeType":"YulLiteral","src":"26706:25:61","type":"","value":"AccessControl: account "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"26683:6:61"},"nodeType":"YulFunctionCall","src":"26683:49:61"},"nodeType":"YulExpressionStatement","src":"26683:49:61"}]},"name":"store_literal_in_memory_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"26664:6:61","type":""}],"src":"26566:173:61"},{"body":{"nodeType":"YulBlock","src":"26909:238:61","statements":[{"nodeType":"YulAssignment","src":"26919:92:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"27003:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"27008:2:61","type":"","value":"23"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"26926:76:61"},"nodeType":"YulFunctionCall","src":"26926:85:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"26919:3:61"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"27109:3:61"}],"functionName":{"name":"store_literal_in_memory_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874","nodeType":"YulIdentifier","src":"27020:88:61"},"nodeType":"YulFunctionCall","src":"27020:93:61"},"nodeType":"YulExpressionStatement","src":"27020:93:61"},{"nodeType":"YulAssignment","src":"27122:19:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"27133:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"27138:2:61","type":"","value":"23"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"27129:3:61"},"nodeType":"YulFunctionCall","src":"27129:12:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"27122:3:61"}]}]},"name":"abi_encode_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"26897:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"26905:3:61","type":""}],"src":"26745:402:61"},{"body":{"nodeType":"YulBlock","src":"27212:40:61","statements":[{"nodeType":"YulAssignment","src":"27223:22:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"27239:5:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"27233:5:61"},"nodeType":"YulFunctionCall","src":"27233:12:61"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"27223:6:61"}]}]},"name":"array_length_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"27195:5:61","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"27205:6:61","type":""}],"src":"27153:99:61"},{"body":{"nodeType":"YulBlock","src":"27368:280:61","statements":[{"nodeType":"YulVariableDeclaration","src":"27378:53:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"27425:5:61"}],"functionName":{"name":"array_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"27392:32:61"},"nodeType":"YulFunctionCall","src":"27392:39:61"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"27382:6:61","type":""}]},{"nodeType":"YulAssignment","src":"27440:96:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"27524:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"27529:6:61"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"27447:76:61"},"nodeType":"YulFunctionCall","src":"27447:89:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"27440:3:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"27584:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"27591:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"27580:3:61"},"nodeType":"YulFunctionCall","src":"27580:16:61"},{"name":"pos","nodeType":"YulIdentifier","src":"27598:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"27603:6:61"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"27545:34:61"},"nodeType":"YulFunctionCall","src":"27545:65:61"},"nodeType":"YulExpressionStatement","src":"27545:65:61"},{"nodeType":"YulAssignment","src":"27619:23:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"27630:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"27635:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"27626:3:61"},"nodeType":"YulFunctionCall","src":"27626:16:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"27619:3:61"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"27349:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"27356:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"27364:3:61","type":""}],"src":"27258:390:61"},{"body":{"nodeType":"YulBlock","src":"27760:61:61","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"27782:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"27790:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"27778:3:61"},"nodeType":"YulFunctionCall","src":"27778:14:61"},{"hexValue":"206973206d697373696e6720726f6c6520","kind":"string","nodeType":"YulLiteral","src":"27794:19:61","type":"","value":" is missing role "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"27771:6:61"},"nodeType":"YulFunctionCall","src":"27771:43:61"},"nodeType":"YulExpressionStatement","src":"27771:43:61"}]},"name":"store_literal_in_memory_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"27752:6:61","type":""}],"src":"27654:167:61"},{"body":{"nodeType":"YulBlock","src":"27991:238:61","statements":[{"nodeType":"YulAssignment","src":"28001:92:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"28085:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"28090:2:61","type":"","value":"17"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"28008:76:61"},"nodeType":"YulFunctionCall","src":"28008:85:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"28001:3:61"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"28191:3:61"}],"functionName":{"name":"store_literal_in_memory_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69","nodeType":"YulIdentifier","src":"28102:88:61"},"nodeType":"YulFunctionCall","src":"28102:93:61"},"nodeType":"YulExpressionStatement","src":"28102:93:61"},{"nodeType":"YulAssignment","src":"28204:19:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"28215:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"28220:2:61","type":"","value":"17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"28211:3:61"},"nodeType":"YulFunctionCall","src":"28211:12:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"28204:3:61"}]}]},"name":"abi_encode_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"27979:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"27987:3:61","type":""}],"src":"27827:402:61"},{"body":{"nodeType":"YulBlock","src":"28621:581:61","statements":[{"nodeType":"YulAssignment","src":"28632:155:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"28783:3:61"}],"functionName":{"name":"abi_encode_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"28639:142:61"},"nodeType":"YulFunctionCall","src":"28639:148:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"28632:3:61"}]},{"nodeType":"YulAssignment","src":"28797:102:61","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"28886:6:61"},{"name":"pos","nodeType":"YulIdentifier","src":"28895:3:61"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"28804:81:61"},"nodeType":"YulFunctionCall","src":"28804:95:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"28797:3:61"}]},{"nodeType":"YulAssignment","src":"28909:155:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"29060:3:61"}],"functionName":{"name":"abi_encode_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"28916:142:61"},"nodeType":"YulFunctionCall","src":"28916:148:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"28909:3:61"}]},{"nodeType":"YulAssignment","src":"29074:102:61","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"29163:6:61"},{"name":"pos","nodeType":"YulIdentifier","src":"29172:3:61"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"29081:81:61"},"nodeType":"YulFunctionCall","src":"29081:95:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"29074:3:61"}]},{"nodeType":"YulAssignment","src":"29186:10:61","value":{"name":"pos","nodeType":"YulIdentifier","src":"29193:3:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"29186:3:61"}]}]},"name":"abi_encode_tuple_packed_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_t_string_memory_ptr_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"28592:3:61","type":""},{"name":"value1","nodeType":"YulTypedName","src":"28598:6:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"28606:6:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"28617:3:61","type":""}],"src":"28235:967:61"},{"body":{"nodeType":"YulBlock","src":"29300:285:61","statements":[{"nodeType":"YulVariableDeclaration","src":"29310:53:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"29357:5:61"}],"functionName":{"name":"array_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"29324:32:61"},"nodeType":"YulFunctionCall","src":"29324:39:61"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"29314:6:61","type":""}]},{"nodeType":"YulAssignment","src":"29372:78:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"29438:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"29443:6:61"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"29379:58:61"},"nodeType":"YulFunctionCall","src":"29379:71:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"29372:3:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"29498:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"29505:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"29494:3:61"},"nodeType":"YulFunctionCall","src":"29494:16:61"},{"name":"pos","nodeType":"YulIdentifier","src":"29512:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"29517:6:61"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"29459:34:61"},"nodeType":"YulFunctionCall","src":"29459:65:61"},"nodeType":"YulExpressionStatement","src":"29459:65:61"},{"nodeType":"YulAssignment","src":"29533:46:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"29544:3:61"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"29571:6:61"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"29549:21:61"},"nodeType":"YulFunctionCall","src":"29549:29:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"29540:3:61"},"nodeType":"YulFunctionCall","src":"29540:39:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"29533:3:61"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"29281:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"29288:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"29296:3:61","type":""}],"src":"29208:377:61"},{"body":{"nodeType":"YulBlock","src":"29709:195:61","statements":[{"nodeType":"YulAssignment","src":"29719:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"29731:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"29742:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"29727:3:61"},"nodeType":"YulFunctionCall","src":"29727:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"29719:4:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"29766:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"29777:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"29762:3:61"},"nodeType":"YulFunctionCall","src":"29762:17:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"29785:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"29791:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"29781:3:61"},"nodeType":"YulFunctionCall","src":"29781:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"29755:6:61"},"nodeType":"YulFunctionCall","src":"29755:47:61"},"nodeType":"YulExpressionStatement","src":"29755:47:61"},{"nodeType":"YulAssignment","src":"29811:86:61","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"29883:6:61"},{"name":"tail","nodeType":"YulIdentifier","src":"29892:4:61"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"29819:63:61"},"nodeType":"YulFunctionCall","src":"29819:78:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"29811:4:61"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"29681:9:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"29693:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"29704:4:61","type":""}],"src":"29591:313:61"},{"body":{"nodeType":"YulBlock","src":"30016:136:61","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"30038:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"30046:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"30034:3:61"},"nodeType":"YulFunctionCall","src":"30034:14:61"},{"hexValue":"4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e63","kind":"string","nodeType":"YulLiteral","src":"30050:34:61","type":"","value":"LibDiamondCut: Can't remove func"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"30027:6:61"},"nodeType":"YulFunctionCall","src":"30027:58:61"},"nodeType":"YulExpressionStatement","src":"30027:58:61"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"30106:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"30114:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"30102:3:61"},"nodeType":"YulFunctionCall","src":"30102:15:61"},{"hexValue":"74696f6e207468617420646f65736e2774206578697374","kind":"string","nodeType":"YulLiteral","src":"30119:25:61","type":"","value":"tion that doesn't exist"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"30095:6:61"},"nodeType":"YulFunctionCall","src":"30095:50:61"},"nodeType":"YulExpressionStatement","src":"30095:50:61"}]},"name":"store_literal_in_memory_2c590e498c4d56c984a7092fd5e89a68b9f4541ce9f97252fb74e44a00ffbb71","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"30008:6:61","type":""}],"src":"29910:242:61"},{"body":{"nodeType":"YulBlock","src":"30304:220:61","statements":[{"nodeType":"YulAssignment","src":"30314:74:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"30380:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"30385:2:61","type":"","value":"55"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"30321:58:61"},"nodeType":"YulFunctionCall","src":"30321:67:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"30314:3:61"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"30486:3:61"}],"functionName":{"name":"store_literal_in_memory_2c590e498c4d56c984a7092fd5e89a68b9f4541ce9f97252fb74e44a00ffbb71","nodeType":"YulIdentifier","src":"30397:88:61"},"nodeType":"YulFunctionCall","src":"30397:93:61"},"nodeType":"YulExpressionStatement","src":"30397:93:61"},{"nodeType":"YulAssignment","src":"30499:19:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"30510:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"30515:2:61","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"30506:3:61"},"nodeType":"YulFunctionCall","src":"30506:12:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"30499:3:61"}]}]},"name":"abi_encode_t_stringliteral_2c590e498c4d56c984a7092fd5e89a68b9f4541ce9f97252fb74e44a00ffbb71_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"30292:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"30300:3:61","type":""}],"src":"30158:366:61"},{"body":{"nodeType":"YulBlock","src":"30701:248:61","statements":[{"nodeType":"YulAssignment","src":"30711:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"30723:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"30734:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"30719:3:61"},"nodeType":"YulFunctionCall","src":"30719:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"30711:4:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"30758:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"30769:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"30754:3:61"},"nodeType":"YulFunctionCall","src":"30754:17:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"30777:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"30783:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"30773:3:61"},"nodeType":"YulFunctionCall","src":"30773:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"30747:6:61"},"nodeType":"YulFunctionCall","src":"30747:47:61"},"nodeType":"YulExpressionStatement","src":"30747:47:61"},{"nodeType":"YulAssignment","src":"30803:139:61","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"30937:4:61"}],"functionName":{"name":"abi_encode_t_stringliteral_2c590e498c4d56c984a7092fd5e89a68b9f4541ce9f97252fb74e44a00ffbb71_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"30811:124:61"},"nodeType":"YulFunctionCall","src":"30811:131:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"30803:4:61"}]}]},"name":"abi_encode_tuple_t_stringliteral_2c590e498c4d56c984a7092fd5e89a68b9f4541ce9f97252fb74e44a00ffbb71__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"30681:9:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"30696:4:61","type":""}],"src":"30530:419:61"},{"body":{"nodeType":"YulBlock","src":"31061:127:61","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"31083:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"31091:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"31079:3:61"},"nodeType":"YulFunctionCall","src":"31079:14:61"},{"hexValue":"4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d75","kind":"string","nodeType":"YulLiteral","src":"31095:34:61","type":"","value":"LibDiamondCut: Can't remove immu"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"31072:6:61"},"nodeType":"YulFunctionCall","src":"31072:58:61"},"nodeType":"YulExpressionStatement","src":"31072:58:61"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"31151:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"31159:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"31147:3:61"},"nodeType":"YulFunctionCall","src":"31147:15:61"},{"hexValue":"7461626c652066756e6374696f6e","kind":"string","nodeType":"YulLiteral","src":"31164:16:61","type":"","value":"table function"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"31140:6:61"},"nodeType":"YulFunctionCall","src":"31140:41:61"},"nodeType":"YulExpressionStatement","src":"31140:41:61"}]},"name":"store_literal_in_memory_8ba063dfaa4be2d2cbe73dbb1364728b0f7031ac048441d5fad19e9541992b21","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"31053:6:61","type":""}],"src":"30955:233:61"},{"body":{"nodeType":"YulBlock","src":"31340:220:61","statements":[{"nodeType":"YulAssignment","src":"31350:74:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"31416:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"31421:2:61","type":"","value":"46"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"31357:58:61"},"nodeType":"YulFunctionCall","src":"31357:67:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"31350:3:61"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"31522:3:61"}],"functionName":{"name":"store_literal_in_memory_8ba063dfaa4be2d2cbe73dbb1364728b0f7031ac048441d5fad19e9541992b21","nodeType":"YulIdentifier","src":"31433:88:61"},"nodeType":"YulFunctionCall","src":"31433:93:61"},"nodeType":"YulExpressionStatement","src":"31433:93:61"},{"nodeType":"YulAssignment","src":"31535:19:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"31546:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"31551:2:61","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"31542:3:61"},"nodeType":"YulFunctionCall","src":"31542:12:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"31535:3:61"}]}]},"name":"abi_encode_t_stringliteral_8ba063dfaa4be2d2cbe73dbb1364728b0f7031ac048441d5fad19e9541992b21_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"31328:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"31336:3:61","type":""}],"src":"31194:366:61"},{"body":{"nodeType":"YulBlock","src":"31737:248:61","statements":[{"nodeType":"YulAssignment","src":"31747:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"31759:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"31770:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"31755:3:61"},"nodeType":"YulFunctionCall","src":"31755:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"31747:4:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"31794:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"31805:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"31790:3:61"},"nodeType":"YulFunctionCall","src":"31790:17:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"31813:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"31819:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"31809:3:61"},"nodeType":"YulFunctionCall","src":"31809:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"31783:6:61"},"nodeType":"YulFunctionCall","src":"31783:47:61"},"nodeType":"YulExpressionStatement","src":"31783:47:61"},{"nodeType":"YulAssignment","src":"31839:139:61","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"31973:4:61"}],"functionName":{"name":"abi_encode_t_stringliteral_8ba063dfaa4be2d2cbe73dbb1364728b0f7031ac048441d5fad19e9541992b21_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"31847:124:61"},"nodeType":"YulFunctionCall","src":"31847:131:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"31839:4:61"}]}]},"name":"abi_encode_tuple_t_stringliteral_8ba063dfaa4be2d2cbe73dbb1364728b0f7031ac048441d5fad19e9541992b21__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"31717:9:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"31732:4:61","type":""}],"src":"31566:419:61"},{"body":{"nodeType":"YulBlock","src":"32036:149:61","statements":[{"nodeType":"YulAssignment","src":"32046:25:61","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"32069:1:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"32051:17:61"},"nodeType":"YulFunctionCall","src":"32051:20:61"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"32046:1:61"}]},{"nodeType":"YulAssignment","src":"32080:25:61","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"32103:1:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"32085:17:61"},"nodeType":"YulFunctionCall","src":"32085:20:61"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"32080:1:61"}]},{"nodeType":"YulAssignment","src":"32114:17:61","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"32126:1:61"},{"name":"y","nodeType":"YulIdentifier","src":"32129:1:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"32122:3:61"},"nodeType":"YulFunctionCall","src":"32122:9:61"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"32114:4:61"}]},{"body":{"nodeType":"YulBlock","src":"32156:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"32158:16:61"},"nodeType":"YulFunctionCall","src":"32158:18:61"},"nodeType":"YulExpressionStatement","src":"32158:18:61"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"32147:4:61"},{"name":"x","nodeType":"YulIdentifier","src":"32153:1:61"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"32144:2:61"},"nodeType":"YulFunctionCall","src":"32144:11:61"},"nodeType":"YulIf","src":"32141:37:61"}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"32022:1:61","type":""},{"name":"y","nodeType":"YulTypedName","src":"32025:1:61","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"32031:4:61","type":""}],"src":"31991:194:61"},{"body":{"nodeType":"YulBlock","src":"32219:152:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"32236:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"32239:77:61","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"32229:6:61"},"nodeType":"YulFunctionCall","src":"32229:88:61"},"nodeType":"YulExpressionStatement","src":"32229:88:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"32333:1:61","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"32336:4:61","type":"","value":"0x31"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"32326:6:61"},"nodeType":"YulFunctionCall","src":"32326:15:61"},"nodeType":"YulExpressionStatement","src":"32326:15:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"32357:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"32360:4:61","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"32350:6:61"},"nodeType":"YulFunctionCall","src":"32350:15:61"},"nodeType":"YulExpressionStatement","src":"32350:15:61"}]},"name":"panic_error_0x31","nodeType":"YulFunctionDefinition","src":"32191:180:61"},{"body":{"nodeType":"YulBlock","src":"32425:362:61","statements":[{"nodeType":"YulAssignment","src":"32435:25:61","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"32458:1:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"32440:17:61"},"nodeType":"YulFunctionCall","src":"32440:20:61"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"32435:1:61"}]},{"nodeType":"YulAssignment","src":"32469:25:61","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"32492:1:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"32474:17:61"},"nodeType":"YulFunctionCall","src":"32474:20:61"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"32469:1:61"}]},{"nodeType":"YulVariableDeclaration","src":"32503:28:61","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"32526:1:61"},{"name":"y","nodeType":"YulIdentifier","src":"32529:1:61"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"32522:3:61"},"nodeType":"YulFunctionCall","src":"32522:9:61"},"variables":[{"name":"product_raw","nodeType":"YulTypedName","src":"32507:11:61","type":""}]},{"nodeType":"YulAssignment","src":"32540:41:61","value":{"arguments":[{"name":"product_raw","nodeType":"YulIdentifier","src":"32569:11:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"32551:17:61"},"nodeType":"YulFunctionCall","src":"32551:30:61"},"variableNames":[{"name":"product","nodeType":"YulIdentifier","src":"32540:7:61"}]},{"body":{"nodeType":"YulBlock","src":"32758:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"32760:16:61"},"nodeType":"YulFunctionCall","src":"32760:18:61"},"nodeType":"YulExpressionStatement","src":"32760:18:61"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"32691:1:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"32684:6:61"},"nodeType":"YulFunctionCall","src":"32684:9:61"},{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"32714:1:61"},{"arguments":[{"name":"product","nodeType":"YulIdentifier","src":"32721:7:61"},{"name":"x","nodeType":"YulIdentifier","src":"32730:1:61"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"32717:3:61"},"nodeType":"YulFunctionCall","src":"32717:15:61"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"32711:2:61"},"nodeType":"YulFunctionCall","src":"32711:22:61"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"32664:2:61"},"nodeType":"YulFunctionCall","src":"32664:83:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"32644:6:61"},"nodeType":"YulFunctionCall","src":"32644:113:61"},"nodeType":"YulIf","src":"32641:139:61"}]},"name":"checked_mul_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"32408:1:61","type":""},{"name":"y","nodeType":"YulTypedName","src":"32411:1:61","type":""}],"returnVariables":[{"name":"product","nodeType":"YulTypedName","src":"32417:7:61","type":""}],"src":"32377:410:61"},{"body":{"nodeType":"YulBlock","src":"32837:147:61","statements":[{"nodeType":"YulAssignment","src":"32847:25:61","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"32870:1:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"32852:17:61"},"nodeType":"YulFunctionCall","src":"32852:20:61"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"32847:1:61"}]},{"nodeType":"YulAssignment","src":"32881:25:61","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"32904:1:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"32886:17:61"},"nodeType":"YulFunctionCall","src":"32886:20:61"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"32881:1:61"}]},{"nodeType":"YulAssignment","src":"32915:16:61","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"32926:1:61"},{"name":"y","nodeType":"YulIdentifier","src":"32929:1:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"32922:3:61"},"nodeType":"YulFunctionCall","src":"32922:9:61"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"32915:3:61"}]},{"body":{"nodeType":"YulBlock","src":"32955:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"32957:16:61"},"nodeType":"YulFunctionCall","src":"32957:18:61"},"nodeType":"YulExpressionStatement","src":"32957:18:61"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"32947:1:61"},{"name":"sum","nodeType":"YulIdentifier","src":"32950:3:61"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"32944:2:61"},"nodeType":"YulFunctionCall","src":"32944:10:61"},"nodeType":"YulIf","src":"32941:36:61"}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"32824:1:61","type":""},{"name":"y","nodeType":"YulTypedName","src":"32827:1:61","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"32833:3:61","type":""}],"src":"32793:191:61"},{"body":{"nodeType":"YulBlock","src":"33033:128:61","statements":[{"nodeType":"YulAssignment","src":"33043:33:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"33070:5:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"33052:17:61"},"nodeType":"YulFunctionCall","src":"33052:24:61"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"33043:5:61"}]},{"body":{"nodeType":"YulBlock","src":"33104:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"33106:16:61"},"nodeType":"YulFunctionCall","src":"33106:18:61"},"nodeType":"YulExpressionStatement","src":"33106:18:61"}]},"condition":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"33091:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"33098:4:61","type":"","value":"0x00"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"33088:2:61"},"nodeType":"YulFunctionCall","src":"33088:15:61"},"nodeType":"YulIf","src":"33085:41:61"},{"nodeType":"YulAssignment","src":"33135:20:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"33146:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"33153:1:61","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"33142:3:61"},"nodeType":"YulFunctionCall","src":"33142:13:61"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"33135:3:61"}]}]},"name":"decrement_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"33019:5:61","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"33029:3:61","type":""}],"src":"32990:171:61"},{"body":{"nodeType":"YulBlock","src":"33273:76:61","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"33295:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"33303:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"33291:3:61"},"nodeType":"YulFunctionCall","src":"33291:14:61"},{"hexValue":"537472696e67733a20686578206c656e67746820696e73756666696369656e74","kind":"string","nodeType":"YulLiteral","src":"33307:34:61","type":"","value":"Strings: hex length insufficient"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"33284:6:61"},"nodeType":"YulFunctionCall","src":"33284:58:61"},"nodeType":"YulExpressionStatement","src":"33284:58:61"}]},"name":"store_literal_in_memory_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"33265:6:61","type":""}],"src":"33167:182:61"},{"body":{"nodeType":"YulBlock","src":"33501:220:61","statements":[{"nodeType":"YulAssignment","src":"33511:74:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"33577:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"33582:2:61","type":"","value":"32"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"33518:58:61"},"nodeType":"YulFunctionCall","src":"33518:67:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"33511:3:61"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"33683:3:61"}],"functionName":{"name":"store_literal_in_memory_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2","nodeType":"YulIdentifier","src":"33594:88:61"},"nodeType":"YulFunctionCall","src":"33594:93:61"},"nodeType":"YulExpressionStatement","src":"33594:93:61"},{"nodeType":"YulAssignment","src":"33696:19:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"33707:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"33712:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"33703:3:61"},"nodeType":"YulFunctionCall","src":"33703:12:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"33696:3:61"}]}]},"name":"abi_encode_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"33489:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"33497:3:61","type":""}],"src":"33355:366:61"},{"body":{"nodeType":"YulBlock","src":"33898:248:61","statements":[{"nodeType":"YulAssignment","src":"33908:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"33920:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"33931:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"33916:3:61"},"nodeType":"YulFunctionCall","src":"33916:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"33908:4:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"33955:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"33966:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"33951:3:61"},"nodeType":"YulFunctionCall","src":"33951:17:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"33974:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"33980:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"33970:3:61"},"nodeType":"YulFunctionCall","src":"33970:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"33944:6:61"},"nodeType":"YulFunctionCall","src":"33944:47:61"},"nodeType":"YulExpressionStatement","src":"33944:47:61"},{"nodeType":"YulAssignment","src":"34000:139:61","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"34134:4:61"}],"functionName":{"name":"abi_encode_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"34008:124:61"},"nodeType":"YulFunctionCall","src":"34008:131:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"34000:4:61"}]}]},"name":"abi_encode_tuple_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"33878:9:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"33893:4:61","type":""}],"src":"33727:419:61"}]},"contents":"{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() {\n revert(0, 0)\n }\n\n function revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() {\n revert(0, 0)\n }\n\n // struct ICut.FacetCut[]\n function abi_decode_t_array$_t_struct$_FacetCut_$11817_calldata_ptr_$dyn_calldata_ptr(offset, end) -> arrayPos, length {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() }\n arrayPos := add(offset, 0x20)\n if gt(add(arrayPos, mul(length, 0x20)), end) { revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() }\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n // bytes\n function abi_decode_t_bytes_calldata_ptr(offset, end) -> arrayPos, length {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() }\n arrayPos := add(offset, 0x20)\n if gt(add(arrayPos, mul(length, 0x01)), end) { revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() }\n }\n\n function abi_decode_tuple_t_array$_t_struct$_FacetCut_$11817_calldata_ptr_$dyn_calldata_ptrt_addresst_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := calldataload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value0, value1 := abi_decode_t_array$_t_struct$_FacetCut_$11817_calldata_ptr_$dyn_calldata_ptr(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value2 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value3, value4 := abi_decode_t_bytes_calldata_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function store_literal_in_memory_339759585899103d2ace64958e37e18ccb0504652c81d4a1b8aa80fe2126ab95(memPtr) {\n\n mstore(add(memPtr, 0), \"MAINTAINER_ROLE\")\n\n }\n\n function abi_encode_t_stringliteral_339759585899103d2ace64958e37e18ccb0504652c81d4a1b8aa80fe2126ab95_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 15)\n store_literal_in_memory_339759585899103d2ace64958e37e18ccb0504652c81d4a1b8aa80fe2126ab95(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_339759585899103d2ace64958e37e18ccb0504652c81d4a1b8aa80fe2126ab95__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_339759585899103d2ace64958e37e18ccb0504652c81d4a1b8aa80fe2126ab95_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n\n function allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function array_allocation_size_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := mul(length, 0x20)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f() {\n revert(0, 0)\n }\n\n function revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421() {\n revert(0, 0)\n }\n\n function validator_revert_t_enum$_FacetCutAction_$11808(value) {\n if iszero(lt(value, 3)) { revert(0, 0) }\n }\n\n function abi_decode_t_enum$_FacetCutAction_$11808(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_enum$_FacetCutAction_$11808(value)\n }\n\n function array_allocation_size_t_array$_t_bytes4_$dyn_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := mul(length, 0x20)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function cleanup_t_bytes4(value) -> cleaned {\n cleaned := and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000)\n }\n\n function validator_revert_t_bytes4(value) {\n if iszero(eq(value, cleanup_t_bytes4(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bytes4(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bytes4(value)\n }\n\n // bytes4[]\n function abi_decode_available_length_t_array$_t_bytes4_$dyn_memory_ptr(offset, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_array$_t_bytes4_$dyn_memory_ptr(length))\n let dst := array\n\n mstore(array, length)\n dst := add(array, 0x20)\n\n let srcEnd := add(offset, mul(length, 0x20))\n if gt(srcEnd, end) {\n revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef()\n }\n for { let src := offset } lt(src, srcEnd) { src := add(src, 0x20) }\n {\n\n let elementPos := src\n\n mstore(dst, abi_decode_t_bytes4(elementPos, end))\n dst := add(dst, 0x20)\n }\n }\n\n // bytes4[]\n function abi_decode_t_array$_t_bytes4_$dyn_memory_ptr(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := calldataload(offset)\n array := abi_decode_available_length_t_array$_t_bytes4_$dyn_memory_ptr(add(offset, 0x20), length, end)\n }\n\n // struct ICut.FacetCut\n function abi_decode_t_struct$_FacetCut_$11817_memory_ptr(headStart, end) -> value {\n if slt(sub(end, headStart), 0x60) { revert_error_3538a459e4a0eb828f1aed5ebe5dc96fe59620a31d9b33e41259bb820cae769f() }\n value := allocate_memory(0x60)\n\n {\n // facetAddress\n\n let offset := 0\n\n mstore(add(value, 0x00), abi_decode_t_address(add(headStart, offset), end))\n\n }\n\n {\n // action\n\n let offset := 32\n\n mstore(add(value, 0x20), abi_decode_t_enum$_FacetCutAction_$11808(add(headStart, offset), end))\n\n }\n\n {\n // functionSelectors\n\n let offset := calldataload(add(headStart, 64))\n if gt(offset, 0xffffffffffffffff) { revert_error_5e8f644817bc4960744f35c15999b6eff64ae702f94b1c46297cfd4e1aec2421() }\n\n mstore(add(value, 0x40), abi_decode_t_array$_t_bytes4_$dyn_memory_ptr(add(headStart, offset), end))\n\n }\n\n }\n\n // struct ICut.FacetCut[]\n function abi_decode_available_length_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr(offset, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr(length))\n let dst := array\n\n mstore(array, length)\n dst := add(array, 0x20)\n\n let srcEnd := add(offset, mul(length, 0x20))\n if gt(srcEnd, end) {\n revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef()\n }\n for { let src := offset } lt(src, srcEnd) { src := add(src, 0x20) }\n {\n\n let innerOffset := calldataload(src)\n if gt(innerOffset, 0xffffffffffffffff) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let elementPos := add(offset, innerOffset)\n\n mstore(dst, abi_decode_t_struct$_FacetCut_$11817_memory_ptr(elementPos, end))\n dst := add(dst, 0x20)\n }\n }\n\n function convert_array_t_array$_t_struct$_FacetCut_$11817_calldata_ptr_$dyn_calldata_ptr_to_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr(value, length) -> converted {\n\n // Copy the array to a free position in memory\n converted :=\n\n abi_decode_available_length_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr(value, length, calldatasize())\n\n }\n\n function panic_error_0x32() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n\n function panic_error_0x21() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n\n function store_literal_in_memory_48267d8daf5ea9c6bbad1fe9c53dc4c04a2a01b2b85bad432956cf42f45b2f54(memPtr) {\n\n mstore(add(memPtr, 0), \"LibDiamondCut: Incorrect FacetCu\")\n\n mstore(add(memPtr, 32), \"tAction\")\n\n }\n\n function abi_encode_t_stringliteral_48267d8daf5ea9c6bbad1fe9c53dc4c04a2a01b2b85bad432956cf42f45b2f54_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 39)\n store_literal_in_memory_48267d8daf5ea9c6bbad1fe9c53dc4c04a2a01b2b85bad432956cf42f45b2f54(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_48267d8daf5ea9c6bbad1fe9c53dc4c04a2a01b2b85bad432956cf42f45b2f54__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_48267d8daf5ea9c6bbad1fe9c53dc4c04a2a01b2b85bad432956cf42f45b2f54_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function increment_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n ret := add(value, 1)\n }\n\n function array_length_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function array_dataslot_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr(ptr) -> data {\n data := ptr\n\n data := add(ptr, 0x20)\n\n }\n\n function abi_encode_t_address_to_t_address(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function validator_assert_t_enum$_FacetCutAction_$11808(value) {\n if iszero(lt(value, 3)) { panic_error_0x21() }\n }\n\n function cleanup_t_enum$_FacetCutAction_$11808(value) -> cleaned {\n cleaned := value validator_assert_t_enum$_FacetCutAction_$11808(value)\n }\n\n function convert_t_enum$_FacetCutAction_$11808_to_t_uint8(value) -> converted {\n converted := cleanup_t_enum$_FacetCutAction_$11808(value)\n }\n\n function abi_encode_t_enum$_FacetCutAction_$11808_to_t_uint8(value, pos) {\n mstore(pos, convert_t_enum$_FacetCutAction_$11808_to_t_uint8(value))\n }\n\n function array_length_t_array$_t_bytes4_$dyn_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_array$_t_bytes4_$dyn_memory_ptr(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function array_dataslot_t_array$_t_bytes4_$dyn_memory_ptr(ptr) -> data {\n data := ptr\n\n data := add(ptr, 0x20)\n\n }\n\n function abi_encode_t_bytes4_to_t_bytes4(value, pos) {\n mstore(pos, cleanup_t_bytes4(value))\n }\n\n function abi_encodeUpdatedPos_t_bytes4_to_t_bytes4(value0, pos) -> updatedPos {\n abi_encode_t_bytes4_to_t_bytes4(value0, pos)\n updatedPos := add(pos, 0x20)\n }\n\n function array_nextElement_t_array$_t_bytes4_$dyn_memory_ptr(ptr) -> next {\n next := add(ptr, 0x20)\n }\n\n // bytes4[] -> bytes4[]\n function abi_encode_t_array$_t_bytes4_$dyn_memory_ptr_to_t_array$_t_bytes4_$dyn_memory_ptr(value, pos) -> end {\n let length := array_length_t_array$_t_bytes4_$dyn_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_array$_t_bytes4_$dyn_memory_ptr(pos, length)\n let baseRef := array_dataslot_t_array$_t_bytes4_$dyn_memory_ptr(value)\n let srcPtr := baseRef\n for { let i := 0 } lt(i, length) { i := add(i, 1) }\n {\n let elementValue0 := mload(srcPtr)\n pos := abi_encodeUpdatedPos_t_bytes4_to_t_bytes4(elementValue0, pos)\n srcPtr := array_nextElement_t_array$_t_bytes4_$dyn_memory_ptr(srcPtr)\n }\n end := pos\n }\n\n // struct ICut.FacetCut -> struct ICut.FacetCut\n function abi_encode_t_struct$_FacetCut_$11817_memory_ptr_to_t_struct$_FacetCut_$11817_memory_ptr(value, pos) -> end {\n let tail := add(pos, 0x60)\n\n {\n // facetAddress\n\n let memberValue0 := mload(add(value, 0x00))\n abi_encode_t_address_to_t_address(memberValue0, add(pos, 0x00))\n }\n\n {\n // action\n\n let memberValue0 := mload(add(value, 0x20))\n abi_encode_t_enum$_FacetCutAction_$11808_to_t_uint8(memberValue0, add(pos, 0x20))\n }\n\n {\n // functionSelectors\n\n let memberValue0 := mload(add(value, 0x40))\n\n mstore(add(pos, 0x40), sub(tail, pos))\n tail := abi_encode_t_array$_t_bytes4_$dyn_memory_ptr_to_t_array$_t_bytes4_$dyn_memory_ptr(memberValue0, tail)\n\n }\n\n end := tail\n }\n\n function abi_encodeUpdatedPos_t_struct$_FacetCut_$11817_memory_ptr_to_t_struct$_FacetCut_$11817_memory_ptr(value0, pos) -> updatedPos {\n updatedPos := abi_encode_t_struct$_FacetCut_$11817_memory_ptr_to_t_struct$_FacetCut_$11817_memory_ptr(value0, pos)\n }\n\n function array_nextElement_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr(ptr) -> next {\n next := add(ptr, 0x20)\n }\n\n // struct ICut.FacetCut[] -> struct ICut.FacetCut[]\n function abi_encode_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_fromStack(pos, length)\n let headStart := pos\n let tail := add(pos, mul(length, 0x20))\n let baseRef := array_dataslot_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr(value)\n let srcPtr := baseRef\n for { let i := 0 } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, sub(tail, headStart))\n let elementValue0 := mload(srcPtr)\n tail := abi_encodeUpdatedPos_t_struct$_FacetCut_$11817_memory_ptr_to_t_struct$_FacetCut_$11817_memory_ptr(elementValue0, tail)\n srcPtr := array_nextElement_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr(srcPtr)\n pos := add(pos, 0x20)\n }\n pos := tail\n end := pos\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function array_length_t_bytes_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function copy_memory_to_memory_with_cleanup(src, dst, length) {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n\n function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_bytes_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_t_address_t_bytes_memory_ptr__to_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n tail := add(headStart, 96)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_FacetCut_$11817_memory_ptr_$dyn_memory_ptr_fromStack(value0, tail)\n\n abi_encode_t_address_to_t_address_fromStack(value1, add(headStart, 32))\n\n mstore(add(headStart, 64), sub(tail, headStart))\n tail := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value2, tail)\n\n }\n\n function store_literal_in_memory_1ffc682bcfedefd5e93ba9ed0c2d1bc0b18319886e3b4bd28a03a3d3729f85c0(memPtr) {\n\n mstore(add(memPtr, 0), \"LibDiamondCut: No selectors in f\")\n\n mstore(add(memPtr, 32), \"acet to cut\")\n\n }\n\n function abi_encode_t_stringliteral_1ffc682bcfedefd5e93ba9ed0c2d1bc0b18319886e3b4bd28a03a3d3729f85c0_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 43)\n store_literal_in_memory_1ffc682bcfedefd5e93ba9ed0c2d1bc0b18319886e3b4bd28a03a3d3729f85c0(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_1ffc682bcfedefd5e93ba9ed0c2d1bc0b18319886e3b4bd28a03a3d3729f85c0__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_1ffc682bcfedefd5e93ba9ed0c2d1bc0b18319886e3b4bd28a03a3d3729f85c0_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_64609d8b93c93a06b98d7db7a87b04044cd4a52c5661d603bb9b90ad8b914a3a(memPtr) {\n\n mstore(add(memPtr, 0), \"LibDiamondCut: Add facet can't b\")\n\n mstore(add(memPtr, 32), \"e address(0)\")\n\n }\n\n function abi_encode_t_stringliteral_64609d8b93c93a06b98d7db7a87b04044cd4a52c5661d603bb9b90ad8b914a3a_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 44)\n store_literal_in_memory_64609d8b93c93a06b98d7db7a87b04044cd4a52c5661d603bb9b90ad8b914a3a(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_64609d8b93c93a06b98d7db7a87b04044cd4a52c5661d603bb9b90ad8b914a3a__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_64609d8b93c93a06b98d7db7a87b04044cd4a52c5661d603bb9b90ad8b914a3a_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_99a7418ee014d613f46da44561258cdbb58064508097483a319062b99fa37700(memPtr) {\n\n mstore(add(memPtr, 0), \"LibDiamondCut: Can't add functio\")\n\n mstore(add(memPtr, 32), \"n that already exists\")\n\n }\n\n function abi_encode_t_stringliteral_99a7418ee014d613f46da44561258cdbb58064508097483a319062b99fa37700_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 53)\n store_literal_in_memory_99a7418ee014d613f46da44561258cdbb58064508097483a319062b99fa37700(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_99a7418ee014d613f46da44561258cdbb58064508097483a319062b99fa37700__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_99a7418ee014d613f46da44561258cdbb58064508097483a319062b99fa37700_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function cleanup_t_uint96(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffff)\n }\n\n function increment_t_uint96(value) -> ret {\n value := cleanup_t_uint96(value)\n if eq(value, 0xffffffffffffffffffffffff) { panic_error_0x11() }\n ret := add(value, 1)\n }\n\n function store_literal_in_memory_b5a7112edf707196456f338fdcc19cd849be6cb8c0d166bcd035f4cfb00e7078(memPtr) {\n\n mstore(add(memPtr, 0), \"LibDiamondCut: Can't replace fun\")\n\n mstore(add(memPtr, 32), \"ction with same function\")\n\n }\n\n function abi_encode_t_stringliteral_b5a7112edf707196456f338fdcc19cd849be6cb8c0d166bcd035f4cfb00e7078_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 56)\n store_literal_in_memory_b5a7112edf707196456f338fdcc19cd849be6cb8c0d166bcd035f4cfb00e7078(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_b5a7112edf707196456f338fdcc19cd849be6cb8c0d166bcd035f4cfb00e7078__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_b5a7112edf707196456f338fdcc19cd849be6cb8c0d166bcd035f4cfb00e7078_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_b739aae768f79b96e91d9f66398733516895e39eb09ee54a795b49dcc77504d4(memPtr) {\n\n mstore(add(memPtr, 0), \"LibDiamondCut: Remove facet addr\")\n\n mstore(add(memPtr, 32), \"ess must be address(0)\")\n\n }\n\n function abi_encode_t_stringliteral_b739aae768f79b96e91d9f66398733516895e39eb09ee54a795b49dcc77504d4_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 54)\n store_literal_in_memory_b739aae768f79b96e91d9f66398733516895e39eb09ee54a795b49dcc77504d4(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_b739aae768f79b96e91d9f66398733516895e39eb09ee54a795b49dcc77504d4__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_b739aae768f79b96e91d9f66398733516895e39eb09ee54a795b49dcc77504d4_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(value, pos) -> end {\n let length := array_length_t_bytes_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, length)\n }\n\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value0) -> end {\n\n pos := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(value0, pos)\n\n end := pos\n }\n\n function abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n mstore(add(headStart, 32), sub(tail, headStart))\n tail := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_fromStack(value1, tail)\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function store_literal_in_memory_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874(memPtr) {\n\n mstore(add(memPtr, 0), \"AccessControl: account \")\n\n }\n\n function abi_encode_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_to_t_string_memory_ptr_nonPadded_inplace_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, 23)\n store_literal_in_memory_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874(pos)\n end := add(pos, 23)\n }\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, length)\n }\n\n function store_literal_in_memory_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69(memPtr) {\n\n mstore(add(memPtr, 0), \" is missing role \")\n\n }\n\n function abi_encode_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_to_t_string_memory_ptr_nonPadded_inplace_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, 17)\n store_literal_in_memory_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69(pos)\n end := add(pos, 17)\n }\n\n function abi_encode_tuple_packed_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_t_string_memory_ptr_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value1, value0) -> end {\n\n pos := abi_encode_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_to_t_string_memory_ptr_nonPadded_inplace_fromStack( pos)\n\n pos := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value0, pos)\n\n pos := abi_encode_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_to_t_string_memory_ptr_nonPadded_inplace_fromStack( pos)\n\n pos := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value1, pos)\n\n end := pos\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value0, tail)\n\n }\n\n function store_literal_in_memory_2c590e498c4d56c984a7092fd5e89a68b9f4541ce9f97252fb74e44a00ffbb71(memPtr) {\n\n mstore(add(memPtr, 0), \"LibDiamondCut: Can't remove func\")\n\n mstore(add(memPtr, 32), \"tion that doesn't exist\")\n\n }\n\n function abi_encode_t_stringliteral_2c590e498c4d56c984a7092fd5e89a68b9f4541ce9f97252fb74e44a00ffbb71_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 55)\n store_literal_in_memory_2c590e498c4d56c984a7092fd5e89a68b9f4541ce9f97252fb74e44a00ffbb71(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_2c590e498c4d56c984a7092fd5e89a68b9f4541ce9f97252fb74e44a00ffbb71__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_2c590e498c4d56c984a7092fd5e89a68b9f4541ce9f97252fb74e44a00ffbb71_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_8ba063dfaa4be2d2cbe73dbb1364728b0f7031ac048441d5fad19e9541992b21(memPtr) {\n\n mstore(add(memPtr, 0), \"LibDiamondCut: Can't remove immu\")\n\n mstore(add(memPtr, 32), \"table function\")\n\n }\n\n function abi_encode_t_stringliteral_8ba063dfaa4be2d2cbe73dbb1364728b0f7031ac048441d5fad19e9541992b21_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 46)\n store_literal_in_memory_8ba063dfaa4be2d2cbe73dbb1364728b0f7031ac048441d5fad19e9541992b21(pos)\n end := add(pos, 64)\n }\n\n function abi_encode_tuple_t_stringliteral_8ba063dfaa4be2d2cbe73dbb1364728b0f7031ac048441d5fad19e9541992b21__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_8ba063dfaa4be2d2cbe73dbb1364728b0f7031ac048441d5fad19e9541992b21_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function checked_sub_t_uint256(x, y) -> diff {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n diff := sub(x, y)\n\n if gt(diff, x) { panic_error_0x11() }\n\n }\n\n function panic_error_0x31() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x31)\n revert(0, 0x24)\n }\n\n function checked_mul_t_uint256(x, y) -> product {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n let product_raw := mul(x, y)\n product := cleanup_t_uint256(product_raw)\n\n // overflow, if x != 0 and y != product/x\n if iszero(\n or(\n iszero(x),\n eq(y, div(product, x))\n )\n ) { panic_error_0x11() }\n\n }\n\n function checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n sum := add(x, y)\n\n if gt(x, sum) { panic_error_0x11() }\n\n }\n\n function decrement_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0x00) { panic_error_0x11() }\n ret := sub(value, 1)\n }\n\n function store_literal_in_memory_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2(memPtr) {\n\n mstore(add(memPtr, 0), \"Strings: hex length insufficient\")\n\n }\n\n function abi_encode_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 32)\n store_literal_in_memory_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n}\n","id":61,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061002b5760003560e01c80631f931c1c14610030575b600080fd5b61004a600480360381019061004591906118d8565b61004c565b005b61007960405160200161005e906119ca565b604051602081830303815290604052805190602001206100db565b6100d48585906100899190611cf3565b8484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506100e7565b5050505050565b6100e481610316565b50565b60005b83518110156102cb57600084828151811061010857610107611d08565b5b60200260200101516020015190506000600281111561012a57610129611d37565b5b81600281111561013d5761013c611d37565b5b0361018d5761018885838151811061015857610157611d08565b5b60200260200101516000015186848151811061017757610176611d08565b5b602002602001015160400151610323565b6102b7565b600160028111156101a1576101a0611d37565b5b8160028111156101b4576101b3611d37565b5b03610204576101ff8583815181106101cf576101ce611d08565b5b6020026020010151600001518684815181106101ee576101ed611d08565b5b60200260200101516040015161059a565b6102b6565b60028081111561021757610216611d37565b5b81600281111561022a57610229611d37565b5b0361027a5761027585838151811061024557610244611d08565b5b60200260200101516000015186848151811061026457610263611d08565b5b60200260200101516040015161081b565b6102b5565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102ac90611dd8565b60405180910390fd5b5b5b5080806102c390611e31565b9150506100ea565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb6738383836040516102ff9392919061212e565b60405180910390a161031182826109a6565b505050565b6103208133610ac8565b50565b6000815111610367576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035e906121e5565b60405180910390fd5b6000610371610b65565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036103e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d990612277565b60405180910390fd5b60008160010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054905090506000816bffffffffffffffffffffffff160361044f5761044e8285610b92565b5b60005b83518110156105935760008482815181106104705761046f611d08565b5b602002602001015190506000846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610564576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055b90612309565b60405180910390fd5b6105708583868a610c6d565b838061057b90612341565b9450505050808061058b90611e31565b915050610452565b5050505050565b60008151116105de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d5906121e5565b60405180910390fd5b60006105e8610b65565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610659576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065090612277565b60405180910390fd5b60008160010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054905090506000816bffffffffffffffffffffffff16036106c6576106c58285610b92565b5b60005b83518110156108145760008482815181106106e7576106e6611d08565b5b602002602001015190506000846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036107da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d1906123e7565b60405180910390fd5b6107e5858284610e1a565b6107f18583868a610c6d565b83806107fc90612341565b9450505050808061080c90611e31565b9150506106c9565b5050505050565b600081511161085f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610856906121e5565b60405180910390fd5b6000610869610b65565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146108da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d190612479565b60405180910390fd5b60005b82518110156109a05760008382815181106108fb576108fa611d08565b5b602002602001015190506000836000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061098b848284610e1a565b5050808061099890611e31565b9150506108dd565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160315610ac4576109fd826040518060600160405280602881526020016129236028913961147c565b6000808373ffffffffffffffffffffffffffffffffffffffff1683604051610a2591906124d5565b600060405180830381855af49150503d8060008114610a60576040519150601f19603f3d011682016040523d82523d6000602084013e610a65565b606091505b509150915081610ac157600081511115610a825780518082602001fd5b83836040517f192105d7000000000000000000000000000000000000000000000000000000008152600401610ab89291906124ec565b60405180910390fd5b50505b5050565b610ad282826114ce565b610b6157610af78173ffffffffffffffffffffffffffffffffffffffff166014611542565b610b058360001c6020611542565b604051602001610b169291906125fb565b6040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b58919061266e565b60405180910390fd5b5050565b6000807fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90508091505090565b610bb48160405180606001604052806024815260200161294b6024913961147c565b81600201805490508260010160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555081600201819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b81846000016000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508360010160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018390806001815401808255809150506001900390600052602060002090600891828204019190066004029091909190916101000a81548163ffffffff021916908360e01c021790555080846000016000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8090612702565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ef7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eee90612794565b60405180910390fd5b6000836000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff169050600060018560010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000180549050610fce91906127b4565b90508082146111625760008560010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001828154811061102f5761102e611d08565b5b90600052602060002090600891828204019190066004029054906101000a900460e01b9050808660010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000184815481106110ab576110aa611d08565b5b90600052602060002090600891828204019190066004026101000a81548163ffffffff021916908360e01c021790555082866000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550505b8460010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054806111b6576111b56127e8565b5b60019003818190600052602060002090600891828204019190066004026101000a81549063ffffffff02191690559055846000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a8154906bffffffffffffffffffffffff0219169055505060008103611475576000600186600201805490506112a091906127b4565b905060008660010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490508181146113e157600087600201838154811061130a57611309611d08565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508088600201838154811061134e5761134d611d08565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818860010160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550505b866002018054806113f5576113f46127e8565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590558660010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000905550505b5050505050565b6000823b90506000811182906114c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bf919061266e565b60405180910390fd5b50505050565b60006114d861177e565b600001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6060600060028360026115559190612817565b61155f9190612859565b67ffffffffffffffff811115611578576115776119fb565b5b6040519080825280601f01601f1916602001820160405280156115aa5781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106115e2576115e1611d08565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061164657611645611d08565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026116869190612817565b6116909190612859565b90505b6001811115611730577f3031323334353637383961626364656600000000000000000000000000000000600f8616601081106116d2576116d1611d08565b5b1a60f81b8282815181106116e9576116e8611d08565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c9450806117299061288d565b9050611693565b5060008414611774576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176b90612902565b60405180910390fd5b8091505092915050565b6000807f4cd15452b25e815d3f9d1a3c7edd985a178edf5eb3461a1acbf855517423d69490508091505090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f8401126117e4576117e36117bf565b5b8235905067ffffffffffffffff811115611801576118006117c4565b5b60208301915083602082028301111561181d5761181c6117c9565b5b9250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061184f82611824565b9050919050565b61185f81611844565b811461186a57600080fd5b50565b60008135905061187c81611856565b92915050565b60008083601f840112611898576118976117bf565b5b8235905067ffffffffffffffff8111156118b5576118b46117c4565b5b6020830191508360018202830111156118d1576118d06117c9565b5b9250929050565b6000806000806000606086880312156118f4576118f36117b5565b5b600086013567ffffffffffffffff811115611912576119116117ba565b5b61191e888289016117ce565b955095505060206119318882890161186d565b935050604086013567ffffffffffffffff811115611952576119516117ba565b5b61195e88828901611882565b92509250509295509295909350565b600082825260208201905092915050565b7f4d41494e5441494e45525f524f4c450000000000000000000000000000000000600082015250565b60006119b4600f8361196d565b91506119bf8261197e565b602082019050919050565b600060208201905081810360008301526119e3816119a7565b9050919050565b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611a33826119ea565b810181811067ffffffffffffffff82111715611a5257611a516119fb565b5b80604052505050565b6000611a656117ab565b9050611a718282611a2a565b919050565b600067ffffffffffffffff821115611a9157611a906119fb565b5b602082029050602081019050919050565b600080fd5b600080fd5b60038110611ab957600080fd5b50565b600081359050611acb81611aac565b92915050565b600067ffffffffffffffff821115611aec57611aeb6119fb565b5b602082029050602081019050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611b3281611afd565b8114611b3d57600080fd5b50565b600081359050611b4f81611b29565b92915050565b6000611b68611b6384611ad1565b611a5b565b90508083825260208201905060208402830185811115611b8b57611b8a6117c9565b5b835b81811015611bb45780611ba08882611b40565b845260208401935050602081019050611b8d565b5050509392505050565b600082601f830112611bd357611bd26117bf565b5b8135611be3848260208601611b55565b91505092915050565b600060608284031215611c0257611c01611aa2565b5b611c0c6060611a5b565b90506000611c1c8482850161186d565b6000830152506020611c3084828501611abc565b602083015250604082013567ffffffffffffffff811115611c5457611c53611aa7565b5b611c6084828501611bbe565b60408301525092915050565b6000611c7f611c7a84611a76565b611a5b565b90508083825260208201905060208402830185811115611ca257611ca16117c9565b5b835b81811015611ce957803567ffffffffffffffff811115611cc757611cc66117bf565b5b808601611cd48982611bec565b85526020850194505050602081019050611ca4565b5050509392505050565b6000611d00368484611c6c565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4c69624469616d6f6e644375743a20496e636f7272656374204661636574437560008201527f74416374696f6e00000000000000000000000000000000000000000000000000602082015250565b6000611dc260278361196d565b9150611dcd82611d66565b604082019050919050565b60006020820190508181036000830152611df181611db5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000819050919050565b6000611e3c82611e27565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611e6e57611e6d611df8565b5b600182019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b611eae81611844565b82525050565b60038110611ec557611ec4611d37565b5b50565b6000819050611ed682611eb4565b919050565b6000611ee682611ec8565b9050919050565b611ef681611edb565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b611f3181611afd565b82525050565b6000611f438383611f28565b60208301905092915050565b6000602082019050919050565b6000611f6782611efc565b611f718185611f07565b9350611f7c83611f18565b8060005b83811015611fad578151611f948882611f37565b9750611f9f83611f4f565b925050600181019050611f80565b5085935050505092915050565b6000606083016000830151611fd26000860182611ea5565b506020830151611fe56020860182611eed565b5060408301518482036040860152611ffd8282611f5c565b9150508091505092915050565b60006120168383611fba565b905092915050565b6000602082019050919050565b600061203682611e79565b6120408185611e84565b93508360208202850161205285611e95565b8060005b8581101561208e578484038952815161206f858261200a565b945061207a8361201e565b925060208a01995050600181019050612056565b50829750879550505050505092915050565b6120a981611844565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b838110156120e95780820151818401526020810190506120ce565b60008484015250505050565b6000612100826120af565b61210a81856120ba565b935061211a8185602086016120cb565b612123816119ea565b840191505092915050565b60006060820190508181036000830152612148818661202b565b905061215760208301856120a0565b818103604083015261216981846120f5565b9050949350505050565b7f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660008201527f6163657420746f20637574000000000000000000000000000000000000000000602082015250565b60006121cf602b8361196d565b91506121da82612173565b604082019050919050565b600060208201905081810360008301526121fe816121c2565b9050919050565b7f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260008201527f6520616464726573732830290000000000000000000000000000000000000000602082015250565b6000612261602c8361196d565b915061226c82612205565b604082019050919050565b6000602082019050818103600083015261229081612254565b9050919050565b7f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f60008201527f6e207468617420616c7265616479206578697374730000000000000000000000602082015250565b60006122f360358361196d565b91506122fe82612297565b604082019050919050565b60006020820190508181036000830152612322816122e6565b9050919050565b60006bffffffffffffffffffffffff82169050919050565b600061234c82612329565b91506bffffffffffffffffffffffff820361236a57612369611df8565b5b600182019050919050565b7f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60008201527f6374696f6e20776974682073616d652066756e6374696f6e0000000000000000602082015250565b60006123d160388361196d565b91506123dc82612375565b604082019050919050565b60006020820190508181036000830152612400816123c4565b9050919050565b7f4c69624469616d6f6e644375743a2052656d6f7665206661636574206164647260008201527f657373206d757374206265206164647265737328302900000000000000000000602082015250565b600061246360368361196d565b915061246e82612407565b604082019050919050565b6000602082019050818103600083015261249281612456565b9050919050565b600081905092915050565b60006124af826120af565b6124b98185612499565b93506124c98185602086016120cb565b80840191505092915050565b60006124e182846124a4565b915081905092915050565b600060408201905061250160008301856120a0565b818103602083015261251381846120f5565b90509392505050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b600061255d60178361251c565b915061256882612527565b601782019050919050565b600081519050919050565b600061258982612573565b612593818561251c565b93506125a38185602086016120cb565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b60006125e560118361251c565b91506125f0826125af565b601182019050919050565b600061260682612550565b9150612612828561257e565b915061261d826125d8565b9150612629828461257e565b91508190509392505050565b600061264082612573565b61264a818561196d565b935061265a8185602086016120cb565b612663816119ea565b840191505092915050565b600060208201905081810360008301526126888184612635565b905092915050565b7f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360008201527f74696f6e207468617420646f65736e2774206578697374000000000000000000602082015250565b60006126ec60378361196d565b91506126f782612690565b604082019050919050565b6000602082019050818103600083015261271b816126df565b9050919050565b7f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560008201527f7461626c652066756e6374696f6e000000000000000000000000000000000000602082015250565b600061277e602e8361196d565b915061278982612722565b604082019050919050565b600060208201905081810360008301526127ad81612771565b9050919050565b60006127bf82611e27565b91506127ca83611e27565b92508282039050818111156127e2576127e1611df8565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600061282282611e27565b915061282d83611e27565b925082820261283b81611e27565b9150828204841483151761285257612851611df8565b5b5092915050565b600061286482611e27565b915061286f83611e27565b925082820190508082111561288757612886611df8565b5b92915050565b600061289882611e27565b9150600082036128ab576128aa611df8565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b60006128ec60208361196d565b91506128f7826128b6565b602082019050919050565b6000602082019050818103600083015261291b816128df565b905091905056fe4c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465a2646970667358221220fc93d6581ef88c003694ad3b7847e83e3748d87f743d9a64c8f96766c27475c564736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1F931C1C EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x45 SWAP2 SWAP1 PUSH2 0x18D8 JUMP JUMPDEST PUSH2 0x4C JUMP JUMPDEST STOP JUMPDEST PUSH2 0x79 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x5E SWAP1 PUSH2 0x19CA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0xDB JUMP JUMPDEST PUSH2 0xD4 DUP6 DUP6 SWAP1 PUSH2 0x89 SWAP2 SWAP1 PUSH2 0x1CF3 JUMP JUMPDEST DUP5 DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP POP POP POP POP PUSH2 0xE7 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0xE4 DUP2 PUSH2 0x316 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x2CB JUMPI PUSH1 0x0 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x108 JUMPI PUSH2 0x107 PUSH2 0x1D08 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x12A JUMPI PUSH2 0x129 PUSH2 0x1D37 JUMP JUMPDEST JUMPDEST DUP2 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x13D JUMPI PUSH2 0x13C PUSH2 0x1D37 JUMP JUMPDEST JUMPDEST SUB PUSH2 0x18D JUMPI PUSH2 0x188 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x158 JUMPI PUSH2 0x157 PUSH2 0x1D08 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x177 JUMPI PUSH2 0x176 PUSH2 0x1D08 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD PUSH2 0x323 JUMP JUMPDEST PUSH2 0x2B7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x1A1 JUMPI PUSH2 0x1A0 PUSH2 0x1D37 JUMP JUMPDEST JUMPDEST DUP2 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x1B4 JUMPI PUSH2 0x1B3 PUSH2 0x1D37 JUMP JUMPDEST JUMPDEST SUB PUSH2 0x204 JUMPI PUSH2 0x1FF DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1CF JUMPI PUSH2 0x1CE PUSH2 0x1D08 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1EE JUMPI PUSH2 0x1ED PUSH2 0x1D08 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD PUSH2 0x59A JUMP JUMPDEST PUSH2 0x2B6 JUMP JUMPDEST PUSH1 0x2 DUP1 DUP2 GT ISZERO PUSH2 0x217 JUMPI PUSH2 0x216 PUSH2 0x1D37 JUMP JUMPDEST JUMPDEST DUP2 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x22A JUMPI PUSH2 0x229 PUSH2 0x1D37 JUMP JUMPDEST JUMPDEST SUB PUSH2 0x27A JUMPI PUSH2 0x275 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x245 JUMPI PUSH2 0x244 PUSH2 0x1D08 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x264 JUMPI PUSH2 0x263 PUSH2 0x1D08 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD PUSH2 0x81B JUMP JUMPDEST PUSH2 0x2B5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2AC SWAP1 PUSH2 0x1DD8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMPDEST JUMPDEST POP DUP1 DUP1 PUSH2 0x2C3 SWAP1 PUSH2 0x1E31 JUMP JUMPDEST SWAP2 POP POP PUSH2 0xEA JUMP JUMPDEST POP PUSH32 0x8FAA70878671CCD212D20771B795C50AF8FD3FF6CF27F4BDE57E5D4DE0AEB673 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH2 0x2FF SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x212E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH2 0x311 DUP3 DUP3 PUSH2 0x9A6 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x320 DUP2 CALLER PUSH2 0xAC8 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD GT PUSH2 0x367 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x35E SWAP1 PUSH2 0x21E5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x371 PUSH2 0xB65 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x3E2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3D9 SWAP1 PUSH2 0x2277 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 ADD PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP1 SLOAD SWAP1 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x44F JUMPI PUSH2 0x44E DUP3 DUP6 PUSH2 0xB92 JUMP JUMPDEST JUMPDEST PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x593 JUMPI PUSH1 0x0 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x470 JUMPI PUSH2 0x46F PUSH2 0x1D08 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP5 PUSH1 0x0 ADD PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x564 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x55B SWAP1 PUSH2 0x2309 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x570 DUP6 DUP4 DUP7 DUP11 PUSH2 0xC6D JUMP JUMPDEST DUP4 DUP1 PUSH2 0x57B SWAP1 PUSH2 0x2341 JUMP JUMPDEST SWAP5 POP POP POP POP DUP1 DUP1 PUSH2 0x58B SWAP1 PUSH2 0x1E31 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x452 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD GT PUSH2 0x5DE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5D5 SWAP1 PUSH2 0x21E5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x5E8 PUSH2 0xB65 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x659 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x650 SWAP1 PUSH2 0x2277 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 ADD PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP1 SLOAD SWAP1 POP SWAP1 POP PUSH1 0x0 DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x6C6 JUMPI PUSH2 0x6C5 DUP3 DUP6 PUSH2 0xB92 JUMP JUMPDEST JUMPDEST PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x814 JUMPI PUSH1 0x0 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x6E7 JUMPI PUSH2 0x6E6 PUSH2 0x1D08 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP5 PUSH1 0x0 ADD PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x7DA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7D1 SWAP1 PUSH2 0x23E7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x7E5 DUP6 DUP3 DUP5 PUSH2 0xE1A JUMP JUMPDEST PUSH2 0x7F1 DUP6 DUP4 DUP7 DUP11 PUSH2 0xC6D JUMP JUMPDEST DUP4 DUP1 PUSH2 0x7FC SWAP1 PUSH2 0x2341 JUMP JUMPDEST SWAP5 POP POP POP POP DUP1 DUP1 PUSH2 0x80C SWAP1 PUSH2 0x1E31 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x6C9 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD GT PUSH2 0x85F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x856 SWAP1 PUSH2 0x21E5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x869 PUSH2 0xB65 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x8DA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x8D1 SWAP1 PUSH2 0x2479 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x9A0 JUMPI PUSH1 0x0 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x8FB JUMPI PUSH2 0x8FA PUSH2 0x1D08 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x0 ADD PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH2 0x98B DUP5 DUP3 DUP5 PUSH2 0xE1A JUMP JUMPDEST POP POP DUP1 DUP1 PUSH2 0x998 SWAP1 PUSH2 0x1E31 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x8DD JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB ISZERO PUSH2 0xAC4 JUMPI PUSH2 0x9FD DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x2923 PUSH1 0x28 SWAP2 CODECOPY PUSH2 0x147C JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD PUSH2 0xA25 SWAP2 SWAP1 PUSH2 0x24D5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xA60 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xA65 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0xAC1 JUMPI PUSH1 0x0 DUP2 MLOAD GT ISZERO PUSH2 0xA82 JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST DUP4 DUP4 PUSH1 0x40 MLOAD PUSH32 0x192105D700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xAB8 SWAP3 SWAP2 SWAP1 PUSH2 0x24EC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0xAD2 DUP3 DUP3 PUSH2 0x14CE JUMP JUMPDEST PUSH2 0xB61 JUMPI PUSH2 0xAF7 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x14 PUSH2 0x1542 JUMP JUMPDEST PUSH2 0xB05 DUP4 PUSH1 0x0 SHR PUSH1 0x20 PUSH2 0x1542 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xB16 SWAP3 SWAP2 SWAP1 PUSH2 0x25FB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB58 SWAP2 SWAP1 PUSH2 0x266E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131C SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH2 0xBB4 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x294B PUSH1 0x24 SWAP2 CODECOPY PUSH2 0x147C JUMP JUMPDEST DUP2 PUSH1 0x2 ADD DUP1 SLOAD SWAP1 POP DUP3 PUSH1 0x1 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x2 ADD DUP2 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP POP JUMP JUMPDEST DUP2 DUP5 PUSH1 0x0 ADD PUSH1 0x0 DUP6 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP4 PUSH1 0x1 ADD PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP4 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x8 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x4 MUL SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0xE0 SHR MUL OR SWAP1 SSTORE POP DUP1 DUP5 PUSH1 0x0 ADD PUSH1 0x0 DUP6 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xE89 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xE80 SWAP1 PUSH2 0x2702 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0xEF7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xEEE SWAP1 PUSH2 0x2794 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x0 ADD PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP6 PUSH1 0x1 ADD PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP1 SLOAD SWAP1 POP PUSH2 0xFCE SWAP2 SWAP1 PUSH2 0x27B4 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 EQ PUSH2 0x1162 JUMPI PUSH1 0x0 DUP6 PUSH1 0x1 ADD PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x102F JUMPI PUSH2 0x102E PUSH2 0x1D08 JUMP JUMPDEST JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x8 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x4 MUL SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xE0 SHL SWAP1 POP DUP1 DUP7 PUSH1 0x1 ADD PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x10AB JUMPI PUSH2 0x10AA PUSH2 0x1D08 JUMP JUMPDEST JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x8 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x4 MUL PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0xE0 SHR MUL OR SWAP1 SSTORE POP DUP3 DUP7 PUSH1 0x0 ADD PUSH1 0x0 DUP4 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP JUMPDEST DUP5 PUSH1 0x1 ADD PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP1 SLOAD DUP1 PUSH2 0x11B6 JUMPI PUSH2 0x11B5 PUSH2 0x27E8 JUMP JUMPDEST JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x8 SWAP2 DUP3 DUP3 DIV ADD SWAP2 SWAP1 MOD PUSH1 0x4 MUL PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 SSTORE SWAP1 SSTORE DUP5 PUSH1 0x0 ADD PUSH1 0x0 DUP5 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP1 DUP3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE PUSH1 0x0 DUP3 ADD PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE POP POP PUSH1 0x0 DUP2 SUB PUSH2 0x1475 JUMPI PUSH1 0x0 PUSH1 0x1 DUP7 PUSH1 0x2 ADD DUP1 SLOAD SWAP1 POP PUSH2 0x12A0 SWAP2 SWAP1 PUSH2 0x27B4 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 PUSH1 0x1 ADD PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 POP DUP2 DUP2 EQ PUSH2 0x13E1 JUMPI PUSH1 0x0 DUP8 PUSH1 0x2 ADD DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x130A JUMPI PUSH2 0x1309 PUSH2 0x1D08 JUMP JUMPDEST JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP1 DUP9 PUSH1 0x2 ADD DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x134E JUMPI PUSH2 0x134D PUSH2 0x1D08 JUMP JUMPDEST JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 DUP9 PUSH1 0x1 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP POP JUMPDEST DUP7 PUSH1 0x2 ADD DUP1 SLOAD DUP1 PUSH2 0x13F5 JUMPI PUSH2 0x13F4 PUSH2 0x27E8 JUMP JUMPDEST JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE SWAP1 SSTORE DUP7 PUSH1 0x1 ADD PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SSTORE POP POP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 EXTCODESIZE SWAP1 POP PUSH1 0x0 DUP2 GT DUP3 SWAP1 PUSH2 0x14C8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x14BF SWAP2 SWAP1 PUSH2 0x266E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14D8 PUSH2 0x177E JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x2 DUP4 PUSH1 0x2 PUSH2 0x1555 SWAP2 SWAP1 PUSH2 0x2817 JUMP JUMPDEST PUSH2 0x155F SWAP2 SWAP1 PUSH2 0x2859 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1578 JUMPI PUSH2 0x1577 PUSH2 0x19FB JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x15AA JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x15E2 JUMPI PUSH2 0x15E1 PUSH2 0x1D08 JUMP JUMPDEST JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH32 0x7800000000000000000000000000000000000000000000000000000000000000 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x1646 JUMPI PUSH2 0x1645 PUSH2 0x1D08 JUMP JUMPDEST JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x0 PUSH1 0x1 DUP5 PUSH1 0x2 PUSH2 0x1686 SWAP2 SWAP1 PUSH2 0x2817 JUMP JUMPDEST PUSH2 0x1690 SWAP2 SWAP1 PUSH2 0x2859 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x1730 JUMPI PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 PUSH1 0xF DUP7 AND PUSH1 0x10 DUP2 LT PUSH2 0x16D2 JUMPI PUSH2 0x16D1 PUSH2 0x1D08 JUMP JUMPDEST JUMPDEST BYTE PUSH1 0xF8 SHL DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x16E9 JUMPI PUSH2 0x16E8 PUSH2 0x1D08 JUMP JUMPDEST JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x4 DUP6 SWAP1 SHR SWAP5 POP DUP1 PUSH2 0x1729 SWAP1 PUSH2 0x288D JUMP JUMPDEST SWAP1 POP PUSH2 0x1693 JUMP JUMPDEST POP PUSH1 0x0 DUP5 EQ PUSH2 0x1774 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x176B SWAP1 PUSH2 0x2902 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x4CD15452B25E815D3F9D1A3C7EDD985A178EDF5EB3461A1ACBF855517423D694 SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x17E4 JUMPI PUSH2 0x17E3 PUSH2 0x17BF JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1801 JUMPI PUSH2 0x1800 PUSH2 0x17C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x181D JUMPI PUSH2 0x181C PUSH2 0x17C9 JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x184F DUP3 PUSH2 0x1824 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x185F DUP2 PUSH2 0x1844 JUMP JUMPDEST DUP2 EQ PUSH2 0x186A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x187C DUP2 PUSH2 0x1856 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x1898 JUMPI PUSH2 0x1897 PUSH2 0x17BF JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x18B5 JUMPI PUSH2 0x18B4 PUSH2 0x17C4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x18D1 JUMPI PUSH2 0x18D0 PUSH2 0x17C9 JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x18F4 JUMPI PUSH2 0x18F3 PUSH2 0x17B5 JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1912 JUMPI PUSH2 0x1911 PUSH2 0x17BA JUMP JUMPDEST JUMPDEST PUSH2 0x191E DUP9 DUP3 DUP10 ADD PUSH2 0x17CE JUMP JUMPDEST SWAP6 POP SWAP6 POP POP PUSH1 0x20 PUSH2 0x1931 DUP9 DUP3 DUP10 ADD PUSH2 0x186D JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1952 JUMPI PUSH2 0x1951 PUSH2 0x17BA JUMP JUMPDEST JUMPDEST PUSH2 0x195E DUP9 DUP3 DUP10 ADD PUSH2 0x1882 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4D41494E5441494E45525F524F4C450000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x19B4 PUSH1 0xF DUP4 PUSH2 0x196D JUMP JUMPDEST SWAP2 POP PUSH2 0x19BF DUP3 PUSH2 0x197E JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x19E3 DUP2 PUSH2 0x19A7 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x1A33 DUP3 PUSH2 0x19EA JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x1A52 JUMPI PUSH2 0x1A51 PUSH2 0x19FB JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A65 PUSH2 0x17AB JUMP JUMPDEST SWAP1 POP PUSH2 0x1A71 DUP3 DUP3 PUSH2 0x1A2A JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1A91 JUMPI PUSH2 0x1A90 PUSH2 0x19FB JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 DUP2 LT PUSH2 0x1AB9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1ACB DUP2 PUSH2 0x1AAC JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1AEC JUMPI PUSH2 0x1AEB PUSH2 0x19FB JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1B32 DUP2 PUSH2 0x1AFD JUMP JUMPDEST DUP2 EQ PUSH2 0x1B3D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1B4F DUP2 PUSH2 0x1B29 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B68 PUSH2 0x1B63 DUP5 PUSH2 0x1AD1 JUMP JUMPDEST PUSH2 0x1A5B JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x1B8B JUMPI PUSH2 0x1B8A PUSH2 0x17C9 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1BB4 JUMPI DUP1 PUSH2 0x1BA0 DUP9 DUP3 PUSH2 0x1B40 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x1B8D JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1BD3 JUMPI PUSH2 0x1BD2 PUSH2 0x17BF JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1BE3 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x1B55 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1C02 JUMPI PUSH2 0x1C01 PUSH2 0x1AA2 JUMP JUMPDEST JUMPDEST PUSH2 0x1C0C PUSH1 0x60 PUSH2 0x1A5B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1C1C DUP5 DUP3 DUP6 ADD PUSH2 0x186D JUMP JUMPDEST PUSH1 0x0 DUP4 ADD MSTORE POP PUSH1 0x20 PUSH2 0x1C30 DUP5 DUP3 DUP6 ADD PUSH2 0x1ABC JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1C54 JUMPI PUSH2 0x1C53 PUSH2 0x1AA7 JUMP JUMPDEST JUMPDEST PUSH2 0x1C60 DUP5 DUP3 DUP6 ADD PUSH2 0x1BBE JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C7F PUSH2 0x1C7A DUP5 PUSH2 0x1A76 JUMP JUMPDEST PUSH2 0x1A5B JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0x1CA2 JUMPI PUSH2 0x1CA1 PUSH2 0x17C9 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1CE9 JUMPI DUP1 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1CC7 JUMPI PUSH2 0x1CC6 PUSH2 0x17BF JUMP JUMPDEST JUMPDEST DUP1 DUP7 ADD PUSH2 0x1CD4 DUP10 DUP3 PUSH2 0x1BEC JUMP JUMPDEST DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP5 POP POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x1CA4 JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D00 CALLDATASIZE DUP5 DUP5 PUSH2 0x1C6C JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4C69624469616D6F6E644375743A20496E636F72726563742046616365744375 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x74416374696F6E00000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1DC2 PUSH1 0x27 DUP4 PUSH2 0x196D JUMP JUMPDEST SWAP2 POP PUSH2 0x1DCD DUP3 PUSH2 0x1D66 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1DF1 DUP2 PUSH2 0x1DB5 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E3C DUP3 PUSH2 0x1E27 JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x1E6E JUMPI PUSH2 0x1E6D PUSH2 0x1DF8 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1EAE DUP2 PUSH2 0x1844 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x3 DUP2 LT PUSH2 0x1EC5 JUMPI PUSH2 0x1EC4 PUSH2 0x1D37 JUMP JUMPDEST JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH2 0x1ED6 DUP3 PUSH2 0x1EB4 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1EE6 DUP3 PUSH2 0x1EC8 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1EF6 DUP2 PUSH2 0x1EDB JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1F31 DUP2 PUSH2 0x1AFD JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F43 DUP4 DUP4 PUSH2 0x1F28 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F67 DUP3 PUSH2 0x1EFC JUMP JUMPDEST PUSH2 0x1F71 DUP2 DUP6 PUSH2 0x1F07 JUMP JUMPDEST SWAP4 POP PUSH2 0x1F7C DUP4 PUSH2 0x1F18 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1FAD JUMPI DUP2 MLOAD PUSH2 0x1F94 DUP9 DUP3 PUSH2 0x1F37 JUMP JUMPDEST SWAP8 POP PUSH2 0x1F9F DUP4 PUSH2 0x1F4F JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x1F80 JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 ADD PUSH1 0x0 DUP4 ADD MLOAD PUSH2 0x1FD2 PUSH1 0x0 DUP7 ADD DUP3 PUSH2 0x1EA5 JUMP JUMPDEST POP PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x1FE5 PUSH1 0x20 DUP7 ADD DUP3 PUSH2 0x1EED JUMP JUMPDEST POP PUSH1 0x40 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0x1FFD DUP3 DUP3 PUSH2 0x1F5C JUMP JUMPDEST SWAP2 POP POP DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2016 DUP4 DUP4 PUSH2 0x1FBA JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2036 DUP3 PUSH2 0x1E79 JUMP JUMPDEST PUSH2 0x2040 DUP2 DUP6 PUSH2 0x1E84 JUMP JUMPDEST SWAP4 POP DUP4 PUSH1 0x20 DUP3 MUL DUP6 ADD PUSH2 0x2052 DUP6 PUSH2 0x1E95 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x208E JUMPI DUP5 DUP5 SUB DUP10 MSTORE DUP2 MLOAD PUSH2 0x206F DUP6 DUP3 PUSH2 0x200A JUMP JUMPDEST SWAP5 POP PUSH2 0x207A DUP4 PUSH2 0x201E JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP11 ADD SWAP10 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x2056 JUMP JUMPDEST POP DUP3 SWAP8 POP DUP8 SWAP6 POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x20A9 DUP2 PUSH2 0x1844 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x20E9 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x20CE JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2100 DUP3 PUSH2 0x20AF JUMP JUMPDEST PUSH2 0x210A DUP2 DUP6 PUSH2 0x20BA JUMP JUMPDEST SWAP4 POP PUSH2 0x211A DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x20CB JUMP JUMPDEST PUSH2 0x2123 DUP2 PUSH2 0x19EA JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2148 DUP2 DUP7 PUSH2 0x202B JUMP JUMPDEST SWAP1 POP PUSH2 0x2157 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x20A0 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x2169 DUP2 DUP5 PUSH2 0x20F5 JUMP JUMPDEST SWAP1 POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x4C69624469616D6F6E644375743A204E6F2073656C6563746F727320696E2066 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6163657420746F20637574000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x21CF PUSH1 0x2B DUP4 PUSH2 0x196D JUMP JUMPDEST SWAP2 POP PUSH2 0x21DA DUP3 PUSH2 0x2173 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x21FE DUP2 PUSH2 0x21C2 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4C69624469616D6F6E644375743A204164642066616365742063616E27742062 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6520616464726573732830290000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2261 PUSH1 0x2C DUP4 PUSH2 0x196D JUMP JUMPDEST SWAP2 POP PUSH2 0x226C DUP3 PUSH2 0x2205 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2290 DUP2 PUSH2 0x2254 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4C69624469616D6F6E644375743A2043616E2774206164642066756E6374696F PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6E207468617420616C7265616479206578697374730000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x22F3 PUSH1 0x35 DUP4 PUSH2 0x196D JUMP JUMPDEST SWAP2 POP PUSH2 0x22FE DUP3 PUSH2 0x2297 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2322 DUP2 PUSH2 0x22E6 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x234C DUP3 PUSH2 0x2329 JUMP JUMPDEST SWAP2 POP PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0x236A JUMPI PUSH2 0x2369 PUSH2 0x1DF8 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4C69624469616D6F6E644375743A2043616E2774207265706C6163652066756E PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x6374696F6E20776974682073616D652066756E6374696F6E0000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x23D1 PUSH1 0x38 DUP4 PUSH2 0x196D JUMP JUMPDEST SWAP2 POP PUSH2 0x23DC DUP3 PUSH2 0x2375 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2400 DUP2 PUSH2 0x23C4 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4C69624469616D6F6E644375743A2052656D6F76652066616365742061646472 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x657373206D757374206265206164647265737328302900000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2463 PUSH1 0x36 DUP4 PUSH2 0x196D JUMP JUMPDEST SWAP2 POP PUSH2 0x246E DUP3 PUSH2 0x2407 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2492 DUP2 PUSH2 0x2456 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x24AF DUP3 PUSH2 0x20AF JUMP JUMPDEST PUSH2 0x24B9 DUP2 DUP6 PUSH2 0x2499 JUMP JUMPDEST SWAP4 POP PUSH2 0x24C9 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x20CB JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x24E1 DUP3 DUP5 PUSH2 0x24A4 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x2501 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x20A0 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x2513 DUP2 DUP5 PUSH2 0x20F5 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x416363657373436F6E74726F6C3A206163636F756E7420000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x255D PUSH1 0x17 DUP4 PUSH2 0x251C JUMP JUMPDEST SWAP2 POP PUSH2 0x2568 DUP3 PUSH2 0x2527 JUMP JUMPDEST PUSH1 0x17 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2589 DUP3 PUSH2 0x2573 JUMP JUMPDEST PUSH2 0x2593 DUP2 DUP6 PUSH2 0x251C JUMP JUMPDEST SWAP4 POP PUSH2 0x25A3 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x20CB JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x206973206D697373696E6720726F6C6520000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x25E5 PUSH1 0x11 DUP4 PUSH2 0x251C JUMP JUMPDEST SWAP2 POP PUSH2 0x25F0 DUP3 PUSH2 0x25AF JUMP JUMPDEST PUSH1 0x11 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2606 DUP3 PUSH2 0x2550 JUMP JUMPDEST SWAP2 POP PUSH2 0x2612 DUP3 DUP6 PUSH2 0x257E JUMP JUMPDEST SWAP2 POP PUSH2 0x261D DUP3 PUSH2 0x25D8 JUMP JUMPDEST SWAP2 POP PUSH2 0x2629 DUP3 DUP5 PUSH2 0x257E JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2640 DUP3 PUSH2 0x2573 JUMP JUMPDEST PUSH2 0x264A DUP2 DUP6 PUSH2 0x196D JUMP JUMPDEST SWAP4 POP PUSH2 0x265A DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x20CB JUMP JUMPDEST PUSH2 0x2663 DUP2 PUSH2 0x19EA JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x2688 DUP2 DUP5 PUSH2 0x2635 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4C69624469616D6F6E644375743A2043616E27742072656D6F76652066756E63 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x74696F6E207468617420646F65736E2774206578697374000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x26EC PUSH1 0x37 DUP4 PUSH2 0x196D JUMP JUMPDEST SWAP2 POP PUSH2 0x26F7 DUP3 PUSH2 0x2690 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x271B DUP2 PUSH2 0x26DF JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4C69624469616D6F6E644375743A2043616E27742072656D6F766520696D6D75 PUSH1 0x0 DUP3 ADD MSTORE PUSH32 0x7461626C652066756E6374696F6E000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x277E PUSH1 0x2E DUP4 PUSH2 0x196D JUMP JUMPDEST SWAP2 POP PUSH2 0x2789 DUP3 PUSH2 0x2722 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x27AD DUP2 PUSH2 0x2771 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27BF DUP3 PUSH2 0x1E27 JUMP JUMPDEST SWAP2 POP PUSH2 0x27CA DUP4 PUSH2 0x1E27 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 SUB SWAP1 POP DUP2 DUP2 GT ISZERO PUSH2 0x27E2 JUMPI PUSH2 0x27E1 PUSH2 0x1DF8 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2822 DUP3 PUSH2 0x1E27 JUMP JUMPDEST SWAP2 POP PUSH2 0x282D DUP4 PUSH2 0x1E27 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 MUL PUSH2 0x283B DUP2 PUSH2 0x1E27 JUMP JUMPDEST SWAP2 POP DUP3 DUP3 DIV DUP5 EQ DUP4 ISZERO OR PUSH2 0x2852 JUMPI PUSH2 0x2851 PUSH2 0x1DF8 JUMP JUMPDEST JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2864 DUP3 PUSH2 0x1E27 JUMP JUMPDEST SWAP2 POP PUSH2 0x286F DUP4 PUSH2 0x1E27 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x2887 JUMPI PUSH2 0x2886 PUSH2 0x1DF8 JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2898 DUP3 PUSH2 0x1E27 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 DUP3 SUB PUSH2 0x28AB JUMPI PUSH2 0x28AA PUSH2 0x1DF8 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 SUB SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x537472696E67733A20686578206C656E67746820696E73756666696369656E74 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x28EC PUSH1 0x20 DUP4 PUSH2 0x196D JUMP JUMPDEST SWAP2 POP PUSH2 0x28F7 DUP3 PUSH2 0x28B6 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x291B DUP2 PUSH2 0x28DF JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP INVALID 0x4C PUSH10 0x624469616D6F6E644375 PUSH21 0x3A205F696E6974206164647265737320686173206E PUSH16 0x20636F64654C69624469616D6F6E6443 PUSH22 0x743A204E657720666163657420686173206E6F20636F PUSH5 0x65A2646970 PUSH7 0x7358221220FC93 0xD6 PC 0x1E 0xF8 DUP13 STOP CALLDATASIZE SWAP5 0xAD EXTCODESIZE PUSH25 0x47E83E3748D87F743D9A64C8F96766C27475C564736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"402:754:30:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;872:282;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;1024:67;332:29:48;;;;;;;:::i;:::-;;;;;;;;;;;;;322:40;;;;;;1024:33:30;:67::i;:::-;1101:46;1117:11;;1101:46;;;;;:::i;:::-;1130:5;1137:9;;1101:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:15;:46::i;:::-;872:282;;;;;:::o;1039:89:48:-;1104:17;1115:5;1104:10;:17::i;:::-;1039:89;:::o;1836:1250:49:-;1992:18;1974:1001;2037:11;:18;2024:10;:31;1974:1001;;;2106:26;2135:11;2147:10;2135:23;;;;;;;;:::i;:::-;;;;;;;;:30;;;2106:59;;2193:23;2183:33;;;;;;;;:::i;:::-;;:6;:33;;;;;;;;:::i;:::-;;;2179:786;;2236:152;2271:11;2283:10;2271:23;;;;;;;;:::i;:::-;;;;;;;;:36;;;2329:11;2341:10;2329:23;;;;;;;;:::i;:::-;;;;;;;;:41;;;2236:13;:152::i;:::-;2179:786;;;2423:27;2413:37;;;;;;;;:::i;:::-;;:6;:37;;;;;;;;:::i;:::-;;;2409:556;;2470:156;2509:11;2521:10;2509:23;;;;;;;;:::i;:::-;;;;;;;;:36;;;2567:11;2579:10;2567:23;;;;;;;;:::i;:::-;;;;;;;;:41;;;2470:17;:156::i;:::-;2409:556;;;2661:26;2651:36;;;;;;;;:::i;:::-;;:6;:36;;;;;;;;:::i;:::-;;;2647:318;;2707:155;2745:11;2757:10;2745:23;;;;;;;;:::i;:::-;;;;;;;;:36;;;2803:11;2815:10;2803:23;;;;;;;;:::i;:::-;;;;;;;;:41;;;2707:16;:155::i;:::-;2647:318;;;2901:49;;;;;;;;;;:::i;:::-;;;;;;;;2647:318;2409:556;2179:786;2092:883;2069:12;;;;;:::i;:::-;;;;1974:1001;;;;2989:41;3000:11;3013:5;3020:9;2989:41;;;;;;;;:::i;:::-;;;;;;;;3040:39;3062:5;3069:9;3040:21;:39::i;:::-;1836:1250;;;:::o;1320:95:48:-;1379:29;1390:5;1397:10;1379;:29::i;:::-;1320:95;:::o;3092:1306:49:-;3264:1;3236:18;:25;:29;3215:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;3344:24;3371:17;:15;:17::i;:::-;3344:44;;3444:1;3419:27;;:13;:27;;;3398:118;;;;;;;;;;;;:::i;:::-;;;;;;;;;3526:23;3572:1;:24;;:39;3597:13;3572:39;;;;;;;;;;;;;;;:57;;:64;;;;3526:120;;3734:1;3714:16;:21;;;3710:79;;3751:27;3761:1;3764:13;3751:9;:27::i;:::-;3710:79;3816:21;3798:594;3867:18;:25;3851:13;:41;3798:594;;;3946:15;3964:18;3983:13;3964:33;;;;;;;;:::i;:::-;;;;;;;;3946:51;;4011:23;4037:1;:45;;:55;4083:8;4037:55;;;;;;;;;;;;;;;;;:85;;;;;;;;;;;;4011:111;;4188:1;4161:29;;:15;:29;;;4136:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;4291:58;4304:1;4307:8;4317:16;4335:13;4291:12;:58::i;:::-;4363:18;;;;;:::i;:::-;;;;3932:460;;3906:15;;;;;:::i;:::-;;;;3798:594;;;;3205:1193;;3092:1306;;:::o;4404:1375::-;4580:1;4552:18;:25;:29;4531:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;4660:24;4687:17;:15;:17::i;:::-;4660:44;;4760:1;4735:27;;:13;:27;;;4714:118;;;;;;;;;;;;:::i;:::-;;;;;;;;;4842:23;4888:1;:24;;:39;4913:13;4888:39;;;;;;;;;;;;;;;:57;;:64;;;;4842:120;;5050:1;5030:16;:21;;;5026:79;;5067:27;5077:1;5080:13;5067:9;:27::i;:::-;5026:79;5132:21;5114:659;5183:18;:25;5167:13;:41;5114:659;;;5262:15;5280:18;5299:13;5280:33;;;;;;;;:::i;:::-;;;;;;;;5262:51;;5327:23;5353:1;:45;;:55;5399:8;5353:55;;;;;;;;;;;;;;;;;:85;;;;;;;;;;;;5327:111;;5496:13;5477:32;;:15;:32;;;5452:147;;;;;;;;;;;;:::i;:::-;;;;;;;;;5613:45;5629:1;5632:15;5649:8;5613:15;:45::i;:::-;5672:58;5685:1;5688:8;5698:16;5716:13;5672:12;:58::i;:::-;5744:18;;;;;:::i;:::-;;;;5248:525;;5222:15;;;;;:::i;:::-;;;;5114:659;;;;4521:1258;;4404:1375;;:::o;5785:912::-;5960:1;5932:18;:25;:29;5911:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;6040:24;6067:17;:15;:17::i;:::-;6040:44;;6205:1;6180:27;;:13;:27;;;6159:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;6315:21;6297:394;6366:18;:25;6350:13;:41;6297:394;;;6445:15;6463:18;6482:13;6463:33;;;;;;;;:::i;:::-;;;;;;;;6445:51;;6510:23;6536:1;:45;;:55;6582:8;6536:55;;;;;;;;;;;;;;;;;:85;;;;;;;;;;;;6510:111;;6635:45;6651:1;6654:15;6671:8;6635:15;:45::i;:::-;6431:260;;6405:15;;;;;:::i;:::-;;;;6297:394;;;;5901:796;5785:912;;:::o;10140:792::-;10272:1;10255:19;;:5;:19;;;10251:56;10290:7;10251:56;10316:108;10353:5;10316:108;;;;;;;;;;;;;;;;;:23;:108::i;:::-;10435:12;10449:18;10471:5;:18;;10490:9;10471:29;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10434:66;;;;10515:7;10510:416;;10557:1;10542:5;:12;:16;10538:378;;;10724:5;10718:12;10774:15;10766:5;10762:2;10758:14;10751:39;10538:378;10884:5;10891:9;10853:48;;;;;;;;;;;;:::i;:::-;;;;;;;;10510:416;10241:691;;10140:792;;;:::o;1421:491:48:-;1503:25;1512:5;1519:8;1503;:25::i;:::-;1498:408;;1689:42;1717:8;1689:42;;1728:2;1689:19;:42::i;:::-;1802:39;1830:5;1822:14;;1838:2;1802:19;:39::i;:::-;1596:267;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1544:351;;;;;;;;;;;:::i;:::-;;;;;;;;1498:408;1421:491;;:::o;1445:224:49:-;1519:24;1559:16;443:45;1559:43;;1645:8;1635:18;;1621:42;1445:224;:::o;6703:396::-;6812:112;6849:13;6812:112;;;;;;;;;;;;;;;;;:23;:112::i;:::-;6997:1;:29;;:49;;;;6934:1;:24;;:39;6959:13;6934:39;;;;;;;;;;;;;;;:60;;:112;;;;7056:1;:16;;7078:13;7056:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6703:396;;:::o;7105:472::-;7370:17;7277:1;:41;;:52;7319:9;7277:52;;;;;;;;;;;;;;;;;:90;;;:110;;;;;;;;;;;;;;;;;;7397:1;:24;;:39;7422:13;7397:39;;;;;;;;;;;;;;;:57;;7473:9;7397:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7557:13;7502:1;:28;;:39;7531:9;7502:39;;;;;;;;;;;;;;;;;:52;;;:68;;;;;;;;;;;;;;;;;;7105:472;;;;:::o;7583:2551::-;7770:1;7745:27;;:13;:27;;;7724:129;;;;;;;;;;;;:::i;:::-;;;;;;;;;7986:4;7961:30;;:13;:30;;;7940:123;;;;;;;;;;;;:::i;:::-;;;;;;;;;8147:24;8174:1;:41;;:52;8216:9;8174:52;;;;;;;;;;;;;;;;;:90;;;;;;;;;;;;8147:117;;;;8274:28;8411:1;8305;:37;;:52;8343:13;8305:52;;;;;;;;;;;;;;;:83;;:103;;;;:107;;;;:::i;:::-;8274:138;;8514:20;8494:16;:40;8490:490;;8550:19;8572:1;:41;;:56;8614:13;8572:56;;;;;;;;;;;;;;;:91;;8664:20;8572:113;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8550:135;;8815:12;8699:1;:24;;:39;8724:13;8699:39;;;;;;;;;;;;;;;:57;;8778:16;8699:113;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:128;;;;;;;;;;;;;;;;;;8952:16;8841:1;:45;;:59;8887:12;8841:59;;;;;;;;;;;;;;;;;:101;;;:128;;;;;;;;;;;;;;;;;;8536:444;8490:490;9025:1;:24;;:39;9050:13;9025:39;;;;;;;;;;;;;;;:57;;:63;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9105:1;:28;;:39;9134:9;9105:39;;;;;;;;;;;;;;;;;;9098:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9263:1;9239:20;:25;9235:893;;9371:32;9432:1;9406;:16;;:23;;;;:27;;;;:::i;:::-;9371:62;;9447:28;9478:1;:41;;:56;9520:13;9478:56;;;;;;;;;;;;;;;:94;;;9447:125;;9614:24;9590:20;:48;9586:415;;9658:24;9685:1;:16;;9723:24;9685:80;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9658:107;;9824:16;9783:1;:16;;9800:20;9783:38;;;;;;;;:::i;:::-;;;;;;;;;;:57;;;;;;;;;;;;;;;;;;9966:20;9858:1;:45;;:63;9904:16;9858:63;;;;;;;;;;;;;;;:105;;:128;;;;9640:361;9586:415;10014:1;:16;;:22;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;10057:1;:24;;:39;10082:13;10057:39;;;;;;;;;;;;;;;:60;;10050:67;;;9266:862;;9235:893;7714:2420;;7583:2551;;;:::o;10938:284::-;11065:20;11146:9;11134:22;11118:38;;11198:1;11183:12;:16;11201:13;11175:40;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;11055:167;10938:284;;:::o;1134:180:48:-;1230:4;1253:23;:21;:23::i;:::-;:29;;:36;1283:5;1253:36;;;;;;;;;;;:44;;:54;1298:8;1253:54;;;;;;;;;;;;;;;;;;;;;;;;;1246:61;;1134:180;;;;:::o;1513:437:7:-;1588:13;1613:19;1658:1;1649:6;1645:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;1635:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1613:47;;1670:15;:6;1677:1;1670:9;;;;;;;;:::i;:::-;;;;;:15;;;;;;;;;;;1695;:6;1702:1;1695:9;;;;;;;;:::i;:::-;;;;;:15;;;;;;;;;;;1725:9;1750:1;1741:6;1737:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;1725:26;;1720:128;1757:1;1753;:5;1720:128;;;1791:8;1808:3;1800:5;:11;1791:21;;;;;;;:::i;:::-;;;;;1779:6;1786:1;1779:9;;;;;;;;:::i;:::-;;;;;:33;;;;;;;;;;;1836:1;1826:11;;;;;1760:3;;;;:::i;:::-;;;1720:128;;;;1874:1;1865:5;:10;1857:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;1936:6;1922:21;;;1513:437;;;;:::o;791:242:48:-;871:30;917:16;203:29;917:49;;1009:8;999:18;;985:42;791:242;:::o;7:75:61:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:117;566:1;563;556:12;580:117;689:1;686;679:12;733:597;835:8;845:6;895:3;888:4;880:6;876:17;872:27;862:122;;903:79;;:::i;:::-;862:122;1016:6;1003:20;993:30;;1046:18;1038:6;1035:30;1032:117;;;1068:79;;:::i;:::-;1032:117;1182:4;1174:6;1170:17;1158:29;;1236:3;1228:4;1220:6;1216:17;1206:8;1202:32;1199:41;1196:128;;;1243:79;;:::i;:::-;1196:128;733:597;;;;;:::o;1336:126::-;1373:7;1413:42;1406:5;1402:54;1391:65;;1336:126;;;:::o;1468:96::-;1505:7;1534:24;1552:5;1534:24;:::i;:::-;1523:35;;1468:96;;;:::o;1570:122::-;1643:24;1661:5;1643:24;:::i;:::-;1636:5;1633:35;1623:63;;1682:1;1679;1672:12;1623:63;1570:122;:::o;1698:139::-;1744:5;1782:6;1769:20;1760:29;;1798:33;1825:5;1798:33;:::i;:::-;1698:139;;;;:::o;1856:552::-;1913:8;1923:6;1973:3;1966:4;1958:6;1954:17;1950:27;1940:122;;1981:79;;:::i;:::-;1940:122;2094:6;2081:20;2071:30;;2124:18;2116:6;2113:30;2110:117;;;2146:79;;:::i;:::-;2110:117;2260:4;2252:6;2248:17;2236:29;;2314:3;2306:4;2298:6;2294:17;2284:8;2280:32;2277:41;2274:128;;;2321:79;;:::i;:::-;2274:128;1856:552;;;;;:::o;2414:1105::-;2558:6;2566;2574;2582;2590;2639:2;2627:9;2618:7;2614:23;2610:32;2607:119;;;2645:79;;:::i;:::-;2607:119;2793:1;2782:9;2778:17;2765:31;2823:18;2815:6;2812:30;2809:117;;;2845:79;;:::i;:::-;2809:117;2958:109;3059:7;3050:6;3039:9;3035:22;2958:109;:::i;:::-;2940:127;;;;2736:341;3116:2;3142:53;3187:7;3178:6;3167:9;3163:22;3142:53;:::i;:::-;3132:63;;3087:118;3272:2;3261:9;3257:18;3244:32;3303:18;3295:6;3292:30;3289:117;;;3325:79;;:::i;:::-;3289:117;3438:64;3494:7;3485:6;3474:9;3470:22;3438:64;:::i;:::-;3420:82;;;;3215:297;2414:1105;;;;;;;;:::o;3525:169::-;3609:11;3643:6;3638:3;3631:19;3683:4;3678:3;3674:14;3659:29;;3525:169;;;;:::o;3700:165::-;3840:17;3836:1;3828:6;3824:14;3817:41;3700:165;:::o;3871:366::-;4013:3;4034:67;4098:2;4093:3;4034:67;:::i;:::-;4027:74;;4110:93;4199:3;4110:93;:::i;:::-;4228:2;4223:3;4219:12;4212:19;;3871:366;;;:::o;4243:419::-;4409:4;4447:2;4436:9;4432:18;4424:26;;4496:9;4490:4;4486:20;4482:1;4471:9;4467:17;4460:47;4524:131;4650:4;4524:131;:::i;:::-;4516:139;;4243:419;;;:::o;4668:102::-;4709:6;4760:2;4756:7;4751:2;4744:5;4740:14;4736:28;4726:38;;4668:102;;;:::o;4776:180::-;4824:77;4821:1;4814:88;4921:4;4918:1;4911:15;4945:4;4942:1;4935:15;4962:281;5045:27;5067:4;5045:27;:::i;:::-;5037:6;5033:40;5175:6;5163:10;5160:22;5139:18;5127:10;5124:34;5121:62;5118:88;;;5186:18;;:::i;:::-;5118:88;5226:10;5222:2;5215:22;5005:238;4962:281;;:::o;5249:129::-;5283:6;5310:20;;:::i;:::-;5300:30;;5339:33;5367:4;5359:6;5339:33;:::i;:::-;5249:129;;;:::o;5384:338::-;5488:4;5578:18;5570:6;5567:30;5564:56;;;5600:18;;:::i;:::-;5564:56;5650:4;5642:6;5638:17;5630:25;;5710:4;5704;5700:15;5692:23;;5384:338;;;:::o;5728:117::-;5837:1;5834;5827:12;5851:117;5960:1;5957;5950:12;5974:119;6067:1;6060:5;6057:12;6047:40;;6083:1;6080;6073:12;6047:40;5974:119;:::o;6099:179::-;6165:5;6203:6;6190:20;6181:29;;6219:53;6266:5;6219:53;:::i;:::-;6099:179;;;;:::o;6284:310::-;6360:4;6450:18;6442:6;6439:30;6436:56;;;6472:18;;:::i;:::-;6436:56;6522:4;6514:6;6510:17;6502:25;;6582:4;6576;6572:15;6564:23;;6284:310;;;:::o;6600:149::-;6636:7;6676:66;6669:5;6665:78;6654:89;;6600:149;;;:::o;6755:120::-;6827:23;6844:5;6827:23;:::i;:::-;6820:5;6817:34;6807:62;;6865:1;6862;6855:12;6807:62;6755:120;:::o;6881:137::-;6926:5;6964:6;6951:20;6942:29;;6980:32;7006:5;6980:32;:::i;:::-;6881:137;;;;:::o;7040:707::-;7135:5;7160:80;7176:63;7232:6;7176:63;:::i;:::-;7160:80;:::i;:::-;7151:89;;7260:5;7289:6;7282:5;7275:21;7323:4;7316:5;7312:16;7305:23;;7376:4;7368:6;7364:17;7356:6;7352:30;7405:3;7397:6;7394:15;7391:122;;;7424:79;;:::i;:::-;7391:122;7539:6;7522:219;7556:6;7551:3;7548:15;7522:219;;;7631:3;7660:36;7692:3;7680:10;7660:36;:::i;:::-;7655:3;7648:49;7726:4;7721:3;7717:14;7710:21;;7598:143;7582:4;7577:3;7573:14;7566:21;;7522:219;;;7526:21;7141:606;;7040:707;;;;;:::o;7769:368::-;7839:5;7888:3;7881:4;7873:6;7869:17;7865:27;7855:122;;7896:79;;:::i;:::-;7855:122;8013:6;8000:20;8038:93;8127:3;8119:6;8112:4;8104:6;8100:17;8038:93;:::i;:::-;8029:102;;7845:292;7769:368;;;;:::o;8171:964::-;8247:5;8291:4;8279:9;8274:3;8270:19;8266:30;8263:117;;;8299:79;;:::i;:::-;8263:117;8398:21;8414:4;8398:21;:::i;:::-;8389:30;;8486:1;8526:49;8571:3;8562:6;8551:9;8547:22;8526:49;:::i;:::-;8519:4;8512:5;8508:16;8501:75;8429:158;8648:2;8689:69;8754:3;8745:6;8734:9;8730:22;8689:69;:::i;:::-;8682:4;8675:5;8671:16;8664:95;8597:173;8870:2;8859:9;8855:18;8842:32;8901:18;8893:6;8890:30;8887:117;;;8923:79;;:::i;:::-;8887:117;9043:73;9112:3;9103:6;9092:9;9088:22;9043:73;:::i;:::-;9036:4;9029:5;9025:16;9018:99;8780:348;8171:964;;;;:::o;9171:996::-;9294:5;9319:108;9335:91;9419:6;9335:91;:::i;:::-;9319:108;:::i;:::-;9310:117;;9447:5;9476:6;9469:5;9462:21;9510:4;9503:5;9499:16;9492:23;;9563:4;9555:6;9551:17;9543:6;9539:30;9592:3;9584:6;9581:15;9578:122;;;9611:79;;:::i;:::-;9578:122;9726:6;9709:452;9743:6;9738:3;9735:15;9709:452;;;9832:3;9819:17;9868:18;9855:11;9852:35;9849:122;;;9890:79;;:::i;:::-;9849:122;10014:11;10006:6;10002:24;10052:64;10112:3;10100:10;10052:64;:::i;:::-;10047:3;10040:77;10146:4;10141:3;10137:14;10130:21;;9785:376;;9769:4;9764:3;9760:14;9753:21;;9709:452;;;9713:21;9300:867;;9171:996;;;;;:::o;10173:398::-;10345:9;10444:120;10549:14;10541:6;10534:5;10444:120;:::i;:::-;10422:142;;10173:398;;;;:::o;10577:180::-;10625:77;10622:1;10615:88;10722:4;10719:1;10712:15;10746:4;10743:1;10736:15;10763:180;10811:77;10808:1;10801:88;10908:4;10905:1;10898:15;10932:4;10929:1;10922:15;10949:226;11089:34;11085:1;11077:6;11073:14;11066:58;11158:9;11153:2;11145:6;11141:15;11134:34;10949:226;:::o;11181:366::-;11323:3;11344:67;11408:2;11403:3;11344:67;:::i;:::-;11337:74;;11420:93;11509:3;11420:93;:::i;:::-;11538:2;11533:3;11529:12;11522:19;;11181:366;;;:::o;11553:419::-;11719:4;11757:2;11746:9;11742:18;11734:26;;11806:9;11800:4;11796:20;11792:1;11781:9;11777:17;11770:47;11834:131;11960:4;11834:131;:::i;:::-;11826:139;;11553:419;;;:::o;11978:180::-;12026:77;12023:1;12016:88;12123:4;12120:1;12113:15;12147:4;12144:1;12137:15;12164:77;12201:7;12230:5;12219:16;;12164:77;;;:::o;12247:233::-;12286:3;12309:24;12327:5;12309:24;:::i;:::-;12300:33;;12355:66;12348:5;12345:77;12342:103;;12425:18;;:::i;:::-;12342:103;12472:1;12465:5;12461:13;12454:20;;12247:233;;;:::o;12486:141::-;12580:6;12614:5;12608:12;12598:22;;12486:141;;;:::o;12633:211::-;12759:11;12793:6;12788:3;12781:19;12833:4;12828:3;12824:14;12809:29;;12633:211;;;;:::o;12850:159::-;12944:4;12967:3;12959:11;;12997:4;12992:3;12988:14;12980:22;;12850:159;;;:::o;13015:108::-;13092:24;13110:5;13092:24;:::i;:::-;13087:3;13080:37;13015:108;;:::o;13129:125::-;13222:1;13215:5;13212:12;13202:46;;13228:18;;:::i;:::-;13202:46;13129:125;:::o;13260:151::-;13317:7;13346:5;13335:16;;13352:53;13399:5;13352:53;:::i;:::-;13260:151;;;:::o;13417:::-;13485:9;13518:44;13556:5;13518:44;:::i;:::-;13505:57;;13417:151;;;:::o;13574:157::-;13669:55;13718:5;13669:55;:::i;:::-;13664:3;13657:68;13574:157;;:::o;13737:113::-;13803:6;13837:5;13831:12;13821:22;;13737:113;;;:::o;13856:173::-;13944:11;13978:6;13973:3;13966:19;14018:4;14013:3;14009:14;13994:29;;13856:173;;;;:::o;14035:131::-;14101:4;14124:3;14116:11;;14154:4;14149:3;14145:14;14137:22;;14035:131;;;:::o;14172:105::-;14247:23;14264:5;14247:23;:::i;:::-;14242:3;14235:36;14172:105;;:::o;14283:175::-;14350:10;14371:44;14411:3;14403:6;14371:44;:::i;:::-;14447:4;14442:3;14438:14;14424:28;;14283:175;;;;:::o;14464:112::-;14533:4;14565;14560:3;14556:14;14548:22;;14464:112;;;:::o;14610:704::-;14717:3;14746:53;14793:5;14746:53;:::i;:::-;14815:75;14883:6;14878:3;14815:75;:::i;:::-;14808:82;;14914:55;14963:5;14914:55;:::i;:::-;14992:7;15023:1;15008:281;15033:6;15030:1;15027:13;15008:281;;;15109:6;15103:13;15136:61;15193:3;15178:13;15136:61;:::i;:::-;15129:68;;15220:59;15272:6;15220:59;:::i;:::-;15210:69;;15068:221;15055:1;15052;15048:9;15043:14;;15008:281;;;15012:14;15305:3;15298:10;;14722:592;;;14610:704;;;;:::o;15372:843::-;15485:3;15521:4;15516:3;15512:14;15616:4;15609:5;15605:16;15599:23;15635:63;15692:4;15687:3;15683:14;15669:12;15635:63;:::i;:::-;15536:172;15792:4;15785:5;15781:16;15775:23;15811:81;15886:4;15881:3;15877:14;15863:12;15811:81;:::i;:::-;15718:184;15997:4;15990:5;15986:16;15980:23;16050:3;16044:4;16040:14;16033:4;16028:3;16024:14;16017:38;16076:101;16172:4;16158:12;16076:101;:::i;:::-;16068:109;;15912:276;16205:4;16198:11;;15490:725;15372:843;;;;:::o;16221:264::-;16344:10;16379:100;16475:3;16467:6;16379:100;:::i;:::-;16365:114;;16221:264;;;;:::o;16491:140::-;16588:4;16620;16615:3;16611:14;16603:22;;16491:140;;;:::o;16693:1127::-;16866:3;16895:81;16970:5;16895:81;:::i;:::-;16992:113;17098:6;17093:3;16992:113;:::i;:::-;16985:120;;17131:3;17176:4;17168:6;17164:17;17159:3;17155:27;17206:83;17283:5;17206:83;:::i;:::-;17312:7;17343:1;17328:447;17353:6;17350:1;17347:13;17328:447;;;17424:9;17418:4;17414:20;17409:3;17402:33;17475:6;17469:13;17503:118;17616:4;17601:13;17503:118;:::i;:::-;17495:126;;17644:87;17724:6;17644:87;:::i;:::-;17634:97;;17760:4;17755:3;17751:14;17744:21;;17388:387;17375:1;17372;17368:9;17363:14;;17328:447;;;17332:14;17791:4;17784:11;;17811:3;17804:10;;16871:949;;;;;16693:1127;;;;:::o;17826:118::-;17913:24;17931:5;17913:24;:::i;:::-;17908:3;17901:37;17826:118;;:::o;17950:98::-;18001:6;18035:5;18029:12;18019:22;;17950:98;;;:::o;18054:168::-;18137:11;18171:6;18166:3;18159:19;18211:4;18206:3;18202:14;18187:29;;18054:168;;;;:::o;18228:246::-;18309:1;18319:113;18333:6;18330:1;18327:13;18319:113;;;18418:1;18413:3;18409:11;18403:18;18399:1;18394:3;18390:11;18383:39;18355:2;18352:1;18348:10;18343:15;;18319:113;;;18466:1;18457:6;18452:3;18448:16;18441:27;18290:184;18228:246;;;:::o;18480:373::-;18566:3;18594:38;18626:5;18594:38;:::i;:::-;18648:70;18711:6;18706:3;18648:70;:::i;:::-;18641:77;;18727:65;18785:6;18780:3;18773:4;18766:5;18762:16;18727:65;:::i;:::-;18817:29;18839:6;18817:29;:::i;:::-;18812:3;18808:39;18801:46;;18570:283;18480:373;;;;:::o;18859:788::-;19130:4;19168:2;19157:9;19153:18;19145:26;;19217:9;19211:4;19207:20;19203:1;19192:9;19188:17;19181:47;19245:162;19402:4;19393:6;19245:162;:::i;:::-;19237:170;;19417:72;19485:2;19474:9;19470:18;19461:6;19417:72;:::i;:::-;19536:9;19530:4;19526:20;19521:2;19510:9;19506:18;19499:48;19564:76;19635:4;19626:6;19564:76;:::i;:::-;19556:84;;18859:788;;;;;;:::o;19653:230::-;19793:34;19789:1;19781:6;19777:14;19770:58;19862:13;19857:2;19849:6;19845:15;19838:38;19653:230;:::o;19889:366::-;20031:3;20052:67;20116:2;20111:3;20052:67;:::i;:::-;20045:74;;20128:93;20217:3;20128:93;:::i;:::-;20246:2;20241:3;20237:12;20230:19;;19889:366;;;:::o;20261:419::-;20427:4;20465:2;20454:9;20450:18;20442:26;;20514:9;20508:4;20504:20;20500:1;20489:9;20485:17;20478:47;20542:131;20668:4;20542:131;:::i;:::-;20534:139;;20261:419;;;:::o;20686:231::-;20826:34;20822:1;20814:6;20810:14;20803:58;20895:14;20890:2;20882:6;20878:15;20871:39;20686:231;:::o;20923:366::-;21065:3;21086:67;21150:2;21145:3;21086:67;:::i;:::-;21079:74;;21162:93;21251:3;21162:93;:::i;:::-;21280:2;21275:3;21271:12;21264:19;;20923:366;;;:::o;21295:419::-;21461:4;21499:2;21488:9;21484:18;21476:26;;21548:9;21542:4;21538:20;21534:1;21523:9;21519:17;21512:47;21576:131;21702:4;21576:131;:::i;:::-;21568:139;;21295:419;;;:::o;21720:240::-;21860:34;21856:1;21848:6;21844:14;21837:58;21929:23;21924:2;21916:6;21912:15;21905:48;21720:240;:::o;21966:366::-;22108:3;22129:67;22193:2;22188:3;22129:67;:::i;:::-;22122:74;;22205:93;22294:3;22205:93;:::i;:::-;22323:2;22318:3;22314:12;22307:19;;21966:366;;;:::o;22338:419::-;22504:4;22542:2;22531:9;22527:18;22519:26;;22591:9;22585:4;22581:20;22577:1;22566:9;22562:17;22555:47;22619:131;22745:4;22619:131;:::i;:::-;22611:139;;22338:419;;;:::o;22763:109::-;22799:7;22839:26;22832:5;22828:38;22817:49;;22763:109;;;:::o;22878:191::-;22916:3;22939:23;22956:5;22939:23;:::i;:::-;22930:32;;22984:26;22977:5;22974:37;22971:63;;23014:18;;:::i;:::-;22971:63;23061:1;23054:5;23050:13;23043:20;;22878:191;;;:::o;23075:243::-;23215:34;23211:1;23203:6;23199:14;23192:58;23284:26;23279:2;23271:6;23267:15;23260:51;23075:243;:::o;23324:366::-;23466:3;23487:67;23551:2;23546:3;23487:67;:::i;:::-;23480:74;;23563:93;23652:3;23563:93;:::i;:::-;23681:2;23676:3;23672:12;23665:19;;23324:366;;;:::o;23696:419::-;23862:4;23900:2;23889:9;23885:18;23877:26;;23949:9;23943:4;23939:20;23935:1;23924:9;23920:17;23913:47;23977:131;24103:4;23977:131;:::i;:::-;23969:139;;23696:419;;;:::o;24121:241::-;24261:34;24257:1;24249:6;24245:14;24238:58;24330:24;24325:2;24317:6;24313:15;24306:49;24121:241;:::o;24368:366::-;24510:3;24531:67;24595:2;24590:3;24531:67;:::i;:::-;24524:74;;24607:93;24696:3;24607:93;:::i;:::-;24725:2;24720:3;24716:12;24709:19;;24368:366;;;:::o;24740:419::-;24906:4;24944:2;24933:9;24929:18;24921:26;;24993:9;24987:4;24983:20;24979:1;24968:9;24964:17;24957:47;25021:131;25147:4;25021:131;:::i;:::-;25013:139;;24740:419;;;:::o;25165:147::-;25266:11;25303:3;25288:18;;25165:147;;;;:::o;25318:386::-;25422:3;25450:38;25482:5;25450:38;:::i;:::-;25504:88;25585:6;25580:3;25504:88;:::i;:::-;25497:95;;25601:65;25659:6;25654:3;25647:4;25640:5;25636:16;25601:65;:::i;:::-;25691:6;25686:3;25682:16;25675:23;;25426:278;25318:386;;;;:::o;25710:271::-;25840:3;25862:93;25951:3;25942:6;25862:93;:::i;:::-;25855:100;;25972:3;25965:10;;25710:271;;;;:::o;25987:419::-;26126:4;26164:2;26153:9;26149:18;26141:26;;26177:71;26245:1;26234:9;26230:17;26221:6;26177:71;:::i;:::-;26295:9;26289:4;26285:20;26280:2;26269:9;26265:18;26258:48;26323:76;26394:4;26385:6;26323:76;:::i;:::-;26315:84;;25987:419;;;;;:::o;26412:148::-;26514:11;26551:3;26536:18;;26412:148;;;;:::o;26566:173::-;26706:25;26702:1;26694:6;26690:14;26683:49;26566:173;:::o;26745:402::-;26905:3;26926:85;27008:2;27003:3;26926:85;:::i;:::-;26919:92;;27020:93;27109:3;27020:93;:::i;:::-;27138:2;27133:3;27129:12;27122:19;;26745:402;;;:::o;27153:99::-;27205:6;27239:5;27233:12;27223:22;;27153:99;;;:::o;27258:390::-;27364:3;27392:39;27425:5;27392:39;:::i;:::-;27447:89;27529:6;27524:3;27447:89;:::i;:::-;27440:96;;27545:65;27603:6;27598:3;27591:4;27584:5;27580:16;27545:65;:::i;:::-;27635:6;27630:3;27626:16;27619:23;;27368:280;27258:390;;;;:::o;27654:167::-;27794:19;27790:1;27782:6;27778:14;27771:43;27654:167;:::o;27827:402::-;27987:3;28008:85;28090:2;28085:3;28008:85;:::i;:::-;28001:92;;28102:93;28191:3;28102:93;:::i;:::-;28220:2;28215:3;28211:12;28204:19;;27827:402;;;:::o;28235:967::-;28617:3;28639:148;28783:3;28639:148;:::i;:::-;28632:155;;28804:95;28895:3;28886:6;28804:95;:::i;:::-;28797:102;;28916:148;29060:3;28916:148;:::i;:::-;28909:155;;29081:95;29172:3;29163:6;29081:95;:::i;:::-;29074:102;;29193:3;29186:10;;28235:967;;;;;:::o;29208:377::-;29296:3;29324:39;29357:5;29324:39;:::i;:::-;29379:71;29443:6;29438:3;29379:71;:::i;:::-;29372:78;;29459:65;29517:6;29512:3;29505:4;29498:5;29494:16;29459:65;:::i;:::-;29549:29;29571:6;29549:29;:::i;:::-;29544:3;29540:39;29533:46;;29300:285;29208:377;;;;:::o;29591:313::-;29704:4;29742:2;29731:9;29727:18;29719:26;;29791:9;29785:4;29781:20;29777:1;29766:9;29762:17;29755:47;29819:78;29892:4;29883:6;29819:78;:::i;:::-;29811:86;;29591:313;;;;:::o;29910:242::-;30050:34;30046:1;30038:6;30034:14;30027:58;30119:25;30114:2;30106:6;30102:15;30095:50;29910:242;:::o;30158:366::-;30300:3;30321:67;30385:2;30380:3;30321:67;:::i;:::-;30314:74;;30397:93;30486:3;30397:93;:::i;:::-;30515:2;30510:3;30506:12;30499:19;;30158:366;;;:::o;30530:419::-;30696:4;30734:2;30723:9;30719:18;30711:26;;30783:9;30777:4;30773:20;30769:1;30758:9;30754:17;30747:47;30811:131;30937:4;30811:131;:::i;:::-;30803:139;;30530:419;;;:::o;30955:233::-;31095:34;31091:1;31083:6;31079:14;31072:58;31164:16;31159:2;31151:6;31147:15;31140:41;30955:233;:::o;31194:366::-;31336:3;31357:67;31421:2;31416:3;31357:67;:::i;:::-;31350:74;;31433:93;31522:3;31433:93;:::i;:::-;31551:2;31546:3;31542:12;31535:19;;31194:366;;;:::o;31566:419::-;31732:4;31770:2;31759:9;31755:18;31747:26;;31819:9;31813:4;31809:20;31805:1;31794:9;31790:17;31783:47;31847:131;31973:4;31847:131;:::i;:::-;31839:139;;31566:419;;;:::o;31991:194::-;32031:4;32051:20;32069:1;32051:20;:::i;:::-;32046:25;;32085:20;32103:1;32085:20;:::i;:::-;32080:25;;32129:1;32126;32122:9;32114:17;;32153:1;32147:4;32144:11;32141:37;;;32158:18;;:::i;:::-;32141:37;31991:194;;;;:::o;32191:180::-;32239:77;32236:1;32229:88;32336:4;32333:1;32326:15;32360:4;32357:1;32350:15;32377:410;32417:7;32440:20;32458:1;32440:20;:::i;:::-;32435:25;;32474:20;32492:1;32474:20;:::i;:::-;32469:25;;32529:1;32526;32522:9;32551:30;32569:11;32551:30;:::i;:::-;32540:41;;32730:1;32721:7;32717:15;32714:1;32711:22;32691:1;32684:9;32664:83;32641:139;;32760:18;;:::i;:::-;32641:139;32425:362;32377:410;;;;:::o;32793:191::-;32833:3;32852:20;32870:1;32852:20;:::i;:::-;32847:25;;32886:20;32904:1;32886:20;:::i;:::-;32881:25;;32929:1;32926;32922:9;32915:16;;32950:3;32947:1;32944:10;32941:36;;;32957:18;;:::i;:::-;32941:36;32793:191;;;;:::o;32990:171::-;33029:3;33052:24;33070:5;33052:24;:::i;:::-;33043:33;;33098:4;33091:5;33088:15;33085:41;;33106:18;;:::i;:::-;33085:41;33153:1;33146:5;33142:13;33135:20;;32990:171;;;:::o;33167:182::-;33307:34;33303:1;33295:6;33291:14;33284:58;33167:182;:::o;33355:366::-;33497:3;33518:67;33582:2;33577:3;33518:67;:::i;:::-;33511:74;;33594:93;33683:3;33594:93;:::i;:::-;33712:2;33707:3;33703:12;33696:19;;33355:366;;;:::o;33727:419::-;33893:4;33931:2;33920:9;33916:18;33908:26;;33980:9;33974:4;33970:20;33966:1;33955:9;33951:17;33944:47;34008:131;34134:4;34008:131;:::i;:::-;34000:139;;33727:419;;;:::o"},"methodIdentifiers":{"diamondCut((address,uint8,bytes4[])[],address,bytes)":"1f931c1c"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_initializationContractAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_calldata\",\"type\":\"bytes\"}],\"name\":\"InitializationFunctionReverted\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"facetAddress\",\"type\":\"address\"},{\"internalType\":\"enum ICut.FacetCutAction\",\"name\":\"action\",\"type\":\"uint8\"},{\"internalType\":\"bytes4[]\",\"name\":\"functionSelectors\",\"type\":\"bytes4[]\"}],\"indexed\":false,\"internalType\":\"struct ICut.FacetCut[]\",\"name\":\"_diamondCut\",\"type\":\"tuple[]\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_init\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_calldata\",\"type\":\"bytes\"}],\"name\":\"DiamondCut\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"facetAddress\",\"type\":\"address\"},{\"internalType\":\"enum ICut.FacetCutAction\",\"name\":\"action\",\"type\":\"uint8\"},{\"internalType\":\"bytes4[]\",\"name\":\"functionSelectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct ICut.FacetCut[]\",\"name\":\"_diamondCut\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"_init\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_calldata\",\"type\":\"bytes\"}],\"name\":\"diamondCut\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"diamondCut((address,uint8,bytes4[])[],address,bytes)\":{\"params\":{\"_calldata\":\"A function call, including function selector and arguments _calldata is executed with delegatecall on _init\",\"_diamondCut\":\"Contains the facet addresses and function selectors\",\"_init\":\"The address of the contract or facet to execute _calldata\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"diamondCut((address,uint8,bytes4[])[],address,bytes)\":{\"notice\":\"Add/replace/remove any number of functions and optionally execute a function with delegatecall\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/facets/utils/Cut.sol\":\"Cut\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xa4d1d62251f8574deb032a35fc948386a9b4de74b812d4f545a1ac120486b48a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c969013129ba9e651a20735ef659fef6d8a1139ea3607bd4b26ddea2d645634\",\"dweb:/ipfs/QmVhVa6LGuzAcB8qgDtVHRkucn4ihj5UZr8xBLcJkP6ucb\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa1e8e83cd0087785df04ac79fb395d9f3684caeaf973d9e2c71caef723a3a5d6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33bbf48cc069be677705037ba7520c22b1b622c23b33e1a71495f2d36549d40b\",\"dweb:/ipfs/Qmct36zWXv3j7LZB83uwbg7TXwnZSN1fqHNDZ93GG98bGz\"]},\"contracts/facets/utils/Cut.sol\":{\"keccak256\":\"0xa4bc0fe2b05e195c315926cc96277fa20cd0fd0523d0772a71e6311706ba7c3f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://96caee6f4e7a2898004d40b7560a176a37bd888e0a75f35bcdc9e71408e87aee\",\"dweb:/ipfs/QmbqyjpyZ91Pqwc2JFB6sbeu861ixeDGPwAJgonHfvPoif\"]},\"contracts/interfaces/utils/ICut.sol\":{\"keccak256\":\"0xeaf211b0c9da3a46171250f7cf949ffc171447c36b68451013d00a530281790a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1de62f56aba981f3430068a960272e56cbfece148d15861e410bd89f40a0f52d\",\"dweb:/ipfs/QmRw5Wrtm1NRBrnUxyKspheunoGarnkCmEYG2AFZpPeo5x\"]},\"contracts/libraries/utils/LibAccessControl.sol\":{\"keccak256\":\"0xebec727abd5564cc66e0b402d9ceb87168e19d73bd4853b034944b61a420f912\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://5390c191313856ad3f5d863b71d8a9d29a793c73cc6fecd9ef41abff262131a2\",\"dweb:/ipfs/QmUK83c2nwSR1L8M2rADMkJtsaBkADhYN2W3xuoxaQ2eC9\"]},\"contracts/libraries/utils/LibDiamond.sol\":{\"keccak256\":\"0x79254e503c12329739379fe3900cf174268bfe2c65cf5b7c1396b17783939834\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d405043f0b78b814d17fb721b476d2ab7a9d5a0c6065f6ecd0d4007c43e6b9fe\",\"dweb:/ipfs/QmPEsvxHnZKp84ww7WnQKjGo89eiVzXxcgdGxmMCcWbkZE\"]}},\"version\":1}"}},"contracts/facets/utils/Loupe.sol":{"Loupe":{"abi":[{"inputs":[{"internalType":"bytes4","name":"_functionSelector","type":"bytes4"}],"name":"facetAddress","outputs":[{"internalType":"address","name":"facetAddress_","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"facetAddresses","outputs":[{"internalType":"address[]","name":"facetAddresses_","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_facet","type":"address"}],"name":"facetFunctionSelectors","outputs":[{"internalType":"bytes4[]","name":"facetFunctionSelectors_","type":"bytes4[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"facets","outputs":[{"components":[{"internalType":"address","name":"facetAddress","type":"address"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"internalType":"struct ILoupe.Facet[]","name":"facets_","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50610c0c806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c806301ffc9a71461005c57806352ef6b2c1461008c5780637a0ed627146100aa578063adfca15e146100c8578063cdffacc6146100f8575b600080fd5b6100766004803603810190610071919061068f565b610128565b60405161008391906106d7565b60405180910390f35b61009461019e565b6040516100a191906107e2565b60405180910390f35b6100b261023b565b6040516100bf91906109c1565b60405180910390f35b6100e260048036038101906100dd9190610a0f565b61045e565b6040516100ef9190610aab565b60405180910390f35b610112600480360381019061010d919061068f565b610549565b60405161011f9190610adc565b60405180910390f35b6000806101336105d5565b9050806003016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff16915050919050565b606060006101aa6105d5565b90508060020180548060200260200160405190810160405280929190818152602001828054801561023057602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116101e6575b505050505091505090565b606060006102476105d5565b90506000816002018054905090508067ffffffffffffffff81111561026f5761026e610af7565b5b6040519080825280602002602001820160405280156102a857816020015b610295610602565b81526020019060019003908161028d5790505b50925060005b818110156104585760008360020182815481106102ce576102cd610b26565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508085838151811061030f5761030e610b26565b5b60200260200101516000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508360010160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000180548060200260200160405190810160405280929190818152602001828054801561041d57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116103ca5790505b505050505085838151811061043557610434610b26565b5b60200260200101516020018190525050808061045090610b8e565b9150506102ae565b50505090565b6060600061046a6105d5565b90508060010160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000180548060200260200160405190810160405280929190818152602001828054801561053c57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116104e95790505b5050505050915050919050565b6000806105546105d5565b9050806000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915050919050565b6000807fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90508091505090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61066c81610637565b811461067757600080fd5b50565b60008135905061068981610663565b92915050565b6000602082840312156106a5576106a4610632565b5b60006106b38482850161067a565b91505092915050565b60008115159050919050565b6106d1816106bc565b82525050565b60006020820190506106ec60008301846106c8565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006107498261071e565b9050919050565b6107598161073e565b82525050565b600061076b8383610750565b60208301905092915050565b6000602082019050919050565b600061078f826106f2565b61079981856106fd565b93506107a48361070e565b8060005b838110156107d55781516107bc888261075f565b97506107c783610777565b9250506001810190506107a8565b5085935050505092915050565b600060208201905081810360008301526107fc8184610784565b905092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61086581610637565b82525050565b6000610877838361085c565b60208301905092915050565b6000602082019050919050565b600061089b82610830565b6108a5818561083b565b93506108b08361084c565b8060005b838110156108e15781516108c8888261086b565b97506108d383610883565b9250506001810190506108b4565b5085935050505092915050565b60006040830160008301516109066000860182610750565b506020830151848203602086015261091e8282610890565b9150508091505092915050565b600061093783836108ee565b905092915050565b6000602082019050919050565b600061095782610804565b610961818561080f565b93508360208202850161097385610820565b8060005b858110156109af5784840389528151610990858261092b565b945061099b8361093f565b925060208a01995050600181019050610977565b50829750879550505050505092915050565b600060208201905081810360008301526109db818461094c565b905092915050565b6109ec8161073e565b81146109f757600080fd5b50565b600081359050610a09816109e3565b92915050565b600060208284031215610a2557610a24610632565b5b6000610a33848285016109fa565b91505092915050565b600082825260208201905092915050565b6000610a5882610830565b610a628185610a3c565b9350610a6d8361084c565b8060005b83811015610a9e578151610a85888261086b565b9750610a9083610883565b925050600181019050610a71565b5085935050505092915050565b60006020820190508181036000830152610ac58184610a4d565b905092915050565b610ad68161073e565b82525050565b6000602082019050610af16000830184610acd565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000819050919050565b6000610b9982610b84565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610bcb57610bca610b55565b5b60018201905091905056fea2646970667358221220805c03d17666dad7df5b576a9739aec3ff4e9c57502765e60e3dea1b8433247b64736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC0C DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x57 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x5C JUMPI DUP1 PUSH4 0x52EF6B2C EQ PUSH2 0x8C JUMPI DUP1 PUSH4 0x7A0ED627 EQ PUSH2 0xAA JUMPI DUP1 PUSH4 0xADFCA15E EQ PUSH2 0xC8 JUMPI DUP1 PUSH4 0xCDFFACC6 EQ PUSH2 0xF8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x76 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x71 SWAP2 SWAP1 PUSH2 0x68F JUMP JUMPDEST PUSH2 0x128 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x83 SWAP2 SWAP1 PUSH2 0x6D7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x94 PUSH2 0x19E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA1 SWAP2 SWAP1 PUSH2 0x7E2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xB2 PUSH2 0x23B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xBF SWAP2 SWAP1 PUSH2 0x9C1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xE2 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xDD SWAP2 SWAP1 PUSH2 0xA0F JUMP JUMPDEST PUSH2 0x45E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xEF SWAP2 SWAP1 PUSH2 0xAAB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x112 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x10D SWAP2 SWAP1 PUSH2 0x68F JUMP JUMPDEST PUSH2 0x549 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11F SWAP2 SWAP1 PUSH2 0xADC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x133 PUSH2 0x5D5 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x3 ADD PUSH1 0x0 DUP5 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x1AA PUSH2 0x5D5 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x2 ADD DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x230 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH2 0x1E6 JUMPI JUMPDEST POP POP POP POP POP SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x247 PUSH2 0x5D5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x2 ADD DUP1 SLOAD SWAP1 POP SWAP1 POP DUP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x26F JUMPI PUSH2 0x26E PUSH2 0xAF7 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2A8 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x295 PUSH2 0x602 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x28D JUMPI SWAP1 POP JUMPDEST POP SWAP3 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x458 JUMPI PUSH1 0x0 DUP4 PUSH1 0x2 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x2CE JUMPI PUSH2 0x2CD PUSH2 0xB26 JUMP JUMPDEST JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP1 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x30F JUMPI PUSH2 0x30E PUSH2 0xB26 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP DUP4 PUSH1 0x1 ADD PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x41D JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xE0 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x4 ADD SWAP1 PUSH1 0x20 DUP3 PUSH1 0x3 ADD DIV SWAP3 DUP4 ADD SWAP3 PUSH1 0x1 SUB DUP3 MUL SWAP2 POP DUP1 DUP5 GT PUSH2 0x3CA JUMPI SWAP1 POP JUMPDEST POP POP POP POP POP DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x435 JUMPI PUSH2 0x434 PUSH2 0xB26 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD DUP2 SWAP1 MSTORE POP POP DUP1 DUP1 PUSH2 0x450 SWAP1 PUSH2 0xB8E JUMP JUMPDEST SWAP2 POP POP PUSH2 0x2AE JUMP JUMPDEST POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x46A PUSH2 0x5D5 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 ADD PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x53C JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xE0 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x4 ADD SWAP1 PUSH1 0x20 DUP3 PUSH1 0x3 ADD DIV SWAP3 DUP4 ADD SWAP3 PUSH1 0x1 SUB DUP3 MUL SWAP2 POP DUP1 DUP5 GT PUSH2 0x4E9 JUMPI SWAP1 POP JUMPDEST POP POP POP POP POP SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x554 PUSH2 0x5D5 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x0 ADD PUSH1 0x0 DUP5 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131C SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x66C DUP2 PUSH2 0x637 JUMP JUMPDEST DUP2 EQ PUSH2 0x677 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x689 DUP2 PUSH2 0x663 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6A5 JUMPI PUSH2 0x6A4 PUSH2 0x632 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x6B3 DUP5 DUP3 DUP6 ADD PUSH2 0x67A JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x6D1 DUP2 PUSH2 0x6BC JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x6EC PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x6C8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x749 DUP3 PUSH2 0x71E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x759 DUP2 PUSH2 0x73E JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x76B DUP4 DUP4 PUSH2 0x750 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x78F DUP3 PUSH2 0x6F2 JUMP JUMPDEST PUSH2 0x799 DUP2 DUP6 PUSH2 0x6FD JUMP JUMPDEST SWAP4 POP PUSH2 0x7A4 DUP4 PUSH2 0x70E JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x7D5 JUMPI DUP2 MLOAD PUSH2 0x7BC DUP9 DUP3 PUSH2 0x75F JUMP JUMPDEST SWAP8 POP PUSH2 0x7C7 DUP4 PUSH2 0x777 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x7A8 JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x7FC DUP2 DUP5 PUSH2 0x784 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x865 DUP2 PUSH2 0x637 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x877 DUP4 DUP4 PUSH2 0x85C JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x89B DUP3 PUSH2 0x830 JUMP JUMPDEST PUSH2 0x8A5 DUP2 DUP6 PUSH2 0x83B JUMP JUMPDEST SWAP4 POP PUSH2 0x8B0 DUP4 PUSH2 0x84C JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x8E1 JUMPI DUP2 MLOAD PUSH2 0x8C8 DUP9 DUP3 PUSH2 0x86B JUMP JUMPDEST SWAP8 POP PUSH2 0x8D3 DUP4 PUSH2 0x883 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x8B4 JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP4 ADD PUSH1 0x0 DUP4 ADD MLOAD PUSH2 0x906 PUSH1 0x0 DUP7 ADD DUP3 PUSH2 0x750 JUMP JUMPDEST POP PUSH1 0x20 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH1 0x20 DUP7 ADD MSTORE PUSH2 0x91E DUP3 DUP3 PUSH2 0x890 JUMP JUMPDEST SWAP2 POP POP DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x937 DUP4 DUP4 PUSH2 0x8EE JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x957 DUP3 PUSH2 0x804 JUMP JUMPDEST PUSH2 0x961 DUP2 DUP6 PUSH2 0x80F JUMP JUMPDEST SWAP4 POP DUP4 PUSH1 0x20 DUP3 MUL DUP6 ADD PUSH2 0x973 DUP6 PUSH2 0x820 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x9AF JUMPI DUP5 DUP5 SUB DUP10 MSTORE DUP2 MLOAD PUSH2 0x990 DUP6 DUP3 PUSH2 0x92B JUMP JUMPDEST SWAP5 POP PUSH2 0x99B DUP4 PUSH2 0x93F JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP11 ADD SWAP10 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x977 JUMP JUMPDEST POP DUP3 SWAP8 POP DUP8 SWAP6 POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x9DB DUP2 DUP5 PUSH2 0x94C JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x9EC DUP2 PUSH2 0x73E JUMP JUMPDEST DUP2 EQ PUSH2 0x9F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xA09 DUP2 PUSH2 0x9E3 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA25 JUMPI PUSH2 0xA24 PUSH2 0x632 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xA33 DUP5 DUP3 DUP6 ADD PUSH2 0x9FA JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA58 DUP3 PUSH2 0x830 JUMP JUMPDEST PUSH2 0xA62 DUP2 DUP6 PUSH2 0xA3C JUMP JUMPDEST SWAP4 POP PUSH2 0xA6D DUP4 PUSH2 0x84C JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA9E JUMPI DUP2 MLOAD PUSH2 0xA85 DUP9 DUP3 PUSH2 0x86B JUMP JUMPDEST SWAP8 POP PUSH2 0xA90 DUP4 PUSH2 0x883 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0xA71 JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xAC5 DUP2 DUP5 PUSH2 0xA4D JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xAD6 DUP2 PUSH2 0x73E JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xAF1 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xACD JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB99 DUP3 PUSH2 0xB84 JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0xBCB JUMPI PUSH2 0xBCA PUSH2 0xB55 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP1 0x5C SUB 0xD1 PUSH23 0x66DAD7DF5B576A9739AEC3FF4E9C57502765E60E3DEA1B DUP5 CALLER 0x24 PUSH28 0x64736F6C634300081200330000000000000000000000000000000000 ","sourceMap":"367:2622:31:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_storageDiamond_15535":{"entryPoint":1493,"id":15535,"parameterSlots":0,"returnSlots":1},"@facetAddress_11230":{"entryPoint":1353,"id":11230,"parameterSlots":1,"returnSlots":1},"@facetAddresses_11203":{"entryPoint":414,"id":11203,"parameterSlots":0,"returnSlots":1},"@facetFunctionSelectors_11180":{"entryPoint":1118,"id":11180,"parameterSlots":1,"returnSlots":1},"@facets_11152":{"entryPoint":571,"id":11152,"parameterSlots":0,"returnSlots":1},"@supportsInterface_11253":{"entryPoint":296,"id":11253,"parameterSlots":1,"returnSlots":1},"abi_decode_t_address":{"entryPoint":2554,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_bytes4":{"entryPoint":1658,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":2575,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4":{"entryPoint":1679,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_t_address_to_t_address":{"entryPoint":1887,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_t_bytes4_to_t_bytes4":{"entryPoint":2155,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encodeUpdatedPos_t_struct$_Facet_$11859_memory_ptr_to_t_struct$_Facet_$11859_memory_ptr":{"entryPoint":2347,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_address_to_t_address":{"entryPoint":1872,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_address_to_t_address_fromStack":{"entryPoint":2765,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_array$_t_address_$dyn_memory_ptr_to_t_array$_t_address_$dyn_memory_ptr_fromStack":{"entryPoint":1924,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_array$_t_bytes4_$dyn_memory_ptr_to_t_array$_t_bytes4_$dyn_memory_ptr":{"entryPoint":2192,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_array$_t_bytes4_$dyn_memory_ptr_to_t_array$_t_bytes4_$dyn_memory_ptr_fromStack":{"entryPoint":2637,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_array$_t_struct$_Facet_$11859_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_Facet_$11859_memory_ptr_$dyn_memory_ptr_fromStack":{"entryPoint":2380,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_bool_to_t_bool_fromStack":{"entryPoint":1736,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_bytes4_to_t_bytes4":{"entryPoint":2140,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_t_struct$_Facet_$11859_memory_ptr_to_t_struct$_Facet_$11859_memory_ptr":{"entryPoint":2286,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":2780,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":2018,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_bytes4_$dyn_memory_ptr__to_t_array$_t_bytes4_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":2731,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_array$_t_struct$_Facet_$11859_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_Facet_$11859_memory_ptr_$dyn_memory_ptr__fromStack_reversed":{"entryPoint":2497,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":1751,"id":null,"parameterSlots":2,"returnSlots":1},"allocate_unbounded":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"array_dataslot_t_array$_t_address_$dyn_memory_ptr":{"entryPoint":1806,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_t_array$_t_bytes4_$dyn_memory_ptr":{"entryPoint":2124,"id":null,"parameterSlots":1,"returnSlots":1},"array_dataslot_t_array$_t_struct$_Facet_$11859_memory_ptr_$dyn_memory_ptr":{"entryPoint":2080,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_array$_t_address_$dyn_memory_ptr":{"entryPoint":1778,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_array$_t_bytes4_$dyn_memory_ptr":{"entryPoint":2096,"id":null,"parameterSlots":1,"returnSlots":1},"array_length_t_array$_t_struct$_Facet_$11859_memory_ptr_$dyn_memory_ptr":{"entryPoint":2052,"id":null,"parameterSlots":1,"returnSlots":1},"array_nextElement_t_array$_t_address_$dyn_memory_ptr":{"entryPoint":1911,"id":null,"parameterSlots":1,"returnSlots":1},"array_nextElement_t_array$_t_bytes4_$dyn_memory_ptr":{"entryPoint":2179,"id":null,"parameterSlots":1,"returnSlots":1},"array_nextElement_t_array$_t_struct$_Facet_$11859_memory_ptr_$dyn_memory_ptr":{"entryPoint":2367,"id":null,"parameterSlots":1,"returnSlots":1},"array_storeLengthForEncoding_t_array$_t_address_$dyn_memory_ptr_fromStack":{"entryPoint":1789,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_array$_t_bytes4_$dyn_memory_ptr":{"entryPoint":2107,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_array$_t_bytes4_$dyn_memory_ptr_fromStack":{"entryPoint":2620,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_array$_t_struct$_Facet_$11859_memory_ptr_$dyn_memory_ptr_fromStack":{"entryPoint":2063,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_t_address":{"entryPoint":1854,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_bool":{"entryPoint":1724,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_bytes4":{"entryPoint":1591,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint160":{"entryPoint":1822,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint256":{"entryPoint":2948,"id":null,"parameterSlots":1,"returnSlots":1},"increment_t_uint256":{"entryPoint":2958,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":2901,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":2854,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":2807,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":1586,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_t_address":{"entryPoint":2531,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_bytes4":{"entryPoint":1635,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:11765:61","statements":[{"body":{"nodeType":"YulBlock","src":"47:35:61","statements":[{"nodeType":"YulAssignment","src":"57:19:61","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"73:2:61","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"67:5:61"},"nodeType":"YulFunctionCall","src":"67:9:61"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"57:6:61"}]}]},"name":"allocate_unbounded","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"40:6:61","type":""}],"src":"7:75:61"},{"body":{"nodeType":"YulBlock","src":"177:28:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"194:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"197:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"187:6:61"},"nodeType":"YulFunctionCall","src":"187:12:61"},"nodeType":"YulExpressionStatement","src":"187:12:61"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulFunctionDefinition","src":"88:117:61"},{"body":{"nodeType":"YulBlock","src":"300:28:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"317:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"320:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"310:6:61"},"nodeType":"YulFunctionCall","src":"310:12:61"},"nodeType":"YulExpressionStatement","src":"310:12:61"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulFunctionDefinition","src":"211:117:61"},{"body":{"nodeType":"YulBlock","src":"378:105:61","statements":[{"nodeType":"YulAssignment","src":"388:89:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"403:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"410:66:61","type":"","value":"0xffffffff00000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"399:3:61"},"nodeType":"YulFunctionCall","src":"399:78:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"388:7:61"}]}]},"name":"cleanup_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"360:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"370:7:61","type":""}],"src":"334:149:61"},{"body":{"nodeType":"YulBlock","src":"531:78:61","statements":[{"body":{"nodeType":"YulBlock","src":"587:16:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"596:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"599:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"589:6:61"},"nodeType":"YulFunctionCall","src":"589:12:61"},"nodeType":"YulExpressionStatement","src":"589:12:61"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"554:5:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"578:5:61"}],"functionName":{"name":"cleanup_t_bytes4","nodeType":"YulIdentifier","src":"561:16:61"},"nodeType":"YulFunctionCall","src":"561:23:61"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"551:2:61"},"nodeType":"YulFunctionCall","src":"551:34:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"544:6:61"},"nodeType":"YulFunctionCall","src":"544:42:61"},"nodeType":"YulIf","src":"541:62:61"}]},"name":"validator_revert_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"524:5:61","type":""}],"src":"489:120:61"},{"body":{"nodeType":"YulBlock","src":"666:86:61","statements":[{"nodeType":"YulAssignment","src":"676:29:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"698:6:61"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"685:12:61"},"nodeType":"YulFunctionCall","src":"685:20:61"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"676:5:61"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"740:5:61"}],"functionName":{"name":"validator_revert_t_bytes4","nodeType":"YulIdentifier","src":"714:25:61"},"nodeType":"YulFunctionCall","src":"714:32:61"},"nodeType":"YulExpressionStatement","src":"714:32:61"}]},"name":"abi_decode_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"644:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"652:3:61","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"660:5:61","type":""}],"src":"615:137:61"},{"body":{"nodeType":"YulBlock","src":"823:262:61","statements":[{"body":{"nodeType":"YulBlock","src":"869:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"871:77:61"},"nodeType":"YulFunctionCall","src":"871:79:61"},"nodeType":"YulExpressionStatement","src":"871:79:61"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"844:7:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"853:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"840:3:61"},"nodeType":"YulFunctionCall","src":"840:23:61"},{"kind":"number","nodeType":"YulLiteral","src":"865:2:61","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"836:3:61"},"nodeType":"YulFunctionCall","src":"836:32:61"},"nodeType":"YulIf","src":"833:119:61"},{"nodeType":"YulBlock","src":"962:116:61","statements":[{"nodeType":"YulVariableDeclaration","src":"977:15:61","value":{"kind":"number","nodeType":"YulLiteral","src":"991:1:61","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"981:6:61","type":""}]},{"nodeType":"YulAssignment","src":"1006:62:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1040:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"1051:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1036:3:61"},"nodeType":"YulFunctionCall","src":"1036:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1060:7:61"}],"functionName":{"name":"abi_decode_t_bytes4","nodeType":"YulIdentifier","src":"1016:19:61"},"nodeType":"YulFunctionCall","src":"1016:52:61"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1006:6:61"}]}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"793:9:61","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"804:7:61","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"816:6:61","type":""}],"src":"758:327:61"},{"body":{"nodeType":"YulBlock","src":"1133:48:61","statements":[{"nodeType":"YulAssignment","src":"1143:32:61","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1168:5:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1161:6:61"},"nodeType":"YulFunctionCall","src":"1161:13:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1154:6:61"},"nodeType":"YulFunctionCall","src":"1154:21:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"1143:7:61"}]}]},"name":"cleanup_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1115:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"1125:7:61","type":""}],"src":"1091:90:61"},{"body":{"nodeType":"YulBlock","src":"1246:50:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1263:3:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1283:5:61"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"1268:14:61"},"nodeType":"YulFunctionCall","src":"1268:21:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1256:6:61"},"nodeType":"YulFunctionCall","src":"1256:34:61"},"nodeType":"YulExpressionStatement","src":"1256:34:61"}]},"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1234:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"1241:3:61","type":""}],"src":"1187:109:61"},{"body":{"nodeType":"YulBlock","src":"1394:118:61","statements":[{"nodeType":"YulAssignment","src":"1404:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1416:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"1427:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1412:3:61"},"nodeType":"YulFunctionCall","src":"1412:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1404:4:61"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1478:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1491:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"1502:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1487:3:61"},"nodeType":"YulFunctionCall","src":"1487:17:61"}],"functionName":{"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulIdentifier","src":"1440:37:61"},"nodeType":"YulFunctionCall","src":"1440:65:61"},"nodeType":"YulExpressionStatement","src":"1440:65:61"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1366:9:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1378:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1389:4:61","type":""}],"src":"1302:210:61"},{"body":{"nodeType":"YulBlock","src":"1592:40:61","statements":[{"nodeType":"YulAssignment","src":"1603:22:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1619:5:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1613:5:61"},"nodeType":"YulFunctionCall","src":"1613:12:61"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"1603:6:61"}]}]},"name":"array_length_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1575:5:61","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"1585:6:61","type":""}],"src":"1518:114:61"},{"body":{"nodeType":"YulBlock","src":"1749:73:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1766:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"1771:6:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1759:6:61"},"nodeType":"YulFunctionCall","src":"1759:19:61"},"nodeType":"YulExpressionStatement","src":"1759:19:61"},{"nodeType":"YulAssignment","src":"1787:29:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1806:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"1811:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1802:3:61"},"nodeType":"YulFunctionCall","src":"1802:14:61"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"1787:11:61"}]}]},"name":"array_storeLengthForEncoding_t_array$_t_address_$dyn_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1721:3:61","type":""},{"name":"length","nodeType":"YulTypedName","src":"1726:6:61","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"1737:11:61","type":""}],"src":"1638:184:61"},{"body":{"nodeType":"YulBlock","src":"1900:60:61","statements":[{"nodeType":"YulAssignment","src":"1910:11:61","value":{"name":"ptr","nodeType":"YulIdentifier","src":"1918:3:61"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"1910:4:61"}]},{"nodeType":"YulAssignment","src":"1931:22:61","value":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"1943:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"1948:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1939:3:61"},"nodeType":"YulFunctionCall","src":"1939:14:61"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"1931:4:61"}]}]},"name":"array_dataslot_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"1887:3:61","type":""}],"returnVariables":[{"name":"data","nodeType":"YulTypedName","src":"1895:4:61","type":""}],"src":"1828:132:61"},{"body":{"nodeType":"YulBlock","src":"2011:81:61","statements":[{"nodeType":"YulAssignment","src":"2021:65:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2036:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"2043:42:61","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2032:3:61"},"nodeType":"YulFunctionCall","src":"2032:54:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"2021:7:61"}]}]},"name":"cleanup_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1993:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"2003:7:61","type":""}],"src":"1966:126:61"},{"body":{"nodeType":"YulBlock","src":"2143:51:61","statements":[{"nodeType":"YulAssignment","src":"2153:35:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2182:5:61"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"2164:17:61"},"nodeType":"YulFunctionCall","src":"2164:24:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"2153:7:61"}]}]},"name":"cleanup_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2125:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"2135:7:61","type":""}],"src":"2098:96:61"},{"body":{"nodeType":"YulBlock","src":"2255:53:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2272:3:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2295:5:61"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"2277:17:61"},"nodeType":"YulFunctionCall","src":"2277:24:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2265:6:61"},"nodeType":"YulFunctionCall","src":"2265:37:61"},"nodeType":"YulExpressionStatement","src":"2265:37:61"}]},"name":"abi_encode_t_address_to_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2243:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2250:3:61","type":""}],"src":"2200:108:61"},{"body":{"nodeType":"YulBlock","src":"2394:99:61","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2438:6:61"},{"name":"pos","nodeType":"YulIdentifier","src":"2446:3:61"}],"functionName":{"name":"abi_encode_t_address_to_t_address","nodeType":"YulIdentifier","src":"2404:33:61"},"nodeType":"YulFunctionCall","src":"2404:46:61"},"nodeType":"YulExpressionStatement","src":"2404:46:61"},{"nodeType":"YulAssignment","src":"2459:28:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2477:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"2482:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2473:3:61"},"nodeType":"YulFunctionCall","src":"2473:14:61"},"variableNames":[{"name":"updatedPos","nodeType":"YulIdentifier","src":"2459:10:61"}]}]},"name":"abi_encodeUpdatedPos_t_address_to_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value0","nodeType":"YulTypedName","src":"2367:6:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2375:3:61","type":""}],"returnVariables":[{"name":"updatedPos","nodeType":"YulTypedName","src":"2383:10:61","type":""}],"src":"2314:179:61"},{"body":{"nodeType":"YulBlock","src":"2574:38:61","statements":[{"nodeType":"YulAssignment","src":"2584:22:61","value":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"2596:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"2601:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2592:3:61"},"nodeType":"YulFunctionCall","src":"2592:14:61"},"variableNames":[{"name":"next","nodeType":"YulIdentifier","src":"2584:4:61"}]}]},"name":"array_nextElement_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"2561:3:61","type":""}],"returnVariables":[{"name":"next","nodeType":"YulTypedName","src":"2569:4:61","type":""}],"src":"2499:113:61"},{"body":{"nodeType":"YulBlock","src":"2772:608:61","statements":[{"nodeType":"YulVariableDeclaration","src":"2782:68:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2844:5:61"}],"functionName":{"name":"array_length_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"2796:47:61"},"nodeType":"YulFunctionCall","src":"2796:54:61"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"2786:6:61","type":""}]},{"nodeType":"YulAssignment","src":"2859:93:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2940:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"2945:6:61"}],"functionName":{"name":"array_storeLengthForEncoding_t_array$_t_address_$dyn_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"2866:73:61"},"nodeType":"YulFunctionCall","src":"2866:86:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"2859:3:61"}]},{"nodeType":"YulVariableDeclaration","src":"2961:71:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3026:5:61"}],"functionName":{"name":"array_dataslot_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"2976:49:61"},"nodeType":"YulFunctionCall","src":"2976:56:61"},"variables":[{"name":"baseRef","nodeType":"YulTypedName","src":"2965:7:61","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3041:21:61","value":{"name":"baseRef","nodeType":"YulIdentifier","src":"3055:7:61"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"3045:6:61","type":""}]},{"body":{"nodeType":"YulBlock","src":"3131:224:61","statements":[{"nodeType":"YulVariableDeclaration","src":"3145:34:61","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3172:6:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3166:5:61"},"nodeType":"YulFunctionCall","src":"3166:13:61"},"variables":[{"name":"elementValue0","nodeType":"YulTypedName","src":"3149:13:61","type":""}]},{"nodeType":"YulAssignment","src":"3192:70:61","value":{"arguments":[{"name":"elementValue0","nodeType":"YulIdentifier","src":"3243:13:61"},{"name":"pos","nodeType":"YulIdentifier","src":"3258:3:61"}],"functionName":{"name":"abi_encodeUpdatedPos_t_address_to_t_address","nodeType":"YulIdentifier","src":"3199:43:61"},"nodeType":"YulFunctionCall","src":"3199:63:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3192:3:61"}]},{"nodeType":"YulAssignment","src":"3275:70:61","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3338:6:61"}],"functionName":{"name":"array_nextElement_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"3285:52:61"},"nodeType":"YulFunctionCall","src":"3285:60:61"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"3275:6:61"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3093:1:61"},{"name":"length","nodeType":"YulIdentifier","src":"3096:6:61"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3090:2:61"},"nodeType":"YulFunctionCall","src":"3090:13:61"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3104:18:61","statements":[{"nodeType":"YulAssignment","src":"3106:14:61","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3115:1:61"},{"kind":"number","nodeType":"YulLiteral","src":"3118:1:61","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3111:3:61"},"nodeType":"YulFunctionCall","src":"3111:9:61"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3106:1:61"}]}]},"pre":{"nodeType":"YulBlock","src":"3075:14:61","statements":[{"nodeType":"YulVariableDeclaration","src":"3077:10:61","value":{"kind":"number","nodeType":"YulLiteral","src":"3086:1:61","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"3081:1:61","type":""}]}]},"src":"3071:284:61"},{"nodeType":"YulAssignment","src":"3364:10:61","value":{"name":"pos","nodeType":"YulIdentifier","src":"3371:3:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"3364:3:61"}]}]},"name":"abi_encode_t_array$_t_address_$dyn_memory_ptr_to_t_array$_t_address_$dyn_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"2751:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"2758:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2767:3:61","type":""}],"src":"2648:732:61"},{"body":{"nodeType":"YulBlock","src":"3534:225:61","statements":[{"nodeType":"YulAssignment","src":"3544:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3556:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"3567:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3552:3:61"},"nodeType":"YulFunctionCall","src":"3552:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3544:4:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3591:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"3602:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3587:3:61"},"nodeType":"YulFunctionCall","src":"3587:17:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"3610:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"3616:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3606:3:61"},"nodeType":"YulFunctionCall","src":"3606:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3580:6:61"},"nodeType":"YulFunctionCall","src":"3580:47:61"},"nodeType":"YulExpressionStatement","src":"3580:47:61"},{"nodeType":"YulAssignment","src":"3636:116:61","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3738:6:61"},{"name":"tail","nodeType":"YulIdentifier","src":"3747:4:61"}],"functionName":{"name":"abi_encode_t_array$_t_address_$dyn_memory_ptr_to_t_array$_t_address_$dyn_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"3644:93:61"},"nodeType":"YulFunctionCall","src":"3644:108:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3636:4:61"}]}]},"name":"abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3506:9:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3518:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3529:4:61","type":""}],"src":"3386:373:61"},{"body":{"nodeType":"YulBlock","src":"3863:40:61","statements":[{"nodeType":"YulAssignment","src":"3874:22:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3890:5:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3884:5:61"},"nodeType":"YulFunctionCall","src":"3884:12:61"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"3874:6:61"}]}]},"name":"array_length_t_array$_t_struct$_Facet_$11859_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"3846:5:61","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"3856:6:61","type":""}],"src":"3765:138:61"},{"body":{"nodeType":"YulBlock","src":"4044:73:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4061:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"4066:6:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4054:6:61"},"nodeType":"YulFunctionCall","src":"4054:19:61"},"nodeType":"YulExpressionStatement","src":"4054:19:61"},{"nodeType":"YulAssignment","src":"4082:29:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4101:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"4106:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4097:3:61"},"nodeType":"YulFunctionCall","src":"4097:14:61"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"4082:11:61"}]}]},"name":"array_storeLengthForEncoding_t_array$_t_struct$_Facet_$11859_memory_ptr_$dyn_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"4016:3:61","type":""},{"name":"length","nodeType":"YulTypedName","src":"4021:6:61","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"4032:11:61","type":""}],"src":"3909:208:61"},{"body":{"nodeType":"YulBlock","src":"4219:60:61","statements":[{"nodeType":"YulAssignment","src":"4229:11:61","value":{"name":"ptr","nodeType":"YulIdentifier","src":"4237:3:61"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"4229:4:61"}]},{"nodeType":"YulAssignment","src":"4250:22:61","value":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"4262:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"4267:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4258:3:61"},"nodeType":"YulFunctionCall","src":"4258:14:61"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"4250:4:61"}]}]},"name":"array_dataslot_t_array$_t_struct$_Facet_$11859_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"4206:3:61","type":""}],"returnVariables":[{"name":"data","nodeType":"YulTypedName","src":"4214:4:61","type":""}],"src":"4123:156:61"},{"body":{"nodeType":"YulBlock","src":"4358:40:61","statements":[{"nodeType":"YulAssignment","src":"4369:22:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4385:5:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4379:5:61"},"nodeType":"YulFunctionCall","src":"4379:12:61"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"4369:6:61"}]}]},"name":"array_length_t_array$_t_bytes4_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4341:5:61","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"4351:6:61","type":""}],"src":"4285:113:61"},{"body":{"nodeType":"YulBlock","src":"4504:73:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4521:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"4526:6:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4514:6:61"},"nodeType":"YulFunctionCall","src":"4514:19:61"},"nodeType":"YulExpressionStatement","src":"4514:19:61"},{"nodeType":"YulAssignment","src":"4542:29:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4561:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"4566:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4557:3:61"},"nodeType":"YulFunctionCall","src":"4557:14:61"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"4542:11:61"}]}]},"name":"array_storeLengthForEncoding_t_array$_t_bytes4_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"4476:3:61","type":""},{"name":"length","nodeType":"YulTypedName","src":"4481:6:61","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"4492:11:61","type":""}],"src":"4404:173:61"},{"body":{"nodeType":"YulBlock","src":"4654:60:61","statements":[{"nodeType":"YulAssignment","src":"4664:11:61","value":{"name":"ptr","nodeType":"YulIdentifier","src":"4672:3:61"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"4664:4:61"}]},{"nodeType":"YulAssignment","src":"4685:22:61","value":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"4697:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"4702:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4693:3:61"},"nodeType":"YulFunctionCall","src":"4693:14:61"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"4685:4:61"}]}]},"name":"array_dataslot_t_array$_t_bytes4_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"4641:3:61","type":""}],"returnVariables":[{"name":"data","nodeType":"YulTypedName","src":"4649:4:61","type":""}],"src":"4583:131:61"},{"body":{"nodeType":"YulBlock","src":"4773:52:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4790:3:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4812:5:61"}],"functionName":{"name":"cleanup_t_bytes4","nodeType":"YulIdentifier","src":"4795:16:61"},"nodeType":"YulFunctionCall","src":"4795:23:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4783:6:61"},"nodeType":"YulFunctionCall","src":"4783:36:61"},"nodeType":"YulExpressionStatement","src":"4783:36:61"}]},"name":"abi_encode_t_bytes4_to_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"4761:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4768:3:61","type":""}],"src":"4720:105:61"},{"body":{"nodeType":"YulBlock","src":"4909:97:61","statements":[{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4951:6:61"},{"name":"pos","nodeType":"YulIdentifier","src":"4959:3:61"}],"functionName":{"name":"abi_encode_t_bytes4_to_t_bytes4","nodeType":"YulIdentifier","src":"4919:31:61"},"nodeType":"YulFunctionCall","src":"4919:44:61"},"nodeType":"YulExpressionStatement","src":"4919:44:61"},{"nodeType":"YulAssignment","src":"4972:28:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4990:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"4995:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4986:3:61"},"nodeType":"YulFunctionCall","src":"4986:14:61"},"variableNames":[{"name":"updatedPos","nodeType":"YulIdentifier","src":"4972:10:61"}]}]},"name":"abi_encodeUpdatedPos_t_bytes4_to_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"value0","nodeType":"YulTypedName","src":"4882:6:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"4890:3:61","type":""}],"returnVariables":[{"name":"updatedPos","nodeType":"YulTypedName","src":"4898:10:61","type":""}],"src":"4831:175:61"},{"body":{"nodeType":"YulBlock","src":"5086:38:61","statements":[{"nodeType":"YulAssignment","src":"5096:22:61","value":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"5108:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"5113:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5104:3:61"},"nodeType":"YulFunctionCall","src":"5104:14:61"},"variableNames":[{"name":"next","nodeType":"YulIdentifier","src":"5096:4:61"}]}]},"name":"array_nextElement_t_array$_t_bytes4_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"5073:3:61","type":""}],"returnVariables":[{"name":"next","nodeType":"YulTypedName","src":"5081:4:61","type":""}],"src":"5012:112:61"},{"body":{"nodeType":"YulBlock","src":"5270:592:61","statements":[{"nodeType":"YulVariableDeclaration","src":"5280:67:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5341:5:61"}],"functionName":{"name":"array_length_t_array$_t_bytes4_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"5294:46:61"},"nodeType":"YulFunctionCall","src":"5294:53:61"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"5284:6:61","type":""}]},{"nodeType":"YulAssignment","src":"5356:82:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5426:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"5431:6:61"}],"functionName":{"name":"array_storeLengthForEncoding_t_array$_t_bytes4_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"5363:62:61"},"nodeType":"YulFunctionCall","src":"5363:75:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"5356:3:61"}]},{"nodeType":"YulVariableDeclaration","src":"5447:70:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5511:5:61"}],"functionName":{"name":"array_dataslot_t_array$_t_bytes4_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"5462:48:61"},"nodeType":"YulFunctionCall","src":"5462:55:61"},"variables":[{"name":"baseRef","nodeType":"YulTypedName","src":"5451:7:61","type":""}]},{"nodeType":"YulVariableDeclaration","src":"5526:21:61","value":{"name":"baseRef","nodeType":"YulIdentifier","src":"5540:7:61"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"5530:6:61","type":""}]},{"body":{"nodeType":"YulBlock","src":"5616:221:61","statements":[{"nodeType":"YulVariableDeclaration","src":"5630:34:61","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5657:6:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5651:5:61"},"nodeType":"YulFunctionCall","src":"5651:13:61"},"variables":[{"name":"elementValue0","nodeType":"YulTypedName","src":"5634:13:61","type":""}]},{"nodeType":"YulAssignment","src":"5677:68:61","value":{"arguments":[{"name":"elementValue0","nodeType":"YulIdentifier","src":"5726:13:61"},{"name":"pos","nodeType":"YulIdentifier","src":"5741:3:61"}],"functionName":{"name":"abi_encodeUpdatedPos_t_bytes4_to_t_bytes4","nodeType":"YulIdentifier","src":"5684:41:61"},"nodeType":"YulFunctionCall","src":"5684:61:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"5677:3:61"}]},{"nodeType":"YulAssignment","src":"5758:69:61","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5820:6:61"}],"functionName":{"name":"array_nextElement_t_array$_t_bytes4_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"5768:51:61"},"nodeType":"YulFunctionCall","src":"5768:59:61"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"5758:6:61"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5578:1:61"},{"name":"length","nodeType":"YulIdentifier","src":"5581:6:61"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5575:2:61"},"nodeType":"YulFunctionCall","src":"5575:13:61"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5589:18:61","statements":[{"nodeType":"YulAssignment","src":"5591:14:61","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5600:1:61"},{"kind":"number","nodeType":"YulLiteral","src":"5603:1:61","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5596:3:61"},"nodeType":"YulFunctionCall","src":"5596:9:61"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"5591:1:61"}]}]},"pre":{"nodeType":"YulBlock","src":"5560:14:61","statements":[{"nodeType":"YulVariableDeclaration","src":"5562:10:61","value":{"kind":"number","nodeType":"YulLiteral","src":"5571:1:61","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"5566:1:61","type":""}]}]},"src":"5556:281:61"},{"nodeType":"YulAssignment","src":"5846:10:61","value":{"name":"pos","nodeType":"YulIdentifier","src":"5853:3:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"5846:3:61"}]}]},"name":"abi_encode_t_array$_t_bytes4_$dyn_memory_ptr_to_t_array$_t_bytes4_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5249:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"5256:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"5265:3:61","type":""}],"src":"5158:704:61"},{"body":{"nodeType":"YulBlock","src":"6030:531:61","statements":[{"nodeType":"YulVariableDeclaration","src":"6040:26:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6056:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"6061:4:61","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6052:3:61"},"nodeType":"YulFunctionCall","src":"6052:14:61"},"variables":[{"name":"tail","nodeType":"YulTypedName","src":"6044:4:61","type":""}]},{"nodeType":"YulBlock","src":"6076:172:61","statements":[{"nodeType":"YulVariableDeclaration","src":"6119:43:61","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6149:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"6156:4:61","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6145:3:61"},"nodeType":"YulFunctionCall","src":"6145:16:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6139:5:61"},"nodeType":"YulFunctionCall","src":"6139:23:61"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"6123:12:61","type":""}]},{"expression":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"6209:12:61"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6227:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"6232:4:61","type":"","value":"0x00"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6223:3:61"},"nodeType":"YulFunctionCall","src":"6223:14:61"}],"functionName":{"name":"abi_encode_t_address_to_t_address","nodeType":"YulIdentifier","src":"6175:33:61"},"nodeType":"YulFunctionCall","src":"6175:63:61"},"nodeType":"YulExpressionStatement","src":"6175:63:61"}]},{"nodeType":"YulBlock","src":"6258:276:61","statements":[{"nodeType":"YulVariableDeclaration","src":"6306:43:61","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6336:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"6343:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6332:3:61"},"nodeType":"YulFunctionCall","src":"6332:16:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6326:5:61"},"nodeType":"YulFunctionCall","src":"6326:23:61"},"variables":[{"name":"memberValue0","nodeType":"YulTypedName","src":"6310:12:61","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6374:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"6379:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6370:3:61"},"nodeType":"YulFunctionCall","src":"6370:14:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"6390:4:61"},{"name":"pos","nodeType":"YulIdentifier","src":"6396:3:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6386:3:61"},"nodeType":"YulFunctionCall","src":"6386:14:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6363:6:61"},"nodeType":"YulFunctionCall","src":"6363:38:61"},"nodeType":"YulExpressionStatement","src":"6363:38:61"},{"nodeType":"YulAssignment","src":"6414:109:61","value":{"arguments":[{"name":"memberValue0","nodeType":"YulIdentifier","src":"6504:12:61"},{"name":"tail","nodeType":"YulIdentifier","src":"6518:4:61"}],"functionName":{"name":"abi_encode_t_array$_t_bytes4_$dyn_memory_ptr_to_t_array$_t_bytes4_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"6422:81:61"},"nodeType":"YulFunctionCall","src":"6422:101:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6414:4:61"}]}]},{"nodeType":"YulAssignment","src":"6544:11:61","value":{"name":"tail","nodeType":"YulIdentifier","src":"6551:4:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"6544:3:61"}]}]},"name":"abi_encode_t_struct$_Facet_$11859_memory_ptr_to_t_struct$_Facet_$11859_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6009:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"6016:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"6025:3:61","type":""}],"src":"5918:643:61"},{"body":{"nodeType":"YulBlock","src":"6695:124:61","statements":[{"nodeType":"YulAssignment","src":"6705:108:61","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6801:6:61"},{"name":"pos","nodeType":"YulIdentifier","src":"6809:3:61"}],"functionName":{"name":"abi_encode_t_struct$_Facet_$11859_memory_ptr_to_t_struct$_Facet_$11859_memory_ptr","nodeType":"YulIdentifier","src":"6719:81:61"},"nodeType":"YulFunctionCall","src":"6719:94:61"},"variableNames":[{"name":"updatedPos","nodeType":"YulIdentifier","src":"6705:10:61"}]}]},"name":"abi_encodeUpdatedPos_t_struct$_Facet_$11859_memory_ptr_to_t_struct$_Facet_$11859_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value0","nodeType":"YulTypedName","src":"6668:6:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"6676:3:61","type":""}],"returnVariables":[{"name":"updatedPos","nodeType":"YulTypedName","src":"6684:10:61","type":""}],"src":"6567:252:61"},{"body":{"nodeType":"YulBlock","src":"6924:38:61","statements":[{"nodeType":"YulAssignment","src":"6934:22:61","value":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"6946:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"6951:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6942:3:61"},"nodeType":"YulFunctionCall","src":"6942:14:61"},"variableNames":[{"name":"next","nodeType":"YulIdentifier","src":"6934:4:61"}]}]},"name":"array_nextElement_t_array$_t_struct$_Facet_$11859_memory_ptr_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"6911:3:61","type":""}],"returnVariables":[{"name":"next","nodeType":"YulTypedName","src":"6919:4:61","type":""}],"src":"6825:137:61"},{"body":{"nodeType":"YulBlock","src":"7194:931:61","statements":[{"nodeType":"YulVariableDeclaration","src":"7204:92:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7290:5:61"}],"functionName":{"name":"array_length_t_array$_t_struct$_Facet_$11859_memory_ptr_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"7218:71:61"},"nodeType":"YulFunctionCall","src":"7218:78:61"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"7208:6:61","type":""}]},{"nodeType":"YulAssignment","src":"7305:117:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"7410:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"7415:6:61"}],"functionName":{"name":"array_storeLengthForEncoding_t_array$_t_struct$_Facet_$11859_memory_ptr_$dyn_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"7312:97:61"},"nodeType":"YulFunctionCall","src":"7312:110:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"7305:3:61"}]},{"nodeType":"YulVariableDeclaration","src":"7431:20:61","value":{"name":"pos","nodeType":"YulIdentifier","src":"7448:3:61"},"variables":[{"name":"headStart","nodeType":"YulTypedName","src":"7435:9:61","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7460:39:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"7476:3:61"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"7485:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"7493:4:61","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"7481:3:61"},"nodeType":"YulFunctionCall","src":"7481:17:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7472:3:61"},"nodeType":"YulFunctionCall","src":"7472:27:61"},"variables":[{"name":"tail","nodeType":"YulTypedName","src":"7464:4:61","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7508:95:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7597:5:61"}],"functionName":{"name":"array_dataslot_t_array$_t_struct$_Facet_$11859_memory_ptr_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"7523:73:61"},"nodeType":"YulFunctionCall","src":"7523:80:61"},"variables":[{"name":"baseRef","nodeType":"YulTypedName","src":"7512:7:61","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7612:21:61","value":{"name":"baseRef","nodeType":"YulIdentifier","src":"7626:7:61"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"7616:6:61","type":""}]},{"body":{"nodeType":"YulBlock","src":"7702:378:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"7723:3:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"7732:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"7738:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"7728:3:61"},"nodeType":"YulFunctionCall","src":"7728:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7716:6:61"},"nodeType":"YulFunctionCall","src":"7716:33:61"},"nodeType":"YulExpressionStatement","src":"7716:33:61"},{"nodeType":"YulVariableDeclaration","src":"7762:34:61","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"7789:6:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7783:5:61"},"nodeType":"YulFunctionCall","src":"7783:13:61"},"variables":[{"name":"elementValue0","nodeType":"YulTypedName","src":"7766:13:61","type":""}]},{"nodeType":"YulAssignment","src":"7809:120:61","value":{"arguments":[{"name":"elementValue0","nodeType":"YulIdentifier","src":"7909:13:61"},{"name":"tail","nodeType":"YulIdentifier","src":"7924:4:61"}],"functionName":{"name":"abi_encodeUpdatedPos_t_struct$_Facet_$11859_memory_ptr_to_t_struct$_Facet_$11859_memory_ptr","nodeType":"YulIdentifier","src":"7817:91:61"},"nodeType":"YulFunctionCall","src":"7817:112:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7809:4:61"}]},{"nodeType":"YulAssignment","src":"7942:94:61","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"8029:6:61"}],"functionName":{"name":"array_nextElement_t_array$_t_struct$_Facet_$11859_memory_ptr_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"7952:76:61"},"nodeType":"YulFunctionCall","src":"7952:84:61"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"7942:6:61"}]},{"nodeType":"YulAssignment","src":"8049:21:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8060:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"8065:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8056:3:61"},"nodeType":"YulFunctionCall","src":"8056:14:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"8049:3:61"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"7664:1:61"},{"name":"length","nodeType":"YulIdentifier","src":"7667:6:61"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"7661:2:61"},"nodeType":"YulFunctionCall","src":"7661:13:61"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"7675:18:61","statements":[{"nodeType":"YulAssignment","src":"7677:14:61","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"7686:1:61"},{"kind":"number","nodeType":"YulLiteral","src":"7689:1:61","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7682:3:61"},"nodeType":"YulFunctionCall","src":"7682:9:61"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"7677:1:61"}]}]},"pre":{"nodeType":"YulBlock","src":"7646:14:61","statements":[{"nodeType":"YulVariableDeclaration","src":"7648:10:61","value":{"kind":"number","nodeType":"YulLiteral","src":"7657:1:61","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"7652:1:61","type":""}]}]},"src":"7642:438:61"},{"nodeType":"YulAssignment","src":"8089:11:61","value":{"name":"tail","nodeType":"YulIdentifier","src":"8096:4:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"8089:3:61"}]},{"nodeType":"YulAssignment","src":"8109:10:61","value":{"name":"pos","nodeType":"YulIdentifier","src":"8116:3:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"8109:3:61"}]}]},"name":"abi_encode_t_array$_t_struct$_Facet_$11859_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_Facet_$11859_memory_ptr_$dyn_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7173:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"7180:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"7189:3:61","type":""}],"src":"7022:1103:61"},{"body":{"nodeType":"YulBlock","src":"8327:273:61","statements":[{"nodeType":"YulAssignment","src":"8337:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8349:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"8360:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8345:3:61"},"nodeType":"YulFunctionCall","src":"8345:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8337:4:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8384:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"8395:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8380:3:61"},"nodeType":"YulFunctionCall","src":"8380:17:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"8403:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"8409:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8399:3:61"},"nodeType":"YulFunctionCall","src":"8399:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8373:6:61"},"nodeType":"YulFunctionCall","src":"8373:47:61"},"nodeType":"YulExpressionStatement","src":"8373:47:61"},{"nodeType":"YulAssignment","src":"8429:164:61","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8579:6:61"},{"name":"tail","nodeType":"YulIdentifier","src":"8588:4:61"}],"functionName":{"name":"abi_encode_t_array$_t_struct$_Facet_$11859_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_Facet_$11859_memory_ptr_$dyn_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"8437:141:61"},"nodeType":"YulFunctionCall","src":"8437:156:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8429:4:61"}]}]},"name":"abi_encode_tuple_t_array$_t_struct$_Facet_$11859_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_Facet_$11859_memory_ptr_$dyn_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8299:9:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8311:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8322:4:61","type":""}],"src":"8131:469:61"},{"body":{"nodeType":"YulBlock","src":"8649:79:61","statements":[{"body":{"nodeType":"YulBlock","src":"8706:16:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8715:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8718:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8708:6:61"},"nodeType":"YulFunctionCall","src":"8708:12:61"},"nodeType":"YulExpressionStatement","src":"8708:12:61"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8672:5:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8697:5:61"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"8679:17:61"},"nodeType":"YulFunctionCall","src":"8679:24:61"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8669:2:61"},"nodeType":"YulFunctionCall","src":"8669:35:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8662:6:61"},"nodeType":"YulFunctionCall","src":"8662:43:61"},"nodeType":"YulIf","src":"8659:63:61"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"8642:5:61","type":""}],"src":"8606:122:61"},{"body":{"nodeType":"YulBlock","src":"8786:87:61","statements":[{"nodeType":"YulAssignment","src":"8796:29:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"8818:6:61"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"8805:12:61"},"nodeType":"YulFunctionCall","src":"8805:20:61"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"8796:5:61"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8861:5:61"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"8834:26:61"},"nodeType":"YulFunctionCall","src":"8834:33:61"},"nodeType":"YulExpressionStatement","src":"8834:33:61"}]},"name":"abi_decode_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"8764:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"8772:3:61","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"8780:5:61","type":""}],"src":"8734:139:61"},{"body":{"nodeType":"YulBlock","src":"8945:263:61","statements":[{"body":{"nodeType":"YulBlock","src":"8991:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"8993:77:61"},"nodeType":"YulFunctionCall","src":"8993:79:61"},"nodeType":"YulExpressionStatement","src":"8993:79:61"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"8966:7:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"8975:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8962:3:61"},"nodeType":"YulFunctionCall","src":"8962:23:61"},{"kind":"number","nodeType":"YulLiteral","src":"8987:2:61","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"8958:3:61"},"nodeType":"YulFunctionCall","src":"8958:32:61"},"nodeType":"YulIf","src":"8955:119:61"},{"nodeType":"YulBlock","src":"9084:117:61","statements":[{"nodeType":"YulVariableDeclaration","src":"9099:15:61","value":{"kind":"number","nodeType":"YulLiteral","src":"9113:1:61","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"9103:6:61","type":""}]},{"nodeType":"YulAssignment","src":"9128:63:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9163:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"9174:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9159:3:61"},"nodeType":"YulFunctionCall","src":"9159:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"9183:7:61"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"9138:20:61"},"nodeType":"YulFunctionCall","src":"9138:53:61"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"9128:6:61"}]}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8915:9:61","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"8926:7:61","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"8938:6:61","type":""}],"src":"8879:329:61"},{"body":{"nodeType":"YulBlock","src":"9324:73:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9341:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"9346:6:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9334:6:61"},"nodeType":"YulFunctionCall","src":"9334:19:61"},"nodeType":"YulExpressionStatement","src":"9334:19:61"},{"nodeType":"YulAssignment","src":"9362:29:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9381:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"9386:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9377:3:61"},"nodeType":"YulFunctionCall","src":"9377:14:61"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"9362:11:61"}]}]},"name":"array_storeLengthForEncoding_t_array$_t_bytes4_$dyn_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"9296:3:61","type":""},{"name":"length","nodeType":"YulTypedName","src":"9301:6:61","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"9312:11:61","type":""}],"src":"9214:183:61"},{"body":{"nodeType":"YulBlock","src":"9553:602:61","statements":[{"nodeType":"YulVariableDeclaration","src":"9563:67:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9624:5:61"}],"functionName":{"name":"array_length_t_array$_t_bytes4_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"9577:46:61"},"nodeType":"YulFunctionCall","src":"9577:53:61"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"9567:6:61","type":""}]},{"nodeType":"YulAssignment","src":"9639:92:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"9719:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"9724:6:61"}],"functionName":{"name":"array_storeLengthForEncoding_t_array$_t_bytes4_$dyn_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"9646:72:61"},"nodeType":"YulFunctionCall","src":"9646:85:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"9639:3:61"}]},{"nodeType":"YulVariableDeclaration","src":"9740:70:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9804:5:61"}],"functionName":{"name":"array_dataslot_t_array$_t_bytes4_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"9755:48:61"},"nodeType":"YulFunctionCall","src":"9755:55:61"},"variables":[{"name":"baseRef","nodeType":"YulTypedName","src":"9744:7:61","type":""}]},{"nodeType":"YulVariableDeclaration","src":"9819:21:61","value":{"name":"baseRef","nodeType":"YulIdentifier","src":"9833:7:61"},"variables":[{"name":"srcPtr","nodeType":"YulTypedName","src":"9823:6:61","type":""}]},{"body":{"nodeType":"YulBlock","src":"9909:221:61","statements":[{"nodeType":"YulVariableDeclaration","src":"9923:34:61","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"9950:6:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9944:5:61"},"nodeType":"YulFunctionCall","src":"9944:13:61"},"variables":[{"name":"elementValue0","nodeType":"YulTypedName","src":"9927:13:61","type":""}]},{"nodeType":"YulAssignment","src":"9970:68:61","value":{"arguments":[{"name":"elementValue0","nodeType":"YulIdentifier","src":"10019:13:61"},{"name":"pos","nodeType":"YulIdentifier","src":"10034:3:61"}],"functionName":{"name":"abi_encodeUpdatedPos_t_bytes4_to_t_bytes4","nodeType":"YulIdentifier","src":"9977:41:61"},"nodeType":"YulFunctionCall","src":"9977:61:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"9970:3:61"}]},{"nodeType":"YulAssignment","src":"10051:69:61","value":{"arguments":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"10113:6:61"}],"functionName":{"name":"array_nextElement_t_array$_t_bytes4_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"10061:51:61"},"nodeType":"YulFunctionCall","src":"10061:59:61"},"variableNames":[{"name":"srcPtr","nodeType":"YulIdentifier","src":"10051:6:61"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"9871:1:61"},{"name":"length","nodeType":"YulIdentifier","src":"9874:6:61"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"9868:2:61"},"nodeType":"YulFunctionCall","src":"9868:13:61"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"9882:18:61","statements":[{"nodeType":"YulAssignment","src":"9884:14:61","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"9893:1:61"},{"kind":"number","nodeType":"YulLiteral","src":"9896:1:61","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9889:3:61"},"nodeType":"YulFunctionCall","src":"9889:9:61"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"9884:1:61"}]}]},"pre":{"nodeType":"YulBlock","src":"9853:14:61","statements":[{"nodeType":"YulVariableDeclaration","src":"9855:10:61","value":{"kind":"number","nodeType":"YulLiteral","src":"9864:1:61","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"9859:1:61","type":""}]}]},"src":"9849:281:61"},{"nodeType":"YulAssignment","src":"10139:10:61","value":{"name":"pos","nodeType":"YulIdentifier","src":"10146:3:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"10139:3:61"}]}]},"name":"abi_encode_t_array$_t_bytes4_$dyn_memory_ptr_to_t_array$_t_bytes4_$dyn_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"9532:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"9539:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"9548:3:61","type":""}],"src":"9431:724:61"},{"body":{"nodeType":"YulBlock","src":"10307:223:61","statements":[{"nodeType":"YulAssignment","src":"10317:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10329:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"10340:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10325:3:61"},"nodeType":"YulFunctionCall","src":"10325:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10317:4:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10364:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"10375:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10360:3:61"},"nodeType":"YulFunctionCall","src":"10360:17:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"10383:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"10389:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10379:3:61"},"nodeType":"YulFunctionCall","src":"10379:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10353:6:61"},"nodeType":"YulFunctionCall","src":"10353:47:61"},"nodeType":"YulExpressionStatement","src":"10353:47:61"},{"nodeType":"YulAssignment","src":"10409:114:61","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10509:6:61"},{"name":"tail","nodeType":"YulIdentifier","src":"10518:4:61"}],"functionName":{"name":"abi_encode_t_array$_t_bytes4_$dyn_memory_ptr_to_t_array$_t_bytes4_$dyn_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"10417:91:61"},"nodeType":"YulFunctionCall","src":"10417:106:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10409:4:61"}]}]},"name":"abi_encode_tuple_t_array$_t_bytes4_$dyn_memory_ptr__to_t_array$_t_bytes4_$dyn_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10279:9:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"10291:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10302:4:61","type":""}],"src":"10161:369:61"},{"body":{"nodeType":"YulBlock","src":"10601:53:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10618:3:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10641:5:61"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"10623:17:61"},"nodeType":"YulFunctionCall","src":"10623:24:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10611:6:61"},"nodeType":"YulFunctionCall","src":"10611:37:61"},"nodeType":"YulExpressionStatement","src":"10611:37:61"}]},"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"10589:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"10596:3:61","type":""}],"src":"10536:118:61"},{"body":{"nodeType":"YulBlock","src":"10758:124:61","statements":[{"nodeType":"YulAssignment","src":"10768:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10780:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"10791:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10776:3:61"},"nodeType":"YulFunctionCall","src":"10776:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10768:4:61"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10848:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10861:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"10872:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10857:3:61"},"nodeType":"YulFunctionCall","src":"10857:17:61"}],"functionName":{"name":"abi_encode_t_address_to_t_address_fromStack","nodeType":"YulIdentifier","src":"10804:43:61"},"nodeType":"YulFunctionCall","src":"10804:71:61"},"nodeType":"YulExpressionStatement","src":"10804:71:61"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10730:9:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"10742:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10753:4:61","type":""}],"src":"10660:222:61"},{"body":{"nodeType":"YulBlock","src":"10916:152:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10933:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10936:77:61","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10926:6:61"},"nodeType":"YulFunctionCall","src":"10926:88:61"},"nodeType":"YulExpressionStatement","src":"10926:88:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11030:1:61","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"11033:4:61","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11023:6:61"},"nodeType":"YulFunctionCall","src":"11023:15:61"},"nodeType":"YulExpressionStatement","src":"11023:15:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11054:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"11057:4:61","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"11047:6:61"},"nodeType":"YulFunctionCall","src":"11047:15:61"},"nodeType":"YulExpressionStatement","src":"11047:15:61"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"10888:180:61"},{"body":{"nodeType":"YulBlock","src":"11102:152:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11119:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"11122:77:61","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11112:6:61"},"nodeType":"YulFunctionCall","src":"11112:88:61"},"nodeType":"YulExpressionStatement","src":"11112:88:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11216:1:61","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"11219:4:61","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11209:6:61"},"nodeType":"YulFunctionCall","src":"11209:15:61"},"nodeType":"YulExpressionStatement","src":"11209:15:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11240:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"11243:4:61","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"11233:6:61"},"nodeType":"YulFunctionCall","src":"11233:15:61"},"nodeType":"YulExpressionStatement","src":"11233:15:61"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"11074:180:61"},{"body":{"nodeType":"YulBlock","src":"11288:152:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11305:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"11308:77:61","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11298:6:61"},"nodeType":"YulFunctionCall","src":"11298:88:61"},"nodeType":"YulExpressionStatement","src":"11298:88:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11402:1:61","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"11405:4:61","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"11395:6:61"},"nodeType":"YulFunctionCall","src":"11395:15:61"},"nodeType":"YulExpressionStatement","src":"11395:15:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"11426:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"11429:4:61","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"11419:6:61"},"nodeType":"YulFunctionCall","src":"11419:15:61"},"nodeType":"YulExpressionStatement","src":"11419:15:61"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"11260:180:61"},{"body":{"nodeType":"YulBlock","src":"11491:32:61","statements":[{"nodeType":"YulAssignment","src":"11501:16:61","value":{"name":"value","nodeType":"YulIdentifier","src":"11512:5:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"11501:7:61"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"11473:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"11483:7:61","type":""}],"src":"11446:77:61"},{"body":{"nodeType":"YulBlock","src":"11572:190:61","statements":[{"nodeType":"YulAssignment","src":"11582:33:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11609:5:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"11591:17:61"},"nodeType":"YulFunctionCall","src":"11591:24:61"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"11582:5:61"}]},{"body":{"nodeType":"YulBlock","src":"11705:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"11707:16:61"},"nodeType":"YulFunctionCall","src":"11707:18:61"},"nodeType":"YulExpressionStatement","src":"11707:18:61"}]},"condition":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11630:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"11637:66:61","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"11627:2:61"},"nodeType":"YulFunctionCall","src":"11627:77:61"},"nodeType":"YulIf","src":"11624:103:61"},{"nodeType":"YulAssignment","src":"11736:20:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"11747:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"11754:1:61","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"11743:3:61"},"nodeType":"YulFunctionCall","src":"11743:13:61"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"11736:3:61"}]}]},"name":"increment_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"11558:5:61","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"11568:3:61","type":""}],"src":"11529:233:61"}]},"contents":"{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_bytes4(value) -> cleaned {\n cleaned := and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000)\n }\n\n function validator_revert_t_bytes4(value) {\n if iszero(eq(value, cleanup_t_bytes4(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bytes4(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bytes4(value)\n }\n\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes4(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bool_to_t_bool_fromStack(value0, add(headStart, 0))\n\n }\n\n function array_length_t_array$_t_address_$dyn_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_array$_t_address_$dyn_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function array_dataslot_t_array$_t_address_$dyn_memory_ptr(ptr) -> data {\n data := ptr\n\n data := add(ptr, 0x20)\n\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function abi_encode_t_address_to_t_address(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encodeUpdatedPos_t_address_to_t_address(value0, pos) -> updatedPos {\n abi_encode_t_address_to_t_address(value0, pos)\n updatedPos := add(pos, 0x20)\n }\n\n function array_nextElement_t_array$_t_address_$dyn_memory_ptr(ptr) -> next {\n next := add(ptr, 0x20)\n }\n\n // address[] -> address[]\n function abi_encode_t_array$_t_address_$dyn_memory_ptr_to_t_array$_t_address_$dyn_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_array$_t_address_$dyn_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_array$_t_address_$dyn_memory_ptr_fromStack(pos, length)\n let baseRef := array_dataslot_t_array$_t_address_$dyn_memory_ptr(value)\n let srcPtr := baseRef\n for { let i := 0 } lt(i, length) { i := add(i, 1) }\n {\n let elementValue0 := mload(srcPtr)\n pos := abi_encodeUpdatedPos_t_address_to_t_address(elementValue0, pos)\n srcPtr := array_nextElement_t_array$_t_address_$dyn_memory_ptr(srcPtr)\n }\n end := pos\n }\n\n function abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_array$_t_address_$dyn_memory_ptr_to_t_array$_t_address_$dyn_memory_ptr_fromStack(value0, tail)\n\n }\n\n function array_length_t_array$_t_struct$_Facet_$11859_memory_ptr_$dyn_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_array$_t_struct$_Facet_$11859_memory_ptr_$dyn_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function array_dataslot_t_array$_t_struct$_Facet_$11859_memory_ptr_$dyn_memory_ptr(ptr) -> data {\n data := ptr\n\n data := add(ptr, 0x20)\n\n }\n\n function array_length_t_array$_t_bytes4_$dyn_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_array$_t_bytes4_$dyn_memory_ptr(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function array_dataslot_t_array$_t_bytes4_$dyn_memory_ptr(ptr) -> data {\n data := ptr\n\n data := add(ptr, 0x20)\n\n }\n\n function abi_encode_t_bytes4_to_t_bytes4(value, pos) {\n mstore(pos, cleanup_t_bytes4(value))\n }\n\n function abi_encodeUpdatedPos_t_bytes4_to_t_bytes4(value0, pos) -> updatedPos {\n abi_encode_t_bytes4_to_t_bytes4(value0, pos)\n updatedPos := add(pos, 0x20)\n }\n\n function array_nextElement_t_array$_t_bytes4_$dyn_memory_ptr(ptr) -> next {\n next := add(ptr, 0x20)\n }\n\n // bytes4[] -> bytes4[]\n function abi_encode_t_array$_t_bytes4_$dyn_memory_ptr_to_t_array$_t_bytes4_$dyn_memory_ptr(value, pos) -> end {\n let length := array_length_t_array$_t_bytes4_$dyn_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_array$_t_bytes4_$dyn_memory_ptr(pos, length)\n let baseRef := array_dataslot_t_array$_t_bytes4_$dyn_memory_ptr(value)\n let srcPtr := baseRef\n for { let i := 0 } lt(i, length) { i := add(i, 1) }\n {\n let elementValue0 := mload(srcPtr)\n pos := abi_encodeUpdatedPos_t_bytes4_to_t_bytes4(elementValue0, pos)\n srcPtr := array_nextElement_t_array$_t_bytes4_$dyn_memory_ptr(srcPtr)\n }\n end := pos\n }\n\n // struct ILoupe.Facet -> struct ILoupe.Facet\n function abi_encode_t_struct$_Facet_$11859_memory_ptr_to_t_struct$_Facet_$11859_memory_ptr(value, pos) -> end {\n let tail := add(pos, 0x40)\n\n {\n // facetAddress\n\n let memberValue0 := mload(add(value, 0x00))\n abi_encode_t_address_to_t_address(memberValue0, add(pos, 0x00))\n }\n\n {\n // functionSelectors\n\n let memberValue0 := mload(add(value, 0x20))\n\n mstore(add(pos, 0x20), sub(tail, pos))\n tail := abi_encode_t_array$_t_bytes4_$dyn_memory_ptr_to_t_array$_t_bytes4_$dyn_memory_ptr(memberValue0, tail)\n\n }\n\n end := tail\n }\n\n function abi_encodeUpdatedPos_t_struct$_Facet_$11859_memory_ptr_to_t_struct$_Facet_$11859_memory_ptr(value0, pos) -> updatedPos {\n updatedPos := abi_encode_t_struct$_Facet_$11859_memory_ptr_to_t_struct$_Facet_$11859_memory_ptr(value0, pos)\n }\n\n function array_nextElement_t_array$_t_struct$_Facet_$11859_memory_ptr_$dyn_memory_ptr(ptr) -> next {\n next := add(ptr, 0x20)\n }\n\n // struct ILoupe.Facet[] -> struct ILoupe.Facet[]\n function abi_encode_t_array$_t_struct$_Facet_$11859_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_Facet_$11859_memory_ptr_$dyn_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_array$_t_struct$_Facet_$11859_memory_ptr_$dyn_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_array$_t_struct$_Facet_$11859_memory_ptr_$dyn_memory_ptr_fromStack(pos, length)\n let headStart := pos\n let tail := add(pos, mul(length, 0x20))\n let baseRef := array_dataslot_t_array$_t_struct$_Facet_$11859_memory_ptr_$dyn_memory_ptr(value)\n let srcPtr := baseRef\n for { let i := 0 } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, sub(tail, headStart))\n let elementValue0 := mload(srcPtr)\n tail := abi_encodeUpdatedPos_t_struct$_Facet_$11859_memory_ptr_to_t_struct$_Facet_$11859_memory_ptr(elementValue0, tail)\n srcPtr := array_nextElement_t_array$_t_struct$_Facet_$11859_memory_ptr_$dyn_memory_ptr(srcPtr)\n pos := add(pos, 0x20)\n }\n pos := tail\n end := pos\n }\n\n function abi_encode_tuple_t_array$_t_struct$_Facet_$11859_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_Facet_$11859_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_array$_t_struct$_Facet_$11859_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_Facet_$11859_memory_ptr_$dyn_memory_ptr_fromStack(value0, tail)\n\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function array_storeLengthForEncoding_t_array$_t_bytes4_$dyn_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n // bytes4[] -> bytes4[]\n function abi_encode_t_array$_t_bytes4_$dyn_memory_ptr_to_t_array$_t_bytes4_$dyn_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_array$_t_bytes4_$dyn_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_array$_t_bytes4_$dyn_memory_ptr_fromStack(pos, length)\n let baseRef := array_dataslot_t_array$_t_bytes4_$dyn_memory_ptr(value)\n let srcPtr := baseRef\n for { let i := 0 } lt(i, length) { i := add(i, 1) }\n {\n let elementValue0 := mload(srcPtr)\n pos := abi_encodeUpdatedPos_t_bytes4_to_t_bytes4(elementValue0, pos)\n srcPtr := array_nextElement_t_array$_t_bytes4_$dyn_memory_ptr(srcPtr)\n }\n end := pos\n }\n\n function abi_encode_tuple_t_array$_t_bytes4_$dyn_memory_ptr__to_t_array$_t_bytes4_$dyn_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_array$_t_bytes4_$dyn_memory_ptr_to_t_array$_t_bytes4_$dyn_memory_ptr_fromStack(value0, tail)\n\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function panic_error_0x32() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function increment_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n ret := add(value, 1)\n }\n\n}\n","id":61,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100575760003560e01c806301ffc9a71461005c57806352ef6b2c1461008c5780637a0ed627146100aa578063adfca15e146100c8578063cdffacc6146100f8575b600080fd5b6100766004803603810190610071919061068f565b610128565b60405161008391906106d7565b60405180910390f35b61009461019e565b6040516100a191906107e2565b60405180910390f35b6100b261023b565b6040516100bf91906109c1565b60405180910390f35b6100e260048036038101906100dd9190610a0f565b61045e565b6040516100ef9190610aab565b60405180910390f35b610112600480360381019061010d919061068f565b610549565b60405161011f9190610adc565b60405180910390f35b6000806101336105d5565b9050806003016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff16915050919050565b606060006101aa6105d5565b90508060020180548060200260200160405190810160405280929190818152602001828054801561023057602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116101e6575b505050505091505090565b606060006102476105d5565b90506000816002018054905090508067ffffffffffffffff81111561026f5761026e610af7565b5b6040519080825280602002602001820160405280156102a857816020015b610295610602565b81526020019060019003908161028d5790505b50925060005b818110156104585760008360020182815481106102ce576102cd610b26565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508085838151811061030f5761030e610b26565b5b60200260200101516000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508360010160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000180548060200260200160405190810160405280929190818152602001828054801561041d57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116103ca5790505b505050505085838151811061043557610434610b26565b5b60200260200101516020018190525050808061045090610b8e565b9150506102ae565b50505090565b6060600061046a6105d5565b90508060010160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000180548060200260200160405190810160405280929190818152602001828054801561053c57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116104e95790505b5050505050915050919050565b6000806105546105d5565b9050806000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915050919050565b6000807fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90508091505090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61066c81610637565b811461067757600080fd5b50565b60008135905061068981610663565b92915050565b6000602082840312156106a5576106a4610632565b5b60006106b38482850161067a565b91505092915050565b60008115159050919050565b6106d1816106bc565b82525050565b60006020820190506106ec60008301846106c8565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006107498261071e565b9050919050565b6107598161073e565b82525050565b600061076b8383610750565b60208301905092915050565b6000602082019050919050565b600061078f826106f2565b61079981856106fd565b93506107a48361070e565b8060005b838110156107d55781516107bc888261075f565b97506107c783610777565b9250506001810190506107a8565b5085935050505092915050565b600060208201905081810360008301526107fc8184610784565b905092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61086581610637565b82525050565b6000610877838361085c565b60208301905092915050565b6000602082019050919050565b600061089b82610830565b6108a5818561083b565b93506108b08361084c565b8060005b838110156108e15781516108c8888261086b565b97506108d383610883565b9250506001810190506108b4565b5085935050505092915050565b60006040830160008301516109066000860182610750565b506020830151848203602086015261091e8282610890565b9150508091505092915050565b600061093783836108ee565b905092915050565b6000602082019050919050565b600061095782610804565b610961818561080f565b93508360208202850161097385610820565b8060005b858110156109af5784840389528151610990858261092b565b945061099b8361093f565b925060208a01995050600181019050610977565b50829750879550505050505092915050565b600060208201905081810360008301526109db818461094c565b905092915050565b6109ec8161073e565b81146109f757600080fd5b50565b600081359050610a09816109e3565b92915050565b600060208284031215610a2557610a24610632565b5b6000610a33848285016109fa565b91505092915050565b600082825260208201905092915050565b6000610a5882610830565b610a628185610a3c565b9350610a6d8361084c565b8060005b83811015610a9e578151610a85888261086b565b9750610a9083610883565b925050600181019050610a71565b5085935050505092915050565b60006020820190508181036000830152610ac58184610a4d565b905092915050565b610ad68161073e565b82525050565b6000602082019050610af16000830184610acd565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000819050919050565b6000610b9982610b84565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610bcb57610bca610b55565b5b60018201905091905056fea2646970667358221220805c03d17666dad7df5b576a9739aec3ff4e9c57502765e60e3dea1b8433247b64736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x57 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x5C JUMPI DUP1 PUSH4 0x52EF6B2C EQ PUSH2 0x8C JUMPI DUP1 PUSH4 0x7A0ED627 EQ PUSH2 0xAA JUMPI DUP1 PUSH4 0xADFCA15E EQ PUSH2 0xC8 JUMPI DUP1 PUSH4 0xCDFFACC6 EQ PUSH2 0xF8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x76 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x71 SWAP2 SWAP1 PUSH2 0x68F JUMP JUMPDEST PUSH2 0x128 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x83 SWAP2 SWAP1 PUSH2 0x6D7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x94 PUSH2 0x19E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA1 SWAP2 SWAP1 PUSH2 0x7E2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xB2 PUSH2 0x23B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xBF SWAP2 SWAP1 PUSH2 0x9C1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xE2 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xDD SWAP2 SWAP1 PUSH2 0xA0F JUMP JUMPDEST PUSH2 0x45E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xEF SWAP2 SWAP1 PUSH2 0xAAB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x112 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x10D SWAP2 SWAP1 PUSH2 0x68F JUMP JUMPDEST PUSH2 0x549 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x11F SWAP2 SWAP1 PUSH2 0xADC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x133 PUSH2 0x5D5 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x3 ADD PUSH1 0x0 DUP5 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x1AA PUSH2 0x5D5 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x2 ADD DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x230 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH2 0x1E6 JUMPI JUMPDEST POP POP POP POP POP SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x247 PUSH2 0x5D5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x2 ADD DUP1 SLOAD SWAP1 POP SWAP1 POP DUP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x26F JUMPI PUSH2 0x26E PUSH2 0xAF7 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2A8 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x295 PUSH2 0x602 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x28D JUMPI SWAP1 POP JUMPDEST POP SWAP3 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x458 JUMPI PUSH1 0x0 DUP4 PUSH1 0x2 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x2CE JUMPI PUSH2 0x2CD PUSH2 0xB26 JUMP JUMPDEST JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP1 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x30F JUMPI PUSH2 0x30E PUSH2 0xB26 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP DUP4 PUSH1 0x1 ADD PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x41D JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xE0 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x4 ADD SWAP1 PUSH1 0x20 DUP3 PUSH1 0x3 ADD DIV SWAP3 DUP4 ADD SWAP3 PUSH1 0x1 SUB DUP3 MUL SWAP2 POP DUP1 DUP5 GT PUSH2 0x3CA JUMPI SWAP1 POP JUMPDEST POP POP POP POP POP DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x435 JUMPI PUSH2 0x434 PUSH2 0xB26 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD DUP2 SWAP1 MSTORE POP POP DUP1 DUP1 PUSH2 0x450 SWAP1 PUSH2 0xB8E JUMP JUMPDEST SWAP2 POP POP PUSH2 0x2AE JUMP JUMPDEST POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x46A PUSH2 0x5D5 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 ADD PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x53C JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xE0 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x4 ADD SWAP1 PUSH1 0x20 DUP3 PUSH1 0x3 ADD DIV SWAP3 DUP4 ADD SWAP3 PUSH1 0x1 SUB DUP3 MUL SWAP2 POP DUP1 DUP5 GT PUSH2 0x4E9 JUMPI SWAP1 POP JUMPDEST POP POP POP POP POP SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x554 PUSH2 0x5D5 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x0 ADD PUSH1 0x0 DUP5 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131C SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x66C DUP2 PUSH2 0x637 JUMP JUMPDEST DUP2 EQ PUSH2 0x677 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x689 DUP2 PUSH2 0x663 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x6A5 JUMPI PUSH2 0x6A4 PUSH2 0x632 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x6B3 DUP5 DUP3 DUP6 ADD PUSH2 0x67A JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x6D1 DUP2 PUSH2 0x6BC JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x6EC PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x6C8 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x749 DUP3 PUSH2 0x71E JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x759 DUP2 PUSH2 0x73E JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x76B DUP4 DUP4 PUSH2 0x750 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x78F DUP3 PUSH2 0x6F2 JUMP JUMPDEST PUSH2 0x799 DUP2 DUP6 PUSH2 0x6FD JUMP JUMPDEST SWAP4 POP PUSH2 0x7A4 DUP4 PUSH2 0x70E JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x7D5 JUMPI DUP2 MLOAD PUSH2 0x7BC DUP9 DUP3 PUSH2 0x75F JUMP JUMPDEST SWAP8 POP PUSH2 0x7C7 DUP4 PUSH2 0x777 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x7A8 JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x7FC DUP2 DUP5 PUSH2 0x784 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x865 DUP2 PUSH2 0x637 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x877 DUP4 DUP4 PUSH2 0x85C JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x89B DUP3 PUSH2 0x830 JUMP JUMPDEST PUSH2 0x8A5 DUP2 DUP6 PUSH2 0x83B JUMP JUMPDEST SWAP4 POP PUSH2 0x8B0 DUP4 PUSH2 0x84C JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x8E1 JUMPI DUP2 MLOAD PUSH2 0x8C8 DUP9 DUP3 PUSH2 0x86B JUMP JUMPDEST SWAP8 POP PUSH2 0x8D3 DUP4 PUSH2 0x883 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x8B4 JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP4 ADD PUSH1 0x0 DUP4 ADD MLOAD PUSH2 0x906 PUSH1 0x0 DUP7 ADD DUP3 PUSH2 0x750 JUMP JUMPDEST POP PUSH1 0x20 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH1 0x20 DUP7 ADD MSTORE PUSH2 0x91E DUP3 DUP3 PUSH2 0x890 JUMP JUMPDEST SWAP2 POP POP DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x937 DUP4 DUP4 PUSH2 0x8EE JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x957 DUP3 PUSH2 0x804 JUMP JUMPDEST PUSH2 0x961 DUP2 DUP6 PUSH2 0x80F JUMP JUMPDEST SWAP4 POP DUP4 PUSH1 0x20 DUP3 MUL DUP6 ADD PUSH2 0x973 DUP6 PUSH2 0x820 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x9AF JUMPI DUP5 DUP5 SUB DUP10 MSTORE DUP2 MLOAD PUSH2 0x990 DUP6 DUP3 PUSH2 0x92B JUMP JUMPDEST SWAP5 POP PUSH2 0x99B DUP4 PUSH2 0x93F JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP11 ADD SWAP10 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x977 JUMP JUMPDEST POP DUP3 SWAP8 POP DUP8 SWAP6 POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x9DB DUP2 DUP5 PUSH2 0x94C JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x9EC DUP2 PUSH2 0x73E JUMP JUMPDEST DUP2 EQ PUSH2 0x9F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0xA09 DUP2 PUSH2 0x9E3 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA25 JUMPI PUSH2 0xA24 PUSH2 0x632 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xA33 DUP5 DUP3 DUP6 ADD PUSH2 0x9FA JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA58 DUP3 PUSH2 0x830 JUMP JUMPDEST PUSH2 0xA62 DUP2 DUP6 PUSH2 0xA3C JUMP JUMPDEST SWAP4 POP PUSH2 0xA6D DUP4 PUSH2 0x84C JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA9E JUMPI DUP2 MLOAD PUSH2 0xA85 DUP9 DUP3 PUSH2 0x86B JUMP JUMPDEST SWAP8 POP PUSH2 0xA90 DUP4 PUSH2 0x883 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0xA71 JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xAC5 DUP2 DUP5 PUSH2 0xA4D JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xAD6 DUP2 PUSH2 0x73E JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0xAF1 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0xACD JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB99 DUP3 PUSH2 0xB84 JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0xBCB JUMPI PUSH2 0xBCA PUSH2 0xB55 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP1 0x5C SUB 0xD1 PUSH23 0x66DAD7DF5B576A9739AEC3FF4E9C57502765E60E3DEA1B DUP5 CALLER 0x24 PUSH28 0x64736F6C634300081200330000000000000000000000000000000000 ","sourceMap":"367:2622:31:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2752:235;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1917:255;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;776:554;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1486:330;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2402:312;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2752:235;2846:4;2862:35;2900:28;:26;:28::i;:::-;2862:66;;2945:1;:21;;:35;2967:12;2945:35;;;;;;;;;;;;;;;;;;;;;;;;;;;2938:42;;;2752:235;;;:::o;1917:255::-;2007:32;2055:35;2093:28;:26;:28::i;:::-;2055:66;;2149:1;:16;;2131:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2045:127;1917:255;:::o;776:554::-;826:22;860:35;898:28;:26;:28::i;:::-;860:66;;936:17;956:1;:16;;:23;;;;936:43;;1011:9;999:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;989:32;;1036:9;1031:293;1051:9;1047:1;:13;1031:293;;;1081:21;1105:1;:16;;1122:1;1105:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1081:43;;1164:13;1138:7;1146:1;1138:10;;;;;;;;:::i;:::-;;;;;;;;:23;;:39;;;;;;;;;;;1222:1;:41;;:56;1264:13;1222:56;;;;;;;;;;;;;;;:91;;1191:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:7;1199:1;1191:10;;;;;;;;:::i;:::-;;;;;;;;:28;;:122;;;;1067:257;1062:3;;;;;:::i;:::-;;;;1031:293;;;;850:480;;776:554;:::o;1486:330::-;1580:39;1631:35;1669:28;:26;:28::i;:::-;1631:66;;1733:1;:37;;:45;1771:6;1733:45;;;;;;;;;;;;;;;:76;;1707:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1621:195;1486:330;;;:::o;2402:312::-;2496:21;2529:35;2567:28;:26;:28::i;:::-;2529:66;;2621:1;:41;;:60;2663:17;2621:60;;;;;;;;;;;;;;;;;:86;;;;;;;;;;;;2605:102;;2519:195;2402:312;;;:::o;1445:224:49:-;1519:24;1559:16;443:45;1559:43;;1645:8;1635:18;;1621:42;1445:224;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;:::o;88:117:61:-;197:1;194;187:12;334:149;370:7;410:66;403:5;399:78;388:89;;334:149;;;:::o;489:120::-;561:23;578:5;561:23;:::i;:::-;554:5;551:34;541:62;;599:1;596;589:12;541:62;489:120;:::o;615:137::-;660:5;698:6;685:20;676:29;;714:32;740:5;714:32;:::i;:::-;615:137;;;;:::o;758:327::-;816:6;865:2;853:9;844:7;840:23;836:32;833:119;;;871:79;;:::i;:::-;833:119;991:1;1016:52;1060:7;1051:6;1040:9;1036:22;1016:52;:::i;:::-;1006:62;;962:116;758:327;;;;:::o;1091:90::-;1125:7;1168:5;1161:13;1154:21;1143:32;;1091:90;;;:::o;1187:109::-;1268:21;1283:5;1268:21;:::i;:::-;1263:3;1256:34;1187:109;;:::o;1302:210::-;1389:4;1427:2;1416:9;1412:18;1404:26;;1440:65;1502:1;1491:9;1487:17;1478:6;1440:65;:::i;:::-;1302:210;;;;:::o;1518:114::-;1585:6;1619:5;1613:12;1603:22;;1518:114;;;:::o;1638:184::-;1737:11;1771:6;1766:3;1759:19;1811:4;1806:3;1802:14;1787:29;;1638:184;;;;:::o;1828:132::-;1895:4;1918:3;1910:11;;1948:4;1943:3;1939:14;1931:22;;1828:132;;;:::o;1966:126::-;2003:7;2043:42;2036:5;2032:54;2021:65;;1966:126;;;:::o;2098:96::-;2135:7;2164:24;2182:5;2164:24;:::i;:::-;2153:35;;2098:96;;;:::o;2200:108::-;2277:24;2295:5;2277:24;:::i;:::-;2272:3;2265:37;2200:108;;:::o;2314:179::-;2383:10;2404:46;2446:3;2438:6;2404:46;:::i;:::-;2482:4;2477:3;2473:14;2459:28;;2314:179;;;;:::o;2499:113::-;2569:4;2601;2596:3;2592:14;2584:22;;2499:113;;;:::o;2648:732::-;2767:3;2796:54;2844:5;2796:54;:::i;:::-;2866:86;2945:6;2940:3;2866:86;:::i;:::-;2859:93;;2976:56;3026:5;2976:56;:::i;:::-;3055:7;3086:1;3071:284;3096:6;3093:1;3090:13;3071:284;;;3172:6;3166:13;3199:63;3258:3;3243:13;3199:63;:::i;:::-;3192:70;;3285:60;3338:6;3285:60;:::i;:::-;3275:70;;3131:224;3118:1;3115;3111:9;3106:14;;3071:284;;;3075:14;3371:3;3364:10;;2772:608;;;2648:732;;;;:::o;3386:373::-;3529:4;3567:2;3556:9;3552:18;3544:26;;3616:9;3610:4;3606:20;3602:1;3591:9;3587:17;3580:47;3644:108;3747:4;3738:6;3644:108;:::i;:::-;3636:116;;3386:373;;;;:::o;3765:138::-;3856:6;3890:5;3884:12;3874:22;;3765:138;;;:::o;3909:208::-;4032:11;4066:6;4061:3;4054:19;4106:4;4101:3;4097:14;4082:29;;3909:208;;;;:::o;4123:156::-;4214:4;4237:3;4229:11;;4267:4;4262:3;4258:14;4250:22;;4123:156;;;:::o;4285:113::-;4351:6;4385:5;4379:12;4369:22;;4285:113;;;:::o;4404:173::-;4492:11;4526:6;4521:3;4514:19;4566:4;4561:3;4557:14;4542:29;;4404:173;;;;:::o;4583:131::-;4649:4;4672:3;4664:11;;4702:4;4697:3;4693:14;4685:22;;4583:131;;;:::o;4720:105::-;4795:23;4812:5;4795:23;:::i;:::-;4790:3;4783:36;4720:105;;:::o;4831:175::-;4898:10;4919:44;4959:3;4951:6;4919:44;:::i;:::-;4995:4;4990:3;4986:14;4972:28;;4831:175;;;;:::o;5012:112::-;5081:4;5113;5108:3;5104:14;5096:22;;5012:112;;;:::o;5158:704::-;5265:3;5294:53;5341:5;5294:53;:::i;:::-;5363:75;5431:6;5426:3;5363:75;:::i;:::-;5356:82;;5462:55;5511:5;5462:55;:::i;:::-;5540:7;5571:1;5556:281;5581:6;5578:1;5575:13;5556:281;;;5657:6;5651:13;5684:61;5741:3;5726:13;5684:61;:::i;:::-;5677:68;;5768:59;5820:6;5768:59;:::i;:::-;5758:69;;5616:221;5603:1;5600;5596:9;5591:14;;5556:281;;;5560:14;5853:3;5846:10;;5270:592;;;5158:704;;;;:::o;5918:643::-;6025:3;6061:4;6056:3;6052:14;6156:4;6149:5;6145:16;6139:23;6175:63;6232:4;6227:3;6223:14;6209:12;6175:63;:::i;:::-;6076:172;6343:4;6336:5;6332:16;6326:23;6396:3;6390:4;6386:14;6379:4;6374:3;6370:14;6363:38;6422:101;6518:4;6504:12;6422:101;:::i;:::-;6414:109;;6258:276;6551:4;6544:11;;6030:531;5918:643;;;;:::o;6567:252::-;6684:10;6719:94;6809:3;6801:6;6719:94;:::i;:::-;6705:108;;6567:252;;;;:::o;6825:137::-;6919:4;6951;6946:3;6942:14;6934:22;;6825:137;;;:::o;7022:1103::-;7189:3;7218:78;7290:5;7218:78;:::i;:::-;7312:110;7415:6;7410:3;7312:110;:::i;:::-;7305:117;;7448:3;7493:4;7485:6;7481:17;7476:3;7472:27;7523:80;7597:5;7523:80;:::i;:::-;7626:7;7657:1;7642:438;7667:6;7664:1;7661:13;7642:438;;;7738:9;7732:4;7728:20;7723:3;7716:33;7789:6;7783:13;7817:112;7924:4;7909:13;7817:112;:::i;:::-;7809:120;;7952:84;8029:6;7952:84;:::i;:::-;7942:94;;8065:4;8060:3;8056:14;8049:21;;7702:378;7689:1;7686;7682:9;7677:14;;7642:438;;;7646:14;8096:4;8089:11;;8116:3;8109:10;;7194:931;;;;;7022:1103;;;;:::o;8131:469::-;8322:4;8360:2;8349:9;8345:18;8337:26;;8409:9;8403:4;8399:20;8395:1;8384:9;8380:17;8373:47;8437:156;8588:4;8579:6;8437:156;:::i;:::-;8429:164;;8131:469;;;;:::o;8606:122::-;8679:24;8697:5;8679:24;:::i;:::-;8672:5;8669:35;8659:63;;8718:1;8715;8708:12;8659:63;8606:122;:::o;8734:139::-;8780:5;8818:6;8805:20;8796:29;;8834:33;8861:5;8834:33;:::i;:::-;8734:139;;;;:::o;8879:329::-;8938:6;8987:2;8975:9;8966:7;8962:23;8958:32;8955:119;;;8993:79;;:::i;:::-;8955:119;9113:1;9138:53;9183:7;9174:6;9163:9;9159:22;9138:53;:::i;:::-;9128:63;;9084:117;8879:329;;;;:::o;9214:183::-;9312:11;9346:6;9341:3;9334:19;9386:4;9381:3;9377:14;9362:29;;9214:183;;;;:::o;9431:724::-;9548:3;9577:53;9624:5;9577:53;:::i;:::-;9646:85;9724:6;9719:3;9646:85;:::i;:::-;9639:92;;9755:55;9804:5;9755:55;:::i;:::-;9833:7;9864:1;9849:281;9874:6;9871:1;9868:13;9849:281;;;9950:6;9944:13;9977:61;10034:3;10019:13;9977:61;:::i;:::-;9970:68;;10061:59;10113:6;10061:59;:::i;:::-;10051:69;;9909:221;9896:1;9893;9889:9;9884:14;;9849:281;;;9853:14;10146:3;10139:10;;9553:602;;;9431:724;;;;:::o;10161:369::-;10302:4;10340:2;10329:9;10325:18;10317:26;;10389:9;10383:4;10379:20;10375:1;10364:9;10360:17;10353:47;10417:106;10518:4;10509:6;10417:106;:::i;:::-;10409:114;;10161:369;;;;:::o;10536:118::-;10623:24;10641:5;10623:24;:::i;:::-;10618:3;10611:37;10536:118;;:::o;10660:222::-;10753:4;10791:2;10780:9;10776:18;10768:26;;10804:71;10872:1;10861:9;10857:17;10848:6;10804:71;:::i;:::-;10660:222;;;;:::o;10888:180::-;10936:77;10933:1;10926:88;11033:4;11030:1;11023:15;11057:4;11054:1;11047:15;11074:180;11122:77;11119:1;11112:88;11219:4;11216:1;11209:15;11243:4;11240:1;11233:15;11260:180;11308:77;11305:1;11298:88;11405:4;11402:1;11395:15;11429:4;11426:1;11419:15;11446:77;11483:7;11512:5;11501:16;;11446:77;;;:::o;11529:233::-;11568:3;11591:24;11609:5;11591:24;:::i;:::-;11582:33;;11637:66;11630:5;11627:77;11624:103;;11707:18;;:::i;:::-;11624:103;11754:1;11747:5;11743:13;11736:20;;11529:233;;;:::o"},"methodIdentifiers":{"facetAddress(bytes4)":"cdffacc6","facetAddresses()":"52ef6b2c","facetFunctionSelectors(address)":"adfca15e","facets()":"7a0ed627","supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_functionSelector\",\"type\":\"bytes4\"}],\"name\":\"facetAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"facetAddress_\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"facetAddresses\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"facetAddresses_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_facet\",\"type\":\"address\"}],\"name\":\"facetFunctionSelectors\",\"outputs\":[{\"internalType\":\"bytes4[]\",\"name\":\"facetFunctionSelectors_\",\"type\":\"bytes4[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"facets\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"facetAddress\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"functionSelectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct ILoupe.Facet[]\",\"name\":\"facets_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"facetAddress(bytes4)\":{\"details\":\"If facet is not found return address(0).\",\"params\":{\"_functionSelector\":\"The function selector.\"},\"returns\":{\"facetAddress_\":\"The facet address.\"}},\"facetAddresses()\":{\"returns\":{\"facetAddresses_\":\"facetAddresses_\"}},\"facetFunctionSelectors(address)\":{\"params\":{\"_facet\":\"The facet address.\"},\"returns\":{\"facetFunctionSelectors_\":\"facetFunctionSelectors_\"}},\"facets()\":{\"returns\":{\"facets_\":\"Facet\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"facetAddress(bytes4)\":{\"notice\":\"Gets the facet that supports the given selector.\"},\"facetAddresses()\":{\"notice\":\"Get all the facet addresses used by a diamond.\"},\"facetFunctionSelectors(address)\":{\"notice\":\"Gets all the function selectors provided by a facet.\"},\"facets()\":{\"notice\":\"Gets all facets and their selectors.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/facets/utils/Loupe.sol\":\"Loupe\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/facets/utils/Loupe.sol\":{\"keccak256\":\"0x4024be10674996ddccd5b99ff726254e3c9efef4cd5024bd8488e46742bbc561\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72e04ff6e7525c28f9f09cb9ad58a2b1920c87d3df0ddbcea604f73cb7585e56\",\"dweb:/ipfs/QmbNnVe8knTXY6bYoQrNW96wutPNKCHoSeX4cSfSWQZK37\"]},\"contracts/interfaces/utils/ICut.sol\":{\"keccak256\":\"0xeaf211b0c9da3a46171250f7cf949ffc171447c36b68451013d00a530281790a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1de62f56aba981f3430068a960272e56cbfece148d15861e410bd89f40a0f52d\",\"dweb:/ipfs/QmRw5Wrtm1NRBrnUxyKspheunoGarnkCmEYG2AFZpPeo5x\"]},\"contracts/interfaces/utils/IERC165.sol\":{\"keccak256\":\"0x3adf1411c3cea1e9c8808e7de6f6b3d9050b3ce2f8c974b3ea36e5e774870a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c206e2bb1a3a711b9bdcb8fe22680a12dd88ba4eccb055376e5f6d06eaa393c9\",\"dweb:/ipfs/QmZEj2vabmhVmBEx39LNArRM1U4u69oU1waZ9nDUTRfRX4\"]},\"contracts/interfaces/utils/ILoupe.sol\":{\"keccak256\":\"0x4c5bc561178aa61cd464da8d76ac3853dbd118d8de6709273045e1580def2453\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34ca0c910c0b72d0603fc3ffc5aa28935982396a249419448199c341d8e883fe\",\"dweb:/ipfs/QmSFcJNgH9tFesJDN7W59Pj4ArwuTT1EoMDa6Pqj2Uo3zN\"]},\"contracts/libraries/utils/LibDiamond.sol\":{\"keccak256\":\"0x79254e503c12329739379fe3900cf174268bfe2c65cf5b7c1396b17783939834\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d405043f0b78b814d17fb721b476d2ab7a9d5a0c6065f6ecd0d4007c43e6b9fe\",\"dweb:/ipfs/QmPEsvxHnZKp84ww7WnQKjGo89eiVzXxcgdGxmMCcWbkZE\"]}},\"version\":1}"}},"contracts/facets/utils/Utility.sol":{"Utility":{"abi":[{"inputs":[],"name":"FailedWithdrawNativeToken","type":"error"},{"inputs":[],"name":"getNativeBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawNativeBalance","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{"@_32":{"entryPoint":null,"id":32,"parameterSlots":0,"returnSlots":0}},"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b506001600081905550610a8b806100286000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806388a9d5541461003b578063c9a463e214610059575b600080fd5b610043610075565b6040516100509190610566565b60405180910390f35b610073600480360381019061006e91906105b2565b61007d565b005b600047905090565b610085610161565b6100b26040516020016100979061063c565b604051602081830303815290604052805190602001206101b0565b60003373ffffffffffffffffffffffffffffffffffffffff16826040516100d89061068d565b60006040518083038185875af1925050503d8060008114610115576040519150601f19603f3d011682016040523d82523d6000602084013e61011a565b606091505b5050905080610155576040517fe6e2afc700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5061015e6101bc565b50565b6002600054036101a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161019d906106ee565b60405180910390fd5b6002600081905550565b6101b9816101c6565b50565b6001600081905550565b6101d081336101d3565b50565b6101dd8282610270565b61026c576102028173ffffffffffffffffffffffffffffffffffffffff1660146102e4565b6102108360001c60206102e4565b604051602001610221929190610817565b6040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610263919061089b565b60405180910390fd5b5050565b600061027a610520565b600001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6060600060028360026102f791906108ec565b610301919061092e565b67ffffffffffffffff81111561031a57610319610962565b5b6040519080825280601f01601f19166020018201604052801561034c5781602001600182028036833780820191505090505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061038457610383610991565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106103e8576103e7610991565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000600184600261042891906108ec565b610432919061092e565b90505b60018111156104d2577f3031323334353637383961626364656600000000000000000000000000000000600f86166010811061047457610473610991565b5b1a60f81b82828151811061048b5761048a610991565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c9450806104cb906109c0565b9050610435565b5060008414610516576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050d90610a35565b60405180910390fd5b8091505092915050565b6000807f4cd15452b25e815d3f9d1a3c7edd985a178edf5eb3461a1acbf855517423d69490508091505090565b6000819050919050565b6105608161054d565b82525050565b600060208201905061057b6000830184610557565b92915050565b600080fd5b61058f8161054d565b811461059a57600080fd5b50565b6000813590506105ac81610586565b92915050565b6000602082840312156105c8576105c7610581565b5b60006105d68482850161059d565b91505092915050565b600082825260208201905092915050565b7f5452454153555245525f524f4c45000000000000000000000000000000000000600082015250565b6000610626600e836105df565b9150610631826105f0565b602082019050919050565b6000602082019050818103600083015261065581610619565b9050919050565b600081905092915050565b50565b600061067760008361065c565b915061068282610667565b600082019050919050565b60006106988261066a565b9150819050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b60006106d8601f836105df565b91506106e3826106a2565b602082019050919050565b60006020820190508181036000830152610707816106cb565b9050919050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b600061074f60178361070e565b915061075a82610719565b601782019050919050565b600081519050919050565b60005b8381101561078e578082015181840152602081019050610773565b60008484015250505050565b60006107a582610765565b6107af818561070e565b93506107bf818560208601610770565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b600061080160118361070e565b915061080c826107cb565b601182019050919050565b600061082282610742565b915061082e828561079a565b9150610839826107f4565b9150610845828461079a565b91508190509392505050565b6000601f19601f8301169050919050565b600061086d82610765565b61087781856105df565b9350610887818560208601610770565b61089081610851565b840191505092915050565b600060208201905081810360008301526108b58184610862565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006108f78261054d565b91506109028361054d565b92508282026109108161054d565b91508282048414831517610927576109266108bd565b5b5092915050565b60006109398261054d565b91506109448361054d565b925082820190508082111561095c5761095b6108bd565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006109cb8261054d565b9150600082036109de576109dd6108bd565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b6000610a1f6020836105df565b9150610a2a826109e9565b602082019050919050565b60006020820190508181036000830152610a4e81610a12565b905091905056fea2646970667358221220bcbd07bd1e012cedbca3fe8d3feeefd34ac7bf87c5b76c51b796aaaab2c13db064736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x0 DUP2 SWAP1 SSTORE POP PUSH2 0xA8B DUP1 PUSH2 0x28 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x88A9D554 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xC9A463E2 EQ PUSH2 0x59 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x75 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x50 SWAP2 SWAP1 PUSH2 0x566 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x73 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x6E SWAP2 SWAP1 PUSH2 0x5B2 JUMP JUMPDEST PUSH2 0x7D JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SELFBALANCE SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x85 PUSH2 0x161 JUMP JUMPDEST PUSH2 0xB2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x97 SWAP1 PUSH2 0x63C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0x1B0 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x40 MLOAD PUSH2 0xD8 SWAP1 PUSH2 0x68D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x115 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x11A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x155 JUMPI PUSH1 0x40 MLOAD PUSH32 0xE6E2AFC700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x15E PUSH2 0x1BC JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SLOAD SUB PUSH2 0x1A6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x19D SWAP1 PUSH2 0x6EE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x0 DUP2 SWAP1 SSTORE POP JUMP JUMPDEST PUSH2 0x1B9 DUP2 PUSH2 0x1C6 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 DUP2 SWAP1 SSTORE POP JUMP JUMPDEST PUSH2 0x1D0 DUP2 CALLER PUSH2 0x1D3 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x1DD DUP3 DUP3 PUSH2 0x270 JUMP JUMPDEST PUSH2 0x26C JUMPI PUSH2 0x202 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x14 PUSH2 0x2E4 JUMP JUMPDEST PUSH2 0x210 DUP4 PUSH1 0x0 SHR PUSH1 0x20 PUSH2 0x2E4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x221 SWAP3 SWAP2 SWAP1 PUSH2 0x817 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x263 SWAP2 SWAP1 PUSH2 0x89B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27A PUSH2 0x520 JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x2 DUP4 PUSH1 0x2 PUSH2 0x2F7 SWAP2 SWAP1 PUSH2 0x8EC JUMP JUMPDEST PUSH2 0x301 SWAP2 SWAP1 PUSH2 0x92E JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x31A JUMPI PUSH2 0x319 PUSH2 0x962 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x34C JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x384 JUMPI PUSH2 0x383 PUSH2 0x991 JUMP JUMPDEST JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH32 0x7800000000000000000000000000000000000000000000000000000000000000 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x3E8 JUMPI PUSH2 0x3E7 PUSH2 0x991 JUMP JUMPDEST JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x0 PUSH1 0x1 DUP5 PUSH1 0x2 PUSH2 0x428 SWAP2 SWAP1 PUSH2 0x8EC JUMP JUMPDEST PUSH2 0x432 SWAP2 SWAP1 PUSH2 0x92E JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x4D2 JUMPI PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 PUSH1 0xF DUP7 AND PUSH1 0x10 DUP2 LT PUSH2 0x474 JUMPI PUSH2 0x473 PUSH2 0x991 JUMP JUMPDEST JUMPDEST BYTE PUSH1 0xF8 SHL DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x48B JUMPI PUSH2 0x48A PUSH2 0x991 JUMP JUMPDEST JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x4 DUP6 SWAP1 SHR SWAP5 POP DUP1 PUSH2 0x4CB SWAP1 PUSH2 0x9C0 JUMP JUMPDEST SWAP1 POP PUSH2 0x435 JUMP JUMPDEST POP PUSH1 0x0 DUP5 EQ PUSH2 0x516 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x50D SWAP1 PUSH2 0xA35 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x4CD15452B25E815D3F9D1A3C7EDD985A178EDF5EB3461A1ACBF855517423D694 SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x560 DUP2 PUSH2 0x54D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x57B PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x557 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x58F DUP2 PUSH2 0x54D JUMP JUMPDEST DUP2 EQ PUSH2 0x59A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x5AC DUP2 PUSH2 0x586 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5C8 JUMPI PUSH2 0x5C7 PUSH2 0x581 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x5D6 DUP5 DUP3 DUP6 ADD PUSH2 0x59D JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x5452454153555245525F524F4C45000000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x626 PUSH1 0xE DUP4 PUSH2 0x5DF JUMP JUMPDEST SWAP2 POP PUSH2 0x631 DUP3 PUSH2 0x5F0 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x655 DUP2 PUSH2 0x619 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x677 PUSH1 0x0 DUP4 PUSH2 0x65C JUMP JUMPDEST SWAP2 POP PUSH2 0x682 DUP3 PUSH2 0x667 JUMP JUMPDEST PUSH1 0x0 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x698 DUP3 PUSH2 0x66A JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x5265656E7472616E637947756172643A207265656E7472616E742063616C6C00 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6D8 PUSH1 0x1F DUP4 PUSH2 0x5DF JUMP JUMPDEST SWAP2 POP PUSH2 0x6E3 DUP3 PUSH2 0x6A2 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x707 DUP2 PUSH2 0x6CB JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x416363657373436F6E74726F6C3A206163636F756E7420000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x74F PUSH1 0x17 DUP4 PUSH2 0x70E JUMP JUMPDEST SWAP2 POP PUSH2 0x75A DUP3 PUSH2 0x719 JUMP JUMPDEST PUSH1 0x17 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x78E JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x773 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7A5 DUP3 PUSH2 0x765 JUMP JUMPDEST PUSH2 0x7AF DUP2 DUP6 PUSH2 0x70E JUMP JUMPDEST SWAP4 POP PUSH2 0x7BF DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x770 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x206973206D697373696E6720726F6C6520000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x801 PUSH1 0x11 DUP4 PUSH2 0x70E JUMP JUMPDEST SWAP2 POP PUSH2 0x80C DUP3 PUSH2 0x7CB JUMP JUMPDEST PUSH1 0x11 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x822 DUP3 PUSH2 0x742 JUMP JUMPDEST SWAP2 POP PUSH2 0x82E DUP3 DUP6 PUSH2 0x79A JUMP JUMPDEST SWAP2 POP PUSH2 0x839 DUP3 PUSH2 0x7F4 JUMP JUMPDEST SWAP2 POP PUSH2 0x845 DUP3 DUP5 PUSH2 0x79A JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x86D DUP3 PUSH2 0x765 JUMP JUMPDEST PUSH2 0x877 DUP2 DUP6 PUSH2 0x5DF JUMP JUMPDEST SWAP4 POP PUSH2 0x887 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x770 JUMP JUMPDEST PUSH2 0x890 DUP2 PUSH2 0x851 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x8B5 DUP2 DUP5 PUSH2 0x862 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x8F7 DUP3 PUSH2 0x54D JUMP JUMPDEST SWAP2 POP PUSH2 0x902 DUP4 PUSH2 0x54D JUMP JUMPDEST SWAP3 POP DUP3 DUP3 MUL PUSH2 0x910 DUP2 PUSH2 0x54D JUMP JUMPDEST SWAP2 POP DUP3 DUP3 DIV DUP5 EQ DUP4 ISZERO OR PUSH2 0x927 JUMPI PUSH2 0x926 PUSH2 0x8BD JUMP JUMPDEST JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x939 DUP3 PUSH2 0x54D JUMP JUMPDEST SWAP2 POP PUSH2 0x944 DUP4 PUSH2 0x54D JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x95C JUMPI PUSH2 0x95B PUSH2 0x8BD JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x9CB DUP3 PUSH2 0x54D JUMP JUMPDEST SWAP2 POP PUSH1 0x0 DUP3 SUB PUSH2 0x9DE JUMPI PUSH2 0x9DD PUSH2 0x8BD JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 SUB SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x537472696E67733A20686578206C656E67746820696E73756666696369656E74 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA1F PUSH1 0x20 DUP4 PUSH2 0x5DF JUMP JUMPDEST SWAP2 POP PUSH2 0xA2A DUP3 PUSH2 0x9E9 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xA4E DUP2 PUSH2 0xA12 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBC 0xBD SMOD 0xBD 0x1E ADD 0x2C 0xED 0xBC LOG3 INVALID DUP14 EXTCODEHASH 0xEE 0xEF 0xD3 0x4A 0xC7 0xBF DUP8 0xC5 0xB7 PUSH13 0x51B796AAAAB2C13DB064736F6C PUSH4 0x43000812 STOP CALLER ","sourceMap":"325:495:32:-:0;;;;;;;;;;;;;1716:1:1;1821:7;:22;;;;325:495:32;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_checkRole_15290":{"entryPoint":454,"id":15290,"parameterSlots":1,"returnSlots":0},"@_checkRole_15332":{"entryPoint":467,"id":15332,"parameterSlots":2,"returnSlots":0},"@_hasRole_15278":{"entryPoint":624,"id":15278,"parameterSlots":2,"returnSlots":1},"@_nonReentrantAfter_66":{"entryPoint":444,"id":66,"parameterSlots":0,"returnSlots":0},"@_nonReentrantBefore_58":{"entryPoint":353,"id":58,"parameterSlots":0,"returnSlots":0},"@_requireOnlyRole_15259":{"entryPoint":432,"id":15259,"parameterSlots":1,"returnSlots":0},"@_storageAccessControl_15249":{"entryPoint":1312,"id":15249,"parameterSlots":0,"returnSlots":1},"@getNativeBalance_11280":{"entryPoint":117,"id":11280,"parameterSlots":0,"returnSlots":1},"@toHexString_1109":{"entryPoint":740,"id":1109,"parameterSlots":2,"returnSlots":1},"@withdrawNativeBalance_11314":{"entryPoint":125,"id":11314,"parameterSlots":1,"returnSlots":0},"abi_decode_t_uint256":{"entryPoint":1437,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256":{"entryPoint":1458,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack":{"entryPoint":2146,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":1946,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2_to_t_string_memory_ptr_fromStack":{"entryPoint":2578,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07_to_t_string_memory_ptr_fromStack":{"entryPoint":1561,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":1642,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_to_t_string_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":1858,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619_to_t_string_memory_ptr_fromStack":{"entryPoint":1739,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_to_t_string_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":2036,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_t_uint256_to_t_uint256_fromStack":{"entryPoint":1367,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":1677,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_packed_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_t_string_memory_ptr_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":2071,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":2203,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":2613,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":1596,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":1774,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":1382,"id":null,"parameterSlots":2,"returnSlots":1},"allocate_unbounded":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"array_length_t_string_memory_ptr":{"entryPoint":1893,"id":null,"parameterSlots":1,"returnSlots":1},"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":1628,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_fromStack":{"entryPoint":1503,"id":null,"parameterSlots":2,"returnSlots":1},"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack":{"entryPoint":1806,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":2350,"id":null,"parameterSlots":2,"returnSlots":1},"checked_mul_t_uint256":{"entryPoint":2284,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_t_uint256":{"entryPoint":1357,"id":null,"parameterSlots":1,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":1904,"id":null,"parameterSlots":3,"returnSlots":0},"decrement_t_uint256":{"entryPoint":2496,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":2237,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":2449,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":2402,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":1409,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of_32":{"entryPoint":2129,"id":null,"parameterSlots":1,"returnSlots":1},"store_literal_in_memory_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2":{"entryPoint":2537,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07":{"entryPoint":1520,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470":{"entryPoint":1639,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874":{"entryPoint":1817,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619":{"entryPoint":1698,"id":null,"parameterSlots":1,"returnSlots":0},"store_literal_in_memory_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69":{"entryPoint":1995,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_uint256":{"entryPoint":1414,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:10753:61","statements":[{"body":{"nodeType":"YulBlock","src":"52:32:61","statements":[{"nodeType":"YulAssignment","src":"62:16:61","value":{"name":"value","nodeType":"YulIdentifier","src":"73:5:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"62:7:61"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"34:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"44:7:61","type":""}],"src":"7:77:61"},{"body":{"nodeType":"YulBlock","src":"155:53:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"172:3:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"195:5:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"177:17:61"},"nodeType":"YulFunctionCall","src":"177:24:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"165:6:61"},"nodeType":"YulFunctionCall","src":"165:37:61"},"nodeType":"YulExpressionStatement","src":"165:37:61"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"143:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"150:3:61","type":""}],"src":"90:118:61"},{"body":{"nodeType":"YulBlock","src":"312:124:61","statements":[{"nodeType":"YulAssignment","src":"322:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"334:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"345:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"330:3:61"},"nodeType":"YulFunctionCall","src":"330:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"322:4:61"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"402:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"415:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"426:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"411:3:61"},"nodeType":"YulFunctionCall","src":"411:17:61"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"358:43:61"},"nodeType":"YulFunctionCall","src":"358:71:61"},"nodeType":"YulExpressionStatement","src":"358:71:61"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"284:9:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"296:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"307:4:61","type":""}],"src":"214:222:61"},{"body":{"nodeType":"YulBlock","src":"482:35:61","statements":[{"nodeType":"YulAssignment","src":"492:19:61","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"508:2:61","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"502:5:61"},"nodeType":"YulFunctionCall","src":"502:9:61"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"492:6:61"}]}]},"name":"allocate_unbounded","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"475:6:61","type":""}],"src":"442:75:61"},{"body":{"nodeType":"YulBlock","src":"612:28:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"629:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"632:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"622:6:61"},"nodeType":"YulFunctionCall","src":"622:12:61"},"nodeType":"YulExpressionStatement","src":"622:12:61"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulFunctionDefinition","src":"523:117:61"},{"body":{"nodeType":"YulBlock","src":"735:28:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"752:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"755:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"745:6:61"},"nodeType":"YulFunctionCall","src":"745:12:61"},"nodeType":"YulExpressionStatement","src":"745:12:61"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulFunctionDefinition","src":"646:117:61"},{"body":{"nodeType":"YulBlock","src":"812:79:61","statements":[{"body":{"nodeType":"YulBlock","src":"869:16:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"878:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"881:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"871:6:61"},"nodeType":"YulFunctionCall","src":"871:12:61"},"nodeType":"YulExpressionStatement","src":"871:12:61"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"835:5:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"860:5:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"842:17:61"},"nodeType":"YulFunctionCall","src":"842:24:61"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"832:2:61"},"nodeType":"YulFunctionCall","src":"832:35:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"825:6:61"},"nodeType":"YulFunctionCall","src":"825:43:61"},"nodeType":"YulIf","src":"822:63:61"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"805:5:61","type":""}],"src":"769:122:61"},{"body":{"nodeType":"YulBlock","src":"949:87:61","statements":[{"nodeType":"YulAssignment","src":"959:29:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"981:6:61"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"968:12:61"},"nodeType":"YulFunctionCall","src":"968:20:61"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"959:5:61"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1024:5:61"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"997:26:61"},"nodeType":"YulFunctionCall","src":"997:33:61"},"nodeType":"YulExpressionStatement","src":"997:33:61"}]},"name":"abi_decode_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"927:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"935:3:61","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"943:5:61","type":""}],"src":"897:139:61"},{"body":{"nodeType":"YulBlock","src":"1108:263:61","statements":[{"body":{"nodeType":"YulBlock","src":"1154:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"1156:77:61"},"nodeType":"YulFunctionCall","src":"1156:79:61"},"nodeType":"YulExpressionStatement","src":"1156:79:61"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1129:7:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"1138:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1125:3:61"},"nodeType":"YulFunctionCall","src":"1125:23:61"},{"kind":"number","nodeType":"YulLiteral","src":"1150:2:61","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1121:3:61"},"nodeType":"YulFunctionCall","src":"1121:32:61"},"nodeType":"YulIf","src":"1118:119:61"},{"nodeType":"YulBlock","src":"1247:117:61","statements":[{"nodeType":"YulVariableDeclaration","src":"1262:15:61","value":{"kind":"number","nodeType":"YulLiteral","src":"1276:1:61","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1266:6:61","type":""}]},{"nodeType":"YulAssignment","src":"1291:63:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1326:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"1337:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1322:3:61"},"nodeType":"YulFunctionCall","src":"1322:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1346:7:61"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"1301:20:61"},"nodeType":"YulFunctionCall","src":"1301:53:61"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1291:6:61"}]}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1078:9:61","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1089:7:61","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1101:6:61","type":""}],"src":"1042:329:61"},{"body":{"nodeType":"YulBlock","src":"1473:73:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1490:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"1495:6:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1483:6:61"},"nodeType":"YulFunctionCall","src":"1483:19:61"},"nodeType":"YulExpressionStatement","src":"1483:19:61"},{"nodeType":"YulAssignment","src":"1511:29:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1530:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"1535:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1526:3:61"},"nodeType":"YulFunctionCall","src":"1526:14:61"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"1511:11:61"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1445:3:61","type":""},{"name":"length","nodeType":"YulTypedName","src":"1450:6:61","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"1461:11:61","type":""}],"src":"1377:169:61"},{"body":{"nodeType":"YulBlock","src":"1658:58:61","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1680:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"1688:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1676:3:61"},"nodeType":"YulFunctionCall","src":"1676:14:61"},{"hexValue":"5452454153555245525f524f4c45","kind":"string","nodeType":"YulLiteral","src":"1692:16:61","type":"","value":"TREASURER_ROLE"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1669:6:61"},"nodeType":"YulFunctionCall","src":"1669:40:61"},"nodeType":"YulExpressionStatement","src":"1669:40:61"}]},"name":"store_literal_in_memory_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"1650:6:61","type":""}],"src":"1552:164:61"},{"body":{"nodeType":"YulBlock","src":"1868:220:61","statements":[{"nodeType":"YulAssignment","src":"1878:74:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1944:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"1949:2:61","type":"","value":"14"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"1885:58:61"},"nodeType":"YulFunctionCall","src":"1885:67:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"1878:3:61"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2050:3:61"}],"functionName":{"name":"store_literal_in_memory_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07","nodeType":"YulIdentifier","src":"1961:88:61"},"nodeType":"YulFunctionCall","src":"1961:93:61"},"nodeType":"YulExpressionStatement","src":"1961:93:61"},{"nodeType":"YulAssignment","src":"2063:19:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2074:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"2079:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2070:3:61"},"nodeType":"YulFunctionCall","src":"2070:12:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2063:3:61"}]}]},"name":"abi_encode_t_stringliteral_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"1856:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"1864:3:61","type":""}],"src":"1722:366:61"},{"body":{"nodeType":"YulBlock","src":"2265:248:61","statements":[{"nodeType":"YulAssignment","src":"2275:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2287:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"2298:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2283:3:61"},"nodeType":"YulFunctionCall","src":"2283:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2275:4:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2322:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"2333:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2318:3:61"},"nodeType":"YulFunctionCall","src":"2318:17:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"2341:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"2347:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2337:3:61"},"nodeType":"YulFunctionCall","src":"2337:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2311:6:61"},"nodeType":"YulFunctionCall","src":"2311:47:61"},"nodeType":"YulExpressionStatement","src":"2311:47:61"},{"nodeType":"YulAssignment","src":"2367:139:61","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"2501:4:61"}],"functionName":{"name":"abi_encode_t_stringliteral_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"2375:124:61"},"nodeType":"YulFunctionCall","src":"2375:131:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2367:4:61"}]}]},"name":"abi_encode_tuple_t_stringliteral_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2245:9:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2260:4:61","type":""}],"src":"2094:419:61"},{"body":{"nodeType":"YulBlock","src":"2632:34:61","statements":[{"nodeType":"YulAssignment","src":"2642:18:61","value":{"name":"pos","nodeType":"YulIdentifier","src":"2657:3:61"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"2642:11:61"}]}]},"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"2604:3:61","type":""},{"name":"length","nodeType":"YulTypedName","src":"2609:6:61","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"2620:11:61","type":""}],"src":"2519:147:61"},{"body":{"nodeType":"YulBlock","src":"2778:8:61","statements":[]},"name":"store_literal_in_memory_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"2770:6:61","type":""}],"src":"2672:114:61"},{"body":{"nodeType":"YulBlock","src":"2955:235:61","statements":[{"nodeType":"YulAssignment","src":"2965:90:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3048:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"3053:1:61","type":"","value":"0"}],"functionName":{"name":"array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"2972:75:61"},"nodeType":"YulFunctionCall","src":"2972:83:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"2965:3:61"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3153:3:61"}],"functionName":{"name":"store_literal_in_memory_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","nodeType":"YulIdentifier","src":"3064:88:61"},"nodeType":"YulFunctionCall","src":"3064:93:61"},"nodeType":"YulExpressionStatement","src":"3064:93:61"},{"nodeType":"YulAssignment","src":"3166:18:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3177:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"3182:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3173:3:61"},"nodeType":"YulFunctionCall","src":"3173:11:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"3166:3:61"}]}]},"name":"abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"2943:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2951:3:61","type":""}],"src":"2792:398:61"},{"body":{"nodeType":"YulBlock","src":"3384:191:61","statements":[{"nodeType":"YulAssignment","src":"3395:154:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3545:3:61"}],"functionName":{"name":"abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"3402:141:61"},"nodeType":"YulFunctionCall","src":"3402:147:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3395:3:61"}]},{"nodeType":"YulAssignment","src":"3559:10:61","value":{"name":"pos","nodeType":"YulIdentifier","src":"3566:3:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"3559:3:61"}]}]},"name":"abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"3371:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"3380:3:61","type":""}],"src":"3196:379:61"},{"body":{"nodeType":"YulBlock","src":"3687:75:61","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"3709:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"3717:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3705:3:61"},"nodeType":"YulFunctionCall","src":"3705:14:61"},{"hexValue":"5265656e7472616e637947756172643a207265656e7472616e742063616c6c","kind":"string","nodeType":"YulLiteral","src":"3721:33:61","type":"","value":"ReentrancyGuard: reentrant call"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3698:6:61"},"nodeType":"YulFunctionCall","src":"3698:57:61"},"nodeType":"YulExpressionStatement","src":"3698:57:61"}]},"name":"store_literal_in_memory_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"3679:6:61","type":""}],"src":"3581:181:61"},{"body":{"nodeType":"YulBlock","src":"3914:220:61","statements":[{"nodeType":"YulAssignment","src":"3924:74:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3990:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"3995:2:61","type":"","value":"31"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"3931:58:61"},"nodeType":"YulFunctionCall","src":"3931:67:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"3924:3:61"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4096:3:61"}],"functionName":{"name":"store_literal_in_memory_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619","nodeType":"YulIdentifier","src":"4007:88:61"},"nodeType":"YulFunctionCall","src":"4007:93:61"},"nodeType":"YulExpressionStatement","src":"4007:93:61"},{"nodeType":"YulAssignment","src":"4109:19:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4120:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"4125:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4116:3:61"},"nodeType":"YulFunctionCall","src":"4116:12:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"4109:3:61"}]}]},"name":"abi_encode_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"3902:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"3910:3:61","type":""}],"src":"3768:366:61"},{"body":{"nodeType":"YulBlock","src":"4311:248:61","statements":[{"nodeType":"YulAssignment","src":"4321:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4333:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"4344:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4329:3:61"},"nodeType":"YulFunctionCall","src":"4329:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4321:4:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4368:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"4379:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4364:3:61"},"nodeType":"YulFunctionCall","src":"4364:17:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4387:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"4393:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4383:3:61"},"nodeType":"YulFunctionCall","src":"4383:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4357:6:61"},"nodeType":"YulFunctionCall","src":"4357:47:61"},"nodeType":"YulExpressionStatement","src":"4357:47:61"},{"nodeType":"YulAssignment","src":"4413:139:61","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"4547:4:61"}],"functionName":{"name":"abi_encode_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"4421:124:61"},"nodeType":"YulFunctionCall","src":"4421:131:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4413:4:61"}]}]},"name":"abi_encode_tuple_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4291:9:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4306:4:61","type":""}],"src":"4140:419:61"},{"body":{"nodeType":"YulBlock","src":"4679:34:61","statements":[{"nodeType":"YulAssignment","src":"4689:18:61","value":{"name":"pos","nodeType":"YulIdentifier","src":"4704:3:61"},"variableNames":[{"name":"updated_pos","nodeType":"YulIdentifier","src":"4689:11:61"}]}]},"name":"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"4651:3:61","type":""},{"name":"length","nodeType":"YulTypedName","src":"4656:6:61","type":""}],"returnVariables":[{"name":"updated_pos","nodeType":"YulTypedName","src":"4667:11:61","type":""}],"src":"4565:148:61"},{"body":{"nodeType":"YulBlock","src":"4825:67:61","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4847:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"4855:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4843:3:61"},"nodeType":"YulFunctionCall","src":"4843:14:61"},{"hexValue":"416363657373436f6e74726f6c3a206163636f756e7420","kind":"string","nodeType":"YulLiteral","src":"4859:25:61","type":"","value":"AccessControl: account "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4836:6:61"},"nodeType":"YulFunctionCall","src":"4836:49:61"},"nodeType":"YulExpressionStatement","src":"4836:49:61"}]},"name":"store_literal_in_memory_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"4817:6:61","type":""}],"src":"4719:173:61"},{"body":{"nodeType":"YulBlock","src":"5062:238:61","statements":[{"nodeType":"YulAssignment","src":"5072:92:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5156:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"5161:2:61","type":"","value":"23"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"5079:76:61"},"nodeType":"YulFunctionCall","src":"5079:85:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"5072:3:61"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5262:3:61"}],"functionName":{"name":"store_literal_in_memory_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874","nodeType":"YulIdentifier","src":"5173:88:61"},"nodeType":"YulFunctionCall","src":"5173:93:61"},"nodeType":"YulExpressionStatement","src":"5173:93:61"},{"nodeType":"YulAssignment","src":"5275:19:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5286:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"5291:2:61","type":"","value":"23"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5282:3:61"},"nodeType":"YulFunctionCall","src":"5282:12:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"5275:3:61"}]}]},"name":"abi_encode_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"5050:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"5058:3:61","type":""}],"src":"4898:402:61"},{"body":{"nodeType":"YulBlock","src":"5365:40:61","statements":[{"nodeType":"YulAssignment","src":"5376:22:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5392:5:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5386:5:61"},"nodeType":"YulFunctionCall","src":"5386:12:61"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"5376:6:61"}]}]},"name":"array_length_t_string_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5348:5:61","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"5358:6:61","type":""}],"src":"5306:99:61"},{"body":{"nodeType":"YulBlock","src":"5473:184:61","statements":[{"nodeType":"YulVariableDeclaration","src":"5483:10:61","value":{"kind":"number","nodeType":"YulLiteral","src":"5492:1:61","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"5487:1:61","type":""}]},{"body":{"nodeType":"YulBlock","src":"5552:63:61","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"5577:3:61"},{"name":"i","nodeType":"YulIdentifier","src":"5582:1:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5573:3:61"},"nodeType":"YulFunctionCall","src":"5573:11:61"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"5596:3:61"},{"name":"i","nodeType":"YulIdentifier","src":"5601:1:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5592:3:61"},"nodeType":"YulFunctionCall","src":"5592:11:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5586:5:61"},"nodeType":"YulFunctionCall","src":"5586:18:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5566:6:61"},"nodeType":"YulFunctionCall","src":"5566:39:61"},"nodeType":"YulExpressionStatement","src":"5566:39:61"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5513:1:61"},{"name":"length","nodeType":"YulIdentifier","src":"5516:6:61"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5510:2:61"},"nodeType":"YulFunctionCall","src":"5510:13:61"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5524:19:61","statements":[{"nodeType":"YulAssignment","src":"5526:15:61","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5535:1:61"},{"kind":"number","nodeType":"YulLiteral","src":"5538:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5531:3:61"},"nodeType":"YulFunctionCall","src":"5531:10:61"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"5526:1:61"}]}]},"pre":{"nodeType":"YulBlock","src":"5506:3:61","statements":[]},"src":"5502:113:61"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"5635:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"5640:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5631:3:61"},"nodeType":"YulFunctionCall","src":"5631:16:61"},{"kind":"number","nodeType":"YulLiteral","src":"5649:1:61","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5624:6:61"},"nodeType":"YulFunctionCall","src":"5624:27:61"},"nodeType":"YulExpressionStatement","src":"5624:27:61"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"5455:3:61","type":""},{"name":"dst","nodeType":"YulTypedName","src":"5460:3:61","type":""},{"name":"length","nodeType":"YulTypedName","src":"5465:6:61","type":""}],"src":"5411:246:61"},{"body":{"nodeType":"YulBlock","src":"5773:280:61","statements":[{"nodeType":"YulVariableDeclaration","src":"5783:53:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5830:5:61"}],"functionName":{"name":"array_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"5797:32:61"},"nodeType":"YulFunctionCall","src":"5797:39:61"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"5787:6:61","type":""}]},{"nodeType":"YulAssignment","src":"5845:96:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"5929:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"5934:6:61"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"5852:76:61"},"nodeType":"YulFunctionCall","src":"5852:89:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"5845:3:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5989:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"5996:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5985:3:61"},"nodeType":"YulFunctionCall","src":"5985:16:61"},{"name":"pos","nodeType":"YulIdentifier","src":"6003:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"6008:6:61"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"5950:34:61"},"nodeType":"YulFunctionCall","src":"5950:65:61"},"nodeType":"YulExpressionStatement","src":"5950:65:61"},{"nodeType":"YulAssignment","src":"6024:23:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6035:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"6040:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6031:3:61"},"nodeType":"YulFunctionCall","src":"6031:16:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"6024:3:61"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5754:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"5761:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"5769:3:61","type":""}],"src":"5663:390:61"},{"body":{"nodeType":"YulBlock","src":"6165:61:61","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"6187:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"6195:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6183:3:61"},"nodeType":"YulFunctionCall","src":"6183:14:61"},{"hexValue":"206973206d697373696e6720726f6c6520","kind":"string","nodeType":"YulLiteral","src":"6199:19:61","type":"","value":" is missing role "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6176:6:61"},"nodeType":"YulFunctionCall","src":"6176:43:61"},"nodeType":"YulExpressionStatement","src":"6176:43:61"}]},"name":"store_literal_in_memory_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"6157:6:61","type":""}],"src":"6059:167:61"},{"body":{"nodeType":"YulBlock","src":"6396:238:61","statements":[{"nodeType":"YulAssignment","src":"6406:92:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6490:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"6495:2:61","type":"","value":"17"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"6413:76:61"},"nodeType":"YulFunctionCall","src":"6413:85:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"6406:3:61"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6596:3:61"}],"functionName":{"name":"store_literal_in_memory_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69","nodeType":"YulIdentifier","src":"6507:88:61"},"nodeType":"YulFunctionCall","src":"6507:93:61"},"nodeType":"YulExpressionStatement","src":"6507:93:61"},{"nodeType":"YulAssignment","src":"6609:19:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6620:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"6625:2:61","type":"","value":"17"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6616:3:61"},"nodeType":"YulFunctionCall","src":"6616:12:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"6609:3:61"}]}]},"name":"abi_encode_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"6384:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"6392:3:61","type":""}],"src":"6232:402:61"},{"body":{"nodeType":"YulBlock","src":"7026:581:61","statements":[{"nodeType":"YulAssignment","src":"7037:155:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"7188:3:61"}],"functionName":{"name":"abi_encode_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"7044:142:61"},"nodeType":"YulFunctionCall","src":"7044:148:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"7037:3:61"}]},{"nodeType":"YulAssignment","src":"7202:102:61","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7291:6:61"},{"name":"pos","nodeType":"YulIdentifier","src":"7300:3:61"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"7209:81:61"},"nodeType":"YulFunctionCall","src":"7209:95:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"7202:3:61"}]},{"nodeType":"YulAssignment","src":"7314:155:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"7465:3:61"}],"functionName":{"name":"abi_encode_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"7321:142:61"},"nodeType":"YulFunctionCall","src":"7321:148:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"7314:3:61"}]},{"nodeType":"YulAssignment","src":"7479:102:61","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7568:6:61"},{"name":"pos","nodeType":"YulIdentifier","src":"7577:3:61"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack","nodeType":"YulIdentifier","src":"7486:81:61"},"nodeType":"YulFunctionCall","src":"7486:95:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"7479:3:61"}]},{"nodeType":"YulAssignment","src":"7591:10:61","value":{"name":"pos","nodeType":"YulIdentifier","src":"7598:3:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"7591:3:61"}]}]},"name":"abi_encode_tuple_packed_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_t_string_memory_ptr_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"6997:3:61","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7003:6:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7011:6:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"7022:3:61","type":""}],"src":"6640:967:61"},{"body":{"nodeType":"YulBlock","src":"7661:54:61","statements":[{"nodeType":"YulAssignment","src":"7671:38:61","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7689:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"7696:2:61","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7685:3:61"},"nodeType":"YulFunctionCall","src":"7685:14:61"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"7705:2:61","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"7701:3:61"},"nodeType":"YulFunctionCall","src":"7701:7:61"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7681:3:61"},"nodeType":"YulFunctionCall","src":"7681:28:61"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"7671:6:61"}]}]},"name":"round_up_to_mul_of_32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7644:5:61","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"7654:6:61","type":""}],"src":"7613:102:61"},{"body":{"nodeType":"YulBlock","src":"7813:285:61","statements":[{"nodeType":"YulVariableDeclaration","src":"7823:53:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"7870:5:61"}],"functionName":{"name":"array_length_t_string_memory_ptr","nodeType":"YulIdentifier","src":"7837:32:61"},"nodeType":"YulFunctionCall","src":"7837:39:61"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"7827:6:61","type":""}]},{"nodeType":"YulAssignment","src":"7885:78:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"7951:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"7956:6:61"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"7892:58:61"},"nodeType":"YulFunctionCall","src":"7892:71:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"7885:3:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"8011:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"8018:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8007:3:61"},"nodeType":"YulFunctionCall","src":"8007:16:61"},{"name":"pos","nodeType":"YulIdentifier","src":"8025:3:61"},{"name":"length","nodeType":"YulIdentifier","src":"8030:6:61"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"7972:34:61"},"nodeType":"YulFunctionCall","src":"7972:65:61"},"nodeType":"YulExpressionStatement","src":"7972:65:61"},{"nodeType":"YulAssignment","src":"8046:46:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"8057:3:61"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"8084:6:61"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"8062:21:61"},"nodeType":"YulFunctionCall","src":"8062:29:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8053:3:61"},"nodeType":"YulFunctionCall","src":"8053:39:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"8046:3:61"}]}]},"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"7794:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"7801:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"7809:3:61","type":""}],"src":"7721:377:61"},{"body":{"nodeType":"YulBlock","src":"8222:195:61","statements":[{"nodeType":"YulAssignment","src":"8232:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8244:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"8255:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8240:3:61"},"nodeType":"YulFunctionCall","src":"8240:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8232:4:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8279:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"8290:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8275:3:61"},"nodeType":"YulFunctionCall","src":"8275:17:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"8298:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"8304:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"8294:3:61"},"nodeType":"YulFunctionCall","src":"8294:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8268:6:61"},"nodeType":"YulFunctionCall","src":"8268:47:61"},"nodeType":"YulExpressionStatement","src":"8268:47:61"},{"nodeType":"YulAssignment","src":"8324:86:61","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8396:6:61"},{"name":"tail","nodeType":"YulIdentifier","src":"8405:4:61"}],"functionName":{"name":"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"8332:63:61"},"nodeType":"YulFunctionCall","src":"8332:78:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8324:4:61"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8194:9:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8206:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8217:4:61","type":""}],"src":"8104:313:61"},{"body":{"nodeType":"YulBlock","src":"8451:152:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8468:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8471:77:61","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8461:6:61"},"nodeType":"YulFunctionCall","src":"8461:88:61"},"nodeType":"YulExpressionStatement","src":"8461:88:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8565:1:61","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"8568:4:61","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8558:6:61"},"nodeType":"YulFunctionCall","src":"8558:15:61"},"nodeType":"YulExpressionStatement","src":"8558:15:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8589:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8592:4:61","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8582:6:61"},"nodeType":"YulFunctionCall","src":"8582:15:61"},"nodeType":"YulExpressionStatement","src":"8582:15:61"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"8423:180:61"},{"body":{"nodeType":"YulBlock","src":"8657:362:61","statements":[{"nodeType":"YulAssignment","src":"8667:25:61","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"8690:1:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"8672:17:61"},"nodeType":"YulFunctionCall","src":"8672:20:61"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"8667:1:61"}]},{"nodeType":"YulAssignment","src":"8701:25:61","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"8724:1:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"8706:17:61"},"nodeType":"YulFunctionCall","src":"8706:20:61"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"8701:1:61"}]},{"nodeType":"YulVariableDeclaration","src":"8735:28:61","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"8758:1:61"},{"name":"y","nodeType":"YulIdentifier","src":"8761:1:61"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"8754:3:61"},"nodeType":"YulFunctionCall","src":"8754:9:61"},"variables":[{"name":"product_raw","nodeType":"YulTypedName","src":"8739:11:61","type":""}]},{"nodeType":"YulAssignment","src":"8772:41:61","value":{"arguments":[{"name":"product_raw","nodeType":"YulIdentifier","src":"8801:11:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"8783:17:61"},"nodeType":"YulFunctionCall","src":"8783:30:61"},"variableNames":[{"name":"product","nodeType":"YulIdentifier","src":"8772:7:61"}]},{"body":{"nodeType":"YulBlock","src":"8990:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"8992:16:61"},"nodeType":"YulFunctionCall","src":"8992:18:61"},"nodeType":"YulExpressionStatement","src":"8992:18:61"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"8923:1:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8916:6:61"},"nodeType":"YulFunctionCall","src":"8916:9:61"},{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"8946:1:61"},{"arguments":[{"name":"product","nodeType":"YulIdentifier","src":"8953:7:61"},{"name":"x","nodeType":"YulIdentifier","src":"8962:1:61"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"8949:3:61"},"nodeType":"YulFunctionCall","src":"8949:15:61"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"8943:2:61"},"nodeType":"YulFunctionCall","src":"8943:22:61"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"8896:2:61"},"nodeType":"YulFunctionCall","src":"8896:83:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"8876:6:61"},"nodeType":"YulFunctionCall","src":"8876:113:61"},"nodeType":"YulIf","src":"8873:139:61"}]},"name":"checked_mul_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"8640:1:61","type":""},{"name":"y","nodeType":"YulTypedName","src":"8643:1:61","type":""}],"returnVariables":[{"name":"product","nodeType":"YulTypedName","src":"8649:7:61","type":""}],"src":"8609:410:61"},{"body":{"nodeType":"YulBlock","src":"9069:147:61","statements":[{"nodeType":"YulAssignment","src":"9079:25:61","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"9102:1:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"9084:17:61"},"nodeType":"YulFunctionCall","src":"9084:20:61"},"variableNames":[{"name":"x","nodeType":"YulIdentifier","src":"9079:1:61"}]},{"nodeType":"YulAssignment","src":"9113:25:61","value":{"arguments":[{"name":"y","nodeType":"YulIdentifier","src":"9136:1:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"9118:17:61"},"nodeType":"YulFunctionCall","src":"9118:20:61"},"variableNames":[{"name":"y","nodeType":"YulIdentifier","src":"9113:1:61"}]},{"nodeType":"YulAssignment","src":"9147:16:61","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"9158:1:61"},{"name":"y","nodeType":"YulIdentifier","src":"9161:1:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9154:3:61"},"nodeType":"YulFunctionCall","src":"9154:9:61"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"9147:3:61"}]},{"body":{"nodeType":"YulBlock","src":"9187:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"9189:16:61"},"nodeType":"YulFunctionCall","src":"9189:18:61"},"nodeType":"YulExpressionStatement","src":"9189:18:61"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"9179:1:61"},{"name":"sum","nodeType":"YulIdentifier","src":"9182:3:61"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"9176:2:61"},"nodeType":"YulFunctionCall","src":"9176:10:61"},"nodeType":"YulIf","src":"9173:36:61"}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"9056:1:61","type":""},{"name":"y","nodeType":"YulTypedName","src":"9059:1:61","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"9065:3:61","type":""}],"src":"9025:191:61"},{"body":{"nodeType":"YulBlock","src":"9250:152:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9267:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9270:77:61","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9260:6:61"},"nodeType":"YulFunctionCall","src":"9260:88:61"},"nodeType":"YulExpressionStatement","src":"9260:88:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9364:1:61","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"9367:4:61","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9357:6:61"},"nodeType":"YulFunctionCall","src":"9357:15:61"},"nodeType":"YulExpressionStatement","src":"9357:15:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9388:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9391:4:61","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9381:6:61"},"nodeType":"YulFunctionCall","src":"9381:15:61"},"nodeType":"YulExpressionStatement","src":"9381:15:61"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"9222:180:61"},{"body":{"nodeType":"YulBlock","src":"9436:152:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9453:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9456:77:61","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9446:6:61"},"nodeType":"YulFunctionCall","src":"9446:88:61"},"nodeType":"YulExpressionStatement","src":"9446:88:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9550:1:61","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"9553:4:61","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9543:6:61"},"nodeType":"YulFunctionCall","src":"9543:15:61"},"nodeType":"YulExpressionStatement","src":"9543:15:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9574:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9577:4:61","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9567:6:61"},"nodeType":"YulFunctionCall","src":"9567:15:61"},"nodeType":"YulExpressionStatement","src":"9567:15:61"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"9408:180:61"},{"body":{"nodeType":"YulBlock","src":"9637:128:61","statements":[{"nodeType":"YulAssignment","src":"9647:33:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9674:5:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"9656:17:61"},"nodeType":"YulFunctionCall","src":"9656:24:61"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"9647:5:61"}]},{"body":{"nodeType":"YulBlock","src":"9708:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"9710:16:61"},"nodeType":"YulFunctionCall","src":"9710:18:61"},"nodeType":"YulExpressionStatement","src":"9710:18:61"}]},"condition":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9695:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"9702:4:61","type":"","value":"0x00"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"9692:2:61"},"nodeType":"YulFunctionCall","src":"9692:15:61"},"nodeType":"YulIf","src":"9689:41:61"},{"nodeType":"YulAssignment","src":"9739:20:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"9750:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"9757:1:61","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"9746:3:61"},"nodeType":"YulFunctionCall","src":"9746:13:61"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"9739:3:61"}]}]},"name":"decrement_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"9623:5:61","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"9633:3:61","type":""}],"src":"9594:171:61"},{"body":{"nodeType":"YulBlock","src":"9877:76:61","statements":[{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"9899:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"9907:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9895:3:61"},"nodeType":"YulFunctionCall","src":"9895:14:61"},{"hexValue":"537472696e67733a20686578206c656e67746820696e73756666696369656e74","kind":"string","nodeType":"YulLiteral","src":"9911:34:61","type":"","value":"Strings: hex length insufficient"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9888:6:61"},"nodeType":"YulFunctionCall","src":"9888:58:61"},"nodeType":"YulExpressionStatement","src":"9888:58:61"}]},"name":"store_literal_in_memory_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"9869:6:61","type":""}],"src":"9771:182:61"},{"body":{"nodeType":"YulBlock","src":"10105:220:61","statements":[{"nodeType":"YulAssignment","src":"10115:74:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10181:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"10186:2:61","type":"","value":"32"}],"functionName":{"name":"array_storeLengthForEncoding_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"10122:58:61"},"nodeType":"YulFunctionCall","src":"10122:67:61"},"variableNames":[{"name":"pos","nodeType":"YulIdentifier","src":"10115:3:61"}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10287:3:61"}],"functionName":{"name":"store_literal_in_memory_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2","nodeType":"YulIdentifier","src":"10198:88:61"},"nodeType":"YulFunctionCall","src":"10198:93:61"},"nodeType":"YulExpressionStatement","src":"10198:93:61"},{"nodeType":"YulAssignment","src":"10300:19:61","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"10311:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"10316:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10307:3:61"},"nodeType":"YulFunctionCall","src":"10307:12:61"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"10300:3:61"}]}]},"name":"abi_encode_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2_to_t_string_memory_ptr_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"10093:3:61","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"10101:3:61","type":""}],"src":"9959:366:61"},{"body":{"nodeType":"YulBlock","src":"10502:248:61","statements":[{"nodeType":"YulAssignment","src":"10512:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10524:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"10535:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10520:3:61"},"nodeType":"YulFunctionCall","src":"10520:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10512:4:61"}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10559:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"10570:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10555:3:61"},"nodeType":"YulFunctionCall","src":"10555:17:61"},{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"10578:4:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"10584:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10574:3:61"},"nodeType":"YulFunctionCall","src":"10574:20:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10548:6:61"},"nodeType":"YulFunctionCall","src":"10548:47:61"},"nodeType":"YulExpressionStatement","src":"10548:47:61"},{"nodeType":"YulAssignment","src":"10604:139:61","value":{"arguments":[{"name":"tail","nodeType":"YulIdentifier","src":"10738:4:61"}],"functionName":{"name":"abi_encode_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2_to_t_string_memory_ptr_fromStack","nodeType":"YulIdentifier","src":"10612:124:61"},"nodeType":"YulFunctionCall","src":"10612:131:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10604:4:61"}]}]},"name":"abi_encode_tuple_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10482:9:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10497:4:61","type":""}],"src":"10331:419:61"}]},"contents":"{\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function store_literal_in_memory_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07(memPtr) {\n\n mstore(add(memPtr, 0), \"TREASURER_ROLE\")\n\n }\n\n function abi_encode_t_stringliteral_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 14)\n store_literal_in_memory_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_3496e2e73c4d42b75d702e60d9e48102720b8691234415963a5a857b86425d07_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function store_literal_in_memory_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470(memPtr) {\n\n }\n\n function abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, 0)\n store_literal_in_memory_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470(pos)\n end := add(pos, 0)\n }\n\n function abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos ) -> end {\n\n pos := abi_encode_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack( pos)\n\n end := pos\n }\n\n function store_literal_in_memory_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619(memPtr) {\n\n mstore(add(memPtr, 0), \"ReentrancyGuard: reentrant call\")\n\n }\n\n function abi_encode_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 31)\n store_literal_in_memory_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function store_literal_in_memory_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874(memPtr) {\n\n mstore(add(memPtr, 0), \"AccessControl: account \")\n\n }\n\n function abi_encode_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_to_t_string_memory_ptr_nonPadded_inplace_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, 23)\n store_literal_in_memory_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874(pos)\n end := add(pos, 23)\n }\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function copy_memory_to_memory_with_cleanup(src, dst, length) {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, length)\n }\n\n function store_literal_in_memory_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69(memPtr) {\n\n mstore(add(memPtr, 0), \" is missing role \")\n\n }\n\n function abi_encode_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_to_t_string_memory_ptr_nonPadded_inplace_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, 17)\n store_literal_in_memory_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69(pos)\n end := add(pos, 17)\n }\n\n function abi_encode_tuple_packed_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_t_string_memory_ptr_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value1, value0) -> end {\n\n pos := abi_encode_t_stringliteral_da0d07ce4a2849fbfc4cb9d6f939e9bd93016c372ca4a5ff14fe06caf3d67874_to_t_string_memory_ptr_nonPadded_inplace_fromStack( pos)\n\n pos := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value0, pos)\n\n pos := abi_encode_t_stringliteral_f986ce851518a691bccd44ea42a5a185d1b866ef6cb07984a09b81694d20ab69_to_t_string_memory_ptr_nonPadded_inplace_fromStack( pos)\n\n pos := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value1, pos)\n\n end := pos\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value0, tail)\n\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function checked_mul_t_uint256(x, y) -> product {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n let product_raw := mul(x, y)\n product := cleanup_t_uint256(product_raw)\n\n // overflow, if x != 0 and y != product/x\n if iszero(\n or(\n iszero(x),\n eq(y, div(product, x))\n )\n ) { panic_error_0x11() }\n\n }\n\n function checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n sum := add(x, y)\n\n if gt(x, sum) { panic_error_0x11() }\n\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function panic_error_0x32() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n\n function decrement_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0x00) { panic_error_0x11() }\n ret := sub(value, 1)\n }\n\n function store_literal_in_memory_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2(memPtr) {\n\n mstore(add(memPtr, 0), \"Strings: hex length insufficient\")\n\n }\n\n function abi_encode_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 32)\n store_literal_in_memory_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n}\n","id":61,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100365760003560e01c806388a9d5541461003b578063c9a463e214610059575b600080fd5b610043610075565b6040516100509190610566565b60405180910390f35b610073600480360381019061006e91906105b2565b61007d565b005b600047905090565b610085610161565b6100b26040516020016100979061063c565b604051602081830303815290604052805190602001206101b0565b60003373ffffffffffffffffffffffffffffffffffffffff16826040516100d89061068d565b60006040518083038185875af1925050503d8060008114610115576040519150601f19603f3d011682016040523d82523d6000602084013e61011a565b606091505b5050905080610155576040517fe6e2afc700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5061015e6101bc565b50565b6002600054036101a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161019d906106ee565b60405180910390fd5b6002600081905550565b6101b9816101c6565b50565b6001600081905550565b6101d081336101d3565b50565b6101dd8282610270565b61026c576102028173ffffffffffffffffffffffffffffffffffffffff1660146102e4565b6102108360001c60206102e4565b604051602001610221929190610817565b6040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610263919061089b565b60405180910390fd5b5050565b600061027a610520565b600001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6060600060028360026102f791906108ec565b610301919061092e565b67ffffffffffffffff81111561031a57610319610962565b5b6040519080825280601f01601f19166020018201604052801561034c5781602001600182028036833780820191505090505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061038457610383610991565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106103e8576103e7610991565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000600184600261042891906108ec565b610432919061092e565b90505b60018111156104d2577f3031323334353637383961626364656600000000000000000000000000000000600f86166010811061047457610473610991565b5b1a60f81b82828151811061048b5761048a610991565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c9450806104cb906109c0565b9050610435565b5060008414610516576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050d90610a35565b60405180910390fd5b8091505092915050565b6000807f4cd15452b25e815d3f9d1a3c7edd985a178edf5eb3461a1acbf855517423d69490508091505090565b6000819050919050565b6105608161054d565b82525050565b600060208201905061057b6000830184610557565b92915050565b600080fd5b61058f8161054d565b811461059a57600080fd5b50565b6000813590506105ac81610586565b92915050565b6000602082840312156105c8576105c7610581565b5b60006105d68482850161059d565b91505092915050565b600082825260208201905092915050565b7f5452454153555245525f524f4c45000000000000000000000000000000000000600082015250565b6000610626600e836105df565b9150610631826105f0565b602082019050919050565b6000602082019050818103600083015261065581610619565b9050919050565b600081905092915050565b50565b600061067760008361065c565b915061068282610667565b600082019050919050565b60006106988261066a565b9150819050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b60006106d8601f836105df565b91506106e3826106a2565b602082019050919050565b60006020820190508181036000830152610707816106cb565b9050919050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b600061074f60178361070e565b915061075a82610719565b601782019050919050565b600081519050919050565b60005b8381101561078e578082015181840152602081019050610773565b60008484015250505050565b60006107a582610765565b6107af818561070e565b93506107bf818560208601610770565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b600061080160118361070e565b915061080c826107cb565b601182019050919050565b600061082282610742565b915061082e828561079a565b9150610839826107f4565b9150610845828461079a565b91508190509392505050565b6000601f19601f8301169050919050565b600061086d82610765565b61087781856105df565b9350610887818560208601610770565b61089081610851565b840191505092915050565b600060208201905081810360008301526108b58184610862565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006108f78261054d565b91506109028361054d565b92508282026109108161054d565b91508282048414831517610927576109266108bd565b5b5092915050565b60006109398261054d565b91506109448361054d565b925082820190508082111561095c5761095b6108bd565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006109cb8261054d565b9150600082036109de576109dd6108bd565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b6000610a1f6020836105df565b9150610a2a826109e9565b602082019050919050565b60006020820190508181036000830152610a4e81610a12565b905091905056fea2646970667358221220bcbd07bd1e012cedbca3fe8d3feeefd34ac7bf87c5b76c51b796aaaab2c13db064736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x88A9D554 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xC9A463E2 EQ PUSH2 0x59 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x75 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x50 SWAP2 SWAP1 PUSH2 0x566 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x73 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x6E SWAP2 SWAP1 PUSH2 0x5B2 JUMP JUMPDEST PUSH2 0x7D JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SELFBALANCE SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x85 PUSH2 0x161 JUMP JUMPDEST PUSH2 0xB2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x97 SWAP1 PUSH2 0x63C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0x1B0 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x40 MLOAD PUSH2 0xD8 SWAP1 PUSH2 0x68D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x115 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x11A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x155 JUMPI PUSH1 0x40 MLOAD PUSH32 0xE6E2AFC700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH2 0x15E PUSH2 0x1BC JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SLOAD SUB PUSH2 0x1A6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x19D SWAP1 PUSH2 0x6EE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x0 DUP2 SWAP1 SSTORE POP JUMP JUMPDEST PUSH2 0x1B9 DUP2 PUSH2 0x1C6 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 DUP2 SWAP1 SSTORE POP JUMP JUMPDEST PUSH2 0x1D0 DUP2 CALLER PUSH2 0x1D3 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x1DD DUP3 DUP3 PUSH2 0x270 JUMP JUMPDEST PUSH2 0x26C JUMPI PUSH2 0x202 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x14 PUSH2 0x2E4 JUMP JUMPDEST PUSH2 0x210 DUP4 PUSH1 0x0 SHR PUSH1 0x20 PUSH2 0x2E4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x221 SWAP3 SWAP2 SWAP1 PUSH2 0x817 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x263 SWAP2 SWAP1 PUSH2 0x89B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27A PUSH2 0x520 JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x2 DUP4 PUSH1 0x2 PUSH2 0x2F7 SWAP2 SWAP1 PUSH2 0x8EC JUMP JUMPDEST PUSH2 0x301 SWAP2 SWAP1 PUSH2 0x92E JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x31A JUMPI PUSH2 0x319 PUSH2 0x962 JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x34C JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x1 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP SWAP1 POP PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x384 JUMPI PUSH2 0x383 PUSH2 0x991 JUMP JUMPDEST JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH32 0x7800000000000000000000000000000000000000000000000000000000000000 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x3E8 JUMPI PUSH2 0x3E7 PUSH2 0x991 JUMP JUMPDEST JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x0 PUSH1 0x1 DUP5 PUSH1 0x2 PUSH2 0x428 SWAP2 SWAP1 PUSH2 0x8EC JUMP JUMPDEST PUSH2 0x432 SWAP2 SWAP1 PUSH2 0x92E JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x4D2 JUMPI PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 PUSH1 0xF DUP7 AND PUSH1 0x10 DUP2 LT PUSH2 0x474 JUMPI PUSH2 0x473 PUSH2 0x991 JUMP JUMPDEST JUMPDEST BYTE PUSH1 0xF8 SHL DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x48B JUMPI PUSH2 0x48A PUSH2 0x991 JUMP JUMPDEST JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x4 DUP6 SWAP1 SHR SWAP5 POP DUP1 PUSH2 0x4CB SWAP1 PUSH2 0x9C0 JUMP JUMPDEST SWAP1 POP PUSH2 0x435 JUMP JUMPDEST POP PUSH1 0x0 DUP5 EQ PUSH2 0x516 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x50D SWAP1 PUSH2 0xA35 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x4CD15452B25E815D3F9D1A3C7EDD985A178EDF5EB3461A1ACBF855517423D694 SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x560 DUP2 PUSH2 0x54D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x57B PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x557 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x58F DUP2 PUSH2 0x54D JUMP JUMPDEST DUP2 EQ PUSH2 0x59A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x5AC DUP2 PUSH2 0x586 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5C8 JUMPI PUSH2 0x5C7 PUSH2 0x581 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x5D6 DUP5 DUP3 DUP6 ADD PUSH2 0x59D JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x5452454153555245525F524F4C45000000000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x626 PUSH1 0xE DUP4 PUSH2 0x5DF JUMP JUMPDEST SWAP2 POP PUSH2 0x631 DUP3 PUSH2 0x5F0 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x655 DUP2 PUSH2 0x619 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x677 PUSH1 0x0 DUP4 PUSH2 0x65C JUMP JUMPDEST SWAP2 POP PUSH2 0x682 DUP3 PUSH2 0x667 JUMP JUMPDEST PUSH1 0x0 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x698 DUP3 PUSH2 0x66A JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x5265656E7472616E637947756172643A207265656E7472616E742063616C6C00 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6D8 PUSH1 0x1F DUP4 PUSH2 0x5DF JUMP JUMPDEST SWAP2 POP PUSH2 0x6E3 DUP3 PUSH2 0x6A2 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x707 DUP2 PUSH2 0x6CB JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x416363657373436F6E74726F6C3A206163636F756E7420000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x74F PUSH1 0x17 DUP4 PUSH2 0x70E JUMP JUMPDEST SWAP2 POP PUSH2 0x75A DUP3 PUSH2 0x719 JUMP JUMPDEST PUSH1 0x17 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x78E JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x773 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7A5 DUP3 PUSH2 0x765 JUMP JUMPDEST PUSH2 0x7AF DUP2 DUP6 PUSH2 0x70E JUMP JUMPDEST SWAP4 POP PUSH2 0x7BF DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x770 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x206973206D697373696E6720726F6C6520000000000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x801 PUSH1 0x11 DUP4 PUSH2 0x70E JUMP JUMPDEST SWAP2 POP PUSH2 0x80C DUP3 PUSH2 0x7CB JUMP JUMPDEST PUSH1 0x11 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x822 DUP3 PUSH2 0x742 JUMP JUMPDEST SWAP2 POP PUSH2 0x82E DUP3 DUP6 PUSH2 0x79A JUMP JUMPDEST SWAP2 POP PUSH2 0x839 DUP3 PUSH2 0x7F4 JUMP JUMPDEST SWAP2 POP PUSH2 0x845 DUP3 DUP5 PUSH2 0x79A JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x86D DUP3 PUSH2 0x765 JUMP JUMPDEST PUSH2 0x877 DUP2 DUP6 PUSH2 0x5DF JUMP JUMPDEST SWAP4 POP PUSH2 0x887 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x770 JUMP JUMPDEST PUSH2 0x890 DUP2 PUSH2 0x851 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x8B5 DUP2 DUP5 PUSH2 0x862 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x8F7 DUP3 PUSH2 0x54D JUMP JUMPDEST SWAP2 POP PUSH2 0x902 DUP4 PUSH2 0x54D JUMP JUMPDEST SWAP3 POP DUP3 DUP3 MUL PUSH2 0x910 DUP2 PUSH2 0x54D JUMP JUMPDEST SWAP2 POP DUP3 DUP3 DIV DUP5 EQ DUP4 ISZERO OR PUSH2 0x927 JUMPI PUSH2 0x926 PUSH2 0x8BD JUMP JUMPDEST JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x939 DUP3 PUSH2 0x54D JUMP JUMPDEST SWAP2 POP PUSH2 0x944 DUP4 PUSH2 0x54D JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x95C JUMPI PUSH2 0x95B PUSH2 0x8BD JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x9CB DUP3 PUSH2 0x54D JUMP JUMPDEST SWAP2 POP PUSH1 0x0 DUP3 SUB PUSH2 0x9DE JUMPI PUSH2 0x9DD PUSH2 0x8BD JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 SUB SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x537472696E67733A20686578206C656E67746820696E73756666696369656E74 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA1F PUSH1 0x20 DUP4 PUSH2 0x5DF JUMP JUMPDEST SWAP2 POP PUSH2 0xA2A DUP3 PUSH2 0x9E9 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0xA4E DUP2 PUSH2 0xA12 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBC 0xBD SMOD 0xBD 0x1E ADD 0x2C 0xED 0xBC LOG3 INVALID DUP14 EXTCODEHASH 0xEE 0xEF 0xD3 0x4A 0xC7 0xBF DUP8 0xC5 0xB7 PUSH13 0x51B796AAAAB2C13DB064736F6C PUSH4 0x43000812 STOP CALLER ","sourceMap":"325:495:32:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;377:105;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;488:330;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;377:105;428:7;454:21;447:28;;377:105;:::o;488:330::-;2261:21:1;:19;:21::i;:::-;568:66:32::1;412:28:48;;;;;;;:::i;:::-;;;;;;;;;;;;;402:39;;;;;;568:33:32;:66::i;:::-;646:9;669:10;661:24;;693:7;661:44;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;645:60;;;720:4;715:45;;733:27;;;;;;;;;;;;;;715:45;558:260;2303:20:1::0;:18;:20::i;:::-;488:330:32;:::o;2336:287:1:-;1759:1;2468:7;;:19;2460:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;1759:1;2598:7;:18;;;;2336:287::o;1039:89:48:-;1104:17;1115:5;1104:10;:17::i;:::-;1039:89;:::o;2629:209:1:-;1716:1;2809:7;:22;;;;2629:209::o;1320:95:48:-;1379:29;1390:5;1397:10;1379;:29::i;:::-;1320:95;:::o;1421:491::-;1503:25;1512:5;1519:8;1503;:25::i;:::-;1498:408;;1689:42;1717:8;1689:42;;1728:2;1689:19;:42::i;:::-;1802:39;1830:5;1822:14;;1838:2;1802:19;:39::i;:::-;1596:267;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1544:351;;;;;;;;;;;:::i;:::-;;;;;;;;1498:408;1421:491;;:::o;1134:180::-;1230:4;1253:23;:21;:23::i;:::-;:29;;:36;1283:5;1253:36;;;;;;;;;;;:44;;:54;1298:8;1253:54;;;;;;;;;;;;;;;;;;;;;;;;;1246:61;;1134:180;;;;:::o;1513:437:7:-;1588:13;1613:19;1658:1;1649:6;1645:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;1635:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1613:47;;1670:15;:6;1677:1;1670:9;;;;;;;;:::i;:::-;;;;;:15;;;;;;;;;;;1695;:6;1702:1;1695:9;;;;;;;;:::i;:::-;;;;;:15;;;;;;;;;;;1725:9;1750:1;1741:6;1737:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;1725:26;;1720:128;1757:1;1753;:5;1720:128;;;1791:8;1808:3;1800:5;:11;1791:21;;;;;;;:::i;:::-;;;;;1779:6;1786:1;1779:9;;;;;;;;:::i;:::-;;;;;:33;;;;;;;;;;;1836:1;1826:11;;;;;1760:3;;;;:::i;:::-;;;1720:128;;;;1874:1;1865:5;:10;1857:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;1936:6;1922:21;;;1513:437;;;;:::o;791:242:48:-;871:30;917:16;203:29;917:49;;1009:8;999:18;;985:42;791:242;:::o;7:77:61:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;523:117::-;632:1;629;622:12;769:122;842:24;860:5;842:24;:::i;:::-;835:5;832:35;822:63;;881:1;878;871:12;822:63;769:122;:::o;897:139::-;943:5;981:6;968:20;959:29;;997:33;1024:5;997:33;:::i;:::-;897:139;;;;:::o;1042:329::-;1101:6;1150:2;1138:9;1129:7;1125:23;1121:32;1118:119;;;1156:79;;:::i;:::-;1118:119;1276:1;1301:53;1346:7;1337:6;1326:9;1322:22;1301:53;:::i;:::-;1291:63;;1247:117;1042:329;;;;:::o;1377:169::-;1461:11;1495:6;1490:3;1483:19;1535:4;1530:3;1526:14;1511:29;;1377:169;;;;:::o;1552:164::-;1692:16;1688:1;1680:6;1676:14;1669:40;1552:164;:::o;1722:366::-;1864:3;1885:67;1949:2;1944:3;1885:67;:::i;:::-;1878:74;;1961:93;2050:3;1961:93;:::i;:::-;2079:2;2074:3;2070:12;2063:19;;1722:366;;;:::o;2094:419::-;2260:4;2298:2;2287:9;2283:18;2275:26;;2347:9;2341:4;2337:20;2333:1;2322:9;2318:17;2311:47;2375:131;2501:4;2375:131;:::i;:::-;2367:139;;2094:419;;;:::o;2519:147::-;2620:11;2657:3;2642:18;;2519:147;;;;:::o;2672:114::-;;:::o;2792:398::-;2951:3;2972:83;3053:1;3048:3;2972:83;:::i;:::-;2965:90;;3064:93;3153:3;3064:93;:::i;:::-;3182:1;3177:3;3173:11;3166:18;;2792:398;;;:::o;3196:379::-;3380:3;3402:147;3545:3;3402:147;:::i;:::-;3395:154;;3566:3;3559:10;;3196:379;;;:::o;3581:181::-;3721:33;3717:1;3709:6;3705:14;3698:57;3581:181;:::o;3768:366::-;3910:3;3931:67;3995:2;3990:3;3931:67;:::i;:::-;3924:74;;4007:93;4096:3;4007:93;:::i;:::-;4125:2;4120:3;4116:12;4109:19;;3768:366;;;:::o;4140:419::-;4306:4;4344:2;4333:9;4329:18;4321:26;;4393:9;4387:4;4383:20;4379:1;4368:9;4364:17;4357:47;4421:131;4547:4;4421:131;:::i;:::-;4413:139;;4140:419;;;:::o;4565:148::-;4667:11;4704:3;4689:18;;4565:148;;;;:::o;4719:173::-;4859:25;4855:1;4847:6;4843:14;4836:49;4719:173;:::o;4898:402::-;5058:3;5079:85;5161:2;5156:3;5079:85;:::i;:::-;5072:92;;5173:93;5262:3;5173:93;:::i;:::-;5291:2;5286:3;5282:12;5275:19;;4898:402;;;:::o;5306:99::-;5358:6;5392:5;5386:12;5376:22;;5306:99;;;:::o;5411:246::-;5492:1;5502:113;5516:6;5513:1;5510:13;5502:113;;;5601:1;5596:3;5592:11;5586:18;5582:1;5577:3;5573:11;5566:39;5538:2;5535:1;5531:10;5526:15;;5502:113;;;5649:1;5640:6;5635:3;5631:16;5624:27;5473:184;5411:246;;;:::o;5663:390::-;5769:3;5797:39;5830:5;5797:39;:::i;:::-;5852:89;5934:6;5929:3;5852:89;:::i;:::-;5845:96;;5950:65;6008:6;6003:3;5996:4;5989:5;5985:16;5950:65;:::i;:::-;6040:6;6035:3;6031:16;6024:23;;5773:280;5663:390;;;;:::o;6059:167::-;6199:19;6195:1;6187:6;6183:14;6176:43;6059:167;:::o;6232:402::-;6392:3;6413:85;6495:2;6490:3;6413:85;:::i;:::-;6406:92;;6507:93;6596:3;6507:93;:::i;:::-;6625:2;6620:3;6616:12;6609:19;;6232:402;;;:::o;6640:967::-;7022:3;7044:148;7188:3;7044:148;:::i;:::-;7037:155;;7209:95;7300:3;7291:6;7209:95;:::i;:::-;7202:102;;7321:148;7465:3;7321:148;:::i;:::-;7314:155;;7486:95;7577:3;7568:6;7486:95;:::i;:::-;7479:102;;7598:3;7591:10;;6640:967;;;;;:::o;7613:102::-;7654:6;7705:2;7701:7;7696:2;7689:5;7685:14;7681:28;7671:38;;7613:102;;;:::o;7721:377::-;7809:3;7837:39;7870:5;7837:39;:::i;:::-;7892:71;7956:6;7951:3;7892:71;:::i;:::-;7885:78;;7972:65;8030:6;8025:3;8018:4;8011:5;8007:16;7972:65;:::i;:::-;8062:29;8084:6;8062:29;:::i;:::-;8057:3;8053:39;8046:46;;7813:285;7721:377;;;;:::o;8104:313::-;8217:4;8255:2;8244:9;8240:18;8232:26;;8304:9;8298:4;8294:20;8290:1;8279:9;8275:17;8268:47;8332:78;8405:4;8396:6;8332:78;:::i;:::-;8324:86;;8104:313;;;;:::o;8423:180::-;8471:77;8468:1;8461:88;8568:4;8565:1;8558:15;8592:4;8589:1;8582:15;8609:410;8649:7;8672:20;8690:1;8672:20;:::i;:::-;8667:25;;8706:20;8724:1;8706:20;:::i;:::-;8701:25;;8761:1;8758;8754:9;8783:30;8801:11;8783:30;:::i;:::-;8772:41;;8962:1;8953:7;8949:15;8946:1;8943:22;8923:1;8916:9;8896:83;8873:139;;8992:18;;:::i;:::-;8873:139;8657:362;8609:410;;;;:::o;9025:191::-;9065:3;9084:20;9102:1;9084:20;:::i;:::-;9079:25;;9118:20;9136:1;9118:20;:::i;:::-;9113:25;;9161:1;9158;9154:9;9147:16;;9182:3;9179:1;9176:10;9173:36;;;9189:18;;:::i;:::-;9173:36;9025:191;;;;:::o;9222:180::-;9270:77;9267:1;9260:88;9367:4;9364:1;9357:15;9391:4;9388:1;9381:15;9408:180;9456:77;9453:1;9446:88;9553:4;9550:1;9543:15;9577:4;9574:1;9567:15;9594:171;9633:3;9656:24;9674:5;9656:24;:::i;:::-;9647:33;;9702:4;9695:5;9692:15;9689:41;;9710:18;;:::i;:::-;9689:41;9757:1;9750:5;9746:13;9739:20;;9594:171;;;:::o;9771:182::-;9911:34;9907:1;9899:6;9895:14;9888:58;9771:182;:::o;9959:366::-;10101:3;10122:67;10186:2;10181:3;10122:67;:::i;:::-;10115:74;;10198:93;10287:3;10198:93;:::i;:::-;10316:2;10311:3;10307:12;10300:19;;9959:366;;;:::o;10331:419::-;10497:4;10535:2;10524:9;10520:18;10512:26;;10584:9;10578:4;10574:20;10570:1;10559:9;10555:17;10548:47;10612:131;10738:4;10612:131;:::i;:::-;10604:139;;10331:419;;;:::o"},"methodIdentifiers":{"getNativeBalance()":"88a9d554","withdrawNativeBalance(uint256)":"c9a463e2"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"FailedWithdrawNativeToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"getNativeBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"withdrawNativeBalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/facets/utils/Utility.sol\":\"Utility\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/security/ReentrancyGuard.sol\":{\"keccak256\":\"0x190dd6f8d592b7e4e930feb7f4313aeb8e1c4ad3154c27ce1cf6a512fc30d8cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ce8dfb62d0c4fa260d6eec8f1cd47f5f2a044e11bde5b31d18072fa6e7d9010\",\"dweb:/ipfs/QmTyFztU3tLEcEDnqqiaW4UJetqsU77LXc6pjc9oTXCK5u\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xa4d1d62251f8574deb032a35fc948386a9b4de74b812d4f545a1ac120486b48a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c969013129ba9e651a20735ef659fef6d8a1139ea3607bd4b26ddea2d645634\",\"dweb:/ipfs/QmVhVa6LGuzAcB8qgDtVHRkucn4ihj5UZr8xBLcJkP6ucb\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa1e8e83cd0087785df04ac79fb395d9f3684caeaf973d9e2c71caef723a3a5d6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33bbf48cc069be677705037ba7520c22b1b622c23b33e1a71495f2d36549d40b\",\"dweb:/ipfs/Qmct36zWXv3j7LZB83uwbg7TXwnZSN1fqHNDZ93GG98bGz\"]},\"contracts/facets/utils/Utility.sol\":{\"keccak256\":\"0x5474b02eec7790ba08e02172552a49aeaab497fb299ea32072ca40b5a4b6682b\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b3bc61179c4195d4bffc2ec98230fc83a9f3316c7999b9c619e871594bce6fce\",\"dweb:/ipfs/QmfYPiKBEi19r2jGfJRGRecxfobWVDL2wWawnAijrWyau3\"]},\"contracts/interfaces/utils/IUtility.sol\":{\"keccak256\":\"0x235180cb3af695b167f730c8e132873191d5300a6f61e3a3f9cfb0b5ea2777b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a4c12a010d8a5ba3ec9a5973525d51c0c9e4d73efb7cf7ccd80dbd2a0fd2e40\",\"dweb:/ipfs/QmSnPXS7qHd8bPRsz9uWZRbRhEbDWCjeSBkmLenbNrekYN\"]},\"contracts/libraries/utils/LibAccessControl.sol\":{\"keccak256\":\"0xebec727abd5564cc66e0b402d9ceb87168e19d73bd4853b034944b61a420f912\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://5390c191313856ad3f5d863b71d8a9d29a793c73cc6fecd9ef41abff262131a2\",\"dweb:/ipfs/QmUK83c2nwSR1L8M2rADMkJtsaBkADhYN2W3xuoxaQ2eC9\"]}},\"version\":1}"}},"contracts/interfaces/core/IAutomate.sol":{"IAutomate":{"abi":[{"inputs":[],"name":"depositGelatoFunds","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getGelatoAddresses","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMinimumAppGelatoBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_ops","type":"address"}],"name":"setGelatoContracts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"setMinimumAppGelatoBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawGelatoFunds","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"depositGelatoFunds()":"1674bc24","getGelatoAddresses()":"bb6bd765","getMinimumAppGelatoBalance()":"f24a25de","setGelatoContracts(address)":"71ebf6f4","setMinimumAppGelatoBalance(uint256)":"2e4b6945","withdrawGelatoFunds(uint256)":"a6f9223d"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"depositGelatoFunds\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGelatoAddresses\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinimumAppGelatoBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_ops\",\"type\":\"address\"}],\"name\":\"setGelatoContracts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"setMinimumAppGelatoBalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"withdrawGelatoFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/core/IAutomate.sol\":\"IAutomate\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/core/IAutomate.sol\":{\"keccak256\":\"0x21b292f16977568b93ad13329faea0112bed7e0413c441ffcf58ecca8d540ec7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0c9449f7e8725db0c2721f5a8890e58af4d69b465d1e9cecc1acfb1e3db40771\",\"dweb:/ipfs/QmR9mHTaDi8qWCq1tXzBaLgKK6tgEjk1bHEnB8GGSXLBTT\"]}},\"version\":1}"}},"contracts/interfaces/core/IControl.sol":{"IControl":{"abi":[{"inputs":[{"internalType":"address","name":"_superToken","type":"address"}],"name":"addSuperToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"clearBPS","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"depositAsset","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"}],"name":"getAssetTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"address","name":"_superToken","type":"address"}],"name":"getAssetUser","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tag","type":"uint256"}],"name":"getBPSData","outputs":[{"internalType":"uint16","name":"","type":"uint16"},{"internalType":"uint96","name":"","type":"uint96"},{"internalType":"uint96","name":"","type":"uint96"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBPSSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"},{"internalType":"uint256","name":"_nonce","type":"uint256"}],"name":"getControlData","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"}],"name":"getFeeBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMinimumEndDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMinimumLifespan","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"},{"internalType":"int96","name":"_newFlowRate","type":"int96"}],"name":"getNewBufferedAppBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"}],"name":"getNewControlNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getSBPS","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSTBufferDurationInSecond","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isBPSEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"},{"internalType":"int96","name":"_newFlowRate","type":"int96"}],"name":"isNewFlowRateAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"}],"name":"isSuperTokensSupported","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"address","name":"_superToken","type":"address"}],"name":"realizeFeeBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"}],"name":"removeSuperToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16[]","name":"_bpss","type":"uint16[]"},{"internalType":"uint96[]","name":"_flowRateLowerBounds","type":"uint96[]"},{"internalType":"uint96[]","name":"_flowRateUpperBounds","type":"uint96[]"},{"internalType":"uint256[]","name":"_tags","type":"uint256[]"}],"name":"setBPS","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_duration","type":"uint256"}],"name":"setMinimumEndDuration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_duration","type":"uint256"}],"name":"setMinimumLifespan","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_bps","type":"uint16"},{"internalType":"address","name":"_user","type":"address"}],"name":"setSBPS","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_duration","type":"uint256"}],"name":"setSTBufferAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"toggleBPS","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawAsset","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawFeeBalance","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"addSuperToken(address)":"22c3a21f","clearBPS()":"795e3425","depositAsset(address,uint256)":"46a5d043","getAssetTotal(address)":"b2419083","getAssetUser(address,address)":"be835747","getBPSData(uint256)":"6ab1c734","getBPSSize()":"a8771ab9","getControlData(address,uint256)":"0b72660d","getFeeBalance(address)":"c78f6803","getMinimumEndDuration()":"6812a173","getMinimumLifespan()":"ca70e1d5","getNewBufferedAppBalance(address,int96)":"4ee43e46","getNewControlNonce(address)":"7f69bcaf","getSBPS(address)":"2357f2cf","getSTBufferDurationInSecond()":"7ea195ad","isBPSEnabled()":"a86c8c7c","isNewFlowRateAllowed(address,int96)":"c467cddc","isSuperTokensSupported(address)":"acff4744","realizeFeeBalance(uint256,address)":"adefe35e","removeSuperToken(address)":"83807889","setBPS(uint16[],uint96[],uint96[],uint256[])":"cb857c80","setMinimumEndDuration(uint256)":"578dc59a","setMinimumLifespan(uint256)":"245b6c93","setSBPS(uint16,address)":"d99d3b69","setSTBufferAmount(uint256)":"487eb939","toggleBPS()":"703ab1b7","withdrawAsset(address,uint256)":"38e4f064","withdrawFeeBalance(address,uint256)":"ebaae661"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"}],\"name\":\"addSuperToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"clearBPS\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"depositAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"}],\"name\":\"getAssetTotal\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"}],\"name\":\"getAssetUser\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tag\",\"type\":\"uint256\"}],\"name\":\"getBPSData\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"},{\"internalType\":\"uint96\",\"name\":\"\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBPSSize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_nonce\",\"type\":\"uint256\"}],\"name\":\"getControlData\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"}],\"name\":\"getFeeBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinimumEndDuration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinimumLifespan\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"},{\"internalType\":\"int96\",\"name\":\"_newFlowRate\",\"type\":\"int96\"}],\"name\":\"getNewBufferedAppBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"}],\"name\":\"getNewControlNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"getSBPS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSTBufferDurationInSecond\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isBPSEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"},{\"internalType\":\"int96\",\"name\":\"_newFlowRate\",\"type\":\"int96\"}],\"name\":\"isNewFlowRateAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"}],\"name\":\"isSuperTokensSupported\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"}],\"name\":\"realizeFeeBalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"}],\"name\":\"removeSuperToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16[]\",\"name\":\"_bpss\",\"type\":\"uint16[]\"},{\"internalType\":\"uint96[]\",\"name\":\"_flowRateLowerBounds\",\"type\":\"uint96[]\"},{\"internalType\":\"uint96[]\",\"name\":\"_flowRateUpperBounds\",\"type\":\"uint96[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_tags\",\"type\":\"uint256[]\"}],\"name\":\"setBPS\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_duration\",\"type\":\"uint256\"}],\"name\":\"setMinimumEndDuration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_duration\",\"type\":\"uint256\"}],\"name\":\"setMinimumLifespan\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_bps\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"setSBPS\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_duration\",\"type\":\"uint256\"}],\"name\":\"setSTBufferAmount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"toggleBPS\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"withdrawAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"withdrawFeeBalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/core/IControl.sol\":\"IControl\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/core/IControl.sol\":{\"keccak256\":\"0xbe980059242de4291d9e3816f3ee0d4ad8dde4eb6a842a673315a7f82bd0b8b7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5f3f5807a1c3fd9605ca2769413d69f3e99e914a5f196fd5392cbedb3f779f3d\",\"dweb:/ipfs/QmUjmRwMjioDHcy6hLxeWDV7TgxahNwcty3HbGSywJTd46\"]}},\"version\":1}"}},"contracts/interfaces/core/IFlow.sol":{"IFlow":{"abi":[{"inputs":[{"internalType":"address","name":"_superToken","type":"address"},{"internalType":"uint256","name":"_nonce","type":"uint256"}],"name":"closeFlow","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"},{"internalType":"address","name":"_sender","type":"address"},{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"_nonce","type":"uint256"},{"internalType":"int96","name":"_flowRate","type":"int96"}],"name":"decreaseFlow","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"depositSuperToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"address","name":"_superToken","type":"address"}],"name":"getAmountFlowed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"}],"name":"getDepositTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"address","name":"_superToken","type":"address"}],"name":"getDepositUser","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"address","name":"_superToken","type":"address"},{"internalType":"uint256","name":"_nonce","type":"uint256"}],"name":"getFlowData","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"address","name":"_superToken","type":"address"}],"name":"getNewFlowNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"address","name":"_superToken","type":"address"},{"internalType":"int96","name":"_flowRate","type":"int96"}],"name":"getValidSafeLifespan","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"address","name":"_superToken","type":"address"}],"name":"hasActiveFlow","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_viewer","type":"address"},{"internalType":"address","name":"_broadcaster","type":"address"}],"name":"isViewSessionAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"address","name":"_superToken","type":"address"},{"internalType":"uint256","name":"_lifespan","type":"uint256"}],"name":"openFlow","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawSuperToken","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"closeFlow(address,uint256)":"e32867fc","decreaseFlow(address,address,address,uint256,int96)":"36fbb025","depositSuperToken(address,uint256)":"0197c386","getAmountFlowed(address,address)":"3870f4a0","getDepositTotal(address)":"c76474db","getDepositUser(address,address)":"a152ca6f","getFlowData(address,address,uint256)":"54bbc2ad","getNewFlowNonce(address,address)":"521d3f3c","getValidSafeLifespan(address,address,int96)":"0dfa0b82","hasActiveFlow(address,address)":"468240a9","isViewSessionAllowed(address,address)":"9a5b5f93","openFlow(address,address,uint256)":"dfc96e1b","withdrawSuperToken(address,uint256)":"dc5cd1d8"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_nonce\",\"type\":\"uint256\"}],\"name\":\"closeFlow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_nonce\",\"type\":\"uint256\"},{\"internalType\":\"int96\",\"name\":\"_flowRate\",\"type\":\"int96\"}],\"name\":\"decreaseFlow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"depositSuperToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"}],\"name\":\"getAmountFlowed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"}],\"name\":\"getDepositTotal\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"}],\"name\":\"getDepositUser\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_nonce\",\"type\":\"uint256\"}],\"name\":\"getFlowData\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"}],\"name\":\"getNewFlowNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"},{\"internalType\":\"int96\",\"name\":\"_flowRate\",\"type\":\"int96\"}],\"name\":\"getValidSafeLifespan\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"}],\"name\":\"hasActiveFlow\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_viewer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_broadcaster\",\"type\":\"address\"}],\"name\":\"isViewSessionAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_lifespan\",\"type\":\"uint256\"}],\"name\":\"openFlow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"withdrawSuperToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/core/IFlow.sol\":\"IFlow\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/core/IFlow.sol\":{\"keccak256\":\"0x457048a156fdd4960d1ae29d25c23e64a009b07a4d245a28baeb76ac6becbc7c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cfe189445294f1966924fac59728c7b0df24aa97d138432dc94318eca75995ad\",\"dweb:/ipfs/QmVzE173mUK78z8W1rYvwLo5e6UU6TtKdX2AhDq2wiFWkB\"]}},\"version\":1}"}},"contracts/interfaces/core/ISession.sol":{"ISession":{"abi":[{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getCurrentSessionData","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"address","name":"_superToken","type":"address"}],"name":"getNewSessionNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"address","name":"_superToken","type":"address"},{"internalType":"uint256","name":"_nonce","type":"uint256"}],"name":"getSessionData","outputs":[{"internalType":"int96","name":"","type":"int96"},{"internalType":"uint96","name":"","type":"uint96"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"},{"internalType":"uint96","name":"_flowRate","type":"uint96"},{"internalType":"uint256","name":"_tag","type":"uint256"}],"name":"startSession","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_superTokens","type":"address[]"},{"internalType":"uint96[]","name":"_flowRates","type":"uint96[]"},{"internalType":"uint256[]","name":"_tags","type":"uint256[]"}],"name":"startSessions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_superToken","type":"address"}],"name":"stopSession","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_superTokens","type":"address[]"}],"name":"stopSessions","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getCurrentSessionData(address)":"53732469","getNewSessionNonce(address,address)":"92c2226e","getSessionData(address,address,uint256)":"8ff3849b","startSession(address,uint96,uint256)":"7fe70a27","startSessions(address[],uint96[],uint256[])":"f437a7a5","stopSession(address)":"b233bd05","stopSessions(address[])":"9afffbf9"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"getCurrentSessionData\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"}],\"name\":\"getNewSessionNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_nonce\",\"type\":\"uint256\"}],\"name\":\"getSessionData\",\"outputs\":[{\"internalType\":\"int96\",\"name\":\"\",\"type\":\"int96\"},{\"internalType\":\"uint96\",\"name\":\"\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"_flowRate\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"_tag\",\"type\":\"uint256\"}],\"name\":\"startSession\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_superTokens\",\"type\":\"address[]\"},{\"internalType\":\"uint96[]\",\"name\":\"_flowRates\",\"type\":\"uint96[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_tags\",\"type\":\"uint256[]\"}],\"name\":\"startSessions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_superToken\",\"type\":\"address\"}],\"name\":\"stopSession\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_superTokens\",\"type\":\"address[]\"}],\"name\":\"stopSessions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/core/ISession.sol\":\"ISession\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/core/ISession.sol\":{\"keccak256\":\"0xc618e9cd6023ef8744b2eb6211ed3465cda70c874f1297b526d00dbfcbbb70b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be1075605f777814f2c586f36c79822618ec4153c94d5dcf7ea547cdbe019414\",\"dweb:/ipfs/QmdUSV8kSgutygg2kNcn5xZfyowH7FdJnSfurNGFBZGW6A\"]}},\"version\":1}"}},"contracts/interfaces/utils/IAccessControl.sol":{"IAccessControl":{"abi":[{"inputs":[],"name":"getDefaultAdminRole","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"_role","type":"string"}],"name":"getRole","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_role","type":"bytes32"},{"internalType":"address","name":"_account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_role","type":"bytes32"},{"internalType":"address","name":"_account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_role","type":"bytes32"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_role","type":"bytes32"},{"internalType":"address","name":"_account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getDefaultAdminRole()":"52a9c8d7","getRole(string)":"6e9067fb","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","renounceRole(bytes32)":"8bb9c5bf","revokeRole(bytes32,address)":"d547741f"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getDefaultAdminRole\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_role\",\"type\":\"string\"}],\"name\":\"getRole\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_role\",\"type\":\"bytes32\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/utils/IAccessControl.sol\":\"IAccessControl\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/utils/IAccessControl.sol\":{\"keccak256\":\"0xc5635aad433711323ec6cd473aedaca97383d910663bb74a5cda1e8e3323d86d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://404b89c843a0682fcc8fe55740ea803cc4dd85f04398c224202ec599f80d4288\",\"dweb:/ipfs/QmQgt4gNDNX3Khk1R1tTaSccvqrypibWxUjXNeE7VAAtm9\"]}},\"version\":1}"}},"contracts/interfaces/utils/ICut.sol":{"ICut":{"abi":[{"anonymous":false,"inputs":[{"components":[{"internalType":"address","name":"facetAddress","type":"address"},{"internalType":"enum ICut.FacetCutAction","name":"action","type":"uint8"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"indexed":false,"internalType":"struct ICut.FacetCut[]","name":"_diamondCut","type":"tuple[]"},{"indexed":false,"internalType":"address","name":"_init","type":"address"},{"indexed":false,"internalType":"bytes","name":"_calldata","type":"bytes"}],"name":"DiamondCut","type":"event"},{"inputs":[{"components":[{"internalType":"address","name":"facetAddress","type":"address"},{"internalType":"enum ICut.FacetCutAction","name":"action","type":"uint8"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"internalType":"struct ICut.FacetCut[]","name":"_diamondCut","type":"tuple[]"},{"internalType":"address","name":"_init","type":"address"},{"internalType":"bytes","name":"_calldata","type":"bytes"}],"name":"diamondCut","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"diamondCut((address,uint8,bytes4[])[],address,bytes)":"1f931c1c"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"facetAddress\",\"type\":\"address\"},{\"internalType\":\"enum ICut.FacetCutAction\",\"name\":\"action\",\"type\":\"uint8\"},{\"internalType\":\"bytes4[]\",\"name\":\"functionSelectors\",\"type\":\"bytes4[]\"}],\"indexed\":false,\"internalType\":\"struct ICut.FacetCut[]\",\"name\":\"_diamondCut\",\"type\":\"tuple[]\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_init\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_calldata\",\"type\":\"bytes\"}],\"name\":\"DiamondCut\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"facetAddress\",\"type\":\"address\"},{\"internalType\":\"enum ICut.FacetCutAction\",\"name\":\"action\",\"type\":\"uint8\"},{\"internalType\":\"bytes4[]\",\"name\":\"functionSelectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct ICut.FacetCut[]\",\"name\":\"_diamondCut\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"_init\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_calldata\",\"type\":\"bytes\"}],\"name\":\"diamondCut\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"diamondCut((address,uint8,bytes4[])[],address,bytes)\":{\"params\":{\"_calldata\":\"A function call, including function selector and arguments _calldata is executed with delegatecall on _init\",\"_diamondCut\":\"Contains the facet addresses and function selectors\",\"_init\":\"The address of the contract or facet to execute _calldata\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"diamondCut((address,uint8,bytes4[])[],address,bytes)\":{\"notice\":\"Add/replace/remove any number of functions and optionally execute a function with delegatecall\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/utils/ICut.sol\":\"ICut\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/utils/ICut.sol\":{\"keccak256\":\"0xeaf211b0c9da3a46171250f7cf949ffc171447c36b68451013d00a530281790a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1de62f56aba981f3430068a960272e56cbfece148d15861e410bd89f40a0f52d\",\"dweb:/ipfs/QmRw5Wrtm1NRBrnUxyKspheunoGarnkCmEYG2AFZpPeo5x\"]}},\"version\":1}"}},"contracts/interfaces/utils/IERC165.sol":{"IERC165":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Interface identification is specified in ERC-165. This function uses less than 30,000 gas.\",\"params\":{\"interfaceId\":\"The interface identifier, as specified in ERC-165\"},\"returns\":{\"_0\":\"`true` if the contract implements `interfaceID` and `interfaceID` is not 0xffffffff, `false` otherwise\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"supportsInterface(bytes4)\":{\"notice\":\"Query if a contract implements an interface\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/utils/IERC165.sol\":\"IERC165\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/utils/IERC165.sol\":{\"keccak256\":\"0x3adf1411c3cea1e9c8808e7de6f6b3d9050b3ce2f8c974b3ea36e5e774870a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c206e2bb1a3a711b9bdcb8fe22680a12dd88ba4eccb055376e5f6d06eaa393c9\",\"dweb:/ipfs/QmZEj2vabmhVmBEx39LNArRM1U4u69oU1waZ9nDUTRfRX4\"]}},\"version\":1}"}},"contracts/interfaces/utils/ILoupe.sol":{"ILoupe":{"abi":[{"inputs":[{"internalType":"bytes4","name":"_functionSelector","type":"bytes4"}],"name":"facetAddress","outputs":[{"internalType":"address","name":"facetAddress_","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"facetAddresses","outputs":[{"internalType":"address[]","name":"facetAddresses_","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_facet","type":"address"}],"name":"facetFunctionSelectors","outputs":[{"internalType":"bytes4[]","name":"facetFunctionSelectors_","type":"bytes4[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"facets","outputs":[{"components":[{"internalType":"address","name":"facetAddress","type":"address"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"internalType":"struct ILoupe.Facet[]","name":"facets_","type":"tuple[]"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"facetAddress(bytes4)":"cdffacc6","facetAddresses()":"52ef6b2c","facetFunctionSelectors(address)":"adfca15e","facets()":"7a0ed627"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_functionSelector\",\"type\":\"bytes4\"}],\"name\":\"facetAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"facetAddress_\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"facetAddresses\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"facetAddresses_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_facet\",\"type\":\"address\"}],\"name\":\"facetFunctionSelectors\",\"outputs\":[{\"internalType\":\"bytes4[]\",\"name\":\"facetFunctionSelectors_\",\"type\":\"bytes4[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"facets\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"facetAddress\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"functionSelectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct ILoupe.Facet[]\",\"name\":\"facets_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"facetAddress(bytes4)\":{\"details\":\"If facet is not found return address(0).\",\"params\":{\"_functionSelector\":\"The function selector.\"},\"returns\":{\"facetAddress_\":\"The facet address.\"}},\"facetAddresses()\":{\"returns\":{\"facetAddresses_\":\"facetAddresses_\"}},\"facetFunctionSelectors(address)\":{\"params\":{\"_facet\":\"The facet address.\"},\"returns\":{\"facetFunctionSelectors_\":\"facetFunctionSelectors_\"}},\"facets()\":{\"returns\":{\"facets_\":\"Facet\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"facetAddress(bytes4)\":{\"notice\":\"Gets the facet that supports the given selector.\"},\"facetAddresses()\":{\"notice\":\"Get all the facet addresses used by a diamond.\"},\"facetFunctionSelectors(address)\":{\"notice\":\"Gets all the function selectors supported by a specific facet.\"},\"facets()\":{\"notice\":\"Gets all facet addresses and their four byte function selectors.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/utils/ILoupe.sol\":\"ILoupe\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/utils/ILoupe.sol\":{\"keccak256\":\"0x4c5bc561178aa61cd464da8d76ac3853dbd118d8de6709273045e1580def2453\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34ca0c910c0b72d0603fc3ffc5aa28935982396a249419448199c341d8e883fe\",\"dweb:/ipfs/QmSFcJNgH9tFesJDN7W59Pj4ArwuTT1EoMDa6Pqj2Uo3zN\"]}},\"version\":1}"}},"contracts/interfaces/utils/IUtility.sol":{"IUtility":{"abi":[{"inputs":[],"name":"getNativeBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawNativeBalance","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getNativeBalance()":"88a9d554","withdrawNativeBalance(uint256)":"c9a463e2"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getNativeBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"withdrawNativeBalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/utils/IUtility.sol\":\"IUtility\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/utils/IUtility.sol\":{\"keccak256\":\"0x235180cb3af695b167f730c8e132873191d5300a6f61e3a3f9cfb0b5ea2777b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a4c12a010d8a5ba3ec9a5973525d51c0c9e4d73efb7cf7ccd80dbd2a0fd2e40\",\"dweb:/ipfs/QmSnPXS7qHd8bPRsz9uWZRbRhEbDWCjeSBkmLenbNrekYN\"]}},\"version\":1}"}},"contracts/libraries/core/LibAutomate.sol":{"LibAutomate":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209dcf8512e38e5008e0505791d77e9a8063f17eee94e2ccbd4c96ab0edaa1e14664736f6c63430008120033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP14 0xCF DUP6 SLT 0xE3 DUP15 POP ADDMOD 0xE0 POP JUMPI SWAP2 0xD7 PUSH31 0x9A8063F17EEE94E2CCBD4C96AB0EDAA1E14664736F6C634300081200330000 ","sourceMap":"252:4973:42:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209dcf8512e38e5008e0505791d77e9a8063f17eee94e2ccbd4c96ab0edaa1e14664736f6c63430008120033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP14 0xCF DUP6 SLT 0xE3 DUP15 POP ADDMOD 0xE0 POP JUMPI SWAP2 0xD7 PUSH31 0x9A8063F17EEE94E2CCBD4C96AB0EDAA1E14664736F6C634300081200330000 ","sourceMap":"252:4973:42:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/core/LibAutomate.sol\":\"LibAutomate\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol\":{\"keccak256\":\"0xf41ca991f30855bf80ffd11e9347856a517b977f0a6c2d52e6421a99b7840329\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2717fd2bdac99daa960a6de500754ea1b932093c946388c381da48658234b95\",\"dweb:/ipfs/QmP6QVMn6UeA3ByahyJbYQr5M6coHKBKsf3ySZSfbyA8R7\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x9b72f93be69ca894d8492c244259615c4a742afc8d63720dbc8bb81087d9b238\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5a7b96e511be78d5cdf635c784e6ab8cdd38625bb8cafb8a80914a1c89cf0f6\",\"dweb:/ipfs/QmVzTCwJxQAkjRQHboT5QrvsVJGWQHgfEjeTbvyxoKBrds\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xf96f969e24029d43d0df89e59d365f277021dac62b48e1c1e3ebe0acdd7f1ca1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec772b45a624be516f1c81970caa8a2e144301e9d0921cbc1a2789fef39a1269\",\"dweb:/ipfs/QmNyjwxCrGhQMyzLD93oUobJXVe9ceJvRvfXwbEtuxPiEj\"]},\"contracts/libraries/core/LibAutomate.sol\":{\"keccak256\":\"0xdca80cbbdf57dfc0f76c3719a54d2da92c09e46c3844b1011d9742a16ed2eb93\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://d5b967a7f5fa571c8154fa358725e9b5cff19b6e3847ff00e0ec210c9ce7a97b\",\"dweb:/ipfs/Qma7vn262Je4WamND9fytLSFaM4tw7NcGs5pYE1Lc3iB5a\"]},\"contracts/services/gelato/Types.sol\":{\"keccak256\":\"0xcb8ce40dd420fe9d1fc258beba179e7c43560616dfd045d254a15fa75e6043e8\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://27599e8fa821421f99c2ae56716b118c4f47201d20c8475f6554395a60fc00a5\",\"dweb:/ipfs/QmS7h9jcSSZTM1icDDcFjdNgK3cFJWXFEXoJBpjfjn2a89\"]}},\"version\":1}"}},"contracts/libraries/core/LibControl.sol":{"LibControl":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122018dd1653d18a8dfd597f23e41e77fb8ae86cd9cfa7320b525583b0535def549964736f6c63430008120033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 XOR 0xDD AND MSTORE8 0xD1 DUP11 DUP14 REVERT MSIZE PUSH32 0x23E41E77FB8AE86CD9CFA7320B525583B0535DEF549964736F6C634300081200 CALLER ","sourceMap":"702:12899:43:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122018dd1653d18a8dfd597f23e41e77fb8ae86cd9cfa7320b525583b0535def549964736f6c63430008120033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 XOR 0xDD AND MSTORE8 0xD1 DUP11 DUP14 REVERT MSIZE PUSH32 0x23E41E77FB8AE86CD9CFA7320B525583B0535DEF549964736F6C634300081200 CALLER ","sourceMap":"702:12899:43:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/core/LibControl.sol\":\"LibControl\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"@openzeppelin/contracts/token/ERC777/IERC777.sol\":{\"keccak256\":\"0x385a7061f1436b079d44c140dee9387d5313e94874ff9ee877dc0085c981ac3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c3fe22bb0d9527356e11f267f9187134de4d4ed1ff77468b4d73e3238697b96\",\"dweb:/ipfs/Qmc8caJctgxbzXEpxRogQMR2bnBk5U67hA7kKbUEG2PUXV\"]},\"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol\":{\"keccak256\":\"0x1b588d76f3addfeb2f368ec534fbd8da6120c8ba3c08e95f410a9cc2204faf79\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://74e51ec8a8d50ad9c6c047a2548de4aac9e6da23f65b2d8a74e89665d26c527f\",\"dweb:/ipfs/QmS26ukRAwj9ZSHmRSbjmpmdA6EaZHAK6JvE38LkqjRYaP\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol\":{\"keccak256\":\"0xb68e122faba133422f4cbdd7e15fc913073dfa2c3682c18d6449b121e67d1104\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://da0611fda964b8356d38cb006133865b58adc6e11d3817e27daf20b02ad6880f\",\"dweb:/ipfs/QmeLbak3yiUfkGvxEZzmS4ndDwDfxtZNeKiA86G3WxzjyD\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IInstantDistributionAgreementV1.sol\":{\"keccak256\":\"0x7b088dfa11a00d2b1e6e0938978364a6918015b052a4bf3ffcc67db9b3182370\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://2437f6ea2d8c8de7613aef5de4dcf3530c2beb801f7d5f3e21ac617e73f8882b\",\"dweb:/ipfs/QmVBtqXYV25fQZ9P6xokBzgFnHCBthJSZdFo9quBY169fd\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol\":{\"keccak256\":\"0x80254971aff00fc006d70b85b7bc830bb28096789e72ff3f03aa22cc7810eb0c\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://840f9d959abfbf3919db3dca35336e360b2bbd54e677439a545c7c4f163f6d70\",\"dweb:/ipfs/QmR4CRq7dpYR4NuCSASkNrcnbSScRX8MaEvDs8L7v3xDyr\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol\":{\"keccak256\":\"0x9b4fab6dcac1337f78e04d67d8c2b48b1de8bd4bbf14b475840f9dbda7b8f21e\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://cc2f3629ad0cb46bd4f595880591ad6c9d75a82d920cb9355e462fbf8022c820\",\"dweb:/ipfs/QmXMovxK4qpWT4yffXxUVjkMNwxEfS6mtn39mLSmjaxEdW\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperApp.sol\":{\"keccak256\":\"0x6cc4b0724d977190c7441dfc3be6c6e48b43b555c3370af32ef5b6600f15f53f\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://3e89c944642772a42429f21a11017b57deb98a9198f8e4f8749f00aaee71299e\",\"dweb:/ipfs/QmaSv9GvqikcGHJ3tcwATDHSpQw6mfnHPDtcfqcZSS7LF6\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.sol\":{\"keccak256\":\"0x6860f0bf69dcc1d1ec39eefb43e0cd18b276b48ebe9efd53450e09cd2f997ab2\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://6421f80f2ff7818bd235b7bf4b911cc40edcb598507a246b4de0fa0191a9e1aa\",\"dweb:/ipfs/QmWxktXMjYhi1zt52D3JXNcxCFesXu8kQoSCJQ3j88apM3\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperTokenFactory.sol\":{\"keccak256\":\"0xe2525ef2906504e2f61775ed91bbebeea2f4e2e3fa42ce190561acf6a01187ff\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://7a9859eb432321a65cd15ca988a13776e1c31df44b4cf25f95fa04b54a8a8625\",\"dweb:/ipfs/QmQVJQoeoWemptZhbRgWJZWwMTiNtxVsc1FYmGdtdTfqcL\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol\":{\"keccak256\":\"0xab9dab941f99d0f0ef6125fb6eafde03378d7c3e94e613dd12fb7fbf594c3373\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://928c6ef915dee69058d4cfcb9f2344d4fc78d9763b47b17e5c03fbff64ba3c64\",\"dweb:/ipfs/Qmdk733ZHceatz3qbuodLCCS9TUspJJtXLoX6vWwMvrPDE\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance.sol\":{\"keccak256\":\"0x90a9259d0f0bb6b1bb6d48f051277eb75df96a9fbe684a203a3a468ad19318e2\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://9c8162a2d07ffe768920fef55292684149173afefbfba76b8fca007e55092229\",\"dweb:/ipfs/QmducLNwrzeUXEpBjUTSMu7sfmQEwVhcYXApe4brc1zQ6V\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol\":{\"keccak256\":\"0x9cad3866982902ea88df0874a563d2e4aeba5a5bcc6289c30cccf9b4099d2fb6\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://e8fd960b259331f204c7cb7dcd32b09d68f4294e3b872fad00ad467609c3ef72\",\"dweb:/ipfs/QmeZFEvsDunXQGPbXFfN5AvfKM5am1FY8Xv6e3c4tNKvgY\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo.sol\":{\"keccak256\":\"0x55be78ffb441c782f612b153d7d9049e3f0dbfd412c1f7df29c896b972b2985f\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://a223c68e38a6c9b1e363e525911bc7eda44ea517865ae53bd0d34ff858cc02ae\",\"dweb:/ipfs/QmVruGehibG6Emr2A6JHwUnhd4NzsGkE24cbGqnDpEvrKh\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.sol\":{\"keccak256\":\"0x7456cd394cc905aae7cdbd4601ce1c296c768c13c28e66efbb913cc070bad3e4\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://5a6589b428b724721ba5b4dd196c8f366a6e694ef313add093f29af64496c042\",\"dweb:/ipfs/QmSMgV6y8L6pyyzDz6kKmafVwujNWcjTqutpCBxe4uNRqg\"]},\"contracts/libraries/core/LibControl.sol\":{\"keccak256\":\"0x791dd1dc0c61948e1b1a46d190f02a041abdf6e2db26f1b436b06d8116381103\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://ec9343651044d62055789d04d464545afed31f82268dfd17703763a54441e0ec\",\"dweb:/ipfs/QmWKFYUATgubBYLZCRghkenZbjJHQwdQ8ymZVK5xBFm2QJ\"]},\"contracts/libraries/core/LibFlow.sol\":{\"keccak256\":\"0xf07903d54504fd374edbd492a084b92f9b9bd6e39846ecfcb743d9ce3031e2a7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://94b205c755a9c96ec4d8f3631cf24cb255d28b3abc65c7b2580f50a0f3c23f1c\",\"dweb:/ipfs/QmVsrQ3WzkQ9PvckGaBhd2ZDMV56wsPPZcRCGi5Qv9UXmc\"]},\"contracts/libraries/core/LibSession.sol\":{\"keccak256\":\"0xce48bf158372890e3075e07cab5747d373a3a6cf219ba85bef08691a49b96303\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7b8b013d5426d0ba0f4c9657e0ddc06ee0cecbf91679f4cb06a9bf2214cce17e\",\"dweb:/ipfs/QmXTPcBsdSanj4RM3xPrqNNMXk3eG8H7h47zSXj4ZVwTC9\"]},\"contracts/libraries/utils/IterableMappingBPS.sol\":{\"keccak256\":\"0xb6ab47a53267822918fdd13e4df79bfc1e8b2bbf921c80bbc4ad2e706e3539ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://092d19ac7ce0d7ada8fbb01d3af6822d6d8260fe8b8248e54b906a9edf381dd2\",\"dweb:/ipfs/QmZ8LZ72a2sSNfwm4Fpz54ZHVcjTe1dDy4ZrBhbNztZ1Bg\"]}},\"version\":1}"}},"contracts/libraries/core/LibFlow.sol":{"LibFlow":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220de64028bd224eb68822d61cac47fa72db395a12562abbe3ff9bed991ece2d80864736f6c63430008120033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDE PUSH5 0x28BD224EB PUSH9 0x822D61CAC47FA72DB3 SWAP6 LOG1 0x25 PUSH3 0xABBE3F 0xF9 0xBE 0xD9 SWAP2 0xEC 0xE2 0xD8 ADDMOD PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"627:11706:44:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220de64028bd224eb68822d61cac47fa72db395a12562abbe3ff9bed991ece2d80864736f6c63430008120033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDE PUSH5 0x28BD224EB PUSH9 0x822D61CAC47FA72DB3 SWAP6 LOG1 0x25 PUSH3 0xABBE3F 0xF9 0xBE 0xD9 SWAP2 0xEC 0xE2 0xD8 ADDMOD PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"627:11706:44:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/core/LibFlow.sol\":\"LibFlow\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"@openzeppelin/contracts/token/ERC777/IERC777.sol\":{\"keccak256\":\"0x385a7061f1436b079d44c140dee9387d5313e94874ff9ee877dc0085c981ac3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c3fe22bb0d9527356e11f267f9187134de4d4ed1ff77468b4d73e3238697b96\",\"dweb:/ipfs/Qmc8caJctgxbzXEpxRogQMR2bnBk5U67hA7kKbUEG2PUXV\"]},\"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol\":{\"keccak256\":\"0x1b588d76f3addfeb2f368ec534fbd8da6120c8ba3c08e95f410a9cc2204faf79\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://74e51ec8a8d50ad9c6c047a2548de4aac9e6da23f65b2d8a74e89665d26c527f\",\"dweb:/ipfs/QmS26ukRAwj9ZSHmRSbjmpmdA6EaZHAK6JvE38LkqjRYaP\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol\":{\"keccak256\":\"0xb68e122faba133422f4cbdd7e15fc913073dfa2c3682c18d6449b121e67d1104\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://da0611fda964b8356d38cb006133865b58adc6e11d3817e27daf20b02ad6880f\",\"dweb:/ipfs/QmeLbak3yiUfkGvxEZzmS4ndDwDfxtZNeKiA86G3WxzjyD\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IInstantDistributionAgreementV1.sol\":{\"keccak256\":\"0x7b088dfa11a00d2b1e6e0938978364a6918015b052a4bf3ffcc67db9b3182370\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://2437f6ea2d8c8de7613aef5de4dcf3530c2beb801f7d5f3e21ac617e73f8882b\",\"dweb:/ipfs/QmVBtqXYV25fQZ9P6xokBzgFnHCBthJSZdFo9quBY169fd\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol\":{\"keccak256\":\"0x80254971aff00fc006d70b85b7bc830bb28096789e72ff3f03aa22cc7810eb0c\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://840f9d959abfbf3919db3dca35336e360b2bbd54e677439a545c7c4f163f6d70\",\"dweb:/ipfs/QmR4CRq7dpYR4NuCSASkNrcnbSScRX8MaEvDs8L7v3xDyr\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol\":{\"keccak256\":\"0x9b4fab6dcac1337f78e04d67d8c2b48b1de8bd4bbf14b475840f9dbda7b8f21e\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://cc2f3629ad0cb46bd4f595880591ad6c9d75a82d920cb9355e462fbf8022c820\",\"dweb:/ipfs/QmXMovxK4qpWT4yffXxUVjkMNwxEfS6mtn39mLSmjaxEdW\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperApp.sol\":{\"keccak256\":\"0x6cc4b0724d977190c7441dfc3be6c6e48b43b555c3370af32ef5b6600f15f53f\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://3e89c944642772a42429f21a11017b57deb98a9198f8e4f8749f00aaee71299e\",\"dweb:/ipfs/QmaSv9GvqikcGHJ3tcwATDHSpQw6mfnHPDtcfqcZSS7LF6\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.sol\":{\"keccak256\":\"0x6860f0bf69dcc1d1ec39eefb43e0cd18b276b48ebe9efd53450e09cd2f997ab2\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://6421f80f2ff7818bd235b7bf4b911cc40edcb598507a246b4de0fa0191a9e1aa\",\"dweb:/ipfs/QmWxktXMjYhi1zt52D3JXNcxCFesXu8kQoSCJQ3j88apM3\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperTokenFactory.sol\":{\"keccak256\":\"0xe2525ef2906504e2f61775ed91bbebeea2f4e2e3fa42ce190561acf6a01187ff\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://7a9859eb432321a65cd15ca988a13776e1c31df44b4cf25f95fa04b54a8a8625\",\"dweb:/ipfs/QmQVJQoeoWemptZhbRgWJZWwMTiNtxVsc1FYmGdtdTfqcL\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol\":{\"keccak256\":\"0xab9dab941f99d0f0ef6125fb6eafde03378d7c3e94e613dd12fb7fbf594c3373\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://928c6ef915dee69058d4cfcb9f2344d4fc78d9763b47b17e5c03fbff64ba3c64\",\"dweb:/ipfs/Qmdk733ZHceatz3qbuodLCCS9TUspJJtXLoX6vWwMvrPDE\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance.sol\":{\"keccak256\":\"0x90a9259d0f0bb6b1bb6d48f051277eb75df96a9fbe684a203a3a468ad19318e2\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://9c8162a2d07ffe768920fef55292684149173afefbfba76b8fca007e55092229\",\"dweb:/ipfs/QmducLNwrzeUXEpBjUTSMu7sfmQEwVhcYXApe4brc1zQ6V\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol\":{\"keccak256\":\"0x9cad3866982902ea88df0874a563d2e4aeba5a5bcc6289c30cccf9b4099d2fb6\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://e8fd960b259331f204c7cb7dcd32b09d68f4294e3b872fad00ad467609c3ef72\",\"dweb:/ipfs/QmeZFEvsDunXQGPbXFfN5AvfKM5am1FY8Xv6e3c4tNKvgY\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo.sol\":{\"keccak256\":\"0x55be78ffb441c782f612b153d7d9049e3f0dbfd412c1f7df29c896b972b2985f\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://a223c68e38a6c9b1e363e525911bc7eda44ea517865ae53bd0d34ff858cc02ae\",\"dweb:/ipfs/QmVruGehibG6Emr2A6JHwUnhd4NzsGkE24cbGqnDpEvrKh\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.sol\":{\"keccak256\":\"0x7456cd394cc905aae7cdbd4601ce1c296c768c13c28e66efbb913cc070bad3e4\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://5a6589b428b724721ba5b4dd196c8f366a6e694ef313add093f29af64496c042\",\"dweb:/ipfs/QmSMgV6y8L6pyyzDz6kKmafVwujNWcjTqutpCBxe4uNRqg\"]},\"contracts/libraries/core/LibControl.sol\":{\"keccak256\":\"0x791dd1dc0c61948e1b1a46d190f02a041abdf6e2db26f1b436b06d8116381103\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://ec9343651044d62055789d04d464545afed31f82268dfd17703763a54441e0ec\",\"dweb:/ipfs/QmWKFYUATgubBYLZCRghkenZbjJHQwdQ8ymZVK5xBFm2QJ\"]},\"contracts/libraries/core/LibFlow.sol\":{\"keccak256\":\"0xf07903d54504fd374edbd492a084b92f9b9bd6e39846ecfcb743d9ce3031e2a7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://94b205c755a9c96ec4d8f3631cf24cb255d28b3abc65c7b2580f50a0f3c23f1c\",\"dweb:/ipfs/QmVsrQ3WzkQ9PvckGaBhd2ZDMV56wsPPZcRCGi5Qv9UXmc\"]},\"contracts/libraries/core/LibSession.sol\":{\"keccak256\":\"0xce48bf158372890e3075e07cab5747d373a3a6cf219ba85bef08691a49b96303\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7b8b013d5426d0ba0f4c9657e0ddc06ee0cecbf91679f4cb06a9bf2214cce17e\",\"dweb:/ipfs/QmXTPcBsdSanj4RM3xPrqNNMXk3eG8H7h47zSXj4ZVwTC9\"]},\"contracts/libraries/utils/IterableMappingBPS.sol\":{\"keccak256\":\"0xb6ab47a53267822918fdd13e4df79bfc1e8b2bbf921c80bbc4ad2e706e3539ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://092d19ac7ce0d7ada8fbb01d3af6822d6d8260fe8b8248e54b906a9edf381dd2\",\"dweb:/ipfs/QmZ8LZ72a2sSNfwm4Fpz54ZHVcjTe1dDy4ZrBhbNztZ1Bg\"]}},\"version\":1}"}},"contracts/libraries/core/LibSession.sol":{"LibSession":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d883fc842a7f651362da547a21ddef1daeb6cc894d6e9a9b28cba8dfd7e8bc1b64736f6c63430008120033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD8 DUP4 0xFC DUP5 0x2A PUSH32 0x651362DA547A21DDEF1DAEB6CC894D6E9A9B28CBA8DFD7E8BC1B64736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"486:6829:45:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d883fc842a7f651362da547a21ddef1daeb6cc894d6e9a9b28cba8dfd7e8bc1b64736f6c63430008120033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD8 DUP4 0xFC DUP5 0x2A PUSH32 0x651362DA547A21DDEF1DAEB6CC894D6E9A9B28CBA8DFD7E8BC1B64736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"486:6829:45:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/core/LibSession.sol\":\"LibSession\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"@openzeppelin/contracts/token/ERC777/IERC777.sol\":{\"keccak256\":\"0x385a7061f1436b079d44c140dee9387d5313e94874ff9ee877dc0085c981ac3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c3fe22bb0d9527356e11f267f9187134de4d4ed1ff77468b4d73e3238697b96\",\"dweb:/ipfs/Qmc8caJctgxbzXEpxRogQMR2bnBk5U67hA7kKbUEG2PUXV\"]},\"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol\":{\"keccak256\":\"0x1b588d76f3addfeb2f368ec534fbd8da6120c8ba3c08e95f410a9cc2204faf79\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://74e51ec8a8d50ad9c6c047a2548de4aac9e6da23f65b2d8a74e89665d26c527f\",\"dweb:/ipfs/QmS26ukRAwj9ZSHmRSbjmpmdA6EaZHAK6JvE38LkqjRYaP\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol\":{\"keccak256\":\"0xb68e122faba133422f4cbdd7e15fc913073dfa2c3682c18d6449b121e67d1104\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://da0611fda964b8356d38cb006133865b58adc6e11d3817e27daf20b02ad6880f\",\"dweb:/ipfs/QmeLbak3yiUfkGvxEZzmS4ndDwDfxtZNeKiA86G3WxzjyD\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IInstantDistributionAgreementV1.sol\":{\"keccak256\":\"0x7b088dfa11a00d2b1e6e0938978364a6918015b052a4bf3ffcc67db9b3182370\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://2437f6ea2d8c8de7613aef5de4dcf3530c2beb801f7d5f3e21ac617e73f8882b\",\"dweb:/ipfs/QmVBtqXYV25fQZ9P6xokBzgFnHCBthJSZdFo9quBY169fd\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol\":{\"keccak256\":\"0x80254971aff00fc006d70b85b7bc830bb28096789e72ff3f03aa22cc7810eb0c\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://840f9d959abfbf3919db3dca35336e360b2bbd54e677439a545c7c4f163f6d70\",\"dweb:/ipfs/QmR4CRq7dpYR4NuCSASkNrcnbSScRX8MaEvDs8L7v3xDyr\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol\":{\"keccak256\":\"0x9b4fab6dcac1337f78e04d67d8c2b48b1de8bd4bbf14b475840f9dbda7b8f21e\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://cc2f3629ad0cb46bd4f595880591ad6c9d75a82d920cb9355e462fbf8022c820\",\"dweb:/ipfs/QmXMovxK4qpWT4yffXxUVjkMNwxEfS6mtn39mLSmjaxEdW\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperApp.sol\":{\"keccak256\":\"0x6cc4b0724d977190c7441dfc3be6c6e48b43b555c3370af32ef5b6600f15f53f\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://3e89c944642772a42429f21a11017b57deb98a9198f8e4f8749f00aaee71299e\",\"dweb:/ipfs/QmaSv9GvqikcGHJ3tcwATDHSpQw6mfnHPDtcfqcZSS7LF6\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.sol\":{\"keccak256\":\"0x6860f0bf69dcc1d1ec39eefb43e0cd18b276b48ebe9efd53450e09cd2f997ab2\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://6421f80f2ff7818bd235b7bf4b911cc40edcb598507a246b4de0fa0191a9e1aa\",\"dweb:/ipfs/QmWxktXMjYhi1zt52D3JXNcxCFesXu8kQoSCJQ3j88apM3\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperTokenFactory.sol\":{\"keccak256\":\"0xe2525ef2906504e2f61775ed91bbebeea2f4e2e3fa42ce190561acf6a01187ff\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://7a9859eb432321a65cd15ca988a13776e1c31df44b4cf25f95fa04b54a8a8625\",\"dweb:/ipfs/QmQVJQoeoWemptZhbRgWJZWwMTiNtxVsc1FYmGdtdTfqcL\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol\":{\"keccak256\":\"0xab9dab941f99d0f0ef6125fb6eafde03378d7c3e94e613dd12fb7fbf594c3373\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://928c6ef915dee69058d4cfcb9f2344d4fc78d9763b47b17e5c03fbff64ba3c64\",\"dweb:/ipfs/Qmdk733ZHceatz3qbuodLCCS9TUspJJtXLoX6vWwMvrPDE\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance.sol\":{\"keccak256\":\"0x90a9259d0f0bb6b1bb6d48f051277eb75df96a9fbe684a203a3a468ad19318e2\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://9c8162a2d07ffe768920fef55292684149173afefbfba76b8fca007e55092229\",\"dweb:/ipfs/QmducLNwrzeUXEpBjUTSMu7sfmQEwVhcYXApe4brc1zQ6V\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol\":{\"keccak256\":\"0x9cad3866982902ea88df0874a563d2e4aeba5a5bcc6289c30cccf9b4099d2fb6\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://e8fd960b259331f204c7cb7dcd32b09d68f4294e3b872fad00ad467609c3ef72\",\"dweb:/ipfs/QmeZFEvsDunXQGPbXFfN5AvfKM5am1FY8Xv6e3c4tNKvgY\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo.sol\":{\"keccak256\":\"0x55be78ffb441c782f612b153d7d9049e3f0dbfd412c1f7df29c896b972b2985f\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://a223c68e38a6c9b1e363e525911bc7eda44ea517865ae53bd0d34ff858cc02ae\",\"dweb:/ipfs/QmVruGehibG6Emr2A6JHwUnhd4NzsGkE24cbGqnDpEvrKh\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.sol\":{\"keccak256\":\"0x7456cd394cc905aae7cdbd4601ce1c296c768c13c28e66efbb913cc070bad3e4\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://5a6589b428b724721ba5b4dd196c8f366a6e694ef313add093f29af64496c042\",\"dweb:/ipfs/QmSMgV6y8L6pyyzDz6kKmafVwujNWcjTqutpCBxe4uNRqg\"]},\"contracts/libraries/core/LibControl.sol\":{\"keccak256\":\"0x791dd1dc0c61948e1b1a46d190f02a041abdf6e2db26f1b436b06d8116381103\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://ec9343651044d62055789d04d464545afed31f82268dfd17703763a54441e0ec\",\"dweb:/ipfs/QmWKFYUATgubBYLZCRghkenZbjJHQwdQ8ymZVK5xBFm2QJ\"]},\"contracts/libraries/core/LibFlow.sol\":{\"keccak256\":\"0xf07903d54504fd374edbd492a084b92f9b9bd6e39846ecfcb743d9ce3031e2a7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://94b205c755a9c96ec4d8f3631cf24cb255d28b3abc65c7b2580f50a0f3c23f1c\",\"dweb:/ipfs/QmVsrQ3WzkQ9PvckGaBhd2ZDMV56wsPPZcRCGi5Qv9UXmc\"]},\"contracts/libraries/core/LibSession.sol\":{\"keccak256\":\"0xce48bf158372890e3075e07cab5747d373a3a6cf219ba85bef08691a49b96303\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7b8b013d5426d0ba0f4c9657e0ddc06ee0cecbf91679f4cb06a9bf2214cce17e\",\"dweb:/ipfs/QmXTPcBsdSanj4RM3xPrqNNMXk3eG8H7h47zSXj4ZVwTC9\"]},\"contracts/libraries/utils/IterableMappingBPS.sol\":{\"keccak256\":\"0xb6ab47a53267822918fdd13e4df79bfc1e8b2bbf921c80bbc4ad2e706e3539ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://092d19ac7ce0d7ada8fbb01d3af6822d6d8260fe8b8248e54b906a9edf381dd2\",\"dweb:/ipfs/QmZ8LZ72a2sSNfwm4Fpz54ZHVcjTe1dDy4ZrBhbNztZ1Bg\"]}},\"version\":1}"}},"contracts/libraries/core/LibTemplate.sol":{"LibTemplate":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b9ee43f8d5b82cc51c031e0cebf423bb1fc87c53aa88c18bab8ee0644aba893b64736f6c63430008120033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB9 0xEE NUMBER 0xF8 0xD5 0xB8 0x2C 0xC5 SHR SUB 0x1E 0xC 0xEB DELEGATECALL 0x23 0xBB 0x1F 0xC8 PUSH29 0x53AA88C18BAB8EE0644ABA893B64736F6C634300081200330000000000 ","sourceMap":"61:269:46:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b9ee43f8d5b82cc51c031e0cebf423bb1fc87c53aa88c18bab8ee0644aba893b64736f6c63430008120033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB9 0xEE NUMBER 0xF8 0xD5 0xB8 0x2C 0xC5 SHR SUB 0x1E 0xC 0xEB DELEGATECALL 0x23 0xBB 0x1F 0xC8 PUSH29 0x53AA88C18BAB8EE0644ABA893B64736F6C634300081200330000000000 ","sourceMap":"61:269:46:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/core/LibTemplate.sol\":\"LibTemplate\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/libraries/core/LibTemplate.sol\":{\"keccak256\":\"0xa5c368830fe5ab7008409d5193be6cdab2f8ba6a262629bb8faaeefc415eb453\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://65a16af421d79dded3411c9129e77b5d094a94dcbcd1f5fb7679334bb7433dfd\",\"dweb:/ipfs/QmSuj6yVvS41xv8VVpgRJb3sR2CC4mRZ2WdAvjRXXEZbKx\"]}},\"version\":1}"}},"contracts/libraries/utils/IterableMappingBPS.sol":{"IterableMappingBPS":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200b5a63e53722c2e8c2eb94ebde8b29abb28498d455a163d6fabf3d14fcfb11c064736f6c63430008120033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SIGNEXTEND GAS PUSH4 0xE53722C2 0xE8 0xC2 0xEB SWAP5 0xEB 0xDE DUP12 0x29 0xAB 0xB2 DUP5 SWAP9 0xD4 SSTORE LOG1 PUSH4 0xD6FABF3D EQ 0xFC 0xFB GT 0xC0 PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"205:1887:47:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200b5a63e53722c2e8c2eb94ebde8b29abb28498d455a163d6fabf3d14fcfb11c064736f6c63430008120033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SIGNEXTEND GAS PUSH4 0xE53722C2 0xE8 0xC2 0xEB SWAP5 0xEB 0xDE DUP12 0x29 0xAB 0xB2 DUP5 SWAP9 0xD4 SSTORE LOG1 PUSH4 0xD6FABF3D EQ 0xFC 0xFB GT 0xC0 PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"205:1887:47:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/utils/IterableMappingBPS.sol\":\"IterableMappingBPS\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/libraries/utils/IterableMappingBPS.sol\":{\"keccak256\":\"0xb6ab47a53267822918fdd13e4df79bfc1e8b2bbf921c80bbc4ad2e706e3539ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://092d19ac7ce0d7ada8fbb01d3af6822d6d8260fe8b8248e54b906a9edf381dd2\",\"dweb:/ipfs/QmZ8LZ72a2sSNfwm4Fpz54ZHVcjTe1dDy4ZrBhbNztZ1Bg\"]}},\"version\":1}"}},"contracts/libraries/utils/LibAccessControl.sol":{"LibAccessControl":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200e6b4c12a99f2ee419c15e747c8ef5b803d0ed5bb8c945f20304e871deaff83564736f6c63430008120033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE PUSH12 0x4C12A99F2EE419C15E747C8E CREATE2 0xB8 SUB 0xD0 0xED JUMPDEST 0xB8 0xC9 GASLIMIT CALLCODE SUB DIV 0xE8 PUSH18 0xDEAFF83564736F6C63430008120033000000 ","sourceMap":"114:3253:48:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200e6b4c12a99f2ee419c15e747c8ef5b803d0ed5bb8c945f20304e871deaff83564736f6c63430008120033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE PUSH12 0x4C12A99F2EE419C15E747C8E CREATE2 0xB8 SUB 0xD0 0xED JUMPDEST 0xB8 0xC9 GASLIMIT CALLCODE SUB DIV 0xE8 PUSH18 0xDEAFF83564736F6C63430008120033000000 ","sourceMap":"114:3253:48:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/utils/LibAccessControl.sol\":\"LibAccessControl\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xa4d1d62251f8574deb032a35fc948386a9b4de74b812d4f545a1ac120486b48a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c969013129ba9e651a20735ef659fef6d8a1139ea3607bd4b26ddea2d645634\",\"dweb:/ipfs/QmVhVa6LGuzAcB8qgDtVHRkucn4ihj5UZr8xBLcJkP6ucb\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa1e8e83cd0087785df04ac79fb395d9f3684caeaf973d9e2c71caef723a3a5d6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33bbf48cc069be677705037ba7520c22b1b622c23b33e1a71495f2d36549d40b\",\"dweb:/ipfs/Qmct36zWXv3j7LZB83uwbg7TXwnZSN1fqHNDZ93GG98bGz\"]},\"contracts/libraries/utils/LibAccessControl.sol\":{\"keccak256\":\"0xebec727abd5564cc66e0b402d9ceb87168e19d73bd4853b034944b61a420f912\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://5390c191313856ad3f5d863b71d8a9d29a793c73cc6fecd9ef41abff262131a2\",\"dweb:/ipfs/QmUK83c2nwSR1L8M2rADMkJtsaBkADhYN2W3xuoxaQ2eC9\"]}},\"version\":1}"}},"contracts/libraries/utils/LibDiamond.sol":{"LibDiamond":{"abi":[{"anonymous":false,"inputs":[{"components":[{"internalType":"address","name":"facetAddress","type":"address"},{"internalType":"enum ICut.FacetCutAction","name":"action","type":"uint8"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"indexed":false,"internalType":"struct ICut.FacetCut[]","name":"_diamondCut","type":"tuple[]"},{"indexed":false,"internalType":"address","name":"_init","type":"address"},{"indexed":false,"internalType":"bytes","name":"_calldata","type":"bytes"}],"name":"DiamondCut","type":"event"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c4d0b83783de9e18dfe67224c3667bce1a0804ce1f96773d0f0ebbd4f5fa5b6f64736f6c63430008120033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC4 0xD0 0xB8 CALLDATACOPY DUP4 0xDE SWAP15 XOR 0xDF 0xE6 PUSH19 0x24C3667BCE1A0804CE1F96773D0F0EBBD4F5FA JUMPDEST PUSH16 0x64736F6C634300081200330000000000 ","sourceMap":"366:10858:49:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c4d0b83783de9e18dfe67224c3667bce1a0804ce1f96773d0f0ebbd4f5fa5b6f64736f6c63430008120033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC4 0xD0 0xB8 CALLDATACOPY DUP4 0xDE SWAP15 XOR 0xDF 0xE6 PUSH19 0x24C3667BCE1A0804CE1F96773D0F0EBBD4F5FA JUMPDEST PUSH16 0x64736F6C634300081200330000000000 ","sourceMap":"366:10858:49:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"facetAddress\",\"type\":\"address\"},{\"internalType\":\"enum ICut.FacetCutAction\",\"name\":\"action\",\"type\":\"uint8\"},{\"internalType\":\"bytes4[]\",\"name\":\"functionSelectors\",\"type\":\"bytes4[]\"}],\"indexed\":false,\"internalType\":\"struct ICut.FacetCut[]\",\"name\":\"_diamondCut\",\"type\":\"tuple[]\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_init\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_calldata\",\"type\":\"bytes\"}],\"name\":\"DiamondCut\",\"type\":\"event\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/utils/LibDiamond.sol\":\"LibDiamond\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/interfaces/utils/ICut.sol\":{\"keccak256\":\"0xeaf211b0c9da3a46171250f7cf949ffc171447c36b68451013d00a530281790a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1de62f56aba981f3430068a960272e56cbfece148d15861e410bd89f40a0f52d\",\"dweb:/ipfs/QmRw5Wrtm1NRBrnUxyKspheunoGarnkCmEYG2AFZpPeo5x\"]},\"contracts/libraries/utils/LibDiamond.sol\":{\"keccak256\":\"0x79254e503c12329739379fe3900cf174268bfe2c65cf5b7c1396b17783939834\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d405043f0b78b814d17fb721b476d2ab7a9d5a0c6065f6ecd0d4007c43e6b9fe\",\"dweb:/ipfs/QmPEsvxHnZKp84ww7WnQKjGo89eiVzXxcgdGxmMCcWbkZE\"]}},\"version\":1}"}},"contracts/libraries/utils/LibSecurity.sol":{"LibSecurity":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200b9a60a61bcb607bb27c2b3aaa63adb1d529fb0f6feb29c1e24ceb90f63ff84a64736f6c63430008120033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SIGNEXTEND SWAP11 PUSH1 0xA6 SHL 0xCB PUSH1 0x7B 0xB2 PUSH29 0x2B3AAA63ADB1D529FB0F6FEB29C1E24CEB90F63FF84A64736F6C634300 ADDMOD SLT STOP CALLER ","sourceMap":"220:355:50:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200b9a60a61bcb607bb27c2b3aaa63adb1d529fb0f6feb29c1e24ceb90f63ff84a64736f6c63430008120033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SIGNEXTEND SWAP11 PUSH1 0xA6 SHL 0xCB PUSH1 0x7B 0xB2 PUSH29 0x2B3AAA63ADB1D529FB0F6FEB29C1E24CEB90F63FF84A64736F6C634300 ADDMOD SLT STOP CALLER ","sourceMap":"220:355:50:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"// bytes4(keccak256(\\\"isValidSignature(bytes32,bytes)\\\") // 0x1626ba7e\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/utils/LibSecurity.sol\":\"LibSecurity\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1271.sol\":{\"keccak256\":\"0x0705a4b1b86d7b0bd8432118f226ba139c44b9dcaba0a6eafba2dd7d0639c544\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c45b821ef9e882e57c256697a152e108f0f2ad6997609af8904cae99c9bd422e\",\"dweb:/ipfs/QmRKCJW6jjzR5UYZcLpGnhEJ75UVbH6EHkEa49sWx2SKng\"]},\"contracts/libraries/utils/LibSecurity.sol\":{\"keccak256\":\"0x3c6f6c6bfbe45dbaed5153d0360e02e1fdba08402d477322273fb3285446a129\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://0cea010f6dd98674e49a52ccd32de13752db6a726db6a6b79d39f0f8f3574294\",\"dweb:/ipfs/QmWTT5X3iAa37mrd4qPhiaHWtEHkLBf8ALx5nzXPYod2hh\"]}},\"version\":1}"}},"contracts/services/gelato/Types.sol":{"IAutomate":{"abi":[{"inputs":[{"internalType":"bytes32","name":"taskId","type":"bytes32"}],"name":"cancelTask","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"execAddress","type":"address"},{"internalType":"bytes","name":"execDataOrSelector","type":"bytes"},{"components":[{"internalType":"enum Module[]","name":"modules","type":"uint8[]"},{"internalType":"bytes[]","name":"args","type":"bytes[]"}],"internalType":"struct ModuleData","name":"moduleData","type":"tuple"},{"internalType":"address","name":"feeToken","type":"address"}],"name":"createTask","outputs":[{"internalType":"bytes32","name":"taskId","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"gelato","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFeeDetails","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taskTreasury","outputs":[{"internalType":"contract ITaskTreasuryUpgradable","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"cancelTask(bytes32)":"ee8ca3b5","createTask(address,bytes,(uint8[],bytes[]),address)":"3323b467","gelato()":"573ea575","getFeeDetails()":"b810c636","taskTreasury()":"e60a3213"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"taskId\",\"type\":\"bytes32\"}],\"name\":\"cancelTask\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"execAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"execDataOrSelector\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"enum Module[]\",\"name\":\"modules\",\"type\":\"uint8[]\"},{\"internalType\":\"bytes[]\",\"name\":\"args\",\"type\":\"bytes[]\"}],\"internalType\":\"struct ModuleData\",\"name\":\"moduleData\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"feeToken\",\"type\":\"address\"}],\"name\":\"createTask\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"taskId\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gelato\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFeeDetails\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"taskTreasury\",\"outputs\":[{\"internalType\":\"contract ITaskTreasuryUpgradable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/services/gelato/Types.sol\":\"IAutomate\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/services/gelato/Types.sol\":{\"keccak256\":\"0xcb8ce40dd420fe9d1fc258beba179e7c43560616dfd045d254a15fa75e6043e8\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://27599e8fa821421f99c2ae56716b118c4f47201d20c8475f6554395a60fc00a5\",\"dweb:/ipfs/QmS7h9jcSSZTM1icDDcFjdNgK3cFJWXFEXoJBpjfjn2a89\"]}},\"version\":1}"},"IOpsProxyFactory":{"abi":[{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getProxyOf","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getProxyOf(address)":"ded89a7c"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getProxyOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/services/gelato/Types.sol\":\"IOpsProxyFactory\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/services/gelato/Types.sol\":{\"keccak256\":\"0xcb8ce40dd420fe9d1fc258beba179e7c43560616dfd045d254a15fa75e6043e8\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://27599e8fa821421f99c2ae56716b118c4f47201d20c8475f6554395a60fc00a5\",\"dweb:/ipfs/QmS7h9jcSSZTM1icDDcFjdNgK3cFJWXFEXoJBpjfjn2a89\"]}},\"version\":1}"},"ITaskTreasuryUpgradable":{"abi":[{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"depositFunds","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"address","name":"_token","type":"address"}],"name":"userTokenBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"receiver","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawFunds","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"depositFunds(address,address,uint256)":"c1461d57","userTokenBalance(address,address)":"b47064c8","withdrawFunds(address,address,uint256)":"1c20fadd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"depositFunds\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"userTokenBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/services/gelato/Types.sol\":\"ITaskTreasuryUpgradable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/services/gelato/Types.sol\":{\"keccak256\":\"0xcb8ce40dd420fe9d1fc258beba179e7c43560616dfd045d254a15fa75e6043e8\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://27599e8fa821421f99c2ae56716b118c4f47201d20c8475f6554395a60fc00a5\",\"dweb:/ipfs/QmS7h9jcSSZTM1icDDcFjdNgK3cFJWXFEXoJBpjfjn2a89\"]}},\"version\":1}"}},"contracts/tests/InitTest.sol":{"InitTest":{"abi":[{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"init","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50610121806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063b7b0422d14602d575b600080fd5b60436004803603810190603f919060c3565b6045565b005b604c81604f565b50565b8060566060565b6000018190555050565b6000807f7375a7f63427bb424f9e0a1d030dd6a96a0933c56047b4d71ac9da62a0b0ce2990508091505090565b600080fd5b6000819050919050565b60a3816092565b811460ad57600080fd5b50565b60008135905060bd81609c565b92915050565b60006020828403121560d65760d5608d565b5b600060e28482850160b0565b9150509291505056fea264697066735822122053747af61b551fa1d6e9a2a89c84046c5c66ec897c3a7eb9a74e1d4e1edc79bc64736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x121 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xB7B0422D EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x43 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH1 0x3F SWAP2 SWAP1 PUSH1 0xC3 JUMP JUMPDEST PUSH1 0x45 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x4C DUP2 PUSH1 0x4F JUMP JUMPDEST POP JUMP JUMPDEST DUP1 PUSH1 0x56 PUSH1 0x60 JUMP JUMPDEST PUSH1 0x0 ADD DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x7375A7F63427BB424F9E0A1D030DD6A96A0933C56047B4D71AC9DA62A0B0CE29 SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0xA3 DUP2 PUSH1 0x92 JUMP JUMPDEST DUP2 EQ PUSH1 0xAD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH1 0xBD DUP2 PUSH1 0x9C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH1 0xD6 JUMPI PUSH1 0xD5 PUSH1 0x8D JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH1 0xE2 DUP5 DUP3 DUP6 ADD PUSH1 0xB0 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MSTORE8 PUSH21 0x7AF61B551FA1D6E9A2A89C84046C5C66EC897C3A7E 0xB9 0xA7 0x4E SAR 0x4E 0x1E 0xDC PUSH26 0xBC64736F6C634300081200330000000000000000000000000000 ","sourceMap":"97:111:52:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_setTestValue_16403":{"entryPoint":79,"id":16403,"parameterSlots":1,"returnSlots":0},"@_storageTest_16391":{"entryPoint":96,"id":16391,"parameterSlots":0,"returnSlots":1},"@init_16368":{"entryPoint":69,"id":16368,"parameterSlots":1,"returnSlots":0},"abi_decode_t_uint256":{"entryPoint":176,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256":{"entryPoint":195,"id":null,"parameterSlots":2,"returnSlots":1},"allocate_unbounded":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"cleanup_t_uint256":{"entryPoint":146,"id":null,"parameterSlots":1,"returnSlots":1},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":141,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_t_uint256":{"entryPoint":156,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:1022:61","statements":[{"body":{"nodeType":"YulBlock","src":"47:35:61","statements":[{"nodeType":"YulAssignment","src":"57:19:61","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"73:2:61","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"67:5:61"},"nodeType":"YulFunctionCall","src":"67:9:61"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"57:6:61"}]}]},"name":"allocate_unbounded","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"40:6:61","type":""}],"src":"7:75:61"},{"body":{"nodeType":"YulBlock","src":"177:28:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"194:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"197:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"187:6:61"},"nodeType":"YulFunctionCall","src":"187:12:61"},"nodeType":"YulExpressionStatement","src":"187:12:61"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulFunctionDefinition","src":"88:117:61"},{"body":{"nodeType":"YulBlock","src":"300:28:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"317:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"320:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"310:6:61"},"nodeType":"YulFunctionCall","src":"310:12:61"},"nodeType":"YulExpressionStatement","src":"310:12:61"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulFunctionDefinition","src":"211:117:61"},{"body":{"nodeType":"YulBlock","src":"379:32:61","statements":[{"nodeType":"YulAssignment","src":"389:16:61","value":{"name":"value","nodeType":"YulIdentifier","src":"400:5:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"389:7:61"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"361:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"371:7:61","type":""}],"src":"334:77:61"},{"body":{"nodeType":"YulBlock","src":"460:79:61","statements":[{"body":{"nodeType":"YulBlock","src":"517:16:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"526:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"529:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"519:6:61"},"nodeType":"YulFunctionCall","src":"519:12:61"},"nodeType":"YulExpressionStatement","src":"519:12:61"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"483:5:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"508:5:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"490:17:61"},"nodeType":"YulFunctionCall","src":"490:24:61"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"480:2:61"},"nodeType":"YulFunctionCall","src":"480:35:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"473:6:61"},"nodeType":"YulFunctionCall","src":"473:43:61"},"nodeType":"YulIf","src":"470:63:61"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"453:5:61","type":""}],"src":"417:122:61"},{"body":{"nodeType":"YulBlock","src":"597:87:61","statements":[{"nodeType":"YulAssignment","src":"607:29:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"629:6:61"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"616:12:61"},"nodeType":"YulFunctionCall","src":"616:20:61"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"607:5:61"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"672:5:61"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"645:26:61"},"nodeType":"YulFunctionCall","src":"645:33:61"},"nodeType":"YulExpressionStatement","src":"645:33:61"}]},"name":"abi_decode_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"575:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"583:3:61","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"591:5:61","type":""}],"src":"545:139:61"},{"body":{"nodeType":"YulBlock","src":"756:263:61","statements":[{"body":{"nodeType":"YulBlock","src":"802:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"804:77:61"},"nodeType":"YulFunctionCall","src":"804:79:61"},"nodeType":"YulExpressionStatement","src":"804:79:61"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"777:7:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"786:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"773:3:61"},"nodeType":"YulFunctionCall","src":"773:23:61"},{"kind":"number","nodeType":"YulLiteral","src":"798:2:61","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"769:3:61"},"nodeType":"YulFunctionCall","src":"769:32:61"},"nodeType":"YulIf","src":"766:119:61"},{"nodeType":"YulBlock","src":"895:117:61","statements":[{"nodeType":"YulVariableDeclaration","src":"910:15:61","value":{"kind":"number","nodeType":"YulLiteral","src":"924:1:61","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"914:6:61","type":""}]},{"nodeType":"YulAssignment","src":"939:63:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"974:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"985:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"970:3:61"},"nodeType":"YulFunctionCall","src":"970:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"994:7:61"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"949:20:61"},"nodeType":"YulFunctionCall","src":"949:53:61"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"939:6:61"}]}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"726:9:61","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"737:7:61","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"749:6:61","type":""}],"src":"690:329:61"}]},"contents":"{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n}\n","id":61,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"6080604052348015600f57600080fd5b506004361060285760003560e01c8063b7b0422d14602d575b600080fd5b60436004803603810190603f919060c3565b6045565b005b604c81604f565b50565b8060566060565b6000018190555050565b6000807f7375a7f63427bb424f9e0a1d030dd6a96a0933c56047b4d71ac9da62a0b0ce2990508091505090565b600080fd5b6000819050919050565b60a3816092565b811460ad57600080fd5b50565b60008135905060bd81609c565b92915050565b60006020828403121560d65760d5608d565b5b600060e28482850160b0565b9150509291505056fea264697066735822122053747af61b551fa1d6e9a2a89c84046c5c66ec897c3a7eb9a74e1d4e1edc79bc64736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xB7B0422D EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x43 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH1 0x3F SWAP2 SWAP1 PUSH1 0xC3 JUMP JUMPDEST PUSH1 0x45 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x4C DUP2 PUSH1 0x4F JUMP JUMPDEST POP JUMP JUMPDEST DUP1 PUSH1 0x56 PUSH1 0x60 JUMP JUMPDEST PUSH1 0x0 ADD DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x7375A7F63427BB424F9E0A1D030DD6A96A0933C56047B4D71AC9DA62A0B0CE29 SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0xA3 DUP2 PUSH1 0x92 JUMP JUMPDEST DUP2 EQ PUSH1 0xAD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH1 0xBD DUP2 PUSH1 0x9C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH1 0xD6 JUMPI PUSH1 0xD5 PUSH1 0x8D JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH1 0xE2 DUP5 DUP3 DUP6 ADD PUSH1 0xB0 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MSTORE8 PUSH21 0x7AF61B551FA1D6E9A2A89C84046C5C66EC897C3A7E 0xB9 0xA7 0x4E SAR 0x4E 0x1E 0xDC PUSH26 0xBC64736F6C634300081200330000000000000000000000000000 ","sourceMap":"97:111:52:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;121:85;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;170:29;192:6;170:21;:29::i;:::-;121:85;:::o;397:94:53:-;478:6;455:14;:12;:14::i;:::-;:20;;:29;;;;397:94;:::o;204:187::-;251:21;284:16;119:23;284:40;;367:8;357:18;;343:42;204:187;:::o;88:117:61:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o"},"methodIdentifiers":{"init(uint256)":"b7b0422d"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/tests/InitTest.sol\":\"InitTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/tests/InitTest.sol\":{\"keccak256\":\"0x9d7f8ad782bce2eccb75ad00306c5aa07391cb121a0db5edce6f5f1b5ca7ef33\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab96d610c6219e9e009b41c29140668a3a8354f20018765ff10ed2a0918cf78a\",\"dweb:/ipfs/QmX6kvsXTDCVDW7ZRtbmyUEKHP2KF7hmqEzpzcRQeNCfkg\"]},\"contracts/tests/LibTest.sol\":{\"keccak256\":\"0x0328582563b0198648d09405a9a77916efbd0e304286e8aa054ebbf9fb5f9810\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d097bc13a53635c009f3f4f297fe810efd7701b703f1c5a10db34b94ef287b0\",\"dweb:/ipfs/QmX2RUbg8A4WZBWCLE2o5jpR9vyMSEEhST3c3pEARZMpSG\"]}},\"version\":1}"}},"contracts/tests/LibTest.sol":{"LibTest":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204b0135c1902b0cc5715d743257f8640c906518103d9976ba4dea5d38b7a0cda764736f6c63430008120033","opcodes":"PUSH1 0x56 PUSH1 0x50 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x43 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4B ADD CALLDATALOAD 0xC1 SWAP1 0x2B 0xC 0xC5 PUSH18 0x5D743257F8640C906518103D9976BA4DEA5D CODESIZE 0xB7 LOG0 0xCD 0xA7 PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"56:544:53:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204b0135c1902b0cc5715d743257f8640c906518103d9976ba4dea5d38b7a0cda764736f6c63430008120033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4B ADD CALLDATALOAD 0xC1 SWAP1 0x2B 0xC 0xC5 PUSH18 0x5D743257F8640C906518103D9976BA4DEA5D CODESIZE 0xB7 LOG0 0xCD 0xA7 PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"56:544:53:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/tests/LibTest.sol\":\"LibTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/tests/LibTest.sol\":{\"keccak256\":\"0x0328582563b0198648d09405a9a77916efbd0e304286e8aa054ebbf9fb5f9810\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d097bc13a53635c009f3f4f297fe810efd7701b703f1c5a10db34b94ef287b0\",\"dweb:/ipfs/QmX2RUbg8A4WZBWCLE2o5jpR9vyMSEEhST3c3pEARZMpSG\"]}},\"version\":1}"}},"contracts/tests/Test1Facet.sol":{"Test1Facet":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"something","type":"address"}],"name":"TestEvent","type":"event"},{"inputs":[{"internalType":"bytes4","name":"_interfaceID","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"test1Func1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"test1Func10","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"test1Func11","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"test1Func12","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"test1Func13","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"test1Func14","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"test1Func15","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"test1Func16","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"test1Func17","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"test1Func18","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"test1Func19","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"test1Func2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"test1Func20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"test1Func3","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"test1Func4","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"test1Func5","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"test1Func6","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"test1Func7","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"test1Func8","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"test1Func9","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50610359806100206000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806351b68a4d116100b85780639abf97aa1161007c5780639abf97aa146101f8578063b0e8fcc714610202578063cbb835f61461020c578063cd0bae0914610216578063cf3bbe1814610220578063db32da151461022a57610137565b806351b68a4d146101c657806371a99d6f146101d057806377e9d0d6146101da57806381b5207d146101e457806387952d22146101ee57610137565b806324c1d5a7116100ff57806324c1d5a714610194578063292c460d1461019e5780632cb83248146101a85780634484b3b9146101b257806350eb3f43146101bc57610137565b806301ffc9a71461013c5780630716c2ae1461016c578063110460471461017657806319c841ab1461018057806319e3b5331461018a575b600080fd5b610156600480360381019061015191906102c0565b610234565b6040516101639190610308565b60405180910390f35b61017461023b565b005b61017e61023d565b005b61018861023f565b005b610192610241565b005b61019c610243565b005b6101a6610245565b005b6101b0610247565b005b6101ba610249565b005b6101c461024b565b005b6101ce61024d565b005b6101d861024f565b005b6101e2610251565b005b6101ec610253565b005b6101f6610255565b005b610200610257565b005b61020a610259565b005b61021461025b565b005b61021e61025d565b005b61022861025f565b005b610232610261565b005b6000919050565b565b565b565b565b565b565b565b565b565b565b565b565b565b565b565b565b565b565b565b565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61029d81610268565b81146102a857600080fd5b50565b6000813590506102ba81610294565b92915050565b6000602082840312156102d6576102d5610263565b5b60006102e4848285016102ab565b91505092915050565b60008115159050919050565b610302816102ed565b82525050565b600060208201905061031d60008301846102f9565b9291505056fea26469706673582212204c87ed240f050aed6c4c313744f39f62395f8d7bea6d6578a7afef48fe4613ab64736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x359 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x137 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x51B68A4D GT PUSH2 0xB8 JUMPI DUP1 PUSH4 0x9ABF97AA GT PUSH2 0x7C JUMPI DUP1 PUSH4 0x9ABF97AA EQ PUSH2 0x1F8 JUMPI DUP1 PUSH4 0xB0E8FCC7 EQ PUSH2 0x202 JUMPI DUP1 PUSH4 0xCBB835F6 EQ PUSH2 0x20C JUMPI DUP1 PUSH4 0xCD0BAE09 EQ PUSH2 0x216 JUMPI DUP1 PUSH4 0xCF3BBE18 EQ PUSH2 0x220 JUMPI DUP1 PUSH4 0xDB32DA15 EQ PUSH2 0x22A JUMPI PUSH2 0x137 JUMP JUMPDEST DUP1 PUSH4 0x51B68A4D EQ PUSH2 0x1C6 JUMPI DUP1 PUSH4 0x71A99D6F EQ PUSH2 0x1D0 JUMPI DUP1 PUSH4 0x77E9D0D6 EQ PUSH2 0x1DA JUMPI DUP1 PUSH4 0x81B5207D EQ PUSH2 0x1E4 JUMPI DUP1 PUSH4 0x87952D22 EQ PUSH2 0x1EE JUMPI PUSH2 0x137 JUMP JUMPDEST DUP1 PUSH4 0x24C1D5A7 GT PUSH2 0xFF JUMPI DUP1 PUSH4 0x24C1D5A7 EQ PUSH2 0x194 JUMPI DUP1 PUSH4 0x292C460D EQ PUSH2 0x19E JUMPI DUP1 PUSH4 0x2CB83248 EQ PUSH2 0x1A8 JUMPI DUP1 PUSH4 0x4484B3B9 EQ PUSH2 0x1B2 JUMPI DUP1 PUSH4 0x50EB3F43 EQ PUSH2 0x1BC JUMPI PUSH2 0x137 JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x13C JUMPI DUP1 PUSH4 0x716C2AE EQ PUSH2 0x16C JUMPI DUP1 PUSH4 0x11046047 EQ PUSH2 0x176 JUMPI DUP1 PUSH4 0x19C841AB EQ PUSH2 0x180 JUMPI DUP1 PUSH4 0x19E3B533 EQ PUSH2 0x18A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x156 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x151 SWAP2 SWAP1 PUSH2 0x2C0 JUMP JUMPDEST PUSH2 0x234 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x163 SWAP2 SWAP1 PUSH2 0x308 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x174 PUSH2 0x23B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x17E PUSH2 0x23D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x188 PUSH2 0x23F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x192 PUSH2 0x241 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x19C PUSH2 0x243 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1A6 PUSH2 0x245 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1B0 PUSH2 0x247 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1BA PUSH2 0x249 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1C4 PUSH2 0x24B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1CE PUSH2 0x24D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1D8 PUSH2 0x24F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1E2 PUSH2 0x251 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1EC PUSH2 0x253 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1F6 PUSH2 0x255 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x200 PUSH2 0x257 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x20A PUSH2 0x259 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x214 PUSH2 0x25B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x21E PUSH2 0x25D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x228 PUSH2 0x25F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x232 PUSH2 0x261 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SWAP2 SWAP1 POP JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x29D DUP2 PUSH2 0x268 JUMP JUMPDEST DUP2 EQ PUSH2 0x2A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x2BA DUP2 PUSH2 0x294 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2D6 JUMPI PUSH2 0x2D5 PUSH2 0x263 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2E4 DUP5 DUP3 DUP6 ADD PUSH2 0x2AB JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x302 DUP2 PUSH2 0x2ED JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x31D PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2F9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4C DUP8 0xED 0x24 0xF SDIV EXP 0xED PUSH13 0x4C313744F39F62395F8D7BEA6D PUSH6 0x78A7AFEF48FE CHAINID SGT 0xAB PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"57:967:54:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@supportsInterface_16508":{"entryPoint":564,"id":16508,"parameterSlots":1,"returnSlots":1},"@test1Func10_16460":{"entryPoint":597,"id":16460,"parameterSlots":0,"returnSlots":0},"@test1Func11_16464":{"entryPoint":587,"id":16464,"parameterSlots":0,"returnSlots":0},"@test1Func12_16468":{"entryPoint":595,"id":16468,"parameterSlots":0,"returnSlots":0},"@test1Func13_16472":{"entryPoint":575,"id":16472,"parameterSlots":0,"returnSlots":0},"@test1Func14_16476":{"entryPoint":589,"id":16476,"parameterSlots":0,"returnSlots":0},"@test1Func15_16480":{"entryPoint":583,"id":16480,"parameterSlots":0,"returnSlots":0},"@test1Func16_16484":{"entryPoint":593,"id":16484,"parameterSlots":0,"returnSlots":0},"@test1Func17_16488":{"entryPoint":585,"id":16488,"parameterSlots":0,"returnSlots":0},"@test1Func18_16492":{"entryPoint":599,"id":16492,"parameterSlots":0,"returnSlots":0},"@test1Func19_16496":{"entryPoint":581,"id":16496,"parameterSlots":0,"returnSlots":0},"@test1Func1_16424":{"entryPoint":577,"id":16424,"parameterSlots":0,"returnSlots":0},"@test1Func20_16500":{"entryPoint":601,"id":16500,"parameterSlots":0,"returnSlots":0},"@test1Func2_16428":{"entryPoint":571,"id":16428,"parameterSlots":0,"returnSlots":0},"@test1Func3_16432":{"entryPoint":573,"id":16432,"parameterSlots":0,"returnSlots":0},"@test1Func4_16436":{"entryPoint":607,"id":16436,"parameterSlots":0,"returnSlots":0},"@test1Func5_16440":{"entryPoint":579,"id":16440,"parameterSlots":0,"returnSlots":0},"@test1Func6_16444":{"entryPoint":603,"id":16444,"parameterSlots":0,"returnSlots":0},"@test1Func7_16448":{"entryPoint":591,"id":16448,"parameterSlots":0,"returnSlots":0},"@test1Func8_16452":{"entryPoint":609,"id":16452,"parameterSlots":0,"returnSlots":0},"@test1Func9_16456":{"entryPoint":605,"id":16456,"parameterSlots":0,"returnSlots":0},"abi_decode_t_bytes4":{"entryPoint":683,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4":{"entryPoint":704,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_bool_to_t_bool_fromStack":{"entryPoint":761,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":776,"id":null,"parameterSlots":2,"returnSlots":1},"allocate_unbounded":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"cleanup_t_bool":{"entryPoint":749,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_bytes4":{"entryPoint":616,"id":null,"parameterSlots":1,"returnSlots":1},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":611,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_t_bytes4":{"entryPoint":660,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:1515:61","statements":[{"body":{"nodeType":"YulBlock","src":"47:35:61","statements":[{"nodeType":"YulAssignment","src":"57:19:61","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"73:2:61","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"67:5:61"},"nodeType":"YulFunctionCall","src":"67:9:61"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"57:6:61"}]}]},"name":"allocate_unbounded","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"40:6:61","type":""}],"src":"7:75:61"},{"body":{"nodeType":"YulBlock","src":"177:28:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"194:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"197:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"187:6:61"},"nodeType":"YulFunctionCall","src":"187:12:61"},"nodeType":"YulExpressionStatement","src":"187:12:61"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulFunctionDefinition","src":"88:117:61"},{"body":{"nodeType":"YulBlock","src":"300:28:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"317:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"320:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"310:6:61"},"nodeType":"YulFunctionCall","src":"310:12:61"},"nodeType":"YulExpressionStatement","src":"310:12:61"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulFunctionDefinition","src":"211:117:61"},{"body":{"nodeType":"YulBlock","src":"378:105:61","statements":[{"nodeType":"YulAssignment","src":"388:89:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"403:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"410:66:61","type":"","value":"0xffffffff00000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"399:3:61"},"nodeType":"YulFunctionCall","src":"399:78:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"388:7:61"}]}]},"name":"cleanup_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"360:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"370:7:61","type":""}],"src":"334:149:61"},{"body":{"nodeType":"YulBlock","src":"531:78:61","statements":[{"body":{"nodeType":"YulBlock","src":"587:16:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"596:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"599:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"589:6:61"},"nodeType":"YulFunctionCall","src":"589:12:61"},"nodeType":"YulExpressionStatement","src":"589:12:61"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"554:5:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"578:5:61"}],"functionName":{"name":"cleanup_t_bytes4","nodeType":"YulIdentifier","src":"561:16:61"},"nodeType":"YulFunctionCall","src":"561:23:61"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"551:2:61"},"nodeType":"YulFunctionCall","src":"551:34:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"544:6:61"},"nodeType":"YulFunctionCall","src":"544:42:61"},"nodeType":"YulIf","src":"541:62:61"}]},"name":"validator_revert_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"524:5:61","type":""}],"src":"489:120:61"},{"body":{"nodeType":"YulBlock","src":"666:86:61","statements":[{"nodeType":"YulAssignment","src":"676:29:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"698:6:61"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"685:12:61"},"nodeType":"YulFunctionCall","src":"685:20:61"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"676:5:61"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"740:5:61"}],"functionName":{"name":"validator_revert_t_bytes4","nodeType":"YulIdentifier","src":"714:25:61"},"nodeType":"YulFunctionCall","src":"714:32:61"},"nodeType":"YulExpressionStatement","src":"714:32:61"}]},"name":"abi_decode_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"644:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"652:3:61","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"660:5:61","type":""}],"src":"615:137:61"},{"body":{"nodeType":"YulBlock","src":"823:262:61","statements":[{"body":{"nodeType":"YulBlock","src":"869:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"871:77:61"},"nodeType":"YulFunctionCall","src":"871:79:61"},"nodeType":"YulExpressionStatement","src":"871:79:61"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"844:7:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"853:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"840:3:61"},"nodeType":"YulFunctionCall","src":"840:23:61"},{"kind":"number","nodeType":"YulLiteral","src":"865:2:61","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"836:3:61"},"nodeType":"YulFunctionCall","src":"836:32:61"},"nodeType":"YulIf","src":"833:119:61"},{"nodeType":"YulBlock","src":"962:116:61","statements":[{"nodeType":"YulVariableDeclaration","src":"977:15:61","value":{"kind":"number","nodeType":"YulLiteral","src":"991:1:61","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"981:6:61","type":""}]},{"nodeType":"YulAssignment","src":"1006:62:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1040:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"1051:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1036:3:61"},"nodeType":"YulFunctionCall","src":"1036:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1060:7:61"}],"functionName":{"name":"abi_decode_t_bytes4","nodeType":"YulIdentifier","src":"1016:19:61"},"nodeType":"YulFunctionCall","src":"1016:52:61"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1006:6:61"}]}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"793:9:61","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"804:7:61","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"816:6:61","type":""}],"src":"758:327:61"},{"body":{"nodeType":"YulBlock","src":"1133:48:61","statements":[{"nodeType":"YulAssignment","src":"1143:32:61","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1168:5:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1161:6:61"},"nodeType":"YulFunctionCall","src":"1161:13:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1154:6:61"},"nodeType":"YulFunctionCall","src":"1154:21:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"1143:7:61"}]}]},"name":"cleanup_t_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1115:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"1125:7:61","type":""}],"src":"1091:90:61"},{"body":{"nodeType":"YulBlock","src":"1246:50:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1263:3:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1283:5:61"}],"functionName":{"name":"cleanup_t_bool","nodeType":"YulIdentifier","src":"1268:14:61"},"nodeType":"YulFunctionCall","src":"1268:21:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1256:6:61"},"nodeType":"YulFunctionCall","src":"1256:34:61"},"nodeType":"YulExpressionStatement","src":"1256:34:61"}]},"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1234:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"1241:3:61","type":""}],"src":"1187:109:61"},{"body":{"nodeType":"YulBlock","src":"1394:118:61","statements":[{"nodeType":"YulAssignment","src":"1404:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1416:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"1427:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1412:3:61"},"nodeType":"YulFunctionCall","src":"1412:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1404:4:61"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1478:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1491:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"1502:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1487:3:61"},"nodeType":"YulFunctionCall","src":"1487:17:61"}],"functionName":{"name":"abi_encode_t_bool_to_t_bool_fromStack","nodeType":"YulIdentifier","src":"1440:37:61"},"nodeType":"YulFunctionCall","src":"1440:65:61"},"nodeType":"YulExpressionStatement","src":"1440:65:61"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1366:9:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1378:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1389:4:61","type":""}],"src":"1302:210:61"}]},"contents":"{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_bytes4(value) -> cleaned {\n cleaned := and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000)\n }\n\n function validator_revert_t_bytes4(value) {\n if iszero(eq(value, cleanup_t_bytes4(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bytes4(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_bytes4(value)\n }\n\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bytes4(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n mstore(pos, cleanup_t_bool(value))\n }\n\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_bool_to_t_bool_fromStack(value0, add(headStart, 0))\n\n }\n\n}\n","id":61,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106101375760003560e01c806351b68a4d116100b85780639abf97aa1161007c5780639abf97aa146101f8578063b0e8fcc714610202578063cbb835f61461020c578063cd0bae0914610216578063cf3bbe1814610220578063db32da151461022a57610137565b806351b68a4d146101c657806371a99d6f146101d057806377e9d0d6146101da57806381b5207d146101e457806387952d22146101ee57610137565b806324c1d5a7116100ff57806324c1d5a714610194578063292c460d1461019e5780632cb83248146101a85780634484b3b9146101b257806350eb3f43146101bc57610137565b806301ffc9a71461013c5780630716c2ae1461016c578063110460471461017657806319c841ab1461018057806319e3b5331461018a575b600080fd5b610156600480360381019061015191906102c0565b610234565b6040516101639190610308565b60405180910390f35b61017461023b565b005b61017e61023d565b005b61018861023f565b005b610192610241565b005b61019c610243565b005b6101a6610245565b005b6101b0610247565b005b6101ba610249565b005b6101c461024b565b005b6101ce61024d565b005b6101d861024f565b005b6101e2610251565b005b6101ec610253565b005b6101f6610255565b005b610200610257565b005b61020a610259565b005b61021461025b565b005b61021e61025d565b005b61022861025f565b005b610232610261565b005b6000919050565b565b565b565b565b565b565b565b565b565b565b565b565b565b565b565b565b565b565b565b565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61029d81610268565b81146102a857600080fd5b50565b6000813590506102ba81610294565b92915050565b6000602082840312156102d6576102d5610263565b5b60006102e4848285016102ab565b91505092915050565b60008115159050919050565b610302816102ed565b82525050565b600060208201905061031d60008301846102f9565b9291505056fea26469706673582212204c87ed240f050aed6c4c313744f39f62395f8d7bea6d6578a7afef48fe4613ab64736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x137 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x51B68A4D GT PUSH2 0xB8 JUMPI DUP1 PUSH4 0x9ABF97AA GT PUSH2 0x7C JUMPI DUP1 PUSH4 0x9ABF97AA EQ PUSH2 0x1F8 JUMPI DUP1 PUSH4 0xB0E8FCC7 EQ PUSH2 0x202 JUMPI DUP1 PUSH4 0xCBB835F6 EQ PUSH2 0x20C JUMPI DUP1 PUSH4 0xCD0BAE09 EQ PUSH2 0x216 JUMPI DUP1 PUSH4 0xCF3BBE18 EQ PUSH2 0x220 JUMPI DUP1 PUSH4 0xDB32DA15 EQ PUSH2 0x22A JUMPI PUSH2 0x137 JUMP JUMPDEST DUP1 PUSH4 0x51B68A4D EQ PUSH2 0x1C6 JUMPI DUP1 PUSH4 0x71A99D6F EQ PUSH2 0x1D0 JUMPI DUP1 PUSH4 0x77E9D0D6 EQ PUSH2 0x1DA JUMPI DUP1 PUSH4 0x81B5207D EQ PUSH2 0x1E4 JUMPI DUP1 PUSH4 0x87952D22 EQ PUSH2 0x1EE JUMPI PUSH2 0x137 JUMP JUMPDEST DUP1 PUSH4 0x24C1D5A7 GT PUSH2 0xFF JUMPI DUP1 PUSH4 0x24C1D5A7 EQ PUSH2 0x194 JUMPI DUP1 PUSH4 0x292C460D EQ PUSH2 0x19E JUMPI DUP1 PUSH4 0x2CB83248 EQ PUSH2 0x1A8 JUMPI DUP1 PUSH4 0x4484B3B9 EQ PUSH2 0x1B2 JUMPI DUP1 PUSH4 0x50EB3F43 EQ PUSH2 0x1BC JUMPI PUSH2 0x137 JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x13C JUMPI DUP1 PUSH4 0x716C2AE EQ PUSH2 0x16C JUMPI DUP1 PUSH4 0x11046047 EQ PUSH2 0x176 JUMPI DUP1 PUSH4 0x19C841AB EQ PUSH2 0x180 JUMPI DUP1 PUSH4 0x19E3B533 EQ PUSH2 0x18A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x156 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x151 SWAP2 SWAP1 PUSH2 0x2C0 JUMP JUMPDEST PUSH2 0x234 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x163 SWAP2 SWAP1 PUSH2 0x308 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x174 PUSH2 0x23B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x17E PUSH2 0x23D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x188 PUSH2 0x23F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x192 PUSH2 0x241 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x19C PUSH2 0x243 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1A6 PUSH2 0x245 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1B0 PUSH2 0x247 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1BA PUSH2 0x249 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1C4 PUSH2 0x24B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1CE PUSH2 0x24D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1D8 PUSH2 0x24F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1E2 PUSH2 0x251 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1EC PUSH2 0x253 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1F6 PUSH2 0x255 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x200 PUSH2 0x257 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x20A PUSH2 0x259 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x214 PUSH2 0x25B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x21E PUSH2 0x25D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x228 PUSH2 0x25F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x232 PUSH2 0x261 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SWAP2 SWAP1 POP JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x29D DUP2 PUSH2 0x268 JUMP JUMPDEST DUP2 EQ PUSH2 0x2A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x2BA DUP2 PUSH2 0x294 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2D6 JUMPI PUSH2 0x2D5 PUSH2 0x263 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2E4 DUP5 DUP3 DUP6 ADD PUSH2 0x2AB JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x302 DUP2 PUSH2 0x2ED JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x31D PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2F9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4C DUP8 0xED 0x24 0xF SDIV EXP 0xED PUSH13 0x4C313744F39F62395F8D7BEA6D PUSH6 0x78A7AFEF48FE CHAINID SGT 0xAB PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"57:967:54:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;915:107;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;163:33;;;:::i;:::-;;202;;;:::i;:::-;;595:34;;;:::i;:::-;;124:33;;;:::i;:::-;;280;;;:::i;:::-;;835:34;;;:::i;:::-;;675;;;:::i;:::-;;755;;;:::i;:::-;;515;;;:::i;:::-;;635;;;:::i;:::-;;358:33;;;:::i;:::-;;715:34;;;:::i;:::-;;555;;;:::i;:::-;;475;;;:::i;:::-;;795;;;:::i;:::-;;875;;;:::i;:::-;;319:33;;;:::i;:::-;;436;;;:::i;:::-;;241;;;:::i;:::-;;397;;;:::i;:::-;;915:107;1010:4;915:107;;;:::o;163:33::-;:::o;202:::-;:::o;595:34::-;:::o;124:33::-;:::o;280:::-;:::o;835:34::-;:::o;675:::-;:::o;755:::-;:::o;515:::-;:::o;635:::-;:::o;358:33::-;:::o;715:34::-;:::o;555:::-;:::o;475:::-;:::o;795:::-;:::o;875:::-;:::o;319:33::-;:::o;436:::-;:::o;241:::-;:::o;397:::-;:::o;88:117:61:-;197:1;194;187:12;334:149;370:7;410:66;403:5;399:78;388:89;;334:149;;;:::o;489:120::-;561:23;578:5;561:23;:::i;:::-;554:5;551:34;541:62;;599:1;596;589:12;541:62;489:120;:::o;615:137::-;660:5;698:6;685:20;676:29;;714:32;740:5;714:32;:::i;:::-;615:137;;;;:::o;758:327::-;816:6;865:2;853:9;844:7;840:23;836:32;833:119;;;871:79;;:::i;:::-;833:119;991:1;1016:52;1060:7;1051:6;1040:9;1036:22;1016:52;:::i;:::-;1006:62;;962:116;758:327;;;;:::o;1091:90::-;1125:7;1168:5;1161:13;1154:21;1143:32;;1091:90;;;:::o;1187:109::-;1268:21;1283:5;1268:21;:::i;:::-;1263:3;1256:34;1187:109;;:::o;1302:210::-;1389:4;1427:2;1416:9;1412:18;1404:26;;1440:65;1502:1;1491:9;1487:17;1478:6;1440:65;:::i;:::-;1302:210;;;;:::o"},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7","test1Func1()":"19e3b533","test1Func10()":"87952d22","test1Func11()":"50eb3f43","test1Func12()":"81b5207d","test1Func13()":"19c841ab","test1Func14()":"51b68a4d","test1Func15()":"2cb83248","test1Func16()":"77e9d0d6","test1Func17()":"4484b3b9","test1Func18()":"9abf97aa","test1Func19()":"292c460d","test1Func2()":"0716c2ae","test1Func20()":"b0e8fcc7","test1Func3()":"11046047","test1Func4()":"cf3bbe18","test1Func5()":"24c1d5a7","test1Func6()":"cbb835f6","test1Func7()":"71a99d6f","test1Func8()":"db32da15","test1Func9()":"cd0bae09"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"something\",\"type\":\"address\"}],\"name\":\"TestEvent\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test1Func1\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test1Func10\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test1Func11\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test1Func12\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test1Func13\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test1Func14\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test1Func15\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test1Func16\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test1Func17\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test1Func18\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test1Func19\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test1Func2\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test1Func20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test1Func3\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test1Func4\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test1Func5\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test1Func6\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test1Func7\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test1Func8\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test1Func9\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/tests/Test1Facet.sol\":\"Test1Facet\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/tests/Test1Facet.sol\":{\"keccak256\":\"0x6ecff541c0a29803cf52d219df04d85ed131abf232af1740a2e8a0a3eccdec86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37d7f68349a9a53ebb979679db425df1cadad635c98fa4e38cba3a11f0fa8660\",\"dweb:/ipfs/QmQKejFGP78weLppHEKU997CKtmwpu11CJaFdMMofkGruN\"]}},\"version\":1}"}},"contracts/tests/Test2Facet.sol":{"Test2Facet":{"abi":[{"inputs":[],"name":"test2Func1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"test2Func10","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"test2Func11","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"test2Func12","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"test2Func13","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"test2Func14","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"test2Func15","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"test2Func16","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"test2Func17","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"test2Func18","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"test2Func19","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"test2Func2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"test2Func20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"test2Func3","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"test2Func4","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"test2Func5","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"test2Func6","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"test2Func7","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"test2Func8","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"test2Func9","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50610257806100206000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c80638ee8be30116100ad578063d2f0c73e11610071578063d2f0c73e146101c7578063e5f687b2146101d1578063e7de23a4146101db578063ea36b558146101e5578063ef3f4d78146101ef5761012c565b80638ee8be301461019557806391d0396b1461019f578063c670641d146101a9578063ca5fa5c0146101b3578063caae8f23146101bd5761012c565b80632e463958116100f45780632e463958146101635780635fd6312b1461016d5780636dc16b0114610177578063792a8e2e14610181578063884280a61461018b5761012c565b806303feeeae146101315780630c103a931461013b5780630e4cd7fc14610145578063148843091461014f57806317fd06e714610159575b600080fd5b6101396101f9565b005b6101436101fb565b005b61014d6101fd565b005b6101576101ff565b005b610161610201565b005b61016b610203565b005b610175610205565b005b61017f610207565b005b610189610209565b005b61019361020b565b005b61019d61020d565b005b6101a761020f565b005b6101b1610211565b005b6101bb610213565b005b6101c5610215565b005b6101cf610217565b005b6101d9610219565b005b6101e361021b565b005b6101ed61021d565b005b6101f761021f565b005b565b565b565b565b565b565b565b565b565b565b565b565b565b565b565b565b565b565b565b56fea2646970667358221220827357bb518fcc14f1fbc8cdb66f483c3780416f08a3fb2ca2505df5b7c68ba864736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x257 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x12C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8EE8BE30 GT PUSH2 0xAD JUMPI DUP1 PUSH4 0xD2F0C73E GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD2F0C73E EQ PUSH2 0x1C7 JUMPI DUP1 PUSH4 0xE5F687B2 EQ PUSH2 0x1D1 JUMPI DUP1 PUSH4 0xE7DE23A4 EQ PUSH2 0x1DB JUMPI DUP1 PUSH4 0xEA36B558 EQ PUSH2 0x1E5 JUMPI DUP1 PUSH4 0xEF3F4D78 EQ PUSH2 0x1EF JUMPI PUSH2 0x12C JUMP JUMPDEST DUP1 PUSH4 0x8EE8BE30 EQ PUSH2 0x195 JUMPI DUP1 PUSH4 0x91D0396B EQ PUSH2 0x19F JUMPI DUP1 PUSH4 0xC670641D EQ PUSH2 0x1A9 JUMPI DUP1 PUSH4 0xCA5FA5C0 EQ PUSH2 0x1B3 JUMPI DUP1 PUSH4 0xCAAE8F23 EQ PUSH2 0x1BD JUMPI PUSH2 0x12C JUMP JUMPDEST DUP1 PUSH4 0x2E463958 GT PUSH2 0xF4 JUMPI DUP1 PUSH4 0x2E463958 EQ PUSH2 0x163 JUMPI DUP1 PUSH4 0x5FD6312B EQ PUSH2 0x16D JUMPI DUP1 PUSH4 0x6DC16B01 EQ PUSH2 0x177 JUMPI DUP1 PUSH4 0x792A8E2E EQ PUSH2 0x181 JUMPI DUP1 PUSH4 0x884280A6 EQ PUSH2 0x18B JUMPI PUSH2 0x12C JUMP JUMPDEST DUP1 PUSH4 0x3FEEEAE EQ PUSH2 0x131 JUMPI DUP1 PUSH4 0xC103A93 EQ PUSH2 0x13B JUMPI DUP1 PUSH4 0xE4CD7FC EQ PUSH2 0x145 JUMPI DUP1 PUSH4 0x14884309 EQ PUSH2 0x14F JUMPI DUP1 PUSH4 0x17FD06E7 EQ PUSH2 0x159 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x139 PUSH2 0x1F9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x143 PUSH2 0x1FB JUMP JUMPDEST STOP JUMPDEST PUSH2 0x14D PUSH2 0x1FD JUMP JUMPDEST STOP JUMPDEST PUSH2 0x157 PUSH2 0x1FF JUMP JUMPDEST STOP JUMPDEST PUSH2 0x161 PUSH2 0x201 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x16B PUSH2 0x203 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x175 PUSH2 0x205 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x17F PUSH2 0x207 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x189 PUSH2 0x209 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x193 PUSH2 0x20B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x19D PUSH2 0x20D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1A7 PUSH2 0x20F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1B1 PUSH2 0x211 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1BB PUSH2 0x213 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1C5 PUSH2 0x215 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1CF PUSH2 0x217 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1D9 PUSH2 0x219 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1E3 PUSH2 0x21B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1ED PUSH2 0x21D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1F7 PUSH2 0x21F JUMP JUMPDEST STOP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP3 PUSH20 0x57BB518FCC14F1FBC8CDB66F483C3780416F08A3 0xFB 0x2C LOG2 POP 0x5D CREATE2 0xB7 0xC6 DUP12 0xA8 PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"57:813:55:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@test2Func10_16551":{"entryPoint":525,"id":16551,"parameterSlots":0,"returnSlots":0},"@test2Func11_16555":{"entryPoint":523,"id":16555,"parameterSlots":0,"returnSlots":0},"@test2Func12_16559":{"entryPoint":531,"id":16559,"parameterSlots":0,"returnSlots":0},"@test2Func13_16563":{"entryPoint":519,"id":16563,"parameterSlots":0,"returnSlots":0},"@test2Func14_16567":{"entryPoint":527,"id":16567,"parameterSlots":0,"returnSlots":0},"@test2Func15_16571":{"entryPoint":505,"id":16571,"parameterSlots":0,"returnSlots":0},"@test2Func16_16575":{"entryPoint":515,"id":16575,"parameterSlots":0,"returnSlots":0},"@test2Func17_16579":{"entryPoint":511,"id":16579,"parameterSlots":0,"returnSlots":0},"@test2Func18_16583":{"entryPoint":507,"id":16583,"parameterSlots":0,"returnSlots":0},"@test2Func19_16587":{"entryPoint":517,"id":16587,"parameterSlots":0,"returnSlots":0},"@test2Func1_16515":{"entryPoint":541,"id":16515,"parameterSlots":0,"returnSlots":0},"@test2Func20_16591":{"entryPoint":521,"id":16591,"parameterSlots":0,"returnSlots":0},"@test2Func2_16519":{"entryPoint":539,"id":16519,"parameterSlots":0,"returnSlots":0},"@test2Func3_16523":{"entryPoint":509,"id":16523,"parameterSlots":0,"returnSlots":0},"@test2Func4_16527":{"entryPoint":529,"id":16527,"parameterSlots":0,"returnSlots":0},"@test2Func5_16531":{"entryPoint":535,"id":16531,"parameterSlots":0,"returnSlots":0},"@test2Func6_16535":{"entryPoint":513,"id":16535,"parameterSlots":0,"returnSlots":0},"@test2Func7_16539":{"entryPoint":543,"id":16539,"parameterSlots":0,"returnSlots":0},"@test2Func8_16543":{"entryPoint":537,"id":16543,"parameterSlots":0,"returnSlots":0},"@test2Func9_16547":{"entryPoint":533,"id":16547,"parameterSlots":0,"returnSlots":0}},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061012c5760003560e01c80638ee8be30116100ad578063d2f0c73e11610071578063d2f0c73e146101c7578063e5f687b2146101d1578063e7de23a4146101db578063ea36b558146101e5578063ef3f4d78146101ef5761012c565b80638ee8be301461019557806391d0396b1461019f578063c670641d146101a9578063ca5fa5c0146101b3578063caae8f23146101bd5761012c565b80632e463958116100f45780632e463958146101635780635fd6312b1461016d5780636dc16b0114610177578063792a8e2e14610181578063884280a61461018b5761012c565b806303feeeae146101315780630c103a931461013b5780630e4cd7fc14610145578063148843091461014f57806317fd06e714610159575b600080fd5b6101396101f9565b005b6101436101fb565b005b61014d6101fd565b005b6101576101ff565b005b610161610201565b005b61016b610203565b005b610175610205565b005b61017f610207565b005b610189610209565b005b61019361020b565b005b61019d61020d565b005b6101a761020f565b005b6101b1610211565b005b6101bb610213565b005b6101c5610215565b005b6101cf610217565b005b6101d9610219565b005b6101e361021b565b005b6101ed61021d565b005b6101f761021f565b005b565b565b565b565b565b565b565b565b565b565b565b565b565b565b565b565b565b565b565b56fea2646970667358221220827357bb518fcc14f1fbc8cdb66f483c3780416f08a3fb2ca2505df5b7c68ba864736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x12C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8EE8BE30 GT PUSH2 0xAD JUMPI DUP1 PUSH4 0xD2F0C73E GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD2F0C73E EQ PUSH2 0x1C7 JUMPI DUP1 PUSH4 0xE5F687B2 EQ PUSH2 0x1D1 JUMPI DUP1 PUSH4 0xE7DE23A4 EQ PUSH2 0x1DB JUMPI DUP1 PUSH4 0xEA36B558 EQ PUSH2 0x1E5 JUMPI DUP1 PUSH4 0xEF3F4D78 EQ PUSH2 0x1EF JUMPI PUSH2 0x12C JUMP JUMPDEST DUP1 PUSH4 0x8EE8BE30 EQ PUSH2 0x195 JUMPI DUP1 PUSH4 0x91D0396B EQ PUSH2 0x19F JUMPI DUP1 PUSH4 0xC670641D EQ PUSH2 0x1A9 JUMPI DUP1 PUSH4 0xCA5FA5C0 EQ PUSH2 0x1B3 JUMPI DUP1 PUSH4 0xCAAE8F23 EQ PUSH2 0x1BD JUMPI PUSH2 0x12C JUMP JUMPDEST DUP1 PUSH4 0x2E463958 GT PUSH2 0xF4 JUMPI DUP1 PUSH4 0x2E463958 EQ PUSH2 0x163 JUMPI DUP1 PUSH4 0x5FD6312B EQ PUSH2 0x16D JUMPI DUP1 PUSH4 0x6DC16B01 EQ PUSH2 0x177 JUMPI DUP1 PUSH4 0x792A8E2E EQ PUSH2 0x181 JUMPI DUP1 PUSH4 0x884280A6 EQ PUSH2 0x18B JUMPI PUSH2 0x12C JUMP JUMPDEST DUP1 PUSH4 0x3FEEEAE EQ PUSH2 0x131 JUMPI DUP1 PUSH4 0xC103A93 EQ PUSH2 0x13B JUMPI DUP1 PUSH4 0xE4CD7FC EQ PUSH2 0x145 JUMPI DUP1 PUSH4 0x14884309 EQ PUSH2 0x14F JUMPI DUP1 PUSH4 0x17FD06E7 EQ PUSH2 0x159 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x139 PUSH2 0x1F9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x143 PUSH2 0x1FB JUMP JUMPDEST STOP JUMPDEST PUSH2 0x14D PUSH2 0x1FD JUMP JUMPDEST STOP JUMPDEST PUSH2 0x157 PUSH2 0x1FF JUMP JUMPDEST STOP JUMPDEST PUSH2 0x161 PUSH2 0x201 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x16B PUSH2 0x203 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x175 PUSH2 0x205 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x17F PUSH2 0x207 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x189 PUSH2 0x209 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x193 PUSH2 0x20B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x19D PUSH2 0x20D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1A7 PUSH2 0x20F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1B1 PUSH2 0x211 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1BB PUSH2 0x213 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1C5 PUSH2 0x215 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1CF PUSH2 0x217 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1D9 PUSH2 0x219 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1E3 PUSH2 0x21B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1ED PUSH2 0x21D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1F7 PUSH2 0x21F JUMP JUMPDEST STOP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP3 PUSH20 0x57BB518FCC14F1FBC8CDB66F483C3780416F08A3 0xFB 0x2C LOG2 POP 0x5D CREATE2 0xB7 0xC6 DUP12 0xA8 PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"57:813:55:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;634:34;;;:::i;:::-;;754;;;:::i;:::-;;161:33;;;:::i;:::-;;714:34;;;:::i;:::-;;278:33;;;:::i;:::-;;674:34;;;:::i;:::-;;794;;;:::i;:::-;;554;;;:::i;:::-;;834;;;:::i;:::-;;474;;;:::i;:::-;;434;;;:::i;:::-;;594;;;:::i;:::-;;200:33;;;:::i;:::-;;514:34;;;:::i;:::-;;395:33;;;:::i;:::-;;239;;;:::i;:::-;;356;;;:::i;:::-;;122;;;:::i;:::-;;83;;;:::i;:::-;;317;;;:::i;:::-;;634:34;:::o;754:::-;:::o;161:33::-;:::o;714:34::-;:::o;278:33::-;:::o;674:34::-;:::o;794:::-;:::o;554:::-;:::o;834:::-;:::o;474:::-;:::o;434:::-;:::o;594:::-;:::o;200:33::-;:::o;514:34::-;:::o;395:33::-;:::o;239:::-;:::o;356:::-;:::o;122:::-;:::o;83:::-;:::o;317:::-;:::o"},"methodIdentifiers":{"test2Func1()":"ea36b558","test2Func10()":"8ee8be30","test2Func11()":"884280a6","test2Func12()":"ca5fa5c0","test2Func13()":"6dc16b01","test2Func14()":"91d0396b","test2Func15()":"03feeeae","test2Func16()":"2e463958","test2Func17()":"14884309","test2Func18()":"0c103a93","test2Func19()":"5fd6312b","test2Func2()":"e7de23a4","test2Func20()":"792a8e2e","test2Func3()":"0e4cd7fc","test2Func4()":"c670641d","test2Func5()":"d2f0c73e","test2Func6()":"17fd06e7","test2Func7()":"ef3f4d78","test2Func8()":"e5f687b2","test2Func9()":"caae8f23"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"test2Func1\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test2Func10\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test2Func11\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test2Func12\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test2Func13\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test2Func14\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test2Func15\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test2Func16\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test2Func17\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test2Func18\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test2Func19\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test2Func2\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test2Func20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test2Func3\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test2Func4\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test2Func5\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test2Func6\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test2Func7\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test2Func8\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test2Func9\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/tests/Test2Facet.sol\":\"Test2Facet\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/tests/Test2Facet.sol\":{\"keccak256\":\"0x014d2432bdcb6028294e232c51878e2741eeab90ab6db609932df5d6e2bb7c65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ae332990cf4dde82e30ca5183bfde450efb95d19e3f1e3a7595637699172dc5f\",\"dweb:/ipfs/QmQvRphRNUm6UQrSFb4VvX3o76ue9yFNHVxUTcfXrcQMsS\"]}},\"version\":1}"}},"contracts/tests/Test3Facet.sol":{"Test3Facet":{"abi":[{"inputs":[],"name":"test3Func1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"test3Func2","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b5060ca8061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c8063e7bf600f146037578063ebfa4bcc14603f575b600080fd5b603d6059565b005b6045605b565b60405160509190607b565b60405180910390f35b565b60006001905090565b6000819050919050565b6075816064565b82525050565b6000602082019050608e6000830184606e565b9291505056fea264697066735822122023e56e5cd3a0f4cc243017303e76ff1d35a3b89806ce219a3b1b35f87550079764736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xCA DUP1 PUSH2 0x1F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x32 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xE7BF600F EQ PUSH1 0x37 JUMPI DUP1 PUSH4 0xEBFA4BCC EQ PUSH1 0x3F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3D PUSH1 0x59 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x45 PUSH1 0x5B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x50 SWAP2 SWAP1 PUSH1 0x7B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x75 DUP2 PUSH1 0x64 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x8E PUSH1 0x0 DUP4 ADD DUP5 PUSH1 0x6E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x23 0xE5 PUSH15 0x5CD3A0F4CC243017303E76FF1D35A3 0xB8 SWAP9 MOD 0xCE 0x21 SWAP11 EXTCODESIZE SHL CALLDATALOAD 0xF8 PUSH22 0x50079764736F6C634300081200330000000000000000 ","sourceMap":"57:146:56:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@test3Func1_16602":{"entryPoint":91,"id":16602,"parameterSlots":0,"returnSlots":1},"@test3Func2_16606":{"entryPoint":89,"id":16606,"parameterSlots":0,"returnSlots":0},"abi_encode_t_uint256_to_t_uint256_fromStack":{"entryPoint":110,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":123,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_t_uint256":{"entryPoint":100,"id":null,"parameterSlots":1,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:439:61","statements":[{"body":{"nodeType":"YulBlock","src":"52:32:61","statements":[{"nodeType":"YulAssignment","src":"62:16:61","value":{"name":"value","nodeType":"YulIdentifier","src":"73:5:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"62:7:61"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"34:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"44:7:61","type":""}],"src":"7:77:61"},{"body":{"nodeType":"YulBlock","src":"155:53:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"172:3:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"195:5:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"177:17:61"},"nodeType":"YulFunctionCall","src":"177:24:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"165:6:61"},"nodeType":"YulFunctionCall","src":"165:37:61"},"nodeType":"YulExpressionStatement","src":"165:37:61"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"143:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"150:3:61","type":""}],"src":"90:118:61"},{"body":{"nodeType":"YulBlock","src":"312:124:61","statements":[{"nodeType":"YulAssignment","src":"322:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"334:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"345:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"330:3:61"},"nodeType":"YulFunctionCall","src":"330:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"322:4:61"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"402:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"415:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"426:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"411:3:61"},"nodeType":"YulFunctionCall","src":"411:17:61"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"358:43:61"},"nodeType":"YulFunctionCall","src":"358:71:61"},"nodeType":"YulExpressionStatement","src":"358:71:61"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"284:9:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"296:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"307:4:61","type":""}],"src":"214:222:61"}]},"contents":"{\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n}\n","id":61,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"6080604052348015600f57600080fd5b506004361060325760003560e01c8063e7bf600f146037578063ebfa4bcc14603f575b600080fd5b603d6059565b005b6045605b565b60405160509190607b565b60405180910390f35b565b60006001905090565b6000819050919050565b6075816064565b82525050565b6000602082019050608e6000830184606e565b9291505056fea264697066735822122023e56e5cd3a0f4cc243017303e76ff1d35a3b89806ce219a3b1b35f87550079764736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x32 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xE7BF600F EQ PUSH1 0x37 JUMPI DUP1 PUSH4 0xEBFA4BCC EQ PUSH1 0x3F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3D PUSH1 0x59 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x45 PUSH1 0x5B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x50 SWAP2 SWAP1 PUSH1 0x7B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x75 DUP2 PUSH1 0x64 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x8E PUSH1 0x0 DUP4 ADD DUP5 PUSH1 0x6E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x23 0xE5 PUSH15 0x5CD3A0F4CC243017303E76FF1D35A3 0xB8 SWAP9 MOD 0xCE 0x21 SWAP11 EXTCODESIZE SHL CALLDATALOAD 0xF8 PUSH22 0x50079764736F6C634300081200330000000000000000 ","sourceMap":"57:146:56:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;168:33;;;:::i;:::-;;83:79;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;168:33;:::o;83:79::-;128:7;154:1;147:8;;83:79;:::o;7:77:61:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o"},"methodIdentifiers":{"test3Func1()":"ebfa4bcc","test3Func2()":"e7bf600f"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"test3Func1\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test3Func2\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/tests/Test3Facet.sol\":\"Test3Facet\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/tests/Test3Facet.sol\":{\"keccak256\":\"0x812c9c267737d9ea206a1c6a986e3c0c5d17774f4bdcd9f3bf8782ad8cc9b409\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a5a5818f901fcd17e9be14531f356b1126c45e7fe6a006adb3ebd69d1f3fb4d6\",\"dweb:/ipfs/QmZVUu938pCHzNnRaJwqBqEdsP5t1rBf8azZrqjuLJXb4P\"]}},\"version\":1}"}},"contracts/tests/Test3Facet2.sol":{"Test3Facet2":{"abi":[{"inputs":[],"name":"test3Func1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b5060b68061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063ebfa4bcc14602d575b600080fd5b60336047565b604051603e91906067565b60405180910390f35b60006002905090565b6000819050919050565b6061816050565b82525050565b6000602082019050607a6000830184605a565b9291505056fea2646970667358221220fa8d9015763e9ef2a558f5c9d17d2c2b72a97ce49d3f9c04b79dccd873dfd26064736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xB6 DUP1 PUSH2 0x1F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xEBFA4BCC EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x33 PUSH1 0x47 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x3E SWAP2 SWAP1 PUSH1 0x67 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x2 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x61 DUP2 PUSH1 0x50 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x7A PUSH1 0x0 DUP4 ADD DUP5 PUSH1 0x5A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 STATICCALL DUP14 SWAP1 ISZERO PUSH23 0x3E9EF2A558F5C9D17D2C2B72A97CE49D3F9C04B79DCCD8 PUSH20 0xDFD26064736F6C63430008120033000000000000 ","sourceMap":"57:108:57:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@test3Func1_16617":{"entryPoint":71,"id":16617,"parameterSlots":0,"returnSlots":1},"abi_encode_t_uint256_to_t_uint256_fromStack":{"entryPoint":90,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":103,"id":null,"parameterSlots":2,"returnSlots":1},"cleanup_t_uint256":{"entryPoint":80,"id":null,"parameterSlots":1,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:439:61","statements":[{"body":{"nodeType":"YulBlock","src":"52:32:61","statements":[{"nodeType":"YulAssignment","src":"62:16:61","value":{"name":"value","nodeType":"YulIdentifier","src":"73:5:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"62:7:61"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"34:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"44:7:61","type":""}],"src":"7:77:61"},{"body":{"nodeType":"YulBlock","src":"155:53:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"172:3:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"195:5:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"177:17:61"},"nodeType":"YulFunctionCall","src":"177:24:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"165:6:61"},"nodeType":"YulFunctionCall","src":"165:37:61"},"nodeType":"YulExpressionStatement","src":"165:37:61"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"143:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"150:3:61","type":""}],"src":"90:118:61"},{"body":{"nodeType":"YulBlock","src":"312:124:61","statements":[{"nodeType":"YulAssignment","src":"322:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"334:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"345:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"330:3:61"},"nodeType":"YulFunctionCall","src":"330:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"322:4:61"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"402:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"415:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"426:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"411:3:61"},"nodeType":"YulFunctionCall","src":"411:17:61"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"358:43:61"},"nodeType":"YulFunctionCall","src":"358:71:61"},"nodeType":"YulExpressionStatement","src":"358:71:61"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"284:9:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"296:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"307:4:61","type":""}],"src":"214:222:61"}]},"contents":"{\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n}\n","id":61,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"6080604052348015600f57600080fd5b506004361060285760003560e01c8063ebfa4bcc14602d575b600080fd5b60336047565b604051603e91906067565b60405180910390f35b60006002905090565b6000819050919050565b6061816050565b82525050565b6000602082019050607a6000830184605a565b9291505056fea2646970667358221220fa8d9015763e9ef2a558f5c9d17d2c2b72a97ce49d3f9c04b79dccd873dfd26064736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xEBFA4BCC EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x33 PUSH1 0x47 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x3E SWAP2 SWAP1 PUSH1 0x67 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x2 SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x61 DUP2 PUSH1 0x50 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x7A PUSH1 0x0 DUP4 ADD DUP5 PUSH1 0x5A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 STATICCALL DUP14 SWAP1 ISZERO PUSH23 0x3E9EF2A558F5C9D17D2C2B72A97CE49D3F9C04B79DCCD8 PUSH20 0xDFD26064736F6C63430008120033000000000000 ","sourceMap":"57:108:57:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;84:79;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;129:7;155:1;148:8;;84:79;:::o;7:77:61:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o"},"methodIdentifiers":{"test3Func1()":"ebfa4bcc"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"test3Func1\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/tests/Test3Facet2.sol\":\"Test3Facet2\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/tests/Test3Facet2.sol\":{\"keccak256\":\"0xd159a85494feaf801d73faf3ec47dddc5030ce4ba6a03accb66e50159e7423a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3d976958866c142dfbb228a31aff1d3c7c68a43ab1770cfe9f6a8552237c25b2\",\"dweb:/ipfs/QmSMQV29ykGK3qP3jH4XByynaoSzXJsgyYGrpNzK1uzzGa\"]}},\"version\":1}"}},"contracts/tests/Test4Facet.sol":{"Test4Facet":{"abi":[{"inputs":[],"name":"test4Func1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"test4Func2","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"6080604052348015600f57600080fd5b5060818061001e6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806339fcc3fd14603757806383e1265214603f575b600080fd5b603d6047565b005b60456049565b005b565b56fea264697066735822122081fdc27a4d2eb955d894ad6f4158e570fdb7ee2bf9f648a3b627e2f0e2f30a5364736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x81 DUP1 PUSH2 0x1E PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x32 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x39FCC3FD EQ PUSH1 0x37 JUMPI DUP1 PUSH4 0x83E12652 EQ PUSH1 0x3F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3D PUSH1 0x47 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x45 PUSH1 0x49 JUMP JUMPDEST STOP JUMPDEST JUMP JUMPDEST JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP2 REVERT 0xC2 PUSH27 0x4D2EB955D894AD6F4158E570FDB7EE2BF9F648A3B627E2F0E2F30A MSTORE8 PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"57:100:58:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@test4Func1_16624":{"entryPoint":71,"id":16624,"parameterSlots":0,"returnSlots":0},"@test4Func2_16628":{"entryPoint":73,"id":16628,"parameterSlots":0,"returnSlots":0}},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"6080604052348015600f57600080fd5b506004361060325760003560e01c806339fcc3fd14603757806383e1265214603f575b600080fd5b603d6047565b005b60456049565b005b565b56fea264697066735822122081fdc27a4d2eb955d894ad6f4158e570fdb7ee2bf9f648a3b627e2f0e2f30a5364736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x32 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x39FCC3FD EQ PUSH1 0x37 JUMPI DUP1 PUSH4 0x83E12652 EQ PUSH1 0x3F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3D PUSH1 0x47 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x45 PUSH1 0x49 JUMP JUMPDEST STOP JUMPDEST JUMP JUMPDEST JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP2 REVERT 0xC2 PUSH27 0x4D2EB955D894AD6F4158E570FDB7EE2BF9F648A3B627E2F0E2F30A MSTORE8 PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"57:100:58:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;83:33;;;:::i;:::-;;122;;;:::i;:::-;;83;:::o;122:::-;:::o"},"methodIdentifiers":{"test4Func1()":"39fcc3fd","test4Func2()":"83e12652"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"test4Func1\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test4Func2\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/tests/Test4Facet.sol\":\"Test4Facet\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/tests/Test4Facet.sol\":{\"keccak256\":\"0x66779220cca62921359621f3dbfdc4ce8559674eda75c0fbe18163c3b9b36e53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cd3436d4a229fe23015af5135a777377b1d4d58030bc20a0ba9ced66b0d37e7c\",\"dweb:/ipfs/QmXQe57beVrqu1VxAx99Lp136ARaNmaGMq2BdXgjKZVodK\"]}},\"version\":1}"}},"contracts/tests/Test5Facet.sol":{"Test5Facet":{"abi":[{"inputs":[],"name":"getValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"setValue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"test5Func1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"test5Func2","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b506101d9806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632096525514610051578063552410771461006f578063ae9aad3e1461008b578063fbf5c5aa14610095575b600080fd5b61005961009f565b604051610066919061012a565b60405180910390f35b61008960048036038101906100849190610176565b6100ae565b005b6100936100ba565b005b61009d6100bc565b005b60006100a96100be565b905090565b6100b7816100d1565b50565b565b565b60006100c86100e4565b60000154905090565b806100da6100e4565b6000018190555050565b6000807f7375a7f63427bb424f9e0a1d030dd6a96a0933c56047b4d71ac9da62a0b0ce2990508091505090565b6000819050919050565b61012481610111565b82525050565b600060208201905061013f600083018461011b565b92915050565b600080fd5b61015381610111565b811461015e57600080fd5b50565b6000813590506101708161014a565b92915050565b60006020828403121561018c5761018b610145565b5b600061019a84828501610161565b9150509291505056fea26469706673582212205d355169b04faf01c476a85549834aac956d30a67401472e435005078c03353d64736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D9 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x20965255 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x55241077 EQ PUSH2 0x6F JUMPI DUP1 PUSH4 0xAE9AAD3E EQ PUSH2 0x8B JUMPI DUP1 PUSH4 0xFBF5C5AA EQ PUSH2 0x95 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x59 PUSH2 0x9F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x66 SWAP2 SWAP1 PUSH2 0x12A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x89 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x84 SWAP2 SWAP1 PUSH2 0x176 JUMP JUMPDEST PUSH2 0xAE JUMP JUMPDEST STOP JUMPDEST PUSH2 0x93 PUSH2 0xBA JUMP JUMPDEST STOP JUMPDEST PUSH2 0x9D PUSH2 0xBC JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH2 0xA9 PUSH2 0xBE JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0xB7 DUP2 PUSH2 0xD1 JUMP JUMPDEST POP JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC8 PUSH2 0xE4 JUMP JUMPDEST PUSH1 0x0 ADD SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST DUP1 PUSH2 0xDA PUSH2 0xE4 JUMP JUMPDEST PUSH1 0x0 ADD DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x7375A7F63427BB424F9E0A1D030DD6A96A0933C56047B4D71AC9DA62A0B0CE29 SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x124 DUP2 PUSH2 0x111 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x13F PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x11B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x153 DUP2 PUSH2 0x111 JUMP JUMPDEST DUP2 EQ PUSH2 0x15E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x170 DUP2 PUSH2 0x14A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x18C JUMPI PUSH2 0x18B PUSH2 0x145 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x19A DUP5 DUP3 DUP6 ADD PUSH2 0x161 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x5D CALLDATALOAD MLOAD PUSH10 0xB04FAF01C476A8554983 0x4A 0xAC SWAP6 PUSH14 0x30A67401472E435005078C03353D PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"97:300:59:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_getTestValue_16413":{"entryPoint":190,"id":16413,"parameterSlots":0,"returnSlots":1},"@_setTestValue_16403":{"entryPoint":209,"id":16403,"parameterSlots":1,"returnSlots":0},"@_storageTest_16391":{"entryPoint":228,"id":16391,"parameterSlots":0,"returnSlots":1},"@getValue_16663":{"entryPoint":159,"id":16663,"parameterSlots":0,"returnSlots":1},"@setValue_16653":{"entryPoint":174,"id":16653,"parameterSlots":1,"returnSlots":0},"@test5Func1_16637":{"entryPoint":186,"id":16637,"parameterSlots":0,"returnSlots":0},"@test5Func2_16641":{"entryPoint":188,"id":16641,"parameterSlots":0,"returnSlots":0},"abi_decode_t_uint256":{"entryPoint":353,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256":{"entryPoint":374,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_t_uint256_to_t_uint256_fromStack":{"entryPoint":283,"id":null,"parameterSlots":2,"returnSlots":0},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":298,"id":null,"parameterSlots":2,"returnSlots":1},"allocate_unbounded":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":1},"cleanup_t_uint256":{"entryPoint":273,"id":null,"parameterSlots":1,"returnSlots":1},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":325,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_t_uint256":{"entryPoint":330,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:1374:61","statements":[{"body":{"nodeType":"YulBlock","src":"52:32:61","statements":[{"nodeType":"YulAssignment","src":"62:16:61","value":{"name":"value","nodeType":"YulIdentifier","src":"73:5:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"62:7:61"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"34:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"44:7:61","type":""}],"src":"7:77:61"},{"body":{"nodeType":"YulBlock","src":"155:53:61","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"172:3:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"195:5:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"177:17:61"},"nodeType":"YulFunctionCall","src":"177:24:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"165:6:61"},"nodeType":"YulFunctionCall","src":"165:37:61"},"nodeType":"YulExpressionStatement","src":"165:37:61"}]},"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"143:5:61","type":""},{"name":"pos","nodeType":"YulTypedName","src":"150:3:61","type":""}],"src":"90:118:61"},{"body":{"nodeType":"YulBlock","src":"312:124:61","statements":[{"nodeType":"YulAssignment","src":"322:26:61","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"334:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"345:2:61","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"330:3:61"},"nodeType":"YulFunctionCall","src":"330:18:61"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"322:4:61"}]},{"expression":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"402:6:61"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"415:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"426:1:61","type":"","value":"0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"411:3:61"},"nodeType":"YulFunctionCall","src":"411:17:61"}],"functionName":{"name":"abi_encode_t_uint256_to_t_uint256_fromStack","nodeType":"YulIdentifier","src":"358:43:61"},"nodeType":"YulFunctionCall","src":"358:71:61"},"nodeType":"YulExpressionStatement","src":"358:71:61"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"284:9:61","type":""},{"name":"value0","nodeType":"YulTypedName","src":"296:6:61","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"307:4:61","type":""}],"src":"214:222:61"},{"body":{"nodeType":"YulBlock","src":"482:35:61","statements":[{"nodeType":"YulAssignment","src":"492:19:61","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"508:2:61","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"502:5:61"},"nodeType":"YulFunctionCall","src":"502:9:61"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"492:6:61"}]}]},"name":"allocate_unbounded","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"475:6:61","type":""}],"src":"442:75:61"},{"body":{"nodeType":"YulBlock","src":"612:28:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"629:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"632:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"622:6:61"},"nodeType":"YulFunctionCall","src":"622:12:61"},"nodeType":"YulExpressionStatement","src":"622:12:61"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulFunctionDefinition","src":"523:117:61"},{"body":{"nodeType":"YulBlock","src":"735:28:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"752:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"755:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"745:6:61"},"nodeType":"YulFunctionCall","src":"745:12:61"},"nodeType":"YulExpressionStatement","src":"745:12:61"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulFunctionDefinition","src":"646:117:61"},{"body":{"nodeType":"YulBlock","src":"812:79:61","statements":[{"body":{"nodeType":"YulBlock","src":"869:16:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"878:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"881:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"871:6:61"},"nodeType":"YulFunctionCall","src":"871:12:61"},"nodeType":"YulExpressionStatement","src":"871:12:61"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"835:5:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"860:5:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"842:17:61"},"nodeType":"YulFunctionCall","src":"842:24:61"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"832:2:61"},"nodeType":"YulFunctionCall","src":"832:35:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"825:6:61"},"nodeType":"YulFunctionCall","src":"825:43:61"},"nodeType":"YulIf","src":"822:63:61"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"805:5:61","type":""}],"src":"769:122:61"},{"body":{"nodeType":"YulBlock","src":"949:87:61","statements":[{"nodeType":"YulAssignment","src":"959:29:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"981:6:61"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"968:12:61"},"nodeType":"YulFunctionCall","src":"968:20:61"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"959:5:61"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1024:5:61"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"997:26:61"},"nodeType":"YulFunctionCall","src":"997:33:61"},"nodeType":"YulExpressionStatement","src":"997:33:61"}]},"name":"abi_decode_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"927:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"935:3:61","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"943:5:61","type":""}],"src":"897:139:61"},{"body":{"nodeType":"YulBlock","src":"1108:263:61","statements":[{"body":{"nodeType":"YulBlock","src":"1154:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"1156:77:61"},"nodeType":"YulFunctionCall","src":"1156:79:61"},"nodeType":"YulExpressionStatement","src":"1156:79:61"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1129:7:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"1138:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1125:3:61"},"nodeType":"YulFunctionCall","src":"1125:23:61"},{"kind":"number","nodeType":"YulLiteral","src":"1150:2:61","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1121:3:61"},"nodeType":"YulFunctionCall","src":"1121:32:61"},"nodeType":"YulIf","src":"1118:119:61"},{"nodeType":"YulBlock","src":"1247:117:61","statements":[{"nodeType":"YulVariableDeclaration","src":"1262:15:61","value":{"kind":"number","nodeType":"YulLiteral","src":"1276:1:61","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1266:6:61","type":""}]},{"nodeType":"YulAssignment","src":"1291:63:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1326:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"1337:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1322:3:61"},"nodeType":"YulFunctionCall","src":"1322:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1346:7:61"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"1301:20:61"},"nodeType":"YulFunctionCall","src":"1301:53:61"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1291:6:61"}]}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1078:9:61","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1089:7:61","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1101:6:61","type":""}],"src":"1042:329:61"}]},"contents":"{\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n}\n","id":61,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061004c5760003560e01c80632096525514610051578063552410771461006f578063ae9aad3e1461008b578063fbf5c5aa14610095575b600080fd5b61005961009f565b604051610066919061012a565b60405180910390f35b61008960048036038101906100849190610176565b6100ae565b005b6100936100ba565b005b61009d6100bc565b005b60006100a96100be565b905090565b6100b7816100d1565b50565b565b565b60006100c86100e4565b60000154905090565b806100da6100e4565b6000018190555050565b6000807f7375a7f63427bb424f9e0a1d030dd6a96a0933c56047b4d71ac9da62a0b0ce2990508091505090565b6000819050919050565b61012481610111565b82525050565b600060208201905061013f600083018461011b565b92915050565b600080fd5b61015381610111565b811461015e57600080fd5b50565b6000813590506101708161014a565b92915050565b60006020828403121561018c5761018b610145565b5b600061019a84828501610161565b9150509291505056fea26469706673582212205d355169b04faf01c476a85549834aac956d30a67401472e435005078c03353d64736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x20965255 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x55241077 EQ PUSH2 0x6F JUMPI DUP1 PUSH4 0xAE9AAD3E EQ PUSH2 0x8B JUMPI DUP1 PUSH4 0xFBF5C5AA EQ PUSH2 0x95 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x59 PUSH2 0x9F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x66 SWAP2 SWAP1 PUSH2 0x12A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x89 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x84 SWAP2 SWAP1 PUSH2 0x176 JUMP JUMPDEST PUSH2 0xAE JUMP JUMPDEST STOP JUMPDEST PUSH2 0x93 PUSH2 0xBA JUMP JUMPDEST STOP JUMPDEST PUSH2 0x9D PUSH2 0xBC JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH2 0xA9 PUSH2 0xBE JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0xB7 DUP2 PUSH2 0xD1 JUMP JUMPDEST POP JUMP JUMPDEST JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC8 PUSH2 0xE4 JUMP JUMPDEST PUSH1 0x0 ADD SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST DUP1 PUSH2 0xDA PUSH2 0xE4 JUMP JUMPDEST PUSH1 0x0 ADD DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x7375A7F63427BB424F9E0A1D030DD6A96A0933C56047B4D71AC9DA62A0B0CE29 SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x124 DUP2 PUSH2 0x111 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x13F PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x11B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x153 DUP2 PUSH2 0x111 JUMP JUMPDEST DUP2 EQ PUSH2 0x15E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x170 DUP2 PUSH2 0x14A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x18C JUMPI PUSH2 0x18B PUSH2 0x145 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x19A DUP5 DUP3 DUP6 ADD PUSH2 0x161 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x5D CALLDATALOAD MLOAD PUSH10 0xB04FAF01C476A8554983 0x4A 0xAC SWAP6 PUSH14 0x30A67401472E435005078C03353D PUSH5 0x736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"97:300:59:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;296:99;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;201:89;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;123:33;;;:::i;:::-;;162;;;:::i;:::-;;296:99;339:7;365:23;:21;:23::i;:::-;358:30;;296:99;:::o;201:89::-;254:29;276:6;254:21;:29::i;:::-;201:89;:::o;123:33::-;:::o;162:::-;:::o;497:101:53:-;545:7;571:14;:12;:14::i;:::-;:20;;;564:27;;497:101;:::o;397:94::-;478:6;455:14;:12;:14::i;:::-;:20;;:29;;;;397:94;:::o;204:187::-;251:21;284:16;119:23;284:40;;367:8;357:18;;343:42;204:187;:::o;7:77:61:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;523:117::-;632:1;629;622:12;769:122;842:24;860:5;842:24;:::i;:::-;835:5;832:35;822:63;;881:1;878;871:12;822:63;769:122;:::o;897:139::-;943:5;981:6;968:20;959:29;;997:33;1024:5;997:33;:::i;:::-;897:139;;;;:::o;1042:329::-;1101:6;1150:2;1138:9;1129:7;1125:23;1121:32;1118:119;;;1156:79;;:::i;:::-;1118:119;1276:1;1301:53;1346:7;1337:6;1326:9;1322:22;1301:53;:::i;:::-;1291:63;;1247:117;1042:329;;;;:::o"},"methodIdentifiers":{"getValue()":"20965255","setValue(uint256)":"55241077","test5Func1()":"ae9aad3e","test5Func2()":"fbf5c5aa"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"setValue\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test5Func1\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"test5Func2\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/tests/Test5Facet.sol\":\"Test5Facet\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/tests/LibTest.sol\":{\"keccak256\":\"0x0328582563b0198648d09405a9a77916efbd0e304286e8aa054ebbf9fb5f9810\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d097bc13a53635c009f3f4f297fe810efd7701b703f1c5a10db34b94ef287b0\",\"dweb:/ipfs/QmX2RUbg8A4WZBWCLE2o5jpR9vyMSEEhST3c3pEARZMpSG\"]},\"contracts/tests/Test5Facet.sol\":{\"keccak256\":\"0x6661eb6a228a91951a4e3ad5e0e09808bd74274591f013d4747d0f273337c2e2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce95060c806e8d84246008f22549c2e76f3ff614a1ea66f8ff754adb90baa884\",\"dweb:/ipfs/QmVVh5BM4Mxe6HfzPqWXjoVc4JdGNUPmzHn7p73WbDbMvK\"]}},\"version\":1}"}},"contracts/upgrades/DiamondInit.sol":{"DiamondInit":{"abi":[{"inputs":[{"internalType":"address","name":"_autobot","type":"address"},{"internalType":"uint256","name":"_minimumAppGelatoBalance","type":"uint256"},{"internalType":"uint256","name":"_minimumEndDuration","type":"uint256"},{"internalType":"uint256","name":"_minimumLifespan","type":"uint256"},{"internalType":"uint256","name":"_stBufferDurationInSecond","type":"uint256"},{"internalType":"address[]","name":"_superTokens","type":"address[]"}],"name":"init","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50610d38806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80630629b93814610030575b600080fd5b61004a60048036038101906100459190610add565b61004c565b005b60006100566105bd565b905060018160030160007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060018160030160007f1f931c1c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060018160030160007f48e2b093000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060018160030160007ff8b33b26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060018160030160007f410db6b6000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060018160030160007fa60cf313000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060018160030160007fb5879a4b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060018160030160007fed5e69e2000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060018160030160007f5e1208a1000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555061054d876105ea565b610556866107d2565b61055f856107e5565b610568846107f8565b6105718361080b565b60005b82518110156105b3576105a083828151811061059357610592610b86565b5b602002602001015161081e565b80806105ab90610be4565b915050610574565b5050505050505050565b6000807fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90508091505090565b806105f3610882565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663573ea5756040518163ffffffff1660e01b8152600401602060405180830381865afa15801561067f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a39190610c6a565b6106ab610882565b60020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506106f4610882565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e60a32136040518163ffffffff1660e01b8152600401602060405180830381865afa158015610762573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107869190610cd5565b61078e610882565b60010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b806107db610882565b6003018190555050565b806107ee6108af565b6006018190555050565b806108016108af565b6007018190555050565b806108146108af565b6008018190555050565b60016108286108af565b60090160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000807fde06769ca6d80a022439e234eebb61c3801d652175b62f912d6f8cac7b881c6590508091505090565b6000807f2f7ed27098ecefe70183ee38ae4542dee65215b0786f6870871034402cfe2cc990508091505090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061091b826108f0565b9050919050565b61092b81610910565b811461093657600080fd5b50565b60008135905061094881610922565b92915050565b6000819050919050565b6109618161094e565b811461096c57600080fd5b50565b60008135905061097e81610958565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6109d282610989565b810181811067ffffffffffffffff821117156109f1576109f061099a565b5b80604052505050565b6000610a046108dc565b9050610a1082826109c9565b919050565b600067ffffffffffffffff821115610a3057610a2f61099a565b5b602082029050602081019050919050565b600080fd5b6000610a59610a5484610a15565b6109fa565b90508083825260208201905060208402830185811115610a7c57610a7b610a41565b5b835b81811015610aa55780610a918882610939565b845260208401935050602081019050610a7e565b5050509392505050565b600082601f830112610ac457610ac3610984565b5b8135610ad4848260208601610a46565b91505092915050565b60008060008060008060c08789031215610afa57610af96108e6565b5b6000610b0889828a01610939565b9650506020610b1989828a0161096f565b9550506040610b2a89828a0161096f565b9450506060610b3b89828a0161096f565b9350506080610b4c89828a0161096f565b92505060a087013567ffffffffffffffff811115610b6d57610b6c6108eb565b5b610b7989828a01610aaf565b9150509295509295509295565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610bef8261094e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610c2157610c20610bb5565b5b600182019050919050565b6000610c37826108f0565b9050919050565b610c4781610c2c565b8114610c5257600080fd5b50565b600081519050610c6481610c3e565b92915050565b600060208284031215610c8057610c7f6108e6565b5b6000610c8e84828501610c55565b91505092915050565b6000610ca282610910565b9050919050565b610cb281610c97565b8114610cbd57600080fd5b50565b600081519050610ccf81610ca9565b92915050565b600060208284031215610ceb57610cea6108e6565b5b6000610cf984828501610cc0565b9150509291505056fea264697066735822122046cdd1ceed7fc7b39aecccca68597613a4b603fb88bcf675aa209365fe4ad2c864736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD38 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x629B938 EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x45 SWAP2 SWAP1 PUSH2 0xADD JUMP JUMPDEST PUSH2 0x4C JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH2 0x56 PUSH2 0x5BD JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 PUSH1 0x3 ADD PUSH1 0x0 PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x1 DUP2 PUSH1 0x3 ADD PUSH1 0x0 PUSH32 0x1F931C1C00000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x1 DUP2 PUSH1 0x3 ADD PUSH1 0x0 PUSH32 0x48E2B09300000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x1 DUP2 PUSH1 0x3 ADD PUSH1 0x0 PUSH32 0xF8B33B2600000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x1 DUP2 PUSH1 0x3 ADD PUSH1 0x0 PUSH32 0x410DB6B600000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x1 DUP2 PUSH1 0x3 ADD PUSH1 0x0 PUSH32 0xA60CF31300000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x1 DUP2 PUSH1 0x3 ADD PUSH1 0x0 PUSH32 0xB5879A4B00000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x1 DUP2 PUSH1 0x3 ADD PUSH1 0x0 PUSH32 0xED5E69E200000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x1 DUP2 PUSH1 0x3 ADD PUSH1 0x0 PUSH32 0x5E1208A100000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH2 0x54D DUP8 PUSH2 0x5EA JUMP JUMPDEST PUSH2 0x556 DUP7 PUSH2 0x7D2 JUMP JUMPDEST PUSH2 0x55F DUP6 PUSH2 0x7E5 JUMP JUMPDEST PUSH2 0x568 DUP5 PUSH2 0x7F8 JUMP JUMPDEST PUSH2 0x571 DUP4 PUSH2 0x80B JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x5B3 JUMPI PUSH2 0x5A0 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x593 JUMPI PUSH2 0x592 PUSH2 0xB86 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x81E JUMP JUMPDEST DUP1 DUP1 PUSH2 0x5AB SWAP1 PUSH2 0xBE4 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x574 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131C SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x5F3 PUSH2 0x882 JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x573EA575 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x67F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x6A3 SWAP2 SWAP1 PUSH2 0xC6A JUMP JUMPDEST PUSH2 0x6AB PUSH2 0x882 JUMP JUMPDEST PUSH1 0x2 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x6F4 PUSH2 0x882 JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xE60A3213 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x762 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x786 SWAP2 SWAP1 PUSH2 0xCD5 JUMP JUMPDEST PUSH2 0x78E PUSH2 0x882 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST DUP1 PUSH2 0x7DB PUSH2 0x882 JUMP JUMPDEST PUSH1 0x3 ADD DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST DUP1 PUSH2 0x7EE PUSH2 0x8AF JUMP JUMPDEST PUSH1 0x6 ADD DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST DUP1 PUSH2 0x801 PUSH2 0x8AF JUMP JUMPDEST PUSH1 0x7 ADD DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST DUP1 PUSH2 0x814 PUSH2 0x8AF JUMP JUMPDEST PUSH1 0x8 ADD DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x1 PUSH2 0x828 PUSH2 0x8AF JUMP JUMPDEST PUSH1 0x9 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0xDE06769CA6D80A022439E234EEBB61C3801D652175B62F912D6F8CAC7B881C65 SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x2F7ED27098ECEFE70183EE38AE4542DEE65215B0786F6870871034402CFE2CC9 SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x91B DUP3 PUSH2 0x8F0 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x92B DUP2 PUSH2 0x910 JUMP JUMPDEST DUP2 EQ PUSH2 0x936 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x948 DUP2 PUSH2 0x922 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x961 DUP2 PUSH2 0x94E JUMP JUMPDEST DUP2 EQ PUSH2 0x96C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x97E DUP2 PUSH2 0x958 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x9D2 DUP3 PUSH2 0x989 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x9F1 JUMPI PUSH2 0x9F0 PUSH2 0x99A JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA04 PUSH2 0x8DC JUMP JUMPDEST SWAP1 POP PUSH2 0xA10 DUP3 DUP3 PUSH2 0x9C9 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xA30 JUMPI PUSH2 0xA2F PUSH2 0x99A JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA59 PUSH2 0xA54 DUP5 PUSH2 0xA15 JUMP JUMPDEST PUSH2 0x9FA JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0xA7C JUMPI PUSH2 0xA7B PUSH2 0xA41 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xAA5 JUMPI DUP1 PUSH2 0xA91 DUP9 DUP3 PUSH2 0x939 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xA7E JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xAC4 JUMPI PUSH2 0xAC3 PUSH2 0x984 JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0xAD4 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0xA46 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0xAFA JUMPI PUSH2 0xAF9 PUSH2 0x8E6 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xB08 DUP10 DUP3 DUP11 ADD PUSH2 0x939 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x20 PUSH2 0xB19 DUP10 DUP3 DUP11 ADD PUSH2 0x96F JUMP JUMPDEST SWAP6 POP POP PUSH1 0x40 PUSH2 0xB2A DUP10 DUP3 DUP11 ADD PUSH2 0x96F JUMP JUMPDEST SWAP5 POP POP PUSH1 0x60 PUSH2 0xB3B DUP10 DUP3 DUP11 ADD PUSH2 0x96F JUMP JUMPDEST SWAP4 POP POP PUSH1 0x80 PUSH2 0xB4C DUP10 DUP3 DUP11 ADD PUSH2 0x96F JUMP JUMPDEST SWAP3 POP POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xB6D JUMPI PUSH2 0xB6C PUSH2 0x8EB JUMP JUMPDEST JUMPDEST PUSH2 0xB79 DUP10 DUP3 DUP11 ADD PUSH2 0xAAF JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xBEF DUP3 PUSH2 0x94E JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0xC21 JUMPI PUSH2 0xC20 PUSH2 0xBB5 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC37 DUP3 PUSH2 0x8F0 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xC47 DUP2 PUSH2 0xC2C JUMP JUMPDEST DUP2 EQ PUSH2 0xC52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0xC64 DUP2 PUSH2 0xC3E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC80 JUMPI PUSH2 0xC7F PUSH2 0x8E6 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xC8E DUP5 DUP3 DUP6 ADD PUSH2 0xC55 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCA2 DUP3 PUSH2 0x910 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xCB2 DUP2 PUSH2 0xC97 JUMP JUMPDEST DUP2 EQ PUSH2 0xCBD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0xCCF DUP2 PUSH2 0xCA9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xCEB JUMPI PUSH2 0xCEA PUSH2 0x8E6 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xCF9 DUP5 DUP3 DUP6 ADD PUSH2 0xCC0 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CHAINID 0xCD 0xD1 0xCE 0xED PUSH32 0xC7B39AECCCCA68597613A4B603FB88BCF675AA209365FE4AD2C864736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"887:1416:60:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_addSuperToken_12852":{"entryPoint":2078,"id":12852,"parameterSlots":1,"returnSlots":0},"@_setGelatoContracts_12177":{"entryPoint":1514,"id":12177,"parameterSlots":1,"returnSlots":0},"@_setMinimumAppGelatoBalance_12189":{"entryPoint":2002,"id":12189,"parameterSlots":1,"returnSlots":0},"@_setMinimumEndDuration_12814":{"entryPoint":2021,"id":12814,"parameterSlots":1,"returnSlots":0},"@_setMinimumLifespan_12826":{"entryPoint":2040,"id":12826,"parameterSlots":1,"returnSlots":0},"@_setSTBufferAmount_12838":{"entryPoint":2059,"id":12838,"parameterSlots":1,"returnSlots":0},"@_storageAutomate_11951":{"entryPoint":2178,"id":11951,"parameterSlots":0,"returnSlots":1},"@_storageControl_12430":{"entryPoint":2223,"id":12430,"parameterSlots":0,"returnSlots":1},"@_storageDiamond_15535":{"entryPoint":1469,"id":15535,"parameterSlots":0,"returnSlots":1},"@init_16868":{"entryPoint":76,"id":16868,"parameterSlots":6,"returnSlots":0},"abi_decode_available_length_t_array$_t_address_$dyn_memory_ptr":{"entryPoint":2630,"id":null,"parameterSlots":3,"returnSlots":1},"abi_decode_t_address":{"entryPoint":2361,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_address_payable_fromMemory":{"entryPoint":3157,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_array$_t_address_$dyn_memory_ptr":{"entryPoint":2735,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_contract$_ITaskTreasuryUpgradable_$16342_fromMemory":{"entryPoint":3264,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_t_uint256":{"entryPoint":2415,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address_payable_fromMemory":{"entryPoint":3178,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_uint256t_uint256t_uint256t_uint256t_array$_t_address_$dyn_memory_ptr":{"entryPoint":2781,"id":null,"parameterSlots":2,"returnSlots":6},"abi_decode_tuple_t_contract$_ITaskTreasuryUpgradable_$16342_fromMemory":{"entryPoint":3285,"id":null,"parameterSlots":2,"returnSlots":1},"allocate_memory":{"entryPoint":2554,"id":null,"parameterSlots":1,"returnSlots":1},"allocate_unbounded":{"entryPoint":2268,"id":null,"parameterSlots":0,"returnSlots":1},"array_allocation_size_t_array$_t_address_$dyn_memory_ptr":{"entryPoint":2581,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_address":{"entryPoint":2320,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_address_payable":{"entryPoint":3116,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_contract$_ITaskTreasuryUpgradable_$16342":{"entryPoint":3223,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint160":{"entryPoint":2288,"id":null,"parameterSlots":1,"returnSlots":1},"cleanup_t_uint256":{"entryPoint":2382,"id":null,"parameterSlots":1,"returnSlots":1},"finalize_allocation":{"entryPoint":2505,"id":null,"parameterSlots":2,"returnSlots":0},"increment_t_uint256":{"entryPoint":3044,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":2997,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x32":{"entryPoint":2950,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":2458,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d":{"entryPoint":2436,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef":{"entryPoint":2625,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db":{"entryPoint":2283,"id":null,"parameterSlots":0,"returnSlots":0},"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b":{"entryPoint":2278,"id":null,"parameterSlots":0,"returnSlots":0},"round_up_to_mul_of_32":{"entryPoint":2441,"id":null,"parameterSlots":1,"returnSlots":1},"validator_revert_t_address":{"entryPoint":2338,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_address_payable":{"entryPoint":3134,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_contract$_ITaskTreasuryUpgradable_$16342":{"entryPoint":3241,"id":null,"parameterSlots":1,"returnSlots":0},"validator_revert_t_uint256":{"entryPoint":2392,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:7242:61","statements":[{"body":{"nodeType":"YulBlock","src":"47:35:61","statements":[{"nodeType":"YulAssignment","src":"57:19:61","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"73:2:61","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"67:5:61"},"nodeType":"YulFunctionCall","src":"67:9:61"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"57:6:61"}]}]},"name":"allocate_unbounded","nodeType":"YulFunctionDefinition","returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"40:6:61","type":""}],"src":"7:75:61"},{"body":{"nodeType":"YulBlock","src":"177:28:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"194:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"197:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"187:6:61"},"nodeType":"YulFunctionCall","src":"187:12:61"},"nodeType":"YulExpressionStatement","src":"187:12:61"}]},"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulFunctionDefinition","src":"88:117:61"},{"body":{"nodeType":"YulBlock","src":"300:28:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"317:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"320:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"310:6:61"},"nodeType":"YulFunctionCall","src":"310:12:61"},"nodeType":"YulExpressionStatement","src":"310:12:61"}]},"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulFunctionDefinition","src":"211:117:61"},{"body":{"nodeType":"YulBlock","src":"379:81:61","statements":[{"nodeType":"YulAssignment","src":"389:65:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"404:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"411:42:61","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"400:3:61"},"nodeType":"YulFunctionCall","src":"400:54:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"389:7:61"}]}]},"name":"cleanup_t_uint160","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"361:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"371:7:61","type":""}],"src":"334:126:61"},{"body":{"nodeType":"YulBlock","src":"511:51:61","statements":[{"nodeType":"YulAssignment","src":"521:35:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"550:5:61"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"532:17:61"},"nodeType":"YulFunctionCall","src":"532:24:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"521:7:61"}]}]},"name":"cleanup_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"493:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"503:7:61","type":""}],"src":"466:96:61"},{"body":{"nodeType":"YulBlock","src":"611:79:61","statements":[{"body":{"nodeType":"YulBlock","src":"668:16:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"677:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"680:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"670:6:61"},"nodeType":"YulFunctionCall","src":"670:12:61"},"nodeType":"YulExpressionStatement","src":"670:12:61"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"634:5:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"659:5:61"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"641:17:61"},"nodeType":"YulFunctionCall","src":"641:24:61"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"631:2:61"},"nodeType":"YulFunctionCall","src":"631:35:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"624:6:61"},"nodeType":"YulFunctionCall","src":"624:43:61"},"nodeType":"YulIf","src":"621:63:61"}]},"name":"validator_revert_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"604:5:61","type":""}],"src":"568:122:61"},{"body":{"nodeType":"YulBlock","src":"748:87:61","statements":[{"nodeType":"YulAssignment","src":"758:29:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"780:6:61"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"767:12:61"},"nodeType":"YulFunctionCall","src":"767:20:61"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"758:5:61"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"823:5:61"}],"functionName":{"name":"validator_revert_t_address","nodeType":"YulIdentifier","src":"796:26:61"},"nodeType":"YulFunctionCall","src":"796:33:61"},"nodeType":"YulExpressionStatement","src":"796:33:61"}]},"name":"abi_decode_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"726:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"734:3:61","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"742:5:61","type":""}],"src":"696:139:61"},{"body":{"nodeType":"YulBlock","src":"886:32:61","statements":[{"nodeType":"YulAssignment","src":"896:16:61","value":{"name":"value","nodeType":"YulIdentifier","src":"907:5:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"896:7:61"}]}]},"name":"cleanup_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"868:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"878:7:61","type":""}],"src":"841:77:61"},{"body":{"nodeType":"YulBlock","src":"967:79:61","statements":[{"body":{"nodeType":"YulBlock","src":"1024:16:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1033:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1036:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1026:6:61"},"nodeType":"YulFunctionCall","src":"1026:12:61"},"nodeType":"YulExpressionStatement","src":"1026:12:61"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"990:5:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1015:5:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"997:17:61"},"nodeType":"YulFunctionCall","src":"997:24:61"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"987:2:61"},"nodeType":"YulFunctionCall","src":"987:35:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"980:6:61"},"nodeType":"YulFunctionCall","src":"980:43:61"},"nodeType":"YulIf","src":"977:63:61"}]},"name":"validator_revert_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"960:5:61","type":""}],"src":"924:122:61"},{"body":{"nodeType":"YulBlock","src":"1104:87:61","statements":[{"nodeType":"YulAssignment","src":"1114:29:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1136:6:61"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1123:12:61"},"nodeType":"YulFunctionCall","src":"1123:20:61"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1114:5:61"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1179:5:61"}],"functionName":{"name":"validator_revert_t_uint256","nodeType":"YulIdentifier","src":"1152:26:61"},"nodeType":"YulFunctionCall","src":"1152:33:61"},"nodeType":"YulExpressionStatement","src":"1152:33:61"}]},"name":"abi_decode_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1082:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"1090:3:61","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1098:5:61","type":""}],"src":"1052:139:61"},{"body":{"nodeType":"YulBlock","src":"1286:28:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1303:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1306:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1296:6:61"},"nodeType":"YulFunctionCall","src":"1296:12:61"},"nodeType":"YulExpressionStatement","src":"1296:12:61"}]},"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulFunctionDefinition","src":"1197:117:61"},{"body":{"nodeType":"YulBlock","src":"1368:54:61","statements":[{"nodeType":"YulAssignment","src":"1378:38:61","value":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1396:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"1403:2:61","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1392:3:61"},"nodeType":"YulFunctionCall","src":"1392:14:61"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1412:2:61","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"1408:3:61"},"nodeType":"YulFunctionCall","src":"1408:7:61"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1388:3:61"},"nodeType":"YulFunctionCall","src":"1388:28:61"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"1378:6:61"}]}]},"name":"round_up_to_mul_of_32","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1351:5:61","type":""}],"returnVariables":[{"name":"result","nodeType":"YulTypedName","src":"1361:6:61","type":""}],"src":"1320:102:61"},{"body":{"nodeType":"YulBlock","src":"1456:152:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1473:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1476:77:61","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1466:6:61"},"nodeType":"YulFunctionCall","src":"1466:88:61"},"nodeType":"YulExpressionStatement","src":"1466:88:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1570:1:61","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1573:4:61","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1563:6:61"},"nodeType":"YulFunctionCall","src":"1563:15:61"},"nodeType":"YulExpressionStatement","src":"1563:15:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1594:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1597:4:61","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1587:6:61"},"nodeType":"YulFunctionCall","src":"1587:15:61"},"nodeType":"YulExpressionStatement","src":"1587:15:61"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"1428:180:61"},{"body":{"nodeType":"YulBlock","src":"1657:238:61","statements":[{"nodeType":"YulVariableDeclaration","src":"1667:58:61","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1689:6:61"},{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"1719:4:61"}],"functionName":{"name":"round_up_to_mul_of_32","nodeType":"YulIdentifier","src":"1697:21:61"},"nodeType":"YulFunctionCall","src":"1697:27:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1685:3:61"},"nodeType":"YulFunctionCall","src":"1685:40:61"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"1671:10:61","type":""}]},{"body":{"nodeType":"YulBlock","src":"1836:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"1838:16:61"},"nodeType":"YulFunctionCall","src":"1838:18:61"},"nodeType":"YulExpressionStatement","src":"1838:18:61"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1779:10:61"},{"kind":"number","nodeType":"YulLiteral","src":"1791:18:61","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1776:2:61"},"nodeType":"YulFunctionCall","src":"1776:34:61"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1815:10:61"},{"name":"memPtr","nodeType":"YulIdentifier","src":"1827:6:61"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1812:2:61"},"nodeType":"YulFunctionCall","src":"1812:22:61"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"1773:2:61"},"nodeType":"YulFunctionCall","src":"1773:62:61"},"nodeType":"YulIf","src":"1770:88:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1874:2:61","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"1878:10:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1867:6:61"},"nodeType":"YulFunctionCall","src":"1867:22:61"},"nodeType":"YulExpressionStatement","src":"1867:22:61"}]},"name":"finalize_allocation","nodeType":"YulFunctionDefinition","parameters":[{"name":"memPtr","nodeType":"YulTypedName","src":"1643:6:61","type":""},{"name":"size","nodeType":"YulTypedName","src":"1651:4:61","type":""}],"src":"1614:281:61"},{"body":{"nodeType":"YulBlock","src":"1942:88:61","statements":[{"nodeType":"YulAssignment","src":"1952:30:61","value":{"arguments":[],"functionName":{"name":"allocate_unbounded","nodeType":"YulIdentifier","src":"1962:18:61"},"nodeType":"YulFunctionCall","src":"1962:20:61"},"variableNames":[{"name":"memPtr","nodeType":"YulIdentifier","src":"1952:6:61"}]},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"2011:6:61"},{"name":"size","nodeType":"YulIdentifier","src":"2019:4:61"}],"functionName":{"name":"finalize_allocation","nodeType":"YulIdentifier","src":"1991:19:61"},"nodeType":"YulFunctionCall","src":"1991:33:61"},"nodeType":"YulExpressionStatement","src":"1991:33:61"}]},"name":"allocate_memory","nodeType":"YulFunctionDefinition","parameters":[{"name":"size","nodeType":"YulTypedName","src":"1926:4:61","type":""}],"returnVariables":[{"name":"memPtr","nodeType":"YulTypedName","src":"1935:6:61","type":""}],"src":"1901:129:61"},{"body":{"nodeType":"YulBlock","src":"2118:229:61","statements":[{"body":{"nodeType":"YulBlock","src":"2223:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2225:16:61"},"nodeType":"YulFunctionCall","src":"2225:18:61"},"nodeType":"YulExpressionStatement","src":"2225:18:61"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2195:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"2203:18:61","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2192:2:61"},"nodeType":"YulFunctionCall","src":"2192:30:61"},"nodeType":"YulIf","src":"2189:56:61"},{"nodeType":"YulAssignment","src":"2255:25:61","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2267:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"2275:4:61","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"2263:3:61"},"nodeType":"YulFunctionCall","src":"2263:17:61"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"2255:4:61"}]},{"nodeType":"YulAssignment","src":"2317:23:61","value":{"arguments":[{"name":"size","nodeType":"YulIdentifier","src":"2329:4:61"},{"kind":"number","nodeType":"YulLiteral","src":"2335:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2325:3:61"},"nodeType":"YulFunctionCall","src":"2325:15:61"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"2317:4:61"}]}]},"name":"array_allocation_size_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"length","nodeType":"YulTypedName","src":"2102:6:61","type":""}],"returnVariables":[{"name":"size","nodeType":"YulTypedName","src":"2113:4:61","type":""}],"src":"2036:311:61"},{"body":{"nodeType":"YulBlock","src":"2442:28:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2459:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2462:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2452:6:61"},"nodeType":"YulFunctionCall","src":"2452:12:61"},"nodeType":"YulExpressionStatement","src":"2452:12:61"}]},"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nodeType":"YulFunctionDefinition","src":"2353:117:61"},{"body":{"nodeType":"YulBlock","src":"2595:608:61","statements":[{"nodeType":"YulAssignment","src":"2605:90:61","value":{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2687:6:61"}],"functionName":{"name":"array_allocation_size_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"2630:56:61"},"nodeType":"YulFunctionCall","src":"2630:64:61"}],"functionName":{"name":"allocate_memory","nodeType":"YulIdentifier","src":"2614:15:61"},"nodeType":"YulFunctionCall","src":"2614:81:61"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"2605:5:61"}]},{"nodeType":"YulVariableDeclaration","src":"2704:16:61","value":{"name":"array","nodeType":"YulIdentifier","src":"2715:5:61"},"variables":[{"name":"dst","nodeType":"YulTypedName","src":"2708:3:61","type":""}]},{"expression":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"2737:5:61"},{"name":"length","nodeType":"YulIdentifier","src":"2744:6:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2730:6:61"},"nodeType":"YulFunctionCall","src":"2730:21:61"},"nodeType":"YulExpressionStatement","src":"2730:21:61"},{"nodeType":"YulAssignment","src":"2760:23:61","value":{"arguments":[{"name":"array","nodeType":"YulIdentifier","src":"2771:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"2778:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2767:3:61"},"nodeType":"YulFunctionCall","src":"2767:16:61"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"2760:3:61"}]},{"nodeType":"YulVariableDeclaration","src":"2793:44:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"2811:6:61"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"2823:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"2831:4:61","type":"","value":"0x20"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"2819:3:61"},"nodeType":"YulFunctionCall","src":"2819:17:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2807:3:61"},"nodeType":"YulFunctionCall","src":"2807:30:61"},"variables":[{"name":"srcEnd","nodeType":"YulTypedName","src":"2797:6:61","type":""}]},{"body":{"nodeType":"YulBlock","src":"2865:103:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef","nodeType":"YulIdentifier","src":"2879:77:61"},"nodeType":"YulFunctionCall","src":"2879:79:61"},"nodeType":"YulExpressionStatement","src":"2879:79:61"}]},"condition":{"arguments":[{"name":"srcEnd","nodeType":"YulIdentifier","src":"2852:6:61"},{"name":"end","nodeType":"YulIdentifier","src":"2860:3:61"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2849:2:61"},"nodeType":"YulFunctionCall","src":"2849:15:61"},"nodeType":"YulIf","src":"2846:122:61"},{"body":{"nodeType":"YulBlock","src":"3053:144:61","statements":[{"nodeType":"YulVariableDeclaration","src":"3068:21:61","value":{"name":"src","nodeType":"YulIdentifier","src":"3086:3:61"},"variables":[{"name":"elementPos","nodeType":"YulTypedName","src":"3072:10:61","type":""}]},{"expression":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"3110:3:61"},{"arguments":[{"name":"elementPos","nodeType":"YulIdentifier","src":"3136:10:61"},{"name":"end","nodeType":"YulIdentifier","src":"3148:3:61"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"3115:20:61"},"nodeType":"YulFunctionCall","src":"3115:37:61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3103:6:61"},"nodeType":"YulFunctionCall","src":"3103:50:61"},"nodeType":"YulExpressionStatement","src":"3103:50:61"},{"nodeType":"YulAssignment","src":"3166:21:61","value":{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"3177:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"3182:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3173:3:61"},"nodeType":"YulFunctionCall","src":"3173:14:61"},"variableNames":[{"name":"dst","nodeType":"YulIdentifier","src":"3166:3:61"}]}]},"condition":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3006:3:61"},{"name":"srcEnd","nodeType":"YulIdentifier","src":"3011:6:61"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3003:2:61"},"nodeType":"YulFunctionCall","src":"3003:15:61"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3019:25:61","statements":[{"nodeType":"YulAssignment","src":"3021:21:61","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3032:3:61"},{"kind":"number","nodeType":"YulLiteral","src":"3037:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3028:3:61"},"nodeType":"YulFunctionCall","src":"3028:14:61"},"variableNames":[{"name":"src","nodeType":"YulIdentifier","src":"3021:3:61"}]}]},"pre":{"nodeType":"YulBlock","src":"2981:21:61","statements":[{"nodeType":"YulVariableDeclaration","src":"2983:17:61","value":{"name":"offset","nodeType":"YulIdentifier","src":"2994:6:61"},"variables":[{"name":"src","nodeType":"YulTypedName","src":"2987:3:61","type":""}]}]},"src":"2977:220:61"}]},"name":"abi_decode_available_length_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"2565:6:61","type":""},{"name":"length","nodeType":"YulTypedName","src":"2573:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"2581:3:61","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"2589:5:61","type":""}],"src":"2493:710:61"},{"body":{"nodeType":"YulBlock","src":"3303:293:61","statements":[{"body":{"nodeType":"YulBlock","src":"3352:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d","nodeType":"YulIdentifier","src":"3354:77:61"},"nodeType":"YulFunctionCall","src":"3354:79:61"},"nodeType":"YulExpressionStatement","src":"3354:79:61"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3331:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"3339:4:61","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3327:3:61"},"nodeType":"YulFunctionCall","src":"3327:17:61"},{"name":"end","nodeType":"YulIdentifier","src":"3346:3:61"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3323:3:61"},"nodeType":"YulFunctionCall","src":"3323:27:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3316:6:61"},"nodeType":"YulFunctionCall","src":"3316:35:61"},"nodeType":"YulIf","src":"3313:122:61"},{"nodeType":"YulVariableDeclaration","src":"3444:34:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3471:6:61"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3458:12:61"},"nodeType":"YulFunctionCall","src":"3458:20:61"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"3448:6:61","type":""}]},{"nodeType":"YulAssignment","src":"3487:103:61","value":{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"3563:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"3571:4:61","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3559:3:61"},"nodeType":"YulFunctionCall","src":"3559:17:61"},{"name":"length","nodeType":"YulIdentifier","src":"3578:6:61"},{"name":"end","nodeType":"YulIdentifier","src":"3586:3:61"}],"functionName":{"name":"abi_decode_available_length_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"3496:62:61"},"nodeType":"YulFunctionCall","src":"3496:94:61"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"3487:5:61"}]}]},"name":"abi_decode_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"3281:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"3289:3:61","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"3297:5:61","type":""}],"src":"3226:370:61"},{"body":{"nodeType":"YulBlock","src":"3778:1091:61","statements":[{"body":{"nodeType":"YulBlock","src":"3825:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"3827:77:61"},"nodeType":"YulFunctionCall","src":"3827:79:61"},"nodeType":"YulExpressionStatement","src":"3827:79:61"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3799:7:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"3808:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3795:3:61"},"nodeType":"YulFunctionCall","src":"3795:23:61"},{"kind":"number","nodeType":"YulLiteral","src":"3820:3:61","type":"","value":"192"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3791:3:61"},"nodeType":"YulFunctionCall","src":"3791:33:61"},"nodeType":"YulIf","src":"3788:120:61"},{"nodeType":"YulBlock","src":"3918:117:61","statements":[{"nodeType":"YulVariableDeclaration","src":"3933:15:61","value":{"kind":"number","nodeType":"YulLiteral","src":"3947:1:61","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3937:6:61","type":""}]},{"nodeType":"YulAssignment","src":"3962:63:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3997:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"4008:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3993:3:61"},"nodeType":"YulFunctionCall","src":"3993:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4017:7:61"}],"functionName":{"name":"abi_decode_t_address","nodeType":"YulIdentifier","src":"3972:20:61"},"nodeType":"YulFunctionCall","src":"3972:53:61"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3962:6:61"}]}]},{"nodeType":"YulBlock","src":"4045:118:61","statements":[{"nodeType":"YulVariableDeclaration","src":"4060:16:61","value":{"kind":"number","nodeType":"YulLiteral","src":"4074:2:61","type":"","value":"32"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4064:6:61","type":""}]},{"nodeType":"YulAssignment","src":"4090:63:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4125:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"4136:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4121:3:61"},"nodeType":"YulFunctionCall","src":"4121:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4145:7:61"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"4100:20:61"},"nodeType":"YulFunctionCall","src":"4100:53:61"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4090:6:61"}]}]},{"nodeType":"YulBlock","src":"4173:118:61","statements":[{"nodeType":"YulVariableDeclaration","src":"4188:16:61","value":{"kind":"number","nodeType":"YulLiteral","src":"4202:2:61","type":"","value":"64"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4192:6:61","type":""}]},{"nodeType":"YulAssignment","src":"4218:63:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4253:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"4264:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4249:3:61"},"nodeType":"YulFunctionCall","src":"4249:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4273:7:61"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"4228:20:61"},"nodeType":"YulFunctionCall","src":"4228:53:61"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"4218:6:61"}]}]},{"nodeType":"YulBlock","src":"4301:118:61","statements":[{"nodeType":"YulVariableDeclaration","src":"4316:16:61","value":{"kind":"number","nodeType":"YulLiteral","src":"4330:2:61","type":"","value":"96"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4320:6:61","type":""}]},{"nodeType":"YulAssignment","src":"4346:63:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4381:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"4392:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4377:3:61"},"nodeType":"YulFunctionCall","src":"4377:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4401:7:61"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"4356:20:61"},"nodeType":"YulFunctionCall","src":"4356:53:61"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"4346:6:61"}]}]},{"nodeType":"YulBlock","src":"4429:119:61","statements":[{"nodeType":"YulVariableDeclaration","src":"4444:17:61","value":{"kind":"number","nodeType":"YulLiteral","src":"4458:3:61","type":"","value":"128"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4448:6:61","type":""}]},{"nodeType":"YulAssignment","src":"4475:63:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4510:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"4521:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4506:3:61"},"nodeType":"YulFunctionCall","src":"4506:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4530:7:61"}],"functionName":{"name":"abi_decode_t_uint256","nodeType":"YulIdentifier","src":"4485:20:61"},"nodeType":"YulFunctionCall","src":"4485:53:61"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"4475:6:61"}]}]},{"nodeType":"YulBlock","src":"4558:304:61","statements":[{"nodeType":"YulVariableDeclaration","src":"4573:47:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4604:9:61"},{"kind":"number","nodeType":"YulLiteral","src":"4615:3:61","type":"","value":"160"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4600:3:61"},"nodeType":"YulFunctionCall","src":"4600:19:61"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4587:12:61"},"nodeType":"YulFunctionCall","src":"4587:33:61"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"4577:6:61","type":""}]},{"body":{"nodeType":"YulBlock","src":"4667:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db","nodeType":"YulIdentifier","src":"4669:77:61"},"nodeType":"YulFunctionCall","src":"4669:79:61"},"nodeType":"YulExpressionStatement","src":"4669:79:61"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4639:6:61"},{"kind":"number","nodeType":"YulLiteral","src":"4647:18:61","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4636:2:61"},"nodeType":"YulFunctionCall","src":"4636:30:61"},"nodeType":"YulIf","src":"4633:117:61"},{"nodeType":"YulAssignment","src":"4764:88:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4824:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"4835:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4820:3:61"},"nodeType":"YulFunctionCall","src":"4820:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4844:7:61"}],"functionName":{"name":"abi_decode_t_array$_t_address_$dyn_memory_ptr","nodeType":"YulIdentifier","src":"4774:45:61"},"nodeType":"YulFunctionCall","src":"4774:78:61"},"variableNames":[{"name":"value5","nodeType":"YulIdentifier","src":"4764:6:61"}]}]}]},"name":"abi_decode_tuple_t_addresst_uint256t_uint256t_uint256t_uint256t_array$_t_address_$dyn_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3708:9:61","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3719:7:61","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3731:6:61","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3739:6:61","type":""},{"name":"value2","nodeType":"YulTypedName","src":"3747:6:61","type":""},{"name":"value3","nodeType":"YulTypedName","src":"3755:6:61","type":""},{"name":"value4","nodeType":"YulTypedName","src":"3763:6:61","type":""},{"name":"value5","nodeType":"YulTypedName","src":"3771:6:61","type":""}],"src":"3602:1267:61"},{"body":{"nodeType":"YulBlock","src":"4903:152:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4920:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4923:77:61","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4913:6:61"},"nodeType":"YulFunctionCall","src":"4913:88:61"},"nodeType":"YulExpressionStatement","src":"4913:88:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5017:1:61","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"5020:4:61","type":"","value":"0x32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5010:6:61"},"nodeType":"YulFunctionCall","src":"5010:15:61"},"nodeType":"YulExpressionStatement","src":"5010:15:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5041:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5044:4:61","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5034:6:61"},"nodeType":"YulFunctionCall","src":"5034:15:61"},"nodeType":"YulExpressionStatement","src":"5034:15:61"}]},"name":"panic_error_0x32","nodeType":"YulFunctionDefinition","src":"4875:180:61"},{"body":{"nodeType":"YulBlock","src":"5089:152:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5106:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5109:77:61","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5099:6:61"},"nodeType":"YulFunctionCall","src":"5099:88:61"},"nodeType":"YulExpressionStatement","src":"5099:88:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5203:1:61","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"5206:4:61","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5196:6:61"},"nodeType":"YulFunctionCall","src":"5196:15:61"},"nodeType":"YulExpressionStatement","src":"5196:15:61"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5227:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5230:4:61","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5220:6:61"},"nodeType":"YulFunctionCall","src":"5220:15:61"},"nodeType":"YulExpressionStatement","src":"5220:15:61"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"5061:180:61"},{"body":{"nodeType":"YulBlock","src":"5290:190:61","statements":[{"nodeType":"YulAssignment","src":"5300:33:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5327:5:61"}],"functionName":{"name":"cleanup_t_uint256","nodeType":"YulIdentifier","src":"5309:17:61"},"nodeType":"YulFunctionCall","src":"5309:24:61"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"5300:5:61"}]},{"body":{"nodeType":"YulBlock","src":"5423:22:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"5425:16:61"},"nodeType":"YulFunctionCall","src":"5425:18:61"},"nodeType":"YulExpressionStatement","src":"5425:18:61"}]},"condition":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5348:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"5355:66:61","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"5345:2:61"},"nodeType":"YulFunctionCall","src":"5345:77:61"},"nodeType":"YulIf","src":"5342:103:61"},{"nodeType":"YulAssignment","src":"5454:20:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5465:5:61"},{"kind":"number","nodeType":"YulLiteral","src":"5472:1:61","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5461:3:61"},"nodeType":"YulFunctionCall","src":"5461:13:61"},"variableNames":[{"name":"ret","nodeType":"YulIdentifier","src":"5454:3:61"}]}]},"name":"increment_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5276:5:61","type":""}],"returnVariables":[{"name":"ret","nodeType":"YulTypedName","src":"5286:3:61","type":""}],"src":"5247:233:61"},{"body":{"nodeType":"YulBlock","src":"5539:51:61","statements":[{"nodeType":"YulAssignment","src":"5549:35:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5578:5:61"}],"functionName":{"name":"cleanup_t_uint160","nodeType":"YulIdentifier","src":"5560:17:61"},"nodeType":"YulFunctionCall","src":"5560:24:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"5549:7:61"}]}]},"name":"cleanup_t_address_payable","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5521:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"5531:7:61","type":""}],"src":"5486:104:61"},{"body":{"nodeType":"YulBlock","src":"5647:87:61","statements":[{"body":{"nodeType":"YulBlock","src":"5712:16:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5721:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5724:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5714:6:61"},"nodeType":"YulFunctionCall","src":"5714:12:61"},"nodeType":"YulExpressionStatement","src":"5714:12:61"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5670:5:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5703:5:61"}],"functionName":{"name":"cleanup_t_address_payable","nodeType":"YulIdentifier","src":"5677:25:61"},"nodeType":"YulFunctionCall","src":"5677:32:61"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"5667:2:61"},"nodeType":"YulFunctionCall","src":"5667:43:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5660:6:61"},"nodeType":"YulFunctionCall","src":"5660:51:61"},"nodeType":"YulIf","src":"5657:71:61"}]},"name":"validator_revert_t_address_payable","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"5640:5:61","type":""}],"src":"5596:138:61"},{"body":{"nodeType":"YulBlock","src":"5811:88:61","statements":[{"nodeType":"YulAssignment","src":"5821:22:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"5836:6:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5830:5:61"},"nodeType":"YulFunctionCall","src":"5830:13:61"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"5821:5:61"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5887:5:61"}],"functionName":{"name":"validator_revert_t_address_payable","nodeType":"YulIdentifier","src":"5852:34:61"},"nodeType":"YulFunctionCall","src":"5852:41:61"},"nodeType":"YulExpressionStatement","src":"5852:41:61"}]},"name":"abi_decode_t_address_payable_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"5789:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"5797:3:61","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"5805:5:61","type":""}],"src":"5740:159:61"},{"body":{"nodeType":"YulBlock","src":"5990:282:61","statements":[{"body":{"nodeType":"YulBlock","src":"6036:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"6038:77:61"},"nodeType":"YulFunctionCall","src":"6038:79:61"},"nodeType":"YulExpressionStatement","src":"6038:79:61"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6011:7:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"6020:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6007:3:61"},"nodeType":"YulFunctionCall","src":"6007:23:61"},{"kind":"number","nodeType":"YulLiteral","src":"6032:2:61","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6003:3:61"},"nodeType":"YulFunctionCall","src":"6003:32:61"},"nodeType":"YulIf","src":"6000:119:61"},{"nodeType":"YulBlock","src":"6129:136:61","statements":[{"nodeType":"YulVariableDeclaration","src":"6144:15:61","value":{"kind":"number","nodeType":"YulLiteral","src":"6158:1:61","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"6148:6:61","type":""}]},{"nodeType":"YulAssignment","src":"6173:82:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6227:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"6238:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6223:3:61"},"nodeType":"YulFunctionCall","src":"6223:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"6247:7:61"}],"functionName":{"name":"abi_decode_t_address_payable_fromMemory","nodeType":"YulIdentifier","src":"6183:39:61"},"nodeType":"YulFunctionCall","src":"6183:72:61"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"6173:6:61"}]}]}]},"name":"abi_decode_tuple_t_address_payable_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5960:9:61","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5971:7:61","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5983:6:61","type":""}],"src":"5905:367:61"},{"body":{"nodeType":"YulBlock","src":"6356:51:61","statements":[{"nodeType":"YulAssignment","src":"6366:35:61","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6395:5:61"}],"functionName":{"name":"cleanup_t_address","nodeType":"YulIdentifier","src":"6377:17:61"},"nodeType":"YulFunctionCall","src":"6377:24:61"},"variableNames":[{"name":"cleaned","nodeType":"YulIdentifier","src":"6366:7:61"}]}]},"name":"cleanup_t_contract$_ITaskTreasuryUpgradable_$16342","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6338:5:61","type":""}],"returnVariables":[{"name":"cleaned","nodeType":"YulTypedName","src":"6348:7:61","type":""}],"src":"6278:129:61"},{"body":{"nodeType":"YulBlock","src":"6489:112:61","statements":[{"body":{"nodeType":"YulBlock","src":"6579:16:61","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6588:1:61","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"6591:1:61","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"6581:6:61"},"nodeType":"YulFunctionCall","src":"6581:12:61"},"nodeType":"YulExpressionStatement","src":"6581:12:61"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6512:5:61"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6570:5:61"}],"functionName":{"name":"cleanup_t_contract$_ITaskTreasuryUpgradable_$16342","nodeType":"YulIdentifier","src":"6519:50:61"},"nodeType":"YulFunctionCall","src":"6519:57:61"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"6509:2:61"},"nodeType":"YulFunctionCall","src":"6509:68:61"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"6502:6:61"},"nodeType":"YulFunctionCall","src":"6502:76:61"},"nodeType":"YulIf","src":"6499:96:61"}]},"name":"validator_revert_t_contract$_ITaskTreasuryUpgradable_$16342","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"6482:5:61","type":""}],"src":"6413:188:61"},{"body":{"nodeType":"YulBlock","src":"6703:113:61","statements":[{"nodeType":"YulAssignment","src":"6713:22:61","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"6728:6:61"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6722:5:61"},"nodeType":"YulFunctionCall","src":"6722:13:61"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"6713:5:61"}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"6804:5:61"}],"functionName":{"name":"validator_revert_t_contract$_ITaskTreasuryUpgradable_$16342","nodeType":"YulIdentifier","src":"6744:59:61"},"nodeType":"YulFunctionCall","src":"6744:66:61"},"nodeType":"YulExpressionStatement","src":"6744:66:61"}]},"name":"abi_decode_t_contract$_ITaskTreasuryUpgradable_$16342_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"6681:6:61","type":""},{"name":"end","nodeType":"YulTypedName","src":"6689:3:61","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"6697:5:61","type":""}],"src":"6607:209:61"},{"body":{"nodeType":"YulBlock","src":"6932:307:61","statements":[{"body":{"nodeType":"YulBlock","src":"6978:83:61","statements":[{"expression":{"arguments":[],"functionName":{"name":"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b","nodeType":"YulIdentifier","src":"6980:77:61"},"nodeType":"YulFunctionCall","src":"6980:79:61"},"nodeType":"YulExpressionStatement","src":"6980:79:61"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"6953:7:61"},{"name":"headStart","nodeType":"YulIdentifier","src":"6962:9:61"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6949:3:61"},"nodeType":"YulFunctionCall","src":"6949:23:61"},{"kind":"number","nodeType":"YulLiteral","src":"6974:2:61","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"6945:3:61"},"nodeType":"YulFunctionCall","src":"6945:32:61"},"nodeType":"YulIf","src":"6942:119:61"},{"nodeType":"YulBlock","src":"7071:161:61","statements":[{"nodeType":"YulVariableDeclaration","src":"7086:15:61","value":{"kind":"number","nodeType":"YulLiteral","src":"7100:1:61","type":"","value":"0"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"7090:6:61","type":""}]},{"nodeType":"YulAssignment","src":"7115:107:61","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7194:9:61"},{"name":"offset","nodeType":"YulIdentifier","src":"7205:6:61"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7190:3:61"},"nodeType":"YulFunctionCall","src":"7190:22:61"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"7214:7:61"}],"functionName":{"name":"abi_decode_t_contract$_ITaskTreasuryUpgradable_$16342_fromMemory","nodeType":"YulIdentifier","src":"7125:64:61"},"nodeType":"YulFunctionCall","src":"7125:97:61"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"7115:6:61"}]}]}]},"name":"abi_decode_tuple_t_contract$_ITaskTreasuryUpgradable_$16342_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6902:9:61","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"6913:7:61","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"6925:6:61","type":""}],"src":"6822:417:61"}]},"contents":"{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n\n function allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function array_allocation_size_t_array$_t_address_$dyn_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := mul(length, 0x20)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() {\n revert(0, 0)\n }\n\n // address[]\n function abi_decode_available_length_t_array$_t_address_$dyn_memory_ptr(offset, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_array$_t_address_$dyn_memory_ptr(length))\n let dst := array\n\n mstore(array, length)\n dst := add(array, 0x20)\n\n let srcEnd := add(offset, mul(length, 0x20))\n if gt(srcEnd, end) {\n revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef()\n }\n for { let src := offset } lt(src, srcEnd) { src := add(src, 0x20) }\n {\n\n let elementPos := src\n\n mstore(dst, abi_decode_t_address(elementPos, end))\n dst := add(dst, 0x20)\n }\n }\n\n // address[]\n function abi_decode_t_array$_t_address_$dyn_memory_ptr(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := calldataload(offset)\n array := abi_decode_available_length_t_array$_t_address_$dyn_memory_ptr(add(offset, 0x20), length, end)\n }\n\n function abi_decode_tuple_t_addresst_uint256t_uint256t_uint256t_uint256t_array$_t_address_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5 {\n if slt(sub(dataEnd, headStart), 192) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 128\n\n value4 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 160))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value5 := abi_decode_t_array$_t_address_$dyn_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x32() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function increment_t_uint256(value) -> ret {\n value := cleanup_t_uint256(value)\n if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n ret := add(value, 1)\n }\n\n function cleanup_t_address_payable(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address_payable(value) {\n if iszero(eq(value, cleanup_t_address_payable(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address_payable_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_address_payable(value)\n }\n\n function abi_decode_tuple_t_address_payable_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address_payable_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_contract$_ITaskTreasuryUpgradable_$16342(value) -> cleaned {\n cleaned := cleanup_t_address(value)\n }\n\n function validator_revert_t_contract$_ITaskTreasuryUpgradable_$16342(value) {\n if iszero(eq(value, cleanup_t_contract$_ITaskTreasuryUpgradable_$16342(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_contract$_ITaskTreasuryUpgradable_$16342_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_contract$_ITaskTreasuryUpgradable_$16342(value)\n }\n\n function abi_decode_tuple_t_contract$_ITaskTreasuryUpgradable_$16342_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_contract$_ITaskTreasuryUpgradable_$16342_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n}\n","id":61,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061002b5760003560e01c80630629b93814610030575b600080fd5b61004a60048036038101906100459190610add565b61004c565b005b60006100566105bd565b905060018160030160007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060018160030160007f1f931c1c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060018160030160007f48e2b093000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060018160030160007ff8b33b26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060018160030160007f410db6b6000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060018160030160007fa60cf313000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060018160030160007fb5879a4b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060018160030160007fed5e69e2000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060018160030160007f5e1208a1000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555061054d876105ea565b610556866107d2565b61055f856107e5565b610568846107f8565b6105718361080b565b60005b82518110156105b3576105a083828151811061059357610592610b86565b5b602002602001015161081e565b80806105ab90610be4565b915050610574565b5050505050505050565b6000807fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90508091505090565b806105f3610882565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663573ea5756040518163ffffffff1660e01b8152600401602060405180830381865afa15801561067f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a39190610c6a565b6106ab610882565b60020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506106f4610882565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e60a32136040518163ffffffff1660e01b8152600401602060405180830381865afa158015610762573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107869190610cd5565b61078e610882565b60010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b806107db610882565b6003018190555050565b806107ee6108af565b6006018190555050565b806108016108af565b6007018190555050565b806108146108af565b6008018190555050565b60016108286108af565b60090160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000807fde06769ca6d80a022439e234eebb61c3801d652175b62f912d6f8cac7b881c6590508091505090565b6000807f2f7ed27098ecefe70183ee38ae4542dee65215b0786f6870871034402cfe2cc990508091505090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061091b826108f0565b9050919050565b61092b81610910565b811461093657600080fd5b50565b60008135905061094881610922565b92915050565b6000819050919050565b6109618161094e565b811461096c57600080fd5b50565b60008135905061097e81610958565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6109d282610989565b810181811067ffffffffffffffff821117156109f1576109f061099a565b5b80604052505050565b6000610a046108dc565b9050610a1082826109c9565b919050565b600067ffffffffffffffff821115610a3057610a2f61099a565b5b602082029050602081019050919050565b600080fd5b6000610a59610a5484610a15565b6109fa565b90508083825260208201905060208402830185811115610a7c57610a7b610a41565b5b835b81811015610aa55780610a918882610939565b845260208401935050602081019050610a7e565b5050509392505050565b600082601f830112610ac457610ac3610984565b5b8135610ad4848260208601610a46565b91505092915050565b60008060008060008060c08789031215610afa57610af96108e6565b5b6000610b0889828a01610939565b9650506020610b1989828a0161096f565b9550506040610b2a89828a0161096f565b9450506060610b3b89828a0161096f565b9350506080610b4c89828a0161096f565b92505060a087013567ffffffffffffffff811115610b6d57610b6c6108eb565b5b610b7989828a01610aaf565b9150509295509295509295565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610bef8261094e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610c2157610c20610bb5565b5b600182019050919050565b6000610c37826108f0565b9050919050565b610c4781610c2c565b8114610c5257600080fd5b50565b600081519050610c6481610c3e565b92915050565b600060208284031215610c8057610c7f6108e6565b5b6000610c8e84828501610c55565b91505092915050565b6000610ca282610910565b9050919050565b610cb281610c97565b8114610cbd57600080fd5b50565b600081519050610ccf81610ca9565b92915050565b600060208284031215610ceb57610cea6108e6565b5b6000610cf984828501610cc0565b9150509291505056fea264697066735822122046cdd1ceed7fc7b39aecccca68597613a4b603fb88bcf675aa209365fe4ad2c864736f6c63430008120033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x629B938 EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x45 SWAP2 SWAP1 PUSH2 0xADD JUMP JUMPDEST PUSH2 0x4C JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH2 0x56 PUSH2 0x5BD JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 PUSH1 0x3 ADD PUSH1 0x0 PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x1 DUP2 PUSH1 0x3 ADD PUSH1 0x0 PUSH32 0x1F931C1C00000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x1 DUP2 PUSH1 0x3 ADD PUSH1 0x0 PUSH32 0x48E2B09300000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x1 DUP2 PUSH1 0x3 ADD PUSH1 0x0 PUSH32 0xF8B33B2600000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x1 DUP2 PUSH1 0x3 ADD PUSH1 0x0 PUSH32 0x410DB6B600000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x1 DUP2 PUSH1 0x3 ADD PUSH1 0x0 PUSH32 0xA60CF31300000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x1 DUP2 PUSH1 0x3 ADD PUSH1 0x0 PUSH32 0xB5879A4B00000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x1 DUP2 PUSH1 0x3 ADD PUSH1 0x0 PUSH32 0xED5E69E200000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x1 DUP2 PUSH1 0x3 ADD PUSH1 0x0 PUSH32 0x5E1208A100000000000000000000000000000000000000000000000000000000 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH2 0x54D DUP8 PUSH2 0x5EA JUMP JUMPDEST PUSH2 0x556 DUP7 PUSH2 0x7D2 JUMP JUMPDEST PUSH2 0x55F DUP6 PUSH2 0x7E5 JUMP JUMPDEST PUSH2 0x568 DUP5 PUSH2 0x7F8 JUMP JUMPDEST PUSH2 0x571 DUP4 PUSH2 0x80B JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x5B3 JUMPI PUSH2 0x5A0 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x593 JUMPI PUSH2 0x592 PUSH2 0xB86 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x81E JUMP JUMPDEST DUP1 DUP1 PUSH2 0x5AB SWAP1 PUSH2 0xBE4 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x574 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0xC8FCAD8DB84D3CC18B4C41D551EA0EE66DD599CDE068D998E57D5E09332C131C SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x5F3 PUSH2 0x882 JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x573EA575 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x67F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x6A3 SWAP2 SWAP1 PUSH2 0xC6A JUMP JUMPDEST PUSH2 0x6AB PUSH2 0x882 JUMP JUMPDEST PUSH1 0x2 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x6F4 PUSH2 0x882 JUMP JUMPDEST PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xE60A3213 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x762 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x786 SWAP2 SWAP1 PUSH2 0xCD5 JUMP JUMPDEST PUSH2 0x78E PUSH2 0x882 JUMP JUMPDEST PUSH1 0x1 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST DUP1 PUSH2 0x7DB PUSH2 0x882 JUMP JUMPDEST PUSH1 0x3 ADD DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST DUP1 PUSH2 0x7EE PUSH2 0x8AF JUMP JUMPDEST PUSH1 0x6 ADD DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST DUP1 PUSH2 0x801 PUSH2 0x8AF JUMP JUMPDEST PUSH1 0x7 ADD DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST DUP1 PUSH2 0x814 PUSH2 0x8AF JUMP JUMPDEST PUSH1 0x8 ADD DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x1 PUSH2 0x828 PUSH2 0x8AF JUMP JUMPDEST PUSH1 0x9 ADD PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0xDE06769CA6D80A022439E234EEBB61C3801D652175B62F912D6F8CAC7B881C65 SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x2F7ED27098ECEFE70183EE38AE4542DEE65215B0786F6870871034402CFE2CC9 SWAP1 POP DUP1 SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x91B DUP3 PUSH2 0x8F0 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x92B DUP2 PUSH2 0x910 JUMP JUMPDEST DUP2 EQ PUSH2 0x936 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x948 DUP2 PUSH2 0x922 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x961 DUP2 PUSH2 0x94E JUMP JUMPDEST DUP2 EQ PUSH2 0x96C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x97E DUP2 PUSH2 0x958 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x9D2 DUP3 PUSH2 0x989 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x9F1 JUMPI PUSH2 0x9F0 PUSH2 0x99A JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA04 PUSH2 0x8DC JUMP JUMPDEST SWAP1 POP PUSH2 0xA10 DUP3 DUP3 PUSH2 0x9C9 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xA30 JUMPI PUSH2 0xA2F PUSH2 0x99A JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xA59 PUSH2 0xA54 DUP5 PUSH2 0xA15 JUMP JUMPDEST PUSH2 0x9FA JUMP JUMPDEST SWAP1 POP DUP1 DUP4 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH1 0x20 DUP5 MUL DUP4 ADD DUP6 DUP2 GT ISZERO PUSH2 0xA7C JUMPI PUSH2 0xA7B PUSH2 0xA41 JUMP JUMPDEST JUMPDEST DUP4 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xAA5 JUMPI DUP1 PUSH2 0xA91 DUP9 DUP3 PUSH2 0x939 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xA7E JUMP JUMPDEST POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xAC4 JUMPI PUSH2 0xAC3 PUSH2 0x984 JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0xAD4 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0xA46 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0xAFA JUMPI PUSH2 0xAF9 PUSH2 0x8E6 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xB08 DUP10 DUP3 DUP11 ADD PUSH2 0x939 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x20 PUSH2 0xB19 DUP10 DUP3 DUP11 ADD PUSH2 0x96F JUMP JUMPDEST SWAP6 POP POP PUSH1 0x40 PUSH2 0xB2A DUP10 DUP3 DUP11 ADD PUSH2 0x96F JUMP JUMPDEST SWAP5 POP POP PUSH1 0x60 PUSH2 0xB3B DUP10 DUP3 DUP11 ADD PUSH2 0x96F JUMP JUMPDEST SWAP4 POP POP PUSH1 0x80 PUSH2 0xB4C DUP10 DUP3 DUP11 ADD PUSH2 0x96F JUMP JUMPDEST SWAP3 POP POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xB6D JUMPI PUSH2 0xB6C PUSH2 0x8EB JUMP JUMPDEST JUMPDEST PUSH2 0xB79 DUP10 DUP3 DUP11 ADD PUSH2 0xAAF JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xBEF DUP3 PUSH2 0x94E JUMP JUMPDEST SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 SUB PUSH2 0xC21 JUMPI PUSH2 0xC20 PUSH2 0xBB5 JUMP JUMPDEST JUMPDEST PUSH1 0x1 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC37 DUP3 PUSH2 0x8F0 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xC47 DUP2 PUSH2 0xC2C JUMP JUMPDEST DUP2 EQ PUSH2 0xC52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0xC64 DUP2 PUSH2 0xC3E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC80 JUMPI PUSH2 0xC7F PUSH2 0x8E6 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xC8E DUP5 DUP3 DUP6 ADD PUSH2 0xC55 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCA2 DUP3 PUSH2 0x910 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0xCB2 DUP2 PUSH2 0xC97 JUMP JUMPDEST DUP2 EQ PUSH2 0xCBD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0xCCF DUP2 PUSH2 0xCA9 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xCEB JUMPI PUSH2 0xCEA PUSH2 0x8E6 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0xCF9 DUP5 DUP3 DUP6 ADD PUSH2 0xCC0 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CHAINID 0xCD 0xD1 0xCE 0xED PUSH32 0xC7B39AECCCCA68597613A4B603FB88BCF675AA209365FE4AD2C864736F6C6343 STOP ADDMOD SLT STOP CALLER ","sourceMap":"887:1416:60:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;914:1387;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;1196:35;1234:28;:26;:28::i;:::-;1196:66;;1323:4;1272:1;:21;;:48;1294:25;1272:48;;;;;;;;;;;;;;;;;;:55;;;;;;;;;;;;;;;;;;1385:4;1337:1;:21;;:45;1359:22;1337:45;;;;;;;;;;;;;;;;;;:52;;;;;;;;;;;;;;;;;;1449:4;1399:1;:21;;:47;1421:24;1399:47;;;;;;;;;;;;;;;;;;:54;;;;;;;;;;;;;;;;;;1521:4;1463:1;:21;;:55;1485:32;1463:55;;;;;;;;;;;;;;;;;;:62;;;;;;;;;;;;;;;;;;1587:4;1535:1;:21;;:49;1557:26;1535:49;;;;;;;;;;;;;;;;;;:56;;;;;;;;;;;;;;;;;;1654:4;1601:1;:21;;:50;1623:27;1601:50;;;;;;;;;;;;;;;;;;:57;;;;;;;;;;;;;;;;;;1720:4;1668:1;:21;;:49;1690:26;1668:49;;;;;;;;;;;;;;;;;;:56;;;;;;;;;;;;;;;;;;1786:4;1734:1;:21;;:49;1756:26;1734:49;;;;;;;;;;;;;;;;;;:56;;;;;;;;;;;;;;;;;;1849:4;1800:1;:21;;:46;1822:23;1800:46;;;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;1864:41;1896:8;1864:31;:41::i;:::-;1915:65;1955:24;1915:39;:65::i;:::-;1990:54;2024:19;1990:33;:54::i;:::-;2054:48;2085:16;2054:30;:48::i;:::-;2112:56;2142:25;2112:29;:56::i;:::-;2183:9;2178:117;2202:12;:19;2198:1;:23;2178:117;;;2242:42;2268:12;2281:1;2268:15;;;;;;;;:::i;:::-;;;;;;;;2242:25;:42::i;:::-;2223:3;;;;;:::i;:::-;;;;2178:117;;;;1186:1115;914:1387;;;;;;:::o;1445:224:49:-;1519:24;1559:16;443:45;1559:43;;1645:8;1635:18;;1621:42;1445:224;:::o;3301:319:42:-;3412:8;3367:18;:16;:18::i;:::-;:32;;;:54;;;;;;;;;;;;;;;;;;3476:8;3466:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3431:18;:16;:18::i;:::-;:32;;;:63;;;;;;;;;;;;;;;;;;3540:18;:16;:18::i;:::-;:45;;;;;;;;;;;;:71;;;:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3504:18;:16;:18::i;:::-;:33;;;:109;;;;;;;;;;;;;;;;;;3301:319;:::o;3626:130::-;3743:6;3698:18;:16;:18::i;:::-;:42;;:51;;;;3626:130;:::o;8107:125:43:-;8216:9;8177:17;:15;:17::i;:::-;:36;;:48;;;;8107:125;:::o;8238:119::-;8341:9;8305:17;:15;:17::i;:::-;:33;;:45;;;;8238:119;:::o;8363:127::-;8474:9;8429:17;:15;:17::i;:::-;:42;;:54;;;;8363:127;:::o;8496:120::-;8605:4;8560:17;:15;:17::i;:::-;:29;;:42;8590:11;8560:42;;;;;;;;;;;;;;;;:49;;;;;;;;;;;;;;;;;;8496:120;:::o;777:227:42:-;852:25;893:16;356:24;893:44;;980:8;970:18;;956:42;777:227;:::o;2131:224:43:-;2205:24;2245:16;876:23;2245:43;;2331:8;2321:18;;2307:42;2131:224;:::o;7:75:61:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:77::-;878:7;907:5;896:16;;841:77;;;:::o;924:122::-;997:24;1015:5;997:24;:::i;:::-;990:5;987:35;977:63;;1036:1;1033;1026:12;977:63;924:122;:::o;1052:139::-;1098:5;1136:6;1123:20;1114:29;;1152:33;1179:5;1152:33;:::i;:::-;1052:139;;;;:::o;1197:117::-;1306:1;1303;1296:12;1320:102;1361:6;1412:2;1408:7;1403:2;1396:5;1392:14;1388:28;1378:38;;1320:102;;;:::o;1428:180::-;1476:77;1473:1;1466:88;1573:4;1570:1;1563:15;1597:4;1594:1;1587:15;1614:281;1697:27;1719:4;1697:27;:::i;:::-;1689:6;1685:40;1827:6;1815:10;1812:22;1791:18;1779:10;1776:34;1773:62;1770:88;;;1838:18;;:::i;:::-;1770:88;1878:10;1874:2;1867:22;1657:238;1614:281;;:::o;1901:129::-;1935:6;1962:20;;:::i;:::-;1952:30;;1991:33;2019:4;2011:6;1991:33;:::i;:::-;1901:129;;;:::o;2036:311::-;2113:4;2203:18;2195:6;2192:30;2189:56;;;2225:18;;:::i;:::-;2189:56;2275:4;2267:6;2263:17;2255:25;;2335:4;2329;2325:15;2317:23;;2036:311;;;:::o;2353:117::-;2462:1;2459;2452:12;2493:710;2589:5;2614:81;2630:64;2687:6;2630:64;:::i;:::-;2614:81;:::i;:::-;2605:90;;2715:5;2744:6;2737:5;2730:21;2778:4;2771:5;2767:16;2760:23;;2831:4;2823:6;2819:17;2811:6;2807:30;2860:3;2852:6;2849:15;2846:122;;;2879:79;;:::i;:::-;2846:122;2994:6;2977:220;3011:6;3006:3;3003:15;2977:220;;;3086:3;3115:37;3148:3;3136:10;3115:37;:::i;:::-;3110:3;3103:50;3182:4;3177:3;3173:14;3166:21;;3053:144;3037:4;3032:3;3028:14;3021:21;;2977:220;;;2981:21;2595:608;;2493:710;;;;;:::o;3226:370::-;3297:5;3346:3;3339:4;3331:6;3327:17;3323:27;3313:122;;3354:79;;:::i;:::-;3313:122;3471:6;3458:20;3496:94;3586:3;3578:6;3571:4;3563:6;3559:17;3496:94;:::i;:::-;3487:103;;3303:293;3226:370;;;;:::o;3602:1267::-;3731:6;3739;3747;3755;3763;3771;3820:3;3808:9;3799:7;3795:23;3791:33;3788:120;;;3827:79;;:::i;:::-;3788:120;3947:1;3972:53;4017:7;4008:6;3997:9;3993:22;3972:53;:::i;:::-;3962:63;;3918:117;4074:2;4100:53;4145:7;4136:6;4125:9;4121:22;4100:53;:::i;:::-;4090:63;;4045:118;4202:2;4228:53;4273:7;4264:6;4253:9;4249:22;4228:53;:::i;:::-;4218:63;;4173:118;4330:2;4356:53;4401:7;4392:6;4381:9;4377:22;4356:53;:::i;:::-;4346:63;;4301:118;4458:3;4485:53;4530:7;4521:6;4510:9;4506:22;4485:53;:::i;:::-;4475:63;;4429:119;4615:3;4604:9;4600:19;4587:33;4647:18;4639:6;4636:30;4633:117;;;4669:79;;:::i;:::-;4633:117;4774:78;4844:7;4835:6;4824:9;4820:22;4774:78;:::i;:::-;4764:88;;4558:304;3602:1267;;;;;;;;:::o;4875:180::-;4923:77;4920:1;4913:88;5020:4;5017:1;5010:15;5044:4;5041:1;5034:15;5061:180;5109:77;5106:1;5099:88;5206:4;5203:1;5196:15;5230:4;5227:1;5220:15;5247:233;5286:3;5309:24;5327:5;5309:24;:::i;:::-;5300:33;;5355:66;5348:5;5345:77;5342:103;;5425:18;;:::i;:::-;5342:103;5472:1;5465:5;5461:13;5454:20;;5247:233;;;:::o;5486:104::-;5531:7;5560:24;5578:5;5560:24;:::i;:::-;5549:35;;5486:104;;;:::o;5596:138::-;5677:32;5703:5;5677:32;:::i;:::-;5670:5;5667:43;5657:71;;5724:1;5721;5714:12;5657:71;5596:138;:::o;5740:159::-;5805:5;5836:6;5830:13;5821:22;;5852:41;5887:5;5852:41;:::i;:::-;5740:159;;;;:::o;5905:367::-;5983:6;6032:2;6020:9;6011:7;6007:23;6003:32;6000:119;;;6038:79;;:::i;:::-;6000:119;6158:1;6183:72;6247:7;6238:6;6227:9;6223:22;6183:72;:::i;:::-;6173:82;;6129:136;5905:367;;;;:::o;6278:129::-;6348:7;6377:24;6395:5;6377:24;:::i;:::-;6366:35;;6278:129;;;:::o;6413:188::-;6519:57;6570:5;6519:57;:::i;:::-;6512:5;6509:68;6499:96;;6591:1;6588;6581:12;6499:96;6413:188;:::o;6607:209::-;6697:5;6728:6;6722:13;6713:22;;6744:66;6804:5;6744:66;:::i;:::-;6607:209;;;;:::o;6822:417::-;6925:6;6974:2;6962:9;6953:7;6949:23;6945:32;6942:119;;;6980:79;;:::i;:::-;6942:119;7100:1;7125:97;7214:7;7205:6;7194:9;7190:22;7125:97;:::i;:::-;7115:107;;7071:161;6822:417;;;;:::o"},"methodIdentifiers":{"init(address,uint256,uint256,uint256,uint256,address[])":"0629b938"}},"metadata":"{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_autobot\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_minimumAppGelatoBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minimumEndDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minimumLifespan\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_stBufferDurationInSecond\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"_superTokens\",\"type\":\"address[]\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/upgrades/DiamondInit.sol\":\"DiamondInit\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol\":{\"keccak256\":\"0xf41ca991f30855bf80ffd11e9347856a517b977f0a6c2d52e6421a99b7840329\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2717fd2bdac99daa960a6de500754ea1b932093c946388c381da48658234b95\",\"dweb:/ipfs/QmP6QVMn6UeA3ByahyJbYQr5M6coHKBKsf3ySZSfbyA8R7\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x9b72f93be69ca894d8492c244259615c4a742afc8d63720dbc8bb81087d9b238\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5a7b96e511be78d5cdf635c784e6ab8cdd38625bb8cafb8a80914a1c89cf0f6\",\"dweb:/ipfs/QmVzTCwJxQAkjRQHboT5QrvsVJGWQHgfEjeTbvyxoKBrds\"]},\"@openzeppelin/contracts/token/ERC777/IERC777.sol\":{\"keccak256\":\"0x385a7061f1436b079d44c140dee9387d5313e94874ff9ee877dc0085c981ac3d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c3fe22bb0d9527356e11f267f9187134de4d4ed1ff77468b4d73e3238697b96\",\"dweb:/ipfs/Qmc8caJctgxbzXEpxRogQMR2bnBk5U67hA7kKbUEG2PUXV\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xf96f969e24029d43d0df89e59d365f277021dac62b48e1c1e3ebe0acdd7f1ca1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec772b45a624be516f1c81970caa8a2e144301e9d0921cbc1a2789fef39a1269\",\"dweb:/ipfs/QmNyjwxCrGhQMyzLD93oUobJXVe9ceJvRvfXwbEtuxPiEj\"]},\"@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol\":{\"keccak256\":\"0x1b588d76f3addfeb2f368ec534fbd8da6120c8ba3c08e95f410a9cc2204faf79\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://74e51ec8a8d50ad9c6c047a2548de4aac9e6da23f65b2d8a74e89665d26c527f\",\"dweb:/ipfs/QmS26ukRAwj9ZSHmRSbjmpmdA6EaZHAK6JvE38LkqjRYaP\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol\":{\"keccak256\":\"0xb68e122faba133422f4cbdd7e15fc913073dfa2c3682c18d6449b121e67d1104\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://da0611fda964b8356d38cb006133865b58adc6e11d3817e27daf20b02ad6880f\",\"dweb:/ipfs/QmeLbak3yiUfkGvxEZzmS4ndDwDfxtZNeKiA86G3WxzjyD\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IInstantDistributionAgreementV1.sol\":{\"keccak256\":\"0x7b088dfa11a00d2b1e6e0938978364a6918015b052a4bf3ffcc67db9b3182370\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://2437f6ea2d8c8de7613aef5de4dcf3530c2beb801f7d5f3e21ac617e73f8882b\",\"dweb:/ipfs/QmVBtqXYV25fQZ9P6xokBzgFnHCBthJSZdFo9quBY169fd\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol\":{\"keccak256\":\"0x80254971aff00fc006d70b85b7bc830bb28096789e72ff3f03aa22cc7810eb0c\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://840f9d959abfbf3919db3dca35336e360b2bbd54e677439a545c7c4f163f6d70\",\"dweb:/ipfs/QmR4CRq7dpYR4NuCSASkNrcnbSScRX8MaEvDs8L7v3xDyr\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol\":{\"keccak256\":\"0x9b4fab6dcac1337f78e04d67d8c2b48b1de8bd4bbf14b475840f9dbda7b8f21e\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://cc2f3629ad0cb46bd4f595880591ad6c9d75a82d920cb9355e462fbf8022c820\",\"dweb:/ipfs/QmXMovxK4qpWT4yffXxUVjkMNwxEfS6mtn39mLSmjaxEdW\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperApp.sol\":{\"keccak256\":\"0x6cc4b0724d977190c7441dfc3be6c6e48b43b555c3370af32ef5b6600f15f53f\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://3e89c944642772a42429f21a11017b57deb98a9198f8e4f8749f00aaee71299e\",\"dweb:/ipfs/QmaSv9GvqikcGHJ3tcwATDHSpQw6mfnHPDtcfqcZSS7LF6\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.sol\":{\"keccak256\":\"0x6860f0bf69dcc1d1ec39eefb43e0cd18b276b48ebe9efd53450e09cd2f997ab2\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://6421f80f2ff7818bd235b7bf4b911cc40edcb598507a246b4de0fa0191a9e1aa\",\"dweb:/ipfs/QmWxktXMjYhi1zt52D3JXNcxCFesXu8kQoSCJQ3j88apM3\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperTokenFactory.sol\":{\"keccak256\":\"0xe2525ef2906504e2f61775ed91bbebeea2f4e2e3fa42ce190561acf6a01187ff\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://7a9859eb432321a65cd15ca988a13776e1c31df44b4cf25f95fa04b54a8a8625\",\"dweb:/ipfs/QmQVJQoeoWemptZhbRgWJZWwMTiNtxVsc1FYmGdtdTfqcL\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol\":{\"keccak256\":\"0xab9dab941f99d0f0ef6125fb6eafde03378d7c3e94e613dd12fb7fbf594c3373\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://928c6ef915dee69058d4cfcb9f2344d4fc78d9763b47b17e5c03fbff64ba3c64\",\"dweb:/ipfs/Qmdk733ZHceatz3qbuodLCCS9TUspJJtXLoX6vWwMvrPDE\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance.sol\":{\"keccak256\":\"0x90a9259d0f0bb6b1bb6d48f051277eb75df96a9fbe684a203a3a468ad19318e2\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://9c8162a2d07ffe768920fef55292684149173afefbfba76b8fca007e55092229\",\"dweb:/ipfs/QmducLNwrzeUXEpBjUTSMu7sfmQEwVhcYXApe4brc1zQ6V\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol\":{\"keccak256\":\"0x9cad3866982902ea88df0874a563d2e4aeba5a5bcc6289c30cccf9b4099d2fb6\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://e8fd960b259331f204c7cb7dcd32b09d68f4294e3b872fad00ad467609c3ef72\",\"dweb:/ipfs/QmeZFEvsDunXQGPbXFfN5AvfKM5am1FY8Xv6e3c4tNKvgY\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo.sol\":{\"keccak256\":\"0x55be78ffb441c782f612b153d7d9049e3f0dbfd412c1f7df29c896b972b2985f\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://a223c68e38a6c9b1e363e525911bc7eda44ea517865ae53bd0d34ff858cc02ae\",\"dweb:/ipfs/QmVruGehibG6Emr2A6JHwUnhd4NzsGkE24cbGqnDpEvrKh\"]},\"@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.sol\":{\"keccak256\":\"0x7456cd394cc905aae7cdbd4601ce1c296c768c13c28e66efbb913cc070bad3e4\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://5a6589b428b724721ba5b4dd196c8f366a6e694ef313add093f29af64496c042\",\"dweb:/ipfs/QmSMgV6y8L6pyyzDz6kKmafVwujNWcjTqutpCBxe4uNRqg\"]},\"contracts/interfaces/core/IAutomate.sol\":{\"keccak256\":\"0x21b292f16977568b93ad13329faea0112bed7e0413c441ffcf58ecca8d540ec7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0c9449f7e8725db0c2721f5a8890e58af4d69b465d1e9cecc1acfb1e3db40771\",\"dweb:/ipfs/QmR9mHTaDi8qWCq1tXzBaLgKK6tgEjk1bHEnB8GGSXLBTT\"]},\"contracts/interfaces/core/IControl.sol\":{\"keccak256\":\"0xbe980059242de4291d9e3816f3ee0d4ad8dde4eb6a842a673315a7f82bd0b8b7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5f3f5807a1c3fd9605ca2769413d69f3e99e914a5f196fd5392cbedb3f779f3d\",\"dweb:/ipfs/QmUjmRwMjioDHcy6hLxeWDV7TgxahNwcty3HbGSywJTd46\"]},\"contracts/interfaces/core/IFlow.sol\":{\"keccak256\":\"0x457048a156fdd4960d1ae29d25c23e64a009b07a4d245a28baeb76ac6becbc7c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cfe189445294f1966924fac59728c7b0df24aa97d138432dc94318eca75995ad\",\"dweb:/ipfs/QmVzE173mUK78z8W1rYvwLo5e6UU6TtKdX2AhDq2wiFWkB\"]},\"contracts/interfaces/core/ISession.sol\":{\"keccak256\":\"0xc618e9cd6023ef8744b2eb6211ed3465cda70c874f1297b526d00dbfcbbb70b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be1075605f777814f2c586f36c79822618ec4153c94d5dcf7ea547cdbe019414\",\"dweb:/ipfs/QmdUSV8kSgutygg2kNcn5xZfyowH7FdJnSfurNGFBZGW6A\"]},\"contracts/interfaces/utils/IAccessControl.sol\":{\"keccak256\":\"0xc5635aad433711323ec6cd473aedaca97383d910663bb74a5cda1e8e3323d86d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://404b89c843a0682fcc8fe55740ea803cc4dd85f04398c224202ec599f80d4288\",\"dweb:/ipfs/QmQgt4gNDNX3Khk1R1tTaSccvqrypibWxUjXNeE7VAAtm9\"]},\"contracts/interfaces/utils/ICut.sol\":{\"keccak256\":\"0xeaf211b0c9da3a46171250f7cf949ffc171447c36b68451013d00a530281790a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1de62f56aba981f3430068a960272e56cbfece148d15861e410bd89f40a0f52d\",\"dweb:/ipfs/QmRw5Wrtm1NRBrnUxyKspheunoGarnkCmEYG2AFZpPeo5x\"]},\"contracts/interfaces/utils/IERC165.sol\":{\"keccak256\":\"0x3adf1411c3cea1e9c8808e7de6f6b3d9050b3ce2f8c974b3ea36e5e774870a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c206e2bb1a3a711b9bdcb8fe22680a12dd88ba4eccb055376e5f6d06eaa393c9\",\"dweb:/ipfs/QmZEj2vabmhVmBEx39LNArRM1U4u69oU1waZ9nDUTRfRX4\"]},\"contracts/interfaces/utils/ILoupe.sol\":{\"keccak256\":\"0x4c5bc561178aa61cd464da8d76ac3853dbd118d8de6709273045e1580def2453\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34ca0c910c0b72d0603fc3ffc5aa28935982396a249419448199c341d8e883fe\",\"dweb:/ipfs/QmSFcJNgH9tFesJDN7W59Pj4ArwuTT1EoMDa6Pqj2Uo3zN\"]},\"contracts/interfaces/utils/IUtility.sol\":{\"keccak256\":\"0x235180cb3af695b167f730c8e132873191d5300a6f61e3a3f9cfb0b5ea2777b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a4c12a010d8a5ba3ec9a5973525d51c0c9e4d73efb7cf7ccd80dbd2a0fd2e40\",\"dweb:/ipfs/QmSnPXS7qHd8bPRsz9uWZRbRhEbDWCjeSBkmLenbNrekYN\"]},\"contracts/libraries/core/LibAutomate.sol\":{\"keccak256\":\"0xdca80cbbdf57dfc0f76c3719a54d2da92c09e46c3844b1011d9742a16ed2eb93\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://d5b967a7f5fa571c8154fa358725e9b5cff19b6e3847ff00e0ec210c9ce7a97b\",\"dweb:/ipfs/Qma7vn262Je4WamND9fytLSFaM4tw7NcGs5pYE1Lc3iB5a\"]},\"contracts/libraries/core/LibControl.sol\":{\"keccak256\":\"0x791dd1dc0c61948e1b1a46d190f02a041abdf6e2db26f1b436b06d8116381103\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://ec9343651044d62055789d04d464545afed31f82268dfd17703763a54441e0ec\",\"dweb:/ipfs/QmWKFYUATgubBYLZCRghkenZbjJHQwdQ8ymZVK5xBFm2QJ\"]},\"contracts/libraries/core/LibFlow.sol\":{\"keccak256\":\"0xf07903d54504fd374edbd492a084b92f9b9bd6e39846ecfcb743d9ce3031e2a7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://94b205c755a9c96ec4d8f3631cf24cb255d28b3abc65c7b2580f50a0f3c23f1c\",\"dweb:/ipfs/QmVsrQ3WzkQ9PvckGaBhd2ZDMV56wsPPZcRCGi5Qv9UXmc\"]},\"contracts/libraries/core/LibSession.sol\":{\"keccak256\":\"0xce48bf158372890e3075e07cab5747d373a3a6cf219ba85bef08691a49b96303\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7b8b013d5426d0ba0f4c9657e0ddc06ee0cecbf91679f4cb06a9bf2214cce17e\",\"dweb:/ipfs/QmXTPcBsdSanj4RM3xPrqNNMXk3eG8H7h47zSXj4ZVwTC9\"]},\"contracts/libraries/utils/IterableMappingBPS.sol\":{\"keccak256\":\"0xb6ab47a53267822918fdd13e4df79bfc1e8b2bbf921c80bbc4ad2e706e3539ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://092d19ac7ce0d7ada8fbb01d3af6822d6d8260fe8b8248e54b906a9edf381dd2\",\"dweb:/ipfs/QmZ8LZ72a2sSNfwm4Fpz54ZHVcjTe1dDy4ZrBhbNztZ1Bg\"]},\"contracts/libraries/utils/LibDiamond.sol\":{\"keccak256\":\"0x79254e503c12329739379fe3900cf174268bfe2c65cf5b7c1396b17783939834\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d405043f0b78b814d17fb721b476d2ab7a9d5a0c6065f6ecd0d4007c43e6b9fe\",\"dweb:/ipfs/QmPEsvxHnZKp84ww7WnQKjGo89eiVzXxcgdGxmMCcWbkZE\"]},\"contracts/services/gelato/Types.sol\":{\"keccak256\":\"0xcb8ce40dd420fe9d1fc258beba179e7c43560616dfd045d254a15fa75e6043e8\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://27599e8fa821421f99c2ae56716b118c4f47201d20c8475f6554395a60fc00a5\",\"dweb:/ipfs/QmS7h9jcSSZTM1icDDcFjdNgK3cFJWXFEXoJBpjfjn2a89\"]},\"contracts/upgrades/DiamondInit.sol\":{\"keccak256\":\"0x6aef360bdba4e982f4d89fccc3ec2df8d2d78c636ba91decb1f6bed42008ace2\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://188708dda7793da1e9d96fdc219733a6f0a2941bdfffdd66f0701a0fc91c12fa\",\"dweb:/ipfs/QmVEBJQRfanruJ27ESi4xELfzqonpDYoeJs9CJCW74VK4n\"]}},\"version\":1}"}}}}} \ No newline at end of file diff --git a/contracts/artifacts/contracts/Diamond.sol/Diamond.dbg.json b/contracts/artifacts/contracts/Diamond.sol/Diamond.dbg.json new file mode 100644 index 0000000..50e2df1 --- /dev/null +++ b/contracts/artifacts/contracts/Diamond.sol/Diamond.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../build-info/ba9437438ec2715393320ce18780bccb.json" +} diff --git a/contracts/artifacts/contracts/Diamond.sol/Diamond.json b/contracts/artifacts/contracts/Diamond.sol/Diamond.json new file mode 100644 index 0000000..0f99642 --- /dev/null +++ b/contracts/artifacts/contracts/Diamond.sol/Diamond.json @@ -0,0 +1,51 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Diamond", + "sourceName": "contracts/Diamond.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_contractOwner", + "type": "address" + }, + { + "internalType": "address", + "name": "_diamondCutFacet", + "type": "address" + } + ], + "stateMutability": "payable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_initializationContractAddress", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_calldata", + "type": "bytes" + } + ], + "name": "InitializationFunctionReverted", + "type": "error" + }, + { + "stateMutability": "payable", + "type": "fallback" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "bytecode": "0x60806040526040516200481938038062004819833981810160405281019062000029919062001965565b620000436000801b83620002b260201b620001671760201c565b62000080604051602001620000589062001a0d565b6040516020818303038152906040528051906020012083620002b260201b620001671760201c565b620000bd604051602001620000959062001a7f565b6040516020818303038152906040528051906020012083620002b260201b620001671760201c565b620000fa604051602001620000d29062001af1565b6040516020818303038152906040528051906020012083620002b260201b620001671760201c565b6000600167ffffffffffffffff8111156200011a576200011962001b13565b5b6040519080825280602002602001820160405280156200015757816020015b62000143620018af565b815260200190600190039081620001395790505b5090506000600167ffffffffffffffff8111156200017a576200017962001b13565b5b604051908082528060200260200182016040528015620001a95781602001602082028036833780820191505090505b509050631f931c1c60e01b81600081518110620001cb57620001ca62001b42565b5b60200260200101907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152505060405180606001604052808473ffffffffffffffffffffffffffffffffffffffff1681526020016000600281111562000255576200025462001b71565b5b8152602001828152508260008151811062000275576200027462001b42565b5b6020026020010181905250620002a882600060405180602001604052806000815250620002c860201b620001751760201c565b5050505062002618565b620002c482826200054c60201b60201c565b5050565b60005b8351811015620004f7576000848281518110620002ed57620002ec62001b42565b5b60200260200101516020015190506000600281111562000312576200031162001b71565b5b81600281111562000328576200032762001b71565b5b0362000388576200038285838151811062000348576200034762001b42565b5b6020026020010151600001518684815181106200036a576200036962001b42565b5b6020026020010151604001516200064060201b60201c565b620004e0565b600160028111156200039f576200039e62001b71565b5b816002811115620003b557620003b462001b71565b5b0362000415576200040f858381518110620003d557620003d462001b42565b5b602002602001015160000151868481518110620003f757620003f662001b42565b5b602002602001015160400151620008e260201b60201c565b620004df565b6002808111156200042b576200042a62001b71565b5b81600281111562000441576200044062001b71565b5b03620004a1576200049b85838151811062000461576200046062001b42565b5b60200260200101516000015186848151811062000483576200048262001b42565b5b60200260200101516040015162000b9660201b60201c565b620004de565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004d59062001c16565b60405180910390fd5b5b5b508080620004ee9062001c71565b915050620002cb565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb6738383836040516200052d9392919062001feb565b60405180910390a162000547828262000d3e60201b60201c565b505050565b6200055e828262000e7260201b60201c565b6200063c5760016200057562000eee60201b60201c565b600001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600081511162000687576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200067e90620020ac565b60405180910390fd5b60006200069962000f1b60201b60201c565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036200070d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007049062002144565b60405180910390fd5b60008160010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054905090506000816bffffffffffffffffffffffff1603620007835762000782828562000f4860201b60201c565b5b60005b8351811015620008db576000848281518110620007a857620007a762001b42565b5b602002602001015190506000846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146200089f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200089690620021dc565b60405180910390fd5b620008b38583868a6200102c60201b60201c565b8380620008c09062002216565b94505050508080620008d29062001c71565b91505062000786565b5050505050565b600081511162000929576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200092090620020ac565b60405180910390fd5b60006200093b62000f1b60201b60201c565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620009af576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009a69062002144565b60405180910390fd5b60008160010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054905090506000816bffffffffffffffffffffffff160362000a255762000a24828562000f4860201b60201c565b5b60005b835181101562000b8f57600084828151811062000a4a5762000a4962001b42565b5b602002602001015190506000846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000b40576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b3790620022c5565b60405180910390fd5b62000b53858284620011d960201b60201c565b62000b678583868a6200102c60201b60201c565b838062000b749062002216565b9450505050808062000b869062001c71565b91505062000a28565b5050505050565b600081511162000bdd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000bd490620020ac565b60405180910390fd5b600062000bef62000f1b60201b60201c565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161462000c63576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c5a906200235d565b60405180910390fd5b60005b825181101562000d3857600083828151811062000c885762000c8762001b42565b5b602002602001015190506000836000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905062000d20848284620011d960201b60201c565b5050808062000d2f9062001c71565b91505062000c66565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16031562000e6e5762000d9f82604051806060016040528060288152602001620047cd602891396200185a60201b60201c565b6000808373ffffffffffffffffffffffffffffffffffffffff168360405162000dc99190620023c1565b600060405180830381855af49150503d806000811462000e06576040519150601f19603f3d011682016040523d82523d6000602084013e62000e0b565b606091505b50915091508162000e6b5760008151111562000e2a5780518082602001fd5b83836040517f192105d700000000000000000000000000000000000000000000000000000000815260040162000e62929190620023da565b60405180910390fd5b50505b5050565b600062000e8462000eee60201b60201c565b600001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000807f4cd15452b25e815d3f9d1a3c7edd985a178edf5eb3461a1acbf855517423d69490508091505090565b6000807fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90508091505090565b62000f7381604051806060016040528060248152602001620047f5602491396200185a60201b60201c565b81600201805490508260010160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555081600201819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b81846000016000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508360010160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018390806001815401808255809150506001900390600052602060002090600891828204019190066004029091909190916101000a81548163ffffffff021916908360e01c021790555080846000016000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200124b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620012429062002484565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620012bc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620012b3906200251c565b60405180910390fd5b6000836000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff169050600060018560010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001805490506200139591906200253e565b9050808214620015305760008560010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018281548110620013fa57620013f962001b42565b5b90600052602060002090600891828204019190066004029054906101000a900460e01b9050808660010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001848154811062001479576200147862001b42565b5b90600052602060002090600891828204019190066004026101000a81548163ffffffff021916908360e01c021790555082866000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550505b8460010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000180548062001587576200158662002579565b5b60019003818190600052602060002090600891828204019190066004026101000a81549063ffffffff02191690559055846000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a8154906bffffffffffffffffffffffff021916905550506000810362001853576000600186600201805490506200167491906200253e565b905060008660010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050818114620017bc576000876002018381548110620016e257620016e162001b42565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508088600201838154811062001729576200172862001b42565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818860010160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550505b86600201805480620017d357620017d262002579565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590558660010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000905550505b5050505050565b6000823b9050600081118290620018a9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620018a09190620025f4565b60405180910390fd5b50505050565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160006002811115620018ee57620018ed62001b71565b5b8152602001606081525090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200192d8262001900565b9050919050565b6200193f8162001920565b81146200194b57600080fd5b50565b6000815190506200195f8162001934565b92915050565b600080604083850312156200197f576200197e620018fb565b5b60006200198f858286016200194e565b9250506020620019a2858286016200194e565b9150509250929050565b600082825260208201905092915050565b7f4d41494e5441494e45525f524f4c450000000000000000000000000000000000600082015250565b6000620019f5600f83620019ac565b915062001a0282620019bd565b602082019050919050565b6000602082019050818103600083015262001a2881620019e6565b9050919050565b7f5452454153555245525f524f4c45000000000000000000000000000000000000600082015250565b600062001a67600e83620019ac565b915062001a748262001a2f565b602082019050919050565b6000602082019050818103600083015262001a9a8162001a58565b9050919050565b7f535452415445474953545f524f4c450000000000000000000000000000000000600082015250565b600062001ad9600f83620019ac565b915062001ae68262001aa1565b602082019050919050565b6000602082019050818103600083015262001b0c8162001aca565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4c69624469616d6f6e644375743a20496e636f7272656374204661636574437560008201527f74416374696f6e00000000000000000000000000000000000000000000000000602082015250565b600062001bfe602783620019ac565b915062001c0b8262001ba0565b604082019050919050565b6000602082019050818103600083015262001c318162001bef565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000819050919050565b600062001c7e8262001c67565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820362001cb35762001cb262001c38565b5b600182019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b62001cf58162001920565b82525050565b6003811062001d0f5762001d0e62001b71565b5b50565b600081905062001d228262001cfb565b919050565b600062001d348262001d12565b9050919050565b62001d468162001d27565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b62001daf8162001d78565b82525050565b600062001dc3838362001da4565b60208301905092915050565b6000602082019050919050565b600062001de98262001d4c565b62001df5818562001d57565b935062001e028362001d68565b8060005b8381101562001e3957815162001e1d888262001db5565b975062001e2a8362001dcf565b92505060018101905062001e06565b5085935050505092915050565b600060608301600083015162001e60600086018262001cea565b50602083015162001e75602086018262001d3b565b506040830151848203604086015262001e8f828262001ddc565b9150508091505092915050565b600062001eaa838362001e46565b905092915050565b6000602082019050919050565b600062001ecc8262001cbe565b62001ed8818562001cc9565b93508360208202850162001eec8562001cda565b8060005b8581101562001f2e578484038952815162001f0c858262001e9c565b945062001f198362001eb2565b925060208a0199505060018101905062001ef0565b50829750879550505050505092915050565b62001f4b8162001920565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b8381101562001f8d57808201518184015260208101905062001f70565b60008484015250505050565b6000601f19601f8301169050919050565b600062001fb78262001f51565b62001fc3818562001f5c565b935062001fd581856020860162001f6d565b62001fe08162001f99565b840191505092915050565b6000606082019050818103600083015262002007818662001ebf565b905062002018602083018562001f40565b81810360408301526200202c818462001faa565b9050949350505050565b7f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660008201527f6163657420746f20637574000000000000000000000000000000000000000000602082015250565b600062002094602b83620019ac565b9150620020a18262002036565b604082019050919050565b60006020820190508181036000830152620020c78162002085565b9050919050565b7f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260008201527f6520616464726573732830290000000000000000000000000000000000000000602082015250565b60006200212c602c83620019ac565b91506200213982620020ce565b604082019050919050565b600060208201905081810360008301526200215f816200211d565b9050919050565b7f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f60008201527f6e207468617420616c7265616479206578697374730000000000000000000000602082015250565b6000620021c4603583620019ac565b9150620021d18262002166565b604082019050919050565b60006020820190508181036000830152620021f781620021b5565b9050919050565b60006bffffffffffffffffffffffff82169050919050565b60006200222382620021fe565b91506bffffffffffffffffffffffff820362002244576200224362001c38565b5b600182019050919050565b7f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60008201527f6374696f6e20776974682073616d652066756e6374696f6e0000000000000000602082015250565b6000620022ad603883620019ac565b9150620022ba826200224f565b604082019050919050565b60006020820190508181036000830152620022e0816200229e565b9050919050565b7f4c69624469616d6f6e644375743a2052656d6f7665206661636574206164647260008201527f657373206d757374206265206164647265737328302900000000000000000000602082015250565b600062002345603683620019ac565b91506200235282620022e7565b604082019050919050565b60006020820190508181036000830152620023788162002336565b9050919050565b600081905092915050565b6000620023978262001f51565b620023a381856200237f565b9350620023b581856020860162001f6d565b80840191505092915050565b6000620023cf82846200238a565b915081905092915050565b6000604082019050620023f1600083018562001f40565b818103602083015262002405818462001faa565b90509392505050565b7f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360008201527f74696f6e207468617420646f65736e2774206578697374000000000000000000602082015250565b60006200246c603783620019ac565b915062002479826200240e565b604082019050919050565b600060208201905081810360008301526200249f816200245d565b9050919050565b7f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560008201527f7461626c652066756e6374696f6e000000000000000000000000000000000000602082015250565b600062002504602e83620019ac565b91506200251182620024a6565b604082019050919050565b600060208201905081810360008301526200253781620024f5565b9050919050565b60006200254b8262001c67565b9150620025588362001c67565b925082820390508181111562002573576200257262001c38565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600081519050919050565b6000620025c082620025a8565b620025cc8185620019ac565b9350620025de81856020860162001f6d565b620025e98162001f99565b840191505092915050565b60006020820190508181036000830152620026108184620025b3565b905092915050565b6121a580620026286000396000f3fe60806040523661000b57005b6000807fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c9050809150600082600001600080357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610141576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161013890611693565b60405180910390fd5b3660008037600080366000845af43d6000803e8060008114610162573d6000f35b3d6000fd5b61017182826103a4565b5050565b60005b8351811015610359576000848281518110610196576101956116b3565b5b6020026020010151602001519050600060028111156101b8576101b76116e2565b5b8160028111156101cb576101ca6116e2565b5b0361021b576102168583815181106101e6576101e56116b3565b5b602002602001015160000151868481518110610205576102046116b3565b5b602002602001015160400151610487565b610345565b6001600281111561022f5761022e6116e2565b5b816002811115610242576102416116e2565b5b036102925761028d85838151811061025d5761025c6116b3565b5b60200260200101516000015186848151811061027c5761027b6116b3565b5b6020026020010151604001516106fe565b610344565b6002808111156102a5576102a46116e2565b5b8160028111156102b8576102b76116e2565b5b03610308576103038583815181106102d3576102d26116b3565b5b6020026020010151600001518684815181106102f2576102f16116b3565b5b60200260200101516040015161097f565b610343565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161033a90611783565b60405180910390fd5b5b5b508080610351906117dc565b915050610178565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb67383838360405161038d93929190611b48565b60405180910390a161039f8282610b0a565b505050565b6103ae8282610c2c565b6104835760016103bc610ca0565b600001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b60008151116104cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104c290611bff565b60405180910390fd5b60006104d5610ccd565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610546576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053d90611c91565b60405180910390fd5b60008160010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054905090506000816bffffffffffffffffffffffff16036105b3576105b28285610cfa565b5b60005b83518110156106f75760008482815181106105d4576105d36116b3565b5b602002602001015190506000846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146106c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106bf90611d23565b60405180910390fd5b6106d48583868a610dd5565b83806106df90611d5b565b945050505080806106ef906117dc565b9150506105b6565b5050505050565b6000815111610742576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073990611bff565b60405180910390fd5b600061074c610ccd565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036107bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b490611c91565b60405180910390fd5b60008160010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054905090506000816bffffffffffffffffffffffff160361082a576108298285610cfa565b5b60005b835181101561097857600084828151811061084b5761084a6116b3565b5b602002602001015190506000846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361093e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093590611e01565b60405180910390fd5b610949858284610f82565b6109558583868a610dd5565b838061096090611d5b565b94505050508080610970906117dc565b91505061082d565b5050505050565b60008151116109c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ba90611bff565b60405180910390fd5b60006109cd610ccd565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610a3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3590611e93565b60405180910390fd5b60005b8251811015610b04576000838281518110610a5f57610a5e6116b3565b5b602002602001015190506000836000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050610aef848284610f82565b50508080610afc906117dc565b915050610a41565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160315610c2857610b6182604051806060016040528060288152602001612124602891396115e4565b6000808373ffffffffffffffffffffffffffffffffffffffff1683604051610b899190611eef565b600060405180830381855af49150503d8060008114610bc4576040519150601f19603f3d011682016040523d82523d6000602084013e610bc9565b606091505b509150915081610c2557600081511115610be65780518082602001fd5b83836040517f192105d7000000000000000000000000000000000000000000000000000000008152600401610c1c929190611f06565b60405180910390fd5b50505b5050565b6000610c36610ca0565b600001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000807f4cd15452b25e815d3f9d1a3c7edd985a178edf5eb3461a1acbf855517423d69490508091505090565b6000807fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90508091505090565b610d1c8160405180606001604052806024815260200161214c602491396115e4565b81600201805490508260010160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555081600201819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b81846000016000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508360010160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018390806001815401808255809150506001900390600052602060002090600891828204019190066004029091909190916101000a81548163ffffffff021916908360e01c021790555080846000016000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ff1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe890611fa8565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361105f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110569061203a565b60405180910390fd5b6000836000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff169050600060018560010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000180549050611136919061205a565b90508082146112ca5760008560010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018281548110611197576111966116b3565b5b90600052602060002090600891828204019190066004029054906101000a900460e01b9050808660010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018481548110611213576112126116b3565b5b90600052602060002090600891828204019190066004026101000a81548163ffffffff021916908360e01c021790555082866000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550505b8460010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000180548061131e5761131d61208e565b5b60019003818190600052602060002090600891828204019190066004026101000a81549063ffffffff02191690559055846000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a8154906bffffffffffffffffffffffff02191690555050600081036115dd57600060018660020180549050611408919061205a565b905060008660010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050818114611549576000876002018381548110611472576114716116b3565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050808860020183815481106114b6576114b56116b3565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818860010160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550505b8660020180548061155d5761155c61208e565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590558660010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000905550505b5050505050565b6000823b9050600081118290611630576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116279190612101565b60405180910390fd5b50505050565b600082825260208201905092915050565b7f4469616d6f6e643a2046756e6374696f6e20646f6573206e6f74206578697374600082015250565b600061167d602083611636565b915061168882611647565b602082019050919050565b600060208201905081810360008301526116ac81611670565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4c69624469616d6f6e644375743a20496e636f7272656374204661636574437560008201527f74416374696f6e00000000000000000000000000000000000000000000000000602082015250565b600061176d602783611636565b915061177882611711565b604082019050919050565b6000602082019050818103600083015261179c81611760565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000819050919050565b60006117e7826117d2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611819576118186117a3565b5b600182019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061187b82611850565b9050919050565b61188b81611870565b82525050565b600381106118a2576118a16116e2565b5b50565b60008190506118b382611891565b919050565b60006118c3826118a5565b9050919050565b6118d3816118b8565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61193a81611905565b82525050565b600061194c8383611931565b60208301905092915050565b6000602082019050919050565b6000611970826118d9565b61197a81856118e4565b9350611985836118f5565b8060005b838110156119b657815161199d8882611940565b97506119a883611958565b925050600181019050611989565b5085935050505092915050565b60006060830160008301516119db6000860182611882565b5060208301516119ee60208601826118ca565b5060408301518482036040860152611a068282611965565b9150508091505092915050565b6000611a1f83836119c3565b905092915050565b6000602082019050919050565b6000611a3f82611824565b611a49818561182f565b935083602082028501611a5b85611840565b8060005b85811015611a975784840389528151611a788582611a13565b9450611a8383611a27565b925060208a01995050600181019050611a5f565b50829750879550505050505092915050565b611ab281611870565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611af2578082015181840152602081019050611ad7565b60008484015250505050565b6000601f19601f8301169050919050565b6000611b1a82611ab8565b611b248185611ac3565b9350611b34818560208601611ad4565b611b3d81611afe565b840191505092915050565b60006060820190508181036000830152611b628186611a34565b9050611b716020830185611aa9565b8181036040830152611b838184611b0f565b9050949350505050565b7f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660008201527f6163657420746f20637574000000000000000000000000000000000000000000602082015250565b6000611be9602b83611636565b9150611bf482611b8d565b604082019050919050565b60006020820190508181036000830152611c1881611bdc565b9050919050565b7f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260008201527f6520616464726573732830290000000000000000000000000000000000000000602082015250565b6000611c7b602c83611636565b9150611c8682611c1f565b604082019050919050565b60006020820190508181036000830152611caa81611c6e565b9050919050565b7f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f60008201527f6e207468617420616c7265616479206578697374730000000000000000000000602082015250565b6000611d0d603583611636565b9150611d1882611cb1565b604082019050919050565b60006020820190508181036000830152611d3c81611d00565b9050919050565b60006bffffffffffffffffffffffff82169050919050565b6000611d6682611d43565b91506bffffffffffffffffffffffff8203611d8457611d836117a3565b5b600182019050919050565b7f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60008201527f6374696f6e20776974682073616d652066756e6374696f6e0000000000000000602082015250565b6000611deb603883611636565b9150611df682611d8f565b604082019050919050565b60006020820190508181036000830152611e1a81611dde565b9050919050565b7f4c69624469616d6f6e644375743a2052656d6f7665206661636574206164647260008201527f657373206d757374206265206164647265737328302900000000000000000000602082015250565b6000611e7d603683611636565b9150611e8882611e21565b604082019050919050565b60006020820190508181036000830152611eac81611e70565b9050919050565b600081905092915050565b6000611ec982611ab8565b611ed38185611eb3565b9350611ee3818560208601611ad4565b80840191505092915050565b6000611efb8284611ebe565b915081905092915050565b6000604082019050611f1b6000830185611aa9565b8181036020830152611f2d8184611b0f565b90509392505050565b7f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360008201527f74696f6e207468617420646f65736e2774206578697374000000000000000000602082015250565b6000611f92603783611636565b9150611f9d82611f36565b604082019050919050565b60006020820190508181036000830152611fc181611f85565b9050919050565b7f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560008201527f7461626c652066756e6374696f6e000000000000000000000000000000000000602082015250565b6000612024602e83611636565b915061202f82611fc8565b604082019050919050565b6000602082019050818103600083015261205381612017565b9050919050565b6000612065826117d2565b9150612070836117d2565b9250828203905081811115612088576120876117a3565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600081519050919050565b60006120d3826120bd565b6120dd8185611636565b93506120ed818560208601611ad4565b6120f681611afe565b840191505092915050565b6000602082019050818103600083015261211b81846120c8565b90509291505056fe4c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465a26469706673582212208b3b1a3b53acb7515ca97eae4d2b5b80bb4c46a44c8880c0968a1955e7fe61db64736f6c634300081200334c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465", + "deployedBytecode": "0x60806040523661000b57005b6000807fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c9050809150600082600001600080357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610141576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161013890611693565b60405180910390fd5b3660008037600080366000845af43d6000803e8060008114610162573d6000f35b3d6000fd5b61017182826103a4565b5050565b60005b8351811015610359576000848281518110610196576101956116b3565b5b6020026020010151602001519050600060028111156101b8576101b76116e2565b5b8160028111156101cb576101ca6116e2565b5b0361021b576102168583815181106101e6576101e56116b3565b5b602002602001015160000151868481518110610205576102046116b3565b5b602002602001015160400151610487565b610345565b6001600281111561022f5761022e6116e2565b5b816002811115610242576102416116e2565b5b036102925761028d85838151811061025d5761025c6116b3565b5b60200260200101516000015186848151811061027c5761027b6116b3565b5b6020026020010151604001516106fe565b610344565b6002808111156102a5576102a46116e2565b5b8160028111156102b8576102b76116e2565b5b03610308576103038583815181106102d3576102d26116b3565b5b6020026020010151600001518684815181106102f2576102f16116b3565b5b60200260200101516040015161097f565b610343565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161033a90611783565b60405180910390fd5b5b5b508080610351906117dc565b915050610178565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb67383838360405161038d93929190611b48565b60405180910390a161039f8282610b0a565b505050565b6103ae8282610c2c565b6104835760016103bc610ca0565b600001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b60008151116104cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104c290611bff565b60405180910390fd5b60006104d5610ccd565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610546576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053d90611c91565b60405180910390fd5b60008160010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054905090506000816bffffffffffffffffffffffff16036105b3576105b28285610cfa565b5b60005b83518110156106f75760008482815181106105d4576105d36116b3565b5b602002602001015190506000846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146106c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106bf90611d23565b60405180910390fd5b6106d48583868a610dd5565b83806106df90611d5b565b945050505080806106ef906117dc565b9150506105b6565b5050505050565b6000815111610742576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073990611bff565b60405180910390fd5b600061074c610ccd565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036107bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b490611c91565b60405180910390fd5b60008160010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054905090506000816bffffffffffffffffffffffff160361082a576108298285610cfa565b5b60005b835181101561097857600084828151811061084b5761084a6116b3565b5b602002602001015190506000846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361093e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093590611e01565b60405180910390fd5b610949858284610f82565b6109558583868a610dd5565b838061096090611d5b565b94505050508080610970906117dc565b91505061082d565b5050505050565b60008151116109c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ba90611bff565b60405180910390fd5b60006109cd610ccd565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610a3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3590611e93565b60405180910390fd5b60005b8251811015610b04576000838281518110610a5f57610a5e6116b3565b5b602002602001015190506000836000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050610aef848284610f82565b50508080610afc906117dc565b915050610a41565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160315610c2857610b6182604051806060016040528060288152602001612124602891396115e4565b6000808373ffffffffffffffffffffffffffffffffffffffff1683604051610b899190611eef565b600060405180830381855af49150503d8060008114610bc4576040519150601f19603f3d011682016040523d82523d6000602084013e610bc9565b606091505b509150915081610c2557600081511115610be65780518082602001fd5b83836040517f192105d7000000000000000000000000000000000000000000000000000000008152600401610c1c929190611f06565b60405180910390fd5b50505b5050565b6000610c36610ca0565b600001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000807f4cd15452b25e815d3f9d1a3c7edd985a178edf5eb3461a1acbf855517423d69490508091505090565b6000807fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90508091505090565b610d1c8160405180606001604052806024815260200161214c602491396115e4565b81600201805490508260010160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555081600201819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b81846000016000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508360010160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018390806001815401808255809150506001900390600052602060002090600891828204019190066004029091909190916101000a81548163ffffffff021916908360e01c021790555080846000016000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ff1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe890611fa8565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361105f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110569061203a565b60405180910390fd5b6000836000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff169050600060018560010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000180549050611136919061205a565b90508082146112ca5760008560010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018281548110611197576111966116b3565b5b90600052602060002090600891828204019190066004029054906101000a900460e01b9050808660010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018481548110611213576112126116b3565b5b90600052602060002090600891828204019190066004026101000a81548163ffffffff021916908360e01c021790555082866000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550505b8460010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000180548061131e5761131d61208e565b5b60019003818190600052602060002090600891828204019190066004026101000a81549063ffffffff02191690559055846000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a8154906bffffffffffffffffffffffff02191690555050600081036115dd57600060018660020180549050611408919061205a565b905060008660010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050818114611549576000876002018381548110611472576114716116b3565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050808860020183815481106114b6576114b56116b3565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818860010160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550505b8660020180548061155d5761155c61208e565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590558660010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000905550505b5050505050565b6000823b9050600081118290611630576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116279190612101565b60405180910390fd5b50505050565b600082825260208201905092915050565b7f4469616d6f6e643a2046756e6374696f6e20646f6573206e6f74206578697374600082015250565b600061167d602083611636565b915061168882611647565b602082019050919050565b600060208201905081810360008301526116ac81611670565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4c69624469616d6f6e644375743a20496e636f7272656374204661636574437560008201527f74416374696f6e00000000000000000000000000000000000000000000000000602082015250565b600061176d602783611636565b915061177882611711565b604082019050919050565b6000602082019050818103600083015261179c81611760565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000819050919050565b60006117e7826117d2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611819576118186117a3565b5b600182019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061187b82611850565b9050919050565b61188b81611870565b82525050565b600381106118a2576118a16116e2565b5b50565b60008190506118b382611891565b919050565b60006118c3826118a5565b9050919050565b6118d3816118b8565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61193a81611905565b82525050565b600061194c8383611931565b60208301905092915050565b6000602082019050919050565b6000611970826118d9565b61197a81856118e4565b9350611985836118f5565b8060005b838110156119b657815161199d8882611940565b97506119a883611958565b925050600181019050611989565b5085935050505092915050565b60006060830160008301516119db6000860182611882565b5060208301516119ee60208601826118ca565b5060408301518482036040860152611a068282611965565b9150508091505092915050565b6000611a1f83836119c3565b905092915050565b6000602082019050919050565b6000611a3f82611824565b611a49818561182f565b935083602082028501611a5b85611840565b8060005b85811015611a975784840389528151611a788582611a13565b9450611a8383611a27565b925060208a01995050600181019050611a5f565b50829750879550505050505092915050565b611ab281611870565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611af2578082015181840152602081019050611ad7565b60008484015250505050565b6000601f19601f8301169050919050565b6000611b1a82611ab8565b611b248185611ac3565b9350611b34818560208601611ad4565b611b3d81611afe565b840191505092915050565b60006060820190508181036000830152611b628186611a34565b9050611b716020830185611aa9565b8181036040830152611b838184611b0f565b9050949350505050565b7f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660008201527f6163657420746f20637574000000000000000000000000000000000000000000602082015250565b6000611be9602b83611636565b9150611bf482611b8d565b604082019050919050565b60006020820190508181036000830152611c1881611bdc565b9050919050565b7f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260008201527f6520616464726573732830290000000000000000000000000000000000000000602082015250565b6000611c7b602c83611636565b9150611c8682611c1f565b604082019050919050565b60006020820190508181036000830152611caa81611c6e565b9050919050565b7f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f60008201527f6e207468617420616c7265616479206578697374730000000000000000000000602082015250565b6000611d0d603583611636565b9150611d1882611cb1565b604082019050919050565b60006020820190508181036000830152611d3c81611d00565b9050919050565b60006bffffffffffffffffffffffff82169050919050565b6000611d6682611d43565b91506bffffffffffffffffffffffff8203611d8457611d836117a3565b5b600182019050919050565b7f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60008201527f6374696f6e20776974682073616d652066756e6374696f6e0000000000000000602082015250565b6000611deb603883611636565b9150611df682611d8f565b604082019050919050565b60006020820190508181036000830152611e1a81611dde565b9050919050565b7f4c69624469616d6f6e644375743a2052656d6f7665206661636574206164647260008201527f657373206d757374206265206164647265737328302900000000000000000000602082015250565b6000611e7d603683611636565b9150611e8882611e21565b604082019050919050565b60006020820190508181036000830152611eac81611e70565b9050919050565b600081905092915050565b6000611ec982611ab8565b611ed38185611eb3565b9350611ee3818560208601611ad4565b80840191505092915050565b6000611efb8284611ebe565b915081905092915050565b6000604082019050611f1b6000830185611aa9565b8181036020830152611f2d8184611b0f565b90509392505050565b7f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360008201527f74696f6e207468617420646f65736e2774206578697374000000000000000000602082015250565b6000611f92603783611636565b9150611f9d82611f36565b604082019050919050565b60006020820190508181036000830152611fc181611f85565b9050919050565b7f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560008201527f7461626c652066756e6374696f6e000000000000000000000000000000000000602082015250565b6000612024602e83611636565b915061202f82611fc8565b604082019050919050565b6000602082019050818103600083015261205381612017565b9050919050565b6000612065826117d2565b9150612070836117d2565b9250828203905081811115612088576120876117a3565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600081519050919050565b60006120d3826120bd565b6120dd8185611636565b93506120ed818560208601611ad4565b6120f681611afe565b840191505092915050565b6000602082019050818103600083015261211b81846120c8565b90509291505056fe4c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465a26469706673582212208b3b1a3b53acb7515ca97eae4d2b5b80bb4c46a44c8880c0968a1955e7fe61db64736f6c63430008120033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/contracts/archives/OldFlow.sol/OldFlow.dbg.json b/contracts/artifacts/contracts/archives/OldFlow.sol/OldFlow.dbg.json new file mode 100644 index 0000000..78e15ba --- /dev/null +++ b/contracts/artifacts/contracts/archives/OldFlow.sol/OldFlow.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/a8f3edb970f736d3ccaffec4bae5df69.json" +} diff --git a/contracts/artifacts/contracts/archives/OldFlow.sol/OldFlow.json b/contracts/artifacts/contracts/archives/OldFlow.sol/OldFlow.json new file mode 100644 index 0000000..37457ef --- /dev/null +++ b/contracts/artifacts/contracts/archives/OldFlow.sol/OldFlow.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "OldFlow", + "sourceName": "contracts/archives/OldFlow.sol", + "abi": [], + "bytecode": "0x6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea2646970667358221220b19252acdce364dc853c8848bd342980d83f67b80b37f9ee69d3fcb33d92bad364736f6c63430008120033", + "deployedBytecode": "0x6080604052600080fdfea2646970667358221220b19252acdce364dc853c8848bd342980d83f67b80b37f9ee69d3fcb33d92bad364736f6c63430008120033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/contracts/archives/OldLibFlow.sol/OldLibFlow.dbg.json b/contracts/artifacts/contracts/archives/OldLibFlow.sol/OldLibFlow.dbg.json new file mode 100644 index 0000000..78e15ba --- /dev/null +++ b/contracts/artifacts/contracts/archives/OldLibFlow.sol/OldLibFlow.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/a8f3edb970f736d3ccaffec4bae5df69.json" +} diff --git a/contracts/artifacts/contracts/archives/OldLibFlow.sol/OldLibFlow.json b/contracts/artifacts/contracts/archives/OldLibFlow.sol/OldLibFlow.json new file mode 100644 index 0000000..84a7d1e --- /dev/null +++ b/contracts/artifacts/contracts/archives/OldLibFlow.sol/OldLibFlow.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "OldLibFlow", + "sourceName": "contracts/archives/OldLibFlow.sol", + "abi": [], + "bytecode": "0x60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122075f27bd66156c1d7f362cb6eba8d581ed219d767ec19871c06f16e06636178bf64736f6c63430008120033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122075f27bd66156c1d7f362cb6eba8d581ed219d767ec19871c06f16e06636178bf64736f6c63430008120033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/contracts/facets/core/Automate.sol/Automate.dbg.json b/contracts/artifacts/contracts/facets/core/Automate.sol/Automate.dbg.json new file mode 100644 index 0000000..34fe4dc --- /dev/null +++ b/contracts/artifacts/contracts/facets/core/Automate.sol/Automate.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/ba9437438ec2715393320ce18780bccb.json" +} diff --git a/contracts/artifacts/contracts/facets/core/Automate.sol/Automate.json b/contracts/artifacts/contracts/facets/core/Automate.sol/Automate.json new file mode 100644 index 0000000..7d89950 --- /dev/null +++ b/contracts/artifacts/contracts/facets/core/Automate.sol/Automate.json @@ -0,0 +1,103 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Automate", + "sourceName": "contracts/facets/core/Automate.sol", + "abi": [ + { + "inputs": [], + "name": "depositGelatoFunds", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "getGelatoAddresses", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getMinimumAppGelatoBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_autobot", + "type": "address" + } + ], + "name": "setGelatoContracts", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_value", + "type": "uint256" + } + ], + "name": "setMinimumAppGelatoBalance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "withdrawGelatoFunds", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b5061114f806100206000396000f3fe6080604052600436106100555760003560e01c80631674bc241461005a5780632e4b69451461006457806371ebf6f41461008d578063a6f9223d146100b6578063bb6bd765146100df578063f24a25de1461010e575b600080fd5b610062610139565b005b34801561007057600080fd5b5061008b60048036038101906100869190610a52565b610144565b005b34801561009957600080fd5b506100b460048036038101906100af9190610add565b61017d565b005b3480156100c257600080fd5b506100dd60048036038101906100d89190610a52565b6101b6565b005b3480156100eb57600080fd5b506100f46101ef565b604051610105959493929190610b19565b60405180910390f35b34801561011a57600080fd5b50610123610210565b6040516101309190610b7b565b60405180910390f35b6101423461021f565b565b61017160405160200161015690610bf3565b604051602081830303815290604052805190602001206102d1565b61017a816102dd565b50565b6101aa60405160200161018f90610bf3565b604051602081830303815290604052805190602001206102d1565b6101b3816102f0565b50565b6101e36040516020016101c890610c5f565b604051602081830303815290604052805190602001206102d1565b6101ec816104d8565b50565b60008060008060006101ff610589565b945094509450945094509091929394565b600061021a610650565b905090565b610227610663565b60010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c1461d57823073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee856040518563ffffffff1660e01b815260040161029c93929190610c7f565b6000604051808303818588803b1580156102b557600080fd5b505af11580156102c9573d6000803e3d6000fd5b505050505050565b6102da81610690565b50565b806102e6610663565b6003018190555050565b806102f9610663565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663573ea5756040518163ffffffff1660e01b8152600401602060405180830381865afa158015610385573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a99190610cf4565b6103b1610663565b60020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506103fa610663565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e60a32136040518163ffffffff1660e01b8152600401602060405180830381865afa158015610468573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061048c9190610d5f565b610494610663565b60010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6104e0610663565b60010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631c20fadd3373eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee846040518463ffffffff1660e01b815260040161055493929190610d9b565b600060405180830381600087803b15801561056e57600080fd5b505af1158015610582573d6000803e3d6000fd5b5050505050565b6000806000806000610599610663565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166105c5610663565b60010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166105f1610663565b60020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673c815db16d4be6ddf2685c201937905abf338f5d773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee945094509450945094509091929394565b600061065a610663565b60030154905090565b6000807fde06769ca6d80a022439e234eebb61c3801d652175b62f912d6f8cac7b881c6590508091505090565b61069a813361069d565b50565b6106a7828261073a565b610736576106cc8173ffffffffffffffffffffffffffffffffffffffff1660146107ae565b6106da8360001c60206107ae565b6040516020016106eb929190610edb565b6040516020818303038152906040526040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072d9190610f5f565b60405180910390fd5b5050565b60006107446109ea565b600001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6060600060028360026107c19190610fb0565b6107cb9190610ff2565b67ffffffffffffffff8111156107e4576107e3611026565b5b6040519080825280601f01601f1916602001820160405280156108165781602001600182028036833780820191505090505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061084e5761084d611055565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106108b2576108b1611055565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026108f29190610fb0565b6108fc9190610ff2565b90505b600181111561099c577f3031323334353637383961626364656600000000000000000000000000000000600f86166010811061093e5761093d611055565b5b1a60f81b82828151811061095557610954611055565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c94508061099590611084565b90506108ff565b50600084146109e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d7906110f9565b60405180910390fd5b8091505092915050565b6000807f4cd15452b25e815d3f9d1a3c7edd985a178edf5eb3461a1acbf855517423d69490508091505090565b600080fd5b6000819050919050565b610a2f81610a1c565b8114610a3a57600080fd5b50565b600081359050610a4c81610a26565b92915050565b600060208284031215610a6857610a67610a17565b5b6000610a7684828501610a3d565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610aaa82610a7f565b9050919050565b610aba81610a9f565b8114610ac557600080fd5b50565b600081359050610ad781610ab1565b92915050565b600060208284031215610af357610af2610a17565b5b6000610b0184828501610ac8565b91505092915050565b610b1381610a9f565b82525050565b600060a082019050610b2e6000830188610b0a565b610b3b6020830187610b0a565b610b486040830186610b0a565b610b556060830185610b0a565b610b626080830184610b0a565b9695505050505050565b610b7581610a1c565b82525050565b6000602082019050610b906000830184610b6c565b92915050565b600082825260208201905092915050565b7f535452415445474953545f524f4c450000000000000000000000000000000000600082015250565b6000610bdd600f83610b96565b9150610be882610ba7565b602082019050919050565b60006020820190508181036000830152610c0c81610bd0565b9050919050565b7f5452454153555245525f524f4c45000000000000000000000000000000000000600082015250565b6000610c49600e83610b96565b9150610c5482610c13565b602082019050919050565b60006020820190508181036000830152610c7881610c3c565b9050919050565b6000606082019050610c946000830186610b0a565b610ca16020830185610b0a565b610cae6040830184610b6c565b949350505050565b6000610cc182610a7f565b9050919050565b610cd181610cb6565b8114610cdc57600080fd5b50565b600081519050610cee81610cc8565b92915050565b600060208284031215610d0a57610d09610a17565b5b6000610d1884828501610cdf565b91505092915050565b6000610d2c82610a9f565b9050919050565b610d3c81610d21565b8114610d4757600080fd5b50565b600081519050610d5981610d33565b92915050565b600060208284031215610d7557610d74610a17565b5b6000610d8384828501610d4a565b91505092915050565b610d9581610cb6565b82525050565b6000606082019050610db06000830186610d8c565b610dbd6020830185610b0a565b610dca6040830184610b6c565b949350505050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000610e13601783610dd2565b9150610e1e82610ddd565b601782019050919050565b600081519050919050565b60005b83811015610e52578082015181840152602081019050610e37565b60008484015250505050565b6000610e6982610e29565b610e738185610dd2565b9350610e83818560208601610e34565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000610ec5601183610dd2565b9150610ed082610e8f565b601182019050919050565b6000610ee682610e06565b9150610ef28285610e5e565b9150610efd82610eb8565b9150610f098284610e5e565b91508190509392505050565b6000601f19601f8301169050919050565b6000610f3182610e29565b610f3b8185610b96565b9350610f4b818560208601610e34565b610f5481610f15565b840191505092915050565b60006020820190508181036000830152610f798184610f26565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610fbb82610a1c565b9150610fc683610a1c565b9250828202610fd481610a1c565b91508282048414831517610feb57610fea610f81565b5b5092915050565b6000610ffd82610a1c565b915061100883610a1c565b92508282019050808211156110205761101f610f81565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061108f82610a1c565b9150600082036110a2576110a1610f81565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b60006110e3602083610b96565b91506110ee826110ad565b602082019050919050565b60006020820190508181036000830152611112816110d6565b905091905056fea2646970667358221220a8e3bdc4351e1596162105b3ee5523910e922fd558df7c9a6af4ab9af898ea5b64736f6c63430008120033", + "deployedBytecode": "0x6080604052600436106100555760003560e01c80631674bc241461005a5780632e4b69451461006457806371ebf6f41461008d578063a6f9223d146100b6578063bb6bd765146100df578063f24a25de1461010e575b600080fd5b610062610139565b005b34801561007057600080fd5b5061008b60048036038101906100869190610a52565b610144565b005b34801561009957600080fd5b506100b460048036038101906100af9190610add565b61017d565b005b3480156100c257600080fd5b506100dd60048036038101906100d89190610a52565b6101b6565b005b3480156100eb57600080fd5b506100f46101ef565b604051610105959493929190610b19565b60405180910390f35b34801561011a57600080fd5b50610123610210565b6040516101309190610b7b565b60405180910390f35b6101423461021f565b565b61017160405160200161015690610bf3565b604051602081830303815290604052805190602001206102d1565b61017a816102dd565b50565b6101aa60405160200161018f90610bf3565b604051602081830303815290604052805190602001206102d1565b6101b3816102f0565b50565b6101e36040516020016101c890610c5f565b604051602081830303815290604052805190602001206102d1565b6101ec816104d8565b50565b60008060008060006101ff610589565b945094509450945094509091929394565b600061021a610650565b905090565b610227610663565b60010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c1461d57823073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee856040518563ffffffff1660e01b815260040161029c93929190610c7f565b6000604051808303818588803b1580156102b557600080fd5b505af11580156102c9573d6000803e3d6000fd5b505050505050565b6102da81610690565b50565b806102e6610663565b6003018190555050565b806102f9610663565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663573ea5756040518163ffffffff1660e01b8152600401602060405180830381865afa158015610385573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a99190610cf4565b6103b1610663565b60020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506103fa610663565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e60a32136040518163ffffffff1660e01b8152600401602060405180830381865afa158015610468573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061048c9190610d5f565b610494610663565b60010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6104e0610663565b60010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631c20fadd3373eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee846040518463ffffffff1660e01b815260040161055493929190610d9b565b600060405180830381600087803b15801561056e57600080fd5b505af1158015610582573d6000803e3d6000fd5b5050505050565b6000806000806000610599610663565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166105c5610663565b60010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166105f1610663565b60020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673c815db16d4be6ddf2685c201937905abf338f5d773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee945094509450945094509091929394565b600061065a610663565b60030154905090565b6000807fde06769ca6d80a022439e234eebb61c3801d652175b62f912d6f8cac7b881c6590508091505090565b61069a813361069d565b50565b6106a7828261073a565b610736576106cc8173ffffffffffffffffffffffffffffffffffffffff1660146107ae565b6106da8360001c60206107ae565b6040516020016106eb929190610edb565b6040516020818303038152906040526040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072d9190610f5f565b60405180910390fd5b5050565b60006107446109ea565b600001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6060600060028360026107c19190610fb0565b6107cb9190610ff2565b67ffffffffffffffff8111156107e4576107e3611026565b5b6040519080825280601f01601f1916602001820160405280156108165781602001600182028036833780820191505090505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061084e5761084d611055565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106108b2576108b1611055565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026108f29190610fb0565b6108fc9190610ff2565b90505b600181111561099c577f3031323334353637383961626364656600000000000000000000000000000000600f86166010811061093e5761093d611055565b5b1a60f81b82828151811061095557610954611055565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c94508061099590611084565b90506108ff565b50600084146109e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d7906110f9565b60405180910390fd5b8091505092915050565b6000807f4cd15452b25e815d3f9d1a3c7edd985a178edf5eb3461a1acbf855517423d69490508091505090565b600080fd5b6000819050919050565b610a2f81610a1c565b8114610a3a57600080fd5b50565b600081359050610a4c81610a26565b92915050565b600060208284031215610a6857610a67610a17565b5b6000610a7684828501610a3d565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610aaa82610a7f565b9050919050565b610aba81610a9f565b8114610ac557600080fd5b50565b600081359050610ad781610ab1565b92915050565b600060208284031215610af357610af2610a17565b5b6000610b0184828501610ac8565b91505092915050565b610b1381610a9f565b82525050565b600060a082019050610b2e6000830188610b0a565b610b3b6020830187610b0a565b610b486040830186610b0a565b610b556060830185610b0a565b610b626080830184610b0a565b9695505050505050565b610b7581610a1c565b82525050565b6000602082019050610b906000830184610b6c565b92915050565b600082825260208201905092915050565b7f535452415445474953545f524f4c450000000000000000000000000000000000600082015250565b6000610bdd600f83610b96565b9150610be882610ba7565b602082019050919050565b60006020820190508181036000830152610c0c81610bd0565b9050919050565b7f5452454153555245525f524f4c45000000000000000000000000000000000000600082015250565b6000610c49600e83610b96565b9150610c5482610c13565b602082019050919050565b60006020820190508181036000830152610c7881610c3c565b9050919050565b6000606082019050610c946000830186610b0a565b610ca16020830185610b0a565b610cae6040830184610b6c565b949350505050565b6000610cc182610a7f565b9050919050565b610cd181610cb6565b8114610cdc57600080fd5b50565b600081519050610cee81610cc8565b92915050565b600060208284031215610d0a57610d09610a17565b5b6000610d1884828501610cdf565b91505092915050565b6000610d2c82610a9f565b9050919050565b610d3c81610d21565b8114610d4757600080fd5b50565b600081519050610d5981610d33565b92915050565b600060208284031215610d7557610d74610a17565b5b6000610d8384828501610d4a565b91505092915050565b610d9581610cb6565b82525050565b6000606082019050610db06000830186610d8c565b610dbd6020830185610b0a565b610dca6040830184610b6c565b949350505050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000610e13601783610dd2565b9150610e1e82610ddd565b601782019050919050565b600081519050919050565b60005b83811015610e52578082015181840152602081019050610e37565b60008484015250505050565b6000610e6982610e29565b610e738185610dd2565b9350610e83818560208601610e34565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000610ec5601183610dd2565b9150610ed082610e8f565b601182019050919050565b6000610ee682610e06565b9150610ef28285610e5e565b9150610efd82610eb8565b9150610f098284610e5e565b91508190509392505050565b6000601f19601f8301169050919050565b6000610f3182610e29565b610f3b8185610b96565b9350610f4b818560208601610e34565b610f5481610f15565b840191505092915050565b60006020820190508181036000830152610f798184610f26565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610fbb82610a1c565b9150610fc683610a1c565b9250828202610fd481610a1c565b91508282048414831517610feb57610fea610f81565b5b5092915050565b6000610ffd82610a1c565b915061100883610a1c565b92508282019050808211156110205761101f610f81565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061108f82610a1c565b9150600082036110a2576110a1610f81565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b60006110e3602083610b96565b91506110ee826110ad565b602082019050919050565b60006020820190508181036000830152611112816110d6565b905091905056fea2646970667358221220a8e3bdc4351e1596162105b3ee5523910e922fd558df7c9a6af4ab9af898ea5b64736f6c63430008120033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/contracts/facets/core/Control.sol/Control.dbg.json b/contracts/artifacts/contracts/facets/core/Control.sol/Control.dbg.json new file mode 100644 index 0000000..a74f3f4 --- /dev/null +++ b/contracts/artifacts/contracts/facets/core/Control.sol/Control.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/a8f3edb970f736d3ccaffec4bae5df69.json" +} diff --git a/contracts/artifacts/contracts/facets/core/Control.sol/Control.json b/contracts/artifacts/contracts/facets/core/Control.sol/Control.json new file mode 100644 index 0000000..e038bcc --- /dev/null +++ b/contracts/artifacts/contracts/facets/core/Control.sol/Control.json @@ -0,0 +1,548 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Control", + "sourceName": "contracts/facets/core/Control.sol", + "abi": [ + { + "inputs": [], + "name": "ArrayLengthNotMatch", + "type": "error" + }, + { + "inputs": [], + "name": "ContractError", + "type": "error" + }, + { + "inputs": [], + "name": "InsufficientAssets", + "type": "error" + }, + { + "inputs": [], + "name": "InsufficientFeeBalance", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidBasisPoints", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidFlowRateBounds", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidSuperToken", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroValue", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_superToken", + "type": "address" + } + ], + "name": "addSuperToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "clearBPS", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_superToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "depositAsset", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_superToken", + "type": "address" + } + ], + "name": "getAssetTotal", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + }, + { + "internalType": "address", + "name": "_superToken", + "type": "address" + } + ], + "name": "getAssetUser", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_tag", + "type": "uint256" + } + ], + "name": "getBPSData", + "outputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + }, + { + "internalType": "uint96", + "name": "", + "type": "uint96" + }, + { + "internalType": "uint96", + "name": "", + "type": "uint96" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getBPSSize", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_superToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_nonce", + "type": "uint256" + } + ], + "name": "getControlData", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_superToken", + "type": "address" + } + ], + "name": "getFeeBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getMinimumEndDuration", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getMinimumLifespan", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_superToken", + "type": "address" + }, + { + "internalType": "int96", + "name": "_newFlowRate", + "type": "int96" + } + ], + "name": "getNewBufferedAppBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_superToken", + "type": "address" + } + ], + "name": "getNewControlNonce", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + } + ], + "name": "getSBPS", + "outputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getSTBufferDurationInSecond", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "isBPSEnabled", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_superToken", + "type": "address" + }, + { + "internalType": "int96", + "name": "_newFlowRate", + "type": "int96" + } + ], + "name": "isNewFlowRateAllowed", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_superToken", + "type": "address" + } + ], + "name": "isSuperTokensSupported", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "count", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_superToken", + "type": "address" + } + ], + "name": "realizeFeeBalance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_superToken", + "type": "address" + } + ], + "name": "removeSuperToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16[]", + "name": "_bpss", + "type": "uint16[]" + }, + { + "internalType": "uint96[]", + "name": "_flowRateLowerBounds", + "type": "uint96[]" + }, + { + "internalType": "uint96[]", + "name": "_flowRateUpperBounds", + "type": "uint96[]" + }, + { + "internalType": "uint256[]", + "name": "_tags", + "type": "uint256[]" + } + ], + "name": "setBPS", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_duration", + "type": "uint256" + } + ], + "name": "setMinimumEndDuration", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_duration", + "type": "uint256" + } + ], + "name": "setMinimumLifespan", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_bps", + "type": "uint16" + }, + { + "internalType": "address", + "name": "_user", + "type": "address" + } + ], + "name": "setSBPS", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_duration", + "type": "uint256" + } + ], + "name": "setSTBufferAmount", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "toggleBPS", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_superToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "withdrawAsset", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_superToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "withdrawFeeBalance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50613d17806100206000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c80637f69bcaf116100f9578063be83574711610097578063ca70e1d511610071578063ca70e1d51461051a578063cb857c8014610538578063d99d3b6914610554578063ebaae66114610570576101c4565b8063be8357471461048a578063c467cddc146104ba578063c78f6803146104ea576101c4565b8063a8771ab9116100d3578063a8771ab9146103f0578063acff47441461040e578063adefe35e1461043e578063b24190831461045a576101c4565b80637f69bcaf1461038657806383807889146103b6578063a86c8c7c146103d2576101c4565b80634ee43e46116101665780636ab1c734116101405780636ab1c73414610322578063703ab1b714610354578063795e34251461035e5780637ea195ad14610368576101c4565b80634ee43e46146102b8578063578dc59a146102e85780636812a17314610304576101c4565b8063245b6c93116101a2578063245b6c931461024857806338e4f0641461026457806346a5d04314610280578063487eb9391461029c576101c4565b80630b72660d146101c957806322c3a21f146101fc5780632357f2cf14610218575b600080fd5b6101e360048036038101906101de9190612d16565b61058c565b6040516101f39493929190612d74565b60405180910390f35b61021660048036038101906102119190612db9565b6105ad565b005b610232600480360381019061022d9190612db9565b6105e6565b60405161023f9190612e03565b60405180910390f35b610262600480360381019061025d9190612e1e565b6105f8565b005b61027e60048036038101906102799190612d16565b61063a565b005b61029a60048036038101906102959190612d16565b610648565b005b6102b660048036038101906102b19190612e1e565b61065f565b005b6102d260048036038101906102cd9190612e84565b6106a1565b6040516102df9190612ec4565b60405180910390f35b61030260048036038101906102fd9190612e1e565b6106b5565b005b61030c6106f7565b6040516103199190612ec4565b60405180910390f35b61033c60048036038101906103379190612e1e565b610706565b60405161034b93929190612f06565b60405180910390f35b61035c610721565b005b610366610758565b005b61037061078f565b60405161037d9190612ec4565b60405180910390f35b6103a0600480360381019061039b9190612db9565b61079e565b6040516103ad9190612ec4565b60405180910390f35b6103d060048036038101906103cb9190612db9565b6107b0565b005b6103da6107e9565b6040516103e79190612f58565b60405180910390f35b6103f86107f8565b6040516104059190612ec4565b60405180910390f35b61042860048036038101906104239190612db9565b610807565b6040516104359190612f58565b60405180910390f35b61045860048036038101906104539190612f73565b610819565b005b610474600480360381019061046f9190612db9565b610827565b6040516104819190612ec4565b60405180910390f35b6104a4600480360381019061049f9190612fb3565b610839565b6040516104b19190612ec4565b60405180910390f35b6104d460048036038101906104cf9190612e84565b61084d565b6040516104e19190612f58565b60405180910390f35b61050460048036038101906104ff9190612db9565b610861565b6040516105119190612ec4565b60405180910390f35b610522610873565b60405161052f9190612ec4565b60405180910390f35b610552600480360381019061054d919061332a565b610882565b005b61056e60048036038101906105699190613401565b610a4b565b005b61058a60048036038101906105859190612d16565b610a86565b005b60008060008061059c8686610ac1565b935093509350935092959194509250565b6105da6040516020016105bf9061349e565b60405160208183030381529060405280519060200120610c84565b6105e381610c90565b50565b60006105f182610cf4565b9050919050565b61062560405160200161060a9061349e565b60405160208183030381529060405280519060200120610c84565b61062e81610d54565b61063781610d91565b50565b6106448282610da4565b5050565b61065182610fe1565b61065b8282611023565b5050565b61068c6040516020016106719061349e565b60405160208183030381529060405280519060200120610c84565b61069581610d54565b61069e816111a3565b50565b60006106ad83836111b6565b905092915050565b6106e26040516020016106c79061349e565b60405160208183030381529060405280519060200120610c84565b6106eb81610d54565b6106f48161125c565b50565b600061070161126f565b905090565b600080600061071484611282565b9250925092509193909250565b61074e6040516020016107339061349e565b60405160208183030381529060405280519060200120610c84565b6107566112c4565b565b61078560405160200161076a9061349e565b60405160208183030381529060405280519060200120610c84565b61078d611302565b565b6000610799611382565b905090565b60006107a982611395565b9050919050565b6107dd6040516020016107c29061349e565b60405160208183030381529060405280519060200120610c84565b6107e6816113e7565b50565b60006107f3611442565b905090565b6000610802611462565b905090565b60006108128261147c565b9050919050565b61082382826114db565b5050565b600061083282611549565b9050919050565b6000610845838361159b565b905092915050565b6000610859838361162b565b905092915050565b600061086c826116bf565b9050919050565b600061087d611711565b905090565b6108af6040516020016108949061349e565b60405160208183030381529060405280519060200120610c84565b825184511415806108c257508151845114155b806108cf57508051845114155b15610906576040517fed882f7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8451811015610a44576001855161092091906134ed565b8110156109bd57836001826109359190613521565b8151811061094657610945613555565b5b60200260200101516bffffffffffffffffffffffff1683828151811061096f5761096e613555565b5b60200260200101516bffffffffffffffffffffffff16146109bc576040517f2245023300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b610a318582815181106109d3576109d2613555565b5b60200260200101518583815181106109ee576109ed613555565b5b6020026020010151858481518110610a0957610a08613555565b5b6020026020010151858581518110610a2457610a23613555565b5b6020026020010151611724565b8080610a3c90613584565b915050610909565b5050505050565b610a78604051602001610a5d9061349e565b60405160208183030381529060405280519060200120610c84565b610a8282826117ac565b5050565b610ab3604051602001610a9890613618565b60405160208183030381529060405280519060200120610c84565b610abd828261181c565b5050565b6000806000806000610ad1611982565b600c0160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000610b52611982565b600c0160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008881526020019081526020016000206001015490506000610bb3611982565b600c0160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008981526020019081526020016000206002015490506000610c14611982565b600c0160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a81526020019081526020016000206003015490508383838397509750975097505050505092959194509250565b610c8d816119af565b50565b6001610c9a611982565b60090160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000610cfe611982565b60040160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900461ffff169050919050565b60008111610d8e576040517f7c946ed700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b80610d9a611982565b6007018190555050565b80610dad611982565b600e0160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610e63576040517f96d8043300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80610e6c611982565b600e0160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ef891906134ed565b9250508190555080610f08611982565b600f0160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610f5791906134ed565b925050819055508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610f99929190613638565b6020604051808303816000875af1158015610fb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fdc919061368d565b505050565b610fea8161147c565b611020576040517f334ae3e600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b8173ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401611060939291906136ba565b6020604051808303816000875af115801561107f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a3919061368d565b50806110ad611982565b600e0160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546111399190613521565b9250508190555080611149611982565b600f0160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546111989190613521565b925050819055505050565b806111ac611982565b6008018190555050565b60008083905060006111e7848373ffffffffffffffffffffffffffffffffffffffff166119bc90919063ffffffff16565b90506000611214308473ffffffffffffffffffffffffffffffffffffffff16611a5090919063ffffffff16565b905061121e611982565b60080154858261122e91906136f1565b6bffffffffffffffffffffffff166112469190613755565b826112519190613521565b935050505092915050565b80611265611982565b6006018190555050565b6000611279611982565b60060154905090565b6000806000806112a585611294611982565b600001611ae490919063ffffffff16565b9050806000015181602001518260400151935093509350509193909250565b6112cc611982565b60050160009054906101000a900460ff16156112e6611982565b60050160006101000a81548160ff021916908315150217905550565b600061130c611462565b905060005b8181101561137e57600061134b6001611328611462565b61133291906134ed565b61133a611982565b600001611bb090919063ffffffff16565b905061136a81611359611982565b600001611bdb90919063ffffffff16565b50808061137690613584565b915050611311565b5050565b600061138c611982565b60080154905090565b600061139f611982565b600b0160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6113ef611982565b60090160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff021916905550565b600061144c611982565b60050160009054906101000a900460ff16905090565b600061147761146f611982565b600001611d74565b905090565b6000611486611982565b60090160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6114e782826001611d85565b6114ef611982565b600d0160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461153e9190613521565b925050819055505050565b6000611553611982565b600f0160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006115a5611982565b600e0160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000808373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016116679190613797565b602060405180830381865afa158015611684573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a891906137c7565b90506116b484846111b6565b811191505092915050565b60006116c9611982565b600d0160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600061171b611982565b60070154905090565b61172d84611e8b565b826bffffffffffffffffffffffff16826bffffffffffffffffffffffff161015611783576040517f2245023300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117a681858585611792611982565b600001611ee490949392919063ffffffff16565b50505050565b6117b582611e8b565b816117be611982565b60040160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548161ffff021916908361ffff1602179055505050565b80611825611982565b600d0160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561189e576040517ff00d49ea00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806118a7611982565b600d0160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118f691906134ed565b925050819055508173ffffffffffffffffffffffffffffffffffffffff166323b872dd3033846040518463ffffffff1660e01b815260040161193a939291906136ba565b6020604051808303816000875af1158015611959573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061197d919061368d565b505050565b6000807f2f7ed27098ecefe70183ee38ae4542dee65215b0786f6870871034402cfe2cc990508091505090565b6119b98133612115565b50565b6000806119c8846121b2565b9150508073ffffffffffffffffffffffffffffffffffffffff16638d997f6e85856040518363ffffffff1660e01b8152600401611a06929190613862565b602060405180830381865afa158015611a23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4791906137c7565b91505092915050565b600080611a5c846121b2565b9150508073ffffffffffffffffffffffffffffffffffffffff1663e8e7e2d185856040518363ffffffff1660e01b8152600401611a9a92919061388b565b602060405180830381865afa158015611ab7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611adb91906138c9565b91505092915050565b611aec612c2d565b8260010160008381526020019081526020016000206040518060600160405290816000820160009054906101000a900461ffff1661ffff1661ffff1681526020016000820160029054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160008201600e9054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681525050905092915050565b6000826000018281548110611bc857611bc7613555565b5b9060005260206000200154905092915050565b81600301600082815260200190815260200160002060009054906101000a900460ff1615611d705781600301600082815260200190815260200160002060006101000a81549060ff0219169055816001016000828152602001908152602001600020600080820160006101000a81549061ffff02191690556000820160026101000a8154906bffffffffffffffffffffffff021916905560008201600e6101000a8154906bffffffffffffffffffffffff021916905550506000826002016000838152602001908152602001600020549050600060018460000180549050611cc391906134ed565b90506000846000018281548110611cdd57611cdc613555565b5b9060005260206000200154905082856002016000838152602001908152602001600020819055508460020160008581526020019081526020016000206000905580856000018481548110611d3457611d33613555565b5b906000526020600020018190555084600001805480611d5657611d556138f6565b5b600190038181906000526020600020016000905590555050505b5050565b600081600001805490509050919050565b600080611d90611982565b9050600081600a0160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600080600090505b87811015611e7d57611dfd878285611df89190613521565b6123f3565b82611e089190613521565b91508515611e6a57600184600a0160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611e629190613521565b925050819055505b8080611e7590613584565b915050611de0565b508093505050509392505050565b606460ff168161ffff161080611eaa575061271061ffff168161ffff16115b15611ee1576040517f800c7e9100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b84600301600085815260200190815260200160002060009054906101000a900460ff1615611fd2578285600101600086815260200190815260200160002060000160006101000a81548161ffff021916908361ffff1602179055508185600101600086815260200190815260200160002060000160026101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555080856001016000868152602001908152602001600020600001600e6101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555061210e565b600185600301600086815260200190815260200160002060006101000a81548160ff0219169083151502179055508285600101600086815260200190815260200160002060000160006101000a81548161ffff021916908361ffff1602179055508185600101600086815260200190815260200160002060000160026101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555080856001016000868152602001908152602001600020600001600e6101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550846000018054905085600201600086815260200190815260200160002081905550846000018490806001815401808255809150506001900390600052602060002001600090919091909150555b5050505050565b61211f828261257a565b6121ae576121448173ffffffffffffffffffffffffffffffffffffffff1660146125ee565b6121528360001c60206125ee565b604051602001612163929190613a2e565b6040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a59190613aa1565b60405180910390fd5b5050565b6000807f65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea8375491507fb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a549050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361237457600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122d7578273ffffffffffffffffffffffffffffffffffffffff166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d49190613ad8565b91505b8173ffffffffffffffffffffffffffffffffffffffff1663b6d200de7fa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd36040518263ffffffff1660e01b81526004016123309190613b57565b602060405180830381865afa15801561234d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123719190613bb0565b90505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036123b1576123b0613bdd565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036123ee576123ed613bdd565b5b915091565b6000806123fe611982565b9050600081600c0160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000858152602001908152602001600020600201549050600082600c0160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600086815260200190815260200160002060030154905060008060006124c3898961282a565b93505092509250600083836124d89190613c0c565b6bffffffffffffffffffffffff169050600085146125155785856124fc91906134ed565b816125079190613755565b975050505050505050612574565b6000821461254257858261252991906134ed565b816125349190613755565b975050505050505050612574565b6040517fae1c061f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b92915050565b600061258461292f565b600001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6060600060028360026126019190613755565b61260b9190613521565b67ffffffffffffffff81111561262457612623613009565b5b6040519080825280601f01601f1916602001820160405280156126565781602001600182028036833780820191505090505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061268e5761268d613555565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106126f2576126f1613555565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026127329190613755565b61273c9190613521565b90505b60018111156127dc577f3031323334353637383961626364656600000000000000000000000000000000600f86166010811061277e5761277d613555565b5b1a60f81b82828151811061279557612794613555565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c9450806127d590613c4c565b905061273f565b5060008414612820576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281790613cc1565b60405180910390fd5b8091505092915050565b600080600080600061283a611982565b9050600081600c0160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600082600c0160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600089815260200190815260200160002060010154905061291b828a8361295c565b965096509650965050505092959194509250565b6000807f4cd15452b25e815d3f9d1a3c7edd985a178edf5eb3461a1acbf855517423d69490508091505090565b60008060008061296a612c00565b60010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600086815260200190815260200160002060000160009054906101000a9004600b0b612a11612c00565b60010160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878152602001908152602001600020600001600c9054906101000a90046bffffffffffffffffffffffff16612ac3612c00565b60010160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088815260200190815260200160002060010154612b5d612c00565b60010160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600089815260200190815260200160002060020154935093509350935093509350935093565b6000807f9cd9afe22fea86221d6e8117226b65bb0e2af8c4f5b8abf255fb0afcad4a3a9c90508091505090565b6040518060600160405280600061ffff16815260200160006bffffffffffffffffffffffff16815260200160006bffffffffffffffffffffffff1681525090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612cad82612c82565b9050919050565b612cbd81612ca2565b8114612cc857600080fd5b50565b600081359050612cda81612cb4565b92915050565b6000819050919050565b612cf381612ce0565b8114612cfe57600080fd5b50565b600081359050612d1081612cea565b92915050565b60008060408385031215612d2d57612d2c612c78565b5b6000612d3b85828601612ccb565b9250506020612d4c85828601612d01565b9150509250929050565b612d5f81612ca2565b82525050565b612d6e81612ce0565b82525050565b6000608082019050612d896000830187612d56565b612d966020830186612d65565b612da36040830185612d65565b612db06060830184612d65565b95945050505050565b600060208284031215612dcf57612dce612c78565b5b6000612ddd84828501612ccb565b91505092915050565b600061ffff82169050919050565b612dfd81612de6565b82525050565b6000602082019050612e186000830184612df4565b92915050565b600060208284031215612e3457612e33612c78565b5b6000612e4284828501612d01565b91505092915050565b600081600b0b9050919050565b612e6181612e4b565b8114612e6c57600080fd5b50565b600081359050612e7e81612e58565b92915050565b60008060408385031215612e9b57612e9a612c78565b5b6000612ea985828601612ccb565b9250506020612eba85828601612e6f565b9150509250929050565b6000602082019050612ed96000830184612d65565b92915050565b60006bffffffffffffffffffffffff82169050919050565b612f0081612edf565b82525050565b6000606082019050612f1b6000830186612df4565b612f286020830185612ef7565b612f356040830184612ef7565b949350505050565b60008115159050919050565b612f5281612f3d565b82525050565b6000602082019050612f6d6000830184612f49565b92915050565b60008060408385031215612f8a57612f89612c78565b5b6000612f9885828601612d01565b9250506020612fa985828601612ccb565b9150509250929050565b60008060408385031215612fca57612fc9612c78565b5b6000612fd885828601612ccb565b9250506020612fe985828601612ccb565b9150509250929050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61304182612ff8565b810181811067ffffffffffffffff821117156130605761305f613009565b5b80604052505050565b6000613073612c6e565b905061307f8282613038565b919050565b600067ffffffffffffffff82111561309f5761309e613009565b5b602082029050602081019050919050565b600080fd5b6130be81612de6565b81146130c957600080fd5b50565b6000813590506130db816130b5565b92915050565b60006130f46130ef84613084565b613069565b90508083825260208201905060208402830185811115613117576131166130b0565b5b835b81811015613140578061312c88826130cc565b845260208401935050602081019050613119565b5050509392505050565b600082601f83011261315f5761315e612ff3565b5b813561316f8482602086016130e1565b91505092915050565b600067ffffffffffffffff82111561319357613192613009565b5b602082029050602081019050919050565b6131ad81612edf565b81146131b857600080fd5b50565b6000813590506131ca816131a4565b92915050565b60006131e36131de84613178565b613069565b90508083825260208201905060208402830185811115613206576132056130b0565b5b835b8181101561322f578061321b88826131bb565b845260208401935050602081019050613208565b5050509392505050565b600082601f83011261324e5761324d612ff3565b5b813561325e8482602086016131d0565b91505092915050565b600067ffffffffffffffff82111561328257613281613009565b5b602082029050602081019050919050565b60006132a66132a184613267565b613069565b905080838252602082019050602084028301858111156132c9576132c86130b0565b5b835b818110156132f257806132de8882612d01565b8452602084019350506020810190506132cb565b5050509392505050565b600082601f83011261331157613310612ff3565b5b8135613321848260208601613293565b91505092915050565b6000806000806080858703121561334457613343612c78565b5b600085013567ffffffffffffffff81111561336257613361612c7d565b5b61336e8782880161314a565b945050602085013567ffffffffffffffff81111561338f5761338e612c7d565b5b61339b87828801613239565b935050604085013567ffffffffffffffff8111156133bc576133bb612c7d565b5b6133c887828801613239565b925050606085013567ffffffffffffffff8111156133e9576133e8612c7d565b5b6133f5878288016132fc565b91505092959194509250565b6000806040838503121561341857613417612c78565b5b6000613426858286016130cc565b925050602061343785828601612ccb565b9150509250929050565b600082825260208201905092915050565b7f535452415445474953545f524f4c450000000000000000000000000000000000600082015250565b6000613488600f83613441565b915061349382613452565b602082019050919050565b600060208201905081810360008301526134b78161347b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006134f882612ce0565b915061350383612ce0565b925082820390508181111561351b5761351a6134be565b5b92915050565b600061352c82612ce0565b915061353783612ce0565b925082820190508082111561354f5761354e6134be565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061358f82612ce0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036135c1576135c06134be565b5b600182019050919050565b7f5452454153555245525f524f4c45000000000000000000000000000000000000600082015250565b6000613602600e83613441565b915061360d826135cc565b602082019050919050565b60006020820190508181036000830152613631816135f5565b9050919050565b600060408201905061364d6000830185612d56565b61365a6020830184612d65565b9392505050565b61366a81612f3d565b811461367557600080fd5b50565b60008151905061368781613661565b92915050565b6000602082840312156136a3576136a2612c78565b5b60006136b184828501613678565b91505092915050565b60006060820190506136cf6000830186612d56565b6136dc6020830185612d56565b6136e96040830184612d65565b949350505050565b60006136fc82612e4b565b915061370783612e4b565b925082820190507fffffffffffffffffffffffffffffffffffffffff80000000000000000000000081126b7fffffffffffffffffffffff8213171561374f5761374e6134be565b5b92915050565b600061376082612ce0565b915061376b83612ce0565b925082820261377981612ce0565b915082820484148315176137905761378f6134be565b5b5092915050565b60006020820190506137ac6000830184612d56565b92915050565b6000815190506137c181612cea565b92915050565b6000602082840312156137dd576137dc612c78565b5b60006137eb848285016137b2565b91505092915050565b6000819050919050565b600061381961381461380f84612c82565b6137f4565b612c82565b9050919050565b600061382b826137fe565b9050919050565b600061383d82613820565b9050919050565b61384d81613832565b82525050565b61385c81612e4b565b82525050565b60006040820190506138776000830185613844565b6138846020830184613853565b9392505050565b60006040820190506138a06000830185613844565b6138ad6020830184612d56565b9392505050565b6000815190506138c381612e58565b92915050565b6000602082840312156138df576138de612c78565b5b60006138ed848285016138b4565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000613966601783613925565b915061397182613930565b601782019050919050565b600081519050919050565b60005b838110156139a557808201518184015260208101905061398a565b60008484015250505050565b60006139bc8261397c565b6139c68185613925565b93506139d6818560208601613987565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000613a18601183613925565b9150613a23826139e2565b601182019050919050565b6000613a3982613959565b9150613a4582856139b1565b9150613a5082613a0b565b9150613a5c82846139b1565b91508190509392505050565b6000613a738261397c565b613a7d8185613441565b9350613a8d818560208601613987565b613a9681612ff8565b840191505092915050565b60006020820190508181036000830152613abb8184613a68565b905092915050565b600081519050613ad281612cb4565b92915050565b600060208284031215613aee57613aed612c78565b5b6000613afc84828501613ac3565b91505092915050565b6000819050919050565b6000819050919050565b60008160001b9050919050565b6000613b41613b3c613b3784613b05565b613b19565b613b0f565b9050919050565b613b5181613b26565b82525050565b6000602082019050613b6c6000830184613b48565b92915050565b6000613b7d82612ca2565b9050919050565b613b8d81613b72565b8114613b9857600080fd5b50565b600081519050613baa81613b84565b92915050565b600060208284031215613bc657613bc5612c78565b5b6000613bd484828501613b9b565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000613c1782612edf565b9150613c2283612edf565b925082820390506bffffffffffffffffffffffff811115613c4657613c456134be565b5b92915050565b6000613c5782612ce0565b915060008203613c6a57613c696134be565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b6000613cab602083613441565b9150613cb682613c75565b602082019050919050565b60006020820190508181036000830152613cda81613c9e565b905091905056fea2646970667358221220c4e7572168b3d5831e83e3433ea938199032c5ffc0e0ea577795da4ca37ccd8364736f6c63430008120033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101c45760003560e01c80637f69bcaf116100f9578063be83574711610097578063ca70e1d511610071578063ca70e1d51461051a578063cb857c8014610538578063d99d3b6914610554578063ebaae66114610570576101c4565b8063be8357471461048a578063c467cddc146104ba578063c78f6803146104ea576101c4565b8063a8771ab9116100d3578063a8771ab9146103f0578063acff47441461040e578063adefe35e1461043e578063b24190831461045a576101c4565b80637f69bcaf1461038657806383807889146103b6578063a86c8c7c146103d2576101c4565b80634ee43e46116101665780636ab1c734116101405780636ab1c73414610322578063703ab1b714610354578063795e34251461035e5780637ea195ad14610368576101c4565b80634ee43e46146102b8578063578dc59a146102e85780636812a17314610304576101c4565b8063245b6c93116101a2578063245b6c931461024857806338e4f0641461026457806346a5d04314610280578063487eb9391461029c576101c4565b80630b72660d146101c957806322c3a21f146101fc5780632357f2cf14610218575b600080fd5b6101e360048036038101906101de9190612d16565b61058c565b6040516101f39493929190612d74565b60405180910390f35b61021660048036038101906102119190612db9565b6105ad565b005b610232600480360381019061022d9190612db9565b6105e6565b60405161023f9190612e03565b60405180910390f35b610262600480360381019061025d9190612e1e565b6105f8565b005b61027e60048036038101906102799190612d16565b61063a565b005b61029a60048036038101906102959190612d16565b610648565b005b6102b660048036038101906102b19190612e1e565b61065f565b005b6102d260048036038101906102cd9190612e84565b6106a1565b6040516102df9190612ec4565b60405180910390f35b61030260048036038101906102fd9190612e1e565b6106b5565b005b61030c6106f7565b6040516103199190612ec4565b60405180910390f35b61033c60048036038101906103379190612e1e565b610706565b60405161034b93929190612f06565b60405180910390f35b61035c610721565b005b610366610758565b005b61037061078f565b60405161037d9190612ec4565b60405180910390f35b6103a0600480360381019061039b9190612db9565b61079e565b6040516103ad9190612ec4565b60405180910390f35b6103d060048036038101906103cb9190612db9565b6107b0565b005b6103da6107e9565b6040516103e79190612f58565b60405180910390f35b6103f86107f8565b6040516104059190612ec4565b60405180910390f35b61042860048036038101906104239190612db9565b610807565b6040516104359190612f58565b60405180910390f35b61045860048036038101906104539190612f73565b610819565b005b610474600480360381019061046f9190612db9565b610827565b6040516104819190612ec4565b60405180910390f35b6104a4600480360381019061049f9190612fb3565b610839565b6040516104b19190612ec4565b60405180910390f35b6104d460048036038101906104cf9190612e84565b61084d565b6040516104e19190612f58565b60405180910390f35b61050460048036038101906104ff9190612db9565b610861565b6040516105119190612ec4565b60405180910390f35b610522610873565b60405161052f9190612ec4565b60405180910390f35b610552600480360381019061054d919061332a565b610882565b005b61056e60048036038101906105699190613401565b610a4b565b005b61058a60048036038101906105859190612d16565b610a86565b005b60008060008061059c8686610ac1565b935093509350935092959194509250565b6105da6040516020016105bf9061349e565b60405160208183030381529060405280519060200120610c84565b6105e381610c90565b50565b60006105f182610cf4565b9050919050565b61062560405160200161060a9061349e565b60405160208183030381529060405280519060200120610c84565b61062e81610d54565b61063781610d91565b50565b6106448282610da4565b5050565b61065182610fe1565b61065b8282611023565b5050565b61068c6040516020016106719061349e565b60405160208183030381529060405280519060200120610c84565b61069581610d54565b61069e816111a3565b50565b60006106ad83836111b6565b905092915050565b6106e26040516020016106c79061349e565b60405160208183030381529060405280519060200120610c84565b6106eb81610d54565b6106f48161125c565b50565b600061070161126f565b905090565b600080600061071484611282565b9250925092509193909250565b61074e6040516020016107339061349e565b60405160208183030381529060405280519060200120610c84565b6107566112c4565b565b61078560405160200161076a9061349e565b60405160208183030381529060405280519060200120610c84565b61078d611302565b565b6000610799611382565b905090565b60006107a982611395565b9050919050565b6107dd6040516020016107c29061349e565b60405160208183030381529060405280519060200120610c84565b6107e6816113e7565b50565b60006107f3611442565b905090565b6000610802611462565b905090565b60006108128261147c565b9050919050565b61082382826114db565b5050565b600061083282611549565b9050919050565b6000610845838361159b565b905092915050565b6000610859838361162b565b905092915050565b600061086c826116bf565b9050919050565b600061087d611711565b905090565b6108af6040516020016108949061349e565b60405160208183030381529060405280519060200120610c84565b825184511415806108c257508151845114155b806108cf57508051845114155b15610906576040517fed882f7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8451811015610a44576001855161092091906134ed565b8110156109bd57836001826109359190613521565b8151811061094657610945613555565b5b60200260200101516bffffffffffffffffffffffff1683828151811061096f5761096e613555565b5b60200260200101516bffffffffffffffffffffffff16146109bc576040517f2245023300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b610a318582815181106109d3576109d2613555565b5b60200260200101518583815181106109ee576109ed613555565b5b6020026020010151858481518110610a0957610a08613555565b5b6020026020010151858581518110610a2457610a23613555565b5b6020026020010151611724565b8080610a3c90613584565b915050610909565b5050505050565b610a78604051602001610a5d9061349e565b60405160208183030381529060405280519060200120610c84565b610a8282826117ac565b5050565b610ab3604051602001610a9890613618565b60405160208183030381529060405280519060200120610c84565b610abd828261181c565b5050565b6000806000806000610ad1611982565b600c0160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000610b52611982565b600c0160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008881526020019081526020016000206001015490506000610bb3611982565b600c0160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008981526020019081526020016000206002015490506000610c14611982565b600c0160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a81526020019081526020016000206003015490508383838397509750975097505050505092959194509250565b610c8d816119af565b50565b6001610c9a611982565b60090160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000610cfe611982565b60040160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900461ffff169050919050565b60008111610d8e576040517f7c946ed700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b80610d9a611982565b6007018190555050565b80610dad611982565b600e0160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610e63576040517f96d8043300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80610e6c611982565b600e0160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ef891906134ed565b9250508190555080610f08611982565b600f0160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610f5791906134ed565b925050819055508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610f99929190613638565b6020604051808303816000875af1158015610fb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fdc919061368d565b505050565b610fea8161147c565b611020576040517f334ae3e600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b8173ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401611060939291906136ba565b6020604051808303816000875af115801561107f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a3919061368d565b50806110ad611982565b600e0160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546111399190613521565b9250508190555080611149611982565b600f0160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546111989190613521565b925050819055505050565b806111ac611982565b6008018190555050565b60008083905060006111e7848373ffffffffffffffffffffffffffffffffffffffff166119bc90919063ffffffff16565b90506000611214308473ffffffffffffffffffffffffffffffffffffffff16611a5090919063ffffffff16565b905061121e611982565b60080154858261122e91906136f1565b6bffffffffffffffffffffffff166112469190613755565b826112519190613521565b935050505092915050565b80611265611982565b6006018190555050565b6000611279611982565b60060154905090565b6000806000806112a585611294611982565b600001611ae490919063ffffffff16565b9050806000015181602001518260400151935093509350509193909250565b6112cc611982565b60050160009054906101000a900460ff16156112e6611982565b60050160006101000a81548160ff021916908315150217905550565b600061130c611462565b905060005b8181101561137e57600061134b6001611328611462565b61133291906134ed565b61133a611982565b600001611bb090919063ffffffff16565b905061136a81611359611982565b600001611bdb90919063ffffffff16565b50808061137690613584565b915050611311565b5050565b600061138c611982565b60080154905090565b600061139f611982565b600b0160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6113ef611982565b60090160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff021916905550565b600061144c611982565b60050160009054906101000a900460ff16905090565b600061147761146f611982565b600001611d74565b905090565b6000611486611982565b60090160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6114e782826001611d85565b6114ef611982565b600d0160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461153e9190613521565b925050819055505050565b6000611553611982565b600f0160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006115a5611982565b600e0160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000808373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016116679190613797565b602060405180830381865afa158015611684573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a891906137c7565b90506116b484846111b6565b811191505092915050565b60006116c9611982565b600d0160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600061171b611982565b60070154905090565b61172d84611e8b565b826bffffffffffffffffffffffff16826bffffffffffffffffffffffff161015611783576040517f2245023300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117a681858585611792611982565b600001611ee490949392919063ffffffff16565b50505050565b6117b582611e8b565b816117be611982565b60040160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548161ffff021916908361ffff1602179055505050565b80611825611982565b600d0160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561189e576040517ff00d49ea00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806118a7611982565b600d0160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118f691906134ed565b925050819055508173ffffffffffffffffffffffffffffffffffffffff166323b872dd3033846040518463ffffffff1660e01b815260040161193a939291906136ba565b6020604051808303816000875af1158015611959573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061197d919061368d565b505050565b6000807f2f7ed27098ecefe70183ee38ae4542dee65215b0786f6870871034402cfe2cc990508091505090565b6119b98133612115565b50565b6000806119c8846121b2565b9150508073ffffffffffffffffffffffffffffffffffffffff16638d997f6e85856040518363ffffffff1660e01b8152600401611a06929190613862565b602060405180830381865afa158015611a23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4791906137c7565b91505092915050565b600080611a5c846121b2565b9150508073ffffffffffffffffffffffffffffffffffffffff1663e8e7e2d185856040518363ffffffff1660e01b8152600401611a9a92919061388b565b602060405180830381865afa158015611ab7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611adb91906138c9565b91505092915050565b611aec612c2d565b8260010160008381526020019081526020016000206040518060600160405290816000820160009054906101000a900461ffff1661ffff1661ffff1681526020016000820160029054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160008201600e9054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681525050905092915050565b6000826000018281548110611bc857611bc7613555565b5b9060005260206000200154905092915050565b81600301600082815260200190815260200160002060009054906101000a900460ff1615611d705781600301600082815260200190815260200160002060006101000a81549060ff0219169055816001016000828152602001908152602001600020600080820160006101000a81549061ffff02191690556000820160026101000a8154906bffffffffffffffffffffffff021916905560008201600e6101000a8154906bffffffffffffffffffffffff021916905550506000826002016000838152602001908152602001600020549050600060018460000180549050611cc391906134ed565b90506000846000018281548110611cdd57611cdc613555565b5b9060005260206000200154905082856002016000838152602001908152602001600020819055508460020160008581526020019081526020016000206000905580856000018481548110611d3457611d33613555565b5b906000526020600020018190555084600001805480611d5657611d556138f6565b5b600190038181906000526020600020016000905590555050505b5050565b600081600001805490509050919050565b600080611d90611982565b9050600081600a0160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600080600090505b87811015611e7d57611dfd878285611df89190613521565b6123f3565b82611e089190613521565b91508515611e6a57600184600a0160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611e629190613521565b925050819055505b8080611e7590613584565b915050611de0565b508093505050509392505050565b606460ff168161ffff161080611eaa575061271061ffff168161ffff16115b15611ee1576040517f800c7e9100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b84600301600085815260200190815260200160002060009054906101000a900460ff1615611fd2578285600101600086815260200190815260200160002060000160006101000a81548161ffff021916908361ffff1602179055508185600101600086815260200190815260200160002060000160026101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555080856001016000868152602001908152602001600020600001600e6101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555061210e565b600185600301600086815260200190815260200160002060006101000a81548160ff0219169083151502179055508285600101600086815260200190815260200160002060000160006101000a81548161ffff021916908361ffff1602179055508185600101600086815260200190815260200160002060000160026101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555080856001016000868152602001908152602001600020600001600e6101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550846000018054905085600201600086815260200190815260200160002081905550846000018490806001815401808255809150506001900390600052602060002001600090919091909150555b5050505050565b61211f828261257a565b6121ae576121448173ffffffffffffffffffffffffffffffffffffffff1660146125ee565b6121528360001c60206125ee565b604051602001612163929190613a2e565b6040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a59190613aa1565b60405180910390fd5b5050565b6000807f65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea8375491507fb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a549050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361237457600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122d7578273ffffffffffffffffffffffffffffffffffffffff166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d49190613ad8565b91505b8173ffffffffffffffffffffffffffffffffffffffff1663b6d200de7fa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd36040518263ffffffff1660e01b81526004016123309190613b57565b602060405180830381865afa15801561234d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123719190613bb0565b90505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036123b1576123b0613bdd565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036123ee576123ed613bdd565b5b915091565b6000806123fe611982565b9050600081600c0160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000858152602001908152602001600020600201549050600082600c0160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600086815260200190815260200160002060030154905060008060006124c3898961282a565b93505092509250600083836124d89190613c0c565b6bffffffffffffffffffffffff169050600085146125155785856124fc91906134ed565b816125079190613755565b975050505050505050612574565b6000821461254257858261252991906134ed565b816125349190613755565b975050505050505050612574565b6040517fae1c061f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b92915050565b600061258461292f565b600001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6060600060028360026126019190613755565b61260b9190613521565b67ffffffffffffffff81111561262457612623613009565b5b6040519080825280601f01601f1916602001820160405280156126565781602001600182028036833780820191505090505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061268e5761268d613555565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106126f2576126f1613555565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026127329190613755565b61273c9190613521565b90505b60018111156127dc577f3031323334353637383961626364656600000000000000000000000000000000600f86166010811061277e5761277d613555565b5b1a60f81b82828151811061279557612794613555565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c9450806127d590613c4c565b905061273f565b5060008414612820576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281790613cc1565b60405180910390fd5b8091505092915050565b600080600080600061283a611982565b9050600081600c0160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600082600c0160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600089815260200190815260200160002060010154905061291b828a8361295c565b965096509650965050505092959194509250565b6000807f4cd15452b25e815d3f9d1a3c7edd985a178edf5eb3461a1acbf855517423d69490508091505090565b60008060008061296a612c00565b60010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600086815260200190815260200160002060000160009054906101000a9004600b0b612a11612c00565b60010160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878152602001908152602001600020600001600c9054906101000a90046bffffffffffffffffffffffff16612ac3612c00565b60010160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088815260200190815260200160002060010154612b5d612c00565b60010160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600089815260200190815260200160002060020154935093509350935093509350935093565b6000807f9cd9afe22fea86221d6e8117226b65bb0e2af8c4f5b8abf255fb0afcad4a3a9c90508091505090565b6040518060600160405280600061ffff16815260200160006bffffffffffffffffffffffff16815260200160006bffffffffffffffffffffffff1681525090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612cad82612c82565b9050919050565b612cbd81612ca2565b8114612cc857600080fd5b50565b600081359050612cda81612cb4565b92915050565b6000819050919050565b612cf381612ce0565b8114612cfe57600080fd5b50565b600081359050612d1081612cea565b92915050565b60008060408385031215612d2d57612d2c612c78565b5b6000612d3b85828601612ccb565b9250506020612d4c85828601612d01565b9150509250929050565b612d5f81612ca2565b82525050565b612d6e81612ce0565b82525050565b6000608082019050612d896000830187612d56565b612d966020830186612d65565b612da36040830185612d65565b612db06060830184612d65565b95945050505050565b600060208284031215612dcf57612dce612c78565b5b6000612ddd84828501612ccb565b91505092915050565b600061ffff82169050919050565b612dfd81612de6565b82525050565b6000602082019050612e186000830184612df4565b92915050565b600060208284031215612e3457612e33612c78565b5b6000612e4284828501612d01565b91505092915050565b600081600b0b9050919050565b612e6181612e4b565b8114612e6c57600080fd5b50565b600081359050612e7e81612e58565b92915050565b60008060408385031215612e9b57612e9a612c78565b5b6000612ea985828601612ccb565b9250506020612eba85828601612e6f565b9150509250929050565b6000602082019050612ed96000830184612d65565b92915050565b60006bffffffffffffffffffffffff82169050919050565b612f0081612edf565b82525050565b6000606082019050612f1b6000830186612df4565b612f286020830185612ef7565b612f356040830184612ef7565b949350505050565b60008115159050919050565b612f5281612f3d565b82525050565b6000602082019050612f6d6000830184612f49565b92915050565b60008060408385031215612f8a57612f89612c78565b5b6000612f9885828601612d01565b9250506020612fa985828601612ccb565b9150509250929050565b60008060408385031215612fca57612fc9612c78565b5b6000612fd885828601612ccb565b9250506020612fe985828601612ccb565b9150509250929050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61304182612ff8565b810181811067ffffffffffffffff821117156130605761305f613009565b5b80604052505050565b6000613073612c6e565b905061307f8282613038565b919050565b600067ffffffffffffffff82111561309f5761309e613009565b5b602082029050602081019050919050565b600080fd5b6130be81612de6565b81146130c957600080fd5b50565b6000813590506130db816130b5565b92915050565b60006130f46130ef84613084565b613069565b90508083825260208201905060208402830185811115613117576131166130b0565b5b835b81811015613140578061312c88826130cc565b845260208401935050602081019050613119565b5050509392505050565b600082601f83011261315f5761315e612ff3565b5b813561316f8482602086016130e1565b91505092915050565b600067ffffffffffffffff82111561319357613192613009565b5b602082029050602081019050919050565b6131ad81612edf565b81146131b857600080fd5b50565b6000813590506131ca816131a4565b92915050565b60006131e36131de84613178565b613069565b90508083825260208201905060208402830185811115613206576132056130b0565b5b835b8181101561322f578061321b88826131bb565b845260208401935050602081019050613208565b5050509392505050565b600082601f83011261324e5761324d612ff3565b5b813561325e8482602086016131d0565b91505092915050565b600067ffffffffffffffff82111561328257613281613009565b5b602082029050602081019050919050565b60006132a66132a184613267565b613069565b905080838252602082019050602084028301858111156132c9576132c86130b0565b5b835b818110156132f257806132de8882612d01565b8452602084019350506020810190506132cb565b5050509392505050565b600082601f83011261331157613310612ff3565b5b8135613321848260208601613293565b91505092915050565b6000806000806080858703121561334457613343612c78565b5b600085013567ffffffffffffffff81111561336257613361612c7d565b5b61336e8782880161314a565b945050602085013567ffffffffffffffff81111561338f5761338e612c7d565b5b61339b87828801613239565b935050604085013567ffffffffffffffff8111156133bc576133bb612c7d565b5b6133c887828801613239565b925050606085013567ffffffffffffffff8111156133e9576133e8612c7d565b5b6133f5878288016132fc565b91505092959194509250565b6000806040838503121561341857613417612c78565b5b6000613426858286016130cc565b925050602061343785828601612ccb565b9150509250929050565b600082825260208201905092915050565b7f535452415445474953545f524f4c450000000000000000000000000000000000600082015250565b6000613488600f83613441565b915061349382613452565b602082019050919050565b600060208201905081810360008301526134b78161347b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006134f882612ce0565b915061350383612ce0565b925082820390508181111561351b5761351a6134be565b5b92915050565b600061352c82612ce0565b915061353783612ce0565b925082820190508082111561354f5761354e6134be565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061358f82612ce0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036135c1576135c06134be565b5b600182019050919050565b7f5452454153555245525f524f4c45000000000000000000000000000000000000600082015250565b6000613602600e83613441565b915061360d826135cc565b602082019050919050565b60006020820190508181036000830152613631816135f5565b9050919050565b600060408201905061364d6000830185612d56565b61365a6020830184612d65565b9392505050565b61366a81612f3d565b811461367557600080fd5b50565b60008151905061368781613661565b92915050565b6000602082840312156136a3576136a2612c78565b5b60006136b184828501613678565b91505092915050565b60006060820190506136cf6000830186612d56565b6136dc6020830185612d56565b6136e96040830184612d65565b949350505050565b60006136fc82612e4b565b915061370783612e4b565b925082820190507fffffffffffffffffffffffffffffffffffffffff80000000000000000000000081126b7fffffffffffffffffffffff8213171561374f5761374e6134be565b5b92915050565b600061376082612ce0565b915061376b83612ce0565b925082820261377981612ce0565b915082820484148315176137905761378f6134be565b5b5092915050565b60006020820190506137ac6000830184612d56565b92915050565b6000815190506137c181612cea565b92915050565b6000602082840312156137dd576137dc612c78565b5b60006137eb848285016137b2565b91505092915050565b6000819050919050565b600061381961381461380f84612c82565b6137f4565b612c82565b9050919050565b600061382b826137fe565b9050919050565b600061383d82613820565b9050919050565b61384d81613832565b82525050565b61385c81612e4b565b82525050565b60006040820190506138776000830185613844565b6138846020830184613853565b9392505050565b60006040820190506138a06000830185613844565b6138ad6020830184612d56565b9392505050565b6000815190506138c381612e58565b92915050565b6000602082840312156138df576138de612c78565b5b60006138ed848285016138b4565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000613966601783613925565b915061397182613930565b601782019050919050565b600081519050919050565b60005b838110156139a557808201518184015260208101905061398a565b60008484015250505050565b60006139bc8261397c565b6139c68185613925565b93506139d6818560208601613987565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000613a18601183613925565b9150613a23826139e2565b601182019050919050565b6000613a3982613959565b9150613a4582856139b1565b9150613a5082613a0b565b9150613a5c82846139b1565b91508190509392505050565b6000613a738261397c565b613a7d8185613441565b9350613a8d818560208601613987565b613a9681612ff8565b840191505092915050565b60006020820190508181036000830152613abb8184613a68565b905092915050565b600081519050613ad281612cb4565b92915050565b600060208284031215613aee57613aed612c78565b5b6000613afc84828501613ac3565b91505092915050565b6000819050919050565b6000819050919050565b60008160001b9050919050565b6000613b41613b3c613b3784613b05565b613b19565b613b0f565b9050919050565b613b5181613b26565b82525050565b6000602082019050613b6c6000830184613b48565b92915050565b6000613b7d82612ca2565b9050919050565b613b8d81613b72565b8114613b9857600080fd5b50565b600081519050613baa81613b84565b92915050565b600060208284031215613bc657613bc5612c78565b5b6000613bd484828501613b9b565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000613c1782612edf565b9150613c2283612edf565b925082820390506bffffffffffffffffffffffff811115613c4657613c456134be565b5b92915050565b6000613c5782612ce0565b915060008203613c6a57613c696134be565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b6000613cab602083613441565b9150613cb682613c75565b602082019050919050565b60006020820190508181036000830152613cda81613c9e565b905091905056fea2646970667358221220c4e7572168b3d5831e83e3433ea938199032c5ffc0e0ea577795da4ca37ccd8364736f6c63430008120033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/contracts/facets/core/Flow.sol/Flow.dbg.json b/contracts/artifacts/contracts/facets/core/Flow.sol/Flow.dbg.json new file mode 100644 index 0000000..a74f3f4 --- /dev/null +++ b/contracts/artifacts/contracts/facets/core/Flow.sol/Flow.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/a8f3edb970f736d3ccaffec4bae5df69.json" +} diff --git a/contracts/artifacts/contracts/facets/core/Flow.sol/Flow.json b/contracts/artifacts/contracts/facets/core/Flow.sol/Flow.json new file mode 100644 index 0000000..1715d65 --- /dev/null +++ b/contracts/artifacts/contracts/facets/core/Flow.sol/Flow.json @@ -0,0 +1,408 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Flow", + "sourceName": "contracts/facets/core/Flow.sol", + "abi": [ + { + "inputs": [], + "name": "CallerNotAutobot", + "type": "error" + }, + { + "inputs": [], + "name": "HasActiveFlow", + "type": "error" + }, + { + "inputs": [], + "name": "InsufficientAppGelatoBalance", + "type": "error" + }, + { + "inputs": [], + "name": "InsufficientAppSTBalance", + "type": "error" + }, + { + "inputs": [], + "name": "InsufficientFunds", + "type": "error" + }, + { + "inputs": [], + "name": "InsufficientLifespan1", + "type": "error" + }, + { + "inputs": [], + "name": "InsufficientLifespan2", + "type": "error" + }, + { + "inputs": [], + "name": "InsufficientLifespan3", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidBalance1", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidBalance2", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidSuperToken", + "type": "error" + }, + { + "inputs": [], + "name": "SessionNotStarted", + "type": "error" + }, + { + "inputs": [], + "name": "TooEarly", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_superToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_nonce", + "type": "uint256" + } + ], + "name": "closeFlow", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_superToken", + "type": "address" + }, + { + "internalType": "address", + "name": "_sender", + "type": "address" + }, + { + "internalType": "address", + "name": "_receiver", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_nonce", + "type": "uint256" + }, + { + "internalType": "int96", + "name": "_flowRate", + "type": "int96" + } + ], + "name": "decreaseFlow", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_superToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "depositSuperToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + }, + { + "internalType": "address", + "name": "_superToken", + "type": "address" + } + ], + "name": "getAmountFlowed", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_superToken", + "type": "address" + } + ], + "name": "getDepositTotal", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + }, + { + "internalType": "address", + "name": "_superToken", + "type": "address" + } + ], + "name": "getDepositUser", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + }, + { + "internalType": "address", + "name": "_superToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_nonce", + "type": "uint256" + } + ], + "name": "getFlowData", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + }, + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + }, + { + "internalType": "address", + "name": "_superToken", + "type": "address" + } + ], + "name": "getNewFlowNonce", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + }, + { + "internalType": "address", + "name": "_superToken", + "type": "address" + }, + { + "internalType": "int96", + "name": "_flowRate", + "type": "int96" + } + ], + "name": "getValidSafeLifespan", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + }, + { + "internalType": "address", + "name": "_superToken", + "type": "address" + } + ], + "name": "hasActiveFlow", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_viewer", + "type": "address" + }, + { + "internalType": "address", + "name": "_broadcaster", + "type": "address" + } + ], + "name": "isViewSessionAllowed", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_receiver", + "type": "address" + }, + { + "internalType": "address", + "name": "_superToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_lifespan", + "type": "uint256" + } + ], + "name": "openFlow", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_superToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "withdrawSuperToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50614fb4806100206000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806354bbc2ad1161008c578063c76474db11610066578063c76474db14610261578063dc5cd1d814610291578063dfc96e1b146102ad578063e32867fc146102c9576100cf565b806354bbc2ad146101cc5780639a5b5f9314610201578063a152ca6f14610231576100cf565b80630197c386146100d45780630dfa0b82146100f057806336fbb025146101205780633870f4a01461013c578063468240a91461016c578063521d3f3c1461019c575b600080fd5b6100ee60048036038101906100e99190613f40565b6102e5565b005b61010a60048036038101906101059190613fb9565b6102fc565b604051610117919061401b565b60405180910390f35b61013a60048036038101906101359190614036565b610312565b005b610156600480360381019061015191906140b1565b61032e565b604051610163919061401b565b60405180910390f35b610186600480360381019061018191906140b1565b610342565b604051610193919061410c565b60405180910390f35b6101b660048036038101906101b191906140b1565b610356565b6040516101c3919061401b565b60405180910390f35b6101e660048036038101906101e19190614127565b61036a565b6040516101f8969594939291906141a2565b60405180910390f35b61021b600480360381019061021691906140b1565b610396565b604051610228919061410c565b60405180910390f35b61024b600480360381019061024691906140b1565b6103aa565b604051610258919061401b565b60405180910390f35b61027b60048036038101906102769190614203565b6103be565b604051610288919061401b565b60405180910390f35b6102ab60048036038101906102a69190613f40565b6103d0565b005b6102c760048036038101906102c29190614127565b6103e7565b005b6102e360048036038101906102de9190613f40565b610db3565b005b6102ee826111d7565b6102f88282611219565b5050565b6000610309848484611399565b90509392505050565b61031a6114e6565b6103278585858585611578565b5050505050565b600061033a83836117d2565b905092915050565b600061034e83836118a5565b905092915050565b600061036283836119a5565b905092915050565b60008060008060008061037e898989611a35565b95509550955095509550955093975093979195509350565b60006103a28383611e1f565b905092915050565b60006103b68383612001565b905092915050565b60006103c982612091565b9050919050565b6103d9826120e3565b6103e38282612127565b5050565b6103f0826120e3565b6103fa3383612376565b61040261269e565b61040b826111d7565b60006104156126eb565b905060006104238585612718565b905060008260010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060010154036104f1576040517f3c2779e500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006104fb6127c9565b905060008360010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060000160009054906101000a9004600b0b90506105ab86826127f6565b60006105b93388888561283a565b905060006105c733896119a5565b9050888460010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550848460010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060020181905550600061073b6128bf565b9050600081600b0160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508a82600c0160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508682600c0160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000838152602001908152602001600020600101819055504282600c0160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060020181905550808660010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008581526020019081526020016000206000018190555061096f8a338d86896128ec565b60006040518060400160405280600267ffffffffffffffff81111561099757610996614230565b5b6040519080825280602002602001820160405280156109c55781602001602082028036833780820191505090505b508152602001600167ffffffffffffffff8111156109e6576109e5614230565b5b604051908082528060200260200182016040528015610a1957816020015b6060815260200190600190039081610a045790505b50815250905060018160000151600081518110610a3957610a3861425f565b5b60200260200101906003811115610a5357610a5261428e565b5b90816003811115610a6757610a6661428e565b5b8152505060038160000151600181518110610a8557610a8461425f565b5b60200260200101906003811115610a9f57610a9e61428e565b5b90816003811115610ab357610ab261428e565b5b81525050610acc8542610ac691906142ec565b86612a3b565b8160200151600081518110610ae457610ae361425f565b5b602002602001018190525060006336fbb02560e01b8c338f888b604051602401610b1295949392919061432f565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050610b79612a67565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633323b46730838560006040518563ffffffff1660e01b8152600401610bdc9493929190614659565b6020604051808303816000875af1158015610bfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1f91906146d8565b8860010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008781526020019081526020016000206005018190555060018860000160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d4491906142ec565b92505081905550600184600b0160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d9d91906142ec565b9250508190555050505050505050505050505050565b6000610dbd6127c9565b90506000610dc96128bf565b600701548260010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085815260200190815260200160002060030154610e6a91906142ec565b905080421015610ea6576040517f085de62500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610eae612a67565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ee8ca3b58360010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000868152602001908152602001600020600501546040518263ffffffff1660e01b8152600401610f9c9190614705565b600060405180830381600087803b158015610fb657600080fd5b505af1158015610fca573d6000803e3d6000fd5b5050505060008260010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008360010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008681526020019081526020016000206002015490506111cf8633848861112b6126eb565b60010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087815260200190815260200160002060000160009054906101000a9004600b0b611578565b505050505050565b6111e081612a94565b611216576040517f334ae3e600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b8173ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b815260040161125693929190614720565b6020604051808303816000875af1158015611275573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112999190614783565b50806112a36127c9565b60020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461132f91906142ec565b925050819055508061133f6127c9565b60030160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461138e91906142ec565b925050819055505050565b600080826bffffffffffffffffffffffff166113b36127c9565b60020160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461143b91906147df565b905060006114476128bf565b90508060060154821015611487576040517fcdd3529e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008160060154836114999190614810565b905081600701548110156114d9576040517f6c451f0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8093505050509392505050565b6114ee612a67565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611576576040517fb5e0b29200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600085905060006115aa30868473ffffffffffffffffffffffffffffffffffffffff16612af39092919063ffffffff16565b9050600083826115ba9190614844565b600b0b136115f3576115ed30868473ffffffffffffffffffffffffffffffffffffffff16612b939092919063ffffffff16565b5061162b565b6116298584836116039190614844565b8473ffffffffffffffffffffffffffffffffffffffff16612d469092919063ffffffff16565b505b426116346127c9565b60010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008681526020019081526020016000206004018190555060006116d36127c9565b60010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000868152602001908152602001600020600001549050426117706128bf565b600c0160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000838152602001908152602001600020600301819055505050505050505050565b60008060006117e18585612ef9565b905060008060008060006117f68a8a88611a35565b955050945094509450945060008061180f878c88612faa565b93505092505082156118245760009850611893565b600084146118585784846118389190614810565b826bffffffffffffffffffffffff1661185191906148a8565b9850611892565b6000811461188c57848161186c9190614810565b826bffffffffffffffffffffffff1661188591906148a8565b9850611891565b600098505b5b5b88995050505050505050505092915050565b6000806118b284846119a5565b905060008111156119995760006118d685856001856118d19190614810565b61324e565b935050505060006118e56127c9565b60010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001856119719190614810565b8152602001908152602001600020600401541480156119905750600081145b9250505061199f565b60009150505b92915050565b60006119af6127c9565b60000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600080600080600080611a466127c9565b60010160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611b006127c9565b60010160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600089815260200190815260200160002060020154611b9a6127c9565b60010160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a815260200190815260200160002060030154611c346127c9565b60010160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008b815260200190815260200160002060040154611cce6127c9565b60010160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c815260200190815260200160002060050154611d686127c9565b60010160008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d815260200190815260200160002060060160009054906101000a900460ff1695509550955095509550955093975093979195509350565b6000806000611e2d846133cd565b915091506000821480611e4257506000815111155b15611e5257600092505050611ffb565b60005b8151811015611ff3576000611e8486848481518110611e7757611e7661425f565b5b6020026020010151612718565b9050600080611eae88868681518110611ea057611e9f61425f565b5b602002602001015185612faa565b935093505050858214611eca5760009650505050505050611ffb565b60008114611ee15760009650505050505050611ffb565b6000611f078a878781518110611efa57611ef961425f565b5b6020026020010151612ef9565b9050600080600080611f348e8b8b81518110611f2657611f2561425f565b5b602002602001015187611a35565b505093509350935093508c73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611f855760009b505050505050505050505050611ffb565b878314611fa05760009b505050505050505050505050611ffb565b8a821015611fbc5760009b505050505050505050505050611ffb565b60008114611fd85760009b505050505050505050505050611ffb565b50505050505050508080611feb906148ea565b915050611e55565b506001925050505b92915050565b600061200b6127c9565b60020160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600061209b6127c9565b60030160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6120ed33826118a5565b15612124576040517fd18923ab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6121313383612376565b600061213b6127c9565b60020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156121f5576040517f356680b700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816121fe6127c9565b60020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461228a9190614810565b925050819055508161229a6127c9565b60030160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546122e99190614810565b925050819055508273ffffffffffffffffffffffffffffffffffffffff166323b872dd3033856040518463ffffffff1660e01b815260040161232d93929190614720565b6020604051808303816000875af115801561234c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123709190614783565b50505050565b600061238283836117d2565b90508061238d6127c9565b60020160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124199190614810565b92505081905550806124296127c9565b60030160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124789190614810565b9250508190555060006124896127c9565b60020160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561253f576040517f0a2005fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006125496127c9565b60030160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156125c2576040517f2fe0888f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006125ce84846119a5565b905060008111156126985760016125e36127c9565b60010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060018461266f9190614810565b815260200190815260200160002060060160006101000a81548160ff0219169083151502179055505b50505050565b6126a6612a67565b600301546126b26134f9565b116126e9576040517fa426119900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6000807f9cd9afe22fea86221d6e8117226b65bb0e2af8c4f5b8abf255fb0afcad4a3a9c90508091505090565b6000806127236126eb565b60000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081146127bd576001816127b89190614810565b6127c0565b60005b91505092915050565b6000807f2da2adfb54fd91bfb31e0d805792077ddcd5b0427b14a56397e2f3cc190c883090508091505090565b61280082826135bb565b612836576040517f1824866a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b600080612848868685611399565b905060006128546128bf565b90508060070154816006015461286a91906142ec565b8510156128a3576040517f3661e75b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818510156128b157846128b3565b815b92505050949350505050565b6000807f2f7ed27098ecefe70183ee38ae4542dee65215b0786f6870871034402cfe2cc990508091505090565b6000859050600061291e30868473ffffffffffffffffffffffffffffffffffffffff16612af39092919063ffffffff16565b9050600081600b0b1361295c5761295685848473ffffffffffffffffffffffffffffffffffffffff1661364f9092919063ffffffff16565b50612994565b61299285848361296c9190614932565b8473ffffffffffffffffffffffffffffffffffffffff16612d469092919063ffffffff16565b505b4261299d6127c9565b60010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008681526020019081526020016000206003018190555050505050505050565b60608282604051602001612a509291906149c1565b604051602081830303815290604052905092915050565b6000807fde06769ca6d80a022439e234eebb61c3801d652175b62f912d6f8cac7b881c6590508091505090565b6000612a9e6128bf565b60090160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080612aff85613802565b9150508073ffffffffffffffffffffffffffffffffffffffff1663e6a1e8888686866040518463ffffffff1660e01b8152600401612b3f93929190614a49565b608060405180830381865afa158015612b5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b809190614aaa565b9091925090505080925050509392505050565b6000806000612ba186613a43565b915091508173ffffffffffffffffffffffffffffffffffffffff166339255d5b828373ffffffffffffffffffffffffffffffffffffffff1663b4b333c68a8a8a600067ffffffffffffffff811115612bfc57612bfb614230565b5b6040519080825280601f01601f191660200182016040528015612c2e5781602001600182028036833780820191505090505b50604051602401612c429493929190614b11565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050600067ffffffffffffffff811115612c9f57612c9e614230565b5b6040519080825280601f01601f191660200182016040528015612cd15781602001600182028036833780820191505090505b506040518463ffffffff1660e01b8152600401612cf093929190614b7e565b6000604051808303816000875af1158015612d0f573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190612d389190614cba565b506001925050509392505050565b6000806000612d5486613a43565b915091508173ffffffffffffffffffffffffffffffffffffffff166339255d5b828373ffffffffffffffffffffffffffffffffffffffff166350209a628a8a8a600067ffffffffffffffff811115612daf57612dae614230565b5b6040519080825280601f01601f191660200182016040528015612de15781602001600182028036833780820191505090505b50604051602401612df59493929190614d03565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050600067ffffffffffffffff811115612e5257612e51614230565b5b6040519080825280601f01601f191660200182016040528015612e845781602001600182028036833780820191505090505b506040518463ffffffff1660e01b8152600401612ea393929190614b7e565b6000604051808303816000875af1158015612ec2573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190612eeb9190614cba565b506001925050509392505050565b600080612f046127c9565b60000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008114612f9e57600181612f999190614810565b612fa1565b60005b91505092915050565b600080600080612fb86126eb565b60010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600086815260200190815260200160002060000160009054906101000a9004600b0b61305f6126eb565b60010160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878152602001908152602001600020600001600c9054906101000a90046bffffffffffffffffffffffff166131116126eb565b60010160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000888152602001908152602001600020600101546131ab6126eb565b60010160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600089815260200190815260200160002060020154935093509350935093509350935093565b600080600080600061325e6127c9565b905060008160010160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008260010160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008981526020019081526020016000206002015490506133b9828a83612faa565b965096509650965050505093509350935093565b600060606133d96126eb565b60020160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546134256126eb565b60020160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101808054806020026020016040519081016040528092919081815260200182805480156134e957602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161349f575b5050505050905091509150915091565b6000613503612a67565b60010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b47064c83073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6040518363ffffffff1660e01b8152600401613575929190614d4f565b602060405180830381865afa158015613592573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135b69190614d78565b905090565b6000808373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016135f79190614da5565b602060405180830381865afa158015613614573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136389190614d78565b90506136448484613cca565b811191505092915050565b600080600061365d86613a43565b915091508173ffffffffffffffffffffffffffffffffffffffff166339255d5b828373ffffffffffffffffffffffffffffffffffffffff166362fc305e8a8a8a600067ffffffffffffffff8111156136b8576136b7614230565b5b6040519080825280601f01601f1916602001820160405280156136ea5781602001600182028036833780820191505090505b506040516024016136fe9493929190614d03565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050600067ffffffffffffffff81111561375b5761375a614230565b5b6040519080825280601f01601f19166020018201604052801561378d5781602001600182028036833780820191505090505b506040518463ffffffff1660e01b81526004016137ac93929190614b7e565b6000604051808303816000875af11580156137cb573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906137f49190614cba565b506001925050509392505050565b6000807f65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea8375491507fb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a549050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036139c457600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613927578273ffffffffffffffffffffffffffffffffffffffff166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015613900573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139249190614dd5565b91505b8173ffffffffffffffffffffffffffffffffffffffff1663b6d200de7fa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd36040518263ffffffff1660e01b81526004016139809190614e4a565b602060405180830381865afa15801561399d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139c19190614ea3565b90505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613a0157613a00614ed0565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613a3e57613a3d614ed0565b5b915091565b6000807f65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea8375491507fb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a549050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613c4b57600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613b68578273ffffffffffffffffffffffffffffffffffffffff166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b659190614dd5565b91505b8173ffffffffffffffffffffffffffffffffffffffff1663b6d200de7fa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd36040518263ffffffff1660e01b8152600401613bc19190614e4a565b602060405180830381865afa158015613bde573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c029190614ea3565b9050817f65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea83755807fb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a555b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613c8857613c87614ed0565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613cc557613cc4614ed0565b5b915091565b6000808390506000613cfb848373ffffffffffffffffffffffffffffffffffffffff16613d7090919063ffffffff16565b90506000613d28308473ffffffffffffffffffffffffffffffffffffffff16613e0490919063ffffffff16565b9050613d326128bf565b600801548582613d429190614932565b6bffffffffffffffffffffffff16613d5a91906148a8565b82613d6591906142ec565b935050505092915050565b600080613d7c84613802565b9150508073ffffffffffffffffffffffffffffffffffffffff16638d997f6e85856040518363ffffffff1660e01b8152600401613dba929190614eff565b602060405180830381865afa158015613dd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dfb9190614d78565b91505092915050565b600080613e1084613802565b9150508073ffffffffffffffffffffffffffffffffffffffff1663e8e7e2d185856040518363ffffffff1660e01b8152600401613e4e929190614f28565b602060405180830381865afa158015613e6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e8f9190614f51565b91505092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613ed782613eac565b9050919050565b613ee781613ecc565b8114613ef257600080fd5b50565b600081359050613f0481613ede565b92915050565b6000819050919050565b613f1d81613f0a565b8114613f2857600080fd5b50565b600081359050613f3a81613f14565b92915050565b60008060408385031215613f5757613f56613ea2565b5b6000613f6585828601613ef5565b9250506020613f7685828601613f2b565b9150509250929050565b600081600b0b9050919050565b613f9681613f80565b8114613fa157600080fd5b50565b600081359050613fb381613f8d565b92915050565b600080600060608486031215613fd257613fd1613ea2565b5b6000613fe086828701613ef5565b9350506020613ff186828701613ef5565b925050604061400286828701613fa4565b9150509250925092565b61401581613f0a565b82525050565b6000602082019050614030600083018461400c565b92915050565b600080600080600060a0868803121561405257614051613ea2565b5b600061406088828901613ef5565b955050602061407188828901613ef5565b945050604061408288828901613ef5565b935050606061409388828901613f2b565b92505060806140a488828901613fa4565b9150509295509295909350565b600080604083850312156140c8576140c7613ea2565b5b60006140d685828601613ef5565b92505060206140e785828601613ef5565b9150509250929050565b60008115159050919050565b614106816140f1565b82525050565b600060208201905061412160008301846140fd565b92915050565b6000806000606084860312156141405761413f613ea2565b5b600061414e86828701613ef5565b935050602061415f86828701613ef5565b925050604061417086828701613f2b565b9150509250925092565b61418381613ecc565b82525050565b6000819050919050565b61419c81614189565b82525050565b600060c0820190506141b7600083018961417a565b6141c4602083018861400c565b6141d1604083018761400c565b6141de606083018661400c565b6141eb6080830185614193565b6141f860a08301846140fd565b979650505050505050565b60006020828403121561421957614218613ea2565b5b600061422784828501613ef5565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006142f782613f0a565b915061430283613f0a565b925082820190508082111561431a576143196142bd565b5b92915050565b61432981613f80565b82525050565b600060a082019050614344600083018861417a565b614351602083018761417a565b61435e604083018661417a565b61436b606083018561400c565b6143786080830184614320565b9695505050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156143bc5780820151818401526020810190506143a1565b60008484015250505050565b6000601f19601f8301169050919050565b60006143e482614382565b6143ee818561438d565b93506143fe81856020860161439e565b614407816143c8565b840191505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6004811061444f5761444e61428e565b5b50565b60008190506144608261443e565b919050565b600061447082614452565b9050919050565b61448081614465565b82525050565b60006144928383614477565b60208301905092915050565b6000602082019050919050565b60006144b682614412565b6144c0818561441d565b93506144cb8361442e565b8060005b838110156144fc5781516144e38882614486565b97506144ee8361449e565b9250506001810190506144cf565b5085935050505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600082825260208201905092915050565b600061455182614382565b61455b8185614535565b935061456b81856020860161439e565b614574816143c8565b840191505092915050565b600061458b8383614546565b905092915050565b6000602082019050919050565b60006145ab82614509565b6145b58185614514565b9350836020820285016145c785614525565b8060005b8581101561460357848403895281516145e4858261457f565b94506145ef83614593565b925060208a019950506001810190506145cb565b50829750879550505050505092915050565b6000604083016000830151848203600086015261463282826144ab565b9150506020830151848203602086015261464c82826145a0565b9150508091505092915050565b600060808201905061466e600083018761417a565b818103602083015261468081866143d9565b905081810360408301526146948185614615565b90506146a3606083018461417a565b95945050505050565b6146b581614189565b81146146c057600080fd5b50565b6000815190506146d2816146ac565b92915050565b6000602082840312156146ee576146ed613ea2565b5b60006146fc848285016146c3565b91505092915050565b600060208201905061471a6000830184614193565b92915050565b6000606082019050614735600083018661417a565b614742602083018561417a565b61474f604083018461400c565b949350505050565b614760816140f1565b811461476b57600080fd5b50565b60008151905061477d81614757565b92915050565b60006020828403121561479957614798613ea2565b5b60006147a78482850161476e565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006147ea82613f0a565b91506147f583613f0a565b925082614805576148046147b0565b5b828204905092915050565b600061481b82613f0a565b915061482683613f0a565b925082820390508181111561483e5761483d6142bd565b5b92915050565b600061484f82613f80565b915061485a83613f80565b925082820390506b7fffffffffffffffffffffff81137fffffffffffffffffffffffffffffffffffffffff800000000000000000000000821217156148a2576148a16142bd565b5b92915050565b60006148b382613f0a565b91506148be83613f0a565b92508282026148cc81613f0a565b915082820484148315176148e3576148e26142bd565b5b5092915050565b60006148f582613f0a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614927576149266142bd565b5b600182019050919050565b600061493d82613f80565b915061494883613f80565b925082820190507fffffffffffffffffffffffffffffffffffffffff80000000000000000000000081126b7fffffffffffffffffffffff821317156149905761498f6142bd565b5b92915050565b60006fffffffffffffffffffffffffffffffff82169050919050565b6149bb81614996565b82525050565b60006040820190506149d660008301856149b2565b6149e360208301846149b2565b9392505050565b6000819050919050565b6000614a0f614a0a614a0584613eac565b6149ea565b613eac565b9050919050565b6000614a21826149f4565b9050919050565b6000614a3382614a16565b9050919050565b614a4381614a28565b82525050565b6000606082019050614a5e6000830186614a3a565b614a6b602083018561417a565b614a78604083018461417a565b949350505050565b600081519050614a8f81613f14565b92915050565b600081519050614aa481613f8d565b92915050565b60008060008060808587031215614ac457614ac3613ea2565b5b6000614ad287828801614a80565b9450506020614ae387828801614a95565b9350506040614af487828801614a80565b9250506060614b0587828801614a80565b91505092959194509250565b6000608082019050614b266000830187614a3a565b614b33602083018661417a565b614b40604083018561417a565b8181036060830152614b5281846143d9565b905095945050505050565b6000614b6882614a16565b9050919050565b614b7881614b5d565b82525050565b6000606082019050614b936000830186614b6f565b8181036020830152614ba581856143d9565b90508181036040830152614bb981846143d9565b9050949350505050565b600080fd5b600080fd5b614bd6826143c8565b810181811067ffffffffffffffff82111715614bf557614bf4614230565b5b80604052505050565b6000614c08613e98565b9050614c148282614bcd565b919050565b600067ffffffffffffffff821115614c3457614c33614230565b5b614c3d826143c8565b9050602081019050919050565b6000614c5d614c5884614c19565b614bfe565b905082815260208101848484011115614c7957614c78614bc8565b5b614c8484828561439e565b509392505050565b600082601f830112614ca157614ca0614bc3565b5b8151614cb1848260208601614c4a565b91505092915050565b600060208284031215614cd057614ccf613ea2565b5b600082015167ffffffffffffffff811115614cee57614ced613ea7565b5b614cfa84828501614c8c565b91505092915050565b6000608082019050614d186000830187614a3a565b614d25602083018661417a565b614d326040830185614320565b8181036060830152614d4481846143d9565b905095945050505050565b6000604082019050614d64600083018561417a565b614d71602083018461417a565b9392505050565b600060208284031215614d8e57614d8d613ea2565b5b6000614d9c84828501614a80565b91505092915050565b6000602082019050614dba600083018461417a565b92915050565b600081519050614dcf81613ede565b92915050565b600060208284031215614deb57614dea613ea2565b5b6000614df984828501614dc0565b91505092915050565b6000819050919050565b60008160001b9050919050565b6000614e34614e2f614e2a84614e02565b614e0c565b614189565b9050919050565b614e4481614e19565b82525050565b6000602082019050614e5f6000830184614e3b565b92915050565b6000614e7082613ecc565b9050919050565b614e8081614e65565b8114614e8b57600080fd5b50565b600081519050614e9d81614e77565b92915050565b600060208284031215614eb957614eb8613ea2565b5b6000614ec784828501614e8e565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000604082019050614f146000830185614a3a565b614f216020830184614320565b9392505050565b6000604082019050614f3d6000830185614a3a565b614f4a602083018461417a565b9392505050565b600060208284031215614f6757614f66613ea2565b5b6000614f7584828501614a95565b9150509291505056fea26469706673582212201dce8b857275c446b38b2fd0190c291b939a9d8728ca09a3c4be594a1d5f303264736f6c63430008120033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c806354bbc2ad1161008c578063c76474db11610066578063c76474db14610261578063dc5cd1d814610291578063dfc96e1b146102ad578063e32867fc146102c9576100cf565b806354bbc2ad146101cc5780639a5b5f9314610201578063a152ca6f14610231576100cf565b80630197c386146100d45780630dfa0b82146100f057806336fbb025146101205780633870f4a01461013c578063468240a91461016c578063521d3f3c1461019c575b600080fd5b6100ee60048036038101906100e99190613f40565b6102e5565b005b61010a60048036038101906101059190613fb9565b6102fc565b604051610117919061401b565b60405180910390f35b61013a60048036038101906101359190614036565b610312565b005b610156600480360381019061015191906140b1565b61032e565b604051610163919061401b565b60405180910390f35b610186600480360381019061018191906140b1565b610342565b604051610193919061410c565b60405180910390f35b6101b660048036038101906101b191906140b1565b610356565b6040516101c3919061401b565b60405180910390f35b6101e660048036038101906101e19190614127565b61036a565b6040516101f8969594939291906141a2565b60405180910390f35b61021b600480360381019061021691906140b1565b610396565b604051610228919061410c565b60405180910390f35b61024b600480360381019061024691906140b1565b6103aa565b604051610258919061401b565b60405180910390f35b61027b60048036038101906102769190614203565b6103be565b604051610288919061401b565b60405180910390f35b6102ab60048036038101906102a69190613f40565b6103d0565b005b6102c760048036038101906102c29190614127565b6103e7565b005b6102e360048036038101906102de9190613f40565b610db3565b005b6102ee826111d7565b6102f88282611219565b5050565b6000610309848484611399565b90509392505050565b61031a6114e6565b6103278585858585611578565b5050505050565b600061033a83836117d2565b905092915050565b600061034e83836118a5565b905092915050565b600061036283836119a5565b905092915050565b60008060008060008061037e898989611a35565b95509550955095509550955093975093979195509350565b60006103a28383611e1f565b905092915050565b60006103b68383612001565b905092915050565b60006103c982612091565b9050919050565b6103d9826120e3565b6103e38282612127565b5050565b6103f0826120e3565b6103fa3383612376565b61040261269e565b61040b826111d7565b60006104156126eb565b905060006104238585612718565b905060008260010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060010154036104f1576040517f3c2779e500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006104fb6127c9565b905060008360010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060000160009054906101000a9004600b0b90506105ab86826127f6565b60006105b93388888561283a565b905060006105c733896119a5565b9050888460010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550848460010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060020181905550600061073b6128bf565b9050600081600b0160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508a82600c0160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508682600c0160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000838152602001908152602001600020600101819055504282600c0160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060020181905550808660010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008581526020019081526020016000206000018190555061096f8a338d86896128ec565b60006040518060400160405280600267ffffffffffffffff81111561099757610996614230565b5b6040519080825280602002602001820160405280156109c55781602001602082028036833780820191505090505b508152602001600167ffffffffffffffff8111156109e6576109e5614230565b5b604051908082528060200260200182016040528015610a1957816020015b6060815260200190600190039081610a045790505b50815250905060018160000151600081518110610a3957610a3861425f565b5b60200260200101906003811115610a5357610a5261428e565b5b90816003811115610a6757610a6661428e565b5b8152505060038160000151600181518110610a8557610a8461425f565b5b60200260200101906003811115610a9f57610a9e61428e565b5b90816003811115610ab357610ab261428e565b5b81525050610acc8542610ac691906142ec565b86612a3b565b8160200151600081518110610ae457610ae361425f565b5b602002602001018190525060006336fbb02560e01b8c338f888b604051602401610b1295949392919061432f565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050610b79612a67565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633323b46730838560006040518563ffffffff1660e01b8152600401610bdc9493929190614659565b6020604051808303816000875af1158015610bfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1f91906146d8565b8860010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008781526020019081526020016000206005018190555060018860000160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d4491906142ec565b92505081905550600184600b0160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d9d91906142ec565b9250508190555050505050505050505050505050565b6000610dbd6127c9565b90506000610dc96128bf565b600701548260010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085815260200190815260200160002060030154610e6a91906142ec565b905080421015610ea6576040517f085de62500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610eae612a67565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ee8ca3b58360010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000868152602001908152602001600020600501546040518263ffffffff1660e01b8152600401610f9c9190614705565b600060405180830381600087803b158015610fb657600080fd5b505af1158015610fca573d6000803e3d6000fd5b5050505060008260010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008360010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008681526020019081526020016000206002015490506111cf8633848861112b6126eb565b60010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087815260200190815260200160002060000160009054906101000a9004600b0b611578565b505050505050565b6111e081612a94565b611216576040517f334ae3e600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b8173ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b815260040161125693929190614720565b6020604051808303816000875af1158015611275573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112999190614783565b50806112a36127c9565b60020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461132f91906142ec565b925050819055508061133f6127c9565b60030160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461138e91906142ec565b925050819055505050565b600080826bffffffffffffffffffffffff166113b36127c9565b60020160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461143b91906147df565b905060006114476128bf565b90508060060154821015611487576040517fcdd3529e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008160060154836114999190614810565b905081600701548110156114d9576040517f6c451f0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8093505050509392505050565b6114ee612a67565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611576576040517fb5e0b29200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600085905060006115aa30868473ffffffffffffffffffffffffffffffffffffffff16612af39092919063ffffffff16565b9050600083826115ba9190614844565b600b0b136115f3576115ed30868473ffffffffffffffffffffffffffffffffffffffff16612b939092919063ffffffff16565b5061162b565b6116298584836116039190614844565b8473ffffffffffffffffffffffffffffffffffffffff16612d469092919063ffffffff16565b505b426116346127c9565b60010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008681526020019081526020016000206004018190555060006116d36127c9565b60010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000868152602001908152602001600020600001549050426117706128bf565b600c0160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000838152602001908152602001600020600301819055505050505050505050565b60008060006117e18585612ef9565b905060008060008060006117f68a8a88611a35565b955050945094509450945060008061180f878c88612faa565b93505092505082156118245760009850611893565b600084146118585784846118389190614810565b826bffffffffffffffffffffffff1661185191906148a8565b9850611892565b6000811461188c57848161186c9190614810565b826bffffffffffffffffffffffff1661188591906148a8565b9850611891565b600098505b5b5b88995050505050505050505092915050565b6000806118b284846119a5565b905060008111156119995760006118d685856001856118d19190614810565b61324e565b935050505060006118e56127c9565b60010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001856119719190614810565b8152602001908152602001600020600401541480156119905750600081145b9250505061199f565b60009150505b92915050565b60006119af6127c9565b60000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600080600080600080611a466127c9565b60010160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611b006127c9565b60010160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600089815260200190815260200160002060020154611b9a6127c9565b60010160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a815260200190815260200160002060030154611c346127c9565b60010160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008b815260200190815260200160002060040154611cce6127c9565b60010160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c815260200190815260200160002060050154611d686127c9565b60010160008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d815260200190815260200160002060060160009054906101000a900460ff1695509550955095509550955093975093979195509350565b6000806000611e2d846133cd565b915091506000821480611e4257506000815111155b15611e5257600092505050611ffb565b60005b8151811015611ff3576000611e8486848481518110611e7757611e7661425f565b5b6020026020010151612718565b9050600080611eae88868681518110611ea057611e9f61425f565b5b602002602001015185612faa565b935093505050858214611eca5760009650505050505050611ffb565b60008114611ee15760009650505050505050611ffb565b6000611f078a878781518110611efa57611ef961425f565b5b6020026020010151612ef9565b9050600080600080611f348e8b8b81518110611f2657611f2561425f565b5b602002602001015187611a35565b505093509350935093508c73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611f855760009b505050505050505050505050611ffb565b878314611fa05760009b505050505050505050505050611ffb565b8a821015611fbc5760009b505050505050505050505050611ffb565b60008114611fd85760009b505050505050505050505050611ffb565b50505050505050508080611feb906148ea565b915050611e55565b506001925050505b92915050565b600061200b6127c9565b60020160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600061209b6127c9565b60030160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6120ed33826118a5565b15612124576040517fd18923ab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6121313383612376565b600061213b6127c9565b60020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156121f5576040517f356680b700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816121fe6127c9565b60020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461228a9190614810565b925050819055508161229a6127c9565b60030160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546122e99190614810565b925050819055508273ffffffffffffffffffffffffffffffffffffffff166323b872dd3033856040518463ffffffff1660e01b815260040161232d93929190614720565b6020604051808303816000875af115801561234c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123709190614783565b50505050565b600061238283836117d2565b90508061238d6127c9565b60020160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124199190614810565b92505081905550806124296127c9565b60030160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124789190614810565b9250508190555060006124896127c9565b60020160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561253f576040517f0a2005fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006125496127c9565b60030160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156125c2576040517f2fe0888f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006125ce84846119a5565b905060008111156126985760016125e36127c9565b60010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060018461266f9190614810565b815260200190815260200160002060060160006101000a81548160ff0219169083151502179055505b50505050565b6126a6612a67565b600301546126b26134f9565b116126e9576040517fa426119900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6000807f9cd9afe22fea86221d6e8117226b65bb0e2af8c4f5b8abf255fb0afcad4a3a9c90508091505090565b6000806127236126eb565b60000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081146127bd576001816127b89190614810565b6127c0565b60005b91505092915050565b6000807f2da2adfb54fd91bfb31e0d805792077ddcd5b0427b14a56397e2f3cc190c883090508091505090565b61280082826135bb565b612836576040517f1824866a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b600080612848868685611399565b905060006128546128bf565b90508060070154816006015461286a91906142ec565b8510156128a3576040517f3661e75b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818510156128b157846128b3565b815b92505050949350505050565b6000807f2f7ed27098ecefe70183ee38ae4542dee65215b0786f6870871034402cfe2cc990508091505090565b6000859050600061291e30868473ffffffffffffffffffffffffffffffffffffffff16612af39092919063ffffffff16565b9050600081600b0b1361295c5761295685848473ffffffffffffffffffffffffffffffffffffffff1661364f9092919063ffffffff16565b50612994565b61299285848361296c9190614932565b8473ffffffffffffffffffffffffffffffffffffffff16612d469092919063ffffffff16565b505b4261299d6127c9565b60010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008681526020019081526020016000206003018190555050505050505050565b60608282604051602001612a509291906149c1565b604051602081830303815290604052905092915050565b6000807fde06769ca6d80a022439e234eebb61c3801d652175b62f912d6f8cac7b881c6590508091505090565b6000612a9e6128bf565b60090160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080612aff85613802565b9150508073ffffffffffffffffffffffffffffffffffffffff1663e6a1e8888686866040518463ffffffff1660e01b8152600401612b3f93929190614a49565b608060405180830381865afa158015612b5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b809190614aaa565b9091925090505080925050509392505050565b6000806000612ba186613a43565b915091508173ffffffffffffffffffffffffffffffffffffffff166339255d5b828373ffffffffffffffffffffffffffffffffffffffff1663b4b333c68a8a8a600067ffffffffffffffff811115612bfc57612bfb614230565b5b6040519080825280601f01601f191660200182016040528015612c2e5781602001600182028036833780820191505090505b50604051602401612c429493929190614b11565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050600067ffffffffffffffff811115612c9f57612c9e614230565b5b6040519080825280601f01601f191660200182016040528015612cd15781602001600182028036833780820191505090505b506040518463ffffffff1660e01b8152600401612cf093929190614b7e565b6000604051808303816000875af1158015612d0f573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190612d389190614cba565b506001925050509392505050565b6000806000612d5486613a43565b915091508173ffffffffffffffffffffffffffffffffffffffff166339255d5b828373ffffffffffffffffffffffffffffffffffffffff166350209a628a8a8a600067ffffffffffffffff811115612daf57612dae614230565b5b6040519080825280601f01601f191660200182016040528015612de15781602001600182028036833780820191505090505b50604051602401612df59493929190614d03565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050600067ffffffffffffffff811115612e5257612e51614230565b5b6040519080825280601f01601f191660200182016040528015612e845781602001600182028036833780820191505090505b506040518463ffffffff1660e01b8152600401612ea393929190614b7e565b6000604051808303816000875af1158015612ec2573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190612eeb9190614cba565b506001925050509392505050565b600080612f046127c9565b60000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008114612f9e57600181612f999190614810565b612fa1565b60005b91505092915050565b600080600080612fb86126eb565b60010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600086815260200190815260200160002060000160009054906101000a9004600b0b61305f6126eb565b60010160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878152602001908152602001600020600001600c9054906101000a90046bffffffffffffffffffffffff166131116126eb565b60010160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000888152602001908152602001600020600101546131ab6126eb565b60010160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600089815260200190815260200160002060020154935093509350935093509350935093565b600080600080600061325e6127c9565b905060008160010160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008260010160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008981526020019081526020016000206002015490506133b9828a83612faa565b965096509650965050505093509350935093565b600060606133d96126eb565b60020160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546134256126eb565b60020160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101808054806020026020016040519081016040528092919081815260200182805480156134e957602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161349f575b5050505050905091509150915091565b6000613503612a67565b60010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b47064c83073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6040518363ffffffff1660e01b8152600401613575929190614d4f565b602060405180830381865afa158015613592573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135b69190614d78565b905090565b6000808373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016135f79190614da5565b602060405180830381865afa158015613614573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136389190614d78565b90506136448484613cca565b811191505092915050565b600080600061365d86613a43565b915091508173ffffffffffffffffffffffffffffffffffffffff166339255d5b828373ffffffffffffffffffffffffffffffffffffffff166362fc305e8a8a8a600067ffffffffffffffff8111156136b8576136b7614230565b5b6040519080825280601f01601f1916602001820160405280156136ea5781602001600182028036833780820191505090505b506040516024016136fe9493929190614d03565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050600067ffffffffffffffff81111561375b5761375a614230565b5b6040519080825280601f01601f19166020018201604052801561378d5781602001600182028036833780820191505090505b506040518463ffffffff1660e01b81526004016137ac93929190614b7e565b6000604051808303816000875af11580156137cb573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906137f49190614cba565b506001925050509392505050565b6000807f65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea8375491507fb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a549050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036139c457600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613927578273ffffffffffffffffffffffffffffffffffffffff166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015613900573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139249190614dd5565b91505b8173ffffffffffffffffffffffffffffffffffffffff1663b6d200de7fa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd36040518263ffffffff1660e01b81526004016139809190614e4a565b602060405180830381865afa15801561399d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139c19190614ea3565b90505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613a0157613a00614ed0565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613a3e57613a3d614ed0565b5b915091565b6000807f65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea8375491507fb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a549050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613c4b57600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613b68578273ffffffffffffffffffffffffffffffffffffffff166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b659190614dd5565b91505b8173ffffffffffffffffffffffffffffffffffffffff1663b6d200de7fa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd36040518263ffffffff1660e01b8152600401613bc19190614e4a565b602060405180830381865afa158015613bde573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c029190614ea3565b9050817f65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea83755807fb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a555b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613c8857613c87614ed0565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613cc557613cc4614ed0565b5b915091565b6000808390506000613cfb848373ffffffffffffffffffffffffffffffffffffffff16613d7090919063ffffffff16565b90506000613d28308473ffffffffffffffffffffffffffffffffffffffff16613e0490919063ffffffff16565b9050613d326128bf565b600801548582613d429190614932565b6bffffffffffffffffffffffff16613d5a91906148a8565b82613d6591906142ec565b935050505092915050565b600080613d7c84613802565b9150508073ffffffffffffffffffffffffffffffffffffffff16638d997f6e85856040518363ffffffff1660e01b8152600401613dba929190614eff565b602060405180830381865afa158015613dd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dfb9190614d78565b91505092915050565b600080613e1084613802565b9150508073ffffffffffffffffffffffffffffffffffffffff1663e8e7e2d185856040518363ffffffff1660e01b8152600401613e4e929190614f28565b602060405180830381865afa158015613e6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e8f9190614f51565b91505092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613ed782613eac565b9050919050565b613ee781613ecc565b8114613ef257600080fd5b50565b600081359050613f0481613ede565b92915050565b6000819050919050565b613f1d81613f0a565b8114613f2857600080fd5b50565b600081359050613f3a81613f14565b92915050565b60008060408385031215613f5757613f56613ea2565b5b6000613f6585828601613ef5565b9250506020613f7685828601613f2b565b9150509250929050565b600081600b0b9050919050565b613f9681613f80565b8114613fa157600080fd5b50565b600081359050613fb381613f8d565b92915050565b600080600060608486031215613fd257613fd1613ea2565b5b6000613fe086828701613ef5565b9350506020613ff186828701613ef5565b925050604061400286828701613fa4565b9150509250925092565b61401581613f0a565b82525050565b6000602082019050614030600083018461400c565b92915050565b600080600080600060a0868803121561405257614051613ea2565b5b600061406088828901613ef5565b955050602061407188828901613ef5565b945050604061408288828901613ef5565b935050606061409388828901613f2b565b92505060806140a488828901613fa4565b9150509295509295909350565b600080604083850312156140c8576140c7613ea2565b5b60006140d685828601613ef5565b92505060206140e785828601613ef5565b9150509250929050565b60008115159050919050565b614106816140f1565b82525050565b600060208201905061412160008301846140fd565b92915050565b6000806000606084860312156141405761413f613ea2565b5b600061414e86828701613ef5565b935050602061415f86828701613ef5565b925050604061417086828701613f2b565b9150509250925092565b61418381613ecc565b82525050565b6000819050919050565b61419c81614189565b82525050565b600060c0820190506141b7600083018961417a565b6141c4602083018861400c565b6141d1604083018761400c565b6141de606083018661400c565b6141eb6080830185614193565b6141f860a08301846140fd565b979650505050505050565b60006020828403121561421957614218613ea2565b5b600061422784828501613ef5565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006142f782613f0a565b915061430283613f0a565b925082820190508082111561431a576143196142bd565b5b92915050565b61432981613f80565b82525050565b600060a082019050614344600083018861417a565b614351602083018761417a565b61435e604083018661417a565b61436b606083018561400c565b6143786080830184614320565b9695505050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156143bc5780820151818401526020810190506143a1565b60008484015250505050565b6000601f19601f8301169050919050565b60006143e482614382565b6143ee818561438d565b93506143fe81856020860161439e565b614407816143c8565b840191505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6004811061444f5761444e61428e565b5b50565b60008190506144608261443e565b919050565b600061447082614452565b9050919050565b61448081614465565b82525050565b60006144928383614477565b60208301905092915050565b6000602082019050919050565b60006144b682614412565b6144c0818561441d565b93506144cb8361442e565b8060005b838110156144fc5781516144e38882614486565b97506144ee8361449e565b9250506001810190506144cf565b5085935050505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600082825260208201905092915050565b600061455182614382565b61455b8185614535565b935061456b81856020860161439e565b614574816143c8565b840191505092915050565b600061458b8383614546565b905092915050565b6000602082019050919050565b60006145ab82614509565b6145b58185614514565b9350836020820285016145c785614525565b8060005b8581101561460357848403895281516145e4858261457f565b94506145ef83614593565b925060208a019950506001810190506145cb565b50829750879550505050505092915050565b6000604083016000830151848203600086015261463282826144ab565b9150506020830151848203602086015261464c82826145a0565b9150508091505092915050565b600060808201905061466e600083018761417a565b818103602083015261468081866143d9565b905081810360408301526146948185614615565b90506146a3606083018461417a565b95945050505050565b6146b581614189565b81146146c057600080fd5b50565b6000815190506146d2816146ac565b92915050565b6000602082840312156146ee576146ed613ea2565b5b60006146fc848285016146c3565b91505092915050565b600060208201905061471a6000830184614193565b92915050565b6000606082019050614735600083018661417a565b614742602083018561417a565b61474f604083018461400c565b949350505050565b614760816140f1565b811461476b57600080fd5b50565b60008151905061477d81614757565b92915050565b60006020828403121561479957614798613ea2565b5b60006147a78482850161476e565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006147ea82613f0a565b91506147f583613f0a565b925082614805576148046147b0565b5b828204905092915050565b600061481b82613f0a565b915061482683613f0a565b925082820390508181111561483e5761483d6142bd565b5b92915050565b600061484f82613f80565b915061485a83613f80565b925082820390506b7fffffffffffffffffffffff81137fffffffffffffffffffffffffffffffffffffffff800000000000000000000000821217156148a2576148a16142bd565b5b92915050565b60006148b382613f0a565b91506148be83613f0a565b92508282026148cc81613f0a565b915082820484148315176148e3576148e26142bd565b5b5092915050565b60006148f582613f0a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614927576149266142bd565b5b600182019050919050565b600061493d82613f80565b915061494883613f80565b925082820190507fffffffffffffffffffffffffffffffffffffffff80000000000000000000000081126b7fffffffffffffffffffffff821317156149905761498f6142bd565b5b92915050565b60006fffffffffffffffffffffffffffffffff82169050919050565b6149bb81614996565b82525050565b60006040820190506149d660008301856149b2565b6149e360208301846149b2565b9392505050565b6000819050919050565b6000614a0f614a0a614a0584613eac565b6149ea565b613eac565b9050919050565b6000614a21826149f4565b9050919050565b6000614a3382614a16565b9050919050565b614a4381614a28565b82525050565b6000606082019050614a5e6000830186614a3a565b614a6b602083018561417a565b614a78604083018461417a565b949350505050565b600081519050614a8f81613f14565b92915050565b600081519050614aa481613f8d565b92915050565b60008060008060808587031215614ac457614ac3613ea2565b5b6000614ad287828801614a80565b9450506020614ae387828801614a95565b9350506040614af487828801614a80565b9250506060614b0587828801614a80565b91505092959194509250565b6000608082019050614b266000830187614a3a565b614b33602083018661417a565b614b40604083018561417a565b8181036060830152614b5281846143d9565b905095945050505050565b6000614b6882614a16565b9050919050565b614b7881614b5d565b82525050565b6000606082019050614b936000830186614b6f565b8181036020830152614ba581856143d9565b90508181036040830152614bb981846143d9565b9050949350505050565b600080fd5b600080fd5b614bd6826143c8565b810181811067ffffffffffffffff82111715614bf557614bf4614230565b5b80604052505050565b6000614c08613e98565b9050614c148282614bcd565b919050565b600067ffffffffffffffff821115614c3457614c33614230565b5b614c3d826143c8565b9050602081019050919050565b6000614c5d614c5884614c19565b614bfe565b905082815260208101848484011115614c7957614c78614bc8565b5b614c8484828561439e565b509392505050565b600082601f830112614ca157614ca0614bc3565b5b8151614cb1848260208601614c4a565b91505092915050565b600060208284031215614cd057614ccf613ea2565b5b600082015167ffffffffffffffff811115614cee57614ced613ea7565b5b614cfa84828501614c8c565b91505092915050565b6000608082019050614d186000830187614a3a565b614d25602083018661417a565b614d326040830185614320565b8181036060830152614d4481846143d9565b905095945050505050565b6000604082019050614d64600083018561417a565b614d71602083018461417a565b9392505050565b600060208284031215614d8e57614d8d613ea2565b5b6000614d9c84828501614a80565b91505092915050565b6000602082019050614dba600083018461417a565b92915050565b600081519050614dcf81613ede565b92915050565b600060208284031215614deb57614dea613ea2565b5b6000614df984828501614dc0565b91505092915050565b6000819050919050565b60008160001b9050919050565b6000614e34614e2f614e2a84614e02565b614e0c565b614189565b9050919050565b614e4481614e19565b82525050565b6000602082019050614e5f6000830184614e3b565b92915050565b6000614e7082613ecc565b9050919050565b614e8081614e65565b8114614e8b57600080fd5b50565b600081519050614e9d81614e77565b92915050565b600060208284031215614eb957614eb8613ea2565b5b6000614ec784828501614e8e565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000604082019050614f146000830185614a3a565b614f216020830184614320565b9392505050565b6000604082019050614f3d6000830185614a3a565b614f4a602083018461417a565b9392505050565b600060208284031215614f6757614f66613ea2565b5b6000614f7584828501614a95565b9150509291505056fea26469706673582212201dce8b857275c446b38b2fd0190c291b939a9d8728ca09a3c4be594a1d5f303264736f6c63430008120033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/contracts/facets/core/Session.sol/Session.dbg.json b/contracts/artifacts/contracts/facets/core/Session.sol/Session.dbg.json new file mode 100644 index 0000000..a74f3f4 --- /dev/null +++ b/contracts/artifacts/contracts/facets/core/Session.sol/Session.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/a8f3edb970f736d3ccaffec4bae5df69.json" +} diff --git a/contracts/artifacts/contracts/facets/core/Session.sol/Session.json b/contracts/artifacts/contracts/facets/core/Session.sol/Session.json new file mode 100644 index 0000000..aaa8f65 --- /dev/null +++ b/contracts/artifacts/contracts/facets/core/Session.sol/Session.json @@ -0,0 +1,210 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Session", + "sourceName": "contracts/facets/core/Session.sol", + "abi": [ + { + "inputs": [], + "name": "ArrayLengthNotMatch", + "type": "error" + }, + { + "inputs": [], + "name": "HasActiveFlow", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidFlowRate", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidSuperToken", + "type": "error" + }, + { + "inputs": [], + "name": "PreviousSessionStillLive", + "type": "error" + }, + { + "inputs": [], + "name": "SessionAlreadyEnded", + "type": "error" + }, + { + "inputs": [], + "name": "SessionNotStarted", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + } + ], + "name": "getCurrentSessionData", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + }, + { + "internalType": "address", + "name": "_superToken", + "type": "address" + } + ], + "name": "getNewSessionNonce", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + }, + { + "internalType": "address", + "name": "_superToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_nonce", + "type": "uint256" + } + ], + "name": "getSessionData", + "outputs": [ + { + "internalType": "int96", + "name": "", + "type": "int96" + }, + { + "internalType": "uint96", + "name": "", + "type": "uint96" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_superToken", + "type": "address" + }, + { + "internalType": "uint96", + "name": "_flowRate", + "type": "uint96" + }, + { + "internalType": "uint256", + "name": "_tag", + "type": "uint256" + } + ], + "name": "startSession", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "_superTokens", + "type": "address[]" + }, + { + "internalType": "uint96[]", + "name": "_flowRates", + "type": "uint96[]" + }, + { + "internalType": "uint256[]", + "name": "_tags", + "type": "uint256[]" + } + ], + "name": "startSessions", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_superToken", + "type": "address" + } + ], + "name": "stopSession", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "_superTokens", + "type": "address[]" + } + ], + "name": "stopSessions", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50612ecb806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806392c2226e1161005b57806392c2226e146101025780639afffbf914610132578063b233bd051461014e578063f437a7a51461016a5761007d565b806353732469146100825780637fe70a27146100b35780638ff3849b146100cf575b600080fd5b61009c60048036038101906100979190612150565b610186565b6040516100aa929190612254565b60405180910390f35b6100cd60048036038101906100c891906122f4565b61019c565b005b6100e960048036038101906100e49190612347565b6102b0565b6040516100f994939291906123c5565b60405180910390f35b61011c6004803603810190610117919061240a565b6102d2565b604051610129919061244a565b60405180910390f35b61014c600480360381019061014791906125be565b6102e6565b005b61016860048036038101906101639190612150565b61038f565b005b610184600480360381019061017f919061278d565b6103fe565b005b6000606061019383610598565b91509150915091565b6101a5836106c4565b6101b0838383610706565b60006101ba610ade565b9050428160020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055508060020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b6000806000806102c1878787610b0b565b935093509350935093509350935093565b60006102de8383610daf565b905092915050565b60005b81518110156103285761031582828151811061030857610307612834565b5b6020026020010151610e3f565b808061032090612892565b9150506102e9565b50610331610ade565b60020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008082016000905560018201600061038a9190611fd5565b505050565b61039881610e3f565b6103a0610ade565b60020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000808201600090556001820160006103f99190611fd5565b505050565b8151835114158061041157508051835114155b15610448576040517fed882f7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b83518110156104e35761047784828151811061046a57610469612834565b5b60200260200101516106c4565b6104d084828151811061048d5761048c612834565b5b60200260200101518483815181106104a8576104a7612834565b5b60200260200101518484815181106104c3576104c2612834565b5b6020026020010151610706565b80806104db90612892565b91505061044b565b5060006104ee610ade565b9050428160020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550838160020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001019080519060200190610591929190611ff6565b5050505050565b600060606105a4610ade565b60020160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546105f0610ade565b60020160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101808054806020026020016040519081016040528092919081815260200182805480156106b457602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161066a575b5050505050905091509150915091565b6106cd81611103565b610703576040517f334ae3e600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6000610710610ade565b9050600061071e3386610daf565b90506000811180156107ce575060008260010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001846107ba91906128da565b815260200190815260200160002060020154145b15610805576040517f9b90a9c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61080e85611162565b600061081b3386866111a6565b9050808360010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060000160006101000a8154816bffffffffffffffffffffffff0219169083600b0b6bffffffffffffffffffffffff160217905550848360010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000848152602001908152602001600020600001600c6101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550428360010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000848152602001908152602001600020600101819055506001610a43610ade565b60000160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610acf919061290e565b92505081905550505050505050565b6000807f9cd9afe22fea86221d6e8117226b65bb0e2af8c4f5b8abf255fb0afcad4a3a9c90508091505090565b600080600080610b19610ade565b60010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600086815260200190815260200160002060000160009054906101000a9004600b0b610bc0610ade565b60010160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878152602001908152602001600020600001600c9054906101000a90046bffffffffffffffffffffffff16610c72610ade565b60010160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088815260200190815260200160002060010154610d0c610ade565b60010160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600089815260200190815260200160002060020154935093509350935093509350935093565b6000610db9610ade565b60000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000610e4b33836112d4565b90506000610e57610ade565b60010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206001015403610f20576040517f3c2779e500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610f2a610ade565b60010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206002015414610ff3576040517fe7a7ee3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000829050600061102530338473ffffffffffffffffffffffffffffffffffffffff166113859092919063ffffffff16565b9050600081600b0b1461105f5761105d30338473ffffffffffffffffffffffffffffffffffffffff166114259092919063ffffffff16565b505b42611068610ade565b60010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008581526020019081526020016000206002018190555050505050565b600061110d6115d8565b60090160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61116c3382611605565b156111a3576040517fd18923ab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b60008060006111b36115d8565b60040160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900461ffff16905060008161ffff16111561121957809150611234565b611221611705565b15611233576112308585611725565b91505b5b60008261ffff160361124a5784925050506112cd565b61271061ffff168261ffff16866112619190612942565b6bffffffffffffffffffffffff1610156112a7576040517ffe267e4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61271061ffff168261ffff16866112be9190612942565b6112c891906129ae565b925050505b9392505050565b6000806112df610ade565b60000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081146113795760018161137491906128da565b61137c565b60005b91505092915050565b600080611391856117c3565b9150508073ffffffffffffffffffffffffffffffffffffffff1663e6a1e8888686866040518463ffffffff1660e01b81526004016113d193929190612a4d565b608060405180830381865afa1580156113ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114129190612ac5565b9091925090505080925050509392505050565b600080600061143386611a04565b915091508173ffffffffffffffffffffffffffffffffffffffff166339255d5b828373ffffffffffffffffffffffffffffffffffffffff1663b4b333c68a8a8a600067ffffffffffffffff81111561148e5761148d61247b565b5b6040519080825280601f01601f1916602001820160405280156114c05781602001600182028036833780820191505090505b506040516024016114d49493929190612bab565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050600067ffffffffffffffff8111156115315761153061247b565b5b6040519080825280601f01601f1916602001820160405280156115635781602001600182028036833780820191505090505b506040518463ffffffff1660e01b815260040161158293929190612c18565b6000604051808303816000875af11580156115a1573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906115ca9190612d03565b506001925050509392505050565b6000807f2f7ed27098ecefe70183ee38ae4542dee65215b0786f6870871034402cfe2cc990508091505090565b6000806116128484611c8b565b905060008111156116f9576000611636858560018561163191906128da565b611d1b565b93505050506000611645611e9a565b60010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001856116d191906128da565b8152602001908152602001600020600401541480156116f05750600081145b925050506116ff565b60009150505b92915050565b600061170f6115d8565b60050160009054906101000a900460ff16905090565b60008060008061173485611ec7565b925092509250816bffffffffffffffffffffffff16866bffffffffffffffffffffffff1610806117805750806bffffffffffffffffffffffff16866bffffffffffffffffffffffff1610155b156117b7576040517ffe267e4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82935050505092915050565b6000807f65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea8375491507fb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a549050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361198557600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118e8578273ffffffffffffffffffffffffffffffffffffffff166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e59190612d61565b91505b8173ffffffffffffffffffffffffffffffffffffffff1663b6d200de7fa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd36040518263ffffffff1660e01b81526004016119419190612de0565b602060405180830381865afa15801561195e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119829190612e39565b90505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119c2576119c1612e66565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036119ff576119fe612e66565b5b915091565b6000807f65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea8375491507fb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a549050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c0c57600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b29578273ffffffffffffffffffffffffffffffffffffffff166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b269190612d61565b91505b8173ffffffffffffffffffffffffffffffffffffffff1663b6d200de7fa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd36040518263ffffffff1660e01b8152600401611b829190612de0565b602060405180830381865afa158015611b9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bc39190612e39565b9050817f65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea83755807fb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a555b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c4957611c48612e66565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c8657611c85612e66565b5b915091565b6000611c95611e9a565b60000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000806000806000611d2b611e9a565b905060008160010160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008260010160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000898152602001908152602001600020600201549050611e86828a83610b0b565b965096509650965050505093509350935093565b6000807f2da2adfb54fd91bfb31e0d805792077ddcd5b0427b14a56397e2f3cc190c883090508091505090565b600080600080611eea85611ed96115d8565b600001611f0990919063ffffffff16565b9050806000015181602001518260400151935093509350509193909250565b611f11612080565b8260010160008381526020019081526020016000206040518060600160405290816000820160009054906101000a900461ffff1661ffff1661ffff1681526020016000820160029054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160008201600e9054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681525050905092915050565b5080546000825590600052602060002090810190611ff391906120c1565b50565b82805482825590600052602060002090810192821561206f579160200282015b8281111561206e5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190612016565b5b50905061207c91906120c1565b5090565b6040518060600160405280600061ffff16815260200160006bffffffffffffffffffffffff16815260200160006bffffffffffffffffffffffff1681525090565b5b808211156120da5760008160009055506001016120c2565b5090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061211d826120f2565b9050919050565b61212d81612112565b811461213857600080fd5b50565b60008135905061214a81612124565b92915050565b600060208284031215612166576121656120e8565b5b60006121748482850161213b565b91505092915050565b6000819050919050565b6121908161217d565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6121cb81612112565b82525050565b60006121dd83836121c2565b60208301905092915050565b6000602082019050919050565b600061220182612196565b61220b81856121a1565b9350612216836121b2565b8060005b8381101561224757815161222e88826121d1565b9750612239836121e9565b92505060018101905061221a565b5085935050505092915050565b60006040820190506122696000830185612187565b818103602083015261227b81846121f6565b90509392505050565b60006bffffffffffffffffffffffff82169050919050565b6122a581612284565b81146122b057600080fd5b50565b6000813590506122c28161229c565b92915050565b6122d18161217d565b81146122dc57600080fd5b50565b6000813590506122ee816122c8565b92915050565b60008060006060848603121561230d5761230c6120e8565b5b600061231b8682870161213b565b935050602061232c868287016122b3565b925050604061233d868287016122df565b9150509250925092565b6000806000606084860312156123605761235f6120e8565b5b600061236e8682870161213b565b935050602061237f8682870161213b565b9250506040612390868287016122df565b9150509250925092565b600081600b0b9050919050565b6123b08161239a565b82525050565b6123bf81612284565b82525050565b60006080820190506123da60008301876123a7565b6123e760208301866123b6565b6123f46040830185612187565b6124016060830184612187565b95945050505050565b60008060408385031215612421576124206120e8565b5b600061242f8582860161213b565b92505060206124408582860161213b565b9150509250929050565b600060208201905061245f6000830184612187565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6124b38261246a565b810181811067ffffffffffffffff821117156124d2576124d161247b565b5b80604052505050565b60006124e56120de565b90506124f182826124aa565b919050565b600067ffffffffffffffff8211156125115761251061247b565b5b602082029050602081019050919050565b600080fd5b600061253a612535846124f6565b6124db565b9050808382526020820190506020840283018581111561255d5761255c612522565b5b835b818110156125865780612572888261213b565b84526020840193505060208101905061255f565b5050509392505050565b600082601f8301126125a5576125a4612465565b5b81356125b5848260208601612527565b91505092915050565b6000602082840312156125d4576125d36120e8565b5b600082013567ffffffffffffffff8111156125f2576125f16120ed565b5b6125fe84828501612590565b91505092915050565b600067ffffffffffffffff8211156126225761262161247b565b5b602082029050602081019050919050565b600061264661264184612607565b6124db565b9050808382526020820190506020840283018581111561266957612668612522565b5b835b81811015612692578061267e88826122b3565b84526020840193505060208101905061266b565b5050509392505050565b600082601f8301126126b1576126b0612465565b5b81356126c1848260208601612633565b91505092915050565b600067ffffffffffffffff8211156126e5576126e461247b565b5b602082029050602081019050919050565b6000612709612704846126ca565b6124db565b9050808382526020820190506020840283018581111561272c5761272b612522565b5b835b81811015612755578061274188826122df565b84526020840193505060208101905061272e565b5050509392505050565b600082601f83011261277457612773612465565b5b81356127848482602086016126f6565b91505092915050565b6000806000606084860312156127a6576127a56120e8565b5b600084013567ffffffffffffffff8111156127c4576127c36120ed565b5b6127d086828701612590565b935050602084013567ffffffffffffffff8111156127f1576127f06120ed565b5b6127fd8682870161269c565b925050604084013567ffffffffffffffff81111561281e5761281d6120ed565b5b61282a8682870161275f565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061289d8261217d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036128cf576128ce612863565b5b600182019050919050565b60006128e58261217d565b91506128f08361217d565b925082820390508181111561290857612907612863565b5b92915050565b60006129198261217d565b91506129248361217d565b925082820190508082111561293c5761293b612863565b5b92915050565b600061294d82612284565b915061295883612284565b925082820261296681612284565b915080821461297857612977612863565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006129b982612284565b91506129c483612284565b9250826129d4576129d361297f565b5b828204905092915050565b6000819050919050565b6000612a046129ff6129fa846120f2565b6129df565b6120f2565b9050919050565b6000612a16826129e9565b9050919050565b6000612a2882612a0b565b9050919050565b612a3881612a1d565b82525050565b612a4781612112565b82525050565b6000606082019050612a626000830186612a2f565b612a6f6020830185612a3e565b612a7c6040830184612a3e565b949350505050565b600081519050612a93816122c8565b92915050565b612aa28161239a565b8114612aad57600080fd5b50565b600081519050612abf81612a99565b92915050565b60008060008060808587031215612adf57612ade6120e8565b5b6000612aed87828801612a84565b9450506020612afe87828801612ab0565b9350506040612b0f87828801612a84565b9250506060612b2087828801612a84565b91505092959194509250565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b66578082015181840152602081019050612b4b565b60008484015250505050565b6000612b7d82612b2c565b612b878185612b37565b9350612b97818560208601612b48565b612ba08161246a565b840191505092915050565b6000608082019050612bc06000830187612a2f565b612bcd6020830186612a3e565b612bda6040830185612a3e565b8181036060830152612bec8184612b72565b905095945050505050565b6000612c0282612a0b565b9050919050565b612c1281612bf7565b82525050565b6000606082019050612c2d6000830186612c09565b8181036020830152612c3f8185612b72565b90508181036040830152612c538184612b72565b9050949350505050565b600080fd5b600067ffffffffffffffff821115612c7d57612c7c61247b565b5b612c868261246a565b9050602081019050919050565b6000612ca6612ca184612c62565b6124db565b905082815260208101848484011115612cc257612cc1612c5d565b5b612ccd848285612b48565b509392505050565b600082601f830112612cea57612ce9612465565b5b8151612cfa848260208601612c93565b91505092915050565b600060208284031215612d1957612d186120e8565b5b600082015167ffffffffffffffff811115612d3757612d366120ed565b5b612d4384828501612cd5565b91505092915050565b600081519050612d5b81612124565b92915050565b600060208284031215612d7757612d766120e8565b5b6000612d8584828501612d4c565b91505092915050565b6000819050919050565b6000819050919050565b60008160001b9050919050565b6000612dca612dc5612dc084612d8e565b612da2565b612d98565b9050919050565b612dda81612daf565b82525050565b6000602082019050612df56000830184612dd1565b92915050565b6000612e0682612112565b9050919050565b612e1681612dfb565b8114612e2157600080fd5b50565b600081519050612e3381612e0d565b92915050565b600060208284031215612e4f57612e4e6120e8565b5b6000612e5d84828501612e24565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fdfea2646970667358221220526bbb49d3cca825be942d7186eceea4b40931ece8a0d3455aa14dfb7b504c2d64736f6c63430008120033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c806392c2226e1161005b57806392c2226e146101025780639afffbf914610132578063b233bd051461014e578063f437a7a51461016a5761007d565b806353732469146100825780637fe70a27146100b35780638ff3849b146100cf575b600080fd5b61009c60048036038101906100979190612150565b610186565b6040516100aa929190612254565b60405180910390f35b6100cd60048036038101906100c891906122f4565b61019c565b005b6100e960048036038101906100e49190612347565b6102b0565b6040516100f994939291906123c5565b60405180910390f35b61011c6004803603810190610117919061240a565b6102d2565b604051610129919061244a565b60405180910390f35b61014c600480360381019061014791906125be565b6102e6565b005b61016860048036038101906101639190612150565b61038f565b005b610184600480360381019061017f919061278d565b6103fe565b005b6000606061019383610598565b91509150915091565b6101a5836106c4565b6101b0838383610706565b60006101ba610ade565b9050428160020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055508060020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b6000806000806102c1878787610b0b565b935093509350935093509350935093565b60006102de8383610daf565b905092915050565b60005b81518110156103285761031582828151811061030857610307612834565b5b6020026020010151610e3f565b808061032090612892565b9150506102e9565b50610331610ade565b60020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008082016000905560018201600061038a9190611fd5565b505050565b61039881610e3f565b6103a0610ade565b60020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000808201600090556001820160006103f99190611fd5565b505050565b8151835114158061041157508051835114155b15610448576040517fed882f7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b83518110156104e35761047784828151811061046a57610469612834565b5b60200260200101516106c4565b6104d084828151811061048d5761048c612834565b5b60200260200101518483815181106104a8576104a7612834565b5b60200260200101518484815181106104c3576104c2612834565b5b6020026020010151610706565b80806104db90612892565b91505061044b565b5060006104ee610ade565b9050428160020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550838160020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001019080519060200190610591929190611ff6565b5050505050565b600060606105a4610ade565b60020160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546105f0610ade565b60020160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101808054806020026020016040519081016040528092919081815260200182805480156106b457602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161066a575b5050505050905091509150915091565b6106cd81611103565b610703576040517f334ae3e600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6000610710610ade565b9050600061071e3386610daf565b90506000811180156107ce575060008260010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001846107ba91906128da565b815260200190815260200160002060020154145b15610805576040517f9b90a9c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61080e85611162565b600061081b3386866111a6565b9050808360010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060000160006101000a8154816bffffffffffffffffffffffff0219169083600b0b6bffffffffffffffffffffffff160217905550848360010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000848152602001908152602001600020600001600c6101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550428360010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000848152602001908152602001600020600101819055506001610a43610ade565b60000160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610acf919061290e565b92505081905550505050505050565b6000807f9cd9afe22fea86221d6e8117226b65bb0e2af8c4f5b8abf255fb0afcad4a3a9c90508091505090565b600080600080610b19610ade565b60010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600086815260200190815260200160002060000160009054906101000a9004600b0b610bc0610ade565b60010160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878152602001908152602001600020600001600c9054906101000a90046bffffffffffffffffffffffff16610c72610ade565b60010160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088815260200190815260200160002060010154610d0c610ade565b60010160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600089815260200190815260200160002060020154935093509350935093509350935093565b6000610db9610ade565b60000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000610e4b33836112d4565b90506000610e57610ade565b60010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206001015403610f20576040517f3c2779e500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610f2a610ade565b60010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206002015414610ff3576040517fe7a7ee3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000829050600061102530338473ffffffffffffffffffffffffffffffffffffffff166113859092919063ffffffff16565b9050600081600b0b1461105f5761105d30338473ffffffffffffffffffffffffffffffffffffffff166114259092919063ffffffff16565b505b42611068610ade565b60010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008581526020019081526020016000206002018190555050505050565b600061110d6115d8565b60090160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61116c3382611605565b156111a3576040517fd18923ab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b60008060006111b36115d8565b60040160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900461ffff16905060008161ffff16111561121957809150611234565b611221611705565b15611233576112308585611725565b91505b5b60008261ffff160361124a5784925050506112cd565b61271061ffff168261ffff16866112619190612942565b6bffffffffffffffffffffffff1610156112a7576040517ffe267e4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61271061ffff168261ffff16866112be9190612942565b6112c891906129ae565b925050505b9392505050565b6000806112df610ade565b60000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081146113795760018161137491906128da565b61137c565b60005b91505092915050565b600080611391856117c3565b9150508073ffffffffffffffffffffffffffffffffffffffff1663e6a1e8888686866040518463ffffffff1660e01b81526004016113d193929190612a4d565b608060405180830381865afa1580156113ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114129190612ac5565b9091925090505080925050509392505050565b600080600061143386611a04565b915091508173ffffffffffffffffffffffffffffffffffffffff166339255d5b828373ffffffffffffffffffffffffffffffffffffffff1663b4b333c68a8a8a600067ffffffffffffffff81111561148e5761148d61247b565b5b6040519080825280601f01601f1916602001820160405280156114c05781602001600182028036833780820191505090505b506040516024016114d49493929190612bab565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050600067ffffffffffffffff8111156115315761153061247b565b5b6040519080825280601f01601f1916602001820160405280156115635781602001600182028036833780820191505090505b506040518463ffffffff1660e01b815260040161158293929190612c18565b6000604051808303816000875af11580156115a1573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906115ca9190612d03565b506001925050509392505050565b6000807f2f7ed27098ecefe70183ee38ae4542dee65215b0786f6870871034402cfe2cc990508091505090565b6000806116128484611c8b565b905060008111156116f9576000611636858560018561163191906128da565b611d1b565b93505050506000611645611e9a565b60010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001856116d191906128da565b8152602001908152602001600020600401541480156116f05750600081145b925050506116ff565b60009150505b92915050565b600061170f6115d8565b60050160009054906101000a900460ff16905090565b60008060008061173485611ec7565b925092509250816bffffffffffffffffffffffff16866bffffffffffffffffffffffff1610806117805750806bffffffffffffffffffffffff16866bffffffffffffffffffffffff1610155b156117b7576040517ffe267e4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82935050505092915050565b6000807f65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea8375491507fb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a549050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361198557600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118e8578273ffffffffffffffffffffffffffffffffffffffff166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e59190612d61565b91505b8173ffffffffffffffffffffffffffffffffffffffff1663b6d200de7fa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd36040518263ffffffff1660e01b81526004016119419190612de0565b602060405180830381865afa15801561195e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119829190612e39565b90505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119c2576119c1612e66565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036119ff576119fe612e66565b5b915091565b6000807f65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea8375491507fb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a549050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c0c57600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b29578273ffffffffffffffffffffffffffffffffffffffff166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b269190612d61565b91505b8173ffffffffffffffffffffffffffffffffffffffff1663b6d200de7fa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd36040518263ffffffff1660e01b8152600401611b829190612de0565b602060405180830381865afa158015611b9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bc39190612e39565b9050817f65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea83755807fb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a555b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c4957611c48612e66565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c8657611c85612e66565b5b915091565b6000611c95611e9a565b60000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000806000806000611d2b611e9a565b905060008160010160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008260010160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000898152602001908152602001600020600201549050611e86828a83610b0b565b965096509650965050505093509350935093565b6000807f2da2adfb54fd91bfb31e0d805792077ddcd5b0427b14a56397e2f3cc190c883090508091505090565b600080600080611eea85611ed96115d8565b600001611f0990919063ffffffff16565b9050806000015181602001518260400151935093509350509193909250565b611f11612080565b8260010160008381526020019081526020016000206040518060600160405290816000820160009054906101000a900461ffff1661ffff1661ffff1681526020016000820160029054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160008201600e9054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681525050905092915050565b5080546000825590600052602060002090810190611ff391906120c1565b50565b82805482825590600052602060002090810192821561206f579160200282015b8281111561206e5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190612016565b5b50905061207c91906120c1565b5090565b6040518060600160405280600061ffff16815260200160006bffffffffffffffffffffffff16815260200160006bffffffffffffffffffffffff1681525090565b5b808211156120da5760008160009055506001016120c2565b5090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061211d826120f2565b9050919050565b61212d81612112565b811461213857600080fd5b50565b60008135905061214a81612124565b92915050565b600060208284031215612166576121656120e8565b5b60006121748482850161213b565b91505092915050565b6000819050919050565b6121908161217d565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6121cb81612112565b82525050565b60006121dd83836121c2565b60208301905092915050565b6000602082019050919050565b600061220182612196565b61220b81856121a1565b9350612216836121b2565b8060005b8381101561224757815161222e88826121d1565b9750612239836121e9565b92505060018101905061221a565b5085935050505092915050565b60006040820190506122696000830185612187565b818103602083015261227b81846121f6565b90509392505050565b60006bffffffffffffffffffffffff82169050919050565b6122a581612284565b81146122b057600080fd5b50565b6000813590506122c28161229c565b92915050565b6122d18161217d565b81146122dc57600080fd5b50565b6000813590506122ee816122c8565b92915050565b60008060006060848603121561230d5761230c6120e8565b5b600061231b8682870161213b565b935050602061232c868287016122b3565b925050604061233d868287016122df565b9150509250925092565b6000806000606084860312156123605761235f6120e8565b5b600061236e8682870161213b565b935050602061237f8682870161213b565b9250506040612390868287016122df565b9150509250925092565b600081600b0b9050919050565b6123b08161239a565b82525050565b6123bf81612284565b82525050565b60006080820190506123da60008301876123a7565b6123e760208301866123b6565b6123f46040830185612187565b6124016060830184612187565b95945050505050565b60008060408385031215612421576124206120e8565b5b600061242f8582860161213b565b92505060206124408582860161213b565b9150509250929050565b600060208201905061245f6000830184612187565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6124b38261246a565b810181811067ffffffffffffffff821117156124d2576124d161247b565b5b80604052505050565b60006124e56120de565b90506124f182826124aa565b919050565b600067ffffffffffffffff8211156125115761251061247b565b5b602082029050602081019050919050565b600080fd5b600061253a612535846124f6565b6124db565b9050808382526020820190506020840283018581111561255d5761255c612522565b5b835b818110156125865780612572888261213b565b84526020840193505060208101905061255f565b5050509392505050565b600082601f8301126125a5576125a4612465565b5b81356125b5848260208601612527565b91505092915050565b6000602082840312156125d4576125d36120e8565b5b600082013567ffffffffffffffff8111156125f2576125f16120ed565b5b6125fe84828501612590565b91505092915050565b600067ffffffffffffffff8211156126225761262161247b565b5b602082029050602081019050919050565b600061264661264184612607565b6124db565b9050808382526020820190506020840283018581111561266957612668612522565b5b835b81811015612692578061267e88826122b3565b84526020840193505060208101905061266b565b5050509392505050565b600082601f8301126126b1576126b0612465565b5b81356126c1848260208601612633565b91505092915050565b600067ffffffffffffffff8211156126e5576126e461247b565b5b602082029050602081019050919050565b6000612709612704846126ca565b6124db565b9050808382526020820190506020840283018581111561272c5761272b612522565b5b835b81811015612755578061274188826122df565b84526020840193505060208101905061272e565b5050509392505050565b600082601f83011261277457612773612465565b5b81356127848482602086016126f6565b91505092915050565b6000806000606084860312156127a6576127a56120e8565b5b600084013567ffffffffffffffff8111156127c4576127c36120ed565b5b6127d086828701612590565b935050602084013567ffffffffffffffff8111156127f1576127f06120ed565b5b6127fd8682870161269c565b925050604084013567ffffffffffffffff81111561281e5761281d6120ed565b5b61282a8682870161275f565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061289d8261217d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036128cf576128ce612863565b5b600182019050919050565b60006128e58261217d565b91506128f08361217d565b925082820390508181111561290857612907612863565b5b92915050565b60006129198261217d565b91506129248361217d565b925082820190508082111561293c5761293b612863565b5b92915050565b600061294d82612284565b915061295883612284565b925082820261296681612284565b915080821461297857612977612863565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006129b982612284565b91506129c483612284565b9250826129d4576129d361297f565b5b828204905092915050565b6000819050919050565b6000612a046129ff6129fa846120f2565b6129df565b6120f2565b9050919050565b6000612a16826129e9565b9050919050565b6000612a2882612a0b565b9050919050565b612a3881612a1d565b82525050565b612a4781612112565b82525050565b6000606082019050612a626000830186612a2f565b612a6f6020830185612a3e565b612a7c6040830184612a3e565b949350505050565b600081519050612a93816122c8565b92915050565b612aa28161239a565b8114612aad57600080fd5b50565b600081519050612abf81612a99565b92915050565b60008060008060808587031215612adf57612ade6120e8565b5b6000612aed87828801612a84565b9450506020612afe87828801612ab0565b9350506040612b0f87828801612a84565b9250506060612b2087828801612a84565b91505092959194509250565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b66578082015181840152602081019050612b4b565b60008484015250505050565b6000612b7d82612b2c565b612b878185612b37565b9350612b97818560208601612b48565b612ba08161246a565b840191505092915050565b6000608082019050612bc06000830187612a2f565b612bcd6020830186612a3e565b612bda6040830185612a3e565b8181036060830152612bec8184612b72565b905095945050505050565b6000612c0282612a0b565b9050919050565b612c1281612bf7565b82525050565b6000606082019050612c2d6000830186612c09565b8181036020830152612c3f8185612b72565b90508181036040830152612c538184612b72565b9050949350505050565b600080fd5b600067ffffffffffffffff821115612c7d57612c7c61247b565b5b612c868261246a565b9050602081019050919050565b6000612ca6612ca184612c62565b6124db565b905082815260208101848484011115612cc257612cc1612c5d565b5b612ccd848285612b48565b509392505050565b600082601f830112612cea57612ce9612465565b5b8151612cfa848260208601612c93565b91505092915050565b600060208284031215612d1957612d186120e8565b5b600082015167ffffffffffffffff811115612d3757612d366120ed565b5b612d4384828501612cd5565b91505092915050565b600081519050612d5b81612124565b92915050565b600060208284031215612d7757612d766120e8565b5b6000612d8584828501612d4c565b91505092915050565b6000819050919050565b6000819050919050565b60008160001b9050919050565b6000612dca612dc5612dc084612d8e565b612da2565b612d98565b9050919050565b612dda81612daf565b82525050565b6000602082019050612df56000830184612dd1565b92915050565b6000612e0682612112565b9050919050565b612e1681612dfb565b8114612e2157600080fd5b50565b600081519050612e3381612e0d565b92915050565b600060208284031215612e4f57612e4e6120e8565b5b6000612e5d84828501612e24565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fdfea2646970667358221220526bbb49d3cca825be942d7186eceea4b40931ece8a0d3455aa14dfb7b504c2d64736f6c63430008120033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/contracts/facets/utils/AccessControl.sol/AccessControl.dbg.json b/contracts/artifacts/contracts/facets/utils/AccessControl.sol/AccessControl.dbg.json new file mode 100644 index 0000000..34fe4dc --- /dev/null +++ b/contracts/artifacts/contracts/facets/utils/AccessControl.sol/AccessControl.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/ba9437438ec2715393320ce18780bccb.json" +} diff --git a/contracts/artifacts/contracts/facets/utils/AccessControl.sol/AccessControl.json b/contracts/artifacts/contracts/facets/utils/AccessControl.sol/AccessControl.json new file mode 100644 index 0000000..76d4909 --- /dev/null +++ b/contracts/artifacts/contracts/facets/utils/AccessControl.sol/AccessControl.json @@ -0,0 +1,210 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "AccessControl", + "sourceName": "contracts/facets/utils/AccessControl.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "inputs": [], + "name": "getDefaultAdminRole", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "_role", + "type": "string" + } + ], + "name": "getRole", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "_account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "_account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_role", + "type": "bytes32" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "_account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50610e0f806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80636e9067fb1161005b5780636e9067fb146100ec5780638bb9c5bf1461011c57806391d1485414610138578063d547741f146101685761007d565b8063248a9ca3146100825780632f2ff15d146100b257806352a9c8d7146100ce575b600080fd5b61009c600480360381019061009791906107fd565b610184565b6040516100a99190610839565b60405180910390f35b6100cc60048036038101906100c791906108b2565b610196565b005b6100d66101b5565b6040516100e39190610839565b60405180910390f35b61010660048036038101906101019190610a38565b6101c0565b6040516101139190610839565b60405180910390f35b610136600480360381019061013191906107fd565b6101f0565b005b610152600480360381019061014d91906108b2565b6101fd565b60405161015f9190610a9c565b60405180910390f35b610182600480360381019061017d91906108b2565b610211565b005b600061018f82610230565b9050919050565b6101a76101a283610230565b610259565b6101b18282610265565b5050565b60008060001b905090565b6000816040516020016101d39190610b36565b604051602081830303815290604052805190602001209050919050565b6101fa8133610348565b50565b6000610209838361042c565b905092915050565b61022261021d83610230565b610259565b61022c8282610348565b5050565b600061023a6104a0565b6000016000838152602001908152602001600020600101549050919050565b610262816104cd565b50565b61026f828261042c565b61034457600161027d6104a0565b600001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b610352828261042c565b156104285760006103616104a0565b600001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b60006104366104a0565b600001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000807f4cd15452b25e815d3f9d1a3c7edd985a178edf5eb3461a1acbf855517423d69490508091505090565b6104d781336104da565b50565b6104e4828261042c565b610573576105098173ffffffffffffffffffffffffffffffffffffffff166014610577565b6105178360001c6020610577565b604051602001610528929190610c2c565b6040516020818303038152906040526040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161056a9190610b36565b60405180910390fd5b5050565b60606000600283600261058a9190610c9f565b6105949190610ce1565b67ffffffffffffffff8111156105ad576105ac61090d565b5b6040519080825280601f01601f1916602001820160405280156105df5781602001600182028036833780820191505090505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061061757610616610d15565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061067b5761067a610d15565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026106bb9190610c9f565b6106c59190610ce1565b90505b6001811115610765577f3031323334353637383961626364656600000000000000000000000000000000600f86166010811061070757610706610d15565b5b1a60f81b82828151811061071e5761071d610d15565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c94508061075e90610d44565b90506106c8565b50600084146107a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a090610db9565b60405180910390fd5b8091505092915050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6107da816107c7565b81146107e557600080fd5b50565b6000813590506107f7816107d1565b92915050565b600060208284031215610813576108126107bd565b5b6000610821848285016107e8565b91505092915050565b610833816107c7565b82525050565b600060208201905061084e600083018461082a565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061087f82610854565b9050919050565b61088f81610874565b811461089a57600080fd5b50565b6000813590506108ac81610886565b92915050565b600080604083850312156108c9576108c86107bd565b5b60006108d7858286016107e8565b92505060206108e88582860161089d565b9150509250929050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610945826108fc565b810181811067ffffffffffffffff821117156109645761096361090d565b5b80604052505050565b60006109776107b3565b9050610983828261093c565b919050565b600067ffffffffffffffff8211156109a3576109a261090d565b5b6109ac826108fc565b9050602081019050919050565b82818337600083830152505050565b60006109db6109d684610988565b61096d565b9050828152602081018484840111156109f7576109f66108f7565b5b610a028482856109b9565b509392505050565b600082601f830112610a1f57610a1e6108f2565b5b8135610a2f8482602086016109c8565b91505092915050565b600060208284031215610a4e57610a4d6107bd565b5b600082013567ffffffffffffffff811115610a6c57610a6b6107c2565b5b610a7884828501610a0a565b91505092915050565b60008115159050919050565b610a9681610a81565b82525050565b6000602082019050610ab16000830184610a8d565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610af1578082015181840152602081019050610ad6565b60008484015250505050565b6000610b0882610ab7565b610b128185610ac2565b9350610b22818560208601610ad3565b610b2b816108fc565b840191505092915050565b60006020820190508181036000830152610b508184610afd565b905092915050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000610b99601783610b58565b9150610ba482610b63565b601782019050919050565b6000610bba82610ab7565b610bc48185610b58565b9350610bd4818560208601610ad3565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000610c16601183610b58565b9150610c2182610be0565b601182019050919050565b6000610c3782610b8c565b9150610c438285610baf565b9150610c4e82610c09565b9150610c5a8284610baf565b91508190509392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610caa82610c66565b9150610cb583610c66565b9250828202610cc381610c66565b91508282048414831517610cda57610cd9610c70565b5b5092915050565b6000610cec82610c66565b9150610cf783610c66565b9250828201905080821115610d0f57610d0e610c70565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000610d4f82610c66565b915060008203610d6257610d61610c70565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b6000610da3602083610ac2565b9150610dae82610d6d565b602082019050919050565b60006020820190508181036000830152610dd281610d96565b905091905056fea264697066735822122042ac622ea83961c316d077ee2232dd2ad760e3427df26bce6fe111d4109a0f0e64736f6c63430008120033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c80636e9067fb1161005b5780636e9067fb146100ec5780638bb9c5bf1461011c57806391d1485414610138578063d547741f146101685761007d565b8063248a9ca3146100825780632f2ff15d146100b257806352a9c8d7146100ce575b600080fd5b61009c600480360381019061009791906107fd565b610184565b6040516100a99190610839565b60405180910390f35b6100cc60048036038101906100c791906108b2565b610196565b005b6100d66101b5565b6040516100e39190610839565b60405180910390f35b61010660048036038101906101019190610a38565b6101c0565b6040516101139190610839565b60405180910390f35b610136600480360381019061013191906107fd565b6101f0565b005b610152600480360381019061014d91906108b2565b6101fd565b60405161015f9190610a9c565b60405180910390f35b610182600480360381019061017d91906108b2565b610211565b005b600061018f82610230565b9050919050565b6101a76101a283610230565b610259565b6101b18282610265565b5050565b60008060001b905090565b6000816040516020016101d39190610b36565b604051602081830303815290604052805190602001209050919050565b6101fa8133610348565b50565b6000610209838361042c565b905092915050565b61022261021d83610230565b610259565b61022c8282610348565b5050565b600061023a6104a0565b6000016000838152602001908152602001600020600101549050919050565b610262816104cd565b50565b61026f828261042c565b61034457600161027d6104a0565b600001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b610352828261042c565b156104285760006103616104a0565b600001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b60006104366104a0565b600001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000807f4cd15452b25e815d3f9d1a3c7edd985a178edf5eb3461a1acbf855517423d69490508091505090565b6104d781336104da565b50565b6104e4828261042c565b610573576105098173ffffffffffffffffffffffffffffffffffffffff166014610577565b6105178360001c6020610577565b604051602001610528929190610c2c565b6040516020818303038152906040526040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161056a9190610b36565b60405180910390fd5b5050565b60606000600283600261058a9190610c9f565b6105949190610ce1565b67ffffffffffffffff8111156105ad576105ac61090d565b5b6040519080825280601f01601f1916602001820160405280156105df5781602001600182028036833780820191505090505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061061757610616610d15565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061067b5761067a610d15565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026106bb9190610c9f565b6106c59190610ce1565b90505b6001811115610765577f3031323334353637383961626364656600000000000000000000000000000000600f86166010811061070757610706610d15565b5b1a60f81b82828151811061071e5761071d610d15565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c94508061075e90610d44565b90506106c8565b50600084146107a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a090610db9565b60405180910390fd5b8091505092915050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6107da816107c7565b81146107e557600080fd5b50565b6000813590506107f7816107d1565b92915050565b600060208284031215610813576108126107bd565b5b6000610821848285016107e8565b91505092915050565b610833816107c7565b82525050565b600060208201905061084e600083018461082a565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061087f82610854565b9050919050565b61088f81610874565b811461089a57600080fd5b50565b6000813590506108ac81610886565b92915050565b600080604083850312156108c9576108c86107bd565b5b60006108d7858286016107e8565b92505060206108e88582860161089d565b9150509250929050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610945826108fc565b810181811067ffffffffffffffff821117156109645761096361090d565b5b80604052505050565b60006109776107b3565b9050610983828261093c565b919050565b600067ffffffffffffffff8211156109a3576109a261090d565b5b6109ac826108fc565b9050602081019050919050565b82818337600083830152505050565b60006109db6109d684610988565b61096d565b9050828152602081018484840111156109f7576109f66108f7565b5b610a028482856109b9565b509392505050565b600082601f830112610a1f57610a1e6108f2565b5b8135610a2f8482602086016109c8565b91505092915050565b600060208284031215610a4e57610a4d6107bd565b5b600082013567ffffffffffffffff811115610a6c57610a6b6107c2565b5b610a7884828501610a0a565b91505092915050565b60008115159050919050565b610a9681610a81565b82525050565b6000602082019050610ab16000830184610a8d565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610af1578082015181840152602081019050610ad6565b60008484015250505050565b6000610b0882610ab7565b610b128185610ac2565b9350610b22818560208601610ad3565b610b2b816108fc565b840191505092915050565b60006020820190508181036000830152610b508184610afd565b905092915050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000610b99601783610b58565b9150610ba482610b63565b601782019050919050565b6000610bba82610ab7565b610bc48185610b58565b9350610bd4818560208601610ad3565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000610c16601183610b58565b9150610c2182610be0565b601182019050919050565b6000610c3782610b8c565b9150610c438285610baf565b9150610c4e82610c09565b9150610c5a8284610baf565b91508190509392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610caa82610c66565b9150610cb583610c66565b9250828202610cc381610c66565b91508282048414831517610cda57610cd9610c70565b5b5092915050565b6000610cec82610c66565b9150610cf783610c66565b9250828201905080821115610d0f57610d0e610c70565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000610d4f82610c66565b915060008203610d6257610d61610c70565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b6000610da3602083610ac2565b9150610dae82610d6d565b602082019050919050565b60006020820190508181036000830152610dd281610d96565b905091905056fea264697066735822122042ac622ea83961c316d077ee2232dd2ad760e3427df26bce6fe111d4109a0f0e64736f6c63430008120033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/contracts/facets/utils/Cut.sol/Cut.dbg.json b/contracts/artifacts/contracts/facets/utils/Cut.sol/Cut.dbg.json new file mode 100644 index 0000000..34fe4dc --- /dev/null +++ b/contracts/artifacts/contracts/facets/utils/Cut.sol/Cut.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/ba9437438ec2715393320ce18780bccb.json" +} diff --git a/contracts/artifacts/contracts/facets/utils/Cut.sol/Cut.json b/contracts/artifacts/contracts/facets/utils/Cut.sol/Cut.json new file mode 100644 index 0000000..df36267 --- /dev/null +++ b/contracts/artifacts/contracts/facets/utils/Cut.sol/Cut.json @@ -0,0 +1,109 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Cut", + "sourceName": "contracts/facets/utils/Cut.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_initializationContractAddress", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_calldata", + "type": "bytes" + } + ], + "name": "InitializationFunctionReverted", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "facetAddress", + "type": "address" + }, + { + "internalType": "enum ICut.FacetCutAction", + "name": "action", + "type": "uint8" + }, + { + "internalType": "bytes4[]", + "name": "functionSelectors", + "type": "bytes4[]" + } + ], + "indexed": false, + "internalType": "struct ICut.FacetCut[]", + "name": "_diamondCut", + "type": "tuple[]" + }, + { + "indexed": false, + "internalType": "address", + "name": "_init", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "_calldata", + "type": "bytes" + } + ], + "name": "DiamondCut", + "type": "event" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "facetAddress", + "type": "address" + }, + { + "internalType": "enum ICut.FacetCutAction", + "name": "action", + "type": "uint8" + }, + { + "internalType": "bytes4[]", + "name": "functionSelectors", + "type": "bytes4[]" + } + ], + "internalType": "struct ICut.FacetCut[]", + "name": "_diamondCut", + "type": "tuple[]" + }, + { + "internalType": "address", + "name": "_init", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_calldata", + "type": "bytes" + } + ], + "name": "diamondCut", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b506129a4806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80631f931c1c14610030575b600080fd5b61004a600480360381019061004591906118d8565b61004c565b005b61007960405160200161005e906119ca565b604051602081830303815290604052805190602001206100db565b6100d48585906100899190611cf3565b8484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506100e7565b5050505050565b6100e481610316565b50565b60005b83518110156102cb57600084828151811061010857610107611d08565b5b60200260200101516020015190506000600281111561012a57610129611d37565b5b81600281111561013d5761013c611d37565b5b0361018d5761018885838151811061015857610157611d08565b5b60200260200101516000015186848151811061017757610176611d08565b5b602002602001015160400151610323565b6102b7565b600160028111156101a1576101a0611d37565b5b8160028111156101b4576101b3611d37565b5b03610204576101ff8583815181106101cf576101ce611d08565b5b6020026020010151600001518684815181106101ee576101ed611d08565b5b60200260200101516040015161059a565b6102b6565b60028081111561021757610216611d37565b5b81600281111561022a57610229611d37565b5b0361027a5761027585838151811061024557610244611d08565b5b60200260200101516000015186848151811061026457610263611d08565b5b60200260200101516040015161081b565b6102b5565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102ac90611dd8565b60405180910390fd5b5b5b5080806102c390611e31565b9150506100ea565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb6738383836040516102ff9392919061212e565b60405180910390a161031182826109a6565b505050565b6103208133610ac8565b50565b6000815111610367576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035e906121e5565b60405180910390fd5b6000610371610b65565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036103e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d990612277565b60405180910390fd5b60008160010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054905090506000816bffffffffffffffffffffffff160361044f5761044e8285610b92565b5b60005b83518110156105935760008482815181106104705761046f611d08565b5b602002602001015190506000846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610564576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055b90612309565b60405180910390fd5b6105708583868a610c6d565b838061057b90612341565b9450505050808061058b90611e31565b915050610452565b5050505050565b60008151116105de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d5906121e5565b60405180910390fd5b60006105e8610b65565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610659576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065090612277565b60405180910390fd5b60008160010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054905090506000816bffffffffffffffffffffffff16036106c6576106c58285610b92565b5b60005b83518110156108145760008482815181106106e7576106e6611d08565b5b602002602001015190506000846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036107da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d1906123e7565b60405180910390fd5b6107e5858284610e1a565b6107f18583868a610c6d565b83806107fc90612341565b9450505050808061080c90611e31565b9150506106c9565b5050505050565b600081511161085f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610856906121e5565b60405180910390fd5b6000610869610b65565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146108da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d190612479565b60405180910390fd5b60005b82518110156109a05760008382815181106108fb576108fa611d08565b5b602002602001015190506000836000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061098b848284610e1a565b5050808061099890611e31565b9150506108dd565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160315610ac4576109fd826040518060600160405280602881526020016129236028913961147c565b6000808373ffffffffffffffffffffffffffffffffffffffff1683604051610a2591906124d5565b600060405180830381855af49150503d8060008114610a60576040519150601f19603f3d011682016040523d82523d6000602084013e610a65565b606091505b509150915081610ac157600081511115610a825780518082602001fd5b83836040517f192105d7000000000000000000000000000000000000000000000000000000008152600401610ab89291906124ec565b60405180910390fd5b50505b5050565b610ad282826114ce565b610b6157610af78173ffffffffffffffffffffffffffffffffffffffff166014611542565b610b058360001c6020611542565b604051602001610b169291906125fb565b6040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b58919061266e565b60405180910390fd5b5050565b6000807fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90508091505090565b610bb48160405180606001604052806024815260200161294b6024913961147c565b81600201805490508260010160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555081600201819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b81846000016000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508360010160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018390806001815401808255809150506001900390600052602060002090600891828204019190066004029091909190916101000a81548163ffffffff021916908360e01c021790555080846000016000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8090612702565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ef7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eee90612794565b60405180910390fd5b6000836000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff169050600060018560010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000180549050610fce91906127b4565b90508082146111625760008560010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001828154811061102f5761102e611d08565b5b90600052602060002090600891828204019190066004029054906101000a900460e01b9050808660010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000184815481106110ab576110aa611d08565b5b90600052602060002090600891828204019190066004026101000a81548163ffffffff021916908360e01c021790555082866000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550505b8460010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054806111b6576111b56127e8565b5b60019003818190600052602060002090600891828204019190066004026101000a81549063ffffffff02191690559055846000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a8154906bffffffffffffffffffffffff0219169055505060008103611475576000600186600201805490506112a091906127b4565b905060008660010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490508181146113e157600087600201838154811061130a57611309611d08565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508088600201838154811061134e5761134d611d08565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818860010160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550505b866002018054806113f5576113f46127e8565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590558660010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000905550505b5050505050565b6000823b90506000811182906114c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bf919061266e565b60405180910390fd5b50505050565b60006114d861177e565b600001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6060600060028360026115559190612817565b61155f9190612859565b67ffffffffffffffff811115611578576115776119fb565b5b6040519080825280601f01601f1916602001820160405280156115aa5781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106115e2576115e1611d08565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061164657611645611d08565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026116869190612817565b6116909190612859565b90505b6001811115611730577f3031323334353637383961626364656600000000000000000000000000000000600f8616601081106116d2576116d1611d08565b5b1a60f81b8282815181106116e9576116e8611d08565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c9450806117299061288d565b9050611693565b5060008414611774576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176b90612902565b60405180910390fd5b8091505092915050565b6000807f4cd15452b25e815d3f9d1a3c7edd985a178edf5eb3461a1acbf855517423d69490508091505090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f8401126117e4576117e36117bf565b5b8235905067ffffffffffffffff811115611801576118006117c4565b5b60208301915083602082028301111561181d5761181c6117c9565b5b9250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061184f82611824565b9050919050565b61185f81611844565b811461186a57600080fd5b50565b60008135905061187c81611856565b92915050565b60008083601f840112611898576118976117bf565b5b8235905067ffffffffffffffff8111156118b5576118b46117c4565b5b6020830191508360018202830111156118d1576118d06117c9565b5b9250929050565b6000806000806000606086880312156118f4576118f36117b5565b5b600086013567ffffffffffffffff811115611912576119116117ba565b5b61191e888289016117ce565b955095505060206119318882890161186d565b935050604086013567ffffffffffffffff811115611952576119516117ba565b5b61195e88828901611882565b92509250509295509295909350565b600082825260208201905092915050565b7f4d41494e5441494e45525f524f4c450000000000000000000000000000000000600082015250565b60006119b4600f8361196d565b91506119bf8261197e565b602082019050919050565b600060208201905081810360008301526119e3816119a7565b9050919050565b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611a33826119ea565b810181811067ffffffffffffffff82111715611a5257611a516119fb565b5b80604052505050565b6000611a656117ab565b9050611a718282611a2a565b919050565b600067ffffffffffffffff821115611a9157611a906119fb565b5b602082029050602081019050919050565b600080fd5b600080fd5b60038110611ab957600080fd5b50565b600081359050611acb81611aac565b92915050565b600067ffffffffffffffff821115611aec57611aeb6119fb565b5b602082029050602081019050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611b3281611afd565b8114611b3d57600080fd5b50565b600081359050611b4f81611b29565b92915050565b6000611b68611b6384611ad1565b611a5b565b90508083825260208201905060208402830185811115611b8b57611b8a6117c9565b5b835b81811015611bb45780611ba08882611b40565b845260208401935050602081019050611b8d565b5050509392505050565b600082601f830112611bd357611bd26117bf565b5b8135611be3848260208601611b55565b91505092915050565b600060608284031215611c0257611c01611aa2565b5b611c0c6060611a5b565b90506000611c1c8482850161186d565b6000830152506020611c3084828501611abc565b602083015250604082013567ffffffffffffffff811115611c5457611c53611aa7565b5b611c6084828501611bbe565b60408301525092915050565b6000611c7f611c7a84611a76565b611a5b565b90508083825260208201905060208402830185811115611ca257611ca16117c9565b5b835b81811015611ce957803567ffffffffffffffff811115611cc757611cc66117bf565b5b808601611cd48982611bec565b85526020850194505050602081019050611ca4565b5050509392505050565b6000611d00368484611c6c565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4c69624469616d6f6e644375743a20496e636f7272656374204661636574437560008201527f74416374696f6e00000000000000000000000000000000000000000000000000602082015250565b6000611dc260278361196d565b9150611dcd82611d66565b604082019050919050565b60006020820190508181036000830152611df181611db5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000819050919050565b6000611e3c82611e27565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611e6e57611e6d611df8565b5b600182019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b611eae81611844565b82525050565b60038110611ec557611ec4611d37565b5b50565b6000819050611ed682611eb4565b919050565b6000611ee682611ec8565b9050919050565b611ef681611edb565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b611f3181611afd565b82525050565b6000611f438383611f28565b60208301905092915050565b6000602082019050919050565b6000611f6782611efc565b611f718185611f07565b9350611f7c83611f18565b8060005b83811015611fad578151611f948882611f37565b9750611f9f83611f4f565b925050600181019050611f80565b5085935050505092915050565b6000606083016000830151611fd26000860182611ea5565b506020830151611fe56020860182611eed565b5060408301518482036040860152611ffd8282611f5c565b9150508091505092915050565b60006120168383611fba565b905092915050565b6000602082019050919050565b600061203682611e79565b6120408185611e84565b93508360208202850161205285611e95565b8060005b8581101561208e578484038952815161206f858261200a565b945061207a8361201e565b925060208a01995050600181019050612056565b50829750879550505050505092915050565b6120a981611844565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b838110156120e95780820151818401526020810190506120ce565b60008484015250505050565b6000612100826120af565b61210a81856120ba565b935061211a8185602086016120cb565b612123816119ea565b840191505092915050565b60006060820190508181036000830152612148818661202b565b905061215760208301856120a0565b818103604083015261216981846120f5565b9050949350505050565b7f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660008201527f6163657420746f20637574000000000000000000000000000000000000000000602082015250565b60006121cf602b8361196d565b91506121da82612173565b604082019050919050565b600060208201905081810360008301526121fe816121c2565b9050919050565b7f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260008201527f6520616464726573732830290000000000000000000000000000000000000000602082015250565b6000612261602c8361196d565b915061226c82612205565b604082019050919050565b6000602082019050818103600083015261229081612254565b9050919050565b7f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f60008201527f6e207468617420616c7265616479206578697374730000000000000000000000602082015250565b60006122f360358361196d565b91506122fe82612297565b604082019050919050565b60006020820190508181036000830152612322816122e6565b9050919050565b60006bffffffffffffffffffffffff82169050919050565b600061234c82612329565b91506bffffffffffffffffffffffff820361236a57612369611df8565b5b600182019050919050565b7f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60008201527f6374696f6e20776974682073616d652066756e6374696f6e0000000000000000602082015250565b60006123d160388361196d565b91506123dc82612375565b604082019050919050565b60006020820190508181036000830152612400816123c4565b9050919050565b7f4c69624469616d6f6e644375743a2052656d6f7665206661636574206164647260008201527f657373206d757374206265206164647265737328302900000000000000000000602082015250565b600061246360368361196d565b915061246e82612407565b604082019050919050565b6000602082019050818103600083015261249281612456565b9050919050565b600081905092915050565b60006124af826120af565b6124b98185612499565b93506124c98185602086016120cb565b80840191505092915050565b60006124e182846124a4565b915081905092915050565b600060408201905061250160008301856120a0565b818103602083015261251381846120f5565b90509392505050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b600061255d60178361251c565b915061256882612527565b601782019050919050565b600081519050919050565b600061258982612573565b612593818561251c565b93506125a38185602086016120cb565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b60006125e560118361251c565b91506125f0826125af565b601182019050919050565b600061260682612550565b9150612612828561257e565b915061261d826125d8565b9150612629828461257e565b91508190509392505050565b600061264082612573565b61264a818561196d565b935061265a8185602086016120cb565b612663816119ea565b840191505092915050565b600060208201905081810360008301526126888184612635565b905092915050565b7f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360008201527f74696f6e207468617420646f65736e2774206578697374000000000000000000602082015250565b60006126ec60378361196d565b91506126f782612690565b604082019050919050565b6000602082019050818103600083015261271b816126df565b9050919050565b7f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560008201527f7461626c652066756e6374696f6e000000000000000000000000000000000000602082015250565b600061277e602e8361196d565b915061278982612722565b604082019050919050565b600060208201905081810360008301526127ad81612771565b9050919050565b60006127bf82611e27565b91506127ca83611e27565b92508282039050818111156127e2576127e1611df8565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600061282282611e27565b915061282d83611e27565b925082820261283b81611e27565b9150828204841483151761285257612851611df8565b5b5092915050565b600061286482611e27565b915061286f83611e27565b925082820190508082111561288757612886611df8565b5b92915050565b600061289882611e27565b9150600082036128ab576128aa611df8565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b60006128ec60208361196d565b91506128f7826128b6565b602082019050919050565b6000602082019050818103600083015261291b816128df565b905091905056fe4c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465a2646970667358221220fc93d6581ef88c003694ad3b7847e83e3748d87f743d9a64c8f96766c27475c564736f6c63430008120033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c80631f931c1c14610030575b600080fd5b61004a600480360381019061004591906118d8565b61004c565b005b61007960405160200161005e906119ca565b604051602081830303815290604052805190602001206100db565b6100d48585906100899190611cf3565b8484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506100e7565b5050505050565b6100e481610316565b50565b60005b83518110156102cb57600084828151811061010857610107611d08565b5b60200260200101516020015190506000600281111561012a57610129611d37565b5b81600281111561013d5761013c611d37565b5b0361018d5761018885838151811061015857610157611d08565b5b60200260200101516000015186848151811061017757610176611d08565b5b602002602001015160400151610323565b6102b7565b600160028111156101a1576101a0611d37565b5b8160028111156101b4576101b3611d37565b5b03610204576101ff8583815181106101cf576101ce611d08565b5b6020026020010151600001518684815181106101ee576101ed611d08565b5b60200260200101516040015161059a565b6102b6565b60028081111561021757610216611d37565b5b81600281111561022a57610229611d37565b5b0361027a5761027585838151811061024557610244611d08565b5b60200260200101516000015186848151811061026457610263611d08565b5b60200260200101516040015161081b565b6102b5565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102ac90611dd8565b60405180910390fd5b5b5b5080806102c390611e31565b9150506100ea565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb6738383836040516102ff9392919061212e565b60405180910390a161031182826109a6565b505050565b6103208133610ac8565b50565b6000815111610367576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035e906121e5565b60405180910390fd5b6000610371610b65565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036103e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d990612277565b60405180910390fd5b60008160010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054905090506000816bffffffffffffffffffffffff160361044f5761044e8285610b92565b5b60005b83518110156105935760008482815181106104705761046f611d08565b5b602002602001015190506000846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610564576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055b90612309565b60405180910390fd5b6105708583868a610c6d565b838061057b90612341565b9450505050808061058b90611e31565b915050610452565b5050505050565b60008151116105de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d5906121e5565b60405180910390fd5b60006105e8610b65565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610659576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065090612277565b60405180910390fd5b60008160010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054905090506000816bffffffffffffffffffffffff16036106c6576106c58285610b92565b5b60005b83518110156108145760008482815181106106e7576106e6611d08565b5b602002602001015190506000846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036107da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d1906123e7565b60405180910390fd5b6107e5858284610e1a565b6107f18583868a610c6d565b83806107fc90612341565b9450505050808061080c90611e31565b9150506106c9565b5050505050565b600081511161085f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610856906121e5565b60405180910390fd5b6000610869610b65565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146108da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d190612479565b60405180910390fd5b60005b82518110156109a05760008382815181106108fb576108fa611d08565b5b602002602001015190506000836000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061098b848284610e1a565b5050808061099890611e31565b9150506108dd565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160315610ac4576109fd826040518060600160405280602881526020016129236028913961147c565b6000808373ffffffffffffffffffffffffffffffffffffffff1683604051610a2591906124d5565b600060405180830381855af49150503d8060008114610a60576040519150601f19603f3d011682016040523d82523d6000602084013e610a65565b606091505b509150915081610ac157600081511115610a825780518082602001fd5b83836040517f192105d7000000000000000000000000000000000000000000000000000000008152600401610ab89291906124ec565b60405180910390fd5b50505b5050565b610ad282826114ce565b610b6157610af78173ffffffffffffffffffffffffffffffffffffffff166014611542565b610b058360001c6020611542565b604051602001610b169291906125fb565b6040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b58919061266e565b60405180910390fd5b5050565b6000807fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90508091505090565b610bb48160405180606001604052806024815260200161294b6024913961147c565b81600201805490508260010160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555081600201819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b81846000016000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508360010160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018390806001815401808255809150506001900390600052602060002090600891828204019190066004029091909190916101000a81548163ffffffff021916908360e01c021790555080846000016000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8090612702565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ef7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eee90612794565b60405180910390fd5b6000836000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff169050600060018560010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000180549050610fce91906127b4565b90508082146111625760008560010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001828154811061102f5761102e611d08565b5b90600052602060002090600891828204019190066004029054906101000a900460e01b9050808660010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000184815481106110ab576110aa611d08565b5b90600052602060002090600891828204019190066004026101000a81548163ffffffff021916908360e01c021790555082866000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550505b8460010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054806111b6576111b56127e8565b5b60019003818190600052602060002090600891828204019190066004026101000a81549063ffffffff02191690559055846000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a8154906bffffffffffffffffffffffff0219169055505060008103611475576000600186600201805490506112a091906127b4565b905060008660010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490508181146113e157600087600201838154811061130a57611309611d08565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508088600201838154811061134e5761134d611d08565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818860010160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550505b866002018054806113f5576113f46127e8565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590558660010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000905550505b5050505050565b6000823b90506000811182906114c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bf919061266e565b60405180910390fd5b50505050565b60006114d861177e565b600001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6060600060028360026115559190612817565b61155f9190612859565b67ffffffffffffffff811115611578576115776119fb565b5b6040519080825280601f01601f1916602001820160405280156115aa5781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106115e2576115e1611d08565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061164657611645611d08565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026116869190612817565b6116909190612859565b90505b6001811115611730577f3031323334353637383961626364656600000000000000000000000000000000600f8616601081106116d2576116d1611d08565b5b1a60f81b8282815181106116e9576116e8611d08565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c9450806117299061288d565b9050611693565b5060008414611774576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176b90612902565b60405180910390fd5b8091505092915050565b6000807f4cd15452b25e815d3f9d1a3c7edd985a178edf5eb3461a1acbf855517423d69490508091505090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f8401126117e4576117e36117bf565b5b8235905067ffffffffffffffff811115611801576118006117c4565b5b60208301915083602082028301111561181d5761181c6117c9565b5b9250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061184f82611824565b9050919050565b61185f81611844565b811461186a57600080fd5b50565b60008135905061187c81611856565b92915050565b60008083601f840112611898576118976117bf565b5b8235905067ffffffffffffffff8111156118b5576118b46117c4565b5b6020830191508360018202830111156118d1576118d06117c9565b5b9250929050565b6000806000806000606086880312156118f4576118f36117b5565b5b600086013567ffffffffffffffff811115611912576119116117ba565b5b61191e888289016117ce565b955095505060206119318882890161186d565b935050604086013567ffffffffffffffff811115611952576119516117ba565b5b61195e88828901611882565b92509250509295509295909350565b600082825260208201905092915050565b7f4d41494e5441494e45525f524f4c450000000000000000000000000000000000600082015250565b60006119b4600f8361196d565b91506119bf8261197e565b602082019050919050565b600060208201905081810360008301526119e3816119a7565b9050919050565b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611a33826119ea565b810181811067ffffffffffffffff82111715611a5257611a516119fb565b5b80604052505050565b6000611a656117ab565b9050611a718282611a2a565b919050565b600067ffffffffffffffff821115611a9157611a906119fb565b5b602082029050602081019050919050565b600080fd5b600080fd5b60038110611ab957600080fd5b50565b600081359050611acb81611aac565b92915050565b600067ffffffffffffffff821115611aec57611aeb6119fb565b5b602082029050602081019050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611b3281611afd565b8114611b3d57600080fd5b50565b600081359050611b4f81611b29565b92915050565b6000611b68611b6384611ad1565b611a5b565b90508083825260208201905060208402830185811115611b8b57611b8a6117c9565b5b835b81811015611bb45780611ba08882611b40565b845260208401935050602081019050611b8d565b5050509392505050565b600082601f830112611bd357611bd26117bf565b5b8135611be3848260208601611b55565b91505092915050565b600060608284031215611c0257611c01611aa2565b5b611c0c6060611a5b565b90506000611c1c8482850161186d565b6000830152506020611c3084828501611abc565b602083015250604082013567ffffffffffffffff811115611c5457611c53611aa7565b5b611c6084828501611bbe565b60408301525092915050565b6000611c7f611c7a84611a76565b611a5b565b90508083825260208201905060208402830185811115611ca257611ca16117c9565b5b835b81811015611ce957803567ffffffffffffffff811115611cc757611cc66117bf565b5b808601611cd48982611bec565b85526020850194505050602081019050611ca4565b5050509392505050565b6000611d00368484611c6c565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4c69624469616d6f6e644375743a20496e636f7272656374204661636574437560008201527f74416374696f6e00000000000000000000000000000000000000000000000000602082015250565b6000611dc260278361196d565b9150611dcd82611d66565b604082019050919050565b60006020820190508181036000830152611df181611db5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000819050919050565b6000611e3c82611e27565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611e6e57611e6d611df8565b5b600182019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b611eae81611844565b82525050565b60038110611ec557611ec4611d37565b5b50565b6000819050611ed682611eb4565b919050565b6000611ee682611ec8565b9050919050565b611ef681611edb565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b611f3181611afd565b82525050565b6000611f438383611f28565b60208301905092915050565b6000602082019050919050565b6000611f6782611efc565b611f718185611f07565b9350611f7c83611f18565b8060005b83811015611fad578151611f948882611f37565b9750611f9f83611f4f565b925050600181019050611f80565b5085935050505092915050565b6000606083016000830151611fd26000860182611ea5565b506020830151611fe56020860182611eed565b5060408301518482036040860152611ffd8282611f5c565b9150508091505092915050565b60006120168383611fba565b905092915050565b6000602082019050919050565b600061203682611e79565b6120408185611e84565b93508360208202850161205285611e95565b8060005b8581101561208e578484038952815161206f858261200a565b945061207a8361201e565b925060208a01995050600181019050612056565b50829750879550505050505092915050565b6120a981611844565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b838110156120e95780820151818401526020810190506120ce565b60008484015250505050565b6000612100826120af565b61210a81856120ba565b935061211a8185602086016120cb565b612123816119ea565b840191505092915050565b60006060820190508181036000830152612148818661202b565b905061215760208301856120a0565b818103604083015261216981846120f5565b9050949350505050565b7f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660008201527f6163657420746f20637574000000000000000000000000000000000000000000602082015250565b60006121cf602b8361196d565b91506121da82612173565b604082019050919050565b600060208201905081810360008301526121fe816121c2565b9050919050565b7f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260008201527f6520616464726573732830290000000000000000000000000000000000000000602082015250565b6000612261602c8361196d565b915061226c82612205565b604082019050919050565b6000602082019050818103600083015261229081612254565b9050919050565b7f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f60008201527f6e207468617420616c7265616479206578697374730000000000000000000000602082015250565b60006122f360358361196d565b91506122fe82612297565b604082019050919050565b60006020820190508181036000830152612322816122e6565b9050919050565b60006bffffffffffffffffffffffff82169050919050565b600061234c82612329565b91506bffffffffffffffffffffffff820361236a57612369611df8565b5b600182019050919050565b7f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60008201527f6374696f6e20776974682073616d652066756e6374696f6e0000000000000000602082015250565b60006123d160388361196d565b91506123dc82612375565b604082019050919050565b60006020820190508181036000830152612400816123c4565b9050919050565b7f4c69624469616d6f6e644375743a2052656d6f7665206661636574206164647260008201527f657373206d757374206265206164647265737328302900000000000000000000602082015250565b600061246360368361196d565b915061246e82612407565b604082019050919050565b6000602082019050818103600083015261249281612456565b9050919050565b600081905092915050565b60006124af826120af565b6124b98185612499565b93506124c98185602086016120cb565b80840191505092915050565b60006124e182846124a4565b915081905092915050565b600060408201905061250160008301856120a0565b818103602083015261251381846120f5565b90509392505050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b600061255d60178361251c565b915061256882612527565b601782019050919050565b600081519050919050565b600061258982612573565b612593818561251c565b93506125a38185602086016120cb565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b60006125e560118361251c565b91506125f0826125af565b601182019050919050565b600061260682612550565b9150612612828561257e565b915061261d826125d8565b9150612629828461257e565b91508190509392505050565b600061264082612573565b61264a818561196d565b935061265a8185602086016120cb565b612663816119ea565b840191505092915050565b600060208201905081810360008301526126888184612635565b905092915050565b7f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360008201527f74696f6e207468617420646f65736e2774206578697374000000000000000000602082015250565b60006126ec60378361196d565b91506126f782612690565b604082019050919050565b6000602082019050818103600083015261271b816126df565b9050919050565b7f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560008201527f7461626c652066756e6374696f6e000000000000000000000000000000000000602082015250565b600061277e602e8361196d565b915061278982612722565b604082019050919050565b600060208201905081810360008301526127ad81612771565b9050919050565b60006127bf82611e27565b91506127ca83611e27565b92508282039050818111156127e2576127e1611df8565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600061282282611e27565b915061282d83611e27565b925082820261283b81611e27565b9150828204841483151761285257612851611df8565b5b5092915050565b600061286482611e27565b915061286f83611e27565b925082820190508082111561288757612886611df8565b5b92915050565b600061289882611e27565b9150600082036128ab576128aa611df8565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b60006128ec60208361196d565b91506128f7826128b6565b602082019050919050565b6000602082019050818103600083015261291b816128df565b905091905056fe4c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465a2646970667358221220fc93d6581ef88c003694ad3b7847e83e3748d87f743d9a64c8f96766c27475c564736f6c63430008120033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/contracts/facets/utils/Loupe.sol/Loupe.dbg.json b/contracts/artifacts/contracts/facets/utils/Loupe.sol/Loupe.dbg.json new file mode 100644 index 0000000..34fe4dc --- /dev/null +++ b/contracts/artifacts/contracts/facets/utils/Loupe.sol/Loupe.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/ba9437438ec2715393320ce18780bccb.json" +} diff --git a/contracts/artifacts/contracts/facets/utils/Loupe.sol/Loupe.json b/contracts/artifacts/contracts/facets/utils/Loupe.sol/Loupe.json new file mode 100644 index 0000000..f309ad2 --- /dev/null +++ b/contracts/artifacts/contracts/facets/utils/Loupe.sol/Loupe.json @@ -0,0 +1,106 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Loupe", + "sourceName": "contracts/facets/utils/Loupe.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "bytes4", + "name": "_functionSelector", + "type": "bytes4" + } + ], + "name": "facetAddress", + "outputs": [ + { + "internalType": "address", + "name": "facetAddress_", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "facetAddresses", + "outputs": [ + { + "internalType": "address[]", + "name": "facetAddresses_", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_facet", + "type": "address" + } + ], + "name": "facetFunctionSelectors", + "outputs": [ + { + "internalType": "bytes4[]", + "name": "facetFunctionSelectors_", + "type": "bytes4[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "facets", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "facetAddress", + "type": "address" + }, + { + "internalType": "bytes4[]", + "name": "functionSelectors", + "type": "bytes4[]" + } + ], + "internalType": "struct ILoupe.Facet[]", + "name": "facets_", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "_interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50610c0c806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c806301ffc9a71461005c57806352ef6b2c1461008c5780637a0ed627146100aa578063adfca15e146100c8578063cdffacc6146100f8575b600080fd5b6100766004803603810190610071919061068f565b610128565b60405161008391906106d7565b60405180910390f35b61009461019e565b6040516100a191906107e2565b60405180910390f35b6100b261023b565b6040516100bf91906109c1565b60405180910390f35b6100e260048036038101906100dd9190610a0f565b61045e565b6040516100ef9190610aab565b60405180910390f35b610112600480360381019061010d919061068f565b610549565b60405161011f9190610adc565b60405180910390f35b6000806101336105d5565b9050806003016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff16915050919050565b606060006101aa6105d5565b90508060020180548060200260200160405190810160405280929190818152602001828054801561023057602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116101e6575b505050505091505090565b606060006102476105d5565b90506000816002018054905090508067ffffffffffffffff81111561026f5761026e610af7565b5b6040519080825280602002602001820160405280156102a857816020015b610295610602565b81526020019060019003908161028d5790505b50925060005b818110156104585760008360020182815481106102ce576102cd610b26565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508085838151811061030f5761030e610b26565b5b60200260200101516000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508360010160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000180548060200260200160405190810160405280929190818152602001828054801561041d57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116103ca5790505b505050505085838151811061043557610434610b26565b5b60200260200101516020018190525050808061045090610b8e565b9150506102ae565b50505090565b6060600061046a6105d5565b90508060010160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000180548060200260200160405190810160405280929190818152602001828054801561053c57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116104e95790505b5050505050915050919050565b6000806105546105d5565b9050806000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915050919050565b6000807fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90508091505090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61066c81610637565b811461067757600080fd5b50565b60008135905061068981610663565b92915050565b6000602082840312156106a5576106a4610632565b5b60006106b38482850161067a565b91505092915050565b60008115159050919050565b6106d1816106bc565b82525050565b60006020820190506106ec60008301846106c8565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006107498261071e565b9050919050565b6107598161073e565b82525050565b600061076b8383610750565b60208301905092915050565b6000602082019050919050565b600061078f826106f2565b61079981856106fd565b93506107a48361070e565b8060005b838110156107d55781516107bc888261075f565b97506107c783610777565b9250506001810190506107a8565b5085935050505092915050565b600060208201905081810360008301526107fc8184610784565b905092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61086581610637565b82525050565b6000610877838361085c565b60208301905092915050565b6000602082019050919050565b600061089b82610830565b6108a5818561083b565b93506108b08361084c565b8060005b838110156108e15781516108c8888261086b565b97506108d383610883565b9250506001810190506108b4565b5085935050505092915050565b60006040830160008301516109066000860182610750565b506020830151848203602086015261091e8282610890565b9150508091505092915050565b600061093783836108ee565b905092915050565b6000602082019050919050565b600061095782610804565b610961818561080f565b93508360208202850161097385610820565b8060005b858110156109af5784840389528151610990858261092b565b945061099b8361093f565b925060208a01995050600181019050610977565b50829750879550505050505092915050565b600060208201905081810360008301526109db818461094c565b905092915050565b6109ec8161073e565b81146109f757600080fd5b50565b600081359050610a09816109e3565b92915050565b600060208284031215610a2557610a24610632565b5b6000610a33848285016109fa565b91505092915050565b600082825260208201905092915050565b6000610a5882610830565b610a628185610a3c565b9350610a6d8361084c565b8060005b83811015610a9e578151610a85888261086b565b9750610a9083610883565b925050600181019050610a71565b5085935050505092915050565b60006020820190508181036000830152610ac58184610a4d565b905092915050565b610ad68161073e565b82525050565b6000602082019050610af16000830184610acd565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000819050919050565b6000610b9982610b84565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610bcb57610bca610b55565b5b60018201905091905056fea2646970667358221220805c03d17666dad7df5b576a9739aec3ff4e9c57502765e60e3dea1b8433247b64736f6c63430008120033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100575760003560e01c806301ffc9a71461005c57806352ef6b2c1461008c5780637a0ed627146100aa578063adfca15e146100c8578063cdffacc6146100f8575b600080fd5b6100766004803603810190610071919061068f565b610128565b60405161008391906106d7565b60405180910390f35b61009461019e565b6040516100a191906107e2565b60405180910390f35b6100b261023b565b6040516100bf91906109c1565b60405180910390f35b6100e260048036038101906100dd9190610a0f565b61045e565b6040516100ef9190610aab565b60405180910390f35b610112600480360381019061010d919061068f565b610549565b60405161011f9190610adc565b60405180910390f35b6000806101336105d5565b9050806003016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff16915050919050565b606060006101aa6105d5565b90508060020180548060200260200160405190810160405280929190818152602001828054801561023057602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116101e6575b505050505091505090565b606060006102476105d5565b90506000816002018054905090508067ffffffffffffffff81111561026f5761026e610af7565b5b6040519080825280602002602001820160405280156102a857816020015b610295610602565b81526020019060019003908161028d5790505b50925060005b818110156104585760008360020182815481106102ce576102cd610b26565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508085838151811061030f5761030e610b26565b5b60200260200101516000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508360010160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000180548060200260200160405190810160405280929190818152602001828054801561041d57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116103ca5790505b505050505085838151811061043557610434610b26565b5b60200260200101516020018190525050808061045090610b8e565b9150506102ae565b50505090565b6060600061046a6105d5565b90508060010160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000180548060200260200160405190810160405280929190818152602001828054801561053c57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116104e95790505b5050505050915050919050565b6000806105546105d5565b9050806000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915050919050565b6000807fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90508091505090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61066c81610637565b811461067757600080fd5b50565b60008135905061068981610663565b92915050565b6000602082840312156106a5576106a4610632565b5b60006106b38482850161067a565b91505092915050565b60008115159050919050565b6106d1816106bc565b82525050565b60006020820190506106ec60008301846106c8565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006107498261071e565b9050919050565b6107598161073e565b82525050565b600061076b8383610750565b60208301905092915050565b6000602082019050919050565b600061078f826106f2565b61079981856106fd565b93506107a48361070e565b8060005b838110156107d55781516107bc888261075f565b97506107c783610777565b9250506001810190506107a8565b5085935050505092915050565b600060208201905081810360008301526107fc8184610784565b905092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61086581610637565b82525050565b6000610877838361085c565b60208301905092915050565b6000602082019050919050565b600061089b82610830565b6108a5818561083b565b93506108b08361084c565b8060005b838110156108e15781516108c8888261086b565b97506108d383610883565b9250506001810190506108b4565b5085935050505092915050565b60006040830160008301516109066000860182610750565b506020830151848203602086015261091e8282610890565b9150508091505092915050565b600061093783836108ee565b905092915050565b6000602082019050919050565b600061095782610804565b610961818561080f565b93508360208202850161097385610820565b8060005b858110156109af5784840389528151610990858261092b565b945061099b8361093f565b925060208a01995050600181019050610977565b50829750879550505050505092915050565b600060208201905081810360008301526109db818461094c565b905092915050565b6109ec8161073e565b81146109f757600080fd5b50565b600081359050610a09816109e3565b92915050565b600060208284031215610a2557610a24610632565b5b6000610a33848285016109fa565b91505092915050565b600082825260208201905092915050565b6000610a5882610830565b610a628185610a3c565b9350610a6d8361084c565b8060005b83811015610a9e578151610a85888261086b565b9750610a9083610883565b925050600181019050610a71565b5085935050505092915050565b60006020820190508181036000830152610ac58184610a4d565b905092915050565b610ad68161073e565b82525050565b6000602082019050610af16000830184610acd565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000819050919050565b6000610b9982610b84565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610bcb57610bca610b55565b5b60018201905091905056fea2646970667358221220805c03d17666dad7df5b576a9739aec3ff4e9c57502765e60e3dea1b8433247b64736f6c63430008120033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/contracts/facets/utils/Utility.sol/Utility.dbg.json b/contracts/artifacts/contracts/facets/utils/Utility.sol/Utility.dbg.json new file mode 100644 index 0000000..34fe4dc --- /dev/null +++ b/contracts/artifacts/contracts/facets/utils/Utility.sol/Utility.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/ba9437438ec2715393320ce18780bccb.json" +} diff --git a/contracts/artifacts/contracts/facets/utils/Utility.sol/Utility.json b/contracts/artifacts/contracts/facets/utils/Utility.sol/Utility.json new file mode 100644 index 0000000..af51744 --- /dev/null +++ b/contracts/artifacts/contracts/facets/utils/Utility.sol/Utility.json @@ -0,0 +1,42 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Utility", + "sourceName": "contracts/facets/utils/Utility.sol", + "abi": [ + { + "inputs": [], + "name": "FailedWithdrawNativeToken", + "type": "error" + }, + { + "inputs": [], + "name": "getNativeBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "withdrawNativeBalance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b506001600081905550610a8b806100286000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806388a9d5541461003b578063c9a463e214610059575b600080fd5b610043610075565b6040516100509190610566565b60405180910390f35b610073600480360381019061006e91906105b2565b61007d565b005b600047905090565b610085610161565b6100b26040516020016100979061063c565b604051602081830303815290604052805190602001206101b0565b60003373ffffffffffffffffffffffffffffffffffffffff16826040516100d89061068d565b60006040518083038185875af1925050503d8060008114610115576040519150601f19603f3d011682016040523d82523d6000602084013e61011a565b606091505b5050905080610155576040517fe6e2afc700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5061015e6101bc565b50565b6002600054036101a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161019d906106ee565b60405180910390fd5b6002600081905550565b6101b9816101c6565b50565b6001600081905550565b6101d081336101d3565b50565b6101dd8282610270565b61026c576102028173ffffffffffffffffffffffffffffffffffffffff1660146102e4565b6102108360001c60206102e4565b604051602001610221929190610817565b6040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610263919061089b565b60405180910390fd5b5050565b600061027a610520565b600001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6060600060028360026102f791906108ec565b610301919061092e565b67ffffffffffffffff81111561031a57610319610962565b5b6040519080825280601f01601f19166020018201604052801561034c5781602001600182028036833780820191505090505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061038457610383610991565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106103e8576103e7610991565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000600184600261042891906108ec565b610432919061092e565b90505b60018111156104d2577f3031323334353637383961626364656600000000000000000000000000000000600f86166010811061047457610473610991565b5b1a60f81b82828151811061048b5761048a610991565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c9450806104cb906109c0565b9050610435565b5060008414610516576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050d90610a35565b60405180910390fd5b8091505092915050565b6000807f4cd15452b25e815d3f9d1a3c7edd985a178edf5eb3461a1acbf855517423d69490508091505090565b6000819050919050565b6105608161054d565b82525050565b600060208201905061057b6000830184610557565b92915050565b600080fd5b61058f8161054d565b811461059a57600080fd5b50565b6000813590506105ac81610586565b92915050565b6000602082840312156105c8576105c7610581565b5b60006105d68482850161059d565b91505092915050565b600082825260208201905092915050565b7f5452454153555245525f524f4c45000000000000000000000000000000000000600082015250565b6000610626600e836105df565b9150610631826105f0565b602082019050919050565b6000602082019050818103600083015261065581610619565b9050919050565b600081905092915050565b50565b600061067760008361065c565b915061068282610667565b600082019050919050565b60006106988261066a565b9150819050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b60006106d8601f836105df565b91506106e3826106a2565b602082019050919050565b60006020820190508181036000830152610707816106cb565b9050919050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b600061074f60178361070e565b915061075a82610719565b601782019050919050565b600081519050919050565b60005b8381101561078e578082015181840152602081019050610773565b60008484015250505050565b60006107a582610765565b6107af818561070e565b93506107bf818560208601610770565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b600061080160118361070e565b915061080c826107cb565b601182019050919050565b600061082282610742565b915061082e828561079a565b9150610839826107f4565b9150610845828461079a565b91508190509392505050565b6000601f19601f8301169050919050565b600061086d82610765565b61087781856105df565b9350610887818560208601610770565b61089081610851565b840191505092915050565b600060208201905081810360008301526108b58184610862565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006108f78261054d565b91506109028361054d565b92508282026109108161054d565b91508282048414831517610927576109266108bd565b5b5092915050565b60006109398261054d565b91506109448361054d565b925082820190508082111561095c5761095b6108bd565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006109cb8261054d565b9150600082036109de576109dd6108bd565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b6000610a1f6020836105df565b9150610a2a826109e9565b602082019050919050565b60006020820190508181036000830152610a4e81610a12565b905091905056fea2646970667358221220bcbd07bd1e012cedbca3fe8d3feeefd34ac7bf87c5b76c51b796aaaab2c13db064736f6c63430008120033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c806388a9d5541461003b578063c9a463e214610059575b600080fd5b610043610075565b6040516100509190610566565b60405180910390f35b610073600480360381019061006e91906105b2565b61007d565b005b600047905090565b610085610161565b6100b26040516020016100979061063c565b604051602081830303815290604052805190602001206101b0565b60003373ffffffffffffffffffffffffffffffffffffffff16826040516100d89061068d565b60006040518083038185875af1925050503d8060008114610115576040519150601f19603f3d011682016040523d82523d6000602084013e61011a565b606091505b5050905080610155576040517fe6e2afc700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5061015e6101bc565b50565b6002600054036101a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161019d906106ee565b60405180910390fd5b6002600081905550565b6101b9816101c6565b50565b6001600081905550565b6101d081336101d3565b50565b6101dd8282610270565b61026c576102028173ffffffffffffffffffffffffffffffffffffffff1660146102e4565b6102108360001c60206102e4565b604051602001610221929190610817565b6040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610263919061089b565b60405180910390fd5b5050565b600061027a610520565b600001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6060600060028360026102f791906108ec565b610301919061092e565b67ffffffffffffffff81111561031a57610319610962565b5b6040519080825280601f01601f19166020018201604052801561034c5781602001600182028036833780820191505090505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061038457610383610991565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106103e8576103e7610991565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000600184600261042891906108ec565b610432919061092e565b90505b60018111156104d2577f3031323334353637383961626364656600000000000000000000000000000000600f86166010811061047457610473610991565b5b1a60f81b82828151811061048b5761048a610991565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c9450806104cb906109c0565b9050610435565b5060008414610516576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050d90610a35565b60405180910390fd5b8091505092915050565b6000807f4cd15452b25e815d3f9d1a3c7edd985a178edf5eb3461a1acbf855517423d69490508091505090565b6000819050919050565b6105608161054d565b82525050565b600060208201905061057b6000830184610557565b92915050565b600080fd5b61058f8161054d565b811461059a57600080fd5b50565b6000813590506105ac81610586565b92915050565b6000602082840312156105c8576105c7610581565b5b60006105d68482850161059d565b91505092915050565b600082825260208201905092915050565b7f5452454153555245525f524f4c45000000000000000000000000000000000000600082015250565b6000610626600e836105df565b9150610631826105f0565b602082019050919050565b6000602082019050818103600083015261065581610619565b9050919050565b600081905092915050565b50565b600061067760008361065c565b915061068282610667565b600082019050919050565b60006106988261066a565b9150819050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b60006106d8601f836105df565b91506106e3826106a2565b602082019050919050565b60006020820190508181036000830152610707816106cb565b9050919050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b600061074f60178361070e565b915061075a82610719565b601782019050919050565b600081519050919050565b60005b8381101561078e578082015181840152602081019050610773565b60008484015250505050565b60006107a582610765565b6107af818561070e565b93506107bf818560208601610770565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b600061080160118361070e565b915061080c826107cb565b601182019050919050565b600061082282610742565b915061082e828561079a565b9150610839826107f4565b9150610845828461079a565b91508190509392505050565b6000601f19601f8301169050919050565b600061086d82610765565b61087781856105df565b9350610887818560208601610770565b61089081610851565b840191505092915050565b600060208201905081810360008301526108b58184610862565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006108f78261054d565b91506109028361054d565b92508282026109108161054d565b91508282048414831517610927576109266108bd565b5b5092915050565b60006109398261054d565b91506109448361054d565b925082820190508082111561095c5761095b6108bd565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006109cb8261054d565b9150600082036109de576109dd6108bd565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b6000610a1f6020836105df565b9150610a2a826109e9565b602082019050919050565b60006020820190508181036000830152610a4e81610a12565b905091905056fea2646970667358221220bcbd07bd1e012cedbca3fe8d3feeefd34ac7bf87c5b76c51b796aaaab2c13db064736f6c63430008120033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/contracts/interfaces/core/IAutomate.sol/IAutomate.dbg.json b/contracts/artifacts/contracts/interfaces/core/IAutomate.sol/IAutomate.dbg.json new file mode 100644 index 0000000..34fe4dc --- /dev/null +++ b/contracts/artifacts/contracts/interfaces/core/IAutomate.sol/IAutomate.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/ba9437438ec2715393320ce18780bccb.json" +} diff --git a/contracts/artifacts/contracts/interfaces/core/IAutomate.sol/IAutomate.json b/contracts/artifacts/contracts/interfaces/core/IAutomate.sol/IAutomate.json new file mode 100644 index 0000000..7c7351c --- /dev/null +++ b/contracts/artifacts/contracts/interfaces/core/IAutomate.sol/IAutomate.json @@ -0,0 +1,103 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IAutomate", + "sourceName": "contracts/interfaces/core/IAutomate.sol", + "abi": [ + { + "inputs": [], + "name": "depositGelatoFunds", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "getGelatoAddresses", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getMinimumAppGelatoBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_ops", + "type": "address" + } + ], + "name": "setGelatoContracts", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_value", + "type": "uint256" + } + ], + "name": "setMinimumAppGelatoBalance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "withdrawGelatoFunds", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/contracts/interfaces/core/IControl.sol/IControl.dbg.json b/contracts/artifacts/contracts/interfaces/core/IControl.sol/IControl.dbg.json new file mode 100644 index 0000000..34fe4dc --- /dev/null +++ b/contracts/artifacts/contracts/interfaces/core/IControl.sol/IControl.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/ba9437438ec2715393320ce18780bccb.json" +} diff --git a/contracts/artifacts/contracts/interfaces/core/IControl.sol/IControl.json b/contracts/artifacts/contracts/interfaces/core/IControl.sol/IControl.json new file mode 100644 index 0000000..2954a17 --- /dev/null +++ b/contracts/artifacts/contracts/interfaces/core/IControl.sol/IControl.json @@ -0,0 +1,508 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IControl", + "sourceName": "contracts/interfaces/core/IControl.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_superToken", + "type": "address" + } + ], + "name": "addSuperToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "clearBPS", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_superToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "depositAsset", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_superToken", + "type": "address" + } + ], + "name": "getAssetTotal", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + }, + { + "internalType": "address", + "name": "_superToken", + "type": "address" + } + ], + "name": "getAssetUser", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_tag", + "type": "uint256" + } + ], + "name": "getBPSData", + "outputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + }, + { + "internalType": "uint96", + "name": "", + "type": "uint96" + }, + { + "internalType": "uint96", + "name": "", + "type": "uint96" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getBPSSize", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_superToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_nonce", + "type": "uint256" + } + ], + "name": "getControlData", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_superToken", + "type": "address" + } + ], + "name": "getFeeBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getMinimumEndDuration", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getMinimumLifespan", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_superToken", + "type": "address" + }, + { + "internalType": "int96", + "name": "_newFlowRate", + "type": "int96" + } + ], + "name": "getNewBufferedAppBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_superToken", + "type": "address" + } + ], + "name": "getNewControlNonce", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + } + ], + "name": "getSBPS", + "outputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getSTBufferDurationInSecond", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "isBPSEnabled", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_superToken", + "type": "address" + }, + { + "internalType": "int96", + "name": "_newFlowRate", + "type": "int96" + } + ], + "name": "isNewFlowRateAllowed", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_superToken", + "type": "address" + } + ], + "name": "isSuperTokensSupported", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "count", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_superToken", + "type": "address" + } + ], + "name": "realizeFeeBalance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_superToken", + "type": "address" + } + ], + "name": "removeSuperToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16[]", + "name": "_bpss", + "type": "uint16[]" + }, + { + "internalType": "uint96[]", + "name": "_flowRateLowerBounds", + "type": "uint96[]" + }, + { + "internalType": "uint96[]", + "name": "_flowRateUpperBounds", + "type": "uint96[]" + }, + { + "internalType": "uint256[]", + "name": "_tags", + "type": "uint256[]" + } + ], + "name": "setBPS", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_duration", + "type": "uint256" + } + ], + "name": "setMinimumEndDuration", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_duration", + "type": "uint256" + } + ], + "name": "setMinimumLifespan", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "_bps", + "type": "uint16" + }, + { + "internalType": "address", + "name": "_user", + "type": "address" + } + ], + "name": "setSBPS", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_duration", + "type": "uint256" + } + ], + "name": "setSTBufferAmount", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "toggleBPS", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_superToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "withdrawAsset", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_superToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "withdrawFeeBalance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/contracts/interfaces/core/IFlow.sol/IFlow.dbg.json b/contracts/artifacts/contracts/interfaces/core/IFlow.sol/IFlow.dbg.json new file mode 100644 index 0000000..34fe4dc --- /dev/null +++ b/contracts/artifacts/contracts/interfaces/core/IFlow.sol/IFlow.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/ba9437438ec2715393320ce18780bccb.json" +} diff --git a/contracts/artifacts/contracts/interfaces/core/IFlow.sol/IFlow.json b/contracts/artifacts/contracts/interfaces/core/IFlow.sol/IFlow.json new file mode 100644 index 0000000..4fbecd6 --- /dev/null +++ b/contracts/artifacts/contracts/interfaces/core/IFlow.sol/IFlow.json @@ -0,0 +1,343 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IFlow", + "sourceName": "contracts/interfaces/core/IFlow.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_superToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_nonce", + "type": "uint256" + } + ], + "name": "closeFlow", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_superToken", + "type": "address" + }, + { + "internalType": "address", + "name": "_sender", + "type": "address" + }, + { + "internalType": "address", + "name": "_receiver", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_nonce", + "type": "uint256" + }, + { + "internalType": "int96", + "name": "_flowRate", + "type": "int96" + } + ], + "name": "decreaseFlow", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_superToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "depositSuperToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + }, + { + "internalType": "address", + "name": "_superToken", + "type": "address" + } + ], + "name": "getAmountFlowed", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_superToken", + "type": "address" + } + ], + "name": "getDepositTotal", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + }, + { + "internalType": "address", + "name": "_superToken", + "type": "address" + } + ], + "name": "getDepositUser", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + }, + { + "internalType": "address", + "name": "_superToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_nonce", + "type": "uint256" + } + ], + "name": "getFlowData", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + }, + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + }, + { + "internalType": "address", + "name": "_superToken", + "type": "address" + } + ], + "name": "getNewFlowNonce", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + }, + { + "internalType": "address", + "name": "_superToken", + "type": "address" + }, + { + "internalType": "int96", + "name": "_flowRate", + "type": "int96" + } + ], + "name": "getValidSafeLifespan", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + }, + { + "internalType": "address", + "name": "_superToken", + "type": "address" + } + ], + "name": "hasActiveFlow", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_viewer", + "type": "address" + }, + { + "internalType": "address", + "name": "_broadcaster", + "type": "address" + } + ], + "name": "isViewSessionAllowed", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_receiver", + "type": "address" + }, + { + "internalType": "address", + "name": "_superToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_lifespan", + "type": "uint256" + } + ], + "name": "openFlow", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_superToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "withdrawSuperToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/contracts/interfaces/core/ISession.sol/ISession.dbg.json b/contracts/artifacts/contracts/interfaces/core/ISession.sol/ISession.dbg.json new file mode 100644 index 0000000..34fe4dc --- /dev/null +++ b/contracts/artifacts/contracts/interfaces/core/ISession.sol/ISession.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/ba9437438ec2715393320ce18780bccb.json" +} diff --git a/contracts/artifacts/contracts/interfaces/core/ISession.sol/ISession.json b/contracts/artifacts/contracts/interfaces/core/ISession.sol/ISession.json new file mode 100644 index 0000000..5bbedd5 --- /dev/null +++ b/contracts/artifacts/contracts/interfaces/core/ISession.sol/ISession.json @@ -0,0 +1,175 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ISession", + "sourceName": "contracts/interfaces/core/ISession.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + } + ], + "name": "getCurrentSessionData", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + }, + { + "internalType": "address", + "name": "_superToken", + "type": "address" + } + ], + "name": "getNewSessionNonce", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + }, + { + "internalType": "address", + "name": "_superToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_nonce", + "type": "uint256" + } + ], + "name": "getSessionData", + "outputs": [ + { + "internalType": "int96", + "name": "", + "type": "int96" + }, + { + "internalType": "uint96", + "name": "", + "type": "uint96" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_superToken", + "type": "address" + }, + { + "internalType": "uint96", + "name": "_flowRate", + "type": "uint96" + }, + { + "internalType": "uint256", + "name": "_tag", + "type": "uint256" + } + ], + "name": "startSession", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "_superTokens", + "type": "address[]" + }, + { + "internalType": "uint96[]", + "name": "_flowRates", + "type": "uint96[]" + }, + { + "internalType": "uint256[]", + "name": "_tags", + "type": "uint256[]" + } + ], + "name": "startSessions", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_superToken", + "type": "address" + } + ], + "name": "stopSession", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "_superTokens", + "type": "address[]" + } + ], + "name": "stopSessions", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/contracts/interfaces/utils/IAccessControl.sol/IAccessControl.dbg.json b/contracts/artifacts/contracts/interfaces/utils/IAccessControl.sol/IAccessControl.dbg.json new file mode 100644 index 0000000..34fe4dc --- /dev/null +++ b/contracts/artifacts/contracts/interfaces/utils/IAccessControl.sol/IAccessControl.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/ba9437438ec2715393320ce18780bccb.json" +} diff --git a/contracts/artifacts/contracts/interfaces/utils/IAccessControl.sol/IAccessControl.json b/contracts/artifacts/contracts/interfaces/utils/IAccessControl.sol/IAccessControl.json new file mode 100644 index 0000000..4e8827b --- /dev/null +++ b/contracts/artifacts/contracts/interfaces/utils/IAccessControl.sol/IAccessControl.json @@ -0,0 +1,135 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IAccessControl", + "sourceName": "contracts/interfaces/utils/IAccessControl.sol", + "abi": [ + { + "inputs": [], + "name": "getDefaultAdminRole", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "_role", + "type": "string" + } + ], + "name": "getRole", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "_account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "_account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_role", + "type": "bytes32" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "_account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/contracts/interfaces/utils/ICut.sol/ICut.dbg.json b/contracts/artifacts/contracts/interfaces/utils/ICut.sol/ICut.dbg.json new file mode 100644 index 0000000..34fe4dc --- /dev/null +++ b/contracts/artifacts/contracts/interfaces/utils/ICut.sol/ICut.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/ba9437438ec2715393320ce18780bccb.json" +} diff --git a/contracts/artifacts/contracts/interfaces/utils/ICut.sol/ICut.json b/contracts/artifacts/contracts/interfaces/utils/ICut.sol/ICut.json new file mode 100644 index 0000000..629912b --- /dev/null +++ b/contracts/artifacts/contracts/interfaces/utils/ICut.sol/ICut.json @@ -0,0 +1,93 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ICut", + "sourceName": "contracts/interfaces/utils/ICut.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "facetAddress", + "type": "address" + }, + { + "internalType": "enum ICut.FacetCutAction", + "name": "action", + "type": "uint8" + }, + { + "internalType": "bytes4[]", + "name": "functionSelectors", + "type": "bytes4[]" + } + ], + "indexed": false, + "internalType": "struct ICut.FacetCut[]", + "name": "_diamondCut", + "type": "tuple[]" + }, + { + "indexed": false, + "internalType": "address", + "name": "_init", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "_calldata", + "type": "bytes" + } + ], + "name": "DiamondCut", + "type": "event" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "facetAddress", + "type": "address" + }, + { + "internalType": "enum ICut.FacetCutAction", + "name": "action", + "type": "uint8" + }, + { + "internalType": "bytes4[]", + "name": "functionSelectors", + "type": "bytes4[]" + } + ], + "internalType": "struct ICut.FacetCut[]", + "name": "_diamondCut", + "type": "tuple[]" + }, + { + "internalType": "address", + "name": "_init", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_calldata", + "type": "bytes" + } + ], + "name": "diamondCut", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/contracts/interfaces/utils/IERC165.sol/IERC165.dbg.json b/contracts/artifacts/contracts/interfaces/utils/IERC165.sol/IERC165.dbg.json new file mode 100644 index 0000000..34fe4dc --- /dev/null +++ b/contracts/artifacts/contracts/interfaces/utils/IERC165.sol/IERC165.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/ba9437438ec2715393320ce18780bccb.json" +} diff --git a/contracts/artifacts/contracts/interfaces/utils/IERC165.sol/IERC165.json b/contracts/artifacts/contracts/interfaces/utils/IERC165.sol/IERC165.json new file mode 100644 index 0000000..4517906 --- /dev/null +++ b/contracts/artifacts/contracts/interfaces/utils/IERC165.sol/IERC165.json @@ -0,0 +1,30 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IERC165", + "sourceName": "contracts/interfaces/utils/IERC165.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/contracts/interfaces/utils/ILoupe.sol/ILoupe.dbg.json b/contracts/artifacts/contracts/interfaces/utils/ILoupe.sol/ILoupe.dbg.json new file mode 100644 index 0000000..34fe4dc --- /dev/null +++ b/contracts/artifacts/contracts/interfaces/utils/ILoupe.sol/ILoupe.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/ba9437438ec2715393320ce18780bccb.json" +} diff --git a/contracts/artifacts/contracts/interfaces/utils/ILoupe.sol/ILoupe.json b/contracts/artifacts/contracts/interfaces/utils/ILoupe.sol/ILoupe.json new file mode 100644 index 0000000..ccd9f9d --- /dev/null +++ b/contracts/artifacts/contracts/interfaces/utils/ILoupe.sol/ILoupe.json @@ -0,0 +1,87 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ILoupe", + "sourceName": "contracts/interfaces/utils/ILoupe.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "bytes4", + "name": "_functionSelector", + "type": "bytes4" + } + ], + "name": "facetAddress", + "outputs": [ + { + "internalType": "address", + "name": "facetAddress_", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "facetAddresses", + "outputs": [ + { + "internalType": "address[]", + "name": "facetAddresses_", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_facet", + "type": "address" + } + ], + "name": "facetFunctionSelectors", + "outputs": [ + { + "internalType": "bytes4[]", + "name": "facetFunctionSelectors_", + "type": "bytes4[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "facets", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "facetAddress", + "type": "address" + }, + { + "internalType": "bytes4[]", + "name": "functionSelectors", + "type": "bytes4[]" + } + ], + "internalType": "struct ILoupe.Facet[]", + "name": "facets_", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/contracts/interfaces/utils/IUtility.sol/IUtility.dbg.json b/contracts/artifacts/contracts/interfaces/utils/IUtility.sol/IUtility.dbg.json new file mode 100644 index 0000000..34fe4dc --- /dev/null +++ b/contracts/artifacts/contracts/interfaces/utils/IUtility.sol/IUtility.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/ba9437438ec2715393320ce18780bccb.json" +} diff --git a/contracts/artifacts/contracts/interfaces/utils/IUtility.sol/IUtility.json b/contracts/artifacts/contracts/interfaces/utils/IUtility.sol/IUtility.json new file mode 100644 index 0000000..9144dfd --- /dev/null +++ b/contracts/artifacts/contracts/interfaces/utils/IUtility.sol/IUtility.json @@ -0,0 +1,37 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IUtility", + "sourceName": "contracts/interfaces/utils/IUtility.sol", + "abi": [ + { + "inputs": [], + "name": "getNativeBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "withdrawNativeBalance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/contracts/libraries/core/LibAutomate.sol/LibAutomate.dbg.json b/contracts/artifacts/contracts/libraries/core/LibAutomate.sol/LibAutomate.dbg.json new file mode 100644 index 0000000..34fe4dc --- /dev/null +++ b/contracts/artifacts/contracts/libraries/core/LibAutomate.sol/LibAutomate.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/ba9437438ec2715393320ce18780bccb.json" +} diff --git a/contracts/artifacts/contracts/libraries/core/LibAutomate.sol/LibAutomate.json b/contracts/artifacts/contracts/libraries/core/LibAutomate.sol/LibAutomate.json new file mode 100644 index 0000000..8b45939 --- /dev/null +++ b/contracts/artifacts/contracts/libraries/core/LibAutomate.sol/LibAutomate.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "LibAutomate", + "sourceName": "contracts/libraries/core/LibAutomate.sol", + "abi": [], + "bytecode": "0x60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209dcf8512e38e5008e0505791d77e9a8063f17eee94e2ccbd4c96ab0edaa1e14664736f6c63430008120033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209dcf8512e38e5008e0505791d77e9a8063f17eee94e2ccbd4c96ab0edaa1e14664736f6c63430008120033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/contracts/libraries/core/LibControl.sol/LibControl.dbg.json b/contracts/artifacts/contracts/libraries/core/LibControl.sol/LibControl.dbg.json new file mode 100644 index 0000000..a74f3f4 --- /dev/null +++ b/contracts/artifacts/contracts/libraries/core/LibControl.sol/LibControl.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/a8f3edb970f736d3ccaffec4bae5df69.json" +} diff --git a/contracts/artifacts/contracts/libraries/core/LibControl.sol/LibControl.json b/contracts/artifacts/contracts/libraries/core/LibControl.sol/LibControl.json new file mode 100644 index 0000000..7e31435 --- /dev/null +++ b/contracts/artifacts/contracts/libraries/core/LibControl.sol/LibControl.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "LibControl", + "sourceName": "contracts/libraries/core/LibControl.sol", + "abi": [], + "bytecode": "0x60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220572f78b4003bd6b28d88d2929f69b497f12f2c97f2c7495fa7a2dbb030dcc77a64736f6c63430008120033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220572f78b4003bd6b28d88d2929f69b497f12f2c97f2c7495fa7a2dbb030dcc77a64736f6c63430008120033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/contracts/libraries/core/LibFlow.sol/LibFlow.dbg.json b/contracts/artifacts/contracts/libraries/core/LibFlow.sol/LibFlow.dbg.json new file mode 100644 index 0000000..a74f3f4 --- /dev/null +++ b/contracts/artifacts/contracts/libraries/core/LibFlow.sol/LibFlow.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/a8f3edb970f736d3ccaffec4bae5df69.json" +} diff --git a/contracts/artifacts/contracts/libraries/core/LibFlow.sol/LibFlow.json b/contracts/artifacts/contracts/libraries/core/LibFlow.sol/LibFlow.json new file mode 100644 index 0000000..be9b264 --- /dev/null +++ b/contracts/artifacts/contracts/libraries/core/LibFlow.sol/LibFlow.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "LibFlow", + "sourceName": "contracts/libraries/core/LibFlow.sol", + "abi": [], + "bytecode": "0x60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122073fed15c5323f721203a8f2152a8d92aa5fbedfc9d6abc936d395edad03865c664736f6c63430008120033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122073fed15c5323f721203a8f2152a8d92aa5fbedfc9d6abc936d395edad03865c664736f6c63430008120033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/contracts/libraries/core/LibSession.sol/LibSession.dbg.json b/contracts/artifacts/contracts/libraries/core/LibSession.sol/LibSession.dbg.json new file mode 100644 index 0000000..a74f3f4 --- /dev/null +++ b/contracts/artifacts/contracts/libraries/core/LibSession.sol/LibSession.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/a8f3edb970f736d3ccaffec4bae5df69.json" +} diff --git a/contracts/artifacts/contracts/libraries/core/LibSession.sol/LibSession.json b/contracts/artifacts/contracts/libraries/core/LibSession.sol/LibSession.json new file mode 100644 index 0000000..6321969 --- /dev/null +++ b/contracts/artifacts/contracts/libraries/core/LibSession.sol/LibSession.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "LibSession", + "sourceName": "contracts/libraries/core/LibSession.sol", + "abi": [], + "bytecode": "0x60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122018b0fe8237bf0878875a818294b8c586f4090a58b8df71f6e9430f28a60af89064736f6c63430008120033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122018b0fe8237bf0878875a818294b8c586f4090a58b8df71f6e9430f28a60af89064736f6c63430008120033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/contracts/libraries/core/LibTemplate.sol/LibTemplate.dbg.json b/contracts/artifacts/contracts/libraries/core/LibTemplate.sol/LibTemplate.dbg.json new file mode 100644 index 0000000..34fe4dc --- /dev/null +++ b/contracts/artifacts/contracts/libraries/core/LibTemplate.sol/LibTemplate.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/ba9437438ec2715393320ce18780bccb.json" +} diff --git a/contracts/artifacts/contracts/libraries/core/LibTemplate.sol/LibTemplate.json b/contracts/artifacts/contracts/libraries/core/LibTemplate.sol/LibTemplate.json new file mode 100644 index 0000000..afd981e --- /dev/null +++ b/contracts/artifacts/contracts/libraries/core/LibTemplate.sol/LibTemplate.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "LibTemplate", + "sourceName": "contracts/libraries/core/LibTemplate.sol", + "abi": [], + "bytecode": "0x60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b9ee43f8d5b82cc51c031e0cebf423bb1fc87c53aa88c18bab8ee0644aba893b64736f6c63430008120033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b9ee43f8d5b82cc51c031e0cebf423bb1fc87c53aa88c18bab8ee0644aba893b64736f6c63430008120033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/contracts/libraries/utils/IterableMappingBPS.sol/IterableMappingBPS.dbg.json b/contracts/artifacts/contracts/libraries/utils/IterableMappingBPS.sol/IterableMappingBPS.dbg.json new file mode 100644 index 0000000..34fe4dc --- /dev/null +++ b/contracts/artifacts/contracts/libraries/utils/IterableMappingBPS.sol/IterableMappingBPS.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/ba9437438ec2715393320ce18780bccb.json" +} diff --git a/contracts/artifacts/contracts/libraries/utils/IterableMappingBPS.sol/IterableMappingBPS.json b/contracts/artifacts/contracts/libraries/utils/IterableMappingBPS.sol/IterableMappingBPS.json new file mode 100644 index 0000000..22aee14 --- /dev/null +++ b/contracts/artifacts/contracts/libraries/utils/IterableMappingBPS.sol/IterableMappingBPS.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IterableMappingBPS", + "sourceName": "contracts/libraries/utils/IterableMappingBPS.sol", + "abi": [], + "bytecode": "0x60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200b5a63e53722c2e8c2eb94ebde8b29abb28498d455a163d6fabf3d14fcfb11c064736f6c63430008120033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200b5a63e53722c2e8c2eb94ebde8b29abb28498d455a163d6fabf3d14fcfb11c064736f6c63430008120033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/contracts/libraries/utils/LibAccessControl.sol/LibAccessControl.dbg.json b/contracts/artifacts/contracts/libraries/utils/LibAccessControl.sol/LibAccessControl.dbg.json new file mode 100644 index 0000000..34fe4dc --- /dev/null +++ b/contracts/artifacts/contracts/libraries/utils/LibAccessControl.sol/LibAccessControl.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/ba9437438ec2715393320ce18780bccb.json" +} diff --git a/contracts/artifacts/contracts/libraries/utils/LibAccessControl.sol/LibAccessControl.json b/contracts/artifacts/contracts/libraries/utils/LibAccessControl.sol/LibAccessControl.json new file mode 100644 index 0000000..524ae71 --- /dev/null +++ b/contracts/artifacts/contracts/libraries/utils/LibAccessControl.sol/LibAccessControl.json @@ -0,0 +1,86 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "LibAccessControl", + "sourceName": "contracts/libraries/utils/LibAccessControl.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + } + ], + "bytecode": "0x60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200e6b4c12a99f2ee419c15e747c8ef5b803d0ed5bb8c945f20304e871deaff83564736f6c63430008120033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200e6b4c12a99f2ee419c15e747c8ef5b803d0ed5bb8c945f20304e871deaff83564736f6c63430008120033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/contracts/libraries/utils/LibDiamond.sol/LibDiamond.dbg.json b/contracts/artifacts/contracts/libraries/utils/LibDiamond.sol/LibDiamond.dbg.json new file mode 100644 index 0000000..34fe4dc --- /dev/null +++ b/contracts/artifacts/contracts/libraries/utils/LibDiamond.sol/LibDiamond.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/ba9437438ec2715393320ce18780bccb.json" +} diff --git a/contracts/artifacts/contracts/libraries/utils/LibDiamond.sol/LibDiamond.json b/contracts/artifacts/contracts/libraries/utils/LibDiamond.sol/LibDiamond.json new file mode 100644 index 0000000..cbe678b --- /dev/null +++ b/contracts/artifacts/contracts/libraries/utils/LibDiamond.sol/LibDiamond.json @@ -0,0 +1,53 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "LibDiamond", + "sourceName": "contracts/libraries/utils/LibDiamond.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "facetAddress", + "type": "address" + }, + { + "internalType": "enum ICut.FacetCutAction", + "name": "action", + "type": "uint8" + }, + { + "internalType": "bytes4[]", + "name": "functionSelectors", + "type": "bytes4[]" + } + ], + "indexed": false, + "internalType": "struct ICut.FacetCut[]", + "name": "_diamondCut", + "type": "tuple[]" + }, + { + "indexed": false, + "internalType": "address", + "name": "_init", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "_calldata", + "type": "bytes" + } + ], + "name": "DiamondCut", + "type": "event" + } + ], + "bytecode": "0x60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c4d0b83783de9e18dfe67224c3667bce1a0804ce1f96773d0f0ebbd4f5fa5b6f64736f6c63430008120033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c4d0b83783de9e18dfe67224c3667bce1a0804ce1f96773d0f0ebbd4f5fa5b6f64736f6c63430008120033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/contracts/libraries/utils/LibSecurity.sol/LibSecurity.dbg.json b/contracts/artifacts/contracts/libraries/utils/LibSecurity.sol/LibSecurity.dbg.json new file mode 100644 index 0000000..34fe4dc --- /dev/null +++ b/contracts/artifacts/contracts/libraries/utils/LibSecurity.sol/LibSecurity.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/ba9437438ec2715393320ce18780bccb.json" +} diff --git a/contracts/artifacts/contracts/libraries/utils/LibSecurity.sol/LibSecurity.json b/contracts/artifacts/contracts/libraries/utils/LibSecurity.sol/LibSecurity.json new file mode 100644 index 0000000..0a75b54 --- /dev/null +++ b/contracts/artifacts/contracts/libraries/utils/LibSecurity.sol/LibSecurity.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "LibSecurity", + "sourceName": "contracts/libraries/utils/LibSecurity.sol", + "abi": [], + "bytecode": "0x60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200b9a60a61bcb607bb27c2b3aaa63adb1d529fb0f6feb29c1e24ceb90f63ff84a64736f6c63430008120033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200b9a60a61bcb607bb27c2b3aaa63adb1d529fb0f6feb29c1e24ceb90f63ff84a64736f6c63430008120033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/contracts/services/gelato/Types.sol/IAutomate.dbg.json b/contracts/artifacts/contracts/services/gelato/Types.sol/IAutomate.dbg.json new file mode 100644 index 0000000..34fe4dc --- /dev/null +++ b/contracts/artifacts/contracts/services/gelato/Types.sol/IAutomate.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/ba9437438ec2715393320ce18780bccb.json" +} diff --git a/contracts/artifacts/contracts/services/gelato/Types.sol/IAutomate.json b/contracts/artifacts/contracts/services/gelato/Types.sol/IAutomate.json new file mode 100644 index 0000000..72314a9 --- /dev/null +++ b/contracts/artifacts/contracts/services/gelato/Types.sol/IAutomate.json @@ -0,0 +1,114 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IAutomate", + "sourceName": "contracts/services/gelato/Types.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "bytes32", + "name": "taskId", + "type": "bytes32" + } + ], + "name": "cancelTask", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "execAddress", + "type": "address" + }, + { + "internalType": "bytes", + "name": "execDataOrSelector", + "type": "bytes" + }, + { + "components": [ + { + "internalType": "enum Module[]", + "name": "modules", + "type": "uint8[]" + }, + { + "internalType": "bytes[]", + "name": "args", + "type": "bytes[]" + } + ], + "internalType": "struct ModuleData", + "name": "moduleData", + "type": "tuple" + }, + { + "internalType": "address", + "name": "feeToken", + "type": "address" + } + ], + "name": "createTask", + "outputs": [ + { + "internalType": "bytes32", + "name": "taskId", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "gelato", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getFeeDetails", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "taskTreasury", + "outputs": [ + { + "internalType": "contract ITaskTreasuryUpgradable", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/contracts/services/gelato/Types.sol/IOpsProxyFactory.dbg.json b/contracts/artifacts/contracts/services/gelato/Types.sol/IOpsProxyFactory.dbg.json new file mode 100644 index 0000000..34fe4dc --- /dev/null +++ b/contracts/artifacts/contracts/services/gelato/Types.sol/IOpsProxyFactory.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/ba9437438ec2715393320ce18780bccb.json" +} diff --git a/contracts/artifacts/contracts/services/gelato/Types.sol/IOpsProxyFactory.json b/contracts/artifacts/contracts/services/gelato/Types.sol/IOpsProxyFactory.json new file mode 100644 index 0000000..b21830b --- /dev/null +++ b/contracts/artifacts/contracts/services/gelato/Types.sol/IOpsProxyFactory.json @@ -0,0 +1,35 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IOpsProxyFactory", + "sourceName": "contracts/services/gelato/Types.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "getProxyOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/contracts/services/gelato/Types.sol/ITaskTreasuryUpgradable.dbg.json b/contracts/artifacts/contracts/services/gelato/Types.sol/ITaskTreasuryUpgradable.dbg.json new file mode 100644 index 0000000..34fe4dc --- /dev/null +++ b/contracts/artifacts/contracts/services/gelato/Types.sol/ITaskTreasuryUpgradable.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/ba9437438ec2715393320ce18780bccb.json" +} diff --git a/contracts/artifacts/contracts/services/gelato/Types.sol/ITaskTreasuryUpgradable.json b/contracts/artifacts/contracts/services/gelato/Types.sol/ITaskTreasuryUpgradable.json new file mode 100644 index 0000000..6585882 --- /dev/null +++ b/contracts/artifacts/contracts/services/gelato/Types.sol/ITaskTreasuryUpgradable.json @@ -0,0 +1,81 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ITaskTreasuryUpgradable", + "sourceName": "contracts/services/gelato/Types.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "depositFunds", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + }, + { + "internalType": "address", + "name": "_token", + "type": "address" + } + ], + "name": "userTokenBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address payable", + "name": "receiver", + "type": "address" + }, + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "withdrawFunds", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/contracts/tests/InitTest.sol/InitTest.dbg.json b/contracts/artifacts/contracts/tests/InitTest.sol/InitTest.dbg.json new file mode 100644 index 0000000..102ee81 --- /dev/null +++ b/contracts/artifacts/contracts/tests/InitTest.sol/InitTest.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/ba9437438ec2715393320ce18780bccb.json" +} diff --git a/contracts/artifacts/contracts/tests/InitTest.sol/InitTest.json b/contracts/artifacts/contracts/tests/InitTest.sol/InitTest.json new file mode 100644 index 0000000..0a4c583 --- /dev/null +++ b/contracts/artifacts/contracts/tests/InitTest.sol/InitTest.json @@ -0,0 +1,24 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "InitTest", + "sourceName": "contracts/tests/InitTest.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "_value", + "type": "uint256" + } + ], + "name": "init", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50610121806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063b7b0422d14602d575b600080fd5b60436004803603810190603f919060c3565b6045565b005b604c81604f565b50565b8060566060565b6000018190555050565b6000807f7375a7f63427bb424f9e0a1d030dd6a96a0933c56047b4d71ac9da62a0b0ce2990508091505090565b600080fd5b6000819050919050565b60a3816092565b811460ad57600080fd5b50565b60008135905060bd81609c565b92915050565b60006020828403121560d65760d5608d565b5b600060e28482850160b0565b9150509291505056fea264697066735822122053747af61b551fa1d6e9a2a89c84046c5c66ec897c3a7eb9a74e1d4e1edc79bc64736f6c63430008120033", + "deployedBytecode": "0x6080604052348015600f57600080fd5b506004361060285760003560e01c8063b7b0422d14602d575b600080fd5b60436004803603810190603f919060c3565b6045565b005b604c81604f565b50565b8060566060565b6000018190555050565b6000807f7375a7f63427bb424f9e0a1d030dd6a96a0933c56047b4d71ac9da62a0b0ce2990508091505090565b600080fd5b6000819050919050565b60a3816092565b811460ad57600080fd5b50565b60008135905060bd81609c565b92915050565b60006020828403121560d65760d5608d565b5b600060e28482850160b0565b9150509291505056fea264697066735822122053747af61b551fa1d6e9a2a89c84046c5c66ec897c3a7eb9a74e1d4e1edc79bc64736f6c63430008120033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/contracts/tests/LibTest.sol/LibTest.dbg.json b/contracts/artifacts/contracts/tests/LibTest.sol/LibTest.dbg.json new file mode 100644 index 0000000..102ee81 --- /dev/null +++ b/contracts/artifacts/contracts/tests/LibTest.sol/LibTest.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/ba9437438ec2715393320ce18780bccb.json" +} diff --git a/contracts/artifacts/contracts/tests/LibTest.sol/LibTest.json b/contracts/artifacts/contracts/tests/LibTest.sol/LibTest.json new file mode 100644 index 0000000..0eccaa6 --- /dev/null +++ b/contracts/artifacts/contracts/tests/LibTest.sol/LibTest.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "LibTest", + "sourceName": "contracts/tests/LibTest.sol", + "abi": [], + "bytecode": "0x60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204b0135c1902b0cc5715d743257f8640c906518103d9976ba4dea5d38b7a0cda764736f6c63430008120033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204b0135c1902b0cc5715d743257f8640c906518103d9976ba4dea5d38b7a0cda764736f6c63430008120033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/contracts/tests/Test1Facet.sol/Test1Facet.dbg.json b/contracts/artifacts/contracts/tests/Test1Facet.sol/Test1Facet.dbg.json new file mode 100644 index 0000000..102ee81 --- /dev/null +++ b/contracts/artifacts/contracts/tests/Test1Facet.sol/Test1Facet.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/ba9437438ec2715393320ce18780bccb.json" +} diff --git a/contracts/artifacts/contracts/tests/Test1Facet.sol/Test1Facet.json b/contracts/artifacts/contracts/tests/Test1Facet.sol/Test1Facet.json new file mode 100644 index 0000000..782ee12 --- /dev/null +++ b/contracts/artifacts/contracts/tests/Test1Facet.sol/Test1Facet.json @@ -0,0 +1,183 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Test1Facet", + "sourceName": "contracts/tests/Test1Facet.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "something", + "type": "address" + } + ], + "name": "TestEvent", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "_interfaceID", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "test1Func1", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "test1Func10", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "test1Func11", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "test1Func12", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "test1Func13", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "test1Func14", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "test1Func15", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "test1Func16", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "test1Func17", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "test1Func18", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "test1Func19", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "test1Func2", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "test1Func20", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "test1Func3", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "test1Func4", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "test1Func5", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "test1Func6", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "test1Func7", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "test1Func8", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "test1Func9", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50610359806100206000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806351b68a4d116100b85780639abf97aa1161007c5780639abf97aa146101f8578063b0e8fcc714610202578063cbb835f61461020c578063cd0bae0914610216578063cf3bbe1814610220578063db32da151461022a57610137565b806351b68a4d146101c657806371a99d6f146101d057806377e9d0d6146101da57806381b5207d146101e457806387952d22146101ee57610137565b806324c1d5a7116100ff57806324c1d5a714610194578063292c460d1461019e5780632cb83248146101a85780634484b3b9146101b257806350eb3f43146101bc57610137565b806301ffc9a71461013c5780630716c2ae1461016c578063110460471461017657806319c841ab1461018057806319e3b5331461018a575b600080fd5b610156600480360381019061015191906102c0565b610234565b6040516101639190610308565b60405180910390f35b61017461023b565b005b61017e61023d565b005b61018861023f565b005b610192610241565b005b61019c610243565b005b6101a6610245565b005b6101b0610247565b005b6101ba610249565b005b6101c461024b565b005b6101ce61024d565b005b6101d861024f565b005b6101e2610251565b005b6101ec610253565b005b6101f6610255565b005b610200610257565b005b61020a610259565b005b61021461025b565b005b61021e61025d565b005b61022861025f565b005b610232610261565b005b6000919050565b565b565b565b565b565b565b565b565b565b565b565b565b565b565b565b565b565b565b565b565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61029d81610268565b81146102a857600080fd5b50565b6000813590506102ba81610294565b92915050565b6000602082840312156102d6576102d5610263565b5b60006102e4848285016102ab565b91505092915050565b60008115159050919050565b610302816102ed565b82525050565b600060208201905061031d60008301846102f9565b9291505056fea26469706673582212204c87ed240f050aed6c4c313744f39f62395f8d7bea6d6578a7afef48fe4613ab64736f6c63430008120033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101375760003560e01c806351b68a4d116100b85780639abf97aa1161007c5780639abf97aa146101f8578063b0e8fcc714610202578063cbb835f61461020c578063cd0bae0914610216578063cf3bbe1814610220578063db32da151461022a57610137565b806351b68a4d146101c657806371a99d6f146101d057806377e9d0d6146101da57806381b5207d146101e457806387952d22146101ee57610137565b806324c1d5a7116100ff57806324c1d5a714610194578063292c460d1461019e5780632cb83248146101a85780634484b3b9146101b257806350eb3f43146101bc57610137565b806301ffc9a71461013c5780630716c2ae1461016c578063110460471461017657806319c841ab1461018057806319e3b5331461018a575b600080fd5b610156600480360381019061015191906102c0565b610234565b6040516101639190610308565b60405180910390f35b61017461023b565b005b61017e61023d565b005b61018861023f565b005b610192610241565b005b61019c610243565b005b6101a6610245565b005b6101b0610247565b005b6101ba610249565b005b6101c461024b565b005b6101ce61024d565b005b6101d861024f565b005b6101e2610251565b005b6101ec610253565b005b6101f6610255565b005b610200610257565b005b61020a610259565b005b61021461025b565b005b61021e61025d565b005b61022861025f565b005b610232610261565b005b6000919050565b565b565b565b565b565b565b565b565b565b565b565b565b565b565b565b565b565b565b565b565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61029d81610268565b81146102a857600080fd5b50565b6000813590506102ba81610294565b92915050565b6000602082840312156102d6576102d5610263565b5b60006102e4848285016102ab565b91505092915050565b60008115159050919050565b610302816102ed565b82525050565b600060208201905061031d60008301846102f9565b9291505056fea26469706673582212204c87ed240f050aed6c4c313744f39f62395f8d7bea6d6578a7afef48fe4613ab64736f6c63430008120033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/contracts/tests/Test2Facet.sol/Test2Facet.dbg.json b/contracts/artifacts/contracts/tests/Test2Facet.sol/Test2Facet.dbg.json new file mode 100644 index 0000000..102ee81 --- /dev/null +++ b/contracts/artifacts/contracts/tests/Test2Facet.sol/Test2Facet.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/ba9437438ec2715393320ce18780bccb.json" +} diff --git a/contracts/artifacts/contracts/tests/Test2Facet.sol/Test2Facet.json b/contracts/artifacts/contracts/tests/Test2Facet.sol/Test2Facet.json new file mode 100644 index 0000000..503a789 --- /dev/null +++ b/contracts/artifacts/contracts/tests/Test2Facet.sol/Test2Facet.json @@ -0,0 +1,151 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Test2Facet", + "sourceName": "contracts/tests/Test2Facet.sol", + "abi": [ + { + "inputs": [], + "name": "test2Func1", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "test2Func10", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "test2Func11", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "test2Func12", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "test2Func13", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "test2Func14", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "test2Func15", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "test2Func16", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "test2Func17", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "test2Func18", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "test2Func19", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "test2Func2", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "test2Func20", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "test2Func3", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "test2Func4", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "test2Func5", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "test2Func6", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "test2Func7", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "test2Func8", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "test2Func9", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50610257806100206000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c80638ee8be30116100ad578063d2f0c73e11610071578063d2f0c73e146101c7578063e5f687b2146101d1578063e7de23a4146101db578063ea36b558146101e5578063ef3f4d78146101ef5761012c565b80638ee8be301461019557806391d0396b1461019f578063c670641d146101a9578063ca5fa5c0146101b3578063caae8f23146101bd5761012c565b80632e463958116100f45780632e463958146101635780635fd6312b1461016d5780636dc16b0114610177578063792a8e2e14610181578063884280a61461018b5761012c565b806303feeeae146101315780630c103a931461013b5780630e4cd7fc14610145578063148843091461014f57806317fd06e714610159575b600080fd5b6101396101f9565b005b6101436101fb565b005b61014d6101fd565b005b6101576101ff565b005b610161610201565b005b61016b610203565b005b610175610205565b005b61017f610207565b005b610189610209565b005b61019361020b565b005b61019d61020d565b005b6101a761020f565b005b6101b1610211565b005b6101bb610213565b005b6101c5610215565b005b6101cf610217565b005b6101d9610219565b005b6101e361021b565b005b6101ed61021d565b005b6101f761021f565b005b565b565b565b565b565b565b565b565b565b565b565b565b565b565b565b565b565b565b565b56fea2646970667358221220827357bb518fcc14f1fbc8cdb66f483c3780416f08a3fb2ca2505df5b7c68ba864736f6c63430008120033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061012c5760003560e01c80638ee8be30116100ad578063d2f0c73e11610071578063d2f0c73e146101c7578063e5f687b2146101d1578063e7de23a4146101db578063ea36b558146101e5578063ef3f4d78146101ef5761012c565b80638ee8be301461019557806391d0396b1461019f578063c670641d146101a9578063ca5fa5c0146101b3578063caae8f23146101bd5761012c565b80632e463958116100f45780632e463958146101635780635fd6312b1461016d5780636dc16b0114610177578063792a8e2e14610181578063884280a61461018b5761012c565b806303feeeae146101315780630c103a931461013b5780630e4cd7fc14610145578063148843091461014f57806317fd06e714610159575b600080fd5b6101396101f9565b005b6101436101fb565b005b61014d6101fd565b005b6101576101ff565b005b610161610201565b005b61016b610203565b005b610175610205565b005b61017f610207565b005b610189610209565b005b61019361020b565b005b61019d61020d565b005b6101a761020f565b005b6101b1610211565b005b6101bb610213565b005b6101c5610215565b005b6101cf610217565b005b6101d9610219565b005b6101e361021b565b005b6101ed61021d565b005b6101f761021f565b005b565b565b565b565b565b565b565b565b565b565b565b565b565b565b565b565b565b565b565b56fea2646970667358221220827357bb518fcc14f1fbc8cdb66f483c3780416f08a3fb2ca2505df5b7c68ba864736f6c63430008120033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/contracts/tests/Test3Facet.sol/Test3Facet.dbg.json b/contracts/artifacts/contracts/tests/Test3Facet.sol/Test3Facet.dbg.json new file mode 100644 index 0000000..102ee81 --- /dev/null +++ b/contracts/artifacts/contracts/tests/Test3Facet.sol/Test3Facet.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/ba9437438ec2715393320ce18780bccb.json" +} diff --git a/contracts/artifacts/contracts/tests/Test3Facet.sol/Test3Facet.json b/contracts/artifacts/contracts/tests/Test3Facet.sol/Test3Facet.json new file mode 100644 index 0000000..93fa18e --- /dev/null +++ b/contracts/artifacts/contracts/tests/Test3Facet.sol/Test3Facet.json @@ -0,0 +1,31 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Test3Facet", + "sourceName": "contracts/tests/Test3Facet.sol", + "abi": [ + { + "inputs": [], + "name": "test3Func1", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "test3Func2", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b5060ca8061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c8063e7bf600f146037578063ebfa4bcc14603f575b600080fd5b603d6059565b005b6045605b565b60405160509190607b565b60405180910390f35b565b60006001905090565b6000819050919050565b6075816064565b82525050565b6000602082019050608e6000830184606e565b9291505056fea264697066735822122023e56e5cd3a0f4cc243017303e76ff1d35a3b89806ce219a3b1b35f87550079764736f6c63430008120033", + "deployedBytecode": "0x6080604052348015600f57600080fd5b506004361060325760003560e01c8063e7bf600f146037578063ebfa4bcc14603f575b600080fd5b603d6059565b005b6045605b565b60405160509190607b565b60405180910390f35b565b60006001905090565b6000819050919050565b6075816064565b82525050565b6000602082019050608e6000830184606e565b9291505056fea264697066735822122023e56e5cd3a0f4cc243017303e76ff1d35a3b89806ce219a3b1b35f87550079764736f6c63430008120033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/contracts/tests/Test3Facet2.sol/Test3Facet2.dbg.json b/contracts/artifacts/contracts/tests/Test3Facet2.sol/Test3Facet2.dbg.json new file mode 100644 index 0000000..102ee81 --- /dev/null +++ b/contracts/artifacts/contracts/tests/Test3Facet2.sol/Test3Facet2.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/ba9437438ec2715393320ce18780bccb.json" +} diff --git a/contracts/artifacts/contracts/tests/Test3Facet2.sol/Test3Facet2.json b/contracts/artifacts/contracts/tests/Test3Facet2.sol/Test3Facet2.json new file mode 100644 index 0000000..9d2a0ba --- /dev/null +++ b/contracts/artifacts/contracts/tests/Test3Facet2.sol/Test3Facet2.json @@ -0,0 +1,24 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Test3Facet2", + "sourceName": "contracts/tests/Test3Facet2.sol", + "abi": [ + { + "inputs": [], + "name": "test3Func1", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b5060b68061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063ebfa4bcc14602d575b600080fd5b60336047565b604051603e91906067565b60405180910390f35b60006002905090565b6000819050919050565b6061816050565b82525050565b6000602082019050607a6000830184605a565b9291505056fea2646970667358221220fa8d9015763e9ef2a558f5c9d17d2c2b72a97ce49d3f9c04b79dccd873dfd26064736f6c63430008120033", + "deployedBytecode": "0x6080604052348015600f57600080fd5b506004361060285760003560e01c8063ebfa4bcc14602d575b600080fd5b60336047565b604051603e91906067565b60405180910390f35b60006002905090565b6000819050919050565b6061816050565b82525050565b6000602082019050607a6000830184605a565b9291505056fea2646970667358221220fa8d9015763e9ef2a558f5c9d17d2c2b72a97ce49d3f9c04b79dccd873dfd26064736f6c63430008120033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/contracts/tests/Test4Facet.sol/Test4Facet.dbg.json b/contracts/artifacts/contracts/tests/Test4Facet.sol/Test4Facet.dbg.json new file mode 100644 index 0000000..102ee81 --- /dev/null +++ b/contracts/artifacts/contracts/tests/Test4Facet.sol/Test4Facet.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/ba9437438ec2715393320ce18780bccb.json" +} diff --git a/contracts/artifacts/contracts/tests/Test4Facet.sol/Test4Facet.json b/contracts/artifacts/contracts/tests/Test4Facet.sol/Test4Facet.json new file mode 100644 index 0000000..222ca30 --- /dev/null +++ b/contracts/artifacts/contracts/tests/Test4Facet.sol/Test4Facet.json @@ -0,0 +1,25 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Test4Facet", + "sourceName": "contracts/tests/Test4Facet.sol", + "abi": [ + { + "inputs": [], + "name": "test4Func1", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "test4Func2", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x6080604052348015600f57600080fd5b5060818061001e6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806339fcc3fd14603757806383e1265214603f575b600080fd5b603d6047565b005b60456049565b005b565b56fea264697066735822122081fdc27a4d2eb955d894ad6f4158e570fdb7ee2bf9f648a3b627e2f0e2f30a5364736f6c63430008120033", + "deployedBytecode": "0x6080604052348015600f57600080fd5b506004361060325760003560e01c806339fcc3fd14603757806383e1265214603f575b600080fd5b603d6047565b005b60456049565b005b565b56fea264697066735822122081fdc27a4d2eb955d894ad6f4158e570fdb7ee2bf9f648a3b627e2f0e2f30a5364736f6c63430008120033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/contracts/tests/Test5Facet.sol/Test5Facet.dbg.json b/contracts/artifacts/contracts/tests/Test5Facet.sol/Test5Facet.dbg.json new file mode 100644 index 0000000..102ee81 --- /dev/null +++ b/contracts/artifacts/contracts/tests/Test5Facet.sol/Test5Facet.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/ba9437438ec2715393320ce18780bccb.json" +} diff --git a/contracts/artifacts/contracts/tests/Test5Facet.sol/Test5Facet.json b/contracts/artifacts/contracts/tests/Test5Facet.sol/Test5Facet.json new file mode 100644 index 0000000..ec20aa4 --- /dev/null +++ b/contracts/artifacts/contracts/tests/Test5Facet.sol/Test5Facet.json @@ -0,0 +1,51 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Test5Facet", + "sourceName": "contracts/tests/Test5Facet.sol", + "abi": [ + { + "inputs": [], + "name": "getValue", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_value", + "type": "uint256" + } + ], + "name": "setValue", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "test5Func1", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "test5Func2", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b506101d9806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632096525514610051578063552410771461006f578063ae9aad3e1461008b578063fbf5c5aa14610095575b600080fd5b61005961009f565b604051610066919061012a565b60405180910390f35b61008960048036038101906100849190610176565b6100ae565b005b6100936100ba565b005b61009d6100bc565b005b60006100a96100be565b905090565b6100b7816100d1565b50565b565b565b60006100c86100e4565b60000154905090565b806100da6100e4565b6000018190555050565b6000807f7375a7f63427bb424f9e0a1d030dd6a96a0933c56047b4d71ac9da62a0b0ce2990508091505090565b6000819050919050565b61012481610111565b82525050565b600060208201905061013f600083018461011b565b92915050565b600080fd5b61015381610111565b811461015e57600080fd5b50565b6000813590506101708161014a565b92915050565b60006020828403121561018c5761018b610145565b5b600061019a84828501610161565b9150509291505056fea26469706673582212205d355169b04faf01c476a85549834aac956d30a67401472e435005078c03353d64736f6c63430008120033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c80632096525514610051578063552410771461006f578063ae9aad3e1461008b578063fbf5c5aa14610095575b600080fd5b61005961009f565b604051610066919061012a565b60405180910390f35b61008960048036038101906100849190610176565b6100ae565b005b6100936100ba565b005b61009d6100bc565b005b60006100a96100be565b905090565b6100b7816100d1565b50565b565b565b60006100c86100e4565b60000154905090565b806100da6100e4565b6000018190555050565b6000807f7375a7f63427bb424f9e0a1d030dd6a96a0933c56047b4d71ac9da62a0b0ce2990508091505090565b6000819050919050565b61012481610111565b82525050565b600060208201905061013f600083018461011b565b92915050565b600080fd5b61015381610111565b811461015e57600080fd5b50565b6000813590506101708161014a565b92915050565b60006020828403121561018c5761018b610145565b5b600061019a84828501610161565b9150509291505056fea26469706673582212205d355169b04faf01c476a85549834aac956d30a67401472e435005078c03353d64736f6c63430008120033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/artifacts/contracts/upgrades/DiamondInit.sol/DiamondInit.dbg.json b/contracts/artifacts/contracts/upgrades/DiamondInit.sol/DiamondInit.dbg.json new file mode 100644 index 0000000..78e15ba --- /dev/null +++ b/contracts/artifacts/contracts/upgrades/DiamondInit.sol/DiamondInit.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/a8f3edb970f736d3ccaffec4bae5df69.json" +} diff --git a/contracts/artifacts/contracts/upgrades/DiamondInit.sol/DiamondInit.json b/contracts/artifacts/contracts/upgrades/DiamondInit.sol/DiamondInit.json new file mode 100644 index 0000000..fbe7259 --- /dev/null +++ b/contracts/artifacts/contracts/upgrades/DiamondInit.sol/DiamondInit.json @@ -0,0 +1,49 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "DiamondInit", + "sourceName": "contracts/upgrades/DiamondInit.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_autobot", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_minimumAppGelatoBalance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_minimumEndDuration", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_minimumLifespan", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_stBufferDurationInSecond", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "_superTokens", + "type": "address[]" + } + ], + "name": "init", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50610d38806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80630629b93814610030575b600080fd5b61004a60048036038101906100459190610add565b61004c565b005b60006100566105bd565b905060018160030160007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060018160030160007f1f931c1c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060018160030160007f48e2b093000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060018160030160007ff8b33b26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060018160030160007f410db6b6000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060018160030160007fa60cf313000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060018160030160007fb5879a4b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060018160030160007fed5e69e2000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060018160030160007f5e1208a1000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555061054d876105ea565b610556866107d2565b61055f856107e5565b610568846107f8565b6105718361080b565b60005b82518110156105b3576105a083828151811061059357610592610b86565b5b602002602001015161081e565b80806105ab90610be4565b915050610574565b5050505050505050565b6000807fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90508091505090565b806105f3610882565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663573ea5756040518163ffffffff1660e01b8152600401602060405180830381865afa15801561067f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a39190610c6a565b6106ab610882565b60020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506106f4610882565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e60a32136040518163ffffffff1660e01b8152600401602060405180830381865afa158015610762573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107869190610cd5565b61078e610882565b60010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b806107db610882565b6003018190555050565b806107ee6108af565b6006018190555050565b806108016108af565b6007018190555050565b806108146108af565b6008018190555050565b60016108286108af565b60090160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000807fde06769ca6d80a022439e234eebb61c3801d652175b62f912d6f8cac7b881c6590508091505090565b6000807f2f7ed27098ecefe70183ee38ae4542dee65215b0786f6870871034402cfe2cc990508091505090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061091b826108f0565b9050919050565b61092b81610910565b811461093657600080fd5b50565b60008135905061094881610922565b92915050565b6000819050919050565b6109618161094e565b811461096c57600080fd5b50565b60008135905061097e81610958565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6109d282610989565b810181811067ffffffffffffffff821117156109f1576109f061099a565b5b80604052505050565b6000610a046108dc565b9050610a1082826109c9565b919050565b600067ffffffffffffffff821115610a3057610a2f61099a565b5b602082029050602081019050919050565b600080fd5b6000610a59610a5484610a15565b6109fa565b90508083825260208201905060208402830185811115610a7c57610a7b610a41565b5b835b81811015610aa55780610a918882610939565b845260208401935050602081019050610a7e565b5050509392505050565b600082601f830112610ac457610ac3610984565b5b8135610ad4848260208601610a46565b91505092915050565b60008060008060008060c08789031215610afa57610af96108e6565b5b6000610b0889828a01610939565b9650506020610b1989828a0161096f565b9550506040610b2a89828a0161096f565b9450506060610b3b89828a0161096f565b9350506080610b4c89828a0161096f565b92505060a087013567ffffffffffffffff811115610b6d57610b6c6108eb565b5b610b7989828a01610aaf565b9150509295509295509295565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610bef8261094e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610c2157610c20610bb5565b5b600182019050919050565b6000610c37826108f0565b9050919050565b610c4781610c2c565b8114610c5257600080fd5b50565b600081519050610c6481610c3e565b92915050565b600060208284031215610c8057610c7f6108e6565b5b6000610c8e84828501610c55565b91505092915050565b6000610ca282610910565b9050919050565b610cb281610c97565b8114610cbd57600080fd5b50565b600081519050610ccf81610ca9565b92915050565b600060208284031215610ceb57610cea6108e6565b5b6000610cf984828501610cc0565b9150509291505056fea2646970667358221220b59264387b3241f6799040ab0630b31d2979d26e4f53f747c3046a0b0bdf879864736f6c63430008120033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c80630629b93814610030575b600080fd5b61004a60048036038101906100459190610add565b61004c565b005b60006100566105bd565b905060018160030160007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060018160030160007f1f931c1c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060018160030160007f48e2b093000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060018160030160007ff8b33b26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060018160030160007f410db6b6000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060018160030160007fa60cf313000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060018160030160007fb5879a4b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060018160030160007fed5e69e2000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060018160030160007f5e1208a1000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555061054d876105ea565b610556866107d2565b61055f856107e5565b610568846107f8565b6105718361080b565b60005b82518110156105b3576105a083828151811061059357610592610b86565b5b602002602001015161081e565b80806105ab90610be4565b915050610574565b5050505050505050565b6000807fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90508091505090565b806105f3610882565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663573ea5756040518163ffffffff1660e01b8152600401602060405180830381865afa15801561067f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a39190610c6a565b6106ab610882565b60020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506106f4610882565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e60a32136040518163ffffffff1660e01b8152600401602060405180830381865afa158015610762573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107869190610cd5565b61078e610882565b60010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b806107db610882565b6003018190555050565b806107ee6108af565b6006018190555050565b806108016108af565b6007018190555050565b806108146108af565b6008018190555050565b60016108286108af565b60090160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000807fde06769ca6d80a022439e234eebb61c3801d652175b62f912d6f8cac7b881c6590508091505090565b6000807f2f7ed27098ecefe70183ee38ae4542dee65215b0786f6870871034402cfe2cc990508091505090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061091b826108f0565b9050919050565b61092b81610910565b811461093657600080fd5b50565b60008135905061094881610922565b92915050565b6000819050919050565b6109618161094e565b811461096c57600080fd5b50565b60008135905061097e81610958565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6109d282610989565b810181811067ffffffffffffffff821117156109f1576109f061099a565b5b80604052505050565b6000610a046108dc565b9050610a1082826109c9565b919050565b600067ffffffffffffffff821115610a3057610a2f61099a565b5b602082029050602081019050919050565b600080fd5b6000610a59610a5484610a15565b6109fa565b90508083825260208201905060208402830185811115610a7c57610a7b610a41565b5b835b81811015610aa55780610a918882610939565b845260208401935050602081019050610a7e565b5050509392505050565b600082601f830112610ac457610ac3610984565b5b8135610ad4848260208601610a46565b91505092915050565b60008060008060008060c08789031215610afa57610af96108e6565b5b6000610b0889828a01610939565b9650506020610b1989828a0161096f565b9550506040610b2a89828a0161096f565b9450506060610b3b89828a0161096f565b9350506080610b4c89828a0161096f565b92505060a087013567ffffffffffffffff811115610b6d57610b6c6108eb565b5b610b7989828a01610aaf565b9150509295509295509295565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610bef8261094e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610c2157610c20610bb5565b5b600182019050919050565b6000610c37826108f0565b9050919050565b610c4781610c2c565b8114610c5257600080fd5b50565b600081519050610c6481610c3e565b92915050565b600060208284031215610c8057610c7f6108e6565b5b6000610c8e84828501610c55565b91505092915050565b6000610ca282610910565b9050919050565b610cb281610c97565b8114610cbd57600080fd5b50565b600081519050610ccf81610ca9565b92915050565b600060208284031215610ceb57610cea6108e6565b5b6000610cf984828501610cc0565b9150509291505056fea2646970667358221220b59264387b3241f6799040ab0630b31d2979d26e4f53f747c3046a0b0bdf879864736f6c63430008120033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-002e14eb9e7536f912be213d4d5a8600.json b/contracts/cache/hardhat-network-fork/network-80001/request-002e14eb9e7536f912be213d4d5a8600.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-002e14eb9e7536f912be213d4d5a8600.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-007dd50ae8f1fdffe5b3b0962fbfb618.json b/contracts/cache/hardhat-network-fork/network-80001/request-007dd50ae8f1fdffe5b3b0962fbfb618.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-007dd50ae8f1fdffe5b3b0962fbfb618.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-00cab08001e9b54eaa45d4eaac3230eb.json b/contracts/cache/hardhat-network-fork/network-80001/request-00cab08001e9b54eaa45d4eaac3230eb.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-00cab08001e9b54eaa45d4eaac3230eb.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-0179cb6f51316c0b599ba0360e3c975f.json b/contracts/cache/hardhat-network-fork/network-80001/request-0179cb6f51316c0b599ba0360e3c975f.json new file mode 100644 index 0000000..d45d429 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-0179cb6f51316c0b599ba0360e3c975f.json @@ -0,0 +1 @@ +"0xcfb" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-025f3566ca4c38802e1081f10444f701.json b/contracts/cache/hardhat-network-fork/network-80001/request-025f3566ca4c38802e1081f10444f701.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-025f3566ca4c38802e1081f10444f701.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-028a5265494fb45d3a4a0c0aabc02123.json b/contracts/cache/hardhat-network-fork/network-80001/request-028a5265494fb45d3a4a0c0aabc02123.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-028a5265494fb45d3a4a0c0aabc02123.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-029cbf6313289478c0335c8697a75c05.json b/contracts/cache/hardhat-network-fork/network-80001/request-029cbf6313289478c0335c8697a75c05.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-029cbf6313289478c0335c8697a75c05.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-02bb44cc987b776eaa7e3e438b8b3ca0.json b/contracts/cache/hardhat-network-fork/network-80001/request-02bb44cc987b776eaa7e3e438b8b3ca0.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-02bb44cc987b776eaa7e3e438b8b3ca0.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-02eb876a6db6c54e5259ed339c9f8a39.json b/contracts/cache/hardhat-network-fork/network-80001/request-02eb876a6db6c54e5259ed339c9f8a39.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-02eb876a6db6c54e5259ed339c9f8a39.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-03e85466c16c00e4ccf4c9e1a61e2c23.json b/contracts/cache/hardhat-network-fork/network-80001/request-03e85466c16c00e4ccf4c9e1a61e2c23.json new file mode 100644 index 0000000..ec6a5ac --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-03e85466c16c00e4ccf4c9e1a61e2c23.json @@ -0,0 +1 @@ +["0x608060405234801561001057600080fd5b50600436106100b45760003560e01c8063b2db0b4111610071578063b2db0b41146101b4578063b81cd866146101d0578063ba1d0ff414610201578063c10304f71461021f578063cd3d4fb914610250578063ddca3f4314610280576100b4565b806314ae9926146100b95780632e6e0bd0146100e9578063647846a5146101195780636d2dd29f1461013757806376474e6a14610167578063b0ccbdf014610198575b600080fd5b6100d360048036038101906100ce9190610bd4565b61029e565b6040516100e09190610c23565b60405180910390f35b61010360048036038101906100fe9190610c3e565b610385565b6040516101109190610c23565b60405180910390f35b6101216103b8565b60405161012e9190610c23565b60405180910390f35b610151600480360381019061014c9190610c3e565b6103de565b60405161015e9190610c23565b60405180910390f35b610181600480360381019061017c9190610c6b565b610411565b60405161018f929190610cab565b60405180910390f35b6101b260048036038101906101ad9190610d39565b610685565b005b6101ce60048036038101906101c99190610df5565b610697565b005b6101ea60048036038101906101e59190610c3e565b61069e565b6040516101f8929190610ea8565b60405180910390f35b6102096106fa565b6040516102169190610f30565b60405180910390f35b61023960048036038101906102349190610df5565b61071e565b604051610247929190610fe4565b60405180910390f35b61026a60048036038101906102659190611039565b61085c565b6040516102779190610c23565b60405180910390f35b61028861088f565b604051610295919061107f565b60405180910390f35b6000807f000000000000000000000000c815db16d4be6ddf2685c201937905abf338f5d773ffffffffffffffffffffffffffffffffffffffff166314afd79e846040518263ffffffff1660e01b81526004016102fa9190610c23565b602060405180830381865afa158015610317573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033b91906110af565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461037a578091505061037f565b829150505b92915050565b60006020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060007f000000000000000000000000c815db16d4be6ddf2685c201937905abf338f5d773ffffffffffffffffffffffffffffffffffffffff166314afd79e856040518263ffffffff1660e01b815260040161046f9190610c23565b602060405180830381865afa15801561048c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b091906110af565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610596578073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061054b57508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b61058a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058190611139565b60405180910390fd5b8084925092505061067e565b60007f000000000000000000000000c815db16d4be6ddf2685c201937905abf338f5d773ffffffffffffffffffffffffffffffffffffffff166314afd79e876040518263ffffffff1660e01b81526004016105f19190610c23565b602060405180830381865afa15801561060e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061063291906110af565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461067557808593509350505061067e565b85859350935050505b9250929050565b61068e86610895565b50505050505050565b5050505050565b60056020528060005260406000206000915090508060000160009054906101000a90046fffffffffffffffffffffffffffffffff16908060000160109054906101000a90046fffffffffffffffffffffffffffffffff16905082565b7f000000000000000000000000c815db16d4be6ddf2685c201937905abf338f5d781565b6000606060007f000000000000000000000000c815db16d4be6ddf2685c201937905abf338f5d773ffffffffffffffffffffffffffffffffffffffff1663ded89a7c886040518263ffffffff1660e01b815260040161077d9190610c23565b6040805180830381865afa158015610799573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107bd9190611191565b5090508073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614610803576107fe868686610aae565b610849565b84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050505b9150809550859250509550959350505050565b60066020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b60008073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000c815db16d4be6ddf2685c201937905abf338f5d773ffffffffffffffffffffffffffffffffffffffff166314afd79e846040518263ffffffff1660e01b81526004016109079190610c23565b602060405180830381865afa158015610924573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061094891906110af565b73ffffffffffffffffffffffffffffffffffffffff161415905080610aaa5760007f000000000000000000000000c815db16d4be6ddf2685c201937905abf338f5d773ffffffffffffffffffffffffffffffffffffffff1663ded89a7c846040518263ffffffff1660e01b81526004016109c29190610c23565b6040805180830381865afa1580156109de573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a029190611191565b91505080610aa8577f000000000000000000000000c815db16d4be6ddf2685c201937905abf338f5d773ffffffffffffffffffffffffffffffffffffffff166374912cd2846040518263ffffffff1660e01b8152600401610a639190610c23565b6020604051808303816000875af1158015610a82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa6919061120f565b505b505b5050565b60606354132d7860e01b8484846000604051602401610ad094939291906112c0565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090509392505050565b600080fd5b600080fd5b6000819050919050565b610b5381610b40565b8114610b5e57600080fd5b50565b600081359050610b7081610b4a565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610ba182610b76565b9050919050565b610bb181610b96565b8114610bbc57600080fd5b50565b600081359050610bce81610ba8565b92915050565b60008060408385031215610beb57610bea610b36565b5b6000610bf985828601610b61565b9250506020610c0a85828601610bbf565b9150509250929050565b610c1d81610b96565b82525050565b6000602082019050610c386000830184610c14565b92915050565b600060208284031215610c5457610c53610b36565b5b6000610c6284828501610b61565b91505092915050565b60008060408385031215610c8257610c81610b36565b5b6000610c9085828601610bbf565b9250506020610ca185828601610bbf565b9150509250929050565b6000604082019050610cc06000830185610c14565b610ccd6020830184610c14565b9392505050565b600080fd5b600080fd5b600080fd5b60008083601f840112610cf957610cf8610cd4565b5b8235905067ffffffffffffffff811115610d1657610d15610cd9565b5b602083019150836001820283011115610d3257610d31610cde565b5b9250929050565b600080600080600080600060a0888a031215610d5857610d57610b36565b5b6000610d668a828b01610b61565b9750506020610d778a828b01610bbf565b9650506040610d888a828b01610bbf565b955050606088013567ffffffffffffffff811115610da957610da8610b3b565b5b610db58a828b01610ce3565b9450945050608088013567ffffffffffffffff811115610dd857610dd7610b3b565b5b610de48a828b01610ce3565b925092505092959891949750929550565b600080600080600060808688031215610e1157610e10610b36565b5b6000610e1f88828901610b61565b9550506020610e3088828901610bbf565b9450506040610e4188828901610bbf565b935050606086013567ffffffffffffffff811115610e6257610e61610b3b565b5b610e6e88828901610ce3565b92509250509295509295909350565b60006fffffffffffffffffffffffffffffffff82169050919050565b610ea281610e7d565b82525050565b6000604082019050610ebd6000830185610e99565b610eca6020830184610e99565b9392505050565b6000819050919050565b6000610ef6610ef1610eec84610b76565b610ed1565b610b76565b9050919050565b6000610f0882610edb565b9050919050565b6000610f1a82610efd565b9050919050565b610f2a81610f0f565b82525050565b6000602082019050610f456000830184610f21565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610f85578082015181840152602081019050610f6a565b83811115610f94576000848401525b50505050565b6000601f19601f8301169050919050565b6000610fb682610f4b565b610fc08185610f56565b9350610fd0818560208601610f67565b610fd981610f9a565b840191505092915050565b6000604082019050610ff96000830185610c14565b818103602083015261100b8184610fab565b90509392505050565b6004811061102157600080fd5b50565b60008135905061103381611014565b92915050565b60006020828403121561104f5761104e610b36565b5b600061105d84828501611024565b91505092915050565b6000819050919050565b61107981611066565b82525050565b60006020820190506110946000830184611070565b92915050565b6000815190506110a981610ba8565b92915050565b6000602082840312156110c5576110c4610b36565b5b60006110d38482850161109a565b91505092915050565b600082825260208201905092915050565b7f50726f78794d6f64756c653a204f6e6c79206f776e6572206f662070726f7879600082015250565b60006111236020836110dc565b915061112e826110ed565b602082019050919050565b6000602082019050818103600083015261115281611116565b9050919050565b60008115159050919050565b61116e81611159565b811461117957600080fd5b50565b60008151905061118b81611165565b92915050565b600080604083850312156111a8576111a7610b36565b5b60006111b68582860161109a565b92505060206111c78582860161117c565b9150509250929050565b60006111dc82610b76565b9050919050565b6111ec816111d1565b81146111f757600080fd5b50565b600081519050611209816111e3565b92915050565b60006020828403121561122557611224610b36565b5b6000611233848285016111fa565b91505092915050565b82818337600083830152505050565b60006112578385610f56565b935061126483858461123c565b61126d83610f9a565b840190509392505050565b6000819050919050565b600060ff82169050919050565b60006112aa6112a56112a084611278565b610ed1565b611282565b9050919050565b6112ba8161128f565b82525050565b60006060820190506112d56000830187610c14565b81810360208301526112e881858761124b565b90506112f760408301846112b1565b9594505050505056fea264697066735822122050ecea14d3794becfcefdd20e632183256a6ee4fe00a06dbb0451f2d55f314e464736f6c634300080e0033","0x1","0x0"] diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-03fb3c349e9036ad3589dee8b486d641.json b/contracts/cache/hardhat-network-fork/network-80001/request-03fb3c349e9036ad3589dee8b486d641.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-03fb3c349e9036ad3589dee8b486d641.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-04148a6afa8d0815bead7440901e2484.json b/contracts/cache/hardhat-network-fork/network-80001/request-04148a6afa8d0815bead7440901e2484.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-04148a6afa8d0815bead7440901e2484.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-0431786120f05302cde5240f740a74e6.json b/contracts/cache/hardhat-network-fork/network-80001/request-0431786120f05302cde5240f740a74e6.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-0431786120f05302cde5240f740a74e6.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-04de4a8b5279afaca50df1fa11cf0d21.json b/contracts/cache/hardhat-network-fork/network-80001/request-04de4a8b5279afaca50df1fa11cf0d21.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-04de4a8b5279afaca50df1fa11cf0d21.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-0509e82d94b1b225637032c6db021e58.json b/contracts/cache/hardhat-network-fork/network-80001/request-0509e82d94b1b225637032c6db021e58.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-0509e82d94b1b225637032c6db021e58.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-06a22618efa8a474b7603e0b654d8388.json b/contracts/cache/hardhat-network-fork/network-80001/request-06a22618efa8a474b7603e0b654d8388.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-06a22618efa8a474b7603e0b654d8388.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-071aa1ba3a76989e50efcaafb1b92580.json b/contracts/cache/hardhat-network-fork/network-80001/request-071aa1ba3a76989e50efcaafb1b92580.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-071aa1ba3a76989e50efcaafb1b92580.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-0722441b72846a776541ac02ea8925ce.json b/contracts/cache/hardhat-network-fork/network-80001/request-0722441b72846a776541ac02ea8925ce.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-0722441b72846a776541ac02ea8925ce.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-07282ecc2641d053900f7087abf35b5c.json b/contracts/cache/hardhat-network-fork/network-80001/request-07282ecc2641d053900f7087abf35b5c.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-07282ecc2641d053900f7087abf35b5c.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-07515586fb8b0404f0eeadd9de38de26.json b/contracts/cache/hardhat-network-fork/network-80001/request-07515586fb8b0404f0eeadd9de38de26.json new file mode 100644 index 0000000..633cdf2 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-07515586fb8b0404f0eeadd9de38de26.json @@ -0,0 +1 @@ +["0x6080604052600436106100225760003560e01c80634a0687ef1461003957610031565b366100315761002f61006c565b005b61002f61006c565b34801561004557600080fd5b5061002f6004803603602081101561005c57600080fd5b50356001600160a01b0316610086565b610074610084565b61008461007f610152565b610161565b565b6001600160a01b0381166100e1576040805162461bcd60e51b815260206004820152601760248201527f5555505350726f78793a207a65726f2061646472657373000000000000000000604482015290519081900360640190fd5b60006100eb610185565b6001600160a01b031614610146576040805162461bcd60e51b815260206004820152601e60248201527f5555505350726f78793a20616c726561647920696e697469616c697a65640000604482015290519081900360640190fd5b61014f816101aa565b50565b600061015c610185565b905090565b3660008037600080366000845af43d6000803e808015610180573d6000f35b3d6000fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5556fea26469706673582212207f4d1aae539b5f520670399a5049006d749c4642873ece0ea4ae53a8f7a0f8a564736f6c63430007060033","0x1","0x0"] diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-07f1deb953d0456c9f2f55ee4309b82b.json b/contracts/cache/hardhat-network-fork/network-80001/request-07f1deb953d0456c9f2f55ee4309b82b.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-07f1deb953d0456c9f2f55ee4309b82b.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-07fd9c02bab28d0440217ae28db092db.json b/contracts/cache/hardhat-network-fork/network-80001/request-07fd9c02bab28d0440217ae28db092db.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-07fd9c02bab28d0440217ae28db092db.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-08120a1194873c6390f5447669eb82d0.json b/contracts/cache/hardhat-network-fork/network-80001/request-08120a1194873c6390f5447669eb82d0.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-08120a1194873c6390f5447669eb82d0.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-081614198cae8953d20f1829d425b3c0.json b/contracts/cache/hardhat-network-fork/network-80001/request-081614198cae8953d20f1829d425b3c0.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-081614198cae8953d20f1829d425b3c0.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-084c332720376567680d8246cc2c5e5f.json b/contracts/cache/hardhat-network-fork/network-80001/request-084c332720376567680d8246cc2c5e5f.json new file mode 100644 index 0000000..5c87ee9 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-084c332720376567680d8246cc2c5e5f.json @@ -0,0 +1 @@ +["0x","0x0","0x0"] diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-08c437c9267f1130b97ad589f4413295.json b/contracts/cache/hardhat-network-fork/network-80001/request-08c437c9267f1130b97ad589f4413295.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-08c437c9267f1130b97ad589f4413295.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-093484783f5294ff1529776e3be8ef0e.json b/contracts/cache/hardhat-network-fork/network-80001/request-093484783f5294ff1529776e3be8ef0e.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-093484783f5294ff1529776e3be8ef0e.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-09d1e3779db8fb2543594e91c652e85a.json b/contracts/cache/hardhat-network-fork/network-80001/request-09d1e3779db8fb2543594e91c652e85a.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-09d1e3779db8fb2543594e91c652e85a.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-0a4bfd0c382b9a9a4e970ed7dc2c2352.json b/contracts/cache/hardhat-network-fork/network-80001/request-0a4bfd0c382b9a9a4e970ed7dc2c2352.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-0a4bfd0c382b9a9a4e970ed7dc2c2352.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-0a5d7bb4888481cb76bb91fcc39c9d1f.json b/contracts/cache/hardhat-network-fork/network-80001/request-0a5d7bb4888481cb76bb91fcc39c9d1f.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-0a5d7bb4888481cb76bb91fcc39c9d1f.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-0ae0b604acf911c42e0d047774a9c2b7.json b/contracts/cache/hardhat-network-fork/network-80001/request-0ae0b604acf911c42e0d047774a9c2b7.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-0ae0b604acf911c42e0d047774a9c2b7.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-0bea736e771ccd55c3f72863ba62d051.json b/contracts/cache/hardhat-network-fork/network-80001/request-0bea736e771ccd55c3f72863ba62d051.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-0bea736e771ccd55c3f72863ba62d051.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-0ced5b105619a356d258fcc825cd28da.json b/contracts/cache/hardhat-network-fork/network-80001/request-0ced5b105619a356d258fcc825cd28da.json new file mode 100644 index 0000000..633cdf2 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-0ced5b105619a356d258fcc825cd28da.json @@ -0,0 +1 @@ +["0x6080604052600436106100225760003560e01c80634a0687ef1461003957610031565b366100315761002f61006c565b005b61002f61006c565b34801561004557600080fd5b5061002f6004803603602081101561005c57600080fd5b50356001600160a01b0316610086565b610074610084565b61008461007f610152565b610161565b565b6001600160a01b0381166100e1576040805162461bcd60e51b815260206004820152601760248201527f5555505350726f78793a207a65726f2061646472657373000000000000000000604482015290519081900360640190fd5b60006100eb610185565b6001600160a01b031614610146576040805162461bcd60e51b815260206004820152601e60248201527f5555505350726f78793a20616c726561647920696e697469616c697a65640000604482015290519081900360640190fd5b61014f816101aa565b50565b600061015c610185565b905090565b3660008037600080366000845af43d6000803e808015610180573d6000f35b3d6000fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5556fea26469706673582212207f4d1aae539b5f520670399a5049006d749c4642873ece0ea4ae53a8f7a0f8a564736f6c63430007060033","0x1","0x0"] diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-0d16c6c4326a24e906f341af09e2f5ed.json b/contracts/cache/hardhat-network-fork/network-80001/request-0d16c6c4326a24e906f341af09e2f5ed.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-0d16c6c4326a24e906f341af09e2f5ed.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-0d2199933bdb2b5a7a051086abf77f89.json b/contracts/cache/hardhat-network-fork/network-80001/request-0d2199933bdb2b5a7a051086abf77f89.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-0d2199933bdb2b5a7a051086abf77f89.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-0daa60ed301b2b21fd382ab7d29411fd.json b/contracts/cache/hardhat-network-fork/network-80001/request-0daa60ed301b2b21fd382ab7d29411fd.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-0daa60ed301b2b21fd382ab7d29411fd.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-0db7b219dab8b5e86f739a721a819964.json b/contracts/cache/hardhat-network-fork/network-80001/request-0db7b219dab8b5e86f739a721a819964.json new file mode 100644 index 0000000..5c87ee9 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-0db7b219dab8b5e86f739a721a819964.json @@ -0,0 +1 @@ +["0x","0x0","0x0"] diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-0dd1d46d94dc90593dfcf7ec57a6ccc3.json b/contracts/cache/hardhat-network-fork/network-80001/request-0dd1d46d94dc90593dfcf7ec57a6ccc3.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-0dd1d46d94dc90593dfcf7ec57a6ccc3.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-0dfcccc343070c8645655a15583cf755.json b/contracts/cache/hardhat-network-fork/network-80001/request-0dfcccc343070c8645655a15583cf755.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-0dfcccc343070c8645655a15583cf755.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-0e116d16cd6b125e213ca832670bcf95.json b/contracts/cache/hardhat-network-fork/network-80001/request-0e116d16cd6b125e213ca832670bcf95.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-0e116d16cd6b125e213ca832670bcf95.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-0e825cf91a15297840d5b317bd97e9b4.json b/contracts/cache/hardhat-network-fork/network-80001/request-0e825cf91a15297840d5b317bd97e9b4.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-0e825cf91a15297840d5b317bd97e9b4.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-0fd5aa13e20e6afd59bc81f393d981f8.json b/contracts/cache/hardhat-network-fork/network-80001/request-0fd5aa13e20e6afd59bc81f393d981f8.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-0fd5aa13e20e6afd59bc81f393d981f8.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-104d6cf3137342f49db3a03c560ed1e6.json b/contracts/cache/hardhat-network-fork/network-80001/request-104d6cf3137342f49db3a03c560ed1e6.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-104d6cf3137342f49db3a03c560ed1e6.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-105c36203c682b4b6d2fd748d1588223.json b/contracts/cache/hardhat-network-fork/network-80001/request-105c36203c682b4b6d2fd748d1588223.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-105c36203c682b4b6d2fd748d1588223.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-1072672dea10d67d91162f6c2567a956.json b/contracts/cache/hardhat-network-fork/network-80001/request-1072672dea10d67d91162f6c2567a956.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-1072672dea10d67d91162f6c2567a956.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-10a37119aaa337cc8b9e6cb160386007.json b/contracts/cache/hardhat-network-fork/network-80001/request-10a37119aaa337cc8b9e6cb160386007.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-10a37119aaa337cc8b9e6cb160386007.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-115ab3276f32057fd019e8d4dcca8c8b.json b/contracts/cache/hardhat-network-fork/network-80001/request-115ab3276f32057fd019e8d4dcca8c8b.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-115ab3276f32057fd019e8d4dcca8c8b.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-115c72b64b78d26e7968b2f5f2518ee5.json b/contracts/cache/hardhat-network-fork/network-80001/request-115c72b64b78d26e7968b2f5f2518ee5.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-115c72b64b78d26e7968b2f5f2518ee5.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-11b5a32d363ecb5b1b4c14c765622dce.json b/contracts/cache/hardhat-network-fork/network-80001/request-11b5a32d363ecb5b1b4c14c765622dce.json new file mode 100644 index 0000000..81eead5 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-11b5a32d363ecb5b1b4c14c765622dce.json @@ -0,0 +1 @@ +"0x222e" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-122fcb30f383c442ac8eb865cc4d9a09.json b/contracts/cache/hardhat-network-fork/network-80001/request-122fcb30f383c442ac8eb865cc4d9a09.json new file mode 100644 index 0000000..5c87ee9 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-122fcb30f383c442ac8eb865cc4d9a09.json @@ -0,0 +1 @@ +["0x","0x0","0x0"] diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-12826c26c7147b82de11fb69bda975f1.json b/contracts/cache/hardhat-network-fork/network-80001/request-12826c26c7147b82de11fb69bda975f1.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-12826c26c7147b82de11fb69bda975f1.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-12afa8c9f97a4dc30439828fa2a97ed8.json b/contracts/cache/hardhat-network-fork/network-80001/request-12afa8c9f97a4dc30439828fa2a97ed8.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-12afa8c9f97a4dc30439828fa2a97ed8.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-12bc002745590e2633feccfffef7c820.json b/contracts/cache/hardhat-network-fork/network-80001/request-12bc002745590e2633feccfffef7c820.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-12bc002745590e2633feccfffef7c820.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-138af36be3a40d4fd617ed8bdbd235d1.json b/contracts/cache/hardhat-network-fork/network-80001/request-138af36be3a40d4fd617ed8bdbd235d1.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-138af36be3a40d4fd617ed8bdbd235d1.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-14fb6c6dd8af7bad69bf1e3c7201af8f.json b/contracts/cache/hardhat-network-fork/network-80001/request-14fb6c6dd8af7bad69bf1e3c7201af8f.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-14fb6c6dd8af7bad69bf1e3c7201af8f.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-15593503a6c63c1ababf61d993741fbd.json b/contracts/cache/hardhat-network-fork/network-80001/request-15593503a6c63c1ababf61d993741fbd.json new file mode 100644 index 0000000..42661dc --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-15593503a6c63c1ababf61d993741fbd.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000d12f0c4c6000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-15627505bdd034a64b1e2340fedc6587.json b/contracts/cache/hardhat-network-fork/network-80001/request-15627505bdd034a64b1e2340fedc6587.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-15627505bdd034a64b1e2340fedc6587.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-15a3fce80ea6b8a1ddba97ec073c4c4a.json b/contracts/cache/hardhat-network-fork/network-80001/request-15a3fce80ea6b8a1ddba97ec073c4c4a.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-15a3fce80ea6b8a1ddba97ec073c4c4a.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-15a416273649110f7f6b746c2670c87d.json b/contracts/cache/hardhat-network-fork/network-80001/request-15a416273649110f7f6b746c2670c87d.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-15a416273649110f7f6b746c2670c87d.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-165446c6c72983eb37bc3d772472381e.json b/contracts/cache/hardhat-network-fork/network-80001/request-165446c6c72983eb37bc3d772472381e.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-165446c6c72983eb37bc3d772472381e.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-16b2ed2e909c3c8a4d55464bf42a9ff9.json b/contracts/cache/hardhat-network-fork/network-80001/request-16b2ed2e909c3c8a4d55464bf42a9ff9.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-16b2ed2e909c3c8a4d55464bf42a9ff9.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-18164acf91b7f1398ae65647f9c76985.json b/contracts/cache/hardhat-network-fork/network-80001/request-18164acf91b7f1398ae65647f9c76985.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-18164acf91b7f1398ae65647f9c76985.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-1830a6240a3bffce82c090df7742c4ff.json b/contracts/cache/hardhat-network-fork/network-80001/request-1830a6240a3bffce82c090df7742c4ff.json new file mode 100644 index 0000000..087a93b --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-1830a6240a3bffce82c090df7742c4ff.json @@ -0,0 +1 @@ +["0x608060405234801561001057600080fd5b50600436106100b45760003560e01c806340c10f191161007157806340c10f191461021057806370a082311461023c57806395d89b4114610262578063a457c2d71461026a578063a9059cbb14610296578063dd62ed3e146102c2576100b4565b806306fdde03146100b9578063095ea7b31461013657806318160ddd1461017657806323b872dd14610190578063313ce567146101c657806339509351146101e4575b600080fd5b6100c16102f0565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100fb5781810151838201526020016100e3565b50505050905090810190601f1680156101285780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101626004803603604081101561014c57600080fd5b506001600160a01b038135169060200135610386565b604080519115158252519081900360200190f35b61017e6103a3565b60408051918252519081900360200190f35b610162600480360360608110156101a657600080fd5b506001600160a01b038135811691602081013590911690604001356103a9565b6101ce610430565b6040805160ff9092168252519081900360200190f35b610162600480360360408110156101fa57600080fd5b506001600160a01b038135169060200135610439565b6101626004803603604081101561022657600080fd5b506001600160a01b038135169060200135610487565b61017e6004803603602081101561025257600080fd5b50356001600160a01b0316610493565b6100c16104ae565b6101626004803603604081101561028057600080fd5b506001600160a01b03813516906020013561050f565b610162600480360360408110156102ac57600080fd5b506001600160a01b038135169060200135610577565b61017e600480360360408110156102d857600080fd5b506001600160a01b038135811691602001351661058b565b60038054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561037c5780601f106103515761010080835404028352916020019161037c565b820191906000526020600020905b81548152906001019060200180831161035f57829003601f168201915b5050505050905090565b600061039a6103936105b6565b84846105ba565b50600192915050565b60025490565b60006103b68484846106a6565b610426846103c26105b6565b61042185604051806060016040528060288152602001610a5a602891396001600160a01b038a166000908152600160205260408120906104006105b6565b6001600160a01b031681526020810191909152604001600020549190610801565b6105ba565b5060019392505050565b60055460ff1690565b600061039a6104466105b6565b8461042185600160006104576105b6565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490610898565b600061039a83836108f9565b6001600160a01b031660009081526020819052604090205490565b60048054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561037c5780601f106103515761010080835404028352916020019161037c565b600061039a61051c6105b6565b8461042185604051806060016040528060258152602001610acb60259139600160006105466105b6565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190610801565b600061039a6105846105b6565b84846106a6565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b0383166105ff5760405162461bcd60e51b8152600401808060200182810382526024815260200180610aa76024913960400191505060405180910390fd5b6001600160a01b0382166106445760405162461bcd60e51b8152600401808060200182810382526022815260200180610a126022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166106eb5760405162461bcd60e51b8152600401808060200182810382526025815260200180610a826025913960400191505060405180910390fd5b6001600160a01b0382166107305760405162461bcd60e51b81526004018080602001828103825260238152602001806109ef6023913960400191505060405180910390fd5b61073b8383836109e9565b61077881604051806060016040528060268152602001610a34602691396001600160a01b0386166000908152602081905260409020549190610801565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546107a79082610898565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156108905760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561085557818101518382015260200161083d565b50505050905090810190601f1680156108825780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156108f2576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b038216610954576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b610960600083836109e9565b60025461096d9082610898565b6002556001600160a01b0382166000908152602081905260409020546109939082610898565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212200dfedbae91651445f41c618ee28876acaa48b417eb67ec5fd8b36e75bad8687564736f6c63430007050033","0x1","0x0"] diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-18664eee1d86e55246591078ca58c932.json b/contracts/cache/hardhat-network-fork/network-80001/request-18664eee1d86e55246591078ca58c932.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-18664eee1d86e55246591078ca58c932.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-18902b0b7e5b0ff02728c7b692610830.json b/contracts/cache/hardhat-network-fork/network-80001/request-18902b0b7e5b0ff02728c7b692610830.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-18902b0b7e5b0ff02728c7b692610830.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-189db36e74ffe0a62297408577bfcc98.json b/contracts/cache/hardhat-network-fork/network-80001/request-189db36e74ffe0a62297408577bfcc98.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-189db36e74ffe0a62297408577bfcc98.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-18b53eed719ed0e891dfb8e87bcfd090.json b/contracts/cache/hardhat-network-fork/network-80001/request-18b53eed719ed0e891dfb8e87bcfd090.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-18b53eed719ed0e891dfb8e87bcfd090.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-1900e63ae346c7b41d3ab6c2770381dd.json b/contracts/cache/hardhat-network-fork/network-80001/request-1900e63ae346c7b41d3ab6c2770381dd.json new file mode 100644 index 0000000..3882529 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-1900e63ae346c7b41d3ab6c2770381dd.json @@ -0,0 +1 @@ +["0x60806040526004361061005e5760003560e01c80634f1ef286116100435780634f1ef286146101295780638da5cb5b1461013c578063f2fde38b14610176576100ca565b806301ffc9a7146100d45780633659cfe614610109576100ca565b366100ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f45544845525f52454a454354454400000000000000000000000000000000000060448201526064015b60405180910390fd5b6100d2610196565b005b3480156100e057600080fd5b506100f46100ef366004610806565b6101e1565b60405190151581526020015b60405180910390f35b34801561011557600080fd5b506100d2610124366004610871565b6103af565b6100d261013736600461088c565b610481565b34801561014857600080fd5b5061015161057c565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610100565b34801561018257600080fd5b506100d2610191366004610871565b6105ab565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5460003681823780813683855af491503d8082833e8280156101d7578183f35b8183fd5b50505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061027457507f7f5828d0000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b1561028157506001919050565b7fffffffff0000000000000000000000000000000000000000000000000000000080831614156102b357506000919050565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008416600482015273ffffffffffffffffffffffffffffffffffffffff8216906301ffc9a790602401602060405180830381865afa92505050801561039b575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526103989181019061090f565b60015b6103a85750600092915050565b9392505050565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610465576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a454400000000000000000000000000000000000060448201526064016100c1565b61047e816040518060200160405280600081525061066a565b50565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610537576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a454400000000000000000000000000000000000060448201526064016100c1565b6105778383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061066a92505050565b505050565b60006105a67fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b905090565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610661576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a454400000000000000000000000000000000000060448201526064016100c1565b61047e81610759565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80549083905560405173ffffffffffffffffffffffffffffffffffffffff80851691908316907f5570d70a002632a7b0b3c9304cc89efb62d8da9eca0dbd7752c83b737906829690600090a38151156105775760008373ffffffffffffffffffffffffffffffffffffffff16836040516107059190610931565b600060405180830381855af49150503d8060008114610740576040519150601f19603f3d011682016040523d82523d6000602084013e610745565b606091505b50509050806101db573d806000803e806000fd5b60006107837fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b9050817fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103558173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006020828403121561081857600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146103a857600080fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461086c57600080fd5b919050565b60006020828403121561088357600080fd5b6103a882610848565b6000806000604084860312156108a157600080fd5b6108aa84610848565b9250602084013567ffffffffffffffff808211156108c757600080fd5b818601915086601f8301126108db57600080fd5b8135818111156108ea57600080fd5b8760208285010111156108fc57600080fd5b6020830194508093505050509250925092565b60006020828403121561092157600080fd5b815180151581146103a857600080fd5b6000825160005b818110156109525760208186018101518583015201610938565b81811115610961576000828501525b50919091019291505056fea2646970667358221220d2ec357659da93a66b21590e3c56e508e51e4de5703da4d1f7ba0b98d9e047f964736f6c634300080a0033","0x1","0x0"] diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-191f2fdb74d733d3a2185d0c976e0c3c.json b/contracts/cache/hardhat-network-fork/network-80001/request-191f2fdb74d733d3a2185d0c976e0c3c.json new file mode 100644 index 0000000..c3e501c --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-191f2fdb74d733d3a2185d0c976e0c3c.json @@ -0,0 +1 @@ +"0x248" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-19f76b14164653fa4f16af350724e786.json b/contracts/cache/hardhat-network-fork/network-80001/request-19f76b14164653fa4f16af350724e786.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-19f76b14164653fa4f16af350724e786.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-1a64a0461d904e778b95bdbd015f827d.json b/contracts/cache/hardhat-network-fork/network-80001/request-1a64a0461d904e778b95bdbd015f827d.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-1a64a0461d904e778b95bdbd015f827d.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-1abcd357c2e058ea155189f13d159de1.json b/contracts/cache/hardhat-network-fork/network-80001/request-1abcd357c2e058ea155189f13d159de1.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-1abcd357c2e058ea155189f13d159de1.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-1b3348c578ecd092ca79b733ee697c38.json b/contracts/cache/hardhat-network-fork/network-80001/request-1b3348c578ecd092ca79b733ee697c38.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-1b3348c578ecd092ca79b733ee697c38.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-1b365692809f8ba800d81d048192c2de.json b/contracts/cache/hardhat-network-fork/network-80001/request-1b365692809f8ba800d81d048192c2de.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-1b365692809f8ba800d81d048192c2de.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-1b65907de55df570a7160be1bf1246ed.json b/contracts/cache/hardhat-network-fork/network-80001/request-1b65907de55df570a7160be1bf1246ed.json new file mode 100644 index 0000000..3f1522d --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-1b65907de55df570a7160be1bf1246ed.json @@ -0,0 +1 @@ +"0x2d6" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-1bcfdc00c44d1c06a023d3ccea0ef6ab.json b/contracts/cache/hardhat-network-fork/network-80001/request-1bcfdc00c44d1c06a023d3ccea0ef6ab.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-1bcfdc00c44d1c06a023d3ccea0ef6ab.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-1cc77f231bc20f4dfbaae3e2af0f2ca7.json b/contracts/cache/hardhat-network-fork/network-80001/request-1cc77f231bc20f4dfbaae3e2af0f2ca7.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-1cc77f231bc20f4dfbaae3e2af0f2ca7.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-1cd4cbe059bb98e8aeebccf6affdb536.json b/contracts/cache/hardhat-network-fork/network-80001/request-1cd4cbe059bb98e8aeebccf6affdb536.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-1cd4cbe059bb98e8aeebccf6affdb536.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-1d089af30fbd39430b1ea256cdb808c7.json b/contracts/cache/hardhat-network-fork/network-80001/request-1d089af30fbd39430b1ea256cdb808c7.json new file mode 100644 index 0000000..08451e8 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-1d089af30fbd39430b1ea256cdb808c7.json @@ -0,0 +1 @@ +"0x8059" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-1d55c2330f13c8b39bb1e6837bf1cc52.json b/contracts/cache/hardhat-network-fork/network-80001/request-1d55c2330f13c8b39bb1e6837bf1cc52.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-1d55c2330f13c8b39bb1e6837bf1cc52.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-1ec4ed60737eade88b666d5ff3dd0a0c.json b/contracts/cache/hardhat-network-fork/network-80001/request-1ec4ed60737eade88b666d5ff3dd0a0c.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-1ec4ed60737eade88b666d5ff3dd0a0c.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-1fe1776044dc6914d1a73e97ab916963.json b/contracts/cache/hardhat-network-fork/network-80001/request-1fe1776044dc6914d1a73e97ab916963.json new file mode 100644 index 0000000..e38014d --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-1fe1776044dc6914d1a73e97ab916963.json @@ -0,0 +1 @@ +"0x0000000000000000000000001064d40bad88574d1bd6c844d1e6bd4c84506172" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-1ff76b2d52ece1fd63a3b752df427787.json b/contracts/cache/hardhat-network-fork/network-80001/request-1ff76b2d52ece1fd63a3b752df427787.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-1ff76b2d52ece1fd63a3b752df427787.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-2016263248282bcf67d3de8bba8b2c05.json b/contracts/cache/hardhat-network-fork/network-80001/request-2016263248282bcf67d3de8bba8b2c05.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-2016263248282bcf67d3de8bba8b2c05.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-20b84666ea105a303d51b6f900dd77ea.json b/contracts/cache/hardhat-network-fork/network-80001/request-20b84666ea105a303d51b6f900dd77ea.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-20b84666ea105a303d51b6f900dd77ea.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-20e23051ec58355919a90d904b95150a.json b/contracts/cache/hardhat-network-fork/network-80001/request-20e23051ec58355919a90d904b95150a.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-20e23051ec58355919a90d904b95150a.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-20ee50a9c817e4e9322442456a76aca4.json b/contracts/cache/hardhat-network-fork/network-80001/request-20ee50a9c817e4e9322442456a76aca4.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-20ee50a9c817e4e9322442456a76aca4.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-216e2c6cecbd17b5c8e8034b81949cbb.json b/contracts/cache/hardhat-network-fork/network-80001/request-216e2c6cecbd17b5c8e8034b81949cbb.json new file mode 100644 index 0000000..aa028ee --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-216e2c6cecbd17b5c8e8034b81949cbb.json @@ -0,0 +1 @@ +["0x6080604052600436106100f75760003560e01c8063a3f1233e1161008a578063c1461d5711610059578063c1461d5714610378578063cf0ef51614610394578063d147adb9146103bf578063fe4b84df146103fc5761011d565b8063a3f1233e14610298578063b0da8d0b146102c1578063b47064c8146102fe578063bf6b874e1461033b5761011d565b80632bf30a0e116100c65780632bf30a0e146101ca578063550dddeb146102075780635dfad06a146102305780637df446471461025b5761011d565b806301f59d161461012257806303c845961461014d5780630a9b1803146101785780631c20fadd146101a15761011d565b3661011d5761011b3373eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee34610425565b005b600080fd5b34801561012e57600080fd5b506101376106d2565b60405161014491906126a6565b60405180910390f35b34801561015957600080fd5b506101626106d8565b60405161016f91906126a6565b60405180910390f35b34801561018457600080fd5b5061019f600480360381019061019a919061276b565b6106e1565b005b3480156101ad57600080fd5b506101c860048036038101906101c39190612815565b6107de565b005b3480156101d657600080fd5b506101f160048036038101906101ec9190612868565b6108c9565b6040516101fe9190612953565b60405180910390f35b34801561021357600080fd5b5061022e60048036038101906102299190612975565b610919565b005b34801561023c57600080fd5b506102456109c5565b6040516102529190612953565b60405180910390f35b34801561026757600080fd5b50610282600480360381019061027d91906129a2565b6109d6565b60405161028f91906126a6565b60405180910390f35b3480156102a457600080fd5b506102bf60048036038101906102ba91906129e2565b6109fb565b005b3480156102cd57600080fd5b506102e860048036038101906102e39190612868565b610c7b565b6040516102f59190612953565b60405180910390f35b34801561030a57600080fd5b50610325600480360381019061032091906129a2565b610f57565b60405161033291906126a6565b60405180910390f35b34801561034757600080fd5b50610362600480360381019061035d9190612868565b611034565b60405161036f91906126a6565b60405180910390f35b610392600480360381019061038d91906129e2565b610425565b005b3480156103a057600080fd5b506103a961104c565b6040516103b69190612a94565b60405180910390f35b3480156103cb57600080fd5b506103e660048036038101906103e191906129a2565b611070565b6040516103f391906126a6565b60405180910390f35b34801561040857600080fd5b50610423600480360381019061041e9190612975565b6110a9565b005b60026001540361046a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161046190612b0c565b60405180910390fd5b600260018190555060008073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036104c457349150610647565b60003414610507576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104fe90612b78565b60405180910390fd5b600084905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016105479190612ba7565b602060405180830381865afa158015610564573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105889190612bd7565b90506105b73330878573ffffffffffffffffffffffffffffffffffffffff1661119d909392919063ffffffff16565b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016105f29190612ba7565b602060405180830381865afa15801561060f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106339190612bd7565b905081816106419190612c33565b94505050505b8161065185611226565b61065b9190612c33565b9050610669858584846112f9565b818473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167ff0d0e99cae184d0187b093b48894117462462379674a6e11d89c3fbb618e96b060405160405180910390a4505060018081905550505050565b60335481565b64e8d4a5100081565b6106e961151d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610756576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074d90612cb3565b60405180910390fd5b80156107765761077082603761154690919063ffffffff16565b5061078c565b61078a82603761157690919063ffffffff16565b505b8173ffffffffffffffffffffffffffffffffffffffff167f112acfcc345761cf642cf6d7086cc68572679c383746552dcf2f71b26623c158826040516107d29190612ce2565b60405180910390a25050565b600260015403610823576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081a90612b0c565b60405180910390fd5b60026001819055506108363383836115a6565b610841838383611819565b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fc322efa58c9cb2c39cfffdac61d35c8643f5cbf13c6a7d0034de2cf18923aff3846040516108b591906126a6565b60405180910390a460018081905550505050565b6060610912603660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611923565b9050919050565b61092161151d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461098e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098590612cb3565b60405180910390fd5b80603381905550807fd4710696fc3761c070b614c80e5020d726828d5f75aa8a6b8287c4194dfe6da260405160405180910390a250565b60606109d16037611923565b905090565b6034602052816000526040600020602052806000526040600020600091509150505481565b610a0f33603761194490919063ffffffff16565b610a4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4590612d6f565b60405180910390fd5b600060335414610a9e57806033541015610a9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9490612ddb565b60405180910390fd5b5b6000610aaa8484611974565b9050808211610b47577f00000000000000000000000063c51b1d80b209cf336bec5a3e17d3523b088cdb73ffffffffffffffffffffffffffffffffffffffff16636f192acc8484876040518463ffffffff1660e01b8152600401610b1093929190612dfb565b600060405180830381600087803b158015610b2a57600080fd5b505af1158015610b3e573d6000803e3d6000fd5b50505050610bf7565b6000811115610be0577f00000000000000000000000063c51b1d80b209cf336bec5a3e17d3523b088cdb73ffffffffffffffffffffffffffffffffffffffff16636f192acc8483876040518463ffffffff1660e01b8152600401610bad93929190612dfb565b600060405180830381600087803b158015610bc757600080fd5b505af1158015610bdb573d6000803e3d6000fd5b505050505b610bf684848385610bf19190612c33565b611a77565b5b8273ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fe06da4bed68570a3adccb02d0aed523ccc1dd372f85808168917d1c4a7e78acb8533604051610c6d929190612e32565b60405180910390a450505050565b60606000610cc6603660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611923565b90506000610cd384611d3a565b90506000805b8251811015610ddb57610d4d838281518110610cf857610cf7612e5b565b5b6020026020010151603660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061194490919063ffffffff16565b610dc857828181518110610d6457610d63612e5b565b5b6020026020010151838381518110610d7f57610d7e612e5b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508180610dc490612e8a565b9250505b8080610dd390612e8a565b915050610cd9565b506000818451610deb9190612ed2565b905060008167ffffffffffffffff811115610e0957610e08612f28565b5b604051908082528060200260200182016040528015610e375781602001602082028036833780820191505090505b50905060005b82811015610f49578551811015610ebb57858181518110610e6157610e60612e5b565b5b6020026020010151828281518110610e7c57610e7b612e5b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050610f36565b6000865182610eca9190612c33565b9050858181518110610edf57610ede612e5b565b5b6020026020010151838381518110610efa57610ef9612e5b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050505b8080610f4190612e8a565b915050610e3d565b508095505050505050919050565b600080610f6383611226565b905061102b603460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054603560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611e88565b91505092915050565b60356020528060005260406000206000915090505481565b7f00000000000000000000000063c51b1d80b209cf336bec5a3e17d3523b088cdb81565b60008061107d8484610f57565b9050600061108b8585611974565b90506000818361109b9190612ed2565b905080935050505092915050565b600060019054906101000a900460ff166110d15760008054906101000a900460ff16156110da565b6110d9611ecd565b5b611119576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111090612fc9565b60405180910390fd5b60008060019054906101000a900460ff161590508015611169576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b81603381905550611178611ede565b80156111995760008060016101000a81548160ff0219169083151502179055505b5050565b611220846323b872dd60e01b8585856040516024016111be93929190612fe9565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611f37565b50505050565b600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611277574790506112f4565b8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016112b09190612ba7565b602060405180830381865afa1580156112cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112f19190612bd7565b90505b919050565b6000603560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600061134b85858486611ffe565b90506000820361139e5764e8d4a5100081101561139d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139490613092565b60405180910390fd5b5b600081116113e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d890613124565b60405180910390fd5b80603460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461146d9190612ed2565b9250508190555080826114809190612ed2565b603560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061151485603660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061154690919063ffffffff16565b50505050505050565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610354905090565b600061156e836000018373ffffffffffffffffffffffffffffffffffffffff1660001b61205f565b905092915050565b600061159e836000018373ffffffffffffffffffffffffffffffffffffffff1660001b6120cf565b905092915050565b60006115b183611226565b90506000603560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600061160585858486611ffe565b905064e8d4a5100081836116199190612c33565b101561165a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611651906131b6565b60405180910390fd5b6000603460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081816116e79190612c33565b603460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081836117739190612c33565b603560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508181036118105761180e86603660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061157690919063ffffffff16565b505b50505050505050565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119125760008373ffffffffffffffffffffffffffffffffffffffff168260405161188690613207565b60006040518083038185875af1925050503d80600081146118c3576040519150601f19603f3d011682016040523d82523d6000602084013e6118c8565b606091505b505090508061190c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190390613268565b60405180910390fd5b5061191e565b61191d8284836121e3565b5b505050565b6060600061193383600001612269565b905060608190508092505050919050565b600061196c836000018373ffffffffffffffffffffffffffffffffffffffff1660001b6122c5565b905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff167f00000000000000000000000063c51b1d80b209cf336bec5a3e17d3523b088cdb73ffffffffffffffffffffffffffffffffffffffff1614611a6c577f00000000000000000000000063c51b1d80b209cf336bec5a3e17d3523b088cdb73ffffffffffffffffffffffffffffffffffffffff1663b47064c884846040518363ffffffff1660e01b8152600401611a24929190613288565b602060405180830381865afa158015611a41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a659190612bd7565b9050611a71565b600090505b92915050565b6000611a8161151d565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611af1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae8906132fd565b60405180910390fd5b6000611afc84611226565b90506000611b4b8585603560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205485611ffe565b905080603460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611c0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0390613369565b60405180910390fd5b80603460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c989190612c33565b9250508190555080603460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611d2b9190612ed2565b92505081905550505050505050565b6060600073ffffffffffffffffffffffffffffffffffffffff167f00000000000000000000000063c51b1d80b209cf336bec5a3e17d3523b088cdb73ffffffffffffffffffffffffffffffffffffffff1614611e36577f00000000000000000000000063c51b1d80b209cf336bec5a3e17d3523b088cdb73ffffffffffffffffffffffffffffffffffffffff16632bf30a0e836040518263ffffffff1660e01b8152600401611de99190612ba7565b600060405180830381865afa158015611e06573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611e2f91906134c8565b9050611e83565b600067ffffffffffffffff811115611e5157611e50612f28565b5b604051908082528060200260200182016040528015611e7f5781602001602082028036833780820191505090505b5090505b919050565b6000806000841480611e9a5750600083145b15611ea85760009050611ec2565b838386611eb59190613511565b611ebf919061359a565b90505b809150509392505050565b6000611ed8306122e8565b15905090565b600060019054906101000a900460ff16611f2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f249061363d565b60405180910390fd5b611f356122fb565b565b6000611f99826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166123539092919063ffffffff16565b9050600081511115611ff95780806020019051810190611fb99190613672565b611ff8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fef90613711565b60405180910390fd5b5b505050565b600080600061200d878761236b565b9050600061201b888661236b565b9050600086148061202c5750600085145b1561203957819250612051565b61204e86836120489190613511565b82612492565b92505b829350505050949350505050565b600061206b83836122c5565b6120c45782600001829080600181540180825580915050600190039060005260206000200160009091909190915055826000018054905083600101600084815260200190815260200160002081905550600190506120c9565b600090505b92915050565b600080836001016000848152602001908152602001600020549050600081146121d75760006001826121019190612c33565b90506000600186600001805490506121199190612c33565b905081811461218857600086600001828154811061213a57612139612e5b565b5b906000526020600020015490508087600001848154811061215e5761215d612e5b565b5b90600052602060002001819055508387600101600083815260200190815260200160002081905550505b8560000180548061219c5761219b613731565b5b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506121dd565b60009150505b92915050565b6122648363a9059cbb60e01b8484604051602401612202929190613760565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611f37565b505050565b6060816000018054806020026020016040519081016040528092919081815260200182805480156122b957602002820191906000526020600020905b8154815260200190600101908083116122a5575b50505050509050919050565b600080836001016000848152602001908152602001600020541415905092915050565b600080823b905060008111915050919050565b600060019054906101000a900460ff1661234a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123419061363d565b60405180910390fd5b60018081905550565b606061236284846000856124ef565b90509392505050565b600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123bc5781905061248c565b60008373ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612409573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061242d9190612bd7565b90506012811015612464578060126124459190612c33565b600a61245191906138bc565b8361245c9190613511565b91505061248c565b6012816124719190612c33565b600a61247d91906138bc565b83612488919061359a565b9150505b92915050565b60008082846124a19190613907565b905060008082036124bf5783856124b8919061359a565b90506124e4565b838483876124cd9190612c33565b6124d79190612ed2565b6124e1919061359a565b90505b809250505092915050565b606082471015612534576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252b906139aa565b60405180910390fd5b61253d85612603565b61257c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257390613a16565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516125a59190613aa5565b60006040518083038185875af1925050503d80600081146125e2576040519150601f19603f3d011682016040523d82523d6000602084013e6125e7565b606091505b50915091506125f7828286612626565b92505050949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6060831561263657829050612686565b6000835111156126495782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267d9190613b00565b60405180910390fd5b9392505050565b6000819050919050565b6126a08161268d565b82525050565b60006020820190506126bb6000830184612697565b92915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612700826126d5565b9050919050565b612710816126f5565b811461271b57600080fd5b50565b60008135905061272d81612707565b92915050565b60008115159050919050565b61274881612733565b811461275357600080fd5b50565b6000813590506127658161273f565b92915050565b60008060408385031215612782576127816126cb565b5b60006127908582860161271e565b92505060206127a185828601612756565b9150509250929050565b60006127b6826126d5565b9050919050565b6127c6816127ab565b81146127d157600080fd5b50565b6000813590506127e3816127bd565b92915050565b6127f28161268d565b81146127fd57600080fd5b50565b60008135905061280f816127e9565b92915050565b60008060006060848603121561282e5761282d6126cb565b5b600061283c868287016127d4565b935050602061284d8682870161271e565b925050604061285e86828701612800565b9150509250925092565b60006020828403121561287e5761287d6126cb565b5b600061288c8482850161271e565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6128ca816126f5565b82525050565b60006128dc83836128c1565b60208301905092915050565b6000602082019050919050565b600061290082612895565b61290a81856128a0565b9350612915836128b1565b8060005b8381101561294657815161292d88826128d0565b9750612938836128e8565b925050600181019050612919565b5085935050505092915050565b6000602082019050818103600083015261296d81846128f5565b905092915050565b60006020828403121561298b5761298a6126cb565b5b600061299984828501612800565b91505092915050565b600080604083850312156129b9576129b86126cb565b5b60006129c78582860161271e565b92505060206129d88582860161271e565b9150509250929050565b6000806000606084860312156129fb576129fa6126cb565b5b6000612a098682870161271e565b9350506020612a1a8682870161271e565b9250506040612a2b86828701612800565b9150509250925092565b6000819050919050565b6000612a5a612a55612a50846126d5565b612a35565b6126d5565b9050919050565b6000612a6c82612a3f565b9050919050565b6000612a7e82612a61565b9050919050565b612a8e81612a73565b82525050565b6000602082019050612aa96000830184612a85565b92915050565b600082825260208201905092915050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6000612af6601f83612aaf565b9150612b0182612ac0565b602082019050919050565b60006020820190508181036000830152612b2581612ae9565b9050919050565b7f5461736b54726561737572793a204e6f20455448000000000000000000000000600082015250565b6000612b62601483612aaf565b9150612b6d82612b2c565b602082019050919050565b60006020820190508181036000830152612b9181612b55565b9050919050565b612ba1816126f5565b82525050565b6000602082019050612bbc6000830184612b98565b92915050565b600081519050612bd1816127e9565b92915050565b600060208284031215612bed57612bec6126cb565b5b6000612bfb84828501612bc2565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612c3e8261268d565b9150612c498361268d565b925082821015612c5c57612c5b612c04565b5b828203905092915050565b7f4e4f545f415554484f52495a4544000000000000000000000000000000000000600082015250565b6000612c9d600e83612aaf565b9150612ca882612c67565b602082019050919050565b60006020820190508181036000830152612ccc81612c90565b9050919050565b612cdc81612733565b82525050565b6000602082019050612cf76000830184612cd3565b92915050565b7f5461736b54726561737572793a206f6e6c7957686974656c697374656453657260008201527f7669636573000000000000000000000000000000000000000000000000000000602082015250565b6000612d59602583612aaf565b9150612d6482612cfd565b604082019050919050565b60006020820190508181036000830152612d8881612d4c565b9050919050565b7f5461736b54726561737572793a204f7665726368617267656400000000000000600082015250565b6000612dc5601983612aaf565b9150612dd082612d8f565b602082019050919050565b60006020820190508181036000830152612df481612db8565b9050919050565b6000606082019050612e106000830186612b98565b612e1d6020830185612697565b612e2a6040830184612b98565b949350505050565b6000604082019050612e476000830185612697565b612e546020830184612b98565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000612e958261268d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612ec757612ec6612c04565b5b600182019050919050565b6000612edd8261268d565b9150612ee88361268d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612f1d57612f1c612c04565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b6000612fb3602e83612aaf565b9150612fbe82612f57565b604082019050919050565b60006020820190508181036000830152612fe281612fa6565b9050919050565b6000606082019050612ffe6000830186612b98565b61300b6020830185612b98565b6130186040830184612697565b949350505050565b7f5461736b54726561737572793a2052657175697265204d494e5f53484152455360008201527f5f494e5f54524541535552590000000000000000000000000000000000000000602082015250565b600061307c602c83612aaf565b915061308782613020565b604082019050919050565b600060208201905081810360008301526130ab8161306f565b9050919050565b7f5461736b54726561737572793a205a65726f2073686172657320746f2063726560008201527f6469740000000000000000000000000000000000000000000000000000000000602082015250565b600061310e602383612aaf565b9150613119826130b2565b604082019050919050565b6000602082019050818103600083015261313d81613101565b9050919050565b7f5461736b54726561737572793a2042656c6f77204d494e5f5348415245535f4960008201527f4e5f545245415355525900000000000000000000000000000000000000000000602082015250565b60006131a0602a83612aaf565b91506131ab82613144565b604082019050919050565b600060208201905081810360008301526131cf81613193565b9050919050565b600081905092915050565b50565b60006131f16000836131d6565b91506131fc826131e1565b600082019050919050565b6000613212826131e4565b9150819050919050565b7f5f7472616e736665723a20455448207472616e73666572206661696c65640000600082015250565b6000613252601e83612aaf565b915061325d8261321c565b602082019050919050565b6000602082019050818103600083015261328181613245565b9050919050565b600060408201905061329d6000830185612b98565b6132aa6020830184612b98565b9392505050565b7f5461736b54726561737572793a204e6f2070726f78792061646d696e00000000600082015250565b60006132e7601c83612aaf565b91506132f2826132b1565b602082019050919050565b60006020820190508181036000830152613316816132da565b9050919050565b7f5461736b54726561737572793a204e6f7420656e6f7567682066756e64730000600082015250565b6000613353601e83612aaf565b915061335e8261331d565b602082019050919050565b6000602082019050818103600083015261338281613346565b9050919050565b600080fd5b6000601f19601f8301169050919050565b6133a88261338e565b810181811067ffffffffffffffff821117156133c7576133c6612f28565b5b80604052505050565b60006133da6126c1565b90506133e6828261339f565b919050565b600067ffffffffffffffff82111561340657613405612f28565b5b602082029050602081019050919050565b600080fd5b60008151905061342b81612707565b92915050565b600061344461343f846133eb565b6133d0565b9050808382526020820190506020840283018581111561346757613466613417565b5b835b81811015613490578061347c888261341c565b845260208401935050602081019050613469565b5050509392505050565b600082601f8301126134af576134ae613389565b5b81516134bf848260208601613431565b91505092915050565b6000602082840312156134de576134dd6126cb565b5b600082015167ffffffffffffffff8111156134fc576134fb6126d0565b5b6135088482850161349a565b91505092915050565b600061351c8261268d565b91506135278361268d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156135605761355f612c04565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006135a58261268d565b91506135b08361268d565b9250826135c0576135bf61356b565b5b828204905092915050565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b6000613627602b83612aaf565b9150613632826135cb565b604082019050919050565b600060208201905081810360008301526136568161361a565b9050919050565b60008151905061366c8161273f565b92915050565b600060208284031215613688576136876126cb565b5b60006136968482850161365d565b91505092915050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b60006136fb602a83612aaf565b91506137068261369f565b604082019050919050565b6000602082019050818103600083015261372a816136ee565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60006040820190506137756000830185612b98565b6137826020830184612697565b9392505050565b60008160011c9050919050565b6000808291508390505b60018511156137e0578086048111156137bc576137bb612c04565b5b60018516156137cb5780820291505b80810290506137d985613789565b94506137a0565b94509492505050565b6000826137f957600190506138b5565b8161380757600090506138b5565b816001811461381d576002811461382757613856565b60019150506138b5565b60ff84111561383957613838612c04565b5b8360020a9150848211156138505761384f612c04565b5b506138b5565b5060208310610133831016604e8410600b841016171561388b5782820a90508381111561388657613885612c04565b5b6138b5565b6138988484846001613796565b925090508184048111156138af576138ae612c04565b5b81810290505b9392505050565b60006138c78261268d565b91506138d28361268d565b92506138ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846137e9565b905092915050565b60006139128261268d565b915061391d8361268d565b92508261392d5761392c61356b565b5b828206905092915050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b6000613994602683612aaf565b915061399f82613938565b604082019050919050565b600060208201905081810360008301526139c381613987565b9050919050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b6000613a00601d83612aaf565b9150613a0b826139ca565b602082019050919050565b60006020820190508181036000830152613a2f816139f3565b9050919050565b600081519050919050565b60005b83811015613a5f578082015181840152602081019050613a44565b83811115613a6e576000848401525b50505050565b6000613a7f82613a36565b613a8981856131d6565b9350613a99818560208601613a41565b80840191505092915050565b6000613ab18284613a74565b915081905092915050565b600081519050919050565b6000613ad282613abc565b613adc8185612aaf565b9350613aec818560208601613a41565b613af58161338e565b840191505092915050565b60006020820190508181036000830152613b1a8184613ac7565b90509291505056fea264697066735822122060ffbb1fa091b2edb786ade1b25b1830860b34d3d4204e57546bd644eb4bc8de64736f6c634300080e0033","0x1","0x0"] diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-21b930b22763faebaf21bdf5b084c751.json b/contracts/cache/hardhat-network-fork/network-80001/request-21b930b22763faebaf21bdf5b084c751.json new file mode 100644 index 0000000..fbbcaf9 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-21b930b22763faebaf21bdf5b084c751.json @@ -0,0 +1 @@ +["0x73099a32459841d2de0a28b861dbc30bff20d16bb5301460806040526004361061004b5760003560e01c806306967a8c14610050578063a32470101461007a578063a9472bf8146100af575b600080fd5b61006361005e3660046106ff565b6100d1565b604051610071929190610745565b60405180910390f35b81801561008657600080fd5b5061009a6100953660046107c6565b6102f7565b60405163ffffffff9091168152602001610071565b8180156100bb57600080fd5b506100cf6100ca366004610817565b610577565b005b6060806000866001600160a01b0316634b61cc3330888860016040518563ffffffff1660e01b81526004016101099493929190610873565b600060405180830381865afa158015610126573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261014e91908101906108b2565b60008151811061016057610160610970565b60209081029190910101516040805161010080825261202082019092529192508160200160208202803683375050604080516101008082526120208201909252929550905060208201612000803683370190505091506000805b61010063ffffffff821610156102e557600163ffffffff821684901c16156102d557808583815181106101ef576101ef610970565b602002602001019063ffffffff16908163ffffffff1681525050886001600160a01b0316634b61cc33308a8463ffffffff168a61022c919061099c565b60016040518563ffffffff1660e01b815260040161024d9493929190610873565b600060405180830381865afa15801561026a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261029291908101906108b2565b6000815181106102a4576102a4610970565b60200260200101518483815181106102be576102be610970565b60209081029190910101526102d2826109b5565b91505b6102de816109ce565b90506101ba565b50808452808352505094509492505050565b600080866001600160a01b0316634b61cc3330888860016040518563ffffffff1660e01b815260040161032d9493929190610873565b600060405180830381865afa15801561034a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261037291908101906108b2565b60008151811061038457610384610970565b602002602001015160001c9050600091505b61010063ffffffff83161015610512578163ffffffff1681901c600116600003610502576040805160018082528183019092526000916020808301908036833701905050905083816000815181106103f0576103f0610970565b60209081029190910101526001600160a01b03881663090c415e8861041b63ffffffff87168961099c565b846040518463ffffffff1660e01b815260040161043a939291906109f1565b600060405180830381600087803b15801561045457600080fd5b505af1158015610468573d6000803e3d6000fd5b505050508263ffffffff166001901b821760001b8160008151811061048f5761048f610970565b602090810291909101015260405163048620af60e11b81526001600160a01b0389169063090c415e906104ca908a908a9086906004016109f1565b600060405180830381600087803b1580156104e457600080fd5b505af11580156104f8573d6000803e3d6000fd5b5050505050610512565b61050b826109ce565b9150610396565b61010063ffffffff83161061056d5760405162461bcd60e51b815260206004820152601760248201527f536c6f744269746d6170206f7574206f6620626f756e64000000000000000000604482015260640160405180910390fd5b5095945050505050565b604051634b61cc3360e01b81526000906001600160a01b03861690634b61cc33906105ad90309088908890600190600401610873565b600060405180830381865afa1580156105ca573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105f291908101906108b2565b60008151811061060457610604610970565b6020908102919091018101516040805160018082528183019092529193506000928281019080368337019050509050600163ffffffff84161b821660000361064e5761064e610a4e565b8263ffffffff166001901b19821660001b8160008151811061067257610672610970565b602090810291909101015260405163048620af60e11b81526001600160a01b0387169063090c415e906106ad908890889086906004016109f1565b600060405180830381600087803b1580156106c757600080fd5b505af11580156106db573d6000803e3d6000fd5b50505050505050505050565b6001600160a01b03811681146106fc57600080fd5b50565b6000806000806080858703121561071557600080fd5b8435610720816106e7565b93506020850135610730816106e7565b93969395505050506040820135916060013590565b604080825283519082018190526000906020906060840190828701845b8281101561078457815163ffffffff1684529284019290840190600101610762565b5050508381038285015284518082528583019183019060005b818110156107b95783518352928401929184019160010161079d565b5090979650505050505050565b600080600080600060a086880312156107de57600080fd5b85356107e9816106e7565b945060208601356107f9816106e7565b94979496505050506040830135926060810135926080909101359150565b6000806000806080858703121561082d57600080fd5b8435610838816106e7565b93506020850135610848816106e7565b925060408501359150606085013563ffffffff8116811461086857600080fd5b939692955090935050565b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b634e487b7160e01b600052604160045260246000fd5b600060208083850312156108c557600080fd5b825167ffffffffffffffff808211156108dd57600080fd5b818501915085601f8301126108f157600080fd5b8151818111156109035761090361089c565b8060051b604051601f19603f830116810181811085821117156109285761092861089c565b60405291825284820192508381018501918883111561094657600080fd5b938501935b828510156109645784518452938501939285019261094b565b98975050505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156109af576109af610986565b92915050565b6000600182016109c7576109c7610986565b5060010190565b600063ffffffff8083168181036109e7576109e7610986565b6001019392505050565b6001600160a01b038416815260208082018490526060604083018190528351908301819052600091848101916080850190845b81811015610a4057845183529383019391830191600101610a24565b509098975050505050505050565b634e487b7160e01b600052600160045260246000fdfea26469706673582212201a48b7d9f354834ef20dd7e36ec2c01610ae62b58e3bf16ab85736f55e7a4f4f64736f6c63430008100033","0x1","0x0"] diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-220af71a52250f548c17536512bfc3c6.json b/contracts/cache/hardhat-network-fork/network-80001/request-220af71a52250f548c17536512bfc3c6.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-220af71a52250f548c17536512bfc3c6.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-220b451aafc9ff2fce96c5d1ab8489e0.json b/contracts/cache/hardhat-network-fork/network-80001/request-220b451aafc9ff2fce96c5d1ab8489e0.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-220b451aafc9ff2fce96c5d1ab8489e0.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-221fe9adc0843f9327ac663e5d71571e.json b/contracts/cache/hardhat-network-fork/network-80001/request-221fe9adc0843f9327ac663e5d71571e.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-221fe9adc0843f9327ac663e5d71571e.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-2249fec2524075c4b2642df87e8408f3.json b/contracts/cache/hardhat-network-fork/network-80001/request-2249fec2524075c4b2642df87e8408f3.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-2249fec2524075c4b2642df87e8408f3.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-224e804c90a4438527e57b381c16b575.json b/contracts/cache/hardhat-network-fork/network-80001/request-224e804c90a4438527e57b381c16b575.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-224e804c90a4438527e57b381c16b575.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-227c6e7a5fd55da5cb5c9dbe5b92cc6f.json b/contracts/cache/hardhat-network-fork/network-80001/request-227c6e7a5fd55da5cb5c9dbe5b92cc6f.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-227c6e7a5fd55da5cb5c9dbe5b92cc6f.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-2348175ffd36e6f0865cb2d56d8e0deb.json b/contracts/cache/hardhat-network-fork/network-80001/request-2348175ffd36e6f0865cb2d56d8e0deb.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-2348175ffd36e6f0865cb2d56d8e0deb.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-234a43f3cd09f1c8b89ce83d349ec079.json b/contracts/cache/hardhat-network-fork/network-80001/request-234a43f3cd09f1c8b89ce83d349ec079.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-234a43f3cd09f1c8b89ce83d349ec079.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-244e33a3c2fa53c592ae4005c02115da.json b/contracts/cache/hardhat-network-fork/network-80001/request-244e33a3c2fa53c592ae4005c02115da.json new file mode 100644 index 0000000..5c87ee9 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-244e33a3c2fa53c592ae4005c02115da.json @@ -0,0 +1 @@ +["0x","0x0","0x0"] diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-245918c1e0bf1ce386930cac32c6cb4e.json b/contracts/cache/hardhat-network-fork/network-80001/request-245918c1e0bf1ce386930cac32c6cb4e.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-245918c1e0bf1ce386930cac32c6cb4e.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-24da5a067676272f43ac114481bd9205.json b/contracts/cache/hardhat-network-fork/network-80001/request-24da5a067676272f43ac114481bd9205.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-24da5a067676272f43ac114481bd9205.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-24e1275c96940279df5112acfca18620.json b/contracts/cache/hardhat-network-fork/network-80001/request-24e1275c96940279df5112acfca18620.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-24e1275c96940279df5112acfca18620.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-2539b33702d48aa21f14fc019b5ead8b.json b/contracts/cache/hardhat-network-fork/network-80001/request-2539b33702d48aa21f14fc019b5ead8b.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-2539b33702d48aa21f14fc019b5ead8b.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-254258ed2f9c7a80c87b72a379a38c04.json b/contracts/cache/hardhat-network-fork/network-80001/request-254258ed2f9c7a80c87b72a379a38c04.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-254258ed2f9c7a80c87b72a379a38c04.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-25a094b04d5dcf35c9aa96192759d5b1.json b/contracts/cache/hardhat-network-fork/network-80001/request-25a094b04d5dcf35c9aa96192759d5b1.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-25a094b04d5dcf35c9aa96192759d5b1.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-262006b4e8851f3f13b9d761cd7d3e9e.json b/contracts/cache/hardhat-network-fork/network-80001/request-262006b4e8851f3f13b9d761cd7d3e9e.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-262006b4e8851f3f13b9d761cd7d3e9e.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-2644fbef78f8e3280cb50d35b49af632.json b/contracts/cache/hardhat-network-fork/network-80001/request-2644fbef78f8e3280cb50d35b49af632.json new file mode 100644 index 0000000..306fe92 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-2644fbef78f8e3280cb50d35b49af632.json @@ -0,0 +1 @@ +["0x608060405234801561001057600080fd5b50600436106100b45760003560e01c8063b0ccbdf011610071578063b0ccbdf0146101c8578063b2db0b41146101e4578063b81cd86614610200578063c10304f714610231578063cd3d4fb914610262578063ddca3f4314610292576100b4565b806314ae9926146100b95780632e6e0bd0146100e95780633c706c6f14610119578063647846a5146101495780636d2dd29f1461016757806376474e6a14610197575b600080fd5b6100d360048036038101906100ce91906108e6565b6102b0565b6040516100e09190610935565b60405180910390f35b61010360048036038101906100fe9190610950565b610317565b6040516101109190610935565b60405180910390f35b610133600480360381019061012e91906109e2565b61034a565b6040516101409190610adb565b60405180910390f35b610151610379565b60405161015e9190610935565b60405180910390f35b610181600480360381019061017c9190610950565b61039f565b60405161018e9190610935565b60405180910390f35b6101b160048036038101906101ac9190610afd565b6103d2565b6040516101bf929190610b3d565b60405180910390f35b6101e260048036038101906101dd9190610b66565b6103e2565b005b6101fe60048036038101906101f99190610c22565b610544565b005b61021a60048036038101906102159190610950565b61054b565b604051610228929190610cd5565b60405180910390f35b61024b60048036038101906102469190610c22565b6105a7565b604051610259929190610cfe565b60405180910390f35b61027c60048036038101906102779190610d53565b6107ee565b6040516102899190610935565b60405180910390f35b61029a610821565b6040516102a79190610d99565b60405180910390f35b600060056000848152602001908152602001600020600080820160006101000a8154906fffffffffffffffffffffffffffffffff02191690556000820160106101000a8154906fffffffffffffffffffffffffffffffff0219169055505081905092915050565b60006020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606083838360405160200161036193929190610df0565b60405160208183030381529060405290509392505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000808383915091509250929050565b6000806103ef8484610827565b91509150600042836fffffffffffffffffffffffffffffffff16116104145742610416565b825b90506040518060400160405280826fffffffffffffffffffffffffffffffff168152602001836fffffffffffffffffffffffffffffffff16815250600560008c815260200190815260200160002060008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550905050816fffffffffffffffffffffffffffffffff16816fffffffffffffffffffffffffffffffff168b7f857791ec95701b6fff966bff1b5ce9a86107aeabaf6d2fdfd89993aa0f084e3760405160405180910390a450505050505050505050565b5050505050565b60056020528060005260406000206000915090508060000160009054906101000a90046fffffffffffffffffffffffffffffffff16908060000160109054906101000a90046fffffffffffffffffffffffffffffffff16905082565b600060606000600560008981526020019081526020016000206040518060400160405290816000820160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016000820160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681525050905060008082600001516fffffffffffffffffffffffffffffffff1614159050801561079257426fffffffffffffffffffffffffffffffff1682600001516fffffffffffffffffffffffffffffffff1611156106f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e790610e7f565b60405180910390fd5b60008260000151426107029190610ece565b9050600060018460200151836107189190610f31565b6107229190610f62565b90508360200151816107349190610fa8565b84600001516107439190610f62565b600560008d815260200190815260200160002060000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555050505b86868681818080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050905090509350935050509550959350505050565b60066020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b6000808383810190610839919061101e565b80925081935050509250929050565b600080fd5b600080fd5b6000819050919050565b61086581610852565b811461087057600080fd5b50565b6000813590506108828161085c565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006108b382610888565b9050919050565b6108c3816108a8565b81146108ce57600080fd5b50565b6000813590506108e0816108ba565b92915050565b600080604083850312156108fd576108fc610848565b5b600061090b85828601610873565b925050602061091c858286016108d1565b9150509250929050565b61092f816108a8565b82525050565b600060208201905061094a6000830184610926565b92915050565b60006020828403121561096657610965610848565b5b600061097484828501610873565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126109a2576109a161097d565b5b8235905067ffffffffffffffff8111156109bf576109be610982565b5b6020830191508360018202830111156109db576109da610987565b5b9250929050565b6000806000604084860312156109fb576109fa610848565b5b6000610a09868287016108d1565b935050602084013567ffffffffffffffff811115610a2a57610a2961084d565b5b610a368682870161098c565b92509250509250925092565b600081519050919050565b600082825260208201905092915050565b60005b83811015610a7c578082015181840152602081019050610a61565b83811115610a8b576000848401525b50505050565b6000601f19601f8301169050919050565b6000610aad82610a42565b610ab78185610a4d565b9350610ac7818560208601610a5e565b610ad081610a91565b840191505092915050565b60006020820190508181036000830152610af58184610aa2565b905092915050565b60008060408385031215610b1457610b13610848565b5b6000610b22858286016108d1565b9250506020610b33858286016108d1565b9150509250929050565b6000604082019050610b526000830185610926565b610b5f6020830184610926565b9392505050565b600080600080600080600060a0888a031215610b8557610b84610848565b5b6000610b938a828b01610873565b9750506020610ba48a828b016108d1565b9650506040610bb58a828b016108d1565b955050606088013567ffffffffffffffff811115610bd657610bd561084d565b5b610be28a828b0161098c565b9450945050608088013567ffffffffffffffff811115610c0557610c0461084d565b5b610c118a828b0161098c565b925092505092959891949750929550565b600080600080600060808688031215610c3e57610c3d610848565b5b6000610c4c88828901610873565b9550506020610c5d888289016108d1565b9450506040610c6e888289016108d1565b935050606086013567ffffffffffffffff811115610c8f57610c8e61084d565b5b610c9b8882890161098c565b92509250509295509295909350565b60006fffffffffffffffffffffffffffffffff82169050919050565b610ccf81610caa565b82525050565b6000604082019050610cea6000830185610cc6565b610cf76020830184610cc6565b9392505050565b6000604082019050610d136000830185610926565b8181036020830152610d258184610aa2565b90509392505050565b60048110610d3b57600080fd5b50565b600081359050610d4d81610d2e565b92915050565b600060208284031215610d6957610d68610848565b5b6000610d7784828501610d3e565b91505092915050565b6000819050919050565b610d9381610d80565b82525050565b6000602082019050610dae6000830184610d8a565b92915050565b82818337600083830152505050565b6000610dcf8385610a4d565b9350610ddc838584610db4565b610de583610a91565b840190509392505050565b6000604082019050610e056000830186610926565b8181036020830152610e18818486610dc3565b9050949350505050565b600082825260208201905092915050565b7f54696d654d6f64756c653a20546f6f206561726c790000000000000000000000600082015250565b6000610e69601583610e22565b9150610e7482610e33565b602082019050919050565b60006020820190508181036000830152610e9881610e5c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610ed982610caa565b9150610ee483610caa565b925082821015610ef757610ef6610e9f565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000610f3c82610caa565b9150610f4783610caa565b925082610f5757610f56610f02565b5b828204905092915050565b6000610f6d82610caa565b9150610f7883610caa565b9250826fffffffffffffffffffffffffffffffff03821115610f9d57610f9c610e9f565b5b828201905092915050565b6000610fb382610caa565b9150610fbe83610caa565b9250816fffffffffffffffffffffffffffffffff0483118215151615610fe757610fe6610e9f565b5b828202905092915050565b610ffb81610caa565b811461100657600080fd5b50565b60008135905061101881610ff2565b92915050565b6000806040838503121561103557611034610848565b5b600061104385828601611009565b925050602061105485828601611009565b915050925092905056fea264697066735822122001beeb4690d5307ac6e521d1448bf806a103fe90de97fd676dd48fcaa75b77e964736f6c634300080e0033","0x1","0x0"] diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-26efbb135ff9b04598ea0616afe6566c.json b/contracts/cache/hardhat-network-fork/network-80001/request-26efbb135ff9b04598ea0616afe6566c.json new file mode 100644 index 0000000..8cc690f --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-26efbb135ff9b04598ea0616afe6566c.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000137241377d5143b9d73a551cacd358" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-28137856f6a267317194c137b51e1aef.json b/contracts/cache/hardhat-network-fork/network-80001/request-28137856f6a267317194c137b51e1aef.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-28137856f6a267317194c137b51e1aef.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-2820b5ea472170d5ea8cd6a969a2d59d.json b/contracts/cache/hardhat-network-fork/network-80001/request-2820b5ea472170d5ea8cd6a969a2d59d.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-2820b5ea472170d5ea8cd6a969a2d59d.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-28c16bc9ab11b74a597f4164625e2cfa.json b/contracts/cache/hardhat-network-fork/network-80001/request-28c16bc9ab11b74a597f4164625e2cfa.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-28c16bc9ab11b74a597f4164625e2cfa.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-28f8e67c8ad9185cf274d963944cfa8a.json b/contracts/cache/hardhat-network-fork/network-80001/request-28f8e67c8ad9185cf274d963944cfa8a.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-28f8e67c8ad9185cf274d963944cfa8a.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-29275a19bd2c202f57e54826be66b5ae.json b/contracts/cache/hardhat-network-fork/network-80001/request-29275a19bd2c202f57e54826be66b5ae.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-29275a19bd2c202f57e54826be66b5ae.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-29632bf5e77a05ebbf868719904b44c5.json b/contracts/cache/hardhat-network-fork/network-80001/request-29632bf5e77a05ebbf868719904b44c5.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-29632bf5e77a05ebbf868719904b44c5.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-29934a6fbf8d8e9b028251f92b92fda9.json b/contracts/cache/hardhat-network-fork/network-80001/request-29934a6fbf8d8e9b028251f92b92fda9.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-29934a6fbf8d8e9b028251f92b92fda9.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-299748ea6dc8acf8a9f53d631c75cc6b.json b/contracts/cache/hardhat-network-fork/network-80001/request-299748ea6dc8acf8a9f53d631c75cc6b.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-299748ea6dc8acf8a9f53d631c75cc6b.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-29a7f85405bcf836169e79fff82a4613.json b/contracts/cache/hardhat-network-fork/network-80001/request-29a7f85405bcf836169e79fff82a4613.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-29a7f85405bcf836169e79fff82a4613.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-29b4ba62c92fd6c400753253d69b1779.json b/contracts/cache/hardhat-network-fork/network-80001/request-29b4ba62c92fd6c400753253d69b1779.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-29b4ba62c92fd6c400753253d69b1779.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-2baa841f25a6727a3be707333f959c44.json b/contracts/cache/hardhat-network-fork/network-80001/request-2baa841f25a6727a3be707333f959c44.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-2baa841f25a6727a3be707333f959c44.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-2c4dfc5dde50b0212fbaade10ef24bb9.json b/contracts/cache/hardhat-network-fork/network-80001/request-2c4dfc5dde50b0212fbaade10ef24bb9.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-2c4dfc5dde50b0212fbaade10ef24bb9.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-2cbca2dc61cafa61e2925fe0ea6a5a1a.json b/contracts/cache/hardhat-network-fork/network-80001/request-2cbca2dc61cafa61e2925fe0ea6a5a1a.json new file mode 100644 index 0000000..f62163d --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-2cbca2dc61cafa61e2925fe0ea6a5a1a.json @@ -0,0 +1 @@ +"0x000000000000000000000000f76f764bf04a64c70ea5cbd01b366af1c26a0f83" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-2cc6c27cf4852eca9f87d4afaf9b8b7b.json b/contracts/cache/hardhat-network-fork/network-80001/request-2cc6c27cf4852eca9f87d4afaf9b8b7b.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-2cc6c27cf4852eca9f87d4afaf9b8b7b.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-2d0460a5d66be0ede8f01dee695a7136.json b/contracts/cache/hardhat-network-fork/network-80001/request-2d0460a5d66be0ede8f01dee695a7136.json new file mode 100644 index 0000000..af5e4c2 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-2d0460a5d66be0ede8f01dee695a7136.json @@ -0,0 +1 @@ +"0x00000000000000000000000000000000000000000000003635c9adc5dea00000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-2d0c45d7f046cb0aa0cb76fd337553e3.json b/contracts/cache/hardhat-network-fork/network-80001/request-2d0c45d7f046cb0aa0cb76fd337553e3.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-2d0c45d7f046cb0aa0cb76fd337553e3.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-2d1b09324b4cd193d9c7a055091a42fe.json b/contracts/cache/hardhat-network-fork/network-80001/request-2d1b09324b4cd193d9c7a055091a42fe.json new file mode 100644 index 0000000..6a72e2f --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-2d1b09324b4cd193d9c7a055091a42fe.json @@ -0,0 +1 @@ +"0x000000000000000000000000804348d4960a61f2d5f9ce9103027a3e849e09b8" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-2d371dbd45764662266ad58731f94c42.json b/contracts/cache/hardhat-network-fork/network-80001/request-2d371dbd45764662266ad58731f94c42.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-2d371dbd45764662266ad58731f94c42.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-2d591071b82c9e52c12f497b5940c6f2.json b/contracts/cache/hardhat-network-fork/network-80001/request-2d591071b82c9e52c12f497b5940c6f2.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-2d591071b82c9e52c12f497b5940c6f2.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-2df0843c5fbb65092e8eed15ffebe6af.json b/contracts/cache/hardhat-network-fork/network-80001/request-2df0843c5fbb65092e8eed15ffebe6af.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-2df0843c5fbb65092e8eed15ffebe6af.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-2e9ee868a2d36768d78dadfab62f0a90.json b/contracts/cache/hardhat-network-fork/network-80001/request-2e9ee868a2d36768d78dadfab62f0a90.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-2e9ee868a2d36768d78dadfab62f0a90.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-2f180fda7b3098fd1db1bec710c932ba.json b/contracts/cache/hardhat-network-fork/network-80001/request-2f180fda7b3098fd1db1bec710c932ba.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-2f180fda7b3098fd1db1bec710c932ba.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-2f1fe2bbf995f63e446cf01e2406a2ac.json b/contracts/cache/hardhat-network-fork/network-80001/request-2f1fe2bbf995f63e446cf01e2406a2ac.json new file mode 100644 index 0000000..ba03618 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-2f1fe2bbf995f63e446cf01e2406a2ac.json @@ -0,0 +1 @@ +["0x608060405234801561001057600080fd5b50600436106101215760003560e01c80636352211e116100ad578063a22cb46511610071578063a22cb4651461032c578063a7c7843714610348578063b88d4fde14610366578063c87b56dd14610382578063e3d8fefe146103b257610121565b80636352211e1461024e5780636ac5bc311461027e57806370a08231146102ae57806389f71d2d146102de57806395d89b411461030e57610121565b80632742e95a116100f45780632742e95a146101ac57806342842e0e146101dc57806345a11cec146101f85780635bcabf041461021457806363185c421461023257610121565b806301ffc9a71461012657806306fdde0314610156578063095ea7b31461017457806323b872dd14610190575b600080fd5b610140600480360381019061013b9190611736565b6103e2565b60405161014d919061177e565b60405180910390f35b61015e610474565b60405161016b9190611829565b60405180910390f35b61018e600480360381019061018991906118df565b610502565b005b6101aa60048036038101906101a5919061191f565b610534565b005b6101c660048036038101906101c19190611ae1565b610566565b6040516101d3919061177e565b60405180910390f35b6101f660048036038101906101f1919061191f565b610586565b005b610212600480360381019061020d9190611b34565b6105b8565b005b61021c61062d565b6040516102299190611829565b60405180910390f35b61024c60048036038101906102479190611b34565b610649565b005b61026860048036038101906102639190611b87565b6106c9565b6040516102759190611bc3565b60405180910390f35b61029860048036038101906102939190611ae1565b61076f565b6040516102a5919061177e565b60405180910390f35b6102c860048036038101906102c39190611bde565b61077c565b6040516102d59190611c1a565b60405180910390f35b6102f860048036038101906102f39190611b34565b6107ec565b6040516103059190611c1a565b60405180910390f35b610316610874565b6040516103239190611829565b60405180910390f35b61034660048036038101906103419190611c61565b610902565b005b610350610934565b60405161035d9190611c1a565b60405180910390f35b610380600480360381019061037b9190611d06565b61093a565b005b61039c60048036038101906103979190611b87565b61096c565b6040516103a99190611829565b60405180910390f35b6103cc60048036038101906103c79190611d8e565b610d1d565b6040516103d9919061177e565b60405180910390f35b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061043d57506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061046d5750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b6000805461048190611dfd565b80601f01602080910402602001604051908101604052809291908181526020018280546104ad90611dfd565b80156104fa5780601f106104cf576101008083540402835291602001916104fa565b820191906000526020600020905b8154815290600101906020018083116104dd57829003601f168201915b505050505081565b6040517fe5313df000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fe5313df000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061057b8484600001518560200151610d58565b600190509392505050565b6040517fe5313df000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461061d576040517f1d63ff2b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610628838383610d58565b505050565b6040518060600160405280602d8152602001612683602d913981565b6000610656848484610ef9565b9050600081600b0b1315610691576002600081548092919061067790611e5d565b919050555061068c6002548585856000610fad565b6106c3565b6040517f1b8305de00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b60006003600083815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361076a576040517f1b8305de00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b6000600190509392505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036107e3576040517f538ba4f900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60019050919050565b60008084848460405160200161080493929190611eed565b604051602081830303815290604052805190602001209050600460008281526020019081526020016000205491506000820361086c576040517f1b8305de00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b509392505050565b6001805461088190611dfd565b80601f01602080910402602001604051908101604052809291908181526020018280546108ad90611dfd565b80156108fa5780601f106108cf576101008083540402835291602001916108fa565b820191906000526020600020905b8154815290600101906020018083116108dd57829003601f168201915b505050505081565b6040517fe5313df000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025481565b6040517fe5313df000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60606000600360008481526020019081526020016000206040518060800160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff168152505090506000610acf846106c9565b90506040518060600160405280602d8152602001612683602d9139610b0f836000015173ffffffffffffffffffffffffffffffffffffffff16601461132e565b836000015173ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015610b5e573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610b879190611fd0565b610c05856000015173ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bfd9190612052565b60ff1661156a565b610c2a866020015173ffffffffffffffffffffffffffffffffffffffff16601461132e565b610c4b8673ffffffffffffffffffffffffffffffffffffffff16601461132e565b610c74610c6189600001518a602001518a610ef9565b6bffffffffffffffffffffffff1661156a565b6000896060015167ffffffffffffffff1614610cc5576040518060400160405280600c81526020017f2673746172745f646174653d0000000000000000000000000000000000000000815250610cd6565b604051806020016040528060008152505b610ced8a6060015167ffffffffffffffff1661156a565b604051602001610d0599989796959493929190612283565b60405160208183030381529060405292505050919050565b600060026000815480929190610d3290611e5d565b9190505550610d4e600254848460000151856020015142610fad565b6001905092915050565b6000838383604051602001610d6f93929190611eed565b60405160208183030381529060405280519060200120905060006004600083815260200190815260200160002054905060008103610dd9576040517f1b8305de00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60036000828152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556002820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556002820160146101000a81549067ffffffffffffffff02191690555050600460008381526020019081526020016000206000905580600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e6a1e8888585856040518463ffffffff1660e01b8152600401610f5a939291906123a3565b608060405180830381865afa158015610f77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9b9190612404565b90919250905050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611013576040517f538ba4f900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600084848460405160200161102a93929190611eed565b604051602081830303815290604052805190602001209050600060046000838152602001908152602001600020541461108f576040517fdfa4c0d500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166003600088815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461112b576040517fdfa4c0d500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405180608001604052808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018367ffffffffffffffff168152506003600088815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160020160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050856004600083815260200190815260200160002081905550858373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050505050565b606060006002836002611341919061246b565b61134b91906124c5565b67ffffffffffffffff811115611364576113636119b5565b5b6040519080825280601f01601f1916602001820160405280156113965781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106113ce576113cd6124f9565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110611432576114316124f9565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006001846002611472919061246b565b61147c91906124c5565b90505b600181111561151c577f3031323334353637383961626364656600000000000000000000000000000000600f8616601081106114be576114bd6124f9565b5b1a60f81b8282815181106114d5576114d46124f9565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c94508061151590612528565b905061147f565b5060008414611560576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115579061259d565b60405180910390fd5b8091505092915050565b6060600082036115b1576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506116c5565b600082905060005b600082146115e35780806115cc90611e5d565b915050600a826115dc91906125ec565b91506115b9565b60008167ffffffffffffffff8111156115ff576115fe6119b5565b5b6040519080825280601f01601f1916602001820160405280156116315781602001600182028036833780820191505090505b5090505b600085146116be5760018261164a919061261d565b9150600a856116599190612651565b603061166591906124c5565b60f81b81838151811061167b5761167a6124f9565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856116b791906125ec565b9450611635565b8093505050505b919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611713816116de565b811461171e57600080fd5b50565b6000813590506117308161170a565b92915050565b60006020828403121561174c5761174b6116d4565b5b600061175a84828501611721565b91505092915050565b60008115159050919050565b61177881611763565b82525050565b6000602082019050611793600083018461176f565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156117d35780820151818401526020810190506117b8565b60008484015250505050565b6000601f19601f8301169050919050565b60006117fb82611799565b61180581856117a4565b93506118158185602086016117b5565b61181e816117df565b840191505092915050565b6000602082019050818103600083015261184381846117f0565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006118768261184b565b9050919050565b6118868161186b565b811461189157600080fd5b50565b6000813590506118a38161187d565b92915050565b6000819050919050565b6118bc816118a9565b81146118c757600080fd5b50565b6000813590506118d9816118b3565b92915050565b600080604083850312156118f6576118f56116d4565b5b600061190485828601611894565b9250506020611915858286016118ca565b9150509250929050565b600080600060608486031215611938576119376116d4565b5b600061194686828701611894565b935050602061195786828701611894565b9250506040611968868287016118ca565b9150509250925092565b600061197d8261186b565b9050919050565b61198d81611972565b811461199857600080fd5b50565b6000813590506119aa81611984565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6119ed826117df565b810181811067ffffffffffffffff82111715611a0c57611a0b6119b5565b5b80604052505050565b6000611a1f6116ca565b9050611a2b82826119e4565b919050565b600081600b0b9050919050565b611a4681611a30565b8114611a5157600080fd5b50565b600081359050611a6381611a3d565b92915050565b600060808284031215611a7f57611a7e6119b0565b5b611a896080611a15565b90506000611a9984828501611894565b6000830152506020611aad84828501611894565b6020830152506040611ac184828501611894565b6040830152506060611ad584828501611a54565b60608301525092915050565b600080600060c08486031215611afa57611af96116d4565b5b6000611b088682870161199b565b9350506020611b1986828701611a69565b92505060a0611b2a86828701611a54565b9150509250925092565b600080600060608486031215611b4d57611b4c6116d4565b5b6000611b5b86828701611894565b9350506020611b6c86828701611894565b9250506040611b7d86828701611894565b9150509250925092565b600060208284031215611b9d57611b9c6116d4565b5b6000611bab848285016118ca565b91505092915050565b611bbd8161186b565b82525050565b6000602082019050611bd86000830184611bb4565b92915050565b600060208284031215611bf457611bf36116d4565b5b6000611c0284828501611894565b91505092915050565b611c14816118a9565b82525050565b6000602082019050611c2f6000830184611c0b565b92915050565b611c3e81611763565b8114611c4957600080fd5b50565b600081359050611c5b81611c35565b92915050565b60008060408385031215611c7857611c776116d4565b5b6000611c8685828601611894565b9250506020611c9785828601611c4c565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f840112611cc657611cc5611ca1565b5b8235905067ffffffffffffffff811115611ce357611ce2611ca6565b5b602083019150836001820283011115611cff57611cfe611cab565b5b9250929050565b600080600080600060808688031215611d2257611d216116d4565b5b6000611d3088828901611894565b9550506020611d4188828901611894565b9450506040611d52888289016118ca565b935050606086013567ffffffffffffffff811115611d7357611d726116d9565b5b611d7f88828901611cb0565b92509250509295509295909350565b60008060a08385031215611da557611da46116d4565b5b6000611db38582860161199b565b9250506020611dc485828601611a69565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611e1557607f821691505b602082108103611e2857611e27611dce565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611e68826118a9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611e9a57611e99611e2e565b5b600182019050919050565b60008160601b9050919050565b6000611ebd82611ea5565b9050919050565b6000611ecf82611eb2565b9050919050565b611ee7611ee28261186b565b611ec4565b82525050565b6000611ef98286611ed6565b601482019150611f098285611ed6565b601482019150611f198284611ed6565b601482019150819050949350505050565b600080fd5b600067ffffffffffffffff821115611f4a57611f496119b5565b5b611f53826117df565b9050602081019050919050565b6000611f73611f6e84611f2f565b611a15565b905082815260208101848484011115611f8f57611f8e611f2a565b5b611f9a8482856117b5565b509392505050565b600082601f830112611fb757611fb6611ca1565b5b8151611fc7848260208601611f60565b91505092915050565b600060208284031215611fe657611fe56116d4565b5b600082015167ffffffffffffffff811115612004576120036116d9565b5b61201084828501611fa2565b91505092915050565b600060ff82169050919050565b61202f81612019565b811461203a57600080fd5b50565b60008151905061204c81612026565b92915050565b600060208284031215612068576120676116d4565b5b60006120768482850161203d565b91505092915050565b600081905092915050565b600061209582611799565b61209f818561207f565b93506120af8185602086016117b5565b80840191505092915050565b7f3f746f6b656e3d00000000000000000000000000000000000000000000000000600082015250565b60006120f160078361207f565b91506120fc826120bb565b600782019050919050565b7f26746f6b656e5f73796d626f6c3d000000000000000000000000000000000000600082015250565b600061213d600e8361207f565b915061214882612107565b600e82019050919050565b7f26746f6b656e5f646563696d616c733d00000000000000000000000000000000600082015250565b600061218960108361207f565b915061219482612153565b601082019050919050565b7f2673656e6465723d000000000000000000000000000000000000000000000000600082015250565b60006121d560088361207f565b91506121e08261219f565b600882019050919050565b7f2672656365697665723d00000000000000000000000000000000000000000000600082015250565b6000612221600a8361207f565b915061222c826121eb565b600a82019050919050565b7f26666c6f77526174653d00000000000000000000000000000000000000000000600082015250565b600061226d600a8361207f565b915061227882612237565b600a82019050919050565b600061228f828c61208a565b915061229a826120e4565b91506122a6828b61208a565b91506122b182612130565b91506122bd828a61208a565b91506122c88261217c565b91506122d4828961208a565b91506122df826121c8565b91506122eb828861208a565b91506122f682612214565b9150612302828761208a565b915061230d82612260565b9150612319828661208a565b9150612325828561208a565b9150612331828461208a565b91508190509a9950505050505050505050565b6000819050919050565b600061236961236461235f8461184b565b612344565b61184b565b9050919050565b600061237b8261234e565b9050919050565b600061238d82612370565b9050919050565b61239d81612382565b82525050565b60006060820190506123b86000830186612394565b6123c56020830185611bb4565b6123d26040830184611bb4565b949350505050565b6000815190506123e9816118b3565b92915050565b6000815190506123fe81611a3d565b92915050565b6000806000806080858703121561241e5761241d6116d4565b5b600061242c878288016123da565b945050602061243d878288016123ef565b935050604061244e878288016123da565b925050606061245f878288016123da565b91505092959194509250565b6000612476826118a9565b9150612481836118a9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156124ba576124b9611e2e565b5b828202905092915050565b60006124d0826118a9565b91506124db836118a9565b92508282019050808211156124f3576124f2611e2e565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000612533826118a9565b91506000820361254657612545611e2e565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b60006125876020836117a4565b915061259282612551565b602082019050919050565b600060208201905081810360008301526125b68161257a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006125f7826118a9565b9150612602836118a9565b925082612612576126116125bd565b5b828204905092915050565b6000612628826118a9565b9150612633836118a9565b925082820390508181111561264b5761264a611e2e565b5b92915050565b600061265c826118a9565b9150612667836118a9565b925082612677576126766125bd565b5b82820690509291505056fe68747470733a2f2f6e66742e7375706572666c7569642e66696e616e63652f6366612f76312f6765746d657461a2646970667358221220e123554b6f66e67097b29cb6a0ef06d7b24f0e967838c8e23df33ba5fd09519464736f6c63430008100033","0x1","0x0"] diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-2fa92dd5ce4302a4503e72811b17bf5a.json b/contracts/cache/hardhat-network-fork/network-80001/request-2fa92dd5ce4302a4503e72811b17bf5a.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-2fa92dd5ce4302a4503e72811b17bf5a.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-300f7ff62cdb00c311eb4da3692225ea.json b/contracts/cache/hardhat-network-fork/network-80001/request-300f7ff62cdb00c311eb4da3692225ea.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-300f7ff62cdb00c311eb4da3692225ea.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-301b5bced5362c17f8bd8e4ce4b9f137.json b/contracts/cache/hardhat-network-fork/network-80001/request-301b5bced5362c17f8bd8e4ce4b9f137.json new file mode 100644 index 0000000..d202604 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-301b5bced5362c17f8bd8e4ce4b9f137.json @@ -0,0 +1 @@ +"0x00000000000000000000000049e565ed1bdc17f3d220f72df0857c26fa83f873" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-3074425f929f2f1e163175abb0b95de1.json b/contracts/cache/hardhat-network-fork/network-80001/request-3074425f929f2f1e163175abb0b95de1.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-3074425f929f2f1e163175abb0b95de1.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-30da9ad3f5bac6ec4df3e294015d36c8.json b/contracts/cache/hardhat-network-fork/network-80001/request-30da9ad3f5bac6ec4df3e294015d36c8.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-30da9ad3f5bac6ec4df3e294015d36c8.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-30ee907ffe4d736b6e0f6aa79597dff6.json b/contracts/cache/hardhat-network-fork/network-80001/request-30ee907ffe4d736b6e0f6aa79597dff6.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-30ee907ffe4d736b6e0f6aa79597dff6.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-3125b69d0217b7e69ec3e2eb0675d84e.json b/contracts/cache/hardhat-network-fork/network-80001/request-3125b69d0217b7e69ec3e2eb0675d84e.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-3125b69d0217b7e69ec3e2eb0675d84e.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-312bc8637ff6d181e4d03f16d04bbf71.json b/contracts/cache/hardhat-network-fork/network-80001/request-312bc8637ff6d181e4d03f16d04bbf71.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-312bc8637ff6d181e4d03f16d04bbf71.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-31606782ca0fe5b4321a673ed7f1bd0c.json b/contracts/cache/hardhat-network-fork/network-80001/request-31606782ca0fe5b4321a673ed7f1bd0c.json new file mode 100644 index 0000000..5c87ee9 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-31606782ca0fe5b4321a673ed7f1bd0c.json @@ -0,0 +1 @@ +["0x","0x0","0x0"] diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-31936adb5377a071d07949c51f9b6785.json b/contracts/cache/hardhat-network-fork/network-80001/request-31936adb5377a071d07949c51f9b6785.json new file mode 100644 index 0000000..114cf7d --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-31936adb5377a071d07949c51f9b6785.json @@ -0,0 +1 @@ +"0x00000000000000000000001215f0ca26781c3852f8166ed2ebce5d18265cceb7" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-32a568f7677a8427f04ddf2b74318ad8.json b/contracts/cache/hardhat-network-fork/network-80001/request-32a568f7677a8427f04ddf2b74318ad8.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-32a568f7677a8427f04ddf2b74318ad8.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-32ffb3e369799eef62d0aeb1ce44aa55.json b/contracts/cache/hardhat-network-fork/network-80001/request-32ffb3e369799eef62d0aeb1ce44aa55.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-32ffb3e369799eef62d0aeb1ce44aa55.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-3300e0e894669a59177eae90ea730f8d.json b/contracts/cache/hardhat-network-fork/network-80001/request-3300e0e894669a59177eae90ea730f8d.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-3300e0e894669a59177eae90ea730f8d.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-33141a0563c9a96c75e15729c0384c30.json b/contracts/cache/hardhat-network-fork/network-80001/request-33141a0563c9a96c75e15729c0384c30.json new file mode 100644 index 0000000..d11ce28 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-33141a0563c9a96c75e15729c0384c30.json @@ -0,0 +1 @@ +"0x48f" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-336f96e5740d9041b0aecdcd24d88b07.json b/contracts/cache/hardhat-network-fork/network-80001/request-336f96e5740d9041b0aecdcd24d88b07.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-336f96e5740d9041b0aecdcd24d88b07.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-342a52d13d03ead6539932366d6408bc.json b/contracts/cache/hardhat-network-fork/network-80001/request-342a52d13d03ead6539932366d6408bc.json new file mode 100644 index 0000000..80ac8de --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-342a52d13d03ead6539932366d6408bc.json @@ -0,0 +1 @@ +"0x000000000000000000000000a98e63d66b86aacc13936dbdaf0b37046513f337" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-34da462ed767be7e033535e3c448203b.json b/contracts/cache/hardhat-network-fork/network-80001/request-34da462ed767be7e033535e3c448203b.json new file mode 100644 index 0000000..e66c4b4 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-34da462ed767be7e033535e3c448203b.json @@ -0,0 +1 @@ +["0x6080604052600436106100dd5760003560e01c8063715018a61161007f578063b47064c811610059578063b47064c814610286578063c1461d57146102c3578063c63aa029146102df578063f2fde38b14610308576100dd565b8063715018a61461021b578063848f5f3d146102325780638da5cb5b1461025b576100dd565b8063573ea575116100bb578063573ea575146101735780635dfad06a1461019e5780636f192acc146101c9578063710e5d2f146101f2576100dd565b806301f59d16146100e25780631c20fadd1461010d5780632bf30a0e14610136575b600080fd5b3480156100ee57600080fd5b506100f7610331565b6040516101049190611aaa565b60405180910390f35b34801561011957600080fd5b50610134600480360381019061012f9190611b92565b610337565b005b34801561014257600080fd5b5061015d60048036038101906101589190611be5565b610590565b60405161016a9190611cd0565b60405180910390f35b34801561017f57600080fd5b506101886106f1565b6040516101959190611d01565b60405180910390f35b3480156101aa57600080fd5b506101b3610715565b6040516101c09190611cd0565b60405180910390f35b3480156101d557600080fd5b506101f060048036038101906101eb9190611d1c565b6107fa565b005b3480156101fe57600080fd5b5061021960048036038101906102149190611d6f565b610aad565b005b34801561022757600080fd5b50610230610b33565b005b34801561023e57600080fd5b5061025960048036038101906102549190611be5565b610bbb565b005b34801561026757600080fd5b50610270610ca2565b60405161027d9190611dab565b60405180910390f35b34801561029257600080fd5b506102ad60048036038101906102a89190611dc6565b610ccb565b6040516102ba9190611aaa565b60405180910390f35b6102dd60048036038101906102d89190611e06565b610cf0565b005b3480156102eb57600080fd5b5061030660048036038101906103019190611be5565b611093565b005b34801561031457600080fd5b5061032f600480360381019061032a9190611be5565b61117b565b005b60025481565b6002600154141561037d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161037490611eb6565b60405180910390fd5b60026001819055506000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006104128284611273565b905080826104209190611f05565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506104ab85858361128c565b818114156105065761050484600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061139790919063ffffffff16565b505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fc322efa58c9cb2c39cfffdac61d35c8643f5cbf13c6a7d0034de2cf18923aff38460405161057a9190611aaa565b60405180910390a4505060018081905550505050565b606060006105db600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206113c7565b905060008167ffffffffffffffff8111156105f9576105f8611f39565b5b6040519080825280602002602001820160405280156106275781602001602082028036833780820191505090505b50905060005b828110156106e65761068681600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206113dc90919063ffffffff16565b82828151811061069957610698611f68565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505080806106de90611f97565b91505061062d565b508092505050919050565b7f00000000000000000000000025ad59adbe00c2d80c86d01e2e05e1294da8482381565b6060600061072360056113c7565b905060008167ffffffffffffffff81111561074157610740611f39565b5b60405190808252806020026020018201604052801561076f5781602001602082028036833780820191505090505b50905060005b828110156107f1576107918160056113dc90919063ffffffff16565b8282815181106107a4576107a3611f68565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505080806107e990611f97565b915050610775565b50809250505090565b61080e3360056113f690919063ffffffff16565b61084d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084490612052565b60405180910390fd5b60006002541461089d5781600254101561089c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610893906120e4565b60405180910390fd5b5b81600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109259190611f05565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415610a7d57610a7b83600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061139790919063ffffffff16565b505b610aa87f00000000000000000000000025ad59adbe00c2d80c86d01e2e05e1294da84823848461128c565b505050565b610ab5611426565b73ffffffffffffffffffffffffffffffffffffffff16610ad3610ca2565b73ffffffffffffffffffffffffffffffffffffffff1614610b29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2090612150565b60405180910390fd5b8060028190555050565b610b3b611426565b73ffffffffffffffffffffffffffffffffffffffff16610b59610ca2565b73ffffffffffffffffffffffffffffffffffffffff1614610baf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba690612150565b60405180910390fd5b610bb9600061142e565b565b610bc3611426565b73ffffffffffffffffffffffffffffffffffffffff16610be1610ca2565b73ffffffffffffffffffffffffffffffffffffffff1614610c37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2e90612150565b60405180910390fd5b610c4b8160056113f690919063ffffffff16565b610c8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c81906121e2565b60405180910390fd5b610c9e81600561139790919063ffffffff16565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6003602052816000526040600020602052806000526040600020600091509150505481565b600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d4257349050610e82565b600083905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610d829190611dab565b602060405180830381865afa158015610d9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc39190612217565b9050610df23330868573ffffffffffffffffffffffffffffffffffffffff166114f2909392919063ffffffff16565b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610e2d9190611dab565b602060405180830381865afa158015610e4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6e9190612217565b90508181610e7c9190611f05565b93505050505b80600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f0a9190612244565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610fdb83600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206113f690919063ffffffff16565b6110325761103083600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061157b90919063ffffffff16565b505b808373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167ff0d0e99cae184d0187b093b48894117462462379674a6e11d89c3fbb618e96b060405160405180910390a450505050565b61109b611426565b73ffffffffffffffffffffffffffffffffffffffff166110b9610ca2565b73ffffffffffffffffffffffffffffffffffffffff161461110f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110690612150565b60405180910390fd5b6111238160056113f690919063ffffffff16565b15611163576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115a9061230c565b60405180910390fd5b61117781600561157b90919063ffffffff16565b5050565b611183611426565b73ffffffffffffffffffffffffffffffffffffffff166111a1610ca2565b73ffffffffffffffffffffffffffffffffffffffff16146111f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ee90612150565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611267576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125e9061239e565b60405180910390fd5b6112708161142e565b50565b60008183106112825781611284565b825b905092915050565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113865760008373ffffffffffffffffffffffffffffffffffffffff16826040516112fa906123ef565b60006040518083038185875af1925050503d8060008114611337576040519150601f19603f3d011682016040523d82523d6000602084013e61133c565b606091505b5050905080611380576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137790612450565b60405180910390fd5b50611392565b6113918284836115ab565b5b505050565b60006113bf836000018373ffffffffffffffffffffffffffffffffffffffff1660001b611631565b905092915050565b60006113d582600001611745565b9050919050565b60006113eb8360000183611756565b60001c905092915050565b600061141e836000018373ffffffffffffffffffffffffffffffffffffffff1660001b611781565b905092915050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611575846323b872dd60e01b85858560405160240161151393929190612470565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506117a4565b50505050565b60006115a3836000018373ffffffffffffffffffffffffffffffffffffffff1660001b61186b565b905092915050565b61162c8363a9059cbb60e01b84846040516024016115ca9291906124a7565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506117a4565b505050565b600080836001016000848152602001908152602001600020549050600081146117395760006001826116639190611f05565b905060006001866000018054905061167b9190611f05565b90508181146116ea57600086600001828154811061169c5761169b611f68565b5b90600052602060002001549050808760000184815481106116c0576116bf611f68565b5b90600052602060002001819055508387600101600083815260200190815260200160002081905550505b856000018054806116fe576116fd6124d0565b5b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061173f565b60009150505b92915050565b600081600001805490509050919050565b600082600001828154811061176e5761176d611f68565b5b9060005260206000200154905092915050565b600080836001016000848152602001908152602001600020541415905092915050565b6000611806826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166118db9092919063ffffffff16565b905060008151111561186657808060200190518101906118269190612537565b611865576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185c906125d6565b60405180910390fd5b5b505050565b60006118778383611781565b6118d05782600001829080600181540180825580915050600190039060005260206000200160009091909190915055826000018054905083600101600084815260200190815260200160002081905550600190506118d5565b600090505b92915050565b60606118ea84846000856118f3565b90509392505050565b606082471015611938576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192f90612668565b60405180910390fd5b61194185611a07565b611980576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611977906126d4565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516119a99190612763565b60006040518083038185875af1925050503d80600081146119e6576040519150601f19603f3d011682016040523d82523d6000602084013e6119eb565b606091505b50915091506119fb828286611a2a565b92505050949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60608315611a3a57829050611a8a565b600083511115611a4d5782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8191906127cf565b60405180910390fd5b9392505050565b6000819050919050565b611aa481611a91565b82525050565b6000602082019050611abf6000830184611a9b565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611af582611aca565b9050919050565b611b0581611aea565b8114611b1057600080fd5b50565b600081359050611b2281611afc565b92915050565b6000611b3382611aca565b9050919050565b611b4381611b28565b8114611b4e57600080fd5b50565b600081359050611b6081611b3a565b92915050565b611b6f81611a91565b8114611b7a57600080fd5b50565b600081359050611b8c81611b66565b92915050565b600080600060608486031215611bab57611baa611ac5565b5b6000611bb986828701611b13565b9350506020611bca86828701611b51565b9250506040611bdb86828701611b7d565b9150509250925092565b600060208284031215611bfb57611bfa611ac5565b5b6000611c0984828501611b51565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b611c4781611b28565b82525050565b6000611c598383611c3e565b60208301905092915050565b6000602082019050919050565b6000611c7d82611c12565b611c878185611c1d565b9350611c9283611c2e565b8060005b83811015611cc3578151611caa8882611c4d565b9750611cb583611c65565b925050600181019050611c96565b5085935050505092915050565b60006020820190508181036000830152611cea8184611c72565b905092915050565b611cfb81611aea565b82525050565b6000602082019050611d166000830184611cf2565b92915050565b600080600060608486031215611d3557611d34611ac5565b5b6000611d4386828701611b51565b9350506020611d5486828701611b7d565b9250506040611d6586828701611b51565b9150509250925092565b600060208284031215611d8557611d84611ac5565b5b6000611d9384828501611b7d565b91505092915050565b611da581611b28565b82525050565b6000602082019050611dc06000830184611d9c565b92915050565b60008060408385031215611ddd57611ddc611ac5565b5b6000611deb85828601611b51565b9250506020611dfc85828601611b51565b9150509250929050565b600080600060608486031215611e1f57611e1e611ac5565b5b6000611e2d86828701611b51565b9350506020611e3e86828701611b51565b9250506040611e4f86828701611b7d565b9150509250925092565b600082825260208201905092915050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6000611ea0601f83611e59565b9150611eab82611e6a565b602082019050919050565b60006020820190508181036000830152611ecf81611e93565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611f1082611a91565b9150611f1b83611a91565b925082821015611f2e57611f2d611ed6565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000611fa282611a91565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611fd557611fd4611ed6565b5b600182019050919050565b7f5461736b54726561737572793a206f6e6c7957686974656c697374656453657260008201527f7669636573000000000000000000000000000000000000000000000000000000602082015250565b600061203c602583611e59565b915061204782611fe0565b604082019050919050565b6000602082019050818103600083015261206b8161202f565b9050919050565b7f5461736b54726561737572793a2075736546756e64733a204f7665726368617260008201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b60006120ce602283611e59565b91506120d982612072565b604082019050919050565b600060208201905081810360008301526120fd816120c1565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061213a602083611e59565b915061214582612104565b602082019050919050565b600060208201905081810360008301526121698161212d565b9050919050565b7f5461736b54726561737572793a2061646457686974656c69737465645365727660008201527f6963653a202177686974656c6973746564000000000000000000000000000000602082015250565b60006121cc603183611e59565b91506121d782612170565b604082019050919050565b600060208201905081810360008301526121fb816121bf565b9050919050565b60008151905061221181611b66565b92915050565b60006020828403121561222d5761222c611ac5565b5b600061223b84828501612202565b91505092915050565b600061224f82611a91565b915061225a83611a91565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561228f5761228e611ed6565b5b828201905092915050565b7f5461736b54726561737572793a2061646457686974656c69737465645365727660008201527f6963653a2077686974656c697374656400000000000000000000000000000000602082015250565b60006122f6603083611e59565b91506123018261229a565b604082019050919050565b60006020820190508181036000830152612325816122e9565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612388602683611e59565b91506123938261232c565b604082019050919050565b600060208201905081810360008301526123b78161237b565b9050919050565b600081905092915050565b50565b60006123d96000836123be565b91506123e4826123c9565b600082019050919050565b60006123fa826123cc565b9150819050919050565b7f5f7472616e736665723a20455448207472616e73666572206661696c65640000600082015250565b600061243a601e83611e59565b915061244582612404565b602082019050919050565b600060208201905081810360008301526124698161242d565b9050919050565b60006060820190506124856000830186611d9c565b6124926020830185611d9c565b61249f6040830184611a9b565b949350505050565b60006040820190506124bc6000830185611d9c565b6124c96020830184611a9b565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60008115159050919050565b612514816124ff565b811461251f57600080fd5b50565b6000815190506125318161250b565b92915050565b60006020828403121561254d5761254c611ac5565b5b600061255b84828501612522565b91505092915050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b60006125c0602a83611e59565b91506125cb82612564565b604082019050919050565b600060208201905081810360008301526125ef816125b3565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b6000612652602683611e59565b915061265d826125f6565b604082019050919050565b6000602082019050818103600083015261268181612645565b9050919050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b60006126be601d83611e59565b91506126c982612688565b602082019050919050565b600060208201905081810360008301526126ed816126b1565b9050919050565b600081519050919050565b60005b8381101561271d578082015181840152602081019050612702565b8381111561272c576000848401525b50505050565b600061273d826126f4565b61274781856123be565b93506127578185602086016126ff565b80840191505092915050565b600061276f8284612732565b915081905092915050565b600081519050919050565b6000601f19601f8301169050919050565b60006127a18261277a565b6127ab8185611e59565b93506127bb8185602086016126ff565b6127c481612785565b840191505092915050565b600060208201905081810360008301526127e98184612796565b90509291505056fea2646970667358221220e43388a58ec477738b20fba948d59aa00d4dd155d1c7f5703b2a260e2e2410fa64736f6c634300080c0033","0x1","0x4ebfa2b4e78c13fc"] diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-3616adeaa13bf4645db338ce1020ac4f.json b/contracts/cache/hardhat-network-fork/network-80001/request-3616adeaa13bf4645db338ce1020ac4f.json new file mode 100644 index 0000000..4aee172 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-3616adeaa13bf4645db338ce1020ac4f.json @@ -0,0 +1 @@ +"0x00000000000000000000000000000000000000000000005142cdcdf5268c03e8" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-362807bd0d6403d805a486bc284694d7.json b/contracts/cache/hardhat-network-fork/network-80001/request-362807bd0d6403d805a486bc284694d7.json new file mode 100644 index 0000000..5c87ee9 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-362807bd0d6403d805a486bc284694d7.json @@ -0,0 +1 @@ +["0x","0x0","0x0"] diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-36940953f6a85e6106f002e3e091255e.json b/contracts/cache/hardhat-network-fork/network-80001/request-36940953f6a85e6106f002e3e091255e.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-36940953f6a85e6106f002e3e091255e.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-36f35953bb7f26c2bd1d16f5c8bdf0c2.json b/contracts/cache/hardhat-network-fork/network-80001/request-36f35953bb7f26c2bd1d16f5c8bdf0c2.json new file mode 100644 index 0000000..dc4a821 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-36f35953bb7f26c2bd1d16f5c8bdf0c2.json @@ -0,0 +1 @@ +["0x","0x0","0x1d24b2dfac520000"] diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-373caa38f1b5e02b6a5e2d76ca5ad5a0.json b/contracts/cache/hardhat-network-fork/network-80001/request-373caa38f1b5e02b6a5e2d76ca5ad5a0.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-373caa38f1b5e02b6a5e2d76ca5ad5a0.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-382f41620cb2cb723c35708edeb59b5d.json b/contracts/cache/hardhat-network-fork/network-80001/request-382f41620cb2cb723c35708edeb59b5d.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-382f41620cb2cb723c35708edeb59b5d.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-3901dff00def8acbfe8abbe74d2c97d7.json b/contracts/cache/hardhat-network-fork/network-80001/request-3901dff00def8acbfe8abbe74d2c97d7.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-3901dff00def8acbfe8abbe74d2c97d7.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-3988473744f50813e17664517ea43da9.json b/contracts/cache/hardhat-network-fork/network-80001/request-3988473744f50813e17664517ea43da9.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-3988473744f50813e17664517ea43da9.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-39cde994df158c2e58b88d4284fadef8.json b/contracts/cache/hardhat-network-fork/network-80001/request-39cde994df158c2e58b88d4284fadef8.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-39cde994df158c2e58b88d4284fadef8.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-39d27895b29d520f12400d0430f755ef.json b/contracts/cache/hardhat-network-fork/network-80001/request-39d27895b29d520f12400d0430f755ef.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-39d27895b29d520f12400d0430f755ef.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-39de2fbfc802a9bd185d319cc377a1d2.json b/contracts/cache/hardhat-network-fork/network-80001/request-39de2fbfc802a9bd185d319cc377a1d2.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-39de2fbfc802a9bd185d319cc377a1d2.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-3a4ec8a9d0cffa0a48190e5481e77655.json b/contracts/cache/hardhat-network-fork/network-80001/request-3a4ec8a9d0cffa0a48190e5481e77655.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-3a4ec8a9d0cffa0a48190e5481e77655.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-3a7f87517183fa670d6919cc1008479b.json b/contracts/cache/hardhat-network-fork/network-80001/request-3a7f87517183fa670d6919cc1008479b.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-3a7f87517183fa670d6919cc1008479b.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-3b362302b512ac64a599d6fc34d30156.json b/contracts/cache/hardhat-network-fork/network-80001/request-3b362302b512ac64a599d6fc34d30156.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-3b362302b512ac64a599d6fc34d30156.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-3b7719e56a79294f5156201bdef55bac.json b/contracts/cache/hardhat-network-fork/network-80001/request-3b7719e56a79294f5156201bdef55bac.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-3b7719e56a79294f5156201bdef55bac.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-3c6cd25ce5fd2e03e1fec04203093c7d.json b/contracts/cache/hardhat-network-fork/network-80001/request-3c6cd25ce5fd2e03e1fec04203093c7d.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-3c6cd25ce5fd2e03e1fec04203093c7d.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-3e144af5c94b1908ef75e774b32f9e5f.json b/contracts/cache/hardhat-network-fork/network-80001/request-3e144af5c94b1908ef75e774b32f9e5f.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-3e144af5c94b1908ef75e774b32f9e5f.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-3e2ea05c77d7d9899a627bded00a9db7.json b/contracts/cache/hardhat-network-fork/network-80001/request-3e2ea05c77d7d9899a627bded00a9db7.json new file mode 100644 index 0000000..5c87ee9 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-3e2ea05c77d7d9899a627bded00a9db7.json @@ -0,0 +1 @@ +["0x","0x0","0x0"] diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-3e59e74b2ac733025d6081462b12f996.json b/contracts/cache/hardhat-network-fork/network-80001/request-3e59e74b2ac733025d6081462b12f996.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-3e59e74b2ac733025d6081462b12f996.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-3e7f17d2bc3eeb158be0f57d697f895d.json b/contracts/cache/hardhat-network-fork/network-80001/request-3e7f17d2bc3eeb158be0f57d697f895d.json new file mode 100644 index 0000000..bb86498 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-3e7f17d2bc3eeb158be0f57d697f895d.json @@ -0,0 +1 @@ +"0x28c" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-3f176ba8cf7f77856bdc3cd692e9ebe7.json b/contracts/cache/hardhat-network-fork/network-80001/request-3f176ba8cf7f77856bdc3cd692e9ebe7.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-3f176ba8cf7f77856bdc3cd692e9ebe7.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-3f1d666a1e907df0a5985d15070312cd.json b/contracts/cache/hardhat-network-fork/network-80001/request-3f1d666a1e907df0a5985d15070312cd.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-3f1d666a1e907df0a5985d15070312cd.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-3f9a29a19b4cba3c0566117283246213.json b/contracts/cache/hardhat-network-fork/network-80001/request-3f9a29a19b4cba3c0566117283246213.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-3f9a29a19b4cba3c0566117283246213.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-4096e9504ec69414e936d3dbecb5083c.json b/contracts/cache/hardhat-network-fork/network-80001/request-4096e9504ec69414e936d3dbecb5083c.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-4096e9504ec69414e936d3dbecb5083c.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-40dce59b5bcaa7e995cbaec28a17bab0.json b/contracts/cache/hardhat-network-fork/network-80001/request-40dce59b5bcaa7e995cbaec28a17bab0.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-40dce59b5bcaa7e995cbaec28a17bab0.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-41060c7a2731fbdd5975578d39f33472.json b/contracts/cache/hardhat-network-fork/network-80001/request-41060c7a2731fbdd5975578d39f33472.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-41060c7a2731fbdd5975578d39f33472.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-41152eb81cfdaea673b4ca4eae749a8b.json b/contracts/cache/hardhat-network-fork/network-80001/request-41152eb81cfdaea673b4ca4eae749a8b.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-41152eb81cfdaea673b4ca4eae749a8b.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-41677c4e6e0a9c8f639356d57a4ad891.json b/contracts/cache/hardhat-network-fork/network-80001/request-41677c4e6e0a9c8f639356d57a4ad891.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-41677c4e6e0a9c8f639356d57a4ad891.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-41b3592d077b1b0eca12ffa0d12e0f11.json b/contracts/cache/hardhat-network-fork/network-80001/request-41b3592d077b1b0eca12ffa0d12e0f11.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-41b3592d077b1b0eca12ffa0d12e0f11.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-41b8e7ea35dcfb9674ffb26e52cb3230.json b/contracts/cache/hardhat-network-fork/network-80001/request-41b8e7ea35dcfb9674ffb26e52cb3230.json new file mode 100644 index 0000000..3a987cf --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-41b8e7ea35dcfb9674ffb26e52cb3230.json @@ -0,0 +1 @@ +["0x608060405234801561001057600080fd5b506004361061012c5760003560e01c80637fbc7639116100ad578063acf4a6c211610071578063acf4a6c214610320578063b6dacdb814610333578063b96731c214610355578063cd7245c514610368578063d787840a146103c057600080fd5b80637fbc763914610294578063899baaec146102a75780639903ad38146102d75780639b2e48bc146102df578063acafa1b81461030d57600080fd5b806350d75d25116100f457806350d75d25146101f957806352d1902d146102015780635b534051146102175780636041ae961461025b5780637730599e1461026e57600080fd5b8063232d2b581461013157806323fc23f31461015a5780632e5e74c61461019e5780633fd4176a146101b157806346951954146101e4575b600080fd5b61014461013f3660046143c7565b6103d3565b60405161015191906144a2565b60405180910390f35b61016d6101683660046144b5565b610af6565b6040805194151585526001600160801b03938416602086015291831691840191909152166060820152608001610151565b6101446101ac366004614500565b610b61565b6101cc73099a32459841d2de0a28b861dbc30bff20d16bb581565b6040516001600160a01b039091168152602001610151565b6101f76101f2366004614554565b6110cc565b005b6101cc611125565b610209611154565b604051908152602001610151565b61022a610225366004614578565b6111b8565b6040516101519493929190931515845291151560208401526001600160801b03166040830152606082015260800190565b6101446102693660046145d4565b61128e565b7f8aedc3b5d4bf031e11a7e2940f7251c005698405d58e02e1c247fed3b1b3a674610209565b6101446102a236600461464f565b6116b7565b6102ba6102b5366004614690565b6117a4565b604080519283526001600160801b03909116602083015201610151565b6101f761184d565b6102f26102ed3660046146e1565b611956565b60408051938452602084019290925290820152606001610151565b61014461031b366004614500565b611b61565b61014461032e3660046145d4565b611f6e565b610346610341366004614722565b61252c565b6040516101519392919061479f565b61014461036336600461483c565b612781565b61037b610376366004614891565b612881565b604080516001600160a01b03909616865263ffffffff9094166020860152911515928401929092526001600160801b039091166060830152608082015260a001610151565b6101446103ce3660046148bd565b612987565b60606001600160a01b0385166104055760405163e961d6ff60e01b81526109c460048201526024015b60405180910390fd5b61040d61421f565b61041561427d565b606060008061045a8c89898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612b4692505050565b90508060a00151925080606001519150506104798b828b8d6000612d13565b60808901521515602080890191909152606088019190915260408088018390529287528251908101909252600082526104b5918d918c91612e0e565b925086868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050602086015191965050156105195764040000000060c084015261050f8386612e3c565b60a0850152610534565b64010000000060c084015261052e8386612e3c565b60a08501525b83602001518015610551575060808401515163ffffffff90811614155b1561062c576105a08460800151608001516001600160801b0316896001600160801b03168660600151602001516001600160801b03166105919190614937565b61059b919061494a565b612ff3565b6060850180516001600160801b03909216602090920191909152845190516001600160a01b038d169163a1b2bf8b916105d890613060565b6040518363ffffffff1660e01b81526004016105f592919061498d565b600060405180830381600087803b15801561060f57600080fd5b505af1158015610623573d6000803e3d6000fd5b50505050610813565b8360200151156106a9576106718460800151608001516001600160801b0316896001600160801b03168660600151604001516001600160801b03166105919190614937565b6060850180516001600160801b03909216604090920191909152845190516001600160a01b038d169163a1b2bf8b916105d890613060565b6040518060a0016040528063ffffffff80168152602001826001600160a01b031681526020018b63ffffffff1681526020018560600151600001516001600160801b03168152602001896001600160801b031681525084608001819052508a6001600160a01b03166312a6a3f8856040015161072887608001516130fe565b6040518363ffffffff1660e01b815260040161074592919061498d565b600060405180830381600087803b15801561075f57600080fd5b505af1158015610773573d6000803e3d6000fd5b505050508784606001516040015161078b91906149a6565b6060850180516001600160801b03909216604090920191909152845190516001600160a01b038d169163a1b2bf8b916107c390613060565b6040518363ffffffff1660e01b81526004016107e092919061498d565b600060405180830381600087803b1580156107fa57600080fd5b505af115801561080e573d6000803e3d6000fd5b505050505b60008460800151608001516001600160801b031685608001516060015186606001516000015161084391906149cd565b6001600160801b031661085691906149ed565b905063ffffffff801685608001516000015163ffffffff16036108ef576108868c8361088184614a72565b6131a5565b6001600160a01b038c1663cf97256d8361089f84614a72565b6040518363ffffffff1660e01b81526004016108bc929190614a8e565b600060405180830381600087803b1580156108d657600080fd5b505af11580156108ea573d6000803e3d6000fd5b505050505b60405163cf97256d60e01b81526001600160a01b038d169063cf97256d9061091d908d908590600401614a8e565b600060405180830381600087803b15801561093757600080fd5b505af115801561094b573d6000803e3d6000fd5b505050508460200151156109f15760608086015151608080880180516001600160801b039384169401939093528251918c16910152604086015190516001600160a01b038e169163a1b2bf8b916109a1906130fe565b6040518363ffffffff1660e01b81526004016109be92919061498d565b600060405180830381600087803b1580156109d857600080fd5b505af11580156109ec573d6000803e3d6000fd5b505050505b846020015115610a205764080000000060c085015260a0850151610a17908590886132f3565b9650610a409050565b64020000000060c085015260a0850151610a3c908590886132f3565b9650505b8a63ffffffff16826001600160a01b03168d6001600160a01b03167f0115987243fd19d615b5ea62a80372a06a2b37fec378b148ee7a507c5c4c0a398d8d88604051610a8e93929190614aa7565b60405180910390a4896001600160a01b03168c6001600160a01b03167fe0707ac7efb8b59c22189af8d004ed17dc9e4379e71b9066119b62c182524977848e8d88604051610adf9493929190614ae3565b60405180910390a350505050509695505050505050565b600080600080610b1f604080516060810182526000808252602082018190529181019190915290565b6000610b2b888861353f565b9050610b3789826135a6565b90965091508515610b5657815160208301516040840151919650945092505b505093509350935093565b6060610b6b61421f565b610b7361427d565b600060606000610bb98c89898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612b4692505050565b606081015160a0909101519093509150506001600160a01b038816610bf55760405163e961d6ff60e01b81526109c460048201526024016103fc565b896001600160a01b0316826001600160a01b031614610c27576040516392da6d1760e01b815260040160405180910390fd5b610c358b8b8a8c6001612d13565b6080890152506060870152604080870182905291865281516020810190925260008252610c65918d918b91612e0e565b925086868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505064100000000060c087015250909550610cb690508386612e3c565b60a08501526080808501519081015160609182015191860151516000926001600160801b0390921691610ce8916149cd565b6001600160801b0316610cfb91906149ed565b60808601515190915063ffffffff90811614610d4857846080015160800151856060015160200151610d2d91906149cd565b60608601516001600160801b03909116602090910152610d7b565b846080015160800151856060015160400151610d6491906149cd565b60608601516001600160801b039091166040909101525b8b6001600160a01b031663a1b2bf8b8660000151610d9c8860600151613060565b6040518363ffffffff1660e01b8152600401610db992919061498d565b600060405180830381600087803b158015610dd357600080fd5b505af1158015610de7573d6000803e3d6000fd5b5050505060808501515163ffffffff90811614610e1157610e118c8a8760800151600001516136ba565b60808501515163ffffffff1663fffffffe1901610e9f57610e368c8c61088184614a72565b6001600160a01b038c1663cf97256d8c610e4f84614a72565b6040518363ffffffff1660e01b8152600401610e6c929190614a8e565b600060405180830381600087803b158015610e8657600080fd5b505af1158015610e9a573d6000803e3d6000fd5b505050505b6040858101519051632704839760e01b81526004810191909152600260248201526001600160a01b038d1690632704839790604401600060405180830381600087803b158015610eee57600080fd5b505af1158015610f02573d6000803e3d6000fd5b505060405163cf97256d60e01b81526001600160a01b038f16925063cf97256d9150610f34908c908590600401614a8e565b600060405180830381600087803b158015610f4e57600080fd5b505af1158015610f62573d6000803e3d6000fd5b505064200000000060c0870152505060a0850151610f82908590886132f3565b9050809650508963ffffffff168b6001600160a01b03168d6001600160a01b03167fe1f8e9cd8061e5b251769965bda6ca9ef1674bc6541fb9131039fa53f024d1428c86604051610fd4929190614b2c565b60405180910390a4886001600160a01b03168c6001600160a01b03167f9e02127550b99adc8cc6ee332a36f31338facdbc396cebefce9a047247cd04558d8d8660405161102393929190614b50565b60405180910390a38963ffffffff168b6001600160a01b03168d6001600160a01b03167f0115987243fd19d615b5ea62a80372a06a2b37fec378b148ee7a507c5c4c0a398c60008760405161107a93929190614aa7565b60405180910390a4886001600160a01b03168c6001600160a01b03167fe0707ac7efb8b59c22189af8d004ed17dc9e4379e71b9066119b62c1825249778d8d600087604051610adf9493929190614ae3565b336001600160a01b037f000000000000000000000000eb796bdb90ffa0f28255275e16936d25d3418603161461111957604051632a94f67960e21b81526120d060048201526024016103fc565b61112281613745565b50565b600061114f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905090565b6000306001600160a01b0316637730599e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611194573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114f9190614b80565b6000806000806000806111e4604080516060810182526000808252602082018190529181019190915290565b6111ec6142b8565b6111fa8c8c8b8d6000612d13565b909b50929650909450925090508761122357600080600080975097509750975050505050611283565b8051608082015163ffffffff9182169091141597509550866112795780608001516001600160801b03168160600151836000015161126191906149cd565b6001600160801b03166112749190614b99565b61127c565b60005b9450505050505b945094509450949050565b606061129861421f565b6112a061427d565b6000606060006112e68b89898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612b4692505050565b9050806060015192508060a001519150506113058a8a848b6001612d13565b6080890181905260608901929092525060408701919091529085525163ffffffff1663fffffffe190161134f57604051639995b0c160e01b81526107d460048201526024016103fc565b61136e8a8a866040015160405180602001604052806000815250612e0e565b925086868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505064100000000060c0870152509095506113bf90508386612e3c565b60a08501526080808501519081015160609182015191860151516000926001600160801b03909216916113f1916149cd565b6001600160801b031661140491906149ed565b905084608001516080015185606001516020015161142291906149cd565b6060860180516001600160801b03909216602090920191909152608080870151015190516040015161145491906149a6565b6060860180516001600160801b03909216604090920191909152855190516001600160a01b038d169163a1b2bf8b9161148c90613060565b6040518363ffffffff1660e01b81526004016114a992919061498d565b600060405180830381600087803b1580156114c357600080fd5b505af11580156114d7573d6000803e3d6000fd5b505050506114ee8b848760800151600001516136ba565b606080860151516080870180516001600160801b039092169190920152805163ffffffff9052604086015190516001600160a01b038d169163a1b2bf8b91611535906130fe565b6040518363ffffffff1660e01b815260040161155292919061498d565b600060405180830381600087803b15801561156c57600080fd5b505af1158015611580573d6000803e3d6000fd5b505060405163cf97256d60e01b81526001600160a01b038e16925063cf97256d91506115b29086908590600401614a8e565b600060405180830381600087803b1580156115cc57600080fd5b505af11580156115e0573d6000803e3d6000fd5b505064200000000060c0870152505060a0850151611600908590886132f3565b9050809650508863ffffffff168a6001600160a01b03168c6001600160a01b03167fe1f8e9cd8061e5b251769965bda6ca9ef1674bc6541fb9131039fa53f024d1428686604051611652929190614b2c565b60405180910390a4826001600160a01b03168b6001600160a01b03167f9e02127550b99adc8cc6ee332a36f31338facdbc396cebefce9a047247cd04558c8c866040516116a193929190614b50565b60405180910390a3505050505095945050505050565b606060006116fb8785858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612b4692505050565b60608101519091506000806117118a848b61394d565b9150915080600001516001600160801b0316886001600160801b0316101561174c5760405163cfdca72560e01b815260040160405180910390fd5b61175f8a848b85858d8a60a001516139b0565b86868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929d9c50505050505050505050505050565b60008060006117b3868661353f565b90506000806117c289846135a6565b91509150816117e857604051639995b0c160e01b81526107d160048201526024016103fc565b6000816040015182602001516117fe91906149a6565b6001600160801b03169050600061181861059b838a614bb8565b83519091506118289082906149a6565b955061183d826001600160801b038316614b99565b9650505050505094509492505050565b600054610100900460ff161580801561186d5750600054600160ff909116105b806118875750303b158015611887575060005460ff166001145b6118ea5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103fc565b6000805460ff19166001179055801561190d576000805461ff0019166101001790555b8015611122576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a150565b60008060006060806119688888613be3565b909250905060005b81518163ffffffff161015611b455760006119896142b8565b600080868563ffffffff16815181106119a4576119a4614bda565b602002602001015190506119d78d878763ffffffff16815181106119ca576119ca614bda565b6020026020010151613cd6565b9094509250836119e9576119e9614bf0565b8063ffffffff16836000015163ffffffff1614611a0857611a08614bf0565b6001600160a01b038d16634b61cc33308e611a2d63ffffffff8616600160801b614937565b60016040518563ffffffff1660e01b8152600401611a4e9493929190614c06565b600060405180830381865afa158015611a6b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a939190810190614d2c565b600081518110611aa557611aa5614bda565b6020026020010151915050611ad3604080516060810182526000808252602082018190529181019190915290565b611add8d836135a6565b909450905083611aef57611aef614bf0565b82608001516001600160801b031683606001518260000151611b1191906149cd565b6001600160801b0316611b2491906149ed565b611b2e908b614d60565b99505050505080611b3e90614d88565b9050611970565b50611b508888613df2565b935060009250505093509350939050565b6060611ba38784848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612b4692505050565b506001600160a01b038416611bcf5760405163e961d6ff60e01b81526109c460048201526024016103fc565b611bd761421f565b611bdf61427d565b611bed8989888a6001612d13565b6080870181905260608701929092525060408501919091529083525163ffffffff90811614611c3357604051635b5b42a560e01b81526107d360048201526024016103fc565b60008260800151608001516001600160801b0316836080015160600151846060015160000151611c6391906149cd565b6001600160801b0316611c769190614b99565b9050611c978a8a856040015160405180602001604052806000815250612e0e565b915085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509296505082159150611f2790505764040000000060c0830152611cef8285612e3c565b60a0840152611d028a8a61088184614a72565b6001600160a01b038a1663cf97256d8a611d1b84614a72565b6040518363ffffffff1660e01b8152600401611d38929190614a8e565b600060405180830381600087803b158015611d5257600080fd5b505af1158015611d66573d6000803e3d6000fd5b50505050606083810151516080850180516001600160801b039092169190920152604084015190516001600160a01b038c169163a1b2bf8b91611da8906130fe565b6040518363ffffffff1660e01b8152600401611dc592919061498d565b600060405180830381600087803b158015611ddf57600080fd5b505af1158015611df3573d6000803e3d6000fd5b505060405163cf97256d60e01b81526001600160a01b038d16925063cf97256d9150611e25908a908590600401614a8e565b600060405180830381600087803b158015611e3f57600080fd5b505af1158015611e53573d6000803e3d6000fd5b505050508763ffffffff16896001600160a01b03168b6001600160a01b03167f467eccd248ef31c8bcef16d94856855799a8783aeef10f3759e43614059a6bb18a85604051611ea3929190614a8e565b60405180910390a4604080516001600160a01b038b8116825263ffffffff8b166020830152918101839052818916918c16907f48a3d91d4a07e4982b081260e24f922bd33bb965882772d6de19c922c3eabdea9060600160405180910390a364080000000060c083015260a0830151611f1e908390866132f3565b9450611f619050565b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509296505050505b5050509695505050505050565b6060611f7861421f565b611f8061427d565b600060606000611fc68b89898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612b4692505050565b9050806060015192508060a00151915050611fe58a8a848b6000612d13565b60808901521580156020890152606088019190915260408701919091529085526120395760808401515163ffffffff9081161461203957604051635b5b42a560e01b81526107d360048201526024016103fc565b86868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052506040808a0151815160208101909252918152949950612092948f94508e9350909150612e0e565b925083602001516121bb5764010000000060c08401526120b28386612e3c565b60a08086019190915260408051918201815260008083526001600160a01b038c16602084015263ffffffff8b1691830191909152606080870151516001600160801b0316908301526080808301919091528501528351612115908b908490613e9b565b60808501805163ffffffff909216909152604085015190516001600160a01b038c16916312a6a3f891612147906130fe565b6040518363ffffffff1660e01b815260040161216492919061498d565b600060405180830381600087803b15801561217e57600080fd5b505af1158015612192573d6000803e3d6000fd5b505064020000000060c0860152505060a08401516121b2908490876132f3565b955061247c9050565b64040000000060c08401526121d08386612e3c565b60a08501526080808501519081015160609182015191860151516000926001600160801b0390921691612202916149cd565b6001600160801b031661221591906149ed565b9050846080015160800151856060015160200181815161223591906149a6565b6001600160801b031690525060808086015101516060860151604001805161225e9083906149cd565b6001600160801b0316905250845160608601516001600160a01b038d169163a1b2bf8b9161228b90613060565b6040518363ffffffff1660e01b81526004016122a892919061498d565b600060405180830381600087803b1580156122c257600080fd5b505af11580156122d6573d6000803e3d6000fd5b505050506122e98b8b8361088190614a72565b6001600160a01b038b1663cf97256d8b61230284614a72565b6040518363ffffffff1660e01b815260040161231f929190614a8e565b600060405180830381600087803b15801561233957600080fd5b505af115801561234d573d6000803e3d6000fd5b505060405163cf97256d60e01b81526001600160a01b038e16925063cf97256d915061237f9086908590600401614a8e565b600060405180830381600087803b15801561239957600080fd5b505af11580156123ad573d6000803e3d6000fd5b5050506060808701515160808801516001600160801b039091169101525084516123da908c908590613e9b565b60808601805163ffffffff909216909152604086015190516001600160a01b038d169163a1b2bf8b9161240c906130fe565b6040518363ffffffff1660e01b815260040161242992919061498d565b600060405180830381600087803b15801561244357600080fd5b505af1158015612457573d6000803e3d6000fd5b505064080000000060c0870152505060a0850151612477908590886132f3565b965050505b8763ffffffff16896001600160a01b03168b6001600160a01b03167f492d2641617cfaf24ac7328f85bc5bdf5113537d78dc7671afa4f49a73f053c285856040516124c8929190614b2c565b60405180910390a4816001600160a01b03168a6001600160a01b03167fc0b8396b655615cdb85fe462a9a1792480816f909cd46d9517a940b386dfbf6b8b8b8560405161251793929190614b50565b60405180910390a35050505095945050505050565b606080606080606061253e8787613be3565b9092509050600061254d6142b8565b82516001600160401b0381111561256657612566614c2f565b60405190808252806020026020018201604052801561258f578160200160208202803683370190505b50965082516001600160401b038111156125ab576125ab614c2f565b6040519080825280602002602001820160405280156125d4578160200160208202803683370190505b50955082516001600160401b038111156125f0576125f0614c2f565b604051908082528060200260200182016040528015612619578160200160208202803683370190505b50945060005b83518163ffffffff161015612775576000858263ffffffff168151811061264857612648614bda565b602002602001015190506000858363ffffffff168151811061266c5761266c614bda565b602002602001015190506126808c82613cd6565b90955093508461269257612692614bf0565b8163ffffffff16846000015163ffffffff16146126b1576126b1614bf0565b83602001518a8463ffffffff16815181106126ce576126ce614bda565b60200260200101906001600160a01b031690816001600160a01b0316815250508360400151898463ffffffff168151811061270b5761270b614bda565b602002602001019063ffffffff16908163ffffffff16815250508360800151888463ffffffff168151811061274257612742614bda565b60200260200101906001600160801b031690816001600160801b03168152505050508061276e90614d88565b905061261f565b50505050509250925092565b606060006127c58785858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612b4692505050565b60608101519091506000806127db8a848b61394d565b915091506000816040015182602001516127f591906149a6565b6001600160801b03169050801561283b57600061281561059b838c614bb8565b90506128398c868d878786896000015161282f91906149a6565b8c60a001516139b0565b505b87878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929e9d5050505050505050505050505050565b60008060008060008060006128af604080516060810182526000808252602082018190529181019190915290565b6128b76142b8565b6128c18b8b613cd6565b9094509050836128e857604051639995b0c160e01b81526107d260048201526024016103fc565b8060200151985080604001519750612900898961353f565b925061290c8b846135a6565b90945091508361291e5761291e614bf0565b8051608082015163ffffffff9182169091141597509550866129745780608001516001600160801b03168160600151836000015161295c91906149cd565b6001600160801b031661296f9190614b99565b612977565b60005b9450505050509295509295909350565b606060006129cb8685858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612b4692505050565b606081015190915060006129df828861353f565b90506129eb8882613f42565b15612a0d57604051635b5b42a560e01b81526107d060048201526024016103fc565b876001600160a01b03166312a6a3f882612a5e604051806060016040528060006001600160801b0316815260200160006001600160801b0316815260200160006001600160801b0316815250613060565b6040518363ffffffff1660e01b8152600401612a7b92919061498d565b600060405180830381600087803b158015612a9557600080fd5b505af1158015612aa9573d6000803e3d6000fd5b505050508663ffffffff16826001600160a01b0316896001600160a01b03167f01ab8663165edfb7390d9e5f75d960a66dacf4f01fa9787e3a731c870d0da9218660a00151604051612afb91906144a2565b60405180910390a485858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929b9a5050505050505050505050565b612b4e6142e6565b336001600160a01b0316836001600160a01b03166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bba9190614db6565b6001600160a01b031614612c045760405162461bcd60e51b81526020600482015260116024820152701d5b985d5d1a1bdc9a5e9959081a1bdcdd607a1b60448201526064016103fc565b604051632fd0a1cd60e21b8152339063bf42873490612c279085906004016144a2565b602060405180830381865afa158015612c44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c689190614de3565b612ca25760405162461bcd60e51b815260206004820152600b60248201526a0d2dcecc2d8d2c840c6e8f60ab1b60448201526064016103fc565b604051631fb6491d60e11b81523390633f6c923a90612cc59085906004016144a2565b600060405180830381865afa158015612ce2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612d0a9190810190614e8a565b90505b92915050565b6040805160608101825260008082526020820181905291810182905281906000612d3b6142b8565b6000612d478a8961353f565b9550612d538987613fee565b9450612d5f8b876135a6565b9450905080612d8557604051639995b0c160e01b81526107d160048201526024016103fc565b612d8f8b86613cd6565b90935091508615612e005782612dbc57604051639995b0c160e01b81526107d260048201526024016103fc565b896001600160a01b031682602001516001600160a01b031614612de157612de1614bf0565b8763ffffffff16826040015163ffffffff1614612e0057612e00614bf0565b509550955095509550959050565b612e1661427d565b6001600160a01b0394851681529290931660208301526040820152606081019190915290565b6020820151604051633e7d48bd60e21b81526001600160a01b03909116600482015260609060009081908190339063f9f522f490602401606060405180830381865afa158015612e90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eb49190614f90565b91945092509050828015612ec6575081155b15612fea576000612ed7868861402f565b90508660c001518216600003612fdc576000612ef68860c001516140ad565b88516040808b015160608c015182516000815260208101909352612f2293923092919060448101614fcc565b60408051601f19818403018152918152602080830180516001600160e01b03166001600160e01b031990951694909417909352918a015160c08b01519251633a020f0160e11b815291935033926374041e0292612f919291869164100000000091909114908890600401615011565b6000604051808303816000875af1158015612fb0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612fd8919081019061505a565b9550505b612fe7866000614144565b50505b50505092915050565b60006001600160801b0382111561305c5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b60648201526084016103fc565b5090565b604080516002808252606080830184529260208301908036833701905050905081600001516001600160801b0316600160801b1760001b816000815181106130aa576130aa614bda565b602002602001018181525050608082604001516001600160801b0316901b82602001516001600160801b03161760001b816001815181106130ed576130ed614bda565b602002602001018181525050919050565b6040805160028082526060808301845292602083019080368337019050509050816000015163ffffffff166020836040015163ffffffff16901b606084602001516001600160a01b0316901b171760001b8160008151811061316257613162614bda565b602002602001018181525050608082608001516001600160801b0316901b82606001516001600160801b03161760001b816001815181106130ed576130ed614bda565b806000036131b257505050565b604051634b61cc3360e01b81526000906001600160a01b03851690634b61cc33906131ed903090879064010000000090600190600401614c06565b600060405180830381865afa15801561320a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526132329190810190614d2c565b90508161325b8260008151811061324b5761324b614bda565b602002602001015160001c61416c565b6132659190614d60565b60001b8160008151811061327b5761327b614bda565b602090810291909101015260405163048620af60e11b81526001600160a01b0385169063090c415e906132bb90869064010000000090869060040161508e565b600060405180830381600087803b1580156132d557600080fd5b505af11580156132e9573d6000803e3d6000fd5b5050505050505050565b6132fb6142e6565b6020840151604051633e7d48bd60e21b81526001600160a01b03909116600482015260609060009081908190339063f9f522f490602401606060405180830381865afa15801561334f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133739190614f90565b88965091945092509050828015613388575081155b1561353457613397848961402f565b93508760c0015181166000036135225760006133b68960c001516140ad565b89516040808c015160608d0151825160008152602081019093526133e49392309291908e90604481016150b5565b60408051601f19818403018152918152602080830180516001600160e01b03166001600160e01b031990951694909417909352918b015160c08c0151925163079b42a160e21b81529193503392631e6d0a84926134539291869164200000000091909114908b90600401615011565b6000604051808303816000875af1158015613472573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261349a919081019061505a565b604051631fb6491d60e11b81529095503390633f6c923a906134c09088906004016144a2565b600060405180830381865afa1580156134dd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135059190810190614e8a565b955061351a89608001518761010001516141d6565b610100870152505b61353186866101000151614144565b93505b505050935093915050565b60405168383ab13634b9b432b960b91b60208201526bffffffffffffffffffffffff19606084901b1660298201526001600160e01b031960e083901b16603d8201526000906041015b60405160208183030381529060405280519060200120905092915050565b60408051606081018252600080825260208201819052918101829052604051636c2d9f2f60e01b815230600482015260248101849052600260448201526000906001600160a01b03861690636c2d9f2f90606401600060405180830381865afa158015613617573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261363f9190810190614d2c565b905060008160008151811061365657613656614bda565b602002602001015160001c905060008260018151811061367857613678614bda565b602002602001015160001c905060008211945084156136b0576001600160801b03808316855281166020850152608081901c60408501525b5050509250929050565b604051631528e57f60e31b81526001600160a01b038085166004830152831660248201526000604482015263ffffffff8216606482015273099a32459841d2de0a28b861dbc30bff20d16bb59063a9472bf89060840160006040518083038186803b15801561372857600080fd5b505af415801561373c573d6000803e3d6000fd5b50505050505050565b600061376f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6001600160a01b0316036137c55760405162461bcd60e51b815260206004820152601d60248201527f5555505350726f786961626c653a206e6f742075706772616461626c6500000060448201526064016103fc565b806001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613803573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138279190614b80565b61382f611154565b146138885760405162461bcd60e51b815260206004820152602360248201527f5555505350726f786961626c653a206e6f7420636f6d70617469626c65206c6f60448201526267696360e81b60648201526084016103fc565b6001600160a01b03811630036138e05760405162461bcd60e51b815260206004820152601960248201527f5555505350726f786961626c653a2070726f7879206c6f6f700000000000000060448201526064016103fc565b613908817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b7fe011bc04c286c344a8fcbb8de77f953da762c3e25d8cdea984147fc4168a5dcc613931611154565b604080519182526001600160a01b03841660208301520161194b565b604080516060810182526000808252602082018190529181018290526000613975858561353f565b925061398186846135a6565b92509050806139a757604051639995b0c160e01b81526107d160048201526024016103fc565b50935093915050565b866001600160a01b031663cf97256d8785602001516001600160801b03168660000151866139de91906149cd565b6001600160801b03166139f090614a72565b6139fa91906149ed565b6040518363ffffffff1660e01b8152600401613a17929190614a8e565b600060405180830381600087803b158015613a3157600080fd5b505af1158015613a45573d6000803e3d6000fd5b50505050613a7f878785604001516001600160801b0316866000015186613a6c91906149cd565b6001600160801b031661088191906149ed565b82516001600160801b03831684526001600160a01b03881663a1b2bf8b86613aa687613060565b6040518363ffffffff1660e01b8152600401613ac392919061498d565b600060405180830381600087803b158015613add57600080fd5b505af1158015613af1573d6000803e3d6000fd5b505050508563ffffffff16876001600160a01b0316896001600160a01b03167f81e37f3d9f16cbf29a62d6a1c21d79b23ef29b54124ec44af43a50fffb9304f3848789604001518a6020015189604051613b4f95949392919061511b565b60405180910390a46040516379359f6f60e01b81526001600160a01b0388811660048301528916906379359f6f90602401602060405180830381865afa158015613b9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bc19190614de3565b156132e957604051636212897360e01b815261083460048201526024016103fc565b60608073099a32459841d2de0a28b861dbc30bff20d16bb56306967a8c85856000600160801b6040518563ffffffff1660e01b8152600401613c289493929190614c06565b600060405180830381865af4158015613c45573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613c6d9190810190615157565b909250905060005b8151811015613cce57613ca184838381518110613c9457613c94614bda565b6020026020010151613fee565b828281518110613cb357613cb3614bda565b6020908102919091010152613cc78161521b565b9050613c75565b509250929050565b6000613ce06142b8565b604051636c2d9f2f60e01b815230600482015260248101849052600260448201526000906001600160a01b03861690636c2d9f2f90606401600060405180830381865afa158015613d35573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613d5d9190810190614d2c565b9050600081600081518110613d7457613d74614bda565b602002602001015160001c9050600082600181518110613d9657613d96614bda565b602002602001015160001c905060008211945084156136b057606082811c60208087019190915283901c63ffffffff9081166040870152831685526001600160801b03821690850152608081811c908501525050509250929050565b600080836001600160a01b0316634b61cc33308564010000000060016040518563ffffffff1660e01b8152600401613e2d9493929190614c06565b600060405180830381865afa158015613e4a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613e729190810190614d2c565b905080600081518110613e8757613e87614bda565b602002602001015160001c91505092915050565b604051630a32470160e41b81526001600160a01b03808516600483015283166024820152600060448201819052600160801b6064830152608482018390529073099a32459841d2de0a28b861dbc30bff20d16bb59063a32470109060a401602060405180830381865af4158015613f16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f3a9190615234565b949350505050565b604051636c2d9f2f60e01b8152306004820152602481018290526002604482015260009081906001600160a01b03851690636c2d9f2f90606401600060405180830381865afa158015613f99573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613fc19190810190614d2c565b9050600081600081518110613fd857613fd8614bda565b6020908102919091010151151595945050505050565b604080516b39bab139b1b934b83a34b7b760a11b6020820152606084811b6bffffffffffffffffffffffff1916602c83015291810183905260009101613588565b6020810151608082015160a08301518351604051630768fabb60e41b8152606094339463768fabb094614066948a94600401615251565b6000604051808303816000875af1158015614085573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612d0a919081019061505a565b600064010000000082036140c957506330d9c91560e01b919050565b64040000000082036140e35750630221347d60e61b919050565b64100000000082036140fd5750635f9e7d7760e01b919050565b6402000000008203614117575063d86ed3e560e01b919050565b6408000000008203614131575063230dbd2960e01b919050565b506353c11f9960e01b919050565b919050565b604051634c4d861f60e11b8152606090339063989b0c3e906140669086908690600401615296565b60006001600160ff1b0382111561305c5760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b60648201526084016103fc565b6000612d0a60006141ef6141e98661416c565b856141f4565b614209565b60008183136142035782612d0a565b50919050565b60008183136142185781612d0a565b5090919050565b6040805160c0810182526000808252602082018190529181019190915260608101614263604080516060810182526000808252602082018190529181019190915290565b81526020016142706142b8565b8152602001606081525090565b6040805160e0810182526000808252602082018190529181018290526060808201526080810182905260a0810182905260c081019190915290565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915290565b604080516101608101825260008082526020820181905291810182905260608082018390526080820183905260a082015260c0810182905260e081018290526101008101829052610120810182905261014081019190915290565b6001600160a01b038116811461112257600080fd5b63ffffffff8116811461112257600080fd5b80356001600160801b038116811461413f57600080fd5b60008083601f84011261439157600080fd5b5081356001600160401b038111156143a857600080fd5b6020830191508360208285010111156143c057600080fd5b9250929050565b60008060008060008060a087890312156143e057600080fd5b86356143eb81614341565b955060208701356143fb81614356565b9450604087013561440b81614341565b935061441960608801614368565b925060808701356001600160401b0381111561443457600080fd5b61444089828a0161437f565b979a9699509497509295939492505050565b60005b8381101561446d578181015183820152602001614455565b50506000910152565b6000815180845261448e816020860160208601614452565b601f01601f19169290920160200192915050565b602081526000612d0a6020830184614476565b6000806000606084860312156144ca57600080fd5b83356144d581614341565b925060208401356144e581614341565b915060408401356144f581614356565b809150509250925092565b60008060008060008060a0878903121561451957600080fd5b863561452481614341565b9550602087013561453481614341565b9450604087013561454481614356565b9350606087013561441981614341565b60006020828403121561456657600080fd5b813561457181614341565b9392505050565b6000806000806080858703121561458e57600080fd5b843561459981614341565b935060208501356145a981614341565b925060408501356145b981614356565b915060608501356145c981614341565b939692955090935050565b6000806000806000608086880312156145ec57600080fd5b85356145f781614341565b9450602086013561460781614341565b9350604086013561461781614356565b925060608601356001600160401b0381111561463257600080fd5b61463e8882890161437f565b969995985093965092949392505050565b60008060008060006080868803121561466757600080fd5b853561467281614341565b9450602086013561468281614356565b935061461760408701614368565b600080600080608085870312156146a657600080fd5b84356146b181614341565b935060208501356146c181614341565b925060408501356146d181614356565b9396929550929360600135925050565b6000806000606084860312156146f657600080fd5b833561470181614341565b9250602084013561471181614341565b929592945050506040919091013590565b6000806040838503121561473557600080fd5b823561474081614341565b9150602083013561475081614341565b809150509250929050565b600081518084526020808501945080840160005b838110156147945781516001600160801b03168752958201959082019060010161476f565b509495945050505050565b606080825284519082018190526000906020906080840190828801845b828110156147e15781516001600160a01b0316845292840192908401906001016147bc565b5050508381038285015285518082528683019183019060005b8181101561481c57835163ffffffff16835292840192918401916001016147fa565b50508481036040860152614830818761475b565b98975050505050505050565b60008060008060006080868803121561485457600080fd5b853561485f81614341565b9450602086013561486f81614356565b93506040860135925060608601356001600160401b0381111561463257600080fd5b600080604083850312156148a457600080fd5b82356148af81614341565b946020939093013593505050565b600080600080606085870312156148d357600080fd5b84356148de81614341565b935060208501356148ee81614356565b925060408501356001600160401b0381111561490957600080fd5b6149158782880161437f565b95989497509550505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115612d0d57612d0d614921565b81810381811115612d0d57612d0d614921565b600081518084526020808501945080840160005b8381101561479457815187529582019590820190600101614971565b828152604060208201526000613f3a604083018461495d565b6001600160801b038181168382160190808211156149c6576149c6614921565b5092915050565b6001600160801b038281168282160390808211156149c6576149c6614921565b60006001600160ff1b0381841382841380821686840486111615614a1357614a13614921565b600160ff1b6000871282811687830589121615614a3257614a32614921565b60008712925087820587128484161615614a4e57614a4e614921565b87850587128184161615614a6457614a64614921565b505050929093029392505050565b6000600160ff1b8201614a8757614a87614921565b5060000390565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03841681526001600160801b0383166020820152606060408201819052600090614ada90830184614476565b95945050505050565b6001600160a01b038516815263ffffffff841660208201526001600160801b0383166040820152608060608201819052600090614b2290830184614476565b9695505050505050565b6001600160a01b0383168152604060208201819052600090613f3a90830184614476565b6001600160a01b038416815263ffffffff83166020820152606060408201819052600090614ada90830184614476565b600060208284031215614b9257600080fd5b5051919050565b6000816000190483118215151615614bb357614bb3614921565b500290565b600082614bd557634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052600160045260246000fd5b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b634e487b7160e01b600052604160045260246000fd5b60405161016081016001600160401b0381118282101715614c6857614c68614c2f565b60405290565b604051601f8201601f191681016001600160401b0381118282101715614c9657614c96614c2f565b604052919050565b60006001600160401b03821115614cb757614cb7614c2f565b5060051b60200190565b600082601f830112614cd257600080fd5b81516020614ce7614ce283614c9e565b614c6e565b82815260059290921b84018101918181019086841115614d0657600080fd5b8286015b84811015614d215780518352918301918301614d0a565b509695505050505050565b600060208284031215614d3e57600080fd5b81516001600160401b03811115614d5457600080fd5b613f3a84828501614cc1565b8082018281126000831280158216821582161715614d8057614d80614921565b505092915050565b600063ffffffff808316818103614da157614da1614921565b6001019392505050565b805161413f81614341565b600060208284031215614dc857600080fd5b815161457181614341565b8051801515811461413f57600080fd5b600060208284031215614df557600080fd5b612d0a82614dd3565b805160ff8116811461413f57600080fd5b80516001600160e01b03198116811461413f57600080fd5b600082601f830112614e3857600080fd5b81516001600160401b03811115614e5157614e51614c2f565b614e64601f8201601f1916602001614c6e565b818152846020838601011115614e7957600080fd5b613f3a826020830160208701614452565b600060208284031215614e9c57600080fd5b81516001600160401b0380821115614eb357600080fd5b908301906101608286031215614ec857600080fd5b614ed0614c45565b614ed983614dfe565b8152614ee760208401614dfe565b602082015260408301516040820152614f0260608401614dab565b6060820152614f1360808401614e0f565b608082015260a083015182811115614f2a57600080fd5b614f3687828601614e27565b60a08301525060c083015160c082015260e083015160e0820152610100915081830151828201526101209150614f6d828401614dab565b828201526101409150614f81828401614dab565b91810191909152949350505050565b600080600060608486031215614fa557600080fd5b614fae84614dd3565b9250614fbc60208501614dd3565b9150604084015190509250925092565b6001600160a01b038681168252851660208201526040810184905260a060608201819052600090614fff90830185614476565b82810360808401526148308185614476565b6001600160a01b038516815260806020820181905260009061503590830186614476565b8415156040840152828103606084015261504f8185614476565b979650505050505050565b60006020828403121561506c57600080fd5b81516001600160401b0381111561508257600080fd5b613f3a84828501614e27565b60018060a01b0384168152826020820152606060408201526000614ada606083018461495d565b6001600160a01b038781168252861660208201526040810185905260c0606082018190526000906150e890830186614476565b82810360808401526150fa8186614476565b905082810360a084015261510e8185614476565b9998505050505050505050565b60006001600160801b0380881683528087166020840152808616604084015280851660608401525060a0608083015261504f60a0830184614476565b6000806040838503121561516a57600080fd5b82516001600160401b038082111561518157600080fd5b818501915085601f83011261519557600080fd5b815160206151a5614ce283614c9e565b82815260059290921b840181019181810190898411156151c457600080fd5b948201945b838610156151eb5785516151dc81614356565b825294820194908201906151c9565b9188015191965090935050508082111561520457600080fd5b5061521185828601614cc1565b9150509250929050565b60006001820161522d5761522d614921565b5060010190565b60006020828403121561524657600080fd5b815161457181614356565b60a08152600061526460a0830188614476565b6001600160a01b0396871660208401526040830195909552506060810192909252909216608090920191909152919050565b6040815260006152a96040830185614476565b9050826020830152939250505056fea2646970667358221220d26f9ab4961a5a9a2150de4b06a2b116fe33f93f65935ac73be15b533aac09bf64736f6c63430008100033","0x1","0x0"] diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-41ca0998746af1cc94af8f6c30588c1a.json b/contracts/cache/hardhat-network-fork/network-80001/request-41ca0998746af1cc94af8f6c30588c1a.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-41ca0998746af1cc94af8f6c30588c1a.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-42472a29a6db5a01b2481ce4eee31456.json b/contracts/cache/hardhat-network-fork/network-80001/request-42472a29a6db5a01b2481ce4eee31456.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-42472a29a6db5a01b2481ce4eee31456.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-426116362d436e2411e801ef06019f11.json b/contracts/cache/hardhat-network-fork/network-80001/request-426116362d436e2411e801ef06019f11.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-426116362d436e2411e801ef06019f11.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-43531bb2c7d83a3613106c22657b2d78.json b/contracts/cache/hardhat-network-fork/network-80001/request-43531bb2c7d83a3613106c22657b2d78.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-43531bb2c7d83a3613106c22657b2d78.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-43618cf69a96ebeff30ff3ce59d4e497.json b/contracts/cache/hardhat-network-fork/network-80001/request-43618cf69a96ebeff30ff3ce59d4e497.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-43618cf69a96ebeff30ff3ce59d4e497.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-444bd41f731c8e386488a8c0b3b5c2a2.json b/contracts/cache/hardhat-network-fork/network-80001/request-444bd41f731c8e386488a8c0b3b5c2a2.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-444bd41f731c8e386488a8c0b3b5c2a2.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-46287c041424756af5eaec582a78ec6e.json b/contracts/cache/hardhat-network-fork/network-80001/request-46287c041424756af5eaec582a78ec6e.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-46287c041424756af5eaec582a78ec6e.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-4652cdb6cf9f7996d14aeb7fc407ae41.json b/contracts/cache/hardhat-network-fork/network-80001/request-4652cdb6cf9f7996d14aeb7fc407ae41.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-4652cdb6cf9f7996d14aeb7fc407ae41.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-467e18f8b00c6f38008b2b3117eefab3.json b/contracts/cache/hardhat-network-fork/network-80001/request-467e18f8b00c6f38008b2b3117eefab3.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-467e18f8b00c6f38008b2b3117eefab3.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-46fb6d9f35a21d6f91121b01843a3ca2.json b/contracts/cache/hardhat-network-fork/network-80001/request-46fb6d9f35a21d6f91121b01843a3ca2.json new file mode 100644 index 0000000..8b96439 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-46fb6d9f35a21d6f91121b01843a3ca2.json @@ -0,0 +1 @@ +["0x608060405234801561001057600080fd5b50600436106103425760003560e01c806362ad1b83116101b8578063a9059cbb11610104578063d9d078d6116100a2578063ee719bc81161007c578063ee719bc814610792578063fad8b32a146107a3578063fc673c4f146107b6578063fe9d9303146107c957600080fd5b8063d9d078d614610718578063dd62ed3e1461072b578063eb3537cc1461076457600080fd5b8063c68d4283116100de578063c68d4283146106cc578063ca789464146106df578063cf97256d146106f2578063d95b63711461070557600080fd5b8063a9059cbb14610693578063b84cdd4a146106a6578063bb0d196e146106b957600080fd5b806395d89b41116101715780639d8767411161014b5780639d87674114610647578063a1b2bf8b1461065a578063a3a7e7f31461066d578063a457c2d71461068057600080fd5b806395d89b41146106245780639903ad381461062c5780639bd9bbc61461063457600080fd5b806362ad1b83146105b257806366a12fb6146105c55780636c2d9f2f146105d857806370a08231146105eb57806379359f6f146105fe578063959b8c3f1461061157600080fd5b80632ec8eec711610292578063469519541161023057806352d1902d1161020a57806352d1902d1461055f578063556f0dc7146105855780635b9d09cc1461058c57806362aa52871461059f57600080fd5b806346951954146105245780634b61cc331461053757806350d75d251461055757600080fd5b8063395093511161026c57806339509351146104d857806341b706be146104eb57806342fe0980146104fe57806345977d031461051157600080fd5b80632ec8eec714610483578063313ce567146104b6578063386fa221146104c557600080fd5b806316d055d6116102ff57806320bc4425116102d957806320bc44251461041057806323b872dd1461044a578063245887fc1461045d578063270483971461047057600080fd5b806316d055d6146103d857806318160ddd146103eb5780631863e809146103fd57600080fd5b806306e485381461034757806306fdde0314610365578063090c415e1461037a578063095ea7b31461038f57806311bcc81e146103b257806312a6a3f8146103c5575b600080fd5b61034f6107dc565b60405161035c91906136d0565b60405180910390f35b61036d6107ed565b60405161035c919061376d565b61038d6103883660046137e0565b61087f565b005b6103a261039d36600461383b565b610933565b604051901515815260200161035c565b61038d6103c0366004613867565b61094a565b61038d6103d3366004613880565b610978565b61038d6103e63660046138cb565b610a64565b6003545b60405190815260200161035c565b61038d61040b3660046139df565b610ac4565b7f000000000000000000000000eb796bdb90ffa0f28255275e16936d25d34186035b6040516001600160a01b03909116815260200161035c565b6103a2610458366004613a71565b610d68565b61038d61046b36600461383b565b610d80565b61038d61047e366004613ab2565b610dfc565b610496610491366004613ad4565b610e9c565b60408051948552602085019390935291830152606082015260800161035c565b6040516012815260200161035c565b61034f6104d3366004613ad4565b610f3f565b6103a26104e636600461383b565b610fe2565b61038d6104f93660046138cb565b61101e565b61038d61050c366004613b32565b61104a565b61038d61051f366004613867565b611185565b61038d610532366004613ad4565b6111b1565b61054a610545366004613bcc565b611207565b60405161035c9190613c12565b61043261124c565b7f6bfbb132610e56cb96575dba244667b9d6dbfeffe22b68a79fa16f2d18eb00196103ef565b60016103ef565b61038d61059a366004613c4a565b611276565b61038d6105ad366004613a71565b6112cf565b61038d6105c0366004613c99565b61132c565b61038d6105d3366004613a71565b6113da565b61054a6105e6366004613d37565b6113fa565b6103ef6105f9366004613ad4565b61143c565b6103a261060c366004613ad4565b611464565b61038d61061f366004613ad4565b6114ec565b61036d61153d565b61038d61154c565b61038d610642366004613c4a565b61160e565b61038d610655366004613d6c565b611662565b61038d610668366004613880565b6116a2565b61038d61067b366004613ad4565b61174c565b6103a261068e36600461383b565b611760565b6103a26106a136600461383b565b6117af565b6103a26106b436600461383b565b6117bd565b6103a26106c7366004613ad4565b61180e565b61038d6106da366004613d6c565b611896565b61038d6106ed36600461383b565b6118d7565b61038d61070036600461383b565b611950565b6103a2610713366004613dc4565b611a3d565b6103a261072636600461383b565b611a4b565b6103ef610739366004613dc4565b6001600160a01b03918216600090815260116020908152604080832093909416825291909152205490565b61077761077236600461383b565b611a65565b6040805193845260208401929092529082015260600161035c565b600e546001600160a01b0316610432565b61038d6107b1366004613ad4565b611b9f565b61038d6107c4366004613dfd565b611bf0565b61038d6107d7366004613e44565b611c90565b60606107e86012611ce0565b905090565b6060600f80546107fc90613e82565b80601f016020809104026020016040519081016040528092919081815260200182805461082890613e82565b80156108755780601f1061084a57610100808354040283529160200191610875565b820191906000526020600020905b81548152906001019060200180831161085857829003601f168201915b5050505050905090565b600033858560405160200161089693929190613ebc565b6040516020818303038152906040528051906020012090506108eb81848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611d4692505050565b6040518481526001600160a01b0386169033907f30f416fa68fca014a0f334464c64b000ba53e99b6d2afdea9d5ca756372d5985906020015b60405180910390a35050505050565b6000610940338484611d87565b5060015b92915050565b6109753333836040518060200160405280600081525060405180602001604052806000815250611e3f565b50565b60405133906000906109909083908790602001613f05565b60408051601f19818403018152919052805160209091012090506109b48184611ff8565b156109db57604051635b5b42a560e01b815261138860048201526024015b60405180910390fd5b610a1881858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611d4692505050565b816001600160a01b03167f770ea40a13a4644573ed785e5c7116890709947918747febc5add46feb531e2d868686604051610a5593929190613f42565b60405180910390a25050505050565b7f000000000000000000000000eb796bdb90ffa0f28255275e16936d25d34186036001600160a01b03163314610ab157604051632a94f67960e21b815261151860048201526024016109d2565b610abd84848484612034565b5050505050565b604051632329212160e21b81523360048201527f000000000000000000000000eb796bdb90ffa0f28255275e16936d25d34186036001600160a01b031690638ca4848490602401602060405180830381865afa158015610b28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4c9190613f83565b610b6d57604051639aca506b60e01b81526114b460048201526024016109d2565b6000610b7761215c565b90506001600160a01b038116610b8a5750845b600085610b975786610b99565b815b905060008313610c3657610bac83613fb6565b610bb5856122a1565b14610bc257610bc2613fd2565b610bcb846122a1565b6001600160a01b03821660009081526002602052604081208054909190610bf3908490613fe8565b90915550506001600160a01b03851660009081526002602052604081208054859290610c20908490613fe8565b90915550610c31905085828661230f565b610d00565b8515610c4457610c44613fd2565b82610c4e856122a1565b610c589190613fe8565b6001600160a01b03831660009081526002602052604081208054909190610c80908490614010565b90915550610c8f9050846122a1565b6001600160a01b03881660009081526002602052604081208054909190610cb7908490613fe8565b90915550506001600160a01b03851660009081526002602052604081208054859290610ce4908490613fe8565b90915550610cf5905082888661230f565b610d0082868561230f565b846001600160a01b0316876001600160a01b0316336001600160a01b03167fb8381a3ce157650e06186e3e8f4dd4dc29236f2688b6eed1893d0a60d7c6386f8c8589898f604051610d55959493929190614030565b60405180910390a4505050505050505050565b6000610d7633858585612034565b90505b9392505050565b7f000000000000000000000000eb796bdb90ffa0f28255275e16936d25d34186036001600160a01b03163314610dcd57604051632a94f67960e21b815261151860048201526024016109d2565b610df83383836040518060200160405280600081525060405180602001604052806000815250611e3f565b5050565b6040513390600090610e149083908690602001613f05565b604051602081830303815290604052805190602001209050610e368184611ff8565b610e5757604051639995b0c160e01b815261138960048201526024016109d2565b610e618184612342565b60405184815233907f71a63dc095de07aa5512ad57a7596a39516317e316981a1cd71000057be1537b9060200160405180910390a250505050565b6000806000807f000000000000000000000000eb796bdb90ffa0f28255275e16936d25d34186036001600160a01b031663bbe4fd506040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f249190614063565b9050610f308582611a65565b91979096509094509092509050565b6001600160a01b038181166000908152600160205260409081902054905163c56a069d60e01b8152901960048201526060917f000000000000000000000000eb796bdb90ffa0f28255275e16936d25d3418603169063c56a069d90602401600060405180830381865afa158015610fba573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610944919081019061407c565b3360008181526011602090815260408083206001600160a01b0387168452909152812054909161094091859061101990869061412d565b611d87565b33301461103e57604051630fff4cc960e31b815260040160405180910390fd5b610abd83858484612034565b600054610100900460ff161580801561106a5750600054600160ff909116105b806110845750303b158015611084575060005460ff166001145b6110a05760405162461bcd60e51b81526004016109d290614140565b6000805460ff1916600117905580156110c3576000805461ff0019166101001790555b600e805460ff8816600160a01b026001600160a81b03199091166001600160a01b038a1617179055600f6110f88587836141dc565b5060106111068385836141dc565b5061111030612363565b60405160008082529081906000805160206145418339815191529060200160405180910390a3801561117c576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b610975333333846040518060200160405280600081525060405180602001604052806000815250612491565b336001600160a01b037f000000000000000000000000eb796bdb90ffa0f28255275e16936d25d341860316146111fe57604051632a94f67960e21b815261190060048201526024016109d2565b61097581612666565b6060600085858560405160200161122093929190613ebc565b60405160208183030381529060405280519060200120905061124281846128a0565b9695505050505050565b60006107e87f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6112c9333386866040518060200160405280600081525087878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061249192505050565b50505050565b7f000000000000000000000000eb796bdb90ffa0f28255275e16936d25d34186036001600160a01b0316331461131c57604051632a94f67960e21b815261151860048201526024016109d2565b611327838383611d87565b505050565b336113396012828a61292f565b6113565760405163f7f0222760e01b815260040160405180910390fd5b6113d08189898989898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a9081908401838280828437600092019190915250600192506129d8915050565b5050505050505050565b33301461131c57604051630fff4cc960e31b815260040160405180910390fd5b606060008484604051602001611411929190613f05565b60405160208183030381529060405280519060200120905061143381846128a0565b95945050505050565b60008061144883610e9c565b50505090506000811261145b5780610d79565b60009392505050565b6000610944827f000000000000000000000000eb796bdb90ffa0f28255275e16936d25d34186036001600160a01b031663bbe4fd506040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107269190614063565b336114f960128284612a59565b806001600160a01b0316826001600160a01b03167ff4caeb2d6ca8932a215a353d0703c326ec2d81fc68170f320eb2ab49e9df61f960405160405180910390a35050565b6060601080546107fc90613e82565b600054610100900460ff161580801561156c5750600054600160ff909116105b806115865750303b158015611586575060005460ff166001145b6115a25760405162461bcd60e51b81526004016109d290614140565b6000805460ff1916600117905580156115c5576000805461ff0019166101001790555b8015610975576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a150565b6112c93333868686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408051602081019091529081529250600191506129d89050565b33301461168257604051630fff4cc960e31b815260040160405180910390fd5b604080516000815260208101909152611327903390859085908590612b5d565b60405133906000906116ba9083908790602001613f05565b60405160208183030381529060405280519060200120905061170f81858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611d4692505050565b336001600160a01b03167f0c4c547b3a4fcaa5be8353b3111472b124155bccc86de811d4a481c9e6e9faca868686604051610a5593929190613f42565b610df833338361175b3361143c565b612034565b60006109403384611019856040518060600160405280602a8152602001614517602a91393360009081526011602090815260408083206001600160a01b038d1684529091529020549190612c1c565b6000610d7933338585612034565b6000806000806117cd8686611a65565b92509250925060006117f58284116117e65760006122a1565b6117f0838561429b565b6122a1565b6117ff9085613fe8565b60001315979650505050505050565b6000610944827f000000000000000000000000eb796bdb90ffa0f28255275e16936d25d34186036001600160a01b031663bbe4fd506040518163ffffffff1660e01b8152600401602060405180830381865afa158015611872573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b49190614063565b3330146118b657604051630fff4cc960e31b815260040160405180910390fd5b60408051600080825260208201909252611327913391869186918690612c48565b7f000000000000000000000000eb796bdb90ffa0f28255275e16936d25d34186036001600160a01b0316331461192457604051632a94f67960e21b815261151860048201526024016109d2565b610df8338384846040518060200160405280600081525060405180602001604052806000815250612491565b604051632329212160e21b81523360048201527f000000000000000000000000eb796bdb90ffa0f28255275e16936d25d34186036001600160a01b031690638ca4848490602401602060405180830381865afa1580156119b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d89190613f83565b6119f957604051639aca506b60e01b81526114b460048201526024016109d2565b6001600160a01b038216600090815260026020526040902054611a1d908290613fe8565b6001600160a01b0390921660009081526002602052604090209190915550565b6000610d796012848461292f565b600080611a588484611a65565b5050600013949350505050565b6001600160a01b038216600090815260026020526040812054908080611a8a86610f3f565b905060005b8151811015611b96576000806000848481518110611aaf57611aaf6142ae565b60209081029190910101516040516326cb922f60e21b81523060048201526001600160a01b038c81166024830152604482018c905290911690639b2e48bc90606401606060405180830381865afa158015611b0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b3291906142c4565b91945092509050611b43828861412d565b9650611b4f818761412d565b9550611b6c818311611b625760006122a1565b6117f0828461429b565b611b76848a613fe8565b611b809190614010565b975050505080611b8f906142f2565b9050611a8f565b50509250925092565b33611bac60128284612d14565b806001600160a01b0316826001600160a01b03167f50546e66e5f44d728365dc3908c63bc5cfeeab470722c1677e3073a6ac294aa160405160405180910390a35050565b33611bfd6012828961292f565b611c1a5760405163f7f0222760e01b815260040160405180910390fd5b61117c81888888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a9150899081908401838280828437600092019190915250611e3f92505050565b61132733338585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408051602081019091529081529250611e3f915050565b606081600001805480602002602001604051908101604052809291908181526020018280548015611d3a57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611d1c575b50505050509050919050565b60005b8151811015611327576000828281518110611d6657611d666142ae565b6020026020010151905080828501555080611d80906142f2565b9050611d49565b6001600160a01b038316611db25760405163e961d6ff60e01b815261196460048201526024016109d2565b6001600160a01b038216611ddd5760405163e961d6ff60e01b815261196560048201526024016109d2565b6001600160a01b0383811660008181526011602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600e546001600160a01b0316611e6857604051637bce7b2b60e11b815260040160405180910390fd5b600080611e7485612e0c565b91509150611e858787838787612b5d565b600e546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015611ece573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ef29190614063565b600e54909150611f0c906001600160a01b03168885612ec8565b600e546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015611f55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f799190614063565b90506000611f87828461429b565b9050808514611fa957604051631c7c26d360e31b815260040160405180910390fd5b886001600160a01b03167f3bc27981aebbb57f9247dc00fde9d6cd91e4b230083fec3238fedbcba1f9ab3d85604051611fe491815260200190565b60405180910390a250505050505050505050565b6000805b8281101561202a5783810154801561201957600192505050610944565b50612023816142f2565b9050611ffc565b5060009392505050565b60006001600160a01b0384166120615760405163e961d6ff60e01b815261196860048201526024016109d2565b6001600160a01b03831661208c5760405163e961d6ff60e01b815261196960048201526024016109d2565b60003390506120bd818686866040518060200160405280600081525060405180602001604052806000815250612f2b565b846001600160a01b0316866001600160a01b031614612150576121508587611019866040518060600160405280602d8152602001614561602d9139601160008c6001600160a01b03166001600160a01b0316815260200190815260200160002060008d6001600160a01b03166001600160a01b0316815260200190815260200160002054612c1c9092919063ffffffff16565b50600195945050505050565b6000807f000000000000000000000000eb796bdb90ffa0f28255275e16936d25d34186036001600160a01b031663289b3c0d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e1919061430b565b604051638369a0f160e01b81526001600160a01b037f000000000000000000000000eb796bdb90ffa0f28255275e16936d25d3418603811660048301523060248301527f9f60ae461adf056670e03ae602566409933242392cb06744f5747c9f38b05d09604483015291925090821690638369a0f190606401602060405180830381865afa158015612277573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061229b919061430b565b91505090565b60006001600160ff1b0382111561230b5760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b60648201526084016109d2565b5090565b816001600160a01b0316836001600160a01b031660008051602061454183398151915283604051611e3291815260200190565b60005b818110156113275760008382015561235c816142f2565b9050612345565b6040516329965a1d60e01b81526001600160a01b03821660048201527fac7fbab5f54a3ca8194167523c6753bfeb96a445279294b6125b68cce21770546024820152306044820152731820a4b7618bde71dce8cdc73aab6c95905fad24906329965a1d90606401600060405180830381600087803b1580156123e457600080fd5b505af11580156123f8573d6000803e3d6000fd5b50506040516329965a1d60e01b81526001600160a01b03841660048201527faea199e31a596269b42cdafd93407f14436db6e4cad65417994c2eb37381e05a6024820152306044820152731820a4b7618bde71dce8cdc73aab6c95905fad2492506329965a1d9150606401600060405180830381600087803b15801561247d57600080fd5b505af1158015610abd573d6000803e3d6000fd5b600e546001600160a01b03166124ba57604051637bce7b2b60e11b815260040160405180910390fd5b6000806124c685612e0c565b600e546040516370a0823160e01b81523060048201529294509092506000916001600160a01b03909116906370a0823190602401602060405180830381865afa158015612517573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061253b9190614063565b600e54909150612556906001600160a01b0316893086612fca565b600e546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa15801561259f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125c39190614063565b905060006125d1838361429b565b90508085146125f357604051631c7c26d360e31b815260040160405180910390fd5b6126168b8a868c6001600160a01b03168e6001600160a01b031614158b8b612c48565b886001600160a01b03167f25ca84076773b0455db53621c459ddc84fe40840e4932a62706a032566f399df8560405161265191815260200190565b60405180910390a25050505050505050505050565b60006126907f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6001600160a01b0316036126e65760405162461bcd60e51b815260206004820152601d60248201527f5555505350726f786961626c653a206e6f742075706772616461626c6500000060448201526064016109d2565b806001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612724573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127489190614063565b7f6bfbb132610e56cb96575dba244667b9d6dbfeffe22b68a79fa16f2d18eb0019146127c25760405162461bcd60e51b815260206004820152602360248201527f5555505350726f786961626c653a206e6f7420636f6d70617469626c65206c6f60448201526267696360e81b60648201526084016109d2565b6001600160a01b038116300361281a5760405162461bcd60e51b815260206004820152601960248201527f5555505350726f786961626c653a2070726f7879206c6f6f700000000000000060448201526064016109d2565b612842817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b7fe011bc04c286c344a8fcbb8de77f953da762c3e25d8cdea984147fc4168a5dcc7f6bfbb132610e56cb96575dba244667b9d6dbfeffe22b68a79fa16f2d18eb0019604080519182526001600160a01b038416602083015201611603565b6060816001600160401b038111156128ba576128ba61391c565b6040519080825280602002602001820160405280156128e3578160200160208202803683370190505b50905060005b828110156129285760008185015490508083838151811061290c5761290c6142ae565b602090810291909101015250612921816142f2565b90506128e9565b5092915050565b6000816001600160a01b0316836001600160a01b0316148061299e57506001600160a01b038316600090815260018501602052604090205460ff16801561299e57506001600160a01b03808316600090815260038601602090815260408083209387168352929052205460ff16155b80610d7657506001600160a01b03808316600090815260028601602090815260408083209387168352929052205460ff1690509392505050565b6001600160a01b038616612a035760405163e961d6ff60e01b815261196860048201526024016109d2565b6001600160a01b038516612a2e5760405163e961d6ff60e01b815261196960048201526024016109d2565b612a3c878787878787613002565b612a4a878787878787612f2b565b61117c87878787878787613129565b806001600160a01b0316826001600160a01b031603612ad05760405162461bcd60e51b815260206004820152602d60248201527f4552433737374f70657261746f72733a20617574686f72697a696e672073656c60448201526c331030b99037b832b930ba37b960991b60648201526084016109d2565b6001600160a01b038116600090815260018401602052604090205460ff1615612b26576001600160a01b03918216600090815260039390930160209081526040808520929093168452529020805460ff19169055565b6001600160a01b0380831660009081526002850160209081526040808320938516835292905220805460ff19166001179055505050565b6001600160a01b038416612b885760405163e961d6ff60e01b815261196660048201526024016109d2565b612b9785856000868686613002565b612ba18484613279565b836001600160a01b0316856001600160a01b03167fa78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a4098858585604051612be893929190614328565b60405180910390a36040518381526000906001600160a01b0386169060008051602061454183398151915290602001610924565b60008184841115612c405760405162461bcd60e51b81526004016109d2919061376d565b505050900390565b6001600160a01b038516612c735760405163e961d6ff60e01b815261196760048201526024016109d2565b612c7d858561338d565b612c8d8660008787868689613129565b846001600160a01b0316866001600160a01b03167f2fe5be0146f74c5bce36c0b80911af6c7d86ff27e89d5cfa61fc681327954e5d868585604051612cd493929190614328565b60405180910390a36040518481526001600160a01b03861690600090600080516020614541833981519152906020015b60405180910390a3505050505050565b336001600160a01b03821603612d7f5760405162461bcd60e51b815260206004820152602a60248201527f4552433737374f70657261746f72733a207265766f6b696e672073656c662061604482015269399037b832b930ba37b960b11b60648201526084016109d2565b6001600160a01b038116600090815260018401602052604090205460ff1615612dd9576001600160a01b0380831660009081526003850160209081526040808320938516835292905220805460ff19166001179055505050565b6001600160a01b03918216600090815260029390930160209081526040808520929093168452529020805460ff19169055565b600e54600090819081906012600160a01b90910460ff161015612e6b57600e54612e4190600160a01b900460ff166012614353565b612e4c90600a614450565b9050612e58818561445f565b9250612e648184614481565b9150612ec2565b600e546012600160a01b90910460ff161115612ebb57600e54612e9a90601290600160a01b900460ff16614353565b612ea590600a614450565b9050612eb18185614481565b9250839150612ec2565b8391508192505b50915091565b6040516001600160a01b03831660248201526044810182905261132790849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526133e7565b612f3e8585612f39866122a1565b6134b9565b836001600160a01b0316856001600160a01b0316876001600160a01b03167f06b541ddaa720db2b10a4d0cdac39b8d360425fc073085fac19bc82614677987868686604051612f8f93929190614328565b60405180910390a4836001600160a01b0316856001600160a01b031660008051602061454183398151915285604051612d0491815260200190565b6040516001600160a01b03808516602483015283166044820152606481018290526112c99085906323b872dd60e01b90608401612ef4565b60405163555ddc6560e11b81526001600160a01b03861660048201527f29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe8956024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca90604401602060405180830381865afa158015613083573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130a7919061430b565b90506001600160a01b0381161561117c57604051633ad5cbc160e11b81526001600160a01b038216906375ab9782906130ee908a908a908a908a908a908a906004016144a0565b600060405180830381600087803b15801561310857600080fd5b505af115801561311c573d6000803e3d6000fd5b5050505050505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b6024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca90604401602060405180830381865afa1580156131aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131ce919061430b565b90506001600160a01b0381161561324a576040516223de2960e01b81526001600160a01b038216906223de2990613213908b908b908b908b908b908b906004016144a0565b600060405180830381600087803b15801561322d57600080fd5b505af1158015613241573d6000803e3d6000fd5b505050506113d0565b81156113d0576001600160a01b0386163b156113d05760405163fe737d0560e01b815260040160405180910390fd5b6000613301837f000000000000000000000000eb796bdb90ffa0f28255275e16936d25d34186036001600160a01b031663bbe4fd506040518163ffffffff1660e01b8152600401602060405180830381865afa1580156132dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107729190614063565b5050905061330e826122a1565b81121561333257604051636212897360e01b81526113ec60048201526024016109d2565b61333b826122a1565b6001600160a01b03841660009081526002602052604090205461335e9190614010565b6001600160a01b03841660009081526002602052604090205560035461338590839061429b565b600355505050565b613396816122a1565b6001600160a01b0383166000908152600260205260409020546133b99190613fe8565b6001600160a01b0383166000908152600260205260409020556003546133e090829061412d565b6003555050565b600061343c826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166135bc9092919063ffffffff16565b805190915015611327578080602001905181019061345a9190613f83565b6113275760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016109d2565b600061351d847f000000000000000000000000eb796bdb90ffa0f28255275e16936d25d34186036001600160a01b031663bbe4fd506040518163ffffffff1660e01b8152600401602060405180830381865afa1580156132dd573d6000803e3d6000fd5b505090508181121561354657604051636212897360e01b81526113ed60048201526024016109d2565b6001600160a01b03841660009081526002602052604090205461356a908390614010565b6001600160a01b03808616600090815260026020526040808220939093559085168152205461359a908390613fe8565b6001600160a01b03909316600090815260026020526040902092909255505050565b6060610d768484600085856001600160a01b0385163b61361e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016109d2565b600080866001600160a01b0316858760405161363a91906144fa565b60006040518083038185875af1925050503d8060008114613677576040519150601f19603f3d011682016040523d82523d6000602084013e61367c565b606091505b509150915061368c828286613697565b979650505050505050565b606083156136a6575081610d79565b8251156136b65782518084602001fd5b8160405162461bcd60e51b81526004016109d2919061376d565b6020808252825182820181905260009190848201906040850190845b818110156137115783516001600160a01b0316835292840192918401916001016136ec565b50909695505050505050565b60005b83811015613738578181015183820152602001613720565b50506000910152565b6000815180845261375981602086016020860161371d565b601f01601f19169290920160200192915050565b602081526000610d796020830184613741565b6001600160a01b038116811461097557600080fd5b60008083601f8401126137a757600080fd5b5081356001600160401b038111156137be57600080fd5b6020830191508360208260051b85010111156137d957600080fd5b9250929050565b600080600080606085870312156137f657600080fd5b843561380181613780565b93506020850135925060408501356001600160401b0381111561382357600080fd5b61382f87828801613795565b95989497509550505050565b6000806040838503121561384e57600080fd5b823561385981613780565b946020939093013593505050565b60006020828403121561387957600080fd5b5035919050565b60008060006040848603121561389557600080fd5b8335925060208401356001600160401b038111156138b257600080fd5b6138be86828701613795565b9497909650939450505050565b600080600080608085870312156138e157600080fd5b84356138ec81613780565b935060208501356138fc81613780565b9250604085013561390c81613780565b9396929550929360600135925050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561395a5761395a61391c565b604052919050565b600082601f83011261397357600080fd5b81356001600160401b0381111561398c5761398c61391c565b61399f601f8201601f1916602001613932565b8181528460208386010111156139b457600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461097557600080fd5b600080600080600080600060e0888a0312156139fa57600080fd5b8735965060208801356001600160401b03811115613a1757600080fd5b613a238a828b01613962565b9650506040880135613a3481613780565b94506060880135613a44816139d1565b93506080880135613a5481613780565b9699959850939692959460a0840135945060c09093013592915050565b600080600060608486031215613a8657600080fd5b8335613a9181613780565b92506020840135613aa181613780565b929592945050506040919091013590565b60008060408385031215613ac557600080fd5b50508035926020909101359150565b600060208284031215613ae657600080fd5b8135610d7981613780565b60008083601f840112613b0357600080fd5b5081356001600160401b03811115613b1a57600080fd5b6020830191508360208285010111156137d957600080fd5b60008060008060008060808789031215613b4b57600080fd5b8635613b5681613780565b9550602087013560ff81168114613b6c57600080fd5b945060408701356001600160401b0380821115613b8857600080fd5b613b948a838b01613af1565b90965094506060890135915080821115613bad57600080fd5b50613bba89828a01613af1565b979a9699509497509295939492505050565b60008060008060808587031215613be257600080fd5b8435613bed81613780565b93506020850135613bfd81613780565b93969395505050506040820135916060013590565b6020808252825182820181905260009190848201906040850190845b8181101561371157835183529284019291840191600101613c2e565b60008060008060608587031215613c6057600080fd5b8435613c6b81613780565b93506020850135925060408501356001600160401b03811115613c8d57600080fd5b61382f87828801613af1565b600080600080600080600060a0888a031215613cb457600080fd5b8735613cbf81613780565b96506020880135613ccf81613780565b95506040880135945060608801356001600160401b0380821115613cf257600080fd5b613cfe8b838c01613af1565b909650945060808a0135915080821115613d1757600080fd5b50613d248a828b01613af1565b989b979a50959850939692959293505050565b600080600060608486031215613d4c57600080fd5b8335613d5781613780565b95602085013595506040909401359392505050565b600080600060608486031215613d8157600080fd5b8335613d8c81613780565b92506020840135915060408401356001600160401b03811115613dae57600080fd5b613dba86828701613962565b9150509250925092565b60008060408385031215613dd757600080fd5b8235613de281613780565b91506020830135613df281613780565b809150509250929050565b60008060008060008060808789031215613e1657600080fd5b8635613e2181613780565b95506020870135945060408701356001600160401b0380821115613b8857600080fd5b600080600060408486031215613e5957600080fd5b8335925060208401356001600160401b03811115613e7657600080fd5b6138be86828701613af1565b600181811c90821680613e9657607f821691505b602082108103613eb657634e487b7160e01b600052602260045260246000fd5b50919050565b6080808252600e908201526d41677265656d656e74537461746560901b60a08201526001600160a01b039384166020820152919092166040820152606081019190915260c00190565b6060808252600d908201526c41677265656d656e744461746160981b60808201526001600160a01b03929092166020830152604082015260a00190565b838152604060208201819052810182905260006001600160fb1b03831115613f6957600080fd5b8260051b8085606085013791909101606001949350505050565b600060208284031215613f9557600080fd5b8151610d79816139d1565b634e487b7160e01b600052601160045260246000fd5b6000600160ff1b8201613fcb57613fcb613fa0565b5060000390565b634e487b7160e01b600052600160045260246000fd5b808201828112600083128015821682158216171561400857614008613fa0565b505092915050565b818103600083128015838313168383128216171561292857612928613fa0565b85815260018060a01b038516602082015283604082015282606082015260a06080820152600061368c60a0830184613741565b60006020828403121561407557600080fd5b5051919050565b6000602080838503121561408f57600080fd5b82516001600160401b03808211156140a657600080fd5b818501915085601f8301126140ba57600080fd5b8151818111156140cc576140cc61391c565b8060051b91506140dd848301613932565b81815291830184019184810190888411156140f757600080fd5b938501935b83851015614121578451925061411183613780565b82825293850193908501906140fc565b98975050505050505050565b8082018082111561094457610944613fa0565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b601f82111561132757600081815260208120601f850160051c810160208610156141b55750805b601f850160051c820191505b818110156141d4578281556001016141c1565b505050505050565b6001600160401b038311156141f3576141f361391c565b614207836142018354613e82565b8361418e565b6000601f84116001811461423b57600085156142235750838201355b600019600387901b1c1916600186901b178355610abd565b600083815260209020601f19861690835b8281101561426c578685013582556020948501946001909201910161424c565b50868210156142895760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b8181038181111561094457610944613fa0565b634e487b7160e01b600052603260045260246000fd5b6000806000606084860312156142d957600080fd5b8351925060208401519150604084015190509250925092565b60006001820161430457614304613fa0565b5060010190565b60006020828403121561431d57600080fd5b8151610d7981613780565b8381526060602082015260006143416060830185613741565b82810360408401526112428185613741565b60ff828116828216039081111561094457610944613fa0565b600181815b808511156143a757816000190482111561438d5761438d613fa0565b8085161561439a57918102915b93841c9390800290614371565b509250929050565b6000826143be57506001610944565b816143cb57506000610944565b81600181146143e157600281146143eb57614407565b6001915050610944565b60ff8411156143fc576143fc613fa0565b50506001821b610944565b5060208310610133831016604e8410600b841016171561442a575081810a610944565b614434838361436c565b806000190482111561444857614448613fa0565b029392505050565b6000610d7960ff8416836143af565b60008261447c57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561449b5761449b613fa0565b500290565b6001600160a01b0387811682528681166020830152851660408201526060810184905260c0608082018190526000906144db90830185613741565b82810360a08401526144ed8185613741565b9998505050505050505050565b6000825161450c81846020870161371d565b919091019291505056fe5375706572546f6b656e3a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5375706572546f6b656e3a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220190cf49f09f598b11dd6a9df0cab65b8ee78b476ec60ef0f67f6a0aa1f135d9f64736f6c63430008100033","0x1","0x0"] diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-4704977171dfc10028282b892a8a7ced.json b/contracts/cache/hardhat-network-fork/network-80001/request-4704977171dfc10028282b892a8a7ced.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-4704977171dfc10028282b892a8a7ced.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-4722b3f76b0156ae926bf31e4fd60796.json b/contracts/cache/hardhat-network-fork/network-80001/request-4722b3f76b0156ae926bf31e4fd60796.json new file mode 100644 index 0000000..11d3cd2 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-4722b3f76b0156ae926bf31e4fd60796.json @@ -0,0 +1 @@ +"0x398" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-4749500863111c3994d6ea61dcf7284d.json b/contracts/cache/hardhat-network-fork/network-80001/request-4749500863111c3994d6ea61dcf7284d.json new file mode 100644 index 0000000..d601c5f --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-4749500863111c3994d6ea61dcf7284d.json @@ -0,0 +1 @@ +["0x608060405234801561001057600080fd5b50600436106100a95760003560e01c8063b0ccbdf011610071578063b0ccbdf01461018d578063b2db0b41146101a9578063b81cd866146101c5578063c10304f7146101f6578063cd3d4fb914610227578063ddca3f4314610257576100a9565b806314ae9926146100ae5780632e6e0bd0146100de578063647846a51461010e5780636d2dd29f1461012c57806376474e6a1461015c575b600080fd5b6100c860048036038101906100c391906106cf565b610275565b6040516100d5919061071e565b60405180910390f35b6100f860048036038101906100f39190610739565b610280565b604051610105919061071e565b60405180910390f35b6101166102b3565b604051610123919061071e565b60405180910390f35b61014660048036038101906101419190610739565b6102d9565b604051610153919061071e565b60405180910390f35b61017660048036038101906101719190610766565b61030c565b6040516101849291906107a6565b60405180910390f35b6101a760048036038101906101a29190610834565b61031c565b005b6101c360048036038101906101be91906108f0565b610325565b005b6101df60048036038101906101da9190610739565b610413565b6040516101ed9291906109a3565b60405180910390f35b610210600480360381019061020b91906108f0565b61046f565b60405161021e929190610a65565b60405180910390f35b610241600480360381019061023c9190610aba565b6104cd565b60405161024e919061071e565b60405180910390f35b61025f610500565b60405161026c9190610b00565b60405180910390f35b600081905092915050565b60006020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000808383915091509250929050565b50505050505050565b61037685600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061050690919063ffffffff16565b5060056000868152602001908152602001600020600080820160006101000a8154906fffffffffffffffffffffffffffffffff02191690556000820160106101000a8154906fffffffffffffffffffffffffffffffff021916905550507f44d83729a43f9c6046446df014d073dd242e0ad672071e9b292f31b669c25b098585604051610404929190610b2a565b60405180910390a15050505050565b60056020528060005260406000206000915090508060000160009054906101000a90046fffffffffffffffffffffffffffffffff16908060000160109054906101000a90046fffffffffffffffffffffffffffffffff16905082565b6000606084848481818080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505090509050915091509550959350505050565b60066020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b6000610515836000018361051d565b905092915050565b6000808360010160008481526020019081526020016000205490506000811461062557600060018261054f9190610b82565b90506000600186600001805490506105679190610b82565b90508181146105d657600086600001828154811061058857610587610bb6565b5b90600052602060002001549050808760000184815481106105ac576105ab610bb6565b5b90600052602060002001819055508387600101600083815260200190815260200160002081905550505b856000018054806105ea576105e9610be5565b5b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061062b565b60009150505b92915050565b600080fd5b600080fd5b6000819050919050565b61064e8161063b565b811461065957600080fd5b50565b60008135905061066b81610645565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061069c82610671565b9050919050565b6106ac81610691565b81146106b757600080fd5b50565b6000813590506106c9816106a3565b92915050565b600080604083850312156106e6576106e5610631565b5b60006106f48582860161065c565b9250506020610705858286016106ba565b9150509250929050565b61071881610691565b82525050565b6000602082019050610733600083018461070f565b92915050565b60006020828403121561074f5761074e610631565b5b600061075d8482850161065c565b91505092915050565b6000806040838503121561077d5761077c610631565b5b600061078b858286016106ba565b925050602061079c858286016106ba565b9150509250929050565b60006040820190506107bb600083018561070f565b6107c8602083018461070f565b9392505050565b600080fd5b600080fd5b600080fd5b60008083601f8401126107f4576107f36107cf565b5b8235905067ffffffffffffffff811115610811576108106107d4565b5b60208301915083600182028301111561082d5761082c6107d9565b5b9250929050565b600080600080600080600060a0888a03121561085357610852610631565b5b60006108618a828b0161065c565b97505060206108728a828b016106ba565b96505060406108838a828b016106ba565b955050606088013567ffffffffffffffff8111156108a4576108a3610636565b5b6108b08a828b016107de565b9450945050608088013567ffffffffffffffff8111156108d3576108d2610636565b5b6108df8a828b016107de565b925092505092959891949750929550565b60008060008060006080868803121561090c5761090b610631565b5b600061091a8882890161065c565b955050602061092b888289016106ba565b945050604061093c888289016106ba565b935050606086013567ffffffffffffffff81111561095d5761095c610636565b5b610969888289016107de565b92509250509295509295909350565b60006fffffffffffffffffffffffffffffffff82169050919050565b61099d81610978565b82525050565b60006040820190506109b86000830185610994565b6109c56020830184610994565b9392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610a065780820151818401526020810190506109eb565b83811115610a15576000848401525b50505050565b6000601f19601f8301169050919050565b6000610a37826109cc565b610a4181856109d7565b9350610a518185602086016109e8565b610a5a81610a1b565b840191505092915050565b6000604082019050610a7a600083018561070f565b8181036020830152610a8c8184610a2c565b90509392505050565b60048110610aa257600080fd5b50565b600081359050610ab481610a95565b92915050565b600060208284031215610ad057610acf610631565b5b6000610ade84828501610aa5565b91505092915050565b6000819050919050565b610afa81610ae7565b82525050565b6000602082019050610b156000830184610af1565b92915050565b610b248161063b565b82525050565b6000604082019050610b3f6000830185610b1b565b610b4c602083018461070f565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610b8d82610ae7565b9150610b9883610ae7565b925082821015610bab57610baa610b53565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26469706673582212202cf5997e8b8c53b789b2128351dd61e242531cbceb2d0afa4abeaf70678fd99e64736f6c634300080e0033","0x1","0x0"] diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-47d21da118db2be6df6bbdc57f555a8f.json b/contracts/cache/hardhat-network-fork/network-80001/request-47d21da118db2be6df6bbdc57f555a8f.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-47d21da118db2be6df6bbdc57f555a8f.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-47f11a2ce9266a8ffc7c5dac6008e711.json b/contracts/cache/hardhat-network-fork/network-80001/request-47f11a2ce9266a8ffc7c5dac6008e711.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-47f11a2ce9266a8ffc7c5dac6008e711.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-4844ab9ad3bbc7ea04e94549361924a2.json b/contracts/cache/hardhat-network-fork/network-80001/request-4844ab9ad3bbc7ea04e94549361924a2.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-4844ab9ad3bbc7ea04e94549361924a2.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-484cc6b58bfb436fece519d4cfc2309d.json b/contracts/cache/hardhat-network-fork/network-80001/request-484cc6b58bfb436fece519d4cfc2309d.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-484cc6b58bfb436fece519d4cfc2309d.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-486a999973057a6f791bbeaf2d7e3251.json b/contracts/cache/hardhat-network-fork/network-80001/request-486a999973057a6f791bbeaf2d7e3251.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-486a999973057a6f791bbeaf2d7e3251.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-4873dfcb8871df0efd7dda0fed8002a4.json b/contracts/cache/hardhat-network-fork/network-80001/request-4873dfcb8871df0efd7dda0fed8002a4.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-4873dfcb8871df0efd7dda0fed8002a4.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-4914acc19f05ae165f757bc3f03aa64c.json b/contracts/cache/hardhat-network-fork/network-80001/request-4914acc19f05ae165f757bc3f03aa64c.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-4914acc19f05ae165f757bc3f03aa64c.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-497c8164b3f929bdd395d6476a2e9dd3.json b/contracts/cache/hardhat-network-fork/network-80001/request-497c8164b3f929bdd395d6476a2e9dd3.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-497c8164b3f929bdd395d6476a2e9dd3.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-49908a1ecee5f8e3dba8553f60468d76.json b/contracts/cache/hardhat-network-fork/network-80001/request-49908a1ecee5f8e3dba8553f60468d76.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-49908a1ecee5f8e3dba8553f60468d76.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-49afae990b90d836a03207dc66c8068a.json b/contracts/cache/hardhat-network-fork/network-80001/request-49afae990b90d836a03207dc66c8068a.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-49afae990b90d836a03207dc66c8068a.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-4a32e4e56e9666f8f1fd18eb7efb3c79.json b/contracts/cache/hardhat-network-fork/network-80001/request-4a32e4e56e9666f8f1fd18eb7efb3c79.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-4a32e4e56e9666f8f1fd18eb7efb3c79.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-4a35b8de875d6944af9aed05514eda87.json b/contracts/cache/hardhat-network-fork/network-80001/request-4a35b8de875d6944af9aed05514eda87.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-4a35b8de875d6944af9aed05514eda87.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-4a3d811d627c38373b24ac4e0cd8940b.json b/contracts/cache/hardhat-network-fork/network-80001/request-4a3d811d627c38373b24ac4e0cd8940b.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-4a3d811d627c38373b24ac4e0cd8940b.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-4b3aecfdc8a73fd0eb346242de60f431.json b/contracts/cache/hardhat-network-fork/network-80001/request-4b3aecfdc8a73fd0eb346242de60f431.json new file mode 100644 index 0000000..e3b9f2b --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-4b3aecfdc8a73fd0eb346242de60f431.json @@ -0,0 +1 @@ +"0x000000000000000000000000000000004b4e8f0b16f82692cf22ebd710dd3c88" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-4b6afa2124edaf21df0ae1e928f83e9e.json b/contracts/cache/hardhat-network-fork/network-80001/request-4b6afa2124edaf21df0ae1e928f83e9e.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-4b6afa2124edaf21df0ae1e928f83e9e.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-4be352953a2ed217025a40339427cc65.json b/contracts/cache/hardhat-network-fork/network-80001/request-4be352953a2ed217025a40339427cc65.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-4be352953a2ed217025a40339427cc65.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-4cdf8ad95a9fb43cf12c98a353a6f0d2.json b/contracts/cache/hardhat-network-fork/network-80001/request-4cdf8ad95a9fb43cf12c98a353a6f0d2.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-4cdf8ad95a9fb43cf12c98a353a6f0d2.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-4cf719d38753f53bb1bfe6c7e7da5578.json b/contracts/cache/hardhat-network-fork/network-80001/request-4cf719d38753f53bb1bfe6c7e7da5578.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-4cf719d38753f53bb1bfe6c7e7da5578.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-4d463337f43a3fb81ca5aa54387b2662.json b/contracts/cache/hardhat-network-fork/network-80001/request-4d463337f43a3fb81ca5aa54387b2662.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-4d463337f43a3fb81ca5aa54387b2662.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-4d46c899fe6b426270a608347b7cdbb4.json b/contracts/cache/hardhat-network-fork/network-80001/request-4d46c899fe6b426270a608347b7cdbb4.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-4d46c899fe6b426270a608347b7cdbb4.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-4e0ff2cdd848da470a24dd52baf471b7.json b/contracts/cache/hardhat-network-fork/network-80001/request-4e0ff2cdd848da470a24dd52baf471b7.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-4e0ff2cdd848da470a24dd52baf471b7.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-4f1f4b4687588dc0815cb7125b915a27.json b/contracts/cache/hardhat-network-fork/network-80001/request-4f1f4b4687588dc0815cb7125b915a27.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-4f1f4b4687588dc0815cb7125b915a27.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-5011f403a88b16be17c4c96b0fa746d0.json b/contracts/cache/hardhat-network-fork/network-80001/request-5011f403a88b16be17c4c96b0fa746d0.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-5011f403a88b16be17c4c96b0fa746d0.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-502b3916f47ad817dae22953237d015c.json b/contracts/cache/hardhat-network-fork/network-80001/request-502b3916f47ad817dae22953237d015c.json new file mode 100644 index 0000000..2a7210b --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-502b3916f47ad817dae22953237d015c.json @@ -0,0 +1 @@ +"0x259" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-5117394f7e3bad9d12425d6638a2f402.json b/contracts/cache/hardhat-network-fork/network-80001/request-5117394f7e3bad9d12425d6638a2f402.json new file mode 100644 index 0000000..8cc690f --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-5117394f7e3bad9d12425d6638a2f402.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000137241377d5143b9d73a551cacd358" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-515094078cab23aab8e45f92a9139ae0.json b/contracts/cache/hardhat-network-fork/network-80001/request-515094078cab23aab8e45f92a9139ae0.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-515094078cab23aab8e45f92a9139ae0.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-515e411db7b020eab6a4cb6308beb755.json b/contracts/cache/hardhat-network-fork/network-80001/request-515e411db7b020eab6a4cb6308beb755.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-515e411db7b020eab6a4cb6308beb755.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-52a05e61ef7fb4f9194b26977541d63d.json b/contracts/cache/hardhat-network-fork/network-80001/request-52a05e61ef7fb4f9194b26977541d63d.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-52a05e61ef7fb4f9194b26977541d63d.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-5568475ce90ea2144e1b0cd0736174fc.json b/contracts/cache/hardhat-network-fork/network-80001/request-5568475ce90ea2144e1b0cd0736174fc.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-5568475ce90ea2144e1b0cd0736174fc.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-55af7785486cb84c0e537dcbbabb6816.json b/contracts/cache/hardhat-network-fork/network-80001/request-55af7785486cb84c0e537dcbbabb6816.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-55af7785486cb84c0e537dcbbabb6816.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-560ef7baf9d31656206f162049f78bfb.json b/contracts/cache/hardhat-network-fork/network-80001/request-560ef7baf9d31656206f162049f78bfb.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-560ef7baf9d31656206f162049f78bfb.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-56dc149b83239fd9a89064ca6efa13cb.json b/contracts/cache/hardhat-network-fork/network-80001/request-56dc149b83239fd9a89064ca6efa13cb.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-56dc149b83239fd9a89064ca6efa13cb.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-57047f02a0cc5400c0048641ca12b57c.json b/contracts/cache/hardhat-network-fork/network-80001/request-57047f02a0cc5400c0048641ca12b57c.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-57047f02a0cc5400c0048641ca12b57c.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-57b45a9355f282e8bc36b07f0016b4c9.json b/contracts/cache/hardhat-network-fork/network-80001/request-57b45a9355f282e8bc36b07f0016b4c9.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-57b45a9355f282e8bc36b07f0016b4c9.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-584a64cbb022eed18d62bdc0421a38ef.json b/contracts/cache/hardhat-network-fork/network-80001/request-584a64cbb022eed18d62bdc0421a38ef.json new file mode 100644 index 0000000..ebc52f4 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-584a64cbb022eed18d62bdc0421a38ef.json @@ -0,0 +1 @@ +"0x000000000000000000000012be49ac1eadac65dccf204d4df81d650b50122ab2" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-586f958dda8dfedd4e743506d4aeeb64.json b/contracts/cache/hardhat-network-fork/network-80001/request-586f958dda8dfedd4e743506d4aeeb64.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-586f958dda8dfedd4e743506d4aeeb64.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-58ee5a945f1a9d1626a5c57c73089b64.json b/contracts/cache/hardhat-network-fork/network-80001/request-58ee5a945f1a9d1626a5c57c73089b64.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-58ee5a945f1a9d1626a5c57c73089b64.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-58f6408248e1e741389eacb1e69563f3.json b/contracts/cache/hardhat-network-fork/network-80001/request-58f6408248e1e741389eacb1e69563f3.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-58f6408248e1e741389eacb1e69563f3.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-59b1e52183d969c03f74aa54d552af09.json b/contracts/cache/hardhat-network-fork/network-80001/request-59b1e52183d969c03f74aa54d552af09.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-59b1e52183d969c03f74aa54d552af09.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-5a16ba2ec515b2ee8681d69e7026f469.json b/contracts/cache/hardhat-network-fork/network-80001/request-5a16ba2ec515b2ee8681d69e7026f469.json new file mode 100644 index 0000000..5c87ee9 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-5a16ba2ec515b2ee8681d69e7026f469.json @@ -0,0 +1 @@ +["0x","0x0","0x0"] diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-5a2c9df0f62d0d2ae1ec1cead6fc433e.json b/contracts/cache/hardhat-network-fork/network-80001/request-5a2c9df0f62d0d2ae1ec1cead6fc433e.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-5a2c9df0f62d0d2ae1ec1cead6fc433e.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-5e3dab1f75f17b960591d904d3710270.json b/contracts/cache/hardhat-network-fork/network-80001/request-5e3dab1f75f17b960591d904d3710270.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-5e3dab1f75f17b960591d904d3710270.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-5e3dfc31edc9bf7b98007bee4e57a22d.json b/contracts/cache/hardhat-network-fork/network-80001/request-5e3dfc31edc9bf7b98007bee4e57a22d.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-5e3dfc31edc9bf7b98007bee4e57a22d.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-5e5864ff323269aa1a87bc9e5921e7d4.json b/contracts/cache/hardhat-network-fork/network-80001/request-5e5864ff323269aa1a87bc9e5921e7d4.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-5e5864ff323269aa1a87bc9e5921e7d4.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-5f3683d3eb80bea6a568c03a5b2fef28.json b/contracts/cache/hardhat-network-fork/network-80001/request-5f3683d3eb80bea6a568c03a5b2fef28.json new file mode 100644 index 0000000..96d5fb0 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-5f3683d3eb80bea6a568c03a5b2fef28.json @@ -0,0 +1 @@ +["0x60806040523480156200001157600080fd5b5060043610620000b85760003560e01c8063775c300c116200007b578063775c300c14620001a1578063c4d66de814620001c3578063d784d42614620001e3578063ded89a7c1462000203578063e70abe92146200023a578063fcff48ed146200025c57620000b8565b806314afd79e14620000bd5780635c60da1b14620000f35780635c6c4bbe1462000115578063606aa715146200013557806374912cd2146200016b575b600080fd5b620000db6004803603810190620000d5919062000ea6565b62000292565b604051620000ea919062000ee9565b60405180910390f35b620000fd620002fb565b6040516200010c919062000ee9565b60405180910390f35b6200013360048036038101906200012d919062000f43565b62000321565b005b6200015360048036038101906200014d919062000ea6565b6200043c565b60405162000162919062000ee9565b60405180910390f35b62000189600480360381019062000183919062000ea6565b6200053f565b60405162000198919062000faf565b60405180910390f35b620001ab62000874565b604051620001ba919062000faf565b60405180910390f35b620001e16004803603810190620001db919062000ea6565b62000886565b005b620002016004803603810190620001fb919062000ea6565b62000a0c565b005b6200022160048036038101906200021b919062000ea6565b62000c13565b6040516200023192919062000fdd565b60405180910390f35b6200024462000cd8565b60405162000253919062000ee9565b60405180910390f35b6200027a600480360381019062000274919062000ea6565b62000cfc565b6040516200028991906200100a565b60405180910390f35b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600060029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6200032b62000d1c565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146200039b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003929062001088565b60405180910390fd5b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167f0501828758a98b15fa5ef2b0f0100e2266e65c28175face06351ac414c14005f60405160405180910390a35050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614620004e057809150506200053a565b6000620004ed8462000d45565b9050600060ff60f81b306000801b84805190602001206040516020016200051894939291906200117a565b6040516020818303038152906040528051906020012090508060001c93505050505b919050565b600081600073ffffffffffffffffffffffffffffffffffffffff16600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000613576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200060a9062001220565b60405180910390fd5b82600073ffffffffffffffffffffffffffffffffffffffff16600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620006e5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006dc9062001292565b60405180910390fd5b620006fe6000801b620006f88662000d45565b62000def565b925082600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2d8895d948115783fa362a57339c4c179365fafeafdd7dca66364ae296f50b7560405160405180910390a45050919050565b600062000881336200053f565b905090565b600060019054906101000a900460ff16620008b05760008054906101000a900460ff1615620008bb565b620008ba62000e08565b5b620008fd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008f4906200132a565b60405180910390fd5b60008060019054906101000a900460ff1615905080156200094e576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b81600060026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550801562000a085760008060016101000a81548160ff0219169083151502179055505b5050565b62000a1662000d1c565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161462000a86576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a7d9062001088565b60405180910390fd5b60008060029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415801562000b325750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b62000b74576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b6b90620013c2565b60405180910390fd5b81600060026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f273696cd8b7028587777b784decf945aca2e42036459d9d5fd81e493b112682860405160405180910390a35050565b6000806000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161462000cbd57806001925092505062000cd3565b62000cc8846200043c565b905080600092509250505b915091565b7f000000000000000000000000b3f5503f93d5ef84b06993a1975b9d21b962892f81565b60016020528060005260406000206000915054906101000a900460ff1681565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610354905090565b60606040518060200162000d599062000e2e565b6020820181038252601f19601f8201166040525030600060029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518060200160405280600081525060405160200162000db7949392919062001488565b60405160208183030381529060405260405160200162000dd99291906200151e565b6040516020818303038152906040529050919050565b60008060208301835185818385f5935050505092915050565b600062000e153062000e1b565b15905090565b600080823b905060008111915050919050565b6111ff806200154783390190565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000e6e8262000e41565b9050919050565b62000e808162000e61565b811462000e8c57600080fd5b50565b60008135905062000ea08162000e75565b92915050565b60006020828403121562000ebf5762000ebe62000e3c565b5b600062000ecf8482850162000e8f565b91505092915050565b62000ee38162000e61565b82525050565b600060208201905062000f00600083018462000ed8565b92915050565b60008115159050919050565b62000f1d8162000f06565b811462000f2957600080fd5b50565b60008135905062000f3d8162000f12565b92915050565b6000806040838503121562000f5d5762000f5c62000e3c565b5b600062000f6d8582860162000e8f565b925050602062000f808582860162000f2c565b9150509250929050565b600062000f978262000e41565b9050919050565b62000fa98162000f8a565b82525050565b600060208201905062000fc6600083018462000f9e565b92915050565b62000fd78162000f06565b82525050565b600060408201905062000ff4600083018562000ed8565b62001003602083018462000fcc565b9392505050565b600060208201905062001021600083018462000fcc565b92915050565b600082825260208201905092915050565b7f4e4f545f415554484f52495a4544000000000000000000000000000000000000600082015250565b600062001070600e8362001027565b91506200107d8262001038565b602082019050919050565b60006020820190508181036000830152620010a38162001061565b9050919050565b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b6000819050919050565b620010f5620010ef82620010aa565b620010d6565b82525050565b60008160601b9050919050565b60006200111582620010fb565b9050919050565b6000620011298262001108565b9050919050565b620011456200113f8262000e61565b6200111c565b82525050565b6000819050919050565b6000819050919050565b620011746200116e826200114b565b62001155565b82525050565b6000620011888287620010e0565b6001820191506200119a828662001130565b601482019150620011ac82856200115f565b602082019150620011be82846200115f565b60208201915081905095945050505050565b7f4f707350726f7879466163746f72793a204f6e652070726f7879000000000000600082015250565b600062001208601a8362001027565b91506200121582620011d0565b602082019050919050565b600060208201905081810360008301526200123b81620011f9565b9050919050565b7f4f707350726f7879466163746f72793a204e6f2070726f787900000000000000600082015250565b60006200127a60198362001027565b9150620012878262001242565b602082019050919050565b60006020820190508181036000830152620012ad816200126b565b9050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b600062001312602e8362001027565b91506200131f82620012b4565b604082019050919050565b60006020820190508181036000830152620013458162001303565b9050919050565b7f4f707350726f7879466163746f72793a20496e76616c696420696d706c656d6560008201527f6e746174696f6e00000000000000000000000000000000000000000000000000602082015250565b6000620013aa60278362001027565b9150620013b7826200134c565b604082019050919050565b60006020820190508181036000830152620013dd816200139b565b9050919050565b600081519050919050565b600082825260208201905092915050565b60005b838110156200142057808201518184015260208101905062001403565b8381111562001430576000848401525b50505050565b6000601f19601f8301169050919050565b60006200145482620013e4565b620014608185620013ef565b93506200147281856020860162001400565b6200147d8162001436565b840191505092915050565b60006080820190506200149f600083018762000ed8565b620014ae602083018662000ed8565b620014bd604083018562000ed8565b8181036060830152620014d1818462001447565b905095945050505050565b600081905092915050565b6000620014f482620013e4565b620015008185620014dc565b93506200151281856020860162001400565b80840191505092915050565b60006200152c8285620014e7565b91506200153a8284620014e7565b9150819050939250505056fe60a0604052604051620011ff380380620011ff83398181016040528101906200002991906200047f565b8373ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250506200006f83826200008a60201b60201c565b6200008082620001bf60201b60201c565b5050505062000576565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc549050827f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc558273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f5570d70a002632a7b0b3c9304cc89efb62d8da9eca0dbd7752c83b737906829660405160405180910390a3600082511115620001ba5760008373ffffffffffffffffffffffffffffffffffffffff16836040516200016191906200055d565b600060405180830381855af49150503d80600081146200019e576040519150601f19603f3d011682016040523d82523d6000602084013e620001a3565b606091505b5050905080620001b8573d806000803e806000fd5b505b505050565b6000620001d16200025460201b60201c565b9050817fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103558173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fdf435d422321da6b195902d70fc417c06a32f88379c20dd8f2a8da07088cec2960405160405180910390a35050565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610354905090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620002be8262000291565b9050919050565b620002d081620002b1565b8114620002dc57600080fd5b50565b600081519050620002f081620002c5565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200034b8262000300565b810181811067ffffffffffffffff821117156200036d576200036c62000311565b5b80604052505050565b6000620003826200027d565b905062000390828262000340565b919050565b600067ffffffffffffffff821115620003b357620003b262000311565b5b620003be8262000300565b9050602081019050919050565b60005b83811015620003eb578082015181840152602081019050620003ce565b83811115620003fb576000848401525b50505050565b600062000418620004128462000395565b62000376565b905082815260208101848484011115620004375762000436620002fb565b5b62000444848285620003cb565b509392505050565b600082601f830112620004645762000463620002f6565b5b81516200047684826020860162000401565b91505092915050565b600080600080608085870312156200049c576200049b62000287565b5b6000620004ac87828801620002df565b9450506020620004bf87828801620002df565b9350506040620004d287828801620002df565b925050606085015167ffffffffffffffff811115620004f657620004f56200028c565b5b62000504878288016200044c565b91505092959194509250565b600081519050919050565b600081905092915050565b6000620005338262000510565b6200053f81856200051b565b935062000551818560208601620003cb565b80840191505092915050565b60006200056b828462000526565b915081905092915050565b608051610c5f620005a060003960008181610351015281816104cc01526105f90152610c5f6000f3fe60806040526004361061004e5760003560e01c806301ffc9a7146100675780633659cfe6146100a45780633e47158c146100cd5780634f1ef286146100f8578063ba1d0ff4146101145761005d565b3661005d5761005b61013f565b005b61006561013f565b005b34801561007357600080fd5b5061008e600480360381019061008991906107d5565b610188565b60405161009b919061081d565b60405180910390f35b3480156100b057600080fd5b506100cb60048036038101906100c69190610896565b6102d9565b005b3480156100d957600080fd5b506100e2610445565b6040516100ef91906108d2565b60405180910390f35b610112600480360381019061010d9190610952565b610454565b005b34801561012057600080fd5b506101296105f7565b6040516101369190610a11565b60405180910390f35b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc543660008037600080366000845af43d806000803e816000811461018357816000f35b816000fd5b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806101e35750637f5828d060e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b156101f157600190506102d4565b63ffffffff60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19160361022757600090506102d4565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490508073ffffffffffffffffffffffffffffffffffffffff166301ffc9a7846040518263ffffffff1660e01b81526004016102869190610a3b565b602060405180830381865afa9250505080156102c057506040513d601f19601f820116820180604052508101906102bd9190610a82565b60015b6102ce5760009150506102d4565b80925050505b919050565b6102e161061b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461034e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161034590610b0c565b60405180910390fd5b807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663fcff48ed826040518263ffffffff1660e01b81526004016103a891906108d2565b602060405180830381865afa1580156103c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103e99190610a82565b610428576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161041f90610b78565b60405180910390fd5b6104418260405180602001604052806000815250610644565b5050565b600061044f61061b565b905090565b61045c61061b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104c090610b0c565b60405180910390fd5b827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663fcff48ed826040518263ffffffff1660e01b815260040161052391906108d2565b602060405180830381865afa158015610540573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105649190610a82565b6105a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161059a90610b78565b60405180910390fd5b6105f18484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050610644565b50505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610354905090565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc549050827f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc558273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f5570d70a002632a7b0b3c9304cc89efb62d8da9eca0dbd7752c83b737906829660405160405180910390a360008251111561076e5760008373ffffffffffffffffffffffffffffffffffffffff16836040516107189190610c12565b600060405180830381855af49150503d8060008114610753576040519150601f19603f3d011682016040523d82523d6000602084013e610758565b606091505b505090508061076c573d806000803e806000fd5b505b505050565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6107b28161077d565b81146107bd57600080fd5b50565b6000813590506107cf816107a9565b92915050565b6000602082840312156107eb576107ea610773565b5b60006107f9848285016107c0565b91505092915050565b60008115159050919050565b61081781610802565b82525050565b6000602082019050610832600083018461080e565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061086382610838565b9050919050565b61087381610858565b811461087e57600080fd5b50565b6000813590506108908161086a565b92915050565b6000602082840312156108ac576108ab610773565b5b60006108ba84828501610881565b91505092915050565b6108cc81610858565b82525050565b60006020820190506108e760008301846108c3565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112610912576109116108ed565b5b8235905067ffffffffffffffff81111561092f5761092e6108f2565b5b60208301915083600182028301111561094b5761094a6108f7565b5b9250929050565b60008060006040848603121561096b5761096a610773565b5b600061097986828701610881565b935050602084013567ffffffffffffffff81111561099a57610999610778565b5b6109a6868287016108fc565b92509250509250925092565b6000819050919050565b60006109d76109d26109cd84610838565b6109b2565b610838565b9050919050565b60006109e9826109bc565b9050919050565b60006109fb826109de565b9050919050565b610a0b816109f0565b82525050565b6000602082019050610a266000830184610a02565b92915050565b610a358161077d565b82525050565b6000602082019050610a506000830184610a2c565b92915050565b610a5f81610802565b8114610a6a57600080fd5b50565b600081519050610a7c81610a56565b92915050565b600060208284031215610a9857610a97610773565b5b6000610aa684828501610a6d565b91505092915050565b600082825260208201905092915050565b7f4e4f545f415554484f52495a4544000000000000000000000000000000000000600082015250565b6000610af6600e83610aaf565b9150610b0182610ac0565b602082019050919050565b60006020820190508181036000830152610b2581610ae9565b9050919050565b7f496d706c656d656e746174696f6e206e6f742077686974656c69737465640000600082015250565b6000610b62601e83610aaf565b9150610b6d82610b2c565b602082019050919050565b60006020820190508181036000830152610b9181610b55565b9050919050565b600081519050919050565b600081905092915050565b60005b83811015610bcc578082015181840152602081019050610bb1565b83811115610bdb576000848401525b50505050565b6000610bec82610b98565b610bf68185610ba3565b9350610c06818560208601610bae565b80840191505092915050565b6000610c1e8284610be1565b91508190509291505056fea2646970667358221220e1383b8d53f44c0189f6040dcd0147a80a9b144d114d866a2dad68295018327864736f6c634300080e0033a26469706673582212202fa8ca65a664bfdbe5e7aa7b0228d569ed385e440ca4d8b299811e24453bb7fc64736f6c634300080e0033","0x1","0x0"] diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-5f3716d41bc3fe9bd8660002a8a01b48.json b/contracts/cache/hardhat-network-fork/network-80001/request-5f3716d41bc3fe9bd8660002a8a01b48.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-5f3716d41bc3fe9bd8660002a8a01b48.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-5feea9fbf5ced038333fbba6c51e2da7.json b/contracts/cache/hardhat-network-fork/network-80001/request-5feea9fbf5ced038333fbba6c51e2da7.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-5feea9fbf5ced038333fbba6c51e2da7.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-601695c96e36f9b80c92885087d9b05e.json b/contracts/cache/hardhat-network-fork/network-80001/request-601695c96e36f9b80c92885087d9b05e.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-601695c96e36f9b80c92885087d9b05e.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-6016b6a366b7c2421351ef861a99d50c.json b/contracts/cache/hardhat-network-fork/network-80001/request-6016b6a366b7c2421351ef861a99d50c.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-6016b6a366b7c2421351ef861a99d50c.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-60381680139205b671aa23ed8e860589.json b/contracts/cache/hardhat-network-fork/network-80001/request-60381680139205b671aa23ed8e860589.json new file mode 100644 index 0000000..37e5e44 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-60381680139205b671aa23ed8e860589.json @@ -0,0 +1 @@ +"0x000000000000000000000000000000000000000000000064a2a3b9c4faf4ee4f" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-60fa875fdacb54a19f5c610d5700036a.json b/contracts/cache/hardhat-network-fork/network-80001/request-60fa875fdacb54a19f5c610d5700036a.json new file mode 100644 index 0000000..b8ea4fd --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-60fa875fdacb54a19f5c610d5700036a.json @@ -0,0 +1 @@ +["0x60806040526004361061004e5760003560e01c806301ffc9a7146100985780633659cfe6146100d55780633e47158c146100fe5780634f1ef286146101295780638356ca4f146101455761008e565b3661008e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161008590610733565b60405180910390fd5b61009661016e565b005b3480156100a457600080fd5b506100bf60048036038101906100ba91906107b5565b6101b7565b6040516100cc91906107fd565b60405180910390f35b3480156100e157600080fd5b506100fc60048036038101906100f79190610876565b610308565b005b34801561010a57600080fd5b50610113610399565b60405161012091906108b2565b60405180910390f35b610143600480360381019061013e9190610932565b6103a8565b005b34801561015157600080fd5b5061016c60048036038101906101679190610876565b610470565b005b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc543660008037600080366000845af43d806000803e81600081146101b257816000f35b816000fd5b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806102125750637f5828d060e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b156102205760019050610303565b63ffffffff60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036102565760009050610303565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490508073ffffffffffffffffffffffffffffffffffffffff166301ffc9a7846040518263ffffffff1660e01b81526004016102b591906109a1565b602060405180830381865afa9250505080156102ef57506040513d601f19601f820116820180604052508101906102ec91906109e8565b60015b6102fd576000915050610303565b80925050505b919050565b6103106104f1565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461037d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161037490610a61565b60405180910390fd5b610396816040518060200160405280600081525061051a565b50565b60006103a36104f1565b905090565b6103b06104f1565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461041d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161041490610a61565b60405180910390fd5b61046b8383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061051a565b505050565b6104786104f1565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104dc90610a61565b60405180910390fd5b6104ee81610649565b50565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610354905090565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc549050827f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc558273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f5570d70a002632a7b0b3c9304cc89efb62d8da9eca0dbd7752c83b737906829660405160405180910390a36000825111156106445760008373ffffffffffffffffffffffffffffffffffffffff16836040516105ee9190610afb565b600060405180830381855af49150503d8060008114610629576040519150601f19603f3d011682016040523d82523d6000602084013e61062e565b606091505b5050905080610642573d806000803e806000fd5b505b505050565b60006106536104f1565b9050817fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103558173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fdf435d422321da6b195902d70fc417c06a32f88379c20dd8f2a8da07088cec2960405160405180910390a35050565b600082825260208201905092915050565b7f45544845525f52454a4543544544000000000000000000000000000000000000600082015250565b600061071d600e836106d6565b9150610728826106e7565b602082019050919050565b6000602082019050818103600083015261074c81610710565b9050919050565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6107928161075d565b811461079d57600080fd5b50565b6000813590506107af81610789565b92915050565b6000602082840312156107cb576107ca610753565b5b60006107d9848285016107a0565b91505092915050565b60008115159050919050565b6107f7816107e2565b82525050565b600060208201905061081260008301846107ee565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061084382610818565b9050919050565b61085381610838565b811461085e57600080fd5b50565b6000813590506108708161084a565b92915050565b60006020828403121561088c5761088b610753565b5b600061089a84828501610861565b91505092915050565b6108ac81610838565b82525050565b60006020820190506108c760008301846108a3565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126108f2576108f16108cd565b5b8235905067ffffffffffffffff81111561090f5761090e6108d2565b5b60208301915083600182028301111561092b5761092a6108d7565b5b9250929050565b60008060006040848603121561094b5761094a610753565b5b600061095986828701610861565b935050602084013567ffffffffffffffff81111561097a57610979610758565b5b610986868287016108dc565b92509250509250925092565b61099b8161075d565b82525050565b60006020820190506109b66000830184610992565b92915050565b6109c5816107e2565b81146109d057600080fd5b50565b6000815190506109e2816109bc565b92915050565b6000602082840312156109fe576109fd610753565b5b6000610a0c848285016109d3565b91505092915050565b7f4e4f545f415554484f52495a4544000000000000000000000000000000000000600082015250565b6000610a4b600e836106d6565b9150610a5682610a15565b602082019050919050565b60006020820190508181036000830152610a7a81610a3e565b9050919050565b600081519050919050565b600081905092915050565b60005b83811015610ab5578082015181840152602081019050610a9a565b83811115610ac4576000848401525b50505050565b6000610ad582610a81565b610adf8185610a8c565b9350610aef818560208601610a97565b80840191505092915050565b6000610b078284610aca565b91508190509291505056fea26469706673582212200d4aa9bfb57d4014fd57bf8721c30cd9e22e7b5153826ada9cf2ca5ca10150b464736f6c634300080e0033","0xba","0x0"] diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-613cd0daefefa1291c3cadc7ce76b879.json b/contracts/cache/hardhat-network-fork/network-80001/request-613cd0daefefa1291c3cadc7ce76b879.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-613cd0daefefa1291c3cadc7ce76b879.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-61a58ac4c1392439f9946932488609d0.json b/contracts/cache/hardhat-network-fork/network-80001/request-61a58ac4c1392439f9946932488609d0.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-61a58ac4c1392439f9946932488609d0.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-62bab0a17763e18ba9ddb0e950d602e1.json b/contracts/cache/hardhat-network-fork/network-80001/request-62bab0a17763e18ba9ddb0e950d602e1.json new file mode 100644 index 0000000..fbe2f37 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-62bab0a17763e18ba9ddb0e950d602e1.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000056bc75e2d63100000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-644f1982c22b592b912dc438b508b652.json b/contracts/cache/hardhat-network-fork/network-80001/request-644f1982c22b592b912dc438b508b652.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-644f1982c22b592b912dc438b508b652.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-64caa5c9b18b2cd2f4d5fdc2b545ee8f.json b/contracts/cache/hardhat-network-fork/network-80001/request-64caa5c9b18b2cd2f4d5fdc2b545ee8f.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-64caa5c9b18b2cd2f4d5fdc2b545ee8f.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-650a05aa24fc27b5f7962ae78140088a.json b/contracts/cache/hardhat-network-fork/network-80001/request-650a05aa24fc27b5f7962ae78140088a.json new file mode 100644 index 0000000..f5035a2 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-650a05aa24fc27b5f7962ae78140088a.json @@ -0,0 +1 @@ +"0x00000000000000000000000000000000000000000000001b2c1deb4b7bc592a3" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-651b02ceab456195b5b7eb6d74b0300f.json b/contracts/cache/hardhat-network-fork/network-80001/request-651b02ceab456195b5b7eb6d74b0300f.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-651b02ceab456195b5b7eb6d74b0300f.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-6585c5542b77540a52a8b4f278d8883d.json b/contracts/cache/hardhat-network-fork/network-80001/request-6585c5542b77540a52a8b4f278d8883d.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-6585c5542b77540a52a8b4f278d8883d.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-65c9b526e33df76c754c858babf69e12.json b/contracts/cache/hardhat-network-fork/network-80001/request-65c9b526e33df76c754c858babf69e12.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-65c9b526e33df76c754c858babf69e12.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-65d724f76f3660ee2206201e7551547f.json b/contracts/cache/hardhat-network-fork/network-80001/request-65d724f76f3660ee2206201e7551547f.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-65d724f76f3660ee2206201e7551547f.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-65e0a2c629151ca3a301947b828e1f66.json b/contracts/cache/hardhat-network-fork/network-80001/request-65e0a2c629151ca3a301947b828e1f66.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-65e0a2c629151ca3a301947b828e1f66.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-6698225d256fbc6b0868ff945b49b5d6.json b/contracts/cache/hardhat-network-fork/network-80001/request-6698225d256fbc6b0868ff945b49b5d6.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-6698225d256fbc6b0868ff945b49b5d6.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-669adbedf5bec8e672a54df43edb4ecd.json b/contracts/cache/hardhat-network-fork/network-80001/request-669adbedf5bec8e672a54df43edb4ecd.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-669adbedf5bec8e672a54df43edb4ecd.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-67229444c465ba94498f77cd322ac86c.json b/contracts/cache/hardhat-network-fork/network-80001/request-67229444c465ba94498f77cd322ac86c.json new file mode 100644 index 0000000..f2dd37b --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-67229444c465ba94498f77cd322ac86c.json @@ -0,0 +1 @@ +{"number":"0x1f37108","hash":"0x8de42ee85b7837942c7c7c5ff6fd7785123fc8a48404bf20288c12bbf871a045","transactions":[{"blockHash":"0x8de42ee85b7837942c7c7c5ff6fd7785123fc8a48404bf20288c12bbf871a045","blockNumber":"0x1f37108","hash":"0x9a098794628dbd91dd4ae7ecd7827bd049cd59a373105439a1e8dd68c4bf3c7c","from":"0x7e77f71079fca309633aa6ea03109e2298c5ce67","gas":"0xfcb1","gasPrice":"0xb7035169","input":"0xa1623b66000000000000000000000000deece376741d4d41b760c9bb98710e7ec080d6be00000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000045b2d00000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001c0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000032d6700000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000008ac7230489e80000","nonce":"0x2c45b","r":"0xb83e13aeca77dcbdb42c0135b5275a8efa2732152ae7eedd68e23e76d9dd1545","s":"0xabce4d5eba9f6fd97fc2bd9b1359589fbf86d36a03d651b5a74d57178539b22","to":"0x71401ce15e772bc1e410af5f524dbfc2ed21abf7","transactionIndex":"0x0","type":"0x0","v":"0x27126","value":"0x0"},{"blockHash":"0x8de42ee85b7837942c7c7c5ff6fd7785123fc8a48404bf20288c12bbf871a045","blockNumber":"0x1f37108","hash":"0x86cb0b6a80c2e6537f0b662335af272ab4287228e8a17c51ead888d7892accd3","from":"0xd0ff33bde2fd91c766a1230b0c6c334c6d97f59c","gas":"0x4c4b40","gasPrice":"0xa6601b77","input":"0xd1c7c5690000000000000000000000000876fe8d6c8efa8b92d9a6a33b49c6f30024a8d6000000000000000000000000791d68c31df41ada0ac5e137d470c96402c73b3c00000000000000000000000000000000000000000000001019b3f66d33040000000000000000000000000000d0ff33bde2fd91c766a1230b0c6c334c6d97f59c000000000000000000000000000000000000000000000000000000029680330d0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x5","r":"0x244e46bab136e05e30058378b706102d1da7945819095a110532b7277516a167","s":"0x6589fb7195af10a1ba38a0f45974481554d48836cd87e22ba31bc266e8d48c62","to":"0xb9c5a7ab45c690a94d8970eabf451a8ab94e2db2","transactionIndex":"0x1","type":"0x0","v":"0x27126","value":"0x0"}],"difficulty":"0x5","extraData":"0xd682030483626f7288676f312e31392e36856c696e757800000000000000000030d130e5a6e015a5fb84c1a40eba88dcbd985a168d46fa13b5c66b212eaf816f6020561d6cea364df4823cb151dcedc6c0da4fe04ed9ac69f78a4b10a22bc9c900","gasLimit":"0x1312d00","gasUsed":"0xc3d58","logsBloom":"0x10000000000000000400000000000000000100000000000080400200000000000000000000000000000000000000000000008000402000000100000000200800002000000000000140000008000000800000000004000000000100000000004008000000020000000000000000800800000000401000800080022410000000000000000000000000000020000000000001000000100080000000000000000000220000000000004000000000002000000400000004000000002020001000004000800002008000000001080000200100000002008000000000100050000020000010000000000000000000100000000000000000002000000000000000100000","miner":"0x0000000000000000000000000000000000000000","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","parentHash":"0xe93a49bdcd73d51fc6e4f47475efbf12aafac6f56c71af78f384424979afde2b","receiptsRoot":"0x4a99ef9cbf626de42e7e76a207307978269bb8cfdc4e9c17fd5a555cdb70cba7","sha3Uncles":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","size":"0x64a","stateRoot":"0xf8475f021a62c78367a060d3c1154bc7ac367c2051a69a98f58e947d28bb12b3","timestamp":"0x64046178","totalDifficulty":"0xc8b4788","transactionsRoot":"0xe08f39e74af60598349ac091fd4c8ab492e5154c9d83ae5475dcfc8f1ec25edb","uncles":[],"baseFeePerGas":"0xf"} diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-6796fb3cf3d79fc20e7f16f9a1cd2372.json b/contracts/cache/hardhat-network-fork/network-80001/request-6796fb3cf3d79fc20e7f16f9a1cd2372.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-6796fb3cf3d79fc20e7f16f9a1cd2372.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-67e04b6802b57488af9dcfbc772aebab.json b/contracts/cache/hardhat-network-fork/network-80001/request-67e04b6802b57488af9dcfbc772aebab.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-67e04b6802b57488af9dcfbc772aebab.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-6815733bbd78e9a3618612130795e353.json b/contracts/cache/hardhat-network-fork/network-80001/request-6815733bbd78e9a3618612130795e353.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-6815733bbd78e9a3618612130795e353.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-6876bb827d30ad6c7039801ef280df66.json b/contracts/cache/hardhat-network-fork/network-80001/request-6876bb827d30ad6c7039801ef280df66.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-6876bb827d30ad6c7039801ef280df66.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-69446d4d1819535a0010ec920cb19710.json b/contracts/cache/hardhat-network-fork/network-80001/request-69446d4d1819535a0010ec920cb19710.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-69446d4d1819535a0010ec920cb19710.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-6a53094b154b2ac391e61c9468de5b6c.json b/contracts/cache/hardhat-network-fork/network-80001/request-6a53094b154b2ac391e61c9468de5b6c.json new file mode 100644 index 0000000..6161e48 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-6a53094b154b2ac391e61c9468de5b6c.json @@ -0,0 +1 @@ +["0x608060405234801561001057600080fd5b50600436106100a5576000357c010000000000000000000000000000000000000000000000000000000090048063a41e7d5111610078578063a41e7d51146101d4578063aabbb8ca1461020a578063b705676514610236578063f712f3e814610280576100a5565b806329965a1d146100aa5780633d584063146100e25780635df8122f1461012457806365ba36c114610152575b600080fd5b6100e0600480360360608110156100c057600080fd5b50600160a060020a038135811691602081013591604090910135166102b6565b005b610108600480360360208110156100f857600080fd5b5035600160a060020a0316610570565b60408051600160a060020a039092168252519081900360200190f35b6100e06004803603604081101561013a57600080fd5b50600160a060020a03813581169160200135166105bc565b6101c26004803603602081101561016857600080fd5b81019060208101813564010000000081111561018357600080fd5b82018360208201111561019557600080fd5b803590602001918460018302840111640100000000831117156101b757600080fd5b5090925090506106b3565b60408051918252519081900360200190f35b6100e0600480360360408110156101ea57600080fd5b508035600160a060020a03169060200135600160e060020a0319166106ee565b6101086004803603604081101561022057600080fd5b50600160a060020a038135169060200135610778565b61026c6004803603604081101561024c57600080fd5b508035600160a060020a03169060200135600160e060020a0319166107ef565b604080519115158252519081900360200190f35b61026c6004803603604081101561029657600080fd5b508035600160a060020a03169060200135600160e060020a0319166108aa565b6000600160a060020a038416156102cd57836102cf565b335b9050336102db82610570565b600160a060020a031614610339576040805160e560020a62461bcd02815260206004820152600f60248201527f4e6f7420746865206d616e616765720000000000000000000000000000000000604482015290519081900360640190fd5b6103428361092a565b15610397576040805160e560020a62461bcd02815260206004820152601a60248201527f4d757374206e6f7420626520616e204552433136352068617368000000000000604482015290519081900360640190fd5b600160a060020a038216158015906103b85750600160a060020a0382163314155b156104ff5760405160200180807f455243313832305f4143434550545f4d4147494300000000000000000000000081525060140190506040516020818303038152906040528051906020012082600160a060020a031663249cb3fa85846040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083815260200182600160a060020a0316600160a060020a031681526020019250505060206040518083038186803b15801561047e57600080fd5b505afa158015610492573d6000803e3d6000fd5b505050506040513d60208110156104a857600080fd5b5051146104ff576040805160e560020a62461bcd02815260206004820181905260248201527f446f6573206e6f7420696d706c656d656e742074686520696e74657266616365604482015290519081900360640190fd5b600160a060020a03818116600081815260208181526040808320888452909152808220805473ffffffffffffffffffffffffffffffffffffffff19169487169485179055518692917f93baa6efbd2244243bfee6ce4cfdd1d04fc4c0e9a786abd3a41313bd352db15391a450505050565b600160a060020a03818116600090815260016020526040812054909116151561059a5750806105b7565b50600160a060020a03808216600090815260016020526040902054165b919050565b336105c683610570565b600160a060020a031614610624576040805160e560020a62461bcd02815260206004820152600f60248201527f4e6f7420746865206d616e616765720000000000000000000000000000000000604482015290519081900360640190fd5b81600160a060020a031681600160a060020a0316146106435780610646565b60005b600160a060020a03838116600081815260016020526040808220805473ffffffffffffffffffffffffffffffffffffffff19169585169590951790945592519184169290917f605c2dbf762e5f7d60a546d42e7205dcb1b011ebc62a61736a57c9089d3a43509190a35050565b600082826040516020018083838082843780830192505050925050506040516020818303038152906040528051906020012090505b92915050565b6106f882826107ef565b610703576000610705565b815b600160a060020a03928316600081815260208181526040808320600160e060020a031996909616808452958252808320805473ffffffffffffffffffffffffffffffffffffffff19169590971694909417909555908152600284528181209281529190925220805460ff19166001179055565b600080600160a060020a038416156107905783610792565b335b905061079d8361092a565b156107c357826107ad82826108aa565b6107b85760006107ba565b815b925050506106e8565b600160a060020a0390811660009081526020818152604080832086845290915290205416905092915050565b6000808061081d857f01ffc9a70000000000000000000000000000000000000000000000000000000061094c565b909250905081158061082d575080155b1561083d576000925050506106e8565b61084f85600160e060020a031961094c565b909250905081158061086057508015155b15610870576000925050506106e8565b61087a858561094c565b909250905060018214801561088f5750806001145b1561089f576001925050506106e8565b506000949350505050565b600160a060020a0382166000908152600260209081526040808320600160e060020a03198516845290915281205460ff1615156108f2576108eb83836107ef565b90506106e8565b50600160a060020a03808316600081815260208181526040808320600160e060020a0319871684529091529020549091161492915050565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff161590565b6040517f01ffc9a7000000000000000000000000000000000000000000000000000000008082526004820183905260009182919060208160248189617530fa90519096909550935050505056fea165627a7a72305820377f4a2d4301ede9949f163f319021a6e9c687c292a5e2b2c4734c126b524e6c0029","0x1","0x0"] diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-6bc9695b69e2bda8096d07c7d70095dc.json b/contracts/cache/hardhat-network-fork/network-80001/request-6bc9695b69e2bda8096d07c7d70095dc.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-6bc9695b69e2bda8096d07c7d70095dc.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-6bdbe7dab3ebe18457a6ba0e0a9a1eea.json b/contracts/cache/hardhat-network-fork/network-80001/request-6bdbe7dab3ebe18457a6ba0e0a9a1eea.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-6bdbe7dab3ebe18457a6ba0e0a9a1eea.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-6c17a8c3614b9702e8b5bdfb2d741bf1.json b/contracts/cache/hardhat-network-fork/network-80001/request-6c17a8c3614b9702e8b5bdfb2d741bf1.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-6c17a8c3614b9702e8b5bdfb2d741bf1.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-6c1b4788322240f4dbd887caf8839e92.json b/contracts/cache/hardhat-network-fork/network-80001/request-6c1b4788322240f4dbd887caf8839e92.json new file mode 100644 index 0000000..c6989bb --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-6c1b4788322240f4dbd887caf8839e92.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000002" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-6c2600228532b16ce55d641fd334bdbf.json b/contracts/cache/hardhat-network-fork/network-80001/request-6c2600228532b16ce55d641fd334bdbf.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-6c2600228532b16ce55d641fd334bdbf.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-6d5b599d8489770fd3550c61dd8b0b38.json b/contracts/cache/hardhat-network-fork/network-80001/request-6d5b599d8489770fd3550c61dd8b0b38.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-6d5b599d8489770fd3550c61dd8b0b38.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-6d995ea631f047ea33ec3122b03e4e8f.json b/contracts/cache/hardhat-network-fork/network-80001/request-6d995ea631f047ea33ec3122b03e4e8f.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-6d995ea631f047ea33ec3122b03e4e8f.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-6df4ebfaf933546d9f1793da1c1e6678.json b/contracts/cache/hardhat-network-fork/network-80001/request-6df4ebfaf933546d9f1793da1c1e6678.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-6df4ebfaf933546d9f1793da1c1e6678.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-6ece4c807d5ed5bb0292c2a1d9e80072.json b/contracts/cache/hardhat-network-fork/network-80001/request-6ece4c807d5ed5bb0292c2a1d9e80072.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-6ece4c807d5ed5bb0292c2a1d9e80072.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-6f084d125455edb45261613b0bac4113.json b/contracts/cache/hardhat-network-fork/network-80001/request-6f084d125455edb45261613b0bac4113.json new file mode 100644 index 0000000..7d4e5aa --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-6f084d125455edb45261613b0bac4113.json @@ -0,0 +1 @@ +"0x6367373500000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-6f4e9a1dc5debc7df8e5967a88b06376.json b/contracts/cache/hardhat-network-fork/network-80001/request-6f4e9a1dc5debc7df8e5967a88b06376.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-6f4e9a1dc5debc7df8e5967a88b06376.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-6f7aeff3a36c47359a7b865a8b721195.json b/contracts/cache/hardhat-network-fork/network-80001/request-6f7aeff3a36c47359a7b865a8b721195.json new file mode 100644 index 0000000..74d0a19 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-6f7aeff3a36c47359a7b865a8b721195.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000a2cebf74ee1660a" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-6f8aeb18d474fca3516d41c742fad089.json b/contracts/cache/hardhat-network-fork/network-80001/request-6f8aeb18d474fca3516d41c742fad089.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-6f8aeb18d474fca3516d41c742fad089.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-7019efbbc799fb15634631d229da7000.json b/contracts/cache/hardhat-network-fork/network-80001/request-7019efbbc799fb15634631d229da7000.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-7019efbbc799fb15634631d229da7000.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-7074e66a14f9a65ff61ec4359b963c4d.json b/contracts/cache/hardhat-network-fork/network-80001/request-7074e66a14f9a65ff61ec4359b963c4d.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-7074e66a14f9a65ff61ec4359b963c4d.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-707947a667748e778b82520b68af7cd7.json b/contracts/cache/hardhat-network-fork/network-80001/request-707947a667748e778b82520b68af7cd7.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-707947a667748e778b82520b68af7cd7.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-710610f8535a1a0848e3b667257bf8d3.json b/contracts/cache/hardhat-network-fork/network-80001/request-710610f8535a1a0848e3b667257bf8d3.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-710610f8535a1a0848e3b667257bf8d3.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-71b5d590c15229516b8038ddd93e22cf.json b/contracts/cache/hardhat-network-fork/network-80001/request-71b5d590c15229516b8038ddd93e22cf.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-71b5d590c15229516b8038ddd93e22cf.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-71dca36231f5a68b23c7d954cdb422c8.json b/contracts/cache/hardhat-network-fork/network-80001/request-71dca36231f5a68b23c7d954cdb422c8.json new file mode 100644 index 0000000..cdfdef6 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-71dca36231f5a68b23c7d954cdb422c8.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000326a57b8a619480000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-72d3731518e3be86db021b1260d48c09.json b/contracts/cache/hardhat-network-fork/network-80001/request-72d3731518e3be86db021b1260d48c09.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-72d3731518e3be86db021b1260d48c09.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-73a3dfedcfc9f7adcdaf9357cf6f6a61.json b/contracts/cache/hardhat-network-fork/network-80001/request-73a3dfedcfc9f7adcdaf9357cf6f6a61.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-73a3dfedcfc9f7adcdaf9357cf6f6a61.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-73f7f0427beb786b1e9e57ca163be416.json b/contracts/cache/hardhat-network-fork/network-80001/request-73f7f0427beb786b1e9e57ca163be416.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-73f7f0427beb786b1e9e57ca163be416.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-7424b20ac0f8da51543953895a729594.json b/contracts/cache/hardhat-network-fork/network-80001/request-7424b20ac0f8da51543953895a729594.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-7424b20ac0f8da51543953895a729594.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-748aac3d1d294034733da55f72706f8d.json b/contracts/cache/hardhat-network-fork/network-80001/request-748aac3d1d294034733da55f72706f8d.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-748aac3d1d294034733da55f72706f8d.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-7610d288406f07a74720f9f51aad9945.json b/contracts/cache/hardhat-network-fork/network-80001/request-7610d288406f07a74720f9f51aad9945.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-7610d288406f07a74720f9f51aad9945.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-762e4170cc45b6f48c495cedb88835fe.json b/contracts/cache/hardhat-network-fork/network-80001/request-762e4170cc45b6f48c495cedb88835fe.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-762e4170cc45b6f48c495cedb88835fe.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-76829afa6085b80b58c910f85520c6e4.json b/contracts/cache/hardhat-network-fork/network-80001/request-76829afa6085b80b58c910f85520c6e4.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-76829afa6085b80b58c910f85520c6e4.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-76d7b07030484e9df274e5340f963943.json b/contracts/cache/hardhat-network-fork/network-80001/request-76d7b07030484e9df274e5340f963943.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-76d7b07030484e9df274e5340f963943.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-76ec32ee70e611a4c7342f6e656ed815.json b/contracts/cache/hardhat-network-fork/network-80001/request-76ec32ee70e611a4c7342f6e656ed815.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-76ec32ee70e611a4c7342f6e656ed815.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-7734bc12a42613f5e0509c0a4c824fd6.json b/contracts/cache/hardhat-network-fork/network-80001/request-7734bc12a42613f5e0509c0a4c824fd6.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-7734bc12a42613f5e0509c0a4c824fd6.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-7894af08ba3342402edc75aa21cfad39.json b/contracts/cache/hardhat-network-fork/network-80001/request-7894af08ba3342402edc75aa21cfad39.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-7894af08ba3342402edc75aa21cfad39.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-78ebfd7e5541d67537e38658284dc249.json b/contracts/cache/hardhat-network-fork/network-80001/request-78ebfd7e5541d67537e38658284dc249.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-78ebfd7e5541d67537e38658284dc249.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-791630383f9d5cd2a92d2ca2ba1aac42.json b/contracts/cache/hardhat-network-fork/network-80001/request-791630383f9d5cd2a92d2ca2ba1aac42.json new file mode 100644 index 0000000..084e644 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-791630383f9d5cd2a92d2ca2ba1aac42.json @@ -0,0 +1 @@ +"0x8c8" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-7a3f940a91ae05b6d2fab8a4a4781650.json b/contracts/cache/hardhat-network-fork/network-80001/request-7a3f940a91ae05b6d2fab8a4a4781650.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-7a3f940a91ae05b6d2fab8a4a4781650.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-7b19b3f7c247fb6b75555d3f1d742cde.json b/contracts/cache/hardhat-network-fork/network-80001/request-7b19b3f7c247fb6b75555d3f1d742cde.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-7b19b3f7c247fb6b75555d3f1d742cde.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-7b82407f11399280807023bace7d4a9d.json b/contracts/cache/hardhat-network-fork/network-80001/request-7b82407f11399280807023bace7d4a9d.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-7b82407f11399280807023bace7d4a9d.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-7b959554444d4138b6c84dcbe923df10.json b/contracts/cache/hardhat-network-fork/network-80001/request-7b959554444d4138b6c84dcbe923df10.json new file mode 100644 index 0000000..5c87ee9 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-7b959554444d4138b6c84dcbe923df10.json @@ -0,0 +1 @@ +["0x","0x0","0x0"] diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-7bd46c3749a376d65035a3359bd9ddab.json b/contracts/cache/hardhat-network-fork/network-80001/request-7bd46c3749a376d65035a3359bd9ddab.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-7bd46c3749a376d65035a3359bd9ddab.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-7c57ccfe497cf3eeff3d1070da6859e1.json b/contracts/cache/hardhat-network-fork/network-80001/request-7c57ccfe497cf3eeff3d1070da6859e1.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-7c57ccfe497cf3eeff3d1070da6859e1.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-7d42d2c0dcee9e04486de504a4e572c0.json b/contracts/cache/hardhat-network-fork/network-80001/request-7d42d2c0dcee9e04486de504a4e572c0.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-7d42d2c0dcee9e04486de504a4e572c0.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-7d4702a21f253883d86bcb04742099f9.json b/contracts/cache/hardhat-network-fork/network-80001/request-7d4702a21f253883d86bcb04742099f9.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-7d4702a21f253883d86bcb04742099f9.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-7d519167a8f95e6d642fcdc2dd248818.json b/contracts/cache/hardhat-network-fork/network-80001/request-7d519167a8f95e6d642fcdc2dd248818.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-7d519167a8f95e6d642fcdc2dd248818.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-7d7acb8ea8f9e9c20022a42615066270.json b/contracts/cache/hardhat-network-fork/network-80001/request-7d7acb8ea8f9e9c20022a42615066270.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-7d7acb8ea8f9e9c20022a42615066270.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-7d7bab6bd45b83f75e31fa9c5dd88fdf.json b/contracts/cache/hardhat-network-fork/network-80001/request-7d7bab6bd45b83f75e31fa9c5dd88fdf.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-7d7bab6bd45b83f75e31fa9c5dd88fdf.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-7d99bb12affb1716a0e4fee0d840b8ce.json b/contracts/cache/hardhat-network-fork/network-80001/request-7d99bb12affb1716a0e4fee0d840b8ce.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-7d99bb12affb1716a0e4fee0d840b8ce.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-7e908c44b06a5b1c812df06b3fd7e276.json b/contracts/cache/hardhat-network-fork/network-80001/request-7e908c44b06a5b1c812df06b3fd7e276.json new file mode 100644 index 0000000..a9e8a4f --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-7e908c44b06a5b1c812df06b3fd7e276.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000001" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-7eaeece3886198ac2e8f1708ac85efdb.json b/contracts/cache/hardhat-network-fork/network-80001/request-7eaeece3886198ac2e8f1708ac85efdb.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-7eaeece3886198ac2e8f1708ac85efdb.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-7ed00d3d7da360e7ee46c114ceda9020.json b/contracts/cache/hardhat-network-fork/network-80001/request-7ed00d3d7da360e7ee46c114ceda9020.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-7ed00d3d7da360e7ee46c114ceda9020.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-7f43356c009e634bc729691793bfc01b.json b/contracts/cache/hardhat-network-fork/network-80001/request-7f43356c009e634bc729691793bfc01b.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-7f43356c009e634bc729691793bfc01b.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-7f49634723bcdb1ba73c5b9dd182fb7f.json b/contracts/cache/hardhat-network-fork/network-80001/request-7f49634723bcdb1ba73c5b9dd182fb7f.json new file mode 100644 index 0000000..10bb759 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-7f49634723bcdb1ba73c5b9dd182fb7f.json @@ -0,0 +1 @@ +"0x00000000000000000000000000000000000000000009c0511e5f72e671ca278d" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-7f4bbd547fcf9c9947180197519f67e2.json b/contracts/cache/hardhat-network-fork/network-80001/request-7f4bbd547fcf9c9947180197519f67e2.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-7f4bbd547fcf9c9947180197519f67e2.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-7f55cc6a2f5bc72351264121ed52c180.json b/contracts/cache/hardhat-network-fork/network-80001/request-7f55cc6a2f5bc72351264121ed52c180.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-7f55cc6a2f5bc72351264121ed52c180.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-7f5aced7e32e961b85edba709519217d.json b/contracts/cache/hardhat-network-fork/network-80001/request-7f5aced7e32e961b85edba709519217d.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-7f5aced7e32e961b85edba709519217d.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-7f84f3d99bb8c8dd242cb9adf7537a0d.json b/contracts/cache/hardhat-network-fork/network-80001/request-7f84f3d99bb8c8dd242cb9adf7537a0d.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-7f84f3d99bb8c8dd242cb9adf7537a0d.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-807a8698398d923e26bab04763ecd763.json b/contracts/cache/hardhat-network-fork/network-80001/request-807a8698398d923e26bab04763ecd763.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-807a8698398d923e26bab04763ecd763.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-8096d5fd301aa2291a21c9d0116e4335.json b/contracts/cache/hardhat-network-fork/network-80001/request-8096d5fd301aa2291a21c9d0116e4335.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-8096d5fd301aa2291a21c9d0116e4335.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-81286819b680a1bedd61f541e8711965.json b/contracts/cache/hardhat-network-fork/network-80001/request-81286819b680a1bedd61f541e8711965.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-81286819b680a1bedd61f541e8711965.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-8134fb979ad0a40fa68c1c2508d16609.json b/contracts/cache/hardhat-network-fork/network-80001/request-8134fb979ad0a40fa68c1c2508d16609.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-8134fb979ad0a40fa68c1c2508d16609.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-831e5522499bee3951efb107d4542aea.json b/contracts/cache/hardhat-network-fork/network-80001/request-831e5522499bee3951efb107d4542aea.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-831e5522499bee3951efb107d4542aea.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-83325c87396aa39bf721eaaafa7d3d0a.json b/contracts/cache/hardhat-network-fork/network-80001/request-83325c87396aa39bf721eaaafa7d3d0a.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-83325c87396aa39bf721eaaafa7d3d0a.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-8389102d5bacd06d2aaf11f28b3310e7.json b/contracts/cache/hardhat-network-fork/network-80001/request-8389102d5bacd06d2aaf11f28b3310e7.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-8389102d5bacd06d2aaf11f28b3310e7.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-83aa538d8ebc8f9517dbc0da91663e3a.json b/contracts/cache/hardhat-network-fork/network-80001/request-83aa538d8ebc8f9517dbc0da91663e3a.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-83aa538d8ebc8f9517dbc0da91663e3a.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-841a3f3645dbab8cafbd7019ddc72d3f.json b/contracts/cache/hardhat-network-fork/network-80001/request-841a3f3645dbab8cafbd7019ddc72d3f.json new file mode 100644 index 0000000..93502ac --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-841a3f3645dbab8cafbd7019ddc72d3f.json @@ -0,0 +1 @@ +"0x000000000000000000000000e8e0873f12d7e04630989401bc7b54a67e403df9" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-8452124711073421fb7f8df453c9d7ea.json b/contracts/cache/hardhat-network-fork/network-80001/request-8452124711073421fb7f8df453c9d7ea.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-8452124711073421fb7f8df453c9d7ea.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-84f75945decaddd9104a76048ae6351e.json b/contracts/cache/hardhat-network-fork/network-80001/request-84f75945decaddd9104a76048ae6351e.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-84f75945decaddd9104a76048ae6351e.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-85423fe24fbaf7d559d009b22697c932.json b/contracts/cache/hardhat-network-fork/network-80001/request-85423fe24fbaf7d559d009b22697c932.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-85423fe24fbaf7d559d009b22697c932.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-85bfdf3abfc3d62ef73fd85e656611ee.json b/contracts/cache/hardhat-network-fork/network-80001/request-85bfdf3abfc3d62ef73fd85e656611ee.json new file mode 100644 index 0000000..5c87ee9 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-85bfdf3abfc3d62ef73fd85e656611ee.json @@ -0,0 +1 @@ +["0x","0x0","0x0"] diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-85eb4e8c09f4811b7be51846a3eb1fff.json b/contracts/cache/hardhat-network-fork/network-80001/request-85eb4e8c09f4811b7be51846a3eb1fff.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-85eb4e8c09f4811b7be51846a3eb1fff.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-86326e206dafee59160793ba767bb4d1.json b/contracts/cache/hardhat-network-fork/network-80001/request-86326e206dafee59160793ba767bb4d1.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-86326e206dafee59160793ba767bb4d1.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-86b3cebb9c34a9fec9ad3a0484e94b39.json b/contracts/cache/hardhat-network-fork/network-80001/request-86b3cebb9c34a9fec9ad3a0484e94b39.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-86b3cebb9c34a9fec9ad3a0484e94b39.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-86be4f35bcfa32cebdc5159a6d663c34.json b/contracts/cache/hardhat-network-fork/network-80001/request-86be4f35bcfa32cebdc5159a6d663c34.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-86be4f35bcfa32cebdc5159a6d663c34.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-8808e74de6ce9a6f9d1ca82c5fb4070b.json b/contracts/cache/hardhat-network-fork/network-80001/request-8808e74de6ce9a6f9d1ca82c5fb4070b.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-8808e74de6ce9a6f9d1ca82c5fb4070b.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-88653893965cce122bc4ba1a16682abf.json b/contracts/cache/hardhat-network-fork/network-80001/request-88653893965cce122bc4ba1a16682abf.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-88653893965cce122bc4ba1a16682abf.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-88f12f3e082f5f81226b5a5a6c6b4624.json b/contracts/cache/hardhat-network-fork/network-80001/request-88f12f3e082f5f81226b5a5a6c6b4624.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-88f12f3e082f5f81226b5a5a6c6b4624.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-8915904d8abebba51482c774025037a3.json b/contracts/cache/hardhat-network-fork/network-80001/request-8915904d8abebba51482c774025037a3.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-8915904d8abebba51482c774025037a3.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-892a5f4bc5977f1ee72cc4b2f75eea78.json b/contracts/cache/hardhat-network-fork/network-80001/request-892a5f4bc5977f1ee72cc4b2f75eea78.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-892a5f4bc5977f1ee72cc4b2f75eea78.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-894794eadb06f262ead371b709e20346.json b/contracts/cache/hardhat-network-fork/network-80001/request-894794eadb06f262ead371b709e20346.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-894794eadb06f262ead371b709e20346.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-899209cd382299d20ab510a3141e3cdb.json b/contracts/cache/hardhat-network-fork/network-80001/request-899209cd382299d20ab510a3141e3cdb.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-899209cd382299d20ab510a3141e3cdb.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-89f18a9fcbc2f3ddd1713dce0538dbb1.json b/contracts/cache/hardhat-network-fork/network-80001/request-89f18a9fcbc2f3ddd1713dce0538dbb1.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-89f18a9fcbc2f3ddd1713dce0538dbb1.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-8a339d1b3edec371a4867b273cf2314b.json b/contracts/cache/hardhat-network-fork/network-80001/request-8a339d1b3edec371a4867b273cf2314b.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-8a339d1b3edec371a4867b273cf2314b.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-8aef883507501734ced7be290fba1ddd.json b/contracts/cache/hardhat-network-fork/network-80001/request-8aef883507501734ced7be290fba1ddd.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-8aef883507501734ced7be290fba1ddd.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-8b0c36a4e6aabb438be5edcbe6316340.json b/contracts/cache/hardhat-network-fork/network-80001/request-8b0c36a4e6aabb438be5edcbe6316340.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-8b0c36a4e6aabb438be5edcbe6316340.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-8b4f158cbc20dadabf67794180520f31.json b/contracts/cache/hardhat-network-fork/network-80001/request-8b4f158cbc20dadabf67794180520f31.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-8b4f158cbc20dadabf67794180520f31.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-8b7636df8d0ac28f1edcd2a1697aa7f7.json b/contracts/cache/hardhat-network-fork/network-80001/request-8b7636df8d0ac28f1edcd2a1697aa7f7.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-8b7636df8d0ac28f1edcd2a1697aa7f7.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-8b7e9c140cf73b66c74586c6eb12e9c8.json b/contracts/cache/hardhat-network-fork/network-80001/request-8b7e9c140cf73b66c74586c6eb12e9c8.json new file mode 100644 index 0000000..34574f1 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-8b7e9c140cf73b66c74586c6eb12e9c8.json @@ -0,0 +1 @@ +"0x347" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-8c5d0507703624fa6f5045599e52174e.json b/contracts/cache/hardhat-network-fork/network-80001/request-8c5d0507703624fa6f5045599e52174e.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-8c5d0507703624fa6f5045599e52174e.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-8ca6dfd09e222518807aa4119c509b92.json b/contracts/cache/hardhat-network-fork/network-80001/request-8ca6dfd09e222518807aa4119c509b92.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-8ca6dfd09e222518807aa4119c509b92.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-8d07af753035a1234b0a184a35ec274a.json b/contracts/cache/hardhat-network-fork/network-80001/request-8d07af753035a1234b0a184a35ec274a.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-8d07af753035a1234b0a184a35ec274a.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-8d6c672fb0e6246d7418ff2a219ea1e4.json b/contracts/cache/hardhat-network-fork/network-80001/request-8d6c672fb0e6246d7418ff2a219ea1e4.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-8d6c672fb0e6246d7418ff2a219ea1e4.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-8d7d327a72900c2ce6840b5574818182.json b/contracts/cache/hardhat-network-fork/network-80001/request-8d7d327a72900c2ce6840b5574818182.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-8d7d327a72900c2ce6840b5574818182.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-8d87a1959a70195f45944223534b8527.json b/contracts/cache/hardhat-network-fork/network-80001/request-8d87a1959a70195f45944223534b8527.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-8d87a1959a70195f45944223534b8527.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-8e09cdce9ff1ad9154a82c43283ff731.json b/contracts/cache/hardhat-network-fork/network-80001/request-8e09cdce9ff1ad9154a82c43283ff731.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-8e09cdce9ff1ad9154a82c43283ff731.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-8e55e7351551f31ad939f220ce2ccdc1.json b/contracts/cache/hardhat-network-fork/network-80001/request-8e55e7351551f31ad939f220ce2ccdc1.json new file mode 100644 index 0000000..f773705 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-8e55e7351551f31ad939f220ce2ccdc1.json @@ -0,0 +1 @@ +"0x000000000000000000000000000000000000000000000000000000000000070b" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-8e94718a803881b215ace03915c0b0eb.json b/contracts/cache/hardhat-network-fork/network-80001/request-8e94718a803881b215ace03915c0b0eb.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-8e94718a803881b215ace03915c0b0eb.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-8f326bbdfa22ab175e4cd451dc6423ad.json b/contracts/cache/hardhat-network-fork/network-80001/request-8f326bbdfa22ab175e4cd451dc6423ad.json new file mode 100644 index 0000000..80ac8de --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-8f326bbdfa22ab175e4cd451dc6423ad.json @@ -0,0 +1 @@ +"0x000000000000000000000000a98e63d66b86aacc13936dbdaf0b37046513f337" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-8f4dad9582a0862971b9ca9c2a5ca46e.json b/contracts/cache/hardhat-network-fork/network-80001/request-8f4dad9582a0862971b9ca9c2a5ca46e.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-8f4dad9582a0862971b9ca9c2a5ca46e.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-8fd430d569d3bf2729da0aececfc65f2.json b/contracts/cache/hardhat-network-fork/network-80001/request-8fd430d569d3bf2729da0aececfc65f2.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-8fd430d569d3bf2729da0aececfc65f2.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-90409619d78c93df88b8d8f6f2dd2744.json b/contracts/cache/hardhat-network-fork/network-80001/request-90409619d78c93df88b8d8f6f2dd2744.json new file mode 100644 index 0000000..af5e4c2 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-90409619d78c93df88b8d8f6f2dd2744.json @@ -0,0 +1 @@ +"0x00000000000000000000000000000000000000000000003635c9adc5dea00000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-9048899dd79e0b9f370b89b0bdd3ca89.json b/contracts/cache/hardhat-network-fork/network-80001/request-9048899dd79e0b9f370b89b0bdd3ca89.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-9048899dd79e0b9f370b89b0bdd3ca89.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-906cc8189e4ec9f617fc7f289fa13a6a.json b/contracts/cache/hardhat-network-fork/network-80001/request-906cc8189e4ec9f617fc7f289fa13a6a.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-906cc8189e4ec9f617fc7f289fa13a6a.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-9094c26fdb382d204960e2000cf4f4ba.json b/contracts/cache/hardhat-network-fork/network-80001/request-9094c26fdb382d204960e2000cf4f4ba.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-9094c26fdb382d204960e2000cf4f4ba.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-90a052cc535ead3bb6c8bbca6c72e943.json b/contracts/cache/hardhat-network-fork/network-80001/request-90a052cc535ead3bb6c8bbca6c72e943.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-90a052cc535ead3bb6c8bbca6c72e943.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-90a7b582972c759563066bca2bc83ebe.json b/contracts/cache/hardhat-network-fork/network-80001/request-90a7b582972c759563066bca2bc83ebe.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-90a7b582972c759563066bca2bc83ebe.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-90e93a759356e97a52ec7a4e816b842e.json b/contracts/cache/hardhat-network-fork/network-80001/request-90e93a759356e97a52ec7a4e816b842e.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-90e93a759356e97a52ec7a4e816b842e.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-90fc027b291d22f14c70f7de14fae8a3.json b/contracts/cache/hardhat-network-fork/network-80001/request-90fc027b291d22f14c70f7de14fae8a3.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-90fc027b291d22f14c70f7de14fae8a3.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-913995345ba1e35e4fd09d0f69c31150.json b/contracts/cache/hardhat-network-fork/network-80001/request-913995345ba1e35e4fd09d0f69c31150.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-913995345ba1e35e4fd09d0f69c31150.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-92385a9d45947652305ad72001a3be9d.json b/contracts/cache/hardhat-network-fork/network-80001/request-92385a9d45947652305ad72001a3be9d.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-92385a9d45947652305ad72001a3be9d.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-92cbac98302f994f569bdc470661305b.json b/contracts/cache/hardhat-network-fork/network-80001/request-92cbac98302f994f569bdc470661305b.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-92cbac98302f994f569bdc470661305b.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-932090d9d49ff186953390007258d13a.json b/contracts/cache/hardhat-network-fork/network-80001/request-932090d9d49ff186953390007258d13a.json new file mode 100644 index 0000000..9ffdcdf --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-932090d9d49ff186953390007258d13a.json @@ -0,0 +1 @@ +"0x00000000000000000000000023c7118bacadee2df3eadebd525a0dd5d6007026" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-932cc30e2991257123b91475f068cdc4.json b/contracts/cache/hardhat-network-fork/network-80001/request-932cc30e2991257123b91475f068cdc4.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-932cc30e2991257123b91475f068cdc4.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-9334f34421fb618a14dcac35a83d9204.json b/contracts/cache/hardhat-network-fork/network-80001/request-9334f34421fb618a14dcac35a83d9204.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-9334f34421fb618a14dcac35a83d9204.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-9345ea60c1ad1334333f15e7c0a77fe6.json b/contracts/cache/hardhat-network-fork/network-80001/request-9345ea60c1ad1334333f15e7c0a77fe6.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-9345ea60c1ad1334333f15e7c0a77fe6.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-93fc02beecb068491733aa7e87c56a49.json b/contracts/cache/hardhat-network-fork/network-80001/request-93fc02beecb068491733aa7e87c56a49.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-93fc02beecb068491733aa7e87c56a49.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-94722dc3327195efd034e477016a399d.json b/contracts/cache/hardhat-network-fork/network-80001/request-94722dc3327195efd034e477016a399d.json new file mode 100644 index 0000000..2f93940 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-94722dc3327195efd034e477016a399d.json @@ -0,0 +1 @@ +"0x00000000000000000000000000000000000000000000152d02c7e14af540b200" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-950c310013ff6000cff80540035ba08b.json b/contracts/cache/hardhat-network-fork/network-80001/request-950c310013ff6000cff80540035ba08b.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-950c310013ff6000cff80540035ba08b.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-96c35c02a3fbad44f210e0344cc0c9ab.json b/contracts/cache/hardhat-network-fork/network-80001/request-96c35c02a3fbad44f210e0344cc0c9ab.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-96c35c02a3fbad44f210e0344cc0c9ab.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-96cca9cd6966438bba4135803852e631.json b/contracts/cache/hardhat-network-fork/network-80001/request-96cca9cd6966438bba4135803852e631.json new file mode 100644 index 0000000..a5edf08 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-96cca9cd6966438bba4135803852e631.json @@ -0,0 +1 @@ +"0x208" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-96db8c83f71c3a94ee9213f70da5b910.json b/contracts/cache/hardhat-network-fork/network-80001/request-96db8c83f71c3a94ee9213f70da5b910.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-96db8c83f71c3a94ee9213f70da5b910.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-9729293b78dc370c1bd99032de7dacdf.json b/contracts/cache/hardhat-network-fork/network-80001/request-9729293b78dc370c1bd99032de7dacdf.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-9729293b78dc370c1bd99032de7dacdf.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-972b8dcb1c7439bb40ceec9ef37ac8f4.json b/contracts/cache/hardhat-network-fork/network-80001/request-972b8dcb1c7439bb40ceec9ef37ac8f4.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-972b8dcb1c7439bb40ceec9ef37ac8f4.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-973752f708638b0b5e6bfcf5970cbac8.json b/contracts/cache/hardhat-network-fork/network-80001/request-973752f708638b0b5e6bfcf5970cbac8.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-973752f708638b0b5e6bfcf5970cbac8.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-976a9f22f5d788c5906b21305e00ecf6.json b/contracts/cache/hardhat-network-fork/network-80001/request-976a9f22f5d788c5906b21305e00ecf6.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-976a9f22f5d788c5906b21305e00ecf6.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-97e0c6dc1ff5589ee5878d7564410d22.json b/contracts/cache/hardhat-network-fork/network-80001/request-97e0c6dc1ff5589ee5878d7564410d22.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-97e0c6dc1ff5589ee5878d7564410d22.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-9833e5da0016ef07ef4326c7a60c4138.json b/contracts/cache/hardhat-network-fork/network-80001/request-9833e5da0016ef07ef4326c7a60c4138.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-9833e5da0016ef07ef4326c7a60c4138.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-989f55f7697bf5f0e1d8a8e0e3d2a0a5.json b/contracts/cache/hardhat-network-fork/network-80001/request-989f55f7697bf5f0e1d8a8e0e3d2a0a5.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-989f55f7697bf5f0e1d8a8e0e3d2a0a5.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-98d1f417db69bd3b82041fe9525185d1.json b/contracts/cache/hardhat-network-fork/network-80001/request-98d1f417db69bd3b82041fe9525185d1.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-98d1f417db69bd3b82041fe9525185d1.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-9ad1c27159cf099744c9ff7df3b78782.json b/contracts/cache/hardhat-network-fork/network-80001/request-9ad1c27159cf099744c9ff7df3b78782.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-9ad1c27159cf099744c9ff7df3b78782.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-9ba96ab1910a60d60bb8db0a1c0b1671.json b/contracts/cache/hardhat-network-fork/network-80001/request-9ba96ab1910a60d60bb8db0a1c0b1671.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-9ba96ab1910a60d60bb8db0a1c0b1671.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-9bd2e0d12f126ea665ecd8e2c7a5510a.json b/contracts/cache/hardhat-network-fork/network-80001/request-9bd2e0d12f126ea665ecd8e2c7a5510a.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-9bd2e0d12f126ea665ecd8e2c7a5510a.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-9c145c6dbad4779c5808d82d5f8b3f98.json b/contracts/cache/hardhat-network-fork/network-80001/request-9c145c6dbad4779c5808d82d5f8b3f98.json new file mode 100644 index 0000000..b054d37 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-9c145c6dbad4779c5808d82d5f8b3f98.json @@ -0,0 +1 @@ +"0x000000000000000000000000000000000013a51015086299042f61b257864a3e" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-9c176bf8cfc0c739fdd6b7102ee6b2c0.json b/contracts/cache/hardhat-network-fork/network-80001/request-9c176bf8cfc0c739fdd6b7102ee6b2c0.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-9c176bf8cfc0c739fdd6b7102ee6b2c0.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-9c3c10fd57a80ee3699f1dc747f2a02b.json b/contracts/cache/hardhat-network-fork/network-80001/request-9c3c10fd57a80ee3699f1dc747f2a02b.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-9c3c10fd57a80ee3699f1dc747f2a02b.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-9d3a3cc009e1ed0a2df88db42c7399b8.json b/contracts/cache/hardhat-network-fork/network-80001/request-9d3a3cc009e1ed0a2df88db42c7399b8.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-9d3a3cc009e1ed0a2df88db42c7399b8.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-9d73b9bf14c91a619dbd0685f7c68fd9.json b/contracts/cache/hardhat-network-fork/network-80001/request-9d73b9bf14c91a619dbd0685f7c68fd9.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-9d73b9bf14c91a619dbd0685f7c68fd9.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-9d82506ad30055ae1bdd65e0e2410603.json b/contracts/cache/hardhat-network-fork/network-80001/request-9d82506ad30055ae1bdd65e0e2410603.json new file mode 100644 index 0000000..7c2fdbb --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-9d82506ad30055ae1bdd65e0e2410603.json @@ -0,0 +1 @@ +"0x00000000000000000000000000000000000000000000000000000e10000002d0" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-9d90c52358f3eafb8916a2007d14e229.json b/contracts/cache/hardhat-network-fork/network-80001/request-9d90c52358f3eafb8916a2007d14e229.json new file mode 100644 index 0000000..5c87ee9 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-9d90c52358f3eafb8916a2007d14e229.json @@ -0,0 +1 @@ +["0x","0x0","0x0"] diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-9dc6575467a5301512b9fef7a76e0eca.json b/contracts/cache/hardhat-network-fork/network-80001/request-9dc6575467a5301512b9fef7a76e0eca.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-9dc6575467a5301512b9fef7a76e0eca.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-9e64952f92558ed524decf95e5e679a0.json b/contracts/cache/hardhat-network-fork/network-80001/request-9e64952f92558ed524decf95e5e679a0.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-9e64952f92558ed524decf95e5e679a0.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-9ef9498291a5c502df565ac1f24ec0f2.json b/contracts/cache/hardhat-network-fork/network-80001/request-9ef9498291a5c502df565ac1f24ec0f2.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-9ef9498291a5c502df565ac1f24ec0f2.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-9f10dcdddbd8a6cfae716544ba2151f1.json b/contracts/cache/hardhat-network-fork/network-80001/request-9f10dcdddbd8a6cfae716544ba2151f1.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-9f10dcdddbd8a6cfae716544ba2151f1.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-9f394d23d775765fb26ac8ebb27123a2.json b/contracts/cache/hardhat-network-fork/network-80001/request-9f394d23d775765fb26ac8ebb27123a2.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-9f394d23d775765fb26ac8ebb27123a2.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-9ff364137fa6516eb79a453b94735dbb.json b/contracts/cache/hardhat-network-fork/network-80001/request-9ff364137fa6516eb79a453b94735dbb.json new file mode 100644 index 0000000..4382797 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-9ff364137fa6516eb79a453b94735dbb.json @@ -0,0 +1 @@ +"0x58c" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-a14f506e739f45b89c89332aff72e1fa.json b/contracts/cache/hardhat-network-fork/network-80001/request-a14f506e739f45b89c89332aff72e1fa.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-a14f506e739f45b89c89332aff72e1fa.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-a32de6a8735b0e151edffd8c56eaf2b9.json b/contracts/cache/hardhat-network-fork/network-80001/request-a32de6a8735b0e151edffd8c56eaf2b9.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-a32de6a8735b0e151edffd8c56eaf2b9.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-a37cf200bf6e177eb03303dd06ea9d5d.json b/contracts/cache/hardhat-network-fork/network-80001/request-a37cf200bf6e177eb03303dd06ea9d5d.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-a37cf200bf6e177eb03303dd06ea9d5d.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-a49b1f5f4221558cb9f3c537f2d9f35c.json b/contracts/cache/hardhat-network-fork/network-80001/request-a49b1f5f4221558cb9f3c537f2d9f35c.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-a49b1f5f4221558cb9f3c537f2d9f35c.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-a5153720eb9fda3428b26f6190047a4d.json b/contracts/cache/hardhat-network-fork/network-80001/request-a5153720eb9fda3428b26f6190047a4d.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-a5153720eb9fda3428b26f6190047a4d.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-a5b2d65f29ff6a5708f15f18bc73f3d2.json b/contracts/cache/hardhat-network-fork/network-80001/request-a5b2d65f29ff6a5708f15f18bc73f3d2.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-a5b2d65f29ff6a5708f15f18bc73f3d2.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-a5cb0d4a11324548d21a59674c32b2b3.json b/contracts/cache/hardhat-network-fork/network-80001/request-a5cb0d4a11324548d21a59674c32b2b3.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-a5cb0d4a11324548d21a59674c32b2b3.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-a5f4e3de9b55ef1eaeb06ef6115a300f.json b/contracts/cache/hardhat-network-fork/network-80001/request-a5f4e3de9b55ef1eaeb06ef6115a300f.json new file mode 100644 index 0000000..d1f3cae --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-a5f4e3de9b55ef1eaeb06ef6115a300f.json @@ -0,0 +1 @@ +"0x6342f143fffffffffffffffffffffc3600000000000000050000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-a623c4483d7f07fe6b4f3db1269e4c76.json b/contracts/cache/hardhat-network-fork/network-80001/request-a623c4483d7f07fe6b4f3db1269e4c76.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-a623c4483d7f07fe6b4f3db1269e4c76.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-a64805a847b7b219e14421c28af40cd8.json b/contracts/cache/hardhat-network-fork/network-80001/request-a64805a847b7b219e14421c28af40cd8.json new file mode 100644 index 0000000..a9e8a4f --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-a64805a847b7b219e14421c28af40cd8.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000001" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-a6b7e65350e1f2a57f0d0c25744581c4.json b/contracts/cache/hardhat-network-fork/network-80001/request-a6b7e65350e1f2a57f0d0c25744581c4.json new file mode 100644 index 0000000..0abf95e --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-a6b7e65350e1f2a57f0d0c25744581c4.json @@ -0,0 +1 @@ +["0x608060405234801561001057600080fd5b506004361061010f5760003560e01c80637b4e45e9116100a2578063b81cd86611610071578063b81cd866146102fd578063cd3d4fb91461032e578063ddca3f431461035e578063e60a32131461037c578063ee8ca3b51461039a57610110565b80637b4e45e914610276578063813785e6146102a6578063ad558ab9146102c2578063b810c636146102de57610110565b806354fd4d50116100de57806354fd4d50146101ec578063573ea5751461020a578063647846a5146102285780636d2dd29f1461024657610110565b80630407145c1461012c5780632e6e0bd01461015c5780633140576e1461018c5780633323b467146101bc57610110565b5b600036606061011f83836103b6565b9050915050805190602001f35b61014660048036038101906101419190612e6a565b61041e565b6040516101539190612f5f565b60405180910390f35b61017660048036038101906101719190612fad565b610474565b6040516101839190612fe9565b60405180910390f35b6101a660048036038101906101a19190613402565b6104a7565b6040516101b391906134a8565b60405180910390f35b6101d660048036038101906101d19190613542565b6104c1565b6040516101e391906134a8565b60405180910390f35b6101f461053e565b604051610201919061366e565b60405180910390f35b610212610577565b60405161021f91906136b1565b60405180910390f35b61023061059b565b60405161023d9190612fe9565b60405180910390f35b610260600480360381019061025b9190612fad565b6105c1565b60405161026d9190612fe9565b60405180910390f35b610290600480360381019061028b9190613704565b6105f4565b60405161029d91906134a8565b60405180910390f35b6102c060048036038101906102bb919061383d565b610610565b005b6102dc60048036038101906102d791906138f4565b610777565b005b6102e661089f565b6040516102f49291906139f1565b60405180910390f35b61031760048036038101906103129190612fad565b6108d0565b604051610325929190613a45565b60405180910390f35b61034860048036038101906103439190613a6e565b61092c565b6040516103559190612fe9565b60405180910390f35b61036661095f565b6040516103739190613a9b565b60405180910390f35b610384610965565b6040516103919190613b15565b60405180910390f35b6103b460048036038101906103af9190612fad565b610989565b005b606060006103c484846109a7565b90506000806000806103d7858989610b1d565b935093509350935060006103ee3386868686610ce5565b9050806040516020016104019190613b51565b604051602081830303815290604052965050505050505092915050565b60606000610469600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020610e63565b905080915050919050565b60006020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006104b68686868686610e78565b905095945050505050565b6000806104d033886006610f38565b8098508192505050610532818888888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508761052c90613b6c565b87610ce5565b91505095945050505050565b6040518060400160405280600181526020017f350000000000000000000000000000000000000000000000000000000000000081525081565b7f00000000000000000000000025ad59adbe00c2d80c86d01e2e05e1294da8482381565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610604878787878787611101565b90509695505050505050565b610618611140565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610685576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067c90613bcb565b60405180910390fd5b600084849050905060005b8181101561076f578383828181106106ab576106aa613beb565b5b90506020020160208101906106c09190612e6a565b600660008888858181106106d7576106d6613beb565b5b90506020020160208101906106ec9190613a6e565b60038111156106fe576106fd613c1a565b5b60038111156107105761070f613c1a565b5b815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808061076790613c78565b915050610690565b505050505050565b7f00000000000000000000000025ad59adbe00c2d80c86d01e2e05e1294da8482373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610805576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fc90613d0c565b60405180910390fd5b600061083289896108158a611169565b8961081f90613b6c565b8761082a578861082d565b60005b610e78565b9050610894818a8a8a8a806000019061084b9190613d3b565b80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508a8a8a8a6112e2565b505050505050505050565b600080600354600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915091509091565b60056020528060005260406000206000915090508060000160009054906101000a90046fffffffffffffffffffffffffffffffff16908060000160109054906101000a90046fffffffffffffffffffffffffffffffff16905082565b60066020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b7f000000000000000000000000527a819db1eb0e34426297b03bae11f2f8b3a19e81565b600061099782336006611531565b90506109a381836116ee565b5050565b60006018838360038181106109bf576109be613beb565b5b9050013560f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916901c601084846002818110610a2257610a21613beb565b5b9050013560f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916901c600885856001818110610a8557610a84613beb565b5b9050013560f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916901c85856000818110610ae657610ae5613beb565b5b9050013560f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916171717905092915050565b60006060610b29612dde565b6000638b92696a60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916877bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191603610ba757610b9286866004908092610b8d93929190613da8565b61180d565b80945081955082965083975050505050610cdc565b63b9f45adb60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916877bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191603610c2357610c0e86866004908092610c0993929190613da8565b6119b4565b80945081955082965083975050505050610cdb565b63a873882560e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916877bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191603610c9f57610c8a86866004908092610c8593929190613da8565b611b5b565b80945081955082965083975050505050610cda565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd190613e55565b60405180910390fd5b5b5b93509350935093565b6000610cfc8686610cf587611169565b8686610e78565b9050610d4f81600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611d1f90919063ffffffff16565b15610d8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8690613ee7565b60405180910390fd5b610d9e81878787876006611d36565b610def81600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611f0890919063ffffffff16565b50808573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f73f079427211e7b93db86024054de0b3c4a076a36cf0f86d2c4bf0d112eb7f1d878787604051610e52939291906141a3565b60405180910390a495945050505050565b6060610e7182600001611f1f565b9050919050565b6000610e878360000151611f7b565b15610efd576000610eb68460200151600081518110610ea957610ea8613beb565b5b602002602001015161208c565b9050610ef5878787600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16148786611101565b915050610f2f565b8585858585604051602001610f169594939291906141f7565b6040516020818303038152906040528051906020012090505b95945050505050565b6000806000600380811115610f5057610f4f613c1a565b5b905060005b8181116110f1576000816003811115610f7157610f70613c1a565b5b9050610f8e816003811115610f8957610f88613c1a565b5b61209d565b610f9857506110de565b6000866000836003811115610fb057610faf613c1a565b5b6003811115610fc257610fc1613c1a565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050610ffc816120de565b60006376474e6a60e01b8a8a604051602401611019929190614251565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050905060006110ba83836040518060400160405280601881526020017f4175746f6d6174652e7072654372656174655461736b3a200000000000000000815250612150565b915050808060200190518101906110d191906142a6565b809b50819c505050505050505b80806110e990613c78565b915050610f55565b5085859250925050935093915050565b600086868686868660405160200161111e969594939291906142f5565b6040516020818303038152906040528051906020012090509695505050505050565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610354905090565b600060188260038151811061118157611180613beb565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916901c6010836002815181106111e5576111e4613beb565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916901c60088460018151811061124957611248613beb565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916901c846000815181106112ab576112aa613beb565b5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161717179050919050565b61133389600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611d1f90919063ffffffff16565b611372576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611369906143a2565b60405180910390fd5b816113c0578360038190555082600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b60006113f37f000000000000000000000000527a819db1eb0e34426297b03bae11f2f8b3a19e8b8b8b8b8b8860066121da565b9050821561148f577f000000000000000000000000527a819db1eb0e34426297b03bae11f2f8b3a19e73ffffffffffffffffffffffffffffffffffffffff1663a3f1233e8a86886040518463ffffffff1660e01b8152600401611458939291906143c2565b600060405180830381600087803b15801561147257600080fd5b505af1158015611486573d6000803e3d6000fd5b505050506114bb565b600360009055600460006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b8773ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16867fa458375b1282695a972870cbfbc4891a9d856b79d563d17667d171d87e0c527a8a8e8660405161151d939291906143f9565b60405180910390a450505050505050505050565b60008060038081111561154757611546613c1a565b5b905060005b8181116116e257600081600381111561156857611567613c1a565b5b90506115858160038111156115805761157f613c1a565b5b6122f1565b61158f57506116cf565b60008560008360038111156115a7576115a6613c1a565b5b60038111156115b9576115b8613c1a565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506115f3816120de565b60006314ae992660e01b8989604051602401611610929190614437565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050905060006116b183836040518060400160405280601881526020017f4175746f6d6174652e70726543616e63656c5461736b3a200000000000000000815250612150565b915050808060200190518101906116c89190614460565b9850505050505b80806116da90613c78565b91505061154c565b50839150509392505050565b61173f81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020611d1f90919063ffffffff16565b61177e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611775906144ff565b60405180910390fd5b6117cf81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061236290919063ffffffff16565b507f44d83729a43f9c6046446df014d073dd242e0ad672071e9b292f31b669c25b098183604051611801929190614437565b60405180910390a15050565b60006060611819612dde565b60008060006060888881019061182f9190614534565b809450819550829650839a50505050506000600167ffffffffffffffff81111561185c5761185b613072565b5b60405190808252806020026020018201604052801561188a5781602001602082028036833780820191505090505b5090506000816000815181106118a3576118a2613beb565b5b602002602001019060038111156118bd576118bc613c1a565b5b908160038111156118d1576118d0613c1a565b5b815250506000600167ffffffffffffffff8111156118f2576118f1613072565b5b60405190808252806020026020018201604052801561192557816020015b60608152602001906001900390816119105790505b509050838360405160200161193b9291906145b7565b6040516020818303038152906040528160008151811061195e5761195d613beb565b5b60200260200101819052506040518060400160405280838152602001828152509650846040516020016119919190614608565b604051602081830303815290604052975060009550505050505092959194509250565b600060606119c0612dde565b6000806000606088888101906119d69190614623565b809850819550829650839750849b5050505050506000600167ffffffffffffffff811115611a0757611a06613072565b5b604051908082528060200260200182016040528015611a355781602001602082028036833780820191505090505b509050600081600081518110611a4e57611a4d613beb565b5b60200260200101906003811115611a6857611a67613c1a565b5b90816003811115611a7c57611a7b613c1a565b5b815250506000600167ffffffffffffffff811115611a9d57611a9c613072565b5b604051908082528060200260200182016040528015611ad057816020015b6060815260200190600190039081611abb5790505b5090508383604051602001611ae69291906145b7565b60405160208183030381529060405281600081518110611b0957611b08613beb565b5b6020026020010181905250604051806040016040528083815260200182815250965084604051602001611b3c9190614608565b6040516020818303038152906040529750505050505092959194509250565b60006060611b67612dde565b6000606080611b768888612379565b809550819650829750839950849a5050505050506000600267ffffffffffffffff811115611ba757611ba6613072565b5b604051908082528060200260200182016040528015611bd55781602001602082028036833780820191505090505b509050600081600081518110611bee57611bed613beb565b5b60200260200101906003811115611c0857611c07613c1a565b5b90816003811115611c1c57611c1b613c1a565b5b81525050600181600181518110611c3657611c35613beb565b5b60200260200101906003811115611c5057611c4f613c1a565b5b90816003811115611c6457611c63613c1a565b5b815250506000600267ffffffffffffffff811115611c8557611c84613072565b5b604051908082528060200260200182016040528015611cb857816020015b6060815260200190600190039081611ca35790505b5090508381600081518110611cd057611ccf613beb565b5b60200260200101819052508281600181518110611cf057611cef613beb565b5b602002602001018190525060405180604001604052808381526020018281525095505050505092959194509250565b6000611d2e836000018361243f565b905092915050565b60008260000151519050611d4e818460000151612462565b60005b81811015611efe57600084600001518281518110611d7257611d71613beb565b5b60200260200101519050611d97816003811115611d9257611d91613c1a565b5b612541565b611da15750611eeb565b6000846000836003811115611db957611db8613c1a565b5b6003811115611dcb57611dca613c1a565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050611e05816120de565b600063b0ccbdf060e01b8b8b8b8b8b602001518981518110611e2a57611e29613beb565b5b6020026020010151604051602401611e469594939291906146ba565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050611ee582826040518060400160405280601781526020017f4175746f6d6174652e6f6e4372656174655461736b3a20000000000000000000815250612150565b50505050505b8080611ef690613c78565b915050611d51565b5050505050505050565b6000611f1783600001836125b2565b905092915050565b606081600001805480602002602001604051908101604052809291908181526020018280548015611f6f57602002820191906000526020600020905b815481526020019060010190808311611f5b575b50505050509050919050565b60008082519050600181148015611fd1575060006003811115611fa157611fa0613c1a565b5b83600081518110611fb557611fb4613beb565b5b60200260200101516003811115611fcf57611fce613c1a565b5b145b806120725750600281148015612026575060006003811115611ff657611ff5613c1a565b5b8360008151811061200a57612009613beb565b5b6020026020010151600381111561202457612023613c1a565b5b145b801561207157506001600381111561204157612040613c1a565b5b8360018151811061205557612054613beb565b5b6020026020010151600381111561206f5761206e613c1a565b5b145b5b15612081576001915050612087565b60009150505b919050565b600081805190602001209050919050565b6000600260038111156120b3576120b2613c1a565b5b8260038111156120c6576120c5613c1a565b5b036120d457600190506120d9565b600090505b919050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361214d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121449061478d565b60405180910390fd5b50565b600060608473ffffffffffffffffffffffffffffffffffffffff168460405161217991906147e9565b600060405180830381855af49150503d80600081146121b4576040519150601f19603f3d011682016040523d82523d6000602084013e6121b9565b606091505b508092508193505050816121d2576121d18184612622565b5b935093915050565b6000806121e78584612789565b90506121f78989898989866128c6565b80975081985050508973ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff160361226d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226490614872565b60405180910390fd5b6122d187878a6040516020016122849291906148da565b6040516020818303038152906040526000876040518060400160405280600f81526020017f4175746f6d6174652e657865633a200000000000000000000000000000000000815250612a39565b50809250506122e4898989898986612ad3565b5098975050505050505050565b60006001600381111561230757612306613c1a565b5b82600381111561231a57612319613c1a565b5b148061234a57506002600381111561233557612334613c1a565b5b82600381111561234857612347613c1a565b5b145b15612358576001905061235d565b600090505b919050565b60006123718360000183612c19565b905092915050565b6000606060006060806000806000806000806000808e8e81019061239d919061492e565b9750975097509750975097509750975085856040516020016123bf9190614608565b604051602081830303815290604052826123d957836123dc565b60005b93508386866040516020016123f29291906145b7565b6040516020818303038152906040528b8b604051602001612414929190613a45565b6040516020818303038152906040529c509c509c509c509c5050505050505050509295509295909350565b600080836001016000848152602001908152602001600020541415905092915050565b600182111561253d5760005b60018361247b9190614a00565b81101561253b5781818151811061249557612494613beb565b5b602002602001015160038111156124af576124ae613c1a565b5b826001836124bd9190614a34565b815181106124ce576124cd613beb565b5b602002602001015160038111156124e8576124e7613c1a565b5b11612528576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251f90614ad6565b60405180910390fd5b808061253390613c78565b91505061246e565b505b5050565b60006001600381111561255757612556613c1a565b5b82600381111561256a57612569613c1a565b5b148061259a57506002600381111561258557612584613c1a565b5b82600381111561259857612597613c1a565b5b145b156125a857600190506125ad565b600090505b919050565b60006125be838361243f565b61261757826000018290806001815401808255809150506001900390600052602060002001600090919091909150558260000180549050836001016000848152602001908152602001600020819055506001905061261c565b600090505b92915050565b6004602083516126329190614b25565b0361272d576000826020015190506308c379a060e01b817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036126d1576044830192508183604051602001612686929190614b92565b6040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c8919061366e565b60405180910390fd5b816040516020016126e29190614c02565b6040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612724919061366e565b60405180910390fd5b8060405160200161273e9190614c70565b6040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612780919061366e565b60405180910390fd5b606060008351905060008167ffffffffffffffff8111156127ad576127ac613072565b5b6040519080825280602002602001820160405280156127db5781602001602082028036833780820191505090505b50905060005b828110156128ba578460008783815181106127ff576127fe613beb565b5b6020026020010151600381111561281957612818613c1a565b5b600381111561282b5761282a613c1a565b5b815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682828151811061286d5761286c613beb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505080806128b290613c78565b9150506127e1565b50809250505092915050565b6000606060008451905060005b81811015612a26576129108682815181106128f1576128f0613beb565b5b6020026020010151600381111561290b5761290a613c1a565b5b612d2d565b15612a1357600063c10304f760e01b8b8b8b8b6040516024016129369493929190614c92565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050905060006129f18784815181106129ad576129ac613beb565b5b6020026020010151836040518060400160405280601681526020017f4175746f6d6174652e7072654578656343616c6c3a2000000000000000000000815250612150565b91505080806020019051810190612a089190614d4e565b809a50819b50505050505b8080612a1e90613c78565b9150506128d3565b5086869250925050965096945050505050565b600060608673ffffffffffffffffffffffffffffffffffffffff168587604051612a6391906147e9565b60006040518083038185875af1925050503d8060008114612aa0576040519150601f19603f3d011682016040523d82523d6000602084013e612aa5565b606091505b50809250819350505081158015612ab95750835b15612ac957612ac88184612622565b5b9550959350505050565b60008151905060005b81811015612c0f57612b19848281518110612afa57612af9613beb565b5b60200260200101516003811115612b1457612b13613c1a565b5b612d9e565b15612bfc57600063b2db0b4160e01b89898989604051602401612b3f9493929190614c92565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050612bf8848381518110612bb457612bb3613beb565b5b6020026020010151826040518060400160405280601781526020017f4175746f6d6174652e706f73744578656343616c6c3a20000000000000000000815250612150565b5050505b8080612c0790613c78565b915050612adc565b5050505050505050565b60008083600101600084815260200190815260200160002054905060008114612d21576000600182612c4b9190614a00565b9050600060018660000180549050612c639190614a00565b9050818114612cd2576000866000018281548110612c8457612c83613beb565b5b9060005260206000200154905080876000018481548110612ca857612ca7613beb565b5b90600052602060002001819055508387600101600083815260200190815260200160002081905550505b85600001805480612ce657612ce5614daa565b5b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050612d27565b60009150505b92915050565b600060016003811115612d4357612d42613c1a565b5b826003811115612d5657612d55613c1a565b5b1480612d86575060026003811115612d7157612d70613c1a565b5b826003811115612d8457612d83613c1a565b5b145b15612d945760019050612d99565b600090505b919050565b6000600380811115612db357612db2613c1a565b5b826003811115612dc657612dc5613c1a565b5b03612dd45760019050612dd9565b600090505b919050565b604051806040016040528060608152602001606081525090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612e3782612e0c565b9050919050565b612e4781612e2c565b8114612e5257600080fd5b50565b600081359050612e6481612e3e565b92915050565b600060208284031215612e8057612e7f612e02565b5b6000612e8e84828501612e55565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000819050919050565b612ed681612ec3565b82525050565b6000612ee88383612ecd565b60208301905092915050565b6000602082019050919050565b6000612f0c82612e97565b612f168185612ea2565b9350612f2183612eb3565b8060005b83811015612f52578151612f398882612edc565b9750612f4483612ef4565b925050600181019050612f25565b5085935050505092915050565b60006020820190508181036000830152612f798184612f01565b905092915050565b612f8a81612ec3565b8114612f9557600080fd5b50565b600081359050612fa781612f81565b92915050565b600060208284031215612fc357612fc2612e02565b5b6000612fd184828501612f98565b91505092915050565b612fe381612e2c565b82525050565b6000602082019050612ffe6000830184612fda565b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61303981613004565b811461304457600080fd5b50565b60008135905061305681613030565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6130aa82613061565b810181811067ffffffffffffffff821117156130c9576130c8613072565b5b80604052505050565b60006130dc612df8565b90506130e882826130a1565b919050565b600080fd5b600080fd5b600067ffffffffffffffff82111561311257613111613072565b5b602082029050602081019050919050565b600080fd5b6004811061313557600080fd5b50565b60008135905061314781613128565b92915050565b600061316061315b846130f7565b6130d2565b9050808382526020820190506020840283018581111561318357613182613123565b5b835b818110156131ac57806131988882613138565b845260208401935050602081019050613185565b5050509392505050565b600082601f8301126131cb576131ca6130f2565b5b81356131db84826020860161314d565b91505092915050565b600067ffffffffffffffff8211156131ff576131fe613072565b5b602082029050602081019050919050565b600080fd5b600067ffffffffffffffff8211156132305761322f613072565b5b61323982613061565b9050602081019050919050565b82818337600083830152505050565b600061326861326384613215565b6130d2565b90508281526020810184848401111561328457613283613210565b5b61328f848285613246565b509392505050565b600082601f8301126132ac576132ab6130f2565b5b81356132bc848260208601613255565b91505092915050565b60006132d86132d3846131e4565b6130d2565b905080838252602082019050602084028301858111156132fb576132fa613123565b5b835b8181101561334257803567ffffffffffffffff8111156133205761331f6130f2565b5b80860161332d8982613297565b855260208501945050506020810190506132fd565b5050509392505050565b600082601f830112613361576133606130f2565b5b81356133718482602086016132c5565b91505092915050565b6000604082840312156133905761338f61305c565b5b61339a60406130d2565b9050600082013567ffffffffffffffff8111156133ba576133b96130ed565b5b6133c6848285016131b6565b600083015250602082013567ffffffffffffffff8111156133ea576133e96130ed565b5b6133f68482850161334c565b60208301525092915050565b600080600080600060a0868803121561341e5761341d612e02565b5b600061342c88828901612e55565b955050602061343d88828901612e55565b945050604061344e88828901613047565b935050606086013567ffffffffffffffff81111561346f5761346e612e07565b5b61347b8882890161337a565b925050608061348c88828901612e55565b9150509295509295909350565b6134a281612ec3565b82525050565b60006020820190506134bd6000830184613499565b92915050565b600080fd5b60008083601f8401126134de576134dd6130f2565b5b8235905067ffffffffffffffff8111156134fb576134fa6134c3565b5b60208301915083600182028301111561351757613516613123565b5b9250929050565b600080fd5b6000604082840312156135395761353861351e565b5b81905092915050565b60008060008060006080868803121561355e5761355d612e02565b5b600061356c88828901612e55565b955050602086013567ffffffffffffffff81111561358d5761358c612e07565b5b613599888289016134c8565b9450945050604086013567ffffffffffffffff8111156135bc576135bb612e07565b5b6135c888828901613523565b92505060606135d988828901612e55565b9150509295509295909350565b600081519050919050565b600082825260208201905092915050565b60005b83811015613620578082015181840152602081019050613605565b8381111561362f576000848401525b50505050565b6000613640826135e6565b61364a81856135f1565b935061365a818560208601613602565b61366381613061565b840191505092915050565b600060208201905081810360008301526136888184613635565b905092915050565b600061369b82612e0c565b9050919050565b6136ab81613690565b82525050565b60006020820190506136c660008301846136a2565b92915050565b60008115159050919050565b6136e1816136cc565b81146136ec57600080fd5b50565b6000813590506136fe816136d8565b92915050565b60008060008060008060c0878903121561372157613720612e02565b5b600061372f89828a01612e55565b965050602061374089828a01612e55565b955050604061375189828a01613047565b945050606061376289828a016136ef565b935050608061377389828a01612e55565b92505060a061378489828a01612f98565b9150509295509295509295565b60008083601f8401126137a7576137a66130f2565b5b8235905067ffffffffffffffff8111156137c4576137c36134c3565b5b6020830191508360208202830111156137e0576137df613123565b5b9250929050565b60008083601f8401126137fd576137fc6130f2565b5b8235905067ffffffffffffffff81111561381a576138196134c3565b5b60208301915083602082028301111561383657613835613123565b5b9250929050565b6000806000806040858703121561385757613856612e02565b5b600085013567ffffffffffffffff81111561387557613874612e07565b5b61388187828801613791565b9450945050602085013567ffffffffffffffff8111156138a4576138a3612e07565b5b6138b0878288016137e7565b925092505092959194509250565b6000819050919050565b6138d1816138be565b81146138dc57600080fd5b50565b6000813590506138ee816138c8565b92915050565b600080600080600080600080610100898b03121561391557613914612e02565b5b60006139238b828c01612e55565b98505060206139348b828c01612e55565b975050604089013567ffffffffffffffff81111561395557613954612e07565b5b6139618b828c01613297565b965050606089013567ffffffffffffffff81111561398257613981612e07565b5b61398e8b828c01613523565b955050608061399f8b828c016138df565b94505060a06139b08b828c01612e55565b93505060c06139c18b828c016136ef565b92505060e06139d28b828c016136ef565b9150509295985092959890939650565b6139eb816138be565b82525050565b6000604082019050613a0660008301856139e2565b613a136020830184612fda565b9392505050565b60006fffffffffffffffffffffffffffffffff82169050919050565b613a3f81613a1a565b82525050565b6000604082019050613a5a6000830185613a36565b613a676020830184613a36565b9392505050565b600060208284031215613a8457613a83612e02565b5b6000613a9284828501613138565b91505092915050565b6000602082019050613ab060008301846139e2565b92915050565b6000819050919050565b6000613adb613ad6613ad184612e0c565b613ab6565b612e0c565b9050919050565b6000613aed82613ac0565b9050919050565b6000613aff82613ae2565b9050919050565b613b0f81613af4565b82525050565b6000602082019050613b2a6000830184613b06565b92915050565b6000819050919050565b613b4b613b4682612ec3565b613b30565b82525050565b6000613b5d8284613b3a565b60208201915081905092915050565b6000613b78368361337a565b9050919050565b7f4e4f545f415554484f52495a4544000000000000000000000000000000000000600082015250565b6000613bb5600e836135f1565b9150613bc082613b7f565b602082019050919050565b60006020820190508181036000830152613be481613ba8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613c83826138be565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613cb557613cb4613c49565b5b600182019050919050565b7f47656c61746f666965643a204f6e6c792067656c61746f000000000000000000600082015250565b6000613cf66017836135f1565b9150613d0182613cc0565b602082019050919050565b60006020820190508181036000830152613d2581613ce9565b9050919050565b600080fd5b600080fd5b600080fd5b60008083356001602003843603038112613d5857613d57613d2c565b5b80840192508235915067ffffffffffffffff821115613d7a57613d79613d31565b5b602083019250602082023603831315613d9657613d95613d36565b5b509250929050565b600080fd5b600080fd5b60008085851115613dbc57613dbb613d9e565b5b83861115613dcd57613dcc613da3565b5b6001850283019150848603905094509492505050565b7f4175746f6d6174652e66616c6c6261636b3a2046756e6374696f6e206e6f742060008201527f666f756e64000000000000000000000000000000000000000000000000000000602082015250565b6000613e3f6025836135f1565b9150613e4a82613de3565b604082019050919050565b60006020820190508181036000830152613e6e81613e32565b9050919050565b7f4175746f6d6174652e6372656174655461736b3a204475706c6963617465207460008201527f61736b0000000000000000000000000000000000000000000000000000000000602082015250565b6000613ed16023836135f1565b9150613edc82613e75565b604082019050919050565b60006020820190508181036000830152613f0081613ec4565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000613f2e82613f07565b613f388185613f12565b9350613f48818560208601613602565b613f5181613061565b840191505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60048110613f9957613f98613c1a565b5b50565b6000819050613faa82613f88565b919050565b6000613fba82613f9c565b9050919050565b613fca81613faf565b82525050565b6000613fdc8383613fc1565b60208301905092915050565b6000602082019050919050565b600061400082613f5c565b61400a8185613f67565b935061401583613f78565b8060005b8381101561404657815161402d8882613fd0565b975061403883613fe8565b925050600181019050614019565b5085935050505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600082825260208201905092915050565b600061409b82613f07565b6140a5818561407f565b93506140b5818560208601613602565b6140be81613061565b840191505092915050565b60006140d58383614090565b905092915050565b6000602082019050919050565b60006140f582614053565b6140ff818561405e565b9350836020820285016141118561406f565b8060005b8581101561414d578484038952815161412e85826140c9565b9450614139836140dd565b925060208a01995050600181019050614115565b50829750879550505050505092915050565b6000604083016000830151848203600086015261417c8282613ff5565b9150506020830151848203602086015261419682826140ea565b9150508091505092915050565b600060608201905081810360008301526141bd8186613f23565b905081810360208301526141d1818561415f565b90506141e06040830184612fda565b949350505050565b6141f181613004565b82525050565b600060a08201905061420c6000830188612fda565b6142196020830187612fda565b61422660408301866141e8565b8181036060830152614238818561415f565b90506142476080830184612fda565b9695505050505050565b60006040820190506142666000830185612fda565b6142736020830184612fda565b9392505050565b61428381613690565b811461428e57600080fd5b50565b6000815190506142a08161427a565b92915050565b600080604083850312156142bd576142bc612e02565b5b60006142cb85828601614291565b92505060206142dc85828601614291565b9150509250929050565b6142ef816136cc565b82525050565b600060c08201905061430a6000830189612fda565b6143176020830188612fda565b61432460408301876141e8565b61433160608301866142e6565b61433e6080830185612fda565b61434b60a0830184613499565b979650505050505050565b7f4175746f6d6174652e657865633a205461736b206e6f7420666f756e64000000600082015250565b600061438c601d836135f1565b915061439782614356565b602082019050919050565b600060208201905081810360008301526143bb8161437f565b9050919050565b60006060820190506143d76000830186612fda565b6143e46020830185612fda565b6143f160408301846139e2565b949350505050565b600060608201905081810360008301526144138186613f23565b90506144226020830185613499565b61442f60408301846142e6565b949350505050565b600060408201905061444c6000830185613499565b6144596020830184612fda565b9392505050565b60006020828403121561447657614475612e02565b5b600061448484828501614291565b91505092915050565b7f4175746f6d6174652e63616e63656c5461736b3a205461736b206e6f7420666f60008201527f756e640000000000000000000000000000000000000000000000000000000000602082015250565b60006144e96023836135f1565b91506144f48261448d565b604082019050919050565b60006020820190508181036000830152614518816144dc565b9050919050565b60008135905061452e8161427a565b92915050565b6000806000806080858703121561454e5761454d612e02565b5b600061455c8782880161451f565b945050602061456d87828801613047565b935050604061457e8782880161451f565b925050606085013567ffffffffffffffff81111561459f5761459e612e07565b5b6145ab87828801613297565b91505092959194509250565b60006040820190506145cc6000830185612fda565b81810360208301526145de8184613f23565b90509392505050565b6000819050919050565b6146026145fd82613004565b6145e7565b82525050565b600061461482846145f1565b60048201915081905092915050565b600080600080600060a0868803121561463f5761463e612e02565b5b600061464d8882890161451f565b955050602061465e88828901613047565b945050604061466f8882890161451f565b935050606086013567ffffffffffffffff8111156146905761468f612e07565b5b61469c88828901613297565b92505060806146ad8882890161451f565b9150509295509295909350565b600060a0820190506146cf6000830188613499565b6146dc6020830187612fda565b6146e96040830186612fda565b81810360608301526146fb8185613f23565b9050818103608083015261470f8184613f23565b90509695505050505050565b7f4175746f6d6174652e5f6d6f64756c65496e697469616c697365643a204e6f7460008201527f20696e6974000000000000000000000000000000000000000000000000000000602082015250565b60006147776025836135f1565b91506147828261471b565b604082019050919050565b600060208201905081810360008301526147a68161476a565b9050919050565b600081905092915050565b60006147c382613f07565b6147cd81856147ad565b93506147dd818560208601613602565b80840191505092915050565b60006147f582846147b8565b915081905092915050565b7f4175746f6d6174652e6f6e457865635461736b3a20657865634164647265737360008201527f2063616e6e6f74206265207461736b5472656173757279000000000000000000602082015250565b600061485c6037836135f1565b915061486782614800565b604082019050919050565b6000602082019050818103600083015261488b8161484f565b9050919050565b60008160601b9050919050565b60006148aa82614892565b9050919050565b60006148bc8261489f565b9050919050565b6148d46148cf82612e2c565b6148b1565b82525050565b60006148e682856147b8565b91506148f282846148c3565b6014820191508190509392505050565b61490b81613a1a565b811461491657600080fd5b50565b60008135905061492881614902565b92915050565b600080600080600080600080610100898b03121561494f5761494e612e02565b5b600061495d8b828c01614919565b985050602061496e8b828c01614919565b975050604061497f8b828c0161451f565b96505060606149908b828c01613047565b95505060806149a18b828c0161451f565b94505060a089013567ffffffffffffffff8111156149c2576149c1612e07565b5b6149ce8b828c01613297565b93505060c06149df8b828c0161451f565b92505060e06149f08b828c016136ef565b9150509295985092959890939650565b6000614a0b826138be565b9150614a16836138be565b925082821015614a2957614a28613c49565b5b828203905092915050565b6000614a3f826138be565b9150614a4a836138be565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614a7f57614a7e613c49565b5b828201905092915050565b7f4175746f6d6174652e5f76616c69644d6f64756c65733a20417363206f6e6c79600082015250565b6000614ac06020836135f1565b9150614acb82614a8a565b602082019050919050565b60006020820190508181036000830152614aef81614ab3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614b30826138be565b9150614b3b836138be565b925082614b4b57614b4a614af6565b5b828206905092915050565b600081905092915050565b6000614b6c826135e6565b614b768185614b56565b9350614b86818560208601613602565b80840191505092915050565b6000614b9e8285614b61565b9150614baa8284614b61565b91508190509392505050565b7f4e6f4572726f7253656c6563746f720000000000000000000000000000000000600082015250565b6000614bec600f83614b56565b9150614bf782614bb6565b600f82019050919050565b6000614c0e8284614b61565b9150614c1982614bdf565b915081905092915050565b7f556e657870656374656452657475726e64617461000000000000000000000000600082015250565b6000614c5a601483614b56565b9150614c6582614c24565b601482019050919050565b6000614c7c8284614b61565b9150614c8782614c4d565b915081905092915050565b6000608082019050614ca76000830187613499565b614cb46020830186612fda565b614cc16040830185612fda565b8181036060830152614cd38184613f23565b905095945050505050565b6000614cf1614cec84613215565b6130d2565b905082815260208101848484011115614d0d57614d0c613210565b5b614d18848285613602565b509392505050565b600082601f830112614d3557614d346130f2565b5b8151614d45848260208601614cde565b91505092915050565b60008060408385031215614d6557614d64612e02565b5b6000614d7385828601614291565b925050602083015167ffffffffffffffff811115614d9457614d93612e07565b5b614da085828601614d20565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26469706673582212201400b90b045d4f8a78a87a782f8d6724b0928497b5f34d98641cfc4b6558027164736f6c634300080e0033","0x1","0x0"] diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-a70026a0721b31912ca20d44ec274793.json b/contracts/cache/hardhat-network-fork/network-80001/request-a70026a0721b31912ca20d44ec274793.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-a70026a0721b31912ca20d44ec274793.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-a7041fb7071c025e5ba42bdb0e8e95b6.json b/contracts/cache/hardhat-network-fork/network-80001/request-a7041fb7071c025e5ba42bdb0e8e95b6.json new file mode 100644 index 0000000..3480802 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-a7041fb7071c025e5ba42bdb0e8e95b6.json @@ -0,0 +1 @@ +"0x3e1" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-a74f3b4197c10953c6755750019f612e.json b/contracts/cache/hardhat-network-fork/network-80001/request-a74f3b4197c10953c6755750019f612e.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-a74f3b4197c10953c6755750019f612e.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-a79d5e3499fb5c65774de455cc20a548.json b/contracts/cache/hardhat-network-fork/network-80001/request-a79d5e3499fb5c65774de455cc20a548.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-a79d5e3499fb5c65774de455cc20a548.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-a80f7a6daad22a461e967f9be0d88fd3.json b/contracts/cache/hardhat-network-fork/network-80001/request-a80f7a6daad22a461e967f9be0d88fd3.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-a80f7a6daad22a461e967f9be0d88fd3.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-a83f881845fe02dbe59b4f96be1a10cd.json b/contracts/cache/hardhat-network-fork/network-80001/request-a83f881845fe02dbe59b4f96be1a10cd.json new file mode 100644 index 0000000..8833e0c --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-a83f881845fe02dbe59b4f96be1a10cd.json @@ -0,0 +1 @@ +"0x00000000000000000000000040a1b99b581a0c1a18ca10b04de05627efa8a2e8" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-a9393eb5a355b6048cbf7156997227da.json b/contracts/cache/hardhat-network-fork/network-80001/request-a9393eb5a355b6048cbf7156997227da.json new file mode 100644 index 0000000..14f21d0 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-a9393eb5a355b6048cbf7156997227da.json @@ -0,0 +1 @@ +"0x788" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-a9b0b04225e2e658ca9fd86f9badb10c.json b/contracts/cache/hardhat-network-fork/network-80001/request-a9b0b04225e2e658ca9fd86f9badb10c.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-a9b0b04225e2e658ca9fd86f9badb10c.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-a9e771404b3631b369118c70e9fa9a8b.json b/contracts/cache/hardhat-network-fork/network-80001/request-a9e771404b3631b369118c70e9fa9a8b.json new file mode 100644 index 0000000..5c87ee9 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-a9e771404b3631b369118c70e9fa9a8b.json @@ -0,0 +1 @@ +["0x","0x0","0x0"] diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-aa22251ed028e0381d0ebd07746206a4.json b/contracts/cache/hardhat-network-fork/network-80001/request-aa22251ed028e0381d0ebd07746206a4.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-aa22251ed028e0381d0ebd07746206a4.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-aa2f0cdfa0e5bd1122b9215461f4b934.json b/contracts/cache/hardhat-network-fork/network-80001/request-aa2f0cdfa0e5bd1122b9215461f4b934.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-aa2f0cdfa0e5bd1122b9215461f4b934.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-aa6130394fde44cf61250bf9952feed7.json b/contracts/cache/hardhat-network-fork/network-80001/request-aa6130394fde44cf61250bf9952feed7.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-aa6130394fde44cf61250bf9952feed7.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-aba8da8fb9117b5bc82efc1e4bf9fc84.json b/contracts/cache/hardhat-network-fork/network-80001/request-aba8da8fb9117b5bc82efc1e4bf9fc84.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-aba8da8fb9117b5bc82efc1e4bf9fc84.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-ad8a8ca484a880a63138a4d16e059a3a.json b/contracts/cache/hardhat-network-fork/network-80001/request-ad8a8ca484a880a63138a4d16e059a3a.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-ad8a8ca484a880a63138a4d16e059a3a.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-ae1ec347a954a81b6f4164a2e6e74c5f.json b/contracts/cache/hardhat-network-fork/network-80001/request-ae1ec347a954a81b6f4164a2e6e74c5f.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-ae1ec347a954a81b6f4164a2e6e74c5f.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-aecc663e111b3bf217a7c40af4c279d5.json b/contracts/cache/hardhat-network-fork/network-80001/request-aecc663e111b3bf217a7c40af4c279d5.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-aecc663e111b3bf217a7c40af4c279d5.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-af12284de792a73e2572b913129c2eb0.json b/contracts/cache/hardhat-network-fork/network-80001/request-af12284de792a73e2572b913129c2eb0.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-af12284de792a73e2572b913129c2eb0.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-af3c1bec5d370dd7b73c21bf4025839a.json b/contracts/cache/hardhat-network-fork/network-80001/request-af3c1bec5d370dd7b73c21bf4025839a.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-af3c1bec5d370dd7b73c21bf4025839a.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-af4800f847609c0ddc5943bc5b6e1cf5.json b/contracts/cache/hardhat-network-fork/network-80001/request-af4800f847609c0ddc5943bc5b6e1cf5.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-af4800f847609c0ddc5943bc5b6e1cf5.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-b01270afca0053f801445fa92ebad685.json b/contracts/cache/hardhat-network-fork/network-80001/request-b01270afca0053f801445fa92ebad685.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-b01270afca0053f801445fa92ebad685.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-b0d45ad6abaa5c867af96e2eb6288bc8.json b/contracts/cache/hardhat-network-fork/network-80001/request-b0d45ad6abaa5c867af96e2eb6288bc8.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-b0d45ad6abaa5c867af96e2eb6288bc8.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-b0fb24da16e273bae485d54f0144ce73.json b/contracts/cache/hardhat-network-fork/network-80001/request-b0fb24da16e273bae485d54f0144ce73.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-b0fb24da16e273bae485d54f0144ce73.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-b15964b6e4e3d2db91879f14c662fd61.json b/contracts/cache/hardhat-network-fork/network-80001/request-b15964b6e4e3d2db91879f14c662fd61.json new file mode 100644 index 0000000..2cf351d --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-b15964b6e4e3d2db91879f14c662fd61.json @@ -0,0 +1 @@ +"0x375" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-b1d516c2e4d70f0b2c35f03981f9a916.json b/contracts/cache/hardhat-network-fork/network-80001/request-b1d516c2e4d70f0b2c35f03981f9a916.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-b1d516c2e4d70f0b2c35f03981f9a916.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-b1e4e5815ab6b8b0517bcc49b035623c.json b/contracts/cache/hardhat-network-fork/network-80001/request-b1e4e5815ab6b8b0517bcc49b035623c.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-b1e4e5815ab6b8b0517bcc49b035623c.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-b1fac0a0924876258bb9f39599eef394.json b/contracts/cache/hardhat-network-fork/network-80001/request-b1fac0a0924876258bb9f39599eef394.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-b1fac0a0924876258bb9f39599eef394.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-b2117cfd2f3287f1cda4e4108ee6b911.json b/contracts/cache/hardhat-network-fork/network-80001/request-b2117cfd2f3287f1cda4e4108ee6b911.json new file mode 100644 index 0000000..a9e8a4f --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-b2117cfd2f3287f1cda4e4108ee6b911.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000001" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-b29034157a35c66008f953aaa223c2ba.json b/contracts/cache/hardhat-network-fork/network-80001/request-b29034157a35c66008f953aaa223c2ba.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-b29034157a35c66008f953aaa223c2ba.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-b29dccadab0635d52c013035809c419b.json b/contracts/cache/hardhat-network-fork/network-80001/request-b29dccadab0635d52c013035809c419b.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-b29dccadab0635d52c013035809c419b.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-b2df1a1ded9e8477f2817a1a6bb14eb9.json b/contracts/cache/hardhat-network-fork/network-80001/request-b2df1a1ded9e8477f2817a1a6bb14eb9.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-b2df1a1ded9e8477f2817a1a6bb14eb9.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-b30a27e5c71630e3750f4607c4132bba.json b/contracts/cache/hardhat-network-fork/network-80001/request-b30a27e5c71630e3750f4607c4132bba.json new file mode 100644 index 0000000..e9243ff --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-b30a27e5c71630e3750f4607c4132bba.json @@ -0,0 +1 @@ +"0x000000000000000000002c2f3052d2dcd72f42d1300a7bbe02efe167bf660001" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-b320437a31174ab16780509575c7cad0.json b/contracts/cache/hardhat-network-fork/network-80001/request-b320437a31174ab16780509575c7cad0.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-b320437a31174ab16780509575c7cad0.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-b34824a3a66c152b15ea0137248eca5c.json b/contracts/cache/hardhat-network-fork/network-80001/request-b34824a3a66c152b15ea0137248eca5c.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-b34824a3a66c152b15ea0137248eca5c.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-b370a0fb1825ac2e0e02b887ac0a0686.json b/contracts/cache/hardhat-network-fork/network-80001/request-b370a0fb1825ac2e0e02b887ac0a0686.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-b370a0fb1825ac2e0e02b887ac0a0686.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-b3a6f83edafa23be140175b74eb08c37.json b/contracts/cache/hardhat-network-fork/network-80001/request-b3a6f83edafa23be140175b74eb08c37.json new file mode 100644 index 0000000..4e2258b --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-b3a6f83edafa23be140175b74eb08c37.json @@ -0,0 +1 @@ +["0x608060405234801561001057600080fd5b50600436106101ef5760003560e01c80637f0558e41161010f578063948eda5e116100a2578063e447cc1d11610071578063e447cc1d1461045f578063f047a2d914610472578063f2fde38b14610485578063f79a8e631461049857600080fd5b8063948eda5e14610413578063ab846f1a14610426578063cadf8f8514610439578063d099b6a01461044c57600080fd5b80638abe04e9116100de5780638abe04e9146103b95780638b93b3f5146103dc5780638da5cb5b146103ef5780638ecbd87b1461040057600080fd5b80637f0558e41461036457806380f70cba146103775780638369a0f1146103985780638a7ff2f7146103a657600080fd5b8063427942a411610187578063640b6cc911610156578063640b6cc914610323578063715018a61461033657806378707cb81461033e5780637dce4f811461035157600080fd5b8063427942a4146102c257806344864b25146102d557806345228235146102e85780635a9078181461031057600080fd5b806321964473116101c3578063219644731461027657806325c955c314610289578063325529081461029c57806342148deb146102af57600080fd5b806286d555146101f457806301a06b971461020957806311cf00f11461021c57806319df62ab1461024b575b600080fd5b610207610202366004611620565b6104ab565b005b610207610217366004611666565b610578565b61022f61022a366004611742565b6105fc565b6040805192151583526020830191909152015b60405180910390f35b61025e610259366004611666565b61062c565b6040516001600160a01b039091168152602001610242565b6102076102843660046117f0565b610660565b610207610297366004611666565b6106ec565b6102076102aa366004611873565b610748565b6102076102bd3660046118be565b6107c5565b6102076102d0366004611913565b610881565b6102076102e3366004611666565b610b31565b6102fb6102f6366004611666565b610b9c565b60408051928352602083019190915201610242565b61020761031e366004611990565b610be4565b610207610331366004611a0c565b610c9e565b610207610cae565b61020761034c366004611a4d565b610cc2565b61020761035f366004611873565b610cd4565b610207610372366004611a0c565b610d34565b61038a610385366004611a0c565b610da7565b604051908152602001610242565b61025e610385366004611a0c565b61038a6103b4366004611666565b610e18565b6103cc6103c7366004611666565b610e45565b6040519015158152602001610242565b6102076103ea366004611666565b610e60565b6000546001600160a01b031661025e565b61020761040e366004611666565b610eec565b610207610421366004611742565b610f5d565b610207610434366004611873565b610fcb565b610207610447366004611666565b611027565b61020761045a366004611aa0565b61105f565b61020761046d366004611666565b6110bf565b6103cc610480366004611873565b611130565b610207610493366004611b0a565b61114b565b6102076104a6366004611620565b6111c4565b80821115806104be575063ffffffff8210155b806104cd575063ffffffff8110155b156104eb576040516370b8cc0560e11b815260040160405180910390fd5b602082901b811761051e85857fe420d96e81cb4a6b2abb2366c4f93312d4e2ae878a7d4b22e73472fdad891f78846111cc565b6040805160018152602081018590529081018390526001600160a01b0380861691908716907f60a59221512cd8cbfb226200f7ba6f20dc4b38a3cf04993d17ea4e56d26aa186906060015b60405180910390a35050505050565b6105a382827fe420d96e81cb4a6b2abb2366c4f93312d4e2ae878a7d4b22e73472fdad891f7861127f565b60408051600080825260208201819052918101919091526001600160a01b0380831691908416907f60a59221512cd8cbfb226200f7ba6f20dc4b38a3cf04993d17ea4e56d26aa186906060015b60405180910390a35050565b600080600061060b8585611340565b9050600061061b87600084610da7565b428110159890975095505050505050565b600061065983837f9f60ae461adf056670e03ae602566409933242392cb06744f5747c9f38b05d09610da7565b9392505050565b828114610680576040516313ba1d5360e11b815260040160405180910390fd5b60005b818110156106e4576106d4868686848181106106a1576106a1611b27565b90506020020160208101906106b69190611b0a565b8585858181106106c8576106c8611b27565b90506020020135610d34565b6106dd81611b3d565b9050610683565b505050505050565b6107008260006106fb84611373565b61127f565b806001600160a01b0316826001600160a01b03167f8bfde939e79b7e6c603d67aa576e5b75a3f370334b14a9b0e5e263190034d31d60006040516105f0911515815260200190565b61077483837f9f60ae461adf056670e03ae602566409933242392cb06744f5747c9f38b05d0984611406565b60408051600181526001600160a01b03838116602083015280851692908616917f14e12f219a4f9023456dc7832e10119ab768b8ccefc8cb79bc6de0419781eeeb91015b60405180910390a3505050565b826107cf816114bb565b60005b8281101561087a57846001600160a01b031663787afde78585848181106107fb576107fb611b27565b90506020020160208101906108109190611b0a565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b15801561085157600080fd5b505af1158015610865573d6000803e3d6000fd5b505050508061087390611b3d565b90506107d2565b5050505050565b8461088b816114bb565b6001600160a01b03851615610949576040516311a5465560e21b81526001600160a01b038681166004830152871690634695195490602401600060405180830381600087803b1580156108dd57600080fd5b505af11580156108f1573d6000803e3d6000fd5b50505050846001600160a01b0316639903ad386040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561093057600080fd5b505af1158015610944573d6000803e3d6000fd5b505050505b60005b83811015610a6d57866001600160a01b03166306cecba886868481811061097557610975611b27565b905060200201602081019061098a9190611b0a565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b1580156109cb57600080fd5b505af11580156109df573d6000803e3d6000fd5b505050508484828181106109f5576109f5611b27565b9050602002016020810190610a0a9190611b0a565b6001600160a01b0316639903ad386040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610a4457600080fd5b505af1158015610a58573d6000803e3d6000fd5b5050505080610a6690611b3d565b905061094c565b506001600160a01b038216156106e4576040516354fbc49360e01b81526001600160a01b0383811660048301528716906354fbc49390602401600060405180830381600087803b158015610ac057600080fd5b505af1158015610ad4573d6000803e3d6000fd5b50505050816001600160a01b0316639903ad386040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610b1357600080fd5b505af1925050508015610b24575060015b156106e457505050505050565b81610b3b816114bb565b604051631ca0c40360e21b81526001600160a01b038381166004830152841690637283100c906024015b600060405180830381600087803b158015610b7f57600080fd5b505af1158015610b93573d6000803e3d6000fd5b50505050505050565b6000806000610bcc85857fe420d96e81cb4a6b2abb2366c4f93312d4e2ae878a7d4b22e73472fdad891f78610da7565b63ffffffff602082901c811697911695509350505050565b6001600160a01b038616610bfa57610bfa611b64565b6002546001600160a01b031615610c1357610c13611b64565b600280546001600160a01b0319166001600160a01b038816908117909155610c3d90600087610748565b610c4a86600086866104ab565b60005b81811015610b9357600254610c8e906001600160a01b03166000858585818110610c7957610c79611b27565b90506020020160208101906104349190611b0a565b610c9781611b3d565b9050610c4d565b610ca983838361127f565b505050565b610cb66114f2565b610cc0600061154c565b565b610cce84848484611406565b50505050565b610ce283836106fb8461159c565b60408051600181526001600160a01b038381166020830152600092820192909252818416918516907f168da2dec91b2e06e30d49955479383e76f71ba185807a8a5b75e2ed563e1d27906060016107b8565b610d6083837feae305fa863b373417e615b1044222e2806cefc7788d169ce6748a443c3f6cc4846111cc565b6040805160018152602081018390526001600160a01b0380851692908616917fc055c4a3853372c08a98805545379133f00f7261d956b9197729d67f37a82a5391016107b8565b6001600160a01b03808416600090815260016020908152604080832093861683529281528282208483529052908120805460ff16610e0c57506001600160a01b0384166000908152600160209081526040808320838052825280832085845290915290205b60010154949350505050565b600061065983837feae305fa863b373417e615b1044222e2806cefc7788d169ce6748a443c3f6cc4610da7565b6000610e5683600061038585611373565b6001149392505050565b803b6000819003610e8d57604051630db74dbd60e41b815261106860048201526024015b60405180910390fd5b50610ea4826000610e9d84611373565b60016111cc565b806001600160a01b0316826001600160a01b03167f8bfde939e79b7e6c603d67aa576e5b75a3f370334b14a9b0e5e263190034d31d60016040516105f0911515815260200190565b610f1782827feae305fa863b373417e615b1044222e2806cefc7788d169ce6748a443c3f6cc461127f565b60408051600080825260208201526001600160a01b0380841692908516917fc055c4a3853372c08a98805545379133f00f7261d956b9197729d67f37a82a5391016105f0565b6000610f698383611340565b9050610f778460008361127f565b826001600160a01b0316846001600160a01b03167fa22916b55c84301b9ba61d6494b1860339c075b3518e6db6f496bdf2a13d6ffc846000604051610fbd929190611bc0565b60405180910390a350505050565b610fd98383610e9d8461159c565b6040805160018082526001600160a01b03848116602084015292820152818416918516907f168da2dec91b2e06e30d49955479383e76f71ba185807a8a5b75e2ed563e1d27906060016107b8565b81611031816114bb565b6040516315a024e160e01b81526001600160a01b0383811660048301528416906315a024e190602401610b65565b600061106b8484611340565b905061107a85600083856111cc565b836001600160a01b0316856001600160a01b03167fa22916b55c84301b9ba61d6494b1860339c075b3518e6db6f496bdf2a13d6ffc8585604051610569929190611bc0565b6110ea82827f9f60ae461adf056670e03ae602566409933242392cb06744f5747c9f38b05d0961127f565b60408051600080825260208201526001600160a01b0380841692908516917f14e12f219a4f9023456dc7832e10119ab768b8ccefc8cb79bc6de0419781eeeb91016105f0565b600061114084846103858561159c565b600114949350505050565b6111536114f2565b6001600160a01b0381166111b85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610e84565b6111c18161154c565b50565b610cce848484845b836111d6816114bb565b60408051848152600160208201529081018390526001600160a01b0380861691908716907f33afe19ae6902b933890ff48190fabdc4cf7f5ab499be9c4d9d98e3b4562e3909060600160405180910390a350604080518082018252600180825260208083019485526001600160a01b039788166000908152828252848120979098168852958652828720948752939094529093209151825460ff19169015151782559151910155565b82611289816114bb565b826001600160a01b0316846001600160a01b03167f33afe19ae6902b933890ff48190fabdc4cf7f5ab499be9c4d9d98e3b4562e390846000806040516112e2939291909283529015156020830152604082015260600190565b60405180910390a350604080518082018252600080825260208083018281526001600160a01b03978816835260018083528584209790981683529581528382209482529390935291209051815460ff19169015151781559051910155565b60008282604051602001611355929190611be2565b60405160208183030381529060405280519060200120905092915050565b6040805160208101829052603960608201527f6f72672e7375706572666c7569642d66696e616e63652e7375706572666c756960808201527f642e61707057686974654c697374696e672e666163746f72790000000000000060a08201526001600160a01b0383169181019190915260009060c0015b604051602081830303815290604052805190602001209050919050565b83611410816114bb565b60408051848152600160208201526001600160a01b03848116828401529151868316928816917f33afe19ae6902b933890ff48190fabdc4cf7f5ab499be9c4d9d98e3b4562e390919081900360600190a35060408051808201825260018082526001600160a01b03938416602080840191825297851660009081528289528481209790951685529587528284209484529390955290209251835460ff19169015151783559051910155565b6002546001600160a01b038281169116146114d8576114d8611b64565b6000546001600160a01b031633146111c1576111c1611b64565b6000546001600160a01b03163314610cc05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e84565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040805160208101829052603260608201527f6f72672e7375706572666c7569642d66696e616e63652e7375706572666c756960808201527132173a393ab9ba32b22337b93bb0b93232b960711b60a08201526001600160a01b0383169181019190915260009060c0016113e9565b6001600160a01b03811681146111c157600080fd5b6000806000806080858703121561163657600080fd5b84356116418161160b565b935060208501356116518161160b565b93969395505050506040820135916060013590565b6000806040838503121561167957600080fd5b82356116848161160b565b915060208301356116948161160b565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126116c657600080fd5b813567ffffffffffffffff808211156116e1576116e161169f565b604051601f8301601f19908116603f011681019082821181831017156117095761170961169f565b8160405283815286602085880101111561172257600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060006060848603121561175757600080fd5b83356117628161160b565b925060208401356117728161160b565b9150604084013567ffffffffffffffff81111561178e57600080fd5b61179a868287016116b5565b9150509250925092565b60008083601f8401126117b657600080fd5b50813567ffffffffffffffff8111156117ce57600080fd5b6020830191508360208260051b85010111156117e957600080fd5b9250929050565b60008060008060006060868803121561180857600080fd5b85356118138161160b565b9450602086013567ffffffffffffffff8082111561183057600080fd5b61183c89838a016117a4565b9096509450604088013591508082111561185557600080fd5b50611862888289016117a4565b969995985093965092949392505050565b60008060006060848603121561188857600080fd5b83356118938161160b565b925060208401356118a38161160b565b915060408401356118b38161160b565b809150509250925092565b6000806000604084860312156118d357600080fd5b83356118de8161160b565b9250602084013567ffffffffffffffff8111156118fa57600080fd5b611906868287016117a4565b9497909650939450505050565b60008060008060006080868803121561192b57600080fd5b85356119368161160b565b945060208601356119468161160b565b9350604086013567ffffffffffffffff81111561196257600080fd5b61196e888289016117a4565b90945092505060608601356119828161160b565b809150509295509295909350565b60008060008060008060a087890312156119a957600080fd5b86356119b48161160b565b955060208701356119c48161160b565b94506040870135935060608701359250608087013567ffffffffffffffff8111156119ee57600080fd5b6119fa89828a016117a4565b979a9699509497509295939492505050565b600080600060608486031215611a2157600080fd5b8335611a2c8161160b565b92506020840135611a3c8161160b565b929592945050506040919091013590565b60008060008060808587031215611a6357600080fd5b8435611a6e8161160b565b93506020850135611a7e8161160b565b9250604085013591506060850135611a958161160b565b939692955090935050565b60008060008060808587031215611ab657600080fd5b8435611ac18161160b565b93506020850135611ad18161160b565b9250604085013567ffffffffffffffff811115611aed57600080fd5b611af9878288016116b5565b949793965093946060013593505050565b600060208284031215611b1c57600080fd5b81356106598161160b565b634e487b7160e01b600052603260045260246000fd5b600060018201611b5d57634e487b7160e01b600052601160045260246000fd5b5060010190565b634e487b7160e01b600052600160045260246000fd5b6000815180845260005b81811015611ba057602081850181015186830182015201611b84565b506000602082860101526020601f19601f83011685010191505092915050565b604081526000611bd36040830185611b7a565b90508260208301529392505050565b60608152604160608201527f6f72672e7375706572666c7569642d66696e616e63652e7375706572666c756960808201527f642e61707057686974654c697374696e672e726567697374726174696f6e4b6560a0820152607960f81b60c082015260018060a01b038316602082015260e060408201526000611c6760e0830184611b7a565b94935050505056fea264697066735822122011865ebfb4374f5ad435775d08e5552512f32a276bbd7642d41546b18b8c2a2a64736f6c63430008100033","0x1","0x0"] diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-b3db1eed0291790fb7c1eebeb3dd5661.json b/contracts/cache/hardhat-network-fork/network-80001/request-b3db1eed0291790fb7c1eebeb3dd5661.json new file mode 100644 index 0000000..af5e4c2 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-b3db1eed0291790fb7c1eebeb3dd5661.json @@ -0,0 +1 @@ +"0x00000000000000000000000000000000000000000000003635c9adc5dea00000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-b4356431ca9fd6a7a8f33877593da424.json b/contracts/cache/hardhat-network-fork/network-80001/request-b4356431ca9fd6a7a8f33877593da424.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-b4356431ca9fd6a7a8f33877593da424.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-b45bd6ffabf941d122cc1644459a6fae.json b/contracts/cache/hardhat-network-fork/network-80001/request-b45bd6ffabf941d122cc1644459a6fae.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-b45bd6ffabf941d122cc1644459a6fae.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-b4a97bd7a0bfb63bf07fc51c5cdb9318.json b/contracts/cache/hardhat-network-fork/network-80001/request-b4a97bd7a0bfb63bf07fc51c5cdb9318.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-b4a97bd7a0bfb63bf07fc51c5cdb9318.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-b4b83941755be923cec882b22a772538.json b/contracts/cache/hardhat-network-fork/network-80001/request-b4b83941755be923cec882b22a772538.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-b4b83941755be923cec882b22a772538.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-b4d16d50733eaa57e0f8283a90608073.json b/contracts/cache/hardhat-network-fork/network-80001/request-b4d16d50733eaa57e0f8283a90608073.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-b4d16d50733eaa57e0f8283a90608073.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-b4d7baf673121ab4fa3f3ba6757a4406.json b/contracts/cache/hardhat-network-fork/network-80001/request-b4d7baf673121ab4fa3f3ba6757a4406.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-b4d7baf673121ab4fa3f3ba6757a4406.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-b4f1b29558d6e250f3286282fd4aa51c.json b/contracts/cache/hardhat-network-fork/network-80001/request-b4f1b29558d6e250f3286282fd4aa51c.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-b4f1b29558d6e250f3286282fd4aa51c.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-b508d2cc717aeaede17dd6f64e6b58b2.json b/contracts/cache/hardhat-network-fork/network-80001/request-b508d2cc717aeaede17dd6f64e6b58b2.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-b508d2cc717aeaede17dd6f64e6b58b2.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-b59f4deea28edf5a2cc52065dd39a39f.json b/contracts/cache/hardhat-network-fork/network-80001/request-b59f4deea28edf5a2cc52065dd39a39f.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-b59f4deea28edf5a2cc52065dd39a39f.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-b626c3c468e2f6d032e65e3dbbd56082.json b/contracts/cache/hardhat-network-fork/network-80001/request-b626c3c468e2f6d032e65e3dbbd56082.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-b626c3c468e2f6d032e65e3dbbd56082.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-b65934dcbeed38e9f7784c91d2adcd1e.json b/contracts/cache/hardhat-network-fork/network-80001/request-b65934dcbeed38e9f7784c91d2adcd1e.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-b65934dcbeed38e9f7784c91d2adcd1e.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-b6a9cb60f4982af9ca1ddc133c0952b2.json b/contracts/cache/hardhat-network-fork/network-80001/request-b6a9cb60f4982af9ca1ddc133c0952b2.json new file mode 100644 index 0000000..4441112 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-b6a9cb60f4982af9ca1ddc133c0952b2.json @@ -0,0 +1 @@ +"0x22c4" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-b6e5044a4cbf4257492970752992aa36.json b/contracts/cache/hardhat-network-fork/network-80001/request-b6e5044a4cbf4257492970752992aa36.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-b6e5044a4cbf4257492970752992aa36.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-b714dc81f30ad966be0e03b45e679d9c.json b/contracts/cache/hardhat-network-fork/network-80001/request-b714dc81f30ad966be0e03b45e679d9c.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-b714dc81f30ad966be0e03b45e679d9c.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-b734b6ea4fca6c3d4eabca0b1c7f0166.json b/contracts/cache/hardhat-network-fork/network-80001/request-b734b6ea4fca6c3d4eabca0b1c7f0166.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-b734b6ea4fca6c3d4eabca0b1c7f0166.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-b755f917be47ef28a75198ae1aec677e.json b/contracts/cache/hardhat-network-fork/network-80001/request-b755f917be47ef28a75198ae1aec677e.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-b755f917be47ef28a75198ae1aec677e.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-b77d782eeca13b3555b728926cabf172.json b/contracts/cache/hardhat-network-fork/network-80001/request-b77d782eeca13b3555b728926cabf172.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-b77d782eeca13b3555b728926cabf172.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-b7f0736c4fdc9552a8a8d87079c2caca.json b/contracts/cache/hardhat-network-fork/network-80001/request-b7f0736c4fdc9552a8a8d87079c2caca.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-b7f0736c4fdc9552a8a8d87079c2caca.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-b83023caedc126e159bd6aca6587cf70.json b/contracts/cache/hardhat-network-fork/network-80001/request-b83023caedc126e159bd6aca6587cf70.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-b83023caedc126e159bd6aca6587cf70.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-b898540d46b161ec4ebb1cffe36afb74.json b/contracts/cache/hardhat-network-fork/network-80001/request-b898540d46b161ec4ebb1cffe36afb74.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-b898540d46b161ec4ebb1cffe36afb74.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-b8c7472b578cf13b3c3d52a280fdde73.json b/contracts/cache/hardhat-network-fork/network-80001/request-b8c7472b578cf13b3c3d52a280fdde73.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-b8c7472b578cf13b3c3d52a280fdde73.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-b8e4ea6bf7323aafdc1e4b902fe8bcab.json b/contracts/cache/hardhat-network-fork/network-80001/request-b8e4ea6bf7323aafdc1e4b902fe8bcab.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-b8e4ea6bf7323aafdc1e4b902fe8bcab.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-b90b33de2029b854235fd279711d263e.json b/contracts/cache/hardhat-network-fork/network-80001/request-b90b33de2029b854235fd279711d263e.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-b90b33de2029b854235fd279711d263e.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-b93c60c948701e874d306a86e17b271a.json b/contracts/cache/hardhat-network-fork/network-80001/request-b93c60c948701e874d306a86e17b271a.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-b93c60c948701e874d306a86e17b271a.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-b958e139f13abff8a544f698bbe906ae.json b/contracts/cache/hardhat-network-fork/network-80001/request-b958e139f13abff8a544f698bbe906ae.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-b958e139f13abff8a544f698bbe906ae.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-b98464b6428589c758225ca944426f38.json b/contracts/cache/hardhat-network-fork/network-80001/request-b98464b6428589c758225ca944426f38.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-b98464b6428589c758225ca944426f38.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-b9ae6461739aeb6adb350502bfe96ba4.json b/contracts/cache/hardhat-network-fork/network-80001/request-b9ae6461739aeb6adb350502bfe96ba4.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-b9ae6461739aeb6adb350502bfe96ba4.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-b9ba33cefb137642c9a82900c223ce61.json b/contracts/cache/hardhat-network-fork/network-80001/request-b9ba33cefb137642c9a82900c223ce61.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-b9ba33cefb137642c9a82900c223ce61.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-b9d15e13262cd5b0cf4635b333d30024.json b/contracts/cache/hardhat-network-fork/network-80001/request-b9d15e13262cd5b0cf4635b333d30024.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-b9d15e13262cd5b0cf4635b333d30024.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-bad17ecdfc0e676a61750d1b48a5d817.json b/contracts/cache/hardhat-network-fork/network-80001/request-bad17ecdfc0e676a61750d1b48a5d817.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-bad17ecdfc0e676a61750d1b48a5d817.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-bb00915849fd82fffbfced7cac37f9eb.json b/contracts/cache/hardhat-network-fork/network-80001/request-bb00915849fd82fffbfced7cac37f9eb.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-bb00915849fd82fffbfced7cac37f9eb.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-bb33a2683b900f5be1c8e8595976445b.json b/contracts/cache/hardhat-network-fork/network-80001/request-bb33a2683b900f5be1c8e8595976445b.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-bb33a2683b900f5be1c8e8595976445b.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-bb391849e2d9d24e3c7fd2b6960fb521.json b/contracts/cache/hardhat-network-fork/network-80001/request-bb391849e2d9d24e3c7fd2b6960fb521.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-bb391849e2d9d24e3c7fd2b6960fb521.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-bb43e873ce99fba57c2f26028a8fb6d3.json b/contracts/cache/hardhat-network-fork/network-80001/request-bb43e873ce99fba57c2f26028a8fb6d3.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-bb43e873ce99fba57c2f26028a8fb6d3.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-bb51dccc29fd7c5240c174ebbb3ec1b5.json b/contracts/cache/hardhat-network-fork/network-80001/request-bb51dccc29fd7c5240c174ebbb3ec1b5.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-bb51dccc29fd7c5240c174ebbb3ec1b5.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-bb8fe468746c1afaae3914d1dd11b6f6.json b/contracts/cache/hardhat-network-fork/network-80001/request-bb8fe468746c1afaae3914d1dd11b6f6.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-bb8fe468746c1afaae3914d1dd11b6f6.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-bc1737333bcbc2d82e0a6433af50040b.json b/contracts/cache/hardhat-network-fork/network-80001/request-bc1737333bcbc2d82e0a6433af50040b.json new file mode 100644 index 0000000..5c87ee9 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-bc1737333bcbc2d82e0a6433af50040b.json @@ -0,0 +1 @@ +["0x","0x0","0x0"] diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-bc37fe1ac5a72a6532faeaf9ae3d79ad.json b/contracts/cache/hardhat-network-fork/network-80001/request-bc37fe1ac5a72a6532faeaf9ae3d79ad.json new file mode 100644 index 0000000..9e0e6a0 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-bc37fe1ac5a72a6532faeaf9ae3d79ad.json @@ -0,0 +1 @@ +"0x000000000000000000000000cdf41a135c65d0013393b3793f92b4faf31032d0" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-bc531e5c212602d8c7da3f714fcf5f28.json b/contracts/cache/hardhat-network-fork/network-80001/request-bc531e5c212602d8c7da3f714fcf5f28.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-bc531e5c212602d8c7da3f714fcf5f28.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-bcdd40a605c86e22f1abafc67db967f4.json b/contracts/cache/hardhat-network-fork/network-80001/request-bcdd40a605c86e22f1abafc67db967f4.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-bcdd40a605c86e22f1abafc67db967f4.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-bce6e7a55cd9efe195c85b6ba217502a.json b/contracts/cache/hardhat-network-fork/network-80001/request-bce6e7a55cd9efe195c85b6ba217502a.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-bce6e7a55cd9efe195c85b6ba217502a.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-bd346acb9f25d21392968058a8e292a2.json b/contracts/cache/hardhat-network-fork/network-80001/request-bd346acb9f25d21392968058a8e292a2.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-bd346acb9f25d21392968058a8e292a2.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-bd8cb756f33ebb31807db51a0f25a1a8.json b/contracts/cache/hardhat-network-fork/network-80001/request-bd8cb756f33ebb31807db51a0f25a1a8.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-bd8cb756f33ebb31807db51a0f25a1a8.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-bd8e283289f5289162808237c28bd953.json b/contracts/cache/hardhat-network-fork/network-80001/request-bd8e283289f5289162808237c28bd953.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-bd8e283289f5289162808237c28bd953.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-bdef02a7818c9396292e8a32942879c7.json b/contracts/cache/hardhat-network-fork/network-80001/request-bdef02a7818c9396292e8a32942879c7.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-bdef02a7818c9396292e8a32942879c7.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-bdefec74aebf6dd034b0b51a4a5527d3.json b/contracts/cache/hardhat-network-fork/network-80001/request-bdefec74aebf6dd034b0b51a4a5527d3.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-bdefec74aebf6dd034b0b51a4a5527d3.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-be696ab4a68df9d5bb39d30c364802e4.json b/contracts/cache/hardhat-network-fork/network-80001/request-be696ab4a68df9d5bb39d30c364802e4.json new file mode 100644 index 0000000..8837d66 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-be696ab4a68df9d5bb39d30c364802e4.json @@ -0,0 +1 @@ +["0x60806040526004361061004e5760003560e01c806301ffc9a7146100675780633659cfe6146100a45780633e47158c146100cd5780634f1ef286146100f85780638356ca4f146101145761005d565b3661005d5761005b61013d565b005b61006561013d565b005b34801561007357600080fd5b5061008e60048036038101906100899190610708565b610186565b60405161009b9190610750565b60405180910390f35b3480156100b057600080fd5b506100cb60048036038101906100c691906107c9565b6102d8565b005b3480156100d957600080fd5b506100e2610369565b6040516100ef9190610805565b60405180910390f35b610112600480360381019061010d9190610885565b610378565b005b34801561012057600080fd5b5061013b600480360381019061013691906107c9565b610440565b005b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc543660008037600080366000845af43d806000803e816000811461018157816000f35b816000fd5b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806101e15750637f5828d060e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b156101ef57600190506102d3565b63ffffffff60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561022657600090506102d3565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490508073ffffffffffffffffffffffffffffffffffffffff166301ffc9a7846040518263ffffffff1660e01b815260040161028591906108f4565b602060405180830381865afa9250505080156102bf57506040513d601f19601f820116820180604052508101906102bc919061093b565b60015b6102cd5760009150506102d3565b80925050505b919050565b6102e06104c1565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461034d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610344906109c5565b60405180910390fd5b61036681604051806020016040528060008152506104ea565b50565b60006103736104c1565b905090565b6103806104c1565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103e4906109c5565b60405180910390fd5b61043b8383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506104ea565b505050565b6104486104c1565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ac906109c5565b60405180910390fd5b6104be81610619565b50565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610354905090565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc549050827f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc558273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f5570d70a002632a7b0b3c9304cc89efb62d8da9eca0dbd7752c83b737906829660405160405180910390a36000825111156106145760008373ffffffffffffffffffffffffffffffffffffffff16836040516105be9190610a5f565b600060405180830381855af49150503d80600081146105f9576040519150601f19603f3d011682016040523d82523d6000602084013e6105fe565b606091505b5050905080610612573d806000803e806000fd5b505b505050565b60006106236104c1565b9050817fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103558173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fdf435d422321da6b195902d70fc417c06a32f88379c20dd8f2a8da07088cec2960405160405180910390a35050565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6106e5816106b0565b81146106f057600080fd5b50565b600081359050610702816106dc565b92915050565b60006020828403121561071e5761071d6106a6565b5b600061072c848285016106f3565b91505092915050565b60008115159050919050565b61074a81610735565b82525050565b60006020820190506107656000830184610741565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006107968261076b565b9050919050565b6107a68161078b565b81146107b157600080fd5b50565b6000813590506107c38161079d565b92915050565b6000602082840312156107df576107de6106a6565b5b60006107ed848285016107b4565b91505092915050565b6107ff8161078b565b82525050565b600060208201905061081a60008301846107f6565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261084557610844610820565b5b8235905067ffffffffffffffff81111561086257610861610825565b5b60208301915083600182028301111561087e5761087d61082a565b5b9250929050565b60008060006040848603121561089e5761089d6106a6565b5b60006108ac868287016107b4565b935050602084013567ffffffffffffffff8111156108cd576108cc6106ab565b5b6108d98682870161082f565b92509250509250925092565b6108ee816106b0565b82525050565b600060208201905061090960008301846108e5565b92915050565b61091881610735565b811461092357600080fd5b50565b6000815190506109358161090f565b92915050565b600060208284031215610951576109506106a6565b5b600061095f84828501610926565b91505092915050565b600082825260208201905092915050565b7f4e4f545f415554484f52495a4544000000000000000000000000000000000000600082015250565b60006109af600e83610968565b91506109ba82610979565b602082019050919050565b600060208201905081810360008301526109de816109a2565b9050919050565b600081519050919050565b600081905092915050565b60005b83811015610a195780820151818401526020810190506109fe565b83811115610a28576000848401525b50505050565b6000610a39826109e5565b610a4381856109f0565b9350610a538185602086016109fb565b80840191505092915050565b6000610a6b8284610a2e565b91508190509291505056fea26469706673582212201c02f9868bea1f8e7392ef8bead12df2b877f9987cd7b4eafcdf405b99085bae64736f6c634300080c0033","0x1","0x64a2a3b9c4faf4ee4f"] diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-bf0c5c2aaee8e911cb5c98f41dbae6b8.json b/contracts/cache/hardhat-network-fork/network-80001/request-bf0c5c2aaee8e911cb5c98f41dbae6b8.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-bf0c5c2aaee8e911cb5c98f41dbae6b8.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-bf281b12a47c2080f90933eb4d933529.json b/contracts/cache/hardhat-network-fork/network-80001/request-bf281b12a47c2080f90933eb4d933529.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-bf281b12a47c2080f90933eb4d933529.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-bf2e47509fe9a052c2ae654315dd8443.json b/contracts/cache/hardhat-network-fork/network-80001/request-bf2e47509fe9a052c2ae654315dd8443.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-bf2e47509fe9a052c2ae654315dd8443.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-c09748b00d269a727b842a7d74d331ac.json b/contracts/cache/hardhat-network-fork/network-80001/request-c09748b00d269a727b842a7d74d331ac.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-c09748b00d269a727b842a7d74d331ac.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-c0be1377877b81aa2b111ed0ff6285ab.json b/contracts/cache/hardhat-network-fork/network-80001/request-c0be1377877b81aa2b111ed0ff6285ab.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-c0be1377877b81aa2b111ed0ff6285ab.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-c140a8993c8734e11dc81332beefbdaf.json b/contracts/cache/hardhat-network-fork/network-80001/request-c140a8993c8734e11dc81332beefbdaf.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-c140a8993c8734e11dc81332beefbdaf.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-c1a24e23379d580609f144e9f7edf52e.json b/contracts/cache/hardhat-network-fork/network-80001/request-c1a24e23379d580609f144e9f7edf52e.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-c1a24e23379d580609f144e9f7edf52e.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-c1e4f163b571daaa9e0eec26ddbf6319.json b/contracts/cache/hardhat-network-fork/network-80001/request-c1e4f163b571daaa9e0eec26ddbf6319.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-c1e4f163b571daaa9e0eec26ddbf6319.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-c25790d5d44b43ad6c3d849f06962bf3.json b/contracts/cache/hardhat-network-fork/network-80001/request-c25790d5d44b43ad6c3d849f06962bf3.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-c25790d5d44b43ad6c3d849f06962bf3.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-c26eeebf5e633062c8637704cb4ae537.json b/contracts/cache/hardhat-network-fork/network-80001/request-c26eeebf5e633062c8637704cb4ae537.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-c26eeebf5e633062c8637704cb4ae537.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-c2972f02a33b29d2194eee1ac9537f23.json b/contracts/cache/hardhat-network-fork/network-80001/request-c2972f02a33b29d2194eee1ac9537f23.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-c2972f02a33b29d2194eee1ac9537f23.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-c2ab0fea7996f2e1c8ead43cb4441859.json b/contracts/cache/hardhat-network-fork/network-80001/request-c2ab0fea7996f2e1c8ead43cb4441859.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-c2ab0fea7996f2e1c8ead43cb4441859.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-c2b51c776967c2dc449d10a0feab03d2.json b/contracts/cache/hardhat-network-fork/network-80001/request-c2b51c776967c2dc449d10a0feab03d2.json new file mode 100644 index 0000000..93fbb4a --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-c2b51c776967c2dc449d10a0feab03d2.json @@ -0,0 +1 @@ +"0x000000000000000000000000c28aba27c97a7fb345da3b1012cd526383ef3b0b" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-c2b7059fad1f3e2744ec3cf77ae87132.json b/contracts/cache/hardhat-network-fork/network-80001/request-c2b7059fad1f3e2744ec3cf77ae87132.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-c2b7059fad1f3e2744ec3cf77ae87132.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-c2e602802f74dd187a29796c622e6714.json b/contracts/cache/hardhat-network-fork/network-80001/request-c2e602802f74dd187a29796c622e6714.json new file mode 100644 index 0000000..f75df06 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-c2e602802f74dd187a29796c622e6714.json @@ -0,0 +1 @@ +["0x608060405234801561001057600080fd5b50600436106102a05760003560e01c8063768fabb011610167578063bb84cfa1116100ce578063c56a069d11610087578063c56a069d14610697578063cd312ec4146106b7578063e8dccb7d146106de578063f2e55caf14610700578063f373305214610708578063f9f522f41461071b57600080fd5b8063bb84cfa114610609578063bbe4fd5014610645578063bced3ddc1461064b578063bd1c448b1461065e578063bf42873414610671578063c4d66de81461068457600080fd5b80639d297e30116101205780639d297e3014610583578063a5dbbbcd146105aa578063ad3915c8146105bd578063b6d200de146105d0578063b724211e146105e3578063ba48b5f8146105f657600080fd5b8063768fabb01461050a578063787afde71461051d5780638ca48484146105305780639378fa1314610543578063989b0c3e146105685780639903ad381461057b57600080fd5b806350d75d251161020b578063670e77e3116101c4578063670e77e31461049a5780636ad3ca7d146104ad5780636b4f3335146104c05780637283100c146104d3578063731aed6e146104e657806374041e02146104f757600080fd5b806350d75d251461041657806352d1902d1461041e57806354fbc4931461044e57806357121e0c14610461578063572b6c051461047457806359a291411461048757600080fd5b806339255d5b1161025d57806339255d5b146103565780633ca3ad4e146103695780633f6c923a146103a45780634329d293146103c457806346951954146103e5578063486ff0cd146103f857600080fd5b806306cecba8146102a557806315a024e1146102ba5780631e6d0a84146102cd5780631e855cf3146102f6578063289b3c0d1461030957806333d608f114610334575b600080fd5b6102b86102b3366004613da3565b61074b565b005b6102b86102c8366004613da3565b61092b565b6102e06102db366004613e1d565b610b7f565b6040516102ed9190613f03565b60405180910390f35b6102e0610304366004613fd9565b610dca565b6000546201000090046001600160a01b03165b6040516001600160a01b0390911681526020016102ed565b61033e622dc6c081565b6040516001600160401b0390911681526020016102ed565b6102e0610364366004614028565b610de0565b610394610377366004613da3565b6001600160a01b0316600090815260046020526040902054151590565b60405190151581526020016102ed565b6103b76103b236600461409d565b610df6565b6040516102ed91906140d1565b6103d76103d23660046141b2565b610e07565b6040516102ed92919061425e565b6102b86103f3366004613da3565b611014565b604080518082019091526002815261763160f01b60208201526102e0565b61031c611110565b7fcd355cae2c435f8c5e0c626c4691d22fd85aa7422a424c6f0bced6e64c7aba745b6040519081526020016102ed565b6102b861045c366004613da3565b61113f565b6102b861046f366004613da3565b6113c2565b610394610482366004613da3565b611490565b6102e0610495366004614283565b61151a565b6102b86104a83660046142ce565b611600565b6102b86104bb3660046142ce565b611616565b6103946104ce366004613da3565b611621565b6102b86104e1366004613da3565b611645565b6003546001600160a01b031661031c565b6102e0610505366004613e1d565b6116ed565b6102e0610518366004614342565b611840565b6102b861052b366004613da3565b6119e0565b61039461053e366004613da3565b611b23565b610556610551366004613da3565b611be8565b60405160ff90911681526020016102ed565b6102e0610576366004614283565b611c09565b6102b8611ca0565b6103947f000000000000000000000000000000000000000000000000000000000000000081565b6104406105b83660046143bd565b611d5b565b6102b86105cb3660046143df565b611da9565b61031c6105de3660046143df565b611df4565b6102e06105f13660046143f8565b611e5f565b6102e0610604366004614454565b611f24565b6103946106173660046144d6565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b42610440565b6104406106593660046143bd565b61223b565b6102b861066c36600461450f565b612288565b61039461067f36600461455a565b6123a0565b6102b8610692366004613da3565b6123e1565b6106aa6106a53660046143df565b6124c5565b6040516102ed919061459b565b6103947f000000000000000000000000000000000000000000000000000000000000000081565b6103946106ec3660046143df565b600090815260026020526040902054151590565b61031c6125af565b6102b86107163660046145e8565b612677565b61072e610729366004613da3565b612783565b6040805193151584529115156020840152908201526060016102ed565b6000546201000090046001600160a01b0316331461077c576040516362e9152760e11b815260040160405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000156107bb576040516314f72c9f60e01b815260040160405180910390fd5b6000816001600160a01b0316637730599e6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081f9190614614565b60008181526002602052604081205491925081900361085a57604051639995b0c160e01b8152610bb960048201526024015b60405180910390fd5b600060016108688184614643565b8154811061087857610878614656565b6000918252602090912001546040516311a5465560e21b81526001600160a01b03868116600483015290911691508190634695195490602401600060405180830381600087803b1580156108cb57600080fd5b505af11580156108df573d6000803e3d6000fd5b5050604080518681526001600160a01b03881660208201527f9279aa773f2b588996032d8de89911555039f28b13a11a7c17074330bc082d9a935001905060405180910390a150505050565b6000546201000090046001600160a01b0316331461095c576040516362e9152760e11b815260040160405180910390fd5b6000816001600160a01b0316637730599e6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561099c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c09190614614565b600081815260026020526040902054909150156109f457604051635b5b42a560e01b8152610bb86004820152602401610851565b60015461010011610a1857604051630f85034f60e31b815260040160405180910390fd5b60007f0000000000000000000000000000000000000000000000000000000000000000610ad2576000604051610a4d90613d26565b604051809103906000f080158015610a69573d6000803e3d6000fd5b50604051634a0687ef60e01b81526001600160a01b03868116600483015291925090821690634a0687ef90602401600060405180830381600087803b158015610ab157600080fd5b505af1158015610ac5573d6000803e3d6000fd5b5050505080915050610ad5565b50815b6001805480820182557fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0384166001600160a01b0319909116179055546000838152600260205260409081902091909155517f878135063a6cfb3bc333e534b1fdc83f4f12221cad6705c31c0567048a8bd3d190610b7290849086909182526001600160a01b0316602082015260400190565b60405180910390a1505050565b6060610b8a33611b23565b610bab57604051639aca506b60e01b8152610ce46004820152602401610851565b82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610bed92508391506127d29050565b610bf957610bf961466c565b600080610c738a6000898c8c8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8f018190048102820181019092528d815292508d91508c90819084018382808284376000920191909152506127f292505050565b915091508115610d8357610c868161297f565b15610d1b5780806020019051810190610c9f91906146c7565b9350610caa846127d2565b610d165786610ccf5760405163a85ba64f60e01b815260146004820152602401610851565b85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929650610d1692508c9150601490506129d3565b610dbd565b86610d3c5760405163a85ba64f60e01b815260166004820152602401610851565b85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929650610d1692508c9150601690506129d3565b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509296505050505b5050509695505050505050565b6060610dd7338484612a48565b90505b92915050565b6060610dee33858585612c83565b949350505050565b610dfe613d33565b610dda82612d96565b60608083838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610e4c92508391506127d29050565b610e6c5760405163a85ba64f60e01b815260146004820152602401610851565b89610e7681611b23565b610e9757604051639aca506b60e01b8152610ce46004820152602401610851565b6000610ed887878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610df692505050565b6101208101519091506001600160a01b03163314610f095760405163066875e160e11b815260040160405180910390fd5b60608101805133909152604080516020601f8c018190048102820181019092528a8152908b908b908190840183828082843760009201919091525050505060a0830152610f5582612e61565b95506000610f9b8e8e8e8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250612f95915050565b965090508015610ffa5785806020019051810190610fb991906146c7565b9650610fc4876127d2565b610fd057610fd061466c565b610fd987610df6565b6001600160a01b03831660608201529250610ff383612e61565b9650611003565b6110038661304e565b505050505097509795505050505050565b6000546201000090046001600160a01b03163314611045576040516362e9152760e11b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000015611084576040516314f72c9f60e01b815260040160405180910390fd5b806001600160a01b031663cd312ec46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e691906146fb565b156111045760405163474e764160e01b815260040160405180910390fd5b61110d81613159565b50565b600061113a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905090565b6000546201000090046001600160a01b03163314611170576040516362e9152760e11b815260040160405180910390fd5b6003546001600160a01b03166112df577f00000000000000000000000000000000000000000000000000000000000000006112565760006040516111b390613d26565b604051809103906000f0801580156111cf573d6000803e3d6000fd5b50604051634a0687ef60e01b81526001600160a01b03848116600483015291925090821690634a0687ef90602401600060405180830381600087803b15801561121757600080fd5b505af115801561122b573d6000803e3d6000fd5b5050600380546001600160a01b0319166001600160a01b039490941693909317909255506112729050565b600380546001600160a01b0319166001600160a01b0383161790555b600360009054906101000a90046001600160a01b03166001600160a01b0316638129fc1c6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156112c257600080fd5b505af11580156112d6573d6000803e3d6000fd5b5050505061137e565b7f00000000000000000000000000000000000000000000000000000000000000001561131e576040516314f72c9f60e01b815260040160405180910390fd5b6003546040516311a5465560e21b81526001600160a01b03838116600483015290911690634695195490602401600060405180830381600087803b15801561136557600080fd5b505af1158015611379573d6000803e3d6000fd5b505050505b6003546040516001600160a01b0390911681527fce13a9895a1719ad4493b2ac1a9bfb36070566161abab408e7ecbe586da8d499906020015b60405180910390a150565b336000818152600460205260409020546113ef576040516302eb3f7160e61b815260040160405180910390fd5b6001600160a01b03821660009081526004602052604090205461142557604051634b5518af60e11b815260040160405180910390fd5b61142e82611be8565b60ff1661143a82611be8565b60ff161161145b57604051630447252760e41b815260040160405180910390fd5b6001600160a01b039081166000908152600560209081526040808320949093168252929092529020805460ff19166001179055565b600080546201000090046001600160a01b03166380f70cba30836114b386613393565b6040518463ffffffff1660e01b81526004016114d193929190614718565b602060405180830381865afa1580156114ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115129190614614565b151592915050565b606061152533611b23565b61154657604051639aca506b60e01b8152610ce46004820152602401610851565b83838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061158892508391506127d29050565b6115945761159461466c565b60006115d586868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610df692505050565b90508381610100018181516115ea919061473c565b9052506115f681612e61565b9695505050505050565b61161261160b61341b565b8383613483565b5050565b611612338383613483565b6001600160a01b038116600090815260046020526040812054618000161515610dda565b6000546201000090046001600160a01b03163314611676576040516362e9152760e11b815260040160405180910390fd5b600054604080516001600160a01b03620100009093048316815291831660208301527f13abda02e63c790d0e2818b251282cfe5cbe0a8abd69c54bf5d2260c0907bd2e910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b60606116f833611b23565b61171957604051639aca506b60e01b8152610ce46004820152602401610851565b82828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061175b92508391506127d29050565b6117675761176761466c565b6000806117e18a6001898c8c8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8f018190048102820181019092528d815292508d91508c90819084018382808284376000920191909152506127f292505050565b915091508115610dbd576117f48161297f565b15611814578080602001905181019061180d91906146c7565b9350610dbd565b866118355760405163a85ba64f60e01b815260166004820152602401610851565b610dbd8a60166129d3565b606061184b33611b23565b61186c57604051639aca506b60e01b8152610ce46004820152602401610851565b86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118ae92508391506127d29050565b6118ba576118ba61466c565b60006118fb89898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610df692505050565b905061192281606001516001600160a01b0316600090815260046020526040902054151590565b801561193657506001816000015160ff1610155b156119895760608101516001600160a01b039081166000908152600560209081526040808320938b168352929052205460ff166119895760405163a85ba64f60e01b8152601e6004820152602401610851565b80518161199582614764565b60ff169052506003602082015260c0810186905261010081018590526001600160a01b0380881661012083015284166101408201526119d381612e61565b9998505050505050505050565b6000546201000090046001600160a01b03163314611a11576040516362e9152760e11b815260040160405180910390fd5b60035460408051634a3852d960e11b815290516000926001600160a01b031691639470a5b29160048083019260209291908290030181865afa158015611a5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a7f9190614783565b6040516311a5465560e21b81526001600160a01b03808316600483015291925090831690634695195490602401600060405180830381600087803b158015611ac657600080fd5b505af1158015611ada573d6000803e3d6000fd5b50506040516001600160a01b038481168252851692507f840acbd291b38534819f47f875839277e502f40e1c7bfea2c5fc2c8017442cd391506020015b60405180910390a25050565b600080826001600160a01b0316637730599e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b889190614614565b6000818152600260205260409020549091508015801590610dee57506001600160a01b0384166001611bba8184614643565b81548110611bca57611bca614656565b6000918252602090912001546001600160a01b031614949350505050565b6001600160a01b03811660009081526004602052604081205460ff16610dda565b6060611c1433611b23565b611c3557604051639aca506b60e01b8152610ce46004820152602401610851565b6000611c7685858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610df692505050565b9050828161010001818151611c8b919061473c565b905250611c9781612e61565b95945050505050565b600054610100900460ff1615808015611cc05750600054600160ff909116105b80611cda5750303b158015611cda575060005460ff166001145b611cf65760405162461bcd60e51b8152600401610851906147a0565b6000805460ff191660011790558015611d19576000805461ff0019166101001790555b801561110d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020016113b7565b600081815260026020526040812054808203611d8e57604051639995b0c160e01b8152610bb96004820152602401610851565b611d99600182614643565b6001901b19841691505092915050565b7f000000000000000000000000000000000000000000000000000000000000000015611de8576040516305b93ebf60e41b815260040160405180910390fd5b61110d813360016139a1565b600081815260026020526040812054808203611e2757604051639995b0c160e01b8152610bb96004820152602401610851565b6001611e338183614643565b81548110611e4357611e43614656565b6000918252602090912001546001600160a01b03169392505050565b6060611e6a33611b23565b611e8b57604051639aca506b60e01b8152610ce46004820152602401610851565b84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611ecd92508391506127d29050565b611ed957611ed961466c565b611ee384846129d3565b85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929998505050505050505050565b606082828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f6892508391506127d29050565b611f885760405163a85ba64f60e01b815260146004820152602401610851565b6001600160a01b0387166000908152600460205260408120548891819003611fc35760405163163cbe4360e01b815260040160405180910390fd5b618000811615611fe557604051628e12d960e21b815260040160405180910390fd5b87878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525092506120269150839050613ac0565b90506001600160e01b031981166330d9c91560e01b148061205757506001600160e01b0319811663d86ed3e560e01b145b8061207257506001600160e01b03198116630221347d60e61b145b8061208d57506001600160e01b0319811663230dbd2960e01b145b806120a857506001600160e01b03198116635f9e7d7760e01b145b806120c357506001600160e01b031981166353c11f9960e01b145b156120e1576040516377a14afb60e11b815260040160405180910390fd5b600061212289898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610df692505050565b6101208101519091506001600160a01b03163314612153576040516311cfdef560e21b815260040160405180910390fd5b6060810180513390915261216682612e61565b97506000806121ad8f8f8f8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508f9250612f95915050565b91509150811561222057808060200190518101906121cb91906146c7565b99506121d68a6127d2565b6121f65760405163a85ba64f60e01b815260146004820152602401610851565b6121ff8a610df6565b6001600160a01b0384166060820152935061221984612e61565b9950612229565b6122298161304e565b50505050505050505095945050505050565b60008181526002602052604081205480820361226e57604051639995b0c160e01b8152610bb96004820152602401610851565b612279600182614643565b6001901b841791505092915050565b7f00000000000000000000000000000000000000000000000000000000000000001561238f5760006122f03284848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613b1c92505050565b6000805460405163407b865d60e11b81529293504292620100009091046001600160a01b0316916380f70cba9161232d9130918790600401614718565b602060405180830381865afa15801561234a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061236e9190614614565b101561238d576040516319ab84d160e01b815260040160405180910390fd5b505b61239b833360016139a1565b505050565b6000610dd783838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506127d292505050565b600054610100900460ff16158080156124015750600054600160ff909116105b8061241b5750303b15801561241b575060005460ff166001145b6124375760405162461bcd60e51b8152600401610851906147a0565b6000805460ff19166001179055801561245a576000805461ff0019166101001790555b6000805462010000600160b01b031916620100006001600160a01b038516021790558015611612576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b60606000806001805490506001600160401b038111156124e7576124e7613f16565b604051908082528060200260200182016040528015612510578160200160208202803683370190505b50925060009050600091505b6001548210156125a7576001821b841615612597576001828154811061254457612544614656565b6000918252602090912001546001600160a01b03168382612564816147ee565b93508151811061257657612576614656565b60200260200101906001600160a01b031690816001600160a01b0316815250505b6125a0826147ee565b915061251c565b825250919050565b6003546000906001600160a01b03166125ca576125ca61466c565b7f00000000000000000000000000000000000000000000000000000000000000001561260057506003546001600160a01b031690565b600360009054906101000a90046001600160a01b03166001600160a01b03166350d75d256040518163ffffffff1660e01b8152600401602060405180830381865afa158015612653573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113a9190614783565b333b600081900361269f57604051630db74dbd60e41b8152610c806004820152602401610851565b507f0000000000000000000000000000000000000000000000000000000000000000156127775760006126d133613b4f565b6000805460405163407b865d60e11b81529293509091620100009091046001600160a01b0316906380f70cba9061271090309085908790600401614718565b602060405180830381865afa15801561272d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127519190614614565b6001149050806127745760405163289533c560e01b815260040160405180910390fd5b50505b611612818360006139a1565b6001600160a01b0381166000908152600460209081526040808320815192830190915254808252158015929182916127ca57805161800081161515935064ff000000001691505b509193909250565b60008151600014158015610dda5750600654825160208401201492915050565b600060606001600160a01b03871661280c5761280c61466c565b6128168484613bc9565b935060005a9050861561289457876001600160a01b0316622dc6c06001600160401b0316866040516128489190614807565b6000604051808303818686fa925050503d8060008114612884576040519150601f19603f3d011682016040523d82523d6000602084013e612889565b606091505b509093509150612903565b876001600160a01b0316622dc6c06001600160401b0316866040516128b99190614807565b60006040518083038160008787f1925050503d80600081146128f7576040519150601f19603f3d011682016040523d82523d6000602084013e6128fc565b606091505b5090935091505b8261297457612913603f82614823565b5a1115612938578561292d576129288261304e565b612974565b61292888600a6129d3565b60405162461bcd60e51b815260206004820152601160248201527053463a206e656564206d6f72652067617360781b6044820152606401610851565b509550959350505050565b600060408251101561299357506000919050565b6020828101519060009082146129ad575060009392505050565b5060408301516129bc81613c80565b6129c7906040614845565b84511492505050919050565b6001600160a01b038216600090815260046020526040812054618000169003611612576001600160a01b038216600081815260046020526040908190208054618000179055517fbe3aa33bd245135e4e26b223d79d14ea479a47bff09f2b03c53838af1edbb14b90611b179084815260200190565b60065460609015612a6f5760405163a85ba64f60e01b815260156004820152602401610851565b6001600160a01b0383166000908152600460205260408120548491819003612aaa5760405163163cbe4360e01b815260040160405180910390fd5b618000811615612acc57604051628e12d960e21b815260040160405180910390fd5b836000612ad882613ac0565b90506001600160e01b031981166330d9c91560e01b1480612b0957506001600160e01b0319811663d86ed3e560e01b145b80612b2457506001600160e01b03198116630221347d60e61b145b80612b3f57506001600160e01b0319811663230dbd2960e01b145b80612b5a57506001600160e01b03198116635f9e7d7760e01b145b80612b7557506001600160e01b031981166353c11f9960e01b145b15612b93576040516377a14afb60e11b815260040160405180910390fd5b60408051610160810182526000808252600260208084019190915242838501526001600160a01b03808d16606085015260808401839052845191820190945281815260a083015260c0820181905260e0820181905261010082018190529189166101208201526101408101829052612c0a90612e61565b90506000612c19898984612f95565b975090508015612c675786806020019051810190612c3791906146c7565b9150612c42826127d2565b612c625760405163a85ba64f60e01b815260146004820152602401610851565b612c70565b612c708761304e565b5050600060065550929695505050505050565b60065460609015612caa5760405163a85ba64f60e01b815260156004820152602401610851565b83612cb481611b23565b612cd557604051639aca506b60e01b8152610ce46004820152602401610851565b6000612ce085613ac0565b6040805161016081018252600080825260016020830152929350612d639181014281526020018a6001600160a01b03168152602001846001600160e01b031916815260200187815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b0316815250612e61565b90506000612d72888884612f95565b9550905080612d8457612d848561304e565b50506000600655509095945050505050565b612d9e613d33565b60608083806020019051810190612db59190614858565b81519193509150600090612dd290840160209081019085016148b1565b60a08901526001600160e01b03191660808801526001600160a01b031660608701526040860152602081811c600f168187015260ff9091168552825160009250612e23919084018101908401614935565b6001600160a01b03908116610140890152166101208701526101008601526001600160801b03811660c086015260801c60e085015250919392505050565b60606001826000015160ff161115612e8f5760405163a85ba64f60e01b815260286004820152602401610851565b815160208084015160009260ff1664ff000000009190921b1617905060006080612ebc8560e00151613cb9565b6001600160801b0316901b612ed48560c00151613cb9565b6001600160801b0316179050818460400151856060015186608001518760a00151604051602001612f09959493929190614980565b60408051601f1981840301815282825261010087015161012088015161014089015160208601879052938501919091526001600160a01b03908116606085015290911660808301529060a00160408051601f1981840301815290829052612f73929160200161425e565b60408051601f1981840301815291905280516020820120600655949350505050565b600060606001600160a01b038516612faf57612faf61466c565b612fb98484613bc9565b9350846001600160a01b031684604051612fd39190614807565b6000604051808303816000865af19150503d8060008114613010576040519150601f19603f3d011682016040523d82523d6000602084013e613015565b606091505b50909250905081156130465780516000036130465760405163a85ba64f60e01b815260166004820152602401610851565b935093915050565b6004815110156130a05760405162461bcd60e51b815260206004820152601a60248201527f43616c6c5574696c733a207461726765742072657665727428290000000000006044820152606401610851565b602081015163b1b7848f60e01b6001600160e01b03198216016131505760408051808201825260208082527f43616c6c5574696c733a207461726765742070616e69636b65643a2030785f5f90820190815260248501517f43616c6c5574696c733a207461726765742070616e69636b65643a2030780000600482811c600f908116603090810160081b918516011791909117909252925162461bcd60e51b815291929161085191849101613f03565b81518060208401fd5b60006131837f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6001600160a01b0316036131d95760405162461bcd60e51b815260206004820152601d60248201527f5555505350726f786961626c653a206e6f742075706772616461626c650000006044820152606401610851565b806001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613217573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061323b9190614614565b7fcd355cae2c435f8c5e0c626c4691d22fd85aa7422a424c6f0bced6e64c7aba74146132b55760405162461bcd60e51b815260206004820152602360248201527f5555505350726f786961626c653a206e6f7420636f6d70617469626c65206c6f60448201526267696360e81b6064820152608401610851565b6001600160a01b038116300361330d5760405162461bcd60e51b815260206004820152601960248201527f5555505350726f786961626c653a2070726f7879206c6f6f70000000000000006044820152606401610851565b613335817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b7fe011bc04c286c344a8fcbb8de77f953da762c3e25d8cdea984147fc4168a5dcc7fcd355cae2c435f8c5e0c626c4691d22fd85aa7422a424c6f0bced6e64c7aba74604080519182526001600160a01b0384166020830152016113b7565b6040805160208101829052603260608201527f6f72672e7375706572666c7569642d66696e616e63652e7375706572666c756960808201527132173a393ab9ba32b22337b93bb0b93232b960711b60a08201526001600160a01b0383169181019190915260009060c0015b604051602081830303815290604052805190602001209050919050565b600060183610801590613432575061343233611490565b6134765760405162461bcd60e51b81526020600482015260156024820152742737ba103a393ab9ba32b2103337b93bb0b93232b960591b6044820152606401610851565b5060131936013560601c90565b60005b8181101561399b5760008383838181106134a2576134a2614656565b90506020028101906134b491906149cc565b6134c29060208101906149e2565b905060001963ffffffff8216016135b6576000808585858181106134e8576134e8614656565b90506020028101906134fa91906149cc565b613508906040810190614a08565b81019061351591906145e8565b9150915085858581811061352b5761352b614656565b905060200281019061353d91906149cc565b61354e906040810190602001613da3565b6001600160a01b03166362aa52878884846040518463ffffffff1660e01b815260040161357d93929190614718565b600060405180830381600087803b15801561359757600080fd5b505af11580156135ab573d6000803e3d6000fd5b50505050505061398a565b60011963ffffffff8216016136c05760008060008686868181106135dc576135dc614656565b90506020028101906135ee91906149cc565b6135fc906040810190614a08565b8101906136099190614a4e565b92509250925086868681811061362157613621614656565b905060200281019061363391906149cc565b613644906040810190602001613da3565b604051630b682aeb60e11b81526001600160a01b038a81166004830152858116602483015284811660448301526064820184905291909116906316d055d690608401600060405180830381600087803b1580156136a057600080fd5b505af11580156136b4573d6000803e3d6000fd5b5050505050505061398a565b60641963ffffffff8216016137b5578383838181106136e1576136e1614656565b90506020028101906136f391906149cc565b613704906040810190602001613da3565b6001600160a01b031663ca7894648686868681811061372557613725614656565b905060200281019061373791906149cc565b613745906040810190614a08565b81019061375291906143df565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561379857600080fd5b505af11580156137ac573d6000803e3d6000fd5b5050505061398a565b60651963ffffffff82160161381a578383838181106137d6576137d6614656565b90506020028101906137e891906149cc565b6137f9906040810190602001613da3565b6001600160a01b031663245887fc8686868681811061372557613725614656565b60c81963ffffffff8216016138b75760008085858581811061383e5761383e614656565b905060200281019061385091906149cc565b61385e906040810190614a08565b81019061386b9190614a8f565b915091506138af8787878781811061388557613885614656565b905060200281019061389791906149cc565b6138a8906040810190602001613da3565b8484612c83565b50505061398a565b60c91963ffffffff8216016139715761396b858585858181106138dc576138dc614656565b90506020028101906138ee91906149cc565b6138ff906040810190602001613da3565b86868681811061391157613911614656565b905060200281019061392391906149cc565b613931906040810190614a08565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612a4892505050565b5061398a565b60405163b477011560e01b815260040160405180910390fd5b50613994816147ee565b9050613486565b50505050565b3233036139c45760405163a85ba64f60e01b815260026004820152602401610851565b80156139f057813b80156139ee5760405163a85ba64f60e01b815260016004820152602401610851565b505b64ff000080ff198316151580613a07575060ff8316155b80613a155750618000831615155b15613a3357604051633d3200a960e21b815260040160405180910390fd5b6001600160a01b03821660009081526004602052604090205415613a6a576040516301b0a93560e01b815260040160405180910390fd5b60408051602080820183528582526001600160a01b038516600081815260049092528382209251909255915190917f0d540ad8f39e07d19909687352b9fa017405d93c91a6760981fbae9cf28bfef791a2505050565b6000600482511015613b145760405162461bcd60e51b815260206004820152601b60248201527f43616c6c5574696c733a20696e76616c69642063616c6c4461746100000000006044820152606401610851565b506020015190565b60008282604051602001613b31929190614ae8565b60405160208183030381529060405280519060200120905092915050565b6040805160208101829052603960608201527f6f72672e7375706572666c7569642d66696e616e63652e7375706572666c756960808201527f642e61707057686974654c697374696e672e666163746f72790000000000000060a08201526001600160a01b0383169181019190915260009060c0016133fe565b815180830151606091908015613bf2576040516367e9985b60e01b815260040160405180910390fd5b50601f1981018452825184908481613c0981613c80565b613c139190614643565b6001600160401b03811115613c2a57613c2a613f16565b6040519080825280601f01601f191660200182016040528015613c54576020820181803683370190505b50604051602001613c689493929190614b6d565b60405160208183030381529060405291505092915050565b60008082601f1611613c93576000613c96565b60015b60ff16613ca4602084614823565b613cae9190614845565b610dda906020614bbc565b60006001600160801b03821115613d225760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b6064820152608401610851565b5090565b61024a80614bdc83390190565b604080516101608101825260008082526020820181905291810182905260608082018390526080820183905260a082015260c0810182905260e081018290526101008101829052610120810182905261014081019190915290565b6001600160a01b038116811461110d57600080fd5b600060208284031215613db557600080fd5b8135613dc081613d8e565b9392505050565b60008083601f840112613dd957600080fd5b5081356001600160401b03811115613df057600080fd5b602083019150836020828501011115613e0857600080fd5b9250929050565b801515811461110d57600080fd5b60008060008060008060808789031215613e3657600080fd5b8635613e4181613d8e565b955060208701356001600160401b0380821115613e5d57600080fd5b613e698a838b01613dc7565b909750955060408901359150613e7e82613e0f565b90935060608801359080821115613e9457600080fd5b50613ea189828a01613dc7565b979a9699509497509295939492505050565b60005b83811015613ece578181015183820152602001613eb6565b50506000910152565b60008151808452613eef816020860160208601613eb3565b601f01601f19169290920160200192915050565b602081526000610dd76020830184613ed7565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613f5457613f54613f16565b604052919050565b60006001600160401b03821115613f7557613f75613f16565b50601f01601f191660200190565b600082601f830112613f9457600080fd5b8135613fa7613fa282613f5c565b613f2c565b818152846020838601011115613fbc57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215613fec57600080fd5b8235613ff781613d8e565b915060208301356001600160401b0381111561401257600080fd5b61401e85828601613f83565b9150509250929050565b60008060006060848603121561403d57600080fd5b833561404881613d8e565b925060208401356001600160401b038082111561406457600080fd5b61407087838801613f83565b9350604086013591508082111561408657600080fd5b5061409386828701613f83565b9150509250925092565b6000602082840312156140af57600080fd5b81356001600160401b038111156140c557600080fd5b610dee84828501613f83565b602081526140e560208201835160ff169052565b600060208301516140fb604084018260ff169052565b5060408301516060830152606083015161412060808401826001600160a01b03169052565b5060808301516001600160e01b0319811660a08401525060a08301516101608060c0850152614153610180850183613ed7565b915060c085015160e085015260e0850151610100818187015280870151915050610120818187015280870151915050610140614199818701836001600160a01b03169052565b909501516001600160a01b031693019290925250919050565b60008060008060008060006080888a0312156141cd57600080fd5b87356141d881613d8e565b965060208801356001600160401b03808211156141f457600080fd5b6142008b838c01613dc7565b909850965060408a013591508082111561421957600080fd5b6142258b838c01613dc7565b909650945060608a013591508082111561423e57600080fd5b5061424b8a828b01613dc7565b989b979a50959850939692959293505050565b6040815260006142716040830185613ed7565b8281036020840152611c978185613ed7565b60008060006040848603121561429857600080fd5b83356001600160401b038111156142ae57600080fd5b6142ba86828701613dc7565b909790965060209590950135949350505050565b600080602083850312156142e157600080fd5b82356001600160401b03808211156142f857600080fd5b818501915085601f83011261430c57600080fd5b81358181111561431b57600080fd5b8660208260051b850101111561433057600080fd5b60209290920196919550909350505050565b60008060008060008060a0878903121561435b57600080fd5b86356001600160401b0381111561437157600080fd5b61437d89828a01613dc7565b909750955050602087013561439181613d8e565b9350604087013592506060870135915060808701356143af81613d8e565b809150509295509295509295565b600080604083850312156143d057600080fd5b50508035926020909101359150565b6000602082840312156143f157600080fd5b5035919050565b6000806000806060858703121561440e57600080fd5b84356001600160401b0381111561442457600080fd5b61443087828801613dc7565b909550935050602085013561444481613d8e565b9396929550929360400135925050565b60008060008060006060868803121561446c57600080fd5b853561447781613d8e565b945060208601356001600160401b038082111561449357600080fd5b61449f89838a01613dc7565b909650945060408801359150808211156144b857600080fd5b506144c588828901613dc7565b969995985093965092949392505050565b600080604083850312156144e957600080fd5b82356144f481613d8e565b9150602083013561450481613d8e565b809150509250929050565b60008060006040848603121561452457600080fd5b8335925060208401356001600160401b0381111561454157600080fd5b61454d86828701613dc7565b9497909650939450505050565b6000806020838503121561456d57600080fd5b82356001600160401b0381111561458357600080fd5b61458f85828601613dc7565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b818110156145dc5783516001600160a01b0316835292840192918401916001016145b7565b50909695505050505050565b600080604083850312156145fb57600080fd5b823561460681613d8e565b946020939093013593505050565b60006020828403121561462657600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610dda57610dda61462d565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052600160045260246000fd5b600082601f83011261469357600080fd5b81516146a1613fa282613f5c565b8181528460208386010111156146b657600080fd5b610dee826020830160208701613eb3565b6000602082840312156146d957600080fd5b81516001600160401b038111156146ef57600080fd5b610dee84828501614682565b60006020828403121561470d57600080fd5b8151613dc081613e0f565b6001600160a01b039384168152919092166020820152604081019190915260600190565b808201828112600083128015821682158216171561475c5761475c61462d565b505092915050565b600060ff821660ff810361477a5761477a61462d565b60010192915050565b60006020828403121561479557600080fd5b8151613dc081613d8e565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6000600182016148005761480061462d565b5060010190565b60008251614819818460208701613eb3565b9190910192915050565b60008261484057634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610dda57610dda61462d565b6000806040838503121561486b57600080fd5b82516001600160401b038082111561488257600080fd5b61488e86838701614682565b935060208501519150808211156148a457600080fd5b5061401e85828601614682565b600080600080600060a086880312156148c957600080fd5b855194506020860151935060408601516148e281613d8e565b60608701519093506001600160e01b03198116811461490057600080fd5b60808701519092506001600160401b0381111561491c57600080fd5b61492888828901614682565b9150509295509295909350565b6000806000806080858703121561494b57600080fd5b8451935060208501519250604085015161496481613d8e565b606086015190925061497581613d8e565b939692955090935050565b858152602081018590526001600160a01b03841660408201526001600160e01b03198316606082015260a0608082018190526000906149c190830184613ed7565b979650505050505050565b60008235605e1983360301811261481957600080fd5b6000602082840312156149f457600080fd5b813563ffffffff81168114613dc057600080fd5b6000808335601e19843603018112614a1f57600080fd5b8301803591506001600160401b03821115614a3957600080fd5b602001915036819003821315613e0857600080fd5b600080600060608486031215614a6357600080fd5b8335614a6e81613d8e565b92506020840135614a7e81613d8e565b929592945050506040919091013590565b60008060408385031215614aa257600080fd5b82356001600160401b0380821115614ab957600080fd5b614ac586838701613f83565b93506020850135915080821115614adb57600080fd5b5061401e85828601613f83565b60608152604160608201527f6f72672e7375706572666c7569642d66696e616e63652e7375706572666c756960808201527f642e61707057686974654c697374696e672e726567697374726174696f6e4b6560a0820152607960f81b60c082015260018060a01b038316602082015260e060408201526000610dee60e0830184613ed7565b600085516020614b808285838b01613eb3565b81840191508682528551614b9981838501848a01613eb3565b8551920191614bad81838501848901613eb3565b91909101019695505050505050565b6000816000190483118215151615614bd657614bd661462d565b50029056fe608060405234801561001057600080fd5b5061022a806100206000396000f3fe6080604052600436106100225760003560e01c80634a0687ef1461003957610031565b366100315761002f610059565b005b61002f610059565b34801561004557600080fd5b5061002f6100543660046101c4565b61006b565b610069610064610171565b6101a0565b565b6001600160a01b0381166100c65760405162461bcd60e51b815260206004820152601760248201527f5555505350726f78793a207a65726f206164647265737300000000000000000060448201526064015b60405180910390fd5b60006100f07f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6001600160a01b0316146101465760405162461bcd60e51b815260206004820152601e60248201527f5555505350726f78793a20616c726561647920696e697469616c697a6564000060448201526064016100bd565b61016e817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b50565b600061019b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905090565b3660008037600080366000845af43d6000803e8080156101bf573d6000f35b3d6000fd5b6000602082840312156101d657600080fd5b81356001600160a01b03811681146101ed57600080fd5b939250505056fea2646970667358221220d5a8e007f2080dfe84e95d171924fb4d89e3b402dfeaf170fb33ddf8acb5db0e64736f6c63430008100033a26469706673582212207e7358d8c38d3d7f9c61008f30a1d9c6b5ae8cde86c3047042a2ec1ab65f5e8d64736f6c63430008100033","0x1","0x0"] diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-c2f5d85bb93624cc5738b339e2a5edca.json b/contracts/cache/hardhat-network-fork/network-80001/request-c2f5d85bb93624cc5738b339e2a5edca.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-c2f5d85bb93624cc5738b339e2a5edca.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-c32beaedd7c82850857d39f176842bb2.json b/contracts/cache/hardhat-network-fork/network-80001/request-c32beaedd7c82850857d39f176842bb2.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-c32beaedd7c82850857d39f176842bb2.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-c36f0a904e0601431f3ba16171ad72c2.json b/contracts/cache/hardhat-network-fork/network-80001/request-c36f0a904e0601431f3ba16171ad72c2.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-c36f0a904e0601431f3ba16171ad72c2.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-c39750e84e46cad8bdf8b5b7ca2826c9.json b/contracts/cache/hardhat-network-fork/network-80001/request-c39750e84e46cad8bdf8b5b7ca2826c9.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-c39750e84e46cad8bdf8b5b7ca2826c9.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-c3bccd3f5a5ec0403daae75be2e8f04a.json b/contracts/cache/hardhat-network-fork/network-80001/request-c3bccd3f5a5ec0403daae75be2e8f04a.json new file mode 100644 index 0000000..254caa2 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-c3bccd3f5a5ec0403daae75be2e8f04a.json @@ -0,0 +1 @@ +"0x629b158400000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-c47580e5229d87addefa73efd6f4ad5c.json b/contracts/cache/hardhat-network-fork/network-80001/request-c47580e5229d87addefa73efd6f4ad5c.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-c47580e5229d87addefa73efd6f4ad5c.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-c4f4adc744f9bb7d702ba9a3a26e56f3.json b/contracts/cache/hardhat-network-fork/network-80001/request-c4f4adc744f9bb7d702ba9a3a26e56f3.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-c4f4adc744f9bb7d702ba9a3a26e56f3.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-c599c709d0ef475789917c3fe50b715d.json b/contracts/cache/hardhat-network-fork/network-80001/request-c599c709d0ef475789917c3fe50b715d.json new file mode 100644 index 0000000..d1c7aaf --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-c599c709d0ef475789917c3fe50b715d.json @@ -0,0 +1 @@ +"0xc75" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-c69622977e83747e7e30afc42460027c.json b/contracts/cache/hardhat-network-fork/network-80001/request-c69622977e83747e7e30afc42460027c.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-c69622977e83747e7e30afc42460027c.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-c815b1a76237f116359454e7ad43bad0.json b/contracts/cache/hardhat-network-fork/network-80001/request-c815b1a76237f116359454e7ad43bad0.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-c815b1a76237f116359454e7ad43bad0.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-c854038129e618428c7f0f7681557ecc.json b/contracts/cache/hardhat-network-fork/network-80001/request-c854038129e618428c7f0f7681557ecc.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-c854038129e618428c7f0f7681557ecc.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-c919b581eebc5e72e6d46bafa7e3715e.json b/contracts/cache/hardhat-network-fork/network-80001/request-c919b581eebc5e72e6d46bafa7e3715e.json new file mode 100644 index 0000000..e299f23 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-c919b581eebc5e72e6d46bafa7e3715e.json @@ -0,0 +1 @@ +["0x60806040523661000b57005b600080356001600160e01b03191681527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c602081905260409091205481906001600160a01b0316806100785760405162461bcd60e51b815260040161006f906113fc565b60405180910390fd5b3660008037600080366000845af43d6000803e808015610097573d6000f35b3d6000fd5b60005b83518110156102bf5760008482815181106100ca57634e487b7160e01b600052603260045260246000fd5b6020026020010151602001519050600060028111156100f957634e487b7160e01b600052602160045260246000fd5b81600281111561011957634e487b7160e01b600052602160045260246000fd5b14156101845761017f85838151811061014257634e487b7160e01b600052603260045260246000fd5b60200260200101516000015186848151811061016e57634e487b7160e01b600052603260045260246000fd5b602002602001015160400151610426565b6102ac565b60018160028111156101a657634e487b7160e01b600052602160045260246000fd5b141561020c5761017f8583815181106101cf57634e487b7160e01b600052603260045260246000fd5b6020026020010151600001518684815181106101fb57634e487b7160e01b600052603260045260246000fd5b602002602001015160400151610650565b600281600281111561022e57634e487b7160e01b600052602160045260246000fd5b14156102945761017f85838151811061025757634e487b7160e01b600052603260045260246000fd5b60200260200101516000015186848151811061028357634e487b7160e01b600052603260045260246000fd5b60200260200101516040015161088d565b60405162461bcd60e51b815260040161006f906111b6565b50806102b781611498565b91505061009f565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb6738383836040516102f393929190610f58565b60405180910390a16103058282610966565b505050565b600061031461036a565b6004810180546001600160a01b038581166001600160a01b031983168117909355604051939450169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90565b6020825161039c91906114b3565b6004141561041157602082015162461bcd60e51b6001600160e01b0319821614156104005760448301925081836040516020016103da929190610ebe565b60408051601f198184030181529082905262461bcd60e51b825261006f91600401611051565b816040516020016103da9190610eed565b806040516020016103da9190610f20565b5050565b60008151116104475760405162461bcd60e51b815260040161006f9061110e565b600061045161036a565b90506001600160a01b0383166104795760405162461bcd60e51b815260040161006f906111fd565b6001600160a01b038316600090815260018201602052604090205461ffff811661051b576104bf8460405180606001604052806024815260200161151260249139610aaa565b6002820180546001600160a01b038616600081815260018087016020908152604083208201805461ffff191661ffff90961695909517909455845490810185559381529190912090910180546001600160a01b03191690911790555b60005b835181101561064957600084828151811061054957634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b031680156105995760405162461bcd60e51b815260040161006f906112f4565b6001600160a01b03871660008181526001878101602090815260408084208054938401815584528184206008840401805463ffffffff60079095166004026101000a948502191660e089901c94909402939093179092556001600160e01b031986168352889052902080546001600160a01b03191690911761ffff60a01b1916600160a01b61ffff8716021790558361063181611476565b9450505050808061064190611498565b91505061051e565b5050505050565b60008151116106715760405162461bcd60e51b815260040161006f9061110e565b600061067b61036a565b90506001600160a01b0383166106a35760405162461bcd60e51b815260040161006f906111fd565b6001600160a01b038316600090815260018201602052604090205461ffff8116610745576106e98460405180606001604052806024815260200161151260249139610aaa565b6002820180546001600160a01b038616600081815260018087016020908152604083208201805461ffff191661ffff90961695909517909455845490810185559381529190912090910180546001600160a01b03191690911790555b60005b835181101561064957600084828151811061077357634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b039081169087168114156107c95760405162461bcd60e51b815260040161006f90611349565b6107d38183610acb565b6001600160e01b03198216600081815260208781526040808320805461ffff60a01b1916600160a01b61ffff8b16021781556001600160a01b038c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281546001600160a01b0319161790558361087581611476565b9450505050808061088590611498565b915050610748565b60008151116108ae5760405162461bcd60e51b815260040161006f9061110e565b60006108b861036a565b90506001600160a01b038316156108e15760405162461bcd60e51b815260040161006f906113a6565b60005b825181101561096057600083828151811061090f57634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160e01b031981166000908152918590526040909120549091506001600160a01b031661094b8183610acb565b5050808061095890611498565b9150506108e4565b50505050565b6001600160a01b038216610998578051156109935760405162461bcd60e51b815260040161006f9061106b565b610422565b60008151116109b95760405162461bcd60e51b815260040161006f90611249565b6001600160a01b03821630146109eb576109eb826040518060600160405280602881526020016114ea60289139610aaa565b600080836001600160a01b031683604051610a069190610ea2565b600060405180830381855af49150503d8060008114610a41576040519150601f19603f3d011682016040523d82523d6000602084013e610a46565b606091505b50915091508161096057805115610a9257610a8d81604051806040016040528060148152602001732634b12234b0b6b7b73221baba1d2fb4b734ba1d60611b81525061038e565b610960565b60405162461bcd60e51b815260040161006f906110c8565b813b81816109605760405162461bcd60e51b815260040161006f9190611051565b6000610ad561036a565b90506001600160a01b038316610afd5760405162461bcd60e51b815260040161006f90611159565b6001600160a01b038316301415610b265760405162461bcd60e51b815260040161006f906112a6565b6001600160e01b03198216600090815260208281526040808320546001600160a01b0387168452600180860190935290832054600160a01b90910461ffff169291610b7091611433565b9050808214610c78576001600160a01b03851660009081526001840160205260408120805483908110610bb357634e487b7160e01b600052603260045260246000fd5b600091825260208083206008830401546001600160a01b038a168452600188019091526040909220805460079092166004026101000a90920460e01b925082919085908110610c1257634e487b7160e01b600052603260045260246000fd5b600091825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c929092029390931790556001600160e01b031992909216825284905260409020805461ffff60a01b1916600160a01b61ffff8516021790555b6001600160a01b03851660009081526001840160205260409020805480610caf57634e487b7160e01b600052603160045260246000fd5b60008281526020808220600860001990940193840401805463ffffffff600460078716026101000a0219169055919092556001600160e01b0319861682528490526040902080546001600160b01b031916905580610649576002830154600090610d1b90600190611433565b6001600160a01b038716600090815260018087016020526040909120015490915061ffff16808214610df6576000856002018381548110610d6c57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546002870180546001600160a01b039092169250829184908110610dab57634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b0394851617905592909116815260018781019092526040902001805461ffff191661ffff83161790555b84600201805480610e1757634e487b7160e01b600052603160045260246000fd5b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b03891682526001878101909152604090912001805461ffff1916905550505050505050565b6001600160a01b03169052565b60008151808452610e8e81602086016020860161144a565b601f01601f19169290920160200192915050565b60008251610eb481846020870161144a565b9190910192915050565b60008351610ed081846020880161144a565b835190830190610ee481836020880161144a565b01949350505050565b60008251610eff81846020870161144a565b6e2737a2b93937b929b2b632b1ba37b960891b920191825250600f01919050565b60008251610f3281846020870161144a565b73556e657870656374656452657475726e6461746160601b920191825250601401919050565b606080825284518282018190526000919060809081850190602080820287018401818b01875b8481101561102257898303607f19018652815180516001600160a01b03168452848101518985019060038110610fc257634e487b7160e01b8c52602160045260248cfd5b858701526040918201519185018a9052815190819052908501908a90898601905b8083101561100d5783516001600160e01b0319168252928701926001929092019190870190610fe3565b50978601979450505090830190600101610f7e565b50506110308289018b610e69565b8781036040890152611042818a610e76565b9b9a5050505050505050505050565b6000602082526110646020830184610e76565b9392505050565b6020808252603c908201527f4c69624469616d6f6e644375743a205f696e697420697320616464726573732860408201527f3029206275745f63616c6c64617461206973206e6f7420656d70747900000000606082015260800190565b60208082526026908201527f4c69624469616d6f6e644375743a205f696e69742066756e6374696f6e2072656040820152651d995c9d195960d21b606082015260800190565b6020808252602b908201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660408201526a1858d95d081d1bc818dd5d60aa1b606082015260800190565b60208082526037908201527f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360408201527f74696f6e207468617420646f65736e2774206578697374000000000000000000606082015260800190565b60208082526027908201527f4c69624469616d6f6e644375743a20496e636f727265637420466163657443756040820152663a20b1ba34b7b760c91b606082015260800190565b6020808252602c908201527f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260408201526b65206164647265737328302960a01b606082015260800190565b6020808252603d908201527f4c69624469616d6f6e644375743a205f63616c6c6461746120697320656d707460408201527f7920627574205f696e6974206973206e6f742061646472657373283029000000606082015260800190565b6020808252602e908201527f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560408201526d3a30b1363290333ab731ba34b7b760911b606082015260800190565b60208082526035908201527f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f6040820152746e207468617420616c72656164792065786973747360581b606082015260800190565b60208082526038908201527f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60408201527f6374696f6e20776974682073616d652066756e6374696f6e0000000000000000606082015260800190565b60208082526036908201527f4c69624469616d6f6e644375743a2052656d6f76652066616365742061646472604082015275657373206d757374206265206164647265737328302960501b606082015260800190565b6020808252601f908201527f47656c61746f3a2046756e6374696f6e20646f6573206e6f7420657869737400604082015260600190565b600082821015611445576114456114d3565b500390565b60005b8381101561146557818101518382015260200161144d565b838111156109605750506000910152565b600061ffff8083168181141561148e5761148e6114d3565b6001019392505050565b60006000198214156114ac576114ac6114d3565b5060010190565b6000826114ce57634e487b7160e01b81526012600452602481fd5b500690565b634e487b7160e01b600052601160045260246000fdfe4c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465a2646970667358221220cec609c0d247fd16c365c9801837d30d683dbd1cf0b08f0fd32d65fe5b885f2564736f6c63430008000033","0x1","0x18be8c642d8a0f287"] diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-c95736e46e618e8f3446f37f3730b83a.json b/contracts/cache/hardhat-network-fork/network-80001/request-c95736e46e618e8f3446f37f3730b83a.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-c95736e46e618e8f3446f37f3730b83a.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-c9f87106aaabf26809dc792c36319cae.json b/contracts/cache/hardhat-network-fork/network-80001/request-c9f87106aaabf26809dc792c36319cae.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-c9f87106aaabf26809dc792c36319cae.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-ca1765d3428700184d6f3a6e5aee8972.json b/contracts/cache/hardhat-network-fork/network-80001/request-ca1765d3428700184d6f3a6e5aee8972.json new file mode 100644 index 0000000..087a93b --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-ca1765d3428700184d6f3a6e5aee8972.json @@ -0,0 +1 @@ +["0x608060405234801561001057600080fd5b50600436106100b45760003560e01c806340c10f191161007157806340c10f191461021057806370a082311461023c57806395d89b4114610262578063a457c2d71461026a578063a9059cbb14610296578063dd62ed3e146102c2576100b4565b806306fdde03146100b9578063095ea7b31461013657806318160ddd1461017657806323b872dd14610190578063313ce567146101c657806339509351146101e4575b600080fd5b6100c16102f0565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100fb5781810151838201526020016100e3565b50505050905090810190601f1680156101285780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101626004803603604081101561014c57600080fd5b506001600160a01b038135169060200135610386565b604080519115158252519081900360200190f35b61017e6103a3565b60408051918252519081900360200190f35b610162600480360360608110156101a657600080fd5b506001600160a01b038135811691602081013590911690604001356103a9565b6101ce610430565b6040805160ff9092168252519081900360200190f35b610162600480360360408110156101fa57600080fd5b506001600160a01b038135169060200135610439565b6101626004803603604081101561022657600080fd5b506001600160a01b038135169060200135610487565b61017e6004803603602081101561025257600080fd5b50356001600160a01b0316610493565b6100c16104ae565b6101626004803603604081101561028057600080fd5b506001600160a01b03813516906020013561050f565b610162600480360360408110156102ac57600080fd5b506001600160a01b038135169060200135610577565b61017e600480360360408110156102d857600080fd5b506001600160a01b038135811691602001351661058b565b60038054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561037c5780601f106103515761010080835404028352916020019161037c565b820191906000526020600020905b81548152906001019060200180831161035f57829003601f168201915b5050505050905090565b600061039a6103936105b6565b84846105ba565b50600192915050565b60025490565b60006103b68484846106a6565b610426846103c26105b6565b61042185604051806060016040528060288152602001610a5a602891396001600160a01b038a166000908152600160205260408120906104006105b6565b6001600160a01b031681526020810191909152604001600020549190610801565b6105ba565b5060019392505050565b60055460ff1690565b600061039a6104466105b6565b8461042185600160006104576105b6565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490610898565b600061039a83836108f9565b6001600160a01b031660009081526020819052604090205490565b60048054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561037c5780601f106103515761010080835404028352916020019161037c565b600061039a61051c6105b6565b8461042185604051806060016040528060258152602001610acb60259139600160006105466105b6565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190610801565b600061039a6105846105b6565b84846106a6565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b0383166105ff5760405162461bcd60e51b8152600401808060200182810382526024815260200180610aa76024913960400191505060405180910390fd5b6001600160a01b0382166106445760405162461bcd60e51b8152600401808060200182810382526022815260200180610a126022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166106eb5760405162461bcd60e51b8152600401808060200182810382526025815260200180610a826025913960400191505060405180910390fd5b6001600160a01b0382166107305760405162461bcd60e51b81526004018080602001828103825260238152602001806109ef6023913960400191505060405180910390fd5b61073b8383836109e9565b61077881604051806060016040528060268152602001610a34602691396001600160a01b0386166000908152602081905260409020549190610801565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546107a79082610898565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156108905760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561085557818101518382015260200161083d565b50505050905090810190601f1680156108825780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156108f2576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b038216610954576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b610960600083836109e9565b60025461096d9082610898565b6002556001600160a01b0382166000908152602081905260409020546109939082610898565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212200dfedbae91651445f41c618ee28876acaa48b417eb67ec5fd8b36e75bad8687564736f6c63430007050033","0x1","0x0"] diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-cb50bae001d0e854e08541b78694feb8.json b/contracts/cache/hardhat-network-fork/network-80001/request-cb50bae001d0e854e08541b78694feb8.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-cb50bae001d0e854e08541b78694feb8.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-cbd36c1f98575fdf1ef2b1437873b0b6.json b/contracts/cache/hardhat-network-fork/network-80001/request-cbd36c1f98575fdf1ef2b1437873b0b6.json new file mode 100644 index 0000000..5c87ee9 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-cbd36c1f98575fdf1ef2b1437873b0b6.json @@ -0,0 +1 @@ +["0x","0x0","0x0"] diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-cbfc547b55aa1a078483e78ed3f69177.json b/contracts/cache/hardhat-network-fork/network-80001/request-cbfc547b55aa1a078483e78ed3f69177.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-cbfc547b55aa1a078483e78ed3f69177.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-cc8a5b49d29062ad0bf07f217a054b60.json b/contracts/cache/hardhat-network-fork/network-80001/request-cc8a5b49d29062ad0bf07f217a054b60.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-cc8a5b49d29062ad0bf07f217a054b60.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-ccb57835aa44c27ff084d24efad04f16.json b/contracts/cache/hardhat-network-fork/network-80001/request-ccb57835aa44c27ff084d24efad04f16.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-ccb57835aa44c27ff084d24efad04f16.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-cd0d487283642e3c09b14564dc95f424.json b/contracts/cache/hardhat-network-fork/network-80001/request-cd0d487283642e3c09b14564dc95f424.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-cd0d487283642e3c09b14564dc95f424.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-cd8fbe0e0d1ae5e3aa55b4d47e35c023.json b/contracts/cache/hardhat-network-fork/network-80001/request-cd8fbe0e0d1ae5e3aa55b4d47e35c023.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-cd8fbe0e0d1ae5e3aa55b4d47e35c023.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-ceef41a567c7a4c834a4ffefb6244153.json b/contracts/cache/hardhat-network-fork/network-80001/request-ceef41a567c7a4c834a4ffefb6244153.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-ceef41a567c7a4c834a4ffefb6244153.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-cf11a8cdc34f51c9266f2a061e898ebe.json b/contracts/cache/hardhat-network-fork/network-80001/request-cf11a8cdc34f51c9266f2a061e898ebe.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-cf11a8cdc34f51c9266f2a061e898ebe.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-cfe457e390a61b834021b8beb1a4cf68.json b/contracts/cache/hardhat-network-fork/network-80001/request-cfe457e390a61b834021b8beb1a4cf68.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-cfe457e390a61b834021b8beb1a4cf68.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-cff7ad85da8a2154c7a6cfef735138d3.json b/contracts/cache/hardhat-network-fork/network-80001/request-cff7ad85da8a2154c7a6cfef735138d3.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-cff7ad85da8a2154c7a6cfef735138d3.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-d0056bcff31c10ffbc615862ccd1a255.json b/contracts/cache/hardhat-network-fork/network-80001/request-d0056bcff31c10ffbc615862ccd1a255.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-d0056bcff31c10ffbc615862ccd1a255.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-d02b8d4c7ee2ca3e4c0a2103936a9a19.json b/contracts/cache/hardhat-network-fork/network-80001/request-d02b8d4c7ee2ca3e4c0a2103936a9a19.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-d02b8d4c7ee2ca3e4c0a2103936a9a19.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-d039d801e24bb727b0a9be3737a84a8a.json b/contracts/cache/hardhat-network-fork/network-80001/request-d039d801e24bb727b0a9be3737a84a8a.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-d039d801e24bb727b0a9be3737a84a8a.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-d0479f8489f72e7001bf269a359f907c.json b/contracts/cache/hardhat-network-fork/network-80001/request-d0479f8489f72e7001bf269a359f907c.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-d0479f8489f72e7001bf269a359f907c.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-d0544d116330395c1d31dbfd589173b0.json b/contracts/cache/hardhat-network-fork/network-80001/request-d0544d116330395c1d31dbfd589173b0.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-d0544d116330395c1d31dbfd589173b0.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-d058993cb96afb6e39b511daa5274299.json b/contracts/cache/hardhat-network-fork/network-80001/request-d058993cb96afb6e39b511daa5274299.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-d058993cb96afb6e39b511daa5274299.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-d06fda34701f7f1e4d73e72dbc6734a7.json b/contracts/cache/hardhat-network-fork/network-80001/request-d06fda34701f7f1e4d73e72dbc6734a7.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-d06fda34701f7f1e4d73e72dbc6734a7.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-d112ca7b41c0aecce78a435c358c728b.json b/contracts/cache/hardhat-network-fork/network-80001/request-d112ca7b41c0aecce78a435c358c728b.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-d112ca7b41c0aecce78a435c358c728b.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-d137e7f91abf1f85404ca12f17bea3cc.json b/contracts/cache/hardhat-network-fork/network-80001/request-d137e7f91abf1f85404ca12f17bea3cc.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-d137e7f91abf1f85404ca12f17bea3cc.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-d1b189552ccac1e379857d6266fe343a.json b/contracts/cache/hardhat-network-fork/network-80001/request-d1b189552ccac1e379857d6266fe343a.json new file mode 100644 index 0000000..302d19c --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-d1b189552ccac1e379857d6266fe343a.json @@ -0,0 +1 @@ +["0x608060405234801561001057600080fd5b50600436106101ce5760003560e01c806350d75d251161010457806394229ecb116100a2578063aabd266811610071578063aabd266814610483578063b4b333c614610496578063e6a1e888146104a9578063e8e7e2d1146104bc57600080fd5b806394229ecb1461043a5780639903ad381461044d5780639b2e48bc146104555780639cb28b721461030f57600080fd5b806362fc305e116100de57806362fc305e146103db5780637730599e146103ee578063811b3d40146104145780638d997f6e1461042757600080fd5b806350d75d25146103b857806352d1902d146103c057806354b770e3146103c857600080fd5b806326b0f536116101715780634b839e0b1161014b5780634b839e0b146103455780634c8b181f146103685780634fe9c2911461037b57806350209a62146103a557600080fd5b806326b0f5361461030f578063354b95901461031d578063469519541461033057600080fd5b8063062e56ec116101ad578063062e56ec1461024b57806309d256ef1461026b5780630f1ac4951461029a5780630f2f8f3c146102d057600080fd5b8062422bbe146101d357806304aafa491461020b5780630602f7db14610225575b600080fd5b6101e66101e1366004614616565b6104cf565b6040805193845260ff9092166020840152600b0b908201526060015b60405180910390f35b61021764010000000081565b604051908152602001610202565b610238610233366004614661565b610505565b604051600b9190910b8152602001610202565b61025e6102593660046146cf565b610526565b6040516102029190614784565b61027e610279366004614661565b610540565b6040805160ff9093168352600b9190910b602083015201610202565b6102ad6102a8366004614797565b610564565b60408051948552600b9390930b6020850152918301526060820152608001610202565b6102f77f000000000000000000000000e0312aeb2ce05d5f6d258b9ef898be631f32b8b881565b6040516001600160a01b039091168152602001610202565b61021760016001605f1b0381565b61025e61032b3660046147e2565b61059a565b61034361033e36600461486e565b61075f565b005b61035861035336600461488b565b6107bd565b6040519015158152602001610202565b61025e6103763660046148cc565b610894565b61038e610389366004614797565b61097f565b604080519215158352602083019190915201610202565b61025e6103b3366004614948565b610a61565b6102f7610b34565b610217610b63565b61025e6103d63660046146cf565b610bc7565b61025e6103e9366004614948565b610bdf565b7fa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd3610217565b61025e610422366004614998565b610c92565b6102176104353660046149dc565b610e8f565b61025e6104483660046147e2565b6110be565b610343611241565b61046861046336600461488b565b61134a565b60408051938452602084019290925290820152606001610202565b6102ad610491366004614661565b6113a4565b61025e6104a43660046148cc565b6113b6565b6102ad6104b7366004614616565b61144a565b6102386104ca366004614797565b611485565b60008060006104de858561149f565b925060006104ec878561150a565b8051602090910151959990985094965093945050505050565b600080610511846115cf565b50905061051e818461174a565b949350505050565b606061053785856000808787610c92565b95945050505050565b600080600061054f858561150a565b80516020909101519097909650945050505050565b6000806000806000610576878761178a565b805160208201516040830151606090930151919b909a509198509650945050505050565b606060006105de8885858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061184392505050565b9050866001600160a01b031681606001516001600160a01b0316036106165760405163edfa0d3b60e01b815260040160405180910390fd5b60008061062c8a6106278b8b611a07565b611a2f565b9150915060008060006106448d8d88606001516104cf565b925092509250610655826001611a76565b6106725760405163ac434b5f60e01b815260040160405180910390fd5b6000600b82900b60016001605f1b03148061069757508a600b0b8560200151600b0b12155b6106b95760208501516106aa908c614a27565b6106b49083614a27565b6106bb565b815b9050600081600b0b12156106e25760405163a0645c1f60e01b815260040160405180910390fd5b6106ee8e858584611ad1565b5050505061071c60408051608081018252600080825260208201819052918101829052606081019190915290565b6001600160a01b03808c1682528a8116602083015289166040820152600b88900b60608201526107508183858a8a89611b5a565b9b9a5050505050505050505050565b336001600160a01b037f000000000000000000000000eb796bdb90ffa0f28255275e16936d25d341860316146107b157604051632a94f67960e21b81526120d060048201526024015b60405180910390fd5b6107ba81611dd7565b50565b604051633acd4df360e21b81526001600160a01b03838116600483015260248201839052600091829186169063eb3537cc90604401606060405180830381865afa15801561080f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108339190614a54565b505090506000811261084957600191505061088d565b600080610855876115cf565b915091506000610865888861178a565b91505060006108778260400151611fdf565b90506108858582868661204d565b955050505050505b9392505050565b606060006108d88785858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061184392505050565b905060006108eb888884606001516104cf565b5091505060006108fc826002611a76565b90508061091c5760405163e30f1bff60e01b815260040160405180910390fd5b6040805160808101825260008082526020820181905291810182905260608101919091525b6001600160a01b03808b16825289811660208301528816604082015260006060820152610971818389898861209b565b9a9950505050505050505050565b6000806000846001600160a01b03166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e69190614a8d565b9050806001600160a01b031663bbe4fd506040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4a9190614aaa565b9150610a578585846107bd565b9250509250929050565b60606000610aa58785858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061184392505050565b9050610ad160408051608081018252600080825260208201819052918101829052606081019190915290565b6001600160a01b03808916825260608084015182166020840181905291891660408401819052600b89900b91840191909152600091610b0f91611a07565b9050600080610b22846000015184611a2f565b915091506107508482848b8b8a611b5a565b6000610b5e7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905090565b6000306001600160a01b0316637730599e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ba3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5e9190614aaa565b60606105378585600760016001605f1b038787610c92565b60606000610c238785858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061184392505050565b9050610c4f60408051608081018252600080825260208201819052918101829052606081019190915290565b6001600160a01b038089168252606080840151821660208401529088166040830152600b87900b90820152610c86818686856128a7565b98975050505050505050565b606082828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929350610cd99250879150612b349050565b610cf657604051631e4e759b60e21b815260040160405180910390fd5b6000610d388885858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061184392505050565b9050866001600160a01b031681606001516001600160a01b031603610d705760405163b0ed394d60e01b815260040160405180910390fd5b600085600b0b1215610d95576040516386e0377d60e01b815260040160405180910390fd5b6040805180820190915260ff87168152600b86900b60208201526060820151600090610dc1908a61149f565b9050896001600160a01b031663a1b2bf8b82610ddc85612b3b565b6040518363ffffffff1660e01b8152600401610df9929190614afe565b600060405180830381600087803b158015610e1357600080fd5b505af1158015610e27573d6000803e3d6000fd5b50505060608401516040805160ff8c168152600b8b900b60208201526001600160a01b03808e169450928316928e16917fc0d5d3a6ac18cc1769788c925e6e7fc89cd47e4270a42884736fa9b3ec09f3a8910160405180910390a45050509695505050505050565b600081600b0b600003610ea4575060006110b8565b6000836001600160a01b03166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ee4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f089190614a8d565b90506000816001600160a01b031663289b3c0d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6e9190614a8d565b90506000816001600160a01b03166380f70cba84887feae305fa863b373417e615b1044222e2806cefc7788d169ce6748a443c3f6cc46040518463ffffffff1660e01b8152600401610fc293929190614b17565b602060405180830381865afa158015610fdf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110039190614aaa565b90506000826001600160a01b03166380f70cba85897fe420d96e81cb4a6b2abb2366c4f93312d4e2ae878a7d4b22e73472fdad891f786040518463ffffffff1660e01b815260040161105793929190614b17565b602060405180830381865afa158015611074573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110989190614aaa565b9050602081901c63ffffffff166110b0838289612bb1565b955050505050505b92915050565b606060006111028885858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061184392505050565b9050866001600160a01b031681606001516001600160a01b03160361113a576040516325cc989b60e11b815260040160405180910390fd5b600080600061114e8b8b86606001516104cf565b92509250925061115f826000611a76565b61117c576040516328faadab60e21b815260040160405180910390fd5b6000600b82900b60016001605f1b031461119f5761119a8983614a27565b6111a1565b815b9050600081600b0b12156111c85760405163a0645c1f60e01b815260040160405180910390fd5b6111d48c858584611ad1565b5050505061120260408051608081018252600080825260208201819052918101829052606081019190915290565b6001600160a01b03808a168252888116602083015287166040820152600b86900b6060820152611234818686856128a7565b9998505050505050505050565b600054610100900460ff16158080156112615750600054600160ff909116105b8061127b5750303b15801561127b575060005460ff166001145b6112de5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016107a8565b6000805460ff191660011790558015611301576000805461ff0019166101001790555b80156107ba576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a150565b600080600080600061135c888861178a565b915091508115611399578060200151600b0b81600001518761137e9190614b3b565b6113889190614b62565b945080604001519350806060015192505b505093509350939050565b60008060008060006105768787611a2f565b606060006113fa8785858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061184392505050565b9050600061140d888884606001516104cf565b50915050600061141e826002611a76565b905061094160408051608081018252600080825260208201819052918101829052606081019190915290565b6000806000806000611460886106278989611a07565b805160208201516040830151606090930151919c909b50919950975095505050505050565b600080611492848461178a565b6020015195945050505050565b600082826040516020016114ec9291906060808252600c908201526b333637bba7b832b930ba37b960a11b60808201526001600160a01b0392831660208201529116604082015260a00190565b60405160208183030381529060405280519060200120905092915050565b6040805180820182526000808252602082018190529151636c2d9f2f60e01b8152306004820152602481018490526001604482015282906001600160a01b03861690636c2d9f2f90606401600060405180830381865afa158015611572573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261159a9190810190614c58565b90506115c2816000815181106115b2576115b2614cf2565b602002602001015160001c612c24565b92509250505b9250929050565b6000806000836001600160a01b03166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015611612573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116369190614a8d565b90506000816001600160a01b031663289b3c0d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611678573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169c9190614a8d565b90506000816001600160a01b03166380f70cba84887fe420d96e81cb4a6b2abb2366c4f93312d4e2ae878a7d4b22e73472fdad891f786040518463ffffffff1660e01b81526004016116f093929190614b17565b602060405180830381865afa15801561170d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117319190614aaa565b63ffffffff602082901c81169891169650945050505050565b600060016001605f1b0382111561177457604051631d4b0ae760e21b815260040160405180910390fd5b63ffffffff1982169150600061051e8484614d1e565b600061179461454f565b604051634b61cc3360e01b81523060048201526001600160a01b038481166024830152600060448301819052600160648401529190861690634b61cc33906084015b600060405180830381865afa1580156117f3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261181b9190810190614c58565b90506115c28160008151811061183357611833614cf2565b602002602001015160001c612c64565b61184b61457a565b336001600160a01b0316836001600160a01b03166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015611893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b79190614a8d565b6001600160a01b0316146119015760405162461bcd60e51b81526020600482015260116024820152701d5b985d5d1a1bdc9a5e9959081a1bdcdd607a1b60448201526064016107a8565b604051632fd0a1cd60e21b8152339063bf42873490611924908590600401614784565b602060405180830381865afa158015611941573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119659190614d42565b61199f5760405162461bcd60e51b815260206004820152600b60248201526a0d2dcecc2d8d2c840c6e8f60ab1b60448201526064016107a8565b604051631fb6491d60e11b81523390633f6c923a906119c2908590600401614784565b600060405180830381865afa1580156119df573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261088d9190810190614de4565b604080516001600160a01b0380851660208301528316918101919091526000906060016114ec565b6000611a3961454f565b604051636c2d9f2f60e01b815230600482015260248101849052600160448201526000906001600160a01b03861690636c2d9f2f906064016117d6565b600080826002811115611a8b57611a8b614eeb565b03611a9c57506001828116146110b8565b6001826002811115611ab057611ab0614eeb565b03611ac35750600182811c8116146110b8565b505060021c60019081161490565b6040805180820190915260ff83168152600b82900b60208201526001600160a01b03851663a1b2bf8b85611b0484612b3b565b6040518363ffffffff1660e01b8152600401611b21929190614afe565b600060405180830381600087803b158015611b3b57600080fd5b505af1158015611b4f573d6000803e3d6000fd5b505050505050505050565b60606000611b688884612cc4565b91505085611b8d57604051639995b0c160e01b81526103e960048201526024016107a8565b6040888101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa158015611bd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bfb9190614d42565b15611c5757611c5088604001518960000151838a89898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b925060019150612dc99050565b9150611ca2565b611c9f8860000151828988888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a925061356f915050565b91505b611cb58860000151896020015185613642565b7f000000000000000000000000e0312aeb2ce05d5f6d258b9ef898be631f32b8b86001600160a01b031615611dcc577f000000000000000000000000e0312aeb2ce05d5f6d258b9ef898be631f32b8b86001600160a01b0316636ac5bc318960000151604051806080016040528085602001516001600160a01b0316815260200185604001516001600160a01b0316815260200185606001516001600160a01b031681526020018560800151600b0b8152508a602001516040518463ffffffff1660e01b8152600401611d8a93929190614f01565b6020604051808303816000875af1925050508015611dc5575060408051601f3d908101601f19168201909252611dc291810190614d42565b60015b15611dcc57505b509695505050505050565b6000611e017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6001600160a01b031603611e575760405162461bcd60e51b815260206004820152601d60248201527f5555505350726f786961626c653a206e6f742075706772616461626c6500000060448201526064016107a8565b806001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eb99190614aaa565b611ec1610b63565b14611f1a5760405162461bcd60e51b815260206004820152602360248201527f5555505350726f786961626c653a206e6f7420636f6d70617469626c65206c6f60448201526267696360e81b60648201526084016107a8565b6001600160a01b0381163003611f725760405162461bcd60e51b815260206004820152601960248201527f5555505350726f786961626c653a2070726f7879206c6f6f700000000000000060448201526064016107a8565b611f9a817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b7fe011bc04c286c344a8fcbb8de77f953da762c3e25d8cdea984147fc4168a5dcc611fc3610b63565b604080519182526001600160a01b03841660208301520161133f565b60006001600160ff1b038211156120495760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b60648201526084016107a8565b5090565b60008360000361205f5750600061051e565b600061206b8587614f60565b905060006120798587614f88565b90506120858486614fb6565b61208f8284614f88565b13979650505050505050565b6040805160c0810182526000808252602082018190529181018290526060818101839052608082019290925260a0810182905260208701516001600160a01b03166120fd5760405163e961d6ff60e01b81526105dc60048201526024016107a8565b60408701516001600160a01b031661212c5760405163e961d6ff60e01b81526105dd60048201526024016107a8565b61213e87602001518860400151611a07565b8082526020808901516001600160a01b03908116918401919091526040808a01518216908401526060808601519091169083015260006080830181905260a0808601519084015288519091829161219491611a2f565b91509150816121ba57604051639995b0c160e01b81526103e960048201526024016107a8565b885160208a01516040808801519051633acd4df360e21b81526000936001600160a01b03169263eb3537cc92612206926004016001600160a01b03929092168252602082015260400190565b606060405180830381865afa158015612223573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122479190614a54565b5050905089602001516001600160a01b031686606001516001600160a01b03161415801561228f575089604001516001600160a01b031686606001516001600160a01b031614155b8015612299575088155b156123aa5760208a0151604051636b4f333560e01b81526001600160a01b0390911660048201523390636b4f333590602401602060405180830381865afa1580156122e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061230c9190614d42565b158015612384575060408a8101519051636b4f333560e01b81526001600160a01b0390911660048201523390636b4f333590602401602060405180830381865afa15801561235e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123829190614d42565b155b156123aa57600081126123aa5760405163ce11b5d160e01b815260040160405180910390fd5b60008112156123c8576123c88a600001518286858a60600151613720565b87878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060208b015160608801519196506001600160a01b039081169116036124be5760408a8101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa158015612467573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061248b9190614d42565b156124af576124a88a604001518b600001518685898b6002612dc9565b9450612783565b89516124a8908584888a61356f565b89604001516001600160a01b031686606001516001600160a01b0316036125f25760208a0151604051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa158015612529573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061254d9190614d42565b1561256a576124a88a602001518b600001518685898b6002612dc9565b60408a8101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa1580156125b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125d89190614d42565b156124af576124a860008b600001518685898b6002612dc9565b60208a0151604051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa15801561263c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126609190614d42565b801561266c5750600081125b156126e65760208a0151604051635b92108f60e11b8152339163b724211e9161269c918991600b90600401614fc9565b6000604051808303816000875af11580156126bb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526126e39190810190614ff7565b94505b60408a8101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa158015612730573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127549190614d42565b15612771576124a88a604001518b600001518685898b6002612dc9565b8951612780908584888a61356f565b94505b7f000000000000000000000000e0312aeb2ce05d5f6d258b9ef898be631f32b8b86001600160a01b03161561289a577f000000000000000000000000e0312aeb2ce05d5f6d258b9ef898be631f32b8b86001600160a01b0316632742e95a8b60000151604051806080016040528088602001516001600160a01b0316815260200188604001516001600160a01b0316815260200188606001516001600160a01b031681526020018860800151600b0b81525085602001516040518463ffffffff1660e01b815260040161285893929190614f01565b6020604051808303816000875af1925050508015612893575060408051601f3d908101601f1916820190925261289091810190614d42565b60015b1561289a57505b5050505095945050505050565b60606000806128b68785612cc4565b915091506000806128cb896000015185611a2f565b9150915081156128f257604051635b5b42a560e01b81526103e860048201526024016107a8565b6040898101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa15801561293c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129609190614d42565b156129b9576129b289604001518a6000015185848c8c8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052508f93509150612dc99050565b9450612a04565b612a01896000015184838b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508d925061356f915050565b94505b612a1789600001518a6020015188613642565b7f000000000000000000000000e0312aeb2ce05d5f6d258b9ef898be631f32b8b86001600160a01b031615612b28577f000000000000000000000000e0312aeb2ce05d5f6d258b9ef898be631f32b8b86001600160a01b031663e3d8fefe8a60000151604051806080016040528087602001516001600160a01b0316815260200187604001516001600160a01b0316815260200187606001516001600160a01b031681526020018760800151600b0b8152506040518363ffffffff1660e01b8152600401612ae692919061502c565b6020604051808303816000875af1925050508015612b21575060408051601f3d908101601f19168201909252612b1e91810190614d42565b60015b15612b2857505b50505050949350505050565b60f8161590565b606060008260200151600b0b1215612b5557612b5561507a565b60408051600180825281830190925290602080830190803683370190505090508160200151600b0b6080836000015160ff16901b1760001b81600081518110612ba057612ba0614cf2565b602002602001018181525050919050565b60008082600b0b1215612bd7576040516348d6568b60e11b815260040160405180910390fd5b60016001605f1b03612bed84600b85900b615090565b1115612c0c57604051630c9c55c160e01b815260040160405180910390fd5b6000612c18838561392c565b90506105378582613970565b6040805180820190915260008082526020820152811580159190612c5f5760016001605f1b038316600b0b6020820152608083901c60ff1681525b915091565b6000612c6e61454f565b821580159250612c5f5760e083901c8152608083901c6bffffffffffffffffffffffff16600b0b6020808301919091526bffffffffffffffff0000000084821c811660408401529084901b166060820152915091565b6040805160c08101825260008082526020820181905291810182905260608082018390526080820183905260a082015260408401516001600160a01b0316612d235760405163e961d6ff60e01b81526105dd60048201526024016107a8565b612d3584602001518560400151611a07565b8082526020808601516001600160a01b0390811691840182905260408088015182169085018190526060808801519092168286015290870151600b0b608085015260a0808701519085015291935003612da15760405163a47338ef60e01b815260040160405180910390fd5b60008160800151600b0b136115c8576040516348d6568b60e11b815260040160405180910390fd5b82612dd26145d5565b6001600160a01b038916156130d6576000612e67898b8a600001518b602001518c60400151604051602001612e1d9291906001600160a01b0392831681529116602082015260400190565b60408051601f1981840301815260e08301825260006080840181905260a0840181905260c08401526001600160a01b03958616835293909416602082015292830152606082015290565b90506000846002811115612e7d57612e7d614eeb565b03612e925764010000000060c0820152612ec7565b6001846002811115612ea657612ea6614eeb565b03612ebb5764040000000060c0820152612ec7565b64100000000060c08201525b612ed18187613986565b82600001819052506000336001600160a01b031663289b3c0d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f3d9190614a8d565b9050612f5586604001518761014001518c8c8c613b3d565b5060808401525060405163407b865d60e11b81526000906001600160a01b038316906380f70cba90612faf9033908f907feae305fa863b373417e615b1044222e2806cefc7788d169ce6748a443c3f6cc490600401614b17565b602060405180830381865afa158015612fcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ff09190614aaa565b9050600083608001516000146130145761300f64010000000083613970565b613017565b60005b905080846080015161302991906150af565b608085015260608a015161303c90611fdf565b60a0850152600087600281111561305557613055614eeb565b0361306a5764020000000060c085015261309f565b600187600281111561307e5761307e614eeb565b036130935764080000000060c085015261309f565b64200000000060c08501525b6130ae84866000015188613f21565b60408701919091528b519096506130c6908d90611a2f565b6020870152506130f49350505050565b6130ec84604001518561014001518a8a8a613b3d565b602084015250505b60006131038760600151611fdf565b826040015161010001516131179190614b3b565b905061313d8161312e846020015160400151611fdf565b6131389190614f60565b61416d565b8260200151604001818152505061315f8161312e846020015160600151611fdf565b60208301805160600191909152885190516001600160a01b038b169163a1b2bf8b9161318a906141bf565b6040518363ffffffff1660e01b81526004016131a7929190614afe565b600060405180830381600087803b1580156131c157600080fd5b505af11580156131d5573d6000803e3d6000fd5b505050506131f189896020015160008460008a60400151614230565b50613209898960400151600080858a60400151614230565b506101408501516001600160a01b0316158061323b5750886001600160a01b03168561014001516001600160a01b0316145b156132af576040516359a2914160e01b815233906359a291419061326590869085906004016150c2565b6000604051808303816000875af1158015613284573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526132ac9190810190614ff7565b92505b6040888101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa1580156132f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061331d9190614d42565b1561356257604088810151868201519151633acd4df360e21b81526001600160a01b0391821660048201526024810192909252600091908b169063eb3537cc90604401606060405180830381865afa15801561337d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133a19190614a54565b509091505060008112156135605760028560028111156133c3576133c3614eeb565b03613544576040808a01519051635b92108f60e11b8152339163b724211e916133f3918891600c90600401614fc9565b6000604051808303816000875af1158015613412573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261343a9190810190614ff7565b9350600061345861344a836150e4565b613453856150e4565b6143a1565b90508a6001600160a01b031663cf97256d8b6020015183613478906150e4565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b1580156134be57600080fd5b505af11580156134d2573d6000803e3d6000fd5b5050505060408a810151905163cf97256d60e01b81526001600160a01b03918216600482015260248101839052908c169063cf97256d90604401600060405180830381600087803b15801561352657600080fd5b505af115801561353a573d6000803e3d6000fd5b5050505050613560565b60405163a85ba64f60e01b8152600c60048201526024016107a8565b505b5050979650505050505050565b606083810151156135825761358261507a565b600061358c61454f565b6135a284604001518561014001518a8a8a613b3d565b6101408701519294509250506001600160a01b03808a16911603613633576040516359a2914160e01b815233906359a29141906135e590889086906004016150c2565b6000604051808303816000875af1158015613604573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261362c9190810190614ff7565b9250613637565b8492505b505095945050505050565b602081015160ff1660031415806136705750826001600160a01b03168161014001516001600160a01b031614155b1561371b576040808201519051633acd4df360e21b81526001600160a01b038481166004830152602482019290925260009185169063eb3537cc90604401606060405180830381865afa1580156136cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136ef9190614a54565b50509050600081121561371957604051636212897360e01b815261044c60048201526024016107a8565b505b505050565b600061373086856020015161178a565b91505060006137428460400151611fdf565b905060006137538360400151611fdf565b90506060600080613764848b614f60565b90506000806137728d6115cf565b915091506137828c87848461204d565b935050506000811261386d5760008461379b8388614b62565b6137a59190614f88565b90506001836137b55760016137b8565b60005b6040805160ff9384166020820152929091169082015260600160405160208183030381529060405293508b6001600160a01b0316631863e8098b60000151868b878f602001516138078861416d565b61381389600019614b62565b6040518863ffffffff1660e01b81526004016138359796959493929190615100565b600060405180830381600087803b15801561384f57600080fd5b505af1158015613863573d6000803e3d6000fd5b505050505061391f565b6040805160016020820152600291810191909152859060600160405160208183030381529060405293508b6001600160a01b0316631863e8098b60000151868b60008f602001516138bd8861416d565b6138c98a600019614b62565b6040518863ffffffff1660e01b81526004016138eb9796959493929190615100565b600060405180830381600087803b15801561390557600080fd5b505af1158015613919573d6000803e3d6000fd5b50505050505b5050505050505050505050565b600082600b0b600003613941575060006110b8565b60016001605f1b038211156139585761395861507a565b613962828461514d565b600b0b905061088d816143b6565b600081831161397f578161088d565b5090919050565b6020820151604051633e7d48bd60e21b81526001600160a01b03909116600482015260609060009081908190339063f9f522f490602401606060405180830381865afa1580156139da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139fe91906151e2565b91945092509050828015613a10575081155b15613b34576000613a2186886143ea565b90508660c001518216600003613b26576000613a408860c00151614468565b88516040808b015160608c015182516000815260208101909352613a6c9392309291906044810161521e565b60408051601f19818403018152918152602080830180516001600160e01b03166001600160e01b031990951694909417909352918a015160c08b01519251633a020f0160e11b815291935033926374041e0292613adb9291869164100000000091909114908890600401615263565b6000604051808303816000875af1158015613afa573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613b229190810190614ff7565b9550505b613b318660006144ff565b50505b50505092915050565b600080613b4861454f565b6000806000613b56896115cf565b5090506000336001600160a01b031663289b3c0d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bbd9190614a8d565b60405163407b865d60e11b81529091506001600160a01b038216906380f70cba90613c109033908e907feae305fa863b373417e615b1044222e2806cefc7788d169ce6748a443c3f6cc490600401614b17565b602060405180830381865afa158015613c2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c519190614aaa565b9250613c6189608001518361392c565b95505050613c728660600151611fdf565b613c7f8760400151611fdf565b613c8886611fdf565b613c929190614b3b565b613c9c9190614f60565b9450613caf8561312e8860400151611fdf565b91508082108015613cc7575060008760800151600b0b135b15613d0957613cd98660600151611fdf565b613ce68760400151611fdf565b613cef83611fdf565b613cf99190614b3b565b613d039190614f60565b94508091505b6001600160a01b03891615801590613d335750876001600160a01b0316896001600160a01b031614155b15613d3d57600093505b604051806080016040528060008960800151600b0b13613d5e576000613d60565b8b5b81526020018860800151600b0b815260200183815260200187606001518152509250876001600160a01b031663a1b2bf8b8860000151613d9f866141bf565b6040518363ffffffff1660e01b8152600401613dbc929190614afe565b600060405180830381600087803b158015613dd657600080fd5b505af1158015613dea573d6000803e3d6000fd5b505060408051808201909152600080825260208201529250613e0a915050565b613e3088886020015189608001518960200151613e279190614a27565b8860008f614230565b600b0b8152604087015160208701516080890151613e5f928b929091613e569190614a27565b6000808f614230565b600b0b60208083018290526040808a0151918a015160808b0151855160a08d015193516001600160a01b0395861696938616958f16947f57269d2ebcccecdcc0d9d2c0a0b80ead95f344e28ec20f50f709811f209d4e0e94613ec59493929091906152ac565b60405180910390a486606001516001600160a01b03167f71e0c98e270fc3084227b473f176924d5303ece8c639e679998a2d7dc8e70f7483604051613f0c91815260200190565b60405180910390a25050955095509592505050565b613f2961457a565b6020840151604051633e7d48bd60e21b81526001600160a01b03909116600482015260609060009081908190339063f9f522f490602401606060405180830381865afa158015613f7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fa191906151e2565b88965091945092509050828015613fb6575081155b1561416257613fc584896143ea565b93508760c001518116600003614150576000613fe48960c00151614468565b89516040808c015160608d0151825160008152602081019093526140129392309291908e90604481016152e4565b60408051601f19818403018152918152602080830180516001600160e01b03166001600160e01b031990951694909417909352918b015160c08c0151925163079b42a160e21b81529193503392631e6d0a84926140819291869164200000000091909114908b90600401615263565b6000604051808303816000875af11580156140a0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526140c89190810190614ff7565b604051631fb6491d60e11b81529095503390633f6c923a906140ee908890600401614784565b600060405180830381865afa15801561410b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526141339190810190614de4565b95506141488960800151876101000151614527565b610100870152505b61415f868661010001516144ff565b93505b505050935093915050565b6000808212156120495760405162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f73697469766560448201526064016107a8565b6040805160018082528183019092526060916020808301908036833701905050905060208260600151901c604060208460400151901c901b608084602001516bffffffffffffffffffffffff16901b60e08560000151901b17171760001b81600081518110612ba057612ba0614cf2565b60008061423d888861178a565b91505060008160200151600b0b61426283600001518661425d9190614fb6565b611fdf565b61426c9190614b62565b905080156142d75760405163cf97256d60e01b81526001600160a01b038981166004830152602482018390528a169063cf97256d90604401600060405180830381600087803b1580156142be57600080fd5b505af11580156142d2573d6000803e3d6000fd5b505050505b8682602001516142e7919061533d565b600b0b6020830152838252604082015161430690879061312e90611fdf565b6040830152606082015161431f90869061312e90611fdf565b60608301526001600160a01b03891663090c415e89600061433f866141bf565b6040518463ffffffff1660e01b815260040161435d9392919061536a565b600060405180830381600087803b15801561437757600080fd5b505af115801561438b573d6000803e3d6000fd5b5050506020909201519998505050505050505050565b60008183136143b0578261088d565b50919050565b60008063ffffffff83166143cb5760006143ce565b60015b60ff16905060206143e18285831c6150af565b901b9392505050565b6020810151608082015160a08301518351604051630768fabb60e41b8152606094339463768fabb094614421948a94600401615391565b6000604051808303816000875af1158015614440573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261088d9190810190614ff7565b6000640100000000820361448457506330d9c91560e01b919050565b640400000000820361449e5750630221347d60e61b919050565b64100000000082036144b85750635f9e7d7760e01b919050565b64020000000082036144d2575063d86ed3e560e01b919050565b64080000000082036144ec575063230dbd2960e01b919050565b506353c11f9960e01b919050565b919050565b604051634c4d861f60e11b8152606090339063989b0c3e9061442190869086906004016150c2565b600061088d600061454061453a86611fdf565b856143a1565b600081831361397f578161088d565b6040518060800160405280600081526020016000600b0b815260200160008152602001600081525090565b604080516101608101825260008082526020820181905291810182905260608082018390526080820183905260a082015260c0810182905260e081018290526101008101829052610120810182905261014081019190915290565b6040518060600160405280606081526020016145ef61454f565b81526020016145fc61457a565b905290565b6001600160a01b03811681146107ba57600080fd5b60008060006060848603121561462b57600080fd5b833561463681614601565b9250602084013561464681614601565b9150604084013561465681614601565b809150509250925092565b6000806040838503121561467457600080fd5b823561467f81614601565b946020939093013593505050565b60008083601f84011261469f57600080fd5b50813567ffffffffffffffff8111156146b757600080fd5b6020830191508360208285010111156115c857600080fd5b600080600080606085870312156146e557600080fd5b84356146f081614601565b9350602085013561470081614601565b9250604085013567ffffffffffffffff81111561471c57600080fd5b6147288782880161468d565b95989497509550505050565b60005b8381101561474f578181015183820152602001614737565b50506000910152565b60008151808452614770816020860160208601614734565b601f01601f19169290920160200192915050565b60208152600061088d6020830184614758565b600080604083850312156147aa57600080fd5b82356147b581614601565b915060208301356147c581614601565b809150509250929050565b8035600b81900b81146144fa57600080fd5b60008060008060008060a087890312156147fb57600080fd5b863561480681614601565b9550602087013561481681614601565b9450604087013561482681614601565b9350614834606088016147d0565b9250608087013567ffffffffffffffff81111561485057600080fd5b61485c89828a0161468d565b979a9699509497509295939492505050565b60006020828403121561488057600080fd5b813561088d81614601565b6000806000606084860312156148a057600080fd5b83356148ab81614601565b925060208401356148bb81614601565b929592945050506040919091013590565b6000806000806000608086880312156148e457600080fd5b85356148ef81614601565b945060208601356148ff81614601565b9350604086013561490f81614601565b9250606086013567ffffffffffffffff81111561492b57600080fd5b6149378882890161468d565b969995985093965092949392505050565b60008060008060006080868803121561496057600080fd5b853561496b81614601565b9450602086013561497b81614601565b935061490f604087016147d0565b60ff811681146107ba57600080fd5b60008060008060008060a087890312156149b157600080fd5b86356149bc81614601565b955060208701356149cc81614601565b9450604087013561482681614989565b600080604083850312156149ef57600080fd5b82356149fa81614601565b9150614a08602084016147d0565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b600b82810b9082900b0360016001605f1b0319811260016001605f1b03821317156110b8576110b8614a11565b600080600060608486031215614a6957600080fd5b8351925060208401519150604084015190509250925092565b80516144fa81614601565b600060208284031215614a9f57600080fd5b815161088d81614601565b600060208284031215614abc57600080fd5b5051919050565b600081518084526020808501945080840160005b83811015614af357815187529582019590820190600101614ad7565b509495945050505050565b82815260406020820152600061051e6040830184614ac3565b6001600160a01b039384168152919092166020820152604081019190915260600190565b8181036000831280158383131683831282161715614b5b57614b5b614a11565b5092915050565b60006001600160ff1b0381841382841380821686840486111615614b8857614b88614a11565b600160ff1b6000871282811687830589121615614ba757614ba7614a11565b60008712925087820587128484161615614bc357614bc3614a11565b87850587128184161615614bd957614bd9614a11565b505050929093029392505050565b634e487b7160e01b600052604160045260246000fd5b604051610160810167ffffffffffffffff81118282101715614c2157614c21614be7565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715614c5057614c50614be7565b604052919050565b60006020808385031215614c6b57600080fd5b825167ffffffffffffffff80821115614c8357600080fd5b818501915085601f830112614c9757600080fd5b815181811115614ca957614ca9614be7565b8060051b9150614cba848301614c27565b8181529183018401918481019088841115614cd457600080fd5b938501935b83851015610c8657845182529385019390850190614cd9565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b600082614d2d57614d2d614d08565b500490565b805180151581146144fa57600080fd5b600060208284031215614d5457600080fd5b61088d82614d32565b80516144fa81614989565b80516001600160e01b0319811681146144fa57600080fd5b600082601f830112614d9157600080fd5b815167ffffffffffffffff811115614dab57614dab614be7565b614dbe601f8201601f1916602001614c27565b818152846020838601011115614dd357600080fd5b61051e826020830160208701614734565b600060208284031215614df657600080fd5b815167ffffffffffffffff80821115614e0e57600080fd5b908301906101608286031215614e2357600080fd5b614e2b614bfd565b614e3483614d5d565b8152614e4260208401614d5d565b602082015260408301516040820152614e5d60608401614a82565b6060820152614e6e60808401614d68565b608082015260a083015182811115614e8557600080fd5b614e9187828601614d80565b60a08301525060c083015160c082015260e083015160e0820152610100915081830151828201526101209150614ec8828401614a82565b828201526101409150614edc828401614a82565b91810191909152949350505050565b634e487b7160e01b600052602160045260246000fd5b6001600160a01b038416815260c08101614f4f602083018580516001600160a01b03908116835260208083015182169084015260408083015190911690830152606090810151600b0b910152565b82600b0b60a0830152949350505050565b8082018281126000831280158216821582161715614f8057614f80614a11565b505092915050565b600082614f9757614f97614d08565b600160ff1b821460001984141615614fb157614fb1614a11565b500590565b818103818111156110b8576110b8614a11565b606081526000614fdc6060830186614758565b6001600160a01b039490941660208301525060400152919050565b60006020828403121561500957600080fd5b815167ffffffffffffffff81111561502057600080fd5b61051e84828501614d80565b6001600160a01b038316815260a0810161088d602083018480516001600160a01b03908116835260208083015182169084015260408083015190911690830152606090810151600b0b910152565b634e487b7160e01b600052600160045260246000fd5b60008160001904831182151516156150aa576150aa614a11565b500290565b808201808211156110b8576110b8614a11565b6040815260006150d56040830185614758565b90508260208301529392505050565b6000600160ff1b82016150f9576150f9614a11565b5060000390565b87815260e06020820152600061511960e0830189614758565b6001600160a01b03978816604084015295151560608301525092909416608083015260a082015260c0019190915292915050565b600081600b0b83600b0b60016001605f1b0360008213600084138383048511828216161561517d5761517d614a11565b60016001605f1b031960008512828116878305871216156151a0576151a0614a11565b600087129250858205871284841616156151bc576151bc614a11565b858505871281841616156151d2576151d2614a11565b5050509290910295945050505050565b6000806000606084860312156151f757600080fd5b61520084614d32565b925061520e60208501614d32565b9150604084015190509250925092565b6001600160a01b038681168252851660208201526040810184905260a06060820181905260009061525190830185614758565b8281036080840152610c868185614758565b6001600160a01b038516815260806020820181905260009061528790830186614758565b841515604084015282810360608401526152a18185614758565b979650505050505050565b84600b0b815283600b0b602082015282600b0b60408201526080606082015260006152da6080830184614758565b9695505050505050565b6001600160a01b038781168252861660208201526040810185905260c06060820181905260009061531790830186614758565b82810360808401526153298186614758565b905082810360a08401526112348185614758565b600b81810b9083900b0160016001605f1b03811360016001605f1b0319821217156110b8576110b8614a11565b60018060a01b03841681528260208201526060604082015260006105376060830184614ac3565b60a0815260006153a460a0830188614758565b6001600160a01b039687166020840152604083019590955250606081019290925290921660809092019190915291905056fea264697066735822122071e1dab00a3f5d88b37fa7c6758955c7619f974ea18fe4b63699cd7e4284753e64736f6c63430008100033","0x1","0x0"] diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-d1b48cfa4d2be8e8d65a1b554227b22c.json b/contracts/cache/hardhat-network-fork/network-80001/request-d1b48cfa4d2be8e8d65a1b554227b22c.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-d1b48cfa4d2be8e8d65a1b554227b22c.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-d2379469352e6758d658c27112be360e.json b/contracts/cache/hardhat-network-fork/network-80001/request-d2379469352e6758d658c27112be360e.json new file mode 100644 index 0000000..28ead2d --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-d2379469352e6758d658c27112be360e.json @@ -0,0 +1 @@ +"0x632e37e200000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-d2b237671c15417f98d13440ac29fb58.json b/contracts/cache/hardhat-network-fork/network-80001/request-d2b237671c15417f98d13440ac29fb58.json new file mode 100644 index 0000000..633cdf2 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-d2b237671c15417f98d13440ac29fb58.json @@ -0,0 +1 @@ +["0x6080604052600436106100225760003560e01c80634a0687ef1461003957610031565b366100315761002f61006c565b005b61002f61006c565b34801561004557600080fd5b5061002f6004803603602081101561005c57600080fd5b50356001600160a01b0316610086565b610074610084565b61008461007f610152565b610161565b565b6001600160a01b0381166100e1576040805162461bcd60e51b815260206004820152601760248201527f5555505350726f78793a207a65726f2061646472657373000000000000000000604482015290519081900360640190fd5b60006100eb610185565b6001600160a01b031614610146576040805162461bcd60e51b815260206004820152601e60248201527f5555505350726f78793a20616c726561647920696e697469616c697a65640000604482015290519081900360640190fd5b61014f816101aa565b50565b600061015c610185565b905090565b3660008037600080366000845af43d6000803e808015610180573d6000f35b3d6000fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5556fea26469706673582212207f4d1aae539b5f520670399a5049006d749c4642873ece0ea4ae53a8f7a0f8a564736f6c63430007060033","0x1","0x0"] diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-d3a5db60653ebbf1a9ec666909f46b16.json b/contracts/cache/hardhat-network-fork/network-80001/request-d3a5db60653ebbf1a9ec666909f46b16.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-d3a5db60653ebbf1a9ec666909f46b16.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-d4c3ca340891a6326dccfa9312218f6f.json b/contracts/cache/hardhat-network-fork/network-80001/request-d4c3ca340891a6326dccfa9312218f6f.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-d4c3ca340891a6326dccfa9312218f6f.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-d4c71af2731457413507645838c899b5.json b/contracts/cache/hardhat-network-fork/network-80001/request-d4c71af2731457413507645838c899b5.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-d4c71af2731457413507645838c899b5.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-d5a11a37ee8e75f378184b02cc905a71.json b/contracts/cache/hardhat-network-fork/network-80001/request-d5a11a37ee8e75f378184b02cc905a71.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-d5a11a37ee8e75f378184b02cc905a71.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-d5aad366d0844a7c0ab7c461ae84b4bd.json b/contracts/cache/hardhat-network-fork/network-80001/request-d5aad366d0844a7c0ab7c461ae84b4bd.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-d5aad366d0844a7c0ab7c461ae84b4bd.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-d5b575dc2481884661904710f26a0b62.json b/contracts/cache/hardhat-network-fork/network-80001/request-d5b575dc2481884661904710f26a0b62.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-d5b575dc2481884661904710f26a0b62.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-d603dc7514c103e61209f2cbb538b77d.json b/contracts/cache/hardhat-network-fork/network-80001/request-d603dc7514c103e61209f2cbb538b77d.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-d603dc7514c103e61209f2cbb538b77d.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-d61e47f37d4610534d9db1bd4eb862e0.json b/contracts/cache/hardhat-network-fork/network-80001/request-d61e47f37d4610534d9db1bd4eb862e0.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-d61e47f37d4610534d9db1bd4eb862e0.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-d67811c9ae48c03659c6eae56802182d.json b/contracts/cache/hardhat-network-fork/network-80001/request-d67811c9ae48c03659c6eae56802182d.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-d67811c9ae48c03659c6eae56802182d.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-d70ad9532e53d19ae7148386513d4366.json b/contracts/cache/hardhat-network-fork/network-80001/request-d70ad9532e53d19ae7148386513d4366.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-d70ad9532e53d19ae7148386513d4366.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-d7acc286a99ca347a78ccbf81b66b7e5.json b/contracts/cache/hardhat-network-fork/network-80001/request-d7acc286a99ca347a78ccbf81b66b7e5.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-d7acc286a99ca347a78ccbf81b66b7e5.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-d7b915301e02753c20f0407ea4bddf76.json b/contracts/cache/hardhat-network-fork/network-80001/request-d7b915301e02753c20f0407ea4bddf76.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-d7b915301e02753c20f0407ea4bddf76.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-d804804c6b05e8884289c15a6346cb11.json b/contracts/cache/hardhat-network-fork/network-80001/request-d804804c6b05e8884289c15a6346cb11.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-d804804c6b05e8884289c15a6346cb11.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-d8533563a0a313a00f9b7c4c36dab5d5.json b/contracts/cache/hardhat-network-fork/network-80001/request-d8533563a0a313a00f9b7c4c36dab5d5.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-d8533563a0a313a00f9b7c4c36dab5d5.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-d8a24b4eaa71165a02585816c60986f6.json b/contracts/cache/hardhat-network-fork/network-80001/request-d8a24b4eaa71165a02585816c60986f6.json new file mode 100644 index 0000000..5c87ee9 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-d8a24b4eaa71165a02585816c60986f6.json @@ -0,0 +1 @@ +["0x","0x0","0x0"] diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-d8a29f1b55b79b9188fa955d5900ea0f.json b/contracts/cache/hardhat-network-fork/network-80001/request-d8a29f1b55b79b9188fa955d5900ea0f.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-d8a29f1b55b79b9188fa955d5900ea0f.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-d92de36182f7d45bfb49bbbbc09653c5.json b/contracts/cache/hardhat-network-fork/network-80001/request-d92de36182f7d45bfb49bbbbc09653c5.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-d92de36182f7d45bfb49bbbbc09653c5.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-d967ed1ff12db6c83fe2e24c3f2c1773.json b/contracts/cache/hardhat-network-fork/network-80001/request-d967ed1ff12db6c83fe2e24c3f2c1773.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-d967ed1ff12db6c83fe2e24c3f2c1773.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-d9c0d2ec565475b2dcb8941df5861166.json b/contracts/cache/hardhat-network-fork/network-80001/request-d9c0d2ec565475b2dcb8941df5861166.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-d9c0d2ec565475b2dcb8941df5861166.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-da3873d2219739fabfcf703025884b6f.json b/contracts/cache/hardhat-network-fork/network-80001/request-da3873d2219739fabfcf703025884b6f.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-da3873d2219739fabfcf703025884b6f.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-da67f7f94e8874b512f5f13282c1dee7.json b/contracts/cache/hardhat-network-fork/network-80001/request-da67f7f94e8874b512f5f13282c1dee7.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-da67f7f94e8874b512f5f13282c1dee7.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-da6c6df265ae53fb8903c87edfa88727.json b/contracts/cache/hardhat-network-fork/network-80001/request-da6c6df265ae53fb8903c87edfa88727.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-da6c6df265ae53fb8903c87edfa88727.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-db38c08858aa9c4b106df441c35ee545.json b/contracts/cache/hardhat-network-fork/network-80001/request-db38c08858aa9c4b106df441c35ee545.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-db38c08858aa9c4b106df441c35ee545.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-dc0b99958ffbd79c283514c2035f2298.json b/contracts/cache/hardhat-network-fork/network-80001/request-dc0b99958ffbd79c283514c2035f2298.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-dc0b99958ffbd79c283514c2035f2298.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-dca74f8758eaa718fce711e098c2c976.json b/contracts/cache/hardhat-network-fork/network-80001/request-dca74f8758eaa718fce711e098c2c976.json new file mode 100644 index 0000000..b4344c7 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-dca74f8758eaa718fce711e098c2c976.json @@ -0,0 +1 @@ +"0x2c9" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-dcad875c89d88a68c9bf7cef24b57b5f.json b/contracts/cache/hardhat-network-fork/network-80001/request-dcad875c89d88a68c9bf7cef24b57b5f.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-dcad875c89d88a68c9bf7cef24b57b5f.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-dcca2147c66c16c61c8549ca2c1dde56.json b/contracts/cache/hardhat-network-fork/network-80001/request-dcca2147c66c16c61c8549ca2c1dde56.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-dcca2147c66c16c61c8549ca2c1dde56.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-dd3d4b16a895fab73638e8541a125088.json b/contracts/cache/hardhat-network-fork/network-80001/request-dd3d4b16a895fab73638e8541a125088.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-dd3d4b16a895fab73638e8541a125088.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-dd51f6dbb0b62bb5177cd397d12c18fd.json b/contracts/cache/hardhat-network-fork/network-80001/request-dd51f6dbb0b62bb5177cd397d12c18fd.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-dd51f6dbb0b62bb5177cd397d12c18fd.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-dd738f4729689f7c5fa618841e22cc1b.json b/contracts/cache/hardhat-network-fork/network-80001/request-dd738f4729689f7c5fa618841e22cc1b.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-dd738f4729689f7c5fa618841e22cc1b.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-ddb992591032e3875b5a99a9841a6002.json b/contracts/cache/hardhat-network-fork/network-80001/request-ddb992591032e3875b5a99a9841a6002.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-ddb992591032e3875b5a99a9841a6002.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-ddd3764ea2bbb2ef124003a07041b69b.json b/contracts/cache/hardhat-network-fork/network-80001/request-ddd3764ea2bbb2ef124003a07041b69b.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-ddd3764ea2bbb2ef124003a07041b69b.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-de2e4b09afe7346b425da8e212d16ed9.json b/contracts/cache/hardhat-network-fork/network-80001/request-de2e4b09afe7346b425da8e212d16ed9.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-de2e4b09afe7346b425da8e212d16ed9.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-de72911eb6b25640512562eac18ae3d5.json b/contracts/cache/hardhat-network-fork/network-80001/request-de72911eb6b25640512562eac18ae3d5.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-de72911eb6b25640512562eac18ae3d5.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-df14203c465e3fdffaf42bcfab54b51b.json b/contracts/cache/hardhat-network-fork/network-80001/request-df14203c465e3fdffaf42bcfab54b51b.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-df14203c465e3fdffaf42bcfab54b51b.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-df20772d335b0ab7f2ea1b0ade53f257.json b/contracts/cache/hardhat-network-fork/network-80001/request-df20772d335b0ab7f2ea1b0ade53f257.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-df20772d335b0ab7f2ea1b0ade53f257.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-e0075e4169b11b36f8002fe7c8c4d9ee.json b/contracts/cache/hardhat-network-fork/network-80001/request-e0075e4169b11b36f8002fe7c8c4d9ee.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-e0075e4169b11b36f8002fe7c8c4d9ee.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-e053858e24568f05020a340193571f1d.json b/contracts/cache/hardhat-network-fork/network-80001/request-e053858e24568f05020a340193571f1d.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-e053858e24568f05020a340193571f1d.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-e0789ef00b96d286ada1f8d4671e916e.json b/contracts/cache/hardhat-network-fork/network-80001/request-e0789ef00b96d286ada1f8d4671e916e.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-e0789ef00b96d286ada1f8d4671e916e.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-e14d6e3578af39b9c8bef74cdab032f4.json b/contracts/cache/hardhat-network-fork/network-80001/request-e14d6e3578af39b9c8bef74cdab032f4.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-e14d6e3578af39b9c8bef74cdab032f4.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-e172bda5eafdcb3c4a2939ebe6500403.json b/contracts/cache/hardhat-network-fork/network-80001/request-e172bda5eafdcb3c4a2939ebe6500403.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-e172bda5eafdcb3c4a2939ebe6500403.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-e18916ae34ce9a550d0db7bfe2509c74.json b/contracts/cache/hardhat-network-fork/network-80001/request-e18916ae34ce9a550d0db7bfe2509c74.json new file mode 100644 index 0000000..5c87ee9 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-e18916ae34ce9a550d0db7bfe2509c74.json @@ -0,0 +1 @@ +["0x","0x0","0x0"] diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-e385fb0de73ab16c21ce81e239a518bf.json b/contracts/cache/hardhat-network-fork/network-80001/request-e385fb0de73ab16c21ce81e239a518bf.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-e385fb0de73ab16c21ce81e239a518bf.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-e3d8fa827319f911d7a141bc9d03bed1.json b/contracts/cache/hardhat-network-fork/network-80001/request-e3d8fa827319f911d7a141bc9d03bed1.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-e3d8fa827319f911d7a141bc9d03bed1.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-e47529ab2b3cb65df3371eff02f560f5.json b/contracts/cache/hardhat-network-fork/network-80001/request-e47529ab2b3cb65df3371eff02f560f5.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-e47529ab2b3cb65df3371eff02f560f5.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-e49aa5aea401e6629fc4d203419f990b.json b/contracts/cache/hardhat-network-fork/network-80001/request-e49aa5aea401e6629fc4d203419f990b.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-e49aa5aea401e6629fc4d203419f990b.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-e4ecbb60a9cfcbcd7581049d8be1e234.json b/contracts/cache/hardhat-network-fork/network-80001/request-e4ecbb60a9cfcbcd7581049d8be1e234.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-e4ecbb60a9cfcbcd7581049d8be1e234.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-e5d8b72c72637a220713566b07592bd7.json b/contracts/cache/hardhat-network-fork/network-80001/request-e5d8b72c72637a220713566b07592bd7.json new file mode 100644 index 0000000..210c077 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-e5d8b72c72637a220713566b07592bd7.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000051ed0a4ea74adecdb" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-e5eb161b196a1664be7aa57e69584504.json b/contracts/cache/hardhat-network-fork/network-80001/request-e5eb161b196a1664be7aa57e69584504.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-e5eb161b196a1664be7aa57e69584504.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-e60222b3a31392046ab13383c27a0613.json b/contracts/cache/hardhat-network-fork/network-80001/request-e60222b3a31392046ab13383c27a0613.json new file mode 100644 index 0000000..5c87ee9 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-e60222b3a31392046ab13383c27a0613.json @@ -0,0 +1 @@ +["0x","0x0","0x0"] diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-e609298f71c86bb8a9d08794b55bacf9.json b/contracts/cache/hardhat-network-fork/network-80001/request-e609298f71c86bb8a9d08794b55bacf9.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-e609298f71c86bb8a9d08794b55bacf9.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-e6204b98a9eef578c3a3b56905de4b1b.json b/contracts/cache/hardhat-network-fork/network-80001/request-e6204b98a9eef578c3a3b56905de4b1b.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-e6204b98a9eef578c3a3b56905de4b1b.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-e8301d3c700dd61e265efacff5c8e119.json b/contracts/cache/hardhat-network-fork/network-80001/request-e8301d3c700dd61e265efacff5c8e119.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-e8301d3c700dd61e265efacff5c8e119.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-e89e1c9426d4b8da1b420181df1126f3.json b/contracts/cache/hardhat-network-fork/network-80001/request-e89e1c9426d4b8da1b420181df1126f3.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-e89e1c9426d4b8da1b420181df1126f3.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-e8b8388502dc3ee0dc8703a68e907d56.json b/contracts/cache/hardhat-network-fork/network-80001/request-e8b8388502dc3ee0dc8703a68e907d56.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-e8b8388502dc3ee0dc8703a68e907d56.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-e99066119b7b19d51df318ad4812267c.json b/contracts/cache/hardhat-network-fork/network-80001/request-e99066119b7b19d51df318ad4812267c.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-e99066119b7b19d51df318ad4812267c.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-e9bc6e674c274b09d69eaadbad40ec6b.json b/contracts/cache/hardhat-network-fork/network-80001/request-e9bc6e674c274b09d69eaadbad40ec6b.json new file mode 100644 index 0000000..fbd6989 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-e9bc6e674c274b09d69eaadbad40ec6b.json @@ -0,0 +1 @@ +"0x000000000000000000000000a2cb32faa843bdeebc89c26868ee45085c854fa1" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-e9cecb0301506d1e6c52fe561b9d13cf.json b/contracts/cache/hardhat-network-fork/network-80001/request-e9cecb0301506d1e6c52fe561b9d13cf.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-e9cecb0301506d1e6c52fe561b9d13cf.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-e9e2a653fecbf808ad13b37bde474d4c.json b/contracts/cache/hardhat-network-fork/network-80001/request-e9e2a653fecbf808ad13b37bde474d4c.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-e9e2a653fecbf808ad13b37bde474d4c.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-ea0dabe06594ba2ad94c8d694c7c1391.json b/contracts/cache/hardhat-network-fork/network-80001/request-ea0dabe06594ba2ad94c8d694c7c1391.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-ea0dabe06594ba2ad94c8d694c7c1391.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-ea4b37dc5c69751b552b3d56f4147cbc.json b/contracts/cache/hardhat-network-fork/network-80001/request-ea4b37dc5c69751b552b3d56f4147cbc.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-ea4b37dc5c69751b552b3d56f4147cbc.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-eb1bf3ded64992e76530a24240d42274.json b/contracts/cache/hardhat-network-fork/network-80001/request-eb1bf3ded64992e76530a24240d42274.json new file mode 100644 index 0000000..9e7d531 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-eb1bf3ded64992e76530a24240d42274.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000009003935e63a94000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-eb466c6500f43653b39e16b1e690389c.json b/contracts/cache/hardhat-network-fork/network-80001/request-eb466c6500f43653b39e16b1e690389c.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-eb466c6500f43653b39e16b1e690389c.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-eb5bc83079c610d04dd58d868670415f.json b/contracts/cache/hardhat-network-fork/network-80001/request-eb5bc83079c610d04dd58d868670415f.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-eb5bc83079c610d04dd58d868670415f.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-eb6340b55e876d49223a7e5e01f764bb.json b/contracts/cache/hardhat-network-fork/network-80001/request-eb6340b55e876d49223a7e5e01f764bb.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-eb6340b55e876d49223a7e5e01f764bb.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-eba036638c4c4205c64881ac274aaf8b.json b/contracts/cache/hardhat-network-fork/network-80001/request-eba036638c4c4205c64881ac274aaf8b.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-eba036638c4c4205c64881ac274aaf8b.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-ebb9fc3125539401ab3f061d4bd469b9.json b/contracts/cache/hardhat-network-fork/network-80001/request-ebb9fc3125539401ab3f061d4bd469b9.json new file mode 100644 index 0000000..0dd62ed --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-ebb9fc3125539401ab3f061d4bd469b9.json @@ -0,0 +1 @@ +"0x0000000000000000000000008341f96bd961146023e38ebffe3f2905b1bd9fb6" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-ebd5bfa3cc76cae1ff529a013cd7381d.json b/contracts/cache/hardhat-network-fork/network-80001/request-ebd5bfa3cc76cae1ff529a013cd7381d.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-ebd5bfa3cc76cae1ff529a013cd7381d.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-ec2e72340a639e5703dc45c7d544b6fe.json b/contracts/cache/hardhat-network-fork/network-80001/request-ec2e72340a639e5703dc45c7d544b6fe.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-ec2e72340a639e5703dc45c7d544b6fe.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-ec3cad78e62da1007a1d838730151b46.json b/contracts/cache/hardhat-network-fork/network-80001/request-ec3cad78e62da1007a1d838730151b46.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-ec3cad78e62da1007a1d838730151b46.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-ec6c3ff64c5929cbbd5ebc840d2e7ec8.json b/contracts/cache/hardhat-network-fork/network-80001/request-ec6c3ff64c5929cbbd5ebc840d2e7ec8.json new file mode 100644 index 0000000..5c87ee9 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-ec6c3ff64c5929cbbd5ebc840d2e7ec8.json @@ -0,0 +1 @@ +["0x","0x0","0x0"] diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-ed068efccb0612ac2a0ed66ec4b7cfae.json b/contracts/cache/hardhat-network-fork/network-80001/request-ed068efccb0612ac2a0ed66ec4b7cfae.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-ed068efccb0612ac2a0ed66ec4b7cfae.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-ed14fc779f78bc346a3dcc3cdf146495.json b/contracts/cache/hardhat-network-fork/network-80001/request-ed14fc779f78bc346a3dcc3cdf146495.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-ed14fc779f78bc346a3dcc3cdf146495.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-ed4b99c50897f997913e8545f4b0b5d9.json b/contracts/cache/hardhat-network-fork/network-80001/request-ed4b99c50897f997913e8545f4b0b5d9.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-ed4b99c50897f997913e8545f4b0b5d9.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-ed604b78b4b82c04bc1e05fc2c7709b0.json b/contracts/cache/hardhat-network-fork/network-80001/request-ed604b78b4b82c04bc1e05fc2c7709b0.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-ed604b78b4b82c04bc1e05fc2c7709b0.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-edc032dc9010ba76d2fc4d9a664b11ab.json b/contracts/cache/hardhat-network-fork/network-80001/request-edc032dc9010ba76d2fc4d9a664b11ab.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-edc032dc9010ba76d2fc4d9a664b11ab.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-edc05404e5123e860b89aca697cf7a0c.json b/contracts/cache/hardhat-network-fork/network-80001/request-edc05404e5123e860b89aca697cf7a0c.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-edc05404e5123e860b89aca697cf7a0c.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-ee0eb8b5d798dcc73962733685d6c16f.json b/contracts/cache/hardhat-network-fork/network-80001/request-ee0eb8b5d798dcc73962733685d6c16f.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-ee0eb8b5d798dcc73962733685d6c16f.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-ee78c85a5fad0cee4b05470cd8e8f9cf.json b/contracts/cache/hardhat-network-fork/network-80001/request-ee78c85a5fad0cee4b05470cd8e8f9cf.json new file mode 100644 index 0000000..7d4e5aa --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-ee78c85a5fad0cee4b05470cd8e8f9cf.json @@ -0,0 +1 @@ +"0x6367373500000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-ee8cb6624dae79b7ad99d33e0df24aa2.json b/contracts/cache/hardhat-network-fork/network-80001/request-ee8cb6624dae79b7ad99d33e0df24aa2.json new file mode 100644 index 0000000..e0506d9 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-ee8cb6624dae79b7ad99d33e0df24aa2.json @@ -0,0 +1 @@ +"0x00000000000000000000000067d0efab10b390206b356ba7fb453ab56aab7480" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-eea164f2bc91bb351b8b8841f25a9b88.json b/contracts/cache/hardhat-network-fork/network-80001/request-eea164f2bc91bb351b8b8841f25a9b88.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-eea164f2bc91bb351b8b8841f25a9b88.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-eea57bee48aff9326e38446196462de8.json b/contracts/cache/hardhat-network-fork/network-80001/request-eea57bee48aff9326e38446196462de8.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-eea57bee48aff9326e38446196462de8.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-efad11244a5df3a3c690ad27fb8b73e1.json b/contracts/cache/hardhat-network-fork/network-80001/request-efad11244a5df3a3c690ad27fb8b73e1.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-efad11244a5df3a3c690ad27fb8b73e1.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-efb01ef95d730f299e753947c33cd7aa.json b/contracts/cache/hardhat-network-fork/network-80001/request-efb01ef95d730f299e753947c33cd7aa.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-efb01ef95d730f299e753947c33cd7aa.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-f06457a6dde449a7867a275f1672c1f9.json b/contracts/cache/hardhat-network-fork/network-80001/request-f06457a6dde449a7867a275f1672c1f9.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-f06457a6dde449a7867a275f1672c1f9.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-f0f1a06dc73fa1a7c5c6542028a9b375.json b/contracts/cache/hardhat-network-fork/network-80001/request-f0f1a06dc73fa1a7c5c6542028a9b375.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-f0f1a06dc73fa1a7c5c6542028a9b375.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-f0f69902e8d6dd5823b4546cf1b025ef.json b/contracts/cache/hardhat-network-fork/network-80001/request-f0f69902e8d6dd5823b4546cf1b025ef.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-f0f69902e8d6dd5823b4546cf1b025ef.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-f1a00e9962b4c08f5a560f2f0773d4c8.json b/contracts/cache/hardhat-network-fork/network-80001/request-f1a00e9962b4c08f5a560f2f0773d4c8.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-f1a00e9962b4c08f5a560f2f0773d4c8.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-f26f807282aaf4d9f81f0905da311424.json b/contracts/cache/hardhat-network-fork/network-80001/request-f26f807282aaf4d9f81f0905da311424.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-f26f807282aaf4d9f81f0905da311424.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-f2a4973d14f3b2c7cfc4b91e2f072f45.json b/contracts/cache/hardhat-network-fork/network-80001/request-f2a4973d14f3b2c7cfc4b91e2f072f45.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-f2a4973d14f3b2c7cfc4b91e2f072f45.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-f2b3e5f3871c4825a915e5cf2febb7e7.json b/contracts/cache/hardhat-network-fork/network-80001/request-f2b3e5f3871c4825a915e5cf2febb7e7.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-f2b3e5f3871c4825a915e5cf2febb7e7.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-f2e76cc8d68166dc0209bd70aa930320.json b/contracts/cache/hardhat-network-fork/network-80001/request-f2e76cc8d68166dc0209bd70aa930320.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-f2e76cc8d68166dc0209bd70aa930320.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-f30b357156a3a8356de103fdf8946a58.json b/contracts/cache/hardhat-network-fork/network-80001/request-f30b357156a3a8356de103fdf8946a58.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-f30b357156a3a8356de103fdf8946a58.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-f34eb847a912ab8c5f08a5a23745f8dd.json b/contracts/cache/hardhat-network-fork/network-80001/request-f34eb847a912ab8c5f08a5a23745f8dd.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-f34eb847a912ab8c5f08a5a23745f8dd.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-f5140e0db4f7dd2f689d6dd23d6d0376.json b/contracts/cache/hardhat-network-fork/network-80001/request-f5140e0db4f7dd2f689d6dd23d6d0376.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-f5140e0db4f7dd2f689d6dd23d6d0376.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-f576a129045d5c00dbddffc0fe093b93.json b/contracts/cache/hardhat-network-fork/network-80001/request-f576a129045d5c00dbddffc0fe093b93.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-f576a129045d5c00dbddffc0fe093b93.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-f5b4846808c13e87ca6f49141a66796e.json b/contracts/cache/hardhat-network-fork/network-80001/request-f5b4846808c13e87ca6f49141a66796e.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-f5b4846808c13e87ca6f49141a66796e.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-f5dc580e630f1c78894740b511ce050f.json b/contracts/cache/hardhat-network-fork/network-80001/request-f5dc580e630f1c78894740b511ce050f.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-f5dc580e630f1c78894740b511ce050f.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-f5fd60964b64313afc2b9951e23a6077.json b/contracts/cache/hardhat-network-fork/network-80001/request-f5fd60964b64313afc2b9951e23a6077.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-f5fd60964b64313afc2b9951e23a6077.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-f6a7444f7e747a4200cbb7f54147d8b0.json b/contracts/cache/hardhat-network-fork/network-80001/request-f6a7444f7e747a4200cbb7f54147d8b0.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-f6a7444f7e747a4200cbb7f54147d8b0.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-f6bdef519967a55ca3c61430c3dba64d.json b/contracts/cache/hardhat-network-fork/network-80001/request-f6bdef519967a55ca3c61430c3dba64d.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-f6bdef519967a55ca3c61430c3dba64d.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-f6cdf3c2ee8c25706f1a1dde91cee44b.json b/contracts/cache/hardhat-network-fork/network-80001/request-f6cdf3c2ee8c25706f1a1dde91cee44b.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-f6cdf3c2ee8c25706f1a1dde91cee44b.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-f82c8fdca58942d15c6efc59a64c5083.json b/contracts/cache/hardhat-network-fork/network-80001/request-f82c8fdca58942d15c6efc59a64c5083.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-f82c8fdca58942d15c6efc59a64c5083.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-f8454ef0fe29621b8c1e9814e3d843db.json b/contracts/cache/hardhat-network-fork/network-80001/request-f8454ef0fe29621b8c1e9814e3d843db.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-f8454ef0fe29621b8c1e9814e3d843db.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-f85e2484755b667d9a449618b6643b06.json b/contracts/cache/hardhat-network-fork/network-80001/request-f85e2484755b667d9a449618b6643b06.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-f85e2484755b667d9a449618b6643b06.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-f8be5aa983d6c1e8e680b41f3d4e5711.json b/contracts/cache/hardhat-network-fork/network-80001/request-f8be5aa983d6c1e8e680b41f3d4e5711.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-f8be5aa983d6c1e8e680b41f3d4e5711.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-f8c9b36f99d9e5b09aefc933de02c9c6.json b/contracts/cache/hardhat-network-fork/network-80001/request-f8c9b36f99d9e5b09aefc933de02c9c6.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-f8c9b36f99d9e5b09aefc933de02c9c6.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-f8e37dacbac2ef906b6ba374adefbf05.json b/contracts/cache/hardhat-network-fork/network-80001/request-f8e37dacbac2ef906b6ba374adefbf05.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-f8e37dacbac2ef906b6ba374adefbf05.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-f9d511642ae0510f99eaacfc1a185700.json b/contracts/cache/hardhat-network-fork/network-80001/request-f9d511642ae0510f99eaacfc1a185700.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-f9d511642ae0510f99eaacfc1a185700.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-f9d6385feac90309273e38a6fbf1680f.json b/contracts/cache/hardhat-network-fork/network-80001/request-f9d6385feac90309273e38a6fbf1680f.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-f9d6385feac90309273e38a6fbf1680f.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-f9f59617c36fcc8651a93f0a54edcae6.json b/contracts/cache/hardhat-network-fork/network-80001/request-f9f59617c36fcc8651a93f0a54edcae6.json new file mode 100644 index 0000000..633cdf2 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-f9f59617c36fcc8651a93f0a54edcae6.json @@ -0,0 +1 @@ +["0x6080604052600436106100225760003560e01c80634a0687ef1461003957610031565b366100315761002f61006c565b005b61002f61006c565b34801561004557600080fd5b5061002f6004803603602081101561005c57600080fd5b50356001600160a01b0316610086565b610074610084565b61008461007f610152565b610161565b565b6001600160a01b0381166100e1576040805162461bcd60e51b815260206004820152601760248201527f5555505350726f78793a207a65726f2061646472657373000000000000000000604482015290519081900360640190fd5b60006100eb610185565b6001600160a01b031614610146576040805162461bcd60e51b815260206004820152601e60248201527f5555505350726f78793a20616c726561647920696e697469616c697a65640000604482015290519081900360640190fd5b61014f816101aa565b50565b600061015c610185565b905090565b3660008037600080366000845af43d6000803e808015610180573d6000f35b3d6000fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5556fea26469706673582212207f4d1aae539b5f520670399a5049006d749c4642873ece0ea4ae53a8f7a0f8a564736f6c63430007060033","0x1","0x0"] diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-fa5cb4c014e43842681b9fe5049aea9b.json b/contracts/cache/hardhat-network-fork/network-80001/request-fa5cb4c014e43842681b9fe5049aea9b.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-fa5cb4c014e43842681b9fe5049aea9b.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-fb89f6b921a8027f12e8e285f59028d6.json b/contracts/cache/hardhat-network-fork/network-80001/request-fb89f6b921a8027f12e8e285f59028d6.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-fb89f6b921a8027f12e8e285f59028d6.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-fbb64fb8413893e78e368029b393c7a3.json b/contracts/cache/hardhat-network-fork/network-80001/request-fbb64fb8413893e78e368029b393c7a3.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-fbb64fb8413893e78e368029b393c7a3.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-fca47885c493c651bf7c02dbeafb8329.json b/contracts/cache/hardhat-network-fork/network-80001/request-fca47885c493c651bf7c02dbeafb8329.json new file mode 100644 index 0000000..10bb759 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-fca47885c493c651bf7c02dbeafb8329.json @@ -0,0 +1 @@ +"0x00000000000000000000000000000000000000000009c0511e5f72e671ca278d" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-fca4fe4c2d2d7bedbae92bf2892e3580.json b/contracts/cache/hardhat-network-fork/network-80001/request-fca4fe4c2d2d7bedbae92bf2892e3580.json new file mode 100644 index 0000000..aef023a --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-fca4fe4c2d2d7bedbae92bf2892e3580.json @@ -0,0 +1 @@ +"0x399" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-fce7c4a9db12764c8ccac2265994f1ad.json b/contracts/cache/hardhat-network-fork/network-80001/request-fce7c4a9db12764c8ccac2265994f1ad.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-fce7c4a9db12764c8ccac2265994f1ad.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-fd48dc8191deaf52af88fd84c40a1c9a.json b/contracts/cache/hardhat-network-fork/network-80001/request-fd48dc8191deaf52af88fd84c40a1c9a.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-fd48dc8191deaf52af88fd84c40a1c9a.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-fd98a20aeb858eda260d528c13726056.json b/contracts/cache/hardhat-network-fork/network-80001/request-fd98a20aeb858eda260d528c13726056.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-fd98a20aeb858eda260d528c13726056.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-fd9a4473630aa383fefa9f4078a2c530.json b/contracts/cache/hardhat-network-fork/network-80001/request-fd9a4473630aa383fefa9f4078a2c530.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-fd9a4473630aa383fefa9f4078a2c530.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-fded7542b023cf7f418c577d55ca057b.json b/contracts/cache/hardhat-network-fork/network-80001/request-fded7542b023cf7f418c577d55ca057b.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-fded7542b023cf7f418c577d55ca057b.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-fe19e25c831beef9fab47f4627595adc.json b/contracts/cache/hardhat-network-fork/network-80001/request-fe19e25c831beef9fab47f4627595adc.json new file mode 100644 index 0000000..899fa6f --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-fe19e25c831beef9fab47f4627595adc.json @@ -0,0 +1 @@ +["0x6080604052600436106100225760003560e01c80634a0687ef1461003957610031565b366100315761002f61006c565b005b61002f61006c565b34801561004557600080fd5b5061002f6004803603602081101561005c57600080fd5b50356001600160a01b0316610086565b610074610084565b61008461007f610152565b610161565b565b6001600160a01b0381166100e1576040805162461bcd60e51b815260206004820152601760248201527f5555505350726f78793a207a65726f2061646472657373000000000000000000604482015290519081900360640190fd5b60006100eb610185565b6001600160a01b031614610146576040805162461bcd60e51b815260206004820152601e60248201527f5555505350726f78793a20616c726561647920696e697469616c697a65640000604482015290519081900360640190fd5b61014f816101aa565b50565b600061015c610185565b905090565b3660008037600080366000845af43d6000803e808015610180573d6000f35b3d6000fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5556fea26469706673582212207f4d1aae539b5f520670399a5049006d749c4642873ece0ea4ae53a8f7a0f8a564736f6c63430007060033","0x4","0x0"] diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-fe225a1545f7c623d202b59a8321312a.json b/contracts/cache/hardhat-network-fork/network-80001/request-fe225a1545f7c623d202b59a8321312a.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-fe225a1545f7c623d202b59a8321312a.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-fe850dc23f732a6d42f538c693e075a5.json b/contracts/cache/hardhat-network-fork/network-80001/request-fe850dc23f732a6d42f538c693e075a5.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-fe850dc23f732a6d42f538c693e075a5.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-ff5657020c589805107be1299e67daf2.json b/contracts/cache/hardhat-network-fork/network-80001/request-ff5657020c589805107be1299e67daf2.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-ff5657020c589805107be1299e67daf2.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-ff56bae4ede7b777aac3a423b3a58c1c.json b/contracts/cache/hardhat-network-fork/network-80001/request-ff56bae4ede7b777aac3a423b3a58c1c.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-ff56bae4ede7b777aac3a423b3a58c1c.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/hardhat-network-fork/network-80001/request-ffeedb70138d9124be5ab3bf0bff1cd9.json b/contracts/cache/hardhat-network-fork/network-80001/request-ffeedb70138d9124be5ab3bf0bff1cd9.json new file mode 100644 index 0000000..cf54593 --- /dev/null +++ b/contracts/cache/hardhat-network-fork/network-80001/request-ffeedb70138d9124be5ab3bf0bff1cd9.json @@ -0,0 +1 @@ +"0x0000000000000000000000000000000000000000000000000000000000000000" diff --git a/contracts/cache/solidity-files-cache.json b/contracts/cache/solidity-files-cache.json new file mode 100644 index 0000000..21ef916 --- /dev/null +++ b/contracts/cache/solidity-files-cache.json @@ -0,0 +1,2292 @@ +{ + "_format": "hh-sol-cache-2", + "files": { + "/home/ben/Documents/blockspace_flowspace/flowspace-contracts/contracts/Diamond.sol": { + "lastModificationDate": 1682495578927, + "contentHash": "b9b724338d46089774fd5266204077d8", + "sourceName": "contracts/Diamond.sol", + "solcConfig": { + "version": "0.8.18", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "./libraries/utils/LibDiamond.sol", + "./libraries/utils/LibAccessControl.sol", + "./interfaces/utils/ICut.sol" + ], + "versionPragmas": [ + "^0.8.9" + ], + "artifacts": [ + "Diamond" + ] + }, + "/home/ben/Documents/blockspace_flowspace/flowspace-contracts/contracts/libraries/utils/LibDiamond.sol": { + "lastModificationDate": 1682495552626, + "contentHash": "78973e7242722f6e28af353798223f4b", + "sourceName": "contracts/libraries/utils/LibDiamond.sol", + "solcConfig": { + "version": "0.8.18", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "../../interfaces/utils/ICut.sol" + ], + "versionPragmas": [ + "^0.8.9" + ], + "artifacts": [ + "LibDiamond" + ] + }, + "/home/ben/Documents/blockspace_flowspace/flowspace-contracts/contracts/libraries/utils/LibAccessControl.sol": { + "lastModificationDate": 1682495548422, + "contentHash": "11d5fe8f9148954b17022ac501989ff9", + "sourceName": "contracts/libraries/utils/LibAccessControl.sol", + "solcConfig": { + "version": "0.8.18", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "@openzeppelin/contracts/utils/Strings.sol" + ], + "versionPragmas": [ + "^0.8.9" + ], + "artifacts": [ + "LibAccessControl" + ] + }, + "/home/ben/Documents/blockspace_flowspace/flowspace-contracts/contracts/interfaces/utils/ICut.sol": { + "lastModificationDate": 1682495524446, + "contentHash": "24bf5b7d294c63944cc0b3a2e5e69b8e", + "sourceName": "contracts/interfaces/utils/ICut.sol", + "solcConfig": { + "version": "0.8.18", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.9" + ], + "artifacts": [ + "ICut" + ] + }, + "/home/ben/Documents/blockspace_flowspace/flowspace-contracts/node_modules/@openzeppelin/contracts/utils/Strings.sol": { + "lastModificationDate": 1682397873545, + "contentHash": "396031251978f8febfd90cb62cb240ec", + "sourceName": "@openzeppelin/contracts/utils/Strings.sol", + "solcConfig": { + "version": "0.8.18", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "./math/Math.sol" + ], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "Strings" + ] + }, + "/home/ben/Documents/blockspace_flowspace/flowspace-contracts/node_modules/@openzeppelin/contracts/utils/math/Math.sol": { + "lastModificationDate": 1682397875193, + "contentHash": "b9c58920ce74d6dc819161786112e7ee", + "sourceName": "@openzeppelin/contracts/utils/math/Math.sol", + "solcConfig": { + "version": "0.8.18", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "Math" + ] + }, + "/home/ben/Documents/blockspace_flowspace/flowspace-contracts/contracts/upgrades/DiamondInit.sol": { + "lastModificationDate": 1682747252941, + "contentHash": "d7ee81956bc76d49fcb977f73671cafe", + "sourceName": "contracts/upgrades/DiamondInit.sol", + "solcConfig": { + "version": "0.8.18", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol", + "../libraries/utils/LibDiamond.sol", + "../libraries/core/LibAutomate.sol", + "../libraries/core/LibControl.sol", + "../interfaces/utils/IERC165.sol", + "../interfaces/utils/ICut.sol", + "../interfaces/utils/ILoupe.sol", + "../interfaces/utils/IAccessControl.sol", + "../interfaces/utils/IUtility.sol", + "../interfaces/core/IAutomate.sol", + "../interfaces/core/IControl.sol", + "../interfaces/core/ISession.sol", + "../interfaces/core/IFlow.sol" + ], + "versionPragmas": [ + "^0.8.9" + ], + "artifacts": [ + "DiamondInit" + ] + }, + "/home/ben/Documents/blockspace_flowspace/flowspace-contracts/contracts/libraries/core/LibAutomate.sol": { + "lastModificationDate": 1682658293181, + "contentHash": "65bc7bf2ffbc8f50449613396fcb2a01", + "sourceName": "contracts/libraries/core/LibAutomate.sol", + "solcConfig": { + "version": "0.8.18", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol", + "../../services/gelato/Types.sol" + ], + "versionPragmas": [ + "^0.8.9" + ], + "artifacts": [ + "LibAutomate" + ] + }, + "/home/ben/Documents/blockspace_flowspace/flowspace-contracts/contracts/libraries/core/LibControl.sol": { + "lastModificationDate": 1683290106328, + "contentHash": "0b1b629a93be4f465ffac0e313c109e5", + "sourceName": "contracts/libraries/core/LibControl.sol", + "solcConfig": { + "version": "0.8.18", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol", + "@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol", + "../utils/IterableMappingBPS.sol", + "./LibSession.sol" + ], + "versionPragmas": [ + "^0.8.9" + ], + "artifacts": [ + "LibControl" + ] + }, + "/home/ben/Documents/blockspace_flowspace/flowspace-contracts/contracts/interfaces/utils/IERC165.sol": { + "lastModificationDate": 1682495530322, + "contentHash": "0d30c8cfbfeb6c4004c757ba088c949a", + "sourceName": "contracts/interfaces/utils/IERC165.sol", + "solcConfig": { + "version": "0.8.18", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.9" + ], + "artifacts": [ + "IERC165" + ] + }, + "/home/ben/Documents/blockspace_flowspace/flowspace-contracts/contracts/interfaces/utils/ILoupe.sol": { + "lastModificationDate": 1682495534798, + "contentHash": "1be8359a6945ffeac4ca73268a0bb00b", + "sourceName": "contracts/interfaces/utils/ILoupe.sol", + "solcConfig": { + "version": "0.8.18", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.9" + ], + "artifacts": [ + "ILoupe" + ] + }, + "/home/ben/Documents/blockspace_flowspace/flowspace-contracts/contracts/interfaces/utils/IAccessControl.sol": { + "lastModificationDate": 1682495518234, + "contentHash": "90963de1668b9dde9564df1e442d112b", + "sourceName": "contracts/interfaces/utils/IAccessControl.sol", + "solcConfig": { + "version": "0.8.18", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.9" + ], + "artifacts": [ + "IAccessControl" + ] + }, + "/home/ben/Documents/blockspace_flowspace/flowspace-contracts/contracts/interfaces/utils/IUtility.sol": { + "lastModificationDate": 1682495538870, + "contentHash": "32a24a40ff6edff0981a7da0f70247d7", + "sourceName": "contracts/interfaces/utils/IUtility.sol", + "solcConfig": { + "version": "0.8.18", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.9" + ], + "artifacts": [ + "IUtility" + ] + }, + "/home/ben/Documents/blockspace_flowspace/flowspace-contracts/contracts/interfaces/core/IAutomate.sol": { + "lastModificationDate": 1682496087819, + "contentHash": "f13ae1f71cb014dfa861e36adf4bb033", + "sourceName": "contracts/interfaces/core/IAutomate.sol", + "solcConfig": { + "version": "0.8.18", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.9" + ], + "artifacts": [ + "IAutomate" + ] + }, + "/home/ben/Documents/blockspace_flowspace/flowspace-contracts/contracts/interfaces/core/IControl.sol": { + "lastModificationDate": 1683290128588, + "contentHash": "bd005bc4f231b04de1103977419c78a9", + "sourceName": "contracts/interfaces/core/IControl.sol", + "solcConfig": { + "version": "0.8.18", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.9" + ], + "artifacts": [ + "IControl" + ] + }, + "/home/ben/Documents/blockspace_flowspace/flowspace-contracts/contracts/interfaces/core/ISession.sol": { + "lastModificationDate": 1683036111979, + "contentHash": "4315a8e1c7da07e627792fd6134e6f44", + "sourceName": "contracts/interfaces/core/ISession.sol", + "solcConfig": { + "version": "0.8.18", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.9" + ], + "artifacts": [ + "ISession" + ] + }, + "/home/ben/Documents/blockspace_flowspace/flowspace-contracts/contracts/interfaces/core/IFlow.sol": { + "lastModificationDate": 1683440970884, + "contentHash": "f3a9d776ed71184f418acff8216dd064", + "sourceName": "contracts/interfaces/core/IFlow.sol", + "solcConfig": { + "version": "0.8.18", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.9" + ], + "artifacts": [ + "IFlow" + ] + }, + "/home/ben/Documents/blockspace_flowspace/flowspace-contracts/node_modules/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol": { + "lastModificationDate": 1682397875961, + "contentHash": "923d8bee2334395f7ad909b8e98e07e9", + "sourceName": "@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol", + "solcConfig": { + "version": "0.8.18", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "./ISuperfluidGovernance.sol", + "./ISuperfluidToken.sol", + "./ISuperToken.sol", + "./ISuperTokenFactory.sol", + "./ISuperAgreement.sol", + "./ISuperApp.sol", + "./Definitions.sol", + "../tokens/TokenInfo.sol", + "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "@openzeppelin/contracts/token/ERC777/IERC777.sol" + ], + "versionPragmas": [ + ">= 0.8.4" + ], + "artifacts": [ + "ISuperfluid" + ] + }, + "/home/ben/Documents/blockspace_flowspace/flowspace-contracts/contracts/services/gelato/Types.sol": { + "lastModificationDate": 1682399197372, + "contentHash": "03fb0ff3323939cc32777d816e7fb9c9", + "sourceName": "contracts/services/gelato/Types.sol", + "solcConfig": { + "version": "0.8.18", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.12" + ], + "artifacts": [ + "IAutomate", + "IOpsProxyFactory", + "ITaskTreasuryUpgradable" + ] + }, + "/home/ben/Documents/blockspace_flowspace/flowspace-contracts/node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol": { + "lastModificationDate": 1682397875961, + "contentHash": "0320a90f714843ca19373ed143fc4466", + "sourceName": "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol", + "solcConfig": { + "version": "0.8.18", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "../IERC20.sol", + "../extensions/draft-IERC20Permit.sol", + "../../../utils/Address.sol" + ], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "SafeERC20" + ] + }, + "/home/ben/Documents/blockspace_flowspace/flowspace-contracts/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": { + "lastModificationDate": 1682397874893, + "contentHash": "ad7c2d0af148c8f9f097d65deeb4da6b", + "sourceName": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "solcConfig": { + "version": "0.8.18", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "IERC20" + ] + }, + "/home/ben/Documents/blockspace_flowspace/flowspace-contracts/node_modules/@openzeppelin/contracts/utils/Address.sol": { + "lastModificationDate": 1682397873541, + "contentHash": "f31ad6fc4bbf9c06203987220156a6ba", + "sourceName": "@openzeppelin/contracts/utils/Address.sol", + "solcConfig": { + "version": "0.8.18", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.1" + ], + "artifacts": [ + "Address" + ] + }, + "/home/ben/Documents/blockspace_flowspace/flowspace-contracts/node_modules/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol": { + "lastModificationDate": 1682397875957, + "contentHash": "fb77f144244b9ab12533aa6ce85ef8c5", + "sourceName": "@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol", + "solcConfig": { + "version": "0.8.18", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "IERC20Permit" + ] + }, + "/home/ben/Documents/blockspace_flowspace/flowspace-contracts/contracts/libraries/utils/IterableMappingBPS.sol": { + "lastModificationDate": 1682698633037, + "contentHash": "073b7a17314e37a1996601a838a9e19f", + "sourceName": "contracts/libraries/utils/IterableMappingBPS.sol", + "solcConfig": { + "version": "0.8.18", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.17" + ], + "artifacts": [ + "IterableMappingBPS" + ] + }, + "/home/ben/Documents/blockspace_flowspace/flowspace-contracts/contracts/libraries/core/LibSession.sol": { + "lastModificationDate": 1685000375905, + "contentHash": "995004c6f26d0c9c063c654ea5c10d5f", + "sourceName": "contracts/libraries/core/LibSession.sol", + "solcConfig": { + "version": "0.8.18", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol", + "@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol", + "./LibControl.sol", + "./LibFlow.sol" + ], + "versionPragmas": [ + "^0.8.9" + ], + "artifacts": [ + "LibSession" + ] + }, + "/home/ben/Documents/blockspace_flowspace/flowspace-contracts/node_modules/@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol": { + "lastModificationDate": 1682397874905, + "contentHash": "e085b997d367140ccf777fbec59bc9ea", + "sourceName": "@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol", + "solcConfig": { + "version": "0.8.18", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "../interfaces/superfluid/ISuperfluid.sol", + "../interfaces/agreements/IConstantFlowAgreementV1.sol", + "../interfaces/agreements/IInstantDistributionAgreementV1.sol" + ], + "versionPragmas": [ + ">= 0.8.0" + ], + "artifacts": [ + "SuperTokenV1Library" + ] + }, + "/home/ben/Documents/blockspace_flowspace/flowspace-contracts/contracts/libraries/core/LibFlow.sol": { + "lastModificationDate": 1684747477174, + "contentHash": "075c83c71c8d27cb11c77c033e046fc7", + "sourceName": "contracts/libraries/core/LibFlow.sol", + "solcConfig": { + "version": "0.8.18", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol", + "@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol", + "./LibControl.sol", + "./LibSession.sol" + ], + "versionPragmas": [ + "^0.8.9" + ], + "artifacts": [ + "LibFlow" + ] + }, + "/home/ben/Documents/blockspace_flowspace/flowspace-contracts/node_modules/@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol": { + "lastModificationDate": 1682397875961, + "contentHash": "253f76f0473cf1297607b03447c4b53e", + "sourceName": "@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol", + "solcConfig": { + "version": "0.8.18", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "../superfluid/ISuperAgreement.sol", + "../superfluid/ISuperfluidToken.sol" + ], + "versionPragmas": [ + ">= 0.8.4" + ], + "artifacts": [ + "IConstantFlowAgreementV1" + ] + }, + "/home/ben/Documents/blockspace_flowspace/flowspace-contracts/node_modules/@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IInstantDistributionAgreementV1.sol": { + "lastModificationDate": 1682397875961, + "contentHash": "60042f78e0fa54a8547790c391ab27c1", + "sourceName": "@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IInstantDistributionAgreementV1.sol", + "solcConfig": { + "version": "0.8.18", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "../superfluid/ISuperAgreement.sol", + "../superfluid/ISuperfluidToken.sol" + ], + "versionPragmas": [ + ">= 0.8.4" + ], + "artifacts": [ + "IInstantDistributionAgreementV1" + ] + }, + "/home/ben/Documents/blockspace_flowspace/flowspace-contracts/node_modules/@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.sol": { + "lastModificationDate": 1682397875961, + "contentHash": "6326411b7eb3d451fdffd149d821a7cb", + "sourceName": "@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.sol", + "solcConfig": { + "version": "0.8.18", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + ">= 0.8.4" + ], + "artifacts": [ + "TokenInfo" + ] + }, + "/home/ben/Documents/blockspace_flowspace/flowspace-contracts/node_modules/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance.sol": { + "lastModificationDate": 1682397875961, + "contentHash": "f39a1c0568c38958f3c5c80b6fb1603c", + "sourceName": "@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance.sol", + "solcConfig": { + "version": "0.8.18", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "./ISuperAgreement.sol", + "./ISuperToken.sol", + "./ISuperfluidToken.sol", + "./ISuperfluid.sol" + ], + "versionPragmas": [ + ">= 0.8.4" + ], + "artifacts": [ + "ISuperfluidGovernance" + ] + }, + "/home/ben/Documents/blockspace_flowspace/flowspace-contracts/node_modules/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol": { + "lastModificationDate": 1682397875957, + "contentHash": "49d978f06d4edeb5125a7152d6897e69", + "sourceName": "@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.sol", + "solcConfig": { + "version": "0.8.18", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "./ISuperfluidToken.sol" + ], + "versionPragmas": [ + ">= 0.8.4" + ], + "artifacts": [ + "ISuperAgreement" + ] + }, + "/home/ben/Documents/blockspace_flowspace/flowspace-contracts/node_modules/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol": { + "lastModificationDate": 1682397875961, + "contentHash": "095cd6cdf7df13a739649f8917862cb0", + "sourceName": "@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.sol", + "solcConfig": { + "version": "0.8.18", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "./ISuperAgreement.sol" + ], + "versionPragmas": [ + ">= 0.8.4" + ], + "artifacts": [ + "ISuperfluidToken" + ] + }, + "/home/ben/Documents/blockspace_flowspace/flowspace-contracts/node_modules/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperTokenFactory.sol": { + "lastModificationDate": 1682397875961, + "contentHash": "449ec5f0a35b1c86a9fd5b8bb0d3bd90", + "sourceName": "@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperTokenFactory.sol", + "solcConfig": { + "version": "0.8.18", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "./ISuperToken.sol", + "../tokens/ERC20WithTokenInfo.sol" + ], + "versionPragmas": [ + ">= 0.8.4" + ], + "artifacts": [ + "ISuperTokenFactory" + ] + }, + "/home/ben/Documents/blockspace_flowspace/flowspace-contracts/node_modules/@openzeppelin/contracts/token/ERC777/IERC777.sol": { + "lastModificationDate": 1682397874893, + "contentHash": "35b56a00de0fb16f9e6a8d7464d31b0b", + "sourceName": "@openzeppelin/contracts/token/ERC777/IERC777.sol", + "solcConfig": { + "version": "0.8.18", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "IERC777" + ] + }, + "/home/ben/Documents/blockspace_flowspace/flowspace-contracts/node_modules/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.sol": { + "lastModificationDate": 1682397875961, + "contentHash": "013ebf846bf7079b1aaee07a4bd5dd7e", + "sourceName": "@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.sol", + "solcConfig": { + "version": "0.8.18", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "./ISuperfluid.sol", + "./ISuperfluidToken.sol", + "../tokens/TokenInfo.sol", + "@openzeppelin/contracts/token/ERC777/IERC777.sol", + "@openzeppelin/contracts/token/ERC20/IERC20.sol" + ], + "versionPragmas": [ + ">= 0.8.4" + ], + "artifacts": [ + "ISuperToken" + ] + }, + "/home/ben/Documents/blockspace_flowspace/flowspace-contracts/node_modules/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperApp.sol": { + "lastModificationDate": 1682397875961, + "contentHash": "3b1a28352fc3ab7b2659bc3ab3c7bb92", + "sourceName": "@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperApp.sol", + "solcConfig": { + "version": "0.8.18", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "./ISuperToken.sol" + ], + "versionPragmas": [ + ">= 0.8.4" + ], + "artifacts": [ + "ISuperApp" + ] + }, + "/home/ben/Documents/blockspace_flowspace/flowspace-contracts/node_modules/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol": { + "lastModificationDate": 1682397875957, + "contentHash": "c118221a38683150d24833eadb9c8b37", + "sourceName": "@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/Definitions.sol", + "solcConfig": { + "version": "0.8.18", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + ">= 0.8.4" + ], + "artifacts": [ + "BatchOperation", + "ContextDefinitions", + "FlowOperatorDefinitions", + "SuperAppDefinitions", + "SuperfluidGovernanceConfigs" + ] + }, + "/home/ben/Documents/blockspace_flowspace/flowspace-contracts/node_modules/@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo.sol": { + "lastModificationDate": 1682397875961, + "contentHash": "77968d7579793b9f87e33dec4d917f44", + "sourceName": "@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo.sol", + "solcConfig": { + "version": "0.8.18", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "./TokenInfo.sol" + ], + "versionPragmas": [ + ">= 0.8.4" + ], + "artifacts": [ + "ERC20WithTokenInfo" + ] + }, + "/home/ben/Documents/blockspace_flowspace/flowspace-contracts/contracts/facets/core/Flow.sol": { + "lastModificationDate": 1683440955803, + "contentHash": "d4aad96f89b7420e1d29570bf308f5be", + "sourceName": "contracts/facets/core/Flow.sol", + "solcConfig": { + "version": "0.8.18", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol", + "@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol", + "../../libraries/core/LibAutomate.sol", + "../../libraries/core/LibControl.sol", + "../../libraries/core/LibSession.sol", + "../../libraries/core/LibFlow.sol", + "../../interfaces/core/IFlow.sol", + "../../services/gelato/Types.sol" + ], + "versionPragmas": [ + "^0.8.9" + ], + "artifacts": [ + "Flow" + ] + }, + "/home/ben/Documents/blockspace_flowspace/flowspace-contracts/contracts/facets/core/Control.sol": { + "lastModificationDate": 1683290118556, + "contentHash": "c625b1d98a8a1153445d50ca2bcbdf0f", + "sourceName": "contracts/facets/core/Control.sol", + "solcConfig": { + "version": "0.8.18", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "../../libraries/utils/LibAccessControl.sol", + "../../libraries/core/LibControl.sol", + "../../interfaces/core/IControl.sol", + "../../libraries/utils/IterableMappingBPS.sol" + ], + "versionPragmas": [ + "^0.8.9" + ], + "artifacts": [ + "Control" + ] + }, + "/home/ben/Documents/blockspace_flowspace/flowspace-contracts/contracts/facets/utils/Utility.sol": { + "lastModificationDate": 1682495509590, + "contentHash": "d46bb3500d8bfbb58dfcc25288c70646", + "sourceName": "contracts/facets/utils/Utility.sol", + "solcConfig": { + "version": "0.8.18", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "@openzeppelin/contracts/security/ReentrancyGuard.sol", + "../../libraries/utils/LibAccessControl.sol", + "../../interfaces/utils/IUtility.sol" + ], + "versionPragmas": [ + "^0.8.9" + ], + "artifacts": [ + "Utility" + ] + }, + "/home/ben/Documents/blockspace_flowspace/flowspace-contracts/node_modules/@openzeppelin/contracts/security/ReentrancyGuard.sol": { + "lastModificationDate": 1682397873505, + "contentHash": "a8e2d1c30042f64ed89c9d4157eb6cb9", + "sourceName": "@openzeppelin/contracts/security/ReentrancyGuard.sol", + "solcConfig": { + "version": "0.8.18", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "ReentrancyGuard" + ] + }, + "/home/ben/Documents/blockspace_flowspace/flowspace-contracts/contracts/facets/utils/Cut.sol": { + "lastModificationDate": 1682495499870, + "contentHash": "9239e97603fe9ad6dc0ddd7225b4b99b", + "sourceName": "contracts/facets/utils/Cut.sol", + "solcConfig": { + "version": "0.8.18", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "../../interfaces/utils/ICut.sol", + "../../libraries/utils/LibDiamond.sol", + "../../libraries/utils/LibAccessControl.sol" + ], + "versionPragmas": [ + "^0.8.9" + ], + "artifacts": [ + "Cut" + ] + }, + "/home/ben/Documents/blockspace_flowspace/flowspace-contracts/contracts/facets/utils/Loupe.sol": { + "lastModificationDate": 1682495505170, + "contentHash": "6a53933c0e1a9cf69790cd316b673f66", + "sourceName": "contracts/facets/utils/Loupe.sol", + "solcConfig": { + "version": "0.8.18", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "../../libraries/utils/LibDiamond.sol", + "../../interfaces/utils/ILoupe.sol", + "../../interfaces/utils/IERC165.sol" + ], + "versionPragmas": [ + "^0.8.9" + ], + "artifacts": [ + "Loupe" + ] + }, + "/home/ben/Documents/blockspace_flowspace/flowspace-contracts/contracts/facets/utils/AccessControl.sol": { + "lastModificationDate": 1682495493098, + "contentHash": "a246dee3852a54c07158670d1cd6e0c1", + "sourceName": "contracts/facets/utils/AccessControl.sol", + "solcConfig": { + "version": "0.8.18", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "../../libraries/utils/LibAccessControl.sol", + "../../interfaces/utils/IAccessControl.sol" + ], + "versionPragmas": [ + "^0.8.9" + ], + "artifacts": [ + "AccessControl" + ] + }, + "/home/ben/Documents/blockspace_flowspace/flowspace-contracts/contracts/facets/core/Automate.sol": { + "lastModificationDate": 1682496088499, + "contentHash": "7053d881950920243e1a8ff57698bf46", + "sourceName": "contracts/facets/core/Automate.sol", + "solcConfig": { + "version": "0.8.18", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "../../libraries/utils/LibAccessControl.sol", + "../../libraries/core/LibAutomate.sol", + "../../interfaces/core/IAutomate.sol" + ], + "versionPragmas": [ + "^0.8.9" + ], + "artifacts": [ + "Automate" + ] + }, + "/home/ben/Documents/blockspace_flowspace/flowspace-contracts/contracts/facets/core/Session.sol": { + "lastModificationDate": 1683431032403, + "contentHash": "5ad8e98e8d5c316cdff8eeaa34b29543", + "sourceName": "contracts/facets/core/Session.sol", + "solcConfig": { + "version": "0.8.18", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "../../libraries/core/LibControl.sol", + "../../libraries/core/LibSession.sol", + "../../interfaces/core/ISession.sol" + ], + "versionPragmas": [ + "^0.8.9" + ], + "artifacts": [ + "Session" + ] + }, + "/home/ben/Documents/blockspace_flowspace/flowspace-contracts/contracts/archives/OldLibFlow.sol": { + "lastModificationDate": 1683431093247, + "contentHash": "77cffb80f0ce4302ebae2704fe0be679", + "sourceName": "contracts/archives/OldLibFlow.sol", + "solcConfig": { + "version": "0.8.18", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol", + "@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol", + "../libraries/core/LibControl.sol", + "../libraries/core/LibSession.sol" + ], + "versionPragmas": [ + "^0.8.9" + ], + "artifacts": [ + "OldLibFlow" + ] + }, + "/home/ben/Documents/blockspace_flowspace/flowspace-contracts/contracts/archives/OldFlow.sol": { + "lastModificationDate": 1683431578983, + "contentHash": "4c2ff4f6a08b19461d70d731af468f77", + "sourceName": "contracts/archives/OldFlow.sol", + "solcConfig": { + "version": "0.8.18", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol", + "@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol", + "../libraries/core/LibAutomate.sol", + "../libraries/core/LibControl.sol", + "../libraries/core/LibSession.sol", + "./OldLibFlow.sol", + "../services/gelato/Types.sol" + ], + "versionPragmas": [ + "^0.8.9" + ], + "artifacts": [ + "OldFlow" + ] + }, + "/home/ben/Documents/blockspace_flowspace/flowspace-contracts/contracts/libraries/core/LibTemplate.sol": { + "lastModificationDate": 1682479599061, + "contentHash": "bd67650bcdaf0b837c5e90f5056ca426", + "sourceName": "contracts/libraries/core/LibTemplate.sol", + "solcConfig": { + "version": "0.8.18", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.9" + ], + "artifacts": [ + "LibTemplate" + ] + }, + "/home/ben/Documents/blockspace_flowspace/flowspace-contracts/contracts/libraries/utils/LibSecurity.sol": { + "lastModificationDate": 1682495557863, + "contentHash": "7bbfbce9629ce2a5cd51a776ae08060a", + "sourceName": "contracts/libraries/utils/LibSecurity.sol", + "solcConfig": { + "version": "0.8.18", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "@openzeppelin/contracts/interfaces/IERC1271.sol" + ], + "versionPragmas": [ + "^0.8.9" + ], + "artifacts": [ + "LibSecurity" + ] + }, + "/home/ben/Documents/blockspace_flowspace/flowspace-contracts/node_modules/@openzeppelin/contracts/interfaces/IERC1271.sol": { + "lastModificationDate": 1682397873497, + "contentHash": "8fe867b95c856b204f954a1910e28a1e", + "sourceName": "@openzeppelin/contracts/interfaces/IERC1271.sol", + "solcConfig": { + "version": "0.8.18", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "IERC1271" + ] + }, + "/home/ben/Documents/blockspace_flowspace/flowspace-contracts/contracts/tests/InitTest.sol": { + "lastModificationDate": 1682399208732, + "contentHash": "48b107e794403ba9f191c90eadcbe94f", + "sourceName": "contracts/tests/InitTest.sol", + "solcConfig": { + "version": "0.8.18", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "./LibTest.sol" + ], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "InitTest" + ] + }, + "/home/ben/Documents/blockspace_flowspace/flowspace-contracts/contracts/tests/LibTest.sol": { + "lastModificationDate": 1682399208732, + "contentHash": "6786e1bfb100b920146b49cf157d3280", + "sourceName": "contracts/tests/LibTest.sol", + "solcConfig": { + "version": "0.8.18", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "LibTest" + ] + }, + "/home/ben/Documents/blockspace_flowspace/flowspace-contracts/contracts/tests/Test5Facet.sol": { + "lastModificationDate": 1682399208736, + "contentHash": "7ce1d74feee90418aea8ad6736755fe8", + "sourceName": "contracts/tests/Test5Facet.sol", + "solcConfig": { + "version": "0.8.18", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [ + "./LibTest.sol" + ], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "Test5Facet" + ] + }, + "/home/ben/Documents/blockspace_flowspace/flowspace-contracts/contracts/tests/Test1Facet.sol": { + "lastModificationDate": 1682399208732, + "contentHash": "54c31ecb61060b9d22f63164d37b6d91", + "sourceName": "contracts/tests/Test1Facet.sol", + "solcConfig": { + "version": "0.8.18", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "Test1Facet" + ] + }, + "/home/ben/Documents/blockspace_flowspace/flowspace-contracts/contracts/tests/Test2Facet.sol": { + "lastModificationDate": 1682399208732, + "contentHash": "de378098a7ee8e5d17f38f329b335739", + "sourceName": "contracts/tests/Test2Facet.sol", + "solcConfig": { + "version": "0.8.18", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "Test2Facet" + ] + }, + "/home/ben/Documents/blockspace_flowspace/flowspace-contracts/contracts/tests/Test3Facet.sol": { + "lastModificationDate": 1682399208736, + "contentHash": "47cc24b8c45749753fdd21e76aad3ca8", + "sourceName": "contracts/tests/Test3Facet.sol", + "solcConfig": { + "version": "0.8.18", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "Test3Facet" + ] + }, + "/home/ben/Documents/blockspace_flowspace/flowspace-contracts/contracts/tests/Test3Facet2.sol": { + "lastModificationDate": 1682399208736, + "contentHash": "3739052ae9374a4e5640a098ea3b10ac", + "sourceName": "contracts/tests/Test3Facet2.sol", + "solcConfig": { + "version": "0.8.18", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "Test3Facet2" + ] + }, + "/home/ben/Documents/blockspace_flowspace/flowspace-contracts/contracts/tests/Test4Facet.sol": { + "lastModificationDate": 1682399208736, + "contentHash": "8d7dd381998ed78dae2077916626b7b8", + "sourceName": "contracts/tests/Test4Facet.sol", + "solcConfig": { + "version": "0.8.18", + "settings": { + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "imports": [], + "versionPragmas": [ + "^0.8.0" + ], + "artifacts": [ + "Test4Facet" + ] + } + } +} diff --git a/contracts/contracts/Diamond.sol b/contracts/contracts/Diamond.sol new file mode 100644 index 0000000..0a87b44 --- /dev/null +++ b/contracts/contracts/Diamond.sol @@ -0,0 +1,71 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.9; + +import {LibDiamond} from "./libraries/utils/LibDiamond.sol"; +import {LibAccessControl} from "./libraries/utils/LibAccessControl.sol"; +import {ICut} from "./interfaces/utils/ICut.sol"; + +contract Diamond { + constructor(address _contractOwner, address _diamondCutFacet) payable { + LibAccessControl._setupRole( + LibAccessControl.DEFAULT_ADMIN_ROLE, + _contractOwner + ); + LibAccessControl._setupRole( + LibAccessControl.MAINTAINER_ROLE, + _contractOwner + ); + LibAccessControl._setupRole( + LibAccessControl.TREASURER_ROLE, + _contractOwner + ); + LibAccessControl._setupRole( + LibAccessControl.STRATEGIST_ROLE, + _contractOwner + ); + + // Add the diamondCut external function from the diamondCutFacet + ICut.FacetCut[] memory cut = new ICut.FacetCut[](1); + bytes4[] memory functionSelectors = new bytes4[](1); + functionSelectors[0] = ICut.diamondCut.selector; + cut[0] = ICut.FacetCut({ + facetAddress: _diamondCutFacet, + action: ICut.FacetCutAction.Add, + functionSelectors: functionSelectors + }); + LibDiamond._cut(cut, address(0), ""); + } + + // Find facet for function that is called and execute the + // function if a facet is found and return any value. + fallback() external payable { + LibDiamond.StorageDiamond storage s; + bytes32 position = LibDiamond.STORAGE_POSITION_DIAMOND; + // get diamond storage + assembly { + s.slot := position + } + // get facet from function selector + address facet = s.selectorToFacetAndPosition[msg.sig].facetAddress; + require(facet != address(0), "Diamond: Function does not exist"); + // Execute external function from facet using delegatecall and return any value. + assembly { + // copy function selector and any arguments + calldatacopy(0, 0, calldatasize()) + // execute function call using the facet + let result := delegatecall(gas(), facet, 0, calldatasize(), 0, 0) + // get any return value + returndatacopy(0, 0, returndatasize()) + // return any return value or error back to the caller + switch result + case 0 { + revert(0, returndatasize()) + } + default { + return(0, returndatasize()) + } + } + } + + receive() external payable {} +} diff --git a/contracts/contracts/archives/OldFlow.sol b/contracts/contracts/archives/OldFlow.sol new file mode 100644 index 0000000..cdfe0fa --- /dev/null +++ b/contracts/contracts/archives/OldFlow.sol @@ -0,0 +1,302 @@ +// SPDX-License-Identifier: BUSL-1.1 +pragma solidity ^0.8.9; + +import {ISuperToken} from "@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol"; +import {SuperTokenV1Library} from "@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol"; + +import {LibAutomate} from "../libraries/core/LibAutomate.sol"; +import {LibControl, ArrayLengthNotMatch} from "../libraries/core/LibControl.sol"; +import {LibSession, SessionNotStarted} from "../libraries/core/LibSession.sol"; +import {OldLibFlow} from "./OldLibFlow.sol"; + +import "../services/gelato/Types.sol"; + +error TooEarly(); +error UserFlowNotStopped(); + +contract OldFlow { + // using SuperTokenV1Library for ISuperToken; + // /** + // * important: + // * with this `openFlow` implementation, it is possible to + // * open multiple flows with same session (cost to much to implement checks) + // * this does not cause an + // */ + // /** + // * // TODO: need to check if you have sufficient deposits left or not + // * SOL1: have user manually off flow + // * SOL2: force settle blaance before open next flow (also force settle before withdraw) + // */ + // function openFlow( + // address _receiver, + // address _superToken, + // uint256 _lifespan + // ) external { + // LibFlow._setRemainingBalance(msg.sender, _superToken); // TODO: test + // LibAutomate._requireSufficientAppGelatoBalance(); + // LibControl._requireSuperTokenSupported(_superToken); + // LibSession.StorageSession storage sSession = LibSession + // ._storageSession(); + // uint256 activeSessionNonce = LibSession._getCurrentNonce( + // _receiver, + // _superToken + // ); + // if ( + // sSession + // .sessionRecord[_receiver][_superToken][activeSessionNonce] + // .timestampStart == 0 + // ) revert SessionNotStarted(); + // LibFlow.StorageFlow storage sFlow = LibFlow._storageFlow(); + // int96 flowRate = sSession + // .sessionRecord[_receiver][_superToken][activeSessionNonce] + // .effectiveFlowRate; + // LibControl._requireSufficientAppSTBalance(_superToken, flowRate); + // uint256 scheduledLifespan = LibFlow._getScheduledLifespan( + // msg.sender, + // _superToken, + // _lifespan, + // flowRate + // ); // indirectly checks if sufficient deposit or not + // // 1. set flow info + // uint256 newFlowNonce = LibFlow._getNewNonce(msg.sender, _superToken); + // LibFlow._requireSingleFlow(_superToken); // as we cannot detect when user is trying to open multiple active flows to same session, we just restrict flow opening to 1 active globally at a time + // sFlow + // .flowRecord[msg.sender][_superToken][newFlowNonce].receiver = _receiver; + // sFlow + // .flowRecord[msg.sender][_superToken][newFlowNonce] + // .sessionNonce = activeSessionNonce; + // LibControl.StorageControl storage sControl = LibControl + // ._storageControl(); + // uint256 newControlNonce = sControl.controlNonce[_superToken]; + // sControl + // .controlRecord[_superToken][newControlNonce].receiver = _receiver; + // sControl + // .controlRecord[_superToken][newControlNonce] + // .sessionNonce = activeSessionNonce; + // sControl + // .controlRecord[_superToken][newControlNonce].timestampIncrease = block + // .timestamp; + // sFlow + // .flowRecord[msg.sender][_superToken][newFlowNonce] + // .controlNonce = newControlNonce; + // // 2. start flow immediately + // LibFlow._increaseFlow( + // _superToken, + // msg.sender, + // _receiver, + // newFlowNonce, + // flowRate + // ); + // // // 3. schedule stop flow + // ModuleData memory moduleDataFlowStop = ModuleData({ + // modules: new Module[](2), + // args: new bytes[](1) + // }); + // moduleDataFlowStop.modules[0] = Module.TIME; + // moduleDataFlowStop.modules[1] = Module.SINGLE_EXEC; + // moduleDataFlowStop.args[0] = LibAutomate._timeModuleArg( + // block.timestamp + scheduledLifespan, + // scheduledLifespan + // ); + // bytes memory execDataFlowStop = abi.encodeWithSelector( + // this.decreaseFlow.selector, + // _superToken, + // msg.sender, + // _receiver, + // newFlowNonce, + // flowRate + // ); + // sFlow + // .flowRecord[msg.sender][_superToken][newFlowNonce].taskId = LibAutomate + // ._storageAutomate() + // .gelatoAutobot + // .createTask( + // address(this), + // execDataFlowStop, + // moduleDataFlowStop, + // address(0) + // ); + // // 4. finishing + // sFlow.flowNonce[msg.sender][_superToken] += 1; + // sControl.controlNonce[_superToken] += 1; + // } + // function decreaseFlow( + // address _superToken, + // address _sender, + // address _receiver, + // uint256 _nonce, + // int96 _flowRate + // ) external { + // LibAutomate._requireOnlyAutobot(); + // LibFlow._decreaseFlow( + // _superToken, + // _sender, + // _receiver, + // _nonce, + // _flowRate + // ); + // } // for autobot use // TODO: test frontend no one can call it !! + // function closeFlow(address _superToken, uint256 _nonce) external { + // LibFlow.StorageFlow storage sFlow = LibFlow._storageFlow(); + // uint256 minimumEndTimestamp = sFlow + // .flowRecord[msg.sender][_superToken][_nonce].timestampIncrease + + // LibControl._storageControl().minimumLifespan; + // if (block.timestamp < minimumEndTimestamp) revert TooEarly(); + // // no need check supertoken valid or not in case it suddenly goes unsupported + // // delete task + // LibAutomate._storageAutomate().gelatoAutobot.cancelTask( + // sFlow.flowRecord[msg.sender][_superToken][_nonce].taskId + // ); + // // delete flow + // address receiver = sFlow + // .flowRecord[msg.sender][_superToken][_nonce].receiver; + // uint256 sessionNonce = sFlow + // .flowRecord[msg.sender][_superToken][_nonce].sessionNonce; + // LibFlow._decreaseFlow( + // _superToken, + // msg.sender, + // receiver, + // _nonce, + // LibSession + // ._storageSession() + // .sessionRecord[receiver][_superToken][sessionNonce] + // .effectiveFlowRate + // ); + // } + // function depositSuperToken(address _superToken, uint256 _amount) external { + // LibControl._requireSuperTokenSupported(_superToken); + // LibFlow._depositSuperToken(_superToken, _amount); + // } + // function withdrawSuperToken(address _superToken, uint256 _amount) external { + // /** + // * don't need to check if supertoken suppported or not + // * as there may be a chance that a supported supertoken + // * gets removed but there is still user funds in the app + // * + // * in that case, just let user withdraw as will fail anyway if 0 amount + // */ + // LibFlow.StorageFlow storage sFlow = LibFlow._storageFlow(); + // uint256 latestFlowNonce = LibFlow._getCurrentNonce( + // msg.sender, + // _superToken + // ); + // uint256 timestampIncrease = sFlow + // .flowRecord[msg.sender][_superToken][latestFlowNonce].timestampIncrease; + // uint256 timestampDecrease = sFlow + // .flowRecord[msg.sender][_superToken][latestFlowNonce].timestampDecrease; + // (, , uint256 timestampStart, uint256 timestampStop) = LibSession + // ._getSessionDataFromFlow(msg.sender, _superToken, latestFlowNonce); + // if ( + // timestampStart != 0 && // to account for new addresses that has not started any flow yet + // timestampIncrease >= timestampStart && + // timestampStop == 0 && + // timestampDecrease == 0 + // ) revert UserFlowNotStopped(); // TODO: standardize with "LibFlow._hasActiveFlow" + // LibFlow._withdrawSuperToken(_superToken, _amount); + // } // TODO: test + // function withdrawSuperTokens( + // address[] memory _superTokens, + // uint256[] memory _amounts + // ) external { + // if (_superTokens.length != _amounts.length) + // revert ArrayLengthNotMatch(); + // LibFlow.StorageFlow storage sFlow = LibFlow._storageFlow(); + // for (uint256 i = 0; i < _superTokens.length; i++) { + // /** + // * don't need to check if supertoken suppported or not + // * as there may be a chance that a supported supertoken + // * gets removed but there is still user funds in the app + // * + // * in that case, just let user withdraw as will fail anyway if 0 amount + // */ + // uint256 latestFlowNonce = LibFlow._getCurrentNonce( + // msg.sender, + // _superTokens[i] + // ); + // uint256 timestampIncrease = sFlow + // .flowRecord[msg.sender][_superTokens[i]][latestFlowNonce] + // .timestampIncrease; + // uint256 timestampDecrease = sFlow + // .flowRecord[msg.sender][_superTokens[i]][latestFlowNonce] + // .timestampDecrease; + // (, , uint256 timestampStart, uint256 timestampStop) = LibSession + // ._getSessionDataFromFlow( + // msg.sender, + // _superTokens[i], + // latestFlowNonce + // ); + // if ( + // timestampStart != 0 && // to account for new addresses that has not started any flow yet + // timestampIncrease >= timestampStart && + // timestampStop == 0 && + // timestampDecrease == 0 + // ) revert UserFlowNotStopped(); + // LibFlow._withdrawSuperToken(_superTokens[i], _amounts[i]); + // } + // } + // function getAmountFlowed( + // address _user, + // address _superToken + // ) external view returns (uint256) { + // return LibFlow._getAmountFlowed(_user, _superToken); + // } + // // function getEffectiveBalanceRead( + // // address _user, + // // address _superToken + // // ) external view returns (uint256) { + // // return LibFlow._getEffectiveBalanceRead(_user, _superToken); + // // } // TODO: this does not account for if broadcaster is still live or not !! + // function getValidSafeLifespan( + // address _user, + // address _superToken, + // int96 _flowRate + // ) external view returns (uint256) { + // return LibFlow._getValidSafeLifespan(_user, _superToken, _flowRate); + // } // TODO: not so useful... remove.. ? + // /** + // * use `isViewSessionAllowed` to easily determine if viewer can "join room" or not + // * !! NOT used to determine if can `openFlow` or not... + // */ + // function isViewSessionAllowed( + // address _viewer, + // address _broadcaster + // ) external view returns (bool) { + // return LibFlow._isViewSessionAllowed(_viewer, _broadcaster); + // } + // function hasActiveFlow( + // address _user, + // address _superToken + // ) external view returns (bool) { + // return LibFlow._hasActiveFlow(_user, _superToken); + // } // TODO: test + // function getNewFlowNonce( + // address _user, + // address _superToken + // ) external view returns (uint256) { + // return LibFlow._getNewNonce(_user, _superToken); + // } // TODO: test + // function getFlowData( + // address _user, + // address _superToken, + // uint256 _nonce + // ) external view returns (address, uint256, uint256, uint256, bytes32) { + // return LibFlow._getFlowData(_user, _superToken, _nonce); + // } + // function getDepositUser( + // address _user, + // address _superToken + // ) external view returns (uint256) { + // return LibFlow._getDepositUser(_user, _superToken); + // } + // function getDepositTotal( + // address _superToken + // ) external view returns (uint256) { + // return LibFlow._getDepositTotal(_superToken); + // } +} + +// TODO: test - % take mechanism (just reduce flowrate based on % and leave cash in app contract?) +// TODO: give broadcaster to optionally set an automated end date (do after get funding) - one reason to do this is viewer cannot withdraw if bc still live !! +// TODO: emit events throughout (especially session & flow creation) so can track user stats eg: avg duration of flow, avg flow rate, sess vs flow count etc.. +// TODO: how to penalize broadcaster if dont end flow +// // TODO: require checks for all fns diff --git a/contracts/contracts/archives/OldLibFlow.sol b/contracts/contracts/archives/OldLibFlow.sol new file mode 100644 index 0000000..4f4a2bf --- /dev/null +++ b/contracts/contracts/archives/OldLibFlow.sol @@ -0,0 +1,469 @@ +//SPDX-License-Identifier: BUSL-1.1 +pragma solidity ^0.8.9; + +import {ISuperToken} from "@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol"; +import {SuperTokenV1Library} from "@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol"; + +import {LibControl, ContractError} from "../libraries/core/LibControl.sol"; +import {LibSession} from "../libraries/core/LibSession.sol"; + +error InsufficientFunds(); +error InsufficientLifespan1(); +error InsufficientLifespan2(); +error InsufficientLifespan3(); +error OnlySingleFlowAllowed(); +error InvalidBalance1(); +error InvalidBalance2(); + +library OldLibFlow { + using SuperTokenV1Library for ISuperToken; + + bytes32 constant STORAGE_POSITION_FLOW = keccak256("ds.flow"); + + struct FlowRecord { + uint256 controlNonce; // TODO: add to flow test + address receiver; + uint256 sessionNonce; + uint256 timestampIncrease; // timestamp at which viewer opened a flow with bc + uint256 timestampDecrease; // timestamp at which viewer closed a flow with bc // may be 0 + bytes32 taskId; // decrease flow of viewer to broadcaster + // bool isBalanceSettled; + } + + struct StorageFlow { + // mapping(address => mapping(address => uint256)) unsettledFlowNonce; // viewer --> superToken --> nonce (counter) from this nonce count onwards is still unsettled + mapping(address => mapping(address => uint256)) flowNonce; // viewer --> superToken --> nonce (counter) + mapping(address => mapping(address => mapping(uint256 => FlowRecord))) flowRecord; // viewer --> superToken --> nonce --> flow record + // + mapping(address => mapping(address => uint256)) deposits; // viewer --> superToken --> amount deposit + mapping(address => uint256) totalDeposits; // superToken --> total amount + } + + function _storageFlow() internal pure returns (StorageFlow storage s) { + bytes32 position = STORAGE_POSITION_FLOW; + assembly { + s.slot := position + } + } + + ///// ------- functions ------ ///// + + ///// -------- mains --------- ///// + + function _depositSuperToken(address _superToken, uint256 _amount) internal { + ISuperToken(_superToken).transferFrom( + msg.sender, + address(this), + _amount + ); + + _storageFlow().deposits[msg.sender][_superToken] += _amount; + _storageFlow().totalDeposits[_superToken] += _amount; + } + + function _withdrawSuperToken( + address _superToken, + uint256 _amount + ) internal { + // uint256 amountRemaining = _getEffectiveBalance(msg.sender, _superToken); + _setRemainingBalance(msg.sender, _superToken); // TODO: test + + uint256 amountRemaining = _storageFlow().deposits[msg.sender][ + _superToken + ]; + + if (amountRemaining < _amount) revert InsufficientFunds(); + + _storageFlow().deposits[msg.sender][_superToken] -= _amount; + _storageFlow().totalDeposits[_superToken] -= _amount; + + ISuperToken(_superToken).transferFrom( + address(this), + msg.sender, + _amount + ); + } + + ///// ------- requires ------- ///// + + function _requireSingleFlow(address _superToken) internal view { + if (_hasActiveFlow(msg.sender, _superToken)) + revert OnlySingleFlowAllowed(); + } + + ///// ------- setters -------- ///// + + function _setRemainingBalance(address _user, address _superToken) internal { + uint256 amountFlowed = _getAmountFlowed(_user, _superToken); + + _storageFlow().deposits[_user][_superToken] -= amountFlowed; + _storageFlow().totalDeposits[_superToken] -= amountFlowed; + + if (_storageFlow().deposits[_user][_superToken] < 0) + revert InvalidBalance1(); // should never be run! + if (_storageFlow().totalDeposits[_superToken] < 0) + revert InvalidBalance2(); // should never be run! + } + + ///// ------- getters -------- ///// + + function _getNewNonce( + address _user, + address _superToken + ) internal view returns (uint256) { + return _storageFlow().flowNonce[_user][_superToken]; + } + + function _getCurrentNonce( + address _user, + address _superToken + ) internal view returns (uint256) { + uint256 nonce = _storageFlow().flowNonce[_user][_superToken]; + return nonce == 0 ? 0 : nonce - 1; + } + + function _getValidSafeLifespan( + address _user, + address _superToken, + int96 _flowRate + ) internal view returns (uint256) { + uint256 unsafeLifespan = _storageFlow().deposits[_user][_superToken] / + uint256(uint96(_flowRate)); + + LibControl.StorageControl storage sControl = LibControl + ._storageControl(); + + if (unsafeLifespan < sControl.minimumEndDuration) + revert InsufficientLifespan1(); + + uint256 safeLifespan = unsafeLifespan - sControl.minimumEndDuration; + + if (safeLifespan < sControl.minimumLifespan) + revert InsufficientLifespan2(); + + return safeLifespan; + } + + /** + * flowRate --> 1 sec + * maximumFlowAmount --> maximumFlowAmount/flowRate [in sec] + */ + function _getScheduledLifespan( + address _user, + address _superToken, + uint256 _lifespan, + int96 _flowRate + ) internal view returns (uint256) { + uint256 safeLifespan = _getValidSafeLifespan( + _user, + _superToken, + _flowRate + ); + + LibControl.StorageControl storage sControl = LibControl + ._storageControl(); + if (_lifespan < sControl.minimumEndDuration + sControl.minimumLifespan) + revert InsufficientLifespan3(); + + return _lifespan >= safeLifespan ? safeLifespan : _lifespan; + } + + function _getAmountFlowed( + address _user, + address _superToken + ) internal view returns (uint256) { + uint256 amountFlowed; + uint256 currentNonce = _getCurrentNonce(_user, _superToken); + ( + address receiver, + uint256 sessionNonce, + uint256 timestampIncrease, + uint256 timestampDecrease, + + ) = _getFlowData(_user, _superToken, currentNonce); + (, uint96 flowRate, , uint256 timestampStop) = LibSession + ._getSessionData(receiver, _superToken, sessionNonce); + + if (timestampDecrease != 0) { + amountFlowed = + uint256(flowRate) * + (timestampDecrease - timestampIncrease); + } else if (timestampStop != 0) { + amountFlowed = + uint256(flowRate) * + (timestampStop - timestampIncrease); + } else { + amountFlowed = 0; + } + + return amountFlowed; + } + + // // NOTE: when edit this, edit `_getEffectiveBalanceRead` accordingly as well + // function _getEffectiveBalance( + // address _user, + // address _superToken + // ) internal returns (uint256) { + // StorageFlow storage sFlow = _storageFlow(); + // uint256 unsettledFlowNonce = sFlow.unsettledFlowNonce[_user][ + // _superToken + // ]; + // uint256 remainingNonces = _getNewNonce(_user, _superToken) - + // unsettledFlowNonce; // as long as unsettledFlowNonce's state is only altered within `_getEffectiveBalance`, remainingNonces will not be negative value + + // uint256 amountFlow; + // for (uint256 i = 0; i < remainingNonces; i++) { + // // uint256 ii = unsettledFlowNonce + i; + // // uint256 timestampIncrease = sFlow + // // .flowRecord[_user][_superToken][ii].timestampIncrease; + // // uint256 timestampDecrease = sFlow + // // .flowRecord[_user][_superToken][ii].timestampDecrease; + + // // (, uint96 flowRate, , uint256 timestampStop) = LibSession + // // ._getSessionDataFromFlow(_superToken, ii); + + // // if (timestampDecrease != 0) { + // // amountFlow += + // // uint256(flowRate) * + // // (timestampDecrease - timestampIncrease); + // // } else if (timestampStop != 0) { + // // amountFlow += + // // uint256(flowRate) * + // // (timestampStop - timestampIncrease); + // // } else { + // // revert ContractError(); // for some reason ran this code when both timestampDecrease && timestampStop == 0 + // // } + // amountFlow += _calculateAmountFlow( + // _user, + // _superToken, + // unsettledFlowNonce + i + // ); + + // // if (_isSettle) sFlow.unsettledFlowNonce[_user][_superToken] += 1; + // sFlow.unsettledFlowNonce[_user][_superToken] += 1; + // } + + // return sFlow.deposits[_user][_superToken] - amountFlow; + // } + + // function _getEffectiveBalanceRead( + // address _user, + // address _superToken + // ) internal view returns (uint256) { + // StorageFlow storage sFlow = _storageFlow(); + // uint256 unsettledFlowNonce = sFlow.unsettledFlowNonce[_user][ + // _superToken + // ]; + // uint256 remainingNonces = _getNewNonce(_user, _superToken) - + // unsettledFlowNonce; // as long as unsettledFlowNonce's state is only altered within `_getEffectiveBalance`, remainingNonces will not be negative value + + // uint256 amountFlow; + // for (uint256 i = 0; i < remainingNonces; i++) { + // amountFlow += _calculateAmountFlow( + // _user, + // _superToken, + // unsettledFlowNonce + i + // ); + // } + + // return sFlow.deposits[_user][_superToken] - amountFlow; + // } + + // function _calculateAmountFlow( + // address _user, + // address _superToken, + // uint256 _nonce + // ) internal view returns (uint256) { + // StorageFlow storage sFlow = _storageFlow(); + // uint256 timestampIncrease = sFlow + // .flowRecord[_user][_superToken][_nonce].timestampIncrease; + // uint256 timestampDecrease = sFlow + // .flowRecord[_user][_superToken][_nonce].timestampDecrease; + + // (, uint96 flowRate, , uint256 timestampStop) = LibSession + // ._getSessionDataFromFlow(_user, _superToken, _nonce); + + // if (timestampDecrease != 0) { + // return uint256(flowRate) * (timestampDecrease - timestampIncrease); + // } else if (timestampStop != 0) { + // return uint256(flowRate) * (timestampStop - timestampIncrease); + // } else { + // revert ContractError(); // for some reason ran this code when both timestampDecrease && timestampStop == 0 + // } + // } + + function _isViewSessionAllowed( + address _viewer, + address _broadcaster + ) internal view returns (bool) { + // LibSession.StorageSession storage sSession = LibSession + // ._storageSession(); + + // uint256 currentTimestamp = sSession + // .sessionCurrent[_broadcaster] + // .timestamp; + // address[] memory superTokens = sSession + // .sessionCurrent[_broadcaster] + // .superTokens; + + (uint256 currentTimestamp, address[] memory superTokens) = LibSession + ._getCurrentSessionData(_broadcaster); + + if (currentTimestamp == 0 || superTokens.length <= 0) return false; + + for (uint256 i = 0; i < superTokens.length; i++) { + uint256 activeSessionNonce = LibSession._getCurrentNonce( + _broadcaster, + superTokens[i] + ); + + (, , uint256 timestampStart, uint256 timestampStop) = LibSession + ._getSessionData( + _broadcaster, + superTokens[i], + activeSessionNonce + ); + + if (timestampStart != currentTimestamp) return false; + + if (timestampStop != 0) return false; + + uint256 currentFlowNonce = _getCurrentNonce( + _viewer, + superTokens[i] + ); + + ( + address receiver, + uint256 sessionNonce, + uint256 timestampIncrease, + uint256 timestampDecrease, + + ) = _getFlowData(_viewer, superTokens[i], currentFlowNonce); + + if (receiver != _broadcaster) return false; + + if (sessionNonce != activeSessionNonce) return false; + + if (timestampIncrease < currentTimestamp) return false; + + if (timestampDecrease != 0) return false; + } + + return true; + } + + function _hasActiveFlow( + address _user, + address _superToken + ) internal view returns (bool) { + uint256 newFlowNonce = _getNewNonce(_user, _superToken); + if (newFlowNonce > 0) { + (, , , uint256 timestampStop) = LibSession._getSessionDataFromFlow( + _user, + _superToken, + newFlowNonce - 1 + ); + + return + _storageFlow() + .flowRecord[_user][_superToken][newFlowNonce - 1] + .timestampDecrease == + 0 && + timestampStop == 0; + } + return false; + } + + function _getFlowData( + address _user, + address _superToken, + uint256 _nonce + ) internal view returns (address, uint256, uint256, uint256, bytes32) { + address receiver = _storageFlow() + .flowRecord[_user][_superToken][_nonce].receiver; + uint256 sessionNonce = _storageFlow() + .flowRecord[_user][_superToken][_nonce].sessionNonce; + uint256 timestampIncrease = _storageFlow() + .flowRecord[_user][_superToken][_nonce].timestampIncrease; + uint256 timestampDecrease = _storageFlow() + .flowRecord[_user][_superToken][_nonce].timestampDecrease; + bytes32 taskId = _storageFlow() + .flowRecord[_user][_superToken][_nonce].taskId; + + return ( + receiver, + sessionNonce, + timestampIncrease, + timestampDecrease, + taskId + ); + } + + function _getDepositUser( + address _user, + address _superToken + ) internal view returns (uint256) { + return _storageFlow().deposits[_user][_superToken]; + } + + function _getDepositTotal( + address _superToken + ) internal view returns (uint256) { + return _storageFlow().totalDeposits[_superToken]; + } + + ///// -------- utils --------- ///// + + function _increaseFlow( + address _superToken, + address _sender, + address _receiver, + uint256 _nonce, + int96 _flowRate + ) internal { + ISuperToken iSuperToken = ISuperToken(_superToken); + int96 flowRate = iSuperToken.getFlowRate(address(this), _receiver); + + if (flowRate <= 0) { + iSuperToken.createFlow(_receiver, _flowRate); + } else { + iSuperToken.updateFlow(_receiver, flowRate + _flowRate); + } + + _storageFlow() + .flowRecord[_sender][_superToken][_nonce].timestampIncrease = block + .timestamp; + } + + function _decreaseFlow( + address _superToken, + address _sender, + address _receiver, + uint256 _nonce, + int96 _flowRate + ) internal { + ISuperToken iSuperToken = ISuperToken(_superToken); + int96 flowRate = iSuperToken.getFlowRate(address(this), _receiver); + + if (flowRate - _flowRate <= 0) { + iSuperToken.deleteFlow(address(this), _receiver); + } else { + iSuperToken.updateFlow(_receiver, flowRate - _flowRate); + } + + _storageFlow() + .flowRecord[_sender][_superToken][_nonce].timestampDecrease = block + .timestamp; + + uint256 controlNonce = _storageFlow() + .flowRecord[_sender][_superToken][_nonce].controlNonce; + LibControl + ._storageControl() + .controlRecord[_superToken][controlNonce].timestampDecrease = block + .timestamp; + } +} + +// TODO: a way to compute effective viewer balance without needing to withdraw (after funding) +// TODO: (after funding) emit event in the "withdraw fn" of "ControlRecord" diff --git a/contracts/contracts/facets/core/Automate.sol b/contracts/contracts/facets/core/Automate.sol new file mode 100644 index 0000000..474c2af --- /dev/null +++ b/contracts/contracts/facets/core/Automate.sol @@ -0,0 +1,39 @@ +// SPDX-License-Identifier: BUSL-1.1 +pragma solidity ^0.8.9; + +import {LibAccessControl} from "../../libraries/utils/LibAccessControl.sol"; +import {LibAutomate} from "../../libraries/core/LibAutomate.sol"; +import {IAutomate} from "../../interfaces/core/IAutomate.sol"; + +contract Automate is IAutomate { + function getGelatoAddresses() + external + view + returns (address, address, address, address, address) + { + return LibAutomate._getGelatoAddresses(); + } + + function getMinimumAppGelatoBalance() external view returns (uint256) { + return LibAutomate._getMinimumAppGelatoBalance(); + } + + function setGelatoContracts(address _autobot) external { + LibAccessControl._requireOnlyRole(LibAccessControl.STRATEGIST_ROLE); + LibAutomate._setGelatoContracts(_autobot); + } + + function setMinimumAppGelatoBalance(uint256 _value) external { + LibAccessControl._requireOnlyRole(LibAccessControl.STRATEGIST_ROLE); + LibAutomate._setMinimumAppGelatoBalance(_value); + } + + function depositGelatoFunds() external payable { + LibAutomate._depositGelatoFunds(msg.value); + } + + function withdrawGelatoFunds(uint256 _amount) external { + LibAccessControl._requireOnlyRole(LibAccessControl.TREASURER_ROLE); + LibAutomate._withdrawGelatoFunds(_amount); + } +} diff --git a/contracts/contracts/facets/core/Control.sol b/contracts/contracts/facets/core/Control.sol new file mode 100644 index 0000000..943ce80 --- /dev/null +++ b/contracts/contracts/facets/core/Control.sol @@ -0,0 +1,210 @@ +// SPDX-License-Identifier: BUSL-1.1 +pragma solidity ^0.8.9; + +import {LibAccessControl} from "../../libraries/utils/LibAccessControl.sol"; +import {LibControl, ArrayLengthNotMatch, InvalidFlowRateBounds} from "../../libraries/core/LibControl.sol"; +import {IControl} from "../../interfaces/core/IControl.sol"; + +import {IterableMappingBPS} from "../../libraries/utils/IterableMappingBPS.sol"; + +contract Control is IControl { + function depositAsset(address _superToken, uint256 _amount) external { + LibControl._requireSuperTokenSupported(_superToken); + LibControl._depositAsset(_superToken, _amount); + } + + function withdrawAsset(address _superToken, uint256 _amount) external { + /** + * don't need to check if supertoken suppported or not + * as there may be a chance that a supported supertoken + * gets removed but there is still user funds in the app + * + * in that case, just let user withdraw as will fail anyway if 0 amount + */ + LibControl._withdrawAsset(_superToken, _amount); + } + + function withdrawFeeBalance(address _superToken, uint256 _amount) external { + LibAccessControl._requireOnlyRole(LibAccessControl.TREASURER_ROLE); + LibControl._withdrawFeeBalance(_superToken, _amount); + } + + /** + * do external analysis on up to what count flow ended + * to determine what `count` should be + */ + function realizeFeeBalance(uint256 count, address _superToken) external { + LibControl._realizeFeeBalance(count, _superToken); + } // TODO: safe to allow anyone to call it? + + function setMinimumEndDuration(uint256 _duration) external { + LibAccessControl._requireOnlyRole(LibAccessControl.STRATEGIST_ROLE); + LibControl._requireNonZeroValue(_duration); + LibControl._setMinimumEndDuration(_duration); + } + + function setMinimumLifespan(uint256 _duration) external { + LibAccessControl._requireOnlyRole(LibAccessControl.STRATEGIST_ROLE); + LibControl._requireNonZeroValue(_duration); + LibControl._setMinimumLifespan(_duration); + } + + function setSTBufferAmount(uint256 _duration) external { + LibAccessControl._requireOnlyRole(LibAccessControl.STRATEGIST_ROLE); + LibControl._requireNonZeroValue(_duration); + LibControl._setSTBufferAmount(_duration); + } + + function addSuperToken(address _superToken) external { + LibAccessControl._requireOnlyRole(LibAccessControl.STRATEGIST_ROLE); + LibControl._addSuperToken(_superToken); + } + + function removeSuperToken(address _superToken) external { + LibAccessControl._requireOnlyRole(LibAccessControl.STRATEGIST_ROLE); + LibControl._removeSuperToken(_superToken); + } + + function toggleBPS() external { + LibAccessControl._requireOnlyRole(LibAccessControl.STRATEGIST_ROLE); + LibControl._toggleBPS(); + } + + function clearBPS() external { + LibAccessControl._requireOnlyRole(LibAccessControl.STRATEGIST_ROLE); + LibControl._clearBPS(); + } + + /** + * - flowRate must be asc value + * - flowRateUpperBound value of i must be equal flowRateLowerBound value of i+1 + * + * eg: + * + * array | tag | bound | bps + * index | | lower | upper | + * ---------------------------------- + * 0 | 1 | 0.001 | 0.002 | 4000 (40%) + * 1 | 2 | 0.002 | 0.003 | 2000 (20%) + * 2 | 3 | 0.003 | 0.005 | 500 (5%) + * + * how to call (eg): + * first call has tags related to 720p + * second call has tags related to 1080p + * + */ + function setBPS( + uint16[] memory _bpss, + uint96[] memory _flowRateLowerBounds, + uint96[] memory _flowRateUpperBounds, + uint256[] memory _tags + ) external { + LibAccessControl._requireOnlyRole(LibAccessControl.STRATEGIST_ROLE); + if ( + _bpss.length != _flowRateLowerBounds.length || + _bpss.length != _flowRateUpperBounds.length || + _bpss.length != _tags.length + ) revert ArrayLengthNotMatch(); + + for (uint256 i = 0; i < _bpss.length; i++) { + if (i < _bpss.length - 1) { + if (_flowRateUpperBounds[i] != _flowRateLowerBounds[i + 1]) + revert InvalidFlowRateBounds(); + } + + LibControl._setBPS( + _bpss[i], + _flowRateLowerBounds[i], + _flowRateUpperBounds[i], + _tags[i] + ); + } + } + + function setSBPS(uint16 _bps, address _user) external { + LibAccessControl._requireOnlyRole(LibAccessControl.STRATEGIST_ROLE); + LibControl._setSBPS(_bps, _user); + } + + function getFeeBalance( + address _superToken + ) external view returns (uint256) { + return LibControl._getFeeBalance(_superToken); + } + + function getControlData( + address _superToken, + uint256 _nonce + ) external view returns (address, uint256, uint256, uint256) { + return LibControl._getControlData(_superToken, _nonce); + } + + function getNewControlNonce( + address _superToken + ) external view returns (uint256) { + return LibControl._getNewNonce(_superToken); + } + + function getMinimumEndDuration() external view returns (uint256) { + return LibControl._getMinimumEndDuration(); + } + + function getMinimumLifespan() external view returns (uint256) { + return LibControl._getMinimumLifespan(); + } + + function getSTBufferDurationInSecond() external view returns (uint256) { + return LibControl._getSTBufferDurationInSecond(); + } + + function isSuperTokensSupported( + address _superToken + ) external view returns (bool) { + return LibControl._isSuperTokensSupported(_superToken); + } + + function isBPSEnabled() external view returns (bool) { + return LibControl._isBPSEnabled(); + } + + function getBPSSize() external view returns (uint256) { + return LibControl._getBPSSize(); + } + + function getBPSData( + uint256 _tag + ) external view returns (uint16, uint96, uint96) { + return LibControl._getBPSData(_tag); + } + + function getSBPS(address _user) external view returns (uint16) { + return LibControl._getSBPS(_user); + } + + function getNewBufferedAppBalance( + address _superToken, + int96 _newFlowRate + ) external view returns (uint256) { + return LibControl._getNewBufferedAppBalance(_superToken, _newFlowRate); + } // helper + + function isNewFlowRateAllowed( + address _superToken, + int96 _newFlowRate + ) external view returns (bool) { + return LibControl._isNewFlowRateAllowed(_superToken, _newFlowRate); + } // helper + + function getAssetUser( + address _user, + address _superToken + ) external view returns (uint256) { + return LibControl._getAssetUser(_user, _superToken); + } + + function getAssetTotal( + address _superToken + ) external view returns (uint256) { + return LibControl._getAssetTotal(_superToken); + } +} diff --git a/contracts/contracts/facets/core/Flow.sol b/contracts/contracts/facets/core/Flow.sol new file mode 100644 index 0000000..f2752f4 --- /dev/null +++ b/contracts/contracts/facets/core/Flow.sol @@ -0,0 +1,279 @@ +// SPDX-License-Identifier: BUSL-1.1 +pragma solidity ^0.8.9; + +import {ISuperToken} from "@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol"; +import {SuperTokenV1Library} from "@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol"; + +import {LibAutomate} from "../../libraries/core/LibAutomate.sol"; +import {LibControl, ArrayLengthNotMatch} from "../../libraries/core/LibControl.sol"; +import {LibSession, SessionNotStarted} from "../../libraries/core/LibSession.sol"; +import {LibFlow} from "../../libraries/core/LibFlow.sol"; +import {IFlow} from "../../interfaces/core/IFlow.sol"; + +import "../../services/gelato/Types.sol"; + +error TooEarly(); + +contract Flow is IFlow { + using SuperTokenV1Library for ISuperToken; + + /** + * important: + * with this `openFlow` implementation, it is possible to + * open multiple flows with same session (cost to much to implement checks) + * this does not cause an + * + * note: currently allows open flow even if msg.sender has an active session + */ + /** + * // TODO: need to check if you have sufficient deposits left or not + * SOL1: have user manually off flow + * SOL2: force settle blaance before open next flow (also force settle before withdraw) + */ + function openFlow( + address _receiver, + address _superToken, + uint256 _lifespan + ) external { + LibFlow._requireNoActiveFlow(_superToken); // as we cannot detect when user is trying to open multiple active flows to same session, we just restrict flow opening to 1 active globally at a time + LibFlow._setRemainingBalance(msg.sender, _superToken); // TODO: test + + LibAutomate._requireSufficientAppGelatoBalance(); + LibControl._requireSuperTokenSupported(_superToken); + LibSession.StorageSession storage sSession = LibSession + ._storageSession(); + uint256 activeSessionNonce = LibSession._getCurrentNonce( + _receiver, + _superToken + ); + + if ( + sSession + .sessionRecord[_receiver][_superToken][activeSessionNonce] + .timestampStart == 0 + ) revert SessionNotStarted(); + + LibFlow.StorageFlow storage sFlow = LibFlow._storageFlow(); + int96 flowRate = sSession + .sessionRecord[_receiver][_superToken][activeSessionNonce] + .effectiveFlowRate; + LibControl._requireSufficientAppSTBalance(_superToken, flowRate); + uint256 scheduledLifespan = LibFlow._getScheduledLifespan( + msg.sender, + _superToken, + _lifespan, + flowRate + ); // indirectly checks if sufficient deposit or not + + // 1. set flow info + uint256 newFlowNonce = LibFlow._getNewNonce(msg.sender, _superToken); + + sFlow + .flowRecord[msg.sender][_superToken][newFlowNonce].receiver = _receiver; + sFlow + .flowRecord[msg.sender][_superToken][newFlowNonce] + .sessionNonce = activeSessionNonce; + + LibControl.StorageControl storage sControl = LibControl + ._storageControl(); + uint256 newControlNonce = sControl.controlNonce[_superToken]; + sControl + .controlRecord[_superToken][newControlNonce].receiver = _receiver; + sControl + .controlRecord[_superToken][newControlNonce] + .sessionNonce = activeSessionNonce; + sControl + .controlRecord[_superToken][newControlNonce].timestampIncrease = block + .timestamp; + sFlow + .flowRecord[msg.sender][_superToken][newFlowNonce] + .controlNonce = newControlNonce; + + // 2. start flow immediately + LibFlow._increaseFlow( + _superToken, + msg.sender, + _receiver, + newFlowNonce, + flowRate + ); + + // // 3. schedule stop flow + ModuleData memory moduleDataFlowStop = ModuleData({ + modules: new Module[](2), + args: new bytes[](1) + }); + + moduleDataFlowStop.modules[0] = Module.TIME; + moduleDataFlowStop.modules[1] = Module.SINGLE_EXEC; + + moduleDataFlowStop.args[0] = LibAutomate._timeModuleArg( + block.timestamp + scheduledLifespan, + scheduledLifespan + ); + + bytes memory execDataFlowStop = abi.encodeWithSelector( + this.decreaseFlow.selector, + _superToken, + msg.sender, + _receiver, + newFlowNonce, + flowRate + ); + + sFlow + .flowRecord[msg.sender][_superToken][newFlowNonce].taskId = LibAutomate + ._storageAutomate() + .gelatoAutobot + .createTask( + address(this), + execDataFlowStop, + moduleDataFlowStop, + address(0) + ); + + // 4. finishing + sFlow.flowNonce[msg.sender][_superToken] += 1; + sControl.controlNonce[_superToken] += 1; + } + + function decreaseFlow( + address _superToken, + address _sender, + address _receiver, + uint256 _nonce, + int96 _flowRate + ) external { + LibAutomate._requireOnlyAutobot(); + + LibFlow._decreaseFlow( + _superToken, + _sender, + _receiver, + _nonce, + _flowRate + ); + } // for autobot use // TODO: test frontend no one can call it !! + + function closeFlow(address _superToken, uint256 _nonce) external { + LibFlow.StorageFlow storage sFlow = LibFlow._storageFlow(); + + uint256 minimumEndTimestamp = sFlow + .flowRecord[msg.sender][_superToken][_nonce].timestampIncrease + + LibControl._storageControl().minimumLifespan; + + if (block.timestamp < minimumEndTimestamp) revert TooEarly(); + // no need check supertoken valid or not in case it suddenly goes unsupported + + // delete task + LibAutomate._storageAutomate().gelatoAutobot.cancelTask( + sFlow.flowRecord[msg.sender][_superToken][_nonce].taskId + ); + + // delete flow + address receiver = sFlow + .flowRecord[msg.sender][_superToken][_nonce].receiver; + uint256 sessionNonce = sFlow + .flowRecord[msg.sender][_superToken][_nonce].sessionNonce; + + LibFlow._decreaseFlow( + _superToken, + msg.sender, + receiver, + _nonce, + LibSession + ._storageSession() + .sessionRecord[receiver][_superToken][sessionNonce] + .effectiveFlowRate + ); + } + + function depositSuperToken(address _superToken, uint256 _amount) external { + LibControl._requireSuperTokenSupported(_superToken); + LibFlow._depositSuperToken(_superToken, _amount); + } + + function withdrawSuperToken(address _superToken, uint256 _amount) external { + /** + * don't need to check if supertoken suppported or not + * as there may be a chance that a supported supertoken + * gets removed but there is still user funds in the app + * + * in that case, just let user withdraw as will fail anyway if 0 amount + */ + LibFlow._requireNoActiveFlow(_superToken); + + LibFlow._withdrawSuperToken(_superToken, _amount); + } // TODO: test + + function getAmountFlowed( + address _user, + address _superToken + ) external view returns (uint256) { + return LibFlow._getAmountFlowed(_user, _superToken); + } + + function getValidSafeLifespan( + address _user, + address _superToken, + int96 _flowRate + ) external view returns (uint256) { + return LibFlow._getValidSafeLifespan(_user, _superToken, _flowRate); + } // TODO: not so useful... remove.. ? + + /** + * use `isViewSessionAllowed` to easily determine if viewer can "join room" or not + * !! NOT used to determine if can `openFlow` or not... + */ + function isViewSessionAllowed( + address _viewer, + address _broadcaster + ) external view returns (bool) { + return LibFlow._isViewSessionAllowed(_viewer, _broadcaster); + } + + function hasActiveFlow( + address _user, + address _superToken + ) external view returns (bool) { + return LibFlow._hasActiveFlow(_user, _superToken); + } // TODO: test + + function getNewFlowNonce( + address _user, + address _superToken + ) external view returns (uint256) { + return LibFlow._getNewNonce(_user, _superToken); + } // TODO: test + + function getFlowData( + address _user, + address _superToken, + uint256 _nonce + ) + external + view + returns (address, uint256, uint256, uint256, bytes32, bool) + { + return LibFlow._getFlowData(_user, _superToken, _nonce); + } + + function getDepositUser( + address _user, + address _superToken + ) external view returns (uint256) { + return LibFlow._getDepositUser(_user, _superToken); + } + + function getDepositTotal( + address _superToken + ) external view returns (uint256) { + return LibFlow._getDepositTotal(_superToken); + } +} + +// TODO: test - % take mechanism (just reduce flowrate based on % and leave cash in app contract?) +// TODO: give broadcaster to optionally set an automated end date (do after get funding) - one reason to do this is viewer cannot withdraw if bc still live !! +// TODO: emit events throughout (especially session & flow creation) so can track user stats eg: avg duration of flow, avg flow rate, sess vs flow count etc.. +// TODO: how to penalize broadcaster if dont end flow +// // TODO: require checks for all fns diff --git a/contracts/contracts/facets/core/Session.sol b/contracts/contracts/facets/core/Session.sol new file mode 100644 index 0000000..5316d52 --- /dev/null +++ b/contracts/contracts/facets/core/Session.sol @@ -0,0 +1,99 @@ +// SPDX-License-Identifier: BUSL-1.1 +pragma solidity ^0.8.9; + +import {LibControl, ArrayLengthNotMatch} from "../../libraries/core/LibControl.sol"; +import {LibSession} from "../../libraries/core/LibSession.sol"; +import {ISession} from "../../interfaces/core/ISession.sol"; + +contract Session is ISession { + function startSession( + address _superToken, + uint96 _flowRate, + uint256 _tag + ) external { + LibControl._requireSuperTokenSupported(_superToken); + LibSession._startSession(_superToken, _flowRate, _tag); + + LibSession.StorageSession storage sSession = LibSession + ._storageSession(); + + sSession.sessionCurrent[msg.sender].timestamp = block.timestamp; + sSession.sessionCurrent[msg.sender].superTokens.push(_superToken); + } // TODO: test // if want to do open 1 livestream and supp multiple token, can do externally "batch tx" (TODO: test this, otherwise cr8 new fn using loops) + + function stopSession(address _superToken) external { + // LibControl._requireSuperTokenSupported(_superTokens[i]); + /** + * don't need to check if supertoken suppported or not + * as there may be a chance that a supported supertoken + * gets removed but there is still session active with the + * supertoken + * + * in that case, just let user withdraw as will fail anyway if 0 amount + */ + + LibSession._stopSession(_superToken); + delete LibSession._storageSession().sessionCurrent[msg.sender]; + } // TODO: test + + function startSessions( + address[] memory _superTokens, + uint96[] memory _flowRates, + uint256[] memory _tags + ) external { + if ( + _superTokens.length != _flowRates.length || + _superTokens.length != _tags.length + ) revert ArrayLengthNotMatch(); + + for (uint256 i = 0; i < _superTokens.length; i++) { + LibControl._requireSuperTokenSupported(_superTokens[i]); + LibSession._startSession(_superTokens[i], _flowRates[i], _tags[i]); + } + + LibSession.StorageSession storage sSession = LibSession + ._storageSession(); + + sSession.sessionCurrent[msg.sender].timestamp = block.timestamp; + sSession.sessionCurrent[msg.sender].superTokens = _superTokens; + } + + function stopSessions(address[] memory _superTokens) external { + for (uint256 i = 0; i < _superTokens.length; i++) { + // LibControl._requireSuperTokenSupported(_superTokens[i]); + /** + * don't need to check if supertoken suppported or not + * as there may be a chance that a supported supertoken + * gets removed but there is still session active with the + * supertoken + * + * in that case, just let user withdraw as will fail anyway if 0 amount + */ + + LibSession._stopSession(_superTokens[i]); + } + + delete LibSession._storageSession().sessionCurrent[msg.sender]; + } + + function getNewSessionNonce( + address _user, + address _superToken + ) external view returns (uint256) { + return LibSession._getNewNonce(_user, _superToken); + } + + function getSessionData( + address _user, + address _superToken, + uint256 _nonce + ) external view returns (int96, uint96, uint256, uint256) { + return LibSession._getSessionData(_user, _superToken, _nonce); + } + + function getCurrentSessionData( + address _user + ) external view returns (uint256, address[] memory) { + return LibSession._getCurrentSessionData(_user); + } +} diff --git a/contracts/contracts/facets/utils/AccessControl.sol b/contracts/contracts/facets/utils/AccessControl.sol new file mode 100644 index 0000000..fb62509 --- /dev/null +++ b/contracts/contracts/facets/utils/AccessControl.sol @@ -0,0 +1,62 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.9; + +import {LibAccessControl} from "../../libraries/utils/LibAccessControl.sol"; +import {IAccessControl} from "../../interfaces/utils/IAccessControl.sol"; + +contract AccessControl is IAccessControl { + event RoleAdminChanged( + bytes32 indexed role, + bytes32 indexed previousAdminRole, + bytes32 indexed newAdminRole + ); + + event RoleGranted( + bytes32 indexed role, + address indexed account, + address indexed sender + ); + + event RoleRevoked( + bytes32 indexed role, + address indexed account, + address indexed sender + ); + + function getDefaultAdminRole() external pure returns (bytes32) { + return LibAccessControl.DEFAULT_ADMIN_ROLE; + } + + function getRole(string memory _role) external pure returns (bytes32) { + return keccak256(abi.encode(_role)); + } + + function hasRole( + bytes32 _role, + address _account + ) external view returns (bool) { + return LibAccessControl._hasRole(_role, _account); + } + + function getRoleAdmin(bytes32 _role) external view returns (bytes32) { + return LibAccessControl._getRoleAdmin(_role); + } + + function grantRole(bytes32 _role, address _account) external { + LibAccessControl._requireOnlyRole( + LibAccessControl._getRoleAdmin(_role) + ); + return LibAccessControl._grantRole(_role, _account); + } + + function revokeRole(bytes32 _role, address _account) external { + LibAccessControl._requireOnlyRole( + LibAccessControl._getRoleAdmin(_role) + ); + return LibAccessControl._revokeRole(_role, _account); + } + + function renounceRole(bytes32 _role) external { + return LibAccessControl._revokeRole(_role, msg.sender); + } +} diff --git a/contracts/contracts/facets/utils/Cut.sol b/contracts/contracts/facets/utils/Cut.sol new file mode 100644 index 0000000..42459fb --- /dev/null +++ b/contracts/contracts/facets/utils/Cut.sol @@ -0,0 +1,26 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.9; + +import {ICut} from "../../interfaces/utils/ICut.sol"; +import {LibDiamond} from "../../libraries/utils/LibDiamond.sol"; +import {LibAccessControl} from "../../libraries/utils/LibAccessControl.sol"; + +// Remember to add the loupe functions from DiamondLoupeFacet to the diamond. +// The loupe functions are required by the EIP2535 Diamonds standard + +contract Cut is ICut { + /// @notice Add/replace/remove any number of functions and optionally execute + /// a function with delegatecall + /// @param _diamondCut Contains the facet addresses and function selectors + /// @param _init The address of the contract or facet to execute _calldata + /// @param _calldata A function call, including function selector and arguments + /// _calldata is executed with delegatecall on _init + function diamondCut( + FacetCut[] calldata _diamondCut, + address _init, + bytes calldata _calldata + ) external override { + LibAccessControl._requireOnlyRole(LibAccessControl.MAINTAINER_ROLE); + LibDiamond._cut(_diamondCut, _init, _calldata); + } +} diff --git a/contracts/contracts/facets/utils/Loupe.sol b/contracts/contracts/facets/utils/Loupe.sol new file mode 100644 index 0000000..43e21da --- /dev/null +++ b/contracts/contracts/facets/utils/Loupe.sol @@ -0,0 +1,80 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.9; + +import {LibDiamond} from "../../libraries/utils/LibDiamond.sol"; +import {ILoupe} from "../../interfaces/utils/ILoupe.sol"; +import {IERC165} from "../../interfaces/utils/IERC165.sol"; + +// The functions in DiamondLoupeFacet MUST be added to a diamond. +// The EIP-2535 Diamond standard requires these functions. + +contract Loupe is ILoupe, IERC165 { + // Diamond Loupe Functions + //////////////////////////////////////////////////////////////////// + /// These functions are expected to be called frequently by tools. + // + // struct Facet { + // address facetAddress; + // bytes4[] functionSelectors; + // } + + /// @notice Gets all facets and their selectors. + /// @return facets_ Facet + function facets() external view override returns (Facet[] memory facets_) { + LibDiamond.StorageDiamond storage s = LibDiamond._storageDiamond(); + uint256 numFacets = s.facetAddresses.length; + facets_ = new Facet[](numFacets); + for (uint256 i; i < numFacets; i++) { + address facetAddress_ = s.facetAddresses[i]; + facets_[i].facetAddress = facetAddress_; + facets_[i].functionSelectors = s + .facetFunctionSelectors[facetAddress_] + .functionSelectors; + } + } + + /// @notice Gets all the function selectors provided by a facet. + /// @param _facet The facet address. + /// @return facetFunctionSelectors_ + function facetFunctionSelectors( + address _facet + ) external view override returns (bytes4[] memory facetFunctionSelectors_) { + LibDiamond.StorageDiamond storage s = LibDiamond._storageDiamond(); + facetFunctionSelectors_ = s + .facetFunctionSelectors[_facet] + .functionSelectors; + } + + /// @notice Get all the facet addresses used by a diamond. + /// @return facetAddresses_ + function facetAddresses() + external + view + override + returns (address[] memory facetAddresses_) + { + LibDiamond.StorageDiamond storage s = LibDiamond._storageDiamond(); + facetAddresses_ = s.facetAddresses; + } + + /// @notice Gets the facet that supports the given selector. + /// @dev If facet is not found return address(0). + /// @param _functionSelector The function selector. + /// @return facetAddress_ The facet address. + function facetAddress( + bytes4 _functionSelector + ) external view override returns (address facetAddress_) { + LibDiamond.StorageDiamond storage s = LibDiamond._storageDiamond(); + facetAddress_ = s + .selectorToFacetAndPosition[_functionSelector] + .facetAddress; + } + + // This implements ERC-165. + function supportsInterface( + bytes4 _interfaceId + ) external view override returns (bool) { + LibDiamond.StorageDiamond storage s = LibDiamond._storageDiamond(); + return s.supportedInterfaces[_interfaceId]; + } +} diff --git a/contracts/contracts/facets/utils/Utility.sol b/contracts/contracts/facets/utils/Utility.sol new file mode 100644 index 0000000..dac0dbc --- /dev/null +++ b/contracts/contracts/facets/utils/Utility.sol @@ -0,0 +1,23 @@ +// SPDX-License-Identifier: BUSL-1.1 +pragma solidity ^0.8.9; + +import {ReentrancyGuard} from "@openzeppelin/contracts/security/ReentrancyGuard.sol"; + +import {LibAccessControl} from "../../libraries/utils/LibAccessControl.sol"; +import {IUtility} from "../../interfaces/utils/IUtility.sol"; + +error FailedWithdrawNativeToken(); + +contract Utility is IUtility, ReentrancyGuard { + function getNativeBalance() external view returns (uint256) { + return address(this).balance; + } + + function withdrawNativeBalance(uint256 _amount) external nonReentrant { + LibAccessControl._requireOnlyRole(LibAccessControl.TREASURER_ROLE); + + (bool sent, ) = payable(msg.sender).call{value: _amount}(""); + if (!sent) revert FailedWithdrawNativeToken(); + // require(sent, "Withdraw funds failed"); + } +} diff --git a/contracts/contracts/interfaces/core/IAutomate.sol b/contracts/contracts/interfaces/core/IAutomate.sol new file mode 100644 index 0000000..bb2829c --- /dev/null +++ b/contracts/contracts/interfaces/core/IAutomate.sol @@ -0,0 +1,19 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.9; + +interface IAutomate { + function setGelatoContracts(address _ops) external; + + function getGelatoAddresses() + external + view + returns (address, address, address, address, address); + + function withdrawGelatoFunds(uint256 _amount) external; + + function depositGelatoFunds() external payable; + + function setMinimumAppGelatoBalance(uint256 _value) external; + + function getMinimumAppGelatoBalance() external view returns (uint256); +} diff --git a/contracts/contracts/interfaces/core/IControl.sol b/contracts/contracts/interfaces/core/IControl.sol new file mode 100644 index 0000000..d89019d --- /dev/null +++ b/contracts/contracts/interfaces/core/IControl.sol @@ -0,0 +1,83 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.9; + +interface IControl { + function depositAsset(address _superToken, uint256 _amount) external; + + function withdrawAsset(address _superToken, uint256 _amount) external; + + function withdrawFeeBalance(address _superToken, uint256 _amount) external; + + function realizeFeeBalance(uint256 count, address _superToken) external; + + function setMinimumEndDuration(uint256 _duration) external; + + function setMinimumLifespan(uint256 _duration) external; + + function setSTBufferAmount(uint256 _duration) external; + + function addSuperToken(address _superToken) external; + + function removeSuperToken(address _superToken) external; + + function toggleBPS() external; + + function clearBPS() external; + + function setBPS( + uint16[] memory _bpss, + uint96[] memory _flowRateLowerBounds, + uint96[] memory _flowRateUpperBounds, + uint256[] memory _tags + ) external; + + function setSBPS(uint16 _bps, address _user) external; + + function getFeeBalance(address _superToken) external view returns (uint256); + + function getControlData( + address _superToken, + uint256 _nonce + ) external view returns (address, uint256, uint256, uint256); + + function getNewControlNonce( + address _superToken + ) external view returns (uint256); + + function getMinimumEndDuration() external view returns (uint256); + + function getMinimumLifespan() external view returns (uint256); + + function getSTBufferDurationInSecond() external view returns (uint256); + + function isSuperTokensSupported( + address _superToken + ) external view returns (bool); + + function isBPSEnabled() external view returns (bool); + + function getBPSSize() external view returns (uint256); + + function getBPSData( + uint256 _tag + ) external view returns (uint16, uint96, uint96); + + function getSBPS(address _user) external view returns (uint16); + + function getNewBufferedAppBalance( + address _superToken, + int96 _newFlowRate + ) external view returns (uint256); + + function isNewFlowRateAllowed( + address _superToken, + int96 _newFlowRate + ) external view returns (bool); + + function getAssetUser( + address _user, + address _superToken + ) external view returns (uint256); + + function getAssetTotal(address _superToken) external view returns (uint256); +} diff --git a/contracts/contracts/interfaces/core/IFlow.sol b/contracts/contracts/interfaces/core/IFlow.sol new file mode 100644 index 0000000..93960cb --- /dev/null +++ b/contracts/contracts/interfaces/core/IFlow.sol @@ -0,0 +1,67 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.9; + +// import {ISuperToken} from "@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol"; + +interface IFlow { + function openFlow( + address _receiver, + address _superToken, + uint256 _lifespan + ) external; + + function decreaseFlow( + address _superToken, + address _sender, + address _receiver, + uint256 _nonce, + int96 _flowRate + ) external; + + function closeFlow(address _superToken, uint256 _nonce) external; + + function depositSuperToken(address _superToken, uint256 _amount) external; + + function withdrawSuperToken(address _superToken, uint256 _amount) external; + + function getAmountFlowed( + address _user, + address _superToken + ) external view returns (uint256); + + function getValidSafeLifespan( + address _user, + address _superToken, + int96 _flowRate + ) external view returns (uint256); + + function isViewSessionAllowed( + address _viewer, + address _broadcaster + ) external view returns (bool); + + function hasActiveFlow( + address _user, + address _superToken + ) external view returns (bool); + + function getNewFlowNonce( + address _user, + address _superToken + ) external view returns (uint256); + + function getFlowData( + address _user, + address _superToken, + uint256 _nonce + ) external view returns (address, uint256, uint256, uint256, bytes32, bool); + + function getDepositUser( + address _user, + address _superToken + ) external view returns (uint256); + + function getDepositTotal( + address _superToken + ) external view returns (uint256); +} diff --git a/contracts/contracts/interfaces/core/ISession.sol b/contracts/contracts/interfaces/core/ISession.sol new file mode 100644 index 0000000..2dca9db --- /dev/null +++ b/contracts/contracts/interfaces/core/ISession.sol @@ -0,0 +1,35 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.9; + +interface ISession { + function startSession( + address _superToken, + uint96 _flowRate, + uint256 _tag + ) external; + + function stopSession(address _superToken) external; + + function startSessions( + address[] memory _superTokens, + uint96[] memory _flowRates, + uint256[] memory _tags + ) external; + + function stopSessions(address[] memory _superTokens) external; + + function getNewSessionNonce( + address _user, + address _superToken + ) external view returns (uint256); + + function getSessionData( + address _user, + address _superToken, + uint256 _nonce + ) external view returns (int96, uint96, uint256, uint256); + + function getCurrentSessionData( + address _user + ) external view returns (uint256, address[] memory); +} diff --git a/contracts/contracts/interfaces/utils/IAccessControl.sol b/contracts/contracts/interfaces/utils/IAccessControl.sol new file mode 100644 index 0000000..917e4ba --- /dev/null +++ b/contracts/contracts/interfaces/utils/IAccessControl.sol @@ -0,0 +1,21 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.9; + +interface IAccessControl { + function getDefaultAdminRole() external pure returns (bytes32); + + function getRole(string memory _role) external pure returns (bytes32); + + function hasRole( + bytes32 _role, + address _account + ) external view returns (bool); + + function getRoleAdmin(bytes32 _role) external view returns (bytes32); + + function grantRole(bytes32 _role, address _account) external; + + function revokeRole(bytes32 _role, address _account) external; + + function renounceRole(bytes32 _role) external; +} diff --git a/contracts/contracts/interfaces/utils/ICut.sol b/contracts/contracts/interfaces/utils/ICut.sol new file mode 100644 index 0000000..6f3722c --- /dev/null +++ b/contracts/contracts/interfaces/utils/ICut.sol @@ -0,0 +1,31 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.9; + +interface ICut { + enum FacetCutAction { + Add, + Replace, + Remove + } + // Add=0, Replace=1, Remove=2 + + struct FacetCut { + address facetAddress; + FacetCutAction action; + bytes4[] functionSelectors; + } + + /// @notice Add/replace/remove any number of functions and optionally execute + /// a function with delegatecall + /// @param _diamondCut Contains the facet addresses and function selectors + /// @param _init The address of the contract or facet to execute _calldata + /// @param _calldata A function call, including function selector and arguments + /// _calldata is executed with delegatecall on _init + function diamondCut( + FacetCut[] calldata _diamondCut, + address _init, + bytes calldata _calldata + ) external; + + event DiamondCut(FacetCut[] _diamondCut, address _init, bytes _calldata); +} diff --git a/contracts/contracts/interfaces/utils/IERC165.sol b/contracts/contracts/interfaces/utils/IERC165.sol new file mode 100644 index 0000000..f6e2276 --- /dev/null +++ b/contracts/contracts/interfaces/utils/IERC165.sol @@ -0,0 +1,12 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.9; + +interface IERC165 { + /// @notice Query if a contract implements an interface + /// @param interfaceId The interface identifier, as specified in ERC-165 + /// @dev Interface identification is specified in ERC-165. This function + /// uses less than 30,000 gas. + /// @return `true` if the contract implements `interfaceID` and + /// `interfaceID` is not 0xffffffff, `false` otherwise + function supportsInterface(bytes4 interfaceId) external view returns (bool); +} diff --git a/contracts/contracts/interfaces/utils/ILoupe.sol b/contracts/contracts/interfaces/utils/ILoupe.sol new file mode 100644 index 0000000..c25e336 --- /dev/null +++ b/contracts/contracts/interfaces/utils/ILoupe.sol @@ -0,0 +1,40 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.9; + +// A loupe is a small magnifying glass used to look at diamonds. +// These functions look at diamonds +interface ILoupe { + /// These functions are expected to be called frequently + /// by tools. + + struct Facet { + address facetAddress; + bytes4[] functionSelectors; + } + + /// @notice Gets all facet addresses and their four byte function selectors. + /// @return facets_ Facet + function facets() external view returns (Facet[] memory facets_); + + /// @notice Gets all the function selectors supported by a specific facet. + /// @param _facet The facet address. + /// @return facetFunctionSelectors_ + function facetFunctionSelectors( + address _facet + ) external view returns (bytes4[] memory facetFunctionSelectors_); + + /// @notice Get all the facet addresses used by a diamond. + /// @return facetAddresses_ + function facetAddresses() + external + view + returns (address[] memory facetAddresses_); + + /// @notice Gets the facet that supports the given selector. + /// @dev If facet is not found return address(0). + /// @param _functionSelector The function selector. + /// @return facetAddress_ The facet address. + function facetAddress( + bytes4 _functionSelector + ) external view returns (address facetAddress_); +} diff --git a/contracts/contracts/interfaces/utils/IUtility.sol b/contracts/contracts/interfaces/utils/IUtility.sol new file mode 100644 index 0000000..d4bb927 --- /dev/null +++ b/contracts/contracts/interfaces/utils/IUtility.sol @@ -0,0 +1,8 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.9; + +interface IUtility { + function getNativeBalance() external view returns (uint256); + + function withdrawNativeBalance(uint256 _amount) external; +} diff --git a/contracts/contracts/libraries/core/LibAutomate.sol b/contracts/contracts/libraries/core/LibAutomate.sol new file mode 100644 index 0000000..db6d4de --- /dev/null +++ b/contracts/contracts/libraries/core/LibAutomate.sol @@ -0,0 +1,180 @@ +//SPDX-License-Identifier: BUSL-1.1 +pragma solidity ^0.8.9; + +import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; +import "../../services/gelato/Types.sol"; + +// gelato based + +error InsufficientAppGelatoBalance(); +error CallerNotAutobot(); + +library LibAutomate { + using SafeERC20 for IERC20; + + bytes32 constant STORAGE_POSITION_AUTOMATE = keccak256("ds.automate"); + address internal constant AUTOBOT_PROXY_FACTORY = + 0xC815dB16D4be6ddf2685C201937905aBf338F5D7; + address internal constant GELATO_FEE = + 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE; + + struct StorageAutomate { + IAutomate gelatoAutobot; + ITaskTreasuryUpgradable gelatoTreasury; + address gelatoNetwork; + uint256 minimumAppGelatoBalance; + } + + function _storageAutomate() + internal + pure + returns (StorageAutomate storage s) + { + bytes32 position = STORAGE_POSITION_AUTOMATE; + assembly { + s.slot := position + } + } + + ///// ------- functions ------ ///// + + ///// -------- mains --------- ///// + + function _withdrawGelatoFunds(uint256 _amount) internal { + _storageAutomate().gelatoTreasury.withdrawFunds( + payable(msg.sender), + GELATO_FEE, + _amount + ); + } // withdrawer address restriction set in facet + + function _depositGelatoFunds(uint256 _amount) internal { + _storageAutomate().gelatoTreasury.depositFunds{value: _amount}( + address(this), // address(this) = address of diamond + GELATO_FEE, + _amount + ); + } + + function _getModuleData( + uint256 _durationStart, + uint256 _durationInterval + ) internal view returns (ModuleData memory) { + ModuleData memory moduleData = ModuleData({ + modules: new Module[](2), + args: new bytes[](1) + }); + + moduleData.modules[0] = Module.TIME; + moduleData.modules[1] = Module.SINGLE_EXEC; + + moduleData.args[0] = _timeModuleArg( + block.timestamp + _durationStart, + _durationInterval + ); + + return moduleData; + } + + function _transfer(uint256 _fee, address _feeToken) internal { + if (_feeToken == GELATO_FEE) { + (bool success, ) = _storageAutomate().gelatoNetwork.call{ + value: _fee + }(""); + require(success, "LibAutomate: _transfer failed"); + } else { + SafeERC20.safeTransfer( + IERC20(_feeToken), + _storageAutomate().gelatoNetwork, + _fee + ); + } + } + + function _getFeeDetails() + internal + view + returns (uint256 fee, address feeToken) + { + (fee, feeToken) = _storageAutomate().gelatoAutobot.getFeeDetails(); + } + + ///// ------- requires ------- ///// + + function _requireOnlyAutobot() internal view { + if (msg.sender != address(_storageAutomate().gelatoAutobot)) + revert CallerNotAutobot(); + } + + function _requireSufficientAppGelatoBalance() internal view { + if ( + _getAppGelatoBalance() <= _storageAutomate().minimumAppGelatoBalance + ) revert InsufficientAppGelatoBalance(); + } + + ///// ------- setters -------- ///// + + function _setGelatoContracts(address _autobot) internal { + _storageAutomate().gelatoAutobot = IAutomate(_autobot); + _storageAutomate().gelatoNetwork = IAutomate(_autobot).gelato(); + _storageAutomate().gelatoTreasury = _storageAutomate() + .gelatoAutobot + .taskTreasury(); + } + + function _setMinimumAppGelatoBalance(uint256 _value) internal { + _storageAutomate().minimumAppGelatoBalance = _value; + } + + ///// ------- getters -------- ///// + + function _getGelatoAddresses() + internal + view + returns (address, address, address, address, address) + { + return ( + address(_storageAutomate().gelatoAutobot), + address(_storageAutomate().gelatoTreasury), + _storageAutomate().gelatoNetwork, + AUTOBOT_PROXY_FACTORY, + GELATO_FEE + ); + } + + function _getMinimumAppGelatoBalance() internal view returns (uint256) { + return _storageAutomate().minimumAppGelatoBalance; + } + + function _getAppGelatoBalance() internal view returns (uint256) { + return + _storageAutomate().gelatoTreasury.userTokenBalance( + address(this), + GELATO_FEE + ); + } + + ///// -------- utils --------- ///// + + function _resolverModuleArg( + address _resolverAddress, + bytes memory _resolverData + ) internal pure returns (bytes memory) { + return abi.encode(_resolverAddress, _resolverData); + } + + function _timeModuleArg( + uint256 _startTime, + uint256 _interval + ) internal pure returns (bytes memory) { + return abi.encode(uint128(_startTime), uint128(_interval)); + } + + function _proxyModuleArg() internal pure returns (bytes memory) { + return bytes(""); + } + + function _singleExecModuleArg() internal pure returns (bytes memory) { + return bytes(""); + } +} diff --git a/contracts/contracts/libraries/core/LibControl.sol b/contracts/contracts/libraries/core/LibControl.sol new file mode 100644 index 0000000..0fc9c3a --- /dev/null +++ b/contracts/contracts/libraries/core/LibControl.sol @@ -0,0 +1,405 @@ +//SPDX-License-Identifier: BUSL-1.1 +pragma solidity ^0.8.9; + +import {ISuperToken} from "@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol"; +import {SuperTokenV1Library} from "@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol"; +import {IterableMappingBPS, BasisPointsRange} from "../utils/IterableMappingBPS.sol"; + +import {LibSession} from "./LibSession.sol"; + +error ZeroValue(); +error ArrayLengthNotMatch(); +error InvalidSuperToken(); +error InsufficientAppSTBalance(); +error InsufficientAssets(); +error InsufficientFeeBalance(); +error InvalidFlowRateBounds(); +error InvalidBasisPoints(); +error InvalidFlowRate(); +error ContractError(); + +library LibControl { + using SuperTokenV1Library for ISuperToken; + using IterableMappingBPS for IterableMappingBPS.Map; + + bytes32 constant STORAGE_POSITION_CONTROL = keccak256("ds.control"); + uint8 internal constant bpsMin = 100; + uint16 internal constant bpsMax = 10000; + + struct ControlRecord { + address receiver; + uint256 sessionNonce; + uint256 timestampIncrease; + uint256 timestampDecrease; + } + + struct StorageControl { + IterableMappingBPS.Map bps; // howtouse: input tag (uint256), check if input flowRate is within range of bounds, if not revert + mapping(address => uint16) sbps; // special + bool isBPSEnabled; + uint256 minimumEndDuration; // seconds + uint256 minimumLifespan; // seconds + uint256 stBufferDurationInSecond; + mapping(address => bool) superTokens; + // + mapping(address => uint256) unsettledControlNonce; + mapping(address => uint256) controlNonce; // superToken --> nonce + mapping(address => mapping(uint256 => ControlRecord)) controlRecord; // superToken --> nonce --> control record + mapping(address => uint256) feeBalance; // superToken --> amount fee balance + // + mapping(address => mapping(address => uint256)) assets; // investor --> superToken --> amount deposit + mapping(address => uint256) totalAssets; // superToken --> total amount + } + + function _storageControl() + internal + pure + returns (StorageControl storage s) + { + bytes32 position = STORAGE_POSITION_CONTROL; + assembly { + s.slot := position + } + } + + ///// ------- functions ------ ///// + + ///// -------- mains --------- ///// + + function _depositAsset(address _superToken, uint256 _amount) internal { + ISuperToken(_superToken).transferFrom( + msg.sender, + address(this), + _amount + ); + + _storageControl().assets[msg.sender][_superToken] += _amount; + _storageControl().totalAssets[_superToken] += _amount; + } + + function _withdrawAsset(address _superToken, uint256 _amount) internal { + if (_storageControl().assets[msg.sender][_superToken] < _amount) + revert InsufficientAssets(); + + _storageControl().assets[msg.sender][_superToken] -= _amount; + _storageControl().totalAssets[_superToken] -= _amount; + + ISuperToken(_superToken).transfer(msg.sender, _amount); + } + + function _withdrawFeeBalance( + address _superToken, + uint256 _amount + ) internal { + if (_storageControl().feeBalance[_superToken] < _amount) + revert InsufficientFeeBalance(); + + _storageControl().feeBalance[_superToken] -= _amount; + + ISuperToken(_superToken).transferFrom( + address(this), + msg.sender, + _amount + ); + } + + function _realizeFeeBalance(uint256 count, address _superToken) internal { + _storageControl().feeBalance[_superToken] += _getAppFeeBalance( + count, + _superToken, + true + ); + } + + function _getAppFeeBalance( + uint256 count, + address _superToken, + bool _isSettle + ) internal returns (uint256) { + StorageControl storage sControl = _storageControl(); + uint256 unsettledControlNonce = sControl.unsettledControlNonce[ + _superToken + ]; + // uint256 remainingNonces = _getNewNonce(_superToken) - + // unsettledControlNonce; + + uint256 amountFee; + for (uint256 i = 0; i < count; i++) { + // uint256 ii = unsettledControlNonce + i; + // uint256 timestampIncrease = sControl + // .controlRecord[_superToken][ii].timestampIncrease; + // uint256 timestampDecrease = sControl + // .controlRecord[_superToken][ii].timestampDecrease; + + // ( + // int96 effectiveFlowRate, + // uint96 flowRate, + // , + // uint256 timestampStop + // ) = LibSession._getSessionDataFromControl(_superToken, ii); + + // uint256 feeFlowRate = flowRate - uint96(effectiveFlowRate); + + // if (timestampDecrease != 0) { + // amountFee += + // feeFlowRate * + // (timestampDecrease - timestampIncrease); + // } else if (timestampStop != 0) { + // amountFee += feeFlowRate * (timestampStop - timestampIncrease); + // } else { + // revert ContractError(); // for some reason ran this code when both timestampDecrease && timestampStop == 0 + // } + + amountFee += _calculateAmountFee( + _superToken, + unsettledControlNonce + i + ); + + if (_isSettle) sControl.unsettledControlNonce[_superToken] += 1; + } + + return amountFee; + } // TODO: as we cannot control when flow starts, do a "nonce until" input to set up to which record we want to calculate for + + // TODO: if session doesn't end, we stuck cannot withdraw as withdraw fee amount depends on both flow and sess and iterates linearly, more reason to implement sesion auto end + + function _calculateAmountFee( + address _superToken, + uint256 _nonce + ) internal view returns (uint256) { + StorageControl storage sControl = _storageControl(); + uint256 timestampIncrease = sControl + .controlRecord[_superToken][_nonce].timestampIncrease; + uint256 timestampDecrease = sControl + .controlRecord[_superToken][_nonce].timestampDecrease; + + ( + int96 effectiveFlowRate, + uint96 flowRate, + , + uint256 timestampStop + ) = LibSession._getSessionDataFromControl(_superToken, _nonce); + + uint256 feeFlowRate = flowRate - uint96(effectiveFlowRate); + + if (timestampDecrease != 0) { + return feeFlowRate * (timestampDecrease - timestampIncrease); + } else if (timestampStop != 0) { + return feeFlowRate * (timestampStop - timestampIncrease); + } else { + revert ContractError(); // for some reason ran this code when both timestampDecrease && timestampStop == 0 + } + } + + ///// ------- requires ------- ///// + + function _requireNonZeroValue(uint256 _value) internal pure { + if (_value <= 0) revert ZeroValue(); + } + + function _requireSuperTokenSupported(address _superToken) internal view { + if (!_isSuperTokensSupported(_superToken)) revert InvalidSuperToken(); + } + + /** + * guard against how long before app runs out of funds and loses its deposit + * + * * `STBufferDurationInSecond` is a critical parameter and should be set as large as possible + */ + function _requireSufficientAppSTBalance( + address _superToken, + int96 _newFlowRate + ) internal view { + if (!_isNewFlowRateAllowed(_superToken, _newFlowRate)) + revert InsufficientAppSTBalance(); + } + + function _requireValidBasisPoints(uint16 _bps) internal pure { + if (_bps < bpsMin || _bps > bpsMax) revert InvalidBasisPoints(); + } + + ///// ------- setters -------- ///// + + function _getNewNonce(address _superToken) internal view returns (uint256) { + return _storageControl().controlNonce[_superToken]; + } + + function _setMinimumEndDuration(uint256 _duration) internal { + _storageControl().minimumEndDuration = _duration; + } + + function _setMinimumLifespan(uint256 _duration) internal { + _storageControl().minimumLifespan = _duration; + } + + function _setSTBufferAmount(uint256 _duration) internal { + _storageControl().stBufferDurationInSecond = _duration; + } + + function _addSuperToken(address _superToken) internal { + _storageControl().superTokens[_superToken] = true; + } + + function _removeSuperToken(address _superToken) internal { + delete _storageControl().superTokens[_superToken]; + } + + function _toggleBPS() internal { + _storageControl().isBPSEnabled = !_storageControl().isBPSEnabled; + } + + function _clearBPS() internal { + uint256 sizeBeforeClear = _getBPSSize(); + for (uint256 i = 0; i < sizeBeforeClear; i++) { + uint256 tag = _storageControl().bps.getKeyAtIndex( + _getBPSSize() - 1 + ); + _storageControl().bps.remove(tag); + } + } + + function _setBPS( + uint16 _bps, + uint96 _flowRateLowerBound, + uint96 _flowRateUpperBound, + uint256 _tag + ) internal { + _requireValidBasisPoints(_bps); + if (_flowRateUpperBound < _flowRateLowerBound) + revert InvalidFlowRateBounds(); + _storageControl().bps.set( + _tag, + _bps, + _flowRateLowerBound, + _flowRateUpperBound + ); + } + + function _setSBPS(uint16 _bps, address _user) internal { + _requireValidBasisPoints(_bps); + _storageControl().sbps[_user] = _bps; + } // to clear, just call and set _bps to 0 value + + ///// ------- getters -------- ///// + + function _getFeeBalance( + address _superToken + ) internal view returns (uint256) { + return _storageControl().feeBalance[_superToken]; + } + + function _getControlData( + address _superToken, + uint256 _nonce + ) internal view returns (address, uint256, uint256, uint256) { + address receiver = _storageControl() + .controlRecord[_superToken][_nonce].receiver; + uint256 sessionNonce = _storageControl() + .controlRecord[_superToken][_nonce].sessionNonce; + uint256 timestampIncrease = _storageControl() + .controlRecord[_superToken][_nonce].timestampIncrease; + uint256 timestampDecrease = _storageControl() + .controlRecord[_superToken][_nonce].timestampDecrease; + + return (receiver, sessionNonce, timestampIncrease, timestampDecrease); + } + + function _getMinimumEndDuration() internal view returns (uint256) { + return _storageControl().minimumEndDuration; + } + + function _getMinimumLifespan() internal view returns (uint256) { + return _storageControl().minimumLifespan; + } + + function _getSTBufferDurationInSecond() internal view returns (uint256) { + return _storageControl().stBufferDurationInSecond; + } + + function _isSuperTokensSupported( + address _superToken + ) internal view returns (bool) { + return _storageControl().superTokens[_superToken]; + } + + function _isBPSEnabled() internal view returns (bool) { + return _storageControl().isBPSEnabled; + } + + function _getBPSSize() internal view returns (uint256) { + return _storageControl().bps.size(); + } + + function _getValidBPS( + uint96 _flowRate, + uint256 _tag + ) internal view returns (uint16) { + ( + uint16 bps, + uint96 flowRateLowerBound, + uint96 flowRateUpperBound + ) = _getBPSData(_tag); + + if (_flowRate < flowRateLowerBound || _flowRate >= flowRateUpperBound) + revert InvalidFlowRate(); + + return bps; + } + + function _getBPSData( + uint256 _tag + ) internal view returns (uint16, uint96, uint96) { + BasisPointsRange memory data = _storageControl().bps.get(_tag); + return (data.bps, data.flowRateLowerBound, data.flowRateUpperBound); + } + + function _getSBPS(address _user) internal view returns (uint16) { + return _storageControl().sbps[_user]; + } + + function _getNewBufferedAppBalance( + address _superToken, + int96 _newFlowRate + ) internal view returns (uint256) { + ISuperToken iSuperToken = ISuperToken(_superToken); + uint256 newBufferAmount = iSuperToken.getBufferAmountByFlowRate( + _newFlowRate + ); + int96 contractNetFlowRate = iSuperToken.getNetFlowRate(address(this)); + + return + newBufferAmount + + (uint256(uint96(contractNetFlowRate + _newFlowRate)) * + _storageControl().stBufferDurationInSecond); + } + + function _isNewFlowRateAllowed( + address _superToken, + int96 _newFlowRate + ) internal view returns (bool) { + uint256 contractBalance = ISuperToken(_superToken).balanceOf( + address(this) + ); + + return + contractBalance > + _getNewBufferedAppBalance(_superToken, _newFlowRate); + } + + function _getAssetUser( + address _user, + address _superToken + ) internal view returns (uint256) { + return _storageControl().assets[_user][_superToken]; + } + + function _getAssetTotal( + address _superToken + ) internal view returns (uint256) { + return _storageControl().totalAssets[_superToken]; + } + + ///// -------- utils --------- ///// +} + +// TODO: a way to differentiate "earned" holdings from all holdings diff --git a/contracts/contracts/libraries/core/LibFlow.sol b/contracts/contracts/libraries/core/LibFlow.sol new file mode 100644 index 0000000..0a47533 --- /dev/null +++ b/contracts/contracts/libraries/core/LibFlow.sol @@ -0,0 +1,377 @@ +//SPDX-License-Identifier: BUSL-1.1 +pragma solidity ^0.8.9; + +import {ISuperToken} from "@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol"; +import {SuperTokenV1Library} from "@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol"; + +import {LibControl, ContractError} from "./LibControl.sol"; +import {LibSession} from "./LibSession.sol"; + +// import "hardhat/console.sol"; + +error InsufficientFunds(); +error InsufficientLifespan1(); +error InsufficientLifespan2(); +error InsufficientLifespan3(); +error HasActiveFlow(); +error InvalidBalance1(); +error InvalidBalance2(); + +library LibFlow { + using SuperTokenV1Library for ISuperToken; + + bytes32 constant STORAGE_POSITION_FLOW = keccak256("ds.flow"); + + struct FlowRecord { + uint256 controlNonce; // TODO: add to flow test + address receiver; + uint256 sessionNonce; + uint256 timestampIncrease; // timestamp at which viewer opened a flow with bc + uint256 timestampDecrease; // timestamp at which viewer closed a flow with bc // may be 0 + bytes32 taskId; // decrease flow of viewer to broadcaster + bool isBalanceSettled; + } + + struct StorageFlow { + // mapping(address => mapping(address => uint256)) unsettledFlowNonce; // viewer --> superToken --> nonce (counter) from this nonce count onwards is still unsettled + mapping(address => mapping(address => uint256)) flowNonce; // viewer --> superToken --> nonce (counter) + mapping(address => mapping(address => mapping(uint256 => FlowRecord))) flowRecord; // viewer --> superToken --> nonce --> flow record + // + mapping(address => mapping(address => uint256)) deposits; // viewer --> superToken --> amount deposit + mapping(address => uint256) totalDeposits; // superToken --> total amount + } + + function _storageFlow() internal pure returns (StorageFlow storage s) { + bytes32 position = STORAGE_POSITION_FLOW; + assembly { + s.slot := position + } + } + + ///// ------- functions ------ ///// + + ///// -------- mains --------- ///// + + function _depositSuperToken(address _superToken, uint256 _amount) internal { + ISuperToken(_superToken).transferFrom( + msg.sender, + address(this), + _amount + ); + + _storageFlow().deposits[msg.sender][_superToken] += _amount; + _storageFlow().totalDeposits[_superToken] += _amount; + } + + function _withdrawSuperToken( + address _superToken, + uint256 _amount + ) internal { + // uint256 amountRemaining = _getEffectiveBalance(msg.sender, _superToken); + _setRemainingBalance(msg.sender, _superToken); // TODO: test + + uint256 amountRemaining = _storageFlow().deposits[msg.sender][ + _superToken + ]; + + if (amountRemaining < _amount) revert InsufficientFunds(); + + _storageFlow().deposits[msg.sender][_superToken] -= _amount; + _storageFlow().totalDeposits[_superToken] -= _amount; + + ISuperToken(_superToken).transferFrom( + address(this), + msg.sender, + _amount + ); + } + + ///// ------- requires ------- ///// + + function _requireNoActiveFlow(address _superToken) internal view { + if (_hasActiveFlow(msg.sender, _superToken)) revert HasActiveFlow(); + } + + ///// ------- setters -------- ///// + + function _setRemainingBalance(address _user, address _superToken) internal { + uint256 amountFlowed = _getAmountFlowed(_user, _superToken); + + _storageFlow().deposits[_user][_superToken] -= amountFlowed; + _storageFlow().totalDeposits[_superToken] -= amountFlowed; + + if (_storageFlow().deposits[_user][_superToken] < 0) + revert InvalidBalance1(); // should never be run! + if (_storageFlow().totalDeposits[_superToken] < 0) + revert InvalidBalance2(); // should never be run! + + uint256 newFlowNonce = _getNewNonce(_user, _superToken); + if (newFlowNonce > 0) + _storageFlow() + .flowRecord[_user][_superToken][newFlowNonce - 1] + .isBalanceSettled = true; // TODO: change other parts to depend on this instead of check timestamp.. etc + // this is like, not only your previous session must be non-active, but it must have settled the balance! + } // TODO: test + + ///// ------- getters -------- ///// + + function _getValidSafeLifespan( + address _user, + address _superToken, + int96 _flowRate + ) internal view returns (uint256) { + uint256 unsafeLifespan = _storageFlow().deposits[_user][_superToken] / + uint256(uint96(_flowRate)); + + LibControl.StorageControl storage sControl = LibControl + ._storageControl(); + + if (unsafeLifespan < sControl.minimumEndDuration) + revert InsufficientLifespan1(); + + uint256 safeLifespan = unsafeLifespan - sControl.minimumEndDuration; + + if (safeLifespan < sControl.minimumLifespan) + revert InsufficientLifespan2(); + + return safeLifespan; + } + + /** + * flowRate --> 1 sec + * maximumFlowAmount --> maximumFlowAmount/flowRate [in sec] + */ + function _getScheduledLifespan( + address _user, + address _superToken, + uint256 _lifespan, + int96 _flowRate + ) internal view returns (uint256) { + uint256 safeLifespan = _getValidSafeLifespan( + _user, + _superToken, + _flowRate + ); + + LibControl.StorageControl storage sControl = LibControl + ._storageControl(); + if (_lifespan < sControl.minimumEndDuration + sControl.minimumLifespan) + revert InsufficientLifespan3(); + + return _lifespan >= safeLifespan ? safeLifespan : _lifespan; + } + + function _getAmountFlowed( + address _user, + address _superToken + ) internal view returns (uint256) { + uint256 amountFlowed; + uint256 currentNonce = _getCurrentNonce(_user, _superToken); + ( + address receiver, + uint256 sessionNonce, + uint256 timestampIncrease, + uint256 timestampDecrease, + , + bool isBalanceSettled + ) = _getFlowData(_user, _superToken, currentNonce); + (, uint96 flowRate, , uint256 timestampStop) = LibSession + ._getSessionData(receiver, _superToken, sessionNonce); + + if (isBalanceSettled) { + amountFlowed = 0; + } else { + if (timestampDecrease != 0) { + amountFlowed = + uint256(flowRate) * + (timestampDecrease - timestampIncrease); + } else if (timestampStop != 0) { + amountFlowed = + uint256(flowRate) * + (timestampStop - timestampIncrease); + } else { + amountFlowed = 0; + } + } + + return amountFlowed; + } + + function _hasActiveFlow( + address _user, + address _superToken + ) internal view returns (bool) { + uint256 newFlowNonce = _getNewNonce(_user, _superToken); + if (newFlowNonce > 0) { + (, , , uint256 timestampStop) = LibSession._getSessionDataFromFlow( + _user, + _superToken, + newFlowNonce - 1 + ); + + return + _storageFlow() + .flowRecord[_user][_superToken][newFlowNonce - 1] + .timestampDecrease == + 0 && + timestampStop == 0; + } + return false; + } + + function _isViewSessionAllowed( + address _viewer, + address _broadcaster + ) internal view returns (bool) { + (uint256 currentTimestamp, address[] memory superTokens) = LibSession + ._getCurrentSessionData(_broadcaster); + + if (currentTimestamp == 0 || superTokens.length <= 0) return false; + + for (uint256 i = 0; i < superTokens.length; i++) { + uint256 activeSessionNonce = LibSession._getCurrentNonce( + _broadcaster, + superTokens[i] + ); + + (, , uint256 timestampStart, uint256 timestampStop) = LibSession + ._getSessionData( + _broadcaster, + superTokens[i], + activeSessionNonce + ); + + if (timestampStart != currentTimestamp) return false; + + if (timestampStop != 0) return false; + + uint256 currentFlowNonce = _getCurrentNonce( + _viewer, + superTokens[i] + ); + + ( + address receiver, + uint256 sessionNonce, + uint256 timestampIncrease, + uint256 timestampDecrease, + , + + ) = _getFlowData(_viewer, superTokens[i], currentFlowNonce); + + if (receiver != _broadcaster) return false; + + if (sessionNonce != activeSessionNonce) return false; + + if (timestampIncrease < currentTimestamp) return false; + + if (timestampDecrease != 0) return false; + } + + return true; + } + + function _getNewNonce( + address _user, + address _superToken + ) internal view returns (uint256) { + return _storageFlow().flowNonce[_user][_superToken]; + } + + function _getCurrentNonce( + address _user, + address _superToken + ) internal view returns (uint256) { + uint256 nonce = _storageFlow().flowNonce[_user][_superToken]; + return nonce == 0 ? 0 : nonce - 1; + } + + function _getFlowData( + address _user, + address _superToken, + uint256 _nonce + ) + internal + view + returns (address, uint256, uint256, uint256, bytes32, bool) + { + return ( + _storageFlow().flowRecord[_user][_superToken][_nonce].receiver, + _storageFlow().flowRecord[_user][_superToken][_nonce].sessionNonce, + _storageFlow() + .flowRecord[_user][_superToken][_nonce].timestampIncrease, + _storageFlow() + .flowRecord[_user][_superToken][_nonce].timestampDecrease, + _storageFlow().flowRecord[_user][_superToken][_nonce].taskId, + _storageFlow() + .flowRecord[_user][_superToken][_nonce].isBalanceSettled + ); + } + + function _getDepositUser( + address _user, + address _superToken + ) internal view returns (uint256) { + return _storageFlow().deposits[_user][_superToken]; + } + + function _getDepositTotal( + address _superToken + ) internal view returns (uint256) { + return _storageFlow().totalDeposits[_superToken]; + } + + ///// -------- utils --------- ///// + + function _increaseFlow( + address _superToken, + address _sender, + address _receiver, + uint256 _nonce, + int96 _flowRate + ) internal { + ISuperToken iSuperToken = ISuperToken(_superToken); + int96 flowRate = iSuperToken.getFlowRate(address(this), _receiver); + + if (flowRate <= 0) { + iSuperToken.createFlow(_receiver, _flowRate); + } else { + iSuperToken.updateFlow(_receiver, flowRate + _flowRate); + } + + _storageFlow() + .flowRecord[_sender][_superToken][_nonce].timestampIncrease = block + .timestamp; + } + + function _decreaseFlow( + address _superToken, + address _sender, + address _receiver, + uint256 _nonce, + int96 _flowRate + ) internal { + ISuperToken iSuperToken = ISuperToken(_superToken); + int96 flowRate = iSuperToken.getFlowRate(address(this), _receiver); + + if (flowRate - _flowRate <= 0) { + iSuperToken.deleteFlow(address(this), _receiver); + } else { + iSuperToken.updateFlow(_receiver, flowRate - _flowRate); + } + + _storageFlow() + .flowRecord[_sender][_superToken][_nonce].timestampDecrease = block + .timestamp; + + uint256 controlNonce = _storageFlow() + .flowRecord[_sender][_superToken][_nonce].controlNonce; + LibControl + ._storageControl() + .controlRecord[_superToken][controlNonce].timestampDecrease = block + .timestamp; + } +} + +// TODO: a way to compute effective viewer balance without needing to withdraw (after funding) +// TODO: (after funding) emit event in the "withdraw fn" of "ControlRecord" diff --git a/contracts/contracts/libraries/core/LibSession.sol b/contracts/contracts/libraries/core/LibSession.sol new file mode 100644 index 0000000..cab9c4f --- /dev/null +++ b/contracts/contracts/libraries/core/LibSession.sol @@ -0,0 +1,220 @@ +//SPDX-License-Identifier: BUSL-1.1 +pragma solidity ^0.8.9; + +import {ISuperToken} from "@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol"; +import {SuperTokenV1Library} from "@superfluid-finance/ethereum-contracts/contracts/apps/SuperTokenV1Library.sol"; + +import {LibControl, InvalidFlowRate} from "./LibControl.sol"; +import {LibFlow} from "./LibFlow.sol"; + +error PreviousSessionStillLive(); +error SessionNotStarted(); +error SessionAlreadyEnded(); + +library LibSession { + using SuperTokenV1Library for ISuperToken; + + bytes32 constant STORAGE_POSITION_SESSION = keccak256("ds.session"); + + struct SessionCurrent { + uint256 timestamp; + address[] superTokens; + } + + struct SessionRecord { + int96 effectiveFlowRate; + uint96 flowRate; + uint256 timestampStart; + uint256 timestampStop; + } + + struct StorageSession { + mapping(address => mapping(address => uint256)) sessionNonce; // broadcaster --> superToken --> nonce (counter) + mapping(address => mapping(address => mapping(uint256 => SessionRecord))) sessionRecord; // broadcaster --> superToken --> nonce --> session history + mapping(address => SessionCurrent) sessionCurrent; // broadcaster --> current live session + } + + function _storageSession() + internal + pure + returns (StorageSession storage s) + { + bytes32 position = STORAGE_POSITION_SESSION; + assembly { + s.slot := position + } + } + + ///// ------- functions ------ ///// + + ///// -------- mains --------- ///// + + /** + * startSession helps with + * 1. ensures only one supertoken session per broadcaster is open + * (may have multiple sessionRecord but at different supertokens). + * 2. to verify if different supertoken session belongs to the same "livestream", + * for every supertoken latest nonce, `timestampStart` must equal `currentTimestamp`, + * and currentTimestamp != 0. Do check externally (frontend/backend) + * + * note: currently allows start session even if msg.sender has an open flow + */ + function _startSession( + address _superToken, + uint96 _flowRate, + uint256 _tag + ) internal { + StorageSession storage sSession = _storageSession(); + uint256 newNonce = _getNewNonce(msg.sender, _superToken); + + if ( + newNonce > 0 && + sSession + .sessionRecord[msg.sender][_superToken][newNonce - 1] + .timestampStop == + 0 + ) revert PreviousSessionStillLive(); + + int96 effectiveFlowRate = _getEffectiveFlowRate( + msg.sender, + _flowRate, + _tag + ); // TODO: test + + // start session + sSession + .sessionRecord[msg.sender][_superToken][newNonce] + .effectiveFlowRate = effectiveFlowRate; + sSession + .sessionRecord[msg.sender][_superToken][newNonce].flowRate = _flowRate; + sSession + .sessionRecord[msg.sender][_superToken][newNonce].timestampStart = block + .timestamp; + + // finish + _storageSession().sessionNonce[msg.sender][_superToken] += 1; + } // TODO: add require app gelato bal, after adding auto end sess functionality + + function _stopSession(address _superToken) internal { + uint256 activeNonce = _getCurrentNonce(msg.sender, _superToken); + if ( + _storageSession() + .sessionRecord[msg.sender][_superToken][activeNonce] + .timestampStart == 0 + ) revert SessionNotStarted(); + if ( + _storageSession() + .sessionRecord[msg.sender][_superToken][activeNonce] + .timestampStop != 0 + ) revert SessionAlreadyEnded(); + + ISuperToken iSuperToken = ISuperToken(_superToken); + int96 flowRate = iSuperToken.getFlowRate(address(this), msg.sender); + if (flowRate != 0) iSuperToken.deleteFlow(address(this), msg.sender); + + // update + _storageSession() + .sessionRecord[msg.sender][_superToken][activeNonce] + .timestampStop = block.timestamp; + } // all the active taskId will just fail to execute + + ///// ------- requires ------- ///// + + ///// ------- setters -------- ///// + + ///// ------- getters -------- ///// + + function _getEffectiveFlowRate( + address _user, + uint96 _flowRate, + uint256 _tag + ) internal view returns (int96) { + uint16 bps; + uint16 sbps = LibControl._storageControl().sbps[_user]; + if (sbps > 0) { + bps = sbps; + } else { + if (LibControl._isBPSEnabled()) + bps = LibControl._getValidBPS(_flowRate, _tag); + } + + if (bps == 0) { + return int96(_flowRate); + } else { + if ((_flowRate * bps) < LibControl.bpsMax) revert InvalidFlowRate(); + return int96((_flowRate * bps) / LibControl.bpsMax); + } + } // TODO: test + + function _getNewNonce( + address _user, + address _superToken + ) internal view returns (uint256) { + return _storageSession().sessionNonce[_user][_superToken]; + } + + function _getCurrentNonce( + address _user, + address _superToken + ) internal view returns (uint256) { + uint256 nonce = _storageSession().sessionNonce[_user][_superToken]; + return nonce == 0 ? 0 : nonce - 1; + } + + function _getCurrentSessionData( + address _user + ) internal view returns (uint256, address[] memory) { + return ( + _storageSession().sessionCurrent[_user].timestamp, + _storageSession().sessionCurrent[_user].superTokens + ); + } + + function _getSessionData( + address _user, + address _superToken, + uint256 _nonce + ) internal view returns (int96, uint96, uint256, uint256) { + return ( + _storageSession() + .sessionRecord[_user][_superToken][_nonce].effectiveFlowRate, + _storageSession() + .sessionRecord[_user][_superToken][_nonce].flowRate, + _storageSession() + .sessionRecord[_user][_superToken][_nonce].timestampStart, + _storageSession() + .sessionRecord[_user][_superToken][_nonce].timestampStop + ); + } + + function _getSessionDataFromFlow( + address _user, + address _superToken, + uint256 _nonce + ) internal view returns (int96, uint96, uint256, uint256) { + LibFlow.StorageFlow storage sFlow = LibFlow._storageFlow(); + + address receiver = sFlow + .flowRecord[_user][_superToken][_nonce].receiver; + uint256 sessionNonce = sFlow + .flowRecord[_user][_superToken][_nonce].sessionNonce; + + return _getSessionData(receiver, _superToken, sessionNonce); + } + + function _getSessionDataFromControl( + address _superToken, + uint256 _nonce + ) internal view returns (int96, uint96, uint256, uint256) { + LibControl.StorageControl storage sControl = LibControl + ._storageControl(); + + address receiver = sControl.controlRecord[_superToken][_nonce].receiver; + uint256 sessionNonce = sControl + .controlRecord[_superToken][_nonce].sessionNonce; + + return _getSessionData(receiver, _superToken, sessionNonce); + } + + ///// -------- utils --------- ///// +} diff --git a/contracts/contracts/libraries/core/LibTemplate.sol b/contracts/contracts/libraries/core/LibTemplate.sol new file mode 100644 index 0000000..b571302 --- /dev/null +++ b/contracts/contracts/libraries/core/LibTemplate.sol @@ -0,0 +1,11 @@ +//SPDX-License-Identifier: BUSL-1.1 +pragma solidity ^0.8.9; + +library LibTemplate { + ///// ------- functions ------ ///// + ///// -------- mains --------- ///// + ///// ------- requires ------- ///// + ///// ------- setters -------- ///// + ///// ------- getters -------- ///// + ///// -------- utils --------- ///// +} diff --git a/contracts/contracts/libraries/utils/IterableMappingBPS.sol b/contracts/contracts/libraries/utils/IterableMappingBPS.sol new file mode 100644 index 0000000..bd0d218 --- /dev/null +++ b/contracts/contracts/libraries/utils/IterableMappingBPS.sol @@ -0,0 +1,78 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.17; + +struct BasisPointsRange { + uint16 bps; // basis points // perc fee 1% = 100bps + uint96 flowRateLowerBound; + uint96 flowRateUpperBound; +} + +library IterableMappingBPS { + // Iterable mapping from uint256 (tag) to BasisPointsRange; + struct Map { + uint256[] keys; + mapping(uint256 => BasisPointsRange) values; + mapping(uint256 => uint256) indexOf; + mapping(uint256 => bool) inserted; + } + + function get( + Map storage map, + uint256 key + ) internal view returns (BasisPointsRange memory) { + return map.values[key]; + } + + function getKeyAtIndex( + Map storage map, + uint256 index + ) internal view returns (uint256) { + return map.keys[index]; + } + + function size(Map storage map) internal view returns (uint256) { + return map.keys.length; + } + + function set( + Map storage map, + uint256 key, + uint16 _bps, + uint96 _flowRateLowerBound, + uint96 _flowRateUpperBound + ) internal { + if (map.inserted[key]) { + map.values[key].bps = _bps; + map.values[key].flowRateLowerBound = _flowRateLowerBound; + map.values[key].flowRateUpperBound = _flowRateUpperBound; + } else { + map.inserted[key] = true; + + map.values[key].bps = _bps; + map.values[key].flowRateLowerBound = _flowRateLowerBound; + map.values[key].flowRateUpperBound = _flowRateUpperBound; + + map.indexOf[key] = map.keys.length; + map.keys.push(key); + } + } + + function remove(Map storage map, uint256 key) internal { + if (!map.inserted[key]) { + return; + } + + delete map.inserted[key]; + delete map.values[key]; + + uint index = map.indexOf[key]; + uint lastIndex = map.keys.length - 1; + uint256 lastKey = map.keys[lastIndex]; + + map.indexOf[lastKey] = index; + delete map.indexOf[key]; + + map.keys[index] = lastKey; + map.keys.pop(); + } +} diff --git a/contracts/contracts/libraries/utils/LibAccessControl.sol b/contracts/contracts/libraries/utils/LibAccessControl.sol new file mode 100644 index 0000000..bb1a596 --- /dev/null +++ b/contracts/contracts/libraries/utils/LibAccessControl.sol @@ -0,0 +1,111 @@ +//SPDX-License-Identifier: BUSL-1.1 +pragma solidity ^0.8.9; + +import "@openzeppelin/contracts/utils/Strings.sol"; + +library LibAccessControl { + bytes32 constant STORAGE_POSITION_ACCESSCONTROL = + keccak256("ds.accesscontrol"); + + bytes32 constant DEFAULT_ADMIN_ROLE = 0x00; + bytes32 constant MAINTAINER_ROLE = keccak256(abi.encode("MAINTAINER_ROLE")); + bytes32 constant TREASURER_ROLE = keccak256(abi.encode("TREASURER_ROLE")); + bytes32 constant STRATEGIST_ROLE = keccak256(abi.encode("STRATEGIST_ROLE")); + bytes32 constant DEVELOPER_ROLE = keccak256(abi.encode("DEVELOPER_ROLE")); + + struct RoleData { + mapping(address => bool) members; + bytes32 adminRole; + } + + struct StorageAccessControl { + mapping(bytes32 => RoleData) roles; + } + + function _storageAccessControl() + internal + pure + returns (StorageAccessControl storage s) + { + bytes32 position = STORAGE_POSITION_ACCESSCONTROL; + assembly { + s.slot := position + } + } + + function _requireOnlyRole(bytes32 _role) internal view { + _checkRole(_role); + } + + function _hasRole( + bytes32 _role, + address _account + ) internal view returns (bool) { + return _storageAccessControl().roles[_role].members[_account]; + } + + function _checkRole(bytes32 _role) internal view { + _checkRole(_role, msg.sender); + } + + function _checkRole(bytes32 _role, address _account) internal view { + if (!_hasRole(_role, _account)) { + revert( + string( + abi.encodePacked( + "AccessControl: account ", + Strings.toHexString(uint160(_account), 20), + " is missing role ", + Strings.toHexString(uint256(_role), 32) + ) + ) + ); + } + } + + function _getRoleAdmin(bytes32 _role) internal view returns (bytes32) { + return _storageAccessControl().roles[_role].adminRole; + } + + event RoleAdminChanged( + bytes32 indexed role, + bytes32 indexed previousAdminRole, + bytes32 indexed newAdminRole + ); + + function _setRoleAdmin(bytes32 _role, bytes32 _adminRole) internal { + bytes32 previousAdminRole = _getRoleAdmin(_role); + _storageAccessControl().roles[_role].adminRole = _adminRole; + emit RoleAdminChanged(_role, previousAdminRole, _adminRole); + } + + event RoleGranted( + bytes32 indexed role, + address indexed account, + address indexed sender + ); + + function _grantRole(bytes32 _role, address _account) internal { + if (!_hasRole(_role, _account)) { + _storageAccessControl().roles[_role].members[_account] = true; + emit RoleGranted(_role, _account, msg.sender); + } + } + + event RoleRevoked( + bytes32 indexed role, + address indexed account, + address indexed sender + ); + + function _revokeRole(bytes32 _role, address _account) internal { + if (_hasRole(_role, _account)) { + _storageAccessControl().roles[_role].members[_account] = false; + emit RoleRevoked(_role, _account, msg.sender); + } + } + + function _setupRole(bytes32 _role, address _account) internal { + _grantRole(_role, _account); + } +} diff --git a/contracts/contracts/libraries/utils/LibDiamond.sol b/contracts/contracts/libraries/utils/LibDiamond.sol new file mode 100644 index 0000000..72d75b9 --- /dev/null +++ b/contracts/contracts/libraries/utils/LibDiamond.sol @@ -0,0 +1,321 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.9; + +import {ICut} from "../../interfaces/utils/ICut.sol"; + +// Remember to add the loupe functions from DiamondLoupeFacet to the diamond. +// The loupe functions are required by the EIP2535 Diamonds standard + +error InitializationFunctionReverted( + address _initializationContractAddress, + bytes _calldata +); + +library LibDiamond { + bytes32 constant STORAGE_POSITION_DIAMOND = + keccak256("diamond.standard.diamond.storage"); + + struct FacetAddressAndPosition { + address facetAddress; + uint96 functionSelectorPosition; // position in facetFunctionSelectors.functionSelectors array + } + + struct FacetFunctionSelectors { + bytes4[] functionSelectors; + uint256 facetAddressPosition; // position of facetAddress in facetAddresses array + } + + struct StorageDiamond { + // maps function selector to the facet address and + // the position of the selector in the facetFunctionSelectors.selectors array + mapping(bytes4 => FacetAddressAndPosition) selectorToFacetAndPosition; + // maps facet addresses to function selectors + mapping(address => FacetFunctionSelectors) facetFunctionSelectors; + // facet addresses + address[] facetAddresses; + // Used to query if a contract implements an interface. + // Used to implement ERC-165. + mapping(bytes4 => bool) supportedInterfaces; + } + + function _storageDiamond() + internal + pure + returns (StorageDiamond storage s) + { + bytes32 position = STORAGE_POSITION_DIAMOND; + assembly { + s.slot := position + } + } + + event DiamondCut( + ICut.FacetCut[] _diamondCut, + address _init, + bytes _calldata + ); + + // Internal function version of diamondCut + function _cut( + ICut.FacetCut[] memory _diamondCut, + address _init, + bytes memory _calldata + ) internal { + for ( + uint256 facetIndex; + facetIndex < _diamondCut.length; + facetIndex++ + ) { + ICut.FacetCutAction action = _diamondCut[facetIndex].action; + if (action == ICut.FacetCutAction.Add) { + _addFunctions( + _diamondCut[facetIndex].facetAddress, + _diamondCut[facetIndex].functionSelectors + ); + } else if (action == ICut.FacetCutAction.Replace) { + _replaceFunctions( + _diamondCut[facetIndex].facetAddress, + _diamondCut[facetIndex].functionSelectors + ); + } else if (action == ICut.FacetCutAction.Remove) { + _removeFunctions( + _diamondCut[facetIndex].facetAddress, + _diamondCut[facetIndex].functionSelectors + ); + } else { + revert("LibDiamondCut: Incorrect FacetCutAction"); + } + } + emit DiamondCut(_diamondCut, _init, _calldata); + _initializeDiamondCut(_init, _calldata); + } + + function _addFunctions( + address _facetAddress, + bytes4[] memory _functionSelectors + ) internal { + require( + _functionSelectors.length > 0, + "LibDiamondCut: No selectors in facet to cut" + ); + StorageDiamond storage s = _storageDiamond(); + require( + _facetAddress != address(0), + "LibDiamondCut: Add facet can't be address(0)" + ); + uint96 selectorPosition = uint96( + s.facetFunctionSelectors[_facetAddress].functionSelectors.length + ); + // add new facet address if it does not exist + if (selectorPosition == 0) { + _addFacet(s, _facetAddress); + } + for ( + uint256 selectorIndex; + selectorIndex < _functionSelectors.length; + selectorIndex++ + ) { + bytes4 selector = _functionSelectors[selectorIndex]; + address oldFacetAddress = s + .selectorToFacetAndPosition[selector] + .facetAddress; + require( + oldFacetAddress == address(0), + "LibDiamondCut: Can't add function that already exists" + ); + _addFunction(s, selector, selectorPosition, _facetAddress); + selectorPosition++; + } + } + + function _replaceFunctions( + address _facetAddress, + bytes4[] memory _functionSelectors + ) internal { + require( + _functionSelectors.length > 0, + "LibDiamondCut: No selectors in facet to cut" + ); + StorageDiamond storage s = _storageDiamond(); + require( + _facetAddress != address(0), + "LibDiamondCut: Add facet can't be address(0)" + ); + uint96 selectorPosition = uint96( + s.facetFunctionSelectors[_facetAddress].functionSelectors.length + ); + // add new facet address if it does not exist + if (selectorPosition == 0) { + _addFacet(s, _facetAddress); + } + for ( + uint256 selectorIndex; + selectorIndex < _functionSelectors.length; + selectorIndex++ + ) { + bytes4 selector = _functionSelectors[selectorIndex]; + address oldFacetAddress = s + .selectorToFacetAndPosition[selector] + .facetAddress; + require( + oldFacetAddress != _facetAddress, + "LibDiamondCut: Can't replace function with same function" + ); + _removeFunction(s, oldFacetAddress, selector); + _addFunction(s, selector, selectorPosition, _facetAddress); + selectorPosition++; + } + } + + function _removeFunctions( + address _facetAddress, + bytes4[] memory _functionSelectors + ) internal { + require( + _functionSelectors.length > 0, + "LibDiamondCut: No selectors in facet to cut" + ); + StorageDiamond storage s = _storageDiamond(); + // if function does not exist then do nothing and return + require( + _facetAddress == address(0), + "LibDiamondCut: Remove facet address must be address(0)" + ); + for ( + uint256 selectorIndex; + selectorIndex < _functionSelectors.length; + selectorIndex++ + ) { + bytes4 selector = _functionSelectors[selectorIndex]; + address oldFacetAddress = s + .selectorToFacetAndPosition[selector] + .facetAddress; + _removeFunction(s, oldFacetAddress, selector); + } + } + + function _addFacet( + StorageDiamond storage s, + address _facetAddress + ) internal { + _requireHasContractCode( + _facetAddress, + "LibDiamondCut: New facet has no code" + ); + s.facetFunctionSelectors[_facetAddress].facetAddressPosition = s + .facetAddresses + .length; + s.facetAddresses.push(_facetAddress); + } + + function _addFunction( + StorageDiamond storage s, + bytes4 _selector, + uint96 _selectorPosition, + address _facetAddress + ) internal { + s + .selectorToFacetAndPosition[_selector] + .functionSelectorPosition = _selectorPosition; + s.facetFunctionSelectors[_facetAddress].functionSelectors.push( + _selector + ); + s.selectorToFacetAndPosition[_selector].facetAddress = _facetAddress; + } + + function _removeFunction( + StorageDiamond storage s, + address _facetAddress, + bytes4 _selector + ) internal { + require( + _facetAddress != address(0), + "LibDiamondCut: Can't remove function that doesn't exist" + ); + // an immutable function is a function defined directly in a diamond + require( + _facetAddress != address(this), + "LibDiamondCut: Can't remove immutable function" + ); + // replace selector with last selector, then delete last selector + uint256 selectorPosition = s + .selectorToFacetAndPosition[_selector] + .functionSelectorPosition; + uint256 lastSelectorPosition = s + .facetFunctionSelectors[_facetAddress] + .functionSelectors + .length - 1; + // if not the same then replace _selector with lastSelector + if (selectorPosition != lastSelectorPosition) { + bytes4 lastSelector = s + .facetFunctionSelectors[_facetAddress] + .functionSelectors[lastSelectorPosition]; + s.facetFunctionSelectors[_facetAddress].functionSelectors[ + selectorPosition + ] = lastSelector; + s + .selectorToFacetAndPosition[lastSelector] + .functionSelectorPosition = uint96(selectorPosition); + } + // delete the last selector + s.facetFunctionSelectors[_facetAddress].functionSelectors.pop(); + delete s.selectorToFacetAndPosition[_selector]; + + // if no more selectors for facet address then delete the facet address + if (lastSelectorPosition == 0) { + // replace facet address with last facet address and delete last facet address + uint256 lastFacetAddressPosition = s.facetAddresses.length - 1; + uint256 facetAddressPosition = s + .facetFunctionSelectors[_facetAddress] + .facetAddressPosition; + if (facetAddressPosition != lastFacetAddressPosition) { + address lastFacetAddress = s.facetAddresses[ + lastFacetAddressPosition + ]; + s.facetAddresses[facetAddressPosition] = lastFacetAddress; + s + .facetFunctionSelectors[lastFacetAddress] + .facetAddressPosition = facetAddressPosition; + } + s.facetAddresses.pop(); + delete s.facetFunctionSelectors[_facetAddress].facetAddressPosition; + } + } + + function _initializeDiamondCut( + address _init, + bytes memory _calldata + ) internal { + if (_init == address(0)) { + return; + } + _requireHasContractCode( + _init, + "LibDiamondCut: _init address has no code" + ); + (bool success, bytes memory error) = _init.delegatecall(_calldata); + if (!success) { + if (error.length > 0) { + // bubble up error + /// @solidity memory-safe-assembly + assembly { + let returndata_size := mload(error) + revert(add(32, error), returndata_size) + } + } else { + revert InitializationFunctionReverted(_init, _calldata); + } + } + } + + function _requireHasContractCode( + address _contract, + string memory _errorMessage + ) internal view { + uint256 contractSize; + assembly { + contractSize := extcodesize(_contract) + } + require(contractSize > 0, _errorMessage); + } +} diff --git a/contracts/contracts/libraries/utils/LibSecurity.sol b/contracts/contracts/libraries/utils/LibSecurity.sol new file mode 100644 index 0000000..9e5b251 --- /dev/null +++ b/contracts/contracts/libraries/utils/LibSecurity.sol @@ -0,0 +1,23 @@ +//SPDX-License-Identifier: BUSL-1.1 +pragma solidity ^0.8.9; + +import {IERC1271} from "@openzeppelin/contracts/interfaces/IERC1271.sol"; + +/** + * // bytes4(keccak256("isValidSignature(bytes32,bytes)") + * // 0x1626ba7e + */ + +library LibSecurity { + function _requireValidSignature( + address _walletAddress, + bytes32 _hash, + bytes memory _signature + ) internal view { + bytes4 result = IERC1271(_walletAddress).isValidSignature( + _hash, + _signature + ); + require(result == 0x1626ba7e, "INVALID_SIGNATURE"); + } +} diff --git a/contracts/contracts/services/gelato/OpsImplementationABI.json b/contracts/contracts/services/gelato/OpsImplementationABI.json new file mode 100644 index 0000000..152ad0e --- /dev/null +++ b/contracts/contracts/services/gelato/OpsImplementationABI.json @@ -0,0 +1,437 @@ +[ + { + "inputs": [ + { + "internalType": "address payable", + "name": "_gelato", + "type": "address" + }, + { + "internalType": "contract ITaskTreasuryUpgradable", + "name": "_taskTreasury", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "stateMutability": "nonpayable", + "type": "fallback" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_taskId", + "type": "bytes32" + } + ], + "name": "cancelTask", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_execAddress", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_execDataOrSelector", + "type": "bytes" + }, + { + "components": [ + { + "internalType": "enum LibDataTypes.Module[]", + "name": "modules", + "type": "uint8[]" + }, + { + "internalType": "bytes[]", + "name": "args", + "type": "bytes[]" + } + ], + "internalType": "struct LibDataTypes.ModuleData", + "name": "_moduleData", + "type": "tuple" + }, + { + "internalType": "address", + "name": "_feeToken", + "type": "address" + } + ], + "name": "createTask", + "outputs": [ + { + "internalType": "bytes32", + "name": "taskId", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_taskCreator", + "type": "address" + }, + { + "internalType": "address", + "name": "_execAddress", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_execData", + "type": "bytes" + }, + { + "components": [ + { + "internalType": "enum LibDataTypes.Module[]", + "name": "modules", + "type": "uint8[]" + }, + { + "internalType": "bytes[]", + "name": "args", + "type": "bytes[]" + } + ], + "internalType": "struct LibDataTypes.ModuleData", + "name": "_moduleData", + "type": "tuple" + }, + { + "internalType": "uint256", + "name": "_txFee", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_feeToken", + "type": "address" + }, + { + "internalType": "bool", + "name": "_useTaskTreasuryFunds", + "type": "bool" + }, + { + "internalType": "bool", + "name": "_revertOnFailure", + "type": "bool" + } + ], + "name": "exec", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "execAddresses", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "fee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "feeToken", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "gelato", + "outputs": [ + { + "internalType": "address payable", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getFeeDetails", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "taskCreator", + "type": "address" + }, + { + "internalType": "address", + "name": "execAddress", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "execSelector", + "type": "bytes4" + }, + { + "components": [ + { + "internalType": "enum LibDataTypes.Module[]", + "name": "modules", + "type": "uint8[]" + }, + { + "internalType": "bytes[]", + "name": "args", + "type": "bytes[]" + } + ], + "internalType": "struct LibDataTypes.ModuleData", + "name": "moduleData", + "type": "tuple" + }, + { + "internalType": "address", + "name": "feeToken", + "type": "address" + } + ], + "name": "getTaskId", + "outputs": [ + { + "internalType": "bytes32", + "name": "taskId", + "type": "bytes32" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "taskCreator", + "type": "address" + }, + { + "internalType": "address", + "name": "execAddress", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "execSelector", + "type": "bytes4" + }, + { + "internalType": "bool", + "name": "useTaskTreasuryFunds", + "type": "bool" + }, + { + "internalType": "address", + "name": "feeToken", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "resolverHash", + "type": "bytes32" + } + ], + "name": "getTaskId", + "outputs": [ + { + "internalType": "bytes32", + "name": "taskId", + "type": "bytes32" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_taskCreator", + "type": "address" + } + ], + "name": "getTaskIdsByUser", + "outputs": [ + { + "internalType": "bytes32[]", + "name": "", + "type": "bytes32[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "enum LibDataTypes.Module[]", + "name": "_modules", + "type": "uint8[]" + }, + { + "internalType": "address[]", + "name": "_moduleAddresses", + "type": "address[]" + } + ], + "name": "setModule", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "taskCreator", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "enum LibDataTypes.Module", + "name": "", + "type": "uint8" + } + ], + "name": "taskModuleAddresses", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "taskTreasury", + "outputs": [ + { + "internalType": "contract ITaskTreasuryUpgradable", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "timedTask", + "outputs": [ + { + "internalType": "uint128", + "name": "nextExec", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "interval", + "type": "uint128" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "version", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + } +] diff --git a/contracts/contracts/services/gelato/TaskTreasuryUpgradableABI.json b/contracts/contracts/services/gelato/TaskTreasuryUpgradableABI.json new file mode 100644 index 0000000..6c68cb2 --- /dev/null +++ b/contracts/contracts/services/gelato/TaskTreasuryUpgradableABI.json @@ -0,0 +1,564 @@ +[ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousAdmin", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "ProxyAdminTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousImplementation", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "ProxyImplementationUpdated", + "type": "event" + }, + { + "stateMutability": "payable", + "type": "fallback" + }, + { + "inputs": [], + "name": "proxyAdmin", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "id", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "transferProxyAdmin", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "upgradeTo", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "upgradeToAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "FundsDeposited", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "initiator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "FundsWithdrawn", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "executor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "fees", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "service", + "type": "address" + } + ], + "name": "LogDeductFees", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "maxFee", + "type": "uint256" + } + ], + "name": "UpdatedMaxFee", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "service", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "add", + "type": "bool" + } + ], + "name": "UpdatedService", + "type": "event" + }, + { + "inputs": [], + "name": "MIN_SHARES_IN_TREASURY", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_receiver", + "type": "address" + }, + { + "internalType": "address", + "name": "_token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "depositFunds", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + } + ], + "name": "getCreditTokensByUser", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + } + ], + "name": "getTotalCreditTokensByUser", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getWhitelistedServices", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_maxFee", + "type": "uint256" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "maxFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "oldTreasury", + "outputs": [ + { + "internalType": "contract ITaskTreasury", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "shares", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "totalShares", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + }, + { + "internalType": "address", + "name": "_token", + "type": "address" + } + ], + "name": "totalUserTokenBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_newMaxFee", + "type": "uint256" + } + ], + "name": "updateMaxFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_service", + "type": "address" + }, + { + "internalType": "bool", + "name": "_add", + "type": "bool" + } + ], + "name": "updateWhitelistedService", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + }, + { + "internalType": "address", + "name": "_token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "useFunds", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + }, + { + "internalType": "address", + "name": "_token", + "type": "address" + } + ], + "name": "userTokenBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address payable", + "name": "_receiver", + "type": "address" + }, + { + "internalType": "address", + "name": "_token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "withdrawFunds", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "implementationAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "ownerAddress", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "stateMutability": "payable", + "type": "constructor" + } +] diff --git a/contracts/contracts/services/gelato/Types.sol b/contracts/contracts/services/gelato/Types.sol new file mode 100644 index 0000000..c505d37 --- /dev/null +++ b/contracts/contracts/services/gelato/Types.sol @@ -0,0 +1,56 @@ +// ref: https://github.com/gelatodigital/ops/blob/master/contracts/integrations/Types.sol + +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.12; + +enum Module { + RESOLVER, + TIME, + PROXY, + SINGLE_EXEC +} + +struct ModuleData { + Module[] modules; + bytes[] args; +} + +interface IAutomate { + function createTask( + address execAddress, + bytes calldata execDataOrSelector, + ModuleData calldata moduleData, + address feeToken + ) external returns (bytes32 taskId); + + function cancelTask(bytes32 taskId) external; + + function getFeeDetails() external view returns (uint256, address); + + function gelato() external view returns (address payable); + + function taskTreasury() external view returns (ITaskTreasuryUpgradable); +} + +interface ITaskTreasuryUpgradable { + function depositFunds( + address receiver, + address token, + uint256 amount + ) external payable; + + function withdrawFunds( + address payable receiver, + address token, + uint256 amount + ) external; + + function userTokenBalance(address _user, address _token) + external + view + returns (uint256); // this is addition +} + +interface IOpsProxyFactory { + function getProxyOf(address account) external view returns (address, bool); +} diff --git a/contracts/contracts/services/superfluid/ERC20_ABI.json b/contracts/contracts/services/superfluid/ERC20_ABI.json new file mode 100644 index 0000000..fa1fa67 --- /dev/null +++ b/contracts/contracts/services/superfluid/ERC20_ABI.json @@ -0,0 +1,173 @@ +[ + { + "inputs": [ + { "internalType": "string", "name": "name", "type": "string" }, + { "internalType": "string", "name": "symbol", "type": "string" }, + { "internalType": "uint8", "name": "decimals", "type": "uint8" } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { "internalType": "address", "name": "owner", "type": "address" }, + { "internalType": "address", "name": "spender", "type": "address" } + ], + "name": "allowance", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "spender", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "name": "approve", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "account", "type": "address" } + ], + "name": "balanceOf", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [{ "internalType": "uint8", "name": "", "type": "uint8" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "spender", "type": "address" }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "spender", "type": "address" }, + { "internalType": "uint256", "name": "addedValue", "type": "uint256" } + ], + "name": "increaseAllowance", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "account", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "name": "mint", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "recipient", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "name": "transfer", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "sender", "type": "address" }, + { "internalType": "address", "name": "recipient", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "name": "transferFrom", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + } +] diff --git a/contracts/contracts/tests/InitTest.sol b/contracts/contracts/tests/InitTest.sol new file mode 100644 index 0000000..304671f --- /dev/null +++ b/contracts/contracts/tests/InitTest.sol @@ -0,0 +1,10 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {LibTest} from "./LibTest.sol"; + +contract InitTest { + function init(uint256 _value) external { + LibTest._setTestValue(_value); + } +} diff --git a/contracts/contracts/tests/LibTest.sol b/contracts/contracts/tests/LibTest.sol new file mode 100644 index 0000000..397eeb1 --- /dev/null +++ b/contracts/contracts/tests/LibTest.sol @@ -0,0 +1,25 @@ +//SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +library LibTest { + bytes32 constant STORAGE_POSITION_TEST = keccak256("ds.test123"); + + struct StorageTest { + uint256 value; + } + + function _storageTest() internal pure returns (StorageTest storage s) { + bytes32 position = STORAGE_POSITION_TEST; + assembly { + s.slot := position + } + } + + function _setTestValue(uint256 _value) internal { + _storageTest().value = _value; + } + + function _getTestValue() internal view returns (uint256) { + return _storageTest().value; + } +} diff --git a/contracts/contracts/tests/Test1Facet.sol b/contracts/contracts/tests/Test1Facet.sol new file mode 100644 index 0000000..49a73b5 --- /dev/null +++ b/contracts/contracts/tests/Test1Facet.sol @@ -0,0 +1,52 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +contract Test1Facet { + event TestEvent(address something); + + function test1Func1() external {} + + function test1Func2() external {} + + function test1Func3() external {} + + function test1Func4() external {} + + function test1Func5() external {} + + function test1Func6() external {} + + function test1Func7() external {} + + function test1Func8() external {} + + function test1Func9() external {} + + function test1Func10() external {} + + function test1Func11() external {} + + function test1Func12() external {} + + function test1Func13() external {} + + function test1Func14() external {} + + function test1Func15() external {} + + function test1Func16() external {} + + function test1Func17() external {} + + function test1Func18() external {} + + function test1Func19() external {} + + function test1Func20() external {} + + function supportsInterface(bytes4 _interfaceID) + external + view + returns (bool) + {} +} diff --git a/contracts/contracts/tests/Test2Facet.sol b/contracts/contracts/tests/Test2Facet.sol new file mode 100644 index 0000000..d0b893e --- /dev/null +++ b/contracts/contracts/tests/Test2Facet.sol @@ -0,0 +1,44 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +contract Test2Facet { + function test2Func1() external {} + + function test2Func2() external {} + + function test2Func3() external {} + + function test2Func4() external {} + + function test2Func5() external {} + + function test2Func6() external {} + + function test2Func7() external {} + + function test2Func8() external {} + + function test2Func9() external {} + + function test2Func10() external {} + + function test2Func11() external {} + + function test2Func12() external {} + + function test2Func13() external {} + + function test2Func14() external {} + + function test2Func15() external {} + + function test2Func16() external {} + + function test2Func17() external {} + + function test2Func18() external {} + + function test2Func19() external {} + + function test2Func20() external {} +} diff --git a/contracts/contracts/tests/Test3Facet.sol b/contracts/contracts/tests/Test3Facet.sol new file mode 100644 index 0000000..5f449b7 --- /dev/null +++ b/contracts/contracts/tests/Test3Facet.sol @@ -0,0 +1,10 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +contract Test3Facet { + function test3Func1() external pure returns (uint256) { + return 1; + } + + function test3Func2() external {} +} diff --git a/contracts/contracts/tests/Test3Facet2.sol b/contracts/contracts/tests/Test3Facet2.sol new file mode 100644 index 0000000..7c0ddf0 --- /dev/null +++ b/contracts/contracts/tests/Test3Facet2.sol @@ -0,0 +1,8 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +contract Test3Facet2 { + function test3Func1() external pure returns (uint256) { + return 2; + } +} diff --git a/contracts/contracts/tests/Test4Facet.sol b/contracts/contracts/tests/Test4Facet.sol new file mode 100644 index 0000000..16ebf20 --- /dev/null +++ b/contracts/contracts/tests/Test4Facet.sol @@ -0,0 +1,8 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +contract Test4Facet { + function test4Func1() external {} + + function test4Func2() external {} +} diff --git a/contracts/contracts/tests/Test5Facet.sol b/contracts/contracts/tests/Test5Facet.sol new file mode 100644 index 0000000..6aa9673 --- /dev/null +++ b/contracts/contracts/tests/Test5Facet.sol @@ -0,0 +1,18 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {LibTest} from "./LibTest.sol"; + +contract Test5Facet { + function test5Func1() external {} + + function test5Func2() external {} + + function setValue(uint256 _value) external { + LibTest._setTestValue(_value); + } + + function getValue() external view returns (uint256) { + return LibTest._getTestValue(); + } +} diff --git a/contracts/contracts/upgrades/DiamondInit.sol b/contracts/contracts/upgrades/DiamondInit.sol new file mode 100644 index 0000000..4e03c2a --- /dev/null +++ b/contracts/contracts/upgrades/DiamondInit.sol @@ -0,0 +1,48 @@ +// SPDX-License-Identifier: BUSL-1.1 +pragma solidity ^0.8.9; + +import {ISuperToken} from "@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.sol"; + +import {LibDiamond} from "../libraries/utils/LibDiamond.sol"; +import {LibAutomate} from "../libraries/core/LibAutomate.sol"; +import {LibControl} from "../libraries/core/LibControl.sol"; +import {IERC165} from "../interfaces/utils/IERC165.sol"; +import {ICut} from "../interfaces/utils/ICut.sol"; +import {ILoupe} from "../interfaces/utils/ILoupe.sol"; +import {IAccessControl} from "../interfaces/utils/IAccessControl.sol"; +import {IUtility} from "../interfaces/utils/IUtility.sol"; +import {IAutomate} from "../interfaces/core/IAutomate.sol"; +import {IControl} from "../interfaces/core/IControl.sol"; +import {ISession} from "../interfaces/core/ISession.sol"; +import {IFlow} from "../interfaces/core/IFlow.sol"; + +contract DiamondInit { + function init( + address _autobot, + uint256 _minimumAppGelatoBalance, + uint256 _minimumEndDuration, // seconds + uint256 _minimumLifespan, // seconds + uint256 _stBufferDurationInSecond, + address[] memory _superTokens + ) external { + LibDiamond.StorageDiamond storage s = LibDiamond._storageDiamond(); + s.supportedInterfaces[type(IERC165).interfaceId] = true; + s.supportedInterfaces[type(ICut).interfaceId] = true; + s.supportedInterfaces[type(ILoupe).interfaceId] = true; + s.supportedInterfaces[type(IAccessControl).interfaceId] = true; + s.supportedInterfaces[type(IUtility).interfaceId] = true; + s.supportedInterfaces[type(IAutomate).interfaceId] = true; + s.supportedInterfaces[type(IControl).interfaceId] = true; + s.supportedInterfaces[type(ISession).interfaceId] = true; + s.supportedInterfaces[type(IFlow).interfaceId] = true; + + LibAutomate._setGelatoContracts(_autobot); + LibAutomate._setMinimumAppGelatoBalance(_minimumAppGelatoBalance); + LibControl._setMinimumEndDuration(_minimumEndDuration); + LibControl._setMinimumLifespan(_minimumLifespan); + LibControl._setSTBufferAmount(_stBufferDurationInSecond); + for (uint256 i = 0; i < _superTokens.length; i++) { + LibControl._addSuperToken(_superTokens[i]); + } + } +} diff --git a/contracts/hardhat.config.ts b/contracts/hardhat.config.ts new file mode 100644 index 0000000..0c71931 --- /dev/null +++ b/contracts/hardhat.config.ts @@ -0,0 +1,59 @@ +import { HardhatUserConfig } from "hardhat/config"; +import "@nomicfoundation/hardhat-toolbox"; +// require("hardhat-deploy"); +import { config as dotEnvConfig } from "dotenv"; +dotEnvConfig(); + +interface CustomConfig extends HardhatUserConfig { + namedAccounts: any; +} + +const config: CustomConfig = { + solidity: { + compilers: [{ version: "0.8.18" }], + settings: { + optimizer: { + enabled: true, + runs: 200, + }, + }, + }, + networks: { + hardhat: { + forking: { + url: process.env.ALCHEMY_API_URL_MUMBAI!, + blockNumber: 32731400, + }, + }, + polygon: { + chainId: 137, + url: process.env.ALCHEMY_API_URL_POLYGON!, + accounts: [process.env.PRIVATE_KEY_1!], + // blockGasLimit: 3000000, + // gasPrice: 100000000000, // 100 gwei + }, + mumbai: { + chainId: 80001, + url: process.env.ALCHEMY_API_URL_MUMBAI!, + accounts: [process.env.PRIVATE_KEY_1!, process.env.PRIVATE_KEY_2!], + // blockGasLimit: 2200000, + }, + }, + etherscan: { + apiKey: process.env.POLYGONSCAN_API_KEY!, + }, + gasReporter: { + enabled: process.env.REPORT_GAS ? true : false, + currency: "USD", + token: "MATIC", + gasPrice: 300, + }, // https://www.npmjs.com/package/hardhat-gas-reporter + namedAccounts: { + deployer: { + default: 0, + mmumbai: 0, + }, + }, +}; + +export default config; diff --git a/contracts/package.json b/contracts/package.json new file mode 100644 index 0000000..4bf52cf --- /dev/null +++ b/contracts/package.json @@ -0,0 +1,27 @@ +{ + "devDependencies": { + "@ethersproject/abi": "^5.4.7", + "@ethersproject/providers": "^5.4.7", + "@nomicfoundation/hardhat-chai-matchers": "^1.0.0", + "@nomicfoundation/hardhat-network-helpers": "^1.0.0", + "@nomicfoundation/hardhat-toolbox": "^2.0.0", + "@nomiclabs/hardhat-ethers": "^2.0.0", + "@nomiclabs/hardhat-etherscan": "^3.0.0", + "@openzeppelin/contracts": "^4.8.3", + "@superfluid-finance/ethereum-contracts": "^1.5.2", + "@typechain/ethers-v5": "^10.1.0", + "@typechain/hardhat": "^6.1.2", + "@types/chai": "^4.2.0", + "@types/mocha": ">=9.1.0", + "@types/node": ">=12.0.0", + "chai": "^4.2.0", + "dotenv": "^16.0.3", + "ethers": "^5.4.7", + "hardhat": "^2.14.0", + "hardhat-gas-reporter": "^1.0.8", + "solidity-coverage": "^0.8.0", + "ts-node": ">=8.0.0", + "typechain": "^8.1.0", + "typescript": ">=4.5.0" + } +} diff --git a/contracts/scripts/deploy.setup.ts b/contracts/scripts/deploy.setup.ts new file mode 100644 index 0000000..a53b193 --- /dev/null +++ b/contracts/scripts/deploy.setup.ts @@ -0,0 +1,320 @@ +import { Contract } from "ethers"; +import hre, { ethers } from "hardhat"; +import path from "path"; +import fs from "fs/promises"; +// @ts-ignore +import { FacetCutAction, getSelectors } from "../utils/diamond"; +import { ZERO_BYTES, networkConfig } from "../utils/common"; +import { + ADDRESS_GELATO_AUTOBOT, + MIN_APP_GELATO_BALANCE, + MINIMUM_END_DURATION, + MINIMUM_LIFESPAN, + ST_BUFFER_DURATION_IN_SECONDS, + ST_ADDRESSES, +} from "../test/common.test"; + +async function isExists(path: string) { + try { + await fs.access(path); + return true; + } catch { + return false; + } +} + +async function writeFile(filePath: string, data: any) { + try { + const dirname = path.dirname(filePath); + const exist = await isExists(dirname); + if (!exist) { + await fs.mkdir(dirname, { recursive: true }); + } + + await fs.appendFile(filePath, data, "utf8"); + } catch (err: any) { + throw new Error(err); + } +} // ref: https://stackoverflow.com/a/65615651 + +const simpleDeploy = async ( + contractName: string, + args: any[], + chainId: number, + timestamp: number, + isLinkLib: boolean = false, + isTest: boolean = false +) => { + const [deployer] = await ethers.getSigners(); + + // let fContract + // if (isLinkLib) { + // fContract = await ethers.getContractFactory(contractName, deployer, { + // libraries: { + // ExampleLib: "0x...", + // }); + // } else { + // fContract = await ethers.getContractFactory(contractName, deployer); + // } + const fContract = await ethers.getContractFactory(contractName, deployer); + const ctContract = await fContract.deploy(...args); + await ctContract.deployed(); // vs await ctLoupe.deployTransaction.wait(1); | ref: https://github.com/ethers-io/ethers.js/discussions/1577#discussioncomment-764711 + + const dir = "./addresses"; + const file = `${dir}/${networkConfig[chainId]["name"]}_${timestamp}.txt`; + try { + if (!isTest) + await writeFile(file, `${ctContract.address} - ${contractName}\n`); + } catch (error: any) { + console.error(error); + } + + return ctContract; +}; + +const addFacetCutProcedure = (contractFacets: Contract[]) => { + const facetCutProcedures = []; + + for (let i = 0; i < contractFacets.length; i++) { + const contractFacet = contractFacets[i]; + facetCutProcedures.push({ + facetAddress: contractFacet.address, + action: FacetCutAction.Add, + functionSelectors: getSelectors(contractFacet), + }); + } + + return facetCutProcedures; +}; + +export async function main(isTest: boolean = false) { + const now = Date.now(); + + const [deployer] = await ethers.getSigners(); + + const chainId = hre.network.config.chainId; + console.log("On Chain:", chainId); + + if (!chainId) return; + + // ------------------------- // + // ----- deploy facets ----- // + // ------------------------- // + + const ctLoupe = await simpleDeploy("Loupe", [], chainId, now, isTest); + const ctCut = await simpleDeploy("Cut", [], chainId, now, isTest); + const ctAccessControl = await simpleDeploy( + "AccessControl", + [], + chainId, + now, + isTest + ); + const ctUtility = await simpleDeploy("Utility", [], chainId, now, isTest); + const ctAutomate = await simpleDeploy("Automate", [], chainId, now, isTest); + const ctControl = await simpleDeploy("Control", [], chainId, now, isTest); + const ctSession = await simpleDeploy("Session", [], chainId, now, isTest); + const ctFlow = await simpleDeploy("Flow", [], chainId, now, isTest); + const ctDiamond = await simpleDeploy( + "Diamond", + [deployer.address, ctCut.address], + chainId, + now, + isTest + ); + + // Note: the contracts deployed above may be optionally verified + + // ---------------------------------------- // + // ----- prepare facet cut procedures ----- // + // ---------------------------------------- // + + const facetCutProcedures = addFacetCutProcedure([ + ctLoupe, + ctAccessControl, + ctUtility, + ctAutomate, + ctControl, + ctSession, + ctFlow, + ]); + + // ----------------------- // + // ----- cut diamond ----- // + // ----------------------- // + + const fDiamondInit = await ethers.getContractFactory("DiamondInit", deployer); + const ctDiamondInit = await fDiamondInit.deploy(); + await ctDiamondInit.deployed(); + + const addressesSuperTokens = [networkConfig[chainId]["addrUSDCx"]]; + let initParams = [ + networkConfig[chainId]["addrGelAutobot"], // address _autobot, + ethers.utils.parseEther("1"), // uint256 _minimumAppGelatoBalance, + 60, // uint256 _minimumEndDuration + 1, // uint256 _minimumLifespan (seconds) + 60, // uint256 _stBufferDurationInSecond, (in case of emergency where contract lack of supertoken funds, this is the duration at which it will last before contract loses it deposit -- DANGER) + addressesSuperTokens, // ISuperToken[] memory _superTokens + ] as any; + + if (isTest) { + initParams = [ + ADDRESS_GELATO_AUTOBOT, + MIN_APP_GELATO_BALANCE, + MINIMUM_END_DURATION, + MINIMUM_LIFESPAN, + ST_BUFFER_DURATION_IN_SECONDS, + ST_ADDRESSES, + ] as any; + console.log( + "|| THIS DEPLOYMENT IS USING TEST PARAMETERS TO INITIALIZE DIAMOND CONTRACT ||" + ); + } + + const encodedFunctionData = ctDiamondInit.interface.encodeFunctionData( + "init", + initParams + ); + + const ctDiamondCut = await ethers.getContractAt(`ICut`, ctDiamond.address); // call cut functionalities using main diamond address + + console.log("--- 💎 Diamond Cutting "); + const tx = await ctDiamondCut.diamondCut( + facetCutProcedures, + ctDiamondInit.address, // ethers.constants.AddressZero, + encodedFunctionData // ZERO_BYTES + ); + const rcpt = await tx.wait(); + if (!rcpt.status) { + throw Error(`!!! Diamond Cut Failed: ${tx.hash}`); + } + console.log("--- ✅ Cut Completed:", ctDiamond.address); + + // -------------------------- // + // ----- verify example ----- // + // -------------------------- // + + // try { + // await hre.run("verify:verify", { + // // https://hardhat.org/plugins/nomiclabs-hardhat-etherscan.html#using-programmatically + // address: contractAddress, + // constructorArguments: [], // empty for all facets except main Diamond contract deployed initially + // contract: contractPathVerify, // contractPath:contractName + // }); + // } catch (err) { + // console.log(err); + // } + // + // contractPath = "parent_folder/contracts/.../ContractName.sol" + // contractPath = "contracts/facets/core/Automate.sol" <-- example + + // ---------------------------- // + // ------ post deployment ----- // + // ---------------------------- // + + const ctControlDeployer = await ethers.getContractAt( + "Control", + ctDiamond.address, + deployer + ); + + const SOME_SUPER_BIG_FLOW_RATE = "99999000000000000000000"; + const PTR_720 = { + "40": { gte: "225000000000000", lt: "300000000000000", bps: 4000 }, + "30": { gte: "300000000000000", lt: "450000000000000", bps: 3000 }, + "20": { gte: "450000000000000", lt: "600000000000000", bps: 2000 }, + "15": { gte: "600000000000000", lt: "900000000000000", bps: 1500 }, + "10": { gte: "900000000000000", lt: "1800000000000000", bps: 1000 }, + "5": { gte: "1800000000000000", lt: SOME_SUPER_BIG_FLOW_RATE, bps: 500 }, + }; // ref: https://docs.google.com/spreadsheets/d/1mx5hVm7k5jS4_htJNEfYTasWxx2Pcni0C1gqdQdWdaA/edit#gid=912411221 + + const PTR_1080 = { + "40": { gte: "300000000000000", lt: "400000000000000", bps: 4000 }, + "30": { gte: "400000000000000", lt: "600000000000000", bps: 3000 }, + "20": { gte: "600000000000000", lt: "800000000000000", bps: 2000 }, + "15": { gte: "800000000000000", lt: "1200000000000000", bps: 1500 }, + "10": { gte: "1200000000000000", lt: "2400000000000000", bps: 1000 }, + "5": { gte: "2400000000000000", lt: SOME_SUPER_BIG_FLOW_RATE, bps: 500 }, + }; // ref: https://docs.google.com/spreadsheets/d/1mx5hVm7k5jS4_htJNEfYTasWxx2Pcni0C1gqdQdWdaA/edit#gid=912411221 + + const bpss720 = [ + PTR_720["40"].bps, + PTR_720["30"].bps, + PTR_720["20"].bps, + PTR_720["15"].bps, + PTR_720["10"].bps, + PTR_720["5"].bps, + ]; + const flowRateLowerBounds720 = [ + PTR_720["40"].gte, + PTR_720["30"].gte, + PTR_720["20"].gte, + PTR_720["15"].gte, + PTR_720["10"].gte, + PTR_720["5"].gte, + ]; + const flowRateUpperBounds720 = [ + PTR_720["40"].lt, + PTR_720["30"].lt, + PTR_720["20"].lt, + PTR_720["15"].lt, + PTR_720["10"].lt, + PTR_720["5"].lt, + ]; + const tags720 = [0, 1, 2, 3, 4, 5]; + + ///// + + const bpss1080 = [ + PTR_1080["40"].bps, + PTR_1080["30"].bps, + PTR_1080["20"].bps, + PTR_1080["15"].bps, + PTR_1080["10"].bps, + PTR_1080["5"].bps, + ]; + const flowRateLowerBounds1080 = [ + PTR_1080["40"].gte, + PTR_1080["30"].gte, + PTR_1080["20"].gte, + PTR_1080["15"].gte, + PTR_1080["10"].gte, + PTR_1080["5"].gte, + ]; + const flowRateUpperBounds1080 = [ + PTR_1080["40"].lt, + PTR_1080["30"].lt, + PTR_1080["20"].lt, + PTR_1080["15"].lt, + PTR_1080["10"].lt, + PTR_1080["5"].lt, + ]; + const tags1080 = [6, 7, 8, 9, 10, 11]; + + ////// + + if (!isTest) { + const tx720 = await ctControlDeployer.setBPS( + bpss720, + flowRateLowerBounds720, + flowRateUpperBounds720, + tags720 + ); + const rcpt720 = await tx720.wait(); + + const tx1080 = await ctControlDeployer.setBPS( + bpss1080, + flowRateLowerBounds1080, + flowRateUpperBounds1080, + tags1080 + ); + const rcpt1080 = await tx1080.wait(); + + console.log("--- 🪧 Post Done"); + } + + // const tx1 = await ctControlDeployer.toggleBPS(); + // const rcpt1 = await tx1.wait(); + + return ctDiamond; +} diff --git a/contracts/scripts/deploy.ts b/contracts/scripts/deploy.ts new file mode 100644 index 0000000..eafd496 --- /dev/null +++ b/contracts/scripts/deploy.ts @@ -0,0 +1,8 @@ +import { main } from "./deploy.setup"; + +main().catch((error) => { + console.error(error); + process.exitCode = 1; +}); + +// npx hardhat run ./scripts/deploy.ts --network mumbai diff --git a/contracts/scripts/verify.ts b/contracts/scripts/verify.ts new file mode 100644 index 0000000..061cb1b --- /dev/null +++ b/contracts/scripts/verify.ts @@ -0,0 +1,26 @@ +import hre, { ethers } from "hardhat"; + +async function main() { + // ------------------- // + // ----- EXAMPLE ----- // + // ------------------- // + + try { + await hre.run("verify:verify", { + // https://hardhat.org/plugins/nomiclabs-hardhat-etherscan.html#using-programmatically + address: "0xc0695B706629E4cC077f5d68497eeeC937Bf7e26", // contract specific address (not Diamond) + constructorArguments: [], // empty for all facets except main Diamond contract deployed initially + contract: "contracts/facets/core/Flow.sol:Flow", // contractPath:contractName + }); + } catch (err) { + console.log(err); + } +} + +main().catch((error) => { + console.error(error); + process.exitCode = 1; +}); + +// npx hardhat run ./scripts/verify.ts --network mumbai +// NOTE: if have trouble verifying with some weird file not found error, delete `artifacts`/`cache` and try again diff --git a/contracts/test/Bounty.ts b/contracts/test/Bounty.ts new file mode 100644 index 0000000..aaa2e93 --- /dev/null +++ b/contracts/test/Bounty.ts @@ -0,0 +1,2912 @@ +import { time, loadFixture } from "@nomicfoundation/hardhat-network-helpers"; +import { type SignerWithAddress } from "@nomiclabs/hardhat-ethers/signers"; +import { expect } from "chai"; +import { Contract, type BigNumber } from "ethers"; +import hre, { ethers } from "hardhat"; +import { main as deployBounty } from "../scripts/deploy.setup"; +import { ZERO_BYTES, networkConfig } from "../utils/common"; + +import ISuperfluid from "@superfluid-finance/ethereum-contracts/build/contracts/ISuperfluid.json"; +import ISuperToken from "@superfluid-finance/ethereum-contracts/build/contracts/ISuperToken.json"; +import IConstantFlowAgreementV1 from "@superfluid-finance/ethereum-contracts/build/contracts/IConstantFlowAgreementV1.json"; + +const ABI_SF_HOST = ISuperfluid.abi; +const ABI_SUPERTOKEN = ISuperToken.abi; +const ABI_CFAV1 = IConstantFlowAgreementV1.abi; +import TaskTreasuryUpgradableABI from "../contracts/bounty_diamond/services/gelato/TaskTreasuryUpgradableABI.json"; +import OpsImplementationABI from "../contracts/bounty_diamond/services/gelato/OpsImplementationABI.json"; +import ABI_ERC20 from "../contracts/bounty_diamond/services/superfluid/ERC20_ABI.json"; + +const amGelatoFee = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"; +const amAutobotFactory = "0xC815dB16D4be6ddf2685C201937905aBf338F5D7"; +const GELATO_FEE = ethers.utils.parseEther("0.1"); + +// const chainId = hre.network.config.chainId; +// const CHAIN_ID_MUMBAI = 80001; +// export const ADDRESS_GELATO_AUTOBOT = +// networkConfig[chainId ?? CHAIN_ID_MUMBAI]["addrGelAutobot"]; +// // export const MINIMUM_DEPOSIT_AMOUNT = ethers.utils.parseEther("3"); // 1 +// export const MINIMUM_FLOW_AMOUNT = ethers.utils.parseEther("2"); // 2 +// export const MINIMUM_DEPOSIT_AMOUNT = MINIMUM_FLOW_AMOUNT.sub( +// ethers.utils.parseEther("1") +// ); +// export const MAX_FLOW_DURATION_PER_UNIT_FLOW_AMOUNT = 4092000; // 2592000 = 1 month in seconds +// export const MIN_CONTRACT_GELATO_BALANCE = ethers.utils.parseEther("0.5"); +// export const ST_BUFFER_DURATION_IN_SECONDS = 3600; +// export const ST_ADDRESSES = [ +// networkConfig[chainId ?? CHAIN_ID_MUMBAI]["addrUSDCx"], +// ]; + +import { + ADDRESS_GELATO_AUTOBOT, + MINIMUM_DEPOSIT_AMOUNT, + MINIMUM_FLOW_AMOUNT, + MAX_FLOW_DURATION_PER_UNIT_FLOW_AMOUNT, + MIN_CONTRACT_GELATO_BALANCE, + ST_BUFFER_DURATION_IN_SECONDS, + ST_ADDRESSES, +} from "./common.test"; + +describe("Bounty", () => { + const encodeTimeArgs = (startTime: number, interval: number) => { + const encoded = ethers.utils.defaultAbiCoder.encode( + ["uint128", "uint128"], + [startTime, interval] + ); + + return encoded; + }; + + const makeRich = async (signers: SignerWithAddress[], chainId: number) => { + const amount = ethers.utils.parseEther("1000"); + + for (let i = 0; i < signers.length; i++) { + const ctUSDC = await ethers.getContractAt( + ABI_ERC20, + networkConfig[chainId]["addrUSDC"], + signers[i] + ); + + const ctUSDCx = await ethers.getContractAt( + ABI_SUPERTOKEN, + networkConfig[chainId]["addrUSDCx"], + signers[i] + ); + + var tx = await ctUSDC.mint(signers[i].address, amount); + var rcpt = await tx.wait(); + + var tx = await ctUSDC.approve(ctUSDCx.address, amount); + var rcpt = await tx.wait(); + + var tx = await ctUSDCx.upgrade(amount); + var rcpt = await tx.wait(); + } + }; + + const fundContractWithNativeGas = async ( + contractAddress: string, + amount: BigNumber + ) => { + const [deployer] = await ethers.getSigners(); + + await deployer.sendTransaction({ value: amount, to: contractAddress }); + }; + + const fundBountyContractGelatoTresury = async ( + chainId: number, + amBounty: string, + amount: BigNumber + ) => { + const [deployer, client1] = await ethers.getSigners(); + + // const ctGelatoTreasury = new ethers.Contract( + // networkConfig[chainId]["addrGelTreasury"], + // TaskTreasuryUpgradableABI, + // deployer + // ); + + // var tx = await ctGelatoTreasury.depositFunds( + // amBounty, + // amGelatoFee, + // amount, + // { value: amount } + // ); + // var rcpt = await tx.wait(); + + const ctAutomateClient1 = await ethers.getContractAt( + "Automate", + amBounty, + client1 + ); + + var tx = await ctAutomateClient1.depositGelatoFunds({ value: amount }); + var rcpt = await tx.wait(); + }; + + const approveDepositClientSTFundsToContract = async ( + client: SignerWithAddress, + contractAddress: string, + amountBounty: BigNumber, + chainId: number + ) => { + const ctUSDCxClient = await ethers.getContractAt( + ABI_SUPERTOKEN, + networkConfig[chainId]["addrUSDCx"], + client + ); + + var tx = await ctUSDCxClient.approve(contractAddress, amountBounty); + var rcpt = await tx.wait(); + }; + + const prefundSTToBountyContract = async ( + contractAddress: string, + amount: BigNumber, + chainId: number + ) => { + const [deployer] = await ethers.getSigners(); + + const ctUSDCx = await ethers.getContractAt( + ABI_SUPERTOKEN, + networkConfig[chainId]["addrUSDCx"], + deployer + ); + + var tx = await ctUSDCx.transfer(contractAddress, amount); + var rcpt = await tx.wait(); + }; + + const withdrawSTFromBountyContract = async ( + contractAddress: string, + amount: BigNumber, + chainId: number + ) => { + const [deployer] = await ethers.getSigners(); + + const ctFlowSetup = await ethers.getContractAt( + "FlowSetup", + contractAddress, + deployer + ); + + var tx = await ctFlowSetup.withdrawSuperToken( + networkConfig[chainId]["addrUSDCx"], + amount + ); + var rcpt = await tx.wait(); + }; + + const checkRoleValidity = async ( + amBounty: string, + signer: SignerWithAddress, + role: string, + shouldBe: boolean, + isAdmin: boolean = false + ) => { + const ctAccessControl = await ethers.getContractAt( + "AccessControl", + amBounty, + signer + ); + let roleHex; + if (isAdmin) { + roleHex = ctAccessControl.getDefaultAdminRole(); + } else { + roleHex = await ctAccessControl.getRole(role); + } + const isRole = await ctAccessControl.hasRole(roleHex, signer.address); + expect(isRole).to.be.equal(shouldBe); + }; + + const init = async () => { + const [deployer, client1, client2, worker1, worker2] = + await ethers.getSigners(); + + const chainId = hre.network.config.chainId; + console.log("On Chain:", chainId); + + if (!chainId) return; + await makeRich([deployer, client1, client2, worker1, worker2], chainId); + + const ctBounty = await deployBounty(true); + if (!ctBounty) return; + const amBounty = ctBounty.address; + + const ctUtilityDeployer = await ethers.getContractAt( + "Utility", + amBounty, + deployer + ); + const ctUtilityClient1 = await ethers.getContractAt( + "Utility", + amBounty, + client1 + ); + const ctAccessControlDeployer = await ethers.getContractAt( + "AccessControl", + amBounty, + deployer + ); + const ctAccessControlClient1 = await ethers.getContractAt( + "AccessControl", + amBounty, + client1 + ); + const ctAutomateDeployer = await ethers.getContractAt( + "Automate", + amBounty, + deployer + ); + const ctAutomateClient1 = await ethers.getContractAt( + "Automate", + amBounty, + client1 + ); + const ctFlowSetupDeployer = await ethers.getContractAt( + "FlowSetup", + amBounty, + deployer + ); + const ctFlowSetupClient1 = await ethers.getContractAt( + "FlowSetup", + amBounty, + client1 + ); + const ctFlowClient1 = await ethers.getContractAt("Flow", amBounty, client1); + + const ctCFAV1 = await ethers.getContractAt( + ABI_CFAV1, + networkConfig[chainId]["addrCFAV1"], + deployer + ); + + const ctUSDCx = await ethers.getContractAt( + ABI_SUPERTOKEN, + networkConfig[chainId]["addrUSDCx"], + deployer + ); + const ctGelatoTreasury = new ethers.Contract( + networkConfig[chainId]["addrGelTreasury"], + TaskTreasuryUpgradableABI, + deployer + ); + + await hre.network.provider.request({ + method: "hardhat_impersonateAccount", + params: [networkConfig[chainId]["addrGelNet"]], + }); + const gelatoExecutor = ethers.provider.getSigner( + networkConfig[chainId]["addrGelNet"] + ); + + const ctGelatoAutoBot = new ethers.Contract( + networkConfig[chainId]["addrGelAutobot"], + OpsImplementationABI, + gelatoExecutor + ); + + const ctFlowGelatoExecutor = await ethers.getContractAt( + "Flow", + amBounty, + gelatoExecutor + ); + + return { + chainId, + ctUtilityDeployer, + ctUtilityClient1, + ctAccessControlDeployer, + ctAccessControlClient1, + ctAutomateDeployer, + ctAutomateClient1, + ctFlowSetupDeployer, + ctFlowSetupClient1, + ctFlowClient1, + ctFlowGelatoExecutor, + ctCFAV1, + ctUSDCx, + ctGelatoTreasury, + ctGelatoAutoBot, + gelatoExecutor, + amBounty, + deployer, + client1, + client2, + worker1, + worker2, + }; + }; + + describe("deployment", async () => { + it("Should deploy and set initial values correctly", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctAutomateClient1, + ctFlowSetupClient1, + amBounty, + deployer, + client1, + } = result; + + // TODO: diamond / cut / loupe test separately (diamondTest.js) + + await checkRoleValidity(amBounty, deployer, "", true, true); + await checkRoleValidity(amBounty, deployer, "MAINTAINER_ROLE", true); + await checkRoleValidity(amBounty, deployer, "TREASURER_ROLE", true); + await checkRoleValidity(amBounty, deployer, "STRATEGIST_ROLE", true); + await checkRoleValidity(amBounty, deployer, "DEVELOPER_ROLE", false); + + await checkRoleValidity(amBounty, client1, "", false, true); + await checkRoleValidity(amBounty, client1, "MAINTAINER_ROLE", false); + await checkRoleValidity(amBounty, client1, "TREASURER_ROLE", false); + await checkRoleValidity(amBounty, client1, "STRATEGIST_ROLE", false); + await checkRoleValidity(amBounty, client1, "DEVELOPER_ROLE", false); + + const gelatoAddresses = await ctAutomateClient1.getGelatoAddresses(); + expect(gelatoAddresses[0]).to.be.equal(ADDRESS_GELATO_AUTOBOT); + expect(gelatoAddresses[1]).to.be.equal( + networkConfig[chainId]["addrGelTreasury"] + ); + expect(gelatoAddresses[2]).to.be.equal( + networkConfig[chainId]["addrGelNet"] + ); + expect(gelatoAddresses[3]).to.be.equal(amAutobotFactory); + expect(gelatoAddresses[4]).to.be.equal(amGelatoFee); + + expect(await ctAutomateClient1.getMinContractGelatoBalance()).to.be.equal( + MIN_CONTRACT_GELATO_BALANCE + ); + + expect( + await ctFlowSetupClient1.isSuperTokensSupported(ST_ADDRESSES[0]) + ).to.be.equal(true); + expect( + await ctFlowSetupClient1.isSuperTokensSupported( + networkConfig[chainId]["addrDAIx"] + ) + ).to.be.equal(false); + + expect(await ctFlowSetupClient1.getMinimumDepositAmount()).to.be.equal( + MINIMUM_DEPOSIT_AMOUNT + ); + expect(await ctFlowSetupClient1.getMinimumFlowAmount()).to.be.equal( + MINIMUM_FLOW_AMOUNT + ); + expect( + await ctFlowSetupClient1.getMaxFlowDurationPerUnitFlowAmount() + ).to.be.equal(MAX_FLOW_DURATION_PER_UNIT_FLOW_AMOUNT); + expect( + await ctFlowSetupClient1.getSTBufferDurationInSecond() + ).to.be.equal(ST_BUFFER_DURATION_IN_SECONDS); + }); + }); + + describe("Utility", async () => { + describe("getNativeBalance", async () => { + it("Should get contract native balance", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctUtilityClient1, amBounty } = result; + + const amount = ethers.utils.parseEther("2"); + expect(await ctUtilityClient1.getNativeBalance()).to.be.equal(0); + await fundContractWithNativeGas(amBounty, amount); + expect(await ctUtilityClient1.getNativeBalance()).to.be.equal(amount); + }); + }); + describe("withdrawNativeBalance", async () => { + it("Should revert if caller not have role", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUtilityDeployer, + ctUtilityClient1, + ctAccessControlClient1, + amBounty, + client1, + } = result; + + const roleHex = await ctAccessControlClient1.getRole("TREASURER_ROLE"); + const amount = ethers.utils.parseEther("2"); + const amount_ = ethers.utils.parseEther("1"); + await fundContractWithNativeGas(amBounty, amount); + + // await expect( + // ctUtilityClient1.withdrawNativeBalance(amount) + // ).to.be.revertedWith( + // `AccessControl: account ${client1.address} is missing role ${roleHex}` + // ); // note: for some reason this revert string does not match eventhough text is exact same + + await expect( + ctUtilityClient1.withdrawNativeBalance(amount.sub(amount_)) + ).to.be.reverted; + }); + it("Should revert if insufficient funds", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUtilityDeployer, + ctUtilityClient1, + ctAccessControlClient1, + amBounty, + client1, + } = result; + + const amount = ethers.utils.parseEther("2"); + const amount_ = ethers.utils.parseEther("1"); + await fundContractWithNativeGas(amBounty, amount); + + await expect( + ctUtilityDeployer.withdrawNativeBalance(amount.add(amount_)) + ).to.be.revertedWithCustomError( + ctUtilityDeployer, + "FailedWithdrawNativeToken" + ); + }); + it("Should withdraw native gas", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUtilityDeployer, + ctUtilityClient1, + ctAccessControlClient1, + amBounty, + client1, + } = result; + + const amount = ethers.utils.parseEther("2"); + const amount_ = ethers.utils.parseEther("1"); + await fundContractWithNativeGas(amBounty, amount); + + var tx = await ctUtilityDeployer.withdrawNativeBalance( + amount.sub(amount_) + ); + var rcpt = await tx.wait(); + + expect(await ctUtilityDeployer.getNativeBalance()).to.be.equal(amount_); + }); + }); + }); + + describe("AccessControl", async () => { + describe("getRoleAdmin", async () => { + it("Should be admin role equal to default admin role", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctAccessControlClient1, amBounty } = result; + + const roleHexAdmin = await ctAccessControlClient1.getDefaultAdminRole(); + const roleHexMaintainer = await ctAccessControlClient1.getRole( + "MAINTAINER_ROLE" + ); + const roleHexTreasurer = await ctAccessControlClient1.getRole( + "TREASURER_ROLE" + ); + const roleHexStrategist = await ctAccessControlClient1.getRole( + "STRATEGIST_ROLE" + ); + const roleHexDeveloper = await ctAccessControlClient1.getRole( + "DEVELOPER_ROLE" + ); + + expect( + await ctAccessControlClient1.getRoleAdmin(roleHexMaintainer) + ).to.be.equal(roleHexAdmin); + expect( + await ctAccessControlClient1.getRoleAdmin(roleHexTreasurer) + ).to.be.equal(roleHexAdmin); + expect( + await ctAccessControlClient1.getRoleAdmin(roleHexStrategist) + ).to.be.equal(roleHexAdmin); + expect( + await ctAccessControlClient1.getRoleAdmin(roleHexDeveloper) + ).to.be.equal(roleHexAdmin); + }); + }); + describe("grantRole", async () => { + it("Should revert if caller not admin of role being granted", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctAccessControlClient1, client1, worker1 } = result; + + const roleHexMaintainer = await ctAccessControlClient1.getRole( + "MAINTAINER_ROLE" + ); + await expect( + ctAccessControlClient1.grantRole(roleHexMaintainer, client1.address) + ).to.be.reverted; + await expect( + ctAccessControlClient1.grantRole(roleHexMaintainer, worker1.address) + ).to.be.reverted; + }); + it("Should grant user role", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctAccessControlDeployer, client1 } = result; + + const roleHexMaintainer = await ctAccessControlDeployer.getRole( + "MAINTAINER_ROLE" + ); + + expect( + await ctAccessControlDeployer.hasRole( + roleHexMaintainer, + client1.address + ) + ).to.be.equal(false); + + var tx = await ctAccessControlDeployer.grantRole( + roleHexMaintainer, + client1.address + ); + var rcpt = await tx.wait(); + + expect( + await ctAccessControlDeployer.hasRole( + roleHexMaintainer, + client1.address + ) + ).to.be.equal(true); + }); + }); + describe("revokeRole", async () => { + it("Should revert if caller not admin of role being revoked", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctAccessControlDeployer, + ctAccessControlClient1, + worker1, + } = result; + + const roleHexMaintainer = await ctAccessControlDeployer.getRole( + "MAINTAINER_ROLE" + ); + + var tx = await ctAccessControlDeployer.grantRole( + roleHexMaintainer, + worker1.address + ); + var rcpt = await tx.wait(); + + await expect( + ctAccessControlClient1.revokeRole(roleHexMaintainer, worker1.address) + ).to.be.reverted; + }); + it("Should revoke user role", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctAccessControlDeployer, client1 } = result; + + const roleHexMaintainer = await ctAccessControlDeployer.getRole( + "MAINTAINER_ROLE" + ); + + var tx = await ctAccessControlDeployer.grantRole( + roleHexMaintainer, + client1.address + ); + var rcpt = await tx.wait(); + + expect( + await ctAccessControlDeployer.hasRole( + roleHexMaintainer, + client1.address + ) + ).to.be.equal(true); + + var tx = await ctAccessControlDeployer.revokeRole( + roleHexMaintainer, + client1.address + ); + var rcpt = await tx.wait(); + + expect( + await ctAccessControlDeployer.hasRole( + roleHexMaintainer, + client1.address + ) + ).to.be.equal(false); + }); + }); + describe("renounceRole", async () => { + it("Should renonce role of caller regardless of if caller have role or not", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctAccessControlDeployer, + ctAccessControlClient1, + client1, + } = result; + + const roleHexMaintainer = await ctAccessControlDeployer.getRole( + "MAINTAINER_ROLE" + ); + + expect( + await ctAccessControlDeployer.hasRole( + roleHexMaintainer, + client1.address + ) + ).to.be.equal(false); + + var tx = await ctAccessControlClient1.renounceRole(roleHexMaintainer); + var rcpt = await tx.wait(); + + expect( + await ctAccessControlDeployer.hasRole( + roleHexMaintainer, + client1.address + ) + ).to.be.equal(false); + + var tx = await ctAccessControlDeployer.grantRole( + roleHexMaintainer, + client1.address + ); + var rcpt = await tx.wait(); + + expect( + await ctAccessControlDeployer.hasRole( + roleHexMaintainer, + client1.address + ) + ).to.be.equal(true); + + var tx = await ctAccessControlClient1.renounceRole(roleHexMaintainer); + var rcpt = await tx.wait(); + + expect( + await ctAccessControlDeployer.hasRole( + roleHexMaintainer, + client1.address + ) + ).to.be.equal(false); + }); + }); + }); + + describe("Automate", async () => { + describe("setGelatoContracts", async () => { + it("Should revert if caller not role", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctAutomateClient1, client1 } = result; + + await expect(ctAutomateClient1.setGelatoContracts(amGelatoFee)).to.be + .reverted; + }); + it("Should set gelato contract"); // need proper autobot contract to test + }); + describe("setMinContractGelatoBalance", async () => { + it("Should revert if caller not role", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctAutomateClient1, client1 } = result; + + const amount = MIN_CONTRACT_GELATO_BALANCE.sub( + ethers.utils.parseEther("0.0001") + ); + await expect(ctAutomateClient1.setMinContractGelatoBalance(amount)).to + .be.reverted; + }); + it("Should set min contract gelato balance", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctAutomateDeployer, client1 } = result; + + expect( + await ctAutomateDeployer.getMinContractGelatoBalance() + ).to.be.equal(MIN_CONTRACT_GELATO_BALANCE); + + const amount = ethers.utils.parseEther("3"); + var tx = await ctAutomateDeployer.setMinContractGelatoBalance(amount); + var rcpt = await tx.wait(); + expect( + await ctAutomateDeployer.getMinContractGelatoBalance() + ).to.be.equal(amount); + }); + }); + describe("depositGelatoFunds", async () => { + it("Should deposit contract gelato balance", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctGelatoTreasury, amBounty, client1 } = result; + + expect( + await ctGelatoTreasury.userTokenBalance(amBounty, amGelatoFee) + ).to.be.equal(0); + + const amount = ethers.utils.parseEther("2"); + await fundBountyContractGelatoTresury(chainId, amBounty, amount); + + expect( + await ctGelatoTreasury.userTokenBalance(amBounty, amGelatoFee) + ).to.be.equal(amount); + }); + }); + describe("withdrawGelatoFunds", async () => { + it("Should revert if caller not role", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctAutomateClient1, amBounty, client1 } = result; + + const amount = ethers.utils.parseEther("2"); + await fundBountyContractGelatoTresury(chainId, amBounty, amount); + + await expect(ctAutomateClient1.withdrawGelatoFunds(amount)).to.be + .reverted; + }); + it("Should withdraw gelato funds", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctGelatoTreasury, + ctAutomateDeployer, + amBounty, + client1, + } = result; + + const amount = ethers.utils.parseEther("2"); + await fundBountyContractGelatoTresury(chainId, amBounty, amount); + + expect( + await ctGelatoTreasury.userTokenBalance(amBounty, amGelatoFee) + ).to.be.equal(amount); + + const amount_ = ethers.utils.parseEther("1"); + + var tx = await ctAutomateDeployer.withdrawGelatoFunds(amount_); + var rcpt = await tx.wait(); + + expect( + await ctGelatoTreasury.userTokenBalance(amBounty, amGelatoFee) + ).to.be.equal(amount.sub(amount_)); + }); + }); + }); + + describe("FlowSetup", async () => { + describe("setMinimumDepositAmount", async () => { + it("Should revert if caller not role", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctFlowSetupClient1, amBounty, client1 } = result; + + const amount = ethers.utils.parseEther("3"); + await expect(ctFlowSetupClient1.setMinimumDepositAmount(amount)).to.be + .reverted; + }); + it("Should set min deposit amount", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctFlowSetupDeployer, amBounty, client1 } = result; + + expect(await ctFlowSetupDeployer.getMinimumDepositAmount()).to.be.equal( + MINIMUM_DEPOSIT_AMOUNT + ); + + const amount = ethers.utils.parseEther("3"); + var tx = await ctFlowSetupDeployer.setMinimumDepositAmount(amount); + var rcpt = await tx.wait(); + + expect(await ctFlowSetupDeployer.getMinimumDepositAmount()).to.be.equal( + amount + ); + }); + }); + describe("setMinimumFlowAmount", async () => { + it("Should revert if caller not role", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctFlowSetupClient1, amBounty, client1 } = result; + + const amount = ethers.utils.parseEther("3"); + await expect(ctFlowSetupClient1.setMinimumFlowAmount(amount)).to.be + .reverted; + }); + it("Should set min flow amount", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctFlowSetupDeployer, amBounty, client1 } = result; + + expect(await ctFlowSetupDeployer.getMinimumFlowAmount()).to.be.equal( + MINIMUM_FLOW_AMOUNT + ); + + const amount = ethers.utils.parseEther("3"); + var tx = await ctFlowSetupDeployer.setMinimumFlowAmount(amount); + var rcpt = await tx.wait(); + + expect(await ctFlowSetupDeployer.getMinimumFlowAmount()).to.be.equal( + amount + ); + }); + }); + describe("setMaxFlowDurationPerUnitFlowAmount", async () => { + it("Should revert if caller not role", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctFlowSetupClient1, amBounty, client1 } = result; + + const amount = 30000000; + await expect( + ctFlowSetupClient1.setMaxFlowDurationPerUnitFlowAmount(amount) + ).to.be.reverted; + }); + it("Should set max flow duration per min flow amount", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctFlowSetupDeployer, amBounty, client1 } = result; + + expect( + await ctFlowSetupDeployer.getMaxFlowDurationPerUnitFlowAmount() + ).to.be.equal(MAX_FLOW_DURATION_PER_UNIT_FLOW_AMOUNT); + + const amount = 30000000; + var tx = await ctFlowSetupDeployer.setMaxFlowDurationPerUnitFlowAmount( + amount + ); + var rcpt = await tx.wait(); + + expect( + await ctFlowSetupDeployer.getMaxFlowDurationPerUnitFlowAmount() + ).to.be.equal(amount); + }); + }); + describe("setSTBufferAmount", async () => { + it("Should revert if caller not role", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctFlowSetupClient1, amBounty, client1 } = result; + + const amount = 5555; + await expect(ctFlowSetupClient1.setSTBufferAmount(amount)).to.be + .reverted; + }); + it("Should set supertoken buffer amount", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctFlowSetupDeployer, amBounty, client1 } = result; + + expect( + await ctFlowSetupDeployer.getSTBufferDurationInSecond() + ).to.be.equal(ST_BUFFER_DURATION_IN_SECONDS); + + const amount = 5555; + var tx = await ctFlowSetupDeployer.setSTBufferAmount(amount); + var rcpt = await tx.wait(); + + expect( + await ctFlowSetupDeployer.getSTBufferDurationInSecond() + ).to.be.equal(amount); + }); + }); + describe("addSuperToken", async () => { + it("Should revert if not role", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctFlowSetupClient1, amBounty, client1 } = result; + + const supertoken = networkConfig[chainId]["addrDAIx"]; + await expect(ctFlowSetupClient1.addSuperToken(supertoken)).to.be + .reverted; + }); + it("Should add supertoken", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctFlowSetupDeployer, amBounty, client1 } = result; + + const supertoken = networkConfig[chainId]["addrDAIx"]; + + expect( + await ctFlowSetupDeployer.isSuperTokensSupported(supertoken) + ).to.be.equal(false); + + var tx = await ctFlowSetupDeployer.addSuperToken(supertoken); + var rcpt = await tx.wait(); + + expect( + await ctFlowSetupDeployer.isSuperTokensSupported(supertoken) + ).to.be.equal(true); + }); + }); + describe("removeSuperToken", async () => { + it("Should revert if not role", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctFlowSetupClient1, amBounty, client1 } = result; + + const supertoken = networkConfig[chainId]["addrDAIx"]; + await expect(ctFlowSetupClient1.removeSuperToken(supertoken)).to.be + .reverted; + }); + it("Should remove supertoken", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctFlowSetupDeployer, amBounty, client1 } = result; + + const supertoken = networkConfig[chainId]["addrDAIx"]; + + var tx = await ctFlowSetupDeployer.addSuperToken(supertoken); + var rcpt = await tx.wait(); + + expect( + await ctFlowSetupDeployer.isSuperTokensSupported(supertoken) + ).to.be.equal(true); + + var tx = await ctFlowSetupDeployer.removeSuperToken(supertoken); + var rcpt = await tx.wait(); + + expect( + await ctFlowSetupDeployer.isSuperTokensSupported(supertoken) + ).to.be.equal(false); + }); + }); + describe("withdrawSuperToken", async () => { + it("Should revert if not role", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctFlowSetupClient1, amBounty, client1 } = result; + + const supertoken = networkConfig[chainId]["addrDAIx"]; + const amount = ethers.utils.parseEther("5"); + await expect(ctFlowSetupClient1.withdrawSuperToken(supertoken, amount)) + .to.be.reverted; + }); + it("Should revert if insufficient supertoken", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctFlowSetupDeployer, amBounty, client1 } = result; + + const supertoken = networkConfig[chainId]["addrUSDCx"]; + const amount = ethers.utils.parseEther("5"); + + await expect(ctFlowSetupDeployer.withdrawSuperToken(supertoken, amount)) + .to.be.reverted; + }); + it("Should withdraw supertoken", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctFlowSetupDeployer, + ctUSDCx, + amBounty, + deployer, + client1, + } = result; + + const supertoken = networkConfig[chainId]["addrUSDCx"]; + const amount = ethers.utils.parseEther("5"); + + const bal1Deployer1 = await ctUSDCx.balanceOf(deployer.address); + + await approveDepositClientSTFundsToContract( + client1, + amBounty, + amount, + chainId + ); + await prefundSTToBountyContract(amBounty, amount, chainId); + + expect(await ctUSDCx.balanceOf(amBounty)).to.be.equal(amount); + + const bal1Deployer2 = await ctUSDCx.balanceOf(deployer.address); + expect(bal1Deployer2).to.be.equal(bal1Deployer1.sub(amount)); + + const amount_ = ethers.utils.parseEther("3"); + var tx = await ctFlowSetupDeployer.withdrawSuperToken( + supertoken, + amount_ + ); + var rcpt = await tx.wait(); + + expect(await ctUSDCx.balanceOf(amBounty)).to.be.equal( + amount.sub(amount_) + ); + + const bal1Deployer3 = await ctUSDCx.balanceOf(deployer.address); + expect(bal1Deployer3).to.be.equal(bal1Deployer2.add(amount_)); + }); + }); + }); + + describe("Flow", async () => { + describe("increaseFlow", async () => { + it("Should revert if caller not role", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctFlowClient1, amBounty, client1, worker1 } = result; + + await expect( + ctFlowClient1.increaseFlow( + networkConfig[chainId]["addrUSDCx"], + worker1.address, + ethers.utils.parseEther("0.0001"), + 0 + ) + ).to.be.revertedWithCustomError(ctFlowClient1, "CallerNotAutobot"); + }); + // it("Should create flow", async () => {}); + // it("Should update flow", async () => {}); + }); + describe("decreaseFlow", async () => { + it("Should revert if caller not role", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctFlowClient1, amBounty, client1, worker1 } = result; + + await expect( + ctFlowClient1.decreaseFlow( + networkConfig[chainId]["addrUSDCx"], + worker1.address, + ethers.utils.parseEther("0.0001"), + 0 + ) + ).to.be.revertedWithCustomError(ctFlowClient1, "CallerNotAutobot"); + }); + // it("Should delete flow", async () => {}); + // it("Should update flow", async () => {}); + }); + describe("openBounty", async () => { + it("Should revert if insufficient gelato funds", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctFlowClient1, amBounty, client1, worker1 } = result; + + const superToken = networkConfig[chainId]["addrUSDCx"]; + const amount = ethers.utils.parseEther("3"); + const amountMinimum = ethers.utils.parseEther("0.5"); + const durationHold = 60; + const durationFlow = 60; + + await expect( + ctFlowClient1.openBounty( + superToken, + amount, + amountMinimum, + durationHold, + durationFlow + ) + ).to.be.revertedWithCustomError( + ctFlowClient1, + "InsufficientContractGelatoBalance" + ); + }); + it("Should revert if invalid supertoken", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctFlowClient1, amBounty, client1, worker1 } = result; + + await fundBountyContractGelatoTresury( + chainId, + amBounty, + MIN_CONTRACT_GELATO_BALANCE.add(ethers.utils.parseEther("0.0001")) + ); + + const superToken = networkConfig[chainId]["addrDAIx"]; + const amount = ethers.utils.parseEther("3"); + const amountMinimum = ethers.utils.parseEther("1"); + const durationHold = 60; + const durationFlow = 60; + await expect( + ctFlowClient1.openBounty( + superToken, + amount, + amountMinimum, + durationHold, + durationFlow + ) + ).to.be.revertedWithCustomError(ctFlowClient1, "InvalidSuperToken"); + }); + it("Should revert if insufficient minnimum amount", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctFlowClient1, amBounty, client1, worker1 } = result; + + await fundBountyContractGelatoTresury( + chainId, + amBounty, + ethers.utils.parseEther("0.501") + ); + + const superToken = networkConfig[chainId]["addrUSDCx"]; + const amount = ethers.utils.parseEther("3"); + const amountMinimum = ethers.utils.parseEther("0.9"); + const durationHold = 60; + const durationFlow = 60; + await expect( + ctFlowClient1.openBounty( + superToken, + amount, + amountMinimum, + durationHold, + durationFlow + ) + ).to.be.revertedWithCustomError( + ctFlowClient1, + "InsufficientMinimumAmount" + ); + }); + it("Should revert if minimum amount more than main/max amount", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctFlowClient1, amBounty, client1, worker1 } = result; + + await fundBountyContractGelatoTresury( + chainId, + amBounty, + ethers.utils.parseEther("0.501") + ); + + const superToken = networkConfig[chainId]["addrUSDCx"]; + const amount = ethers.utils.parseEther("3"); + const amountMinimum = ethers.utils.parseEther("5"); + const durationHold = 60; + const durationFlow = 60; + await expect( + ctFlowClient1.openBounty( + superToken, + amount, + amountMinimum, + durationHold, + durationFlow + ) + ).to.be.revertedWithCustomError(ctFlowClient1, "InvalidMinimumAmount"); + }); + it("Should revert if insufficient flow amount", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctFlowClient1, amBounty, client1, worker1 } = result; + + await fundBountyContractGelatoTresury( + chainId, + amBounty, + ethers.utils.parseEther("0.501") + ); + + const superToken = networkConfig[chainId]["addrUSDCx"]; + const amount = ethers.utils.parseEther("1.5"); + const amountMinimum = ethers.utils.parseEther("1"); + const durationHold = 60; + const durationFlow = 60; + await expect( + ctFlowClient1.openBounty( + superToken, + amount, + amountMinimum, + durationHold, + durationFlow + ) + ).to.be.revertedWithCustomError( + ctFlowClient1, + "InsufficientFlowAmount" + ); + }); + it("Should revert if hold duration is zero", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctFlowClient1, amBounty, client1, worker1 } = result; + + await fundBountyContractGelatoTresury( + chainId, + amBounty, + ethers.utils.parseEther("0.501") + ); + + const superToken = networkConfig[chainId]["addrUSDCx"]; + const amount = ethers.utils.parseEther("3"); + const amountMinimum = ethers.utils.parseEther("1"); + const durationHold = 0; + const durationFlow = 60; + await expect( + ctFlowClient1.openBounty( + superToken, + amount, + amountMinimum, + durationHold, + durationFlow + ) + ).to.be.revertedWithCustomError(ctFlowClient1, "ZeroDuration"); + }); + it("Should revert if flow duration is zero", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctFlowClient1, amBounty, client1, worker1 } = result; + + await fundBountyContractGelatoTresury( + chainId, + amBounty, + ethers.utils.parseEther("0.501") + ); + + const superToken = networkConfig[chainId]["addrUSDCx"]; + const amount = ethers.utils.parseEther("3"); + const amountMinimum = ethers.utils.parseEther("1"); + const durationHold = 60; + const durationFlow = 0; + await expect( + ctFlowClient1.openBounty( + superToken, + amount, + amountMinimum, + durationHold, + durationFlow + ) + ).to.be.revertedWithCustomError(ctFlowClient1, "ZeroDuration"); + }); + it("Should revert if flow duration too large", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctFlowClient1, amBounty, client1, worker1 } = result; + + await fundBountyContractGelatoTresury( + chainId, + amBounty, + ethers.utils.parseEther("0.501") + ); + + const superToken = networkConfig[chainId]["addrUSDCx"]; + const amount = ethers.utils.parseEther("3"); + const amountMinimum = ethers.utils.parseEther("1"); + const durationHold = 60; + const durationFlow = 999999999; + await expect( + ctFlowClient1.openBounty( + superToken, + amount, + amountMinimum, + durationHold, + durationFlow + ) + ).to.be.revertedWithCustomError(ctFlowClient1, "ExcessiveFlowDuration"); + }); + it("Should revert if insufficient contract supertoken balance", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctFlowClient1, amBounty, client1, worker1 } = result; + + await fundBountyContractGelatoTresury( + chainId, + amBounty, + ethers.utils.parseEther("0.501") + ); + + const superToken = networkConfig[chainId]["addrUSDCx"]; + const amount = ethers.utils.parseEther("3"); + const amountMinimum = ethers.utils.parseEther("1"); + const durationHold = 60; + const durationFlow = 60; + await expect( + ctFlowClient1.openBounty( + superToken, + amount, + amountMinimum, + durationHold, + durationFlow + ) + ).to.be.revertedWithCustomError( + ctFlowClient1, + "InsufficientContractSTBalance" + ); + }); + it("Should initialize bounty, deposit supertoken, schedule tasks and iterate nonce", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctFlowClient1, + ctUSDCx, + ctGelatoAutoBot, + amBounty, + client1, + worker1, + } = result; + + await fundBountyContractGelatoTresury( + chainId, + amBounty, + ethers.utils.parseEther("0.501") + ); + + const amountST = ethers.utils.parseEther("500"); + await approveDepositClientSTFundsToContract( + client1, + amBounty, + amountST, + chainId + ); + await prefundSTToBountyContract(amBounty, amountST, chainId); + + const superToken_ = networkConfig[chainId]["addrUSDCx"]; + const amount = ethers.utils.parseEther("3"); + const amountMinimum = ethers.utils.parseEther("1"); + const durationHold = 60; + const durationFlow = 60; + + const balContract1 = await ctUSDCx.balanceOf(amBounty); + const balClient11 = await ctUSDCx.balanceOf(client1.address); + + var { + taskIdFlowIncrease, + taskIdFlowDecrease, + timestampIncrease, + timestampDecrease, + depositAmount, + depositAmountMinimum, + flowRate, + superToken, + } = await ctFlowClient1.getBounty(client1.address, 0); + expect(taskIdFlowIncrease).to.be.equal(ethers.constants.HashZero); + expect(taskIdFlowDecrease).to.be.equal(ethers.constants.HashZero); + expect(timestampIncrease).to.be.equal(0); + expect(timestampDecrease).to.be.equal(0); + expect(depositAmount).to.be.equal(0); + expect(depositAmountMinimum).to.be.equal(0); + expect(flowRate).to.be.equal(0); + expect(superToken).to.be.equal(ethers.constants.AddressZero); + + expect(await ctFlowClient1.getNonce(client1.address)).to.be.equal(0); + + var tx = await ctFlowClient1.openBounty( + superToken_, + amount, + amountMinimum, + durationHold, + durationFlow + ); + var rcpt = await tx.wait(); + const flowRateOpenBounty = amount.sub(amountMinimum).div(durationFlow); + // const tsOpenBounty = await time.latest(); + + const balContract2 = await ctUSDCx.balanceOf(amBounty); + const balClient12 = await ctUSDCx.balanceOf(client1.address); + expect(balContract2).to.be.equal(balContract1.add(amount)); + expect(balClient12).to.be.equal(balClient11.sub(amount)); + + const taskIds = await ctGelatoAutoBot.getTaskIdsByUser(amBounty); + + var { + taskIdFlowIncrease, + taskIdFlowDecrease, + timestampIncrease, + timestampDecrease, + depositAmount, + depositAmountMinimum, + flowRate, + superToken, + } = await ctFlowClient1.getBounty(client1.address, 0); + expect(taskIds.includes(taskIdFlowIncrease)).to.be.equal(true); + expect(taskIds.includes(taskIdFlowDecrease)).to.be.equal(true); + expect(timestampIncrease).to.be.equal(0); + expect(timestampDecrease).to.be.equal(0); + expect(depositAmount).to.be.equal(amount); + expect(depositAmountMinimum).to.be.equal(amountMinimum); + expect(flowRate).to.be.equal(flowRateOpenBounty); + expect(superToken).to.be.equal(superToken_); + + expect(await ctFlowClient1.getNonce(client1.address)).to.be.equal(1); + + var { + taskIdFlowIncrease, + taskIdFlowDecrease, + timestampIncrease, + timestampDecrease, + depositAmount, + depositAmountMinimum, + flowRate, + superToken, + } = await ctFlowClient1.getBounty(client1.address, 1); + expect(taskIdFlowIncrease).to.be.equal(ethers.constants.HashZero); + expect(taskIdFlowDecrease).to.be.equal(ethers.constants.HashZero); + expect(timestampIncrease).to.be.equal(0); + expect(timestampDecrease).to.be.equal(0); + expect(depositAmount).to.be.equal(0); + expect(depositAmountMinimum).to.be.equal(0); + expect(flowRate).to.be.equal(0); + expect(superToken).to.be.equal(ethers.constants.AddressZero); + }); + it("Should execute increaseFlow task", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctFlowClient1, + ctCFAV1, + ctGelatoAutoBot, + amBounty, + gelatoExecutor, + client1, + worker1, + } = result; + + await fundBountyContractGelatoTresury( + chainId, + amBounty, + ethers.utils.parseEther("0.501") + ); + + const amountST = ethers.utils.parseEther("500"); + await approveDepositClientSTFundsToContract( + client1, + amBounty, + amountST, + chainId + ); + await prefundSTToBountyContract(amBounty, amountST, chainId); + + const superToken_ = networkConfig[chainId]["addrUSDCx"]; + const amount = ethers.utils.parseEther("3"); + const amountMinimum = ethers.utils.parseEther("1"); + const durationHold = 60; + const durationFlow = 60; + + var tx = await ctFlowClient1.openBounty( + superToken_, + amount, + amountMinimum, + durationHold, + durationFlow + ); + var rcpt = await tx.wait(); + var rc = await ethers.provider.getTransactionReceipt( + rcpt.transactionHash + ); + var block = await ethers.provider.getBlock(rc.blockNumber); + var startTime = block.timestamp; + const flowRateOpenBounty = amount.sub(amountMinimum).div(durationFlow); + + var execData = ctFlowClient1.interface.encodeFunctionData( + "increaseFlow", + [superToken_, client1.address, flowRateOpenBounty, 0] + ); + var timeArgs = encodeTimeArgs(startTime + durationHold, durationHold); + var moduleData = { + modules: [1, 3], + args: [timeArgs], + }; + + await time.increase(59); // ff time + + var { + timestamp, + flowRate: flowRateOutput, + deposit, + owedDeposit, + } = await ctCFAV1.getFlow(superToken_, amBounty, client1.address); + expect(timestamp).to.be.equal(0); + expect(flowRateOutput).to.be.equal(0); + expect(deposit).to.be.equal(0); + expect(owedDeposit).to.be.equal(0); + + await ctGelatoAutoBot + .connect(gelatoExecutor) + .exec( + amBounty, + amBounty, + execData, + moduleData, + GELATO_FEE, + amGelatoFee, + true, + true + ); + const tsStartFlow = await time.latest(); + + var { + timestamp, + flowRate: flowRateOutput, + deposit, + owedDeposit, + } = await ctCFAV1.getFlow(superToken_, amBounty, client1.address); + expect(timestamp).to.be.equal(tsStartFlow); + expect(flowRateOutput).to.be.equal(flowRateOpenBounty); + expect(deposit).to.be.gt(flowRateOpenBounty.mul(60 * 60)); + expect(owedDeposit).to.be.equal(0); + }); + it("Should execute decreaseFlow task", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctFlowClient1, + ctCFAV1, + ctGelatoAutoBot, + amBounty, + gelatoExecutor, + client1, + worker1, + } = result; + + await fundBountyContractGelatoTresury( + chainId, + amBounty, + ethers.utils.parseEther("0.501") + ); + + const amountST = ethers.utils.parseEther("500"); + await approveDepositClientSTFundsToContract( + client1, + amBounty, + amountST, + chainId + ); + await prefundSTToBountyContract(amBounty, amountST, chainId); + + const superToken_ = networkConfig[chainId]["addrUSDCx"]; + const amount = ethers.utils.parseEther("3"); + const amountMinimum = ethers.utils.parseEther("1"); + const durationHold = 60; + const durationFlow = 60; + + var tx = await ctFlowClient1.openBounty( + superToken_, + amount, + amountMinimum, + durationHold, + durationFlow + ); + var rcpt = await tx.wait(); + var rc = await ethers.provider.getTransactionReceipt( + rcpt.transactionHash + ); + var block = await ethers.provider.getBlock(rc.blockNumber); + var startTime = block.timestamp; + const flowRateOpenBounty = amount.sub(amountMinimum).div(durationFlow); + // const tsOpenBounty = await time.latest(); + + var execData = ctFlowClient1.interface.encodeFunctionData( + "increaseFlow", + [superToken_, client1.address, flowRateOpenBounty, 0] + ); + var timeArgs = encodeTimeArgs(startTime + durationHold, durationHold); + var moduleData = { + modules: [1, 3], + args: [timeArgs], + }; + + await time.increase(59); // ff time + + await ctGelatoAutoBot + .connect(gelatoExecutor) + .exec( + amBounty, + amBounty, + execData, + moduleData, + GELATO_FEE, + amGelatoFee, + true, + true + ); + const tsStartFlow = await time.latest(); + + var execData = ctFlowClient1.interface.encodeFunctionData( + "decreaseFlow", + [superToken_, client1.address, flowRateOpenBounty, 0] + ); + var timeArgs = encodeTimeArgs( + startTime + durationHold + durationFlow, + durationFlow + ); + var moduleData = { + modules: [1, 3], + args: [timeArgs], + }; + + await time.increase(57); // ff time + + var { + timestamp, + flowRate: flowRateOutput, + deposit, + owedDeposit, + } = await ctCFAV1.getFlow(superToken_, amBounty, client1.address); + expect(timestamp).to.be.equal(tsStartFlow); + expect(flowRateOutput).to.be.equal(flowRateOpenBounty); + expect(deposit).to.be.gt(flowRateOpenBounty.mul(60 * 60)); + expect(owedDeposit).to.be.equal(0); + + await ctGelatoAutoBot + .connect(gelatoExecutor) + .exec( + amBounty, + amBounty, + execData, + moduleData, + GELATO_FEE, + amGelatoFee, + true, + true + ); + + var { + timestamp, + flowRate: flowRateOutput, + deposit, + owedDeposit, + } = await ctCFAV1.getFlow(superToken_, amBounty, client1.address); + expect(timestamp).to.be.equal(0); + expect(flowRateOutput).to.be.equal(0); + expect(deposit).to.be.equal(0); + expect(owedDeposit).to.be.equal(0); + }); + it("Should fail to execute task if contract supertoken funds runs out", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctFlowClient1, + ctCFAV1, + ctUSDCx, + ctGelatoAutoBot, + ctUtilityDeployer, + amBounty, + gelatoExecutor, + client1, + worker1, + } = result; + + await fundBountyContractGelatoTresury( + chainId, + amBounty, + ethers.utils.parseEther("0.501") + ); + + const amountST = ethers.utils.parseEther("500"); + await approveDepositClientSTFundsToContract( + client1, + amBounty, + amountST, + chainId + ); + await prefundSTToBountyContract(amBounty, amountST, chainId); + + const superToken_ = networkConfig[chainId]["addrUSDCx"]; + const amount = ethers.utils.parseEther("3"); + const amountMinimum = ethers.utils.parseEther("1"); + const durationHold = 60; + const durationFlow = 60; + + var tx = await ctFlowClient1.openBounty( + superToken_, + amount, + amountMinimum, + durationHold, + durationFlow + ); + var rcpt = await tx.wait(); + var rc = await ethers.provider.getTransactionReceipt( + rcpt.transactionHash + ); + var block = await ethers.provider.getBlock(rc.blockNumber); + var startTime = block.timestamp; + const flowRateOpenBounty = amount.sub(amountMinimum).div(durationFlow); + + var execData = ctFlowClient1.interface.encodeFunctionData( + "increaseFlow", + [superToken_, client1.address, flowRateOpenBounty, 0] + ); + var timeArgs = encodeTimeArgs(startTime + durationHold, durationHold); + var moduleData = { + modules: [1, 3], + args: [timeArgs], + }; + + await time.increase(50); // ff time + + const amountST_ = await ctUSDCx.balanceOf(amBounty); + + await withdrawSTFromBountyContract(amBounty, amountST_, chainId); + + expect(await ctUSDCx.balanceOf(amBounty)).to.be.equal(0); + + await time.increase(8); // ff time + + await expect( + ctGelatoAutoBot + .connect(gelatoExecutor) + .exec( + amBounty, + amBounty, + execData, + moduleData, + GELATO_FEE, + amGelatoFee, + true, + true + ) + ).to.be.reverted; + }); + it("Should fail to execute task if contract gelato funds runs out"); + }); + describe("cancelBounty", async () => { + it("Should return full amount to bounty caller if cancel before flow starts", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctFlowClient1, + ctCFAV1, + ctUSDCx, + ctGelatoAutoBot, + amBounty, + gelatoExecutor, + client1, + worker1, + } = result; + + await fundBountyContractGelatoTresury( + chainId, + amBounty, + ethers.utils.parseEther("0.501") + ); + + const amountST = ethers.utils.parseEther("500"); + await approveDepositClientSTFundsToContract( + client1, + amBounty, + amountST, + chainId + ); + await prefundSTToBountyContract(amBounty, amountST, chainId); + + const superToken_ = networkConfig[chainId]["addrUSDCx"]; + const amount = ethers.utils.parseEther("3"); + const amountMinimum = ethers.utils.parseEther("1"); + const durationHold = 60; + const durationFlow = 60; + + var { + taskIdFlowIncrease, + taskIdFlowDecrease, + timestampIncrease, + timestampDecrease, + depositAmount, + depositAmountMinimum, + flowRate, + superToken, + } = await ctFlowClient1.getBounty(client1.address, 0); + expect(taskIdFlowIncrease).to.be.equal(ethers.constants.HashZero); + expect(taskIdFlowDecrease).to.be.equal(ethers.constants.HashZero); + expect(timestampIncrease).to.be.equal(0); + expect(timestampDecrease).to.be.equal(0); + expect(depositAmount).to.be.equal(0); + expect(depositAmountMinimum).to.be.equal(0); + expect(flowRate).to.be.equal(0); + expect(superToken).to.be.equal(ethers.constants.AddressZero); + + var { + timestamp, + flowRate: flowRateOutput, + deposit, + owedDeposit, + } = await ctCFAV1.getFlow(superToken_, amBounty, client1.address); + expect(timestamp).to.be.equal(0); + expect(flowRateOutput).to.be.equal(0); + expect(deposit).to.be.equal(0); + expect(owedDeposit).to.be.equal(0); + + const balBounty1 = await ctUSDCx.balanceOf(amBounty); + const balClient11 = await ctUSDCx.balanceOf(client1.address); + + var tx = await ctFlowClient1.openBounty( + superToken_, + amount, + amountMinimum, + durationHold, + durationFlow + ); + var rcpt = await tx.wait(); + var rc = await ethers.provider.getTransactionReceipt( + rcpt.transactionHash + ); + var block = await ethers.provider.getBlock(rc.blockNumber); + var startTime = block.timestamp; + const flowRateOpenBounty = amount.sub(amountMinimum).div(durationFlow); + + var execData = ctFlowClient1.interface.encodeFunctionData( + "increaseFlow", + [superToken_, client1.address, flowRateOpenBounty, 0] + ); + var timeArgs = encodeTimeArgs(startTime + durationHold, durationHold); + var moduleData = { + modules: [1, 3], + args: [timeArgs], + }; + + await time.increase(5); // ff time + + var taskIds = await ctGelatoAutoBot.getTaskIdsByUser(amBounty); + expect(taskIds.length).to.be.equal(2); + + var { + taskIdFlowIncrease, + taskIdFlowDecrease, + timestampIncrease, + timestampDecrease, + depositAmount, + depositAmountMinimum, + flowRate, + superToken, + } = await ctFlowClient1.getBounty(client1.address, 0); + expect(taskIds.includes(taskIdFlowIncrease)).to.be.equal(true); + expect(taskIds.includes(taskIdFlowDecrease)).to.be.equal(true); + expect(timestampIncrease).to.be.equal(0); + expect(timestampDecrease).to.be.equal(0); + expect(depositAmount).to.be.equal(amount); + expect(depositAmountMinimum).to.be.equal(amountMinimum); + expect(flowRate).to.be.equal(flowRateOpenBounty); + expect(superToken).to.be.equal(superToken_); + + var { + timestamp, + flowRate: flowRateOutput, + deposit, + owedDeposit, + } = await ctCFAV1.getFlow(superToken_, amBounty, client1.address); + expect(timestamp).to.be.equal(0); + expect(flowRateOutput).to.be.equal(0); + expect(deposit).to.be.equal(0); + expect(owedDeposit).to.be.equal(0); + + const balBounty2 = await ctUSDCx.balanceOf(amBounty); + const balClient12 = await ctUSDCx.balanceOf(client1.address); + expect(balBounty2).to.be.equal(balBounty1.add(amount)); + expect(balClient12).to.be.equal(balClient11.sub(amount)); + + await expect( + ctGelatoAutoBot + .connect(gelatoExecutor) + .exec( + amBounty, + amBounty, + execData, + moduleData, + GELATO_FEE, + amGelatoFee, + true, + true + ) + ).to.be.revertedWith("Automate.preExecCall: TimeModule: Too early"); + + var tx = await ctFlowClient1.cancelBounty(0); + var rcpt = await tx.wait(); + + var taskIds = await ctGelatoAutoBot.getTaskIdsByUser(amBounty); + expect(taskIds.length).to.be.equal(0); + + var { + taskIdFlowIncrease, + taskIdFlowDecrease, + timestampIncrease, + timestampDecrease, + depositAmount, + depositAmountMinimum, + flowRate, + superToken, + } = await ctFlowClient1.getBounty(client1.address, 0); + expect(taskIdFlowIncrease).to.be.equal(ethers.constants.HashZero); + expect(taskIdFlowDecrease).to.be.equal(ethers.constants.HashZero); + expect(timestampIncrease).to.be.equal(0); + expect(timestampDecrease).to.be.equal(0); + expect(depositAmount).to.be.equal(0); + expect(depositAmountMinimum).to.be.equal(0); + expect(flowRate).to.be.equal(0); + expect(superToken).to.be.equal(ethers.constants.AddressZero); + + var { + timestamp, + flowRate: flowRateOutput, + deposit, + owedDeposit, + } = await ctCFAV1.getFlow(superToken_, amBounty, client1.address); + expect(timestamp).to.be.equal(0); + expect(flowRateOutput).to.be.equal(0); + expect(deposit).to.be.equal(0); + expect(owedDeposit).to.be.equal(0); + + const balBounty3 = await ctUSDCx.balanceOf(amBounty); + const balClient13 = await ctUSDCx.balanceOf(client1.address); + expect(balBounty3).to.be.equal(balBounty1); + expect(balClient13).to.be.equal(balClient11); + }); + it("Should stop flow and return full amount to bounty caller if cancel during flow", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctFlowClient1, + ctCFAV1, + ctUSDCx, + ctGelatoAutoBot, + amBounty, + gelatoExecutor, + client1, + worker1, + } = result; + + await fundBountyContractGelatoTresury( + chainId, + amBounty, + ethers.utils.parseEther("0.501") + ); + + const amountST = ethers.utils.parseEther("500"); + await approveDepositClientSTFundsToContract( + client1, + amBounty, + amountST, + chainId + ); + await prefundSTToBountyContract(amBounty, amountST, chainId); + + const superToken_ = networkConfig[chainId]["addrUSDCx"]; + const amount = ethers.utils.parseEther("3"); + const amountMinimum = ethers.utils.parseEther("1"); + const durationHold = 60; + const durationFlow = 60; + + const balBounty1 = await ctUSDCx.balanceOf(amBounty); + const balClient11 = await ctUSDCx.balanceOf(client1.address); + + var tx = await ctFlowClient1.openBounty( + superToken_, + amount, + amountMinimum, + durationHold, + durationFlow + ); + var rcpt = await tx.wait(); + var rc = await ethers.provider.getTransactionReceipt( + rcpt.transactionHash + ); + var block = await ethers.provider.getBlock(rc.blockNumber); + var startTime = block.timestamp; + const flowRateOpenBounty = amount.sub(amountMinimum).div(durationFlow); + + var execData = ctFlowClient1.interface.encodeFunctionData( + "increaseFlow", + [superToken_, client1.address, flowRateOpenBounty, 0] + ); + var timeArgs = encodeTimeArgs(startTime + durationHold, durationHold); + var moduleData = { + modules: [1, 3], + args: [timeArgs], + }; + + await time.increase(59); // ff time + + const balBounty2 = await ctUSDCx.balanceOf(amBounty); + const balClient12 = await ctUSDCx.balanceOf(client1.address); + expect(balBounty2).to.be.equal(balBounty1.add(amount)); + expect(balClient12).to.be.equal(balClient11.sub(amount)); + + await ctGelatoAutoBot + .connect(gelatoExecutor) + .exec( + amBounty, + amBounty, + execData, + moduleData, + GELATO_FEE, + amGelatoFee, + true, + true + ); + const tsStartFlow = await time.latest(); + + var taskIds = await ctGelatoAutoBot.getTaskIdsByUser(amBounty); + expect(taskIds.length).to.be.equal(1); + + var { + taskIdFlowIncrease, + taskIdFlowDecrease, + timestampIncrease, + timestampDecrease, + depositAmount, + depositAmountMinimum, + flowRate, + superToken, + } = await ctFlowClient1.getBounty(client1.address, 0); + expect(taskIds.includes(taskIdFlowIncrease)).to.be.equal(false); + expect(taskIds.includes(taskIdFlowDecrease)).to.be.equal(true); + expect(timestampIncrease).to.be.equal(tsStartFlow); + expect(timestampDecrease).to.be.equal(0); + expect(depositAmount).to.be.equal(amount); + expect(depositAmountMinimum).to.be.equal(amountMinimum); + expect(flowRate).to.be.equal(flowRateOpenBounty); + expect(superToken).to.be.equal(superToken_); + + var { + timestamp, + flowRate: flowRateOutput, + deposit, + owedDeposit, + } = await ctCFAV1.getFlow(superToken_, amBounty, client1.address); + expect(timestamp).to.be.equal(tsStartFlow); + expect(flowRateOutput).to.be.equal(flowRateOpenBounty); + expect(deposit).to.be.gt(flowRateOpenBounty.mul(60 * 60)); + expect(owedDeposit).to.be.equal(0); + + var execData = ctFlowClient1.interface.encodeFunctionData( + "decreaseFlow", + [superToken_, client1.address, flowRateOpenBounty, 0] + ); + var timeArgs = encodeTimeArgs( + startTime + durationHold + durationFlow, + durationFlow + ); + var moduleData = { + modules: [1, 3], + args: [timeArgs], + }; + + const ffTime_ = 5; + await time.increase(ffTime_); // ff time + + const flowAmountSoFar = flowRateOutput.mul(ffTime_); + + const balBounty_ = await ctUSDCx.balanceOf(amBounty); + const balClient1_ = await ctUSDCx.balanceOf(client1.address); + expect(balBounty_).to.be.equal( + balBounty2.sub(deposit).sub(flowAmountSoFar) + ); + expect(balClient1_).to.be.equal(balClient12.add(flowAmountSoFar)); + + await expect( + ctGelatoAutoBot + .connect(gelatoExecutor) + .exec( + amBounty, + amBounty, + execData, + moduleData, + GELATO_FEE, + amGelatoFee, + true, + true + ) + ).to.be.revertedWith("Automate.preExecCall: TimeModule: Too early"); + + var taskIds = await ctGelatoAutoBot.getTaskIdsByUser(amBounty); + expect(taskIds.length).to.be.equal(1); + + var { + taskIdFlowIncrease, + taskIdFlowDecrease, + timestampIncrease, + timestampDecrease, + depositAmount, + depositAmountMinimum, + flowRate, + superToken, + } = await ctFlowClient1.getBounty(client1.address, 0); + expect(taskIds.includes(taskIdFlowIncrease)).to.be.equal(false); + expect(taskIds.includes(taskIdFlowDecrease)).to.be.equal(true); + expect(timestampIncrease).to.be.equal(tsStartFlow); + expect(timestampDecrease).to.be.equal(0); + expect(depositAmount).to.be.equal(amount); + expect(depositAmountMinimum).to.be.equal(amountMinimum); + expect(flowRate).to.be.equal(flowRateOpenBounty); + expect(superToken).to.be.equal(superToken_); + + var { + timestamp, + flowRate: flowRateOutput, + deposit, + owedDeposit, + } = await ctCFAV1.getFlow(superToken_, amBounty, client1.address); + expect(timestamp).to.be.equal(tsStartFlow); + expect(flowRateOutput).to.be.equal(flowRateOpenBounty); + expect(deposit).to.be.gt(flowRateOpenBounty.mul(60 * 60)); + expect(owedDeposit).to.be.equal(0); + + var tx = await ctFlowClient1.cancelBounty(0); + var rcpt = await tx.wait(); + + var taskIds = await ctGelatoAutoBot.getTaskIdsByUser(amBounty); + expect(taskIds.length).to.be.equal(0); + + var { + taskIdFlowIncrease, + taskIdFlowDecrease, + timestampIncrease, + timestampDecrease, + depositAmount, + depositAmountMinimum, + flowRate, + superToken, + } = await ctFlowClient1.getBounty(client1.address, 0); + expect(taskIdFlowIncrease).to.be.equal(ethers.constants.HashZero); + expect(taskIdFlowDecrease).to.be.equal(ethers.constants.HashZero); + expect(timestampIncrease).to.be.equal(0); + expect(timestampDecrease).to.be.equal(0); + expect(depositAmount).to.be.equal(0); + expect(depositAmountMinimum).to.be.equal(0); + expect(flowRate).to.be.equal(0); + expect(superToken).to.be.equal(ethers.constants.AddressZero); + + var { + timestamp, + flowRate: flowRateOutput, + deposit, + owedDeposit, + } = await ctCFAV1.getFlow(superToken_, amBounty, client1.address); + expect(timestamp).to.be.equal(0); + expect(flowRateOutput).to.be.equal(0); + expect(deposit).to.be.equal(0); + expect(owedDeposit).to.be.equal(0); + + const balBounty3 = await ctUSDCx.balanceOf(amBounty); + const balClient13 = await ctUSDCx.balanceOf(client1.address); + expect(balBounty3).to.be.equal(balBounty1); + expect(balClient13).to.be.equal(balClient11); + }); + it("Should return full amount to bounty caller if cancel after flow ends", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctFlowClient1, + ctCFAV1, + ctUSDCx, + ctGelatoAutoBot, + amBounty, + gelatoExecutor, + client1, + worker1, + } = result; + + await fundBountyContractGelatoTresury( + chainId, + amBounty, + ethers.utils.parseEther("0.501") + ); + + const amountST = ethers.utils.parseEther("500"); + await approveDepositClientSTFundsToContract( + client1, + amBounty, + amountST, + chainId + ); + await prefundSTToBountyContract(amBounty, amountST, chainId); + + const superToken_ = networkConfig[chainId]["addrUSDCx"]; + const amount = ethers.utils.parseEther("3"); + const amountMinimum = ethers.utils.parseEther("1"); + const durationHold = 60; + const durationFlow = 60; + + const balBounty1 = await ctUSDCx.balanceOf(amBounty); + const balClient11 = await ctUSDCx.balanceOf(client1.address); + + var tx = await ctFlowClient1.openBounty( + superToken_, + amount, + amountMinimum, + durationHold, + durationFlow + ); + var rcpt = await tx.wait(); + var rc = await ethers.provider.getTransactionReceipt( + rcpt.transactionHash + ); + var block = await ethers.provider.getBlock(rc.blockNumber); + var startTime = block.timestamp; + const flowRateOpenBounty = amount.sub(amountMinimum).div(durationFlow); + + var execData = ctFlowClient1.interface.encodeFunctionData( + "increaseFlow", + [superToken_, client1.address, flowRateOpenBounty, 0] + ); + var timeArgs = encodeTimeArgs(startTime + durationHold, durationHold); + var moduleData = { + modules: [1, 3], + args: [timeArgs], + }; + + await time.increase(59); // ff time + + const balBounty2 = await ctUSDCx.balanceOf(amBounty); + const balClient12 = await ctUSDCx.balanceOf(client1.address); + expect(balBounty2).to.be.equal(balBounty1.add(amount)); + expect(balClient12).to.be.equal(balClient11.sub(amount)); + + await ctGelatoAutoBot + .connect(gelatoExecutor) + .exec( + amBounty, + amBounty, + execData, + moduleData, + GELATO_FEE, + amGelatoFee, + true, + true + ); + const tsStartFlow = await time.latest(); + + var execData = ctFlowClient1.interface.encodeFunctionData( + "decreaseFlow", + [superToken_, client1.address, flowRateOpenBounty, 0] + ); + var timeArgs = encodeTimeArgs( + startTime + durationHold + durationFlow, + durationFlow + ); + var moduleData = { + modules: [1, 3], + args: [timeArgs], + }; + + await time.increase(56); // ff time + + await ctGelatoAutoBot + .connect(gelatoExecutor) + .exec( + amBounty, + amBounty, + execData, + moduleData, + GELATO_FEE, + amGelatoFee, + true, + true + ); + const tsStopFlow = await time.latest(); + + var taskIds = await ctGelatoAutoBot.getTaskIdsByUser(amBounty); + expect(taskIds.length).to.be.equal(0); + + var { + taskIdFlowIncrease, + taskIdFlowDecrease, + timestampIncrease, + timestampDecrease, + depositAmount, + depositAmountMinimum, + flowRate, + superToken, + } = await ctFlowClient1.getBounty(client1.address, 0); + expect(taskIds.includes(taskIdFlowIncrease)).to.be.equal(false); + expect(taskIds.includes(taskIdFlowDecrease)).to.be.equal(false); + expect(timestampIncrease).to.be.equal(tsStartFlow); + expect(timestampDecrease).to.be.equal(tsStopFlow); + expect(depositAmount).to.be.equal(amount); + expect(depositAmountMinimum).to.be.equal(amountMinimum); + expect(flowRate).to.be.equal(flowRateOpenBounty); + expect(superToken).to.be.equal(superToken_); + + var { + timestamp, + flowRate: flowRateOutput, + deposit, + owedDeposit, + } = await ctCFAV1.getFlow(superToken_, amBounty, client1.address); + expect(timestamp).to.be.equal(0); + expect(flowRateOutput).to.be.equal(0); + expect(deposit).to.be.equal(0); + expect(owedDeposit).to.be.equal(0); + + const flowAmountSoFar = flowRateOpenBounty.mul( + tsStopFlow - tsStartFlow + ); + + const balBounty_ = await ctUSDCx.balanceOf(amBounty); + const balClient1_ = await ctUSDCx.balanceOf(client1.address); + expect(balBounty_).to.be.equal(balBounty2.sub(flowAmountSoFar)); + expect(balClient1_).to.be.equal(balClient12.add(flowAmountSoFar)); + + var tx = await ctFlowClient1.cancelBounty(0); + var rcpt = await tx.wait(); + + var { + taskIdFlowIncrease, + taskIdFlowDecrease, + timestampIncrease, + timestampDecrease, + depositAmount, + depositAmountMinimum, + flowRate, + superToken, + } = await ctFlowClient1.getBounty(client1.address, 0); + expect(taskIdFlowIncrease).to.be.equal(ethers.constants.HashZero); + expect(taskIdFlowDecrease).to.be.equal(ethers.constants.HashZero); + expect(timestampIncrease).to.be.equal(0); + expect(timestampDecrease).to.be.equal(0); + expect(depositAmount).to.be.equal(0); + expect(depositAmountMinimum).to.be.equal(0); + expect(flowRate).to.be.equal(0); + expect(superToken).to.be.equal(ethers.constants.AddressZero); + + var { + timestamp, + flowRate: flowRateOutput, + deposit, + owedDeposit, + } = await ctCFAV1.getFlow(superToken_, amBounty, client1.address); + expect(timestamp).to.be.equal(0); + expect(flowRateOutput).to.be.equal(0); + expect(deposit).to.be.equal(0); + expect(owedDeposit).to.be.equal(0); + + const balBounty3 = await ctUSDCx.balanceOf(amBounty); + const balClient13 = await ctUSDCx.balanceOf(client1.address); + expect(balBounty3).to.be.equal(balBounty1); + expect(balClient13).to.be.equal(balClient11); + }); + }); + describe("awardBounty", async () => { + it("Should award full amount to bounty winner if award before flow starts", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctFlowClient1, + ctCFAV1, + ctUSDCx, + ctGelatoAutoBot, + amBounty, + gelatoExecutor, + client1, + worker1, + } = result; + + await fundBountyContractGelatoTresury( + chainId, + amBounty, + ethers.utils.parseEther("0.501") + ); + + const amountST = ethers.utils.parseEther("500"); + await approveDepositClientSTFundsToContract( + client1, + amBounty, + amountST, + chainId + ); + await prefundSTToBountyContract(amBounty, amountST, chainId); + + const superToken_ = networkConfig[chainId]["addrUSDCx"]; + const amount = ethers.utils.parseEther("3"); + const amountMinimum = ethers.utils.parseEther("1"); + const durationHold = 60; + const durationFlow = 60; + + const balBounty1 = await ctUSDCx.balanceOf(amBounty); + const balClient11 = await ctUSDCx.balanceOf(client1.address); + const balWorker11 = await ctUSDCx.balanceOf(worker1.address); + + var tx = await ctFlowClient1.openBounty( + superToken_, + amount, + amountMinimum, + durationHold, + durationFlow + ); + var rcpt = await tx.wait(); + var rc = await ethers.provider.getTransactionReceipt( + rcpt.transactionHash + ); + var block = await ethers.provider.getBlock(rc.blockNumber); + var startTime = block.timestamp; + const flowRateOpenBounty = amount.sub(amountMinimum).div(durationFlow); + + var execData = ctFlowClient1.interface.encodeFunctionData( + "increaseFlow", + [superToken_, client1.address, flowRateOpenBounty, 0] + ); + var timeArgs = encodeTimeArgs(startTime + durationHold, durationHold); + var moduleData = { + modules: [1, 3], + args: [timeArgs], + }; + + await time.increase(5); // ff time + + const balBounty2 = await ctUSDCx.balanceOf(amBounty); + const balClient12 = await ctUSDCx.balanceOf(client1.address); + const balWorker12 = await ctUSDCx.balanceOf(worker1.address); + expect(balBounty2).to.be.equal(balBounty1.add(amount)); + expect(balClient12).to.be.equal(balClient11.sub(amount)); + expect(balWorker12).to.be.equal(balWorker11); + + await expect( + ctGelatoAutoBot + .connect(gelatoExecutor) + .exec( + amBounty, + amBounty, + execData, + moduleData, + GELATO_FEE, + amGelatoFee, + true, + true + ) + ).to.be.revertedWith("Automate.preExecCall: TimeModule: Too early"); + + var tx = await ctFlowClient1.awardBounty(0, worker1.address); + var rcpt = await tx.wait(); + + var taskIds = await ctGelatoAutoBot.getTaskIdsByUser(amBounty); + expect(taskIds.length).to.be.equal(0); + + const balBounty3 = await ctUSDCx.balanceOf(amBounty); + const balClient13 = await ctUSDCx.balanceOf(client1.address); + const balWorker13 = await ctUSDCx.balanceOf(worker1.address); + expect(balBounty3).to.be.equal(balBounty1); + expect(balClient13).to.be.equal(balClient11.sub(amount)); + expect(balWorker13).to.be.equal(balWorker11.add(amount)); + }); + it("Should stop flow and award remaining amount to bounty winner if award during flow", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctFlowClient1, + ctCFAV1, + ctUSDCx, + ctGelatoAutoBot, + amBounty, + gelatoExecutor, + client1, + worker1, + } = result; + + await fundBountyContractGelatoTresury( + chainId, + amBounty, + ethers.utils.parseEther("0.501") + ); + + const amountST = ethers.utils.parseEther("500"); + await approveDepositClientSTFundsToContract( + client1, + amBounty, + amountST, + chainId + ); + await prefundSTToBountyContract(amBounty, amountST, chainId); + + const superToken_ = networkConfig[chainId]["addrUSDCx"]; + const amount = ethers.utils.parseEther("3"); + const amountMinimum = ethers.utils.parseEther("1"); + const durationHold = 60; + const durationFlow = 60; + + const balBounty1 = await ctUSDCx.balanceOf(amBounty); + const balClient11 = await ctUSDCx.balanceOf(client1.address); + const balWorker11 = await ctUSDCx.balanceOf(worker1.address); + + var tx = await ctFlowClient1.openBounty( + superToken_, + amount, + amountMinimum, + durationHold, + durationFlow + ); + var rcpt = await tx.wait(); + var rc = await ethers.provider.getTransactionReceipt( + rcpt.transactionHash + ); + var block = await ethers.provider.getBlock(rc.blockNumber); + var startTime = block.timestamp; + const flowRateOpenBounty = amount.sub(amountMinimum).div(durationFlow); + + var execData = ctFlowClient1.interface.encodeFunctionData( + "increaseFlow", + [superToken_, client1.address, flowRateOpenBounty, 0] + ); + var timeArgs = encodeTimeArgs(startTime + durationHold, durationHold); + var moduleData = { + modules: [1, 3], + args: [timeArgs], + }; + + await time.increase(59); // ff time + + const balBounty2 = await ctUSDCx.balanceOf(amBounty); + const balClient12 = await ctUSDCx.balanceOf(client1.address); + const balWorker12 = await ctUSDCx.balanceOf(worker1.address); + expect(balBounty2).to.be.equal(balBounty1.add(amount)); + expect(balClient12).to.be.equal(balClient11.sub(amount)); + expect(balWorker12).to.be.equal(balWorker11); + + await ctGelatoAutoBot + .connect(gelatoExecutor) + .exec( + amBounty, + amBounty, + execData, + moduleData, + GELATO_FEE, + amGelatoFee, + true, + true + ); + const tsStartFlow = await time.latest(); + + var { + timestamp, + flowRate: flowRateOutput, + deposit, + owedDeposit, + } = await ctCFAV1.getFlow(superToken_, amBounty, client1.address); + expect(timestamp).to.be.equal(tsStartFlow); + expect(flowRateOutput).to.be.equal(flowRateOpenBounty); + expect(deposit).to.be.gt(flowRateOpenBounty.mul(60 * 60)); + expect(owedDeposit).to.be.equal(0); + + var execData = ctFlowClient1.interface.encodeFunctionData( + "decreaseFlow", + [superToken_, client1.address, flowRateOpenBounty, 0] + ); + var timeArgs = encodeTimeArgs( + startTime + durationHold + durationFlow, + durationFlow + ); + var moduleData = { + modules: [1, 3], + args: [timeArgs], + }; + + const ffTime_ = 5; + await time.increase(ffTime_); // ff time + + var flowAmountSoFar = flowRateOutput.mul(ffTime_); + + const balBounty_ = await ctUSDCx.balanceOf(amBounty); + const balClient1_ = await ctUSDCx.balanceOf(client1.address); + const balWorker1_ = await ctUSDCx.balanceOf(worker1.address); + expect(balBounty_).to.be.equal( + balBounty2.sub(deposit).sub(flowAmountSoFar) + ); + expect(balClient1_).to.be.equal(balClient12.add(flowAmountSoFar)); + expect(balWorker1_).to.be.equal(balWorker11); + + await expect( + ctGelatoAutoBot + .connect(gelatoExecutor) + .exec( + amBounty, + amBounty, + execData, + moduleData, + GELATO_FEE, + amGelatoFee, + true, + true + ) + ).to.be.revertedWith("Automate.preExecCall: TimeModule: Too early"); + + var tx = await ctFlowClient1.awardBounty(0, worker1.address); + var rcpt = await tx.wait(); + + var flowAmountSoFar = flowRateOutput.mul(ffTime_ + 1); + + const balBounty3 = await ctUSDCx.balanceOf(amBounty); + const balClient13 = await ctUSDCx.balanceOf(client1.address); + const balWorker13 = await ctUSDCx.balanceOf(worker1.address); + expect(balBounty3).to.be.equal(balBounty1); + expect(balClient13).to.be.equal(balClient12.add(flowAmountSoFar)); + expect(balWorker13).to.be.equal( + balWorker11.add(amount.sub(flowAmountSoFar)) + ); + }); + it("Should award minimum amount to bounty winner if award after flow ends", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctFlowClient1, + ctCFAV1, + ctUSDCx, + ctGelatoAutoBot, + amBounty, + gelatoExecutor, + client1, + worker1, + } = result; + + await fundBountyContractGelatoTresury( + chainId, + amBounty, + ethers.utils.parseEther("0.501") + ); + + const amountST = ethers.utils.parseEther("500"); + await approveDepositClientSTFundsToContract( + client1, + amBounty, + amountST, + chainId + ); + await prefundSTToBountyContract(amBounty, amountST, chainId); + + const superToken_ = networkConfig[chainId]["addrUSDCx"]; + const amount = ethers.utils.parseEther("3"); + const amountMinimum = ethers.utils.parseEther("1"); + const durationHold = 60; + const durationFlow = 60; + + const balBounty1 = await ctUSDCx.balanceOf(amBounty); + const balClient11 = await ctUSDCx.balanceOf(client1.address); + const balWorker11 = await ctUSDCx.balanceOf(worker1.address); + + var tx = await ctFlowClient1.openBounty( + superToken_, + amount, + amountMinimum, + durationHold, + durationFlow + ); + var rcpt = await tx.wait(); + var rc = await ethers.provider.getTransactionReceipt( + rcpt.transactionHash + ); + var block = await ethers.provider.getBlock(rc.blockNumber); + var startTime = block.timestamp; + const flowRateOpenBounty = amount.sub(amountMinimum).div(durationFlow); + + var execData = ctFlowClient1.interface.encodeFunctionData( + "increaseFlow", + [superToken_, client1.address, flowRateOpenBounty, 0] + ); + var timeArgs = encodeTimeArgs(startTime + durationHold, durationHold); + var moduleData = { + modules: [1, 3], + args: [timeArgs], + }; + + await time.increase(59); // ff time + + const balBounty2 = await ctUSDCx.balanceOf(amBounty); + const balClient12 = await ctUSDCx.balanceOf(client1.address); + const balWorker12 = await ctUSDCx.balanceOf(worker1.address); + expect(balBounty2).to.be.equal(balBounty1.add(amount)); + expect(balClient12).to.be.equal(balClient11.sub(amount)); + expect(balWorker12).to.be.equal(balWorker11); + + await ctGelatoAutoBot + .connect(gelatoExecutor) + .exec( + amBounty, + amBounty, + execData, + moduleData, + GELATO_FEE, + amGelatoFee, + true, + true + ); + const tsStartFlow = await time.latest(); + + var execData = ctFlowClient1.interface.encodeFunctionData( + "decreaseFlow", + [superToken_, client1.address, flowRateOpenBounty, 0] + ); + var timeArgs = encodeTimeArgs( + startTime + durationHold + durationFlow, + durationFlow + ); + var moduleData = { + modules: [1, 3], + args: [timeArgs], + }; + + await time.increase(56); // ff time + + await ctGelatoAutoBot + .connect(gelatoExecutor) + .exec( + amBounty, + amBounty, + execData, + moduleData, + GELATO_FEE, + amGelatoFee, + true, + true + ); + const tsStopFlow = await time.latest(); + + const flowAmountSoFar = flowRateOpenBounty.mul( + tsStopFlow - tsStartFlow + ); + + const balBounty_ = await ctUSDCx.balanceOf(amBounty); + const balClient1_ = await ctUSDCx.balanceOf(client1.address); + const balWorker1_ = await ctUSDCx.balanceOf(worker1.address); + expect(balBounty_).to.be.equal(balBounty2.sub(flowAmountSoFar)); + expect(balClient1_).to.be.equal(balClient12.add(flowAmountSoFar)); + expect(balWorker1_).to.be.equal(balWorker11); + + var tx = await ctFlowClient1.awardBounty(0, worker1.address); + var rcpt = await tx.wait(); + + const balBounty3 = await ctUSDCx.balanceOf(amBounty); + const balClient13 = await ctUSDCx.balanceOf(client1.address); + const balWorker13 = await ctUSDCx.balanceOf(worker1.address); + expect(balBounty3).to.be.equal(balBounty1); + expect(balClient13).to.be.equal(balClient12.add(flowAmountSoFar)); + expect(balWorker13).to.be.equal( + balWorker11.add(amount.sub(flowAmountSoFar)) + ); + }); + }); + }); +}); + +// REPORT_GAS=true npx hardhat test ./test/Bounty.ts diff --git a/contracts/test/Main.ts b/contracts/test/Main.ts new file mode 100644 index 0000000..65373cd --- /dev/null +++ b/contracts/test/Main.ts @@ -0,0 +1,11225 @@ +import { time, loadFixture } from "@nomicfoundation/hardhat-network-helpers"; +import { type SignerWithAddress } from "@nomiclabs/hardhat-ethers/signers"; +import { expect } from "chai"; +import { Contract, type BigNumber, type ContractTransaction } from "ethers"; +import hre, { ethers } from "hardhat"; +import { main as deployMain } from "../scripts/deploy.setup"; +import { ZERO_BYTES, networkConfig } from "../utils/common"; + +import ISuperfluid from "@superfluid-finance/ethereum-contracts/build/contracts/ISuperfluid.json"; +import ISuperToken from "@superfluid-finance/ethereum-contracts/build/contracts/ISuperToken.json"; +import IConstantFlowAgreementV1 from "@superfluid-finance/ethereum-contracts/build/contracts/IConstantFlowAgreementV1.json"; + +const ABI_SF_HOST = ISuperfluid.abi; +const ABI_SUPERTOKEN = ISuperToken.abi; +const ABI_CFAV1 = IConstantFlowAgreementV1.abi; +import TaskTreasuryUpgradableABI from "../contracts/services/gelato/TaskTreasuryUpgradableABI.json"; +import OpsImplementationABI from "../contracts/services/gelato/OpsImplementationABI.json"; +import ABI_ERC20 from "../contracts/services/superfluid/ERC20_ABI.json"; + +const amGelatoFee = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"; +const amAutobotFactory = "0xC815dB16D4be6ddf2685C201937905aBf338F5D7"; +const GELATO_FEE = ethers.utils.parseEther("0.1"); + +// const chainId = hre.network.config.chainId; +// const CHAIN_ID_MUMBAI = 80001; +// export const ADDRESS_GELATO_AUTOBOT = +// networkConfig[chainId ?? CHAIN_ID_MUMBAI]["addrGelAutobot"]; +// // export const MINIMUM_DEPOSIT_AMOUNT = ethers.utils.parseEther("3"); // 1 +// export const MINIMUM_FLOW_AMOUNT = ethers.utils.parseEther("2"); // 2 +// export const MINIMUM_DEPOSIT_AMOUNT = MINIMUM_FLOW_AMOUNT.sub( +// ethers.utils.parseEther("1") +// ); +// export const MAX_FLOW_DURATION_PER_UNIT_FLOW_AMOUNT = 4092000; // 2592000 = 1 month in seconds +// export const MIN_CONTRACT_GELATO_BALANCE = ethers.utils.parseEther("0.5"); +// export const ST_BUFFER_DURATION_IN_SECONDS = 3600; +// export const ST_ADDRESSES = [ +// networkConfig[chainId ?? CHAIN_ID_MUMBAI]["addrUSDCx"], +// ]; + +import { + ADDRESS_GELATO_AUTOBOT, + MIN_APP_GELATO_BALANCE, + MINIMUM_END_DURATION, + MINIMUM_LIFESPAN, + ST_BUFFER_DURATION_IN_SECONDS, + ST_ADDRESSES, + BPS720, + FRLB720, + FRUB720, + TAG720, + BPS1080, + FRLB1080, + FRUB1080, + TAG1080, +} from "./common.test"; + +describe("Main", () => { + const encodeTimeArgs = (startTime: number, interval: number) => { + const encoded = ethers.utils.defaultAbiCoder.encode( + ["uint128", "uint128"], + [startTime, interval] + ); + + return encoded; + }; + + const makeRich = async (signers: SignerWithAddress[], chainId: number) => { + const amount = ethers.utils.parseEther("1000"); + + for (let i = 0; i < signers.length; i++) { + const ctUSDC = await ethers.getContractAt( + ABI_ERC20, + networkConfig[chainId]["addrUSDC"], + signers[i] + ); + + const ctUSDCx = await ethers.getContractAt( + ABI_SUPERTOKEN, + networkConfig[chainId]["addrUSDCx"], + signers[i] + ); + + var tx = await ctUSDC.mint(signers[i].address, amount); + var rcpt = await tx.wait(); + + var tx = await ctUSDC.approve(ctUSDCx.address, amount); + var rcpt = await tx.wait(); + + var tx = await ctUSDCx.upgrade(amount); + var rcpt = await tx.wait(); + + const ctDAI = await ethers.getContractAt( + ABI_ERC20, + networkConfig[chainId]["addrDAI"], + signers[i] + ); + + const ctDAIx = await ethers.getContractAt( + ABI_SUPERTOKEN, + networkConfig[chainId]["addrDAIx"], + signers[i] + ); + + var tx = await ctDAI.mint(signers[i].address, amount); + var rcpt = await tx.wait(); + + var tx = await ctDAI.approve(ctDAIx.address, amount); + var rcpt = await tx.wait(); + + var tx = await ctDAIx.upgrade(amount); + var rcpt = await tx.wait(); + } + }; + + const fundContractWithNativeGas = async ( + contractAddress: string, + amount: BigNumber + ) => { + const [deployer] = await ethers.getSigners(); + + await deployer.sendTransaction({ value: amount, to: contractAddress }); + }; + + const fundAppGelatoTresury = async ( + chainId: number, + amMain: string, + amount: BigNumber + ) => { + const [deployer, client1] = await ethers.getSigners(); + + const ctAutomateClient1 = await ethers.getContractAt( + "Automate", + amMain, + client1 + ); + + var tx = await ctAutomateClient1.depositGelatoFunds({ value: amount }); + var rcpt = await tx.wait(); + }; + + const investToApp = async ( + chainId: number, + amMain: string, + client: SignerWithAddress, + amount: BigNumber + ) => { + const ctUSDCxClient = await ethers.getContractAt( + ABI_SUPERTOKEN, + networkConfig[chainId]["addrUSDCx"], + client + ); + const ctControlClient1 = await ethers.getContractAt( + "Control", + amMain, + client + ); + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + + var tx = await ctUSDCxClient.approve(amMain, amount); + var rcpt = await tx.wait(); + + var tx = (await ctControlClient1.depositAsset( + supertokenUSDCx, + amount + )) as any; + var rcpt = await tx.wait(); + }; + + // const approveDepositClientSTFundsToContract = async ( + // client: SignerWithAddress, + // contractAddress: string, + // amountBounty: BigNumber, + // chainId: number + // ) => { + // const ctUSDCxClient = await ethers.getContractAt( + // ABI_SUPERTOKEN, + // networkConfig[chainId]["addrUSDCx"], + // client + // ); + + // var tx = await ctUSDCxClient.approve(contractAddress, amountBounty); + // var rcpt = await tx.wait(); + // }; + + // const prefundSTToBountyContract = async ( + // contractAddress: string, + // amount: BigNumber, + // chainId: number + // ) => { + // const [deployer] = await ethers.getSigners(); + + // const ctUSDCx = await ethers.getContractAt( + // ABI_SUPERTOKEN, + // networkConfig[chainId]["addrUSDCx"], + // deployer + // ); + + // var tx = await ctUSDCx.transfer(contractAddress, amount); + // var rcpt = await tx.wait(); + // }; + + // const withdrawSTFromBountyContract = async ( + // contractAddress: string, + // amount: BigNumber, + // chainId: number + // ) => { + // const [deployer] = await ethers.getSigners(); + + // const ctFlowSetup = await ethers.getContractAt( + // "FlowSetup", + // contractAddress, + // deployer + // ); + + // var tx = await ctFlowSetup.withdrawSuperToken( + // networkConfig[chainId]["addrUSDCx"], + // amount + // ); + // var rcpt = await tx.wait(); + // }; + + const checkRoleValidity = async ( + amMain: string, + signer: SignerWithAddress, + role: string, + shouldBe: boolean, + isAdmin: boolean = false + ) => { + const ctAccessControl = await ethers.getContractAt( + "AccessControl", + amMain, + signer + ); + let roleHex; + if (isAdmin) { + roleHex = ctAccessControl.getDefaultAdminRole(); + } else { + roleHex = await ctAccessControl.getRole(role); + } + const isRole = await ctAccessControl.hasRole(roleHex, signer.address); + expect(isRole).to.be.equal(shouldBe); + }; + + const init = async () => { + const [deployer, client1, client2, worker1, worker2] = + await ethers.getSigners(); + + const chainId = hre.network.config.chainId; + console.log("On Chain:", chainId); + + if (!chainId) return; + await makeRich([deployer, client1, client2, worker1, worker2], chainId); + + const ctBounty = await deployMain(true); + if (!ctBounty) return; + const amMain = ctBounty.address; + + const ctUtilityDeployer = await ethers.getContractAt( + "Utility", + amMain, + deployer + ); + const ctUtilityClient1 = await ethers.getContractAt( + "Utility", + amMain, + client1 + ); + const ctAccessControlDeployer = await ethers.getContractAt( + "AccessControl", + amMain, + deployer + ); + const ctAccessControlClient1 = await ethers.getContractAt( + "AccessControl", + amMain, + client1 + ); + const ctAutomateDeployer = await ethers.getContractAt( + "Automate", + amMain, + deployer + ); + const ctAutomateClient1 = await ethers.getContractAt( + "Automate", + amMain, + client1 + ); + const ctControlDeployer = await ethers.getContractAt( + "Control", + amMain, + deployer + ); + const ctControlClient1 = await ethers.getContractAt( + "Control", + amMain, + client1 + ); + const ctSessionClient1 = await ethers.getContractAt( + "Session", + amMain, + client1 + ); + const ctFlowClient1 = await ethers.getContractAt("Flow", amMain, client1); + + const ctCFAV1 = await ethers.getContractAt( + ABI_CFAV1, + networkConfig[chainId]["addrCFAV1"], + deployer + ); + + const ctUSDCx = await ethers.getContractAt( + ABI_SUPERTOKEN, + networkConfig[chainId]["addrUSDCx"], + deployer + ); + const ctUSDCxClient1 = await ethers.getContractAt( + ABI_SUPERTOKEN, + networkConfig[chainId]["addrUSDCx"], + client1 + ); + const ctGelatoTreasury = new ethers.Contract( + networkConfig[chainId]["addrGelTreasury"], + TaskTreasuryUpgradableABI, + deployer + ); + + await hre.network.provider.request({ + method: "hardhat_impersonateAccount", + params: [networkConfig[chainId]["addrGelNet"]], + }); + const gelatoExecutor = ethers.provider.getSigner( + networkConfig[chainId]["addrGelNet"] + ); + + const ctGelatoAutoBot = new ethers.Contract( + networkConfig[chainId]["addrGelAutobot"], + OpsImplementationABI, + gelatoExecutor + ); + + const ctFlowGelatoExecutor = await ethers.getContractAt( + "Flow", + amMain, + gelatoExecutor + ); + + return { + chainId, + ctUtilityDeployer, + ctUtilityClient1, + ctAccessControlDeployer, + ctAccessControlClient1, + ctAutomateDeployer, + ctAutomateClient1, + ctSessionClient1, + ctControlDeployer, + ctControlClient1, + ctFlowClient1, + ctFlowGelatoExecutor, + ctCFAV1, + ctUSDCx, + ctUSDCxClient1, + ctGelatoTreasury, + ctGelatoAutoBot, + gelatoExecutor, + amMain, + deployer, + client1, + client2, + worker1, + worker2, + }; + }; + + describe("deployment", async () => { + it("Should deploy and set initial values correctly", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctAutomateClient1, + ctControlClient1, + amMain, + deployer, + client1, + } = result; + + // TODO: diamond / cut / loupe test separately (diamondTest.js) + + await checkRoleValidity(amMain, deployer, "", true, true); + await checkRoleValidity(amMain, deployer, "MAINTAINER_ROLE", true); + await checkRoleValidity(amMain, deployer, "TREASURER_ROLE", true); + await checkRoleValidity(amMain, deployer, "STRATEGIST_ROLE", true); + await checkRoleValidity(amMain, deployer, "DEVELOPER_ROLE", false); + + await checkRoleValidity(amMain, client1, "", false, true); + await checkRoleValidity(amMain, client1, "MAINTAINER_ROLE", false); + await checkRoleValidity(amMain, client1, "TREASURER_ROLE", false); + await checkRoleValidity(amMain, client1, "STRATEGIST_ROLE", false); + await checkRoleValidity(amMain, client1, "DEVELOPER_ROLE", false); + + const gelatoAddresses = await ctAutomateClient1.getGelatoAddresses(); + expect(gelatoAddresses[0]).to.be.equal(ADDRESS_GELATO_AUTOBOT); + expect(gelatoAddresses[1]).to.be.equal( + networkConfig[chainId]["addrGelTreasury"] + ); + expect(gelatoAddresses[2]).to.be.equal( + networkConfig[chainId]["addrGelNet"] + ); + expect(gelatoAddresses[3]).to.be.equal(amAutobotFactory); + expect(gelatoAddresses[4]).to.be.equal(amGelatoFee); + + expect(await ctAutomateClient1.getMinimumAppGelatoBalance()).to.be.equal( + MIN_APP_GELATO_BALANCE + ); + + expect( + await ctControlClient1.isSuperTokensSupported(ST_ADDRESSES[0]) + ).to.be.equal(true); + expect( + await ctControlClient1.isSuperTokensSupported( + networkConfig[chainId]["addrDAIx"] + ) + ).to.be.equal(false); + + expect(await ctControlClient1.getMinimumEndDuration()).to.be.equal( + MINIMUM_END_DURATION + ); + expect(await ctControlClient1.getMinimumLifespan()).to.be.equal( + MINIMUM_LIFESPAN + ); + expect(await ctControlClient1.getSTBufferDurationInSecond()).to.be.equal( + ST_BUFFER_DURATION_IN_SECONDS + ); + }); + }); + + describe("Utility", async () => { + describe("getNativeBalance", async () => { + it("Should get contract native balance", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctUtilityClient1, amMain } = result; + + const amount = ethers.utils.parseEther("2"); + expect(await ctUtilityClient1.getNativeBalance()).to.be.equal(0); + await fundContractWithNativeGas(amMain, amount); + expect(await ctUtilityClient1.getNativeBalance()).to.be.equal(amount); + }); + }); + describe("withdrawNativeBalance", async () => { + it("Should revert if caller not have role", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUtilityDeployer, + ctUtilityClient1, + ctAccessControlClient1, + amMain, + client1, + } = result; + + const roleHex = await ctAccessControlClient1.getRole("TREASURER_ROLE"); + const amount = ethers.utils.parseEther("2"); + const amount_ = ethers.utils.parseEther("1"); + await fundContractWithNativeGas(amMain, amount); + + // await expect( + // ctUtilityClient1.withdrawNativeBalance(amount) + // ).to.be.revertedWith( + // `AccessControl: account ${client1.address} is missing role ${roleHex}` + // ); // note: for some reason this revert string does not match eventhough text is exact same + + await expect( + ctUtilityClient1.withdrawNativeBalance(amount.sub(amount_)) + ).to.be.reverted; + }); + it("Should revert if insufficient funds", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUtilityDeployer, + ctUtilityClient1, + ctAccessControlClient1, + amMain, + client1, + } = result; + + const amount = ethers.utils.parseEther("2"); + const amount_ = ethers.utils.parseEther("1"); + await fundContractWithNativeGas(amMain, amount); + + await expect( + ctUtilityDeployer.withdrawNativeBalance(amount.add(amount_)) + ).to.be.revertedWithCustomError( + ctUtilityDeployer, + "FailedWithdrawNativeToken" + ); + }); + it("Should withdraw native gas", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUtilityDeployer, + ctUtilityClient1, + ctAccessControlClient1, + amMain, + client1, + } = result; + + const amount = ethers.utils.parseEther("2"); + const amount_ = ethers.utils.parseEther("1"); + await fundContractWithNativeGas(amMain, amount); + + var tx = await ctUtilityDeployer.withdrawNativeBalance( + amount.sub(amount_) + ); + var rcpt = await tx.wait(); + + expect(await ctUtilityDeployer.getNativeBalance()).to.be.equal(amount_); + }); + }); + }); + + describe("AccessControl", async () => { + describe("getRoleAdmin", async () => { + it("Should be admin role equal to default admin role", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctAccessControlClient1, amMain } = result; + + const roleHexAdmin = await ctAccessControlClient1.getDefaultAdminRole(); + const roleHexMaintainer = await ctAccessControlClient1.getRole( + "MAINTAINER_ROLE" + ); + const roleHexTreasurer = await ctAccessControlClient1.getRole( + "TREASURER_ROLE" + ); + const roleHexStrategist = await ctAccessControlClient1.getRole( + "STRATEGIST_ROLE" + ); + const roleHexDeveloper = await ctAccessControlClient1.getRole( + "DEVELOPER_ROLE" + ); + + expect( + await ctAccessControlClient1.getRoleAdmin(roleHexMaintainer) + ).to.be.equal(roleHexAdmin); + expect( + await ctAccessControlClient1.getRoleAdmin(roleHexTreasurer) + ).to.be.equal(roleHexAdmin); + expect( + await ctAccessControlClient1.getRoleAdmin(roleHexStrategist) + ).to.be.equal(roleHexAdmin); + expect( + await ctAccessControlClient1.getRoleAdmin(roleHexDeveloper) + ).to.be.equal(roleHexAdmin); + }); + }); + describe("grantRole", async () => { + it("Should revert if caller not admin of role being granted", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctAccessControlClient1, client1, worker1 } = result; + + const roleHexMaintainer = await ctAccessControlClient1.getRole( + "MAINTAINER_ROLE" + ); + await expect( + ctAccessControlClient1.grantRole(roleHexMaintainer, client1.address) + ).to.be.reverted; + await expect( + ctAccessControlClient1.grantRole(roleHexMaintainer, worker1.address) + ).to.be.reverted; + }); + it("Should grant user role", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctAccessControlDeployer, client1 } = result; + + const roleHexMaintainer = await ctAccessControlDeployer.getRole( + "MAINTAINER_ROLE" + ); + + expect( + await ctAccessControlDeployer.hasRole( + roleHexMaintainer, + client1.address + ) + ).to.be.equal(false); + + var tx = await ctAccessControlDeployer.grantRole( + roleHexMaintainer, + client1.address + ); + var rcpt = await tx.wait(); + + expect( + await ctAccessControlDeployer.hasRole( + roleHexMaintainer, + client1.address + ) + ).to.be.equal(true); + }); + }); + describe("revokeRole", async () => { + it("Should revert if caller not admin of role being revoked", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctAccessControlDeployer, + ctAccessControlClient1, + worker1, + } = result; + + const roleHexMaintainer = await ctAccessControlDeployer.getRole( + "MAINTAINER_ROLE" + ); + + var tx = await ctAccessControlDeployer.grantRole( + roleHexMaintainer, + worker1.address + ); + var rcpt = await tx.wait(); + + await expect( + ctAccessControlClient1.revokeRole(roleHexMaintainer, worker1.address) + ).to.be.reverted; + }); + it("Should revoke user role", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctAccessControlDeployer, client1 } = result; + + const roleHexMaintainer = await ctAccessControlDeployer.getRole( + "MAINTAINER_ROLE" + ); + + var tx = await ctAccessControlDeployer.grantRole( + roleHexMaintainer, + client1.address + ); + var rcpt = await tx.wait(); + + expect( + await ctAccessControlDeployer.hasRole( + roleHexMaintainer, + client1.address + ) + ).to.be.equal(true); + + var tx = await ctAccessControlDeployer.revokeRole( + roleHexMaintainer, + client1.address + ); + var rcpt = await tx.wait(); + + expect( + await ctAccessControlDeployer.hasRole( + roleHexMaintainer, + client1.address + ) + ).to.be.equal(false); + }); + }); + describe("renounceRole", async () => { + it("Should renonce role of caller regardless of if caller have role or not", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctAccessControlDeployer, + ctAccessControlClient1, + client1, + } = result; + + const roleHexMaintainer = await ctAccessControlDeployer.getRole( + "MAINTAINER_ROLE" + ); + + expect( + await ctAccessControlDeployer.hasRole( + roleHexMaintainer, + client1.address + ) + ).to.be.equal(false); + + var tx = await ctAccessControlClient1.renounceRole(roleHexMaintainer); + var rcpt = await tx.wait(); + + expect( + await ctAccessControlDeployer.hasRole( + roleHexMaintainer, + client1.address + ) + ).to.be.equal(false); + + var tx = await ctAccessControlDeployer.grantRole( + roleHexMaintainer, + client1.address + ); + var rcpt = await tx.wait(); + + expect( + await ctAccessControlDeployer.hasRole( + roleHexMaintainer, + client1.address + ) + ).to.be.equal(true); + + var tx = await ctAccessControlClient1.renounceRole(roleHexMaintainer); + var rcpt = await tx.wait(); + + expect( + await ctAccessControlDeployer.hasRole( + roleHexMaintainer, + client1.address + ) + ).to.be.equal(false); + }); + }); + }); + + describe("Automate", async () => { + describe("setGelatoContracts", async () => { + it("Should revert if caller not role", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctAutomateClient1, client1 } = result; + + await expect(ctAutomateClient1.setGelatoContracts(amGelatoFee)).to.be + .reverted; + }); + it("Should set gelato contract"); // need proper autobot contract to test + }); + describe("setMinContractGelatoBalance", async () => { + it("Should revert if caller not role", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctAutomateClient1, client1 } = result; + + const amount = MIN_APP_GELATO_BALANCE.sub( + ethers.utils.parseEther("0.0001") + ); + await expect(ctAutomateClient1.setMinimumAppGelatoBalance(amount)).to.be + .reverted; + }); + it("Should set min contract gelato balance", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctAutomateDeployer, client1 } = result; + + expect( + await ctAutomateDeployer.getMinimumAppGelatoBalance() + ).to.be.equal(MIN_APP_GELATO_BALANCE); + + const amount = ethers.utils.parseEther("3"); + var tx = await ctAutomateDeployer.setMinimumAppGelatoBalance(amount); + var rcpt = await tx.wait(); + expect( + await ctAutomateDeployer.getMinimumAppGelatoBalance() + ).to.be.equal(amount); + }); + }); + describe("depositGelatoFunds", async () => { + it("Should deposit contract gelato balance", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctGelatoTreasury, amMain, client1 } = result; + + expect( + await ctGelatoTreasury.userTokenBalance(amMain, amGelatoFee) + ).to.be.equal(0); + + const amount = ethers.utils.parseEther("2"); + await fundAppGelatoTresury(chainId, amMain, amount); + + expect( + await ctGelatoTreasury.userTokenBalance(amMain, amGelatoFee) + ).to.be.equal(amount); + }); + }); + describe("withdrawGelatoFunds", async () => { + it("Should revert if caller not role", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctAutomateClient1, amMain, client1 } = result; + + const amount = ethers.utils.parseEther("2"); + await fundAppGelatoTresury(chainId, amMain, amount); + + await expect(ctAutomateClient1.withdrawGelatoFunds(amount)).to.be + .reverted; + }); + it("Should withdraw gelato funds", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctGelatoTreasury, + ctAutomateDeployer, + amMain, + client1, + } = result; + + const amount = ethers.utils.parseEther("2"); + await fundAppGelatoTresury(chainId, amMain, amount); + + expect( + await ctGelatoTreasury.userTokenBalance(amMain, amGelatoFee) + ).to.be.equal(amount); + + const amount_ = ethers.utils.parseEther("1"); + + var tx = await ctAutomateDeployer.withdrawGelatoFunds(amount_); + var rcpt = await tx.wait(); + + expect( + await ctGelatoTreasury.userTokenBalance(amMain, amGelatoFee) + ).to.be.equal(amount.sub(amount_)); + }); + }); + }); + + describe("Control", async () => { + describe("setMinimumBalance", async () => { + it("Should revert if caller not role", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctControlClient1, amMain, client1 } = result; + + const amount = 5; + await expect(ctControlClient1.setMinimumEndDuration(amount)).to.be + .reverted; + }); + it("Should set min balance amount", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctControlDeployer, amMain, client1 } = result; + + expect(await ctControlDeployer.getMinimumEndDuration()).to.be.equal( + MINIMUM_END_DURATION + ); + + const dur = 30; + var tx = await ctControlDeployer.setMinimumEndDuration(dur); + var rcpt = await tx.wait(); + + expect(await ctControlDeployer.getMinimumEndDuration()).to.be.equal( + dur + ); + }); + }); + describe("setMinimumLifespan", async () => { + it("Should revert if caller not role", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctControlClient1, amMain, client1 } = result; + + const amount = 61; + await expect(ctControlClient1.setMinimumLifespan(amount)).to.be + .reverted; + }); + it("Should set min flow amount", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctControlDeployer, amMain, client1 } = result; + + expect(await ctControlDeployer.getMinimumLifespan()).to.be.equal( + MINIMUM_LIFESPAN + ); + + const amount = 61; + var tx = await ctControlDeployer.setMinimumLifespan(amount); + var rcpt = await tx.wait(); + + expect(await ctControlDeployer.getMinimumLifespan()).to.be.equal( + amount + ); + }); + }); + describe("setSTBufferAmount", async () => { + it("Should revert if caller not role", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctControlClient1, amMain, client1 } = result; + + const amount = 5555; + await expect(ctControlClient1.setSTBufferAmount(amount)).to.be.reverted; + }); + it("Should set supertoken buffer amount", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctControlDeployer, amMain, client1 } = result; + + expect( + await ctControlDeployer.getSTBufferDurationInSecond() + ).to.be.equal(ST_BUFFER_DURATION_IN_SECONDS); + + const amount = 5555; + var tx = await ctControlDeployer.setSTBufferAmount(amount); + var rcpt = await tx.wait(); + + expect( + await ctControlDeployer.getSTBufferDurationInSecond() + ).to.be.equal(amount); + }); + }); + describe("addSuperToken", async () => { + it("Should revert if not role", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctControlClient1, amMain, client1 } = result; + + const supertoken = networkConfig[chainId]["addrDAIx"]; + await expect(ctControlClient1.addSuperToken(supertoken)).to.be.reverted; + }); + it("Should add supertoken", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctControlDeployer, amMain, client1 } = result; + + const supertoken = networkConfig[chainId]["addrDAIx"]; + + expect( + await ctControlDeployer.isSuperTokensSupported(supertoken) + ).to.be.equal(false); + + var tx = await ctControlDeployer.addSuperToken(supertoken); + var rcpt = await tx.wait(); + + expect( + await ctControlDeployer.isSuperTokensSupported(supertoken) + ).to.be.equal(true); + }); + }); + describe("removeSuperToken", async () => { + it("Should revert if not role", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctControlClient1, amMain, client1 } = result; + + const supertoken = networkConfig[chainId]["addrDAIx"]; + await expect(ctControlClient1.removeSuperToken(supertoken)).to.be + .reverted; + }); + it("Should remove supertoken", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctControlDeployer, amMain, client1 } = result; + + const supertoken = networkConfig[chainId]["addrDAIx"]; + + var tx = await ctControlDeployer.addSuperToken(supertoken); + var rcpt = await tx.wait(); + + expect( + await ctControlDeployer.isSuperTokensSupported(supertoken) + ).to.be.equal(true); + + var tx = await ctControlDeployer.removeSuperToken(supertoken); + var rcpt = await tx.wait(); + + expect( + await ctControlDeployer.isSuperTokensSupported(supertoken) + ).to.be.equal(false); + }); + }); + describe("toggleBPS", async () => { + it("Should revert if caller not role", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctControlClient1, amMain, client1 } = result; + + await expect(ctControlClient1.toggleBPS()).to.be.reverted; + }); + it("Should set BPS enabled true/false", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctControlDeployer, amMain, client1 } = result; + + expect(await ctControlDeployer.isBPSEnabled()).to.be.equal(false); + + var tx = await ctControlDeployer.toggleBPS(); + var rcpt = await tx.wait(); + expect(await ctControlDeployer.isBPSEnabled()).to.be.equal(true); + + var tx = await ctControlDeployer.toggleBPS(); + var rcpt = await tx.wait(); + expect(await ctControlDeployer.isBPSEnabled()).to.be.equal(false); + + var tx = await ctControlDeployer.toggleBPS(); + var rcpt = await tx.wait(); + expect(await ctControlDeployer.isBPSEnabled()).to.be.equal(true); + }); + }); + describe("setBPS", async () => { + // BPS720, + // FRLB720, + // FRUB720, + // TAG720, + // BPS1080, + // FRLB1080, + // FRUB1080, + // TAG1080, + it("Should revert if caller not role", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctControlClient1, amMain, client1 } = result; + + await expect(ctControlClient1.setBPS(BPS720, FRLB720, FRUB720, TAG720)) + .to.be.reverted; + }); + it("Should set BPS", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctControlDeployer, amMain, client1 } = result; + + expect(await ctControlDeployer.getBPSSize()).to.be.equal(0); + for (let i = 0; i < TAG720.length; i++) { + const tag = TAG720[i]; + const [bps_, frlb_, frub_] = await ctControlDeployer.getBPSData(tag); + expect(bps_).to.be.equal(0); + expect(frlb_).to.be.equal(0); + expect(frub_).to.be.equal(0); + } + + var tx = await ctControlDeployer.setBPS( + BPS720, + FRLB720, + FRUB720, + TAG720 + ); + var rcpt = await tx.wait(); + + expect(await ctControlDeployer.getBPSSize()).to.be.equal(TAG720.length); + for (let i = 0; i < TAG720.length; i++) { + const tag = TAG720[i]; + const bps = BPS720[i]; + const frlb = FRLB720[i]; + const frub = FRUB720[i]; + const [bps_, frlb_, frub_] = await ctControlDeployer.getBPSData(tag); + expect(bps_).to.be.equal(bps); + expect(frlb_).to.be.equal(frlb); + expect(frub_).to.be.equal(frub); + } + + var tx = await ctControlDeployer.setBPS( + BPS1080, + FRLB1080, + FRUB1080, + TAG1080 + ); + var rcpt = await tx.wait(); + + expect(await ctControlDeployer.getBPSSize()).to.be.equal( + TAG720.length + TAG1080.length + ); + var start = TAG720.at(0); + for (let i = start ?? 0; i < TAG720.length; i++) { + const tag = TAG720[i]; + const bps = BPS720[i]; + const frlb = FRLB720[i]; + const frub = FRUB720[i]; + const [bps_, frlb_, frub_] = await ctControlDeployer.getBPSData(tag); + expect(bps_).to.be.equal(bps); + expect(frlb_).to.be.equal(frlb); + expect(frub_).to.be.equal(frub); + } + var start = TAG1080.at(0); + for (let i = start ?? 6; i < TAG1080.length; i++) { + const tag = TAG1080[i]; + const bps = BPS1080[i]; + const frlb = FRLB1080[i]; + const frub = FRUB1080[i]; + const [bps_, frlb_, frub_] = await ctControlDeployer.getBPSData(tag); + expect(bps_).to.be.equal(bps); + expect(frlb_).to.be.equal(frlb); + expect(frub_).to.be.equal(frub); + } + }); + }); + describe("clearBPS", async () => { + it("Should revert if caller not role", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctControlClient1, amMain, client1 } = result; + await expect(ctControlClient1.clearBPS()).to.be.reverted; + }); + it("Should clear BPS", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctControlDeployer, amMain, client1 } = result; + + expect(await ctControlDeployer.getBPSSize()).to.be.equal(0); + for (let i = 0; i < TAG720.length; i++) { + const tag = TAG720[i]; + const [bps_, frlb_, frub_] = await ctControlDeployer.getBPSData(tag); + expect(bps_).to.be.equal(0); + expect(frlb_).to.be.equal(0); + expect(frub_).to.be.equal(0); + } + + var tx = await ctControlDeployer.setBPS( + BPS720, + FRLB720, + FRUB720, + TAG720 + ); + var rcpt = await tx.wait(); + + expect(await ctControlDeployer.getBPSSize()).to.be.equal(TAG720.length); + for (let i = 0; i < TAG720.length; i++) { + const tag = TAG720[i]; + const bps = BPS720[i]; + const frlb = FRLB720[i]; + const frub = FRUB720[i]; + const [bps_, frlb_, frub_] = await ctControlDeployer.getBPSData(tag); + expect(bps_).to.be.equal(bps); + expect(frlb_).to.be.equal(frlb); + expect(frub_).to.be.equal(frub); + } + + var tx = await ctControlDeployer.clearBPS(); + var rcpt = await tx.wait(); + + expect(await ctControlDeployer.getBPSSize()).to.be.equal(0); + for (let i = 0; i < TAG720.length; i++) { + const tag = TAG720[i]; + const [bps_, frlb_, frub_] = await ctControlDeployer.getBPSData(tag); + expect(bps_).to.be.equal(0); + expect(frlb_).to.be.equal(0); + expect(frub_).to.be.equal(0); + } + + var tx = await ctControlDeployer.setBPS( + BPS1080, + FRLB1080, + FRUB1080, + TAG1080 + ); + var rcpt = await tx.wait(); + var tx = await ctControlDeployer.setBPS( + BPS720, + FRLB720, + FRUB720, + TAG720 + ); + var rcpt = await tx.wait(); + + expect(await ctControlDeployer.getBPSSize()).to.be.equal( + TAG720.length + TAG1080.length + ); + var start = TAG1080.at(0); + for (let i = start ?? 0; i < TAG1080.length; i++) { + const tag = TAG1080[i]; + const bps = BPS1080[i]; + const frlb = FRLB1080[i]; + const frub = FRUB1080[i]; + const [bps_, frlb_, frub_] = await ctControlDeployer.getBPSData(tag); + expect(bps_).to.be.equal(bps); + expect(frlb_).to.be.equal(frlb); + expect(frub_).to.be.equal(frub); + } + var start = TAG720.at(0); + for (let i = start ?? 6; i < TAG720.length; i++) { + const tag = TAG720[i]; + const bps = BPS720[i]; + const frlb = FRLB720[i]; + const frub = FRUB720[i]; + const [bps_, frlb_, frub_] = await ctControlDeployer.getBPSData(tag); + expect(bps_).to.be.equal(bps); + expect(frlb_).to.be.equal(frlb); + expect(frub_).to.be.equal(frub); + } + }); + }); + describe("setSBPS", async () => { + it("Should revert if caller not role", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctControlClient1, amMain, client1 } = result; + + await expect(ctControlClient1.setSBPS(4000, client1.address)).to.be + .reverted; + }); + it("Should set user as sbps", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctControlDeployer, amMain, client1 } = result; + + expect(await ctControlDeployer.getSBPS(client1.address)).to.be.equal(0); + + const value = 4000; + var tx = await ctControlDeployer.setSBPS(value, client1.address); + var rcpt = await tx.wait(); + + expect(await ctControlDeployer.getSBPS(client1.address)).to.be.equal( + value + ); + }); + }); + describe("depositAsset", async () => { + it("Should revert if supertoken not supported", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctControlClient1, amMain, client1 } = result; + + const supertoken = networkConfig[chainId]["addrDAIx"]; + const amount = ethers.utils.parseEther("3"); + await expect( + ctControlClient1.depositAsset(supertoken, amount) + ).to.be.revertedWithCustomError(ctControlClient1, "InvalidSuperToken"); + }); + it("Should increase supertoken balance", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctControlClient1, ctUSDCxClient1, amMain, client1 } = + result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const amount = ethers.utils.parseEther("3"); + + expect( + await ctControlClient1.getAssetUser(client1.address, supertokenUSDCx) + ).to.be.equal(0); + expect( + await ctControlClient1.getAssetUser(client1.address, supertokenDAIx) + ).to.be.equal(0); + + var tx = await ctUSDCxClient1.approve(amMain, amount); + var rcpt = await tx.wait(); + + var tx = (await ctControlClient1.depositAsset( + supertokenUSDCx, + amount + )) as any; + var rcpt = await tx.wait(); + + expect( + await ctControlClient1.getAssetUser(client1.address, supertokenUSDCx) + ).to.be.equal(amount); + expect( + await ctControlClient1.getAssetUser(client1.address, supertokenDAIx) + ).to.be.equal(0); + }); + }); + describe("withdrawAsset", async () => { + it("Should revert if insufficient assets", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctControlClient1, ctUSDCxClient1, amMain, client1 } = + result; + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const amt2 = ethers.utils.parseEther("100"); + + expect( + await ctControlClient1.getAssetUser(client1.address, supertokenUSDCx) + ).to.be.equal(0); + + await expect( + ctControlClient1.withdrawAsset(supertokenUSDCx, amt2) + ).to.be.revertedWithCustomError(ctControlClient1, "InsufficientAssets"); + + expect( + await ctControlClient1.getAssetUser(client1.address, supertokenUSDCx) + ).to.be.equal(0); + }); + it("Should decrease app balance and withdraw to EOA", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctControlClient1, ctUSDCxClient1, amMain, client1 } = + result; + + const bal1 = await ctUSDCxClient1.balanceOf(client1.address); + + const amount = ethers.utils.parseEther("1000"); + await investToApp(chainId, amMain, client1, amount); + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + expect( + await ctControlClient1.getAssetUser(client1.address, supertokenUSDCx) + ).to.be.equal(amount); + + const bal2 = await ctUSDCxClient1.balanceOf(client1.address); + expect(bal2).to.be.equal(bal1.sub(amount)); + + const amt2 = ethers.utils.parseEther("100"); + var tx = await ctControlClient1.withdrawAsset(supertokenUSDCx, amt2); + var rcpt = await tx.wait(); + + expect( + await ctControlClient1.getAssetUser(client1.address, supertokenUSDCx) + ).to.be.equal(amount.sub(amt2)); + + const bal3 = await ctUSDCxClient1.balanceOf(client1.address); + expect(bal3).to.be.equal(bal2.add(amt2)); + }); + }); + describe("getAssetTotal", async () => { + it("Should get total asset from all users", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctControlDeployer, + ctControlClient1, + ctUSDCxClient1, + amMain, + client1, + client2, + } = result; + + const ctControlClient2 = await ethers.getContractAt( + "Control", + amMain, + client2 + ); + const ctUSDCxClient2 = await ethers.getContractAt( + ABI_SUPERTOKEN, + networkConfig[chainId]["addrUSDCx"], + client2 + ); + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + + expect( + await ctControlClient1.getAssetUser(client1.address, supertokenUSDCx) + ).to.be.equal(0); + expect( + await ctControlClient2.getAssetUser(client2.address, supertokenUSDCx) + ).to.be.equal(0); + expect( + await ctControlDeployer.getAssetTotal(supertokenUSDCx) + ).to.be.equal(0); + + const amount = ethers.utils.parseEther("100"); + + var tx = await ctUSDCxClient1.approve(amMain, amount); + var rcpt = await tx.wait(); + + var tx = (await ctControlClient1.depositAsset( + supertokenUSDCx, + amount + )) as any; + var rcpt = await tx.wait(); + + var tx = await ctUSDCxClient2.approve(amMain, amount); + var rcpt = await tx.wait(); + + var tx = (await ctControlClient2.depositAsset( + supertokenUSDCx, + amount + )) as any; + var rcpt = await tx.wait(); + + expect( + await ctControlClient1.getAssetUser(client1.address, supertokenUSDCx) + ).to.be.equal(amount); + expect( + await ctControlClient2.getAssetUser(client2.address, supertokenUSDCx) + ).to.be.equal(amount); + expect( + await ctControlDeployer.getAssetTotal(supertokenUSDCx) + ).to.be.equal(amount.mul(2)); + }); + }); + describe("isNewFlowRateAllowed", async () => { + it("Should be false if app insufficient supertoken funds", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctControlDeployer, + ctControlClient1, + ctUSDCxClient1, + amMain, + client1, + client2, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + + const flowRate = ethers.utils.parseEther("0.0001"); + expect( + await ctControlDeployer.isNewFlowRateAllowed( + supertokenUSDCx, + flowRate + ) + ).to.be.equal(false); + expect(await ctUSDCxClient1.balanceOf(amMain)).to.be.equal(0); + + const amt = ethers.utils.parseEther("100"); + await investToApp(chainId, amMain, client1, amt); + + expect( + await ctControlDeployer.isNewFlowRateAllowed( + supertokenUSDCx, + flowRate + ) + ).to.be.equal(true); + expect(await ctUSDCxClient1.balanceOf(amMain)).to.be.equal(amt); + }); + }); + describe("app fee balance", async () => { + it("Should update control record states when flow is open", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctCFAV1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + ctGelatoAutoBot, + amMain, + client1, + worker1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.01"); + const flowRateDAIx = ethers.utils.parseEther("0.02"); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const amountInvest = ethers.utils.parseEther("100"); + await investToApp(chainId, amMain, client1, amountInvest); + + const ctSessionWorker1 = await ethers.getContractAt( + "Session", + amMain, + worker1 + ); + + var tx = await ctSessionWorker1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + + const minEndDuration = await ctControlDeployer.getMinimumEndDuration(); + const minLifespan = await ctControlDeployer.getMinimumLifespan(); + const amount = ethers.utils.parseEther("600"); + var tx = (await ctUSDCxClient1.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient1.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var [receiver, sesNonce, tsIncrease, tsDecrease] = + await ctControlDeployer.getControlData(supertokenUSDCx, 0); + expect(receiver).to.be.equal(ethers.constants.AddressZero); + expect(sesNonce).to.be.equal(0); + expect(tsIncrease).to.be.equal(0); + expect(tsDecrease).to.be.equal(0); + expect( + await ctControlDeployer.getNewControlNonce(supertokenUSDCx) + ).to.be.equal(0); + expect( + await ctControlDeployer.getNewControlNonce(supertokenDAIx) + ).to.be.equal(0); + + const lifespan = minEndDuration.add(minLifespan); + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + const now1 = await time.latest(); + + var [receiver, sesNonce, tsIncrease, tsDecrease] = + await ctControlDeployer.getControlData(supertokenUSDCx, 0); + expect(receiver).to.be.equal(worker1.address); + expect(sesNonce).to.be.equal(0); + expect(tsIncrease).to.be.equal(now1); + expect(tsDecrease).to.be.equal(0); + expect( + await ctControlDeployer.getNewControlNonce(supertokenUSDCx) + ).to.be.equal(1); + expect( + await ctControlDeployer.getNewControlNonce(supertokenDAIx) + ).to.be.equal(0); + }); + it("Should update control record states when flow is closed manually", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctCFAV1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + ctGelatoAutoBot, + amMain, + client1, + worker1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.01"); + const flowRateDAIx = ethers.utils.parseEther("0.02"); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const amountInvest = ethers.utils.parseEther("100"); + await investToApp(chainId, amMain, client1, amountInvest); + + const ctSessionWorker1 = await ethers.getContractAt( + "Session", + amMain, + worker1 + ); + + var tx = await ctSessionWorker1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + + const minEndDuration = await ctControlDeployer.getMinimumEndDuration(); + const minLifespan = await ctControlDeployer.getMinimumLifespan(); + const amount = ethers.utils.parseEther("600"); + var tx = (await ctUSDCxClient1.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient1.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + const lifespan = minEndDuration.add(minLifespan); + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + const now1 = await time.latest(); + + await time.increase(minLifespan.toNumber()); + + var tx = await ctFlowClient1.closeFlow(supertokenUSDCx, 0); + var rcpt = await tx.wait(); + const now2 = await time.latest(); + + var [receiver, sesNonce, tsIncrease, tsDecrease] = + await ctControlDeployer.getControlData(supertokenUSDCx, 0); + expect(receiver).to.be.equal(worker1.address); + expect(sesNonce).to.be.equal(0); + expect(tsIncrease).to.be.equal(now1); + expect(tsDecrease).to.be.equal(now2); + expect( + await ctControlDeployer.getNewControlNonce(supertokenUSDCx) + ).to.be.equal(1); + }); + it("Should update control record states when flow is closed automatically", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctCFAV1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + ctGelatoAutoBot, + amMain, + gelatoExecutor, + client1, + worker1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.01"); + const flowRateDAIx = ethers.utils.parseEther("0.02"); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const amountInvest = ethers.utils.parseEther("100"); + await investToApp(chainId, amMain, client1, amountInvest); + + const ctSessionWorker1 = await ethers.getContractAt( + "Session", + amMain, + worker1 + ); + + var tx = await ctSessionWorker1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + + const minEndDuration = await ctControlDeployer.getMinimumEndDuration(); + const minLifespan = await ctControlDeployer.getMinimumLifespan(); + const amount = ethers.utils.parseEther("600"); + var tx = (await ctUSDCxClient1.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient1.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + const lifespan = minEndDuration.add(minLifespan).toNumber(); + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + const now1 = await time.latest(); + var rc = await ethers.provider.getTransactionReceipt( + rcpt.transactionHash + ); + var block = await ethers.provider.getBlock(rc.blockNumber); + var startTime = block.timestamp; + + var execData = ctFlowClient1.interface.encodeFunctionData( + "decreaseFlow", + [supertokenUSDCx, client1.address, worker1.address, 0, flowRateUSDCx] + ); + var timeArgs = encodeTimeArgs(startTime + lifespan, lifespan); + var moduleData = { + modules: [1, 3], + args: [timeArgs], + }; + + await time.increase(lifespan); + + await ctGelatoAutoBot + .connect(gelatoExecutor) + .exec( + amMain, + amMain, + execData, + moduleData, + GELATO_FEE, + amGelatoFee, + true, + true + ); + const tsDecreaseFlow = await time.latest(); + + var [receiver, sesNonce, tsIncrease, tsDecrease] = + await ctControlDeployer.getControlData(supertokenUSDCx, 0); + expect(receiver).to.be.equal(worker1.address); + expect(sesNonce).to.be.equal(0); + expect(tsIncrease).to.be.equal(now1); + expect(tsDecrease).to.be.equal(tsDecreaseFlow); + expect( + await ctControlDeployer.getNewControlNonce(supertokenUSDCx) + ).to.be.equal(1); + }); + describe("realizeFeeBalance", async () => { + it("Should do nothing if `count` param is 0", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctCFAV1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + ctGelatoAutoBot, + amMain, + client1, + worker1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.01"); + const flowRateDAIx = ethers.utils.parseEther("0.02"); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const amountInvest = ethers.utils.parseEther("100"); + await investToApp(chainId, amMain, client1, amountInvest); + + const ctSessionWorker1 = await ethers.getContractAt( + "Session", + amMain, + worker1 + ); + + var tx = await ctSessionWorker1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + + const minEndDuration = + await ctControlDeployer.getMinimumEndDuration(); + const minLifespan = await ctControlDeployer.getMinimumLifespan(); + const amount = ethers.utils.parseEther("600"); + var tx = (await ctUSDCxClient1.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient1.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + const lifespan = minEndDuration.add(minLifespan).toNumber(); + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + const now1 = await time.latest(); + + await time.increase(lifespan); + + var tx = await ctFlowClient1.closeFlow(supertokenUSDCx, 0); + var rcpt = await tx.wait(); + const now2 = await time.latest(); + + expect( + await ctControlDeployer.getFeeBalance(supertokenUSDCx) + ).to.be.equal(0); + + var tx = await ctControlDeployer.realizeFeeBalance( + 0, + supertokenUSDCx + ); + var rcpt = await tx.wait(); + + expect( + await ctControlDeployer.getFeeBalance(supertokenUSDCx) + ).to.be.equal(0); + }); + it("Should do nothing if bps is not enabled or set or no sbps", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctCFAV1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + ctGelatoAutoBot, + amMain, + client1, + worker1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.01"); + const flowRateDAIx = ethers.utils.parseEther("0.02"); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const amountInvest = ethers.utils.parseEther("100"); + await investToApp(chainId, amMain, client1, amountInvest); + + const ctSessionWorker1 = await ethers.getContractAt( + "Session", + amMain, + worker1 + ); + + var tx = await ctSessionWorker1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + + const minEndDuration = + await ctControlDeployer.getMinimumEndDuration(); + const minLifespan = await ctControlDeployer.getMinimumLifespan(); + const amount = ethers.utils.parseEther("600"); + var tx = (await ctUSDCxClient1.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient1.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + const lifespan = minEndDuration.add(minLifespan).toNumber() + 5; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + const now1 = await time.latest(); + + await time.increase(lifespan); + + var tx = await ctFlowClient1.closeFlow(supertokenUSDCx, 0); + var rcpt = await tx.wait(); + const now2 = await time.latest(); + + expect( + await ctControlDeployer.getFeeBalance(supertokenUSDCx) + ).to.be.equal(0); + + var tx = await ctControlDeployer.realizeFeeBalance( + 1, + supertokenUSDCx + ); + var rcpt = await tx.wait(); + + expect( + await ctControlDeployer.getFeeBalance(supertokenUSDCx) + ).to.be.equal(0); + }); + it("Should realize the correct amount of fee balance", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctCFAV1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + ctGelatoAutoBot, + amMain, + gelatoExecutor, + client1, + worker1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.00023"); + const flowRateDAIx = ethers.utils.parseEther("0.02"); + + const tx720 = await ctControlDeployer.setBPS( + BPS720, + FRLB720, + FRUB720, + TAG720 + ); + const rcpt720 = await tx720.wait(); + const tx1 = await ctControlDeployer.toggleBPS(); + const rcpt1 = await tx1.wait(); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const amountInvest = ethers.utils.parseEther("100"); + await investToApp(chainId, amMain, client1, amountInvest); + + const ctSessionWorker1 = await ethers.getContractAt( + "Session", + amMain, + worker1 + ); + + var tx = await ctSessionWorker1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + + const minEndDuration = + await ctControlDeployer.getMinimumEndDuration(); + const minLifespan = await ctControlDeployer.getMinimumLifespan(); + const amount = ethers.utils.parseEther("600"); + var tx = (await ctUSDCxClient1.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient1.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + const lifespan = minEndDuration.add(minLifespan).toNumber() + 5; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + const now1 = await time.latest(); + + await time.increase(lifespan); + + var tx = await ctFlowClient1.closeFlow(supertokenUSDCx, 0); + var rcpt = await tx.wait(); + const now2 = await time.latest(); + + expect( + await ctControlDeployer.getFeeBalance(supertokenUSDCx) + ).to.be.equal(0); + + var tx = await ctControlDeployer.realizeFeeBalance( + 1, + supertokenUSDCx + ); + var rcpt = await tx.wait(); + + var [receiver, sesNonce, tsIncrease, tsDecrease] = + await ctControlDeployer.getControlData(supertokenUSDCx, 0); + var [eFlowRate, flowRate, tsStart, tsStop] = + await ctSessionClient1.getSessionData( + receiver, + supertokenUSDCx, + sesNonce + ); + var amountFee = flowRate + .sub(eFlowRate) + .mul(tsDecrease.sub(tsIncrease)); + + expect( + await ctControlDeployer.getFeeBalance(supertokenUSDCx) + ).to.be.equal(amountFee); + }); + it("Should realize the correct amount of fee balance - multi count", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctCFAV1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + ctGelatoAutoBot, + amMain, + gelatoExecutor, + client1, + worker1, + worker2, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.00023"); + const flowRateDAIx = ethers.utils.parseEther("0.02"); + + const tx720 = await ctControlDeployer.setBPS( + BPS720, + FRLB720, + FRUB720, + TAG720 + ); + const rcpt720 = await tx720.wait(); + const tx1 = await ctControlDeployer.toggleBPS(); + const rcpt1 = await tx1.wait(); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const amountInvest = ethers.utils.parseEther("100"); + await investToApp(chainId, amMain, client1, amountInvest); + + const ctSessionWorker1 = await ethers.getContractAt( + "Session", + amMain, + worker1 + ); + + var tx = await ctSessionWorker1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + + const minEndDuration = + await ctControlDeployer.getMinimumEndDuration(); + const minLifespan = await ctControlDeployer.getMinimumLifespan(); + const amount = ethers.utils.parseEther("600"); + var tx = (await ctUSDCxClient1.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient1.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + const lifespan1 = minEndDuration.add(minLifespan).toNumber() + 5; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan1 + ); + var rcpt = await tx.wait(); + const now1 = await time.latest(); + + await time.increase(minLifespan.toNumber()); + + var tx = await ctFlowClient1.closeFlow(supertokenUSDCx, 0); + var rcpt = await tx.wait(); + const now2 = await time.latest(); + + const lifespan2 = minEndDuration.add(minLifespan).toNumber() + 100; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan2 + ); + var rcpt = await tx.wait(); + const now3 = await time.latest(); + var rc = await ethers.provider.getTransactionReceipt( + rcpt.transactionHash + ); + var block = await ethers.provider.getBlock(rc.blockNumber); + var startTime = block.timestamp; + + var execData = ctFlowClient1.interface.encodeFunctionData( + "decreaseFlow", + [ + supertokenUSDCx, + client1.address, + worker1.address, + 1, + flowRateUSDCx, + ] + ); + var timeArgs = encodeTimeArgs(startTime + lifespan2, lifespan2); + var moduleData = { + modules: [1, 3], + args: [timeArgs], + }; + + await time.increase( + minEndDuration.add(minLifespan).toNumber() + 100 - 1 + ); + + await ctGelatoAutoBot + .connect(gelatoExecutor) + .exec( + amMain, + amMain, + execData, + moduleData, + GELATO_FEE, + amGelatoFee, + true, + true + ); + const now4 = await time.latest(); + + const lifespan3 = minEndDuration.add(minLifespan).toNumber() + 20; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan3 + ); + var rcpt = await tx.wait(); + const now5 = await time.latest(); + + await time.increase(minLifespan.toNumber() - 1); + + var tx = await ctFlowClient1.closeFlow(supertokenUSDCx, 2); + var rcpt = await tx.wait(); + const now6 = await time.latest(); + + expect( + await ctControlDeployer.getFeeBalance(supertokenUSDCx) + ).to.be.equal(0); + + var tx = await ctControlDeployer.realizeFeeBalance( + 3, + supertokenUSDCx + ); + var rcpt = await tx.wait(); + + var [receiver, sesNonce, tsIncrease, tsDecrease] = + await ctControlDeployer.getControlData(supertokenUSDCx, 0); + var [eFlowRate, flowRate, tsStart, tsStop] = + await ctSessionClient1.getSessionData( + receiver, + supertokenUSDCx, + sesNonce + ); + const amountFee1 = flowRate + .sub(eFlowRate) + .mul(tsDecrease.sub(tsIncrease)); + + var [receiver, sesNonce, tsIncrease, tsDecrease] = + await ctControlDeployer.getControlData(supertokenUSDCx, 1); + var [eFlowRate, flowRate, tsStart, tsStop] = + await ctSessionClient1.getSessionData( + receiver, + supertokenUSDCx, + sesNonce + ); + + const amountFee2 = flowRate + .sub(eFlowRate) + .mul(tsDecrease.sub(tsIncrease)); + + var [receiver, sesNonce, tsIncrease, tsDecrease] = + await ctControlDeployer.getControlData(supertokenUSDCx, 2); + var [eFlowRate, flowRate, tsStart, tsStop] = + await ctSessionClient1.getSessionData( + receiver, + supertokenUSDCx, + sesNonce + ); + + const amountFee3 = flowRate + .sub(eFlowRate) + .mul(tsDecrease.sub(tsIncrease)); + + expect( + await ctControlDeployer.getFeeBalance(supertokenUSDCx) + ).to.be.equal(amountFee1.add(amountFee2).add(amountFee3)); + }); + it("Should realize the correct amount of fee balance - called twice", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctCFAV1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + ctGelatoAutoBot, + amMain, + gelatoExecutor, + client1, + worker1, + worker2, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.00023"); + const flowRateDAIx = ethers.utils.parseEther("0.02"); + + const tx720 = await ctControlDeployer.setBPS( + BPS720, + FRLB720, + FRUB720, + TAG720 + ); + const rcpt720 = await tx720.wait(); + const tx1 = await ctControlDeployer.toggleBPS(); + const rcpt1 = await tx1.wait(); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const amountInvest = ethers.utils.parseEther("100"); + await investToApp(chainId, amMain, client1, amountInvest); + + const ctSessionWorker1 = await ethers.getContractAt( + "Session", + amMain, + worker1 + ); + + var tx = await ctSessionWorker1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + + const minEndDuration = + await ctControlDeployer.getMinimumEndDuration(); + const minLifespan = await ctControlDeployer.getMinimumLifespan(); + const amount = ethers.utils.parseEther("600"); + var tx = (await ctUSDCxClient1.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient1.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + const lifespan1 = minEndDuration.add(minLifespan).toNumber() + 5; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan1 + ); + var rcpt = await tx.wait(); + const now1 = await time.latest(); + + await time.increase(minLifespan.toNumber()); + + var tx = await ctFlowClient1.closeFlow(supertokenUSDCx, 0); + var rcpt = await tx.wait(); + const now2 = await time.latest(); + + const lifespan2 = minEndDuration.add(minLifespan).toNumber() + 100; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan2 + ); + var rcpt = await tx.wait(); + const now3 = await time.latest(); + var rc = await ethers.provider.getTransactionReceipt( + rcpt.transactionHash + ); + var block = await ethers.provider.getBlock(rc.blockNumber); + var startTime = block.timestamp; + + var execData = ctFlowClient1.interface.encodeFunctionData( + "decreaseFlow", + [ + supertokenUSDCx, + client1.address, + worker1.address, + 1, + flowRateUSDCx, + ] + ); + var timeArgs = encodeTimeArgs(startTime + lifespan2, lifespan2); + var moduleData = { + modules: [1, 3], + args: [timeArgs], + }; + + await time.increase( + minEndDuration.add(minLifespan).toNumber() + 100 - 1 + ); + + await ctGelatoAutoBot + .connect(gelatoExecutor) + .exec( + amMain, + amMain, + execData, + moduleData, + GELATO_FEE, + amGelatoFee, + true, + true + ); + const now4 = await time.latest(); + + const lifespan3 = minEndDuration.add(minLifespan).toNumber() + 20; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan3 + ); + var rcpt = await tx.wait(); + const now5 = await time.latest(); + + await time.increase(minLifespan.toNumber() - 1); + + var tx = await ctFlowClient1.closeFlow(supertokenUSDCx, 2); + var rcpt = await tx.wait(); + const now6 = await time.latest(); + + expect( + await ctControlDeployer.getFeeBalance(supertokenUSDCx) + ).to.be.equal(0); + + var tx = await ctControlDeployer.realizeFeeBalance( + 1, + supertokenUSDCx + ); + var rcpt = await tx.wait(); + + var [receiver, sesNonce, tsIncrease, tsDecrease] = + await ctControlDeployer.getControlData(supertokenUSDCx, 0); + var [eFlowRate, flowRate, tsStart, tsStop] = + await ctSessionClient1.getSessionData( + receiver, + supertokenUSDCx, + sesNonce + ); + const amountFee1 = flowRate + .sub(eFlowRate) + .mul(tsDecrease.sub(tsIncrease)); + + expect( + await ctControlDeployer.getFeeBalance(supertokenUSDCx) + ).to.be.equal(amountFee1); + + var tx = await ctControlDeployer.realizeFeeBalance( + 2, + supertokenUSDCx + ); + var rcpt = await tx.wait(); + + var [receiver, sesNonce, tsIncrease, tsDecrease] = + await ctControlDeployer.getControlData(supertokenUSDCx, 1); + var [eFlowRate, flowRate, tsStart, tsStop] = + await ctSessionClient1.getSessionData( + receiver, + supertokenUSDCx, + sesNonce + ); + + const amountFee2 = flowRate + .sub(eFlowRate) + .mul(tsDecrease.sub(tsIncrease)); + + var [receiver, sesNonce, tsIncrease, tsDecrease] = + await ctControlDeployer.getControlData(supertokenUSDCx, 2); + var [eFlowRate, flowRate, tsStart, tsStop] = + await ctSessionClient1.getSessionData( + receiver, + supertokenUSDCx, + sesNonce + ); + + const amountFee3 = flowRate + .sub(eFlowRate) + .mul(tsDecrease.sub(tsIncrease)); + + expect( + await ctControlDeployer.getFeeBalance(supertokenUSDCx) + ).to.be.equal(amountFee1.add(amountFee2).add(amountFee3)); + }); + it("Should realize the correct amount of fee balance even after revert in realization call before", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctCFAV1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + ctGelatoAutoBot, + amMain, + gelatoExecutor, + client1, + worker1, + worker2, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.00023"); + const flowRateDAIx = ethers.utils.parseEther("0.02"); + + const tx720 = await ctControlDeployer.setBPS( + BPS720, + FRLB720, + FRUB720, + TAG720 + ); + const rcpt720 = await tx720.wait(); + const tx1 = await ctControlDeployer.toggleBPS(); + const rcpt1 = await tx1.wait(); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const amountInvest = ethers.utils.parseEther("100"); + await investToApp(chainId, amMain, client1, amountInvest); + + const ctSessionWorker1 = await ethers.getContractAt( + "Session", + amMain, + worker1 + ); + + var tx = await ctSessionWorker1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + + const minEndDuration = + await ctControlDeployer.getMinimumEndDuration(); + const minLifespan = await ctControlDeployer.getMinimumLifespan(); + const amount = ethers.utils.parseEther("600"); + var tx = (await ctUSDCxClient1.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient1.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + const lifespan1 = minEndDuration.add(minLifespan).toNumber() + 5; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan1 + ); + var rcpt = await tx.wait(); + const now1 = await time.latest(); + + await time.increase(minLifespan.toNumber()); + + var tx = await ctFlowClient1.closeFlow(supertokenUSDCx, 0); + var rcpt = await tx.wait(); + const now2 = await time.latest(); + + const lifespan2 = minEndDuration.add(minLifespan).toNumber() + 100; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan2 + ); + var rcpt = await tx.wait(); + const now3 = await time.latest(); + var rc = await ethers.provider.getTransactionReceipt( + rcpt.transactionHash + ); + var block = await ethers.provider.getBlock(rc.blockNumber); + var startTime = block.timestamp; + + var execData = ctFlowClient1.interface.encodeFunctionData( + "decreaseFlow", + [ + supertokenUSDCx, + client1.address, + worker1.address, + 1, + flowRateUSDCx, + ] + ); + var timeArgs = encodeTimeArgs(startTime + lifespan2, lifespan2); + var moduleData = { + modules: [1, 3], + args: [timeArgs], + }; + + await time.increase( + minEndDuration.add(minLifespan).toNumber() + 100 - 1 + ); + + await ctGelatoAutoBot + .connect(gelatoExecutor) + .exec( + amMain, + amMain, + execData, + moduleData, + GELATO_FEE, + amGelatoFee, + true, + true + ); + const now4 = await time.latest(); + + const lifespan3 = minEndDuration.add(minLifespan).toNumber() + 20; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan3 + ); + var rcpt = await tx.wait(); + const now5 = await time.latest(); + + await time.increase(minLifespan.toNumber() - 1); + + var tx = await ctFlowClient1.closeFlow(supertokenUSDCx, 2); + var rcpt = await tx.wait(); + const now6 = await time.latest(); + + expect( + await ctControlDeployer.getFeeBalance(supertokenUSDCx) + ).to.be.equal(0); + + var tx = await ctControlDeployer.realizeFeeBalance( + 1, + supertokenUSDCx + ); + var rcpt = await tx.wait(); + + var [receiver, sesNonce, tsIncrease, tsDecrease] = + await ctControlDeployer.getControlData(supertokenUSDCx, 0); + var [eFlowRate, flowRate, tsStart, tsStop] = + await ctSessionClient1.getSessionData( + receiver, + supertokenUSDCx, + sesNonce + ); + const amountFee1 = flowRate + .sub(eFlowRate) + .mul(tsDecrease.sub(tsIncrease)); + + expect( + await ctControlDeployer.getFeeBalance(supertokenUSDCx) + ).to.be.equal(amountFee1); + + var tx = await ctControlDeployer.realizeFeeBalance( + 2, + supertokenUSDCx + ); + var rcpt = await tx.wait(); + + var [receiver, sesNonce, tsIncrease, tsDecrease] = + await ctControlDeployer.getControlData(supertokenUSDCx, 1); + var [eFlowRate, flowRate, tsStart, tsStop] = + await ctSessionClient1.getSessionData( + receiver, + supertokenUSDCx, + sesNonce + ); + + const amountFee2 = flowRate + .sub(eFlowRate) + .mul(tsDecrease.sub(tsIncrease)); + + var [receiver, sesNonce, tsIncrease, tsDecrease] = + await ctControlDeployer.getControlData(supertokenUSDCx, 2); + var [eFlowRate, flowRate, tsStart, tsStop] = + await ctSessionClient1.getSessionData( + receiver, + supertokenUSDCx, + sesNonce + ); + + const amountFee3 = flowRate + .sub(eFlowRate) + .mul(tsDecrease.sub(tsIncrease)); + + expect( + await ctControlDeployer.getFeeBalance(supertokenUSDCx) + ).to.be.equal(amountFee1.add(amountFee2).add(amountFee3)); + + await expect( + ctControlDeployer.realizeFeeBalance(1, supertokenUSDCx) + ).to.be.revertedWithCustomError(ctControlDeployer, "ContractError"); + + const lifespan4 = minEndDuration.add(minLifespan).toNumber() + 7; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan4 + ); + var rcpt = await tx.wait(); + const now7 = await time.latest(); + + await time.increase(minLifespan.toNumber()); + + var tx = await ctFlowClient1.closeFlow(supertokenUSDCx, 3); + var rcpt = await tx.wait(); + const now8 = await time.latest(); + + var tx = await ctControlDeployer.realizeFeeBalance( + 1, + supertokenUSDCx + ); + var rcpt = await tx.wait(); + + var [receiver, sesNonce, tsIncrease, tsDecrease] = + await ctControlDeployer.getControlData(supertokenUSDCx, 3); + var [eFlowRate, flowRate, tsStart, tsStop] = + await ctSessionClient1.getSessionData( + receiver, + supertokenUSDCx, + sesNonce + ); + + const amountFee4 = flowRate + .sub(eFlowRate) + .mul(tsDecrease.sub(tsIncrease)); + + expect( + await ctControlDeployer.getFeeBalance(supertokenUSDCx) + ).to.be.equal( + amountFee1.add(amountFee2).add(amountFee3).add(amountFee4) + ); + }); + it("Should revert if realize count has active flow", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctCFAV1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + ctGelatoAutoBot, + amMain, + gelatoExecutor, + client1, + worker1, + worker2, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.00023"); + const flowRateDAIx = ethers.utils.parseEther("0.02"); + + const tx720 = await ctControlDeployer.setBPS( + BPS720, + FRLB720, + FRUB720, + TAG720 + ); + const rcpt720 = await tx720.wait(); + const tx1 = await ctControlDeployer.toggleBPS(); + const rcpt1 = await tx1.wait(); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const amountInvest = ethers.utils.parseEther("100"); + await investToApp(chainId, amMain, client1, amountInvest); + + const ctSessionWorker1 = await ethers.getContractAt( + "Session", + amMain, + worker1 + ); + + var tx = await ctSessionWorker1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + + const minEndDuration = + await ctControlDeployer.getMinimumEndDuration(); + const minLifespan = await ctControlDeployer.getMinimumLifespan(); + const amount = ethers.utils.parseEther("600"); + var tx = (await ctUSDCxClient1.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient1.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + const lifespan1 = minEndDuration.add(minLifespan).toNumber() + 5; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan1 + ); + var rcpt = await tx.wait(); + const now1 = await time.latest(); + + await time.increase(minLifespan.toNumber()); + + var tx = await ctFlowClient1.closeFlow(supertokenUSDCx, 0); + var rcpt = await tx.wait(); + const now2 = await time.latest(); + + const lifespan2 = minEndDuration.add(minLifespan).toNumber() + 100; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan2 + ); + var rcpt = await tx.wait(); + const now3 = await time.latest(); + var rc = await ethers.provider.getTransactionReceipt( + rcpt.transactionHash + ); + var block = await ethers.provider.getBlock(rc.blockNumber); + var startTime = block.timestamp; + + var execData = ctFlowClient1.interface.encodeFunctionData( + "decreaseFlow", + [ + supertokenUSDCx, + client1.address, + worker1.address, + 1, + flowRateUSDCx, + ] + ); + var timeArgs = encodeTimeArgs(startTime + lifespan2, lifespan2); + var moduleData = { + modules: [1, 3], + args: [timeArgs], + }; + + await time.increase( + minEndDuration.add(minLifespan).toNumber() + 100 - 1 + ); + + await ctGelatoAutoBot + .connect(gelatoExecutor) + .exec( + amMain, + amMain, + execData, + moduleData, + GELATO_FEE, + amGelatoFee, + true, + true + ); + const now4 = await time.latest(); + + const lifespan3 = minEndDuration.add(minLifespan).toNumber() + 20; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan3 + ); + var rcpt = await tx.wait(); + const now5 = await time.latest(); + + await time.increase(minLifespan.toNumber() - 1); + + var tx = await ctFlowClient1.closeFlow(supertokenUSDCx, 2); + var rcpt = await tx.wait(); + const now6 = await time.latest(); + + expect( + await ctControlDeployer.getFeeBalance(supertokenUSDCx) + ).to.be.equal(0); + + var tx = await ctControlDeployer.realizeFeeBalance( + 1, + supertokenUSDCx + ); + var rcpt = await tx.wait(); + + var [receiver, sesNonce, tsIncrease, tsDecrease] = + await ctControlDeployer.getControlData(supertokenUSDCx, 0); + var [eFlowRate, flowRate, tsStart, tsStop] = + await ctSessionClient1.getSessionData( + receiver, + supertokenUSDCx, + sesNonce + ); + const amountFee1 = flowRate + .sub(eFlowRate) + .mul(tsDecrease.sub(tsIncrease)); + + expect( + await ctControlDeployer.getFeeBalance(supertokenUSDCx) + ).to.be.equal(amountFee1); + + var tx = await ctControlDeployer.realizeFeeBalance( + 2, + supertokenUSDCx + ); + var rcpt = await tx.wait(); + + var [receiver, sesNonce, tsIncrease, tsDecrease] = + await ctControlDeployer.getControlData(supertokenUSDCx, 1); + var [eFlowRate, flowRate, tsStart, tsStop] = + await ctSessionClient1.getSessionData( + receiver, + supertokenUSDCx, + sesNonce + ); + + const amountFee2 = flowRate + .sub(eFlowRate) + .mul(tsDecrease.sub(tsIncrease)); + + var [receiver, sesNonce, tsIncrease, tsDecrease] = + await ctControlDeployer.getControlData(supertokenUSDCx, 2); + var [eFlowRate, flowRate, tsStart, tsStop] = + await ctSessionClient1.getSessionData( + receiver, + supertokenUSDCx, + sesNonce + ); + + const amountFee3 = flowRate + .sub(eFlowRate) + .mul(tsDecrease.sub(tsIncrease)); + + expect( + await ctControlDeployer.getFeeBalance(supertokenUSDCx) + ).to.be.equal(amountFee1.add(amountFee2).add(amountFee3)); + + const lifespan4 = minEndDuration.add(minLifespan).toNumber() + 7; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan4 + ); + var rcpt = await tx.wait(); + const now7 = await time.latest(); + + await time.increase(minLifespan.toNumber()); + + var tx = await ctFlowClient1.closeFlow(supertokenUSDCx, 3); + var rcpt = await tx.wait(); + const now8 = await time.latest(); + + const lifespan5 = minEndDuration.add(minLifespan).toNumber() + 7; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan5 + ); + var rcpt = await tx.wait(); + const now9 = await time.latest(); + + await expect( + ctControlDeployer.realizeFeeBalance(2, supertokenUSDCx) + ).to.be.revertedWithCustomError(ctControlDeployer, "ContractError"); + + var tx = await ctControlDeployer.realizeFeeBalance( + 1, + supertokenUSDCx + ); + var rcpt = await tx.wait(); + + var [receiver, sesNonce, tsIncrease, tsDecrease] = + await ctControlDeployer.getControlData(supertokenUSDCx, 3); + var [eFlowRate, flowRate, tsStart, tsStop] = + await ctSessionClient1.getSessionData( + receiver, + supertokenUSDCx, + sesNonce + ); + + const amountFee4 = flowRate + .sub(eFlowRate) + .mul(tsDecrease.sub(tsIncrease)); + + expect( + await ctControlDeployer.getFeeBalance(supertokenUSDCx) + ).to.be.equal( + amountFee1.add(amountFee2).add(amountFee3).add(amountFee4) + ); + }); + it("Should realize even if have some old ended unrealize with some active flow as long as realize call not include active flow counts", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctCFAV1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + ctGelatoAutoBot, + amMain, + gelatoExecutor, + client1, + worker1, + worker2, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.00023"); + const flowRateDAIx = ethers.utils.parseEther("0.02"); + + const tx720 = await ctControlDeployer.setBPS( + BPS720, + FRLB720, + FRUB720, + TAG720 + ); + const rcpt720 = await tx720.wait(); + const tx1 = await ctControlDeployer.toggleBPS(); + const rcpt1 = await tx1.wait(); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const amountInvest = ethers.utils.parseEther("100"); + await investToApp(chainId, amMain, client1, amountInvest); + + const ctSessionWorker1 = await ethers.getContractAt( + "Session", + amMain, + worker1 + ); + + var tx = await ctSessionWorker1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + + const minEndDuration = + await ctControlDeployer.getMinimumEndDuration(); + const minLifespan = await ctControlDeployer.getMinimumLifespan(); + const amount = ethers.utils.parseEther("600"); + var tx = (await ctUSDCxClient1.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient1.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + const lifespan1 = minEndDuration.add(minLifespan).toNumber() + 5; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan1 + ); + var rcpt = await tx.wait(); + const now1 = await time.latest(); + + await time.increase(minLifespan.toNumber()); + + var tx = await ctFlowClient1.closeFlow(supertokenUSDCx, 0); + var rcpt = await tx.wait(); + const now2 = await time.latest(); + + const lifespan2 = minEndDuration.add(minLifespan).toNumber() + 100; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan2 + ); + var rcpt = await tx.wait(); + const now3 = await time.latest(); + var rc = await ethers.provider.getTransactionReceipt( + rcpt.transactionHash + ); + var block = await ethers.provider.getBlock(rc.blockNumber); + var startTime = block.timestamp; + + var execData = ctFlowClient1.interface.encodeFunctionData( + "decreaseFlow", + [ + supertokenUSDCx, + client1.address, + worker1.address, + 1, + flowRateUSDCx, + ] + ); + var timeArgs = encodeTimeArgs(startTime + lifespan2, lifespan2); + var moduleData = { + modules: [1, 3], + args: [timeArgs], + }; + + await time.increase( + minEndDuration.add(minLifespan).toNumber() + 100 - 1 + ); + + await ctGelatoAutoBot + .connect(gelatoExecutor) + .exec( + amMain, + amMain, + execData, + moduleData, + GELATO_FEE, + amGelatoFee, + true, + true + ); + const now4 = await time.latest(); + + const lifespan3 = minEndDuration.add(minLifespan).toNumber() + 20; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan3 + ); + var rcpt = await tx.wait(); + const now5 = await time.latest(); + + await time.increase(minLifespan.toNumber() - 1); + + var tx = await ctFlowClient1.closeFlow(supertokenUSDCx, 2); + var rcpt = await tx.wait(); + const now6 = await time.latest(); + + expect( + await ctControlDeployer.getFeeBalance(supertokenUSDCx) + ).to.be.equal(0); + + var tx = await ctControlDeployer.realizeFeeBalance( + 1, + supertokenUSDCx + ); + var rcpt = await tx.wait(); + + var [receiver, sesNonce, tsIncrease, tsDecrease] = + await ctControlDeployer.getControlData(supertokenUSDCx, 0); + var [eFlowRate, flowRate, tsStart, tsStop] = + await ctSessionClient1.getSessionData( + receiver, + supertokenUSDCx, + sesNonce + ); + const amountFee1 = flowRate + .sub(eFlowRate) + .mul(tsDecrease.sub(tsIncrease)); + + expect( + await ctControlDeployer.getFeeBalance(supertokenUSDCx) + ).to.be.equal(amountFee1); + + var tx = await ctControlDeployer.realizeFeeBalance( + 2, + supertokenUSDCx + ); + var rcpt = await tx.wait(); + + var [receiver, sesNonce, tsIncrease, tsDecrease] = + await ctControlDeployer.getControlData(supertokenUSDCx, 1); + var [eFlowRate, flowRate, tsStart, tsStop] = + await ctSessionClient1.getSessionData( + receiver, + supertokenUSDCx, + sesNonce + ); + + const amountFee2 = flowRate + .sub(eFlowRate) + .mul(tsDecrease.sub(tsIncrease)); + + var [receiver, sesNonce, tsIncrease, tsDecrease] = + await ctControlDeployer.getControlData(supertokenUSDCx, 2); + var [eFlowRate, flowRate, tsStart, tsStop] = + await ctSessionClient1.getSessionData( + receiver, + supertokenUSDCx, + sesNonce + ); + + const amountFee3 = flowRate + .sub(eFlowRate) + .mul(tsDecrease.sub(tsIncrease)); + + expect( + await ctControlDeployer.getFeeBalance(supertokenUSDCx) + ).to.be.equal(amountFee1.add(amountFee2).add(amountFee3)); + + const lifespan4 = minEndDuration.add(minLifespan).toNumber() + 7; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan4 + ); + var rcpt = await tx.wait(); + const now7 = await time.latest(); + + await time.increase(minLifespan.toNumber()); + + var tx = await ctFlowClient1.closeFlow(supertokenUSDCx, 3); + var rcpt = await tx.wait(); + const now8 = await time.latest(); + + const lifespan5 = minEndDuration.add(minLifespan).toNumber() + 7; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan5 + ); + var rcpt = await tx.wait(); + const now9 = await time.latest(); + + var tx = await ctControlDeployer.realizeFeeBalance( + 1, + supertokenUSDCx + ); + var rcpt = await tx.wait(); + + var [receiver, sesNonce, tsIncrease, tsDecrease] = + await ctControlDeployer.getControlData(supertokenUSDCx, 3); + var [eFlowRate, flowRate, tsStart, tsStop] = + await ctSessionClient1.getSessionData( + receiver, + supertokenUSDCx, + sesNonce + ); + + const amountFee4 = flowRate + .sub(eFlowRate) + .mul(tsDecrease.sub(tsIncrease)); + + expect( + await ctControlDeployer.getFeeBalance(supertokenUSDCx) + ).to.be.equal( + amountFee1.add(amountFee2).add(amountFee3).add(amountFee4) + ); + }); + it("Should realize the correct amount of fee balance - multi supertokens", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctCFAV1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + ctGelatoAutoBot, + amMain, + gelatoExecutor, + client1, + client2, + worker1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.00023"); + const flowRateDAIx = ethers.utils.parseEther("0.00044"); + + var tx = await ctControlDeployer.addSuperToken(supertokenDAIx); + var rcpt = await tx.wait(); + + const tx720 = await ctControlDeployer.setBPS( + BPS720, + FRLB720, + FRUB720, + TAG720 + ); + const rcpt720 = await tx720.wait(); + const tx1 = await ctControlDeployer.toggleBPS(); + const rcpt1 = await tx1.wait(); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const amountInvest = ethers.utils.parseEther("100"); + await investToApp(chainId, amMain, client1, amountInvest); + + const ctSessionWorker1 = await ethers.getContractAt( + "Session", + amMain, + worker1 + ); + + var tx = await ctSessionWorker1.startSessions( + [supertokenUSDCx, supertokenDAIx], + [flowRateUSDCx, flowRateDAIx], + [0, 1] + ); + var rcpt = await tx.wait(); + + const minEndDuration = + await ctControlDeployer.getMinimumEndDuration(); + const minLifespan = await ctControlDeployer.getMinimumLifespan(); + const amount = ethers.utils.parseEther("600"); + var tx = (await ctUSDCxClient1.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient1.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + const lifespan = minEndDuration.add(minLifespan).toNumber() + 5; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + const now1 = await time.latest(); + + // + const ctFlowClient2 = await ethers.getContractAt( + "Flow", + amMain, + client2 + ); + const ctDAIxClient2 = await ethers.getContractAt( + ABI_SUPERTOKEN, + networkConfig[chainId]["addrDAIx"], + client2 + ); + + var tx = (await ctDAIxClient2.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient2.depositSuperToken( + supertokenDAIx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + const lifespan2 = minEndDuration.add(minLifespan).toNumber() + 5; + var tx = await ctFlowClient2.openFlow( + worker1.address, + supertokenDAIx, + lifespan2 + ); + var rcpt = await tx.wait(); + + // + + await time.increase(lifespan + 1); + + var tx = await ctFlowClient1.closeFlow(supertokenUSDCx, 0); + var rcpt = await tx.wait(); + + var tx = await ctFlowClient2.closeFlow(supertokenDAIx, 0); + var rcpt = await tx.wait(); + + expect( + await ctControlDeployer.getFeeBalance(supertokenUSDCx) + ).to.be.equal(0); + expect( + await ctControlDeployer.getFeeBalance(supertokenDAIx) + ).to.be.equal(0); + + var tx = await ctControlDeployer.realizeFeeBalance( + 1, + supertokenUSDCx + ); + var rcpt = await tx.wait(); + var tx = await ctControlDeployer.realizeFeeBalance(1, supertokenDAIx); + var rcpt = await tx.wait(); + + var [receiver, sesNonce, tsIncrease, tsDecrease] = + await ctControlDeployer.getControlData(supertokenUSDCx, 0); + var [eFlowRate, flowRate, tsStart, tsStop] = + await ctSessionClient1.getSessionData( + receiver, + supertokenUSDCx, + sesNonce + ); + var amountFee = flowRate + .sub(eFlowRate) + .mul(tsDecrease.sub(tsIncrease)); + + expect( + await ctControlDeployer.getFeeBalance(supertokenUSDCx) + ).to.be.equal(amountFee); + + var [receiver, sesNonce, tsIncrease, tsDecrease] = + await ctControlDeployer.getControlData(supertokenDAIx, 0); + var [eFlowRate, flowRate, tsStart, tsStop] = + await ctSessionClient1.getSessionData( + receiver, + supertokenDAIx, + sesNonce + ); + var amountFee = flowRate + .sub(eFlowRate) + .mul(tsDecrease.sub(tsIncrease)); + + expect( + await ctControlDeployer.getFeeBalance(supertokenDAIx) + ).to.be.equal(amountFee); + }); + }); + describe("withdrawFeeBalance", async () => { + it("Should revert if caller not role", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctCFAV1, + ctControlDeployer, + ctControlClient1, + ctFlowClient1, + ctGelatoAutoBot, + amMain, + gelatoExecutor, + client1, + client2, + worker1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.00023"); + const flowRateDAIx = ethers.utils.parseEther("0.00044"); + + await expect( + ctControlClient1.withdrawFeeBalance( + supertokenUSDCx, + ethers.utils.parseEther("5") + ) + ).to.be.reverted; + }); + it("Should revert if insufficient funds", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctCFAV1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + ctGelatoAutoBot, + amMain, + gelatoExecutor, + client1, + client2, + worker1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.00023"); + const flowRateDAIx = ethers.utils.parseEther("0.00044"); + + var tx = await ctControlDeployer.addSuperToken(supertokenDAIx); + var rcpt = await tx.wait(); + + const tx720 = await ctControlDeployer.setBPS( + BPS720, + FRLB720, + FRUB720, + TAG720 + ); + const rcpt720 = await tx720.wait(); + const tx1 = await ctControlDeployer.toggleBPS(); + const rcpt1 = await tx1.wait(); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const amountInvest = ethers.utils.parseEther("100"); + await investToApp(chainId, amMain, client1, amountInvest); + + const ctSessionWorker1 = await ethers.getContractAt( + "Session", + amMain, + worker1 + ); + + var tx = await ctSessionWorker1.startSessions( + [supertokenUSDCx, supertokenDAIx], + [flowRateUSDCx, flowRateDAIx], + [0, 1] + ); + var rcpt = await tx.wait(); + + const minEndDuration = + await ctControlDeployer.getMinimumEndDuration(); + const minLifespan = await ctControlDeployer.getMinimumLifespan(); + const amount = ethers.utils.parseEther("600"); + var tx = (await ctUSDCxClient1.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient1.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + const lifespan = minEndDuration.add(minLifespan).toNumber() + 5; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + const now1 = await time.latest(); + + // + const ctFlowClient2 = await ethers.getContractAt( + "Flow", + amMain, + client2 + ); + const ctDAIxClient2 = await ethers.getContractAt( + ABI_SUPERTOKEN, + networkConfig[chainId]["addrDAIx"], + client2 + ); + + var tx = (await ctDAIxClient2.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient2.depositSuperToken( + supertokenDAIx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + const lifespan2 = minEndDuration.add(minLifespan).toNumber() + 5; + var tx = await ctFlowClient2.openFlow( + worker1.address, + supertokenDAIx, + lifespan2 + ); + var rcpt = await tx.wait(); + + // + + await time.increase(lifespan + 1); + + var tx = await ctFlowClient1.closeFlow(supertokenUSDCx, 0); + var rcpt = await tx.wait(); + + var tx = await ctFlowClient2.closeFlow(supertokenDAIx, 0); + var rcpt = await tx.wait(); + + var tx = await ctControlDeployer.realizeFeeBalance( + 1, + supertokenUSDCx + ); + var rcpt = await tx.wait(); + var tx = await ctControlDeployer.realizeFeeBalance(1, supertokenDAIx); + var rcpt = await tx.wait(); + + var [receiver, sesNonce, tsIncrease, tsDecrease] = + await ctControlDeployer.getControlData(supertokenUSDCx, 0); + var [eFlowRate, flowRate, tsStart, tsStop] = + await ctSessionClient1.getSessionData( + receiver, + supertokenUSDCx, + sesNonce + ); + var amountFee = flowRate + .sub(eFlowRate) + .mul(tsDecrease.sub(tsIncrease)); + + expect( + await ctControlDeployer.getFeeBalance(supertokenUSDCx) + ).to.be.equal(amountFee); + + var [receiver, sesNonce, tsIncrease, tsDecrease] = + await ctControlDeployer.getControlData(supertokenDAIx, 0); + var [eFlowRate, flowRate, tsStart, tsStop] = + await ctSessionClient1.getSessionData( + receiver, + supertokenDAIx, + sesNonce + ); + var amountFee = flowRate + .sub(eFlowRate) + .mul(tsDecrease.sub(tsIncrease)); + + expect( + await ctControlDeployer.getFeeBalance(supertokenDAIx) + ).to.be.equal(amountFee); + + const amountUSDCx_ = await ctControlDeployer.getFeeBalance( + supertokenUSDCx + ); + const amountDAIx_ = await ctControlDeployer.getFeeBalance( + supertokenDAIx + ); + const additionalAmount = ethers.utils.parseEther("0.01"); + + const amountWithdrawUSDCx = amountUSDCx_.add(additionalAmount); + const amountWithdrawDAIx = amountDAIx_.add(additionalAmount); + await expect( + ctControlDeployer.withdrawFeeBalance( + supertokenUSDCx, + amountWithdrawUSDCx + ) + ).to.be.revertedWithCustomError( + ctControlDeployer, + "InsufficientFeeBalance" + ); + await expect( + ctControlDeployer.withdrawFeeBalance( + supertokenDAIx, + amountWithdrawDAIx + ) + ).to.be.revertedWithCustomError( + ctControlDeployer, + "InsufficientFeeBalance" + ); + }); + it("Should withdraw correct amount fee balance and update its state", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctCFAV1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + ctGelatoAutoBot, + amMain, + gelatoExecutor, + client1, + client2, + worker1, + deployer, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.00023"); + const flowRateDAIx = ethers.utils.parseEther("0.00044"); + + var tx = await ctControlDeployer.addSuperToken(supertokenDAIx); + var rcpt = await tx.wait(); + + const tx720 = await ctControlDeployer.setBPS( + BPS720, + FRLB720, + FRUB720, + TAG720 + ); + const rcpt720 = await tx720.wait(); + const tx1 = await ctControlDeployer.toggleBPS(); + const rcpt1 = await tx1.wait(); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const amountInvest = ethers.utils.parseEther("100"); + await investToApp(chainId, amMain, client1, amountInvest); + + const ctSessionWorker1 = await ethers.getContractAt( + "Session", + amMain, + worker1 + ); + + var tx = await ctSessionWorker1.startSessions( + [supertokenUSDCx, supertokenDAIx], + [flowRateUSDCx, flowRateDAIx], + [0, 1] + ); + var rcpt = await tx.wait(); + + const minEndDuration = + await ctControlDeployer.getMinimumEndDuration(); + const minLifespan = await ctControlDeployer.getMinimumLifespan(); + const amount = ethers.utils.parseEther("600"); + var tx = (await ctUSDCxClient1.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient1.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + const lifespan = minEndDuration.add(minLifespan).toNumber() + 5; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + const now1 = await time.latest(); + + // + const ctFlowClient2 = await ethers.getContractAt( + "Flow", + amMain, + client2 + ); + const ctDAIxClient2 = await ethers.getContractAt( + ABI_SUPERTOKEN, + networkConfig[chainId]["addrDAIx"], + client2 + ); + + var tx = (await ctDAIxClient2.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient2.depositSuperToken( + supertokenDAIx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + const lifespan2 = minEndDuration.add(minLifespan).toNumber() + 5; + var tx = await ctFlowClient2.openFlow( + worker1.address, + supertokenDAIx, + lifespan2 + ); + var rcpt = await tx.wait(); + + // + + await time.increase(lifespan + 1); + + var tx = await ctFlowClient1.closeFlow(supertokenUSDCx, 0); + var rcpt = await tx.wait(); + + var tx = await ctFlowClient2.closeFlow(supertokenDAIx, 0); + var rcpt = await tx.wait(); + + var tx = await ctControlDeployer.realizeFeeBalance( + 1, + supertokenUSDCx + ); + var rcpt = await tx.wait(); + var tx = await ctControlDeployer.realizeFeeBalance(1, supertokenDAIx); + var rcpt = await tx.wait(); + + var [receiver, sesNonce, tsIncrease, tsDecrease] = + await ctControlDeployer.getControlData(supertokenUSDCx, 0); + var [eFlowRate, flowRate, tsStart, tsStop] = + await ctSessionClient1.getSessionData( + receiver, + supertokenUSDCx, + sesNonce + ); + var amountFee = flowRate + .sub(eFlowRate) + .mul(tsDecrease.sub(tsIncrease)); + + expect( + await ctControlDeployer.getFeeBalance(supertokenUSDCx) + ).to.be.equal(amountFee); + + var [receiver, sesNonce, tsIncrease, tsDecrease] = + await ctControlDeployer.getControlData(supertokenDAIx, 0); + var [eFlowRate, flowRate, tsStart, tsStop] = + await ctSessionClient1.getSessionData( + receiver, + supertokenDAIx, + sesNonce + ); + var amountFee = flowRate + .sub(eFlowRate) + .mul(tsDecrease.sub(tsIncrease)); + + expect( + await ctControlDeployer.getFeeBalance(supertokenDAIx) + ).to.be.equal(amountFee); + + const amountUSDCx_ = await ctControlDeployer.getFeeBalance( + supertokenUSDCx + ); + const amountDAIx_ = await ctControlDeployer.getFeeBalance( + supertokenDAIx + ); + const additionalAmount = ethers.utils.parseEther("0.01"); + + const amountWithdrawUSDCx = amountUSDCx_.sub(additionalAmount); + const amountWithdrawDAIx = amountDAIx_.sub(additionalAmount); + + const ctDAIxClient1 = await ethers.getContractAt( + ABI_SUPERTOKEN, + networkConfig[chainId]["addrDAIx"], + client1 + ); + + const bal1USDCx = await ctUSDCxClient1.balanceOf(amMain); + const bal1DAIx = await ctDAIxClient1.balanceOf(amMain); + const bal_USDCx = await ctUSDCxClient1.balanceOf(deployer.address); + const bal_DAIx = await ctDAIxClient1.balanceOf(deployer.address); + + var tx = await ctControlDeployer.withdrawFeeBalance( + supertokenUSDCx, + amountWithdrawUSDCx + ); + var rcpt = await tx.wait(); + + var tx = await ctControlDeployer.withdrawFeeBalance( + supertokenDAIx, + amountWithdrawDAIx + ); + var rcpt = await tx.wait(); + + const bal2USDCx = await ctUSDCxClient1.balanceOf(amMain); + const bal2DAIx = await ctDAIxClient1.balanceOf(amMain); + const bal_USDCx_ = await ctUSDCxClient1.balanceOf(deployer.address); + const bal_DAIx_ = await ctDAIxClient1.balanceOf(deployer.address); + + expect(bal2USDCx).to.be.equal(bal1USDCx.sub(amountWithdrawUSDCx)); + expect(bal2DAIx).to.be.equal(bal1DAIx.sub(amountWithdrawDAIx)); + expect(bal_USDCx_).to.be.equal(bal_USDCx.add(amountWithdrawUSDCx)); + expect(bal_DAIx_).to.be.equal(bal_DAIx.add(amountWithdrawDAIx)); + }); + }); + }); + }); + + describe("Session", async () => { + describe("startSession", async () => { + it("Should revert if supertoken not supported", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctSessionClient1, amMain, client1 } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.0001"); + const flowRateDAIx = ethers.utils.parseEther("0.0002"); + + await expect( + ctSessionClient1.startSession(supertokenDAIx, flowRateDAIx, 0) + ).to.be.revertedWithCustomError(ctSessionClient1, "InvalidSuperToken"); + }); + it("Should revert if previous session still live", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctSessionClient1, amMain, client1 } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.0001"); + const flowRateDAIx = ethers.utils.parseEther("0.0002"); + + var tx = await ctSessionClient1.startSession( + supertokenUSDCx, + flowRateUSDCx, + 0 + ); + var rcpt = await tx.wait(); + + await expect( + ctSessionClient1.startSession(supertokenUSDCx, flowRateUSDCx, 0) + ).to.be.revertedWithCustomError( + ctSessionClient1, + "PreviousSessionStillLive" + ); + }); + }); + describe("startSessions", async () => { + it("Should revert if array length not match", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctSessionClient1, amMain, client1 } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.0001"); + + await expect( + ctSessionClient1.startSessions( + [supertokenUSDCx, supertokenDAIx], + [flowRateUSDCx], + [0] + ) + ).to.be.revertedWithCustomError( + ctSessionClient1, + "ArrayLengthNotMatch" + ); + }); + it("Should revert if supertoken not supported", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctSessionClient1, amMain, client1 } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.0001"); + const flowRateDAIx = ethers.utils.parseEther("0.0002"); + + await expect( + ctSessionClient1.startSessions( + [supertokenUSDCx, supertokenDAIx], + [flowRateUSDCx, flowRateDAIx], + [0, 0] + ) + ).to.be.revertedWithCustomError(ctSessionClient1, "InvalidSuperToken"); + }); + it("Should revert if previous session still live", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctSessionClient1, amMain, client1 } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.0001"); + const flowRateDAIx = ethers.utils.parseEther("0.0002"); + + var tx = await ctSessionClient1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + + await expect( + ctSessionClient1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ) + ).to.be.revertedWithCustomError( + ctSessionClient1, + "PreviousSessionStillLive" + ); + + await expect( + ctSessionClient1.startSessions( + [supertokenUSDCx, supertokenDAIx], + [flowRateUSDCx, flowRateDAIx], + [0, 0] + ) + ).to.be.revertedWithCustomError( + ctSessionClient1, + "PreviousSessionStillLive" + ); + }); + it("Should start session and set states and ignore bps (flowrate = eflowrate) as (not enabled/not set/user not sbps)", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctSessionClient1, amMain, client1 } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.0001"); + + var newSessionNonce = await ctSessionClient1.getNewSessionNonce( + client1.address, + supertokenUSDCx + ); + expect(newSessionNonce).to.be.equal(0); + var [eFlowRate, flowRate, timestampStart, timestampStop] = + await ctSessionClient1.getSessionData( + client1.address, + supertokenUSDCx, + 0 + ); + expect(eFlowRate).to.be.equal(0); + expect(flowRate).to.be.equal(0); + expect(timestampStart).to.be.equal(0); + expect(timestampStop).to.be.equal(0); + var [currentSessionTimestamp, currentSuperTokens] = + await ctSessionClient1.getCurrentSessionData(client1.address); + expect(currentSessionTimestamp).to.be.equal(0); + expect(currentSuperTokens.length).to.be.equal(0); + + var tx = await ctSessionClient1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + const now1 = await time.latest(); + + var newSessionNonce = await ctSessionClient1.getNewSessionNonce( + client1.address, + supertokenUSDCx + ); + expect(newSessionNonce).to.be.equal(1); + var [eFlowRate, flowRate, timestampStart, timestampStop] = + await ctSessionClient1.getSessionData( + client1.address, + supertokenUSDCx, + 0 + ); + expect(eFlowRate).to.be.equal(flowRateUSDCx); + expect(flowRate).to.be.equal(flowRateUSDCx); + expect(timestampStart).to.be.equal(now1); + expect(timestampStop).to.be.equal(0); + var [currentSessionTimestamp, currentSuperTokens] = + await ctSessionClient1.getCurrentSessionData(client1.address); + expect(currentSessionTimestamp).to.be.equal(now1); + expect(currentSuperTokens.length).to.be.equal(1); + expect(currentSuperTokens.at(0)).to.be.equal(supertokenUSDCx); + }); + it("Should revert if bps enabled but (not set/user not sbps)", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctSessionClient1, + ctControlDeployer, + amMain, + client1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.0001"); + + expect(await ctControlDeployer.isBPSEnabled()).to.be.equal(false); + const tx1 = await ctControlDeployer.toggleBPS(); + const rcpt1 = await tx1.wait(); + expect(await ctControlDeployer.isBPSEnabled()).to.be.equal(true); + + var newSessionNonce = await ctSessionClient1.getNewSessionNonce( + client1.address, + supertokenUSDCx + ); + expect(newSessionNonce).to.be.equal(0); + var [eFlowRate, flowRate, timestampStart, timestampStop] = + await ctSessionClient1.getSessionData( + client1.address, + supertokenUSDCx, + 0 + ); + expect(eFlowRate).to.be.equal(0); + expect(flowRate).to.be.equal(0); + expect(timestampStart).to.be.equal(0); + expect(timestampStop).to.be.equal(0); + var [currentSessionTimestamp, currentSuperTokens] = + await ctSessionClient1.getCurrentSessionData(client1.address); + expect(currentSessionTimestamp).to.be.equal(0); + expect(currentSuperTokens.length).to.be.equal(0); + + await expect( + ctSessionClient1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ) + ).to.be.revertedWithCustomError(ctSessionClient1, "InvalidFlowRate"); + }); + it("Should start session and ignore bps even if bps set as (not enabled/user not sbps)", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctSessionClient1, + ctControlDeployer, + amMain, + client1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.0001"); + + expect(await ctControlDeployer.getBPSSize()).to.be.equal(0); + for (let i = 0; i < TAG720.length; i++) { + const tag = TAG720[i]; + const [bps_, frlb_, frub_] = await ctControlDeployer.getBPSData(tag); + expect(bps_).to.be.equal(0); + expect(frlb_).to.be.equal(0); + expect(frub_).to.be.equal(0); + } + + const tx720 = await ctControlDeployer.setBPS( + BPS720, + FRLB720, + FRUB720, + TAG720 + ); + const rcpt720 = await tx720.wait(); + + expect(await ctControlDeployer.getBPSSize()).to.be.equal(TAG720.length); + for (let i = 0; i < TAG720.length; i++) { + const tag = TAG720[i]; + const bps = BPS720[i]; + const frlb = FRLB720[i]; + const frub = FRUB720[i]; + const [bps_, frlb_, frub_] = await ctControlDeployer.getBPSData(tag); + expect(bps_).to.be.equal(bps); + expect(frlb_).to.be.equal(frlb); + expect(frub_).to.be.equal(frub); + } + + var newSessionNonce = await ctSessionClient1.getNewSessionNonce( + client1.address, + supertokenUSDCx + ); + expect(newSessionNonce).to.be.equal(0); + var [eFlowRate, flowRate, timestampStart, timestampStop] = + await ctSessionClient1.getSessionData( + client1.address, + supertokenUSDCx, + 0 + ); + expect(eFlowRate).to.be.equal(0); + expect(flowRate).to.be.equal(0); + expect(timestampStart).to.be.equal(0); + expect(timestampStop).to.be.equal(0); + var [currentSessionTimestamp, currentSuperTokens] = + await ctSessionClient1.getCurrentSessionData(client1.address); + expect(currentSessionTimestamp).to.be.equal(0); + expect(currentSuperTokens.length).to.be.equal(0); + + var tx = await ctSessionClient1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + const now1 = await time.latest(); + + var newSessionNonce = await ctSessionClient1.getNewSessionNonce( + client1.address, + supertokenUSDCx + ); + expect(newSessionNonce).to.be.equal(1); + var [eFlowRate, flowRate, timestampStart, timestampStop] = + await ctSessionClient1.getSessionData( + client1.address, + supertokenUSDCx, + 0 + ); + expect(eFlowRate).to.be.equal(flowRateUSDCx); + expect(flowRate).to.be.equal(flowRateUSDCx); + expect(timestampStart).to.be.equal(now1); + expect(timestampStop).to.be.equal(0); + var [currentSessionTimestamp, currentSuperTokens] = + await ctSessionClient1.getCurrentSessionData(client1.address); + expect(currentSessionTimestamp).to.be.equal(now1); + expect(currentSuperTokens.length).to.be.equal(1); + expect(currentSuperTokens.at(0)).to.be.equal(supertokenUSDCx); + }); + it("Should start session and use bps as bps enabled (before set) and bps set (user not sbps)", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctSessionClient1, + ctControlDeployer, + amMain, + client1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.000226"); // 0.0001 + + const tx1 = await ctControlDeployer.toggleBPS(); + const rcpt1 = await tx1.wait(); + const tx720 = await ctControlDeployer.setBPS( + BPS720, + FRLB720, + FRUB720, + TAG720 + ); + const rcpt720 = await tx720.wait(); + + var newSessionNonce = await ctSessionClient1.getNewSessionNonce( + client1.address, + supertokenUSDCx + ); + expect(newSessionNonce).to.be.equal(0); + var [eFlowRate, flowRate, timestampStart, timestampStop] = + await ctSessionClient1.getSessionData( + client1.address, + supertokenUSDCx, + 0 + ); + expect(eFlowRate).to.be.equal(0); + expect(flowRate).to.be.equal(0); + expect(timestampStart).to.be.equal(0); + expect(timestampStop).to.be.equal(0); + var [currentSessionTimestamp, currentSuperTokens] = + await ctSessionClient1.getCurrentSessionData(client1.address); + expect(currentSessionTimestamp).to.be.equal(0); + expect(currentSuperTokens.length).to.be.equal(0); + + var tx = await ctSessionClient1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + const now1 = await time.latest(); + + var newSessionNonce = await ctSessionClient1.getNewSessionNonce( + client1.address, + supertokenUSDCx + ); + expect(newSessionNonce).to.be.equal(1); + var [eFlowRate, flowRate, timestampStart, timestampStop] = + await ctSessionClient1.getSessionData( + client1.address, + supertokenUSDCx, + 0 + ); + expect(eFlowRate).to.be.equal(flowRateUSDCx.mul(BPS720[0]).div(10000)); + expect(flowRate).to.be.equal(flowRateUSDCx); + expect(timestampStart).to.be.equal(now1); + expect(timestampStop).to.be.equal(0); + var [currentSessionTimestamp, currentSuperTokens] = + await ctSessionClient1.getCurrentSessionData(client1.address); + expect(currentSessionTimestamp).to.be.equal(now1); + expect(currentSuperTokens.length).to.be.equal(1); + expect(currentSuperTokens.at(0)).to.be.equal(supertokenUSDCx); + }); + it("Should start session and use bps as bps enabled (after set) and bps set (user not sbps)", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctSessionClient1, + ctControlDeployer, + amMain, + client1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.000226"); // 0.0001 + + const tx720 = await ctControlDeployer.setBPS( + BPS720, + FRLB720, + FRUB720, + TAG720 + ); + const rcpt720 = await tx720.wait(); + const tx1 = await ctControlDeployer.toggleBPS(); + const rcpt1 = await tx1.wait(); + + var newSessionNonce = await ctSessionClient1.getNewSessionNonce( + client1.address, + supertokenUSDCx + ); + expect(newSessionNonce).to.be.equal(0); + var [eFlowRate, flowRate, timestampStart, timestampStop] = + await ctSessionClient1.getSessionData( + client1.address, + supertokenUSDCx, + 0 + ); + expect(eFlowRate).to.be.equal(0); + expect(flowRate).to.be.equal(0); + expect(timestampStart).to.be.equal(0); + expect(timestampStop).to.be.equal(0); + var [currentSessionTimestamp, currentSuperTokens] = + await ctSessionClient1.getCurrentSessionData(client1.address); + expect(currentSessionTimestamp).to.be.equal(0); + expect(currentSuperTokens.length).to.be.equal(0); + + var tx = await ctSessionClient1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + const now1 = await time.latest(); + + var newSessionNonce = await ctSessionClient1.getNewSessionNonce( + client1.address, + supertokenUSDCx + ); + expect(newSessionNonce).to.be.equal(1); + var [eFlowRate, flowRate, timestampStart, timestampStop] = + await ctSessionClient1.getSessionData( + client1.address, + supertokenUSDCx, + 0 + ); + expect(eFlowRate).to.be.equal(flowRateUSDCx.mul(BPS720[0]).div(10000)); + expect(flowRate).to.be.equal(flowRateUSDCx); + expect(timestampStart).to.be.equal(now1); + expect(timestampStop).to.be.equal(0); + var [currentSessionTimestamp, currentSuperTokens] = + await ctSessionClient1.getCurrentSessionData(client1.address); + expect(currentSessionTimestamp).to.be.equal(now1); + expect(currentSuperTokens.length).to.be.equal(1); + expect(currentSuperTokens.at(0)).to.be.equal(supertokenUSDCx); + }); + it("Should revert with invalid flow rate after bps enabled and bps set (user not sbps) - flow rate lower", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctSessionClient1, + ctControlDeployer, + amMain, + client1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.0001"); // 0.0001 + + const tx720 = await ctControlDeployer.setBPS( + BPS720, + FRLB720, + FRUB720, + TAG720 + ); + const rcpt720 = await tx720.wait(); + const tx1 = await ctControlDeployer.toggleBPS(); + const rcpt1 = await tx1.wait(); + + var newSessionNonce = await ctSessionClient1.getNewSessionNonce( + client1.address, + supertokenUSDCx + ); + expect(newSessionNonce).to.be.equal(0); + var [eFlowRate, flowRate, timestampStart, timestampStop] = + await ctSessionClient1.getSessionData( + client1.address, + supertokenUSDCx, + 0 + ); + expect(eFlowRate).to.be.equal(0); + expect(flowRate).to.be.equal(0); + expect(timestampStart).to.be.equal(0); + expect(timestampStop).to.be.equal(0); + var [currentSessionTimestamp, currentSuperTokens] = + await ctSessionClient1.getCurrentSessionData(client1.address); + expect(currentSessionTimestamp).to.be.equal(0); + expect(currentSuperTokens.length).to.be.equal(0); + + await expect( + ctSessionClient1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ) + ).to.be.revertedWithCustomError(ctSessionClient1, "InvalidFlowRate"); + }); + it("Should revert with invalid flow rate after bps enabled and bps set (user not sbps) - flow rate higher", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctSessionClient1, + ctControlDeployer, + amMain, + client1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.0004"); // 0.0001 + + const tx720 = await ctControlDeployer.setBPS( + BPS720, + FRLB720, + FRUB720, + TAG720 + ); + const rcpt720 = await tx720.wait(); + const tx1 = await ctControlDeployer.toggleBPS(); + const rcpt1 = await tx1.wait(); + + var newSessionNonce = await ctSessionClient1.getNewSessionNonce( + client1.address, + supertokenUSDCx + ); + expect(newSessionNonce).to.be.equal(0); + var [eFlowRate, flowRate, timestampStart, timestampStop] = + await ctSessionClient1.getSessionData( + client1.address, + supertokenUSDCx, + 0 + ); + expect(eFlowRate).to.be.equal(0); + expect(flowRate).to.be.equal(0); + expect(timestampStart).to.be.equal(0); + expect(timestampStop).to.be.equal(0); + var [currentSessionTimestamp, currentSuperTokens] = + await ctSessionClient1.getCurrentSessionData(client1.address); + expect(currentSessionTimestamp).to.be.equal(0); + expect(currentSuperTokens.length).to.be.equal(0); + + await expect( + ctSessionClient1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ) + ).to.be.revertedWithCustomError(ctSessionClient1, "InvalidFlowRate"); + }); + it("Should revert with invalid flow rate after bps enabled and bps set (user not sbps) - flow rate lower - different tag", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctSessionClient1, + ctControlDeployer, + amMain, + client1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.00044"); // 0.0001 + + const tx720 = await ctControlDeployer.setBPS( + BPS720, + FRLB720, + FRUB720, + TAG720 + ); + const rcpt720 = await tx720.wait(); + const tx1 = await ctControlDeployer.toggleBPS(); + const rcpt1 = await tx1.wait(); + + var newSessionNonce = await ctSessionClient1.getNewSessionNonce( + client1.address, + supertokenUSDCx + ); + expect(newSessionNonce).to.be.equal(0); + var [eFlowRate, flowRate, timestampStart, timestampStop] = + await ctSessionClient1.getSessionData( + client1.address, + supertokenUSDCx, + 0 + ); + expect(eFlowRate).to.be.equal(0); + expect(flowRate).to.be.equal(0); + expect(timestampStart).to.be.equal(0); + expect(timestampStop).to.be.equal(0); + var [currentSessionTimestamp, currentSuperTokens] = + await ctSessionClient1.getCurrentSessionData(client1.address); + expect(currentSessionTimestamp).to.be.equal(0); + expect(currentSuperTokens.length).to.be.equal(0); + + await expect( + ctSessionClient1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [2] + ) + ).to.be.revertedWithCustomError(ctSessionClient1, "InvalidFlowRate"); + }); + it("Should revert with invalid flow rate after bps enabled and bps set (user not sbps) - flow rate higher - different tag", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctSessionClient1, + ctControlDeployer, + amMain, + client1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.0009"); // 0.0001 + + const tx720 = await ctControlDeployer.setBPS( + BPS720, + FRLB720, + FRUB720, + TAG720 + ); + const rcpt720 = await tx720.wait(); + const tx1 = await ctControlDeployer.toggleBPS(); + const rcpt1 = await tx1.wait(); + + var newSessionNonce = await ctSessionClient1.getNewSessionNonce( + client1.address, + supertokenUSDCx + ); + expect(newSessionNonce).to.be.equal(0); + var [eFlowRate, flowRate, timestampStart, timestampStop] = + await ctSessionClient1.getSessionData( + client1.address, + supertokenUSDCx, + 0 + ); + expect(eFlowRate).to.be.equal(0); + expect(flowRate).to.be.equal(0); + expect(timestampStart).to.be.equal(0); + expect(timestampStop).to.be.equal(0); + var [currentSessionTimestamp, currentSuperTokens] = + await ctSessionClient1.getCurrentSessionData(client1.address); + expect(currentSessionTimestamp).to.be.equal(0); + expect(currentSuperTokens.length).to.be.equal(0); + + await expect( + ctSessionClient1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [2] + ) + ).to.be.revertedWithCustomError(ctSessionClient1, "InvalidFlowRate"); + }); + it("Should start session and use bps as user is sbps, even if (bps not enabled/set)", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctSessionClient1, + ctControlDeployer, + amMain, + client1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.0001"); + + expect(await ctControlDeployer.getSBPS(client1.address)).to.be.equal(0); + const v = 7000; + var tx = await ctControlDeployer.setSBPS(v, client1.address); + var rcpt = await tx.wait(); + expect(await ctControlDeployer.getSBPS(client1.address)).to.be.equal(v); + + var newSessionNonce = await ctSessionClient1.getNewSessionNonce( + client1.address, + supertokenUSDCx + ); + expect(newSessionNonce).to.be.equal(0); + var [eFlowRate, flowRate, timestampStart, timestampStop] = + await ctSessionClient1.getSessionData( + client1.address, + supertokenUSDCx, + 0 + ); + expect(eFlowRate).to.be.equal(0); + expect(flowRate).to.be.equal(0); + expect(timestampStart).to.be.equal(0); + expect(timestampStop).to.be.equal(0); + var [currentSessionTimestamp, currentSuperTokens] = + await ctSessionClient1.getCurrentSessionData(client1.address); + expect(currentSessionTimestamp).to.be.equal(0); + expect(currentSuperTokens.length).to.be.equal(0); + + var tx = await ctSessionClient1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + const now1 = await time.latest(); + + var newSessionNonce = await ctSessionClient1.getNewSessionNonce( + client1.address, + supertokenUSDCx + ); + expect(newSessionNonce).to.be.equal(1); + var [eFlowRate, flowRate, timestampStart, timestampStop] = + await ctSessionClient1.getSessionData( + client1.address, + supertokenUSDCx, + 0 + ); + expect(eFlowRate).to.be.equal(flowRateUSDCx.mul(v).div(10000)); + expect(flowRate).to.be.equal(flowRateUSDCx); + expect(timestampStart).to.be.equal(now1); + expect(timestampStop).to.be.equal(0); + var [currentSessionTimestamp, currentSuperTokens] = + await ctSessionClient1.getCurrentSessionData(client1.address); + expect(currentSessionTimestamp).to.be.equal(now1); + expect(currentSuperTokens.length).to.be.equal(1); + expect(currentSuperTokens.at(0)).to.be.equal(supertokenUSDCx); + }); + it("Should start session and use bps as user is sbps, even if (bps is enabled/set)", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctSessionClient1, + ctControlDeployer, + amMain, + client1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.0001"); + + const tx720 = await ctControlDeployer.setBPS( + BPS720, + FRLB720, + FRUB720, + TAG720 + ); + const rcpt720 = await tx720.wait(); + const tx1 = await ctControlDeployer.toggleBPS(); + const rcpt1 = await tx1.wait(); + + const v = 7000; + var tx = await ctControlDeployer.setSBPS(v, client1.address); + var rcpt = await tx.wait(); + + var newSessionNonce = await ctSessionClient1.getNewSessionNonce( + client1.address, + supertokenUSDCx + ); + expect(newSessionNonce).to.be.equal(0); + var [eFlowRate, flowRate, timestampStart, timestampStop] = + await ctSessionClient1.getSessionData( + client1.address, + supertokenUSDCx, + 0 + ); + expect(eFlowRate).to.be.equal(0); + expect(flowRate).to.be.equal(0); + expect(timestampStart).to.be.equal(0); + expect(timestampStop).to.be.equal(0); + var [currentSessionTimestamp, currentSuperTokens] = + await ctSessionClient1.getCurrentSessionData(client1.address); + expect(currentSessionTimestamp).to.be.equal(0); + expect(currentSuperTokens.length).to.be.equal(0); + + var tx = await ctSessionClient1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + const now1 = await time.latest(); + + var newSessionNonce = await ctSessionClient1.getNewSessionNonce( + client1.address, + supertokenUSDCx + ); + expect(newSessionNonce).to.be.equal(1); + var [eFlowRate, flowRate, timestampStart, timestampStop] = + await ctSessionClient1.getSessionData( + client1.address, + supertokenUSDCx, + 0 + ); + expect(eFlowRate).to.be.equal(flowRateUSDCx.mul(v).div(10000)); + expect(flowRate).to.be.equal(flowRateUSDCx); + expect(timestampStart).to.be.equal(now1); + expect(timestampStop).to.be.equal(0); + var [currentSessionTimestamp, currentSuperTokens] = + await ctSessionClient1.getCurrentSessionData(client1.address); + expect(currentSessionTimestamp).to.be.equal(now1); + expect(currentSuperTokens.length).to.be.equal(1); + expect(currentSuperTokens.at(0)).to.be.equal(supertokenUSDCx); + }); + it("Should start multiple same sessions with different supertoken", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctControlDeployer, + ctSessionClient1, + amMain, + client1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.00044"); + const flowRateDAIx = ethers.utils.parseEther("0.0018"); + + const tx720 = await ctControlDeployer.setBPS( + BPS720, + FRLB720, + FRUB720, + TAG720 + ); + const rcpt720 = await tx720.wait(); + const tx1 = await ctControlDeployer.toggleBPS(); + const rcpt1 = await tx1.wait(); + + var tx = await ctControlDeployer.addSuperToken(supertokenDAIx); + var rcpt = await tx.wait(); + + var [eFlowRate, flowRate, timestampStart, timestampStop] = + await ctSessionClient1.getSessionData( + client1.address, + supertokenUSDCx, + 0 + ); + expect(eFlowRate).to.be.equal(0); + expect(flowRate).to.be.equal(0); + expect(timestampStart).to.be.equal(0); + expect(timestampStop).to.be.equal(0); + var [eFlowRate, flowRate, timestampStart, timestampStop] = + await ctSessionClient1.getSessionData( + client1.address, + supertokenDAIx, + 0 + ); + expect(eFlowRate).to.be.equal(0); + expect(flowRate).to.be.equal(0); + expect(timestampStart).to.be.equal(0); + expect(timestampStop).to.be.equal(0); + + // check that both st session is null + + var tx = await ctSessionClient1.startSessions( + [supertokenUSDCx, supertokenDAIx], + [flowRateUSDCx, flowRateDAIx], + [1, 5] + ); + var rcpt = await tx.wait(); + const now1 = await time.latest(); + + var [eFlowRate, flowRate, timestampStart, timestampStop] = + await ctSessionClient1.getSessionData( + client1.address, + supertokenUSDCx, + 0 + ); + expect(eFlowRate).to.be.equal(flowRateUSDCx.mul(BPS720[1]).div(10000)); + expect(flowRate).to.be.equal(flowRateUSDCx); + expect(timestampStart).to.be.equal(now1); + expect(timestampStop).to.be.equal(0); + var [eFlowRate, flowRate, timestampStart, timestampStop] = + await ctSessionClient1.getSessionData( + client1.address, + supertokenDAIx, + 0 + ); + expect(eFlowRate).to.be.equal(flowRateDAIx.mul(BPS720[5]).div(10000)); + expect(flowRate).to.be.equal(flowRateDAIx); + expect(timestampStart).to.be.equal(now1); + expect(timestampStop).to.be.equal(0); + }); + it("Should start multiple sessions with different supertoken from different broadcasters", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctControlDeployer, + ctSessionClient1, + amMain, + client1, + client2, + } = result; + + const ctSessionClient2 = await ethers.getContractAt( + "Session", + amMain, + client2 + ); + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.0008"); + const flowRateDAIx = ethers.utils.parseEther("0.001"); + + const tx720 = await ctControlDeployer.setBPS( + BPS720, + FRLB720, + FRUB720, + TAG720 + ); + const rcpt720 = await tx720.wait(); + const tx1 = await ctControlDeployer.toggleBPS(); + const rcpt1 = await tx1.wait(); + + var tx = await ctControlDeployer.addSuperToken(supertokenDAIx); + var rcpt = await tx.wait(); + + var [eFlowRate, flowRate, timestampStart, timestampStop] = + await ctSessionClient1.getSessionData( + client1.address, + supertokenUSDCx, + 0 + ); + expect(eFlowRate).to.be.equal(0); + expect(flowRate).to.be.equal(0); + expect(timestampStart).to.be.equal(0); + expect(timestampStop).to.be.equal(0); + var [eFlowRate, flowRate, timestampStart, timestampStop] = + await ctSessionClient1.getSessionData( + client1.address, + supertokenDAIx, + 0 + ); + expect(eFlowRate).to.be.equal(0); + expect(flowRate).to.be.equal(0); + expect(timestampStart).to.be.equal(0); + expect(timestampStop).to.be.equal(0); + var [eFlowRate, flowRate, timestampStart, timestampStop] = + await ctSessionClient2.getSessionData( + client1.address, + supertokenUSDCx, + 0 + ); + expect(eFlowRate).to.be.equal(0); + expect(flowRate).to.be.equal(0); + expect(timestampStart).to.be.equal(0); + expect(timestampStop).to.be.equal(0); + var [eFlowRate, flowRate, timestampStart, timestampStop] = + await ctSessionClient2.getSessionData( + client1.address, + supertokenDAIx, + 0 + ); + expect(eFlowRate).to.be.equal(0); + expect(flowRate).to.be.equal(0); + expect(timestampStart).to.be.equal(0); + expect(timestampStop).to.be.equal(0); + + var tx = await ctSessionClient1.startSessions( + [supertokenUSDCx, supertokenDAIx], + [flowRateUSDCx, flowRateDAIx], + [3, 4] + ); + var rcpt = await tx.wait(); + const now1 = await time.latest(); + + const flowRateDAIx2 = ethers.utils.parseEther("0.00029"); + var tx = await ctSessionClient2.startSessions( + [supertokenDAIx], + [flowRateDAIx2], + [0] + ); + var rcpt = await tx.wait(); + const now2 = await time.latest(); + + var [eFlowRate, flowRate, timestampStart, timestampStop] = + await ctSessionClient1.getSessionData( + client1.address, + supertokenUSDCx, + 0 + ); + expect(eFlowRate).to.be.equal(flowRateUSDCx.mul(BPS720[3]).div(10000)); + expect(flowRate).to.be.equal(flowRateUSDCx); + expect(timestampStart).to.be.equal(now1); + expect(timestampStop).to.be.equal(0); + var [eFlowRate, flowRate, timestampStart, timestampStop] = + await ctSessionClient1.getSessionData( + client1.address, + supertokenDAIx, + 0 + ); + expect(eFlowRate).to.be.equal(flowRateDAIx.mul(BPS720[4]).div(10000)); + expect(flowRate).to.be.equal(flowRateDAIx); + expect(timestampStart).to.be.equal(now1); + expect(timestampStop).to.be.equal(0); + var [eFlowRate, flowRate, timestampStart, timestampStop] = + await ctSessionClient2.getSessionData( + client2.address, + supertokenUSDCx, + 0 + ); + expect(eFlowRate).to.be.equal(0); + expect(flowRate).to.be.equal(0); + expect(timestampStart).to.be.equal(0); + expect(timestampStop).to.be.equal(0); + var [eFlowRate, flowRate, timestampStart, timestampStop] = + await ctSessionClient2.getSessionData( + client2.address, + supertokenDAIx, + 0 + ); + expect(eFlowRate).to.be.equal(flowRateDAIx2.mul(BPS720[0]).div(10000)); + expect(flowRate).to.be.equal(flowRateDAIx2); + expect(timestampStart).to.be.equal(now2); + expect(timestampStop).to.be.equal(0); + }); + }); + describe("stopSessions", async () => { + // it("Should revert if supertoken not supported", async () => { + // const result = await loadFixture(init); + // if (!result) { + // expect(true).to.be.equal(false); + // return; + // } + // const { chainId, ctSessionClient1, amMain, client1 } = result; + + // const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + // const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + // const flowRateUSDCx = ethers.utils.parseEther("0.0001"); + // const flowRateDAIx = ethers.utils.parseEther("0.0002"); + + // await expect( + // ctSessionClient1.stopSessions([supertokenDAIx]) + // ).to.be.revertedWithCustomError(ctSessionClient1, "InvalidSuperToken"); + // }); + it("Should revert if session not started", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctSessionClient1, amMain, client1 } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + + await expect( + ctSessionClient1.stopSessions([supertokenUSDCx]) + ).to.be.revertedWithCustomError(ctSessionClient1, "SessionNotStarted"); + }); + it("Should revert if session already ended", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctSessionClient1, amMain, client1 } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.0001"); + + var tx = await ctSessionClient1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + + var tx = await ctSessionClient1.stopSessions([supertokenUSDCx]); + var rcpt = await tx.wait(); + + await expect( + ctSessionClient1.stopSessions([supertokenUSDCx]) + ).to.be.revertedWithCustomError( + ctSessionClient1, + "SessionAlreadyEnded" + ); + }); + it("Should delete incoming flow to session host and update state", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctSessionClient1, amMain, client1 } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.0001"); + + var tx = await ctSessionClient1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + const now1 = await time.latest(); + + var newSessionNonce = await ctSessionClient1.getNewSessionNonce( + client1.address, + supertokenUSDCx + ); + expect(newSessionNonce).to.be.equal(1); + var [eFlowRate, flowRate, timestampStart, timestampStop] = + await ctSessionClient1.getSessionData( + client1.address, + supertokenUSDCx, + 0 + ); + expect(eFlowRate).to.be.equal(flowRateUSDCx); + expect(flowRate).to.be.equal(flowRateUSDCx); + expect(timestampStart).to.be.equal(now1); + expect(timestampStop).to.be.equal(0); + var [currentSessionTimestamp, currentSuperTokens] = + await ctSessionClient1.getCurrentSessionData(client1.address); + expect(currentSessionTimestamp).to.be.equal(now1); + expect(currentSuperTokens.length).to.be.equal(1); + expect(currentSuperTokens.at(0)).to.be.equal(supertokenUSDCx); + + var tx = await ctSessionClient1.stopSessions([supertokenUSDCx]); + var rcpt = await tx.wait(); + const now2 = await time.latest(); + + var newSessionNonce = await ctSessionClient1.getNewSessionNonce( + client1.address, + supertokenUSDCx + ); + expect(newSessionNonce).to.be.equal(1); + var [eFlowRate, flowRate, timestampStart, timestampStop] = + await ctSessionClient1.getSessionData( + client1.address, + supertokenUSDCx, + 0 + ); + expect(eFlowRate).to.be.equal(flowRateUSDCx); + expect(flowRate).to.be.equal(flowRateUSDCx); + expect(timestampStart).to.be.equal(now1); + expect(timestampStop).to.be.equal(now2); + var [currentSessionTimestamp, currentSuperTokens] = + await ctSessionClient1.getCurrentSessionData(client1.address); + expect(currentSuperTokens.length).to.be.equal(0); + }); + it("Should stop multiple same sessions with different supertoken", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctControlDeployer, + ctSessionClient1, + amMain, + client1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.0001"); + const flowRateDAIx = ethers.utils.parseEther("0.0002"); + + var tx = await ctControlDeployer.addSuperToken(supertokenDAIx); + var rcpt = await tx.wait(); + + var tx = await ctSessionClient1.startSessions( + [supertokenUSDCx, supertokenDAIx], + [flowRateUSDCx, flowRateDAIx], + [0, 0] + ); + var rcpt = await tx.wait(); + const now1 = await time.latest(); + + var [eFlowRate, flowRate, timestampStart, timestampStop] = + await ctSessionClient1.getSessionData( + client1.address, + supertokenUSDCx, + 0 + ); + expect(eFlowRate).to.be.equal(flowRateUSDCx); + expect(flowRate).to.be.equal(flowRateUSDCx); + expect(timestampStart).to.be.equal(now1); + expect(timestampStop).to.be.equal(0); + var [eFlowRate, flowRate, timestampStart, timestampStop] = + await ctSessionClient1.getSessionData( + client1.address, + supertokenDAIx, + 0 + ); + expect(eFlowRate).to.be.equal(flowRateDAIx); + expect(flowRate).to.be.equal(flowRateDAIx); + expect(timestampStart).to.be.equal(now1); + expect(timestampStop).to.be.equal(0); + + // stop session + var tx = await ctSessionClient1.stopSessions([ + supertokenUSDCx, + supertokenDAIx, + ]); + var rcpt = await tx.wait(); + const now2 = await time.latest(); + + var [eFlowRate, flowRate, timestampStart, timestampStop] = + await ctSessionClient1.getSessionData( + client1.address, + supertokenUSDCx, + 0 + ); + expect(eFlowRate).to.be.equal(flowRateUSDCx); + expect(flowRate).to.be.equal(flowRateUSDCx); + expect(timestampStart).to.be.equal(now1); + expect(timestampStop).to.be.equal(now2); + var [eFlowRate, flowRate, timestampStart, timestampStop] = + await ctSessionClient1.getSessionData( + client1.address, + supertokenDAIx, + 0 + ); + expect(eFlowRate).to.be.equal(flowRateDAIx); + expect(flowRate).to.be.equal(flowRateDAIx); + expect(timestampStart).to.be.equal(now1); + expect(timestampStop).to.be.equal(now2); + }); + it("Should fail the existing flow scheduled for auto deletion during execution", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctCFAV1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + ctGelatoAutoBot, + amMain, + gelatoExecutor, + client1, + client2, + worker1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.001"); + const flowRateDAIx = ethers.utils.parseEther("0.002"); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const amountInvest = ethers.utils.parseEther("100"); + await investToApp(chainId, amMain, client1, amountInvest); + + const ctSessionWorker1 = await ethers.getContractAt( + "Session", + amMain, + worker1 + ); + + var tx = await ctSessionWorker1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + + const minEndDuration = await ctControlDeployer.getMinimumEndDuration(); + const minLifespan = await ctControlDeployer.getMinimumLifespan(); + const amount = ethers.utils.parseEther("600"); //minLifespan.mul(flowRateUSDCx.add(minEndDuration)); + var tx = (await ctUSDCxClient1.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient1.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var lifespan = 260; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + const now1 = await time.latest(); + var rc = await ethers.provider.getTransactionReceipt( + rcpt.transactionHash + ); + var block = await ethers.provider.getBlock(rc.blockNumber); + var startTime = block.timestamp; + + const execData = ctFlowClient1.interface.encodeFunctionData( + "decreaseFlow", + [supertokenUSDCx, client1.address, worker1.address, 0, flowRateUSDCx] + ); + var timeArgs = encodeTimeArgs(startTime + lifespan, lifespan); + const moduleData = { + modules: [1, 3], + args: [timeArgs], + }; + + const ctFlowClient2 = await ethers.getContractAt( + "Flow", + amMain, + client2 + ); + const ctUSDCxClient2 = await ethers.getContractAt( + ABI_SUPERTOKEN, + networkConfig[chainId]["addrUSDCx"], + client2 + ); + + var tx = (await ctUSDCxClient2.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient2.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var lifespan = 280; + var tx = await ctFlowClient2.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + const now2 = await time.latest(); + var rc = await ethers.provider.getTransactionReceipt( + rcpt.transactionHash + ); + var block = await ethers.provider.getBlock(rc.blockNumber); + var startTime = block.timestamp; + + const execData2 = ctFlowClient1.interface.encodeFunctionData( + "decreaseFlow", + [supertokenUSDCx, client1.address, worker1.address, 0, flowRateUSDCx] + ); + var timeArgs = encodeTimeArgs(startTime + lifespan, lifespan); + const moduleData2 = { + modules: [1, 3], + args: [timeArgs], + }; + + await time.increase(260); // ff time + + var tx = await ctSessionWorker1.stopSessions([supertokenUSDCx]); + var rcpt = await tx.wait(); + const now3 = await time.latest(); + + await expect( + ctGelatoAutoBot + .connect(gelatoExecutor) + .exec( + amMain, + amMain, + execData, + moduleData, + GELATO_FEE, + amGelatoFee, + true, + true + ) + ).to.be.revertedWith("Automate.exec: NoErrorSelector"); + + await time.increase(35); // ff time + + await expect( + ctGelatoAutoBot + .connect(gelatoExecutor) + .exec( + amMain, + amMain, + execData2, + moduleData2, + GELATO_FEE, + amGelatoFee, + true, + true + ) + ).to.be.revertedWith("Automate.exec: NoErrorSelector"); + }); + it("Should stop flow as usual - setting of bps should not affect anything", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctSessionClient1, + ctControlDeployer, + amMain, + client1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.00029"); + + const tx720 = await ctControlDeployer.setBPS( + BPS720, + FRLB720, + FRUB720, + TAG720 + ); + const rcpt720 = await tx720.wait(); + const tx1 = await ctControlDeployer.toggleBPS(); + const rcpt1 = await tx1.wait(); + + var tx = await ctSessionClient1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + const now1 = await time.latest(); + + var newSessionNonce = await ctSessionClient1.getNewSessionNonce( + client1.address, + supertokenUSDCx + ); + expect(newSessionNonce).to.be.equal(1); + var [eFlowRate, flowRate, timestampStart, timestampStop] = + await ctSessionClient1.getSessionData( + client1.address, + supertokenUSDCx, + 0 + ); + expect(eFlowRate).to.be.equal(flowRateUSDCx.mul(BPS720[0]).div(10000)); + expect(flowRate).to.be.equal(flowRateUSDCx); + expect(timestampStart).to.be.equal(now1); + expect(timestampStop).to.be.equal(0); + var [currentSessionTimestamp, currentSuperTokens] = + await ctSessionClient1.getCurrentSessionData(client1.address); + expect(currentSessionTimestamp).to.be.equal(now1); + expect(currentSuperTokens.length).to.be.equal(1); + expect(currentSuperTokens.at(0)).to.be.equal(supertokenUSDCx); + + var tx = await ctSessionClient1.stopSessions([supertokenUSDCx]); + var rcpt = await tx.wait(); + const now2 = await time.latest(); + + var newSessionNonce = await ctSessionClient1.getNewSessionNonce( + client1.address, + supertokenUSDCx + ); + expect(newSessionNonce).to.be.equal(1); + var [eFlowRate, flowRate, timestampStart, timestampStop] = + await ctSessionClient1.getSessionData( + client1.address, + supertokenUSDCx, + 0 + ); + expect(eFlowRate).to.be.equal(flowRateUSDCx.mul(BPS720[0]).div(10000)); + expect(flowRate).to.be.equal(flowRateUSDCx); + expect(timestampStart).to.be.equal(now1); + expect(timestampStop).to.be.equal(now2); + var [currentSessionTimestamp, currentSuperTokens] = + await ctSessionClient1.getCurrentSessionData(client1.address); + expect(currentSuperTokens.length).to.be.equal(0); + }); + }); + describe("getNewSessionNonce", async () => { + it("Should get new nonce", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctSessionClient1, amMain, client1 } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.0001"); + const flowRateDAIx = ethers.utils.parseEther("0.0002"); + + var newNonce = await ctSessionClient1.getNewSessionNonce( + client1.address, + supertokenUSDCx + ); + expect(newNonce).to.be.equal(0); + + var tx = await ctSessionClient1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + + var newNonce = await ctSessionClient1.getNewSessionNonce( + client1.address, + supertokenUSDCx + ); + expect(newNonce).to.be.equal(1); + }); + }); + describe("session start/stop with variable supertoken", async () => { + it("Should run smoothly", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctControlDeployer, + ctSessionClient1, + amMain, + client1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.0001"); + const flowRateDAIx = ethers.utils.parseEther("0.0002"); + + var tx = await ctControlDeployer.addSuperToken(supertokenDAIx); + var rcpt = await tx.wait(); + + var tx = await ctSessionClient1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + const now1 = await time.latest(); + + var [currentSessionTimestamp, currentSuperTokens] = + await ctSessionClient1.getCurrentSessionData(client1.address); + expect(currentSessionTimestamp).to.be.equal(now1); + expect(currentSuperTokens.length).to.be.equal(1); + + // stop session + var tx = await ctSessionClient1.stopSessions([ + supertokenUSDCx, + // supertokenDAIx, + ]); + var rcpt = await tx.wait(); + const now2 = await time.latest(); + + var [eFlowRate, flowRate, timestampStart, timestampStop] = + await ctSessionClient1.getSessionData( + client1.address, + supertokenUSDCx, + 0 + ); + expect(eFlowRate).to.be.equal(flowRateUSDCx); + expect(flowRate).to.be.equal(flowRateUSDCx); + expect(timestampStart).to.be.equal(now1); + expect(timestampStop).to.be.equal(now2); + var [eFlowRate, flowRate, timestampStart, timestampStop] = + await ctSessionClient1.getSessionData( + client1.address, + supertokenDAIx, + 0 + ); + expect(eFlowRate).to.be.equal(0); + expect(flowRate).to.be.equal(0); + expect(timestampStart).to.be.equal(0); + expect(timestampStop).to.be.equal(0); + var [eFlowRate, flowRate, timestampStart, timestampStop] = + await ctSessionClient1.getSessionData( + client1.address, + supertokenUSDCx, + 1 + ); + expect(eFlowRate).to.be.equal(0); + expect(flowRate).to.be.equal(0); + expect(timestampStart).to.be.equal(0); + expect(timestampStop).to.be.equal(0); + var [eFlowRate, flowRate, timestampStart, timestampStop] = + await ctSessionClient1.getSessionData( + client1.address, + supertokenDAIx, + 1 + ); + expect(eFlowRate).to.be.equal(0); + expect(flowRate).to.be.equal(0); + expect(timestampStart).to.be.equal(0); + expect(timestampStop).to.be.equal(0); + + var newSessionNonce = await ctSessionClient1.getNewSessionNonce( + client1.address, + supertokenUSDCx + ); + expect(newSessionNonce).to.be.equal(1); + var [currentSessionTimestamp, currentSuperTokens] = + await ctSessionClient1.getCurrentSessionData(client1.address); + expect(currentSessionTimestamp).to.be.equal(0); + expect(currentSuperTokens.length).to.be.equal(0); + + // 2nd session + + var tx = await ctSessionClient1.startSessions( + [supertokenUSDCx, supertokenDAIx], + [flowRateUSDCx, flowRateDAIx], + [0, 0] + ); + var rcpt = await tx.wait(); + const now3 = await time.latest(); + + var [currentSessionTimestamp, currentSuperTokens] = + await ctSessionClient1.getCurrentSessionData(client1.address); + expect(currentSessionTimestamp).to.be.equal(now3); + expect(currentSuperTokens.length).to.be.equal(2); + expect(currentSuperTokens.at(0)).to.be.equal(supertokenUSDCx); + expect(currentSuperTokens.at(1)).to.be.equal(supertokenDAIx); + + var tx = await ctSessionClient1.stopSessions([ + supertokenUSDCx, + supertokenDAIx, + ]); + var rcpt = await tx.wait(); + const now4 = await time.latest(); + + var [eFlowRate, flowRate, timestampStart, timestampStop] = + await ctSessionClient1.getSessionData( + client1.address, + supertokenUSDCx, + 0 + ); + expect(eFlowRate).to.be.equal(flowRateUSDCx); + expect(flowRate).to.be.equal(flowRateUSDCx); + expect(timestampStart).to.be.equal(now1); + expect(timestampStop).to.be.equal(now2); + var [eFlowRate, flowRate, timestampStart, timestampStop] = + await ctSessionClient1.getSessionData( + client1.address, + supertokenDAIx, + 0 + ); + expect(flowRate).to.be.equal(flowRateDAIx); + expect(timestampStart).to.be.equal(now3); + expect(timestampStop).to.be.equal(now4); + var [eFlowRate, flowRate, timestampStart, timestampStop] = + await ctSessionClient1.getSessionData( + client1.address, + supertokenUSDCx, + 1 + ); + expect(eFlowRate).to.be.equal(flowRateUSDCx); + expect(flowRate).to.be.equal(flowRateUSDCx); + expect(timestampStart).to.be.equal(now3); + expect(timestampStop).to.be.equal(now4); + var [eFlowRate, flowRate, timestampStart, timestampStop] = + await ctSessionClient1.getSessionData( + client1.address, + supertokenDAIx, + 1 + ); + expect(eFlowRate).to.be.equal(0); + expect(flowRate).to.be.equal(0); + expect(timestampStart).to.be.equal(0); + expect(timestampStop).to.be.equal(0); + + var newSessionNonce = await ctSessionClient1.getNewSessionNonce( + client1.address, + supertokenUSDCx + ); + expect(newSessionNonce).to.be.equal(2); + var [currentSessionTimestamp, currentSuperTokens] = + await ctSessionClient1.getCurrentSessionData(client1.address); + expect(currentSessionTimestamp).to.be.equal(0); + expect(currentSuperTokens.length).to.be.equal(0); + }); + }); + }); + + describe("Flow", async () => { + describe("depositSuperToken", async () => { + it("Should revert if supertoken not supported", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctFlowClient1, amMain, client1 } = result; + + const supertoken = networkConfig[chainId]["addrDAIx"]; + const amount = ethers.utils.parseEther("3"); + await expect( + ctFlowClient1.depositSuperToken(supertoken, amount) + ).to.be.revertedWithCustomError(ctFlowClient1, "InvalidSuperToken"); + }); + it("Should increase supertoken balance", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctFlowClient1, ctUSDCxClient1, amMain, client1 } = + result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const amount = ethers.utils.parseEther("3"); + + expect( + await ctFlowClient1.getDepositUser(client1.address, supertokenUSDCx) + ).to.be.equal(0); + expect( + await ctFlowClient1.getDepositUser(client1.address, supertokenDAIx) + ).to.be.equal(0); + + var tx = await ctUSDCxClient1.approve(amMain, amount); + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient1.depositSuperToken( + supertokenUSDCx, + amount + )) as any; + var rcpt = await tx.wait(); + + expect( + await ctFlowClient1.getDepositUser(client1.address, supertokenUSDCx) + ).to.be.equal(amount); + expect( + await ctFlowClient1.getDepositUser(client1.address, supertokenDAIx) + ).to.be.equal(0); + }); + }); + describe("_getAmountFlowed", async () => { + it("Should return 0 if not open flow yet (new nonce = 0)", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctCFAV1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + ctGelatoAutoBot, + amMain, + client1, + worker1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.01"); + const flowRateDAIx = ethers.utils.parseEther("0.02"); + + expect( + await ctFlowClient1.getAmountFlowed(client1.address, supertokenUSDCx) + ).to.be.equal(0); + }); + it("Should return 0 if in the middle of flow (first flow)", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctCFAV1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + ctGelatoAutoBot, + amMain, + client1, + worker1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.01"); + const flowRateDAIx = ethers.utils.parseEther("0.02"); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const amountInvest = ethers.utils.parseEther("100"); + await investToApp(chainId, amMain, client1, amountInvest); + + const ctSessionWorker1 = await ethers.getContractAt( + "Session", + amMain, + worker1 + ); + + var tx = await ctSessionWorker1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + + const minEndDuration = await ctControlDeployer.getMinimumEndDuration(); + const minLifespan = await ctControlDeployer.getMinimumLifespan(); + const amount = ethers.utils.parseEther("600"); + var tx = (await ctUSDCxClient1.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient1.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + const lifespan = 260; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + const now1 = await time.latest(); + + expect( + await ctFlowClient1.getAmountFlowed(client1.address, supertokenUSDCx) + ).to.be.equal(0); + }); + it("Should return more than 0 after first flow", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctCFAV1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + ctGelatoAutoBot, + amMain, + gelatoExecutor, + client1, + worker1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.01"); + const flowRateDAIx = ethers.utils.parseEther("0.02"); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const amountInvest = ethers.utils.parseEther("100"); + await investToApp(chainId, amMain, client1, amountInvest); + + const ctSessionWorker1 = await ethers.getContractAt( + "Session", + amMain, + worker1 + ); + + var tx = await ctSessionWorker1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + + const minBalance = await ctControlDeployer.getMinimumEndDuration(); + const minLifespan = await ctControlDeployer.getMinimumLifespan(); + const amount = ethers.utils.parseEther("600"); + var tx = (await ctUSDCxClient1.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient1.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + const lifespan = 260; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + const now1 = await time.latest(); + var rc = await ethers.provider.getTransactionReceipt( + rcpt.transactionHash + ); + var block = await ethers.provider.getBlock(rc.blockNumber); + var startTime = block.timestamp; + + var execData = ctFlowClient1.interface.encodeFunctionData( + "decreaseFlow", + [supertokenUSDCx, client1.address, worker1.address, 0, flowRateUSDCx] + ); + var timeArgs = encodeTimeArgs(startTime + lifespan, lifespan); + var moduleData = { + modules: [1, 3], + args: [timeArgs], + }; + + const fft = minLifespan.sub(1).toNumber(); + await time.increase(fft); + + var tx = await ctFlowClient1.closeFlow(supertokenUSDCx, 0); + var rcpt = await tx.wait(); + const now2 = await time.latest(); + + expect( + await ctFlowClient1.getAmountFlowed(client1.address, supertokenUSDCx) + ).to.be.equal(flowRateUSDCx.mul(fft + 1)); + expect( + await ctFlowClient1.getAmountFlowed(client1.address, supertokenUSDCx) + ).to.be.equal(flowRateUSDCx.mul(now2 - now1)); + }); + it( + "GOTO REF1/2 - Should return 0 if in the middle of flow (beyond first flow)" + ); + it("GOTO REF1/2 - Should return more than 0 after multiple flows"); + }); + describe("openFlow", async () => { + it("Should revert if app insufficient gelato balance", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + amMain, + client1, + worker1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.0001"); + const flowRateDAIx = ethers.utils.parseEther("0.0002"); + + const lifespan = 60; + await expect( + ctFlowClient1.openFlow(worker1.address, supertokenUSDCx, lifespan) + ).to.be.revertedWithCustomError( + ctFlowClient1, + "InsufficientAppGelatoBalance" + ); + }); + it("Should revert supertoken not supported", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + amMain, + client1, + worker1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.0001"); + const flowRateDAIx = ethers.utils.parseEther("0.0002"); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const lifespan = 60; + await expect( + ctFlowClient1.openFlow(worker1.address, supertokenDAIx, lifespan) + ).to.be.revertedWithCustomError(ctFlowClient1, "InvalidSuperToken"); + }); + it("Should revert if session not started", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + amMain, + client1, + worker1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.0001"); + const flowRateDAIx = ethers.utils.parseEther("0.0002"); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const lifespan = 60; + await expect( + ctFlowClient1.openFlow(worker1.address, supertokenUSDCx, lifespan) + ).to.be.revertedWithCustomError(ctFlowClient1, "SessionNotStarted"); + }); + it("Should revert if insufficient app supertoken balance", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + amMain, + client1, + worker1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.01"); + const flowRateDAIx = ethers.utils.parseEther("0.02"); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const ctSessionWorker1 = await ethers.getContractAt( + "Session", + amMain, + worker1 + ); + + var tx = await ctSessionWorker1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + + const minBalance = await ctControlDeployer.getMinimumEndDuration(); + const amount = minBalance.add(ethers.utils.parseEther("0.0001")); + var tx = (await ctUSDCxClient1.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient1.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + const lifespan = 60; + await expect( + ctFlowClient1.openFlow(worker1.address, supertokenUSDCx, lifespan) + ).to.be.revertedWithCustomError( + ctFlowClient1, + "InsufficientAppSTBalance" + ); + }); + it("Should revert if lifespan from balance less than end duration", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + amMain, + client1, + worker1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.01"); + const flowRateDAIx = ethers.utils.parseEther("0.02"); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const amountInvest = ethers.utils.parseEther("100"); + await investToApp(chainId, amMain, client1, amountInvest); + + const ctSessionWorker1 = await ethers.getContractAt( + "Session", + amMain, + worker1 + ); + + var tx = await ctSessionWorker1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + + const minEndDuration = await ctControlDeployer.getMinimumEndDuration(); + const duration = minEndDuration.sub(1); + const amount = flowRateUSDCx.mul(duration); + var tx = (await ctUSDCxClient1.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient1.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + const lifespan = 60; + await expect( + ctFlowClient1.openFlow(worker1.address, supertokenUSDCx, lifespan) + ).to.be.revertedWithCustomError(ctFlowClient1, "InsufficientLifespan1"); + }); + it("Should revert if lifespan from balance less than min lifespan", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + amMain, + client1, + worker1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.01"); + const flowRateDAIx = ethers.utils.parseEther("0.02"); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const amountInvest = ethers.utils.parseEther("100"); + await investToApp(chainId, amMain, client1, amountInvest); + + const ctSessionWorker1 = await ethers.getContractAt( + "Session", + amMain, + worker1 + ); + + var tx = await ctSessionWorker1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + + const minEndDuration = await ctControlDeployer.getMinimumEndDuration(); + const minLifespan = await ctControlDeployer.getMinimumLifespan(); + const duration = minEndDuration.add(minLifespan).sub(5); + const amount = flowRateUSDCx.mul(duration); + var tx = (await ctUSDCxClient1.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient1.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + const lifespan = 60; + await expect( + ctFlowClient1.openFlow(worker1.address, supertokenUSDCx, lifespan) + ).to.be.revertedWithCustomError(ctFlowClient1, "InsufficientLifespan2"); + }); + it("Should revert if lifespan set less than min lifespan + end duration", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + amMain, + client1, + worker1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.01"); + const flowRateDAIx = ethers.utils.parseEther("0.02"); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const amountInvest = ethers.utils.parseEther("100"); + await investToApp(chainId, amMain, client1, amountInvest); + + const ctSessionWorker1 = await ethers.getContractAt( + "Session", + amMain, + worker1 + ); + + var tx = await ctSessionWorker1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + + const minEndDuration = await ctControlDeployer.getMinimumEndDuration(); + const minLifespan = await ctControlDeployer.getMinimumLifespan(); + const amount = ethers.utils.parseEther("600"); + var tx = (await ctUSDCxClient1.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient1.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + const lifespan = 60; + await expect( + ctFlowClient1.openFlow(worker1.address, supertokenUSDCx, lifespan) + ).to.be.revertedWithCustomError(ctFlowClient1, "InsufficientLifespan3"); + }); + it("Should set flow states, create flow from app to receiver", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctCFAV1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + ctGelatoAutoBot, + amMain, + client1, + worker1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.01"); + const flowRateDAIx = ethers.utils.parseEther("0.02"); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const amountInvest = ethers.utils.parseEther("100"); + await investToApp(chainId, amMain, client1, amountInvest); + + const ctSessionWorker1 = await ethers.getContractAt( + "Session", + amMain, + worker1 + ); + + var tx = await ctSessionWorker1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + + const minEndDuration = await ctControlDeployer.getMinimumEndDuration(); + const minLifespan = await ctControlDeployer.getMinimumLifespan(); + const amount = ethers.utils.parseEther("600"); + var tx = (await ctUSDCxClient1.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient1.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var taskIds = await ctGelatoAutoBot.getTaskIdsByUser(amMain); + expect(taskIds.length).to.be.equal(0); + var [receiver, sesNonce, tsIncrease, tsDecrease, taskId] = + await ctFlowClient1.getFlowData(client1.address, supertokenUSDCx, 0); + expect(receiver).to.be.equal(ethers.constants.AddressZero); + expect(sesNonce).to.be.equal(0); + expect(tsIncrease).to.be.equal(0); + expect(tsDecrease).to.be.equal(0); + expect(taskId).to.be.equal(ethers.constants.HashZero); + var { + timestamp, + flowRate: flowRateOutput, + deposit, + owedDeposit, + } = await ctCFAV1.getFlow(supertokenUSDCx, amMain, worker1.address); + expect(timestamp).to.be.equal(0); + expect(flowRateOutput).to.be.equal(0); + expect(deposit).to.be.equal(0); + expect(owedDeposit).to.be.equal(0); + + expect( + await ctFlowClient1.getDepositUser(client1.address, supertokenUSDCx) + ).to.be.equal(amount); + + const lifespan = 260; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + const now1 = await time.latest(); + + var taskIds = await ctGelatoAutoBot.getTaskIdsByUser(amMain); + expect(taskIds.length).to.be.equal(1); + var [receiver, sesNonce, tsIncrease, tsDecrease, taskId] = + await ctFlowClient1.getFlowData(client1.address, supertokenUSDCx, 0); + expect(receiver).to.be.equal(worker1.address); + expect(sesNonce).to.be.equal(0); + expect(tsIncrease).to.be.equal(now1); + expect(tsDecrease).to.be.equal(0); + expect(taskId).to.be.equal(taskIds.at(0)); + var { + timestamp, + flowRate: flowRateOutput, + deposit, + owedDeposit, + } = await ctCFAV1.getFlow(supertokenUSDCx, amMain, worker1.address); + expect(timestamp).to.be.equal(now1); + expect(flowRateOutput).to.be.equal(flowRateUSDCx); + expect(deposit).to.be.gt(flowRateUSDCx.mul(60 * 60)); + expect(owedDeposit).to.be.equal(0); + + expect( + await ctFlowClient1.getDepositUser(client1.address, supertokenUSDCx) + ).to.be.equal(amount); + }); + it("Should set flow states, create flow from app to receiver - bps", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctCFAV1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + ctGelatoAutoBot, + amMain, + client1, + worker1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.00023"); + const flowRateDAIx = ethers.utils.parseEther("0.02"); + + const tx720 = await ctControlDeployer.setBPS( + BPS720, + FRLB720, + FRUB720, + TAG720 + ); + const rcpt720 = await tx720.wait(); + const tx1 = await ctControlDeployer.toggleBPS(); + const rcpt1 = await tx1.wait(); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const amountInvest = ethers.utils.parseEther("100"); + await investToApp(chainId, amMain, client1, amountInvest); + + const ctSessionWorker1 = await ethers.getContractAt( + "Session", + amMain, + worker1 + ); + + var tx = await ctSessionWorker1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + + const minEndDuration = await ctControlDeployer.getMinimumEndDuration(); + const minLifespan = await ctControlDeployer.getMinimumLifespan(); + const amount = ethers.utils.parseEther("600"); + var tx = (await ctUSDCxClient1.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient1.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var taskIds = await ctGelatoAutoBot.getTaskIdsByUser(amMain); + expect(taskIds.length).to.be.equal(0); + var [receiver, sesNonce, tsIncrease, tsDecrease, taskId] = + await ctFlowClient1.getFlowData(client1.address, supertokenUSDCx, 0); + expect(receiver).to.be.equal(ethers.constants.AddressZero); + expect(sesNonce).to.be.equal(0); + expect(tsIncrease).to.be.equal(0); + expect(tsDecrease).to.be.equal(0); + expect(taskId).to.be.equal(ethers.constants.HashZero); + var { + timestamp, + flowRate: flowRateOutput, + deposit, + owedDeposit, + } = await ctCFAV1.getFlow(supertokenUSDCx, amMain, worker1.address); + expect(timestamp).to.be.equal(0); + expect(flowRateOutput).to.be.equal(0); + expect(deposit).to.be.equal(0); + expect(owedDeposit).to.be.equal(0); + + expect( + await ctFlowClient1.getDepositUser(client1.address, supertokenUSDCx) + ).to.be.equal(amount); + + const lifespan = 260; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + const now1 = await time.latest(); + + var taskIds = await ctGelatoAutoBot.getTaskIdsByUser(amMain); + expect(taskIds.length).to.be.equal(1); + var [receiver, sesNonce, tsIncrease, tsDecrease, taskId] = + await ctFlowClient1.getFlowData(client1.address, supertokenUSDCx, 0); + expect(receiver).to.be.equal(worker1.address); + expect(sesNonce).to.be.equal(0); + expect(tsIncrease).to.be.equal(now1); + expect(tsDecrease).to.be.equal(0); + expect(taskId).to.be.equal(taskIds.at(0)); + var { + timestamp, + flowRate: flowRateOutput, + deposit, + owedDeposit, + } = await ctCFAV1.getFlow(supertokenUSDCx, amMain, worker1.address); + expect(timestamp).to.be.equal(now1); + expect(flowRateOutput).to.be.equal( + flowRateUSDCx.mul(BPS720[0]).div(10000) + ); + expect(deposit).to.be.gt( + flowRateUSDCx + .mul(BPS720[0]) + .div(10000) + .mul(60 * 60) + ); + expect(owedDeposit).to.be.equal(0); + + expect( + await ctFlowClient1.getDepositUser(client1.address, supertokenUSDCx) + ).to.be.equal(amount); + }); + it("Should open flow from another user, update flow from app to receiver if there is an existing session", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctCFAV1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + ctGelatoAutoBot, + amMain, + client1, + client2, + worker1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.01"); + const flowRateDAIx = ethers.utils.parseEther("0.02"); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const amountInvest = ethers.utils.parseEther("100"); + await investToApp(chainId, amMain, client1, amountInvest); + + const ctSessionWorker1 = await ethers.getContractAt( + "Session", + amMain, + worker1 + ); + + var tx = await ctSessionWorker1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + + const minBalance = await ctControlDeployer.getMinimumEndDuration(); + const minLifespan = await ctControlDeployer.getMinimumLifespan(); + const amount = ethers.utils.parseEther("600"); + var tx = (await ctUSDCxClient1.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient1.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var lifespan = 260; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + const now1 = await time.latest(); + + var taskIds = await ctGelatoAutoBot.getTaskIdsByUser(amMain); + expect(taskIds.length).to.be.equal(1); + var [receiver, sesNonce, tsIncrease, tsDecrease, taskId] = + await ctFlowClient1.getFlowData(client1.address, supertokenUSDCx, 0); + expect(receiver).to.be.equal(worker1.address); + expect(sesNonce).to.be.equal(0); + expect(tsIncrease).to.be.equal(now1); + expect(tsDecrease).to.be.equal(0); + expect(taskId).to.be.equal(taskIds.at(0)); + var [receiver, sesNonce, tsIncrease, tsDecrease, taskId] = + await ctFlowClient1.getFlowData(client2.address, supertokenUSDCx, 0); + expect(receiver).to.be.equal(ethers.constants.AddressZero); + expect(sesNonce).to.be.equal(0); + expect(tsIncrease).to.be.equal(0); + expect(tsDecrease).to.be.equal(0); + expect(taskId).to.be.equal(ethers.constants.HashZero); + var { + timestamp, + flowRate: flowRateOutput, + deposit, + owedDeposit, + } = await ctCFAV1.getFlow(supertokenUSDCx, amMain, worker1.address); + expect(timestamp).to.be.equal(now1); + expect(flowRateOutput).to.be.equal(flowRateUSDCx); + expect(deposit).to.be.gt(flowRateUSDCx.mul(60 * 60)); + expect(owedDeposit).to.be.equal(0); + + expect( + await ctFlowClient1.getDepositUser(client1.address, supertokenUSDCx) + ).to.be.equal(amount); + + const ctFlowClient2 = await ethers.getContractAt( + "Flow", + amMain, + client2 + ); + const ctUSDCxClient2 = await ethers.getContractAt( + ABI_SUPERTOKEN, + networkConfig[chainId]["addrUSDCx"], + client2 + ); + + var tx = (await ctUSDCxClient2.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient2.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + expect( + await ctFlowClient2.getDepositUser(client2.address, supertokenUSDCx) + ).to.be.equal(amount); + + var lifespan = 250; + var tx = await ctFlowClient2.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + const now2 = await time.latest(); + + var taskIds = await ctGelatoAutoBot.getTaskIdsByUser(amMain); + expect(taskIds.length).to.be.equal(2); + var [receiver, sesNonce, tsIncrease, tsDecrease, taskId] = + await ctFlowClient1.getFlowData(client1.address, supertokenUSDCx, 0); + expect(receiver).to.be.equal(worker1.address); + expect(sesNonce).to.be.equal(0); + expect(tsIncrease).to.be.equal(now1); + expect(tsDecrease).to.be.equal(0); + expect(taskId).to.be.equal(taskIds.at(0)); + var [receiver, sesNonce, tsIncrease, tsDecrease, taskId] = + await ctFlowClient1.getFlowData(client2.address, supertokenUSDCx, 0); + expect(receiver).to.be.equal(worker1.address); + expect(sesNonce).to.be.equal(0); + expect(tsIncrease).to.be.equal(now2); + expect(tsDecrease).to.be.equal(0); + expect(taskId).to.be.equal(taskIds.at(1)); + var { + timestamp, + flowRate: flowRateOutput, + deposit, + owedDeposit, + } = await ctCFAV1.getFlow(supertokenUSDCx, amMain, worker1.address); + expect(timestamp).to.be.equal(now2); + expect(flowRateOutput).to.be.equal(flowRateUSDCx.mul(2)); + expect(deposit).to.be.gt(flowRateUSDCx.mul(2).mul(60 * 60)); + expect(owedDeposit).to.be.equal(0); + + expect( + await ctFlowClient1.getDepositUser(client1.address, supertokenUSDCx) + ).to.be.equal(amount); + + expect( + await ctFlowClient2.getDepositUser(client2.address, supertokenUSDCx) + ).to.be.equal(amount); + }); + it("Should revert if (has active flow) open multiple flows from single viewer to different broadcaster session", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctCFAV1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + ctGelatoAutoBot, + amMain, + client1, + worker1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.01"); + const flowRateDAIx = ethers.utils.parseEther("0.02"); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const amountInvest = ethers.utils.parseEther("100"); + await investToApp(chainId, amMain, client1, amountInvest); + + const ctSessionWorker1 = await ethers.getContractAt( + "Session", + amMain, + worker1 + ); + + var tx = await ctSessionWorker1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + + const minBalance = await ctControlDeployer.getMinimumEndDuration(); + const minLifespan = await ctControlDeployer.getMinimumLifespan(); + const amount = ethers.utils.parseEther("600"); + var tx = (await ctUSDCxClient1.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient1.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var lifespan = 260; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + const now1 = await time.latest(); + + var taskIds = await ctGelatoAutoBot.getTaskIdsByUser(amMain); + expect(taskIds.length).to.be.equal(1); + var [receiver, sesNonce, tsIncrease, tsDecrease, taskId] = + await ctFlowClient1.getFlowData(client1.address, supertokenUSDCx, 0); + expect(receiver).to.be.equal(worker1.address); + expect(sesNonce).to.be.equal(0); + expect(tsIncrease).to.be.equal(now1); + expect(tsDecrease).to.be.equal(0); + expect(taskId).to.be.equal(taskIds.at(0)); + var { + timestamp, + flowRate: flowRateOutput, + deposit, + owedDeposit, + } = await ctCFAV1.getFlow(supertokenUSDCx, amMain, worker1.address); + expect(timestamp).to.be.equal(now1); + expect(flowRateOutput).to.be.equal(flowRateUSDCx); + expect(deposit).to.be.gt(flowRateUSDCx.mul(60 * 60)); + expect(owedDeposit).to.be.equal(0); + + var lifespan = 250; + await expect( + ctFlowClient1.openFlow(worker1.address, supertokenUSDCx, lifespan) + ).to.be.revertedWithCustomError(ctFlowClient1, "HasActiveFlow"); + + var taskIds = await ctGelatoAutoBot.getTaskIdsByUser(amMain); + expect(taskIds.length).to.be.equal(1); + var [receiver, sesNonce, tsIncrease, tsDecrease, taskId] = + await ctFlowClient1.getFlowData(client1.address, supertokenUSDCx, 0); + expect(receiver).to.be.equal(worker1.address); + expect(sesNonce).to.be.equal(0); + expect(tsIncrease).to.be.equal(now1); + expect(tsDecrease).to.be.equal(0); + expect(taskId).to.be.equal(taskIds.at(0)); + var { + timestamp, + flowRate: flowRateOutput, + deposit, + owedDeposit, + } = await ctCFAV1.getFlow(supertokenUSDCx, amMain, worker1.address); + expect(timestamp).to.be.equal(now1); + expect(flowRateOutput).to.be.equal(flowRateUSDCx); + expect(deposit).to.be.gt(flowRateUSDCx.mul(60 * 60)); + expect(owedDeposit).to.be.equal(0); + }); + it("REF1 - Should reduce amount balance after second open flow", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctCFAV1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + ctGelatoAutoBot, + amMain, + client1, + worker1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.01"); + const flowRateDAIx = ethers.utils.parseEther("0.02"); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const amountInvest = ethers.utils.parseEther("100"); + await investToApp(chainId, amMain, client1, amountInvest); + + const ctSessionWorker1 = await ethers.getContractAt( + "Session", + amMain, + worker1 + ); + + var tx = await ctSessionWorker1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + + const minEndDuration = await ctControlDeployer.getMinimumEndDuration(); + const minLifespan = await ctControlDeployer.getMinimumLifespan(); + const amount = ethers.utils.parseEther("600"); + var tx = (await ctUSDCxClient1.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient1.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + expect( + await ctFlowClient1.getDepositUser(client1.address, supertokenUSDCx) + ).to.be.equal(amount); + + const lifespan = 260; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + const now1 = await time.latest(); + + const fft = minLifespan.sub(1).toNumber(); + await time.increase(fft); + + expect( + await ctFlowClient1.getAmountFlowed(client1.address, supertokenUSDCx) + ).to.be.equal(0); + + var tx = await ctFlowClient1.closeFlow(supertokenUSDCx, 0); + var rcpt = await tx.wait(); + const now2 = await time.latest(); + + expect( + await ctFlowClient1.getDepositUser(client1.address, supertokenUSDCx) + ).to.be.equal(amount); + expect( + await ctFlowClient1.getAmountFlowed(client1.address, supertokenUSDCx) + ).to.be.equal(flowRateUSDCx.mul(now2 - now1)); + + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + const now3 = await time.latest(); + + expect( + await ctFlowClient1.getDepositUser(client1.address, supertokenUSDCx) + ).to.be.equal(amount.sub(flowRateUSDCx.mul(now2 - now1))); + expect( + await ctFlowClient1.getAmountFlowed(client1.address, supertokenUSDCx) + ).to.be.equal(0); + }); + it("REF2 - Should reduce amount balance after third open flow", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctCFAV1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + ctGelatoAutoBot, + amMain, + client1, + worker1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.01"); + const flowRateDAIx = ethers.utils.parseEther("0.02"); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const amountInvest = ethers.utils.parseEther("100"); + await investToApp(chainId, amMain, client1, amountInvest); + + const ctSessionWorker1 = await ethers.getContractAt( + "Session", + amMain, + worker1 + ); + + var tx = await ctSessionWorker1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + + const minEndDuration = await ctControlDeployer.getMinimumEndDuration(); + const minLifespan = await ctControlDeployer.getMinimumLifespan(); + const amount = ethers.utils.parseEther("600"); + var tx = (await ctUSDCxClient1.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient1.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + expect( + await ctFlowClient1.getDepositUser(client1.address, supertokenUSDCx) + ).to.be.equal(amount); + + const lifespan = 260; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + const now1 = await time.latest(); + + var fft = minLifespan.sub(1).toNumber(); + await time.increase(fft); + + expect( + await ctFlowClient1.getAmountFlowed(client1.address, supertokenUSDCx) + ).to.be.equal(0); + + var tx = await ctFlowClient1.closeFlow(supertokenUSDCx, 0); + var rcpt = await tx.wait(); + const now2 = await time.latest(); + + expect( + await ctFlowClient1.getDepositUser(client1.address, supertokenUSDCx) + ).to.be.equal(amount); + expect( + await ctFlowClient1.getAmountFlowed(client1.address, supertokenUSDCx) + ).to.be.equal(flowRateUSDCx.mul(now2 - now1)); + + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + const now3 = await time.latest(); + + var fft = minLifespan.sub(1).toNumber(); + await time.increase(fft); + + expect( + await ctFlowClient1.getDepositUser(client1.address, supertokenUSDCx) + ).to.be.equal(amount.sub(flowRateUSDCx.mul(now2 - now1))); + expect( + await ctFlowClient1.getAmountFlowed(client1.address, supertokenUSDCx) + ).to.be.equal(0); + + var tx = await ctFlowClient1.closeFlow(supertokenUSDCx, 1); + var rcpt = await tx.wait(); + const now4 = await time.latest(); + + expect( + await ctFlowClient1.getDepositUser(client1.address, supertokenUSDCx) + ).to.be.equal(amount.sub(flowRateUSDCx.mul(now4 - now3))); + expect( + await ctFlowClient1.getAmountFlowed(client1.address, supertokenUSDCx) + ).to.be.equal(flowRateUSDCx.mul(now4 - now3)); + + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + const now5 = await time.latest(); + + expect( + await ctFlowClient1.getDepositUser(client1.address, supertokenUSDCx) + ).to.be.equal( + amount + .sub(flowRateUSDCx.mul(now2 - now1)) + .sub(flowRateUSDCx.mul(now4 - now3)) + ); + expect( + await ctFlowClient1.getAmountFlowed(client1.address, supertokenUSDCx) + ).to.be.equal(0); + }); + }); + describe("decreaseFlow", async () => { + it("Should revert if caller not role", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { chainId, ctAutomateDeployer, ctAutomateClient1, client1 } = + result; + + await expect(ctAutomateDeployer.setGelatoContracts(amGelatoFee)).to.be + .reverted; + await expect(ctAutomateClient1.setGelatoContracts(amGelatoFee)).to.be + .reverted; + }); + it("Should auto decrease flow if lifespan reached - delete flow if no other viewer and only last for viewer's set lifespan", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctCFAV1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + ctGelatoAutoBot, + amMain, + gelatoExecutor, + client1, + worker1, + } = result; + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.01"); + const flowRateDAIx = ethers.utils.parseEther("0.02"); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const amountInvest = ethers.utils.parseEther("100"); + await investToApp(chainId, amMain, client1, amountInvest); + + const ctSessionWorker1 = await ethers.getContractAt( + "Session", + amMain, + worker1 + ); + var tx = await ctSessionWorker1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + + const minBalance = await ctControlDeployer.getMinimumEndDuration(); + const minLifespan = await ctControlDeployer.getMinimumLifespan(); + const amount = ethers.utils.parseEther("600"); + var tx = (await ctUSDCxClient1.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + var tx = (await ctFlowClient1.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var taskIds = await ctGelatoAutoBot.getTaskIdsByUser(amMain); + expect(taskIds.length).to.be.equal(0); + var [receiver, sesNonce, tsIncrease, tsDecrease, taskId] = + await ctFlowClient1.getFlowData(client1.address, supertokenUSDCx, 0); + expect(receiver).to.be.equal(ethers.constants.AddressZero); + expect(sesNonce).to.be.equal(0); + expect(tsIncrease).to.be.equal(0); + expect(tsDecrease).to.be.equal(0); + expect(taskId).to.be.equal(ethers.constants.HashZero); + var { + timestamp, + flowRate: flowRateOutput, + deposit, + owedDeposit, + } = await ctCFAV1.getFlow(supertokenUSDCx, amMain, worker1.address); + expect(timestamp).to.be.equal(0); + expect(flowRateOutput).to.be.equal(0); + expect(deposit).to.be.equal(0); + expect(owedDeposit).to.be.equal(0); + + const lifespan = 260; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + const now1 = await time.latest(); + var rc = await ethers.provider.getTransactionReceipt( + rcpt.transactionHash + ); + var block = await ethers.provider.getBlock(rc.blockNumber); + var startTime = block.timestamp; + + var execData = ctFlowClient1.interface.encodeFunctionData( + "decreaseFlow", + [supertokenUSDCx, client1.address, worker1.address, 0, flowRateUSDCx] + ); + var timeArgs = encodeTimeArgs(startTime + lifespan, lifespan); + var moduleData = { + modules: [1, 3], + args: [timeArgs], + }; + + await time.increase(260); // ff time + + var taskIds = await ctGelatoAutoBot.getTaskIdsByUser(amMain); + expect(taskIds.length).to.be.equal(1); + var [receiver, sesNonce, tsIncrease, tsDecrease, taskId] = + await ctFlowClient1.getFlowData(client1.address, supertokenUSDCx, 0); + expect(receiver).to.be.equal(worker1.address); + expect(sesNonce).to.be.equal(0); + expect(tsIncrease).to.be.equal(now1); + expect(tsDecrease).to.be.equal(0); + expect(taskId).to.be.equal(taskIds.at(0)); + var { + timestamp, + flowRate: flowRateOutput, + deposit, + owedDeposit, + } = await ctCFAV1.getFlow(supertokenUSDCx, amMain, worker1.address); + expect(timestamp).to.be.equal(now1); + expect(flowRateOutput).to.be.equal(flowRateUSDCx); + expect(deposit).to.be.gt(flowRateUSDCx.mul(60 * 60)); + expect(owedDeposit).to.be.equal(0); + + await ctGelatoAutoBot + .connect(gelatoExecutor) + .exec( + amMain, + amMain, + execData, + moduleData, + GELATO_FEE, + amGelatoFee, + true, + true + ); + const tsDecreaseFlow = await time.latest(); + + var taskIds = await ctGelatoAutoBot.getTaskIdsByUser(amMain); + expect(taskIds.length).to.be.equal(0); + var [receiver, sesNonce, tsIncrease, tsDecrease, taskId] = + await ctFlowClient1.getFlowData(client1.address, supertokenUSDCx, 0); + expect(receiver).to.be.equal(worker1.address); + expect(sesNonce).to.be.equal(0); + expect(tsIncrease).to.be.equal(now1); + expect(tsDecrease).to.be.equal(tsDecreaseFlow); + expect(taskId).to.not.be.equal(ethers.constants.HashZero); + var { + timestamp, + flowRate: flowRateOutput, + deposit, + owedDeposit, + } = await ctCFAV1.getFlow(supertokenUSDCx, amMain, worker1.address); + expect(timestamp).to.be.equal(0); + expect(flowRateOutput).to.be.equal(0); + expect(deposit).to.be.equal(0); + expect(owedDeposit).to.be.equal(0); + }); + it("Should auto decrease flow only last for max lifespan although viewer's set lifespan is longer", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctCFAV1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + ctGelatoAutoBot, + amMain, + gelatoExecutor, + client1, + worker1, + } = result; + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.01"); + const flowRateDAIx = ethers.utils.parseEther("0.02"); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const amountInvest = ethers.utils.parseEther("100"); + await investToApp(chainId, amMain, client1, amountInvest); + + const ctSessionWorker1 = await ethers.getContractAt( + "Session", + amMain, + worker1 + ); + var tx = await ctSessionWorker1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + + const minBalance = await ctControlDeployer.getMinimumEndDuration(); + const minLifespan = await ctControlDeployer.getMinimumLifespan(); + const amount = ethers.utils.parseEther("600"); + var tx = (await ctUSDCxClient1.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + var tx = (await ctFlowClient1.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var taskIds = await ctGelatoAutoBot.getTaskIdsByUser(amMain); + expect(taskIds.length).to.be.equal(0); + var [receiver, sesNonce, tsIncrease, tsDecrease, taskId] = + await ctFlowClient1.getFlowData(client1.address, supertokenUSDCx, 0); + expect(receiver).to.be.equal(ethers.constants.AddressZero); + expect(sesNonce).to.be.equal(0); + expect(tsIncrease).to.be.equal(0); + expect(tsDecrease).to.be.equal(0); + expect(taskId).to.be.equal(ethers.constants.HashZero); + var { + timestamp, + flowRate: flowRateOutput, + deposit, + owedDeposit, + } = await ctCFAV1.getFlow(supertokenUSDCx, amMain, worker1.address); + expect(timestamp).to.be.equal(0); + expect(flowRateOutput).to.be.equal(0); + expect(deposit).to.be.equal(0); + expect(owedDeposit).to.be.equal(0); + + const lifespan = 100000; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + const now1 = await time.latest(); + var rc = await ethers.provider.getTransactionReceipt( + rcpt.transactionHash + ); + var block = await ethers.provider.getBlock(rc.blockNumber); + var startTime = block.timestamp; + + var execData = ctFlowClient1.interface.encodeFunctionData( + "decreaseFlow", + [supertokenUSDCx, client1.address, worker1.address, 0, flowRateUSDCx] + ); + const safeLifespan = ( + await ctFlowClient1.getValidSafeLifespan( + client1.address, + supertokenUSDCx, + flowRateUSDCx + ) + ).toNumber(); + var timeArgs = encodeTimeArgs(startTime + safeLifespan, safeLifespan); + var moduleData = { + modules: [1, 3], + args: [timeArgs], + }; + + await time.increase(safeLifespan); // ff time + + var taskIds = await ctGelatoAutoBot.getTaskIdsByUser(amMain); + expect(taskIds.length).to.be.equal(1); + var [receiver, sesNonce, tsIncrease, tsDecrease, taskId] = + await ctFlowClient1.getFlowData(client1.address, supertokenUSDCx, 0); + expect(receiver).to.be.equal(worker1.address); + expect(sesNonce).to.be.equal(0); + expect(tsIncrease).to.be.equal(now1); + expect(tsDecrease).to.be.equal(0); + expect(taskId).to.be.equal(taskIds.at(0)); + var { + timestamp, + flowRate: flowRateOutput, + deposit, + owedDeposit, + } = await ctCFAV1.getFlow(supertokenUSDCx, amMain, worker1.address); + expect(timestamp).to.be.equal(now1); + expect(flowRateOutput).to.be.equal(flowRateUSDCx); + expect(deposit).to.be.gt(flowRateUSDCx.mul(60 * 60)); + expect(owedDeposit).to.be.equal(0); + + await ctGelatoAutoBot + .connect(gelatoExecutor) + .exec( + amMain, + amMain, + execData, + moduleData, + GELATO_FEE, + amGelatoFee, + true, + true + ); + const tsDecreaseFlow = await time.latest(); + + var taskIds = await ctGelatoAutoBot.getTaskIdsByUser(amMain); + expect(taskIds.length).to.be.equal(0); + var [receiver, sesNonce, tsIncrease, tsDecrease, taskId] = + await ctFlowClient1.getFlowData(client1.address, supertokenUSDCx, 0); + expect(receiver).to.be.equal(worker1.address); + expect(sesNonce).to.be.equal(0); + expect(tsIncrease).to.be.equal(now1); + expect(tsDecrease).to.be.equal(tsDecreaseFlow); + expect(taskId).to.not.be.equal(ethers.constants.HashZero); + var { + timestamp, + flowRate: flowRateOutput, + deposit, + owedDeposit, + } = await ctCFAV1.getFlow(supertokenUSDCx, amMain, worker1.address); + expect(timestamp).to.be.equal(0); + expect(flowRateOutput).to.be.equal(0); + expect(deposit).to.be.equal(0); + expect(owedDeposit).to.be.equal(0); + }); + it("Should auto decrease flow if lifespan reached - update flow if have other viewer", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctCFAV1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + ctGelatoAutoBot, + amMain, + gelatoExecutor, + client1, + client2, + worker1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.01"); + const flowRateDAIx = ethers.utils.parseEther("0.02"); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const amountInvest = ethers.utils.parseEther("100"); + await investToApp(chainId, amMain, client1, amountInvest); + + const ctSessionWorker1 = await ethers.getContractAt( + "Session", + amMain, + worker1 + ); + + var tx = await ctSessionWorker1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + + const minBalance = await ctControlDeployer.getMinimumEndDuration(); + const minLifespan = await ctControlDeployer.getMinimumLifespan(); + const amount = ethers.utils.parseEther("600"); + var tx = (await ctUSDCxClient1.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient1.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var lifespan = 260; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + const now1 = await time.latest(); + + const ctFlowClient2 = await ethers.getContractAt( + "Flow", + amMain, + client2 + ); + const ctUSDCxClient2 = await ethers.getContractAt( + ABI_SUPERTOKEN, + networkConfig[chainId]["addrUSDCx"], + client2 + ); + + var tx = (await ctUSDCxClient2.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient2.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var lifespan = 250; + var tx = await ctFlowClient2.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + const now2 = await time.latest(); + var rc = await ethers.provider.getTransactionReceipt( + rcpt.transactionHash + ); + var block = await ethers.provider.getBlock(rc.blockNumber); + var startTime = block.timestamp; + + var execData = ctFlowClient2.interface.encodeFunctionData( + "decreaseFlow", + [supertokenUSDCx, client2.address, worker1.address, 0, flowRateUSDCx] + ); + var timeArgs = encodeTimeArgs(startTime + lifespan, lifespan); + var moduleData = { + modules: [1, 3], + args: [timeArgs], + }; + + var taskIds = await ctGelatoAutoBot.getTaskIdsByUser(amMain); + expect(taskIds.length).to.be.equal(2); + var [receiver, sesNonce, tsIncrease, tsDecrease, taskId] = + await ctFlowClient1.getFlowData(client1.address, supertokenUSDCx, 0); + expect(receiver).to.be.equal(worker1.address); + expect(sesNonce).to.be.equal(0); + expect(tsIncrease).to.be.equal(now1); + expect(tsDecrease).to.be.equal(0); + expect(taskId).to.be.equal(taskIds.at(0)); + var [receiver, sesNonce, tsIncrease, tsDecrease, taskId] = + await ctFlowClient1.getFlowData(client2.address, supertokenUSDCx, 0); + expect(receiver).to.be.equal(worker1.address); + expect(sesNonce).to.be.equal(0); + expect(tsIncrease).to.be.equal(now2); + expect(tsDecrease).to.be.equal(0); + expect(taskId).to.be.equal(taskIds.at(1)); + var { + timestamp, + flowRate: flowRateOutput, + deposit, + owedDeposit, + } = await ctCFAV1.getFlow(supertokenUSDCx, amMain, worker1.address); + expect(timestamp).to.be.equal(now2); + expect(flowRateOutput).to.be.equal(flowRateUSDCx.mul(2)); + expect(deposit).to.be.gt(flowRateUSDCx.mul(2).mul(60 * 60)); + expect(owedDeposit).to.be.equal(0); + + await time.increase(260); // ff time + + await ctGelatoAutoBot + .connect(gelatoExecutor) + .exec( + amMain, + amMain, + execData, + moduleData, + GELATO_FEE, + amGelatoFee, + true, + true + ); + const tsDecreaseFlow = await time.latest(); + + var taskIds = await ctGelatoAutoBot.getTaskIdsByUser(amMain); + expect(taskIds.length).to.be.equal(1); + var [receiver, sesNonce, tsIncrease, tsDecrease, taskId] = + await ctFlowClient1.getFlowData(client1.address, supertokenUSDCx, 0); + expect(receiver).to.be.equal(worker1.address); + expect(sesNonce).to.be.equal(0); + expect(tsIncrease).to.be.equal(now1); + expect(tsDecrease).to.be.equal(0); + expect(taskId).to.be.equal(taskIds.at(0)); + var [receiver, sesNonce, tsIncrease, tsDecrease, taskId] = + await ctFlowClient1.getFlowData(client2.address, supertokenUSDCx, 0); + expect(receiver).to.be.equal(worker1.address); + expect(sesNonce).to.be.equal(0); + expect(tsIncrease).to.be.equal(now2); + expect(tsDecrease).to.be.equal(tsDecreaseFlow); + expect(taskId).to.not.be.equal(ethers.constants.HashZero); + var { + timestamp, + flowRate: flowRateOutput, + deposit, + owedDeposit, + } = await ctCFAV1.getFlow(supertokenUSDCx, amMain, worker1.address); + expect(timestamp).to.be.equal(tsDecreaseFlow); + expect(flowRateOutput).to.be.equal(flowRateUSDCx); + expect(deposit).to.be.gt(flowRateUSDCx.mul(60 * 60)); + expect(owedDeposit).to.be.equal(0); + }); + it("Should fail to decrease flow if session ended by broadcaster", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctCFAV1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + ctGelatoAutoBot, + amMain, + gelatoExecutor, + client1, + worker1, + } = result; + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.01"); + const flowRateDAIx = ethers.utils.parseEther("0.02"); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const amountInvest = ethers.utils.parseEther("100"); + await investToApp(chainId, amMain, client1, amountInvest); + + const ctSessionWorker1 = await ethers.getContractAt( + "Session", + amMain, + worker1 + ); + var tx = await ctSessionWorker1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + + const minBalance = await ctControlDeployer.getMinimumEndDuration(); + const minLifespan = await ctControlDeployer.getMinimumLifespan(); + const amount = ethers.utils.parseEther("600"); + var tx = (await ctUSDCxClient1.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + var tx = (await ctFlowClient1.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + const lifespan = 260; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + const now1 = await time.latest(); + var rc = await ethers.provider.getTransactionReceipt( + rcpt.transactionHash + ); + var block = await ethers.provider.getBlock(rc.blockNumber); + var startTime = block.timestamp; + + var execData = ctFlowClient1.interface.encodeFunctionData( + "decreaseFlow", + [supertokenUSDCx, client1.address, worker1.address, 0, flowRateUSDCx] + ); + var timeArgs = encodeTimeArgs(startTime + lifespan, lifespan); + var moduleData = { + modules: [1, 3], + args: [timeArgs], + }; + + await time.increase(49); // ff time + + var tx = await ctSessionWorker1.stopSessions([supertokenUSDCx]); + var rcpt = await tx.wait(); + const now2 = await time.latest(); + + await time.increase(9); // ff time + + await expect( + ctGelatoAutoBot + .connect(gelatoExecutor) + .exec( + amMain, + amMain, + execData, + moduleData, + GELATO_FEE, + amGelatoFee, + true, + true + ) + ).to.be.reverted; + }); + }); + describe("closeFlow", async () => { + it("Should revert if lifespan less than minimum lifespan", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctCFAV1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + ctGelatoAutoBot, + amMain, + client1, + worker1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.01"); + const flowRateDAIx = ethers.utils.parseEther("0.02"); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const amountInvest = ethers.utils.parseEther("100"); + await investToApp(chainId, amMain, client1, amountInvest); + + const ctSessionWorker1 = await ethers.getContractAt( + "Session", + amMain, + worker1 + ); + + var tx = await ctSessionWorker1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + + const minBalance = await ctControlDeployer.getMinimumEndDuration(); + const minLifespan = await ctControlDeployer.getMinimumLifespan(); + const amount = ethers.utils.parseEther("600"); + var tx = (await ctUSDCxClient1.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient1.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + const lifespan = 260; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + const now1 = await time.latest(); + + // await time.increase(minLifespan.sub(1).toNumber()); + + await expect( + ctFlowClient1.closeFlow(supertokenUSDCx, 0) + ).to.be.revertedWithCustomError(ctFlowClient1, "TooEarly"); + }); + it("Should revert if session already ended (make sure states not updated as well)", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctCFAV1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + ctGelatoAutoBot, + amMain, + client1, + worker1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.01"); + const flowRateDAIx = ethers.utils.parseEther("0.02"); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const amountInvest = ethers.utils.parseEther("100"); + await investToApp(chainId, amMain, client1, amountInvest); + + const ctSessionWorker1 = await ethers.getContractAt( + "Session", + amMain, + worker1 + ); + + var tx = await ctSessionWorker1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + + const minBalance = await ctControlDeployer.getMinimumEndDuration(); + const minLifespan = await ctControlDeployer.getMinimumLifespan(); + const amount = ethers.utils.parseEther("600"); + var tx = (await ctUSDCxClient1.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient1.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + const lifespan = 260; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + const now1 = await time.latest(); + + await time.increase(minLifespan.sub(1).toNumber()); + + var tx = await ctSessionWorker1.stopSessions([supertokenUSDCx]); + var rcpt = await tx.wait(); + + await expect(ctFlowClient1.closeFlow(supertokenUSDCx, 0)).to.be + .reverted; // reverted because SF flow already closed (reverts on decreaseFlow's deleteFlow) + }); + it("Should ... check if any more revert conditions ... ?"); + it("Should cancel task, close flow and update states", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctCFAV1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + ctGelatoAutoBot, + amMain, + gelatoExecutor, + client1, + worker1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.01"); + const flowRateDAIx = ethers.utils.parseEther("0.02"); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const amountInvest = ethers.utils.parseEther("100"); + await investToApp(chainId, amMain, client1, amountInvest); + + const ctSessionWorker1 = await ethers.getContractAt( + "Session", + amMain, + worker1 + ); + + var tx = await ctSessionWorker1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + + const minBalance = await ctControlDeployer.getMinimumEndDuration(); + const minLifespan = await ctControlDeployer.getMinimumLifespan(); + const amount = ethers.utils.parseEther("600"); + var tx = (await ctUSDCxClient1.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient1.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + const lifespan = 260; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + const now1 = await time.latest(); + var rc = await ethers.provider.getTransactionReceipt( + rcpt.transactionHash + ); + var block = await ethers.provider.getBlock(rc.blockNumber); + var startTime = block.timestamp; + + var execData = ctFlowClient1.interface.encodeFunctionData( + "decreaseFlow", + [supertokenUSDCx, client1.address, worker1.address, 0, flowRateUSDCx] + ); + var timeArgs = encodeTimeArgs(startTime + lifespan, lifespan); + var moduleData = { + modules: [1, 3], + args: [timeArgs], + }; + + await time.increase(minLifespan.sub(1).toNumber()); + + var taskIds = await ctGelatoAutoBot.getTaskIdsByUser(amMain); + expect(taskIds.length).to.be.equal(1); + var [receiver, sesNonce, tsIncrease, tsDecrease, taskId] = + await ctFlowClient1.getFlowData(client1.address, supertokenUSDCx, 0); + expect(receiver).to.be.equal(worker1.address); + expect(sesNonce).to.be.equal(0); + expect(tsIncrease).to.be.equal(now1); + expect(tsDecrease).to.be.equal(0); + expect(taskId).to.be.equal(taskIds.at(0)); + var { + timestamp, + flowRate: flowRateOutput, + deposit, + owedDeposit, + } = await ctCFAV1.getFlow(supertokenUSDCx, amMain, worker1.address); + expect(timestamp).to.be.equal(now1); + expect(flowRateOutput).to.be.equal(flowRateUSDCx); + expect(deposit).to.be.gt(flowRateUSDCx.mul(60 * 60)); + expect(owedDeposit).to.be.equal(0); + + var tx = await ctFlowClient1.closeFlow(supertokenUSDCx, 0); + var rcpt = await tx.wait(); + const now2 = await time.latest(); + + var taskIds = await ctGelatoAutoBot.getTaskIdsByUser(amMain); + expect(taskIds.length).to.be.equal(0); + var [receiver, sesNonce, tsIncrease, tsDecrease, taskId] = + await ctFlowClient1.getFlowData(client1.address, supertokenUSDCx, 0); + expect(receiver).to.be.equal(worker1.address); + expect(sesNonce).to.be.equal(0); + expect(tsIncrease).to.be.equal(now1); + expect(tsDecrease).to.be.equal(now2); + expect(taskId).to.not.be.equal(ethers.constants.HashZero); + var { + timestamp, + flowRate: flowRateOutput, + deposit, + owedDeposit, + } = await ctCFAV1.getFlow(supertokenUSDCx, amMain, worker1.address); + expect(timestamp).to.be.equal(0); + expect(flowRateOutput).to.be.equal(0); + expect(deposit).to.be.equal(0); + expect(owedDeposit).to.be.equal(0); + }); + it("Should close flows from different viewer to single broadcaster", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctCFAV1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + ctGelatoAutoBot, + amMain, + client1, + client2, + worker1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.01"); + const flowRateDAIx = ethers.utils.parseEther("0.02"); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const amountInvest = ethers.utils.parseEther("100"); + await investToApp(chainId, amMain, client1, amountInvest); + + const ctSessionWorker1 = await ethers.getContractAt( + "Session", + amMain, + worker1 + ); + + var tx = await ctSessionWorker1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + + const minBalance = await ctControlDeployer.getMinimumEndDuration(); + const minLifespan = await ctControlDeployer.getMinimumLifespan(); + const amount = ethers.utils.parseEther("600"); + var tx = (await ctUSDCxClient1.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient1.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var lifespan = 260; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + const now1 = await time.latest(); + + const ctFlowClient2 = await ethers.getContractAt( + "Flow", + amMain, + client2 + ); + const ctUSDCxClient2 = await ethers.getContractAt( + ABI_SUPERTOKEN, + networkConfig[chainId]["addrUSDCx"], + client2 + ); + + var tx = (await ctUSDCxClient2.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient2.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var lifespan = 250; + var tx = await ctFlowClient2.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + const now2 = await time.latest(); + + var taskIds = await ctGelatoAutoBot.getTaskIdsByUser(amMain); + expect(taskIds.length).to.be.equal(2); + + await time.increase(minLifespan.sub(1).toNumber()); + + var tx = await ctFlowClient1.closeFlow(supertokenUSDCx, 0); + var rcpt = await tx.wait(); + const now3 = await time.latest(); + + var tx = await ctFlowClient2.closeFlow(supertokenUSDCx, 0); + var rcpt = await tx.wait(); + const now4 = await time.latest(); + + var taskIds = await ctGelatoAutoBot.getTaskIdsByUser(amMain); + expect(taskIds.length).to.be.equal(0); + var [receiver, sesNonce, tsIncrease, tsDecrease, taskId] = + await ctFlowClient1.getFlowData(client1.address, supertokenUSDCx, 0); + expect(receiver).to.be.equal(worker1.address); + expect(sesNonce).to.be.equal(0); + expect(tsIncrease).to.be.equal(now1); + expect(tsDecrease).to.be.equal(now3); + expect(taskId).to.not.be.equal(ethers.constants.HashZero); + var [receiver, sesNonce, tsIncrease, tsDecrease, taskId] = + await ctFlowClient1.getFlowData(client2.address, supertokenUSDCx, 0); + expect(receiver).to.be.equal(worker1.address); + expect(sesNonce).to.be.equal(0); + expect(tsIncrease).to.be.equal(now2); + expect(tsDecrease).to.be.equal(now4); + expect(taskId).to.not.be.equal(ethers.constants.HashZero); + var { + timestamp, + flowRate: flowRateOutput, + deposit, + owedDeposit, + } = await ctCFAV1.getFlow(supertokenUSDCx, amMain, worker1.address); + expect(timestamp).to.be.equal(0); + expect(flowRateOutput).to.be.equal(0); + expect(deposit).to.be.equal(0); + expect(owedDeposit).to.be.equal(0); + }); + }); + describe("getDepositUser/getDepositTotal", async () => { + it("Should return deposit accordingly", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctCFAV1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + ctGelatoAutoBot, + amMain, + client1, + client2, + worker1, + } = result; + + const ctFlowClient2 = await ethers.getContractAt( + "Flow", + amMain, + client2 + ); + const ctUSDCxClient2 = await ethers.getContractAt( + ABI_SUPERTOKEN, + networkConfig[chainId]["addrUSDCx"], + client2 + ); + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.01"); + const flowRateDAIx = ethers.utils.parseEther("0.02"); + + expect( + await ctFlowClient1.getDepositUser(client1.address, supertokenUSDCx) + ).to.be.equal(0); + expect( + await ctFlowClient1.getDepositUser(client2.address, supertokenUSDCx) + ).to.be.equal(0); + expect( + await ctFlowClient1.getDepositTotal(supertokenUSDCx) + ).to.be.equal(0); + + const amount1 = ethers.utils.parseEther("50"); + var tx = (await ctUSDCxClient1.approve( + amMain, + amount1 + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient1.depositSuperToken( + supertokenUSDCx, + amount1 + )) as ContractTransaction; + var rcpt = await tx.wait(); + + const amount2 = ethers.utils.parseEther("30"); + var tx = (await ctUSDCxClient2.approve( + amMain, + amount2 + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient2.depositSuperToken( + supertokenUSDCx, + amount2 + )) as ContractTransaction; + var rcpt = await tx.wait(); + + expect( + await ctFlowClient1.getDepositUser(client1.address, supertokenUSDCx) + ).to.be.equal(amount1); + expect( + await ctFlowClient1.getDepositUser(client2.address, supertokenUSDCx) + ).to.be.equal(amount2); + expect( + await ctFlowClient1.getDepositTotal(supertokenUSDCx) + ).to.be.equal(amount1.add(amount2)); + + expect( + await ctFlowClient1.getDepositTotal(supertokenUSDCx) + ).to.be.equal(await ctUSDCxClient1.balanceOf(amMain)); + }); + }); + describe("isViewSessionAllowed", async () => { + it("Should be false if session not live", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctCFAV1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + ctGelatoAutoBot, + amMain, + client1, + worker1, + } = result; + + expect( + await ctFlowClient1.isViewSessionAllowed( + client1.address, + worker1.address + ) + ).to.be.equal(false); + }); + it("Should be false if session live but flow not opened", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctCFAV1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + ctGelatoAutoBot, + amMain, + client1, + worker1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.01"); + const flowRateDAIx = ethers.utils.parseEther("0.02"); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const amountInvest = ethers.utils.parseEther("100"); + await investToApp(chainId, amMain, client1, amountInvest); + + const ctSessionWorker1 = await ethers.getContractAt( + "Session", + amMain, + worker1 + ); + + var tx = await ctSessionWorker1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + + expect( + await ctFlowClient1.isViewSessionAllowed( + client1.address, + worker1.address + ) + ).to.be.equal(false); + }); + it("Should be true if session live and flow opened", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctCFAV1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + ctGelatoAutoBot, + amMain, + client1, + worker1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.01"); + const flowRateDAIx = ethers.utils.parseEther("0.02"); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const amountInvest = ethers.utils.parseEther("100"); + await investToApp(chainId, amMain, client1, amountInvest); + + const ctSessionWorker1 = await ethers.getContractAt( + "Session", + amMain, + worker1 + ); + + var tx = await ctSessionWorker1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + + const minBalance = await ctControlDeployer.getMinimumEndDuration(); + const minLifespan = await ctControlDeployer.getMinimumLifespan(); + const amount = ethers.utils.parseEther("600"); + var tx = (await ctUSDCxClient1.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient1.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + const lifespan = 260; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + + expect( + await ctFlowClient1.isViewSessionAllowed( + client1.address, + worker1.address + ) + ).to.be.equal(true); + }); + it("Should be false if things ended from session side", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctCFAV1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + ctGelatoAutoBot, + amMain, + client1, + worker1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.01"); + const flowRateDAIx = ethers.utils.parseEther("0.02"); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const amountInvest = ethers.utils.parseEther("100"); + await investToApp(chainId, amMain, client1, amountInvest); + + const ctSessionWorker1 = await ethers.getContractAt( + "Session", + amMain, + worker1 + ); + + var tx = await ctSessionWorker1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + + const minBalance = await ctControlDeployer.getMinimumEndDuration(); + const minLifespan = await ctControlDeployer.getMinimumLifespan(); + const amount = ethers.utils.parseEther("600"); + var tx = (await ctUSDCxClient1.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient1.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + const lifespan = 260; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + + expect( + await ctFlowClient1.isViewSessionAllowed( + client1.address, + worker1.address + ) + ).to.be.equal(true); + + var tx = await ctSessionWorker1.stopSessions([supertokenUSDCx]); + var rcpt = await tx.wait(); + + expect( + await ctFlowClient1.isViewSessionAllowed( + client1.address, + worker1.address + ) + ).to.be.equal(false); + }); + it("Should be false if things ended from flow side", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctCFAV1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + ctGelatoAutoBot, + amMain, + client1, + worker1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.01"); + const flowRateDAIx = ethers.utils.parseEther("0.02"); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const amountInvest = ethers.utils.parseEther("100"); + await investToApp(chainId, amMain, client1, amountInvest); + + const ctSessionWorker1 = await ethers.getContractAt( + "Session", + amMain, + worker1 + ); + + var tx = await ctSessionWorker1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + + const minBalance = await ctControlDeployer.getMinimumEndDuration(); + const minLifespan = await ctControlDeployer.getMinimumLifespan(); + const amount = ethers.utils.parseEther("600"); + var tx = (await ctUSDCxClient1.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient1.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + const lifespan = 260; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + + expect( + await ctFlowClient1.isViewSessionAllowed( + client1.address, + worker1.address + ) + ).to.be.equal(true); + + await time.increase(minLifespan); + + var tx = await ctFlowClient1.closeFlow(supertokenUSDCx, 0); + var rcpt = await tx.wait(); + + expect( + await ctFlowClient1.isViewSessionAllowed( + client1.address, + worker1.address + ) + ).to.be.equal(false); + }); + it("Should be false if things ended from session side and new session started (no additional flow action)", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctCFAV1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + ctGelatoAutoBot, + amMain, + client1, + worker1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.01"); + const flowRateDAIx = ethers.utils.parseEther("0.02"); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const amountInvest = ethers.utils.parseEther("100"); + await investToApp(chainId, amMain, client1, amountInvest); + + const ctSessionWorker1 = await ethers.getContractAt( + "Session", + amMain, + worker1 + ); + + var tx = await ctSessionWorker1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + + const minBalance = await ctControlDeployer.getMinimumEndDuration(); + const minLifespan = await ctControlDeployer.getMinimumLifespan(); + const amount = ethers.utils.parseEther("600"); + var tx = (await ctUSDCxClient1.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient1.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + const lifespan = 260; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + + expect( + await ctFlowClient1.isViewSessionAllowed( + client1.address, + worker1.address + ) + ).to.be.equal(true); + + // await time.increase(minLifespan); + + var tx = await ctSessionWorker1.stopSessions([supertokenUSDCx]); + var rcpt = await tx.wait(); + // var tx = await ctFlowClient1.closeFlow(supertokenUSDCx, 0); + // var rcpt = await tx.wait(); + + expect( + await ctFlowClient1.isViewSessionAllowed( + client1.address, + worker1.address + ) + ).to.be.equal(false); + + var tx = await ctSessionWorker1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + + expect( + await ctFlowClient1.isViewSessionAllowed( + client1.address, + worker1.address + ) + ).to.be.equal(false); + }); + it("Should be true if things ended from session side and new session + flow started", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctCFAV1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + ctGelatoAutoBot, + amMain, + client1, + worker1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.01"); + const flowRateDAIx = ethers.utils.parseEther("0.02"); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const amountInvest = ethers.utils.parseEther("100"); + await investToApp(chainId, amMain, client1, amountInvest); + + const ctSessionWorker1 = await ethers.getContractAt( + "Session", + amMain, + worker1 + ); + + var tx = await ctSessionWorker1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + + const minBalance = await ctControlDeployer.getMinimumEndDuration(); + const minLifespan = await ctControlDeployer.getMinimumLifespan(); + const amount = ethers.utils.parseEther("600"); + var tx = (await ctUSDCxClient1.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient1.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + const lifespan = 260; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + + expect( + await ctFlowClient1.isViewSessionAllowed( + client1.address, + worker1.address + ) + ).to.be.equal(true); + + // await time.increase(minLifespan); + + var tx = await ctSessionWorker1.stopSessions([supertokenUSDCx]); + var rcpt = await tx.wait(); + // var tx = await ctFlowClient1.closeFlow(supertokenUSDCx, 0); + // var rcpt = await tx.wait(); + + expect( + await ctFlowClient1.isViewSessionAllowed( + client1.address, + worker1.address + ) + ).to.be.equal(false); + + var tx = await ctSessionWorker1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + + expect( + await ctFlowClient1.isViewSessionAllowed( + client1.address, + worker1.address + ) + ).to.be.equal(true); + }); + it("Should be true if things ended from flow side first then session side and new session + flow started", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctCFAV1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + ctGelatoAutoBot, + amMain, + client1, + worker1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.01"); + const flowRateDAIx = ethers.utils.parseEther("0.02"); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const amountInvest = ethers.utils.parseEther("100"); + await investToApp(chainId, amMain, client1, amountInvest); + + const ctSessionWorker1 = await ethers.getContractAt( + "Session", + amMain, + worker1 + ); + + var tx = await ctSessionWorker1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + + const minBalance = await ctControlDeployer.getMinimumEndDuration(); + const minLifespan = await ctControlDeployer.getMinimumLifespan(); + const amount = ethers.utils.parseEther("600"); + var tx = (await ctUSDCxClient1.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient1.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + const lifespan = 260; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + + expect( + await ctFlowClient1.isViewSessionAllowed( + client1.address, + worker1.address + ) + ).to.be.equal(true); + + await time.increase(minLifespan); + + var tx = await ctFlowClient1.closeFlow(supertokenUSDCx, 0); + var rcpt = await tx.wait(); + + var tx = await ctSessionWorker1.stopSessions([supertokenUSDCx]); + var rcpt = await tx.wait(); + // var tx = await ctFlowClient1.closeFlow(supertokenUSDCx, 0); + // var rcpt = await tx.wait(); + + expect( + await ctFlowClient1.isViewSessionAllowed( + client1.address, + worker1.address + ) + ).to.be.equal(false); + + var tx = await ctSessionWorker1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + + expect( + await ctFlowClient1.isViewSessionAllowed( + client1.address, + worker1.address + ) + ).to.be.equal(true); + }); + it("1session - Should be false if session live but flow not opened", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctCFAV1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + ctGelatoAutoBot, + amMain, + client1, + worker1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.01"); + const flowRateDAIx = ethers.utils.parseEther("0.02"); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const amountInvest = ethers.utils.parseEther("100"); + await investToApp(chainId, amMain, client1, amountInvest); + + const ctSessionWorker1 = await ethers.getContractAt( + "Session", + amMain, + worker1 + ); + + var tx = await ctSessionWorker1.startSession( + supertokenUSDCx, + flowRateUSDCx, + 0 + ); + var rcpt = await tx.wait(); + + expect( + await ctFlowClient1.isViewSessionAllowed( + client1.address, + worker1.address + ) + ).to.be.equal(false); + }); + it("1session - Should be true if session live and flow opened", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctCFAV1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + ctGelatoAutoBot, + amMain, + client1, + worker1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.01"); + const flowRateDAIx = ethers.utils.parseEther("0.02"); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const amountInvest = ethers.utils.parseEther("100"); + await investToApp(chainId, amMain, client1, amountInvest); + + const ctSessionWorker1 = await ethers.getContractAt( + "Session", + amMain, + worker1 + ); + + var tx = await ctSessionWorker1.startSession( + supertokenUSDCx, + flowRateUSDCx, + 0 + ); + var rcpt = await tx.wait(); + + const minBalance = await ctControlDeployer.getMinimumEndDuration(); + const minLifespan = await ctControlDeployer.getMinimumLifespan(); + const amount = ethers.utils.parseEther("600"); + var tx = (await ctUSDCxClient1.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient1.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + const lifespan = 260; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + + expect( + await ctFlowClient1.isViewSessionAllowed( + client1.address, + worker1.address + ) + ).to.be.equal(true); + }); + it("1session - Should be false if things ended from session side", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctCFAV1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + ctGelatoAutoBot, + amMain, + client1, + worker1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.01"); + const flowRateDAIx = ethers.utils.parseEther("0.02"); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const amountInvest = ethers.utils.parseEther("100"); + await investToApp(chainId, amMain, client1, amountInvest); + + const ctSessionWorker1 = await ethers.getContractAt( + "Session", + amMain, + worker1 + ); + + var tx = await ctSessionWorker1.startSession( + supertokenUSDCx, + flowRateUSDCx, + 0 + ); + var rcpt = await tx.wait(); + + const minBalance = await ctControlDeployer.getMinimumEndDuration(); + const minLifespan = await ctControlDeployer.getMinimumLifespan(); + const amount = ethers.utils.parseEther("600"); + var tx = (await ctUSDCxClient1.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient1.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + const lifespan = 260; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + + expect( + await ctFlowClient1.isViewSessionAllowed( + client1.address, + worker1.address + ) + ).to.be.equal(true); + + var tx = await ctSessionWorker1.stopSession(supertokenUSDCx); + var rcpt = await tx.wait(); + + expect( + await ctFlowClient1.isViewSessionAllowed( + client1.address, + worker1.address + ) + ).to.be.equal(false); + }); + it("1session - Should be false if things ended from flow side", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctCFAV1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + ctGelatoAutoBot, + amMain, + client1, + worker1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.01"); + const flowRateDAIx = ethers.utils.parseEther("0.02"); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const amountInvest = ethers.utils.parseEther("100"); + await investToApp(chainId, amMain, client1, amountInvest); + + const ctSessionWorker1 = await ethers.getContractAt( + "Session", + amMain, + worker1 + ); + + var tx = await ctSessionWorker1.startSession( + supertokenUSDCx, + flowRateUSDCx, + 0 + ); + var rcpt = await tx.wait(); + + const minBalance = await ctControlDeployer.getMinimumEndDuration(); + const minLifespan = await ctControlDeployer.getMinimumLifespan(); + const amount = ethers.utils.parseEther("600"); + var tx = (await ctUSDCxClient1.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient1.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + const lifespan = 260; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + + expect( + await ctFlowClient1.isViewSessionAllowed( + client1.address, + worker1.address + ) + ).to.be.equal(true); + + await time.increase(minLifespan); + + var tx = await ctFlowClient1.closeFlow(supertokenUSDCx, 0); + var rcpt = await tx.wait(); + + expect( + await ctFlowClient1.isViewSessionAllowed( + client1.address, + worker1.address + ) + ).to.be.equal(false); + }); + it("1session - Should be false if things ended from session side and new session started (no additional flow action)", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctCFAV1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + ctGelatoAutoBot, + amMain, + client1, + worker1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.01"); + const flowRateDAIx = ethers.utils.parseEther("0.02"); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const amountInvest = ethers.utils.parseEther("100"); + await investToApp(chainId, amMain, client1, amountInvest); + + const ctSessionWorker1 = await ethers.getContractAt( + "Session", + amMain, + worker1 + ); + + var tx = await ctSessionWorker1.startSession( + supertokenUSDCx, + flowRateUSDCx, + 0 + ); + var rcpt = await tx.wait(); + + const minBalance = await ctControlDeployer.getMinimumEndDuration(); + const minLifespan = await ctControlDeployer.getMinimumLifespan(); + const amount = ethers.utils.parseEther("600"); + var tx = (await ctUSDCxClient1.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient1.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + const lifespan = 260; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + + expect( + await ctFlowClient1.isViewSessionAllowed( + client1.address, + worker1.address + ) + ).to.be.equal(true); + + // await time.increase(minLifespan); + + var tx = await ctSessionWorker1.stopSession(supertokenUSDCx); + var rcpt = await tx.wait(); + // var tx = await ctFlowClient1.closeFlow(supertokenUSDCx, 0); + // var rcpt = await tx.wait(); + + expect( + await ctFlowClient1.isViewSessionAllowed( + client1.address, + worker1.address + ) + ).to.be.equal(false); + + var tx = await ctSessionWorker1.startSession( + supertokenUSDCx, + flowRateUSDCx, + 0 + ); + var rcpt = await tx.wait(); + + expect( + await ctFlowClient1.isViewSessionAllowed( + client1.address, + worker1.address + ) + ).to.be.equal(false); + }); + it("1session - Should be true if things ended from session side and new session + flow started", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctCFAV1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + ctGelatoAutoBot, + amMain, + client1, + worker1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.01"); + const flowRateDAIx = ethers.utils.parseEther("0.02"); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const amountInvest = ethers.utils.parseEther("100"); + await investToApp(chainId, amMain, client1, amountInvest); + + const ctSessionWorker1 = await ethers.getContractAt( + "Session", + amMain, + worker1 + ); + + var tx = await ctSessionWorker1.startSession( + supertokenUSDCx, + flowRateUSDCx, + 0 + ); + var rcpt = await tx.wait(); + + const minBalance = await ctControlDeployer.getMinimumEndDuration(); + const minLifespan = await ctControlDeployer.getMinimumLifespan(); + const amount = ethers.utils.parseEther("600"); + var tx = (await ctUSDCxClient1.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient1.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + const lifespan = 260; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + + expect( + await ctFlowClient1.isViewSessionAllowed( + client1.address, + worker1.address + ) + ).to.be.equal(true); + + // await time.increase(minLifespan); + + var tx = await ctSessionWorker1.stopSession(supertokenUSDCx); + var rcpt = await tx.wait(); + // var tx = await ctFlowClient1.closeFlow(supertokenUSDCx, 0); + // var rcpt = await tx.wait(); + + expect( + await ctFlowClient1.isViewSessionAllowed( + client1.address, + worker1.address + ) + ).to.be.equal(false); + + var tx = await ctSessionWorker1.startSession( + supertokenUSDCx, + flowRateUSDCx, + 0 + ); + var rcpt = await tx.wait(); + + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + + expect( + await ctFlowClient1.isViewSessionAllowed( + client1.address, + worker1.address + ) + ).to.be.equal(true); + }); + it("1session - Should be true if things ended from flow side first then session side and new session + flow started", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctCFAV1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + ctGelatoAutoBot, + amMain, + client1, + worker1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.01"); + const flowRateDAIx = ethers.utils.parseEther("0.02"); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const amountInvest = ethers.utils.parseEther("100"); + await investToApp(chainId, amMain, client1, amountInvest); + + const ctSessionWorker1 = await ethers.getContractAt( + "Session", + amMain, + worker1 + ); + + var tx = await ctSessionWorker1.startSession( + supertokenUSDCx, + flowRateUSDCx, + 0 + ); + var rcpt = await tx.wait(); + + const minBalance = await ctControlDeployer.getMinimumEndDuration(); + const minLifespan = await ctControlDeployer.getMinimumLifespan(); + const amount = ethers.utils.parseEther("600"); + var tx = (await ctUSDCxClient1.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient1.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + const lifespan = 260; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + + expect( + await ctFlowClient1.isViewSessionAllowed( + client1.address, + worker1.address + ) + ).to.be.equal(true); + + await time.increase(minLifespan); + + var tx = await ctFlowClient1.closeFlow(supertokenUSDCx, 0); + var rcpt = await tx.wait(); + + var tx = await ctSessionWorker1.stopSession(supertokenUSDCx); + var rcpt = await tx.wait(); + // var tx = await ctFlowClient1.closeFlow(supertokenUSDCx, 0); + // var rcpt = await tx.wait(); + + expect( + await ctFlowClient1.isViewSessionAllowed( + client1.address, + worker1.address + ) + ).to.be.equal(false); + + var tx = await ctSessionWorker1.startSession( + supertokenUSDCx, + flowRateUSDCx, + 0 + ); + var rcpt = await tx.wait(); + + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + + expect( + await ctFlowClient1.isViewSessionAllowed( + client1.address, + worker1.address + ) + ).to.be.equal(true); + }); + }); + describe("withdrawSuperTokens", async () => { + // it("Should revert array length not match", async () => { + // const result = await loadFixture(init); + // if (!result) { + // expect(true).to.be.equal(false); + // return; + // } + // const { + // chainId, + // ctUSDCxClient1, + // ctCFAV1, + // ctControlDeployer, + // ctSessionClient1, + // ctFlowClient1, + // ctGelatoAutoBot, + // amMain, + // client1, + // worker1, + // } = result; + + // const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + // const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + // const flowRateUSDCx = ethers.utils.parseEther("0.0001"); + // const flowRateDAIx = ethers.utils.parseEther("0.0002"); + + // const amount = ethers.utils.parseEther("2"); + // await expect( + // ctFlowClient1.withdrawSuperTokens( + // [supertokenUSDCx, supertokenDAIx], + // [amount] + // ) + // ).to.be.revertedWithCustomError(ctFlowClient1, "ArrayLengthNotMatch"); + // }); + it("Should revert if flow still active", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctCFAV1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + ctGelatoAutoBot, + amMain, + client1, + worker1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.01"); + const flowRateDAIx = ethers.utils.parseEther("0.02"); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const amountInvest = ethers.utils.parseEther("100"); + await investToApp(chainId, amMain, client1, amountInvest); + + const ctSessionWorker1 = await ethers.getContractAt( + "Session", + amMain, + worker1 + ); + + var tx = await ctSessionWorker1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + + const minBalance = await ctControlDeployer.getMinimumEndDuration(); + const minLifespan = await ctControlDeployer.getMinimumLifespan(); + const amount = ethers.utils.parseEther("600"); + var tx = (await ctUSDCxClient1.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient1.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + const lifespan = 260; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + const now1 = await time.latest(); + + const amt = ethers.utils.parseEther("1"); + await expect( + ctFlowClient1.withdrawSuperToken(supertokenUSDCx, amt) + ).to.be.revertedWithCustomError(ctFlowClient1, "HasActiveFlow"); + }); + it("Should revert if insufficient assets", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctCFAV1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + ctGelatoAutoBot, + amMain, + client1, + worker1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.0001"); + const flowRateDAIx = ethers.utils.parseEther("0.0002"); + + const amount = ethers.utils.parseEther("2"); + await expect( + ctFlowClient1.withdrawSuperToken(supertokenUSDCx, amount) + ).to.be.revertedWithCustomError(ctFlowClient1, "InsufficientFunds"); + }); + it("Should withdraw full amount if no flow started", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctCFAV1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + ctGelatoAutoBot, + amMain, + gelatoExecutor, + client1, + worker1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.01"); + const flowRateDAIx = ethers.utils.parseEther("0.02"); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const amountInvest = ethers.utils.parseEther("100"); + await investToApp(chainId, amMain, client1, amountInvest); + + const ctSessionWorker1 = await ethers.getContractAt( + "Session", + amMain, + worker1 + ); + + var tx = await ctSessionWorker1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + + const minBalance = await ctControlDeployer.getMinimumEndDuration(); + const minLifespan = await ctControlDeployer.getMinimumLifespan(); + const amount = ethers.utils.parseEther("600"); + var tx = (await ctUSDCxClient1.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient1.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + expect( + await ctFlowClient1.getDepositUser(client1.address, supertokenUSDCx) + ).to.be.equal(amount); + expect( + await ctFlowClient1.getAmountFlowed(client1.address, supertokenUSDCx) + ).to.be.equal(0); + const bal1 = await ctUSDCxClient1.balanceOf(client1.address); + + var tx = (await ctFlowClient1.withdrawSuperToken( + supertokenUSDCx, + amount + )) as any; + var rcpt = await tx.wait(); + + expect( + await ctFlowClient1.getDepositUser(client1.address, supertokenUSDCx) + ).to.be.equal(0); + expect( + await ctFlowClient1.getAmountFlowed(client1.address, supertokenUSDCx) + ).to.be.equal(0); + const bal2 = await ctUSDCxClient1.balanceOf(client1.address); + expect(bal2).to.be.equal(bal1.add(amount)); + }); + it("Should revert withdraw if active flow", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctCFAV1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + ctGelatoAutoBot, + amMain, + gelatoExecutor, + client1, + worker1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.01"); + const flowRateDAIx = ethers.utils.parseEther("0.02"); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const amountInvest = ethers.utils.parseEther("100"); + await investToApp(chainId, amMain, client1, amountInvest); + + const ctSessionWorker1 = await ethers.getContractAt( + "Session", + amMain, + worker1 + ); + + var tx = await ctSessionWorker1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + + const minBalance = await ctControlDeployer.getMinimumEndDuration(); + const minLifespan = await ctControlDeployer.getMinimumLifespan(); + const amount = ethers.utils.parseEther("600"); + var tx = (await ctUSDCxClient1.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient1.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + const lifespan = 260; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + const now1 = await time.latest(); + + expect( + await ctFlowClient1.getDepositUser(client1.address, supertokenUSDCx) + ).to.be.equal(amount); + expect( + await ctFlowClient1.getAmountFlowed(client1.address, supertokenUSDCx) + ).to.be.equal(0); + + await expect( + ctFlowClient1.withdrawSuperToken(supertokenUSDCx, amount) + ).to.be.revertedWithCustomError(ctFlowClient1, "HasActiveFlow"); + + expect( + await ctFlowClient1.getDepositUser(client1.address, supertokenUSDCx) + ).to.be.equal(amount); + expect( + await ctFlowClient1.getAmountFlowed(client1.address, supertokenUSDCx) + ).to.be.equal(0); + }); + it("Should withdraw lesser amount after flow end - session stop", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctCFAV1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + ctGelatoAutoBot, + amMain, + gelatoExecutor, + client1, + worker1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.01"); + const flowRateDAIx = ethers.utils.parseEther("0.02"); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const amountInvest = ethers.utils.parseEther("100"); + await investToApp(chainId, amMain, client1, amountInvest); + + const ctSessionWorker1 = await ethers.getContractAt( + "Session", + amMain, + worker1 + ); + + var tx = await ctSessionWorker1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + + const minBalance = await ctControlDeployer.getMinimumEndDuration(); + const minLifespan = await ctControlDeployer.getMinimumLifespan(); + const amount = ethers.utils.parseEther("600"); + var tx = (await ctUSDCxClient1.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient1.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + const lifespan = 260; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + const now1 = await time.latest(); + + expect( + await ctFlowClient1.getDepositUser(client1.address, supertokenUSDCx) + ).to.be.equal(amount); + expect( + await ctFlowClient1.getAmountFlowed(client1.address, supertokenUSDCx) + ).to.be.equal(0); + + var fft = minLifespan.sub(1).toNumber(); + await time.increase(fft); + + var tx = await ctSessionWorker1.stopSession(supertokenUSDCx); + var rcpt = await tx.wait(); + const now2 = await time.latest(); + + expect( + await ctFlowClient1.getDepositUser(client1.address, supertokenUSDCx) + ).to.be.equal(amount); + expect( + await ctFlowClient1.getAmountFlowed(client1.address, supertokenUSDCx) + ).to.be.equal(flowRateUSDCx.mul(now2 - now1)); + const bal1 = await ctUSDCxClient1.balanceOf(client1.address); + + var tx = (await ctFlowClient1.withdrawSuperToken( + supertokenUSDCx, + amount.sub(flowRateUSDCx.mul(now2 - now1)) + )) as any; + var rcpt = await tx.wait(); + + expect( + await ctFlowClient1.getDepositUser(client1.address, supertokenUSDCx) + ).to.be.equal(0); + expect( + await ctFlowClient1.getAmountFlowed(client1.address, supertokenUSDCx) + ).to.be.equal(0); + const bal2 = await ctUSDCxClient1.balanceOf(client1.address); + expect(bal2).to.be.equal( + bal1.add(amount.sub(flowRateUSDCx.mul(now2 - now1))) + ); + }); + it("Should withdraw lesser amount after flow end - close flow", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctCFAV1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + ctGelatoAutoBot, + amMain, + gelatoExecutor, + client1, + worker1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.01"); + const flowRateDAIx = ethers.utils.parseEther("0.02"); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const amountInvest = ethers.utils.parseEther("100"); + await investToApp(chainId, amMain, client1, amountInvest); + + const ctSessionWorker1 = await ethers.getContractAt( + "Session", + amMain, + worker1 + ); + + var tx = await ctSessionWorker1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + + const minBalance = await ctControlDeployer.getMinimumEndDuration(); + const minLifespan = await ctControlDeployer.getMinimumLifespan(); + const amount = ethers.utils.parseEther("600"); + var tx = (await ctUSDCxClient1.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient1.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + const lifespan = 260; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + const now1 = await time.latest(); + + expect( + await ctFlowClient1.getDepositUser(client1.address, supertokenUSDCx) + ).to.be.equal(amount); + expect( + await ctFlowClient1.getAmountFlowed(client1.address, supertokenUSDCx) + ).to.be.equal(0); + + var fft = minLifespan.sub(1).toNumber(); + await time.increase(fft); + + var tx = await ctFlowClient1.closeFlow(supertokenUSDCx, 0); + var rcpt = await tx.wait(); + const now2 = await time.latest(); + + expect( + await ctFlowClient1.getDepositUser(client1.address, supertokenUSDCx) + ).to.be.equal(amount); + expect( + await ctFlowClient1.getAmountFlowed(client1.address, supertokenUSDCx) + ).to.be.equal(flowRateUSDCx.mul(now2 - now1)); + const bal1 = await ctUSDCxClient1.balanceOf(client1.address); + + var tx = (await ctFlowClient1.withdrawSuperToken( + supertokenUSDCx, + amount.sub(flowRateUSDCx.mul(now2 - now1)) + )) as any; + var rcpt = await tx.wait(); + + expect( + await ctFlowClient1.getDepositUser(client1.address, supertokenUSDCx) + ).to.be.equal(0); + expect( + await ctFlowClient1.getAmountFlowed(client1.address, supertokenUSDCx) + ).to.be.equal(0); + const bal2 = await ctUSDCxClient1.balanceOf(client1.address); + expect(bal2).to.be.equal( + bal1.add(amount.sub(flowRateUSDCx.mul(now2 - now1))) + ); + }); + it("Should withdraw lesser amount after flow end - auto decrease flow", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctCFAV1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + ctGelatoAutoBot, + amMain, + gelatoExecutor, + client1, + worker1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.01"); + const flowRateDAIx = ethers.utils.parseEther("0.02"); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const amountInvest = ethers.utils.parseEther("100"); + await investToApp(chainId, amMain, client1, amountInvest); + + const ctSessionWorker1 = await ethers.getContractAt( + "Session", + amMain, + worker1 + ); + + var tx = await ctSessionWorker1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + + const minBalance = await ctControlDeployer.getMinimumEndDuration(); + const minLifespan = await ctControlDeployer.getMinimumLifespan(); + const amount = ethers.utils.parseEther("600"); + var tx = (await ctUSDCxClient1.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient1.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + const lifespan = 260; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + const now1 = await time.latest(); + var rc = await ethers.provider.getTransactionReceipt( + rcpt.transactionHash + ); + var block = await ethers.provider.getBlock(rc.blockNumber); + var startTime = block.timestamp; + + var execData = ctFlowClient1.interface.encodeFunctionData( + "decreaseFlow", + [supertokenUSDCx, client1.address, worker1.address, 0, flowRateUSDCx] + ); + var timeArgs = encodeTimeArgs(startTime + lifespan, lifespan); + var moduleData = { + modules: [1, 3], + args: [timeArgs], + }; + + await time.increase(lifespan); // ff time + + expect( + await ctFlowClient1.getDepositUser(client1.address, supertokenUSDCx) + ).to.be.equal(amount); + expect( + await ctFlowClient1.getAmountFlowed(client1.address, supertokenUSDCx) + ).to.be.equal(0); + + var fft = minLifespan.sub(1).toNumber(); + await time.increase(fft); + + await ctGelatoAutoBot + .connect(gelatoExecutor) + .exec( + amMain, + amMain, + execData, + moduleData, + GELATO_FEE, + amGelatoFee, + true, + true + ); + const now2 = await time.latest(); + + expect( + await ctFlowClient1.getDepositUser(client1.address, supertokenUSDCx) + ).to.be.equal(amount); + expect( + await ctFlowClient1.getAmountFlowed(client1.address, supertokenUSDCx) + ).to.be.equal(flowRateUSDCx.mul(now2 - now1)); + const bal1 = await ctUSDCxClient1.balanceOf(client1.address); + + var tx = (await ctFlowClient1.withdrawSuperToken( + supertokenUSDCx, + amount.sub(flowRateUSDCx.mul(now2 - now1)) + )) as any; + var rcpt = await tx.wait(); + + expect( + await ctFlowClient1.getDepositUser(client1.address, supertokenUSDCx) + ).to.be.equal(0); + expect( + await ctFlowClient1.getAmountFlowed(client1.address, supertokenUSDCx) + ).to.be.equal(0); + const bal2 = await ctUSDCxClient1.balanceOf(client1.address); + expect(bal2).to.be.equal( + bal1.add(amount.sub(flowRateUSDCx.mul(now2 - now1))) + ); + }); + it("Should withdraw lesser amount after flow end - session stop - skipped multiple withdraw", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctCFAV1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + ctGelatoAutoBot, + amMain, + gelatoExecutor, + client1, + worker1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.01"); + const flowRateDAIx = ethers.utils.parseEther("0.02"); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const amountInvest = ethers.utils.parseEther("100"); + await investToApp(chainId, amMain, client1, amountInvest); + + const ctSessionWorker1 = await ethers.getContractAt( + "Session", + amMain, + worker1 + ); + + var tx = await ctSessionWorker1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + + const minBalance = await ctControlDeployer.getMinimumEndDuration(); + const minLifespan = await ctControlDeployer.getMinimumLifespan(); + const amount = ethers.utils.parseEther("600"); + var tx = (await ctUSDCxClient1.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient1.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + const lifespan = 260; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + const now1 = await time.latest(); + + expect( + await ctFlowClient1.getDepositUser(client1.address, supertokenUSDCx) + ).to.be.equal(amount); + expect( + await ctFlowClient1.getAmountFlowed(client1.address, supertokenUSDCx) + ).to.be.equal(0); + + var fft = minLifespan.sub(1).toNumber(); + await time.increase(fft); + + var tx = await ctSessionWorker1.stopSession(supertokenUSDCx); + var rcpt = await tx.wait(); + const now2 = await time.latest(); + + expect( + await ctFlowClient1.getDepositUser(client1.address, supertokenUSDCx) + ).to.be.equal(amount); + expect( + await ctFlowClient1.getAmountFlowed(client1.address, supertokenUSDCx) + ).to.be.equal(flowRateUSDCx.mul(now2 - now1)); + + var tx = await ctSessionWorker1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + const now3 = await time.latest(); + + expect( + await ctFlowClient1.getDepositUser(client1.address, supertokenUSDCx) + ).to.be.equal(amount.sub(flowRateUSDCx.mul(now2 - now1))); + expect( + await ctFlowClient1.getAmountFlowed(client1.address, supertokenUSDCx) + ).to.be.equal(0); + + var tx = await ctSessionWorker1.stopSession(supertokenUSDCx); + var rcpt = await tx.wait(); + const now4 = await time.latest(); + + expect( + await ctFlowClient1.getDepositUser(client1.address, supertokenUSDCx) + ).to.be.equal(amount.sub(flowRateUSDCx.mul(now2 - now1))); + expect( + await ctFlowClient1.getAmountFlowed(client1.address, supertokenUSDCx) + ).to.be.equal(flowRateUSDCx.mul(now4 - now3)); + const bal1 = await ctUSDCxClient1.balanceOf(client1.address); + + var tx = (await ctFlowClient1.withdrawSuperToken( + supertokenUSDCx, + amount.sub( + flowRateUSDCx.mul(now2 - now1).add(flowRateUSDCx.mul(now4 - now3)) + ) + )) as any; + var rcpt = await tx.wait(); + + expect( + await ctFlowClient1.getDepositUser(client1.address, supertokenUSDCx) + ).to.be.equal(0); + expect( + await ctFlowClient1.getAmountFlowed(client1.address, supertokenUSDCx) + ).to.be.equal(0); + const bal2 = await ctUSDCxClient1.balanceOf(client1.address); + expect(bal2).to.be.equal( + bal1.add( + amount.sub( + flowRateUSDCx.mul(now2 - now1).add(flowRateUSDCx.mul(now4 - now3)) + ) + ) + ); + }); + it("Should withdraw lesser amount after flow end - close flow - skipped multiple withdraw", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctCFAV1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + ctGelatoAutoBot, + amMain, + gelatoExecutor, + client1, + worker1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.01"); + const flowRateDAIx = ethers.utils.parseEther("0.02"); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const amountInvest = ethers.utils.parseEther("100"); + await investToApp(chainId, amMain, client1, amountInvest); + + const ctSessionWorker1 = await ethers.getContractAt( + "Session", + amMain, + worker1 + ); + + var tx = await ctSessionWorker1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + + const minBalance = await ctControlDeployer.getMinimumEndDuration(); + const minLifespan = await ctControlDeployer.getMinimumLifespan(); + const amount = ethers.utils.parseEther("600"); + var tx = (await ctUSDCxClient1.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient1.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + const lifespan = 260; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + const now1 = await time.latest(); + + expect( + await ctFlowClient1.getDepositUser(client1.address, supertokenUSDCx) + ).to.be.equal(amount); + expect( + await ctFlowClient1.getAmountFlowed(client1.address, supertokenUSDCx) + ).to.be.equal(0); + + var fft = minLifespan.sub(1).toNumber(); + await time.increase(fft); + + var tx = await ctFlowClient1.closeFlow(supertokenUSDCx, 0); + var rcpt = await tx.wait(); + const now2 = await time.latest(); + + expect( + await ctFlowClient1.getDepositUser(client1.address, supertokenUSDCx) + ).to.be.equal(amount); + expect( + await ctFlowClient1.getAmountFlowed(client1.address, supertokenUSDCx) + ).to.be.equal(flowRateUSDCx.mul(now2 - now1)); + + // var tx = await ctSessionWorker1.startSessions( + // [supertokenUSDCx], + // [flowRateUSDCx], + // [0] + // ); + // var rcpt = await tx.wait(); + + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + const now3 = await time.latest(); + + await time.increase(fft); + + expect( + await ctFlowClient1.getDepositUser(client1.address, supertokenUSDCx) + ).to.be.equal(amount.sub(flowRateUSDCx.mul(now2 - now1))); + expect( + await ctFlowClient1.getAmountFlowed(client1.address, supertokenUSDCx) + ).to.be.equal(0); + + var tx = await ctFlowClient1.closeFlow(supertokenUSDCx, 1); + var rcpt = await tx.wait(); + const now4 = await time.latest(); + + expect( + await ctFlowClient1.getDepositUser(client1.address, supertokenUSDCx) + ).to.be.equal(amount.sub(flowRateUSDCx.mul(now2 - now1))); + expect( + await ctFlowClient1.getAmountFlowed(client1.address, supertokenUSDCx) + ).to.be.equal(flowRateUSDCx.mul(now4 - now3)); + const bal1 = await ctUSDCxClient1.balanceOf(client1.address); + + var tx = (await ctFlowClient1.withdrawSuperToken( + supertokenUSDCx, + amount.sub( + flowRateUSDCx.mul(now2 - now1).add(flowRateUSDCx.mul(now4 - now3)) + ) + )) as any; + var rcpt = await tx.wait(); + + expect( + await ctFlowClient1.getDepositUser(client1.address, supertokenUSDCx) + ).to.be.equal(0); + expect( + await ctFlowClient1.getAmountFlowed(client1.address, supertokenUSDCx) + ).to.be.equal(0); + const bal2 = await ctUSDCxClient1.balanceOf(client1.address); + expect(bal2).to.be.equal( + bal1.add( + amount.sub( + flowRateUSDCx.mul(now2 - now1).add(flowRateUSDCx.mul(now4 - now3)) + ) + ) + ); + }); + it("Should withdraw lesser amount after flow end - decrease flow - skipped multiple withdraw", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctCFAV1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + ctGelatoAutoBot, + amMain, + gelatoExecutor, + client1, + worker1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.01"); + const flowRateDAIx = ethers.utils.parseEther("0.02"); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const amountInvest = ethers.utils.parseEther("100"); + await investToApp(chainId, amMain, client1, amountInvest); + + const ctSessionWorker1 = await ethers.getContractAt( + "Session", + amMain, + worker1 + ); + + var tx = await ctSessionWorker1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + + const minBalance = await ctControlDeployer.getMinimumEndDuration(); + const minLifespan = await ctControlDeployer.getMinimumLifespan(); + const amount = ethers.utils.parseEther("600"); + var tx = (await ctUSDCxClient1.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient1.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + const lifespan = 260; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + const now1 = await time.latest(); + var rc = await ethers.provider.getTransactionReceipt( + rcpt.transactionHash + ); + var block = await ethers.provider.getBlock(rc.blockNumber); + var startTime = block.timestamp; + + var execData = ctFlowClient1.interface.encodeFunctionData( + "decreaseFlow", + [supertokenUSDCx, client1.address, worker1.address, 0, flowRateUSDCx] + ); + var timeArgs = encodeTimeArgs(startTime + lifespan, lifespan); + var moduleData = { + modules: [1, 3], + args: [timeArgs], + }; + + await time.increase(lifespan); // ff time + + expect( + await ctFlowClient1.getDepositUser(client1.address, supertokenUSDCx) + ).to.be.equal(amount); + expect( + await ctFlowClient1.getAmountFlowed(client1.address, supertokenUSDCx) + ).to.be.equal(0); + + var fft = minLifespan.sub(1).toNumber(); + await time.increase(fft); + + await ctGelatoAutoBot + .connect(gelatoExecutor) + .exec( + amMain, + amMain, + execData, + moduleData, + GELATO_FEE, + amGelatoFee, + true, + true + ); + const now2 = await time.latest(); + + expect( + await ctFlowClient1.getDepositUser(client1.address, supertokenUSDCx) + ).to.be.equal(amount); + expect( + await ctFlowClient1.getAmountFlowed(client1.address, supertokenUSDCx) + ).to.be.equal(flowRateUSDCx.mul(now2 - now1)); + + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + const now3 = await time.latest(); + var rc = await ethers.provider.getTransactionReceipt( + rcpt.transactionHash + ); + var block = await ethers.provider.getBlock(rc.blockNumber); + var startTime = block.timestamp; + + var execData = ctFlowClient1.interface.encodeFunctionData( + "decreaseFlow", + [supertokenUSDCx, client1.address, worker1.address, 1, flowRateUSDCx] + ); + var timeArgs = encodeTimeArgs(startTime + lifespan, lifespan); + var moduleData = { + modules: [1, 3], + args: [timeArgs], + }; + + await time.increase(lifespan); // ff time + + expect( + await ctFlowClient1.getDepositUser(client1.address, supertokenUSDCx) + ).to.be.equal(amount.sub(flowRateUSDCx.mul(now2 - now1))); + expect( + await ctFlowClient1.getAmountFlowed(client1.address, supertokenUSDCx) + ).to.be.equal(0); + + await ctGelatoAutoBot + .connect(gelatoExecutor) + .exec( + amMain, + amMain, + execData, + moduleData, + GELATO_FEE, + amGelatoFee, + true, + true + ); + const now4 = await time.latest(); + + expect( + await ctFlowClient1.getDepositUser(client1.address, supertokenUSDCx) + ).to.be.equal(amount.sub(flowRateUSDCx.mul(now2 - now1))); + expect( + await ctFlowClient1.getAmountFlowed(client1.address, supertokenUSDCx) + ).to.be.equal(flowRateUSDCx.mul(now4 - now3)); + const bal1 = await ctUSDCxClient1.balanceOf(client1.address); + + var tx = (await ctFlowClient1.withdrawSuperToken( + supertokenUSDCx, + amount.sub( + flowRateUSDCx.mul(now2 - now1).add(flowRateUSDCx.mul(now4 - now3)) + ) + )) as any; + var rcpt = await tx.wait(); + + expect( + await ctFlowClient1.getDepositUser(client1.address, supertokenUSDCx) + ).to.be.equal(0); + expect( + await ctFlowClient1.getAmountFlowed(client1.address, supertokenUSDCx) + ).to.be.equal(0); + const bal2 = await ctUSDCxClient1.balanceOf(client1.address); + expect(bal2).to.be.equal( + bal1.add( + amount.sub( + flowRateUSDCx.mul(now2 - now1).add(flowRateUSDCx.mul(now4 - now3)) + ) + ) + ); + }); + it("Should not withdraw more than allow if withdraw multiple times in a row, accumulating to full amount withdrawed - revert on additional withdrawal", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctCFAV1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + ctGelatoAutoBot, + amMain, + gelatoExecutor, + client1, + worker1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.01"); + const flowRateDAIx = ethers.utils.parseEther("0.02"); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const amountInvest = ethers.utils.parseEther("100"); + await investToApp(chainId, amMain, client1, amountInvest); + + const ctSessionWorker1 = await ethers.getContractAt( + "Session", + amMain, + worker1 + ); + + var tx = await ctSessionWorker1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + + const minBalance = await ctControlDeployer.getMinimumEndDuration(); + const minLifespan = await ctControlDeployer.getMinimumLifespan(); + const amount = ethers.utils.parseEther("600"); + var tx = (await ctUSDCxClient1.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient1.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + const lifespan = 260; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + const now1 = await time.latest(); + + expect( + await ctFlowClient1.getDepositUser(client1.address, supertokenUSDCx) + ).to.be.equal(amount); + expect( + await ctFlowClient1.getAmountFlowed(client1.address, supertokenUSDCx) + ).to.be.equal(0); + + var fft = minLifespan.sub(1).toNumber(); + await time.increase(fft); + + var tx = await ctFlowClient1.closeFlow(supertokenUSDCx, 0); + var rcpt = await tx.wait(); + const now2 = await time.latest(); + + expect( + await ctFlowClient1.getDepositUser(client1.address, supertokenUSDCx) + ).to.be.equal(amount); + expect( + await ctFlowClient1.getAmountFlowed(client1.address, supertokenUSDCx) + ).to.be.equal(flowRateUSDCx.mul(now2 - now1)); + const bal1 = await ctUSDCxClient1.balanceOf(client1.address); + + const totalWithdrawable = amount.sub(flowRateUSDCx.mul(now2 - now1)); + const part1 = totalWithdrawable.div(2); + const part2 = totalWithdrawable.sub(part1); + + var tx = (await ctFlowClient1.withdrawSuperToken( + supertokenUSDCx, + part1 + )) as any; + var rcpt = await tx.wait(); + + expect( + await ctFlowClient1.getDepositUser(client1.address, supertokenUSDCx) + ).to.be.equal(part2); + expect( + await ctFlowClient1.getAmountFlowed(client1.address, supertokenUSDCx) + ).to.be.equal(0); + const bal2 = await ctUSDCxClient1.balanceOf(client1.address); + expect(bal2).to.be.equal(bal1.add(part1)); + + await expect( + ctFlowClient1.withdrawSuperToken(supertokenUSDCx, totalWithdrawable) + ).to.be.revertedWithCustomError(ctFlowClient1, "InsufficientFunds"); + + var tx = (await ctFlowClient1.withdrawSuperToken( + supertokenUSDCx, + part2 + )) as any; + var rcpt = await tx.wait(); + expect( + await ctFlowClient1.getDepositUser(client1.address, supertokenUSDCx) + ).to.be.equal(0); + expect( + await ctFlowClient1.getAmountFlowed(client1.address, supertokenUSDCx) + ).to.be.equal(0); + const bal3 = await ctUSDCxClient1.balanceOf(client1.address); + expect(bal3).to.be.equal(bal1.add(totalWithdrawable)); + }); + it("Should withdraw correct amount even after new deposits - during flow", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctCFAV1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + ctGelatoAutoBot, + amMain, + gelatoExecutor, + client1, + worker1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.01"); + const flowRateDAIx = ethers.utils.parseEther("0.02"); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const amountInvest = ethers.utils.parseEther("100"); + await investToApp(chainId, amMain, client1, amountInvest); + + const ctSessionWorker1 = await ethers.getContractAt( + "Session", + amMain, + worker1 + ); + + var tx = await ctSessionWorker1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + + const minBalance = await ctControlDeployer.getMinimumEndDuration(); + const minLifespan = await ctControlDeployer.getMinimumLifespan(); + const amount = ethers.utils.parseEther("600"); + var tx = (await ctUSDCxClient1.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient1.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + const lifespan = 260; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + const now1 = await time.latest(); + + expect( + await ctFlowClient1.getDepositUser(client1.address, supertokenUSDCx) + ).to.be.equal(amount); + expect( + await ctFlowClient1.getAmountFlowed(client1.address, supertokenUSDCx) + ).to.be.equal(0); + + var fft = minLifespan.sub(1).toNumber(); + await time.increase(fft); + + var tx = await ctFlowClient1.closeFlow(supertokenUSDCx, 0); + var rcpt = await tx.wait(); + const now2 = await time.latest(); + + expect( + await ctFlowClient1.getDepositUser(client1.address, supertokenUSDCx) + ).to.be.equal(amount); + expect( + await ctFlowClient1.getAmountFlowed(client1.address, supertokenUSDCx) + ).to.be.equal(flowRateUSDCx.mul(now2 - now1)); + + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + const now3 = await time.latest(); + + await time.increase(fft); + + expect( + await ctFlowClient1.getDepositUser(client1.address, supertokenUSDCx) + ).to.be.equal(amount.sub(flowRateUSDCx.mul(now2 - now1))); + expect( + await ctFlowClient1.getAmountFlowed(client1.address, supertokenUSDCx) + ).to.be.equal(0); + + // deposit + const amount_ = ethers.utils.parseEther("350"); + var tx = (await ctUSDCxClient1.approve( + amMain, + amount_ + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient1.depositSuperToken( + supertokenUSDCx, + amount_ + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = await ctFlowClient1.closeFlow(supertokenUSDCx, 1); + var rcpt = await tx.wait(); + const now4 = await time.latest(); + + expect( + await ctFlowClient1.getDepositUser(client1.address, supertokenUSDCx) + ).to.be.equal(amount.sub(flowRateUSDCx.mul(now2 - now1)).add(amount_)); + expect( + await ctFlowClient1.getAmountFlowed(client1.address, supertokenUSDCx) + ).to.be.equal(flowRateUSDCx.mul(now4 - now3)); + const bal1 = await ctUSDCxClient1.balanceOf(client1.address); + + var tx = (await ctFlowClient1.withdrawSuperToken( + supertokenUSDCx, + amount + .sub( + flowRateUSDCx.mul(now2 - now1).add(flowRateUSDCx.mul(now4 - now3)) + ) + .add(amount_) + )) as any; + var rcpt = await tx.wait(); + + expect( + await ctFlowClient1.getDepositUser(client1.address, supertokenUSDCx) + ).to.be.equal(0); + expect( + await ctFlowClient1.getAmountFlowed(client1.address, supertokenUSDCx) + ).to.be.equal(0); + const bal2 = await ctUSDCxClient1.balanceOf(client1.address); + expect(bal2).to.be.equal( + bal1.add( + amount + .sub( + flowRateUSDCx + .mul(now2 - now1) + .add(flowRateUSDCx.mul(now4 - now3)) + ) + .add(amount_) + ) + ); + }); + }); + describe("single address can simultaneously open flow and start session", async () => { + it("Should work as expected from beginning to end - start session before open flow", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctCFAV1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + ctGelatoAutoBot, + amMain, + gelatoExecutor, + client1, + worker1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.01"); + const flowRateDAIx = ethers.utils.parseEther("0.02"); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const amountInvest = ethers.utils.parseEther("100"); + await investToApp(chainId, amMain, client1, amountInvest); + + const ctSessionWorker1 = await ethers.getContractAt( + "Session", + amMain, + worker1 + ); + + var tx = await ctSessionWorker1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + + var tx = await ctSessionClient1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + + const minBalance = await ctControlDeployer.getMinimumEndDuration(); + const minLifespan = await ctControlDeployer.getMinimumLifespan(); + const amount = ethers.utils.parseEther("600"); + var tx = (await ctUSDCxClient1.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient1.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + const lifespan = 260; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + const now1 = await time.latest(); + // var rc = await ethers.provider.getTransactionReceipt( + // rcpt.transactionHash + // ); + // var block = await ethers.provider.getBlock(rc.blockNumber); + // var startTime = block.timestamp; + + // var execData = ctFlowClient1.interface.encodeFunctionData( + // "decreaseFlow", + // [supertokenUSDCx, client1.address, worker1.address, 0, flowRateUSDCx] + // ); + // var timeArgs = encodeTimeArgs(startTime + lifespan, lifespan); + // var moduleData = { + // modules: [1, 3], + // args: [timeArgs], + // }; + + // await time.increase(minLifespan.sub(1).toNumber()); + + // var taskIds = await ctGelatoAutoBot.getTaskIdsByUser(amMain); + // expect(taskIds.length).to.be.equal(1); + // var [receiver, sesNonce, tsIncrease, tsDecrease, taskId] = + // await ctFlowClient1.getFlowData(client1.address, supertokenUSDCx, 0); + // expect(receiver).to.be.equal(worker1.address); + // expect(sesNonce).to.be.equal(0); + // expect(tsIncrease).to.be.equal(now1); + // expect(tsDecrease).to.be.equal(0); + // expect(taskId).to.be.equal(taskIds.at(0)); + // var { + // timestamp, + // flowRate: flowRateOutput, + // deposit, + // owedDeposit, + // } = await ctCFAV1.getFlow(supertokenUSDCx, amMain, worker1.address); + // expect(timestamp).to.be.equal(now1); + // expect(flowRateOutput).to.be.equal(flowRateUSDCx); + // expect(deposit).to.be.gt(flowRateUSDCx.mul(60 * 60)); + // expect(owedDeposit).to.be.equal(0); + + // var tx = await ctFlowClient1.closeFlow(supertokenUSDCx, 0); + // var rcpt = await tx.wait(); + // const now2 = await time.latest(); + }); + it("Should work as expected from beginning to end - open flow before start session", async () => { + const result = await loadFixture(init); + if (!result) { + expect(true).to.be.equal(false); + return; + } + const { + chainId, + ctUSDCxClient1, + ctCFAV1, + ctControlDeployer, + ctSessionClient1, + ctFlowClient1, + ctGelatoAutoBot, + amMain, + gelatoExecutor, + client1, + worker1, + } = result; + + const supertokenUSDCx = networkConfig[chainId]["addrUSDCx"]; + const supertokenDAIx = networkConfig[chainId]["addrDAIx"]; + const flowRateUSDCx = ethers.utils.parseEther("0.01"); + const flowRateDAIx = ethers.utils.parseEther("0.02"); + + await fundAppGelatoTresury( + chainId, + amMain, + ethers.utils.parseEther("2") + ); + + const amountInvest = ethers.utils.parseEther("100"); + await investToApp(chainId, amMain, client1, amountInvest); + + const ctSessionWorker1 = await ethers.getContractAt( + "Session", + amMain, + worker1 + ); + + var tx = await ctSessionWorker1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + + const minBalance = await ctControlDeployer.getMinimumEndDuration(); + const minLifespan = await ctControlDeployer.getMinimumLifespan(); + const amount = ethers.utils.parseEther("600"); + var tx = (await ctUSDCxClient1.approve( + amMain, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + var tx = (await ctFlowClient1.depositSuperToken( + supertokenUSDCx, + amount + )) as ContractTransaction; + var rcpt = await tx.wait(); + + const lifespan = 260; + var tx = await ctFlowClient1.openFlow( + worker1.address, + supertokenUSDCx, + lifespan + ); + var rcpt = await tx.wait(); + const now1 = await time.latest(); + + var tx = await ctSessionClient1.startSessions( + [supertokenUSDCx], + [flowRateUSDCx], + [0] + ); + var rcpt = await tx.wait(); + }); + it("TODO: expand test on this"); + }); + describe("wild - many-to-many flow to session with manual & auto flow close", async () => { + it("Should run"); + // set BPS 720 & 1080 (and do test for "app earn portion") + // bc1 opens ses1 + // bc2 opens ses2 + // v1 --> ses1 --> auto close + // v1 --> ses2 --> manu close + // v2 --> ses1 --> manu close + // v2 --> ses2 --> auto close + // view getEffectiveBalance from time to time !! + // withdraw check + }); + }); +}); + +// REPORT_GAS=true npx hardhat test ./test/Main.ts diff --git a/contracts/test/cacheBugTest.js b/contracts/test/cacheBugTest.js new file mode 100644 index 0000000..fef9555 --- /dev/null +++ b/contracts/test/cacheBugTest.js @@ -0,0 +1,137 @@ +// const { ethers } = require("hardhat"); + +// const { testDeployParams, contractDeploy } = require("../../../scripts/main"); +// const { +// getSelectors, +// FacetCutAction, +// } = require("../../../scripts/utilsDiamond"); + +// const { assert } = require("chai"); + +// // The diamond example comes with 8 function selectors +// // [cut, ctLoupe, ctLoupe, ctLoupe, ctLoupe, erc165, transferOwnership, owner] +// // This bug manifests if you delete something from the final +// // selector slot array, so we'll fill up a new slot with +// // things, and have a fresh row to work with. +// describe("Cache bug test", async () => { +// let ctLoupe; +// let test1Facet; +// const acSel0 = "0x52a9c8d7"; + +// const sel0 = "0x19e3b533"; // fills up slot 1 +// const sel1 = "0x0716c2ae"; // fills up slot 1 +// const sel2 = "0x11046047"; // fills up slot 1 +// const sel3 = "0xcf3bbe18"; // fills up slot 1 +// const sel4 = "0x24c1d5a7"; // fills up slot 1 +// const sel5 = "0xcbb835f6"; // fills up slot 1 +// const sel6 = "0xcbb835f7"; // fills up slot 1 +// const sel7 = "0xcbb835f8"; // fills up slot 2 +// const sel8 = "0xcbb835f9"; // fills up slot 2 +// const sel9 = "0xcbb835fa"; // fills up slot 2 +// const sel10 = "0xcbb835fb"; // fills up slot 2 + +// before(async function () { +// let tx; +// let receipt; + +// let selectors = [ +// sel0, +// sel1, +// sel2, +// sel3, +// sel4, +// sel5, +// sel6, +// sel7, +// sel8, +// sel9, +// sel10, +// ]; + +// const { +// diamondCutCtName, +// diamondCtName, +// facetNames, +// facetInitsCtName, +// minContractGelatoBalance, +// addressesSuperTokens, +// } = await testDeployParams(); +// [diamondAddress, _] = await contractDeploy( +// diamondCutCtName, +// diamondCtName, +// facetNames, +// facetInitsCtName, +// minContractGelatoBalance, +// addressesSuperTokens +// ); +// let ctCut = await ethers.getContractAt("Cut", diamondAddress); +// ctLoupe = await ethers.getContractAt("Loupe", diamondAddress); +// const Test1Facet = await ethers.getContractFactory("Test1Facet"); +// test1Facet = await Test1Facet.deploy(); +// await test1Facet.deployed(); + +// // add functions +// tx = await ctCut.diamondCut( +// [ +// { +// facetAddress: test1Facet.address, +// action: FacetCutAction.Add, +// functionSelectors: selectors, +// }, +// ], +// ethers.constants.AddressZero, +// "0x" +// // { gasLimit: 800000 } +// ); +// receipt = await tx.wait(); +// if (!receipt.status) { +// throw Error(`Diamond upgrade failed: ${tx.hash}`); +// } + +// // Remove function selectors +// // Function selector for the owner function in slot 0 +// selectors = [ +// acSel0, // owner selector +// sel5, +// sel10, +// ]; +// tx = await ctCut.diamondCut( +// [ +// { +// facetAddress: ethers.constants.AddressZero, +// action: FacetCutAction.Remove, +// functionSelectors: selectors, +// }, +// ], +// ethers.constants.AddressZero, +// "0x", +// { gasLimit: 800000 } +// ); +// receipt = await tx.wait(); +// if (!receipt.status) { +// throw Error(`Diamond upgrade failed: ${tx.hash}`); +// } +// }); + +// describe("diamond cut", function () { +// it("should not exhibit the cache bug", async () => { +// // Get the test1Facet's registered functions +// let selectors = await ctLoupe.facetFunctionSelectors(test1Facet.address); + +// // Check individual correctness +// assert.isTrue(selectors.includes(sel0), "Does not contain sel0"); +// assert.isTrue(selectors.includes(sel1), "Does not contain sel1"); +// assert.isTrue(selectors.includes(sel2), "Does not contain sel2"); +// assert.isTrue(selectors.includes(sel3), "Does not contain sel3"); +// assert.isTrue(selectors.includes(sel4), "Does not contain sel4"); +// assert.isTrue(selectors.includes(sel6), "Does not contain sel6"); +// assert.isTrue(selectors.includes(sel7), "Does not contain sel7"); +// assert.isTrue(selectors.includes(sel8), "Does not contain sel8"); +// assert.isTrue(selectors.includes(sel9), "Does not contain sel9"); + +// assert.isFalse(selectors.includes(acSel0), "Contains acSel0"); +// assert.isFalse(selectors.includes(sel10), "Contains sel10"); +// assert.isFalse(selectors.includes(sel5), "Contains sel5"); +// }); +// }); +// }); diff --git a/contracts/test/common.test.ts b/contracts/test/common.test.ts new file mode 100644 index 0000000..bfb956a --- /dev/null +++ b/contracts/test/common.test.ts @@ -0,0 +1,187 @@ +import { time, loadFixture } from "@nomicfoundation/hardhat-network-helpers"; +import { type SignerWithAddress } from "@nomiclabs/hardhat-ethers/signers"; +import { expect } from "chai"; +import { Contract, type BigNumber } from "ethers"; +import hre, { ethers } from "hardhat"; +import { main as deployBounty } from "../scripts/deploy.setup"; +import { ZERO_BYTES, networkConfig } from "../utils/common"; + +const chainId = hre.network.config.chainId; +const CHAIN_ID_MUMBAI = 80001; +export const ADDRESS_GELATO_AUTOBOT = + networkConfig[chainId ?? CHAIN_ID_MUMBAI]["addrGelAutobot"]; +// export const MINIMUM_DEPOSIT_AMOUNT = ethers.utils.parseEther("3"); // 1 +export const MINIMUM_FLOW_AMOUNT = ethers.utils.parseEther("2"); // 2 +export const MINIMUM_DEPOSIT_AMOUNT = MINIMUM_FLOW_AMOUNT.sub( + ethers.utils.parseEther("1") +); +export const MAX_FLOW_DURATION_PER_UNIT_FLOW_AMOUNT = 4092000; // 2592000 = 1 month in seconds +export const MIN_CONTRACT_GELATO_BALANCE = ethers.utils.parseEther("0.5"); +export const ST_BUFFER_DURATION_IN_SECONDS = 3600; +export const ST_ADDRESSES = [ + networkConfig[chainId ?? CHAIN_ID_MUMBAI]["addrUSDCx"], +]; + +export const MIN_APP_GELATO_BALANCE = ethers.utils.parseEther("0.5"); +export const MINIMUM_END_DURATION = 60; +export const MINIMUM_LIFESPAN = 180; + +const SOME_SUPER_BIG_FLOW_RATE = "99999000000000000000000"; +const PTR_720 = { + "40": { gte: "225000000000000", lt: "300000000000000", bps: 4000 }, + "30": { gte: "300000000000000", lt: "450000000000000", bps: 3000 }, + "20": { gte: "450000000000000", lt: "600000000000000", bps: 2000 }, + "15": { gte: "600000000000000", lt: "900000000000000", bps: 1500 }, + "10": { gte: "900000000000000", lt: "1800000000000000", bps: 1000 }, + "5": { gte: "1800000000000000", lt: SOME_SUPER_BIG_FLOW_RATE, bps: 500 }, +}; // ref: https://docs.google.com/spreadsheets/d/1mx5hVm7k5jS4_htJNEfYTasWxx2Pcni0C1gqdQdWdaA/edit#gid=912411221 + +const PTR_1080 = { + "40": { gte: "300000000000000", lt: "400000000000000", bps: 4000 }, + "30": { gte: "400000000000000", lt: "600000000000000", bps: 3000 }, + "20": { gte: "600000000000000", lt: "800000000000000", bps: 2000 }, + "15": { gte: "800000000000000", lt: "1200000000000000", bps: 1500 }, + "10": { gte: "1200000000000000", lt: "2400000000000000", bps: 1000 }, + "5": { gte: "2400000000000000", lt: SOME_SUPER_BIG_FLOW_RATE, bps: 500 }, +}; // ref: https://docs.google.com/spreadsheets/d/1mx5hVm7k5jS4_htJNEfYTasWxx2Pcni0C1gqdQdWdaA/edit#gid=912411221 + +export const BPS720 = [ + PTR_720["40"].bps, + PTR_720["30"].bps, + PTR_720["20"].bps, + PTR_720["15"].bps, + PTR_720["10"].bps, + PTR_720["5"].bps, +]; +export const FRLB720 = [ + PTR_720["40"].gte, + PTR_720["30"].gte, + PTR_720["20"].gte, + PTR_720["15"].gte, + PTR_720["10"].gte, + PTR_720["5"].gte, +]; +export const FRUB720 = [ + PTR_720["40"].lt, + PTR_720["30"].lt, + PTR_720["20"].lt, + PTR_720["15"].lt, + PTR_720["10"].lt, + PTR_720["5"].lt, +]; +export const TAG720 = [0, 1, 2, 3, 4, 5]; + +///// + +export const BPS1080 = [ + PTR_1080["40"].bps, + PTR_1080["30"].bps, + PTR_1080["20"].bps, + PTR_1080["15"].bps, + PTR_1080["10"].bps, + PTR_1080["5"].bps, +]; +export const FRLB1080 = [ + PTR_1080["40"].gte, + PTR_1080["30"].gte, + PTR_1080["20"].gte, + PTR_1080["15"].gte, + PTR_1080["10"].gte, + PTR_1080["5"].gte, +]; +export const FRUB1080 = [ + PTR_1080["40"].lt, + PTR_1080["30"].lt, + PTR_1080["20"].lt, + PTR_1080["15"].lt, + PTR_1080["10"].lt, + PTR_1080["5"].lt, +]; +export const TAG1080 = [6, 7, 8, 9, 10, 11]; + +/** + * +·------------------------------------------------|----------------------------|-------------|-----------------------------· +| Solc version: 0.8.18 · Optimizer enabled: false · Runs: 200 · Block limit: 30000000 gas │ +·················································|····························|·············|······························ +| Methods · 50 gwei/gas · 1848.70 usd/eth │ +··················|······························|··············|·············|·············|···············|·············· +| Contract · Method · Min · Max · Avg · # calls · usd (avg) │ +··················|······························|··············|·············|·············|···············|·············· +| AccessControl · grantRole · - · - · 57208 · 8 · 5.29 │ +··················|······························|··············|·············|·············|···············|·············· +| AccessControl · renounceRole · 29498 · 29915 · 29707 · 4 · 2.75 │ +··················|······························|··············|·············|·············|···············|·············· +| AccessControl · revokeRole · - · - · 35354 · 2 · 3.27 │ +··················|······························|··············|·············|·············|···············|·············· +| Automate · depositGelatoFunds · - · - · 144914 · 84 · 13.40 │ +··················|······························|··············|·············|·············|···············|·············· +| Automate · setMinimumAppGelatoBalance · - · - · 34684 · 2 · 3.21 │ +··················|······························|··············|·············|·············|···············|·············· +| Automate · withdrawGelatoFunds · - · - · 65331 · 2 · 6.04 │ +··················|······························|··············|·············|·············|···············|·············· +| Control · addSuperToken · - · - · 52201 · 20 · 4.83 │ +··················|······························|··············|·············|·············|···············|·············· +| Control · clearBPS · - · - · 136943 · 2 · 12.66 │ +··················|······························|··············|·············|·············|···············|·············· +| Control · depositAsset · 194696 · 228896 · 228062 · 82 · 21.08 │ +··················|······························|··············|·············|·············|···············|·············· +| Control · realizeFeeBalance · 32270 · 117580 · 79852 · 42 · 7.38 │ +··················|······························|··············|·············|·············|···············|·············· +| Control · removeSuperToken · - · - · 30275 · 2 · 2.80 │ +··················|······························|··············|·············|·············|···············|·············· +| Control · setBPS · 574020 · 596648 · 575761 · 52 · 53.22 │ +··················|······························|··············|·············|·············|···············|·············· +| Control · setMinimumEndDuration · - · - · 34744 · 2 · 3.21 │ +··················|······························|··············|·············|·············|···············|·············· +| Control · setMinimumLifespan · - · - · 34722 · 2 · 3.21 │ +··················|······························|··············|·············|·············|···············|·············· +| Control · setSBPS · - · - · 52678 · 6 · 4.87 │ +··················|······························|··············|·············|·············|···············|·············· +| Control · setSTBufferAmount · - · - · 34800 · 2 · 3.22 │ +··················|······························|··············|·············|·············|···············|·············· +| Control · toggleBPS · 29727 · 51627 · 50715 · 48 · 4.69 │ +··················|······························|··············|·············|·············|···············|·············· +| Control · withdrawAsset · - · - · 171984 · 2 · 15.90 │ +··················|······························|··············|·············|·············|···············|·············· +| Control · withdrawFeeBalance · 170248 · 170272 · 170260 · 4 · 15.74 │ +··················|······························|··············|·············|·············|···············|·············· +| Cut · diamondCut · - · - · 2813275 · 2 · 260.05 │ +··················|······························|··············|·············|·············|···············|·············· +| Flow · closeFlow · 402607 · 417916 · 404644 · 56 · 37.40 │ +··················|······························|··············|·············|·············|···············|·············· +| Flow · depositSuperToken · 177495 · 228856 · 212674 · 102 · 19.66 │ +··················|······························|··············|·············|·············|···············|·············· +| Flow · openFlow · 735011 · 933943 · 887738 · 121 · 82.06 │ +··················|······························|··············|·············|·············|···············|·············· +| Flow · withdrawSuperTokens · 198013 · 335659 · 233983 · 12 · 21.63 │ +··················|······························|··············|·············|·············|···············|·············· +| Session · startSessions · 172135 · 277226 · 186990 · 110 · 17.28 │ +··················|······························|··············|·············|·············|···············|·············· +| Session · stopSessions · 103290 · 329826 · 203645 · 20 · 18.82 │ +··················|······························|··············|·············|·············|···············|·············· +| Utility · withdrawNativeBalance · - · - · 58997 · 2 · 5.45 │ +··················|······························|··············|·············|·············|···············|·············· +| Deployments · · % of limit · │ +·················································|··············|·············|·············|···············|·············· +| AccessControl · - · - · 827413 · 2.8 % · 76.48 │ +·················································|··············|·············|·············|···············|·············· +| Automate · - · - · 1006518 · 3.4 % · 93.04 │ +·················································|··············|·············|·············|···············|·············· +| Control · - · - · 3408048 · 11.4 % · 315.02 │ +·················································|··············|·············|·············|···············|·············· +| Cut · - · - · 2345034 · 7.8 % · 216.76 │ +·················································|··············|·············|·············|···············|·············· +| Diamond · - · - · 2272246 · 7.6 % · 210.04 │ +·················································|··············|·············|·············|···············|·············· +| DiamondInit · - · - · 779966 · 2.6 % · 72.10 │ +·················································|··············|·············|·············|···············|·············· +| Flow · - · - · 4839853 · 16.1 % · 447.37 │ +·················································|··············|·············|·············|···············|·············· +| Loupe · - · - · 717623 · 2.4 % · 66.33 │ +·················································|··············|·············|·············|···············|·············· +| Session · - · - · 2325413 · 7.8 % · 214.95 │ +·················································|··············|·············|·············|···············|·············· +| Utility · - · - · 654457 · 2.2 % · 60.49 │ +·------------------------------------------------|--------------|-------------|-------------|---------------|-------------· + */ diff --git a/contracts/test/diamondTest.js b/contracts/test/diamondTest.js new file mode 100644 index 0000000..881470e --- /dev/null +++ b/contracts/test/diamondTest.js @@ -0,0 +1,393 @@ +// const { +// getSelectors, +// FacetCutAction, +// removeSelectors, +// findAddressPositionInFacets, +// } = require("../../../scripts/utilsDiamond"); + +// const { testDeployParams, contractDeploy } = require("../../../scripts/main"); + +// const { assert } = require("chai"); + +// describe("DiamondTest", async function () { +// let diamondAddress; +// let diamondCutFacet; +// let diamondLoupeFacet; +// let accessControlFacet; +// let accessUtility; +// let tx; +// let receipt; +// let result; +// const addresses = []; + +// before(async function () { +// const { +// diamondCutCtName, +// diamondCtName, +// facetNames, +// facetInitsCtName, +// minContractGelatoBalance, +// addressesSuperTokens, +// } = await testDeployParams(); +// [diamondAddress, _] = await contractDeploy( +// diamondCutCtName, +// diamondCtName, +// facetNames, +// facetInitsCtName, +// minContractGelatoBalance, +// addressesSuperTokens +// ); +// diamondCutFacet = await ethers.getContractAt("Cut", diamondAddress); +// diamondLoupeFacet = await ethers.getContractAt("Loupe", diamondAddress); +// accessControlFacet = await ethers.getContractAt( +// "AccessControl", +// diamondAddress +// ); +// accessUtility = await ethers.getContractAt("Utility", diamondAddress); +// automateFacet = await ethers.getContractAt("Automate", diamondAddress); +// streamSetupFacet = await ethers.getContractAt( +// "StreamSetup", +// diamondAddress +// ); +// streamControlFacet = await ethers.getContractAt( +// "StreamControl", +// diamondAddress +// ); +// // TODO: add more as diamond contract expands +// }); + +// it("should have N facets -- call to facetAddresses function", async () => { +// for (const address of await diamondLoupeFacet.facetAddresses()) { +// addresses.push(address); +// } + +// assert.equal(addresses.length, 7); // TODO: increase this number as diamond contract expands +// }); + +// it("facets should have the right function selectors -- call to facetFunctionSelectors function", async () => { +// let selectors = getSelectors(diamondCutFacet); +// result = await diamondLoupeFacet.facetFunctionSelectors(addresses[0]); +// assert.sameMembers(result, selectors); +// selectors = getSelectors(diamondLoupeFacet); +// result = await diamondLoupeFacet.facetFunctionSelectors(addresses[1]); +// assert.sameMembers(result, selectors); +// selectors = getSelectors(accessControlFacet); +// result = await diamondLoupeFacet.facetFunctionSelectors(addresses[2]); +// assert.sameMembers(result, selectors); +// }); + +// it("selectors should be associated to facets correctly -- multiple calls to facetAddress function", async () => { +// assert.equal( +// addresses[0], +// await diamondLoupeFacet.facetAddress("0x1f931c1c") +// ); +// assert.equal( +// addresses[1], +// await diamondLoupeFacet.facetAddress("0xcdffacc6") +// ); +// assert.equal( +// addresses[2], +// await diamondLoupeFacet.facetAddress("0x52a9c8d7") +// ); +// assert.equal( +// addresses[3], +// await diamondLoupeFacet.facetAddress("0x6f9fb98a") +// ); +// assert.equal( +// addresses[4], +// await diamondLoupeFacet.facetAddress("0xbb6bd765") +// ); +// assert.equal( +// addresses[5], +// await diamondLoupeFacet.facetAddress("0x7555060c") +// ); +// assert.equal( +// addresses[6], +// await diamondLoupeFacet.facetAddress("0xe4bddf68") +// ); +// // TODO: add assert as diamond contract expands +// }); + +// it("should add test1 functions", async () => { +// const Test1Facet = await ethers.getContractFactory("Test1Facet"); +// const test1Facet = await Test1Facet.deploy(); +// await test1Facet.deployed(); +// addresses.push(test1Facet.address); +// const selectors = getSelectors(test1Facet).remove([ +// "supportsInterface(bytes4)", +// ]); +// tx = await diamondCutFacet.diamondCut( +// [ +// { +// facetAddress: test1Facet.address, +// action: FacetCutAction.Add, +// functionSelectors: selectors, +// }, +// ], +// ethers.constants.AddressZero, +// "0x", +// { gasLimit: 800000 } +// ); +// receipt = await tx.wait(); +// if (!receipt.status) { +// throw Error(`Diamond upgrade failed: ${tx.hash}`); +// } +// result = await diamondLoupeFacet.facetFunctionSelectors(test1Facet.address); +// assert.sameMembers(result, selectors); +// }); + +// it("should test function call", async () => { +// const test1Facet = await ethers.getContractAt("Test1Facet", diamondAddress); +// await test1Facet.test1Func10(); +// }); + +// it("should replace supportsInterface function", async () => { +// const Test1Facet = await ethers.getContractFactory("Test1Facet"); +// const selectors = getSelectors(Test1Facet).get([ +// "supportsInterface(bytes4)", +// ]); +// const testFacetAddress = addresses.at(-1); +// tx = await diamondCutFacet.diamondCut( +// [ +// { +// facetAddress: testFacetAddress, +// action: FacetCutAction.Replace, +// functionSelectors: selectors, +// }, +// ], +// ethers.constants.AddressZero, +// "0x", +// { gasLimit: 800000 } +// ); +// receipt = await tx.wait(); +// if (!receipt.status) { +// throw Error(`Diamond upgrade failed: ${tx.hash}`); +// } +// result = await diamondLoupeFacet.facetFunctionSelectors(testFacetAddress); +// assert.sameMembers(result, getSelectors(Test1Facet)); +// }); + +// it("should add test2 functions", async () => { +// const Test2Facet = await ethers.getContractFactory("Test2Facet"); +// const test2Facet = await Test2Facet.deploy(); +// await test2Facet.deployed(); +// addresses.push(test2Facet.address); +// const selectors = getSelectors(test2Facet); +// tx = await diamondCutFacet.diamondCut( +// [ +// { +// facetAddress: test2Facet.address, +// action: FacetCutAction.Add, +// functionSelectors: selectors, +// }, +// ], +// ethers.constants.AddressZero, +// "0x", +// { gasLimit: 800000 } +// ); +// receipt = await tx.wait(); +// if (!receipt.status) { +// throw Error(`Diamond upgrade failed: ${tx.hash}`); +// } +// result = await diamondLoupeFacet.facetFunctionSelectors(test2Facet.address); +// assert.sameMembers(result, selectors); +// }); + +// it("should remove some test2 functions", async () => { +// const test2Facet = await ethers.getContractAt("Test2Facet", diamondAddress); +// const functionsToKeep = [ +// "test2Func1()", +// "test2Func5()", +// "test2Func6()", +// "test2Func19()", +// "test2Func20()", +// ]; +// const selectors = getSelectors(test2Facet).remove(functionsToKeep); +// tx = await diamondCutFacet.diamondCut( +// [ +// { +// facetAddress: ethers.constants.AddressZero, +// action: FacetCutAction.Remove, +// functionSelectors: selectors, +// }, +// ], +// ethers.constants.AddressZero, +// "0x", +// { gasLimit: 800000 } +// ); +// receipt = await tx.wait(); +// if (!receipt.status) { +// throw Error(`Diamond upgrade failed: ${tx.hash}`); +// } +// result = await diamondLoupeFacet.facetFunctionSelectors(addresses.at(-1)); +// assert.sameMembers(result, getSelectors(test2Facet).get(functionsToKeep)); +// }); + +// it("should remove some test1 functions", async () => { +// const test1Facet = await ethers.getContractAt("Test1Facet", diamondAddress); +// const functionsToKeep = ["test1Func2()", "test1Func11()", "test1Func12()"]; +// const selectors = getSelectors(test1Facet).remove(functionsToKeep); +// tx = await diamondCutFacet.diamondCut( +// [ +// { +// facetAddress: ethers.constants.AddressZero, +// action: FacetCutAction.Remove, +// functionSelectors: selectors, +// }, +// ], +// ethers.constants.AddressZero, +// "0x", +// { gasLimit: 800000 } +// ); +// receipt = await tx.wait(); +// if (!receipt.status) { +// throw Error(`Diamond upgrade failed: ${tx.hash}`); +// } +// result = await diamondLoupeFacet.facetFunctionSelectors(addresses.at(-2)); +// assert.sameMembers(result, getSelectors(test1Facet).get(functionsToKeep)); +// }); + +// it("remove all functions and facets except 'diamondCut' and 'facets'", async () => { +// let selectors = []; +// let facets = await diamondLoupeFacet.facets(); +// for (let i = 0; i < facets.length; i++) { +// selectors.push(...facets[i].functionSelectors); +// } +// selectors = removeSelectors(selectors, [ +// "facets()", +// "diamondCut(tuple(address,uint8,bytes4[])[],address,bytes)", +// ]); +// tx = await diamondCutFacet.diamondCut( +// [ +// { +// facetAddress: ethers.constants.AddressZero, +// action: FacetCutAction.Remove, +// functionSelectors: selectors, +// }, +// ], +// ethers.constants.AddressZero, +// "0x", +// { gasLimit: 800000 } +// ); +// receipt = await tx.wait(); +// if (!receipt.status) { +// throw Error(`Diamond upgrade failed: ${tx.hash}`); +// } +// facets = await diamondLoupeFacet.facets(); +// assert.equal(facets.length, 2); +// assert.equal(facets[0][0], addresses[0]); +// assert.sameMembers(facets[0][1], ["0x1f931c1c"]); +// assert.equal(facets[1][0], addresses[1]); +// assert.sameMembers(facets[1][1], ["0x7a0ed627"]); +// }); + +// it("add most functions and facets", async () => { +// const diamondLoupeFacetSelectors = getSelectors(diamondLoupeFacet).remove([ +// "supportsInterface(bytes4)", +// ]); +// const Test1Facet = await ethers.getContractFactory("Test1Facet"); +// const Test2Facet = await ethers.getContractFactory("Test2Facet"); +// // Any number of functions from any number of facets can be added/replaced/removed in a +// // single transaction +// const cut = [ +// { +// facetAddress: addresses[1], +// action: FacetCutAction.Add, +// functionSelectors: diamondLoupeFacetSelectors.remove(["facets()"]), +// }, +// { +// facetAddress: addresses[2], +// action: FacetCutAction.Add, +// functionSelectors: getSelectors(accessControlFacet), +// }, +// { +// facetAddress: addresses[3], +// action: FacetCutAction.Add, +// functionSelectors: getSelectors(accessUtility), +// }, +// { +// facetAddress: addresses[4], +// action: FacetCutAction.Add, +// functionSelectors: getSelectors(automateFacet), +// }, +// { +// facetAddress: addresses[5], +// action: FacetCutAction.Add, +// functionSelectors: getSelectors(streamSetupFacet), +// }, +// { +// facetAddress: addresses[6], +// action: FacetCutAction.Add, +// functionSelectors: getSelectors(streamControlFacet), +// }, +// { +// facetAddress: addresses[7], +// action: FacetCutAction.Add, +// functionSelectors: getSelectors(Test1Facet), +// }, +// { +// facetAddress: addresses[8], +// action: FacetCutAction.Add, +// functionSelectors: getSelectors(Test2Facet), +// }, +// // TODO: add more as diamond control expands +// ]; +// tx = await diamondCutFacet.diamondCut( +// cut, +// ethers.constants.AddressZero, +// "0x", +// { gasLimit: 8000000 } +// ); +// receipt = await tx.wait(); +// if (!receipt.status) { +// throw Error(`Diamond upgrade failed: ${tx.hash}`); +// } +// const facets = await diamondLoupeFacet.facets(); +// const facetAddresses = await diamondLoupeFacet.facetAddresses(); +// assert.equal(facetAddresses.length, 9); // TODO: add more as diamond control expands +// assert.equal(facets.length, 9); // TODO: add more as diamond control expands +// assert.sameMembers(facetAddresses, addresses); +// assert.equal(facets[0][0], facetAddresses[0], "first facet"); +// assert.equal(facets[1][0], facetAddresses[1], "second facet"); +// assert.equal(facets[2][0], facetAddresses[2], "third facet"); +// assert.equal(facets[3][0], facetAddresses[3], "fourth facet"); +// assert.equal(facets[4][0], facetAddresses[4], "fifth facet"); +// assert.sameMembers( +// facets[findAddressPositionInFacets(addresses[0], facets)][1], +// getSelectors(diamondCutFacet) +// ); +// assert.sameMembers( +// facets[findAddressPositionInFacets(addresses[1], facets)][1], +// diamondLoupeFacetSelectors +// ); +// assert.sameMembers( +// facets[findAddressPositionInFacets(addresses[2], facets)][1], +// getSelectors(accessControlFacet) +// ); +// assert.sameMembers( +// facets[findAddressPositionInFacets(addresses[3], facets)][1], +// getSelectors(accessUtility) +// ); +// assert.sameMembers( +// facets[findAddressPositionInFacets(addresses[4], facets)][1], +// getSelectors(automateFacet) +// ); +// assert.sameMembers( +// facets[findAddressPositionInFacets(addresses[5], facets)][1], +// getSelectors(streamSetupFacet) +// ); +// assert.sameMembers( +// facets[findAddressPositionInFacets(addresses[6], facets)][1], +// getSelectors(streamControlFacet) +// ); +// assert.sameMembers( +// facets[findAddressPositionInFacets(addresses[7], facets)][1], +// getSelectors(Test1Facet) +// ); +// assert.sameMembers( +// facets[findAddressPositionInFacets(addresses[8], facets)][1], +// getSelectors(Test2Facet) +// ); +// // TODO: add more as diamond control expands +// }); +// }); diff --git a/contracts/tsconfig.json b/contracts/tsconfig.json new file mode 100644 index 0000000..574e785 --- /dev/null +++ b/contracts/tsconfig.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "target": "es2020", + "module": "commonjs", + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "strict": true, + "skipLibCheck": true, + "resolveJsonModule": true + } +} diff --git a/contracts/typechain-types/@openzeppelin/contracts/index.ts b/contracts/typechain-types/@openzeppelin/contracts/index.ts new file mode 100644 index 0000000..b248dd2 --- /dev/null +++ b/contracts/typechain-types/@openzeppelin/contracts/index.ts @@ -0,0 +1,7 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type * as interfaces from "./interfaces"; +export type { interfaces }; +import type * as token from "./token"; +export type { token }; diff --git a/contracts/typechain-types/@openzeppelin/contracts/interfaces/IERC1271.ts b/contracts/typechain-types/@openzeppelin/contracts/interfaces/IERC1271.ts new file mode 100644 index 0000000..27376e3 --- /dev/null +++ b/contracts/typechain-types/@openzeppelin/contracts/interfaces/IERC1271.ts @@ -0,0 +1,108 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BytesLike, + CallOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../common"; + +export interface IERC1271Interface extends utils.Interface { + functions: { + "isValidSignature(bytes32,bytes)": FunctionFragment; + }; + + getFunction(nameOrSignatureOrTopic: "isValidSignature"): FunctionFragment; + + encodeFunctionData( + functionFragment: "isValidSignature", + values: [PromiseOrValue, PromiseOrValue] + ): string; + + decodeFunctionResult( + functionFragment: "isValidSignature", + data: BytesLike + ): Result; + + events: {}; +} + +export interface IERC1271 extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: IERC1271Interface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + isValidSignature( + hash: PromiseOrValue, + signature: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string] & { magicValue: string }>; + }; + + isValidSignature( + hash: PromiseOrValue, + signature: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + callStatic: { + isValidSignature( + hash: PromiseOrValue, + signature: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + isValidSignature( + hash: PromiseOrValue, + signature: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + populateTransaction: { + isValidSignature( + hash: PromiseOrValue, + signature: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; +} diff --git a/contracts/typechain-types/@openzeppelin/contracts/interfaces/index.ts b/contracts/typechain-types/@openzeppelin/contracts/interfaces/index.ts new file mode 100644 index 0000000..1d97e9d --- /dev/null +++ b/contracts/typechain-types/@openzeppelin/contracts/interfaces/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { IERC1271 } from "./IERC1271"; diff --git a/contracts/typechain-types/@openzeppelin/contracts/token/ERC20/IERC20.ts b/contracts/typechain-types/@openzeppelin/contracts/token/ERC20/IERC20.ts new file mode 100644 index 0000000..e99e80b --- /dev/null +++ b/contracts/typechain-types/@openzeppelin/contracts/token/ERC20/IERC20.ts @@ -0,0 +1,342 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../../common"; + +export interface IERC20Interface extends utils.Interface { + functions: { + "allowance(address,address)": FunctionFragment; + "approve(address,uint256)": FunctionFragment; + "balanceOf(address)": FunctionFragment; + "totalSupply()": FunctionFragment; + "transfer(address,uint256)": FunctionFragment; + "transferFrom(address,address,uint256)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "allowance" + | "approve" + | "balanceOf" + | "totalSupply" + | "transfer" + | "transferFrom" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "allowance", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "approve", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "balanceOf", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "totalSupply", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "transfer", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "transferFrom", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + + decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "totalSupply", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "transferFrom", + data: BytesLike + ): Result; + + events: { + "Approval(address,address,uint256)": EventFragment; + "Transfer(address,address,uint256)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; +} + +export interface ApprovalEventObject { + owner: string; + spender: string; + value: BigNumber; +} +export type ApprovalEvent = TypedEvent< + [string, string, BigNumber], + ApprovalEventObject +>; + +export type ApprovalEventFilter = TypedEventFilter; + +export interface TransferEventObject { + from: string; + to: string; + value: BigNumber; +} +export type TransferEvent = TypedEvent< + [string, string, BigNumber], + TransferEventObject +>; + +export type TransferEventFilter = TypedEventFilter; + +export interface IERC20 extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: IERC20Interface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + approve( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; + + transfer( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + approve( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + approve( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "Approval(address,address,uint256)"( + owner?: PromiseOrValue | null, + spender?: PromiseOrValue | null, + value?: null + ): ApprovalEventFilter; + Approval( + owner?: PromiseOrValue | null, + spender?: PromiseOrValue | null, + value?: null + ): ApprovalEventFilter; + + "Transfer(address,address,uint256)"( + from?: PromiseOrValue | null, + to?: PromiseOrValue | null, + value?: null + ): TransferEventFilter; + Transfer( + from?: PromiseOrValue | null, + to?: PromiseOrValue | null, + value?: null + ): TransferEventFilter; + }; + + estimateGas: { + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + approve( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + approve( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/contracts/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit.ts b/contracts/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit.ts new file mode 100644 index 0000000..836ee60 --- /dev/null +++ b/contracts/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit.ts @@ -0,0 +1,193 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../../../../common"; + +export interface IERC20PermitInterface extends utils.Interface { + functions: { + "DOMAIN_SEPARATOR()": FunctionFragment; + "nonces(address)": FunctionFragment; + "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: "DOMAIN_SEPARATOR" | "nonces" | "permit" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "DOMAIN_SEPARATOR", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "nonces", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "permit", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + + decodeFunctionResult( + functionFragment: "DOMAIN_SEPARATOR", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "nonces", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "permit", data: BytesLike): Result; + + events: {}; +} + +export interface IERC20Permit extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: IERC20PermitInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise<[string]>; + + nonces( + owner: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + permit( + owner: PromiseOrValue, + spender: PromiseOrValue, + value: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; + + nonces( + owner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + permit( + owner: PromiseOrValue, + spender: PromiseOrValue, + value: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; + + nonces( + owner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + permit( + owner: PromiseOrValue, + spender: PromiseOrValue, + value: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; + + nonces( + owner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + permit( + owner: PromiseOrValue, + spender: PromiseOrValue, + value: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; + + nonces( + owner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + permit( + owner: PromiseOrValue, + spender: PromiseOrValue, + value: PromiseOrValue, + deadline: PromiseOrValue, + v: PromiseOrValue, + r: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/contracts/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/index.ts b/contracts/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/index.ts new file mode 100644 index 0000000..6673dc7 --- /dev/null +++ b/contracts/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { IERC20Permit } from "./IERC20Permit"; diff --git a/contracts/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/index.ts b/contracts/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/index.ts new file mode 100644 index 0000000..a3d47b2 --- /dev/null +++ b/contracts/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/index.ts @@ -0,0 +1,5 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type * as draftIerc20PermitSol from "./draft-IERC20Permit.sol"; +export type { draftIerc20PermitSol }; diff --git a/contracts/typechain-types/@openzeppelin/contracts/token/ERC20/index.ts b/contracts/typechain-types/@openzeppelin/contracts/token/ERC20/index.ts new file mode 100644 index 0000000..a8eb12b --- /dev/null +++ b/contracts/typechain-types/@openzeppelin/contracts/token/ERC20/index.ts @@ -0,0 +1,6 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type * as extensions from "./extensions"; +export type { extensions }; +export type { IERC20 } from "./IERC20"; diff --git a/contracts/typechain-types/@openzeppelin/contracts/token/ERC777/IERC777.ts b/contracts/typechain-types/@openzeppelin/contracts/token/ERC777/IERC777.ts new file mode 100644 index 0000000..80aa83e --- /dev/null +++ b/contracts/typechain-types/@openzeppelin/contracts/token/ERC777/IERC777.ts @@ -0,0 +1,650 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../../common"; + +export interface IERC777Interface extends utils.Interface { + functions: { + "authorizeOperator(address)": FunctionFragment; + "balanceOf(address)": FunctionFragment; + "burn(uint256,bytes)": FunctionFragment; + "defaultOperators()": FunctionFragment; + "granularity()": FunctionFragment; + "isOperatorFor(address,address)": FunctionFragment; + "name()": FunctionFragment; + "operatorBurn(address,uint256,bytes,bytes)": FunctionFragment; + "operatorSend(address,address,uint256,bytes,bytes)": FunctionFragment; + "revokeOperator(address)": FunctionFragment; + "send(address,uint256,bytes)": FunctionFragment; + "symbol()": FunctionFragment; + "totalSupply()": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "authorizeOperator" + | "balanceOf" + | "burn" + | "defaultOperators" + | "granularity" + | "isOperatorFor" + | "name" + | "operatorBurn" + | "operatorSend" + | "revokeOperator" + | "send" + | "symbol" + | "totalSupply" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "authorizeOperator", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "balanceOf", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "burn", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "defaultOperators", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "granularity", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "isOperatorFor", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "name", values?: undefined): string; + encodeFunctionData( + functionFragment: "operatorBurn", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "operatorSend", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "revokeOperator", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "send", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData(functionFragment: "symbol", values?: undefined): string; + encodeFunctionData( + functionFragment: "totalSupply", + values?: undefined + ): string; + + decodeFunctionResult( + functionFragment: "authorizeOperator", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "burn", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "defaultOperators", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "granularity", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "isOperatorFor", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "operatorBurn", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "operatorSend", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "revokeOperator", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "send", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "totalSupply", + data: BytesLike + ): Result; + + events: { + "AuthorizedOperator(address,address)": EventFragment; + "Burned(address,address,uint256,bytes,bytes)": EventFragment; + "Minted(address,address,uint256,bytes,bytes)": EventFragment; + "RevokedOperator(address,address)": EventFragment; + "Sent(address,address,address,uint256,bytes,bytes)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "AuthorizedOperator"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Burned"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Minted"): EventFragment; + getEvent(nameOrSignatureOrTopic: "RevokedOperator"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Sent"): EventFragment; +} + +export interface AuthorizedOperatorEventObject { + operator: string; + tokenHolder: string; +} +export type AuthorizedOperatorEvent = TypedEvent< + [string, string], + AuthorizedOperatorEventObject +>; + +export type AuthorizedOperatorEventFilter = + TypedEventFilter; + +export interface BurnedEventObject { + operator: string; + from: string; + amount: BigNumber; + data: string; + operatorData: string; +} +export type BurnedEvent = TypedEvent< + [string, string, BigNumber, string, string], + BurnedEventObject +>; + +export type BurnedEventFilter = TypedEventFilter; + +export interface MintedEventObject { + operator: string; + to: string; + amount: BigNumber; + data: string; + operatorData: string; +} +export type MintedEvent = TypedEvent< + [string, string, BigNumber, string, string], + MintedEventObject +>; + +export type MintedEventFilter = TypedEventFilter; + +export interface RevokedOperatorEventObject { + operator: string; + tokenHolder: string; +} +export type RevokedOperatorEvent = TypedEvent< + [string, string], + RevokedOperatorEventObject +>; + +export type RevokedOperatorEventFilter = TypedEventFilter; + +export interface SentEventObject { + operator: string; + from: string; + to: string; + amount: BigNumber; + data: string; + operatorData: string; +} +export type SentEvent = TypedEvent< + [string, string, string, BigNumber, string, string], + SentEventObject +>; + +export type SentEventFilter = TypedEventFilter; + +export interface IERC777 extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: IERC777Interface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + authorizeOperator( + operator: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + owner: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + burn( + amount: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + defaultOperators(overrides?: CallOverrides): Promise<[string[]]>; + + granularity(overrides?: CallOverrides): Promise<[BigNumber]>; + + isOperatorFor( + operator: PromiseOrValue, + tokenHolder: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + name(overrides?: CallOverrides): Promise<[string]>; + + operatorBurn( + account: PromiseOrValue, + amount: PromiseOrValue, + data: PromiseOrValue, + operatorData: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + operatorSend( + sender: PromiseOrValue, + recipient: PromiseOrValue, + amount: PromiseOrValue, + data: PromiseOrValue, + operatorData: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + revokeOperator( + operator: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + send( + recipient: PromiseOrValue, + amount: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + symbol(overrides?: CallOverrides): Promise<[string]>; + + totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; + }; + + authorizeOperator( + operator: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + owner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + burn( + amount: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + defaultOperators(overrides?: CallOverrides): Promise; + + granularity(overrides?: CallOverrides): Promise; + + isOperatorFor( + operator: PromiseOrValue, + tokenHolder: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + name(overrides?: CallOverrides): Promise; + + operatorBurn( + account: PromiseOrValue, + amount: PromiseOrValue, + data: PromiseOrValue, + operatorData: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + operatorSend( + sender: PromiseOrValue, + recipient: PromiseOrValue, + amount: PromiseOrValue, + data: PromiseOrValue, + operatorData: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + revokeOperator( + operator: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + send( + recipient: PromiseOrValue, + amount: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + callStatic: { + authorizeOperator( + operator: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + balanceOf( + owner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + burn( + amount: PromiseOrValue, + data: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + defaultOperators(overrides?: CallOverrides): Promise; + + granularity(overrides?: CallOverrides): Promise; + + isOperatorFor( + operator: PromiseOrValue, + tokenHolder: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + name(overrides?: CallOverrides): Promise; + + operatorBurn( + account: PromiseOrValue, + amount: PromiseOrValue, + data: PromiseOrValue, + operatorData: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + operatorSend( + sender: PromiseOrValue, + recipient: PromiseOrValue, + amount: PromiseOrValue, + data: PromiseOrValue, + operatorData: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + revokeOperator( + operator: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + send( + recipient: PromiseOrValue, + amount: PromiseOrValue, + data: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + }; + + filters: { + "AuthorizedOperator(address,address)"( + operator?: PromiseOrValue | null, + tokenHolder?: PromiseOrValue | null + ): AuthorizedOperatorEventFilter; + AuthorizedOperator( + operator?: PromiseOrValue | null, + tokenHolder?: PromiseOrValue | null + ): AuthorizedOperatorEventFilter; + + "Burned(address,address,uint256,bytes,bytes)"( + operator?: PromiseOrValue | null, + from?: PromiseOrValue | null, + amount?: null, + data?: null, + operatorData?: null + ): BurnedEventFilter; + Burned( + operator?: PromiseOrValue | null, + from?: PromiseOrValue | null, + amount?: null, + data?: null, + operatorData?: null + ): BurnedEventFilter; + + "Minted(address,address,uint256,bytes,bytes)"( + operator?: PromiseOrValue | null, + to?: PromiseOrValue | null, + amount?: null, + data?: null, + operatorData?: null + ): MintedEventFilter; + Minted( + operator?: PromiseOrValue | null, + to?: PromiseOrValue | null, + amount?: null, + data?: null, + operatorData?: null + ): MintedEventFilter; + + "RevokedOperator(address,address)"( + operator?: PromiseOrValue | null, + tokenHolder?: PromiseOrValue | null + ): RevokedOperatorEventFilter; + RevokedOperator( + operator?: PromiseOrValue | null, + tokenHolder?: PromiseOrValue | null + ): RevokedOperatorEventFilter; + + "Sent(address,address,address,uint256,bytes,bytes)"( + operator?: PromiseOrValue | null, + from?: PromiseOrValue | null, + to?: PromiseOrValue | null, + amount?: null, + data?: null, + operatorData?: null + ): SentEventFilter; + Sent( + operator?: PromiseOrValue | null, + from?: PromiseOrValue | null, + to?: PromiseOrValue | null, + amount?: null, + data?: null, + operatorData?: null + ): SentEventFilter; + }; + + estimateGas: { + authorizeOperator( + operator: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + owner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + burn( + amount: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + defaultOperators(overrides?: CallOverrides): Promise; + + granularity(overrides?: CallOverrides): Promise; + + isOperatorFor( + operator: PromiseOrValue, + tokenHolder: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + name(overrides?: CallOverrides): Promise; + + operatorBurn( + account: PromiseOrValue, + amount: PromiseOrValue, + data: PromiseOrValue, + operatorData: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + operatorSend( + sender: PromiseOrValue, + recipient: PromiseOrValue, + amount: PromiseOrValue, + data: PromiseOrValue, + operatorData: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + revokeOperator( + operator: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + send( + recipient: PromiseOrValue, + amount: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + authorizeOperator( + operator: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + owner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + burn( + amount: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + defaultOperators(overrides?: CallOverrides): Promise; + + granularity(overrides?: CallOverrides): Promise; + + isOperatorFor( + operator: PromiseOrValue, + tokenHolder: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + name(overrides?: CallOverrides): Promise; + + operatorBurn( + account: PromiseOrValue, + amount: PromiseOrValue, + data: PromiseOrValue, + operatorData: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + operatorSend( + sender: PromiseOrValue, + recipient: PromiseOrValue, + amount: PromiseOrValue, + data: PromiseOrValue, + operatorData: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + revokeOperator( + operator: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + send( + recipient: PromiseOrValue, + amount: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + }; +} diff --git a/contracts/typechain-types/@openzeppelin/contracts/token/ERC777/index.ts b/contracts/typechain-types/@openzeppelin/contracts/token/ERC777/index.ts new file mode 100644 index 0000000..5a6b0a0 --- /dev/null +++ b/contracts/typechain-types/@openzeppelin/contracts/token/ERC777/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { IERC777 } from "./IERC777"; diff --git a/contracts/typechain-types/@openzeppelin/contracts/token/index.ts b/contracts/typechain-types/@openzeppelin/contracts/token/index.ts new file mode 100644 index 0000000..2e888ae --- /dev/null +++ b/contracts/typechain-types/@openzeppelin/contracts/token/index.ts @@ -0,0 +1,7 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type * as erc20 from "./ERC20"; +export type { erc20 }; +import type * as erc777 from "./ERC777"; +export type { erc777 }; diff --git a/contracts/typechain-types/@openzeppelin/index.ts b/contracts/typechain-types/@openzeppelin/index.ts new file mode 100644 index 0000000..a11e4ca --- /dev/null +++ b/contracts/typechain-types/@openzeppelin/index.ts @@ -0,0 +1,5 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type * as contracts from "./contracts"; +export type { contracts }; diff --git a/contracts/typechain-types/@superfluid-finance/ethereum-contracts/contracts/index.ts b/contracts/typechain-types/@superfluid-finance/ethereum-contracts/contracts/index.ts new file mode 100644 index 0000000..9215923 --- /dev/null +++ b/contracts/typechain-types/@superfluid-finance/ethereum-contracts/contracts/index.ts @@ -0,0 +1,5 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type * as interfaces from "./interfaces"; +export type { interfaces }; diff --git a/contracts/typechain-types/@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IConstantFlowAgreementV1.ts b/contracts/typechain-types/@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IConstantFlowAgreementV1.ts new file mode 100644 index 0000000..049cfac --- /dev/null +++ b/contracts/typechain-types/@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IConstantFlowAgreementV1.ts @@ -0,0 +1,1390 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../../../common"; + +export interface IConstantFlowAgreementV1Interface extends utils.Interface { + functions: { + "agreementType()": FunctionFragment; + "authorizeFlowOperatorWithFullControl(address,address,bytes)": FunctionFragment; + "createFlow(address,address,int96,bytes)": FunctionFragment; + "createFlowByOperator(address,address,address,int96,bytes)": FunctionFragment; + "decreaseFlowRateAllowance(address,address,int96,bytes)": FunctionFragment; + "deleteFlow(address,address,address,bytes)": FunctionFragment; + "deleteFlowByOperator(address,address,address,bytes)": FunctionFragment; + "getAccountFlowInfo(address,address)": FunctionFragment; + "getDepositRequiredForFlowRate(address,int96)": FunctionFragment; + "getFlow(address,address,address)": FunctionFragment; + "getFlowByID(address,bytes32)": FunctionFragment; + "getFlowOperatorData(address,address,address)": FunctionFragment; + "getFlowOperatorDataByID(address,bytes32)": FunctionFragment; + "getMaximumFlowRateFromDeposit(address,uint256)": FunctionFragment; + "getNetFlow(address,address)": FunctionFragment; + "increaseFlowRateAllowance(address,address,int96,bytes)": FunctionFragment; + "isPatricianPeriod(address,address,uint256)": FunctionFragment; + "isPatricianPeriodNow(address,address)": FunctionFragment; + "realtimeBalanceOf(address,address,uint256)": FunctionFragment; + "revokeFlowOperatorWithFullControl(address,address,bytes)": FunctionFragment; + "updateFlow(address,address,int96,bytes)": FunctionFragment; + "updateFlowByOperator(address,address,address,int96,bytes)": FunctionFragment; + "updateFlowOperatorPermissions(address,address,uint8,int96,bytes)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "agreementType" + | "authorizeFlowOperatorWithFullControl" + | "createFlow" + | "createFlowByOperator" + | "decreaseFlowRateAllowance" + | "deleteFlow" + | "deleteFlowByOperator" + | "getAccountFlowInfo" + | "getDepositRequiredForFlowRate" + | "getFlow" + | "getFlowByID" + | "getFlowOperatorData" + | "getFlowOperatorDataByID" + | "getMaximumFlowRateFromDeposit" + | "getNetFlow" + | "increaseFlowRateAllowance" + | "isPatricianPeriod" + | "isPatricianPeriodNow" + | "realtimeBalanceOf" + | "revokeFlowOperatorWithFullControl" + | "updateFlow" + | "updateFlowByOperator" + | "updateFlowOperatorPermissions" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "agreementType", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "authorizeFlowOperatorWithFullControl", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "createFlow", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "createFlowByOperator", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "decreaseFlowRateAllowance", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "deleteFlow", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "deleteFlowByOperator", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "getAccountFlowInfo", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getDepositRequiredForFlowRate", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getFlow", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "getFlowByID", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getFlowOperatorData", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "getFlowOperatorDataByID", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getMaximumFlowRateFromDeposit", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getNetFlow", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "increaseFlowRateAllowance", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "isPatricianPeriod", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "isPatricianPeriodNow", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "realtimeBalanceOf", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "revokeFlowOperatorWithFullControl", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "updateFlow", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "updateFlowByOperator", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "updateFlowOperatorPermissions", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + + decodeFunctionResult( + functionFragment: "agreementType", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "authorizeFlowOperatorWithFullControl", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "createFlow", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "createFlowByOperator", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "decreaseFlowRateAllowance", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "deleteFlow", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "deleteFlowByOperator", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getAccountFlowInfo", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getDepositRequiredForFlowRate", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "getFlow", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getFlowByID", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getFlowOperatorData", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getFlowOperatorDataByID", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getMaximumFlowRateFromDeposit", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "getNetFlow", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "increaseFlowRateAllowance", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "isPatricianPeriod", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "isPatricianPeriodNow", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "realtimeBalanceOf", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "revokeFlowOperatorWithFullControl", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "updateFlow", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "updateFlowByOperator", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "updateFlowOperatorPermissions", + data: BytesLike + ): Result; + + events: { + "FlowOperatorUpdated(address,address,address,uint8,int96)": EventFragment; + "FlowUpdated(address,address,address,int96,int256,int256,bytes)": EventFragment; + "FlowUpdatedExtension(address,uint256)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "FlowOperatorUpdated"): EventFragment; + getEvent(nameOrSignatureOrTopic: "FlowUpdated"): EventFragment; + getEvent(nameOrSignatureOrTopic: "FlowUpdatedExtension"): EventFragment; +} + +export interface FlowOperatorUpdatedEventObject { + token: string; + sender: string; + flowOperator: string; + permissions: number; + flowRateAllowance: BigNumber; +} +export type FlowOperatorUpdatedEvent = TypedEvent< + [string, string, string, number, BigNumber], + FlowOperatorUpdatedEventObject +>; + +export type FlowOperatorUpdatedEventFilter = + TypedEventFilter; + +export interface FlowUpdatedEventObject { + token: string; + sender: string; + receiver: string; + flowRate: BigNumber; + totalSenderFlowRate: BigNumber; + totalReceiverFlowRate: BigNumber; + userData: string; +} +export type FlowUpdatedEvent = TypedEvent< + [string, string, string, BigNumber, BigNumber, BigNumber, string], + FlowUpdatedEventObject +>; + +export type FlowUpdatedEventFilter = TypedEventFilter; + +export interface FlowUpdatedExtensionEventObject { + flowOperator: string; + deposit: BigNumber; +} +export type FlowUpdatedExtensionEvent = TypedEvent< + [string, BigNumber], + FlowUpdatedExtensionEventObject +>; + +export type FlowUpdatedExtensionEventFilter = + TypedEventFilter; + +export interface IConstantFlowAgreementV1 extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: IConstantFlowAgreementV1Interface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + agreementType(overrides?: CallOverrides): Promise<[string]>; + + authorizeFlowOperatorWithFullControl( + token: PromiseOrValue, + flowOperator: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + createFlow( + token: PromiseOrValue, + receiver: PromiseOrValue, + flowRate: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + createFlowByOperator( + token: PromiseOrValue, + sender: PromiseOrValue, + receiver: PromiseOrValue, + flowRate: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + decreaseFlowRateAllowance( + token: PromiseOrValue, + flowOperator: PromiseOrValue, + subtractedFlowRateAllowance: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + deleteFlow( + token: PromiseOrValue, + sender: PromiseOrValue, + receiver: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + deleteFlowByOperator( + token: PromiseOrValue, + sender: PromiseOrValue, + receiver: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getAccountFlowInfo( + token: PromiseOrValue, + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber, BigNumber, BigNumber] & { + timestamp: BigNumber; + flowRate: BigNumber; + deposit: BigNumber; + owedDeposit: BigNumber; + } + >; + + getDepositRequiredForFlowRate( + token: PromiseOrValue, + flowRate: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber] & { deposit: BigNumber }>; + + getFlow( + token: PromiseOrValue, + sender: PromiseOrValue, + receiver: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber, BigNumber, BigNumber] & { + timestamp: BigNumber; + flowRate: BigNumber; + deposit: BigNumber; + owedDeposit: BigNumber; + } + >; + + getFlowByID( + token: PromiseOrValue, + agreementId: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber, BigNumber, BigNumber] & { + timestamp: BigNumber; + flowRate: BigNumber; + deposit: BigNumber; + owedDeposit: BigNumber; + } + >; + + getFlowOperatorData( + token: PromiseOrValue, + sender: PromiseOrValue, + flowOperator: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [string, number, BigNumber] & { + flowOperatorId: string; + permissions: number; + flowRateAllowance: BigNumber; + } + >; + + getFlowOperatorDataByID( + token: PromiseOrValue, + flowOperatorId: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [number, BigNumber] & { + permissions: number; + flowRateAllowance: BigNumber; + } + >; + + getMaximumFlowRateFromDeposit( + token: PromiseOrValue, + deposit: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber] & { flowRate: BigNumber }>; + + getNetFlow( + token: PromiseOrValue, + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber] & { flowRate: BigNumber }>; + + increaseFlowRateAllowance( + token: PromiseOrValue, + flowOperator: PromiseOrValue, + addedFlowRateAllowance: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + isPatricianPeriod( + token: PromiseOrValue, + account: PromiseOrValue, + timestamp: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + isPatricianPeriodNow( + token: PromiseOrValue, + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [boolean, BigNumber] & { + isCurrentlyPatricianPeriod: boolean; + timestamp: BigNumber; + } + >; + + realtimeBalanceOf( + token: PromiseOrValue, + account: PromiseOrValue, + time: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber, BigNumber] & { + dynamicBalance: BigNumber; + deposit: BigNumber; + owedDeposit: BigNumber; + } + >; + + revokeFlowOperatorWithFullControl( + token: PromiseOrValue, + flowOperator: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + updateFlow( + token: PromiseOrValue, + receiver: PromiseOrValue, + flowRate: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + updateFlowByOperator( + token: PromiseOrValue, + sender: PromiseOrValue, + receiver: PromiseOrValue, + flowRate: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + updateFlowOperatorPermissions( + token: PromiseOrValue, + flowOperator: PromiseOrValue, + permissions: PromiseOrValue, + flowRateAllowance: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + agreementType(overrides?: CallOverrides): Promise; + + authorizeFlowOperatorWithFullControl( + token: PromiseOrValue, + flowOperator: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + createFlow( + token: PromiseOrValue, + receiver: PromiseOrValue, + flowRate: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + createFlowByOperator( + token: PromiseOrValue, + sender: PromiseOrValue, + receiver: PromiseOrValue, + flowRate: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + decreaseFlowRateAllowance( + token: PromiseOrValue, + flowOperator: PromiseOrValue, + subtractedFlowRateAllowance: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + deleteFlow( + token: PromiseOrValue, + sender: PromiseOrValue, + receiver: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + deleteFlowByOperator( + token: PromiseOrValue, + sender: PromiseOrValue, + receiver: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getAccountFlowInfo( + token: PromiseOrValue, + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber, BigNumber, BigNumber] & { + timestamp: BigNumber; + flowRate: BigNumber; + deposit: BigNumber; + owedDeposit: BigNumber; + } + >; + + getDepositRequiredForFlowRate( + token: PromiseOrValue, + flowRate: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getFlow( + token: PromiseOrValue, + sender: PromiseOrValue, + receiver: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber, BigNumber, BigNumber] & { + timestamp: BigNumber; + flowRate: BigNumber; + deposit: BigNumber; + owedDeposit: BigNumber; + } + >; + + getFlowByID( + token: PromiseOrValue, + agreementId: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber, BigNumber, BigNumber] & { + timestamp: BigNumber; + flowRate: BigNumber; + deposit: BigNumber; + owedDeposit: BigNumber; + } + >; + + getFlowOperatorData( + token: PromiseOrValue, + sender: PromiseOrValue, + flowOperator: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [string, number, BigNumber] & { + flowOperatorId: string; + permissions: number; + flowRateAllowance: BigNumber; + } + >; + + getFlowOperatorDataByID( + token: PromiseOrValue, + flowOperatorId: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [number, BigNumber] & { permissions: number; flowRateAllowance: BigNumber } + >; + + getMaximumFlowRateFromDeposit( + token: PromiseOrValue, + deposit: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getNetFlow( + token: PromiseOrValue, + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + increaseFlowRateAllowance( + token: PromiseOrValue, + flowOperator: PromiseOrValue, + addedFlowRateAllowance: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + isPatricianPeriod( + token: PromiseOrValue, + account: PromiseOrValue, + timestamp: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isPatricianPeriodNow( + token: PromiseOrValue, + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [boolean, BigNumber] & { + isCurrentlyPatricianPeriod: boolean; + timestamp: BigNumber; + } + >; + + realtimeBalanceOf( + token: PromiseOrValue, + account: PromiseOrValue, + time: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber, BigNumber] & { + dynamicBalance: BigNumber; + deposit: BigNumber; + owedDeposit: BigNumber; + } + >; + + revokeFlowOperatorWithFullControl( + token: PromiseOrValue, + flowOperator: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + updateFlow( + token: PromiseOrValue, + receiver: PromiseOrValue, + flowRate: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + updateFlowByOperator( + token: PromiseOrValue, + sender: PromiseOrValue, + receiver: PromiseOrValue, + flowRate: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + updateFlowOperatorPermissions( + token: PromiseOrValue, + flowOperator: PromiseOrValue, + permissions: PromiseOrValue, + flowRateAllowance: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + agreementType(overrides?: CallOverrides): Promise; + + authorizeFlowOperatorWithFullControl( + token: PromiseOrValue, + flowOperator: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + createFlow( + token: PromiseOrValue, + receiver: PromiseOrValue, + flowRate: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + createFlowByOperator( + token: PromiseOrValue, + sender: PromiseOrValue, + receiver: PromiseOrValue, + flowRate: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + decreaseFlowRateAllowance( + token: PromiseOrValue, + flowOperator: PromiseOrValue, + subtractedFlowRateAllowance: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + deleteFlow( + token: PromiseOrValue, + sender: PromiseOrValue, + receiver: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + deleteFlowByOperator( + token: PromiseOrValue, + sender: PromiseOrValue, + receiver: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getAccountFlowInfo( + token: PromiseOrValue, + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber, BigNumber, BigNumber] & { + timestamp: BigNumber; + flowRate: BigNumber; + deposit: BigNumber; + owedDeposit: BigNumber; + } + >; + + getDepositRequiredForFlowRate( + token: PromiseOrValue, + flowRate: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getFlow( + token: PromiseOrValue, + sender: PromiseOrValue, + receiver: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber, BigNumber, BigNumber] & { + timestamp: BigNumber; + flowRate: BigNumber; + deposit: BigNumber; + owedDeposit: BigNumber; + } + >; + + getFlowByID( + token: PromiseOrValue, + agreementId: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber, BigNumber, BigNumber] & { + timestamp: BigNumber; + flowRate: BigNumber; + deposit: BigNumber; + owedDeposit: BigNumber; + } + >; + + getFlowOperatorData( + token: PromiseOrValue, + sender: PromiseOrValue, + flowOperator: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [string, number, BigNumber] & { + flowOperatorId: string; + permissions: number; + flowRateAllowance: BigNumber; + } + >; + + getFlowOperatorDataByID( + token: PromiseOrValue, + flowOperatorId: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [number, BigNumber] & { + permissions: number; + flowRateAllowance: BigNumber; + } + >; + + getMaximumFlowRateFromDeposit( + token: PromiseOrValue, + deposit: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getNetFlow( + token: PromiseOrValue, + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + increaseFlowRateAllowance( + token: PromiseOrValue, + flowOperator: PromiseOrValue, + addedFlowRateAllowance: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isPatricianPeriod( + token: PromiseOrValue, + account: PromiseOrValue, + timestamp: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isPatricianPeriodNow( + token: PromiseOrValue, + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [boolean, BigNumber] & { + isCurrentlyPatricianPeriod: boolean; + timestamp: BigNumber; + } + >; + + realtimeBalanceOf( + token: PromiseOrValue, + account: PromiseOrValue, + time: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber, BigNumber] & { + dynamicBalance: BigNumber; + deposit: BigNumber; + owedDeposit: BigNumber; + } + >; + + revokeFlowOperatorWithFullControl( + token: PromiseOrValue, + flowOperator: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + updateFlow( + token: PromiseOrValue, + receiver: PromiseOrValue, + flowRate: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + updateFlowByOperator( + token: PromiseOrValue, + sender: PromiseOrValue, + receiver: PromiseOrValue, + flowRate: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + updateFlowOperatorPermissions( + token: PromiseOrValue, + flowOperator: PromiseOrValue, + permissions: PromiseOrValue, + flowRateAllowance: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "FlowOperatorUpdated(address,address,address,uint8,int96)"( + token?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + flowOperator?: PromiseOrValue | null, + permissions?: null, + flowRateAllowance?: null + ): FlowOperatorUpdatedEventFilter; + FlowOperatorUpdated( + token?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + flowOperator?: PromiseOrValue | null, + permissions?: null, + flowRateAllowance?: null + ): FlowOperatorUpdatedEventFilter; + + "FlowUpdated(address,address,address,int96,int256,int256,bytes)"( + token?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + receiver?: PromiseOrValue | null, + flowRate?: null, + totalSenderFlowRate?: null, + totalReceiverFlowRate?: null, + userData?: null + ): FlowUpdatedEventFilter; + FlowUpdated( + token?: PromiseOrValue | null, + sender?: PromiseOrValue | null, + receiver?: PromiseOrValue | null, + flowRate?: null, + totalSenderFlowRate?: null, + totalReceiverFlowRate?: null, + userData?: null + ): FlowUpdatedEventFilter; + + "FlowUpdatedExtension(address,uint256)"( + flowOperator?: PromiseOrValue | null, + deposit?: null + ): FlowUpdatedExtensionEventFilter; + FlowUpdatedExtension( + flowOperator?: PromiseOrValue | null, + deposit?: null + ): FlowUpdatedExtensionEventFilter; + }; + + estimateGas: { + agreementType(overrides?: CallOverrides): Promise; + + authorizeFlowOperatorWithFullControl( + token: PromiseOrValue, + flowOperator: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + createFlow( + token: PromiseOrValue, + receiver: PromiseOrValue, + flowRate: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + createFlowByOperator( + token: PromiseOrValue, + sender: PromiseOrValue, + receiver: PromiseOrValue, + flowRate: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + decreaseFlowRateAllowance( + token: PromiseOrValue, + flowOperator: PromiseOrValue, + subtractedFlowRateAllowance: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + deleteFlow( + token: PromiseOrValue, + sender: PromiseOrValue, + receiver: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + deleteFlowByOperator( + token: PromiseOrValue, + sender: PromiseOrValue, + receiver: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getAccountFlowInfo( + token: PromiseOrValue, + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getDepositRequiredForFlowRate( + token: PromiseOrValue, + flowRate: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getFlow( + token: PromiseOrValue, + sender: PromiseOrValue, + receiver: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getFlowByID( + token: PromiseOrValue, + agreementId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getFlowOperatorData( + token: PromiseOrValue, + sender: PromiseOrValue, + flowOperator: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getFlowOperatorDataByID( + token: PromiseOrValue, + flowOperatorId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getMaximumFlowRateFromDeposit( + token: PromiseOrValue, + deposit: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getNetFlow( + token: PromiseOrValue, + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + increaseFlowRateAllowance( + token: PromiseOrValue, + flowOperator: PromiseOrValue, + addedFlowRateAllowance: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + isPatricianPeriod( + token: PromiseOrValue, + account: PromiseOrValue, + timestamp: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isPatricianPeriodNow( + token: PromiseOrValue, + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + realtimeBalanceOf( + token: PromiseOrValue, + account: PromiseOrValue, + time: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + revokeFlowOperatorWithFullControl( + token: PromiseOrValue, + flowOperator: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + updateFlow( + token: PromiseOrValue, + receiver: PromiseOrValue, + flowRate: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + updateFlowByOperator( + token: PromiseOrValue, + sender: PromiseOrValue, + receiver: PromiseOrValue, + flowRate: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + updateFlowOperatorPermissions( + token: PromiseOrValue, + flowOperator: PromiseOrValue, + permissions: PromiseOrValue, + flowRateAllowance: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + agreementType(overrides?: CallOverrides): Promise; + + authorizeFlowOperatorWithFullControl( + token: PromiseOrValue, + flowOperator: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + createFlow( + token: PromiseOrValue, + receiver: PromiseOrValue, + flowRate: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + createFlowByOperator( + token: PromiseOrValue, + sender: PromiseOrValue, + receiver: PromiseOrValue, + flowRate: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + decreaseFlowRateAllowance( + token: PromiseOrValue, + flowOperator: PromiseOrValue, + subtractedFlowRateAllowance: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + deleteFlow( + token: PromiseOrValue, + sender: PromiseOrValue, + receiver: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + deleteFlowByOperator( + token: PromiseOrValue, + sender: PromiseOrValue, + receiver: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getAccountFlowInfo( + token: PromiseOrValue, + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getDepositRequiredForFlowRate( + token: PromiseOrValue, + flowRate: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getFlow( + token: PromiseOrValue, + sender: PromiseOrValue, + receiver: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getFlowByID( + token: PromiseOrValue, + agreementId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getFlowOperatorData( + token: PromiseOrValue, + sender: PromiseOrValue, + flowOperator: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getFlowOperatorDataByID( + token: PromiseOrValue, + flowOperatorId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getMaximumFlowRateFromDeposit( + token: PromiseOrValue, + deposit: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getNetFlow( + token: PromiseOrValue, + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + increaseFlowRateAllowance( + token: PromiseOrValue, + flowOperator: PromiseOrValue, + addedFlowRateAllowance: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + isPatricianPeriod( + token: PromiseOrValue, + account: PromiseOrValue, + timestamp: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isPatricianPeriodNow( + token: PromiseOrValue, + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + realtimeBalanceOf( + token: PromiseOrValue, + account: PromiseOrValue, + time: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + revokeFlowOperatorWithFullControl( + token: PromiseOrValue, + flowOperator: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + updateFlow( + token: PromiseOrValue, + receiver: PromiseOrValue, + flowRate: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + updateFlowByOperator( + token: PromiseOrValue, + sender: PromiseOrValue, + receiver: PromiseOrValue, + flowRate: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + updateFlowOperatorPermissions( + token: PromiseOrValue, + flowOperator: PromiseOrValue, + permissions: PromiseOrValue, + flowRateAllowance: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/contracts/typechain-types/@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IInstantDistributionAgreementV1.ts b/contracts/typechain-types/@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IInstantDistributionAgreementV1.ts new file mode 100644 index 0000000..533b76b --- /dev/null +++ b/contracts/typechain-types/@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IInstantDistributionAgreementV1.ts @@ -0,0 +1,1280 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../../../common"; + +export interface IInstantDistributionAgreementV1Interface + extends utils.Interface { + functions: { + "agreementType()": FunctionFragment; + "approveSubscription(address,address,uint32,bytes)": FunctionFragment; + "calculateDistribution(address,address,uint32,uint256)": FunctionFragment; + "claim(address,address,uint32,address,bytes)": FunctionFragment; + "createIndex(address,uint32,bytes)": FunctionFragment; + "deleteSubscription(address,address,uint32,address,bytes)": FunctionFragment; + "distribute(address,uint32,uint256,bytes)": FunctionFragment; + "getIndex(address,address,uint32)": FunctionFragment; + "getSubscription(address,address,uint32,address)": FunctionFragment; + "getSubscriptionByID(address,bytes32)": FunctionFragment; + "listSubscriptions(address,address)": FunctionFragment; + "realtimeBalanceOf(address,address,uint256)": FunctionFragment; + "revokeSubscription(address,address,uint32,bytes)": FunctionFragment; + "updateIndex(address,uint32,uint128,bytes)": FunctionFragment; + "updateSubscription(address,uint32,address,uint128,bytes)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "agreementType" + | "approveSubscription" + | "calculateDistribution" + | "claim" + | "createIndex" + | "deleteSubscription" + | "distribute" + | "getIndex" + | "getSubscription" + | "getSubscriptionByID" + | "listSubscriptions" + | "realtimeBalanceOf" + | "revokeSubscription" + | "updateIndex" + | "updateSubscription" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "agreementType", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "approveSubscription", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "calculateDistribution", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "claim", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "createIndex", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "deleteSubscription", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "distribute", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "getIndex", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "getSubscription", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "getSubscriptionByID", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "listSubscriptions", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "realtimeBalanceOf", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "revokeSubscription", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "updateIndex", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "updateSubscription", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + + decodeFunctionResult( + functionFragment: "agreementType", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "approveSubscription", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "calculateDistribution", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "claim", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "createIndex", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "deleteSubscription", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "distribute", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "getIndex", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getSubscription", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getSubscriptionByID", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "listSubscriptions", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "realtimeBalanceOf", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "revokeSubscription", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "updateIndex", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "updateSubscription", + data: BytesLike + ): Result; + + events: { + "IndexCreated(address,address,uint32,bytes)": EventFragment; + "IndexDistributionClaimed(address,address,uint32,address,uint256)": EventFragment; + "IndexSubscribed(address,address,uint32,address,bytes)": EventFragment; + "IndexUnitsUpdated(address,address,uint32,address,uint128,bytes)": EventFragment; + "IndexUnsubscribed(address,address,uint32,address,bytes)": EventFragment; + "IndexUpdated(address,address,uint32,uint128,uint128,uint128,uint128,bytes)": EventFragment; + "SubscriptionApproved(address,address,address,uint32,bytes)": EventFragment; + "SubscriptionDistributionClaimed(address,address,address,uint32,uint256)": EventFragment; + "SubscriptionRevoked(address,address,address,uint32,bytes)": EventFragment; + "SubscriptionUnitsUpdated(address,address,address,uint32,uint128,bytes)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "IndexCreated"): EventFragment; + getEvent(nameOrSignatureOrTopic: "IndexDistributionClaimed"): EventFragment; + getEvent(nameOrSignatureOrTopic: "IndexSubscribed"): EventFragment; + getEvent(nameOrSignatureOrTopic: "IndexUnitsUpdated"): EventFragment; + getEvent(nameOrSignatureOrTopic: "IndexUnsubscribed"): EventFragment; + getEvent(nameOrSignatureOrTopic: "IndexUpdated"): EventFragment; + getEvent(nameOrSignatureOrTopic: "SubscriptionApproved"): EventFragment; + getEvent( + nameOrSignatureOrTopic: "SubscriptionDistributionClaimed" + ): EventFragment; + getEvent(nameOrSignatureOrTopic: "SubscriptionRevoked"): EventFragment; + getEvent(nameOrSignatureOrTopic: "SubscriptionUnitsUpdated"): EventFragment; +} + +export interface IndexCreatedEventObject { + token: string; + publisher: string; + indexId: number; + userData: string; +} +export type IndexCreatedEvent = TypedEvent< + [string, string, number, string], + IndexCreatedEventObject +>; + +export type IndexCreatedEventFilter = TypedEventFilter; + +export interface IndexDistributionClaimedEventObject { + token: string; + publisher: string; + indexId: number; + subscriber: string; + amount: BigNumber; +} +export type IndexDistributionClaimedEvent = TypedEvent< + [string, string, number, string, BigNumber], + IndexDistributionClaimedEventObject +>; + +export type IndexDistributionClaimedEventFilter = + TypedEventFilter; + +export interface IndexSubscribedEventObject { + token: string; + publisher: string; + indexId: number; + subscriber: string; + userData: string; +} +export type IndexSubscribedEvent = TypedEvent< + [string, string, number, string, string], + IndexSubscribedEventObject +>; + +export type IndexSubscribedEventFilter = TypedEventFilter; + +export interface IndexUnitsUpdatedEventObject { + token: string; + publisher: string; + indexId: number; + subscriber: string; + units: BigNumber; + userData: string; +} +export type IndexUnitsUpdatedEvent = TypedEvent< + [string, string, number, string, BigNumber, string], + IndexUnitsUpdatedEventObject +>; + +export type IndexUnitsUpdatedEventFilter = + TypedEventFilter; + +export interface IndexUnsubscribedEventObject { + token: string; + publisher: string; + indexId: number; + subscriber: string; + userData: string; +} +export type IndexUnsubscribedEvent = TypedEvent< + [string, string, number, string, string], + IndexUnsubscribedEventObject +>; + +export type IndexUnsubscribedEventFilter = + TypedEventFilter; + +export interface IndexUpdatedEventObject { + token: string; + publisher: string; + indexId: number; + oldIndexValue: BigNumber; + newIndexValue: BigNumber; + totalUnitsPending: BigNumber; + totalUnitsApproved: BigNumber; + userData: string; +} +export type IndexUpdatedEvent = TypedEvent< + [string, string, number, BigNumber, BigNumber, BigNumber, BigNumber, string], + IndexUpdatedEventObject +>; + +export type IndexUpdatedEventFilter = TypedEventFilter; + +export interface SubscriptionApprovedEventObject { + token: string; + subscriber: string; + publisher: string; + indexId: number; + userData: string; +} +export type SubscriptionApprovedEvent = TypedEvent< + [string, string, string, number, string], + SubscriptionApprovedEventObject +>; + +export type SubscriptionApprovedEventFilter = + TypedEventFilter; + +export interface SubscriptionDistributionClaimedEventObject { + token: string; + subscriber: string; + publisher: string; + indexId: number; + amount: BigNumber; +} +export type SubscriptionDistributionClaimedEvent = TypedEvent< + [string, string, string, number, BigNumber], + SubscriptionDistributionClaimedEventObject +>; + +export type SubscriptionDistributionClaimedEventFilter = + TypedEventFilter; + +export interface SubscriptionRevokedEventObject { + token: string; + subscriber: string; + publisher: string; + indexId: number; + userData: string; +} +export type SubscriptionRevokedEvent = TypedEvent< + [string, string, string, number, string], + SubscriptionRevokedEventObject +>; + +export type SubscriptionRevokedEventFilter = + TypedEventFilter; + +export interface SubscriptionUnitsUpdatedEventObject { + token: string; + subscriber: string; + publisher: string; + indexId: number; + units: BigNumber; + userData: string; +} +export type SubscriptionUnitsUpdatedEvent = TypedEvent< + [string, string, string, number, BigNumber, string], + SubscriptionUnitsUpdatedEventObject +>; + +export type SubscriptionUnitsUpdatedEventFilter = + TypedEventFilter; + +export interface IInstantDistributionAgreementV1 extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: IInstantDistributionAgreementV1Interface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + agreementType(overrides?: CallOverrides): Promise<[string]>; + + approveSubscription( + token: PromiseOrValue, + publisher: PromiseOrValue, + indexId: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + calculateDistribution( + token: PromiseOrValue, + publisher: PromiseOrValue, + indexId: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { + actualAmount: BigNumber; + newIndexValue: BigNumber; + } + >; + + claim( + token: PromiseOrValue, + publisher: PromiseOrValue, + indexId: PromiseOrValue, + subscriber: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + createIndex( + token: PromiseOrValue, + indexId: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + deleteSubscription( + token: PromiseOrValue, + publisher: PromiseOrValue, + indexId: PromiseOrValue, + subscriber: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + distribute( + token: PromiseOrValue, + indexId: PromiseOrValue, + amount: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getIndex( + token: PromiseOrValue, + publisher: PromiseOrValue, + indexId: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [boolean, BigNumber, BigNumber, BigNumber] & { + exist: boolean; + indexValue: BigNumber; + totalUnitsApproved: BigNumber; + totalUnitsPending: BigNumber; + } + >; + + getSubscription( + token: PromiseOrValue, + publisher: PromiseOrValue, + indexId: PromiseOrValue, + subscriber: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [boolean, boolean, BigNumber, BigNumber] & { + exist: boolean; + approved: boolean; + units: BigNumber; + pendingDistribution: BigNumber; + } + >; + + getSubscriptionByID( + token: PromiseOrValue, + agreementId: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [string, number, boolean, BigNumber, BigNumber] & { + publisher: string; + indexId: number; + approved: boolean; + units: BigNumber; + pendingDistribution: BigNumber; + } + >; + + listSubscriptions( + token: PromiseOrValue, + subscriber: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [string[], number[], BigNumber[]] & { + publishers: string[]; + indexIds: number[]; + unitsList: BigNumber[]; + } + >; + + realtimeBalanceOf( + token: PromiseOrValue, + account: PromiseOrValue, + time: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber, BigNumber] & { + dynamicBalance: BigNumber; + deposit: BigNumber; + owedDeposit: BigNumber; + } + >; + + revokeSubscription( + token: PromiseOrValue, + publisher: PromiseOrValue, + indexId: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + updateIndex( + token: PromiseOrValue, + indexId: PromiseOrValue, + indexValue: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + updateSubscription( + token: PromiseOrValue, + indexId: PromiseOrValue, + subscriber: PromiseOrValue, + units: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + agreementType(overrides?: CallOverrides): Promise; + + approveSubscription( + token: PromiseOrValue, + publisher: PromiseOrValue, + indexId: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + calculateDistribution( + token: PromiseOrValue, + publisher: PromiseOrValue, + indexId: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { + actualAmount: BigNumber; + newIndexValue: BigNumber; + } + >; + + claim( + token: PromiseOrValue, + publisher: PromiseOrValue, + indexId: PromiseOrValue, + subscriber: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + createIndex( + token: PromiseOrValue, + indexId: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + deleteSubscription( + token: PromiseOrValue, + publisher: PromiseOrValue, + indexId: PromiseOrValue, + subscriber: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + distribute( + token: PromiseOrValue, + indexId: PromiseOrValue, + amount: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getIndex( + token: PromiseOrValue, + publisher: PromiseOrValue, + indexId: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [boolean, BigNumber, BigNumber, BigNumber] & { + exist: boolean; + indexValue: BigNumber; + totalUnitsApproved: BigNumber; + totalUnitsPending: BigNumber; + } + >; + + getSubscription( + token: PromiseOrValue, + publisher: PromiseOrValue, + indexId: PromiseOrValue, + subscriber: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [boolean, boolean, BigNumber, BigNumber] & { + exist: boolean; + approved: boolean; + units: BigNumber; + pendingDistribution: BigNumber; + } + >; + + getSubscriptionByID( + token: PromiseOrValue, + agreementId: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [string, number, boolean, BigNumber, BigNumber] & { + publisher: string; + indexId: number; + approved: boolean; + units: BigNumber; + pendingDistribution: BigNumber; + } + >; + + listSubscriptions( + token: PromiseOrValue, + subscriber: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [string[], number[], BigNumber[]] & { + publishers: string[]; + indexIds: number[]; + unitsList: BigNumber[]; + } + >; + + realtimeBalanceOf( + token: PromiseOrValue, + account: PromiseOrValue, + time: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber, BigNumber] & { + dynamicBalance: BigNumber; + deposit: BigNumber; + owedDeposit: BigNumber; + } + >; + + revokeSubscription( + token: PromiseOrValue, + publisher: PromiseOrValue, + indexId: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + updateIndex( + token: PromiseOrValue, + indexId: PromiseOrValue, + indexValue: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + updateSubscription( + token: PromiseOrValue, + indexId: PromiseOrValue, + subscriber: PromiseOrValue, + units: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + agreementType(overrides?: CallOverrides): Promise; + + approveSubscription( + token: PromiseOrValue, + publisher: PromiseOrValue, + indexId: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + calculateDistribution( + token: PromiseOrValue, + publisher: PromiseOrValue, + indexId: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber] & { + actualAmount: BigNumber; + newIndexValue: BigNumber; + } + >; + + claim( + token: PromiseOrValue, + publisher: PromiseOrValue, + indexId: PromiseOrValue, + subscriber: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + createIndex( + token: PromiseOrValue, + indexId: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + deleteSubscription( + token: PromiseOrValue, + publisher: PromiseOrValue, + indexId: PromiseOrValue, + subscriber: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + distribute( + token: PromiseOrValue, + indexId: PromiseOrValue, + amount: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getIndex( + token: PromiseOrValue, + publisher: PromiseOrValue, + indexId: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [boolean, BigNumber, BigNumber, BigNumber] & { + exist: boolean; + indexValue: BigNumber; + totalUnitsApproved: BigNumber; + totalUnitsPending: BigNumber; + } + >; + + getSubscription( + token: PromiseOrValue, + publisher: PromiseOrValue, + indexId: PromiseOrValue, + subscriber: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [boolean, boolean, BigNumber, BigNumber] & { + exist: boolean; + approved: boolean; + units: BigNumber; + pendingDistribution: BigNumber; + } + >; + + getSubscriptionByID( + token: PromiseOrValue, + agreementId: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [string, number, boolean, BigNumber, BigNumber] & { + publisher: string; + indexId: number; + approved: boolean; + units: BigNumber; + pendingDistribution: BigNumber; + } + >; + + listSubscriptions( + token: PromiseOrValue, + subscriber: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [string[], number[], BigNumber[]] & { + publishers: string[]; + indexIds: number[]; + unitsList: BigNumber[]; + } + >; + + realtimeBalanceOf( + token: PromiseOrValue, + account: PromiseOrValue, + time: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber, BigNumber] & { + dynamicBalance: BigNumber; + deposit: BigNumber; + owedDeposit: BigNumber; + } + >; + + revokeSubscription( + token: PromiseOrValue, + publisher: PromiseOrValue, + indexId: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + updateIndex( + token: PromiseOrValue, + indexId: PromiseOrValue, + indexValue: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + updateSubscription( + token: PromiseOrValue, + indexId: PromiseOrValue, + subscriber: PromiseOrValue, + units: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "IndexCreated(address,address,uint32,bytes)"( + token?: PromiseOrValue | null, + publisher?: PromiseOrValue | null, + indexId?: PromiseOrValue | null, + userData?: null + ): IndexCreatedEventFilter; + IndexCreated( + token?: PromiseOrValue | null, + publisher?: PromiseOrValue | null, + indexId?: PromiseOrValue | null, + userData?: null + ): IndexCreatedEventFilter; + + "IndexDistributionClaimed(address,address,uint32,address,uint256)"( + token?: PromiseOrValue | null, + publisher?: PromiseOrValue | null, + indexId?: PromiseOrValue | null, + subscriber?: null, + amount?: null + ): IndexDistributionClaimedEventFilter; + IndexDistributionClaimed( + token?: PromiseOrValue | null, + publisher?: PromiseOrValue | null, + indexId?: PromiseOrValue | null, + subscriber?: null, + amount?: null + ): IndexDistributionClaimedEventFilter; + + "IndexSubscribed(address,address,uint32,address,bytes)"( + token?: PromiseOrValue | null, + publisher?: PromiseOrValue | null, + indexId?: PromiseOrValue | null, + subscriber?: null, + userData?: null + ): IndexSubscribedEventFilter; + IndexSubscribed( + token?: PromiseOrValue | null, + publisher?: PromiseOrValue | null, + indexId?: PromiseOrValue | null, + subscriber?: null, + userData?: null + ): IndexSubscribedEventFilter; + + "IndexUnitsUpdated(address,address,uint32,address,uint128,bytes)"( + token?: PromiseOrValue | null, + publisher?: PromiseOrValue | null, + indexId?: PromiseOrValue | null, + subscriber?: null, + units?: null, + userData?: null + ): IndexUnitsUpdatedEventFilter; + IndexUnitsUpdated( + token?: PromiseOrValue | null, + publisher?: PromiseOrValue | null, + indexId?: PromiseOrValue | null, + subscriber?: null, + units?: null, + userData?: null + ): IndexUnitsUpdatedEventFilter; + + "IndexUnsubscribed(address,address,uint32,address,bytes)"( + token?: PromiseOrValue | null, + publisher?: PromiseOrValue | null, + indexId?: PromiseOrValue | null, + subscriber?: null, + userData?: null + ): IndexUnsubscribedEventFilter; + IndexUnsubscribed( + token?: PromiseOrValue | null, + publisher?: PromiseOrValue | null, + indexId?: PromiseOrValue | null, + subscriber?: null, + userData?: null + ): IndexUnsubscribedEventFilter; + + "IndexUpdated(address,address,uint32,uint128,uint128,uint128,uint128,bytes)"( + token?: PromiseOrValue | null, + publisher?: PromiseOrValue | null, + indexId?: PromiseOrValue | null, + oldIndexValue?: null, + newIndexValue?: null, + totalUnitsPending?: null, + totalUnitsApproved?: null, + userData?: null + ): IndexUpdatedEventFilter; + IndexUpdated( + token?: PromiseOrValue | null, + publisher?: PromiseOrValue | null, + indexId?: PromiseOrValue | null, + oldIndexValue?: null, + newIndexValue?: null, + totalUnitsPending?: null, + totalUnitsApproved?: null, + userData?: null + ): IndexUpdatedEventFilter; + + "SubscriptionApproved(address,address,address,uint32,bytes)"( + token?: PromiseOrValue | null, + subscriber?: PromiseOrValue | null, + publisher?: null, + indexId?: null, + userData?: null + ): SubscriptionApprovedEventFilter; + SubscriptionApproved( + token?: PromiseOrValue | null, + subscriber?: PromiseOrValue | null, + publisher?: null, + indexId?: null, + userData?: null + ): SubscriptionApprovedEventFilter; + + "SubscriptionDistributionClaimed(address,address,address,uint32,uint256)"( + token?: PromiseOrValue | null, + subscriber?: PromiseOrValue | null, + publisher?: null, + indexId?: null, + amount?: null + ): SubscriptionDistributionClaimedEventFilter; + SubscriptionDistributionClaimed( + token?: PromiseOrValue | null, + subscriber?: PromiseOrValue | null, + publisher?: null, + indexId?: null, + amount?: null + ): SubscriptionDistributionClaimedEventFilter; + + "SubscriptionRevoked(address,address,address,uint32,bytes)"( + token?: PromiseOrValue | null, + subscriber?: PromiseOrValue | null, + publisher?: null, + indexId?: null, + userData?: null + ): SubscriptionRevokedEventFilter; + SubscriptionRevoked( + token?: PromiseOrValue | null, + subscriber?: PromiseOrValue | null, + publisher?: null, + indexId?: null, + userData?: null + ): SubscriptionRevokedEventFilter; + + "SubscriptionUnitsUpdated(address,address,address,uint32,uint128,bytes)"( + token?: PromiseOrValue | null, + subscriber?: PromiseOrValue | null, + publisher?: null, + indexId?: null, + units?: null, + userData?: null + ): SubscriptionUnitsUpdatedEventFilter; + SubscriptionUnitsUpdated( + token?: PromiseOrValue | null, + subscriber?: PromiseOrValue | null, + publisher?: null, + indexId?: null, + units?: null, + userData?: null + ): SubscriptionUnitsUpdatedEventFilter; + }; + + estimateGas: { + agreementType(overrides?: CallOverrides): Promise; + + approveSubscription( + token: PromiseOrValue, + publisher: PromiseOrValue, + indexId: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + calculateDistribution( + token: PromiseOrValue, + publisher: PromiseOrValue, + indexId: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + claim( + token: PromiseOrValue, + publisher: PromiseOrValue, + indexId: PromiseOrValue, + subscriber: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + createIndex( + token: PromiseOrValue, + indexId: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + deleteSubscription( + token: PromiseOrValue, + publisher: PromiseOrValue, + indexId: PromiseOrValue, + subscriber: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + distribute( + token: PromiseOrValue, + indexId: PromiseOrValue, + amount: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getIndex( + token: PromiseOrValue, + publisher: PromiseOrValue, + indexId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSubscription( + token: PromiseOrValue, + publisher: PromiseOrValue, + indexId: PromiseOrValue, + subscriber: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSubscriptionByID( + token: PromiseOrValue, + agreementId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + listSubscriptions( + token: PromiseOrValue, + subscriber: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + realtimeBalanceOf( + token: PromiseOrValue, + account: PromiseOrValue, + time: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + revokeSubscription( + token: PromiseOrValue, + publisher: PromiseOrValue, + indexId: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + updateIndex( + token: PromiseOrValue, + indexId: PromiseOrValue, + indexValue: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + updateSubscription( + token: PromiseOrValue, + indexId: PromiseOrValue, + subscriber: PromiseOrValue, + units: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + agreementType(overrides?: CallOverrides): Promise; + + approveSubscription( + token: PromiseOrValue, + publisher: PromiseOrValue, + indexId: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + calculateDistribution( + token: PromiseOrValue, + publisher: PromiseOrValue, + indexId: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + claim( + token: PromiseOrValue, + publisher: PromiseOrValue, + indexId: PromiseOrValue, + subscriber: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + createIndex( + token: PromiseOrValue, + indexId: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + deleteSubscription( + token: PromiseOrValue, + publisher: PromiseOrValue, + indexId: PromiseOrValue, + subscriber: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + distribute( + token: PromiseOrValue, + indexId: PromiseOrValue, + amount: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getIndex( + token: PromiseOrValue, + publisher: PromiseOrValue, + indexId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSubscription( + token: PromiseOrValue, + publisher: PromiseOrValue, + indexId: PromiseOrValue, + subscriber: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSubscriptionByID( + token: PromiseOrValue, + agreementId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + listSubscriptions( + token: PromiseOrValue, + subscriber: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + realtimeBalanceOf( + token: PromiseOrValue, + account: PromiseOrValue, + time: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + revokeSubscription( + token: PromiseOrValue, + publisher: PromiseOrValue, + indexId: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + updateIndex( + token: PromiseOrValue, + indexId: PromiseOrValue, + indexValue: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + updateSubscription( + token: PromiseOrValue, + indexId: PromiseOrValue, + subscriber: PromiseOrValue, + units: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/contracts/typechain-types/@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/index.ts b/contracts/typechain-types/@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/index.ts new file mode 100644 index 0000000..0edd2e8 --- /dev/null +++ b/contracts/typechain-types/@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/index.ts @@ -0,0 +1,5 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { IConstantFlowAgreementV1 } from "./IConstantFlowAgreementV1"; +export type { IInstantDistributionAgreementV1 } from "./IInstantDistributionAgreementV1"; diff --git a/contracts/typechain-types/@superfluid-finance/ethereum-contracts/contracts/interfaces/index.ts b/contracts/typechain-types/@superfluid-finance/ethereum-contracts/contracts/interfaces/index.ts new file mode 100644 index 0000000..153dc4e --- /dev/null +++ b/contracts/typechain-types/@superfluid-finance/ethereum-contracts/contracts/interfaces/index.ts @@ -0,0 +1,9 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type * as agreements from "./agreements"; +export type { agreements }; +import type * as superfluid from "./superfluid"; +export type { superfluid }; +import type * as tokens from "./tokens"; +export type { tokens }; diff --git a/contracts/typechain-types/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.ts b/contracts/typechain-types/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.ts new file mode 100644 index 0000000..c2226b9 --- /dev/null +++ b/contracts/typechain-types/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement.ts @@ -0,0 +1,157 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../../../common"; + +export interface ISuperAgreementInterface extends utils.Interface { + functions: { + "agreementType()": FunctionFragment; + "realtimeBalanceOf(address,address,uint256)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: "agreementType" | "realtimeBalanceOf" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "agreementType", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "realtimeBalanceOf", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + + decodeFunctionResult( + functionFragment: "agreementType", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "realtimeBalanceOf", + data: BytesLike + ): Result; + + events: {}; +} + +export interface ISuperAgreement extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: ISuperAgreementInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + agreementType(overrides?: CallOverrides): Promise<[string]>; + + realtimeBalanceOf( + token: PromiseOrValue, + account: PromiseOrValue, + time: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber, BigNumber] & { + dynamicBalance: BigNumber; + deposit: BigNumber; + owedDeposit: BigNumber; + } + >; + }; + + agreementType(overrides?: CallOverrides): Promise; + + realtimeBalanceOf( + token: PromiseOrValue, + account: PromiseOrValue, + time: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber, BigNumber] & { + dynamicBalance: BigNumber; + deposit: BigNumber; + owedDeposit: BigNumber; + } + >; + + callStatic: { + agreementType(overrides?: CallOverrides): Promise; + + realtimeBalanceOf( + token: PromiseOrValue, + account: PromiseOrValue, + time: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber, BigNumber] & { + dynamicBalance: BigNumber; + deposit: BigNumber; + owedDeposit: BigNumber; + } + >; + }; + + filters: {}; + + estimateGas: { + agreementType(overrides?: CallOverrides): Promise; + + realtimeBalanceOf( + token: PromiseOrValue, + account: PromiseOrValue, + time: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + populateTransaction: { + agreementType(overrides?: CallOverrides): Promise; + + realtimeBalanceOf( + token: PromiseOrValue, + account: PromiseOrValue, + time: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; +} diff --git a/contracts/typechain-types/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperApp.ts b/contracts/typechain-types/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperApp.ts new file mode 100644 index 0000000..a698e26 --- /dev/null +++ b/contracts/typechain-types/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperApp.ts @@ -0,0 +1,457 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../../../common"; + +export interface ISuperAppInterface extends utils.Interface { + functions: { + "afterAgreementCreated(address,address,bytes32,bytes,bytes,bytes)": FunctionFragment; + "afterAgreementTerminated(address,address,bytes32,bytes,bytes,bytes)": FunctionFragment; + "afterAgreementUpdated(address,address,bytes32,bytes,bytes,bytes)": FunctionFragment; + "beforeAgreementCreated(address,address,bytes32,bytes,bytes)": FunctionFragment; + "beforeAgreementTerminated(address,address,bytes32,bytes,bytes)": FunctionFragment; + "beforeAgreementUpdated(address,address,bytes32,bytes,bytes)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "afterAgreementCreated" + | "afterAgreementTerminated" + | "afterAgreementUpdated" + | "beforeAgreementCreated" + | "beforeAgreementTerminated" + | "beforeAgreementUpdated" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "afterAgreementCreated", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "afterAgreementTerminated", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "afterAgreementUpdated", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "beforeAgreementCreated", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "beforeAgreementTerminated", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "beforeAgreementUpdated", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + + decodeFunctionResult( + functionFragment: "afterAgreementCreated", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "afterAgreementTerminated", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "afterAgreementUpdated", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "beforeAgreementCreated", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "beforeAgreementTerminated", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "beforeAgreementUpdated", + data: BytesLike + ): Result; + + events: {}; +} + +export interface ISuperApp extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: ISuperAppInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + afterAgreementCreated( + superToken: PromiseOrValue, + agreementClass: PromiseOrValue, + agreementId: PromiseOrValue, + agreementData: PromiseOrValue, + cbdata: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + afterAgreementTerminated( + superToken: PromiseOrValue, + agreementClass: PromiseOrValue, + agreementId: PromiseOrValue, + agreementData: PromiseOrValue, + cbdata: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + afterAgreementUpdated( + superToken: PromiseOrValue, + agreementClass: PromiseOrValue, + agreementId: PromiseOrValue, + agreementData: PromiseOrValue, + cbdata: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + beforeAgreementCreated( + superToken: PromiseOrValue, + agreementClass: PromiseOrValue, + agreementId: PromiseOrValue, + agreementData: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string] & { cbdata: string }>; + + beforeAgreementTerminated( + superToken: PromiseOrValue, + agreementClass: PromiseOrValue, + agreementId: PromiseOrValue, + agreementData: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string] & { cbdata: string }>; + + beforeAgreementUpdated( + superToken: PromiseOrValue, + agreementClass: PromiseOrValue, + agreementId: PromiseOrValue, + agreementData: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string] & { cbdata: string }>; + }; + + afterAgreementCreated( + superToken: PromiseOrValue, + agreementClass: PromiseOrValue, + agreementId: PromiseOrValue, + agreementData: PromiseOrValue, + cbdata: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + afterAgreementTerminated( + superToken: PromiseOrValue, + agreementClass: PromiseOrValue, + agreementId: PromiseOrValue, + agreementData: PromiseOrValue, + cbdata: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + afterAgreementUpdated( + superToken: PromiseOrValue, + agreementClass: PromiseOrValue, + agreementId: PromiseOrValue, + agreementData: PromiseOrValue, + cbdata: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + beforeAgreementCreated( + superToken: PromiseOrValue, + agreementClass: PromiseOrValue, + agreementId: PromiseOrValue, + agreementData: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + beforeAgreementTerminated( + superToken: PromiseOrValue, + agreementClass: PromiseOrValue, + agreementId: PromiseOrValue, + agreementData: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + beforeAgreementUpdated( + superToken: PromiseOrValue, + agreementClass: PromiseOrValue, + agreementId: PromiseOrValue, + agreementData: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + callStatic: { + afterAgreementCreated( + superToken: PromiseOrValue, + agreementClass: PromiseOrValue, + agreementId: PromiseOrValue, + agreementData: PromiseOrValue, + cbdata: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + afterAgreementTerminated( + superToken: PromiseOrValue, + agreementClass: PromiseOrValue, + agreementId: PromiseOrValue, + agreementData: PromiseOrValue, + cbdata: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + afterAgreementUpdated( + superToken: PromiseOrValue, + agreementClass: PromiseOrValue, + agreementId: PromiseOrValue, + agreementData: PromiseOrValue, + cbdata: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + beforeAgreementCreated( + superToken: PromiseOrValue, + agreementClass: PromiseOrValue, + agreementId: PromiseOrValue, + agreementData: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + beforeAgreementTerminated( + superToken: PromiseOrValue, + agreementClass: PromiseOrValue, + agreementId: PromiseOrValue, + agreementData: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + beforeAgreementUpdated( + superToken: PromiseOrValue, + agreementClass: PromiseOrValue, + agreementId: PromiseOrValue, + agreementData: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + afterAgreementCreated( + superToken: PromiseOrValue, + agreementClass: PromiseOrValue, + agreementId: PromiseOrValue, + agreementData: PromiseOrValue, + cbdata: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + afterAgreementTerminated( + superToken: PromiseOrValue, + agreementClass: PromiseOrValue, + agreementId: PromiseOrValue, + agreementData: PromiseOrValue, + cbdata: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + afterAgreementUpdated( + superToken: PromiseOrValue, + agreementClass: PromiseOrValue, + agreementId: PromiseOrValue, + agreementData: PromiseOrValue, + cbdata: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + beforeAgreementCreated( + superToken: PromiseOrValue, + agreementClass: PromiseOrValue, + agreementId: PromiseOrValue, + agreementData: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + beforeAgreementTerminated( + superToken: PromiseOrValue, + agreementClass: PromiseOrValue, + agreementId: PromiseOrValue, + agreementData: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + beforeAgreementUpdated( + superToken: PromiseOrValue, + agreementClass: PromiseOrValue, + agreementId: PromiseOrValue, + agreementData: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + populateTransaction: { + afterAgreementCreated( + superToken: PromiseOrValue, + agreementClass: PromiseOrValue, + agreementId: PromiseOrValue, + agreementData: PromiseOrValue, + cbdata: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + afterAgreementTerminated( + superToken: PromiseOrValue, + agreementClass: PromiseOrValue, + agreementId: PromiseOrValue, + agreementData: PromiseOrValue, + cbdata: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + afterAgreementUpdated( + superToken: PromiseOrValue, + agreementClass: PromiseOrValue, + agreementId: PromiseOrValue, + agreementData: PromiseOrValue, + cbdata: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + beforeAgreementCreated( + superToken: PromiseOrValue, + agreementClass: PromiseOrValue, + agreementId: PromiseOrValue, + agreementData: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + beforeAgreementTerminated( + superToken: PromiseOrValue, + agreementClass: PromiseOrValue, + agreementId: PromiseOrValue, + agreementData: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + beforeAgreementUpdated( + superToken: PromiseOrValue, + agreementClass: PromiseOrValue, + agreementId: PromiseOrValue, + agreementData: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; +} diff --git a/contracts/typechain-types/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.ts b/contracts/typechain-types/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.ts new file mode 100644 index 0000000..4e2e375 --- /dev/null +++ b/contracts/typechain-types/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken.ts @@ -0,0 +1,2722 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../../../common"; + +export interface ISuperTokenInterface extends utils.Interface { + functions: { + "allowance(address,address)": FunctionFragment; + "approve(address,uint256)": FunctionFragment; + "authorizeOperator(address)": FunctionFragment; + "balanceOf(address)": FunctionFragment; + "burn(uint256,bytes)": FunctionFragment; + "createAgreement(bytes32,bytes32[])": FunctionFragment; + "decimals()": FunctionFragment; + "decreaseAllowance(address,uint256)": FunctionFragment; + "defaultOperators()": FunctionFragment; + "downgrade(uint256)": FunctionFragment; + "downgradeTo(address,uint256)": FunctionFragment; + "getAccountActiveAgreements(address)": FunctionFragment; + "getAgreementData(address,bytes32,uint256)": FunctionFragment; + "getAgreementStateSlot(address,address,uint256,uint256)": FunctionFragment; + "getHost()": FunctionFragment; + "getUnderlyingToken()": FunctionFragment; + "granularity()": FunctionFragment; + "increaseAllowance(address,uint256)": FunctionFragment; + "initialize(address,uint8,string,string)": FunctionFragment; + "isAccountCritical(address,uint256)": FunctionFragment; + "isAccountCriticalNow(address)": FunctionFragment; + "isAccountSolvent(address,uint256)": FunctionFragment; + "isAccountSolventNow(address)": FunctionFragment; + "isOperatorFor(address,address)": FunctionFragment; + "makeLiquidationPayoutsV2(bytes32,bytes,address,bool,address,uint256,int256)": FunctionFragment; + "name()": FunctionFragment; + "operationApprove(address,address,uint256)": FunctionFragment; + "operationDecreaseAllowance(address,address,uint256)": FunctionFragment; + "operationDowngrade(address,uint256)": FunctionFragment; + "operationIncreaseAllowance(address,address,uint256)": FunctionFragment; + "operationSend(address,address,uint256,bytes)": FunctionFragment; + "operationTransferFrom(address,address,address,uint256)": FunctionFragment; + "operationUpgrade(address,uint256)": FunctionFragment; + "operatorBurn(address,uint256,bytes,bytes)": FunctionFragment; + "operatorSend(address,address,uint256,bytes,bytes)": FunctionFragment; + "realtimeBalanceOf(address,uint256)": FunctionFragment; + "realtimeBalanceOfNow(address)": FunctionFragment; + "revokeOperator(address)": FunctionFragment; + "selfApproveFor(address,address,uint256)": FunctionFragment; + "selfBurn(address,uint256,bytes)": FunctionFragment; + "selfMint(address,uint256,bytes)": FunctionFragment; + "selfTransferFrom(address,address,address,uint256)": FunctionFragment; + "send(address,uint256,bytes)": FunctionFragment; + "settleBalance(address,int256)": FunctionFragment; + "symbol()": FunctionFragment; + "terminateAgreement(bytes32,uint256)": FunctionFragment; + "totalSupply()": FunctionFragment; + "transfer(address,uint256)": FunctionFragment; + "transferAll(address)": FunctionFragment; + "transferFrom(address,address,uint256)": FunctionFragment; + "updateAgreementData(bytes32,bytes32[])": FunctionFragment; + "updateAgreementStateSlot(address,uint256,bytes32[])": FunctionFragment; + "upgrade(uint256)": FunctionFragment; + "upgradeTo(address,uint256,bytes)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "allowance" + | "approve" + | "authorizeOperator" + | "balanceOf" + | "burn" + | "createAgreement" + | "decimals" + | "decreaseAllowance" + | "defaultOperators" + | "downgrade" + | "downgradeTo" + | "getAccountActiveAgreements" + | "getAgreementData" + | "getAgreementStateSlot" + | "getHost" + | "getUnderlyingToken" + | "granularity" + | "increaseAllowance" + | "initialize" + | "isAccountCritical" + | "isAccountCriticalNow" + | "isAccountSolvent" + | "isAccountSolventNow" + | "isOperatorFor" + | "makeLiquidationPayoutsV2" + | "name" + | "operationApprove" + | "operationDecreaseAllowance" + | "operationDowngrade" + | "operationIncreaseAllowance" + | "operationSend" + | "operationTransferFrom" + | "operationUpgrade" + | "operatorBurn" + | "operatorSend" + | "realtimeBalanceOf" + | "realtimeBalanceOfNow" + | "revokeOperator" + | "selfApproveFor" + | "selfBurn" + | "selfMint" + | "selfTransferFrom" + | "send" + | "settleBalance" + | "symbol" + | "terminateAgreement" + | "totalSupply" + | "transfer" + | "transferAll" + | "transferFrom" + | "updateAgreementData" + | "updateAgreementStateSlot" + | "upgrade" + | "upgradeTo" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "allowance", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "approve", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "authorizeOperator", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "balanceOf", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "burn", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "createAgreement", + values: [PromiseOrValue, PromiseOrValue[]] + ): string; + encodeFunctionData(functionFragment: "decimals", values?: undefined): string; + encodeFunctionData( + functionFragment: "decreaseAllowance", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "defaultOperators", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "downgrade", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "downgradeTo", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getAccountActiveAgreements", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getAgreementData", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "getAgreementStateSlot", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData(functionFragment: "getHost", values?: undefined): string; + encodeFunctionData( + functionFragment: "getUnderlyingToken", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "granularity", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "increaseAllowance", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "initialize", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "isAccountCritical", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "isAccountCriticalNow", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "isAccountSolvent", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "isAccountSolventNow", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "isOperatorFor", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "makeLiquidationPayoutsV2", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData(functionFragment: "name", values?: undefined): string; + encodeFunctionData( + functionFragment: "operationApprove", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "operationDecreaseAllowance", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "operationDowngrade", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "operationIncreaseAllowance", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "operationSend", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "operationTransferFrom", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "operationUpgrade", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "operatorBurn", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "operatorSend", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "realtimeBalanceOf", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "realtimeBalanceOfNow", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "revokeOperator", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "selfApproveFor", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "selfBurn", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "selfMint", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "selfTransferFrom", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "send", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "settleBalance", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "symbol", values?: undefined): string; + encodeFunctionData( + functionFragment: "terminateAgreement", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "totalSupply", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "transfer", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "transferAll", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "transferFrom", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "updateAgreementData", + values: [PromiseOrValue, PromiseOrValue[]] + ): string; + encodeFunctionData( + functionFragment: "updateAgreementStateSlot", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue[] + ] + ): string; + encodeFunctionData( + functionFragment: "upgrade", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "upgradeTo", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + + decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "authorizeOperator", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "burn", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "createAgreement", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "decimals", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "decreaseAllowance", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "defaultOperators", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "downgrade", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "downgradeTo", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getAccountActiveAgreements", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getAgreementData", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getAgreementStateSlot", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "getHost", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getUnderlyingToken", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "granularity", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "increaseAllowance", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "isAccountCritical", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "isAccountCriticalNow", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "isAccountSolvent", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "isAccountSolventNow", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "isOperatorFor", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "makeLiquidationPayoutsV2", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "operationApprove", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "operationDecreaseAllowance", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "operationDowngrade", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "operationIncreaseAllowance", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "operationSend", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "operationTransferFrom", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "operationUpgrade", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "operatorBurn", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "operatorSend", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "realtimeBalanceOf", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "realtimeBalanceOfNow", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "revokeOperator", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "selfApproveFor", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "selfBurn", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "selfMint", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "selfTransferFrom", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "send", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "settleBalance", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "terminateAgreement", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "totalSupply", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "transferAll", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferFrom", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "updateAgreementData", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "updateAgreementStateSlot", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "upgrade", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "upgradeTo", data: BytesLike): Result; + + events: { + "AgreementCreated(address,bytes32,bytes32[])": EventFragment; + "AgreementLiquidated(address,bytes32,address,address,uint256)": EventFragment; + "AgreementLiquidatedBy(address,address,bytes32,address,address,uint256,uint256)": EventFragment; + "AgreementLiquidatedV2(address,bytes32,address,address,address,uint256,int256,bytes)": EventFragment; + "AgreementStateUpdated(address,address,uint256)": EventFragment; + "AgreementTerminated(address,bytes32)": EventFragment; + "AgreementUpdated(address,bytes32,bytes32[])": EventFragment; + "Approval(address,address,uint256)": EventFragment; + "AuthorizedOperator(address,address)": EventFragment; + "Bailout(address,uint256)": EventFragment; + "Burned(address,address,uint256,bytes,bytes)": EventFragment; + "Minted(address,address,uint256,bytes,bytes)": EventFragment; + "RevokedOperator(address,address)": EventFragment; + "Sent(address,address,address,uint256,bytes,bytes)": EventFragment; + "TokenDowngraded(address,uint256)": EventFragment; + "TokenUpgraded(address,uint256)": EventFragment; + "Transfer(address,address,uint256)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "AgreementCreated"): EventFragment; + getEvent(nameOrSignatureOrTopic: "AgreementLiquidated"): EventFragment; + getEvent(nameOrSignatureOrTopic: "AgreementLiquidatedBy"): EventFragment; + getEvent(nameOrSignatureOrTopic: "AgreementLiquidatedV2"): EventFragment; + getEvent(nameOrSignatureOrTopic: "AgreementStateUpdated"): EventFragment; + getEvent(nameOrSignatureOrTopic: "AgreementTerminated"): EventFragment; + getEvent(nameOrSignatureOrTopic: "AgreementUpdated"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; + getEvent(nameOrSignatureOrTopic: "AuthorizedOperator"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Bailout"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Burned"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Minted"): EventFragment; + getEvent(nameOrSignatureOrTopic: "RevokedOperator"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Sent"): EventFragment; + getEvent(nameOrSignatureOrTopic: "TokenDowngraded"): EventFragment; + getEvent(nameOrSignatureOrTopic: "TokenUpgraded"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; +} + +export interface AgreementCreatedEventObject { + agreementClass: string; + id: string; + data: string[]; +} +export type AgreementCreatedEvent = TypedEvent< + [string, string, string[]], + AgreementCreatedEventObject +>; + +export type AgreementCreatedEventFilter = + TypedEventFilter; + +export interface AgreementLiquidatedEventObject { + agreementClass: string; + id: string; + penaltyAccount: string; + rewardAccount: string; + rewardAmount: BigNumber; +} +export type AgreementLiquidatedEvent = TypedEvent< + [string, string, string, string, BigNumber], + AgreementLiquidatedEventObject +>; + +export type AgreementLiquidatedEventFilter = + TypedEventFilter; + +export interface AgreementLiquidatedByEventObject { + liquidatorAccount: string; + agreementClass: string; + id: string; + penaltyAccount: string; + bondAccount: string; + rewardAmount: BigNumber; + bailoutAmount: BigNumber; +} +export type AgreementLiquidatedByEvent = TypedEvent< + [string, string, string, string, string, BigNumber, BigNumber], + AgreementLiquidatedByEventObject +>; + +export type AgreementLiquidatedByEventFilter = + TypedEventFilter; + +export interface AgreementLiquidatedV2EventObject { + agreementClass: string; + id: string; + liquidatorAccount: string; + targetAccount: string; + rewardAmountReceiver: string; + rewardAmount: BigNumber; + targetAccountBalanceDelta: BigNumber; + liquidationTypeData: string; +} +export type AgreementLiquidatedV2Event = TypedEvent< + [string, string, string, string, string, BigNumber, BigNumber, string], + AgreementLiquidatedV2EventObject +>; + +export type AgreementLiquidatedV2EventFilter = + TypedEventFilter; + +export interface AgreementStateUpdatedEventObject { + agreementClass: string; + account: string; + slotId: BigNumber; +} +export type AgreementStateUpdatedEvent = TypedEvent< + [string, string, BigNumber], + AgreementStateUpdatedEventObject +>; + +export type AgreementStateUpdatedEventFilter = + TypedEventFilter; + +export interface AgreementTerminatedEventObject { + agreementClass: string; + id: string; +} +export type AgreementTerminatedEvent = TypedEvent< + [string, string], + AgreementTerminatedEventObject +>; + +export type AgreementTerminatedEventFilter = + TypedEventFilter; + +export interface AgreementUpdatedEventObject { + agreementClass: string; + id: string; + data: string[]; +} +export type AgreementUpdatedEvent = TypedEvent< + [string, string, string[]], + AgreementUpdatedEventObject +>; + +export type AgreementUpdatedEventFilter = + TypedEventFilter; + +export interface ApprovalEventObject { + owner: string; + spender: string; + value: BigNumber; +} +export type ApprovalEvent = TypedEvent< + [string, string, BigNumber], + ApprovalEventObject +>; + +export type ApprovalEventFilter = TypedEventFilter; + +export interface AuthorizedOperatorEventObject { + operator: string; + tokenHolder: string; +} +export type AuthorizedOperatorEvent = TypedEvent< + [string, string], + AuthorizedOperatorEventObject +>; + +export type AuthorizedOperatorEventFilter = + TypedEventFilter; + +export interface BailoutEventObject { + bailoutAccount: string; + bailoutAmount: BigNumber; +} +export type BailoutEvent = TypedEvent<[string, BigNumber], BailoutEventObject>; + +export type BailoutEventFilter = TypedEventFilter; + +export interface BurnedEventObject { + operator: string; + from: string; + amount: BigNumber; + data: string; + operatorData: string; +} +export type BurnedEvent = TypedEvent< + [string, string, BigNumber, string, string], + BurnedEventObject +>; + +export type BurnedEventFilter = TypedEventFilter; + +export interface MintedEventObject { + operator: string; + to: string; + amount: BigNumber; + data: string; + operatorData: string; +} +export type MintedEvent = TypedEvent< + [string, string, BigNumber, string, string], + MintedEventObject +>; + +export type MintedEventFilter = TypedEventFilter; + +export interface RevokedOperatorEventObject { + operator: string; + tokenHolder: string; +} +export type RevokedOperatorEvent = TypedEvent< + [string, string], + RevokedOperatorEventObject +>; + +export type RevokedOperatorEventFilter = TypedEventFilter; + +export interface SentEventObject { + operator: string; + from: string; + to: string; + amount: BigNumber; + data: string; + operatorData: string; +} +export type SentEvent = TypedEvent< + [string, string, string, BigNumber, string, string], + SentEventObject +>; + +export type SentEventFilter = TypedEventFilter; + +export interface TokenDowngradedEventObject { + account: string; + amount: BigNumber; +} +export type TokenDowngradedEvent = TypedEvent< + [string, BigNumber], + TokenDowngradedEventObject +>; + +export type TokenDowngradedEventFilter = TypedEventFilter; + +export interface TokenUpgradedEventObject { + account: string; + amount: BigNumber; +} +export type TokenUpgradedEvent = TypedEvent< + [string, BigNumber], + TokenUpgradedEventObject +>; + +export type TokenUpgradedEventFilter = TypedEventFilter; + +export interface TransferEventObject { + from: string; + to: string; + value: BigNumber; +} +export type TransferEvent = TypedEvent< + [string, string, BigNumber], + TransferEventObject +>; + +export type TransferEventFilter = TypedEventFilter; + +export interface ISuperToken extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: ISuperTokenInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + approve( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + authorizeOperator( + operator: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber] & { balance: BigNumber }>; + + burn( + amount: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + createAgreement( + id: PromiseOrValue, + data: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + decimals(overrides?: CallOverrides): Promise<[number]>; + + decreaseAllowance( + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + defaultOperators(overrides?: CallOverrides): Promise<[string[]]>; + + downgrade( + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + downgradeTo( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getAccountActiveAgreements( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string[]] & { activeAgreements: string[] }>; + + getAgreementData( + agreementClass: PromiseOrValue, + id: PromiseOrValue, + dataLength: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string[]] & { data: string[] }>; + + getAgreementStateSlot( + agreementClass: PromiseOrValue, + account: PromiseOrValue, + slotId: PromiseOrValue, + dataLength: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string[]] & { slotData: string[] }>; + + getHost(overrides?: CallOverrides): Promise<[string] & { host: string }>; + + getUnderlyingToken( + overrides?: CallOverrides + ): Promise<[string] & { tokenAddr: string }>; + + granularity(overrides?: CallOverrides): Promise<[BigNumber]>; + + increaseAllowance( + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + initialize( + underlyingToken: PromiseOrValue, + underlyingDecimals: PromiseOrValue, + n: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + isAccountCritical( + account: PromiseOrValue, + timestamp: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean] & { isCritical: boolean }>; + + isAccountCriticalNow( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean] & { isCritical: boolean }>; + + isAccountSolvent( + account: PromiseOrValue, + timestamp: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean] & { isSolvent: boolean }>; + + isAccountSolventNow( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean] & { isSolvent: boolean }>; + + isOperatorFor( + operator: PromiseOrValue, + tokenHolder: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + makeLiquidationPayoutsV2( + id: PromiseOrValue, + liquidationTypeData: PromiseOrValue, + liquidatorAccount: PromiseOrValue, + useDefaultRewardAccount: PromiseOrValue, + targetAccount: PromiseOrValue, + rewardAmount: PromiseOrValue, + targetAccountBalanceDelta: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + name(overrides?: CallOverrides): Promise<[string]>; + + operationApprove( + account: PromiseOrValue, + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + operationDecreaseAllowance( + account: PromiseOrValue, + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + operationDowngrade( + account: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + operationIncreaseAllowance( + account: PromiseOrValue, + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + operationSend( + spender: PromiseOrValue, + recipient: PromiseOrValue, + amount: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + operationTransferFrom( + account: PromiseOrValue, + spender: PromiseOrValue, + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + operationUpgrade( + account: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + operatorBurn( + account: PromiseOrValue, + amount: PromiseOrValue, + data: PromiseOrValue, + operatorData: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + operatorSend( + sender: PromiseOrValue, + recipient: PromiseOrValue, + amount: PromiseOrValue, + data: PromiseOrValue, + operatorData: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + realtimeBalanceOf( + account: PromiseOrValue, + timestamp: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber, BigNumber] & { + availableBalance: BigNumber; + deposit: BigNumber; + owedDeposit: BigNumber; + } + >; + + realtimeBalanceOfNow( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber, BigNumber, BigNumber] & { + availableBalance: BigNumber; + deposit: BigNumber; + owedDeposit: BigNumber; + timestamp: BigNumber; + } + >; + + revokeOperator( + operator: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + selfApproveFor( + account: PromiseOrValue, + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + selfBurn( + account: PromiseOrValue, + amount: PromiseOrValue, + userData: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + selfMint( + account: PromiseOrValue, + amount: PromiseOrValue, + userData: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + selfTransferFrom( + sender: PromiseOrValue, + spender: PromiseOrValue, + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + send( + recipient: PromiseOrValue, + amount: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + settleBalance( + account: PromiseOrValue, + delta: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + symbol(overrides?: CallOverrides): Promise<[string]>; + + terminateAgreement( + id: PromiseOrValue, + dataLength: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; + + transfer( + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferAll( + recipient: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferFrom( + sender: PromiseOrValue, + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + updateAgreementData( + id: PromiseOrValue, + data: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + updateAgreementStateSlot( + account: PromiseOrValue, + slotId: PromiseOrValue, + slotData: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + upgrade( + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + upgradeTo( + to: PromiseOrValue, + amount: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + approve( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + authorizeOperator( + operator: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + burn( + amount: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + createAgreement( + id: PromiseOrValue, + data: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + decimals(overrides?: CallOverrides): Promise; + + decreaseAllowance( + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + defaultOperators(overrides?: CallOverrides): Promise; + + downgrade( + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + downgradeTo( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getAccountActiveAgreements( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getAgreementData( + agreementClass: PromiseOrValue, + id: PromiseOrValue, + dataLength: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getAgreementStateSlot( + agreementClass: PromiseOrValue, + account: PromiseOrValue, + slotId: PromiseOrValue, + dataLength: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getHost(overrides?: CallOverrides): Promise; + + getUnderlyingToken(overrides?: CallOverrides): Promise; + + granularity(overrides?: CallOverrides): Promise; + + increaseAllowance( + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + initialize( + underlyingToken: PromiseOrValue, + underlyingDecimals: PromiseOrValue, + n: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + isAccountCritical( + account: PromiseOrValue, + timestamp: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isAccountCriticalNow( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isAccountSolvent( + account: PromiseOrValue, + timestamp: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isAccountSolventNow( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isOperatorFor( + operator: PromiseOrValue, + tokenHolder: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + makeLiquidationPayoutsV2( + id: PromiseOrValue, + liquidationTypeData: PromiseOrValue, + liquidatorAccount: PromiseOrValue, + useDefaultRewardAccount: PromiseOrValue, + targetAccount: PromiseOrValue, + rewardAmount: PromiseOrValue, + targetAccountBalanceDelta: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + name(overrides?: CallOverrides): Promise; + + operationApprove( + account: PromiseOrValue, + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + operationDecreaseAllowance( + account: PromiseOrValue, + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + operationDowngrade( + account: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + operationIncreaseAllowance( + account: PromiseOrValue, + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + operationSend( + spender: PromiseOrValue, + recipient: PromiseOrValue, + amount: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + operationTransferFrom( + account: PromiseOrValue, + spender: PromiseOrValue, + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + operationUpgrade( + account: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + operatorBurn( + account: PromiseOrValue, + amount: PromiseOrValue, + data: PromiseOrValue, + operatorData: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + operatorSend( + sender: PromiseOrValue, + recipient: PromiseOrValue, + amount: PromiseOrValue, + data: PromiseOrValue, + operatorData: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + realtimeBalanceOf( + account: PromiseOrValue, + timestamp: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber, BigNumber] & { + availableBalance: BigNumber; + deposit: BigNumber; + owedDeposit: BigNumber; + } + >; + + realtimeBalanceOfNow( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber, BigNumber, BigNumber] & { + availableBalance: BigNumber; + deposit: BigNumber; + owedDeposit: BigNumber; + timestamp: BigNumber; + } + >; + + revokeOperator( + operator: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + selfApproveFor( + account: PromiseOrValue, + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + selfBurn( + account: PromiseOrValue, + amount: PromiseOrValue, + userData: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + selfMint( + account: PromiseOrValue, + amount: PromiseOrValue, + userData: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + selfTransferFrom( + sender: PromiseOrValue, + spender: PromiseOrValue, + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + send( + recipient: PromiseOrValue, + amount: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + settleBalance( + account: PromiseOrValue, + delta: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + terminateAgreement( + id: PromiseOrValue, + dataLength: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer( + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferAll( + recipient: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferFrom( + sender: PromiseOrValue, + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + updateAgreementData( + id: PromiseOrValue, + data: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + updateAgreementStateSlot( + account: PromiseOrValue, + slotId: PromiseOrValue, + slotData: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + upgrade( + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + upgradeTo( + to: PromiseOrValue, + amount: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + approve( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + authorizeOperator( + operator: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + burn( + amount: PromiseOrValue, + data: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + createAgreement( + id: PromiseOrValue, + data: PromiseOrValue[], + overrides?: CallOverrides + ): Promise; + + decimals(overrides?: CallOverrides): Promise; + + decreaseAllowance( + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + defaultOperators(overrides?: CallOverrides): Promise; + + downgrade( + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + downgradeTo( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getAccountActiveAgreements( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getAgreementData( + agreementClass: PromiseOrValue, + id: PromiseOrValue, + dataLength: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getAgreementStateSlot( + agreementClass: PromiseOrValue, + account: PromiseOrValue, + slotId: PromiseOrValue, + dataLength: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getHost(overrides?: CallOverrides): Promise; + + getUnderlyingToken(overrides?: CallOverrides): Promise; + + granularity(overrides?: CallOverrides): Promise; + + increaseAllowance( + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + initialize( + underlyingToken: PromiseOrValue, + underlyingDecimals: PromiseOrValue, + n: PromiseOrValue, + s: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isAccountCritical( + account: PromiseOrValue, + timestamp: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isAccountCriticalNow( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isAccountSolvent( + account: PromiseOrValue, + timestamp: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isAccountSolventNow( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isOperatorFor( + operator: PromiseOrValue, + tokenHolder: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + makeLiquidationPayoutsV2( + id: PromiseOrValue, + liquidationTypeData: PromiseOrValue, + liquidatorAccount: PromiseOrValue, + useDefaultRewardAccount: PromiseOrValue, + targetAccount: PromiseOrValue, + rewardAmount: PromiseOrValue, + targetAccountBalanceDelta: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + name(overrides?: CallOverrides): Promise; + + operationApprove( + account: PromiseOrValue, + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + operationDecreaseAllowance( + account: PromiseOrValue, + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + operationDowngrade( + account: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + operationIncreaseAllowance( + account: PromiseOrValue, + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + operationSend( + spender: PromiseOrValue, + recipient: PromiseOrValue, + amount: PromiseOrValue, + data: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + operationTransferFrom( + account: PromiseOrValue, + spender: PromiseOrValue, + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + operationUpgrade( + account: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + operatorBurn( + account: PromiseOrValue, + amount: PromiseOrValue, + data: PromiseOrValue, + operatorData: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + operatorSend( + sender: PromiseOrValue, + recipient: PromiseOrValue, + amount: PromiseOrValue, + data: PromiseOrValue, + operatorData: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + realtimeBalanceOf( + account: PromiseOrValue, + timestamp: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber, BigNumber] & { + availableBalance: BigNumber; + deposit: BigNumber; + owedDeposit: BigNumber; + } + >; + + realtimeBalanceOfNow( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber, BigNumber, BigNumber] & { + availableBalance: BigNumber; + deposit: BigNumber; + owedDeposit: BigNumber; + timestamp: BigNumber; + } + >; + + revokeOperator( + operator: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + selfApproveFor( + account: PromiseOrValue, + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + selfBurn( + account: PromiseOrValue, + amount: PromiseOrValue, + userData: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + selfMint( + account: PromiseOrValue, + amount: PromiseOrValue, + userData: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + selfTransferFrom( + sender: PromiseOrValue, + spender: PromiseOrValue, + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + send( + recipient: PromiseOrValue, + amount: PromiseOrValue, + data: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + settleBalance( + account: PromiseOrValue, + delta: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + terminateAgreement( + id: PromiseOrValue, + dataLength: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer( + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + transferAll( + recipient: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + transferFrom( + sender: PromiseOrValue, + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + updateAgreementData( + id: PromiseOrValue, + data: PromiseOrValue[], + overrides?: CallOverrides + ): Promise; + + updateAgreementStateSlot( + account: PromiseOrValue, + slotId: PromiseOrValue, + slotData: PromiseOrValue[], + overrides?: CallOverrides + ): Promise; + + upgrade( + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + upgradeTo( + to: PromiseOrValue, + amount: PromiseOrValue, + data: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "AgreementCreated(address,bytes32,bytes32[])"( + agreementClass?: PromiseOrValue | null, + id?: null, + data?: null + ): AgreementCreatedEventFilter; + AgreementCreated( + agreementClass?: PromiseOrValue | null, + id?: null, + data?: null + ): AgreementCreatedEventFilter; + + "AgreementLiquidated(address,bytes32,address,address,uint256)"( + agreementClass?: PromiseOrValue | null, + id?: null, + penaltyAccount?: PromiseOrValue | null, + rewardAccount?: PromiseOrValue | null, + rewardAmount?: null + ): AgreementLiquidatedEventFilter; + AgreementLiquidated( + agreementClass?: PromiseOrValue | null, + id?: null, + penaltyAccount?: PromiseOrValue | null, + rewardAccount?: PromiseOrValue | null, + rewardAmount?: null + ): AgreementLiquidatedEventFilter; + + "AgreementLiquidatedBy(address,address,bytes32,address,address,uint256,uint256)"( + liquidatorAccount?: null, + agreementClass?: PromiseOrValue | null, + id?: null, + penaltyAccount?: PromiseOrValue | null, + bondAccount?: PromiseOrValue | null, + rewardAmount?: null, + bailoutAmount?: null + ): AgreementLiquidatedByEventFilter; + AgreementLiquidatedBy( + liquidatorAccount?: null, + agreementClass?: PromiseOrValue | null, + id?: null, + penaltyAccount?: PromiseOrValue | null, + bondAccount?: PromiseOrValue | null, + rewardAmount?: null, + bailoutAmount?: null + ): AgreementLiquidatedByEventFilter; + + "AgreementLiquidatedV2(address,bytes32,address,address,address,uint256,int256,bytes)"( + agreementClass?: PromiseOrValue | null, + id?: null, + liquidatorAccount?: PromiseOrValue | null, + targetAccount?: PromiseOrValue | null, + rewardAmountReceiver?: null, + rewardAmount?: null, + targetAccountBalanceDelta?: null, + liquidationTypeData?: null + ): AgreementLiquidatedV2EventFilter; + AgreementLiquidatedV2( + agreementClass?: PromiseOrValue | null, + id?: null, + liquidatorAccount?: PromiseOrValue | null, + targetAccount?: PromiseOrValue | null, + rewardAmountReceiver?: null, + rewardAmount?: null, + targetAccountBalanceDelta?: null, + liquidationTypeData?: null + ): AgreementLiquidatedV2EventFilter; + + "AgreementStateUpdated(address,address,uint256)"( + agreementClass?: PromiseOrValue | null, + account?: PromiseOrValue | null, + slotId?: null + ): AgreementStateUpdatedEventFilter; + AgreementStateUpdated( + agreementClass?: PromiseOrValue | null, + account?: PromiseOrValue | null, + slotId?: null + ): AgreementStateUpdatedEventFilter; + + "AgreementTerminated(address,bytes32)"( + agreementClass?: PromiseOrValue | null, + id?: null + ): AgreementTerminatedEventFilter; + AgreementTerminated( + agreementClass?: PromiseOrValue | null, + id?: null + ): AgreementTerminatedEventFilter; + + "AgreementUpdated(address,bytes32,bytes32[])"( + agreementClass?: PromiseOrValue | null, + id?: null, + data?: null + ): AgreementUpdatedEventFilter; + AgreementUpdated( + agreementClass?: PromiseOrValue | null, + id?: null, + data?: null + ): AgreementUpdatedEventFilter; + + "Approval(address,address,uint256)"( + owner?: PromiseOrValue | null, + spender?: PromiseOrValue | null, + value?: null + ): ApprovalEventFilter; + Approval( + owner?: PromiseOrValue | null, + spender?: PromiseOrValue | null, + value?: null + ): ApprovalEventFilter; + + "AuthorizedOperator(address,address)"( + operator?: PromiseOrValue | null, + tokenHolder?: PromiseOrValue | null + ): AuthorizedOperatorEventFilter; + AuthorizedOperator( + operator?: PromiseOrValue | null, + tokenHolder?: PromiseOrValue | null + ): AuthorizedOperatorEventFilter; + + "Bailout(address,uint256)"( + bailoutAccount?: PromiseOrValue | null, + bailoutAmount?: null + ): BailoutEventFilter; + Bailout( + bailoutAccount?: PromiseOrValue | null, + bailoutAmount?: null + ): BailoutEventFilter; + + "Burned(address,address,uint256,bytes,bytes)"( + operator?: PromiseOrValue | null, + from?: PromiseOrValue | null, + amount?: null, + data?: null, + operatorData?: null + ): BurnedEventFilter; + Burned( + operator?: PromiseOrValue | null, + from?: PromiseOrValue | null, + amount?: null, + data?: null, + operatorData?: null + ): BurnedEventFilter; + + "Minted(address,address,uint256,bytes,bytes)"( + operator?: PromiseOrValue | null, + to?: PromiseOrValue | null, + amount?: null, + data?: null, + operatorData?: null + ): MintedEventFilter; + Minted( + operator?: PromiseOrValue | null, + to?: PromiseOrValue | null, + amount?: null, + data?: null, + operatorData?: null + ): MintedEventFilter; + + "RevokedOperator(address,address)"( + operator?: PromiseOrValue | null, + tokenHolder?: PromiseOrValue | null + ): RevokedOperatorEventFilter; + RevokedOperator( + operator?: PromiseOrValue | null, + tokenHolder?: PromiseOrValue | null + ): RevokedOperatorEventFilter; + + "Sent(address,address,address,uint256,bytes,bytes)"( + operator?: PromiseOrValue | null, + from?: PromiseOrValue | null, + to?: PromiseOrValue | null, + amount?: null, + data?: null, + operatorData?: null + ): SentEventFilter; + Sent( + operator?: PromiseOrValue | null, + from?: PromiseOrValue | null, + to?: PromiseOrValue | null, + amount?: null, + data?: null, + operatorData?: null + ): SentEventFilter; + + "TokenDowngraded(address,uint256)"( + account?: PromiseOrValue | null, + amount?: null + ): TokenDowngradedEventFilter; + TokenDowngraded( + account?: PromiseOrValue | null, + amount?: null + ): TokenDowngradedEventFilter; + + "TokenUpgraded(address,uint256)"( + account?: PromiseOrValue | null, + amount?: null + ): TokenUpgradedEventFilter; + TokenUpgraded( + account?: PromiseOrValue | null, + amount?: null + ): TokenUpgradedEventFilter; + + "Transfer(address,address,uint256)"( + from?: PromiseOrValue | null, + to?: PromiseOrValue | null, + value?: null + ): TransferEventFilter; + Transfer( + from?: PromiseOrValue | null, + to?: PromiseOrValue | null, + value?: null + ): TransferEventFilter; + }; + + estimateGas: { + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + approve( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + authorizeOperator( + operator: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + burn( + amount: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + createAgreement( + id: PromiseOrValue, + data: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + decimals(overrides?: CallOverrides): Promise; + + decreaseAllowance( + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + defaultOperators(overrides?: CallOverrides): Promise; + + downgrade( + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + downgradeTo( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getAccountActiveAgreements( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getAgreementData( + agreementClass: PromiseOrValue, + id: PromiseOrValue, + dataLength: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getAgreementStateSlot( + agreementClass: PromiseOrValue, + account: PromiseOrValue, + slotId: PromiseOrValue, + dataLength: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getHost(overrides?: CallOverrides): Promise; + + getUnderlyingToken(overrides?: CallOverrides): Promise; + + granularity(overrides?: CallOverrides): Promise; + + increaseAllowance( + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + initialize( + underlyingToken: PromiseOrValue, + underlyingDecimals: PromiseOrValue, + n: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + isAccountCritical( + account: PromiseOrValue, + timestamp: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isAccountCriticalNow( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isAccountSolvent( + account: PromiseOrValue, + timestamp: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isAccountSolventNow( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isOperatorFor( + operator: PromiseOrValue, + tokenHolder: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + makeLiquidationPayoutsV2( + id: PromiseOrValue, + liquidationTypeData: PromiseOrValue, + liquidatorAccount: PromiseOrValue, + useDefaultRewardAccount: PromiseOrValue, + targetAccount: PromiseOrValue, + rewardAmount: PromiseOrValue, + targetAccountBalanceDelta: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + name(overrides?: CallOverrides): Promise; + + operationApprove( + account: PromiseOrValue, + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + operationDecreaseAllowance( + account: PromiseOrValue, + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + operationDowngrade( + account: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + operationIncreaseAllowance( + account: PromiseOrValue, + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + operationSend( + spender: PromiseOrValue, + recipient: PromiseOrValue, + amount: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + operationTransferFrom( + account: PromiseOrValue, + spender: PromiseOrValue, + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + operationUpgrade( + account: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + operatorBurn( + account: PromiseOrValue, + amount: PromiseOrValue, + data: PromiseOrValue, + operatorData: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + operatorSend( + sender: PromiseOrValue, + recipient: PromiseOrValue, + amount: PromiseOrValue, + data: PromiseOrValue, + operatorData: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + realtimeBalanceOf( + account: PromiseOrValue, + timestamp: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + realtimeBalanceOfNow( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + revokeOperator( + operator: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + selfApproveFor( + account: PromiseOrValue, + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + selfBurn( + account: PromiseOrValue, + amount: PromiseOrValue, + userData: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + selfMint( + account: PromiseOrValue, + amount: PromiseOrValue, + userData: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + selfTransferFrom( + sender: PromiseOrValue, + spender: PromiseOrValue, + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + send( + recipient: PromiseOrValue, + amount: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + settleBalance( + account: PromiseOrValue, + delta: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + terminateAgreement( + id: PromiseOrValue, + dataLength: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer( + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferAll( + recipient: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferFrom( + sender: PromiseOrValue, + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + updateAgreementData( + id: PromiseOrValue, + data: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + updateAgreementStateSlot( + account: PromiseOrValue, + slotId: PromiseOrValue, + slotData: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + upgrade( + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + upgradeTo( + to: PromiseOrValue, + amount: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + approve( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + authorizeOperator( + operator: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + burn( + amount: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + createAgreement( + id: PromiseOrValue, + data: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + decimals(overrides?: CallOverrides): Promise; + + decreaseAllowance( + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + defaultOperators(overrides?: CallOverrides): Promise; + + downgrade( + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + downgradeTo( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getAccountActiveAgreements( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getAgreementData( + agreementClass: PromiseOrValue, + id: PromiseOrValue, + dataLength: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getAgreementStateSlot( + agreementClass: PromiseOrValue, + account: PromiseOrValue, + slotId: PromiseOrValue, + dataLength: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getHost(overrides?: CallOverrides): Promise; + + getUnderlyingToken( + overrides?: CallOverrides + ): Promise; + + granularity(overrides?: CallOverrides): Promise; + + increaseAllowance( + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + initialize( + underlyingToken: PromiseOrValue, + underlyingDecimals: PromiseOrValue, + n: PromiseOrValue, + s: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + isAccountCritical( + account: PromiseOrValue, + timestamp: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isAccountCriticalNow( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isAccountSolvent( + account: PromiseOrValue, + timestamp: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isAccountSolventNow( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isOperatorFor( + operator: PromiseOrValue, + tokenHolder: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + makeLiquidationPayoutsV2( + id: PromiseOrValue, + liquidationTypeData: PromiseOrValue, + liquidatorAccount: PromiseOrValue, + useDefaultRewardAccount: PromiseOrValue, + targetAccount: PromiseOrValue, + rewardAmount: PromiseOrValue, + targetAccountBalanceDelta: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + name(overrides?: CallOverrides): Promise; + + operationApprove( + account: PromiseOrValue, + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + operationDecreaseAllowance( + account: PromiseOrValue, + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + operationDowngrade( + account: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + operationIncreaseAllowance( + account: PromiseOrValue, + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + operationSend( + spender: PromiseOrValue, + recipient: PromiseOrValue, + amount: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + operationTransferFrom( + account: PromiseOrValue, + spender: PromiseOrValue, + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + operationUpgrade( + account: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + operatorBurn( + account: PromiseOrValue, + amount: PromiseOrValue, + data: PromiseOrValue, + operatorData: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + operatorSend( + sender: PromiseOrValue, + recipient: PromiseOrValue, + amount: PromiseOrValue, + data: PromiseOrValue, + operatorData: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + realtimeBalanceOf( + account: PromiseOrValue, + timestamp: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + realtimeBalanceOfNow( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + revokeOperator( + operator: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + selfApproveFor( + account: PromiseOrValue, + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + selfBurn( + account: PromiseOrValue, + amount: PromiseOrValue, + userData: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + selfMint( + account: PromiseOrValue, + amount: PromiseOrValue, + userData: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + selfTransferFrom( + sender: PromiseOrValue, + spender: PromiseOrValue, + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + send( + recipient: PromiseOrValue, + amount: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + settleBalance( + account: PromiseOrValue, + delta: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + terminateAgreement( + id: PromiseOrValue, + dataLength: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer( + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferAll( + recipient: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferFrom( + sender: PromiseOrValue, + recipient: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + updateAgreementData( + id: PromiseOrValue, + data: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + updateAgreementStateSlot( + account: PromiseOrValue, + slotId: PromiseOrValue, + slotData: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + upgrade( + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + upgradeTo( + to: PromiseOrValue, + amount: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/contracts/typechain-types/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperTokenFactory.ts b/contracts/typechain-types/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperTokenFactory.ts new file mode 100644 index 0000000..433e791 --- /dev/null +++ b/contracts/typechain-types/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperTokenFactory.ts @@ -0,0 +1,465 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../../../common"; + +export interface ISuperTokenFactoryInterface extends utils.Interface { + functions: { + "computeCanonicalERC20WrapperAddress(address)": FunctionFragment; + "createCanonicalERC20Wrapper(address)": FunctionFragment; + "createERC20Wrapper(address,uint8,string,string)": FunctionFragment; + "createERC20Wrapper(address,uint8,uint8,string,string)": FunctionFragment; + "getCanonicalERC20Wrapper(address)": FunctionFragment; + "getHost()": FunctionFragment; + "getSuperTokenLogic()": FunctionFragment; + "initialize()": FunctionFragment; + "initializeCustomSuperToken(address)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "computeCanonicalERC20WrapperAddress" + | "createCanonicalERC20Wrapper" + | "createERC20Wrapper(address,uint8,string,string)" + | "createERC20Wrapper(address,uint8,uint8,string,string)" + | "getCanonicalERC20Wrapper" + | "getHost" + | "getSuperTokenLogic" + | "initialize" + | "initializeCustomSuperToken" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "computeCanonicalERC20WrapperAddress", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "createCanonicalERC20Wrapper", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "createERC20Wrapper(address,uint8,string,string)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "createERC20Wrapper(address,uint8,uint8,string,string)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "getCanonicalERC20Wrapper", + values: [PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "getHost", values?: undefined): string; + encodeFunctionData( + functionFragment: "getSuperTokenLogic", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "initialize", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "initializeCustomSuperToken", + values: [PromiseOrValue] + ): string; + + decodeFunctionResult( + functionFragment: "computeCanonicalERC20WrapperAddress", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "createCanonicalERC20Wrapper", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "createERC20Wrapper(address,uint8,string,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "createERC20Wrapper(address,uint8,uint8,string,string)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getCanonicalERC20Wrapper", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "getHost", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getSuperTokenLogic", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "initializeCustomSuperToken", + data: BytesLike + ): Result; + + events: { + "CustomSuperTokenCreated(address)": EventFragment; + "SuperTokenCreated(address)": EventFragment; + "SuperTokenLogicCreated(address)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "CustomSuperTokenCreated"): EventFragment; + getEvent(nameOrSignatureOrTopic: "SuperTokenCreated"): EventFragment; + getEvent(nameOrSignatureOrTopic: "SuperTokenLogicCreated"): EventFragment; +} + +export interface CustomSuperTokenCreatedEventObject { + token: string; +} +export type CustomSuperTokenCreatedEvent = TypedEvent< + [string], + CustomSuperTokenCreatedEventObject +>; + +export type CustomSuperTokenCreatedEventFilter = + TypedEventFilter; + +export interface SuperTokenCreatedEventObject { + token: string; +} +export type SuperTokenCreatedEvent = TypedEvent< + [string], + SuperTokenCreatedEventObject +>; + +export type SuperTokenCreatedEventFilter = + TypedEventFilter; + +export interface SuperTokenLogicCreatedEventObject { + tokenLogic: string; +} +export type SuperTokenLogicCreatedEvent = TypedEvent< + [string], + SuperTokenLogicCreatedEventObject +>; + +export type SuperTokenLogicCreatedEventFilter = + TypedEventFilter; + +export interface ISuperTokenFactory extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: ISuperTokenFactoryInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + computeCanonicalERC20WrapperAddress( + _underlyingToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [string, boolean] & { superTokenAddress: string; isDeployed: boolean } + >; + + createCanonicalERC20Wrapper( + _underlyingToken: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "createERC20Wrapper(address,uint8,string,string)"( + underlyingToken: PromiseOrValue, + upgradability: PromiseOrValue, + name: PromiseOrValue, + symbol: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "createERC20Wrapper(address,uint8,uint8,string,string)"( + underlyingToken: PromiseOrValue, + underlyingDecimals: PromiseOrValue, + upgradability: PromiseOrValue, + name: PromiseOrValue, + symbol: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getCanonicalERC20Wrapper( + _underlyingTokenAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string] & { superTokenAddress: string }>; + + getHost(overrides?: CallOverrides): Promise<[string] & { host: string }>; + + getSuperTokenLogic( + overrides?: CallOverrides + ): Promise<[string] & { superToken: string }>; + + initialize( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + initializeCustomSuperToken( + customSuperTokenProxy: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + computeCanonicalERC20WrapperAddress( + _underlyingToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [string, boolean] & { superTokenAddress: string; isDeployed: boolean } + >; + + createCanonicalERC20Wrapper( + _underlyingToken: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "createERC20Wrapper(address,uint8,string,string)"( + underlyingToken: PromiseOrValue, + upgradability: PromiseOrValue, + name: PromiseOrValue, + symbol: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "createERC20Wrapper(address,uint8,uint8,string,string)"( + underlyingToken: PromiseOrValue, + underlyingDecimals: PromiseOrValue, + upgradability: PromiseOrValue, + name: PromiseOrValue, + symbol: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getCanonicalERC20Wrapper( + _underlyingTokenAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getHost(overrides?: CallOverrides): Promise; + + getSuperTokenLogic(overrides?: CallOverrides): Promise; + + initialize( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + initializeCustomSuperToken( + customSuperTokenProxy: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + computeCanonicalERC20WrapperAddress( + _underlyingToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [string, boolean] & { superTokenAddress: string; isDeployed: boolean } + >; + + createCanonicalERC20Wrapper( + _underlyingToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "createERC20Wrapper(address,uint8,string,string)"( + underlyingToken: PromiseOrValue, + upgradability: PromiseOrValue, + name: PromiseOrValue, + symbol: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "createERC20Wrapper(address,uint8,uint8,string,string)"( + underlyingToken: PromiseOrValue, + underlyingDecimals: PromiseOrValue, + upgradability: PromiseOrValue, + name: PromiseOrValue, + symbol: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getCanonicalERC20Wrapper( + _underlyingTokenAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getHost(overrides?: CallOverrides): Promise; + + getSuperTokenLogic(overrides?: CallOverrides): Promise; + + initialize(overrides?: CallOverrides): Promise; + + initializeCustomSuperToken( + customSuperTokenProxy: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "CustomSuperTokenCreated(address)"( + token?: PromiseOrValue | null + ): CustomSuperTokenCreatedEventFilter; + CustomSuperTokenCreated( + token?: PromiseOrValue | null + ): CustomSuperTokenCreatedEventFilter; + + "SuperTokenCreated(address)"( + token?: PromiseOrValue | null + ): SuperTokenCreatedEventFilter; + SuperTokenCreated( + token?: PromiseOrValue | null + ): SuperTokenCreatedEventFilter; + + "SuperTokenLogicCreated(address)"( + tokenLogic?: PromiseOrValue | null + ): SuperTokenLogicCreatedEventFilter; + SuperTokenLogicCreated( + tokenLogic?: PromiseOrValue | null + ): SuperTokenLogicCreatedEventFilter; + }; + + estimateGas: { + computeCanonicalERC20WrapperAddress( + _underlyingToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + createCanonicalERC20Wrapper( + _underlyingToken: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "createERC20Wrapper(address,uint8,string,string)"( + underlyingToken: PromiseOrValue, + upgradability: PromiseOrValue, + name: PromiseOrValue, + symbol: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "createERC20Wrapper(address,uint8,uint8,string,string)"( + underlyingToken: PromiseOrValue, + underlyingDecimals: PromiseOrValue, + upgradability: PromiseOrValue, + name: PromiseOrValue, + symbol: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getCanonicalERC20Wrapper( + _underlyingTokenAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getHost(overrides?: CallOverrides): Promise; + + getSuperTokenLogic(overrides?: CallOverrides): Promise; + + initialize( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + initializeCustomSuperToken( + customSuperTokenProxy: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + computeCanonicalERC20WrapperAddress( + _underlyingToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + createCanonicalERC20Wrapper( + _underlyingToken: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "createERC20Wrapper(address,uint8,string,string)"( + underlyingToken: PromiseOrValue, + upgradability: PromiseOrValue, + name: PromiseOrValue, + symbol: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "createERC20Wrapper(address,uint8,uint8,string,string)"( + underlyingToken: PromiseOrValue, + underlyingDecimals: PromiseOrValue, + upgradability: PromiseOrValue, + name: PromiseOrValue, + symbol: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getCanonicalERC20Wrapper( + _underlyingTokenAddress: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getHost(overrides?: CallOverrides): Promise; + + getSuperTokenLogic( + overrides?: CallOverrides + ): Promise; + + initialize( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + initializeCustomSuperToken( + customSuperTokenProxy: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/contracts/typechain-types/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.ts b/contracts/typechain-types/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.ts new file mode 100644 index 0000000..1a2fd97 --- /dev/null +++ b/contracts/typechain-types/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid.ts @@ -0,0 +1,1727 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../../../common"; + +export declare namespace ISuperfluid { + export type OperationStruct = { + operationType: PromiseOrValue; + target: PromiseOrValue; + data: PromiseOrValue; + }; + + export type OperationStructOutput = [number, string, string] & { + operationType: number; + target: string; + data: string; + }; + + export type ContextStruct = { + appCallbackLevel: PromiseOrValue; + callType: PromiseOrValue; + timestamp: PromiseOrValue; + msgSender: PromiseOrValue; + agreementSelector: PromiseOrValue; + userData: PromiseOrValue; + appCreditGranted: PromiseOrValue; + appCreditWantedDeprecated: PromiseOrValue; + appCreditUsed: PromiseOrValue; + appAddress: PromiseOrValue; + appCreditToken: PromiseOrValue; + }; + + export type ContextStructOutput = [ + number, + number, + BigNumber, + string, + string, + string, + BigNumber, + BigNumber, + BigNumber, + string, + string + ] & { + appCallbackLevel: number; + callType: number; + timestamp: BigNumber; + msgSender: string; + agreementSelector: string; + userData: string; + appCreditGranted: BigNumber; + appCreditWantedDeprecated: BigNumber; + appCreditUsed: BigNumber; + appAddress: string; + appCreditToken: string; + }; +} + +export interface ISuperfluidInterface extends utils.Interface { + functions: { + "addToAgreementClassesBitmap(uint256,bytes32)": FunctionFragment; + "allowCompositeApp(address)": FunctionFragment; + "appCallbackPop(bytes,int256)": FunctionFragment; + "appCallbackPush(bytes,address,uint256,int256,address)": FunctionFragment; + "batchCall((uint32,address,bytes)[])": FunctionFragment; + "callAgreement(address,bytes,bytes)": FunctionFragment; + "callAgreementWithContext(address,bytes,bytes,bytes)": FunctionFragment; + "callAppAction(address,bytes)": FunctionFragment; + "callAppActionWithContext(address,bytes,bytes)": FunctionFragment; + "callAppAfterCallback(address,bytes,bool,bytes)": FunctionFragment; + "callAppBeforeCallback(address,bytes,bool,bytes)": FunctionFragment; + "ctxUseCredit(bytes,int256)": FunctionFragment; + "decodeCtx(bytes)": FunctionFragment; + "forwardBatchCall((uint32,address,bytes)[])": FunctionFragment; + "getAgreementClass(bytes32)": FunctionFragment; + "getAppCallbackLevel(address)": FunctionFragment; + "getAppManifest(address)": FunctionFragment; + "getGovernance()": FunctionFragment; + "getNow()": FunctionFragment; + "getSuperTokenFactory()": FunctionFragment; + "getSuperTokenFactoryLogic()": FunctionFragment; + "isAgreementClassListed(address)": FunctionFragment; + "isAgreementTypeListed(bytes32)": FunctionFragment; + "isApp(address)": FunctionFragment; + "isAppJailed(address)": FunctionFragment; + "isCompositeAppAllowed(address,address)": FunctionFragment; + "isCtxValid(bytes)": FunctionFragment; + "jailApp(bytes,address,uint256)": FunctionFragment; + "mapAgreementClasses(uint256)": FunctionFragment; + "registerAgreementClass(address)": FunctionFragment; + "registerApp(uint256)": FunctionFragment; + "registerAppByFactory(address,uint256)": FunctionFragment; + "registerAppWithKey(uint256,string)": FunctionFragment; + "removeFromAgreementClassesBitmap(uint256,bytes32)": FunctionFragment; + "replaceGovernance(address)": FunctionFragment; + "updateAgreementClass(address)": FunctionFragment; + "updateSuperTokenFactory(address)": FunctionFragment; + "updateSuperTokenLogic(address)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "addToAgreementClassesBitmap" + | "allowCompositeApp" + | "appCallbackPop" + | "appCallbackPush" + | "batchCall" + | "callAgreement" + | "callAgreementWithContext" + | "callAppAction" + | "callAppActionWithContext" + | "callAppAfterCallback" + | "callAppBeforeCallback" + | "ctxUseCredit" + | "decodeCtx" + | "forwardBatchCall" + | "getAgreementClass" + | "getAppCallbackLevel" + | "getAppManifest" + | "getGovernance" + | "getNow" + | "getSuperTokenFactory" + | "getSuperTokenFactoryLogic" + | "isAgreementClassListed" + | "isAgreementTypeListed" + | "isApp" + | "isAppJailed" + | "isCompositeAppAllowed" + | "isCtxValid" + | "jailApp" + | "mapAgreementClasses" + | "registerAgreementClass" + | "registerApp" + | "registerAppByFactory" + | "registerAppWithKey" + | "removeFromAgreementClassesBitmap" + | "replaceGovernance" + | "updateAgreementClass" + | "updateSuperTokenFactory" + | "updateSuperTokenLogic" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "addToAgreementClassesBitmap", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "allowCompositeApp", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "appCallbackPop", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "appCallbackPush", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "batchCall", + values: [ISuperfluid.OperationStruct[]] + ): string; + encodeFunctionData( + functionFragment: "callAgreement", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "callAgreementWithContext", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "callAppAction", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "callAppActionWithContext", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "callAppAfterCallback", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "callAppBeforeCallback", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "ctxUseCredit", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "decodeCtx", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "forwardBatchCall", + values: [ISuperfluid.OperationStruct[]] + ): string; + encodeFunctionData( + functionFragment: "getAgreementClass", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getAppCallbackLevel", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getAppManifest", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getGovernance", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "getNow", values?: undefined): string; + encodeFunctionData( + functionFragment: "getSuperTokenFactory", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getSuperTokenFactoryLogic", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "isAgreementClassListed", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "isAgreementTypeListed", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "isApp", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "isAppJailed", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "isCompositeAppAllowed", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "isCtxValid", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "jailApp", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "mapAgreementClasses", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "registerAgreementClass", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "registerApp", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "registerAppByFactory", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "registerAppWithKey", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "removeFromAgreementClassesBitmap", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "replaceGovernance", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "updateAgreementClass", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "updateSuperTokenFactory", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "updateSuperTokenLogic", + values: [PromiseOrValue] + ): string; + + decodeFunctionResult( + functionFragment: "addToAgreementClassesBitmap", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "allowCompositeApp", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "appCallbackPop", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "appCallbackPush", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "batchCall", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "callAgreement", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "callAgreementWithContext", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "callAppAction", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "callAppActionWithContext", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "callAppAfterCallback", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "callAppBeforeCallback", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "ctxUseCredit", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "decodeCtx", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "forwardBatchCall", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getAgreementClass", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getAppCallbackLevel", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getAppManifest", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getGovernance", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "getNow", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getSuperTokenFactory", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getSuperTokenFactoryLogic", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "isAgreementClassListed", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "isAgreementTypeListed", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "isApp", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "isAppJailed", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "isCompositeAppAllowed", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "isCtxValid", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "jailApp", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "mapAgreementClasses", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "registerAgreementClass", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "registerApp", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "registerAppByFactory", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "registerAppWithKey", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "removeFromAgreementClassesBitmap", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "replaceGovernance", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "updateAgreementClass", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "updateSuperTokenFactory", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "updateSuperTokenLogic", + data: BytesLike + ): Result; + + events: { + "AgreementClassRegistered(bytes32,address)": EventFragment; + "AgreementClassUpdated(bytes32,address)": EventFragment; + "AppRegistered(address)": EventFragment; + "GovernanceReplaced(address,address)": EventFragment; + "Jail(address,uint256)": EventFragment; + "SuperTokenFactoryUpdated(address)": EventFragment; + "SuperTokenLogicUpdated(address,address)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "AgreementClassRegistered"): EventFragment; + getEvent(nameOrSignatureOrTopic: "AgreementClassUpdated"): EventFragment; + getEvent(nameOrSignatureOrTopic: "AppRegistered"): EventFragment; + getEvent(nameOrSignatureOrTopic: "GovernanceReplaced"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Jail"): EventFragment; + getEvent(nameOrSignatureOrTopic: "SuperTokenFactoryUpdated"): EventFragment; + getEvent(nameOrSignatureOrTopic: "SuperTokenLogicUpdated"): EventFragment; +} + +export interface AgreementClassRegisteredEventObject { + agreementType: string; + code: string; +} +export type AgreementClassRegisteredEvent = TypedEvent< + [string, string], + AgreementClassRegisteredEventObject +>; + +export type AgreementClassRegisteredEventFilter = + TypedEventFilter; + +export interface AgreementClassUpdatedEventObject { + agreementType: string; + code: string; +} +export type AgreementClassUpdatedEvent = TypedEvent< + [string, string], + AgreementClassUpdatedEventObject +>; + +export type AgreementClassUpdatedEventFilter = + TypedEventFilter; + +export interface AppRegisteredEventObject { + app: string; +} +export type AppRegisteredEvent = TypedEvent<[string], AppRegisteredEventObject>; + +export type AppRegisteredEventFilter = TypedEventFilter; + +export interface GovernanceReplacedEventObject { + oldGov: string; + newGov: string; +} +export type GovernanceReplacedEvent = TypedEvent< + [string, string], + GovernanceReplacedEventObject +>; + +export type GovernanceReplacedEventFilter = + TypedEventFilter; + +export interface JailEventObject { + app: string; + reason: BigNumber; +} +export type JailEvent = TypedEvent<[string, BigNumber], JailEventObject>; + +export type JailEventFilter = TypedEventFilter; + +export interface SuperTokenFactoryUpdatedEventObject { + newFactory: string; +} +export type SuperTokenFactoryUpdatedEvent = TypedEvent< + [string], + SuperTokenFactoryUpdatedEventObject +>; + +export type SuperTokenFactoryUpdatedEventFilter = + TypedEventFilter; + +export interface SuperTokenLogicUpdatedEventObject { + token: string; + code: string; +} +export type SuperTokenLogicUpdatedEvent = TypedEvent< + [string, string], + SuperTokenLogicUpdatedEventObject +>; + +export type SuperTokenLogicUpdatedEventFilter = + TypedEventFilter; + +export interface ISuperfluid extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: ISuperfluidInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + addToAgreementClassesBitmap( + bitmap: PromiseOrValue, + agreementType: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber] & { newBitmap: BigNumber }>; + + allowCompositeApp( + targetApp: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + appCallbackPop( + ctx: PromiseOrValue, + appCreditUsedDelta: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + appCallbackPush( + ctx: PromiseOrValue, + app: PromiseOrValue, + appCreditGranted: PromiseOrValue, + appCreditUsed: PromiseOrValue, + appCreditToken: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + batchCall( + operations: ISuperfluid.OperationStruct[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callAgreement( + agreementClass: PromiseOrValue, + callData: PromiseOrValue, + userData: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callAgreementWithContext( + agreementClass: PromiseOrValue, + callData: PromiseOrValue, + userData: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callAppAction( + app: PromiseOrValue, + callData: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callAppActionWithContext( + app: PromiseOrValue, + callData: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callAppAfterCallback( + app: PromiseOrValue, + callData: PromiseOrValue, + isTermination: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callAppBeforeCallback( + app: PromiseOrValue, + callData: PromiseOrValue, + isTermination: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + ctxUseCredit( + ctx: PromiseOrValue, + appCreditUsedMore: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + decodeCtx( + ctx: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [ISuperfluid.ContextStructOutput] & { + context: ISuperfluid.ContextStructOutput; + } + >; + + forwardBatchCall( + operations: ISuperfluid.OperationStruct[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getAgreementClass( + agreementType: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string] & { agreementClass: string }>; + + getAppCallbackLevel( + app: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[number] & { appCallbackLevel: number }>; + + getAppManifest( + app: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [boolean, boolean, BigNumber] & { + isSuperApp: boolean; + isJailed: boolean; + noopMask: BigNumber; + } + >; + + getGovernance( + overrides?: CallOverrides + ): Promise<[string] & { governance: string }>; + + getNow(overrides?: CallOverrides): Promise<[BigNumber]>; + + getSuperTokenFactory( + overrides?: CallOverrides + ): Promise<[string] & { factory: string }>; + + getSuperTokenFactoryLogic( + overrides?: CallOverrides + ): Promise<[string] & { logic: string }>; + + isAgreementClassListed( + agreementClass: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean] & { yes: boolean }>; + + isAgreementTypeListed( + agreementType: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean] & { yes: boolean }>; + + isApp( + app: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + isAppJailed( + app: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean] & { isJail: boolean }>; + + isCompositeAppAllowed( + app: PromiseOrValue, + targetApp: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean] & { isAppAllowed: boolean }>; + + isCtxValid( + ctx: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + jailApp( + ctx: PromiseOrValue, + app: PromiseOrValue, + reason: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mapAgreementClasses( + bitmap: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string[]] & { agreementClasses: string[] }>; + + registerAgreementClass( + agreementClassLogic: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + registerApp( + configWord: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + registerAppByFactory( + app: PromiseOrValue, + configWord: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + registerAppWithKey( + configWord: PromiseOrValue, + registrationKey: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + removeFromAgreementClassesBitmap( + bitmap: PromiseOrValue, + agreementType: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber] & { newBitmap: BigNumber }>; + + replaceGovernance( + newGov: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + updateAgreementClass( + agreementClassLogic: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + updateSuperTokenFactory( + newFactory: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + updateSuperTokenLogic( + token: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + addToAgreementClassesBitmap( + bitmap: PromiseOrValue, + agreementType: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + allowCompositeApp( + targetApp: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + appCallbackPop( + ctx: PromiseOrValue, + appCreditUsedDelta: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + appCallbackPush( + ctx: PromiseOrValue, + app: PromiseOrValue, + appCreditGranted: PromiseOrValue, + appCreditUsed: PromiseOrValue, + appCreditToken: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + batchCall( + operations: ISuperfluid.OperationStruct[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callAgreement( + agreementClass: PromiseOrValue, + callData: PromiseOrValue, + userData: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callAgreementWithContext( + agreementClass: PromiseOrValue, + callData: PromiseOrValue, + userData: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callAppAction( + app: PromiseOrValue, + callData: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callAppActionWithContext( + app: PromiseOrValue, + callData: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callAppAfterCallback( + app: PromiseOrValue, + callData: PromiseOrValue, + isTermination: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callAppBeforeCallback( + app: PromiseOrValue, + callData: PromiseOrValue, + isTermination: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + ctxUseCredit( + ctx: PromiseOrValue, + appCreditUsedMore: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + decodeCtx( + ctx: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + forwardBatchCall( + operations: ISuperfluid.OperationStruct[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getAgreementClass( + agreementType: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getAppCallbackLevel( + app: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getAppManifest( + app: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [boolean, boolean, BigNumber] & { + isSuperApp: boolean; + isJailed: boolean; + noopMask: BigNumber; + } + >; + + getGovernance(overrides?: CallOverrides): Promise; + + getNow(overrides?: CallOverrides): Promise; + + getSuperTokenFactory(overrides?: CallOverrides): Promise; + + getSuperTokenFactoryLogic(overrides?: CallOverrides): Promise; + + isAgreementClassListed( + agreementClass: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isAgreementTypeListed( + agreementType: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isApp( + app: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isAppJailed( + app: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isCompositeAppAllowed( + app: PromiseOrValue, + targetApp: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isCtxValid( + ctx: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + jailApp( + ctx: PromiseOrValue, + app: PromiseOrValue, + reason: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mapAgreementClasses( + bitmap: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + registerAgreementClass( + agreementClassLogic: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + registerApp( + configWord: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + registerAppByFactory( + app: PromiseOrValue, + configWord: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + registerAppWithKey( + configWord: PromiseOrValue, + registrationKey: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + removeFromAgreementClassesBitmap( + bitmap: PromiseOrValue, + agreementType: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + replaceGovernance( + newGov: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + updateAgreementClass( + agreementClassLogic: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + updateSuperTokenFactory( + newFactory: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + updateSuperTokenLogic( + token: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + addToAgreementClassesBitmap( + bitmap: PromiseOrValue, + agreementType: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + allowCompositeApp( + targetApp: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + appCallbackPop( + ctx: PromiseOrValue, + appCreditUsedDelta: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + appCallbackPush( + ctx: PromiseOrValue, + app: PromiseOrValue, + appCreditGranted: PromiseOrValue, + appCreditUsed: PromiseOrValue, + appCreditToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + batchCall( + operations: ISuperfluid.OperationStruct[], + overrides?: CallOverrides + ): Promise; + + callAgreement( + agreementClass: PromiseOrValue, + callData: PromiseOrValue, + userData: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + callAgreementWithContext( + agreementClass: PromiseOrValue, + callData: PromiseOrValue, + userData: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string, string] & { newCtx: string; returnedData: string }>; + + callAppAction( + app: PromiseOrValue, + callData: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + callAppActionWithContext( + app: PromiseOrValue, + callData: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + callAppAfterCallback( + app: PromiseOrValue, + callData: PromiseOrValue, + isTermination: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + callAppBeforeCallback( + app: PromiseOrValue, + callData: PromiseOrValue, + isTermination: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + ctxUseCredit( + ctx: PromiseOrValue, + appCreditUsedMore: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + decodeCtx( + ctx: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + forwardBatchCall( + operations: ISuperfluid.OperationStruct[], + overrides?: CallOverrides + ): Promise; + + getAgreementClass( + agreementType: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getAppCallbackLevel( + app: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getAppManifest( + app: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [boolean, boolean, BigNumber] & { + isSuperApp: boolean; + isJailed: boolean; + noopMask: BigNumber; + } + >; + + getGovernance(overrides?: CallOverrides): Promise; + + getNow(overrides?: CallOverrides): Promise; + + getSuperTokenFactory(overrides?: CallOverrides): Promise; + + getSuperTokenFactoryLogic(overrides?: CallOverrides): Promise; + + isAgreementClassListed( + agreementClass: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isAgreementTypeListed( + agreementType: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isApp( + app: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isAppJailed( + app: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isCompositeAppAllowed( + app: PromiseOrValue, + targetApp: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isCtxValid( + ctx: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + jailApp( + ctx: PromiseOrValue, + app: PromiseOrValue, + reason: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + mapAgreementClasses( + bitmap: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + registerAgreementClass( + agreementClassLogic: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + registerApp( + configWord: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + registerAppByFactory( + app: PromiseOrValue, + configWord: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + registerAppWithKey( + configWord: PromiseOrValue, + registrationKey: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + removeFromAgreementClassesBitmap( + bitmap: PromiseOrValue, + agreementType: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + replaceGovernance( + newGov: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + updateAgreementClass( + agreementClassLogic: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + updateSuperTokenFactory( + newFactory: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + updateSuperTokenLogic( + token: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "AgreementClassRegistered(bytes32,address)"( + agreementType?: null, + code?: null + ): AgreementClassRegisteredEventFilter; + AgreementClassRegistered( + agreementType?: null, + code?: null + ): AgreementClassRegisteredEventFilter; + + "AgreementClassUpdated(bytes32,address)"( + agreementType?: null, + code?: null + ): AgreementClassUpdatedEventFilter; + AgreementClassUpdated( + agreementType?: null, + code?: null + ): AgreementClassUpdatedEventFilter; + + "AppRegistered(address)"( + app?: PromiseOrValue | null + ): AppRegisteredEventFilter; + AppRegistered( + app?: PromiseOrValue | null + ): AppRegisteredEventFilter; + + "GovernanceReplaced(address,address)"( + oldGov?: null, + newGov?: null + ): GovernanceReplacedEventFilter; + GovernanceReplaced( + oldGov?: null, + newGov?: null + ): GovernanceReplacedEventFilter; + + "Jail(address,uint256)"( + app?: PromiseOrValue | null, + reason?: null + ): JailEventFilter; + Jail(app?: PromiseOrValue | null, reason?: null): JailEventFilter; + + "SuperTokenFactoryUpdated(address)"( + newFactory?: null + ): SuperTokenFactoryUpdatedEventFilter; + SuperTokenFactoryUpdated( + newFactory?: null + ): SuperTokenFactoryUpdatedEventFilter; + + "SuperTokenLogicUpdated(address,address)"( + token?: PromiseOrValue | null, + code?: null + ): SuperTokenLogicUpdatedEventFilter; + SuperTokenLogicUpdated( + token?: PromiseOrValue | null, + code?: null + ): SuperTokenLogicUpdatedEventFilter; + }; + + estimateGas: { + addToAgreementClassesBitmap( + bitmap: PromiseOrValue, + agreementType: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + allowCompositeApp( + targetApp: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + appCallbackPop( + ctx: PromiseOrValue, + appCreditUsedDelta: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + appCallbackPush( + ctx: PromiseOrValue, + app: PromiseOrValue, + appCreditGranted: PromiseOrValue, + appCreditUsed: PromiseOrValue, + appCreditToken: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + batchCall( + operations: ISuperfluid.OperationStruct[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callAgreement( + agreementClass: PromiseOrValue, + callData: PromiseOrValue, + userData: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callAgreementWithContext( + agreementClass: PromiseOrValue, + callData: PromiseOrValue, + userData: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callAppAction( + app: PromiseOrValue, + callData: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callAppActionWithContext( + app: PromiseOrValue, + callData: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callAppAfterCallback( + app: PromiseOrValue, + callData: PromiseOrValue, + isTermination: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callAppBeforeCallback( + app: PromiseOrValue, + callData: PromiseOrValue, + isTermination: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + ctxUseCredit( + ctx: PromiseOrValue, + appCreditUsedMore: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + decodeCtx( + ctx: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + forwardBatchCall( + operations: ISuperfluid.OperationStruct[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getAgreementClass( + agreementType: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getAppCallbackLevel( + app: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getAppManifest( + app: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getGovernance(overrides?: CallOverrides): Promise; + + getNow(overrides?: CallOverrides): Promise; + + getSuperTokenFactory(overrides?: CallOverrides): Promise; + + getSuperTokenFactoryLogic(overrides?: CallOverrides): Promise; + + isAgreementClassListed( + agreementClass: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isAgreementTypeListed( + agreementType: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isApp( + app: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isAppJailed( + app: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isCompositeAppAllowed( + app: PromiseOrValue, + targetApp: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isCtxValid( + ctx: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + jailApp( + ctx: PromiseOrValue, + app: PromiseOrValue, + reason: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mapAgreementClasses( + bitmap: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + registerAgreementClass( + agreementClassLogic: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + registerApp( + configWord: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + registerAppByFactory( + app: PromiseOrValue, + configWord: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + registerAppWithKey( + configWord: PromiseOrValue, + registrationKey: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + removeFromAgreementClassesBitmap( + bitmap: PromiseOrValue, + agreementType: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + replaceGovernance( + newGov: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + updateAgreementClass( + agreementClassLogic: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + updateSuperTokenFactory( + newFactory: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + updateSuperTokenLogic( + token: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + addToAgreementClassesBitmap( + bitmap: PromiseOrValue, + agreementType: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + allowCompositeApp( + targetApp: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + appCallbackPop( + ctx: PromiseOrValue, + appCreditUsedDelta: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + appCallbackPush( + ctx: PromiseOrValue, + app: PromiseOrValue, + appCreditGranted: PromiseOrValue, + appCreditUsed: PromiseOrValue, + appCreditToken: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + batchCall( + operations: ISuperfluid.OperationStruct[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callAgreement( + agreementClass: PromiseOrValue, + callData: PromiseOrValue, + userData: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callAgreementWithContext( + agreementClass: PromiseOrValue, + callData: PromiseOrValue, + userData: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callAppAction( + app: PromiseOrValue, + callData: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callAppActionWithContext( + app: PromiseOrValue, + callData: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callAppAfterCallback( + app: PromiseOrValue, + callData: PromiseOrValue, + isTermination: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callAppBeforeCallback( + app: PromiseOrValue, + callData: PromiseOrValue, + isTermination: PromiseOrValue, + ctx: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + ctxUseCredit( + ctx: PromiseOrValue, + appCreditUsedMore: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + decodeCtx( + ctx: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + forwardBatchCall( + operations: ISuperfluid.OperationStruct[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getAgreementClass( + agreementType: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getAppCallbackLevel( + app: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getAppManifest( + app: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getGovernance(overrides?: CallOverrides): Promise; + + getNow(overrides?: CallOverrides): Promise; + + getSuperTokenFactory( + overrides?: CallOverrides + ): Promise; + + getSuperTokenFactoryLogic( + overrides?: CallOverrides + ): Promise; + + isAgreementClassListed( + agreementClass: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isAgreementTypeListed( + agreementType: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isApp( + app: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isAppJailed( + app: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isCompositeAppAllowed( + app: PromiseOrValue, + targetApp: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isCtxValid( + ctx: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + jailApp( + ctx: PromiseOrValue, + app: PromiseOrValue, + reason: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mapAgreementClasses( + bitmap: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + registerAgreementClass( + agreementClassLogic: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + registerApp( + configWord: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + registerAppByFactory( + app: PromiseOrValue, + configWord: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + registerAppWithKey( + configWord: PromiseOrValue, + registrationKey: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + removeFromAgreementClassesBitmap( + bitmap: PromiseOrValue, + agreementType: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + replaceGovernance( + newGov: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + updateAgreementClass( + agreementClassLogic: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + updateSuperTokenFactory( + newFactory: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + updateSuperTokenLogic( + token: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/contracts/typechain-types/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance.ts b/contracts/typechain-types/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance.ts new file mode 100644 index 0000000..75d2644 --- /dev/null +++ b/contracts/typechain-types/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance.ts @@ -0,0 +1,506 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../../../common"; + +export interface ISuperfluidGovernanceInterface extends utils.Interface { + functions: { + "batchUpdateSuperTokenLogic(address,address[])": FunctionFragment; + "clearConfig(address,address,bytes32)": FunctionFragment; + "getConfigAsAddress(address,address,bytes32)": FunctionFragment; + "getConfigAsUint256(address,address,bytes32)": FunctionFragment; + "registerAgreementClass(address,address)": FunctionFragment; + "replaceGovernance(address,address)": FunctionFragment; + "setConfig(address,address,bytes32,address)": FunctionFragment; + "setConfig(address,address,bytes32,uint256)": FunctionFragment; + "updateContracts(address,address,address[],address)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "batchUpdateSuperTokenLogic" + | "clearConfig" + | "getConfigAsAddress" + | "getConfigAsUint256" + | "registerAgreementClass" + | "replaceGovernance" + | "setConfig(address,address,bytes32,address)" + | "setConfig(address,address,bytes32,uint256)" + | "updateContracts" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "batchUpdateSuperTokenLogic", + values: [PromiseOrValue, PromiseOrValue[]] + ): string; + encodeFunctionData( + functionFragment: "clearConfig", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "getConfigAsAddress", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "getConfigAsUint256", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "registerAgreementClass", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "replaceGovernance", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setConfig(address,address,bytes32,address)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "setConfig(address,address,bytes32,uint256)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "updateContracts", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue[], + PromiseOrValue + ] + ): string; + + decodeFunctionResult( + functionFragment: "batchUpdateSuperTokenLogic", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "clearConfig", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getConfigAsAddress", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getConfigAsUint256", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "registerAgreementClass", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "replaceGovernance", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setConfig(address,address,bytes32,address)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setConfig(address,address,bytes32,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "updateContracts", + data: BytesLike + ): Result; + + events: {}; +} + +export interface ISuperfluidGovernance extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: ISuperfluidGovernanceInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + batchUpdateSuperTokenLogic( + host: PromiseOrValue, + tokens: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + clearConfig( + host: PromiseOrValue, + superToken: PromiseOrValue, + key: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getConfigAsAddress( + host: PromiseOrValue, + superToken: PromiseOrValue, + key: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string] & { value: string }>; + + getConfigAsUint256( + host: PromiseOrValue, + superToken: PromiseOrValue, + key: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber] & { value: BigNumber }>; + + registerAgreementClass( + host: PromiseOrValue, + agreementClass: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + replaceGovernance( + host: PromiseOrValue, + newGov: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setConfig(address,address,bytes32,address)"( + host: PromiseOrValue, + superToken: PromiseOrValue, + key: PromiseOrValue, + value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setConfig(address,address,bytes32,uint256)"( + host: PromiseOrValue, + superToken: PromiseOrValue, + key: PromiseOrValue, + value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + updateContracts( + host: PromiseOrValue, + hostNewLogic: PromiseOrValue, + agreementClassNewLogics: PromiseOrValue[], + superTokenFactoryNewLogic: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + batchUpdateSuperTokenLogic( + host: PromiseOrValue, + tokens: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + clearConfig( + host: PromiseOrValue, + superToken: PromiseOrValue, + key: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getConfigAsAddress( + host: PromiseOrValue, + superToken: PromiseOrValue, + key: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getConfigAsUint256( + host: PromiseOrValue, + superToken: PromiseOrValue, + key: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + registerAgreementClass( + host: PromiseOrValue, + agreementClass: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + replaceGovernance( + host: PromiseOrValue, + newGov: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setConfig(address,address,bytes32,address)"( + host: PromiseOrValue, + superToken: PromiseOrValue, + key: PromiseOrValue, + value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setConfig(address,address,bytes32,uint256)"( + host: PromiseOrValue, + superToken: PromiseOrValue, + key: PromiseOrValue, + value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + updateContracts( + host: PromiseOrValue, + hostNewLogic: PromiseOrValue, + agreementClassNewLogics: PromiseOrValue[], + superTokenFactoryNewLogic: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + batchUpdateSuperTokenLogic( + host: PromiseOrValue, + tokens: PromiseOrValue[], + overrides?: CallOverrides + ): Promise; + + clearConfig( + host: PromiseOrValue, + superToken: PromiseOrValue, + key: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getConfigAsAddress( + host: PromiseOrValue, + superToken: PromiseOrValue, + key: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getConfigAsUint256( + host: PromiseOrValue, + superToken: PromiseOrValue, + key: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + registerAgreementClass( + host: PromiseOrValue, + agreementClass: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + replaceGovernance( + host: PromiseOrValue, + newGov: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setConfig(address,address,bytes32,address)"( + host: PromiseOrValue, + superToken: PromiseOrValue, + key: PromiseOrValue, + value: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "setConfig(address,address,bytes32,uint256)"( + host: PromiseOrValue, + superToken: PromiseOrValue, + key: PromiseOrValue, + value: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + updateContracts( + host: PromiseOrValue, + hostNewLogic: PromiseOrValue, + agreementClassNewLogics: PromiseOrValue[], + superTokenFactoryNewLogic: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + batchUpdateSuperTokenLogic( + host: PromiseOrValue, + tokens: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + clearConfig( + host: PromiseOrValue, + superToken: PromiseOrValue, + key: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getConfigAsAddress( + host: PromiseOrValue, + superToken: PromiseOrValue, + key: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getConfigAsUint256( + host: PromiseOrValue, + superToken: PromiseOrValue, + key: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + registerAgreementClass( + host: PromiseOrValue, + agreementClass: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + replaceGovernance( + host: PromiseOrValue, + newGov: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setConfig(address,address,bytes32,address)"( + host: PromiseOrValue, + superToken: PromiseOrValue, + key: PromiseOrValue, + value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setConfig(address,address,bytes32,uint256)"( + host: PromiseOrValue, + superToken: PromiseOrValue, + key: PromiseOrValue, + value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + updateContracts( + host: PromiseOrValue, + hostNewLogic: PromiseOrValue, + agreementClassNewLogics: PromiseOrValue[], + superTokenFactoryNewLogic: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + batchUpdateSuperTokenLogic( + host: PromiseOrValue, + tokens: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + clearConfig( + host: PromiseOrValue, + superToken: PromiseOrValue, + key: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getConfigAsAddress( + host: PromiseOrValue, + superToken: PromiseOrValue, + key: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getConfigAsUint256( + host: PromiseOrValue, + superToken: PromiseOrValue, + key: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + registerAgreementClass( + host: PromiseOrValue, + agreementClass: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + replaceGovernance( + host: PromiseOrValue, + newGov: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setConfig(address,address,bytes32,address)"( + host: PromiseOrValue, + superToken: PromiseOrValue, + key: PromiseOrValue, + value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "setConfig(address,address,bytes32,uint256)"( + host: PromiseOrValue, + superToken: PromiseOrValue, + key: PromiseOrValue, + value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + updateContracts( + host: PromiseOrValue, + hostNewLogic: PromiseOrValue, + agreementClassNewLogics: PromiseOrValue[], + superTokenFactoryNewLogic: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/contracts/typechain-types/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.ts b/contracts/typechain-types/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.ts new file mode 100644 index 0000000..71bbedd --- /dev/null +++ b/contracts/typechain-types/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken.ts @@ -0,0 +1,1010 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../../../common"; + +export interface ISuperfluidTokenInterface extends utils.Interface { + functions: { + "createAgreement(bytes32,bytes32[])": FunctionFragment; + "getAccountActiveAgreements(address)": FunctionFragment; + "getAgreementData(address,bytes32,uint256)": FunctionFragment; + "getAgreementStateSlot(address,address,uint256,uint256)": FunctionFragment; + "getHost()": FunctionFragment; + "isAccountCritical(address,uint256)": FunctionFragment; + "isAccountCriticalNow(address)": FunctionFragment; + "isAccountSolvent(address,uint256)": FunctionFragment; + "isAccountSolventNow(address)": FunctionFragment; + "makeLiquidationPayoutsV2(bytes32,bytes,address,bool,address,uint256,int256)": FunctionFragment; + "realtimeBalanceOf(address,uint256)": FunctionFragment; + "realtimeBalanceOfNow(address)": FunctionFragment; + "settleBalance(address,int256)": FunctionFragment; + "terminateAgreement(bytes32,uint256)": FunctionFragment; + "updateAgreementData(bytes32,bytes32[])": FunctionFragment; + "updateAgreementStateSlot(address,uint256,bytes32[])": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "createAgreement" + | "getAccountActiveAgreements" + | "getAgreementData" + | "getAgreementStateSlot" + | "getHost" + | "isAccountCritical" + | "isAccountCriticalNow" + | "isAccountSolvent" + | "isAccountSolventNow" + | "makeLiquidationPayoutsV2" + | "realtimeBalanceOf" + | "realtimeBalanceOfNow" + | "settleBalance" + | "terminateAgreement" + | "updateAgreementData" + | "updateAgreementStateSlot" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "createAgreement", + values: [PromiseOrValue, PromiseOrValue[]] + ): string; + encodeFunctionData( + functionFragment: "getAccountActiveAgreements", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getAgreementData", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "getAgreementStateSlot", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData(functionFragment: "getHost", values?: undefined): string; + encodeFunctionData( + functionFragment: "isAccountCritical", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "isAccountCriticalNow", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "isAccountSolvent", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "isAccountSolventNow", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "makeLiquidationPayoutsV2", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "realtimeBalanceOf", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "realtimeBalanceOfNow", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "settleBalance", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "terminateAgreement", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "updateAgreementData", + values: [PromiseOrValue, PromiseOrValue[]] + ): string; + encodeFunctionData( + functionFragment: "updateAgreementStateSlot", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue[] + ] + ): string; + + decodeFunctionResult( + functionFragment: "createAgreement", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getAccountActiveAgreements", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getAgreementData", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getAgreementStateSlot", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "getHost", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "isAccountCritical", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "isAccountCriticalNow", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "isAccountSolvent", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "isAccountSolventNow", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "makeLiquidationPayoutsV2", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "realtimeBalanceOf", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "realtimeBalanceOfNow", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "settleBalance", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "terminateAgreement", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "updateAgreementData", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "updateAgreementStateSlot", + data: BytesLike + ): Result; + + events: { + "AgreementCreated(address,bytes32,bytes32[])": EventFragment; + "AgreementLiquidated(address,bytes32,address,address,uint256)": EventFragment; + "AgreementLiquidatedBy(address,address,bytes32,address,address,uint256,uint256)": EventFragment; + "AgreementLiquidatedV2(address,bytes32,address,address,address,uint256,int256,bytes)": EventFragment; + "AgreementStateUpdated(address,address,uint256)": EventFragment; + "AgreementTerminated(address,bytes32)": EventFragment; + "AgreementUpdated(address,bytes32,bytes32[])": EventFragment; + "Bailout(address,uint256)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "AgreementCreated"): EventFragment; + getEvent(nameOrSignatureOrTopic: "AgreementLiquidated"): EventFragment; + getEvent(nameOrSignatureOrTopic: "AgreementLiquidatedBy"): EventFragment; + getEvent(nameOrSignatureOrTopic: "AgreementLiquidatedV2"): EventFragment; + getEvent(nameOrSignatureOrTopic: "AgreementStateUpdated"): EventFragment; + getEvent(nameOrSignatureOrTopic: "AgreementTerminated"): EventFragment; + getEvent(nameOrSignatureOrTopic: "AgreementUpdated"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Bailout"): EventFragment; +} + +export interface AgreementCreatedEventObject { + agreementClass: string; + id: string; + data: string[]; +} +export type AgreementCreatedEvent = TypedEvent< + [string, string, string[]], + AgreementCreatedEventObject +>; + +export type AgreementCreatedEventFilter = + TypedEventFilter; + +export interface AgreementLiquidatedEventObject { + agreementClass: string; + id: string; + penaltyAccount: string; + rewardAccount: string; + rewardAmount: BigNumber; +} +export type AgreementLiquidatedEvent = TypedEvent< + [string, string, string, string, BigNumber], + AgreementLiquidatedEventObject +>; + +export type AgreementLiquidatedEventFilter = + TypedEventFilter; + +export interface AgreementLiquidatedByEventObject { + liquidatorAccount: string; + agreementClass: string; + id: string; + penaltyAccount: string; + bondAccount: string; + rewardAmount: BigNumber; + bailoutAmount: BigNumber; +} +export type AgreementLiquidatedByEvent = TypedEvent< + [string, string, string, string, string, BigNumber, BigNumber], + AgreementLiquidatedByEventObject +>; + +export type AgreementLiquidatedByEventFilter = + TypedEventFilter; + +export interface AgreementLiquidatedV2EventObject { + agreementClass: string; + id: string; + liquidatorAccount: string; + targetAccount: string; + rewardAmountReceiver: string; + rewardAmount: BigNumber; + targetAccountBalanceDelta: BigNumber; + liquidationTypeData: string; +} +export type AgreementLiquidatedV2Event = TypedEvent< + [string, string, string, string, string, BigNumber, BigNumber, string], + AgreementLiquidatedV2EventObject +>; + +export type AgreementLiquidatedV2EventFilter = + TypedEventFilter; + +export interface AgreementStateUpdatedEventObject { + agreementClass: string; + account: string; + slotId: BigNumber; +} +export type AgreementStateUpdatedEvent = TypedEvent< + [string, string, BigNumber], + AgreementStateUpdatedEventObject +>; + +export type AgreementStateUpdatedEventFilter = + TypedEventFilter; + +export interface AgreementTerminatedEventObject { + agreementClass: string; + id: string; +} +export type AgreementTerminatedEvent = TypedEvent< + [string, string], + AgreementTerminatedEventObject +>; + +export type AgreementTerminatedEventFilter = + TypedEventFilter; + +export interface AgreementUpdatedEventObject { + agreementClass: string; + id: string; + data: string[]; +} +export type AgreementUpdatedEvent = TypedEvent< + [string, string, string[]], + AgreementUpdatedEventObject +>; + +export type AgreementUpdatedEventFilter = + TypedEventFilter; + +export interface BailoutEventObject { + bailoutAccount: string; + bailoutAmount: BigNumber; +} +export type BailoutEvent = TypedEvent<[string, BigNumber], BailoutEventObject>; + +export type BailoutEventFilter = TypedEventFilter; + +export interface ISuperfluidToken extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: ISuperfluidTokenInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + createAgreement( + id: PromiseOrValue, + data: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getAccountActiveAgreements( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string[]] & { activeAgreements: string[] }>; + + getAgreementData( + agreementClass: PromiseOrValue, + id: PromiseOrValue, + dataLength: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string[]] & { data: string[] }>; + + getAgreementStateSlot( + agreementClass: PromiseOrValue, + account: PromiseOrValue, + slotId: PromiseOrValue, + dataLength: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string[]] & { slotData: string[] }>; + + getHost(overrides?: CallOverrides): Promise<[string] & { host: string }>; + + isAccountCritical( + account: PromiseOrValue, + timestamp: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean] & { isCritical: boolean }>; + + isAccountCriticalNow( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean] & { isCritical: boolean }>; + + isAccountSolvent( + account: PromiseOrValue, + timestamp: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean] & { isSolvent: boolean }>; + + isAccountSolventNow( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean] & { isSolvent: boolean }>; + + makeLiquidationPayoutsV2( + id: PromiseOrValue, + liquidationTypeData: PromiseOrValue, + liquidatorAccount: PromiseOrValue, + useDefaultRewardAccount: PromiseOrValue, + targetAccount: PromiseOrValue, + rewardAmount: PromiseOrValue, + targetAccountBalanceDelta: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + realtimeBalanceOf( + account: PromiseOrValue, + timestamp: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber, BigNumber] & { + availableBalance: BigNumber; + deposit: BigNumber; + owedDeposit: BigNumber; + } + >; + + realtimeBalanceOfNow( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber, BigNumber, BigNumber] & { + availableBalance: BigNumber; + deposit: BigNumber; + owedDeposit: BigNumber; + timestamp: BigNumber; + } + >; + + settleBalance( + account: PromiseOrValue, + delta: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + terminateAgreement( + id: PromiseOrValue, + dataLength: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + updateAgreementData( + id: PromiseOrValue, + data: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + updateAgreementStateSlot( + account: PromiseOrValue, + slotId: PromiseOrValue, + slotData: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + createAgreement( + id: PromiseOrValue, + data: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getAccountActiveAgreements( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getAgreementData( + agreementClass: PromiseOrValue, + id: PromiseOrValue, + dataLength: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getAgreementStateSlot( + agreementClass: PromiseOrValue, + account: PromiseOrValue, + slotId: PromiseOrValue, + dataLength: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getHost(overrides?: CallOverrides): Promise; + + isAccountCritical( + account: PromiseOrValue, + timestamp: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isAccountCriticalNow( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isAccountSolvent( + account: PromiseOrValue, + timestamp: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isAccountSolventNow( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + makeLiquidationPayoutsV2( + id: PromiseOrValue, + liquidationTypeData: PromiseOrValue, + liquidatorAccount: PromiseOrValue, + useDefaultRewardAccount: PromiseOrValue, + targetAccount: PromiseOrValue, + rewardAmount: PromiseOrValue, + targetAccountBalanceDelta: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + realtimeBalanceOf( + account: PromiseOrValue, + timestamp: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber, BigNumber] & { + availableBalance: BigNumber; + deposit: BigNumber; + owedDeposit: BigNumber; + } + >; + + realtimeBalanceOfNow( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber, BigNumber, BigNumber] & { + availableBalance: BigNumber; + deposit: BigNumber; + owedDeposit: BigNumber; + timestamp: BigNumber; + } + >; + + settleBalance( + account: PromiseOrValue, + delta: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + terminateAgreement( + id: PromiseOrValue, + dataLength: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + updateAgreementData( + id: PromiseOrValue, + data: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + updateAgreementStateSlot( + account: PromiseOrValue, + slotId: PromiseOrValue, + slotData: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + createAgreement( + id: PromiseOrValue, + data: PromiseOrValue[], + overrides?: CallOverrides + ): Promise; + + getAccountActiveAgreements( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getAgreementData( + agreementClass: PromiseOrValue, + id: PromiseOrValue, + dataLength: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getAgreementStateSlot( + agreementClass: PromiseOrValue, + account: PromiseOrValue, + slotId: PromiseOrValue, + dataLength: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getHost(overrides?: CallOverrides): Promise; + + isAccountCritical( + account: PromiseOrValue, + timestamp: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isAccountCriticalNow( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isAccountSolvent( + account: PromiseOrValue, + timestamp: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isAccountSolventNow( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + makeLiquidationPayoutsV2( + id: PromiseOrValue, + liquidationTypeData: PromiseOrValue, + liquidatorAccount: PromiseOrValue, + useDefaultRewardAccount: PromiseOrValue, + targetAccount: PromiseOrValue, + rewardAmount: PromiseOrValue, + targetAccountBalanceDelta: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + realtimeBalanceOf( + account: PromiseOrValue, + timestamp: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber, BigNumber] & { + availableBalance: BigNumber; + deposit: BigNumber; + owedDeposit: BigNumber; + } + >; + + realtimeBalanceOfNow( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise< + [BigNumber, BigNumber, BigNumber, BigNumber] & { + availableBalance: BigNumber; + deposit: BigNumber; + owedDeposit: BigNumber; + timestamp: BigNumber; + } + >; + + settleBalance( + account: PromiseOrValue, + delta: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + terminateAgreement( + id: PromiseOrValue, + dataLength: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + updateAgreementData( + id: PromiseOrValue, + data: PromiseOrValue[], + overrides?: CallOverrides + ): Promise; + + updateAgreementStateSlot( + account: PromiseOrValue, + slotId: PromiseOrValue, + slotData: PromiseOrValue[], + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "AgreementCreated(address,bytes32,bytes32[])"( + agreementClass?: PromiseOrValue | null, + id?: null, + data?: null + ): AgreementCreatedEventFilter; + AgreementCreated( + agreementClass?: PromiseOrValue | null, + id?: null, + data?: null + ): AgreementCreatedEventFilter; + + "AgreementLiquidated(address,bytes32,address,address,uint256)"( + agreementClass?: PromiseOrValue | null, + id?: null, + penaltyAccount?: PromiseOrValue | null, + rewardAccount?: PromiseOrValue | null, + rewardAmount?: null + ): AgreementLiquidatedEventFilter; + AgreementLiquidated( + agreementClass?: PromiseOrValue | null, + id?: null, + penaltyAccount?: PromiseOrValue | null, + rewardAccount?: PromiseOrValue | null, + rewardAmount?: null + ): AgreementLiquidatedEventFilter; + + "AgreementLiquidatedBy(address,address,bytes32,address,address,uint256,uint256)"( + liquidatorAccount?: null, + agreementClass?: PromiseOrValue | null, + id?: null, + penaltyAccount?: PromiseOrValue | null, + bondAccount?: PromiseOrValue | null, + rewardAmount?: null, + bailoutAmount?: null + ): AgreementLiquidatedByEventFilter; + AgreementLiquidatedBy( + liquidatorAccount?: null, + agreementClass?: PromiseOrValue | null, + id?: null, + penaltyAccount?: PromiseOrValue | null, + bondAccount?: PromiseOrValue | null, + rewardAmount?: null, + bailoutAmount?: null + ): AgreementLiquidatedByEventFilter; + + "AgreementLiquidatedV2(address,bytes32,address,address,address,uint256,int256,bytes)"( + agreementClass?: PromiseOrValue | null, + id?: null, + liquidatorAccount?: PromiseOrValue | null, + targetAccount?: PromiseOrValue | null, + rewardAmountReceiver?: null, + rewardAmount?: null, + targetAccountBalanceDelta?: null, + liquidationTypeData?: null + ): AgreementLiquidatedV2EventFilter; + AgreementLiquidatedV2( + agreementClass?: PromiseOrValue | null, + id?: null, + liquidatorAccount?: PromiseOrValue | null, + targetAccount?: PromiseOrValue | null, + rewardAmountReceiver?: null, + rewardAmount?: null, + targetAccountBalanceDelta?: null, + liquidationTypeData?: null + ): AgreementLiquidatedV2EventFilter; + + "AgreementStateUpdated(address,address,uint256)"( + agreementClass?: PromiseOrValue | null, + account?: PromiseOrValue | null, + slotId?: null + ): AgreementStateUpdatedEventFilter; + AgreementStateUpdated( + agreementClass?: PromiseOrValue | null, + account?: PromiseOrValue | null, + slotId?: null + ): AgreementStateUpdatedEventFilter; + + "AgreementTerminated(address,bytes32)"( + agreementClass?: PromiseOrValue | null, + id?: null + ): AgreementTerminatedEventFilter; + AgreementTerminated( + agreementClass?: PromiseOrValue | null, + id?: null + ): AgreementTerminatedEventFilter; + + "AgreementUpdated(address,bytes32,bytes32[])"( + agreementClass?: PromiseOrValue | null, + id?: null, + data?: null + ): AgreementUpdatedEventFilter; + AgreementUpdated( + agreementClass?: PromiseOrValue | null, + id?: null, + data?: null + ): AgreementUpdatedEventFilter; + + "Bailout(address,uint256)"( + bailoutAccount?: PromiseOrValue | null, + bailoutAmount?: null + ): BailoutEventFilter; + Bailout( + bailoutAccount?: PromiseOrValue | null, + bailoutAmount?: null + ): BailoutEventFilter; + }; + + estimateGas: { + createAgreement( + id: PromiseOrValue, + data: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getAccountActiveAgreements( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getAgreementData( + agreementClass: PromiseOrValue, + id: PromiseOrValue, + dataLength: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getAgreementStateSlot( + agreementClass: PromiseOrValue, + account: PromiseOrValue, + slotId: PromiseOrValue, + dataLength: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getHost(overrides?: CallOverrides): Promise; + + isAccountCritical( + account: PromiseOrValue, + timestamp: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isAccountCriticalNow( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isAccountSolvent( + account: PromiseOrValue, + timestamp: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isAccountSolventNow( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + makeLiquidationPayoutsV2( + id: PromiseOrValue, + liquidationTypeData: PromiseOrValue, + liquidatorAccount: PromiseOrValue, + useDefaultRewardAccount: PromiseOrValue, + targetAccount: PromiseOrValue, + rewardAmount: PromiseOrValue, + targetAccountBalanceDelta: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + realtimeBalanceOf( + account: PromiseOrValue, + timestamp: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + realtimeBalanceOfNow( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + settleBalance( + account: PromiseOrValue, + delta: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + terminateAgreement( + id: PromiseOrValue, + dataLength: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + updateAgreementData( + id: PromiseOrValue, + data: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + updateAgreementStateSlot( + account: PromiseOrValue, + slotId: PromiseOrValue, + slotData: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + createAgreement( + id: PromiseOrValue, + data: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getAccountActiveAgreements( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getAgreementData( + agreementClass: PromiseOrValue, + id: PromiseOrValue, + dataLength: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getAgreementStateSlot( + agreementClass: PromiseOrValue, + account: PromiseOrValue, + slotId: PromiseOrValue, + dataLength: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getHost(overrides?: CallOverrides): Promise; + + isAccountCritical( + account: PromiseOrValue, + timestamp: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isAccountCriticalNow( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isAccountSolvent( + account: PromiseOrValue, + timestamp: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isAccountSolventNow( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + makeLiquidationPayoutsV2( + id: PromiseOrValue, + liquidationTypeData: PromiseOrValue, + liquidatorAccount: PromiseOrValue, + useDefaultRewardAccount: PromiseOrValue, + targetAccount: PromiseOrValue, + rewardAmount: PromiseOrValue, + targetAccountBalanceDelta: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + realtimeBalanceOf( + account: PromiseOrValue, + timestamp: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + realtimeBalanceOfNow( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + settleBalance( + account: PromiseOrValue, + delta: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + terminateAgreement( + id: PromiseOrValue, + dataLength: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + updateAgreementData( + id: PromiseOrValue, + data: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + updateAgreementStateSlot( + account: PromiseOrValue, + slotId: PromiseOrValue, + slotData: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/contracts/typechain-types/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/index.ts b/contracts/typechain-types/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/index.ts new file mode 100644 index 0000000..1bfe4f8 --- /dev/null +++ b/contracts/typechain-types/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/index.ts @@ -0,0 +1,10 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { ISuperAgreement } from "./ISuperAgreement"; +export type { ISuperApp } from "./ISuperApp"; +export type { ISuperToken } from "./ISuperToken"; +export type { ISuperTokenFactory } from "./ISuperTokenFactory"; +export type { ISuperfluid } from "./ISuperfluid"; +export type { ISuperfluidGovernance } from "./ISuperfluidGovernance"; +export type { ISuperfluidToken } from "./ISuperfluidToken"; diff --git a/contracts/typechain-types/@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo.ts b/contracts/typechain-types/@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo.ts new file mode 100644 index 0000000..00bc0f0 --- /dev/null +++ b/contracts/typechain-types/@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo.ts @@ -0,0 +1,384 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../../../common"; + +export interface ERC20WithTokenInfoInterface extends utils.Interface { + functions: { + "allowance(address,address)": FunctionFragment; + "approve(address,uint256)": FunctionFragment; + "balanceOf(address)": FunctionFragment; + "decimals()": FunctionFragment; + "name()": FunctionFragment; + "symbol()": FunctionFragment; + "totalSupply()": FunctionFragment; + "transfer(address,uint256)": FunctionFragment; + "transferFrom(address,address,uint256)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "allowance" + | "approve" + | "balanceOf" + | "decimals" + | "name" + | "symbol" + | "totalSupply" + | "transfer" + | "transferFrom" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "allowance", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "approve", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "balanceOf", + values: [PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "decimals", values?: undefined): string; + encodeFunctionData(functionFragment: "name", values?: undefined): string; + encodeFunctionData(functionFragment: "symbol", values?: undefined): string; + encodeFunctionData( + functionFragment: "totalSupply", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "transfer", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "transferFrom", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + + decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "decimals", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "totalSupply", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "transferFrom", + data: BytesLike + ): Result; + + events: { + "Approval(address,address,uint256)": EventFragment; + "Transfer(address,address,uint256)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; +} + +export interface ApprovalEventObject { + owner: string; + spender: string; + value: BigNumber; +} +export type ApprovalEvent = TypedEvent< + [string, string, BigNumber], + ApprovalEventObject +>; + +export type ApprovalEventFilter = TypedEventFilter; + +export interface TransferEventObject { + from: string; + to: string; + value: BigNumber; +} +export type TransferEvent = TypedEvent< + [string, string, BigNumber], + TransferEventObject +>; + +export type TransferEventFilter = TypedEventFilter; + +export interface ERC20WithTokenInfo extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: ERC20WithTokenInfoInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + approve( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + decimals(overrides?: CallOverrides): Promise<[number]>; + + name(overrides?: CallOverrides): Promise<[string]>; + + symbol(overrides?: CallOverrides): Promise<[string]>; + + totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; + + transfer( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + approve( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + decimals(overrides?: CallOverrides): Promise; + + name(overrides?: CallOverrides): Promise; + + symbol(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + approve( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + decimals(overrides?: CallOverrides): Promise; + + name(overrides?: CallOverrides): Promise; + + symbol(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "Approval(address,address,uint256)"( + owner?: PromiseOrValue | null, + spender?: PromiseOrValue | null, + value?: null + ): ApprovalEventFilter; + Approval( + owner?: PromiseOrValue | null, + spender?: PromiseOrValue | null, + value?: null + ): ApprovalEventFilter; + + "Transfer(address,address,uint256)"( + from?: PromiseOrValue | null, + to?: PromiseOrValue | null, + value?: null + ): TransferEventFilter; + Transfer( + from?: PromiseOrValue | null, + to?: PromiseOrValue | null, + value?: null + ): TransferEventFilter; + }; + + estimateGas: { + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + approve( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + decimals(overrides?: CallOverrides): Promise; + + name(overrides?: CallOverrides): Promise; + + symbol(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + approve( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + decimals(overrides?: CallOverrides): Promise; + + name(overrides?: CallOverrides): Promise; + + symbol(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/contracts/typechain-types/@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.ts b/contracts/typechain-types/@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.ts new file mode 100644 index 0000000..3c0c0de --- /dev/null +++ b/contracts/typechain-types/@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo.ts @@ -0,0 +1,110 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BytesLike, + CallOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../../../common"; + +export interface TokenInfoInterface extends utils.Interface { + functions: { + "decimals()": FunctionFragment; + "name()": FunctionFragment; + "symbol()": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: "decimals" | "name" | "symbol" + ): FunctionFragment; + + encodeFunctionData(functionFragment: "decimals", values?: undefined): string; + encodeFunctionData(functionFragment: "name", values?: undefined): string; + encodeFunctionData(functionFragment: "symbol", values?: undefined): string; + + decodeFunctionResult(functionFragment: "decimals", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; + + events: {}; +} + +export interface TokenInfo extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: TokenInfoInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + decimals(overrides?: CallOverrides): Promise<[number]>; + + name(overrides?: CallOverrides): Promise<[string]>; + + symbol(overrides?: CallOverrides): Promise<[string]>; + }; + + decimals(overrides?: CallOverrides): Promise; + + name(overrides?: CallOverrides): Promise; + + symbol(overrides?: CallOverrides): Promise; + + callStatic: { + decimals(overrides?: CallOverrides): Promise; + + name(overrides?: CallOverrides): Promise; + + symbol(overrides?: CallOverrides): Promise; + }; + + filters: {}; + + estimateGas: { + decimals(overrides?: CallOverrides): Promise; + + name(overrides?: CallOverrides): Promise; + + symbol(overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + decimals(overrides?: CallOverrides): Promise; + + name(overrides?: CallOverrides): Promise; + + symbol(overrides?: CallOverrides): Promise; + }; +} diff --git a/contracts/typechain-types/@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/index.ts b/contracts/typechain-types/@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/index.ts new file mode 100644 index 0000000..1b272a5 --- /dev/null +++ b/contracts/typechain-types/@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/index.ts @@ -0,0 +1,5 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { ERC20WithTokenInfo } from "./ERC20WithTokenInfo"; +export type { TokenInfo } from "./TokenInfo"; diff --git a/contracts/typechain-types/@superfluid-finance/ethereum-contracts/index.ts b/contracts/typechain-types/@superfluid-finance/ethereum-contracts/index.ts new file mode 100644 index 0000000..a11e4ca --- /dev/null +++ b/contracts/typechain-types/@superfluid-finance/ethereum-contracts/index.ts @@ -0,0 +1,5 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type * as contracts from "./contracts"; +export type { contracts }; diff --git a/contracts/typechain-types/@superfluid-finance/index.ts b/contracts/typechain-types/@superfluid-finance/index.ts new file mode 100644 index 0000000..93259bd --- /dev/null +++ b/contracts/typechain-types/@superfluid-finance/index.ts @@ -0,0 +1,5 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type * as ethereumContracts from "./ethereum-contracts"; +export type { ethereumContracts }; diff --git a/contracts/typechain-types/common.ts b/contracts/typechain-types/common.ts new file mode 100644 index 0000000..4c90b08 --- /dev/null +++ b/contracts/typechain-types/common.ts @@ -0,0 +1,46 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { Listener } from "@ethersproject/providers"; +import type { Event, EventFilter } from "ethers"; + +export interface TypedEvent< + TArgsArray extends Array = any, + TArgsObject = any +> extends Event { + args: TArgsArray & TArgsObject; +} + +export interface TypedEventFilter<_TEvent extends TypedEvent> + extends EventFilter {} + +export interface TypedListener { + (...listenerArg: [...__TypechainArgsArray, TEvent]): void; +} + +type __TypechainArgsArray = T extends TypedEvent ? U : never; + +export interface OnEvent { + ( + eventFilter: TypedEventFilter, + listener: TypedListener + ): TRes; + (eventName: string, listener: Listener): TRes; +} + +export type MinEthersFactory = { + deploy(...a: ARGS[]): Promise; +}; + +export type GetContractTypeFromFactory = F extends MinEthersFactory< + infer C, + any +> + ? C + : never; + +export type GetARGsTypeFromFactory = F extends MinEthersFactory + ? Parameters + : never; + +export type PromiseOrValue = T | Promise; diff --git a/contracts/typechain-types/contracts/Diamond.ts b/contracts/typechain-types/contracts/Diamond.ts new file mode 100644 index 0000000..dbc8ac4 --- /dev/null +++ b/contracts/typechain-types/contracts/Diamond.ts @@ -0,0 +1,56 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { BaseContract, Signer, utils } from "ethers"; + +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../common"; + +export interface DiamondInterface extends utils.Interface { + functions: {}; + + events: {}; +} + +export interface Diamond extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: DiamondInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: {}; + + callStatic: {}; + + filters: {}; + + estimateGas: {}; + + populateTransaction: {}; +} diff --git a/contracts/typechain-types/contracts/archives/OldFlow.ts b/contracts/typechain-types/contracts/archives/OldFlow.ts new file mode 100644 index 0000000..2a8bf01 --- /dev/null +++ b/contracts/typechain-types/contracts/archives/OldFlow.ts @@ -0,0 +1,671 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../common"; + +export interface OldFlowInterface extends utils.Interface { + functions: { + "closeFlow(address,uint256)": FunctionFragment; + "decreaseFlow(address,address,address,uint256,int96)": FunctionFragment; + "depositSuperToken(address,uint256)": FunctionFragment; + "getAmountFlowed(address,address)": FunctionFragment; + "getDepositTotal(address)": FunctionFragment; + "getDepositUser(address,address)": FunctionFragment; + "getFlowData(address,address,uint256)": FunctionFragment; + "getNewFlowNonce(address,address)": FunctionFragment; + "getValidSafeLifespan(address,address,int96)": FunctionFragment; + "hasActiveFlow(address,address)": FunctionFragment; + "isViewSessionAllowed(address,address)": FunctionFragment; + "openFlow(address,address,uint256)": FunctionFragment; + "withdrawSuperToken(address,uint256)": FunctionFragment; + "withdrawSuperTokens(address[],uint256[])": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "closeFlow" + | "decreaseFlow" + | "depositSuperToken" + | "getAmountFlowed" + | "getDepositTotal" + | "getDepositUser" + | "getFlowData" + | "getNewFlowNonce" + | "getValidSafeLifespan" + | "hasActiveFlow" + | "isViewSessionAllowed" + | "openFlow" + | "withdrawSuperToken" + | "withdrawSuperTokens" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "closeFlow", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "decreaseFlow", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "depositSuperToken", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getAmountFlowed", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getDepositTotal", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getDepositUser", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getFlowData", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "getNewFlowNonce", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getValidSafeLifespan", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "hasActiveFlow", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "isViewSessionAllowed", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "openFlow", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "withdrawSuperToken", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "withdrawSuperTokens", + values: [PromiseOrValue[], PromiseOrValue[]] + ): string; + + decodeFunctionResult(functionFragment: "closeFlow", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "decreaseFlow", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "depositSuperToken", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getAmountFlowed", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getDepositTotal", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getDepositUser", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getFlowData", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getNewFlowNonce", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getValidSafeLifespan", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "hasActiveFlow", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "isViewSessionAllowed", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "openFlow", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "withdrawSuperToken", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "withdrawSuperTokens", + data: BytesLike + ): Result; + + events: {}; +} + +export interface OldFlow extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: OldFlowInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + closeFlow( + _superToken: PromiseOrValue, + _nonce: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + decreaseFlow( + _superToken: PromiseOrValue, + _sender: PromiseOrValue, + _receiver: PromiseOrValue, + _nonce: PromiseOrValue, + _flowRate: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + depositSuperToken( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getAmountFlowed( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + getDepositTotal( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + getDepositUser( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + getFlowData( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + _nonce: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string, BigNumber, BigNumber, BigNumber, string]>; + + getNewFlowNonce( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + getValidSafeLifespan( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + _flowRate: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + hasActiveFlow( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + isViewSessionAllowed( + _viewer: PromiseOrValue, + _broadcaster: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + openFlow( + _receiver: PromiseOrValue, + _superToken: PromiseOrValue, + _lifespan: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawSuperToken( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawSuperTokens( + _superTokens: PromiseOrValue[], + _amounts: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + closeFlow( + _superToken: PromiseOrValue, + _nonce: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + decreaseFlow( + _superToken: PromiseOrValue, + _sender: PromiseOrValue, + _receiver: PromiseOrValue, + _nonce: PromiseOrValue, + _flowRate: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + depositSuperToken( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getAmountFlowed( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getDepositTotal( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getDepositUser( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getFlowData( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + _nonce: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string, BigNumber, BigNumber, BigNumber, string]>; + + getNewFlowNonce( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getValidSafeLifespan( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + _flowRate: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hasActiveFlow( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isViewSessionAllowed( + _viewer: PromiseOrValue, + _broadcaster: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + openFlow( + _receiver: PromiseOrValue, + _superToken: PromiseOrValue, + _lifespan: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawSuperToken( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawSuperTokens( + _superTokens: PromiseOrValue[], + _amounts: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + closeFlow( + _superToken: PromiseOrValue, + _nonce: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + decreaseFlow( + _superToken: PromiseOrValue, + _sender: PromiseOrValue, + _receiver: PromiseOrValue, + _nonce: PromiseOrValue, + _flowRate: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + depositSuperToken( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getAmountFlowed( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getDepositTotal( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getDepositUser( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getFlowData( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + _nonce: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string, BigNumber, BigNumber, BigNumber, string]>; + + getNewFlowNonce( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getValidSafeLifespan( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + _flowRate: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hasActiveFlow( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isViewSessionAllowed( + _viewer: PromiseOrValue, + _broadcaster: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + openFlow( + _receiver: PromiseOrValue, + _superToken: PromiseOrValue, + _lifespan: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + withdrawSuperToken( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + withdrawSuperTokens( + _superTokens: PromiseOrValue[], + _amounts: PromiseOrValue[], + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + closeFlow( + _superToken: PromiseOrValue, + _nonce: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + decreaseFlow( + _superToken: PromiseOrValue, + _sender: PromiseOrValue, + _receiver: PromiseOrValue, + _nonce: PromiseOrValue, + _flowRate: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + depositSuperToken( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getAmountFlowed( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getDepositTotal( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getDepositUser( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getFlowData( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + _nonce: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getNewFlowNonce( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getValidSafeLifespan( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + _flowRate: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hasActiveFlow( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isViewSessionAllowed( + _viewer: PromiseOrValue, + _broadcaster: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + openFlow( + _receiver: PromiseOrValue, + _superToken: PromiseOrValue, + _lifespan: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawSuperToken( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawSuperTokens( + _superTokens: PromiseOrValue[], + _amounts: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + closeFlow( + _superToken: PromiseOrValue, + _nonce: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + decreaseFlow( + _superToken: PromiseOrValue, + _sender: PromiseOrValue, + _receiver: PromiseOrValue, + _nonce: PromiseOrValue, + _flowRate: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + depositSuperToken( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getAmountFlowed( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getDepositTotal( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getDepositUser( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getFlowData( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + _nonce: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getNewFlowNonce( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getValidSafeLifespan( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + _flowRate: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hasActiveFlow( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isViewSessionAllowed( + _viewer: PromiseOrValue, + _broadcaster: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + openFlow( + _receiver: PromiseOrValue, + _superToken: PromiseOrValue, + _lifespan: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawSuperToken( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawSuperTokens( + _superTokens: PromiseOrValue[], + _amounts: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/contracts/typechain-types/contracts/archives/index.ts b/contracts/typechain-types/contracts/archives/index.ts new file mode 100644 index 0000000..f597443 --- /dev/null +++ b/contracts/typechain-types/contracts/archives/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { OldFlow } from "./OldFlow"; diff --git a/contracts/typechain-types/contracts/facets/core/Automate.ts b/contracts/typechain-types/contracts/facets/core/Automate.ts new file mode 100644 index 0000000..d90bb8a --- /dev/null +++ b/contracts/typechain-types/contracts/facets/core/Automate.ts @@ -0,0 +1,258 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PayableOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../common"; + +export interface AutomateInterface extends utils.Interface { + functions: { + "depositGelatoFunds()": FunctionFragment; + "getGelatoAddresses()": FunctionFragment; + "getMinimumAppGelatoBalance()": FunctionFragment; + "setGelatoContracts(address)": FunctionFragment; + "setMinimumAppGelatoBalance(uint256)": FunctionFragment; + "withdrawGelatoFunds(uint256)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "depositGelatoFunds" + | "getGelatoAddresses" + | "getMinimumAppGelatoBalance" + | "setGelatoContracts" + | "setMinimumAppGelatoBalance" + | "withdrawGelatoFunds" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "depositGelatoFunds", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getGelatoAddresses", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getMinimumAppGelatoBalance", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "setGelatoContracts", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setMinimumAppGelatoBalance", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "withdrawGelatoFunds", + values: [PromiseOrValue] + ): string; + + decodeFunctionResult( + functionFragment: "depositGelatoFunds", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getGelatoAddresses", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getMinimumAppGelatoBalance", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setGelatoContracts", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setMinimumAppGelatoBalance", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "withdrawGelatoFunds", + data: BytesLike + ): Result; + + events: {}; +} + +export interface Automate extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: AutomateInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + depositGelatoFunds( + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + getGelatoAddresses( + overrides?: CallOverrides + ): Promise<[string, string, string, string, string]>; + + getMinimumAppGelatoBalance(overrides?: CallOverrides): Promise<[BigNumber]>; + + setGelatoContracts( + _autobot: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMinimumAppGelatoBalance( + _value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawGelatoFunds( + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + depositGelatoFunds( + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + getGelatoAddresses( + overrides?: CallOverrides + ): Promise<[string, string, string, string, string]>; + + getMinimumAppGelatoBalance(overrides?: CallOverrides): Promise; + + setGelatoContracts( + _autobot: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMinimumAppGelatoBalance( + _value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawGelatoFunds( + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + depositGelatoFunds(overrides?: CallOverrides): Promise; + + getGelatoAddresses( + overrides?: CallOverrides + ): Promise<[string, string, string, string, string]>; + + getMinimumAppGelatoBalance(overrides?: CallOverrides): Promise; + + setGelatoContracts( + _autobot: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setMinimumAppGelatoBalance( + _value: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + withdrawGelatoFunds( + _amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + depositGelatoFunds( + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + getGelatoAddresses(overrides?: CallOverrides): Promise; + + getMinimumAppGelatoBalance(overrides?: CallOverrides): Promise; + + setGelatoContracts( + _autobot: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMinimumAppGelatoBalance( + _value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawGelatoFunds( + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + depositGelatoFunds( + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + getGelatoAddresses( + overrides?: CallOverrides + ): Promise; + + getMinimumAppGelatoBalance( + overrides?: CallOverrides + ): Promise; + + setGelatoContracts( + _autobot: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMinimumAppGelatoBalance( + _value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawGelatoFunds( + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/contracts/typechain-types/contracts/facets/core/Control.ts b/contracts/typechain-types/contracts/facets/core/Control.ts new file mode 100644 index 0000000..38200e3 --- /dev/null +++ b/contracts/typechain-types/contracts/facets/core/Control.ts @@ -0,0 +1,1011 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../common"; + +export interface ControlInterface extends utils.Interface { + functions: { + "addSuperToken(address)": FunctionFragment; + "clearBPS()": FunctionFragment; + "depositAsset(address,uint256)": FunctionFragment; + "getAssetTotal(address)": FunctionFragment; + "getAssetUser(address,address)": FunctionFragment; + "getBPSData(uint256)": FunctionFragment; + "getBPSSize()": FunctionFragment; + "getControlData(address,uint256)": FunctionFragment; + "getFeeBalance(address)": FunctionFragment; + "getMinimumEndDuration()": FunctionFragment; + "getMinimumLifespan()": FunctionFragment; + "getNewBufferedAppBalance(address,int96)": FunctionFragment; + "getNewControlNonce(address)": FunctionFragment; + "getSBPS(address)": FunctionFragment; + "getSTBufferDurationInSecond()": FunctionFragment; + "isBPSEnabled()": FunctionFragment; + "isNewFlowRateAllowed(address,int96)": FunctionFragment; + "isSuperTokensSupported(address)": FunctionFragment; + "realizeFeeBalance(uint256,address)": FunctionFragment; + "removeSuperToken(address)": FunctionFragment; + "setBPS(uint16[],uint96[],uint96[],uint256[])": FunctionFragment; + "setMinimumEndDuration(uint256)": FunctionFragment; + "setMinimumLifespan(uint256)": FunctionFragment; + "setSBPS(uint16,address)": FunctionFragment; + "setSTBufferAmount(uint256)": FunctionFragment; + "toggleBPS()": FunctionFragment; + "withdrawAsset(address,uint256)": FunctionFragment; + "withdrawFeeBalance(address,uint256)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "addSuperToken" + | "clearBPS" + | "depositAsset" + | "getAssetTotal" + | "getAssetUser" + | "getBPSData" + | "getBPSSize" + | "getControlData" + | "getFeeBalance" + | "getMinimumEndDuration" + | "getMinimumLifespan" + | "getNewBufferedAppBalance" + | "getNewControlNonce" + | "getSBPS" + | "getSTBufferDurationInSecond" + | "isBPSEnabled" + | "isNewFlowRateAllowed" + | "isSuperTokensSupported" + | "realizeFeeBalance" + | "removeSuperToken" + | "setBPS" + | "setMinimumEndDuration" + | "setMinimumLifespan" + | "setSBPS" + | "setSTBufferAmount" + | "toggleBPS" + | "withdrawAsset" + | "withdrawFeeBalance" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "addSuperToken", + values: [PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "clearBPS", values?: undefined): string; + encodeFunctionData( + functionFragment: "depositAsset", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getAssetTotal", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getAssetUser", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getBPSData", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getBPSSize", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getControlData", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getFeeBalance", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getMinimumEndDuration", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getMinimumLifespan", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getNewBufferedAppBalance", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getNewControlNonce", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getSBPS", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getSTBufferDurationInSecond", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "isBPSEnabled", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "isNewFlowRateAllowed", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "isSuperTokensSupported", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "realizeFeeBalance", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "removeSuperToken", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setBPS", + values: [ + PromiseOrValue[], + PromiseOrValue[], + PromiseOrValue[], + PromiseOrValue[] + ] + ): string; + encodeFunctionData( + functionFragment: "setMinimumEndDuration", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setMinimumLifespan", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setSBPS", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setSTBufferAmount", + values: [PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "toggleBPS", values?: undefined): string; + encodeFunctionData( + functionFragment: "withdrawAsset", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "withdrawFeeBalance", + values: [PromiseOrValue, PromiseOrValue] + ): string; + + decodeFunctionResult( + functionFragment: "addSuperToken", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "clearBPS", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "depositAsset", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getAssetTotal", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getAssetUser", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "getBPSData", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "getBPSSize", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getControlData", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getFeeBalance", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getMinimumEndDuration", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getMinimumLifespan", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getNewBufferedAppBalance", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getNewControlNonce", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "getSBPS", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getSTBufferDurationInSecond", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "isBPSEnabled", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "isNewFlowRateAllowed", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "isSuperTokensSupported", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "realizeFeeBalance", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "removeSuperToken", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "setBPS", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "setMinimumEndDuration", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setMinimumLifespan", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "setSBPS", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "setSTBufferAmount", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "toggleBPS", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "withdrawAsset", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "withdrawFeeBalance", + data: BytesLike + ): Result; + + events: {}; +} + +export interface Control extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: ControlInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + addSuperToken( + _superToken: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + clearBPS( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + depositAsset( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getAssetTotal( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + getAssetUser( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + getBPSData( + _tag: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[number, BigNumber, BigNumber]>; + + getBPSSize(overrides?: CallOverrides): Promise<[BigNumber]>; + + getControlData( + _superToken: PromiseOrValue, + _nonce: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string, BigNumber, BigNumber, BigNumber]>; + + getFeeBalance( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + getMinimumEndDuration(overrides?: CallOverrides): Promise<[BigNumber]>; + + getMinimumLifespan(overrides?: CallOverrides): Promise<[BigNumber]>; + + getNewBufferedAppBalance( + _superToken: PromiseOrValue, + _newFlowRate: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + getNewControlNonce( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + getSBPS( + _user: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[number]>; + + getSTBufferDurationInSecond( + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + isBPSEnabled(overrides?: CallOverrides): Promise<[boolean]>; + + isNewFlowRateAllowed( + _superToken: PromiseOrValue, + _newFlowRate: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + isSuperTokensSupported( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + realizeFeeBalance( + count: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + removeSuperToken( + _superToken: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setBPS( + _bpss: PromiseOrValue[], + _flowRateLowerBounds: PromiseOrValue[], + _flowRateUpperBounds: PromiseOrValue[], + _tags: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMinimumEndDuration( + _duration: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMinimumLifespan( + _duration: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setSBPS( + _bps: PromiseOrValue, + _user: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setSTBufferAmount( + _duration: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + toggleBPS( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawAsset( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawFeeBalance( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + addSuperToken( + _superToken: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + clearBPS( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + depositAsset( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getAssetTotal( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getAssetUser( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getBPSData( + _tag: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[number, BigNumber, BigNumber]>; + + getBPSSize(overrides?: CallOverrides): Promise; + + getControlData( + _superToken: PromiseOrValue, + _nonce: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string, BigNumber, BigNumber, BigNumber]>; + + getFeeBalance( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getMinimumEndDuration(overrides?: CallOverrides): Promise; + + getMinimumLifespan(overrides?: CallOverrides): Promise; + + getNewBufferedAppBalance( + _superToken: PromiseOrValue, + _newFlowRate: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getNewControlNonce( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSBPS( + _user: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSTBufferDurationInSecond(overrides?: CallOverrides): Promise; + + isBPSEnabled(overrides?: CallOverrides): Promise; + + isNewFlowRateAllowed( + _superToken: PromiseOrValue, + _newFlowRate: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isSuperTokensSupported( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + realizeFeeBalance( + count: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + removeSuperToken( + _superToken: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setBPS( + _bpss: PromiseOrValue[], + _flowRateLowerBounds: PromiseOrValue[], + _flowRateUpperBounds: PromiseOrValue[], + _tags: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMinimumEndDuration( + _duration: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMinimumLifespan( + _duration: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setSBPS( + _bps: PromiseOrValue, + _user: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setSTBufferAmount( + _duration: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + toggleBPS( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawAsset( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawFeeBalance( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + addSuperToken( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + clearBPS(overrides?: CallOverrides): Promise; + + depositAsset( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getAssetTotal( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getAssetUser( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getBPSData( + _tag: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[number, BigNumber, BigNumber]>; + + getBPSSize(overrides?: CallOverrides): Promise; + + getControlData( + _superToken: PromiseOrValue, + _nonce: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string, BigNumber, BigNumber, BigNumber]>; + + getFeeBalance( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getMinimumEndDuration(overrides?: CallOverrides): Promise; + + getMinimumLifespan(overrides?: CallOverrides): Promise; + + getNewBufferedAppBalance( + _superToken: PromiseOrValue, + _newFlowRate: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getNewControlNonce( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSBPS( + _user: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSTBufferDurationInSecond(overrides?: CallOverrides): Promise; + + isBPSEnabled(overrides?: CallOverrides): Promise; + + isNewFlowRateAllowed( + _superToken: PromiseOrValue, + _newFlowRate: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isSuperTokensSupported( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + realizeFeeBalance( + count: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + removeSuperToken( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setBPS( + _bpss: PromiseOrValue[], + _flowRateLowerBounds: PromiseOrValue[], + _flowRateUpperBounds: PromiseOrValue[], + _tags: PromiseOrValue[], + overrides?: CallOverrides + ): Promise; + + setMinimumEndDuration( + _duration: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setMinimumLifespan( + _duration: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setSBPS( + _bps: PromiseOrValue, + _user: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setSTBufferAmount( + _duration: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + toggleBPS(overrides?: CallOverrides): Promise; + + withdrawAsset( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + withdrawFeeBalance( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + addSuperToken( + _superToken: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + clearBPS( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + depositAsset( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getAssetTotal( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getAssetUser( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getBPSData( + _tag: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getBPSSize(overrides?: CallOverrides): Promise; + + getControlData( + _superToken: PromiseOrValue, + _nonce: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getFeeBalance( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getMinimumEndDuration(overrides?: CallOverrides): Promise; + + getMinimumLifespan(overrides?: CallOverrides): Promise; + + getNewBufferedAppBalance( + _superToken: PromiseOrValue, + _newFlowRate: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getNewControlNonce( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSBPS( + _user: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSTBufferDurationInSecond(overrides?: CallOverrides): Promise; + + isBPSEnabled(overrides?: CallOverrides): Promise; + + isNewFlowRateAllowed( + _superToken: PromiseOrValue, + _newFlowRate: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isSuperTokensSupported( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + realizeFeeBalance( + count: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + removeSuperToken( + _superToken: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setBPS( + _bpss: PromiseOrValue[], + _flowRateLowerBounds: PromiseOrValue[], + _flowRateUpperBounds: PromiseOrValue[], + _tags: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMinimumEndDuration( + _duration: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMinimumLifespan( + _duration: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setSBPS( + _bps: PromiseOrValue, + _user: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setSTBufferAmount( + _duration: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + toggleBPS( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawAsset( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawFeeBalance( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + addSuperToken( + _superToken: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + clearBPS( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + depositAsset( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getAssetTotal( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getAssetUser( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getBPSData( + _tag: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getBPSSize(overrides?: CallOverrides): Promise; + + getControlData( + _superToken: PromiseOrValue, + _nonce: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getFeeBalance( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getMinimumEndDuration( + overrides?: CallOverrides + ): Promise; + + getMinimumLifespan( + overrides?: CallOverrides + ): Promise; + + getNewBufferedAppBalance( + _superToken: PromiseOrValue, + _newFlowRate: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getNewControlNonce( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSBPS( + _user: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSTBufferDurationInSecond( + overrides?: CallOverrides + ): Promise; + + isBPSEnabled(overrides?: CallOverrides): Promise; + + isNewFlowRateAllowed( + _superToken: PromiseOrValue, + _newFlowRate: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isSuperTokensSupported( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + realizeFeeBalance( + count: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + removeSuperToken( + _superToken: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setBPS( + _bpss: PromiseOrValue[], + _flowRateLowerBounds: PromiseOrValue[], + _flowRateUpperBounds: PromiseOrValue[], + _tags: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMinimumEndDuration( + _duration: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMinimumLifespan( + _duration: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setSBPS( + _bps: PromiseOrValue, + _user: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setSTBufferAmount( + _duration: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + toggleBPS( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawAsset( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawFeeBalance( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/contracts/typechain-types/contracts/facets/core/Flow.ts b/contracts/typechain-types/contracts/facets/core/Flow.ts new file mode 100644 index 0000000..630f1cd --- /dev/null +++ b/contracts/typechain-types/contracts/facets/core/Flow.ts @@ -0,0 +1,631 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../common"; + +export interface FlowInterface extends utils.Interface { + functions: { + "closeFlow(address,uint256)": FunctionFragment; + "decreaseFlow(address,address,address,uint256,int96)": FunctionFragment; + "depositSuperToken(address,uint256)": FunctionFragment; + "getAmountFlowed(address,address)": FunctionFragment; + "getDepositTotal(address)": FunctionFragment; + "getDepositUser(address,address)": FunctionFragment; + "getFlowData(address,address,uint256)": FunctionFragment; + "getNewFlowNonce(address,address)": FunctionFragment; + "getValidSafeLifespan(address,address,int96)": FunctionFragment; + "hasActiveFlow(address,address)": FunctionFragment; + "isViewSessionAllowed(address,address)": FunctionFragment; + "openFlow(address,address,uint256)": FunctionFragment; + "withdrawSuperToken(address,uint256)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "closeFlow" + | "decreaseFlow" + | "depositSuperToken" + | "getAmountFlowed" + | "getDepositTotal" + | "getDepositUser" + | "getFlowData" + | "getNewFlowNonce" + | "getValidSafeLifespan" + | "hasActiveFlow" + | "isViewSessionAllowed" + | "openFlow" + | "withdrawSuperToken" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "closeFlow", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "decreaseFlow", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "depositSuperToken", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getAmountFlowed", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getDepositTotal", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getDepositUser", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getFlowData", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "getNewFlowNonce", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getValidSafeLifespan", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "hasActiveFlow", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "isViewSessionAllowed", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "openFlow", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "withdrawSuperToken", + values: [PromiseOrValue, PromiseOrValue] + ): string; + + decodeFunctionResult(functionFragment: "closeFlow", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "decreaseFlow", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "depositSuperToken", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getAmountFlowed", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getDepositTotal", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getDepositUser", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getFlowData", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getNewFlowNonce", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getValidSafeLifespan", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "hasActiveFlow", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "isViewSessionAllowed", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "openFlow", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "withdrawSuperToken", + data: BytesLike + ): Result; + + events: {}; +} + +export interface Flow extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: FlowInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + closeFlow( + _superToken: PromiseOrValue, + _nonce: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + decreaseFlow( + _superToken: PromiseOrValue, + _sender: PromiseOrValue, + _receiver: PromiseOrValue, + _nonce: PromiseOrValue, + _flowRate: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + depositSuperToken( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getAmountFlowed( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + getDepositTotal( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + getDepositUser( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + getFlowData( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + _nonce: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string, BigNumber, BigNumber, BigNumber, string, boolean]>; + + getNewFlowNonce( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + getValidSafeLifespan( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + _flowRate: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + hasActiveFlow( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + isViewSessionAllowed( + _viewer: PromiseOrValue, + _broadcaster: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + openFlow( + _receiver: PromiseOrValue, + _superToken: PromiseOrValue, + _lifespan: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawSuperToken( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + closeFlow( + _superToken: PromiseOrValue, + _nonce: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + decreaseFlow( + _superToken: PromiseOrValue, + _sender: PromiseOrValue, + _receiver: PromiseOrValue, + _nonce: PromiseOrValue, + _flowRate: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + depositSuperToken( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getAmountFlowed( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getDepositTotal( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getDepositUser( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getFlowData( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + _nonce: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string, BigNumber, BigNumber, BigNumber, string, boolean]>; + + getNewFlowNonce( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getValidSafeLifespan( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + _flowRate: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hasActiveFlow( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isViewSessionAllowed( + _viewer: PromiseOrValue, + _broadcaster: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + openFlow( + _receiver: PromiseOrValue, + _superToken: PromiseOrValue, + _lifespan: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawSuperToken( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + closeFlow( + _superToken: PromiseOrValue, + _nonce: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + decreaseFlow( + _superToken: PromiseOrValue, + _sender: PromiseOrValue, + _receiver: PromiseOrValue, + _nonce: PromiseOrValue, + _flowRate: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + depositSuperToken( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getAmountFlowed( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getDepositTotal( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getDepositUser( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getFlowData( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + _nonce: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string, BigNumber, BigNumber, BigNumber, string, boolean]>; + + getNewFlowNonce( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getValidSafeLifespan( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + _flowRate: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hasActiveFlow( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isViewSessionAllowed( + _viewer: PromiseOrValue, + _broadcaster: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + openFlow( + _receiver: PromiseOrValue, + _superToken: PromiseOrValue, + _lifespan: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + withdrawSuperToken( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + closeFlow( + _superToken: PromiseOrValue, + _nonce: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + decreaseFlow( + _superToken: PromiseOrValue, + _sender: PromiseOrValue, + _receiver: PromiseOrValue, + _nonce: PromiseOrValue, + _flowRate: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + depositSuperToken( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getAmountFlowed( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getDepositTotal( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getDepositUser( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getFlowData( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + _nonce: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getNewFlowNonce( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getValidSafeLifespan( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + _flowRate: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hasActiveFlow( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isViewSessionAllowed( + _viewer: PromiseOrValue, + _broadcaster: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + openFlow( + _receiver: PromiseOrValue, + _superToken: PromiseOrValue, + _lifespan: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawSuperToken( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + closeFlow( + _superToken: PromiseOrValue, + _nonce: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + decreaseFlow( + _superToken: PromiseOrValue, + _sender: PromiseOrValue, + _receiver: PromiseOrValue, + _nonce: PromiseOrValue, + _flowRate: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + depositSuperToken( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getAmountFlowed( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getDepositTotal( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getDepositUser( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getFlowData( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + _nonce: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getNewFlowNonce( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getValidSafeLifespan( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + _flowRate: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hasActiveFlow( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isViewSessionAllowed( + _viewer: PromiseOrValue, + _broadcaster: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + openFlow( + _receiver: PromiseOrValue, + _superToken: PromiseOrValue, + _lifespan: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawSuperToken( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/contracts/typechain-types/contracts/facets/core/Session.ts b/contracts/typechain-types/contracts/facets/core/Session.ts new file mode 100644 index 0000000..3bd0f02 --- /dev/null +++ b/contracts/typechain-types/contracts/facets/core/Session.ts @@ -0,0 +1,366 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../common"; + +export interface SessionInterface extends utils.Interface { + functions: { + "getCurrentSessionData(address)": FunctionFragment; + "getNewSessionNonce(address,address)": FunctionFragment; + "getSessionData(address,address,uint256)": FunctionFragment; + "startSession(address,uint96,uint256)": FunctionFragment; + "startSessions(address[],uint96[],uint256[])": FunctionFragment; + "stopSession(address)": FunctionFragment; + "stopSessions(address[])": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "getCurrentSessionData" + | "getNewSessionNonce" + | "getSessionData" + | "startSession" + | "startSessions" + | "stopSession" + | "stopSessions" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "getCurrentSessionData", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getNewSessionNonce", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getSessionData", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "startSession", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "startSessions", + values: [ + PromiseOrValue[], + PromiseOrValue[], + PromiseOrValue[] + ] + ): string; + encodeFunctionData( + functionFragment: "stopSession", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "stopSessions", + values: [PromiseOrValue[]] + ): string; + + decodeFunctionResult( + functionFragment: "getCurrentSessionData", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getNewSessionNonce", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getSessionData", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "startSession", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "startSessions", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "stopSession", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "stopSessions", + data: BytesLike + ): Result; + + events: {}; +} + +export interface Session extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: SessionInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + getCurrentSessionData( + _user: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber, string[]]>; + + getNewSessionNonce( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + getSessionData( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + _nonce: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber, BigNumber, BigNumber, BigNumber]>; + + startSession( + _superToken: PromiseOrValue, + _flowRate: PromiseOrValue, + _tag: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + startSessions( + _superTokens: PromiseOrValue[], + _flowRates: PromiseOrValue[], + _tags: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + stopSession( + _superToken: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + stopSessions( + _superTokens: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + getCurrentSessionData( + _user: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber, string[]]>; + + getNewSessionNonce( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSessionData( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + _nonce: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber, BigNumber, BigNumber, BigNumber]>; + + startSession( + _superToken: PromiseOrValue, + _flowRate: PromiseOrValue, + _tag: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + startSessions( + _superTokens: PromiseOrValue[], + _flowRates: PromiseOrValue[], + _tags: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + stopSession( + _superToken: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + stopSessions( + _superTokens: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + getCurrentSessionData( + _user: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber, string[]]>; + + getNewSessionNonce( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSessionData( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + _nonce: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber, BigNumber, BigNumber, BigNumber]>; + + startSession( + _superToken: PromiseOrValue, + _flowRate: PromiseOrValue, + _tag: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + startSessions( + _superTokens: PromiseOrValue[], + _flowRates: PromiseOrValue[], + _tags: PromiseOrValue[], + overrides?: CallOverrides + ): Promise; + + stopSession( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + stopSessions( + _superTokens: PromiseOrValue[], + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + getCurrentSessionData( + _user: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getNewSessionNonce( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSessionData( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + _nonce: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + startSession( + _superToken: PromiseOrValue, + _flowRate: PromiseOrValue, + _tag: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + startSessions( + _superTokens: PromiseOrValue[], + _flowRates: PromiseOrValue[], + _tags: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + stopSession( + _superToken: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + stopSessions( + _superTokens: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + getCurrentSessionData( + _user: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getNewSessionNonce( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSessionData( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + _nonce: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + startSession( + _superToken: PromiseOrValue, + _flowRate: PromiseOrValue, + _tag: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + startSessions( + _superTokens: PromiseOrValue[], + _flowRates: PromiseOrValue[], + _tags: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + stopSession( + _superToken: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + stopSessions( + _superTokens: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/contracts/typechain-types/contracts/facets/core/index.ts b/contracts/typechain-types/contracts/facets/core/index.ts new file mode 100644 index 0000000..12e9886 --- /dev/null +++ b/contracts/typechain-types/contracts/facets/core/index.ts @@ -0,0 +1,7 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { Automate } from "./Automate"; +export type { Control } from "./Control"; +export type { Flow } from "./Flow"; +export type { Session } from "./Session"; diff --git a/contracts/typechain-types/contracts/facets/index.ts b/contracts/typechain-types/contracts/facets/index.ts new file mode 100644 index 0000000..dc28949 --- /dev/null +++ b/contracts/typechain-types/contracts/facets/index.ts @@ -0,0 +1,7 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type * as core from "./core"; +export type { core }; +import type * as utils from "./utils"; +export type { utils }; diff --git a/contracts/typechain-types/contracts/facets/utils/AccessControl.ts b/contracts/typechain-types/contracts/facets/utils/AccessControl.ts new file mode 100644 index 0000000..2ff30b5 --- /dev/null +++ b/contracts/typechain-types/contracts/facets/utils/AccessControl.ts @@ -0,0 +1,390 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../common"; + +export interface AccessControlInterface extends utils.Interface { + functions: { + "getDefaultAdminRole()": FunctionFragment; + "getRole(string)": FunctionFragment; + "getRoleAdmin(bytes32)": FunctionFragment; + "grantRole(bytes32,address)": FunctionFragment; + "hasRole(bytes32,address)": FunctionFragment; + "renounceRole(bytes32)": FunctionFragment; + "revokeRole(bytes32,address)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "getDefaultAdminRole" + | "getRole" + | "getRoleAdmin" + | "grantRole" + | "hasRole" + | "renounceRole" + | "revokeRole" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "getDefaultAdminRole", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getRole", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getRoleAdmin", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "grantRole", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "hasRole", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "renounceRole", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "revokeRole", + values: [PromiseOrValue, PromiseOrValue] + ): string; + + decodeFunctionResult( + functionFragment: "getDefaultAdminRole", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "getRole", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getRoleAdmin", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "grantRole", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "hasRole", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "renounceRole", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "revokeRole", data: BytesLike): Result; + + events: { + "RoleAdminChanged(bytes32,bytes32,bytes32)": EventFragment; + "RoleGranted(bytes32,address,address)": EventFragment; + "RoleRevoked(bytes32,address,address)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "RoleAdminChanged"): EventFragment; + getEvent(nameOrSignatureOrTopic: "RoleGranted"): EventFragment; + getEvent(nameOrSignatureOrTopic: "RoleRevoked"): EventFragment; +} + +export interface RoleAdminChangedEventObject { + role: string; + previousAdminRole: string; + newAdminRole: string; +} +export type RoleAdminChangedEvent = TypedEvent< + [string, string, string], + RoleAdminChangedEventObject +>; + +export type RoleAdminChangedEventFilter = + TypedEventFilter; + +export interface RoleGrantedEventObject { + role: string; + account: string; + sender: string; +} +export type RoleGrantedEvent = TypedEvent< + [string, string, string], + RoleGrantedEventObject +>; + +export type RoleGrantedEventFilter = TypedEventFilter; + +export interface RoleRevokedEventObject { + role: string; + account: string; + sender: string; +} +export type RoleRevokedEvent = TypedEvent< + [string, string, string], + RoleRevokedEventObject +>; + +export type RoleRevokedEventFilter = TypedEventFilter; + +export interface AccessControl extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: AccessControlInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + getDefaultAdminRole(overrides?: CallOverrides): Promise<[string]>; + + getRole( + _role: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + getRoleAdmin( + _role: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + grantRole( + _role: PromiseOrValue, + _account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + hasRole( + _role: PromiseOrValue, + _account: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + renounceRole( + _role: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + revokeRole( + _role: PromiseOrValue, + _account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + getDefaultAdminRole(overrides?: CallOverrides): Promise; + + getRole( + _role: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getRoleAdmin( + _role: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + grantRole( + _role: PromiseOrValue, + _account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + hasRole( + _role: PromiseOrValue, + _account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + renounceRole( + _role: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + revokeRole( + _role: PromiseOrValue, + _account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + getDefaultAdminRole(overrides?: CallOverrides): Promise; + + getRole( + _role: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getRoleAdmin( + _role: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + grantRole( + _role: PromiseOrValue, + _account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hasRole( + _role: PromiseOrValue, + _account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + renounceRole( + _role: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + revokeRole( + _role: PromiseOrValue, + _account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "RoleAdminChanged(bytes32,bytes32,bytes32)"( + role?: PromiseOrValue | null, + previousAdminRole?: PromiseOrValue | null, + newAdminRole?: PromiseOrValue | null + ): RoleAdminChangedEventFilter; + RoleAdminChanged( + role?: PromiseOrValue | null, + previousAdminRole?: PromiseOrValue | null, + newAdminRole?: PromiseOrValue | null + ): RoleAdminChangedEventFilter; + + "RoleGranted(bytes32,address,address)"( + role?: PromiseOrValue | null, + account?: PromiseOrValue | null, + sender?: PromiseOrValue | null + ): RoleGrantedEventFilter; + RoleGranted( + role?: PromiseOrValue | null, + account?: PromiseOrValue | null, + sender?: PromiseOrValue | null + ): RoleGrantedEventFilter; + + "RoleRevoked(bytes32,address,address)"( + role?: PromiseOrValue | null, + account?: PromiseOrValue | null, + sender?: PromiseOrValue | null + ): RoleRevokedEventFilter; + RoleRevoked( + role?: PromiseOrValue | null, + account?: PromiseOrValue | null, + sender?: PromiseOrValue | null + ): RoleRevokedEventFilter; + }; + + estimateGas: { + getDefaultAdminRole(overrides?: CallOverrides): Promise; + + getRole( + _role: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getRoleAdmin( + _role: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + grantRole( + _role: PromiseOrValue, + _account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + hasRole( + _role: PromiseOrValue, + _account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + renounceRole( + _role: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + revokeRole( + _role: PromiseOrValue, + _account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + getDefaultAdminRole( + overrides?: CallOverrides + ): Promise; + + getRole( + _role: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getRoleAdmin( + _role: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + grantRole( + _role: PromiseOrValue, + _account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + hasRole( + _role: PromiseOrValue, + _account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + renounceRole( + _role: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + revokeRole( + _role: PromiseOrValue, + _account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/contracts/typechain-types/contracts/facets/utils/Cut.ts b/contracts/typechain-types/contracts/facets/utils/Cut.ts new file mode 100644 index 0000000..4973834 --- /dev/null +++ b/contracts/typechain-types/contracts/facets/utils/Cut.ts @@ -0,0 +1,162 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../common"; + +export declare namespace ICut { + export type FacetCutStruct = { + facetAddress: PromiseOrValue; + action: PromiseOrValue; + functionSelectors: PromiseOrValue[]; + }; + + export type FacetCutStructOutput = [string, number, string[]] & { + facetAddress: string; + action: number; + functionSelectors: string[]; + }; +} + +export interface CutInterface extends utils.Interface { + functions: { + "diamondCut((address,uint8,bytes4[])[],address,bytes)": FunctionFragment; + }; + + getFunction(nameOrSignatureOrTopic: "diamondCut"): FunctionFragment; + + encodeFunctionData( + functionFragment: "diamondCut", + values: [ + ICut.FacetCutStruct[], + PromiseOrValue, + PromiseOrValue + ] + ): string; + + decodeFunctionResult(functionFragment: "diamondCut", data: BytesLike): Result; + + events: { + "DiamondCut(tuple[],address,bytes)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "DiamondCut"): EventFragment; +} + +export interface DiamondCutEventObject { + _diamondCut: ICut.FacetCutStructOutput[]; + _init: string; + _calldata: string; +} +export type DiamondCutEvent = TypedEvent< + [ICut.FacetCutStructOutput[], string, string], + DiamondCutEventObject +>; + +export type DiamondCutEventFilter = TypedEventFilter; + +export interface Cut extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: CutInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + diamondCut( + _diamondCut: ICut.FacetCutStruct[], + _init: PromiseOrValue, + _calldata: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + diamondCut( + _diamondCut: ICut.FacetCutStruct[], + _init: PromiseOrValue, + _calldata: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + diamondCut( + _diamondCut: ICut.FacetCutStruct[], + _init: PromiseOrValue, + _calldata: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "DiamondCut(tuple[],address,bytes)"( + _diamondCut?: null, + _init?: null, + _calldata?: null + ): DiamondCutEventFilter; + DiamondCut( + _diamondCut?: null, + _init?: null, + _calldata?: null + ): DiamondCutEventFilter; + }; + + estimateGas: { + diamondCut( + _diamondCut: ICut.FacetCutStruct[], + _init: PromiseOrValue, + _calldata: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + diamondCut( + _diamondCut: ICut.FacetCutStruct[], + _init: PromiseOrValue, + _calldata: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/contracts/typechain-types/contracts/facets/utils/Loupe.ts b/contracts/typechain-types/contracts/facets/utils/Loupe.ts new file mode 100644 index 0000000..211324c --- /dev/null +++ b/contracts/typechain-types/contracts/facets/utils/Loupe.ts @@ -0,0 +1,228 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BytesLike, + CallOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../common"; + +export declare namespace ILoupe { + export type FacetStruct = { + facetAddress: PromiseOrValue; + functionSelectors: PromiseOrValue[]; + }; + + export type FacetStructOutput = [string, string[]] & { + facetAddress: string; + functionSelectors: string[]; + }; +} + +export interface LoupeInterface extends utils.Interface { + functions: { + "facetAddress(bytes4)": FunctionFragment; + "facetAddresses()": FunctionFragment; + "facetFunctionSelectors(address)": FunctionFragment; + "facets()": FunctionFragment; + "supportsInterface(bytes4)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "facetAddress" + | "facetAddresses" + | "facetFunctionSelectors" + | "facets" + | "supportsInterface" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "facetAddress", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "facetAddresses", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "facetFunctionSelectors", + values: [PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "facets", values?: undefined): string; + encodeFunctionData( + functionFragment: "supportsInterface", + values: [PromiseOrValue] + ): string; + + decodeFunctionResult( + functionFragment: "facetAddress", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "facetAddresses", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "facetFunctionSelectors", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "facets", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "supportsInterface", + data: BytesLike + ): Result; + + events: {}; +} + +export interface Loupe extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: LoupeInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + facetAddress( + _functionSelector: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string] & { facetAddress_: string }>; + + facetAddresses( + overrides?: CallOverrides + ): Promise<[string[]] & { facetAddresses_: string[] }>; + + facetFunctionSelectors( + _facet: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string[]] & { facetFunctionSelectors_: string[] }>; + + facets( + overrides?: CallOverrides + ): Promise< + [ILoupe.FacetStructOutput[]] & { facets_: ILoupe.FacetStructOutput[] } + >; + + supportsInterface( + _interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + }; + + facetAddress( + _functionSelector: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + facetAddresses(overrides?: CallOverrides): Promise; + + facetFunctionSelectors( + _facet: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + facets(overrides?: CallOverrides): Promise; + + supportsInterface( + _interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + callStatic: { + facetAddress( + _functionSelector: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + facetAddresses(overrides?: CallOverrides): Promise; + + facetFunctionSelectors( + _facet: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + facets(overrides?: CallOverrides): Promise; + + supportsInterface( + _interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + facetAddress( + _functionSelector: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + facetAddresses(overrides?: CallOverrides): Promise; + + facetFunctionSelectors( + _facet: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + facets(overrides?: CallOverrides): Promise; + + supportsInterface( + _interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + populateTransaction: { + facetAddress( + _functionSelector: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + facetAddresses(overrides?: CallOverrides): Promise; + + facetFunctionSelectors( + _facet: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + facets(overrides?: CallOverrides): Promise; + + supportsInterface( + _interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; +} diff --git a/contracts/typechain-types/contracts/facets/utils/Utility.ts b/contracts/typechain-types/contracts/facets/utils/Utility.ts new file mode 100644 index 0000000..4988d35 --- /dev/null +++ b/contracts/typechain-types/contracts/facets/utils/Utility.ts @@ -0,0 +1,127 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../common"; + +export interface UtilityInterface extends utils.Interface { + functions: { + "getNativeBalance()": FunctionFragment; + "withdrawNativeBalance(uint256)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: "getNativeBalance" | "withdrawNativeBalance" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "getNativeBalance", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "withdrawNativeBalance", + values: [PromiseOrValue] + ): string; + + decodeFunctionResult( + functionFragment: "getNativeBalance", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "withdrawNativeBalance", + data: BytesLike + ): Result; + + events: {}; +} + +export interface Utility extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: UtilityInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + getNativeBalance(overrides?: CallOverrides): Promise<[BigNumber]>; + + withdrawNativeBalance( + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + getNativeBalance(overrides?: CallOverrides): Promise; + + withdrawNativeBalance( + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + getNativeBalance(overrides?: CallOverrides): Promise; + + withdrawNativeBalance( + _amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + getNativeBalance(overrides?: CallOverrides): Promise; + + withdrawNativeBalance( + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + getNativeBalance(overrides?: CallOverrides): Promise; + + withdrawNativeBalance( + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/contracts/typechain-types/contracts/facets/utils/index.ts b/contracts/typechain-types/contracts/facets/utils/index.ts new file mode 100644 index 0000000..7f163ff --- /dev/null +++ b/contracts/typechain-types/contracts/facets/utils/index.ts @@ -0,0 +1,7 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { AccessControl } from "./AccessControl"; +export type { Cut } from "./Cut"; +export type { Loupe } from "./Loupe"; +export type { Utility } from "./Utility"; diff --git a/contracts/typechain-types/contracts/index.ts b/contracts/typechain-types/contracts/index.ts new file mode 100644 index 0000000..5b1d063 --- /dev/null +++ b/contracts/typechain-types/contracts/index.ts @@ -0,0 +1,16 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type * as facets from "./facets"; +export type { facets }; +import type * as interfaces from "./interfaces"; +export type { interfaces }; +import type * as libraries from "./libraries"; +export type { libraries }; +import type * as services from "./services"; +export type { services }; +import type * as tests from "./tests"; +export type { tests }; +import type * as upgrades from "./upgrades"; +export type { upgrades }; +export type { Diamond } from "./Diamond"; diff --git a/contracts/typechain-types/contracts/interfaces/core/IAutomate.ts b/contracts/typechain-types/contracts/interfaces/core/IAutomate.ts new file mode 100644 index 0000000..8a00dac --- /dev/null +++ b/contracts/typechain-types/contracts/interfaces/core/IAutomate.ts @@ -0,0 +1,258 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PayableOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../common"; + +export interface IAutomateInterface extends utils.Interface { + functions: { + "depositGelatoFunds()": FunctionFragment; + "getGelatoAddresses()": FunctionFragment; + "getMinimumAppGelatoBalance()": FunctionFragment; + "setGelatoContracts(address)": FunctionFragment; + "setMinimumAppGelatoBalance(uint256)": FunctionFragment; + "withdrawGelatoFunds(uint256)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "depositGelatoFunds" + | "getGelatoAddresses" + | "getMinimumAppGelatoBalance" + | "setGelatoContracts" + | "setMinimumAppGelatoBalance" + | "withdrawGelatoFunds" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "depositGelatoFunds", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getGelatoAddresses", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getMinimumAppGelatoBalance", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "setGelatoContracts", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setMinimumAppGelatoBalance", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "withdrawGelatoFunds", + values: [PromiseOrValue] + ): string; + + decodeFunctionResult( + functionFragment: "depositGelatoFunds", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getGelatoAddresses", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getMinimumAppGelatoBalance", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setGelatoContracts", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setMinimumAppGelatoBalance", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "withdrawGelatoFunds", + data: BytesLike + ): Result; + + events: {}; +} + +export interface IAutomate extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: IAutomateInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + depositGelatoFunds( + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + getGelatoAddresses( + overrides?: CallOverrides + ): Promise<[string, string, string, string, string]>; + + getMinimumAppGelatoBalance(overrides?: CallOverrides): Promise<[BigNumber]>; + + setGelatoContracts( + _ops: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMinimumAppGelatoBalance( + _value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawGelatoFunds( + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + depositGelatoFunds( + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + getGelatoAddresses( + overrides?: CallOverrides + ): Promise<[string, string, string, string, string]>; + + getMinimumAppGelatoBalance(overrides?: CallOverrides): Promise; + + setGelatoContracts( + _ops: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMinimumAppGelatoBalance( + _value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawGelatoFunds( + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + depositGelatoFunds(overrides?: CallOverrides): Promise; + + getGelatoAddresses( + overrides?: CallOverrides + ): Promise<[string, string, string, string, string]>; + + getMinimumAppGelatoBalance(overrides?: CallOverrides): Promise; + + setGelatoContracts( + _ops: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setMinimumAppGelatoBalance( + _value: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + withdrawGelatoFunds( + _amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + depositGelatoFunds( + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + getGelatoAddresses(overrides?: CallOverrides): Promise; + + getMinimumAppGelatoBalance(overrides?: CallOverrides): Promise; + + setGelatoContracts( + _ops: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMinimumAppGelatoBalance( + _value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawGelatoFunds( + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + depositGelatoFunds( + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + getGelatoAddresses( + overrides?: CallOverrides + ): Promise; + + getMinimumAppGelatoBalance( + overrides?: CallOverrides + ): Promise; + + setGelatoContracts( + _ops: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMinimumAppGelatoBalance( + _value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawGelatoFunds( + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/contracts/typechain-types/contracts/interfaces/core/IControl.ts b/contracts/typechain-types/contracts/interfaces/core/IControl.ts new file mode 100644 index 0000000..f659f29 --- /dev/null +++ b/contracts/typechain-types/contracts/interfaces/core/IControl.ts @@ -0,0 +1,1011 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../common"; + +export interface IControlInterface extends utils.Interface { + functions: { + "addSuperToken(address)": FunctionFragment; + "clearBPS()": FunctionFragment; + "depositAsset(address,uint256)": FunctionFragment; + "getAssetTotal(address)": FunctionFragment; + "getAssetUser(address,address)": FunctionFragment; + "getBPSData(uint256)": FunctionFragment; + "getBPSSize()": FunctionFragment; + "getControlData(address,uint256)": FunctionFragment; + "getFeeBalance(address)": FunctionFragment; + "getMinimumEndDuration()": FunctionFragment; + "getMinimumLifespan()": FunctionFragment; + "getNewBufferedAppBalance(address,int96)": FunctionFragment; + "getNewControlNonce(address)": FunctionFragment; + "getSBPS(address)": FunctionFragment; + "getSTBufferDurationInSecond()": FunctionFragment; + "isBPSEnabled()": FunctionFragment; + "isNewFlowRateAllowed(address,int96)": FunctionFragment; + "isSuperTokensSupported(address)": FunctionFragment; + "realizeFeeBalance(uint256,address)": FunctionFragment; + "removeSuperToken(address)": FunctionFragment; + "setBPS(uint16[],uint96[],uint96[],uint256[])": FunctionFragment; + "setMinimumEndDuration(uint256)": FunctionFragment; + "setMinimumLifespan(uint256)": FunctionFragment; + "setSBPS(uint16,address)": FunctionFragment; + "setSTBufferAmount(uint256)": FunctionFragment; + "toggleBPS()": FunctionFragment; + "withdrawAsset(address,uint256)": FunctionFragment; + "withdrawFeeBalance(address,uint256)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "addSuperToken" + | "clearBPS" + | "depositAsset" + | "getAssetTotal" + | "getAssetUser" + | "getBPSData" + | "getBPSSize" + | "getControlData" + | "getFeeBalance" + | "getMinimumEndDuration" + | "getMinimumLifespan" + | "getNewBufferedAppBalance" + | "getNewControlNonce" + | "getSBPS" + | "getSTBufferDurationInSecond" + | "isBPSEnabled" + | "isNewFlowRateAllowed" + | "isSuperTokensSupported" + | "realizeFeeBalance" + | "removeSuperToken" + | "setBPS" + | "setMinimumEndDuration" + | "setMinimumLifespan" + | "setSBPS" + | "setSTBufferAmount" + | "toggleBPS" + | "withdrawAsset" + | "withdrawFeeBalance" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "addSuperToken", + values: [PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "clearBPS", values?: undefined): string; + encodeFunctionData( + functionFragment: "depositAsset", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getAssetTotal", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getAssetUser", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getBPSData", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getBPSSize", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getControlData", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getFeeBalance", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getMinimumEndDuration", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getMinimumLifespan", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getNewBufferedAppBalance", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getNewControlNonce", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getSBPS", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getSTBufferDurationInSecond", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "isBPSEnabled", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "isNewFlowRateAllowed", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "isSuperTokensSupported", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "realizeFeeBalance", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "removeSuperToken", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setBPS", + values: [ + PromiseOrValue[], + PromiseOrValue[], + PromiseOrValue[], + PromiseOrValue[] + ] + ): string; + encodeFunctionData( + functionFragment: "setMinimumEndDuration", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setMinimumLifespan", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setSBPS", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setSTBufferAmount", + values: [PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "toggleBPS", values?: undefined): string; + encodeFunctionData( + functionFragment: "withdrawAsset", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "withdrawFeeBalance", + values: [PromiseOrValue, PromiseOrValue] + ): string; + + decodeFunctionResult( + functionFragment: "addSuperToken", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "clearBPS", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "depositAsset", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getAssetTotal", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getAssetUser", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "getBPSData", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "getBPSSize", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getControlData", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getFeeBalance", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getMinimumEndDuration", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getMinimumLifespan", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getNewBufferedAppBalance", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getNewControlNonce", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "getSBPS", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getSTBufferDurationInSecond", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "isBPSEnabled", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "isNewFlowRateAllowed", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "isSuperTokensSupported", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "realizeFeeBalance", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "removeSuperToken", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "setBPS", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "setMinimumEndDuration", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setMinimumLifespan", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "setSBPS", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "setSTBufferAmount", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "toggleBPS", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "withdrawAsset", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "withdrawFeeBalance", + data: BytesLike + ): Result; + + events: {}; +} + +export interface IControl extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: IControlInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + addSuperToken( + _superToken: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + clearBPS( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + depositAsset( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getAssetTotal( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + getAssetUser( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + getBPSData( + _tag: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[number, BigNumber, BigNumber]>; + + getBPSSize(overrides?: CallOverrides): Promise<[BigNumber]>; + + getControlData( + _superToken: PromiseOrValue, + _nonce: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string, BigNumber, BigNumber, BigNumber]>; + + getFeeBalance( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + getMinimumEndDuration(overrides?: CallOverrides): Promise<[BigNumber]>; + + getMinimumLifespan(overrides?: CallOverrides): Promise<[BigNumber]>; + + getNewBufferedAppBalance( + _superToken: PromiseOrValue, + _newFlowRate: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + getNewControlNonce( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + getSBPS( + _user: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[number]>; + + getSTBufferDurationInSecond( + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + isBPSEnabled(overrides?: CallOverrides): Promise<[boolean]>; + + isNewFlowRateAllowed( + _superToken: PromiseOrValue, + _newFlowRate: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + isSuperTokensSupported( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + realizeFeeBalance( + count: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + removeSuperToken( + _superToken: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setBPS( + _bpss: PromiseOrValue[], + _flowRateLowerBounds: PromiseOrValue[], + _flowRateUpperBounds: PromiseOrValue[], + _tags: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMinimumEndDuration( + _duration: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMinimumLifespan( + _duration: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setSBPS( + _bps: PromiseOrValue, + _user: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setSTBufferAmount( + _duration: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + toggleBPS( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawAsset( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawFeeBalance( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + addSuperToken( + _superToken: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + clearBPS( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + depositAsset( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getAssetTotal( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getAssetUser( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getBPSData( + _tag: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[number, BigNumber, BigNumber]>; + + getBPSSize(overrides?: CallOverrides): Promise; + + getControlData( + _superToken: PromiseOrValue, + _nonce: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string, BigNumber, BigNumber, BigNumber]>; + + getFeeBalance( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getMinimumEndDuration(overrides?: CallOverrides): Promise; + + getMinimumLifespan(overrides?: CallOverrides): Promise; + + getNewBufferedAppBalance( + _superToken: PromiseOrValue, + _newFlowRate: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getNewControlNonce( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSBPS( + _user: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSTBufferDurationInSecond(overrides?: CallOverrides): Promise; + + isBPSEnabled(overrides?: CallOverrides): Promise; + + isNewFlowRateAllowed( + _superToken: PromiseOrValue, + _newFlowRate: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isSuperTokensSupported( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + realizeFeeBalance( + count: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + removeSuperToken( + _superToken: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setBPS( + _bpss: PromiseOrValue[], + _flowRateLowerBounds: PromiseOrValue[], + _flowRateUpperBounds: PromiseOrValue[], + _tags: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMinimumEndDuration( + _duration: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMinimumLifespan( + _duration: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setSBPS( + _bps: PromiseOrValue, + _user: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setSTBufferAmount( + _duration: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + toggleBPS( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawAsset( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawFeeBalance( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + addSuperToken( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + clearBPS(overrides?: CallOverrides): Promise; + + depositAsset( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getAssetTotal( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getAssetUser( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getBPSData( + _tag: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[number, BigNumber, BigNumber]>; + + getBPSSize(overrides?: CallOverrides): Promise; + + getControlData( + _superToken: PromiseOrValue, + _nonce: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string, BigNumber, BigNumber, BigNumber]>; + + getFeeBalance( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getMinimumEndDuration(overrides?: CallOverrides): Promise; + + getMinimumLifespan(overrides?: CallOverrides): Promise; + + getNewBufferedAppBalance( + _superToken: PromiseOrValue, + _newFlowRate: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getNewControlNonce( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSBPS( + _user: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSTBufferDurationInSecond(overrides?: CallOverrides): Promise; + + isBPSEnabled(overrides?: CallOverrides): Promise; + + isNewFlowRateAllowed( + _superToken: PromiseOrValue, + _newFlowRate: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isSuperTokensSupported( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + realizeFeeBalance( + count: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + removeSuperToken( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setBPS( + _bpss: PromiseOrValue[], + _flowRateLowerBounds: PromiseOrValue[], + _flowRateUpperBounds: PromiseOrValue[], + _tags: PromiseOrValue[], + overrides?: CallOverrides + ): Promise; + + setMinimumEndDuration( + _duration: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setMinimumLifespan( + _duration: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setSBPS( + _bps: PromiseOrValue, + _user: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setSTBufferAmount( + _duration: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + toggleBPS(overrides?: CallOverrides): Promise; + + withdrawAsset( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + withdrawFeeBalance( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + addSuperToken( + _superToken: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + clearBPS( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + depositAsset( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getAssetTotal( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getAssetUser( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getBPSData( + _tag: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getBPSSize(overrides?: CallOverrides): Promise; + + getControlData( + _superToken: PromiseOrValue, + _nonce: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getFeeBalance( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getMinimumEndDuration(overrides?: CallOverrides): Promise; + + getMinimumLifespan(overrides?: CallOverrides): Promise; + + getNewBufferedAppBalance( + _superToken: PromiseOrValue, + _newFlowRate: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getNewControlNonce( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSBPS( + _user: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSTBufferDurationInSecond(overrides?: CallOverrides): Promise; + + isBPSEnabled(overrides?: CallOverrides): Promise; + + isNewFlowRateAllowed( + _superToken: PromiseOrValue, + _newFlowRate: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isSuperTokensSupported( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + realizeFeeBalance( + count: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + removeSuperToken( + _superToken: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setBPS( + _bpss: PromiseOrValue[], + _flowRateLowerBounds: PromiseOrValue[], + _flowRateUpperBounds: PromiseOrValue[], + _tags: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMinimumEndDuration( + _duration: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMinimumLifespan( + _duration: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setSBPS( + _bps: PromiseOrValue, + _user: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setSTBufferAmount( + _duration: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + toggleBPS( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawAsset( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawFeeBalance( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + addSuperToken( + _superToken: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + clearBPS( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + depositAsset( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getAssetTotal( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getAssetUser( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getBPSData( + _tag: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getBPSSize(overrides?: CallOverrides): Promise; + + getControlData( + _superToken: PromiseOrValue, + _nonce: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getFeeBalance( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getMinimumEndDuration( + overrides?: CallOverrides + ): Promise; + + getMinimumLifespan( + overrides?: CallOverrides + ): Promise; + + getNewBufferedAppBalance( + _superToken: PromiseOrValue, + _newFlowRate: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getNewControlNonce( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSBPS( + _user: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSTBufferDurationInSecond( + overrides?: CallOverrides + ): Promise; + + isBPSEnabled(overrides?: CallOverrides): Promise; + + isNewFlowRateAllowed( + _superToken: PromiseOrValue, + _newFlowRate: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isSuperTokensSupported( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + realizeFeeBalance( + count: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + removeSuperToken( + _superToken: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setBPS( + _bpss: PromiseOrValue[], + _flowRateLowerBounds: PromiseOrValue[], + _flowRateUpperBounds: PromiseOrValue[], + _tags: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMinimumEndDuration( + _duration: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMinimumLifespan( + _duration: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setSBPS( + _bps: PromiseOrValue, + _user: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setSTBufferAmount( + _duration: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + toggleBPS( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawAsset( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawFeeBalance( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/contracts/typechain-types/contracts/interfaces/core/IFlow.ts b/contracts/typechain-types/contracts/interfaces/core/IFlow.ts new file mode 100644 index 0000000..c4f397c --- /dev/null +++ b/contracts/typechain-types/contracts/interfaces/core/IFlow.ts @@ -0,0 +1,631 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../common"; + +export interface IFlowInterface extends utils.Interface { + functions: { + "closeFlow(address,uint256)": FunctionFragment; + "decreaseFlow(address,address,address,uint256,int96)": FunctionFragment; + "depositSuperToken(address,uint256)": FunctionFragment; + "getAmountFlowed(address,address)": FunctionFragment; + "getDepositTotal(address)": FunctionFragment; + "getDepositUser(address,address)": FunctionFragment; + "getFlowData(address,address,uint256)": FunctionFragment; + "getNewFlowNonce(address,address)": FunctionFragment; + "getValidSafeLifespan(address,address,int96)": FunctionFragment; + "hasActiveFlow(address,address)": FunctionFragment; + "isViewSessionAllowed(address,address)": FunctionFragment; + "openFlow(address,address,uint256)": FunctionFragment; + "withdrawSuperToken(address,uint256)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "closeFlow" + | "decreaseFlow" + | "depositSuperToken" + | "getAmountFlowed" + | "getDepositTotal" + | "getDepositUser" + | "getFlowData" + | "getNewFlowNonce" + | "getValidSafeLifespan" + | "hasActiveFlow" + | "isViewSessionAllowed" + | "openFlow" + | "withdrawSuperToken" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "closeFlow", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "decreaseFlow", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "depositSuperToken", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getAmountFlowed", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getDepositTotal", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getDepositUser", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getFlowData", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "getNewFlowNonce", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getValidSafeLifespan", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "hasActiveFlow", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "isViewSessionAllowed", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "openFlow", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "withdrawSuperToken", + values: [PromiseOrValue, PromiseOrValue] + ): string; + + decodeFunctionResult(functionFragment: "closeFlow", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "decreaseFlow", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "depositSuperToken", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getAmountFlowed", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getDepositTotal", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getDepositUser", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getFlowData", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getNewFlowNonce", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getValidSafeLifespan", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "hasActiveFlow", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "isViewSessionAllowed", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "openFlow", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "withdrawSuperToken", + data: BytesLike + ): Result; + + events: {}; +} + +export interface IFlow extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: IFlowInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + closeFlow( + _superToken: PromiseOrValue, + _nonce: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + decreaseFlow( + _superToken: PromiseOrValue, + _sender: PromiseOrValue, + _receiver: PromiseOrValue, + _nonce: PromiseOrValue, + _flowRate: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + depositSuperToken( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getAmountFlowed( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + getDepositTotal( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + getDepositUser( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + getFlowData( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + _nonce: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string, BigNumber, BigNumber, BigNumber, string, boolean]>; + + getNewFlowNonce( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + getValidSafeLifespan( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + _flowRate: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + hasActiveFlow( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + isViewSessionAllowed( + _viewer: PromiseOrValue, + _broadcaster: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + openFlow( + _receiver: PromiseOrValue, + _superToken: PromiseOrValue, + _lifespan: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawSuperToken( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + closeFlow( + _superToken: PromiseOrValue, + _nonce: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + decreaseFlow( + _superToken: PromiseOrValue, + _sender: PromiseOrValue, + _receiver: PromiseOrValue, + _nonce: PromiseOrValue, + _flowRate: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + depositSuperToken( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getAmountFlowed( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getDepositTotal( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getDepositUser( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getFlowData( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + _nonce: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string, BigNumber, BigNumber, BigNumber, string, boolean]>; + + getNewFlowNonce( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getValidSafeLifespan( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + _flowRate: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hasActiveFlow( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isViewSessionAllowed( + _viewer: PromiseOrValue, + _broadcaster: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + openFlow( + _receiver: PromiseOrValue, + _superToken: PromiseOrValue, + _lifespan: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawSuperToken( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + closeFlow( + _superToken: PromiseOrValue, + _nonce: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + decreaseFlow( + _superToken: PromiseOrValue, + _sender: PromiseOrValue, + _receiver: PromiseOrValue, + _nonce: PromiseOrValue, + _flowRate: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + depositSuperToken( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getAmountFlowed( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getDepositTotal( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getDepositUser( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getFlowData( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + _nonce: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string, BigNumber, BigNumber, BigNumber, string, boolean]>; + + getNewFlowNonce( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getValidSafeLifespan( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + _flowRate: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hasActiveFlow( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isViewSessionAllowed( + _viewer: PromiseOrValue, + _broadcaster: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + openFlow( + _receiver: PromiseOrValue, + _superToken: PromiseOrValue, + _lifespan: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + withdrawSuperToken( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + closeFlow( + _superToken: PromiseOrValue, + _nonce: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + decreaseFlow( + _superToken: PromiseOrValue, + _sender: PromiseOrValue, + _receiver: PromiseOrValue, + _nonce: PromiseOrValue, + _flowRate: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + depositSuperToken( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getAmountFlowed( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getDepositTotal( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getDepositUser( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getFlowData( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + _nonce: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getNewFlowNonce( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getValidSafeLifespan( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + _flowRate: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hasActiveFlow( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isViewSessionAllowed( + _viewer: PromiseOrValue, + _broadcaster: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + openFlow( + _receiver: PromiseOrValue, + _superToken: PromiseOrValue, + _lifespan: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawSuperToken( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + closeFlow( + _superToken: PromiseOrValue, + _nonce: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + decreaseFlow( + _superToken: PromiseOrValue, + _sender: PromiseOrValue, + _receiver: PromiseOrValue, + _nonce: PromiseOrValue, + _flowRate: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + depositSuperToken( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getAmountFlowed( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getDepositTotal( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getDepositUser( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getFlowData( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + _nonce: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getNewFlowNonce( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getValidSafeLifespan( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + _flowRate: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hasActiveFlow( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isViewSessionAllowed( + _viewer: PromiseOrValue, + _broadcaster: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + openFlow( + _receiver: PromiseOrValue, + _superToken: PromiseOrValue, + _lifespan: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawSuperToken( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/contracts/typechain-types/contracts/interfaces/core/IFlowSetup.ts b/contracts/typechain-types/contracts/interfaces/core/IFlowSetup.ts new file mode 100644 index 0000000..1d8d2a6 --- /dev/null +++ b/contracts/typechain-types/contracts/interfaces/core/IFlowSetup.ts @@ -0,0 +1,457 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../common"; + +export interface IFlowSetupInterface extends utils.Interface { + functions: { + "addSuperToken(address)": FunctionFragment; + "getMaxFlowDurationPerUnitFlowAmount()": FunctionFragment; + "getMinimumDepositAmount()": FunctionFragment; + "getMinimumFlowAmount()": FunctionFragment; + "getSTBufferDurationInSecond()": FunctionFragment; + "isSuperTokensSupported(address)": FunctionFragment; + "removeSuperToken(address)": FunctionFragment; + "setMaxFlowDurationPerUnitFlowAmount(uint96)": FunctionFragment; + "setMinimumDepositAmount(uint96)": FunctionFragment; + "setMinimumFlowAmount(uint96)": FunctionFragment; + "setSTBufferAmount(uint256)": FunctionFragment; + "withdrawSuperToken(address,uint256)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "addSuperToken" + | "getMaxFlowDurationPerUnitFlowAmount" + | "getMinimumDepositAmount" + | "getMinimumFlowAmount" + | "getSTBufferDurationInSecond" + | "isSuperTokensSupported" + | "removeSuperToken" + | "setMaxFlowDurationPerUnitFlowAmount" + | "setMinimumDepositAmount" + | "setMinimumFlowAmount" + | "setSTBufferAmount" + | "withdrawSuperToken" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "addSuperToken", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getMaxFlowDurationPerUnitFlowAmount", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getMinimumDepositAmount", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getMinimumFlowAmount", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getSTBufferDurationInSecond", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "isSuperTokensSupported", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "removeSuperToken", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setMaxFlowDurationPerUnitFlowAmount", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setMinimumDepositAmount", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setMinimumFlowAmount", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setSTBufferAmount", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "withdrawSuperToken", + values: [PromiseOrValue, PromiseOrValue] + ): string; + + decodeFunctionResult( + functionFragment: "addSuperToken", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getMaxFlowDurationPerUnitFlowAmount", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getMinimumDepositAmount", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getMinimumFlowAmount", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getSTBufferDurationInSecond", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "isSuperTokensSupported", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "removeSuperToken", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setMaxFlowDurationPerUnitFlowAmount", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setMinimumDepositAmount", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setMinimumFlowAmount", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setSTBufferAmount", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "withdrawSuperToken", + data: BytesLike + ): Result; + + events: {}; +} + +export interface IFlowSetup extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: IFlowSetupInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + addSuperToken( + _superToken: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getMaxFlowDurationPerUnitFlowAmount( + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + getMinimumDepositAmount(overrides?: CallOverrides): Promise<[BigNumber]>; + + getMinimumFlowAmount(overrides?: CallOverrides): Promise<[BigNumber]>; + + getSTBufferDurationInSecond( + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + isSuperTokensSupported( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + removeSuperToken( + _superToken: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMaxFlowDurationPerUnitFlowAmount( + _duration: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMinimumDepositAmount( + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMinimumFlowAmount( + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setSTBufferAmount( + _duration: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawSuperToken( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + addSuperToken( + _superToken: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getMaxFlowDurationPerUnitFlowAmount( + overrides?: CallOverrides + ): Promise; + + getMinimumDepositAmount(overrides?: CallOverrides): Promise; + + getMinimumFlowAmount(overrides?: CallOverrides): Promise; + + getSTBufferDurationInSecond(overrides?: CallOverrides): Promise; + + isSuperTokensSupported( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + removeSuperToken( + _superToken: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMaxFlowDurationPerUnitFlowAmount( + _duration: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMinimumDepositAmount( + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMinimumFlowAmount( + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setSTBufferAmount( + _duration: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawSuperToken( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + addSuperToken( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getMaxFlowDurationPerUnitFlowAmount( + overrides?: CallOverrides + ): Promise; + + getMinimumDepositAmount(overrides?: CallOverrides): Promise; + + getMinimumFlowAmount(overrides?: CallOverrides): Promise; + + getSTBufferDurationInSecond(overrides?: CallOverrides): Promise; + + isSuperTokensSupported( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + removeSuperToken( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setMaxFlowDurationPerUnitFlowAmount( + _duration: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setMinimumDepositAmount( + _amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setMinimumFlowAmount( + _amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setSTBufferAmount( + _duration: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + withdrawSuperToken( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + addSuperToken( + _superToken: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getMaxFlowDurationPerUnitFlowAmount( + overrides?: CallOverrides + ): Promise; + + getMinimumDepositAmount(overrides?: CallOverrides): Promise; + + getMinimumFlowAmount(overrides?: CallOverrides): Promise; + + getSTBufferDurationInSecond(overrides?: CallOverrides): Promise; + + isSuperTokensSupported( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + removeSuperToken( + _superToken: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMaxFlowDurationPerUnitFlowAmount( + _duration: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMinimumDepositAmount( + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMinimumFlowAmount( + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setSTBufferAmount( + _duration: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawSuperToken( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + addSuperToken( + _superToken: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getMaxFlowDurationPerUnitFlowAmount( + overrides?: CallOverrides + ): Promise; + + getMinimumDepositAmount( + overrides?: CallOverrides + ): Promise; + + getMinimumFlowAmount( + overrides?: CallOverrides + ): Promise; + + getSTBufferDurationInSecond( + overrides?: CallOverrides + ): Promise; + + isSuperTokensSupported( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + removeSuperToken( + _superToken: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMaxFlowDurationPerUnitFlowAmount( + _duration: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMinimumDepositAmount( + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMinimumFlowAmount( + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setSTBufferAmount( + _duration: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdrawSuperToken( + _superToken: PromiseOrValue, + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/contracts/typechain-types/contracts/interfaces/core/ISession.ts b/contracts/typechain-types/contracts/interfaces/core/ISession.ts new file mode 100644 index 0000000..c61652e --- /dev/null +++ b/contracts/typechain-types/contracts/interfaces/core/ISession.ts @@ -0,0 +1,366 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../common"; + +export interface ISessionInterface extends utils.Interface { + functions: { + "getCurrentSessionData(address)": FunctionFragment; + "getNewSessionNonce(address,address)": FunctionFragment; + "getSessionData(address,address,uint256)": FunctionFragment; + "startSession(address,uint96,uint256)": FunctionFragment; + "startSessions(address[],uint96[],uint256[])": FunctionFragment; + "stopSession(address)": FunctionFragment; + "stopSessions(address[])": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "getCurrentSessionData" + | "getNewSessionNonce" + | "getSessionData" + | "startSession" + | "startSessions" + | "stopSession" + | "stopSessions" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "getCurrentSessionData", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getNewSessionNonce", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getSessionData", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "startSession", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "startSessions", + values: [ + PromiseOrValue[], + PromiseOrValue[], + PromiseOrValue[] + ] + ): string; + encodeFunctionData( + functionFragment: "stopSession", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "stopSessions", + values: [PromiseOrValue[]] + ): string; + + decodeFunctionResult( + functionFragment: "getCurrentSessionData", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getNewSessionNonce", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getSessionData", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "startSession", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "startSessions", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "stopSession", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "stopSessions", + data: BytesLike + ): Result; + + events: {}; +} + +export interface ISession extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: ISessionInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + getCurrentSessionData( + _user: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber, string[]]>; + + getNewSessionNonce( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + getSessionData( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + _nonce: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber, BigNumber, BigNumber, BigNumber]>; + + startSession( + _superToken: PromiseOrValue, + _flowRate: PromiseOrValue, + _tag: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + startSessions( + _superTokens: PromiseOrValue[], + _flowRates: PromiseOrValue[], + _tags: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + stopSession( + _superToken: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + stopSessions( + _superTokens: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + getCurrentSessionData( + _user: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber, string[]]>; + + getNewSessionNonce( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSessionData( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + _nonce: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber, BigNumber, BigNumber, BigNumber]>; + + startSession( + _superToken: PromiseOrValue, + _flowRate: PromiseOrValue, + _tag: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + startSessions( + _superTokens: PromiseOrValue[], + _flowRates: PromiseOrValue[], + _tags: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + stopSession( + _superToken: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + stopSessions( + _superTokens: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + getCurrentSessionData( + _user: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber, string[]]>; + + getNewSessionNonce( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSessionData( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + _nonce: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber, BigNumber, BigNumber, BigNumber]>; + + startSession( + _superToken: PromiseOrValue, + _flowRate: PromiseOrValue, + _tag: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + startSessions( + _superTokens: PromiseOrValue[], + _flowRates: PromiseOrValue[], + _tags: PromiseOrValue[], + overrides?: CallOverrides + ): Promise; + + stopSession( + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + stopSessions( + _superTokens: PromiseOrValue[], + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + getCurrentSessionData( + _user: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getNewSessionNonce( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSessionData( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + _nonce: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + startSession( + _superToken: PromiseOrValue, + _flowRate: PromiseOrValue, + _tag: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + startSessions( + _superTokens: PromiseOrValue[], + _flowRates: PromiseOrValue[], + _tags: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + stopSession( + _superToken: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + stopSessions( + _superTokens: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + getCurrentSessionData( + _user: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getNewSessionNonce( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSessionData( + _user: PromiseOrValue, + _superToken: PromiseOrValue, + _nonce: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + startSession( + _superToken: PromiseOrValue, + _flowRate: PromiseOrValue, + _tag: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + startSessions( + _superTokens: PromiseOrValue[], + _flowRates: PromiseOrValue[], + _tags: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + stopSession( + _superToken: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + stopSessions( + _superTokens: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/contracts/typechain-types/contracts/interfaces/core/index.ts b/contracts/typechain-types/contracts/interfaces/core/index.ts new file mode 100644 index 0000000..6258056 --- /dev/null +++ b/contracts/typechain-types/contracts/interfaces/core/index.ts @@ -0,0 +1,7 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { IAutomate } from "./IAutomate"; +export type { IControl } from "./IControl"; +export type { IFlow } from "./IFlow"; +export type { ISession } from "./ISession"; diff --git a/contracts/typechain-types/contracts/interfaces/index.ts b/contracts/typechain-types/contracts/interfaces/index.ts new file mode 100644 index 0000000..dc28949 --- /dev/null +++ b/contracts/typechain-types/contracts/interfaces/index.ts @@ -0,0 +1,7 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type * as core from "./core"; +export type { core }; +import type * as utils from "./utils"; +export type { utils }; diff --git a/contracts/typechain-types/contracts/interfaces/utils/IAccessControl.ts b/contracts/typechain-types/contracts/interfaces/utils/IAccessControl.ts new file mode 100644 index 0000000..fe76904 --- /dev/null +++ b/contracts/typechain-types/contracts/interfaces/utils/IAccessControl.ts @@ -0,0 +1,308 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../common"; + +export interface IAccessControlInterface extends utils.Interface { + functions: { + "getDefaultAdminRole()": FunctionFragment; + "getRole(string)": FunctionFragment; + "getRoleAdmin(bytes32)": FunctionFragment; + "grantRole(bytes32,address)": FunctionFragment; + "hasRole(bytes32,address)": FunctionFragment; + "renounceRole(bytes32)": FunctionFragment; + "revokeRole(bytes32,address)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "getDefaultAdminRole" + | "getRole" + | "getRoleAdmin" + | "grantRole" + | "hasRole" + | "renounceRole" + | "revokeRole" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "getDefaultAdminRole", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getRole", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getRoleAdmin", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "grantRole", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "hasRole", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "renounceRole", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "revokeRole", + values: [PromiseOrValue, PromiseOrValue] + ): string; + + decodeFunctionResult( + functionFragment: "getDefaultAdminRole", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "getRole", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getRoleAdmin", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "grantRole", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "hasRole", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "renounceRole", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "revokeRole", data: BytesLike): Result; + + events: {}; +} + +export interface IAccessControl extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: IAccessControlInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + getDefaultAdminRole(overrides?: CallOverrides): Promise<[string]>; + + getRole( + _role: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + getRoleAdmin( + _role: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + grantRole( + _role: PromiseOrValue, + _account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + hasRole( + _role: PromiseOrValue, + _account: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + renounceRole( + _role: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + revokeRole( + _role: PromiseOrValue, + _account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + getDefaultAdminRole(overrides?: CallOverrides): Promise; + + getRole( + _role: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getRoleAdmin( + _role: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + grantRole( + _role: PromiseOrValue, + _account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + hasRole( + _role: PromiseOrValue, + _account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + renounceRole( + _role: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + revokeRole( + _role: PromiseOrValue, + _account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + getDefaultAdminRole(overrides?: CallOverrides): Promise; + + getRole( + _role: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getRoleAdmin( + _role: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + grantRole( + _role: PromiseOrValue, + _account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hasRole( + _role: PromiseOrValue, + _account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + renounceRole( + _role: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + revokeRole( + _role: PromiseOrValue, + _account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + getDefaultAdminRole(overrides?: CallOverrides): Promise; + + getRole( + _role: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getRoleAdmin( + _role: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + grantRole( + _role: PromiseOrValue, + _account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + hasRole( + _role: PromiseOrValue, + _account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + renounceRole( + _role: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + revokeRole( + _role: PromiseOrValue, + _account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + getDefaultAdminRole( + overrides?: CallOverrides + ): Promise; + + getRole( + _role: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getRoleAdmin( + _role: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + grantRole( + _role: PromiseOrValue, + _account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + hasRole( + _role: PromiseOrValue, + _account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + renounceRole( + _role: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + revokeRole( + _role: PromiseOrValue, + _account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/contracts/typechain-types/contracts/interfaces/utils/ICut.ts b/contracts/typechain-types/contracts/interfaces/utils/ICut.ts new file mode 100644 index 0000000..e629d90 --- /dev/null +++ b/contracts/typechain-types/contracts/interfaces/utils/ICut.ts @@ -0,0 +1,162 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../common"; + +export declare namespace ICut { + export type FacetCutStruct = { + facetAddress: PromiseOrValue; + action: PromiseOrValue; + functionSelectors: PromiseOrValue[]; + }; + + export type FacetCutStructOutput = [string, number, string[]] & { + facetAddress: string; + action: number; + functionSelectors: string[]; + }; +} + +export interface ICutInterface extends utils.Interface { + functions: { + "diamondCut((address,uint8,bytes4[])[],address,bytes)": FunctionFragment; + }; + + getFunction(nameOrSignatureOrTopic: "diamondCut"): FunctionFragment; + + encodeFunctionData( + functionFragment: "diamondCut", + values: [ + ICut.FacetCutStruct[], + PromiseOrValue, + PromiseOrValue + ] + ): string; + + decodeFunctionResult(functionFragment: "diamondCut", data: BytesLike): Result; + + events: { + "DiamondCut(tuple[],address,bytes)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "DiamondCut"): EventFragment; +} + +export interface DiamondCutEventObject { + _diamondCut: ICut.FacetCutStructOutput[]; + _init: string; + _calldata: string; +} +export type DiamondCutEvent = TypedEvent< + [ICut.FacetCutStructOutput[], string, string], + DiamondCutEventObject +>; + +export type DiamondCutEventFilter = TypedEventFilter; + +export interface ICut extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: ICutInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + diamondCut( + _diamondCut: ICut.FacetCutStruct[], + _init: PromiseOrValue, + _calldata: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + diamondCut( + _diamondCut: ICut.FacetCutStruct[], + _init: PromiseOrValue, + _calldata: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + diamondCut( + _diamondCut: ICut.FacetCutStruct[], + _init: PromiseOrValue, + _calldata: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "DiamondCut(tuple[],address,bytes)"( + _diamondCut?: null, + _init?: null, + _calldata?: null + ): DiamondCutEventFilter; + DiamondCut( + _diamondCut?: null, + _init?: null, + _calldata?: null + ): DiamondCutEventFilter; + }; + + estimateGas: { + diamondCut( + _diamondCut: ICut.FacetCutStruct[], + _init: PromiseOrValue, + _calldata: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + diamondCut( + _diamondCut: ICut.FacetCutStruct[], + _init: PromiseOrValue, + _calldata: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/contracts/typechain-types/contracts/interfaces/utils/IERC165.ts b/contracts/typechain-types/contracts/interfaces/utils/IERC165.ts new file mode 100644 index 0000000..5478400 --- /dev/null +++ b/contracts/typechain-types/contracts/interfaces/utils/IERC165.ts @@ -0,0 +1,103 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BytesLike, + CallOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../common"; + +export interface IERC165Interface extends utils.Interface { + functions: { + "supportsInterface(bytes4)": FunctionFragment; + }; + + getFunction(nameOrSignatureOrTopic: "supportsInterface"): FunctionFragment; + + encodeFunctionData( + functionFragment: "supportsInterface", + values: [PromiseOrValue] + ): string; + + decodeFunctionResult( + functionFragment: "supportsInterface", + data: BytesLike + ): Result; + + events: {}; +} + +export interface IERC165 extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: IERC165Interface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + }; + + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + callStatic: { + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + populateTransaction: { + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; +} diff --git a/contracts/typechain-types/contracts/interfaces/utils/ILoupe.ts b/contracts/typechain-types/contracts/interfaces/utils/ILoupe.ts new file mode 100644 index 0000000..bf469a3 --- /dev/null +++ b/contracts/typechain-types/contracts/interfaces/utils/ILoupe.ts @@ -0,0 +1,193 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BytesLike, + CallOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../common"; + +export declare namespace ILoupe { + export type FacetStruct = { + facetAddress: PromiseOrValue; + functionSelectors: PromiseOrValue[]; + }; + + export type FacetStructOutput = [string, string[]] & { + facetAddress: string; + functionSelectors: string[]; + }; +} + +export interface ILoupeInterface extends utils.Interface { + functions: { + "facetAddress(bytes4)": FunctionFragment; + "facetAddresses()": FunctionFragment; + "facetFunctionSelectors(address)": FunctionFragment; + "facets()": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "facetAddress" + | "facetAddresses" + | "facetFunctionSelectors" + | "facets" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "facetAddress", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "facetAddresses", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "facetFunctionSelectors", + values: [PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "facets", values?: undefined): string; + + decodeFunctionResult( + functionFragment: "facetAddress", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "facetAddresses", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "facetFunctionSelectors", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "facets", data: BytesLike): Result; + + events: {}; +} + +export interface ILoupe extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: ILoupeInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + facetAddress( + _functionSelector: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string] & { facetAddress_: string }>; + + facetAddresses( + overrides?: CallOverrides + ): Promise<[string[]] & { facetAddresses_: string[] }>; + + facetFunctionSelectors( + _facet: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string[]] & { facetFunctionSelectors_: string[] }>; + + facets( + overrides?: CallOverrides + ): Promise< + [ILoupe.FacetStructOutput[]] & { facets_: ILoupe.FacetStructOutput[] } + >; + }; + + facetAddress( + _functionSelector: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + facetAddresses(overrides?: CallOverrides): Promise; + + facetFunctionSelectors( + _facet: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + facets(overrides?: CallOverrides): Promise; + + callStatic: { + facetAddress( + _functionSelector: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + facetAddresses(overrides?: CallOverrides): Promise; + + facetFunctionSelectors( + _facet: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + facets(overrides?: CallOverrides): Promise; + }; + + filters: {}; + + estimateGas: { + facetAddress( + _functionSelector: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + facetAddresses(overrides?: CallOverrides): Promise; + + facetFunctionSelectors( + _facet: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + facets(overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + facetAddress( + _functionSelector: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + facetAddresses(overrides?: CallOverrides): Promise; + + facetFunctionSelectors( + _facet: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + facets(overrides?: CallOverrides): Promise; + }; +} diff --git a/contracts/typechain-types/contracts/interfaces/utils/IUtility.ts b/contracts/typechain-types/contracts/interfaces/utils/IUtility.ts new file mode 100644 index 0000000..7fc8c23 --- /dev/null +++ b/contracts/typechain-types/contracts/interfaces/utils/IUtility.ts @@ -0,0 +1,127 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../common"; + +export interface IUtilityInterface extends utils.Interface { + functions: { + "getNativeBalance()": FunctionFragment; + "withdrawNativeBalance(uint256)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: "getNativeBalance" | "withdrawNativeBalance" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "getNativeBalance", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "withdrawNativeBalance", + values: [PromiseOrValue] + ): string; + + decodeFunctionResult( + functionFragment: "getNativeBalance", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "withdrawNativeBalance", + data: BytesLike + ): Result; + + events: {}; +} + +export interface IUtility extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: IUtilityInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + getNativeBalance(overrides?: CallOverrides): Promise<[BigNumber]>; + + withdrawNativeBalance( + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + getNativeBalance(overrides?: CallOverrides): Promise; + + withdrawNativeBalance( + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + getNativeBalance(overrides?: CallOverrides): Promise; + + withdrawNativeBalance( + _amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + getNativeBalance(overrides?: CallOverrides): Promise; + + withdrawNativeBalance( + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + getNativeBalance(overrides?: CallOverrides): Promise; + + withdrawNativeBalance( + _amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/contracts/typechain-types/contracts/interfaces/utils/index.ts b/contracts/typechain-types/contracts/interfaces/utils/index.ts new file mode 100644 index 0000000..1d3b2da --- /dev/null +++ b/contracts/typechain-types/contracts/interfaces/utils/index.ts @@ -0,0 +1,8 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { IAccessControl } from "./IAccessControl"; +export type { ICut } from "./ICut"; +export type { IERC165 } from "./IERC165"; +export type { ILoupe } from "./ILoupe"; +export type { IUtility } from "./IUtility"; diff --git a/contracts/typechain-types/contracts/libraries/core/LibAutomate.ts b/contracts/typechain-types/contracts/libraries/core/LibAutomate.ts new file mode 100644 index 0000000..ac6bda7 --- /dev/null +++ b/contracts/typechain-types/contracts/libraries/core/LibAutomate.ts @@ -0,0 +1,108 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BytesLike, + CallOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../common"; + +export interface LibAutomateInterface extends utils.Interface { + functions: { + "AUTOBOT_PROXY_FACTORY()": FunctionFragment; + "GELATO_FEE()": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: "AUTOBOT_PROXY_FACTORY" | "GELATO_FEE" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "AUTOBOT_PROXY_FACTORY", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "GELATO_FEE", + values?: undefined + ): string; + + decodeFunctionResult( + functionFragment: "AUTOBOT_PROXY_FACTORY", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "GELATO_FEE", data: BytesLike): Result; + + events: {}; +} + +export interface LibAutomate extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: LibAutomateInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + AUTOBOT_PROXY_FACTORY(overrides?: CallOverrides): Promise<[string]>; + + GELATO_FEE(overrides?: CallOverrides): Promise<[string]>; + }; + + AUTOBOT_PROXY_FACTORY(overrides?: CallOverrides): Promise; + + GELATO_FEE(overrides?: CallOverrides): Promise; + + callStatic: { + AUTOBOT_PROXY_FACTORY(overrides?: CallOverrides): Promise; + + GELATO_FEE(overrides?: CallOverrides): Promise; + }; + + filters: {}; + + estimateGas: { + AUTOBOT_PROXY_FACTORY(overrides?: CallOverrides): Promise; + + GELATO_FEE(overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + AUTOBOT_PROXY_FACTORY( + overrides?: CallOverrides + ): Promise; + + GELATO_FEE(overrides?: CallOverrides): Promise; + }; +} diff --git a/contracts/typechain-types/contracts/libraries/core/index.ts b/contracts/typechain-types/contracts/libraries/core/index.ts new file mode 100644 index 0000000..58a3ad1 --- /dev/null +++ b/contracts/typechain-types/contracts/libraries/core/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { LibAutomate } from "./LibAutomate"; diff --git a/contracts/typechain-types/contracts/libraries/index.ts b/contracts/typechain-types/contracts/libraries/index.ts new file mode 100644 index 0000000..74cdc5f --- /dev/null +++ b/contracts/typechain-types/contracts/libraries/index.ts @@ -0,0 +1,5 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type * as utils from "./utils"; +export type { utils }; diff --git a/contracts/typechain-types/contracts/libraries/utils/LibAccessControl.ts b/contracts/typechain-types/contracts/libraries/utils/LibAccessControl.ts new file mode 100644 index 0000000..8bd6509 --- /dev/null +++ b/contracts/typechain-types/contracts/libraries/utils/LibAccessControl.ts @@ -0,0 +1,134 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { BaseContract, BytesLike, Signer, utils } from "ethers"; +import type { EventFragment } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../common"; + +export interface LibAccessControlInterface extends utils.Interface { + functions: {}; + + events: { + "RoleAdminChanged(bytes32,bytes32,bytes32)": EventFragment; + "RoleGranted(bytes32,address,address)": EventFragment; + "RoleRevoked(bytes32,address,address)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "RoleAdminChanged"): EventFragment; + getEvent(nameOrSignatureOrTopic: "RoleGranted"): EventFragment; + getEvent(nameOrSignatureOrTopic: "RoleRevoked"): EventFragment; +} + +export interface RoleAdminChangedEventObject { + role: string; + previousAdminRole: string; + newAdminRole: string; +} +export type RoleAdminChangedEvent = TypedEvent< + [string, string, string], + RoleAdminChangedEventObject +>; + +export type RoleAdminChangedEventFilter = + TypedEventFilter; + +export interface RoleGrantedEventObject { + role: string; + account: string; + sender: string; +} +export type RoleGrantedEvent = TypedEvent< + [string, string, string], + RoleGrantedEventObject +>; + +export type RoleGrantedEventFilter = TypedEventFilter; + +export interface RoleRevokedEventObject { + role: string; + account: string; + sender: string; +} +export type RoleRevokedEvent = TypedEvent< + [string, string, string], + RoleRevokedEventObject +>; + +export type RoleRevokedEventFilter = TypedEventFilter; + +export interface LibAccessControl extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: LibAccessControlInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: {}; + + callStatic: {}; + + filters: { + "RoleAdminChanged(bytes32,bytes32,bytes32)"( + role?: PromiseOrValue | null, + previousAdminRole?: PromiseOrValue | null, + newAdminRole?: PromiseOrValue | null + ): RoleAdminChangedEventFilter; + RoleAdminChanged( + role?: PromiseOrValue | null, + previousAdminRole?: PromiseOrValue | null, + newAdminRole?: PromiseOrValue | null + ): RoleAdminChangedEventFilter; + + "RoleGranted(bytes32,address,address)"( + role?: PromiseOrValue | null, + account?: PromiseOrValue | null, + sender?: PromiseOrValue | null + ): RoleGrantedEventFilter; + RoleGranted( + role?: PromiseOrValue | null, + account?: PromiseOrValue | null, + sender?: PromiseOrValue | null + ): RoleGrantedEventFilter; + + "RoleRevoked(bytes32,address,address)"( + role?: PromiseOrValue | null, + account?: PromiseOrValue | null, + sender?: PromiseOrValue | null + ): RoleRevokedEventFilter; + RoleRevoked( + role?: PromiseOrValue | null, + account?: PromiseOrValue | null, + sender?: PromiseOrValue | null + ): RoleRevokedEventFilter; + }; + + estimateGas: {}; + + populateTransaction: {}; +} diff --git a/contracts/typechain-types/contracts/libraries/utils/LibDiamond.ts b/contracts/typechain-types/contracts/libraries/utils/LibDiamond.ts new file mode 100644 index 0000000..c4a516f --- /dev/null +++ b/contracts/typechain-types/contracts/libraries/utils/LibDiamond.ts @@ -0,0 +1,103 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumberish, + BytesLike, + Signer, + utils, +} from "ethers"; +import type { EventFragment } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../common"; + +export declare namespace ICut { + export type FacetCutStruct = { + facetAddress: PromiseOrValue; + action: PromiseOrValue; + functionSelectors: PromiseOrValue[]; + }; + + export type FacetCutStructOutput = [string, number, string[]] & { + facetAddress: string; + action: number; + functionSelectors: string[]; + }; +} + +export interface LibDiamondInterface extends utils.Interface { + functions: {}; + + events: { + "DiamondCut(tuple[],address,bytes)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "DiamondCut"): EventFragment; +} + +export interface DiamondCutEventObject { + _diamondCut: ICut.FacetCutStructOutput[]; + _init: string; + _calldata: string; +} +export type DiamondCutEvent = TypedEvent< + [ICut.FacetCutStructOutput[], string, string], + DiamondCutEventObject +>; + +export type DiamondCutEventFilter = TypedEventFilter; + +export interface LibDiamond extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: LibDiamondInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: {}; + + callStatic: {}; + + filters: { + "DiamondCut(tuple[],address,bytes)"( + _diamondCut?: null, + _init?: null, + _calldata?: null + ): DiamondCutEventFilter; + DiamondCut( + _diamondCut?: null, + _init?: null, + _calldata?: null + ): DiamondCutEventFilter; + }; + + estimateGas: {}; + + populateTransaction: {}; +} diff --git a/contracts/typechain-types/contracts/libraries/utils/index.ts b/contracts/typechain-types/contracts/libraries/utils/index.ts new file mode 100644 index 0000000..e711930 --- /dev/null +++ b/contracts/typechain-types/contracts/libraries/utils/index.ts @@ -0,0 +1,5 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { LibAccessControl } from "./LibAccessControl"; +export type { LibDiamond } from "./LibDiamond"; diff --git a/contracts/typechain-types/contracts/services/gelato/Types.sol/IAutomate.ts b/contracts/typechain-types/contracts/services/gelato/Types.sol/IAutomate.ts new file mode 100644 index 0000000..39089a7 --- /dev/null +++ b/contracts/typechain-types/contracts/services/gelato/Types.sol/IAutomate.ts @@ -0,0 +1,222 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../../common"; + +export type ModuleDataStruct = { + modules: PromiseOrValue[]; + args: PromiseOrValue[]; +}; + +export type ModuleDataStructOutput = [number[], string[]] & { + modules: number[]; + args: string[]; +}; + +export interface IAutomateInterface extends utils.Interface { + functions: { + "cancelTask(bytes32)": FunctionFragment; + "createTask(address,bytes,(uint8[],bytes[]),address)": FunctionFragment; + "gelato()": FunctionFragment; + "getFeeDetails()": FunctionFragment; + "taskTreasury()": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "cancelTask" + | "createTask" + | "gelato" + | "getFeeDetails" + | "taskTreasury" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "cancelTask", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "createTask", + values: [ + PromiseOrValue, + PromiseOrValue, + ModuleDataStruct, + PromiseOrValue + ] + ): string; + encodeFunctionData(functionFragment: "gelato", values?: undefined): string; + encodeFunctionData( + functionFragment: "getFeeDetails", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "taskTreasury", + values?: undefined + ): string; + + decodeFunctionResult(functionFragment: "cancelTask", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "createTask", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "gelato", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getFeeDetails", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "taskTreasury", + data: BytesLike + ): Result; + + events: {}; +} + +export interface IAutomate extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: IAutomateInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + cancelTask( + taskId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + createTask( + execAddress: PromiseOrValue, + execDataOrSelector: PromiseOrValue, + moduleData: ModuleDataStruct, + feeToken: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + gelato(overrides?: CallOverrides): Promise<[string]>; + + getFeeDetails(overrides?: CallOverrides): Promise<[BigNumber, string]>; + + taskTreasury(overrides?: CallOverrides): Promise<[string]>; + }; + + cancelTask( + taskId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + createTask( + execAddress: PromiseOrValue, + execDataOrSelector: PromiseOrValue, + moduleData: ModuleDataStruct, + feeToken: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + gelato(overrides?: CallOverrides): Promise; + + getFeeDetails(overrides?: CallOverrides): Promise<[BigNumber, string]>; + + taskTreasury(overrides?: CallOverrides): Promise; + + callStatic: { + cancelTask( + taskId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + createTask( + execAddress: PromiseOrValue, + execDataOrSelector: PromiseOrValue, + moduleData: ModuleDataStruct, + feeToken: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + gelato(overrides?: CallOverrides): Promise; + + getFeeDetails(overrides?: CallOverrides): Promise<[BigNumber, string]>; + + taskTreasury(overrides?: CallOverrides): Promise; + }; + + filters: {}; + + estimateGas: { + cancelTask( + taskId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + createTask( + execAddress: PromiseOrValue, + execDataOrSelector: PromiseOrValue, + moduleData: ModuleDataStruct, + feeToken: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + gelato(overrides?: CallOverrides): Promise; + + getFeeDetails(overrides?: CallOverrides): Promise; + + taskTreasury(overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + cancelTask( + taskId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + createTask( + execAddress: PromiseOrValue, + execDataOrSelector: PromiseOrValue, + moduleData: ModuleDataStruct, + feeToken: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + gelato(overrides?: CallOverrides): Promise; + + getFeeDetails(overrides?: CallOverrides): Promise; + + taskTreasury(overrides?: CallOverrides): Promise; + }; +} diff --git a/contracts/typechain-types/contracts/services/gelato/Types.sol/IOpsProxyFactory.ts b/contracts/typechain-types/contracts/services/gelato/Types.sol/IOpsProxyFactory.ts new file mode 100644 index 0000000..cac8d54 --- /dev/null +++ b/contracts/typechain-types/contracts/services/gelato/Types.sol/IOpsProxyFactory.ts @@ -0,0 +1,100 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BytesLike, + CallOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../../common"; + +export interface IOpsProxyFactoryInterface extends utils.Interface { + functions: { + "getProxyOf(address)": FunctionFragment; + }; + + getFunction(nameOrSignatureOrTopic: "getProxyOf"): FunctionFragment; + + encodeFunctionData( + functionFragment: "getProxyOf", + values: [PromiseOrValue] + ): string; + + decodeFunctionResult(functionFragment: "getProxyOf", data: BytesLike): Result; + + events: {}; +} + +export interface IOpsProxyFactory extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: IOpsProxyFactoryInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + getProxyOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string, boolean]>; + }; + + getProxyOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string, boolean]>; + + callStatic: { + getProxyOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string, boolean]>; + }; + + filters: {}; + + estimateGas: { + getProxyOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + populateTransaction: { + getProxyOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; +} diff --git a/contracts/typechain-types/contracts/services/gelato/Types.sol/ITaskTreasuryUpgradable.ts b/contracts/typechain-types/contracts/services/gelato/Types.sol/ITaskTreasuryUpgradable.ts new file mode 100644 index 0000000..8c60dbb --- /dev/null +++ b/contracts/typechain-types/contracts/services/gelato/Types.sol/ITaskTreasuryUpgradable.ts @@ -0,0 +1,213 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PayableOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../../common"; + +export interface ITaskTreasuryUpgradableInterface extends utils.Interface { + functions: { + "depositFunds(address,address,uint256)": FunctionFragment; + "userTokenBalance(address,address)": FunctionFragment; + "withdrawFunds(address,address,uint256)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "depositFunds" + | "userTokenBalance" + | "withdrawFunds" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "depositFunds", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "userTokenBalance", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "withdrawFunds", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + + decodeFunctionResult( + functionFragment: "depositFunds", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "userTokenBalance", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "withdrawFunds", + data: BytesLike + ): Result; + + events: {}; +} + +export interface ITaskTreasuryUpgradable extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: ITaskTreasuryUpgradableInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + depositFunds( + receiver: PromiseOrValue, + token: PromiseOrValue, + amount: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + userTokenBalance( + _user: PromiseOrValue, + _token: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + withdrawFunds( + receiver: PromiseOrValue, + token: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + depositFunds( + receiver: PromiseOrValue, + token: PromiseOrValue, + amount: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + userTokenBalance( + _user: PromiseOrValue, + _token: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + withdrawFunds( + receiver: PromiseOrValue, + token: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + depositFunds( + receiver: PromiseOrValue, + token: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + userTokenBalance( + _user: PromiseOrValue, + _token: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + withdrawFunds( + receiver: PromiseOrValue, + token: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + depositFunds( + receiver: PromiseOrValue, + token: PromiseOrValue, + amount: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + userTokenBalance( + _user: PromiseOrValue, + _token: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + withdrawFunds( + receiver: PromiseOrValue, + token: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + depositFunds( + receiver: PromiseOrValue, + token: PromiseOrValue, + amount: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + userTokenBalance( + _user: PromiseOrValue, + _token: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + withdrawFunds( + receiver: PromiseOrValue, + token: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/contracts/typechain-types/contracts/services/gelato/Types.sol/index.ts b/contracts/typechain-types/contracts/services/gelato/Types.sol/index.ts new file mode 100644 index 0000000..8b57250 --- /dev/null +++ b/contracts/typechain-types/contracts/services/gelato/Types.sol/index.ts @@ -0,0 +1,6 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { IAutomate } from "./IAutomate"; +export type { IOpsProxyFactory } from "./IOpsProxyFactory"; +export type { ITaskTreasuryUpgradable } from "./ITaskTreasuryUpgradable"; diff --git a/contracts/typechain-types/contracts/services/gelato/index.ts b/contracts/typechain-types/contracts/services/gelato/index.ts new file mode 100644 index 0000000..1397d99 --- /dev/null +++ b/contracts/typechain-types/contracts/services/gelato/index.ts @@ -0,0 +1,5 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type * as typesSol from "./Types.sol"; +export type { typesSol }; diff --git a/contracts/typechain-types/contracts/services/index.ts b/contracts/typechain-types/contracts/services/index.ts new file mode 100644 index 0000000..e29a9d3 --- /dev/null +++ b/contracts/typechain-types/contracts/services/index.ts @@ -0,0 +1,5 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type * as gelato from "./gelato"; +export type { gelato }; diff --git a/contracts/typechain-types/contracts/tests/InitTest.ts b/contracts/typechain-types/contracts/tests/InitTest.ts new file mode 100644 index 0000000..ca573d1 --- /dev/null +++ b/contracts/typechain-types/contracts/tests/InitTest.ts @@ -0,0 +1,103 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../common"; + +export interface InitTestInterface extends utils.Interface { + functions: { + "init(uint256)": FunctionFragment; + }; + + getFunction(nameOrSignatureOrTopic: "init"): FunctionFragment; + + encodeFunctionData( + functionFragment: "init", + values: [PromiseOrValue] + ): string; + + decodeFunctionResult(functionFragment: "init", data: BytesLike): Result; + + events: {}; +} + +export interface InitTest extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: InitTestInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + init( + _value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + init( + _value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + init( + _value: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + init( + _value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + init( + _value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/contracts/typechain-types/contracts/tests/Test1Facet.ts b/contracts/typechain-types/contracts/tests/Test1Facet.ts new file mode 100644 index 0000000..a810476 --- /dev/null +++ b/contracts/typechain-types/contracts/tests/Test1Facet.ts @@ -0,0 +1,659 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../common"; + +export interface Test1FacetInterface extends utils.Interface { + functions: { + "supportsInterface(bytes4)": FunctionFragment; + "test1Func1()": FunctionFragment; + "test1Func10()": FunctionFragment; + "test1Func11()": FunctionFragment; + "test1Func12()": FunctionFragment; + "test1Func13()": FunctionFragment; + "test1Func14()": FunctionFragment; + "test1Func15()": FunctionFragment; + "test1Func16()": FunctionFragment; + "test1Func17()": FunctionFragment; + "test1Func18()": FunctionFragment; + "test1Func19()": FunctionFragment; + "test1Func2()": FunctionFragment; + "test1Func20()": FunctionFragment; + "test1Func3()": FunctionFragment; + "test1Func4()": FunctionFragment; + "test1Func5()": FunctionFragment; + "test1Func6()": FunctionFragment; + "test1Func7()": FunctionFragment; + "test1Func8()": FunctionFragment; + "test1Func9()": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "supportsInterface" + | "test1Func1" + | "test1Func10" + | "test1Func11" + | "test1Func12" + | "test1Func13" + | "test1Func14" + | "test1Func15" + | "test1Func16" + | "test1Func17" + | "test1Func18" + | "test1Func19" + | "test1Func2" + | "test1Func20" + | "test1Func3" + | "test1Func4" + | "test1Func5" + | "test1Func6" + | "test1Func7" + | "test1Func8" + | "test1Func9" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "supportsInterface", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "test1Func1", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "test1Func10", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "test1Func11", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "test1Func12", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "test1Func13", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "test1Func14", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "test1Func15", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "test1Func16", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "test1Func17", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "test1Func18", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "test1Func19", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "test1Func2", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "test1Func20", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "test1Func3", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "test1Func4", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "test1Func5", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "test1Func6", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "test1Func7", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "test1Func8", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "test1Func9", + values?: undefined + ): string; + + decodeFunctionResult( + functionFragment: "supportsInterface", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "test1Func1", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "test1Func10", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "test1Func11", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "test1Func12", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "test1Func13", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "test1Func14", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "test1Func15", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "test1Func16", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "test1Func17", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "test1Func18", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "test1Func19", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "test1Func2", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "test1Func20", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "test1Func3", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "test1Func4", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "test1Func5", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "test1Func6", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "test1Func7", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "test1Func8", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "test1Func9", data: BytesLike): Result; + + events: { + "TestEvent(address)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "TestEvent"): EventFragment; +} + +export interface TestEventEventObject { + something: string; +} +export type TestEventEvent = TypedEvent<[string], TestEventEventObject>; + +export type TestEventEventFilter = TypedEventFilter; + +export interface Test1Facet extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: Test1FacetInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + supportsInterface( + _interfaceID: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + test1Func1( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func10( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func11( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func12( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func13( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func14( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func15( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func16( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func17( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func18( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func19( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func2( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func20( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func3( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func4( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func5( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func6( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func7( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func8( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func9( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + supportsInterface( + _interfaceID: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + test1Func1( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func10( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func11( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func12( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func13( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func14( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func15( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func16( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func17( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func18( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func19( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func2( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func20( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func3( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func4( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func5( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func6( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func7( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func8( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func9( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + supportsInterface( + _interfaceID: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + test1Func1(overrides?: CallOverrides): Promise; + + test1Func10(overrides?: CallOverrides): Promise; + + test1Func11(overrides?: CallOverrides): Promise; + + test1Func12(overrides?: CallOverrides): Promise; + + test1Func13(overrides?: CallOverrides): Promise; + + test1Func14(overrides?: CallOverrides): Promise; + + test1Func15(overrides?: CallOverrides): Promise; + + test1Func16(overrides?: CallOverrides): Promise; + + test1Func17(overrides?: CallOverrides): Promise; + + test1Func18(overrides?: CallOverrides): Promise; + + test1Func19(overrides?: CallOverrides): Promise; + + test1Func2(overrides?: CallOverrides): Promise; + + test1Func20(overrides?: CallOverrides): Promise; + + test1Func3(overrides?: CallOverrides): Promise; + + test1Func4(overrides?: CallOverrides): Promise; + + test1Func5(overrides?: CallOverrides): Promise; + + test1Func6(overrides?: CallOverrides): Promise; + + test1Func7(overrides?: CallOverrides): Promise; + + test1Func8(overrides?: CallOverrides): Promise; + + test1Func9(overrides?: CallOverrides): Promise; + }; + + filters: { + "TestEvent(address)"(something?: null): TestEventEventFilter; + TestEvent(something?: null): TestEventEventFilter; + }; + + estimateGas: { + supportsInterface( + _interfaceID: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + test1Func1( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func10( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func11( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func12( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func13( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func14( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func15( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func16( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func17( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func18( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func19( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func2( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func20( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func3( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func4( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func5( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func6( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func7( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func8( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func9( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + supportsInterface( + _interfaceID: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + test1Func1( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func10( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func11( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func12( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func13( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func14( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func15( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func16( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func17( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func18( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func19( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func2( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func20( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func3( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func4( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func5( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func6( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func7( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func8( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test1Func9( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/contracts/typechain-types/contracts/tests/Test2Facet.ts b/contracts/typechain-types/contracts/tests/Test2Facet.ts new file mode 100644 index 0000000..f528766 --- /dev/null +++ b/contracts/typechain-types/contracts/tests/Test2Facet.ts @@ -0,0 +1,606 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../common"; + +export interface Test2FacetInterface extends utils.Interface { + functions: { + "test2Func1()": FunctionFragment; + "test2Func10()": FunctionFragment; + "test2Func11()": FunctionFragment; + "test2Func12()": FunctionFragment; + "test2Func13()": FunctionFragment; + "test2Func14()": FunctionFragment; + "test2Func15()": FunctionFragment; + "test2Func16()": FunctionFragment; + "test2Func17()": FunctionFragment; + "test2Func18()": FunctionFragment; + "test2Func19()": FunctionFragment; + "test2Func2()": FunctionFragment; + "test2Func20()": FunctionFragment; + "test2Func3()": FunctionFragment; + "test2Func4()": FunctionFragment; + "test2Func5()": FunctionFragment; + "test2Func6()": FunctionFragment; + "test2Func7()": FunctionFragment; + "test2Func8()": FunctionFragment; + "test2Func9()": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "test2Func1" + | "test2Func10" + | "test2Func11" + | "test2Func12" + | "test2Func13" + | "test2Func14" + | "test2Func15" + | "test2Func16" + | "test2Func17" + | "test2Func18" + | "test2Func19" + | "test2Func2" + | "test2Func20" + | "test2Func3" + | "test2Func4" + | "test2Func5" + | "test2Func6" + | "test2Func7" + | "test2Func8" + | "test2Func9" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "test2Func1", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "test2Func10", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "test2Func11", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "test2Func12", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "test2Func13", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "test2Func14", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "test2Func15", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "test2Func16", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "test2Func17", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "test2Func18", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "test2Func19", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "test2Func2", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "test2Func20", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "test2Func3", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "test2Func4", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "test2Func5", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "test2Func6", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "test2Func7", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "test2Func8", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "test2Func9", + values?: undefined + ): string; + + decodeFunctionResult(functionFragment: "test2Func1", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "test2Func10", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "test2Func11", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "test2Func12", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "test2Func13", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "test2Func14", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "test2Func15", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "test2Func16", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "test2Func17", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "test2Func18", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "test2Func19", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "test2Func2", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "test2Func20", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "test2Func3", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "test2Func4", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "test2Func5", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "test2Func6", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "test2Func7", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "test2Func8", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "test2Func9", data: BytesLike): Result; + + events: {}; +} + +export interface Test2Facet extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: Test2FacetInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + test2Func1( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func10( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func11( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func12( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func13( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func14( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func15( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func16( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func17( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func18( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func19( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func2( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func20( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func3( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func4( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func5( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func6( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func7( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func8( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func9( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + test2Func1( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func10( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func11( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func12( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func13( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func14( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func15( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func16( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func17( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func18( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func19( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func2( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func20( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func3( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func4( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func5( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func6( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func7( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func8( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func9( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + test2Func1(overrides?: CallOverrides): Promise; + + test2Func10(overrides?: CallOverrides): Promise; + + test2Func11(overrides?: CallOverrides): Promise; + + test2Func12(overrides?: CallOverrides): Promise; + + test2Func13(overrides?: CallOverrides): Promise; + + test2Func14(overrides?: CallOverrides): Promise; + + test2Func15(overrides?: CallOverrides): Promise; + + test2Func16(overrides?: CallOverrides): Promise; + + test2Func17(overrides?: CallOverrides): Promise; + + test2Func18(overrides?: CallOverrides): Promise; + + test2Func19(overrides?: CallOverrides): Promise; + + test2Func2(overrides?: CallOverrides): Promise; + + test2Func20(overrides?: CallOverrides): Promise; + + test2Func3(overrides?: CallOverrides): Promise; + + test2Func4(overrides?: CallOverrides): Promise; + + test2Func5(overrides?: CallOverrides): Promise; + + test2Func6(overrides?: CallOverrides): Promise; + + test2Func7(overrides?: CallOverrides): Promise; + + test2Func8(overrides?: CallOverrides): Promise; + + test2Func9(overrides?: CallOverrides): Promise; + }; + + filters: {}; + + estimateGas: { + test2Func1( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func10( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func11( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func12( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func13( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func14( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func15( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func16( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func17( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func18( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func19( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func2( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func20( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func3( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func4( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func5( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func6( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func7( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func8( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func9( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + test2Func1( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func10( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func11( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func12( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func13( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func14( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func15( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func16( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func17( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func18( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func19( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func2( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func20( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func3( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func4( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func5( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func6( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func7( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func8( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test2Func9( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/contracts/typechain-types/contracts/tests/Test3Facet.ts b/contracts/typechain-types/contracts/tests/Test3Facet.ts new file mode 100644 index 0000000..557f46a --- /dev/null +++ b/contracts/typechain-types/contracts/tests/Test3Facet.ts @@ -0,0 +1,113 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../common"; + +export interface Test3FacetInterface extends utils.Interface { + functions: { + "test3Func1()": FunctionFragment; + "test3Func2()": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: "test3Func1" | "test3Func2" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "test3Func1", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "test3Func2", + values?: undefined + ): string; + + decodeFunctionResult(functionFragment: "test3Func1", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "test3Func2", data: BytesLike): Result; + + events: {}; +} + +export interface Test3Facet extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: Test3FacetInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + test3Func1(overrides?: CallOverrides): Promise<[BigNumber]>; + + test3Func2( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + test3Func1(overrides?: CallOverrides): Promise; + + test3Func2( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + test3Func1(overrides?: CallOverrides): Promise; + + test3Func2(overrides?: CallOverrides): Promise; + }; + + filters: {}; + + estimateGas: { + test3Func1(overrides?: CallOverrides): Promise; + + test3Func2( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + test3Func1(overrides?: CallOverrides): Promise; + + test3Func2( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/contracts/typechain-types/contracts/tests/Test3Facet2.ts b/contracts/typechain-types/contracts/tests/Test3Facet2.ts new file mode 100644 index 0000000..a399c80 --- /dev/null +++ b/contracts/typechain-types/contracts/tests/Test3Facet2.ts @@ -0,0 +1,85 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BytesLike, + CallOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../common"; + +export interface Test3Facet2Interface extends utils.Interface { + functions: { + "test3Func1()": FunctionFragment; + }; + + getFunction(nameOrSignatureOrTopic: "test3Func1"): FunctionFragment; + + encodeFunctionData( + functionFragment: "test3Func1", + values?: undefined + ): string; + + decodeFunctionResult(functionFragment: "test3Func1", data: BytesLike): Result; + + events: {}; +} + +export interface Test3Facet2 extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: Test3Facet2Interface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + test3Func1(overrides?: CallOverrides): Promise<[BigNumber]>; + }; + + test3Func1(overrides?: CallOverrides): Promise; + + callStatic: { + test3Func1(overrides?: CallOverrides): Promise; + }; + + filters: {}; + + estimateGas: { + test3Func1(overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + test3Func1(overrides?: CallOverrides): Promise; + }; +} diff --git a/contracts/typechain-types/contracts/tests/Test4Facet.ts b/contracts/typechain-types/contracts/tests/Test4Facet.ts new file mode 100644 index 0000000..19089c5 --- /dev/null +++ b/contracts/typechain-types/contracts/tests/Test4Facet.ts @@ -0,0 +1,121 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../common"; + +export interface Test4FacetInterface extends utils.Interface { + functions: { + "test4Func1()": FunctionFragment; + "test4Func2()": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: "test4Func1" | "test4Func2" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "test4Func1", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "test4Func2", + values?: undefined + ): string; + + decodeFunctionResult(functionFragment: "test4Func1", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "test4Func2", data: BytesLike): Result; + + events: {}; +} + +export interface Test4Facet extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: Test4FacetInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + test4Func1( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test4Func2( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + test4Func1( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test4Func2( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + test4Func1(overrides?: CallOverrides): Promise; + + test4Func2(overrides?: CallOverrides): Promise; + }; + + filters: {}; + + estimateGas: { + test4Func1( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test4Func2( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + test4Func1( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test4Func2( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/contracts/typechain-types/contracts/tests/Test5Facet.ts b/contracts/typechain-types/contracts/tests/Test5Facet.ts new file mode 100644 index 0000000..b6d7cd2 --- /dev/null +++ b/contracts/typechain-types/contracts/tests/Test5Facet.ts @@ -0,0 +1,170 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../common"; + +export interface Test5FacetInterface extends utils.Interface { + functions: { + "getValue()": FunctionFragment; + "setValue(uint256)": FunctionFragment; + "test5Func1()": FunctionFragment; + "test5Func2()": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "getValue" + | "setValue" + | "test5Func1" + | "test5Func2" + ): FunctionFragment; + + encodeFunctionData(functionFragment: "getValue", values?: undefined): string; + encodeFunctionData( + functionFragment: "setValue", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "test5Func1", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "test5Func2", + values?: undefined + ): string; + + decodeFunctionResult(functionFragment: "getValue", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "setValue", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "test5Func1", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "test5Func2", data: BytesLike): Result; + + events: {}; +} + +export interface Test5Facet extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: Test5FacetInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + getValue(overrides?: CallOverrides): Promise<[BigNumber]>; + + setValue( + _value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test5Func1( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test5Func2( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + getValue(overrides?: CallOverrides): Promise; + + setValue( + _value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test5Func1( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test5Func2( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + getValue(overrides?: CallOverrides): Promise; + + setValue( + _value: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + test5Func1(overrides?: CallOverrides): Promise; + + test5Func2(overrides?: CallOverrides): Promise; + }; + + filters: {}; + + estimateGas: { + getValue(overrides?: CallOverrides): Promise; + + setValue( + _value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test5Func1( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test5Func2( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + getValue(overrides?: CallOverrides): Promise; + + setValue( + _value: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test5Func1( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + test5Func2( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/contracts/typechain-types/contracts/tests/index.ts b/contracts/typechain-types/contracts/tests/index.ts new file mode 100644 index 0000000..90b2b4a --- /dev/null +++ b/contracts/typechain-types/contracts/tests/index.ts @@ -0,0 +1,10 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { InitTest } from "./InitTest"; +export type { Test1Facet } from "./Test1Facet"; +export type { Test2Facet } from "./Test2Facet"; +export type { Test3Facet } from "./Test3Facet"; +export type { Test3Facet2 } from "./Test3Facet2"; +export type { Test4Facet } from "./Test4Facet"; +export type { Test5Facet } from "./Test5Facet"; diff --git a/contracts/typechain-types/contracts/upgrades/DiamondInit.ts b/contracts/typechain-types/contracts/upgrades/DiamondInit.ts new file mode 100644 index 0000000..3d1f2fc --- /dev/null +++ b/contracts/typechain-types/contracts/upgrades/DiamondInit.ts @@ -0,0 +1,135 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../common"; + +export interface DiamondInitInterface extends utils.Interface { + functions: { + "init(address,uint256,uint256,uint256,uint256,address[])": FunctionFragment; + }; + + getFunction(nameOrSignatureOrTopic: "init"): FunctionFragment; + + encodeFunctionData( + functionFragment: "init", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue[] + ] + ): string; + + decodeFunctionResult(functionFragment: "init", data: BytesLike): Result; + + events: {}; +} + +export interface DiamondInit extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: DiamondInitInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + init( + _autobot: PromiseOrValue, + _minimumAppGelatoBalance: PromiseOrValue, + _minimumEndDuration: PromiseOrValue, + _minimumLifespan: PromiseOrValue, + _stBufferDurationInSecond: PromiseOrValue, + _superTokens: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + init( + _autobot: PromiseOrValue, + _minimumAppGelatoBalance: PromiseOrValue, + _minimumEndDuration: PromiseOrValue, + _minimumLifespan: PromiseOrValue, + _stBufferDurationInSecond: PromiseOrValue, + _superTokens: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + init( + _autobot: PromiseOrValue, + _minimumAppGelatoBalance: PromiseOrValue, + _minimumEndDuration: PromiseOrValue, + _minimumLifespan: PromiseOrValue, + _stBufferDurationInSecond: PromiseOrValue, + _superTokens: PromiseOrValue[], + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + init( + _autobot: PromiseOrValue, + _minimumAppGelatoBalance: PromiseOrValue, + _minimumEndDuration: PromiseOrValue, + _minimumLifespan: PromiseOrValue, + _stBufferDurationInSecond: PromiseOrValue, + _superTokens: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + init( + _autobot: PromiseOrValue, + _minimumAppGelatoBalance: PromiseOrValue, + _minimumEndDuration: PromiseOrValue, + _minimumLifespan: PromiseOrValue, + _stBufferDurationInSecond: PromiseOrValue, + _superTokens: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/contracts/typechain-types/contracts/upgrades/index.ts b/contracts/typechain-types/contracts/upgrades/index.ts new file mode 100644 index 0000000..269f640 --- /dev/null +++ b/contracts/typechain-types/contracts/upgrades/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { DiamondInit } from "./DiamondInit"; diff --git a/contracts/typechain-types/factories/@openzeppelin/contracts/index.ts b/contracts/typechain-types/factories/@openzeppelin/contracts/index.ts new file mode 100644 index 0000000..074241c --- /dev/null +++ b/contracts/typechain-types/factories/@openzeppelin/contracts/index.ts @@ -0,0 +1,5 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export * as interfaces from "./interfaces"; +export * as token from "./token"; diff --git a/contracts/typechain-types/factories/@openzeppelin/contracts/interfaces/IERC1271__factory.ts b/contracts/typechain-types/factories/@openzeppelin/contracts/interfaces/IERC1271__factory.ts new file mode 100644 index 0000000..7ab898a --- /dev/null +++ b/contracts/typechain-types/factories/@openzeppelin/contracts/interfaces/IERC1271__factory.ts @@ -0,0 +1,50 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + IERC1271, + IERC1271Interface, +} from "../../../../@openzeppelin/contracts/interfaces/IERC1271"; + +const _abi = [ + { + inputs: [ + { + internalType: "bytes32", + name: "hash", + type: "bytes32", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + name: "isValidSignature", + outputs: [ + { + internalType: "bytes4", + name: "magicValue", + type: "bytes4", + }, + ], + stateMutability: "view", + type: "function", + }, +] as const; + +export class IERC1271__factory { + static readonly abi = _abi; + static createInterface(): IERC1271Interface { + return new utils.Interface(_abi) as IERC1271Interface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): IERC1271 { + return new Contract(address, _abi, signerOrProvider) as IERC1271; + } +} diff --git a/contracts/typechain-types/factories/@openzeppelin/contracts/interfaces/index.ts b/contracts/typechain-types/factories/@openzeppelin/contracts/interfaces/index.ts new file mode 100644 index 0000000..0f0a0c7 --- /dev/null +++ b/contracts/typechain-types/factories/@openzeppelin/contracts/interfaces/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { IERC1271__factory } from "./IERC1271__factory"; diff --git a/contracts/typechain-types/factories/@openzeppelin/contracts/token/ERC20/IERC20__factory.ts b/contracts/typechain-types/factories/@openzeppelin/contracts/token/ERC20/IERC20__factory.ts new file mode 100644 index 0000000..cd7fa8f --- /dev/null +++ b/contracts/typechain-types/factories/@openzeppelin/contracts/token/ERC20/IERC20__factory.ts @@ -0,0 +1,206 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + IERC20, + IERC20Interface, +} from "../../../../../@openzeppelin/contracts/token/ERC20/IERC20"; + +const _abi = [ + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "owner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "spender", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "Approval", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "from", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "to", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "Transfer", + type: "event", + }, + { + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + { + internalType: "address", + name: "spender", + type: "address", + }, + ], + name: "allowance", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "spender", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "approve", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "balanceOf", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "totalSupply", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "transfer", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "from", + type: "address", + }, + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "transferFrom", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +export class IERC20__factory { + static readonly abi = _abi; + static createInterface(): IERC20Interface { + return new utils.Interface(_abi) as IERC20Interface; + } + static connect(address: string, signerOrProvider: Signer | Provider): IERC20 { + return new Contract(address, _abi, signerOrProvider) as IERC20; + } +} diff --git a/contracts/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit__factory.ts b/contracts/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit__factory.ts new file mode 100644 index 0000000..a4471b8 --- /dev/null +++ b/contracts/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit__factory.ts @@ -0,0 +1,101 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + IERC20Permit, + IERC20PermitInterface, +} from "../../../../../../../@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit"; + +const _abi = [ + { + inputs: [], + name: "DOMAIN_SEPARATOR", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + ], + name: "nonces", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + { + internalType: "address", + name: "spender", + type: "address", + }, + { + internalType: "uint256", + name: "value", + type: "uint256", + }, + { + internalType: "uint256", + name: "deadline", + type: "uint256", + }, + { + internalType: "uint8", + name: "v", + type: "uint8", + }, + { + internalType: "bytes32", + name: "r", + type: "bytes32", + }, + { + internalType: "bytes32", + name: "s", + type: "bytes32", + }, + ], + name: "permit", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +export class IERC20Permit__factory { + static readonly abi = _abi; + static createInterface(): IERC20PermitInterface { + return new utils.Interface(_abi) as IERC20PermitInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): IERC20Permit { + return new Contract(address, _abi, signerOrProvider) as IERC20Permit; + } +} diff --git a/contracts/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/index.ts b/contracts/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/index.ts new file mode 100644 index 0000000..5f347d4 --- /dev/null +++ b/contracts/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { IERC20Permit__factory } from "./IERC20Permit__factory"; diff --git a/contracts/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/index.ts b/contracts/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/index.ts new file mode 100644 index 0000000..65b92a6 --- /dev/null +++ b/contracts/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export * as draftIerc20PermitSol from "./draft-IERC20Permit.sol"; diff --git a/contracts/typechain-types/factories/@openzeppelin/contracts/token/ERC20/index.ts b/contracts/typechain-types/factories/@openzeppelin/contracts/token/ERC20/index.ts new file mode 100644 index 0000000..6e86faa --- /dev/null +++ b/contracts/typechain-types/factories/@openzeppelin/contracts/token/ERC20/index.ts @@ -0,0 +1,5 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export * as extensions from "./extensions"; +export { IERC20__factory } from "./IERC20__factory"; diff --git a/contracts/typechain-types/factories/@openzeppelin/contracts/token/ERC777/IERC777__factory.ts b/contracts/typechain-types/factories/@openzeppelin/contracts/token/ERC777/IERC777__factory.ts new file mode 100644 index 0000000..94d61c8 --- /dev/null +++ b/contracts/typechain-types/factories/@openzeppelin/contracts/token/ERC777/IERC777__factory.ts @@ -0,0 +1,417 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + IERC777, + IERC777Interface, +} from "../../../../../@openzeppelin/contracts/token/ERC777/IERC777"; + +const _abi = [ + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "operator", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "tokenHolder", + type: "address", + }, + ], + name: "AuthorizedOperator", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "operator", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "from", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "amount", + type: "uint256", + }, + { + indexed: false, + internalType: "bytes", + name: "data", + type: "bytes", + }, + { + indexed: false, + internalType: "bytes", + name: "operatorData", + type: "bytes", + }, + ], + name: "Burned", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "operator", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "to", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "amount", + type: "uint256", + }, + { + indexed: false, + internalType: "bytes", + name: "data", + type: "bytes", + }, + { + indexed: false, + internalType: "bytes", + name: "operatorData", + type: "bytes", + }, + ], + name: "Minted", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "operator", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "tokenHolder", + type: "address", + }, + ], + name: "RevokedOperator", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "operator", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "from", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "to", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "amount", + type: "uint256", + }, + { + indexed: false, + internalType: "bytes", + name: "data", + type: "bytes", + }, + { + indexed: false, + internalType: "bytes", + name: "operatorData", + type: "bytes", + }, + ], + name: "Sent", + type: "event", + }, + { + inputs: [ + { + internalType: "address", + name: "operator", + type: "address", + }, + ], + name: "authorizeOperator", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + ], + name: "balanceOf", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + name: "burn", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "defaultOperators", + outputs: [ + { + internalType: "address[]", + name: "", + type: "address[]", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "granularity", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "operator", + type: "address", + }, + { + internalType: "address", + name: "tokenHolder", + type: "address", + }, + ], + name: "isOperatorFor", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "name", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + { + internalType: "bytes", + name: "operatorData", + type: "bytes", + }, + ], + name: "operatorBurn", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "sender", + type: "address", + }, + { + internalType: "address", + name: "recipient", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + { + internalType: "bytes", + name: "operatorData", + type: "bytes", + }, + ], + name: "operatorSend", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "operator", + type: "address", + }, + ], + name: "revokeOperator", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "recipient", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + name: "send", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "symbol", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "totalSupply", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, +] as const; + +export class IERC777__factory { + static readonly abi = _abi; + static createInterface(): IERC777Interface { + return new utils.Interface(_abi) as IERC777Interface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): IERC777 { + return new Contract(address, _abi, signerOrProvider) as IERC777; + } +} diff --git a/contracts/typechain-types/factories/@openzeppelin/contracts/token/ERC777/index.ts b/contracts/typechain-types/factories/@openzeppelin/contracts/token/ERC777/index.ts new file mode 100644 index 0000000..e6a2321 --- /dev/null +++ b/contracts/typechain-types/factories/@openzeppelin/contracts/token/ERC777/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { IERC777__factory } from "./IERC777__factory"; diff --git a/contracts/typechain-types/factories/@openzeppelin/contracts/token/index.ts b/contracts/typechain-types/factories/@openzeppelin/contracts/token/index.ts new file mode 100644 index 0000000..d49bba4 --- /dev/null +++ b/contracts/typechain-types/factories/@openzeppelin/contracts/token/index.ts @@ -0,0 +1,5 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export * as erc20 from "./ERC20"; +export * as erc777 from "./ERC777"; diff --git a/contracts/typechain-types/factories/@openzeppelin/index.ts b/contracts/typechain-types/factories/@openzeppelin/index.ts new file mode 100644 index 0000000..6397da0 --- /dev/null +++ b/contracts/typechain-types/factories/@openzeppelin/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export * as contracts from "./contracts"; diff --git a/contracts/typechain-types/factories/@superfluid-finance/ethereum-contracts/contracts/index.ts b/contracts/typechain-types/factories/@superfluid-finance/ethereum-contracts/contracts/index.ts new file mode 100644 index 0000000..1d3444d --- /dev/null +++ b/contracts/typechain-types/factories/@superfluid-finance/ethereum-contracts/contracts/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export * as interfaces from "./interfaces"; diff --git a/contracts/typechain-types/factories/@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IConstantFlowAgreementV1__factory.ts b/contracts/typechain-types/factories/@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IConstantFlowAgreementV1__factory.ts new file mode 100644 index 0000000..a89d214 --- /dev/null +++ b/contracts/typechain-types/factories/@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IConstantFlowAgreementV1__factory.ts @@ -0,0 +1,986 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + IConstantFlowAgreementV1, + IConstantFlowAgreementV1Interface, +} from "../../../../../../@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IConstantFlowAgreementV1"; + +const _abi = [ + { + inputs: [], + name: "CFA_ACL_FLOW_RATE_ALLOWANCE_EXCEEDED", + type: "error", + }, + { + inputs: [], + name: "CFA_ACL_NO_NEGATIVE_ALLOWANCE", + type: "error", + }, + { + inputs: [], + name: "CFA_ACL_NO_SENDER_CREATE", + type: "error", + }, + { + inputs: [], + name: "CFA_ACL_NO_SENDER_FLOW_OPERATOR", + type: "error", + }, + { + inputs: [], + name: "CFA_ACL_NO_SENDER_UPDATE", + type: "error", + }, + { + inputs: [], + name: "CFA_ACL_OPERATOR_NO_CREATE_PERMISSIONS", + type: "error", + }, + { + inputs: [], + name: "CFA_ACL_OPERATOR_NO_DELETE_PERMISSIONS", + type: "error", + }, + { + inputs: [], + name: "CFA_ACL_OPERATOR_NO_UPDATE_PERMISSIONS", + type: "error", + }, + { + inputs: [], + name: "CFA_ACL_UNCLEAN_PERMISSIONS", + type: "error", + }, + { + inputs: [], + name: "CFA_DEPOSIT_TOO_BIG", + type: "error", + }, + { + inputs: [], + name: "CFA_FLOW_ALREADY_EXISTS", + type: "error", + }, + { + inputs: [], + name: "CFA_FLOW_DOES_NOT_EXIST", + type: "error", + }, + { + inputs: [], + name: "CFA_FLOW_RATE_TOO_BIG", + type: "error", + }, + { + inputs: [], + name: "CFA_HOOK_OUT_OF_GAS", + type: "error", + }, + { + inputs: [], + name: "CFA_INSUFFICIENT_BALANCE", + type: "error", + }, + { + inputs: [], + name: "CFA_INVALID_FLOW_RATE", + type: "error", + }, + { + inputs: [], + name: "CFA_NON_CRITICAL_SENDER", + type: "error", + }, + { + inputs: [], + name: "CFA_NO_SELF_FLOW", + type: "error", + }, + { + inputs: [], + name: "CFA_ZERO_ADDRESS_RECEIVER", + type: "error", + }, + { + inputs: [], + name: "CFA_ZERO_ADDRESS_SENDER", + type: "error", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "contract ISuperfluidToken", + name: "token", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "sender", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "flowOperator", + type: "address", + }, + { + indexed: false, + internalType: "uint8", + name: "permissions", + type: "uint8", + }, + { + indexed: false, + internalType: "int96", + name: "flowRateAllowance", + type: "int96", + }, + ], + name: "FlowOperatorUpdated", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "contract ISuperfluidToken", + name: "token", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "sender", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "receiver", + type: "address", + }, + { + indexed: false, + internalType: "int96", + name: "flowRate", + type: "int96", + }, + { + indexed: false, + internalType: "int256", + name: "totalSenderFlowRate", + type: "int256", + }, + { + indexed: false, + internalType: "int256", + name: "totalReceiverFlowRate", + type: "int256", + }, + { + indexed: false, + internalType: "bytes", + name: "userData", + type: "bytes", + }, + ], + name: "FlowUpdated", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "flowOperator", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "deposit", + type: "uint256", + }, + ], + name: "FlowUpdatedExtension", + type: "event", + }, + { + inputs: [], + name: "agreementType", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [ + { + internalType: "contract ISuperfluidToken", + name: "token", + type: "address", + }, + { + internalType: "address", + name: "flowOperator", + type: "address", + }, + { + internalType: "bytes", + name: "ctx", + type: "bytes", + }, + ], + name: "authorizeFlowOperatorWithFullControl", + outputs: [ + { + internalType: "bytes", + name: "newCtx", + type: "bytes", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "contract ISuperfluidToken", + name: "token", + type: "address", + }, + { + internalType: "address", + name: "receiver", + type: "address", + }, + { + internalType: "int96", + name: "flowRate", + type: "int96", + }, + { + internalType: "bytes", + name: "ctx", + type: "bytes", + }, + ], + name: "createFlow", + outputs: [ + { + internalType: "bytes", + name: "newCtx", + type: "bytes", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "contract ISuperfluidToken", + name: "token", + type: "address", + }, + { + internalType: "address", + name: "sender", + type: "address", + }, + { + internalType: "address", + name: "receiver", + type: "address", + }, + { + internalType: "int96", + name: "flowRate", + type: "int96", + }, + { + internalType: "bytes", + name: "ctx", + type: "bytes", + }, + ], + name: "createFlowByOperator", + outputs: [ + { + internalType: "bytes", + name: "newCtx", + type: "bytes", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "contract ISuperfluidToken", + name: "token", + type: "address", + }, + { + internalType: "address", + name: "flowOperator", + type: "address", + }, + { + internalType: "int96", + name: "subtractedFlowRateAllowance", + type: "int96", + }, + { + internalType: "bytes", + name: "ctx", + type: "bytes", + }, + ], + name: "decreaseFlowRateAllowance", + outputs: [ + { + internalType: "bytes", + name: "newCtx", + type: "bytes", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "contract ISuperfluidToken", + name: "token", + type: "address", + }, + { + internalType: "address", + name: "sender", + type: "address", + }, + { + internalType: "address", + name: "receiver", + type: "address", + }, + { + internalType: "bytes", + name: "ctx", + type: "bytes", + }, + ], + name: "deleteFlow", + outputs: [ + { + internalType: "bytes", + name: "newCtx", + type: "bytes", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "contract ISuperfluidToken", + name: "token", + type: "address", + }, + { + internalType: "address", + name: "sender", + type: "address", + }, + { + internalType: "address", + name: "receiver", + type: "address", + }, + { + internalType: "bytes", + name: "ctx", + type: "bytes", + }, + ], + name: "deleteFlowByOperator", + outputs: [ + { + internalType: "bytes", + name: "newCtx", + type: "bytes", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "contract ISuperfluidToken", + name: "token", + type: "address", + }, + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "getAccountFlowInfo", + outputs: [ + { + internalType: "uint256", + name: "timestamp", + type: "uint256", + }, + { + internalType: "int96", + name: "flowRate", + type: "int96", + }, + { + 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: "int96", + name: "flowRate", + type: "int96", + }, + ], + name: "getDepositRequiredForFlowRate", + outputs: [ + { + internalType: "uint256", + name: "deposit", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "contract ISuperfluidToken", + name: "token", + type: "address", + }, + { + internalType: "address", + name: "sender", + type: "address", + }, + { + internalType: "address", + name: "receiver", + type: "address", + }, + ], + name: "getFlow", + outputs: [ + { + internalType: "uint256", + name: "timestamp", + type: "uint256", + }, + { + internalType: "int96", + name: "flowRate", + type: "int96", + }, + { + 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: "bytes32", + name: "agreementId", + type: "bytes32", + }, + ], + name: "getFlowByID", + outputs: [ + { + internalType: "uint256", + name: "timestamp", + type: "uint256", + }, + { + internalType: "int96", + name: "flowRate", + type: "int96", + }, + { + 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: "sender", + type: "address", + }, + { + internalType: "address", + name: "flowOperator", + type: "address", + }, + ], + name: "getFlowOperatorData", + outputs: [ + { + internalType: "bytes32", + name: "flowOperatorId", + type: "bytes32", + }, + { + internalType: "uint8", + name: "permissions", + type: "uint8", + }, + { + internalType: "int96", + name: "flowRateAllowance", + type: "int96", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "contract ISuperfluidToken", + name: "token", + type: "address", + }, + { + internalType: "bytes32", + name: "flowOperatorId", + type: "bytes32", + }, + ], + name: "getFlowOperatorDataByID", + outputs: [ + { + internalType: "uint8", + name: "permissions", + type: "uint8", + }, + { + internalType: "int96", + name: "flowRateAllowance", + type: "int96", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "contract ISuperfluidToken", + name: "token", + type: "address", + }, + { + internalType: "uint256", + name: "deposit", + type: "uint256", + }, + ], + name: "getMaximumFlowRateFromDeposit", + outputs: [ + { + internalType: "int96", + name: "flowRate", + type: "int96", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "contract ISuperfluidToken", + name: "token", + type: "address", + }, + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "getNetFlow", + outputs: [ + { + internalType: "int96", + name: "flowRate", + type: "int96", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "contract ISuperfluidToken", + name: "token", + type: "address", + }, + { + internalType: "address", + name: "flowOperator", + type: "address", + }, + { + internalType: "int96", + name: "addedFlowRateAllowance", + type: "int96", + }, + { + internalType: "bytes", + name: "ctx", + type: "bytes", + }, + ], + name: "increaseFlowRateAllowance", + outputs: [ + { + internalType: "bytes", + name: "newCtx", + type: "bytes", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "contract ISuperfluidToken", + name: "token", + type: "address", + }, + { + internalType: "address", + name: "account", + type: "address", + }, + { + internalType: "uint256", + name: "timestamp", + type: "uint256", + }, + ], + name: "isPatricianPeriod", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "contract ISuperfluidToken", + name: "token", + type: "address", + }, + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "isPatricianPeriodNow", + outputs: [ + { + internalType: "bool", + name: "isCurrentlyPatricianPeriod", + type: "bool", + }, + { + internalType: "uint256", + name: "timestamp", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "contract ISuperfluidToken", + name: "token", + type: "address", + }, + { + internalType: "address", + name: "account", + type: "address", + }, + { + internalType: "uint256", + name: "time", + 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: "flowOperator", + type: "address", + }, + { + internalType: "bytes", + name: "ctx", + type: "bytes", + }, + ], + name: "revokeFlowOperatorWithFullControl", + outputs: [ + { + internalType: "bytes", + name: "newCtx", + type: "bytes", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "contract ISuperfluidToken", + name: "token", + type: "address", + }, + { + internalType: "address", + name: "receiver", + type: "address", + }, + { + internalType: "int96", + name: "flowRate", + type: "int96", + }, + { + internalType: "bytes", + name: "ctx", + type: "bytes", + }, + ], + name: "updateFlow", + outputs: [ + { + internalType: "bytes", + name: "newCtx", + type: "bytes", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "contract ISuperfluidToken", + name: "token", + type: "address", + }, + { + internalType: "address", + name: "sender", + type: "address", + }, + { + internalType: "address", + name: "receiver", + type: "address", + }, + { + internalType: "int96", + name: "flowRate", + type: "int96", + }, + { + internalType: "bytes", + name: "ctx", + type: "bytes", + }, + ], + name: "updateFlowByOperator", + outputs: [ + { + internalType: "bytes", + name: "newCtx", + type: "bytes", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "contract ISuperfluidToken", + name: "token", + type: "address", + }, + { + internalType: "address", + name: "flowOperator", + type: "address", + }, + { + internalType: "uint8", + name: "permissions", + type: "uint8", + }, + { + internalType: "int96", + name: "flowRateAllowance", + type: "int96", + }, + { + internalType: "bytes", + name: "ctx", + type: "bytes", + }, + ], + name: "updateFlowOperatorPermissions", + outputs: [ + { + internalType: "bytes", + name: "newCtx", + type: "bytes", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +export class IConstantFlowAgreementV1__factory { + static readonly abi = _abi; + static createInterface(): IConstantFlowAgreementV1Interface { + return new utils.Interface(_abi) as IConstantFlowAgreementV1Interface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): IConstantFlowAgreementV1 { + return new Contract( + address, + _abi, + signerOrProvider + ) as IConstantFlowAgreementV1; + } +} diff --git a/contracts/typechain-types/factories/@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IInstantDistributionAgreementV1__factory.ts b/contracts/typechain-types/factories/@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IInstantDistributionAgreementV1__factory.ts new file mode 100644 index 0000000..85a9369 --- /dev/null +++ b/contracts/typechain-types/factories/@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IInstantDistributionAgreementV1__factory.ts @@ -0,0 +1,1015 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + IInstantDistributionAgreementV1, + IInstantDistributionAgreementV1Interface, +} from "../../../../../../@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IInstantDistributionAgreementV1"; + +const _abi = [ + { + inputs: [], + name: "IDA_INDEX_ALREADY_EXISTS", + type: "error", + }, + { + inputs: [], + name: "IDA_INDEX_DOES_NOT_EXIST", + type: "error", + }, + { + inputs: [], + name: "IDA_INDEX_SHOULD_GROW", + type: "error", + }, + { + inputs: [], + name: "IDA_INSUFFICIENT_BALANCE", + type: "error", + }, + { + inputs: [], + name: "IDA_OPERATION_NOT_ALLOWED", + type: "error", + }, + { + inputs: [], + name: "IDA_SUBSCRIPTION_ALREADY_APPROVED", + type: "error", + }, + { + inputs: [], + name: "IDA_SUBSCRIPTION_DOES_NOT_EXIST", + type: "error", + }, + { + inputs: [], + name: "IDA_SUBSCRIPTION_IS_NOT_APPROVED", + type: "error", + }, + { + inputs: [], + name: "IDA_ZERO_ADDRESS_SUBSCRIBER", + type: "error", + }, + { + 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: "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: [ + { + 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: [ + { + internalType: "contract ISuperfluidToken", + name: "token", + type: "address", + }, + { + internalType: "address", + name: "account", + type: "address", + }, + { + internalType: "uint256", + name: "time", + 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: "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", + }, +] as const; + +export class IInstantDistributionAgreementV1__factory { + static readonly abi = _abi; + static createInterface(): IInstantDistributionAgreementV1Interface { + return new utils.Interface( + _abi + ) as IInstantDistributionAgreementV1Interface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): IInstantDistributionAgreementV1 { + return new Contract( + address, + _abi, + signerOrProvider + ) as IInstantDistributionAgreementV1; + } +} diff --git a/contracts/typechain-types/factories/@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/index.ts b/contracts/typechain-types/factories/@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/index.ts new file mode 100644 index 0000000..117c8c6 --- /dev/null +++ b/contracts/typechain-types/factories/@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/index.ts @@ -0,0 +1,5 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { IConstantFlowAgreementV1__factory } from "./IConstantFlowAgreementV1__factory"; +export { IInstantDistributionAgreementV1__factory } from "./IInstantDistributionAgreementV1__factory"; diff --git a/contracts/typechain-types/factories/@superfluid-finance/ethereum-contracts/contracts/interfaces/index.ts b/contracts/typechain-types/factories/@superfluid-finance/ethereum-contracts/contracts/interfaces/index.ts new file mode 100644 index 0000000..c6ebb19 --- /dev/null +++ b/contracts/typechain-types/factories/@superfluid-finance/ethereum-contracts/contracts/interfaces/index.ts @@ -0,0 +1,6 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export * as agreements from "./agreements"; +export * as superfluid from "./superfluid"; +export * as tokens from "./tokens"; diff --git a/contracts/typechain-types/factories/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement__factory.ts b/contracts/typechain-types/factories/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement__factory.ts new file mode 100644 index 0000000..19a2fc9 --- /dev/null +++ b/contracts/typechain-types/factories/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement__factory.ts @@ -0,0 +1,78 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + ISuperAgreement, + ISuperAgreementInterface, +} from "../../../../../../@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement"; + +const _abi = [ + { + inputs: [], + name: "agreementType", + 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: "time", + 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", + }, +] as const; + +export class ISuperAgreement__factory { + static readonly abi = _abi; + static createInterface(): ISuperAgreementInterface { + return new utils.Interface(_abi) as ISuperAgreementInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): ISuperAgreement { + return new Contract(address, _abi, signerOrProvider) as ISuperAgreement; + } +} diff --git a/contracts/typechain-types/factories/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperApp__factory.ts b/contracts/typechain-types/factories/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperApp__factory.ts new file mode 100644 index 0000000..07d18b6 --- /dev/null +++ b/contracts/typechain-types/factories/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperApp__factory.ts @@ -0,0 +1,275 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + ISuperApp, + ISuperAppInterface, +} from "../../../../../../@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperApp"; + +const _abi = [ + { + inputs: [ + { + internalType: "contract ISuperToken", + name: "superToken", + type: "address", + }, + { + internalType: "address", + name: "agreementClass", + type: "address", + }, + { + internalType: "bytes32", + name: "agreementId", + type: "bytes32", + }, + { + internalType: "bytes", + name: "agreementData", + type: "bytes", + }, + { + internalType: "bytes", + name: "cbdata", + type: "bytes", + }, + { + internalType: "bytes", + name: "ctx", + type: "bytes", + }, + ], + name: "afterAgreementCreated", + outputs: [ + { + internalType: "bytes", + name: "newCtx", + type: "bytes", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "contract ISuperToken", + name: "superToken", + type: "address", + }, + { + internalType: "address", + name: "agreementClass", + type: "address", + }, + { + internalType: "bytes32", + name: "agreementId", + type: "bytes32", + }, + { + internalType: "bytes", + name: "agreementData", + type: "bytes", + }, + { + internalType: "bytes", + name: "cbdata", + type: "bytes", + }, + { + internalType: "bytes", + name: "ctx", + type: "bytes", + }, + ], + name: "afterAgreementTerminated", + outputs: [ + { + internalType: "bytes", + name: "newCtx", + type: "bytes", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "contract ISuperToken", + name: "superToken", + type: "address", + }, + { + internalType: "address", + name: "agreementClass", + type: "address", + }, + { + internalType: "bytes32", + name: "agreementId", + type: "bytes32", + }, + { + internalType: "bytes", + name: "agreementData", + type: "bytes", + }, + { + internalType: "bytes", + name: "cbdata", + type: "bytes", + }, + { + internalType: "bytes", + name: "ctx", + type: "bytes", + }, + ], + name: "afterAgreementUpdated", + outputs: [ + { + internalType: "bytes", + name: "newCtx", + type: "bytes", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "contract ISuperToken", + name: "superToken", + type: "address", + }, + { + internalType: "address", + name: "agreementClass", + type: "address", + }, + { + internalType: "bytes32", + name: "agreementId", + type: "bytes32", + }, + { + internalType: "bytes", + name: "agreementData", + type: "bytes", + }, + { + internalType: "bytes", + name: "ctx", + type: "bytes", + }, + ], + name: "beforeAgreementCreated", + outputs: [ + { + internalType: "bytes", + name: "cbdata", + type: "bytes", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "contract ISuperToken", + name: "superToken", + type: "address", + }, + { + internalType: "address", + name: "agreementClass", + type: "address", + }, + { + internalType: "bytes32", + name: "agreementId", + type: "bytes32", + }, + { + internalType: "bytes", + name: "agreementData", + type: "bytes", + }, + { + internalType: "bytes", + name: "ctx", + type: "bytes", + }, + ], + name: "beforeAgreementTerminated", + outputs: [ + { + internalType: "bytes", + name: "cbdata", + type: "bytes", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "contract ISuperToken", + name: "superToken", + type: "address", + }, + { + internalType: "address", + name: "agreementClass", + type: "address", + }, + { + internalType: "bytes32", + name: "agreementId", + type: "bytes32", + }, + { + internalType: "bytes", + name: "agreementData", + type: "bytes", + }, + { + internalType: "bytes", + name: "ctx", + type: "bytes", + }, + ], + name: "beforeAgreementUpdated", + outputs: [ + { + internalType: "bytes", + name: "cbdata", + type: "bytes", + }, + ], + stateMutability: "view", + type: "function", + }, +] as const; + +export class ISuperApp__factory { + static readonly abi = _abi; + static createInterface(): ISuperAppInterface { + return new utils.Interface(_abi) as ISuperAppInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): ISuperApp { + return new Contract(address, _abi, signerOrProvider) as ISuperApp; + } +} diff --git a/contracts/typechain-types/factories/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperTokenFactory__factory.ts b/contracts/typechain-types/factories/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperTokenFactory__factory.ts new file mode 100644 index 0000000..1f5886b --- /dev/null +++ b/contracts/typechain-types/factories/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperTokenFactory__factory.ts @@ -0,0 +1,276 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + ISuperTokenFactory, + ISuperTokenFactoryInterface, +} from "../../../../../../@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperTokenFactory"; + +const _abi = [ + { + inputs: [], + name: "SUPER_TOKEN_FACTORY_ALREADY_EXISTS", + type: "error", + }, + { + inputs: [], + name: "SUPER_TOKEN_FACTORY_DOES_NOT_EXIST", + type: "error", + }, + { + inputs: [], + name: "SUPER_TOKEN_FACTORY_NON_UPGRADEABLE_IS_DEPRECATED", + type: "error", + }, + { + inputs: [], + name: "SUPER_TOKEN_FACTORY_ONLY_HOST", + type: "error", + }, + { + inputs: [], + name: "SUPER_TOKEN_FACTORY_UNINITIALIZED", + type: "error", + }, + { + inputs: [], + name: "SUPER_TOKEN_FACTORY_ZERO_ADDRESS", + type: "error", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "contract ISuperToken", + name: "token", + type: "address", + }, + ], + name: "CustomSuperTokenCreated", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "contract ISuperToken", + name: "token", + type: "address", + }, + ], + name: "SuperTokenCreated", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "contract ISuperToken", + name: "tokenLogic", + type: "address", + }, + ], + name: "SuperTokenLogicCreated", + type: "event", + }, + { + inputs: [ + { + internalType: "address", + name: "_underlyingToken", + type: "address", + }, + ], + name: "computeCanonicalERC20WrapperAddress", + outputs: [ + { + internalType: "address", + name: "superTokenAddress", + type: "address", + }, + { + internalType: "bool", + name: "isDeployed", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "contract ERC20WithTokenInfo", + name: "_underlyingToken", + type: "address", + }, + ], + name: "createCanonicalERC20Wrapper", + outputs: [ + { + internalType: "contract ISuperToken", + name: "", + type: "address", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "contract ERC20WithTokenInfo", + name: "underlyingToken", + type: "address", + }, + { + internalType: "enum ISuperTokenFactory.Upgradability", + name: "upgradability", + type: "uint8", + }, + { + internalType: "string", + name: "name", + type: "string", + }, + { + internalType: "string", + name: "symbol", + type: "string", + }, + ], + name: "createERC20Wrapper", + outputs: [ + { + internalType: "contract ISuperToken", + name: "superToken", + type: "address", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "contract IERC20", + name: "underlyingToken", + type: "address", + }, + { + internalType: "uint8", + name: "underlyingDecimals", + type: "uint8", + }, + { + internalType: "enum ISuperTokenFactory.Upgradability", + name: "upgradability", + type: "uint8", + }, + { + internalType: "string", + name: "name", + type: "string", + }, + { + internalType: "string", + name: "symbol", + type: "string", + }, + ], + name: "createERC20Wrapper", + outputs: [ + { + internalType: "contract ISuperToken", + name: "superToken", + type: "address", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_underlyingTokenAddress", + type: "address", + }, + ], + name: "getCanonicalERC20Wrapper", + outputs: [ + { + internalType: "address", + name: "superTokenAddress", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getHost", + outputs: [ + { + internalType: "address", + name: "host", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getSuperTokenLogic", + outputs: [ + { + internalType: "contract ISuperToken", + name: "superToken", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "initialize", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "customSuperTokenProxy", + type: "address", + }, + ], + name: "initializeCustomSuperToken", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +export class ISuperTokenFactory__factory { + static readonly abi = _abi; + static createInterface(): ISuperTokenFactoryInterface { + return new utils.Interface(_abi) as ISuperTokenFactoryInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): ISuperTokenFactory { + return new Contract(address, _abi, signerOrProvider) as ISuperTokenFactory; + } +} diff --git a/contracts/typechain-types/factories/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken__factory.ts b/contracts/typechain-types/factories/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken__factory.ts new file mode 100644 index 0000000..f1223fc --- /dev/null +++ b/contracts/typechain-types/factories/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken__factory.ts @@ -0,0 +1,1777 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + ISuperToken, + ISuperTokenInterface, +} from "../../../../../../@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken"; + +const _abi = [ + { + inputs: [], + name: "SF_TOKEN_AGREEMENT_ALREADY_EXISTS", + type: "error", + }, + { + inputs: [], + name: "SF_TOKEN_AGREEMENT_DOES_NOT_EXIST", + type: "error", + }, + { + inputs: [], + name: "SF_TOKEN_BURN_INSUFFICIENT_BALANCE", + type: "error", + }, + { + inputs: [], + name: "SF_TOKEN_MOVE_INSUFFICIENT_BALANCE", + type: "error", + }, + { + inputs: [], + name: "SF_TOKEN_ONLY_HOST", + type: "error", + }, + { + inputs: [], + name: "SF_TOKEN_ONLY_LISTED_AGREEMENT", + type: "error", + }, + { + inputs: [], + name: "SUPER_TOKEN_APPROVE_FROM_ZERO_ADDRESS", + type: "error", + }, + { + inputs: [], + name: "SUPER_TOKEN_APPROVE_TO_ZERO_ADDRESS", + type: "error", + }, + { + inputs: [], + name: "SUPER_TOKEN_BURN_FROM_ZERO_ADDRESS", + type: "error", + }, + { + inputs: [], + name: "SUPER_TOKEN_CALLER_IS_NOT_OPERATOR_FOR_HOLDER", + type: "error", + }, + { + inputs: [], + name: "SUPER_TOKEN_INFLATIONARY_DEFLATIONARY_NOT_SUPPORTED", + type: "error", + }, + { + inputs: [], + name: "SUPER_TOKEN_MINT_TO_ZERO_ADDRESS", + type: "error", + }, + { + inputs: [], + name: "SUPER_TOKEN_NOT_ERC777_TOKENS_RECIPIENT", + type: "error", + }, + { + inputs: [], + name: "SUPER_TOKEN_NO_UNDERLYING_TOKEN", + type: "error", + }, + { + inputs: [], + name: "SUPER_TOKEN_ONLY_HOST", + type: "error", + }, + { + inputs: [], + name: "SUPER_TOKEN_ONLY_SELF", + type: "error", + }, + { + inputs: [], + name: "SUPER_TOKEN_TRANSFER_FROM_ZERO_ADDRESS", + type: "error", + }, + { + inputs: [], + name: "SUPER_TOKEN_TRANSFER_TO_ZERO_ADDRESS", + type: "error", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "agreementClass", + type: "address", + }, + { + indexed: false, + internalType: "bytes32", + name: "id", + type: "bytes32", + }, + { + indexed: false, + internalType: "bytes32[]", + name: "data", + type: "bytes32[]", + }, + ], + name: "AgreementCreated", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "agreementClass", + type: "address", + }, + { + indexed: false, + internalType: "bytes32", + name: "id", + type: "bytes32", + }, + { + indexed: true, + internalType: "address", + name: "penaltyAccount", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "rewardAccount", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "rewardAmount", + type: "uint256", + }, + ], + name: "AgreementLiquidated", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "liquidatorAccount", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "agreementClass", + type: "address", + }, + { + indexed: false, + internalType: "bytes32", + name: "id", + type: "bytes32", + }, + { + indexed: true, + internalType: "address", + name: "penaltyAccount", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "bondAccount", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "rewardAmount", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "bailoutAmount", + type: "uint256", + }, + ], + name: "AgreementLiquidatedBy", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "agreementClass", + type: "address", + }, + { + indexed: false, + internalType: "bytes32", + name: "id", + type: "bytes32", + }, + { + indexed: true, + internalType: "address", + name: "liquidatorAccount", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "targetAccount", + type: "address", + }, + { + indexed: false, + internalType: "address", + name: "rewardAmountReceiver", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "rewardAmount", + type: "uint256", + }, + { + indexed: false, + internalType: "int256", + name: "targetAccountBalanceDelta", + type: "int256", + }, + { + indexed: false, + internalType: "bytes", + name: "liquidationTypeData", + type: "bytes", + }, + ], + name: "AgreementLiquidatedV2", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "agreementClass", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "account", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "slotId", + type: "uint256", + }, + ], + name: "AgreementStateUpdated", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "agreementClass", + type: "address", + }, + { + indexed: false, + internalType: "bytes32", + name: "id", + type: "bytes32", + }, + ], + name: "AgreementTerminated", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "agreementClass", + type: "address", + }, + { + indexed: false, + internalType: "bytes32", + name: "id", + type: "bytes32", + }, + { + indexed: false, + internalType: "bytes32[]", + name: "data", + type: "bytes32[]", + }, + ], + name: "AgreementUpdated", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "owner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "spender", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "Approval", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "operator", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "tokenHolder", + type: "address", + }, + ], + name: "AuthorizedOperator", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "bailoutAccount", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "bailoutAmount", + type: "uint256", + }, + ], + name: "Bailout", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "operator", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "from", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "amount", + type: "uint256", + }, + { + indexed: false, + internalType: "bytes", + name: "data", + type: "bytes", + }, + { + indexed: false, + internalType: "bytes", + name: "operatorData", + type: "bytes", + }, + ], + name: "Burned", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "operator", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "to", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "amount", + type: "uint256", + }, + { + indexed: false, + internalType: "bytes", + name: "data", + type: "bytes", + }, + { + indexed: false, + internalType: "bytes", + name: "operatorData", + type: "bytes", + }, + ], + name: "Minted", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "operator", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "tokenHolder", + type: "address", + }, + ], + name: "RevokedOperator", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "operator", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "from", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "to", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "amount", + type: "uint256", + }, + { + indexed: false, + internalType: "bytes", + name: "data", + type: "bytes", + }, + { + indexed: false, + internalType: "bytes", + name: "operatorData", + type: "bytes", + }, + ], + name: "Sent", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "account", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "TokenDowngraded", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "account", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "TokenUpgraded", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "from", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "to", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "Transfer", + type: "event", + }, + { + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + { + internalType: "address", + name: "spender", + type: "address", + }, + ], + name: "allowance", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "spender", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "approve", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "operator", + type: "address", + }, + ], + name: "authorizeOperator", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "balanceOf", + outputs: [ + { + internalType: "uint256", + name: "balance", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + name: "burn", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "id", + type: "bytes32", + }, + { + internalType: "bytes32[]", + name: "data", + type: "bytes32[]", + }, + ], + name: "createAgreement", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "decimals", + outputs: [ + { + internalType: "uint8", + name: "", + type: "uint8", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "spender", + type: "address", + }, + { + internalType: "uint256", + name: "subtractedValue", + type: "uint256", + }, + ], + name: "decreaseAllowance", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "defaultOperators", + outputs: [ + { + internalType: "address[]", + name: "", + type: "address[]", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "downgrade", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "downgradeTo", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "getAccountActiveAgreements", + outputs: [ + { + internalType: "contract ISuperAgreement[]", + name: "activeAgreements", + type: "address[]", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "agreementClass", + type: "address", + }, + { + internalType: "bytes32", + name: "id", + type: "bytes32", + }, + { + internalType: "uint256", + name: "dataLength", + type: "uint256", + }, + ], + name: "getAgreementData", + outputs: [ + { + internalType: "bytes32[]", + name: "data", + type: "bytes32[]", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "agreementClass", + type: "address", + }, + { + internalType: "address", + name: "account", + type: "address", + }, + { + internalType: "uint256", + name: "slotId", + type: "uint256", + }, + { + internalType: "uint256", + name: "dataLength", + type: "uint256", + }, + ], + name: "getAgreementStateSlot", + outputs: [ + { + internalType: "bytes32[]", + name: "slotData", + type: "bytes32[]", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getHost", + outputs: [ + { + internalType: "address", + name: "host", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getUnderlyingToken", + outputs: [ + { + internalType: "address", + name: "tokenAddr", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "granularity", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "spender", + type: "address", + }, + { + internalType: "uint256", + name: "addedValue", + type: "uint256", + }, + ], + name: "increaseAllowance", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "contract IERC20", + name: "underlyingToken", + type: "address", + }, + { + internalType: "uint8", + name: "underlyingDecimals", + type: "uint8", + }, + { + internalType: "string", + name: "n", + type: "string", + }, + { + internalType: "string", + name: "s", + type: "string", + }, + ], + name: "initialize", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + { + internalType: "uint256", + name: "timestamp", + type: "uint256", + }, + ], + name: "isAccountCritical", + outputs: [ + { + internalType: "bool", + name: "isCritical", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "isAccountCriticalNow", + outputs: [ + { + internalType: "bool", + name: "isCritical", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + { + internalType: "uint256", + name: "timestamp", + type: "uint256", + }, + ], + name: "isAccountSolvent", + outputs: [ + { + internalType: "bool", + name: "isSolvent", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "isAccountSolventNow", + outputs: [ + { + internalType: "bool", + name: "isSolvent", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "operator", + type: "address", + }, + { + internalType: "address", + name: "tokenHolder", + type: "address", + }, + ], + name: "isOperatorFor", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "id", + type: "bytes32", + }, + { + internalType: "bytes", + name: "liquidationTypeData", + type: "bytes", + }, + { + internalType: "address", + name: "liquidatorAccount", + type: "address", + }, + { + internalType: "bool", + name: "useDefaultRewardAccount", + type: "bool", + }, + { + internalType: "address", + name: "targetAccount", + type: "address", + }, + { + internalType: "uint256", + name: "rewardAmount", + type: "uint256", + }, + { + internalType: "int256", + name: "targetAccountBalanceDelta", + type: "int256", + }, + ], + name: "makeLiquidationPayoutsV2", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "name", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + { + internalType: "address", + name: "spender", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "operationApprove", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + { + internalType: "address", + name: "spender", + type: "address", + }, + { + internalType: "uint256", + name: "subtractedValue", + type: "uint256", + }, + ], + name: "operationDecreaseAllowance", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "operationDowngrade", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + { + internalType: "address", + name: "spender", + type: "address", + }, + { + internalType: "uint256", + name: "addedValue", + type: "uint256", + }, + ], + name: "operationIncreaseAllowance", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "spender", + type: "address", + }, + { + internalType: "address", + name: "recipient", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + name: "operationSend", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + { + internalType: "address", + name: "spender", + type: "address", + }, + { + internalType: "address", + name: "recipient", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "operationTransferFrom", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "operationUpgrade", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + { + internalType: "bytes", + name: "operatorData", + type: "bytes", + }, + ], + name: "operatorBurn", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "sender", + type: "address", + }, + { + internalType: "address", + name: "recipient", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + { + internalType: "bytes", + name: "operatorData", + type: "bytes", + }, + ], + name: "operatorSend", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + { + internalType: "uint256", + name: "timestamp", + type: "uint256", + }, + ], + name: "realtimeBalanceOf", + outputs: [ + { + internalType: "int256", + name: "availableBalance", + type: "int256", + }, + { + internalType: "uint256", + name: "deposit", + type: "uint256", + }, + { + internalType: "uint256", + name: "owedDeposit", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "realtimeBalanceOfNow", + outputs: [ + { + internalType: "int256", + name: "availableBalance", + type: "int256", + }, + { + internalType: "uint256", + name: "deposit", + type: "uint256", + }, + { + internalType: "uint256", + name: "owedDeposit", + type: "uint256", + }, + { + internalType: "uint256", + name: "timestamp", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "operator", + type: "address", + }, + ], + name: "revokeOperator", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + { + internalType: "address", + name: "spender", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "selfApproveFor", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + { + internalType: "bytes", + name: "userData", + type: "bytes", + }, + ], + name: "selfBurn", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + { + internalType: "bytes", + name: "userData", + type: "bytes", + }, + ], + name: "selfMint", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "sender", + type: "address", + }, + { + internalType: "address", + name: "spender", + type: "address", + }, + { + internalType: "address", + name: "recipient", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "selfTransferFrom", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "recipient", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + name: "send", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + { + internalType: "int256", + name: "delta", + type: "int256", + }, + ], + name: "settleBalance", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "symbol", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "id", + type: "bytes32", + }, + { + internalType: "uint256", + name: "dataLength", + type: "uint256", + }, + ], + name: "terminateAgreement", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "totalSupply", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "recipient", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "transfer", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "recipient", + type: "address", + }, + ], + name: "transferAll", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "sender", + type: "address", + }, + { + internalType: "address", + name: "recipient", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "transferFrom", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "id", + type: "bytes32", + }, + { + internalType: "bytes32[]", + name: "data", + type: "bytes32[]", + }, + ], + name: "updateAgreementData", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + { + internalType: "uint256", + name: "slotId", + type: "uint256", + }, + { + internalType: "bytes32[]", + name: "slotData", + type: "bytes32[]", + }, + ], + name: "updateAgreementStateSlot", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "upgrade", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + name: "upgradeTo", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +export class ISuperToken__factory { + static readonly abi = _abi; + static createInterface(): ISuperTokenInterface { + return new utils.Interface(_abi) as ISuperTokenInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): ISuperToken { + return new Contract(address, _abi, signerOrProvider) as ISuperToken; + } +} diff --git a/contracts/typechain-types/factories/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance__factory.ts b/contracts/typechain-types/factories/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance__factory.ts new file mode 100644 index 0000000..026f801 --- /dev/null +++ b/contracts/typechain-types/factories/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance__factory.ts @@ -0,0 +1,264 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + ISuperfluidGovernance, + ISuperfluidGovernanceInterface, +} from "../../../../../../@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance"; + +const _abi = [ + { + inputs: [], + name: "SF_GOV_ARRAYS_NOT_SAME_LENGTH", + type: "error", + }, + { + inputs: [], + name: "SF_GOV_INVALID_LIQUIDATION_OR_PATRICIAN_PERIOD", + type: "error", + }, + { + inputs: [], + name: "SF_GOV_MUST_BE_CONTRACT", + type: "error", + }, + { + inputs: [ + { + internalType: "contract ISuperfluid", + name: "host", + type: "address", + }, + { + internalType: "contract ISuperToken[]", + name: "tokens", + type: "address[]", + }, + ], + name: "batchUpdateSuperTokenLogic", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "contract ISuperfluid", + name: "host", + type: "address", + }, + { + internalType: "contract ISuperfluidToken", + name: "superToken", + type: "address", + }, + { + internalType: "bytes32", + name: "key", + type: "bytes32", + }, + ], + name: "clearConfig", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "contract ISuperfluid", + name: "host", + type: "address", + }, + { + internalType: "contract ISuperfluidToken", + name: "superToken", + type: "address", + }, + { + internalType: "bytes32", + name: "key", + type: "bytes32", + }, + ], + name: "getConfigAsAddress", + outputs: [ + { + internalType: "address", + name: "value", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "contract ISuperfluid", + name: "host", + type: "address", + }, + { + internalType: "contract ISuperfluidToken", + name: "superToken", + type: "address", + }, + { + internalType: "bytes32", + name: "key", + type: "bytes32", + }, + ], + name: "getConfigAsUint256", + outputs: [ + { + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "contract ISuperfluid", + name: "host", + type: "address", + }, + { + internalType: "address", + name: "agreementClass", + type: "address", + }, + ], + name: "registerAgreementClass", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "contract ISuperfluid", + name: "host", + type: "address", + }, + { + internalType: "address", + name: "newGov", + type: "address", + }, + ], + name: "replaceGovernance", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "contract ISuperfluid", + name: "host", + type: "address", + }, + { + internalType: "contract ISuperfluidToken", + name: "superToken", + type: "address", + }, + { + internalType: "bytes32", + name: "key", + type: "bytes32", + }, + { + internalType: "address", + name: "value", + type: "address", + }, + ], + name: "setConfig", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "contract ISuperfluid", + name: "host", + type: "address", + }, + { + internalType: "contract ISuperfluidToken", + name: "superToken", + type: "address", + }, + { + internalType: "bytes32", + name: "key", + type: "bytes32", + }, + { + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "setConfig", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "contract ISuperfluid", + name: "host", + type: "address", + }, + { + internalType: "address", + name: "hostNewLogic", + type: "address", + }, + { + internalType: "address[]", + name: "agreementClassNewLogics", + type: "address[]", + }, + { + internalType: "address", + name: "superTokenFactoryNewLogic", + type: "address", + }, + ], + name: "updateContracts", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +export class ISuperfluidGovernance__factory { + static readonly abi = _abi; + static createInterface(): ISuperfluidGovernanceInterface { + return new utils.Interface(_abi) as ISuperfluidGovernanceInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): ISuperfluidGovernance { + return new Contract( + address, + _abi, + signerOrProvider + ) as ISuperfluidGovernance; + } +} diff --git a/contracts/typechain-types/factories/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken__factory.ts b/contracts/typechain-types/factories/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken__factory.ts new file mode 100644 index 0000000..f646581 --- /dev/null +++ b/contracts/typechain-types/factories/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken__factory.ts @@ -0,0 +1,697 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + ISuperfluidToken, + ISuperfluidTokenInterface, +} from "../../../../../../@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken"; + +const _abi = [ + { + inputs: [], + name: "SF_TOKEN_AGREEMENT_ALREADY_EXISTS", + type: "error", + }, + { + inputs: [], + name: "SF_TOKEN_AGREEMENT_DOES_NOT_EXIST", + type: "error", + }, + { + inputs: [], + name: "SF_TOKEN_BURN_INSUFFICIENT_BALANCE", + type: "error", + }, + { + inputs: [], + name: "SF_TOKEN_MOVE_INSUFFICIENT_BALANCE", + type: "error", + }, + { + inputs: [], + name: "SF_TOKEN_ONLY_HOST", + type: "error", + }, + { + inputs: [], + name: "SF_TOKEN_ONLY_LISTED_AGREEMENT", + type: "error", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "agreementClass", + type: "address", + }, + { + indexed: false, + internalType: "bytes32", + name: "id", + type: "bytes32", + }, + { + indexed: false, + internalType: "bytes32[]", + name: "data", + type: "bytes32[]", + }, + ], + name: "AgreementCreated", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "agreementClass", + type: "address", + }, + { + indexed: false, + internalType: "bytes32", + name: "id", + type: "bytes32", + }, + { + indexed: true, + internalType: "address", + name: "penaltyAccount", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "rewardAccount", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "rewardAmount", + type: "uint256", + }, + ], + name: "AgreementLiquidated", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "liquidatorAccount", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "agreementClass", + type: "address", + }, + { + indexed: false, + internalType: "bytes32", + name: "id", + type: "bytes32", + }, + { + indexed: true, + internalType: "address", + name: "penaltyAccount", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "bondAccount", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "rewardAmount", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "bailoutAmount", + type: "uint256", + }, + ], + name: "AgreementLiquidatedBy", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "agreementClass", + type: "address", + }, + { + indexed: false, + internalType: "bytes32", + name: "id", + type: "bytes32", + }, + { + indexed: true, + internalType: "address", + name: "liquidatorAccount", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "targetAccount", + type: "address", + }, + { + indexed: false, + internalType: "address", + name: "rewardAmountReceiver", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "rewardAmount", + type: "uint256", + }, + { + indexed: false, + internalType: "int256", + name: "targetAccountBalanceDelta", + type: "int256", + }, + { + indexed: false, + internalType: "bytes", + name: "liquidationTypeData", + type: "bytes", + }, + ], + name: "AgreementLiquidatedV2", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "agreementClass", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "account", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "slotId", + type: "uint256", + }, + ], + name: "AgreementStateUpdated", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "agreementClass", + type: "address", + }, + { + indexed: false, + internalType: "bytes32", + name: "id", + type: "bytes32", + }, + ], + name: "AgreementTerminated", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "agreementClass", + type: "address", + }, + { + indexed: false, + internalType: "bytes32", + name: "id", + type: "bytes32", + }, + { + indexed: false, + internalType: "bytes32[]", + name: "data", + type: "bytes32[]", + }, + ], + name: "AgreementUpdated", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "bailoutAccount", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "bailoutAmount", + type: "uint256", + }, + ], + name: "Bailout", + type: "event", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "id", + type: "bytes32", + }, + { + internalType: "bytes32[]", + name: "data", + type: "bytes32[]", + }, + ], + name: "createAgreement", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "getAccountActiveAgreements", + outputs: [ + { + internalType: "contract ISuperAgreement[]", + name: "activeAgreements", + type: "address[]", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "agreementClass", + type: "address", + }, + { + internalType: "bytes32", + name: "id", + type: "bytes32", + }, + { + internalType: "uint256", + name: "dataLength", + type: "uint256", + }, + ], + name: "getAgreementData", + outputs: [ + { + internalType: "bytes32[]", + name: "data", + type: "bytes32[]", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "agreementClass", + type: "address", + }, + { + internalType: "address", + name: "account", + type: "address", + }, + { + internalType: "uint256", + name: "slotId", + type: "uint256", + }, + { + internalType: "uint256", + name: "dataLength", + type: "uint256", + }, + ], + name: "getAgreementStateSlot", + outputs: [ + { + internalType: "bytes32[]", + name: "slotData", + type: "bytes32[]", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getHost", + outputs: [ + { + internalType: "address", + name: "host", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + { + internalType: "uint256", + name: "timestamp", + type: "uint256", + }, + ], + name: "isAccountCritical", + outputs: [ + { + internalType: "bool", + name: "isCritical", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "isAccountCriticalNow", + outputs: [ + { + internalType: "bool", + name: "isCritical", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + { + internalType: "uint256", + name: "timestamp", + type: "uint256", + }, + ], + name: "isAccountSolvent", + outputs: [ + { + internalType: "bool", + name: "isSolvent", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "isAccountSolventNow", + outputs: [ + { + internalType: "bool", + name: "isSolvent", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "id", + type: "bytes32", + }, + { + internalType: "bytes", + name: "liquidationTypeData", + type: "bytes", + }, + { + internalType: "address", + name: "liquidatorAccount", + type: "address", + }, + { + internalType: "bool", + name: "useDefaultRewardAccount", + type: "bool", + }, + { + internalType: "address", + name: "targetAccount", + type: "address", + }, + { + internalType: "uint256", + name: "rewardAmount", + type: "uint256", + }, + { + internalType: "int256", + name: "targetAccountBalanceDelta", + type: "int256", + }, + ], + name: "makeLiquidationPayoutsV2", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + { + internalType: "uint256", + name: "timestamp", + type: "uint256", + }, + ], + name: "realtimeBalanceOf", + outputs: [ + { + internalType: "int256", + name: "availableBalance", + type: "int256", + }, + { + internalType: "uint256", + name: "deposit", + type: "uint256", + }, + { + internalType: "uint256", + name: "owedDeposit", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "realtimeBalanceOfNow", + outputs: [ + { + internalType: "int256", + name: "availableBalance", + type: "int256", + }, + { + internalType: "uint256", + name: "deposit", + type: "uint256", + }, + { + internalType: "uint256", + name: "owedDeposit", + type: "uint256", + }, + { + internalType: "uint256", + name: "timestamp", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + { + internalType: "int256", + name: "delta", + type: "int256", + }, + ], + name: "settleBalance", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "id", + type: "bytes32", + }, + { + internalType: "uint256", + name: "dataLength", + type: "uint256", + }, + ], + name: "terminateAgreement", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "id", + type: "bytes32", + }, + { + internalType: "bytes32[]", + name: "data", + type: "bytes32[]", + }, + ], + name: "updateAgreementData", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + { + internalType: "uint256", + name: "slotId", + type: "uint256", + }, + { + internalType: "bytes32[]", + name: "slotData", + type: "bytes32[]", + }, + ], + name: "updateAgreementStateSlot", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +export class ISuperfluidToken__factory { + static readonly abi = _abi; + static createInterface(): ISuperfluidTokenInterface { + return new utils.Interface(_abi) as ISuperfluidTokenInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): ISuperfluidToken { + return new Contract(address, _abi, signerOrProvider) as ISuperfluidToken; + } +} diff --git a/contracts/typechain-types/factories/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid__factory.ts b/contracts/typechain-types/factories/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid__factory.ts new file mode 100644 index 0000000..c3c1a15 --- /dev/null +++ b/contracts/typechain-types/factories/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid__factory.ts @@ -0,0 +1,1146 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + ISuperfluid, + ISuperfluidInterface, +} from "../../../../../../@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid"; + +const _abi = [ + { + inputs: [ + { + internalType: "uint256", + name: "_code", + type: "uint256", + }, + ], + name: "APP_RULE", + type: "error", + }, + { + inputs: [], + name: "HOST_AGREEMENT_ALREADY_REGISTERED", + type: "error", + }, + { + inputs: [], + name: "HOST_AGREEMENT_CALLBACK_IS_NOT_ACTION", + type: "error", + }, + { + inputs: [], + name: "HOST_AGREEMENT_IS_NOT_REGISTERED", + type: "error", + }, + { + inputs: [], + name: "HOST_CALL_AGREEMENT_WITH_CTX_FROM_WRONG_ADDRESS", + type: "error", + }, + { + inputs: [], + name: "HOST_CALL_APP_ACTION_WITH_CTX_FROM_WRONG_ADDRESS", + type: "error", + }, + { + inputs: [], + name: "HOST_CANNOT_DOWNGRADE_TO_NON_UPGRADEABLE", + type: "error", + }, + { + inputs: [], + name: "HOST_INVALID_CONFIG_WORD", + type: "error", + }, + { + inputs: [], + name: "HOST_INVALID_OR_EXPIRED_SUPER_APP_REGISTRATION_KEY", + type: "error", + }, + { + inputs: [], + name: "HOST_MAX_256_AGREEMENTS", + type: "error", + }, + { + inputs: [], + name: "HOST_MUST_BE_CONTRACT", + type: "error", + }, + { + inputs: [], + name: "HOST_NON_UPGRADEABLE", + type: "error", + }, + { + inputs: [], + name: "HOST_NON_ZERO_LENGTH_PLACEHOLDER_CTX", + type: "error", + }, + { + inputs: [], + name: "HOST_NOT_A_SUPER_APP", + type: "error", + }, + { + inputs: [], + name: "HOST_NO_APP_REGISTRATION_PERMISSIONS", + type: "error", + }, + { + inputs: [], + name: "HOST_ONLY_GOVERNANCE", + type: "error", + }, + { + inputs: [], + name: "HOST_ONLY_LISTED_AGREEMENT", + type: "error", + }, + { + inputs: [], + name: "HOST_RECEIVER_IS_NOT_SUPER_APP", + type: "error", + }, + { + inputs: [], + name: "HOST_SENDER_IS_NOT_SUPER_APP", + type: "error", + }, + { + inputs: [], + name: "HOST_SOURCE_APP_NEEDS_HIGHER_APP_LEVEL", + type: "error", + }, + { + inputs: [], + name: "HOST_SUPER_APP_ALREADY_REGISTERED", + type: "error", + }, + { + inputs: [], + name: "HOST_SUPER_APP_IS_JAILED", + type: "error", + }, + { + inputs: [], + name: "HOST_UNAUTHORIZED_SUPER_APP_FACTORY", + type: "error", + }, + { + inputs: [], + name: "HOST_UNKNOWN_BATCH_CALL_OPERATION_TYPE", + type: "error", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "bytes32", + name: "agreementType", + type: "bytes32", + }, + { + indexed: false, + internalType: "address", + name: "code", + type: "address", + }, + ], + name: "AgreementClassRegistered", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "bytes32", + name: "agreementType", + type: "bytes32", + }, + { + indexed: false, + internalType: "address", + name: "code", + type: "address", + }, + ], + name: "AgreementClassUpdated", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "contract ISuperApp", + name: "app", + type: "address", + }, + ], + name: "AppRegistered", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "contract ISuperfluidGovernance", + name: "oldGov", + type: "address", + }, + { + indexed: false, + internalType: "contract ISuperfluidGovernance", + name: "newGov", + type: "address", + }, + ], + name: "GovernanceReplaced", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "contract ISuperApp", + name: "app", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "reason", + type: "uint256", + }, + ], + name: "Jail", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "contract ISuperTokenFactory", + name: "newFactory", + type: "address", + }, + ], + name: "SuperTokenFactoryUpdated", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "contract ISuperToken", + name: "token", + type: "address", + }, + { + indexed: false, + internalType: "address", + name: "code", + type: "address", + }, + ], + name: "SuperTokenLogicUpdated", + type: "event", + }, + { + inputs: [ + { + internalType: "uint256", + name: "bitmap", + type: "uint256", + }, + { + internalType: "bytes32", + name: "agreementType", + type: "bytes32", + }, + ], + name: "addToAgreementClassesBitmap", + outputs: [ + { + internalType: "uint256", + name: "newBitmap", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "contract ISuperApp", + name: "targetApp", + type: "address", + }, + ], + name: "allowCompositeApp", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes", + name: "ctx", + type: "bytes", + }, + { + internalType: "int256", + name: "appCreditUsedDelta", + type: "int256", + }, + ], + name: "appCallbackPop", + outputs: [ + { + internalType: "bytes", + name: "newCtx", + type: "bytes", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes", + name: "ctx", + type: "bytes", + }, + { + internalType: "contract ISuperApp", + name: "app", + type: "address", + }, + { + internalType: "uint256", + name: "appCreditGranted", + type: "uint256", + }, + { + internalType: "int256", + name: "appCreditUsed", + type: "int256", + }, + { + internalType: "contract ISuperfluidToken", + name: "appCreditToken", + type: "address", + }, + ], + name: "appCallbackPush", + outputs: [ + { + internalType: "bytes", + name: "newCtx", + type: "bytes", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + components: [ + { + internalType: "uint32", + name: "operationType", + type: "uint32", + }, + { + internalType: "address", + name: "target", + type: "address", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + internalType: "struct ISuperfluid.Operation[]", + name: "operations", + type: "tuple[]", + }, + ], + name: "batchCall", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "contract ISuperAgreement", + name: "agreementClass", + type: "address", + }, + { + internalType: "bytes", + name: "callData", + type: "bytes", + }, + { + internalType: "bytes", + name: "userData", + type: "bytes", + }, + ], + name: "callAgreement", + outputs: [ + { + internalType: "bytes", + name: "returnedData", + type: "bytes", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "contract ISuperAgreement", + name: "agreementClass", + type: "address", + }, + { + internalType: "bytes", + name: "callData", + type: "bytes", + }, + { + internalType: "bytes", + name: "userData", + type: "bytes", + }, + { + internalType: "bytes", + name: "ctx", + type: "bytes", + }, + ], + name: "callAgreementWithContext", + outputs: [ + { + internalType: "bytes", + name: "newCtx", + type: "bytes", + }, + { + internalType: "bytes", + name: "returnedData", + type: "bytes", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "contract ISuperApp", + name: "app", + type: "address", + }, + { + internalType: "bytes", + name: "callData", + type: "bytes", + }, + ], + name: "callAppAction", + outputs: [ + { + internalType: "bytes", + name: "returnedData", + type: "bytes", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "contract ISuperApp", + name: "app", + type: "address", + }, + { + internalType: "bytes", + name: "callData", + type: "bytes", + }, + { + internalType: "bytes", + name: "ctx", + type: "bytes", + }, + ], + name: "callAppActionWithContext", + outputs: [ + { + internalType: "bytes", + name: "newCtx", + type: "bytes", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "contract ISuperApp", + name: "app", + type: "address", + }, + { + internalType: "bytes", + name: "callData", + type: "bytes", + }, + { + internalType: "bool", + name: "isTermination", + type: "bool", + }, + { + internalType: "bytes", + name: "ctx", + type: "bytes", + }, + ], + name: "callAppAfterCallback", + outputs: [ + { + internalType: "bytes", + name: "newCtx", + type: "bytes", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "contract ISuperApp", + name: "app", + type: "address", + }, + { + internalType: "bytes", + name: "callData", + type: "bytes", + }, + { + internalType: "bool", + name: "isTermination", + type: "bool", + }, + { + internalType: "bytes", + name: "ctx", + type: "bytes", + }, + ], + name: "callAppBeforeCallback", + outputs: [ + { + internalType: "bytes", + name: "cbdata", + type: "bytes", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes", + name: "ctx", + type: "bytes", + }, + { + internalType: "int256", + name: "appCreditUsedMore", + type: "int256", + }, + ], + name: "ctxUseCredit", + outputs: [ + { + internalType: "bytes", + name: "newCtx", + type: "bytes", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes", + name: "ctx", + type: "bytes", + }, + ], + name: "decodeCtx", + outputs: [ + { + components: [ + { + internalType: "uint8", + name: "appCallbackLevel", + type: "uint8", + }, + { + internalType: "uint8", + name: "callType", + type: "uint8", + }, + { + internalType: "uint256", + name: "timestamp", + type: "uint256", + }, + { + internalType: "address", + name: "msgSender", + type: "address", + }, + { + internalType: "bytes4", + name: "agreementSelector", + type: "bytes4", + }, + { + internalType: "bytes", + name: "userData", + type: "bytes", + }, + { + internalType: "uint256", + name: "appCreditGranted", + type: "uint256", + }, + { + internalType: "uint256", + name: "appCreditWantedDeprecated", + type: "uint256", + }, + { + internalType: "int256", + name: "appCreditUsed", + type: "int256", + }, + { + internalType: "address", + name: "appAddress", + type: "address", + }, + { + internalType: "contract ISuperfluidToken", + name: "appCreditToken", + type: "address", + }, + ], + internalType: "struct ISuperfluid.Context", + name: "context", + type: "tuple", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [ + { + components: [ + { + internalType: "uint32", + name: "operationType", + type: "uint32", + }, + { + internalType: "address", + name: "target", + type: "address", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + internalType: "struct ISuperfluid.Operation[]", + name: "operations", + type: "tuple[]", + }, + ], + name: "forwardBatchCall", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "agreementType", + type: "bytes32", + }, + ], + name: "getAgreementClass", + outputs: [ + { + internalType: "contract ISuperAgreement", + name: "agreementClass", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "contract ISuperApp", + name: "app", + type: "address", + }, + ], + name: "getAppCallbackLevel", + outputs: [ + { + internalType: "uint8", + name: "appCallbackLevel", + type: "uint8", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "contract ISuperApp", + name: "app", + type: "address", + }, + ], + name: "getAppManifest", + outputs: [ + { + internalType: "bool", + name: "isSuperApp", + type: "bool", + }, + { + internalType: "bool", + name: "isJailed", + type: "bool", + }, + { + internalType: "uint256", + name: "noopMask", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getGovernance", + outputs: [ + { + internalType: "contract ISuperfluidGovernance", + name: "governance", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getNow", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getSuperTokenFactory", + outputs: [ + { + internalType: "contract ISuperTokenFactory", + name: "factory", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getSuperTokenFactoryLogic", + outputs: [ + { + internalType: "address", + name: "logic", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "contract ISuperAgreement", + name: "agreementClass", + type: "address", + }, + ], + name: "isAgreementClassListed", + outputs: [ + { + internalType: "bool", + name: "yes", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "agreementType", + type: "bytes32", + }, + ], + name: "isAgreementTypeListed", + outputs: [ + { + internalType: "bool", + name: "yes", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "contract ISuperApp", + name: "app", + type: "address", + }, + ], + name: "isApp", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "contract ISuperApp", + name: "app", + type: "address", + }, + ], + name: "isAppJailed", + outputs: [ + { + internalType: "bool", + name: "isJail", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "contract ISuperApp", + name: "app", + type: "address", + }, + { + internalType: "contract ISuperApp", + name: "targetApp", + type: "address", + }, + ], + name: "isCompositeAppAllowed", + outputs: [ + { + internalType: "bool", + name: "isAppAllowed", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes", + name: "ctx", + type: "bytes", + }, + ], + name: "isCtxValid", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes", + name: "ctx", + type: "bytes", + }, + { + internalType: "contract ISuperApp", + name: "app", + type: "address", + }, + { + internalType: "uint256", + name: "reason", + type: "uint256", + }, + ], + name: "jailApp", + outputs: [ + { + internalType: "bytes", + name: "newCtx", + type: "bytes", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "bitmap", + type: "uint256", + }, + ], + name: "mapAgreementClasses", + outputs: [ + { + internalType: "contract ISuperAgreement[]", + name: "agreementClasses", + type: "address[]", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "contract ISuperAgreement", + name: "agreementClassLogic", + type: "address", + }, + ], + name: "registerAgreementClass", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "configWord", + type: "uint256", + }, + ], + name: "registerApp", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "contract ISuperApp", + name: "app", + type: "address", + }, + { + internalType: "uint256", + name: "configWord", + type: "uint256", + }, + ], + name: "registerAppByFactory", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "configWord", + type: "uint256", + }, + { + internalType: "string", + name: "registrationKey", + type: "string", + }, + ], + name: "registerAppWithKey", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "bitmap", + type: "uint256", + }, + { + internalType: "bytes32", + name: "agreementType", + type: "bytes32", + }, + ], + name: "removeFromAgreementClassesBitmap", + outputs: [ + { + internalType: "uint256", + name: "newBitmap", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "contract ISuperfluidGovernance", + name: "newGov", + type: "address", + }, + ], + name: "replaceGovernance", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "contract ISuperAgreement", + name: "agreementClassLogic", + type: "address", + }, + ], + name: "updateAgreementClass", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "contract ISuperTokenFactory", + name: "newFactory", + type: "address", + }, + ], + name: "updateSuperTokenFactory", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "contract ISuperToken", + name: "token", + type: "address", + }, + ], + name: "updateSuperTokenLogic", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +export class ISuperfluid__factory { + static readonly abi = _abi; + static createInterface(): ISuperfluidInterface { + return new utils.Interface(_abi) as ISuperfluidInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): ISuperfluid { + return new Contract(address, _abi, signerOrProvider) as ISuperfluid; + } +} diff --git a/contracts/typechain-types/factories/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/index.ts b/contracts/typechain-types/factories/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/index.ts new file mode 100644 index 0000000..e135525 --- /dev/null +++ b/contracts/typechain-types/factories/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/index.ts @@ -0,0 +1,10 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { ISuperAgreement__factory } from "./ISuperAgreement__factory"; +export { ISuperApp__factory } from "./ISuperApp__factory"; +export { ISuperToken__factory } from "./ISuperToken__factory"; +export { ISuperTokenFactory__factory } from "./ISuperTokenFactory__factory"; +export { ISuperfluid__factory } from "./ISuperfluid__factory"; +export { ISuperfluidGovernance__factory } from "./ISuperfluidGovernance__factory"; +export { ISuperfluidToken__factory } from "./ISuperfluidToken__factory"; diff --git a/contracts/typechain-types/factories/@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo__factory.ts b/contracts/typechain-types/factories/@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo__factory.ts new file mode 100644 index 0000000..5039fd9 --- /dev/null +++ b/contracts/typechain-types/factories/@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo__factory.ts @@ -0,0 +1,248 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + ERC20WithTokenInfo, + ERC20WithTokenInfoInterface, +} from "../../../../../../@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo"; + +const _abi = [ + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "owner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "spender", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "Approval", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "from", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "to", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "Transfer", + type: "event", + }, + { + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + { + internalType: "address", + name: "spender", + type: "address", + }, + ], + name: "allowance", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "spender", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "approve", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "balanceOf", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "decimals", + outputs: [ + { + internalType: "uint8", + name: "", + type: "uint8", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "name", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "symbol", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "totalSupply", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "transfer", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "from", + type: "address", + }, + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "transferFrom", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +export class ERC20WithTokenInfo__factory { + static readonly abi = _abi; + static createInterface(): ERC20WithTokenInfoInterface { + return new utils.Interface(_abi) as ERC20WithTokenInfoInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): ERC20WithTokenInfo { + return new Contract(address, _abi, signerOrProvider) as ERC20WithTokenInfo; + } +} diff --git a/contracts/typechain-types/factories/@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo__factory.ts b/contracts/typechain-types/factories/@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo__factory.ts new file mode 100644 index 0000000..ac7bf7d --- /dev/null +++ b/contracts/typechain-types/factories/@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo__factory.ts @@ -0,0 +1,65 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + TokenInfo, + TokenInfoInterface, +} from "../../../../../../@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo"; + +const _abi = [ + { + inputs: [], + name: "decimals", + outputs: [ + { + internalType: "uint8", + name: "", + type: "uint8", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "name", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "symbol", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, +] as const; + +export class TokenInfo__factory { + static readonly abi = _abi; + static createInterface(): TokenInfoInterface { + return new utils.Interface(_abi) as TokenInfoInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): TokenInfo { + return new Contract(address, _abi, signerOrProvider) as TokenInfo; + } +} diff --git a/contracts/typechain-types/factories/@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/index.ts b/contracts/typechain-types/factories/@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/index.ts new file mode 100644 index 0000000..b163a54 --- /dev/null +++ b/contracts/typechain-types/factories/@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/index.ts @@ -0,0 +1,5 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { ERC20WithTokenInfo__factory } from "./ERC20WithTokenInfo__factory"; +export { TokenInfo__factory } from "./TokenInfo__factory"; diff --git a/contracts/typechain-types/factories/@superfluid-finance/ethereum-contracts/index.ts b/contracts/typechain-types/factories/@superfluid-finance/ethereum-contracts/index.ts new file mode 100644 index 0000000..6397da0 --- /dev/null +++ b/contracts/typechain-types/factories/@superfluid-finance/ethereum-contracts/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export * as contracts from "./contracts"; diff --git a/contracts/typechain-types/factories/@superfluid-finance/index.ts b/contracts/typechain-types/factories/@superfluid-finance/index.ts new file mode 100644 index 0000000..98e49da --- /dev/null +++ b/contracts/typechain-types/factories/@superfluid-finance/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export * as ethereumContracts from "./ethereum-contracts"; diff --git a/contracts/typechain-types/factories/contracts/Diamond__factory.ts b/contracts/typechain-types/factories/contracts/Diamond__factory.ts new file mode 100644 index 0000000..23e32c5 --- /dev/null +++ b/contracts/typechain-types/factories/contracts/Diamond__factory.ts @@ -0,0 +1,118 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Signer, + utils, + Contract, + ContractFactory, + PayableOverrides, +} from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../common"; +import type { Diamond, DiamondInterface } from "../../contracts/Diamond"; + +const _abi = [ + { + inputs: [ + { + internalType: "address", + name: "_contractOwner", + type: "address", + }, + { + internalType: "address", + name: "_diamondCutFacet", + type: "address", + }, + ], + stateMutability: "payable", + type: "constructor", + }, + { + inputs: [ + { + internalType: "address", + name: "_initializationContractAddress", + type: "address", + }, + { + internalType: "bytes", + name: "_calldata", + type: "bytes", + }, + ], + name: "InitializationFunctionReverted", + type: "error", + }, + { + stateMutability: "payable", + type: "fallback", + }, + { + stateMutability: "payable", + type: "receive", + }, +] as const; + +const _bytecode = + "0x60806040526040516200481938038062004819833981810160405281019062000029919062001965565b620000436000801b83620002b260201b620001671760201c565b62000080604051602001620000589062001a0d565b6040516020818303038152906040528051906020012083620002b260201b620001671760201c565b620000bd604051602001620000959062001a7f565b6040516020818303038152906040528051906020012083620002b260201b620001671760201c565b620000fa604051602001620000d29062001af1565b6040516020818303038152906040528051906020012083620002b260201b620001671760201c565b6000600167ffffffffffffffff8111156200011a576200011962001b13565b5b6040519080825280602002602001820160405280156200015757816020015b62000143620018af565b815260200190600190039081620001395790505b5090506000600167ffffffffffffffff8111156200017a576200017962001b13565b5b604051908082528060200260200182016040528015620001a95781602001602082028036833780820191505090505b509050631f931c1c60e01b81600081518110620001cb57620001ca62001b42565b5b60200260200101907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152505060405180606001604052808473ffffffffffffffffffffffffffffffffffffffff1681526020016000600281111562000255576200025462001b71565b5b8152602001828152508260008151811062000275576200027462001b42565b5b6020026020010181905250620002a882600060405180602001604052806000815250620002c860201b620001751760201c565b5050505062002618565b620002c482826200054c60201b60201c565b5050565b60005b8351811015620004f7576000848281518110620002ed57620002ec62001b42565b5b60200260200101516020015190506000600281111562000312576200031162001b71565b5b81600281111562000328576200032762001b71565b5b0362000388576200038285838151811062000348576200034762001b42565b5b6020026020010151600001518684815181106200036a576200036962001b42565b5b6020026020010151604001516200064060201b60201c565b620004e0565b600160028111156200039f576200039e62001b71565b5b816002811115620003b557620003b462001b71565b5b0362000415576200040f858381518110620003d557620003d462001b42565b5b602002602001015160000151868481518110620003f757620003f662001b42565b5b602002602001015160400151620008e260201b60201c565b620004df565b6002808111156200042b576200042a62001b71565b5b81600281111562000441576200044062001b71565b5b03620004a1576200049b85838151811062000461576200046062001b42565b5b60200260200101516000015186848151811062000483576200048262001b42565b5b60200260200101516040015162000b9660201b60201c565b620004de565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004d59062001c16565b60405180910390fd5b5b5b508080620004ee9062001c71565b915050620002cb565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb6738383836040516200052d9392919062001feb565b60405180910390a162000547828262000d3e60201b60201c565b505050565b6200055e828262000e7260201b60201c565b6200063c5760016200057562000eee60201b60201c565b600001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600081511162000687576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200067e90620020ac565b60405180910390fd5b60006200069962000f1b60201b60201c565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036200070d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007049062002144565b60405180910390fd5b60008160010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054905090506000816bffffffffffffffffffffffff1603620007835762000782828562000f4860201b60201c565b5b60005b8351811015620008db576000848281518110620007a857620007a762001b42565b5b602002602001015190506000846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146200089f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200089690620021dc565b60405180910390fd5b620008b38583868a6200102c60201b60201c565b8380620008c09062002216565b94505050508080620008d29062001c71565b91505062000786565b5050505050565b600081511162000929576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200092090620020ac565b60405180910390fd5b60006200093b62000f1b60201b60201c565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620009af576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009a69062002144565b60405180910390fd5b60008160010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054905090506000816bffffffffffffffffffffffff160362000a255762000a24828562000f4860201b60201c565b5b60005b835181101562000b8f57600084828151811062000a4a5762000a4962001b42565b5b602002602001015190506000846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000b40576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b3790620022c5565b60405180910390fd5b62000b53858284620011d960201b60201c565b62000b678583868a6200102c60201b60201c565b838062000b749062002216565b9450505050808062000b869062001c71565b91505062000a28565b5050505050565b600081511162000bdd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000bd490620020ac565b60405180910390fd5b600062000bef62000f1b60201b60201c565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161462000c63576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c5a906200235d565b60405180910390fd5b60005b825181101562000d3857600083828151811062000c885762000c8762001b42565b5b602002602001015190506000836000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905062000d20848284620011d960201b60201c565b5050808062000d2f9062001c71565b91505062000c66565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16031562000e6e5762000d9f82604051806060016040528060288152602001620047cd602891396200185a60201b60201c565b6000808373ffffffffffffffffffffffffffffffffffffffff168360405162000dc99190620023c1565b600060405180830381855af49150503d806000811462000e06576040519150601f19603f3d011682016040523d82523d6000602084013e62000e0b565b606091505b50915091508162000e6b5760008151111562000e2a5780518082602001fd5b83836040517f192105d700000000000000000000000000000000000000000000000000000000815260040162000e62929190620023da565b60405180910390fd5b50505b5050565b600062000e8462000eee60201b60201c565b600001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000807f4cd15452b25e815d3f9d1a3c7edd985a178edf5eb3461a1acbf855517423d69490508091505090565b6000807fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90508091505090565b62000f7381604051806060016040528060248152602001620047f5602491396200185a60201b60201c565b81600201805490508260010160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555081600201819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b81846000016000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508360010160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018390806001815401808255809150506001900390600052602060002090600891828204019190066004029091909190916101000a81548163ffffffff021916908360e01c021790555080846000016000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200124b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620012429062002484565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620012bc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620012b3906200251c565b60405180910390fd5b6000836000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff169050600060018560010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001805490506200139591906200253e565b9050808214620015305760008560010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018281548110620013fa57620013f962001b42565b5b90600052602060002090600891828204019190066004029054906101000a900460e01b9050808660010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001848154811062001479576200147862001b42565b5b90600052602060002090600891828204019190066004026101000a81548163ffffffff021916908360e01c021790555082866000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550505b8460010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000180548062001587576200158662002579565b5b60019003818190600052602060002090600891828204019190066004026101000a81549063ffffffff02191690559055846000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a8154906bffffffffffffffffffffffff021916905550506000810362001853576000600186600201805490506200167491906200253e565b905060008660010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050818114620017bc576000876002018381548110620016e257620016e162001b42565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508088600201838154811062001729576200172862001b42565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818860010160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550505b86600201805480620017d357620017d262002579565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590558660010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000905550505b5050505050565b6000823b9050600081118290620018a9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620018a09190620025f4565b60405180910390fd5b50505050565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160006002811115620018ee57620018ed62001b71565b5b8152602001606081525090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200192d8262001900565b9050919050565b6200193f8162001920565b81146200194b57600080fd5b50565b6000815190506200195f8162001934565b92915050565b600080604083850312156200197f576200197e620018fb565b5b60006200198f858286016200194e565b9250506020620019a2858286016200194e565b9150509250929050565b600082825260208201905092915050565b7f4d41494e5441494e45525f524f4c450000000000000000000000000000000000600082015250565b6000620019f5600f83620019ac565b915062001a0282620019bd565b602082019050919050565b6000602082019050818103600083015262001a2881620019e6565b9050919050565b7f5452454153555245525f524f4c45000000000000000000000000000000000000600082015250565b600062001a67600e83620019ac565b915062001a748262001a2f565b602082019050919050565b6000602082019050818103600083015262001a9a8162001a58565b9050919050565b7f535452415445474953545f524f4c450000000000000000000000000000000000600082015250565b600062001ad9600f83620019ac565b915062001ae68262001aa1565b602082019050919050565b6000602082019050818103600083015262001b0c8162001aca565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4c69624469616d6f6e644375743a20496e636f7272656374204661636574437560008201527f74416374696f6e00000000000000000000000000000000000000000000000000602082015250565b600062001bfe602783620019ac565b915062001c0b8262001ba0565b604082019050919050565b6000602082019050818103600083015262001c318162001bef565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000819050919050565b600062001c7e8262001c67565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820362001cb35762001cb262001c38565b5b600182019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b62001cf58162001920565b82525050565b6003811062001d0f5762001d0e62001b71565b5b50565b600081905062001d228262001cfb565b919050565b600062001d348262001d12565b9050919050565b62001d468162001d27565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b62001daf8162001d78565b82525050565b600062001dc3838362001da4565b60208301905092915050565b6000602082019050919050565b600062001de98262001d4c565b62001df5818562001d57565b935062001e028362001d68565b8060005b8381101562001e3957815162001e1d888262001db5565b975062001e2a8362001dcf565b92505060018101905062001e06565b5085935050505092915050565b600060608301600083015162001e60600086018262001cea565b50602083015162001e75602086018262001d3b565b506040830151848203604086015262001e8f828262001ddc565b9150508091505092915050565b600062001eaa838362001e46565b905092915050565b6000602082019050919050565b600062001ecc8262001cbe565b62001ed8818562001cc9565b93508360208202850162001eec8562001cda565b8060005b8581101562001f2e578484038952815162001f0c858262001e9c565b945062001f198362001eb2565b925060208a0199505060018101905062001ef0565b50829750879550505050505092915050565b62001f4b8162001920565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b8381101562001f8d57808201518184015260208101905062001f70565b60008484015250505050565b6000601f19601f8301169050919050565b600062001fb78262001f51565b62001fc3818562001f5c565b935062001fd581856020860162001f6d565b62001fe08162001f99565b840191505092915050565b6000606082019050818103600083015262002007818662001ebf565b905062002018602083018562001f40565b81810360408301526200202c818462001faa565b9050949350505050565b7f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660008201527f6163657420746f20637574000000000000000000000000000000000000000000602082015250565b600062002094602b83620019ac565b9150620020a18262002036565b604082019050919050565b60006020820190508181036000830152620020c78162002085565b9050919050565b7f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260008201527f6520616464726573732830290000000000000000000000000000000000000000602082015250565b60006200212c602c83620019ac565b91506200213982620020ce565b604082019050919050565b600060208201905081810360008301526200215f816200211d565b9050919050565b7f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f60008201527f6e207468617420616c7265616479206578697374730000000000000000000000602082015250565b6000620021c4603583620019ac565b9150620021d18262002166565b604082019050919050565b60006020820190508181036000830152620021f781620021b5565b9050919050565b60006bffffffffffffffffffffffff82169050919050565b60006200222382620021fe565b91506bffffffffffffffffffffffff820362002244576200224362001c38565b5b600182019050919050565b7f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60008201527f6374696f6e20776974682073616d652066756e6374696f6e0000000000000000602082015250565b6000620022ad603883620019ac565b9150620022ba826200224f565b604082019050919050565b60006020820190508181036000830152620022e0816200229e565b9050919050565b7f4c69624469616d6f6e644375743a2052656d6f7665206661636574206164647260008201527f657373206d757374206265206164647265737328302900000000000000000000602082015250565b600062002345603683620019ac565b91506200235282620022e7565b604082019050919050565b60006020820190508181036000830152620023788162002336565b9050919050565b600081905092915050565b6000620023978262001f51565b620023a381856200237f565b9350620023b581856020860162001f6d565b80840191505092915050565b6000620023cf82846200238a565b915081905092915050565b6000604082019050620023f1600083018562001f40565b818103602083015262002405818462001faa565b90509392505050565b7f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360008201527f74696f6e207468617420646f65736e2774206578697374000000000000000000602082015250565b60006200246c603783620019ac565b915062002479826200240e565b604082019050919050565b600060208201905081810360008301526200249f816200245d565b9050919050565b7f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560008201527f7461626c652066756e6374696f6e000000000000000000000000000000000000602082015250565b600062002504602e83620019ac565b91506200251182620024a6565b604082019050919050565b600060208201905081810360008301526200253781620024f5565b9050919050565b60006200254b8262001c67565b9150620025588362001c67565b925082820390508181111562002573576200257262001c38565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600081519050919050565b6000620025c082620025a8565b620025cc8185620019ac565b9350620025de81856020860162001f6d565b620025e98162001f99565b840191505092915050565b60006020820190508181036000830152620026108184620025b3565b905092915050565b6121a580620026286000396000f3fe60806040523661000b57005b6000807fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c9050809150600082600001600080357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610141576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161013890611693565b60405180910390fd5b3660008037600080366000845af43d6000803e8060008114610162573d6000f35b3d6000fd5b61017182826103a4565b5050565b60005b8351811015610359576000848281518110610196576101956116b3565b5b6020026020010151602001519050600060028111156101b8576101b76116e2565b5b8160028111156101cb576101ca6116e2565b5b0361021b576102168583815181106101e6576101e56116b3565b5b602002602001015160000151868481518110610205576102046116b3565b5b602002602001015160400151610487565b610345565b6001600281111561022f5761022e6116e2565b5b816002811115610242576102416116e2565b5b036102925761028d85838151811061025d5761025c6116b3565b5b60200260200101516000015186848151811061027c5761027b6116b3565b5b6020026020010151604001516106fe565b610344565b6002808111156102a5576102a46116e2565b5b8160028111156102b8576102b76116e2565b5b03610308576103038583815181106102d3576102d26116b3565b5b6020026020010151600001518684815181106102f2576102f16116b3565b5b60200260200101516040015161097f565b610343565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161033a90611783565b60405180910390fd5b5b5b508080610351906117dc565b915050610178565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb67383838360405161038d93929190611b48565b60405180910390a161039f8282610b0a565b505050565b6103ae8282610c2c565b6104835760016103bc610ca0565b600001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b60008151116104cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104c290611bff565b60405180910390fd5b60006104d5610ccd565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610546576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053d90611c91565b60405180910390fd5b60008160010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054905090506000816bffffffffffffffffffffffff16036105b3576105b28285610cfa565b5b60005b83518110156106f75760008482815181106105d4576105d36116b3565b5b602002602001015190506000846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146106c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106bf90611d23565b60405180910390fd5b6106d48583868a610dd5565b83806106df90611d5b565b945050505080806106ef906117dc565b9150506105b6565b5050505050565b6000815111610742576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073990611bff565b60405180910390fd5b600061074c610ccd565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036107bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b490611c91565b60405180910390fd5b60008160010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054905090506000816bffffffffffffffffffffffff160361082a576108298285610cfa565b5b60005b835181101561097857600084828151811061084b5761084a6116b3565b5b602002602001015190506000846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361093e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093590611e01565b60405180910390fd5b610949858284610f82565b6109558583868a610dd5565b838061096090611d5b565b94505050508080610970906117dc565b91505061082d565b5050505050565b60008151116109c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ba90611bff565b60405180910390fd5b60006109cd610ccd565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610a3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3590611e93565b60405180910390fd5b60005b8251811015610b04576000838281518110610a5f57610a5e6116b3565b5b602002602001015190506000836000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050610aef848284610f82565b50508080610afc906117dc565b915050610a41565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160315610c2857610b6182604051806060016040528060288152602001612124602891396115e4565b6000808373ffffffffffffffffffffffffffffffffffffffff1683604051610b899190611eef565b600060405180830381855af49150503d8060008114610bc4576040519150601f19603f3d011682016040523d82523d6000602084013e610bc9565b606091505b509150915081610c2557600081511115610be65780518082602001fd5b83836040517f192105d7000000000000000000000000000000000000000000000000000000008152600401610c1c929190611f06565b60405180910390fd5b50505b5050565b6000610c36610ca0565b600001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000807f4cd15452b25e815d3f9d1a3c7edd985a178edf5eb3461a1acbf855517423d69490508091505090565b6000807fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90508091505090565b610d1c8160405180606001604052806024815260200161214c602491396115e4565b81600201805490508260010160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555081600201819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b81846000016000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508360010160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018390806001815401808255809150506001900390600052602060002090600891828204019190066004029091909190916101000a81548163ffffffff021916908360e01c021790555080846000016000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ff1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe890611fa8565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361105f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110569061203a565b60405180910390fd5b6000836000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff169050600060018560010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000180549050611136919061205a565b90508082146112ca5760008560010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018281548110611197576111966116b3565b5b90600052602060002090600891828204019190066004029054906101000a900460e01b9050808660010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018481548110611213576112126116b3565b5b90600052602060002090600891828204019190066004026101000a81548163ffffffff021916908360e01c021790555082866000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550505b8460010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000180548061131e5761131d61208e565b5b60019003818190600052602060002090600891828204019190066004026101000a81549063ffffffff02191690559055846000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a8154906bffffffffffffffffffffffff02191690555050600081036115dd57600060018660020180549050611408919061205a565b905060008660010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050818114611549576000876002018381548110611472576114716116b3565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050808860020183815481106114b6576114b56116b3565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818860010160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550505b8660020180548061155d5761155c61208e565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590558660010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000905550505b5050505050565b6000823b9050600081118290611630576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116279190612101565b60405180910390fd5b50505050565b600082825260208201905092915050565b7f4469616d6f6e643a2046756e6374696f6e20646f6573206e6f74206578697374600082015250565b600061167d602083611636565b915061168882611647565b602082019050919050565b600060208201905081810360008301526116ac81611670565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4c69624469616d6f6e644375743a20496e636f7272656374204661636574437560008201527f74416374696f6e00000000000000000000000000000000000000000000000000602082015250565b600061176d602783611636565b915061177882611711565b604082019050919050565b6000602082019050818103600083015261179c81611760565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000819050919050565b60006117e7826117d2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611819576118186117a3565b5b600182019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061187b82611850565b9050919050565b61188b81611870565b82525050565b600381106118a2576118a16116e2565b5b50565b60008190506118b382611891565b919050565b60006118c3826118a5565b9050919050565b6118d3816118b8565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61193a81611905565b82525050565b600061194c8383611931565b60208301905092915050565b6000602082019050919050565b6000611970826118d9565b61197a81856118e4565b9350611985836118f5565b8060005b838110156119b657815161199d8882611940565b97506119a883611958565b925050600181019050611989565b5085935050505092915050565b60006060830160008301516119db6000860182611882565b5060208301516119ee60208601826118ca565b5060408301518482036040860152611a068282611965565b9150508091505092915050565b6000611a1f83836119c3565b905092915050565b6000602082019050919050565b6000611a3f82611824565b611a49818561182f565b935083602082028501611a5b85611840565b8060005b85811015611a975784840389528151611a788582611a13565b9450611a8383611a27565b925060208a01995050600181019050611a5f565b50829750879550505050505092915050565b611ab281611870565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611af2578082015181840152602081019050611ad7565b60008484015250505050565b6000601f19601f8301169050919050565b6000611b1a82611ab8565b611b248185611ac3565b9350611b34818560208601611ad4565b611b3d81611afe565b840191505092915050565b60006060820190508181036000830152611b628186611a34565b9050611b716020830185611aa9565b8181036040830152611b838184611b0f565b9050949350505050565b7f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660008201527f6163657420746f20637574000000000000000000000000000000000000000000602082015250565b6000611be9602b83611636565b9150611bf482611b8d565b604082019050919050565b60006020820190508181036000830152611c1881611bdc565b9050919050565b7f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260008201527f6520616464726573732830290000000000000000000000000000000000000000602082015250565b6000611c7b602c83611636565b9150611c8682611c1f565b604082019050919050565b60006020820190508181036000830152611caa81611c6e565b9050919050565b7f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f60008201527f6e207468617420616c7265616479206578697374730000000000000000000000602082015250565b6000611d0d603583611636565b9150611d1882611cb1565b604082019050919050565b60006020820190508181036000830152611d3c81611d00565b9050919050565b60006bffffffffffffffffffffffff82169050919050565b6000611d6682611d43565b91506bffffffffffffffffffffffff8203611d8457611d836117a3565b5b600182019050919050565b7f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60008201527f6374696f6e20776974682073616d652066756e6374696f6e0000000000000000602082015250565b6000611deb603883611636565b9150611df682611d8f565b604082019050919050565b60006020820190508181036000830152611e1a81611dde565b9050919050565b7f4c69624469616d6f6e644375743a2052656d6f7665206661636574206164647260008201527f657373206d757374206265206164647265737328302900000000000000000000602082015250565b6000611e7d603683611636565b9150611e8882611e21565b604082019050919050565b60006020820190508181036000830152611eac81611e70565b9050919050565b600081905092915050565b6000611ec982611ab8565b611ed38185611eb3565b9350611ee3818560208601611ad4565b80840191505092915050565b6000611efb8284611ebe565b915081905092915050565b6000604082019050611f1b6000830185611aa9565b8181036020830152611f2d8184611b0f565b90509392505050565b7f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360008201527f74696f6e207468617420646f65736e2774206578697374000000000000000000602082015250565b6000611f92603783611636565b9150611f9d82611f36565b604082019050919050565b60006020820190508181036000830152611fc181611f85565b9050919050565b7f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560008201527f7461626c652066756e6374696f6e000000000000000000000000000000000000602082015250565b6000612024602e83611636565b915061202f82611fc8565b604082019050919050565b6000602082019050818103600083015261205381612017565b9050919050565b6000612065826117d2565b9150612070836117d2565b9250828203905081811115612088576120876117a3565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600081519050919050565b60006120d3826120bd565b6120dd8185611636565b93506120ed818560208601611ad4565b6120f681611afe565b840191505092915050565b6000602082019050818103600083015261211b81846120c8565b90509291505056fe4c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465a26469706673582212208b3b1a3b53acb7515ca97eae4d2b5b80bb4c46a44c8880c0968a1955e7fe61db64736f6c634300081200334c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465"; + +type DiamondConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: DiamondConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class Diamond__factory extends ContractFactory { + constructor(...args: DiamondConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + _contractOwner: PromiseOrValue, + _diamondCutFacet: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy( + _contractOwner, + _diamondCutFacet, + overrides || {} + ) as Promise; + } + override getDeployTransaction( + _contractOwner: PromiseOrValue, + _diamondCutFacet: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction( + _contractOwner, + _diamondCutFacet, + overrides || {} + ); + } + override attach(address: string): Diamond { + return super.attach(address) as Diamond; + } + override connect(signer: Signer): Diamond__factory { + return super.connect(signer) as Diamond__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): DiamondInterface { + return new utils.Interface(_abi) as DiamondInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): Diamond { + return new Contract(address, _abi, signerOrProvider) as Diamond; + } +} diff --git a/contracts/typechain-types/factories/contracts/archives/OldFlow__factory.ts b/contracts/typechain-types/factories/contracts/archives/OldFlow__factory.ts new file mode 100644 index 0000000..bff7127 --- /dev/null +++ b/contracts/typechain-types/factories/contracts/archives/OldFlow__factory.ts @@ -0,0 +1,483 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../../common"; +import type { + OldFlow, + OldFlowInterface, +} from "../../../contracts/archives/OldFlow"; + +const _abi = [ + { + inputs: [], + name: "ArrayLengthNotMatch", + type: "error", + }, + { + inputs: [], + name: "CallerNotAutobot", + type: "error", + }, + { + inputs: [], + name: "InsufficientAppGelatoBalance", + type: "error", + }, + { + inputs: [], + name: "InsufficientAppSTBalance", + type: "error", + }, + { + inputs: [], + name: "InsufficientFunds", + type: "error", + }, + { + inputs: [], + name: "InsufficientLifespan1", + type: "error", + }, + { + inputs: [], + name: "InsufficientLifespan2", + type: "error", + }, + { + inputs: [], + name: "InsufficientLifespan3", + type: "error", + }, + { + inputs: [], + name: "InvalidBalance1", + type: "error", + }, + { + inputs: [], + name: "InvalidBalance2", + type: "error", + }, + { + inputs: [], + name: "InvalidSuperToken", + type: "error", + }, + { + inputs: [], + name: "OnlySingleFlowAllowed", + type: "error", + }, + { + inputs: [], + name: "SessionNotStarted", + type: "error", + }, + { + inputs: [], + name: "TooEarly", + type: "error", + }, + { + inputs: [], + name: "UserFlowNotStopped", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "_superToken", + type: "address", + }, + { + internalType: "uint256", + name: "_nonce", + type: "uint256", + }, + ], + name: "closeFlow", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_superToken", + type: "address", + }, + { + internalType: "address", + name: "_sender", + type: "address", + }, + { + internalType: "address", + name: "_receiver", + type: "address", + }, + { + internalType: "uint256", + name: "_nonce", + type: "uint256", + }, + { + internalType: "int96", + name: "_flowRate", + type: "int96", + }, + ], + name: "decreaseFlow", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_superToken", + type: "address", + }, + { + internalType: "uint256", + name: "_amount", + type: "uint256", + }, + ], + name: "depositSuperToken", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_user", + type: "address", + }, + { + internalType: "address", + name: "_superToken", + type: "address", + }, + ], + name: "getAmountFlowed", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_superToken", + type: "address", + }, + ], + name: "getDepositTotal", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_user", + type: "address", + }, + { + internalType: "address", + name: "_superToken", + type: "address", + }, + ], + name: "getDepositUser", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_user", + type: "address", + }, + { + internalType: "address", + name: "_superToken", + type: "address", + }, + { + internalType: "uint256", + name: "_nonce", + type: "uint256", + }, + ], + name: "getFlowData", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + { + internalType: "uint256", + name: "", + type: "uint256", + }, + { + internalType: "uint256", + name: "", + type: "uint256", + }, + { + internalType: "uint256", + name: "", + type: "uint256", + }, + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_user", + type: "address", + }, + { + internalType: "address", + name: "_superToken", + type: "address", + }, + ], + name: "getNewFlowNonce", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_user", + type: "address", + }, + { + internalType: "address", + name: "_superToken", + type: "address", + }, + { + internalType: "int96", + name: "_flowRate", + type: "int96", + }, + ], + name: "getValidSafeLifespan", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_user", + type: "address", + }, + { + internalType: "address", + name: "_superToken", + type: "address", + }, + ], + name: "hasActiveFlow", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_viewer", + type: "address", + }, + { + internalType: "address", + name: "_broadcaster", + type: "address", + }, + ], + name: "isViewSessionAllowed", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_receiver", + type: "address", + }, + { + internalType: "address", + name: "_superToken", + type: "address", + }, + { + internalType: "uint256", + name: "_lifespan", + type: "uint256", + }, + ], + name: "openFlow", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_superToken", + type: "address", + }, + { + internalType: "uint256", + name: "_amount", + type: "uint256", + }, + ], + name: "withdrawSuperToken", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address[]", + name: "_superTokens", + type: "address[]", + }, + { + internalType: "uint256[]", + name: "_amounts", + type: "uint256[]", + }, + ], + name: "withdrawSuperTokens", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +const _bytecode = + "0x608060405234801561001057600080fd5b506154e0806100206000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806354bbc2ad1161008c578063c76474db11610066578063c76474db14610297578063dc5cd1d8146102c7578063dfc96e1b146102e3578063e32867fc146102ff576100ea565b806354bbc2ad146102035780639a5b5f9314610237578063a152ca6f14610267576100ea565b806336fbb025116100c857806336fbb025146101575780633870f4a014610173578063468240a9146101a3578063521d3f3c146101d3576100ea565b80630197c386146100ef5780630dfa0b821461010b5780633473c28f1461013b575b600080fd5b61010960048036038101906101049190614277565b61031b565b005b610125600480360381019061012091906142f0565b610332565b6040516101329190614352565b60405180910390f35b61015560048036038101906101509190614589565b610348565b005b610171600480360381019061016c9190614601565b61060f565b005b61018d6004803603810190610188919061467c565b61062b565b60405161019a9190614352565b60405180910390f35b6101bd60048036038101906101b8919061467c565b61063f565b6040516101ca91906146d7565b60405180910390f35b6101ed60048036038101906101e8919061467c565b610653565b6040516101fa9190614352565b60405180910390f35b61021d600480360381019061021891906146f2565b610667565b60405161022e95949392919061476d565b60405180910390f35b610251600480360381019061024c919061467c565b61068f565b60405161025e91906146d7565b60405180910390f35b610281600480360381019061027c919061467c565b6106a3565b60405161028e9190614352565b60405180910390f35b6102b160048036038101906102ac91906147c0565b6106b7565b6040516102be9190614352565b60405180910390f35b6102e160048036038101906102dc9190614277565b6106c9565b005b6102fd60048036038101906102f891906146f2565b610899565b005b61031960048036038101906103149190614277565b611265565b005b61032482611689565b61032e82826116cb565b5050565b600061033f84848461184b565b90509392505050565b8051825114610383576040517fed882f7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061038d611998565b905060005b83518110156106095760006103c1338684815181106103b4576103b36147ed565b5b60200260200101516119c5565b905060008360010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087858151811061041b5761041a6147ed565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060030154905060008460010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008886815181106104cc576104cb6147ed565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060040154905060008061054d338a888151811061053f5761053e6147ed565b5b602002602001015187611a76565b935093505050600082141580156105645750818410155b80156105705750600081145b801561057c5750600083145b156105b3576040517f5894293600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105f18987815181106105c9576105c86147ed565b5b60200260200101518988815181106105e4576105e36147ed565b5b6020026020010151611bf5565b505050505080806106019061484b565b915050610392565b50505050565b610617611e44565b6106248585858585611ed6565b5050505050565b60006106378383612130565b905092915050565b600061064b83836121ee565b905092915050565b600061065f83836122ee565b905092915050565b600080600080600061067a88888861237e565b94509450945094509450939792965093509350565b600061069b83836126da565b905092915050565b60006106af83836128bb565b905092915050565b60006106c28261294b565b9050919050565b60006106d3611998565b905060006106e133856119c5565b905060008260010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060030154905060008360010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060040154905060008061081f338987611a76565b935093505050600082141580156108365750818410155b80156108425750600081145b801561084e5750600083145b15610885576040517f5894293600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61088f8888611bf5565b5050505050505050565b6108a3338361299d565b6108ab612bee565b6108b482611689565b60006108be612c3b565b905060006108cc8585612c68565b905060008260010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000838152602001908152602001600020600101540361099a576040517f3c2779e500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006109a4611998565b905060008360010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060000160009054906101000a9004600b0b9050610a548682612d19565b6000610a6233888885612d5d565b90506000610a7033896122ee565b9050610a7b88612de2565b888460010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550848460010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000838152602001908152602001600020600201819055506000610bed612e26565b9050600081600b0160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508a82600c0160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508682600c0160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000838152602001908152602001600020600101819055504282600c0160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060020181905550808660010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085815260200190815260200160002060000181905550610e218a338d8689612e53565b60006040518060400160405280600267ffffffffffffffff811115610e4957610e48614383565b5b604051908082528060200260200182016040528015610e775781602001602082028036833780820191505090505b508152602001600167ffffffffffffffff811115610e9857610e97614383565b5b604051908082528060200260200182016040528015610ecb57816020015b6060815260200190600190039081610eb65790505b50815250905060018160000151600081518110610eeb57610eea6147ed565b5b60200260200101906003811115610f0557610f04614893565b5b90816003811115610f1957610f18614893565b5b8152505060038160000151600181518110610f3757610f366147ed565b5b60200260200101906003811115610f5157610f50614893565b5b90816003811115610f6557610f64614893565b5b81525050610f7e8542610f7891906148c2565b86612fa2565b8160200151600081518110610f9657610f956147ed565b5b602002602001018190525060006336fbb02560e01b8c338f888b604051602401610fc4959493929190614905565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050905061102b612fce565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633323b46730838560006040518563ffffffff1660e01b815260040161108e9493929190614c1e565b6020604051808303816000875af11580156110ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d19190614c9d565b8860010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008781526020019081526020016000206005018190555060018860000160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546111f691906148c2565b92505081905550600184600b0160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461124f91906148c2565b9250508190555050505050505050505050505050565b600061126f611998565b9050600061127b612e26565b600701548260010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008581526020019081526020016000206003015461131c91906148c2565b905080421015611358576040517f085de62500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611360612fce565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ee8ca3b58360010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000868152602001908152602001600020600501546040518263ffffffff1660e01b815260040161144e9190614cca565b600060405180830381600087803b15801561146857600080fd5b505af115801561147c573d6000803e3d6000fd5b5050505060008260010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008360010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000868152602001908152602001600020600201549050611681863384886115dd612c3b565b60010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087815260200190815260200160002060000160009054906101000a9004600b0b611ed6565b505050505050565b61169281612ffb565b6116c8576040517f334ae3e600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b8173ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b815260040161170893929190614ce5565b6020604051808303816000875af1158015611727573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174b9190614d48565b5080611755611998565b60020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117e191906148c2565b92505081905550806117f1611998565b60030160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461184091906148c2565b925050819055505050565b600080826bffffffffffffffffffffffff16611865611998565b60020160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118ed9190614da4565b905060006118f9612e26565b90508060060154821015611939576040517fcdd3529e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081600601548361194b9190614dd5565b9050816007015481101561198b576040517f6c451f0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8093505050509392505050565b6000807f2da2adfb54fd91bfb31e0d805792077ddcd5b0427b14a56397e2f3cc190c883090508091505090565b6000806119d0611998565b60000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008114611a6a57600181611a659190614dd5565b611a6d565b60005b91505092915050565b6000806000806000611a86611998565b905060008160010160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008260010160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000898152602001908152602001600020600201549050611be1828a8361305a565b965096509650965050505093509350935093565b611bff338361299d565b6000611c09611998565b60020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611cc3576040517f356680b700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81611ccc611998565b60020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611d589190614dd5565b9250508190555081611d68611998565b60030160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611db79190614dd5565b925050819055508273ffffffffffffffffffffffffffffffffffffffff166323b872dd3033856040518463ffffffff1660e01b8152600401611dfb93929190614ce5565b6020604051808303816000875af1158015611e1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e3e9190614d48565b50505050565b611e4c612fce565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ed4576040517fb5e0b29200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60008590506000611f0830868473ffffffffffffffffffffffffffffffffffffffff166132fe9092919063ffffffff16565b905060008382611f189190614e09565b600b0b13611f5157611f4b30868473ffffffffffffffffffffffffffffffffffffffff1661339e9092919063ffffffff16565b50611f89565b611f87858483611f619190614e09565b8473ffffffffffffffffffffffffffffffffffffffff166135519092919063ffffffff16565b505b42611f92611998565b60010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000868152602001908152602001600020600401819055506000612031611998565b60010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000868152602001908152602001600020600001549050426120ce612e26565b600c0160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000838152602001908152602001600020600301819055505050505050505050565b600080600061213f85856119c5565b905060008060008061215289898761237e565b509350935093509350600080612169868b8761305a565b935050925050600083146121a35783836121839190614dd5565b826bffffffffffffffffffffffff1661219c9190614e6d565b97506121dd565b600081146121d75783816121b79190614dd5565b826bffffffffffffffffffffffff166121d09190614e6d565b97506121dc565b600097505b5b879850505050505050505092915050565b6000806121fb84846122ee565b905060008111156122e257600061221f858560018561221a9190614dd5565b611a76565b9350505050600061222e611998565b60010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001856122ba9190614dd5565b8152602001908152602001600020600401541480156122d95750600081145b925050506122e8565b60009150505b92915050565b60006122f8611998565b60000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008060008060008061238f611998565b60010160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600061244d611998565b60010160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600089815260200190815260200160002060020154905060006124eb611998565b60010160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a81526020019081526020016000206003015490506000612589611998565b60010160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008b81526020019081526020016000206004015490506000612627611998565b60010160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c81526020019081526020016000206005015490508484848484995099509950995099505050505050939792965093509350565b60008060006126e884613704565b9150915060008214806126fd57506000815111155b1561270d576000925050506128b5565b60005b81518110156128ad57600061273f86848481518110612732576127316147ed565b5b6020026020010151612c68565b90506000806127698886868151811061275b5761275a6147ed565b5b60200260200101518561305a565b93509350505085821461278557600096505050505050506128b5565b6000811461279c57600096505050505050506128b5565b60006127c28a8787815181106127b5576127b46147ed565b5b60200260200101516119c5565b90506000806000806127ef8e8b8b815181106127e1576127e06147ed565b5b60200260200101518761237e565b5093509350935093508c73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461283f5760009b5050505050505050505050506128b5565b87831461285a5760009b5050505050505050505050506128b5565b8a8210156128765760009b5050505050505050505050506128b5565b600081146128925760009b5050505050505050505050506128b5565b505050505050505080806128a59061484b565b915050612710565b506001925050505b92915050565b60006128c5611998565b60020160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000612955611998565b60030160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006129a98383612130565b9050806129b4611998565b60020160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612a409190614dd5565b9250508190555080612a50611998565b60030160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612a9f9190614dd5565b925050819055506000612ab0611998565b60020160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612b66576040517f0a2005fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000612b70611998565b60030160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612be9576040517f2fe0888f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b612bf6612fce565b60030154612c02613830565b11612c39576040517fa426119900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6000807f9cd9afe22fea86221d6e8117226b65bb0e2af8c4f5b8abf255fb0afcad4a3a9c90508091505090565b600080612c73612c3b565b60000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008114612d0d57600181612d089190614dd5565b612d10565b60005b91505092915050565b612d2382826138f2565b612d59576040517f1824866a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b600080612d6b86868561184b565b90506000612d77612e26565b905080600701548160060154612d8d91906148c2565b851015612dc6576040517f3661e75b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81851015612dd45784612dd6565b815b92505050949350505050565b612dec33826121ee565b15612e23576040517f01266b0000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6000807f2f7ed27098ecefe70183ee38ae4542dee65215b0786f6870871034402cfe2cc990508091505090565b60008590506000612e8530868473ffffffffffffffffffffffffffffffffffffffff166132fe9092919063ffffffff16565b9050600081600b0b13612ec357612ebd85848473ffffffffffffffffffffffffffffffffffffffff166139869092919063ffffffff16565b50612efb565b612ef9858483612ed39190614eaf565b8473ffffffffffffffffffffffffffffffffffffffff166135519092919063ffffffff16565b505b42612f04611998565b60010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008681526020019081526020016000206003018190555050505050505050565b60608282604051602001612fb7929190614f3e565b604051602081830303815290604052905092915050565b6000807fde06769ca6d80a022439e234eebb61c3801d652175b62f912d6f8cac7b881c6590508091505090565b6000613005612e26565b60090160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080600080613068612c3b565b60010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600086815260200190815260200160002060000160009054906101000a9004600b0b61310f612c3b565b60010160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878152602001908152602001600020600001600c9054906101000a90046bffffffffffffffffffffffff166131c1612c3b565b60010160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008881526020019081526020016000206001015461325b612c3b565b60010160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600089815260200190815260200160002060020154935093509350935093509350935093565b60008061330a85613b39565b9150508073ffffffffffffffffffffffffffffffffffffffff1663e6a1e8888686866040518463ffffffff1660e01b815260040161334a93929190614fc6565b608060405180830381865afa158015613367573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061338b9190615027565b9091925090505080925050509392505050565b60008060006133ac86613d7a565b915091508173ffffffffffffffffffffffffffffffffffffffff166339255d5b828373ffffffffffffffffffffffffffffffffffffffff1663b4b333c68a8a8a600067ffffffffffffffff81111561340757613406614383565b5b6040519080825280601f01601f1916602001820160405280156134395781602001600182028036833780820191505090505b5060405160240161344d949392919061508e565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050600067ffffffffffffffff8111156134aa576134a9614383565b5b6040519080825280601f01601f1916602001820160405280156134dc5781602001600182028036833780820191505090505b506040518463ffffffff1660e01b81526004016134fb939291906150fb565b6000604051808303816000875af115801561351a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061354391906151e6565b506001925050509392505050565b600080600061355f86613d7a565b915091508173ffffffffffffffffffffffffffffffffffffffff166339255d5b828373ffffffffffffffffffffffffffffffffffffffff166350209a628a8a8a600067ffffffffffffffff8111156135ba576135b9614383565b5b6040519080825280601f01601f1916602001820160405280156135ec5781602001600182028036833780820191505090505b50604051602401613600949392919061522f565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050600067ffffffffffffffff81111561365d5761365c614383565b5b6040519080825280601f01601f19166020018201604052801561368f5781602001600182028036833780820191505090505b506040518463ffffffff1660e01b81526004016136ae939291906150fb565b6000604051808303816000875af11580156136cd573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906136f691906151e6565b506001925050509392505050565b60006060613710612c3b565b60020160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461375c612c3b565b60020160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018080548060200260200160405190810160405280929190818152602001828054801561382057602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116137d6575b5050505050905091509150915091565b600061383a612fce565b60010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b47064c83073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6040518363ffffffff1660e01b81526004016138ac92919061527b565b602060405180830381865afa1580156138c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138ed91906152a4565b905090565b6000808373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161392e91906152d1565b602060405180830381865afa15801561394b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061396f91906152a4565b905061397b8484614001565b811191505092915050565b600080600061399486613d7a565b915091508173ffffffffffffffffffffffffffffffffffffffff166339255d5b828373ffffffffffffffffffffffffffffffffffffffff166362fc305e8a8a8a600067ffffffffffffffff8111156139ef576139ee614383565b5b6040519080825280601f01601f191660200182016040528015613a215781602001600182028036833780820191505090505b50604051602401613a35949392919061522f565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050600067ffffffffffffffff811115613a9257613a91614383565b5b6040519080825280601f01601f191660200182016040528015613ac45781602001600182028036833780820191505090505b506040518463ffffffff1660e01b8152600401613ae3939291906150fb565b6000604051808303816000875af1158015613b02573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190613b2b91906151e6565b506001925050509392505050565b6000807f65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea8375491507fb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a549050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613cfb57600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613c5e578273ffffffffffffffffffffffffffffffffffffffff166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c5b9190615301565b91505b8173ffffffffffffffffffffffffffffffffffffffff1663b6d200de7fa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd36040518263ffffffff1660e01b8152600401613cb79190615376565b602060405180830381865afa158015613cd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cf891906153cf565b90505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613d3857613d376153fc565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613d7557613d746153fc565b5b915091565b6000807f65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea8375491507fb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a549050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613f8257600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613e9f578273ffffffffffffffffffffffffffffffffffffffff166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015613e78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e9c9190615301565b91505b8173ffffffffffffffffffffffffffffffffffffffff1663b6d200de7fa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd36040518263ffffffff1660e01b8152600401613ef89190615376565b602060405180830381865afa158015613f15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f3991906153cf565b9050817f65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea83755807fb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a555b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613fbf57613fbe6153fc565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613ffc57613ffb6153fc565b5b915091565b6000808390506000614032848373ffffffffffffffffffffffffffffffffffffffff166140a790919063ffffffff16565b9050600061405f308473ffffffffffffffffffffffffffffffffffffffff1661413b90919063ffffffff16565b9050614069612e26565b6008015485826140799190614eaf565b6bffffffffffffffffffffffff166140919190614e6d565b8261409c91906148c2565b935050505092915050565b6000806140b384613b39565b9150508073ffffffffffffffffffffffffffffffffffffffff16638d997f6e85856040518363ffffffff1660e01b81526004016140f192919061542b565b602060405180830381865afa15801561410e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061413291906152a4565b91505092915050565b60008061414784613b39565b9150508073ffffffffffffffffffffffffffffffffffffffff1663e8e7e2d185856040518363ffffffff1660e01b8152600401614185929190615454565b602060405180830381865afa1580156141a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141c6919061547d565b91505092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061420e826141e3565b9050919050565b61421e81614203565b811461422957600080fd5b50565b60008135905061423b81614215565b92915050565b6000819050919050565b61425481614241565b811461425f57600080fd5b50565b6000813590506142718161424b565b92915050565b6000806040838503121561428e5761428d6141d9565b5b600061429c8582860161422c565b92505060206142ad85828601614262565b9150509250929050565b600081600b0b9050919050565b6142cd816142b7565b81146142d857600080fd5b50565b6000813590506142ea816142c4565b92915050565b600080600060608486031215614309576143086141d9565b5b60006143178682870161422c565b93505060206143288682870161422c565b9250506040614339868287016142db565b9150509250925092565b61434c81614241565b82525050565b60006020820190506143676000830184614343565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6143bb82614372565b810181811067ffffffffffffffff821117156143da576143d9614383565b5b80604052505050565b60006143ed6141cf565b90506143f982826143b2565b919050565b600067ffffffffffffffff82111561441957614418614383565b5b602082029050602081019050919050565b600080fd5b600061444261443d846143fe565b6143e3565b905080838252602082019050602084028301858111156144655761446461442a565b5b835b8181101561448e578061447a888261422c565b845260208401935050602081019050614467565b5050509392505050565b600082601f8301126144ad576144ac61436d565b5b81356144bd84826020860161442f565b91505092915050565b600067ffffffffffffffff8211156144e1576144e0614383565b5b602082029050602081019050919050565b6000614505614500846144c6565b6143e3565b905080838252602082019050602084028301858111156145285761452761442a565b5b835b81811015614551578061453d8882614262565b84526020840193505060208101905061452a565b5050509392505050565b600082601f8301126145705761456f61436d565b5b81356145808482602086016144f2565b91505092915050565b600080604083850312156145a05761459f6141d9565b5b600083013567ffffffffffffffff8111156145be576145bd6141de565b5b6145ca85828601614498565b925050602083013567ffffffffffffffff8111156145eb576145ea6141de565b5b6145f78582860161455b565b9150509250929050565b600080600080600060a0868803121561461d5761461c6141d9565b5b600061462b8882890161422c565b955050602061463c8882890161422c565b945050604061464d8882890161422c565b935050606061465e88828901614262565b925050608061466f888289016142db565b9150509295509295909350565b60008060408385031215614693576146926141d9565b5b60006146a18582860161422c565b92505060206146b28582860161422c565b9150509250929050565b60008115159050919050565b6146d1816146bc565b82525050565b60006020820190506146ec60008301846146c8565b92915050565b60008060006060848603121561470b5761470a6141d9565b5b60006147198682870161422c565b935050602061472a8682870161422c565b925050604061473b86828701614262565b9150509250925092565b61474e81614203565b82525050565b6000819050919050565b61476781614754565b82525050565b600060a0820190506147826000830188614745565b61478f6020830187614343565b61479c6040830186614343565b6147a96060830185614343565b6147b6608083018461475e565b9695505050505050565b6000602082840312156147d6576147d56141d9565b5b60006147e48482850161422c565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061485682614241565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036148885761488761481c565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60006148cd82614241565b91506148d883614241565b92508282019050808211156148f0576148ef61481c565b5b92915050565b6148ff816142b7565b82525050565b600060a08201905061491a6000830188614745565b6149276020830187614745565b6149346040830186614745565b6149416060830185614343565b61494e60808301846148f6565b9695505050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015614992578082015181840152602081019050614977565b60008484015250505050565b60006149a982614958565b6149b38185614963565b93506149c3818560208601614974565b6149cc81614372565b840191505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60048110614a1457614a13614893565b5b50565b6000819050614a2582614a03565b919050565b6000614a3582614a17565b9050919050565b614a4581614a2a565b82525050565b6000614a578383614a3c565b60208301905092915050565b6000602082019050919050565b6000614a7b826149d7565b614a8581856149e2565b9350614a90836149f3565b8060005b83811015614ac1578151614aa88882614a4b565b9750614ab383614a63565b925050600181019050614a94565b5085935050505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600082825260208201905092915050565b6000614b1682614958565b614b208185614afa565b9350614b30818560208601614974565b614b3981614372565b840191505092915050565b6000614b508383614b0b565b905092915050565b6000602082019050919050565b6000614b7082614ace565b614b7a8185614ad9565b935083602082028501614b8c85614aea565b8060005b85811015614bc85784840389528151614ba98582614b44565b9450614bb483614b58565b925060208a01995050600181019050614b90565b50829750879550505050505092915050565b60006040830160008301518482036000860152614bf78282614a70565b91505060208301518482036020860152614c118282614b65565b9150508091505092915050565b6000608082019050614c336000830187614745565b8181036020830152614c45818661499e565b90508181036040830152614c598185614bda565b9050614c686060830184614745565b95945050505050565b614c7a81614754565b8114614c8557600080fd5b50565b600081519050614c9781614c71565b92915050565b600060208284031215614cb357614cb26141d9565b5b6000614cc184828501614c88565b91505092915050565b6000602082019050614cdf600083018461475e565b92915050565b6000606082019050614cfa6000830186614745565b614d076020830185614745565b614d146040830184614343565b949350505050565b614d25816146bc565b8114614d3057600080fd5b50565b600081519050614d4281614d1c565b92915050565b600060208284031215614d5e57614d5d6141d9565b5b6000614d6c84828501614d33565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614daf82614241565b9150614dba83614241565b925082614dca57614dc9614d75565b5b828204905092915050565b6000614de082614241565b9150614deb83614241565b9250828203905081811115614e0357614e0261481c565b5b92915050565b6000614e14826142b7565b9150614e1f836142b7565b925082820390506b7fffffffffffffffffffffff81137fffffffffffffffffffffffffffffffffffffffff80000000000000000000000082121715614e6757614e6661481c565b5b92915050565b6000614e7882614241565b9150614e8383614241565b9250828202614e9181614241565b91508282048414831517614ea857614ea761481c565b5b5092915050565b6000614eba826142b7565b9150614ec5836142b7565b925082820190507fffffffffffffffffffffffffffffffffffffffff80000000000000000000000081126b7fffffffffffffffffffffff82131715614f0d57614f0c61481c565b5b92915050565b60006fffffffffffffffffffffffffffffffff82169050919050565b614f3881614f13565b82525050565b6000604082019050614f536000830185614f2f565b614f606020830184614f2f565b9392505050565b6000819050919050565b6000614f8c614f87614f82846141e3565b614f67565b6141e3565b9050919050565b6000614f9e82614f71565b9050919050565b6000614fb082614f93565b9050919050565b614fc081614fa5565b82525050565b6000606082019050614fdb6000830186614fb7565b614fe86020830185614745565b614ff56040830184614745565b949350505050565b60008151905061500c8161424b565b92915050565b600081519050615021816142c4565b92915050565b60008060008060808587031215615041576150406141d9565b5b600061504f87828801614ffd565b945050602061506087828801615012565b935050604061507187828801614ffd565b925050606061508287828801614ffd565b91505092959194509250565b60006080820190506150a36000830187614fb7565b6150b06020830186614745565b6150bd6040830185614745565b81810360608301526150cf818461499e565b905095945050505050565b60006150e582614f93565b9050919050565b6150f5816150da565b82525050565b600060608201905061511060008301866150ec565b8181036020830152615122818561499e565b90508181036040830152615136818461499e565b9050949350505050565b600080fd5b600067ffffffffffffffff8211156151605761515f614383565b5b61516982614372565b9050602081019050919050565b600061518961518484615145565b6143e3565b9050828152602081018484840111156151a5576151a4615140565b5b6151b0848285614974565b509392505050565b600082601f8301126151cd576151cc61436d565b5b81516151dd848260208601615176565b91505092915050565b6000602082840312156151fc576151fb6141d9565b5b600082015167ffffffffffffffff81111561521a576152196141de565b5b615226848285016151b8565b91505092915050565b60006080820190506152446000830187614fb7565b6152516020830186614745565b61525e60408301856148f6565b8181036060830152615270818461499e565b905095945050505050565b60006040820190506152906000830185614745565b61529d6020830184614745565b9392505050565b6000602082840312156152ba576152b96141d9565b5b60006152c884828501614ffd565b91505092915050565b60006020820190506152e66000830184614745565b92915050565b6000815190506152fb81614215565b92915050565b600060208284031215615317576153166141d9565b5b6000615325848285016152ec565b91505092915050565b6000819050919050565b60008160001b9050919050565b600061536061535b6153568461532e565b615338565b614754565b9050919050565b61537081615345565b82525050565b600060208201905061538b6000830184615367565b92915050565b600061539c82614203565b9050919050565b6153ac81615391565b81146153b757600080fd5b50565b6000815190506153c9816153a3565b92915050565b6000602082840312156153e5576153e46141d9565b5b60006153f3848285016153ba565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b60006040820190506154406000830185614fb7565b61544d60208301846148f6565b9392505050565b60006040820190506154696000830185614fb7565b6154766020830184614745565b9392505050565b600060208284031215615493576154926141d9565b5b60006154a184828501615012565b9150509291505056fea26469706673582212202f106ecfb48c62ff6571702455469fe9bee9b1668b3b5c5ea0172b670c62b75a64736f6c63430008120033"; + +type OldFlowConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: OldFlowConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class OldFlow__factory extends ContractFactory { + constructor(...args: OldFlowConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + override getDeployTransaction( + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + override attach(address: string): OldFlow { + return super.attach(address) as OldFlow; + } + override connect(signer: Signer): OldFlow__factory { + return super.connect(signer) as OldFlow__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): OldFlowInterface { + return new utils.Interface(_abi) as OldFlowInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): OldFlow { + return new Contract(address, _abi, signerOrProvider) as OldFlow; + } +} diff --git a/contracts/typechain-types/factories/contracts/archives/index.ts b/contracts/typechain-types/factories/contracts/archives/index.ts new file mode 100644 index 0000000..b52db8d --- /dev/null +++ b/contracts/typechain-types/factories/contracts/archives/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { OldFlow__factory } from "./OldFlow__factory"; diff --git a/contracts/typechain-types/factories/contracts/facets/core/Automate__factory.ts b/contracts/typechain-types/factories/contracts/facets/core/Automate__factory.ts new file mode 100644 index 0000000..5078313 --- /dev/null +++ b/contracts/typechain-types/factories/contracts/facets/core/Automate__factory.ts @@ -0,0 +1,155 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../../../common"; +import type { + Automate, + AutomateInterface, +} from "../../../../contracts/facets/core/Automate"; + +const _abi = [ + { + inputs: [], + name: "depositGelatoFunds", + outputs: [], + stateMutability: "payable", + type: "function", + }, + { + inputs: [], + name: "getGelatoAddresses", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + { + internalType: "address", + name: "", + type: "address", + }, + { + internalType: "address", + name: "", + type: "address", + }, + { + internalType: "address", + name: "", + type: "address", + }, + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getMinimumAppGelatoBalance", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_autobot", + type: "address", + }, + ], + name: "setGelatoContracts", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_value", + type: "uint256", + }, + ], + name: "setMinimumAppGelatoBalance", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_amount", + type: "uint256", + }, + ], + name: "withdrawGelatoFunds", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +const _bytecode = + "0x608060405234801561001057600080fd5b5061114f806100206000396000f3fe6080604052600436106100555760003560e01c80631674bc241461005a5780632e4b69451461006457806371ebf6f41461008d578063a6f9223d146100b6578063bb6bd765146100df578063f24a25de1461010e575b600080fd5b610062610139565b005b34801561007057600080fd5b5061008b60048036038101906100869190610a52565b610144565b005b34801561009957600080fd5b506100b460048036038101906100af9190610add565b61017d565b005b3480156100c257600080fd5b506100dd60048036038101906100d89190610a52565b6101b6565b005b3480156100eb57600080fd5b506100f46101ef565b604051610105959493929190610b19565b60405180910390f35b34801561011a57600080fd5b50610123610210565b6040516101309190610b7b565b60405180910390f35b6101423461021f565b565b61017160405160200161015690610bf3565b604051602081830303815290604052805190602001206102d1565b61017a816102dd565b50565b6101aa60405160200161018f90610bf3565b604051602081830303815290604052805190602001206102d1565b6101b3816102f0565b50565b6101e36040516020016101c890610c5f565b604051602081830303815290604052805190602001206102d1565b6101ec816104d8565b50565b60008060008060006101ff610589565b945094509450945094509091929394565b600061021a610650565b905090565b610227610663565b60010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c1461d57823073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee856040518563ffffffff1660e01b815260040161029c93929190610c7f565b6000604051808303818588803b1580156102b557600080fd5b505af11580156102c9573d6000803e3d6000fd5b505050505050565b6102da81610690565b50565b806102e6610663565b6003018190555050565b806102f9610663565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663573ea5756040518163ffffffff1660e01b8152600401602060405180830381865afa158015610385573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a99190610cf4565b6103b1610663565b60020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506103fa610663565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e60a32136040518163ffffffff1660e01b8152600401602060405180830381865afa158015610468573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061048c9190610d5f565b610494610663565b60010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6104e0610663565b60010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631c20fadd3373eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee846040518463ffffffff1660e01b815260040161055493929190610d9b565b600060405180830381600087803b15801561056e57600080fd5b505af1158015610582573d6000803e3d6000fd5b5050505050565b6000806000806000610599610663565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166105c5610663565b60010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166105f1610663565b60020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673c815db16d4be6ddf2685c201937905abf338f5d773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee945094509450945094509091929394565b600061065a610663565b60030154905090565b6000807fde06769ca6d80a022439e234eebb61c3801d652175b62f912d6f8cac7b881c6590508091505090565b61069a813361069d565b50565b6106a7828261073a565b610736576106cc8173ffffffffffffffffffffffffffffffffffffffff1660146107ae565b6106da8360001c60206107ae565b6040516020016106eb929190610edb565b6040516020818303038152906040526040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072d9190610f5f565b60405180910390fd5b5050565b60006107446109ea565b600001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6060600060028360026107c19190610fb0565b6107cb9190610ff2565b67ffffffffffffffff8111156107e4576107e3611026565b5b6040519080825280601f01601f1916602001820160405280156108165781602001600182028036833780820191505090505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061084e5761084d611055565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106108b2576108b1611055565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026108f29190610fb0565b6108fc9190610ff2565b90505b600181111561099c577f3031323334353637383961626364656600000000000000000000000000000000600f86166010811061093e5761093d611055565b5b1a60f81b82828151811061095557610954611055565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c94508061099590611084565b90506108ff565b50600084146109e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d7906110f9565b60405180910390fd5b8091505092915050565b6000807f4cd15452b25e815d3f9d1a3c7edd985a178edf5eb3461a1acbf855517423d69490508091505090565b600080fd5b6000819050919050565b610a2f81610a1c565b8114610a3a57600080fd5b50565b600081359050610a4c81610a26565b92915050565b600060208284031215610a6857610a67610a17565b5b6000610a7684828501610a3d565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610aaa82610a7f565b9050919050565b610aba81610a9f565b8114610ac557600080fd5b50565b600081359050610ad781610ab1565b92915050565b600060208284031215610af357610af2610a17565b5b6000610b0184828501610ac8565b91505092915050565b610b1381610a9f565b82525050565b600060a082019050610b2e6000830188610b0a565b610b3b6020830187610b0a565b610b486040830186610b0a565b610b556060830185610b0a565b610b626080830184610b0a565b9695505050505050565b610b7581610a1c565b82525050565b6000602082019050610b906000830184610b6c565b92915050565b600082825260208201905092915050565b7f535452415445474953545f524f4c450000000000000000000000000000000000600082015250565b6000610bdd600f83610b96565b9150610be882610ba7565b602082019050919050565b60006020820190508181036000830152610c0c81610bd0565b9050919050565b7f5452454153555245525f524f4c45000000000000000000000000000000000000600082015250565b6000610c49600e83610b96565b9150610c5482610c13565b602082019050919050565b60006020820190508181036000830152610c7881610c3c565b9050919050565b6000606082019050610c946000830186610b0a565b610ca16020830185610b0a565b610cae6040830184610b6c565b949350505050565b6000610cc182610a7f565b9050919050565b610cd181610cb6565b8114610cdc57600080fd5b50565b600081519050610cee81610cc8565b92915050565b600060208284031215610d0a57610d09610a17565b5b6000610d1884828501610cdf565b91505092915050565b6000610d2c82610a9f565b9050919050565b610d3c81610d21565b8114610d4757600080fd5b50565b600081519050610d5981610d33565b92915050565b600060208284031215610d7557610d74610a17565b5b6000610d8384828501610d4a565b91505092915050565b610d9581610cb6565b82525050565b6000606082019050610db06000830186610d8c565b610dbd6020830185610b0a565b610dca6040830184610b6c565b949350505050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000610e13601783610dd2565b9150610e1e82610ddd565b601782019050919050565b600081519050919050565b60005b83811015610e52578082015181840152602081019050610e37565b60008484015250505050565b6000610e6982610e29565b610e738185610dd2565b9350610e83818560208601610e34565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000610ec5601183610dd2565b9150610ed082610e8f565b601182019050919050565b6000610ee682610e06565b9150610ef28285610e5e565b9150610efd82610eb8565b9150610f098284610e5e565b91508190509392505050565b6000601f19601f8301169050919050565b6000610f3182610e29565b610f3b8185610b96565b9350610f4b818560208601610e34565b610f5481610f15565b840191505092915050565b60006020820190508181036000830152610f798184610f26565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610fbb82610a1c565b9150610fc683610a1c565b9250828202610fd481610a1c565b91508282048414831517610feb57610fea610f81565b5b5092915050565b6000610ffd82610a1c565b915061100883610a1c565b92508282019050808211156110205761101f610f81565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061108f82610a1c565b9150600082036110a2576110a1610f81565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b60006110e3602083610b96565b91506110ee826110ad565b602082019050919050565b60006020820190508181036000830152611112816110d6565b905091905056fea2646970667358221220a8e3bdc4351e1596162105b3ee5523910e922fd558df7c9a6af4ab9af898ea5b64736f6c63430008120033"; + +type AutomateConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: AutomateConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class Automate__factory extends ContractFactory { + constructor(...args: AutomateConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + override getDeployTransaction( + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + override attach(address: string): Automate { + return super.attach(address) as Automate; + } + override connect(signer: Signer): Automate__factory { + return super.connect(signer) as Automate__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): AutomateInterface { + return new utils.Interface(_abi) as AutomateInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): Automate { + return new Contract(address, _abi, signerOrProvider) as Automate; + } +} diff --git a/contracts/typechain-types/factories/contracts/facets/core/Control__factory.ts b/contracts/typechain-types/factories/contracts/facets/core/Control__factory.ts new file mode 100644 index 0000000..80abe64 --- /dev/null +++ b/contracts/typechain-types/factories/contracts/facets/core/Control__factory.ts @@ -0,0 +1,600 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../../../common"; +import type { + Control, + ControlInterface, +} from "../../../../contracts/facets/core/Control"; + +const _abi = [ + { + inputs: [], + name: "ArrayLengthNotMatch", + type: "error", + }, + { + inputs: [], + name: "ContractError", + type: "error", + }, + { + inputs: [], + name: "InsufficientAssets", + type: "error", + }, + { + inputs: [], + name: "InsufficientFeeBalance", + type: "error", + }, + { + inputs: [], + name: "InvalidBasisPoints", + type: "error", + }, + { + inputs: [], + name: "InvalidFlowRateBounds", + type: "error", + }, + { + inputs: [], + name: "InvalidSuperToken", + type: "error", + }, + { + inputs: [], + name: "ZeroValue", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "_superToken", + type: "address", + }, + ], + name: "addSuperToken", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "clearBPS", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_superToken", + type: "address", + }, + { + internalType: "uint256", + name: "_amount", + type: "uint256", + }, + ], + name: "depositAsset", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_superToken", + type: "address", + }, + ], + name: "getAssetTotal", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_user", + type: "address", + }, + { + internalType: "address", + name: "_superToken", + type: "address", + }, + ], + name: "getAssetUser", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_tag", + type: "uint256", + }, + ], + name: "getBPSData", + outputs: [ + { + internalType: "uint16", + name: "", + type: "uint16", + }, + { + internalType: "uint96", + name: "", + type: "uint96", + }, + { + internalType: "uint96", + name: "", + type: "uint96", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getBPSSize", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_superToken", + type: "address", + }, + { + internalType: "uint256", + name: "_nonce", + type: "uint256", + }, + ], + name: "getControlData", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + { + internalType: "uint256", + name: "", + type: "uint256", + }, + { + internalType: "uint256", + name: "", + type: "uint256", + }, + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_superToken", + type: "address", + }, + ], + name: "getFeeBalance", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getMinimumEndDuration", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getMinimumLifespan", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_superToken", + type: "address", + }, + { + internalType: "int96", + name: "_newFlowRate", + type: "int96", + }, + ], + name: "getNewBufferedAppBalance", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_superToken", + type: "address", + }, + ], + name: "getNewControlNonce", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_user", + type: "address", + }, + ], + name: "getSBPS", + outputs: [ + { + internalType: "uint16", + name: "", + type: "uint16", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getSTBufferDurationInSecond", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "isBPSEnabled", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_superToken", + type: "address", + }, + { + internalType: "int96", + name: "_newFlowRate", + type: "int96", + }, + ], + name: "isNewFlowRateAllowed", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_superToken", + type: "address", + }, + ], + name: "isSuperTokensSupported", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "count", + type: "uint256", + }, + { + internalType: "address", + name: "_superToken", + type: "address", + }, + ], + name: "realizeFeeBalance", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_superToken", + type: "address", + }, + ], + name: "removeSuperToken", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16[]", + name: "_bpss", + type: "uint16[]", + }, + { + internalType: "uint96[]", + name: "_flowRateLowerBounds", + type: "uint96[]", + }, + { + internalType: "uint96[]", + name: "_flowRateUpperBounds", + type: "uint96[]", + }, + { + internalType: "uint256[]", + name: "_tags", + type: "uint256[]", + }, + ], + name: "setBPS", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_duration", + type: "uint256", + }, + ], + name: "setMinimumEndDuration", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_duration", + type: "uint256", + }, + ], + name: "setMinimumLifespan", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "_bps", + type: "uint16", + }, + { + internalType: "address", + name: "_user", + type: "address", + }, + ], + name: "setSBPS", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_duration", + type: "uint256", + }, + ], + name: "setSTBufferAmount", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "toggleBPS", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_superToken", + type: "address", + }, + { + internalType: "uint256", + name: "_amount", + type: "uint256", + }, + ], + name: "withdrawAsset", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_superToken", + type: "address", + }, + { + internalType: "uint256", + name: "_amount", + type: "uint256", + }, + ], + name: "withdrawFeeBalance", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +const _bytecode = + "0x608060405234801561001057600080fd5b50613d17806100206000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c80637f69bcaf116100f9578063be83574711610097578063ca70e1d511610071578063ca70e1d51461051a578063cb857c8014610538578063d99d3b6914610554578063ebaae66114610570576101c4565b8063be8357471461048a578063c467cddc146104ba578063c78f6803146104ea576101c4565b8063a8771ab9116100d3578063a8771ab9146103f0578063acff47441461040e578063adefe35e1461043e578063b24190831461045a576101c4565b80637f69bcaf1461038657806383807889146103b6578063a86c8c7c146103d2576101c4565b80634ee43e46116101665780636ab1c734116101405780636ab1c73414610322578063703ab1b714610354578063795e34251461035e5780637ea195ad14610368576101c4565b80634ee43e46146102b8578063578dc59a146102e85780636812a17314610304576101c4565b8063245b6c93116101a2578063245b6c931461024857806338e4f0641461026457806346a5d04314610280578063487eb9391461029c576101c4565b80630b72660d146101c957806322c3a21f146101fc5780632357f2cf14610218575b600080fd5b6101e360048036038101906101de9190612d16565b61058c565b6040516101f39493929190612d74565b60405180910390f35b61021660048036038101906102119190612db9565b6105ad565b005b610232600480360381019061022d9190612db9565b6105e6565b60405161023f9190612e03565b60405180910390f35b610262600480360381019061025d9190612e1e565b6105f8565b005b61027e60048036038101906102799190612d16565b61063a565b005b61029a60048036038101906102959190612d16565b610648565b005b6102b660048036038101906102b19190612e1e565b61065f565b005b6102d260048036038101906102cd9190612e84565b6106a1565b6040516102df9190612ec4565b60405180910390f35b61030260048036038101906102fd9190612e1e565b6106b5565b005b61030c6106f7565b6040516103199190612ec4565b60405180910390f35b61033c60048036038101906103379190612e1e565b610706565b60405161034b93929190612f06565b60405180910390f35b61035c610721565b005b610366610758565b005b61037061078f565b60405161037d9190612ec4565b60405180910390f35b6103a0600480360381019061039b9190612db9565b61079e565b6040516103ad9190612ec4565b60405180910390f35b6103d060048036038101906103cb9190612db9565b6107b0565b005b6103da6107e9565b6040516103e79190612f58565b60405180910390f35b6103f86107f8565b6040516104059190612ec4565b60405180910390f35b61042860048036038101906104239190612db9565b610807565b6040516104359190612f58565b60405180910390f35b61045860048036038101906104539190612f73565b610819565b005b610474600480360381019061046f9190612db9565b610827565b6040516104819190612ec4565b60405180910390f35b6104a4600480360381019061049f9190612fb3565b610839565b6040516104b19190612ec4565b60405180910390f35b6104d460048036038101906104cf9190612e84565b61084d565b6040516104e19190612f58565b60405180910390f35b61050460048036038101906104ff9190612db9565b610861565b6040516105119190612ec4565b60405180910390f35b610522610873565b60405161052f9190612ec4565b60405180910390f35b610552600480360381019061054d919061332a565b610882565b005b61056e60048036038101906105699190613401565b610a4b565b005b61058a60048036038101906105859190612d16565b610a86565b005b60008060008061059c8686610ac1565b935093509350935092959194509250565b6105da6040516020016105bf9061349e565b60405160208183030381529060405280519060200120610c84565b6105e381610c90565b50565b60006105f182610cf4565b9050919050565b61062560405160200161060a9061349e565b60405160208183030381529060405280519060200120610c84565b61062e81610d54565b61063781610d91565b50565b6106448282610da4565b5050565b61065182610fe1565b61065b8282611023565b5050565b61068c6040516020016106719061349e565b60405160208183030381529060405280519060200120610c84565b61069581610d54565b61069e816111a3565b50565b60006106ad83836111b6565b905092915050565b6106e26040516020016106c79061349e565b60405160208183030381529060405280519060200120610c84565b6106eb81610d54565b6106f48161125c565b50565b600061070161126f565b905090565b600080600061071484611282565b9250925092509193909250565b61074e6040516020016107339061349e565b60405160208183030381529060405280519060200120610c84565b6107566112c4565b565b61078560405160200161076a9061349e565b60405160208183030381529060405280519060200120610c84565b61078d611302565b565b6000610799611382565b905090565b60006107a982611395565b9050919050565b6107dd6040516020016107c29061349e565b60405160208183030381529060405280519060200120610c84565b6107e6816113e7565b50565b60006107f3611442565b905090565b6000610802611462565b905090565b60006108128261147c565b9050919050565b61082382826114db565b5050565b600061083282611549565b9050919050565b6000610845838361159b565b905092915050565b6000610859838361162b565b905092915050565b600061086c826116bf565b9050919050565b600061087d611711565b905090565b6108af6040516020016108949061349e565b60405160208183030381529060405280519060200120610c84565b825184511415806108c257508151845114155b806108cf57508051845114155b15610906576040517fed882f7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8451811015610a44576001855161092091906134ed565b8110156109bd57836001826109359190613521565b8151811061094657610945613555565b5b60200260200101516bffffffffffffffffffffffff1683828151811061096f5761096e613555565b5b60200260200101516bffffffffffffffffffffffff16146109bc576040517f2245023300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b610a318582815181106109d3576109d2613555565b5b60200260200101518583815181106109ee576109ed613555565b5b6020026020010151858481518110610a0957610a08613555565b5b6020026020010151858581518110610a2457610a23613555565b5b6020026020010151611724565b8080610a3c90613584565b915050610909565b5050505050565b610a78604051602001610a5d9061349e565b60405160208183030381529060405280519060200120610c84565b610a8282826117ac565b5050565b610ab3604051602001610a9890613618565b60405160208183030381529060405280519060200120610c84565b610abd828261181c565b5050565b6000806000806000610ad1611982565b600c0160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000610b52611982565b600c0160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008881526020019081526020016000206001015490506000610bb3611982565b600c0160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008981526020019081526020016000206002015490506000610c14611982565b600c0160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a81526020019081526020016000206003015490508383838397509750975097505050505092959194509250565b610c8d816119af565b50565b6001610c9a611982565b60090160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000610cfe611982565b60040160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900461ffff169050919050565b60008111610d8e576040517f7c946ed700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b80610d9a611982565b6007018190555050565b80610dad611982565b600e0160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610e63576040517f96d8043300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80610e6c611982565b600e0160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ef891906134ed565b9250508190555080610f08611982565b600f0160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610f5791906134ed565b925050819055508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610f99929190613638565b6020604051808303816000875af1158015610fb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fdc919061368d565b505050565b610fea8161147c565b611020576040517f334ae3e600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b8173ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401611060939291906136ba565b6020604051808303816000875af115801561107f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a3919061368d565b50806110ad611982565b600e0160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546111399190613521565b9250508190555080611149611982565b600f0160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546111989190613521565b925050819055505050565b806111ac611982565b6008018190555050565b60008083905060006111e7848373ffffffffffffffffffffffffffffffffffffffff166119bc90919063ffffffff16565b90506000611214308473ffffffffffffffffffffffffffffffffffffffff16611a5090919063ffffffff16565b905061121e611982565b60080154858261122e91906136f1565b6bffffffffffffffffffffffff166112469190613755565b826112519190613521565b935050505092915050565b80611265611982565b6006018190555050565b6000611279611982565b60060154905090565b6000806000806112a585611294611982565b600001611ae490919063ffffffff16565b9050806000015181602001518260400151935093509350509193909250565b6112cc611982565b60050160009054906101000a900460ff16156112e6611982565b60050160006101000a81548160ff021916908315150217905550565b600061130c611462565b905060005b8181101561137e57600061134b6001611328611462565b61133291906134ed565b61133a611982565b600001611bb090919063ffffffff16565b905061136a81611359611982565b600001611bdb90919063ffffffff16565b50808061137690613584565b915050611311565b5050565b600061138c611982565b60080154905090565b600061139f611982565b600b0160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6113ef611982565b60090160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff021916905550565b600061144c611982565b60050160009054906101000a900460ff16905090565b600061147761146f611982565b600001611d74565b905090565b6000611486611982565b60090160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6114e782826001611d85565b6114ef611982565b600d0160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461153e9190613521565b925050819055505050565b6000611553611982565b600f0160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006115a5611982565b600e0160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000808373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016116679190613797565b602060405180830381865afa158015611684573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a891906137c7565b90506116b484846111b6565b811191505092915050565b60006116c9611982565b600d0160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600061171b611982565b60070154905090565b61172d84611e8b565b826bffffffffffffffffffffffff16826bffffffffffffffffffffffff161015611783576040517f2245023300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117a681858585611792611982565b600001611ee490949392919063ffffffff16565b50505050565b6117b582611e8b565b816117be611982565b60040160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548161ffff021916908361ffff1602179055505050565b80611825611982565b600d0160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561189e576040517ff00d49ea00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806118a7611982565b600d0160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118f691906134ed565b925050819055508173ffffffffffffffffffffffffffffffffffffffff166323b872dd3033846040518463ffffffff1660e01b815260040161193a939291906136ba565b6020604051808303816000875af1158015611959573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061197d919061368d565b505050565b6000807f2f7ed27098ecefe70183ee38ae4542dee65215b0786f6870871034402cfe2cc990508091505090565b6119b98133612115565b50565b6000806119c8846121b2565b9150508073ffffffffffffffffffffffffffffffffffffffff16638d997f6e85856040518363ffffffff1660e01b8152600401611a06929190613862565b602060405180830381865afa158015611a23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4791906137c7565b91505092915050565b600080611a5c846121b2565b9150508073ffffffffffffffffffffffffffffffffffffffff1663e8e7e2d185856040518363ffffffff1660e01b8152600401611a9a92919061388b565b602060405180830381865afa158015611ab7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611adb91906138c9565b91505092915050565b611aec612c2d565b8260010160008381526020019081526020016000206040518060600160405290816000820160009054906101000a900461ffff1661ffff1661ffff1681526020016000820160029054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160008201600e9054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681525050905092915050565b6000826000018281548110611bc857611bc7613555565b5b9060005260206000200154905092915050565b81600301600082815260200190815260200160002060009054906101000a900460ff1615611d705781600301600082815260200190815260200160002060006101000a81549060ff0219169055816001016000828152602001908152602001600020600080820160006101000a81549061ffff02191690556000820160026101000a8154906bffffffffffffffffffffffff021916905560008201600e6101000a8154906bffffffffffffffffffffffff021916905550506000826002016000838152602001908152602001600020549050600060018460000180549050611cc391906134ed565b90506000846000018281548110611cdd57611cdc613555565b5b9060005260206000200154905082856002016000838152602001908152602001600020819055508460020160008581526020019081526020016000206000905580856000018481548110611d3457611d33613555565b5b906000526020600020018190555084600001805480611d5657611d556138f6565b5b600190038181906000526020600020016000905590555050505b5050565b600081600001805490509050919050565b600080611d90611982565b9050600081600a0160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600080600090505b87811015611e7d57611dfd878285611df89190613521565b6123f3565b82611e089190613521565b91508515611e6a57600184600a0160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611e629190613521565b925050819055505b8080611e7590613584565b915050611de0565b508093505050509392505050565b606460ff168161ffff161080611eaa575061271061ffff168161ffff16115b15611ee1576040517f800c7e9100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b84600301600085815260200190815260200160002060009054906101000a900460ff1615611fd2578285600101600086815260200190815260200160002060000160006101000a81548161ffff021916908361ffff1602179055508185600101600086815260200190815260200160002060000160026101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555080856001016000868152602001908152602001600020600001600e6101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555061210e565b600185600301600086815260200190815260200160002060006101000a81548160ff0219169083151502179055508285600101600086815260200190815260200160002060000160006101000a81548161ffff021916908361ffff1602179055508185600101600086815260200190815260200160002060000160026101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555080856001016000868152602001908152602001600020600001600e6101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550846000018054905085600201600086815260200190815260200160002081905550846000018490806001815401808255809150506001900390600052602060002001600090919091909150555b5050505050565b61211f828261257a565b6121ae576121448173ffffffffffffffffffffffffffffffffffffffff1660146125ee565b6121528360001c60206125ee565b604051602001612163929190613a2e565b6040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a59190613aa1565b60405180910390fd5b5050565b6000807f65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea8375491507fb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a549050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361237457600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122d7578273ffffffffffffffffffffffffffffffffffffffff166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d49190613ad8565b91505b8173ffffffffffffffffffffffffffffffffffffffff1663b6d200de7fa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd36040518263ffffffff1660e01b81526004016123309190613b57565b602060405180830381865afa15801561234d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123719190613bb0565b90505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036123b1576123b0613bdd565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036123ee576123ed613bdd565b5b915091565b6000806123fe611982565b9050600081600c0160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000858152602001908152602001600020600201549050600082600c0160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600086815260200190815260200160002060030154905060008060006124c3898961282a565b93505092509250600083836124d89190613c0c565b6bffffffffffffffffffffffff169050600085146125155785856124fc91906134ed565b816125079190613755565b975050505050505050612574565b6000821461254257858261252991906134ed565b816125349190613755565b975050505050505050612574565b6040517fae1c061f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b92915050565b600061258461292f565b600001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6060600060028360026126019190613755565b61260b9190613521565b67ffffffffffffffff81111561262457612623613009565b5b6040519080825280601f01601f1916602001820160405280156126565781602001600182028036833780820191505090505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061268e5761268d613555565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106126f2576126f1613555565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026127329190613755565b61273c9190613521565b90505b60018111156127dc577f3031323334353637383961626364656600000000000000000000000000000000600f86166010811061277e5761277d613555565b5b1a60f81b82828151811061279557612794613555565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c9450806127d590613c4c565b905061273f565b5060008414612820576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281790613cc1565b60405180910390fd5b8091505092915050565b600080600080600061283a611982565b9050600081600c0160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600082600c0160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600089815260200190815260200160002060010154905061291b828a8361295c565b965096509650965050505092959194509250565b6000807f4cd15452b25e815d3f9d1a3c7edd985a178edf5eb3461a1acbf855517423d69490508091505090565b60008060008061296a612c00565b60010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600086815260200190815260200160002060000160009054906101000a9004600b0b612a11612c00565b60010160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878152602001908152602001600020600001600c9054906101000a90046bffffffffffffffffffffffff16612ac3612c00565b60010160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088815260200190815260200160002060010154612b5d612c00565b60010160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600089815260200190815260200160002060020154935093509350935093509350935093565b6000807f9cd9afe22fea86221d6e8117226b65bb0e2af8c4f5b8abf255fb0afcad4a3a9c90508091505090565b6040518060600160405280600061ffff16815260200160006bffffffffffffffffffffffff16815260200160006bffffffffffffffffffffffff1681525090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612cad82612c82565b9050919050565b612cbd81612ca2565b8114612cc857600080fd5b50565b600081359050612cda81612cb4565b92915050565b6000819050919050565b612cf381612ce0565b8114612cfe57600080fd5b50565b600081359050612d1081612cea565b92915050565b60008060408385031215612d2d57612d2c612c78565b5b6000612d3b85828601612ccb565b9250506020612d4c85828601612d01565b9150509250929050565b612d5f81612ca2565b82525050565b612d6e81612ce0565b82525050565b6000608082019050612d896000830187612d56565b612d966020830186612d65565b612da36040830185612d65565b612db06060830184612d65565b95945050505050565b600060208284031215612dcf57612dce612c78565b5b6000612ddd84828501612ccb565b91505092915050565b600061ffff82169050919050565b612dfd81612de6565b82525050565b6000602082019050612e186000830184612df4565b92915050565b600060208284031215612e3457612e33612c78565b5b6000612e4284828501612d01565b91505092915050565b600081600b0b9050919050565b612e6181612e4b565b8114612e6c57600080fd5b50565b600081359050612e7e81612e58565b92915050565b60008060408385031215612e9b57612e9a612c78565b5b6000612ea985828601612ccb565b9250506020612eba85828601612e6f565b9150509250929050565b6000602082019050612ed96000830184612d65565b92915050565b60006bffffffffffffffffffffffff82169050919050565b612f0081612edf565b82525050565b6000606082019050612f1b6000830186612df4565b612f286020830185612ef7565b612f356040830184612ef7565b949350505050565b60008115159050919050565b612f5281612f3d565b82525050565b6000602082019050612f6d6000830184612f49565b92915050565b60008060408385031215612f8a57612f89612c78565b5b6000612f9885828601612d01565b9250506020612fa985828601612ccb565b9150509250929050565b60008060408385031215612fca57612fc9612c78565b5b6000612fd885828601612ccb565b9250506020612fe985828601612ccb565b9150509250929050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61304182612ff8565b810181811067ffffffffffffffff821117156130605761305f613009565b5b80604052505050565b6000613073612c6e565b905061307f8282613038565b919050565b600067ffffffffffffffff82111561309f5761309e613009565b5b602082029050602081019050919050565b600080fd5b6130be81612de6565b81146130c957600080fd5b50565b6000813590506130db816130b5565b92915050565b60006130f46130ef84613084565b613069565b90508083825260208201905060208402830185811115613117576131166130b0565b5b835b81811015613140578061312c88826130cc565b845260208401935050602081019050613119565b5050509392505050565b600082601f83011261315f5761315e612ff3565b5b813561316f8482602086016130e1565b91505092915050565b600067ffffffffffffffff82111561319357613192613009565b5b602082029050602081019050919050565b6131ad81612edf565b81146131b857600080fd5b50565b6000813590506131ca816131a4565b92915050565b60006131e36131de84613178565b613069565b90508083825260208201905060208402830185811115613206576132056130b0565b5b835b8181101561322f578061321b88826131bb565b845260208401935050602081019050613208565b5050509392505050565b600082601f83011261324e5761324d612ff3565b5b813561325e8482602086016131d0565b91505092915050565b600067ffffffffffffffff82111561328257613281613009565b5b602082029050602081019050919050565b60006132a66132a184613267565b613069565b905080838252602082019050602084028301858111156132c9576132c86130b0565b5b835b818110156132f257806132de8882612d01565b8452602084019350506020810190506132cb565b5050509392505050565b600082601f83011261331157613310612ff3565b5b8135613321848260208601613293565b91505092915050565b6000806000806080858703121561334457613343612c78565b5b600085013567ffffffffffffffff81111561336257613361612c7d565b5b61336e8782880161314a565b945050602085013567ffffffffffffffff81111561338f5761338e612c7d565b5b61339b87828801613239565b935050604085013567ffffffffffffffff8111156133bc576133bb612c7d565b5b6133c887828801613239565b925050606085013567ffffffffffffffff8111156133e9576133e8612c7d565b5b6133f5878288016132fc565b91505092959194509250565b6000806040838503121561341857613417612c78565b5b6000613426858286016130cc565b925050602061343785828601612ccb565b9150509250929050565b600082825260208201905092915050565b7f535452415445474953545f524f4c450000000000000000000000000000000000600082015250565b6000613488600f83613441565b915061349382613452565b602082019050919050565b600060208201905081810360008301526134b78161347b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006134f882612ce0565b915061350383612ce0565b925082820390508181111561351b5761351a6134be565b5b92915050565b600061352c82612ce0565b915061353783612ce0565b925082820190508082111561354f5761354e6134be565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061358f82612ce0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036135c1576135c06134be565b5b600182019050919050565b7f5452454153555245525f524f4c45000000000000000000000000000000000000600082015250565b6000613602600e83613441565b915061360d826135cc565b602082019050919050565b60006020820190508181036000830152613631816135f5565b9050919050565b600060408201905061364d6000830185612d56565b61365a6020830184612d65565b9392505050565b61366a81612f3d565b811461367557600080fd5b50565b60008151905061368781613661565b92915050565b6000602082840312156136a3576136a2612c78565b5b60006136b184828501613678565b91505092915050565b60006060820190506136cf6000830186612d56565b6136dc6020830185612d56565b6136e96040830184612d65565b949350505050565b60006136fc82612e4b565b915061370783612e4b565b925082820190507fffffffffffffffffffffffffffffffffffffffff80000000000000000000000081126b7fffffffffffffffffffffff8213171561374f5761374e6134be565b5b92915050565b600061376082612ce0565b915061376b83612ce0565b925082820261377981612ce0565b915082820484148315176137905761378f6134be565b5b5092915050565b60006020820190506137ac6000830184612d56565b92915050565b6000815190506137c181612cea565b92915050565b6000602082840312156137dd576137dc612c78565b5b60006137eb848285016137b2565b91505092915050565b6000819050919050565b600061381961381461380f84612c82565b6137f4565b612c82565b9050919050565b600061382b826137fe565b9050919050565b600061383d82613820565b9050919050565b61384d81613832565b82525050565b61385c81612e4b565b82525050565b60006040820190506138776000830185613844565b6138846020830184613853565b9392505050565b60006040820190506138a06000830185613844565b6138ad6020830184612d56565b9392505050565b6000815190506138c381612e58565b92915050565b6000602082840312156138df576138de612c78565b5b60006138ed848285016138b4565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000613966601783613925565b915061397182613930565b601782019050919050565b600081519050919050565b60005b838110156139a557808201518184015260208101905061398a565b60008484015250505050565b60006139bc8261397c565b6139c68185613925565b93506139d6818560208601613987565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000613a18601183613925565b9150613a23826139e2565b601182019050919050565b6000613a3982613959565b9150613a4582856139b1565b9150613a5082613a0b565b9150613a5c82846139b1565b91508190509392505050565b6000613a738261397c565b613a7d8185613441565b9350613a8d818560208601613987565b613a9681612ff8565b840191505092915050565b60006020820190508181036000830152613abb8184613a68565b905092915050565b600081519050613ad281612cb4565b92915050565b600060208284031215613aee57613aed612c78565b5b6000613afc84828501613ac3565b91505092915050565b6000819050919050565b6000819050919050565b60008160001b9050919050565b6000613b41613b3c613b3784613b05565b613b19565b613b0f565b9050919050565b613b5181613b26565b82525050565b6000602082019050613b6c6000830184613b48565b92915050565b6000613b7d82612ca2565b9050919050565b613b8d81613b72565b8114613b9857600080fd5b50565b600081519050613baa81613b84565b92915050565b600060208284031215613bc657613bc5612c78565b5b6000613bd484828501613b9b565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000613c1782612edf565b9150613c2283612edf565b925082820390506bffffffffffffffffffffffff811115613c4657613c456134be565b5b92915050565b6000613c5782612ce0565b915060008203613c6a57613c696134be565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b6000613cab602083613441565b9150613cb682613c75565b602082019050919050565b60006020820190508181036000830152613cda81613c9e565b905091905056fea2646970667358221220c4e7572168b3d5831e83e3433ea938199032c5ffc0e0ea577795da4ca37ccd8364736f6c63430008120033"; + +type ControlConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: ControlConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class Control__factory extends ContractFactory { + constructor(...args: ControlConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + override getDeployTransaction( + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + override attach(address: string): Control { + return super.attach(address) as Control; + } + override connect(signer: Signer): Control__factory { + return super.connect(signer) as Control__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): ControlInterface { + return new utils.Interface(_abi) as ControlInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): Control { + return new Contract(address, _abi, signerOrProvider) as Control; + } +} diff --git a/contracts/typechain-types/factories/contracts/facets/core/Flow__factory.ts b/contracts/typechain-types/factories/contracts/facets/core/Flow__factory.ts new file mode 100644 index 0000000..ecb4c45 --- /dev/null +++ b/contracts/typechain-types/factories/contracts/facets/core/Flow__factory.ts @@ -0,0 +1,457 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../../../common"; +import type { + Flow, + FlowInterface, +} from "../../../../contracts/facets/core/Flow"; + +const _abi = [ + { + inputs: [], + name: "CallerNotAutobot", + type: "error", + }, + { + inputs: [], + name: "HasActiveFlow", + type: "error", + }, + { + inputs: [], + name: "InsufficientAppGelatoBalance", + type: "error", + }, + { + inputs: [], + name: "InsufficientAppSTBalance", + type: "error", + }, + { + inputs: [], + name: "InsufficientFunds", + type: "error", + }, + { + inputs: [], + name: "InsufficientLifespan1", + type: "error", + }, + { + inputs: [], + name: "InsufficientLifespan2", + type: "error", + }, + { + inputs: [], + name: "InsufficientLifespan3", + type: "error", + }, + { + inputs: [], + name: "InvalidBalance1", + type: "error", + }, + { + inputs: [], + name: "InvalidBalance2", + type: "error", + }, + { + inputs: [], + name: "InvalidSuperToken", + type: "error", + }, + { + inputs: [], + name: "SessionNotStarted", + type: "error", + }, + { + inputs: [], + name: "TooEarly", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "_superToken", + type: "address", + }, + { + internalType: "uint256", + name: "_nonce", + type: "uint256", + }, + ], + name: "closeFlow", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_superToken", + type: "address", + }, + { + internalType: "address", + name: "_sender", + type: "address", + }, + { + internalType: "address", + name: "_receiver", + type: "address", + }, + { + internalType: "uint256", + name: "_nonce", + type: "uint256", + }, + { + internalType: "int96", + name: "_flowRate", + type: "int96", + }, + ], + name: "decreaseFlow", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_superToken", + type: "address", + }, + { + internalType: "uint256", + name: "_amount", + type: "uint256", + }, + ], + name: "depositSuperToken", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_user", + type: "address", + }, + { + internalType: "address", + name: "_superToken", + type: "address", + }, + ], + name: "getAmountFlowed", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_superToken", + type: "address", + }, + ], + name: "getDepositTotal", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_user", + type: "address", + }, + { + internalType: "address", + name: "_superToken", + type: "address", + }, + ], + name: "getDepositUser", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_user", + type: "address", + }, + { + internalType: "address", + name: "_superToken", + type: "address", + }, + { + internalType: "uint256", + name: "_nonce", + type: "uint256", + }, + ], + name: "getFlowData", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + { + internalType: "uint256", + name: "", + type: "uint256", + }, + { + internalType: "uint256", + name: "", + type: "uint256", + }, + { + internalType: "uint256", + name: "", + type: "uint256", + }, + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_user", + type: "address", + }, + { + internalType: "address", + name: "_superToken", + type: "address", + }, + ], + name: "getNewFlowNonce", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_user", + type: "address", + }, + { + internalType: "address", + name: "_superToken", + type: "address", + }, + { + internalType: "int96", + name: "_flowRate", + type: "int96", + }, + ], + name: "getValidSafeLifespan", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_user", + type: "address", + }, + { + internalType: "address", + name: "_superToken", + type: "address", + }, + ], + name: "hasActiveFlow", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_viewer", + type: "address", + }, + { + internalType: "address", + name: "_broadcaster", + type: "address", + }, + ], + name: "isViewSessionAllowed", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_receiver", + type: "address", + }, + { + internalType: "address", + name: "_superToken", + type: "address", + }, + { + internalType: "uint256", + name: "_lifespan", + type: "uint256", + }, + ], + name: "openFlow", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_superToken", + type: "address", + }, + { + internalType: "uint256", + name: "_amount", + type: "uint256", + }, + ], + name: "withdrawSuperToken", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +const _bytecode = + "0x608060405234801561001057600080fd5b50614fb4806100206000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806354bbc2ad1161008c578063c76474db11610066578063c76474db14610261578063dc5cd1d814610291578063dfc96e1b146102ad578063e32867fc146102c9576100cf565b806354bbc2ad146101cc5780639a5b5f9314610201578063a152ca6f14610231576100cf565b80630197c386146100d45780630dfa0b82146100f057806336fbb025146101205780633870f4a01461013c578063468240a91461016c578063521d3f3c1461019c575b600080fd5b6100ee60048036038101906100e99190613f40565b6102e5565b005b61010a60048036038101906101059190613fb9565b6102fc565b604051610117919061401b565b60405180910390f35b61013a60048036038101906101359190614036565b610312565b005b610156600480360381019061015191906140b1565b61032e565b604051610163919061401b565b60405180910390f35b610186600480360381019061018191906140b1565b610342565b604051610193919061410c565b60405180910390f35b6101b660048036038101906101b191906140b1565b610356565b6040516101c3919061401b565b60405180910390f35b6101e660048036038101906101e19190614127565b61036a565b6040516101f8969594939291906141a2565b60405180910390f35b61021b600480360381019061021691906140b1565b610396565b604051610228919061410c565b60405180910390f35b61024b600480360381019061024691906140b1565b6103aa565b604051610258919061401b565b60405180910390f35b61027b60048036038101906102769190614203565b6103be565b604051610288919061401b565b60405180910390f35b6102ab60048036038101906102a69190613f40565b6103d0565b005b6102c760048036038101906102c29190614127565b6103e7565b005b6102e360048036038101906102de9190613f40565b610db3565b005b6102ee826111d7565b6102f88282611219565b5050565b6000610309848484611399565b90509392505050565b61031a6114e6565b6103278585858585611578565b5050505050565b600061033a83836117d2565b905092915050565b600061034e83836118a5565b905092915050565b600061036283836119a5565b905092915050565b60008060008060008061037e898989611a35565b95509550955095509550955093975093979195509350565b60006103a28383611e1f565b905092915050565b60006103b68383612001565b905092915050565b60006103c982612091565b9050919050565b6103d9826120e3565b6103e38282612127565b5050565b6103f0826120e3565b6103fa3383612376565b61040261269e565b61040b826111d7565b60006104156126eb565b905060006104238585612718565b905060008260010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060010154036104f1576040517f3c2779e500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006104fb6127c9565b905060008360010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060000160009054906101000a9004600b0b90506105ab86826127f6565b60006105b93388888561283a565b905060006105c733896119a5565b9050888460010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550848460010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060020181905550600061073b6128bf565b9050600081600b0160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508a82600c0160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508682600c0160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000838152602001908152602001600020600101819055504282600c0160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060020181905550808660010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008581526020019081526020016000206000018190555061096f8a338d86896128ec565b60006040518060400160405280600267ffffffffffffffff81111561099757610996614230565b5b6040519080825280602002602001820160405280156109c55781602001602082028036833780820191505090505b508152602001600167ffffffffffffffff8111156109e6576109e5614230565b5b604051908082528060200260200182016040528015610a1957816020015b6060815260200190600190039081610a045790505b50815250905060018160000151600081518110610a3957610a3861425f565b5b60200260200101906003811115610a5357610a5261428e565b5b90816003811115610a6757610a6661428e565b5b8152505060038160000151600181518110610a8557610a8461425f565b5b60200260200101906003811115610a9f57610a9e61428e565b5b90816003811115610ab357610ab261428e565b5b81525050610acc8542610ac691906142ec565b86612a3b565b8160200151600081518110610ae457610ae361425f565b5b602002602001018190525060006336fbb02560e01b8c338f888b604051602401610b1295949392919061432f565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050610b79612a67565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633323b46730838560006040518563ffffffff1660e01b8152600401610bdc9493929190614659565b6020604051808303816000875af1158015610bfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1f91906146d8565b8860010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008781526020019081526020016000206005018190555060018860000160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d4491906142ec565b92505081905550600184600b0160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d9d91906142ec565b9250508190555050505050505050505050505050565b6000610dbd6127c9565b90506000610dc96128bf565b600701548260010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085815260200190815260200160002060030154610e6a91906142ec565b905080421015610ea6576040517f085de62500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610eae612a67565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ee8ca3b58360010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000868152602001908152602001600020600501546040518263ffffffff1660e01b8152600401610f9c9190614705565b600060405180830381600087803b158015610fb657600080fd5b505af1158015610fca573d6000803e3d6000fd5b5050505060008260010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008360010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008681526020019081526020016000206002015490506111cf8633848861112b6126eb565b60010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087815260200190815260200160002060000160009054906101000a9004600b0b611578565b505050505050565b6111e081612a94565b611216576040517f334ae3e600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b8173ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b815260040161125693929190614720565b6020604051808303816000875af1158015611275573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112999190614783565b50806112a36127c9565b60020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461132f91906142ec565b925050819055508061133f6127c9565b60030160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461138e91906142ec565b925050819055505050565b600080826bffffffffffffffffffffffff166113b36127c9565b60020160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461143b91906147df565b905060006114476128bf565b90508060060154821015611487576040517fcdd3529e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008160060154836114999190614810565b905081600701548110156114d9576040517f6c451f0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8093505050509392505050565b6114ee612a67565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611576576040517fb5e0b29200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600085905060006115aa30868473ffffffffffffffffffffffffffffffffffffffff16612af39092919063ffffffff16565b9050600083826115ba9190614844565b600b0b136115f3576115ed30868473ffffffffffffffffffffffffffffffffffffffff16612b939092919063ffffffff16565b5061162b565b6116298584836116039190614844565b8473ffffffffffffffffffffffffffffffffffffffff16612d469092919063ffffffff16565b505b426116346127c9565b60010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008681526020019081526020016000206004018190555060006116d36127c9565b60010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000868152602001908152602001600020600001549050426117706128bf565b600c0160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000838152602001908152602001600020600301819055505050505050505050565b60008060006117e18585612ef9565b905060008060008060006117f68a8a88611a35565b955050945094509450945060008061180f878c88612faa565b93505092505082156118245760009850611893565b600084146118585784846118389190614810565b826bffffffffffffffffffffffff1661185191906148a8565b9850611892565b6000811461188c57848161186c9190614810565b826bffffffffffffffffffffffff1661188591906148a8565b9850611891565b600098505b5b5b88995050505050505050505092915050565b6000806118b284846119a5565b905060008111156119995760006118d685856001856118d19190614810565b61324e565b935050505060006118e56127c9565b60010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001856119719190614810565b8152602001908152602001600020600401541480156119905750600081145b9250505061199f565b60009150505b92915050565b60006119af6127c9565b60000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600080600080600080611a466127c9565b60010160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611b006127c9565b60010160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600089815260200190815260200160002060020154611b9a6127c9565b60010160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a815260200190815260200160002060030154611c346127c9565b60010160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008b815260200190815260200160002060040154611cce6127c9565b60010160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c815260200190815260200160002060050154611d686127c9565b60010160008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d815260200190815260200160002060060160009054906101000a900460ff1695509550955095509550955093975093979195509350565b6000806000611e2d846133cd565b915091506000821480611e4257506000815111155b15611e5257600092505050611ffb565b60005b8151811015611ff3576000611e8486848481518110611e7757611e7661425f565b5b6020026020010151612718565b9050600080611eae88868681518110611ea057611e9f61425f565b5b602002602001015185612faa565b935093505050858214611eca5760009650505050505050611ffb565b60008114611ee15760009650505050505050611ffb565b6000611f078a878781518110611efa57611ef961425f565b5b6020026020010151612ef9565b9050600080600080611f348e8b8b81518110611f2657611f2561425f565b5b602002602001015187611a35565b505093509350935093508c73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611f855760009b505050505050505050505050611ffb565b878314611fa05760009b505050505050505050505050611ffb565b8a821015611fbc5760009b505050505050505050505050611ffb565b60008114611fd85760009b505050505050505050505050611ffb565b50505050505050508080611feb906148ea565b915050611e55565b506001925050505b92915050565b600061200b6127c9565b60020160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600061209b6127c9565b60030160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6120ed33826118a5565b15612124576040517fd18923ab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6121313383612376565b600061213b6127c9565b60020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156121f5576040517f356680b700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816121fe6127c9565b60020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461228a9190614810565b925050819055508161229a6127c9565b60030160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546122e99190614810565b925050819055508273ffffffffffffffffffffffffffffffffffffffff166323b872dd3033856040518463ffffffff1660e01b815260040161232d93929190614720565b6020604051808303816000875af115801561234c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123709190614783565b50505050565b600061238283836117d2565b90508061238d6127c9565b60020160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124199190614810565b92505081905550806124296127c9565b60030160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124789190614810565b9250508190555060006124896127c9565b60020160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561253f576040517f0a2005fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006125496127c9565b60030160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156125c2576040517f2fe0888f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006125ce84846119a5565b905060008111156126985760016125e36127c9565b60010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060018461266f9190614810565b815260200190815260200160002060060160006101000a81548160ff0219169083151502179055505b50505050565b6126a6612a67565b600301546126b26134f9565b116126e9576040517fa426119900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6000807f9cd9afe22fea86221d6e8117226b65bb0e2af8c4f5b8abf255fb0afcad4a3a9c90508091505090565b6000806127236126eb565b60000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081146127bd576001816127b89190614810565b6127c0565b60005b91505092915050565b6000807f2da2adfb54fd91bfb31e0d805792077ddcd5b0427b14a56397e2f3cc190c883090508091505090565b61280082826135bb565b612836576040517f1824866a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b600080612848868685611399565b905060006128546128bf565b90508060070154816006015461286a91906142ec565b8510156128a3576040517f3661e75b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818510156128b157846128b3565b815b92505050949350505050565b6000807f2f7ed27098ecefe70183ee38ae4542dee65215b0786f6870871034402cfe2cc990508091505090565b6000859050600061291e30868473ffffffffffffffffffffffffffffffffffffffff16612af39092919063ffffffff16565b9050600081600b0b1361295c5761295685848473ffffffffffffffffffffffffffffffffffffffff1661364f9092919063ffffffff16565b50612994565b61299285848361296c9190614932565b8473ffffffffffffffffffffffffffffffffffffffff16612d469092919063ffffffff16565b505b4261299d6127c9565b60010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008681526020019081526020016000206003018190555050505050505050565b60608282604051602001612a509291906149c1565b604051602081830303815290604052905092915050565b6000807fde06769ca6d80a022439e234eebb61c3801d652175b62f912d6f8cac7b881c6590508091505090565b6000612a9e6128bf565b60090160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080612aff85613802565b9150508073ffffffffffffffffffffffffffffffffffffffff1663e6a1e8888686866040518463ffffffff1660e01b8152600401612b3f93929190614a49565b608060405180830381865afa158015612b5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b809190614aaa565b9091925090505080925050509392505050565b6000806000612ba186613a43565b915091508173ffffffffffffffffffffffffffffffffffffffff166339255d5b828373ffffffffffffffffffffffffffffffffffffffff1663b4b333c68a8a8a600067ffffffffffffffff811115612bfc57612bfb614230565b5b6040519080825280601f01601f191660200182016040528015612c2e5781602001600182028036833780820191505090505b50604051602401612c429493929190614b11565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050600067ffffffffffffffff811115612c9f57612c9e614230565b5b6040519080825280601f01601f191660200182016040528015612cd15781602001600182028036833780820191505090505b506040518463ffffffff1660e01b8152600401612cf093929190614b7e565b6000604051808303816000875af1158015612d0f573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190612d389190614cba565b506001925050509392505050565b6000806000612d5486613a43565b915091508173ffffffffffffffffffffffffffffffffffffffff166339255d5b828373ffffffffffffffffffffffffffffffffffffffff166350209a628a8a8a600067ffffffffffffffff811115612daf57612dae614230565b5b6040519080825280601f01601f191660200182016040528015612de15781602001600182028036833780820191505090505b50604051602401612df59493929190614d03565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050600067ffffffffffffffff811115612e5257612e51614230565b5b6040519080825280601f01601f191660200182016040528015612e845781602001600182028036833780820191505090505b506040518463ffffffff1660e01b8152600401612ea393929190614b7e565b6000604051808303816000875af1158015612ec2573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190612eeb9190614cba565b506001925050509392505050565b600080612f046127c9565b60000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008114612f9e57600181612f999190614810565b612fa1565b60005b91505092915050565b600080600080612fb86126eb565b60010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600086815260200190815260200160002060000160009054906101000a9004600b0b61305f6126eb565b60010160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878152602001908152602001600020600001600c9054906101000a90046bffffffffffffffffffffffff166131116126eb565b60010160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000888152602001908152602001600020600101546131ab6126eb565b60010160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600089815260200190815260200160002060020154935093509350935093509350935093565b600080600080600061325e6127c9565b905060008160010160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008260010160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008981526020019081526020016000206002015490506133b9828a83612faa565b965096509650965050505093509350935093565b600060606133d96126eb565b60020160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546134256126eb565b60020160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101808054806020026020016040519081016040528092919081815260200182805480156134e957602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161349f575b5050505050905091509150915091565b6000613503612a67565b60010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b47064c83073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6040518363ffffffff1660e01b8152600401613575929190614d4f565b602060405180830381865afa158015613592573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135b69190614d78565b905090565b6000808373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016135f79190614da5565b602060405180830381865afa158015613614573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136389190614d78565b90506136448484613cca565b811191505092915050565b600080600061365d86613a43565b915091508173ffffffffffffffffffffffffffffffffffffffff166339255d5b828373ffffffffffffffffffffffffffffffffffffffff166362fc305e8a8a8a600067ffffffffffffffff8111156136b8576136b7614230565b5b6040519080825280601f01601f1916602001820160405280156136ea5781602001600182028036833780820191505090505b506040516024016136fe9493929190614d03565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050600067ffffffffffffffff81111561375b5761375a614230565b5b6040519080825280601f01601f19166020018201604052801561378d5781602001600182028036833780820191505090505b506040518463ffffffff1660e01b81526004016137ac93929190614b7e565b6000604051808303816000875af11580156137cb573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906137f49190614cba565b506001925050509392505050565b6000807f65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea8375491507fb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a549050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036139c457600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613927578273ffffffffffffffffffffffffffffffffffffffff166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015613900573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139249190614dd5565b91505b8173ffffffffffffffffffffffffffffffffffffffff1663b6d200de7fa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd36040518263ffffffff1660e01b81526004016139809190614e4a565b602060405180830381865afa15801561399d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139c19190614ea3565b90505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613a0157613a00614ed0565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613a3e57613a3d614ed0565b5b915091565b6000807f65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea8375491507fb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a549050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613c4b57600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613b68578273ffffffffffffffffffffffffffffffffffffffff166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b659190614dd5565b91505b8173ffffffffffffffffffffffffffffffffffffffff1663b6d200de7fa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd36040518263ffffffff1660e01b8152600401613bc19190614e4a565b602060405180830381865afa158015613bde573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c029190614ea3565b9050817f65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea83755807fb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a555b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613c8857613c87614ed0565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613cc557613cc4614ed0565b5b915091565b6000808390506000613cfb848373ffffffffffffffffffffffffffffffffffffffff16613d7090919063ffffffff16565b90506000613d28308473ffffffffffffffffffffffffffffffffffffffff16613e0490919063ffffffff16565b9050613d326128bf565b600801548582613d429190614932565b6bffffffffffffffffffffffff16613d5a91906148a8565b82613d6591906142ec565b935050505092915050565b600080613d7c84613802565b9150508073ffffffffffffffffffffffffffffffffffffffff16638d997f6e85856040518363ffffffff1660e01b8152600401613dba929190614eff565b602060405180830381865afa158015613dd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dfb9190614d78565b91505092915050565b600080613e1084613802565b9150508073ffffffffffffffffffffffffffffffffffffffff1663e8e7e2d185856040518363ffffffff1660e01b8152600401613e4e929190614f28565b602060405180830381865afa158015613e6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e8f9190614f51565b91505092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613ed782613eac565b9050919050565b613ee781613ecc565b8114613ef257600080fd5b50565b600081359050613f0481613ede565b92915050565b6000819050919050565b613f1d81613f0a565b8114613f2857600080fd5b50565b600081359050613f3a81613f14565b92915050565b60008060408385031215613f5757613f56613ea2565b5b6000613f6585828601613ef5565b9250506020613f7685828601613f2b565b9150509250929050565b600081600b0b9050919050565b613f9681613f80565b8114613fa157600080fd5b50565b600081359050613fb381613f8d565b92915050565b600080600060608486031215613fd257613fd1613ea2565b5b6000613fe086828701613ef5565b9350506020613ff186828701613ef5565b925050604061400286828701613fa4565b9150509250925092565b61401581613f0a565b82525050565b6000602082019050614030600083018461400c565b92915050565b600080600080600060a0868803121561405257614051613ea2565b5b600061406088828901613ef5565b955050602061407188828901613ef5565b945050604061408288828901613ef5565b935050606061409388828901613f2b565b92505060806140a488828901613fa4565b9150509295509295909350565b600080604083850312156140c8576140c7613ea2565b5b60006140d685828601613ef5565b92505060206140e785828601613ef5565b9150509250929050565b60008115159050919050565b614106816140f1565b82525050565b600060208201905061412160008301846140fd565b92915050565b6000806000606084860312156141405761413f613ea2565b5b600061414e86828701613ef5565b935050602061415f86828701613ef5565b925050604061417086828701613f2b565b9150509250925092565b61418381613ecc565b82525050565b6000819050919050565b61419c81614189565b82525050565b600060c0820190506141b7600083018961417a565b6141c4602083018861400c565b6141d1604083018761400c565b6141de606083018661400c565b6141eb6080830185614193565b6141f860a08301846140fd565b979650505050505050565b60006020828403121561421957614218613ea2565b5b600061422784828501613ef5565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006142f782613f0a565b915061430283613f0a565b925082820190508082111561431a576143196142bd565b5b92915050565b61432981613f80565b82525050565b600060a082019050614344600083018861417a565b614351602083018761417a565b61435e604083018661417a565b61436b606083018561400c565b6143786080830184614320565b9695505050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156143bc5780820151818401526020810190506143a1565b60008484015250505050565b6000601f19601f8301169050919050565b60006143e482614382565b6143ee818561438d565b93506143fe81856020860161439e565b614407816143c8565b840191505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6004811061444f5761444e61428e565b5b50565b60008190506144608261443e565b919050565b600061447082614452565b9050919050565b61448081614465565b82525050565b60006144928383614477565b60208301905092915050565b6000602082019050919050565b60006144b682614412565b6144c0818561441d565b93506144cb8361442e565b8060005b838110156144fc5781516144e38882614486565b97506144ee8361449e565b9250506001810190506144cf565b5085935050505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600082825260208201905092915050565b600061455182614382565b61455b8185614535565b935061456b81856020860161439e565b614574816143c8565b840191505092915050565b600061458b8383614546565b905092915050565b6000602082019050919050565b60006145ab82614509565b6145b58185614514565b9350836020820285016145c785614525565b8060005b8581101561460357848403895281516145e4858261457f565b94506145ef83614593565b925060208a019950506001810190506145cb565b50829750879550505050505092915050565b6000604083016000830151848203600086015261463282826144ab565b9150506020830151848203602086015261464c82826145a0565b9150508091505092915050565b600060808201905061466e600083018761417a565b818103602083015261468081866143d9565b905081810360408301526146948185614615565b90506146a3606083018461417a565b95945050505050565b6146b581614189565b81146146c057600080fd5b50565b6000815190506146d2816146ac565b92915050565b6000602082840312156146ee576146ed613ea2565b5b60006146fc848285016146c3565b91505092915050565b600060208201905061471a6000830184614193565b92915050565b6000606082019050614735600083018661417a565b614742602083018561417a565b61474f604083018461400c565b949350505050565b614760816140f1565b811461476b57600080fd5b50565b60008151905061477d81614757565b92915050565b60006020828403121561479957614798613ea2565b5b60006147a78482850161476e565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006147ea82613f0a565b91506147f583613f0a565b925082614805576148046147b0565b5b828204905092915050565b600061481b82613f0a565b915061482683613f0a565b925082820390508181111561483e5761483d6142bd565b5b92915050565b600061484f82613f80565b915061485a83613f80565b925082820390506b7fffffffffffffffffffffff81137fffffffffffffffffffffffffffffffffffffffff800000000000000000000000821217156148a2576148a16142bd565b5b92915050565b60006148b382613f0a565b91506148be83613f0a565b92508282026148cc81613f0a565b915082820484148315176148e3576148e26142bd565b5b5092915050565b60006148f582613f0a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614927576149266142bd565b5b600182019050919050565b600061493d82613f80565b915061494883613f80565b925082820190507fffffffffffffffffffffffffffffffffffffffff80000000000000000000000081126b7fffffffffffffffffffffff821317156149905761498f6142bd565b5b92915050565b60006fffffffffffffffffffffffffffffffff82169050919050565b6149bb81614996565b82525050565b60006040820190506149d660008301856149b2565b6149e360208301846149b2565b9392505050565b6000819050919050565b6000614a0f614a0a614a0584613eac565b6149ea565b613eac565b9050919050565b6000614a21826149f4565b9050919050565b6000614a3382614a16565b9050919050565b614a4381614a28565b82525050565b6000606082019050614a5e6000830186614a3a565b614a6b602083018561417a565b614a78604083018461417a565b949350505050565b600081519050614a8f81613f14565b92915050565b600081519050614aa481613f8d565b92915050565b60008060008060808587031215614ac457614ac3613ea2565b5b6000614ad287828801614a80565b9450506020614ae387828801614a95565b9350506040614af487828801614a80565b9250506060614b0587828801614a80565b91505092959194509250565b6000608082019050614b266000830187614a3a565b614b33602083018661417a565b614b40604083018561417a565b8181036060830152614b5281846143d9565b905095945050505050565b6000614b6882614a16565b9050919050565b614b7881614b5d565b82525050565b6000606082019050614b936000830186614b6f565b8181036020830152614ba581856143d9565b90508181036040830152614bb981846143d9565b9050949350505050565b600080fd5b600080fd5b614bd6826143c8565b810181811067ffffffffffffffff82111715614bf557614bf4614230565b5b80604052505050565b6000614c08613e98565b9050614c148282614bcd565b919050565b600067ffffffffffffffff821115614c3457614c33614230565b5b614c3d826143c8565b9050602081019050919050565b6000614c5d614c5884614c19565b614bfe565b905082815260208101848484011115614c7957614c78614bc8565b5b614c8484828561439e565b509392505050565b600082601f830112614ca157614ca0614bc3565b5b8151614cb1848260208601614c4a565b91505092915050565b600060208284031215614cd057614ccf613ea2565b5b600082015167ffffffffffffffff811115614cee57614ced613ea7565b5b614cfa84828501614c8c565b91505092915050565b6000608082019050614d186000830187614a3a565b614d25602083018661417a565b614d326040830185614320565b8181036060830152614d4481846143d9565b905095945050505050565b6000604082019050614d64600083018561417a565b614d71602083018461417a565b9392505050565b600060208284031215614d8e57614d8d613ea2565b5b6000614d9c84828501614a80565b91505092915050565b6000602082019050614dba600083018461417a565b92915050565b600081519050614dcf81613ede565b92915050565b600060208284031215614deb57614dea613ea2565b5b6000614df984828501614dc0565b91505092915050565b6000819050919050565b60008160001b9050919050565b6000614e34614e2f614e2a84614e02565b614e0c565b614189565b9050919050565b614e4481614e19565b82525050565b6000602082019050614e5f6000830184614e3b565b92915050565b6000614e7082613ecc565b9050919050565b614e8081614e65565b8114614e8b57600080fd5b50565b600081519050614e9d81614e77565b92915050565b600060208284031215614eb957614eb8613ea2565b5b6000614ec784828501614e8e565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000604082019050614f146000830185614a3a565b614f216020830184614320565b9392505050565b6000604082019050614f3d6000830185614a3a565b614f4a602083018461417a565b9392505050565b600060208284031215614f6757614f66613ea2565b5b6000614f7584828501614a95565b9150509291505056fea26469706673582212201dce8b857275c446b38b2fd0190c291b939a9d8728ca09a3c4be594a1d5f303264736f6c63430008120033"; + +type FlowConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: FlowConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class Flow__factory extends ContractFactory { + constructor(...args: FlowConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + override getDeployTransaction( + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + override attach(address: string): Flow { + return super.attach(address) as Flow; + } + override connect(signer: Signer): Flow__factory { + return super.connect(signer) as Flow__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): FlowInterface { + return new utils.Interface(_abi) as FlowInterface; + } + static connect(address: string, signerOrProvider: Signer | Provider): Flow { + return new Contract(address, _abi, signerOrProvider) as Flow; + } +} diff --git a/contracts/typechain-types/factories/contracts/facets/core/Session__factory.ts b/contracts/typechain-types/factories/contracts/facets/core/Session__factory.ts new file mode 100644 index 0000000..b3b6b8c --- /dev/null +++ b/contracts/typechain-types/factories/contracts/facets/core/Session__factory.ts @@ -0,0 +1,262 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../../../common"; +import type { + Session, + SessionInterface, +} from "../../../../contracts/facets/core/Session"; + +const _abi = [ + { + inputs: [], + name: "ArrayLengthNotMatch", + type: "error", + }, + { + inputs: [], + name: "HasActiveFlow", + type: "error", + }, + { + inputs: [], + name: "InvalidFlowRate", + type: "error", + }, + { + inputs: [], + name: "InvalidSuperToken", + type: "error", + }, + { + inputs: [], + name: "PreviousSessionStillLive", + type: "error", + }, + { + inputs: [], + name: "SessionAlreadyEnded", + type: "error", + }, + { + inputs: [], + name: "SessionNotStarted", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "_user", + type: "address", + }, + ], + name: "getCurrentSessionData", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + { + internalType: "address[]", + name: "", + type: "address[]", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_user", + type: "address", + }, + { + internalType: "address", + name: "_superToken", + type: "address", + }, + ], + name: "getNewSessionNonce", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_user", + type: "address", + }, + { + internalType: "address", + name: "_superToken", + type: "address", + }, + { + internalType: "uint256", + name: "_nonce", + type: "uint256", + }, + ], + name: "getSessionData", + outputs: [ + { + internalType: "int96", + name: "", + type: "int96", + }, + { + internalType: "uint96", + name: "", + type: "uint96", + }, + { + internalType: "uint256", + name: "", + type: "uint256", + }, + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_superToken", + type: "address", + }, + { + internalType: "uint96", + name: "_flowRate", + type: "uint96", + }, + { + internalType: "uint256", + name: "_tag", + type: "uint256", + }, + ], + name: "startSession", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address[]", + name: "_superTokens", + type: "address[]", + }, + { + internalType: "uint96[]", + name: "_flowRates", + type: "uint96[]", + }, + { + internalType: "uint256[]", + name: "_tags", + type: "uint256[]", + }, + ], + name: "startSessions", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_superToken", + type: "address", + }, + ], + name: "stopSession", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address[]", + name: "_superTokens", + type: "address[]", + }, + ], + name: "stopSessions", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +const _bytecode = + "0x608060405234801561001057600080fd5b50612ecb806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806392c2226e1161005b57806392c2226e146101025780639afffbf914610132578063b233bd051461014e578063f437a7a51461016a5761007d565b806353732469146100825780637fe70a27146100b35780638ff3849b146100cf575b600080fd5b61009c60048036038101906100979190612150565b610186565b6040516100aa929190612254565b60405180910390f35b6100cd60048036038101906100c891906122f4565b61019c565b005b6100e960048036038101906100e49190612347565b6102b0565b6040516100f994939291906123c5565b60405180910390f35b61011c6004803603810190610117919061240a565b6102d2565b604051610129919061244a565b60405180910390f35b61014c600480360381019061014791906125be565b6102e6565b005b61016860048036038101906101639190612150565b61038f565b005b610184600480360381019061017f919061278d565b6103fe565b005b6000606061019383610598565b91509150915091565b6101a5836106c4565b6101b0838383610706565b60006101ba610ade565b9050428160020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055508060020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101849080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b6000806000806102c1878787610b0b565b935093509350935093509350935093565b60006102de8383610daf565b905092915050565b60005b81518110156103285761031582828151811061030857610307612834565b5b6020026020010151610e3f565b808061032090612892565b9150506102e9565b50610331610ade565b60020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008082016000905560018201600061038a9190611fd5565b505050565b61039881610e3f565b6103a0610ade565b60020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000808201600090556001820160006103f99190611fd5565b505050565b8151835114158061041157508051835114155b15610448576040517fed882f7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b83518110156104e35761047784828151811061046a57610469612834565b5b60200260200101516106c4565b6104d084828151811061048d5761048c612834565b5b60200260200101518483815181106104a8576104a7612834565b5b60200260200101518484815181106104c3576104c2612834565b5b6020026020010151610706565b80806104db90612892565b91505061044b565b5060006104ee610ade565b9050428160020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550838160020160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001019080519060200190610591929190611ff6565b5050505050565b600060606105a4610ade565b60020160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546105f0610ade565b60020160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101808054806020026020016040519081016040528092919081815260200182805480156106b457602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161066a575b5050505050905091509150915091565b6106cd81611103565b610703576040517f334ae3e600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6000610710610ade565b9050600061071e3386610daf565b90506000811180156107ce575060008260010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001846107ba91906128da565b815260200190815260200160002060020154145b15610805576040517f9b90a9c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61080e85611162565b600061081b3386866111a6565b9050808360010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060000160006101000a8154816bffffffffffffffffffffffff0219169083600b0b6bffffffffffffffffffffffff160217905550848360010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000848152602001908152602001600020600001600c6101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550428360010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000848152602001908152602001600020600101819055506001610a43610ade565b60000160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610acf919061290e565b92505081905550505050505050565b6000807f9cd9afe22fea86221d6e8117226b65bb0e2af8c4f5b8abf255fb0afcad4a3a9c90508091505090565b600080600080610b19610ade565b60010160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600086815260200190815260200160002060000160009054906101000a9004600b0b610bc0610ade565b60010160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878152602001908152602001600020600001600c9054906101000a90046bffffffffffffffffffffffff16610c72610ade565b60010160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088815260200190815260200160002060010154610d0c610ade565b60010160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600089815260200190815260200160002060020154935093509350935093509350935093565b6000610db9610ade565b60000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000610e4b33836112d4565b90506000610e57610ade565b60010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206001015403610f20576040517f3c2779e500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610f2a610ade565b60010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206002015414610ff3576040517fe7a7ee3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000829050600061102530338473ffffffffffffffffffffffffffffffffffffffff166113859092919063ffffffff16565b9050600081600b0b1461105f5761105d30338473ffffffffffffffffffffffffffffffffffffffff166114259092919063ffffffff16565b505b42611068610ade565b60010160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008581526020019081526020016000206002018190555050505050565b600061110d6115d8565b60090160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61116c3382611605565b156111a3576040517fd18923ab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b60008060006111b36115d8565b60040160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900461ffff16905060008161ffff16111561121957809150611234565b611221611705565b15611233576112308585611725565b91505b5b60008261ffff160361124a5784925050506112cd565b61271061ffff168261ffff16866112619190612942565b6bffffffffffffffffffffffff1610156112a7576040517ffe267e4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61271061ffff168261ffff16866112be9190612942565b6112c891906129ae565b925050505b9392505050565b6000806112df610ade565b60000160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081146113795760018161137491906128da565b61137c565b60005b91505092915050565b600080611391856117c3565b9150508073ffffffffffffffffffffffffffffffffffffffff1663e6a1e8888686866040518463ffffffff1660e01b81526004016113d193929190612a4d565b608060405180830381865afa1580156113ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114129190612ac5565b9091925090505080925050509392505050565b600080600061143386611a04565b915091508173ffffffffffffffffffffffffffffffffffffffff166339255d5b828373ffffffffffffffffffffffffffffffffffffffff1663b4b333c68a8a8a600067ffffffffffffffff81111561148e5761148d61247b565b5b6040519080825280601f01601f1916602001820160405280156114c05781602001600182028036833780820191505090505b506040516024016114d49493929190612bab565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050600067ffffffffffffffff8111156115315761153061247b565b5b6040519080825280601f01601f1916602001820160405280156115635781602001600182028036833780820191505090505b506040518463ffffffff1660e01b815260040161158293929190612c18565b6000604051808303816000875af11580156115a1573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906115ca9190612d03565b506001925050509392505050565b6000807f2f7ed27098ecefe70183ee38ae4542dee65215b0786f6870871034402cfe2cc990508091505090565b6000806116128484611c8b565b905060008111156116f9576000611636858560018561163191906128da565b611d1b565b93505050506000611645611e9a565b60010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001856116d191906128da565b8152602001908152602001600020600401541480156116f05750600081145b925050506116ff565b60009150505b92915050565b600061170f6115d8565b60050160009054906101000a900460ff16905090565b60008060008061173485611ec7565b925092509250816bffffffffffffffffffffffff16866bffffffffffffffffffffffff1610806117805750806bffffffffffffffffffffffff16866bffffffffffffffffffffffff1610155b156117b7576040517ffe267e4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82935050505092915050565b6000807f65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea8375491507fb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a549050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361198557600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118e8578273ffffffffffffffffffffffffffffffffffffffff166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e59190612d61565b91505b8173ffffffffffffffffffffffffffffffffffffffff1663b6d200de7fa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd36040518263ffffffff1660e01b81526004016119419190612de0565b602060405180830381865afa15801561195e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119829190612e39565b90505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119c2576119c1612e66565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036119ff576119fe612e66565b5b915091565b6000807f65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea8375491507fb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a549050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c0c57600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b29578273ffffffffffffffffffffffffffffffffffffffff166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b269190612d61565b91505b8173ffffffffffffffffffffffffffffffffffffffff1663b6d200de7fa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd36040518263ffffffff1660e01b8152600401611b829190612de0565b602060405180830381865afa158015611b9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bc39190612e39565b9050817f65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea83755807fb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a555b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c4957611c48612e66565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c8657611c85612e66565b5b915091565b6000611c95611e9a565b60000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000806000806000611d2b611e9a565b905060008160010160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008260010160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000898152602001908152602001600020600201549050611e86828a83610b0b565b965096509650965050505093509350935093565b6000807f2da2adfb54fd91bfb31e0d805792077ddcd5b0427b14a56397e2f3cc190c883090508091505090565b600080600080611eea85611ed96115d8565b600001611f0990919063ffffffff16565b9050806000015181602001518260400151935093509350509193909250565b611f11612080565b8260010160008381526020019081526020016000206040518060600160405290816000820160009054906101000a900461ffff1661ffff1661ffff1681526020016000820160029054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160008201600e9054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681525050905092915050565b5080546000825590600052602060002090810190611ff391906120c1565b50565b82805482825590600052602060002090810192821561206f579160200282015b8281111561206e5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190612016565b5b50905061207c91906120c1565b5090565b6040518060600160405280600061ffff16815260200160006bffffffffffffffffffffffff16815260200160006bffffffffffffffffffffffff1681525090565b5b808211156120da5760008160009055506001016120c2565b5090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061211d826120f2565b9050919050565b61212d81612112565b811461213857600080fd5b50565b60008135905061214a81612124565b92915050565b600060208284031215612166576121656120e8565b5b60006121748482850161213b565b91505092915050565b6000819050919050565b6121908161217d565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6121cb81612112565b82525050565b60006121dd83836121c2565b60208301905092915050565b6000602082019050919050565b600061220182612196565b61220b81856121a1565b9350612216836121b2565b8060005b8381101561224757815161222e88826121d1565b9750612239836121e9565b92505060018101905061221a565b5085935050505092915050565b60006040820190506122696000830185612187565b818103602083015261227b81846121f6565b90509392505050565b60006bffffffffffffffffffffffff82169050919050565b6122a581612284565b81146122b057600080fd5b50565b6000813590506122c28161229c565b92915050565b6122d18161217d565b81146122dc57600080fd5b50565b6000813590506122ee816122c8565b92915050565b60008060006060848603121561230d5761230c6120e8565b5b600061231b8682870161213b565b935050602061232c868287016122b3565b925050604061233d868287016122df565b9150509250925092565b6000806000606084860312156123605761235f6120e8565b5b600061236e8682870161213b565b935050602061237f8682870161213b565b9250506040612390868287016122df565b9150509250925092565b600081600b0b9050919050565b6123b08161239a565b82525050565b6123bf81612284565b82525050565b60006080820190506123da60008301876123a7565b6123e760208301866123b6565b6123f46040830185612187565b6124016060830184612187565b95945050505050565b60008060408385031215612421576124206120e8565b5b600061242f8582860161213b565b92505060206124408582860161213b565b9150509250929050565b600060208201905061245f6000830184612187565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6124b38261246a565b810181811067ffffffffffffffff821117156124d2576124d161247b565b5b80604052505050565b60006124e56120de565b90506124f182826124aa565b919050565b600067ffffffffffffffff8211156125115761251061247b565b5b602082029050602081019050919050565b600080fd5b600061253a612535846124f6565b6124db565b9050808382526020820190506020840283018581111561255d5761255c612522565b5b835b818110156125865780612572888261213b565b84526020840193505060208101905061255f565b5050509392505050565b600082601f8301126125a5576125a4612465565b5b81356125b5848260208601612527565b91505092915050565b6000602082840312156125d4576125d36120e8565b5b600082013567ffffffffffffffff8111156125f2576125f16120ed565b5b6125fe84828501612590565b91505092915050565b600067ffffffffffffffff8211156126225761262161247b565b5b602082029050602081019050919050565b600061264661264184612607565b6124db565b9050808382526020820190506020840283018581111561266957612668612522565b5b835b81811015612692578061267e88826122b3565b84526020840193505060208101905061266b565b5050509392505050565b600082601f8301126126b1576126b0612465565b5b81356126c1848260208601612633565b91505092915050565b600067ffffffffffffffff8211156126e5576126e461247b565b5b602082029050602081019050919050565b6000612709612704846126ca565b6124db565b9050808382526020820190506020840283018581111561272c5761272b612522565b5b835b81811015612755578061274188826122df565b84526020840193505060208101905061272e565b5050509392505050565b600082601f83011261277457612773612465565b5b81356127848482602086016126f6565b91505092915050565b6000806000606084860312156127a6576127a56120e8565b5b600084013567ffffffffffffffff8111156127c4576127c36120ed565b5b6127d086828701612590565b935050602084013567ffffffffffffffff8111156127f1576127f06120ed565b5b6127fd8682870161269c565b925050604084013567ffffffffffffffff81111561281e5761281d6120ed565b5b61282a8682870161275f565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061289d8261217d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036128cf576128ce612863565b5b600182019050919050565b60006128e58261217d565b91506128f08361217d565b925082820390508181111561290857612907612863565b5b92915050565b60006129198261217d565b91506129248361217d565b925082820190508082111561293c5761293b612863565b5b92915050565b600061294d82612284565b915061295883612284565b925082820261296681612284565b915080821461297857612977612863565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006129b982612284565b91506129c483612284565b9250826129d4576129d361297f565b5b828204905092915050565b6000819050919050565b6000612a046129ff6129fa846120f2565b6129df565b6120f2565b9050919050565b6000612a16826129e9565b9050919050565b6000612a2882612a0b565b9050919050565b612a3881612a1d565b82525050565b612a4781612112565b82525050565b6000606082019050612a626000830186612a2f565b612a6f6020830185612a3e565b612a7c6040830184612a3e565b949350505050565b600081519050612a93816122c8565b92915050565b612aa28161239a565b8114612aad57600080fd5b50565b600081519050612abf81612a99565b92915050565b60008060008060808587031215612adf57612ade6120e8565b5b6000612aed87828801612a84565b9450506020612afe87828801612ab0565b9350506040612b0f87828801612a84565b9250506060612b2087828801612a84565b91505092959194509250565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b66578082015181840152602081019050612b4b565b60008484015250505050565b6000612b7d82612b2c565b612b878185612b37565b9350612b97818560208601612b48565b612ba08161246a565b840191505092915050565b6000608082019050612bc06000830187612a2f565b612bcd6020830186612a3e565b612bda6040830185612a3e565b8181036060830152612bec8184612b72565b905095945050505050565b6000612c0282612a0b565b9050919050565b612c1281612bf7565b82525050565b6000606082019050612c2d6000830186612c09565b8181036020830152612c3f8185612b72565b90508181036040830152612c538184612b72565b9050949350505050565b600080fd5b600067ffffffffffffffff821115612c7d57612c7c61247b565b5b612c868261246a565b9050602081019050919050565b6000612ca6612ca184612c62565b6124db565b905082815260208101848484011115612cc257612cc1612c5d565b5b612ccd848285612b48565b509392505050565b600082601f830112612cea57612ce9612465565b5b8151612cfa848260208601612c93565b91505092915050565b600060208284031215612d1957612d186120e8565b5b600082015167ffffffffffffffff811115612d3757612d366120ed565b5b612d4384828501612cd5565b91505092915050565b600081519050612d5b81612124565b92915050565b600060208284031215612d7757612d766120e8565b5b6000612d8584828501612d4c565b91505092915050565b6000819050919050565b6000819050919050565b60008160001b9050919050565b6000612dca612dc5612dc084612d8e565b612da2565b612d98565b9050919050565b612dda81612daf565b82525050565b6000602082019050612df56000830184612dd1565b92915050565b6000612e0682612112565b9050919050565b612e1681612dfb565b8114612e2157600080fd5b50565b600081519050612e3381612e0d565b92915050565b600060208284031215612e4f57612e4e6120e8565b5b6000612e5d84828501612e24565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fdfea2646970667358221220526bbb49d3cca825be942d7186eceea4b40931ece8a0d3455aa14dfb7b504c2d64736f6c63430008120033"; + +type SessionConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: SessionConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class Session__factory extends ContractFactory { + constructor(...args: SessionConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + override getDeployTransaction( + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + override attach(address: string): Session { + return super.attach(address) as Session; + } + override connect(signer: Signer): Session__factory { + return super.connect(signer) as Session__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): SessionInterface { + return new utils.Interface(_abi) as SessionInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): Session { + return new Contract(address, _abi, signerOrProvider) as Session; + } +} diff --git a/contracts/typechain-types/factories/contracts/facets/core/index.ts b/contracts/typechain-types/factories/contracts/facets/core/index.ts new file mode 100644 index 0000000..180d1a5 --- /dev/null +++ b/contracts/typechain-types/factories/contracts/facets/core/index.ts @@ -0,0 +1,7 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { Automate__factory } from "./Automate__factory"; +export { Control__factory } from "./Control__factory"; +export { Flow__factory } from "./Flow__factory"; +export { Session__factory } from "./Session__factory"; diff --git a/contracts/typechain-types/factories/contracts/facets/index.ts b/contracts/typechain-types/factories/contracts/facets/index.ts new file mode 100644 index 0000000..a52888f --- /dev/null +++ b/contracts/typechain-types/factories/contracts/facets/index.ts @@ -0,0 +1,5 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export * as core from "./core"; +export * as utils from "./utils"; diff --git a/contracts/typechain-types/factories/contracts/facets/utils/AccessControl__factory.ts b/contracts/typechain-types/factories/contracts/facets/utils/AccessControl__factory.ts new file mode 100644 index 0000000..ebee402 --- /dev/null +++ b/contracts/typechain-types/factories/contracts/facets/utils/AccessControl__factory.ts @@ -0,0 +1,262 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../../../common"; +import type { + AccessControl, + AccessControlInterface, +} from "../../../../contracts/facets/utils/AccessControl"; + +const _abi = [ + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "bytes32", + name: "role", + type: "bytes32", + }, + { + indexed: true, + internalType: "bytes32", + name: "previousAdminRole", + type: "bytes32", + }, + { + indexed: true, + internalType: "bytes32", + name: "newAdminRole", + type: "bytes32", + }, + ], + name: "RoleAdminChanged", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "bytes32", + name: "role", + type: "bytes32", + }, + { + indexed: true, + internalType: "address", + name: "account", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "sender", + type: "address", + }, + ], + name: "RoleGranted", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "bytes32", + name: "role", + type: "bytes32", + }, + { + indexed: true, + internalType: "address", + name: "account", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "sender", + type: "address", + }, + ], + name: "RoleRevoked", + type: "event", + }, + { + inputs: [], + name: "getDefaultAdminRole", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [ + { + internalType: "string", + name: "_role", + type: "string", + }, + ], + name: "getRole", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "_role", + type: "bytes32", + }, + ], + name: "getRoleAdmin", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "_role", + type: "bytes32", + }, + { + internalType: "address", + name: "_account", + type: "address", + }, + ], + name: "grantRole", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "_role", + type: "bytes32", + }, + { + internalType: "address", + name: "_account", + type: "address", + }, + ], + name: "hasRole", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "_role", + type: "bytes32", + }, + ], + name: "renounceRole", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "_role", + type: "bytes32", + }, + { + internalType: "address", + name: "_account", + type: "address", + }, + ], + name: "revokeRole", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +const _bytecode = + "0x608060405234801561001057600080fd5b50610e0f806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80636e9067fb1161005b5780636e9067fb146100ec5780638bb9c5bf1461011c57806391d1485414610138578063d547741f146101685761007d565b8063248a9ca3146100825780632f2ff15d146100b257806352a9c8d7146100ce575b600080fd5b61009c600480360381019061009791906107fd565b610184565b6040516100a99190610839565b60405180910390f35b6100cc60048036038101906100c791906108b2565b610196565b005b6100d66101b5565b6040516100e39190610839565b60405180910390f35b61010660048036038101906101019190610a38565b6101c0565b6040516101139190610839565b60405180910390f35b610136600480360381019061013191906107fd565b6101f0565b005b610152600480360381019061014d91906108b2565b6101fd565b60405161015f9190610a9c565b60405180910390f35b610182600480360381019061017d91906108b2565b610211565b005b600061018f82610230565b9050919050565b6101a76101a283610230565b610259565b6101b18282610265565b5050565b60008060001b905090565b6000816040516020016101d39190610b36565b604051602081830303815290604052805190602001209050919050565b6101fa8133610348565b50565b6000610209838361042c565b905092915050565b61022261021d83610230565b610259565b61022c8282610348565b5050565b600061023a6104a0565b6000016000838152602001908152602001600020600101549050919050565b610262816104cd565b50565b61026f828261042c565b61034457600161027d6104a0565b600001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b610352828261042c565b156104285760006103616104a0565b600001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b60006104366104a0565b600001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000807f4cd15452b25e815d3f9d1a3c7edd985a178edf5eb3461a1acbf855517423d69490508091505090565b6104d781336104da565b50565b6104e4828261042c565b610573576105098173ffffffffffffffffffffffffffffffffffffffff166014610577565b6105178360001c6020610577565b604051602001610528929190610c2c565b6040516020818303038152906040526040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161056a9190610b36565b60405180910390fd5b5050565b60606000600283600261058a9190610c9f565b6105949190610ce1565b67ffffffffffffffff8111156105ad576105ac61090d565b5b6040519080825280601f01601f1916602001820160405280156105df5781602001600182028036833780820191505090505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061061757610616610d15565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061067b5761067a610d15565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026106bb9190610c9f565b6106c59190610ce1565b90505b6001811115610765577f3031323334353637383961626364656600000000000000000000000000000000600f86166010811061070757610706610d15565b5b1a60f81b82828151811061071e5761071d610d15565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c94508061075e90610d44565b90506106c8565b50600084146107a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a090610db9565b60405180910390fd5b8091505092915050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6107da816107c7565b81146107e557600080fd5b50565b6000813590506107f7816107d1565b92915050565b600060208284031215610813576108126107bd565b5b6000610821848285016107e8565b91505092915050565b610833816107c7565b82525050565b600060208201905061084e600083018461082a565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061087f82610854565b9050919050565b61088f81610874565b811461089a57600080fd5b50565b6000813590506108ac81610886565b92915050565b600080604083850312156108c9576108c86107bd565b5b60006108d7858286016107e8565b92505060206108e88582860161089d565b9150509250929050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610945826108fc565b810181811067ffffffffffffffff821117156109645761096361090d565b5b80604052505050565b60006109776107b3565b9050610983828261093c565b919050565b600067ffffffffffffffff8211156109a3576109a261090d565b5b6109ac826108fc565b9050602081019050919050565b82818337600083830152505050565b60006109db6109d684610988565b61096d565b9050828152602081018484840111156109f7576109f66108f7565b5b610a028482856109b9565b509392505050565b600082601f830112610a1f57610a1e6108f2565b5b8135610a2f8482602086016109c8565b91505092915050565b600060208284031215610a4e57610a4d6107bd565b5b600082013567ffffffffffffffff811115610a6c57610a6b6107c2565b5b610a7884828501610a0a565b91505092915050565b60008115159050919050565b610a9681610a81565b82525050565b6000602082019050610ab16000830184610a8d565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610af1578082015181840152602081019050610ad6565b60008484015250505050565b6000610b0882610ab7565b610b128185610ac2565b9350610b22818560208601610ad3565b610b2b816108fc565b840191505092915050565b60006020820190508181036000830152610b508184610afd565b905092915050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000610b99601783610b58565b9150610ba482610b63565b601782019050919050565b6000610bba82610ab7565b610bc48185610b58565b9350610bd4818560208601610ad3565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000610c16601183610b58565b9150610c2182610be0565b601182019050919050565b6000610c3782610b8c565b9150610c438285610baf565b9150610c4e82610c09565b9150610c5a8284610baf565b91508190509392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610caa82610c66565b9150610cb583610c66565b9250828202610cc381610c66565b91508282048414831517610cda57610cd9610c70565b5b5092915050565b6000610cec82610c66565b9150610cf783610c66565b9250828201905080821115610d0f57610d0e610c70565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000610d4f82610c66565b915060008203610d6257610d61610c70565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b6000610da3602083610ac2565b9150610dae82610d6d565b602082019050919050565b60006020820190508181036000830152610dd281610d96565b905091905056fea264697066735822122042ac622ea83961c316d077ee2232dd2ad760e3427df26bce6fe111d4109a0f0e64736f6c63430008120033"; + +type AccessControlConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: AccessControlConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class AccessControl__factory extends ContractFactory { + constructor(...args: AccessControlConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + override getDeployTransaction( + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + override attach(address: string): AccessControl { + return super.attach(address) as AccessControl; + } + override connect(signer: Signer): AccessControl__factory { + return super.connect(signer) as AccessControl__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): AccessControlInterface { + return new utils.Interface(_abi) as AccessControlInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): AccessControl { + return new Contract(address, _abi, signerOrProvider) as AccessControl; + } +} diff --git a/contracts/typechain-types/factories/contracts/facets/utils/Cut__factory.ts b/contracts/typechain-types/factories/contracts/facets/utils/Cut__factory.ts new file mode 100644 index 0000000..cab0254 --- /dev/null +++ b/contracts/typechain-types/factories/contracts/facets/utils/Cut__factory.ts @@ -0,0 +1,155 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../../../common"; +import type { Cut, CutInterface } from "../../../../contracts/facets/utils/Cut"; + +const _abi = [ + { + inputs: [ + { + internalType: "address", + name: "_initializationContractAddress", + type: "address", + }, + { + internalType: "bytes", + name: "_calldata", + type: "bytes", + }, + ], + name: "InitializationFunctionReverted", + type: "error", + }, + { + anonymous: false, + inputs: [ + { + components: [ + { + internalType: "address", + name: "facetAddress", + type: "address", + }, + { + internalType: "enum ICut.FacetCutAction", + name: "action", + type: "uint8", + }, + { + internalType: "bytes4[]", + name: "functionSelectors", + type: "bytes4[]", + }, + ], + indexed: false, + internalType: "struct ICut.FacetCut[]", + name: "_diamondCut", + type: "tuple[]", + }, + { + indexed: false, + internalType: "address", + name: "_init", + type: "address", + }, + { + indexed: false, + internalType: "bytes", + name: "_calldata", + type: "bytes", + }, + ], + name: "DiamondCut", + type: "event", + }, + { + inputs: [ + { + components: [ + { + internalType: "address", + name: "facetAddress", + type: "address", + }, + { + internalType: "enum ICut.FacetCutAction", + name: "action", + type: "uint8", + }, + { + internalType: "bytes4[]", + name: "functionSelectors", + type: "bytes4[]", + }, + ], + internalType: "struct ICut.FacetCut[]", + name: "_diamondCut", + type: "tuple[]", + }, + { + internalType: "address", + name: "_init", + type: "address", + }, + { + internalType: "bytes", + name: "_calldata", + type: "bytes", + }, + ], + name: "diamondCut", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +const _bytecode = + "0x608060405234801561001057600080fd5b506129a4806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80631f931c1c14610030575b600080fd5b61004a600480360381019061004591906118d8565b61004c565b005b61007960405160200161005e906119ca565b604051602081830303815290604052805190602001206100db565b6100d48585906100899190611cf3565b8484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506100e7565b5050505050565b6100e481610316565b50565b60005b83518110156102cb57600084828151811061010857610107611d08565b5b60200260200101516020015190506000600281111561012a57610129611d37565b5b81600281111561013d5761013c611d37565b5b0361018d5761018885838151811061015857610157611d08565b5b60200260200101516000015186848151811061017757610176611d08565b5b602002602001015160400151610323565b6102b7565b600160028111156101a1576101a0611d37565b5b8160028111156101b4576101b3611d37565b5b03610204576101ff8583815181106101cf576101ce611d08565b5b6020026020010151600001518684815181106101ee576101ed611d08565b5b60200260200101516040015161059a565b6102b6565b60028081111561021757610216611d37565b5b81600281111561022a57610229611d37565b5b0361027a5761027585838151811061024557610244611d08565b5b60200260200101516000015186848151811061026457610263611d08565b5b60200260200101516040015161081b565b6102b5565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102ac90611dd8565b60405180910390fd5b5b5b5080806102c390611e31565b9150506100ea565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb6738383836040516102ff9392919061212e565b60405180910390a161031182826109a6565b505050565b6103208133610ac8565b50565b6000815111610367576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035e906121e5565b60405180910390fd5b6000610371610b65565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036103e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d990612277565b60405180910390fd5b60008160010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054905090506000816bffffffffffffffffffffffff160361044f5761044e8285610b92565b5b60005b83518110156105935760008482815181106104705761046f611d08565b5b602002602001015190506000846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610564576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055b90612309565b60405180910390fd5b6105708583868a610c6d565b838061057b90612341565b9450505050808061058b90611e31565b915050610452565b5050505050565b60008151116105de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d5906121e5565b60405180910390fd5b60006105e8610b65565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610659576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065090612277565b60405180910390fd5b60008160010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054905090506000816bffffffffffffffffffffffff16036106c6576106c58285610b92565b5b60005b83518110156108145760008482815181106106e7576106e6611d08565b5b602002602001015190506000846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036107da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d1906123e7565b60405180910390fd5b6107e5858284610e1a565b6107f18583868a610c6d565b83806107fc90612341565b9450505050808061080c90611e31565b9150506106c9565b5050505050565b600081511161085f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610856906121e5565b60405180910390fd5b6000610869610b65565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146108da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d190612479565b60405180910390fd5b60005b82518110156109a05760008382815181106108fb576108fa611d08565b5b602002602001015190506000836000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061098b848284610e1a565b5050808061099890611e31565b9150506108dd565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160315610ac4576109fd826040518060600160405280602881526020016129236028913961147c565b6000808373ffffffffffffffffffffffffffffffffffffffff1683604051610a2591906124d5565b600060405180830381855af49150503d8060008114610a60576040519150601f19603f3d011682016040523d82523d6000602084013e610a65565b606091505b509150915081610ac157600081511115610a825780518082602001fd5b83836040517f192105d7000000000000000000000000000000000000000000000000000000008152600401610ab89291906124ec565b60405180910390fd5b50505b5050565b610ad282826114ce565b610b6157610af78173ffffffffffffffffffffffffffffffffffffffff166014611542565b610b058360001c6020611542565b604051602001610b169291906125fb565b6040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b58919061266e565b60405180910390fd5b5050565b6000807fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90508091505090565b610bb48160405180606001604052806024815260200161294b6024913961147c565b81600201805490508260010160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555081600201819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b81846000016000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508360010160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018390806001815401808255809150506001900390600052602060002090600891828204019190066004029091909190916101000a81548163ffffffff021916908360e01c021790555080846000016000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8090612702565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ef7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eee90612794565b60405180910390fd5b6000836000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff169050600060018560010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000180549050610fce91906127b4565b90508082146111625760008560010160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001828154811061102f5761102e611d08565b5b90600052602060002090600891828204019190066004029054906101000a900460e01b9050808660010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000184815481106110ab576110aa611d08565b5b90600052602060002090600891828204019190066004026101000a81548163ffffffff021916908360e01c021790555082866000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550505b8460010160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054806111b6576111b56127e8565b5b60019003818190600052602060002090600891828204019190066004026101000a81549063ffffffff02191690559055846000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556000820160146101000a8154906bffffffffffffffffffffffff0219169055505060008103611475576000600186600201805490506112a091906127b4565b905060008660010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490508181146113e157600087600201838154811061130a57611309611d08565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508088600201838154811061134e5761134d611d08565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818860010160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550505b866002018054806113f5576113f46127e8565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590558660010160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000905550505b5050505050565b6000823b90506000811182906114c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bf919061266e565b60405180910390fd5b50505050565b60006114d861177e565b600001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6060600060028360026115559190612817565b61155f9190612859565b67ffffffffffffffff811115611578576115776119fb565b5b6040519080825280601f01601f1916602001820160405280156115aa5781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106115e2576115e1611d08565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061164657611645611d08565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026116869190612817565b6116909190612859565b90505b6001811115611730577f3031323334353637383961626364656600000000000000000000000000000000600f8616601081106116d2576116d1611d08565b5b1a60f81b8282815181106116e9576116e8611d08565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c9450806117299061288d565b9050611693565b5060008414611774576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176b90612902565b60405180910390fd5b8091505092915050565b6000807f4cd15452b25e815d3f9d1a3c7edd985a178edf5eb3461a1acbf855517423d69490508091505090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f8401126117e4576117e36117bf565b5b8235905067ffffffffffffffff811115611801576118006117c4565b5b60208301915083602082028301111561181d5761181c6117c9565b5b9250929050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061184f82611824565b9050919050565b61185f81611844565b811461186a57600080fd5b50565b60008135905061187c81611856565b92915050565b60008083601f840112611898576118976117bf565b5b8235905067ffffffffffffffff8111156118b5576118b46117c4565b5b6020830191508360018202830111156118d1576118d06117c9565b5b9250929050565b6000806000806000606086880312156118f4576118f36117b5565b5b600086013567ffffffffffffffff811115611912576119116117ba565b5b61191e888289016117ce565b955095505060206119318882890161186d565b935050604086013567ffffffffffffffff811115611952576119516117ba565b5b61195e88828901611882565b92509250509295509295909350565b600082825260208201905092915050565b7f4d41494e5441494e45525f524f4c450000000000000000000000000000000000600082015250565b60006119b4600f8361196d565b91506119bf8261197e565b602082019050919050565b600060208201905081810360008301526119e3816119a7565b9050919050565b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611a33826119ea565b810181811067ffffffffffffffff82111715611a5257611a516119fb565b5b80604052505050565b6000611a656117ab565b9050611a718282611a2a565b919050565b600067ffffffffffffffff821115611a9157611a906119fb565b5b602082029050602081019050919050565b600080fd5b600080fd5b60038110611ab957600080fd5b50565b600081359050611acb81611aac565b92915050565b600067ffffffffffffffff821115611aec57611aeb6119fb565b5b602082029050602081019050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611b3281611afd565b8114611b3d57600080fd5b50565b600081359050611b4f81611b29565b92915050565b6000611b68611b6384611ad1565b611a5b565b90508083825260208201905060208402830185811115611b8b57611b8a6117c9565b5b835b81811015611bb45780611ba08882611b40565b845260208401935050602081019050611b8d565b5050509392505050565b600082601f830112611bd357611bd26117bf565b5b8135611be3848260208601611b55565b91505092915050565b600060608284031215611c0257611c01611aa2565b5b611c0c6060611a5b565b90506000611c1c8482850161186d565b6000830152506020611c3084828501611abc565b602083015250604082013567ffffffffffffffff811115611c5457611c53611aa7565b5b611c6084828501611bbe565b60408301525092915050565b6000611c7f611c7a84611a76565b611a5b565b90508083825260208201905060208402830185811115611ca257611ca16117c9565b5b835b81811015611ce957803567ffffffffffffffff811115611cc757611cc66117bf565b5b808601611cd48982611bec565b85526020850194505050602081019050611ca4565b5050509392505050565b6000611d00368484611c6c565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4c69624469616d6f6e644375743a20496e636f7272656374204661636574437560008201527f74416374696f6e00000000000000000000000000000000000000000000000000602082015250565b6000611dc260278361196d565b9150611dcd82611d66565b604082019050919050565b60006020820190508181036000830152611df181611db5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000819050919050565b6000611e3c82611e27565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611e6e57611e6d611df8565b5b600182019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b611eae81611844565b82525050565b60038110611ec557611ec4611d37565b5b50565b6000819050611ed682611eb4565b919050565b6000611ee682611ec8565b9050919050565b611ef681611edb565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b611f3181611afd565b82525050565b6000611f438383611f28565b60208301905092915050565b6000602082019050919050565b6000611f6782611efc565b611f718185611f07565b9350611f7c83611f18565b8060005b83811015611fad578151611f948882611f37565b9750611f9f83611f4f565b925050600181019050611f80565b5085935050505092915050565b6000606083016000830151611fd26000860182611ea5565b506020830151611fe56020860182611eed565b5060408301518482036040860152611ffd8282611f5c565b9150508091505092915050565b60006120168383611fba565b905092915050565b6000602082019050919050565b600061203682611e79565b6120408185611e84565b93508360208202850161205285611e95565b8060005b8581101561208e578484038952815161206f858261200a565b945061207a8361201e565b925060208a01995050600181019050612056565b50829750879550505050505092915050565b6120a981611844565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b838110156120e95780820151818401526020810190506120ce565b60008484015250505050565b6000612100826120af565b61210a81856120ba565b935061211a8185602086016120cb565b612123816119ea565b840191505092915050565b60006060820190508181036000830152612148818661202b565b905061215760208301856120a0565b818103604083015261216981846120f5565b9050949350505050565b7f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660008201527f6163657420746f20637574000000000000000000000000000000000000000000602082015250565b60006121cf602b8361196d565b91506121da82612173565b604082019050919050565b600060208201905081810360008301526121fe816121c2565b9050919050565b7f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260008201527f6520616464726573732830290000000000000000000000000000000000000000602082015250565b6000612261602c8361196d565b915061226c82612205565b604082019050919050565b6000602082019050818103600083015261229081612254565b9050919050565b7f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f60008201527f6e207468617420616c7265616479206578697374730000000000000000000000602082015250565b60006122f360358361196d565b91506122fe82612297565b604082019050919050565b60006020820190508181036000830152612322816122e6565b9050919050565b60006bffffffffffffffffffffffff82169050919050565b600061234c82612329565b91506bffffffffffffffffffffffff820361236a57612369611df8565b5b600182019050919050565b7f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60008201527f6374696f6e20776974682073616d652066756e6374696f6e0000000000000000602082015250565b60006123d160388361196d565b91506123dc82612375565b604082019050919050565b60006020820190508181036000830152612400816123c4565b9050919050565b7f4c69624469616d6f6e644375743a2052656d6f7665206661636574206164647260008201527f657373206d757374206265206164647265737328302900000000000000000000602082015250565b600061246360368361196d565b915061246e82612407565b604082019050919050565b6000602082019050818103600083015261249281612456565b9050919050565b600081905092915050565b60006124af826120af565b6124b98185612499565b93506124c98185602086016120cb565b80840191505092915050565b60006124e182846124a4565b915081905092915050565b600060408201905061250160008301856120a0565b818103602083015261251381846120f5565b90509392505050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b600061255d60178361251c565b915061256882612527565b601782019050919050565b600081519050919050565b600061258982612573565b612593818561251c565b93506125a38185602086016120cb565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b60006125e560118361251c565b91506125f0826125af565b601182019050919050565b600061260682612550565b9150612612828561257e565b915061261d826125d8565b9150612629828461257e565b91508190509392505050565b600061264082612573565b61264a818561196d565b935061265a8185602086016120cb565b612663816119ea565b840191505092915050565b600060208201905081810360008301526126888184612635565b905092915050565b7f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360008201527f74696f6e207468617420646f65736e2774206578697374000000000000000000602082015250565b60006126ec60378361196d565b91506126f782612690565b604082019050919050565b6000602082019050818103600083015261271b816126df565b9050919050565b7f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560008201527f7461626c652066756e6374696f6e000000000000000000000000000000000000602082015250565b600061277e602e8361196d565b915061278982612722565b604082019050919050565b600060208201905081810360008301526127ad81612771565b9050919050565b60006127bf82611e27565b91506127ca83611e27565b92508282039050818111156127e2576127e1611df8565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600061282282611e27565b915061282d83611e27565b925082820261283b81611e27565b9150828204841483151761285257612851611df8565b5b5092915050565b600061286482611e27565b915061286f83611e27565b925082820190508082111561288757612886611df8565b5b92915050565b600061289882611e27565b9150600082036128ab576128aa611df8565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b60006128ec60208361196d565b91506128f7826128b6565b602082019050919050565b6000602082019050818103600083015261291b816128df565b905091905056fe4c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465a2646970667358221220fc93d6581ef88c003694ad3b7847e83e3748d87f743d9a64c8f96766c27475c564736f6c63430008120033"; + +type CutConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: CutConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class Cut__factory extends ContractFactory { + constructor(...args: CutConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + override getDeployTransaction( + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + override attach(address: string): Cut { + return super.attach(address) as Cut; + } + override connect(signer: Signer): Cut__factory { + return super.connect(signer) as Cut__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): CutInterface { + return new utils.Interface(_abi) as CutInterface; + } + static connect(address: string, signerOrProvider: Signer | Provider): Cut { + return new Contract(address, _abi, signerOrProvider) as Cut; + } +} diff --git a/contracts/typechain-types/factories/contracts/facets/utils/Loupe__factory.ts b/contracts/typechain-types/factories/contracts/facets/utils/Loupe__factory.ts new file mode 100644 index 0000000..c9d9195 --- /dev/null +++ b/contracts/typechain-types/factories/contracts/facets/utils/Loupe__factory.ts @@ -0,0 +1,155 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../../../common"; +import type { + Loupe, + LoupeInterface, +} from "../../../../contracts/facets/utils/Loupe"; + +const _abi = [ + { + inputs: [ + { + internalType: "bytes4", + name: "_functionSelector", + type: "bytes4", + }, + ], + name: "facetAddress", + outputs: [ + { + internalType: "address", + name: "facetAddress_", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "facetAddresses", + outputs: [ + { + internalType: "address[]", + name: "facetAddresses_", + type: "address[]", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_facet", + type: "address", + }, + ], + name: "facetFunctionSelectors", + outputs: [ + { + internalType: "bytes4[]", + name: "facetFunctionSelectors_", + type: "bytes4[]", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "facets", + outputs: [ + { + components: [ + { + internalType: "address", + name: "facetAddress", + type: "address", + }, + { + internalType: "bytes4[]", + name: "functionSelectors", + type: "bytes4[]", + }, + ], + internalType: "struct ILoupe.Facet[]", + name: "facets_", + type: "tuple[]", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes4", + name: "_interfaceId", + type: "bytes4", + }, + ], + name: "supportsInterface", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, +] as const; + +const _bytecode = + "0x608060405234801561001057600080fd5b50610c0c806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c806301ffc9a71461005c57806352ef6b2c1461008c5780637a0ed627146100aa578063adfca15e146100c8578063cdffacc6146100f8575b600080fd5b6100766004803603810190610071919061068f565b610128565b60405161008391906106d7565b60405180910390f35b61009461019e565b6040516100a191906107e2565b60405180910390f35b6100b261023b565b6040516100bf91906109c1565b60405180910390f35b6100e260048036038101906100dd9190610a0f565b61045e565b6040516100ef9190610aab565b60405180910390f35b610112600480360381019061010d919061068f565b610549565b60405161011f9190610adc565b60405180910390f35b6000806101336105d5565b9050806003016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff16915050919050565b606060006101aa6105d5565b90508060020180548060200260200160405190810160405280929190818152602001828054801561023057602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116101e6575b505050505091505090565b606060006102476105d5565b90506000816002018054905090508067ffffffffffffffff81111561026f5761026e610af7565b5b6040519080825280602002602001820160405280156102a857816020015b610295610602565b81526020019060019003908161028d5790505b50925060005b818110156104585760008360020182815481106102ce576102cd610b26565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508085838151811061030f5761030e610b26565b5b60200260200101516000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508360010160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000180548060200260200160405190810160405280929190818152602001828054801561041d57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116103ca5790505b505050505085838151811061043557610434610b26565b5b60200260200101516020018190525050808061045090610b8e565b9150506102ae565b50505090565b6060600061046a6105d5565b90508060010160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000180548060200260200160405190810160405280929190818152602001828054801561053c57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116104e95790505b5050505050915050919050565b6000806105546105d5565b9050806000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915050919050565b6000807fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90508091505090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61066c81610637565b811461067757600080fd5b50565b60008135905061068981610663565b92915050565b6000602082840312156106a5576106a4610632565b5b60006106b38482850161067a565b91505092915050565b60008115159050919050565b6106d1816106bc565b82525050565b60006020820190506106ec60008301846106c8565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006107498261071e565b9050919050565b6107598161073e565b82525050565b600061076b8383610750565b60208301905092915050565b6000602082019050919050565b600061078f826106f2565b61079981856106fd565b93506107a48361070e565b8060005b838110156107d55781516107bc888261075f565b97506107c783610777565b9250506001810190506107a8565b5085935050505092915050565b600060208201905081810360008301526107fc8184610784565b905092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61086581610637565b82525050565b6000610877838361085c565b60208301905092915050565b6000602082019050919050565b600061089b82610830565b6108a5818561083b565b93506108b08361084c565b8060005b838110156108e15781516108c8888261086b565b97506108d383610883565b9250506001810190506108b4565b5085935050505092915050565b60006040830160008301516109066000860182610750565b506020830151848203602086015261091e8282610890565b9150508091505092915050565b600061093783836108ee565b905092915050565b6000602082019050919050565b600061095782610804565b610961818561080f565b93508360208202850161097385610820565b8060005b858110156109af5784840389528151610990858261092b565b945061099b8361093f565b925060208a01995050600181019050610977565b50829750879550505050505092915050565b600060208201905081810360008301526109db818461094c565b905092915050565b6109ec8161073e565b81146109f757600080fd5b50565b600081359050610a09816109e3565b92915050565b600060208284031215610a2557610a24610632565b5b6000610a33848285016109fa565b91505092915050565b600082825260208201905092915050565b6000610a5882610830565b610a628185610a3c565b9350610a6d8361084c565b8060005b83811015610a9e578151610a85888261086b565b9750610a9083610883565b925050600181019050610a71565b5085935050505092915050565b60006020820190508181036000830152610ac58184610a4d565b905092915050565b610ad68161073e565b82525050565b6000602082019050610af16000830184610acd565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000819050919050565b6000610b9982610b84565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610bcb57610bca610b55565b5b60018201905091905056fea2646970667358221220805c03d17666dad7df5b576a9739aec3ff4e9c57502765e60e3dea1b8433247b64736f6c63430008120033"; + +type LoupeConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: LoupeConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class Loupe__factory extends ContractFactory { + constructor(...args: LoupeConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + override getDeployTransaction( + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + override attach(address: string): Loupe { + return super.attach(address) as Loupe; + } + override connect(signer: Signer): Loupe__factory { + return super.connect(signer) as Loupe__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): LoupeInterface { + return new utils.Interface(_abi) as LoupeInterface; + } + static connect(address: string, signerOrProvider: Signer | Provider): Loupe { + return new Contract(address, _abi, signerOrProvider) as Loupe; + } +} diff --git a/contracts/typechain-types/factories/contracts/facets/utils/Utility__factory.ts b/contracts/typechain-types/factories/contracts/facets/utils/Utility__factory.ts new file mode 100644 index 0000000..55c1aea --- /dev/null +++ b/contracts/typechain-types/factories/contracts/facets/utils/Utility__factory.ts @@ -0,0 +1,94 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../../../common"; +import type { + Utility, + UtilityInterface, +} from "../../../../contracts/facets/utils/Utility"; + +const _abi = [ + { + inputs: [], + name: "FailedWithdrawNativeToken", + type: "error", + }, + { + inputs: [], + name: "getNativeBalance", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_amount", + type: "uint256", + }, + ], + name: "withdrawNativeBalance", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +const _bytecode = + "0x608060405234801561001057600080fd5b506001600081905550610a8b806100286000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806388a9d5541461003b578063c9a463e214610059575b600080fd5b610043610075565b6040516100509190610566565b60405180910390f35b610073600480360381019061006e91906105b2565b61007d565b005b600047905090565b610085610161565b6100b26040516020016100979061063c565b604051602081830303815290604052805190602001206101b0565b60003373ffffffffffffffffffffffffffffffffffffffff16826040516100d89061068d565b60006040518083038185875af1925050503d8060008114610115576040519150601f19603f3d011682016040523d82523d6000602084013e61011a565b606091505b5050905080610155576040517fe6e2afc700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5061015e6101bc565b50565b6002600054036101a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161019d906106ee565b60405180910390fd5b6002600081905550565b6101b9816101c6565b50565b6001600081905550565b6101d081336101d3565b50565b6101dd8282610270565b61026c576102028173ffffffffffffffffffffffffffffffffffffffff1660146102e4565b6102108360001c60206102e4565b604051602001610221929190610817565b6040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610263919061089b565b60405180910390fd5b5050565b600061027a610520565b600001600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6060600060028360026102f791906108ec565b610301919061092e565b67ffffffffffffffff81111561031a57610319610962565b5b6040519080825280601f01601f19166020018201604052801561034c5781602001600182028036833780820191505090505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061038457610383610991565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106103e8576103e7610991565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000600184600261042891906108ec565b610432919061092e565b90505b60018111156104d2577f3031323334353637383961626364656600000000000000000000000000000000600f86166010811061047457610473610991565b5b1a60f81b82828151811061048b5761048a610991565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c9450806104cb906109c0565b9050610435565b5060008414610516576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050d90610a35565b60405180910390fd5b8091505092915050565b6000807f4cd15452b25e815d3f9d1a3c7edd985a178edf5eb3461a1acbf855517423d69490508091505090565b6000819050919050565b6105608161054d565b82525050565b600060208201905061057b6000830184610557565b92915050565b600080fd5b61058f8161054d565b811461059a57600080fd5b50565b6000813590506105ac81610586565b92915050565b6000602082840312156105c8576105c7610581565b5b60006105d68482850161059d565b91505092915050565b600082825260208201905092915050565b7f5452454153555245525f524f4c45000000000000000000000000000000000000600082015250565b6000610626600e836105df565b9150610631826105f0565b602082019050919050565b6000602082019050818103600083015261065581610619565b9050919050565b600081905092915050565b50565b600061067760008361065c565b915061068282610667565b600082019050919050565b60006106988261066a565b9150819050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b60006106d8601f836105df565b91506106e3826106a2565b602082019050919050565b60006020820190508181036000830152610707816106cb565b9050919050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b600061074f60178361070e565b915061075a82610719565b601782019050919050565b600081519050919050565b60005b8381101561078e578082015181840152602081019050610773565b60008484015250505050565b60006107a582610765565b6107af818561070e565b93506107bf818560208601610770565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b600061080160118361070e565b915061080c826107cb565b601182019050919050565b600061082282610742565b915061082e828561079a565b9150610839826107f4565b9150610845828461079a565b91508190509392505050565b6000601f19601f8301169050919050565b600061086d82610765565b61087781856105df565b9350610887818560208601610770565b61089081610851565b840191505092915050565b600060208201905081810360008301526108b58184610862565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006108f78261054d565b91506109028361054d565b92508282026109108161054d565b91508282048414831517610927576109266108bd565b5b5092915050565b60006109398261054d565b91506109448361054d565b925082820190508082111561095c5761095b6108bd565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006109cb8261054d565b9150600082036109de576109dd6108bd565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b6000610a1f6020836105df565b9150610a2a826109e9565b602082019050919050565b60006020820190508181036000830152610a4e81610a12565b905091905056fea2646970667358221220bcbd07bd1e012cedbca3fe8d3feeefd34ac7bf87c5b76c51b796aaaab2c13db064736f6c63430008120033"; + +type UtilityConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: UtilityConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class Utility__factory extends ContractFactory { + constructor(...args: UtilityConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + override getDeployTransaction( + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + override attach(address: string): Utility { + return super.attach(address) as Utility; + } + override connect(signer: Signer): Utility__factory { + return super.connect(signer) as Utility__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): UtilityInterface { + return new utils.Interface(_abi) as UtilityInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): Utility { + return new Contract(address, _abi, signerOrProvider) as Utility; + } +} diff --git a/contracts/typechain-types/factories/contracts/facets/utils/index.ts b/contracts/typechain-types/factories/contracts/facets/utils/index.ts new file mode 100644 index 0000000..d4dc09b --- /dev/null +++ b/contracts/typechain-types/factories/contracts/facets/utils/index.ts @@ -0,0 +1,7 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { AccessControl__factory } from "./AccessControl__factory"; +export { Cut__factory } from "./Cut__factory"; +export { Loupe__factory } from "./Loupe__factory"; +export { Utility__factory } from "./Utility__factory"; diff --git a/contracts/typechain-types/factories/contracts/index.ts b/contracts/typechain-types/factories/contracts/index.ts new file mode 100644 index 0000000..0403da6 --- /dev/null +++ b/contracts/typechain-types/factories/contracts/index.ts @@ -0,0 +1,10 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export * as facets from "./facets"; +export * as interfaces from "./interfaces"; +export * as libraries from "./libraries"; +export * as services from "./services"; +export * as tests from "./tests"; +export * as upgrades from "./upgrades"; +export { Diamond__factory } from "./Diamond__factory"; diff --git a/contracts/typechain-types/factories/contracts/interfaces/core/IAutomate__factory.ts b/contracts/typechain-types/factories/contracts/interfaces/core/IAutomate__factory.ts new file mode 100644 index 0000000..0d3c127 --- /dev/null +++ b/contracts/typechain-types/factories/contracts/interfaces/core/IAutomate__factory.ts @@ -0,0 +1,118 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + IAutomate, + IAutomateInterface, +} from "../../../../contracts/interfaces/core/IAutomate"; + +const _abi = [ + { + inputs: [], + name: "depositGelatoFunds", + outputs: [], + stateMutability: "payable", + type: "function", + }, + { + inputs: [], + name: "getGelatoAddresses", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + { + internalType: "address", + name: "", + type: "address", + }, + { + internalType: "address", + name: "", + type: "address", + }, + { + internalType: "address", + name: "", + type: "address", + }, + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getMinimumAppGelatoBalance", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_ops", + type: "address", + }, + ], + name: "setGelatoContracts", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_value", + type: "uint256", + }, + ], + name: "setMinimumAppGelatoBalance", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_amount", + type: "uint256", + }, + ], + name: "withdrawGelatoFunds", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +export class IAutomate__factory { + static readonly abi = _abi; + static createInterface(): IAutomateInterface { + return new utils.Interface(_abi) as IAutomateInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): IAutomate { + return new Contract(address, _abi, signerOrProvider) as IAutomate; + } +} diff --git a/contracts/typechain-types/factories/contracts/interfaces/core/IControl__factory.ts b/contracts/typechain-types/factories/contracts/interfaces/core/IControl__factory.ts new file mode 100644 index 0000000..a0ae5f1 --- /dev/null +++ b/contracts/typechain-types/factories/contracts/interfaces/core/IControl__factory.ts @@ -0,0 +1,523 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + IControl, + IControlInterface, +} from "../../../../contracts/interfaces/core/IControl"; + +const _abi = [ + { + inputs: [ + { + internalType: "address", + name: "_superToken", + type: "address", + }, + ], + name: "addSuperToken", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "clearBPS", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_superToken", + type: "address", + }, + { + internalType: "uint256", + name: "_amount", + type: "uint256", + }, + ], + name: "depositAsset", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_superToken", + type: "address", + }, + ], + name: "getAssetTotal", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_user", + type: "address", + }, + { + internalType: "address", + name: "_superToken", + type: "address", + }, + ], + name: "getAssetUser", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_tag", + type: "uint256", + }, + ], + name: "getBPSData", + outputs: [ + { + internalType: "uint16", + name: "", + type: "uint16", + }, + { + internalType: "uint96", + name: "", + type: "uint96", + }, + { + internalType: "uint96", + name: "", + type: "uint96", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getBPSSize", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_superToken", + type: "address", + }, + { + internalType: "uint256", + name: "_nonce", + type: "uint256", + }, + ], + name: "getControlData", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + { + internalType: "uint256", + name: "", + type: "uint256", + }, + { + internalType: "uint256", + name: "", + type: "uint256", + }, + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_superToken", + type: "address", + }, + ], + name: "getFeeBalance", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getMinimumEndDuration", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getMinimumLifespan", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_superToken", + type: "address", + }, + { + internalType: "int96", + name: "_newFlowRate", + type: "int96", + }, + ], + name: "getNewBufferedAppBalance", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_superToken", + type: "address", + }, + ], + name: "getNewControlNonce", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_user", + type: "address", + }, + ], + name: "getSBPS", + outputs: [ + { + internalType: "uint16", + name: "", + type: "uint16", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getSTBufferDurationInSecond", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "isBPSEnabled", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_superToken", + type: "address", + }, + { + internalType: "int96", + name: "_newFlowRate", + type: "int96", + }, + ], + name: "isNewFlowRateAllowed", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_superToken", + type: "address", + }, + ], + name: "isSuperTokensSupported", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "count", + type: "uint256", + }, + { + internalType: "address", + name: "_superToken", + type: "address", + }, + ], + name: "realizeFeeBalance", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_superToken", + type: "address", + }, + ], + name: "removeSuperToken", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16[]", + name: "_bpss", + type: "uint16[]", + }, + { + internalType: "uint96[]", + name: "_flowRateLowerBounds", + type: "uint96[]", + }, + { + internalType: "uint96[]", + name: "_flowRateUpperBounds", + type: "uint96[]", + }, + { + internalType: "uint256[]", + name: "_tags", + type: "uint256[]", + }, + ], + name: "setBPS", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_duration", + type: "uint256", + }, + ], + name: "setMinimumEndDuration", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_duration", + type: "uint256", + }, + ], + name: "setMinimumLifespan", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint16", + name: "_bps", + type: "uint16", + }, + { + internalType: "address", + name: "_user", + type: "address", + }, + ], + name: "setSBPS", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_duration", + type: "uint256", + }, + ], + name: "setSTBufferAmount", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "toggleBPS", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_superToken", + type: "address", + }, + { + internalType: "uint256", + name: "_amount", + type: "uint256", + }, + ], + name: "withdrawAsset", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_superToken", + type: "address", + }, + { + internalType: "uint256", + name: "_amount", + type: "uint256", + }, + ], + name: "withdrawFeeBalance", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +export class IControl__factory { + static readonly abi = _abi; + static createInterface(): IControlInterface { + return new utils.Interface(_abi) as IControlInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): IControl { + return new Contract(address, _abi, signerOrProvider) as IControl; + } +} diff --git a/contracts/typechain-types/factories/contracts/interfaces/core/IFlowSetup__factory.ts b/contracts/typechain-types/factories/contracts/interfaces/core/IFlowSetup__factory.ts new file mode 100644 index 0000000..54f9f76 --- /dev/null +++ b/contracts/typechain-types/factories/contracts/interfaces/core/IFlowSetup__factory.ts @@ -0,0 +1,193 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + IFlowSetup, + IFlowSetupInterface, +} from "../../../../contracts/interfaces/core/IFlowSetup"; + +const _abi = [ + { + inputs: [ + { + internalType: "contract ISuperToken", + name: "_superToken", + type: "address", + }, + ], + name: "addSuperToken", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "getMaxFlowDurationPerUnitFlowAmount", + outputs: [ + { + internalType: "uint96", + name: "", + type: "uint96", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getMinimumDepositAmount", + outputs: [ + { + internalType: "uint96", + name: "", + type: "uint96", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getMinimumFlowAmount", + outputs: [ + { + internalType: "uint96", + name: "", + type: "uint96", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getSTBufferDurationInSecond", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "contract ISuperToken", + name: "_superToken", + type: "address", + }, + ], + name: "isSuperTokensSupported", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "contract ISuperToken", + name: "_superToken", + type: "address", + }, + ], + name: "removeSuperToken", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint96", + name: "_duration", + type: "uint96", + }, + ], + name: "setMaxFlowDurationPerUnitFlowAmount", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint96", + name: "_amount", + type: "uint96", + }, + ], + name: "setMinimumDepositAmount", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint96", + name: "_amount", + type: "uint96", + }, + ], + name: "setMinimumFlowAmount", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_duration", + type: "uint256", + }, + ], + name: "setSTBufferAmount", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "contract ISuperToken", + name: "_superToken", + type: "address", + }, + { + internalType: "uint256", + name: "_amount", + type: "uint256", + }, + ], + name: "withdrawSuperToken", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +export class IFlowSetup__factory { + static readonly abi = _abi; + static createInterface(): IFlowSetupInterface { + return new utils.Interface(_abi) as IFlowSetupInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): IFlowSetup { + return new Contract(address, _abi, signerOrProvider) as IFlowSetup; + } +} diff --git a/contracts/typechain-types/factories/contracts/interfaces/core/IFlow__factory.ts b/contracts/typechain-types/factories/contracts/interfaces/core/IFlow__factory.ts new file mode 100644 index 0000000..51b793a --- /dev/null +++ b/contracts/typechain-types/factories/contracts/interfaces/core/IFlow__factory.ts @@ -0,0 +1,355 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + IFlow, + IFlowInterface, +} from "../../../../contracts/interfaces/core/IFlow"; + +const _abi = [ + { + inputs: [ + { + internalType: "address", + name: "_superToken", + type: "address", + }, + { + internalType: "uint256", + name: "_nonce", + type: "uint256", + }, + ], + name: "closeFlow", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_superToken", + type: "address", + }, + { + internalType: "address", + name: "_sender", + type: "address", + }, + { + internalType: "address", + name: "_receiver", + type: "address", + }, + { + internalType: "uint256", + name: "_nonce", + type: "uint256", + }, + { + internalType: "int96", + name: "_flowRate", + type: "int96", + }, + ], + name: "decreaseFlow", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_superToken", + type: "address", + }, + { + internalType: "uint256", + name: "_amount", + type: "uint256", + }, + ], + name: "depositSuperToken", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_user", + type: "address", + }, + { + internalType: "address", + name: "_superToken", + type: "address", + }, + ], + name: "getAmountFlowed", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_superToken", + type: "address", + }, + ], + name: "getDepositTotal", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_user", + type: "address", + }, + { + internalType: "address", + name: "_superToken", + type: "address", + }, + ], + name: "getDepositUser", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_user", + type: "address", + }, + { + internalType: "address", + name: "_superToken", + type: "address", + }, + { + internalType: "uint256", + name: "_nonce", + type: "uint256", + }, + ], + name: "getFlowData", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + { + internalType: "uint256", + name: "", + type: "uint256", + }, + { + internalType: "uint256", + name: "", + type: "uint256", + }, + { + internalType: "uint256", + name: "", + type: "uint256", + }, + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_user", + type: "address", + }, + { + internalType: "address", + name: "_superToken", + type: "address", + }, + ], + name: "getNewFlowNonce", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_user", + type: "address", + }, + { + internalType: "address", + name: "_superToken", + type: "address", + }, + { + internalType: "int96", + name: "_flowRate", + type: "int96", + }, + ], + name: "getValidSafeLifespan", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_user", + type: "address", + }, + { + internalType: "address", + name: "_superToken", + type: "address", + }, + ], + name: "hasActiveFlow", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_viewer", + type: "address", + }, + { + internalType: "address", + name: "_broadcaster", + type: "address", + }, + ], + name: "isViewSessionAllowed", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_receiver", + type: "address", + }, + { + internalType: "address", + name: "_superToken", + type: "address", + }, + { + internalType: "uint256", + name: "_lifespan", + type: "uint256", + }, + ], + name: "openFlow", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_superToken", + type: "address", + }, + { + internalType: "uint256", + name: "_amount", + type: "uint256", + }, + ], + name: "withdrawSuperToken", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +export class IFlow__factory { + static readonly abi = _abi; + static createInterface(): IFlowInterface { + return new utils.Interface(_abi) as IFlowInterface; + } + static connect(address: string, signerOrProvider: Signer | Provider): IFlow { + return new Contract(address, _abi, signerOrProvider) as IFlow; + } +} diff --git a/contracts/typechain-types/factories/contracts/interfaces/core/ISession__factory.ts b/contracts/typechain-types/factories/contracts/interfaces/core/ISession__factory.ts new file mode 100644 index 0000000..0d7824d --- /dev/null +++ b/contracts/typechain-types/factories/contracts/interfaces/core/ISession__factory.ts @@ -0,0 +1,190 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + ISession, + ISessionInterface, +} from "../../../../contracts/interfaces/core/ISession"; + +const _abi = [ + { + inputs: [ + { + internalType: "address", + name: "_user", + type: "address", + }, + ], + name: "getCurrentSessionData", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + { + internalType: "address[]", + name: "", + type: "address[]", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_user", + type: "address", + }, + { + internalType: "address", + name: "_superToken", + type: "address", + }, + ], + name: "getNewSessionNonce", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_user", + type: "address", + }, + { + internalType: "address", + name: "_superToken", + type: "address", + }, + { + internalType: "uint256", + name: "_nonce", + type: "uint256", + }, + ], + name: "getSessionData", + outputs: [ + { + internalType: "int96", + name: "", + type: "int96", + }, + { + internalType: "uint96", + name: "", + type: "uint96", + }, + { + internalType: "uint256", + name: "", + type: "uint256", + }, + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_superToken", + type: "address", + }, + { + internalType: "uint96", + name: "_flowRate", + type: "uint96", + }, + { + internalType: "uint256", + name: "_tag", + type: "uint256", + }, + ], + name: "startSession", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address[]", + name: "_superTokens", + type: "address[]", + }, + { + internalType: "uint96[]", + name: "_flowRates", + type: "uint96[]", + }, + { + internalType: "uint256[]", + name: "_tags", + type: "uint256[]", + }, + ], + name: "startSessions", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_superToken", + type: "address", + }, + ], + name: "stopSession", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address[]", + name: "_superTokens", + type: "address[]", + }, + ], + name: "stopSessions", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +export class ISession__factory { + static readonly abi = _abi; + static createInterface(): ISessionInterface { + return new utils.Interface(_abi) as ISessionInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): ISession { + return new Contract(address, _abi, signerOrProvider) as ISession; + } +} diff --git a/contracts/typechain-types/factories/contracts/interfaces/core/index.ts b/contracts/typechain-types/factories/contracts/interfaces/core/index.ts new file mode 100644 index 0000000..c75a914 --- /dev/null +++ b/contracts/typechain-types/factories/contracts/interfaces/core/index.ts @@ -0,0 +1,7 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { IAutomate__factory } from "./IAutomate__factory"; +export { IControl__factory } from "./IControl__factory"; +export { IFlow__factory } from "./IFlow__factory"; +export { ISession__factory } from "./ISession__factory"; diff --git a/contracts/typechain-types/factories/contracts/interfaces/index.ts b/contracts/typechain-types/factories/contracts/interfaces/index.ts new file mode 100644 index 0000000..a52888f --- /dev/null +++ b/contracts/typechain-types/factories/contracts/interfaces/index.ts @@ -0,0 +1,5 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export * as core from "./core"; +export * as utils from "./utils"; diff --git a/contracts/typechain-types/factories/contracts/interfaces/utils/IAccessControl__factory.ts b/contracts/typechain-types/factories/contracts/interfaces/utils/IAccessControl__factory.ts new file mode 100644 index 0000000..c02cb0e --- /dev/null +++ b/contracts/typechain-types/factories/contracts/interfaces/utils/IAccessControl__factory.ts @@ -0,0 +1,150 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + IAccessControl, + IAccessControlInterface, +} from "../../../../contracts/interfaces/utils/IAccessControl"; + +const _abi = [ + { + inputs: [], + name: "getDefaultAdminRole", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [ + { + internalType: "string", + name: "_role", + type: "string", + }, + ], + name: "getRole", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "_role", + type: "bytes32", + }, + ], + name: "getRoleAdmin", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "_role", + type: "bytes32", + }, + { + internalType: "address", + name: "_account", + type: "address", + }, + ], + name: "grantRole", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "_role", + type: "bytes32", + }, + { + internalType: "address", + name: "_account", + type: "address", + }, + ], + name: "hasRole", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "_role", + type: "bytes32", + }, + ], + name: "renounceRole", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "_role", + type: "bytes32", + }, + { + internalType: "address", + name: "_account", + type: "address", + }, + ], + name: "revokeRole", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +export class IAccessControl__factory { + static readonly abi = _abi; + static createInterface(): IAccessControlInterface { + return new utils.Interface(_abi) as IAccessControlInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): IAccessControl { + return new Contract(address, _abi, signerOrProvider) as IAccessControl; + } +} diff --git a/contracts/typechain-types/factories/contracts/interfaces/utils/ICut__factory.ts b/contracts/typechain-types/factories/contracts/interfaces/utils/ICut__factory.ts new file mode 100644 index 0000000..ae2e25d --- /dev/null +++ b/contracts/typechain-types/factories/contracts/interfaces/utils/ICut__factory.ts @@ -0,0 +1,105 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + ICut, + ICutInterface, +} from "../../../../contracts/interfaces/utils/ICut"; + +const _abi = [ + { + anonymous: false, + inputs: [ + { + components: [ + { + internalType: "address", + name: "facetAddress", + type: "address", + }, + { + internalType: "enum ICut.FacetCutAction", + name: "action", + type: "uint8", + }, + { + internalType: "bytes4[]", + name: "functionSelectors", + type: "bytes4[]", + }, + ], + indexed: false, + internalType: "struct ICut.FacetCut[]", + name: "_diamondCut", + type: "tuple[]", + }, + { + indexed: false, + internalType: "address", + name: "_init", + type: "address", + }, + { + indexed: false, + internalType: "bytes", + name: "_calldata", + type: "bytes", + }, + ], + name: "DiamondCut", + type: "event", + }, + { + inputs: [ + { + components: [ + { + internalType: "address", + name: "facetAddress", + type: "address", + }, + { + internalType: "enum ICut.FacetCutAction", + name: "action", + type: "uint8", + }, + { + internalType: "bytes4[]", + name: "functionSelectors", + type: "bytes4[]", + }, + ], + internalType: "struct ICut.FacetCut[]", + name: "_diamondCut", + type: "tuple[]", + }, + { + internalType: "address", + name: "_init", + type: "address", + }, + { + internalType: "bytes", + name: "_calldata", + type: "bytes", + }, + ], + name: "diamondCut", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +export class ICut__factory { + static readonly abi = _abi; + static createInterface(): ICutInterface { + return new utils.Interface(_abi) as ICutInterface; + } + static connect(address: string, signerOrProvider: Signer | Provider): ICut { + return new Contract(address, _abi, signerOrProvider) as ICut; + } +} diff --git a/contracts/typechain-types/factories/contracts/interfaces/utils/IERC165__factory.ts b/contracts/typechain-types/factories/contracts/interfaces/utils/IERC165__factory.ts new file mode 100644 index 0000000..9e6c546 --- /dev/null +++ b/contracts/typechain-types/factories/contracts/interfaces/utils/IERC165__factory.ts @@ -0,0 +1,45 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + IERC165, + IERC165Interface, +} from "../../../../contracts/interfaces/utils/IERC165"; + +const _abi = [ + { + inputs: [ + { + internalType: "bytes4", + name: "interfaceId", + type: "bytes4", + }, + ], + name: "supportsInterface", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, +] as const; + +export class IERC165__factory { + static readonly abi = _abi; + static createInterface(): IERC165Interface { + return new utils.Interface(_abi) as IERC165Interface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): IERC165 { + return new Contract(address, _abi, signerOrProvider) as IERC165; + } +} diff --git a/contracts/typechain-types/factories/contracts/interfaces/utils/ILoupe__factory.ts b/contracts/typechain-types/factories/contracts/interfaces/utils/ILoupe__factory.ts new file mode 100644 index 0000000..ce7e7ff --- /dev/null +++ b/contracts/typechain-types/factories/contracts/interfaces/utils/ILoupe__factory.ts @@ -0,0 +1,99 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + ILoupe, + ILoupeInterface, +} from "../../../../contracts/interfaces/utils/ILoupe"; + +const _abi = [ + { + inputs: [ + { + internalType: "bytes4", + name: "_functionSelector", + type: "bytes4", + }, + ], + name: "facetAddress", + outputs: [ + { + internalType: "address", + name: "facetAddress_", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "facetAddresses", + outputs: [ + { + internalType: "address[]", + name: "facetAddresses_", + type: "address[]", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_facet", + type: "address", + }, + ], + name: "facetFunctionSelectors", + outputs: [ + { + internalType: "bytes4[]", + name: "facetFunctionSelectors_", + type: "bytes4[]", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "facets", + outputs: [ + { + components: [ + { + internalType: "address", + name: "facetAddress", + type: "address", + }, + { + internalType: "bytes4[]", + name: "functionSelectors", + type: "bytes4[]", + }, + ], + internalType: "struct ILoupe.Facet[]", + name: "facets_", + type: "tuple[]", + }, + ], + stateMutability: "view", + type: "function", + }, +] as const; + +export class ILoupe__factory { + static readonly abi = _abi; + static createInterface(): ILoupeInterface { + return new utils.Interface(_abi) as ILoupeInterface; + } + static connect(address: string, signerOrProvider: Signer | Provider): ILoupe { + return new Contract(address, _abi, signerOrProvider) as ILoupe; + } +} diff --git a/contracts/typechain-types/factories/contracts/interfaces/utils/IUtility__factory.ts b/contracts/typechain-types/factories/contracts/interfaces/utils/IUtility__factory.ts new file mode 100644 index 0000000..6fb7cce --- /dev/null +++ b/contracts/typechain-types/factories/contracts/interfaces/utils/IUtility__factory.ts @@ -0,0 +1,52 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + IUtility, + IUtilityInterface, +} from "../../../../contracts/interfaces/utils/IUtility"; + +const _abi = [ + { + inputs: [], + name: "getNativeBalance", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_amount", + type: "uint256", + }, + ], + name: "withdrawNativeBalance", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +export class IUtility__factory { + static readonly abi = _abi; + static createInterface(): IUtilityInterface { + return new utils.Interface(_abi) as IUtilityInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): IUtility { + return new Contract(address, _abi, signerOrProvider) as IUtility; + } +} diff --git a/contracts/typechain-types/factories/contracts/interfaces/utils/index.ts b/contracts/typechain-types/factories/contracts/interfaces/utils/index.ts new file mode 100644 index 0000000..37dfdfd --- /dev/null +++ b/contracts/typechain-types/factories/contracts/interfaces/utils/index.ts @@ -0,0 +1,8 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { IAccessControl__factory } from "./IAccessControl__factory"; +export { ICut__factory } from "./ICut__factory"; +export { IERC165__factory } from "./IERC165__factory"; +export { ILoupe__factory } from "./ILoupe__factory"; +export { IUtility__factory } from "./IUtility__factory"; diff --git a/contracts/typechain-types/factories/contracts/libraries/core/LibAutomate__factory.ts b/contracts/typechain-types/factories/contracts/libraries/core/LibAutomate__factory.ts new file mode 100644 index 0000000..baa3ea4 --- /dev/null +++ b/contracts/typechain-types/factories/contracts/libraries/core/LibAutomate__factory.ts @@ -0,0 +1,89 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../../../common"; +import type { + LibAutomate, + LibAutomateInterface, +} from "../../../../contracts/libraries/core/LibAutomate"; + +const _abi = [ + { + inputs: [], + name: "AUTOBOT_PROXY_FACTORY", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "GELATO_FEE", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, +] as const; + +const _bytecode = + "0x610131610053600b82828239805160001a607314610046577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe7300000000000000000000000000000000000000003014608060405260043610603c5760003560e01c8062b0f9f4146041578063f2f3e19c14605b575b600080fd5b60476075565b6040516052919060e2565b60405180910390f35b6061608d565b604051606c919060e2565b60405180910390f35b73c815db16d4be6ddf2685c201937905abf338f5d781565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee81565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600060ce8260a5565b9050919050565b60dc8160c5565b82525050565b600060208201905060f5600083018460d5565b9291505056fea2646970667358221220cc20beaa9962a09ce85ddbc7cf6c22fac21af4cf9b31e8e5e34576fedc95ec3764736f6c63430008120033"; + +type LibAutomateConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: LibAutomateConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class LibAutomate__factory extends ContractFactory { + constructor(...args: LibAutomateConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + override getDeployTransaction( + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + override attach(address: string): LibAutomate { + return super.attach(address) as LibAutomate; + } + override connect(signer: Signer): LibAutomate__factory { + return super.connect(signer) as LibAutomate__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): LibAutomateInterface { + return new utils.Interface(_abi) as LibAutomateInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): LibAutomate { + return new Contract(address, _abi, signerOrProvider) as LibAutomate; + } +} diff --git a/contracts/typechain-types/factories/contracts/libraries/core/index.ts b/contracts/typechain-types/factories/contracts/libraries/core/index.ts new file mode 100644 index 0000000..38abcc2 --- /dev/null +++ b/contracts/typechain-types/factories/contracts/libraries/core/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { LibAutomate__factory } from "./LibAutomate__factory"; diff --git a/contracts/typechain-types/factories/contracts/libraries/index.ts b/contracts/typechain-types/factories/contracts/libraries/index.ts new file mode 100644 index 0000000..56778f8 --- /dev/null +++ b/contracts/typechain-types/factories/contracts/libraries/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export * as utils from "./utils"; diff --git a/contracts/typechain-types/factories/contracts/libraries/utils/LibAccessControl__factory.ts b/contracts/typechain-types/factories/contracts/libraries/utils/LibAccessControl__factory.ts new file mode 100644 index 0000000..da05225 --- /dev/null +++ b/contracts/typechain-types/factories/contracts/libraries/utils/LibAccessControl__factory.ts @@ -0,0 +1,138 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../../../common"; +import type { + LibAccessControl, + LibAccessControlInterface, +} from "../../../../contracts/libraries/utils/LibAccessControl"; + +const _abi = [ + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "bytes32", + name: "role", + type: "bytes32", + }, + { + indexed: true, + internalType: "bytes32", + name: "previousAdminRole", + type: "bytes32", + }, + { + indexed: true, + internalType: "bytes32", + name: "newAdminRole", + type: "bytes32", + }, + ], + name: "RoleAdminChanged", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "bytes32", + name: "role", + type: "bytes32", + }, + { + indexed: true, + internalType: "address", + name: "account", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "sender", + type: "address", + }, + ], + name: "RoleGranted", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "bytes32", + name: "role", + type: "bytes32", + }, + { + indexed: true, + internalType: "address", + name: "account", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "sender", + type: "address", + }, + ], + name: "RoleRevoked", + type: "event", + }, +] as const; + +const _bytecode = + "0x60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200e6b4c12a99f2ee419c15e747c8ef5b803d0ed5bb8c945f20304e871deaff83564736f6c63430008120033"; + +type LibAccessControlConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: LibAccessControlConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class LibAccessControl__factory extends ContractFactory { + constructor(...args: LibAccessControlConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + override getDeployTransaction( + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + override attach(address: string): LibAccessControl { + return super.attach(address) as LibAccessControl; + } + override connect(signer: Signer): LibAccessControl__factory { + return super.connect(signer) as LibAccessControl__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): LibAccessControlInterface { + return new utils.Interface(_abi) as LibAccessControlInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): LibAccessControl { + return new Contract(address, _abi, signerOrProvider) as LibAccessControl; + } +} diff --git a/contracts/typechain-types/factories/contracts/libraries/utils/LibDiamond__factory.ts b/contracts/typechain-types/factories/contracts/libraries/utils/LibDiamond__factory.ts new file mode 100644 index 0000000..fa2cb99 --- /dev/null +++ b/contracts/typechain-types/factories/contracts/libraries/utils/LibDiamond__factory.ts @@ -0,0 +1,105 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../../../common"; +import type { + LibDiamond, + LibDiamondInterface, +} from "../../../../contracts/libraries/utils/LibDiamond"; + +const _abi = [ + { + anonymous: false, + inputs: [ + { + components: [ + { + internalType: "address", + name: "facetAddress", + type: "address", + }, + { + internalType: "enum ICut.FacetCutAction", + name: "action", + type: "uint8", + }, + { + internalType: "bytes4[]", + name: "functionSelectors", + type: "bytes4[]", + }, + ], + indexed: false, + internalType: "struct ICut.FacetCut[]", + name: "_diamondCut", + type: "tuple[]", + }, + { + indexed: false, + internalType: "address", + name: "_init", + type: "address", + }, + { + indexed: false, + internalType: "bytes", + name: "_calldata", + type: "bytes", + }, + ], + name: "DiamondCut", + type: "event", + }, +] as const; + +const _bytecode = + "0x60566050600b82828239805160001a6073146043577f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c4d0b83783de9e18dfe67224c3667bce1a0804ce1f96773d0f0ebbd4f5fa5b6f64736f6c63430008120033"; + +type LibDiamondConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: LibDiamondConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class LibDiamond__factory extends ContractFactory { + constructor(...args: LibDiamondConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + override getDeployTransaction( + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + override attach(address: string): LibDiamond { + return super.attach(address) as LibDiamond; + } + override connect(signer: Signer): LibDiamond__factory { + return super.connect(signer) as LibDiamond__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): LibDiamondInterface { + return new utils.Interface(_abi) as LibDiamondInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): LibDiamond { + return new Contract(address, _abi, signerOrProvider) as LibDiamond; + } +} diff --git a/contracts/typechain-types/factories/contracts/libraries/utils/index.ts b/contracts/typechain-types/factories/contracts/libraries/utils/index.ts new file mode 100644 index 0000000..6f23797 --- /dev/null +++ b/contracts/typechain-types/factories/contracts/libraries/utils/index.ts @@ -0,0 +1,5 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { LibAccessControl__factory } from "./LibAccessControl__factory"; +export { LibDiamond__factory } from "./LibDiamond__factory"; diff --git a/contracts/typechain-types/factories/contracts/services/gelato/Types.sol/IAutomate__factory.ts b/contracts/typechain-types/factories/contracts/services/gelato/Types.sol/IAutomate__factory.ts new file mode 100644 index 0000000..6d0ce4a --- /dev/null +++ b/contracts/typechain-types/factories/contracts/services/gelato/Types.sol/IAutomate__factory.ts @@ -0,0 +1,129 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + IAutomate, + IAutomateInterface, +} from "../../../../../contracts/services/gelato/Types.sol/IAutomate"; + +const _abi = [ + { + inputs: [ + { + internalType: "bytes32", + name: "taskId", + type: "bytes32", + }, + ], + name: "cancelTask", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "execAddress", + type: "address", + }, + { + internalType: "bytes", + name: "execDataOrSelector", + type: "bytes", + }, + { + components: [ + { + internalType: "enum Module[]", + name: "modules", + type: "uint8[]", + }, + { + internalType: "bytes[]", + name: "args", + type: "bytes[]", + }, + ], + internalType: "struct ModuleData", + name: "moduleData", + type: "tuple", + }, + { + internalType: "address", + name: "feeToken", + type: "address", + }, + ], + name: "createTask", + outputs: [ + { + internalType: "bytes32", + name: "taskId", + type: "bytes32", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "gelato", + outputs: [ + { + internalType: "address payable", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getFeeDetails", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "taskTreasury", + outputs: [ + { + internalType: "contract ITaskTreasuryUpgradable", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, +] as const; + +export class IAutomate__factory { + static readonly abi = _abi; + static createInterface(): IAutomateInterface { + return new utils.Interface(_abi) as IAutomateInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): IAutomate { + return new Contract(address, _abi, signerOrProvider) as IAutomate; + } +} diff --git a/contracts/typechain-types/factories/contracts/services/gelato/Types.sol/IOpsProxyFactory__factory.ts b/contracts/typechain-types/factories/contracts/services/gelato/Types.sol/IOpsProxyFactory__factory.ts new file mode 100644 index 0000000..f4f599f --- /dev/null +++ b/contracts/typechain-types/factories/contracts/services/gelato/Types.sol/IOpsProxyFactory__factory.ts @@ -0,0 +1,50 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + IOpsProxyFactory, + IOpsProxyFactoryInterface, +} from "../../../../../contracts/services/gelato/Types.sol/IOpsProxyFactory"; + +const _abi = [ + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "getProxyOf", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, +] as const; + +export class IOpsProxyFactory__factory { + static readonly abi = _abi; + static createInterface(): IOpsProxyFactoryInterface { + return new utils.Interface(_abi) as IOpsProxyFactoryInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): IOpsProxyFactory { + return new Contract(address, _abi, signerOrProvider) as IOpsProxyFactory; + } +} diff --git a/contracts/typechain-types/factories/contracts/services/gelato/Types.sol/ITaskTreasuryUpgradable__factory.ts b/contracts/typechain-types/factories/contracts/services/gelato/Types.sol/ITaskTreasuryUpgradable__factory.ts new file mode 100644 index 0000000..08ec76c --- /dev/null +++ b/contracts/typechain-types/factories/contracts/services/gelato/Types.sol/ITaskTreasuryUpgradable__factory.ts @@ -0,0 +1,100 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + ITaskTreasuryUpgradable, + ITaskTreasuryUpgradableInterface, +} from "../../../../../contracts/services/gelato/Types.sol/ITaskTreasuryUpgradable"; + +const _abi = [ + { + inputs: [ + { + internalType: "address", + name: "receiver", + type: "address", + }, + { + internalType: "address", + name: "token", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "depositFunds", + outputs: [], + stateMutability: "payable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_user", + type: "address", + }, + { + internalType: "address", + name: "_token", + type: "address", + }, + ], + name: "userTokenBalance", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address payable", + name: "receiver", + type: "address", + }, + { + internalType: "address", + name: "token", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "withdrawFunds", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +export class ITaskTreasuryUpgradable__factory { + static readonly abi = _abi; + static createInterface(): ITaskTreasuryUpgradableInterface { + return new utils.Interface(_abi) as ITaskTreasuryUpgradableInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): ITaskTreasuryUpgradable { + return new Contract( + address, + _abi, + signerOrProvider + ) as ITaskTreasuryUpgradable; + } +} diff --git a/contracts/typechain-types/factories/contracts/services/gelato/Types.sol/index.ts b/contracts/typechain-types/factories/contracts/services/gelato/Types.sol/index.ts new file mode 100644 index 0000000..aafe6e8 --- /dev/null +++ b/contracts/typechain-types/factories/contracts/services/gelato/Types.sol/index.ts @@ -0,0 +1,6 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { IAutomate__factory } from "./IAutomate__factory"; +export { IOpsProxyFactory__factory } from "./IOpsProxyFactory__factory"; +export { ITaskTreasuryUpgradable__factory } from "./ITaskTreasuryUpgradable__factory"; diff --git a/contracts/typechain-types/factories/contracts/services/gelato/index.ts b/contracts/typechain-types/factories/contracts/services/gelato/index.ts new file mode 100644 index 0000000..ed13ac1 --- /dev/null +++ b/contracts/typechain-types/factories/contracts/services/gelato/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export * as typesSol from "./Types.sol"; diff --git a/contracts/typechain-types/factories/contracts/services/index.ts b/contracts/typechain-types/factories/contracts/services/index.ts new file mode 100644 index 0000000..a566fff --- /dev/null +++ b/contracts/typechain-types/factories/contracts/services/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export * as gelato from "./gelato"; diff --git a/contracts/typechain-types/factories/contracts/tests/InitTest__factory.ts b/contracts/typechain-types/factories/contracts/tests/InitTest__factory.ts new file mode 100644 index 0000000..32ec956 --- /dev/null +++ b/contracts/typechain-types/factories/contracts/tests/InitTest__factory.ts @@ -0,0 +1,76 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../../common"; +import type { + InitTest, + InitTestInterface, +} from "../../../contracts/tests/InitTest"; + +const _abi = [ + { + inputs: [ + { + internalType: "uint256", + name: "_value", + type: "uint256", + }, + ], + name: "init", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +const _bytecode = + "0x608060405234801561001057600080fd5b50610121806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063b7b0422d14602d575b600080fd5b60436004803603810190603f919060c3565b6045565b005b604c81604f565b50565b8060566060565b6000018190555050565b6000807f7375a7f63427bb424f9e0a1d030dd6a96a0933c56047b4d71ac9da62a0b0ce2990508091505090565b600080fd5b6000819050919050565b60a3816092565b811460ad57600080fd5b50565b60008135905060bd81609c565b92915050565b60006020828403121560d65760d5608d565b5b600060e28482850160b0565b9150509291505056fea264697066735822122053747af61b551fa1d6e9a2a89c84046c5c66ec897c3a7eb9a74e1d4e1edc79bc64736f6c63430008120033"; + +type InitTestConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: InitTestConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class InitTest__factory extends ContractFactory { + constructor(...args: InitTestConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + override getDeployTransaction( + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + override attach(address: string): InitTest { + return super.attach(address) as InitTest; + } + override connect(signer: Signer): InitTest__factory { + return super.connect(signer) as InitTest__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): InitTestInterface { + return new utils.Interface(_abi) as InitTestInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): InitTest { + return new Contract(address, _abi, signerOrProvider) as InitTest; + } +} diff --git a/contracts/typechain-types/factories/contracts/tests/Test1Facet__factory.ts b/contracts/typechain-types/factories/contracts/tests/Test1Facet__factory.ts new file mode 100644 index 0000000..cafaa59 --- /dev/null +++ b/contracts/typechain-types/factories/contracts/tests/Test1Facet__factory.ts @@ -0,0 +1,235 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../../common"; +import type { + Test1Facet, + Test1FacetInterface, +} from "../../../contracts/tests/Test1Facet"; + +const _abi = [ + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "something", + type: "address", + }, + ], + name: "TestEvent", + type: "event", + }, + { + inputs: [ + { + internalType: "bytes4", + name: "_interfaceID", + type: "bytes4", + }, + ], + name: "supportsInterface", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "test1Func1", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "test1Func10", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "test1Func11", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "test1Func12", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "test1Func13", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "test1Func14", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "test1Func15", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "test1Func16", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "test1Func17", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "test1Func18", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "test1Func19", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "test1Func2", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "test1Func20", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "test1Func3", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "test1Func4", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "test1Func5", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "test1Func6", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "test1Func7", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "test1Func8", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "test1Func9", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +const _bytecode = + "0x608060405234801561001057600080fd5b50610359806100206000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806351b68a4d116100b85780639abf97aa1161007c5780639abf97aa146101f8578063b0e8fcc714610202578063cbb835f61461020c578063cd0bae0914610216578063cf3bbe1814610220578063db32da151461022a57610137565b806351b68a4d146101c657806371a99d6f146101d057806377e9d0d6146101da57806381b5207d146101e457806387952d22146101ee57610137565b806324c1d5a7116100ff57806324c1d5a714610194578063292c460d1461019e5780632cb83248146101a85780634484b3b9146101b257806350eb3f43146101bc57610137565b806301ffc9a71461013c5780630716c2ae1461016c578063110460471461017657806319c841ab1461018057806319e3b5331461018a575b600080fd5b610156600480360381019061015191906102c0565b610234565b6040516101639190610308565b60405180910390f35b61017461023b565b005b61017e61023d565b005b61018861023f565b005b610192610241565b005b61019c610243565b005b6101a6610245565b005b6101b0610247565b005b6101ba610249565b005b6101c461024b565b005b6101ce61024d565b005b6101d861024f565b005b6101e2610251565b005b6101ec610253565b005b6101f6610255565b005b610200610257565b005b61020a610259565b005b61021461025b565b005b61021e61025d565b005b61022861025f565b005b610232610261565b005b6000919050565b565b565b565b565b565b565b565b565b565b565b565b565b565b565b565b565b565b565b565b565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61029d81610268565b81146102a857600080fd5b50565b6000813590506102ba81610294565b92915050565b6000602082840312156102d6576102d5610263565b5b60006102e4848285016102ab565b91505092915050565b60008115159050919050565b610302816102ed565b82525050565b600060208201905061031d60008301846102f9565b9291505056fea26469706673582212204c87ed240f050aed6c4c313744f39f62395f8d7bea6d6578a7afef48fe4613ab64736f6c63430008120033"; + +type Test1FacetConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: Test1FacetConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class Test1Facet__factory extends ContractFactory { + constructor(...args: Test1FacetConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + override getDeployTransaction( + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + override attach(address: string): Test1Facet { + return super.attach(address) as Test1Facet; + } + override connect(signer: Signer): Test1Facet__factory { + return super.connect(signer) as Test1Facet__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): Test1FacetInterface { + return new utils.Interface(_abi) as Test1FacetInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): Test1Facet { + return new Contract(address, _abi, signerOrProvider) as Test1Facet; + } +} diff --git a/contracts/typechain-types/factories/contracts/tests/Test2Facet__factory.ts b/contracts/typechain-types/factories/contracts/tests/Test2Facet__factory.ts new file mode 100644 index 0000000..83bc21d --- /dev/null +++ b/contracts/typechain-types/factories/contracts/tests/Test2Facet__factory.ts @@ -0,0 +1,203 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../../common"; +import type { + Test2Facet, + Test2FacetInterface, +} from "../../../contracts/tests/Test2Facet"; + +const _abi = [ + { + inputs: [], + name: "test2Func1", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "test2Func10", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "test2Func11", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "test2Func12", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "test2Func13", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "test2Func14", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "test2Func15", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "test2Func16", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "test2Func17", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "test2Func18", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "test2Func19", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "test2Func2", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "test2Func20", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "test2Func3", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "test2Func4", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "test2Func5", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "test2Func6", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "test2Func7", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "test2Func8", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "test2Func9", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +const _bytecode = + "0x608060405234801561001057600080fd5b50610257806100206000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c80638ee8be30116100ad578063d2f0c73e11610071578063d2f0c73e146101c7578063e5f687b2146101d1578063e7de23a4146101db578063ea36b558146101e5578063ef3f4d78146101ef5761012c565b80638ee8be301461019557806391d0396b1461019f578063c670641d146101a9578063ca5fa5c0146101b3578063caae8f23146101bd5761012c565b80632e463958116100f45780632e463958146101635780635fd6312b1461016d5780636dc16b0114610177578063792a8e2e14610181578063884280a61461018b5761012c565b806303feeeae146101315780630c103a931461013b5780630e4cd7fc14610145578063148843091461014f57806317fd06e714610159575b600080fd5b6101396101f9565b005b6101436101fb565b005b61014d6101fd565b005b6101576101ff565b005b610161610201565b005b61016b610203565b005b610175610205565b005b61017f610207565b005b610189610209565b005b61019361020b565b005b61019d61020d565b005b6101a761020f565b005b6101b1610211565b005b6101bb610213565b005b6101c5610215565b005b6101cf610217565b005b6101d9610219565b005b6101e361021b565b005b6101ed61021d565b005b6101f761021f565b005b565b565b565b565b565b565b565b565b565b565b565b565b565b565b565b565b565b565b565b56fea2646970667358221220827357bb518fcc14f1fbc8cdb66f483c3780416f08a3fb2ca2505df5b7c68ba864736f6c63430008120033"; + +type Test2FacetConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: Test2FacetConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class Test2Facet__factory extends ContractFactory { + constructor(...args: Test2FacetConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + override getDeployTransaction( + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + override attach(address: string): Test2Facet { + return super.attach(address) as Test2Facet; + } + override connect(signer: Signer): Test2Facet__factory { + return super.connect(signer) as Test2Facet__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): Test2FacetInterface { + return new utils.Interface(_abi) as Test2FacetInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): Test2Facet { + return new Contract(address, _abi, signerOrProvider) as Test2Facet; + } +} diff --git a/contracts/typechain-types/factories/contracts/tests/Test3Facet2__factory.ts b/contracts/typechain-types/factories/contracts/tests/Test3Facet2__factory.ts new file mode 100644 index 0000000..e7ba4c0 --- /dev/null +++ b/contracts/typechain-types/factories/contracts/tests/Test3Facet2__factory.ts @@ -0,0 +1,76 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../../common"; +import type { + Test3Facet2, + Test3Facet2Interface, +} from "../../../contracts/tests/Test3Facet2"; + +const _abi = [ + { + inputs: [], + name: "test3Func1", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, +] as const; + +const _bytecode = + "0x608060405234801561001057600080fd5b5060b68061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063ebfa4bcc14602d575b600080fd5b60336047565b604051603e91906067565b60405180910390f35b60006002905090565b6000819050919050565b6061816050565b82525050565b6000602082019050607a6000830184605a565b9291505056fea2646970667358221220fa8d9015763e9ef2a558f5c9d17d2c2b72a97ce49d3f9c04b79dccd873dfd26064736f6c63430008120033"; + +type Test3Facet2ConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: Test3Facet2ConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class Test3Facet2__factory extends ContractFactory { + constructor(...args: Test3Facet2ConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + override getDeployTransaction( + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + override attach(address: string): Test3Facet2 { + return super.attach(address) as Test3Facet2; + } + override connect(signer: Signer): Test3Facet2__factory { + return super.connect(signer) as Test3Facet2__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): Test3Facet2Interface { + return new utils.Interface(_abi) as Test3Facet2Interface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): Test3Facet2 { + return new Contract(address, _abi, signerOrProvider) as Test3Facet2; + } +} diff --git a/contracts/typechain-types/factories/contracts/tests/Test3Facet__factory.ts b/contracts/typechain-types/factories/contracts/tests/Test3Facet__factory.ts new file mode 100644 index 0000000..a88291d --- /dev/null +++ b/contracts/typechain-types/factories/contracts/tests/Test3Facet__factory.ts @@ -0,0 +1,83 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../../common"; +import type { + Test3Facet, + Test3FacetInterface, +} from "../../../contracts/tests/Test3Facet"; + +const _abi = [ + { + inputs: [], + name: "test3Func1", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [], + name: "test3Func2", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +const _bytecode = + "0x608060405234801561001057600080fd5b5060ca8061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c8063e7bf600f146037578063ebfa4bcc14603f575b600080fd5b603d6059565b005b6045605b565b60405160509190607b565b60405180910390f35b565b60006001905090565b6000819050919050565b6075816064565b82525050565b6000602082019050608e6000830184606e565b9291505056fea264697066735822122023e56e5cd3a0f4cc243017303e76ff1d35a3b89806ce219a3b1b35f87550079764736f6c63430008120033"; + +type Test3FacetConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: Test3FacetConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class Test3Facet__factory extends ContractFactory { + constructor(...args: Test3FacetConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + override getDeployTransaction( + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + override attach(address: string): Test3Facet { + return super.attach(address) as Test3Facet; + } + override connect(signer: Signer): Test3Facet__factory { + return super.connect(signer) as Test3Facet__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): Test3FacetInterface { + return new utils.Interface(_abi) as Test3FacetInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): Test3Facet { + return new Contract(address, _abi, signerOrProvider) as Test3Facet; + } +} diff --git a/contracts/typechain-types/factories/contracts/tests/Test4Facet__factory.ts b/contracts/typechain-types/factories/contracts/tests/Test4Facet__factory.ts new file mode 100644 index 0000000..32b5863 --- /dev/null +++ b/contracts/typechain-types/factories/contracts/tests/Test4Facet__factory.ts @@ -0,0 +1,77 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../../common"; +import type { + Test4Facet, + Test4FacetInterface, +} from "../../../contracts/tests/Test4Facet"; + +const _abi = [ + { + inputs: [], + name: "test4Func1", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "test4Func2", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +const _bytecode = + "0x6080604052348015600f57600080fd5b5060818061001e6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806339fcc3fd14603757806383e1265214603f575b600080fd5b603d6047565b005b60456049565b005b565b56fea264697066735822122081fdc27a4d2eb955d894ad6f4158e570fdb7ee2bf9f648a3b627e2f0e2f30a5364736f6c63430008120033"; + +type Test4FacetConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: Test4FacetConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class Test4Facet__factory extends ContractFactory { + constructor(...args: Test4FacetConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + override getDeployTransaction( + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + override attach(address: string): Test4Facet { + return super.attach(address) as Test4Facet; + } + override connect(signer: Signer): Test4Facet__factory { + return super.connect(signer) as Test4Facet__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): Test4FacetInterface { + return new utils.Interface(_abi) as Test4FacetInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): Test4Facet { + return new Contract(address, _abi, signerOrProvider) as Test4Facet; + } +} diff --git a/contracts/typechain-types/factories/contracts/tests/Test5Facet__factory.ts b/contracts/typechain-types/factories/contracts/tests/Test5Facet__factory.ts new file mode 100644 index 0000000..6564318 --- /dev/null +++ b/contracts/typechain-types/factories/contracts/tests/Test5Facet__factory.ts @@ -0,0 +1,103 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../../common"; +import type { + Test5Facet, + Test5FacetInterface, +} from "../../../contracts/tests/Test5Facet"; + +const _abi = [ + { + inputs: [], + name: "getValue", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_value", + type: "uint256", + }, + ], + name: "setValue", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "test5Func1", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "test5Func2", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +const _bytecode = + "0x608060405234801561001057600080fd5b506101d9806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632096525514610051578063552410771461006f578063ae9aad3e1461008b578063fbf5c5aa14610095575b600080fd5b61005961009f565b604051610066919061012a565b60405180910390f35b61008960048036038101906100849190610176565b6100ae565b005b6100936100ba565b005b61009d6100bc565b005b60006100a96100be565b905090565b6100b7816100d1565b50565b565b565b60006100c86100e4565b60000154905090565b806100da6100e4565b6000018190555050565b6000807f7375a7f63427bb424f9e0a1d030dd6a96a0933c56047b4d71ac9da62a0b0ce2990508091505090565b6000819050919050565b61012481610111565b82525050565b600060208201905061013f600083018461011b565b92915050565b600080fd5b61015381610111565b811461015e57600080fd5b50565b6000813590506101708161014a565b92915050565b60006020828403121561018c5761018b610145565b5b600061019a84828501610161565b9150509291505056fea26469706673582212205d355169b04faf01c476a85549834aac956d30a67401472e435005078c03353d64736f6c63430008120033"; + +type Test5FacetConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: Test5FacetConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class Test5Facet__factory extends ContractFactory { + constructor(...args: Test5FacetConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + override getDeployTransaction( + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + override attach(address: string): Test5Facet { + return super.attach(address) as Test5Facet; + } + override connect(signer: Signer): Test5Facet__factory { + return super.connect(signer) as Test5Facet__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): Test5FacetInterface { + return new utils.Interface(_abi) as Test5FacetInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): Test5Facet { + return new Contract(address, _abi, signerOrProvider) as Test5Facet; + } +} diff --git a/contracts/typechain-types/factories/contracts/tests/index.ts b/contracts/typechain-types/factories/contracts/tests/index.ts new file mode 100644 index 0000000..3615523 --- /dev/null +++ b/contracts/typechain-types/factories/contracts/tests/index.ts @@ -0,0 +1,10 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { InitTest__factory } from "./InitTest__factory"; +export { Test1Facet__factory } from "./Test1Facet__factory"; +export { Test2Facet__factory } from "./Test2Facet__factory"; +export { Test3Facet__factory } from "./Test3Facet__factory"; +export { Test3Facet2__factory } from "./Test3Facet2__factory"; +export { Test4Facet__factory } from "./Test4Facet__factory"; +export { Test5Facet__factory } from "./Test5Facet__factory"; diff --git a/contracts/typechain-types/factories/contracts/upgrades/DiamondInit__factory.ts b/contracts/typechain-types/factories/contracts/upgrades/DiamondInit__factory.ts new file mode 100644 index 0000000..1750496 --- /dev/null +++ b/contracts/typechain-types/factories/contracts/upgrades/DiamondInit__factory.ts @@ -0,0 +1,101 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../../common"; +import type { + DiamondInit, + DiamondInitInterface, +} from "../../../contracts/upgrades/DiamondInit"; + +const _abi = [ + { + inputs: [ + { + internalType: "address", + name: "_autobot", + type: "address", + }, + { + internalType: "uint256", + name: "_minimumAppGelatoBalance", + type: "uint256", + }, + { + internalType: "uint256", + name: "_minimumEndDuration", + type: "uint256", + }, + { + internalType: "uint256", + name: "_minimumLifespan", + type: "uint256", + }, + { + internalType: "uint256", + name: "_stBufferDurationInSecond", + type: "uint256", + }, + { + internalType: "address[]", + name: "_superTokens", + type: "address[]", + }, + ], + name: "init", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +const _bytecode = + "0x608060405234801561001057600080fd5b50610d38806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80630629b93814610030575b600080fd5b61004a60048036038101906100459190610add565b61004c565b005b60006100566105bd565b905060018160030160007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060018160030160007f1f931c1c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060018160030160007f48e2b093000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060018160030160007ff8b33b26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060018160030160007f410db6b6000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060018160030160007fa60cf313000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060018160030160007fb5879a4b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060018160030160007fed5e69e2000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555060018160030160007f5e1208a1000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555061054d876105ea565b610556866107d2565b61055f856107e5565b610568846107f8565b6105718361080b565b60005b82518110156105b3576105a083828151811061059357610592610b86565b5b602002602001015161081e565b80806105ab90610be4565b915050610574565b5050505050505050565b6000807fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90508091505090565b806105f3610882565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663573ea5756040518163ffffffff1660e01b8152600401602060405180830381865afa15801561067f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a39190610c6a565b6106ab610882565b60020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506106f4610882565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e60a32136040518163ffffffff1660e01b8152600401602060405180830381865afa158015610762573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107869190610cd5565b61078e610882565b60010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b806107db610882565b6003018190555050565b806107ee6108af565b6006018190555050565b806108016108af565b6007018190555050565b806108146108af565b6008018190555050565b60016108286108af565b60090160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000807fde06769ca6d80a022439e234eebb61c3801d652175b62f912d6f8cac7b881c6590508091505090565b6000807f2f7ed27098ecefe70183ee38ae4542dee65215b0786f6870871034402cfe2cc990508091505090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061091b826108f0565b9050919050565b61092b81610910565b811461093657600080fd5b50565b60008135905061094881610922565b92915050565b6000819050919050565b6109618161094e565b811461096c57600080fd5b50565b60008135905061097e81610958565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6109d282610989565b810181811067ffffffffffffffff821117156109f1576109f061099a565b5b80604052505050565b6000610a046108dc565b9050610a1082826109c9565b919050565b600067ffffffffffffffff821115610a3057610a2f61099a565b5b602082029050602081019050919050565b600080fd5b6000610a59610a5484610a15565b6109fa565b90508083825260208201905060208402830185811115610a7c57610a7b610a41565b5b835b81811015610aa55780610a918882610939565b845260208401935050602081019050610a7e565b5050509392505050565b600082601f830112610ac457610ac3610984565b5b8135610ad4848260208601610a46565b91505092915050565b60008060008060008060c08789031215610afa57610af96108e6565b5b6000610b0889828a01610939565b9650506020610b1989828a0161096f565b9550506040610b2a89828a0161096f565b9450506060610b3b89828a0161096f565b9350506080610b4c89828a0161096f565b92505060a087013567ffffffffffffffff811115610b6d57610b6c6108eb565b5b610b7989828a01610aaf565b9150509295509295509295565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610bef8261094e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610c2157610c20610bb5565b5b600182019050919050565b6000610c37826108f0565b9050919050565b610c4781610c2c565b8114610c5257600080fd5b50565b600081519050610c6481610c3e565b92915050565b600060208284031215610c8057610c7f6108e6565b5b6000610c8e84828501610c55565b91505092915050565b6000610ca282610910565b9050919050565b610cb281610c97565b8114610cbd57600080fd5b50565b600081519050610ccf81610ca9565b92915050565b600060208284031215610ceb57610cea6108e6565b5b6000610cf984828501610cc0565b9150509291505056fea2646970667358221220b59264387b3241f6799040ab0630b31d2979d26e4f53f747c3046a0b0bdf879864736f6c63430008120033"; + +type DiamondInitConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: DiamondInitConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class DiamondInit__factory extends ContractFactory { + constructor(...args: DiamondInitConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + override getDeployTransaction( + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + override attach(address: string): DiamondInit { + return super.attach(address) as DiamondInit; + } + override connect(signer: Signer): DiamondInit__factory { + return super.connect(signer) as DiamondInit__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): DiamondInitInterface { + return new utils.Interface(_abi) as DiamondInitInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): DiamondInit { + return new Contract(address, _abi, signerOrProvider) as DiamondInit; + } +} diff --git a/contracts/typechain-types/factories/contracts/upgrades/index.ts b/contracts/typechain-types/factories/contracts/upgrades/index.ts new file mode 100644 index 0000000..8eef5f7 --- /dev/null +++ b/contracts/typechain-types/factories/contracts/upgrades/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { DiamondInit__factory } from "./DiamondInit__factory"; diff --git a/contracts/typechain-types/factories/index.ts b/contracts/typechain-types/factories/index.ts new file mode 100644 index 0000000..aa14e9d --- /dev/null +++ b/contracts/typechain-types/factories/index.ts @@ -0,0 +1,6 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export * as openzeppelin from "./@openzeppelin"; +export * as superfluidFinance from "./@superfluid-finance"; +export * as contracts from "./contracts"; diff --git a/contracts/typechain-types/hardhat.d.ts b/contracts/typechain-types/hardhat.d.ts new file mode 100644 index 0000000..b05a96e --- /dev/null +++ b/contracts/typechain-types/hardhat.d.ts @@ -0,0 +1,447 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { ethers } from "ethers"; +import { + FactoryOptions, + HardhatEthersHelpers as HardhatEthersHelpersBase, +} from "@nomiclabs/hardhat-ethers/types"; + +import * as Contracts from "."; + +declare module "hardhat/types/runtime" { + interface HardhatEthersHelpers extends HardhatEthersHelpersBase { + getContractFactory( + name: "IERC1271", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "IERC20Permit", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "IERC20", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "IERC777", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "IConstantFlowAgreementV1", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "IInstantDistributionAgreementV1", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "ISuperAgreement", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "ISuperApp", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "ISuperfluid", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "ISuperfluidGovernance", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "ISuperfluidToken", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "ISuperToken", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "ISuperTokenFactory", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "ERC20WithTokenInfo", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "TokenInfo", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "Diamond", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "Automate", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "Control", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "Flow", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "Session", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "AccessControl", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "Cut", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "Loupe", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "Utility", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "IAutomate", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "IControl", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "IFlow", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "ISession", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "IAccessControl", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "ICut", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "IERC165", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "ILoupe", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "IUtility", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "LibAccessControl", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "LibDiamond", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "IAutomate", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "IOpsProxyFactory", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "ITaskTreasuryUpgradable", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "InitTest", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "Test1Facet", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "Test2Facet", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "Test3Facet", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "Test3Facet2", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "Test4Facet", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "Test5Facet", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "DiamondInit", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + + getContractAt( + name: "IERC1271", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "IERC20Permit", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "IERC20", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "IERC777", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "IConstantFlowAgreementV1", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "IInstantDistributionAgreementV1", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "ISuperAgreement", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "ISuperApp", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "ISuperfluid", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "ISuperfluidGovernance", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "ISuperfluidToken", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "ISuperToken", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "ISuperTokenFactory", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "ERC20WithTokenInfo", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "TokenInfo", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "Diamond", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "Automate", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "Control", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "Flow", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "Session", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "AccessControl", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "Cut", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "Loupe", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "Utility", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "IAutomate", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "IControl", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "IFlow", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "ISession", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "IAccessControl", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "ICut", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "IERC165", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "ILoupe", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "IUtility", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "LibAccessControl", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "LibDiamond", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "IAutomate", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "IOpsProxyFactory", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "ITaskTreasuryUpgradable", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "InitTest", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "Test1Facet", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "Test2Facet", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "Test3Facet", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "Test3Facet2", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "Test4Facet", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "Test5Facet", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "DiamondInit", + address: string, + signer?: ethers.Signer + ): Promise; + + // default types + getContractFactory( + name: string, + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + abi: any[], + bytecode: ethers.utils.BytesLike, + signer?: ethers.Signer + ): Promise; + getContractAt( + nameOrAbi: string | any[], + address: string, + signer?: ethers.Signer + ): Promise; + } +} diff --git a/contracts/typechain-types/index.ts b/contracts/typechain-types/index.ts new file mode 100644 index 0000000..7f9d640 --- /dev/null +++ b/contracts/typechain-types/index.ts @@ -0,0 +1,100 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type * as openzeppelin from "./@openzeppelin"; +export type { openzeppelin }; +import type * as superfluidFinance from "./@superfluid-finance"; +export type { superfluidFinance }; +import type * as contracts from "./contracts"; +export type { contracts }; +export * as factories from "./factories"; +export type { IERC1271 } from "./@openzeppelin/contracts/interfaces/IERC1271"; +export { IERC1271__factory } from "./factories/@openzeppelin/contracts/interfaces/IERC1271__factory"; +export type { IERC20Permit } from "./@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit"; +export { IERC20Permit__factory } from "./factories/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit__factory"; +export type { IERC20 } from "./@openzeppelin/contracts/token/ERC20/IERC20"; +export { IERC20__factory } from "./factories/@openzeppelin/contracts/token/ERC20/IERC20__factory"; +export type { IERC777 } from "./@openzeppelin/contracts/token/ERC777/IERC777"; +export { IERC777__factory } from "./factories/@openzeppelin/contracts/token/ERC777/IERC777__factory"; +export type { IConstantFlowAgreementV1 } from "./@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IConstantFlowAgreementV1"; +export { IConstantFlowAgreementV1__factory } from "./factories/@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IConstantFlowAgreementV1__factory"; +export type { IInstantDistributionAgreementV1 } from "./@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IInstantDistributionAgreementV1"; +export { IInstantDistributionAgreementV1__factory } from "./factories/@superfluid-finance/ethereum-contracts/contracts/interfaces/agreements/IInstantDistributionAgreementV1__factory"; +export type { ISuperAgreement } from "./@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement"; +export { ISuperAgreement__factory } from "./factories/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperAgreement__factory"; +export type { ISuperApp } from "./@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperApp"; +export { ISuperApp__factory } from "./factories/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperApp__factory"; +export type { ISuperfluid } from "./@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid"; +export { ISuperfluid__factory } from "./factories/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluid__factory"; +export type { ISuperfluidGovernance } from "./@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance"; +export { ISuperfluidGovernance__factory } from "./factories/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidGovernance__factory"; +export type { ISuperfluidToken } from "./@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken"; +export { ISuperfluidToken__factory } from "./factories/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperfluidToken__factory"; +export type { ISuperToken } from "./@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken"; +export { ISuperToken__factory } from "./factories/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperToken__factory"; +export type { ISuperTokenFactory } from "./@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperTokenFactory"; +export { ISuperTokenFactory__factory } from "./factories/@superfluid-finance/ethereum-contracts/contracts/interfaces/superfluid/ISuperTokenFactory__factory"; +export type { ERC20WithTokenInfo } from "./@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo"; +export { ERC20WithTokenInfo__factory } from "./factories/@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/ERC20WithTokenInfo__factory"; +export type { TokenInfo } from "./@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo"; +export { TokenInfo__factory } from "./factories/@superfluid-finance/ethereum-contracts/contracts/interfaces/tokens/TokenInfo__factory"; +export type { Diamond } from "./contracts/Diamond"; +export { Diamond__factory } from "./factories/contracts/Diamond__factory"; +export type { Automate } from "./contracts/facets/core/Automate"; +export { Automate__factory } from "./factories/contracts/facets/core/Automate__factory"; +export type { Control } from "./contracts/facets/core/Control"; +export { Control__factory } from "./factories/contracts/facets/core/Control__factory"; +export type { Flow } from "./contracts/facets/core/Flow"; +export { Flow__factory } from "./factories/contracts/facets/core/Flow__factory"; +export type { Session } from "./contracts/facets/core/Session"; +export { Session__factory } from "./factories/contracts/facets/core/Session__factory"; +export type { AccessControl } from "./contracts/facets/utils/AccessControl"; +export { AccessControl__factory } from "./factories/contracts/facets/utils/AccessControl__factory"; +export type { Cut } from "./contracts/facets/utils/Cut"; +export { Cut__factory } from "./factories/contracts/facets/utils/Cut__factory"; +export type { Loupe } from "./contracts/facets/utils/Loupe"; +export { Loupe__factory } from "./factories/contracts/facets/utils/Loupe__factory"; +export type { Utility } from "./contracts/facets/utils/Utility"; +export { Utility__factory } from "./factories/contracts/facets/utils/Utility__factory"; +export type { IAutomate } from "./contracts/interfaces/core/IAutomate"; +export { IAutomate__factory } from "./factories/contracts/interfaces/core/IAutomate__factory"; +export type { IControl } from "./contracts/interfaces/core/IControl"; +export { IControl__factory } from "./factories/contracts/interfaces/core/IControl__factory"; +export type { IFlow } from "./contracts/interfaces/core/IFlow"; +export { IFlow__factory } from "./factories/contracts/interfaces/core/IFlow__factory"; +export type { ISession } from "./contracts/interfaces/core/ISession"; +export { ISession__factory } from "./factories/contracts/interfaces/core/ISession__factory"; +export type { IAccessControl } from "./contracts/interfaces/utils/IAccessControl"; +export { IAccessControl__factory } from "./factories/contracts/interfaces/utils/IAccessControl__factory"; +export type { ICut } from "./contracts/interfaces/utils/ICut"; +export { ICut__factory } from "./factories/contracts/interfaces/utils/ICut__factory"; +export type { IERC165 } from "./contracts/interfaces/utils/IERC165"; +export { IERC165__factory } from "./factories/contracts/interfaces/utils/IERC165__factory"; +export type { ILoupe } from "./contracts/interfaces/utils/ILoupe"; +export { ILoupe__factory } from "./factories/contracts/interfaces/utils/ILoupe__factory"; +export type { IUtility } from "./contracts/interfaces/utils/IUtility"; +export { IUtility__factory } from "./factories/contracts/interfaces/utils/IUtility__factory"; +export type { LibAccessControl } from "./contracts/libraries/utils/LibAccessControl"; +export { LibAccessControl__factory } from "./factories/contracts/libraries/utils/LibAccessControl__factory"; +export type { LibDiamond } from "./contracts/libraries/utils/LibDiamond"; +export { LibDiamond__factory } from "./factories/contracts/libraries/utils/LibDiamond__factory"; +export type { IOpsProxyFactory } from "./contracts/services/gelato/Types.sol/IOpsProxyFactory"; +export { IOpsProxyFactory__factory } from "./factories/contracts/services/gelato/Types.sol/IOpsProxyFactory__factory"; +export type { ITaskTreasuryUpgradable } from "./contracts/services/gelato/Types.sol/ITaskTreasuryUpgradable"; +export { ITaskTreasuryUpgradable__factory } from "./factories/contracts/services/gelato/Types.sol/ITaskTreasuryUpgradable__factory"; +export type { InitTest } from "./contracts/tests/InitTest"; +export { InitTest__factory } from "./factories/contracts/tests/InitTest__factory"; +export type { Test1Facet } from "./contracts/tests/Test1Facet"; +export { Test1Facet__factory } from "./factories/contracts/tests/Test1Facet__factory"; +export type { Test2Facet } from "./contracts/tests/Test2Facet"; +export { Test2Facet__factory } from "./factories/contracts/tests/Test2Facet__factory"; +export type { Test3Facet } from "./contracts/tests/Test3Facet"; +export { Test3Facet__factory } from "./factories/contracts/tests/Test3Facet__factory"; +export type { Test3Facet2 } from "./contracts/tests/Test3Facet2"; +export { Test3Facet2__factory } from "./factories/contracts/tests/Test3Facet2__factory"; +export type { Test4Facet } from "./contracts/tests/Test4Facet"; +export { Test4Facet__factory } from "./factories/contracts/tests/Test4Facet__factory"; +export type { Test5Facet } from "./contracts/tests/Test5Facet"; +export { Test5Facet__factory } from "./factories/contracts/tests/Test5Facet__factory"; +export type { DiamondInit } from "./contracts/upgrades/DiamondInit"; +export { DiamondInit__factory } from "./factories/contracts/upgrades/DiamondInit__factory"; diff --git a/contracts/utils/common.ts b/contracts/utils/common.ts new file mode 100644 index 0000000..f95ce4a --- /dev/null +++ b/contracts/utils/common.ts @@ -0,0 +1,64 @@ +export const CONTRACT_PARENT_FOLDER = "livethree-contracts"; +export const ZERO_BYTES = "0x"; + +export const ADDR_GEL_OPS_PROXY_FACTORY = + "0xC815dB16D4be6ddf2685C201937905aBf338F5D7"; +export const ADDR_GEL_FEE = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"; + +export const networkConfig = { + default: { + name: "hardhat", + }, + 31337: { + name: "localhost", + addrUSDC: "0xbe49ac1EadAc65dccf204D4Df81d650B50122aB2", + addrUSDCx: "0x42bb40bF79730451B11f6De1CbA222F17b87Afd7", // using mumbai data + addrDAI: "0x15F0Ca26781C3852f8166eD2ebce5D18265cceb7", // using mumbai data + addrDAIx: "0x5D8B4C2554aeB7e86F387B4d6c00Ac33499Ed01f", // using mumbai data + addrSFHost: "0xEB796bdb90fFA0f28255275e16936D25d3418603", // using mumbai data + addrCFAV1: "0x49e565Ed1bdc17F3d220f72DF0857C26FA83F873", // using mumbai data + addrGelNet: "0x25aD59adbe00C2d80c86d01e2E05e1294DA84823", // using mumbai data + addrGelAutobot: "0xB3f5503f93d5Ef84b06993a1975B9D21B962892F", // using mumbai data + addrGelTreasury: "0x527a819db1eb0e34426297b03bae11F2f8B3A19E", // using mumbai data + }, + 1: { + name: "mainnet", + }, + 5: { + name: "goerli", + }, + 137: { + name: "polygon", + addrUSDC: "0x2791bca1f2de4661ed88a30c99a7a9449aa84174", + addrUSDCx: "0xCAa7349CEA390F89641fe306D93591f87595dc1F", + addrDAI: "0x8f3cf7ad23cd3cadbd9735aff958023239c6a063", // using mumbai data + addrDAIx: "0x1305F6B6Df9Dc47159D12Eb7aC2804d4A33173c2", + addrSFHost: "0x3E14dC1b13c488a8d5D310918780c983bD5982E7", + addrCFAV1: "0x6EeE6060f715257b970700bc2656De21dEdF074C", + addrGelNet: "0x7598e84B2E114AB62CAB288CE5f7d5f6bad35BbA", + addrGelAutobot: "0x527a819db1eb0e34426297b03bae11F2f8B3A19E", + addrGelTreasury: "0x32DC6700AC87f6300277a63b0A4fDf132A8392bd", + }, + 80001: { + name: "mumbai", + addrUSDC: "0xbe49ac1EadAc65dccf204D4Df81d650B50122aB2", + addrUSDCx: "0x42bb40bF79730451B11f6De1CbA222F17b87Afd7", + addrDAI: "0x15F0Ca26781C3852f8166eD2ebce5D18265cceb7", // using mumbai data + addrDAIx: "0x5D8B4C2554aeB7e86F387B4d6c00Ac33499Ed01f", + addrSFHost: "0xEB796bdb90fFA0f28255275e16936D25d3418603", + addrCFAV1: "0x49e565Ed1bdc17F3d220f72DF0857C26FA83F873", + addrGelNet: "0x25aD59adbe00C2d80c86d01e2E05e1294DA84823", + addrGelAutobot: "0xB3f5503f93d5Ef84b06993a1975B9D21B962892F", + addrGelTreasury: "0x527a819db1eb0e34426297b03bae11F2f8B3A19E", + }, +} as any; + +module.exports = { + CONTRACT_PARENT_FOLDER, + // CURRENT_DEPLOYED_FOLDER, + // CURRENT_DEPLOYED_FOLDER_DIR, + ADDR_GEL_OPS_PROXY_FACTORY, + ADDR_GEL_FEE, + ZERO_BYTES, + networkConfig, +}; diff --git a/contracts/utils/diamond.js b/contracts/utils/diamond.js new file mode 100644 index 0000000..3dcc992 --- /dev/null +++ b/contracts/utils/diamond.js @@ -0,0 +1,82 @@ +const FacetCutAction = { Add: 0, Replace: 1, Remove: 2 }; + +// get function selectors from ABI +function getSelectors(contract) { + const signatures = Object.keys(contract.interface.functions); + const selectors = signatures.reduce((acc, val) => { + if (val !== "init(bytes)") { + acc.push(contract.interface.getSighash(val)); + } + return acc; + }, []); + selectors.contract = contract; + selectors.remove = remove; + selectors.get = get; + return selectors; +} + +// get function selector from function signature +function getSelector(func) { + const abiInterface = new ethers.utils.Interface([func]); + return abiInterface.getSighash(ethers.utils.Fragment.from(func)); +} + +// used with getSelectors to remove selectors from an array of selectors +// functionNames argument is an array of function signatures +function remove(functionNames) { + const selectors = this.filter((v) => { + for (const functionName of functionNames) { + if (v === this.contract.interface.getSighash(functionName)) { + return false; + } + } + return true; + }); + selectors.contract = this.contract; + selectors.remove = this.remove; + selectors.get = this.get; + return selectors; +} + +// used with getSelectors to get selectors from an array of selectors +// functionNames argument is an array of function signatures +function get(functionNames) { + const selectors = this.filter((v) => { + for (const functionName of functionNames) { + if (v === this.contract.interface.getSighash(functionName)) { + return true; + } + } + return false; + }); + selectors.contract = this.contract; + selectors.remove = this.remove; + selectors.get = this.get; + return selectors; +} + +// remove selectors using an array of signatures +function removeSelectors(selectors, signatures) { + const iface = new ethers.utils.Interface( + signatures.map((v) => "function " + v) + ); + const removeSelectors = signatures.map((v) => iface.getSighash(v)); + selectors = selectors.filter((v) => !removeSelectors.includes(v)); + return selectors; +} +// [ '0x7a0ed627', '0xbda30dec' ] +// find a particular address position in the return value of diamondLoupeFacet.facets() +function findAddressPositionInFacets(facetAddress, facets) { + for (let i = 0; i < facets.length; i++) { + if (facets[i].facetAddress === facetAddress) { + return i; + } + } +} + +exports.getSelectors = getSelectors; +exports.getSelector = getSelector; +exports.FacetCutAction = FacetCutAction; +exports.remove = remove; +exports.removeSelectors = removeSelectors; +exports.findAddressPositionInFacets = findAddressPositionInFacets; diff --git a/contracts/yarn.lock b/contracts/yarn.lock new file mode 100644 index 0000000..3b0f2c0 --- /dev/null +++ b/contracts/yarn.lock @@ -0,0 +1,7698 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/runtime@^7.4.4": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.0.tgz#5b55c9d394e5fcf304909a8b00c07dc217b56673" + integrity sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw== + dependencies: + regenerator-runtime "^0.13.11" + +"@chainsafe/as-sha256@^0.3.1": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@chainsafe/as-sha256/-/as-sha256-0.3.1.tgz#3639df0e1435cab03f4d9870cc3ac079e57a6fc9" + integrity sha512-hldFFYuf49ed7DAakWVXSJODuq3pzJEguD8tQ7h+sGkM18vja+OFoJI9krnGmgzyuZC2ETX0NOIcCTy31v2Mtg== + +"@chainsafe/persistent-merkle-tree@^0.4.2": + version "0.4.2" + resolved "https://registry.yarnpkg.com/@chainsafe/persistent-merkle-tree/-/persistent-merkle-tree-0.4.2.tgz#4c9ee80cc57cd3be7208d98c40014ad38f36f7ff" + integrity sha512-lLO3ihKPngXLTus/L7WHKaw9PnNJWizlOF1H9NNzHP6Xvh82vzg9F2bzkXhYIFshMZ2gTCEz8tq6STe7r5NDfQ== + dependencies: + "@chainsafe/as-sha256" "^0.3.1" + +"@chainsafe/persistent-merkle-tree@^0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@chainsafe/persistent-merkle-tree/-/persistent-merkle-tree-0.5.0.tgz#2b4a62c9489a5739dedd197250d8d2f5427e9f63" + integrity sha512-l0V1b5clxA3iwQLXP40zYjyZYospQLZXzBVIhhr9kDg/1qHZfzzHw0jj4VPBijfYCArZDlPkRi1wZaV2POKeuw== + dependencies: + "@chainsafe/as-sha256" "^0.3.1" + +"@chainsafe/ssz@^0.10.0": + version "0.10.2" + resolved "https://registry.yarnpkg.com/@chainsafe/ssz/-/ssz-0.10.2.tgz#c782929e1bb25fec66ba72e75934b31fd087579e" + integrity sha512-/NL3Lh8K+0q7A3LsiFq09YXS9fPE+ead2rr7vM2QK8PLzrNsw3uqrif9bpRX5UxgeRjM+vYi+boCM3+GM4ovXg== + dependencies: + "@chainsafe/as-sha256" "^0.3.1" + "@chainsafe/persistent-merkle-tree" "^0.5.0" + +"@chainsafe/ssz@^0.9.2": + version "0.9.4" + resolved "https://registry.yarnpkg.com/@chainsafe/ssz/-/ssz-0.9.4.tgz#696a8db46d6975b600f8309ad3a12f7c0e310497" + integrity sha512-77Qtg2N1ayqs4Bg/wvnWfg5Bta7iy7IRh8XqXh7oNMeP2HBbBwx8m6yTpA8p0EHItWPEBkgZd5S5/LSlp3GXuQ== + dependencies: + "@chainsafe/as-sha256" "^0.3.1" + "@chainsafe/persistent-merkle-tree" "^0.4.2" + case "^1.6.3" + +"@cspotcode/source-map-support@^0.8.0": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" + integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== + dependencies: + "@jridgewell/trace-mapping" "0.3.9" + +"@decentral.ee/web3-helpers@0.5.3": + version "0.5.3" + resolved "https://registry.yarnpkg.com/@decentral.ee/web3-helpers/-/web3-helpers-0.5.3.tgz#710aa9e90b186c5f7267150c4c5f3894fb52a2b4" + integrity sha512-6ZS2zpAUdWXhyZ8U7A4HzianIk3v5n051+QEezNdF3uOI7hJ7ty/MjNhxL3QqfiR+4cxKEz20UiAyZkU6/e2jA== + dependencies: + web3-utils "^1.3.4" + +"@ensdomains/address-encoder@^0.1.7": + version "0.1.9" + resolved "https://registry.yarnpkg.com/@ensdomains/address-encoder/-/address-encoder-0.1.9.tgz#f948c485443d9ef7ed2c0c4790e931c33334d02d" + integrity sha512-E2d2gP4uxJQnDu2Kfg1tHNspefzbLT8Tyjrm5sEuim32UkU2sm5xL4VXtgc2X33fmPEw9+jUMpGs4veMbf+PYg== + dependencies: + bech32 "^1.1.3" + blakejs "^1.1.0" + bn.js "^4.11.8" + bs58 "^4.0.1" + crypto-addr-codec "^0.1.7" + nano-base32 "^1.0.1" + ripemd160 "^2.0.2" + +"@ensdomains/ens@0.4.5": + version "0.4.5" + resolved "https://registry.yarnpkg.com/@ensdomains/ens/-/ens-0.4.5.tgz#e0aebc005afdc066447c6e22feb4eda89a5edbfc" + integrity sha512-JSvpj1iNMFjK6K+uVl4unqMoa9rf5jopb8cya5UGBWz23Nw8hSNT7efgUx4BTlAPAgpNlEioUfeTyQ6J9ZvTVw== + dependencies: + bluebird "^3.5.2" + eth-ens-namehash "^2.0.8" + solc "^0.4.20" + testrpc "0.0.1" + web3-utils "^1.0.0-beta.31" + +"@ensdomains/ensjs@^2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@ensdomains/ensjs/-/ensjs-2.1.0.tgz#0a7296c1f3d735ef019320d863a7846a0760c460" + integrity sha512-GRbGPT8Z/OJMDuxs75U/jUNEC0tbL0aj7/L/QQznGYKm/tiasp+ndLOaoULy9kKJFC0TBByqfFliEHDgoLhyog== + dependencies: + "@babel/runtime" "^7.4.4" + "@ensdomains/address-encoder" "^0.1.7" + "@ensdomains/ens" "0.4.5" + "@ensdomains/resolver" "0.2.4" + content-hash "^2.5.2" + eth-ens-namehash "^2.0.8" + ethers "^5.0.13" + js-sha3 "^0.8.0" + +"@ensdomains/resolver@0.2.4": + version "0.2.4" + resolved "https://registry.yarnpkg.com/@ensdomains/resolver/-/resolver-0.2.4.tgz#c10fe28bf5efbf49bff4666d909aed0265efbc89" + integrity sha512-bvaTH34PMCbv6anRa9I/0zjLJgY4EuznbEMgbV77JBCQ9KNC46rzi0avuxpOfu+xDjPEtSFGqVEOr5GlUSGudA== + +"@ethereumjs/common@2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-2.5.0.tgz#ec61551b31bef7a69d1dc634d8932468866a4268" + integrity sha512-DEHjW6e38o+JmB/NO3GZBpW4lpaiBpkFgXF6jLcJ6gETBYpEyaA5nTimsWBUJR3Vmtm/didUEbNjajskugZORg== + dependencies: + crc-32 "^1.2.0" + ethereumjs-util "^7.1.1" + +"@ethereumjs/common@^2.5.0", "@ethereumjs/common@^2.6.4": + version "2.6.5" + resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-2.6.5.tgz#0a75a22a046272579d91919cb12d84f2756e8d30" + integrity sha512-lRyVQOeCDaIVtgfbowla32pzeDv2Obr8oR8Put5RdUBNRGr1VGPGQNGP6elWIpgK3YdpzqTOh4GyUGOureVeeA== + dependencies: + crc-32 "^1.2.0" + ethereumjs-util "^7.1.5" + +"@ethereumjs/tx@3.3.2": + version "3.3.2" + resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-3.3.2.tgz#348d4624bf248aaab6c44fec2ae67265efe3db00" + integrity sha512-6AaJhwg4ucmwTvw/1qLaZUX5miWrwZ4nLOUsKyb/HtzS3BMw/CasKhdi1ims9mBKeK9sOJCH4qGKOBGyJCeeog== + dependencies: + "@ethereumjs/common" "^2.5.0" + ethereumjs-util "^7.1.2" + +"@ethereumjs/tx@^3.3.2": + version "3.5.2" + resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-3.5.2.tgz#197b9b6299582ad84f9527ca961466fce2296c1c" + integrity sha512-gQDNJWKrSDGu2w7w0PzVXVBNMzb7wwdDOmOqczmhNjqFxFuIbhVJDwiGEnxFNC2/b8ifcZzY7MLcluizohRzNw== + dependencies: + "@ethereumjs/common" "^2.6.4" + ethereumjs-util "^7.1.5" + +"@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.0.0-beta.146", "@ethersproject/abi@^5.0.9", "@ethersproject/abi@^5.1.2", "@ethersproject/abi@^5.4.7", "@ethersproject/abi@^5.6.3", "@ethersproject/abi@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.7.0.tgz#b3f3e045bbbeed1af3947335c247ad625a44e449" + integrity sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/abstract-provider@5.7.0", "@ethersproject/abstract-provider@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz#b0a8550f88b6bf9d51f90e4795d48294630cb9ef" + integrity sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/networks" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/web" "^5.7.0" + +"@ethersproject/abstract-signer@5.7.0", "@ethersproject/abstract-signer@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz#13f4f32117868452191a4649723cb086d2b596b2" + integrity sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + +"@ethersproject/address@5.7.0", "@ethersproject/address@^5.0.2", "@ethersproject/address@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.7.0.tgz#19b56c4d74a3b0a46bfdbb6cfcc0a153fc697f37" + integrity sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + +"@ethersproject/base64@5.7.0", "@ethersproject/base64@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.7.0.tgz#ac4ee92aa36c1628173e221d0d01f53692059e1c" + integrity sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ== + dependencies: + "@ethersproject/bytes" "^5.7.0" + +"@ethersproject/basex@5.7.0", "@ethersproject/basex@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.7.0.tgz#97034dc7e8938a8ca943ab20f8a5e492ece4020b" + integrity sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + +"@ethersproject/bignumber@5.7.0", "@ethersproject/bignumber@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.7.0.tgz#e2f03837f268ba655ffba03a57853e18a18dc9c2" + integrity sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + bn.js "^5.2.1" + +"@ethersproject/bytes@5.7.0", "@ethersproject/bytes@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.7.0.tgz#a00f6ea8d7e7534d6d87f47188af1148d71f155d" + integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/constants@5.7.0", "@ethersproject/constants@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.7.0.tgz#df80a9705a7e08984161f09014ea012d1c75295e" + integrity sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + +"@ethersproject/contracts@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.7.0.tgz#c305e775abd07e48aa590e1a877ed5c316f8bd1e" + integrity sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg== + dependencies: + "@ethersproject/abi" "^5.7.0" + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + +"@ethersproject/hash@5.7.0", "@ethersproject/hash@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.7.0.tgz#eb7aca84a588508369562e16e514b539ba5240a7" + integrity sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/hdnode@5.7.0", "@ethersproject/hdnode@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.7.0.tgz#e627ddc6b466bc77aebf1a6b9e47405ca5aef9cf" + integrity sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/basex" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/pbkdf2" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/wordlists" "^5.7.0" + +"@ethersproject/json-wallets@5.7.0", "@ethersproject/json-wallets@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz#5e3355287b548c32b368d91014919ebebddd5360" + integrity sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hdnode" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/pbkdf2" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + aes-js "3.0.0" + scrypt-js "3.0.1" + +"@ethersproject/keccak256@5.7.0", "@ethersproject/keccak256@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.7.0.tgz#3186350c6e1cd6aba7940384ec7d6d9db01f335a" + integrity sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg== + dependencies: + "@ethersproject/bytes" "^5.7.0" + js-sha3 "0.8.0" + +"@ethersproject/logger@5.7.0", "@ethersproject/logger@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.7.0.tgz#6ce9ae168e74fecf287be17062b590852c311892" + integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig== + +"@ethersproject/networks@5.7.1", "@ethersproject/networks@^5.7.0": + version "5.7.1" + resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.7.1.tgz#118e1a981d757d45ccea6bb58d9fd3d9db14ead6" + integrity sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/pbkdf2@5.7.0", "@ethersproject/pbkdf2@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz#d2267d0a1f6e123f3771007338c47cccd83d3102" + integrity sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + +"@ethersproject/properties@5.7.0", "@ethersproject/properties@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.7.0.tgz#a6e12cb0439b878aaf470f1902a176033067ed30" + integrity sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/providers@5.7.2", "@ethersproject/providers@^5.4.7", "@ethersproject/providers@^5.7.1", "@ethersproject/providers@^5.7.2": + version "5.7.2" + resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.7.2.tgz#f8b1a4f275d7ce58cf0a2eec222269a08beb18cb" + integrity sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/basex" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/networks" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/web" "^5.7.0" + bech32 "1.1.4" + ws "7.4.6" + +"@ethersproject/random@5.7.0", "@ethersproject/random@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.7.0.tgz#af19dcbc2484aae078bb03656ec05df66253280c" + integrity sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/rlp@5.7.0", "@ethersproject/rlp@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.7.0.tgz#de39e4d5918b9d74d46de93af80b7685a9c21304" + integrity sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/sha2@5.7.0", "@ethersproject/sha2@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.7.0.tgz#9a5f7a7824ef784f7f7680984e593a800480c9fb" + integrity sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + hash.js "1.1.7" + +"@ethersproject/signing-key@5.7.0", "@ethersproject/signing-key@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.7.0.tgz#06b2df39411b00bc57c7c09b01d1e41cf1b16ab3" + integrity sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + bn.js "^5.2.1" + elliptic "6.5.4" + hash.js "1.1.7" + +"@ethersproject/solidity@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.7.0.tgz#5e9c911d8a2acce2a5ebb48a5e2e0af20b631cb8" + integrity sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/strings@5.7.0", "@ethersproject/strings@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.7.0.tgz#54c9d2a7c57ae8f1205c88a9d3a56471e14d5ed2" + integrity sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/transactions@5.7.0", "@ethersproject/transactions@^5.6.2", "@ethersproject/transactions@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.7.0.tgz#91318fc24063e057885a6af13fdb703e1f993d3b" + integrity sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + +"@ethersproject/units@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.7.0.tgz#637b563d7e14f42deeee39245275d477aae1d8b1" + integrity sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/wallet@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.7.0.tgz#4e5d0790d96fe21d61d38fb40324e6c7ef350b2d" + integrity sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/hdnode" "^5.7.0" + "@ethersproject/json-wallets" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/wordlists" "^5.7.0" + +"@ethersproject/web@5.7.1", "@ethersproject/web@^5.7.0": + version "5.7.1" + resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.7.1.tgz#de1f285b373149bee5928f4eb7bcb87ee5fbb4ae" + integrity sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w== + dependencies: + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/wordlists@5.7.0", "@ethersproject/wordlists@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.7.0.tgz#8fb2c07185d68c3e09eb3bfd6e779ba2774627f5" + integrity sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@jridgewell/resolve-uri@^3.0.3": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" + integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.15" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@jridgewell/trace-mapping@0.3.9": + version "0.3.9" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@metamask/eth-sig-util@^4.0.0": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz#3ad61f6ea9ad73ba5b19db780d40d9aae5157088" + integrity sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ== + dependencies: + ethereumjs-abi "^0.6.8" + ethereumjs-util "^6.2.1" + ethjs-util "^0.1.6" + tweetnacl "^1.0.3" + tweetnacl-util "^0.15.1" + +"@morgan-stanley/ts-mocking-bird@^0.6.2": + version "0.6.4" + resolved "https://registry.yarnpkg.com/@morgan-stanley/ts-mocking-bird/-/ts-mocking-bird-0.6.4.tgz#2e4b60d42957bab3b50b67dbf14c3da2f62a39f7" + integrity sha512-57VJIflP8eR2xXa9cD1LUawh+Gh+BVQfVu0n6GALyg/AqV/Nz25kDRvws3i9kIe1PTrbsZZOYpsYp6bXPd6nVA== + dependencies: + lodash "^4.17.16" + uuid "^7.0.3" + +"@noble/hashes@1.2.0", "@noble/hashes@~1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.2.0.tgz#a3150eeb09cc7ab207ebf6d7b9ad311a9bdbed12" + integrity sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ== + +"@noble/secp256k1@1.7.1", "@noble/secp256k1@~1.7.0": + version "1.7.1" + resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.7.1.tgz#b251c70f824ce3ca7f8dc3df08d58f005cc0507c" + integrity sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw== + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@nomicfoundation/ethereumjs-block@5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-block/-/ethereumjs-block-5.0.1.tgz#6f89664f55febbd723195b6d0974773d29ee133d" + integrity sha512-u1Yioemi6Ckj3xspygu/SfFvm8vZEO8/Yx5a1QLzi6nVU0jz3Pg2OmHKJ5w+D9Ogk1vhwRiqEBAqcb0GVhCyHw== + dependencies: + "@nomicfoundation/ethereumjs-common" "4.0.1" + "@nomicfoundation/ethereumjs-rlp" "5.0.1" + "@nomicfoundation/ethereumjs-trie" "6.0.1" + "@nomicfoundation/ethereumjs-tx" "5.0.1" + "@nomicfoundation/ethereumjs-util" "9.0.1" + ethereum-cryptography "0.1.3" + ethers "^5.7.1" + +"@nomicfoundation/ethereumjs-blockchain@7.0.1": + version "7.0.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-blockchain/-/ethereumjs-blockchain-7.0.1.tgz#80e0bd3535bfeb9baa29836b6f25123dab06a726" + integrity sha512-NhzndlGg829XXbqJEYrF1VeZhAwSPgsK/OB7TVrdzft3y918hW5KNd7gIZ85sn6peDZOdjBsAXIpXZ38oBYE5A== + dependencies: + "@nomicfoundation/ethereumjs-block" "5.0.1" + "@nomicfoundation/ethereumjs-common" "4.0.1" + "@nomicfoundation/ethereumjs-ethash" "3.0.1" + "@nomicfoundation/ethereumjs-rlp" "5.0.1" + "@nomicfoundation/ethereumjs-trie" "6.0.1" + "@nomicfoundation/ethereumjs-tx" "5.0.1" + "@nomicfoundation/ethereumjs-util" "9.0.1" + abstract-level "^1.0.3" + debug "^4.3.3" + ethereum-cryptography "0.1.3" + level "^8.0.0" + lru-cache "^5.1.1" + memory-level "^1.0.0" + +"@nomicfoundation/ethereumjs-common@4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-4.0.1.tgz#4702d82df35b07b5407583b54a45bf728e46a2f0" + integrity sha512-OBErlkfp54GpeiE06brBW/TTbtbuBJV5YI5Nz/aB2evTDo+KawyEzPjBlSr84z/8MFfj8wS2wxzQX1o32cev5g== + dependencies: + "@nomicfoundation/ethereumjs-util" "9.0.1" + crc-32 "^1.2.0" + +"@nomicfoundation/ethereumjs-ethash@3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-ethash/-/ethereumjs-ethash-3.0.1.tgz#65ca494d53e71e8415c9a49ef48bc921c538fc41" + integrity sha512-KDjGIB5igzWOp8Ik5I6QiRH5DH+XgILlplsHR7TEuWANZA759G6krQ6o8bvj+tRUz08YygMQu/sGd9mJ1DYT8w== + dependencies: + "@nomicfoundation/ethereumjs-block" "5.0.1" + "@nomicfoundation/ethereumjs-rlp" "5.0.1" + "@nomicfoundation/ethereumjs-util" "9.0.1" + abstract-level "^1.0.3" + bigint-crypto-utils "^3.0.23" + ethereum-cryptography "0.1.3" + +"@nomicfoundation/ethereumjs-evm@2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-evm/-/ethereumjs-evm-2.0.1.tgz#f35681e203363f69ce2b3d3bf9f44d4e883ca1f1" + integrity sha512-oL8vJcnk0Bx/onl+TgQOQ1t/534GKFaEG17fZmwtPFeH8S5soiBYPCLUrvANOl4sCp9elYxIMzIiTtMtNNN8EQ== + dependencies: + "@ethersproject/providers" "^5.7.1" + "@nomicfoundation/ethereumjs-common" "4.0.1" + "@nomicfoundation/ethereumjs-tx" "5.0.1" + "@nomicfoundation/ethereumjs-util" "9.0.1" + debug "^4.3.3" + ethereum-cryptography "0.1.3" + mcl-wasm "^0.7.1" + rustbn.js "~0.2.0" + +"@nomicfoundation/ethereumjs-rlp@5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-5.0.1.tgz#0b30c1cf77d125d390408e391c4bb5291ef43c28" + integrity sha512-xtxrMGa8kP4zF5ApBQBtjlSbN5E2HI8m8FYgVSYAnO6ssUoY5pVPGy2H8+xdf/bmMa22Ce8nWMH3aEW8CcqMeQ== + +"@nomicfoundation/ethereumjs-statemanager@2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-statemanager/-/ethereumjs-statemanager-2.0.1.tgz#8824a97938db4471911e2d2f140f79195def5935" + integrity sha512-B5ApMOnlruVOR7gisBaYwFX+L/AP7i/2oAahatssjPIBVDF6wTX1K7Qpa39E/nzsH8iYuL3krkYeUFIdO3EMUQ== + dependencies: + "@nomicfoundation/ethereumjs-common" "4.0.1" + "@nomicfoundation/ethereumjs-rlp" "5.0.1" + debug "^4.3.3" + ethereum-cryptography "0.1.3" + ethers "^5.7.1" + js-sdsl "^4.1.4" + +"@nomicfoundation/ethereumjs-trie@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-trie/-/ethereumjs-trie-6.0.1.tgz#662c55f6b50659fd4b22ea9f806a7401cafb7717" + integrity sha512-A64It/IMpDVODzCgxDgAAla8jNjNtsoQZIzZUfIV5AY6Coi4nvn7+VReBn5itlxMiL2yaTlQr9TRWp3CSI6VoA== + dependencies: + "@nomicfoundation/ethereumjs-rlp" "5.0.1" + "@nomicfoundation/ethereumjs-util" "9.0.1" + "@types/readable-stream" "^2.3.13" + ethereum-cryptography "0.1.3" + readable-stream "^3.6.0" + +"@nomicfoundation/ethereumjs-tx@5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-5.0.1.tgz#7629dc2036b4a33c34e9f0a592b43227ef4f0c7d" + integrity sha512-0HwxUF2u2hrsIM1fsasjXvlbDOq1ZHFV2dd1yGq8CA+MEYhaxZr8OTScpVkkxqMwBcc5y83FyPl0J9MZn3kY0w== + dependencies: + "@chainsafe/ssz" "^0.9.2" + "@ethersproject/providers" "^5.7.2" + "@nomicfoundation/ethereumjs-common" "4.0.1" + "@nomicfoundation/ethereumjs-rlp" "5.0.1" + "@nomicfoundation/ethereumjs-util" "9.0.1" + ethereum-cryptography "0.1.3" + +"@nomicfoundation/ethereumjs-util@9.0.1": + version "9.0.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-9.0.1.tgz#530cda8bae33f8b5020a8f199ed1d0a2ce48ec89" + integrity sha512-TwbhOWQ8QoSCFhV/DDfSmyfFIHjPjFBj957219+V3jTZYZ2rf9PmDtNOeZWAE3p3vlp8xb02XGpd0v6nTUPbsA== + dependencies: + "@chainsafe/ssz" "^0.10.0" + "@nomicfoundation/ethereumjs-rlp" "5.0.1" + ethereum-cryptography "0.1.3" + +"@nomicfoundation/ethereumjs-vm@7.0.1": + version "7.0.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-vm/-/ethereumjs-vm-7.0.1.tgz#7d035e0993bcad10716c8b36e61dfb87fa3ca05f" + integrity sha512-rArhyn0jPsS/D+ApFsz3yVJMQ29+pVzNZ0VJgkzAZ+7FqXSRtThl1C1prhmlVr3YNUlfpZ69Ak+RUT4g7VoOuQ== + dependencies: + "@nomicfoundation/ethereumjs-block" "5.0.1" + "@nomicfoundation/ethereumjs-blockchain" "7.0.1" + "@nomicfoundation/ethereumjs-common" "4.0.1" + "@nomicfoundation/ethereumjs-evm" "2.0.1" + "@nomicfoundation/ethereumjs-rlp" "5.0.1" + "@nomicfoundation/ethereumjs-statemanager" "2.0.1" + "@nomicfoundation/ethereumjs-trie" "6.0.1" + "@nomicfoundation/ethereumjs-tx" "5.0.1" + "@nomicfoundation/ethereumjs-util" "9.0.1" + debug "^4.3.3" + ethereum-cryptography "0.1.3" + mcl-wasm "^0.7.1" + rustbn.js "~0.2.0" + +"@nomicfoundation/hardhat-chai-matchers@^1.0.0": + version "1.0.6" + resolved "https://registry.yarnpkg.com/@nomicfoundation/hardhat-chai-matchers/-/hardhat-chai-matchers-1.0.6.tgz#72a2e312e1504ee5dd73fe302932736432ba96bc" + integrity sha512-f5ZMNmabZeZegEfuxn/0kW+mm7+yV7VNDxLpMOMGXWFJ2l/Ct3QShujzDRF9cOkK9Ui/hbDeOWGZqyQALDXVCQ== + dependencies: + "@ethersproject/abi" "^5.1.2" + "@types/chai-as-promised" "^7.1.3" + chai-as-promised "^7.1.1" + deep-eql "^4.0.1" + ordinal "^1.0.3" + +"@nomicfoundation/hardhat-network-helpers@^1.0.0": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@nomicfoundation/hardhat-network-helpers/-/hardhat-network-helpers-1.0.8.tgz#e4fe1be93e8a65508c46d73c41fa26c7e9f84931" + integrity sha512-MNqQbzUJZnCMIYvlniC3U+kcavz/PhhQSsY90tbEtUyMj/IQqsLwIRZa4ctjABh3Bz0KCh9OXUZ7Yk/d9hr45Q== + dependencies: + ethereumjs-util "^7.1.4" + +"@nomicfoundation/hardhat-toolbox@^2.0.0": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/hardhat-toolbox/-/hardhat-toolbox-2.0.2.tgz#ec95f23b53cb4e71a1a7091380fa223aad18f156" + integrity sha512-vnN1AzxbvpSx9pfdRHbUzTRIXpMLPXnUlkW855VaDk6N1pwRaQ2gNzEmFAABk4lWf11E00PKwFd/q27HuwYrYg== + +"@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-darwin-arm64/-/solidity-analyzer-darwin-arm64-0.1.1.tgz#4c858096b1c17fe58a474fe81b46815f93645c15" + integrity sha512-KcTodaQw8ivDZyF+D76FokN/HdpgGpfjc/gFCImdLUyqB6eSWVaZPazMbeAjmfhx3R0zm/NYVzxwAokFKgrc0w== + +"@nomicfoundation/solidity-analyzer-darwin-x64@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-darwin-x64/-/solidity-analyzer-darwin-x64-0.1.1.tgz#6e25ccdf6e2d22389c35553b64fe6f3fdaec432c" + integrity sha512-XhQG4BaJE6cIbjAVtzGOGbK3sn1BO9W29uhk9J8y8fZF1DYz0Doj8QDMfpMu+A6TjPDs61lbsmeYodIDnfveSA== + +"@nomicfoundation/solidity-analyzer-freebsd-x64@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-freebsd-x64/-/solidity-analyzer-freebsd-x64-0.1.1.tgz#0a224ea50317139caeebcdedd435c28a039d169c" + integrity sha512-GHF1VKRdHW3G8CndkwdaeLkVBi5A9u2jwtlS7SLhBc8b5U/GcoL39Q+1CSO3hYqePNP+eV5YI7Zgm0ea6kMHoA== + +"@nomicfoundation/solidity-analyzer-linux-arm64-gnu@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-arm64-gnu/-/solidity-analyzer-linux-arm64-gnu-0.1.1.tgz#dfa085d9ffab9efb2e7b383aed3f557f7687ac2b" + integrity sha512-g4Cv2fO37ZsUENQ2vwPnZc2zRenHyAxHcyBjKcjaSmmkKrFr64yvzeNO8S3GBFCo90rfochLs99wFVGT/0owpg== + +"@nomicfoundation/solidity-analyzer-linux-arm64-musl@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-arm64-musl/-/solidity-analyzer-linux-arm64-musl-0.1.1.tgz#c9e06b5d513dd3ab02a7ac069c160051675889a4" + integrity sha512-WJ3CE5Oek25OGE3WwzK7oaopY8xMw9Lhb0mlYuJl/maZVo+WtP36XoQTb7bW/i8aAdHW5Z+BqrHMux23pvxG3w== + +"@nomicfoundation/solidity-analyzer-linux-x64-gnu@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-x64-gnu/-/solidity-analyzer-linux-x64-gnu-0.1.1.tgz#8d328d16839e52571f72f2998c81e46bf320f893" + integrity sha512-5WN7leSr5fkUBBjE4f3wKENUy9HQStu7HmWqbtknfXkkil+eNWiBV275IOlpXku7v3uLsXTOKpnnGHJYI2qsdA== + +"@nomicfoundation/solidity-analyzer-linux-x64-musl@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-x64-musl/-/solidity-analyzer-linux-x64-musl-0.1.1.tgz#9b49d0634b5976bb5ed1604a1e1b736f390959bb" + integrity sha512-KdYMkJOq0SYPQMmErv/63CwGwMm5XHenEna9X9aB8mQmhDBrYrlAOSsIPgFCUSL0hjxE3xHP65/EPXR/InD2+w== + +"@nomicfoundation/solidity-analyzer-win32-arm64-msvc@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-win32-arm64-msvc/-/solidity-analyzer-win32-arm64-msvc-0.1.1.tgz#e2867af7264ebbcc3131ef837878955dd6a3676f" + integrity sha512-VFZASBfl4qiBYwW5xeY20exWhmv6ww9sWu/krWSesv3q5hA0o1JuzmPHR4LPN6SUZj5vcqci0O6JOL8BPw+APg== + +"@nomicfoundation/solidity-analyzer-win32-ia32-msvc@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-win32-ia32-msvc/-/solidity-analyzer-win32-ia32-msvc-0.1.1.tgz#0685f78608dd516c8cdfb4896ed451317e559585" + integrity sha512-JnFkYuyCSA70j6Si6cS1A9Gh1aHTEb8kOTBApp/c7NRTFGNMH8eaInKlyuuiIbvYFhlXW4LicqyYuWNNq9hkpQ== + +"@nomicfoundation/solidity-analyzer-win32-x64-msvc@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-win32-x64-msvc/-/solidity-analyzer-win32-x64-msvc-0.1.1.tgz#c9a44f7108646f083b82e851486e0f6aeb785836" + integrity sha512-HrVJr6+WjIXGnw3Q9u6KQcbZCtk0caVWhCdFADySvRyUxJ8PnzlaP+MhwNE8oyT8OZ6ejHBRrrgjSqDCFXGirw== + +"@nomicfoundation/solidity-analyzer@^0.1.0": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.1.1.tgz#f5f4d36d3f66752f59a57e7208cd856f3ddf6f2d" + integrity sha512-1LMtXj1puAxyFusBgUIy5pZk3073cNXYnXUpuNKFghHbIit/xZgbk0AokpUADbNm3gyD6bFWl3LRFh3dhVdREg== + optionalDependencies: + "@nomicfoundation/solidity-analyzer-darwin-arm64" "0.1.1" + "@nomicfoundation/solidity-analyzer-darwin-x64" "0.1.1" + "@nomicfoundation/solidity-analyzer-freebsd-x64" "0.1.1" + "@nomicfoundation/solidity-analyzer-linux-arm64-gnu" "0.1.1" + "@nomicfoundation/solidity-analyzer-linux-arm64-musl" "0.1.1" + "@nomicfoundation/solidity-analyzer-linux-x64-gnu" "0.1.1" + "@nomicfoundation/solidity-analyzer-linux-x64-musl" "0.1.1" + "@nomicfoundation/solidity-analyzer-win32-arm64-msvc" "0.1.1" + "@nomicfoundation/solidity-analyzer-win32-ia32-msvc" "0.1.1" + "@nomicfoundation/solidity-analyzer-win32-x64-msvc" "0.1.1" + +"@nomiclabs/hardhat-ethers@^2.0.0": + version "2.2.3" + resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-ethers/-/hardhat-ethers-2.2.3.tgz#b41053e360c31a32c2640c9a45ee981a7e603fe0" + integrity sha512-YhzPdzb612X591FOe68q+qXVXGG2ANZRvDo0RRUtimev85rCrAlv/TLMEZw5c+kq9AbzocLTVX/h2jVIFPL9Xg== + +"@nomiclabs/hardhat-etherscan@^3.0.0": + version "3.1.7" + resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-etherscan/-/hardhat-etherscan-3.1.7.tgz#72e3d5bd5d0ceb695e097a7f6f5ff6fcbf062b9a" + integrity sha512-tZ3TvSgpvsQ6B6OGmo1/Au6u8BrAkvs1mIC/eURA3xgIfznUZBhmpne8hv7BXUzw9xNL3fXdpOYgOQlVMTcoHQ== + dependencies: + "@ethersproject/abi" "^5.1.2" + "@ethersproject/address" "^5.0.2" + cbor "^8.1.0" + chalk "^2.4.2" + debug "^4.1.1" + fs-extra "^7.0.1" + lodash "^4.17.11" + semver "^6.3.0" + table "^6.8.0" + undici "^5.14.0" + +"@openzeppelin/contracts@4.8.0": + version "4.8.0" + resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-4.8.0.tgz#6854c37df205dd2c056bdfa1b853f5d732109109" + integrity sha512-AGuwhRRL+NaKx73WKRNzeCxOCOCxpaqF+kp8TJ89QzAipSwZy/NoflkWaL9bywXFRhIzXt8j38sfF7KBKCPWLw== + +"@openzeppelin/contracts@^4.8.3": + version "4.8.3" + resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-4.8.3.tgz#cbef3146bfc570849405f59cba18235da95a252a" + integrity sha512-bQHV8R9Me8IaJoJ2vPG4rXcL7seB7YVuskr4f+f5RyOStSZetwzkWtoqDMl5erkBJy0lDRUnIR2WIkPiC0GJlg== + +"@scure/base@~1.1.0": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.1.tgz#ebb651ee52ff84f420097055f4bf46cfba403938" + integrity sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA== + +"@scure/bip32@1.1.5": + version "1.1.5" + resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.1.5.tgz#d2ccae16dcc2e75bc1d75f5ef3c66a338d1ba300" + integrity sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw== + dependencies: + "@noble/hashes" "~1.2.0" + "@noble/secp256k1" "~1.7.0" + "@scure/base" "~1.1.0" + +"@scure/bip39@1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.1.1.tgz#b54557b2e86214319405db819c4b6a370cf340c5" + integrity sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg== + dependencies: + "@noble/hashes" "~1.2.0" + "@scure/base" "~1.1.0" + +"@sentry/core@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-5.30.0.tgz#6b203664f69e75106ee8b5a2fe1d717379b331f3" + integrity sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg== + dependencies: + "@sentry/hub" "5.30.0" + "@sentry/minimal" "5.30.0" + "@sentry/types" "5.30.0" + "@sentry/utils" "5.30.0" + tslib "^1.9.3" + +"@sentry/hub@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-5.30.0.tgz#2453be9b9cb903404366e198bd30c7ca74cdc100" + integrity sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ== + dependencies: + "@sentry/types" "5.30.0" + "@sentry/utils" "5.30.0" + tslib "^1.9.3" + +"@sentry/minimal@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-5.30.0.tgz#ce3d3a6a273428e0084adcb800bc12e72d34637b" + integrity sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw== + dependencies: + "@sentry/hub" "5.30.0" + "@sentry/types" "5.30.0" + tslib "^1.9.3" + +"@sentry/node@^5.18.1": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/node/-/node-5.30.0.tgz#4ca479e799b1021285d7fe12ac0858951c11cd48" + integrity sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg== + dependencies: + "@sentry/core" "5.30.0" + "@sentry/hub" "5.30.0" + "@sentry/tracing" "5.30.0" + "@sentry/types" "5.30.0" + "@sentry/utils" "5.30.0" + cookie "^0.4.1" + https-proxy-agent "^5.0.0" + lru_map "^0.3.3" + tslib "^1.9.3" + +"@sentry/tracing@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-5.30.0.tgz#501d21f00c3f3be7f7635d8710da70d9419d4e1f" + integrity sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw== + dependencies: + "@sentry/hub" "5.30.0" + "@sentry/minimal" "5.30.0" + "@sentry/types" "5.30.0" + "@sentry/utils" "5.30.0" + tslib "^1.9.3" + +"@sentry/types@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-5.30.0.tgz#19709bbe12a1a0115bc790b8942917da5636f402" + integrity sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw== + +"@sentry/utils@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-5.30.0.tgz#9a5bd7ccff85ccfe7856d493bffa64cabc41e980" + integrity sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww== + dependencies: + "@sentry/types" "5.30.0" + tslib "^1.9.3" + +"@sindresorhus/is@^0.14.0": + version "0.14.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" + integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== + +"@sindresorhus/is@^4.0.0", "@sindresorhus/is@^4.6.0": + version "4.6.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" + integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw== + +"@solidity-parser/parser@^0.14.0", "@solidity-parser/parser@^0.14.1": + version "0.14.5" + resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.14.5.tgz#87bc3cc7b068e08195c219c91cd8ddff5ef1a804" + integrity sha512-6dKnHZn7fg/iQATVEzqyUOyEidbn05q7YA2mQ9hC0MMXhhV3/JrsxmFSYZAcr7j1yUP700LLhTruvJ3MiQmjJg== + dependencies: + antlr4ts "^0.5.0-alpha.4" + +"@superfluid-finance/ethereum-contracts@^1.5.2": + version "1.5.2" + resolved "https://registry.yarnpkg.com/@superfluid-finance/ethereum-contracts/-/ethereum-contracts-1.5.2.tgz#b82cd2e91c7a48c24072fc692496c5bfbb321fc2" + integrity sha512-3zFlobqB4x9LM77Fp8cxrD8AR4E1FYSjTJv1POdqACOgBFnRWASeI+nfQlIoRqaEWG6PJUauKhJKtHrw2I1Bpg== + dependencies: + "@decentral.ee/web3-helpers" "0.5.3" + "@openzeppelin/contracts" "4.8.0" + "@superfluid-finance/js-sdk" "0.6.3" + "@truffle/contract" "4.5.23" + ethereumjs-tx "2.1.2" + ethereumjs-util "7.1.5" + stack-trace "0.0.10" + +"@superfluid-finance/js-sdk@0.6.3": + version "0.6.3" + resolved "https://registry.yarnpkg.com/@superfluid-finance/js-sdk/-/js-sdk-0.6.3.tgz#af2ba3ad3ec927c07567f40b9c5b584ab10e9b6d" + integrity sha512-bSeV//KLAyseYwFVMGwrZmmS0iIZWx5FLGEEjXfi0oS42NFomD0MEt+iRyF7o/Jx6/8bfHGMH9I4s8LAWR27bQ== + dependencies: + "@superfluid-finance/metadata" "git+https://github.com/superfluid-finance/metadata.git" + "@truffle/contract" "4.5.23" + auto-bind "^4.0.0" + node-fetch "^2.6.7" + +"@superfluid-finance/metadata@git+https://github.com/superfluid-finance/metadata.git": + version "1.1.5" + resolved "git+https://github.com/superfluid-finance/metadata.git#70254bd7a3846040837f6bfe59e430be16e568ce" + +"@szmarczak/http-timer@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" + integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== + dependencies: + defer-to-connect "^1.0.1" + +"@szmarczak/http-timer@^4.0.5": + version "4.0.6" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807" + integrity sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w== + dependencies: + defer-to-connect "^2.0.0" + +"@szmarczak/http-timer@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-5.0.1.tgz#c7c1bf1141cdd4751b0399c8fc7b8b664cd5be3a" + integrity sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw== + dependencies: + defer-to-connect "^2.0.1" + +"@truffle/abi-utils@^0.3.9": + version "0.3.9" + resolved "https://registry.yarnpkg.com/@truffle/abi-utils/-/abi-utils-0.3.9.tgz#c476f5cfe01072b513b3e93fd7bea05cf7bd9d96" + integrity sha512-G5dqgwRHx5zwlXjz3QT8OJVfB2cOqWwD6DwKso0KttUt/zejhCjnkKq72rSgyeLMkz7wBB9ERLOsupLBILM8MA== + dependencies: + change-case "3.0.2" + fast-check "3.1.1" + web3-utils "1.8.2" + +"@truffle/blockchain-utils@^0.1.4": + version "0.1.7" + resolved "https://registry.yarnpkg.com/@truffle/blockchain-utils/-/blockchain-utils-0.1.7.tgz#cf7923a3ae5b591ae4c2a5ee45994a310ccaf1ee" + integrity sha512-1nibqGjEHC7KAyDThEFvbm2+EO8zAHee/VjCtxkYBE3ySwP50joh0QCEBjy7K/9z+icpMoDucfxmgaKToBFUgQ== + +"@truffle/codec@^0.14.17": + version "0.14.17" + resolved "https://registry.yarnpkg.com/@truffle/codec/-/codec-0.14.17.tgz#4ab11fab335854dad0d4aef75db2960ebd76fcd8" + integrity sha512-kD4dD86huLeaBEq5R8D1zleJEu6NsXbyYLdXl1V1TKdiO8odw5CBC6Y/+wdu5d3t1dyEYrTbhn1dqknZa52pmw== + dependencies: + "@truffle/abi-utils" "^0.3.9" + "@truffle/compile-common" "^0.9.4" + big.js "^6.0.3" + bn.js "^5.1.3" + cbor "^5.2.0" + debug "^4.3.1" + lodash "^4.17.21" + semver "7.3.7" + utf8 "^3.0.0" + web3-utils "1.8.2" + +"@truffle/compile-common@^0.9.4": + version "0.9.4" + resolved "https://registry.yarnpkg.com/@truffle/compile-common/-/compile-common-0.9.4.tgz#064208cda70491692b538f717809bb904a122c20" + integrity sha512-mnqJB/hLiPHNf+WKwt/2MH6lv34xSG/SFCib7+ckAklutUqVLeFo8EwQxinuHNkU7LY0C+YgZXhK1WTCO5YRJQ== + dependencies: + "@truffle/error" "^0.2.0" + colors "1.4.0" + +"@truffle/contract-schema@^3.4.9": + version "3.4.13" + resolved "https://registry.yarnpkg.com/@truffle/contract-schema/-/contract-schema-3.4.13.tgz#48447673f29380830f5821e8139ceefbbd545aac" + integrity sha512-emG7upuryYFrsPDbHqeASPWXL824M1tinhQwSPG0phSoa3g+RX9fUNNN/VPmF3tSkXLWUMhRnb7ehxnaCuRbZg== + dependencies: + ajv "^6.10.0" + debug "^4.3.1" + +"@truffle/contract@4.5.23": + version "4.5.23" + resolved "https://registry.yarnpkg.com/@truffle/contract/-/contract-4.5.23.tgz#8540f0c2d4ebc4782f1d4647016213fa4cac0107" + integrity sha512-ni/RzBdDFo60jaCb8ETCPBfPHRr1WVH5Y27EKmfEyrNg8TC7WZ28SQylMBkwdrgLjqAyPw3Pq7Y5us1f9tcyMQ== + dependencies: + "@ensdomains/ensjs" "^2.1.0" + "@truffle/blockchain-utils" "^0.1.4" + "@truffle/contract-schema" "^3.4.9" + "@truffle/debug-utils" "^6.0.33" + "@truffle/error" "^0.1.1" + "@truffle/interface-adapter" "^0.5.21" + bignumber.js "^7.2.1" + debug "^4.3.1" + ethers "^4.0.32" + web3 "1.7.4" + web3-core-helpers "1.7.4" + web3-core-promievent "1.7.4" + web3-eth-abi "1.7.4" + web3-utils "1.7.4" + +"@truffle/debug-utils@^6.0.33": + version "6.0.48" + resolved "https://registry.yarnpkg.com/@truffle/debug-utils/-/debug-utils-6.0.48.tgz#218caa0e00d95a03abadb05dfe63d621530e113a" + integrity sha512-HdK/7eH5EFrcTPeZVEgKaKkkzuZ4xsrH8yw+EoLEsScLsOEuQeKynY61NctjuU93voATWrYmV99Sfb/MRq2i2g== + dependencies: + "@truffle/codec" "^0.14.17" + "@trufflesuite/chromafi" "^3.0.0" + bn.js "^5.1.3" + chalk "^2.4.2" + debug "^4.3.1" + highlightjs-solidity "^2.0.6" + +"@truffle/error@^0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@truffle/error/-/error-0.1.1.tgz#e52026ac8ca7180d83443dca73c03e07ace2a301" + integrity sha512-sE7c9IHIGdbK4YayH4BC8i8qMjoAOeg6nUXUDZZp8wlU21/EMpaG+CLx+KqcIPyR+GSWIW3Dm0PXkr2nlggFDA== + +"@truffle/error@^0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@truffle/error/-/error-0.2.0.tgz#65de6f03f5c041f883cc87677eecf8231428f1ab" + integrity sha512-Fe0/z4WWb7IP2gBnv3l6zqP87Y0kSMs7oiSLakKJq17q3GUunrHSdioKuNspdggxkXIBhEQLhi8C+LJdwmHKWQ== + +"@truffle/interface-adapter@^0.5.21": + version "0.5.32" + resolved "https://registry.yarnpkg.com/@truffle/interface-adapter/-/interface-adapter-0.5.32.tgz#2ae896ea85a9d267abcd5d0139afc0f06ebc5745" + integrity sha512-7Hgmdb4nJUcWtq4vvgWY7Mr2RLOTOp5FZaWyMiFmjkcEEhDlezm2QstALWAXgT0W6q7tDmDBpw3vTIFenRhHBA== + dependencies: + bn.js "^5.1.3" + ethers "^4.0.32" + web3 "1.8.2" + +"@trufflesuite/chromafi@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@trufflesuite/chromafi/-/chromafi-3.0.0.tgz#f6956408c1af6a38a6ed1657783ce59504a1eb8b" + integrity sha512-oqWcOqn8nT1bwlPPfidfzS55vqcIDdpfzo3HbU9EnUmcSTX+I8z0UyUFI3tZQjByVJulbzxHxUGS3ZJPwK/GPQ== + dependencies: + camelcase "^4.1.0" + chalk "^2.3.2" + cheerio "^1.0.0-rc.2" + detect-indent "^5.0.0" + highlight.js "^10.4.1" + lodash.merge "^4.6.2" + strip-ansi "^4.0.0" + strip-indent "^2.0.0" + +"@tsconfig/node10@^1.0.7": + version "1.0.9" + resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" + integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== + +"@tsconfig/node12@^1.0.7": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" + integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== + +"@tsconfig/node14@^1.0.0": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" + integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== + +"@tsconfig/node16@^1.0.2": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.3.tgz#472eaab5f15c1ffdd7f8628bd4c4f753995ec79e" + integrity sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ== + +"@typechain/ethers-v5@^10.1.0": + version "10.2.0" + resolved "https://registry.yarnpkg.com/@typechain/ethers-v5/-/ethers-v5-10.2.0.tgz#68f5963efb5214cb2d881477228e4b5b315473e1" + integrity sha512-ikaq0N/w9fABM+G01OFmU3U3dNnyRwEahkdvi9mqy1a3XwKiPZaF/lu54OcNaEWnpvEYyhhS0N7buCtLQqC92w== + dependencies: + lodash "^4.17.15" + ts-essentials "^7.0.1" + +"@typechain/hardhat@^6.1.2": + version "6.1.5" + resolved "https://registry.yarnpkg.com/@typechain/hardhat/-/hardhat-6.1.5.tgz#caad58a1d3e9cd88061a584eb4f4fa763d5dcad1" + integrity sha512-lg7LW4qDZpxFMknp3Xool61Fg6Lays8F8TXdFGBG+MxyYcYU5795P1U2XdStuzGq9S2Dzdgh+1jGww9wvZ6r4Q== + dependencies: + fs-extra "^9.1.0" + +"@types/bn.js@^4.11.3": + version "4.11.6" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-4.11.6.tgz#c306c70d9358aaea33cd4eda092a742b9505967c" + integrity sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg== + dependencies: + "@types/node" "*" + +"@types/bn.js@^5.1.0": + version "5.1.1" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.1.tgz#b51e1b55920a4ca26e9285ff79936bbdec910682" + integrity sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g== + dependencies: + "@types/node" "*" + +"@types/cacheable-request@^6.0.1", "@types/cacheable-request@^6.0.2": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.3.tgz#a430b3260466ca7b5ca5bfd735693b36e7a9d183" + integrity sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw== + dependencies: + "@types/http-cache-semantics" "*" + "@types/keyv" "^3.1.4" + "@types/node" "*" + "@types/responselike" "^1.0.0" + +"@types/chai-as-promised@^7.1.3": + version "7.1.5" + resolved "https://registry.yarnpkg.com/@types/chai-as-promised/-/chai-as-promised-7.1.5.tgz#6e016811f6c7a64f2eed823191c3a6955094e255" + integrity sha512-jStwss93SITGBwt/niYrkf2C+/1KTeZCZl1LaeezTlqppAKeoQC7jxyqYuP72sxBGKCIbw7oHgbYssIRzT5FCQ== + dependencies: + "@types/chai" "*" + +"@types/chai@*", "@types/chai@^4.2.0": + version "4.3.4" + resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.4.tgz#e913e8175db8307d78b4e8fa690408ba6b65dee4" + integrity sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw== + +"@types/concat-stream@^1.6.0": + version "1.6.1" + resolved "https://registry.yarnpkg.com/@types/concat-stream/-/concat-stream-1.6.1.tgz#24bcfc101ecf68e886aaedce60dfd74b632a1b74" + integrity sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA== + dependencies: + "@types/node" "*" + +"@types/form-data@0.0.33": + version "0.0.33" + resolved "https://registry.yarnpkg.com/@types/form-data/-/form-data-0.0.33.tgz#c9ac85b2a5fd18435b8c85d9ecb50e6d6c893ff8" + integrity sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw== + dependencies: + "@types/node" "*" + +"@types/glob@^7.1.1": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" + integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== + dependencies: + "@types/minimatch" "*" + "@types/node" "*" + +"@types/http-cache-semantics@*": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz#0ea7b61496902b95890dc4c3a116b60cb8dae812" + integrity sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ== + +"@types/keyv@^3.1.4": + version "3.1.4" + resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.4.tgz#3ccdb1c6751b0c7e52300bcdacd5bcbf8faa75b6" + integrity sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg== + dependencies: + "@types/node" "*" + +"@types/lru-cache@^5.1.0": + version "5.1.1" + resolved "https://registry.yarnpkg.com/@types/lru-cache/-/lru-cache-5.1.1.tgz#c48c2e27b65d2a153b19bfc1a317e30872e01eef" + integrity sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw== + +"@types/minimatch@*": + version "5.1.2" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" + integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== + +"@types/mocha@>=9.1.0": + version "10.0.1" + resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-10.0.1.tgz#2f4f65bb08bc368ac39c96da7b2f09140b26851b" + integrity sha512-/fvYntiO1GeICvqbQ3doGDIP97vWmvFt83GKguJ6prmQM2iXZfFcq6YE8KteFyRtX2/h5Hf91BYvPodJKFYv5Q== + +"@types/node@*", "@types/node@>=12.0.0": + version "18.16.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.16.0.tgz#4668bc392bb6938637b47e98b1f2ed5426f33316" + integrity sha512-BsAaKhB+7X+H4GnSjGhJG9Qi8Tw+inU9nJDwmD5CgOmBLEI6ArdhikpLX7DjbjDRDTbqZzU2LSQNZg8WGPiSZQ== + +"@types/node@^10.0.3": + version "10.17.60" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.60.tgz#35f3d6213daed95da7f0f73e75bcc6980e90597b" + integrity sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw== + +"@types/node@^12.12.6": + version "12.20.55" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240" + integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== + +"@types/node@^8.0.0": + version "8.10.66" + resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.66.tgz#dd035d409df322acc83dff62a602f12a5783bbb3" + integrity sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw== + +"@types/pbkdf2@^3.0.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@types/pbkdf2/-/pbkdf2-3.1.0.tgz#039a0e9b67da0cdc4ee5dab865caa6b267bb66b1" + integrity sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ== + dependencies: + "@types/node" "*" + +"@types/prettier@^2.1.1": + version "2.7.2" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.2.tgz#6c2324641cc4ba050a8c710b2b251b377581fbf0" + integrity sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg== + +"@types/qs@^6.2.31": + version "6.9.7" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" + integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== + +"@types/readable-stream@^2.3.13": + version "2.3.15" + resolved "https://registry.yarnpkg.com/@types/readable-stream/-/readable-stream-2.3.15.tgz#3d79c9ceb1b6a57d5f6e6976f489b9b5384321ae" + integrity sha512-oM5JSKQCcICF1wvGgmecmHldZ48OZamtMxcGGVICOJA8o8cahXC1zEVAif8iwoc5j8etxFaRFnf095+CDsuoFQ== + dependencies: + "@types/node" "*" + safe-buffer "~5.1.1" + +"@types/responselike@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.0.tgz#251f4fe7d154d2bad125abe1b429b23afd262e29" + integrity sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA== + dependencies: + "@types/node" "*" + +"@types/secp256k1@^4.0.1": + version "4.0.3" + resolved "https://registry.yarnpkg.com/@types/secp256k1/-/secp256k1-4.0.3.tgz#1b8e55d8e00f08ee7220b4d59a6abe89c37a901c" + integrity sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w== + dependencies: + "@types/node" "*" + +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + +abbrev@1.0.x: + version "1.0.9" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" + integrity sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q== + +abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" + integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== + dependencies: + event-target-shim "^5.0.0" + +abortcontroller-polyfill@^1.7.3: + version "1.7.5" + resolved "https://registry.yarnpkg.com/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.5.tgz#6738495f4e901fbb57b6c0611d0c75f76c485bed" + integrity sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ== + +abstract-level@^1.0.0, abstract-level@^1.0.2, abstract-level@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/abstract-level/-/abstract-level-1.0.3.tgz#78a67d3d84da55ee15201486ab44c09560070741" + integrity sha512-t6jv+xHy+VYwc4xqZMn2Pa9DjcdzvzZmQGRjTFc8spIbRGHgBrEKbPq+rYXc7CCo0lxgYvSgKVg9qZAhpVQSjA== + dependencies: + buffer "^6.0.3" + catering "^2.1.0" + is-buffer "^2.0.5" + level-supports "^4.0.0" + level-transcoder "^1.0.1" + module-error "^1.0.1" + queue-microtask "^1.2.3" + +accepts@~1.3.8: + version "1.3.8" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== + dependencies: + mime-types "~2.1.34" + negotiator "0.6.3" + +acorn-walk@^8.1.1: + version "8.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" + integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== + +acorn@^8.4.1: + version "8.8.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" + integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== + +address@^1.0.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/address/-/address-1.2.2.tgz#2b5248dac5485a6390532c6a517fda2e3faac89e" + integrity sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA== + +adm-zip@^0.4.16: + version "0.4.16" + resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.16.tgz#cf4c508fdffab02c269cbc7f471a875f05570365" + integrity sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg== + +aes-js@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" + integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== + +agent-base@6: + version "6.0.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + +ajv@^6.10.0, ajv@^6.12.3: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^8.0.1: + version "8.12.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" + integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + +amdefine@>=0.0.4: + version "1.0.1" + resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" + integrity sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg== + +ansi-colors@3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.3.tgz#57d35b8686e851e2cc04c403f1c00203976a1813" + integrity sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw== + +ansi-colors@4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + +ansi-colors@^4.1.1: + version "4.1.3" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" + integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== + +ansi-escapes@^4.3.0: + version "4.3.2" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== + +ansi-regex@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1" + integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw== + +ansi-regex@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed" + integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^3.2.0, ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +antlr4ts@^0.5.0-alpha.4: + version "0.5.0-alpha.4" + resolved "https://registry.yarnpkg.com/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz#71702865a87478ed0b40c0709f422cf14d51652a" + integrity sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ== + +anymatch@~3.1.1, anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +array-back@^3.0.1, array-back@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/array-back/-/array-back-3.1.0.tgz#b8859d7a508871c9a7b2cf42f99428f65e96bfb0" + integrity sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q== + +array-back@^4.0.1, array-back@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/array-back/-/array-back-4.0.2.tgz#8004e999a6274586beeb27342168652fdb89fa1e" + integrity sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg== + +array-buffer-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead" + integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== + dependencies: + call-bind "^1.0.2" + is-array-buffer "^3.0.1" + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +array-uniq@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + integrity sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q== + +array.prototype.reduce@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz#6b20b0daa9d9734dd6bc7ea66b5bbce395471eac" + integrity sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-array-method-boxes-properly "^1.0.0" + is-string "^1.0.7" + +asap@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== + +asn1.js@^5.2.0: + version "5.4.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" + integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + safer-buffer "^2.1.0" + +asn1@~0.2.3: + version "0.2.6" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" + integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== + +assertion-error@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" + integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== + +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + +async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== + +async@1.x: + version "1.5.2" + resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + integrity sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w== + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + +auto-bind@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/auto-bind/-/auto-bind-4.0.0.tgz#e3589fc6c2da8f7ca43ba9f84fa52a744fc997fb" + integrity sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ== + +available-typed-arrays@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" + integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== + +aws4@^1.8.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.12.0.tgz#ce1c9d143389679e253b314241ea9aa5cec980d3" + integrity sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg== + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base-x@^3.0.2, base-x@^3.0.8: + version "3.0.9" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.9.tgz#6349aaabb58526332de9f60995e548a53fe21320" + integrity sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ== + dependencies: + safe-buffer "^5.0.1" + +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== + dependencies: + tweetnacl "^0.14.3" + +bech32@1.1.4, bech32@^1.1.3: + version "1.1.4" + resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" + integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== + +big-integer@1.6.36: + version "1.6.36" + resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.36.tgz#78631076265d4ae3555c04f85e7d9d2f3a071a36" + integrity sha512-t70bfa7HYEA1D9idDbmuv7YbsbVkQ+Hp+8KFSul4aE5e/i1bjCNIRYJZlA8Q8p0r9T8cF/RVvwUgRA//FydEyg== + +big.js@^6.0.3: + version "6.2.1" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-6.2.1.tgz#7205ce763efb17c2e41f26f121c420c6a7c2744f" + integrity sha512-bCtHMwL9LeDIozFn+oNhhFoq+yQ3BNdnsLSASUxLciOb1vgvpHsIO1dsENiGMgbb4SkP5TrzWzRiLddn8ahVOQ== + +bigint-crypto-utils@^3.0.23: + version "3.2.2" + resolved "https://registry.yarnpkg.com/bigint-crypto-utils/-/bigint-crypto-utils-3.2.2.tgz#e30a49ec38357c6981cd3da5aaa6480b1f752ee4" + integrity sha512-U1RbE3aX9ayCUVcIPHuPDPKcK3SFOXf93J1UK/iHlJuQB7bhagPIX06/CLpLEsDThJ7KA4Dhrnzynl+d2weTiw== + +bignumber.js@^7.2.1: + version "7.2.1" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-7.2.1.tgz#80c048759d826800807c4bfd521e50edbba57a5f" + integrity sha512-S4XzBk5sMB+Rcb/LNcpzXr57VRTxgAvaAEDAl1AwRx27j00hT84O6OkteE7u8UB3NuaaygCRrEpqox4uDOrbdQ== + +bignumber.js@^9.0.0, bignumber.js@^9.0.1: + version "9.1.1" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.1.tgz#c4df7dc496bd849d4c9464344c1aa74228b4dac6" + integrity sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig== + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +blakejs@^1.1.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.2.1.tgz#5057e4206eadb4a97f7c0b6e197a505042fc3814" + integrity sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ== + +bluebird@^3.5.0, bluebird@^3.5.2: + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +bn.js@4.11.6: + version "4.11.6" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215" + integrity sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA== + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.0, bn.js@^4.11.6, bn.js@^4.11.8, bn.js@^4.11.9: + version "4.12.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" + integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== + +bn.js@^5.0.0, bn.js@^5.1.1, bn.js@^5.1.2, bn.js@^5.1.3, bn.js@^5.2.0, bn.js@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" + integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== + +body-parser@1.20.1: + version "1.20.1" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" + integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== + dependencies: + bytes "3.1.2" + content-type "~1.0.4" + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" + iconv-lite "0.4.24" + on-finished "2.4.1" + qs "6.11.0" + raw-body "2.5.1" + type-is "~1.6.18" + unpipe "1.0.0" + +body-parser@^1.16.0: + version "1.20.2" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd" + integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== + dependencies: + bytes "3.1.2" + content-type "~1.0.5" + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" + iconv-lite "0.4.24" + on-finished "2.4.1" + qs "6.11.0" + raw-body "2.5.2" + type-is "~1.6.18" + unpipe "1.0.0" + +boolbase@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +braces@^3.0.2, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +brorand@^1.0.1, brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== + +browser-level@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browser-level/-/browser-level-1.0.1.tgz#36e8c3183d0fe1c405239792faaab5f315871011" + integrity sha512-XECYKJ+Dbzw0lbydyQuJzwNXtOpbMSq737qxJN11sIRTErOMShvDpbzTlgju7orJKvx4epULolZAuJGLzCmWRQ== + dependencies: + abstract-level "^1.0.2" + catering "^2.1.1" + module-error "^1.0.2" + run-parallel-limit "^1.1.0" + +browser-stdout@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" + integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== + +browserify-aes@^1.0.0, browserify-aes@^1.0.4, browserify-aes@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" + integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== + dependencies: + bn.js "^5.0.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" + integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== + dependencies: + bn.js "^5.1.1" + browserify-rsa "^4.0.1" + create-hash "^1.2.0" + create-hmac "^1.1.7" + elliptic "^6.5.3" + inherits "^2.0.4" + parse-asn1 "^5.1.5" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +bs58@^4.0.0, bs58@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" + integrity sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw== + dependencies: + base-x "^3.0.2" + +bs58check@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-2.1.2.tgz#53b018291228d82a5aa08e7d796fdafda54aebfc" + integrity sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA== + dependencies: + bs58 "^4.0.0" + create-hash "^1.1.0" + safe-buffer "^5.1.2" + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +buffer-to-arraybuffer@^0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz#6064a40fa76eb43c723aba9ef8f6e1216d10511a" + integrity sha512-3dthu5CYiVB1DEJp61FtApNnNndTckcqe4pFcLdvHtrpG+kcyekCJKg4MRiDcFW7A6AODnXB9U4dwQiCW5kzJQ== + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== + +buffer@6.0.3, buffer@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + +buffer@^5.0.5, buffer@^5.5.0, buffer@^5.6.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + +bufferutil@^4.0.1: + version "4.0.7" + resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.7.tgz#60c0d19ba2c992dd8273d3f73772ffc894c153ad" + integrity sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw== + dependencies: + node-gyp-build "^4.3.0" + +busboy@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893" + integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== + dependencies: + streamsearch "^1.1.0" + +bytes@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== + +cacheable-lookup@^5.0.3: + version "5.0.4" + resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005" + integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA== + +cacheable-lookup@^6.0.4: + version "6.1.0" + resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-6.1.0.tgz#0330a543471c61faa4e9035db583aad753b36385" + integrity sha512-KJ/Dmo1lDDhmW2XDPMo+9oiy/CeqosPguPCrgcVzKyZrL6pM1gU2GmPY/xo6OQPTUaA/c0kwHuywB4E6nmT9ww== + +cacheable-request@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" + integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== + dependencies: + clone-response "^1.0.2" + get-stream "^5.1.0" + http-cache-semantics "^4.0.0" + keyv "^3.0.0" + lowercase-keys "^2.0.0" + normalize-url "^4.1.0" + responselike "^1.0.2" + +cacheable-request@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.2.tgz#ea0d0b889364a25854757301ca12b2da77f91d27" + integrity sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew== + dependencies: + clone-response "^1.0.2" + get-stream "^5.1.0" + http-cache-semantics "^4.0.0" + keyv "^4.0.0" + lowercase-keys "^2.0.0" + normalize-url "^6.0.1" + responselike "^2.0.0" + +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +camel-case@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" + integrity sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w== + dependencies: + no-case "^2.2.0" + upper-case "^1.1.1" + +camelcase@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" + integrity sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg== + +camelcase@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" + integrity sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw== + +camelcase@^5.0.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +camelcase@^6.0.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +case@^1.6.3: + version "1.6.3" + resolved "https://registry.yarnpkg.com/case/-/case-1.6.3.tgz#0a4386e3e9825351ca2e6216c60467ff5f1ea1c9" + integrity sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ== + +caseless@^0.12.0, caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== + +catering@^2.1.0, catering@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/catering/-/catering-2.1.1.tgz#66acba06ed5ee28d5286133982a927de9a04b510" + integrity sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w== + +cbor@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/cbor/-/cbor-5.2.0.tgz#4cca67783ccd6de7b50ab4ed62636712f287a67c" + integrity sha512-5IMhi9e1QU76ppa5/ajP1BmMWZ2FHkhAhjeVKQ/EFCgYSEaeVaoGtL7cxJskf9oCCk+XjzaIdc3IuU/dbA/o2A== + dependencies: + bignumber.js "^9.0.1" + nofilter "^1.0.4" + +cbor@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/cbor/-/cbor-8.1.0.tgz#cfc56437e770b73417a2ecbfc9caf6b771af60d5" + integrity sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg== + dependencies: + nofilter "^3.1.0" + +chai-as-promised@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/chai-as-promised/-/chai-as-promised-7.1.1.tgz#08645d825deb8696ee61725dbf590c012eb00ca0" + integrity sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA== + dependencies: + check-error "^1.0.2" + +chai@^4.2.0: + version "4.3.7" + resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.7.tgz#ec63f6df01829088e8bf55fca839bcd464a8ec51" + integrity sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A== + dependencies: + assertion-error "^1.1.0" + check-error "^1.0.2" + deep-eql "^4.1.2" + get-func-name "^2.0.0" + loupe "^2.3.1" + pathval "^1.1.1" + type-detect "^4.0.5" + +chalk@^2.3.2, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.1.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +change-case@3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/change-case/-/change-case-3.0.2.tgz#fd48746cce02f03f0a672577d1d3a8dc2eceb037" + integrity sha512-Mww+SLF6MZ0U6kdg11algyKd5BARbyM4TbFBepwowYSR5ClfQGCGtxNXgykpN0uF/bstWeaGDT4JWaDh8zWAHA== + dependencies: + camel-case "^3.0.0" + constant-case "^2.0.0" + dot-case "^2.1.0" + header-case "^1.0.0" + is-lower-case "^1.1.0" + is-upper-case "^1.1.0" + lower-case "^1.1.1" + lower-case-first "^1.0.0" + no-case "^2.3.2" + param-case "^2.1.0" + pascal-case "^2.0.0" + path-case "^2.1.0" + sentence-case "^2.1.0" + snake-case "^2.1.0" + swap-case "^1.1.0" + title-case "^2.1.0" + upper-case "^1.1.1" + upper-case-first "^1.1.0" + +"charenc@>= 0.0.1": + version "0.0.2" + resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" + integrity sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA== + +check-error@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" + integrity sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA== + +cheerio-select@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-2.1.0.tgz#4d8673286b8126ca2a8e42740d5e3c4884ae21b4" + integrity sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g== + dependencies: + boolbase "^1.0.0" + css-select "^5.1.0" + css-what "^6.1.0" + domelementtype "^2.3.0" + domhandler "^5.0.3" + domutils "^3.0.1" + +cheerio@^1.0.0-rc.2: + version "1.0.0-rc.12" + resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.12.tgz#788bf7466506b1c6bf5fae51d24a2c4d62e47683" + integrity sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q== + dependencies: + cheerio-select "^2.1.0" + dom-serializer "^2.0.0" + domhandler "^5.0.3" + domutils "^3.0.1" + htmlparser2 "^8.0.1" + parse5 "^7.0.0" + parse5-htmlparser2-tree-adapter "^7.0.0" + +chokidar@3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.3.0.tgz#12c0714668c55800f659e262d4962a97faf554a6" + integrity sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A== + dependencies: + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.2.0" + optionalDependencies: + fsevents "~2.1.1" + +chokidar@3.5.3, chokidar@^3.4.0: + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +chownr@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + +cids@^0.7.1: + version "0.7.5" + resolved "https://registry.yarnpkg.com/cids/-/cids-0.7.5.tgz#60a08138a99bfb69b6be4ceb63bfef7a396b28b2" + integrity sha512-zT7mPeghoWAu+ppn8+BS1tQ5qGmbMfB4AregnQjA/qHY3GC1m1ptI9GkWNlgeu38r7CuRdXB47uY2XgAYt6QVA== + dependencies: + buffer "^5.5.0" + class-is "^1.1.0" + multibase "~0.6.0" + multicodec "^1.0.0" + multihashes "~0.4.15" + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +class-is@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/class-is/-/class-is-1.1.0.tgz#9d3c0fba0440d211d843cec3dedfa48055005825" + integrity sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw== + +classic-level@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/classic-level/-/classic-level-1.3.0.tgz#5e36680e01dc6b271775c093f2150844c5edd5c8" + integrity sha512-iwFAJQYtqRTRM0F6L8h4JCt00ZSGdOyqh7yVrhhjrOpFhmBjNlRUey64MCiyo6UmQHMJ+No3c81nujPv+n9yrg== + dependencies: + abstract-level "^1.0.2" + catering "^2.1.0" + module-error "^1.0.1" + napi-macros "^2.2.2" + node-gyp-build "^4.3.0" + +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cli-table3@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.5.1.tgz#0252372d94dfc40dbd8df06005f48f31f656f202" + integrity sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw== + dependencies: + object-assign "^4.1.0" + string-width "^2.1.1" + optionalDependencies: + colors "^1.1.2" + +cliui@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + integrity sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w== + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + +cliui@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" + integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== + dependencies: + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" + +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + +clone-response@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.3.tgz#af2032aa47816399cf5f0a1d0db902f517abb8c3" + integrity sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA== + dependencies: + mimic-response "^1.0.0" + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + integrity sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA== + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +colors@1.4.0, colors@^1.1.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" + integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== + +combined-stream@^1.0.6, combined-stream@~1.0.6: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +command-exists@^1.2.8: + version "1.2.9" + resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69" + integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== + +command-line-args@^5.1.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.2.1.tgz#c44c32e437a57d7c51157696893c5909e9cec42e" + integrity sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg== + dependencies: + array-back "^3.1.0" + find-replace "^3.0.0" + lodash.camelcase "^4.3.0" + typical "^4.0.0" + +command-line-usage@^6.1.0: + version "6.1.3" + resolved "https://registry.yarnpkg.com/command-line-usage/-/command-line-usage-6.1.3.tgz#428fa5acde6a838779dfa30e44686f4b6761d957" + integrity sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw== + dependencies: + array-back "^4.0.2" + chalk "^2.4.2" + table-layout "^1.0.2" + typical "^5.2.0" + +commander@3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" + integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +concat-stream@^1.6.0, concat-stream@^1.6.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +constant-case@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/constant-case/-/constant-case-2.0.0.tgz#4175764d389d3fa9c8ecd29186ed6005243b6a46" + integrity sha512-eS0N9WwmjTqrOmR3o83F5vW8Z+9R1HnVz3xmzT2PMFug9ly+Au/fxRWlEBSb6LcZwspSsEn9Xs1uw9YgzAg1EQ== + dependencies: + snake-case "^2.1.0" + upper-case "^1.1.1" + +content-disposition@0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== + dependencies: + safe-buffer "5.2.1" + +content-hash@^2.5.2: + version "2.5.2" + resolved "https://registry.yarnpkg.com/content-hash/-/content-hash-2.5.2.tgz#bbc2655e7c21f14fd3bfc7b7d4bfe6e454c9e211" + integrity sha512-FvIQKy0S1JaWV10sMsA7TRx8bpU+pqPkhbsfvOJAdjRXvYxEckAwQWGwtRjiaJfh+E0DvcWUGqcdjwMGFjsSdw== + dependencies: + cids "^0.7.1" + multicodec "^0.5.5" + multihashes "^0.4.15" + +content-type@~1.0.4, content-type@~1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" + integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== + +cookie@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" + integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== + +cookie@^0.4.1: + version "0.4.2" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" + integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== + +cookiejar@^2.1.1: + version "2.1.4" + resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.4.tgz#ee669c1fea2cf42dc31585469d193fef0d65771b" + integrity sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw== + +core-util-is@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +cors@^2.8.1: + version "2.8.5" + resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" + integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== + dependencies: + object-assign "^4" + vary "^1" + +crc-32@^1.2.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff" + integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ== + +create-ecdh@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" + integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== + dependencies: + bn.js "^4.1.0" + elliptic "^6.5.3" + +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + +cross-fetch@^3.1.4: + version "3.1.5" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" + integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== + dependencies: + node-fetch "2.6.7" + +"crypt@>= 0.0.1": + version "0.0.2" + resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" + integrity sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow== + +crypto-addr-codec@^0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/crypto-addr-codec/-/crypto-addr-codec-0.1.7.tgz#e16cea892730178fe25a38f6d15b680cab3124ae" + integrity sha512-X4hzfBzNhy4mAc3UpiXEC/L0jo5E8wAa9unsnA8nNXYzXjCcGk83hfC5avJWCSGT8V91xMnAS9AKMHmjw5+XCg== + dependencies: + base-x "^3.0.8" + big-integer "1.6.36" + blakejs "^1.1.0" + bs58 "^4.0.1" + ripemd160-min "0.0.6" + safe-buffer "^5.2.0" + sha3 "^2.1.1" + +crypto-browserify@3.12.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" + +css-select@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6" + integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg== + dependencies: + boolbase "^1.0.0" + css-what "^6.1.0" + domhandler "^5.0.2" + domutils "^3.0.1" + nth-check "^2.0.1" + +css-what@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" + integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== + +d@1, d@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" + integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== + dependencies: + es5-ext "^0.10.50" + type "^1.0.1" + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== + dependencies: + assert-plus "^1.0.0" + +death@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/death/-/death-1.1.0.tgz#01aa9c401edd92750514470b8266390c66c67318" + integrity sha512-vsV6S4KVHvTGxbEcij7hkWRv0It+sGGWVOM67dQde/o5Xjnr+KmLjxWJii2uEObIrt1CcM9w0Yaovx+iOlIL+w== + +debug@2.6.9, debug@^2.2.0: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@3.2.6: + version "3.2.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" + integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== + dependencies: + ms "^2.1.1" + +debug@4, debug@4.3.4, debug@^4.1.1, debug@^4.3.1, debug@^4.3.3: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +decamelize@^1.1.1, decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== + +decamelize@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" + integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== + +decode-uri-component@^0.2.0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" + integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== + +decompress-response@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" + integrity sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA== + dependencies: + mimic-response "^1.0.0" + +decompress-response@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" + integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== + dependencies: + mimic-response "^3.1.0" + +deep-eql@^4.0.1, deep-eql@^4.1.2: + version "4.1.3" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.3.tgz#7c7775513092f7df98d8df9996dd085eb668cc6d" + integrity sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw== + dependencies: + type-detect "^4.0.0" + +deep-extend@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +deep-is@~0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +defer-to-connect@^1.0.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" + integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== + +defer-to-connect@^2.0.0, defer-to-connect@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" + integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== + +define-properties@^1.1.2, define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.0.tgz#52988570670c9eacedd8064f4a990f2405849bd5" + integrity sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA== + dependencies: + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +depd@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +des.js@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" + integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== + +detect-indent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" + integrity sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g== + +detect-port@^1.3.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/detect-port/-/detect-port-1.5.1.tgz#451ca9b6eaf20451acb0799b8ab40dff7718727b" + integrity sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ== + dependencies: + address "^1.0.1" + debug "4" + +diff@3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" + integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== + +diff@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" + integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== + +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + +diffie-hellman@^5.0.0: + version "5.0.3" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + +difflib@^0.2.4: + version "0.2.4" + resolved "https://registry.yarnpkg.com/difflib/-/difflib-0.2.4.tgz#b5e30361a6db023176d562892db85940a718f47e" + integrity sha512-9YVwmMb0wQHQNr5J9m6BSj6fk4pfGITGQOOs+D9Fl+INODWFOfvhIU1hNv6GgR1RBoC/9NJcwu77zShxV0kT7w== + dependencies: + heap ">= 0.2.0" + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +dom-serializer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53" + integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== + dependencies: + domelementtype "^2.3.0" + domhandler "^5.0.2" + entities "^4.2.0" + +dom-walk@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" + integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== + +domelementtype@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== + +domhandler@^5.0.1, domhandler@^5.0.2, domhandler@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31" + integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== + dependencies: + domelementtype "^2.3.0" + +domutils@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.0.1.tgz#696b3875238338cb186b6c0612bd4901c89a4f1c" + integrity sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q== + dependencies: + dom-serializer "^2.0.0" + domelementtype "^2.3.0" + domhandler "^5.0.1" + +dot-case@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-2.1.1.tgz#34dcf37f50a8e93c2b3bca8bb7fb9155c7da3bee" + integrity sha512-HnM6ZlFqcajLsyudHq7LeeLDr2rFAVYtDv/hV5qchQEidSck8j9OPUsXY9KwJv/lHMtYlX4DjRQqwFYa+0r8Ug== + dependencies: + no-case "^2.2.0" + +dotenv@^16.0.3: + version "16.0.3" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.3.tgz#115aec42bac5053db3c456db30cc243a5a836a07" + integrity sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ== + +duplexer3@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.5.tgz#0b5e4d7bad5de8901ea4440624c8e1d20099217e" + integrity sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA== + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== + +elliptic@6.5.4, elliptic@^6.4.0, elliptic@^6.5.2, elliptic@^6.5.3, elliptic@^6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" + integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== + +end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +enquirer@^2.3.0: + version "2.3.6" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + dependencies: + ansi-colors "^4.1.1" + +entities@^4.2.0, entities@^4.4.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" + integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== + +env-paths@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" + integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== + +error-ex@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es-abstract@^1.19.0, es-abstract@^1.20.4, es-abstract@^1.21.2: + version "1.21.2" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.21.2.tgz#a56b9695322c8a185dc25975aa3b8ec31d0e7eff" + integrity sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg== + dependencies: + array-buffer-byte-length "^1.0.0" + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + es-set-tostringtag "^2.0.1" + es-to-primitive "^1.2.1" + function.prototype.name "^1.1.5" + get-intrinsic "^1.2.0" + get-symbol-description "^1.0.0" + globalthis "^1.0.3" + gopd "^1.0.1" + has "^1.0.3" + has-property-descriptors "^1.0.0" + has-proto "^1.0.1" + has-symbols "^1.0.3" + internal-slot "^1.0.5" + is-array-buffer "^3.0.2" + is-callable "^1.2.7" + is-negative-zero "^2.0.2" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + is-string "^1.0.7" + is-typed-array "^1.1.10" + is-weakref "^1.0.2" + object-inspect "^1.12.3" + object-keys "^1.1.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.4.3" + safe-regex-test "^1.0.0" + string.prototype.trim "^1.2.7" + string.prototype.trimend "^1.0.6" + string.prototype.trimstart "^1.0.6" + typed-array-length "^1.0.4" + unbox-primitive "^1.0.2" + which-typed-array "^1.1.9" + +es-array-method-boxes-properly@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" + integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== + +es-set-tostringtag@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8" + integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg== + dependencies: + get-intrinsic "^1.1.3" + has "^1.0.3" + has-tostringtag "^1.0.0" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +es5-ext@^0.10.35, es5-ext@^0.10.50: + version "0.10.62" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.62.tgz#5e6adc19a6da524bf3d1e02bbc8960e5eb49a9a5" + integrity sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA== + dependencies: + es6-iterator "^2.0.3" + es6-symbol "^3.1.3" + next-tick "^1.1.0" + +es6-iterator@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g== + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + +es6-promise@^4.2.8: + version "4.2.8" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" + integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== + +es6-symbol@^3.1.1, es6-symbol@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" + integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== + dependencies: + d "^1.0.1" + ext "^1.1.2" + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + +escape-string-regexp@1.0.5, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +escape-string-regexp@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +escodegen@1.8.x: + version "1.8.1" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018" + integrity sha512-yhi5S+mNTOuRvyW4gWlg5W1byMaQGWWSYHXsuFZ7GBo7tpyOwi2EdzMP/QWxh9hwkD2m+wDVHJsxhRIj+v/b/A== + dependencies: + esprima "^2.7.1" + estraverse "^1.9.1" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.2.0" + +esprima@2.7.x, esprima@^2.7.1: + version "2.7.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" + integrity sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A== + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +estraverse@^1.9.1: + version "1.9.3" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" + integrity sha512-25w1fMXQrGdoquWnScXZGckOv+Wes+JDnuN/+7ex3SauFRS72r2lFDec0EKPt2YD1wUJ/IrfEex+9yp4hfSOJA== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== + +eth-ens-namehash@2.0.8, eth-ens-namehash@^2.0.8: + version "2.0.8" + resolved "https://registry.yarnpkg.com/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz#229ac46eca86d52e0c991e7cb2aef83ff0f68bcf" + integrity sha512-VWEI1+KJfz4Km//dadyvBBoBeSQ0MHTXPvr8UIXiLW6IanxvAV+DmlZAijZwAyggqGUfwQBeHf7tc9wzc1piSw== + dependencies: + idna-uts46-hx "^2.3.1" + js-sha3 "^0.5.7" + +eth-gas-reporter@^0.2.25: + version "0.2.25" + resolved "https://registry.yarnpkg.com/eth-gas-reporter/-/eth-gas-reporter-0.2.25.tgz#546dfa946c1acee93cb1a94c2a1162292d6ff566" + integrity sha512-1fRgyE4xUB8SoqLgN3eDfpDfwEfRxh2Sz1b7wzFbyQA+9TekMmvSjjoRu9SKcSVyK+vLkLIsVbJDsTWjw195OQ== + dependencies: + "@ethersproject/abi" "^5.0.0-beta.146" + "@solidity-parser/parser" "^0.14.0" + cli-table3 "^0.5.0" + colors "1.4.0" + ethereum-cryptography "^1.0.3" + ethers "^4.0.40" + fs-readdir-recursive "^1.1.0" + lodash "^4.17.14" + markdown-table "^1.1.3" + mocha "^7.1.1" + req-cwd "^2.0.0" + request "^2.88.0" + request-promise-native "^1.0.5" + sha1 "^1.1.1" + sync-request "^6.0.0" + +eth-lib@0.2.8: + version "0.2.8" + resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.2.8.tgz#b194058bef4b220ad12ea497431d6cb6aa0623c8" + integrity sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw== + dependencies: + bn.js "^4.11.6" + elliptic "^6.4.0" + xhr-request-promise "^0.1.2" + +eth-lib@^0.1.26: + version "0.1.29" + resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.1.29.tgz#0c11f5060d42da9f931eab6199084734f4dbd1d9" + integrity sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ== + dependencies: + bn.js "^4.11.6" + elliptic "^6.4.0" + nano-json-stream-parser "^0.1.2" + servify "^0.1.12" + ws "^3.0.0" + xhr-request-promise "^0.1.2" + +ethereum-bloom-filters@^1.0.6: + version "1.0.10" + resolved "https://registry.yarnpkg.com/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz#3ca07f4aed698e75bd134584850260246a5fed8a" + integrity sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA== + dependencies: + js-sha3 "^0.8.0" + +ethereum-cryptography@0.1.3, ethereum-cryptography@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz#8d6143cfc3d74bf79bbd8edecdf29e4ae20dd191" + integrity sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ== + dependencies: + "@types/pbkdf2" "^3.0.0" + "@types/secp256k1" "^4.0.1" + blakejs "^1.1.0" + browserify-aes "^1.2.0" + bs58check "^2.1.2" + create-hash "^1.2.0" + create-hmac "^1.1.7" + hash.js "^1.1.7" + keccak "^3.0.0" + pbkdf2 "^3.0.17" + randombytes "^2.1.0" + safe-buffer "^5.1.2" + scrypt-js "^3.0.0" + secp256k1 "^4.0.1" + setimmediate "^1.0.5" + +ethereum-cryptography@^1.0.3: + version "1.2.0" + resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz#5ccfa183e85fdaf9f9b299a79430c044268c9b3a" + integrity sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw== + dependencies: + "@noble/hashes" "1.2.0" + "@noble/secp256k1" "1.7.1" + "@scure/bip32" "1.1.5" + "@scure/bip39" "1.1.1" + +ethereumjs-abi@^0.6.8: + version "0.6.8" + resolved "https://registry.yarnpkg.com/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz#71bc152db099f70e62f108b7cdfca1b362c6fcae" + integrity sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA== + dependencies: + bn.js "^4.11.8" + ethereumjs-util "^6.0.0" + +ethereumjs-common@^1.5.0: + version "1.5.2" + resolved "https://registry.yarnpkg.com/ethereumjs-common/-/ethereumjs-common-1.5.2.tgz#2065dbe9214e850f2e955a80e650cb6999066979" + integrity sha512-hTfZjwGX52GS2jcVO6E2sx4YuFnf0Fhp5ylo4pEPhEffNln7vS59Hr5sLnp3/QCazFLluuBZ+FZ6J5HTp0EqCA== + +ethereumjs-tx@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz#5dfe7688bf177b45c9a23f86cf9104d47ea35fed" + integrity sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw== + dependencies: + ethereumjs-common "^1.5.0" + ethereumjs-util "^6.0.0" + +ethereumjs-util@7.1.5, ethereumjs-util@^7.0.10, ethereumjs-util@^7.1.0, ethereumjs-util@^7.1.1, ethereumjs-util@^7.1.2, ethereumjs-util@^7.1.4, ethereumjs-util@^7.1.5: + version "7.1.5" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz#9ecf04861e4fbbeed7465ece5f23317ad1129181" + integrity sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg== + dependencies: + "@types/bn.js" "^5.1.0" + bn.js "^5.1.2" + create-hash "^1.1.2" + ethereum-cryptography "^0.1.3" + rlp "^2.2.4" + +ethereumjs-util@^6.0.0, ethereumjs-util@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz#fcb4e4dd5ceacb9d2305426ab1a5cd93e3163b69" + integrity sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw== + dependencies: + "@types/bn.js" "^4.11.3" + bn.js "^4.11.0" + create-hash "^1.1.2" + elliptic "^6.5.2" + ethereum-cryptography "^0.1.3" + ethjs-util "0.1.6" + rlp "^2.2.3" + +ethers@^4.0.32, ethers@^4.0.40: + version "4.0.49" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-4.0.49.tgz#0eb0e9161a0c8b4761be547396bbe2fb121a8894" + integrity sha512-kPltTvWiyu+OktYy1IStSO16i2e7cS9D9OxZ81q2UUaiNPVrm/RTcbxamCXF9VUSKzJIdJV68EAIhTEVBalRWg== + dependencies: + aes-js "3.0.0" + bn.js "^4.11.9" + elliptic "6.5.4" + hash.js "1.1.3" + js-sha3 "0.5.7" + scrypt-js "2.0.4" + setimmediate "1.0.4" + uuid "2.0.1" + xmlhttprequest "1.8.0" + +ethers@^5.0.13, ethers@^5.4.7, ethers@^5.7.1: + version "5.7.2" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e" + integrity sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg== + dependencies: + "@ethersproject/abi" "5.7.0" + "@ethersproject/abstract-provider" "5.7.0" + "@ethersproject/abstract-signer" "5.7.0" + "@ethersproject/address" "5.7.0" + "@ethersproject/base64" "5.7.0" + "@ethersproject/basex" "5.7.0" + "@ethersproject/bignumber" "5.7.0" + "@ethersproject/bytes" "5.7.0" + "@ethersproject/constants" "5.7.0" + "@ethersproject/contracts" "5.7.0" + "@ethersproject/hash" "5.7.0" + "@ethersproject/hdnode" "5.7.0" + "@ethersproject/json-wallets" "5.7.0" + "@ethersproject/keccak256" "5.7.0" + "@ethersproject/logger" "5.7.0" + "@ethersproject/networks" "5.7.1" + "@ethersproject/pbkdf2" "5.7.0" + "@ethersproject/properties" "5.7.0" + "@ethersproject/providers" "5.7.2" + "@ethersproject/random" "5.7.0" + "@ethersproject/rlp" "5.7.0" + "@ethersproject/sha2" "5.7.0" + "@ethersproject/signing-key" "5.7.0" + "@ethersproject/solidity" "5.7.0" + "@ethersproject/strings" "5.7.0" + "@ethersproject/transactions" "5.7.0" + "@ethersproject/units" "5.7.0" + "@ethersproject/wallet" "5.7.0" + "@ethersproject/web" "5.7.1" + "@ethersproject/wordlists" "5.7.0" + +ethjs-unit@0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/ethjs-unit/-/ethjs-unit-0.1.6.tgz#c665921e476e87bce2a9d588a6fe0405b2c41699" + integrity sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw== + dependencies: + bn.js "4.11.6" + number-to-bn "1.7.0" + +ethjs-util@0.1.6, ethjs-util@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/ethjs-util/-/ethjs-util-0.1.6.tgz#f308b62f185f9fe6237132fb2a9818866a5cd536" + integrity sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w== + dependencies: + is-hex-prefixed "1.0.0" + strip-hex-prefix "1.0.0" + +event-target-shim@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" + integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== + +eventemitter3@4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.4.tgz#b5463ace635a083d018bdc7c917b4c5f10a85384" + integrity sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ== + +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +express@^4.14.0: + version "4.18.2" + resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" + integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== + dependencies: + accepts "~1.3.8" + array-flatten "1.1.1" + body-parser "1.20.1" + content-disposition "0.5.4" + content-type "~1.0.4" + cookie "0.5.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "2.0.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "1.2.0" + fresh "0.5.2" + http-errors "2.0.0" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "2.4.1" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.7" + qs "6.11.0" + range-parser "~1.2.1" + safe-buffer "5.2.1" + send "0.18.0" + serve-static "1.15.0" + setprototypeof "1.2.0" + statuses "2.0.1" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +ext@^1.1.2: + version "1.7.0" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.7.0.tgz#0ea4383c0103d60e70be99e9a7f11027a33c4f5f" + integrity sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw== + dependencies: + type "^2.7.2" + +extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== + +extsprintf@^1.2.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" + integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== + +fast-check@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/fast-check/-/fast-check-3.1.1.tgz#72c5ae7022a4e86504762e773adfb8a5b0b01252" + integrity sha512-3vtXinVyuUKCKFKYcwXhGE6NtGWkqF8Yh3rvMZNzmwz8EPrgoc/v4pDdLHyLnCyCI5MZpZZkDEwFyXyEONOxpA== + dependencies: + pure-rand "^5.0.1" + +fast-deep-equal@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-glob@^3.0.3: + version "3.2.12" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" + integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fastq@^1.6.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" + integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== + dependencies: + reusify "^1.0.4" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" + integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "2.4.1" + parseurl "~1.3.3" + statuses "2.0.1" + unpipe "~1.0.0" + +find-replace@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-3.0.0.tgz#3e7e23d3b05167a76f770c9fbd5258b0def68c38" + integrity sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ== + dependencies: + array-back "^3.0.1" + +find-up@3.0.0, find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +find-up@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + integrity sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA== + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + +find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ== + dependencies: + locate-path "^2.0.0" + +flat@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/flat/-/flat-4.1.1.tgz#a392059cc382881ff98642f5da4dde0a959f309b" + integrity sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA== + dependencies: + is-buffer "~2.0.3" + +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== + +follow-redirects@^1.12.1: + version "1.15.2" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" + integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== + +for-each@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== + +form-data-encoder@1.7.1: + version "1.7.1" + resolved "https://registry.yarnpkg.com/form-data-encoder/-/form-data-encoder-1.7.1.tgz#ac80660e4f87ee0d3d3c3638b7da8278ddb8ec96" + integrity sha512-EFRDrsMm/kyqbTQocNvRXMLjc7Es2Vk+IQFx/YW7hkUH1eBl4J1fqiP34l74Yt0pFLCNpc06fkbVk00008mzjg== + +form-data@^2.2.0: + version "2.5.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.5.1.tgz#f2cbec57b5e59e23716e128fe44d4e5dd23895f4" + integrity sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== + +fp-ts@1.19.3: + version "1.19.3" + resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-1.19.3.tgz#261a60d1088fbff01f91256f91d21d0caaaaa96f" + integrity sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg== + +fp-ts@^1.0.0: + version "1.19.5" + resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-1.19.5.tgz#3da865e585dfa1fdfd51785417357ac50afc520a" + integrity sha512-wDNqTimnzs8QqpldiId9OavWK2NptormjXnRJTQecNjzwfyp6P/8s/zG8e4h3ja3oqkKaY72UlTjQYt/1yXf9A== + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== + +fs-extra@^0.30.0: + version "0.30.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0" + integrity sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^2.1.0" + klaw "^1.0.0" + path-is-absolute "^1.0.0" + rimraf "^2.2.8" + +fs-extra@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" + integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^7.0.0, fs-extra@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" + integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-minipass@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" + integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== + dependencies: + minipass "^2.6.0" + +fs-readdir-recursive@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" + integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA== + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@~2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" + integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== + +fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +function.prototype.name@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" + integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.0" + functions-have-names "^1.2.2" + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== + +functions-have-names@^1.2.2, functions-have-names@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== + +get-caller-file@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" + integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== + +get-caller-file@^2.0.1, get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-func-name@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" + integrity sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig== + +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz#7ad1dc0535f3a2904bba075772763e5051f6d05f" + integrity sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.3" + +get-port@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/get-port/-/get-port-3.2.0.tgz#dd7ce7de187c06c8bf353796ac71e099f0980ebc" + integrity sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg== + +get-stream@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + +get-stream@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + dependencies: + pump "^3.0.0" + +get-stream@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +get-symbol-description@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" + integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== + dependencies: + assert-plus "^1.0.0" + +ghost-testrpc@^0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/ghost-testrpc/-/ghost-testrpc-0.0.2.tgz#c4de9557b1d1ae7b2d20bbe474a91378ca90ce92" + integrity sha512-i08dAEgJ2g8z5buJIrCTduwPIhih3DP+hOCTyyryikfV8T0bNvHnGXO67i0DD1H4GBDETTclPy9njZbfluQYrQ== + dependencies: + chalk "^2.4.2" + node-emoji "^1.10.0" + +glob-parent@^5.1.2, glob-parent@~5.1.0, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob@7.1.3: + version "7.1.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" + integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@7.1.7: + version "7.1.7" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" + integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" + integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^5.0.15: + version "5.0.15" + resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" + integrity sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA== + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "2 || 3" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.0.0, glob@^7.1.3: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global-modules@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" + integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== + dependencies: + global-prefix "^3.0.0" + +global-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" + integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== + dependencies: + ini "^1.3.5" + kind-of "^6.0.2" + which "^1.3.1" + +global@~4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406" + integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w== + dependencies: + min-document "^2.19.0" + process "^0.11.10" + +globalthis@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" + integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== + dependencies: + define-properties "^1.1.3" + +globby@^10.0.1: + version "10.0.2" + resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.2.tgz#277593e745acaa4646c3ab411289ec47a0392543" + integrity sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg== + dependencies: + "@types/glob" "^7.1.1" + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.0.3" + glob "^7.1.3" + ignore "^5.1.1" + merge2 "^1.2.3" + slash "^3.0.0" + +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + +got@12.1.0: + version "12.1.0" + resolved "https://registry.yarnpkg.com/got/-/got-12.1.0.tgz#099f3815305c682be4fd6b0ee0726d8e4c6b0af4" + integrity sha512-hBv2ty9QN2RdbJJMK3hesmSkFTjVIHyIDDbssCKnSmq62edGgImJWD10Eb1k77TiV1bxloxqcFAVK8+9pkhOig== + dependencies: + "@sindresorhus/is" "^4.6.0" + "@szmarczak/http-timer" "^5.0.1" + "@types/cacheable-request" "^6.0.2" + "@types/responselike" "^1.0.0" + cacheable-lookup "^6.0.4" + cacheable-request "^7.0.2" + decompress-response "^6.0.0" + form-data-encoder "1.7.1" + get-stream "^6.0.1" + http2-wrapper "^2.1.10" + lowercase-keys "^3.0.0" + p-cancelable "^3.0.0" + responselike "^2.0.0" + +got@9.6.0: + version "9.6.0" + resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" + integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== + dependencies: + "@sindresorhus/is" "^0.14.0" + "@szmarczak/http-timer" "^1.1.2" + cacheable-request "^6.0.0" + decompress-response "^3.3.0" + duplexer3 "^0.1.4" + get-stream "^4.1.0" + lowercase-keys "^1.0.1" + mimic-response "^1.0.1" + p-cancelable "^1.0.0" + to-readable-stream "^1.0.0" + url-parse-lax "^3.0.0" + +got@^11.8.5: + version "11.8.6" + resolved "https://registry.yarnpkg.com/got/-/got-11.8.6.tgz#276e827ead8772eddbcfc97170590b841823233a" + integrity sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g== + dependencies: + "@sindresorhus/is" "^4.0.0" + "@szmarczak/http-timer" "^4.0.5" + "@types/cacheable-request" "^6.0.1" + "@types/responselike" "^1.0.0" + cacheable-lookup "^5.0.3" + cacheable-request "^7.0.2" + decompress-response "^6.0.0" + http2-wrapper "^1.0.0-beta.5.2" + lowercase-keys "^2.0.0" + p-cancelable "^2.0.0" + responselike "^2.0.0" + +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +growl@1.10.5: + version "1.10.5" + resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" + integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== + +handlebars@^4.0.1: + version "4.7.7" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" + integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== + dependencies: + minimist "^1.2.5" + neo-async "^2.6.0" + source-map "^0.6.1" + wordwrap "^1.0.0" + optionalDependencies: + uglify-js "^3.1.4" + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== + +har-validator@~5.1.3: + version "5.1.5" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" + integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== + dependencies: + ajv "^6.12.3" + har-schema "^2.0.0" + +hardhat-gas-reporter@^1.0.8: + version "1.0.9" + resolved "https://registry.yarnpkg.com/hardhat-gas-reporter/-/hardhat-gas-reporter-1.0.9.tgz#9a2afb354bc3b6346aab55b1c02ca556d0e16450" + integrity sha512-INN26G3EW43adGKBNzYWOlI3+rlLnasXTwW79YNnUhXPDa+yHESgt639dJEs37gCjhkbNKcRRJnomXEuMFBXJg== + dependencies: + array-uniq "1.0.3" + eth-gas-reporter "^0.2.25" + sha1 "^1.1.1" + +hardhat@^2.14.0: + version "2.14.0" + resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.14.0.tgz#b60c74861494aeb1b50803cf04cc47865a42b87a" + integrity sha512-73jsInY4zZahMSVFurSK+5TNCJTXMv+vemvGia0Ac34Mm19fYp6vEPVGF3sucbumszsYxiTT2TbS8Ii2dsDSoQ== + dependencies: + "@ethersproject/abi" "^5.1.2" + "@metamask/eth-sig-util" "^4.0.0" + "@nomicfoundation/ethereumjs-block" "5.0.1" + "@nomicfoundation/ethereumjs-blockchain" "7.0.1" + "@nomicfoundation/ethereumjs-common" "4.0.1" + "@nomicfoundation/ethereumjs-evm" "2.0.1" + "@nomicfoundation/ethereumjs-rlp" "5.0.1" + "@nomicfoundation/ethereumjs-statemanager" "2.0.1" + "@nomicfoundation/ethereumjs-trie" "6.0.1" + "@nomicfoundation/ethereumjs-tx" "5.0.1" + "@nomicfoundation/ethereumjs-util" "9.0.1" + "@nomicfoundation/ethereumjs-vm" "7.0.1" + "@nomicfoundation/solidity-analyzer" "^0.1.0" + "@sentry/node" "^5.18.1" + "@types/bn.js" "^5.1.0" + "@types/lru-cache" "^5.1.0" + abort-controller "^3.0.0" + adm-zip "^0.4.16" + aggregate-error "^3.0.0" + ansi-escapes "^4.3.0" + chalk "^2.4.2" + chokidar "^3.4.0" + ci-info "^2.0.0" + debug "^4.1.1" + enquirer "^2.3.0" + env-paths "^2.2.0" + ethereum-cryptography "^1.0.3" + ethereumjs-abi "^0.6.8" + find-up "^2.1.0" + fp-ts "1.19.3" + fs-extra "^7.0.1" + glob "7.2.0" + immutable "^4.0.0-rc.12" + io-ts "1.10.4" + keccak "^3.0.2" + lodash "^4.17.11" + mnemonist "^0.38.0" + mocha "^10.0.0" + p-map "^4.0.0" + qs "^6.7.0" + raw-body "^2.4.1" + resolve "1.17.0" + semver "^6.3.0" + solc "0.7.3" + source-map-support "^0.5.13" + stacktrace-parser "^0.1.10" + tsort "0.0.1" + undici "^5.14.0" + uuid "^8.3.2" + ws "^7.4.6" + +has-bigints@^1.0.1, has-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== + +has-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" + integrity sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-property-descriptors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" + integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + dependencies: + get-intrinsic "^1.1.1" + +has-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" + integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== + +has-symbols@^1.0.0, has-symbols@^1.0.2, has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has-tostringtag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== + dependencies: + has-symbols "^1.0.2" + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hash-base@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== + dependencies: + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +hash.js@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846" + integrity sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.0" + +hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +he@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +header-case@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/header-case/-/header-case-1.0.1.tgz#9535973197c144b09613cd65d317ef19963bd02d" + integrity sha512-i0q9mkOeSuhXw6bGgiQCCBgY/jlZuV/7dZXyZ9c6LcBrqwvT8eT719E9uxE5LiZftdl+z81Ugbg/VvXV4OJOeQ== + dependencies: + no-case "^2.2.0" + upper-case "^1.1.3" + +"heap@>= 0.2.0": + version "0.2.7" + resolved "https://registry.yarnpkg.com/heap/-/heap-0.2.7.tgz#1e6adf711d3f27ce35a81fe3b7bd576c2260a8fc" + integrity sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg== + +highlight.js@^10.4.1: + version "10.7.3" + resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.7.3.tgz#697272e3991356e40c3cac566a74eef681756531" + integrity sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A== + +highlightjs-solidity@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/highlightjs-solidity/-/highlightjs-solidity-2.0.6.tgz#e7a702a2b05e0a97f185e6ba39fd4846ad23a990" + integrity sha512-DySXWfQghjm2l6a/flF+cteroJqD4gI8GSdL4PtvxZSsAHie8m3yVe2JFoRg03ROKT6hp2Lc/BxXkqerNmtQYg== + +hmac-drbg@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +hosted-git-info@^2.1.4: + version "2.8.9" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" + integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== + +htmlparser2@^8.0.1: + version "8.0.2" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-8.0.2.tgz#f002151705b383e62433b5cf466f5b716edaec21" + integrity sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA== + dependencies: + domelementtype "^2.3.0" + domhandler "^5.0.3" + domutils "^3.0.1" + entities "^4.4.0" + +http-basic@^8.1.1: + version "8.1.3" + resolved "https://registry.yarnpkg.com/http-basic/-/http-basic-8.1.3.tgz#a7cabee7526869b9b710136970805b1004261bbf" + integrity sha512-/EcDMwJZh3mABI2NhGfHOGOeOZITqfkEO4p/xK+l3NpyncIHUQBoMvCSF/b5GqvKtySC2srL/GGG3+EtlqlmCw== + dependencies: + caseless "^0.12.0" + concat-stream "^1.6.2" + http-response-object "^3.0.1" + parse-cache-control "^1.0.1" + +http-cache-semantics@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" + integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== + +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== + dependencies: + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" + +http-https@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/http-https/-/http-https-1.0.0.tgz#2f908dd5f1db4068c058cd6e6d4ce392c913389b" + integrity sha512-o0PWwVCSp3O0wS6FvNr6xfBCHgt0m1tvPLFOCc2iFDKTRAXhB7m8klDf7ErowFH8POa6dVdGatKU5I1YYwzUyg== + +http-response-object@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/http-response-object/-/http-response-object-3.0.2.tgz#7f435bb210454e4360d074ef1f989d5ea8aa9810" + integrity sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA== + dependencies: + "@types/node" "^10.0.3" + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +http2-wrapper@^1.0.0-beta.5.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d" + integrity sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg== + dependencies: + quick-lru "^5.1.1" + resolve-alpn "^1.0.0" + +http2-wrapper@^2.1.10: + version "2.2.0" + resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-2.2.0.tgz#b80ad199d216b7d3680195077bd7b9060fa9d7f3" + integrity sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ== + dependencies: + quick-lru "^5.1.1" + resolve-alpn "^1.2.0" + +https-proxy-agent@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + dependencies: + agent-base "6" + debug "4" + +iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +idna-uts46-hx@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/idna-uts46-hx/-/idna-uts46-hx-2.3.1.tgz#a1dc5c4df37eee522bf66d969cc980e00e8711f9" + integrity sha512-PWoF9Keq6laYdIRwwCdhTPl60xRqAloYNMQLiyUnG42VjT53oW07BXIRM+NK7eQjzXjAk2gUvX9caRxlnF9TAA== + dependencies: + punycode "2.1.0" + +ieee754@^1.1.13, ieee754@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +ignore@^5.1.1: + version "5.2.4" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" + integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== + +immutable@^4.0.0-rc.12: + version "4.3.0" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.0.tgz#eb1738f14ffb39fd068b1dbe1296117484dd34be" + integrity sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg== + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +ini@^1.3.5: + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +internal-slot@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" + integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== + dependencies: + get-intrinsic "^1.2.0" + has "^1.0.3" + side-channel "^1.0.4" + +interpret@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" + integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== + +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + integrity sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ== + +io-ts@1.10.4: + version "1.10.4" + resolved "https://registry.yarnpkg.com/io-ts/-/io-ts-1.10.4.tgz#cd5401b138de88e4f920adbcb7026e2d1967e6e2" + integrity sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g== + dependencies: + fp-ts "^1.0.0" + +ipaddr.js@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +is-arguments@^1.0.4: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" + integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" + integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.0" + is-typed-array "^1.1.10" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + +is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-buffer@^2.0.5, is-buffer@~2.0.3: + version "2.0.5" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" + integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== + +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== + +is-core-module@^2.11.0: + version "2.12.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.12.0.tgz#36ad62f6f73c8253fd6472517a12483cf03e7ec4" + integrity sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ== + dependencies: + has "^1.0.3" + +is-date-object@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + integrity sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw== + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-function@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.2.tgz#4f097f30abf6efadac9833b17ca5dc03f8144e08" + integrity sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ== + +is-generator-function@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" + integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== + dependencies: + has-tostringtag "^1.0.0" + +is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-hex-prefixed@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz#7d8d37e6ad77e5d127148913c573e082d777f554" + integrity sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA== + +is-lower-case@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/is-lower-case/-/is-lower-case-1.1.3.tgz#7e147be4768dc466db3bfb21cc60b31e6ad69393" + integrity sha512-+5A1e/WJpLLXZEDlgz4G//WYSHyQBD32qa4Jd3Lw06qQlv3fJHnp3YIHjTQSGzHMgzmVKz2ZP3rBxTHkPw/lxA== + dependencies: + lower-case "^1.1.0" + +is-negative-zero@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" + integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== + +is-number-object@^1.0.4: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" + integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== + dependencies: + has-tostringtag "^1.0.0" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-plain-obj@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== + +is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-shared-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" + integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== + dependencies: + call-bind "^1.0.2" + +is-string@^1.0.5, is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== + dependencies: + has-tostringtag "^1.0.0" + +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" + +is-typed-array@^1.1.10, is-typed-array@^1.1.3, is-typed-array@^1.1.9: + version "1.1.10" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.10.tgz#36a5b5cb4189b575d1a3e4b08536bfb485801e3f" + integrity sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + +is-typedarray@^1.0.0, is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== + +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + +is-upper-case@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-upper-case/-/is-upper-case-1.1.2.tgz#8d0b1fa7e7933a1e58483600ec7d9661cbaf756f" + integrity sha512-GQYSJMgfeAmVwh9ixyk888l7OIhNAGKtY6QA+IrWlu9MDTCaXmeozOZ2S9Knj7bQwBO/H6J2kb+pbyTUiMNbsw== + dependencies: + upper-case "^1.1.0" + +is-utf8@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + integrity sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q== + +is-weakref@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== + dependencies: + call-bind "^1.0.2" + +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== + +js-sdsl@^4.1.4: + version "4.4.0" + resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.4.0.tgz#8b437dbe642daa95760400b602378ed8ffea8430" + integrity sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg== + +js-sha3@0.5.7, js-sha3@^0.5.7: + version "0.5.7" + resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.5.7.tgz#0d4ffd8002d5333aabaf4a23eed2f6374c9f28e7" + integrity sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g== + +js-sha3@0.8.0, js-sha3@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" + integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== + +js-yaml@3.13.1: + version "3.13.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" + integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +js-yaml@3.x: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +js-yaml@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== + +json-buffer@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" + integrity sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ== + +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +json-schema@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" + integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== + +jsonfile@^2.1.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" + integrity sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw== + optionalDependencies: + graceful-fs "^4.1.6" + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== + optionalDependencies: + graceful-fs "^4.1.6" + +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +jsonschema@^1.2.4: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsonschema/-/jsonschema-1.4.1.tgz#cc4c3f0077fb4542982973d8a083b6b34f482dab" + integrity sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ== + +jsprim@^1.2.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" + integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.4.0" + verror "1.10.0" + +keccak@^3.0.0, keccak@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.3.tgz#4bc35ad917be1ef54ff246f904c2bbbf9ac61276" + integrity sha512-JZrLIAJWuZxKbCilMpNz5Vj7Vtb4scDG3dMXLOsbzBmQGyjwE61BbW7bJkfKKCShXiQZt3T6sBgALRtmd+nZaQ== + dependencies: + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + readable-stream "^3.6.0" + +keyv@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" + integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== + dependencies: + json-buffer "3.0.0" + +keyv@^4.0.0: + version "4.5.2" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.2.tgz#0e310ce73bf7851ec702f2eaf46ec4e3805cce56" + integrity sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g== + dependencies: + json-buffer "3.0.1" + +kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +klaw@^1.0.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" + integrity sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw== + optionalDependencies: + graceful-fs "^4.1.9" + +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + integrity sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw== + dependencies: + invert-kv "^1.0.0" + +level-supports@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/level-supports/-/level-supports-4.0.1.tgz#431546f9d81f10ff0fea0e74533a0e875c08c66a" + integrity sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA== + +level-transcoder@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/level-transcoder/-/level-transcoder-1.0.1.tgz#f8cef5990c4f1283d4c86d949e73631b0bc8ba9c" + integrity sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w== + dependencies: + buffer "^6.0.3" + module-error "^1.0.1" + +level@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/level/-/level-8.0.0.tgz#41b4c515dabe28212a3e881b61c161ffead14394" + integrity sha512-ypf0jjAk2BWI33yzEaaotpq7fkOPALKAgDBxggO6Q9HGX2MRXn0wbP1Jn/tJv1gtL867+YOjOB49WaUF3UoJNQ== + dependencies: + browser-level "^1.0.1" + classic-level "^1.2.0" + +levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +load-json-file@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + integrity sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A== + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA== + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash.assign@^4.0.3, lodash.assign@^4.0.6: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" + integrity sha512-hFuH8TY+Yji7Eja3mGiuAxBqLagejScbG8GbG0j6o9vzn0YL14My+ktnqtZgFTosKymC9/44wP6s7xyuLfnClw== + +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash.truncate@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" + integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw== + +lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.16, lodash@^4.17.19, lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +log-symbols@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4" + integrity sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ== + dependencies: + chalk "^2.4.2" + +log-symbols@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + +loupe@^2.3.1: + version "2.3.6" + resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.6.tgz#76e4af498103c532d1ecc9be102036a21f787b53" + integrity sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA== + dependencies: + get-func-name "^2.0.0" + +lower-case-first@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/lower-case-first/-/lower-case-first-1.0.2.tgz#e5da7c26f29a7073be02d52bac9980e5922adfa1" + integrity sha512-UuxaYakO7XeONbKrZf5FEgkantPf5DUqDayzP5VXZrtRPdH86s4kN47I8B3TW10S4QKiE3ziHNf3kRN//okHjA== + dependencies: + lower-case "^1.1.2" + +lower-case@^1.1.0, lower-case@^1.1.1, lower-case@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" + integrity sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA== + +lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" + integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== + +lowercase-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" + integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== + +lowercase-keys@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-3.0.0.tgz#c5e7d442e37ead247ae9db117a9d0a467c89d4f2" + integrity sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ== + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +lru_map@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/lru_map/-/lru_map-0.3.3.tgz#b5c8351b9464cbd750335a79650a0ec0e56118dd" + integrity sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ== + +make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + +markdown-table@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-1.1.3.tgz#9fcb69bcfdb8717bfd0398c6ec2d93036ef8de60" + integrity sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q== + +mcl-wasm@^0.7.1: + version "0.7.9" + resolved "https://registry.yarnpkg.com/mcl-wasm/-/mcl-wasm-0.7.9.tgz#c1588ce90042a8700c3b60e40efb339fc07ab87f" + integrity sha512-iJIUcQWA88IJB/5L15GnJVnSQJmf/YaxxV6zRavv83HILHaJQb6y0iFyDMdDO0gN8X37tdxmAOrH/P8B6RB8sQ== + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== + +memory-level@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/memory-level/-/memory-level-1.0.0.tgz#7323c3fd368f9af2f71c3cd76ba403a17ac41692" + integrity sha512-UXzwewuWeHBz5krr7EvehKcmLFNoXxGcvuYhC41tRnkrTbJohtS7kVn9akmgirtRygg+f7Yjsfi8Uu5SGSQ4Og== + dependencies: + abstract-level "^1.0.0" + functional-red-black-tree "^1.0.1" + module-error "^1.0.1" + +memorystream@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" + integrity sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw== + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== + +merge2@^1.2.3, merge2@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== + +micromatch@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12, mime-types@^2.1.16, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mimic-response@^1.0.0, mimic-response@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== + +mimic-response@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" + integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== + +min-document@^2.19.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" + integrity sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ== + dependencies: + dom-walk "^0.1.0" + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== + +"minimatch@2 || 3", minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimatch@5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.0.1.tgz#fb9022f7528125187c92bd9e9b6366be1cf3415b" + integrity sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g== + dependencies: + brace-expansion "^2.0.1" + +minimist@^1.2.5, minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +minipass@^2.6.0, minipass@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" + integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== + dependencies: + safe-buffer "^5.1.2" + yallist "^3.0.0" + +minizlib@^1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" + integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== + dependencies: + minipass "^2.9.0" + +mkdirp-promise@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz#e9b8f68e552c68a9c1713b84883f7a1dd039b8a1" + integrity sha512-Hepn5kb1lJPtVW84RFT40YG1OddBNTOVUZR2bzQUHc+Z03en8/3uX0+060JDhcEzyO08HmipsN9DcnFMxhIL9w== + dependencies: + mkdirp "*" + +mkdirp@*: + version "3.0.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-3.0.1.tgz#e44e4c5607fb279c168241713cc6e0fea9adcb50" + integrity sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg== + +mkdirp@0.5.5: + version "0.5.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + dependencies: + minimist "^1.2.5" + +mkdirp@0.5.x, mkdirp@^0.5.5: + version "0.5.6" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + +mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +mnemonist@^0.38.0: + version "0.38.5" + resolved "https://registry.yarnpkg.com/mnemonist/-/mnemonist-0.38.5.tgz#4adc7f4200491237fe0fa689ac0b86539685cade" + integrity sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg== + dependencies: + obliterator "^2.0.0" + +mocha@7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-7.1.2.tgz#8e40d198acf91a52ace122cd7599c9ab857b29e6" + integrity sha512-o96kdRKMKI3E8U0bjnfqW4QMk12MwZ4mhdBTf+B5a1q9+aq2HRnj+3ZdJu0B/ZhJeK78MgYuv6L8d/rA5AeBJA== + dependencies: + ansi-colors "3.2.3" + browser-stdout "1.3.1" + chokidar "3.3.0" + debug "3.2.6" + diff "3.5.0" + escape-string-regexp "1.0.5" + find-up "3.0.0" + glob "7.1.3" + growl "1.10.5" + he "1.2.0" + js-yaml "3.13.1" + log-symbols "3.0.0" + minimatch "3.0.4" + mkdirp "0.5.5" + ms "2.1.1" + node-environment-flags "1.0.6" + object.assign "4.1.0" + strip-json-comments "2.0.1" + supports-color "6.0.0" + which "1.3.1" + wide-align "1.1.3" + yargs "13.3.2" + yargs-parser "13.1.2" + yargs-unparser "1.6.0" + +mocha@^10.0.0: + version "10.2.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.2.0.tgz#1fd4a7c32ba5ac372e03a17eef435bd00e5c68b8" + integrity sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg== + dependencies: + ansi-colors "4.1.1" + browser-stdout "1.3.1" + chokidar "3.5.3" + debug "4.3.4" + diff "5.0.0" + escape-string-regexp "4.0.0" + find-up "5.0.0" + glob "7.2.0" + he "1.2.0" + js-yaml "4.1.0" + log-symbols "4.1.0" + minimatch "5.0.1" + ms "2.1.3" + nanoid "3.3.3" + serialize-javascript "6.0.0" + strip-json-comments "3.1.1" + supports-color "8.1.1" + workerpool "6.2.1" + yargs "16.2.0" + yargs-parser "20.2.4" + yargs-unparser "2.0.0" + +mocha@^7.1.1: + version "7.2.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-7.2.0.tgz#01cc227b00d875ab1eed03a75106689cfed5a604" + integrity sha512-O9CIypScywTVpNaRrCAgoUnJgozpIofjKUYmJhiCIJMiuYnLI6otcb1/kpW9/n/tJODHGZ7i8aLQoDVsMtOKQQ== + dependencies: + ansi-colors "3.2.3" + browser-stdout "1.3.1" + chokidar "3.3.0" + debug "3.2.6" + diff "3.5.0" + escape-string-regexp "1.0.5" + find-up "3.0.0" + glob "7.1.3" + growl "1.10.5" + he "1.2.0" + js-yaml "3.13.1" + log-symbols "3.0.0" + minimatch "3.0.4" + mkdirp "0.5.5" + ms "2.1.1" + node-environment-flags "1.0.6" + object.assign "4.1.0" + strip-json-comments "2.0.1" + supports-color "6.0.0" + which "1.3.1" + wide-align "1.1.3" + yargs "13.3.2" + yargs-parser "13.1.2" + yargs-unparser "1.6.0" + +mock-fs@^4.1.0: + version "4.14.0" + resolved "https://registry.yarnpkg.com/mock-fs/-/mock-fs-4.14.0.tgz#ce5124d2c601421255985e6e94da80a7357b1b18" + integrity sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw== + +module-error@^1.0.1, module-error@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/module-error/-/module-error-1.0.2.tgz#8d1a48897ca883f47a45816d4fb3e3c6ba404d86" + integrity sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA== + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + +ms@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@2.1.3, ms@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +multibase@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/multibase/-/multibase-0.7.0.tgz#1adfc1c50abe05eefeb5091ac0c2728d6b84581b" + integrity sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg== + dependencies: + base-x "^3.0.8" + buffer "^5.5.0" + +multibase@~0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/multibase/-/multibase-0.6.1.tgz#b76df6298536cc17b9f6a6db53ec88f85f8cc12b" + integrity sha512-pFfAwyTjbbQgNc3G7D48JkJxWtoJoBMaR4xQUOuB8RnCgRqaYmWNFeJTTvrJ2w51bjLq2zTby6Rqj9TQ9elSUw== + dependencies: + base-x "^3.0.8" + buffer "^5.5.0" + +multicodec@^0.5.5: + version "0.5.7" + resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-0.5.7.tgz#1fb3f9dd866a10a55d226e194abba2dcc1ee9ffd" + integrity sha512-PscoRxm3f+88fAtELwUnZxGDkduE2HD9Q6GHUOywQLjOGT/HAdhjLDYNZ1e7VR0s0TP0EwZ16LNUTFpoBGivOA== + dependencies: + varint "^5.0.0" + +multicodec@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-1.0.4.tgz#46ac064657c40380c28367c90304d8ed175a714f" + integrity sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg== + dependencies: + buffer "^5.6.0" + varint "^5.0.0" + +multihashes@^0.4.15, multihashes@~0.4.15: + version "0.4.21" + resolved "https://registry.yarnpkg.com/multihashes/-/multihashes-0.4.21.tgz#dc02d525579f334a7909ade8a122dabb58ccfcb5" + integrity sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw== + dependencies: + buffer "^5.5.0" + multibase "^0.7.0" + varint "^5.0.0" + +nano-base32@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/nano-base32/-/nano-base32-1.0.1.tgz#ba548c879efcfb90da1c4d9e097db4a46c9255ef" + integrity sha512-sxEtoTqAPdjWVGv71Q17koMFGsOMSiHsIFEvzOM7cNp8BXB4AnEwmDabm5dorusJf/v1z7QxaZYxUorU9RKaAw== + +nano-json-stream-parser@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz#0cc8f6d0e2b622b479c40d499c46d64b755c6f5f" + integrity sha512-9MqxMH/BSJC7dnLsEMPyfN5Dvoo49IsPFYMcHw3Bcfc2kN0lpHRBSzlMSVx4HGyJ7s9B31CyBTVehWJoQ8Ctew== + +nanoid@3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8b7aa761fe807dba2d1b98fb7241bb724a25" + integrity sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w== + +napi-macros@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/napi-macros/-/napi-macros-2.2.2.tgz#817fef20c3e0e40a963fbf7b37d1600bd0201044" + integrity sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g== + +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + +neo-async@^2.6.0: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +next-tick@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" + integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== + +no-case@^2.2.0, no-case@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" + integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ== + dependencies: + lower-case "^1.1.1" + +node-addon-api@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" + integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== + +node-emoji@^1.10.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.11.0.tgz#69a0150e6946e2f115e9d7ea4df7971e2628301c" + integrity sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A== + dependencies: + lodash "^4.17.21" + +node-environment-flags@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/node-environment-flags/-/node-environment-flags-1.0.6.tgz#a30ac13621f6f7d674260a54dede048c3982c088" + integrity sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw== + dependencies: + object.getownpropertydescriptors "^2.0.3" + semver "^5.7.0" + +node-fetch@2.6.7: + version "2.6.7" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" + integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== + dependencies: + whatwg-url "^5.0.0" + +node-fetch@^2.6.7: + version "2.6.9" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.9.tgz#7c7f744b5cc6eb5fd404e0c7a9fec630a55657e6" + integrity sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg== + dependencies: + whatwg-url "^5.0.0" + +node-gyp-build@^4.2.0, node-gyp-build@^4.3.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.6.0.tgz#0c52e4cbf54bbd28b709820ef7b6a3c2d6209055" + integrity sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ== + +nofilter@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/nofilter/-/nofilter-1.0.4.tgz#78d6f4b6a613e7ced8b015cec534625f7667006e" + integrity sha512-N8lidFp+fCz+TD51+haYdbDGrcBWwuHX40F5+z0qkUjMJ5Tp+rdSuAkMJ9N9eoolDlEVTf6u5icM+cNKkKW2mA== + +nofilter@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/nofilter/-/nofilter-3.1.0.tgz#c757ba68801d41ff930ba2ec55bab52ca184aa66" + integrity sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g== + +nopt@3.x: + version "3.0.6" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" + integrity sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg== + dependencies: + abbrev "1" + +normalize-package-data@^2.3.2: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-url@^4.1.0: + version "4.5.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" + integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== + +normalize-url@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" + integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== + +nth-check@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" + integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== + dependencies: + boolbase "^1.0.0" + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + integrity sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ== + +number-to-bn@1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/number-to-bn/-/number-to-bn-1.7.0.tgz#bb3623592f7e5f9e0030b1977bd41a0c53fe1ea0" + integrity sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig== + dependencies: + bn.js "4.11.6" + strip-hex-prefix "1.0.0" + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +object-assign@^4, object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-inspect@^1.12.3, object-inspect@^1.9.0: + version "1.12.3" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" + integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== + +object-keys@^1.0.11, object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object.assign@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" + integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== + dependencies: + define-properties "^1.1.2" + function-bind "^1.1.1" + has-symbols "^1.0.0" + object-keys "^1.0.11" + +object.assign@^4.1.4: + version "4.1.4" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" + integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + has-symbols "^1.0.3" + object-keys "^1.1.1" + +object.getownpropertydescriptors@^2.0.3: + version "2.1.6" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.6.tgz#5e5c384dd209fa4efffead39e3a0512770ccc312" + integrity sha512-lq+61g26E/BgHv0ZTFgRvi7NMEPuAxLkFU7rukXjc/AlwH4Am5xXVnIXy3un1bg/JPbXHrixRkK1itUzzPiIjQ== + dependencies: + array.prototype.reduce "^1.0.5" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.21.2" + safe-array-concat "^1.0.0" + +obliterator@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/obliterator/-/obliterator-2.0.4.tgz#fa650e019b2d075d745e44f1effeb13a2adbe816" + integrity sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ== + +oboe@2.1.5: + version "2.1.5" + resolved "https://registry.yarnpkg.com/oboe/-/oboe-2.1.5.tgz#5554284c543a2266d7a38f17e073821fbde393cd" + integrity sha512-zRFWiF+FoicxEs3jNI/WYUrVEgA7DeET/InK0XQuudGHRg8iIob3cNPrJTKaz4004uaA9Pbe+Dwa8iluhjLZWA== + dependencies: + http-https "^1.0.0" + +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" + +once@1.x, once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +optionator@^0.8.1: + version "0.8.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.6" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + word-wrap "~1.2.3" + +ordinal@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/ordinal/-/ordinal-1.0.3.tgz#1a3c7726a61728112f50944ad7c35c06ae3a0d4d" + integrity sha512-cMddMgb2QElm8G7vdaa02jhUNbTSrhsgAGUz1OokD83uJTwSUn+nKoNoKVVaRa08yF6sgfO7Maou1+bgLd9rdQ== + +os-locale@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" + integrity sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g== + dependencies: + lcid "^1.0.0" + +os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== + +p-cancelable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" + integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== + +p-cancelable@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf" + integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg== + +p-cancelable@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-3.0.0.tgz#63826694b54d61ca1c20ebcb6d3ecf5e14cd8050" + integrity sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw== + +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" + +p-limit@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg== + dependencies: + p-limit "^1.1.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww== + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +param-case@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" + integrity sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w== + dependencies: + no-case "^2.2.0" + +parse-asn1@^5.0.0, parse-asn1@^5.1.5: + version "5.1.6" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" + integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== + dependencies: + asn1.js "^5.2.0" + browserify-aes "^1.0.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + safe-buffer "^5.1.1" + +parse-cache-control@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parse-cache-control/-/parse-cache-control-1.0.1.tgz#8eeab3e54fa56920fe16ba38f77fa21aacc2d74e" + integrity sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg== + +parse-headers@^2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.5.tgz#069793f9356a54008571eb7f9761153e6c770da9" + integrity sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA== + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + integrity sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ== + dependencies: + error-ex "^1.2.0" + +parse5-htmlparser2-tree-adapter@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz#23c2cc233bcf09bb7beba8b8a69d46b08c62c2f1" + integrity sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g== + dependencies: + domhandler "^5.0.2" + parse5 "^7.0.0" + +parse5@^7.0.0: + version "7.1.2" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.1.2.tgz#0736bebbfd77793823240a23b7fc5e010b7f8e32" + integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw== + dependencies: + entities "^4.4.0" + +parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +pascal-case@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-2.0.1.tgz#2d578d3455f660da65eca18ef95b4e0de912761e" + integrity sha512-qjS4s8rBOJa2Xm0jmxXiyh1+OFf6ekCWOvUaRgAQSktzlTbMotS0nmG9gyYAybCWBcuP4fsBeRCKNwGBnMe2OQ== + dependencies: + camel-case "^3.0.0" + upper-case-first "^1.1.0" + +path-case@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/path-case/-/path-case-2.1.1.tgz#94b8037c372d3fe2906e465bb45e25d226e8eea5" + integrity sha512-Ou0N05MioItesaLr9q8TtHVWmJ6fxWdqKB2RohFmNWVyJ+2zeKIeDNWAN6B/Pe7wpzWChhZX6nONYmOnMeJQ/Q== + dependencies: + no-case "^2.2.0" + +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + integrity sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ== + dependencies: + pinkie-promise "^2.0.0" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-parse@^1.0.6, path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== + +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + integrity sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg== + dependencies: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +pathval@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" + integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== + +pbkdf2@^3.0.17, pbkdf2@^3.0.3: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" + integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pify@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + integrity sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw== + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + integrity sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg== + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== + +prepend-http@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" + integrity sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA== + +prettier@^2.3.1: + version "2.8.8" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" + integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== + +promise@^8.0.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/promise/-/promise-8.3.0.tgz#8cb333d1edeb61ef23869fbb8a4ea0279ab60e0a" + integrity sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg== + dependencies: + asap "~2.0.6" + +proxy-addr@~2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== + dependencies: + forwarded "0.2.0" + ipaddr.js "1.9.1" + +psl@^1.1.28: + version "1.9.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" + integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== + +public-encrypt@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + safe-buffer "^5.1.2" + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +punycode@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.0.tgz#5f863edc89b96db09074bad7947bf09056ca4e7d" + integrity sha512-Yxz2kRwT90aPiWEMHVYnEf4+rhwF1tBmmZ4KepCP+Wkium9JxtWnUm1nqGwpiAHr/tnTSeHqr3wb++jgSkXjhA== + +punycode@^2.1.0, punycode@^2.1.1: + version "2.3.0" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" + integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== + +pure-rand@^5.0.1: + version "5.0.5" + resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-5.0.5.tgz#bda2a7f6a1fc0f284d78d78ca5902f26f2ad35cf" + integrity sha512-BwQpbqxSCBJVpamI6ydzcKqyFmnd5msMWUGvzXLm1aXvusbbgkbOto/EUPM00hjveJEaJtdbhUjKSzWRhQVkaw== + +qs@6.11.0: + version "6.11.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" + integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== + dependencies: + side-channel "^1.0.4" + +qs@^6.4.0, qs@^6.7.0: + version "6.11.1" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.1.tgz#6c29dff97f0c0060765911ba65cbc9764186109f" + integrity sha512-0wsrzgTz/kAVIeuxSjnpGC56rzYtr6JT/2BwEvMaPhFIoYa1aGO8LbzuU1R0uUYQkLpWBTOj0l/CLAJB64J6nQ== + dependencies: + side-channel "^1.0.4" + +qs@~6.5.2: + version "6.5.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" + integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== + +query-string@^5.0.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" + integrity sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw== + dependencies: + decode-uri-component "^0.2.0" + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + +queue-microtask@^1.2.2, queue-microtask@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +quick-lru@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" + integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== + +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + +range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" + integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + +raw-body@2.5.2, raw-body@^2.4.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" + integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + +read-pkg-up@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" + integrity sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A== + dependencies: + find-up "^1.0.0" + read-pkg "^1.0.0" + +read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + integrity sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ== + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + +readable-stream@^2.2.2: + version "2.3.8" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.6.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@~3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.2.0.tgz#c30c33352b12c96dfb4b895421a49fd5a9593839" + integrity sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ== + dependencies: + picomatch "^2.0.4" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +rechoir@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + integrity sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw== + dependencies: + resolve "^1.1.6" + +recursive-readdir@^2.2.2: + version "2.2.3" + resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.3.tgz#e726f328c0d69153bcabd5c322d3195252379372" + integrity sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA== + dependencies: + minimatch "^3.0.5" + +reduce-flatten@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-2.0.0.tgz#734fd84e65f375d7ca4465c69798c25c9d10ae27" + integrity sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w== + +regenerator-runtime@^0.13.11: + version "0.13.11" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" + integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== + +regexp.prototype.flags@^1.4.3: + version "1.5.0" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz#fe7ce25e7e4cca8db37b6634c8a2c7009199b9cb" + integrity sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + functions-have-names "^1.2.3" + +req-cwd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/req-cwd/-/req-cwd-2.0.0.tgz#d4082b4d44598036640fb73ddea01ed53db49ebc" + integrity sha512-ueoIoLo1OfB6b05COxAA9UpeoscNpYyM+BqYlA7H6LVF4hKGPXQQSSaD2YmvDVJMkk4UDpAHIeU1zG53IqjvlQ== + dependencies: + req-from "^2.0.0" + +req-from@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/req-from/-/req-from-2.0.0.tgz#d74188e47f93796f4aa71df6ee35ae689f3e0e70" + integrity sha512-LzTfEVDVQHBRfjOUMgNBA+V6DWsSnoeKzf42J7l0xa/B4jyPOuuF5MlNSmomLNGemWTnV2TIdjSSLnEn95fOQA== + dependencies: + resolve-from "^3.0.0" + +request-promise-core@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.4.tgz#3eedd4223208d419867b78ce815167d10593a22f" + integrity sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw== + dependencies: + lodash "^4.17.19" + +request-promise-native@^1.0.5: + version "1.0.9" + resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.9.tgz#e407120526a5efdc9a39b28a5679bf47b9d9dc28" + integrity sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g== + dependencies: + request-promise-core "1.1.4" + stealthy-require "^1.1.1" + tough-cookie "^2.3.3" + +request@^2.79.0, request@^2.88.0: + version "2.88.2" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +require-from-string@^1.1.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-1.2.1.tgz#529c9ccef27380adfec9a2f965b649bbee636418" + integrity sha512-H7AkJWMobeskkttHyhTVtS0fxpFLjxhbfMa6Bk3wimP7sdPRGL3EyCg3sAQenFfAe+xQ+oAc85Nmtvq0ROM83Q== + +require-from-string@^2.0.0, require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + integrity sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug== + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +resolve-alpn@^1.0.0, resolve-alpn@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" + integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== + +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + integrity sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw== + +resolve@1.1.x: + version "1.1.7" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" + integrity sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg== + +resolve@1.17.0: + version "1.17.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" + integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== + dependencies: + path-parse "^1.0.6" + +resolve@^1.1.6, resolve@^1.10.0: + version "1.22.2" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" + integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== + dependencies: + is-core-module "^2.11.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +responselike@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" + integrity sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ== + dependencies: + lowercase-keys "^1.0.0" + +responselike@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.1.tgz#9a0bc8fdc252f3fb1cca68b016591059ba1422bc" + integrity sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw== + dependencies: + lowercase-keys "^2.0.0" + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rimraf@^2.2.8: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +ripemd160-min@0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/ripemd160-min/-/ripemd160-min-0.0.6.tgz#a904b77658114474d02503e819dcc55853b67e62" + integrity sha512-+GcJgQivhs6S9qvLogusiTcS9kQUfgR75whKuy5jIhuiOfQuJ8fjqxV6EGD5duH1Y/FawFUMtMhyeq3Fbnib8A== + +ripemd160@^2.0.0, ripemd160@^2.0.1, ripemd160@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +rlp@^2.2.3, rlp@^2.2.4: + version "2.2.7" + resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.2.7.tgz#33f31c4afac81124ac4b283e2bd4d9720b30beaf" + integrity sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ== + dependencies: + bn.js "^5.2.0" + +run-parallel-limit@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/run-parallel-limit/-/run-parallel-limit-1.1.0.tgz#be80e936f5768623a38a963262d6bef8ff11e7ba" + integrity sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw== + dependencies: + queue-microtask "^1.2.2" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +rustbn.js@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/rustbn.js/-/rustbn.js-0.2.0.tgz#8082cb886e707155fd1cb6f23bd591ab8d55d0ca" + integrity sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA== + +safe-array-concat@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.0.0.tgz#2064223cba3c08d2ee05148eedbc563cd6d84060" + integrity sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.0" + has-symbols "^1.0.3" + isarray "^2.0.5" + +safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-regex-test@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" + integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + is-regex "^1.1.4" + +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sc-istanbul@^0.4.5: + version "0.4.6" + resolved "https://registry.yarnpkg.com/sc-istanbul/-/sc-istanbul-0.4.6.tgz#cf6784355ff2076f92d70d59047d71c13703e839" + integrity sha512-qJFF/8tW/zJsbyfh/iT/ZM5QNHE3CXxtLJbZsL+CzdJLBsPD7SedJZoUA4d8iAcN2IoMp/Dx80shOOd2x96X/g== + dependencies: + abbrev "1.0.x" + async "1.x" + escodegen "1.8.x" + esprima "2.7.x" + glob "^5.0.15" + handlebars "^4.0.1" + js-yaml "3.x" + mkdirp "0.5.x" + nopt "3.x" + once "1.x" + resolve "1.1.x" + supports-color "^3.1.0" + which "^1.1.1" + wordwrap "^1.0.0" + +scrypt-js@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-2.0.4.tgz#32f8c5149f0797672e551c07e230f834b6af5f16" + integrity sha512-4KsaGcPnuhtCZQCxFxN3GVYIhKFPTdLd8PLC552XwbMndtD0cjRFAhDuuydXQ0h08ZfPgzqe6EKHozpuH74iDw== + +scrypt-js@3.0.1, scrypt-js@^3.0.0, scrypt-js@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" + integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== + +secp256k1@^4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.3.tgz#c4559ecd1b8d3c1827ed2d1b94190d69ce267303" + integrity sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA== + dependencies: + elliptic "^6.5.4" + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + +"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.5.0, semver@^5.7.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@7.3.7: + version "7.3.7" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" + integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== + dependencies: + lru-cache "^6.0.0" + +semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@^7.3.4: + version "7.5.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.0.tgz#ed8c5dc8efb6c629c88b23d41dc9bf40c1d96cd0" + integrity sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA== + dependencies: + lru-cache "^6.0.0" + +send@0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" + integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== + dependencies: + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "2.0.0" + mime "1.6.0" + ms "2.1.3" + on-finished "2.4.1" + range-parser "~1.2.1" + statuses "2.0.1" + +sentence-case@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/sentence-case/-/sentence-case-2.1.1.tgz#1f6e2dda39c168bf92d13f86d4a918933f667ed4" + integrity sha512-ENl7cYHaK/Ktwk5OTD+aDbQ3uC8IByu/6Bkg+HDv8Mm+XnBnppVNalcfJTNsp1ibstKh030/JKQQWglDvtKwEQ== + dependencies: + no-case "^2.2.0" + upper-case-first "^1.1.2" + +serialize-javascript@6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" + integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== + dependencies: + randombytes "^2.1.0" + +serve-static@1.15.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" + integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.18.0" + +servify@^0.1.12: + version "0.1.12" + resolved "https://registry.yarnpkg.com/servify/-/servify-0.1.12.tgz#142ab7bee1f1d033b66d0707086085b17c06db95" + integrity sha512-/xE6GvsKKqyo1BAY+KxOWXcLpPsUUyji7Qg3bVD7hh1eRze5bR1uYiuDA/k3Gof1s9BTzQZEJK8sNcNGFIzeWw== + dependencies: + body-parser "^1.16.0" + cors "^2.8.1" + express "^4.14.0" + request "^2.79.0" + xhr "^2.3.3" + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== + +setimmediate@1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.4.tgz#20e81de622d4a02588ce0c8da8973cbcf1d3138f" + integrity sha512-/TjEmXQVEzdod/FFskf3o7oOAsGhHf2j1dZqRFbDzq4F3mvvxflIIi4Hd3bLQE9y/CpwqfSQam5JakI/mi3Pog== + +setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +sha1@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/sha1/-/sha1-1.1.1.tgz#addaa7a93168f393f19eb2b15091618e2700f848" + integrity sha512-dZBS6OrMjtgVkopB1Gmo4RQCDKiZsqcpAQpkV/aaj+FCrCg8r4I4qMkDPQjBgLIxlmu9k4nUbWq6ohXahOneYA== + dependencies: + charenc ">= 0.0.1" + crypt ">= 0.0.1" + +sha3@^2.1.1: + version "2.1.4" + resolved "https://registry.yarnpkg.com/sha3/-/sha3-2.1.4.tgz#000fac0fe7c2feac1f48a25e7a31b52a6492cc8f" + integrity sha512-S8cNxbyb0UGUM2VhRD4Poe5N58gJnJsLJ5vC7FYWGUmGhcsj4++WaIOBFVDxlG0W3To6xBuiRh+i0Qp2oNCOtg== + dependencies: + buffer "6.0.3" + +shelljs@^0.8.3: + version "0.8.5" + resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.5.tgz#de055408d8361bed66c669d2f000538ced8ee20c" + integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow== + dependencies: + glob "^7.0.0" + interpret "^1.0.0" + rechoir "^0.6.2" + +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +simple-concat@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" + integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== + +simple-get@^2.7.0: + version "2.8.2" + resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-2.8.2.tgz#5708fb0919d440657326cd5fe7d2599d07705019" + integrity sha512-Ijd/rV5o+mSBBs4F/x9oDPtTx9Zb6X9brmnXvMW4J7IR15ngi9q5xxqWBKU744jTZiaXtxaPL7uHG6vtN8kUkw== + dependencies: + decompress-response "^3.3.0" + once "^1.3.1" + simple-concat "^1.0.0" + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + +snake-case@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-2.1.0.tgz#41bdb1b73f30ec66a04d4e2cad1b76387d4d6d9f" + integrity sha512-FMR5YoPFwOLuh4rRz92dywJjyKYZNLpMn1R5ujVpIYkbA9p01fq8RMg0FkO4M+Yobt4MjHeLTJVm5xFFBHSV2Q== + dependencies: + no-case "^2.2.0" + +solc@0.7.3: + version "0.7.3" + resolved "https://registry.yarnpkg.com/solc/-/solc-0.7.3.tgz#04646961bd867a744f63d2b4e3c0701ffdc7d78a" + integrity sha512-GAsWNAjGzIDg7VxzP6mPjdurby3IkGCjQcM8GFYZT6RyaoUZKmMU6Y7YwG+tFGhv7dwZ8rmR4iwFDrrD99JwqA== + dependencies: + command-exists "^1.2.8" + commander "3.0.2" + follow-redirects "^1.12.1" + fs-extra "^0.30.0" + js-sha3 "0.8.0" + memorystream "^0.3.1" + require-from-string "^2.0.0" + semver "^5.5.0" + tmp "0.0.33" + +solc@^0.4.20: + version "0.4.26" + resolved "https://registry.yarnpkg.com/solc/-/solc-0.4.26.tgz#5390a62a99f40806b86258c737c1cf653cc35cb5" + integrity sha512-o+c6FpkiHd+HPjmjEVpQgH7fqZ14tJpXhho+/bQXlXbliLIS/xjXb42Vxh+qQY1WCSTMQ0+a5vR9vi0MfhU6mA== + dependencies: + fs-extra "^0.30.0" + memorystream "^0.3.1" + require-from-string "^1.1.0" + semver "^5.3.0" + yargs "^4.7.1" + +solidity-coverage@^0.8.0: + version "0.8.2" + resolved "https://registry.yarnpkg.com/solidity-coverage/-/solidity-coverage-0.8.2.tgz#bc39604ab7ce0a3fa7767b126b44191830c07813" + integrity sha512-cv2bWb7lOXPE9/SSleDO6czkFiMHgP4NXPj+iW9W7iEKLBk7Cj0AGBiNmGX3V1totl9wjPrT0gHmABZKZt65rQ== + dependencies: + "@ethersproject/abi" "^5.0.9" + "@solidity-parser/parser" "^0.14.1" + chalk "^2.4.2" + death "^1.1.0" + detect-port "^1.3.0" + difflib "^0.2.4" + fs-extra "^8.1.0" + ghost-testrpc "^0.0.2" + global-modules "^2.0.0" + globby "^10.0.1" + jsonschema "^1.2.4" + lodash "^4.17.15" + mocha "7.1.2" + node-emoji "^1.10.0" + pify "^4.0.1" + recursive-readdir "^2.2.2" + sc-istanbul "^0.4.5" + semver "^7.3.4" + shelljs "^0.8.3" + web3-utils "^1.3.6" + +source-map-support@^0.5.13: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.6.0, source-map@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d" + integrity sha512-CBdZ2oa/BHhS4xj5DlhjWNHcan57/5YuvfdLf17iVmIpd9KRm+DFLmC6nBNj+6Ua7Kt3TmOjDpQT1aTYOQtoUA== + dependencies: + amdefine ">=0.0.4" + +spdx-correct@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c" + integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + +spdx-expression-parse@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.13" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz#7189a474c46f8d47c7b0da4b987bb45e908bd2d5" + integrity sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w== + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + +sshpk@^1.7.0: + version "1.17.0" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" + integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + +stack-trace@0.0.10: + version "0.0.10" + resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" + integrity sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg== + +stacktrace-parser@^0.1.10: + version "0.1.10" + resolved "https://registry.yarnpkg.com/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz#29fb0cae4e0d0b85155879402857a1639eb6051a" + integrity sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg== + dependencies: + type-fest "^0.7.1" + +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + +stealthy-require@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" + integrity sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g== + +streamsearch@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" + integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== + +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + integrity sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ== + +string-format@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/string-format/-/string-format-2.0.0.tgz#f2df2e7097440d3b65de31b6d40d54c96eaffb9b" + integrity sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA== + +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw== + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +"string-width@^1.0.2 || 2", string-width@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string-width@^3.0.0, string-width@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string.prototype.trim@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz#a68352740859f6893f14ce3ef1bb3037f7a90533" + integrity sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + +string.prototype.trimend@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533" + integrity sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + +string.prototype.trimstart@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz#e90ab66aa8e4007d92ef591bbf3cd422c56bdcf4" + integrity sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow== + dependencies: + ansi-regex "^3.0.0" + +strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + integrity sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g== + dependencies: + is-utf8 "^0.2.0" + +strip-hex-prefix@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz#0c5f155fef1151373377de9dbb588da05500e36f" + integrity sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A== + dependencies: + is-hex-prefixed "1.0.0" + +strip-indent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" + integrity sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA== + +strip-json-comments@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== + +strip-json-comments@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +supports-color@6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.0.0.tgz#76cfe742cf1f41bb9b1c29ad03068c05b4c0e40a" + integrity sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg== + dependencies: + has-flag "^3.0.0" + +supports-color@8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-color@^3.1.0: + version "3.2.3" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" + integrity sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A== + dependencies: + has-flag "^1.0.0" + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +swap-case@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/swap-case/-/swap-case-1.1.2.tgz#c39203a4587385fad3c850a0bd1bcafa081974e3" + integrity sha512-BAmWG6/bx8syfc6qXPprof3Mn5vQgf5dwdUNJhsNqU9WdPt5P+ES/wQ5bxfijy8zwZgZZHslC3iAsxsuQMCzJQ== + dependencies: + lower-case "^1.1.1" + upper-case "^1.1.1" + +swarm-js@^0.1.40: + version "0.1.42" + resolved "https://registry.yarnpkg.com/swarm-js/-/swarm-js-0.1.42.tgz#497995c62df6696f6e22372f457120e43e727979" + integrity sha512-BV7c/dVlA3R6ya1lMlSSNPLYrntt0LUq4YMgy3iwpCIc6rZnS5W2wUoctarZ5pXlpKtxDDf9hNziEkcfrxdhqQ== + dependencies: + bluebird "^3.5.0" + buffer "^5.0.5" + eth-lib "^0.1.26" + fs-extra "^4.0.2" + got "^11.8.5" + mime-types "^2.1.16" + mkdirp-promise "^5.0.1" + mock-fs "^4.1.0" + setimmediate "^1.0.5" + tar "^4.0.2" + xhr-request "^1.0.1" + +sync-request@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/sync-request/-/sync-request-6.1.0.tgz#e96217565b5e50bbffe179868ba75532fb597e68" + integrity sha512-8fjNkrNlNCrVc/av+Jn+xxqfCjYaBoHqCsDz6mt030UMxJGr+GSfCV1dQt2gRtlL63+VPidwDVLr7V2OcTSdRw== + dependencies: + http-response-object "^3.0.1" + sync-rpc "^1.2.1" + then-request "^6.0.0" + +sync-rpc@^1.2.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/sync-rpc/-/sync-rpc-1.3.6.tgz#b2e8b2550a12ccbc71df8644810529deb68665a7" + integrity sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw== + dependencies: + get-port "^3.1.0" + +table-layout@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-1.0.2.tgz#c4038a1853b0136d63365a734b6931cf4fad4a04" + integrity sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A== + dependencies: + array-back "^4.0.1" + deep-extend "~0.6.0" + typical "^5.2.0" + wordwrapjs "^4.0.0" + +table@^6.8.0: + version "6.8.1" + resolved "https://registry.yarnpkg.com/table/-/table-6.8.1.tgz#ea2b71359fe03b017a5fbc296204471158080bdf" + integrity sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA== + dependencies: + ajv "^8.0.1" + lodash.truncate "^4.4.2" + slice-ansi "^4.0.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" + +tar@^4.0.2: + version "4.4.19" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.19.tgz#2e4d7263df26f2b914dee10c825ab132123742f3" + integrity sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA== + dependencies: + chownr "^1.1.4" + fs-minipass "^1.2.7" + minipass "^2.9.0" + minizlib "^1.3.3" + mkdirp "^0.5.5" + safe-buffer "^5.2.1" + yallist "^3.1.1" + +testrpc@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/testrpc/-/testrpc-0.0.1.tgz#83e2195b1f5873aec7be1af8cbe6dcf39edb7aed" + integrity sha512-afH1hO+SQ/VPlmaLUFj2636QMeDvPCeQMc/9RBMW0IfjNe9gFD9Ra3ShqYkB7py0do1ZcCna/9acHyzTJ+GcNA== + +then-request@^6.0.0: + version "6.0.2" + resolved "https://registry.yarnpkg.com/then-request/-/then-request-6.0.2.tgz#ec18dd8b5ca43aaee5cb92f7e4c1630e950d4f0c" + integrity sha512-3ZBiG7JvP3wbDzA9iNY5zJQcHL4jn/0BWtXIkagfz7QgOL/LqjCEOBQuJNZfu0XYnv5JhKh+cDxCPM4ILrqruA== + dependencies: + "@types/concat-stream" "^1.6.0" + "@types/form-data" "0.0.33" + "@types/node" "^8.0.0" + "@types/qs" "^6.2.31" + caseless "~0.12.0" + concat-stream "^1.6.0" + form-data "^2.2.0" + http-basic "^8.1.1" + http-response-object "^3.0.1" + promise "^8.0.0" + qs "^6.4.0" + +timed-out@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" + integrity sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA== + +title-case@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/title-case/-/title-case-2.1.1.tgz#3e127216da58d2bc5becf137ab91dae3a7cd8faa" + integrity sha512-EkJoZ2O3zdCz3zJsYCsxyq2OC5hrxR9mfdd5I+w8h/tmFfeOxJ+vvkxsKxdmN0WtS9zLdHEgfgVOiMVgv+Po4Q== + dependencies: + no-case "^2.2.0" + upper-case "^1.0.3" + +tmp@0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + +to-readable-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" + integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + +tough-cookie@^2.3.3, tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +ts-command-line-args@^2.2.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/ts-command-line-args/-/ts-command-line-args-2.5.0.tgz#7eeed3a6937b2612ea08a0794cf9d43fbbea89c4" + integrity sha512-Ff7Xt04WWCjj/cmPO9eWTJX3qpBZWuPWyQYG1vnxJao+alWWYjwJBc5aYz3h5p5dE08A6AnpkgiCtP/0KXXBYw== + dependencies: + "@morgan-stanley/ts-mocking-bird" "^0.6.2" + chalk "^4.1.0" + command-line-args "^5.1.1" + command-line-usage "^6.1.0" + string-format "^2.0.0" + +ts-essentials@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-7.0.3.tgz#686fd155a02133eedcc5362dc8b5056cde3e5a38" + integrity sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ== + +ts-node@>=8.0.0: + version "10.9.1" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" + integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== + dependencies: + "@cspotcode/source-map-support" "^0.8.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.1" + yn "3.1.1" + +tslib@^1.9.3: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tsort@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/tsort/-/tsort-0.0.1.tgz#e2280f5e817f8bf4275657fd0f9aebd44f5a2786" + integrity sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw== + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== + dependencies: + safe-buffer "^5.0.1" + +tweetnacl-util@^0.15.1: + version "0.15.1" + resolved "https://registry.yarnpkg.com/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz#b80fcdb5c97bcc508be18c44a4be50f022eea00b" + integrity sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw== + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== + +tweetnacl@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" + integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg== + dependencies: + prelude-ls "~1.1.2" + +type-detect@^4.0.0, type-detect@^4.0.5: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +type-fest@^0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.7.1.tgz#8dda65feaf03ed78f0a3f9678f1869147f7c5c48" + integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg== + +type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +type@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" + integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== + +type@^2.7.2: + version "2.7.2" + resolved "https://registry.yarnpkg.com/type/-/type-2.7.2.tgz#2376a15a3a28b1efa0f5350dcf72d24df6ef98d0" + integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw== + +typechain@^8.1.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/typechain/-/typechain-8.1.1.tgz#9c2e8012c2c4c586536fc18402dcd7034c4ff0bd" + integrity sha512-uF/sUvnXTOVF2FHKhQYnxHk4su4JjZR8vr4mA2mBaRwHTbwh0jIlqARz9XJr1tA0l7afJGvEa1dTSi4zt039LQ== + dependencies: + "@types/prettier" "^2.1.1" + debug "^4.3.1" + fs-extra "^7.0.0" + glob "7.1.7" + js-sha3 "^0.8.0" + lodash "^4.17.15" + mkdirp "^1.0.4" + prettier "^2.3.1" + ts-command-line-args "^2.2.0" + ts-essentials "^7.0.1" + +typed-array-length@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" + integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + is-typed-array "^1.1.9" + +typedarray-to-buffer@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== + dependencies: + is-typedarray "^1.0.0" + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== + +typescript@>=4.5.0: + version "5.0.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.0.4.tgz#b217fd20119bd61a94d4011274e0ab369058da3b" + integrity sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw== + +typical@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/typical/-/typical-4.0.0.tgz#cbeaff3b9d7ae1e2bbfaf5a4e6f11eccfde94fc4" + integrity sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw== + +typical@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/typical/-/typical-5.2.0.tgz#4daaac4f2b5315460804f0acf6cb69c52bb93066" + integrity sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg== + +uglify-js@^3.1.4: + version "3.17.4" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.4.tgz#61678cf5fa3f5b7eb789bb345df29afb8257c22c" + integrity sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g== + +ultron@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" + integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og== + +unbox-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== + dependencies: + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" + which-boxed-primitive "^1.0.2" + +undici@^5.14.0: + version "5.22.0" + resolved "https://registry.yarnpkg.com/undici/-/undici-5.22.0.tgz#5e205d82a5aecc003fc4388ccd3d2c6e8674a0ad" + integrity sha512-fR9RXCc+6Dxav4P9VV/sp5w3eFiSdOjJYsbtWfd4s5L5C4ogyuVpdKIVHeW0vV1MloM65/f7W45nR9ZxwVdyiA== + dependencies: + busboy "^1.6.0" + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== + +upper-case-first@^1.1.0, upper-case-first@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/upper-case-first/-/upper-case-first-1.1.2.tgz#5d79bedcff14419518fd2edb0a0507c9b6859115" + integrity sha512-wINKYvI3Db8dtjikdAqoBbZoP6Q+PZUyfMR7pmwHzjC2quzSkUq5DmPrTtPEqHaz8AGtmsB4TqwapMTM1QAQOQ== + dependencies: + upper-case "^1.1.1" + +upper-case@^1.0.3, upper-case@^1.1.0, upper-case@^1.1.1, upper-case@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" + integrity sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA== + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +url-parse-lax@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" + integrity sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ== + dependencies: + prepend-http "^2.0.0" + +url-set-query@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/url-set-query/-/url-set-query-1.0.0.tgz#016e8cfd7c20ee05cafe7795e892bd0702faa339" + integrity sha512-3AChu4NiXquPfeckE5R5cGdiHCMWJx1dwCWOmWIL4KHAziJNOFIYJlpGFeKDvwLPHovZRCxK3cYlwzqI9Vp+Gg== + +utf-8-validate@^5.0.2: + version "5.0.10" + resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.10.tgz#d7d10ea39318171ca982718b6b96a8d2442571a2" + integrity sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ== + dependencies: + node-gyp-build "^4.3.0" + +utf8@3.0.0, utf8@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/utf8/-/utf8-3.0.0.tgz#f052eed1364d696e769ef058b183df88c87f69d1" + integrity sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ== + +util-deprecate@^1.0.1, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +util@^0.12.0, util@^0.12.5: + version "0.12.5" + resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" + integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== + dependencies: + inherits "^2.0.3" + is-arguments "^1.0.4" + is-generator-function "^1.0.7" + is-typed-array "^1.1.3" + which-typed-array "^1.1.2" + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== + +uuid@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.1.tgz#c2a30dedb3e535d72ccf82e343941a50ba8533ac" + integrity sha512-nWg9+Oa3qD2CQzHIP4qKUqwNfzKn8P0LtFhotaCTFchsV7ZfDhAybeip/HZVeMIpZi9JgY1E3nUlwaCmZT1sEg== + +uuid@3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" + integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== + +uuid@^3.3.2: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +uuid@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-7.0.3.tgz#c5c9f2c8cf25dc0a372c4df1441c41f5bd0c680b" + integrity sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg== + +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +uuid@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.0.tgz#592f550650024a38ceb0c562f2f6aa435761efb5" + integrity sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg== + +v8-compile-cache-lib@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" + integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +varint@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/varint/-/varint-5.0.2.tgz#5b47f8a947eb668b848e034dcfa87d0ff8a7f7a4" + integrity sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow== + +vary@^1, vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +web3-bzz@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.7.4.tgz#9419e606e38a9777443d4ce40506ebd796e06075" + integrity sha512-w9zRhyEqTK/yi0LGRHjZMcPCfP24LBjYXI/9YxFw9VqsIZ9/G0CRCnUt12lUx0A56LRAMpF7iQ8eA73aBcO29Q== + dependencies: + "@types/node" "^12.12.6" + got "9.6.0" + swarm-js "^0.1.40" + +web3-bzz@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.8.2.tgz#67ea1c775874056250eece551ded22905ed08784" + integrity sha512-1EEnxjPnFnvNWw3XeeKuTR8PBxYd0+XWzvaLK7OJC/Go9O8llLGxrxICbKV+8cgIE0sDRBxiYx02X+6OhoAQ9w== + dependencies: + "@types/node" "^12.12.6" + got "12.1.0" + swarm-js "^0.1.40" + +web3-core-helpers@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.7.4.tgz#f8f808928560d3e64e0c8d7bdd163aa4766bcf40" + integrity sha512-F8PH11qIkE/LpK4/h1fF/lGYgt4B6doeMi8rukeV/s4ivseZHHslv1L6aaijLX/g/j4PsFmR42byynBI/MIzFg== + dependencies: + web3-eth-iban "1.7.4" + web3-utils "1.7.4" + +web3-core-helpers@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.8.2.tgz#82066560f8085e6c7b93bcc8e88b441289ea9f9f" + integrity sha512-6B1eLlq9JFrfealZBomd1fmlq1o4A09vrCVQSa51ANoib/jllT3atZrRDr0zt1rfI7TSZTZBXdN/aTdeN99DWw== + dependencies: + web3-eth-iban "1.8.2" + web3-utils "1.8.2" + +web3-core-method@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.7.4.tgz#3873c6405e1a0a8a1efc1d7b28de8b7550b00c15" + integrity sha512-56K7pq+8lZRkxJyzf5MHQPI9/VL3IJLoy4L/+q8HRdZJ3CkB1DkXYaXGU2PeylG1GosGiSzgIfu1ljqS7CP9xQ== + dependencies: + "@ethersproject/transactions" "^5.6.2" + web3-core-helpers "1.7.4" + web3-core-promievent "1.7.4" + web3-core-subscriptions "1.7.4" + web3-utils "1.7.4" + +web3-core-method@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.8.2.tgz#ba5ec68084e903f0516415010477618be017eac2" + integrity sha512-1qnr5mw5wVyULzLOrk4B+ryO3gfGjGd/fx8NR+J2xCGLf1e6OSjxT9vbfuQ3fErk/NjSTWWreieYWLMhaogcRA== + dependencies: + "@ethersproject/transactions" "^5.6.2" + web3-core-helpers "1.8.2" + web3-core-promievent "1.8.2" + web3-core-subscriptions "1.8.2" + web3-utils "1.8.2" + +web3-core-promievent@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.7.4.tgz#80a75633fdfe21fbaae2f1e38950edb2f134868c" + integrity sha512-o4uxwXKDldN7ER7VUvDfWsqTx9nQSP1aDssi1XYXeYC2xJbVo0n+z6ryKtmcoWoRdRj7uSpVzal3nEmlr480mA== + dependencies: + eventemitter3 "4.0.4" + +web3-core-promievent@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.8.2.tgz#e670d6b4453632e6ecfd9ad82da44f77ac1585c9" + integrity sha512-nvkJWDVgoOSsolJldN33tKW6bKKRJX3MCPDYMwP5SUFOA/mCzDEoI88N0JFofDTXkh1k7gOqp1pvwi9heuaxGg== + dependencies: + eventemitter3 "4.0.4" + +web3-core-requestmanager@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.7.4.tgz#2dc8a526dab8183dca3fef54658621801b1d0469" + integrity sha512-IuXdAm65BQtPL4aI6LZJJOrKAs0SM5IK2Cqo2/lMNvVMT9Kssq6qOk68Uf7EBDH0rPuINi+ReLP+uH+0g3AnPA== + dependencies: + util "^0.12.0" + web3-core-helpers "1.7.4" + web3-providers-http "1.7.4" + web3-providers-ipc "1.7.4" + web3-providers-ws "1.7.4" + +web3-core-requestmanager@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.8.2.tgz#dda95e83ca4808949612a41e54ecea557f78ef26" + integrity sha512-p1d090RYs5Mu7DK1yyc3GCBVZB/03rBtFhYFoS2EruGzOWs/5Q0grgtpwS/DScdRAm8wB8mYEBhY/RKJWF6B2g== + dependencies: + util "^0.12.5" + web3-core-helpers "1.8.2" + web3-providers-http "1.8.2" + web3-providers-ipc "1.8.2" + web3-providers-ws "1.8.2" + +web3-core-subscriptions@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.7.4.tgz#cfbd3fa71081a8c8c6f1a64577a1a80c5bd9826f" + integrity sha512-VJvKWaXRyxk2nFWumOR94ut9xvjzMrRtS38c4qj8WBIRSsugrZr5lqUwgndtj0qx4F+50JhnU++QEqUEAtKm3g== + dependencies: + eventemitter3 "4.0.4" + web3-core-helpers "1.7.4" + +web3-core-subscriptions@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.8.2.tgz#0c8bd49439d83c6f0a03c70f00b24a915a70a5ed" + integrity sha512-vXQogHDmAIQcKpXvGiMddBUeP9lnKgYF64+yQJhPNE5PnWr1sAibXuIPV7mIPihpFr/n/DORRj6Wh1pUv9zaTw== + dependencies: + eventemitter3 "4.0.4" + web3-core-helpers "1.8.2" + +web3-core@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.7.4.tgz#943fff99134baedafa7c65b4a0bbd424748429ff" + integrity sha512-L0DCPlIh9bgIED37tYbe7bsWrddoXYc897ANGvTJ6MFkSNGiMwDkTLWSgYd9Mf8qu8b4iuPqXZHMwIo4atoh7Q== + dependencies: + "@types/bn.js" "^5.1.0" + "@types/node" "^12.12.6" + bignumber.js "^9.0.0" + web3-core-helpers "1.7.4" + web3-core-method "1.7.4" + web3-core-requestmanager "1.7.4" + web3-utils "1.7.4" + +web3-core@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.8.2.tgz#333e93d7872b1a36efe758ed8b89a7acbdd962c2" + integrity sha512-DJTVEAYcNqxkqruJE+Rxp3CIv0y5AZMwPHQmOkz/cz+MM75SIzMTc0AUdXzGyTS8xMF8h3YWMQGgGEy8SBf1PQ== + dependencies: + "@types/bn.js" "^5.1.0" + "@types/node" "^12.12.6" + bignumber.js "^9.0.0" + web3-core-helpers "1.8.2" + web3-core-method "1.8.2" + web3-core-requestmanager "1.8.2" + web3-utils "1.8.2" + +web3-eth-abi@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.7.4.tgz#3fee967bafd67f06b99ceaddc47ab0970f2a614a" + integrity sha512-eMZr8zgTbqyL9MCTCAvb67RbVyN5ZX7DvA0jbLOqRWCiw+KlJKTGnymKO6jPE8n5yjk4w01e165Qb11hTDwHgg== + dependencies: + "@ethersproject/abi" "^5.6.3" + web3-utils "1.7.4" + +web3-eth-abi@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.8.2.tgz#16e1e9be40e2527404f041a4745111211488f31a" + integrity sha512-Om9g3kaRNjqiNPAgKwGT16y+ZwtBzRe4ZJFGjLiSs6v5I7TPNF+rRMWuKnR6jq0azQZDj6rblvKFMA49/k48Og== + dependencies: + "@ethersproject/abi" "^5.6.3" + web3-utils "1.8.2" + +web3-eth-accounts@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.7.4.tgz#7a24a4dfe947f7e9d1bae678529e591aa146167a" + integrity sha512-Y9vYLRKP7VU7Cgq6wG1jFaG2k3/eIuiTKAG8RAuQnb6Cd9k5BRqTm5uPIiSo0AP/u11jDomZ8j7+WEgkU9+Btw== + dependencies: + "@ethereumjs/common" "^2.5.0" + "@ethereumjs/tx" "^3.3.2" + crypto-browserify "3.12.0" + eth-lib "0.2.8" + ethereumjs-util "^7.0.10" + scrypt-js "^3.0.1" + uuid "3.3.2" + web3-core "1.7.4" + web3-core-helpers "1.7.4" + web3-core-method "1.7.4" + web3-utils "1.7.4" + +web3-eth-accounts@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.8.2.tgz#b894f5d5158fcae429da42de75d96520d0712971" + integrity sha512-c367Ij63VCz9YdyjiHHWLFtN85l6QghgwMQH2B1eM/p9Y5lTlTX7t/Eg/8+f1yoIStXbk2w/PYM2lk+IkbqdLA== + dependencies: + "@ethereumjs/common" "2.5.0" + "@ethereumjs/tx" "3.3.2" + eth-lib "0.2.8" + ethereumjs-util "^7.1.5" + scrypt-js "^3.0.1" + uuid "^9.0.0" + web3-core "1.8.2" + web3-core-helpers "1.8.2" + web3-core-method "1.8.2" + web3-utils "1.8.2" + +web3-eth-contract@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.7.4.tgz#e5761cfb43d453f57be4777b2e5e7e1082078ff7" + integrity sha512-ZgSZMDVI1pE9uMQpK0T0HDT2oewHcfTCv0osEqf5qyn5KrcQDg1GT96/+S0dfqZ4HKj4lzS5O0rFyQiLPQ8LzQ== + dependencies: + "@types/bn.js" "^5.1.0" + web3-core "1.7.4" + web3-core-helpers "1.7.4" + web3-core-method "1.7.4" + web3-core-promievent "1.7.4" + web3-core-subscriptions "1.7.4" + web3-eth-abi "1.7.4" + web3-utils "1.7.4" + +web3-eth-contract@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.8.2.tgz#5388b7130923d2b790c09a420391a81312a867fb" + integrity sha512-ID5A25tHTSBNwOPjiXSVzxruz006ULRIDbzWTYIFTp7NJ7vXu/kynKK2ag/ObuTqBpMbobP8nXcA9b5EDkIdQA== + dependencies: + "@types/bn.js" "^5.1.0" + web3-core "1.8.2" + web3-core-helpers "1.8.2" + web3-core-method "1.8.2" + web3-core-promievent "1.8.2" + web3-core-subscriptions "1.8.2" + web3-eth-abi "1.8.2" + web3-utils "1.8.2" + +web3-eth-ens@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.7.4.tgz#346720305379c0a539e226141a9602f1da7bc0c8" + integrity sha512-Gw5CVU1+bFXP5RVXTCqJOmHn71X2ghNk9VcEH+9PchLr0PrKbHTA3hySpsPco1WJAyK4t8SNQVlNr3+bJ6/WZA== + dependencies: + content-hash "^2.5.2" + eth-ens-namehash "2.0.8" + web3-core "1.7.4" + web3-core-helpers "1.7.4" + web3-core-promievent "1.7.4" + web3-eth-abi "1.7.4" + web3-eth-contract "1.7.4" + web3-utils "1.7.4" + +web3-eth-ens@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.8.2.tgz#0a086ad4d919102e28b9fd3036df246add9df22a" + integrity sha512-PWph7C/CnqdWuu1+SH4U4zdrK4t2HNt0I4XzPYFdv9ugE8EuojselioPQXsVGvjql+Nt3jDLvQvggPqlMbvwRw== + dependencies: + content-hash "^2.5.2" + eth-ens-namehash "2.0.8" + web3-core "1.8.2" + web3-core-helpers "1.8.2" + web3-core-promievent "1.8.2" + web3-eth-abi "1.8.2" + web3-eth-contract "1.8.2" + web3-utils "1.8.2" + +web3-eth-iban@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.7.4.tgz#711fb2547fdf0f988060027331b2b6c430505753" + integrity sha512-XyrsgWlZQMv5gRcjXMsNvAoCRvV5wN7YCfFV5+tHUCqN8g9T/o4XUS20vDWD0k4HNiAcWGFqT1nrls02MGZ08w== + dependencies: + bn.js "^5.2.1" + web3-utils "1.7.4" + +web3-eth-iban@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.8.2.tgz#5cb3022234b13986f086353b53f0379a881feeaf" + integrity sha512-h3vNblDWkWMuYx93Q27TAJz6lhzpP93EiC3+45D6xoz983p6si773vntoQ+H+5aZhwglBtoiBzdh7PSSOnP/xQ== + dependencies: + bn.js "^5.2.1" + web3-utils "1.8.2" + +web3-eth-personal@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.7.4.tgz#22c399794cb828a75703df8bb4b3c1331b471546" + integrity sha512-O10C1Hln5wvLQsDhlhmV58RhXo+GPZ5+W76frSsyIrkJWLtYQTCr5WxHtRC9sMD1idXLqODKKgI2DL+7xeZ0/g== + dependencies: + "@types/node" "^12.12.6" + web3-core "1.7.4" + web3-core-helpers "1.7.4" + web3-core-method "1.7.4" + web3-net "1.7.4" + web3-utils "1.7.4" + +web3-eth-personal@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.8.2.tgz#3526c1ebaa4e7bf3a0a8ec77e34f067cc9a750b2" + integrity sha512-Vg4HfwCr7doiUF/RC+Jz0wT4+cYaXcOWMAW2AHIjHX6Z7Xwa8nrURIeQgeEE62qcEHAzajyAdB1u6bJyTfuCXw== + dependencies: + "@types/node" "^12.12.6" + web3-core "1.8.2" + web3-core-helpers "1.8.2" + web3-core-method "1.8.2" + web3-net "1.8.2" + web3-utils "1.8.2" + +web3-eth@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.7.4.tgz#a7c1d3ccdbba4de4a82df7e3c4db716e4a944bf2" + integrity sha512-JG0tTMv0Ijj039emXNHi07jLb0OiWSA9O24MRSk5vToTQyDNXihdF2oyq85LfHuF690lXZaAXrjhtLNlYqb7Ug== + dependencies: + web3-core "1.7.4" + web3-core-helpers "1.7.4" + web3-core-method "1.7.4" + web3-core-subscriptions "1.7.4" + web3-eth-abi "1.7.4" + web3-eth-accounts "1.7.4" + web3-eth-contract "1.7.4" + web3-eth-ens "1.7.4" + web3-eth-iban "1.7.4" + web3-eth-personal "1.7.4" + web3-net "1.7.4" + web3-utils "1.7.4" + +web3-eth@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.8.2.tgz#8562287ae1803c30eb54dc7d832092e5739ce06a" + integrity sha512-JoTiWWc4F4TInpbvDUGb0WgDYJsFhuIjJlinc5ByjWD88Gvh+GKLsRjjFdbqe5YtwIGT4NymwoC5LQd1K6u/QQ== + dependencies: + web3-core "1.8.2" + web3-core-helpers "1.8.2" + web3-core-method "1.8.2" + web3-core-subscriptions "1.8.2" + web3-eth-abi "1.8.2" + web3-eth-accounts "1.8.2" + web3-eth-contract "1.8.2" + web3-eth-ens "1.8.2" + web3-eth-iban "1.8.2" + web3-eth-personal "1.8.2" + web3-net "1.8.2" + web3-utils "1.8.2" + +web3-net@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.7.4.tgz#3153dfd3423262dd6fbec7aae5467202c4cad431" + integrity sha512-d2Gj+DIARHvwIdmxFQ4PwAAXZVxYCR2lET0cxz4KXbE5Og3DNjJi+MoPkX+WqoUXqimu/EOd4Cd+7gefqVAFDg== + dependencies: + web3-core "1.7.4" + web3-core-method "1.7.4" + web3-utils "1.7.4" + +web3-net@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.8.2.tgz#97e1e0015fabc4cda31017813e98d0b5468dd04f" + integrity sha512-1itkDMGmbgb83Dg9nporFes9/fxsU7smJ3oRXlFkg4ZHn8YJyP1MSQFPJWWwSc+GrcCFt4O5IrUTvEkHqE3xag== + dependencies: + web3-core "1.8.2" + web3-core-method "1.8.2" + web3-utils "1.8.2" + +web3-providers-http@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.7.4.tgz#8209cdcb115db5ccae1f550d1c4e3005e7538d02" + integrity sha512-AU+/S+49rcogUER99TlhW+UBMk0N2DxvN54CJ2pK7alc2TQ7+cprNPLHJu4KREe8ndV0fT6JtWUfOMyTvl+FRA== + dependencies: + web3-core-helpers "1.7.4" + xhr2-cookies "1.1.0" + +web3-providers-http@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.8.2.tgz#fbda3a3bbc8db004af36e91bec35f80273b37885" + integrity sha512-2xY94IIEQd16+b+vIBF4IC1p7GVaz9q4EUFscvMUjtEq4ru4Atdzjs9GP+jmcoo49p70II0UV3bqQcz0TQfVyQ== + dependencies: + abortcontroller-polyfill "^1.7.3" + cross-fetch "^3.1.4" + es6-promise "^4.2.8" + web3-core-helpers "1.8.2" + +web3-providers-ipc@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.7.4.tgz#02e85e99e48f432c9d34cee7d786c3685ec9fcfa" + integrity sha512-jhArOZ235dZy8fS8090t60nTxbd1ap92ibQw5xIrAQ9m7LcZKNfmLAQUVsD+3dTFvadRMi6z1vCO7zRi84gWHw== + dependencies: + oboe "2.1.5" + web3-core-helpers "1.7.4" + +web3-providers-ipc@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.8.2.tgz#e52a7250f40c83b99a2482ec5b4cf2728377ae5c" + integrity sha512-p6fqKVGFg+WiXGHWnB1hu43PbvPkDHTz4RgoEzbXugv5rtv5zfYLqm8Ba6lrJOS5ks9kGKR21a0y3NzE3u7V4w== + dependencies: + oboe "2.1.5" + web3-core-helpers "1.8.2" + +web3-providers-ws@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.7.4.tgz#6e60bcefb456f569a3e766e386d7807a96f90595" + integrity sha512-g72X77nrcHMFU8hRzQJzfgi/072n8dHwRCoTw+WQrGp+XCQ71fsk2qIu3Tp+nlp5BPn8bRudQbPblVm2uT4myQ== + dependencies: + eventemitter3 "4.0.4" + web3-core-helpers "1.7.4" + websocket "^1.0.32" + +web3-providers-ws@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.8.2.tgz#56a2b701387011aca9154ca4bc06ea4b5f27e4ef" + integrity sha512-3s/4K+wHgbiN+Zrp9YjMq2eqAF6QGABw7wFftPdx+m5hWImV27/MoIx57c6HffNRqZXmCHnfWWFCNHHsi7wXnA== + dependencies: + eventemitter3 "4.0.4" + web3-core-helpers "1.8.2" + websocket "^1.0.32" + +web3-shh@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.7.4.tgz#bee91cce2737c529fd347274010b548b6ea060f1" + integrity sha512-mlSZxSYcMkuMCxqhTYnZkUdahZ11h+bBv/8TlkXp/IHpEe4/Gg+KAbmfudakq3EzG/04z70XQmPgWcUPrsEJ+A== + dependencies: + web3-core "1.7.4" + web3-core-method "1.7.4" + web3-core-subscriptions "1.7.4" + web3-net "1.7.4" + +web3-shh@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.8.2.tgz#217a417f0d6e243dd4d441848ffc2bd164cea8a0" + integrity sha512-uZ+3MAoNcaJsXXNCDnizKJ5viBNeHOFYsCbFhV755Uu52FswzTOw6DtE7yK9nYXMtIhiSgi7nwl1RYzP8pystw== + dependencies: + web3-core "1.8.2" + web3-core-method "1.8.2" + web3-core-subscriptions "1.8.2" + web3-net "1.8.2" + +web3-utils@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.7.4.tgz#eb6fa3706b058602747228234453811bbee017f5" + integrity sha512-acBdm6Evd0TEZRnChM/MCvGsMwYKmSh7OaUfNf5OKG0CIeGWD/6gqLOWIwmwSnre/2WrA1nKGId5uW2e5EfluA== + dependencies: + bn.js "^5.2.1" + ethereum-bloom-filters "^1.0.6" + ethereumjs-util "^7.1.0" + ethjs-unit "0.1.6" + number-to-bn "1.7.0" + randombytes "^2.1.0" + utf8 "3.0.0" + +web3-utils@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.8.2.tgz#c32dec5e9b955acbab220eefd7715bc540b75cc9" + integrity sha512-v7j6xhfLQfY7xQDrUP0BKbaNrmZ2/+egbqP9q3KYmOiPpnvAfol+32slgL0WX/5n8VPvKCK5EZ1HGrAVICSToA== + dependencies: + bn.js "^5.2.1" + ethereum-bloom-filters "^1.0.6" + ethereumjs-util "^7.1.0" + ethjs-unit "0.1.6" + number-to-bn "1.7.0" + randombytes "^2.1.0" + utf8 "3.0.0" + +web3-utils@^1.0.0-beta.31, web3-utils@^1.3.4, web3-utils@^1.3.6: + version "1.9.0" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.9.0.tgz#7c5775a47586cefb4ad488831be8f6627be9283d" + integrity sha512-p++69rCNNfu2jM9n5+VD/g26l+qkEOQ1m6cfRQCbH8ZRrtquTmrirJMgTmyOoax5a5XRYOuws14aypCOs51pdQ== + dependencies: + bn.js "^5.2.1" + ethereum-bloom-filters "^1.0.6" + ethereumjs-util "^7.1.0" + ethjs-unit "0.1.6" + number-to-bn "1.7.0" + randombytes "^2.1.0" + utf8 "3.0.0" + +web3@1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/web3/-/web3-1.7.4.tgz#00c9aef8e13ade92fd773d845fff250535828e93" + integrity sha512-iFGK5jO32vnXM/ASaJBaI0+gVR6uHozvYdxkdhaeOCD6HIQ4iIXadbO2atVpE9oc/H8l2MovJ4LtPhG7lIBN8A== + dependencies: + web3-bzz "1.7.4" + web3-core "1.7.4" + web3-eth "1.7.4" + web3-eth-personal "1.7.4" + web3-net "1.7.4" + web3-shh "1.7.4" + web3-utils "1.7.4" + +web3@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3/-/web3-1.8.2.tgz#95a4e5398fd0f01325264bf8e5e8cdc69a7afe86" + integrity sha512-92h0GdEHW9wqDICQQKyG4foZBYi0OQkyg4CRml2F7XBl/NG+fu9o6J19kzfFXzSBoA4DnJXbyRgj/RHZv5LRiw== + dependencies: + web3-bzz "1.8.2" + web3-core "1.8.2" + web3-eth "1.8.2" + web3-eth-personal "1.8.2" + web3-net "1.8.2" + web3-shh "1.8.2" + web3-utils "1.8.2" + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +websocket@^1.0.32: + version "1.0.34" + resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.34.tgz#2bdc2602c08bf2c82253b730655c0ef7dcab3111" + integrity sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ== + dependencies: + bufferutil "^4.0.1" + debug "^2.2.0" + es5-ext "^0.10.50" + typedarray-to-buffer "^3.1.5" + utf-8-validate "^5.0.2" + yaeti "^0.0.6" + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + +which-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" + integrity sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ== + +which-module@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.1.tgz#776b1fe35d90aebe99e8ac15eb24093389a4a409" + integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== + +which-typed-array@^1.1.2, which-typed-array@^1.1.9: + version "1.1.9" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.9.tgz#307cf898025848cf995e795e8423c7f337efbde6" + integrity sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + is-typed-array "^1.1.10" + +which@1.3.1, which@^1.1.1, which@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +wide-align@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" + integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== + dependencies: + string-width "^1.0.2 || 2" + +window-size@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075" + integrity sha512-UD7d8HFA2+PZsbKyaOCEy8gMh1oDtHgJh1LfgjQ4zVXmYjAT/kvz3PueITKuqDiIXQe7yzpPnxX3lNc+AhQMyw== + +word-wrap@~1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +wordwrap@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== + +wordwrapjs@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/wordwrapjs/-/wordwrapjs-4.0.1.tgz#d9790bccfb110a0fc7836b5ebce0937b37a8b98f" + integrity sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA== + dependencies: + reduce-flatten "^2.0.0" + typical "^5.2.0" + +workerpool@6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343" + integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + integrity sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw== + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +wrap-ansi@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" + integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== + dependencies: + ansi-styles "^3.2.0" + string-width "^3.0.0" + strip-ansi "^5.0.0" + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +ws@7.4.6: + version "7.4.6" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" + integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== + +ws@^3.0.0: + version "3.3.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" + integrity sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA== + dependencies: + async-limiter "~1.0.0" + safe-buffer "~5.1.0" + ultron "~1.1.0" + +ws@^7.4.6: + version "7.5.9" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" + integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== + +xhr-request-promise@^0.1.2: + version "0.1.3" + resolved "https://registry.yarnpkg.com/xhr-request-promise/-/xhr-request-promise-0.1.3.tgz#2d5f4b16d8c6c893be97f1a62b0ed4cf3ca5f96c" + integrity sha512-YUBytBsuwgitWtdRzXDDkWAXzhdGB8bYm0sSzMPZT7Z2MBjMSTHFsyCT1yCRATY+XC69DUrQraRAEgcoCRaIPg== + dependencies: + xhr-request "^1.1.0" + +xhr-request@^1.0.1, xhr-request@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/xhr-request/-/xhr-request-1.1.0.tgz#f4a7c1868b9f198723444d82dcae317643f2e2ed" + integrity sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA== + dependencies: + buffer-to-arraybuffer "^0.0.5" + object-assign "^4.1.1" + query-string "^5.0.1" + simple-get "^2.7.0" + timed-out "^4.0.1" + url-set-query "^1.0.0" + xhr "^2.0.4" + +xhr2-cookies@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/xhr2-cookies/-/xhr2-cookies-1.1.0.tgz#7d77449d0999197f155cb73b23df72505ed89d48" + integrity sha512-hjXUA6q+jl/bd8ADHcVfFsSPIf+tyLIjuO9TwJC9WI6JP2zKcS7C+p56I9kCLLsaCiNT035iYvEUUzdEFj/8+g== + dependencies: + cookiejar "^2.1.1" + +xhr@^2.0.4, xhr@^2.3.3: + version "2.6.0" + resolved "https://registry.yarnpkg.com/xhr/-/xhr-2.6.0.tgz#b69d4395e792b4173d6b7df077f0fc5e4e2b249d" + integrity sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA== + dependencies: + global "~4.4.0" + is-function "^1.0.1" + parse-headers "^2.0.0" + xtend "^4.0.0" + +xmlhttprequest@1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc" + integrity sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA== + +xtend@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +y18n@^3.2.1: + version "3.2.2" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.2.tgz#85c901bd6470ce71fc4bb723ad209b70f7f28696" + integrity sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ== + +y18n@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" + integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yaeti@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/yaeti/-/yaeti-0.0.6.tgz#f26f484d72684cf42bedfb76970aa1608fbf9577" + integrity sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug== + +yallist@^3.0.0, yallist@^3.0.2, yallist@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yargs-parser@13.1.2, yargs-parser@^13.1.2: + version "13.1.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" + integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@20.2.4: + version "20.2.4" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" + integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== + +yargs-parser@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-2.4.1.tgz#85568de3cf150ff49fa51825f03a8c880ddcc5c4" + integrity sha512-9pIKIJhnI5tonzG6OnCFlz/yln8xHYcGl+pn3xR0Vzff0vzN1PbNRaelgfgRUwZ3s4i3jvxT9WhmUGL4whnasA== + dependencies: + camelcase "^3.0.0" + lodash.assign "^4.0.6" + +yargs-parser@^20.2.2: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + +yargs-unparser@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-1.6.0.tgz#ef25c2c769ff6bd09e4b0f9d7c605fb27846ea9f" + integrity sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw== + dependencies: + flat "^4.1.0" + lodash "^4.17.15" + yargs "^13.3.0" + +yargs-unparser@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" + integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== + dependencies: + camelcase "^6.0.0" + decamelize "^4.0.0" + flat "^5.0.2" + is-plain-obj "^2.1.0" + +yargs@13.3.2, yargs@^13.3.0: + version "13.3.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" + integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== + dependencies: + cliui "^5.0.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^13.1.2" + +yargs@16.2.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + +yargs@^4.7.1: + version "4.8.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-4.8.1.tgz#c0c42924ca4aaa6b0e6da1739dfb216439f9ddc0" + integrity sha512-LqodLrnIDM3IFT+Hf/5sxBnEGECrfdC1uIbgZeJmESCSo4HoCAaKEus8MylXHAkdacGc0ye+Qa+dpkuom8uVYA== + dependencies: + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + lodash.assign "^4.0.3" + os-locale "^1.4.0" + read-pkg-up "^1.0.1" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^1.0.1" + which-module "^1.0.0" + window-size "^0.2.0" + y18n "^3.2.1" + yargs-parser "^2.4.1" + +yn@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== diff --git a/next.config.mjs b/next.config.mjs new file mode 100644 index 0000000..0d77016 --- /dev/null +++ b/next.config.mjs @@ -0,0 +1,29 @@ +/** + * Run `build` or `dev` with `SKIP_ENV_VALIDATION` to skip env validation. This is especially useful + * for Docker builds. + */ +await import("./src/env.mjs"); + +/** @type {import("next").NextConfig} */ + +import { withAxiom } from "next-axiom"; + +const config = { + reactStrictMode: true, + + /** + * If you have `experimental: { appDir: true }` set, then you must comment the below `i18n` config + * out. + * + * @see https://github.com/vercel/next.js/issues/41980 + */ + i18n: { + locales: ["en"], + defaultLocale: "en", + }, + eslint: { + ignoreDuringBuilds: true, // personal addition + }, + transpilePackages: ["@zerodevapp", "@web3"], // to make zerodev work with nextjs +}; +export default withAxiom(config); diff --git a/package.json b/package.json new file mode 100644 index 0000000..e2d7bc6 --- /dev/null +++ b/package.json @@ -0,0 +1,68 @@ +{ + "name": "zeau", + "version": "0.1.0", + "private": true, + "scripts": { + "build": "next build", + "dev": "next dev", + "postinstall": "prisma generate", + "lint": "next lint", + "start": "next start" + }, + "dependencies": { + "@emotion/react": "^11.10.8", + "@emotion/styled": "^11.10.8", + "@google-cloud/storage": "^6.10.1", + "@hookform/resolvers": "^3.1.0", + "@livekit/components-react": "^1.0.0", + "@mantine/hooks": "^6.0.9", + "@mui/material": "^5.12.2", + "@next-auth/prisma-adapter": "^1.0.5", + "@prisma/client": "^4.11.0", + "@t3-oss/env-nextjs": "^0.2.1", + "@tanstack/react-query": "^4.29.7", + "@tawk.to/tawk-messenger-react": "^2.0.1", + "@trpc/client": "^10.27.1", + "@trpc/next": "^10.27.1", + "@trpc/react-query": "^10.27.1", + "@trpc/server": "^10.27.1", + "@vercel/analytics": "^1.0.1", + "@zerodevapp/sdk": "3.1.24", + "@zerodevapp/wagmi": "^3.1.10", + "axios": "^1.4.0", + "browser-image-compression": "^2.0.2", + "dayjs": "^1.11.7", + "decimal.js": "^10.4.3", + "ethers": "^5.7.2", + "livekit-client": "^1.9.2", + "livekit-server-sdk": "^1.2.1", + "lru-cache": "^9.1.1", + "next": "^13.2.4", + "next-auth": "^4.21.0", + "next-axiom": "^0.17.0", + "react": "18.2.0", + "react-dom": "18.2.0", + "react-dropzone": "^14.2.3", + "react-easy-crop": "^4.7.4", + "react-hook-form": "^7.43.9", + "siwe": "^2.1.4", + "superjson": "1.12.2", + "wagmi": "^0.12.13", + "zod": "^3.21.4" + }, + "devDependencies": { + "@types/eslint": "^8.21.3", + "@types/node": "^18.15.5", + "@types/react": "^18.0.28", + "@types/react-dom": "^18.0.11", + "@typescript-eslint/eslint-plugin": "^5.56.0", + "@typescript-eslint/parser": "^5.56.0", + "eslint": "^8.36.0", + "eslint-config-next": "^13.2.4", + "prisma": "^4.11.0", + "typescript": "^5.0.2" + }, + "ct3aMetadata": { + "initVersion": "7.12.1" + } +} diff --git a/prisma/schema.prisma b/prisma/schema.prisma new file mode 100644 index 0000000..7bba286 --- /dev/null +++ b/prisma/schema.prisma @@ -0,0 +1,98 @@ +// This is your Prisma schema file, +// learn more about it in the docs: https://pris.ly/d/prisma-schema + +generator client { + provider = "prisma-client-js" + previewFeatures = ["extendedWhereUnique"] +} + +datasource db { + provider = "mysql" + // NOTE: When using postgresql, mysql or sqlserver, uncomment the @db.Text annotations in model Account below + // Further reading: + // https://next-auth.js.org/adapters/prisma#create-the-prisma-schema + // https://www.prisma.io/docs/reference/api-reference/prisma-schema-reference#string + url = env("DATABASE_URL") + relationMode = "prisma" +} + +model Sessions { + address String @unique @db.VarChar(42) // address + name String // TODO: set max varchar + title String @db.VarChar(200) + lastPingedAt DateTime @default(now()) +} + +model Profiles { + address String @unique @db.VarChar(42) // address + username String @unique @db.VarChar(15) + + @@index([address]) // best practice to add index to foreign key has pscale doesn't do this +} + +model Follows { + follower String @db.VarChar(42) // address + followee String @db.VarChar(42) // address + + @@unique([follower, followee]) +} + +// datasource db { +// provider = "sqlite" +// // NOTE: When using postgresql, mysql or sqlserver, uncomment the @db.Text annotations in model Account below +// // Further reading: +// // https://next-auth.js.org/adapters/prisma#create-the-prisma-schema +// // https://www.prisma.io/docs/reference/api-reference/prisma-schema-reference#string +// url = env("DATABASE_URL") +// } + +// model Example { +// id String @id @default(cuid()) +// createdAt DateTime @default(now()) +// updatedAt DateTime @updatedAt +// } + +// // Necessary for Next auth +// model Account { +// id String @id @default(cuid()) +// userId String +// type String +// provider String +// providerAccountId String +// refresh_token String? // @db.Text +// access_token String? // @db.Text +// expires_at Int? +// token_type String? +// scope String? +// id_token String? // @db.Text +// session_state String? +// user User @relation(fields: [userId], references: [id], onDelete: Cascade) + +// @@unique([provider, providerAccountId]) +// } + +// model Session { +// id String @id @default(cuid()) +// sessionToken String @unique +// userId String +// expires DateTime +// user User @relation(fields: [userId], references: [id], onDelete: Cascade) +// } + +// model User { +// id String @id @default(cuid()) +// name String? +// email String? @unique +// emailVerified DateTime? +// image String? +// accounts Account[] +// sessions Session[] +// } + +// model VerificationToken { +// identifier String +// token String @unique +// expires DateTime + +// @@unique([identifier, token]) +// } diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000..7125a48 Binary files /dev/null and b/public/favicon.ico differ diff --git a/src/assets/zeau-sm-crop.png b/src/assets/zeau-sm-crop.png new file mode 100644 index 0000000..3789b15 Binary files /dev/null and b/src/assets/zeau-sm-crop.png differ diff --git a/src/assets/zeau-xs-crop.png b/src/assets/zeau-xs-crop.png new file mode 100644 index 0000000..854a6f4 Binary files /dev/null and b/src/assets/zeau-xs-crop.png differ diff --git a/src/components/authentication/ConnectButton.tsx b/src/components/authentication/ConnectButton.tsx new file mode 100644 index 0000000..f297891 --- /dev/null +++ b/src/components/authentication/ConnectButton.tsx @@ -0,0 +1,49 @@ +import { isMobileDevice } from "~/utils/device"; + +import { useAccount } from "wagmi"; +import { useClipboard } from "@mantine/hooks"; +import { useAppStates } from "~/contexts/AppStates"; +import { useAuthentication } from "~/contexts/Authentication"; + +import Button from "@mui/material/Button"; +import Tooltip from "@mui/material/Tooltip"; + +const ConnectButton = () => { + const { address: addressWallet } = useAccount(); + const { setIsConnectOptionsOpened } = useAppStates(); + const { isConnected, isConnecting, username } = useAuthentication(); + const { copy, copied } = useClipboard(); + + return ( + + + + + + ); +}; + +export default ConnectButton; diff --git a/src/components/authentication/ConnectOptions.tsx b/src/components/authentication/ConnectOptions.tsx new file mode 100644 index 0000000..6679cbf --- /dev/null +++ b/src/components/authentication/ConnectOptions.tsx @@ -0,0 +1,147 @@ +import { useAppStates } from "~/contexts/AppStates"; +import { useAuthentication } from "~/contexts/Authentication"; +import useScreenSize from "~/hooks/common/useScreenSize"; + +import Stack from "@mui/material/Stack"; +import Avatar from "@mui/material/Avatar"; +import Link from "@mui/material/Link"; +import Typography from "@mui/material/Typography"; +import ButtonBase from "@mui/material/ButtonBase"; +import ListItemButton from "@mui/material/ListItemButton"; +import ListItemText from "@mui/material/ListItemText"; +import DialogTitle from "@mui/material/DialogTitle"; +import Dialog from "@mui/material/Dialog"; +import Grid from "@mui/material/Unstable_Grid2"; // Grid version 2 +import CircularProgress from "@mui/material/CircularProgress"; + +import { PRIMARY_COLOR } from "~/contexts/Theme"; + +const CONNECTOR_ICONS = { + twitter: "https://cdn3.iconfinder.com/data/icons/inficons/512/twitter.png", + google: + "https://upload.wikimedia.org/wikipedia/commons/thumb/5/53/Google_%22G%22_Logo.svg/2048px-Google_%22G%22_Logo.svg.png", + twitch: + "https://cdn4.iconfinder.com/data/icons/logos-brands-7/512/twitch-1024.png", + discord: + "https://cdn4.iconfinder.com/data/icons/logos-and-brands/512/91_Discord_logo_logos-512.png", + facebook: + "https://cdn2.iconfinder.com/data/icons/social-icons-33/128/Facebook-512.png", +}; + +const ConnectOptions = () => { + const { + // isConnected, + isConnecting, + connectors, + // activeConnector, + // username, + login, + // logout, + } = useAuthentication(); + + const { + isConnectOptionsOpened, + isDeployingAccount, + setIsConnectOptionsOpened, + } = useAppStates(); + + const { isWide } = useScreenSize(); + + return ( + { + if (isConnecting) return; + setIsConnectOptionsOpened(false); + }} + PaperProps={{ sx: { border: 2, borderColor: PRIMARY_COLOR } }} + sx={{ height: "70vh" }} + > + + {isConnecting ? "Connecting..." : "Login"} + + + {isConnecting ? ( + + {isDeployingAccount && ( + + )} + + + ) : ( + + {connectors.map((connector) => ( + + { + await login?.(connector); + }} + > + + {/* */} + + + ))} + + // + // {connectors.map((connector) => ( + // { + // await login?.(connector); + // }} + // > + // + // {/* */} + // + // ))} + // + )} + + By logging in, you agree to the{" "} + + Terms of Service + + + + + ); +}; + +export default ConnectOptions; diff --git a/src/components/balance/Balance.tsx b/src/components/balance/Balance.tsx new file mode 100644 index 0000000..c608d6e --- /dev/null +++ b/src/components/balance/Balance.tsx @@ -0,0 +1,73 @@ +import { useRouter } from "next/router"; +// import { useReducer } from "react"; +import { useAppStates } from "~/contexts/AppStates"; +import { useAuthentication } from "~/contexts/Authentication"; +import useInterval from "~/hooks/common/useInterval"; +import useTokenSymbol from "~/hooks/web3/reads/utils/useTokenSymbol"; +import useFlowAppToUser from "~/hooks/web3/reads/flows/useFlowAppToUser"; +import useFlowUserToUser from "~/hooks/web3/reads/flows/useFlowUserToUser"; +import useHasActiveFlow from "~/hooks/web3/reads/flows/useHasActiveFlow"; +import useUserTotalFunds from "~/hooks/web3/reads/balances/useUserTotalFunds"; + +import Typography from "@mui/material/Typography"; + +import FlowingBalance from "./FlowingBalance"; + +import { ZERO_BIG_NUMBER } from "~/constants/common"; + +const Balance = () => { + const { pathname } = useRouter(); + const isStudio = pathname === "/studio"; + const { isIdle, addressUSDC, addressUSDCx } = useAppStates(); + const { isConnected: isUserConnected } = useAuthentication(); + + const { symbol: symbolUSDC } = useTokenSymbol(addressUSDC); + const { totalFunds: balanceTotal, fetchBroadcasterBalance } = + useUserTotalFunds(); + + const { flowRate: flowRateAppToUser } = useFlowAppToUser(addressUSDCx); + const { flowRateTotal, timestampIncrease } = useFlowUserToUser(addressUSDCx); + const now = Math.floor(Date.now() / 1000); + const activeCumulativeAmount = flowRateTotal.mul(now - timestampIncrease); + + const { hasActiveFlow: isActiveFlow } = useHasActiveFlow(addressUSDCx); + + const balance = isActiveFlow + ? balanceTotal.sub(activeCumulativeAmount) + : balanceTotal; + const flowRate = flowRateAppToUser.sub( + isActiveFlow ? flowRateTotal : ZERO_BIG_NUMBER + ); + + // eslint-disable-next-line + // const [, forceUpdate] = useReducer((x) => x + 1, 0); + useInterval( + async () => { + await fetchBroadcasterBalance(); + console.log("render balance"); + }, + isUserConnected && isIdle && isStudio && flowRateAppToUser.gt(0) + ? 1_000 * 5 // TODO: set this to a more sustainable value + : null + ); // to make balance when in live studio more responsive + + return ( + + {" "} + {symbolUSDC} + + ); +}; + +export default Balance; +// TODO: test diff --git a/src/components/balance/EtherFormatted.tsx b/src/components/balance/EtherFormatted.tsx new file mode 100644 index 0000000..c5cad28 --- /dev/null +++ b/src/components/balance/EtherFormatted.tsx @@ -0,0 +1,12 @@ +import Decimal from "decimal.js"; +import { type BigNumber, ethers } from "ethers"; + +const EtherFormatted = ({ wei }: { wei: BigNumber }) => { + const etherDecimalPlaces = 6; + + const ether = ethers.utils.formatEther(wei); + + return <>{new Decimal(ether).toDP(etherDecimalPlaces).toFixed()}; +}; + +export default EtherFormatted; diff --git a/src/components/balance/FlowingBalance.tsx b/src/components/balance/FlowingBalance.tsx new file mode 100644 index 0000000..59ee2ea --- /dev/null +++ b/src/components/balance/FlowingBalance.tsx @@ -0,0 +1,76 @@ +import { useEffect, useMemo, useState } from "react"; +import { type BigNumber, ethers } from "ethers"; +import EtherFormatted from "./EtherFormatted"; + +const ANIMATION_MINIMUM_STEP_TIME = 80; + +export interface FlowingBalanceProps { + balance: BigNumber; + balanceTimestamp: number; // Timestamp in Subgraph's UTC. + flowRate: BigNumber; +} + +const FlowingBalance = ({ + balance, + balanceTimestamp, + flowRate, +}: FlowingBalanceProps) => { + const [weiValue, setWeiValue] = useState(balance); + useEffect(() => setWeiValue(balance), [balance]); + + const balanceTimestampMs = useMemo( + () => ethers.BigNumber.from(balanceTimestamp).mul(1000), + [balanceTimestamp] + ); + + useEffect(() => { + // const flowRateBigNumber = ethers.BigNumber.from(flowRate); + if (flowRate.isZero()) { + return; // No need to show animation when flow rate is zero. + } + + const balanceBigNumber = ethers.BigNumber.from(balance); + + let stopAnimation = false; + let lastAnimationTimestamp: DOMHighResTimeStamp = 0; + + const animationStep = (currentAnimationTimestamp: DOMHighResTimeStamp) => { + if (stopAnimation) { + return; + } + + if ( + currentAnimationTimestamp - lastAnimationTimestamp > + ANIMATION_MINIMUM_STEP_TIME + ) { + const currentTimestampBigNumber = ethers.BigNumber.from( + new Date().valueOf() // Milliseconds elapsed since UTC epoch, disregards timezone. + ); + + setWeiValue( + balanceBigNumber.add( + currentTimestampBigNumber + .sub(balanceTimestampMs) + .mul(flowRate) + .div(1000) + ) + ); + + lastAnimationTimestamp = currentAnimationTimestamp; + } + + window.requestAnimationFrame(animationStep); + }; + + window.requestAnimationFrame(animationStep); + + return () => { + stopAnimation = true; + }; + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [balance, balanceTimestamp, flowRate]); + + return ; +}; + +export default FlowingBalance; diff --git a/src/components/chat/Chat.tsx b/src/components/chat/Chat.tsx new file mode 100644 index 0000000..81a286d --- /dev/null +++ b/src/components/chat/Chat.tsx @@ -0,0 +1,280 @@ +import { + RoomEvent, + ConnectionState, + type RemoteParticipant, +} from "livekit-client"; + +import { useRouter } from "next/router"; +import { + useChat, + useConnectionState, + useEnsureRoom, +} from "@livekit/components-react"; +import { useState, useEffect, useRef, useCallback } from "react"; + +import Box from "@mui/material/Box"; +import TextField from "@mui/material/TextField"; +import IconButton from "@mui/material/IconButton"; +import Typography from "@mui/material/Typography"; +import InputAdornment from "@mui/material/InputAdornment"; +import List from "@mui/material/List"; +import ListItem from "@mui/material/ListItem"; + +import SendOutline from "~/components/icons/SendOutline"; + +import { selectColor, stringNumber } from "~/utils/common"; + +import { type ReceivedChatMessage } from "@livekit/components-react"; + +import { ROUTE_STUDIO } from "~/constants/common"; + +const HEIGHT_CHAT_INPUT = 60; + +interface ReceivedChatMessagePlus extends ReceivedChatMessage { + peerName?: string; + isJoined?: boolean; +} + +const Chat = () => { + const { pathname } = useRouter(); + const isStudio = pathname === ROUTE_STUDIO; + const connectionState = useConnectionState(); + const isConnected = connectionState === ConnectionState.Connected; + + const room = useEnsureRoom(); + // const participants = useRemoteParticipants(); + // const participantCount = participants.length + const { send, chatMessages: chatMessages_, isSending } = useChat(); + const chatMessages = chatMessages_ as ReceivedChatMessagePlus[]; + const [message, setMessage] = useState(""); + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + const refMessages = useRef(null); + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + const refMessageInput = useRef(null); + // const [peerCount, {increment, decrement, reset}] = useCounter(0) + + useEffect(() => { + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call + refMessages?.current?.scrollIntoView({ behaviour: "smooth" }); + }, [refMessages, chatMessages]); // ref: https://stackoverflow.com/a/70863895 + + const handleSendMessage = async () => { + if (message.length <= 0) return; + try { + await send?.(message); + setMessage(""); + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call + refMessageInput?.current?.focus(); + } catch (error) { + console.error(error); + } + }; + + const lParticipantConnected = useCallback( + (remoteParticipant: RemoteParticipant) => { + if (remoteParticipant.permissions?.hidden) return; + + const name = remoteParticipant?.name; + chatMessages.push({ + timestamp: 0, + message: "", + peerName: name, + isJoined: true, + }); + + // setChatMessages((oldArray: MESSAGE[]) => [ + // ...oldArray, + // { + // senderName: + // name?.slice(0, 2) === "0x" ? shortenAddress(name as ADDRESS) : name, + // peerStatus: "joined", + // }, + // ]); + + // if (setViewerCount !== null) setViewerCount((prev: number) => prev + 1); + }, + [chatMessages] + ); + const lParticipantDisconnected = useCallback( + (remoteParticipant: RemoteParticipant) => { + if (remoteParticipant.permissions?.hidden) return; + + const name = remoteParticipant?.name; + chatMessages.push({ + timestamp: 0, + message: "", + peerName: name, + isJoined: false, + }); + + // setChatMessages((oldArray: MESSAGE[]) => [ + // ...oldArray, + // { + // senderName: + // name?.slice(0, 2) === "0x" ? shortenAddress(name as ADDRESS) : name, + // peerStatus: "left", + // }, + // ]); + + // if (setViewerCount !== null) setViewerCount((prev: number) => prev - 1); + }, + [chatMessages] + ); + useEffect(() => { + room?.on(RoomEvent.ParticipantConnected, lParticipantConnected); + room?.on(RoomEvent.ParticipantDisconnected, lParticipantDisconnected); + return () => { + room?.off(RoomEvent.ParticipantConnected, lParticipantConnected); + room?.off(RoomEvent.ParticipantDisconnected, lParticipantDisconnected); + }; + }, [room, lParticipantConnected, lParticipantDisconnected]); + + // console.log(participants); // TODO: test is this the array to get when new users join? + + const [isInit, setIsInit] = useState(false); + useEffect(() => { + const sendInitMessage = async () => { + if (!isStudio || !isConnected || isInit || send === undefined) return; + await send("Livestream starts."); + setIsInit(true); + }; + void sendInitMessage(); + }, [isStudio, isConnected, isInit, send]); + + const isDisableChatInput = + !isConnected || + !refMessageInput?.current || + isSending || + (isStudio && !isInit); + + return ( + + + {chatMessages.map((value, index) => { + const name = value.from?.name ?? "unknown"; + return ( + <> + {value.timestamp === 0 ? ( + + + + {value.peerName} + {" "} + {value.isJoined ? "joined" : "left"} + + + ) : ( + + + + {name} + {" "} + {value.message} + + + )} + + ); + })} +
  • +
    + + + + + + + ), + }} + onChange={(event) => { + const value = event.target.value; + setMessage(value); + // if (value.trim() !== "" || message !== "") { + // setMessage(value); + // } + // if (value !== "\n") { + // setMessage(value); + // } + }} + onKeyDown={async (event) => { + if (event.key === "Enter") { + event.preventDefault(); + await handleSendMessage(); + } + }} + /> + +
    + ); +}; + +export default Chat; diff --git a/src/components/developer/FlowDebugInfo.tsx b/src/components/developer/FlowDebugInfo.tsx new file mode 100644 index 0000000..0e6145e --- /dev/null +++ b/src/components/developer/FlowDebugInfo.tsx @@ -0,0 +1,75 @@ +import { ethers } from "ethers"; + +import { useAccount } from "wagmi"; +import { useAppStates } from "~/contexts/AppStates"; +import useUserBalance from "~/hooks/web3/reads/balances/useUserBalance"; +import useAppBalance from "~/hooks/web3/reads/balances/useAppBalance"; +import useUserDeposit from "~/hooks/web3/reads/balances/useUserDeposit"; +import useUserEffectiveDeposit from "~/hooks/web3/reads/balances/useUserEffectiveDeposit"; +import useNewFlowNonce from "~/hooks/web3/reads/flows/useNewFlowNonce"; +import useFlowData from "~/hooks/web3/reads/flows/useFlowData"; + +import Box from "@mui/material/Box"; + +import { truncateEthAddress } from "~/utils/common"; + +const FlowDebugInfo = ({ + isViewSessionAllowed, +}: { + isViewSessionAllowed: boolean; +}) => { + const { addressUSDC, addressUSDCx } = useAppStates(); + const { address: addressWallet } = useAccount(); + const { appBalance: appUSDCxBalance } = useAppBalance(addressUSDCx); + const { balance: USDCBalance } = useUserBalance(addressUSDC); + const { balance: USDCxBalance } = useUserBalance(addressUSDCx); + + const { userDeposit } = useUserDeposit(addressUSDCx); + const { effectiveDeposit } = useUserEffectiveDeposit(addressUSDCx); + + const { newFlowNonce } = useNewFlowNonce(addressWallet, addressUSDCx); + const { + receiver, + sessionNonce, + timestampIncrease, + timestampDecrease, + taskId, + } = useFlowData(addressUSDCx, newFlowNonce > 0 ? newFlowNonce - 1 : 0); + + return ( + +
    -- debug --
    +
    App Balance USDCx: {ethers.utils.formatEther(appUSDCxBalance)}
    +
    User Deposit USDCx: {ethers.utils.formatEther(userDeposit)}
    +
    + User Deposit Eff USDCx: {ethers.utils.formatEther(effectiveDeposit)} +
    +
    Wal Balance USDCx: {ethers.utils.formatEther(USDCxBalance)}
    +
    Wal Balance USDC: {ethers.utils.formatEther(USDCBalance)}
    + +
    Next Nonce: {newFlowNonce}
    +
    Broadcaster Address: {truncateEthAddress(receiver)}
    +
    Broadcaster Nonce:{sessionNonce}
    +
    Timestamp Increase: {timestampIncrease}
    +
    Timestamp Decrease: {timestampDecrease}
    +
    Task Id: {taskId}
    +
    + {isViewSessionAllowed ? "Allowed" : "NOT Allowed"} to view session +
    +
    {!isViewSessionAllowed && "session not live OR no flow opened"}
    +
    + ); +}; + +export default FlowDebugInfo; diff --git a/src/components/developer/SessionDebugInfo.tsx b/src/components/developer/SessionDebugInfo.tsx new file mode 100644 index 0000000..4a3a2f6 --- /dev/null +++ b/src/components/developer/SessionDebugInfo.tsx @@ -0,0 +1,58 @@ +import { ethers } from "ethers"; + +import { useAccount } from "wagmi"; +import { useAppStates } from "~/contexts/AppStates"; +import useNewSessionNonce from "~/hooks/web3/reads/sessions/useNewSessionNonce"; +import useSessionData from "~/hooks/web3/reads/sessions/useSessionData"; +import useLiveSessionData from "~/hooks/web3/reads/sessions/useLiveSessionData"; + +import Box from "@mui/material/Box"; + +import { truncateEthAddress } from "~/utils/common"; + +const SessionDebugInfo = () => { + const { addressUSDCx } = useAppStates(); + const { address: addressWallet } = useAccount(); + const { newSessionNonce } = useNewSessionNonce(addressWallet, addressUSDCx); + const { flowRateEffective, flowRateTotal, timestampStart, timestampStop } = + useSessionData( + addressWallet, + addressUSDCx, + newSessionNonce > 0 ? newSessionNonce - 1 : 0 + ); + const { timestampLiveStart, superTokensAccepted } = + useLiveSessionData(addressWallet); + + return ( + +
    -- debug --
    +
    Next Nonce: {newSessionNonce}
    +
    Flow Rate Eff: {ethers.utils.formatEther(flowRateEffective)}
    +
    Flow Rate Tot: {ethers.utils.formatEther(flowRateTotal)}
    +
    Timestamp Start: {timestampStart}
    +
    Timestamp Stop: {timestampStop}
    +
    Timestamp Live: {timestampLiveStart}
    +
    ST Acceptable: (address)
    +
    +
      + {superTokensAccepted.map((v) => ( +
    • {truncateEthAddress(v)}
    • + ))} +
    +
    +
    + ); +}; + +export default SessionDebugInfo; diff --git a/src/components/explore/Explore.tsx b/src/components/explore/Explore.tsx new file mode 100644 index 0000000..830fce1 --- /dev/null +++ b/src/components/explore/Explore.tsx @@ -0,0 +1,105 @@ +import { api } from "~/utils/api"; +import dynamic from "next/dynamic"; +import { type Address } from "wagmi"; + +import { useRouter } from "next/router"; +import { useAppStates } from "~/contexts/AppStates"; +import { useTheme } from "~/contexts/Theme"; + +import Stack from "@mui/material/Stack"; +import Grid from "@mui/material/Unstable_Grid2"; // Grid version 2 +import Card from "@mui/material/Card"; +import CardContent from "@mui/material/CardContent"; +import CardActionArea from "@mui/material/CardActionArea"; +import Typography from "@mui/material/Typography"; +import Avatar from "@mui/material/Avatar"; +import Tooltip from "@mui/material/Tooltip"; + +import { getImagePath } from "~/utils/common"; + +const LiveIndicator = dynamic( + () => import("~/components/studio/LiveIndicator") +); + +const Explore = () => { + const { push: navigateTo } = useRouter(); + const { isIdle } = useAppStates(); + const { isDark } = useTheme(); + + const { data: sessions } = api.session.getSessions.useQuery(undefined, { + refetchInterval: isIdle ? 0 : 1_000 * 5, + refetchIntervalInBackground: false, + enabled: true, + }); + + const { mutateAsync: getOtherProfile } = + api.profile.getOtherProfile.useMutation(); + + return ( + + {sessions !== undefined && sessions?.length > 0 && ( + <> + {sessions?.map((session) => ( + + + { + const data = await getOtherProfile({ + addressOther: session.address as Address, + }); + if (data === null) { + await navigateTo(`/${session.address}`); + } else { + await navigateTo(`/${data.username}`); + } + }} + > + + + {/* + {session.name.at(0)} + */} + + + + {session.name} + + + + {session.title} + + + + + + + + + ))} + + )} + + ); +}; + +export default Explore; diff --git a/src/components/icons/ArrowUpOutline.tsx b/src/components/icons/ArrowUpOutline.tsx new file mode 100644 index 0000000..423c0d5 --- /dev/null +++ b/src/components/icons/ArrowUpOutline.tsx @@ -0,0 +1,18 @@ +import SvgIcon from "@mui/material/SvgIcon"; + +const ArrowUpOutline = () => { + return ( + + + + ); +}; + +export default ArrowUpOutline; diff --git a/src/components/icons/ChevronDownOutline.tsx b/src/components/icons/ChevronDownOutline.tsx new file mode 100644 index 0000000..d97c278 --- /dev/null +++ b/src/components/icons/ChevronDownOutline.tsx @@ -0,0 +1,18 @@ +import SvgIcon from "@mui/material/SvgIcon"; + +const ChevronDownOutline = () => { + return ( + + + + ); +}; + +export default ChevronDownOutline; diff --git a/src/components/icons/ChevronForwardOutline.tsx b/src/components/icons/ChevronForwardOutline.tsx new file mode 100644 index 0000000..9faa79c --- /dev/null +++ b/src/components/icons/ChevronForwardOutline.tsx @@ -0,0 +1,18 @@ +import SvgIcon from "@mui/material/SvgIcon"; + +const ChevronForwardOutline = () => { + return ( + + + + ); +}; + +export default ChevronForwardOutline; diff --git a/src/components/icons/CloseCircleOutline.tsx b/src/components/icons/CloseCircleOutline.tsx new file mode 100644 index 0000000..048b9bd --- /dev/null +++ b/src/components/icons/CloseCircleOutline.tsx @@ -0,0 +1,25 @@ +import SvgIcon from "@mui/material/SvgIcon"; + +const CloseCircleOutline = () => { + return ( + + + + + ); +}; + +export default CloseCircleOutline; diff --git a/src/components/icons/CloudUploadOutline.tsx b/src/components/icons/CloudUploadOutline.tsx new file mode 100644 index 0000000..0cf0af6 --- /dev/null +++ b/src/components/icons/CloudUploadOutline.tsx @@ -0,0 +1,26 @@ +import SvgIcon from "@mui/material/SvgIcon"; + +const CloudUploadOutline = () => { + return ( + + + + + ); +}; + +export default CloudUploadOutline; diff --git a/src/components/icons/ContractOutline.tsx b/src/components/icons/ContractOutline.tsx new file mode 100644 index 0000000..8eb0feb --- /dev/null +++ b/src/components/icons/ContractOutline.tsx @@ -0,0 +1,18 @@ +import SvgIcon from "@mui/material/SvgIcon"; + +const ContractOutline = () => { + return ( + + + + ); +}; + +export default ContractOutline; diff --git a/src/components/icons/CopyOutline.tsx b/src/components/icons/CopyOutline.tsx new file mode 100644 index 0000000..ba12421 --- /dev/null +++ b/src/components/icons/CopyOutline.tsx @@ -0,0 +1,30 @@ +import SvgIcon from "@mui/material/SvgIcon"; + +const CopyOutline = () => { + return ( + + + + + ); +}; + +export default CopyOutline; diff --git a/src/components/icons/ExitOutline.tsx b/src/components/icons/ExitOutline.tsx new file mode 100644 index 0000000..be21571 --- /dev/null +++ b/src/components/icons/ExitOutline.tsx @@ -0,0 +1,18 @@ +import SvgIcon from "@mui/material/SvgIcon"; + +const ExitOutline = () => { + return ( + + + + ); +}; + +export default ExitOutline; diff --git a/src/components/icons/ExpandOutline.tsx b/src/components/icons/ExpandOutline.tsx new file mode 100644 index 0000000..7f3113f --- /dev/null +++ b/src/components/icons/ExpandOutline.tsx @@ -0,0 +1,18 @@ +import SvgIcon from "@mui/material/SvgIcon"; + +const ExpandOutline = () => { + return ( + + + + ); +}; + +export default ExpandOutline; diff --git a/src/components/icons/EyeOutline.tsx b/src/components/icons/EyeOutline.tsx new file mode 100644 index 0000000..7ad1243 --- /dev/null +++ b/src/components/icons/EyeOutline.tsx @@ -0,0 +1,27 @@ +import SvgIcon from "@mui/material/SvgIcon"; + +const EyeOutline = () => { + return ( + + + + + ); +}; + +export default EyeOutline; diff --git a/src/components/icons/GlobeOutline.tsx b/src/components/icons/GlobeOutline.tsx new file mode 100644 index 0000000..0441d1b --- /dev/null +++ b/src/components/icons/GlobeOutline.tsx @@ -0,0 +1,39 @@ +import SvgIcon from "@mui/material/SvgIcon"; + +const GlobeOutline = () => { + return ( + + + + + + + ); +}; + +export default GlobeOutline; diff --git a/src/components/icons/HomeOutline.tsx b/src/components/icons/HomeOutline.tsx new file mode 100644 index 0000000..1d7d2d1 --- /dev/null +++ b/src/components/icons/HomeOutline.tsx @@ -0,0 +1,26 @@ +import SvgIcon from "@mui/material/SvgIcon"; + +const HomeOutline = () => { + return ( + + + + + ); +}; + +export default HomeOutline; diff --git a/src/components/icons/LockOutline.tsx b/src/components/icons/LockOutline.tsx new file mode 100644 index 0000000..655bb3e --- /dev/null +++ b/src/components/icons/LockOutline.tsx @@ -0,0 +1,31 @@ +import SvgIcon from "@mui/material/SvgIcon"; + +const LockOutline = () => { + return ( + + + + + ); +}; + +export default LockOutline; diff --git a/src/components/icons/MenuOutline.tsx b/src/components/icons/MenuOutline.tsx new file mode 100644 index 0000000..1ebf5cf --- /dev/null +++ b/src/components/icons/MenuOutline.tsx @@ -0,0 +1,18 @@ +import SvgIcon from "@mui/material/SvgIcon"; + +const MenuOutline = () => { + return ( + + + + ); +}; + +export default MenuOutline; diff --git a/src/components/icons/MicOffOutline.tsx b/src/components/icons/MicOffOutline.tsx new file mode 100644 index 0000000..aa6850a --- /dev/null +++ b/src/components/icons/MicOffOutline.tsx @@ -0,0 +1,20 @@ +import SvgIcon from "@mui/material/SvgIcon"; + +const MicOffOutline = () => { + return ( + + + + + + ); +}; + +export default MicOffOutline; diff --git a/src/components/icons/MicOutline.tsx b/src/components/icons/MicOutline.tsx new file mode 100644 index 0000000..93541de --- /dev/null +++ b/src/components/icons/MicOutline.tsx @@ -0,0 +1,26 @@ +import SvgIcon from "@mui/material/SvgIcon"; + +const MicOutline = () => { + return ( + + + + + ); +}; + +export default MicOutline; diff --git a/src/components/icons/MoonOutline.tsx b/src/components/icons/MoonOutline.tsx new file mode 100644 index 0000000..a62392c --- /dev/null +++ b/src/components/icons/MoonOutline.tsx @@ -0,0 +1,18 @@ +import SvgIcon from "@mui/material/SvgIcon"; + +const MoonOutline = () => { + return ( + + + + ); +}; + +export default MoonOutline; diff --git a/src/components/icons/OptionsOutline.tsx b/src/components/icons/OptionsOutline.tsx new file mode 100644 index 0000000..7265545 --- /dev/null +++ b/src/components/icons/OptionsOutline.tsx @@ -0,0 +1,48 @@ +import SvgIcon from "@mui/material/SvgIcon"; + +const OptionsOutline = () => { + return ( + + + + + + + ); +}; + +export default OptionsOutline; diff --git a/src/components/icons/PersonOutline.tsx b/src/components/icons/PersonOutline.tsx new file mode 100644 index 0000000..ce3b135 --- /dev/null +++ b/src/components/icons/PersonOutline.tsx @@ -0,0 +1,25 @@ +import SvgIcon from "@mui/material/SvgIcon"; + +const PersonOutline = () => { + return ( + + + + + ); +}; + +export default PersonOutline; diff --git a/src/components/icons/RadioButtonOnOutline.tsx b/src/components/icons/RadioButtonOnOutline.tsx new file mode 100644 index 0000000..3852137 --- /dev/null +++ b/src/components/icons/RadioButtonOnOutline.tsx @@ -0,0 +1,18 @@ +import SvgIcon from "@mui/material/SvgIcon"; + +const RadioButtonOnOutline = () => { + return ( + + + + + ); +}; + +export default RadioButtonOnOutline; diff --git a/src/components/icons/SearchOutline.tsx b/src/components/icons/SearchOutline.tsx new file mode 100644 index 0000000..817d1ab --- /dev/null +++ b/src/components/icons/SearchOutline.tsx @@ -0,0 +1,25 @@ +import SvgIcon from "@mui/material/SvgIcon"; + +const SearchOutline = () => { + return ( + + + + + ); +}; + +export default SearchOutline; diff --git a/src/components/icons/SendOutline.tsx b/src/components/icons/SendOutline.tsx new file mode 100644 index 0000000..4e5bd02 --- /dev/null +++ b/src/components/icons/SendOutline.tsx @@ -0,0 +1,18 @@ +import SvgIcon from "@mui/material/SvgIcon"; + +const SendOutline = () => { + return ( + + + + ); +}; + +export default SendOutline; diff --git a/src/components/icons/SunOutline.tsx b/src/components/icons/SunOutline.tsx new file mode 100644 index 0000000..994afcf --- /dev/null +++ b/src/components/icons/SunOutline.tsx @@ -0,0 +1,28 @@ +import SvgIcon from "@mui/material/SvgIcon"; + +const SunOutline = () => { + return ( + + + + + ); +}; + +export default SunOutline; diff --git a/src/components/icons/VideocamOffOutline.tsx b/src/components/icons/VideocamOffOutline.tsx new file mode 100644 index 0000000..0a7ca48 --- /dev/null +++ b/src/components/icons/VideocamOffOutline.tsx @@ -0,0 +1,26 @@ +import SvgIcon from "@mui/material/SvgIcon"; + +const VideocamOffOutline = () => { + return ( + + + + + ); +}; + +export default VideocamOffOutline; diff --git a/src/components/icons/VideocamOutline.tsx b/src/components/icons/VideocamOutline.tsx new file mode 100644 index 0000000..0683fe9 --- /dev/null +++ b/src/components/icons/VideocamOutline.tsx @@ -0,0 +1,25 @@ +import SvgIcon from "@mui/material/SvgIcon"; + +const VideocamOutline = () => { + return ( + + + + + ); +}; + +export default VideocamOutline; diff --git a/src/components/icons/VolumeHighOutline.tsx b/src/components/icons/VolumeHighOutline.tsx new file mode 100644 index 0000000..be940e4 --- /dev/null +++ b/src/components/icons/VolumeHighOutline.tsx @@ -0,0 +1,18 @@ +import SvgIcon from "@mui/material/SvgIcon"; + +const VolumeHighOutline = () => { + return ( + + + + ); +}; + +export default VolumeHighOutline; diff --git a/src/components/icons/VolumeLowOutline.tsx b/src/components/icons/VolumeLowOutline.tsx new file mode 100644 index 0000000..5025832 --- /dev/null +++ b/src/components/icons/VolumeLowOutline.tsx @@ -0,0 +1,18 @@ +import SvgIcon from "@mui/material/SvgIcon"; + +const VolumeLowOutline = () => { + return ( + + + + ); +}; + +export default VolumeLowOutline; diff --git a/src/components/icons/VolumeMediumOutline.tsx b/src/components/icons/VolumeMediumOutline.tsx new file mode 100644 index 0000000..83fe53f --- /dev/null +++ b/src/components/icons/VolumeMediumOutline.tsx @@ -0,0 +1,18 @@ +import SvgIcon from "@mui/material/SvgIcon"; + +const VolumeMediumOutline = () => { + return ( + + + + ); +}; + +export default VolumeMediumOutline; diff --git a/src/components/icons/VolumeOffOutline.tsx b/src/components/icons/VolumeOffOutline.tsx new file mode 100644 index 0000000..184f175 --- /dev/null +++ b/src/components/icons/VolumeOffOutline.tsx @@ -0,0 +1,18 @@ +import SvgIcon from "@mui/material/SvgIcon"; + +const VolumeOffOutline = () => { + return ( + + + + ); +}; + +export default VolumeOffOutline; diff --git a/src/components/icons/Wave1.tsx b/src/components/icons/Wave1.tsx new file mode 100644 index 0000000..30f1b91 --- /dev/null +++ b/src/components/icons/Wave1.tsx @@ -0,0 +1,36 @@ +import SvgIcon from "@mui/material/SvgIcon"; + +const Wave1 = ({ width, color }: { width: number; color: string }) => { + return ( + + + + + + ); +}; + +export default Wave1; diff --git a/src/components/layouts/Header.tsx b/src/components/layouts/Header.tsx new file mode 100644 index 0000000..cff4c13 --- /dev/null +++ b/src/components/layouts/Header.tsx @@ -0,0 +1,110 @@ +import { isMobileDevice } from "~/utils/device"; +import Image from "next/image"; + +import { useRouter } from "next/router"; +import { useAppStates } from "~/contexts/AppStates"; +import { useAuthentication } from "~/contexts/Authentication"; +import useScreenSize from "~/hooks/common/useScreenSize"; + +import Box from "@mui/material/Box"; +import Stack from "@mui/material/Stack"; +import IconButton from "@mui/material/IconButton"; +import LinearProgress from "@mui/material/LinearProgress"; + +import LockOutline from "../icons/LockOutline"; +import MenuOutline from "../icons/MenuOutline"; + +import zeauxs from "~/assets/zeau-xs-crop.png"; + +import Balance from "../balance/Balance"; +import ConnectButton from "../authentication/ConnectButton"; +import ConnectOptions from "../authentication/ConnectOptions"; +import Notifications from "../utils/Notifications"; + +import { WIDTH_LEFT_BAR } from "./LeftBar"; + +import { PRIMARY_COLOR } from "~/contexts/Theme"; +import { ROUTE_HOME } from "~/constants/common"; + +export const HEIGHT_HEADER = 70; + +const Header = () => { + const { isConnected } = useAuthentication(); + const { pathname } = useRouter(); + const isHome = pathname === ROUTE_HOME; + const { + isLeftBarOpened, + isLive, + isProgressBarDisplayed, + setIsLeftBarOpened, + } = useAppStates(); + const { isWide } = useScreenSize(); + + return ( + + + + { + setIsLeftBarOpened((prev) => !prev); + }} + > + {isLeftBarOpened ? ( + + ) : ( + + zeau + + )} + + {isLive && ( + + + + )} + + + + {isConnected && } + + + + + + {isProgressBarDisplayed && } + + + + + ); +}; + +export default Header; diff --git a/src/components/layouts/Hydration.tsx b/src/components/layouts/Hydration.tsx new file mode 100644 index 0000000..c4b6c85 --- /dev/null +++ b/src/components/layouts/Hydration.tsx @@ -0,0 +1,15 @@ +import { useState, useEffect } from "react"; + +// ref: https://github.com/vercel/next.js/discussions/35773#discussioncomment-3941192 +const Hydration = ({ children }: { children: JSX.Element }) => { + const [hydrated, setHydrated] = useState(false); + + useEffect(() => { + if (typeof window !== "undefined") { + setHydrated(true); + } + }, []); + return hydrated ? children : <>; +}; + +export default Hydration; diff --git a/src/components/layouts/LeftBar.tsx b/src/components/layouts/LeftBar.tsx new file mode 100644 index 0000000..26cd4b4 --- /dev/null +++ b/src/components/layouts/LeftBar.tsx @@ -0,0 +1,200 @@ +import { isMobileDevice } from "~/utils/device"; +import Image from "next/image"; + +import { useRouter } from "next/router"; +import { useTheme } from "../../contexts/Theme"; +import { useAuthentication } from "~/contexts/Authentication"; + +import Stack from "@mui/material/Stack"; +import Drawer from "@mui/material/Drawer"; +import IconButton from "@mui/material/IconButton"; +import List from "@mui/material/List"; +import ListItemButton from "@mui/material/ListItemButton"; +import ListItemIcon from "@mui/material/ListItemIcon"; +import ListItemText from "@mui/material/ListItemText"; +import Collapse from "@mui/material/Collapse"; + +import PersonOutline from "../icons/PersonOutline"; +import MoonOutline from "../icons/MoonOutline"; +import SunOutline from "../icons/SunOutline"; +import RadioButtonOnOutline from "../icons/RadioButtonOnOutline"; +import ArrowUpOutline from "../icons/ArrowUpOutline"; +import ExitOutline from "../icons/ExitOutline"; +import ChevronDownOutline from "../icons/ChevronDownOutline"; +import ChevronForwardOutline from "../icons/ChevronForwardOutline"; +import GlobeOutline from "../icons/GlobeOutline"; + +import { HEIGHT_HEADER } from "./Header"; + +// import logo3 from "../../assets/logo3_crop.png"; + +import { useState } from "react"; +import { useAppStates } from "~/contexts/AppStates"; +import useScreenSize from "~/hooks/common/useScreenSize"; + +import zeauxs from "~/assets/zeau-xs-crop.png"; + +import { PRIMARY_COLOR } from "../../contexts/Theme"; +import { + ROUTE_HOME, + ROUTE_EXPLORE, + ROUTE_STUDIO, + ROUTE_PROFILE, + ROUTE_WITHDRAW, + FLOW_POOL_URL, +} from "~/constants/common"; + +export const WIDTH_LEFT_BAR = 260; + +const LeftBar = () => { + const { pathname, push: navigateTo } = useRouter(); + const { isLeftBarOpened, setIsLeftBarOpened } = useAppStates(); + const { isWide } = useScreenSize(); + const { isDark, toggleColorScheme } = useTheme(); + const { logout } = useAuthentication(); + const [isMoreOpened, setIsMoreOpened] = useState(false); + + return ( + { + setIsLeftBarOpened(false); + }} + variant={isWide ? "persistent" : "temporary"} // "temporary" + PaperProps={{ sx: { width: WIDTH_LEFT_BAR } }} + > + + + + { + await navigateTo(ROUTE_HOME); + }} + > + zeau + {/* */} + + + + + + {/* { + await navigateTo(ROUTE_EXPLORE); + // setIsLeftBarOpened(false); + }} + > + {} + + */} + + { + await navigateTo(ROUTE_STUDIO); + // setIsLeftBarOpened(false); + }} + > + {} + + + + { + setIsMoreOpened((prev) => !prev); + }} + > + + {isMoreOpened ? ( + + ) : ( + + )} + + + + + + + { + await navigateTo(ROUTE_PROFILE); + // setIsLeftBarOpened(false); + }} + > + {} + + + + { + window.open(FLOW_POOL_URL, "_blank", "noopener"); + }} + > + {} + + + + {process.env.NODE_ENV === "development" && ( + { + await navigateTo(ROUTE_WITHDRAW); + }} + > + {} + + + )} + + { + await logout?.(); + }} + > + {} + + + + {process.env.NODE_ENV === "development" && ( + { + await navigateTo("/testroom"); + // setIsLeftBarOpened(false); + }} + > + {} + + + )} + + + + + + + + + {isDark ? : } + + + + + ); +}; + +export default LeftBar; + +// get icons first choice: https://ionic.io/ionicons +// get icons second choice: https://jam-icons.com/ diff --git a/src/components/layouts/MainLayout.tsx b/src/components/layouts/MainLayout.tsx new file mode 100644 index 0000000..1ed5f8a --- /dev/null +++ b/src/components/layouts/MainLayout.tsx @@ -0,0 +1,35 @@ +import { type ReactNode } from "react"; + +import Box from "@mui/material/Box"; +import Stack from "@mui/material/Stack"; + +import Header, { HEIGHT_HEADER } from "./Header"; +import LeftBar, { WIDTH_LEFT_BAR } from "./LeftBar"; + +import { useAppStates } from "~/contexts/AppStates"; +import useScreenSize from "~/hooks/common/useScreenSize"; + +const MainLayout = ({ children }: { children: ReactNode }) => { + const { isLeftBarOpened } = useAppStates(); + const { isWide } = useScreenSize(); + return ( + +
    + + + + + {children} + + + + ); +}; + +export default MainLayout; diff --git a/src/components/layouts/MediaLayoutDesktop.tsx b/src/components/layouts/MediaLayoutDesktop.tsx new file mode 100644 index 0000000..13b6f30 --- /dev/null +++ b/src/components/layouts/MediaLayoutDesktop.tsx @@ -0,0 +1,26 @@ +import Box from "@mui/material/Box"; +import Stack from "@mui/material/Stack"; + +import Chat from "../chat/Chat"; + +import { HEIGHT_HEADER } from "./Header"; + +export const HEIGHT_VIDEO_SCREEN = "70vh"; + +const MediaLayoutDesktop = ({ children }: { children: JSX.Element }) => { + return ( + + {children} + + + + + ); +}; + +export default MediaLayoutDesktop; diff --git a/src/components/layouts/MediaLayoutMobile.tsx b/src/components/layouts/MediaLayoutMobile.tsx new file mode 100644 index 0000000..e6119c5 --- /dev/null +++ b/src/components/layouts/MediaLayoutMobile.tsx @@ -0,0 +1,7 @@ +import React from "react"; + +const MediaLayoutMobile = () => { + return
    MediaLayoutMobile
    ; +}; + +export default MediaLayoutMobile; diff --git a/src/components/room/Room.tsx b/src/components/room/Room.tsx new file mode 100644 index 0000000..2424cee --- /dev/null +++ b/src/components/room/Room.tsx @@ -0,0 +1,300 @@ +import { Track, ConnectionState } from "livekit-client"; +import { ethers } from "ethers"; + +import { api } from "~/utils/api"; + +import { + useConnectionState, + useTracks, + AudioTrack, + VideoTrack, +} from "@livekit/components-react"; +import { useState, useCallback } from "react"; +import { useAppStates } from "~/contexts/AppStates"; +import { + useFullscreen, + useDebouncedValue, + useHover, + useEventListener, +} from "@mantine/hooks"; +import { useRoom } from "~/pages/[address]"; +import useScreenSize from "~/hooks/common/useScreenSize"; +import useTokenSymbol from "~/hooks/web3/reads/utils/useTokenSymbol"; + +import Box from "@mui/material/Box"; +import Fade from "@mui/material/Fade"; +import Stack from "@mui/material/Stack"; +import Slider from "@mui/material/Slider"; +import Button from "@mui/material/Button"; +import Divider from "@mui/material/Divider"; +import IconButton from "@mui/material/IconButton"; +import Typography from "@mui/material/Typography"; +import Tooltip from "@mui/material/Tooltip"; +import Chip from "@mui/material/Chip"; + +import VolumeOffOutline from "~/components/icons/VolumeOffOutline"; +import VolumeLowOutline from "~/components/icons/VolumeLowOutline"; +import VolumeMediumOutline from "~/components/icons/VolumeMediumOutline"; +import VolumeHighOutline from "~/components/icons/VolumeHighOutline"; +import ExpandOutline from "~/components/icons/ExpandOutline"; +import ContractOutline from "~/components/icons/ContractOutline"; + +import MediaLayoutDesktop, { + HEIGHT_VIDEO_SCREEN, +} from "../layouts/MediaLayoutDesktop"; + +const Room = () => { + const { + addressBroadcaster, + flowRateTotal, + isSessionNotStarted, + isEnabledSAFlowOpen, + isProcessingSAFlowOpen, + isEnabledFlowClose, + isProcessingFlowClose, + saOpenFlow, + closeFlow, + } = useRoom(); + const { addressUSDC, setIsLive, setIsLeftBarOpened } = useAppStates(); + const { symbol: symbolUSDC } = useTokenSymbol(addressUSDC); + + const { data: session } = api.viewer.getSession.useQuery( + { addressBroadcaster: addressBroadcaster! }, + { + refetchInterval: false, + refetchIntervalInBackground: false, + enabled: addressBroadcaster !== undefined, + } + ); + + const { + ref: refFullscreen, + toggle: toggleFullscreen, + fullscreen: isFullscreen, + } = useFullscreen(); + + const [debounced] = useDebouncedValue(isProcessingFlowClose, 1_000 * 10); + + const flowRateHelper = ( + + Equivalent to: + + {ethers.utils.formatEther(flowRateTotal)} {symbolUSDC}/second + + + {ethers.utils.formatEther(flowRateTotal.mul(60).mul(60))} {symbolUSDC} + /hour + + + ); + + return ( + + + + + {isSessionNotStarted && ( + + + User Not Live + + + )} + + + + {!isSessionNotStarted ? ( + + + {session?.name} + + + + + + + {session?.title} + + ) : ( + + )} + + + + + {isEnabledFlowClose && ( + + + + )} + + + ); +}; + +export default Room; + +const MediaTile = ({ + isFullscreen, + toggleFullscreen, +}: { + isFullscreen: boolean; + toggleFullscreen: () => Promise; +}) => { + const tracks = useTracks( + [ + { source: Track.Source.Camera, withPlaceholder: false }, + { source: Track.Source.Microphone, withPlaceholder: false }, + ], + { + onlySubscribed: true, + } + ); + const trackVideo = tracks[0]; + const trackAudio = tracks[1]; + + const { hovered: isShowControls, ref: refControls } = useHover(); + const [isMobileShowControls, setIsMobileShowControls] = + useState(false); + const showControls = useCallback(() => { + setIsMobileShowControls((prev) => !prev); + }, []); + const refMobileControls = useEventListener("touchend", showControls); + const { isMobile } = useScreenSize(); + const [volume, setVolume] = useState(0); + + // const { + // // className, + // // roomAudioPlaybackAllowedObservable, + // handleStartAudioPlayback, + // } = useMemo(() => setupStartAudio(), []); + // const room = useEnsureRoom(); + // const observable = useMemo( + // () => roomAudioPlaybackAllowedObservable(room), + // [room, roomAudioPlaybackAllowedObservable] + // ); + + return ( + + {trackVideo !== undefined && ( + + )} + {trackAudio !== undefined && ( + + )} + {trackVideo !== undefined && ( + + + + {volume === 0 && } + {volume > 0 && volume < 0.3 && } + {volume >= 0.3 && volume < 0.7 && } + {volume >= 0.7 && volume <= 1 && } + + { + if (typeof newValue !== "number") return; + setVolume(newValue); + + // await handleStartAudioPlayback(room); // ref: https://github.com/livekit/components-js/blob/main/packages/react/src/components/controls/StartAudio.tsx + // ENHANCE: wait for livekit release `useStartAudio` then use that hook + }} + /> + + + {isFullscreen ? : } + + + + )} + + ); +}; diff --git a/src/components/studio/LiveIndicator.tsx b/src/components/studio/LiveIndicator.tsx new file mode 100644 index 0000000..a79af32 --- /dev/null +++ b/src/components/studio/LiveIndicator.tsx @@ -0,0 +1,45 @@ +import Chip from "@mui/material/Chip"; + +const LiveIndicator = () => { + return ( + <> + + + + ); +}; + +export default LiveIndicator; diff --git a/src/components/studio/Setup.tsx b/src/components/studio/Setup.tsx new file mode 100644 index 0000000..adec8cd --- /dev/null +++ b/src/components/studio/Setup.tsx @@ -0,0 +1,307 @@ +import { z } from "zod"; +import NextLink from "next/link"; +import { zodResolver } from "@hookform/resolvers/zod"; +import { ethers } from "ethers"; +import { stringify, parse } from "superjson"; + +import { api } from "~/utils/api"; + +import { useState, useEffect } from "react"; +import { useForm, Controller } from "react-hook-form"; +import { useCounter, useLocalStorage } from "@mantine/hooks"; +import { useAppStates } from "~/contexts/AppStates"; +import { useNotifications } from "~/contexts/Notifications"; +import useTokenSymbol from "~/hooks/web3/reads/utils/useTokenSymbol"; +import { useStudio } from "~/pages/studio"; +import useScreenSize from "~/hooks/common/useScreenSize"; + +import Box from "@mui/material/Box"; +import Link from "@mui/material/Link"; +import Stack from "@mui/material/Stack"; +import Button from "@mui/material/Button"; +import TextField from "@mui/material/TextField"; +import Typography from "@mui/material/Typography"; +import InputAdornment from "@mui/material/InputAdornment"; +import { alpha } from "@mui/material"; + +import { + restrictFormatStringEtherWithCallback, + getFlowRateInSeconds, +} from "~/utils/common"; +import { + MIN_LENGTH_TITLE, + MAX_LENGTH_TITLE, + Rates, + ROUTE_PROFILE, +} from "~/constants/common"; +import { type StudioFormValues } from "~/pages/studio"; + +const ratesObj = { + Second: "per second", + Minute: "per minute", + Hour: "per hour", +} as const; + +const Setup = () => { + const defaultValue = { + flowRate: "", + rate: Rates.enum.Minute, + title: "", + }; + const [studioFormValuesLocal, setStudioFormValuesLocal] = + useLocalStorage({ + key: "studio-form-values-v1", + defaultValue: defaultValue, + serialize: stringify, + deserialize: (str) => (str === undefined ? defaultValue : parse(str)), + }); + + const schema = z.object({ + flowRate: z.string().nonempty("Flow rate is required"), + rate: Rates, + title: z + .string() + .nonempty("Title is required") + .min(MIN_LENGTH_TITLE) + .max(MAX_LENGTH_TITLE), + }); + + const { + control, + handleSubmit, + reset, + formState: { errors }, + getValues, + setValue, + clearErrors, + } = useForm({ + defaultValues: { + flowRate: studioFormValuesLocal.flowRate, + rate: studioFormValuesLocal.rate, + title: studioFormValuesLocal.title, + }, // not work to set init values from local storage, use useEffect below + resolver: zodResolver(schema), + }); + + useEffect(() => { + reset(studioFormValuesLocal); + }, [studioFormValuesLocal, reset]); + + const { + isEnabledSessionStart, + setStudioFormValues, + setSessionStartFlowRate, + setIsPreview, + } = useStudio(); + const { setIsPingInvalidStartSession } = useNotifications(); + const { isWide } = useScreenSize(); + + const initialRateIndex = Rates.options.indexOf("Minute"); + const [count, { increment }] = useCounter(initialRateIndex + 1); + const [rateToggled, setRateToggled] = useState(false); + + const timer = () => setTimeout(() => setRateToggled(false), 500); + const [rateTimeout, setRateTimeout] = + useState>(timer); + + const handleToggleRate = () => { + clearTimeout(rateTimeout); + setRateTimeout(timer); + setRateToggled((prev) => !prev); + }; + + const isRateSecond = getValues("rate") === Rates.enum.Second; + const isRateMinute = getValues("rate") === Rates.enum.Minute; + const isRateHour = getValues("rate") === Rates.enum.Hour; + const flowRate = getValues("flowRate"); + const isValidFlowRate = flowRate.length > 0 && flowRate !== "0"; + const equivalentRate = isValidFlowRate + ? (isRateSecond && flowRate) || + (isRateMinute && + ethers.utils.formatEther( + getFlowRateInSeconds(Rates.enum.Minute, flowRate) + )) || + (isRateHour && + ethers.utils.formatEther( + getFlowRateInSeconds(Rates.enum.Hour, flowRate) + )) || + "" + : ""; + + useEffect(() => { + setSessionStartFlowRate(equivalentRate); + }, [equivalentRate, setSessionStartFlowRate]); // required to set initial value from local storage to form + + const { addressUSDC } = useAppStates(); + const { symbol: symbolUSDC } = useTokenSymbol(addressUSDC); + + const { data: username } = api.profile.getOwnProfile.useQuery(undefined, { + refetchInterval: false, // millisecond + refetchIntervalInBackground: false, + refetchOnMount: true, + refetchOnReconnect: true, + refetchOnWindowFocus: true, + select: (data) => { + if (data === null || data === undefined) return undefined; + return data.username; + }, + }); + const isUsernameRequired = username === undefined; + + return ( + + {isUsernameRequired ? ( + + Username required before going live + + ) : ( +
    { + if (isEnabledSessionStart) { + setStudioFormValues(data); + setIsPreview(true); + setStudioFormValuesLocal(data); + console.log(data); + } else { + setIsPingInvalidStartSession(true); + } + })} + style={{ width: "100%" }} + > + + + Livestream Setup + + + + ( + + restrictFormatStringEtherWithCallback(event, (v) => { + clearErrors("flowRate"); + setSessionStartFlowRate(v); + setValue("flowRate", v); + }) + } + error={!!errors.flowRate} + helperText={errors.flowRate?.message} + InputProps={{ + endAdornment: ( + + + + ), + }} + /> + )} + /> + + + {symbolUSDC} {ratesObj.Second} + + + ), + }} + sx={(theme) => ({ + bgcolor: + isValidFlowRate && rateToggled + ? alpha(theme.palette.success.main, 0.1) + : undefined, + })} + /> + + + ( + + {field.value?.length}/{MAX_LENGTH_TITLE} + + ), + }} + /> + )} + /> + + + +
    + )} +
    + ); +}; + +export default Setup; +// TODO: set flow rate percentage take min/max flow rate +// TODO: video quality selector diff --git a/src/components/studio/Studio.tsx b/src/components/studio/Studio.tsx new file mode 100644 index 0000000..b33bc2c --- /dev/null +++ b/src/components/studio/Studio.tsx @@ -0,0 +1,490 @@ +import dynamic from "next/dynamic"; +import { + Track, + type LocalVideoTrack, + ConnectionState, + VideoPresets, +} from "livekit-client"; +import { ethers } from "ethers"; + +import { + useConnectionState, + useTrackToggle, + useEnsureRoom, + useRemoteParticipants, +} from "@livekit/components-react"; +import { + useState, + useEffect, + useRef, + useCallback, + type MouseEvent, +} from "react"; +import { useAccount } from "wagmi"; +import { useAppStates } from "~/contexts/AppStates"; +import { useStudio } from "~/pages/studio"; +import { useAuthentication } from "~/contexts/Authentication"; +import useScreenSize from "~/hooks/common/useScreenSize"; +import { useHover, useEventListener, useClipboard } from "@mantine/hooks"; +import useTokenSymbol from "~/hooks/web3/reads/utils/useTokenSymbol"; +import useLocalMedia from "~/hooks/common/useLocalMedia"; + +import Box from "@mui/material/Box"; +import Fade from "@mui/material/Fade"; +import Stack from "@mui/material/Stack"; +import Button from "@mui/material/Button"; +import ButtonGroup from "@mui/material/ButtonGroup"; +import Typography from "@mui/material/Typography"; +import Menu from "@mui/material/Menu"; +import MenuItem from "@mui/material/MenuItem"; +import Divider from "@mui/material/Divider"; +import Tooltip from "@mui/material/Tooltip"; +import Chip from "@mui/material/Chip"; + +import VideocamOutline from "~/components/icons/VideocamOutline"; +import VideocamOffOutline from "~/components/icons/VideocamOffOutline"; +import MicOutline from "~/components/icons/MicOutline"; +import MicOffOutline from "~/components/icons/MicOffOutline"; +import ChevronDownOutline from "../icons/ChevronDownOutline"; +import CopyOutline from "../icons/CopyOutline"; + +import MediaLayoutDesktop, { + HEIGHT_VIDEO_SCREEN, +} from "../layouts/MediaLayoutDesktop"; +const ViewerCount = dynamic(() => import("~/components/studio/ViewerCount")); +const LiveIndicator = dynamic( + () => import("~/components/studio/LiveIndicator") +); + +import { getFlowRateInSeconds } from "~/utils/common"; + +const Studio = () => { + const { + isPreview, + isConnectionToggled, + isEnabledSessionStart, + isProcessingSessionStart, + isEnabledSessionStop, + isProcessingSessionStop, + studioFormValues, + isPublished, + setIsPublished, + startSession, + stopSession, + } = useStudio(); + const { isAppUsername, username } = useAuthentication(); + const { address: addressWallet } = useAccount(); + const connectionState = useConnectionState(); + const isConnected = connectionState === ConnectionState.Connected; + // const { cameraTrack, localParticipant } = useLocalParticipant(); + + const { addressUSDC, setIsLeftBarOpened, setIsLive } = useAppStates(); + const { symbol: symbolUSDC } = useTokenSymbol(addressUSDC); + + const [isSessionEndInitiated, setIsSessionEndInitiated] = + useState(false); + + const isStartSessionAllowed = !isConnected; + + const room = useEnsureRoom(); + const participants = useRemoteParticipants(); + const participantCount = participants.length; + + const link = isAppUsername + ? `${window.location.origin}/${username}` + : `${window.location.origin}/${addressWallet!}`; + const { copy, copied } = useClipboard(); + + useEffect(() => { + const dynamicPublisher = async () => { + if (!isConnected) return; + if (participantCount > 0 && !isPublished) { + try { + await room.localParticipant.setCameraEnabled(true); + await room.localParticipant.setMicrophoneEnabled(true); + + setIsPublished(true); + console.warn("dynamic - publishing"); + } catch (error) { + console.warn(error); + } + + // if (localVideoTrack) + // await room.localParticipant.publishTrack(localVideoTrack); + // if (localAudioTrack) + // await room.localParticipant.publishTrack(localAudioTrack); + } else if (participantCount <= 0 && isPublished) { + try { + await room.localParticipant.setCameraEnabled(false); + await room.localParticipant.setMicrophoneEnabled(false); + + setIsPublished(false); + console.warn("dynamic - unpublishing"); + } catch (error) { + console.warn(error); + } + // if (localVideoTrack) + // await room.localParticipant.unpublishTrack(localVideoTrack); + // if (localAudioTrack) + // await room.localParticipant.unpublishTrack(localAudioTrack); + } + }; + void dynamicPublisher(); + }, [isConnected, isPublished, room, participantCount, setIsPublished]); + + return ( + + + + + + + + + + + + + + + + } + label={copied ? "copied!" : link} + color={copied ? "success" : undefined} + onClick={() => { + copy(link); + }} + sx={{ width: 300 }} + /> + + {isSessionEndInitiated && ( + + )} + + + + + {studioFormValues?.title} + {/* TODO: allow edit title */} + + + + ); +}; + +export default Studio; + +const MediaTile = ({ + isPreview, + isConnected, +}: { + isPreview: boolean; + isConnected: boolean; +}) => { + const { videoDeviceId, audioDeviceId, setVideoDeviceId, setAudioDeviceId } = + useStudio(); + const { localVideoTrack, localAudioTrack, videoDevices, audioDevices } = + useLocalMedia({ + isPreview: isPreview, + setVideoDeviceId: setVideoDeviceId, + setAudioDeviceId: setAudioDeviceId, + }); + + // + + const { + toggle: toggleVideo, + enabled: isEnabledVideo, + pending: isTogglingVideo, + } = useTrackToggle({ + source: Track.Source.Camera, + }); + + const { + toggle: toggleAudio, + enabled: isEnabledAudio, + pending: isTogglingAudio, + } = useTrackToggle({ + source: Track.Source.Microphone, + }); + // useEffect(() => { + // const muteLocalMedia = async () => { + // if (isPreview) return; + // if (isEnabledVideo) { + // await localVideoTrack?.unmute(); + // } else { + // await localVideoTrack?.mute(); + // } + // }; + // void muteLocalMedia(); + // }, [isPreview, localVideoTrack, isEnabledVideo]); + + const [videoDeviceEl, setVideoDeviceEl] = useState(null); + const [audioDeviceEl, setAudioDeviceEl] = useState(null); + const isVideoDeviceMenuOpened = Boolean(videoDeviceEl); + const isAudioDeviceMenuOpened = Boolean(audioDeviceEl); + + const { hovered: isShowControls, ref: refControls } = useHover(); + const [isMobileShowControls, setIsMobileShowControls] = + useState(false); + const showControls = useCallback(() => { + setIsMobileShowControls((prev) => !prev); + }, []); + const refMobileControls = useEventListener("touchend", showControls); + const { isMobile } = useScreenSize(); + + return ( + + + {isConnected && ( + + + + )} + + + + + + + { + setVideoDeviceEl(null); + }} + > + {videoDevices.map((v) => ( + { + // if (isConnected) + // await room.switchActiveDevice("videoinput", v.deviceId); // switch for published to remote + await localVideoTrack?.restartTrack({ + deviceId: v.deviceId, + resolution: VideoPresets.h720.resolution, // TODO: make dynamic and set higher bitrate + }); // switch for local + + setVideoDeviceId(v.deviceId); + + setVideoDeviceEl(null); + }} + > + {v.label} + + ))} + + + + + + + { + setAudioDeviceEl(null); + }} + > + {audioDevices.map((v) => ( + { + // await createAudioTrack(v.deviceId, isConnected); + + // if (isConnected) + // await room.switchActiveDevice("audioinput", v.deviceId); // switch for published to remote + await localAudioTrack?.restartTrack({ + deviceId: v.deviceId, + // autoGainControl: true, // question: does this affects virtual audio cable + // echoCancellation: true, // question: does this affects virtual audio cable + // noiseSuppression: true, // question: does this affects virtual audio cable + }); // switch for local + + setAudioDeviceId(v.deviceId); + + setAudioDeviceEl(null); + }} + > + {v.label} + + ))} + + + + + + ); +}; + +const LocalMedia = ({ + localVideoTrack, +}: { + localVideoTrack: LocalVideoTrack | undefined; +}) => { + const videoEl = useRef(null); + useEffect(() => { + if (videoEl.current) localVideoTrack?.attach(videoEl.current); + + return () => { + localVideoTrack?.detach(); + }; + }, [localVideoTrack, videoEl]); + + return ( + <> + {localVideoTrack !== undefined && ( +